diff --git a/.prettierrc.json b/.prettierrc.json index c8bb9a2..992e9ae 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -4,7 +4,7 @@ "files": ["*.ts", "**/*.ts"], "options": { "arrowParens": "always", - "printWidth": 80, + "printWidth": 120, "tabWidth": 4, "useTabs": true, "trailingComma": "es5", diff --git a/dist/index.cjs.js b/dist/index.cjs.js index 220d468..4f42695 100644 --- a/dist/index.cjs.js +++ b/dist/index.cjs.js @@ -1,11 +1,10 @@ "use strict"; +var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); @@ -18,443 +17,150 @@ var __copyProps = (to, from, except, desc) => { } return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// node_modules/viem/_esm/errors/version.js -var version; -var init_version = __esm({ - "node_modules/viem/_esm/errors/version.js"() { - version = "2.24.2"; - } -}); - -// node_modules/viem/_esm/errors/base.js -function walk(err, fn) { - if (fn?.(err)) - return err; - if (err && typeof err === "object" && "cause" in err && err.cause !== void 0) - return walk(err.cause, fn); - return fn ? null : err; -} -var errorConfig, BaseError; -var init_base = __esm({ - "node_modules/viem/_esm/errors/base.js"() { - init_version(); - errorConfig = { - getDocsUrl: ({ docsBaseUrl, docsPath = "", docsSlug }) => docsPath ? `${docsBaseUrl ?? "https://viem.sh"}${docsPath}${docsSlug ? `#${docsSlug}` : ""}` : void 0, - version: `viem@${version}` - }; - BaseError = class _BaseError extends Error { - constructor(shortMessage, args = {}) { - const details = (() => { - if (args.cause instanceof _BaseError) - return args.cause.details; - if (args.cause?.message) - return args.cause.message; - return args.details; - })(); - const docsPath = (() => { - if (args.cause instanceof _BaseError) - return args.cause.docsPath || args.docsPath; - return args.docsPath; - })(); - const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath }); - const message = [ - shortMessage || "An error occurred.", - "", - ...args.metaMessages ? [...args.metaMessages, ""] : [], - ...docsUrl ? [`Docs: ${docsUrl}`] : [], - ...details ? [`Details: ${details}`] : [], - ...errorConfig.version ? [`Version: ${errorConfig.version}`] : [] - ].join("\n"); - super(message, args.cause ? { cause: args.cause } : void 0); - Object.defineProperty(this, "details", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "docsPath", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "metaMessages", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "shortMessage", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "version", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "name", { - enumerable: true, - configurable: true, - writable: true, - value: "BaseError" - }); - this.details = details; - this.docsPath = docsPath; - this.metaMessages = args.metaMessages; - this.name = args.name ?? this.name; - this.shortMessage = shortMessage; - this.version = version; - } - walk(fn) { - return walk(this, fn); - } - }; - } -}); - -// node_modules/viem/_esm/utils/unit/formatUnits.js -function formatUnits(value, decimals) { - let display = value.toString(); - const negative = display.startsWith("-"); - if (negative) - display = display.slice(1); - display = display.padStart(decimals, "0"); - let [integer, fraction] = [ - display.slice(0, display.length - decimals), - display.slice(display.length - decimals) - ]; - fraction = fraction.replace(/(0+)$/, ""); - return `${negative ? "-" : ""}${integer || "0"}${fraction ? `.${fraction}` : ""}`; -} -var init_formatUnits = __esm({ - "node_modules/viem/_esm/utils/unit/formatUnits.js"() { - } -}); - -// node_modules/viem/_esm/constants/abis.js -var universalResolverErrors, universalResolverResolveAbi, universalResolverReverseAbi, erc20Abi; -var init_abis = __esm({ - "node_modules/viem/_esm/constants/abis.js"() { - universalResolverErrors = [ - { - inputs: [], - name: "ResolverNotFound", - type: "error" - }, - { - inputs: [], - name: "ResolverWildcardNotSupported", - type: "error" - }, - { - inputs: [], - name: "ResolverNotContract", - type: "error" - }, - { - inputs: [ - { - name: "returnData", - type: "bytes" - } - ], - name: "ResolverError", - type: "error" - }, - { - inputs: [ - { - components: [ - { - name: "status", - type: "uint16" - }, - { - name: "message", - type: "string" - } - ], - name: "errors", - type: "tuple[]" - } - ], - name: "HttpError", - type: "error" - } - ]; - universalResolverResolveAbi = [ - ...universalResolverErrors, - { - name: "resolve", - type: "function", - stateMutability: "view", - inputs: [ - { name: "name", type: "bytes" }, - { name: "data", type: "bytes" } - ], - outputs: [ - { name: "", type: "bytes" }, - { name: "address", type: "address" } - ] - }, - { - name: "resolve", - type: "function", - stateMutability: "view", - inputs: [ - { name: "name", type: "bytes" }, - { name: "data", type: "bytes" }, - { name: "gateways", type: "string[]" } - ], - outputs: [ - { name: "", type: "bytes" }, - { name: "address", type: "address" } - ] - } - ]; - universalResolverReverseAbi = [ - ...universalResolverErrors, - { - name: "reverse", - type: "function", - stateMutability: "view", - inputs: [{ type: "bytes", name: "reverseName" }], - outputs: [ - { type: "string", name: "resolvedName" }, - { type: "address", name: "resolvedAddress" }, - { type: "address", name: "reverseResolver" }, - { type: "address", name: "resolver" } - ] - }, - { - name: "reverse", - type: "function", - stateMutability: "view", - inputs: [ - { type: "bytes", name: "reverseName" }, - { type: "string[]", name: "gateways" } - ], - outputs: [ - { type: "string", name: "resolvedName" }, - { type: "address", name: "resolvedAddress" }, - { type: "address", name: "reverseResolver" }, - { type: "address", name: "resolver" } - ] - } - ]; - erc20Abi = [ - { - type: "event", - name: "Approval", - inputs: [ - { - indexed: true, - name: "owner", - type: "address" - }, - { - indexed: true, - name: "spender", - type: "address" - }, - { - indexed: false, - name: "value", - type: "uint256" - } - ] - }, - { - type: "event", - name: "Transfer", - inputs: [ - { - indexed: true, - name: "from", - type: "address" - }, - { - indexed: true, - name: "to", - type: "address" - }, - { - indexed: false, - name: "value", - type: "uint256" - } - ] - }, - { - type: "function", - name: "allowance", - stateMutability: "view", - inputs: [ - { - name: "owner", - type: "address" - }, - { - name: "spender", - type: "address" - } - ], - outputs: [ - { - type: "uint256" - } - ] - }, - { - type: "function", - name: "approve", - stateMutability: "nonpayable", - inputs: [ - { - name: "spender", - type: "address" - }, - { - name: "amount", - type: "uint256" - } - ], - outputs: [ - { - type: "bool" - } - ] - }, - { - type: "function", - name: "balanceOf", - stateMutability: "view", - inputs: [ - { - name: "account", - type: "address" - } - ], - outputs: [ - { - type: "uint256" - } - ] - }, - { - type: "function", - name: "decimals", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "uint8" - } - ] - }, - { - type: "function", - name: "name", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "string" - } - ] - }, - { - type: "function", - name: "symbol", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "string" - } - ] - }, - { - type: "function", - name: "totalSupply", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "uint256" - } - ] - }, - { - type: "function", - name: "transfer", - stateMutability: "nonpayable", - inputs: [ - { - name: "recipient", - type: "address" - }, - { - name: "amount", - type: "uint256" - } - ], - outputs: [ - { - type: "bool" - } - ] - }, - { - type: "function", - name: "transferFrom", - stateMutability: "nonpayable", - inputs: [ - { - name: "sender", - type: "address" - }, - { - name: "recipient", - type: "address" - }, - { - name: "amount", - type: "uint256" - } - ], - outputs: [ - { - type: "bool" - } - ] - } - ]; - } -}); - // src/index.ts var index_exports = {}; __export(index_exports, { TokenSender: () => TokenSender, + baseAccountTypePrefixes: () => baseAccountTypePrefixes, + compileContracts: () => compileContracts, + conceroNetworks: () => conceroNetworks, config: () => config, + createEnvAddressGetter: () => createEnvAddressGetter, + createEnvUpdater: () => createEnvUpdater, + createViemAccountGetter: () => createViemAccountGetter, + createViemChain: () => createViemChain, + createWalletGetter: () => createWalletGetter, + defaultTrezorPath: () => defaultTrezorPath, + err: () => err, + ethersSignerCallContract: () => ethersSignerCallContract, + extractProxyAdminAddress: () => extractProxyAdminAddress, + formatGas: () => formatGas, + genericDeploy: () => genericDeploy, + getActualGasData: () => getActualGasData, + getClients: () => getClients, + getEnvVar: () => getEnvVar, + getFallbackClients: () => getFallbackClients, + getGasParameters: () => getGasParameters, getNetworkEnvKey: () => getNetworkEnvKey, getNetworkKey: () => getNetworkKey, - hardhatDeployWrapper: () => hardhatDeployWrapper, - networkTypes: () => networkTypes + getTestClient: () => getTestClient, + getTrezorAddress: () => getTrezorAddress, + getTrezorDeployEnabled: () => getTrezorDeployEnabled, + getViemAccount: () => getViemAccount, + getWallet: () => getWallet, + localhostViemChain: () => localhostViemChain, + log: () => log, + mainnetNetworks: () => mainnetNetworks, + networkTypes: () => networkTypes, + shorten: () => shorten, + testnetNetworks: () => testnetNetworks, + trezorDeployContract: () => trezorDeployContract, + trezorSendTx: () => trezorSendTx, + trezorWriteContract: () => trezorWriteContract, + warn: () => warn }); module.exports = __toCommonJS(index_exports); -// src/constants/config.ts -var config = { - DEFAULT_BLOCK_CONFIRMATIONS: 2 +// src/types/networkTypes.ts +var networkTypes = { + mainnet: "mainnet", + testnet: "testnet", + localhost: "localhost" +}; + +// src/utils/createViemChain.ts +var import_viem = require("viem"); +function createViemChain(chainDefinition) { + return (0, import_viem.defineChain)({ + id: chainDefinition.id, + name: chainDefinition.name, + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: chainDefinition.rpcUrls } + }, + blockExplorers: chainDefinition.blockExplorer ? { + default: { + name: chainDefinition.blockExplorer.name, + url: chainDefinition.blockExplorer.url + } + } : void 0, + testnet: chainDefinition.isTestnet + }); +} + +// src/utils/getEnvVar.ts +var import_process = __toESM(require("process")); + +// src/utils/log.ts +var networkColors = { + ethereum: "\x1B[30m", + // grey + arbitrum: "\x1B[34m", + // blue + polygon: "\x1B[35m", + // magenta + avalanche: "\x1B[31m", + // red + base: "\x1B[36m", + // cyan + ethereumSepolia: "\x1B[30m", + // grey + arbitrumSepolia: "\x1B[34m", + // blue + optimismSepolia: "\x1B[31m", + // red + polygonAmoy: "\x1B[35m", + // magenta + avalancheFuji: "\x1B[31m", + // red + baseSepolia: "\x1B[36m", + // cyan + hardhat: "\x1B[32m", + // green + localhost: "\x1B[32m" + // green }; +var reset = "\x1B[0m"; +function log(message, functionName, networkName) { + const greenFill = "\x1B[32m"; + const network = networkName ? `\x1B[35m[${networkName}]${reset}` : ""; + console.log(`${network}${greenFill}[${functionName}]${reset}`, message); +} +function warn(message, functionName) { + const yellowFill = "\x1B[33m"; + console.log(`${yellowFill}[${functionName}]${reset}`, message); +} +function err(message, functionName, networkName) { + const redFill = "\x1B[31m"; + const network = networkName ? `${networkColors[networkName]}[${networkName}]${reset}` : ""; + console.log( + `${network}${redFill}[${functionName}] ERROR:${reset}`, + message + ); +} +var log_default = log; + +// src/utils/formatting.ts +function shorten(address) { + return `${address.slice(0, 6)}...${address.slice(-4)}`; +} +function formatGas(gasAmountWei) { + return gasAmountWei.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} // src/networks/getNetworkEnvKey.ts function getNetworkEnvKey(networkName) { @@ -482,63 +188,635 @@ function camelCaseToCapsSnakeCase(camelCaseString) { return camelCaseString.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toUpperCase(); } -// src/networks/networkTypes.ts -var networkTypes = { - mainnet: "mainnet", - testnet: "testnet", - localhost: "localhost" +// src/utils/getEnvVar.ts +function getEnvVar(key, defaultValue) { + const value = import_process.default.env[key]; + if (value === void 0 || value === "") { + if (defaultValue !== void 0) return defaultValue; + warn(`Missing env variable: ${key}`, "getEnvVar"); + return ""; + } + return value; +} +function createEnvAddressGetter(config2) { + function getEnvAddress(prefix, networkName) { + const searchKey = networkName ? `${config2.prefixes[prefix]}_${getNetworkEnvKey(networkName)}` : config2.prefixes[prefix]; + const value = getEnvVar(searchKey); + const friendlyName = `${String(prefix)}(${shorten(value)})`; + return [value, friendlyName]; + } + return { getEnvAddress }; +} + +// src/utils/getTrezorDeployEnabled.ts +var getTrezorDeployEnabled = () => getEnvVar("TREZOR_DEPLOY_ENABLED", "false") === "true"; + +// src/utils/createWalletGetter.ts +var baseAccountTypePrefixes = { + proxyDeployer: "PROXY_DEPLOYER", + deployer: "DEPLOYER" }; +function createWalletGetter(config2) { + function getWallet2(chainType, accountType, walletType) { + const prefix = config2.accountTypePrefixes[accountType]; + if (!prefix) { + throw new Error(`Unknown account type: ${String(accountType)}`); + } + const walletKey = walletType === "privateKey" ? "PRIVATE_KEY" : "ADDRESS"; + const envKey = `${chainType.toUpperCase()}_${prefix}_${walletKey}`; + const walletValue = process.env[envKey]; + if (!walletValue) { + warn(`Missing env variable: ${envKey}`, "getWallet"); + } + return walletValue; + } + return { getWallet: getWallet2 }; +} +var { getWallet } = createWalletGetter({ + accountTypePrefixes: baseAccountTypePrefixes +}); + +// src/utils/ethersSignerCallContract.ts +var ethersSignerCallContract = async (hre, contract, abi, functionName, ...functionArgs) => { + const [ethersSigner] = await hre.ethers.getSigners(); + const ethersContract = new hre.ethers.Contract(contract, abi, ethersSigner); + const unsignedTx = await ethersContract[functionName].populateTransaction(...functionArgs); + log( + `Size: ${(unsignedTx.data.length - 2) / 2}, Input data: ${unsignedTx.data}, Address: ${unsignedTx.to}`, + functionName, + hre.network.name + ); + return (await ethersSigner.sendTransaction(unsignedTx)).hash; +}; + +// src/utils/compileContracts.ts +var import_child_process = require("child_process"); +function compileContracts({ quiet = true, force = false }) { + const packageManager = process.env["PACKAGE_MANAGER"] || "yarn"; + const command = `${packageManager} compile`; + const args = []; + if (quiet) args.push("--quiet"); + if (force) args.push("--force"); + (0, import_child_process.execSync)(`${command} ${args.join(" ")}`, { stdio: "inherit" }); +} -// node_modules/viem/_esm/errors/unit.js -init_base(); -var InvalidDecimalNumberError = class extends BaseError { - constructor({ value }) { - super(`Number \`${value}\` is not a valid decimal number.`, { - name: "InvalidDecimalNumberError" +// src/utils/localhostViemChain.ts +var import_viem2 = require("viem"); +var localhostViemChain = (0, import_viem2.defineChain)({ + id: Number(process.env.LOCALHOST_FORK_CHAIN_ID), + name: "localhost", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: [process.env.LOCALHOST_RPC_URL ?? "http://127.0.0.1:8545"] } + }, + testnet: true +}); +var hardhatViemChain = (0, import_viem2.defineChain)({ + id: Number(process.env.HARDHAT_CHAIN_ID), + name: "hardhat", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: [process.env.HARDHAT_RPC_URL ?? "http://127.0.0.1:8545"] } + }, + testnet: true +}); + +// src/utils/extractProxyAdminAddress.ts +var import_ethers = require("ethers"); +function extractProxyAdminAddress(receipt) { + const adminChangedTopic = import_ethers.ethers.id("AdminChanged(address,address)"); + const adminChangedLog = receipt.logs.find((log2) => log2.topics[0] === adminChangedTopic); + if (!adminChangedLog) throw new Error("AdminChanged(address,address) log not found"); + const abiCoder = import_ethers.ethers.AbiCoder.defaultAbiCoder(); + const [, newAdmin] = abiCoder.decode(["address", "address"], adminChangedLog.data); + return newAdmin; +} + +// src/utils/createEnvUpdater.ts +var import_fs = require("fs"); +var import_path = __toESM(require("path")); +function createEnvUpdater(config2) { + function updateEnvVariable(key, newValue, envFileName) { + const filePath = import_path.default.join(config2.basePath, `.env.${envFileName}`); + if (!(0, import_fs.existsSync)(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + const envContents = (0, import_fs.readFileSync)(filePath, "utf8"); + let lines = envContents.split(/\r?\n/); + const keyExists = lines.some((line) => line.startsWith(`${key}=`)); + if (!keyExists) { + log_default( + `Key ${key} not found in .env file. Adding to ${filePath}`, + "updateEnvVariable" + ); + lines.push(`${key}=${newValue}`); + } else { + lines = lines.map((line) => { + const [currentKey] = line.split("="); + if (currentKey === key) { + return `${key}=${newValue}`; + } + return line; + }); + } + (0, import_fs.writeFileSync)(filePath, lines.join("\n")); + process.env[key] = newValue; + } + function updateEnvAddress(prefix, newValue, envFileName, networkPostfix) { + const searchKey = networkPostfix ? `${config2.prefixes[prefix]}_${getNetworkEnvKey(networkPostfix)}` : String(config2.prefixes[prefix]); + updateEnvVariable(searchKey, newValue, envFileName); + } + return { updateEnvVariable, updateEnvAddress }; +} + +// src/utils/getActualGasData.ts +async function getActualGasData(publicClient) { + const block = await publicClient.getBlock(); + const isEIP1559 = !!block.baseFeePerGas; + let gasPrice = 0n; + let maxPriorityFeePerGas = 0n; + try { + if (isEIP1559) { + const { maxFeePerGas } = await publicClient.estimateFeesPerGas(); + gasPrice = maxFeePerGas; + maxPriorityFeePerGas = await publicClient.estimateMaxPriorityFeePerGas(); + } else { + gasPrice = await publicClient.getGasPrice(); + } + } catch (error) { + console.error("Error getting actual gas data:", error); + return { + gasPrice: "0", + maxFeePerGas: "0", + maxPriorityFeePerGas: "0" + }; + } + const gasDataLegacy = { + gasPrice: gasPrice.toString() + }; + const gasDataEIP1559 = { + maxFeePerGas: gasPrice.toString(), + maxPriorityFeePerGas: maxPriorityFeePerGas.toString() + }; + const gasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy; + return gasData; +} + +// src/utils/getViemClients.ts +var import_viem3 = require("viem"); +var import_accounts = require("viem/accounts"); + +// src/constants/conceroNetworks.ts +var import_chains_mainnet = __toESM(require("@concero/concero-networks/output/chains.mainnet.json")); +var import_chains_testnet = __toESM(require("@concero/concero-networks/output/chains.testnet.json")); +var mainnetProxyDeployerPK = getWallet("mainnet", "proxyDeployer", "privateKey"); +var testnetProxyDeployerPK = getWallet("testnet", "proxyDeployer", "privateKey"); +var mainnetDeployerPK = getWallet("mainnet", "deployer", "privateKey"); +var testnetDeployerPK = getWallet("testnet", "deployer", "privateKey"); +var testnetAccounts = [testnetDeployerPK, testnetProxyDeployerPK]; +function createExtendedNetworks(chains, networkType, accounts) { + const validAccounts = accounts.filter((acc) => !!acc); + return Object.fromEntries( + Object.values(chains).map((chain) => { + const chainDefinition = { + id: parseInt(chain.id), + name: chain.name, + rpcUrls: chain.rpcUrls, + isTestnet: chain.isTestnet ?? false, + ...chain.blockExplorers?.[0] && { + blockExplorer: { + name: chain.blockExplorers[0].name, + url: chain.blockExplorers[0].url + } + } + }; + const viemChain = createViemChain(chainDefinition); + return [ + chain.name, + { + name: chain.name, + chainId: parseInt(chain.id), + type: networkType, + url: chain.rpcUrls[0] || "", + rpcUrls: chain.rpcUrls, + saveDeployments: false, + accounts: validAccounts, + chainSelector: BigInt(chain.chainSelector), + confirmations: 1, + viemChain + } + ]; + }) + ); +} +var testnetNetworks = createExtendedNetworks( + import_chains_testnet.default, + networkTypes.testnet, + testnetAccounts +); +var mainnetNetworks = createExtendedNetworks( + import_chains_mainnet.default, + networkTypes.mainnet, + [mainnetDeployerPK, mainnetProxyDeployerPK] +); +var conceroNetworks = { + ...testnetNetworks, + ...mainnetNetworks +}; + +// src/utils/getViemClients.ts +function getClients(viemChain, url, account = (0, import_accounts.privateKeyToAccount)(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`)) { + const publicClient = (0, import_viem3.createPublicClient)({ + transport: (0, import_viem3.http)(url), + chain: viemChain + }); + const walletClient = (0, import_viem3.createWalletClient)({ + transport: (0, import_viem3.http)(url), + chain: viemChain, + account + }); + return { walletClient, publicClient, account }; +} +function getTestClient(account) { + const testClient = (0, import_viem3.createTestClient)({ + chain: localhostViemChain, + mode: "hardhat", + transport: (0, import_viem3.http)(), + account + }).extend(import_viem3.publicActions).extend(import_viem3.walletActions); + return testClient; +} +function getFallbackClients(chain, account) { + if (!account) { + switch (chain.type) { + case "mainnet": + account = (0, import_accounts.privateKeyToAccount)(`0x${process.env.MAINNET_DEPLOYER_PRIVATE_KEY}`); + break; + case "testnet": + account = (0, import_accounts.privateKeyToAccount)(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`, { + nonceManager: import_viem3.nonceManager + }); + break; + case "localhost": + account = (0, import_accounts.privateKeyToAccount)(`0x${process.env.LOCALHOST_DEPLOYER_PRIVATE_KEY}`); + break; + default: + throw new Error(`Unsupported chain type: ${chain.type}`); + } + } + const { viemChain, name } = chain; + if (!conceroNetworks[name].rpcUrls.length) { + throw new Error(`No URLs configured for chain: ${name}`); + } + const transport = (0, import_viem3.fallback)( + conceroNetworks[name].rpcUrls.map((url) => (0, import_viem3.http)(url)), + { + retryCount: 3 + } + ); + const publicClient = (0, import_viem3.createPublicClient)({ transport, chain: viemChain }); + const walletClient = (0, import_viem3.createWalletClient)({ + transport, + chain: viemChain, + account + }); + return { walletClient, publicClient, account }; +} +function getViemAccount(chainType, accountType) { + const privateKey = `0x${getWallet(chainType, accountType, "privateKey")}`; + return (0, import_accounts.privateKeyToAccount)(privateKey, { + nonceManager: import_viem3.nonceManager + }); +} +function createViemAccountGetter(config2) { + function getViemAccount2(chainType, accountType) { + const privateKey = `0x${config2.getWallet(chainType, accountType, "privateKey")}`; + return (0, import_accounts.privateKeyToAccount)(privateKey, { + nonceManager: import_viem3.nonceManager }); } + return { getViemAccount: getViemAccount2 }; +} + +// src/utils/getGasParameters.ts +var NETWORK_MINIMUMS = { + polygon: { + minTipCap: BigInt(3e10), + // 30 gwei + minBaseFee: BigInt(3e10) + // 30 gwei + } + // Add other networks as needed }; +async function getGasParameters(chain, priorityMultiplier = 1, maxFeeMultiplier = 1) { + const { publicClient } = getFallbackClients(chain); + try { + const block = await publicClient.getBlock(); + const baseFee = block.baseFeePerGas ?? BigInt(0); + const networkMinimums = getNetworkMinimums(chain); + const suggestedPriorityFee = await getSuggestedPriorityFee(publicClient, chain); + const calculatedPriorityFee = calculatePriorityFee( + suggestedPriorityFee, + priorityMultiplier + ); + const priorityFee = calculatedPriorityFee > networkMinimums.minTipCap ? calculatedPriorityFee : networkMinimums.minTipCap; + const calculatedMaxFee = calculateMaxFee(baseFee, priorityFee, maxFeeMultiplier); + const minRequiredMaxFee = networkMinimums.minBaseFee + priorityFee; + const maxFeePerGas = calculatedMaxFee > minRequiredMaxFee ? calculatedMaxFee : minRequiredMaxFee; + return { + maxFeePerGas, + maxPriorityFeePerGas: priorityFee + }; + } catch (error) { + const networkMinimums = getNetworkMinimums(chain); + const gasPrice = await publicClient.getGasPrice(); + const priorityFee = networkMinimums.minTipCap; + return { + maxFeePerGas: gasPrice > networkMinimums.minBaseFee + priorityFee ? gasPrice : networkMinimums.minBaseFee + priorityFee, + maxPriorityFeePerGas: priorityFee + }; + } +} +function getNetworkMinimums(chain) { + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + if (isPolygon) { + return NETWORK_MINIMUMS.polygon; + } + return { + minTipCap: BigInt(15e8), + // 1.5 gwei + minBaseFee: BigInt(1e9) + // 1 gwei + }; +} +async function getSuggestedPriorityFee(publicClient, chain) { + try { + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + const blocksToAnalyze = isPolygon ? 5 : 10; + const blocks = await Promise.all( + Array.from( + { length: blocksToAnalyze }, + (_, i) => publicClient.getBlock({ blockNumber: BigInt(-1 - i) }) + ) + ); + const priorityFees = blocks.map((block) => block.baseFeePerGas ?? BigInt(0)).sort((a, b) => a < b ? -1 : 1); + const index = isPolygon ? Math.floor(priorityFees.length * 0.75) : Math.floor(priorityFees.length * 0.5); + return priorityFees[index]; + } catch { + return getNetworkMinimums(chain).minTipCap; + } +} +function calculatePriorityFee(basePriorityFee, multiplier) { + return BigInt(Math.ceil(Number(basePriorityFee) * multiplier)); +} +function calculateMaxFee(baseFee, priorityFee, multiplier) { + return BigInt(Math.ceil(Number(baseFee) * multiplier)) + priorityFee; +} + +// src/constants/config.ts +var config = { + DEFAULT_BLOCK_CONFIRMATIONS: 2 +}; + +// src/trezor/getTrezorAddress.ts +var import_connect3 = __toESM(require("@trezor/connect")); -// node_modules/viem/_esm/utils/unit/parseUnits.js -function parseUnits(value, decimals) { - if (!/^(-?)([0-9]*)\.?([0-9]*)$/.test(value)) - throw new InvalidDecimalNumberError({ value }); - let [integer, fraction = "0"] = value.split("."); - const negative = integer.startsWith("-"); - if (negative) - integer = integer.slice(1); - fraction = fraction.replace(/(0+)$/, ""); - if (decimals === 0) { - if (Math.round(Number(`.${fraction}`)) === 1) - integer = `${BigInt(integer) + 1n}`; - fraction = ""; - } else if (fraction.length > decimals) { - const [left, unit, right] = [ - fraction.slice(0, decimals - 1), - fraction.slice(decimals - 1, decimals), - fraction.slice(decimals) - ]; - const rounded = Math.round(Number(`${unit}.${right}`)); - if (rounded > 9) - fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, "0"); - else - fraction = `${left}${rounded}`; - if (fraction.length > decimals) { - fraction = fraction.slice(1); - integer = `${BigInt(integer) + 1n}`; +// src/trezor/initTrezorOnce.ts +var import_connect = __toESM(require("@trezor/connect")); +var isTrezorInitialized = false; +async function initTrezorOnce() { + if (isTrezorInitialized) return; + await import_connect.default.init({ + manifest: { + email: "nikita@concero.io", + appUrl: "https://concero.io", + appName: "concero" } - fraction = fraction.slice(0, decimals); + }); + isTrezorInitialized = true; +} + +// src/trezor/trezorSendTx.ts +var import_connect2 = __toESM(require("@trezor/connect")); +var import_viem4 = require("viem"); +var defaultTrezorPath = "m/44'/60'/0'/0/0"; +function normalizeHex(hex, name) { + if (!hex.startsWith("0x")) hex = `0x${hex}`; + if (!(0, import_viem4.isHex)(hex)) throw new Error(`${name} must be 0x-prefixed hex`); + return hex; +} +function yParityFromV(v) { + if (v === 0n || v === 1n) return Number(v); + if (v === 27n || v === 28n) return Number(v - 27n); + return Number((v - 35n) % 2n); +} +async function trezorSendTx(viemParams, txParams, trezorPrams = { + path: defaultTrezorPath, + showFromAddressOnTrezor: false, + forceLegacy: false +}) { + await initTrezorOnce(); + const { publicClient } = viemParams; + const { to = null, value = 0n, data = "0x" } = txParams; + const { path: path2, forceLegacy } = trezorPrams; + const chainId = publicClient.chain?.id ?? await publicClient.getChainId(); + const from = await getTrezorAddress(path2); + log(`Deploy from ${from}`, "trezorSendTx"); + const normData = normalizeHex(data, "data"); + const nonce = txParams.nonce ?? await publicClient.getTransactionCount({ + address: from, + blockTag: "pending" + }); + const gas = txParams.gas ?? await publicClient.estimateGas({ + account: from, + to: to ?? void 0, + value, + data: normData === "0x" ? void 0 : normData + }); + let gasPrice = txParams.gasPrice; + let maxFeePerGas = txParams.maxFeePerGas; + let maxPriorityFeePerGas = txParams.maxPriorityFeePerGas; + if (!forceLegacy && gasPrice == null && (maxFeePerGas == null || maxPriorityFeePerGas == null)) { + try { + const fees = await publicClient.estimateFeesPerGas(); + if ("maxFeePerGas" in fees && "maxPriorityFeePerGas" in fees) { + maxFeePerGas = fees.maxFeePerGas; + maxPriorityFeePerGas = fees.maxPriorityFeePerGas; + } else if ("gasPrice" in fees) { + gasPrice = fees.gasPrice; + } + } catch (e) { + log(`EIP-1559 not supported for ${chainId}, using legacy gas price`, "trezorSendTx"); + } + } + const useEip1559 = !forceLegacy && maxFeePerGas != null && maxPriorityFeePerGas != null; + if (!useEip1559 && gasPrice == null) { + gasPrice = await publicClient.getGasPrice(); + } + const txForTrezor = { + to, + value: (0, import_viem4.toHex)(value), + data: normData, + chainId, + nonce: (0, import_viem4.toHex)(nonce), + gasLimit: (0, import_viem4.toHex)(gas) + }; + if (useEip1559) { + txForTrezor.maxFeePerGas = (0, import_viem4.toHex)(maxFeePerGas); + txForTrezor.maxPriorityFeePerGas = (0, import_viem4.toHex)(maxPriorityFeePerGas); + } else { + txForTrezor.gasPrice = (0, import_viem4.toHex)(gasPrice); + } + const signRes = await import_connect2.default.ethereumSignTransaction({ + path: path2, + transaction: txForTrezor + }); + if (!signRes.success) throw new Error(signRes.payload.error); + const r = normalizeHex(signRes.payload.r, "r"); + const s = normalizeHex(signRes.payload.s, "s"); + const vBig = BigInt(signRes.payload.v); + const txSerializable = { + chainId, + nonce, + gas, + to: to ?? void 0, + value, + data: normData + }; + if (useEip1559) { + txSerializable.maxFeePerGas = maxFeePerGas; + txSerializable.maxPriorityFeePerGas = maxPriorityFeePerGas; + const serializedTransaction = (0, import_viem4.serializeTransaction)(txSerializable, { + r, + s, + yParity: yParityFromV(vBig) + }); + return await publicClient.sendRawTransaction({ serializedTransaction }); } else { - fraction = fraction.padEnd(decimals, "0"); + txSerializable.gasPrice = gasPrice; + const serializedTransaction = (0, import_viem4.serializeTransaction)(txSerializable, { + r, + s, + v: vBig + }); + return await publicClient.sendRawTransaction({ serializedTransaction }); } - return BigInt(`${negative ? "-" : ""}${integer}${fraction}`); } -// node_modules/viem/_esm/index.js -init_abis(); -init_formatUnits(); +// src/trezor/getTrezorAddress.ts +var getTrezorAddress = async (path2 = defaultTrezorPath) => { + await initTrezorOnce(); + const addrRes = await import_connect3.default.ethereumGetAddress({ + path: path2, + showOnTrezor: false + }); + if (!addrRes.success) throw new Error(addrRes.payload.error); + return addrRes.payload.address; +}; + +// src/trezor/trezorDeployContract.ts +var import_viem5 = require("viem"); +async function trezorDeployContract(viemParams, deployParams, trezorParams) { + const { publicClient } = viemParams; + const { abi, bytecode, args, value = 0n, ...overrides } = deployParams; + const data = (0, import_viem5.encodeDeployData)({ abi, bytecode, args }); + const hash = await trezorSendTx( + { publicClient }, + { data, value, ...overrides }, + trezorParams + ); + const receipt = await publicClient.waitForTransactionReceipt({ hash }); + if (!receipt.contractAddress) + throw new Error("No contractAddress in receipt"); + return { hash, contractAddress: receipt.contractAddress }; +} + +// src/trezor/trezorWriteContract.ts +var import_viem6 = require("viem"); +async function trezorWriteContract(viemParams, writeContractParams, trezorParams) { + const { + address, + abi, + functionName, + args, + value = 0n, + ...overrides + } = writeContractParams; + const data = (0, import_viem6.encodeFunctionData)({ abi, functionName, args }); + return trezorSendTx( + viemParams, + { + to: address, + data, + value, + ...overrides + }, + trezorParams + ); +} + +// src/deploy/GenericDeploy.ts +var genericDeploy = async ({ hre, contractName, txParams }, ...contractConstructorArgs) => { + const [deployer] = await hre.ethers.getSigners(); + const chain = conceroNetworks[hre.network.name]; + const isTrezorDeployEnabled = getTrezorDeployEnabled(); + log(`isTrezorDeployEnabled: ${isTrezorDeployEnabled}`, "genericDeploy"); + const contractFactory = await hre.ethers.getContractFactory(contractName, { + libraries: txParams?.libraries + }); + const deployOverrides = txParams?.gasLimit ? { gasLimit: txParams.gasLimit } : {}; + let deploymentAddress; + let receipt; + if (isTrezorDeployEnabled) { + const { publicClient } = getFallbackClients(chain); + const tx = await trezorDeployContract( + { publicClient }, + { + args: contractConstructorArgs, + abi: hre.artifacts.readArtifactSync(contractName).abi, + bytecode: contractFactory.bytecode, + gas: deployOverrides.gasLimit + } + ); + deploymentAddress = tx.contractAddress; + receipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash }); + if (receipt.status !== "success") throw new Error(`Deploy transaction reverted ${tx.hash}`); + } else { + log(`Deploy ${contractName} from address: ${await deployer.getAddress()}`, "genericDeploy", chain.name); + const contract = await contractFactory.deploy(...contractConstructorArgs, deployOverrides); + receipt = await contract.deploymentTransaction()?.wait(); + deploymentAddress = await contract.getAddress(); + } + if (hre.tenderly) { + try { + await hre.tenderly.verify({ + name: contractName, + address: deploymentAddress + }); + } catch (e) { + console.error(JSON.stringify(e)); + } + } + log(`Deployed at: ${deploymentAddress}`, `deploy ${contractName}`, chain.name); + return { + address: deploymentAddress, + chainName: chain.name, + chainType: chain.type, + chainId: chain.chainId, + receipt + }; +}; // src/tokens/TokenSender.ts +var import_viem7 = require("viem"); var TokenSender = class { walletClient; publicClient; @@ -550,36 +828,36 @@ var TokenSender = class { const [tokenDecimals, tokenSymbol, tokenBalance] = await Promise.all([ this.publicClient.readContract({ address: tokenAddress, - abi: erc20Abi, + abi: import_viem7.erc20Abi, functionName: "decimals", args: [] }), this.publicClient.readContract({ address: tokenAddress, - abi: erc20Abi, + abi: import_viem7.erc20Abi, functionName: "symbol", args: [] }), this.publicClient.readContract({ address: tokenAddress, - abi: erc20Abi, + abi: import_viem7.erc20Abi, functionName: "balanceOf", args: [this.walletClient.account?.address] }) ]); console.log( - `Current ${tokenSymbol} balance ${formatUnits(tokenBalance, tokenDecimals)}` + `Current ${tokenSymbol} balance ${(0, import_viem7.formatUnits)(tokenBalance, tokenDecimals)}` ); - if (parseUnits(amount, tokenDecimals) > tokenBalance) { + if ((0, import_viem7.parseUnits)(amount, tokenDecimals) > tokenBalance) { throw new Error( - `Insufficient balance. Required: ${amount}, available: ${formatUnits(tokenBalance, tokenDecimals)}` + `Insufficient balance. Required: ${amount}, available: ${(0, import_viem7.formatUnits)(tokenBalance, tokenDecimals)}` ); } const txHash = await this.walletClient.writeContract({ address: tokenAddress, - abi: erc20Abi, + abi: import_viem7.erc20Abi, functionName: "transfer", - args: [recipient, parseUnits(amount, tokenDecimals)], + args: [recipient, (0, import_viem7.parseUnits)(amount, tokenDecimals)], chain: this.walletClient.chain, account: this.walletClient.account }); @@ -593,106 +871,45 @@ var TokenSender = class { return txHash; } }; - -// src/deploy/getActualGasData.ts -async function getActualGasData(publicClient) { - const block = await publicClient.getBlock(); - const isEIP1559 = !!block.baseFeePerGas; - let gasPrice = 0n; - let maxPriorityFeePerGas = 0n; - try { - if (isEIP1559) { - const { maxFeePerGas } = await publicClient.estimateFeesPerGas(); - gasPrice = maxFeePerGas; - maxPriorityFeePerGas = await publicClient.estimateMaxPriorityFeePerGas(); - } else { - gasPrice = await publicClient.getGasPrice(); - } - } catch (error) { - console.error("Error getting actual gas data:", error); - return { - gasPrice: "0", - maxFeePerGas: "0", - maxPriorityFeePerGas: "0" - }; - } - const gasDataLegacy = { - gasPrice: gasPrice.toString() - }; - const gasDataEIP1559 = { - maxFeePerGas: gasPrice.toString(), - maxPriorityFeePerGas: maxPriorityFeePerGas.toString() - }; - const gasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy; - return gasData; -} - -// src/deploy/hardhatDeployWrapper.ts -async function hardhatDeployWrapper(contractName, { - hre, - args, - publicClient, - proxy = false, - gasLimit, - log = false, - libraries, - skipIfAlreadyDeployed = false -}) { - let actualDeployer; - if (proxy) { - const { proxyDeployer } = await hre.getNamedAccounts(); - actualDeployer = proxyDeployer; - } else { - const { deployer } = await hre.getNamedAccounts(); - actualDeployer = deployer; - } - const { deploy } = hre.deployments; - const nonce = await publicClient.getTransactionCount({ - address: actualDeployer - }); - const gasData = await getActualGasData(publicClient); - const waitConfirmations = hre.network.name.startsWith("ethereum") ? 1 : 3; - if (log) { - console.log( - `\x1B[34m[hardhatDeployWrapper]\x1B[0m\x1B[35m[args]\x1B[0m`, - { - from: actualDeployer, - args, - nonce, - gasLimit: gasLimit ? gasLimit : "auto", - gasData, - waitConfirmations - } - ); - } - let deployment; - try { - console.log("Starting deployment of:", contractName); - deployment = await deploy(contractName, { - from: actualDeployer, - args, - log: true, - autoMine: true, - nonce, - waitConfirmations, - ...gasLimit ? { gasLimit } : {}, - ...gasData, - ...libraries ? { libraries } : {}, - skipIfAlreadyDeployed - }); - } catch (error) { - console.error("Error deploying contract:", error); - throw error; - } - return deployment; -} // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { TokenSender, + baseAccountTypePrefixes, + compileContracts, + conceroNetworks, config, + createEnvAddressGetter, + createEnvUpdater, + createViemAccountGetter, + createViemChain, + createWalletGetter, + defaultTrezorPath, + err, + ethersSignerCallContract, + extractProxyAdminAddress, + formatGas, + genericDeploy, + getActualGasData, + getClients, + getEnvVar, + getFallbackClients, + getGasParameters, getNetworkEnvKey, getNetworkKey, - hardhatDeployWrapper, - networkTypes + getTestClient, + getTrezorAddress, + getTrezorDeployEnabled, + getViemAccount, + getWallet, + localhostViemChain, + log, + mainnetNetworks, + networkTypes, + shorten, + testnetNetworks, + trezorDeployContract, + trezorSendTx, + trezorWriteContract, + warn }); //# sourceMappingURL=index.cjs.js.map diff --git a/dist/index.cjs.js.map b/dist/index.cjs.js.map index ca92643..3f388f2 100644 --- a/dist/index.cjs.js.map +++ b/dist/index.cjs.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/viem/errors/version.ts", "../node_modules/viem/errors/base.ts", "../node_modules/viem/utils/unit/formatUnits.ts", "../node_modules/viem/constants/abis.ts", "../src/index.ts", "../src/constants/config.ts", "../src/networks/getNetworkEnvKey.ts", "../src/networks/networkTypes.ts", "../node_modules/viem/errors/unit.ts", "../node_modules/viem/utils/unit/parseUnits.ts", "../node_modules/viem/index.ts", "../src/tokens/TokenSender.ts", "../src/deploy/getActualGasData.ts", "../src/deploy/hardhatDeployWrapper.ts"], - "sourcesContent": ["export const version = '2.24.2'\n", "import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version: `viem@${version}`,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (\n err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined\n )\n return walk(err.cause, fn)\n return fn ? null : err\n}\n", "import type { ErrorType } from '../../errors/utils.js'\n\nexport type FormatUnitsErrorType = ErrorType\n\n/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value: bigint, decimals: number) {\n let display = value.toString()\n\n const negative = display.startsWith('-')\n if (negative) display = display.slice(1)\n\n display = display.padStart(decimals, '0')\n\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ]\n fraction = fraction.replace(/(0+)$/, '')\n return `${negative ? '-' : ''}${integer || '0'}${\n fraction ? `.${fraction}` : ''\n }`\n}\n", "/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n] as const\n\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n] as const\n\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n] as const\n\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n] as const\n\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n] as const\n\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) \u2192 bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n] as const\n\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) \u2192 bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n name: 'isValidSig',\n },\n] as const\n\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n] as const\n\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n", "import { config } from './constants/config';\nimport {\n\tgetNetworkEnvKey,\n\tgetNetworkKey,\n\tnetworkTypes,\n\ttype ConceroNetwork,\n\ttype NetworkType,\n} from './networks';\n\nimport { TokenSender } from './tokens/TokenSender';\n\nimport { hardhatDeployWrapper } from './deploy/hardhatDeployWrapper';\n\nexport {\n\tConceroNetwork,\n\tconfig,\n\tgetNetworkEnvKey,\n\tgetNetworkKey,\n\tnetworkTypes,\n\tTokenSender,\n\thardhatDeployWrapper,\n};\nexport type { NetworkType };\n", "export const config = {\n DEFAULT_BLOCK_CONFIRMATIONS: 2,\n};\n", "/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkEnvKey(networkName: string): string {\n if (!networkName) {\n throw new Error('Network name must be provided');\n }\n return camelCaseToCapsSnakeCase(networkName);\n}\n\n/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkKey(NETWORK_NAME: string): string {\n if (!NETWORK_NAME) {\n throw new Error('Network name must be provided');\n }\n return capsSnakeCaseToCamelCase(NETWORK_NAME);\n}\n\n/**\n * Converts a string from CAPS_SNAKE_CASE to camelCase\n *\n * @param snakeCaseString The string in CAPS_SNAKE_CASE format\n * @returns The string converted to camelCase format\n */\nexport function capsSnakeCaseToCamelCase(snakeCaseString: string): string {\n if (!snakeCaseString) {\n throw new Error('String must be provided');\n }\n\n return snakeCaseString\n .toLowerCase()\n .replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n}\n\n/**\n * Converts a string from camelCase to CAPS_SNAKE_CASE\n *\n * @param camelCaseString The string in camelCase format\n * @returns The string converted to CAPS_SNAKE_CASE format\n */\nexport function camelCaseToCapsSnakeCase(camelCaseString: string): string {\n if (!camelCaseString) {\n throw new Error('String must be provided');\n }\n\n return camelCaseString.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n}\n\nexport function getNetworkName(networkEnvKey: string): string {\n if (!networkEnvKey) {\n throw new Error('Network name must be provided');\n }\n\n return networkEnvKey\n .toLowerCase()\n .split('_')\n .map((word, index) =>\n index === 0 ? word : word[0].toUpperCase() + word.slice(1)\n )\n .join('');\n}\n", "import { type NetworkType } from './types';\n\nexport const networkTypes: Record = {\n mainnet: 'mainnet',\n testnet: 'testnet',\n localhost: 'localhost',\n};\n", "import { BaseError } from './base.js'\n\nexport type InvalidDecimalNumberErrorType = InvalidDecimalNumberError & {\n name: 'InvalidDecimalNumberError'\n}\nexport class InvalidDecimalNumberError extends BaseError {\n constructor({ value }: { value: string }) {\n super(`Number \\`${value}\\` is not a valid decimal number.`, {\n name: 'InvalidDecimalNumberError',\n })\n }\n}\n", "import { InvalidDecimalNumberError } from '../../errors/unit.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nexport type ParseUnitsErrorType = ErrorType\n\n/**\n * Multiplies a string representation of a number by a given exponent of base 10 (10exponent).\n *\n * - Docs: https://viem.sh/docs/utilities/parseUnits\n *\n * @example\n * import { parseUnits } from 'viem'\n *\n * parseUnits('420', 9)\n * // 420000000000n\n */\nexport function parseUnits(value: string, decimals: number) {\n if (!/^(-?)([0-9]*)\\.?([0-9]*)$/.test(value))\n throw new InvalidDecimalNumberError({ value })\n\n let [integer, fraction = '0'] = value.split('.')\n\n const negative = integer.startsWith('-')\n if (negative) integer = integer.slice(1)\n\n // trim trailing zeros.\n fraction = fraction.replace(/(0+)$/, '')\n\n // round off if the fraction is larger than the number of decimals.\n if (decimals === 0) {\n if (Math.round(Number(`.${fraction}`)) === 1)\n integer = `${BigInt(integer) + 1n}`\n fraction = ''\n } else if (fraction.length > decimals) {\n const [left, unit, right] = [\n fraction.slice(0, decimals - 1),\n fraction.slice(decimals - 1, decimals),\n fraction.slice(decimals),\n ]\n\n const rounded = Math.round(Number(`${unit}.${right}`))\n if (rounded > 9)\n fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, '0')\n else fraction = `${left}${rounded}`\n\n if (fraction.length > decimals) {\n fraction = fraction.slice(1)\n integer = `${BigInt(integer) + 1n}`\n }\n\n fraction = fraction.slice(0, decimals)\n } else {\n fraction = fraction.padEnd(decimals, '0')\n }\n\n return BigInt(`${negative ? '-' : ''}${integer}${fraction}`)\n}\n", "// biome-ignore lint/performance/noBarrelFile: entrypoint module\nexport {\n type Abi,\n type AbiFunction,\n type AbiParameter,\n type AbiEvent,\n type AbiStateMutability,\n type AbiParameterKind,\n type AbiParameterToPrimitiveType,\n type Address,\n type Narrow,\n type ParseAbi,\n type ParseAbiItem,\n type ParseAbiParameter,\n type ParseAbiParameters,\n type ResolvedRegister,\n type TypedData,\n type TypedDataDomain,\n type TypedDataParameter,\n CircularReferenceError,\n InvalidAbiParameterError,\n InvalidAbiParametersError,\n InvalidAbiItemError,\n InvalidAbiTypeParameterError,\n InvalidFunctionModifierError,\n InvalidModifierError,\n InvalidParameterError,\n InvalidParenthesisError,\n InvalidSignatureError,\n InvalidStructSignatureError,\n SolidityProtectedKeywordError,\n UnknownTypeError,\n UnknownSignatureError,\n parseAbi,\n parseAbiItem,\n parseAbiParameter,\n parseAbiParameters,\n} from 'abitype'\nexport type {\n BlockOverrides,\n Rpc as RpcBlockOverrides,\n} from 'ox/BlockOverrides'\n\nexport {\n getContract,\n type GetContractErrorType,\n type GetContractParameters,\n type GetContractReturnType,\n} from './actions/getContract.js'\nexport {\n type GetContractEventsErrorType,\n type GetContractEventsParameters,\n type GetContractEventsReturnType,\n} from './actions/public/getContractEvents.js'\nexport {\n type GetEip712DomainErrorType,\n type GetEip712DomainParameters,\n type GetEip712DomainReturnType,\n} from './actions/public/getEip712Domain.js'\nexport {\n type AddChainErrorType,\n type AddChainParameters,\n} from './actions/wallet/addChain.js'\nexport {\n type CallErrorType,\n type CallParameters,\n type CallReturnType,\n} from './actions/public/call.js'\nexport type {\n CreateAccessListParameters,\n CreateAccessListReturnType,\n CreateAccessListErrorType,\n} from './actions/public/createAccessList.js'\nexport type {\n CreateBlockFilterErrorType,\n CreateBlockFilterReturnType,\n} from './actions/public/createBlockFilter.js'\nexport type {\n CreateContractEventFilterErrorType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n} from './actions/public/createContractEventFilter.js'\nexport type {\n CreateEventFilterErrorType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n} from './actions/public/createEventFilter.js'\nexport type {\n CreatePendingTransactionFilterErrorType,\n CreatePendingTransactionFilterReturnType,\n} from './actions/public/createPendingTransactionFilter.js'\nexport type {\n DeployContractErrorType,\n DeployContractParameters,\n DeployContractReturnType,\n} from './actions/wallet/deployContract.js'\nexport type {\n DropTransactionErrorType,\n DropTransactionParameters,\n} from './actions/test/dropTransaction.js'\nexport type {\n DumpStateErrorType,\n DumpStateReturnType,\n} from './actions/test/dumpState.js'\nexport type {\n GetAutomineErrorType,\n GetAutomineReturnType,\n} from './actions/test/getAutomine.js'\nexport type {\n EstimateContractGasErrorType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n} from './actions/public/estimateContractGas.js'\nexport type {\n EstimateGasErrorType,\n EstimateGasParameters,\n EstimateGasReturnType,\n} from './actions/public/estimateGas.js'\nexport type {\n EstimateFeesPerGasErrorType,\n EstimateFeesPerGasParameters,\n EstimateFeesPerGasReturnType,\n} from './actions/public/estimateFeesPerGas.js'\nexport type {\n EstimateMaxPriorityFeePerGasErrorType,\n EstimateMaxPriorityFeePerGasParameters,\n EstimateMaxPriorityFeePerGasReturnType,\n} from './actions/public/estimateMaxPriorityFeePerGas.js'\nexport type {\n GetAddressesErrorType,\n GetAddressesReturnType,\n} from './actions/wallet/getAddresses.js'\nexport type {\n GetBalanceErrorType,\n GetBalanceParameters,\n GetBalanceReturnType,\n} from './actions/public/getBalance.js'\nexport type {\n GetBlobBaseFeeErrorType,\n GetBlobBaseFeeReturnType,\n} from './actions/public/getBlobBaseFee.js'\nexport type {\n GetBlockNumberErrorType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n} from './actions/public/getBlockNumber.js'\nexport type {\n GetBlockErrorType,\n GetBlockParameters,\n GetBlockReturnType,\n} from './actions/public/getBlock.js'\nexport type {\n GetBlockTransactionCountErrorType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n} from './actions/public/getBlockTransactionCount.js'\nexport type {\n /** @deprecated Use `GetCodeErrorType` instead */\n GetCodeErrorType as GetBytecodeErrorType,\n /** @deprecated Use `GetCodeParameters` instead */\n GetCodeParameters as GetBytecodeParameters,\n /** @deprecated Use `GetCodeReturnType` instead */\n GetCodeReturnType as GetBytecodeReturnType,\n GetCodeErrorType,\n GetCodeParameters,\n GetCodeReturnType,\n} from './actions/public/getCode.js'\nexport type {\n GetChainIdErrorType,\n GetChainIdReturnType,\n} from './actions/public/getChainId.js'\nexport type {\n GetEnsAddressErrorType,\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n} from './actions/ens/getEnsAddress.js'\nexport type {\n GetEnsAvatarErrorType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n} from './actions/ens/getEnsAvatar.js'\nexport type {\n GetEnsNameErrorType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n} from './actions/ens/getEnsName.js'\nexport type {\n GetEnsResolverErrorType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n} from './actions/ens/getEnsResolver.js'\nexport type {\n GetEnsTextErrorType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from './actions/ens/getEnsText.js'\nexport type {\n GetFeeHistoryErrorType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n} from './actions/public/getFeeHistory.js'\nexport type {\n GetFilterChangesErrorType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n} from './actions/public/getFilterChanges.js'\nexport type {\n GetFilterLogsErrorType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n} from './actions/public/getFilterLogs.js'\nexport type {\n GetGasPriceErrorType,\n GetGasPriceReturnType,\n} from './actions/public/getGasPrice.js'\nexport type {\n GetLogsErrorType,\n GetLogsParameters,\n GetLogsReturnType,\n} from './actions/public/getLogs.js'\nexport type {\n GetPermissionsErrorType,\n GetPermissionsReturnType,\n} from './actions/wallet/getPermissions.js'\nexport type {\n GetProofErrorType,\n GetProofParameters,\n GetProofReturnType,\n} from './actions/public/getProof.js'\nexport type {\n GetStorageAtErrorType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n} from './actions/public/getStorageAt.js'\nexport type {\n GetTransactionConfirmationsErrorType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n} from './actions/public/getTransactionConfirmations.js'\nexport type {\n GetTransactionCountErrorType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n} from './actions/public/getTransactionCount.js'\nexport type {\n GetTransactionErrorType,\n GetTransactionParameters,\n GetTransactionReturnType,\n} from './actions/public/getTransaction.js'\nexport type {\n GetTransactionReceiptErrorType,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n} from './actions/public/getTransactionReceipt.js'\nexport type {\n ImpersonateAccountErrorType,\n ImpersonateAccountParameters,\n} from './actions/test/impersonateAccount.js'\nexport type {\n IncreaseTimeErrorType,\n IncreaseTimeParameters,\n} from './actions/test/increaseTime.js'\nexport type {\n LoadStateErrorType,\n LoadStateParameters,\n LoadStateReturnType,\n} from './actions/test/loadState.js'\nexport type { MineErrorType, MineParameters } from './actions/test/mine.js'\nexport type {\n MulticallErrorType,\n MulticallParameters,\n MulticallReturnType,\n} from './actions/public/multicall.js'\nexport type { SnapshotErrorType } from './actions/test/snapshot.js'\nexport type {\n SimulateBlocksParameters,\n SimulateBlocksReturnType,\n SimulateBlocksErrorType,\n} from './actions/public/simulateBlocks.js'\nexport type {\n SimulateCallsParameters,\n SimulateCallsReturnType,\n SimulateCallsErrorType,\n} from './actions/public/simulateCalls.js'\nexport type {\n GetMutabilityAwareValue,\n SimulateContractParameters,\n SimulateContractReturnType,\n SimulateContractErrorType,\n} from './actions/public/simulateContract.js'\nexport type {\n OnBlock,\n OnBlockParameter,\n WatchBlocksErrorType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n} from './actions/public/watchBlocks.js'\nexport type {\n OnBlockNumberFn,\n OnBlockNumberParameter,\n WatchBlockNumberErrorType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n} from './actions/public/watchBlockNumber.js'\nexport type {\n WatchEventOnLogsFn,\n WatchEventOnLogsParameter,\n WatchEventErrorType,\n WatchEventParameters,\n WatchEventReturnType,\n} from './actions/public/watchEvent.js'\nexport type {\n OnTransactionsFn,\n OnTransactionsParameter,\n WatchPendingTransactionsErrorType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from './actions/public/watchPendingTransactions.js'\nexport type {\n ReadContractErrorType,\n ReadContractParameters,\n ReadContractReturnType,\n} from './actions/public/readContract.js'\nexport type {\n ReplacementReason,\n ReplacementReturnType,\n WaitForTransactionReceiptErrorType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n} from './actions/public/waitForTransactionReceipt.js'\nexport type {\n RequestAddressesErrorType,\n RequestAddressesReturnType,\n} from './actions/wallet/requestAddresses.js'\nexport type {\n RequestPermissionsErrorType,\n RequestPermissionsReturnType,\n RequestPermissionsParameters,\n} from './actions/wallet/requestPermissions.js'\nexport type {\n GetTxpoolContentErrorType,\n GetTxpoolContentReturnType,\n} from './actions/test/getTxpoolContent.js'\nexport type {\n GetTxpoolStatusErrorType,\n GetTxpoolStatusReturnType,\n} from './actions/test/getTxpoolStatus.js'\nexport type {\n InspectTxpoolErrorType,\n InspectTxpoolReturnType,\n} from './actions/test/inspectTxpool.js'\nexport type { RemoveBlockTimestampIntervalErrorType } from './actions/test/removeBlockTimestampInterval.js'\nexport type { ResetErrorType, ResetParameters } from './actions/test/reset.js'\nexport type {\n RevertErrorType,\n RevertParameters,\n} from './actions/test/revert.js'\nexport type {\n SendRawTransactionErrorType,\n SendRawTransactionParameters,\n SendRawTransactionReturnType,\n} from './actions/wallet/sendRawTransaction.js'\nexport type {\n SendTransactionErrorType,\n SendTransactionParameters,\n SendTransactionRequest,\n SendTransactionReturnType,\n} from './actions/wallet/sendTransaction.js'\nexport type {\n SignTransactionErrorType,\n SignTransactionParameters,\n SignTransactionReturnType,\n} from './actions/wallet/signTransaction.js'\nexport type {\n PrepareTransactionRequestErrorType,\n PrepareTransactionRequestParameters,\n PrepareTransactionRequestParameterType,\n PrepareTransactionRequestRequest,\n PrepareTransactionRequestReturnType,\n} from './actions/wallet/prepareTransactionRequest.js'\nexport type {\n SendUnsignedTransactionErrorType,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n} from './actions/test/sendUnsignedTransaction.js'\nexport type { SetAutomineErrorType } from './actions/test/setAutomine.js'\nexport type {\n SetBalanceErrorType,\n SetBalanceParameters,\n} from './actions/test/setBalance.js'\nexport type {\n SetBlockGasLimitErrorType,\n SetBlockGasLimitParameters,\n} from './actions/test/setBlockGasLimit.js'\nexport type {\n SetBlockTimestampIntervalErrorType,\n SetBlockTimestampIntervalParameters,\n} from './actions/test/setBlockTimestampInterval.js'\nexport type {\n SetCodeErrorType,\n SetCodeParameters,\n} from './actions/test/setCode.js'\nexport type {\n SetCoinbaseErrorType,\n SetCoinbaseParameters,\n} from './actions/test/setCoinbase.js'\nexport type {\n SetIntervalMiningErrorType,\n SetIntervalMiningParameters,\n} from './actions/test/setIntervalMining.js'\nexport type { SetLoggingEnabledErrorType } from './actions/test/setLoggingEnabled.js'\nexport type {\n SetMinGasPriceErrorType,\n SetMinGasPriceParameters,\n} from './actions/test/setMinGasPrice.js'\nexport type {\n SetNextBlockBaseFeePerGasErrorType,\n SetNextBlockBaseFeePerGasParameters,\n} from './actions/test/setNextBlockBaseFeePerGas.js'\nexport type {\n SetNextBlockTimestampErrorType,\n SetNextBlockTimestampParameters,\n} from './actions/test/setNextBlockTimestamp.js'\nexport type {\n SetNonceErrorType,\n SetNonceParameters,\n} from './actions/test/setNonce.js'\nexport type { SetRpcUrlErrorType } from './actions/test/setRpcUrl.js'\nexport type {\n SetStorageAtErrorType,\n SetStorageAtParameters,\n} from './actions/test/setStorageAt.js'\nexport type {\n SignMessageErrorType,\n SignMessageParameters,\n SignMessageReturnType,\n} from './actions/wallet/signMessage.js'\nexport type {\n SignTypedDataErrorType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n} from './actions/wallet/signTypedData.js'\nexport type {\n StopImpersonatingAccountErrorType,\n StopImpersonatingAccountParameters,\n} from './actions/test/stopImpersonatingAccount.js'\nexport type {\n SwitchChainErrorType,\n SwitchChainParameters,\n} from './actions/wallet/switchChain.js'\nexport type {\n UninstallFilterErrorType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n} from './actions/public/uninstallFilter.js'\nexport type {\n WatchAssetErrorType,\n WatchAssetParameters,\n WatchAssetReturnType,\n} from './actions/wallet/watchAsset.js'\nexport type {\n VerifyHashErrorType as VerifyHashActionErrorType,\n VerifyHashParameters as VerifyHashActionParameters,\n VerifyHashReturnType as VerifyHashActionReturnType,\n} from './actions/public/verifyHash.js'\nexport type {\n VerifyTypedDataErrorType as VerifyTypedDataActionErrorType,\n VerifyTypedDataParameters as VerifyTypedDataActionParameters,\n VerifyTypedDataReturnType as VerifyTypedDataActionReturnType,\n} from './actions/public/verifyTypedData.js'\nexport type {\n VerifyMessageErrorType as VerifyMessageActionErrorType,\n VerifyMessageParameters as VerifyMessageActionParameters,\n VerifyMessageReturnType as VerifyMessageActionReturnType,\n} from './actions/public/verifyMessage.js'\nexport type {\n WatchContractEventOnLogsFn,\n WatchContractEventOnLogsParameter,\n WatchContractEventErrorType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n} from './actions/public/watchContractEvent.js'\nexport type {\n WriteContractErrorType,\n WriteContractParameters,\n WriteContractReturnType,\n} from './actions/wallet/writeContract.js'\nexport type { Call, Calls } from './types/calls.js'\nexport type {\n Chain,\n ChainConfig,\n ChainContract,\n ChainEstimateFeesPerGasFn,\n ChainFees,\n ChainFeesFnParameters,\n ChainFormatter,\n ChainEstimateFeesPerGasFnParameters,\n ChainMaxPriorityFeePerGasFn,\n DeriveChain,\n GetChainParameter,\n ChainFormatters,\n ChainSerializers,\n ExtractChainFormatterExclude,\n ExtractChainFormatterParameters,\n ExtractChainFormatterReturnType,\n} from './types/chain.js'\nexport type { GetTransactionRequestKzgParameter, Kzg } from './types/kzg.js'\nexport {\n type Client,\n type ClientConfig,\n type CreateClientErrorType,\n type MulticallBatchOptions,\n createClient,\n rpcSchema,\n} from './clients/createClient.js'\nexport {\n type CustomTransport,\n type CustomTransportConfig,\n type CustomTransportErrorType,\n custom,\n} from './clients/transports/custom.js'\nexport {\n type FallbackTransport,\n type FallbackTransportConfig,\n type FallbackTransportErrorType,\n fallback,\n shouldThrow,\n} from './clients/transports/fallback.js'\nexport {\n type HttpTransport,\n type HttpTransportConfig,\n type HttpTransportErrorType,\n http,\n} from './clients/transports/http.js'\nexport {\n type PublicClient,\n type PublicClientConfig,\n type CreatePublicClientErrorType,\n createPublicClient,\n} from './clients/createPublicClient.js'\nexport {\n type TestClient,\n type TestClientConfig,\n type CreateTestClientErrorType,\n createTestClient,\n} from './clients/createTestClient.js'\nexport {\n type PublicActions,\n publicActions,\n} from './clients/decorators/public.js'\nexport {\n type TestActions,\n testActions,\n} from './clients/decorators/test.js'\nexport {\n type WalletActions,\n walletActions,\n} from './clients/decorators/wallet.js'\nexport {\n type Transport,\n type TransportConfig,\n type CreateTransportErrorType,\n createTransport,\n} from './clients/transports/createTransport.js'\nexport {\n type WalletClient,\n type WalletClientConfig,\n type CreateWalletClientErrorType,\n createWalletClient,\n} from './clients/createWalletClient.js'\nexport {\n type WebSocketTransport,\n type WebSocketTransportConfig,\n type WebSocketTransportErrorType,\n webSocket,\n} from './clients/transports/webSocket.js'\nexport {\n multicall3Abi,\n erc20Abi,\n erc20Abi_bytes32,\n erc721Abi,\n erc4626Abi,\n universalSignatureValidatorAbi,\n} from './constants/abis.js'\nexport { ethAddress, zeroAddress } from './constants/address.js'\nexport {\n deploylessCallViaBytecodeBytecode,\n deploylessCallViaFactoryBytecode,\n universalSignatureValidatorByteCode,\n} from './constants/contracts.js'\nexport { etherUnits, gweiUnits, weiUnits } from './constants/unit.js'\nexport {\n maxInt8,\n maxInt16,\n maxInt24,\n maxInt32,\n maxInt40,\n maxInt48,\n maxInt56,\n maxInt64,\n maxInt72,\n maxInt80,\n maxInt88,\n maxInt96,\n maxInt104,\n maxInt112,\n maxInt120,\n maxInt128,\n maxInt136,\n maxInt144,\n maxInt152,\n maxInt160,\n maxInt168,\n maxInt176,\n maxInt184,\n maxInt192,\n maxInt200,\n maxInt208,\n maxInt216,\n maxInt224,\n maxInt232,\n maxInt240,\n maxInt248,\n maxInt256,\n maxUint8,\n maxUint16,\n maxUint24,\n maxUint32,\n maxUint40,\n maxUint48,\n maxUint56,\n maxUint64,\n maxUint72,\n maxUint80,\n maxUint88,\n maxUint96,\n maxUint104,\n maxUint112,\n maxUint120,\n maxUint128,\n maxUint136,\n maxUint144,\n maxUint152,\n maxUint160,\n maxUint168,\n maxUint176,\n maxUint184,\n maxUint192,\n maxUint200,\n maxUint208,\n maxUint216,\n maxUint224,\n maxUint232,\n maxUint240,\n maxUint248,\n maxUint256,\n minInt8,\n minInt16,\n minInt24,\n minInt32,\n minInt40,\n minInt48,\n minInt56,\n minInt64,\n minInt72,\n minInt80,\n minInt88,\n minInt96,\n minInt104,\n minInt112,\n minInt120,\n minInt128,\n minInt136,\n minInt144,\n minInt152,\n minInt160,\n minInt168,\n minInt176,\n minInt184,\n minInt192,\n minInt200,\n minInt208,\n minInt216,\n minInt224,\n minInt232,\n minInt240,\n minInt248,\n minInt256,\n} from './constants/number.js'\nexport { zeroHash } from './constants/bytes.js'\nexport { presignMessagePrefix } from './constants/strings.js'\nexport {\n AbiConstructorNotFoundError,\n type AbiConstructorNotFoundErrorType,\n AbiConstructorParamsNotFoundError,\n type AbiConstructorParamsNotFoundErrorType,\n AbiDecodingDataSizeInvalidError,\n type AbiDecodingDataSizeInvalidErrorType,\n AbiDecodingDataSizeTooSmallError,\n type AbiDecodingDataSizeTooSmallErrorType,\n AbiDecodingZeroDataError,\n type AbiDecodingZeroDataErrorType,\n AbiEncodingArrayLengthMismatchError,\n type AbiEncodingArrayLengthMismatchErrorType,\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n AbiEncodingBytesSizeMismatchError,\n type AbiEncodingBytesSizeMismatchErrorType,\n AbiErrorInputsNotFoundError,\n type AbiErrorInputsNotFoundErrorType,\n AbiErrorNotFoundError,\n type AbiErrorNotFoundErrorType,\n AbiErrorSignatureNotFoundError,\n type AbiErrorSignatureNotFoundErrorType,\n AbiEventNotFoundError,\n type AbiEventNotFoundErrorType,\n AbiEventSignatureEmptyTopicsError,\n type AbiEventSignatureEmptyTopicsErrorType,\n AbiEventSignatureNotFoundError,\n type AbiEventSignatureNotFoundErrorType,\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n AbiFunctionOutputsNotFoundError,\n type AbiFunctionOutputsNotFoundErrorType,\n AbiFunctionSignatureNotFoundError,\n type AbiFunctionSignatureNotFoundErrorType,\n BytesSizeMismatchError,\n type BytesSizeMismatchErrorType,\n DecodeLogDataMismatch,\n type DecodeLogDataMismatchErrorType,\n DecodeLogTopicsMismatch,\n type DecodeLogTopicsMismatchErrorType,\n InvalidAbiDecodingTypeError,\n type InvalidAbiDecodingTypeErrorType,\n InvalidAbiEncodingTypeError,\n type InvalidAbiEncodingTypeErrorType,\n InvalidArrayError,\n type InvalidArrayErrorType,\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n UnsupportedPackedAbiType,\n type UnsupportedPackedAbiTypeErrorType,\n} from './errors/abi.js'\nexport { BaseError, type BaseErrorType, setErrorConfig } from './errors/base.js'\nexport {\n BlockNotFoundError,\n type BlockNotFoundErrorType,\n} from './errors/block.js'\nexport {\n CallExecutionError,\n type CallExecutionErrorType,\n ContractFunctionExecutionError,\n type ContractFunctionExecutionErrorType,\n ContractFunctionRevertedError,\n type ContractFunctionRevertedErrorType,\n ContractFunctionZeroDataError,\n type ContractFunctionZeroDataErrorType,\n RawContractError,\n type RawContractErrorType,\n CounterfactualDeploymentFailedError,\n type CounterfactualDeploymentFailedErrorType,\n} from './errors/contract.js'\nexport {\n BaseFeeScalarError,\n type BaseFeeScalarErrorType,\n Eip1559FeesNotSupportedError,\n type Eip1559FeesNotSupportedErrorType,\n MaxFeePerGasTooLowError,\n type MaxFeePerGasTooLowErrorType,\n} from './errors/fee.js'\nexport {\n ChainDisconnectedError,\n type ChainDisconnectedErrorType,\n InternalRpcError,\n type InternalRpcErrorType,\n InvalidInputRpcError,\n type InvalidInputRpcErrorType,\n InvalidParamsRpcError,\n type InvalidParamsRpcErrorType,\n InvalidRequestRpcError,\n type InvalidRequestRpcErrorType,\n JsonRpcVersionUnsupportedError,\n type JsonRpcVersionUnsupportedErrorType,\n LimitExceededRpcError,\n type LimitExceededRpcErrorType,\n MethodNotFoundRpcError,\n type MethodNotFoundRpcErrorType,\n MethodNotSupportedRpcError,\n type MethodNotSupportedRpcErrorType,\n ParseRpcError,\n type ParseRpcErrorType,\n ProviderDisconnectedError,\n type ProviderDisconnectedErrorType,\n ProviderRpcError,\n type ProviderRpcErrorCode,\n type ProviderRpcErrorType,\n ResourceNotFoundRpcError,\n type ResourceNotFoundRpcErrorType,\n ResourceUnavailableRpcError,\n type ResourceUnavailableRpcErrorType,\n RpcError,\n type RpcErrorType,\n type RpcErrorCode,\n SwitchChainError,\n TransactionRejectedRpcError,\n type TransactionRejectedRpcErrorType,\n UnauthorizedProviderError,\n type UnauthorizedProviderErrorType,\n UnknownRpcError,\n type UnknownRpcErrorType,\n UnsupportedProviderMethodError,\n type UnsupportedProviderMethodErrorType,\n UserRejectedRequestError,\n type UserRejectedRequestErrorType,\n} from './errors/rpc.js'\nexport {\n ChainDoesNotSupportContract,\n type ChainDoesNotSupportContractErrorType,\n ChainMismatchError,\n type ChainMismatchErrorType,\n ChainNotFoundError,\n type ChainNotFoundErrorType,\n ClientChainNotConfiguredError,\n type ClientChainNotConfiguredErrorType,\n InvalidChainIdError,\n type InvalidChainIdErrorType,\n} from './errors/chain.js'\nexport {\n InvalidBytesBooleanError,\n type InvalidBytesBooleanErrorType,\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n InvalidHexValueError,\n type InvalidHexValueErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from './errors/encoding.js'\nexport {\n type EnsAvatarInvalidMetadataError,\n EnsAvatarUriResolutionError,\n type EnsAvatarInvalidMetadataErrorType,\n EnsAvatarInvalidNftUriError,\n type EnsAvatarInvalidNftUriErrorType,\n EnsAvatarUnsupportedNamespaceError,\n type EnsAvatarUnsupportedNamespaceErrorType,\n type EnsAvatarUriResolutionErrorType,\n} from './errors/ens.js'\nexport {\n type InvalidDecimalNumberErrorType,\n InvalidDecimalNumberError,\n} from './errors/unit.js'\nexport {\n EstimateGasExecutionError,\n type EstimateGasExecutionErrorType,\n} from './errors/estimateGas.js'\nexport {\n ExecutionRevertedError,\n type ExecutionRevertedErrorType,\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n FeeCapTooLowError,\n type FeeCapTooLowErrorType,\n InsufficientFundsError,\n type InsufficientFundsErrorType,\n IntrinsicGasTooHighError,\n type IntrinsicGasTooHighErrorType,\n IntrinsicGasTooLowError,\n type IntrinsicGasTooLowErrorType,\n NonceMaxValueError,\n type NonceMaxValueErrorType,\n NonceTooHighError,\n type NonceTooHighErrorType,\n NonceTooLowError,\n type NonceTooLowErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n TransactionTypeNotSupportedError,\n type TransactionTypeNotSupportedErrorType,\n UnknownNodeError,\n type UnknownNodeErrorType,\n} from './errors/node.js'\nexport {\n FilterTypeNotSupportedError,\n type FilterTypeNotSupportedErrorType,\n} from './errors/log.js'\nexport {\n HttpRequestError,\n type HttpRequestErrorType,\n RpcRequestError,\n type RpcRequestErrorType,\n TimeoutError,\n type TimeoutErrorType,\n SocketClosedError,\n type SocketClosedErrorType,\n WebSocketRequestError,\n type WebSocketRequestErrorType,\n} from './errors/request.js'\nexport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from './errors/address.js'\nexport {\n FeeConflictError,\n type FeeConflictErrorType,\n InvalidLegacyVError,\n type InvalidLegacyVErrorType,\n InvalidSerializableTransactionError,\n type InvalidSerializableTransactionErrorType,\n InvalidSerializedTransactionError,\n type InvalidSerializedTransactionErrorType,\n InvalidSerializedTransactionTypeError,\n type InvalidSerializedTransactionTypeErrorType,\n InvalidStorageKeySizeError,\n type InvalidStorageKeySizeErrorType,\n TransactionExecutionError,\n type TransactionExecutionErrorType,\n TransactionNotFoundError,\n type TransactionNotFoundErrorType,\n TransactionReceiptNotFoundError,\n type TransactionReceiptNotFoundErrorType,\n WaitForTransactionReceiptTimeoutError,\n type WaitForTransactionReceiptTimeoutErrorType,\n} from './errors/transaction.js'\nexport {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n SliceOffsetOutOfBoundsError,\n type SliceOffsetOutOfBoundsErrorType,\n} from './errors/data.js'\nexport {\n UrlRequiredError,\n type UrlRequiredErrorType,\n} from './errors/transport.js'\nexport {\n AccountStateConflictError,\n type AccountStateConflictErrorType,\n StateAssignmentConflictError,\n type StateAssignmentConflictErrorType,\n} from './errors/stateOverride.js'\nexport {\n InvalidDomainError,\n type InvalidDomainErrorType,\n InvalidPrimaryTypeError,\n type InvalidPrimaryTypeErrorType,\n InvalidStructTypeError,\n type InvalidStructTypeErrorType,\n} from './errors/typedData.js'\nexport type {\n AbiEventParameterToPrimitiveType,\n AbiEventParametersToPrimitiveTypes,\n AbiEventTopicToPrimitiveType,\n AbiItem,\n AbiItemArgs,\n AbiItemName,\n ContractConstructorArgs,\n ContractEventArgsFromTopics,\n EventDefinition,\n ExtractAbiFunctionForArgs,\n ExtractAbiItem,\n ExtractAbiItemForArgs,\n ExtractAbiItemNames,\n ContractErrorArgs,\n ContractErrorName,\n ContractEventArgs,\n ContractEventName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n ContractFunctionArgs,\n ContractFunctionName,\n GetEventArgs,\n GetValue,\n LogTopicType,\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n UnionWiden,\n Widen,\n} from './types/contract.js'\nexport type {\n AccessList,\n Transaction,\n TransactionBase,\n TransactionEIP1559,\n TransactionEIP2930,\n TransactionEIP4844,\n TransactionEIP7702,\n TransactionLegacy,\n TransactionReceipt,\n TransactionRequest,\n TransactionRequestBase,\n TransactionRequestEIP1559,\n TransactionRequestEIP2930,\n TransactionRequestEIP4844,\n TransactionRequestEIP7702,\n TransactionRequestGeneric,\n TransactionRequestLegacy,\n TransactionSerializable,\n TransactionSerializableBase,\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n TransactionSerializableLegacy,\n TransactionSerialized,\n TransactionSerializedEIP1559,\n TransactionSerializedEIP2930,\n TransactionSerializedEIP4844,\n TransactionSerializedEIP7702,\n TransactionSerializedGeneric,\n TransactionSerializedLegacy,\n TransactionType,\n} from './types/transaction.js'\nexport type {\n Assign,\n Branded,\n Evaluate,\n IsNarrowable,\n IsUndefined,\n IsUnion,\n LooseOmit,\n MaybePartial,\n MaybePromise,\n MaybeRequired,\n Mutable,\n NoInfer,\n NoUndefined,\n Omit,\n Or,\n PartialBy,\n RequiredBy,\n Some,\n UnionEvaluate,\n UnionLooseOmit,\n ValueOf,\n Prettify,\n ExactPartial,\n ExactRequired,\n IsNever,\n OneOf,\n UnionOmit,\n UnionPartialBy,\n UnionPick,\n UnionRequiredBy,\n UnionToTuple,\n} from './types/utils.js'\nexport type {\n Account,\n AccountSource,\n CustomSource,\n HDAccount,\n HDOptions,\n JsonRpcAccount,\n LocalAccount,\n PrivateKeyAccount,\n} from './accounts/types.js'\nexport type { AssetGateway, AssetGatewayUrls } from './types/ens.js'\nexport type {\n Block,\n BlockIdentifier,\n BlockNumber,\n BlockTag,\n Uncle,\n} from './types/block.js'\nexport type {\n ByteArray,\n Hash,\n Hex,\n LogTopic,\n Signature,\n CompactSignature,\n SignableMessage,\n} from './types/misc.js'\nexport type {\n AddEthereumChainParameter,\n BundlerRpcSchema,\n DebugBundlerRpcSchema,\n EIP1193EventMap,\n EIP1193Events,\n EIP1193Parameters,\n EIP1193Provider,\n EIP1193RequestFn,\n EIP1474Methods,\n ProviderRpcErrorType as EIP1193ProviderRpcErrorType,\n ProviderConnectInfo,\n ProviderMessage,\n PublicRpcSchema,\n PaymasterRpcSchema,\n NetworkSync,\n RpcSchema,\n RpcSchemaOverride,\n TestRpcSchema,\n WalletCapabilities,\n WalletCapabilitiesRecord,\n WalletCallReceipt,\n WalletGetCallsStatusReturnType,\n WalletGrantPermissionsParameters,\n WalletGrantPermissionsReturnType,\n WalletSendCallsParameters,\n WalletPermissionCaveat,\n WalletPermission,\n WalletRpcSchema,\n WatchAssetParams,\n} from './types/eip1193.js'\nexport { ProviderRpcError as EIP1193ProviderRpcError } from './types/eip1193.js'\nexport type { BlobSidecar, BlobSidecars } from './types/eip4844.js'\nexport type {\n FeeHistory,\n FeeValues,\n FeeValuesEIP1559,\n FeeValuesEIP4844,\n FeeValuesLegacy,\n FeeValuesType,\n} from './types/fee.js'\nexport type { Filter, FilterType } from './types/filter.js'\nexport type { TypedDataDefinition } from './types/typedData.js'\nexport type { GetTransportConfig, GetPollOptions } from './types/transport.js'\nexport type { Log } from './types/log.js'\nexport type {\n MulticallContracts,\n MulticallResponse,\n MulticallResults,\n} from './types/multicall.js'\nexport type {\n ParseAccount,\n DeriveAccount,\n HDKey,\n} from './types/account.js'\nexport type {\n Authorization,\n AuthorizationList,\n SerializedAuthorization,\n SerializedAuthorizationList,\n SignedAuthorization,\n SignedAuthorizationList,\n} from './types/authorization.js'\nexport type {\n Index,\n Quantity,\n RpcAuthorization,\n RpcAuthorizationList,\n RpcBlock,\n RpcBlockIdentifier,\n RpcBlockNumber,\n RpcFeeHistory,\n RpcFeeValues,\n RpcLog,\n RpcTransaction,\n RpcTransactionReceipt,\n RpcTransactionRequest,\n RpcUncle,\n Status,\n RpcProof,\n RpcAccountStateOverride,\n RpcStateOverride,\n RpcStateMapping,\n} from './types/rpc.js'\nexport type { Withdrawal } from './types/withdrawal.js'\nexport type {\n StateMapping,\n StateOverride,\n} from './types/stateOverride.js'\nexport { labelhash, type LabelhashErrorType } from './utils/ens/labelhash.js'\nexport { namehash, type NamehashErrorType } from './utils/ens/namehash.js'\nexport {\n type FormattedBlock,\n defineBlock,\n type DefineBlockErrorType,\n formatBlock,\n type FormatBlockErrorType,\n} from './utils/formatters/block.js'\nexport { formatLog, type FormatLogErrorType } from './utils/formatters/log.js'\nexport {\n type DecodeAbiParametersErrorType,\n type DecodeAbiParametersReturnType,\n decodeAbiParameters,\n} from './utils/abi/decodeAbiParameters.js'\nexport {\n type DecodeDeployDataErrorType,\n type DecodeDeployDataParameters,\n type DecodeDeployDataReturnType,\n decodeDeployData,\n} from './utils/abi/decodeDeployData.js'\nexport {\n type DecodeErrorResultErrorType,\n type DecodeErrorResultParameters,\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n} from './utils/abi/decodeErrorResult.js'\nexport {\n type DecodeEventLogErrorType,\n type DecodeEventLogParameters,\n type DecodeEventLogReturnType,\n decodeEventLog,\n} from './utils/abi/decodeEventLog.js'\nexport {\n type DecodeFunctionDataErrorType,\n type DecodeFunctionDataParameters,\n type DecodeFunctionDataReturnType,\n decodeFunctionData,\n} from './utils/abi/decodeFunctionData.js'\nexport {\n type DecodeFunctionResultErrorType,\n type DecodeFunctionResultParameters,\n type DecodeFunctionResultReturnType,\n decodeFunctionResult,\n} from './utils/abi/decodeFunctionResult.js'\nexport {\n type EncodeAbiParametersErrorType,\n type EncodeAbiParametersReturnType,\n encodeAbiParameters,\n} from './utils/abi/encodeAbiParameters.js'\nexport {\n type EncodeDeployDataErrorType,\n type EncodeDeployDataParameters,\n type EncodeDeployDataReturnType,\n encodeDeployData,\n} from './utils/abi/encodeDeployData.js'\nexport {\n type EncodeErrorResultErrorType,\n type EncodeErrorResultParameters,\n type EncodeErrorResultReturnType,\n encodeErrorResult,\n} from './utils/abi/encodeErrorResult.js'\nexport {\n type EncodeEventTopicsErrorType,\n type EncodeEventTopicsParameters,\n type EncodeEventTopicsReturnType,\n encodeEventTopics,\n} from './utils/abi/encodeEventTopics.js'\nexport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n type EncodeFunctionDataReturnType,\n encodeFunctionData,\n} from './utils/abi/encodeFunctionData.js'\nexport {\n type PrepareEncodeFunctionDataErrorType,\n type PrepareEncodeFunctionDataParameters,\n type PrepareEncodeFunctionDataReturnType,\n prepareEncodeFunctionData,\n} from './utils/abi/prepareEncodeFunctionData.js'\nexport {\n type EncodeFunctionResultErrorType,\n type EncodeFunctionResultParameters,\n type EncodeFunctionResultReturnType,\n encodeFunctionResult,\n} from './utils/abi/encodeFunctionResult.js'\nexport {\n type ParseEventLogsErrorType,\n type ParseEventLogsParameters,\n type ParseEventLogsReturnType,\n parseEventLogs,\n} from './utils/abi/parseEventLogs.js'\nexport {\n type FormattedTransaction,\n defineTransaction,\n type DefineTransactionErrorType,\n formatTransaction,\n type FormatTransactionErrorType,\n transactionType,\n} from './utils/formatters/transaction.js'\nexport {\n type FormattedTransactionReceipt,\n defineTransactionReceipt,\n type DefineTransactionReceiptErrorType,\n formatTransactionReceipt,\n type FormatTransactionReceiptErrorType,\n} from './utils/formatters/transactionReceipt.js'\nexport {\n type FormattedTransactionRequest,\n defineTransactionRequest,\n type DefineTransactionRequestErrorType,\n formatTransactionRequest,\n type FormatTransactionRequestErrorType,\n rpcTransactionType,\n} from './utils/formatters/transactionRequest.js'\nexport {\n type GetAbiItemErrorType,\n type GetAbiItemParameters,\n type GetAbiItemReturnType,\n getAbiItem,\n} from './utils/abi/getAbiItem.js'\nexport {\n type GetContractAddressOptions,\n type GetCreate2AddressOptions,\n type GetCreate2AddressErrorType,\n type GetCreateAddressOptions,\n type GetCreateAddressErrorType,\n getContractAddress,\n getCreate2Address,\n getCreateAddress,\n} from './utils/address/getContractAddress.js'\nexport {\n type GetSerializedTransactionType,\n type GetSerializedTransactionTypeErrorType,\n getSerializedTransactionType,\n} from './utils/transaction/getSerializedTransactionType.js'\nexport {\n type GetTransactionType,\n type GetTransactionTypeErrorType,\n getTransactionType,\n} from './utils/transaction/getTransactionType.js'\nexport {\n type HashDomainErrorType,\n type HashStructErrorType,\n type HashTypedDataErrorType,\n type HashTypedDataParameters,\n type HashTypedDataReturnType,\n hashDomain,\n hashStruct,\n hashTypedData,\n} from './utils/signature/hashTypedData.js'\nexport {\n type CompactSignatureToSignatureErrorType,\n compactSignatureToSignature,\n} from './utils/signature/compactSignatureToSignature.js'\nexport {\n /** @deprecated Use `ParseCompactSignatureErrorType`. */\n type ParseCompactSignatureErrorType as HexToCompactSignatureErrorType,\n /** @deprecated Use `parseCompactSignature`. */\n parseCompactSignature as hexToCompactSignature,\n type ParseCompactSignatureErrorType,\n parseCompactSignature,\n} from './utils/signature/parseCompactSignature.js'\nexport {\n /** @deprecated Use `ParseSignatureErrorType`. */\n type ParseSignatureErrorType as HexToSignatureErrorType,\n /** @deprecated Use `parseSignature`. */\n parseSignature as hexToSignature,\n type ParseSignatureErrorType,\n parseSignature,\n} from './utils/signature/parseSignature.js'\nexport {\n type RecoverAddressErrorType,\n type RecoverAddressParameters,\n type RecoverAddressReturnType,\n recoverAddress,\n} from './utils/signature/recoverAddress.js'\nexport {\n type RecoverMessageAddressErrorType,\n type RecoverMessageAddressParameters,\n type RecoverMessageAddressReturnType,\n recoverMessageAddress,\n} from './utils/signature/recoverMessageAddress.js'\nexport {\n type RecoverPublicKeyErrorType,\n type RecoverPublicKeyParameters,\n type RecoverPublicKeyReturnType,\n recoverPublicKey,\n} from './utils/signature/recoverPublicKey.js'\nexport {\n type RecoverTransactionAddressErrorType,\n type RecoverTransactionAddressParameters,\n type RecoverTransactionAddressReturnType,\n recoverTransactionAddress,\n} from './utils/signature/recoverTransactionAddress.js'\nexport {\n type RecoverTypedDataAddressErrorType,\n type RecoverTypedDataAddressParameters,\n type RecoverTypedDataAddressReturnType,\n recoverTypedDataAddress,\n} from './utils/signature/recoverTypedDataAddress.js'\nexport {\n type SignatureToCompactSignatureErrorType,\n signatureToCompactSignature,\n} from './utils/signature/signatureToCompactSignature.js'\nexport {\n /** @deprecated Use `SignatureToHexErrorType` instead. */\n type SerializeCompactSignatureErrorType as CompactSignatureToHexErrorType,\n /** @deprecated Use `serializeCompactSignature` instead. */\n serializeCompactSignature as compactSignatureToHex,\n type SerializeCompactSignatureErrorType,\n serializeCompactSignature,\n} from './utils/signature/serializeCompactSignature.js'\nexport {\n /** @deprecated Use `SignatureToHexErrorType` instead. */\n type SerializeSignatureErrorType as SignatureToHexErrorType,\n /** @deprecated Use `serializeSignature` instead. */\n serializeSignature as signatureToHex,\n type SerializeSignatureParameters,\n type SerializeSignatureReturnType,\n type SerializeSignatureErrorType,\n serializeSignature,\n} from './utils/signature/serializeSignature.js'\nexport {\n bytesToRlp,\n type BytesToRlpErrorType,\n hexToRlp,\n type HexToRlpErrorType,\n toRlp,\n type ToRlpErrorType,\n type ToRlpReturnType,\n} from './utils/encoding/toRlp.js'\nexport {\n type VerifyHashErrorType,\n type VerifyHashParameters,\n type VerifyHashReturnType,\n verifyHash,\n} from './utils/signature/verifyHash.js'\nexport {\n type VerifyMessageErrorType,\n type VerifyMessageParameters,\n type VerifyMessageReturnType,\n verifyMessage,\n} from './utils/signature/verifyMessage.js'\nexport {\n type VerifyTypedDataErrorType,\n type VerifyTypedDataParameters,\n type VerifyTypedDataReturnType,\n verifyTypedData,\n} from './utils/signature/verifyTypedData.js'\nexport {\n type ParseErc6492SignatureErrorType,\n type ParseErc6492SignatureParameters,\n type ParseErc6492SignatureReturnType,\n parseErc6492Signature,\n} from './utils/signature/parseErc6492Signature.js'\nexport {\n type IsErc6492SignatureErrorType,\n type IsErc6492SignatureParameters,\n type IsErc6492SignatureReturnType,\n isErc6492Signature,\n} from './utils/signature/isErc6492Signature.js'\nexport {\n type SerializeErc6492SignatureErrorType,\n type SerializeErc6492SignatureParameters,\n type SerializeErc6492SignatureReturnType,\n serializeErc6492Signature,\n} from './utils/signature/serializeErc6492Signature.js'\nexport {\n type AssertRequestErrorType,\n assertRequest,\n} from './utils/transaction/assertRequest.js'\nexport {\n type AssertTransactionEIP1559ErrorType,\n assertTransactionEIP1559,\n type AssertTransactionEIP2930ErrorType,\n assertTransactionEIP2930,\n type AssertTransactionLegacyErrorType,\n assertTransactionLegacy,\n} from './utils/transaction/assertTransaction.js'\nexport {\n type BoolToBytesErrorType,\n type BoolToBytesOpts,\n boolToBytes,\n type HexToBytesErrorType,\n type HexToBytesOpts,\n hexToBytes,\n type NumberToBytesErrorType,\n numberToBytes,\n type StringToBytesErrorType,\n type StringToBytesOpts,\n stringToBytes,\n type ToBytesErrorType,\n type ToBytesParameters,\n toBytes,\n} from './utils/encoding/toBytes.js'\nexport {\n type BoolToHexErrorType,\n type BoolToHexOpts,\n boolToHex,\n type BytesToHexErrorType,\n type BytesToHexOpts,\n bytesToHex,\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n type StringToHexErrorType,\n type StringToHexOpts,\n stringToHex,\n type ToHexErrorType,\n type ToHexParameters,\n toHex,\n} from './utils/encoding/toHex.js'\nexport {\n type BytesToBigIntErrorType,\n type BytesToBigIntOpts,\n bytesToBigInt,\n type BytesToBoolErrorType,\n type BytesToBoolOpts,\n bytesToBool,\n type BytesToNumberErrorType,\n type BytesToNumberOpts,\n bytesToNumber,\n type BytesToStringErrorType,\n type BytesToStringOpts,\n bytesToString,\n type FromBytesErrorType,\n type FromBytesParameters,\n fromBytes,\n} from './utils/encoding/fromBytes.js'\nexport {\n type CcipRequestParameters,\n type CcipRequestErrorType,\n ccipRequest,\n /** @deprecated Use `ccipRequest`. */\n ccipRequest as ccipFetch,\n type OffchainLookupErrorType,\n offchainLookup,\n offchainLookupAbiItem,\n offchainLookupSignature,\n} from './utils/ccip.js'\nexport {\n type BlobsToCommitmentsErrorType,\n type BlobsToCommitmentsParameters,\n type BlobsToCommitmentsReturnType,\n blobsToCommitments,\n} from './utils/blob/blobsToCommitments.js'\nexport {\n type CommitmentToVersionedHashErrorType,\n type CommitmentToVersionedHashParameters,\n type CommitmentToVersionedHashReturnType,\n commitmentToVersionedHash,\n} from './utils/blob/commitmentToVersionedHash.js'\nexport {\n type CommitmentsToVersionedHashesErrorType,\n type CommitmentsToVersionedHashesParameters,\n type CommitmentsToVersionedHashesReturnType,\n commitmentsToVersionedHashes,\n} from './utils/blob/commitmentsToVersionedHashes.js'\nexport {\n type SidecarsToVersionedHashesErrorType,\n type SidecarsToVersionedHashesParameters,\n type SidecarsToVersionedHashesReturnType,\n sidecarsToVersionedHashes,\n} from './utils/blob/sidecarsToVersionedHashes.js'\nexport {\n type blobsToProofsErrorType,\n type blobsToProofsParameters,\n type blobsToProofsReturnType,\n blobsToProofs,\n} from './utils/blob/blobsToProofs.js'\nexport {\n type FromBlobsErrorType,\n type FromBlobsParameters,\n type FromBlobsReturnType,\n fromBlobs,\n} from './utils/blob/fromBlobs.js'\nexport {\n type ToBlobSidecarsErrorType,\n type ToBlobSidecarsParameters,\n type ToBlobSidecarsReturnType,\n toBlobSidecars,\n} from './utils/blob/toBlobSidecars.js'\nexport {\n type ToBlobsErrorType,\n type ToBlobsParameters,\n type ToBlobsReturnType,\n toBlobs,\n} from './utils/blob/toBlobs.js'\nexport {\n type DefineKzgErrorType,\n type DefineKzgParameters,\n type DefineKzgReturnType,\n defineKzg,\n} from './utils/kzg/defineKzg.js'\nexport {\n type SetupKzgErrorType,\n type SetupKzgParameters,\n type SetupKzgReturnType,\n setupKzg,\n} from './utils/kzg/setupKzg.js'\nexport {\n type ConcatBytesErrorType,\n type ConcatErrorType,\n type ConcatHexErrorType,\n type ConcatReturnType,\n concat,\n concatBytes,\n concatHex,\n} from './utils/data/concat.js'\nexport {\n type AssertCurrentChainErrorType,\n type AssertCurrentChainParameters,\n assertCurrentChain,\n} from './utils/chain/assertCurrentChain.js'\nexport { defineChain } from './utils/chain/defineChain.js'\nexport {\n type ExtractChainErrorType,\n type ExtractChainParameters,\n type ExtractChainReturnType,\n extractChain,\n} from './utils/chain/extractChain.js'\nexport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from './utils/chain/getChainContractAddress.js'\nexport {\n type EncodePackedErrorType,\n encodePacked,\n} from './utils/abi/encodePacked.js'\nexport {\n type WithRetryErrorType,\n withRetry,\n} from './utils/promise/withRetry.js'\nexport {\n type WithTimeoutErrorType,\n withTimeout,\n} from './utils/promise/withTimeout.js'\nexport {\n type FormatEtherErrorType,\n formatEther,\n} from './utils/unit/formatEther.js'\nexport {\n type FormatGweiErrorType,\n formatGwei,\n} from './utils/unit/formatGwei.js'\nexport {\n type FormatUnitsErrorType,\n formatUnits,\n} from './utils/unit/formatUnits.js'\nexport {\n type FromHexErrorType,\n fromHex,\n type HexToBigIntErrorType,\n hexToBigInt,\n type HexToBoolErrorType,\n hexToBool,\n type HexToNumberErrorType,\n hexToNumber,\n type HexToStringErrorType,\n hexToString,\n} from './utils/encoding/fromHex.js'\nexport {\n type FromRlpErrorType,\n type FromRlpReturnType,\n fromRlp,\n} from './utils/encoding/fromRlp.js'\nexport {\n type ChecksumAddressErrorType,\n type GetAddressErrorType,\n checksumAddress,\n getAddress,\n} from './utils/address/getAddress.js'\nexport {\n type GetContractErrorReturnType,\n getContractError,\n} from './utils/errors/getContractError.js'\nexport {\n type ToEventSelectorErrorType,\n toEventSelector,\n /** @deprecated use `ToEventSelectorErrorType`. */\n type ToEventSelectorErrorType as GetEventSelectorErrorType,\n /** @deprecated use `toEventSelector`. */\n toEventSelector as getEventSelector,\n} from './utils/hash/toEventSelector.js'\nexport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n /** @deprecated use `ToFunctionSelectorErrorType`. */\n type ToFunctionSelectorErrorType as GetFunctionSelectorErrorType,\n /** @deprecated use `toFunctionSelector`. */\n toFunctionSelector as getFunctionSelector,\n} from './utils/hash/toFunctionSelector.js'\nexport {\n type ToEventSignatureErrorType,\n toEventSignature,\n /** @deprecated use `ToEventSignatureErrorType`. */\n type ToEventSignatureErrorType as GetEventSignatureErrorType,\n /** @deprecated use `toEventSignature`. */\n toEventSignature as getEventSignature,\n} from './utils/hash/toEventSignature.js'\nexport {\n type ToFunctionSignatureErrorType,\n toFunctionSignature,\n /** @deprecated use `ToFunctionSignatureErrorType`. */\n type ToFunctionSignatureErrorType as GetFunctionSignatureErrorType,\n /** @deprecated use `toFunctionSignature`. */\n toFunctionSignature as getFunctionSignature,\n} from './utils/hash/toFunctionSignature.js'\nexport {\n type ToEventHashErrorType,\n toEventHash,\n} from './utils/hash/toEventHash.js'\nexport {\n type ToFunctionHashErrorType,\n toFunctionHash,\n} from './utils/hash/toFunctionHash.js'\nexport {\n type HashMessageErrorType,\n hashMessage,\n} from './utils/signature/hashMessage.js'\nexport {\n type ToPrefixedMessageErrorType,\n toPrefixedMessage,\n} from './utils/signature/toPrefixedMessage.js'\nexport {\n type IsAddressOptions,\n type IsAddressErrorType,\n isAddress,\n} from './utils/address/isAddress.js'\nexport {\n type IsAddressEqualReturnType,\n type IsAddressEqualErrorType,\n isAddressEqual,\n} from './utils/address/isAddressEqual.js'\nexport { type IsBytesErrorType, isBytes } from './utils/data/isBytes.js'\nexport { type IsHashErrorType, isHash } from './utils/hash/isHash.js'\nexport { type IsHexErrorType, isHex } from './utils/data/isHex.js'\nexport {\n type Keccak256Hash,\n type Keccak256ErrorType,\n keccak256,\n} from './utils/hash/keccak256.js'\nexport {\n type Sha256Hash,\n type Sha256ErrorType,\n sha256,\n} from './utils/hash/sha256.js'\nexport {\n type Ripemd160Hash,\n type Ripemd160ErrorType,\n ripemd160,\n} from './utils/hash/ripemd160.js'\nexport {\n type PadBytesErrorType,\n type PadErrorType,\n type PadHexErrorType,\n type PadReturnType,\n pad,\n padBytes,\n padHex,\n} from './utils/data/pad.js'\nexport {\n type ParseEtherErrorType,\n parseEther,\n} from './utils/unit/parseEther.js'\nexport { type ParseGweiErrorType, parseGwei } from './utils/unit/parseGwei.js'\nexport {\n type ParseTransactionErrorType,\n type ParseTransactionReturnType,\n parseTransaction,\n} from './utils/transaction/parseTransaction.js'\nexport {\n type ParseUnitsErrorType,\n parseUnits,\n} from './utils/unit/parseUnits.js'\nexport {\n type SerializeAccessListErrorType,\n serializeAccessList,\n} from './utils/transaction/serializeAccessList.js'\nexport {\n serializeTransaction,\n type SerializeTransactionErrorType,\n type SerializedTransactionReturnType,\n type SerializeTransactionFn,\n} from './utils/transaction/serializeTransaction.js'\nexport { type SizeErrorType, size } from './utils/data/size.js'\nexport {\n type SliceBytesErrorType,\n type SliceErrorType,\n type SliceHexErrorType,\n slice,\n sliceBytes,\n sliceHex,\n} from './utils/data/slice.js'\nexport { type StringifyErrorType, stringify } from './utils/stringify.js'\nexport {\n type TrimErrorType,\n type TrimReturnType,\n trim,\n} from './utils/data/trim.js'\nexport {\n type DomainSeparatorErrorType,\n type GetTypesForEIP712DomainErrorType,\n type SerializeTypedDataErrorType,\n type ValidateTypedDataErrorType,\n serializeTypedData,\n validateTypedData,\n domainSeparator,\n getTypesForEIP712Domain,\n} from './utils/typedData.js'\nexport {\n type CreateNonceManagerParameters,\n type NonceManager,\n type NonceManagerSource,\n createNonceManager,\n nonceManager,\n} from './utils/nonceManager.js'\nexport type {\n RpcEstimateUserOperationGasReturnType,\n RpcGetUserOperationByHashReturnType,\n RpcUserOperation,\n RpcUserOperationReceipt,\n RpcUserOperationRequest,\n} from './account-abstraction/types/rpc.js'\n", "import {\n\tAddress,\n\terc20Abi,\n\tformatUnits,\n\tHash,\n\tparseUnits,\n\tPublicClient,\n\tWalletClient,\n} from 'viem';\n\nexport class TokenSender {\n\tprivate walletClient: WalletClient;\n\tprivate publicClient: PublicClient;\n\n\tconstructor(walletClient: WalletClient, publicClient: PublicClient) {\n\t\tthis.walletClient = walletClient;\n\t\tthis.publicClient = publicClient;\n\t}\n\n\tpublic async sendToken(\n\t\ttokenAddress: Address,\n\t\tamount: string,\n\t\trecipient: Address\n\t): Promise {\n\t\tconst [tokenDecimals, tokenSymbol, tokenBalance] = await Promise.all([\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'decimals',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'symbol',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\targs: [this.walletClient.account?.address!],\n\t\t\t}),\n\t\t]);\n\n\t\tconsole.log(\n\t\t\t`Current ${tokenSymbol} balance ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t);\n\n\t\tif (parseUnits(amount, tokenDecimals) > tokenBalance) {\n\t\t\tthrow new Error(\n\t\t\t\t`Insufficient balance. Required: ${amount}, available: ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t\t);\n\t\t}\n\n\t\tconst txHash = await this.walletClient.writeContract({\n\t\t\taddress: tokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: 'transfer',\n\t\t\targs: [recipient, parseUnits(amount, tokenDecimals)],\n\t\t\tchain: this.walletClient.chain,\n\t\t\taccount: this.walletClient.account!,\n\t\t});\n\n\t\tconst { status } = await this.publicClient.waitForTransactionReceipt({\n\t\t\thash: txHash,\n\t\t});\n\n\t\tif (status !== 'success') {\n\t\t\tthrow new Error(`Error sending token. Hash: ${txHash}`);\n\t\t}\n\n\t\tconsole.log(`Token successfully sent. Hash: ${txHash}`);\n\n\t\treturn txHash;\n\t}\n}\n", "import { PublicClient } from 'viem';\n\ntype GasData = {\n\tgasPrice?: string;\n\tmaxFeePerGas?: string;\n\tmaxPriorityFeePerGas?: string;\n};\n\nexport async function getActualGasData(\n\tpublicClient: PublicClient\n): Promise {\n\tconst block = await publicClient.getBlock();\n\n\tconst isEIP1559 = !!block.baseFeePerGas;\n\n\tlet gasPrice = 0n;\n\tlet maxPriorityFeePerGas = 0n;\n\ttry {\n\t\tif (isEIP1559) {\n\t\t\tconst { maxFeePerGas } = await publicClient.estimateFeesPerGas();\n\t\t\tgasPrice = maxFeePerGas;\n\t\t\tmaxPriorityFeePerGas =\n\t\t\t\tawait publicClient.estimateMaxPriorityFeePerGas();\n\t\t} else {\n\t\t\tgasPrice = await publicClient.getGasPrice();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Error getting actual gas data:', error);\n\t\treturn {\n\t\t\tgasPrice: '0',\n\t\t\tmaxFeePerGas: '0',\n\t\t\tmaxPriorityFeePerGas: '0',\n\t\t};\n\t}\n\n\tconst gasDataLegacy = {\n\t\tgasPrice: gasPrice.toString(),\n\t};\n\n\tconst gasDataEIP1559 = {\n\t\tmaxFeePerGas: gasPrice.toString(),\n\t\tmaxPriorityFeePerGas: maxPriorityFeePerGas.toString(),\n\t};\n\n\tconst gasData: GasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy;\n\n\treturn gasData;\n}\n", "import { Deployment } from 'hardhat-deploy/types';\nimport { HardhatRuntimeEnvironment } from 'hardhat/types';\nimport { PublicClient } from 'viem';\nimport { getActualGasData } from './getActualGasData';\n\ntype HardhatDeployWrapperArgs = {\n\thre: HardhatRuntimeEnvironment;\n\targs: any[];\n\tpublicClient: PublicClient;\n\tproxy?: boolean;\n\tgasLimit?: number;\n\tlog?: boolean;\n\tlibraries?: {\n\t\t[key: string]: `0x${string}`;\n\t};\n\tskipIfAlreadyDeployed: boolean;\n};\n\nexport async function hardhatDeployWrapper(\n\tcontractName: string,\n\t{\n\t\thre,\n\t\targs,\n\t\tpublicClient,\n\t\tproxy = false,\n\t\tgasLimit,\n\t\tlog = false,\n\t\tlibraries,\n\t\tskipIfAlreadyDeployed = false,\n\t}: HardhatDeployWrapperArgs\n): Promise {\n\tlet actualDeployer;\n\n\tif (proxy) {\n\t\tconst { proxyDeployer } = await hre.getNamedAccounts();\n\t\tactualDeployer = proxyDeployer;\n\t} else {\n\t\tconst { deployer } = await hre.getNamedAccounts();\n\t\tactualDeployer = deployer;\n\t}\n\n\tconst { deploy } = hre.deployments;\n\n\tconst nonce = await publicClient.getTransactionCount({\n\t\taddress: actualDeployer as `0x${string}`,\n\t});\n\n\tconst gasData = await getActualGasData(publicClient);\n\tconst waitConfirmations = hre.network.name.startsWith('ethereum') ? 1 : 3;\n\n\tif (log) {\n\t\tconsole.log(\n\t\t\t`\\x1b[34m[hardhatDeployWrapper]\\x1b[0m\\x1b[35m[args]\\x1b[0m`,\n\t\t\t{\n\t\t\t\tfrom: actualDeployer,\n\t\t\t\targs,\n\t\t\t\tnonce,\n\t\t\t\tgasLimit: gasLimit ? gasLimit : 'auto',\n\t\t\t\tgasData,\n\t\t\t\twaitConfirmations,\n\t\t\t}\n\t\t);\n\t}\n\n\tlet deployment: Deployment;\n\ttry {\n\t\tconsole.log('Starting deployment of:', contractName);\n\t\tdeployment = await deploy(contractName, {\n\t\t\tfrom: actualDeployer,\n\t\t\targs: args,\n\t\t\tlog: true,\n\t\t\tautoMine: true,\n\t\t\tnonce,\n\t\t\twaitConfirmations,\n\t\t\t...(gasLimit ? { gasLimit } : {}),\n\t\t\t...gasData,\n\t\t\t...(libraries ? { libraries } : {}),\n\t\t\tskipIfAlreadyDeployed,\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error deploying contract:', error);\n\t\tthrow error;\n\t}\n\n\treturn deployment;\n}\n"], - "mappings": "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", - "names": [] + "sources": ["../src/index.ts", "../src/types/networkTypes.ts", "../src/utils/createViemChain.ts", "../src/utils/getEnvVar.ts", "../src/utils/log.ts", "../src/utils/formatting.ts", "../src/networks/getNetworkEnvKey.ts", "../src/utils/getTrezorDeployEnabled.ts", "../src/utils/createWalletGetter.ts", "../src/utils/ethersSignerCallContract.ts", "../src/utils/compileContracts.ts", "../src/utils/localhostViemChain.ts", "../src/utils/extractProxyAdminAddress.ts", "../src/utils/createEnvUpdater.ts", "../src/utils/getActualGasData.ts", "../src/utils/getViemClients.ts", "../src/constants/conceroNetworks.ts", "../src/utils/getGasParameters.ts", "../src/constants/config.ts", "../src/trezor/getTrezorAddress.ts", "../src/trezor/initTrezorOnce.ts", "../src/trezor/trezorSendTx.ts", "../src/trezor/trezorDeployContract.ts", "../src/trezor/trezorWriteContract.ts", "../src/deploy/GenericDeploy.ts", "../src/tokens/TokenSender.ts"], + "sourcesContent": ["// Types\nexport * from './types';\n\n// Utils\nexport * from './utils';\n\n// Networks\nexport * from './networks';\n\n// Constants\nexport {\n\tconceroNetworks,\n\tmainnetNetworks,\n\ttestnetNetworks,\n\ttype ConceroMainnetNetworkNames,\n\ttype ConceroTestnetNetworkNames,\n} from './constants/conceroNetworks';\nexport { config } from './constants/config';\n\n// Deploy\nexport { genericDeploy, type IDeployResult, type IGenericDeployParams, type ITxParams } from './deploy/GenericDeploy';\n\n// Tokens\nexport { TokenSender } from './tokens/TokenSender';\n\nexport * from './trezor';\n", "import { type NetworkType } from './ConceroNetwork';\n\nexport const networkTypes: Record = {\n\tmainnet: 'mainnet',\n\ttestnet: 'testnet',\n\tlocalhost: 'localhost',\n};\n", "import { defineChain } from 'viem';\n\nimport { type ChainDefinition } from '../types';\n\nexport function createViemChain(\n\tchainDefinition: ChainDefinition\n): ReturnType {\n\treturn defineChain({\n\t\tid: chainDefinition.id,\n\t\tname: chainDefinition.name,\n\t\tnativeCurrency: {\n\t\t\tdecimals: 18,\n\t\t\tname: 'eth',\n\t\t\tsymbol: 'eth',\n\t\t},\n\t\trpcUrls: {\n\t\t\tdefault: { http: chainDefinition.rpcUrls },\n\t\t},\n\t\tblockExplorers: chainDefinition.blockExplorer\n\t\t\t? {\n\t\t\t\tdefault: {\n\t\t\t\t\tname: chainDefinition.blockExplorer.name,\n\t\t\t\t\turl: chainDefinition.blockExplorer.url,\n\t\t\t\t},\n\t\t\t}\n\t\t\t: undefined,\n\t\ttestnet: chainDefinition.isTestnet,\n\t});\n}\n", "import process from 'process';\nimport { Address } from 'viem';\n\nimport { warn } from './log';\nimport { shorten } from './formatting';\nimport { getNetworkEnvKey } from '../networks';\n\nexport function getEnvVar(key: string, defaultValue?: string): string {\n\tconst value = process.env[key];\n\tif (value === undefined || value === '') {\n\t\tif (defaultValue !== undefined) return defaultValue;\n\t\twarn(`Missing env variable: ${key}`, 'getEnvVar');\n\t\treturn '';\n\t}\n\n\treturn value;\n}\n\nexport interface EnvAddressConfig> {\n\tprefixes: TPrefixes;\n}\n\nexport function createEnvAddressGetter>(\n\tconfig: EnvAddressConfig,\n) {\n\tfunction getEnvAddress(\n\t\tprefix: keyof TPrefixes,\n\t\tnetworkName?: string,\n\t): [Address, string] {\n\t\tconst searchKey = networkName\n\t\t\t? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkName)}`\n\t\t\t: config.prefixes[prefix];\n\n\t\tconst value = getEnvVar(searchKey) as Address;\n\t\tconst friendlyName = `${String(prefix)}(${shorten(value)})`\n\n\t\treturn [value, friendlyName];\n\t}\n\n\treturn { getEnvAddress };\n}\n", "const networkColors: Record = {\n\tethereum: '\\x1b[30m', // grey\n\tarbitrum: '\\x1b[34m', // blue\n\tpolygon: '\\x1b[35m', // magenta\n\tavalanche: '\\x1b[31m', // red\n\tbase: '\\x1b[36m', // cyan\n\tethereumSepolia: '\\x1b[30m', // grey\n\tarbitrumSepolia: '\\x1b[34m', // blue\n\toptimismSepolia: '\\x1b[31m', // red\n\tpolygonAmoy: '\\x1b[35m', // magenta\n\tavalancheFuji: '\\x1b[31m', // red\n\tbaseSepolia: '\\x1b[36m', // cyan\n\thardhat: '\\x1b[32m', // green\n\tlocalhost: '\\x1b[32m', // green\n};\nconst reset = '\\x1b[0m';\n\nexport function log(message: any, functionName: string, networkName?: string) {\n\tconst greenFill = '\\x1b[32m';\n\tconst network = networkName ? `\\x1b[35m[${networkName}]${reset}` : '';\n\n\tconsole.log(`${network}${greenFill}[${functionName}]${reset}`, message);\n}\n\nexport function warn(message: any, functionName: string) {\n\tconst yellowFill = '\\x1b[33m';\n\n\tconsole.log(`${yellowFill}[${functionName}]${reset}`, message);\n}\n\nexport function err(message: any, functionName: string, networkName?: string) {\n\tconst redFill = '\\x1b[31m';\n\tconst network = networkName\n\t\t? `${networkColors[networkName]}[${networkName}]${reset}`\n\t\t: '';\n\n\tconsole.log(\n\t\t`${network}${redFill}[${functionName}] ERROR:${reset}`,\n\t\tmessage\n\t);\n}\n\nexport default log;\n", "import { type Address } from \"viem\";\n\nexport function shorten(address: Address) {\n\treturn `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\nexport function formatGas(gasAmountWei: bigint) {\n\t// splits gas number with commas like so: 1,000,000\n\treturn gasAmountWei.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n", "/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkEnvKey(networkName: string): string {\n if (!networkName) {\n throw new Error('Network name must be provided');\n }\n return camelCaseToCapsSnakeCase(networkName);\n}\n\n/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkKey(NETWORK_NAME: string): string {\n if (!NETWORK_NAME) {\n throw new Error('Network name must be provided');\n }\n return capsSnakeCaseToCamelCase(NETWORK_NAME);\n}\n\n/**\n * Converts a string from CAPS_SNAKE_CASE to camelCase\n *\n * @param snakeCaseString The string in CAPS_SNAKE_CASE format\n * @returns The string converted to camelCase format\n */\nexport function capsSnakeCaseToCamelCase(snakeCaseString: string): string {\n if (!snakeCaseString) {\n throw new Error('String must be provided');\n }\n\n return snakeCaseString\n .toLowerCase()\n .replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n}\n\n/**\n * Converts a string from camelCase to CAPS_SNAKE_CASE\n *\n * @param camelCaseString The string in camelCase format\n * @returns The string converted to CAPS_SNAKE_CASE format\n */\nexport function camelCaseToCapsSnakeCase(camelCaseString: string): string {\n if (!camelCaseString) {\n throw new Error('String must be provided');\n }\n\n return camelCaseString.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n}\n\nexport function getNetworkName(networkEnvKey: string): string {\n if (!networkEnvKey) {\n throw new Error('Network name must be provided');\n }\n\n return networkEnvKey\n .toLowerCase()\n .split('_')\n .map((word, index) =>\n index === 0 ? word : word[0].toUpperCase() + word.slice(1)\n )\n .join('');\n}\n", "import { getEnvVar } from './getEnvVar';\n\nexport const getTrezorDeployEnabled = () =>\n\tgetEnvVar('TREZOR_DEPLOY_ENABLED', 'false') === 'true';\n", "import { type NetworkType } from '../types';\nimport { warn } from './log';\n\nexport interface BaseAccountTypePrefixes extends Record {\n\tproxyDeployer: 'PROXY_DEPLOYER';\n\tdeployer: 'DEPLOYER';\n}\n\nexport const baseAccountTypePrefixes: BaseAccountTypePrefixes = {\n\tproxyDeployer: 'PROXY_DEPLOYER',\n\tdeployer: 'DEPLOYER'\n};\n\nexport interface WalletGetterConfig> {\n\taccountTypePrefixes: TPrefixes;\n}\n\nexport function createWalletGetter>(\n\tconfig: WalletGetterConfig,\n) {\n\tfunction getWallet(\n\t\tchainType: NetworkType,\n\t\taccountType: keyof TPrefixes,\n\t\twalletType: 'privateKey' | 'address',\n\t) {\n\t\tconst prefix = config.accountTypePrefixes[accountType];\n\t\tif (!prefix) {\n\t\t\tthrow new Error(`Unknown account type: ${String(accountType)}`);\n\t\t}\n\n\t\tconst walletKey = walletType === 'privateKey' ? 'PRIVATE_KEY' : 'ADDRESS';\n\t\tconst envKey = `${chainType.toUpperCase()}_${prefix}_${walletKey}`;\n\t\tconst walletValue = process.env[envKey];\n\n\t\tif (!walletValue) {\n\t\t\twarn(`Missing env variable: ${envKey}`, 'getWallet');\n\t\t}\n\n\t\treturn walletValue;\n\t}\n\n\treturn { getWallet };\n}\n\nexport const { getWallet } = createWalletGetter({\n\taccountTypePrefixes: baseAccountTypePrefixes,\n});\n", "import { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport { Address, Hash } from \"viem\";\n\nimport { log } from \"./log\";\n\nexport const ethersSignerCallContract = async (\n\thre: HardhatRuntimeEnvironment,\n\tcontract: Address,\n\tabi: any[],\n\tfunctionName: string,\n\t...functionArgs: any[]\n) => {\n\tconst [ethersSigner] = await hre.ethers.getSigners();\n\tconst ethersContract = new hre.ethers.Contract(contract, abi, ethersSigner);\n\tconst unsignedTx = await ethersContract[functionName].populateTransaction(...functionArgs);\n\n\tlog(\n\t\t`Size: ${(unsignedTx.data.length - 2) / 2}, Input data: ${unsignedTx.data}, Address: ${unsignedTx.to}`,\n\t\tfunctionName,\n\t\thre.network.name,\n\t);\n\n\treturn (await ethersSigner.sendTransaction(unsignedTx)).hash as Hash;\n};\n", "/*\nhardhat compile\n --concurrency Number of compilation jobs executed in parallel. Defaults to the number of CPU cores - 1 (default: 9)\n --force Force compilation ignoring cache\n --no-size-contracts Don't size contracts after running this task, even if runOnCompile option is enabled\n --no-typechain Skip Typechain compilation\n --quiet Makes the compilation process less verbose\n */\nimport { execSync } from \"child_process\";\n\ninterface HardhatCompileParams {\n\tconcurrency?: number;\n\tforce?: boolean;\n\tnoSizeContracts?: boolean;\n\tnoTypechain?: boolean;\n\tquiet?: boolean;\n}\n\nexport function compileContracts({ quiet = true, force = false }: HardhatCompileParams) {\n\tconst packageManager = process.env[\"PACKAGE_MANAGER\"] || \"yarn\";\n\tconst command = `${packageManager} compile`;\n\tconst args = [];\n\t// if (concurrency) args.push(`--concurrency ${concurrency}`);\n\t// if (noSizeContracts) args.push(\"--no-size-contracts\");\n\t// if (noTypechain) args.push(\"--no-typechain\");\n\tif (quiet) args.push(\"--quiet\");\n\tif (force) args.push(\"--force\");\n\texecSync(`${command} ${args.join(\" \")}`, { stdio: \"inherit\" });\n}\n", "import { defineChain } from \"viem\";\n\nexport const localhostViemChain = defineChain({\n\tid: Number(process.env.LOCALHOST_FORK_CHAIN_ID),\n\tname: \"localhost\",\n\tnativeCurrency: {\n\t\tdecimals: 18,\n\t\tname: \"eth\",\n\t\tsymbol: \"eth\",\n\t},\n\trpcUrls: {\n\t\tdefault: { http: [process.env.LOCALHOST_RPC_URL ?? \"http://127.0.0.1:8545\"] },\n\t},\n\ttestnet: true,\n});\n\nexport const hardhatViemChain = defineChain({\n\tid: Number(process.env.HARDHAT_CHAIN_ID),\n\tname: \"hardhat\",\n\tnativeCurrency: {\n\t\tdecimals: 18,\n\t\tname: \"eth\",\n\t\tsymbol: \"eth\",\n\t},\n\trpcUrls: {\n\t\tdefault: { http: [process.env.HARDHAT_RPC_URL ?? \"http://127.0.0.1:8545\"] },\n\t},\n\ttestnet: true,\n});\n", "import { ethers } from 'ethers';\nimport { Log } from 'viem';\nimport { IDeployResult } from '../deploy/GenericDeploy';\n\nexport function extractProxyAdminAddress(receipt: IDeployResult['receipt']): string {\n\tconst adminChangedTopic = ethers.id('AdminChanged(address,address)');\n\tconst adminChangedLog = receipt.logs.find((log: ethers.Log | Log) => log.topics[0] === adminChangedTopic);\n\n\tif (!adminChangedLog) throw new Error('AdminChanged(address,address) log not found');\n\n\tconst abiCoder = ethers.AbiCoder.defaultAbiCoder();\n\tconst [, newAdmin] = abiCoder.decode(['address', 'address'], adminChangedLog.data);\n\treturn newAdmin;\n}\n", "import { existsSync, readFileSync, writeFileSync } from \"fs\";\nimport path from \"path\";\nimport { getNetworkEnvKey } from \"../networks/getNetworkEnvKey\";\nimport log from \"./log\";\n\nexport interface EnvUpdaterConfig> {\n\tprefixes: TPrefixes;\n\tbasePath: string;\n}\n\nexport function createEnvUpdater<\n\tTPrefixes extends Record,\n\tTEnvFileName extends string,\n>(config: EnvUpdaterConfig) {\n\tfunction updateEnvVariable(\n\t\tkey: string,\n\t\tnewValue: string,\n\t\tenvFileName: TEnvFileName,\n\t): void {\n\t\tconst filePath = path.join(config.basePath, `.env.${envFileName}`);\n\n\t\tif (!existsSync(filePath)) {\n\t\t\tthrow new Error(`File not found: ${filePath}`);\n\t\t}\n\n\t\tconst envContents = readFileSync(filePath, \"utf8\");\n\t\tlet lines = envContents.split(/\\r?\\n/);\n\n\t\tconst keyExists = lines.some(line => line.startsWith(`${key}=`));\n\n\t\tif (!keyExists) {\n\t\t\tlog(\n\t\t\t\t`Key ${key} not found in .env file. Adding to ${filePath}`,\n\t\t\t\t\"updateEnvVariable\",\n\t\t\t);\n\t\t\tlines.push(`${key}=${newValue}`);\n\t\t} else {\n\t\t\tlines = lines.map(line => {\n\t\t\t\tconst [currentKey] = line.split(\"=\");\n\t\t\t\tif (currentKey === key) {\n\t\t\t\t\treturn `${key}=${newValue}`;\n\t\t\t\t}\n\t\t\t\treturn line;\n\t\t\t});\n\t\t}\n\n\t\twriteFileSync(filePath, lines.join(\"\\n\"));\n\t\tprocess.env[key] = newValue;\n\t}\n\n\tfunction updateEnvAddress(\n\t\tprefix: keyof TPrefixes,\n\t\tnewValue: string,\n\t\tenvFileName: TEnvFileName,\n\t\tnetworkPostfix?: string,\n\t): void {\n\t\tconst searchKey = networkPostfix\n\t\t\t? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkPostfix)}`\n\t\t\t: String(config.prefixes[prefix]);\n\n\t\tupdateEnvVariable(searchKey, newValue, envFileName);\n\t}\n\n\treturn { updateEnvVariable, updateEnvAddress };\n}\n", "import { PublicClient } from 'viem';\n\ntype GasData = {\n\tgasPrice?: string;\n\tmaxFeePerGas?: string;\n\tmaxPriorityFeePerGas?: string;\n};\n\nexport async function getActualGasData(\n\tpublicClient: PublicClient\n): Promise {\n\tconst block = await publicClient.getBlock();\n\n\tconst isEIP1559 = !!block.baseFeePerGas;\n\n\tlet gasPrice = 0n;\n\tlet maxPriorityFeePerGas = 0n;\n\ttry {\n\t\tif (isEIP1559) {\n\t\t\tconst { maxFeePerGas } = await publicClient.estimateFeesPerGas();\n\t\t\tgasPrice = maxFeePerGas;\n\t\t\tmaxPriorityFeePerGas =\n\t\t\t\tawait publicClient.estimateMaxPriorityFeePerGas();\n\t\t} else {\n\t\t\tgasPrice = await publicClient.getGasPrice();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Error getting actual gas data:', error);\n\t\treturn {\n\t\t\tgasPrice: '0',\n\t\t\tmaxFeePerGas: '0',\n\t\t\tmaxPriorityFeePerGas: '0',\n\t\t};\n\t}\n\n\tconst gasDataLegacy = {\n\t\tgasPrice: gasPrice.toString(),\n\t};\n\n\tconst gasDataEIP1559 = {\n\t\tmaxFeePerGas: gasPrice.toString(),\n\t\tmaxPriorityFeePerGas: maxPriorityFeePerGas.toString(),\n\t};\n\n\tconst gasData: GasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy;\n\n\treturn gasData;\n}\n", "import {\n\tChain,\n\tcreatePublicClient,\n\tcreateTestClient,\n\tcreateWalletClient,\n\tfallback,\n\thttp,\n\tnonceManager,\n\tpublicActions,\n\ttype PublicClient,\n\ttype TestClient,\n\twalletActions,\n\ttype WalletClient,\n} from 'viem';\nimport { type PrivateKeyAccount, privateKeyToAccount } from 'viem/accounts';\n\nimport { conceroNetworks } from '../constants/conceroNetworks';\nimport { type ConceroNetwork, type NetworkType } from '../types';\nimport { type BaseAccountTypePrefixes, getWallet } from '../utils';\nimport { localhostViemChain } from './localhostViemChain';\n\nfunction getClients(\n\tviemChain: Chain,\n\turl: string | undefined,\n\taccount: PrivateKeyAccount = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`)\n): {\n\twalletClient: WalletClient;\n\tpublicClient: PublicClient;\n\taccount: PrivateKeyAccount;\n} {\n\tconst publicClient = createPublicClient({\n\t\ttransport: http(url),\n\t\tchain: viemChain,\n\t});\n\tconst walletClient = createWalletClient({\n\t\ttransport: http(url),\n\t\tchain: viemChain,\n\t\taccount,\n\t});\n\n\treturn { walletClient, publicClient, account };\n}\n\nexport type ExtendedTestClient = TestClient & WalletClient & PublicClient;\n\nfunction getTestClient(account: PrivateKeyAccount): ExtendedTestClient {\n\tconst testClient = createTestClient({\n\t\tchain: localhostViemChain,\n\t\tmode: 'hardhat',\n\t\ttransport: http(),\n\t\taccount,\n\t})\n\t\t.extend(publicActions)\n\t\t.extend(walletActions);\n\n\treturn testClient as unknown as ExtendedTestClient;\n}\n\nfunction getFallbackClients(\n\tchain: ConceroNetwork,\n\taccount?: PrivateKeyAccount\n): {\n\twalletClient: WalletClient;\n\tpublicClient: PublicClient;\n\taccount: PrivateKeyAccount;\n} {\n\tif (!account) {\n\t\tswitch (chain.type) {\n\t\t\tcase 'mainnet':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.MAINNET_DEPLOYER_PRIVATE_KEY}`);\n\t\t\t\tbreak;\n\t\t\tcase 'testnet':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`, {\n\t\t\t\t\tnonceManager: nonceManager,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'localhost':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.LOCALHOST_DEPLOYER_PRIVATE_KEY}`);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported chain type: ${chain.type}`);\n\t\t}\n\t}\n\n\tconst { viemChain, name } = chain;\n\n\tif (!conceroNetworks[name].rpcUrls.length) {\n\t\tthrow new Error(`No URLs configured for chain: ${name}`);\n\t}\n\n\tconst transport = fallback(\n\t\tconceroNetworks[name].rpcUrls.map((url) => http(url)),\n\t\t{\n\t\t\tretryCount: 3,\n\t\t}\n\t);\n\tconst publicClient = createPublicClient({ transport, chain: viemChain });\n\tconst walletClient = createWalletClient({\n\t\ttransport,\n\t\tchain: viemChain,\n\t\taccount,\n\t});\n\n\treturn { walletClient, publicClient, account };\n}\n\nfunction getViemAccount(chainType: NetworkType, accountType: keyof BaseAccountTypePrefixes) {\n\tconst privateKey = `0x${getWallet(chainType, accountType, 'privateKey')}`;\n\n\treturn privateKeyToAccount(privateKey as `0x${string}`, {\n\t\tnonceManager: nonceManager,\n\t});\n}\n\nexport interface ViemAccountGetterConfig> {\n\taccountTypePrefixes: TPrefixes;\n\tgetWallet: (\n\t\tchainType: NetworkType,\n\t\taccountType: keyof TPrefixes,\n\t\twalletType: 'privateKey' | 'address'\n\t) => string | undefined;\n}\n\nexport function createViemAccountGetter>(\n\tconfig: ViemAccountGetterConfig\n) {\n\tfunction getViemAccount(chainType: NetworkType, accountType: keyof TPrefixes) {\n\t\tconst privateKey = `0x${config.getWallet(chainType, accountType, 'privateKey')}`;\n\n\t\treturn privateKeyToAccount(privateKey as `0x${string}`, {\n\t\t\tnonceManager: nonceManager,\n\t\t});\n\t}\n\n\treturn { getViemAccount };\n}\n\nexport { getClients, getFallbackClients, getTestClient, getViemAccount };\n", "import mainnetChains from '@concero/concero-networks/output/chains.mainnet.json';\nimport testnetChains from '@concero/concero-networks/output/chains.testnet.json';\nimport type { Chain } from '@concero/concero-networks/src/types';\n\nimport { type ChainDefinition, type ConceroNetwork, type NetworkType, networkTypes } from '../types';\nimport { createViemChain, getWallet } from '../utils';\n\nconst mainnetProxyDeployerPK = getWallet('mainnet', 'proxyDeployer', 'privateKey');\nconst testnetProxyDeployerPK = getWallet('testnet', 'proxyDeployer', 'privateKey');\n\nconst mainnetDeployerPK = getWallet('mainnet', 'deployer', 'privateKey');\nconst testnetDeployerPK = getWallet('testnet', 'deployer', 'privateKey');\n\nconst testnetAccounts = [testnetDeployerPK, testnetProxyDeployerPK];\n\nexport type ConceroMainnetNetworkNames = (typeof mainnetChains)[keyof typeof mainnetChains]['name'];\nexport type ConceroTestnetNetworkNames = (typeof testnetChains)[keyof typeof testnetChains]['name'];\n\nfunction createExtendedNetworks>(\n\tchains: T,\n\tnetworkType: NetworkType,\n\taccounts: (string | undefined)[]\n): Record {\n\tconst validAccounts = accounts.filter((acc): acc is string => !!acc);\n\n\treturn Object.fromEntries(\n\t\tObject.values(chains).map((chain) => {\n\t\t\tconst chainDefinition: ChainDefinition = {\n\t\t\t\tid: parseInt(chain.id),\n\t\t\t\tname: chain.name,\n\t\t\t\trpcUrls: chain.rpcUrls,\n\t\t\t\tisTestnet: chain.isTestnet ?? false,\n\t\t\t\t...(chain.blockExplorers?.[0] && {\n\t\t\t\t\tblockExplorer: {\n\t\t\t\t\t\tname: chain.blockExplorers[0].name,\n\t\t\t\t\t\turl: chain.blockExplorers[0].url,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\tconst viemChain = createViemChain(chainDefinition);\n\n\t\t\treturn [\n\t\t\t\tchain.name,\n\t\t\t\t{\n\t\t\t\t\tname: chain.name,\n\t\t\t\t\tchainId: parseInt(chain.id),\n\t\t\t\t\ttype: networkType,\n\t\t\t\t\turl: chain.rpcUrls[0] || '',\n\t\t\t\t\trpcUrls: chain.rpcUrls,\n\t\t\t\t\tsaveDeployments: false,\n\t\t\t\t\taccounts: validAccounts,\n\t\t\t\t\tchainSelector: BigInt(chain.chainSelector),\n\t\t\t\t\tconfirmations: 1,\n\t\t\t\t\tviemChain,\n\t\t\t\t},\n\t\t\t];\n\t\t})\n\t) as Record;\n}\n\nexport const testnetNetworks = createExtendedNetworks(\n\ttestnetChains as unknown as Record,\n\tnetworkTypes.testnet,\n\ttestnetAccounts\n);\n\nexport const mainnetNetworks = createExtendedNetworks(\n\tmainnetChains as unknown as Record,\n\tnetworkTypes.mainnet,\n\t[mainnetDeployerPK, mainnetProxyDeployerPK]\n);\n\nexport const conceroNetworks: Record = {\n\t...testnetNetworks,\n\t...mainnetNetworks,\n};\n", "import { type PublicClient } from \"viem\";\n\nimport { ConceroNetwork } from \"../types/ConceroNetwork\";\nimport { getFallbackClients } from \"./getViemClients\";\n\ninterface GasParameters {\n\tmaxFeePerGas: bigint;\n\tmaxPriorityFeePerGas: bigint;\n}\n\n// Network-specific minimum gas parameters (in wei)\nconst NETWORK_MINIMUMS = {\n\tpolygon: {\n\t\tminTipCap: BigInt(30_000_000_000), // 30 gwei\n\t\tminBaseFee: BigInt(30_000_000_000), // 30 gwei\n\t},\n\t// Add other networks as needed\n} as const;\n\n/**\n * Gets optimized gas parameters for priority transaction processing\n * @param chain - The network configuration\n * @param priorityMultiplier - Multiplier for maxPriorityFeePerGas (default: 2)\n * @param maxFeeMultiplier - Multiplier for maxFeePerGas buffer (default: 2)\n * @returns GasParameters object containing maxFeePerGas and maxPriorityFeePerGas\n */\nexport async function getGasParameters(\n\tchain: ConceroNetwork,\n\tpriorityMultiplier = 1,\n\tmaxFeeMultiplier = 1,\n): Promise {\n\tconst { publicClient } = getFallbackClients(chain);\n\n\ttry {\n\t\t// Get latest block to calculate gas parameters\n\t\tconst block = await publicClient.getBlock();\n\t\tconst baseFee = block.baseFeePerGas ?? BigInt(0);\n\n\t\t// Get network-specific minimums\n\t\tconst networkMinimums = getNetworkMinimums(chain);\n\n\t\t// Calculate priority fee with buffer for faster inclusion\n\t\tconst suggestedPriorityFee = await getSuggestedPriorityFee(publicClient, chain);\n\t\tconst calculatedPriorityFee = calculatePriorityFee(\n\t\t\tsuggestedPriorityFee,\n\t\t\tpriorityMultiplier,\n\t\t);\n\n\t\t// Ensure priority fee meets network minimum\n\t\tconst priorityFee =\n\t\t\tcalculatedPriorityFee > networkMinimums.minTipCap\n\t\t\t\t? calculatedPriorityFee\n\t\t\t\t: networkMinimums.minTipCap;\n\n\t\t// Calculate max fee ensuring it meets network minimums\n\t\tconst calculatedMaxFee = calculateMaxFee(baseFee, priorityFee, maxFeeMultiplier);\n\t\tconst minRequiredMaxFee = networkMinimums.minBaseFee + priorityFee;\n\t\tconst maxFeePerGas =\n\t\t\tcalculatedMaxFee > minRequiredMaxFee ? calculatedMaxFee : minRequiredMaxFee;\n\n\t\treturn {\n\t\t\tmaxFeePerGas,\n\t\t\tmaxPriorityFeePerGas: priorityFee,\n\t\t};\n\t} catch (error) {\n\t\t// Fallback with network minimums\n\t\tconst networkMinimums = getNetworkMinimums(chain);\n\t\tconst gasPrice = await publicClient.getGasPrice();\n\t\tconst priorityFee = networkMinimums.minTipCap;\n\n\t\treturn {\n\t\t\tmaxFeePerGas:\n\t\t\t\tgasPrice > networkMinimums.minBaseFee + priorityFee\n\t\t\t\t\t? gasPrice\n\t\t\t\t\t: networkMinimums.minBaseFee + priorityFee,\n\t\t\tmaxPriorityFeePerGas: priorityFee,\n\t\t};\n\t}\n}\n\n/**\n * Gets network-specific minimum gas parameters\n */\nfunction getNetworkMinimums(chain: ConceroNetwork) {\n\t// Check if chain is Polygon (you'll need to implement this check based on your CNetwork type)\n\tconst isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes(\"polygon\");\n\n\tif (isPolygon) {\n\t\treturn NETWORK_MINIMUMS.polygon;\n\t}\n\n\t// Default minimums for other networks\n\treturn {\n\t\tminTipCap: BigInt(1_500_000_000), // 1.5 gwei\n\t\tminBaseFee: BigInt(1_000_000_000), // 1 gwei\n\t};\n}\n\n/**\n * Gets the suggested priority fee from recent blocks\n */\nasync function getSuggestedPriorityFee(\n\tpublicClient: PublicClient,\n\tchain: ConceroNetwork,\n): Promise {\n\ttry {\n\t\t// For Polygon, we want to be more aggressive with priority fees\n\t\tconst isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes(\"polygon\");\n\t\tconst blocksToAnalyze = isPolygon ? 5 : 10; // Look at fewer blocks on Polygon for more recent data\n\n\t\tconst blocks = await Promise.all(\n\t\t\tArray.from({ length: blocksToAnalyze }, (_, i) =>\n\t\t\t\tpublicClient.getBlock({ blockNumber: BigInt(-1 - i) }),\n\t\t\t),\n\t\t);\n\n\t\t// For Polygon, use 75th percentile instead of median for higher priority\n\t\tconst priorityFees = blocks\n\t\t\t.map(block => block.baseFeePerGas ?? BigInt(0))\n\t\t\t.sort((a, b) => (a < b ? -1 : 1));\n\n\t\tconst index = isPolygon\n\t\t\t? Math.floor(priorityFees.length * 0.75)\n\t\t\t: Math.floor(priorityFees.length * 0.5);\n\n\t\treturn priorityFees[index];\n\t} catch {\n\t\t// Use network-specific minimum as fallback\n\t\treturn getNetworkMinimums(chain).minTipCap;\n\t}\n}\n\n/**\n * Calculates priority fee with buffer\n */\nfunction calculatePriorityFee(basePriorityFee: bigint, multiplier: number): bigint {\n\treturn BigInt(Math.ceil(Number(basePriorityFee) * multiplier));\n}\n\n/**\n * Calculates max fee with buffer\n */\nfunction calculateMaxFee(baseFee: bigint, priorityFee: bigint, multiplier: number): bigint {\n\treturn BigInt(Math.ceil(Number(baseFee) * multiplier)) + priorityFee;\n}\n", "export const config = {\n DEFAULT_BLOCK_CONFIRMATIONS: 2,\n};\n", "import TrezorConnect from '@trezor/connect';\nimport { Address } from 'viem';\nimport { initTrezorOnce } from './initTrezorOnce';\nimport { defaultTrezorPath, ITrezorParams } from './trezorSendTx';\n\nexport const getTrezorAddress = async (path: ITrezorParams['path'] = defaultTrezorPath): Promise
=> {\n\tawait initTrezorOnce();\n\n\tconst addrRes = await TrezorConnect.ethereumGetAddress({\n\t\tpath,\n\t\tshowOnTrezor: false,\n\t});\n\n\tif (!addrRes.success) throw new Error(addrRes.payload.error);\n\n\treturn addrRes.payload.address as Address;\n};\n", "import TrezorConnect from '@trezor/connect';\n\nlet isTrezorInitialized = false;\n\nexport async function initTrezorOnce() {\n\tif (isTrezorInitialized) return;\n\tawait TrezorConnect.init({\n\t\tmanifest: {\n\t\t\temail: 'nikita@concero.io',\n\t\t\tappUrl: 'https://concero.io',\n\t\t\tappName: 'concero',\n\t\t},\n\t});\n\tisTrezorInitialized = true;\n}\n", "import TrezorConnect from '@trezor/connect';\nimport type { Address, Hash, Hex, PublicClient } from 'viem';\nimport { isHex, serializeTransaction, toHex } from 'viem';\nimport { log } from '../utils';\nimport { getTrezorAddress } from './getTrezorAddress';\nimport { initTrezorOnce } from './initTrezorOnce';\n\nexport const defaultTrezorPath = \"m/44'/60'/0'/0/0\";\n\nexport interface ITrezorViemParams {\n\tpublicClient: PublicClient;\n}\n\nexport interface ITrezorParams {\n\tpath: string | number[];\n\tshowFromAddressOnTrezor?: boolean;\n\tforceLegacy?: boolean;\n}\n\nexport interface ITrezorTxParams {\n\tto?: Address;\n\tvalue?: bigint;\n\tdata?: Hex;\n\tgas?: bigint;\n\tnonce?: number;\n\tgasPrice?: bigint;\n\tmaxFeePerGas?: bigint;\n\tmaxPriorityFeePerGas?: bigint;\n}\n\nfunction normalizeHex(hex: string, name: string): Hex {\n\tif (!hex.startsWith('0x')) hex = `0x${hex}`;\n\tif (!isHex(hex)) throw new Error(`${name} must be 0x-prefixed hex`);\n\treturn hex as Hex;\n}\n\nfunction yParityFromV(v: bigint): 0 | 1 {\n\tif (v === 0n || v === 1n) return Number(v) as 0 | 1;\n\tif (v === 27n || v === 28n) return Number(v - 27n) as 0 | 1;\n\treturn Number((v - 35n) % 2n) as 0 | 1;\n}\n\nexport async function trezorSendTx(\n\tviemParams: ITrezorViemParams,\n\ttxParams: ITrezorTxParams,\n\ttrezorPrams: ITrezorParams = {\n\t\tpath: defaultTrezorPath,\n\t\tshowFromAddressOnTrezor: false,\n\t\tforceLegacy: false,\n\t}\n): Promise {\n\tawait initTrezorOnce();\n\n\tconst { publicClient } = viemParams;\n\tconst { to = null, value = 0n, data = '0x' } = txParams;\n\tconst { path, forceLegacy } = trezorPrams;\n\n\tconst chainId = publicClient.chain?.id ?? (await publicClient.getChainId());\n\n\tconst from = await getTrezorAddress(path);\n\n\tlog(`Deploy from ${from}`, 'trezorSendTx');\n\n\tconst normData = normalizeHex(data, 'data');\n\n\tconst nonce =\n\t\ttxParams.nonce ??\n\t\t(await publicClient.getTransactionCount({\n\t\t\taddress: from,\n\t\t\tblockTag: 'pending',\n\t\t}));\n\n\tconst gas =\n\t\ttxParams.gas ??\n\t\t(await publicClient.estimateGas({\n\t\t\taccount: from,\n\t\t\tto: to ?? undefined,\n\t\t\tvalue,\n\t\t\tdata: normData === '0x' ? undefined : normData,\n\t\t}));\n\n\tlet gasPrice = txParams.gasPrice;\n\tlet maxFeePerGas = txParams.maxFeePerGas;\n\tlet maxPriorityFeePerGas = txParams.maxPriorityFeePerGas;\n\n\tif (!forceLegacy && gasPrice == null && (maxFeePerGas == null || maxPriorityFeePerGas == null)) {\n\t\ttry {\n\t\t\tconst fees = await publicClient.estimateFeesPerGas();\n\t\t\tif ('maxFeePerGas' in fees && 'maxPriorityFeePerGas' in fees) {\n\t\t\t\tmaxFeePerGas = fees.maxFeePerGas;\n\t\t\t\tmaxPriorityFeePerGas = fees.maxPriorityFeePerGas;\n\t\t\t} else if ('gasPrice' in fees) {\n\t\t\t\tgasPrice = (fees as { gasPrice: bigint }).gasPrice;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlog(`EIP-1559 not supported for ${chainId}, using legacy gas price`, 'trezorSendTx');\n\t\t}\n\t}\n\n\tconst useEip1559 = !forceLegacy && maxFeePerGas != null && maxPriorityFeePerGas != null;\n\n\tif (!useEip1559 && gasPrice == null) {\n\t\tgasPrice = await publicClient.getGasPrice();\n\t}\n\n\tconst txForTrezor: Record = {\n\t\tto,\n\t\tvalue: toHex(value),\n\t\tdata: normData,\n\t\tchainId,\n\t\tnonce: toHex(nonce),\n\t\tgasLimit: toHex(gas),\n\t};\n\n\tif (useEip1559) {\n\t\ttxForTrezor.maxFeePerGas = toHex(maxFeePerGas!);\n\t\ttxForTrezor.maxPriorityFeePerGas = toHex(maxPriorityFeePerGas!);\n\t} else {\n\t\ttxForTrezor.gasPrice = toHex(gasPrice!);\n\t}\n\n\tconst signRes = await TrezorConnect.ethereumSignTransaction({\n\t\tpath,\n\t\ttransaction: txForTrezor as any,\n\t});\n\tif (!signRes.success) throw new Error(signRes.payload.error);\n\n\tconst r = normalizeHex(signRes.payload.r, 'r');\n\tconst s = normalizeHex(signRes.payload.s, 's');\n\tconst vBig = BigInt(signRes.payload.v);\n\n\tconst txSerializable: any = {\n\t\tchainId,\n\t\tnonce,\n\t\tgas,\n\t\tto: to ?? undefined,\n\t\tvalue,\n\t\tdata: normData,\n\t};\n\n\tif (useEip1559) {\n\t\ttxSerializable.maxFeePerGas = maxFeePerGas;\n\t\ttxSerializable.maxPriorityFeePerGas = maxPriorityFeePerGas;\n\t\tconst serializedTransaction = serializeTransaction(txSerializable, {\n\t\t\tr,\n\t\t\ts,\n\t\t\tyParity: yParityFromV(vBig),\n\t\t});\n\n\t\treturn await publicClient.sendRawTransaction({ serializedTransaction });\n\t} else {\n\t\ttxSerializable.gasPrice = gasPrice;\n\n\t\tconst serializedTransaction = serializeTransaction(txSerializable, {\n\t\t\tr,\n\t\t\ts,\n\t\t\tv: vBig,\n\t\t} as any);\n\t\treturn await publicClient.sendRawTransaction({ serializedTransaction });\n\t}\n}\n", "import type { Abi, Address, Hash, Hex } from 'viem';\nimport { encodeDeployData } from 'viem';\nimport {\n\tITrezorTxParams,\n\tITrezorViemParams,\n\ttrezorSendTx,\n\ttype ITrezorParams,\n} from './trezorSendTx';\n\nexport interface ITrezorDeployParams\n\textends Omit {\n\tabi: Abi;\n\tbytecode: Hex;\n\targs?: readonly unknown[];\n}\n\nexport async function trezorDeployContract(\n\tviemParams: ITrezorViemParams,\n\tdeployParams: ITrezorDeployParams,\n\ttrezorParams?: ITrezorParams\n): Promise<{ hash: Hash; contractAddress: Address }> {\n\tconst { publicClient } = viemParams;\n\tconst { abi, bytecode, args, value = 0n, ...overrides } = deployParams;\n\n\tconst data = encodeDeployData({ abi, bytecode, args });\n\n\tconst hash = await trezorSendTx(\n\t\t{ publicClient },\n\t\t{ data, value, ...overrides },\n\t\ttrezorParams\n\t);\n\n\tconst receipt = await publicClient.waitForTransactionReceipt({ hash });\n\tif (!receipt.contractAddress)\n\t\tthrow new Error('No contractAddress in receipt');\n\n\treturn { hash, contractAddress: receipt.contractAddress as Address };\n}\n", "import { Abi, Address, encodeFunctionData, Hash } from 'viem';\nimport {\n\tITrezorParams,\n\tITrezorTxParams,\n\tITrezorViemParams,\n\ttrezorSendTx,\n} from './trezorSendTx';\n\nexport interface ITrezorWriteContractParams\n\textends Omit {\n\taddress: Address;\n\tabi: Abi;\n\tfunctionName: string;\n\targs?: readonly unknown[];\n}\n\nexport async function trezorWriteContract(\n\tviemParams: ITrezorViemParams,\n\twriteContractParams: ITrezorWriteContractParams,\n\ttrezorParams: ITrezorParams\n): Promise {\n\tconst {\n\t\taddress,\n\t\tabi,\n\t\tfunctionName,\n\t\targs,\n\t\tvalue = 0n,\n\t\t...overrides\n\t} = writeContractParams;\n\n\tconst data = encodeFunctionData({ abi, functionName, args });\n\n\treturn trezorSendTx(\n\t\tviemParams,\n\t\t{\n\t\t\tto: address,\n\t\t\tdata,\n\t\t\tvalue,\n\t\t\t...overrides,\n\t\t},\n\t\ttrezorParams\n\t);\n}\n", "import { TransactionReceipt } from 'ethers';\nimport { HardhatRuntimeEnvironment } from 'hardhat/types';\n\nimport { Hex } from 'viem';\nimport type { WaitForTransactionReceiptReturnType } from 'viem/actions/public/waitForTransactionReceipt';\nimport { conceroNetworks } from '../constants/conceroNetworks';\nimport { trezorDeployContract } from '../trezor';\nimport { getFallbackClients, getTrezorDeployEnabled, log } from '../utils';\n\nexport interface ITxParams {\n\tgasLimit: bigint;\n\tlibraries: Record;\n}\n\nexport interface IDeployResult {\n\taddress: string;\n\tchainType: string;\n\tchainName: string;\n\tchainId: number;\n\treceipt: TransactionReceipt | WaitForTransactionReceiptReturnType;\n}\n\nexport interface IGenericDeployParams {\n\thre: HardhatRuntimeEnvironment;\n\tcontractName: string;\n\ttxParams?: Partial;\n}\n\nexport const genericDeploy = async (\n\t{ hre, contractName, txParams }: IGenericDeployParams,\n\t...contractConstructorArgs: any[]\n): Promise => {\n\tconst [deployer] = await hre.ethers.getSigners();\n\n\tconst chain = conceroNetworks[hre.network.name];\n\tconst isTrezorDeployEnabled = getTrezorDeployEnabled();\n\n\tlog(`isTrezorDeployEnabled: ${isTrezorDeployEnabled}`, 'genericDeploy');\n\n\tconst contractFactory = await hre.ethers.getContractFactory(contractName, {\n\t\tlibraries: txParams?.libraries,\n\t});\n\n\tconst deployOverrides = txParams?.gasLimit ? { gasLimit: txParams.gasLimit } : {};\n\n\tlet deploymentAddress;\n\tlet receipt;\n\n\tif (isTrezorDeployEnabled) {\n\t\tconst { publicClient } = getFallbackClients(chain);\n\t\tconst tx = await trezorDeployContract(\n\t\t\t{ publicClient },\n\t\t\t{\n\t\t\t\targs: contractConstructorArgs,\n\t\t\t\tabi: hre.artifacts.readArtifactSync(contractName).abi,\n\t\t\t\tbytecode: contractFactory.bytecode as Hex,\n\t\t\t\tgas: deployOverrides.gasLimit,\n\t\t\t}\n\t\t);\n\n\t\tdeploymentAddress = tx.contractAddress;\n\t\treceipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash });\n\t\tif (receipt.status !== 'success') throw new Error(`Deploy transaction reverted ${tx.hash}`);\n\t} else {\n\t\tlog(`Deploy ${contractName} from address: ${await deployer.getAddress()}`, 'genericDeploy', chain.name);\n\n\t\tconst contract = await contractFactory.deploy(...contractConstructorArgs, deployOverrides);\n\t\treceipt = await contract.deploymentTransaction()?.wait();\n\t\tdeploymentAddress = await contract.getAddress();\n\t}\n\n\tif (hre.tenderly) {\n\t\ttry {\n\t\t\tawait hre.tenderly.verify({\n\t\t\t\tname: contractName,\n\t\t\t\taddress: deploymentAddress,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tconsole.error(JSON.stringify(e));\n\t\t}\n\t}\n\n\tlog(`Deployed at: ${deploymentAddress}`, `deploy ${contractName}`, chain.name);\n\n\treturn {\n\t\taddress: deploymentAddress,\n\t\tchainName: chain.name,\n\t\tchainType: chain.type,\n\t\tchainId: chain.chainId,\n\t\treceipt,\n\t};\n};\n", "import {\n\tAddress,\n\terc20Abi,\n\tformatUnits,\n\tHash,\n\tparseUnits,\n\tPublicClient,\n\tWalletClient,\n} from 'viem';\n\nexport class TokenSender {\n\tprivate walletClient: WalletClient;\n\tprivate publicClient: PublicClient;\n\n\tconstructor(walletClient: WalletClient, publicClient: PublicClient) {\n\t\tthis.walletClient = walletClient;\n\t\tthis.publicClient = publicClient;\n\t}\n\n\tpublic async sendToken(\n\t\ttokenAddress: Address,\n\t\tamount: string,\n\t\trecipient: Address\n\t): Promise {\n\t\tconst [tokenDecimals, tokenSymbol, tokenBalance] = await Promise.all([\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'decimals',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'symbol',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\targs: [this.walletClient.account?.address!],\n\t\t\t}),\n\t\t]);\n\n\t\tconsole.log(\n\t\t\t`Current ${tokenSymbol} balance ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t);\n\n\t\tif (parseUnits(amount, tokenDecimals) > tokenBalance) {\n\t\t\tthrow new Error(\n\t\t\t\t`Insufficient balance. Required: ${amount}, available: ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t\t);\n\t\t}\n\n\t\tconst txHash = await this.walletClient.writeContract({\n\t\t\taddress: tokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: 'transfer',\n\t\t\targs: [recipient, parseUnits(amount, tokenDecimals)],\n\t\t\tchain: this.walletClient.chain,\n\t\t\taccount: this.walletClient.account!,\n\t\t});\n\n\t\tconst { status } = await this.publicClient.waitForTransactionReceipt({\n\t\t\thash: txHash,\n\t\t});\n\n\t\tif (status !== 'success') {\n\t\t\tthrow new Error(`Error sending token. Hash: ${txHash}`);\n\t\t}\n\n\t\tconsole.log(`Token successfully sent. Hash: ${txHash}`);\n\n\t\treturn txHash;\n\t}\n}\n"], + "mappings": "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", + "names": ["process", "config", "config", "getWallet", "import_viem", "log", "config", "path", "import_viem", "testnetChains", "mainnetChains", "config", "getViemAccount", "import_connect", "TrezorConnect", "import_connect", "import_viem", "path", "TrezorConnect", "path", "TrezorConnect", "import_viem", "import_viem", "import_viem"] } diff --git a/dist/index.esm.js b/dist/index.esm.js index b5b1f0a..6570c2a 100644 --- a/dist/index.esm.js +++ b/dist/index.esm.js @@ -1,431 +1,225730 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { + get: (a, b) => (typeof require !== "undefined" ? require : a)[b] +}) : x)(function(x) { + if (typeof require !== "undefined") return require.apply(this, arguments); + throw Error('Dynamic require of "' + x + '" is not supported'); +}); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; +var __commonJS = (cb, mod3) => function __require2() { + return mod3 || (0, cb[__getOwnPropNames(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod3, isNodeMode, target) => (target = mod3 != null ? __create(__getProtoOf(mod3)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod3 || !mod3.__esModule ? __defProp(target, "default", { value: mod3, enumerable: true }) : target, + mod3 +)); +var __toCommonJS = (mod3) => __copyProps(__defProp({}, "__esModule", { value: true }), mod3); -// node_modules/viem/_esm/errors/version.js -var version; -var init_version = __esm({ - "node_modules/viem/_esm/errors/version.js"() { - version = "2.24.2"; - } -}); - -// node_modules/viem/_esm/errors/base.js -function walk(err, fn) { - if (fn?.(err)) - return err; - if (err && typeof err === "object" && "cause" in err && err.cause !== void 0) - return walk(err.cause, fn); - return fn ? null : err; -} -var errorConfig, BaseError; -var init_base = __esm({ - "node_modules/viem/_esm/errors/base.js"() { - init_version(); - errorConfig = { - getDocsUrl: ({ docsBaseUrl, docsPath = "", docsSlug }) => docsPath ? `${docsBaseUrl ?? "https://viem.sh"}${docsPath}${docsSlug ? `#${docsSlug}` : ""}` : void 0, - version: `viem@${version}` - }; - BaseError = class _BaseError extends Error { - constructor(shortMessage, args = {}) { - const details = (() => { - if (args.cause instanceof _BaseError) - return args.cause.details; - if (args.cause?.message) - return args.cause.message; - return args.details; - })(); - const docsPath = (() => { - if (args.cause instanceof _BaseError) - return args.cause.docsPath || args.docsPath; - return args.docsPath; - })(); - const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath }); - const message = [ - shortMessage || "An error occurred.", - "", - ...args.metaMessages ? [...args.metaMessages, ""] : [], - ...docsUrl ? [`Docs: ${docsUrl}`] : [], - ...details ? [`Details: ${details}`] : [], - ...errorConfig.version ? [`Version: ${errorConfig.version}`] : [] - ].join("\n"); - super(message, args.cause ? { cause: args.cause } : void 0); - Object.defineProperty(this, "details", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "docsPath", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "metaMessages", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 +// node_modules/tslib/tslib.es6.js +var tslib_es6_exports = {}; +__export(tslib_es6_exports, { + __assign: () => __assign, + __asyncDelegator: () => __asyncDelegator, + __asyncGenerator: () => __asyncGenerator, + __asyncValues: () => __asyncValues, + __await: () => __await, + __awaiter: () => __awaiter, + __classPrivateFieldGet: () => __classPrivateFieldGet, + __classPrivateFieldSet: () => __classPrivateFieldSet, + __createBinding: () => __createBinding, + __decorate: () => __decorate, + __exportStar: () => __exportStar, + __extends: () => __extends, + __generator: () => __generator, + __importDefault: () => __importDefault, + __importStar: () => __importStar, + __makeTemplateObject: () => __makeTemplateObject, + __metadata: () => __metadata, + __param: () => __param, + __read: () => __read, + __rest: () => __rest, + __spread: () => __spread, + __spreadArrays: () => __spreadArrays, + __values: () => __values +}); +function __extends(d, b) { + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + 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; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} +function __param(paramIndex, decorator) { + return function(target, key) { + decorator(target, key, paramIndex); + }; +} +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { + if (t[0] & 1) throw t[1]; + return t[1]; + }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { + return this; + }), g; + function verb(n) { + return function(v) { + return step([n, v]); + }; + } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + 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; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: + case 1: + t = op; + break; + case 4: + _.label++; + return { value: op[1], done: false }; + case 5: + _.label++; + y = op[1]; + op = [0]; + continue; + case 7: + op = _.ops.pop(); + _.trys.pop(); + continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { + _ = 0; + continue; + } + if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { + _.label = op[1]; + break; + } + if (op[0] === 6 && _.label < t[1]) { + _.label = t[1]; + t = op; + break; + } + if (t && _.label < t[2]) { + _.label = t[2]; + _.ops.push(op); + break; + } + if (t[2]) _.ops.pop(); + _.trys.pop(); + continue; + } + op = body.call(thisArg, _); + } catch (e) { + op = [6, e]; + y = 0; + } finally { + f = t = 0; + } + if (op[0] & 5) throw op[1]; + return { value: op[0] ? op[1] : void 0, done: true }; + } +} +function __createBinding(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; +} +function __exportStar(m, exports2) { + for (var p in m) if (p !== "default" && !exports2.hasOwnProperty(p)) exports2[p] = m[p]; +} +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function() { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error }; + } finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; +} +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { + return this; + }, i; + function verb(n) { + if (g[n]) i[n] = function(v) { + return new Promise(function(a, b) { + q.push([n, v, a, b]) > 1 || resume(n, v); + }); + }; + } + function resume(n, v) { + try { + step(g[n](v)); + } catch (e) { + settle(q[0][3], e); + } + } + function step(r) { + r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); + } + function fulfill(value) { + resume("next", value); + } + function reject(value) { + resume("throw", value); + } + function settle(f, v) { + if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); + } +} +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function(e) { + throw e; + }), verb("return"), i[Symbol.iterator] = function() { + return this; + }, i; + function verb(n, f) { + i[n] = o[n] ? function(v) { + return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; + } : f; + } +} +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + 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); + 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); + }); + }; + } + function settle(resolve, reject, d, v) { + Promise.resolve(v).then(function(v2) { + resolve({ value: v2, done: d }); + }, reject); + } +} +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { + Object.defineProperty(cooked, "raw", { value: raw }); + } else { + cooked.raw = raw; + } + return cooked; +} +function __importStar(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (Object.hasOwnProperty.call(mod3, k)) result[k] = mod3[k]; + } + result.default = mod3; + return result; +} +function __importDefault(mod3) { + return mod3 && mod3.__esModule ? mod3 : { default: mod3 }; +} +function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); +} +function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; +} +var extendStatics, __assign; +var init_tslib_es6 = __esm({ + "node_modules/tslib/tslib.es6.js"() { + extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { + d2.__proto__ = b2; + } || function(d2, b2) { + for (var p in b2) if (b2.hasOwnProperty(p)) d2[p] = b2[p]; + }; + return extendStatics(d, b); + }; + __assign = function() { + __assign = Object.assign || function __assign2(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + } +}); + +// node_modules/@trezor/utils/lib/bufferUtils.js +var require_bufferUtils = __commonJS({ + "node_modules/@trezor/utils/lib/bufferUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getChunkSize = exports2.reverseBuffer = void 0; + var reverseBuffer = (src) => { + if (src.length < 1) return src; + const buffer = Buffer.alloc(src.length); + let j = buffer.length - 1; + for (let i = 0; i < buffer.length / 2; i++) { + buffer[i] = src[j]; + buffer[j] = src[i]; + j--; + } + return buffer; + }; + exports2.reverseBuffer = reverseBuffer; + var getChunkSize = (n) => { + const buf = Buffer.allocUnsafe(1); + buf.writeUInt8(n); + return buf; + }; + exports2.getChunkSize = getChunkSize; + } +}); + +// node_modules/@trezor/utils/lib/enumUtils.js +var require_enumUtils = __commonJS({ + "node_modules/@trezor/utils/lib/enumUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getKeyByValue = getKeyByValue; + exports2.getValueByKey = getValueByKey; + function getKeyByValue(obj, value) { + return obj && Object.keys(obj).find((x) => obj[x] === value); + } + function getValueByKey(obj, enumKey) { + const key = obj && Object.keys(obj).find((x) => x === enumKey); + return key && obj[key]; + } + } +}); + +// node_modules/@trezor/utils/lib/throwError.js +var require_throwError = __commonJS({ + "node_modules/@trezor/utils/lib/throwError.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.throwError = void 0; + var throwError = (reason) => { + throw new Error(reason); + }; + exports2.throwError = throwError; + } +}); + +// node_modules/@trezor/utils/lib/versionUtils.js +var require_versionUtils = __commonJS({ + "node_modules/@trezor/utils/lib/versionUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.normalizeVersion = exports2.isNewerOrEqual = exports2.isEqual = exports2.isNewer = exports2.tryParse = exports2.isVersionArray = void 0; + var throwError_1 = require_throwError(); + var isVersionArray = (arr) => Array.isArray(arr) && arr.length === 3 && arr.every((number) => typeof number === "number" && number >= 0); + exports2.isVersionArray = isVersionArray; + var tryParse = (version) => version.match(/^(\d+)\.(\d+)\.(\d+)([+-].*)?$/)?.slice(1, 4).map((n) => Number(n)); + exports2.tryParse = tryParse; + var validateArray = (version) => (0, exports2.isVersionArray)(version) ? version : null; + var ensureArray = (version) => (typeof version === "string" ? (0, exports2.tryParse)(version) : validateArray(version)) ?? (0, throwError_1.throwError)(`version string is in wrong format: ${version}`); + var compare2 = ([majorX, minorX, patchX], [majorY, minorY, patchY]) => majorX - majorY || minorX - minorY || patchX - patchY; + var isNewer = (versionX, versionY) => compare2(ensureArray(versionX), ensureArray(versionY)) > 0; + exports2.isNewer = isNewer; + var isEqual = (versionX, versionY) => compare2(ensureArray(versionX), ensureArray(versionY)) === 0; + exports2.isEqual = isEqual; + var isNewerOrEqual = (versionX, versionY) => compare2(ensureArray(versionX), ensureArray(versionY)) >= 0; + exports2.isNewerOrEqual = isNewerOrEqual; + var normalizeVersion = (version) => version.replace(/\b0+(\d)/g, "$1"); + exports2.normalizeVersion = normalizeVersion; + } +}); + +// node_modules/@trezor/utils/lib/xssFilters.js +var require_xssFilters = __commonJS({ + "node_modules/@trezor/utils/lib/xssFilters.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.inDoubleQuotes = exports2.inSingleQuotes = exports2.inHTML = void 0; + var LT = / value.replace(LT, "<"); + exports2.inHTML = inHTML; + var inSingleQuotes = (value) => value.replace(SQUOT, "'"); + exports2.inSingleQuotes = inSingleQuotes; + var inDoubleQuotes = (value) => value.replace(QUOT, """); + exports2.inDoubleQuotes = inDoubleQuotes; + } +}); + +// node_modules/@trezor/utils/lib/addDashesToSpaces.js +var require_addDashesToSpaces = __commonJS({ + "node_modules/@trezor/utils/lib/addDashesToSpaces.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.addDashesToSpaces = void 0; + var addDashesToSpaces = (inputString) => inputString.replace(/\s+/g, "-"); + exports2.addDashesToSpaces = addDashesToSpaces; + } +}); + +// node_modules/@trezor/utils/lib/arrayDistinct.js +var require_arrayDistinct = __commonJS({ + "node_modules/@trezor/utils/lib/arrayDistinct.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.arrayDistinct = void 0; + var arrayDistinct = (item, index, self2) => self2.indexOf(item) === index; + exports2.arrayDistinct = arrayDistinct; + } +}); + +// node_modules/@trezor/utils/lib/arrayPartition.js +var require_arrayPartition = __commonJS({ + "node_modules/@trezor/utils/lib/arrayPartition.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.arrayPartition = void 0; + var arrayPartition = (array, condition) => array.reduce(([pass, fail], elem) => condition(elem) ? [[...pass, elem], fail] : [pass, [...fail, elem]], [[], []]); + exports2.arrayPartition = arrayPartition; + } +}); + +// node_modules/@trezor/utils/lib/arrayShuffle.js +var require_arrayShuffle = __commonJS({ + "node_modules/@trezor/utils/lib/arrayShuffle.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.arrayShuffle = void 0; + var arrayShuffle = (array, { + randomInt + }) => { + const shuffled = array.slice(); + for (let i = shuffled.length - 1; i > 0; i--) { + const j = randomInt(0, i + 1); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; + }; + exports2.arrayShuffle = arrayShuffle; + } +}); + +// node_modules/@trezor/utils/lib/arrayToDictionary.js +var require_arrayToDictionary = __commonJS({ + "node_modules/@trezor/utils/lib/arrayToDictionary.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.arrayToDictionary = void 0; + var validateKey = (key) => { + if (["string", "number"].includes(typeof key)) { + return true; + } + return false; + }; + var arrayToDictionary = (array, getKey, multiple) => multiple ? array.reduce((prev, cur) => { + const key = getKey(cur); + if (validateKey(key)) { + return { + ...prev, + [key]: [...prev[key] ?? [], cur] + }; + } + return prev; + }, {}) : array.reduce((prev, cur) => { + const key = getKey(cur); + if (validateKey(key)) { + return { + ...prev, + [key]: cur + }; + } + return prev; + }, {}); + exports2.arrayToDictionary = arrayToDictionary; + } +}); + +// node_modules/@trezor/utils/lib/asciiUtils.js +var require_asciiUtils = __commonJS({ + "node_modules/@trezor/utils/lib/asciiUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isAscii = isAscii; + exports2.getNonAsciiChars = getNonAsciiChars; + var ASCII_RANGE = "[^ -~]"; + var nonAsciiPattern = new RegExp(ASCII_RANGE); + var nonAsciiPatternGlobal = new RegExp(ASCII_RANGE, "g"); + function isAscii(value) { + if (!value) return true; + return !nonAsciiPattern.test(value); + } + function getNonAsciiChars(value) { + if (!value) return null; + return value.match(nonAsciiPatternGlobal); + } + } +}); + +// node_modules/bignumber.js/bignumber.js +var require_bignumber = __commonJS({ + "node_modules/bignumber.js/bignumber.js"(exports2, module2) { + (function(globalObject) { + "use strict"; + var BigNumber, isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, mathceil = Math.ceil, mathfloor = Math.floor, bignumberError = "[BigNumber Error] ", tooManyDigits = bignumberError + "Number primitive has more than 15 significant digits: ", BASE = 1e14, LOG_BASE = 14, MAX_SAFE_INTEGER = 9007199254740991, POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], SQRT_BASE = 1e7, MAX = 1e9; + function clone(configObject) { + var div, convertBase, parseNumeric, P = BigNumber2.prototype = { constructor: BigNumber2, toString: null, valueOf: null }, ONE = new BigNumber2(1), DECIMAL_PLACES = 20, ROUNDING_MODE = 4, TO_EXP_NEG = -7, TO_EXP_POS = 21, MIN_EXP = -1e7, MAX_EXP = 1e7, CRYPTO = false, MODULO_MODE = 1, POW_PRECISION = 0, FORMAT = { + prefix: "", + groupSize: 3, + secondaryGroupSize: 0, + groupSeparator: ",", + decimalSeparator: ".", + fractionGroupSize: 0, + fractionGroupSeparator: "\xA0", + // non-breaking space + suffix: "" + }, ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz", alphabetHasNormalDecimalDigits = true; + function BigNumber2(v, b) { + var alphabet, c, caseChanged, e, i, isNum, len, str, x = this; + if (!(x instanceof BigNumber2)) return new BigNumber2(v, b); + if (b == null) { + if (v && v._isBigNumber === true) { + x.s = v.s; + if (!v.c || v.e > MAX_EXP) { + x.c = x.e = null; + } else if (v.e < MIN_EXP) { + x.c = [x.e = 0]; + } else { + x.e = v.e; + x.c = v.c.slice(); + } + return; + } + if ((isNum = typeof v == "number") && v * 0 == 0) { + x.s = 1 / v < 0 ? (v = -v, -1) : 1; + if (v === ~~v) { + for (e = 0, i = v; i >= 10; i /= 10, e++) ; + if (e > MAX_EXP) { + x.c = x.e = null; + } else { + x.e = e; + x.c = [v]; + } + return; + } + str = String(v); + } else { + if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum); + x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1; + } + if ((e = str.indexOf(".")) > -1) str = str.replace(".", ""); + if ((i = str.search(/e/i)) > 0) { + if (e < 0) e = i; + e += +str.slice(i + 1); + str = str.substring(0, i); + } else if (e < 0) { + e = str.length; + } + } else { + intCheck(b, 2, ALPHABET.length, "Base"); + if (b == 10 && alphabetHasNormalDecimalDigits) { + x = new BigNumber2(v); + return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE); + } + str = String(v); + if (isNum = typeof v == "number") { + if (v * 0 != 0) return parseNumeric(x, str, isNum, b); + x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1; + if (BigNumber2.DEBUG && str.replace(/^0\.0*|\./, "").length > 15) { + throw Error(tooManyDigits + v); + } + } else { + x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1; + } + alphabet = ALPHABET.slice(0, b); + e = i = 0; + for (len = str.length; i < len; i++) { + if (alphabet.indexOf(c = str.charAt(i)) < 0) { + if (c == ".") { + if (i > e) { + e = len; + continue; + } + } else if (!caseChanged) { + if (str == str.toUpperCase() && (str = str.toLowerCase()) || str == str.toLowerCase() && (str = str.toUpperCase())) { + caseChanged = true; + i = -1; + e = 0; + continue; + } + } + return parseNumeric(x, String(v), isNum, b); + } + } + isNum = false; + str = convertBase(str, b, 10, x.s); + if ((e = str.indexOf(".")) > -1) str = str.replace(".", ""); + else e = str.length; + } + for (i = 0; str.charCodeAt(i) === 48; i++) ; + for (len = str.length; str.charCodeAt(--len) === 48; ) ; + if (str = str.slice(i, ++len)) { + len -= i; + if (isNum && BigNumber2.DEBUG && len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) { + throw Error(tooManyDigits + x.s * v); + } + if ((e = e - i - 1) > MAX_EXP) { + x.c = x.e = null; + } else if (e < MIN_EXP) { + x.c = [x.e = 0]; + } else { + x.e = e; + x.c = []; + i = (e + 1) % LOG_BASE; + if (e < 0) i += LOG_BASE; + if (i < len) { + if (i) x.c.push(+str.slice(0, i)); + for (len -= LOG_BASE; i < len; ) { + x.c.push(+str.slice(i, i += LOG_BASE)); + } + i = LOG_BASE - (str = str.slice(i)).length; + } else { + i -= len; + } + for (; i--; str += "0") ; + x.c.push(+str); + } + } else { + x.c = [x.e = 0]; + } + } + BigNumber2.clone = clone; + BigNumber2.ROUND_UP = 0; + BigNumber2.ROUND_DOWN = 1; + BigNumber2.ROUND_CEIL = 2; + BigNumber2.ROUND_FLOOR = 3; + BigNumber2.ROUND_HALF_UP = 4; + BigNumber2.ROUND_HALF_DOWN = 5; + BigNumber2.ROUND_HALF_EVEN = 6; + BigNumber2.ROUND_HALF_CEIL = 7; + BigNumber2.ROUND_HALF_FLOOR = 8; + BigNumber2.EUCLID = 9; + BigNumber2.config = BigNumber2.set = function(obj) { + var p, v; + if (obj != null) { + if (typeof obj == "object") { + if (obj.hasOwnProperty(p = "DECIMAL_PLACES")) { + v = obj[p]; + intCheck(v, 0, MAX, p); + DECIMAL_PLACES = v; + } + if (obj.hasOwnProperty(p = "ROUNDING_MODE")) { + v = obj[p]; + intCheck(v, 0, 8, p); + ROUNDING_MODE = v; + } + if (obj.hasOwnProperty(p = "EXPONENTIAL_AT")) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, 0, p); + intCheck(v[1], 0, MAX, p); + TO_EXP_NEG = v[0]; + TO_EXP_POS = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v); + } + } + if (obj.hasOwnProperty(p = "RANGE")) { + v = obj[p]; + if (v && v.pop) { + intCheck(v[0], -MAX, -1, p); + intCheck(v[1], 1, MAX, p); + MIN_EXP = v[0]; + MAX_EXP = v[1]; + } else { + intCheck(v, -MAX, MAX, p); + if (v) { + MIN_EXP = -(MAX_EXP = v < 0 ? -v : v); + } else { + throw Error(bignumberError + p + " cannot be zero: " + v); + } + } + } + if (obj.hasOwnProperty(p = "CRYPTO")) { + v = obj[p]; + if (v === !!v) { + if (v) { + if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) { + CRYPTO = v; + } else { + CRYPTO = !v; + throw Error(bignumberError + "crypto unavailable"); + } + } else { + CRYPTO = v; + } + } else { + throw Error(bignumberError + p + " not true or false: " + v); + } + } + if (obj.hasOwnProperty(p = "MODULO_MODE")) { + v = obj[p]; + intCheck(v, 0, 9, p); + MODULO_MODE = v; + } + if (obj.hasOwnProperty(p = "POW_PRECISION")) { + v = obj[p]; + intCheck(v, 0, MAX, p); + POW_PRECISION = v; + } + if (obj.hasOwnProperty(p = "FORMAT")) { + v = obj[p]; + if (typeof v == "object") FORMAT = v; + else throw Error(bignumberError + p + " not an object: " + v); + } + if (obj.hasOwnProperty(p = "ALPHABET")) { + v = obj[p]; + if (typeof v == "string" && !/^.?$|[+\-.\s]|(.).*\1/.test(v)) { + alphabetHasNormalDecimalDigits = v.slice(0, 10) == "0123456789"; + ALPHABET = v; + } else { + throw Error(bignumberError + p + " invalid: " + v); + } + } + } else { + throw Error(bignumberError + "Object expected: " + obj); + } + } + return { + DECIMAL_PLACES, + ROUNDING_MODE, + EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS], + RANGE: [MIN_EXP, MAX_EXP], + CRYPTO, + MODULO_MODE, + POW_PRECISION, + FORMAT, + ALPHABET + }; + }; + BigNumber2.isBigNumber = function(v) { + if (!v || v._isBigNumber !== true) return false; + if (!BigNumber2.DEBUG) return true; + var i, n, c = v.c, e = v.e, s = v.s; + out: if ({}.toString.call(c) == "[object Array]") { + if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) { + if (c[0] === 0) { + if (e === 0 && c.length === 1) return true; + break out; + } + i = (e + 1) % LOG_BASE; + if (i < 1) i += LOG_BASE; + if (String(c[0]).length == i) { + for (i = 0; i < c.length; i++) { + n = c[i]; + if (n < 0 || n >= BASE || n !== mathfloor(n)) break out; + } + if (n !== 0) return true; + } + } + } else if (c === null && e === null && (s === null || s === 1 || s === -1)) { + return true; + } + throw Error(bignumberError + "Invalid BigNumber: " + v); + }; + BigNumber2.maximum = BigNumber2.max = function() { + return maxOrMin(arguments, -1); + }; + BigNumber2.minimum = BigNumber2.min = function() { + return maxOrMin(arguments, 1); + }; + BigNumber2.random = function() { + var pow2_53 = 9007199254740992; + var random53bitInt = Math.random() * pow2_53 & 2097151 ? function() { + return mathfloor(Math.random() * pow2_53); + } : function() { + return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0); + }; + return function(dp) { + var a, b, e, k, v, i = 0, c = [], rand = new BigNumber2(ONE); + if (dp == null) dp = DECIMAL_PLACES; + else intCheck(dp, 0, MAX); + k = mathceil(dp / LOG_BASE); + if (CRYPTO) { + if (crypto.getRandomValues) { + a = crypto.getRandomValues(new Uint32Array(k *= 2)); + for (; i < k; ) { + v = a[i] * 131072 + (a[i + 1] >>> 11); + if (v >= 9e15) { + b = crypto.getRandomValues(new Uint32Array(2)); + a[i] = b[0]; + a[i + 1] = b[1]; + } else { + c.push(v % 1e14); + i += 2; + } + } + i = k / 2; + } else if (crypto.randomBytes) { + a = crypto.randomBytes(k *= 7); + for (; i < k; ) { + v = (a[i] & 31) * 281474976710656 + a[i + 1] * 1099511627776 + a[i + 2] * 4294967296 + a[i + 3] * 16777216 + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6]; + if (v >= 9e15) { + crypto.randomBytes(7).copy(a, i); + } else { + c.push(v % 1e14); + i += 7; + } + } + i = k / 7; + } else { + CRYPTO = false; + throw Error(bignumberError + "crypto unavailable"); + } + } + if (!CRYPTO) { + for (; i < k; ) { + v = random53bitInt(); + if (v < 9e15) c[i++] = v % 1e14; + } + } + k = c[--i]; + dp %= LOG_BASE; + if (k && dp) { + v = POWS_TEN[LOG_BASE - dp]; + c[i] = mathfloor(k / v) * v; + } + for (; c[i] === 0; c.pop(), i--) ; + if (i < 0) { + c = [e = 0]; + } else { + for (e = -1; c[0] === 0; c.splice(0, 1), e -= LOG_BASE) ; + for (i = 1, v = c[0]; v >= 10; v /= 10, i++) ; + if (i < LOG_BASE) e -= LOG_BASE - i; + } + rand.e = e; + rand.c = c; + return rand; + }; + }(); + BigNumber2.sum = function() { + var i = 1, args = arguments, sum = new BigNumber2(args[0]); + for (; i < args.length; ) sum = sum.plus(args[i++]); + return sum; + }; + convertBase = /* @__PURE__ */ function() { + var decimal = "0123456789"; + function toBaseOut(str, baseIn, baseOut, alphabet) { + var j, arr = [0], arrL, i = 0, len = str.length; + for (; i < len; ) { + for (arrL = arr.length; arrL--; arr[arrL] *= baseIn) ; + arr[0] += alphabet.indexOf(str.charAt(i++)); + for (j = 0; j < arr.length; j++) { + if (arr[j] > baseOut - 1) { + if (arr[j + 1] == null) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + return arr.reverse(); + } + return function(str, baseIn, baseOut, sign, callerIsToString) { + var alphabet, d, e, k, r, x, xc, y, i = str.indexOf("."), dp = DECIMAL_PLACES, rm = ROUNDING_MODE; + if (i >= 0) { + k = POW_PRECISION; + POW_PRECISION = 0; + str = str.replace(".", ""); + y = new BigNumber2(baseIn); + x = y.pow(str.length - i); + POW_PRECISION = k; + y.c = toBaseOut( + toFixedPoint(coeffToString(x.c), x.e, "0"), + 10, + baseOut, + decimal + ); + y.e = y.c.length; + } + xc = toBaseOut(str, baseIn, baseOut, callerIsToString ? (alphabet = ALPHABET, decimal) : (alphabet = decimal, ALPHABET)); + e = k = xc.length; + for (; xc[--k] == 0; xc.pop()) ; + if (!xc[0]) return alphabet.charAt(0); + if (i < 0) { + --e; + } else { + x.c = xc; + x.e = e; + x.s = sign; + x = div(x, y, dp, rm, baseOut); + xc = x.c; + r = x.r; + e = x.e; + } + d = e + dp + 1; + i = xc[d]; + k = baseOut / 2; + r = r || d < 0 || xc[d + 1] != null; + r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : i > k || i == k && (rm == 4 || r || rm == 6 && xc[d - 1] & 1 || rm == (x.s < 0 ? 8 : 7)); + if (d < 1 || !xc[0]) { + str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0); + } else { + xc.length = d; + if (r) { + for (--baseOut; ++xc[--d] > baseOut; ) { + xc[d] = 0; + if (!d) { + ++e; + xc = [1].concat(xc); + } + } + } + for (k = xc.length; !xc[--k]; ) ; + for (i = 0, str = ""; i <= k; str += alphabet.charAt(xc[i++])) ; + str = toFixedPoint(str, e, alphabet.charAt(0)); + } + return str; + }; + }(); + div = /* @__PURE__ */ function() { + function multiply(x, k, base) { + var m, temp, xlo, xhi, carry = 0, i = x.length, klo = k % SQRT_BASE, khi = k / SQRT_BASE | 0; + for (x = x.slice(); i--; ) { + xlo = x[i] % SQRT_BASE; + xhi = x[i] / SQRT_BASE | 0; + m = khi * xlo + xhi * klo; + temp = klo * xlo + m % SQRT_BASE * SQRT_BASE + carry; + carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi; + x[i] = temp % base; + } + if (carry) x = [carry].concat(x); + return x; + } + function compare3(a, b, aL, bL) { + var i, cmp; + if (aL != bL) { + cmp = aL > bL ? 1 : -1; + } else { + for (i = cmp = 0; i < aL; i++) { + if (a[i] != b[i]) { + cmp = a[i] > b[i] ? 1 : -1; + break; + } + } + } + return cmp; + } + function subtract(a, b, aL, base) { + var i = 0; + for (; aL--; ) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + for (; !a[0] && a.length > 1; a.splice(0, 1)) ; + } + return function(x, y, dp, rm, base) { + var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, yL, yz, s = x.s == y.s ? 1 : -1, xc = x.c, yc = y.c; + if (!xc || !xc[0] || !yc || !yc[0]) { + return new BigNumber2( + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : ( + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s * 0 : s / 0 + ) + ); + } + q = new BigNumber2(s); + qc = q.c = []; + e = x.e - y.e; + s = dp + e + 1; + if (!base) { + base = BASE; + e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE); + s = s / LOG_BASE | 0; + } + for (i = 0; yc[i] == (xc[i] || 0); i++) ; + if (yc[i] > (xc[i] || 0)) e--; + if (s < 0) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i = 0; + s += 2; + n = mathfloor(base / (yc[0] + 1)); + if (n > 1) { + yc = multiply(yc, n, base); + xc = multiply(xc, n, base); + yL = yc.length; + xL = xc.length; + } + xi = yL; + rem = xc.slice(0, yL); + remL = rem.length; + for (; remL < yL; rem[remL++] = 0) ; + yz = yc.slice(); + yz = [0].concat(yz); + yc0 = yc[0]; + if (yc[1] >= base / 2) yc0++; + do { + n = 0; + cmp = compare3(yc, rem, yL, remL); + if (cmp < 0) { + rem0 = rem[0]; + if (yL != remL) rem0 = rem0 * base + (rem[1] || 0); + n = mathfloor(rem0 / yc0); + if (n > 1) { + if (n >= base) n = base - 1; + prod = multiply(yc, n, base); + prodL = prod.length; + remL = rem.length; + while (compare3(prod, rem, prodL, remL) == 1) { + n--; + subtract(prod, yL < prodL ? yz : yc, prodL, base); + prodL = prod.length; + cmp = 1; + } + } else { + if (n == 0) { + cmp = n = 1; + } + prod = yc.slice(); + prodL = prod.length; + } + if (prodL < remL) prod = [0].concat(prod); + subtract(rem, prod, remL, base); + remL = rem.length; + if (cmp == -1) { + while (compare3(yc, rem, yL, remL) < 1) { + n++; + subtract(rem, yL < remL ? yz : yc, remL, base); + remL = rem.length; + } + } + } else if (cmp === 0) { + n++; + rem = [0]; + } + qc[i++] = n; + if (rem[0]) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [xc[xi]]; + remL = 1; + } + } while ((xi++ < xL || rem[0] != null) && s--); + more = rem[0] != null; + if (!qc[0]) qc.splice(0, 1); + } + if (base == BASE) { + for (i = 1, s = qc[0]; s >= 10; s /= 10, i++) ; + round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more); + } else { + q.e = e; + q.r = +more; + } + return q; + }; + }(); + function format(n, i, rm, id) { + var c0, e, ne, len, str; + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + if (!n.c) return n.toString(); + c0 = n.c[0]; + ne = n.e; + if (i == null) { + str = coeffToString(n.c); + str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) ? toExponential(str, ne) : toFixedPoint(str, ne, "0"); + } else { + n = round(new BigNumber2(n), i, rm); + e = n.e; + str = coeffToString(n.c); + len = str.length; + if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) { + for (; len < i; str += "0", len++) ; + str = toExponential(str, e); + } else { + i -= ne + (id === 2 && e > ne); + str = toFixedPoint(str, e, "0"); + if (e + 1 > len) { + if (--i > 0) for (str += "."; i--; str += "0") ; + } else { + i += e - len; + if (i > 0) { + if (e + 1 == len) str += "."; + for (; i--; str += "0") ; + } + } + } + } + return n.s < 0 && c0 ? "-" + str : str; + } + function maxOrMin(args, n) { + var k, y, i = 1, x = new BigNumber2(args[0]); + for (; i < args.length; i++) { + y = new BigNumber2(args[i]); + if (!y.s || (k = compare2(x, y)) === n || k === 0 && x.s === n) { + x = y; + } + } + return x; + } + function normalise(n, c, e) { + var i = 1, j = c.length; + for (; !c[--j]; c.pop()) ; + for (j = c[0]; j >= 10; j /= 10, i++) ; + if ((e = i + e * LOG_BASE - 1) > MAX_EXP) { + n.c = n.e = null; + } else if (e < MIN_EXP) { + n.c = [n.e = 0]; + } else { + n.e = e; + n.c = c; + } + return n; + } + parseNumeric = /* @__PURE__ */ function() { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, dotAfter = /^([^.]+)\.$/, dotBefore = /^\.([^.]+)$/, isInfinityOrNaN = /^-?(Infinity|NaN)$/, whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + return function(x, str, isNum, b) { + var base, s = isNum ? str : str.replace(whitespaceOrPlus, ""); + if (isInfinityOrNaN.test(s)) { + x.s = isNaN(s) ? null : s < 0 ? -1 : 1; + } else { + if (!isNum) { + s = s.replace(basePrefix, function(m, p1, p2) { + base = (p2 = p2.toLowerCase()) == "x" ? 16 : p2 == "b" ? 2 : 8; + return !b || b == base ? p1 : m; + }); + if (b) { + base = b; + s = s.replace(dotAfter, "$1").replace(dotBefore, "0.$1"); + } + if (str != s) return new BigNumber2(s, base); + } + if (BigNumber2.DEBUG) { + throw Error(bignumberError + "Not a" + (b ? " base " + b : "") + " number: " + str); + } + x.s = null; + } + x.c = x.e = null; + }; + }(); + function round(x, sd, rm, r) { + var d, i, j, k, n, ni, rd, xc = x.c, pows10 = POWS_TEN; + if (xc) { + out: { + for (d = 1, k = xc[0]; k >= 10; k /= 10, d++) ; + i = sd - d; + if (i < 0) { + i += LOG_BASE; + j = sd; + n = xc[ni = 0]; + rd = mathfloor(n / pows10[d - j - 1] % 10); + } else { + ni = mathceil((i + 1) / LOG_BASE); + if (ni >= xc.length) { + if (r) { + for (; xc.length <= ni; xc.push(0)) ; + n = rd = 0; + d = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + for (d = 1; k >= 10; k /= 10, d++) ; + i %= LOG_BASE; + j = i - LOG_BASE + d; + rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10); + } + } + r = r || sd < 0 || // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[d - j - 1] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]); + r = rm < 4 ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && // Check whether the digit to the left of the rounding digit is odd. + (i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7)); + if (sd < 1 || !xc[0]) { + xc.length = 0; + if (r) { + sd -= x.e + 1; + xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE]; + x.e = -sd || 0; + } else { + xc[0] = x.e = 0; + } + return x; + } + if (i == 0) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[LOG_BASE - i]; + xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0; + } + if (r) { + for (; ; ) { + if (ni == 0) { + for (i = 1, j = xc[0]; j >= 10; j /= 10, i++) ; + j = xc[0] += k; + for (k = 1; j >= 10; j /= 10, k++) ; + if (i != k) { + x.e++; + if (xc[0] == BASE) xc[0] = 1; + } + break; + } else { + xc[ni] += k; + if (xc[ni] != BASE) break; + xc[ni--] = 0; + k = 1; + } + } + } + for (i = xc.length; xc[--i] === 0; xc.pop()) ; + } + if (x.e > MAX_EXP) { + x.c = x.e = null; + } else if (x.e < MIN_EXP) { + x.c = [x.e = 0]; + } + } + return x; + } + function valueOf(n) { + var str, e = n.e; + if (e === null) return n.toString(); + str = coeffToString(n.c); + str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(str, e) : toFixedPoint(str, e, "0"); + return n.s < 0 ? "-" + str : str; + } + P.absoluteValue = P.abs = function() { + var x = new BigNumber2(this); + if (x.s < 0) x.s = 1; + return x; + }; + P.comparedTo = function(y, b) { + return compare2(this, new BigNumber2(y, b)); + }; + P.decimalPlaces = P.dp = function(dp, rm) { + var c, n, v, x = this; + if (dp != null) { + intCheck(dp, 0, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + return round(new BigNumber2(x), dp + x.e + 1, rm); + } + if (!(c = x.c)) return null; + n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE; + if (v = c[v]) for (; v % 10 == 0; v /= 10, n--) ; + if (n < 0) n = 0; + return n; + }; + P.dividedBy = P.div = function(y, b) { + return div(this, new BigNumber2(y, b), DECIMAL_PLACES, ROUNDING_MODE); + }; + P.dividedToIntegerBy = P.idiv = function(y, b) { + return div(this, new BigNumber2(y, b), 0, 1); + }; + P.exponentiatedBy = P.pow = function(n, m) { + var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, x = this; + n = new BigNumber2(n); + if (n.c && !n.isInteger()) { + throw Error(bignumberError + "Exponent not an integer: " + valueOf(n)); + } + if (m != null) m = new BigNumber2(m); + nIsBig = n.e > 14; + if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) { + y = new BigNumber2(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n))); + return m ? y.mod(m) : y; + } + nIsNeg = n.s < 0; + if (m) { + if (m.c ? !m.c[0] : !m.s) return new BigNumber2(NaN); + isModExp = !nIsNeg && x.isInteger() && m.isInteger(); + if (isModExp) x = x.mod(m); + } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) { + k = x.s < 0 && isOdd(n) ? -0 : 0; + if (x.e > -1) k = 1 / k; + return new BigNumber2(nIsNeg ? 1 / k : k); + } else if (POW_PRECISION) { + k = mathceil(POW_PRECISION / LOG_BASE + 2); + } + if (nIsBig) { + half = new BigNumber2(0.5); + if (nIsNeg) n.s = 1; + nIsOdd = isOdd(n); + } else { + i = Math.abs(+valueOf(n)); + nIsOdd = i % 2; + } + y = new BigNumber2(ONE); + for (; ; ) { + if (nIsOdd) { + y = y.times(x); + if (!y.c) break; + if (k) { + if (y.c.length > k) y.c.length = k; + } else if (isModExp) { + y = y.mod(m); + } + } + if (i) { + i = mathfloor(i / 2); + if (i === 0) break; + nIsOdd = i % 2; + } else { + n = n.times(half); + round(n, n.e + 1, 1); + if (n.e > 14) { + nIsOdd = isOdd(n); + } else { + i = +valueOf(n); + if (i === 0) break; + nIsOdd = i % 2; + } + } + x = x.times(x); + if (k) { + if (x.c && x.c.length > k) x.c.length = k; + } else if (isModExp) { + x = x.mod(m); + } + } + if (isModExp) return y; + if (nIsNeg) y = ONE.div(y); + return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y; + }; + P.integerValue = function(rm) { + var n = new BigNumber2(this); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + return round(n, n.e + 1, rm); + }; + P.isEqualTo = P.eq = function(y, b) { + return compare2(this, new BigNumber2(y, b)) === 0; + }; + P.isFinite = function() { + return !!this.c; + }; + P.isGreaterThan = P.gt = function(y, b) { + return compare2(this, new BigNumber2(y, b)) > 0; + }; + P.isGreaterThanOrEqualTo = P.gte = function(y, b) { + return (b = compare2(this, new BigNumber2(y, b))) === 1 || b === 0; + }; + P.isInteger = function() { + return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2; + }; + P.isLessThan = P.lt = function(y, b) { + return compare2(this, new BigNumber2(y, b)) < 0; + }; + P.isLessThanOrEqualTo = P.lte = function(y, b) { + return (b = compare2(this, new BigNumber2(y, b))) === -1 || b === 0; + }; + P.isNaN = function() { + return !this.s; + }; + P.isNegative = function() { + return this.s < 0; + }; + P.isPositive = function() { + return this.s > 0; + }; + P.isZero = function() { + return !!this.c && this.c[0] == 0; + }; + P.minus = function(y, b) { + var i, j, t, xLTy, x = this, a = x.s; + y = new BigNumber2(y, b); + b = y.s; + if (!a || !b) return new BigNumber2(NaN); + if (a != b) { + y.s = -b; + return x.plus(y); + } + var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c; + if (!xe || !ye) { + if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber2(yc ? x : NaN); + if (!xc[0] || !yc[0]) { + return yc[0] ? (y.s = -b, y) : new BigNumber2(xc[0] ? x : ( + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0 + )); + } + } + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + if (a = xe - ye) { + if (xLTy = a < 0) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + t.reverse(); + for (b = a; b--; t.push(0)) ; + t.reverse(); + } else { + j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b; + for (a = b = 0; b < j; b++) { + if (xc[b] != yc[b]) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + if (xLTy) { + t = xc; + xc = yc; + yc = t; + y.s = -y.s; + } + b = (j = yc.length) - (i = xc.length); + if (b > 0) for (; b--; xc[i++] = 0) ; + b = BASE - 1; + for (; j > a; ) { + if (xc[--j] < yc[j]) { + for (i = j; i && !xc[--i]; xc[i] = b) ; + --xc[i]; + xc[j] += BASE; + } + xc[j] -= yc[j]; + } + for (; xc[0] == 0; xc.splice(0, 1), --ye) ; + if (!xc[0]) { + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [y.e = 0]; + return y; + } + return normalise(y, xc, ye); + }; + P.modulo = P.mod = function(y, b) { + var q, s, x = this; + y = new BigNumber2(y, b); + if (!x.c || !y.s || y.c && !y.c[0]) { + return new BigNumber2(NaN); + } else if (!y.c || x.c && !x.c[0]) { + return new BigNumber2(x); + } + if (MODULO_MODE == 9) { + s = y.s; + y.s = 1; + q = div(x, y, 0, 3); + y.s = s; + q.s *= s; + } else { + q = div(x, y, 0, MODULO_MODE); + } + y = x.minus(q.times(y)); + if (!y.c[0] && MODULO_MODE == 1) y.s = x.s; + return y; + }; + P.multipliedBy = P.times = function(y, b) { + var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, base, sqrtBase, x = this, xc = x.c, yc = (y = new BigNumber2(y, b)).c; + if (!xc || !yc || !xc[0] || !yc[0]) { + if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) { + y.c = y.e = y.s = null; + } else { + y.s *= x.s; + if (!xc || !yc) { + y.c = y.e = null; + } else { + y.c = [0]; + y.e = 0; + } + } + return y; + } + e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE); + y.s *= x.s; + xcL = xc.length; + ycL = yc.length; + if (xcL < ycL) { + zc = xc; + xc = yc; + yc = zc; + i = xcL; + xcL = ycL; + ycL = i; + } + for (i = xcL + ycL, zc = []; i--; zc.push(0)) ; + base = BASE; + sqrtBase = SQRT_BASE; + for (i = ycL; --i >= 0; ) { + c = 0; + ylo = yc[i] % sqrtBase; + yhi = yc[i] / sqrtBase | 0; + for (k = xcL, j = i + k; j > i; ) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + m % sqrtBase * sqrtBase + zc[j] + c; + c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi; + zc[j--] = xlo % base; + } + zc[j] = c; + } + if (c) { + ++e; + } else { + zc.splice(0, 1); + } + return normalise(y, zc, e); + }; + P.negated = function() { + var x = new BigNumber2(this); + x.s = -x.s || null; + return x; + }; + P.plus = function(y, b) { + var t, x = this, a = x.s; + y = new BigNumber2(y, b); + b = y.s; + if (!a || !b) return new BigNumber2(NaN); + if (a != b) { + y.s = -b; + return x.minus(y); + } + var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c; + if (!xe || !ye) { + if (!xc || !yc) return new BigNumber2(a / 0); + if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber2(xc[0] ? x : a * 0); + } + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + if (a = xe - ye) { + if (a > 0) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + t.reverse(); + for (; a--; t.push(0)) ; + t.reverse(); + } + a = xc.length; + b = yc.length; + if (a - b < 0) { + t = yc; + yc = xc; + xc = t; + b = a; + } + for (a = 0; b; ) { + a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + if (a) { + xc = [a].concat(xc); + ++ye; + } + return normalise(y, xc, ye); + }; + P.precision = P.sd = function(sd, rm) { + var c, n, v, x = this; + if (sd != null && sd !== !!sd) { + intCheck(sd, 1, MAX); + if (rm == null) rm = ROUNDING_MODE; + else intCheck(rm, 0, 8); + return round(new BigNumber2(x), sd, rm); + } + if (!(c = x.c)) return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + if (v = c[v]) { + for (; v % 10 == 0; v /= 10, n--) ; + for (v = c[0]; v >= 10; v /= 10, n++) ; + } + if (sd && x.e + 1 > n) n = x.e + 1; + return n; + }; + P.shiftedBy = function(k) { + intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER); + return this.times("1e" + k); + }; + P.squareRoot = P.sqrt = function() { + var m, n, r, rep, t, x = this, c = x.c, s = x.s, e = x.e, dp = DECIMAL_PLACES + 4, half = new BigNumber2("0.5"); + if (s !== 1 || !c || !c[0]) { + return new BigNumber2(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0); + } + s = Math.sqrt(+valueOf(x)); + if (s == 0 || s == 1 / 0) { + n = coeffToString(c); + if ((n.length + e) % 2 == 0) n += "0"; + s = Math.sqrt(+n); + e = bitFloor((e + 1) / 2) - (e < 0 || e % 2); + if (s == 1 / 0) { + n = "5e" + e; + } else { + n = s.toExponential(); + n = n.slice(0, n.indexOf("e") + 1) + e; + } + r = new BigNumber2(n); + } else { + r = new BigNumber2(s + ""); + } + if (r.c[0]) { + e = r.e; + s = e + dp; + if (s < 3) s = 0; + for (; ; ) { + t = r; + r = half.times(t.plus(div(x, t, dp, 1))); + if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) { + if (r.e < e) --s; + n = n.slice(s - 3, s + 1); + if (n == "9999" || !rep && n == "4999") { + if (!rep) { + round(t, t.e + DECIMAL_PLACES + 2, 0); + if (t.times(t).eq(x)) { + r = t; + break; + } + } + dp += 4; + s += 4; + rep = 1; + } else { + if (!+n || !+n.slice(1) && n.charAt(0) == "5") { + round(r, r.e + DECIMAL_PLACES + 2, 1); + m = !r.times(r).eq(x); + } + break; + } + } + } + } + return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m); + }; + P.toExponential = function(dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp++; + } + return format(this, dp, rm, 1); + }; + P.toFixed = function(dp, rm) { + if (dp != null) { + intCheck(dp, 0, MAX); + dp = dp + this.e + 1; + } + return format(this, dp, rm); + }; + P.toFormat = function(dp, rm, format2) { + var str, x = this; + if (format2 == null) { + if (dp != null && rm && typeof rm == "object") { + format2 = rm; + rm = null; + } else if (dp && typeof dp == "object") { + format2 = dp; + dp = rm = null; + } else { + format2 = FORMAT; + } + } else if (typeof format2 != "object") { + throw Error(bignumberError + "Argument not an object: " + format2); + } + str = x.toFixed(dp, rm); + if (x.c) { + var i, arr = str.split("."), g1 = +format2.groupSize, g2 = +format2.secondaryGroupSize, groupSeparator = format2.groupSeparator || "", intPart = arr[0], fractionPart = arr[1], isNeg = x.s < 0, intDigits = isNeg ? intPart.slice(1) : intPart, len = intDigits.length; + if (g2) { + i = g1; + g1 = g2; + g2 = i; + len -= i; + } + if (g1 > 0 && len > 0) { + i = len % g1 || g1; + intPart = intDigits.substr(0, i); + for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1); + if (g2 > 0) intPart += groupSeparator + intDigits.slice(i); + if (isNeg) intPart = "-" + intPart; + } + str = fractionPart ? intPart + (format2.decimalSeparator || "") + ((g2 = +format2.fractionGroupSize) ? fractionPart.replace( + new RegExp("\\d{" + g2 + "}\\B", "g"), + "$&" + (format2.fractionGroupSeparator || "") + ) : fractionPart) : intPart; + } + return (format2.prefix || "") + str + (format2.suffix || ""); + }; + P.toFraction = function(md) { + var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, x = this, xc = x.c; + if (md != null) { + n = new BigNumber2(md); + if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) { + throw Error(bignumberError + "Argument " + (n.isInteger() ? "out of range: " : "not an integer: ") + valueOf(n)); + } + } + if (!xc) return new BigNumber2(x); + d = new BigNumber2(ONE); + n1 = d0 = new BigNumber2(ONE); + d1 = n0 = new BigNumber2(ONE); + s = coeffToString(xc); + e = d.e = s.length - x.e - 1; + d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp]; + md = !md || n.comparedTo(d) > 0 ? e > 0 ? d : n1 : n; + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber2(s); + n0.c[0] = 0; + for (; ; ) { + q = div(n, d, 0, 1); + d2 = d0.plus(q.times(d1)); + if (d2.comparedTo(md) == 1) break; + d0 = d1; + d1 = d2; + n1 = n0.plus(q.times(d2 = n1)); + n0 = d2; + d = n.minus(q.times(d2 = d)); + n = d2; + } + d2 = div(md.minus(d0), d1, 0, 1); + n0 = n0.plus(d2.times(n1)); + d0 = d0.plus(d2.times(d1)); + n0.s = n1.s = x.s; + e = e * 2; + r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo( + div(n0, d0, e, ROUNDING_MODE).minus(x).abs() + ) < 1 ? [n1, d1] : [n0, d0]; + MAX_EXP = exp; + return r; + }; + P.toNumber = function() { + return +valueOf(this); + }; + P.toPrecision = function(sd, rm) { + if (sd != null) intCheck(sd, 1, MAX); + return format(this, sd, rm, 2); + }; + P.toString = function(b) { + var str, n = this, s = n.s, e = n.e; + if (e === null) { + if (s) { + str = "Infinity"; + if (s < 0) str = "-" + str; + } else { + str = "NaN"; + } + } else { + if (b == null) { + str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(coeffToString(n.c), e) : toFixedPoint(coeffToString(n.c), e, "0"); + } else if (b === 10 && alphabetHasNormalDecimalDigits) { + n = round(new BigNumber2(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE); + str = toFixedPoint(coeffToString(n.c), n.e, "0"); + } else { + intCheck(b, 2, ALPHABET.length, "Base"); + str = convertBase(toFixedPoint(coeffToString(n.c), e, "0"), 10, b, s, true); + } + if (s < 0 && n.c[0]) str = "-" + str; + } + return str; + }; + P.valueOf = P.toJSON = function() { + return valueOf(this); + }; + P._isBigNumber = true; + if (configObject != null) BigNumber2.set(configObject); + return BigNumber2; + } + function bitFloor(n) { + var i = n | 0; + return n > 0 || n === i ? i : i - 1; + } + function coeffToString(a) { + var s, z, i = 1, j = a.length, r = a[0] + ""; + for (; i < j; ) { + s = a[i++] + ""; + z = LOG_BASE - s.length; + for (; z--; s = "0" + s) ; + r += s; + } + for (j = r.length; r.charCodeAt(--j) === 48; ) ; + return r.slice(0, j + 1 || 1); + } + function compare2(x, y) { + var a, b, xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e; + if (!i || !j) return null; + a = xc && !xc[0]; + b = yc && !yc[0]; + if (a || b) return a ? b ? 0 : -j : i; + if (i != j) return i; + a = i < 0; + b = k == l; + if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1; + if (!b) return k > l ^ a ? 1 : -1; + j = (k = xc.length) < (l = yc.length) ? k : l; + for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1; + return k == l ? 0 : k > l ^ a ? 1 : -1; + } + function intCheck(n, min, max, name) { + if (n < min || n > max || n !== mathfloor(n)) { + throw Error(bignumberError + (name || "Argument") + (typeof n == "number" ? n < min || n > max ? " out of range: " : " not an integer: " : " not a primitive number: ") + String(n)); + } + } + function isOdd(n) { + var k = n.c.length - 1; + return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0; + } + function toExponential(str, e) { + return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e < 0 ? "e" : "e+") + e; + } + function toFixedPoint(str, e, z) { + var len, zs; + if (e < 0) { + for (zs = z + "."; ++e; zs += z) ; + str = zs + str; + } else { + len = str.length; + if (++e > len) { + for (zs = z, e -= len; --e; zs += z) ; + str += zs; + } else if (e < len) { + str = str.slice(0, e) + "." + str.slice(e); + } + } + return str; + } + BigNumber = clone(); + BigNumber["default"] = BigNumber.BigNumber = BigNumber; + if (typeof define == "function" && define.amd) { + define(function() { + return BigNumber; }); - Object.defineProperty(this, "shortMessage", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 + } else if (typeof module2 != "undefined" && module2.exports) { + module2.exports = BigNumber; + } else { + if (!globalObject) { + globalObject = typeof self != "undefined" && self ? self : window; + } + globalObject.BigNumber = BigNumber; + } + })(exports2); + } +}); + +// node_modules/@trezor/utils/lib/bigNumber.js +var require_bigNumber = __commonJS({ + "node_modules/@trezor/utils/lib/bigNumber.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BigNumber = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bignumber_js_1 = tslib_1.__importDefault(require_bignumber()); + exports2.BigNumber = bignumber_js_1.default.clone({ + EXPONENTIAL_AT: 1e9 + }); + } +}); + +// node_modules/@trezor/utils/lib/bytesToHumanReadable.js +var require_bytesToHumanReadable = __commonJS({ + "node_modules/@trezor/utils/lib/bytesToHumanReadable.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.bytesToHumanReadable = void 0; + var units = ["B", "KB", "MB", "GB", "TB"]; + var bytesToHumanReadable = (bytes) => { + let size = Math.abs(bytes); + let i = 0; + while (size >= 1024 || i >= units.length) { + size /= 1024; + i++; + } + return `${size.toFixed(1)} ${units[i]}`; + }; + exports2.bytesToHumanReadable = bytesToHumanReadable; + } +}); + +// node_modules/@trezor/utils/lib/cache.js +var require_cache = __commonJS({ + "node_modules/@trezor/utils/lib/cache.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Cache = void 0; + var Cache = class { + store; + constructor() { + this.store = /* @__PURE__ */ new Map(); + } + set(key, value, ttl) { + this.store.set(key, { + value, + ttl: Date.now() + ttl }); - Object.defineProperty(this, "version", { - enumerable: true, - configurable: true, + } + get(key) { + const entry = this.store.get(key); + if (!entry) return; + if (entry.ttl < Date.now()) { + this.store.delete(key); + return; + } + return entry.value; + } + delete(key) { + this.store.delete(key); + } + }; + exports2.Cache = Cache; + } +}); + +// node_modules/@trezor/utils/lib/capitalizeFirstLetter.js +var require_capitalizeFirstLetter = __commonJS({ + "node_modules/@trezor/utils/lib/capitalizeFirstLetter.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.capitalizeFirstLetter = void 0; + var capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1); + exports2.capitalizeFirstLetter = capitalizeFirstLetter; + } +}); + +// node_modules/@trezor/utils/lib/cloneObject.js +var require_cloneObject = __commonJS({ + "node_modules/@trezor/utils/lib/cloneObject.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.cloneObject = void 0; + var cloneObject = (obj, seen = /* @__PURE__ */ new WeakMap()) => { + if (obj === null || typeof obj !== "object") { + return obj; + } + if (seen.has(obj)) { + return seen.get(obj); + } + if (obj instanceof ArrayBuffer) { + return obj.slice(0); + } + if (ArrayBuffer.isView(obj)) { + const TypedArrayConstructor = obj.constructor; + return new TypedArrayConstructor(obj); + } + const clone = Array.isArray(obj) ? [] : {}; + seen.set(obj, clone); + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const value = obj[key]; + if (typeof value === "function" || typeof value === "symbol") { + continue; + } + clone[key] = (0, exports2.cloneObject)(value, seen); + } + } + return clone; + }; + exports2.cloneObject = cloneObject; + } +}); + +// node_modules/@trezor/utils/lib/comparison.js +var require_comparison = __commonJS({ + "node_modules/@trezor/utils/lib/comparison.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isChanged = exports2.deepEqual = void 0; + var deepEqual = (a, b) => { + if (a === b) return true; + if (typeof a !== typeof b) return false; + if (a === null || b === null) return false; + if (typeof a !== "object") return false; + if (Array.isArray(a) !== Array.isArray(b)) return false; + if (Array.isArray(a)) { + if (a.length !== b.length) return false; + for (let i = 0; i < a.length; i++) { + if (!(0, exports2.deepEqual)(a[i], b[i])) return false; + } + return true; + } + const keysA = Object.keys(a); + const keysB = Object.keys(b); + if (keysA.length !== keysB.length) return false; + for (const key of keysA) { + if (!Object.prototype.hasOwnProperty.call(b, key)) return false; + if (!(0, exports2.deepEqual)(a[key], b[key])) return false; + } + return true; + }; + exports2.deepEqual = deepEqual; + var isChanged = (prev, current, filter) => { + if (prev === current) return false; + if (!prev || !current) return true; + const prevType = Object.prototype.toString.call(prev); + const currentType = Object.prototype.toString.call(current); + if (prevType !== currentType) return true; + if (currentType === "[object Array]") { + if (prev.length !== current.length) return true; + for (let i = 0; i < current.length; i++) { + if ((0, exports2.isChanged)(prev[i], current[i], filter)) return true; + } + } else if (currentType === "[object Object]") { + const prevKeys = Object.keys(prev); + const currentKeys = Object.keys(current); + if (prevKeys.length !== currentKeys.length) return true; + const prevDifference = prevKeys.find((k) => currentKeys.indexOf(k) < 0); + if (prevDifference) return true; + for (let i = 0; i < currentKeys.length; i++) { + const key = currentKeys[i]; + if (filter && Object.prototype.hasOwnProperty.call(filter, key) && prev[key] && current[key]) { + const prevFiltered = {}; + const currentFiltered = {}; + for (let i2 = 0; i2 < filter[key].length; i2++) { + const field = filter[key][i2]; + prevFiltered[field] = prev[key][field]; + currentFiltered[field] = current[key][field]; + } + if ((0, exports2.isChanged)(prevFiltered, currentFiltered)) return true; + } else if ((0, exports2.isChanged)(prev[key], current[key])) { + return true; + } + } + } else if (prev !== current) { + return true; + } + return false; + }; + exports2.isChanged = isChanged; + } +}); + +// node_modules/@trezor/utils/lib/convertTaprootXpub.js +var require_convertTaprootXpub = __commonJS({ + "node_modules/@trezor/utils/lib/convertTaprootXpub.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.convertTaprootXpub = void 0; + var convertTaprootXpub = ({ + xpub, + direction + }) => { + const find = direction === "h-to-apostrophe" ? "h" : "'"; + const replace = direction === "h-to-apostrophe" ? "'" : "h"; + const openingSquareBracketSplit = xpub.split("["); + if (openingSquareBracketSplit.length === 2) { + const [beforeOpeningBracket, afterOpeningBracket] = openingSquareBracketSplit; + const closingSquareBracketSplit = afterOpeningBracket.split("]"); + if (closingSquareBracketSplit.length === 2) { + const [path2, afterClosingBracket] = closingSquareBracketSplit; + const correctedPath = path2.replace(new RegExp(find, "g"), replace); + return `${beforeOpeningBracket}[${correctedPath}]${afterClosingBracket}`; + } + } + return null; + }; + exports2.convertTaprootXpub = convertTaprootXpub; + } +}); + +// node_modules/@trezor/utils/lib/countBytesInString.js +var require_countBytesInString = __commonJS({ + "node_modules/@trezor/utils/lib/countBytesInString.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.countBytesInString = void 0; + var countBytesInString = (input) => encodeURI(input).split(/%..|./).length - 1; + exports2.countBytesInString = countBytesInString; + } +}); + +// node_modules/@trezor/utils/lib/createCooldown.js +var require_createCooldown = __commonJS({ + "node_modules/@trezor/utils/lib/createCooldown.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createCooldown = void 0; + var createCooldown = (cooldownMs) => { + let last = 0; + return () => { + const now = Date.now(); + if (now - last >= cooldownMs) { + last = now; + return true; + } + return false; + }; + }; + exports2.createCooldown = createCooldown; + } +}); + +// node_modules/@trezor/utils/lib/createDeferred.js +var require_createDeferred = __commonJS({ + "node_modules/@trezor/utils/lib/createDeferred.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createDeferred = void 0; + var createDeferred = (id) => { + let localResolve = () => { + }; + let localReject = () => { + }; + const promise = new Promise((resolve, reject) => { + localResolve = resolve; + localReject = reject; + }); + return { + id, + resolve: localResolve, + reject: localReject, + promise + }; + }; + exports2.createDeferred = createDeferred; + } +}); + +// node_modules/@trezor/utils/lib/createDeferredManager.js +var require_createDeferredManager = __commonJS({ + "node_modules/@trezor/utils/lib/createDeferredManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createDeferredManager = void 0; + var createDeferred_1 = require_createDeferred(); + var createDeferredManager = (options) => { + const { + initialId = 0, + timeout: defaultTimeout = 0, + onTimeout + } = options ?? {}; + const promises = []; + let ID = initialId; + let timeoutHandle; + const length = () => promises.length; + const nextId = () => ID; + const replanTimeout = () => { + const now = Date.now(); + const nearestDeadline = promises.reduce((prev, { + deadline + }) => (prev && deadline ? Math.min : Math.max)(prev, deadline), 0); + if (timeoutHandle) clearTimeout(timeoutHandle); + timeoutHandle = nearestDeadline ? setTimeout(timeoutCallback, Math.max(nearestDeadline - now, 0)) : void 0; + }; + const timeoutCallback = () => { + const now = Date.now(); + promises.filter((promise) => promise.deadline && promise.deadline <= now).forEach((promise) => { + onTimeout?.(promise.id); + promise.deadline = 0; + }); + replanTimeout(); + }; + const create = (timeout = defaultTimeout) => { + const promiseId = ID++; + const deferred = (0, createDeferred_1.createDeferred)(promiseId); + const deadline = timeout && Date.now() + timeout; + promises.push({ + ...deferred, + deadline + }); + if (timeout) replanTimeout(); + return { + promiseId, + promise: deferred.promise + }; + }; + const extract = (promiseId) => { + const index = promises.findIndex(({ + id + }) => id === promiseId); + const [promise] = index >= 0 ? promises.splice(index, 1) : [void 0]; + if (promise?.deadline) replanTimeout(); + return promise; + }; + const resolve = (promiseId, value) => { + const promise = extract(promiseId); + promise?.resolve(value); + return !!promise; + }; + const reject = (promiseId, error) => { + const promise = extract(promiseId); + promise?.reject(error); + return !!promise; + }; + const rejectAll = (error) => { + promises.forEach((promise) => promise.reject(error)); + const deleted = promises.splice(0, promises.length); + if (deleted.length) replanTimeout(); + }; + return { + length, + nextId, + create, + resolve, + reject, + rejectAll + }; + }; + exports2.createDeferredManager = createDeferredManager; + } +}); + +// node_modules/@trezor/utils/lib/createLazy.js +var require_createLazy = __commonJS({ + "node_modules/@trezor/utils/lib/createLazy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createLazy = void 0; + var createDeferred_1 = require_createDeferred(); + var createLazy = (initLazy, disposeLazy) => { + let value; + let valuePromise; + const get = () => value; + const getPending = () => valuePromise?.promise; + const dispose = () => { + if (valuePromise) { + valuePromise.reject(new Error("Disposed during initialization")); + valuePromise = void 0; + } + if (value !== void 0) { + disposeLazy?.(value); + value = void 0; + } + }; + const getOrInit = (...args) => { + if (value !== void 0) return Promise.resolve(value); + if (!valuePromise) { + const deferred = (0, createDeferred_1.createDeferred)(); + valuePromise = deferred; + initLazy(...args).then((val) => { + value = val; + valuePromise = void 0; + deferred.resolve(val); + }).catch((err2) => { + valuePromise = void 0; + deferred.reject(err2); + }); + } + return valuePromise.promise; + }; + return { + get, + getPending, + getOrInit, + dispose + }; + }; + exports2.createLazy = createLazy; + } +}); + +// node_modules/@trezor/utils/lib/extractUrlsFromText.js +var require_extractUrlsFromText = __commonJS({ + "node_modules/@trezor/utils/lib/extractUrlsFromText.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.extractUrlsFromText = void 0; + var URL_REGEX = /\b(?:https?:\/\/|www\.)[a-zA-Z0-9-._~:/?#[\]@!$&'()*+,;=%]+\b|(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(?=\b|\s|$|\])/gi; + var extractUrlsFromText = (text) => { + const urls = []; + const textParts = []; + let lastIndex = 0; + const matches = [...text.matchAll(URL_REGEX)]; + matches.forEach((match) => { + const url = match[0]; + const index = match.index !== void 0 ? match.index : -1; + if (lastIndex < index) { + textParts.push(text.slice(lastIndex, index)); + } + urls.push(url); + lastIndex = index + url.length; + }); + if (lastIndex < text.length) { + textParts.push(text.slice(lastIndex)); + } + if (textParts.length === 0 && urls.length > 0) { + textParts.push(""); + } + return { + textParts, + urls + }; + }; + exports2.extractUrlsFromText = extractUrlsFromText; + } +}); + +// node_modules/@trezor/utils/lib/getLocaleSeparators.js +var require_getLocaleSeparators = __commonJS({ + "node_modules/@trezor/utils/lib/getLocaleSeparators.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getLocaleSeparators = void 0; + var getLocaleSeparators = (locale) => { + const numberFormat = new Intl.NumberFormat(locale); + const parts = numberFormat.formatToParts(10000.1); + const decimalSeparator = parts.find(({ + type + }) => type === "decimal")?.value; + const thousandsSeparator = parts.find(({ + type + }) => type === "group")?.value; + return { + decimalSeparator, + thousandsSeparator + }; + }; + exports2.getLocaleSeparators = getLocaleSeparators; + } +}); + +// node_modules/@trezor/utils/lib/getRandomInt.js +var require_getRandomInt = __commonJS({ + "node_modules/@trezor/utils/lib/getRandomInt.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getRandomInt = void 0; + var crypto_1 = __require("crypto"); + var getRandomInt = (min, max) => { + if (!Number.isSafeInteger(min)) { + throw new RangeError(`The "min" argument must be a safe integer. Received type ${typeof min} (${min})`); + } + if (!Number.isSafeInteger(max)) { + throw new RangeError(`The "max" argument must be a safe integer. Received type ${typeof max} (${max})`); + } + if (min >= max) { + throw new RangeError(`The value of "max" is out of range. It must be greater than the value of "min" (${min}). Received ${max}`); + } + const MAX_RANGE_32_BITS = 4294967295 + 1; + const range = max - min; + if (range > MAX_RANGE_32_BITS) { + throw new RangeError(`This function only provide 32 bits of entropy, therefore range cannot be more then 2^32.`); + } + const getRandomValues = typeof window !== "undefined" ? (array2) => window.crypto.getRandomValues(array2) : (array2) => (0, crypto_1.getRandomValues)(array2); + const array = new Uint32Array(1); + const maxRange = MAX_RANGE_32_BITS - MAX_RANGE_32_BITS % range; + let randomValue; + do { + getRandomValues(array); + randomValue = array[0]; + } while (randomValue >= maxRange); + return min + randomValue % range; + }; + exports2.getRandomInt = getRandomInt; + } +}); + +// node_modules/@trezor/utils/lib/getMutex.js +var require_getMutex = __commonJS({ + "node_modules/@trezor/utils/lib/getMutex.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getMutex = void 0; + var getMutex = () => { + const DEFAULT_ID = Symbol(); + const locks = {}; + return async (lockId = DEFAULT_ID) => { + while (locks[lockId]) { + await locks[lockId]; + } + let resolve = () => { + }; + locks[lockId] = new Promise((res) => { + resolve = res; + }).finally(() => { + delete locks[lockId]; + }); + return resolve; + }; + }; + exports2.getMutex = getMutex; + } +}); + +// node_modules/@trezor/utils/lib/getSynchronize.js +var require_getSynchronize = __commonJS({ + "node_modules/@trezor/utils/lib/getSynchronize.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getSynchronize = void 0; + var getMutex_1 = require_getMutex(); + var getSynchronize = (mutex) => { + const lock = mutex ?? (0, getMutex_1.getMutex)(); + return (action, lockId) => lock(lockId).then((unlock) => Promise.resolve().then(action).finally(unlock)); + }; + exports2.getSynchronize = getSynchronize; + } +}); + +// node_modules/@trezor/utils/lib/getWeakRandomId.js +var require_getWeakRandomId = __commonJS({ + "node_modules/@trezor/utils/lib/getWeakRandomId.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getWeakRandomId = void 0; + var getWeakRandomId = (length) => { + let id = ""; + const list = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (let i = 0; i < length; i++) { + id += list.charAt(Math.floor(Math.random() * list.length)); + } + return id; + }; + exports2.getWeakRandomId = getWeakRandomId; + } +}); + +// node_modules/@trezor/utils/lib/getWeakRandomInt.js +var require_getWeakRandomInt = __commonJS({ + "node_modules/@trezor/utils/lib/getWeakRandomInt.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getWeakRandomInt = void 0; + var getWeakRandomInt = (min, max) => { + if (min >= max) { + throw new RangeError(`The value of "max" is out of range. It must be greater than the value of "min" (${min}). Received ${max}`); + } + return Math.floor(Math.random() * (max - min) + min); + }; + exports2.getWeakRandomInt = getWeakRandomInt; + } +}); + +// node_modules/@trezor/utils/lib/getWeakRandomNumberInRange.js +var require_getWeakRandomNumberInRange = __commonJS({ + "node_modules/@trezor/utils/lib/getWeakRandomNumberInRange.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getWeakRandomNumberInRange = void 0; + var getWeakRandomNumberInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min; + exports2.getWeakRandomNumberInRange = getWeakRandomNumberInRange; + } +}); + +// node_modules/@trezor/utils/lib/hexToRgba.js +var require_hexToRgba = __commonJS({ + "node_modules/@trezor/utils/lib/hexToRgba.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.hexToRgba = hexToRgba; + function hexToRgba(hex, alpha) { + const r = parseInt(hex.slice(1, 3), 16); + const g = parseInt(hex.slice(3, 5), 16); + const b = parseInt(hex.slice(5, 7), 16); + if (alpha && alpha > 0) { + return `rgba(${r}, ${g}, ${b}, ${alpha})`; + } + return `rgb(${r}, ${g}, ${b})`; + } + } +}); + +// node_modules/@trezor/utils/lib/hexToRgbaArray.js +var require_hexToRgbaArray = __commonJS({ + "node_modules/@trezor/utils/lib/hexToRgbaArray.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.hexToRgbaArray = void 0; + var hexToRgbaArray = (hex) => { + const norm = hex.replace("#", ""); + const full = norm.length === 6 ? norm + "FF" : norm; + return [parseInt(full.slice(0, 2), 16) / 255, parseInt(full.slice(2, 4), 16) / 255, parseInt(full.slice(4, 6), 16) / 255, parseInt(full.slice(6, 8), 16) / 255]; + }; + exports2.hexToRgbaArray = hexToRgbaArray; + } +}); + +// node_modules/@trezor/utils/lib/isApproximatelyEqual.js +var require_isApproximatelyEqual = __commonJS({ + "node_modules/@trezor/utils/lib/isApproximatelyEqual.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isApproximatelyEqual = void 0; + var bigNumber_1 = require_bigNumber(); + var isApproximatelyEqual = (value1, value2, relativeTolerance) => { + value1 = new bigNumber_1.BigNumber(value1); + value2 = new bigNumber_1.BigNumber(value2); + relativeTolerance = new bigNumber_1.BigNumber(relativeTolerance); + if (value1.eq(0)) return value1.eq(value2); + const relativeDifference = value2.minus(value1).abs().dividedBy(value1); + return relativeDifference.lte(relativeTolerance); + }; + exports2.isApproximatelyEqual = isApproximatelyEqual; + } +}); + +// node_modules/@trezor/utils/lib/isArrayMember.js +var require_isArrayMember = __commonJS({ + "node_modules/@trezor/utils/lib/isArrayMember.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isArrayMember = void 0; + var isArrayMember = (value, arr) => arr.some((v) => v === value); + exports2.isArrayMember = isArrayMember; + } +}); + +// node_modules/@trezor/utils/lib/isFullPath.js +var require_isFullPath = __commonJS({ + "node_modules/@trezor/utils/lib/isFullPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isFullPath = void 0; + var isFullPath = (path2) => { + const fullPathPattern = /^(\/|([a-zA-Z]:\\))/; + return fullPathPattern.test(path2); + }; + exports2.isFullPath = isFullPath; + } +}); + +// node_modules/@trezor/utils/lib/isHex.js +var require_isHex = __commonJS({ + "node_modules/@trezor/utils/lib/isHex.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isHex = void 0; + var isHex2 = (str) => { + const regExp = /^(0x|0X)?[0-9A-Fa-f]+$/g; + return regExp.test(str); + }; + exports2.isHex = isHex2; + } +}); + +// node_modules/@trezor/utils/lib/isNotUndefined.js +var require_isNotUndefined = __commonJS({ + "node_modules/@trezor/utils/lib/isNotUndefined.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isNotUndefined = void 0; + var isNotUndefined = (item) => typeof item !== "undefined"; + exports2.isNotUndefined = isNotUndefined; + } +}); + +// node_modules/@trezor/utils/lib/isUrl.js +var require_isUrl = __commonJS({ + "node_modules/@trezor/utils/lib/isUrl.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isUrlWithQuery = exports2.isUrl = void 0; + var URL_REGEXP = /^(http|ws)s?:\/\/[a-z0-9]([a-z0-9.-]+)?(:[0-9]{1,5})?(\/[a-z0-9-_]+)*\/?$/i; + var URL_WITH_QUERY_REGEXP = /^(http|ws)s?:\/\/[a-z0-9]([a-z0-9.-]+)?(:[0-9]{1,5})?(\/[a-z0-9-_]+)*\/?(\?[a-z0-9-_]+=[a-z0-9-_]+(&[a-z0-9-_]+=[a-z0-9-_]+)*)?$/i; + var isUrl = (value) => URL_REGEXP.test(value); + exports2.isUrl = isUrl; + var isUrlWithQuery = (value) => URL_WITH_QUERY_REGEXP.test(value); + exports2.isUrlWithQuery = isUrlWithQuery; + } +}); + +// node_modules/@trezor/utils/lib/isWhitelistedHost.js +var require_isWhitelistedHost = __commonJS({ + "node_modules/@trezor/utils/lib/isWhitelistedHost.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isWhitelistedHost = void 0; + var isWhitelistedHost = (hostname, whitelist = ["127.0.0.1", "localhost"]) => { + if (typeof hostname !== "string") { + return false; + } + if (hostname.trim() === "") { + return false; + } + return whitelist.some((whitelistedUrl) => whitelistedUrl === hostname || hostname.endsWith(`.${whitelistedUrl}`)); + }; + exports2.isWhitelistedHost = isWhitelistedHost; + } +}); + +// node_modules/@trezor/utils/lib/logs.js +var require_logs = __commonJS({ + "node_modules/@trezor/utils/lib/logs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Log = void 0; + var Log = class { + prefix; + enabled; + css = ""; + messages; + logWriter; + MAX_ENTRIES = 100; + constructor(prefix, enabled, logWriter) { + this.prefix = prefix; + this.enabled = enabled; + this.messages = []; + if (logWriter) { + this.logWriter = logWriter; + } + } + setColors(colors) { + this.css = typeof window !== "undefined" && colors[this.prefix] ? colors[this.prefix] : ""; + } + addMessage({ + level, + prefix, + timestamp + }, ...args) { + const message = { + level, + prefix, + css: this.css, + message: args, + timestamp: timestamp || Date.now() + }; + this.messages.push(message); + if (this.logWriter) { + try { + this.logWriter.add(message); + } catch (err2) { + console.error("There was an error adding log message", err2, message); + } + } + if (this.messages.length > this.MAX_ENTRIES) { + this.messages.shift(); + } + } + setWriter(logWriter) { + this.logWriter = logWriter; + } + log(...args) { + this.addMessage({ + level: "log", + prefix: this.prefix + }, ...args); + if (this.enabled) { + console.log(`%c${this.prefix}`, this.css, ...args); + } + } + error(...args) { + this.addMessage({ + level: "error", + prefix: this.prefix + }, ...args); + if (this.enabled) { + console.error(`%c${this.prefix}`, this.css, ...args); + } + } + info(...args) { + this.addMessage({ + level: "info", + prefix: this.prefix + }, ...args); + if (this.enabled) { + console.info(`%c${this.prefix}`, this.css, ...args); + } + } + warn(...args) { + this.addMessage({ + level: "warn", + prefix: this.prefix + }, ...args); + if (this.enabled) { + console.warn(`%c${this.prefix}`, this.css, ...args); + } + } + debug(...args) { + this.addMessage({ + level: "debug", + prefix: this.prefix + }, ...args); + if (this.enabled) { + if (this.css) { + console.log(`%c${this.prefix}`, this.css, ...args); + } else { + console.log(this.prefix, ...args); + } + } + } + getLog() { + return this.messages; + } + }; + exports2.Log = Log; + } +}); + +// node_modules/@trezor/utils/lib/logsManager.js +var require_logsManager = __commonJS({ + "node_modules/@trezor/utils/lib/logsManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LogsManager = void 0; + var logs_1 = require_logs(); + var LogsManager = class { + logs = {}; + writer; + colors = {}; + constructor({ + colors + }) { + this.colors = colors; + } + initLog(prefix, enabled, logWriter) { + const instanceWriter = logWriter || this.writer; + const instance = new logs_1.Log(prefix, !!enabled, instanceWriter); + if (this.colors) { + instance.setColors(this.colors); + } + this.logs[prefix] = instance; + return instance; + } + setLogWriter(logWriterFactory) { + Object.keys(this.logs).forEach((key) => { + this.writer = logWriterFactory(); + if (this.writer) { + this.logs[key].setWriter(this.writer); + const { + messages + } = this.logs[key]; + messages.forEach((message) => { + this.writer?.add(message); + }); + } + }); + } + enableLog(enabled) { + Object.keys(this.logs).forEach((key) => { + this.logs[key].enabled = !!enabled; + }); + } + enableLogByPrefix(prefix, enabled) { + if (this.logs[prefix]) { + this.logs[prefix].enabled = enabled; + } + } + getLog() { + let logs = []; + Object.keys(this.logs).forEach((key) => { + logs = logs.concat(this.logs[key].messages); + }); + logs.sort((a, b) => a.timestamp - b.timestamp); + return logs; + } + }; + exports2.LogsManager = LogsManager; + } +}); + +// node_modules/@trezor/utils/lib/mergeDeepObject.js +var require_mergeDeepObject = __commonJS({ + "node_modules/@trezor/utils/lib/mergeDeepObject.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.mergeDeepObject = void 0; + var isObject = (obj) => { + if (typeof obj === "object" && obj !== null) { + if (typeof Object.getPrototypeOf === "function") { + const prototype = Object.getPrototypeOf(obj); + return prototype === Object.prototype || prototype === null; + } + return Object.prototype.toString.call(obj) === "[object Object]"; + } + return false; + }; + var mergeValuesWithPath = (target, value, [key, ...rest]) => { + if (key === void 0) { + return mergeValues(target, value); + } else if (!isObject(target)) { + return { + [key]: mergeValuesWithPath({}, value, rest) + }; + } else { + return { + ...target, + [key]: mergeValuesWithPath(target[key], value, rest) + }; + } + }; + var mergeValues = (target, value) => { + if (Array.isArray(target) && Array.isArray(value)) { + return exports2.mergeDeepObject.options.mergeArrays ? Array.from(new Set(target.concat(value))) : value; + } else if (isObject(target) && isObject(value)) { + return (0, exports2.mergeDeepObject)(target, value); + } else { + return value; + } + }; + var mergeDeepObject = (...objects) => objects.reduce((result, current) => { + if (Array.isArray(current)) { + throw new TypeError("Arguments provided to ts-deepmerge must be objects, not arrays."); + } + Object.keys(current).forEach((key) => { + if (["__proto__", "constructor", "prototype"].includes(key)) { + return; + } + if (exports2.mergeDeepObject.options.dotNotation) { + const [first, ...rest] = key.split("."); + result[first] = mergeValuesWithPath(result[first], current[key], rest); + } else { + result[key] = mergeValues(result[key], current[key]); + } + }); + return result; + }, {}); + exports2.mergeDeepObject = mergeDeepObject; + var defaultOptions = { + mergeArrays: true, + dotNotation: false + }; + exports2.mergeDeepObject.options = defaultOptions; + exports2.mergeDeepObject.withOptions = (options, ...objects) => { + exports2.mergeDeepObject.options = { + ...defaultOptions, + ...options + }; + const result = (0, exports2.mergeDeepObject)(...objects); + exports2.mergeDeepObject.options = defaultOptions; + return result; + }; + } +}); + +// node_modules/@trezor/utils/lib/objectPartition.js +var require_objectPartition = __commonJS({ + "node_modules/@trezor/utils/lib/objectPartition.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.objectPartition = void 0; + var objectPartition = (obj, keys) => keys.reduce(([included, excluded], key) => { + const { + [key]: value, + ...rest + } = excluded; + return typeof value !== "undefined" ? [{ + ...included, + [key]: value + }, rest] : [included, excluded]; + }, [{}, obj]); + exports2.objectPartition = objectPartition; + } +}); + +// node_modules/@trezor/utils/lib/parseElectrumUrl.js +var require_parseElectrumUrl = __commonJS({ + "node_modules/@trezor/utils/lib/parseElectrumUrl.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseElectrumUrl = void 0; + var ELECTRUM_URL_REGEX = /^(?:([a-zA-Z0-9.-]+)|\[([a-f0-9:]+)\]):([0-9]{1,5}):([ts])$/; + var parseElectrumUrl = (url) => { + const match = url.match(ELECTRUM_URL_REGEX); + if (!match) return void 0; + return { + host: match[1] ?? match[2], + port: Number.parseInt(match[3], 10), + protocol: match[4] + }; + }; + exports2.parseElectrumUrl = parseElectrumUrl; + } +}); + +// node_modules/@trezor/utils/lib/parseHostname.js +var require_parseHostname = __commonJS({ + "node_modules/@trezor/utils/lib/parseHostname.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseHostname = void 0; + var HOSTNAME_REGEX = /^([a-z0-9.+-]+:\/\/)?([a-z0-9.-]+)([:/][^:/]+)*\/?$/i; + var parseHostname = (url) => url.match(HOSTNAME_REGEX)?.[2]?.toLowerCase(); + exports2.parseHostname = parseHostname; + } +}); + +// node_modules/@trezor/utils/lib/promiseAllSequence.js +var require_promiseAllSequence = __commonJS({ + "node_modules/@trezor/utils/lib/promiseAllSequence.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.promiseAllSequence = void 0; + var promiseAllSequence = async (actions) => { + const results = []; + for (let i = 0; i < actions.length; ++i) { + const result = await actions[i](); + results.push(result); + } + return results; + }; + exports2.promiseAllSequence = promiseAllSequence; + } +}); + +// node_modules/@trezor/utils/lib/redactUserPath.js +var require_redactUserPath = __commonJS({ + "node_modules/@trezor/utils/lib/redactUserPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.redactUserPathFromString = exports2.startOfUserPathRegex = void 0; + exports2.startOfUserPathRegex = /([/\\][Uu]sers[/\\]{1,4})([^"^'^[^\]^/^\\]*)/g; + var redactUserPathFromString = (text) => text.replace(exports2.startOfUserPathRegex, "$1[*]"); + exports2.redactUserPathFromString = redactUserPathFromString; + } +}); + +// node_modules/@trezor/utils/lib/resolveAfter.js +var require_resolveAfter = __commonJS({ + "node_modules/@trezor/utils/lib/resolveAfter.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.resolveAfter = void 0; + var createDeferred_1 = require_createDeferred(); + var resolveAfter = (msec, signal, value) => { + const { + promise, + reject, + resolve + } = (0, createDeferred_1.createDeferred)(); + const timeout = setTimeout(resolve, msec, value); + const onAbort = () => reject(signal?.reason); + signal?.addEventListener("abort", onAbort); + if (signal?.aborted) onAbort(); + return promise.finally(() => { + clearTimeout(timeout); + signal?.removeEventListener("abort", onAbort); + }); + }; + exports2.resolveAfter = resolveAfter; + } +}); + +// node_modules/@trezor/utils/lib/scheduleAction.js +var require_scheduleAction = __commonJS({ + "node_modules/@trezor/utils/lib/scheduleAction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.scheduleAction = exports2.ScheduleActionDeadlineError = exports2.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE = exports2.ScheduleActionTimeoutError = exports2.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE = exports2.RejectWhenAbortedError = exports2.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE = void 0; + exports2.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE = "Aborted by signal"; + var RejectWhenAbortedError = class extends Error { + constructor() { + super(exports2.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE); + } + }; + exports2.RejectWhenAbortedError = RejectWhenAbortedError; + var isArray = (attempts) => Array.isArray(attempts); + var resolveAfterMs = (ms, clear) => new Promise((resolve, reject) => { + const errorSignal = new RejectWhenAbortedError(); + if (clear.aborted) return reject(errorSignal); + if (ms === void 0) return resolve(); + let timeout; + const onClear = () => { + clearTimeout(timeout); + clear.removeEventListener("abort", onClear); + reject(errorSignal); + }; + timeout = setTimeout(() => { + clear.removeEventListener("abort", onClear); + resolve(); + }, ms); + clear.addEventListener("abort", onClear); + }); + var rejectAfterMs = (ms, reason, clear) => new Promise((_, reject) => { + const errorSignal = new RejectWhenAbortedError(); + if (clear.aborted) return reject(errorSignal); + let timeout; + const onClear = () => { + clearTimeout(timeout); + clear.removeEventListener("abort", onClear); + reject(errorSignal); + }; + timeout = setTimeout(() => { + clear.removeEventListener("abort", onClear); + reject(reason); + }, ms); + clear.addEventListener("abort", onClear); + }); + var maybeRejectAfterMs = (ms, reason, clear) => ms === void 0 ? [] : [rejectAfterMs(ms, reason, clear)]; + var rejectWhenAborted = (signal, clear) => new Promise((_, reject) => { + const errorSignal = new RejectWhenAbortedError(); + if (clear.aborted) return reject(errorSignal); + if (signal?.aborted) return reject(errorSignal); + const onAbort = () => reject(errorSignal); + signal?.addEventListener("abort", onAbort); + const onClear = () => { + signal?.removeEventListener("abort", onAbort); + clear.removeEventListener("abort", onClear); + reject(errorSignal); + }; + clear.addEventListener("abort", onClear); + }); + var resolveAction = async (action, clear) => { + const aborter = new AbortController(); + if (clear.aborted) aborter.abort(); + const onClear = () => { + clear.removeEventListener("abort", onClear); + aborter.abort(); + }; + clear.addEventListener("abort", onClear); + try { + return await new Promise((resolve) => resolve(action(aborter.signal))); + } finally { + if (!clear.aborted) clear.removeEventListener("abort", onClear); + } + }; + var attemptLoop = async (attempts, attempt, failure, clear) => { + for (let a = 0; a < attempts - 1; a++) { + if (clear.aborted) break; + const aborter = new AbortController(); + const onClear = () => aborter.abort(); + clear.addEventListener("abort", onClear); + try { + return await attempt(a, aborter.signal); + } catch (error) { + onClear(); + await failure(a, error); + } finally { + clear.removeEventListener("abort", onClear); + } + } + return clear.aborted ? Promise.reject(new RejectWhenAbortedError()) : attempt(attempts - 1, clear); + }; + exports2.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE = "Aborted by timeout"; + var ScheduleActionTimeoutError = class extends Error { + constructor() { + super(exports2.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE); + } + }; + exports2.ScheduleActionTimeoutError = ScheduleActionTimeoutError; + exports2.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE = "Aborted by deadline"; + var ScheduleActionDeadlineError = class extends Error { + constructor() { + super(exports2.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE); + } + }; + exports2.ScheduleActionDeadlineError = ScheduleActionDeadlineError; + var scheduleAction = async (action, params) => { + const { + signal, + delay, + attempts, + timeout, + deadline, + gap, + attemptFailureHandler + } = params; + const deadlineMs = deadline && deadline - Date.now(); + const attemptCount = isArray(attempts) ? attempts.length : attempts ?? (deadline ? Infinity : 1); + const clearAborter = new AbortController(); + const clear = clearAborter.signal; + const getParams = isArray(attempts) ? (attempt) => attempts[attempt] : () => ({ + timeout, + gap + }); + const errorDeadline = new ScheduleActionDeadlineError(); + const errorTimeout = new ScheduleActionTimeoutError(); + const graceful = params.graceful && signal; + const actionAborter = new AbortController(); + if (graceful) { + if (signal.aborted) { + actionAborter.abort(); + } else { + const onAbort = () => { + signal.removeEventListener("abort", onAbort); + clear.removeEventListener("abort", onAbort); + actionAborter.abort(); + }; + signal.addEventListener("abort", onAbort); + clear.addEventListener("abort", onAbort); + } + } + try { + return await Promise.race([...graceful ? [] : [rejectWhenAborted(signal, clear)], ...maybeRejectAfterMs(deadlineMs, errorDeadline, clear), resolveAfterMs(delay, clear).then(() => attemptLoop(attemptCount, (attempt, abort) => Promise.race([...maybeRejectAfterMs(getParams(attempt).timeout, errorTimeout, clear), resolveAction(action, abort)]), (attempt, error) => { + const errorHandlerResult = attemptFailureHandler?.(error); + return errorHandlerResult ? Promise.reject(errorHandlerResult) : resolveAfterMs(getParams(attempt).gap ?? 0, clear); + }, graceful ? actionAborter.signal : clear))]); + } finally { + clearAborter.abort(); + } + }; + exports2.scheduleAction = scheduleAction; + } +}); + +// node_modules/@trezor/utils/lib/serializeError.js +var require_serializeError = __commonJS({ + "node_modules/@trezor/utils/lib/serializeError.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.serializeError = void 0; + var serializeError = (error) => { + if (error instanceof Error) { + return JSON.stringify({ + message: error.toString(), + stackTrace: error.stack + }); + } + if (typeof error === "object") { + return JSON.stringify(error); + } + return `${error}`; + }; + exports2.serializeError = serializeError; + } +}); + +// node_modules/@trezor/utils/lib/splitStringEveryNCharacters.js +var require_splitStringEveryNCharacters = __commonJS({ + "node_modules/@trezor/utils/lib/splitStringEveryNCharacters.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.splitStringEveryNCharacters = splitStringEveryNCharacters; + function splitStringEveryNCharacters(value, n) { + if (n === 0) { + return []; + } + const regex = new RegExp(`.{1,${n}}`, "g"); + return value.match(regex) ?? []; + } + } +}); + +// node_modules/@trezor/utils/lib/throttler.js +var require_throttler = __commonJS({ + "node_modules/@trezor/utils/lib/throttler.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Throttler = void 0; + var Throttler = class { + delay; + intervals; + callbacks; + constructor(delay) { + this.delay = delay; + this.intervals = {}; + this.callbacks = {}; + } + throttle(id, callback) { + if (this.intervals[id]) { + this.callbacks[id] = callback; + } else { + callback(); + this.intervals[id] = setInterval(() => this.tick(id), this.delay); + } + } + tick(id) { + if (this.callbacks[id]) { + this.callbacks[id](); + delete this.callbacks[id]; + } else { + this.cancel(id); + } + } + cancel(id) { + clearInterval(this.intervals[id]); + delete this.intervals[id]; + delete this.callbacks[id]; + } + dispose() { + Object.keys(this.intervals).forEach(this.cancel, this); + } + }; + exports2.Throttler = Throttler; + } +}); + +// node_modules/@trezor/utils/lib/topologicalSort.js +var require_topologicalSort = __commonJS({ + "node_modules/@trezor/utils/lib/topologicalSort.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.topologicalSort = void 0; + var arrayPartition_1 = require_arrayPartition(); + var topologicalSort = (elements, precedes, tie) => { + const result = []; + const filterRoots = (verts) => (0, arrayPartition_1.arrayPartition)(verts, (succ) => !verts.some((pred) => precedes(pred, succ))); + let elem = elements; + while (elem.length) { + const [roots, rest] = filterRoots(elem); + if (!roots.length) throw new Error("Cycle detected"); + result.push(...tie ? roots.sort(tie) : roots); + elem = rest; + } + return result; + }; + exports2.topologicalSort = topologicalSort; + } +}); + +// node_modules/@trezor/utils/lib/typedObject.js +var require_typedObject = __commonJS({ + "node_modules/@trezor/utils/lib/typedObject.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.typedObjectValues = exports2.typedObjectKeys = exports2.typedObjectEntries = void 0; + exports2.typedObjectFromEntries = typedObjectFromEntries; + var typedObjectEntries = (obj) => Object.entries(obj); + exports2.typedObjectEntries = typedObjectEntries; + function typedObjectFromEntries(entries) { + return Object.fromEntries(entries); + } + var typedObjectKeys = (obj) => Object.keys(obj); + exports2.typedObjectKeys = typedObjectKeys; + var typedObjectValues = (obj) => Object.values(obj); + exports2.typedObjectValues = typedObjectValues; + } +}); + +// node_modules/@trezor/utils/lib/typedEventEmitter.js +var require_typedEventEmitter = __commonJS({ + "node_modules/@trezor/utils/lib/typedEventEmitter.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TypedEmitter = void 0; + var events_1 = __require("events"); + var TypedEmitter = class extends events_1.EventEmitter { + listenerCount(eventName) { + return super.listenerCount(eventName); + } + }; + exports2.TypedEmitter = TypedEmitter; + } +}); + +// node_modules/@trezor/utils/lib/urlToOnion.js +var require_urlToOnion = __commonJS({ + "node_modules/@trezor/utils/lib/urlToOnion.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.urlToOnion = void 0; + var urlToOnion = (url, onionDomains) => { + const [, protocol, subdomain, domain, rest] = url.match(/^(http|ws)s?:\/\/([^:/]+\.)?([^/.]+\.[^/.]+)(\/.*)?$/i) ?? []; + if (!domain || !onionDomains[domain]) return; + return `${protocol}://${subdomain ?? ""}${onionDomains[domain]}${rest ?? ""}`; + }; + exports2.urlToOnion = urlToOnion; + } +}); + +// node_modules/@trezor/utils/lib/zip.js +var require_zip = __commonJS({ + "node_modules/@trezor/utils/lib/zip.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createZip = void 0; + var createZip = (buffers) => { + const fileEntries = []; + const centralDirectory = []; + let offset = 0; + buffers.forEach(({ + name, + content + }) => { + const fileData = content; + const fileHeader = new Uint8Array(30 + name.length); + const localFileHeader = new DataView(fileHeader.buffer); + localFileHeader.setUint32(0, 67324752, true); + localFileHeader.setUint16(4, 0, true); + localFileHeader.setUint16(6, 0, true); + localFileHeader.setUint16(8, 0, true); + localFileHeader.setUint16(10, 0, true); + localFileHeader.setUint16(12, 0, true); + localFileHeader.setUint32(14, 0, true); + localFileHeader.setUint32(18, fileData.byteLength, true); + localFileHeader.setUint32(22, fileData.byteLength, true); + localFileHeader.setUint16(26, name.length, true); + fileHeader.set(new TextEncoder().encode(name), 30); + fileEntries.push(fileHeader, fileData); + const centralHeader = new Uint8Array(46 + name.length); + const centralView = new DataView(centralHeader.buffer); + centralView.setUint32(0, 33639248, true); + centralView.setUint16(4, 0, true); + centralView.setUint16(6, 0, true); + centralView.setUint16(8, 0, true); + centralView.setUint16(10, 0, true); + centralView.setUint16(12, 0, true); + centralView.setUint16(14, 0, true); + centralView.setUint32(16, 0, true); + centralView.setUint32(20, fileData.byteLength, true); + centralView.setUint32(24, fileData.byteLength, true); + centralView.setUint16(28, name.length, true); + centralView.setUint32(42, offset, true); + centralHeader.set(new TextEncoder().encode(name), 46); + centralDirectory.push(centralHeader); + offset += fileHeader.length + fileData.byteLength; + }); + const eocd = new Uint8Array(22); + const eocdView = new DataView(eocd.buffer); + eocdView.setUint32(0, 101010256, true); + eocdView.setUint16(8, centralDirectory.length, true); + eocdView.setUint16(10, centralDirectory.length, true); + eocdView.setUint32(12, centralDirectory.reduce((sum, cd) => sum + cd.byteLength, 0), true); + eocdView.setUint32(16, offset, true); + return new Blob([...fileEntries, ...centralDirectory, eocd], { + type: "application/zip" + }); + }; + exports2.createZip = createZip; + } +}); + +// node_modules/@trezor/utils/lib/removeTrailingSlashes.js +var require_removeTrailingSlashes = __commonJS({ + "node_modules/@trezor/utils/lib/removeTrailingSlashes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.removeTrailingSlashes = void 0; + var removeTrailingSlashes = (input) => { + if (!input) { + return input || ""; + } + let i = input.length; + while (i > 0 && input[i - 1] === "/") { + i--; + } + return input.substring(0, i); + }; + exports2.removeTrailingSlashes = removeTrailingSlashes; + } +}); + +// node_modules/@trezor/utils/lib/getIntegerInRangeFromString.js +var require_getIntegerInRangeFromString = __commonJS({ + "node_modules/@trezor/utils/lib/getIntegerInRangeFromString.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getIntegerInRangeFromString = void 0; + var getIntegerInRangeFromString = (input, max) => { + let hash = 0; + if (input.length === 0) { + return 0; + } + for (let i = 0; i < input.length; i++) { + const char = input.charCodeAt(i); + hash = (hash << 5) - hash + char; + hash |= 0; + } + return Math.abs(hash % max); + }; + exports2.getIntegerInRangeFromString = getIntegerInRangeFromString; + } +}); + +// node_modules/@trezor/utils/lib/safeBigIntStringify.js +var require_safeBigIntStringify = __commonJS({ + "node_modules/@trezor/utils/lib/safeBigIntStringify.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.safeBigIntStringify = void 0; + var safeBigIntStringify = (v) => JSON.stringify(v, (_k, val) => typeof val === "bigint" ? val.toString() : val); + exports2.safeBigIntStringify = safeBigIntStringify; + } +}); + +// node_modules/@trezor/utils/lib/union.js +var require_union = __commonJS({ + "node_modules/@trezor/utils/lib/union.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.union = union; + function union(data) { + return [...new Set(data)]; + } + } +}); + +// node_modules/@trezor/utils/lib/isInt.js +var require_isInt = __commonJS({ + "node_modules/@trezor/utils/lib/isInt.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isInt = isInt; + function isInt(value) { + return Number.isInteger(value); + } + } +}); + +// node_modules/@trezor/utils/lib/number.js +var require_number = __commonJS({ + "node_modules/@trezor/utils/lib/number.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.roundTo = roundTo; + function roundTo(value, precision = 2) { + const x = 10 ** precision; + return Math.round(value * x) / x; + } + } +}); + +// node_modules/@trezor/utils/lib/sanitizeFilename.js +var require_sanitizeFilename = __commonJS({ + "node_modules/@trezor/utils/lib/sanitizeFilename.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sanitizeFilename = void 0; + var MAX_FILENAME_LENGTH = 250; + var sanitizeFilename = (filename, replacement = "_") => { + if (!filename || filename.trim().length === 0) { + return void 0; + } + const illegalRe = /[<>:"\/\\|?*\x00-\x1F]/g; + let safeName = filename.replace(illegalRe, replacement); + if (safeName.length > MAX_FILENAME_LENGTH) { + safeName = safeName.substring(0, MAX_FILENAME_LENGTH); + } + safeName = safeName.replace(/[. ]+$/, ""); + const reservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i; + if (reservedRe.test(safeName)) { + safeName = `${safeName}${replacement}`; + } + return safeName || void 0; + }; + exports2.sanitizeFilename = sanitizeFilename; + } +}); + +// node_modules/@trezor/utils/lib/index.js +var require_lib = __commonJS({ + "node_modules/@trezor/utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isApproximatelyEqual = exports2.hexToRgbaArray = exports2.hexToRgba = exports2.xssFilters = exports2.versionUtils = exports2.enumUtils = exports2.bufferUtils = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + exports2.bufferUtils = tslib_1.__importStar(require_bufferUtils()); + exports2.enumUtils = tslib_1.__importStar(require_enumUtils()); + exports2.versionUtils = tslib_1.__importStar(require_versionUtils()); + exports2.xssFilters = tslib_1.__importStar(require_xssFilters()); + tslib_1.__exportStar(require_addDashesToSpaces(), exports2); + tslib_1.__exportStar(require_arrayDistinct(), exports2); + tslib_1.__exportStar(require_arrayPartition(), exports2); + tslib_1.__exportStar(require_arrayShuffle(), exports2); + tslib_1.__exportStar(require_arrayToDictionary(), exports2); + tslib_1.__exportStar(require_asciiUtils(), exports2); + tslib_1.__exportStar(require_bigNumber(), exports2); + tslib_1.__exportStar(require_bytesToHumanReadable(), exports2); + tslib_1.__exportStar(require_cache(), exports2); + tslib_1.__exportStar(require_capitalizeFirstLetter(), exports2); + tslib_1.__exportStar(require_cloneObject(), exports2); + tslib_1.__exportStar(require_comparison(), exports2); + tslib_1.__exportStar(require_convertTaprootXpub(), exports2); + tslib_1.__exportStar(require_countBytesInString(), exports2); + tslib_1.__exportStar(require_createCooldown(), exports2); + tslib_1.__exportStar(require_createDeferred(), exports2); + tslib_1.__exportStar(require_createDeferredManager(), exports2); + tslib_1.__exportStar(require_createLazy(), exports2); + tslib_1.__exportStar(require_extractUrlsFromText(), exports2); + tslib_1.__exportStar(require_getLocaleSeparators(), exports2); + tslib_1.__exportStar(require_getRandomInt(), exports2); + tslib_1.__exportStar(require_getSynchronize(), exports2); + tslib_1.__exportStar(require_getWeakRandomId(), exports2); + tslib_1.__exportStar(require_getWeakRandomInt(), exports2); + tslib_1.__exportStar(require_getWeakRandomNumberInRange(), exports2); + var hexToRgba_1 = require_hexToRgba(); + Object.defineProperty(exports2, "hexToRgba", { + enumerable: true, + get: function() { + return hexToRgba_1.hexToRgba; + } + }); + var hexToRgbaArray_1 = require_hexToRgbaArray(); + Object.defineProperty(exports2, "hexToRgbaArray", { + enumerable: true, + get: function() { + return hexToRgbaArray_1.hexToRgbaArray; + } + }); + var isApproximatelyEqual_1 = require_isApproximatelyEqual(); + Object.defineProperty(exports2, "isApproximatelyEqual", { + enumerable: true, + get: function() { + return isApproximatelyEqual_1.isApproximatelyEqual; + } + }); + tslib_1.__exportStar(require_isArrayMember(), exports2); + tslib_1.__exportStar(require_isFullPath(), exports2); + tslib_1.__exportStar(require_isHex(), exports2); + tslib_1.__exportStar(require_isNotUndefined(), exports2); + tslib_1.__exportStar(require_isUrl(), exports2); + tslib_1.__exportStar(require_isWhitelistedHost(), exports2); + tslib_1.__exportStar(require_logs(), exports2); + tslib_1.__exportStar(require_logsManager(), exports2); + tslib_1.__exportStar(require_mergeDeepObject(), exports2); + tslib_1.__exportStar(require_objectPartition(), exports2); + tslib_1.__exportStar(require_parseElectrumUrl(), exports2); + tslib_1.__exportStar(require_parseHostname(), exports2); + tslib_1.__exportStar(require_promiseAllSequence(), exports2); + tslib_1.__exportStar(require_redactUserPath(), exports2); + tslib_1.__exportStar(require_resolveAfter(), exports2); + tslib_1.__exportStar(require_scheduleAction(), exports2); + tslib_1.__exportStar(require_serializeError(), exports2); + tslib_1.__exportStar(require_splitStringEveryNCharacters(), exports2); + tslib_1.__exportStar(require_throttler(), exports2); + tslib_1.__exportStar(require_throwError(), exports2); + tslib_1.__exportStar(require_topologicalSort(), exports2); + tslib_1.__exportStar(require_typedObject(), exports2); + tslib_1.__exportStar(require_typedEventEmitter(), exports2); + tslib_1.__exportStar(require_urlToOnion(), exports2); + tslib_1.__exportStar(require_zip(), exports2); + tslib_1.__exportStar(require_removeTrailingSlashes(), exports2); + tslib_1.__exportStar(require_getIntegerInRangeFromString(), exports2); + tslib_1.__exportStar(require_safeBigIntStringify(), exports2); + tslib_1.__exportStar(require_union(), exports2); + tslib_1.__exportStar(require_isInt(), exports2); + tslib_1.__exportStar(require_number(), exports2); + tslib_1.__exportStar(require_sanitizeFilename(), exports2); + } +}); + +// node_modules/@trezor/connect/lib/constants/errors.js +var require_errors = __commonJS({ + "node_modules/@trezor/connect/lib/constants/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LIBUSB_ERROR_MESSAGE = exports2.serializeError = exports2.TypedError = exports2.TransportError = exports2.nestError = exports2.TrezorError = exports2.ERROR_CODES = void 0; + exports2.ERROR_CODES = { + Init_NotInitialized: "TrezorConnect not initialized", + Init_AlreadyInitialized: "TrezorConnect has been already initialized", + Init_IframeBlocked: "Iframe blocked", + Init_IframeTimeout: "Iframe timeout", + Init_ManifestMissing: "Manifest not set. Read more at https://github.com/trezor/trezor-suite/blob/develop/docs/packages/connect/index.md", + Popup_ConnectionMissing: "Unable to establish connection with iframe", + Desktop_ConnectionMissing: "Unable to establish connection with Suite", + Transport_Missing: "Transport is missing", + Method_InvalidPackage: "This package is not suitable to work with browser. Use @trezor/connect-web package instead", + Method_InvalidParameter: "", + Method_NotAllowed: "Method not allowed for this configuration", + Method_PermissionsNotGranted: "Permissions not granted", + Method_Cancel: "Canceled", + Method_Interrupted: "Popup closed", + Method_UnknownCoin: "Coin not found", + Method_AddressNotMatch: "Addresses do not match", + Method_Discovery_BundleException: "", + Method_Override: "override", + Method_NoResponse: "Call resolved without response", + Method_Unsupported: "Unsupported method", + Backend_NotSupported: "BlockchainLink settings not found in coins.json", + Backend_WorkerMissing: "", + Backend_Disconnected: "Backend disconnected", + Backend_Invalid: "Invalid backend", + Backend_Error: "", + Runtime: "", + Device_NotFound: "Device not found", + Device_InitializeFailed: "", + Device_FwException: "", + Device_ModeException: "", + Device_Disconnected: "Device disconnected", + Device_UsedElsewhere: "Device is used in another window", + Device_InvalidState: "Passphrase is incorrect", + Device_CallInProgress: "Device call in progress", + Device_MultipleNotSupported: "Multiple devices are not supported", + Device_MissingCapability: "Device is missing capability", + Device_MissingCapabilityBtcOnly: "Device is missing capability (BTC only)", + Device_ThpPairingTagInvalid: "Pairing tag mismatch", + Device_ThpStateMissing: "ThpState missing", + Device_ThpPairingMethodsException: "No common pairing methods", + Failure_UnknownCode: "Unknown error", + Failure_EntropyCheck: "", + Deeplink_VersionMismatch: "Not compatible with current version of the app", + Browser_LocalNetworkPermissionMissing: "Local network permission is missing. Please allow local network access in browser settings." + }; + var TrezorError = class extends Error { + code; + message; + constructor(code, message, options) { + super(message, options); + this.code = code; + this.message = message; + } + toString() { + return `${this.name} (code: ${this.code}): ${this.message}`; + } + }; + exports2.TrezorError = TrezorError; + var nestError = (cause) => cause instanceof TrezorError ? new TrezorError(cause.code, cause.message, { + cause + }) : new Error(cause.message, { + cause + }); + exports2.nestError = nestError; + var TransportError = class extends Error { + }; + exports2.TransportError = TransportError; + var TypedError = (id, message) => new TrezorError(id, message || exports2.ERROR_CODES[id] || id); + exports2.TypedError = TypedError; + var serializeError = (payload) => { + const error = payload?.error instanceof Error ? payload.error : payload; + return error instanceof Error ? { + error: error.message, + code: "code" in error ? error.code : "Failure_UnknownCode" + } : { + ...payload + }; + }; + exports2.serializeError = serializeError; + exports2.LIBUSB_ERROR_MESSAGE = "LIBUSB_ERROR"; + } +}); + +// node_modules/@trezor/connect/lib/constants/network.js +var require_network = __commonJS({ + "node_modules/@trezor/connect/lib/constants/network.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MODULES = exports2.TYPES = void 0; + exports2.TYPES = { + bitcoin: "Bitcoin", + ethereum: "Ethereum", + eos: "Eos", + nem: "NEM", + stellar: "Stellar", + cardano: "Cardano", + ripple: "Ripple", + tezos: "Tezos", + binance: "Binance", + solana: "Solana" + }; + exports2.MODULES = ["cardano", "eos", "ethereum", "monero", "nem", "ripple", "solana", "stellar", "tezos"]; + } +}); + +// node_modules/@trezor/connect/lib/constants/cardano.js +var require_cardano = __commonJS({ + "node_modules/@trezor/connect/lib/constants/cardano.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ALGORITHM_IDS = exports2.NETWORK_IDS = exports2.PROTOCOL_MAGICS = void 0; + var PROTOCOL_MAGICS; + (function(PROTOCOL_MAGICS2) { + PROTOCOL_MAGICS2[PROTOCOL_MAGICS2["mainnet"] = 764824073] = "mainnet"; + PROTOCOL_MAGICS2[PROTOCOL_MAGICS2["testnet_preprod"] = 1] = "testnet_preprod"; + PROTOCOL_MAGICS2[PROTOCOL_MAGICS2["testnet_preview"] = 2] = "testnet_preview"; + PROTOCOL_MAGICS2[PROTOCOL_MAGICS2["testnet_legacy"] = 1097911063] = "testnet_legacy"; + })(PROTOCOL_MAGICS || (exports2.PROTOCOL_MAGICS = PROTOCOL_MAGICS = {})); + var NETWORK_IDS; + (function(NETWORK_IDS2) { + NETWORK_IDS2[NETWORK_IDS2["mainnet"] = 1] = "mainnet"; + NETWORK_IDS2[NETWORK_IDS2["testnet"] = 0] = "testnet"; + })(NETWORK_IDS || (exports2.NETWORK_IDS = NETWORK_IDS = {})); + var ALGORITHM_IDS; + (function(ALGORITHM_IDS2) { + ALGORITHM_IDS2[ALGORITHM_IDS2["EdDSA"] = -8] = "EdDSA"; + })(ALGORITHM_IDS || (exports2.ALGORITHM_IDS = ALGORITHM_IDS = {})); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/guard/value.js +var require_value = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/guard/value.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HasPropertyKey = HasPropertyKey; + exports2.IsAsyncIterator = IsAsyncIterator; + exports2.IsArray = IsArray; + exports2.IsBigInt = IsBigInt; + exports2.IsBoolean = IsBoolean; + exports2.IsDate = IsDate; + exports2.IsFunction = IsFunction; + exports2.IsIterator = IsIterator; + exports2.IsNull = IsNull; + exports2.IsNumber = IsNumber; + exports2.IsObject = IsObject; + exports2.IsRegExp = IsRegExp; + exports2.IsString = IsString; + exports2.IsSymbol = IsSymbol; + exports2.IsUint8Array = IsUint8Array; + exports2.IsUndefined = IsUndefined; + function HasPropertyKey(value, key) { + return key in value; + } + function IsAsyncIterator(value) { + return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value; + } + function IsArray(value) { + return Array.isArray(value); + } + function IsBigInt(value) { + return typeof value === "bigint"; + } + function IsBoolean(value) { + return typeof value === "boolean"; + } + function IsDate(value) { + return value instanceof globalThis.Date; + } + function IsFunction(value) { + return typeof value === "function"; + } + function IsIterator(value) { + return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value; + } + function IsNull(value) { + return value === null; + } + function IsNumber(value) { + return typeof value === "number"; + } + function IsObject(value) { + return typeof value === "object" && value !== null; + } + function IsRegExp(value) { + return value instanceof globalThis.RegExp; + } + function IsString(value) { + return typeof value === "string"; + } + function IsSymbol(value) { + return typeof value === "symbol"; + } + function IsUint8Array(value) { + return value instanceof globalThis.Uint8Array; + } + function IsUndefined(value) { + return value === void 0; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/clone/value.js +var require_value2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/clone/value.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Clone = Clone; + var ValueGuard = require_value(); + function ArrayType(value) { + return value.map((value2) => Visit(value2)); + } + function DateType(value) { + return new Date(value.getTime()); + } + function Uint8ArrayType(value) { + return new Uint8Array(value); + } + function RegExpType(value) { + return new RegExp(value.source, value.flags); + } + function ObjectType(value) { + const result = {}; + for (const key of Object.getOwnPropertyNames(value)) { + result[key] = Visit(value[key]); + } + for (const key of Object.getOwnPropertySymbols(value)) { + result[key] = Visit(value[key]); + } + return result; + } + function Visit(value) { + return ValueGuard.IsArray(value) ? ArrayType(value) : ValueGuard.IsDate(value) ? DateType(value) : ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) : ValueGuard.IsRegExp(value) ? RegExpType(value) : ValueGuard.IsObject(value) ? ObjectType(value) : value; + } + function Clone(value) { + return Visit(value); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/clone/type.js +var require_type = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/clone/type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CloneRest = CloneRest; + exports2.CloneType = CloneType; + var value_1 = require_value2(); + function CloneRest(schemas) { + return schemas.map((schema) => CloneType(schema)); + } + function CloneType(schema, options) { + return options === void 0 ? (0, value_1.Clone)(schema) : (0, value_1.Clone)({ ...options, ...schema }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/clone/index.js +var require_clone = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/clone/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_type(), exports2); + __exportStar2(require_value2(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/guard/guard.js +var require_guard = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/guard/guard.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IsAsyncIterator = IsAsyncIterator; + exports2.IsIterator = IsIterator; + exports2.IsStandardObject = IsStandardObject; + exports2.IsInstanceObject = IsInstanceObject; + exports2.IsPromise = IsPromise; + exports2.IsDate = IsDate; + exports2.IsMap = IsMap; + exports2.IsSet = IsSet; + exports2.IsRegExp = IsRegExp; + exports2.IsTypedArray = IsTypedArray; + exports2.IsInt8Array = IsInt8Array; + exports2.IsUint8Array = IsUint8Array; + exports2.IsUint8ClampedArray = IsUint8ClampedArray; + exports2.IsInt16Array = IsInt16Array; + exports2.IsUint16Array = IsUint16Array; + exports2.IsInt32Array = IsInt32Array; + exports2.IsUint32Array = IsUint32Array; + exports2.IsFloat32Array = IsFloat32Array; + exports2.IsFloat64Array = IsFloat64Array; + exports2.IsBigInt64Array = IsBigInt64Array; + exports2.IsBigUint64Array = IsBigUint64Array; + exports2.HasPropertyKey = HasPropertyKey; + exports2.IsObject = IsObject; + exports2.IsArray = IsArray; + exports2.IsUndefined = IsUndefined; + exports2.IsNull = IsNull; + exports2.IsBoolean = IsBoolean; + exports2.IsNumber = IsNumber; + exports2.IsInteger = IsInteger; + exports2.IsBigInt = IsBigInt; + exports2.IsString = IsString; + exports2.IsFunction = IsFunction; + exports2.IsSymbol = IsSymbol; + exports2.IsValueType = IsValueType; + function IsAsyncIterator(value) { + return IsObject(value) && Symbol.asyncIterator in value; + } + function IsIterator(value) { + return IsObject(value) && Symbol.iterator in value; + } + function IsStandardObject(value) { + return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null); + } + function IsInstanceObject(value) { + return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== "Object"; + } + function IsPromise(value) { + return value instanceof Promise; + } + function IsDate(value) { + return value instanceof Date && Number.isFinite(value.getTime()); + } + function IsMap(value) { + return value instanceof globalThis.Map; + } + function IsSet(value) { + return value instanceof globalThis.Set; + } + function IsRegExp(value) { + return value instanceof globalThis.RegExp; + } + function IsTypedArray(value) { + return ArrayBuffer.isView(value); + } + function IsInt8Array(value) { + return value instanceof globalThis.Int8Array; + } + function IsUint8Array(value) { + return value instanceof globalThis.Uint8Array; + } + function IsUint8ClampedArray(value) { + return value instanceof globalThis.Uint8ClampedArray; + } + function IsInt16Array(value) { + return value instanceof globalThis.Int16Array; + } + function IsUint16Array(value) { + return value instanceof globalThis.Uint16Array; + } + function IsInt32Array(value) { + return value instanceof globalThis.Int32Array; + } + function IsUint32Array(value) { + return value instanceof globalThis.Uint32Array; + } + function IsFloat32Array(value) { + return value instanceof globalThis.Float32Array; + } + function IsFloat64Array(value) { + return value instanceof globalThis.Float64Array; + } + function IsBigInt64Array(value) { + return value instanceof globalThis.BigInt64Array; + } + function IsBigUint64Array(value) { + return value instanceof globalThis.BigUint64Array; + } + function HasPropertyKey(value, key) { + return key in value; + } + function IsObject(value) { + return value !== null && typeof value === "object"; + } + function IsArray(value) { + return Array.isArray(value) && !ArrayBuffer.isView(value); + } + function IsUndefined(value) { + return value === void 0; + } + function IsNull(value) { + return value === null; + } + function IsBoolean(value) { + return typeof value === "boolean"; + } + function IsNumber(value) { + return typeof value === "number"; + } + function IsInteger(value) { + return Number.isInteger(value); + } + function IsBigInt(value) { + return typeof value === "bigint"; + } + function IsString(value) { + return typeof value === "string"; + } + function IsFunction(value) { + return typeof value === "function"; + } + function IsSymbol(value) { + return typeof value === "symbol"; + } + function IsValueType(value) { + return IsBigInt(value) || IsBoolean(value) || IsNull(value) || IsNumber(value) || IsString(value) || IsSymbol(value) || IsUndefined(value); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/guard/index.js +var require_guard2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/guard/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_guard(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/system/policy.js +var require_policy = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/system/policy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeSystemPolicy = void 0; + var index_1 = require_guard2(); + var TypeSystemPolicy; + (function(TypeSystemPolicy2) { + TypeSystemPolicy2.InstanceMode = "default"; + TypeSystemPolicy2.ExactOptionalPropertyTypes = false; + TypeSystemPolicy2.AllowArrayObject = false; + TypeSystemPolicy2.AllowNaN = false; + TypeSystemPolicy2.AllowNullVoid = false; + function IsExactOptionalProperty(value, key) { + return TypeSystemPolicy2.ExactOptionalPropertyTypes ? key in value : value[key] !== void 0; + } + TypeSystemPolicy2.IsExactOptionalProperty = IsExactOptionalProperty; + function IsObjectLike(value) { + const isObject = (0, index_1.IsObject)(value); + return TypeSystemPolicy2.AllowArrayObject ? isObject : isObject && !(0, index_1.IsArray)(value); + } + TypeSystemPolicy2.IsObjectLike = IsObjectLike; + function IsRecordLike(value) { + return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array); + } + TypeSystemPolicy2.IsRecordLike = IsRecordLike; + function IsNumberLike(value) { + return TypeSystemPolicy2.AllowNaN ? (0, index_1.IsNumber)(value) : Number.isFinite(value); + } + TypeSystemPolicy2.IsNumberLike = IsNumberLike; + function IsVoidLike(value) { + const isUndefined = (0, index_1.IsUndefined)(value); + return TypeSystemPolicy2.AllowNullVoid ? isUndefined || value === null : isUndefined; + } + TypeSystemPolicy2.IsVoidLike = IsVoidLike; + })(TypeSystemPolicy || (exports2.TypeSystemPolicy = TypeSystemPolicy = {})); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/create/immutable.js +var require_immutable = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/create/immutable.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Immutable = Immutable; + var ValueGuard = require_value(); + function ImmutableArray(value) { + return globalThis.Object.freeze(value).map((value2) => Immutable(value2)); + } + function ImmutableDate(value) { + return value; + } + function ImmutableUint8Array(value) { + return value; + } + function ImmutableRegExp(value) { + return value; + } + function ImmutableObject(value) { + const result = {}; + for (const key of Object.getOwnPropertyNames(value)) { + result[key] = Immutable(value[key]); + } + for (const key of Object.getOwnPropertySymbols(value)) { + result[key] = Immutable(value[key]); + } + return globalThis.Object.freeze(result); + } + function Immutable(value) { + return ValueGuard.IsArray(value) ? ImmutableArray(value) : ValueGuard.IsDate(value) ? ImmutableDate(value) : ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) : ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) : ValueGuard.IsObject(value) ? ImmutableObject(value) : value; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/create/type.js +var require_type2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/create/type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.CreateType = CreateType; + var policy_1 = require_policy(); + var immutable_1 = require_immutable(); + var value_1 = require_value2(); + function CreateType(schema, options) { + const result = options !== void 0 ? { ...options, ...schema } : schema; + switch (policy_1.TypeSystemPolicy.InstanceMode) { + case "freeze": + return (0, immutable_1.Immutable)(result); + case "clone": + return (0, value_1.Clone)(result); + default: + return result; + } + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/create/index.js +var require_create = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/create/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_type2(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/error/error.js +var require_error = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/error/error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeBoxError = void 0; + var TypeBoxError = class extends Error { + constructor(message) { + super(message); + } + }; + exports2.TypeBoxError = TypeBoxError; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/error/index.js +var require_error2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/error/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_error(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.js +var require_symbols = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Kind = exports2.Hint = exports2.OptionalKind = exports2.ReadonlyKind = exports2.TransformKind = void 0; + exports2.TransformKind = Symbol.for("TypeBox.Transform"); + exports2.ReadonlyKind = Symbol.for("TypeBox.Readonly"); + exports2.OptionalKind = Symbol.for("TypeBox.Optional"); + exports2.Hint = Symbol.for("TypeBox.Hint"); + exports2.Kind = Symbol.for("TypeBox.Kind"); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/symbols/index.js +var require_symbols2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/symbols/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_symbols(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/guard/kind.js +var require_kind = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/guard/kind.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IsReadonly = IsReadonly; + exports2.IsOptional = IsOptional; + exports2.IsAny = IsAny; + exports2.IsArray = IsArray; + exports2.IsAsyncIterator = IsAsyncIterator; + exports2.IsBigInt = IsBigInt; + exports2.IsBoolean = IsBoolean; + exports2.IsConstructor = IsConstructor; + exports2.IsDate = IsDate; + exports2.IsFunction = IsFunction; + exports2.IsInteger = IsInteger; + exports2.IsProperties = IsProperties; + exports2.IsIntersect = IsIntersect; + exports2.IsIterator = IsIterator; + exports2.IsKindOf = IsKindOf; + exports2.IsLiteralString = IsLiteralString; + exports2.IsLiteralNumber = IsLiteralNumber; + exports2.IsLiteralBoolean = IsLiteralBoolean; + exports2.IsLiteral = IsLiteral; + exports2.IsMappedKey = IsMappedKey; + exports2.IsMappedResult = IsMappedResult; + exports2.IsNever = IsNever; + exports2.IsNot = IsNot; + exports2.IsNull = IsNull; + exports2.IsNumber = IsNumber; + exports2.IsObject = IsObject; + exports2.IsPromise = IsPromise; + exports2.IsRecord = IsRecord; + exports2.IsRecursive = IsRecursive; + exports2.IsRef = IsRef; + exports2.IsRegExp = IsRegExp; + exports2.IsString = IsString; + exports2.IsSymbol = IsSymbol; + exports2.IsTemplateLiteral = IsTemplateLiteral; + exports2.IsThis = IsThis; + exports2.IsTransform = IsTransform; + exports2.IsTuple = IsTuple; + exports2.IsUndefined = IsUndefined; + exports2.IsUnion = IsUnion; + exports2.IsUint8Array = IsUint8Array; + exports2.IsUnknown = IsUnknown; + exports2.IsUnsafe = IsUnsafe; + exports2.IsVoid = IsVoid; + exports2.IsKind = IsKind; + exports2.IsSchema = IsSchema; + var ValueGuard = require_value(); + var index_1 = require_symbols2(); + function IsReadonly(value) { + return ValueGuard.IsObject(value) && value[index_1.ReadonlyKind] === "Readonly"; + } + function IsOptional(value) { + return ValueGuard.IsObject(value) && value[index_1.OptionalKind] === "Optional"; + } + function IsAny(value) { + return IsKindOf(value, "Any"); + } + function IsArray(value) { + return IsKindOf(value, "Array"); + } + function IsAsyncIterator(value) { + return IsKindOf(value, "AsyncIterator"); + } + function IsBigInt(value) { + return IsKindOf(value, "BigInt"); + } + function IsBoolean(value) { + return IsKindOf(value, "Boolean"); + } + function IsConstructor(value) { + return IsKindOf(value, "Constructor"); + } + function IsDate(value) { + return IsKindOf(value, "Date"); + } + function IsFunction(value) { + return IsKindOf(value, "Function"); + } + function IsInteger(value) { + return IsKindOf(value, "Integer"); + } + function IsProperties(value) { + return ValueGuard.IsObject(value); + } + function IsIntersect(value) { + return IsKindOf(value, "Intersect"); + } + function IsIterator(value) { + return IsKindOf(value, "Iterator"); + } + function IsKindOf(value, kind) { + return ValueGuard.IsObject(value) && index_1.Kind in value && value[index_1.Kind] === kind; + } + function IsLiteralString(value) { + return IsLiteral(value) && ValueGuard.IsString(value.const); + } + function IsLiteralNumber(value) { + return IsLiteral(value) && ValueGuard.IsNumber(value.const); + } + function IsLiteralBoolean(value) { + return IsLiteral(value) && ValueGuard.IsBoolean(value.const); + } + function IsLiteral(value) { + return IsKindOf(value, "Literal"); + } + function IsMappedKey(value) { + return IsKindOf(value, "MappedKey"); + } + function IsMappedResult(value) { + return IsKindOf(value, "MappedResult"); + } + function IsNever(value) { + return IsKindOf(value, "Never"); + } + function IsNot(value) { + return IsKindOf(value, "Not"); + } + function IsNull(value) { + return IsKindOf(value, "Null"); + } + function IsNumber(value) { + return IsKindOf(value, "Number"); + } + function IsObject(value) { + return IsKindOf(value, "Object"); + } + function IsPromise(value) { + return IsKindOf(value, "Promise"); + } + function IsRecord(value) { + return IsKindOf(value, "Record"); + } + function IsRecursive(value) { + return ValueGuard.IsObject(value) && index_1.Hint in value && value[index_1.Hint] === "Recursive"; + } + function IsRef(value) { + return IsKindOf(value, "Ref"); + } + function IsRegExp(value) { + return IsKindOf(value, "RegExp"); + } + function IsString(value) { + return IsKindOf(value, "String"); + } + function IsSymbol(value) { + return IsKindOf(value, "Symbol"); + } + function IsTemplateLiteral(value) { + return IsKindOf(value, "TemplateLiteral"); + } + function IsThis(value) { + return IsKindOf(value, "This"); + } + function IsTransform(value) { + return ValueGuard.IsObject(value) && index_1.TransformKind in value; + } + function IsTuple(value) { + return IsKindOf(value, "Tuple"); + } + function IsUndefined(value) { + return IsKindOf(value, "Undefined"); + } + function IsUnion(value) { + return IsKindOf(value, "Union"); + } + function IsUint8Array(value) { + return IsKindOf(value, "Uint8Array"); + } + function IsUnknown(value) { + return IsKindOf(value, "Unknown"); + } + function IsUnsafe(value) { + return IsKindOf(value, "Unsafe"); + } + function IsVoid(value) { + return IsKindOf(value, "Void"); + } + function IsKind(value) { + return ValueGuard.IsObject(value) && index_1.Kind in value && ValueGuard.IsString(value[index_1.Kind]); + } + function IsSchema(value) { + return IsAny(value) || IsArray(value) || IsBoolean(value) || IsBigInt(value) || IsAsyncIterator(value) || IsConstructor(value) || IsDate(value) || IsFunction(value) || IsInteger(value) || IsIntersect(value) || IsIterator(value) || IsLiteral(value) || IsMappedKey(value) || IsMappedResult(value) || IsNever(value) || IsNot(value) || IsNull(value) || IsNumber(value) || IsObject(value) || IsPromise(value) || IsRecord(value) || IsRef(value) || IsRegExp(value) || IsString(value) || IsSymbol(value) || IsTemplateLiteral(value) || IsThis(value) || IsTuple(value) || IsUndefined(value) || IsUnion(value) || IsUint8Array(value) || IsUnknown(value) || IsUnsafe(value) || IsVoid(value) || IsKind(value); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/guard/type.js +var require_type3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/guard/type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeGuardUnknownTypeError = void 0; + exports2.IsReadonly = IsReadonly; + exports2.IsOptional = IsOptional; + exports2.IsAny = IsAny; + exports2.IsArray = IsArray; + exports2.IsAsyncIterator = IsAsyncIterator; + exports2.IsBigInt = IsBigInt; + exports2.IsBoolean = IsBoolean; + exports2.IsConstructor = IsConstructor; + exports2.IsDate = IsDate; + exports2.IsFunction = IsFunction; + exports2.IsInteger = IsInteger; + exports2.IsProperties = IsProperties; + exports2.IsIntersect = IsIntersect; + exports2.IsIterator = IsIterator; + exports2.IsKindOf = IsKindOf; + exports2.IsLiteralString = IsLiteralString; + exports2.IsLiteralNumber = IsLiteralNumber; + exports2.IsLiteralBoolean = IsLiteralBoolean; + exports2.IsLiteral = IsLiteral; + exports2.IsLiteralValue = IsLiteralValue; + exports2.IsMappedKey = IsMappedKey; + exports2.IsMappedResult = IsMappedResult; + exports2.IsNever = IsNever; + exports2.IsNot = IsNot; + exports2.IsNull = IsNull; + exports2.IsNumber = IsNumber; + exports2.IsObject = IsObject; + exports2.IsPromise = IsPromise; + exports2.IsRecord = IsRecord; + exports2.IsRecursive = IsRecursive; + exports2.IsRef = IsRef; + exports2.IsRegExp = IsRegExp; + exports2.IsString = IsString; + exports2.IsSymbol = IsSymbol; + exports2.IsTemplateLiteral = IsTemplateLiteral; + exports2.IsThis = IsThis; + exports2.IsTransform = IsTransform; + exports2.IsTuple = IsTuple; + exports2.IsUndefined = IsUndefined; + exports2.IsUnionLiteral = IsUnionLiteral; + exports2.IsUnion = IsUnion; + exports2.IsUint8Array = IsUint8Array; + exports2.IsUnknown = IsUnknown; + exports2.IsUnsafe = IsUnsafe; + exports2.IsVoid = IsVoid; + exports2.IsKind = IsKind; + exports2.IsSchema = IsSchema; + var ValueGuard = require_value(); + var index_1 = require_symbols2(); + var index_2 = require_error2(); + var TypeGuardUnknownTypeError = class extends index_2.TypeBoxError { + }; + exports2.TypeGuardUnknownTypeError = TypeGuardUnknownTypeError; + var KnownTypes = [ + "Any", + "Array", + "AsyncIterator", + "BigInt", + "Boolean", + "Constructor", + "Date", + "Enum", + "Function", + "Integer", + "Intersect", + "Iterator", + "Literal", + "MappedKey", + "MappedResult", + "Not", + "Null", + "Number", + "Object", + "Promise", + "Record", + "Ref", + "RegExp", + "String", + "Symbol", + "TemplateLiteral", + "This", + "Tuple", + "Undefined", + "Union", + "Uint8Array", + "Unknown", + "Void" + ]; + function IsPattern(value) { + try { + new RegExp(value); + return true; + } catch { + return false; + } + } + function IsControlCharacterFree(value) { + if (!ValueGuard.IsString(value)) + return false; + for (let i = 0; i < value.length; i++) { + const code = value.charCodeAt(i); + if (code >= 7 && code <= 13 || code === 27 || code === 127) { + return false; + } + } + return true; + } + function IsAdditionalProperties(value) { + return IsOptionalBoolean(value) || IsSchema(value); + } + function IsOptionalBigInt(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value); + } + function IsOptionalNumber(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value); + } + function IsOptionalBoolean(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value); + } + function IsOptionalString(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value); + } + function IsOptionalPattern(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value); + } + function IsOptionalFormat(value) { + return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value) && IsControlCharacterFree(value); + } + function IsOptionalSchema(value) { + return ValueGuard.IsUndefined(value) || IsSchema(value); + } + function IsReadonly(value) { + return ValueGuard.IsObject(value) && value[index_1.ReadonlyKind] === "Readonly"; + } + function IsOptional(value) { + return ValueGuard.IsObject(value) && value[index_1.OptionalKind] === "Optional"; + } + function IsAny(value) { + return IsKindOf(value, "Any") && IsOptionalString(value.$id); + } + function IsArray(value) { + return IsKindOf(value, "Array") && value.type === "array" && IsOptionalString(value.$id) && IsSchema(value.items) && IsOptionalNumber(value.minItems) && IsOptionalNumber(value.maxItems) && IsOptionalBoolean(value.uniqueItems) && IsOptionalSchema(value.contains) && IsOptionalNumber(value.minContains) && IsOptionalNumber(value.maxContains); + } + function IsAsyncIterator(value) { + return IsKindOf(value, "AsyncIterator") && value.type === "AsyncIterator" && IsOptionalString(value.$id) && IsSchema(value.items); + } + function IsBigInt(value) { + return IsKindOf(value, "BigInt") && value.type === "bigint" && IsOptionalString(value.$id) && IsOptionalBigInt(value.exclusiveMaximum) && IsOptionalBigInt(value.exclusiveMinimum) && IsOptionalBigInt(value.maximum) && IsOptionalBigInt(value.minimum) && IsOptionalBigInt(value.multipleOf); + } + function IsBoolean(value) { + return IsKindOf(value, "Boolean") && value.type === "boolean" && IsOptionalString(value.$id); + } + function IsConstructor(value) { + return IsKindOf(value, "Constructor") && value.type === "Constructor" && IsOptionalString(value.$id) && ValueGuard.IsArray(value.parameters) && value.parameters.every((schema) => IsSchema(schema)) && IsSchema(value.returns); + } + function IsDate(value) { + return IsKindOf(value, "Date") && value.type === "Date" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximumTimestamp) && IsOptionalNumber(value.exclusiveMinimumTimestamp) && IsOptionalNumber(value.maximumTimestamp) && IsOptionalNumber(value.minimumTimestamp) && IsOptionalNumber(value.multipleOfTimestamp); + } + function IsFunction(value) { + return IsKindOf(value, "Function") && value.type === "Function" && IsOptionalString(value.$id) && ValueGuard.IsArray(value.parameters) && value.parameters.every((schema) => IsSchema(schema)) && IsSchema(value.returns); + } + function IsInteger(value) { + return IsKindOf(value, "Integer") && value.type === "integer" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); + } + function IsProperties(value) { + return ValueGuard.IsObject(value) && Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)); + } + function IsIntersect(value) { + return IsKindOf(value, "Intersect") && (ValueGuard.IsString(value.type) && value.type !== "object" ? false : true) && ValueGuard.IsArray(value.allOf) && value.allOf.every((schema) => IsSchema(schema) && !IsTransform(schema)) && IsOptionalString(value.type) && (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) && IsOptionalString(value.$id); + } + function IsIterator(value) { + return IsKindOf(value, "Iterator") && value.type === "Iterator" && IsOptionalString(value.$id) && IsSchema(value.items); + } + function IsKindOf(value, kind) { + return ValueGuard.IsObject(value) && index_1.Kind in value && value[index_1.Kind] === kind; + } + function IsLiteralString(value) { + return IsLiteral(value) && ValueGuard.IsString(value.const); + } + function IsLiteralNumber(value) { + return IsLiteral(value) && ValueGuard.IsNumber(value.const); + } + function IsLiteralBoolean(value) { + return IsLiteral(value) && ValueGuard.IsBoolean(value.const); + } + function IsLiteral(value) { + return IsKindOf(value, "Literal") && IsOptionalString(value.$id) && IsLiteralValue(value.const); + } + function IsLiteralValue(value) { + return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value); + } + function IsMappedKey(value) { + return IsKindOf(value, "MappedKey") && ValueGuard.IsArray(value.keys) && value.keys.every((key) => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)); + } + function IsMappedResult(value) { + return IsKindOf(value, "MappedResult") && IsProperties(value.properties); + } + function IsNever(value) { + return IsKindOf(value, "Never") && ValueGuard.IsObject(value.not) && Object.getOwnPropertyNames(value.not).length === 0; + } + function IsNot(value) { + return IsKindOf(value, "Not") && IsSchema(value.not); + } + function IsNull(value) { + return IsKindOf(value, "Null") && value.type === "null" && IsOptionalString(value.$id); + } + function IsNumber(value) { + return IsKindOf(value, "Number") && value.type === "number" && IsOptionalString(value.$id) && IsOptionalNumber(value.exclusiveMaximum) && IsOptionalNumber(value.exclusiveMinimum) && IsOptionalNumber(value.maximum) && IsOptionalNumber(value.minimum) && IsOptionalNumber(value.multipleOf); + } + function IsObject(value) { + return IsKindOf(value, "Object") && value.type === "object" && IsOptionalString(value.$id) && IsProperties(value.properties) && IsAdditionalProperties(value.additionalProperties) && IsOptionalNumber(value.minProperties) && IsOptionalNumber(value.maxProperties); + } + function IsPromise(value) { + return IsKindOf(value, "Promise") && value.type === "Promise" && IsOptionalString(value.$id) && IsSchema(value.item); + } + function IsRecord(value) { + return IsKindOf(value, "Record") && value.type === "object" && IsOptionalString(value.$id) && IsAdditionalProperties(value.additionalProperties) && ValueGuard.IsObject(value.patternProperties) && ((schema) => { + const keys = Object.getOwnPropertyNames(schema.patternProperties); + return keys.length === 1 && IsPattern(keys[0]) && ValueGuard.IsObject(schema.patternProperties) && IsSchema(schema.patternProperties[keys[0]]); + })(value); + } + function IsRecursive(value) { + return ValueGuard.IsObject(value) && index_1.Hint in value && value[index_1.Hint] === "Recursive"; + } + function IsRef(value) { + return IsKindOf(value, "Ref") && IsOptionalString(value.$id) && ValueGuard.IsString(value.$ref); + } + function IsRegExp(value) { + return IsKindOf(value, "RegExp") && IsOptionalString(value.$id) && ValueGuard.IsString(value.source) && ValueGuard.IsString(value.flags) && IsOptionalNumber(value.maxLength) && IsOptionalNumber(value.minLength); + } + function IsString(value) { + return IsKindOf(value, "String") && value.type === "string" && IsOptionalString(value.$id) && IsOptionalNumber(value.minLength) && IsOptionalNumber(value.maxLength) && IsOptionalPattern(value.pattern) && IsOptionalFormat(value.format); + } + function IsSymbol(value) { + return IsKindOf(value, "Symbol") && value.type === "symbol" && IsOptionalString(value.$id); + } + function IsTemplateLiteral(value) { + return IsKindOf(value, "TemplateLiteral") && value.type === "string" && ValueGuard.IsString(value.pattern) && value.pattern[0] === "^" && value.pattern[value.pattern.length - 1] === "$"; + } + function IsThis(value) { + return IsKindOf(value, "This") && IsOptionalString(value.$id) && ValueGuard.IsString(value.$ref); + } + function IsTransform(value) { + return ValueGuard.IsObject(value) && index_1.TransformKind in value; + } + function IsTuple(value) { + return IsKindOf(value, "Tuple") && value.type === "array" && IsOptionalString(value.$id) && ValueGuard.IsNumber(value.minItems) && ValueGuard.IsNumber(value.maxItems) && value.minItems === value.maxItems && // empty + (ValueGuard.IsUndefined(value.items) && ValueGuard.IsUndefined(value.additionalItems) && value.minItems === 0 || ValueGuard.IsArray(value.items) && value.items.every((schema) => IsSchema(schema))); + } + function IsUndefined(value) { + return IsKindOf(value, "Undefined") && value.type === "undefined" && IsOptionalString(value.$id); + } + function IsUnionLiteral(value) { + return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema)); + } + function IsUnion(value) { + return IsKindOf(value, "Union") && IsOptionalString(value.$id) && ValueGuard.IsObject(value) && ValueGuard.IsArray(value.anyOf) && value.anyOf.every((schema) => IsSchema(schema)); + } + function IsUint8Array(value) { + return IsKindOf(value, "Uint8Array") && value.type === "Uint8Array" && IsOptionalString(value.$id) && IsOptionalNumber(value.minByteLength) && IsOptionalNumber(value.maxByteLength); + } + function IsUnknown(value) { + return IsKindOf(value, "Unknown") && IsOptionalString(value.$id); + } + function IsUnsafe(value) { + return IsKindOf(value, "Unsafe"); + } + function IsVoid(value) { + return IsKindOf(value, "Void") && value.type === "void" && IsOptionalString(value.$id); + } + function IsKind(value) { + return ValueGuard.IsObject(value) && index_1.Kind in value && ValueGuard.IsString(value[index_1.Kind]) && !KnownTypes.includes(value[index_1.Kind]); + } + function IsSchema(value) { + return ValueGuard.IsObject(value) && (IsAny(value) || IsArray(value) || IsBoolean(value) || IsBigInt(value) || IsAsyncIterator(value) || IsConstructor(value) || IsDate(value) || IsFunction(value) || IsInteger(value) || IsIntersect(value) || IsIterator(value) || IsLiteral(value) || IsMappedKey(value) || IsMappedResult(value) || IsNever(value) || IsNot(value) || IsNull(value) || IsNumber(value) || IsObject(value) || IsPromise(value) || IsRecord(value) || IsRef(value) || IsRegExp(value) || IsString(value) || IsSymbol(value) || IsTemplateLiteral(value) || IsThis(value) || IsTuple(value) || IsUndefined(value) || IsUnion(value) || IsUint8Array(value) || IsUnknown(value) || IsUnsafe(value) || IsVoid(value) || IsKind(value)); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/guard/index.js +var require_guard3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/guard/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ValueGuard = exports2.TypeGuard = exports2.KindGuard = void 0; + exports2.KindGuard = require_kind(); + exports2.TypeGuard = require_type3(); + exports2.ValueGuard = require_value(); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.js +var require_helpers = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Increment = Increment; + function Increment(T) { + return (parseInt(T) + 1).toString(); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/helpers/index.js +var require_helpers2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/helpers/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_helpers(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.js +var require_patterns = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PatternNeverExact = exports2.PatternStringExact = exports2.PatternNumberExact = exports2.PatternBooleanExact = exports2.PatternNever = exports2.PatternString = exports2.PatternNumber = exports2.PatternBoolean = void 0; + exports2.PatternBoolean = "(true|false)"; + exports2.PatternNumber = "(0|[1-9][0-9]*)"; + exports2.PatternString = "(.*)"; + exports2.PatternNever = "(?!.*)"; + exports2.PatternBooleanExact = `^${exports2.PatternBoolean}$`; + exports2.PatternNumberExact = `^${exports2.PatternNumber}$`; + exports2.PatternStringExact = `^${exports2.PatternString}$`; + exports2.PatternNeverExact = `^${exports2.PatternNever}$`; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/patterns/index.js +var require_patterns2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/patterns/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_patterns(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/registry/format.js +var require_format = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/registry/format.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Entries = Entries; + exports2.Clear = Clear; + exports2.Delete = Delete; + exports2.Has = Has; + exports2.Set = Set2; + exports2.Get = Get; + var map = /* @__PURE__ */ new Map(); + function Entries() { + return new Map(map); + } + function Clear() { + return map.clear(); + } + function Delete(format) { + return map.delete(format); + } + function Has(format) { + return map.has(format); + } + function Set2(format, func) { + map.set(format, func); + } + function Get(format) { + return map.get(format); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/registry/type.js +var require_type4 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/registry/type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Entries = Entries; + exports2.Clear = Clear; + exports2.Delete = Delete; + exports2.Has = Has; + exports2.Set = Set2; + exports2.Get = Get; + var map = /* @__PURE__ */ new Map(); + function Entries() { + return new Map(map); + } + function Clear() { + return map.clear(); + } + function Delete(kind) { + return map.delete(kind); + } + function Has(kind) { + return map.has(kind); + } + function Set2(kind, func) { + map.set(kind, func); + } + function Get(kind) { + return map.get(kind); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/registry/index.js +var require_registry = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/registry/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeRegistry = exports2.FormatRegistry = void 0; + exports2.FormatRegistry = require_format(); + exports2.TypeRegistry = require_type4(); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/sets/set.js +var require_set = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/sets/set.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SetIncludes = SetIncludes; + exports2.SetIsSubset = SetIsSubset; + exports2.SetDistinct = SetDistinct; + exports2.SetIntersect = SetIntersect; + exports2.SetUnion = SetUnion; + exports2.SetComplement = SetComplement; + exports2.SetIntersectMany = SetIntersectMany; + exports2.SetUnionMany = SetUnionMany; + function SetIncludes(T, S) { + return T.includes(S); + } + function SetIsSubset(T, S) { + return T.every((L) => SetIncludes(S, L)); + } + function SetDistinct(T) { + return [...new Set(T)]; + } + function SetIntersect(T, S) { + return T.filter((L) => S.includes(L)); + } + function SetUnion(T, S) { + return [...T, ...S]; + } + function SetComplement(T, S) { + return T.filter((L) => !S.includes(L)); + } + function SetIntersectManyResolve(T, Init) { + return T.reduce((Acc, L) => { + return SetIntersect(Acc, L); + }, Init); + } + function SetIntersectMany(T) { + return T.length === 1 ? T[0] : T.length > 1 ? SetIntersectManyResolve(T.slice(1), T[0]) : []; + } + function SetUnionMany(T) { + const Acc = []; + for (const L of T) + Acc.push(...L); + return Acc; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/sets/index.js +var require_sets = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/sets/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_set(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/any/any.js +var require_any = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/any/any.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Any = Any; + var index_1 = require_create(); + var index_2 = require_symbols2(); + function Any(options) { + return (0, index_1.CreateType)({ [index_2.Kind]: "Any" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/any/index.js +var require_any2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/any/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_any(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/array/array.js +var require_array = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/array/array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Array = Array2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Array2(items, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Array", type: "array", items }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/array/index.js +var require_array2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/array/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_array(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.js +var require_async_iterator = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AsyncIterator = AsyncIterator; + var index_1 = require_symbols2(); + var type_1 = require_type2(); + function AsyncIterator(items, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "AsyncIterator", type: "AsyncIterator", items }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.js +var require_async_iterator2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_async_iterator(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/discard/discard.js +var require_discard = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/discard/discard.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Discard = Discard; + function DiscardKey(value, key) { + const { [key]: _, ...rest } = value; + return rest; + } + function Discard(value, keys) { + return keys.reduce((acc, key) => DiscardKey(acc, key), value); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/discard/index.js +var require_discard2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/discard/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_discard(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/never/never.js +var require_never = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/never/never.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Never = Never; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Never(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Never", not: {} }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/never/index.js +var require_never2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/never/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_never(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.js +var require_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.MappedKey = MappedKey; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function MappedKey(T) { + return (0, type_1.CreateType)({ + [index_1.Kind]: "MappedKey", + keys: T + }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.js +var require_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.MappedResult = MappedResult; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function MappedResult(properties) { + return (0, type_1.CreateType)({ + [index_1.Kind]: "MappedResult", + properties + }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.js +var require_constructor = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Constructor = Constructor; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Constructor(parameters, returns, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Constructor", type: "Constructor", parameters, returns }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/constructor/index.js +var require_constructor2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/constructor/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_constructor(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/function/function.js +var require_function = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/function/function.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Function = Function2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Function2(parameters, returns, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Function", type: "Function", parameters, returns }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/function/index.js +var require_function2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/function/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_function(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/union/union-create.js +var require_union_create = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/union/union-create.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UnionCreate = UnionCreate; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function UnionCreate(T, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Union", anyOf: T }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.js +var require_union_evaluated = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UnionEvaluated = UnionEvaluated; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var index_2 = require_discard2(); + var index_3 = require_never2(); + var index_4 = require_optional2(); + var union_create_1 = require_union_create(); + var kind_1 = require_kind(); + function IsUnionOptional(T) { + return T.some((L) => (0, kind_1.IsOptional)(L)); + } + function RemoveOptionalFromRest(T) { + return T.map((L) => (0, kind_1.IsOptional)(L) ? RemoveOptionalFromType(L) : L); + } + function RemoveOptionalFromType(T) { + return (0, index_2.Discard)(T, [index_1.OptionalKind]); + } + function ResolveUnion(T, options) { + return IsUnionOptional(T) ? (0, index_4.Optional)((0, union_create_1.UnionCreate)(RemoveOptionalFromRest(T), options)) : (0, union_create_1.UnionCreate)(RemoveOptionalFromRest(T), options); + } + function UnionEvaluated(T, options) { + return T.length === 0 ? (0, index_3.Never)(options) : T.length === 1 ? (0, type_1.CreateType)(T[0], options) : ResolveUnion(T, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/union/union-type.js +var require_union_type = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/union/union-type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var index_1 = require_symbols2(); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/union/union.js +var require_union2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/union/union.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Union = Union; + var index_1 = require_never2(); + var type_1 = require_type2(); + var union_create_1 = require_union_create(); + function Union(T, options) { + return T.length === 0 ? (0, index_1.Never)(options) : T.length === 1 ? (0, type_1.CreateType)(T[0], options) : (0, union_create_1.UnionCreate)(T, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/union/index.js +var require_union3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/union/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_union_evaluated(), exports2); + __exportStar2(require_union_type(), exports2); + __exportStar2(require_union2(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.js +var require_parse = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralParserError = void 0; + exports2.TemplateLiteralParse = TemplateLiteralParse; + exports2.TemplateLiteralParseExact = TemplateLiteralParseExact; + var index_1 = require_error2(); + var TemplateLiteralParserError = class extends index_1.TypeBoxError { + }; + exports2.TemplateLiteralParserError = TemplateLiteralParserError; + function Unescape(pattern) { + return pattern.replace(/\\\$/g, "$").replace(/\\\*/g, "*").replace(/\\\^/g, "^").replace(/\\\|/g, "|").replace(/\\\(/g, "(").replace(/\\\)/g, ")"); + } + function IsNonEscaped(pattern, index, char) { + return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92; + } + function IsOpenParen(pattern, index) { + return IsNonEscaped(pattern, index, "("); + } + function IsCloseParen(pattern, index) { + return IsNonEscaped(pattern, index, ")"); + } + function IsSeparator(pattern, index) { + return IsNonEscaped(pattern, index, "|"); + } + function IsGroup(pattern) { + if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1))) + return false; + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (count === 0 && index !== pattern.length - 1) + return false; + } + return true; + } + function InGroup(pattern) { + return pattern.slice(1, pattern.length - 1); + } + function IsPrecedenceOr(pattern) { + let count = 0; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (IsSeparator(pattern, index) && count === 0) + return true; + } + return false; + } + function IsPrecedenceAnd(pattern) { + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + return true; + } + return false; + } + function Or(pattern) { + let [count, start] = [0, 0]; + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) + count += 1; + if (IsCloseParen(pattern, index)) + count -= 1; + if (IsSeparator(pattern, index) && count === 0) { + const range2 = pattern.slice(start, index); + if (range2.length > 0) + expressions.push(TemplateLiteralParse(range2)); + start = index + 1; + } + } + const range = pattern.slice(start); + if (range.length > 0) + expressions.push(TemplateLiteralParse(range)); + if (expressions.length === 0) + return { type: "const", const: "" }; + if (expressions.length === 1) + return expressions[0]; + return { type: "or", expr: expressions }; + } + function And(pattern) { + function Group(value, index) { + if (!IsOpenParen(value, index)) + throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`); + let count = 0; + for (let scan = index; scan < value.length; scan++) { + if (IsOpenParen(value, scan)) + count += 1; + if (IsCloseParen(value, scan)) + count -= 1; + if (count === 0) + return [index, scan]; + } + throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`); + } + function Range(pattern2, index) { + for (let scan = index; scan < pattern2.length; scan++) { + if (IsOpenParen(pattern2, scan)) + return [index, scan]; + } + return [index, pattern2.length]; + } + const expressions = []; + for (let index = 0; index < pattern.length; index++) { + if (IsOpenParen(pattern, index)) { + const [start, end] = Group(pattern, index); + const range = pattern.slice(start, end + 1); + expressions.push(TemplateLiteralParse(range)); + index = end; + } else { + const [start, end] = Range(pattern, index); + const range = pattern.slice(start, end); + if (range.length > 0) + expressions.push(TemplateLiteralParse(range)); + index = end - 1; + } + } + return expressions.length === 0 ? { type: "const", const: "" } : expressions.length === 1 ? expressions[0] : { type: "and", expr: expressions }; + } + function TemplateLiteralParse(pattern) { + return IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) : IsPrecedenceOr(pattern) ? Or(pattern) : IsPrecedenceAnd(pattern) ? And(pattern) : { type: "const", const: Unescape(pattern) }; + } + function TemplateLiteralParseExact(pattern) { + return TemplateLiteralParse(pattern.slice(1, pattern.length - 1)); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.js +var require_finite = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralFiniteError = void 0; + exports2.IsTemplateLiteralExpressionFinite = IsTemplateLiteralExpressionFinite; + exports2.IsTemplateLiteralFinite = IsTemplateLiteralFinite; + var parse_1 = require_parse(); + var index_1 = require_error2(); + var TemplateLiteralFiniteError = class extends index_1.TypeBoxError { + }; + exports2.TemplateLiteralFiniteError = TemplateLiteralFiniteError; + function IsNumberExpression(expression) { + return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "0" && expression.expr[1].type === "const" && expression.expr[1].const === "[1-9][0-9]*"; + } + function IsBooleanExpression(expression) { + return expression.type === "or" && expression.expr.length === 2 && expression.expr[0].type === "const" && expression.expr[0].const === "true" && expression.expr[1].type === "const" && expression.expr[1].const === "false"; + } + function IsStringExpression(expression) { + return expression.type === "const" && expression.const === ".*"; + } + function IsTemplateLiteralExpressionFinite(expression) { + return IsNumberExpression(expression) || IsStringExpression(expression) ? false : IsBooleanExpression(expression) ? true : expression.type === "and" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "or" ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) : expression.type === "const" ? true : (() => { + throw new TemplateLiteralFiniteError(`Unknown expression type`); + })(); + } + function IsTemplateLiteralFinite(schema) { + const expression = (0, parse_1.TemplateLiteralParseExact)(schema.pattern); + return IsTemplateLiteralExpressionFinite(expression); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.js +var require_generate = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralGenerateError = void 0; + exports2.TemplateLiteralExpressionGenerate = TemplateLiteralExpressionGenerate; + exports2.TemplateLiteralGenerate = TemplateLiteralGenerate; + var finite_1 = require_finite(); + var parse_1 = require_parse(); + var index_1 = require_error2(); + var TemplateLiteralGenerateError = class extends index_1.TypeBoxError { + }; + exports2.TemplateLiteralGenerateError = TemplateLiteralGenerateError; + function* GenerateReduce(buffer) { + if (buffer.length === 1) + return yield* buffer[0]; + for (const left of buffer[0]) { + for (const right of GenerateReduce(buffer.slice(1))) { + yield `${left}${right}`; + } + } + } + function* GenerateAnd(expression) { + return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)])); + } + function* GenerateOr(expression) { + for (const expr of expression.expr) + yield* TemplateLiteralExpressionGenerate(expr); + } + function* GenerateConst(expression) { + return yield expression.const; + } + function* TemplateLiteralExpressionGenerate(expression) { + return expression.type === "and" ? yield* GenerateAnd(expression) : expression.type === "or" ? yield* GenerateOr(expression) : expression.type === "const" ? yield* GenerateConst(expression) : (() => { + throw new TemplateLiteralGenerateError("Unknown expression"); + })(); + } + function TemplateLiteralGenerate(schema) { + const expression = (0, parse_1.TemplateLiteralParseExact)(schema.pattern); + return (0, finite_1.IsTemplateLiteralExpressionFinite)(expression) ? [...TemplateLiteralExpressionGenerate(expression)] : []; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/literal/literal.js +var require_literal = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/literal/literal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Literal = Literal; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Literal(value, options) { + return (0, type_1.CreateType)({ + [index_1.Kind]: "Literal", + const: value, + type: typeof value + }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/literal/index.js +var require_literal2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/literal/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_literal(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.js +var require_boolean = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Boolean = Boolean2; + var index_1 = require_symbols2(); + var index_2 = require_create(); + function Boolean2(options) { + return (0, index_2.CreateType)({ [index_1.Kind]: "Boolean", type: "boolean" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/boolean/index.js +var require_boolean2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/boolean/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_boolean(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.js +var require_bigint = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.BigInt = BigInt2; + var index_1 = require_symbols2(); + var index_2 = require_create(); + function BigInt2(options) { + return (0, index_2.CreateType)({ [index_1.Kind]: "BigInt", type: "bigint" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/bigint/index.js +var require_bigint2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/bigint/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_bigint(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/number/number.js +var require_number2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/number/number.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Number = Number2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Number2(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Number", type: "number" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/number/index.js +var require_number3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/number/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_number2(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/string/string.js +var require_string = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/string/string.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.String = String2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function String2(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "String", type: "string" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/string/index.js +var require_string2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/string/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_string(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.js +var require_syntax = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralSyntax = TemplateLiteralSyntax; + var index_1 = require_literal2(); + var index_2 = require_boolean2(); + var index_3 = require_bigint2(); + var index_4 = require_number3(); + var index_5 = require_string2(); + var index_6 = require_union3(); + var index_7 = require_never2(); + function* FromUnion(syntax) { + const trim = syntax.trim().replace(/"|'/g, ""); + return trim === "boolean" ? yield (0, index_2.Boolean)() : trim === "number" ? yield (0, index_4.Number)() : trim === "bigint" ? yield (0, index_3.BigInt)() : trim === "string" ? yield (0, index_5.String)() : yield (() => { + const literals = trim.split("|").map((literal) => (0, index_1.Literal)(literal.trim())); + return literals.length === 0 ? (0, index_7.Never)() : literals.length === 1 ? literals[0] : (0, index_6.UnionEvaluated)(literals); + })(); + } + function* FromTerminal(syntax) { + if (syntax[1] !== "{") { + const L = (0, index_1.Literal)("$"); + const R = FromSyntax(syntax.slice(1)); + return yield* [L, ...R]; + } + for (let i = 2; i < syntax.length; i++) { + if (syntax[i] === "}") { + const L = FromUnion(syntax.slice(2, i)); + const R = FromSyntax(syntax.slice(i + 1)); + return yield* [...L, ...R]; + } + } + yield (0, index_1.Literal)(syntax); + } + function* FromSyntax(syntax) { + for (let i = 0; i < syntax.length; i++) { + if (syntax[i] === "$") { + const L = (0, index_1.Literal)(syntax.slice(0, i)); + const R = FromTerminal(syntax.slice(i)); + return yield* [L, ...R]; + } + } + yield (0, index_1.Literal)(syntax); + } + function TemplateLiteralSyntax(syntax) { + return [...FromSyntax(syntax)]; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.js +var require_pattern = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralPatternError = void 0; + exports2.TemplateLiteralPattern = TemplateLiteralPattern; + var index_1 = require_patterns2(); + var index_2 = require_symbols2(); + var index_3 = require_error2(); + var kind_1 = require_kind(); + var TemplateLiteralPatternError = class extends index_3.TypeBoxError { + }; + exports2.TemplateLiteralPatternError = TemplateLiteralPatternError; + function Escape(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + } + function Visit(schema, acc) { + return (0, kind_1.IsTemplateLiteral)(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) : (0, kind_1.IsUnion)(schema) ? `(${schema.anyOf.map((schema2) => Visit(schema2, acc)).join("|")})` : (0, kind_1.IsNumber)(schema) ? `${acc}${index_1.PatternNumber}` : (0, kind_1.IsInteger)(schema) ? `${acc}${index_1.PatternNumber}` : (0, kind_1.IsBigInt)(schema) ? `${acc}${index_1.PatternNumber}` : (0, kind_1.IsString)(schema) ? `${acc}${index_1.PatternString}` : (0, kind_1.IsLiteral)(schema) ? `${acc}${Escape(schema.const.toString())}` : (0, kind_1.IsBoolean)(schema) ? `${acc}${index_1.PatternBoolean}` : (() => { + throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[index_2.Kind]}'`); + })(); + } + function TemplateLiteralPattern(kinds) { + return `^${kinds.map((schema) => Visit(schema, "")).join("")}$`; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.js +var require_union4 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteralToUnion = TemplateLiteralToUnion; + var index_1 = require_union3(); + var index_2 = require_literal2(); + var generate_1 = require_generate(); + function TemplateLiteralToUnion(schema) { + const R = (0, generate_1.TemplateLiteralGenerate)(schema); + const L = R.map((S) => (0, index_2.Literal)(S)); + return (0, index_1.UnionEvaluated)(L); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.js +var require_template_literal = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TemplateLiteral = TemplateLiteral; + var type_1 = require_type2(); + var syntax_1 = require_syntax(); + var pattern_1 = require_pattern(); + var value_1 = require_value(); + var index_1 = require_symbols2(); + function TemplateLiteral(unresolved, options) { + const pattern = (0, value_1.IsString)(unresolved) ? (0, pattern_1.TemplateLiteralPattern)((0, syntax_1.TemplateLiteralSyntax)(unresolved)) : (0, pattern_1.TemplateLiteralPattern)(unresolved); + return (0, type_1.CreateType)({ [index_1.Kind]: "TemplateLiteral", type: "string", pattern }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.js +var require_template_literal2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_finite(), exports2); + __exportStar2(require_generate(), exports2); + __exportStar2(require_syntax(), exports2); + __exportStar2(require_parse(), exports2); + __exportStar2(require_pattern(), exports2); + __exportStar2(require_union4(), exports2); + __exportStar2(require_template_literal(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.js +var require_indexed_property_keys = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IndexPropertyKeys = IndexPropertyKeys; + var index_1 = require_template_literal2(); + var kind_1 = require_kind(); + function FromTemplateLiteral(T) { + const R = (0, index_1.TemplateLiteralGenerate)(T); + return R.map((S) => S.toString()); + } + function FromUnion(T) { + const Acc = []; + for (const L of T) + Acc.push(...IndexPropertyKeys(L)); + return Acc; + } + function FromLiteral(T) { + return [T.toString()]; + } + function IndexPropertyKeys(T) { + return [...new Set((0, kind_1.IsTemplateLiteral)(T) ? FromTemplateLiteral(T) : (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) : (0, kind_1.IsLiteral)(T) ? FromLiteral(T.const) : (0, kind_1.IsNumber)(T) ? ["[number]"] : (0, kind_1.IsInteger)(T) ? ["[number]"] : [])]; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.js +var require_indexed_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IndexFromMappedResult = IndexFromMappedResult; + var index_1 = require_mapped2(); + var indexed_property_keys_1 = require_indexed_property_keys(); + var index_2 = require_indexed2(); + function FromProperties(T, P, options) { + const Acc = {}; + for (const K2 of Object.getOwnPropertyNames(P)) { + Acc[K2] = (0, index_2.Index)(T, (0, indexed_property_keys_1.IndexPropertyKeys)(P[K2]), options); + } + return Acc; + } + function FromMappedResult(T, R, options) { + return FromProperties(T, R.properties, options); + } + function IndexFromMappedResult(T, R, options) { + const P = FromMappedResult(T, R, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.js +var require_indexed = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IndexFromPropertyKey = IndexFromPropertyKey; + exports2.IndexFromPropertyKeys = IndexFromPropertyKeys; + exports2.Index = Index; + var type_1 = require_type2(); + var index_1 = require_never2(); + var index_2 = require_intersect2(); + var index_3 = require_union3(); + var indexed_property_keys_1 = require_indexed_property_keys(); + var indexed_from_mapped_key_1 = require_indexed_from_mapped_key(); + var indexed_from_mapped_result_1 = require_indexed_from_mapped_result(); + var kind_1 = require_kind(); + function FromRest(T, K) { + return T.map((L) => IndexFromPropertyKey(L, K)); + } + function FromIntersectRest(T) { + return T.filter((L) => !(0, kind_1.IsNever)(L)); + } + function FromIntersect(T, K) { + return (0, index_2.IntersectEvaluated)(FromIntersectRest(FromRest(T, K))); + } + function FromUnionRest(T) { + return T.some((L) => (0, kind_1.IsNever)(L)) ? [] : T; + } + function FromUnion(T, K) { + return (0, index_3.UnionEvaluated)(FromUnionRest(FromRest(T, K))); + } + function FromTuple(T, K) { + return K in T ? T[K] : K === "[number]" ? (0, index_3.UnionEvaluated)(T) : (0, index_1.Never)(); + } + function FromArray(T, K) { + return K === "[number]" ? T : (0, index_1.Never)(); + } + function FromProperty(T, K) { + return K in T ? T[K] : (0, index_1.Never)(); + } + function IndexFromPropertyKey(T, K) { + return (0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf, K) : (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf, K) : (0, kind_1.IsTuple)(T) ? FromTuple(T.items ?? [], K) : (0, kind_1.IsArray)(T) ? FromArray(T.items, K) : (0, kind_1.IsObject)(T) ? FromProperty(T.properties, K) : (0, index_1.Never)(); + } + function IndexFromPropertyKeys(T, K) { + return K.map((L) => IndexFromPropertyKey(T, L)); + } + function FromSchema(T, K) { + return (0, index_3.UnionEvaluated)(IndexFromPropertyKeys(T, K)); + } + function Index(T, K, options) { + if ((0, kind_1.IsMappedResult)(K)) + return (0, indexed_from_mapped_result_1.IndexFromMappedResult)(T, K, options); + if ((0, kind_1.IsMappedKey)(K)) + return (0, indexed_from_mapped_key_1.IndexFromMappedKey)(T, K, options); + return (0, type_1.CreateType)((0, kind_1.IsSchema)(K) ? FromSchema(T, (0, indexed_property_keys_1.IndexPropertyKeys)(K)) : FromSchema(T, K), options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.js +var require_indexed_from_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IndexFromMappedKey = IndexFromMappedKey; + var indexed_1 = require_indexed(); + var index_1 = require_mapped2(); + var value_1 = require_value2(); + function MappedIndexPropertyKey(T, K, options) { + return { [K]: (0, indexed_1.Index)(T, [K], (0, value_1.Clone)(options)) }; + } + function MappedIndexPropertyKeys(T, K, options) { + return K.reduce((Acc, L) => { + return { ...Acc, ...MappedIndexPropertyKey(T, L, options) }; + }, {}); + } + function MappedIndexProperties(T, K, options) { + return MappedIndexPropertyKeys(T, K.keys, options); + } + function IndexFromMappedKey(T, K, options) { + const P = MappedIndexProperties(T, K, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/indexed/index.js +var require_indexed2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/indexed/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_indexed_from_mapped_key(), exports2); + __exportStar2(require_indexed_from_mapped_result(), exports2); + __exportStar2(require_indexed_property_keys(), exports2); + __exportStar2(require_indexed(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.js +var require_iterator = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Iterator = Iterator; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Iterator(items, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Iterator", type: "Iterator", items }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/iterator/index.js +var require_iterator2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/iterator/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_iterator(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/object/object.js +var require_object = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/object/object.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Object = void 0; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var kind_1 = require_kind(); + function RequiredKeys(properties) { + const keys = []; + for (let key in properties) { + if (!(0, kind_1.IsOptional)(properties[key])) + keys.push(key); + } + return keys; + } + function _Object(properties, options) { + const required = RequiredKeys(properties); + const schematic = required.length > 0 ? { [index_1.Kind]: "Object", type: "object", properties, required } : { [index_1.Kind]: "Object", type: "object", properties }; + return (0, type_1.CreateType)(schematic, options); + } + exports2.Object = _Object; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/object/index.js +var require_object2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/object/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_object(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/promise/promise.js +var require_promise = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/promise/promise.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Promise = Promise2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Promise2(item, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Promise", type: "Promise", item }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/promise/index.js +var require_promise2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/promise/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_promise(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.js +var require_readonly = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Readonly = Readonly; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var index_2 = require_discard2(); + var readonly_from_mapped_result_1 = require_readonly_from_mapped_result(); + var kind_1 = require_kind(); + function RemoveReadonly(schema) { + return (0, type_1.CreateType)((0, index_2.Discard)(schema, [index_1.ReadonlyKind])); + } + function AddReadonly(schema) { + return (0, type_1.CreateType)({ ...schema, [index_1.ReadonlyKind]: "Readonly" }); + } + function ReadonlyWithFlag(schema, F) { + return F === false ? RemoveReadonly(schema) : AddReadonly(schema); + } + function Readonly(schema, enable) { + const F = enable ?? true; + return (0, kind_1.IsMappedResult)(schema) ? (0, readonly_from_mapped_result_1.ReadonlyFromMappedResult)(schema, F) : ReadonlyWithFlag(schema, F); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.js +var require_readonly_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ReadonlyFromMappedResult = ReadonlyFromMappedResult; + var index_1 = require_mapped2(); + var readonly_1 = require_readonly(); + function FromProperties(K, F) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(K)) + Acc[K2] = (0, readonly_1.Readonly)(K[K2], F); + return Acc; + } + function FromMappedResult(R, F) { + return FromProperties(R.properties, F); + } + function ReadonlyFromMappedResult(R, F) { + const P = FromMappedResult(R, F); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/readonly/index.js +var require_readonly2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/readonly/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_readonly_from_mapped_result(), exports2); + __exportStar2(require_readonly(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.js +var require_tuple = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Tuple = Tuple; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Tuple(items, options) { + return (0, type_1.CreateType)(items.length > 0 ? { [index_1.Kind]: "Tuple", type: "array", items, additionalItems: false, minItems: items.length, maxItems: items.length } : { [index_1.Kind]: "Tuple", type: "array", minItems: items.length, maxItems: items.length }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/tuple/index.js +var require_tuple2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/tuple/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_tuple(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.js +var require_mapped = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.MappedFunctionReturnType = MappedFunctionReturnType; + exports2.Mapped = Mapped; + var index_1 = require_symbols2(); + var index_2 = require_discard2(); + var index_3 = require_array2(); + var index_4 = require_async_iterator2(); + var index_5 = require_constructor2(); + var index_6 = require_function2(); + var index_7 = require_indexed2(); + var index_8 = require_intersect2(); + var index_9 = require_iterator2(); + var index_10 = require_literal2(); + var index_11 = require_object2(); + var index_12 = require_optional2(); + var index_13 = require_promise2(); + var index_14 = require_readonly2(); + var index_15 = require_tuple2(); + var index_16 = require_union3(); + var index_17 = require_sets(); + var mapped_result_1 = require_mapped_result(); + var kind_1 = require_kind(); + function FromMappedResult(K, P) { + return K in P ? FromSchemaType(K, P[K]) : (0, mapped_result_1.MappedResult)(P); + } + function MappedKeyToKnownMappedResultProperties(K) { + return { [K]: (0, index_10.Literal)(K) }; + } + function MappedKeyToUnknownMappedResultProperties(P) { + const Acc = {}; + for (const L of P) + Acc[L] = (0, index_10.Literal)(L); + return Acc; + } + function MappedKeyToMappedResultProperties(K, P) { + return (0, index_17.SetIncludes)(P, K) ? MappedKeyToKnownMappedResultProperties(K) : MappedKeyToUnknownMappedResultProperties(P); + } + function FromMappedKey(K, P) { + const R = MappedKeyToMappedResultProperties(K, P); + return FromMappedResult(K, R); + } + function FromRest(K, T) { + return T.map((L) => FromSchemaType(K, L)); + } + function FromProperties(K, T) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(T)) + Acc[K2] = FromSchemaType(K, T[K2]); + return Acc; + } + function FromSchemaType(K, T) { + const options = { ...T }; + return ( + // unevaluated modifier types + (0, kind_1.IsOptional)(T) ? (0, index_12.Optional)(FromSchemaType(K, (0, index_2.Discard)(T, [index_1.OptionalKind]))) : (0, kind_1.IsReadonly)(T) ? (0, index_14.Readonly)(FromSchemaType(K, (0, index_2.Discard)(T, [index_1.ReadonlyKind]))) : ( + // unevaluated mapped types + (0, kind_1.IsMappedResult)(T) ? FromMappedResult(K, T.properties) : (0, kind_1.IsMappedKey)(T) ? FromMappedKey(K, T.keys) : ( + // unevaluated types + (0, kind_1.IsConstructor)(T) ? (0, index_5.Constructor)(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) : (0, kind_1.IsFunction)(T) ? (0, index_6.Function)(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) : (0, kind_1.IsAsyncIterator)(T) ? (0, index_4.AsyncIterator)(FromSchemaType(K, T.items), options) : (0, kind_1.IsIterator)(T) ? (0, index_9.Iterator)(FromSchemaType(K, T.items), options) : (0, kind_1.IsIntersect)(T) ? (0, index_8.Intersect)(FromRest(K, T.allOf), options) : (0, kind_1.IsUnion)(T) ? (0, index_16.Union)(FromRest(K, T.anyOf), options) : (0, kind_1.IsTuple)(T) ? (0, index_15.Tuple)(FromRest(K, T.items ?? []), options) : (0, kind_1.IsObject)(T) ? (0, index_11.Object)(FromProperties(K, T.properties), options) : (0, kind_1.IsArray)(T) ? (0, index_3.Array)(FromSchemaType(K, T.items), options) : (0, kind_1.IsPromise)(T) ? (0, index_13.Promise)(FromSchemaType(K, T.item), options) : T + ) + ) + ); + } + function MappedFunctionReturnType(K, T) { + const Acc = {}; + for (const L of K) + Acc[L] = FromSchemaType(L, T); + return Acc; + } + function Mapped(key, map, options) { + const K = (0, kind_1.IsSchema)(key) ? (0, index_7.IndexPropertyKeys)(key) : key; + const RT = map({ [index_1.Kind]: "MappedKey", keys: K }); + const R = MappedFunctionReturnType(K, RT); + return (0, index_11.Object)(R, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/mapped/index.js +var require_mapped2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/mapped/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_mapped_key(), exports2); + __exportStar2(require_mapped_result(), exports2); + __exportStar2(require_mapped(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/optional/optional.js +var require_optional = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/optional/optional.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Optional = Optional; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var index_2 = require_discard2(); + var optional_from_mapped_result_1 = require_optional_from_mapped_result(); + var kind_1 = require_kind(); + function RemoveOptional(schema) { + return (0, type_1.CreateType)((0, index_2.Discard)(schema, [index_1.OptionalKind])); + } + function AddOptional(schema) { + return (0, type_1.CreateType)({ ...schema, [index_1.OptionalKind]: "Optional" }); + } + function OptionalWithFlag(schema, F) { + return F === false ? RemoveOptional(schema) : AddOptional(schema); + } + function Optional(schema, enable) { + const F = enable ?? true; + return (0, kind_1.IsMappedResult)(schema) ? (0, optional_from_mapped_result_1.OptionalFromMappedResult)(schema, F) : OptionalWithFlag(schema, F); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.js +var require_optional_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OptionalFromMappedResult = OptionalFromMappedResult; + var index_1 = require_mapped2(); + var optional_1 = require_optional(); + function FromProperties(P, F) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, optional_1.Optional)(P[K2], F); + return Acc; + } + function FromMappedResult(R, F) { + return FromProperties(R.properties, F); + } + function OptionalFromMappedResult(R, F) { + const P = FromMappedResult(R, F); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/optional/index.js +var require_optional2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/optional/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_optional_from_mapped_result(), exports2); + __exportStar2(require_optional(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-create.js +var require_intersect_create = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-create.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IntersectCreate = IntersectCreate; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var kind_1 = require_kind(); + function IntersectCreate(T, options = {}) { + const allObjects = T.every((schema) => (0, kind_1.IsObject)(schema)); + const clonedUnevaluatedProperties = (0, kind_1.IsSchema)(options.unevaluatedProperties) ? { unevaluatedProperties: options.unevaluatedProperties } : {}; + return (0, type_1.CreateType)(options.unevaluatedProperties === false || (0, kind_1.IsSchema)(options.unevaluatedProperties) || allObjects ? { ...clonedUnevaluatedProperties, [index_1.Kind]: "Intersect", type: "object", allOf: T } : { ...clonedUnevaluatedProperties, [index_1.Kind]: "Intersect", allOf: T }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.js +var require_intersect_evaluated = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IntersectEvaluated = IntersectEvaluated; + var index_1 = require_symbols2(); + var type_1 = require_type2(); + var index_2 = require_discard2(); + var index_3 = require_never2(); + var index_4 = require_optional2(); + var intersect_create_1 = require_intersect_create(); + var kind_1 = require_kind(); + function IsIntersectOptional(T) { + return T.every((L) => (0, kind_1.IsOptional)(L)); + } + function RemoveOptionalFromType(T) { + return (0, index_2.Discard)(T, [index_1.OptionalKind]); + } + function RemoveOptionalFromRest(T) { + return T.map((L) => (0, kind_1.IsOptional)(L) ? RemoveOptionalFromType(L) : L); + } + function ResolveIntersect(T, options) { + return IsIntersectOptional(T) ? (0, index_4.Optional)((0, intersect_create_1.IntersectCreate)(RemoveOptionalFromRest(T), options)) : (0, intersect_create_1.IntersectCreate)(RemoveOptionalFromRest(T), options); + } + function IntersectEvaluated(T, options = {}) { + if (T.length === 0) + return (0, index_3.Never)(options); + if (T.length === 1) + return (0, type_1.CreateType)(T[0], options); + if (T.some((schema) => (0, kind_1.IsTransform)(schema))) + throw new Error("Cannot intersect transform types"); + return ResolveIntersect(T, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.js +var require_intersect_type = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var index_1 = require_symbols2(); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.js +var require_intersect = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Intersect = Intersect; + var type_1 = require_type2(); + var index_1 = require_never2(); + var intersect_create_1 = require_intersect_create(); + var kind_1 = require_kind(); + function Intersect(T, options) { + if (T.length === 0) + return (0, index_1.Never)(options); + if (T.length === 1) + return (0, type_1.CreateType)(T[0], options); + if (T.some((schema) => (0, kind_1.IsTransform)(schema))) + throw new Error("Cannot intersect transform types"); + return (0, intersect_create_1.IntersectCreate)(T, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intersect/index.js +var require_intersect2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intersect/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_intersect_evaluated(), exports2); + __exportStar2(require_intersect_type(), exports2); + __exportStar2(require_intersect(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.js +var require_awaited = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Awaited = Awaited; + var index_1 = require_intersect2(); + var index_2 = require_union3(); + var type_1 = require_type2(); + var kind_1 = require_kind(); + function FromRest(T) { + return T.map((L) => AwaitedResolve(L)); + } + function FromIntersect(T) { + return (0, index_1.Intersect)(FromRest(T)); + } + function FromUnion(T) { + return (0, index_2.Union)(FromRest(T)); + } + function FromPromise(T) { + return AwaitedResolve(T); + } + function AwaitedResolve(T) { + return (0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf) : (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) : (0, kind_1.IsPromise)(T) ? FromPromise(T.item) : T; + } + function Awaited(T, options) { + return (0, type_1.CreateType)(AwaitedResolve(T), options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/awaited/index.js +var require_awaited2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/awaited/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_awaited(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.js +var require_keyof_property_keys = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.KeyOfPropertyKeys = KeyOfPropertyKeys; + exports2.KeyOfPattern = KeyOfPattern; + var index_1 = require_sets(); + var kind_1 = require_kind(); + function FromRest(T) { + const Acc = []; + for (const L of T) + Acc.push(KeyOfPropertyKeys(L)); + return Acc; + } + function FromIntersect(T) { + const C = FromRest(T); + const R = (0, index_1.SetUnionMany)(C); + return R; + } + function FromUnion(T) { + const C = FromRest(T); + const R = (0, index_1.SetIntersectMany)(C); + return R; + } + function FromTuple(T) { + return T.map((_, I) => I.toString()); + } + function FromArray(_) { + return ["[number]"]; + } + function FromProperties(T) { + return globalThis.Object.getOwnPropertyNames(T); + } + function FromPatternProperties(patternProperties) { + if (!includePatternProperties) + return []; + const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties); + return patternPropertyKeys.map((key) => { + return key[0] === "^" && key[key.length - 1] === "$" ? key.slice(1, key.length - 1) : key; + }); + } + function KeyOfPropertyKeys(T) { + return (0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf) : (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) : (0, kind_1.IsTuple)(T) ? FromTuple(T.items ?? []) : (0, kind_1.IsArray)(T) ? FromArray(T.items) : (0, kind_1.IsObject)(T) ? FromProperties(T.properties) : (0, kind_1.IsRecord)(T) ? FromPatternProperties(T.patternProperties) : []; + } + var includePatternProperties = false; + function KeyOfPattern(schema) { + includePatternProperties = true; + const keys = KeyOfPropertyKeys(schema); + includePatternProperties = false; + const pattern = keys.map((key) => `(${key})`); + return `^(${pattern.join("|")})$`; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.js +var require_keyof = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.KeyOfPropertyKeysToRest = KeyOfPropertyKeysToRest; + exports2.KeyOf = KeyOf; + var type_1 = require_type2(); + var index_1 = require_literal2(); + var index_2 = require_number3(); + var keyof_property_keys_1 = require_keyof_property_keys(); + var index_3 = require_union3(); + var keyof_from_mapped_result_1 = require_keyof_from_mapped_result(); + var kind_1 = require_kind(); + function KeyOfPropertyKeysToRest(T) { + return T.map((L) => L === "[number]" ? (0, index_2.Number)() : (0, index_1.Literal)(L)); + } + function KeyOf(T, options) { + if ((0, kind_1.IsMappedResult)(T)) { + return (0, keyof_from_mapped_result_1.KeyOfFromMappedResult)(T, options); + } else { + const K = (0, keyof_property_keys_1.KeyOfPropertyKeys)(T); + const S = KeyOfPropertyKeysToRest(K); + const U = (0, index_3.UnionEvaluated)(S); + return (0, type_1.CreateType)(U, options); + } + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.js +var require_keyof_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.KeyOfFromMappedResult = KeyOfFromMappedResult; + var index_1 = require_mapped2(); + var keyof_1 = require_keyof(); + var value_1 = require_value2(); + function FromProperties(K, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(K)) + Acc[K2] = (0, keyof_1.KeyOf)(K[K2], (0, value_1.Clone)(options)); + return Acc; + } + function FromMappedResult(R, options) { + return FromProperties(R.properties, options); + } + function KeyOfFromMappedResult(R, options) { + const P = FromMappedResult(R, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.js +var require_keyof_property_entries = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.KeyOfPropertyEntries = KeyOfPropertyEntries; + var indexed_1 = require_indexed(); + var keyof_property_keys_1 = require_keyof_property_keys(); + function KeyOfPropertyEntries(schema) { + const keys = (0, keyof_property_keys_1.KeyOfPropertyKeys)(schema); + const schemas = (0, indexed_1.IndexFromPropertyKeys)(schema, keys); + return keys.map((_, index) => [keys[index], schemas[index]]); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/keyof/index.js +var require_keyof2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/keyof/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_keyof_from_mapped_result(), exports2); + __exportStar2(require_keyof_property_entries(), exports2); + __exportStar2(require_keyof_property_keys(), exports2); + __exportStar2(require_keyof(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/composite/composite.js +var require_composite = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/composite/composite.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Composite = Composite; + var index_1 = require_intersect2(); + var index_2 = require_indexed2(); + var index_3 = require_keyof2(); + var index_4 = require_object2(); + var index_5 = require_sets(); + var kind_1 = require_kind(); + function CompositeKeys(T) { + const Acc = []; + for (const L of T) + Acc.push(...(0, index_3.KeyOfPropertyKeys)(L)); + return (0, index_5.SetDistinct)(Acc); + } + function FilterNever(T) { + return T.filter((L) => !(0, kind_1.IsNever)(L)); + } + function CompositeProperty(T, K) { + const Acc = []; + for (const L of T) + Acc.push(...(0, index_2.IndexFromPropertyKeys)(L, [K])); + return FilterNever(Acc); + } + function CompositeProperties(T, K) { + const Acc = {}; + for (const L of K) { + Acc[L] = (0, index_1.IntersectEvaluated)(CompositeProperty(T, L)); + } + return Acc; + } + function Composite(T, options) { + const K = CompositeKeys(T); + const P = CompositeProperties(T, K); + const R = (0, index_4.Object)(P, options); + return R; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/composite/index.js +var require_composite2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/composite/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_composite(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/date/date.js +var require_date = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/date/date.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Date = Date2; + var index_1 = require_symbols2(); + var type_1 = require_type2(); + function Date2(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Date", type: "Date" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/date/index.js +var require_date2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/date/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_date(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/null/null.js +var require_null = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/null/null.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Null = Null; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Null(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Null", type: "null" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/null/index.js +var require_null2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/null/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_null(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.js +var require_symbol = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Symbol = Symbol2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Symbol2(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Symbol", type: "symbol" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/symbol/index.js +var require_symbol2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/symbol/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_symbol(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.js +var require_undefined = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Undefined = Undefined; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Undefined(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Undefined", type: "undefined" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/undefined/index.js +var require_undefined2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/undefined/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_undefined(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.js +var require_uint8array = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Uint8Array = Uint8Array2; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Uint8Array2(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Uint8Array", type: "Uint8Array" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.js +var require_uint8array2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_uint8array(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.js +var require_unknown = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Unknown = Unknown; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Unknown(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Unknown" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/unknown/index.js +var require_unknown2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/unknown/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_unknown(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/const/const.js +var require_const = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/const/const.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Const = Const; + var index_1 = require_any2(); + var index_2 = require_bigint2(); + var index_3 = require_date2(); + var index_4 = require_function2(); + var index_5 = require_literal2(); + var index_6 = require_null2(); + var index_7 = require_object2(); + var index_8 = require_symbol2(); + var index_9 = require_tuple2(); + var index_10 = require_readonly2(); + var index_11 = require_undefined2(); + var index_12 = require_uint8array2(); + var index_13 = require_unknown2(); + var index_14 = require_create(); + var value_1 = require_value(); + function FromArray(T) { + return T.map((L) => FromValue(L, false)); + } + function FromProperties(value) { + const Acc = {}; + for (const K of globalThis.Object.getOwnPropertyNames(value)) + Acc[K] = (0, index_10.Readonly)(FromValue(value[K], false)); + return Acc; + } + function ConditionalReadonly(T, root) { + return root === true ? T : (0, index_10.Readonly)(T); + } + function FromValue(value, root) { + return (0, value_1.IsAsyncIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) : (0, value_1.IsIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) : (0, value_1.IsArray)(value) ? (0, index_10.Readonly)((0, index_9.Tuple)(FromArray(value))) : (0, value_1.IsUint8Array)(value) ? (0, index_12.Uint8Array)() : (0, value_1.IsDate)(value) ? (0, index_3.Date)() : (0, value_1.IsObject)(value) ? ConditionalReadonly((0, index_7.Object)(FromProperties(value)), root) : (0, value_1.IsFunction)(value) ? ConditionalReadonly((0, index_4.Function)([], (0, index_13.Unknown)()), root) : (0, value_1.IsUndefined)(value) ? (0, index_11.Undefined)() : (0, value_1.IsNull)(value) ? (0, index_6.Null)() : (0, value_1.IsSymbol)(value) ? (0, index_8.Symbol)() : (0, value_1.IsBigInt)(value) ? (0, index_2.BigInt)() : (0, value_1.IsNumber)(value) ? (0, index_5.Literal)(value) : (0, value_1.IsBoolean)(value) ? (0, index_5.Literal)(value) : (0, value_1.IsString)(value) ? (0, index_5.Literal)(value) : (0, index_7.Object)({}); + } + function Const(T, options) { + return (0, index_14.CreateType)(FromValue(T, true), options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/const/index.js +var require_const2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/const/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_const(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.js +var require_constructor_parameters = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ConstructorParameters = ConstructorParameters; + var index_1 = require_tuple2(); + function ConstructorParameters(schema, options) { + return (0, index_1.Tuple)(schema.parameters, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.js +var require_constructor_parameters2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_constructor_parameters(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/deref/deref.js +var require_deref = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/deref/deref.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Deref = Deref; + var type_1 = require_type(); + var index_1 = require_discard2(); + var value_1 = require_value(); + var kind_1 = require_kind(); + function FromRest(schema, references) { + return schema.map((schema2) => Deref(schema2, references)); + } + function FromProperties(properties, references) { + const Acc = {}; + for (const K of globalThis.Object.getOwnPropertyNames(properties)) { + Acc[K] = Deref(properties[K], references); + } + return Acc; + } + function FromConstructor(schema, references) { + schema.parameters = FromRest(schema.parameters, references); + schema.returns = Deref(schema.returns, references); + return schema; + } + function FromFunction(schema, references) { + schema.parameters = FromRest(schema.parameters, references); + schema.returns = Deref(schema.returns, references); + return schema; + } + function FromIntersect(schema, references) { + schema.allOf = FromRest(schema.allOf, references); + return schema; + } + function FromUnion(schema, references) { + schema.anyOf = FromRest(schema.anyOf, references); + return schema; + } + function FromTuple(schema, references) { + if ((0, value_1.IsUndefined)(schema.items)) + return schema; + schema.items = FromRest(schema.items, references); + return schema; + } + function FromArray(schema, references) { + schema.items = Deref(schema.items, references); + return schema; + } + function FromObject(schema, references) { + schema.properties = FromProperties(schema.properties, references); + return schema; + } + function FromPromise(schema, references) { + schema.item = Deref(schema.item, references); + return schema; + } + function FromAsyncIterator(schema, references) { + schema.items = Deref(schema.items, references); + return schema; + } + function FromIterator(schema, references) { + schema.items = Deref(schema.items, references); + return schema; + } + function FromRef(schema, references) { + const target = references.find((remote) => remote.$id === schema.$ref); + if (target === void 0) + throw Error(`Unable to dereference schema with $id ${schema.$ref}`); + const discard = (0, index_1.Discard)(target, ["$id"]); + return Deref(discard, references); + } + function DerefResolve(schema, references) { + return (0, kind_1.IsConstructor)(schema) ? FromConstructor(schema, references) : (0, kind_1.IsFunction)(schema) ? FromFunction(schema, references) : (0, kind_1.IsIntersect)(schema) ? FromIntersect(schema, references) : (0, kind_1.IsUnion)(schema) ? FromUnion(schema, references) : (0, kind_1.IsTuple)(schema) ? FromTuple(schema, references) : (0, kind_1.IsArray)(schema) ? FromArray(schema, references) : (0, kind_1.IsObject)(schema) ? FromObject(schema, references) : (0, kind_1.IsPromise)(schema) ? FromPromise(schema, references) : (0, kind_1.IsAsyncIterator)(schema) ? FromAsyncIterator(schema, references) : (0, kind_1.IsIterator)(schema) ? FromIterator(schema, references) : (0, kind_1.IsRef)(schema) ? FromRef(schema, references) : schema; + } + function Deref(schema, references) { + return DerefResolve((0, type_1.CloneType)(schema), (0, type_1.CloneRest)(references)); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/deref/index.js +var require_deref2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/deref/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_deref(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/enum/enum.js +var require_enum = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/enum/enum.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Enum = Enum; + var index_1 = require_literal2(); + var index_2 = require_symbols2(); + var index_3 = require_union3(); + var value_1 = require_value(); + function Enum(item, options) { + if ((0, value_1.IsUndefined)(item)) + throw new Error("Enum undefined or empty"); + const values1 = globalThis.Object.getOwnPropertyNames(item).filter((key) => isNaN(key)).map((key) => item[key]); + const values2 = [...new Set(values1)]; + const anyOf = values2.map((value) => (0, index_1.Literal)(value)); + return (0, index_3.Union)(anyOf, { ...options, [index_2.Hint]: "Enum" }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/enum/index.js +var require_enum2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/enum/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_enum(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.js +var require_extends_check = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtendsResult = exports2.ExtendsResolverError = void 0; + exports2.ExtendsCheck = ExtendsCheck; + var index_1 = require_any2(); + var index_2 = require_function2(); + var index_3 = require_number3(); + var index_4 = require_string2(); + var index_5 = require_unknown2(); + var index_6 = require_template_literal2(); + var index_7 = require_patterns2(); + var index_8 = require_symbols2(); + var index_9 = require_error2(); + var index_10 = require_guard3(); + var ExtendsResolverError = class extends index_9.TypeBoxError { + }; + exports2.ExtendsResolverError = ExtendsResolverError; + var ExtendsResult; + (function(ExtendsResult2) { + ExtendsResult2[ExtendsResult2["Union"] = 0] = "Union"; + ExtendsResult2[ExtendsResult2["True"] = 1] = "True"; + ExtendsResult2[ExtendsResult2["False"] = 2] = "False"; + })(ExtendsResult || (exports2.ExtendsResult = ExtendsResult = {})); + function IntoBooleanResult(result) { + return result === ExtendsResult.False ? result : ExtendsResult.True; + } + function Throw(message) { + throw new ExtendsResolverError(message); + } + function IsStructuralRight(right) { + return index_10.TypeGuard.IsNever(right) || index_10.TypeGuard.IsIntersect(right) || index_10.TypeGuard.IsUnion(right) || index_10.TypeGuard.IsUnknown(right) || index_10.TypeGuard.IsAny(right); + } + function StructuralRight(left, right) { + return index_10.TypeGuard.IsNever(right) ? FromNeverRight(left, right) : index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) : index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) : index_10.TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) : index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) : Throw("StructuralRight"); + } + function FromAnyRight(left, right) { + return ExtendsResult.True; + } + function FromAny(left, right) { + return index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) : index_10.TypeGuard.IsUnion(right) && right.anyOf.some((schema) => index_10.TypeGuard.IsAny(schema) || index_10.TypeGuard.IsUnknown(schema)) ? ExtendsResult.True : index_10.TypeGuard.IsUnion(right) ? ExtendsResult.Union : index_10.TypeGuard.IsUnknown(right) ? ExtendsResult.True : index_10.TypeGuard.IsAny(right) ? ExtendsResult.True : ExtendsResult.Union; + } + function FromArrayRight(left, right) { + return index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False : index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union : index_10.TypeGuard.IsNever(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromArray(left, right) { + return index_10.TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : !index_10.TypeGuard.IsArray(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); + } + function FromAsyncIterator(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : !index_10.TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); + } + function FromBigInt(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsBigInt(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromBooleanRight(left, right) { + return index_10.TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True : index_10.TypeGuard.IsBoolean(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromBoolean(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsBoolean(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromConstructor(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : !index_10.TypeGuard.IsConstructor(right) ? ExtendsResult.False : left.parameters.length > right.parameters.length ? ExtendsResult.False : !left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit(left.returns, right.returns)); + } + function FromDate(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsDate(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromFunction(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : !index_10.TypeGuard.IsFunction(right) ? ExtendsResult.False : left.parameters.length > right.parameters.length ? ExtendsResult.False : !left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True) ? ExtendsResult.False : IntoBooleanResult(Visit(left.returns, right.returns)); + } + function FromIntegerRight(left, right) { + return index_10.TypeGuard.IsLiteral(left) && index_10.ValueGuard.IsNumber(left.const) ? ExtendsResult.True : index_10.TypeGuard.IsNumber(left) || index_10.TypeGuard.IsInteger(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromInteger(left, right) { + return index_10.TypeGuard.IsInteger(right) || index_10.TypeGuard.IsNumber(right) ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : ExtendsResult.False; + } + function FromIntersectRight(left, right) { + return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; + } + function FromIntersect(left, right) { + return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; + } + function FromIterator(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : !index_10.TypeGuard.IsIterator(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.items, right.items)); + } + function FromLiteral(left, right) { + return index_10.TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True : IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsString(right) ? FromStringRight(left, right) : index_10.TypeGuard.IsNumber(right) ? FromNumberRight(left, right) : index_10.TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) : index_10.TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) : ExtendsResult.False; + } + function FromNeverRight(left, right) { + return ExtendsResult.False; + } + function FromNever(left, right) { + return ExtendsResult.True; + } + function UnwrapTNot(schema) { + let [current, depth] = [schema, 0]; + while (true) { + if (!index_10.TypeGuard.IsNot(current)) + break; + current = current.not; + depth += 1; + } + return depth % 2 === 0 ? current : (0, index_5.Unknown)(); + } + function FromNot(left, right) { + return index_10.TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) : index_10.TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) : Throw("Invalid fallthrough for Not"); + } + function FromNull(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsNull(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromNumberRight(left, right) { + return index_10.TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True : index_10.TypeGuard.IsNumber(left) || index_10.TypeGuard.IsInteger(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromNumber(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsInteger(right) || index_10.TypeGuard.IsNumber(right) ? ExtendsResult.True : ExtendsResult.False; + } + function IsObjectPropertyCount(schema, count) { + return Object.getOwnPropertyNames(schema.properties).length === count; + } + function IsObjectStringLike(schema) { + return IsObjectArrayLike(schema); + } + function IsObjectSymbolLike(schema) { + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "description" in schema.properties && index_10.TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && (index_10.TypeGuard.IsString(schema.properties.description.anyOf[0]) && index_10.TypeGuard.IsUndefined(schema.properties.description.anyOf[1]) || index_10.TypeGuard.IsString(schema.properties.description.anyOf[1]) && index_10.TypeGuard.IsUndefined(schema.properties.description.anyOf[0])); + } + function IsObjectNumberLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectBooleanLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectBigIntLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectDateLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectUint8ArrayLike(schema) { + return IsObjectArrayLike(schema); + } + function IsObjectFunctionLike(schema) { + const length = (0, index_3.Number)(); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit(schema.properties["length"], length)) === ExtendsResult.True; + } + function IsObjectConstructorLike(schema) { + return IsObjectPropertyCount(schema, 0); + } + function IsObjectArrayLike(schema) { + const length = (0, index_3.Number)(); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "length" in schema.properties && IntoBooleanResult(Visit(schema.properties["length"], length)) === ExtendsResult.True; + } + function IsObjectPromiseLike(schema) { + const then = (0, index_2.Function)([(0, index_1.Any)()], (0, index_1.Any)()); + return IsObjectPropertyCount(schema, 0) || IsObjectPropertyCount(schema, 1) && "then" in schema.properties && IntoBooleanResult(Visit(schema.properties["then"], then)) === ExtendsResult.True; + } + function Property(left, right) { + return Visit(left, right) === ExtendsResult.False ? ExtendsResult.False : index_10.TypeGuard.IsOptional(left) && !index_10.TypeGuard.IsOptional(right) ? ExtendsResult.False : ExtendsResult.True; + } + function FromObjectRight(left, right) { + return index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False : index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union : index_10.TypeGuard.IsNever(left) || index_10.TypeGuard.IsLiteralString(left) && IsObjectStringLike(right) || index_10.TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right) || index_10.TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right) || index_10.TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right) || index_10.TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right) || index_10.TypeGuard.IsString(left) && IsObjectStringLike(right) || index_10.TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right) || index_10.TypeGuard.IsNumber(left) && IsObjectNumberLike(right) || index_10.TypeGuard.IsInteger(left) && IsObjectNumberLike(right) || index_10.TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right) || index_10.TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right) || index_10.TypeGuard.IsDate(left) && IsObjectDateLike(right) || index_10.TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right) || index_10.TypeGuard.IsFunction(left) && IsObjectFunctionLike(right) ? ExtendsResult.True : index_10.TypeGuard.IsRecord(left) && index_10.TypeGuard.IsString(RecordKey(left)) ? (() => { + return right[index_8.Hint] === "Record" ? ExtendsResult.True : ExtendsResult.False; + })() : index_10.TypeGuard.IsRecord(left) && index_10.TypeGuard.IsNumber(RecordKey(left)) ? (() => { + return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False; + })() : ExtendsResult.False; + } + function FromObject(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : !index_10.TypeGuard.IsObject(right) ? ExtendsResult.False : (() => { + for (const key of Object.getOwnPropertyNames(right.properties)) { + if (!(key in left.properties) && !index_10.TypeGuard.IsOptional(right.properties[key])) { + return ExtendsResult.False; + } + if (index_10.TypeGuard.IsOptional(right.properties[key])) { + return ExtendsResult.True; + } + if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) { + return ExtendsResult.False; + } + } + return ExtendsResult.True; + })(); + } + function FromPromise(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True : !index_10.TypeGuard.IsPromise(right) ? ExtendsResult.False : IntoBooleanResult(Visit(left.item, right.item)); + } + function RecordKey(schema) { + return index_7.PatternNumberExact in schema.patternProperties ? (0, index_3.Number)() : index_7.PatternStringExact in schema.patternProperties ? (0, index_4.String)() : Throw("Unknown record key pattern"); + } + function RecordValue(schema) { + return index_7.PatternNumberExact in schema.patternProperties ? schema.patternProperties[index_7.PatternNumberExact] : index_7.PatternStringExact in schema.patternProperties ? schema.patternProperties[index_7.PatternStringExact] : Throw("Unable to get record value schema"); + } + function FromRecordRight(left, right) { + const [Key, Value] = [RecordKey(right), RecordValue(right)]; + return index_10.TypeGuard.IsLiteralString(left) && index_10.TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True ? ExtendsResult.True : index_10.TypeGuard.IsUint8Array(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) : index_10.TypeGuard.IsString(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) : index_10.TypeGuard.IsArray(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) : index_10.TypeGuard.IsObject(left) ? (() => { + for (const key of Object.getOwnPropertyNames(left.properties)) { + if (Property(Value, left.properties[key]) === ExtendsResult.False) { + return ExtendsResult.False; + } + } + return ExtendsResult.True; + })() : ExtendsResult.False; + } + function FromRecord(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : !index_10.TypeGuard.IsRecord(right) ? ExtendsResult.False : Visit(RecordValue(left), RecordValue(right)); + } + function FromRegExp(left, right) { + const L = index_10.TypeGuard.IsRegExp(left) ? (0, index_4.String)() : left; + const R = index_10.TypeGuard.IsRegExp(right) ? (0, index_4.String)() : right; + return Visit(L, R); + } + function FromStringRight(left, right) { + return index_10.TypeGuard.IsLiteral(left) && index_10.ValueGuard.IsString(left.const) ? ExtendsResult.True : index_10.TypeGuard.IsString(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromString(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsString(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromSymbol(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsSymbol(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromTemplateLiteral(left, right) { + return index_10.TypeGuard.IsTemplateLiteral(left) ? Visit((0, index_6.TemplateLiteralToUnion)(left), right) : index_10.TypeGuard.IsTemplateLiteral(right) ? Visit(left, (0, index_6.TemplateLiteralToUnion)(right)) : Throw("Invalid fallthrough for TemplateLiteral"); + } + function IsArrayOfTuple(left, right) { + return index_10.TypeGuard.IsArray(right) && left.items !== void 0 && left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True); + } + function FromTupleRight(left, right) { + return index_10.TypeGuard.IsNever(left) ? ExtendsResult.True : index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False : index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union : ExtendsResult.False; + } + function FromTuple(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True : index_10.TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True : !index_10.TypeGuard.IsTuple(right) ? ExtendsResult.False : index_10.ValueGuard.IsUndefined(left.items) && !index_10.ValueGuard.IsUndefined(right.items) || !index_10.ValueGuard.IsUndefined(left.items) && index_10.ValueGuard.IsUndefined(right.items) ? ExtendsResult.False : index_10.ValueGuard.IsUndefined(left.items) && !index_10.ValueGuard.IsUndefined(right.items) ? ExtendsResult.True : left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; + } + function FromUint8Array(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsUint8Array(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromUndefined(left, right) { + return IsStructuralRight(right) ? StructuralRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) : index_10.TypeGuard.IsVoid(right) ? FromVoidRight(left, right) : index_10.TypeGuard.IsUndefined(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromUnionRight(left, right) { + return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; + } + function FromUnion(left, right) { + return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True) ? ExtendsResult.True : ExtendsResult.False; + } + function FromUnknownRight(left, right) { + return ExtendsResult.True; + } + function FromUnknown(left, right) { + return index_10.TypeGuard.IsNever(right) ? FromNeverRight(left, right) : index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) : index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) : index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) : index_10.TypeGuard.IsString(right) ? FromStringRight(left, right) : index_10.TypeGuard.IsNumber(right) ? FromNumberRight(left, right) : index_10.TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) : index_10.TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) : index_10.TypeGuard.IsArray(right) ? FromArrayRight(left, right) : index_10.TypeGuard.IsTuple(right) ? FromTupleRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsUnknown(right) ? ExtendsResult.True : ExtendsResult.False; + } + function FromVoidRight(left, right) { + return index_10.TypeGuard.IsUndefined(left) ? ExtendsResult.True : index_10.TypeGuard.IsUndefined(left) ? ExtendsResult.True : ExtendsResult.False; + } + function FromVoid(left, right) { + return index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) : index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) : index_10.TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) : index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) : index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) : index_10.TypeGuard.IsVoid(right) ? ExtendsResult.True : ExtendsResult.False; + } + function Visit(left, right) { + return ( + // resolvable + index_10.TypeGuard.IsTemplateLiteral(left) || index_10.TypeGuard.IsTemplateLiteral(right) ? FromTemplateLiteral(left, right) : index_10.TypeGuard.IsRegExp(left) || index_10.TypeGuard.IsRegExp(right) ? FromRegExp(left, right) : index_10.TypeGuard.IsNot(left) || index_10.TypeGuard.IsNot(right) ? FromNot(left, right) : ( + // standard + index_10.TypeGuard.IsAny(left) ? FromAny(left, right) : index_10.TypeGuard.IsArray(left) ? FromArray(left, right) : index_10.TypeGuard.IsBigInt(left) ? FromBigInt(left, right) : index_10.TypeGuard.IsBoolean(left) ? FromBoolean(left, right) : index_10.TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) : index_10.TypeGuard.IsConstructor(left) ? FromConstructor(left, right) : index_10.TypeGuard.IsDate(left) ? FromDate(left, right) : index_10.TypeGuard.IsFunction(left) ? FromFunction(left, right) : index_10.TypeGuard.IsInteger(left) ? FromInteger(left, right) : index_10.TypeGuard.IsIntersect(left) ? FromIntersect(left, right) : index_10.TypeGuard.IsIterator(left) ? FromIterator(left, right) : index_10.TypeGuard.IsLiteral(left) ? FromLiteral(left, right) : index_10.TypeGuard.IsNever(left) ? FromNever(left, right) : index_10.TypeGuard.IsNull(left) ? FromNull(left, right) : index_10.TypeGuard.IsNumber(left) ? FromNumber(left, right) : index_10.TypeGuard.IsObject(left) ? FromObject(left, right) : index_10.TypeGuard.IsRecord(left) ? FromRecord(left, right) : index_10.TypeGuard.IsString(left) ? FromString(left, right) : index_10.TypeGuard.IsSymbol(left) ? FromSymbol(left, right) : index_10.TypeGuard.IsTuple(left) ? FromTuple(left, right) : index_10.TypeGuard.IsPromise(left) ? FromPromise(left, right) : index_10.TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) : index_10.TypeGuard.IsUndefined(left) ? FromUndefined(left, right) : index_10.TypeGuard.IsUnion(left) ? FromUnion(left, right) : index_10.TypeGuard.IsUnknown(left) ? FromUnknown(left, right) : index_10.TypeGuard.IsVoid(left) ? FromVoid(left, right) : Throw(`Unknown left type operand '${left[index_8.Kind]}'`) + ) + ); + } + function ExtendsCheck(left, right) { + return Visit(left, right); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.js +var require_extends_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtendsFromMappedResult = ExtendsFromMappedResult; + var index_1 = require_mapped2(); + var extends_1 = require_extends(); + var value_1 = require_value2(); + function FromProperties(P, Right, True, False, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, extends_1.Extends)(P[K2], Right, True, False, (0, value_1.Clone)(options)); + return Acc; + } + function FromMappedResult(Left, Right, True, False, options) { + return FromProperties(Left.properties, Right, True, False, options); + } + function ExtendsFromMappedResult(Left, Right, True, False, options) { + const P = FromMappedResult(Left, Right, True, False, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/extends.js +var require_extends = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/extends.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Extends = Extends; + var type_1 = require_type2(); + var index_1 = require_union3(); + var extends_check_1 = require_extends_check(); + var extends_from_mapped_key_1 = require_extends_from_mapped_key(); + var extends_from_mapped_result_1 = require_extends_from_mapped_result(); + var kind_1 = require_kind(); + function ExtendsResolve(left, right, trueType, falseType) { + const R = (0, extends_check_1.ExtendsCheck)(left, right); + return R === extends_check_1.ExtendsResult.Union ? (0, index_1.Union)([trueType, falseType]) : R === extends_check_1.ExtendsResult.True ? trueType : falseType; + } + function Extends(L, R, T, F, options) { + return (0, kind_1.IsMappedResult)(L) ? (0, extends_from_mapped_result_1.ExtendsFromMappedResult)(L, R, T, F, options) : (0, kind_1.IsMappedKey)(L) ? (0, type_1.CreateType)((0, extends_from_mapped_key_1.ExtendsFromMappedKey)(L, R, T, F, options)) : (0, type_1.CreateType)(ExtendsResolve(L, R, T, F), options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.js +var require_extends_from_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtendsFromMappedKey = ExtendsFromMappedKey; + var index_1 = require_mapped2(); + var index_2 = require_literal2(); + var extends_1 = require_extends(); + var value_1 = require_value2(); + function FromPropertyKey(K, U, L, R, options) { + return { + [K]: (0, extends_1.Extends)((0, index_2.Literal)(K), U, L, R, (0, value_1.Clone)(options)) + }; + } + function FromPropertyKeys(K, U, L, R, options) { + return K.reduce((Acc, LK) => { + return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) }; + }, {}); + } + function FromMappedKey(K, U, L, R, options) { + return FromPropertyKeys(K.keys, U, L, R, options); + } + function ExtendsFromMappedKey(T, U, L, R, options) { + const P = FromMappedKey(T, U, L, R, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.js +var require_extends_undefined = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtendsUndefinedCheck = ExtendsUndefinedCheck; + var index_1 = require_symbols2(); + function Intersect(schema) { + return schema.allOf.every((schema2) => ExtendsUndefinedCheck(schema2)); + } + function Union(schema) { + return schema.anyOf.some((schema2) => ExtendsUndefinedCheck(schema2)); + } + function Not(schema) { + return !ExtendsUndefinedCheck(schema.not); + } + function ExtendsUndefinedCheck(schema) { + return schema[index_1.Kind] === "Intersect" ? Intersect(schema) : schema[index_1.Kind] === "Union" ? Union(schema) : schema[index_1.Kind] === "Not" ? Not(schema) : schema[index_1.Kind] === "Undefined" ? true : false; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extends/index.js +var require_extends2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extends/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_extends_check(), exports2); + __exportStar2(require_extends_from_mapped_key(), exports2); + __exportStar2(require_extends_from_mapped_result(), exports2); + __exportStar2(require_extends_undefined(), exports2); + __exportStar2(require_extends(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.js +var require_exclude_from_template_literal = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExcludeFromTemplateLiteral = ExcludeFromTemplateLiteral; + var exclude_1 = require_exclude(); + var index_1 = require_template_literal2(); + function ExcludeFromTemplateLiteral(L, R) { + return (0, exclude_1.Exclude)((0, index_1.TemplateLiteralToUnion)(L), R); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.js +var require_exclude = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Exclude = Exclude; + var type_1 = require_type2(); + var index_1 = require_union3(); + var index_2 = require_never2(); + var index_3 = require_extends2(); + var exclude_from_mapped_result_1 = require_exclude_from_mapped_result(); + var exclude_from_template_literal_1 = require_exclude_from_template_literal(); + var kind_1 = require_kind(); + function ExcludeRest(L, R) { + const excluded = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) === index_3.ExtendsResult.False); + return excluded.length === 1 ? excluded[0] : (0, index_1.Union)(excluded); + } + function Exclude(L, R, options = {}) { + if ((0, kind_1.IsTemplateLiteral)(L)) + return (0, type_1.CreateType)((0, exclude_from_template_literal_1.ExcludeFromTemplateLiteral)(L, R), options); + if ((0, kind_1.IsMappedResult)(L)) + return (0, type_1.CreateType)((0, exclude_from_mapped_result_1.ExcludeFromMappedResult)(L, R), options); + return (0, type_1.CreateType)((0, kind_1.IsUnion)(L) ? ExcludeRest(L.anyOf, R) : (0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? (0, index_2.Never)() : L, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.js +var require_exclude_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExcludeFromMappedResult = ExcludeFromMappedResult; + var index_1 = require_mapped2(); + var exclude_1 = require_exclude(); + function FromProperties(P, U) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, exclude_1.Exclude)(P[K2], U); + return Acc; + } + function FromMappedResult(R, T) { + return FromProperties(R.properties, T); + } + function ExcludeFromMappedResult(R, T) { + const P = FromMappedResult(R, T); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/exclude/index.js +var require_exclude2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/exclude/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_exclude_from_mapped_result(), exports2); + __exportStar2(require_exclude_from_template_literal(), exports2); + __exportStar2(require_exclude(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.js +var require_extract_from_template_literal = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtractFromTemplateLiteral = ExtractFromTemplateLiteral; + var extract_1 = require_extract(); + var index_1 = require_template_literal2(); + function ExtractFromTemplateLiteral(L, R) { + return (0, extract_1.Extract)((0, index_1.TemplateLiteralToUnion)(L), R); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extract/extract.js +var require_extract = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extract/extract.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Extract = Extract; + var type_1 = require_type2(); + var index_1 = require_union3(); + var index_2 = require_never2(); + var index_3 = require_extends2(); + var extract_from_mapped_result_1 = require_extract_from_mapped_result(); + var extract_from_template_literal_1 = require_extract_from_template_literal(); + var kind_1 = require_kind(); + function ExtractRest(L, R) { + const extracted = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) !== index_3.ExtendsResult.False); + return extracted.length === 1 ? extracted[0] : (0, index_1.Union)(extracted); + } + function Extract(L, R, options) { + if ((0, kind_1.IsTemplateLiteral)(L)) + return (0, type_1.CreateType)((0, extract_from_template_literal_1.ExtractFromTemplateLiteral)(L, R), options); + if ((0, kind_1.IsMappedResult)(L)) + return (0, type_1.CreateType)((0, extract_from_mapped_result_1.ExtractFromMappedResult)(L, R), options); + return (0, type_1.CreateType)((0, kind_1.IsUnion)(L) ? ExtractRest(L.anyOf, R) : (0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? L : (0, index_2.Never)(), options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.js +var require_extract_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtractFromMappedResult = ExtractFromMappedResult; + var index_1 = require_mapped2(); + var extract_1 = require_extract(); + function FromProperties(P, T) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, extract_1.Extract)(P[K2], T); + return Acc; + } + function FromMappedResult(R, T) { + return FromProperties(R.properties, T); + } + function ExtractFromMappedResult(R, T) { + const P = FromMappedResult(R, T); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/extract/index.js +var require_extract2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/extract/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_extract_from_mapped_result(), exports2); + __exportStar2(require_extract_from_template_literal(), exports2); + __exportStar2(require_extract(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.js +var require_instance_type = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.InstanceType = InstanceType; + var type_1 = require_type2(); + function InstanceType(schema, options) { + return (0, type_1.CreateType)(schema.returns, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.js +var require_instance_type2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_instance_type(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/integer/integer.js +var require_integer = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/integer/integer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Integer = Integer; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Integer(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Integer", type: "integer" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/integer/index.js +var require_integer2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/integer/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_integer(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.js +var require_intrinsic_from_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IntrinsicFromMappedKey = IntrinsicFromMappedKey; + var index_1 = require_mapped2(); + var intrinsic_1 = require_intrinsic(); + var index_2 = require_literal2(); + var value_1 = require_value2(); + function MappedIntrinsicPropertyKey(K, M, options) { + return { + [K]: (0, intrinsic_1.Intrinsic)((0, index_2.Literal)(K), M, (0, value_1.Clone)(options)) + }; + } + function MappedIntrinsicPropertyKeys(K, M, options) { + const result = K.reduce((Acc, L) => { + return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) }; + }, {}); + return result; + } + function MappedIntrinsicProperties(T, M, options) { + return MappedIntrinsicPropertyKeys(T["keys"], M, options); + } + function IntrinsicFromMappedKey(T, M, options) { + const P = MappedIntrinsicProperties(T, M, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.js +var require_intrinsic = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Intrinsic = Intrinsic; + var type_1 = require_type2(); + var index_1 = require_template_literal2(); + var intrinsic_from_mapped_key_1 = require_intrinsic_from_mapped_key(); + var index_2 = require_literal2(); + var index_3 = require_union3(); + var kind_1 = require_kind(); + function ApplyUncapitalize(value) { + const [first, rest] = [value.slice(0, 1), value.slice(1)]; + return [first.toLowerCase(), rest].join(""); + } + function ApplyCapitalize(value) { + const [first, rest] = [value.slice(0, 1), value.slice(1)]; + return [first.toUpperCase(), rest].join(""); + } + function ApplyUppercase(value) { + return value.toUpperCase(); + } + function ApplyLowercase(value) { + return value.toLowerCase(); + } + function FromTemplateLiteral(schema, mode, options) { + const expression = (0, index_1.TemplateLiteralParseExact)(schema.pattern); + const finite = (0, index_1.IsTemplateLiteralExpressionFinite)(expression); + if (!finite) + return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) }; + const strings = [...(0, index_1.TemplateLiteralExpressionGenerate)(expression)]; + const literals = strings.map((value) => (0, index_2.Literal)(value)); + const mapped = FromRest(literals, mode); + const union = (0, index_3.Union)(mapped); + return (0, index_1.TemplateLiteral)([union], options); + } + function FromLiteralValue(value, mode) { + return typeof value === "string" ? mode === "Uncapitalize" ? ApplyUncapitalize(value) : mode === "Capitalize" ? ApplyCapitalize(value) : mode === "Uppercase" ? ApplyUppercase(value) : mode === "Lowercase" ? ApplyLowercase(value) : value : value.toString(); + } + function FromRest(T, M) { + return T.map((L) => Intrinsic(L, M)); + } + function Intrinsic(schema, mode, options = {}) { + return ( + // Intrinsic-Mapped-Inference + (0, kind_1.IsMappedKey)(schema) ? (0, intrinsic_from_mapped_key_1.IntrinsicFromMappedKey)(schema, mode, options) : ( + // Standard-Inference + (0, kind_1.IsTemplateLiteral)(schema) ? FromTemplateLiteral(schema, mode, options) : (0, kind_1.IsUnion)(schema) ? (0, index_3.Union)(FromRest(schema.anyOf, mode), options) : (0, kind_1.IsLiteral)(schema) ? (0, index_2.Literal)(FromLiteralValue(schema.const, mode), options) : ( + // Default Type + (0, type_1.CreateType)(schema, options) + ) + ) + ); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.js +var require_capitalize = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Capitalize = Capitalize; + var intrinsic_1 = require_intrinsic(); + function Capitalize(T, options = {}) { + return (0, intrinsic_1.Intrinsic)(T, "Capitalize", options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.js +var require_lowercase = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Lowercase = Lowercase; + var intrinsic_1 = require_intrinsic(); + function Lowercase(T, options = {}) { + return (0, intrinsic_1.Intrinsic)(T, "Lowercase", options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.js +var require_uncapitalize = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Uncapitalize = Uncapitalize; + var intrinsic_1 = require_intrinsic(); + function Uncapitalize(T, options = {}) { + return (0, intrinsic_1.Intrinsic)(T, "Uncapitalize", options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.js +var require_uppercase = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Uppercase = Uppercase; + var intrinsic_1 = require_intrinsic(); + function Uppercase(T, options = {}) { + return (0, intrinsic_1.Intrinsic)(T, "Uppercase", options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.js +var require_intrinsic2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_capitalize(), exports2); + __exportStar2(require_intrinsic_from_mapped_key(), exports2); + __exportStar2(require_intrinsic(), exports2); + __exportStar2(require_lowercase(), exports2); + __exportStar2(require_uncapitalize(), exports2); + __exportStar2(require_uppercase(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/not/not.js +var require_not = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/not/not.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Not = Not; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Not(not, options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Not", not }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/not/index.js +var require_not2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/not/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_not(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.js +var require_omit_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OmitFromMappedResult = OmitFromMappedResult; + var index_1 = require_mapped2(); + var omit_1 = require_omit(); + var value_1 = require_value2(); + function FromProperties(P, K, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, omit_1.Omit)(P[K2], K, (0, value_1.Clone)(options)); + return Acc; + } + function FromMappedResult(R, K, options) { + return FromProperties(R.properties, K, options); + } + function OmitFromMappedResult(R, K, options) { + const P = FromMappedResult(R, K, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/omit/omit.js +var require_omit = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/omit/omit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Omit = Omit; + var type_1 = require_type2(); + var discard_1 = require_discard(); + var index_1 = require_intersect2(); + var index_2 = require_union3(); + var index_3 = require_object2(); + var index_4 = require_indexed2(); + var omit_from_mapped_key_1 = require_omit_from_mapped_key(); + var omit_from_mapped_result_1 = require_omit_from_mapped_result(); + var symbols_1 = require_symbols(); + var kind_1 = require_kind(); + function FromIntersect(T, K) { + return T.map((T2) => OmitResolve(T2, K)); + } + function FromUnion(T, K) { + return T.map((T2) => OmitResolve(T2, K)); + } + function FromProperty(T, K) { + const { [K]: _, ...R } = T; + return R; + } + function FromProperties(T, K) { + return K.reduce((T2, K2) => FromProperty(T2, K2), T); + } + function FromObject(T, K) { + const options = (0, discard_1.Discard)(T, [symbols_1.TransformKind, "$id", "required", "properties"]); + const properties = FromProperties(T["properties"], K); + return (0, index_3.Object)(properties, options); + } + function OmitResolve(T, K) { + return (0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromIntersect(T.allOf, K)) : (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromUnion(T.anyOf, K)) : (0, kind_1.IsObject)(T) ? FromObject(T, K) : (0, index_3.Object)({}); + } + function Omit(T, K, options) { + if ((0, kind_1.IsMappedKey)(K)) + return (0, omit_from_mapped_key_1.OmitFromMappedKey)(T, K, options); + if ((0, kind_1.IsMappedResult)(T)) + return (0, omit_from_mapped_result_1.OmitFromMappedResult)(T, K, options); + const I = (0, kind_1.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K; + return (0, type_1.CreateType)({ ...OmitResolve(T, I), ...options }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.js +var require_omit_from_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OmitFromMappedKey = OmitFromMappedKey; + var index_1 = require_mapped2(); + var omit_1 = require_omit(); + var value_1 = require_value2(); + function FromPropertyKey(T, K, options) { + return { + [K]: (0, omit_1.Omit)(T, [K], (0, value_1.Clone)(options)) + }; + } + function FromPropertyKeys(T, K, options) { + return K.reduce((Acc, LK) => { + return { ...Acc, ...FromPropertyKey(T, LK, options) }; + }, {}); + } + function FromMappedKey(T, K, options) { + return FromPropertyKeys(T, K.keys, options); + } + function OmitFromMappedKey(T, K, options) { + const P = FromMappedKey(T, K, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/omit/index.js +var require_omit2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/omit/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_omit_from_mapped_key(), exports2); + __exportStar2(require_omit_from_mapped_result(), exports2); + __exportStar2(require_omit(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.js +var require_parameters = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Parameters = Parameters; + var index_1 = require_tuple2(); + function Parameters(schema, options) { + return (0, index_1.Tuple)(schema.parameters, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/parameters/index.js +var require_parameters2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/parameters/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_parameters(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/partial/partial.js +var require_partial = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/partial/partial.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Partial = Partial; + var type_1 = require_type2(); + var index_1 = require_optional2(); + var index_2 = require_object2(); + var index_3 = require_intersect2(); + var index_4 = require_union3(); + var index_5 = require_discard2(); + var index_6 = require_symbols2(); + var partial_from_mapped_result_1 = require_partial_from_mapped_result(); + var kind_1 = require_kind(); + function FromRest(T) { + return T.map((L) => PartialResolve(L)); + } + function FromProperties(T) { + const Acc = {}; + for (const K of globalThis.Object.getOwnPropertyNames(T)) + Acc[K] = (0, index_1.Optional)(T[K]); + return Acc; + } + function FromObject(T) { + const options = (0, index_5.Discard)(T, [index_6.TransformKind, "$id", "required", "properties"]); + const properties = FromProperties(T["properties"]); + return (0, index_2.Object)(properties, options); + } + function PartialResolve(T) { + return (0, kind_1.IsIntersect)(T) ? (0, index_3.Intersect)(FromRest(T.allOf)) : (0, kind_1.IsUnion)(T) ? (0, index_4.Union)(FromRest(T.anyOf)) : (0, kind_1.IsObject)(T) ? FromObject(T) : (0, index_2.Object)({}); + } + function Partial(T, options) { + if ((0, kind_1.IsMappedResult)(T)) { + return (0, partial_from_mapped_result_1.PartialFromMappedResult)(T, options); + } else { + return (0, type_1.CreateType)({ ...PartialResolve(T), ...options }); + } + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.js +var require_partial_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PartialFromMappedResult = PartialFromMappedResult; + var index_1 = require_mapped2(); + var partial_1 = require_partial(); + var value_1 = require_value2(); + function FromProperties(K, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(K)) + Acc[K2] = (0, partial_1.Partial)(K[K2], (0, value_1.Clone)(options)); + return Acc; + } + function FromMappedResult(R, options) { + return FromProperties(R.properties, options); + } + function PartialFromMappedResult(R, options) { + const P = FromMappedResult(R, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/partial/index.js +var require_partial2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/partial/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_partial_from_mapped_result(), exports2); + __exportStar2(require_partial(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.js +var require_pick_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PickFromMappedResult = PickFromMappedResult; + var index_1 = require_mapped2(); + var pick_1 = require_pick(); + var value_1 = require_value2(); + function FromProperties(P, K, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, pick_1.Pick)(P[K2], K, (0, value_1.Clone)(options)); + return Acc; + } + function FromMappedResult(R, K, options) { + return FromProperties(R.properties, K, options); + } + function PickFromMappedResult(R, K, options) { + const P = FromMappedResult(R, K, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/pick/pick.js +var require_pick = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/pick/pick.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Pick = Pick; + var type_1 = require_type2(); + var discard_1 = require_discard(); + var index_1 = require_intersect2(); + var index_2 = require_union3(); + var index_3 = require_object2(); + var index_4 = require_indexed2(); + var pick_from_mapped_key_1 = require_pick_from_mapped_key(); + var pick_from_mapped_result_1 = require_pick_from_mapped_result(); + var symbols_1 = require_symbols(); + var kind_1 = require_kind(); + function FromIntersect(T, K) { + return T.map((T2) => PickResolve(T2, K)); + } + function FromUnion(T, K) { + return T.map((T2) => PickResolve(T2, K)); + } + function FromProperties(T, K) { + const Acc = {}; + for (const K2 of K) + if (K2 in T) + Acc[K2] = T[K2]; + return Acc; + } + function FromObject(T, K) { + const options = (0, discard_1.Discard)(T, [symbols_1.TransformKind, "$id", "required", "properties"]); + const properties = FromProperties(T["properties"], K); + return (0, index_3.Object)(properties, options); + } + function PickResolve(T, K) { + return (0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromIntersect(T.allOf, K)) : (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromUnion(T.anyOf, K)) : (0, kind_1.IsObject)(T) ? FromObject(T, K) : (0, index_3.Object)({}); + } + function Pick(T, K, options) { + if ((0, kind_1.IsMappedKey)(K)) + return (0, pick_from_mapped_key_1.PickFromMappedKey)(T, K, options); + if ((0, kind_1.IsMappedResult)(T)) + return (0, pick_from_mapped_result_1.PickFromMappedResult)(T, K, options); + const I = (0, kind_1.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K; + return (0, type_1.CreateType)({ ...PickResolve(T, I), ...options }); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.js +var require_pick_from_mapped_key = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PickFromMappedKey = PickFromMappedKey; + var index_1 = require_mapped2(); + var pick_1 = require_pick(); + var value_1 = require_value2(); + function FromPropertyKey(T, K, options) { + return { + [K]: (0, pick_1.Pick)(T, [K], (0, value_1.Clone)(options)) + }; + } + function FromPropertyKeys(T, K, options) { + return K.reduce((Acc, LK) => { + return { ...Acc, ...FromPropertyKey(T, LK, options) }; + }, {}); + } + function FromMappedKey(T, K, options) { + return FromPropertyKeys(T, K.keys, options); + } + function PickFromMappedKey(T, K, options) { + const P = FromMappedKey(T, K, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/pick/index.js +var require_pick2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/pick/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_pick_from_mapped_key(), exports2); + __exportStar2(require_pick_from_mapped_result(), exports2); + __exportStar2(require_pick(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.js +var require_readonly_optional = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ReadonlyOptional = ReadonlyOptional; + var index_1 = require_readonly2(); + var index_2 = require_optional2(); + function ReadonlyOptional(schema) { + return (0, index_1.Readonly)((0, index_2.Optional)(schema)); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.js +var require_readonly_optional2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_readonly_optional(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/record/record.js +var require_record = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/record/record.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Record = Record; + var type_1 = require_type2(); + var index_1 = require_object2(); + var index_2 = require_never2(); + var index_3 = require_union3(); + var index_4 = require_template_literal2(); + var index_5 = require_patterns2(); + var index_6 = require_indexed2(); + var index_7 = require_symbols2(); + var value_1 = require_value(); + var kind_1 = require_kind(); + function RecordCreateFromPattern(pattern, T, options) { + return (0, type_1.CreateType)({ + [index_7.Kind]: "Record", + type: "object", + patternProperties: { [pattern]: T } + }, options); + } + function RecordCreateFromKeys(K, T, options) { + const Acc = {}; + for (const K2 of K) + Acc[K2] = T; + return (0, index_1.Object)(Acc, { ...options, [index_7.Hint]: "Record" }); + } + function FromTemplateLiteralKey(K, T, options) { + return (0, index_4.IsTemplateLiteralFinite)(K) ? RecordCreateFromKeys((0, index_6.IndexPropertyKeys)(K), T, options) : RecordCreateFromPattern(K.pattern, T, options); + } + function FromUnionKey(K, T, options) { + return RecordCreateFromKeys((0, index_6.IndexPropertyKeys)((0, index_3.Union)(K)), T, options); + } + function FromLiteralKey(K, T, options) { + return RecordCreateFromKeys([K.toString()], T, options); + } + function FromRegExpKey(K, T, options) { + return RecordCreateFromPattern(K.source, T, options); + } + function FromStringKey(K, T, options) { + const pattern = (0, value_1.IsUndefined)(K.pattern) ? index_5.PatternStringExact : K.pattern; + return RecordCreateFromPattern(pattern, T, options); + } + function FromAnyKey(K, T, options) { + return RecordCreateFromPattern(index_5.PatternStringExact, T, options); + } + function FromNeverKey(K, T, options) { + return RecordCreateFromPattern(index_5.PatternNeverExact, T, options); + } + function FromIntegerKey(_, T, options) { + return RecordCreateFromPattern(index_5.PatternNumberExact, T, options); + } + function FromNumberKey(_, T, options) { + return RecordCreateFromPattern(index_5.PatternNumberExact, T, options); + } + function Record(K, T, options = {}) { + return (0, kind_1.IsUnion)(K) ? FromUnionKey(K.anyOf, T, options) : (0, kind_1.IsTemplateLiteral)(K) ? FromTemplateLiteralKey(K, T, options) : (0, kind_1.IsLiteral)(K) ? FromLiteralKey(K.const, T, options) : (0, kind_1.IsInteger)(K) ? FromIntegerKey(K, T, options) : (0, kind_1.IsNumber)(K) ? FromNumberKey(K, T, options) : (0, kind_1.IsRegExp)(K) ? FromRegExpKey(K, T, options) : (0, kind_1.IsString)(K) ? FromStringKey(K, T, options) : (0, kind_1.IsAny)(K) ? FromAnyKey(K, T, options) : (0, kind_1.IsNever)(K) ? FromNeverKey(K, T, options) : (0, index_2.Never)(options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/record/index.js +var require_record2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/record/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_record(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.js +var require_recursive = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Recursive = Recursive; + var type_1 = require_type(); + var type_2 = require_type2(); + var value_1 = require_value(); + var index_1 = require_symbols2(); + var Ordinal = 0; + function Recursive(callback, options = {}) { + if ((0, value_1.IsUndefined)(options.$id)) + options.$id = `T${Ordinal++}`; + const thisType = (0, type_1.CloneType)(callback({ [index_1.Kind]: "This", $ref: `${options.$id}` })); + thisType.$id = options.$id; + return (0, type_2.CreateType)({ [index_1.Hint]: "Recursive", ...thisType }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/recursive/index.js +var require_recursive2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/recursive/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_recursive(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/ref/ref.js +var require_ref = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/ref/ref.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Ref = Ref; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + var value_1 = require_value(); + function Ref(unresolved, options) { + if ((0, value_1.IsString)(unresolved)) + return (0, type_1.CreateType)({ [index_1.Kind]: "Ref", $ref: unresolved }, options); + if ((0, value_1.IsUndefined)(unresolved.$id)) + throw new Error("Reference target type must specify an $id"); + return (0, type_1.CreateType)({ [index_1.Kind]: "Ref", $ref: unresolved.$id }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/ref/index.js +var require_ref2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/ref/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_ref(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.js +var require_regexp = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RegExp = RegExp2; + var type_1 = require_type2(); + var value_1 = require_value(); + var index_1 = require_symbols2(); + function RegExp2(unresolved, options) { + const expr = (0, value_1.IsString)(unresolved) ? new globalThis.RegExp(unresolved) : unresolved; + return (0, type_1.CreateType)({ [index_1.Kind]: "RegExp", type: "RegExp", source: expr.source, flags: expr.flags }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/regexp/index.js +var require_regexp2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/regexp/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_regexp(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/required/required.js +var require_required = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/required/required.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Required = Required; + var type_1 = require_type2(); + var index_1 = require_intersect2(); + var index_2 = require_union3(); + var index_3 = require_object2(); + var index_4 = require_symbols2(); + var index_5 = require_discard2(); + var required_from_mapped_result_1 = require_required_from_mapped_result(); + var kind_1 = require_kind(); + function FromRest(T) { + return T.map((L) => RequiredResolve(L)); + } + function FromProperties(T) { + const Acc = {}; + for (const K of globalThis.Object.getOwnPropertyNames(T)) + Acc[K] = (0, index_5.Discard)(T[K], [index_4.OptionalKind]); + return Acc; + } + function FromObject(T) { + const options = (0, index_5.Discard)(T, [index_4.TransformKind, "$id", "required", "properties"]); + const properties = FromProperties(T["properties"]); + return (0, index_3.Object)(properties, options); + } + function RequiredResolve(T) { + return (0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromRest(T.allOf)) : (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromRest(T.anyOf)) : (0, kind_1.IsObject)(T) ? FromObject(T) : (0, index_3.Object)({}); + } + function Required(T, options) { + if ((0, kind_1.IsMappedResult)(T)) { + return (0, required_from_mapped_result_1.RequiredFromMappedResult)(T, options); + } else { + return (0, type_1.CreateType)({ ...RequiredResolve(T), ...options }); + } + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.js +var require_required_from_mapped_result = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RequiredFromMappedResult = RequiredFromMappedResult; + var index_1 = require_mapped2(); + var required_1 = require_required(); + function FromProperties(P, options) { + const Acc = {}; + for (const K2 of globalThis.Object.getOwnPropertyNames(P)) + Acc[K2] = (0, required_1.Required)(P[K2], options); + return Acc; + } + function FromMappedResult(R, options) { + return FromProperties(R.properties, options); + } + function RequiredFromMappedResult(R, options) { + const P = FromMappedResult(R, options); + return (0, index_1.MappedResult)(P); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/required/index.js +var require_required2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/required/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_required_from_mapped_result(), exports2); + __exportStar2(require_required(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/rest/rest.js +var require_rest = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/rest/rest.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Rest = Rest; + var kind_1 = require_kind(); + function RestResolve(T) { + return (0, kind_1.IsIntersect)(T) ? T.allOf : (0, kind_1.IsUnion)(T) ? T.anyOf : (0, kind_1.IsTuple)(T) ? T.items ?? [] : []; + } + function Rest(T) { + return RestResolve(T); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/rest/index.js +var require_rest2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/rest/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_rest(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.js +var require_return_type = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ReturnType = ReturnType; + var type_1 = require_type2(); + function ReturnType(schema, options) { + return (0, type_1.CreateType)(schema.returns, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/return-type/index.js +var require_return_type2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/return-type/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_return_type(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.js +var require_anyschema = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/schema/schema.js +var require_schema = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/schema/schema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var index_1 = require_symbols2(); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/schema/index.js +var require_schema2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/schema/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_anyschema(), exports2); + __exportStar2(require_schema(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/static/static.js +var require_static = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/static/static.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/static/index.js +var require_static2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/static/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_static(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/strict/strict.js +var require_strict = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/strict/strict.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Strict = Strict; + function Strict(schema) { + return JSON.parse(JSON.stringify(schema)); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/strict/index.js +var require_strict2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/strict/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_strict(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/transform/transform.js +var require_transform = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/transform/transform.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TransformEncodeBuilder = exports2.TransformDecodeBuilder = void 0; + exports2.Transform = Transform; + var index_1 = require_symbols2(); + var kind_1 = require_kind(); + var TransformDecodeBuilder = class { + constructor(schema) { + this.schema = schema; + } + Decode(decode) { + return new TransformEncodeBuilder(this.schema, decode); + } + }; + exports2.TransformDecodeBuilder = TransformDecodeBuilder; + var TransformEncodeBuilder = class { + constructor(schema, decode) { + this.schema = schema; + this.decode = decode; + } + EncodeTransform(encode, schema) { + const Encode = (value) => schema[index_1.TransformKind].Encode(encode(value)); + const Decode = (value) => this.decode(schema[index_1.TransformKind].Decode(value)); + const Codec = { Encode, Decode }; + return { ...schema, [index_1.TransformKind]: Codec }; + } + EncodeSchema(encode, schema) { + const Codec = { Decode: this.decode, Encode: encode }; + return { ...schema, [index_1.TransformKind]: Codec }; + } + Encode(encode) { + return (0, kind_1.IsTransform)(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema); + } + }; + exports2.TransformEncodeBuilder = TransformEncodeBuilder; + function Transform(schema) { + return new TransformDecodeBuilder(schema); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/transform/index.js +var require_transform2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/transform/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_transform(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.js +var require_unsafe = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Unsafe = Unsafe; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Unsafe(options = {}) { + return (0, type_1.CreateType)({ [index_1.Kind]: options[index_1.Kind] ?? "Unsafe" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.js +var require_unsafe2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_unsafe(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/void/void.js +var require_void = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/void/void.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Void = Void; + var type_1 = require_type2(); + var index_1 = require_symbols2(); + function Void(options) { + return (0, type_1.CreateType)({ [index_1.Kind]: "Void", type: "void" }, options); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/void/index.js +var require_void2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/void/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_void(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/type/json.js +var require_json = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/type/json.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.JsonTypeBuilder = void 0; + var index_1 = require_any2(); + var index_2 = require_array2(); + var index_3 = require_boolean2(); + var index_4 = require_composite2(); + var index_5 = require_const2(); + var index_6 = require_deref2(); + var index_7 = require_enum2(); + var index_8 = require_exclude2(); + var index_9 = require_extends2(); + var index_10 = require_extract2(); + var index_11 = require_indexed2(); + var index_12 = require_integer2(); + var index_13 = require_intersect2(); + var index_14 = require_intrinsic2(); + var index_15 = require_keyof2(); + var index_16 = require_literal2(); + var index_17 = require_mapped2(); + var index_18 = require_never2(); + var index_19 = require_not2(); + var index_20 = require_null2(); + var index_21 = require_number3(); + var index_22 = require_object2(); + var index_23 = require_omit2(); + var index_24 = require_optional2(); + var index_25 = require_partial2(); + var index_26 = require_pick2(); + var index_27 = require_readonly2(); + var index_28 = require_readonly_optional2(); + var index_29 = require_record2(); + var index_30 = require_recursive2(); + var index_31 = require_ref2(); + var index_32 = require_required2(); + var index_33 = require_rest2(); + var index_34 = require_strict2(); + var index_35 = require_string2(); + var index_36 = require_template_literal2(); + var index_37 = require_transform2(); + var index_38 = require_tuple2(); + var index_39 = require_union3(); + var index_40 = require_unknown2(); + var index_41 = require_unsafe2(); + var JsonTypeBuilder = class { + // ------------------------------------------------------------------------ + // Strict + // ------------------------------------------------------------------------ + /** + * @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended + * to use the JSON parse/stringify to remove compositing symbols if needed. This + * is how Strict works internally. + * + * ```typescript + * JSON.parse(JSON.stringify(Type.String())) + * ``` + */ + Strict(schema) { + return (0, index_34.Strict)(schema); + } + // ------------------------------------------------------------------------ + // Modifiers + // ------------------------------------------------------------------------ + /** `[Json]` Creates a Readonly and Optional property */ + ReadonlyOptional(schema) { + return (0, index_28.ReadonlyOptional)(schema); + } + /** `[Json]` Creates a Readonly property */ + Readonly(schema, enable) { + return (0, index_27.Readonly)(schema, enable ?? true); + } + /** `[Json]` Creates a Optional property */ + Optional(schema, enable) { + return (0, index_24.Optional)(schema, enable ?? true); + } + // ------------------------------------------------------------------------ + // Types + // ------------------------------------------------------------------------ + /** `[Json]` Creates an Any type */ + Any(options) { + return (0, index_1.Any)(options); + } + /** `[Json]` Creates an Array type */ + Array(schema, options) { + return (0, index_2.Array)(schema, options); + } + /** `[Json]` Creates a Boolean type */ + Boolean(options) { + return (0, index_3.Boolean)(options); + } + /** `[Json]` Intrinsic function to Capitalize LiteralString types */ + Capitalize(schema, options) { + return (0, index_14.Capitalize)(schema, options); + } + /** `[Json]` Creates a Composite object type */ + Composite(schemas, options) { + return (0, index_4.Composite)(schemas, options); + } + /** `[JavaScript]` Creates a readonly const type from the given value. */ + Const(value, options) { + return (0, index_5.Const)(value, options); + } + /** `[Json]` Creates a dereferenced type */ + Deref(schema, references) { + return (0, index_6.Deref)(schema, references); + } + /** `[Json]` Creates a Enum type */ + Enum(item, options) { + return (0, index_7.Enum)(item, options); + } + /** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */ + Exclude(unionType, excludedMembers, options) { + return (0, index_8.Exclude)(unionType, excludedMembers, options); + } + /** `[Json]` Creates a Conditional type */ + Extends(L, R, T, F, options) { + return (0, index_9.Extends)(L, R, T, F, options); + } + /** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */ + Extract(type, union, options) { + return (0, index_10.Extract)(type, union, options); + } + /** `[Json]` Returns an Indexed property type for the given keys */ + Index(schema, unresolved, options) { + return (0, index_11.Index)(schema, unresolved, options); + } + /** `[Json]` Creates an Integer type */ + Integer(options) { + return (0, index_12.Integer)(options); + } + /** `[Json]` Creates an Intersect type */ + Intersect(T, options) { + return (0, index_13.Intersect)(T, options); + } + /** `[Json]` Creates a KeyOf type */ + KeyOf(schema, options) { + return (0, index_15.KeyOf)(schema, options); + } + /** `[Json]` Creates a Literal type */ + Literal(value, options) { + return (0, index_16.Literal)(value, options); + } + /** `[Json]` Intrinsic function to Lowercase LiteralString types */ + Lowercase(schema, options) { + return (0, index_14.Lowercase)(schema, options); + } + /** `[Json]` Creates a Mapped object type */ + Mapped(key, map, options) { + return (0, index_17.Mapped)(key, map, options); + } + /** `[Json]` Creates a Never type */ + Never(options) { + return (0, index_18.Never)(options); + } + /** `[Json]` Creates a Not type */ + Not(schema, options) { + return (0, index_19.Not)(schema, options); + } + /** `[Json]` Creates a Null type */ + Null(options) { + return (0, index_20.Null)(options); + } + /** `[Json]` Creates a Number type */ + Number(options) { + return (0, index_21.Number)(options); + } + /** `[Json]` Creates an Object type */ + Object(properties, options) { + return (0, index_22.Object)(properties, options); + } + /** `[Json]` Constructs a type whose keys are omitted from the given type */ + Omit(schema, unresolved, options) { + return (0, index_23.Omit)(schema, unresolved, options); + } + /** `[Json]` Constructs a type where all properties are optional */ + Partial(schema, options) { + return (0, index_25.Partial)(schema, options); + } + /** `[Json]` Constructs a type whose keys are picked from the given type */ + Pick(schema, unresolved, options) { + return (0, index_26.Pick)(schema, unresolved, options); + } + /** `[Json]` Creates a Record type */ + Record(key, schema, options) { + return (0, index_29.Record)(key, schema, options); + } + /** `[Json]` Creates a Recursive type */ + Recursive(callback, options) { + return (0, index_30.Recursive)(callback, options); + } + /** `[Json]` Creates a Ref type. */ + Ref(unresolved, options) { + return (0, index_31.Ref)(unresolved, options); + } + /** `[Json]` Constructs a type where all properties are required */ + Required(schema, options) { + return (0, index_32.Required)(schema, options); + } + /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */ + Rest(schema) { + return (0, index_33.Rest)(schema); + } + /** `[Json]` Creates a String type */ + String(options) { + return (0, index_35.String)(options); + } + /** `[Json]` Creates a TemplateLiteral type */ + TemplateLiteral(unresolved, options) { + return (0, index_36.TemplateLiteral)(unresolved, options); + } + /** `[Json]` Creates a Transform type */ + Transform(schema) { + return (0, index_37.Transform)(schema); + } + /** `[Json]` Creates a Tuple type */ + Tuple(items, options) { + return (0, index_38.Tuple)(items, options); + } + /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */ + Uncapitalize(schema, options) { + return (0, index_14.Uncapitalize)(schema, options); + } + /** `[Json]` Creates a Union type */ + Union(schemas, options) { + return (0, index_39.Union)(schemas, options); + } + /** `[Json]` Creates an Unknown type */ + Unknown(options) { + return (0, index_40.Unknown)(options); + } + /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */ + Unsafe(options) { + return (0, index_41.Unsafe)(options); + } + /** `[Json]` Intrinsic function to Uppercase LiteralString types */ + Uppercase(schema, options) { + return (0, index_14.Uppercase)(schema, options); + } + }; + exports2.JsonTypeBuilder = JsonTypeBuilder; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/type/type.js +var require_type5 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/type/type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.String = exports2.ReturnType = exports2.Rest = exports2.Required = exports2.RegExp = exports2.Ref = exports2.Recursive = exports2.Record = exports2.ReadonlyOptional = exports2.Readonly = exports2.Promise = exports2.Pick = exports2.Partial = exports2.Parameters = exports2.Optional = exports2.Omit = exports2.Object = exports2.Number = exports2.Null = exports2.Not = exports2.Never = exports2.Mapped = exports2.Literal = exports2.KeyOf = exports2.Iterator = exports2.Uppercase = exports2.Lowercase = exports2.Uncapitalize = exports2.Capitalize = exports2.Intersect = exports2.Integer = exports2.InstanceType = exports2.Index = exports2.Function = exports2.Extract = exports2.Extends = exports2.Exclude = exports2.Enum = exports2.Deref = exports2.Date = exports2.ConstructorParameters = exports2.Constructor = exports2.Const = exports2.Composite = exports2.Boolean = exports2.BigInt = exports2.Awaited = exports2.AsyncIterator = exports2.Array = exports2.Any = void 0; + exports2.Void = exports2.Unsafe = exports2.Unknown = exports2.Union = exports2.Undefined = exports2.Uint8Array = exports2.Tuple = exports2.Transform = exports2.TemplateLiteral = exports2.Symbol = exports2.Strict = void 0; + var index_1 = require_any2(); + Object.defineProperty(exports2, "Any", { enumerable: true, get: function() { + return index_1.Any; + } }); + var index_2 = require_array2(); + Object.defineProperty(exports2, "Array", { enumerable: true, get: function() { + return index_2.Array; + } }); + var index_3 = require_async_iterator2(); + Object.defineProperty(exports2, "AsyncIterator", { enumerable: true, get: function() { + return index_3.AsyncIterator; + } }); + var index_4 = require_awaited2(); + Object.defineProperty(exports2, "Awaited", { enumerable: true, get: function() { + return index_4.Awaited; + } }); + var index_5 = require_bigint2(); + Object.defineProperty(exports2, "BigInt", { enumerable: true, get: function() { + return index_5.BigInt; + } }); + var index_6 = require_boolean2(); + Object.defineProperty(exports2, "Boolean", { enumerable: true, get: function() { + return index_6.Boolean; + } }); + var index_7 = require_composite2(); + Object.defineProperty(exports2, "Composite", { enumerable: true, get: function() { + return index_7.Composite; + } }); + var index_8 = require_const2(); + Object.defineProperty(exports2, "Const", { enumerable: true, get: function() { + return index_8.Const; + } }); + var index_9 = require_constructor2(); + Object.defineProperty(exports2, "Constructor", { enumerable: true, get: function() { + return index_9.Constructor; + } }); + var index_10 = require_constructor_parameters2(); + Object.defineProperty(exports2, "ConstructorParameters", { enumerable: true, get: function() { + return index_10.ConstructorParameters; + } }); + var index_11 = require_date2(); + Object.defineProperty(exports2, "Date", { enumerable: true, get: function() { + return index_11.Date; + } }); + var index_12 = require_deref2(); + Object.defineProperty(exports2, "Deref", { enumerable: true, get: function() { + return index_12.Deref; + } }); + var index_13 = require_enum2(); + Object.defineProperty(exports2, "Enum", { enumerable: true, get: function() { + return index_13.Enum; + } }); + var index_14 = require_exclude2(); + Object.defineProperty(exports2, "Exclude", { enumerable: true, get: function() { + return index_14.Exclude; + } }); + var index_15 = require_extends2(); + Object.defineProperty(exports2, "Extends", { enumerable: true, get: function() { + return index_15.Extends; + } }); + var index_16 = require_extract2(); + Object.defineProperty(exports2, "Extract", { enumerable: true, get: function() { + return index_16.Extract; + } }); + var index_17 = require_function2(); + Object.defineProperty(exports2, "Function", { enumerable: true, get: function() { + return index_17.Function; + } }); + var index_18 = require_indexed2(); + Object.defineProperty(exports2, "Index", { enumerable: true, get: function() { + return index_18.Index; + } }); + var index_19 = require_instance_type2(); + Object.defineProperty(exports2, "InstanceType", { enumerable: true, get: function() { + return index_19.InstanceType; + } }); + var index_20 = require_integer2(); + Object.defineProperty(exports2, "Integer", { enumerable: true, get: function() { + return index_20.Integer; + } }); + var index_21 = require_intersect2(); + Object.defineProperty(exports2, "Intersect", { enumerable: true, get: function() { + return index_21.Intersect; + } }); + var index_22 = require_intrinsic2(); + Object.defineProperty(exports2, "Capitalize", { enumerable: true, get: function() { + return index_22.Capitalize; + } }); + Object.defineProperty(exports2, "Uncapitalize", { enumerable: true, get: function() { + return index_22.Uncapitalize; + } }); + Object.defineProperty(exports2, "Lowercase", { enumerable: true, get: function() { + return index_22.Lowercase; + } }); + Object.defineProperty(exports2, "Uppercase", { enumerable: true, get: function() { + return index_22.Uppercase; + } }); + var index_23 = require_iterator2(); + Object.defineProperty(exports2, "Iterator", { enumerable: true, get: function() { + return index_23.Iterator; + } }); + var index_24 = require_keyof2(); + Object.defineProperty(exports2, "KeyOf", { enumerable: true, get: function() { + return index_24.KeyOf; + } }); + var index_25 = require_literal2(); + Object.defineProperty(exports2, "Literal", { enumerable: true, get: function() { + return index_25.Literal; + } }); + var index_26 = require_mapped2(); + Object.defineProperty(exports2, "Mapped", { enumerable: true, get: function() { + return index_26.Mapped; + } }); + var index_27 = require_never2(); + Object.defineProperty(exports2, "Never", { enumerable: true, get: function() { + return index_27.Never; + } }); + var index_28 = require_not2(); + Object.defineProperty(exports2, "Not", { enumerable: true, get: function() { + return index_28.Not; + } }); + var index_29 = require_null2(); + Object.defineProperty(exports2, "Null", { enumerable: true, get: function() { + return index_29.Null; + } }); + var index_30 = require_number3(); + Object.defineProperty(exports2, "Number", { enumerable: true, get: function() { + return index_30.Number; + } }); + var index_31 = require_object2(); + Object.defineProperty(exports2, "Object", { enumerable: true, get: function() { + return index_31.Object; + } }); + var index_32 = require_omit2(); + Object.defineProperty(exports2, "Omit", { enumerable: true, get: function() { + return index_32.Omit; + } }); + var index_33 = require_optional2(); + Object.defineProperty(exports2, "Optional", { enumerable: true, get: function() { + return index_33.Optional; + } }); + var index_34 = require_parameters2(); + Object.defineProperty(exports2, "Parameters", { enumerable: true, get: function() { + return index_34.Parameters; + } }); + var index_35 = require_partial2(); + Object.defineProperty(exports2, "Partial", { enumerable: true, get: function() { + return index_35.Partial; + } }); + var index_36 = require_pick2(); + Object.defineProperty(exports2, "Pick", { enumerable: true, get: function() { + return index_36.Pick; + } }); + var index_37 = require_promise2(); + Object.defineProperty(exports2, "Promise", { enumerable: true, get: function() { + return index_37.Promise; + } }); + var index_38 = require_readonly2(); + Object.defineProperty(exports2, "Readonly", { enumerable: true, get: function() { + return index_38.Readonly; + } }); + var index_39 = require_readonly_optional2(); + Object.defineProperty(exports2, "ReadonlyOptional", { enumerable: true, get: function() { + return index_39.ReadonlyOptional; + } }); + var index_40 = require_record2(); + Object.defineProperty(exports2, "Record", { enumerable: true, get: function() { + return index_40.Record; + } }); + var index_41 = require_recursive2(); + Object.defineProperty(exports2, "Recursive", { enumerable: true, get: function() { + return index_41.Recursive; + } }); + var index_42 = require_ref2(); + Object.defineProperty(exports2, "Ref", { enumerable: true, get: function() { + return index_42.Ref; + } }); + var index_43 = require_regexp2(); + Object.defineProperty(exports2, "RegExp", { enumerable: true, get: function() { + return index_43.RegExp; + } }); + var index_44 = require_required2(); + Object.defineProperty(exports2, "Required", { enumerable: true, get: function() { + return index_44.Required; + } }); + var index_45 = require_rest2(); + Object.defineProperty(exports2, "Rest", { enumerable: true, get: function() { + return index_45.Rest; + } }); + var index_46 = require_return_type2(); + Object.defineProperty(exports2, "ReturnType", { enumerable: true, get: function() { + return index_46.ReturnType; + } }); + var index_47 = require_string2(); + Object.defineProperty(exports2, "String", { enumerable: true, get: function() { + return index_47.String; + } }); + var index_48 = require_strict2(); + Object.defineProperty(exports2, "Strict", { enumerable: true, get: function() { + return index_48.Strict; + } }); + var index_49 = require_symbol2(); + Object.defineProperty(exports2, "Symbol", { enumerable: true, get: function() { + return index_49.Symbol; + } }); + var index_50 = require_template_literal2(); + Object.defineProperty(exports2, "TemplateLiteral", { enumerable: true, get: function() { + return index_50.TemplateLiteral; + } }); + var index_51 = require_transform2(); + Object.defineProperty(exports2, "Transform", { enumerable: true, get: function() { + return index_51.Transform; + } }); + var index_52 = require_tuple2(); + Object.defineProperty(exports2, "Tuple", { enumerable: true, get: function() { + return index_52.Tuple; + } }); + var index_53 = require_uint8array2(); + Object.defineProperty(exports2, "Uint8Array", { enumerable: true, get: function() { + return index_53.Uint8Array; + } }); + var index_54 = require_undefined2(); + Object.defineProperty(exports2, "Undefined", { enumerable: true, get: function() { + return index_54.Undefined; + } }); + var index_55 = require_union3(); + Object.defineProperty(exports2, "Union", { enumerable: true, get: function() { + return index_55.Union; + } }); + var index_56 = require_unknown2(); + Object.defineProperty(exports2, "Unknown", { enumerable: true, get: function() { + return index_56.Unknown; + } }); + var index_57 = require_unsafe2(); + Object.defineProperty(exports2, "Unsafe", { enumerable: true, get: function() { + return index_57.Unsafe; + } }); + var index_58 = require_void2(); + Object.defineProperty(exports2, "Void", { enumerable: true, get: function() { + return index_58.Void; + } }); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/type/javascript.js +var require_javascript = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/type/javascript.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.JavaScriptTypeBuilder = void 0; + var json_1 = require_json(); + var index_1 = require_async_iterator2(); + var index_2 = require_awaited2(); + var index_3 = require_bigint2(); + var index_4 = require_constructor2(); + var index_5 = require_constructor_parameters2(); + var index_6 = require_date2(); + var index_7 = require_function2(); + var index_8 = require_instance_type2(); + var index_9 = require_iterator2(); + var index_10 = require_parameters2(); + var index_11 = require_promise2(); + var index_12 = require_regexp2(); + var index_13 = require_return_type2(); + var index_14 = require_symbol2(); + var index_15 = require_uint8array2(); + var index_16 = require_undefined2(); + var index_17 = require_void2(); + var JavaScriptTypeBuilder = class extends json_1.JsonTypeBuilder { + /** `[JavaScript]` Creates a AsyncIterator type */ + AsyncIterator(items, options) { + return (0, index_1.AsyncIterator)(items, options); + } + /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */ + Awaited(schema, options) { + return (0, index_2.Awaited)(schema, options); + } + /** `[JavaScript]` Creates a BigInt type */ + BigInt(options) { + return (0, index_3.BigInt)(options); + } + /** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */ + ConstructorParameters(schema, options) { + return (0, index_5.ConstructorParameters)(schema, options); + } + /** `[JavaScript]` Creates a Constructor type */ + Constructor(parameters, returns, options) { + return (0, index_4.Constructor)(parameters, returns, options); + } + /** `[JavaScript]` Creates a Date type */ + Date(options = {}) { + return (0, index_6.Date)(options); + } + /** `[JavaScript]` Creates a Function type */ + Function(parameters, returns, options) { + return (0, index_7.Function)(parameters, returns, options); + } + /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */ + InstanceType(schema, options) { + return (0, index_8.InstanceType)(schema, options); + } + /** `[JavaScript]` Creates an Iterator type */ + Iterator(items, options) { + return (0, index_9.Iterator)(items, options); + } + /** `[JavaScript]` Extracts the Parameters from the given Function type */ + Parameters(schema, options) { + return (0, index_10.Parameters)(schema, options); + } + /** `[JavaScript]` Creates a Promise type */ + Promise(item, options) { + return (0, index_11.Promise)(item, options); + } + /** `[JavaScript]` Creates a RegExp type */ + RegExp(unresolved, options) { + return (0, index_12.RegExp)(unresolved, options); + } + /** `[JavaScript]` Extracts the ReturnType from the given Function type */ + ReturnType(schema, options) { + return (0, index_13.ReturnType)(schema, options); + } + /** `[JavaScript]` Creates a Symbol type */ + Symbol(options) { + return (0, index_14.Symbol)(options); + } + /** `[JavaScript]` Creates a Undefined type */ + Undefined(options) { + return (0, index_16.Undefined)(options); + } + /** `[JavaScript]` Creates a Uint8Array type */ + Uint8Array(options) { + return (0, index_15.Uint8Array)(options); + } + /** `[JavaScript]` Creates a Void type */ + Void(options) { + return (0, index_17.Void)(options); + } + }; + exports2.JavaScriptTypeBuilder = JavaScriptTypeBuilder; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/type/type/index.js +var require_type6 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/type/type/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Type = exports2.JavaScriptTypeBuilder = exports2.JsonTypeBuilder = void 0; + var json_1 = require_json(); + Object.defineProperty(exports2, "JsonTypeBuilder", { enumerable: true, get: function() { + return json_1.JsonTypeBuilder; + } }); + var TypeBuilder = require_type5(); + var javascript_1 = require_javascript(); + Object.defineProperty(exports2, "JavaScriptTypeBuilder", { enumerable: true, get: function() { + return javascript_1.JavaScriptTypeBuilder; + } }); + var Type = TypeBuilder; + exports2.Type = Type; + } +}); + +// node_modules/@sinclair/typebox/build/cjs/index.js +var require_cjs = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_clone(), exports2); + __exportStar2(require_create(), exports2); + __exportStar2(require_error2(), exports2); + __exportStar2(require_guard3(), exports2); + __exportStar2(require_helpers2(), exports2); + __exportStar2(require_patterns2(), exports2); + __exportStar2(require_registry(), exports2); + __exportStar2(require_sets(), exports2); + __exportStar2(require_symbols2(), exports2); + __exportStar2(require_any2(), exports2); + __exportStar2(require_array2(), exports2); + __exportStar2(require_async_iterator2(), exports2); + __exportStar2(require_awaited2(), exports2); + __exportStar2(require_bigint2(), exports2); + __exportStar2(require_boolean2(), exports2); + __exportStar2(require_composite2(), exports2); + __exportStar2(require_const2(), exports2); + __exportStar2(require_constructor2(), exports2); + __exportStar2(require_constructor_parameters2(), exports2); + __exportStar2(require_date2(), exports2); + __exportStar2(require_deref2(), exports2); + __exportStar2(require_enum2(), exports2); + __exportStar2(require_exclude2(), exports2); + __exportStar2(require_extends2(), exports2); + __exportStar2(require_extract2(), exports2); + __exportStar2(require_function2(), exports2); + __exportStar2(require_indexed2(), exports2); + __exportStar2(require_instance_type2(), exports2); + __exportStar2(require_integer2(), exports2); + __exportStar2(require_intersect2(), exports2); + __exportStar2(require_iterator2(), exports2); + __exportStar2(require_intrinsic2(), exports2); + __exportStar2(require_keyof2(), exports2); + __exportStar2(require_literal2(), exports2); + __exportStar2(require_mapped2(), exports2); + __exportStar2(require_never2(), exports2); + __exportStar2(require_not2(), exports2); + __exportStar2(require_null2(), exports2); + __exportStar2(require_number3(), exports2); + __exportStar2(require_object2(), exports2); + __exportStar2(require_omit2(), exports2); + __exportStar2(require_optional2(), exports2); + __exportStar2(require_parameters2(), exports2); + __exportStar2(require_partial2(), exports2); + __exportStar2(require_pick2(), exports2); + __exportStar2(require_promise2(), exports2); + __exportStar2(require_readonly2(), exports2); + __exportStar2(require_readonly_optional2(), exports2); + __exportStar2(require_record2(), exports2); + __exportStar2(require_recursive2(), exports2); + __exportStar2(require_ref2(), exports2); + __exportStar2(require_regexp2(), exports2); + __exportStar2(require_required2(), exports2); + __exportStar2(require_rest2(), exports2); + __exportStar2(require_return_type2(), exports2); + __exportStar2(require_schema2(), exports2); + __exportStar2(require_static2(), exports2); + __exportStar2(require_strict2(), exports2); + __exportStar2(require_string2(), exports2); + __exportStar2(require_symbol2(), exports2); + __exportStar2(require_template_literal2(), exports2); + __exportStar2(require_transform2(), exports2); + __exportStar2(require_tuple2(), exports2); + __exportStar2(require_uint8array2(), exports2); + __exportStar2(require_undefined2(), exports2); + __exportStar2(require_union3(), exports2); + __exportStar2(require_unknown2(), exports2); + __exportStar2(require_unsafe2(), exports2); + __exportStar2(require_void2(), exports2); + __exportStar2(require_type6(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/system/system.js +var require_system = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/system/system.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeSystem = exports2.TypeSystemDuplicateFormat = exports2.TypeSystemDuplicateTypeKind = void 0; + var index_1 = require_registry(); + var index_2 = require_unsafe2(); + var index_3 = require_symbols2(); + var index_4 = require_error2(); + var TypeSystemDuplicateTypeKind = class extends index_4.TypeBoxError { + constructor(kind) { + super(`Duplicate type kind '${kind}' detected`); + } + }; + exports2.TypeSystemDuplicateTypeKind = TypeSystemDuplicateTypeKind; + var TypeSystemDuplicateFormat = class extends index_4.TypeBoxError { + constructor(kind) { + super(`Duplicate string format '${kind}' detected`); + } + }; + exports2.TypeSystemDuplicateFormat = TypeSystemDuplicateFormat; + var TypeSystem; + (function(TypeSystem2) { + function Type(kind, check) { + if (index_1.TypeRegistry.Has(kind)) + throw new TypeSystemDuplicateTypeKind(kind); + index_1.TypeRegistry.Set(kind, check); + return (options = {}) => (0, index_2.Unsafe)({ ...options, [index_3.Kind]: kind }); + } + TypeSystem2.Type = Type; + function Format(format, check) { + if (index_1.FormatRegistry.Has(format)) + throw new TypeSystemDuplicateFormat(format); + index_1.FormatRegistry.Set(format, check); + return format; + } + TypeSystem2.Format = Format; + })(TypeSystem || (exports2.TypeSystem = TypeSystem = {})); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/system/index.js +var require_system2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/system/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_policy(), exports2); + __exportStar2(require_system(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/errors/function.js +var require_function3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/errors/function.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DefaultErrorFunction = DefaultErrorFunction; + exports2.SetErrorFunction = SetErrorFunction; + exports2.GetErrorFunction = GetErrorFunction; + var index_1 = require_symbols2(); + var errors_1 = require_errors2(); + function DefaultErrorFunction(error) { + switch (error.errorType) { + case errors_1.ValueErrorType.ArrayContains: + return "Expected array to contain at least one matching value"; + case errors_1.ValueErrorType.ArrayMaxContains: + return `Expected array to contain no more than ${error.schema.maxContains} matching values`; + case errors_1.ValueErrorType.ArrayMinContains: + return `Expected array to contain at least ${error.schema.minContains} matching values`; + case errors_1.ValueErrorType.ArrayMaxItems: + return `Expected array length to be less or equal to ${error.schema.maxItems}`; + case errors_1.ValueErrorType.ArrayMinItems: + return `Expected array length to be greater or equal to ${error.schema.minItems}`; + case errors_1.ValueErrorType.ArrayUniqueItems: + return "Expected array elements to be unique"; + case errors_1.ValueErrorType.Array: + return "Expected array"; + case errors_1.ValueErrorType.AsyncIterator: + return "Expected AsyncIterator"; + case errors_1.ValueErrorType.BigIntExclusiveMaximum: + return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`; + case errors_1.ValueErrorType.BigIntExclusiveMinimum: + return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`; + case errors_1.ValueErrorType.BigIntMaximum: + return `Expected bigint to be less or equal to ${error.schema.maximum}`; + case errors_1.ValueErrorType.BigIntMinimum: + return `Expected bigint to be greater or equal to ${error.schema.minimum}`; + case errors_1.ValueErrorType.BigIntMultipleOf: + return `Expected bigint to be a multiple of ${error.schema.multipleOf}`; + case errors_1.ValueErrorType.BigInt: + return "Expected bigint"; + case errors_1.ValueErrorType.Boolean: + return "Expected boolean"; + case errors_1.ValueErrorType.DateExclusiveMinimumTimestamp: + return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`; + case errors_1.ValueErrorType.DateExclusiveMaximumTimestamp: + return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`; + case errors_1.ValueErrorType.DateMinimumTimestamp: + return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`; + case errors_1.ValueErrorType.DateMaximumTimestamp: + return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`; + case errors_1.ValueErrorType.DateMultipleOfTimestamp: + return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`; + case errors_1.ValueErrorType.Date: + return "Expected Date"; + case errors_1.ValueErrorType.Function: + return "Expected function"; + case errors_1.ValueErrorType.IntegerExclusiveMaximum: + return `Expected integer to be less than ${error.schema.exclusiveMaximum}`; + case errors_1.ValueErrorType.IntegerExclusiveMinimum: + return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`; + case errors_1.ValueErrorType.IntegerMaximum: + return `Expected integer to be less or equal to ${error.schema.maximum}`; + case errors_1.ValueErrorType.IntegerMinimum: + return `Expected integer to be greater or equal to ${error.schema.minimum}`; + case errors_1.ValueErrorType.IntegerMultipleOf: + return `Expected integer to be a multiple of ${error.schema.multipleOf}`; + case errors_1.ValueErrorType.Integer: + return "Expected integer"; + case errors_1.ValueErrorType.IntersectUnevaluatedProperties: + return "Unexpected property"; + case errors_1.ValueErrorType.Intersect: + return "Expected all values to match"; + case errors_1.ValueErrorType.Iterator: + return "Expected Iterator"; + case errors_1.ValueErrorType.Literal: + return `Expected ${typeof error.schema.const === "string" ? `'${error.schema.const}'` : error.schema.const}`; + case errors_1.ValueErrorType.Never: + return "Never"; + case errors_1.ValueErrorType.Not: + return "Value should not match"; + case errors_1.ValueErrorType.Null: + return "Expected null"; + case errors_1.ValueErrorType.NumberExclusiveMaximum: + return `Expected number to be less than ${error.schema.exclusiveMaximum}`; + case errors_1.ValueErrorType.NumberExclusiveMinimum: + return `Expected number to be greater than ${error.schema.exclusiveMinimum}`; + case errors_1.ValueErrorType.NumberMaximum: + return `Expected number to be less or equal to ${error.schema.maximum}`; + case errors_1.ValueErrorType.NumberMinimum: + return `Expected number to be greater or equal to ${error.schema.minimum}`; + case errors_1.ValueErrorType.NumberMultipleOf: + return `Expected number to be a multiple of ${error.schema.multipleOf}`; + case errors_1.ValueErrorType.Number: + return "Expected number"; + case errors_1.ValueErrorType.Object: + return "Expected object"; + case errors_1.ValueErrorType.ObjectAdditionalProperties: + return "Unexpected property"; + case errors_1.ValueErrorType.ObjectMaxProperties: + return `Expected object to have no more than ${error.schema.maxProperties} properties`; + case errors_1.ValueErrorType.ObjectMinProperties: + return `Expected object to have at least ${error.schema.minProperties} properties`; + case errors_1.ValueErrorType.ObjectRequiredProperty: + return "Expected required property"; + case errors_1.ValueErrorType.Promise: + return "Expected Promise"; + case errors_1.ValueErrorType.RegExp: + return "Expected string to match regular expression"; + case errors_1.ValueErrorType.StringFormatUnknown: + return `Unknown format '${error.schema.format}'`; + case errors_1.ValueErrorType.StringFormat: + return `Expected string to match '${error.schema.format}' format`; + case errors_1.ValueErrorType.StringMaxLength: + return `Expected string length less or equal to ${error.schema.maxLength}`; + case errors_1.ValueErrorType.StringMinLength: + return `Expected string length greater or equal to ${error.schema.minLength}`; + case errors_1.ValueErrorType.StringPattern: + return `Expected string to match '${error.schema.pattern}'`; + case errors_1.ValueErrorType.String: + return "Expected string"; + case errors_1.ValueErrorType.Symbol: + return "Expected symbol"; + case errors_1.ValueErrorType.TupleLength: + return `Expected tuple to have ${error.schema.maxItems || 0} elements`; + case errors_1.ValueErrorType.Tuple: + return "Expected tuple"; + case errors_1.ValueErrorType.Uint8ArrayMaxByteLength: + return `Expected byte length less or equal to ${error.schema.maxByteLength}`; + case errors_1.ValueErrorType.Uint8ArrayMinByteLength: + return `Expected byte length greater or equal to ${error.schema.minByteLength}`; + case errors_1.ValueErrorType.Uint8Array: + return "Expected Uint8Array"; + case errors_1.ValueErrorType.Undefined: + return "Expected undefined"; + case errors_1.ValueErrorType.Union: + return "Expected union value"; + case errors_1.ValueErrorType.Void: + return "Expected void"; + case errors_1.ValueErrorType.Kind: + return `Expected kind '${error.schema[index_1.Kind]}'`; + default: + return "Unknown error type"; + } + } + var errorFunction = DefaultErrorFunction; + function SetErrorFunction(callback) { + errorFunction = callback; + } + function GetErrorFunction() { + return errorFunction; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/deref/deref.js +var require_deref3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/deref/deref.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TypeDereferenceError = void 0; + exports2.Pushref = Pushref; + exports2.Deref = Deref; + var index_1 = require_error2(); + var index_2 = require_symbols2(); + var guard_1 = require_guard(); + var TypeDereferenceError = class extends index_1.TypeBoxError { + constructor(schema) { + super(`Unable to dereference schema with $id '${schema.$ref}'`); + this.schema = schema; + } + }; + exports2.TypeDereferenceError = TypeDereferenceError; + function Resolve(schema, references) { + const target = references.find((target2) => target2.$id === schema.$ref); + if (target === void 0) + throw new TypeDereferenceError(schema); + return Deref(target, references); + } + function Pushref(schema, references) { + if (!(0, guard_1.IsString)(schema.$id) || references.some((target) => target.$id === schema.$id)) + return references; + references.push(schema); + return references; + } + function Deref(schema, references) { + return schema[index_2.Kind] === "This" || schema[index_2.Kind] === "Ref" ? Resolve(schema, references) : schema; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/deref/index.js +var require_deref4 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/deref/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_deref3(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/hash/hash.js +var require_hash = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/hash/hash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ValueHashError = void 0; + exports2.Hash = Hash3; + var index_1 = require_guard2(); + var index_2 = require_error2(); + var ValueHashError = class extends index_2.TypeBoxError { + constructor(value) { + super(`Unable to hash value`); + this.value = value; + } + }; + exports2.ValueHashError = ValueHashError; + var ByteMarker; + (function(ByteMarker2) { + ByteMarker2[ByteMarker2["Undefined"] = 0] = "Undefined"; + ByteMarker2[ByteMarker2["Null"] = 1] = "Null"; + ByteMarker2[ByteMarker2["Boolean"] = 2] = "Boolean"; + ByteMarker2[ByteMarker2["Number"] = 3] = "Number"; + ByteMarker2[ByteMarker2["String"] = 4] = "String"; + ByteMarker2[ByteMarker2["Object"] = 5] = "Object"; + ByteMarker2[ByteMarker2["Array"] = 6] = "Array"; + ByteMarker2[ByteMarker2["Date"] = 7] = "Date"; + ByteMarker2[ByteMarker2["Uint8Array"] = 8] = "Uint8Array"; + ByteMarker2[ByteMarker2["Symbol"] = 9] = "Symbol"; + ByteMarker2[ByteMarker2["BigInt"] = 10] = "BigInt"; + })(ByteMarker || (ByteMarker = {})); + var Accumulator = BigInt("14695981039346656037"); + var [Prime, Size] = [BigInt("1099511628211"), BigInt( + "18446744073709551616" + /* 2 ^ 64 */ + )]; + var Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i)); + var F64 = new Float64Array(1); + var F64In = new DataView(F64.buffer); + var F64Out = new Uint8Array(F64.buffer); + function* NumberToBytes(value) { + const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8); + for (let i = 0; i < byteCount; i++) { + yield value >> 8 * (byteCount - 1 - i) & 255; + } + } + function ArrayType(value) { + FNV1A64(ByteMarker.Array); + for (const item of value) { + Visit(item); + } + } + function BooleanType(value) { + FNV1A64(ByteMarker.Boolean); + FNV1A64(value ? 1 : 0); + } + function BigIntType(value) { + FNV1A64(ByteMarker.BigInt); + F64In.setBigInt64(0, value); + for (const byte of F64Out) { + FNV1A64(byte); + } + } + function DateType(value) { + FNV1A64(ByteMarker.Date); + Visit(value.getTime()); + } + function NullType(value) { + FNV1A64(ByteMarker.Null); + } + function NumberType(value) { + FNV1A64(ByteMarker.Number); + F64In.setFloat64(0, value); + for (const byte of F64Out) { + FNV1A64(byte); + } + } + function ObjectType(value) { + FNV1A64(ByteMarker.Object); + for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) { + Visit(key); + Visit(value[key]); + } + } + function StringType(value) { + FNV1A64(ByteMarker.String); + for (let i = 0; i < value.length; i++) { + for (const byte of NumberToBytes(value.charCodeAt(i))) { + FNV1A64(byte); + } + } + } + function SymbolType(value) { + FNV1A64(ByteMarker.Symbol); + Visit(value.description); + } + function Uint8ArrayType(value) { + FNV1A64(ByteMarker.Uint8Array); + for (let i = 0; i < value.length; i++) { + FNV1A64(value[i]); + } + } + function UndefinedType(value) { + return FNV1A64(ByteMarker.Undefined); + } + function Visit(value) { + if ((0, index_1.IsArray)(value)) + return ArrayType(value); + if ((0, index_1.IsBoolean)(value)) + return BooleanType(value); + if ((0, index_1.IsBigInt)(value)) + return BigIntType(value); + if ((0, index_1.IsDate)(value)) + return DateType(value); + if ((0, index_1.IsNull)(value)) + return NullType(value); + if ((0, index_1.IsNumber)(value)) + return NumberType(value); + if ((0, index_1.IsObject)(value)) + return ObjectType(value); + if ((0, index_1.IsString)(value)) + return StringType(value); + if ((0, index_1.IsSymbol)(value)) + return SymbolType(value); + if ((0, index_1.IsUint8Array)(value)) + return Uint8ArrayType(value); + if ((0, index_1.IsUndefined)(value)) + return UndefinedType(value); + throw new ValueHashError(value); + } + function FNV1A64(byte) { + Accumulator = Accumulator ^ Bytes[byte]; + Accumulator = Accumulator * Prime % Size; + } + function Hash3(value) { + Accumulator = BigInt("14695981039346656037"); + Visit(value); + return Accumulator; + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/hash/index.js +var require_hash2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/hash/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_hash(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/check/check.js +var require_check = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/check/check.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ValueCheckUnknownTypeError = void 0; + exports2.Check = Check; + var index_1 = require_system2(); + var index_2 = require_deref4(); + var index_3 = require_hash2(); + var index_4 = require_symbols2(); + var index_5 = require_keyof2(); + var index_6 = require_extends2(); + var index_7 = require_registry(); + var index_8 = require_error2(); + var index_9 = require_never2(); + var index_10 = require_guard2(); + var type_1 = require_type3(); + var ValueCheckUnknownTypeError = class extends index_8.TypeBoxError { + constructor(schema) { + super(`Unknown type`); + this.schema = schema; + } + }; + exports2.ValueCheckUnknownTypeError = ValueCheckUnknownTypeError; + function IsAnyOrUnknown(schema) { + return schema[index_4.Kind] === "Any" || schema[index_4.Kind] === "Unknown"; + } + function IsDefined(value) { + return value !== void 0; + } + function FromAny(schema, references, value) { + return true; + } + function FromArray(schema, references, value) { + if (!(0, index_10.IsArray)(value)) + return false; + if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) { + return false; + } + if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) { + return false; + } + if (!value.every((value2) => Visit(schema.items, references, value2))) { + return false; + } + if (schema.uniqueItems === true && !function() { + const set = /* @__PURE__ */ new Set(); + for (const element of value) { + const hashed = (0, index_3.Hash)(element); + if (set.has(hashed)) { + return false; + } else { + set.add(hashed); + } + } + return true; + }()) { + return false; + } + if (!(IsDefined(schema.contains) || (0, index_10.IsNumber)(schema.minContains) || (0, index_10.IsNumber)(schema.maxContains))) { + return true; + } + const containsSchema = IsDefined(schema.contains) ? schema.contains : (0, index_9.Never)(); + const containsCount = value.reduce((acc, value2) => Visit(containsSchema, references, value2) ? acc + 1 : acc, 0); + if (containsCount === 0) { + return false; + } + if ((0, index_10.IsNumber)(schema.minContains) && containsCount < schema.minContains) { + return false; + } + if ((0, index_10.IsNumber)(schema.maxContains) && containsCount > schema.maxContains) { + return false; + } + return true; + } + function FromAsyncIterator(schema, references, value) { + return (0, index_10.IsAsyncIterator)(value); + } + function FromBigInt(schema, references, value) { + if (!(0, index_10.IsBigInt)(value)) + return false; + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) { + return false; + } + return true; + } + function FromBoolean(schema, references, value) { + return (0, index_10.IsBoolean)(value); + } + function FromConstructor(schema, references, value) { + return Visit(schema.returns, references, value.prototype); + } + function FromDate(schema, references, value) { + if (!(0, index_10.IsDate)(value)) + return false; + if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { + return false; + } + if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { + return false; + } + if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { + return false; + } + if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { + return false; + } + if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) { + return false; + } + return true; + } + function FromFunction(schema, references, value) { + return (0, index_10.IsFunction)(value); + } + function FromInteger(schema, references, value) { + if (!(0, index_10.IsInteger)(value)) { + return false; + } + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + return false; + } + return true; + } + function FromIntersect(schema, references, value) { + const check1 = schema.allOf.every((schema2) => Visit(schema2, references, value)); + if (schema.unevaluatedProperties === false) { + const keyPattern = new RegExp((0, index_5.KeyOfPattern)(schema)); + const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key)); + return check1 && check2; + } else if ((0, type_1.IsSchema)(schema.unevaluatedProperties)) { + const keyCheck = new RegExp((0, index_5.KeyOfPattern)(schema)); + const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key])); + return check1 && check2; + } else { + return check1; + } + } + function FromIterator(schema, references, value) { + return (0, index_10.IsIterator)(value); + } + function FromLiteral(schema, references, value) { + return value === schema.const; + } + function FromNever(schema, references, value) { + return false; + } + function FromNot(schema, references, value) { + return !Visit(schema.not, references, value); + } + function FromNull(schema, references, value) { + return (0, index_10.IsNull)(value); + } + function FromNumber(schema, references, value) { + if (!index_1.TypeSystemPolicy.IsNumberLike(value)) + return false; + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + return false; + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + return false; + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + return false; + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + return false; + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + return false; + } + return true; + } + function FromObject(schema, references, value) { + if (!index_1.TypeSystemPolicy.IsObjectLike(value)) + return false; + if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + return false; + } + if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + return false; + } + const knownKeys = Object.getOwnPropertyNames(schema.properties); + for (const knownKey of knownKeys) { + const property = schema.properties[knownKey]; + if (schema.required && schema.required.includes(knownKey)) { + if (!Visit(property, references, value[knownKey])) { + return false; + } + if (((0, index_6.ExtendsUndefinedCheck)(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) { + return false; + } + } else { + if (index_1.TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) { + return false; + } + } + } + if (schema.additionalProperties === false) { + const valueKeys = Object.getOwnPropertyNames(value); + if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) { + return true; + } else { + return valueKeys.every((valueKey) => knownKeys.includes(valueKey)); + } + } else if (typeof schema.additionalProperties === "object") { + const valueKeys = Object.getOwnPropertyNames(value); + return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key])); + } else { + return true; + } + } + function FromPromise(schema, references, value) { + return (0, index_10.IsPromise)(value); + } + function FromRecord(schema, references, value) { + if (!index_1.TypeSystemPolicy.IsRecordLike(value)) { + return false; + } + if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + return false; + } + if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + return false; + } + const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0]; + const regex = new RegExp(patternKey); + const check1 = Object.entries(value).every(([key, value2]) => { + return regex.test(key) ? Visit(patternSchema, references, value2) : true; + }); + const check2 = typeof schema.additionalProperties === "object" ? Object.entries(value).every(([key, value2]) => { + return !regex.test(key) ? Visit(schema.additionalProperties, references, value2) : true; + }) : true; + const check3 = schema.additionalProperties === false ? Object.getOwnPropertyNames(value).every((key) => { + return regex.test(key); + }) : true; + return check1 && check2 && check3; + } + function FromRef(schema, references, value) { + return Visit((0, index_2.Deref)(schema, references), references, value); + } + function FromRegExp(schema, references, value) { + const regex = new RegExp(schema.source, schema.flags); + if (IsDefined(schema.minLength)) { + if (!(value.length >= schema.minLength)) + return false; + } + if (IsDefined(schema.maxLength)) { + if (!(value.length <= schema.maxLength)) + return false; + } + return regex.test(value); + } + function FromString(schema, references, value) { + if (!(0, index_10.IsString)(value)) { + return false; + } + if (IsDefined(schema.minLength)) { + if (!(value.length >= schema.minLength)) + return false; + } + if (IsDefined(schema.maxLength)) { + if (!(value.length <= schema.maxLength)) + return false; + } + if (IsDefined(schema.pattern)) { + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) + return false; + } + if (IsDefined(schema.format)) { + if (!index_7.FormatRegistry.Has(schema.format)) + return false; + const func = index_7.FormatRegistry.Get(schema.format); + return func(value); + } + return true; + } + function FromSymbol(schema, references, value) { + return (0, index_10.IsSymbol)(value); + } + function FromTemplateLiteral(schema, references, value) { + return (0, index_10.IsString)(value) && new RegExp(schema.pattern).test(value); + } + function FromThis(schema, references, value) { + return Visit((0, index_2.Deref)(schema, references), references, value); + } + function FromTuple(schema, references, value) { + if (!(0, index_10.IsArray)(value)) { + return false; + } + if (schema.items === void 0 && !(value.length === 0)) { + return false; + } + if (!(value.length === schema.maxItems)) { + return false; + } + if (!schema.items) { + return true; + } + for (let i = 0; i < schema.items.length; i++) { + if (!Visit(schema.items[i], references, value[i])) + return false; + } + return true; + } + function FromUndefined(schema, references, value) { + return (0, index_10.IsUndefined)(value); + } + function FromUnion(schema, references, value) { + return schema.anyOf.some((inner) => Visit(inner, references, value)); + } + function FromUint8Array(schema, references, value) { + if (!(0, index_10.IsUint8Array)(value)) { + return false; + } + if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { + return false; + } + if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) { + return false; + } + return true; + } + function FromUnknown(schema, references, value) { + return true; + } + function FromVoid(schema, references, value) { + return index_1.TypeSystemPolicy.IsVoidLike(value); + } + function FromKind(schema, references, value) { + if (!index_7.TypeRegistry.Has(schema[index_4.Kind])) + return false; + const func = index_7.TypeRegistry.Get(schema[index_4.Kind]); + return func(schema, value); + } + function Visit(schema, references, value) { + const references_ = IsDefined(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema_[index_4.Kind]) { + case "Any": + return FromAny(schema_, references_, value); + case "Array": + return FromArray(schema_, references_, value); + case "AsyncIterator": + return FromAsyncIterator(schema_, references_, value); + case "BigInt": + return FromBigInt(schema_, references_, value); + case "Boolean": + return FromBoolean(schema_, references_, value); + case "Constructor": + return FromConstructor(schema_, references_, value); + case "Date": + return FromDate(schema_, references_, value); + case "Function": + return FromFunction(schema_, references_, value); + case "Integer": + return FromInteger(schema_, references_, value); + case "Intersect": + return FromIntersect(schema_, references_, value); + case "Iterator": + return FromIterator(schema_, references_, value); + case "Literal": + return FromLiteral(schema_, references_, value); + case "Never": + return FromNever(schema_, references_, value); + case "Not": + return FromNot(schema_, references_, value); + case "Null": + return FromNull(schema_, references_, value); + case "Number": + return FromNumber(schema_, references_, value); + case "Object": + return FromObject(schema_, references_, value); + case "Promise": + return FromPromise(schema_, references_, value); + case "Record": + return FromRecord(schema_, references_, value); + case "Ref": + return FromRef(schema_, references_, value); + case "RegExp": + return FromRegExp(schema_, references_, value); + case "String": + return FromString(schema_, references_, value); + case "Symbol": + return FromSymbol(schema_, references_, value); + case "TemplateLiteral": + return FromTemplateLiteral(schema_, references_, value); + case "This": + return FromThis(schema_, references_, value); + case "Tuple": + return FromTuple(schema_, references_, value); + case "Undefined": + return FromUndefined(schema_, references_, value); + case "Union": + return FromUnion(schema_, references_, value); + case "Uint8Array": + return FromUint8Array(schema_, references_, value); + case "Unknown": + return FromUnknown(schema_, references_, value); + case "Void": + return FromVoid(schema_, references_, value); + default: + if (!index_7.TypeRegistry.Has(schema_[index_4.Kind])) + throw new ValueCheckUnknownTypeError(schema_); + return FromKind(schema_, references_, value); + } + } + function Check(...args) { + return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/value/check/index.js +var require_check2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/value/check/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_check(), exports2); + } +}); + +// node_modules/@sinclair/typebox/build/cjs/errors/errors.js +var require_errors2 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/errors/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ValueErrorIterator = exports2.ValueErrorsUnknownTypeError = exports2.ValueErrorType = void 0; + exports2.Errors = Errors; + var index_1 = require_system2(); + var index_2 = require_keyof2(); + var index_3 = require_registry(); + var extends_undefined_1 = require_extends_undefined(); + var function_1 = require_function3(); + var index_4 = require_error2(); + var index_5 = require_deref4(); + var index_6 = require_hash2(); + var index_7 = require_check2(); + var index_8 = require_symbols2(); + var index_9 = require_never2(); + var index_10 = require_guard2(); + var ValueErrorType; + (function(ValueErrorType2) { + ValueErrorType2[ValueErrorType2["ArrayContains"] = 0] = "ArrayContains"; + ValueErrorType2[ValueErrorType2["ArrayMaxContains"] = 1] = "ArrayMaxContains"; + ValueErrorType2[ValueErrorType2["ArrayMaxItems"] = 2] = "ArrayMaxItems"; + ValueErrorType2[ValueErrorType2["ArrayMinContains"] = 3] = "ArrayMinContains"; + ValueErrorType2[ValueErrorType2["ArrayMinItems"] = 4] = "ArrayMinItems"; + ValueErrorType2[ValueErrorType2["ArrayUniqueItems"] = 5] = "ArrayUniqueItems"; + ValueErrorType2[ValueErrorType2["Array"] = 6] = "Array"; + ValueErrorType2[ValueErrorType2["AsyncIterator"] = 7] = "AsyncIterator"; + ValueErrorType2[ValueErrorType2["BigIntExclusiveMaximum"] = 8] = "BigIntExclusiveMaximum"; + ValueErrorType2[ValueErrorType2["BigIntExclusiveMinimum"] = 9] = "BigIntExclusiveMinimum"; + ValueErrorType2[ValueErrorType2["BigIntMaximum"] = 10] = "BigIntMaximum"; + ValueErrorType2[ValueErrorType2["BigIntMinimum"] = 11] = "BigIntMinimum"; + ValueErrorType2[ValueErrorType2["BigIntMultipleOf"] = 12] = "BigIntMultipleOf"; + ValueErrorType2[ValueErrorType2["BigInt"] = 13] = "BigInt"; + ValueErrorType2[ValueErrorType2["Boolean"] = 14] = "Boolean"; + ValueErrorType2[ValueErrorType2["DateExclusiveMaximumTimestamp"] = 15] = "DateExclusiveMaximumTimestamp"; + ValueErrorType2[ValueErrorType2["DateExclusiveMinimumTimestamp"] = 16] = "DateExclusiveMinimumTimestamp"; + ValueErrorType2[ValueErrorType2["DateMaximumTimestamp"] = 17] = "DateMaximumTimestamp"; + ValueErrorType2[ValueErrorType2["DateMinimumTimestamp"] = 18] = "DateMinimumTimestamp"; + ValueErrorType2[ValueErrorType2["DateMultipleOfTimestamp"] = 19] = "DateMultipleOfTimestamp"; + ValueErrorType2[ValueErrorType2["Date"] = 20] = "Date"; + ValueErrorType2[ValueErrorType2["Function"] = 21] = "Function"; + ValueErrorType2[ValueErrorType2["IntegerExclusiveMaximum"] = 22] = "IntegerExclusiveMaximum"; + ValueErrorType2[ValueErrorType2["IntegerExclusiveMinimum"] = 23] = "IntegerExclusiveMinimum"; + ValueErrorType2[ValueErrorType2["IntegerMaximum"] = 24] = "IntegerMaximum"; + ValueErrorType2[ValueErrorType2["IntegerMinimum"] = 25] = "IntegerMinimum"; + ValueErrorType2[ValueErrorType2["IntegerMultipleOf"] = 26] = "IntegerMultipleOf"; + ValueErrorType2[ValueErrorType2["Integer"] = 27] = "Integer"; + ValueErrorType2[ValueErrorType2["IntersectUnevaluatedProperties"] = 28] = "IntersectUnevaluatedProperties"; + ValueErrorType2[ValueErrorType2["Intersect"] = 29] = "Intersect"; + ValueErrorType2[ValueErrorType2["Iterator"] = 30] = "Iterator"; + ValueErrorType2[ValueErrorType2["Kind"] = 31] = "Kind"; + ValueErrorType2[ValueErrorType2["Literal"] = 32] = "Literal"; + ValueErrorType2[ValueErrorType2["Never"] = 33] = "Never"; + ValueErrorType2[ValueErrorType2["Not"] = 34] = "Not"; + ValueErrorType2[ValueErrorType2["Null"] = 35] = "Null"; + ValueErrorType2[ValueErrorType2["NumberExclusiveMaximum"] = 36] = "NumberExclusiveMaximum"; + ValueErrorType2[ValueErrorType2["NumberExclusiveMinimum"] = 37] = "NumberExclusiveMinimum"; + ValueErrorType2[ValueErrorType2["NumberMaximum"] = 38] = "NumberMaximum"; + ValueErrorType2[ValueErrorType2["NumberMinimum"] = 39] = "NumberMinimum"; + ValueErrorType2[ValueErrorType2["NumberMultipleOf"] = 40] = "NumberMultipleOf"; + ValueErrorType2[ValueErrorType2["Number"] = 41] = "Number"; + ValueErrorType2[ValueErrorType2["ObjectAdditionalProperties"] = 42] = "ObjectAdditionalProperties"; + ValueErrorType2[ValueErrorType2["ObjectMaxProperties"] = 43] = "ObjectMaxProperties"; + ValueErrorType2[ValueErrorType2["ObjectMinProperties"] = 44] = "ObjectMinProperties"; + ValueErrorType2[ValueErrorType2["ObjectRequiredProperty"] = 45] = "ObjectRequiredProperty"; + ValueErrorType2[ValueErrorType2["Object"] = 46] = "Object"; + ValueErrorType2[ValueErrorType2["Promise"] = 47] = "Promise"; + ValueErrorType2[ValueErrorType2["RegExp"] = 48] = "RegExp"; + ValueErrorType2[ValueErrorType2["StringFormatUnknown"] = 49] = "StringFormatUnknown"; + ValueErrorType2[ValueErrorType2["StringFormat"] = 50] = "StringFormat"; + ValueErrorType2[ValueErrorType2["StringMaxLength"] = 51] = "StringMaxLength"; + ValueErrorType2[ValueErrorType2["StringMinLength"] = 52] = "StringMinLength"; + ValueErrorType2[ValueErrorType2["StringPattern"] = 53] = "StringPattern"; + ValueErrorType2[ValueErrorType2["String"] = 54] = "String"; + ValueErrorType2[ValueErrorType2["Symbol"] = 55] = "Symbol"; + ValueErrorType2[ValueErrorType2["TupleLength"] = 56] = "TupleLength"; + ValueErrorType2[ValueErrorType2["Tuple"] = 57] = "Tuple"; + ValueErrorType2[ValueErrorType2["Uint8ArrayMaxByteLength"] = 58] = "Uint8ArrayMaxByteLength"; + ValueErrorType2[ValueErrorType2["Uint8ArrayMinByteLength"] = 59] = "Uint8ArrayMinByteLength"; + ValueErrorType2[ValueErrorType2["Uint8Array"] = 60] = "Uint8Array"; + ValueErrorType2[ValueErrorType2["Undefined"] = 61] = "Undefined"; + ValueErrorType2[ValueErrorType2["Union"] = 62] = "Union"; + ValueErrorType2[ValueErrorType2["Void"] = 63] = "Void"; + })(ValueErrorType || (exports2.ValueErrorType = ValueErrorType = {})); + var ValueErrorsUnknownTypeError = class extends index_4.TypeBoxError { + constructor(schema) { + super("Unknown type"); + this.schema = schema; + } + }; + exports2.ValueErrorsUnknownTypeError = ValueErrorsUnknownTypeError; + function EscapeKey(key) { + return key.replace(/~/g, "~0").replace(/\//g, "~1"); + } + function IsDefined(value) { + return value !== void 0; + } + var ValueErrorIterator = class { + constructor(iterator) { + this.iterator = iterator; + } + [Symbol.iterator]() { + return this.iterator; + } + /** Returns the first value error or undefined if no errors */ + First() { + const next = this.iterator.next(); + return next.done ? void 0 : next.value; + } + }; + exports2.ValueErrorIterator = ValueErrorIterator; + function Create(errorType, schema, path2, value, errors = []) { + return { + type: errorType, + schema, + path: path2, + value, + message: (0, function_1.GetErrorFunction)()({ errorType, path: path2, schema, value, errors }), + errors + }; + } + function* FromAny(schema, references, path2, value) { + } + function* FromArray(schema, references, path2, value) { + if (!(0, index_10.IsArray)(value)) { + return yield Create(ValueErrorType.Array, schema, path2, value); + } + if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) { + yield Create(ValueErrorType.ArrayMinItems, schema, path2, value); + } + if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) { + yield Create(ValueErrorType.ArrayMaxItems, schema, path2, value); + } + for (let i = 0; i < value.length; i++) { + yield* Visit(schema.items, references, `${path2}/${i}`, value[i]); + } + if (schema.uniqueItems === true && !function() { + const set = /* @__PURE__ */ new Set(); + for (const element of value) { + const hashed = (0, index_6.Hash)(element); + if (set.has(hashed)) { + return false; + } else { + set.add(hashed); + } + } + return true; + }()) { + yield Create(ValueErrorType.ArrayUniqueItems, schema, path2, value); + } + if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) { + return; + } + const containsSchema = IsDefined(schema.contains) ? schema.contains : (0, index_9.Never)(); + const containsCount = value.reduce((acc, value2, index) => Visit(containsSchema, references, `${path2}${index}`, value2).next().done === true ? acc + 1 : acc, 0); + if (containsCount === 0) { + yield Create(ValueErrorType.ArrayContains, schema, path2, value); + } + if ((0, index_10.IsNumber)(schema.minContains) && containsCount < schema.minContains) { + yield Create(ValueErrorType.ArrayMinContains, schema, path2, value); + } + if ((0, index_10.IsNumber)(schema.maxContains) && containsCount > schema.maxContains) { + yield Create(ValueErrorType.ArrayMaxContains, schema, path2, value); + } + } + function* FromAsyncIterator(schema, references, path2, value) { + if (!(0, index_10.IsAsyncIterator)(value)) + yield Create(ValueErrorType.AsyncIterator, schema, path2, value); + } + function* FromBigInt(schema, references, path2, value) { + if (!(0, index_10.IsBigInt)(value)) + return yield Create(ValueErrorType.BigInt, schema, path2, value); + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path2, value); + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path2, value); + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield Create(ValueErrorType.BigIntMaximum, schema, path2, value); + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield Create(ValueErrorType.BigIntMinimum, schema, path2, value); + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) { + yield Create(ValueErrorType.BigIntMultipleOf, schema, path2, value); + } + } + function* FromBoolean(schema, references, path2, value) { + if (!(0, index_10.IsBoolean)(value)) + yield Create(ValueErrorType.Boolean, schema, path2, value); + } + function* FromConstructor(schema, references, path2, value) { + yield* Visit(schema.returns, references, path2, value.prototype); + } + function* FromDate(schema, references, path2, value) { + if (!(0, index_10.IsDate)(value)) + return yield Create(ValueErrorType.Date, schema, path2, value); + if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) { + yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path2, value); + } + if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) { + yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path2, value); + } + if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) { + yield Create(ValueErrorType.DateMaximumTimestamp, schema, path2, value); + } + if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) { + yield Create(ValueErrorType.DateMinimumTimestamp, schema, path2, value); + } + if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) { + yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path2, value); + } + } + function* FromFunction(schema, references, path2, value) { + if (!(0, index_10.IsFunction)(value)) + yield Create(ValueErrorType.Function, schema, path2, value); + } + function* FromInteger(schema, references, path2, value) { + if (!(0, index_10.IsInteger)(value)) + return yield Create(ValueErrorType.Integer, schema, path2, value); + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path2, value); + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path2, value); + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield Create(ValueErrorType.IntegerMaximum, schema, path2, value); + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield Create(ValueErrorType.IntegerMinimum, schema, path2, value); + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + yield Create(ValueErrorType.IntegerMultipleOf, schema, path2, value); + } + } + function* FromIntersect(schema, references, path2, value) { + let hasError = false; + for (const inner of schema.allOf) { + for (const error of Visit(inner, references, path2, value)) { + hasError = true; + yield error; + } + } + if (hasError) { + return yield Create(ValueErrorType.Intersect, schema, path2, value); + } + if (schema.unevaluatedProperties === false) { + const keyCheck = new RegExp((0, index_2.KeyOfPattern)(schema)); + for (const valueKey of Object.getOwnPropertyNames(value)) { + if (!keyCheck.test(valueKey)) { + yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path2}/${valueKey}`, value); + } + } + } + if (typeof schema.unevaluatedProperties === "object") { + const keyCheck = new RegExp((0, index_2.KeyOfPattern)(schema)); + for (const valueKey of Object.getOwnPropertyNames(value)) { + if (!keyCheck.test(valueKey)) { + const next = Visit(schema.unevaluatedProperties, references, `${path2}/${valueKey}`, value[valueKey]).next(); + if (!next.done) + yield next.value; + } + } + } + } + function* FromIterator(schema, references, path2, value) { + if (!(0, index_10.IsIterator)(value)) + yield Create(ValueErrorType.Iterator, schema, path2, value); + } + function* FromLiteral(schema, references, path2, value) { + if (!(value === schema.const)) + yield Create(ValueErrorType.Literal, schema, path2, value); + } + function* FromNever(schema, references, path2, value) { + yield Create(ValueErrorType.Never, schema, path2, value); + } + function* FromNot(schema, references, path2, value) { + if (Visit(schema.not, references, path2, value).next().done === true) + yield Create(ValueErrorType.Not, schema, path2, value); + } + function* FromNull(schema, references, path2, value) { + if (!(0, index_10.IsNull)(value)) + yield Create(ValueErrorType.Null, schema, path2, value); + } + function* FromNumber(schema, references, path2, value) { + if (!index_1.TypeSystemPolicy.IsNumberLike(value)) + return yield Create(ValueErrorType.Number, schema, path2, value); + if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) { + yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path2, value); + } + if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) { + yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path2, value); + } + if (IsDefined(schema.maximum) && !(value <= schema.maximum)) { + yield Create(ValueErrorType.NumberMaximum, schema, path2, value); + } + if (IsDefined(schema.minimum) && !(value >= schema.minimum)) { + yield Create(ValueErrorType.NumberMinimum, schema, path2, value); + } + if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) { + yield Create(ValueErrorType.NumberMultipleOf, schema, path2, value); + } + } + function* FromObject(schema, references, path2, value) { + if (!index_1.TypeSystemPolicy.IsObjectLike(value)) + return yield Create(ValueErrorType.Object, schema, path2, value); + if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + yield Create(ValueErrorType.ObjectMinProperties, schema, path2, value); + } + if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + yield Create(ValueErrorType.ObjectMaxProperties, schema, path2, value); + } + const requiredKeys = Array.isArray(schema.required) ? schema.required : []; + const knownKeys = Object.getOwnPropertyNames(schema.properties); + const unknownKeys = Object.getOwnPropertyNames(value); + for (const requiredKey of requiredKeys) { + if (unknownKeys.includes(requiredKey)) + continue; + yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path2}/${EscapeKey(requiredKey)}`, void 0); + } + if (schema.additionalProperties === false) { + for (const valueKey of unknownKeys) { + if (!knownKeys.includes(valueKey)) { + yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path2}/${EscapeKey(valueKey)}`, value[valueKey]); + } + } + } + if (typeof schema.additionalProperties === "object") { + for (const valueKey of unknownKeys) { + if (knownKeys.includes(valueKey)) + continue; + yield* Visit(schema.additionalProperties, references, `${path2}/${EscapeKey(valueKey)}`, value[valueKey]); + } + } + for (const knownKey of knownKeys) { + const property = schema.properties[knownKey]; + if (schema.required && schema.required.includes(knownKey)) { + yield* Visit(property, references, `${path2}/${EscapeKey(knownKey)}`, value[knownKey]); + if ((0, extends_undefined_1.ExtendsUndefinedCheck)(schema) && !(knownKey in value)) { + yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path2}/${EscapeKey(knownKey)}`, void 0); + } + } else { + if (index_1.TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) { + yield* Visit(property, references, `${path2}/${EscapeKey(knownKey)}`, value[knownKey]); + } + } + } + } + function* FromPromise(schema, references, path2, value) { + if (!(0, index_10.IsPromise)(value)) + yield Create(ValueErrorType.Promise, schema, path2, value); + } + function* FromRecord(schema, references, path2, value) { + if (!index_1.TypeSystemPolicy.IsRecordLike(value)) + return yield Create(ValueErrorType.Object, schema, path2, value); + if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) { + yield Create(ValueErrorType.ObjectMinProperties, schema, path2, value); + } + if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) { + yield Create(ValueErrorType.ObjectMaxProperties, schema, path2, value); + } + const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0]; + const regex = new RegExp(patternKey); + for (const [propertyKey, propertyValue] of Object.entries(value)) { + if (regex.test(propertyKey)) + yield* Visit(patternSchema, references, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); + } + if (typeof schema.additionalProperties === "object") { + for (const [propertyKey, propertyValue] of Object.entries(value)) { + if (!regex.test(propertyKey)) + yield* Visit(schema.additionalProperties, references, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); + } + } + if (schema.additionalProperties === false) { + for (const [propertyKey, propertyValue] of Object.entries(value)) { + if (regex.test(propertyKey)) + continue; + return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path2}/${EscapeKey(propertyKey)}`, propertyValue); + } + } + } + function* FromRef(schema, references, path2, value) { + yield* Visit((0, index_5.Deref)(schema, references), references, path2, value); + } + function* FromRegExp(schema, references, path2, value) { + if (!(0, index_10.IsString)(value)) + return yield Create(ValueErrorType.String, schema, path2, value); + if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) { + yield Create(ValueErrorType.StringMinLength, schema, path2, value); + } + if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) { + yield Create(ValueErrorType.StringMaxLength, schema, path2, value); + } + const regex = new RegExp(schema.source, schema.flags); + if (!regex.test(value)) { + return yield Create(ValueErrorType.RegExp, schema, path2, value); + } + } + function* FromString(schema, references, path2, value) { + if (!(0, index_10.IsString)(value)) + return yield Create(ValueErrorType.String, schema, path2, value); + if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) { + yield Create(ValueErrorType.StringMinLength, schema, path2, value); + } + if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) { + yield Create(ValueErrorType.StringMaxLength, schema, path2, value); + } + if ((0, index_10.IsString)(schema.pattern)) { + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) { + yield Create(ValueErrorType.StringPattern, schema, path2, value); + } + } + if ((0, index_10.IsString)(schema.format)) { + if (!index_3.FormatRegistry.Has(schema.format)) { + yield Create(ValueErrorType.StringFormatUnknown, schema, path2, value); + } else { + const format = index_3.FormatRegistry.Get(schema.format); + if (!format(value)) { + yield Create(ValueErrorType.StringFormat, schema, path2, value); + } + } + } + } + function* FromSymbol(schema, references, path2, value) { + if (!(0, index_10.IsSymbol)(value)) + yield Create(ValueErrorType.Symbol, schema, path2, value); + } + function* FromTemplateLiteral(schema, references, path2, value) { + if (!(0, index_10.IsString)(value)) + return yield Create(ValueErrorType.String, schema, path2, value); + const regex = new RegExp(schema.pattern); + if (!regex.test(value)) { + yield Create(ValueErrorType.StringPattern, schema, path2, value); + } + } + function* FromThis(schema, references, path2, value) { + yield* Visit((0, index_5.Deref)(schema, references), references, path2, value); + } + function* FromTuple(schema, references, path2, value) { + if (!(0, index_10.IsArray)(value)) + return yield Create(ValueErrorType.Tuple, schema, path2, value); + if (schema.items === void 0 && !(value.length === 0)) { + return yield Create(ValueErrorType.TupleLength, schema, path2, value); + } + if (!(value.length === schema.maxItems)) { + return yield Create(ValueErrorType.TupleLength, schema, path2, value); + } + if (!schema.items) { + return; + } + for (let i = 0; i < schema.items.length; i++) { + yield* Visit(schema.items[i], references, `${path2}/${i}`, value[i]); + } + } + function* FromUndefined(schema, references, path2, value) { + if (!(0, index_10.IsUndefined)(value)) + yield Create(ValueErrorType.Undefined, schema, path2, value); + } + function* FromUnion(schema, references, path2, value) { + if ((0, index_7.Check)(schema, references, value)) + return; + const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path2, value))); + yield Create(ValueErrorType.Union, schema, path2, value, errors); + } + function* FromUint8Array(schema, references, path2, value) { + if (!(0, index_10.IsUint8Array)(value)) + return yield Create(ValueErrorType.Uint8Array, schema, path2, value); + if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) { + yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path2, value); + } + if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) { + yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path2, value); + } + } + function* FromUnknown(schema, references, path2, value) { + } + function* FromVoid(schema, references, path2, value) { + if (!index_1.TypeSystemPolicy.IsVoidLike(value)) + yield Create(ValueErrorType.Void, schema, path2, value); + } + function* FromKind(schema, references, path2, value) { + const check = index_3.TypeRegistry.Get(schema[index_8.Kind]); + if (!check(schema, value)) + yield Create(ValueErrorType.Kind, schema, path2, value); + } + function* Visit(schema, references, path2, value) { + const references_ = IsDefined(schema.$id) ? [...references, schema] : references; + const schema_ = schema; + switch (schema_[index_8.Kind]) { + case "Any": + return yield* FromAny(schema_, references_, path2, value); + case "Array": + return yield* FromArray(schema_, references_, path2, value); + case "AsyncIterator": + return yield* FromAsyncIterator(schema_, references_, path2, value); + case "BigInt": + return yield* FromBigInt(schema_, references_, path2, value); + case "Boolean": + return yield* FromBoolean(schema_, references_, path2, value); + case "Constructor": + return yield* FromConstructor(schema_, references_, path2, value); + case "Date": + return yield* FromDate(schema_, references_, path2, value); + case "Function": + return yield* FromFunction(schema_, references_, path2, value); + case "Integer": + return yield* FromInteger(schema_, references_, path2, value); + case "Intersect": + return yield* FromIntersect(schema_, references_, path2, value); + case "Iterator": + return yield* FromIterator(schema_, references_, path2, value); + case "Literal": + return yield* FromLiteral(schema_, references_, path2, value); + case "Never": + return yield* FromNever(schema_, references_, path2, value); + case "Not": + return yield* FromNot(schema_, references_, path2, value); + case "Null": + return yield* FromNull(schema_, references_, path2, value); + case "Number": + return yield* FromNumber(schema_, references_, path2, value); + case "Object": + return yield* FromObject(schema_, references_, path2, value); + case "Promise": + return yield* FromPromise(schema_, references_, path2, value); + case "Record": + return yield* FromRecord(schema_, references_, path2, value); + case "Ref": + return yield* FromRef(schema_, references_, path2, value); + case "RegExp": + return yield* FromRegExp(schema_, references_, path2, value); + case "String": + return yield* FromString(schema_, references_, path2, value); + case "Symbol": + return yield* FromSymbol(schema_, references_, path2, value); + case "TemplateLiteral": + return yield* FromTemplateLiteral(schema_, references_, path2, value); + case "This": + return yield* FromThis(schema_, references_, path2, value); + case "Tuple": + return yield* FromTuple(schema_, references_, path2, value); + case "Undefined": + return yield* FromUndefined(schema_, references_, path2, value); + case "Union": + return yield* FromUnion(schema_, references_, path2, value); + case "Uint8Array": + return yield* FromUint8Array(schema_, references_, path2, value); + case "Unknown": + return yield* FromUnknown(schema_, references_, path2, value); + case "Void": + return yield* FromVoid(schema_, references_, path2, value); + default: + if (!index_3.TypeRegistry.Has(schema_[index_8.Kind])) + throw new ValueErrorsUnknownTypeError(schema); + return yield* FromKind(schema_, references_, path2, value); + } + } + function Errors(...args) { + const iterator = args.length === 3 ? Visit(args[0], args[1], "", args[2]) : Visit(args[0], [], "", args[1]); + return new ValueErrorIterator(iterator); + } + } +}); + +// node_modules/@sinclair/typebox/build/cjs/errors/index.js +var require_errors3 = __commonJS({ + "node_modules/@sinclair/typebox/build/cjs/errors/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_errors2(), exports2); + __exportStar2(require_function3(), exports2); + } +}); + +// node_modules/ts-mixer/dist/cjs/util.js +var require_util = __commonJS({ + "node_modules/ts-mixer/dist/cjs/util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.flatten = exports2.unique = exports2.hardMixProtos = exports2.nearestCommonProto = exports2.protoChain = exports2.copyProps = void 0; + var copyProps = (dest, src, exclude = []) => { + const props = Object.getOwnPropertyDescriptors(src); + for (let prop of exclude) + delete props[prop]; + Object.defineProperties(dest, props); + }; + exports2.copyProps = copyProps; + var protoChain = (obj, currentChain = [obj]) => { + const proto = Object.getPrototypeOf(obj); + if (proto === null) + return currentChain; + return (0, exports2.protoChain)(proto, [...currentChain, proto]); + }; + exports2.protoChain = protoChain; + var nearestCommonProto = (...objs) => { + if (objs.length === 0) + return void 0; + let commonProto = void 0; + const protoChains = objs.map((obj) => (0, exports2.protoChain)(obj)); + while (protoChains.every((protoChain2) => protoChain2.length > 0)) { + const protos = protoChains.map((protoChain2) => protoChain2.pop()); + const potentialCommonProto = protos[0]; + if (protos.every((proto) => proto === potentialCommonProto)) + commonProto = potentialCommonProto; + else + break; + } + return commonProto; + }; + exports2.nearestCommonProto = nearestCommonProto; + var hardMixProtos = (ingredients, constructor, exclude = []) => { + var _a; + const base = (_a = (0, exports2.nearestCommonProto)(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype; + const mixedProto = Object.create(base); + const visitedProtos = (0, exports2.protoChain)(base); + for (let prototype of ingredients) { + let protos = (0, exports2.protoChain)(prototype); + for (let i = protos.length - 1; i >= 0; i--) { + let newProto = protos[i]; + if (visitedProtos.indexOf(newProto) === -1) { + (0, exports2.copyProps)(mixedProto, newProto, ["constructor", ...exclude]); + visitedProtos.push(newProto); + } + } + } + mixedProto.constructor = constructor; + return mixedProto; + }; + exports2.hardMixProtos = hardMixProtos; + var unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i); + exports2.unique = unique; + var flatten = (arr) => arr.length === 0 ? [] : arr.length === 1 ? arr[0] : arr.reduce((a1, a2) => [...a1, ...a2]); + exports2.flatten = flatten; + } +}); + +// node_modules/ts-mixer/dist/cjs/proxy.js +var require_proxy = __commonJS({ + "node_modules/ts-mixer/dist/cjs/proxy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.softMixProtos = exports2.proxyMix = exports2.getIngredientWithProp = void 0; + var util_1 = require_util(); + var getIngredientWithProp = (prop, ingredients) => { + const protoChains = ingredients.map((ingredient) => (0, util_1.protoChain)(ingredient)); + let protoDepth = 0; + let protosAreLeftToSearch = true; + while (protosAreLeftToSearch) { + protosAreLeftToSearch = false; + for (let i = ingredients.length - 1; i >= 0; i--) { + const searchTarget = protoChains[i][protoDepth]; + if (searchTarget !== void 0 && searchTarget !== null) { + protosAreLeftToSearch = true; + if (Object.getOwnPropertyDescriptor(searchTarget, prop) != void 0) { + return protoChains[i][0]; + } + } + } + protoDepth++; + } + return void 0; + }; + exports2.getIngredientWithProp = getIngredientWithProp; + var proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, { + getPrototypeOf() { + return prototype; + }, + setPrototypeOf() { + throw Error("Cannot set prototype of Proxies created by ts-mixer"); + }, + getOwnPropertyDescriptor(_, prop) { + return Object.getOwnPropertyDescriptor((0, exports2.getIngredientWithProp)(prop, ingredients) || {}, prop); + }, + defineProperty() { + throw new Error("Cannot define new properties on Proxies created by ts-mixer"); + }, + has(_, prop) { + return (0, exports2.getIngredientWithProp)(prop, ingredients) !== void 0 || prototype[prop] !== void 0; + }, + get(_, prop) { + return ((0, exports2.getIngredientWithProp)(prop, ingredients) || prototype)[prop]; + }, + set(_, prop, val) { + const ingredientWithProp = (0, exports2.getIngredientWithProp)(prop, ingredients); + if (ingredientWithProp === void 0) + throw new Error("Cannot set new properties on Proxies created by ts-mixer"); + ingredientWithProp[prop] = val; + return true; + }, + deleteProperty() { + throw new Error("Cannot delete properties on Proxies created by ts-mixer"); + }, + ownKeys() { + return ingredients.map(Object.getOwnPropertyNames).reduce((prev, curr) => curr.concat(prev.filter((key) => curr.indexOf(key) < 0))); + } + }); + exports2.proxyMix = proxyMix; + var softMixProtos = (ingredients, constructor) => (0, exports2.proxyMix)([...ingredients, { constructor }]); + exports2.softMixProtos = softMixProtos; + } +}); + +// node_modules/ts-mixer/dist/cjs/settings.js +var require_settings = __commonJS({ + "node_modules/ts-mixer/dist/cjs/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.settings = void 0; + exports2.settings = { + initFunction: null, + staticsStrategy: "copy", + prototypeStrategy: "copy", + decoratorInheritance: "deep" + }; + } +}); + +// node_modules/ts-mixer/dist/cjs/mixin-tracking.js +var require_mixin_tracking = __commonJS({ + "node_modules/ts-mixer/dist/cjs/mixin-tracking.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hasMixin = exports2.registerMixins = exports2.getMixinsForClass = void 0; + var util_1 = require_util(); + var mixins = /* @__PURE__ */ new WeakMap(); + var getMixinsForClass = (clazz) => mixins.get(clazz); + exports2.getMixinsForClass = getMixinsForClass; + var registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents); + exports2.registerMixins = registerMixins; + var hasMixin = (instance, mixin) => { + if (instance instanceof mixin) + return true; + const constructor = instance.constructor; + const visited = /* @__PURE__ */ new Set(); + let frontier = /* @__PURE__ */ new Set(); + frontier.add(constructor); + while (frontier.size > 0) { + if (frontier.has(mixin)) + return true; + frontier.forEach((item) => visited.add(item)); + const newFrontier = /* @__PURE__ */ new Set(); + frontier.forEach((item) => { + var _a; + const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : (0, util_1.protoChain)(item.prototype).map((proto) => proto.constructor).filter((item2) => item2 !== null); + if (itemConstituents) + itemConstituents.forEach((constituent) => { + if (!visited.has(constituent) && !frontier.has(constituent)) + newFrontier.add(constituent); + }); + }); + frontier = newFrontier; + } + return false; + }; + exports2.hasMixin = hasMixin; + } +}); + +// node_modules/ts-mixer/dist/cjs/decorator.js +var require_decorator = __commonJS({ + "node_modules/ts-mixer/dist/cjs/decorator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decorate = exports2.getDecoratorsForClass = exports2.directDecoratorSearch = exports2.deepDecoratorSearch = void 0; + var util_1 = require_util(); + var mixin_tracking_1 = require_mixin_tracking(); + var mergeObjectsOfDecorators = (o1, o2) => { + var _a, _b; + const allKeys = (0, util_1.unique)([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]); + const mergedObject = {}; + for (let key of allKeys) + mergedObject[key] = (0, util_1.unique)([...(_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : [], ...(_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : []]); + return mergedObject; + }; + var mergePropertyAndMethodDecorators = (d1, d2) => { + var _a, _b, _c, _d; + return { + property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}), + method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}) + }; + }; + var mergeDecorators = (d1, d2) => { + var _a, _b, _c, _d, _e, _f; + return { + class: (0, util_1.unique)([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]), + static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}), + instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}) + }; + }; + var decorators = /* @__PURE__ */ new Map(); + var findAllConstituentClasses = (...classes) => { + var _a; + const allClasses = /* @__PURE__ */ new Set(); + const frontier = /* @__PURE__ */ new Set([...classes]); + while (frontier.size > 0) { + for (let clazz of frontier) { + const protoChainClasses = (0, util_1.protoChain)(clazz.prototype).map((proto) => proto.constructor); + const mixinClasses = (_a = (0, mixin_tracking_1.getMixinsForClass)(clazz)) !== null && _a !== void 0 ? _a : []; + const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses]; + const newClasses = potentiallyNewClasses.filter((c) => !allClasses.has(c)); + for (let newClass of newClasses) + frontier.add(newClass); + allClasses.add(clazz); + frontier.delete(clazz); + } + } + return [...allClasses]; + }; + var deepDecoratorSearch = (...classes) => { + const decoratorsForClassChain = findAllConstituentClasses(...classes).map((clazz) => decorators.get(clazz)).filter((decorators2) => !!decorators2); + if (decoratorsForClassChain.length == 0) + return {}; + if (decoratorsForClassChain.length == 1) + return decoratorsForClassChain[0]; + return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2)); + }; + exports2.deepDecoratorSearch = deepDecoratorSearch; + var directDecoratorSearch = (...classes) => { + const classDecorators = classes.map((clazz) => (0, exports2.getDecoratorsForClass)(clazz)); + if (classDecorators.length === 0) + return {}; + if (classDecorators.length === 1) + return classDecorators[0]; + return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2)); + }; + exports2.directDecoratorSearch = directDecoratorSearch; + var getDecoratorsForClass = (clazz) => { + let decoratorsForClass = decorators.get(clazz); + if (!decoratorsForClass) { + decoratorsForClass = {}; + decorators.set(clazz, decoratorsForClass); + } + return decoratorsForClass; + }; + exports2.getDecoratorsForClass = getDecoratorsForClass; + var decorateClass = (decorator) => (clazz) => { + const decoratorsForClass = (0, exports2.getDecoratorsForClass)(clazz); + let classDecorators = decoratorsForClass.class; + if (!classDecorators) { + classDecorators = []; + decoratorsForClass.class = classDecorators; + } + classDecorators.push(decorator); + return decorator(clazz); + }; + var decorateMember = (decorator) => (object, key, ...otherArgs) => { + var _a, _b, _c; + const decoratorTargetType = typeof object === "function" ? "static" : "instance"; + const decoratorType = typeof object[key] === "function" ? "method" : "property"; + const clazz = decoratorTargetType === "static" ? object : object.constructor; + const decoratorsForClass = (0, exports2.getDecoratorsForClass)(clazz); + const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {}; + decoratorsForClass[decoratorTargetType] = decoratorsForTargetType; + let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {}; + decoratorsForTargetType[decoratorType] = decoratorsForType; + let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : []; + decoratorsForType[key] = decoratorsForKey; + decoratorsForKey.push(decorator); + return decorator(object, key, ...otherArgs); + }; + var decorate = (decorator) => (...args) => { + if (args.length === 1) + return decorateClass(decorator)(args[0]); + return decorateMember(decorator)(...args); + }; + exports2.decorate = decorate; + } +}); + +// node_modules/ts-mixer/dist/cjs/mixins.js +var require_mixins = __commonJS({ + "node_modules/ts-mixer/dist/cjs/mixins.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.mix = exports2.Mixin = void 0; + var proxy_1 = require_proxy(); + var settings_1 = require_settings(); + var util_1 = require_util(); + var decorator_1 = require_decorator(); + var mixin_tracking_1 = require_mixin_tracking(); + function Mixin(...constructors) { + var _a, _b, _c; + const prototypes = constructors.map((constructor) => constructor.prototype); + const initFunctionName = settings_1.settings.initFunction; + if (initFunctionName !== null) { + const initFunctions = prototypes.map((proto) => proto[initFunctionName]).filter((func) => typeof func === "function"); + const combinedInitFunction = function(...args) { + for (let initFunction of initFunctions) + initFunction.apply(this, args); + }; + const extraProto = { [initFunctionName]: combinedInitFunction }; + prototypes.push(extraProto); + } + function MixedClass(...args) { + for (const constructor of constructors) + (0, util_1.copyProps)(this, new constructor(...args)); + if (initFunctionName !== null && typeof this[initFunctionName] === "function") + this[initFunctionName].apply(this, args); + } + MixedClass.prototype = settings_1.settings.prototypeStrategy === "copy" ? (0, util_1.hardMixProtos)(prototypes, MixedClass) : (0, proxy_1.softMixProtos)(prototypes, MixedClass); + Object.setPrototypeOf(MixedClass, settings_1.settings.staticsStrategy === "copy" ? (0, util_1.hardMixProtos)(constructors, null, ["prototype"]) : (0, proxy_1.proxyMix)(constructors, Function.prototype)); + let DecoratedMixedClass = MixedClass; + if (settings_1.settings.decoratorInheritance !== "none") { + const classDecorators = settings_1.settings.decoratorInheritance === "deep" ? (0, decorator_1.deepDecoratorSearch)(...constructors) : (0, decorator_1.directDecoratorSearch)(...constructors); + for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) { + const result = decorator(DecoratedMixedClass); + if (result) { + DecoratedMixedClass = result; + } + } + applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass); + applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype); + } + (0, mixin_tracking_1.registerMixins)(DecoratedMixedClass, constructors); + return DecoratedMixedClass; + } + exports2.Mixin = Mixin; + var applyPropAndMethodDecorators = (propAndMethodDecorators, target) => { + const propDecorators = propAndMethodDecorators.property; + const methodDecorators = propAndMethodDecorators.method; + if (propDecorators) + for (let key in propDecorators) + for (let decorator of propDecorators[key]) + decorator(target, key); + if (methodDecorators) + for (let key in methodDecorators) + for (let decorator of methodDecorators[key]) + decorator(target, key, Object.getOwnPropertyDescriptor(target, key)); + }; + var mix = (...ingredients) => (decoratedClass) => { + const mixedClass = Mixin(...ingredients.concat([decoratedClass])); + Object.defineProperty(mixedClass, "name", { + value: decoratedClass.name, + writable: false + }); + return mixedClass; + }; + exports2.mix = mix; + } +}); + +// node_modules/ts-mixer/dist/cjs/index.js +var require_cjs2 = __commonJS({ + "node_modules/ts-mixer/dist/cjs/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hasMixin = exports2.decorate = exports2.settings = exports2.mix = exports2.Mixin = void 0; + var mixins_1 = require_mixins(); + Object.defineProperty(exports2, "Mixin", { enumerable: true, get: function() { + return mixins_1.Mixin; + } }); + Object.defineProperty(exports2, "mix", { enumerable: true, get: function() { + return mixins_1.mix; + } }); + var settings_1 = require_settings(); + Object.defineProperty(exports2, "settings", { enumerable: true, get: function() { + return settings_1.settings; + } }); + var decorator_1 = require_decorator(); + Object.defineProperty(exports2, "decorate", { enumerable: true, get: function() { + return decorator_1.decorate; + } }); + var mixin_tracking_1 = require_mixin_tracking(); + Object.defineProperty(exports2, "hasMixin", { enumerable: true, get: function() { + return mixin_tracking_1.hasMixin; + } }); + } +}); + +// node_modules/@trezor/schema-utils/lib/custom-types/array-buffer.js +var require_array_buffer = __commonJS({ + "node_modules/@trezor/schema-utils/lib/custom-types/array-buffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ArrayBufferBuilder = void 0; + var typebox_1 = require_cjs(); + typebox_1.TypeRegistry.Set("ArrayBuffer", (_, value) => value instanceof ArrayBuffer); + var ArrayBufferBuilder = class extends typebox_1.JavaScriptTypeBuilder { + ArrayBuffer(options) { + return (0, typebox_1.CreateType)({ + [typebox_1.Kind]: "ArrayBuffer", + type: "ArrayBuffer" + }, options); + } + }; + exports2.ArrayBufferBuilder = ArrayBufferBuilder; + } +}); + +// node_modules/@trezor/schema-utils/lib/custom-types/buffer.js +var require_buffer = __commonJS({ + "node_modules/@trezor/schema-utils/lib/custom-types/buffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BufferBuilder = void 0; + var typebox_1 = require_cjs(); + typebox_1.TypeRegistry.Set("Buffer", (_, value) => value instanceof Buffer); + var BufferBuilder = class extends typebox_1.JavaScriptTypeBuilder { + Buffer(options) { + return (0, typebox_1.CreateType)({ + [typebox_1.Kind]: "Buffer", + type: "Buffer" + }, options); + } + }; + exports2.BufferBuilder = BufferBuilder; + } +}); + +// node_modules/@trezor/schema-utils/lib/custom-types/keyof-enum.js +var require_keyof_enum = __commonJS({ + "node_modules/@trezor/schema-utils/lib/custom-types/keyof-enum.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.KeyofEnumBuilder = void 0; + var typebox_1 = require_cjs(); + var KeyofEnumBuilder = class extends typebox_1.JavaScriptTypeBuilder { + KeyOfEnum(schema, options) { + const keys = Object.keys(schema).map((key) => this.Literal(key)); + return this.Union(keys, { + ...options, + [typebox_1.Hint]: "KeyOfEnum" + }); + } + Enum(schema, options) { + const anyOf = Object.entries(schema).filter(([key, _value]) => typeof key === "string" || !isNaN(key)).map(([key, value]) => this.Literal(value, { + $id: key + })); + return this.Union(anyOf, { + ...options, + [typebox_1.Hint]: "Enum" + }); + } + }; + exports2.KeyofEnumBuilder = KeyofEnumBuilder; + } +}); + +// node_modules/@trezor/schema-utils/lib/custom-types/uint.js +var require_uint = __commonJS({ + "node_modules/@trezor/schema-utils/lib/custom-types/uint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UintBuilder = void 0; + var typebox_1 = require_cjs(); + typebox_1.TypeRegistry.Set("Uint", (schema, value) => { + if (typeof value !== "string" && typeof value !== "number") { + return false; + } + if (typeof value === "number" && !Number.isSafeInteger(value) || !/^(?:[1-9]\d*|\d)$/.test(value.toString().replace(/^-/, schema.allowNegative ? "" : "-"))) { + return false; + } + return true; + }); + var UintBuilder = class extends typebox_1.JavaScriptTypeBuilder { + Uint(options) { + return (0, typebox_1.CreateType)({ + [typebox_1.Kind]: "Uint", + type: "Uint" + }, options); + } + }; + exports2.UintBuilder = UintBuilder; + } +}); + +// node_modules/@trezor/schema-utils/lib/custom-types/index.js +var require_custom_types = __commonJS({ + "node_modules/@trezor/schema-utils/lib/custom-types/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UintBuilder = exports2.KeyofEnumBuilder = exports2.BufferBuilder = exports2.ArrayBufferBuilder = void 0; + var array_buffer_1 = require_array_buffer(); + Object.defineProperty(exports2, "ArrayBufferBuilder", { + enumerable: true, + get: function() { + return array_buffer_1.ArrayBufferBuilder; + } + }); + var buffer_1 = require_buffer(); + Object.defineProperty(exports2, "BufferBuilder", { + enumerable: true, + get: function() { + return buffer_1.BufferBuilder; + } + }); + var keyof_enum_1 = require_keyof_enum(); + Object.defineProperty(exports2, "KeyofEnumBuilder", { + enumerable: true, + get: function() { + return keyof_enum_1.KeyofEnumBuilder; + } + }); + var uint_1 = require_uint(); + Object.defineProperty(exports2, "UintBuilder", { + enumerable: true, + get: function() { + return uint_1.UintBuilder; + } + }); + } +}); + +// node_modules/@trezor/schema-utils/lib/errors.js +var require_errors4 = __commonJS({ + "node_modules/@trezor/schema-utils/lib/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.InvalidParameter = void 0; + var InvalidParameter = class extends Error { + field; + type; + constructor(reason, field, type, value) { + let message = `Invalid parameter`; + message += ` "${field.substring(1)}"`; + message += ` (= ${JSON.stringify(value)})`; + message += `: ${reason.replace(/'/g, '"')}`; + super(message); + this.name = "InvalidParameter"; + this.field = field; + this.type = type; + } + }; + exports2.InvalidParameter = InvalidParameter; + } +}); + +// node_modules/@trezor/schema-utils/lib/utils.js +var require_utils = __commonJS({ + "node_modules/@trezor/schema-utils/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.setDeepValue = setDeepValue; + exports2.getDeepValue = getDeepValue; + function setDeepValue(obj, [prop, ...path2], value) { + if (!path2.length) { + obj[prop] = value; + } else { + if (!(prop in obj)) obj[prop] = {}; + setDeepValue(obj[prop], path2, value); + } + } + function getDeepValue(obj, [prop, ...path2]) { + if (!path2.length) { + return obj[prop]; + } else { + if (!(prop in obj)) return void 0; + return getDeepValue(obj[prop], path2); + } + } + } +}); + +// node_modules/@trezor/schema-utils/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/@trezor/schema-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CloneType = exports2.Optional = exports2.Type = void 0; + exports2.Validate = Validate; + exports2.Assert = Assert; + exports2.AssertWeak = AssertWeak; + var typebox_1 = require_cjs(); + Object.defineProperty(exports2, "CloneType", { + enumerable: true, + get: function() { + return typebox_1.CloneType; + } + }); + Object.defineProperty(exports2, "Optional", { + enumerable: true, + get: function() { + return typebox_1.Optional; + } + }); + var errors_1 = require_errors3(); + var ts_mixer_1 = require_cjs2(); + var custom_types_1 = require_custom_types(); + var errors_2 = require_errors4(); + var utils_1 = require_utils(); + var CustomTypeBuilder = class extends (0, ts_mixer_1.Mixin)(typebox_1.JavaScriptTypeBuilder, custom_types_1.ArrayBufferBuilder, custom_types_1.BufferBuilder, custom_types_1.KeyofEnumBuilder, custom_types_1.UintBuilder) { + }; + function Validate(schema, value) { + try { + Assert(schema, value); + return true; + } catch { + return false; + } + } + function FindErrorInUnion(error) { + const currentValue = error.value; + const unionMembers = error.schema.anyOf; + const hasValidMember = unionMembers.find((unionSchema) => Validate(unionSchema, currentValue)); + if (!hasValidMember) { + const possibleMatchesByLiterals = unionMembers.filter((unionSchema) => { + if (unionSchema[typebox_1.Kind] !== "Object") return false; + return !Object.entries(unionSchema.properties).find(([property, propertySchema]) => propertySchema.const && propertySchema.const !== currentValue[property]); + }); + if (possibleMatchesByLiterals.length === 1) { + Assert(possibleMatchesByLiterals[0], currentValue); + } else if (possibleMatchesByLiterals.length > 1) { + const errorsOfPossibleMatches = possibleMatchesByLiterals.map((matchSchema) => ({ + schema: matchSchema, + errors: [...(0, errors_1.Errors)(matchSchema, currentValue)] + })); + const sortedErrors = errorsOfPossibleMatches.sort((a, b) => a.errors.length - b.errors.length); + const [bestMatch] = sortedErrors; + Assert(bestMatch.schema, currentValue); + } + throw new errors_2.InvalidParameter(error.message, error.path, error.type, error.value); + } + } + function Assert(schema, value) { + const errors = [...(0, errors_1.Errors)(schema, value)]; + let [error] = errors; + while (error) { + if (error.path === "/" && errors.length > 1) { + } else if (error.value == null && error.schema[typebox_1.OptionalKind] === "Optional") { + } else if (error.type === errors_1.ValueErrorType.Union) { + FindErrorInUnion(error); + } else if (error.type === errors_1.ValueErrorType.Number && typeof error.value === "string") { + const currentValue = error.value; + const parsedNumber = Number(currentValue); + if (!Number.isNaN(parsedNumber) && currentValue === parsedNumber.toString()) { + const pathParts = error.path.slice(1).split("/"); + (0, utils_1.setDeepValue)(value, pathParts, parsedNumber); + } else { + throw new errors_2.InvalidParameter(error.message, error.path, error.type, error.value); + } + } else { + throw new errors_2.InvalidParameter(error.message, error.path, error.type, error.value); + } + errors.shift(); + [error] = errors; + } + } + function AssertWeak(schema, value) { + try { + Assert(schema, value); + } catch (e) { + if (e instanceof errors_2.InvalidParameter) { + if (e.type === errors_1.ValueErrorType.ObjectRequiredProperty) { + throw e; + } + console.warn("Method params validation failed", e); + } else { + throw e; + } + } + } + exports2.Type = new CustomTypeBuilder(); + } +}); + +// node_modules/@trezor/connect/lib/constants/nem.js +var require_nem = __commonJS({ + "node_modules/@trezor/connect/lib/constants/nem.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EnumTxVersion = exports2.TxVersion = exports2.EnumTxType = exports2.TxType = exports2.EnumNetworks = exports2.Networks = void 0; + var schema_utils_1 = require_lib2(); + var Networks; + (function(Networks2) { + Networks2[Networks2["mainnet"] = 104] = "mainnet"; + Networks2[Networks2["testnet"] = 152] = "testnet"; + Networks2[Networks2["mijin"] = 96] = "mijin"; + })(Networks || (exports2.Networks = Networks = {})); + exports2.EnumNetworks = schema_utils_1.Type.Enum(Networks); + var TxType; + (function(TxType2) { + TxType2[TxType2["TRANSFER"] = 257] = "TRANSFER"; + TxType2[TxType2["COSIGNING"] = 258] = "COSIGNING"; + TxType2[TxType2["IMPORTANCE_TRANSFER"] = 2049] = "IMPORTANCE_TRANSFER"; + TxType2[TxType2["AGGREGATE_MODIFICATION"] = 4097] = "AGGREGATE_MODIFICATION"; + TxType2[TxType2["MULTISIG_SIGNATURE"] = 4098] = "MULTISIG_SIGNATURE"; + TxType2[TxType2["MULTISIG"] = 4100] = "MULTISIG"; + TxType2[TxType2["PROVISION_NAMESPACE"] = 8193] = "PROVISION_NAMESPACE"; + TxType2[TxType2["MOSAIC_CREATION"] = 16385] = "MOSAIC_CREATION"; + TxType2[TxType2["SUPPLY_CHANGE"] = 16386] = "SUPPLY_CHANGE"; + })(TxType || (exports2.TxType = TxType = {})); + exports2.EnumTxType = schema_utils_1.Type.Enum(TxType); + var TxVersion; + (function(TxVersion2) { + TxVersion2[TxVersion2["mainnet"] = 1744830464] = "mainnet"; + TxVersion2[TxVersion2["testnet"] = -1744830464] = "testnet"; + TxVersion2[TxVersion2["mijin"] = 1610612736] = "mijin"; + })(TxVersion || (exports2.TxVersion = TxVersion = {})); + exports2.EnumTxVersion = schema_utils_1.Type.Enum(TxVersion); + } +}); + +// node_modules/@trezor/connect/lib/constants/firmware.js +var require_firmware = __commonJS({ + "node_modules/@trezor/connect/lib/constants/firmware.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.REVISION_CHECK_RETRIABLE_ERRORS = exports2.HASH_CHECK_RETRIABLE_ERRORS = exports2.HASH_CHECK_MAX_ATTEMPTS = void 0; + exports2.HASH_CHECK_MAX_ATTEMPTS = 3; + exports2.HASH_CHECK_RETRIABLE_ERRORS = ["other-error"]; + exports2.REVISION_CHECK_RETRIABLE_ERRORS = ["cannot-perform-check-offline", "other-error"]; + } +}); + +// node_modules/@trezor/connect/lib/constants/utxo.js +var require_utxo = __commonJS({ + "node_modules/@trezor/connect/lib/constants/utxo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DEFAULT_SORTING_STRATEGY = void 0; + exports2.DEFAULT_SORTING_STRATEGY = "random"; + } +}); + +// node_modules/long/umd/index.js +var require_umd = __commonJS({ + "node_modules/long/umd/index.js"(exports2, module2) { + var Long = function(exports3) { + "use strict"; + Object.defineProperty(exports3, "__esModule", { + value: true + }); + exports3.default = void 0; + var wasm = null; + try { + wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports; + } catch (e) { + } + function Long2(low, high, unsigned) { + this.low = low | 0; + this.high = high | 0; + this.unsigned = !!unsigned; + } + Long2.prototype.__isLong__; + Object.defineProperty(Long2.prototype, "__isLong__", { + value: true + }); + function isLong(obj) { + return (obj && obj["__isLong__"]) === true; + } + function ctz32(value) { + var c = Math.clz32(value & -value); + return value ? 31 - c : c; + } + Long2.isLong = isLong; + var INT_CACHE = {}; + var UINT_CACHE = {}; + function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = 0 <= value && value < 256) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) return cachedObj; + } + obj = fromBits(value, 0, true); + if (cache) UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = -128 <= value && value < 128) { + cachedObj = INT_CACHE[value]; + if (cachedObj) return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) INT_CACHE[value] = obj; + return obj; + } + } + Long2.fromInt = fromInt; + function fromNumber(value, unsigned) { + if (isNaN(value)) return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) return UZERO; + if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE; + } + if (value < 0) return fromNumber(-value, unsigned).neg(); + return fromBits(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned); + } + Long2.fromNumber = fromNumber; + function fromBits(lowBits, highBits, unsigned) { + return new Long2(lowBits, highBits, unsigned); + } + Long2.fromBits = fromBits; + var pow_dbl = Math.pow; + function fromString(str, unsigned, radix) { + if (str.length === 0) throw Error("empty string"); + if (typeof unsigned === "number") { + radix = unsigned; + unsigned = false; + } else { + unsigned = !!unsigned; + } + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") return unsigned ? UZERO : ZERO; + radix = radix || 10; + if (radix < 2 || 36 < radix) throw RangeError("radix"); + var p; + if ((p = str.indexOf("-")) > 0) throw Error("interior hyphen"); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + var radixToPower = fromNumber(pow_dbl(radix, 8)); + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; + } + Long2.fromString = fromString; + function fromValue(val, unsigned) { + if (typeof val === "number") return fromNumber(val, unsigned); + if (typeof val === "string") return fromString(val, unsigned); + return fromBits(val.low, val.high, typeof unsigned === "boolean" ? unsigned : val.unsigned); + } + Long2.fromValue = fromValue; + var TWO_PWR_16_DBL = 1 << 16; + var TWO_PWR_24_DBL = 1 << 24; + var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + var ZERO = fromInt(0); + Long2.ZERO = ZERO; + var UZERO = fromInt(0, true); + Long2.UZERO = UZERO; + var ONE = fromInt(1); + Long2.ONE = ONE; + var UONE = fromInt(1, true); + Long2.UONE = UONE; + var NEG_ONE = fromInt(-1); + Long2.NEG_ONE = NEG_ONE; + var MAX_VALUE = fromBits(4294967295 | 0, 2147483647 | 0, false); + Long2.MAX_VALUE = MAX_VALUE; + var MAX_UNSIGNED_VALUE = fromBits(4294967295 | 0, 4294967295 | 0, true); + Long2.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + var MIN_VALUE = fromBits(0, 2147483648 | 0, false); + Long2.MIN_VALUE = MIN_VALUE; + var LongPrototype = Long2.prototype; + LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; + }; + LongPrototype.toNumber = function toNumber() { + if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); + }; + LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) throw RangeError("radix"); + if (this.isZero()) return "0"; + if (this.isNegative()) { + if (this.eq(MIN_VALUE)) { + var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else return "-" + this.neg().toString(radix); + } + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this; + var result = ""; + while (true) { + var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) return digits + result; + else { + while (digits.length < 6) digits = "0" + digits; + result = "" + digits + result; + } + } + }; + LongPrototype.getHighBits = function getHighBits() { + return this.high; + }; + LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; + }; + LongPrototype.getLowBits = function getLowBits() { + return this.low; + }; + LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; + }; + LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break; + return this.high != 0 ? bit + 33 : bit + 1; + }; + LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; + }; + LongPrototype.eqz = LongPrototype.isZero; + LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; + }; + LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; + }; + LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; + }; + LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; + }; + LongPrototype.equals = function equals(other) { + if (!isLong(other)) other = fromValue(other); + if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false; + return this.high === other.high && this.low === other.low; + }; + LongPrototype.eq = LongPrototype.equals; + LongPrototype.notEquals = function notEquals(other) { + return !this.eq( + /* validates */ + other + ); + }; + LongPrototype.neq = LongPrototype.notEquals; + LongPrototype.ne = LongPrototype.notEquals; + LongPrototype.lessThan = function lessThan(other) { + return this.comp( + /* validates */ + other + ) < 0; + }; + LongPrototype.lt = LongPrototype.lessThan; + LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp( + /* validates */ + other + ) <= 0; + }; + LongPrototype.lte = LongPrototype.lessThanOrEqual; + LongPrototype.le = LongPrototype.lessThanOrEqual; + LongPrototype.greaterThan = function greaterThan(other) { + return this.comp( + /* validates */ + other + ) > 0; + }; + LongPrototype.gt = LongPrototype.greaterThan; + LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp( + /* validates */ + other + ) >= 0; + }; + LongPrototype.gte = LongPrototype.greaterThanOrEqual; + LongPrototype.ge = LongPrototype.greaterThanOrEqual; + LongPrototype.compare = function compare2(other) { + if (!isLong(other)) other = fromValue(other); + if (this.eq(other)) return 0; + var thisNeg = this.isNegative(), otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) return -1; + if (!thisNeg && otherNeg) return 1; + if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; + return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1; + }; + LongPrototype.comp = LongPrototype.compare; + LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE; + return this.not().add(ONE); + }; + LongPrototype.neg = LongPrototype.negate; + LongPrototype.add = function add2(addend) { + if (!isLong(addend)) addend = fromValue(addend); + var a48 = this.high >>> 16; + var a32 = this.high & 65535; + var a16 = this.low >>> 16; + var a00 = this.low & 65535; + var b48 = addend.high >>> 16; + var b32 = addend.high & 65535; + var b16 = addend.low >>> 16; + var b00 = addend.low & 65535; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 65535; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 65535; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 65535; + c48 += a48 + b48; + c48 &= 65535; + return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); + }; + LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); + }; + LongPrototype.sub = LongPrototype.subtract; + LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) return this; + if (!isLong(multiplier)) multiplier = fromValue(multiplier); + if (wasm) { + var low = wasm["mul"](this.low, this.high, multiplier.low, multiplier.high); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO; + if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO; + if (this.isNegative()) { + if (multiplier.isNegative()) return this.neg().mul(multiplier.neg()); + else return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + var a48 = this.high >>> 16; + var a32 = this.high & 65535; + var a16 = this.low >>> 16; + var a00 = this.low & 65535; + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 65535; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 65535; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 65535; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 65535; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 65535; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 65535; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 65535; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 65535; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 65535; + return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); + }; + LongPrototype.mul = LongPrototype.multiply; + LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) divisor = fromValue(divisor); + if (divisor.isZero()) throw Error("division by zero"); + if (wasm) { + if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) { + return this; + } + var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])(this.low, this.high, divisor.low, divisor.high); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + if (this.isZero()) return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) return MIN_VALUE; + else if (divisor.eq(MIN_VALUE)) return ONE; + else { + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + if (!divisor.unsigned) divisor = divisor.toUnsigned(); + if (divisor.gt(this)) return UZERO; + if (divisor.gt(this.shru(1))) + return UONE; + res = UZERO; + } + rem = this; + while (rem.gte(divisor)) { + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48), approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + if (approxRes.isZero()) approxRes = ONE; + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; + }; + LongPrototype.div = LongPrototype.divide; + LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) divisor = fromValue(divisor); + if (wasm) { + var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])(this.low, this.high, divisor.low, divisor.high); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + return this.sub(this.div(divisor).mul(divisor)); + }; + LongPrototype.mod = LongPrototype.modulo; + LongPrototype.rem = LongPrototype.modulo; + LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); + }; + LongPrototype.countLeadingZeros = function countLeadingZeros() { + return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32; + }; + LongPrototype.clz = LongPrototype.countLeadingZeros; + LongPrototype.countTrailingZeros = function countTrailingZeros() { + return this.low ? ctz32(this.low) : ctz32(this.high) + 32; + }; + LongPrototype.ctz = LongPrototype.countTrailingZeros; + LongPrototype.and = function and(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); + }; + LongPrototype.or = function or(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); + }; + LongPrototype.xor = function xor(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); + }; + LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) return fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned); + else return fromBits(0, this.low << numBits - 32, this.unsigned); + }; + LongPrototype.shl = LongPrototype.shiftLeft; + LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned); + else return fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned); + }; + LongPrototype.shr = LongPrototype.shiftRight; + LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned); + if (numBits === 32) return fromBits(this.high, 0, this.unsigned); + return fromBits(this.high >>> numBits - 32, 0, this.unsigned); + }; + LongPrototype.shru = LongPrototype.shiftRightUnsigned; + LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; + LongPrototype.rotateLeft = function rotateLeft(numBits) { + var b; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b = 32 - numBits; + return fromBits(this.low << numBits | this.high >>> b, this.high << numBits | this.low >>> b, this.unsigned); + } + numBits -= 32; + b = 32 - numBits; + return fromBits(this.high << numBits | this.low >>> b, this.low << numBits | this.high >>> b, this.unsigned); + }; + LongPrototype.rotl = LongPrototype.rotateLeft; + LongPrototype.rotateRight = function rotateRight(numBits) { + var b; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b = 32 - numBits; + return fromBits(this.high << b | this.low >>> numBits, this.low << b | this.high >>> numBits, this.unsigned); + } + numBits -= 32; + b = 32 - numBits; + return fromBits(this.low << b | this.high >>> numBits, this.high << b | this.low >>> numBits, this.unsigned); + }; + LongPrototype.rotr = LongPrototype.rotateRight; + LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) return this; + return fromBits(this.low, this.high, false); + }; + LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) return this; + return fromBits(this.low, this.high, true); + }; + LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); + }; + LongPrototype.toBytesLE = function toBytesLE() { + var hi = this.high, lo = this.low; + return [lo & 255, lo >>> 8 & 255, lo >>> 16 & 255, lo >>> 24, hi & 255, hi >>> 8 & 255, hi >>> 16 & 255, hi >>> 24]; + }; + LongPrototype.toBytesBE = function toBytesBE() { + var hi = this.high, lo = this.low; + return [hi >>> 24, hi >>> 16 & 255, hi >>> 8 & 255, hi & 255, lo >>> 24, lo >>> 16 & 255, lo >>> 8 & 255, lo & 255]; + }; + Long2.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long2.fromBytesLE(bytes, unsigned) : Long2.fromBytesBE(bytes, unsigned); + }; + Long2.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long2(bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, unsigned); + }; + Long2.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long2(bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], unsigned); + }; + var _default = Long2; + exports3.default = _default; + return "default" in exports3 ? exports3.default : exports3; + }({}); + if (typeof define === "function" && define.amd) define([], function() { + return Long; + }); + else if (typeof module2 === "object" && typeof exports2 === "object") module2.exports = Long; + } +}); + +// node_modules/@protobufjs/aspromise/index.js +var require_aspromise = __commonJS({ + "node_modules/@protobufjs/aspromise/index.js"(exports2, module2) { + "use strict"; + module2.exports = asPromise; + function asPromise(fn, ctx) { + var params = new Array(arguments.length - 1), offset = 0, index = 2, pending = true; + while (index < arguments.length) + params[offset++] = arguments[index++]; + return new Promise(function executor(resolve, reject) { + params[offset] = function callback(err2) { + if (pending) { + pending = false; + if (err2) + reject(err2); + else { + var params2 = new Array(arguments.length - 1), offset2 = 0; + while (offset2 < params2.length) + params2[offset2++] = arguments[offset2]; + resolve.apply(null, params2); + } + } + }; + try { + fn.apply(ctx || null, params); + } catch (err2) { + if (pending) { + pending = false; + reject(err2); + } + } + }); + } + } +}); + +// node_modules/@protobufjs/base64/index.js +var require_base64 = __commonJS({ + "node_modules/@protobufjs/base64/index.js"(exports2) { + "use strict"; + var base64 = exports2; + base64.length = function length(string) { + var p = string.length; + if (!p) + return 0; + var n = 0; + while (--p % 4 > 1 && string.charAt(p) === "=") + ++n; + return Math.ceil(string.length * 3) / 4 - n; + }; + var b64 = new Array(64); + var s64 = new Array(123); + for (i = 0; i < 64; ) + s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++; + var i; + base64.encode = function encode(buffer, start, end) { + var parts = null, chunk = []; + var i2 = 0, j = 0, t; + while (start < end) { + var b = buffer[start++]; + switch (j) { + case 0: + chunk[i2++] = b64[b >> 2]; + t = (b & 3) << 4; + j = 1; + break; + case 1: + chunk[i2++] = b64[t | b >> 4]; + t = (b & 15) << 2; + j = 2; + break; + case 2: + chunk[i2++] = b64[t | b >> 6]; + chunk[i2++] = b64[b & 63]; + j = 0; + break; + } + if (i2 > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i2 = 0; + } + } + if (j) { + chunk[i2++] = b64[t]; + chunk[i2++] = 61; + if (j === 1) + chunk[i2++] = 61; + } + if (parts) { + if (i2) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i2))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i2)); + }; + var invalidEncoding = "invalid encoding"; + base64.decode = function decode(string, buffer, offset) { + var start = offset; + var j = 0, t; + for (var i2 = 0; i2 < string.length; ) { + var c = string.charCodeAt(i2++); + if (c === 61 && j > 1) + break; + if ((c = s64[c]) === void 0) + throw Error(invalidEncoding); + switch (j) { + case 0: + t = c; + j = 1; + break; + case 1: + buffer[offset++] = t << 2 | (c & 48) >> 4; + t = c; + j = 2; + break; + case 2: + buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2; + t = c; + j = 3; + break; + case 3: + buffer[offset++] = (t & 3) << 6 | c; + j = 0; + break; + } + } + if (j === 1) + throw Error(invalidEncoding); + return offset - start; + }; + base64.test = function test(string) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string); + }; + } +}); + +// node_modules/@protobufjs/eventemitter/index.js +var require_eventemitter = __commonJS({ + "node_modules/@protobufjs/eventemitter/index.js"(exports2, module2) { + "use strict"; + module2.exports = EventEmitter; + function EventEmitter() { + this._listeners = {}; + } + EventEmitter.prototype.on = function on(evt, fn, ctx) { + (this._listeners[evt] || (this._listeners[evt] = [])).push({ + fn, + ctx: ctx || this + }); + return this; + }; + EventEmitter.prototype.off = function off(evt, fn) { + if (evt === void 0) + this._listeners = {}; + else { + if (fn === void 0) + this._listeners[evt] = []; + else { + var listeners = this._listeners[evt]; + for (var i = 0; i < listeners.length; ) + if (listeners[i].fn === fn) + listeners.splice(i, 1); + else + ++i; + } + } + return this; + }; + EventEmitter.prototype.emit = function emit(evt) { + var listeners = this._listeners[evt]; + if (listeners) { + var args = [], i = 1; + for (; i < arguments.length; ) + args.push(arguments[i++]); + for (i = 0; i < listeners.length; ) + listeners[i].fn.apply(listeners[i++].ctx, args); + } + return this; + }; + } +}); + +// node_modules/@protobufjs/float/index.js +var require_float = __commonJS({ + "node_modules/@protobufjs/float/index.js"(exports2, module2) { + "use strict"; + module2.exports = factory(factory); + function factory(exports3) { + if (typeof Float32Array !== "undefined") (function() { + var f32 = new Float32Array([-0]), f8b = new Uint8Array(f32.buffer), le = f8b[3] === 128; + function writeFloat_f32_cpy(val, buf, pos) { + f32[0] = val; + buf[pos] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + } + function writeFloat_f32_rev(val, buf, pos) { + f32[0] = val; + buf[pos] = f8b[3]; + buf[pos + 1] = f8b[2]; + buf[pos + 2] = f8b[1]; + buf[pos + 3] = f8b[0]; + } + exports3.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev; + exports3.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy; + function readFloat_f32_cpy(buf, pos) { + f8b[0] = buf[pos]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + return f32[0]; + } + function readFloat_f32_rev(buf, pos) { + f8b[3] = buf[pos]; + f8b[2] = buf[pos + 1]; + f8b[1] = buf[pos + 2]; + f8b[0] = buf[pos + 3]; + return f32[0]; + } + exports3.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev; + exports3.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy; + })(); + else (function() { + function writeFloat_ieee754(writeUint, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) + writeUint(1 / val > 0 ? ( + /* positive */ + 0 + ) : ( + /* negative 0 */ + 2147483648 + ), buf, pos); + else if (isNaN(val)) + writeUint(2143289344, buf, pos); + else if (val > 34028234663852886e22) + writeUint((sign << 31 | 2139095040) >>> 0, buf, pos); + else if (val < 11754943508222875e-54) + writeUint((sign << 31 | Math.round(val / 1401298464324817e-60)) >>> 0, buf, pos); + else { + var exponent = Math.floor(Math.log(val) / Math.LN2), mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607; + writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos); + } + } + exports3.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE); + exports3.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE); + function readFloat_ieee754(readUint, buf, pos) { + var uint = readUint(buf, pos), sign = (uint >> 31) * 2 + 1, exponent = uint >>> 23 & 255, mantissa = uint & 8388607; + return exponent === 255 ? mantissa ? NaN : sign * Infinity : exponent === 0 ? sign * 1401298464324817e-60 * mantissa : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608); + } + exports3.readFloatLE = readFloat_ieee754.bind(null, readUintLE); + exports3.readFloatBE = readFloat_ieee754.bind(null, readUintBE); + })(); + if (typeof Float64Array !== "undefined") (function() { + var f64 = new Float64Array([-0]), f8b = new Uint8Array(f64.buffer), le = f8b[7] === 128; + function writeDouble_f64_cpy(val, buf, pos) { + f64[0] = val; + buf[pos] = f8b[0]; + buf[pos + 1] = f8b[1]; + buf[pos + 2] = f8b[2]; + buf[pos + 3] = f8b[3]; + buf[pos + 4] = f8b[4]; + buf[pos + 5] = f8b[5]; + buf[pos + 6] = f8b[6]; + buf[pos + 7] = f8b[7]; + } + function writeDouble_f64_rev(val, buf, pos) { + f64[0] = val; + buf[pos] = f8b[7]; + buf[pos + 1] = f8b[6]; + buf[pos + 2] = f8b[5]; + buf[pos + 3] = f8b[4]; + buf[pos + 4] = f8b[3]; + buf[pos + 5] = f8b[2]; + buf[pos + 6] = f8b[1]; + buf[pos + 7] = f8b[0]; + } + exports3.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev; + exports3.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy; + function readDouble_f64_cpy(buf, pos) { + f8b[0] = buf[pos]; + f8b[1] = buf[pos + 1]; + f8b[2] = buf[pos + 2]; + f8b[3] = buf[pos + 3]; + f8b[4] = buf[pos + 4]; + f8b[5] = buf[pos + 5]; + f8b[6] = buf[pos + 6]; + f8b[7] = buf[pos + 7]; + return f64[0]; + } + function readDouble_f64_rev(buf, pos) { + f8b[7] = buf[pos]; + f8b[6] = buf[pos + 1]; + f8b[5] = buf[pos + 2]; + f8b[4] = buf[pos + 3]; + f8b[3] = buf[pos + 4]; + f8b[2] = buf[pos + 5]; + f8b[1] = buf[pos + 6]; + f8b[0] = buf[pos + 7]; + return f64[0]; + } + exports3.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev; + exports3.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy; + })(); + else (function() { + function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) { + var sign = val < 0 ? 1 : 0; + if (sign) + val = -val; + if (val === 0) { + writeUint(0, buf, pos + off0); + writeUint(1 / val > 0 ? ( + /* positive */ + 0 + ) : ( + /* negative 0 */ + 2147483648 + ), buf, pos + off1); + } else if (isNaN(val)) { + writeUint(0, buf, pos + off0); + writeUint(2146959360, buf, pos + off1); + } else if (val > 17976931348623157e292) { + writeUint(0, buf, pos + off0); + writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1); + } else { + var mantissa; + if (val < 22250738585072014e-324) { + mantissa = val / 5e-324; + writeUint(mantissa >>> 0, buf, pos + off0); + writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1); + } else { + var exponent = Math.floor(Math.log(val) / Math.LN2); + if (exponent === 1024) + exponent = 1023; + mantissa = val * Math.pow(2, -exponent); + writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0); + writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1); + } + } + } + exports3.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4); + exports3.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0); + function readDouble_ieee754(readUint, off0, off1, buf, pos) { + var lo = readUint(buf, pos + off0), hi = readUint(buf, pos + off1); + var sign = (hi >> 31) * 2 + 1, exponent = hi >>> 20 & 2047, mantissa = 4294967296 * (hi & 1048575) + lo; + return exponent === 2047 ? mantissa ? NaN : sign * Infinity : exponent === 0 ? sign * 5e-324 * mantissa : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496); + } + exports3.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4); + exports3.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0); + })(); + return exports3; + } + function writeUintLE(val, buf, pos) { + buf[pos] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; + } + function writeUintBE(val, buf, pos) { + buf[pos] = val >>> 24; + buf[pos + 1] = val >>> 16 & 255; + buf[pos + 2] = val >>> 8 & 255; + buf[pos + 3] = val & 255; + } + function readUintLE(buf, pos) { + return (buf[pos] | buf[pos + 1] << 8 | buf[pos + 2] << 16 | buf[pos + 3] << 24) >>> 0; + } + function readUintBE(buf, pos) { + return (buf[pos] << 24 | buf[pos + 1] << 16 | buf[pos + 2] << 8 | buf[pos + 3]) >>> 0; + } + } +}); + +// node_modules/@protobufjs/inquire/index.js +var require_inquire = __commonJS({ + "node_modules/@protobufjs/inquire/index.js"(exports, module) { + "use strict"; + module.exports = inquire; + function inquire(moduleName) { + try { + var mod = eval("quire".replace(/^/, "re"))(moduleName); + if (mod && (mod.length || Object.keys(mod).length)) + return mod; + } catch (e) { + } + return null; + } + } +}); + +// node_modules/@protobufjs/utf8/index.js +var require_utf8 = __commonJS({ + "node_modules/@protobufjs/utf8/index.js"(exports2) { + "use strict"; + var utf8 = exports2; + utf8.length = function utf8_length(string) { + var len = 0, c = 0; + for (var i = 0; i < string.length; ++i) { + c = string.charCodeAt(i); + if (c < 128) + len += 1; + else if (c < 2048) + len += 2; + else if ((c & 64512) === 55296 && (string.charCodeAt(i + 1) & 64512) === 56320) { + ++i; + len += 4; + } else + len += 3; + } + return len; + }; + utf8.read = function utf8_read(buffer, start, end) { + var len = end - start; + if (len < 1) + return ""; + var parts = null, chunk = [], i = 0, t; + while (start < end) { + t = buffer[start++]; + if (t < 128) + chunk[i++] = t; + else if (t > 191 && t < 224) + chunk[i++] = (t & 31) << 6 | buffer[start++] & 63; + else if (t > 239 && t < 365) { + t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 65536; + chunk[i++] = 55296 + (t >> 10); + chunk[i++] = 56320 + (t & 1023); + } else + chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63; + if (i > 8191) { + (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk)); + i = 0; + } + } + if (parts) { + if (i) + parts.push(String.fromCharCode.apply(String, chunk.slice(0, i))); + return parts.join(""); + } + return String.fromCharCode.apply(String, chunk.slice(0, i)); + }; + utf8.write = function utf8_write(string, buffer, offset) { + var start = offset, c1, c2; + for (var i = 0; i < string.length; ++i) { + c1 = string.charCodeAt(i); + if (c1 < 128) { + buffer[offset++] = c1; + } else if (c1 < 2048) { + buffer[offset++] = c1 >> 6 | 192; + buffer[offset++] = c1 & 63 | 128; + } else if ((c1 & 64512) === 55296 && ((c2 = string.charCodeAt(i + 1)) & 64512) === 56320) { + c1 = 65536 + ((c1 & 1023) << 10) + (c2 & 1023); + ++i; + buffer[offset++] = c1 >> 18 | 240; + buffer[offset++] = c1 >> 12 & 63 | 128; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } else { + buffer[offset++] = c1 >> 12 | 224; + buffer[offset++] = c1 >> 6 & 63 | 128; + buffer[offset++] = c1 & 63 | 128; + } + } + return offset - start; + }; + } +}); + +// node_modules/@protobufjs/pool/index.js +var require_pool = __commonJS({ + "node_modules/@protobufjs/pool/index.js"(exports2, module2) { + "use strict"; + module2.exports = pool; + function pool(alloc, slice, size) { + var SIZE = size || 8192; + var MAX = SIZE >>> 1; + var slab = null; + var offset = SIZE; + return function pool_alloc(size2) { + if (size2 < 1 || size2 > MAX) + return alloc(size2); + if (offset + size2 > SIZE) { + slab = alloc(SIZE); + offset = 0; + } + var buf = slice.call(slab, offset, offset += size2); + if (offset & 7) + offset = (offset | 7) + 1; + return buf; + }; + } + } +}); + +// node_modules/protobufjs/src/util/longbits.js +var require_longbits = __commonJS({ + "node_modules/protobufjs/src/util/longbits.js"(exports2, module2) { + "use strict"; + module2.exports = LongBits; + var util = require_minimal(); + function LongBits(lo, hi) { + this.lo = lo >>> 0; + this.hi = hi >>> 0; + } + var zero = LongBits.zero = new LongBits(0, 0); + zero.toNumber = function() { + return 0; + }; + zero.zzEncode = zero.zzDecode = function() { + return this; + }; + zero.length = function() { + return 1; + }; + var zeroHash = LongBits.zeroHash = "\0\0\0\0\0\0\0\0"; + LongBits.fromNumber = function fromNumber(value) { + if (value === 0) + return zero; + var sign = value < 0; + if (sign) + value = -value; + var lo = value >>> 0, hi = (value - lo) / 4294967296 >>> 0; + if (sign) { + hi = ~hi >>> 0; + lo = ~lo >>> 0; + if (++lo > 4294967295) { + lo = 0; + if (++hi > 4294967295) + hi = 0; + } + } + return new LongBits(lo, hi); + }; + LongBits.from = function from(value) { + if (typeof value === "number") + return LongBits.fromNumber(value); + if (util.isString(value)) { + if (util.Long) + value = util.Long.fromString(value); + else + return LongBits.fromNumber(parseInt(value, 10)); + } + return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero; + }; + LongBits.prototype.toNumber = function toNumber(unsigned) { + if (!unsigned && this.hi >>> 31) { + var lo = ~this.lo + 1 >>> 0, hi = ~this.hi >>> 0; + if (!lo) + hi = hi + 1 >>> 0; + return -(lo + hi * 4294967296); + } + return this.lo + this.hi * 4294967296; + }; + LongBits.prototype.toLong = function toLong(unsigned) { + return util.Long ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned)) : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) }; + }; + var charCodeAt = String.prototype.charCodeAt; + LongBits.fromHash = function fromHash(hash) { + if (hash === zeroHash) + return zero; + return new LongBits( + (charCodeAt.call(hash, 0) | charCodeAt.call(hash, 1) << 8 | charCodeAt.call(hash, 2) << 16 | charCodeAt.call(hash, 3) << 24) >>> 0, + (charCodeAt.call(hash, 4) | charCodeAt.call(hash, 5) << 8 | charCodeAt.call(hash, 6) << 16 | charCodeAt.call(hash, 7) << 24) >>> 0 + ); + }; + LongBits.prototype.toHash = function toHash() { + return String.fromCharCode( + this.lo & 255, + this.lo >>> 8 & 255, + this.lo >>> 16 & 255, + this.lo >>> 24, + this.hi & 255, + this.hi >>> 8 & 255, + this.hi >>> 16 & 255, + this.hi >>> 24 + ); + }; + LongBits.prototype.zzEncode = function zzEncode() { + var mask = this.hi >> 31; + this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0; + this.lo = (this.lo << 1 ^ mask) >>> 0; + return this; + }; + LongBits.prototype.zzDecode = function zzDecode() { + var mask = -(this.lo & 1); + this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0; + this.hi = (this.hi >>> 1 ^ mask) >>> 0; + return this; + }; + LongBits.prototype.length = function length() { + var part0 = this.lo, part1 = (this.lo >>> 28 | this.hi << 4) >>> 0, part2 = this.hi >>> 24; + return part2 === 0 ? part1 === 0 ? part0 < 16384 ? part0 < 128 ? 1 : 2 : part0 < 2097152 ? 3 : 4 : part1 < 16384 ? part1 < 128 ? 5 : 6 : part1 < 2097152 ? 7 : 8 : part2 < 128 ? 9 : 10; + }; + } +}); + +// node_modules/protobufjs/src/util/minimal.js +var require_minimal = __commonJS({ + "node_modules/protobufjs/src/util/minimal.js"(exports2) { + "use strict"; + var util = exports2; + util.asPromise = require_aspromise(); + util.base64 = require_base64(); + util.EventEmitter = require_eventemitter(); + util.float = require_float(); + util.inquire = require_inquire(); + util.utf8 = require_utf8(); + util.pool = require_pool(); + util.LongBits = require_longbits(); + util.isNode = Boolean(typeof global !== "undefined" && global && global.process && global.process.versions && global.process.versions.node); + util.global = util.isNode && global || typeof window !== "undefined" && window || typeof self !== "undefined" && self || exports2; + util.emptyArray = Object.freeze ? Object.freeze([]) : ( + /* istanbul ignore next */ + [] + ); + util.emptyObject = Object.freeze ? Object.freeze({}) : ( + /* istanbul ignore next */ + {} + ); + util.isInteger = Number.isInteger || /* istanbul ignore next */ + function isInteger(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value; + }; + util.isString = function isString(value) { + return typeof value === "string" || value instanceof String; + }; + util.isObject = function isObject(value) { + return value && typeof value === "object"; + }; + util.isset = /** + * Checks if a property on a message is considered to be present. + * @param {Object} obj Plain object or message instance + * @param {string} prop Property name + * @returns {boolean} `true` if considered to be present, otherwise `false` + */ + util.isSet = function isSet(obj, prop) { + var value = obj[prop]; + if (value != null && obj.hasOwnProperty(prop)) + return typeof value !== "object" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0; + return false; + }; + util.Buffer = function() { + try { + var Buffer2 = util.inquire("buffer").Buffer; + return Buffer2.prototype.utf8Write ? Buffer2 : ( + /* istanbul ignore next */ + null + ); + } catch (e) { + return null; + } + }(); + util._Buffer_from = null; + util._Buffer_allocUnsafe = null; + util.newBuffer = function newBuffer(sizeOrArray) { + return typeof sizeOrArray === "number" ? util.Buffer ? util._Buffer_allocUnsafe(sizeOrArray) : new util.Array(sizeOrArray) : util.Buffer ? util._Buffer_from(sizeOrArray) : typeof Uint8Array === "undefined" ? sizeOrArray : new Uint8Array(sizeOrArray); + }; + util.Array = typeof Uint8Array !== "undefined" ? Uint8Array : Array; + util.Long = /* istanbul ignore next */ + util.global.dcodeIO && /* istanbul ignore next */ + util.global.dcodeIO.Long || /* istanbul ignore next */ + util.global.Long || util.inquire("long"); + util.key2Re = /^true|false|0|1$/; + util.key32Re = /^-?(?:0|[1-9][0-9]*)$/; + util.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; + util.longToHash = function longToHash(value) { + return value ? util.LongBits.from(value).toHash() : util.LongBits.zeroHash; + }; + util.longFromHash = function longFromHash(hash, unsigned) { + var bits = util.LongBits.fromHash(hash); + if (util.Long) + return util.Long.fromBits(bits.lo, bits.hi, unsigned); + return bits.toNumber(Boolean(unsigned)); + }; + function merge(dst, src, ifNotSet) { + for (var keys = Object.keys(src), i = 0; i < keys.length; ++i) + if (dst[keys[i]] === void 0 || !ifNotSet) + dst[keys[i]] = src[keys[i]]; + return dst; + } + util.merge = merge; + util.lcFirst = function lcFirst(str) { + return str.charAt(0).toLowerCase() + str.substring(1); + }; + function newError(name) { + function CustomError(message, properties) { + if (!(this instanceof CustomError)) + return new CustomError(message, properties); + Object.defineProperty(this, "message", { get: function() { + return message; + } }); + if (Error.captureStackTrace) + Error.captureStackTrace(this, CustomError); + else + Object.defineProperty(this, "stack", { value: new Error().stack || "" }); + if (properties) + merge(this, properties); + } + CustomError.prototype = Object.create(Error.prototype, { + constructor: { + value: CustomError, writable: true, - value: void 0 + enumerable: false, + configurable: true + }, + name: { + get: function get() { + return name; + }, + set: void 0, + enumerable: false, + // configurable: false would accurately preserve the behavior of + // the original, but I'm guessing that was not intentional. + // For an actual error subclass, this property would + // be configurable. + configurable: true + }, + toString: { + value: function value() { + return this.name + ": " + this.message; + }, + writable: true, + enumerable: false, + configurable: true + } + }); + return CustomError; + } + util.newError = newError; + util.ProtocolError = newError("ProtocolError"); + util.oneOfGetter = function getOneOf(fieldNames) { + var fieldMap = {}; + for (var i = 0; i < fieldNames.length; ++i) + fieldMap[fieldNames[i]] = 1; + return function() { + for (var keys = Object.keys(this), i2 = keys.length - 1; i2 > -1; --i2) + if (fieldMap[keys[i2]] === 1 && this[keys[i2]] !== void 0 && this[keys[i2]] !== null) + return keys[i2]; + }; + }; + util.oneOfSetter = function setOneOf(fieldNames) { + return function(name) { + for (var i = 0; i < fieldNames.length; ++i) + if (fieldNames[i] !== name) + delete this[fieldNames[i]]; + }; + }; + util.toJSONOptions = { + longs: String, + enums: String, + bytes: String, + json: true + }; + util._configure = function() { + var Buffer2 = util.Buffer; + if (!Buffer2) { + util._Buffer_from = util._Buffer_allocUnsafe = null; + return; + } + util._Buffer_from = Buffer2.from !== Uint8Array.from && Buffer2.from || /* istanbul ignore next */ + function Buffer_from(value, encoding) { + return new Buffer2(value, encoding); + }; + util._Buffer_allocUnsafe = Buffer2.allocUnsafe || /* istanbul ignore next */ + function Buffer_allocUnsafe(size) { + return new Buffer2(size); + }; + }; + } +}); + +// node_modules/protobufjs/src/writer.js +var require_writer = __commonJS({ + "node_modules/protobufjs/src/writer.js"(exports2, module2) { + "use strict"; + module2.exports = Writer; + var util = require_minimal(); + var BufferWriter; + var LongBits = util.LongBits; + var base64 = util.base64; + var utf8 = util.utf8; + function Op(fn, len, val) { + this.fn = fn; + this.len = len; + this.next = void 0; + this.val = val; + } + function noop() { + } + function State(writer) { + this.head = writer.head; + this.tail = writer.tail; + this.len = writer.len; + this.next = writer.states; + } + function Writer() { + this.len = 0; + this.head = new Op(noop, 0, 0); + this.tail = this.head; + this.states = null; + } + var create = function create2() { + return util.Buffer ? function create_buffer_setup() { + return (Writer.create = function create_buffer() { + return new BufferWriter(); + })(); + } : function create_array() { + return new Writer(); + }; + }; + Writer.create = create(); + Writer.alloc = function alloc(size) { + return new util.Array(size); + }; + if (util.Array !== Array) + Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray); + Writer.prototype._push = function push(fn, len, val) { + this.tail = this.tail.next = new Op(fn, len, val); + this.len += len; + return this; + }; + function writeByte(val, buf, pos) { + buf[pos] = val & 255; + } + function writeVarint32(val, buf, pos) { + while (val > 127) { + buf[pos++] = val & 127 | 128; + val >>>= 7; + } + buf[pos] = val; + } + function VarintOp(len, val) { + this.len = len; + this.next = void 0; + this.val = val; + } + VarintOp.prototype = Object.create(Op.prototype); + VarintOp.prototype.fn = writeVarint32; + Writer.prototype.uint32 = function write_uint32(value) { + this.len += (this.tail = this.tail.next = new VarintOp( + (value = value >>> 0) < 128 ? 1 : value < 16384 ? 2 : value < 2097152 ? 3 : value < 268435456 ? 4 : 5, + value + )).len; + return this; + }; + Writer.prototype.int32 = function write_int32(value) { + return value < 0 ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) : this.uint32(value); + }; + Writer.prototype.sint32 = function write_sint32(value) { + return this.uint32((value << 1 ^ value >> 31) >>> 0); + }; + function writeVarint64(val, buf, pos) { + while (val.hi) { + buf[pos++] = val.lo & 127 | 128; + val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0; + val.hi >>>= 7; + } + while (val.lo > 127) { + buf[pos++] = val.lo & 127 | 128; + val.lo = val.lo >>> 7; + } + buf[pos++] = val.lo; + } + Writer.prototype.uint64 = function write_uint64(value) { + var bits = LongBits.from(value); + return this._push(writeVarint64, bits.length(), bits); + }; + Writer.prototype.int64 = Writer.prototype.uint64; + Writer.prototype.sint64 = function write_sint64(value) { + var bits = LongBits.from(value).zzEncode(); + return this._push(writeVarint64, bits.length(), bits); + }; + Writer.prototype.bool = function write_bool(value) { + return this._push(writeByte, 1, value ? 1 : 0); + }; + function writeFixed32(val, buf, pos) { + buf[pos] = val & 255; + buf[pos + 1] = val >>> 8 & 255; + buf[pos + 2] = val >>> 16 & 255; + buf[pos + 3] = val >>> 24; + } + Writer.prototype.fixed32 = function write_fixed32(value) { + return this._push(writeFixed32, 4, value >>> 0); + }; + Writer.prototype.sfixed32 = Writer.prototype.fixed32; + Writer.prototype.fixed64 = function write_fixed64(value) { + var bits = LongBits.from(value); + return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi); + }; + Writer.prototype.sfixed64 = Writer.prototype.fixed64; + Writer.prototype.float = function write_float(value) { + return this._push(util.float.writeFloatLE, 4, value); + }; + Writer.prototype.double = function write_double(value) { + return this._push(util.float.writeDoubleLE, 8, value); + }; + var writeBytes = util.Array.prototype.set ? function writeBytes_set(val, buf, pos) { + buf.set(val, pos); + } : function writeBytes_for(val, buf, pos) { + for (var i = 0; i < val.length; ++i) + buf[pos + i] = val[i]; + }; + Writer.prototype.bytes = function write_bytes(value) { + var len = value.length >>> 0; + if (!len) + return this._push(writeByte, 1, 0); + if (util.isString(value)) { + var buf = Writer.alloc(len = base64.length(value)); + base64.decode(value, buf, 0); + value = buf; + } + return this.uint32(len)._push(writeBytes, len, value); + }; + Writer.prototype.string = function write_string(value) { + var len = utf8.length(value); + return len ? this.uint32(len)._push(utf8.write, len, value) : this._push(writeByte, 1, 0); + }; + Writer.prototype.fork = function fork() { + this.states = new State(this); + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + return this; + }; + Writer.prototype.reset = function reset2() { + if (this.states) { + this.head = this.states.head; + this.tail = this.states.tail; + this.len = this.states.len; + this.states = this.states.next; + } else { + this.head = this.tail = new Op(noop, 0, 0); + this.len = 0; + } + return this; + }; + Writer.prototype.ldelim = function ldelim() { + var head = this.head, tail = this.tail, len = this.len; + this.reset().uint32(len); + if (len) { + this.tail.next = head.next; + this.tail = tail; + this.len += len; + } + return this; + }; + Writer.prototype.finish = function finish() { + var head = this.head.next, buf = this.constructor.alloc(this.len), pos = 0; + while (head) { + head.fn(head.val, buf, pos); + pos += head.len; + head = head.next; + } + return buf; + }; + Writer._configure = function(BufferWriter_) { + BufferWriter = BufferWriter_; + Writer.create = create(); + BufferWriter._configure(); + }; + } +}); + +// node_modules/protobufjs/src/writer_buffer.js +var require_writer_buffer = __commonJS({ + "node_modules/protobufjs/src/writer_buffer.js"(exports2, module2) { + "use strict"; + module2.exports = BufferWriter; + var Writer = require_writer(); + (BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter; + var util = require_minimal(); + function BufferWriter() { + Writer.call(this); + } + BufferWriter._configure = function() { + BufferWriter.alloc = util._Buffer_allocUnsafe; + BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === "set" ? function writeBytesBuffer_set(val, buf, pos) { + buf.set(val, pos); + } : function writeBytesBuffer_copy(val, buf, pos) { + if (val.copy) + val.copy(buf, pos, 0, val.length); + else for (var i = 0; i < val.length; ) + buf[pos++] = val[i++]; + }; + }; + BufferWriter.prototype.bytes = function write_bytes_buffer(value) { + if (util.isString(value)) + value = util._Buffer_from(value, "base64"); + var len = value.length >>> 0; + this.uint32(len); + if (len) + this._push(BufferWriter.writeBytesBuffer, len, value); + return this; + }; + function writeStringBuffer(val, buf, pos) { + if (val.length < 40) + util.utf8.write(val, buf, pos); + else if (buf.utf8Write) + buf.utf8Write(val, pos); + else + buf.write(val, pos); + } + BufferWriter.prototype.string = function write_string_buffer(value) { + var len = util.Buffer.byteLength(value); + this.uint32(len); + if (len) + this._push(writeStringBuffer, len, value); + return this; + }; + BufferWriter._configure(); + } +}); + +// node_modules/protobufjs/src/reader.js +var require_reader = __commonJS({ + "node_modules/protobufjs/src/reader.js"(exports2, module2) { + "use strict"; + module2.exports = Reader; + var util = require_minimal(); + var BufferReader; + var LongBits = util.LongBits; + var utf8 = util.utf8; + function indexOutOfRange(reader, writeLength) { + return RangeError("index out of range: " + reader.pos + " + " + (writeLength || 1) + " > " + reader.len); + } + function Reader(buffer) { + this.buf = buffer; + this.pos = 0; + this.len = buffer.length; + } + var create_array = typeof Uint8Array !== "undefined" ? function create_typed_array(buffer) { + if (buffer instanceof Uint8Array || Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + } : function create_array2(buffer) { + if (Array.isArray(buffer)) + return new Reader(buffer); + throw Error("illegal buffer"); + }; + var create = function create2() { + return util.Buffer ? function create_buffer_setup(buffer) { + return (Reader.create = function create_buffer(buffer2) { + return util.Buffer.isBuffer(buffer2) ? new BufferReader(buffer2) : create_array(buffer2); + })(buffer); + } : create_array; + }; + Reader.create = create(); + Reader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ + util.Array.prototype.slice; + Reader.prototype.uint32 = /* @__PURE__ */ function read_uint32_setup() { + var value = 4294967295; + return function read_uint32() { + value = (this.buf[this.pos] & 127) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; + if (this.buf[this.pos++] < 128) return value; + value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; + if (this.buf[this.pos++] < 128) return value; + if ((this.pos += 5) > this.len) { + this.pos = this.len; + throw indexOutOfRange(this, 10); + } + return value; + }; + }(); + Reader.prototype.int32 = function read_int32() { + return this.uint32() | 0; + }; + Reader.prototype.sint32 = function read_sint32() { + var value = this.uint32(); + return value >>> 1 ^ -(value & 1) | 0; + }; + function readLongVarint() { + var bits = new LongBits(0, 0); + var i = 0; + if (this.len - this.pos > 4) { + for (; i < 4; ++i) { + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0; + bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + i = 0; + } else { + for (; i < 3; ++i) { + if (this.pos >= this.len) + throw indexOutOfRange(this); + bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0; + return bits; + } + if (this.len - this.pos > 4) { + for (; i < 5; ++i) { + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } else { + for (; i < 5; ++i) { + if (this.pos >= this.len) + throw indexOutOfRange(this); + bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0; + if (this.buf[this.pos++] < 128) + return bits; + } + } + throw Error("invalid varint encoding"); + } + Reader.prototype.bool = function read_bool() { + return this.uint32() !== 0; + }; + function readFixed32_end(buf, end) { + return (buf[end - 4] | buf[end - 3] << 8 | buf[end - 2] << 16 | buf[end - 1] << 24) >>> 0; + } + Reader.prototype.fixed32 = function read_fixed32() { + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + return readFixed32_end(this.buf, this.pos += 4); + }; + Reader.prototype.sfixed32 = function read_sfixed32() { + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + return readFixed32_end(this.buf, this.pos += 4) | 0; + }; + function readFixed64() { + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 8); + return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4)); + } + Reader.prototype.float = function read_float() { + if (this.pos + 4 > this.len) + throw indexOutOfRange(this, 4); + var value = util.float.readFloatLE(this.buf, this.pos); + this.pos += 4; + return value; + }; + Reader.prototype.double = function read_double() { + if (this.pos + 8 > this.len) + throw indexOutOfRange(this, 4); + var value = util.float.readDoubleLE(this.buf, this.pos); + this.pos += 8; + return value; + }; + Reader.prototype.bytes = function read_bytes() { + var length = this.uint32(), start = this.pos, end = this.pos + length; + if (end > this.len) + throw indexOutOfRange(this, length); + this.pos += length; + if (Array.isArray(this.buf)) + return this.buf.slice(start, end); + if (start === end) { + var nativeBuffer = util.Buffer; + return nativeBuffer ? nativeBuffer.alloc(0) : new this.buf.constructor(0); + } + return this._slice.call(this.buf, start, end); + }; + Reader.prototype.string = function read_string() { + var bytes = this.bytes(); + return utf8.read(bytes, 0, bytes.length); + }; + Reader.prototype.skip = function skip(length) { + if (typeof length === "number") { + if (this.pos + length > this.len) + throw indexOutOfRange(this, length); + this.pos += length; + } else { + do { + if (this.pos >= this.len) + throw indexOutOfRange(this); + } while (this.buf[this.pos++] & 128); + } + return this; + }; + Reader.prototype.skipType = function(wireType) { + switch (wireType) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + while ((wireType = this.uint32() & 7) !== 4) { + this.skipType(wireType); + } + break; + case 5: + this.skip(4); + break; + /* istanbul ignore next */ + default: + throw Error("invalid wire type " + wireType + " at offset " + this.pos); + } + return this; + }; + Reader._configure = function(BufferReader_) { + BufferReader = BufferReader_; + Reader.create = create(); + BufferReader._configure(); + var fn = util.Long ? "toLong" : ( + /* istanbul ignore next */ + "toNumber" + ); + util.merge(Reader.prototype, { + int64: function read_int64() { + return readLongVarint.call(this)[fn](false); + }, + uint64: function read_uint64() { + return readLongVarint.call(this)[fn](true); + }, + sint64: function read_sint64() { + return readLongVarint.call(this).zzDecode()[fn](false); + }, + fixed64: function read_fixed64() { + return readFixed64.call(this)[fn](true); + }, + sfixed64: function read_sfixed64() { + return readFixed64.call(this)[fn](false); + } + }); + }; + } +}); + +// node_modules/protobufjs/src/reader_buffer.js +var require_reader_buffer = __commonJS({ + "node_modules/protobufjs/src/reader_buffer.js"(exports2, module2) { + "use strict"; + module2.exports = BufferReader; + var Reader = require_reader(); + (BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader; + var util = require_minimal(); + function BufferReader(buffer) { + Reader.call(this, buffer); + } + BufferReader._configure = function() { + if (util.Buffer) + BufferReader.prototype._slice = util.Buffer.prototype.slice; + }; + BufferReader.prototype.string = function read_string_buffer() { + var len = this.uint32(); + return this.buf.utf8Slice ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len)) : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + len, this.len)); + }; + BufferReader._configure(); + } +}); + +// node_modules/protobufjs/src/rpc/service.js +var require_service = __commonJS({ + "node_modules/protobufjs/src/rpc/service.js"(exports2, module2) { + "use strict"; + module2.exports = Service; + var util = require_minimal(); + (Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service; + function Service(rpcImpl, requestDelimited, responseDelimited) { + if (typeof rpcImpl !== "function") + throw TypeError("rpcImpl must be a function"); + util.EventEmitter.call(this); + this.rpcImpl = rpcImpl; + this.requestDelimited = Boolean(requestDelimited); + this.responseDelimited = Boolean(responseDelimited); + } + Service.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) { + if (!request) + throw TypeError("request must be specified"); + var self2 = this; + if (!callback) + return util.asPromise(rpcCall, self2, method, requestCtor, responseCtor, request); + if (!self2.rpcImpl) { + setTimeout(function() { + callback(Error("already ended")); + }, 0); + return void 0; + } + try { + return self2.rpcImpl( + method, + requestCtor[self2.requestDelimited ? "encodeDelimited" : "encode"](request).finish(), + function rpcCallback(err2, response) { + if (err2) { + self2.emit("error", err2, method); + return callback(err2); + } + if (response === null) { + self2.end( + /* endedByRPC */ + true + ); + return void 0; + } + if (!(response instanceof responseCtor)) { + try { + response = responseCtor[self2.responseDelimited ? "decodeDelimited" : "decode"](response); + } catch (err3) { + self2.emit("error", err3, method); + return callback(err3); + } + } + self2.emit("data", response, method); + return callback(null, response); + } + ); + } catch (err2) { + self2.emit("error", err2, method); + setTimeout(function() { + callback(err2); + }, 0); + return void 0; + } + }; + Service.prototype.end = function end(endedByRPC) { + if (this.rpcImpl) { + if (!endedByRPC) + this.rpcImpl(null, null, null); + this.rpcImpl = null; + this.emit("end").off(); + } + return this; + }; + } +}); + +// node_modules/protobufjs/src/rpc.js +var require_rpc = __commonJS({ + "node_modules/protobufjs/src/rpc.js"(exports2) { + "use strict"; + var rpc = exports2; + rpc.Service = require_service(); + } +}); + +// node_modules/protobufjs/src/roots.js +var require_roots = __commonJS({ + "node_modules/protobufjs/src/roots.js"(exports2, module2) { + "use strict"; + module2.exports = {}; + } +}); + +// node_modules/protobufjs/src/index-minimal.js +var require_index_minimal = __commonJS({ + "node_modules/protobufjs/src/index-minimal.js"(exports2) { + "use strict"; + var protobuf = exports2; + protobuf.build = "minimal"; + protobuf.Writer = require_writer(); + protobuf.BufferWriter = require_writer_buffer(); + protobuf.Reader = require_reader(); + protobuf.BufferReader = require_reader_buffer(); + protobuf.util = require_minimal(); + protobuf.rpc = require_rpc(); + protobuf.roots = require_roots(); + protobuf.configure = configure; + function configure() { + protobuf.util._configure(); + protobuf.Writer._configure(protobuf.BufferWriter); + protobuf.Reader._configure(protobuf.BufferReader); + } + configure(); + } +}); + +// node_modules/@protobufjs/codegen/index.js +var require_codegen = __commonJS({ + "node_modules/@protobufjs/codegen/index.js"(exports2, module2) { + "use strict"; + module2.exports = codegen; + function codegen(functionParams, functionName) { + if (typeof functionParams === "string") { + functionName = functionParams; + functionParams = void 0; + } + var body = []; + function Codegen(formatStringOrScope) { + if (typeof formatStringOrScope !== "string") { + var source = toString(); + if (codegen.verbose) + console.log("codegen: " + source); + source = "return " + source; + if (formatStringOrScope) { + var scopeKeys = Object.keys(formatStringOrScope), scopeParams = new Array(scopeKeys.length + 1), scopeValues = new Array(scopeKeys.length), scopeOffset = 0; + while (scopeOffset < scopeKeys.length) { + scopeParams[scopeOffset] = scopeKeys[scopeOffset]; + scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]]; + } + scopeParams[scopeOffset] = source; + return Function.apply(null, scopeParams).apply(null, scopeValues); + } + return Function(source)(); + } + var formatParams = new Array(arguments.length - 1), formatOffset = 0; + while (formatOffset < formatParams.length) + formatParams[formatOffset] = arguments[++formatOffset]; + formatOffset = 0; + formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) { + var value = formatParams[formatOffset++]; + switch ($1) { + case "d": + case "f": + return String(Number(value)); + case "i": + return String(Math.floor(value)); + case "j": + return JSON.stringify(value); + case "s": + return String(value); + } + return "%"; + }); + if (formatOffset !== formatParams.length) + throw Error("parameter count mismatch"); + body.push(formatStringOrScope); + return Codegen; + } + function toString(functionNameOverride) { + return "function " + (functionNameOverride || functionName || "") + "(" + (functionParams && functionParams.join(",") || "") + "){\n " + body.join("\n ") + "\n}"; + } + Codegen.toString = toString; + return Codegen; + } + codegen.verbose = false; + } +}); + +// node_modules/@protobufjs/fetch/index.js +var require_fetch = __commonJS({ + "node_modules/@protobufjs/fetch/index.js"(exports2, module2) { + "use strict"; + module2.exports = fetch2; + var asPromise = require_aspromise(); + var inquire2 = require_inquire(); + var fs = inquire2("fs"); + function fetch2(filename, options, callback) { + if (typeof options === "function") { + callback = options; + options = {}; + } else if (!options) + options = {}; + if (!callback) + return asPromise(fetch2, this, filename, options); + if (!options.xhr && fs && fs.readFile) + return fs.readFile(filename, function fetchReadFileCallback(err2, contents) { + return err2 && typeof XMLHttpRequest !== "undefined" ? fetch2.xhr(filename, options, callback) : err2 ? callback(err2) : callback(null, options.binary ? contents : contents.toString("utf8")); + }); + return fetch2.xhr(filename, options, callback); + } + fetch2.xhr = function fetch_xhr(filename, options, callback) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function fetchOnReadyStateChange() { + if (xhr.readyState !== 4) + return void 0; + if (xhr.status !== 0 && xhr.status !== 200) + return callback(Error("status " + xhr.status)); + if (options.binary) { + var buffer = xhr.response; + if (!buffer) { + buffer = []; + for (var i = 0; i < xhr.responseText.length; ++i) + buffer.push(xhr.responseText.charCodeAt(i) & 255); + } + return callback(null, typeof Uint8Array !== "undefined" ? new Uint8Array(buffer) : buffer); + } + return callback(null, xhr.responseText); + }; + if (options.binary) { + if ("overrideMimeType" in xhr) + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + xhr.responseType = "arraybuffer"; + } + xhr.open("GET", filename); + xhr.send(); + }; + } +}); + +// node_modules/@protobufjs/path/index.js +var require_path = __commonJS({ + "node_modules/@protobufjs/path/index.js"(exports2) { + "use strict"; + var path2 = exports2; + var isAbsolute = ( + /** + * Tests if the specified path is absolute. + * @param {string} path Path to test + * @returns {boolean} `true` if path is absolute + */ + path2.isAbsolute = function isAbsolute2(path3) { + return /^(?:\/|\w+:)/.test(path3); + } + ); + var normalize = ( + /** + * Normalizes the specified path. + * @param {string} path Path to normalize + * @returns {string} Normalized path + */ + path2.normalize = function normalize2(path3) { + path3 = path3.replace(/\\/g, "/").replace(/\/{2,}/g, "/"); + var parts = path3.split("/"), absolute = isAbsolute(path3), prefix = ""; + if (absolute) + prefix = parts.shift() + "/"; + for (var i = 0; i < parts.length; ) { + if (parts[i] === "..") { + if (i > 0 && parts[i - 1] !== "..") + parts.splice(--i, 2); + else if (absolute) + parts.splice(i, 1); + else + ++i; + } else if (parts[i] === ".") + parts.splice(i, 1); + else + ++i; + } + return prefix + parts.join("/"); + } + ); + path2.resolve = function resolve(originPath, includePath, alreadyNormalized) { + if (!alreadyNormalized) + includePath = normalize(includePath); + if (isAbsolute(includePath)) + return includePath; + if (!alreadyNormalized) + originPath = normalize(originPath); + return (originPath = originPath.replace(/(?:\/|^)[^/]+$/, "")).length ? normalize(originPath + "/" + includePath) : includePath; + }; + } +}); + +// node_modules/protobufjs/src/types.js +var require_types = __commonJS({ + "node_modules/protobufjs/src/types.js"(exports2) { + "use strict"; + var types = exports2; + var util = require_util2(); + var s = [ + "double", + // 0 + "float", + // 1 + "int32", + // 2 + "uint32", + // 3 + "sint32", + // 4 + "fixed32", + // 5 + "sfixed32", + // 6 + "int64", + // 7 + "uint64", + // 8 + "sint64", + // 9 + "fixed64", + // 10 + "sfixed64", + // 11 + "bool", + // 12 + "string", + // 13 + "bytes" + // 14 + ]; + function bake(values, offset) { + var i = 0, o = {}; + offset |= 0; + while (i < values.length) o[s[i + offset]] = values[i++]; + return o; + } + types.basic = bake([ + /* double */ + 1, + /* float */ + 5, + /* int32 */ + 0, + /* uint32 */ + 0, + /* sint32 */ + 0, + /* fixed32 */ + 5, + /* sfixed32 */ + 5, + /* int64 */ + 0, + /* uint64 */ + 0, + /* sint64 */ + 0, + /* fixed64 */ + 1, + /* sfixed64 */ + 1, + /* bool */ + 0, + /* string */ + 2, + /* bytes */ + 2 + ]); + types.defaults = bake([ + /* double */ + 0, + /* float */ + 0, + /* int32 */ + 0, + /* uint32 */ + 0, + /* sint32 */ + 0, + /* fixed32 */ + 0, + /* sfixed32 */ + 0, + /* int64 */ + 0, + /* uint64 */ + 0, + /* sint64 */ + 0, + /* fixed64 */ + 0, + /* sfixed64 */ + 0, + /* bool */ + false, + /* string */ + "", + /* bytes */ + util.emptyArray, + /* message */ + null + ]); + types.long = bake([ + /* int64 */ + 0, + /* uint64 */ + 0, + /* sint64 */ + 0, + /* fixed64 */ + 1, + /* sfixed64 */ + 1 + ], 7); + types.mapKey = bake([ + /* int32 */ + 0, + /* uint32 */ + 0, + /* sint32 */ + 0, + /* fixed32 */ + 5, + /* sfixed32 */ + 5, + /* int64 */ + 0, + /* uint64 */ + 0, + /* sint64 */ + 0, + /* fixed64 */ + 1, + /* sfixed64 */ + 1, + /* bool */ + 0, + /* string */ + 2 + ], 2); + types.packed = bake([ + /* double */ + 1, + /* float */ + 5, + /* int32 */ + 0, + /* uint32 */ + 0, + /* sint32 */ + 0, + /* fixed32 */ + 5, + /* sfixed32 */ + 5, + /* int64 */ + 0, + /* uint64 */ + 0, + /* sint64 */ + 0, + /* fixed64 */ + 1, + /* sfixed64 */ + 1, + /* bool */ + 0 + ]); + } +}); + +// node_modules/protobufjs/src/field.js +var require_field = __commonJS({ + "node_modules/protobufjs/src/field.js"(exports2, module2) { + "use strict"; + module2.exports = Field2; + var ReflectionObject = require_object3(); + ((Field2.prototype = Object.create(ReflectionObject.prototype)).constructor = Field2).className = "Field"; + var Enum = require_enum3(); + var types = require_types(); + var util = require_util2(); + var Type; + var ruleRe = /^required|optional|repeated$/; + Field2.fromJSON = function fromJSON(name, json) { + return new Field2(name, json.id, json.type, json.rule, json.extend, json.options, json.comment); + }; + function Field2(name, id, type, rule, extend, options, comment) { + if (util.isObject(rule)) { + comment = extend; + options = rule; + rule = extend = void 0; + } else if (util.isObject(extend)) { + comment = options; + options = extend; + extend = void 0; + } + ReflectionObject.call(this, name, options); + if (!util.isInteger(id) || id < 0) + throw TypeError("id must be a non-negative integer"); + if (!util.isString(type)) + throw TypeError("type must be a string"); + if (rule !== void 0 && !ruleRe.test(rule = rule.toString().toLowerCase())) + throw TypeError("rule must be a string rule"); + if (extend !== void 0 && !util.isString(extend)) + throw TypeError("extend must be a string"); + if (rule === "proto3_optional") { + rule = "optional"; + } + this.rule = rule && rule !== "optional" ? rule : void 0; + this.type = type; + this.id = id; + this.extend = extend || void 0; + this.required = rule === "required"; + this.optional = !this.required; + this.repeated = rule === "repeated"; + this.map = false; + this.message = null; + this.partOf = null; + this.typeDefault = null; + this.defaultValue = null; + this.long = util.Long ? types.long[type] !== void 0 : ( + /* istanbul ignore next */ + false + ); + this.bytes = type === "bytes"; + this.resolvedType = null; + this.extensionField = null; + this.declaringField = null; + this._packed = null; + this.comment = comment; + } + Object.defineProperty(Field2.prototype, "packed", { + get: function() { + if (this._packed === null) + this._packed = this.getOption("packed") !== false; + return this._packed; + } + }); + Field2.prototype.setOption = function setOption(name, value, ifNotSet) { + if (name === "packed") + this._packed = null; + return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet); + }; + Field2.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "rule", + this.rule !== "optional" && this.rule || void 0, + "type", + this.type, + "id", + this.id, + "extend", + this.extend, + "options", + this.options, + "comment", + keepComments ? this.comment : void 0 + ]); + }; + Field2.prototype.resolve = function resolve() { + if (this.resolved) + return this; + if ((this.typeDefault = types.defaults[this.type]) === void 0) { + this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type); + if (this.resolvedType instanceof Type) + this.typeDefault = null; + else + this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; + } else if (this.options && this.options.proto3_optional) { + this.typeDefault = null; + } + if (this.options && this.options["default"] != null) { + this.typeDefault = this.options["default"]; + if (this.resolvedType instanceof Enum && typeof this.typeDefault === "string") + this.typeDefault = this.resolvedType.values[this.typeDefault]; + } + if (this.options) { + if (this.options.packed === true || this.options.packed !== void 0 && this.resolvedType && !(this.resolvedType instanceof Enum)) + delete this.options.packed; + if (!Object.keys(this.options).length) + this.options = void 0; + } + if (this.long) { + this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === "u"); + if (Object.freeze) + Object.freeze(this.typeDefault); + } else if (this.bytes && typeof this.typeDefault === "string") { + var buf; + if (util.base64.test(this.typeDefault)) + util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0); + else + util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0); + this.typeDefault = buf; + } + if (this.map) + this.defaultValue = util.emptyObject; + else if (this.repeated) + this.defaultValue = util.emptyArray; + else + this.defaultValue = this.typeDefault; + if (this.parent instanceof Type) + this.parent.ctor.prototype[this.name] = this.defaultValue; + return ReflectionObject.prototype.resolve.call(this); + }; + Field2.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) { + if (typeof fieldType === "function") + fieldType = util.decorateType(fieldType).name; + else if (fieldType && typeof fieldType === "object") + fieldType = util.decorateEnum(fieldType).name; + return function fieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor).add(new Field2(fieldName, fieldId, fieldType, fieldRule, { "default": defaultValue })); + }; + }; + Field2._configure = function configure(Type_) { + Type = Type_; + }; + } +}); + +// node_modules/protobufjs/src/oneof.js +var require_oneof = __commonJS({ + "node_modules/protobufjs/src/oneof.js"(exports2, module2) { + "use strict"; + module2.exports = OneOf; + var ReflectionObject = require_object3(); + ((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = "OneOf"; + var Field2 = require_field(); + var util = require_util2(); + function OneOf(name, fieldNames, options, comment) { + if (!Array.isArray(fieldNames)) { + options = fieldNames; + fieldNames = void 0; + } + ReflectionObject.call(this, name, options); + if (!(fieldNames === void 0 || Array.isArray(fieldNames))) + throw TypeError("fieldNames must be an Array"); + this.oneof = fieldNames || []; + this.fieldsArray = []; + this.comment = comment; + } + OneOf.fromJSON = function fromJSON(name, json) { + return new OneOf(name, json.oneof, json.options, json.comment); + }; + OneOf.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options", + this.options, + "oneof", + this.oneof, + "comment", + keepComments ? this.comment : void 0 + ]); + }; + function addFieldsToParent(oneof) { + if (oneof.parent) { + for (var i = 0; i < oneof.fieldsArray.length; ++i) + if (!oneof.fieldsArray[i].parent) + oneof.parent.add(oneof.fieldsArray[i]); + } + } + OneOf.prototype.add = function add2(field) { + if (!(field instanceof Field2)) + throw TypeError("field must be a Field"); + if (field.parent && field.parent !== this.parent) + field.parent.remove(field); + this.oneof.push(field.name); + this.fieldsArray.push(field); + field.partOf = this; + addFieldsToParent(this); + return this; + }; + OneOf.prototype.remove = function remove(field) { + if (!(field instanceof Field2)) + throw TypeError("field must be a Field"); + var index = this.fieldsArray.indexOf(field); + if (index < 0) + throw Error(field + " is not a member of " + this); + this.fieldsArray.splice(index, 1); + index = this.oneof.indexOf(field.name); + if (index > -1) + this.oneof.splice(index, 1); + field.partOf = null; + return this; + }; + OneOf.prototype.onAdd = function onAdd(parent) { + ReflectionObject.prototype.onAdd.call(this, parent); + var self2 = this; + for (var i = 0; i < this.oneof.length; ++i) { + var field = parent.get(this.oneof[i]); + if (field && !field.partOf) { + field.partOf = self2; + self2.fieldsArray.push(field); + } + } + addFieldsToParent(this); + }; + OneOf.prototype.onRemove = function onRemove(parent) { + for (var i = 0, field; i < this.fieldsArray.length; ++i) + if ((field = this.fieldsArray[i]).parent) + field.parent.remove(field); + ReflectionObject.prototype.onRemove.call(this, parent); + }; + OneOf.d = function decorateOneOf() { + var fieldNames = new Array(arguments.length), index = 0; + while (index < arguments.length) + fieldNames[index] = arguments[index++]; + return function oneOfDecorator(prototype, oneofName) { + util.decorateType(prototype.constructor).add(new OneOf(oneofName, fieldNames)); + Object.defineProperty(prototype, oneofName, { + get: util.oneOfGetter(fieldNames), + set: util.oneOfSetter(fieldNames) + }); + }; + }; + } +}); + +// node_modules/protobufjs/src/namespace.js +var require_namespace = __commonJS({ + "node_modules/protobufjs/src/namespace.js"(exports2, module2) { + "use strict"; + module2.exports = Namespace; + var ReflectionObject = require_object3(); + ((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = "Namespace"; + var Field2 = require_field(); + var util = require_util2(); + var OneOf = require_oneof(); + var Type; + var Service; + var Enum; + Namespace.fromJSON = function fromJSON(name, json) { + return new Namespace(name, json.options).addJSON(json.nested); + }; + function arrayToJSON(array, toJSONOptions) { + if (!(array && array.length)) + return void 0; + var obj = {}; + for (var i = 0; i < array.length; ++i) + obj[array[i].name] = array[i].toJSON(toJSONOptions); + return obj; + } + Namespace.arrayToJSON = arrayToJSON; + Namespace.isReservedId = function isReservedId(reserved, id) { + if (reserved) { + for (var i = 0; i < reserved.length; ++i) + if (typeof reserved[i] !== "string" && reserved[i][0] <= id && reserved[i][1] > id) + return true; + } + return false; + }; + Namespace.isReservedName = function isReservedName(reserved, name) { + if (reserved) { + for (var i = 0; i < reserved.length; ++i) + if (reserved[i] === name) + return true; + } + return false; + }; + function Namespace(name, options) { + ReflectionObject.call(this, name, options); + this.nested = void 0; + this._nestedArray = null; + } + function clearCache(namespace) { + namespace._nestedArray = null; + return namespace; + } + Object.defineProperty(Namespace.prototype, "nestedArray", { + get: function() { + return this._nestedArray || (this._nestedArray = util.toArray(this.nested)); + } + }); + Namespace.prototype.toJSON = function toJSON(toJSONOptions) { + return util.toObject([ + "options", + this.options, + "nested", + arrayToJSON(this.nestedArray, toJSONOptions) + ]); + }; + Namespace.prototype.addJSON = function addJSON(nestedJson) { + var ns = this; + if (nestedJson) { + for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) { + nested = nestedJson[names[i]]; + ns.add( + // most to least likely + (nested.fields !== void 0 ? Type.fromJSON : nested.values !== void 0 ? Enum.fromJSON : nested.methods !== void 0 ? Service.fromJSON : nested.id !== void 0 ? Field2.fromJSON : Namespace.fromJSON)(names[i], nested) + ); + } + } + return this; + }; + Namespace.prototype.get = function get(name) { + return this.nested && this.nested[name] || null; + }; + Namespace.prototype.getEnum = function getEnum(name) { + if (this.nested && this.nested[name] instanceof Enum) + return this.nested[name].values; + throw Error("no such enum: " + name); + }; + Namespace.prototype.add = function add2(object) { + if (!(object instanceof Field2 && object.extend !== void 0 || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace)) + throw TypeError("object must be a valid nested object"); + if (!this.nested) + this.nested = {}; + else { + var prev = this.get(object.name); + if (prev) { + if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) { + var nested = prev.nestedArray; + for (var i = 0; i < nested.length; ++i) + object.add(nested[i]); + this.remove(prev); + if (!this.nested) + this.nested = {}; + object.setOptions(prev.options, true); + } else + throw Error("duplicate name '" + object.name + "' in " + this); + } + } + this.nested[object.name] = object; + object.onAdd(this); + return clearCache(this); + }; + Namespace.prototype.remove = function remove(object) { + if (!(object instanceof ReflectionObject)) + throw TypeError("object must be a ReflectionObject"); + if (object.parent !== this) + throw Error(object + " is not a member of " + this); + delete this.nested[object.name]; + if (!Object.keys(this.nested).length) + this.nested = void 0; + object.onRemove(this); + return clearCache(this); + }; + Namespace.prototype.define = function define2(path2, json) { + if (util.isString(path2)) + path2 = path2.split("."); + else if (!Array.isArray(path2)) + throw TypeError("illegal path"); + if (path2 && path2.length && path2[0] === "") + throw Error("path must be relative"); + var ptr = this; + while (path2.length > 0) { + var part = path2.shift(); + if (ptr.nested && ptr.nested[part]) { + ptr = ptr.nested[part]; + if (!(ptr instanceof Namespace)) + throw Error("path conflicts with non-namespace objects"); + } else + ptr.add(ptr = new Namespace(part)); + } + if (json) + ptr.addJSON(json); + return ptr; + }; + Namespace.prototype.resolveAll = function resolveAll() { + var nested = this.nestedArray, i = 0; + while (i < nested.length) + if (nested[i] instanceof Namespace) + nested[i++].resolveAll(); + else + nested[i++].resolve(); + return this.resolve(); + }; + Namespace.prototype.lookup = function lookup(path2, filterTypes, parentAlreadyChecked) { + if (typeof filterTypes === "boolean") { + parentAlreadyChecked = filterTypes; + filterTypes = void 0; + } else if (filterTypes && !Array.isArray(filterTypes)) + filterTypes = [filterTypes]; + if (util.isString(path2) && path2.length) { + if (path2 === ".") + return this.root; + path2 = path2.split("."); + } else if (!path2.length) + return this; + if (path2[0] === "") + return this.root.lookup(path2.slice(1), filterTypes); + var found = this.get(path2[0]); + if (found) { + if (path2.length === 1) { + if (!filterTypes || filterTypes.indexOf(found.constructor) > -1) + return found; + } else if (found instanceof Namespace && (found = found.lookup(path2.slice(1), filterTypes, true))) + return found; + } else + for (var i = 0; i < this.nestedArray.length; ++i) + if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path2, filterTypes, true))) + return found; + if (this.parent === null || parentAlreadyChecked) + return null; + return this.parent.lookup(path2, filterTypes); + }; + Namespace.prototype.lookupType = function lookupType(path2) { + var found = this.lookup(path2, [Type]); + if (!found) + throw Error("no such type: " + path2); + return found; + }; + Namespace.prototype.lookupEnum = function lookupEnum(path2) { + var found = this.lookup(path2, [Enum]); + if (!found) + throw Error("no such Enum '" + path2 + "' in " + this); + return found; + }; + Namespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path2) { + var found = this.lookup(path2, [Type, Enum]); + if (!found) + throw Error("no such Type or Enum '" + path2 + "' in " + this); + return found; + }; + Namespace.prototype.lookupService = function lookupService(path2) { + var found = this.lookup(path2, [Service]); + if (!found) + throw Error("no such Service '" + path2 + "' in " + this); + return found; + }; + Namespace._configure = function(Type_, Service_, Enum_) { + Type = Type_; + Service = Service_; + Enum = Enum_; + }; + } +}); + +// node_modules/protobufjs/src/mapfield.js +var require_mapfield = __commonJS({ + "node_modules/protobufjs/src/mapfield.js"(exports2, module2) { + "use strict"; + module2.exports = MapField; + var Field2 = require_field(); + ((MapField.prototype = Object.create(Field2.prototype)).constructor = MapField).className = "MapField"; + var types = require_types(); + var util = require_util2(); + function MapField(name, id, keyType, type, options, comment) { + Field2.call(this, name, id, type, void 0, void 0, options, comment); + if (!util.isString(keyType)) + throw TypeError("keyType must be a string"); + this.keyType = keyType; + this.resolvedKeyType = null; + this.map = true; + } + MapField.fromJSON = function fromJSON(name, json) { + return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment); + }; + MapField.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "keyType", + this.keyType, + "type", + this.type, + "id", + this.id, + "extend", + this.extend, + "options", + this.options, + "comment", + keepComments ? this.comment : void 0 + ]); + }; + MapField.prototype.resolve = function resolve() { + if (this.resolved) + return this; + if (types.mapKey[this.keyType] === void 0) + throw Error("invalid key type: " + this.keyType); + return Field2.prototype.resolve.call(this); + }; + MapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) { + if (typeof fieldValueType === "function") + fieldValueType = util.decorateType(fieldValueType).name; + else if (fieldValueType && typeof fieldValueType === "object") + fieldValueType = util.decorateEnum(fieldValueType).name; + return function mapFieldDecorator(prototype, fieldName) { + util.decorateType(prototype.constructor).add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType)); + }; + }; + } +}); + +// node_modules/protobufjs/src/method.js +var require_method = __commonJS({ + "node_modules/protobufjs/src/method.js"(exports2, module2) { + "use strict"; + module2.exports = Method; + var ReflectionObject = require_object3(); + ((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = "Method"; + var util = require_util2(); + function Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) { + if (util.isObject(requestStream)) { + options = requestStream; + requestStream = responseStream = void 0; + } else if (util.isObject(responseStream)) { + options = responseStream; + responseStream = void 0; + } + if (!(type === void 0 || util.isString(type))) + throw TypeError("type must be a string"); + if (!util.isString(requestType)) + throw TypeError("requestType must be a string"); + if (!util.isString(responseType)) + throw TypeError("responseType must be a string"); + ReflectionObject.call(this, name, options); + this.type = type || "rpc"; + this.requestType = requestType; + this.requestStream = requestStream ? true : void 0; + this.responseType = responseType; + this.responseStream = responseStream ? true : void 0; + this.resolvedRequestType = null; + this.resolvedResponseType = null; + this.comment = comment; + this.parsedOptions = parsedOptions; + } + Method.fromJSON = function fromJSON(name, json) { + return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions); + }; + Method.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "type", + this.type !== "rpc" && /* istanbul ignore next */ + this.type || void 0, + "requestType", + this.requestType, + "requestStream", + this.requestStream, + "responseType", + this.responseType, + "responseStream", + this.responseStream, + "options", + this.options, + "comment", + keepComments ? this.comment : void 0, + "parsedOptions", + this.parsedOptions + ]); + }; + Method.prototype.resolve = function resolve() { + if (this.resolved) + return this; + this.resolvedRequestType = this.parent.lookupType(this.requestType); + this.resolvedResponseType = this.parent.lookupType(this.responseType); + return ReflectionObject.prototype.resolve.call(this); + }; + } +}); + +// node_modules/protobufjs/src/service.js +var require_service2 = __commonJS({ + "node_modules/protobufjs/src/service.js"(exports2, module2) { + "use strict"; + module2.exports = Service; + var Namespace = require_namespace(); + ((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = "Service"; + var Method = require_method(); + var util = require_util2(); + var rpc = require_rpc(); + function Service(name, options) { + Namespace.call(this, name, options); + this.methods = {}; + this._methodsArray = null; + } + Service.fromJSON = function fromJSON(name, json) { + var service = new Service(name, json.options); + if (json.methods) + for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i) + service.add(Method.fromJSON(names[i], json.methods[names[i]])); + if (json.nested) + service.addJSON(json.nested); + service.comment = json.comment; + return service; + }; + Service.prototype.toJSON = function toJSON(toJSONOptions) { + var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions); + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options", + inherited && inherited.options || void 0, + "methods", + Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ + {}, + "nested", + inherited && inherited.nested || void 0, + "comment", + keepComments ? this.comment : void 0 + ]); + }; + Object.defineProperty(Service.prototype, "methodsArray", { + get: function() { + return this._methodsArray || (this._methodsArray = util.toArray(this.methods)); + } + }); + function clearCache(service) { + service._methodsArray = null; + return service; + } + Service.prototype.get = function get(name) { + return this.methods[name] || Namespace.prototype.get.call(this, name); + }; + Service.prototype.resolveAll = function resolveAll() { + var methods = this.methodsArray; + for (var i = 0; i < methods.length; ++i) + methods[i].resolve(); + return Namespace.prototype.resolve.call(this); + }; + Service.prototype.add = function add2(object) { + if (this.get(object.name)) + throw Error("duplicate name '" + object.name + "' in " + this); + if (object instanceof Method) { + this.methods[object.name] = object; + object.parent = this; + return clearCache(this); + } + return Namespace.prototype.add.call(this, object); + }; + Service.prototype.remove = function remove(object) { + if (object instanceof Method) { + if (this.methods[object.name] !== object) + throw Error(object + " is not a member of " + this); + delete this.methods[object.name]; + object.parent = null; + return clearCache(this); + } + return Namespace.prototype.remove.call(this, object); + }; + Service.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) { + var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited); + for (var i = 0, method; i < /* initializes */ + this.methodsArray.length; ++i) { + var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\w_]/g, ""); + rpcService[methodName] = util.codegen(["r", "c"], util.isReserved(methodName) ? methodName + "_" : methodName)("return this.rpcCall(m,q,s,r,c)")({ + m: method, + q: method.resolvedRequestType.ctor, + s: method.resolvedResponseType.ctor + }); + } + return rpcService; + }; + } +}); + +// node_modules/protobufjs/src/message.js +var require_message = __commonJS({ + "node_modules/protobufjs/src/message.js"(exports2, module2) { + "use strict"; + module2.exports = Message; + var util = require_minimal(); + function Message(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + this[keys[i]] = properties[keys[i]]; + } + Message.create = function create(properties) { + return this.$type.create(properties); + }; + Message.encode = function encode(message, writer) { + return this.$type.encode(message, writer); + }; + Message.encodeDelimited = function encodeDelimited(message, writer) { + return this.$type.encodeDelimited(message, writer); + }; + Message.decode = function decode(reader) { + return this.$type.decode(reader); + }; + Message.decodeDelimited = function decodeDelimited(reader) { + return this.$type.decodeDelimited(reader); + }; + Message.verify = function verify(message) { + return this.$type.verify(message); + }; + Message.fromObject = function fromObject(object) { + return this.$type.fromObject(object); + }; + Message.toObject = function toObject(message, options) { + return this.$type.toObject(message, options); + }; + Message.prototype.toJSON = function toJSON() { + return this.$type.toObject(this, util.toJSONOptions); + }; + } +}); + +// node_modules/protobufjs/src/decoder.js +var require_decoder = __commonJS({ + "node_modules/protobufjs/src/decoder.js"(exports2, module2) { + "use strict"; + module2.exports = decoder; + var Enum = require_enum3(); + var types = require_types(); + var util = require_util2(); + function missing(field) { + return "missing required '" + field.name + "'"; + } + function decoder(mtype) { + var gen = util.codegen(["r", "l"], mtype.name + "$decode")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new this.ctor" + (mtype.fieldsArray.filter(function(field2) { + return field2.map; + }).length ? ",k,value" : ""))("while(r.pos>>3){"); + var i = 0; + for (; i < /* initializes */ + mtype.fieldsArray.length; ++i) { + var field = mtype._fieldsArray[i].resolve(), type = field.resolvedType instanceof Enum ? "int32" : field.type, ref = "m" + util.safeProp(field.name); + gen("case %i: {", field.id); + if (field.map) { + gen("if(%s===util.emptyObject)", ref)("%s={}", ref)("var c2 = r.uint32()+r.pos"); + if (types.defaults[field.keyType] !== void 0) gen("k=%j", types.defaults[field.keyType]); + else gen("k=null"); + if (types.defaults[type] !== void 0) gen("value=%j", types.defaults[type]); + else gen("value=null"); + gen("while(r.pos>>3){")("case 1: k=r.%s(); break", field.keyType)("case 2:"); + if (types.basic[type] === void 0) gen("value=types[%i].decode(r,r.uint32())", i); + else gen("value=r.%s()", type); + gen("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"); + if (types.long[field.keyType] !== void 0) gen('%s[typeof k==="object"?util.longToHash(k):k]=value', ref); + else gen("%s[k]=value", ref); + } else if (field.repeated) { + gen("if(!(%s&&%s.length))", ref, ref)("%s=[]", ref); + if (types.packed[type] !== void 0) gen("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos>>0", prop, prop); + break; + case "int32": + case "sint32": + case "sfixed32": + gen("m%s=d%s|0", prop, prop); + break; + case "uint64": + isUnsigned = true; + // eslint-disable-next-line no-fallthrough + case "int64": + case "sint64": + case "fixed64": + case "sfixed64": + gen("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j", prop, prop, isUnsigned)('else if(typeof d%s==="string")', prop)("m%s=parseInt(d%s,10)", prop, prop)('else if(typeof d%s==="number")', prop)("m%s=d%s", prop, prop)('else if(typeof d%s==="object")', prop)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)", prop, prop, prop, isUnsigned ? "true" : ""); + break; + case "bytes": + gen('if(typeof d%s==="string")', prop)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)", prop, prop, prop)("else if(d%s.length >= 0)", prop)("m%s=d%s", prop, prop); + break; + case "string": + gen("m%s=String(d%s)", prop, prop); + break; + case "bool": + gen("m%s=Boolean(d%s)", prop, prop); + break; + } + } + return gen; + } + converter.fromObject = function fromObject(mtype) { + var fields = mtype.fieldsArray; + var gen = util.codegen(["d"], mtype.name + "$fromObject")("if(d instanceof this.ctor)")("return d"); + if (!fields.length) return gen("return new this.ctor"); + gen("var m=new this.ctor"); + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), prop = util.safeProp(field.name); + if (field.map) { + gen("if(d%s){", prop)('if(typeof d%s!=="object")', prop)("throw TypeError(%j)", field.fullName + ": object expected")("m%s={}", prop)("for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s", prop, prop, prop, prop, isUnsigned ? "true" : "", prop); + break; + case "bytes": + gen("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s", prop, prop, prop, prop, prop); + break; + default: + gen("d%s=m%s", prop, prop); + break; + } + } + return gen; + } + converter.toObject = function toObject(mtype) { + var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById); + if (!fields.length) + return util.codegen()("return {}"); + var gen = util.codegen(["m", "o"], mtype.name + "$toObject")("if(!o)")("o={}")("var d={}"); + var repeatedFields = [], mapFields = [], normalFields = [], i = 0; + for (; i < fields.length; ++i) + if (!fields[i].partOf) + (fields[i].resolve().repeated ? repeatedFields : fields[i].map ? mapFields : normalFields).push(fields[i]); + if (repeatedFields.length) { + gen("if(o.arrays||o.defaults){"); + for (i = 0; i < repeatedFields.length; ++i) gen("d%s=[]", util.safeProp(repeatedFields[i].name)); + gen("}"); + } + if (mapFields.length) { + gen("if(o.objects||o.defaults){"); + for (i = 0; i < mapFields.length; ++i) gen("d%s={}", util.safeProp(mapFields[i].name)); + gen("}"); + } + if (normalFields.length) { + gen("if(o.defaults){"); + for (i = 0; i < normalFields.length; ++i) { + var field = normalFields[i], prop = util.safeProp(field.name); + if (field.resolvedType instanceof Enum) gen("d%s=o.enums===String?%j:%j", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault); + else if (field.long) gen("if(util.Long){")("var n=new util.Long(%i,%i,%j)", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)("d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n", prop)("}else")("d%s=o.longs===String?%j:%i", prop, field.typeDefault.toString(), field.typeDefault.toNumber()); + else if (field.bytes) { + var arrayDefault = "[" + Array.prototype.slice.call(field.typeDefault).join(",") + "]"; + gen("if(o.bytes===String)d%s=%j", prop, String.fromCharCode.apply(String, field.typeDefault))("else{")("d%s=%s", prop, arrayDefault)("if(o.bytes!==Array)d%s=util.newBuffer(d%s)", prop, prop)("}"); + } else gen("d%s=%j", prop, field.typeDefault); + } + gen("}"); + } + var hasKs2 = false; + for (i = 0; i < fields.length; ++i) { + var field = fields[i], index = mtype._fieldsArray.indexOf(field), prop = util.safeProp(field.name); + if (field.map) { + if (!hasKs2) { + hasKs2 = true; + gen("var ks2"); + } + gen("if(m%s&&(ks2=Object.keys(m%s)).length){", prop, prop)("d%s={}", prop)("for(var j=0;j} + * @readonly + */ + fieldsById: { + get: function() { + if (this._fieldsById) + return this._fieldsById; + this._fieldsById = {}; + for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) { + var field = this.fields[names[i]], id = field.id; + if (this._fieldsById[id]) + throw Error("duplicate id " + id + " in " + this); + this._fieldsById[id] = field; + } + return this._fieldsById; + } + }, + /** + * Fields of this message as an array for iteration. + * @name Type#fieldsArray + * @type {Field[]} + * @readonly + */ + fieldsArray: { + get: function() { + return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields)); + } + }, + /** + * Oneofs of this message as an array for iteration. + * @name Type#oneofsArray + * @type {OneOf[]} + * @readonly + */ + oneofsArray: { + get: function() { + return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs)); + } + }, + /** + * The registered constructor, if any registered, otherwise a generic constructor. + * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor. + * @name Type#ctor + * @type {Constructor<{}>} + */ + ctor: { + get: function() { + return this._ctor || (this.ctor = Type.generateConstructor(this)()); + }, + set: function(ctor) { + var prototype = ctor.prototype; + if (!(prototype instanceof Message)) { + (ctor.prototype = new Message()).constructor = ctor; + util.merge(ctor.prototype, prototype); + } + ctor.$type = ctor.prototype.$type = this; + util.merge(ctor, Message, true); + this._ctor = ctor; + var i = 0; + for (; i < /* initializes */ + this.fieldsArray.length; ++i) + this._fieldsArray[i].resolve(); + var ctorProperties = {}; + for (i = 0; i < /* initializes */ + this.oneofsArray.length; ++i) + ctorProperties[this._oneofsArray[i].resolve().name] = { + get: util.oneOfGetter(this._oneofsArray[i].oneof), + set: util.oneOfSetter(this._oneofsArray[i].oneof) + }; + if (i) + Object.defineProperties(ctor.prototype, ctorProperties); + } + } + }); + Type.generateConstructor = function generateConstructor(mtype) { + var gen = util.codegen(["p"], mtype.name); + for (var i = 0, field; i < mtype.fieldsArray.length; ++i) + if ((field = mtype._fieldsArray[i]).map) gen("this%s={}", util.safeProp(field.name)); + else if (field.repeated) gen("this%s=[]", util.safeProp(field.name)); + return gen("if(p)for(var ks=Object.keys(p),i=0;i -1) { + var altname = filename2.substring(idx); + if (altname in common) return altname; + } + return null; + } + function process3(filename2, source) { + try { + if (util.isString(source) && source.charAt(0) === "{") + source = JSON.parse(source); + if (!util.isString(source)) + self2.setOptions(source.options).addJSON(source.nested); + else { + parse.filename = filename2; + var parsed = parse(source, self2, options), resolved2, i2 = 0; + if (parsed.imports) { + for (; i2 < parsed.imports.length; ++i2) + if (resolved2 = getBundledFileName(parsed.imports[i2]) || self2.resolvePath(filename2, parsed.imports[i2])) + fetch2(resolved2); + } + if (parsed.weakImports) { + for (i2 = 0; i2 < parsed.weakImports.length; ++i2) + if (resolved2 = getBundledFileName(parsed.weakImports[i2]) || self2.resolvePath(filename2, parsed.weakImports[i2])) + fetch2(resolved2, true); + } + } + } catch (err2) { + finish(err2); + } + if (!sync && !queued) + finish(null, self2); + } + function fetch2(filename2, weak) { + filename2 = getBundledFileName(filename2) || filename2; + if (self2.files.indexOf(filename2) > -1) + return; + self2.files.push(filename2); + if (filename2 in common) { + if (sync) + process3(filename2, common[filename2]); + else { + ++queued; + setTimeout(function() { + --queued; + process3(filename2, common[filename2]); + }); + } + return; + } + if (sync) { + var source; + try { + source = util.fs.readFileSync(filename2).toString("utf8"); + } catch (err2) { + if (!weak) + finish(err2); + return; + } + process3(filename2, source); + } else { + ++queued; + self2.fetch(filename2, function(err2, source2) { + --queued; + if (!callback) + return; + if (err2) { + if (!weak) + finish(err2); + else if (!queued) + finish(null, self2); + return; + } + process3(filename2, source2); + }); + } + } + var queued = 0; + if (util.isString(filename)) + filename = [filename]; + for (var i = 0, resolved; i < filename.length; ++i) + if (resolved = self2.resolvePath("", filename[i])) + fetch2(resolved); + if (sync) + return self2; + if (!queued) + finish(null, self2); + return void 0; + }; + Root.prototype.loadSync = function loadSync(filename, options) { + if (!util.isNode) + throw Error("not supported"); + return this.load(filename, options, SYNC); + }; + Root.prototype.resolveAll = function resolveAll() { + if (this.deferred.length) + throw Error("unresolvable extensions: " + this.deferred.map(function(field) { + return "'extend " + field.extend + "' in " + field.parent.fullName; + }).join(", ")); + return Namespace.prototype.resolveAll.call(this); + }; + var exposeRe = /^[A-Z]/; + function tryHandleExtension(root, field) { + var extendedType = field.parent.lookup(field.extend); + if (extendedType) { + var sisterField = new Field2(field.fullName, field.id, field.type, field.rule, void 0, field.options); + if (extendedType.get(sisterField.name)) { + return true; + } + sisterField.declaringField = field; + field.extensionField = sisterField; + extendedType.add(sisterField); + return true; + } + return false; + } + Root.prototype._handleAdd = function _handleAdd(object) { + if (object instanceof Field2) { + if ( + /* an extension field (implies not part of a oneof) */ + object.extend !== void 0 && /* not already handled */ + !object.extensionField + ) { + if (!tryHandleExtension(this, object)) + this.deferred.push(object); + } + } else if (object instanceof Enum) { + if (exposeRe.test(object.name)) + object.parent[object.name] = object.values; + } else if (!(object instanceof OneOf)) { + if (object instanceof Type) + for (var i = 0; i < this.deferred.length; ) + if (tryHandleExtension(this, this.deferred[i])) + this.deferred.splice(i, 1); + else + ++i; + for (var j = 0; j < /* initializes */ + object.nestedArray.length; ++j) + this._handleAdd(object._nestedArray[j]); + if (exposeRe.test(object.name)) + object.parent[object.name] = object; + } + }; + Root.prototype._handleRemove = function _handleRemove(object) { + if (object instanceof Field2) { + if ( + /* an extension field */ + object.extend !== void 0 + ) { + if ( + /* already handled */ + object.extensionField + ) { + object.extensionField.parent.remove(object.extensionField); + object.extensionField = null; + } else { + var index = this.deferred.indexOf(object); + if (index > -1) + this.deferred.splice(index, 1); + } + } + } else if (object instanceof Enum) { + if (exposeRe.test(object.name)) + delete object.parent[object.name]; + } else if (object instanceof Namespace) { + for (var i = 0; i < /* initializes */ + object.nestedArray.length; ++i) + this._handleRemove(object._nestedArray[i]); + if (exposeRe.test(object.name)) + delete object.parent[object.name]; + } + }; + Root._configure = function(Type_, parse_, common_) { + Type = Type_; + parse = parse_; + common = common_; + }; + } +}); + +// node_modules/protobufjs/src/util.js +var require_util2 = __commonJS({ + "node_modules/protobufjs/src/util.js"(exports2, module2) { + "use strict"; + var util = module2.exports = require_minimal(); + var roots = require_roots(); + var Type; + var Enum; + util.codegen = require_codegen(); + util.fetch = require_fetch(); + util.path = require_path(); + util.fs = util.inquire("fs"); + util.toArray = function toArray(object) { + if (object) { + var keys = Object.keys(object), array = new Array(keys.length), index = 0; + while (index < keys.length) + array[index] = object[keys[index++]]; + return array; + } + return []; + }; + util.toObject = function toObject(array) { + var object = {}, index = 0; + while (index < array.length) { + var key = array[index++], val = array[index++]; + if (val !== void 0) + object[key] = val; + } + return object; + }; + var safePropBackslashRe = /\\/g; + var safePropQuoteRe = /"/g; + util.isReserved = function isReserved(name) { + return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name); + }; + util.safeProp = function safeProp(prop) { + if (!/^[$\w_]+$/.test(prop) || util.isReserved(prop)) + return '["' + prop.replace(safePropBackslashRe, "\\\\").replace(safePropQuoteRe, '\\"') + '"]'; + return "." + prop; + }; + util.ucFirst = function ucFirst(str) { + return str.charAt(0).toUpperCase() + str.substring(1); + }; + var camelCaseRe = /_([a-z])/g; + util.camelCase = function camelCase(str) { + return str.substring(0, 1) + str.substring(1).replace(camelCaseRe, function($0, $1) { + return $1.toUpperCase(); + }); + }; + util.compareFieldsById = function compareFieldsById(a, b) { + return a.id - b.id; + }; + util.decorateType = function decorateType(ctor, typeName) { + if (ctor.$type) { + if (typeName && ctor.$type.name !== typeName) { + util.decorateRoot.remove(ctor.$type); + ctor.$type.name = typeName; + util.decorateRoot.add(ctor.$type); + } + return ctor.$type; + } + if (!Type) + Type = require_type7(); + var type = new Type(typeName || ctor.name); + util.decorateRoot.add(type); + type.ctor = ctor; + Object.defineProperty(ctor, "$type", { value: type, enumerable: false }); + Object.defineProperty(ctor.prototype, "$type", { value: type, enumerable: false }); + return type; + }; + var decorateEnumIndex = 0; + util.decorateEnum = function decorateEnum(object) { + if (object.$type) + return object.$type; + if (!Enum) + Enum = require_enum3(); + var enm = new Enum("Enum" + decorateEnumIndex++, object); + util.decorateRoot.add(enm); + Object.defineProperty(object, "$type", { value: enm, enumerable: false }); + return enm; + }; + util.setProperty = function setProperty(dst, path2, value) { + function setProp(dst2, path3, value2) { + var part = path3.shift(); + if (part === "__proto__" || part === "prototype") { + return dst2; + } + if (path3.length > 0) { + dst2[part] = setProp(dst2[part] || {}, path3, value2); + } else { + var prevValue = dst2[part]; + if (prevValue) + value2 = [].concat(prevValue).concat(value2); + dst2[part] = value2; + } + return dst2; + } + if (typeof dst !== "object") + throw TypeError("dst must be an object"); + if (!path2) + throw TypeError("path must be specified"); + path2 = path2.split("."); + return setProp(dst, path2, value); + }; + Object.defineProperty(util, "decorateRoot", { + get: function() { + return roots["decorated"] || (roots["decorated"] = new (require_root())()); + } + }); + } +}); + +// node_modules/protobufjs/src/object.js +var require_object3 = __commonJS({ + "node_modules/protobufjs/src/object.js"(exports2, module2) { + "use strict"; + module2.exports = ReflectionObject; + ReflectionObject.className = "ReflectionObject"; + var util = require_util2(); + var Root; + function ReflectionObject(name, options) { + if (!util.isString(name)) + throw TypeError("name must be a string"); + if (options && !util.isObject(options)) + throw TypeError("options must be an object"); + this.options = options; + this.parsedOptions = null; + this.name = name; + this.parent = null; + this.resolved = false; + this.comment = null; + this.filename = null; + } + Object.defineProperties(ReflectionObject.prototype, { + /** + * Reference to the root namespace. + * @name ReflectionObject#root + * @type {Root} + * @readonly + */ + root: { + get: function() { + var ptr = this; + while (ptr.parent !== null) + ptr = ptr.parent; + return ptr; + } + }, + /** + * Full name including leading dot. + * @name ReflectionObject#fullName + * @type {string} + * @readonly + */ + fullName: { + get: function() { + var path2 = [this.name], ptr = this.parent; + while (ptr) { + path2.unshift(ptr.name); + ptr = ptr.parent; + } + return path2.join("."); + } + } + }); + ReflectionObject.prototype.toJSON = /* istanbul ignore next */ + function toJSON() { + throw Error(); + }; + ReflectionObject.prototype.onAdd = function onAdd(parent) { + if (this.parent && this.parent !== parent) + this.parent.remove(this); + this.parent = parent; + this.resolved = false; + var root = parent.root; + if (root instanceof Root) + root._handleAdd(this); + }; + ReflectionObject.prototype.onRemove = function onRemove(parent) { + var root = parent.root; + if (root instanceof Root) + root._handleRemove(this); + this.parent = null; + this.resolved = false; + }; + ReflectionObject.prototype.resolve = function resolve() { + if (this.resolved) + return this; + if (this.root instanceof Root) + this.resolved = true; + return this; + }; + ReflectionObject.prototype.getOption = function getOption(name) { + if (this.options) + return this.options[name]; + return void 0; + }; + ReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) { + if (!ifNotSet || !this.options || this.options[name] === void 0) + (this.options || (this.options = {}))[name] = value; + return this; + }; + ReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) { + if (!this.parsedOptions) { + this.parsedOptions = []; + } + var parsedOptions = this.parsedOptions; + if (propName) { + var opt = parsedOptions.find(function(opt2) { + return Object.prototype.hasOwnProperty.call(opt2, name); + }); + if (opt) { + var newValue = opt[name]; + util.setProperty(newValue, propName, value); + } else { + opt = {}; + opt[name] = util.setProperty({}, propName, value); + parsedOptions.push(opt); + } + } else { + var newOpt = {}; + newOpt[name] = value; + parsedOptions.push(newOpt); + } + return this; + }; + ReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) { + if (options) + for (var keys = Object.keys(options), i = 0; i < keys.length; ++i) + this.setOption(keys[i], options[keys[i]], ifNotSet); + return this; + }; + ReflectionObject.prototype.toString = function toString() { + var className = this.constructor.className, fullName = this.fullName; + if (fullName.length) + return className + " " + fullName; + return className; + }; + ReflectionObject._configure = function(Root_) { + Root = Root_; + }; + } +}); + +// node_modules/protobufjs/src/enum.js +var require_enum3 = __commonJS({ + "node_modules/protobufjs/src/enum.js"(exports2, module2) { + "use strict"; + module2.exports = Enum; + var ReflectionObject = require_object3(); + ((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = "Enum"; + var Namespace = require_namespace(); + var util = require_util2(); + function Enum(name, values, options, comment, comments, valuesOptions) { + ReflectionObject.call(this, name, options); + if (values && typeof values !== "object") + throw TypeError("values must be an object"); + this.valuesById = {}; + this.values = Object.create(this.valuesById); + this.comment = comment; + this.comments = comments || {}; + this.valuesOptions = valuesOptions; + this.reserved = void 0; + if (values) { + for (var keys = Object.keys(values), i = 0; i < keys.length; ++i) + if (typeof values[keys[i]] === "number") + this.valuesById[this.values[keys[i]] = values[keys[i]]] = keys[i]; + } + } + Enum.fromJSON = function fromJSON(name, json) { + var enm = new Enum(name, json.values, json.options, json.comment, json.comments); + enm.reserved = json.reserved; + return enm; + }; + Enum.prototype.toJSON = function toJSON(toJSONOptions) { + var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false; + return util.toObject([ + "options", + this.options, + "valuesOptions", + this.valuesOptions, + "values", + this.values, + "reserved", + this.reserved && this.reserved.length ? this.reserved : void 0, + "comment", + keepComments ? this.comment : void 0, + "comments", + keepComments ? this.comments : void 0 + ]); + }; + Enum.prototype.add = function add2(name, id, comment, options) { + if (!util.isString(name)) + throw TypeError("name must be a string"); + if (!util.isInteger(id)) + throw TypeError("id must be an integer"); + if (this.values[name] !== void 0) + throw Error("duplicate name '" + name + "' in " + this); + if (this.isReservedId(id)) + throw Error("id " + id + " is reserved in " + this); + if (this.isReservedName(name)) + throw Error("name '" + name + "' is reserved in " + this); + if (this.valuesById[id] !== void 0) { + if (!(this.options && this.options.allow_alias)) + throw Error("duplicate id " + id + " in " + this); + this.values[name] = id; + } else + this.valuesById[this.values[name] = id] = name; + if (options) { + if (this.valuesOptions === void 0) + this.valuesOptions = {}; + this.valuesOptions[name] = options || null; + } + this.comments[name] = comment || null; + return this; + }; + Enum.prototype.remove = function remove(name) { + if (!util.isString(name)) + throw TypeError("name must be a string"); + var val = this.values[name]; + if (val == null) + throw Error("name '" + name + "' does not exist in " + this); + delete this.valuesById[val]; + delete this.values[name]; + delete this.comments[name]; + if (this.valuesOptions) + delete this.valuesOptions[name]; + return this; + }; + Enum.prototype.isReservedId = function isReservedId(id) { + return Namespace.isReservedId(this.reserved, id); + }; + Enum.prototype.isReservedName = function isReservedName(name) { + return Namespace.isReservedName(this.reserved, name); + }; + } +}); + +// node_modules/protobufjs/src/encoder.js +var require_encoder = __commonJS({ + "node_modules/protobufjs/src/encoder.js"(exports2, module2) { + "use strict"; + module2.exports = encoder; + var Enum = require_enum3(); + var types = require_types(); + var util = require_util2(); + function genTypePartial(gen, field, fieldIndex, ref) { + return field.resolvedType.group ? gen("types[%i].encode(%s,w.uint32(%i)).uint32(%i)", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0) : gen("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()", fieldIndex, ref, (field.id << 3 | 2) >>> 0); + } + function encoder(mtype) { + var gen = util.codegen(["m", "w"], mtype.name + "$encode")("if(!w)")("w=Writer.create()"); + var i, ref; + var fields = ( + /* initializes */ + mtype.fieldsArray.slice().sort(util.compareFieldsById) + ); + for (var i = 0; i < fields.length; ++i) { + var field = fields[i].resolve(), index = mtype._fieldsArray.indexOf(field), type = field.resolvedType instanceof Enum ? "int32" : field.type, wireType = types.basic[type]; + ref = "m" + util.safeProp(field.name); + if (field.map) { + gen("if(%s!=null&&Object.hasOwnProperty.call(m,%j)){", ref, field.name)("for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType); + if (wireType === void 0) gen("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", index, ref); + else gen(".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | wireType, type, ref); + gen("}")("}"); + } else if (field.repeated) { + gen("if(%s!=null&&%s.length){", ref, ref); + if (field.packed && types.packed[type] !== void 0) { + gen("w.uint32(%i).fork()", (field.id << 3 | 2) >>> 0)("for(var i=0;i<%s.length;++i)", ref)("w.%s(%s[i])", type, ref)("w.ldelim()"); + } else { + gen("for(var i=0;i<%s.length;++i)", ref); + if (wireType === void 0) + genTypePartial(gen, field, index, ref + "[i]"); + else gen("w.uint32(%i).%s(%s[i])", (field.id << 3 | wireType) >>> 0, type, ref); + } + gen("}"); + } else { + if (field.optional) gen("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", ref, field.name); + if (wireType === void 0) + genTypePartial(gen, field, index, ref); + else gen("w.uint32(%i).%s(%s)", (field.id << 3 | wireType) >>> 0, type, ref); + } + } + return gen("return w"); + } + } +}); + +// node_modules/protobufjs/src/index-light.js +var require_index_light = __commonJS({ + "node_modules/protobufjs/src/index-light.js"(exports2, module2) { + "use strict"; + var protobuf = module2.exports = require_index_minimal(); + protobuf.build = "light"; + function load(filename, root, callback) { + if (typeof root === "function") { + callback = root; + root = new protobuf.Root(); + } else if (!root) + root = new protobuf.Root(); + return root.load(filename, callback); + } + protobuf.load = load; + function loadSync(filename, root) { + if (!root) + root = new protobuf.Root(); + return root.loadSync(filename); + } + protobuf.loadSync = loadSync; + protobuf.encoder = require_encoder(); + protobuf.decoder = require_decoder(); + protobuf.verifier = require_verifier(); + protobuf.converter = require_converter(); + protobuf.ReflectionObject = require_object3(); + protobuf.Namespace = require_namespace(); + protobuf.Root = require_root(); + protobuf.Enum = require_enum3(); + protobuf.Type = require_type7(); + protobuf.Field = require_field(); + protobuf.OneOf = require_oneof(); + protobuf.MapField = require_mapfield(); + protobuf.Service = require_service2(); + protobuf.Method = require_method(); + protobuf.Message = require_message(); + protobuf.wrappers = require_wrappers(); + protobuf.types = require_types(); + protobuf.util = require_util2(); + protobuf.ReflectionObject._configure(protobuf.Root); + protobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum); + protobuf.Root._configure(protobuf.Type); + protobuf.Field._configure(protobuf.Type); + } +}); + +// node_modules/protobufjs/light.js +var require_light = __commonJS({ + "node_modules/protobufjs/light.js"(exports2, module2) { + "use strict"; + module2.exports = require_index_light(); + } +}); + +// node_modules/@trezor/protobuf/lib/utils.js +var require_utils2 = __commonJS({ + "node_modules/@trezor/protobuf/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createMessageFromType = exports2.createMessageFromName = exports2.isPrimitiveField = void 0; + exports2.parseConfigure = parseConfigure; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var protobuf = tslib_1.__importStar(require_light()); + var primitiveTypes = ["bool", "string", "bytes", "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64", "double", "float"]; + var isPrimitiveField = (field) => primitiveTypes.includes(field); + exports2.isPrimitiveField = isPrimitiveField; + function parseConfigure(data) { + if (typeof data === "string") { + return protobuf.Root.fromJSON(JSON.parse(data)); + } + return protobuf.Root.fromJSON(data); + } + var createMessageFromName = (messages, name) => { + const Message = messages.lookupType(name); + const messageTypes = messages.lookupEnum("MessageType"); + let messageTypeId = messageTypes.values[name]; + if (typeof messageTypeId !== "number" && Message.options) { + messageTypeId = Message.options["(wire_type)"]; + } + return { + Message, + messageType: messageTypeId ?? name + }; + }; + exports2.createMessageFromName = createMessageFromName; + var createMessageFromType = (messages, messageType) => { + if (typeof messageType === "string") { + const Message2 = messages.lookupType(messageType); + return { + Message: Message2, + messageName: messageType + }; + } + const messageTypes = messages.lookupEnum("MessageType"); + const messageName = messageTypes.valuesById[messageType]; + const Message = messages.lookupType(messageName); + return { + Message, + messageName + }; + }; + exports2.createMessageFromType = createMessageFromType; + } +}); + +// node_modules/@trezor/protobuf/lib/decode.js +var require_decode = __commonJS({ + "node_modules/@trezor/protobuf/lib/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decodeMessage = exports2.decode = void 0; + var utils_1 = require_utils2(); + var transform = (field, value) => { + if ((0, utils_1.isPrimitiveField)(field.type)) { + if (field.optional && typeof value === "undefined") { + return null; + } + if (field.type === "bytes") { + return Buffer.from(value).toString("hex"); + } + if (field.long) { + if (Number.isSafeInteger(value.toNumber())) { + return value.toNumber(); + } + return value.toString(); + } + return value; + } + if ("valuesById" in field.resolvedType) { + return field.resolvedType.valuesById[value]; + } + if (field.resolvedType.fields) { + return messageToJSON(value, field.resolvedType.fields); + } + throw new Error(`transport: decode: case not handled: ${field}`); + }; + function messageToJSON(MessageParam, fields) { + if (!MessageParam) { + return {}; + } + const { + ...message + } = MessageParam; + const res = {}; + Object.keys(fields).forEach((key) => { + const field = fields[key]; + const value = message[key]; + if (field.repeated) { + res[key] = value.map((v) => transform(field, v)); + } else { + res[key] = transform(field, value); + } + }); + return res; + } + var decode = (MessageParam, data) => { + const decoded = MessageParam.decode(new Uint8Array(data)); + return messageToJSON(decoded, decoded.$type.fields); + }; + exports2.decode = decode; + var decodeMessage = (messages, messageType, data) => { + const { + Message, + messageName + } = (0, utils_1.createMessageFromType)(messages, messageType); + const message = (0, exports2.decode)(Message, data); + return { + type: messageName, + message + }; + }; + exports2.decodeMessage = decodeMessage; + } +}); + +// node_modules/@trezor/protobuf/lib/encode.js +var require_encode = __commonJS({ + "node_modules/@trezor/protobuf/lib/encode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.encodeMessage = exports2.encode = void 0; + var light_1 = require_light(); + var utils_1 = require_utils2(); + var transform = (fieldType, value) => { + if (fieldType === "bytes") { + if (typeof value === "string" && !value) return value; + return Buffer.from(value, "hex"); + } + if (typeof value === "number" && !Number.isSafeInteger(value)) { + throw new RangeError("field value is not within safe integer range"); + } + if (fieldType === "string" && typeof value === "string") { + value = value.replace(/[’‘]/g, "'"); + } + return value; + }; + function patch(Message, payload) { + const patched = {}; + if (!Message.fields) { + return patched; + } + Object.keys(Message.fields).forEach((key) => { + const field = Message.fields[key]; + const value = payload[key]; + if (typeof value === "undefined") { + return; + } + if ((0, utils_1.isPrimitiveField)(field.type)) { + if (field.repeated) { + patched[key] = value.map((v) => transform(field.type, v)); + } else { + patched[key] = transform(field.type, value); + } + return; + } + if (field.repeated) { + const fieldType = Message.lookupTypeOrEnum(field.type); + if (fieldType instanceof light_1.Enum) { + patched[key] = value; + } else { + patched[key] = value.map((v) => patch(fieldType, v)); + } + } else if (typeof value === "object" && value !== null) { + const RefMessage = Message.lookupType(field.type); + patched[key] = patch(RefMessage, value); + } else if (typeof value === "number") { + const RefMessage = Message.lookupEnum(field.type); + patched[key] = RefMessage.values[value]; + } else { + patched[key] = value; + } + }); + return patched; + } + var encode = (Message, data) => { + const payload = patch(Message, data); + const message = Message.fromObject(payload); + const bytes = Message.encode(message).finish(); + return Buffer.from(bytes); + }; + exports2.encode = encode; + var encodeMessage = (messages, messageName, data) => { + const { + Message, + messageType + } = (0, utils_1.createMessageFromName)(messages, messageName); + const message = (0, exports2.encode)(Message, data); + return { + messageType, + message + }; + }; + exports2.encodeMessage = encodeMessage; + } +}); + +// node_modules/@trezor/protobuf/lib/messages.js +var require_messages = __commonJS({ + "node_modules/@trezor/protobuf/lib/messages.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TezosBallotType = exports2.TezosContractType = exports2.StellarSignerType = exports2.StellarMemoType = exports2.StellarAssetType = exports2.NEMImportanceTransferMode = exports2.NEMModificationType = exports2.NEMSupplyChangeType = exports2.NEMMosaicLevy = exports2.MoneroNetworkType = exports2.BootCommand = exports2.Enum_WordRequestType = exports2.SdProtectOperationType = exports2.Enum_RecoveryType = exports2.RecoveryDeviceInputMethod = exports2.Enum_Capability = exports2.Enum_RecoveryStatus = exports2.Enum_BackupAvailability = exports2.Enum_HomescreenFormat = exports2.Enum_DisplayRotation = exports2.Enum_SafetyCheckLevel = exports2.Enum_BackupType = exports2.EthereumDataType = exports2.DefinitionType = exports2.DebugWaitType = exports2.DebugTouchEventType = exports2.DebugPhysicalButton = exports2.DebugButton = exports2.Enum_PinMatrixRequestType = exports2.Enum_ButtonRequestType = exports2.Enum_FailureType = exports2.CardanoTxWitnessType = exports2.CardanoTxSigningMode = exports2.CardanoCVoteRegistrationFormat = exports2.CardanoTxAuxiliaryDataSupplementType = exports2.CardanoPoolRelayType = exports2.CardanoDRepType = exports2.CardanoCertificateType = exports2.CardanoTxOutputSerializationFormat = exports2.CardanoNativeScriptHashDisplayFormat = exports2.CardanoNativeScriptType = exports2.CardanoAddressType = exports2.CardanoDerivationType = exports2.Enum_RequestType = exports2.MultisigPubkeysOrder = exports2.AmountUnit = exports2.DecredStakingSpendType = exports2.Enum_OutputScriptType = exports2.Enum_InputScriptType = exports2.DeviceModelInternal = void 0; + var DeviceModelInternal; + (function(DeviceModelInternal2) { + DeviceModelInternal2["T1B1"] = "T1B1"; + DeviceModelInternal2["T2T1"] = "T2T1"; + DeviceModelInternal2["T2B1"] = "T2B1"; + DeviceModelInternal2["T3B1"] = "T3B1"; + DeviceModelInternal2["T3T1"] = "T3T1"; + DeviceModelInternal2["T3W1"] = "T3W1"; + DeviceModelInternal2["UNKNOWN"] = "UNKNOWN"; + })(DeviceModelInternal || (exports2.DeviceModelInternal = DeviceModelInternal = {})); + var Enum_InputScriptType; + (function(Enum_InputScriptType2) { + Enum_InputScriptType2[Enum_InputScriptType2["SPENDADDRESS"] = 0] = "SPENDADDRESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDMULTISIG"] = 1] = "SPENDMULTISIG"; + Enum_InputScriptType2[Enum_InputScriptType2["EXTERNAL"] = 2] = "EXTERNAL"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDWITNESS"] = 3] = "SPENDWITNESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDP2SHWITNESS"] = 4] = "SPENDP2SHWITNESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDTAPROOT"] = 5] = "SPENDTAPROOT"; + })(Enum_InputScriptType || (exports2.Enum_InputScriptType = Enum_InputScriptType = {})); + var Enum_OutputScriptType; + (function(Enum_OutputScriptType2) { + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOADDRESS"] = 0] = "PAYTOADDRESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOSCRIPTHASH"] = 1] = "PAYTOSCRIPTHASH"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOMULTISIG"] = 2] = "PAYTOMULTISIG"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOOPRETURN"] = 3] = "PAYTOOPRETURN"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOWITNESS"] = 4] = "PAYTOWITNESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOP2SHWITNESS"] = 5] = "PAYTOP2SHWITNESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOTAPROOT"] = 6] = "PAYTOTAPROOT"; + })(Enum_OutputScriptType || (exports2.Enum_OutputScriptType = Enum_OutputScriptType = {})); + var DecredStakingSpendType; + (function(DecredStakingSpendType2) { + DecredStakingSpendType2[DecredStakingSpendType2["SSGen"] = 0] = "SSGen"; + DecredStakingSpendType2[DecredStakingSpendType2["SSRTX"] = 1] = "SSRTX"; + })(DecredStakingSpendType || (exports2.DecredStakingSpendType = DecredStakingSpendType = {})); + var AmountUnit; + (function(AmountUnit2) { + AmountUnit2[AmountUnit2["BITCOIN"] = 0] = "BITCOIN"; + AmountUnit2[AmountUnit2["MILLIBITCOIN"] = 1] = "MILLIBITCOIN"; + AmountUnit2[AmountUnit2["MICROBITCOIN"] = 2] = "MICROBITCOIN"; + AmountUnit2[AmountUnit2["SATOSHI"] = 3] = "SATOSHI"; + })(AmountUnit || (exports2.AmountUnit = AmountUnit = {})); + var MultisigPubkeysOrder; + (function(MultisigPubkeysOrder2) { + MultisigPubkeysOrder2[MultisigPubkeysOrder2["PRESERVED"] = 0] = "PRESERVED"; + MultisigPubkeysOrder2[MultisigPubkeysOrder2["LEXICOGRAPHIC"] = 1] = "LEXICOGRAPHIC"; + })(MultisigPubkeysOrder || (exports2.MultisigPubkeysOrder = MultisigPubkeysOrder = {})); + var Enum_RequestType; + (function(Enum_RequestType2) { + Enum_RequestType2[Enum_RequestType2["TXINPUT"] = 0] = "TXINPUT"; + Enum_RequestType2[Enum_RequestType2["TXOUTPUT"] = 1] = "TXOUTPUT"; + Enum_RequestType2[Enum_RequestType2["TXMETA"] = 2] = "TXMETA"; + Enum_RequestType2[Enum_RequestType2["TXFINISHED"] = 3] = "TXFINISHED"; + Enum_RequestType2[Enum_RequestType2["TXEXTRADATA"] = 4] = "TXEXTRADATA"; + Enum_RequestType2[Enum_RequestType2["TXORIGINPUT"] = 5] = "TXORIGINPUT"; + Enum_RequestType2[Enum_RequestType2["TXORIGOUTPUT"] = 6] = "TXORIGOUTPUT"; + Enum_RequestType2[Enum_RequestType2["TXPAYMENTREQ"] = 7] = "TXPAYMENTREQ"; + })(Enum_RequestType || (exports2.Enum_RequestType = Enum_RequestType = {})); + var CardanoDerivationType; + (function(CardanoDerivationType2) { + CardanoDerivationType2[CardanoDerivationType2["LEDGER"] = 0] = "LEDGER"; + CardanoDerivationType2[CardanoDerivationType2["ICARUS"] = 1] = "ICARUS"; + CardanoDerivationType2[CardanoDerivationType2["ICARUS_TREZOR"] = 2] = "ICARUS_TREZOR"; + })(CardanoDerivationType || (exports2.CardanoDerivationType = CardanoDerivationType = {})); + var CardanoAddressType; + (function(CardanoAddressType2) { + CardanoAddressType2[CardanoAddressType2["BASE"] = 0] = "BASE"; + CardanoAddressType2[CardanoAddressType2["BASE_SCRIPT_KEY"] = 1] = "BASE_SCRIPT_KEY"; + CardanoAddressType2[CardanoAddressType2["BASE_KEY_SCRIPT"] = 2] = "BASE_KEY_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["BASE_SCRIPT_SCRIPT"] = 3] = "BASE_SCRIPT_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["POINTER"] = 4] = "POINTER"; + CardanoAddressType2[CardanoAddressType2["POINTER_SCRIPT"] = 5] = "POINTER_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["ENTERPRISE"] = 6] = "ENTERPRISE"; + CardanoAddressType2[CardanoAddressType2["ENTERPRISE_SCRIPT"] = 7] = "ENTERPRISE_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["BYRON"] = 8] = "BYRON"; + CardanoAddressType2[CardanoAddressType2["REWARD"] = 14] = "REWARD"; + CardanoAddressType2[CardanoAddressType2["REWARD_SCRIPT"] = 15] = "REWARD_SCRIPT"; + })(CardanoAddressType || (exports2.CardanoAddressType = CardanoAddressType = {})); + var CardanoNativeScriptType; + (function(CardanoNativeScriptType2) { + CardanoNativeScriptType2[CardanoNativeScriptType2["PUB_KEY"] = 0] = "PUB_KEY"; + CardanoNativeScriptType2[CardanoNativeScriptType2["ALL"] = 1] = "ALL"; + CardanoNativeScriptType2[CardanoNativeScriptType2["ANY"] = 2] = "ANY"; + CardanoNativeScriptType2[CardanoNativeScriptType2["N_OF_K"] = 3] = "N_OF_K"; + CardanoNativeScriptType2[CardanoNativeScriptType2["INVALID_BEFORE"] = 4] = "INVALID_BEFORE"; + CardanoNativeScriptType2[CardanoNativeScriptType2["INVALID_HEREAFTER"] = 5] = "INVALID_HEREAFTER"; + })(CardanoNativeScriptType || (exports2.CardanoNativeScriptType = CardanoNativeScriptType = {})); + var CardanoNativeScriptHashDisplayFormat; + (function(CardanoNativeScriptHashDisplayFormat2) { + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["HIDE"] = 0] = "HIDE"; + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["BECH32"] = 1] = "BECH32"; + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["POLICY_ID"] = 2] = "POLICY_ID"; + })(CardanoNativeScriptHashDisplayFormat || (exports2.CardanoNativeScriptHashDisplayFormat = CardanoNativeScriptHashDisplayFormat = {})); + var CardanoTxOutputSerializationFormat; + (function(CardanoTxOutputSerializationFormat2) { + CardanoTxOutputSerializationFormat2[CardanoTxOutputSerializationFormat2["ARRAY_LEGACY"] = 0] = "ARRAY_LEGACY"; + CardanoTxOutputSerializationFormat2[CardanoTxOutputSerializationFormat2["MAP_BABBAGE"] = 1] = "MAP_BABBAGE"; + })(CardanoTxOutputSerializationFormat || (exports2.CardanoTxOutputSerializationFormat = CardanoTxOutputSerializationFormat = {})); + var CardanoCertificateType; + (function(CardanoCertificateType2) { + CardanoCertificateType2[CardanoCertificateType2["STAKE_REGISTRATION"] = 0] = "STAKE_REGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DEREGISTRATION"] = 1] = "STAKE_DEREGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DELEGATION"] = 2] = "STAKE_DELEGATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_POOL_REGISTRATION"] = 3] = "STAKE_POOL_REGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_REGISTRATION_CONWAY"] = 7] = "STAKE_REGISTRATION_CONWAY"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DEREGISTRATION_CONWAY"] = 8] = "STAKE_DEREGISTRATION_CONWAY"; + CardanoCertificateType2[CardanoCertificateType2["VOTE_DELEGATION"] = 9] = "VOTE_DELEGATION"; + })(CardanoCertificateType || (exports2.CardanoCertificateType = CardanoCertificateType = {})); + var CardanoDRepType; + (function(CardanoDRepType2) { + CardanoDRepType2[CardanoDRepType2["KEY_HASH"] = 0] = "KEY_HASH"; + CardanoDRepType2[CardanoDRepType2["SCRIPT_HASH"] = 1] = "SCRIPT_HASH"; + CardanoDRepType2[CardanoDRepType2["ABSTAIN"] = 2] = "ABSTAIN"; + CardanoDRepType2[CardanoDRepType2["NO_CONFIDENCE"] = 3] = "NO_CONFIDENCE"; + })(CardanoDRepType || (exports2.CardanoDRepType = CardanoDRepType = {})); + var CardanoPoolRelayType; + (function(CardanoPoolRelayType2) { + CardanoPoolRelayType2[CardanoPoolRelayType2["SINGLE_HOST_IP"] = 0] = "SINGLE_HOST_IP"; + CardanoPoolRelayType2[CardanoPoolRelayType2["SINGLE_HOST_NAME"] = 1] = "SINGLE_HOST_NAME"; + CardanoPoolRelayType2[CardanoPoolRelayType2["MULTIPLE_HOST_NAME"] = 2] = "MULTIPLE_HOST_NAME"; + })(CardanoPoolRelayType || (exports2.CardanoPoolRelayType = CardanoPoolRelayType = {})); + var CardanoTxAuxiliaryDataSupplementType; + (function(CardanoTxAuxiliaryDataSupplementType2) { + CardanoTxAuxiliaryDataSupplementType2[CardanoTxAuxiliaryDataSupplementType2["NONE"] = 0] = "NONE"; + CardanoTxAuxiliaryDataSupplementType2[CardanoTxAuxiliaryDataSupplementType2["CVOTE_REGISTRATION_SIGNATURE"] = 1] = "CVOTE_REGISTRATION_SIGNATURE"; + })(CardanoTxAuxiliaryDataSupplementType || (exports2.CardanoTxAuxiliaryDataSupplementType = CardanoTxAuxiliaryDataSupplementType = {})); + var CardanoCVoteRegistrationFormat; + (function(CardanoCVoteRegistrationFormat2) { + CardanoCVoteRegistrationFormat2[CardanoCVoteRegistrationFormat2["CIP15"] = 0] = "CIP15"; + CardanoCVoteRegistrationFormat2[CardanoCVoteRegistrationFormat2["CIP36"] = 1] = "CIP36"; + })(CardanoCVoteRegistrationFormat || (exports2.CardanoCVoteRegistrationFormat = CardanoCVoteRegistrationFormat = {})); + var CardanoTxSigningMode; + (function(CardanoTxSigningMode2) { + CardanoTxSigningMode2[CardanoTxSigningMode2["ORDINARY_TRANSACTION"] = 0] = "ORDINARY_TRANSACTION"; + CardanoTxSigningMode2[CardanoTxSigningMode2["POOL_REGISTRATION_AS_OWNER"] = 1] = "POOL_REGISTRATION_AS_OWNER"; + CardanoTxSigningMode2[CardanoTxSigningMode2["MULTISIG_TRANSACTION"] = 2] = "MULTISIG_TRANSACTION"; + CardanoTxSigningMode2[CardanoTxSigningMode2["PLUTUS_TRANSACTION"] = 3] = "PLUTUS_TRANSACTION"; + })(CardanoTxSigningMode || (exports2.CardanoTxSigningMode = CardanoTxSigningMode = {})); + var CardanoTxWitnessType; + (function(CardanoTxWitnessType2) { + CardanoTxWitnessType2[CardanoTxWitnessType2["BYRON_WITNESS"] = 0] = "BYRON_WITNESS"; + CardanoTxWitnessType2[CardanoTxWitnessType2["SHELLEY_WITNESS"] = 1] = "SHELLEY_WITNESS"; + })(CardanoTxWitnessType || (exports2.CardanoTxWitnessType = CardanoTxWitnessType = {})); + var Enum_FailureType; + (function(Enum_FailureType2) { + Enum_FailureType2[Enum_FailureType2["Failure_UnexpectedMessage"] = 1] = "Failure_UnexpectedMessage"; + Enum_FailureType2[Enum_FailureType2["Failure_ButtonExpected"] = 2] = "Failure_ButtonExpected"; + Enum_FailureType2[Enum_FailureType2["Failure_DataError"] = 3] = "Failure_DataError"; + Enum_FailureType2[Enum_FailureType2["Failure_ActionCancelled"] = 4] = "Failure_ActionCancelled"; + Enum_FailureType2[Enum_FailureType2["Failure_PinExpected"] = 5] = "Failure_PinExpected"; + Enum_FailureType2[Enum_FailureType2["Failure_PinCancelled"] = 6] = "Failure_PinCancelled"; + Enum_FailureType2[Enum_FailureType2["Failure_PinInvalid"] = 7] = "Failure_PinInvalid"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidSignature"] = 8] = "Failure_InvalidSignature"; + Enum_FailureType2[Enum_FailureType2["Failure_ProcessError"] = 9] = "Failure_ProcessError"; + Enum_FailureType2[Enum_FailureType2["Failure_NotEnoughFunds"] = 10] = "Failure_NotEnoughFunds"; + Enum_FailureType2[Enum_FailureType2["Failure_NotInitialized"] = 11] = "Failure_NotInitialized"; + Enum_FailureType2[Enum_FailureType2["Failure_PinMismatch"] = 12] = "Failure_PinMismatch"; + Enum_FailureType2[Enum_FailureType2["Failure_WipeCodeMismatch"] = 13] = "Failure_WipeCodeMismatch"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidSession"] = 14] = "Failure_InvalidSession"; + Enum_FailureType2[Enum_FailureType2["Failure_Busy"] = 15] = "Failure_Busy"; + Enum_FailureType2[Enum_FailureType2["Failure_ThpUnallocatedSession"] = 16] = "Failure_ThpUnallocatedSession"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidProtocol"] = 17] = "Failure_InvalidProtocol"; + Enum_FailureType2[Enum_FailureType2["Failure_BufferError"] = 18] = "Failure_BufferError"; + Enum_FailureType2[Enum_FailureType2["Failure_FirmwareError"] = 99] = "Failure_FirmwareError"; + })(Enum_FailureType || (exports2.Enum_FailureType = Enum_FailureType = {})); + var Enum_ButtonRequestType; + (function(Enum_ButtonRequestType2) { + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Other"] = 1] = "ButtonRequest_Other"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_FeeOverThreshold"] = 2] = "ButtonRequest_FeeOverThreshold"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ConfirmOutput"] = 3] = "ButtonRequest_ConfirmOutput"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ResetDevice"] = 4] = "ButtonRequest_ResetDevice"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ConfirmWord"] = 5] = "ButtonRequest_ConfirmWord"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_WipeDevice"] = 6] = "ButtonRequest_WipeDevice"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ProtectCall"] = 7] = "ButtonRequest_ProtectCall"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_SignTx"] = 8] = "ButtonRequest_SignTx"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_FirmwareCheck"] = 9] = "ButtonRequest_FirmwareCheck"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Address"] = 10] = "ButtonRequest_Address"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PublicKey"] = 11] = "ButtonRequest_PublicKey"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_MnemonicWordCount"] = 12] = "ButtonRequest_MnemonicWordCount"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_MnemonicInput"] = 13] = "ButtonRequest_MnemonicInput"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["_Deprecated_ButtonRequest_PassphraseType"] = 14] = "_Deprecated_ButtonRequest_PassphraseType"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_UnknownDerivationPath"] = 15] = "ButtonRequest_UnknownDerivationPath"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_RecoveryHomepage"] = 16] = "ButtonRequest_RecoveryHomepage"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Success"] = 17] = "ButtonRequest_Success"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Warning"] = 18] = "ButtonRequest_Warning"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PassphraseEntry"] = 19] = "ButtonRequest_PassphraseEntry"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PinEntry"] = 20] = "ButtonRequest_PinEntry"; + })(Enum_ButtonRequestType || (exports2.Enum_ButtonRequestType = Enum_ButtonRequestType = {})); + var Enum_PinMatrixRequestType; + (function(Enum_PinMatrixRequestType2) { + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_Current"] = 1] = "PinMatrixRequestType_Current"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_NewFirst"] = 2] = "PinMatrixRequestType_NewFirst"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_NewSecond"] = 3] = "PinMatrixRequestType_NewSecond"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_WipeCodeFirst"] = 4] = "PinMatrixRequestType_WipeCodeFirst"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_WipeCodeSecond"] = 5] = "PinMatrixRequestType_WipeCodeSecond"; + })(Enum_PinMatrixRequestType || (exports2.Enum_PinMatrixRequestType = Enum_PinMatrixRequestType = {})); + var DebugButton; + (function(DebugButton2) { + DebugButton2[DebugButton2["NO"] = 0] = "NO"; + DebugButton2[DebugButton2["YES"] = 1] = "YES"; + DebugButton2[DebugButton2["INFO"] = 2] = "INFO"; + })(DebugButton || (exports2.DebugButton = DebugButton = {})); + var DebugPhysicalButton; + (function(DebugPhysicalButton2) { + DebugPhysicalButton2[DebugPhysicalButton2["LEFT_BTN"] = 0] = "LEFT_BTN"; + DebugPhysicalButton2[DebugPhysicalButton2["MIDDLE_BTN"] = 1] = "MIDDLE_BTN"; + DebugPhysicalButton2[DebugPhysicalButton2["RIGHT_BTN"] = 2] = "RIGHT_BTN"; + })(DebugPhysicalButton || (exports2.DebugPhysicalButton = DebugPhysicalButton = {})); + var DebugTouchEventType; + (function(DebugTouchEventType2) { + DebugTouchEventType2[DebugTouchEventType2["TOUCH_FULL_CLICK"] = 0] = "TOUCH_FULL_CLICK"; + DebugTouchEventType2[DebugTouchEventType2["TOUCH_START"] = 1] = "TOUCH_START"; + DebugTouchEventType2[DebugTouchEventType2["TOUCH_END"] = 2] = "TOUCH_END"; + })(DebugTouchEventType || (exports2.DebugTouchEventType = DebugTouchEventType = {})); + var DebugWaitType; + (function(DebugWaitType2) { + DebugWaitType2[DebugWaitType2["IMMEDIATE"] = 0] = "IMMEDIATE"; + DebugWaitType2[DebugWaitType2["NEXT_LAYOUT"] = 1] = "NEXT_LAYOUT"; + DebugWaitType2[DebugWaitType2["CURRENT_LAYOUT"] = 2] = "CURRENT_LAYOUT"; + })(DebugWaitType || (exports2.DebugWaitType = DebugWaitType = {})); + var DefinitionType; + (function(DefinitionType2) { + DefinitionType2[DefinitionType2["ETHEREUM_NETWORK"] = 0] = "ETHEREUM_NETWORK"; + DefinitionType2[DefinitionType2["ETHEREUM_TOKEN"] = 1] = "ETHEREUM_TOKEN"; + DefinitionType2[DefinitionType2["SOLANA_TOKEN"] = 2] = "SOLANA_TOKEN"; + })(DefinitionType || (exports2.DefinitionType = DefinitionType = {})); + var EthereumDataType; + (function(EthereumDataType2) { + EthereumDataType2[EthereumDataType2["UINT"] = 1] = "UINT"; + EthereumDataType2[EthereumDataType2["INT"] = 2] = "INT"; + EthereumDataType2[EthereumDataType2["BYTES"] = 3] = "BYTES"; + EthereumDataType2[EthereumDataType2["STRING"] = 4] = "STRING"; + EthereumDataType2[EthereumDataType2["BOOL"] = 5] = "BOOL"; + EthereumDataType2[EthereumDataType2["ADDRESS"] = 6] = "ADDRESS"; + EthereumDataType2[EthereumDataType2["ARRAY"] = 7] = "ARRAY"; + EthereumDataType2[EthereumDataType2["STRUCT"] = 8] = "STRUCT"; + })(EthereumDataType || (exports2.EthereumDataType = EthereumDataType = {})); + var Enum_BackupType; + (function(Enum_BackupType2) { + Enum_BackupType2[Enum_BackupType2["Bip39"] = 0] = "Bip39"; + Enum_BackupType2[Enum_BackupType2["Slip39_Basic"] = 1] = "Slip39_Basic"; + Enum_BackupType2[Enum_BackupType2["Slip39_Advanced"] = 2] = "Slip39_Advanced"; + Enum_BackupType2[Enum_BackupType2["Slip39_Single_Extendable"] = 3] = "Slip39_Single_Extendable"; + Enum_BackupType2[Enum_BackupType2["Slip39_Basic_Extendable"] = 4] = "Slip39_Basic_Extendable"; + Enum_BackupType2[Enum_BackupType2["Slip39_Advanced_Extendable"] = 5] = "Slip39_Advanced_Extendable"; + })(Enum_BackupType || (exports2.Enum_BackupType = Enum_BackupType = {})); + var Enum_SafetyCheckLevel; + (function(Enum_SafetyCheckLevel2) { + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["Strict"] = 0] = "Strict"; + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["PromptAlways"] = 1] = "PromptAlways"; + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["PromptTemporarily"] = 2] = "PromptTemporarily"; + })(Enum_SafetyCheckLevel || (exports2.Enum_SafetyCheckLevel = Enum_SafetyCheckLevel = {})); + var Enum_DisplayRotation; + (function(Enum_DisplayRotation2) { + Enum_DisplayRotation2[Enum_DisplayRotation2["North"] = 0] = "North"; + Enum_DisplayRotation2[Enum_DisplayRotation2["East"] = 90] = "East"; + Enum_DisplayRotation2[Enum_DisplayRotation2["South"] = 180] = "South"; + Enum_DisplayRotation2[Enum_DisplayRotation2["West"] = 270] = "West"; + })(Enum_DisplayRotation || (exports2.Enum_DisplayRotation = Enum_DisplayRotation = {})); + var Enum_HomescreenFormat; + (function(Enum_HomescreenFormat2) { + Enum_HomescreenFormat2[Enum_HomescreenFormat2["Toif"] = 1] = "Toif"; + Enum_HomescreenFormat2[Enum_HomescreenFormat2["Jpeg"] = 2] = "Jpeg"; + Enum_HomescreenFormat2[Enum_HomescreenFormat2["ToiG"] = 3] = "ToiG"; + })(Enum_HomescreenFormat || (exports2.Enum_HomescreenFormat = Enum_HomescreenFormat = {})); + var Enum_BackupAvailability; + (function(Enum_BackupAvailability2) { + Enum_BackupAvailability2[Enum_BackupAvailability2["NotAvailable"] = 0] = "NotAvailable"; + Enum_BackupAvailability2[Enum_BackupAvailability2["Required"] = 1] = "Required"; + Enum_BackupAvailability2[Enum_BackupAvailability2["Available"] = 2] = "Available"; + })(Enum_BackupAvailability || (exports2.Enum_BackupAvailability = Enum_BackupAvailability = {})); + var Enum_RecoveryStatus; + (function(Enum_RecoveryStatus2) { + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Nothing"] = 0] = "Nothing"; + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Recovery"] = 1] = "Recovery"; + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Backup"] = 2] = "Backup"; + })(Enum_RecoveryStatus || (exports2.Enum_RecoveryStatus = Enum_RecoveryStatus = {})); + var Enum_Capability; + (function(Enum_Capability2) { + Enum_Capability2[Enum_Capability2["Capability_Bitcoin"] = 1] = "Capability_Bitcoin"; + Enum_Capability2[Enum_Capability2["Capability_Bitcoin_like"] = 2] = "Capability_Bitcoin_like"; + Enum_Capability2[Enum_Capability2["Capability_Binance"] = 3] = "Capability_Binance"; + Enum_Capability2[Enum_Capability2["Capability_Cardano"] = 4] = "Capability_Cardano"; + Enum_Capability2[Enum_Capability2["Capability_Crypto"] = 5] = "Capability_Crypto"; + Enum_Capability2[Enum_Capability2["Capability_EOS"] = 6] = "Capability_EOS"; + Enum_Capability2[Enum_Capability2["Capability_Ethereum"] = 7] = "Capability_Ethereum"; + Enum_Capability2[Enum_Capability2["Capability_Lisk"] = 8] = "Capability_Lisk"; + Enum_Capability2[Enum_Capability2["Capability_Monero"] = 9] = "Capability_Monero"; + Enum_Capability2[Enum_Capability2["Capability_NEM"] = 10] = "Capability_NEM"; + Enum_Capability2[Enum_Capability2["Capability_Ripple"] = 11] = "Capability_Ripple"; + Enum_Capability2[Enum_Capability2["Capability_Stellar"] = 12] = "Capability_Stellar"; + Enum_Capability2[Enum_Capability2["Capability_Tezos"] = 13] = "Capability_Tezos"; + Enum_Capability2[Enum_Capability2["Capability_U2F"] = 14] = "Capability_U2F"; + Enum_Capability2[Enum_Capability2["Capability_Shamir"] = 15] = "Capability_Shamir"; + Enum_Capability2[Enum_Capability2["Capability_ShamirGroups"] = 16] = "Capability_ShamirGroups"; + Enum_Capability2[Enum_Capability2["Capability_PassphraseEntry"] = 17] = "Capability_PassphraseEntry"; + Enum_Capability2[Enum_Capability2["Capability_Solana"] = 18] = "Capability_Solana"; + Enum_Capability2[Enum_Capability2["Capability_Translations"] = 19] = "Capability_Translations"; + Enum_Capability2[Enum_Capability2["Capability_Brightness"] = 20] = "Capability_Brightness"; + Enum_Capability2[Enum_Capability2["Capability_Haptic"] = 21] = "Capability_Haptic"; + Enum_Capability2[Enum_Capability2["Capability_BLE"] = 22] = "Capability_BLE"; + Enum_Capability2[Enum_Capability2["Capability_NFC"] = 23] = "Capability_NFC"; + })(Enum_Capability || (exports2.Enum_Capability = Enum_Capability = {})); + var RecoveryDeviceInputMethod; + (function(RecoveryDeviceInputMethod2) { + RecoveryDeviceInputMethod2[RecoveryDeviceInputMethod2["ScrambledWords"] = 0] = "ScrambledWords"; + RecoveryDeviceInputMethod2[RecoveryDeviceInputMethod2["Matrix"] = 1] = "Matrix"; + })(RecoveryDeviceInputMethod || (exports2.RecoveryDeviceInputMethod = RecoveryDeviceInputMethod = {})); + var Enum_RecoveryType; + (function(Enum_RecoveryType2) { + Enum_RecoveryType2[Enum_RecoveryType2["NormalRecovery"] = 0] = "NormalRecovery"; + Enum_RecoveryType2[Enum_RecoveryType2["DryRun"] = 1] = "DryRun"; + Enum_RecoveryType2[Enum_RecoveryType2["UnlockRepeatedBackup"] = 2] = "UnlockRepeatedBackup"; + })(Enum_RecoveryType || (exports2.Enum_RecoveryType = Enum_RecoveryType = {})); + var SdProtectOperationType; + (function(SdProtectOperationType2) { + SdProtectOperationType2[SdProtectOperationType2["DISABLE"] = 0] = "DISABLE"; + SdProtectOperationType2[SdProtectOperationType2["ENABLE"] = 1] = "ENABLE"; + SdProtectOperationType2[SdProtectOperationType2["REFRESH"] = 2] = "REFRESH"; + })(SdProtectOperationType || (exports2.SdProtectOperationType = SdProtectOperationType = {})); + var Enum_WordRequestType; + (function(Enum_WordRequestType2) { + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Plain"] = 0] = "WordRequestType_Plain"; + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Matrix9"] = 1] = "WordRequestType_Matrix9"; + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Matrix6"] = 2] = "WordRequestType_Matrix6"; + })(Enum_WordRequestType || (exports2.Enum_WordRequestType = Enum_WordRequestType = {})); + var BootCommand; + (function(BootCommand2) { + BootCommand2[BootCommand2["STOP_AND_WAIT"] = 0] = "STOP_AND_WAIT"; + BootCommand2[BootCommand2["INSTALL_UPGRADE"] = 1] = "INSTALL_UPGRADE"; + })(BootCommand || (exports2.BootCommand = BootCommand = {})); + var MoneroNetworkType; + (function(MoneroNetworkType2) { + MoneroNetworkType2[MoneroNetworkType2["MAINNET"] = 0] = "MAINNET"; + MoneroNetworkType2[MoneroNetworkType2["TESTNET"] = 1] = "TESTNET"; + MoneroNetworkType2[MoneroNetworkType2["STAGENET"] = 2] = "STAGENET"; + MoneroNetworkType2[MoneroNetworkType2["FAKECHAIN"] = 3] = "FAKECHAIN"; + })(MoneroNetworkType || (exports2.MoneroNetworkType = MoneroNetworkType = {})); + var NEMMosaicLevy; + (function(NEMMosaicLevy2) { + NEMMosaicLevy2[NEMMosaicLevy2["MosaicLevy_Absolute"] = 1] = "MosaicLevy_Absolute"; + NEMMosaicLevy2[NEMMosaicLevy2["MosaicLevy_Percentile"] = 2] = "MosaicLevy_Percentile"; + })(NEMMosaicLevy || (exports2.NEMMosaicLevy = NEMMosaicLevy = {})); + var NEMSupplyChangeType; + (function(NEMSupplyChangeType2) { + NEMSupplyChangeType2[NEMSupplyChangeType2["SupplyChange_Increase"] = 1] = "SupplyChange_Increase"; + NEMSupplyChangeType2[NEMSupplyChangeType2["SupplyChange_Decrease"] = 2] = "SupplyChange_Decrease"; + })(NEMSupplyChangeType || (exports2.NEMSupplyChangeType = NEMSupplyChangeType = {})); + var NEMModificationType; + (function(NEMModificationType2) { + NEMModificationType2[NEMModificationType2["CosignatoryModification_Add"] = 1] = "CosignatoryModification_Add"; + NEMModificationType2[NEMModificationType2["CosignatoryModification_Delete"] = 2] = "CosignatoryModification_Delete"; + })(NEMModificationType || (exports2.NEMModificationType = NEMModificationType = {})); + var NEMImportanceTransferMode; + (function(NEMImportanceTransferMode2) { + NEMImportanceTransferMode2[NEMImportanceTransferMode2["ImportanceTransfer_Activate"] = 1] = "ImportanceTransfer_Activate"; + NEMImportanceTransferMode2[NEMImportanceTransferMode2["ImportanceTransfer_Deactivate"] = 2] = "ImportanceTransfer_Deactivate"; + })(NEMImportanceTransferMode || (exports2.NEMImportanceTransferMode = NEMImportanceTransferMode = {})); + var StellarAssetType; + (function(StellarAssetType2) { + StellarAssetType2[StellarAssetType2["NATIVE"] = 0] = "NATIVE"; + StellarAssetType2[StellarAssetType2["ALPHANUM4"] = 1] = "ALPHANUM4"; + StellarAssetType2[StellarAssetType2["ALPHANUM12"] = 2] = "ALPHANUM12"; + })(StellarAssetType || (exports2.StellarAssetType = StellarAssetType = {})); + var StellarMemoType; + (function(StellarMemoType2) { + StellarMemoType2[StellarMemoType2["NONE"] = 0] = "NONE"; + StellarMemoType2[StellarMemoType2["TEXT"] = 1] = "TEXT"; + StellarMemoType2[StellarMemoType2["ID"] = 2] = "ID"; + StellarMemoType2[StellarMemoType2["HASH"] = 3] = "HASH"; + StellarMemoType2[StellarMemoType2["RETURN"] = 4] = "RETURN"; + })(StellarMemoType || (exports2.StellarMemoType = StellarMemoType = {})); + var StellarSignerType; + (function(StellarSignerType2) { + StellarSignerType2[StellarSignerType2["ACCOUNT"] = 0] = "ACCOUNT"; + StellarSignerType2[StellarSignerType2["PRE_AUTH"] = 1] = "PRE_AUTH"; + StellarSignerType2[StellarSignerType2["HASH"] = 2] = "HASH"; + })(StellarSignerType || (exports2.StellarSignerType = StellarSignerType = {})); + var TezosContractType; + (function(TezosContractType2) { + TezosContractType2[TezosContractType2["Implicit"] = 0] = "Implicit"; + TezosContractType2[TezosContractType2["Originated"] = 1] = "Originated"; + })(TezosContractType || (exports2.TezosContractType = TezosContractType = {})); + var TezosBallotType; + (function(TezosBallotType2) { + TezosBallotType2[TezosBallotType2["Yay"] = 0] = "Yay"; + TezosBallotType2[TezosBallotType2["Nay"] = 1] = "Nay"; + TezosBallotType2[TezosBallotType2["Pass"] = 2] = "Pass"; + })(TezosBallotType || (exports2.TezosBallotType = TezosBallotType = {})); + } +}); + +// node_modules/@trezor/protobuf/lib/load-definitions.js +var require_load_definitions = __commonJS({ + "node_modules/@trezor/protobuf/lib/load-definitions.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.loadDefinitions = void 0; + var loadDefinitions = async (messages, packageName, packageLoader) => { + try { + const pkg2 = messages.lookup(packageName); + if (pkg2) { + return; + } + } catch { + } + let enumType; + try { + enumType = messages.lookupEnum("MessageType"); + } catch { + } + const packageMessages = await packageLoader(); + const pkg = messages.define(packageName, packageMessages); + let packageEnumType; + try { + packageEnumType = pkg.lookupEnum("MessageType"); + } catch { + } + if (enumType && packageEnumType) { + try { + Object.keys(packageEnumType.values).forEach((key) => { + enumType.add(key, packageEnumType.values[key]); + }); + pkg.remove(packageEnumType); + } catch (e) { + messages.remove(pkg); + throw e; + } + } + }; + exports2.loadDefinitions = loadDefinitions; + } +}); + +// node_modules/@trezor/protobuf/lib/messages-schema.js +var require_messages_schema = __commonJS({ + "node_modules/@trezor/protobuf/lib/messages-schema.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PrevOutput = exports2.PrevInput = exports2.PrevTx = exports2.TxOutput = exports2.TxOutputType = exports2.ChangeOutputScriptType = exports2.TxOutputBinType = exports2.TxInput = exports2.TxInputType = exports2.InternalInputScriptType = exports2.TxRequest = exports2.TxRequestSerializedType = exports2.TxRequestDetailsType = exports2.RequestType = exports2.EnumEnum_RequestType = exports2.Enum_RequestType = exports2.SignTx = exports2.CoinJoinRequest = exports2.VerifyMessage = exports2.MessageSignature = exports2.SignMessage = exports2.OwnershipId = exports2.GetOwnershipId = exports2.Address = exports2.GetAddress = exports2.PublicKey = exports2.GetPublicKey = exports2.MultisigRedeemScriptType = exports2.HDNodePathType = exports2.HDNodeType = exports2.EnumMultisigPubkeysOrder = exports2.MultisigPubkeysOrder = exports2.EnumAmountUnit = exports2.AmountUnit = exports2.PaymentRequest = exports2.PaymentRequestMemo = exports2.TextDetailsMemo = exports2.CoinPurchaseMemo = exports2.RefundMemo = exports2.TextMemo = exports2.EnumDecredStakingSpendType = exports2.DecredStakingSpendType = exports2.OutputScriptType = exports2.EnumEnum_OutputScriptType = exports2.Enum_OutputScriptType = exports2.InputScriptType = exports2.EnumEnum_InputScriptType = exports2.Enum_InputScriptType = exports2.EnumDeviceModelInternal = exports2.DeviceModelInternal = void 0; + exports2.CardanoAddressParametersType = exports2.CardanoNativeScriptHash = exports2.CardanoGetNativeScriptHash = exports2.CardanoNativeScript = exports2.CardanoBlockchainPointerType = exports2.EnumCardanoTxWitnessType = exports2.CardanoTxWitnessType = exports2.EnumCardanoTxSigningMode = exports2.CardanoTxSigningMode = exports2.EnumCardanoCVoteRegistrationFormat = exports2.CardanoCVoteRegistrationFormat = exports2.EnumCardanoTxAuxiliaryDataSupplementType = exports2.CardanoTxAuxiliaryDataSupplementType = exports2.EnumCardanoPoolRelayType = exports2.CardanoPoolRelayType = exports2.EnumCardanoDRepType = exports2.CardanoDRepType = exports2.EnumCardanoCertificateType = exports2.CardanoCertificateType = exports2.EnumCardanoTxOutputSerializationFormat = exports2.CardanoTxOutputSerializationFormat = exports2.EnumCardanoNativeScriptHashDisplayFormat = exports2.CardanoNativeScriptHashDisplayFormat = exports2.EnumCardanoNativeScriptType = exports2.CardanoNativeScriptType = exports2.EnumCardanoAddressType = exports2.CardanoAddressType = exports2.EnumCardanoDerivationType = exports2.CardanoDerivationType = exports2.ProdTestT1 = exports2.FirmwareUpload = exports2.FirmwareRequest = exports2.FirmwareErase = exports2.BleUnpair = exports2.AuthorizeCoinJoin = exports2.OwnershipProof = exports2.GetOwnershipProof = exports2.TxAckPrevExtraData = exports2.TxAckPrevExtraDataWrapper = exports2.TxAckPrevOutput = exports2.TxAckPrevOutputWrapper = exports2.TxAckPrevInput = exports2.TxAckPrevInputWrapper = exports2.TxAckPrevMeta = exports2.TxAckOutput = exports2.TxAckOutputWrapper = exports2.TxAckInput = exports2.TxAckInputWrapper = exports2.TxAck = exports2.TxAckResponse = void 0; + exports2.PinMatrixRequest = exports2.PinMatrixRequestType = exports2.EnumEnum_PinMatrixRequestType = exports2.Enum_PinMatrixRequestType = exports2.ButtonAck = exports2.ButtonRequest = exports2.ButtonRequestType = exports2.EnumEnum_ButtonRequestType = exports2.Enum_ButtonRequestType = exports2.Failure = exports2.FailureType = exports2.EnumEnum_FailureType = exports2.Enum_FailureType = exports2.Success = exports2.CardanoMessageSignature = exports2.CardanoMessageDataResponse = exports2.CardanoMessageDataRequest = exports2.CardanoSignMessageInit = exports2.CardanoSignTxFinished = exports2.CardanoTxBodyHash = exports2.CardanoTxHostAck = exports2.CardanoTxWitnessResponse = exports2.CardanoTxWitnessRequest = exports2.CardanoTxAuxiliaryDataSupplement = exports2.CardanoTxItemAck = exports2.CardanoTxReferenceInput = exports2.CardanoTxRequiredSigner = exports2.CardanoTxCollateralInput = exports2.CardanoTxMint = exports2.CardanoTxAuxiliaryData = exports2.CardanoCVoteRegistrationParametersType = exports2.CardanoCVoteRegistrationDelegation = exports2.CardanoTxWithdrawal = exports2.CardanoTxCertificate = exports2.CardanoDRep = exports2.CardanoPoolParametersType = exports2.CardanoPoolMetadataType = exports2.CardanoPoolRelayParameters = exports2.CardanoPoolOwner = exports2.CardanoTxReferenceScriptChunk = exports2.CardanoTxInlineDatumChunk = exports2.CardanoToken = exports2.CardanoAssetGroup = exports2.CardanoTxOutput = exports2.CardanoTxInput = exports2.CardanoSignTxInit = exports2.CardanoPublicKey = exports2.CardanoGetPublicKey = exports2.CardanoAddress = exports2.CardanoGetAddress = void 0; + exports2.EosActionBuyRam = exports2.EosActionRefund = exports2.EosActionUndelegate = exports2.EosActionDelegate = exports2.EosActionTransfer = exports2.EosActionCommon = exports2.EosAuthorization = exports2.EosAuthorizationWait = exports2.EosAuthorizationAccount = exports2.EosAuthorizationKey = exports2.EosPermissionLevel = exports2.EosAsset = exports2.EosTxActionRequest = exports2.EosSignTx = exports2.EosTxHeader = exports2.EosPublicKey = exports2.EosGetPublicKey = exports2.SolanaTokenInfo = exports2.EthereumTokenInfo = exports2.EthereumNetworkInfo = exports2.EnumDefinitionType = exports2.DefinitionType = exports2.DebugLinkGcInfo = exports2.DebugLinkGcInfoItem = exports2.DebugLinkGetGcInfo = exports2.DebugLinkOptigaSetSecMax = exports2.DebugLinkResetDebugEvents = exports2.DebugLinkPairingInfo = exports2.DebugLinkGetPairingInfo = exports2.EnumDebugWaitType = exports2.DebugWaitType = exports2.EnumDebugTouchEventType = exports2.DebugTouchEventType = exports2.EnumDebugPhysicalButton = exports2.DebugPhysicalButton = exports2.EnumDebugButton = exports2.DebugButton = exports2.PaymentNotification = exports2.ECDHSessionKey = exports2.GetECDHSessionKey = exports2.SignedIdentity = exports2.SignIdentity = exports2.IdentityType = exports2.CipheredKeyValue = exports2.CipherKeyValue = exports2.Deprecated_PassphraseStateAck = exports2.Deprecated_PassphraseStateRequest = exports2.PassphraseAck = exports2.PassphraseRequest = exports2.PinMatrixAck = void 0; + exports2.DisplayRotation = exports2.EnumEnum_DisplayRotation = exports2.Enum_DisplayRotation = exports2.SafetyCheckLevel = exports2.EnumEnum_SafetyCheckLevel = exports2.Enum_SafetyCheckLevel = exports2.BackupType = exports2.EnumEnum_BackupType = exports2.Enum_BackupType = exports2.EvoluDelegatedIdentityKey = exports2.EvoluGetDelegatedIdentityKey = exports2.EvoluRegistrationRequest = exports2.EvoluSignRegistrationRequest = exports2.EvoluNode = exports2.EvoluGetNode = exports2.EthereumTypedDataSignature = exports2.EthereumSignTypedHash = exports2.EthereumVerifyMessage = exports2.EthereumMessageSignature = exports2.EthereumSignMessage = exports2.EthereumTxAck = exports2.EthereumTxRequest = exports2.EthereumSignTxEIP1559 = exports2.EthereumAccessList = exports2.EthereumSignTx = exports2.EthereumAddress = exports2.EthereumGetAddress = exports2.EthereumPublicKey = exports2.EthereumGetPublicKey = exports2.EthereumTypedDataValueAck = exports2.EthereumTypedDataValueRequest = exports2.EthereumTypedDataStructAck = exports2.EthereumStructMember = exports2.EthereumFieldType = exports2.EnumEthereumDataType = exports2.EthereumDataType = exports2.EthereumTypedDataStructRequest = exports2.EthereumSignTypedData = exports2.EthereumDefinitions = exports2.EosSignedTx = exports2.EosTxActionAck = exports2.EosActionUnknown = exports2.EosActionNewAccount = exports2.EosActionUnlinkAuth = exports2.EosActionLinkAuth = exports2.EosActionDeleteAuth = exports2.EosActionUpdateAuth = exports2.EosActionVoteProducer = exports2.EosActionSellRam = exports2.EosActionBuyRamBytes = void 0; + exports2.EntropyCheckReady = exports2.EntropyAck = exports2.EntropyRequest = exports2.BackupDevice = exports2.Slip39Group = exports2.ResetDevice = exports2.LoadDevice = exports2.WipeDevice = exports2.AuthenticityProof = exports2.AuthenticateDevice = exports2.FirmwareHash = exports2.GetFirmwareHash = exports2.Entropy = exports2.GetEntropy = exports2.Cancel = exports2.Ping = exports2.SdProtect = exports2.EnumSdProtectOperationType = exports2.SdProtectOperationType = exports2.ChangeWipeCode = exports2.ChangePin = exports2.ApplyFlags = exports2.DataChunkAck = exports2.DataChunkRequest = exports2.ChangeLanguage = exports2.ApplySettings = exports2.EndSession = exports2.SetBusy = exports2.LockDevice = exports2.Features = exports2.RecoveryDevice = exports2.RecoveryType = exports2.EnumEnum_RecoveryType = exports2.Enum_RecoveryType = exports2.EnumRecoveryDeviceInputMethod = exports2.RecoveryDeviceInputMethod = exports2.Capability = exports2.EnumEnum_Capability = exports2.Enum_Capability = exports2.RecoveryStatus = exports2.EnumEnum_RecoveryStatus = exports2.Enum_RecoveryStatus = exports2.BackupAvailability = exports2.EnumEnum_BackupAvailability = exports2.Enum_BackupAvailability = exports2.GetFeatures = exports2.Initialize = exports2.HomescreenFormat = exports2.EnumEnum_HomescreenFormat = exports2.Enum_HomescreenFormat = void 0; + exports2.MoneroRingCtSig = exports2.MoneroTransactionAllOutSetRequest = exports2.MoneroTransactionSetOutputAck = exports2.MoneroTransactionSetOutputRequest = exports2.MoneroTransactionAllInputsSetAck = exports2.MoneroTransactionAllInputsSetRequest = exports2.MoneroTransactionInputViniAck = exports2.MoneroTransactionInputViniRequest = exports2.MoneroTransactionSetInputAck = exports2.MoneroTransactionSetInputRequest = exports2.MoneroTransactionInitAck = exports2.MoneroTransactionInitRequest = exports2.MoneroTransactionData = exports2.MoneroWatchKey = exports2.MoneroGetWatchKey = exports2.MoneroAddress = exports2.MoneroGetAddress = exports2.MoneroTransactionRsigData = exports2.MoneroTransactionDestinationEntry = exports2.MoneroAccountPublicAddress = exports2.MoneroTransactionSourceEntry = exports2.MoneroMultisigKLRki = exports2.MoneroOutputEntry = exports2.MoneroRctKeyPublic = exports2.EnumMoneroNetworkType = exports2.MoneroNetworkType = exports2.SerialNumber = exports2.GetSerialNumber = exports2.SetBrightness = exports2.UnlockBootloader = exports2.ShowDeviceTutorial = exports2.UnlockedPathRequest = exports2.UnlockPath = exports2.Nonce = exports2.GetNonce = exports2.RebootToBootloader = exports2.EnumBootCommand = exports2.BootCommand = exports2.CancelAuthorization = exports2.PreauthorizedRequest = exports2.DoPreauthorized = exports2.NextU2FCounter = exports2.GetNextU2FCounter = exports2.SetU2FCounter = exports2.WordAck = exports2.WordRequest = exports2.WordRequestType = exports2.EnumEnum_WordRequestType = exports2.Enum_WordRequestType = exports2.EntropyCheckContinue = void 0; + exports2.RippleAddress = exports2.RippleGetAddress = exports2.NEMDecryptedMessage = exports2.NEMDecryptMessage = exports2.NEMSignedTx = exports2.NEMSignTx = exports2.NEMImportanceTransfer = exports2.EnumNEMImportanceTransferMode = exports2.NEMImportanceTransferMode = exports2.NEMAggregateModification = exports2.NEMCosignatoryModification = exports2.EnumNEMModificationType = exports2.NEMModificationType = exports2.NEMMosaicSupplyChange = exports2.EnumNEMSupplyChangeType = exports2.NEMSupplyChangeType = exports2.NEMMosaicCreation = exports2.NEMMosaicDefinition = exports2.EnumNEMMosaicLevy = exports2.NEMMosaicLevy = exports2.NEMProvisionNamespace = exports2.NEMTransfer = exports2.NEMMosaic = exports2.NEMTransactionCommon = exports2.NEMAddress = exports2.NEMGetAddress = exports2.DebugMoneroDiagAck = exports2.DebugMoneroDiagRequest = exports2.MoneroLiveRefreshFinalAck = exports2.MoneroLiveRefreshFinalRequest = exports2.MoneroLiveRefreshStepAck = exports2.MoneroLiveRefreshStepRequest = exports2.MoneroLiveRefreshStartAck = exports2.MoneroLiveRefreshStartRequest = exports2.MoneroGetTxKeyAck = exports2.MoneroGetTxKeyRequest = exports2.MoneroKeyImageSyncFinalAck = exports2.MoneroKeyImageSyncFinalRequest = exports2.MoneroKeyImageSyncStepAck = exports2.MoneroExportedKeyImage = exports2.MoneroKeyImageSyncStepRequest = exports2.MoneroTransferDetails = exports2.MoneroKeyImageExportInitAck = exports2.MoneroKeyImageExportInitRequest = exports2.MoneroSubAddressIndicesList = exports2.MoneroTransactionFinalAck = exports2.MoneroTransactionFinalRequest = exports2.MoneroTransactionSignInputAck = exports2.MoneroTransactionSignInputRequest = exports2.MoneroTransactionAllOutSetAck = void 0; + exports2.TezosDelegationOp = exports2.TezosOriginationOp = exports2.TezosTransactionOp = exports2.TezosParametersManager = exports2.TezosManagerTransfer = exports2.TezosRevealOp = exports2.TezosContractID = exports2.EnumTezosContractType = exports2.TezosContractType = exports2.TezosPublicKey = exports2.TezosGetPublicKey = exports2.TezosAddress = exports2.TezosGetAddress = exports2.StellarSignedTx = exports2.StellarClaimClaimableBalanceOp = exports2.StellarBumpSequenceOp = exports2.StellarManageDataOp = exports2.StellarAccountMergeOp = exports2.StellarAllowTrustOp = exports2.StellarChangeTrustOp = exports2.StellarSetOptionsOp = exports2.EnumStellarSignerType = exports2.StellarSignerType = exports2.StellarCreatePassiveSellOfferOp = exports2.StellarManageBuyOfferOp = exports2.StellarManageSellOfferOp = exports2.StellarPathPaymentStrictSendOp = exports2.StellarPathPaymentStrictReceiveOp = exports2.StellarCreateAccountOp = exports2.StellarPaymentOp = exports2.StellarTxOpRequest = exports2.StellarSignTx = exports2.EnumStellarMemoType = exports2.StellarMemoType = exports2.StellarAddress = exports2.StellarGetAddress = exports2.StellarAsset = exports2.EnumStellarAssetType = exports2.StellarAssetType = exports2.SolanaTxSignature = exports2.SolanaSignTx = exports2.SolanaTxAdditionalInfo = exports2.SolanaTxTokenAccountInfo = exports2.SolanaAddress = exports2.SolanaGetAddress = exports2.SolanaPublicKey = exports2.SolanaGetPublicKey = exports2.RippleSignedTx = exports2.RippleSignTx = exports2.RipplePayment = void 0; + exports2.MessageType = exports2.TronAddress = exports2.TronGetAddress = exports2.TezosSignedTx = exports2.TezosSignTx = exports2.TezosBallotOp = exports2.EnumTezosBallotType = exports2.TezosBallotType = exports2.TezosProposalOp = void 0; + var schema_utils_1 = require_lib2(); + var DeviceModelInternal; + (function(DeviceModelInternal2) { + DeviceModelInternal2["T1B1"] = "T1B1"; + DeviceModelInternal2["T2T1"] = "T2T1"; + DeviceModelInternal2["T2B1"] = "T2B1"; + DeviceModelInternal2["T3B1"] = "T3B1"; + DeviceModelInternal2["T3T1"] = "T3T1"; + DeviceModelInternal2["T3W1"] = "T3W1"; + DeviceModelInternal2["UNKNOWN"] = "UNKNOWN"; + })(DeviceModelInternal || (exports2.DeviceModelInternal = DeviceModelInternal = {})); + exports2.EnumDeviceModelInternal = schema_utils_1.Type.Enum(DeviceModelInternal); + var Enum_InputScriptType; + (function(Enum_InputScriptType2) { + Enum_InputScriptType2[Enum_InputScriptType2["SPENDADDRESS"] = 0] = "SPENDADDRESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDMULTISIG"] = 1] = "SPENDMULTISIG"; + Enum_InputScriptType2[Enum_InputScriptType2["EXTERNAL"] = 2] = "EXTERNAL"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDWITNESS"] = 3] = "SPENDWITNESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDP2SHWITNESS"] = 4] = "SPENDP2SHWITNESS"; + Enum_InputScriptType2[Enum_InputScriptType2["SPENDTAPROOT"] = 5] = "SPENDTAPROOT"; + })(Enum_InputScriptType || (exports2.Enum_InputScriptType = Enum_InputScriptType = {})); + exports2.EnumEnum_InputScriptType = schema_utils_1.Type.Enum(Enum_InputScriptType); + exports2.InputScriptType = schema_utils_1.Type.KeyOfEnum(Enum_InputScriptType, { + $id: "InputScriptType" + }); + var Enum_OutputScriptType; + (function(Enum_OutputScriptType2) { + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOADDRESS"] = 0] = "PAYTOADDRESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOSCRIPTHASH"] = 1] = "PAYTOSCRIPTHASH"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOMULTISIG"] = 2] = "PAYTOMULTISIG"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOOPRETURN"] = 3] = "PAYTOOPRETURN"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOWITNESS"] = 4] = "PAYTOWITNESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOP2SHWITNESS"] = 5] = "PAYTOP2SHWITNESS"; + Enum_OutputScriptType2[Enum_OutputScriptType2["PAYTOTAPROOT"] = 6] = "PAYTOTAPROOT"; + })(Enum_OutputScriptType || (exports2.Enum_OutputScriptType = Enum_OutputScriptType = {})); + exports2.EnumEnum_OutputScriptType = schema_utils_1.Type.Enum(Enum_OutputScriptType); + exports2.OutputScriptType = schema_utils_1.Type.KeyOfEnum(Enum_OutputScriptType, { + $id: "OutputScriptType" + }); + var DecredStakingSpendType; + (function(DecredStakingSpendType2) { + DecredStakingSpendType2[DecredStakingSpendType2["SSGen"] = 0] = "SSGen"; + DecredStakingSpendType2[DecredStakingSpendType2["SSRTX"] = 1] = "SSRTX"; + })(DecredStakingSpendType || (exports2.DecredStakingSpendType = DecredStakingSpendType = {})); + exports2.EnumDecredStakingSpendType = schema_utils_1.Type.Enum(DecredStakingSpendType); + exports2.TextMemo = schema_utils_1.Type.Object({ + text: schema_utils_1.Type.String() + }, { + $id: "TextMemo" + }); + exports2.RefundMemo = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + mac: schema_utils_1.Type.String() + }, { + $id: "RefundMemo" + }); + exports2.CoinPurchaseMemo = schema_utils_1.Type.Object({ + coin_type: schema_utils_1.Type.Number(), + amount: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String(), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + mac: schema_utils_1.Type.String() + }, { + $id: "CoinPurchaseMemo" + }); + exports2.TextDetailsMemo = schema_utils_1.Type.Object({ + title: schema_utils_1.Type.String(), + text: schema_utils_1.Type.String() + }, { + $id: "TextDetailsMemo" + }); + exports2.PaymentRequestMemo = schema_utils_1.Type.Object({ + text_memo: schema_utils_1.Type.Optional(exports2.TextMemo), + refund_memo: schema_utils_1.Type.Optional(exports2.RefundMemo), + coin_purchase_memo: schema_utils_1.Type.Optional(exports2.CoinPurchaseMemo), + text_details_memo: schema_utils_1.Type.Optional(exports2.TextDetailsMemo) + }, { + $id: "PaymentRequestMemo" + }); + exports2.PaymentRequest = schema_utils_1.Type.Object({ + nonce: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + recipient_name: schema_utils_1.Type.String(), + memos: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.PaymentRequestMemo)), + amount: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + signature: schema_utils_1.Type.String() + }, { + $id: "PaymentRequest" + }); + var AmountUnit; + (function(AmountUnit2) { + AmountUnit2[AmountUnit2["BITCOIN"] = 0] = "BITCOIN"; + AmountUnit2[AmountUnit2["MILLIBITCOIN"] = 1] = "MILLIBITCOIN"; + AmountUnit2[AmountUnit2["MICROBITCOIN"] = 2] = "MICROBITCOIN"; + AmountUnit2[AmountUnit2["SATOSHI"] = 3] = "SATOSHI"; + })(AmountUnit || (exports2.AmountUnit = AmountUnit = {})); + exports2.EnumAmountUnit = schema_utils_1.Type.Enum(AmountUnit); + var MultisigPubkeysOrder; + (function(MultisigPubkeysOrder2) { + MultisigPubkeysOrder2[MultisigPubkeysOrder2["PRESERVED"] = 0] = "PRESERVED"; + MultisigPubkeysOrder2[MultisigPubkeysOrder2["LEXICOGRAPHIC"] = 1] = "LEXICOGRAPHIC"; + })(MultisigPubkeysOrder || (exports2.MultisigPubkeysOrder = MultisigPubkeysOrder = {})); + exports2.EnumMultisigPubkeysOrder = schema_utils_1.Type.Enum(MultisigPubkeysOrder); + exports2.HDNodeType = schema_utils_1.Type.Object({ + depth: schema_utils_1.Type.Number(), + fingerprint: schema_utils_1.Type.Number(), + child_num: schema_utils_1.Type.Number(), + chain_code: schema_utils_1.Type.String(), + private_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + public_key: schema_utils_1.Type.String() + }, { + $id: "HDNodeType" + }); + exports2.HDNodePathType = schema_utils_1.Type.Object({ + node: schema_utils_1.Type.Union([exports2.HDNodeType, schema_utils_1.Type.String()]), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()) + }, { + $id: "HDNodePathType" + }); + exports2.MultisigRedeemScriptType = schema_utils_1.Type.Object({ + pubkeys: schema_utils_1.Type.Array(exports2.HDNodePathType), + signatures: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + m: schema_utils_1.Type.Number(), + nodes: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.HDNodeType)), + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + pubkeys_order: schema_utils_1.Type.Optional(exports2.EnumMultisigPubkeysOrder) + }, { + $id: "MultisigRedeemScriptType" + }); + exports2.GetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType), + ignore_xpub_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "GetPublicKey" + }); + exports2.PublicKey = schema_utils_1.Type.Object({ + node: exports2.HDNodeType, + xpub: schema_utils_1.Type.String(), + root_fingerprint: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + descriptor: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "PublicKey" + }); + exports2.GetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType), + ignore_xpub_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "GetAddress" + }); + exports2.Address = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "Address" + }); + exports2.GetOwnershipId = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType) + }, { + $id: "GetOwnershipId" + }); + exports2.OwnershipId = schema_utils_1.Type.Object({ + ownership_id: schema_utils_1.Type.String() + }, { + $id: "OwnershipId" + }); + exports2.SignMessage = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + message: schema_utils_1.Type.String(), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType), + no_script_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "SignMessage" + }); + exports2.MessageSignature = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }, { + $id: "MessageSignature" + }); + exports2.VerifyMessage = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String(), + message: schema_utils_1.Type.String(), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "VerifyMessage" + }); + exports2.CoinJoinRequest = schema_utils_1.Type.Object({ + fee_rate: schema_utils_1.Type.Number(), + no_fee_threshold: schema_utils_1.Type.Number(), + min_registrable_amount: schema_utils_1.Type.Number(), + mask_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CoinJoinRequest" + }); + exports2.SignTx = schema_utils_1.Type.Object({ + outputs_count: schema_utils_1.Type.Number(), + inputs_count: schema_utils_1.Type.Number(), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + lock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + overwintered: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + amount_unit: schema_utils_1.Type.Optional(exports2.EnumAmountUnit), + decred_staking_ticket: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + serialize: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + coinjoin_request: schema_utils_1.Type.Optional(exports2.CoinJoinRequest), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "SignTx" + }); + var Enum_RequestType; + (function(Enum_RequestType2) { + Enum_RequestType2[Enum_RequestType2["TXINPUT"] = 0] = "TXINPUT"; + Enum_RequestType2[Enum_RequestType2["TXOUTPUT"] = 1] = "TXOUTPUT"; + Enum_RequestType2[Enum_RequestType2["TXMETA"] = 2] = "TXMETA"; + Enum_RequestType2[Enum_RequestType2["TXFINISHED"] = 3] = "TXFINISHED"; + Enum_RequestType2[Enum_RequestType2["TXEXTRADATA"] = 4] = "TXEXTRADATA"; + Enum_RequestType2[Enum_RequestType2["TXORIGINPUT"] = 5] = "TXORIGINPUT"; + Enum_RequestType2[Enum_RequestType2["TXORIGOUTPUT"] = 6] = "TXORIGOUTPUT"; + Enum_RequestType2[Enum_RequestType2["TXPAYMENTREQ"] = 7] = "TXPAYMENTREQ"; + })(Enum_RequestType || (exports2.Enum_RequestType = Enum_RequestType = {})); + exports2.EnumEnum_RequestType = schema_utils_1.Type.Enum(Enum_RequestType); + exports2.RequestType = schema_utils_1.Type.KeyOfEnum(Enum_RequestType, { + $id: "RequestType" + }); + exports2.TxRequestDetailsType = schema_utils_1.Type.Object({ + request_index: schema_utils_1.Type.Number(), + tx_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + extra_data_offset: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "TxRequestDetailsType" + }); + exports2.TxRequestSerializedType = schema_utils_1.Type.Object({ + signature_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + serialized_tx: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "TxRequestSerializedType" + }); + exports2.TxRequest = schema_utils_1.Type.Object({ + request_type: exports2.RequestType, + details: exports2.TxRequestDetailsType, + serialized: schema_utils_1.Type.Optional(exports2.TxRequestSerializedType) + }, { + $id: "TxRequest" + }); + exports2.InternalInputScriptType = schema_utils_1.Type.Exclude(exports2.InputScriptType, schema_utils_1.Type.Literal("EXTERNAL"), { + $id: "InternalInputScriptType" + }); + var CommonTxInputType = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number(), + amount: schema_utils_1.Type.Uint(), + sequence: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + decred_tree: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + decred_staking_spend: schema_utils_1.Type.Optional(exports2.EnumDecredStakingSpendType), + script_pubkey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + coinjoin_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + script_sig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + witness: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ownership_proof: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + commitment_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CommonTxInputType" + }); + exports2.TxInputType = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([CommonTxInputType, schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + script_type: schema_utils_1.Type.Optional(exports2.InternalInputScriptType) + })]), schema_utils_1.Type.Intersect([CommonTxInputType, schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + script_type: schema_utils_1.Type.Literal("EXTERNAL"), + script_pubkey: schema_utils_1.Type.String() + })])], { + $id: "TxInputType" + }); + exports2.TxInput = (0, schema_utils_1.CloneType)(exports2.TxInputType, { + $id: "TxInput" + }); + exports2.TxOutputBinType = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Uint(), + script_pubkey: schema_utils_1.Type.String(), + decred_script_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "TxOutputBinType" + }); + exports2.ChangeOutputScriptType = schema_utils_1.Type.Exclude(exports2.OutputScriptType, schema_utils_1.Type.Literal("PAYTOOPRETURN"), { + $id: "ChangeOutputScriptType" + }); + exports2.TxOutputType = schema_utils_1.Type.Union([schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + script_type: schema_utils_1.Type.Literal("PAYTOADDRESS"), + amount: schema_utils_1.Type.Uint(), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }), schema_utils_1.Type.Object({ + address: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + script_type: schema_utils_1.Type.Optional(exports2.ChangeOutputScriptType), + amount: schema_utils_1.Type.Uint(), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }), schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + script_type: schema_utils_1.Type.Optional(exports2.ChangeOutputScriptType), + amount: schema_utils_1.Type.Uint(), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }), schema_utils_1.Type.Object({ + address: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + amount: schema_utils_1.Type.Union([schema_utils_1.Type.Literal("0"), schema_utils_1.Type.Literal(0)]), + op_return_data: schema_utils_1.Type.String(), + script_type: schema_utils_1.Type.Literal("PAYTOOPRETURN"), + orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + })], { + $id: "TxOutputType" + }); + exports2.TxOutput = (0, schema_utils_1.CloneType)(exports2.TxOutputType, { + $id: "TxOutput" + }); + exports2.PrevTx = schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Number(), + lock_time: schema_utils_1.Type.Number(), + inputs_count: schema_utils_1.Type.Number(), + outputs_count: schema_utils_1.Type.Number(), + extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "PrevTx" + }); + exports2.PrevInput = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number(), + script_sig: schema_utils_1.Type.String(), + sequence: schema_utils_1.Type.Number(), + decred_tree: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "PrevInput" + }); + exports2.PrevOutput = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Uint(), + script_pubkey: schema_utils_1.Type.String(), + decred_script_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "PrevOutput" + }); + exports2.TxAckResponse = schema_utils_1.Type.Union([schema_utils_1.Type.Object({ + inputs: schema_utils_1.Type.Array(schema_utils_1.Type.Union([exports2.TxInputType, exports2.PrevInput])) + }), schema_utils_1.Type.Object({ + bin_outputs: schema_utils_1.Type.Array(exports2.TxOutputBinType) + }), schema_utils_1.Type.Object({ + outputs: schema_utils_1.Type.Array(exports2.TxOutputType) + }), schema_utils_1.Type.Object({ + extra_data: schema_utils_1.Type.String() + }), schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + lock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + inputs_cnt: schema_utils_1.Type.Number(), + outputs_cnt: schema_utils_1.Type.Number(), + extra_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + })], { + $id: "TxAckResponse" + }); + exports2.TxAck = schema_utils_1.Type.Object({ + tx: exports2.TxAckResponse + }, { + $id: "TxAck" + }); + exports2.TxAckInputWrapper = schema_utils_1.Type.Object({ + input: exports2.TxInput + }, { + $id: "TxAckInputWrapper" + }); + exports2.TxAckInput = schema_utils_1.Type.Object({ + tx: exports2.TxAckInputWrapper + }, { + $id: "TxAckInput" + }); + exports2.TxAckOutputWrapper = schema_utils_1.Type.Object({ + output: exports2.TxOutput + }, { + $id: "TxAckOutputWrapper" + }); + exports2.TxAckOutput = schema_utils_1.Type.Object({ + tx: exports2.TxAckOutputWrapper + }, { + $id: "TxAckOutput" + }); + exports2.TxAckPrevMeta = schema_utils_1.Type.Object({ + tx: exports2.PrevTx + }, { + $id: "TxAckPrevMeta" + }); + exports2.TxAckPrevInputWrapper = schema_utils_1.Type.Object({ + input: exports2.PrevInput + }, { + $id: "TxAckPrevInputWrapper" + }); + exports2.TxAckPrevInput = schema_utils_1.Type.Object({ + tx: exports2.TxAckPrevInputWrapper + }, { + $id: "TxAckPrevInput" + }); + exports2.TxAckPrevOutputWrapper = schema_utils_1.Type.Object({ + output: exports2.PrevOutput + }, { + $id: "TxAckPrevOutputWrapper" + }); + exports2.TxAckPrevOutput = schema_utils_1.Type.Object({ + tx: exports2.TxAckPrevOutputWrapper + }, { + $id: "TxAckPrevOutput" + }); + exports2.TxAckPrevExtraDataWrapper = schema_utils_1.Type.Object({ + extra_data_chunk: schema_utils_1.Type.String() + }, { + $id: "TxAckPrevExtraDataWrapper" + }); + exports2.TxAckPrevExtraData = schema_utils_1.Type.Object({ + tx: exports2.TxAckPrevExtraDataWrapper + }, { + $id: "TxAckPrevExtraData" + }); + exports2.GetOwnershipProof = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType), + multisig: schema_utils_1.Type.Optional(exports2.MultisigRedeemScriptType), + user_confirmation: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + ownership_ids: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String())), + commitment_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "GetOwnershipProof" + }); + exports2.OwnershipProof = schema_utils_1.Type.Object({ + ownership_proof: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }, { + $id: "OwnershipProof" + }); + exports2.AuthorizeCoinJoin = schema_utils_1.Type.Object({ + coordinator: schema_utils_1.Type.String(), + max_rounds: schema_utils_1.Type.Number(), + max_coordinator_fee_rate: schema_utils_1.Type.Number(), + max_fee_per_kvbyte: schema_utils_1.Type.Number(), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_type: schema_utils_1.Type.Optional(exports2.InputScriptType), + amount_unit: schema_utils_1.Type.Optional(exports2.EnumAmountUnit) + }, { + $id: "AuthorizeCoinJoin" + }); + exports2.BleUnpair = schema_utils_1.Type.Object({ + all: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + addr: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "BleUnpair" + }); + exports2.FirmwareErase = schema_utils_1.Type.Object({ + length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "FirmwareErase" + }); + exports2.FirmwareRequest = schema_utils_1.Type.Object({ + offset: schema_utils_1.Type.Number(), + length: schema_utils_1.Type.Number() + }, { + $id: "FirmwareRequest" + }); + exports2.FirmwareUpload = schema_utils_1.Type.Object({ + payload: schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.ArrayBuffer()]), + hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "FirmwareUpload" + }); + exports2.ProdTestT1 = schema_utils_1.Type.Object({ + payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "ProdTestT1" + }); + var CardanoDerivationType; + (function(CardanoDerivationType2) { + CardanoDerivationType2[CardanoDerivationType2["LEDGER"] = 0] = "LEDGER"; + CardanoDerivationType2[CardanoDerivationType2["ICARUS"] = 1] = "ICARUS"; + CardanoDerivationType2[CardanoDerivationType2["ICARUS_TREZOR"] = 2] = "ICARUS_TREZOR"; + })(CardanoDerivationType || (exports2.CardanoDerivationType = CardanoDerivationType = {})); + exports2.EnumCardanoDerivationType = schema_utils_1.Type.Enum(CardanoDerivationType); + var CardanoAddressType; + (function(CardanoAddressType2) { + CardanoAddressType2[CardanoAddressType2["BASE"] = 0] = "BASE"; + CardanoAddressType2[CardanoAddressType2["BASE_SCRIPT_KEY"] = 1] = "BASE_SCRIPT_KEY"; + CardanoAddressType2[CardanoAddressType2["BASE_KEY_SCRIPT"] = 2] = "BASE_KEY_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["BASE_SCRIPT_SCRIPT"] = 3] = "BASE_SCRIPT_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["POINTER"] = 4] = "POINTER"; + CardanoAddressType2[CardanoAddressType2["POINTER_SCRIPT"] = 5] = "POINTER_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["ENTERPRISE"] = 6] = "ENTERPRISE"; + CardanoAddressType2[CardanoAddressType2["ENTERPRISE_SCRIPT"] = 7] = "ENTERPRISE_SCRIPT"; + CardanoAddressType2[CardanoAddressType2["BYRON"] = 8] = "BYRON"; + CardanoAddressType2[CardanoAddressType2["REWARD"] = 14] = "REWARD"; + CardanoAddressType2[CardanoAddressType2["REWARD_SCRIPT"] = 15] = "REWARD_SCRIPT"; + })(CardanoAddressType || (exports2.CardanoAddressType = CardanoAddressType = {})); + exports2.EnumCardanoAddressType = schema_utils_1.Type.Enum(CardanoAddressType); + var CardanoNativeScriptType; + (function(CardanoNativeScriptType2) { + CardanoNativeScriptType2[CardanoNativeScriptType2["PUB_KEY"] = 0] = "PUB_KEY"; + CardanoNativeScriptType2[CardanoNativeScriptType2["ALL"] = 1] = "ALL"; + CardanoNativeScriptType2[CardanoNativeScriptType2["ANY"] = 2] = "ANY"; + CardanoNativeScriptType2[CardanoNativeScriptType2["N_OF_K"] = 3] = "N_OF_K"; + CardanoNativeScriptType2[CardanoNativeScriptType2["INVALID_BEFORE"] = 4] = "INVALID_BEFORE"; + CardanoNativeScriptType2[CardanoNativeScriptType2["INVALID_HEREAFTER"] = 5] = "INVALID_HEREAFTER"; + })(CardanoNativeScriptType || (exports2.CardanoNativeScriptType = CardanoNativeScriptType = {})); + exports2.EnumCardanoNativeScriptType = schema_utils_1.Type.Enum(CardanoNativeScriptType); + var CardanoNativeScriptHashDisplayFormat; + (function(CardanoNativeScriptHashDisplayFormat2) { + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["HIDE"] = 0] = "HIDE"; + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["BECH32"] = 1] = "BECH32"; + CardanoNativeScriptHashDisplayFormat2[CardanoNativeScriptHashDisplayFormat2["POLICY_ID"] = 2] = "POLICY_ID"; + })(CardanoNativeScriptHashDisplayFormat || (exports2.CardanoNativeScriptHashDisplayFormat = CardanoNativeScriptHashDisplayFormat = {})); + exports2.EnumCardanoNativeScriptHashDisplayFormat = schema_utils_1.Type.Enum(CardanoNativeScriptHashDisplayFormat); + var CardanoTxOutputSerializationFormat; + (function(CardanoTxOutputSerializationFormat2) { + CardanoTxOutputSerializationFormat2[CardanoTxOutputSerializationFormat2["ARRAY_LEGACY"] = 0] = "ARRAY_LEGACY"; + CardanoTxOutputSerializationFormat2[CardanoTxOutputSerializationFormat2["MAP_BABBAGE"] = 1] = "MAP_BABBAGE"; + })(CardanoTxOutputSerializationFormat || (exports2.CardanoTxOutputSerializationFormat = CardanoTxOutputSerializationFormat = {})); + exports2.EnumCardanoTxOutputSerializationFormat = schema_utils_1.Type.Enum(CardanoTxOutputSerializationFormat); + var CardanoCertificateType; + (function(CardanoCertificateType2) { + CardanoCertificateType2[CardanoCertificateType2["STAKE_REGISTRATION"] = 0] = "STAKE_REGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DEREGISTRATION"] = 1] = "STAKE_DEREGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DELEGATION"] = 2] = "STAKE_DELEGATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_POOL_REGISTRATION"] = 3] = "STAKE_POOL_REGISTRATION"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_REGISTRATION_CONWAY"] = 7] = "STAKE_REGISTRATION_CONWAY"; + CardanoCertificateType2[CardanoCertificateType2["STAKE_DEREGISTRATION_CONWAY"] = 8] = "STAKE_DEREGISTRATION_CONWAY"; + CardanoCertificateType2[CardanoCertificateType2["VOTE_DELEGATION"] = 9] = "VOTE_DELEGATION"; + })(CardanoCertificateType || (exports2.CardanoCertificateType = CardanoCertificateType = {})); + exports2.EnumCardanoCertificateType = schema_utils_1.Type.Enum(CardanoCertificateType); + var CardanoDRepType; + (function(CardanoDRepType2) { + CardanoDRepType2[CardanoDRepType2["KEY_HASH"] = 0] = "KEY_HASH"; + CardanoDRepType2[CardanoDRepType2["SCRIPT_HASH"] = 1] = "SCRIPT_HASH"; + CardanoDRepType2[CardanoDRepType2["ABSTAIN"] = 2] = "ABSTAIN"; + CardanoDRepType2[CardanoDRepType2["NO_CONFIDENCE"] = 3] = "NO_CONFIDENCE"; + })(CardanoDRepType || (exports2.CardanoDRepType = CardanoDRepType = {})); + exports2.EnumCardanoDRepType = schema_utils_1.Type.Enum(CardanoDRepType); + var CardanoPoolRelayType; + (function(CardanoPoolRelayType2) { + CardanoPoolRelayType2[CardanoPoolRelayType2["SINGLE_HOST_IP"] = 0] = "SINGLE_HOST_IP"; + CardanoPoolRelayType2[CardanoPoolRelayType2["SINGLE_HOST_NAME"] = 1] = "SINGLE_HOST_NAME"; + CardanoPoolRelayType2[CardanoPoolRelayType2["MULTIPLE_HOST_NAME"] = 2] = "MULTIPLE_HOST_NAME"; + })(CardanoPoolRelayType || (exports2.CardanoPoolRelayType = CardanoPoolRelayType = {})); + exports2.EnumCardanoPoolRelayType = schema_utils_1.Type.Enum(CardanoPoolRelayType); + var CardanoTxAuxiliaryDataSupplementType; + (function(CardanoTxAuxiliaryDataSupplementType2) { + CardanoTxAuxiliaryDataSupplementType2[CardanoTxAuxiliaryDataSupplementType2["NONE"] = 0] = "NONE"; + CardanoTxAuxiliaryDataSupplementType2[CardanoTxAuxiliaryDataSupplementType2["CVOTE_REGISTRATION_SIGNATURE"] = 1] = "CVOTE_REGISTRATION_SIGNATURE"; + })(CardanoTxAuxiliaryDataSupplementType || (exports2.CardanoTxAuxiliaryDataSupplementType = CardanoTxAuxiliaryDataSupplementType = {})); + exports2.EnumCardanoTxAuxiliaryDataSupplementType = schema_utils_1.Type.Enum(CardanoTxAuxiliaryDataSupplementType); + var CardanoCVoteRegistrationFormat; + (function(CardanoCVoteRegistrationFormat2) { + CardanoCVoteRegistrationFormat2[CardanoCVoteRegistrationFormat2["CIP15"] = 0] = "CIP15"; + CardanoCVoteRegistrationFormat2[CardanoCVoteRegistrationFormat2["CIP36"] = 1] = "CIP36"; + })(CardanoCVoteRegistrationFormat || (exports2.CardanoCVoteRegistrationFormat = CardanoCVoteRegistrationFormat = {})); + exports2.EnumCardanoCVoteRegistrationFormat = schema_utils_1.Type.Enum(CardanoCVoteRegistrationFormat); + var CardanoTxSigningMode; + (function(CardanoTxSigningMode2) { + CardanoTxSigningMode2[CardanoTxSigningMode2["ORDINARY_TRANSACTION"] = 0] = "ORDINARY_TRANSACTION"; + CardanoTxSigningMode2[CardanoTxSigningMode2["POOL_REGISTRATION_AS_OWNER"] = 1] = "POOL_REGISTRATION_AS_OWNER"; + CardanoTxSigningMode2[CardanoTxSigningMode2["MULTISIG_TRANSACTION"] = 2] = "MULTISIG_TRANSACTION"; + CardanoTxSigningMode2[CardanoTxSigningMode2["PLUTUS_TRANSACTION"] = 3] = "PLUTUS_TRANSACTION"; + })(CardanoTxSigningMode || (exports2.CardanoTxSigningMode = CardanoTxSigningMode = {})); + exports2.EnumCardanoTxSigningMode = schema_utils_1.Type.Enum(CardanoTxSigningMode); + var CardanoTxWitnessType; + (function(CardanoTxWitnessType2) { + CardanoTxWitnessType2[CardanoTxWitnessType2["BYRON_WITNESS"] = 0] = "BYRON_WITNESS"; + CardanoTxWitnessType2[CardanoTxWitnessType2["SHELLEY_WITNESS"] = 1] = "SHELLEY_WITNESS"; + })(CardanoTxWitnessType || (exports2.CardanoTxWitnessType = CardanoTxWitnessType = {})); + exports2.EnumCardanoTxWitnessType = schema_utils_1.Type.Enum(CardanoTxWitnessType); + exports2.CardanoBlockchainPointerType = schema_utils_1.Type.Object({ + block_index: schema_utils_1.Type.Number(), + tx_index: schema_utils_1.Type.Number(), + certificate_index: schema_utils_1.Type.Number() + }, { + $id: "CardanoBlockchainPointerType" + }); + exports2.CardanoNativeScript = schema_utils_1.Type.Recursive((This) => schema_utils_1.Type.Object({ + type: exports2.EnumCardanoNativeScriptType, + scripts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(This)), + key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + required_signatures_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + invalid_before: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + invalid_hereafter: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()) + }), { + $id: "CardanoNativeScript" + }); + exports2.CardanoGetNativeScriptHash = schema_utils_1.Type.Object({ + script: exports2.CardanoNativeScript, + display_format: exports2.EnumCardanoNativeScriptHashDisplayFormat, + derivation_type: exports2.EnumCardanoDerivationType + }, { + $id: "CardanoGetNativeScriptHash" + }); + exports2.CardanoNativeScriptHash = schema_utils_1.Type.Object({ + script_hash: schema_utils_1.Type.String() + }, { + $id: "CardanoNativeScriptHash" + }); + exports2.CardanoAddressParametersType = schema_utils_1.Type.Object({ + address_type: exports2.EnumCardanoAddressType, + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + address_n_staking: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + staking_key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + certificate_pointer: schema_utils_1.Type.Optional(exports2.CardanoBlockchainPointerType), + script_payment_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_staking_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoAddressParametersType" + }); + exports2.CardanoGetAddress = schema_utils_1.Type.Object({ + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + protocol_magic: schema_utils_1.Type.Number(), + network_id: schema_utils_1.Type.Number(), + address_parameters: exports2.CardanoAddressParametersType, + derivation_type: exports2.EnumCardanoDerivationType, + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "CardanoGetAddress" + }); + exports2.CardanoAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoAddress" + }); + exports2.CardanoGetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + derivation_type: exports2.EnumCardanoDerivationType + }, { + $id: "CardanoGetPublicKey" + }); + exports2.CardanoPublicKey = schema_utils_1.Type.Object({ + xpub: schema_utils_1.Type.String(), + node: exports2.HDNodeType + }, { + $id: "CardanoPublicKey" + }); + exports2.CardanoSignTxInit = schema_utils_1.Type.Object({ + signing_mode: exports2.EnumCardanoTxSigningMode, + protocol_magic: schema_utils_1.Type.Number(), + network_id: schema_utils_1.Type.Number(), + inputs_count: schema_utils_1.Type.Number(), + outputs_count: schema_utils_1.Type.Number(), + fee: schema_utils_1.Type.Uint(), + ttl: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + certificates_count: schema_utils_1.Type.Number(), + withdrawals_count: schema_utils_1.Type.Number(), + has_auxiliary_data: schema_utils_1.Type.Boolean(), + validity_interval_start: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + witness_requests_count: schema_utils_1.Type.Number(), + minting_asset_groups_count: schema_utils_1.Type.Number(), + derivation_type: exports2.EnumCardanoDerivationType, + include_network_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + script_data_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + collateral_inputs_count: schema_utils_1.Type.Number(), + required_signers_count: schema_utils_1.Type.Number(), + has_collateral_return: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + total_collateral: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + reference_inputs_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + tag_cbor_sets: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "CardanoSignTxInit" + }); + exports2.CardanoTxInput = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }, { + $id: "CardanoTxInput" + }); + exports2.CardanoTxOutput = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + address_parameters: schema_utils_1.Type.Optional(exports2.CardanoAddressParametersType), + amount: schema_utils_1.Type.Uint(), + asset_groups_count: schema_utils_1.Type.Number(), + datum_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + format: schema_utils_1.Type.Optional(exports2.EnumCardanoTxOutputSerializationFormat), + inline_datum_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + reference_script_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "CardanoTxOutput" + }); + exports2.CardanoAssetGroup = schema_utils_1.Type.Object({ + policy_id: schema_utils_1.Type.String(), + tokens_count: schema_utils_1.Type.Number() + }, { + $id: "CardanoAssetGroup" + }); + exports2.CardanoToken = schema_utils_1.Type.Object({ + asset_name_bytes: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + mint_amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint({ + allowNegative: true + })) + }, { + $id: "CardanoToken" + }); + exports2.CardanoTxInlineDatumChunk = schema_utils_1.Type.Object({ + data: schema_utils_1.Type.String() + }, { + $id: "CardanoTxInlineDatumChunk" + }); + exports2.CardanoTxReferenceScriptChunk = schema_utils_1.Type.Object({ + data: schema_utils_1.Type.String() + }, { + $id: "CardanoTxReferenceScriptChunk" + }); + exports2.CardanoPoolOwner = schema_utils_1.Type.Object({ + staking_key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + staking_key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoPoolOwner" + }); + exports2.CardanoPoolRelayParameters = schema_utils_1.Type.Object({ + type: exports2.EnumCardanoPoolRelayType, + ipv4_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ipv6_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + host_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + port: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "CardanoPoolRelayParameters" + }); + exports2.CardanoPoolMetadataType = schema_utils_1.Type.Object({ + url: schema_utils_1.Type.String(), + hash: schema_utils_1.Type.String() + }, { + $id: "CardanoPoolMetadataType" + }); + exports2.CardanoPoolParametersType = schema_utils_1.Type.Object({ + pool_id: schema_utils_1.Type.String(), + vrf_key_hash: schema_utils_1.Type.String(), + pledge: schema_utils_1.Type.Uint(), + cost: schema_utils_1.Type.Uint(), + margin_numerator: schema_utils_1.Type.Uint(), + margin_denominator: schema_utils_1.Type.Uint(), + reward_account: schema_utils_1.Type.String(), + metadata: schema_utils_1.Type.Optional(exports2.CardanoPoolMetadataType), + owners_count: schema_utils_1.Type.Number(), + relays_count: schema_utils_1.Type.Number() + }, { + $id: "CardanoPoolParametersType" + }); + exports2.CardanoDRep = schema_utils_1.Type.Object({ + type: exports2.EnumCardanoDRepType, + key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoDRep" + }); + exports2.CardanoTxCertificate = schema_utils_1.Type.Object({ + type: exports2.EnumCardanoCertificateType, + path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + pool: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pool_parameters: schema_utils_1.Type.Optional(exports2.CardanoPoolParametersType), + script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + deposit: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + drep: schema_utils_1.Type.Optional(exports2.CardanoDRep) + }, { + $id: "CardanoTxCertificate" + }); + exports2.CardanoTxWithdrawal = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + amount: schema_utils_1.Type.Uint(), + script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoTxWithdrawal" + }); + exports2.CardanoCVoteRegistrationDelegation = schema_utils_1.Type.Object({ + vote_public_key: schema_utils_1.Type.String(), + weight: schema_utils_1.Type.Uint() + }, { + $id: "CardanoCVoteRegistrationDelegation" + }); + exports2.CardanoCVoteRegistrationParametersType = schema_utils_1.Type.Object({ + vote_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + staking_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + payment_address_parameters: schema_utils_1.Type.Optional(exports2.CardanoAddressParametersType), + nonce: schema_utils_1.Type.Uint(), + format: schema_utils_1.Type.Optional(exports2.EnumCardanoCVoteRegistrationFormat), + delegations: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoCVoteRegistrationDelegation)), + voting_purpose: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + payment_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoCVoteRegistrationParametersType" + }); + exports2.CardanoTxAuxiliaryData = schema_utils_1.Type.Object({ + cvote_registration_parameters: schema_utils_1.Type.Optional(exports2.CardanoCVoteRegistrationParametersType), + hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoTxAuxiliaryData" + }); + exports2.CardanoTxMint = schema_utils_1.Type.Object({ + asset_groups_count: schema_utils_1.Type.Number() + }, { + $id: "CardanoTxMint" + }); + exports2.CardanoTxCollateralInput = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }, { + $id: "CardanoTxCollateralInput" + }); + exports2.CardanoTxRequiredSigner = schema_utils_1.Type.Object({ + key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())) + }, { + $id: "CardanoTxRequiredSigner" + }); + exports2.CardanoTxReferenceInput = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }, { + $id: "CardanoTxReferenceInput" + }); + exports2.CardanoTxItemAck = schema_utils_1.Type.Object({}, { + $id: "CardanoTxItemAck" + }); + exports2.CardanoTxAuxiliaryDataSupplement = schema_utils_1.Type.Object({ + type: exports2.EnumCardanoTxAuxiliaryDataSupplementType, + auxiliary_data_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + cvote_registration_signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoTxAuxiliaryDataSupplement" + }); + exports2.CardanoTxWitnessRequest = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()) + }, { + $id: "CardanoTxWitnessRequest" + }); + exports2.CardanoTxWitnessResponse = schema_utils_1.Type.Object({ + type: exports2.EnumCardanoTxWitnessType, + pub_key: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String(), + chain_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CardanoTxWitnessResponse" + }); + exports2.CardanoTxHostAck = schema_utils_1.Type.Object({}, { + $id: "CardanoTxHostAck" + }); + exports2.CardanoTxBodyHash = schema_utils_1.Type.Object({ + tx_hash: schema_utils_1.Type.String() + }, { + $id: "CardanoTxBodyHash" + }); + exports2.CardanoSignTxFinished = schema_utils_1.Type.Object({}, { + $id: "CardanoSignTxFinished" + }); + exports2.CardanoSignMessageInit = schema_utils_1.Type.Object({ + protocol_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + network_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + signing_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + payload_size: schema_utils_1.Type.Number(), + prefer_hex_display: schema_utils_1.Type.Boolean(), + address_parameters: schema_utils_1.Type.Optional(exports2.CardanoAddressParametersType), + derivation_type: exports2.EnumCardanoDerivationType + }, { + $id: "CardanoSignMessageInit" + }); + exports2.CardanoMessageDataRequest = schema_utils_1.Type.Object({ + length: schema_utils_1.Type.Number(), + offset: schema_utils_1.Type.Number() + }, { + $id: "CardanoMessageDataRequest" + }); + exports2.CardanoMessageDataResponse = schema_utils_1.Type.Object({ + data: schema_utils_1.Type.String() + }, { + $id: "CardanoMessageDataResponse" + }); + exports2.CardanoMessageSignature = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String(), + pub_key: schema_utils_1.Type.String() + }, { + $id: "CardanoMessageSignature" + }); + exports2.Success = schema_utils_1.Type.Object({ + message: schema_utils_1.Type.String() + }, { + $id: "Success" + }); + var Enum_FailureType; + (function(Enum_FailureType2) { + Enum_FailureType2[Enum_FailureType2["Failure_UnexpectedMessage"] = 1] = "Failure_UnexpectedMessage"; + Enum_FailureType2[Enum_FailureType2["Failure_ButtonExpected"] = 2] = "Failure_ButtonExpected"; + Enum_FailureType2[Enum_FailureType2["Failure_DataError"] = 3] = "Failure_DataError"; + Enum_FailureType2[Enum_FailureType2["Failure_ActionCancelled"] = 4] = "Failure_ActionCancelled"; + Enum_FailureType2[Enum_FailureType2["Failure_PinExpected"] = 5] = "Failure_PinExpected"; + Enum_FailureType2[Enum_FailureType2["Failure_PinCancelled"] = 6] = "Failure_PinCancelled"; + Enum_FailureType2[Enum_FailureType2["Failure_PinInvalid"] = 7] = "Failure_PinInvalid"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidSignature"] = 8] = "Failure_InvalidSignature"; + Enum_FailureType2[Enum_FailureType2["Failure_ProcessError"] = 9] = "Failure_ProcessError"; + Enum_FailureType2[Enum_FailureType2["Failure_NotEnoughFunds"] = 10] = "Failure_NotEnoughFunds"; + Enum_FailureType2[Enum_FailureType2["Failure_NotInitialized"] = 11] = "Failure_NotInitialized"; + Enum_FailureType2[Enum_FailureType2["Failure_PinMismatch"] = 12] = "Failure_PinMismatch"; + Enum_FailureType2[Enum_FailureType2["Failure_WipeCodeMismatch"] = 13] = "Failure_WipeCodeMismatch"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidSession"] = 14] = "Failure_InvalidSession"; + Enum_FailureType2[Enum_FailureType2["Failure_Busy"] = 15] = "Failure_Busy"; + Enum_FailureType2[Enum_FailureType2["Failure_ThpUnallocatedSession"] = 16] = "Failure_ThpUnallocatedSession"; + Enum_FailureType2[Enum_FailureType2["Failure_InvalidProtocol"] = 17] = "Failure_InvalidProtocol"; + Enum_FailureType2[Enum_FailureType2["Failure_BufferError"] = 18] = "Failure_BufferError"; + Enum_FailureType2[Enum_FailureType2["Failure_FirmwareError"] = 99] = "Failure_FirmwareError"; + })(Enum_FailureType || (exports2.Enum_FailureType = Enum_FailureType = {})); + exports2.EnumEnum_FailureType = schema_utils_1.Type.Enum(Enum_FailureType); + exports2.FailureType = schema_utils_1.Type.KeyOfEnum(Enum_FailureType, { + $id: "FailureType" + }); + exports2.Failure = schema_utils_1.Type.Object({ + code: schema_utils_1.Type.Optional(exports2.FailureType), + message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "Failure" + }); + var Enum_ButtonRequestType; + (function(Enum_ButtonRequestType2) { + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Other"] = 1] = "ButtonRequest_Other"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_FeeOverThreshold"] = 2] = "ButtonRequest_FeeOverThreshold"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ConfirmOutput"] = 3] = "ButtonRequest_ConfirmOutput"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ResetDevice"] = 4] = "ButtonRequest_ResetDevice"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ConfirmWord"] = 5] = "ButtonRequest_ConfirmWord"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_WipeDevice"] = 6] = "ButtonRequest_WipeDevice"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_ProtectCall"] = 7] = "ButtonRequest_ProtectCall"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_SignTx"] = 8] = "ButtonRequest_SignTx"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_FirmwareCheck"] = 9] = "ButtonRequest_FirmwareCheck"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Address"] = 10] = "ButtonRequest_Address"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PublicKey"] = 11] = "ButtonRequest_PublicKey"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_MnemonicWordCount"] = 12] = "ButtonRequest_MnemonicWordCount"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_MnemonicInput"] = 13] = "ButtonRequest_MnemonicInput"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["_Deprecated_ButtonRequest_PassphraseType"] = 14] = "_Deprecated_ButtonRequest_PassphraseType"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_UnknownDerivationPath"] = 15] = "ButtonRequest_UnknownDerivationPath"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_RecoveryHomepage"] = 16] = "ButtonRequest_RecoveryHomepage"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Success"] = 17] = "ButtonRequest_Success"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_Warning"] = 18] = "ButtonRequest_Warning"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PassphraseEntry"] = 19] = "ButtonRequest_PassphraseEntry"; + Enum_ButtonRequestType2[Enum_ButtonRequestType2["ButtonRequest_PinEntry"] = 20] = "ButtonRequest_PinEntry"; + })(Enum_ButtonRequestType || (exports2.Enum_ButtonRequestType = Enum_ButtonRequestType = {})); + exports2.EnumEnum_ButtonRequestType = schema_utils_1.Type.Enum(Enum_ButtonRequestType); + exports2.ButtonRequestType = schema_utils_1.Type.KeyOfEnum(Enum_ButtonRequestType, { + $id: "ButtonRequestType" + }); + exports2.ButtonRequest = schema_utils_1.Type.Object({ + code: schema_utils_1.Type.Optional(exports2.ButtonRequestType), + pages: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "ButtonRequest" + }); + exports2.ButtonAck = schema_utils_1.Type.Object({}, { + $id: "ButtonAck" + }); + var Enum_PinMatrixRequestType; + (function(Enum_PinMatrixRequestType2) { + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_Current"] = 1] = "PinMatrixRequestType_Current"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_NewFirst"] = 2] = "PinMatrixRequestType_NewFirst"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_NewSecond"] = 3] = "PinMatrixRequestType_NewSecond"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_WipeCodeFirst"] = 4] = "PinMatrixRequestType_WipeCodeFirst"; + Enum_PinMatrixRequestType2[Enum_PinMatrixRequestType2["PinMatrixRequestType_WipeCodeSecond"] = 5] = "PinMatrixRequestType_WipeCodeSecond"; + })(Enum_PinMatrixRequestType || (exports2.Enum_PinMatrixRequestType = Enum_PinMatrixRequestType = {})); + exports2.EnumEnum_PinMatrixRequestType = schema_utils_1.Type.Enum(Enum_PinMatrixRequestType); + exports2.PinMatrixRequestType = schema_utils_1.Type.KeyOfEnum(Enum_PinMatrixRequestType, { + $id: "PinMatrixRequestType" + }); + exports2.PinMatrixRequest = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Optional(exports2.PinMatrixRequestType) + }, { + $id: "PinMatrixRequest" + }); + exports2.PinMatrixAck = schema_utils_1.Type.Object({ + pin: schema_utils_1.Type.String() + }, { + $id: "PinMatrixAck" + }); + exports2.PassphraseRequest = schema_utils_1.Type.Object({ + _on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "PassphraseRequest" + }); + exports2.PassphraseAck = schema_utils_1.Type.Object({ + passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + _state: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "PassphraseAck" + }); + exports2.Deprecated_PassphraseStateRequest = schema_utils_1.Type.Object({ + state: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "Deprecated_PassphraseStateRequest" + }); + exports2.Deprecated_PassphraseStateAck = schema_utils_1.Type.Object({}, { + $id: "Deprecated_PassphraseStateAck" + }); + exports2.CipherKeyValue = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + key: schema_utils_1.Type.String(), + value: schema_utils_1.Type.String(), + encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + ask_on_encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + ask_on_decrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + iv: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "CipherKeyValue" + }); + exports2.CipheredKeyValue = schema_utils_1.Type.Object({ + value: schema_utils_1.Type.String() + }, { + $id: "CipheredKeyValue" + }); + exports2.IdentityType = schema_utils_1.Type.Object({ + proto: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + user: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + host: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + port: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + path: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "IdentityType" + }); + exports2.SignIdentity = schema_utils_1.Type.Object({ + identity: exports2.IdentityType, + challenge_hidden: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + challenge_visual: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "SignIdentity" + }); + exports2.SignedIdentity = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + public_key: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }, { + $id: "SignedIdentity" + }); + exports2.GetECDHSessionKey = schema_utils_1.Type.Object({ + identity: exports2.IdentityType, + peer_public_key: schema_utils_1.Type.String(), + ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "GetECDHSessionKey" + }); + exports2.ECDHSessionKey = schema_utils_1.Type.Object({ + session_key: schema_utils_1.Type.String(), + public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "ECDHSessionKey" + }); + exports2.PaymentNotification = schema_utils_1.Type.Object({ + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "PaymentNotification" + }); + var DebugButton; + (function(DebugButton2) { + DebugButton2[DebugButton2["NO"] = 0] = "NO"; + DebugButton2[DebugButton2["YES"] = 1] = "YES"; + DebugButton2[DebugButton2["INFO"] = 2] = "INFO"; + })(DebugButton || (exports2.DebugButton = DebugButton = {})); + exports2.EnumDebugButton = schema_utils_1.Type.Enum(DebugButton); + var DebugPhysicalButton; + (function(DebugPhysicalButton2) { + DebugPhysicalButton2[DebugPhysicalButton2["LEFT_BTN"] = 0] = "LEFT_BTN"; + DebugPhysicalButton2[DebugPhysicalButton2["MIDDLE_BTN"] = 1] = "MIDDLE_BTN"; + DebugPhysicalButton2[DebugPhysicalButton2["RIGHT_BTN"] = 2] = "RIGHT_BTN"; + })(DebugPhysicalButton || (exports2.DebugPhysicalButton = DebugPhysicalButton = {})); + exports2.EnumDebugPhysicalButton = schema_utils_1.Type.Enum(DebugPhysicalButton); + var DebugTouchEventType; + (function(DebugTouchEventType2) { + DebugTouchEventType2[DebugTouchEventType2["TOUCH_FULL_CLICK"] = 0] = "TOUCH_FULL_CLICK"; + DebugTouchEventType2[DebugTouchEventType2["TOUCH_START"] = 1] = "TOUCH_START"; + DebugTouchEventType2[DebugTouchEventType2["TOUCH_END"] = 2] = "TOUCH_END"; + })(DebugTouchEventType || (exports2.DebugTouchEventType = DebugTouchEventType = {})); + exports2.EnumDebugTouchEventType = schema_utils_1.Type.Enum(DebugTouchEventType); + var DebugWaitType; + (function(DebugWaitType2) { + DebugWaitType2[DebugWaitType2["IMMEDIATE"] = 0] = "IMMEDIATE"; + DebugWaitType2[DebugWaitType2["NEXT_LAYOUT"] = 1] = "NEXT_LAYOUT"; + DebugWaitType2[DebugWaitType2["CURRENT_LAYOUT"] = 2] = "CURRENT_LAYOUT"; + })(DebugWaitType || (exports2.DebugWaitType = DebugWaitType = {})); + exports2.EnumDebugWaitType = schema_utils_1.Type.Enum(DebugWaitType); + exports2.DebugLinkGetPairingInfo = schema_utils_1.Type.Object({ + channel_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + handshake_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + nfc_secret_host: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "DebugLinkGetPairingInfo" + }); + exports2.DebugLinkPairingInfo = schema_utils_1.Type.Object({ + channel_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + handshake_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + code_entry_code: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + code_qr_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + nfc_secret_trezor: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "DebugLinkPairingInfo" + }); + exports2.DebugLinkResetDebugEvents = schema_utils_1.Type.Object({}, { + $id: "DebugLinkResetDebugEvents" + }); + exports2.DebugLinkOptigaSetSecMax = schema_utils_1.Type.Object({}, { + $id: "DebugLinkOptigaSetSecMax" + }); + exports2.DebugLinkGetGcInfo = schema_utils_1.Type.Object({}, { + $id: "DebugLinkGetGcInfo" + }); + exports2.DebugLinkGcInfoItem = schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String(), + value: schema_utils_1.Type.Number() + }, { + $id: "DebugLinkGcInfoItem" + }); + exports2.DebugLinkGcInfo = schema_utils_1.Type.Object({ + items: schema_utils_1.Type.Array(exports2.DebugLinkGcInfoItem) + }, { + $id: "DebugLinkGcInfo" + }); + var DefinitionType; + (function(DefinitionType2) { + DefinitionType2[DefinitionType2["ETHEREUM_NETWORK"] = 0] = "ETHEREUM_NETWORK"; + DefinitionType2[DefinitionType2["ETHEREUM_TOKEN"] = 1] = "ETHEREUM_TOKEN"; + DefinitionType2[DefinitionType2["SOLANA_TOKEN"] = 2] = "SOLANA_TOKEN"; + })(DefinitionType || (exports2.DefinitionType = DefinitionType = {})); + exports2.EnumDefinitionType = schema_utils_1.Type.Enum(DefinitionType); + exports2.EthereumNetworkInfo = schema_utils_1.Type.Object({ + chain_id: schema_utils_1.Type.Number(), + symbol: schema_utils_1.Type.String(), + slip44: schema_utils_1.Type.Number(), + name: schema_utils_1.Type.String() + }, { + $id: "EthereumNetworkInfo" + }); + exports2.EthereumTokenInfo = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + chain_id: schema_utils_1.Type.Number(), + symbol: schema_utils_1.Type.String(), + decimals: schema_utils_1.Type.Number(), + name: schema_utils_1.Type.String() + }, { + $id: "EthereumTokenInfo" + }); + exports2.SolanaTokenInfo = schema_utils_1.Type.Object({ + mint: schema_utils_1.Type.String(), + symbol: schema_utils_1.Type.String(), + name: schema_utils_1.Type.String() + }, { + $id: "SolanaTokenInfo" + }); + exports2.EosGetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EosGetPublicKey" + }); + exports2.EosPublicKey = schema_utils_1.Type.Object({ + wif_public_key: schema_utils_1.Type.String(), + raw_public_key: schema_utils_1.Type.String() + }, { + $id: "EosPublicKey" + }); + exports2.EosTxHeader = schema_utils_1.Type.Object({ + expiration: schema_utils_1.Type.Number(), + ref_block_num: schema_utils_1.Type.Number(), + ref_block_prefix: schema_utils_1.Type.Number(), + max_net_usage_words: schema_utils_1.Type.Number(), + max_cpu_usage_ms: schema_utils_1.Type.Number(), + delay_sec: schema_utils_1.Type.Number() + }, { + $id: "EosTxHeader" + }); + exports2.EosSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + chain_id: schema_utils_1.Type.String(), + header: exports2.EosTxHeader, + num_actions: schema_utils_1.Type.Number(), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EosSignTx" + }); + exports2.EosTxActionRequest = schema_utils_1.Type.Object({ + data_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "EosTxActionRequest" + }); + exports2.EosAsset = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Uint(), + symbol: schema_utils_1.Type.String() + }, { + $id: "EosAsset" + }); + exports2.EosPermissionLevel = schema_utils_1.Type.Object({ + actor: schema_utils_1.Type.String(), + permission: schema_utils_1.Type.String() + }, { + $id: "EosPermissionLevel" + }); + exports2.EosAuthorizationKey = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + key: schema_utils_1.Type.String(), + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + weight: schema_utils_1.Type.Number() + }, { + $id: "EosAuthorizationKey" + }); + exports2.EosAuthorizationAccount = schema_utils_1.Type.Object({ + account: exports2.EosPermissionLevel, + weight: schema_utils_1.Type.Number() + }, { + $id: "EosAuthorizationAccount" + }); + exports2.EosAuthorizationWait = schema_utils_1.Type.Object({ + wait_sec: schema_utils_1.Type.Number(), + weight: schema_utils_1.Type.Number() + }, { + $id: "EosAuthorizationWait" + }); + exports2.EosAuthorization = schema_utils_1.Type.Object({ + threshold: schema_utils_1.Type.Number(), + keys: schema_utils_1.Type.Array(exports2.EosAuthorizationKey), + accounts: schema_utils_1.Type.Array(exports2.EosAuthorizationAccount), + waits: schema_utils_1.Type.Array(exports2.EosAuthorizationWait) + }, { + $id: "EosAuthorization" + }); + exports2.EosActionCommon = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + name: schema_utils_1.Type.String(), + authorization: schema_utils_1.Type.Array(exports2.EosPermissionLevel) + }, { + $id: "EosActionCommon" + }); + exports2.EosActionTransfer = schema_utils_1.Type.Object({ + sender: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + quantity: exports2.EosAsset, + memo: schema_utils_1.Type.String() + }, { + $id: "EosActionTransfer" + }); + exports2.EosActionDelegate = schema_utils_1.Type.Object({ + sender: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + net_quantity: exports2.EosAsset, + cpu_quantity: exports2.EosAsset, + transfer: schema_utils_1.Type.Boolean() + }, { + $id: "EosActionDelegate" + }); + exports2.EosActionUndelegate = schema_utils_1.Type.Object({ + sender: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + net_quantity: exports2.EosAsset, + cpu_quantity: exports2.EosAsset + }, { + $id: "EosActionUndelegate" + }); + exports2.EosActionRefund = schema_utils_1.Type.Object({ + owner: schema_utils_1.Type.String() + }, { + $id: "EosActionRefund" + }); + exports2.EosActionBuyRam = schema_utils_1.Type.Object({ + payer: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + quantity: exports2.EosAsset + }, { + $id: "EosActionBuyRam" + }); + exports2.EosActionBuyRamBytes = schema_utils_1.Type.Object({ + payer: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + bytes: schema_utils_1.Type.Number() + }, { + $id: "EosActionBuyRamBytes" + }); + exports2.EosActionSellRam = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + bytes: schema_utils_1.Type.Number() + }, { + $id: "EosActionSellRam" + }); + exports2.EosActionVoteProducer = schema_utils_1.Type.Object({ + voter: schema_utils_1.Type.String(), + proxy: schema_utils_1.Type.String(), + producers: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }, { + $id: "EosActionVoteProducer" + }); + exports2.EosActionUpdateAuth = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + permission: schema_utils_1.Type.String(), + parent: schema_utils_1.Type.String(), + auth: exports2.EosAuthorization + }, { + $id: "EosActionUpdateAuth" + }); + exports2.EosActionDeleteAuth = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + permission: schema_utils_1.Type.String() + }, { + $id: "EosActionDeleteAuth" + }); + exports2.EosActionLinkAuth = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + code: schema_utils_1.Type.String(), + type: schema_utils_1.Type.String(), + requirement: schema_utils_1.Type.String() + }, { + $id: "EosActionLinkAuth" + }); + exports2.EosActionUnlinkAuth = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + code: schema_utils_1.Type.String(), + type: schema_utils_1.Type.String() + }, { + $id: "EosActionUnlinkAuth" + }); + exports2.EosActionNewAccount = schema_utils_1.Type.Object({ + creator: schema_utils_1.Type.String(), + name: schema_utils_1.Type.String(), + owner: exports2.EosAuthorization, + active: exports2.EosAuthorization + }, { + $id: "EosActionNewAccount" + }); + exports2.EosActionUnknown = schema_utils_1.Type.Object({ + data_size: schema_utils_1.Type.Number(), + data_chunk: schema_utils_1.Type.String() + }, { + $id: "EosActionUnknown" + }); + exports2.EosTxActionAck = schema_utils_1.Type.Object({ + common: exports2.EosActionCommon, + transfer: schema_utils_1.Type.Optional(exports2.EosActionTransfer), + delegate: schema_utils_1.Type.Optional(exports2.EosActionDelegate), + undelegate: schema_utils_1.Type.Optional(exports2.EosActionUndelegate), + refund: schema_utils_1.Type.Optional(exports2.EosActionRefund), + buy_ram: schema_utils_1.Type.Optional(exports2.EosActionBuyRam), + buy_ram_bytes: schema_utils_1.Type.Optional(exports2.EosActionBuyRamBytes), + sell_ram: schema_utils_1.Type.Optional(exports2.EosActionSellRam), + vote_producer: schema_utils_1.Type.Optional(exports2.EosActionVoteProducer), + update_auth: schema_utils_1.Type.Optional(exports2.EosActionUpdateAuth), + delete_auth: schema_utils_1.Type.Optional(exports2.EosActionDeleteAuth), + link_auth: schema_utils_1.Type.Optional(exports2.EosActionLinkAuth), + unlink_auth: schema_utils_1.Type.Optional(exports2.EosActionUnlinkAuth), + new_account: schema_utils_1.Type.Optional(exports2.EosActionNewAccount), + unknown: schema_utils_1.Type.Optional(exports2.EosActionUnknown) + }, { + $id: "EosTxActionAck" + }); + exports2.EosSignedTx = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String() + }, { + $id: "EosSignedTx" + }); + exports2.EthereumDefinitions = schema_utils_1.Type.Object({ + encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()), + encoded_token: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()) + }, { + $id: "EthereumDefinitions" + }); + exports2.EthereumSignTypedData = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + primary_type: schema_utils_1.Type.String(), + metamask_v4_compat: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + definitions: schema_utils_1.Type.Optional(exports2.EthereumDefinitions), + show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "EthereumSignTypedData" + }); + exports2.EthereumTypedDataStructRequest = schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String() + }, { + $id: "EthereumTypedDataStructRequest" + }); + var EthereumDataType; + (function(EthereumDataType2) { + EthereumDataType2[EthereumDataType2["UINT"] = 1] = "UINT"; + EthereumDataType2[EthereumDataType2["INT"] = 2] = "INT"; + EthereumDataType2[EthereumDataType2["BYTES"] = 3] = "BYTES"; + EthereumDataType2[EthereumDataType2["STRING"] = 4] = "STRING"; + EthereumDataType2[EthereumDataType2["BOOL"] = 5] = "BOOL"; + EthereumDataType2[EthereumDataType2["ADDRESS"] = 6] = "ADDRESS"; + EthereumDataType2[EthereumDataType2["ARRAY"] = 7] = "ARRAY"; + EthereumDataType2[EthereumDataType2["STRUCT"] = 8] = "STRUCT"; + })(EthereumDataType || (exports2.EthereumDataType = EthereumDataType = {})); + exports2.EnumEthereumDataType = schema_utils_1.Type.Enum(EthereumDataType); + exports2.EthereumFieldType = schema_utils_1.Type.Recursive((This) => schema_utils_1.Type.Object({ + data_type: exports2.EnumEthereumDataType, + size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + entry_type: schema_utils_1.Type.Optional(This), + struct_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }), { + $id: "EthereumFieldType" + }); + exports2.EthereumStructMember = schema_utils_1.Type.Object({ + type: exports2.EthereumFieldType, + name: schema_utils_1.Type.String() + }, { + $id: "EthereumStructMember" + }); + exports2.EthereumTypedDataStructAck = schema_utils_1.Type.Object({ + members: schema_utils_1.Type.Array(exports2.EthereumStructMember) + }, { + $id: "EthereumTypedDataStructAck" + }); + exports2.EthereumTypedDataValueRequest = schema_utils_1.Type.Object({ + member_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()) + }, { + $id: "EthereumTypedDataValueRequest" + }); + exports2.EthereumTypedDataValueAck = schema_utils_1.Type.Object({ + value: schema_utils_1.Type.String() + }, { + $id: "EthereumTypedDataValueAck" + }); + exports2.EthereumGetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EthereumGetPublicKey" + }); + exports2.EthereumPublicKey = schema_utils_1.Type.Object({ + node: exports2.HDNodeType, + xpub: schema_utils_1.Type.String() + }, { + $id: "EthereumPublicKey" + }); + exports2.EthereumGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EthereumGetAddress" + }); + exports2.EthereumAddress = schema_utils_1.Type.Object({ + _old_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "EthereumAddress" + }); + exports2.EthereumSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + nonce: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + gas_price: schema_utils_1.Type.String(), + gas_limit: schema_utils_1.Type.String(), + to: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + value: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + data_initial_chunk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + chain_id: schema_utils_1.Type.Number(), + tx_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + definitions: schema_utils_1.Type.Optional(exports2.EthereumDefinitions), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "EthereumSignTx" + }); + exports2.EthereumAccessList = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + storage_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }, { + $id: "EthereumAccessList" + }); + exports2.EthereumSignTxEIP1559 = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + nonce: schema_utils_1.Type.String(), + max_gas_fee: schema_utils_1.Type.String(), + max_priority_fee: schema_utils_1.Type.String(), + gas_limit: schema_utils_1.Type.String(), + to: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + value: schema_utils_1.Type.String(), + data_initial_chunk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + data_length: schema_utils_1.Type.Number(), + chain_id: schema_utils_1.Type.Number(), + access_list: schema_utils_1.Type.Array(exports2.EthereumAccessList), + definitions: schema_utils_1.Type.Optional(exports2.EthereumDefinitions), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "EthereumSignTxEIP1559" + }); + exports2.EthereumTxRequest = schema_utils_1.Type.Object({ + data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + signature_v: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + signature_r: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + signature_s: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "EthereumTxRequest" + }); + exports2.EthereumTxAck = schema_utils_1.Type.Object({ + data_chunk: schema_utils_1.Type.String() + }, { + $id: "EthereumTxAck" + }); + exports2.EthereumSignMessage = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + message: schema_utils_1.Type.String(), + encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EthereumSignMessage" + }); + exports2.EthereumMessageSignature = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String() + }, { + $id: "EthereumMessageSignature" + }); + exports2.EthereumVerifyMessage = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + message: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String(), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EthereumVerifyMessage" + }); + exports2.EthereumSignTypedHash = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + domain_separator_hash: schema_utils_1.Type.String(), + message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()) + }, { + $id: "EthereumSignTypedHash" + }); + exports2.EthereumTypedDataSignature = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String() + }, { + $id: "EthereumTypedDataSignature" + }); + exports2.EvoluGetNode = schema_utils_1.Type.Object({ + proof_of_delegated_identity: schema_utils_1.Type.String() + }, { + $id: "EvoluGetNode" + }); + exports2.EvoluNode = schema_utils_1.Type.Object({ + data: schema_utils_1.Type.String() + }, { + $id: "EvoluNode" + }); + exports2.EvoluSignRegistrationRequest = schema_utils_1.Type.Object({ + challenge_from_server: schema_utils_1.Type.String(), + size_to_acquire: schema_utils_1.Type.Number(), + proof_of_delegated_identity: schema_utils_1.Type.String() + }, { + $id: "EvoluSignRegistrationRequest" + }); + exports2.EvoluRegistrationRequest = schema_utils_1.Type.Object({ + certificate_chain: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + signature: schema_utils_1.Type.String() + }, { + $id: "EvoluRegistrationRequest" + }); + exports2.EvoluGetDelegatedIdentityKey = schema_utils_1.Type.Object({ + thp_credential: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + host_static_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "EvoluGetDelegatedIdentityKey" + }); + exports2.EvoluDelegatedIdentityKey = schema_utils_1.Type.Object({ + private_key: schema_utils_1.Type.String() + }, { + $id: "EvoluDelegatedIdentityKey" + }); + var Enum_BackupType; + (function(Enum_BackupType2) { + Enum_BackupType2[Enum_BackupType2["Bip39"] = 0] = "Bip39"; + Enum_BackupType2[Enum_BackupType2["Slip39_Basic"] = 1] = "Slip39_Basic"; + Enum_BackupType2[Enum_BackupType2["Slip39_Advanced"] = 2] = "Slip39_Advanced"; + Enum_BackupType2[Enum_BackupType2["Slip39_Single_Extendable"] = 3] = "Slip39_Single_Extendable"; + Enum_BackupType2[Enum_BackupType2["Slip39_Basic_Extendable"] = 4] = "Slip39_Basic_Extendable"; + Enum_BackupType2[Enum_BackupType2["Slip39_Advanced_Extendable"] = 5] = "Slip39_Advanced_Extendable"; + })(Enum_BackupType || (exports2.Enum_BackupType = Enum_BackupType = {})); + exports2.EnumEnum_BackupType = schema_utils_1.Type.Enum(Enum_BackupType); + exports2.BackupType = schema_utils_1.Type.KeyOfEnum(Enum_BackupType, { + $id: "BackupType" + }); + var Enum_SafetyCheckLevel; + (function(Enum_SafetyCheckLevel2) { + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["Strict"] = 0] = "Strict"; + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["PromptAlways"] = 1] = "PromptAlways"; + Enum_SafetyCheckLevel2[Enum_SafetyCheckLevel2["PromptTemporarily"] = 2] = "PromptTemporarily"; + })(Enum_SafetyCheckLevel || (exports2.Enum_SafetyCheckLevel = Enum_SafetyCheckLevel = {})); + exports2.EnumEnum_SafetyCheckLevel = schema_utils_1.Type.Enum(Enum_SafetyCheckLevel); + exports2.SafetyCheckLevel = schema_utils_1.Type.KeyOfEnum(Enum_SafetyCheckLevel, { + $id: "SafetyCheckLevel" + }); + var Enum_DisplayRotation; + (function(Enum_DisplayRotation2) { + Enum_DisplayRotation2[Enum_DisplayRotation2["North"] = 0] = "North"; + Enum_DisplayRotation2[Enum_DisplayRotation2["East"] = 90] = "East"; + Enum_DisplayRotation2[Enum_DisplayRotation2["South"] = 180] = "South"; + Enum_DisplayRotation2[Enum_DisplayRotation2["West"] = 270] = "West"; + })(Enum_DisplayRotation || (exports2.Enum_DisplayRotation = Enum_DisplayRotation = {})); + exports2.EnumEnum_DisplayRotation = schema_utils_1.Type.Enum(Enum_DisplayRotation); + exports2.DisplayRotation = schema_utils_1.Type.KeyOfEnum(Enum_DisplayRotation, { + $id: "DisplayRotation" + }); + var Enum_HomescreenFormat; + (function(Enum_HomescreenFormat2) { + Enum_HomescreenFormat2[Enum_HomescreenFormat2["Toif"] = 1] = "Toif"; + Enum_HomescreenFormat2[Enum_HomescreenFormat2["Jpeg"] = 2] = "Jpeg"; + Enum_HomescreenFormat2[Enum_HomescreenFormat2["ToiG"] = 3] = "ToiG"; + })(Enum_HomescreenFormat || (exports2.Enum_HomescreenFormat = Enum_HomescreenFormat = {})); + exports2.EnumEnum_HomescreenFormat = schema_utils_1.Type.Enum(Enum_HomescreenFormat); + exports2.HomescreenFormat = schema_utils_1.Type.KeyOfEnum(Enum_HomescreenFormat, { + $id: "HomescreenFormat" + }); + exports2.Initialize = schema_utils_1.Type.Object({ + session_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + _skip_passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + derive_cardano: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "Initialize" + }); + exports2.GetFeatures = schema_utils_1.Type.Object({}, { + $id: "GetFeatures" + }); + var Enum_BackupAvailability; + (function(Enum_BackupAvailability2) { + Enum_BackupAvailability2[Enum_BackupAvailability2["NotAvailable"] = 0] = "NotAvailable"; + Enum_BackupAvailability2[Enum_BackupAvailability2["Required"] = 1] = "Required"; + Enum_BackupAvailability2[Enum_BackupAvailability2["Available"] = 2] = "Available"; + })(Enum_BackupAvailability || (exports2.Enum_BackupAvailability = Enum_BackupAvailability = {})); + exports2.EnumEnum_BackupAvailability = schema_utils_1.Type.Enum(Enum_BackupAvailability); + exports2.BackupAvailability = schema_utils_1.Type.KeyOfEnum(Enum_BackupAvailability, { + $id: "BackupAvailability" + }); + var Enum_RecoveryStatus; + (function(Enum_RecoveryStatus2) { + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Nothing"] = 0] = "Nothing"; + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Recovery"] = 1] = "Recovery"; + Enum_RecoveryStatus2[Enum_RecoveryStatus2["Backup"] = 2] = "Backup"; + })(Enum_RecoveryStatus || (exports2.Enum_RecoveryStatus = Enum_RecoveryStatus = {})); + exports2.EnumEnum_RecoveryStatus = schema_utils_1.Type.Enum(Enum_RecoveryStatus); + exports2.RecoveryStatus = schema_utils_1.Type.KeyOfEnum(Enum_RecoveryStatus, { + $id: "RecoveryStatus" + }); + var Enum_Capability; + (function(Enum_Capability2) { + Enum_Capability2[Enum_Capability2["Capability_Bitcoin"] = 1] = "Capability_Bitcoin"; + Enum_Capability2[Enum_Capability2["Capability_Bitcoin_like"] = 2] = "Capability_Bitcoin_like"; + Enum_Capability2[Enum_Capability2["Capability_Binance"] = 3] = "Capability_Binance"; + Enum_Capability2[Enum_Capability2["Capability_Cardano"] = 4] = "Capability_Cardano"; + Enum_Capability2[Enum_Capability2["Capability_Crypto"] = 5] = "Capability_Crypto"; + Enum_Capability2[Enum_Capability2["Capability_EOS"] = 6] = "Capability_EOS"; + Enum_Capability2[Enum_Capability2["Capability_Ethereum"] = 7] = "Capability_Ethereum"; + Enum_Capability2[Enum_Capability2["Capability_Lisk"] = 8] = "Capability_Lisk"; + Enum_Capability2[Enum_Capability2["Capability_Monero"] = 9] = "Capability_Monero"; + Enum_Capability2[Enum_Capability2["Capability_NEM"] = 10] = "Capability_NEM"; + Enum_Capability2[Enum_Capability2["Capability_Ripple"] = 11] = "Capability_Ripple"; + Enum_Capability2[Enum_Capability2["Capability_Stellar"] = 12] = "Capability_Stellar"; + Enum_Capability2[Enum_Capability2["Capability_Tezos"] = 13] = "Capability_Tezos"; + Enum_Capability2[Enum_Capability2["Capability_U2F"] = 14] = "Capability_U2F"; + Enum_Capability2[Enum_Capability2["Capability_Shamir"] = 15] = "Capability_Shamir"; + Enum_Capability2[Enum_Capability2["Capability_ShamirGroups"] = 16] = "Capability_ShamirGroups"; + Enum_Capability2[Enum_Capability2["Capability_PassphraseEntry"] = 17] = "Capability_PassphraseEntry"; + Enum_Capability2[Enum_Capability2["Capability_Solana"] = 18] = "Capability_Solana"; + Enum_Capability2[Enum_Capability2["Capability_Translations"] = 19] = "Capability_Translations"; + Enum_Capability2[Enum_Capability2["Capability_Brightness"] = 20] = "Capability_Brightness"; + Enum_Capability2[Enum_Capability2["Capability_Haptic"] = 21] = "Capability_Haptic"; + Enum_Capability2[Enum_Capability2["Capability_BLE"] = 22] = "Capability_BLE"; + Enum_Capability2[Enum_Capability2["Capability_NFC"] = 23] = "Capability_NFC"; + })(Enum_Capability || (exports2.Enum_Capability = Enum_Capability = {})); + exports2.EnumEnum_Capability = schema_utils_1.Type.Enum(Enum_Capability); + exports2.Capability = schema_utils_1.Type.KeyOfEnum(Enum_Capability, { + $id: "Capability" + }); + var RecoveryDeviceInputMethod; + (function(RecoveryDeviceInputMethod2) { + RecoveryDeviceInputMethod2[RecoveryDeviceInputMethod2["ScrambledWords"] = 0] = "ScrambledWords"; + RecoveryDeviceInputMethod2[RecoveryDeviceInputMethod2["Matrix"] = 1] = "Matrix"; + })(RecoveryDeviceInputMethod || (exports2.RecoveryDeviceInputMethod = RecoveryDeviceInputMethod = {})); + exports2.EnumRecoveryDeviceInputMethod = schema_utils_1.Type.Enum(RecoveryDeviceInputMethod); + var Enum_RecoveryType; + (function(Enum_RecoveryType2) { + Enum_RecoveryType2[Enum_RecoveryType2["NormalRecovery"] = 0] = "NormalRecovery"; + Enum_RecoveryType2[Enum_RecoveryType2["DryRun"] = 1] = "DryRun"; + Enum_RecoveryType2[Enum_RecoveryType2["UnlockRepeatedBackup"] = 2] = "UnlockRepeatedBackup"; + })(Enum_RecoveryType || (exports2.Enum_RecoveryType = Enum_RecoveryType = {})); + exports2.EnumEnum_RecoveryType = schema_utils_1.Type.Enum(Enum_RecoveryType); + exports2.RecoveryType = schema_utils_1.Type.KeyOfEnum(Enum_RecoveryType, { + $id: "RecoveryType" + }); + exports2.RecoveryDevice = schema_utils_1.Type.Object({ + word_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + pin_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + enforce_wordlist: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + input_method: schema_utils_1.Type.Optional(exports2.EnumRecoveryDeviceInputMethod), + u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + type: schema_utils_1.Type.Optional(exports2.RecoveryType) + }, { + $id: "RecoveryDevice" + }); + exports2.Features = schema_utils_1.Type.Object({ + vendor: schema_utils_1.Type.String(), + major_version: schema_utils_1.Type.Number(), + minor_version: schema_utils_1.Type.Number(), + patch_version: schema_utils_1.Type.Number(), + bootloader_mode: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + device_id: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + pin_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + passphrase_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + language: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + label: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + initialized: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + revision: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + bootloader_hash: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + imported: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + unlocked: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + _passphrase_cached: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + firmware_present: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + backup_availability: schema_utils_1.Type.Union([exports2.BackupAvailability, schema_utils_1.Type.Null()]), + flags: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]), + model: schema_utils_1.Type.String(), + fw_major: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]), + fw_minor: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]), + fw_patch: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]), + fw_vendor: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + unfinished_backup: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + no_backup: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + recovery_status: schema_utils_1.Type.Union([exports2.RecoveryStatus, schema_utils_1.Type.Null()]), + capabilities: schema_utils_1.Type.Array(exports2.Capability), + backup_type: schema_utils_1.Type.Union([exports2.BackupType, schema_utils_1.Type.Null()]), + sd_card_present: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + sd_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + wipe_code_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + session_id: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + passphrase_always_on_device: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + safety_checks: schema_utils_1.Type.Union([exports2.SafetyCheckLevel, schema_utils_1.Type.Null()]), + auto_lock_delay_ms: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]), + display_rotation: schema_utils_1.Type.Union([exports2.DisplayRotation, schema_utils_1.Type.Null()]), + experimental_features: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]), + busy: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + homescreen_format: schema_utils_1.Type.Optional(exports2.HomescreenFormat), + hide_passphrase_from_host: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + internal_model: exports2.EnumDeviceModelInternal, + unit_color: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + unit_btconly: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + homescreen_width: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + homescreen_height: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + bootloader_locked: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + language_version_matches: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + unit_packaging: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + haptic_feedback: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + recovery_type: schema_utils_1.Type.Optional(exports2.RecoveryType), + optiga_sec: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + soc: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + firmware_corrupted: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + auto_lock_delay_battery_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + led: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + usb_connected: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + wireless_connected: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "Features" + }); + exports2.LockDevice = schema_utils_1.Type.Object({}, { + $id: "LockDevice" + }); + exports2.SetBusy = schema_utils_1.Type.Object({ + expiry_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "SetBusy" + }); + exports2.EndSession = schema_utils_1.Type.Object({}, { + $id: "EndSession" + }); + exports2.ApplySettings = schema_utils_1.Type.Object({ + language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + use_passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + homescreen: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + _passphrase_source: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + auto_lock_delay_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + display_rotation: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([exports2.DisplayRotation, exports2.EnumEnum_DisplayRotation])), + passphrase_always_on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + safety_checks: schema_utils_1.Type.Optional(exports2.SafetyCheckLevel), + experimental_features: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + hide_passphrase_from_host: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + haptic_feedback: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + homescreen_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + auto_lock_delay_battery_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "ApplySettings" + }); + exports2.ChangeLanguage = schema_utils_1.Type.Object({ + data_length: schema_utils_1.Type.Number(), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "ChangeLanguage" + }); + exports2.DataChunkRequest = schema_utils_1.Type.Object({ + data_length: schema_utils_1.Type.Number(), + data_offset: schema_utils_1.Type.Number() + }, { + $id: "DataChunkRequest" + }); + exports2.DataChunkAck = schema_utils_1.Type.Object({ + data_chunk: schema_utils_1.Type.String() + }, { + $id: "DataChunkAck" + }); + exports2.ApplyFlags = schema_utils_1.Type.Object({ + flags: schema_utils_1.Type.Number() + }, { + $id: "ApplyFlags" + }); + exports2.ChangePin = schema_utils_1.Type.Object({ + remove: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "ChangePin" + }); + exports2.ChangeWipeCode = schema_utils_1.Type.Object({ + remove: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "ChangeWipeCode" + }); + var SdProtectOperationType; + (function(SdProtectOperationType2) { + SdProtectOperationType2[SdProtectOperationType2["DISABLE"] = 0] = "DISABLE"; + SdProtectOperationType2[SdProtectOperationType2["ENABLE"] = 1] = "ENABLE"; + SdProtectOperationType2[SdProtectOperationType2["REFRESH"] = 2] = "REFRESH"; + })(SdProtectOperationType || (exports2.SdProtectOperationType = SdProtectOperationType = {})); + exports2.EnumSdProtectOperationType = schema_utils_1.Type.Enum(SdProtectOperationType); + exports2.SdProtect = schema_utils_1.Type.Object({ + operation: exports2.EnumSdProtectOperationType + }, { + $id: "SdProtect" + }); + exports2.Ping = schema_utils_1.Type.Object({ + message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + button_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "Ping" + }); + exports2.Cancel = schema_utils_1.Type.Object({}, { + $id: "Cancel" + }); + exports2.GetEntropy = schema_utils_1.Type.Object({ + size: schema_utils_1.Type.Number() + }, { + $id: "GetEntropy" + }); + exports2.Entropy = schema_utils_1.Type.Object({ + entropy: schema_utils_1.Type.String() + }, { + $id: "Entropy" + }); + exports2.GetFirmwareHash = schema_utils_1.Type.Object({ + challenge: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "GetFirmwareHash" + }); + exports2.FirmwareHash = schema_utils_1.Type.Object({ + hash: schema_utils_1.Type.String() + }, { + $id: "FirmwareHash" + }); + exports2.AuthenticateDevice = schema_utils_1.Type.Object({ + challenge: schema_utils_1.Type.String() + }, { + $id: "AuthenticateDevice" + }); + exports2.AuthenticityProof = schema_utils_1.Type.Object({ + optiga_certificates: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + optiga_signature: schema_utils_1.Type.String(), + tropic_certificates: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + tropic_signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "AuthenticityProof" + }); + exports2.WipeDevice = schema_utils_1.Type.Object({}, { + $id: "WipeDevice" + }); + exports2.LoadDevice = schema_utils_1.Type.Object({ + mnemonics: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + pin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + skip_checksum: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + needs_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + no_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "LoadDevice" + }); + exports2.ResetDevice = schema_utils_1.Type.Object({ + strength: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + pin_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + skip_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + no_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + backup_type: schema_utils_1.Type.Optional(exports2.EnumEnum_BackupType), + entropy_check: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "ResetDevice" + }); + exports2.Slip39Group = schema_utils_1.Type.Object({ + member_threshold: schema_utils_1.Type.Number(), + member_count: schema_utils_1.Type.Number() + }, { + $id: "Slip39Group" + }); + exports2.BackupDevice = schema_utils_1.Type.Object({ + group_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + groups: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.Slip39Group)) + }, { + $id: "BackupDevice" + }); + exports2.EntropyRequest = schema_utils_1.Type.Object({ + entropy_commitment: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + prev_entropy: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "EntropyRequest" + }); + exports2.EntropyAck = schema_utils_1.Type.Object({ + entropy: schema_utils_1.Type.String() + }, { + $id: "EntropyAck" + }); + exports2.EntropyCheckReady = schema_utils_1.Type.Object({}, { + $id: "EntropyCheckReady" + }); + exports2.EntropyCheckContinue = schema_utils_1.Type.Object({ + finish: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "EntropyCheckContinue" + }); + var Enum_WordRequestType; + (function(Enum_WordRequestType2) { + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Plain"] = 0] = "WordRequestType_Plain"; + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Matrix9"] = 1] = "WordRequestType_Matrix9"; + Enum_WordRequestType2[Enum_WordRequestType2["WordRequestType_Matrix6"] = 2] = "WordRequestType_Matrix6"; + })(Enum_WordRequestType || (exports2.Enum_WordRequestType = Enum_WordRequestType = {})); + exports2.EnumEnum_WordRequestType = schema_utils_1.Type.Enum(Enum_WordRequestType); + exports2.WordRequestType = schema_utils_1.Type.KeyOfEnum(Enum_WordRequestType, { + $id: "WordRequestType" + }); + exports2.WordRequest = schema_utils_1.Type.Object({ + type: exports2.WordRequestType + }, { + $id: "WordRequest" + }); + exports2.WordAck = schema_utils_1.Type.Object({ + word: schema_utils_1.Type.String() + }, { + $id: "WordAck" + }); + exports2.SetU2FCounter = schema_utils_1.Type.Object({ + u2f_counter: schema_utils_1.Type.Number() + }, { + $id: "SetU2FCounter" + }); + exports2.GetNextU2FCounter = schema_utils_1.Type.Object({}, { + $id: "GetNextU2FCounter" + }); + exports2.NextU2FCounter = schema_utils_1.Type.Object({ + u2f_counter: schema_utils_1.Type.Number() + }, { + $id: "NextU2FCounter" + }); + exports2.DoPreauthorized = schema_utils_1.Type.Object({}, { + $id: "DoPreauthorized" + }); + exports2.PreauthorizedRequest = schema_utils_1.Type.Object({}, { + $id: "PreauthorizedRequest" + }); + exports2.CancelAuthorization = schema_utils_1.Type.Object({}, { + $id: "CancelAuthorization" + }); + var BootCommand; + (function(BootCommand2) { + BootCommand2[BootCommand2["STOP_AND_WAIT"] = 0] = "STOP_AND_WAIT"; + BootCommand2[BootCommand2["INSTALL_UPGRADE"] = 1] = "INSTALL_UPGRADE"; + })(BootCommand || (exports2.BootCommand = BootCommand = {})); + exports2.EnumBootCommand = schema_utils_1.Type.Enum(BootCommand); + exports2.RebootToBootloader = schema_utils_1.Type.Object({ + boot_command: schema_utils_1.Type.Optional(exports2.EnumBootCommand), + firmware_header: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + language_data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "RebootToBootloader" + }); + exports2.GetNonce = schema_utils_1.Type.Object({}, { + $id: "GetNonce" + }); + exports2.Nonce = schema_utils_1.Type.Object({ + nonce: schema_utils_1.Type.String() + }, { + $id: "Nonce" + }); + exports2.UnlockPath = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "UnlockPath" + }); + exports2.UnlockedPathRequest = schema_utils_1.Type.Object({ + mac: schema_utils_1.Type.String() + }, { + $id: "UnlockedPathRequest" + }); + exports2.ShowDeviceTutorial = schema_utils_1.Type.Object({}, { + $id: "ShowDeviceTutorial" + }); + exports2.UnlockBootloader = schema_utils_1.Type.Object({}, { + $id: "UnlockBootloader" + }); + exports2.SetBrightness = schema_utils_1.Type.Object({ + value: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "SetBrightness" + }); + exports2.GetSerialNumber = schema_utils_1.Type.Object({}, { + $id: "GetSerialNumber" + }); + exports2.SerialNumber = schema_utils_1.Type.Object({ + serial_number: schema_utils_1.Type.String() + }, { + $id: "SerialNumber" + }); + var MoneroNetworkType; + (function(MoneroNetworkType2) { + MoneroNetworkType2[MoneroNetworkType2["MAINNET"] = 0] = "MAINNET"; + MoneroNetworkType2[MoneroNetworkType2["TESTNET"] = 1] = "TESTNET"; + MoneroNetworkType2[MoneroNetworkType2["STAGENET"] = 2] = "STAGENET"; + MoneroNetworkType2[MoneroNetworkType2["FAKECHAIN"] = 3] = "FAKECHAIN"; + })(MoneroNetworkType || (exports2.MoneroNetworkType = MoneroNetworkType = {})); + exports2.EnumMoneroNetworkType = schema_utils_1.Type.Enum(MoneroNetworkType); + exports2.MoneroRctKeyPublic = schema_utils_1.Type.Object({ + dest: schema_utils_1.Type.String(), + commitment: schema_utils_1.Type.String() + }, { + $id: "MoneroRctKeyPublic" + }); + exports2.MoneroOutputEntry = schema_utils_1.Type.Object({ + idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + key: schema_utils_1.Type.Optional(exports2.MoneroRctKeyPublic) + }, { + $id: "MoneroOutputEntry" + }); + exports2.MoneroMultisigKLRki = schema_utils_1.Type.Object({ + K: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + L: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + R: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ki: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroMultisigKLRki" + }); + exports2.MoneroTransactionSourceEntry = schema_utils_1.Type.Object({ + outputs: schema_utils_1.Type.Array(exports2.MoneroOutputEntry), + real_output: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + real_out_tx_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + real_out_additional_tx_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + real_output_in_tx_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + rct: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + multisig_kLRki: schema_utils_1.Type.Optional(exports2.MoneroMultisigKLRki), + subaddr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransactionSourceEntry" + }); + exports2.MoneroAccountPublicAddress = schema_utils_1.Type.Object({ + spend_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + view_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroAccountPublicAddress" + }); + exports2.MoneroTransactionDestinationEntry = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + addr: schema_utils_1.Type.Optional(exports2.MoneroAccountPublicAddress), + is_subaddress: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + original: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + is_integrated: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroTransactionDestinationEntry" + }); + exports2.MoneroTransactionRsigData = schema_utils_1.Type.Object({ + rsig_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + offload_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + grouping: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig_parts: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + bp_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransactionRsigData" + }); + exports2.MoneroGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType), + account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroGetAddress" + }); + exports2.MoneroAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String() + }, { + $id: "MoneroAddress" + }); + exports2.MoneroGetWatchKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType) + }, { + $id: "MoneroGetWatchKey" + }); + exports2.MoneroWatchKey = schema_utils_1.Type.Object({ + watch_key: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String() + }, { + $id: "MoneroWatchKey" + }); + exports2.MoneroTransactionData = schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + unlock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + outputs: schema_utils_1.Type.Array(exports2.MoneroTransactionDestinationEntry), + change_dts: schema_utils_1.Type.Optional(exports2.MoneroTransactionDestinationEntry), + num_inputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + mixin: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData), + integrated_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + client_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + hard_fork: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + monero_version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroTransactionData" + }); + exports2.MoneroTransactionInitRequest = schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType), + tsx_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionData) + }, { + $id: "MoneroTransactionInitRequest" + }); + exports2.MoneroTransactionInitAck = schema_utils_1.Type.Object({ + hmacs: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData) + }, { + $id: "MoneroTransactionInitAck" + }); + exports2.MoneroTransactionSetInputRequest = schema_utils_1.Type.Object({ + src_entr: schema_utils_1.Type.Optional(exports2.MoneroTransactionSourceEntry) + }, { + $id: "MoneroTransactionSetInputRequest" + }); + exports2.MoneroTransactionSetInputAck = schema_utils_1.Type.Object({ + vini: schema_utils_1.Type.String(), + vini_hmac: schema_utils_1.Type.String(), + pseudo_out: schema_utils_1.Type.String(), + pseudo_out_hmac: schema_utils_1.Type.String(), + pseudo_out_alpha: schema_utils_1.Type.String(), + spend_key: schema_utils_1.Type.String() + }, { + $id: "MoneroTransactionSetInputAck" + }); + exports2.MoneroTransactionInputViniRequest = schema_utils_1.Type.Object({ + src_entr: schema_utils_1.Type.Optional(exports2.MoneroTransactionSourceEntry), + vini: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + vini_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransactionInputViniRequest" + }); + exports2.MoneroTransactionInputViniAck = schema_utils_1.Type.Object({}, { + $id: "MoneroTransactionInputViniAck" + }); + exports2.MoneroTransactionAllInputsSetRequest = schema_utils_1.Type.Object({}, { + $id: "MoneroTransactionAllInputsSetRequest" + }); + exports2.MoneroTransactionAllInputsSetAck = schema_utils_1.Type.Object({ + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData) + }, { + $id: "MoneroTransactionAllInputsSetAck" + }); + exports2.MoneroTransactionSetOutputRequest = schema_utils_1.Type.Object({ + dst_entr: schema_utils_1.Type.Optional(exports2.MoneroTransactionDestinationEntry), + dst_entr_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData), + is_offloaded_bp: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroTransactionSetOutputRequest" + }); + exports2.MoneroTransactionSetOutputAck = schema_utils_1.Type.Object({ + tx_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + vouti_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData), + out_pk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ecdh_info: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroTransactionSetOutputAck" + }); + exports2.MoneroTransactionAllOutSetRequest = schema_utils_1.Type.Object({ + rsig_data: schema_utils_1.Type.Optional(exports2.MoneroTransactionRsigData) + }, { + $id: "MoneroTransactionAllOutSetRequest" + }); + exports2.MoneroRingCtSig = schema_utils_1.Type.Object({ + txn_fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rv_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroRingCtSig" + }); + exports2.MoneroTransactionAllOutSetAck = schema_utils_1.Type.Object({ + extra: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + tx_prefix_hash: schema_utils_1.Type.String(), + rv: exports2.MoneroRingCtSig, + full_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroTransactionAllOutSetAck" + }); + exports2.MoneroTransactionSignInputRequest = schema_utils_1.Type.Object({ + src_entr: schema_utils_1.Type.Optional(exports2.MoneroTransactionSourceEntry), + vini: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + vini_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out_alpha: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + spend_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + orig_idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransactionSignInputRequest" + }); + exports2.MoneroTransactionSignInputAck = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroTransactionSignInputAck" + }); + exports2.MoneroTransactionFinalRequest = schema_utils_1.Type.Object({}, { + $id: "MoneroTransactionFinalRequest" + }); + exports2.MoneroTransactionFinalAck = schema_utils_1.Type.Object({ + cout_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rand_mult: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + tx_enc_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + opening_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroTransactionFinalAck" + }); + exports2.MoneroSubAddressIndicesList = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.Number(), + minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()) + }, { + $id: "MoneroSubAddressIndicesList" + }); + exports2.MoneroKeyImageExportInitRequest = schema_utils_1.Type.Object({ + num: schema_utils_1.Type.Number(), + hash: schema_utils_1.Type.Uint8Array(), + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType), + subs: schema_utils_1.Type.Array(exports2.MoneroSubAddressIndicesList) + }, { + $id: "MoneroKeyImageExportInitRequest" + }); + exports2.MoneroKeyImageExportInitAck = schema_utils_1.Type.Object({}, { + $id: "MoneroKeyImageExportInitAck" + }); + exports2.MoneroTransferDetails = schema_utils_1.Type.Object({ + out_key: schema_utils_1.Type.Uint8Array(), + tx_pub_key: schema_utils_1.Type.Uint8Array(), + additional_tx_pub_keys: schema_utils_1.Type.Array(schema_utils_1.Type.Uint8Array()), + internal_output_index: schema_utils_1.Type.Number(), + sub_addr_major: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + sub_addr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransferDetails" + }); + exports2.MoneroKeyImageSyncStepRequest = schema_utils_1.Type.Object({ + tdis: schema_utils_1.Type.Array(exports2.MoneroTransferDetails) + }, { + $id: "MoneroKeyImageSyncStepRequest" + }); + exports2.MoneroExportedKeyImage = schema_utils_1.Type.Object({ + iv: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + blob: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroExportedKeyImage" + }); + exports2.MoneroKeyImageSyncStepAck = schema_utils_1.Type.Object({ + kis: schema_utils_1.Type.Array(exports2.MoneroExportedKeyImage) + }, { + $id: "MoneroKeyImageSyncStepAck" + }); + exports2.MoneroKeyImageSyncFinalRequest = schema_utils_1.Type.Object({}, { + $id: "MoneroKeyImageSyncFinalRequest" + }); + exports2.MoneroKeyImageSyncFinalAck = schema_utils_1.Type.Object({ + enc_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroKeyImageSyncFinalAck" + }); + exports2.MoneroGetTxKeyRequest = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType), + salt1: schema_utils_1.Type.String(), + salt2: schema_utils_1.Type.String(), + tx_enc_keys: schema_utils_1.Type.String(), + tx_prefix_hash: schema_utils_1.Type.String(), + reason: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + view_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroGetTxKeyRequest" + }); + exports2.MoneroGetTxKeyAck = schema_utils_1.Type.Object({ + salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + tx_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + tx_derivations: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroGetTxKeyAck" + }); + exports2.MoneroLiveRefreshStartRequest = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_type: schema_utils_1.Type.Optional(exports2.EnumMoneroNetworkType) + }, { + $id: "MoneroLiveRefreshStartRequest" + }); + exports2.MoneroLiveRefreshStartAck = schema_utils_1.Type.Object({}, { + $id: "MoneroLiveRefreshStartAck" + }); + exports2.MoneroLiveRefreshStepRequest = schema_utils_1.Type.Object({ + out_key: schema_utils_1.Type.String(), + recv_deriv: schema_utils_1.Type.String(), + real_out_idx: schema_utils_1.Type.Number(), + sub_addr_major: schema_utils_1.Type.Number(), + sub_addr_minor: schema_utils_1.Type.Number() + }, { + $id: "MoneroLiveRefreshStepRequest" + }); + exports2.MoneroLiveRefreshStepAck = schema_utils_1.Type.Object({ + salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key_image: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroLiveRefreshStepAck" + }); + exports2.MoneroLiveRefreshFinalRequest = schema_utils_1.Type.Object({}, { + $id: "MoneroLiveRefreshFinalRequest" + }); + exports2.MoneroLiveRefreshFinalAck = schema_utils_1.Type.Object({}, { + $id: "MoneroLiveRefreshFinalAck" + }); + exports2.DebugMoneroDiagRequest = schema_utils_1.Type.Object({ + ins: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + p1: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + p2: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + pd: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + data1: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + data2: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "DebugMoneroDiagRequest" + }); + exports2.DebugMoneroDiagAck = schema_utils_1.Type.Object({ + ins: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + p1: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + p2: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + pd: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + data1: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + data2: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "DebugMoneroDiagAck" + }); + exports2.NEMGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "NEMGetAddress" + }); + exports2.NEMAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String() + }, { + $id: "NEMAddress" + }); + exports2.NEMTransactionCommon = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + timestamp: schema_utils_1.Type.Number(), + fee: schema_utils_1.Type.Uint(), + deadline: schema_utils_1.Type.Number(), + signer: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "NEMTransactionCommon" + }); + exports2.NEMMosaic = schema_utils_1.Type.Object({ + namespace: schema_utils_1.Type.String(), + mosaic: schema_utils_1.Type.String(), + quantity: schema_utils_1.Type.Number() + }, { + $id: "NEMMosaic" + }); + exports2.NEMTransfer = schema_utils_1.Type.Object({ + recipient: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.Uint(), + payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + mosaics: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.NEMMosaic)) + }, { + $id: "NEMTransfer" + }); + exports2.NEMProvisionNamespace = schema_utils_1.Type.Object({ + namespace: schema_utils_1.Type.String(), + parent: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + sink: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Uint() + }, { + $id: "NEMProvisionNamespace" + }); + var NEMMosaicLevy; + (function(NEMMosaicLevy2) { + NEMMosaicLevy2[NEMMosaicLevy2["MosaicLevy_Absolute"] = 1] = "MosaicLevy_Absolute"; + NEMMosaicLevy2[NEMMosaicLevy2["MosaicLevy_Percentile"] = 2] = "MosaicLevy_Percentile"; + })(NEMMosaicLevy || (exports2.NEMMosaicLevy = NEMMosaicLevy = {})); + exports2.EnumNEMMosaicLevy = schema_utils_1.Type.Enum(NEMMosaicLevy); + exports2.NEMMosaicDefinition = schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ticker: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + namespace: schema_utils_1.Type.String(), + mosaic: schema_utils_1.Type.String(), + divisibility: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + levy: schema_utils_1.Type.Optional(exports2.EnumNEMMosaicLevy), + fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + levy_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + levy_namespace: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + levy_mosaic: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + supply: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + mutable_supply: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + transferable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + description: schema_utils_1.Type.String(), + networks: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())) + }, { + $id: "NEMMosaicDefinition" + }); + exports2.NEMMosaicCreation = schema_utils_1.Type.Object({ + definition: exports2.NEMMosaicDefinition, + sink: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Uint() + }, { + $id: "NEMMosaicCreation" + }); + var NEMSupplyChangeType; + (function(NEMSupplyChangeType2) { + NEMSupplyChangeType2[NEMSupplyChangeType2["SupplyChange_Increase"] = 1] = "SupplyChange_Increase"; + NEMSupplyChangeType2[NEMSupplyChangeType2["SupplyChange_Decrease"] = 2] = "SupplyChange_Decrease"; + })(NEMSupplyChangeType || (exports2.NEMSupplyChangeType = NEMSupplyChangeType = {})); + exports2.EnumNEMSupplyChangeType = schema_utils_1.Type.Enum(NEMSupplyChangeType); + exports2.NEMMosaicSupplyChange = schema_utils_1.Type.Object({ + namespace: schema_utils_1.Type.String(), + mosaic: schema_utils_1.Type.String(), + type: exports2.EnumNEMSupplyChangeType, + delta: schema_utils_1.Type.Number() + }, { + $id: "NEMMosaicSupplyChange" + }); + var NEMModificationType; + (function(NEMModificationType2) { + NEMModificationType2[NEMModificationType2["CosignatoryModification_Add"] = 1] = "CosignatoryModification_Add"; + NEMModificationType2[NEMModificationType2["CosignatoryModification_Delete"] = 2] = "CosignatoryModification_Delete"; + })(NEMModificationType || (exports2.NEMModificationType = NEMModificationType = {})); + exports2.EnumNEMModificationType = schema_utils_1.Type.Enum(NEMModificationType); + exports2.NEMCosignatoryModification = schema_utils_1.Type.Object({ + type: exports2.EnumNEMModificationType, + public_key: schema_utils_1.Type.String() + }, { + $id: "NEMCosignatoryModification" + }); + exports2.NEMAggregateModification = schema_utils_1.Type.Object({ + modifications: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.NEMCosignatoryModification)), + relative_change: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "NEMAggregateModification" + }); + var NEMImportanceTransferMode; + (function(NEMImportanceTransferMode2) { + NEMImportanceTransferMode2[NEMImportanceTransferMode2["ImportanceTransfer_Activate"] = 1] = "ImportanceTransfer_Activate"; + NEMImportanceTransferMode2[NEMImportanceTransferMode2["ImportanceTransfer_Deactivate"] = 2] = "ImportanceTransfer_Deactivate"; + })(NEMImportanceTransferMode || (exports2.NEMImportanceTransferMode = NEMImportanceTransferMode = {})); + exports2.EnumNEMImportanceTransferMode = schema_utils_1.Type.Enum(NEMImportanceTransferMode); + exports2.NEMImportanceTransfer = schema_utils_1.Type.Object({ + mode: exports2.EnumNEMImportanceTransferMode, + public_key: schema_utils_1.Type.String() + }, { + $id: "NEMImportanceTransfer" + }); + exports2.NEMSignTx = schema_utils_1.Type.Object({ + transaction: exports2.NEMTransactionCommon, + multisig: schema_utils_1.Type.Optional(exports2.NEMTransactionCommon), + transfer: schema_utils_1.Type.Optional(exports2.NEMTransfer), + cosigning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + provision_namespace: schema_utils_1.Type.Optional(exports2.NEMProvisionNamespace), + mosaic_creation: schema_utils_1.Type.Optional(exports2.NEMMosaicCreation), + supply_change: schema_utils_1.Type.Optional(exports2.NEMMosaicSupplyChange), + aggregate_modification: schema_utils_1.Type.Optional(exports2.NEMAggregateModification), + importance_transfer: schema_utils_1.Type.Optional(exports2.NEMImportanceTransfer), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "NEMSignTx" + }); + exports2.NEMSignedTx = schema_utils_1.Type.Object({ + data: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }, { + $id: "NEMSignedTx" + }); + exports2.NEMDecryptMessage = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "NEMDecryptMessage" + }); + exports2.NEMDecryptedMessage = schema_utils_1.Type.Object({ + payload: schema_utils_1.Type.String() + }, { + $id: "NEMDecryptedMessage" + }); + exports2.RippleGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "RippleGetAddress" + }); + exports2.RippleAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "RippleAddress" + }); + exports2.RipplePayment = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Uint(), + destination: schema_utils_1.Type.String(), + destination_tag: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "RipplePayment" + }); + exports2.RippleSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + fee: schema_utils_1.Type.Uint(), + flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + sequence: schema_utils_1.Type.Number(), + last_ledger_sequence: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment: exports2.RipplePayment, + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "RippleSignTx" + }); + exports2.RippleSignedTx = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + serialized_tx: schema_utils_1.Type.String() + }, { + $id: "RippleSignedTx" + }); + exports2.SolanaGetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "SolanaGetPublicKey" + }); + exports2.SolanaPublicKey = schema_utils_1.Type.Object({ + public_key: schema_utils_1.Type.String() + }, { + $id: "SolanaPublicKey" + }); + exports2.SolanaGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "SolanaGetAddress" + }); + exports2.SolanaAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "SolanaAddress" + }); + exports2.SolanaTxTokenAccountInfo = schema_utils_1.Type.Object({ + base_address: schema_utils_1.Type.String(), + token_program: schema_utils_1.Type.String(), + token_mint: schema_utils_1.Type.String(), + token_account: schema_utils_1.Type.String() + }, { + $id: "SolanaTxTokenAccountInfo" + }); + exports2.SolanaTxAdditionalInfo = schema_utils_1.Type.Object({ + token_accounts_infos: schema_utils_1.Type.Array(exports2.SolanaTxTokenAccountInfo), + encoded_token: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()) + }, { + $id: "SolanaTxAdditionalInfo" + }); + exports2.SolanaSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + serialized_tx: schema_utils_1.Type.String(), + additional_info: schema_utils_1.Type.Optional(exports2.SolanaTxAdditionalInfo), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "SolanaSignTx" + }); + exports2.SolanaTxSignature = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String() + }, { + $id: "SolanaTxSignature" + }); + var StellarAssetType; + (function(StellarAssetType2) { + StellarAssetType2[StellarAssetType2["NATIVE"] = 0] = "NATIVE"; + StellarAssetType2[StellarAssetType2["ALPHANUM4"] = 1] = "ALPHANUM4"; + StellarAssetType2[StellarAssetType2["ALPHANUM12"] = 2] = "ALPHANUM12"; + })(StellarAssetType || (exports2.StellarAssetType = StellarAssetType = {})); + exports2.EnumStellarAssetType = schema_utils_1.Type.Enum(StellarAssetType); + exports2.StellarAsset = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Union([schema_utils_1.Type.Literal(0), schema_utils_1.Type.Literal(1), schema_utils_1.Type.Literal(2), schema_utils_1.Type.Literal("NATIVE"), schema_utils_1.Type.Literal("ALPHANUM4"), schema_utils_1.Type.Literal("ALPHANUM12")]), + code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + issuer: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "StellarAsset" + }); + exports2.StellarGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "StellarGetAddress" + }); + exports2.StellarAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "StellarAddress" + }); + var StellarMemoType; + (function(StellarMemoType2) { + StellarMemoType2[StellarMemoType2["NONE"] = 0] = "NONE"; + StellarMemoType2[StellarMemoType2["TEXT"] = 1] = "TEXT"; + StellarMemoType2[StellarMemoType2["ID"] = 2] = "ID"; + StellarMemoType2[StellarMemoType2["HASH"] = 3] = "HASH"; + StellarMemoType2[StellarMemoType2["RETURN"] = 4] = "RETURN"; + })(StellarMemoType || (exports2.StellarMemoType = StellarMemoType = {})); + exports2.EnumStellarMemoType = schema_utils_1.Type.Enum(StellarMemoType); + exports2.StellarSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + network_passphrase: schema_utils_1.Type.String(), + source_account: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Uint(), + sequence_number: schema_utils_1.Type.Uint(), + timebounds_start: schema_utils_1.Type.Number(), + timebounds_end: schema_utils_1.Type.Number(), + memo_type: exports2.EnumStellarMemoType, + memo_text: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + memo_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + memo_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()])), + num_operations: schema_utils_1.Type.Number(), + payment_req: schema_utils_1.Type.Optional(exports2.PaymentRequest) + }, { + $id: "StellarSignTx" + }); + exports2.StellarTxOpRequest = schema_utils_1.Type.Object({}, { + $id: "StellarTxOpRequest" + }); + exports2.StellarPaymentOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + destination_account: schema_utils_1.Type.String(), + asset: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint() + }, { + $id: "StellarPaymentOp" + }); + exports2.StellarCreateAccountOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + new_account: schema_utils_1.Type.String(), + starting_balance: schema_utils_1.Type.Uint() + }, { + $id: "StellarCreateAccountOp" + }); + exports2.StellarPathPaymentStrictReceiveOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + send_asset: exports2.StellarAsset, + send_max: schema_utils_1.Type.Uint(), + destination_account: schema_utils_1.Type.String(), + destination_asset: exports2.StellarAsset, + destination_amount: schema_utils_1.Type.Uint(), + paths: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.StellarAsset)) + }, { + $id: "StellarPathPaymentStrictReceiveOp" + }); + exports2.StellarPathPaymentStrictSendOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + send_asset: exports2.StellarAsset, + send_amount: schema_utils_1.Type.Uint(), + destination_account: schema_utils_1.Type.String(), + destination_asset: exports2.StellarAsset, + destination_min: schema_utils_1.Type.Uint(), + paths: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.StellarAsset)) + }, { + $id: "StellarPathPaymentStrictSendOp" + }); + exports2.StellarManageSellOfferOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + selling_asset: exports2.StellarAsset, + buying_asset: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + price_n: schema_utils_1.Type.Number(), + price_d: schema_utils_1.Type.Number(), + offer_id: schema_utils_1.Type.Uint() + }, { + $id: "StellarManageSellOfferOp" + }); + exports2.StellarManageBuyOfferOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + selling_asset: exports2.StellarAsset, + buying_asset: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + price_n: schema_utils_1.Type.Number(), + price_d: schema_utils_1.Type.Number(), + offer_id: schema_utils_1.Type.Uint() + }, { + $id: "StellarManageBuyOfferOp" + }); + exports2.StellarCreatePassiveSellOfferOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + selling_asset: exports2.StellarAsset, + buying_asset: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + price_n: schema_utils_1.Type.Number(), + price_d: schema_utils_1.Type.Number() + }, { + $id: "StellarCreatePassiveSellOfferOp" + }); + var StellarSignerType; + (function(StellarSignerType2) { + StellarSignerType2[StellarSignerType2["ACCOUNT"] = 0] = "ACCOUNT"; + StellarSignerType2[StellarSignerType2["PRE_AUTH"] = 1] = "PRE_AUTH"; + StellarSignerType2[StellarSignerType2["HASH"] = 2] = "HASH"; + })(StellarSignerType || (exports2.StellarSignerType = StellarSignerType = {})); + exports2.EnumStellarSignerType = schema_utils_1.Type.Enum(StellarSignerType); + exports2.StellarSetOptionsOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + inflation_destination_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + clear_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + set_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + master_weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + low_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + medium_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + high_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + home_domain: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + signer_type: schema_utils_1.Type.Optional(exports2.EnumStellarSignerType), + signer_key: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()])), + signer_weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "StellarSetOptionsOp" + }); + exports2.StellarChangeTrustOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + asset: exports2.StellarAsset, + limit: schema_utils_1.Type.Uint() + }, { + $id: "StellarChangeTrustOp" + }); + exports2.StellarAllowTrustOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + trusted_account: schema_utils_1.Type.String(), + asset_type: exports2.EnumStellarAssetType, + asset_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + is_authorized: schema_utils_1.Type.Boolean() + }, { + $id: "StellarAllowTrustOp" + }); + exports2.StellarAccountMergeOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + destination_account: schema_utils_1.Type.String() + }, { + $id: "StellarAccountMergeOp" + }); + exports2.StellarManageDataOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + key: schema_utils_1.Type.String(), + value: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()])) + }, { + $id: "StellarManageDataOp" + }); + exports2.StellarBumpSequenceOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + bump_to: schema_utils_1.Type.Uint() + }, { + $id: "StellarBumpSequenceOp" + }); + exports2.StellarClaimClaimableBalanceOp = schema_utils_1.Type.Object({ + source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + balance_id: schema_utils_1.Type.String() + }, { + $id: "StellarClaimClaimableBalanceOp" + }); + exports2.StellarSignedTx = schema_utils_1.Type.Object({ + public_key: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }, { + $id: "StellarSignedTx" + }); + exports2.TezosGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "TezosGetAddress" + }); + exports2.TezosAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "TezosAddress" + }); + exports2.TezosGetPublicKey = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "TezosGetPublicKey" + }); + exports2.TezosPublicKey = schema_utils_1.Type.Object({ + public_key: schema_utils_1.Type.String() + }, { + $id: "TezosPublicKey" + }); + var TezosContractType; + (function(TezosContractType2) { + TezosContractType2[TezosContractType2["Implicit"] = 0] = "Implicit"; + TezosContractType2[TezosContractType2["Originated"] = 1] = "Originated"; + })(TezosContractType || (exports2.TezosContractType = TezosContractType = {})); + exports2.EnumTezosContractType = schema_utils_1.Type.Enum(TezosContractType); + exports2.TezosContractID = schema_utils_1.Type.Object({ + tag: schema_utils_1.Type.Number(), + hash: schema_utils_1.Type.Uint8Array() + }, { + $id: "TezosContractID" + }); + exports2.TezosRevealOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.Uint8Array(), + fee: schema_utils_1.Type.Uint(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + public_key: schema_utils_1.Type.Uint8Array() + }, { + $id: "TezosRevealOp" + }); + exports2.TezosManagerTransfer = schema_utils_1.Type.Object({ + destination: exports2.TezosContractID, + amount: schema_utils_1.Type.Uint() + }, { + $id: "TezosManagerTransfer" + }); + exports2.TezosParametersManager = schema_utils_1.Type.Object({ + set_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint8Array()), + cancel_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + transfer: schema_utils_1.Type.Optional(exports2.TezosManagerTransfer) + }, { + $id: "TezosParametersManager" + }); + exports2.TezosTransactionOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.Uint8Array(), + fee: schema_utils_1.Type.Uint(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + amount: schema_utils_1.Type.Uint(), + destination: exports2.TezosContractID, + parameters: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + parameters_manager: schema_utils_1.Type.Optional(exports2.TezosParametersManager) + }, { + $id: "TezosTransactionOp" + }); + exports2.TezosOriginationOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.Uint8Array(), + fee: schema_utils_1.Type.Uint(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + manager_pubkey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + balance: schema_utils_1.Type.Number(), + spendable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + delegatable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint8Array()), + script: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())]) + }, { + $id: "TezosOriginationOp" + }); + exports2.TezosDelegationOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.Uint8Array(), + fee: schema_utils_1.Type.Uint(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + delegate: schema_utils_1.Type.Uint8Array() + }, { + $id: "TezosDelegationOp" + }); + exports2.TezosProposalOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + period: schema_utils_1.Type.Number(), + proposals: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }, { + $id: "TezosProposalOp" + }); + var TezosBallotType; + (function(TezosBallotType2) { + TezosBallotType2[TezosBallotType2["Yay"] = 0] = "Yay"; + TezosBallotType2[TezosBallotType2["Nay"] = 1] = "Nay"; + TezosBallotType2[TezosBallotType2["Pass"] = 2] = "Pass"; + })(TezosBallotType || (exports2.TezosBallotType = TezosBallotType = {})); + exports2.EnumTezosBallotType = schema_utils_1.Type.Enum(TezosBallotType); + exports2.TezosBallotOp = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + period: schema_utils_1.Type.Number(), + proposal: schema_utils_1.Type.String(), + ballot: exports2.EnumTezosBallotType + }, { + $id: "TezosBallotOp" + }); + exports2.TezosSignTx = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + branch: schema_utils_1.Type.Uint8Array(), + reveal: schema_utils_1.Type.Optional(exports2.TezosRevealOp), + transaction: schema_utils_1.Type.Optional(exports2.TezosTransactionOp), + origination: schema_utils_1.Type.Optional(exports2.TezosOriginationOp), + delegation: schema_utils_1.Type.Optional(exports2.TezosDelegationOp), + proposal: schema_utils_1.Type.Optional(exports2.TezosProposalOp), + ballot: schema_utils_1.Type.Optional(exports2.TezosBallotOp), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "TezosSignTx" + }); + exports2.TezosSignedTx = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + sig_op_contents: schema_utils_1.Type.String(), + operation_hash: schema_utils_1.Type.String() + }, { + $id: "TezosSignedTx" + }); + exports2.TronGetAddress = schema_utils_1.Type.Object({ + address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "TronGetAddress" + }); + exports2.TronAddress = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "TronAddress" + }); + exports2.MessageType = schema_utils_1.Type.Object({ + TextMemo: exports2.TextMemo, + RefundMemo: exports2.RefundMemo, + CoinPurchaseMemo: exports2.CoinPurchaseMemo, + TextDetailsMemo: exports2.TextDetailsMemo, + PaymentRequestMemo: exports2.PaymentRequestMemo, + PaymentRequest: exports2.PaymentRequest, + HDNodeType: exports2.HDNodeType, + HDNodePathType: exports2.HDNodePathType, + MultisigRedeemScriptType: exports2.MultisigRedeemScriptType, + GetPublicKey: exports2.GetPublicKey, + PublicKey: exports2.PublicKey, + GetAddress: exports2.GetAddress, + Address: exports2.Address, + GetOwnershipId: exports2.GetOwnershipId, + OwnershipId: exports2.OwnershipId, + SignMessage: exports2.SignMessage, + MessageSignature: exports2.MessageSignature, + VerifyMessage: exports2.VerifyMessage, + CoinJoinRequest: exports2.CoinJoinRequest, + SignTx: exports2.SignTx, + TxRequestDetailsType: exports2.TxRequestDetailsType, + TxRequestSerializedType: exports2.TxRequestSerializedType, + TxRequest: exports2.TxRequest, + TxInputType: exports2.TxInputType, + TxOutputBinType: exports2.TxOutputBinType, + TxOutputType: exports2.TxOutputType, + PrevTx: exports2.PrevTx, + PrevInput: exports2.PrevInput, + PrevOutput: exports2.PrevOutput, + TxAck: exports2.TxAck, + TxAckInputWrapper: exports2.TxAckInputWrapper, + TxAckInput: exports2.TxAckInput, + TxAckOutputWrapper: exports2.TxAckOutputWrapper, + TxAckOutput: exports2.TxAckOutput, + TxAckPrevMeta: exports2.TxAckPrevMeta, + TxAckPrevInputWrapper: exports2.TxAckPrevInputWrapper, + TxAckPrevInput: exports2.TxAckPrevInput, + TxAckPrevOutputWrapper: exports2.TxAckPrevOutputWrapper, + TxAckPrevOutput: exports2.TxAckPrevOutput, + TxAckPrevExtraDataWrapper: exports2.TxAckPrevExtraDataWrapper, + TxAckPrevExtraData: exports2.TxAckPrevExtraData, + GetOwnershipProof: exports2.GetOwnershipProof, + OwnershipProof: exports2.OwnershipProof, + AuthorizeCoinJoin: exports2.AuthorizeCoinJoin, + BleUnpair: exports2.BleUnpair, + FirmwareErase: exports2.FirmwareErase, + FirmwareRequest: exports2.FirmwareRequest, + FirmwareUpload: exports2.FirmwareUpload, + ProdTestT1: exports2.ProdTestT1, + CardanoBlockchainPointerType: exports2.CardanoBlockchainPointerType, + CardanoNativeScript: exports2.CardanoNativeScript, + CardanoGetNativeScriptHash: exports2.CardanoGetNativeScriptHash, + CardanoNativeScriptHash: exports2.CardanoNativeScriptHash, + CardanoAddressParametersType: exports2.CardanoAddressParametersType, + CardanoGetAddress: exports2.CardanoGetAddress, + CardanoAddress: exports2.CardanoAddress, + CardanoGetPublicKey: exports2.CardanoGetPublicKey, + CardanoPublicKey: exports2.CardanoPublicKey, + CardanoSignTxInit: exports2.CardanoSignTxInit, + CardanoTxInput: exports2.CardanoTxInput, + CardanoTxOutput: exports2.CardanoTxOutput, + CardanoAssetGroup: exports2.CardanoAssetGroup, + CardanoToken: exports2.CardanoToken, + CardanoTxInlineDatumChunk: exports2.CardanoTxInlineDatumChunk, + CardanoTxReferenceScriptChunk: exports2.CardanoTxReferenceScriptChunk, + CardanoPoolOwner: exports2.CardanoPoolOwner, + CardanoPoolRelayParameters: exports2.CardanoPoolRelayParameters, + CardanoPoolMetadataType: exports2.CardanoPoolMetadataType, + CardanoPoolParametersType: exports2.CardanoPoolParametersType, + CardanoDRep: exports2.CardanoDRep, + CardanoTxCertificate: exports2.CardanoTxCertificate, + CardanoTxWithdrawal: exports2.CardanoTxWithdrawal, + CardanoCVoteRegistrationDelegation: exports2.CardanoCVoteRegistrationDelegation, + CardanoCVoteRegistrationParametersType: exports2.CardanoCVoteRegistrationParametersType, + CardanoTxAuxiliaryData: exports2.CardanoTxAuxiliaryData, + CardanoTxMint: exports2.CardanoTxMint, + CardanoTxCollateralInput: exports2.CardanoTxCollateralInput, + CardanoTxRequiredSigner: exports2.CardanoTxRequiredSigner, + CardanoTxReferenceInput: exports2.CardanoTxReferenceInput, + CardanoTxItemAck: exports2.CardanoTxItemAck, + CardanoTxAuxiliaryDataSupplement: exports2.CardanoTxAuxiliaryDataSupplement, + CardanoTxWitnessRequest: exports2.CardanoTxWitnessRequest, + CardanoTxWitnessResponse: exports2.CardanoTxWitnessResponse, + CardanoTxHostAck: exports2.CardanoTxHostAck, + CardanoTxBodyHash: exports2.CardanoTxBodyHash, + CardanoSignTxFinished: exports2.CardanoSignTxFinished, + CardanoSignMessageInit: exports2.CardanoSignMessageInit, + CardanoMessageDataRequest: exports2.CardanoMessageDataRequest, + CardanoMessageDataResponse: exports2.CardanoMessageDataResponse, + CardanoMessageSignature: exports2.CardanoMessageSignature, + Success: exports2.Success, + Failure: exports2.Failure, + ButtonRequest: exports2.ButtonRequest, + ButtonAck: exports2.ButtonAck, + PinMatrixRequest: exports2.PinMatrixRequest, + PinMatrixAck: exports2.PinMatrixAck, + PassphraseRequest: exports2.PassphraseRequest, + PassphraseAck: exports2.PassphraseAck, + Deprecated_PassphraseStateRequest: exports2.Deprecated_PassphraseStateRequest, + Deprecated_PassphraseStateAck: exports2.Deprecated_PassphraseStateAck, + CipherKeyValue: exports2.CipherKeyValue, + CipheredKeyValue: exports2.CipheredKeyValue, + IdentityType: exports2.IdentityType, + SignIdentity: exports2.SignIdentity, + SignedIdentity: exports2.SignedIdentity, + GetECDHSessionKey: exports2.GetECDHSessionKey, + ECDHSessionKey: exports2.ECDHSessionKey, + PaymentNotification: exports2.PaymentNotification, + DebugLinkGetPairingInfo: exports2.DebugLinkGetPairingInfo, + DebugLinkPairingInfo: exports2.DebugLinkPairingInfo, + DebugLinkResetDebugEvents: exports2.DebugLinkResetDebugEvents, + DebugLinkOptigaSetSecMax: exports2.DebugLinkOptigaSetSecMax, + DebugLinkGetGcInfo: exports2.DebugLinkGetGcInfo, + DebugLinkGcInfoItem: exports2.DebugLinkGcInfoItem, + DebugLinkGcInfo: exports2.DebugLinkGcInfo, + EthereumNetworkInfo: exports2.EthereumNetworkInfo, + EthereumTokenInfo: exports2.EthereumTokenInfo, + SolanaTokenInfo: exports2.SolanaTokenInfo, + EosGetPublicKey: exports2.EosGetPublicKey, + EosPublicKey: exports2.EosPublicKey, + EosTxHeader: exports2.EosTxHeader, + EosSignTx: exports2.EosSignTx, + EosTxActionRequest: exports2.EosTxActionRequest, + EosAsset: exports2.EosAsset, + EosPermissionLevel: exports2.EosPermissionLevel, + EosAuthorizationKey: exports2.EosAuthorizationKey, + EosAuthorizationAccount: exports2.EosAuthorizationAccount, + EosAuthorizationWait: exports2.EosAuthorizationWait, + EosAuthorization: exports2.EosAuthorization, + EosActionCommon: exports2.EosActionCommon, + EosActionTransfer: exports2.EosActionTransfer, + EosActionDelegate: exports2.EosActionDelegate, + EosActionUndelegate: exports2.EosActionUndelegate, + EosActionRefund: exports2.EosActionRefund, + EosActionBuyRam: exports2.EosActionBuyRam, + EosActionBuyRamBytes: exports2.EosActionBuyRamBytes, + EosActionSellRam: exports2.EosActionSellRam, + EosActionVoteProducer: exports2.EosActionVoteProducer, + EosActionUpdateAuth: exports2.EosActionUpdateAuth, + EosActionDeleteAuth: exports2.EosActionDeleteAuth, + EosActionLinkAuth: exports2.EosActionLinkAuth, + EosActionUnlinkAuth: exports2.EosActionUnlinkAuth, + EosActionNewAccount: exports2.EosActionNewAccount, + EosActionUnknown: exports2.EosActionUnknown, + EosTxActionAck: exports2.EosTxActionAck, + EosSignedTx: exports2.EosSignedTx, + EthereumDefinitions: exports2.EthereumDefinitions, + EthereumSignTypedData: exports2.EthereumSignTypedData, + EthereumTypedDataStructRequest: exports2.EthereumTypedDataStructRequest, + EthereumFieldType: exports2.EthereumFieldType, + EthereumStructMember: exports2.EthereumStructMember, + EthereumTypedDataStructAck: exports2.EthereumTypedDataStructAck, + EthereumTypedDataValueRequest: exports2.EthereumTypedDataValueRequest, + EthereumTypedDataValueAck: exports2.EthereumTypedDataValueAck, + EthereumGetPublicKey: exports2.EthereumGetPublicKey, + EthereumPublicKey: exports2.EthereumPublicKey, + EthereumGetAddress: exports2.EthereumGetAddress, + EthereumAddress: exports2.EthereumAddress, + EthereumSignTx: exports2.EthereumSignTx, + EthereumAccessList: exports2.EthereumAccessList, + EthereumSignTxEIP1559: exports2.EthereumSignTxEIP1559, + EthereumTxRequest: exports2.EthereumTxRequest, + EthereumTxAck: exports2.EthereumTxAck, + EthereumSignMessage: exports2.EthereumSignMessage, + EthereumMessageSignature: exports2.EthereumMessageSignature, + EthereumVerifyMessage: exports2.EthereumVerifyMessage, + EthereumSignTypedHash: exports2.EthereumSignTypedHash, + EthereumTypedDataSignature: exports2.EthereumTypedDataSignature, + EvoluGetNode: exports2.EvoluGetNode, + EvoluNode: exports2.EvoluNode, + EvoluSignRegistrationRequest: exports2.EvoluSignRegistrationRequest, + EvoluRegistrationRequest: exports2.EvoluRegistrationRequest, + EvoluGetDelegatedIdentityKey: exports2.EvoluGetDelegatedIdentityKey, + EvoluDelegatedIdentityKey: exports2.EvoluDelegatedIdentityKey, + Initialize: exports2.Initialize, + GetFeatures: exports2.GetFeatures, + RecoveryDevice: exports2.RecoveryDevice, + Features: exports2.Features, + LockDevice: exports2.LockDevice, + SetBusy: exports2.SetBusy, + EndSession: exports2.EndSession, + ApplySettings: exports2.ApplySettings, + ChangeLanguage: exports2.ChangeLanguage, + DataChunkRequest: exports2.DataChunkRequest, + DataChunkAck: exports2.DataChunkAck, + ApplyFlags: exports2.ApplyFlags, + ChangePin: exports2.ChangePin, + ChangeWipeCode: exports2.ChangeWipeCode, + SdProtect: exports2.SdProtect, + Ping: exports2.Ping, + Cancel: exports2.Cancel, + GetEntropy: exports2.GetEntropy, + Entropy: exports2.Entropy, + GetFirmwareHash: exports2.GetFirmwareHash, + FirmwareHash: exports2.FirmwareHash, + AuthenticateDevice: exports2.AuthenticateDevice, + AuthenticityProof: exports2.AuthenticityProof, + WipeDevice: exports2.WipeDevice, + LoadDevice: exports2.LoadDevice, + ResetDevice: exports2.ResetDevice, + Slip39Group: exports2.Slip39Group, + BackupDevice: exports2.BackupDevice, + EntropyRequest: exports2.EntropyRequest, + EntropyAck: exports2.EntropyAck, + EntropyCheckReady: exports2.EntropyCheckReady, + EntropyCheckContinue: exports2.EntropyCheckContinue, + WordRequest: exports2.WordRequest, + WordAck: exports2.WordAck, + SetU2FCounter: exports2.SetU2FCounter, + GetNextU2FCounter: exports2.GetNextU2FCounter, + NextU2FCounter: exports2.NextU2FCounter, + DoPreauthorized: exports2.DoPreauthorized, + PreauthorizedRequest: exports2.PreauthorizedRequest, + CancelAuthorization: exports2.CancelAuthorization, + RebootToBootloader: exports2.RebootToBootloader, + GetNonce: exports2.GetNonce, + Nonce: exports2.Nonce, + UnlockPath: exports2.UnlockPath, + UnlockedPathRequest: exports2.UnlockedPathRequest, + ShowDeviceTutorial: exports2.ShowDeviceTutorial, + UnlockBootloader: exports2.UnlockBootloader, + SetBrightness: exports2.SetBrightness, + GetSerialNumber: exports2.GetSerialNumber, + SerialNumber: exports2.SerialNumber, + MoneroRctKeyPublic: exports2.MoneroRctKeyPublic, + MoneroOutputEntry: exports2.MoneroOutputEntry, + MoneroMultisigKLRki: exports2.MoneroMultisigKLRki, + MoneroTransactionSourceEntry: exports2.MoneroTransactionSourceEntry, + MoneroAccountPublicAddress: exports2.MoneroAccountPublicAddress, + MoneroTransactionDestinationEntry: exports2.MoneroTransactionDestinationEntry, + MoneroTransactionRsigData: exports2.MoneroTransactionRsigData, + MoneroGetAddress: exports2.MoneroGetAddress, + MoneroAddress: exports2.MoneroAddress, + MoneroGetWatchKey: exports2.MoneroGetWatchKey, + MoneroWatchKey: exports2.MoneroWatchKey, + MoneroTransactionData: exports2.MoneroTransactionData, + MoneroTransactionInitRequest: exports2.MoneroTransactionInitRequest, + MoneroTransactionInitAck: exports2.MoneroTransactionInitAck, + MoneroTransactionSetInputRequest: exports2.MoneroTransactionSetInputRequest, + MoneroTransactionSetInputAck: exports2.MoneroTransactionSetInputAck, + MoneroTransactionInputViniRequest: exports2.MoneroTransactionInputViniRequest, + MoneroTransactionInputViniAck: exports2.MoneroTransactionInputViniAck, + MoneroTransactionAllInputsSetRequest: exports2.MoneroTransactionAllInputsSetRequest, + MoneroTransactionAllInputsSetAck: exports2.MoneroTransactionAllInputsSetAck, + MoneroTransactionSetOutputRequest: exports2.MoneroTransactionSetOutputRequest, + MoneroTransactionSetOutputAck: exports2.MoneroTransactionSetOutputAck, + MoneroTransactionAllOutSetRequest: exports2.MoneroTransactionAllOutSetRequest, + MoneroRingCtSig: exports2.MoneroRingCtSig, + MoneroTransactionAllOutSetAck: exports2.MoneroTransactionAllOutSetAck, + MoneroTransactionSignInputRequest: exports2.MoneroTransactionSignInputRequest, + MoneroTransactionSignInputAck: exports2.MoneroTransactionSignInputAck, + MoneroTransactionFinalRequest: exports2.MoneroTransactionFinalRequest, + MoneroTransactionFinalAck: exports2.MoneroTransactionFinalAck, + MoneroSubAddressIndicesList: exports2.MoneroSubAddressIndicesList, + MoneroKeyImageExportInitRequest: exports2.MoneroKeyImageExportInitRequest, + MoneroKeyImageExportInitAck: exports2.MoneroKeyImageExportInitAck, + MoneroTransferDetails: exports2.MoneroTransferDetails, + MoneroKeyImageSyncStepRequest: exports2.MoneroKeyImageSyncStepRequest, + MoneroExportedKeyImage: exports2.MoneroExportedKeyImage, + MoneroKeyImageSyncStepAck: exports2.MoneroKeyImageSyncStepAck, + MoneroKeyImageSyncFinalRequest: exports2.MoneroKeyImageSyncFinalRequest, + MoneroKeyImageSyncFinalAck: exports2.MoneroKeyImageSyncFinalAck, + MoneroGetTxKeyRequest: exports2.MoneroGetTxKeyRequest, + MoneroGetTxKeyAck: exports2.MoneroGetTxKeyAck, + MoneroLiveRefreshStartRequest: exports2.MoneroLiveRefreshStartRequest, + MoneroLiveRefreshStartAck: exports2.MoneroLiveRefreshStartAck, + MoneroLiveRefreshStepRequest: exports2.MoneroLiveRefreshStepRequest, + MoneroLiveRefreshStepAck: exports2.MoneroLiveRefreshStepAck, + MoneroLiveRefreshFinalRequest: exports2.MoneroLiveRefreshFinalRequest, + MoneroLiveRefreshFinalAck: exports2.MoneroLiveRefreshFinalAck, + DebugMoneroDiagRequest: exports2.DebugMoneroDiagRequest, + DebugMoneroDiagAck: exports2.DebugMoneroDiagAck, + NEMGetAddress: exports2.NEMGetAddress, + NEMAddress: exports2.NEMAddress, + NEMTransactionCommon: exports2.NEMTransactionCommon, + NEMMosaic: exports2.NEMMosaic, + NEMTransfer: exports2.NEMTransfer, + NEMProvisionNamespace: exports2.NEMProvisionNamespace, + NEMMosaicDefinition: exports2.NEMMosaicDefinition, + NEMMosaicCreation: exports2.NEMMosaicCreation, + NEMMosaicSupplyChange: exports2.NEMMosaicSupplyChange, + NEMCosignatoryModification: exports2.NEMCosignatoryModification, + NEMAggregateModification: exports2.NEMAggregateModification, + NEMImportanceTransfer: exports2.NEMImportanceTransfer, + NEMSignTx: exports2.NEMSignTx, + NEMSignedTx: exports2.NEMSignedTx, + NEMDecryptMessage: exports2.NEMDecryptMessage, + NEMDecryptedMessage: exports2.NEMDecryptedMessage, + RippleGetAddress: exports2.RippleGetAddress, + RippleAddress: exports2.RippleAddress, + RipplePayment: exports2.RipplePayment, + RippleSignTx: exports2.RippleSignTx, + RippleSignedTx: exports2.RippleSignedTx, + SolanaGetPublicKey: exports2.SolanaGetPublicKey, + SolanaPublicKey: exports2.SolanaPublicKey, + SolanaGetAddress: exports2.SolanaGetAddress, + SolanaAddress: exports2.SolanaAddress, + SolanaTxTokenAccountInfo: exports2.SolanaTxTokenAccountInfo, + SolanaTxAdditionalInfo: exports2.SolanaTxAdditionalInfo, + SolanaSignTx: exports2.SolanaSignTx, + SolanaTxSignature: exports2.SolanaTxSignature, + StellarAsset: exports2.StellarAsset, + StellarGetAddress: exports2.StellarGetAddress, + StellarAddress: exports2.StellarAddress, + StellarSignTx: exports2.StellarSignTx, + StellarTxOpRequest: exports2.StellarTxOpRequest, + StellarPaymentOp: exports2.StellarPaymentOp, + StellarCreateAccountOp: exports2.StellarCreateAccountOp, + StellarPathPaymentStrictReceiveOp: exports2.StellarPathPaymentStrictReceiveOp, + StellarPathPaymentStrictSendOp: exports2.StellarPathPaymentStrictSendOp, + StellarManageSellOfferOp: exports2.StellarManageSellOfferOp, + StellarManageBuyOfferOp: exports2.StellarManageBuyOfferOp, + StellarCreatePassiveSellOfferOp: exports2.StellarCreatePassiveSellOfferOp, + StellarSetOptionsOp: exports2.StellarSetOptionsOp, + StellarChangeTrustOp: exports2.StellarChangeTrustOp, + StellarAllowTrustOp: exports2.StellarAllowTrustOp, + StellarAccountMergeOp: exports2.StellarAccountMergeOp, + StellarManageDataOp: exports2.StellarManageDataOp, + StellarBumpSequenceOp: exports2.StellarBumpSequenceOp, + StellarClaimClaimableBalanceOp: exports2.StellarClaimClaimableBalanceOp, + StellarSignedTx: exports2.StellarSignedTx, + TezosGetAddress: exports2.TezosGetAddress, + TezosAddress: exports2.TezosAddress, + TezosGetPublicKey: exports2.TezosGetPublicKey, + TezosPublicKey: exports2.TezosPublicKey, + TezosContractID: exports2.TezosContractID, + TezosRevealOp: exports2.TezosRevealOp, + TezosManagerTransfer: exports2.TezosManagerTransfer, + TezosParametersManager: exports2.TezosParametersManager, + TezosTransactionOp: exports2.TezosTransactionOp, + TezosOriginationOp: exports2.TezosOriginationOp, + TezosDelegationOp: exports2.TezosDelegationOp, + TezosProposalOp: exports2.TezosProposalOp, + TezosBallotOp: exports2.TezosBallotOp, + TezosSignTx: exports2.TezosSignTx, + TezosSignedTx: exports2.TezosSignedTx, + TronGetAddress: exports2.TronGetAddress, + TronAddress: exports2.TronAddress + }, { + $id: "MessageType" + }); + } +}); + +// node_modules/@trezor/protobuf/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/@trezor/protobuf/lib/index.js"(exports2) { + "use strict"; + var _a; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MessagesSchema = exports2.loadDefinitions = exports2.Messages = exports2.encodeMessage = exports2.decodeMessage = exports2.parseConfigure = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var long_1 = tslib_1.__importDefault(require_umd()); + var protobuf = tslib_1.__importStar(require_light()); + var decode_1 = require_decode(); + var encode_1 = require_encode(); + var utils_1 = require_utils2(); + _a = (() => { + protobuf.util.Long = long_1.default; + protobuf.configure(); + return { + parseConfigure: utils_1.parseConfigure, + decodeMessage: decode_1.decodeMessage, + encodeMessage: encode_1.encodeMessage + }; + })(), exports2.parseConfigure = _a.parseConfigure, exports2.decodeMessage = _a.decodeMessage, exports2.encodeMessage = _a.encodeMessage; + exports2.Messages = tslib_1.__importStar(require_messages()); + var load_definitions_1 = require_load_definitions(); + Object.defineProperty(exports2, "loadDefinitions", { + enumerable: true, + get: function() { + return load_definitions_1.loadDefinitions; + } + }); + exports2.MessagesSchema = tslib_1.__importStar(require_messages_schema()); + } +}); + +// node_modules/@trezor/connect/lib/constants/index.js +var require_constants = __commonJS({ + "node_modules/@trezor/connect/lib/constants/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PROTO = exports2.DEFAULT_SORTING_STRATEGY = exports2.FIRMWARE = exports2.NEM = exports2.CARDANO = exports2.NETWORK = exports2.ERRORS = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + exports2.ERRORS = tslib_1.__importStar(require_errors()); + exports2.NETWORK = tslib_1.__importStar(require_network()); + exports2.CARDANO = tslib_1.__importStar(require_cardano()); + exports2.NEM = tslib_1.__importStar(require_nem()); + exports2.FIRMWARE = tslib_1.__importStar(require_firmware()); + var utxo_1 = require_utxo(); + Object.defineProperty(exports2, "DEFAULT_SORTING_STRATEGY", { + enumerable: true, + get: function() { + return utxo_1.DEFAULT_SORTING_STRATEGY; + } + }); + var protobuf_1 = require_lib3(); + Object.defineProperty(exports2, "PROTO", { + enumerable: true, + get: function() { + return protobuf_1.MessagesSchema; + } + }); + } +}); + +// node_modules/@trezor/connect-common/lib/storage.js +var require_storage = __commonJS({ + "node_modules/@trezor/connect-common/lib/storage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.storage = void 0; + var utils_1 = require_lib(); + var storageVersion = 2; + var storageName = `storage_v${storageVersion}`; + var getEmptyState = () => ({ + origin: {} + }); + var memoryStorage = getEmptyState(); + var getPermanentStorage = () => { + const ls = localStorage.getItem(storageName); + return ls ? JSON.parse(ls) : getEmptyState(); + }; + var Storage = class extends utils_1.TypedEmitter { + save(getNewState, temporary = false) { + if (temporary || !global.window) { + memoryStorage = getNewState(memoryStorage); + return; + } + try { + const newState = getNewState(getPermanentStorage()); + localStorage.setItem(storageName, JSON.stringify(newState)); + this.emit("changed", newState); + } catch { + console.warn("long term storage not available"); + memoryStorage = getNewState(memoryStorage); + } + } + saveForOrigin(getNewState, origin, temporary = false) { + this.save((state) => ({ + ...state, + origin: { + ...state.origin, + [origin]: getNewState(state.origin?.[origin] || {}) + } + }), temporary); + } + load(temporary = false) { + if (temporary || !global?.window?.localStorage) { + return memoryStorage; + } + try { + return getPermanentStorage(); + } catch { + console.warn("long term storage not available"); + return memoryStorage; + } + } + loadForOrigin(origin, temporary = false) { + const state = this.load(temporary); + return state.origin?.[origin] || {}; + } + }; + var storage = new Storage(); + exports2.storage = storage; + } +}); + +// node_modules/@trezor/connect-common/lib/messageChannel/abstract.js +var require_abstract = __commonJS({ + "node_modules/@trezor/connect-common/lib/messageChannel/abstract.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AbstractMessageChannel = void 0; + var utils_1 = require_lib(); + var AbstractMessageChannel = class extends utils_1.TypedEmitter { + messagePromises = {}; + messagesQueue = []; + messageID = 0; + isConnected = false; + handshakeMaxRetries = 5; + handshakeRetryInterval = 2e3; + handshakeFinished; + lazyHandshake; + legacyMode; + logger; + sendFn; + channel; + constructor({ + sendFn, + channel, + logger, + lazyHandshake = false, + legacyMode = false + }) { + super(); + this.channel = channel; + this.sendFn = sendFn; + this.lazyHandshake = lazyHandshake; + this.legacyMode = legacyMode; + this.logger = logger; + } + init() { + if (!this.handshakeFinished) { + this.handshakeFinished = (0, utils_1.createDeferred)(); + if (this.legacyMode) { + setTimeout(() => { + this.handshakeFinished?.resolve(); + }, 500); + } + if (!this.lazyHandshake) { + this.handshakeWithPeer(); + } + } + return this.handshakeFinished.promise; + } + handshakeWithPeer() { + this.logger?.log(this.channel.here, "handshake"); + return (0, utils_1.scheduleAction)(async () => { + this.postMessage({ + type: "channel-handshake-request", + data: { + success: true, + payload: void 0 + } + }, { + usePromise: false, + useQueue: false + }); + await this.handshakeFinished?.promise; + }, { + attempts: this.handshakeMaxRetries, + timeout: this.handshakeRetryInterval + }).then(() => { + this.logger?.log(this.channel.here, "handshake confirmed"); + this.messagesQueue.forEach((message) => { + message.channel = this.channel; + this.sendFn(message); + }); + this.messagesQueue = []; + }).catch(() => { + this.handshakeFinished?.reject(new Error("handshake failed")); + this.handshakeFinished = void 0; + }); + } + onMessage(_message) { + let message = _message; + if (this.legacyMode && message.type === void 0 && "data" in message && typeof message.data === "object" && message.data !== null && "type" in message.data && typeof message.data.type === "string") { + message = message.data; + } + const { + channel, + id, + type, + ...data + } = message; + if (!this.legacyMode) { + if (!channel?.peer || channel.peer !== this.channel.here) { + return; + } + if (!channel?.here || this.channel.peer !== channel.here) { + return; + } + } + if (type === "channel-handshake-request") { + this.postMessage({ + type: "channel-handshake-confirm", + data: { + success: true, + payload: void 0 + } + }, { + usePromise: false, + useQueue: false + }); + if (this.lazyHandshake) { + this.handshakeWithPeer(); + } + return; + } + if (type === "channel-handshake-confirm") { + this.handshakeFinished?.resolve(void 0); + return; + } + if (this.messagePromises[id]) { + this.messagePromises[id].resolve({ + id, + ...data + }); + delete this.messagePromises[id]; + } + const messagePromisesLength = Object.keys(this.messagePromises).length; + if (messagePromisesLength > 5) { + this.logger?.warn(`too many message promises (${messagePromisesLength}). this feels unexpected!`); + } + this.emit("message", message); + } + postMessage(message, { + usePromise = true, + useQueue = true + } = {}) { + message.channel = this.channel; + if (!usePromise) { + try { + this.sendFn(message); + } catch { + if (useQueue) { + this.messagesQueue.push(message); + } + } + return; + } + this.messageID++; + message.id = this.messageID; + this.messagePromises[message.id] = (0, utils_1.createDeferred)(); + try { + this.sendFn(message); + } catch { + if (useQueue) { + this.messagesQueue.push(message); + } + } + return this.messagePromises[message.id].promise; + } + resolveMessagePromises(resolvePayload) { + Object.keys(this.messagePromises).forEach((id) => this.messagePromises[id].resolve({ + id, + payload: resolvePayload + })); + } + clear() { + this.handshakeFinished = void 0; + } + }; + exports2.AbstractMessageChannel = AbstractMessageChannel; + } +}); + +// node_modules/@trezor/connect-common/lib/messageChannel/window-window.js +var require_window_window = __commonJS({ + "node_modules/@trezor/connect-common/lib/messageChannel/window-window.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WindowWindowChannel = void 0; + var abstract_1 = require_abstract(); + var WindowWindowChannel = class extends abstract_1.AbstractMessageChannel { + _windowHere; + _listener; + constructor({ + windowHere, + windowPeer, + channel, + logger, + origin, + legacyMode + }) { + super({ + channel, + sendFn: (message) => { + windowPeer()?.postMessage(message, origin); + }, + logger, + legacyMode + }); + this._listener = this.listener.bind(this); + this._windowHere = windowHere; + this.connect(); + } + listener(event) { + const message = { + ...event.data, + success: true, + origin: event.origin, + payload: event.data.payload || {}, + channel: event.data.channel || { + peer: this.channel.here, + here: this.channel.peer + } + }; + this.onMessage(message); + } + connect() { + this._windowHere.addEventListener("message", this._listener); + this.isConnected = true; + } + disconnect() { + if (!this.isConnected) return; + this._windowHere.removeEventListener("message", this._listener); + this.isConnected = false; + } + }; + exports2.WindowWindowChannel = WindowWindowChannel; + } +}); + +// node_modules/@trezor/connect-common/lib/messageChannel/serviceworker-window.js +var require_serviceworker_window = __commonJS({ + "node_modules/@trezor/connect-common/lib/messageChannel/serviceworker-window.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ServiceWorkerWindowChannel = void 0; + var abstract_1 = require_abstract(); + var ServiceWorkerWindowChannel = class extends abstract_1.AbstractMessageChannel { + port; + name; + allowSelfOrigin; + currentId; + constructor({ + name, + channel, + logger, + lazyHandshake, + legacyMode, + allowSelfOrigin = false, + currentId + }) { + super({ + channel, + sendFn: (message) => { + if (!this.port) throw new Error("port not assigned"); + this.port.postMessage(message); + }, + logger, + lazyHandshake, + legacyMode + }); + this.name = name; + this.allowSelfOrigin = allowSelfOrigin; + this.currentId = currentId; + this.connect(); + } + connect() { + chrome.runtime.onConnect.addListener((port) => { + if (port.name !== this.name) return; + if (this.currentId?.() && this.currentId?.() !== port.sender?.tab?.id) return; + this.port = port; + this.port.onMessage.addListener((message, { + sender + }) => { + if (!sender) { + this.logger?.error("service-worker-window", "no sender"); + return; + } + const { + origin + } = sender; + const whitelist = ["https://connect.trezor.io", "https://staging-connect.trezor.io", "https://suite.corp.sldev.cz", "https://dev.suite.sldev.cz", "http://localhost:8088", "https://suite.trezor.io", "https://staging-suite.trezor.io", "http://localhost:8000"]; + const webextensionId = chrome?.runtime?.id; + if (webextensionId) { + whitelist.push(`chrome-extension://${webextensionId}`); + } + const webextensionUrl = chrome?.runtime?.getURL(""); + if (webextensionUrl) { + whitelist.push(webextensionUrl.slice(0, -1)); + } + if (!origin) { + this.logger?.error("connect-webextension/messageChannel/extensionPort/onMessage", "no origin"); + return; + } + if (!whitelist.includes(origin)) { + this.logger?.error("connect-webextension/messageChannel/extensionPort/onMessage", "origin not whitelisted", origin); + return; + } + if (origin === self.origin && !this.allowSelfOrigin) { + return; + } + this.onMessage(message); + }); + }); + this.isConnected = true; + } + disconnect() { + if (!this.isConnected) return; + this.port?.disconnect(); + this.clear(); + this.isConnected = false; + } + }; + exports2.ServiceWorkerWindowChannel = ServiceWorkerWindowChannel; + } +}); + +// node_modules/@trezor/connect-common/lib/messageChannel/window-serviceworker.js +var require_window_serviceworker = __commonJS({ + "node_modules/@trezor/connect-common/lib/messageChannel/window-serviceworker.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WindowServiceWorkerChannel = void 0; + var abstract_1 = require_abstract(); + var WindowServiceWorkerChannel = class extends abstract_1.AbstractMessageChannel { + port; + constructor({ + name, + channel + }) { + super({ + channel, + sendFn: (message) => { + if (!this.port) throw new Error("port not assigned"); + this.port.postMessage(message); + } + }); + const port = chrome.runtime.connect({ + name + }); + this.port = port; + this.connect(); + } + connect() { + this.port?.onMessage.addListener((message) => { + if (message.channel.here === this.channel.here) return; + this.onMessage(message); + }); + this.isConnected = true; + } + disconnect() { + if (!this.isConnected) return; + this.port?.disconnect(); + this.isConnected = false; + } + }; + exports2.WindowServiceWorkerChannel = WindowServiceWorkerChannel; + } +}); + +// node_modules/ua-parser-js/src/main/ua-parser.js +var require_ua_parser = __commonJS({ + "node_modules/ua-parser-js/src/main/ua-parser.js"(exports2, module2) { + (function(window2, undefined2) { + "use strict"; + var LIBVERSION = "2.0.8", UA_MAX_LENGTH = 500, USER_AGENT = "user-agent", EMPTY = "", UNKNOWN = "?", TYPEOF = { + FUNCTION: "function", + OBJECT: "object", + STRING: "string", + UNDEFINED: "undefined" + }, BROWSER = "browser", CPU = "cpu", DEVICE = "device", ENGINE = "engine", OS = "os", RESULT = "result", NAME = "name", TYPE = "type", VENDOR = "vendor", VERSION = "version", ARCHITECTURE = "architecture", MAJOR = "major", MODEL = "model", CONSOLE = "console", MOBILE = "mobile", TABLET = "tablet", SMARTTV = "smarttv", WEARABLE = "wearable", XR = "xr", EMBEDDED = "embedded", INAPP = "inapp", BRANDS = "brands", FORMFACTORS = "formFactors", FULLVERLIST = "fullVersionList", PLATFORM = "platform", PLATFORMVER = "platformVersion", BITNESS = "bitness", CH = "sec-ch-ua", CH_FULL_VER_LIST = CH + "-full-version-list", CH_ARCH = CH + "-arch", CH_BITNESS = CH + "-" + BITNESS, CH_FORM_FACTORS = CH + "-form-factors", CH_MOBILE = CH + "-" + MOBILE, CH_MODEL = CH + "-" + MODEL, CH_PLATFORM = CH + "-" + PLATFORM, CH_PLATFORM_VER = CH_PLATFORM + "-version", CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS], AMAZON = "Amazon", APPLE = "Apple", ASUS = "ASUS", BLACKBERRY = "BlackBerry", GOOGLE = "Google", HUAWEI = "Huawei", LENOVO = "Lenovo", HONOR = "Honor", LG = "LG", MICROSOFT = "Microsoft", MOTOROLA = "Motorola", NVIDIA = "Nvidia", ONEPLUS = "OnePlus", OPPO = "OPPO", SAMSUNG = "Samsung", SHARP = "Sharp", SONY = "Sony", XIAOMI = "Xiaomi", ZEBRA = "Zebra", CHROME = "Chrome", CHROMIUM = "Chromium", CHROMECAST = "Chromecast", EDGE = "Edge", FIREFOX = "Firefox", OPERA = "Opera", FACEBOOK = "Facebook", SOGOU = "Sogou", PREFIX_MOBILE = "Mobile ", SUFFIX_BROWSER = " Browser", WINDOWS = "Windows"; + var isWindow = typeof window2 !== TYPEOF.UNDEFINED, NAVIGATOR = isWindow && window2.navigator ? window2.navigator : undefined2, NAVIGATOR_UADATA = NAVIGATOR && NAVIGATOR.userAgentData ? NAVIGATOR.userAgentData : undefined2; + var extend = function(defaultRgx, extensions) { + var mergedRgx = {}; + var extraRgx = extensions; + if (!isExtensions(extensions)) { + extraRgx = {}; + for (var i in extensions) { + for (var j in extensions[i]) { + extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []); + } + } + } + for (var k in defaultRgx) { + mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k]; + } + return mergedRgx; + }, enumerize = function(arr) { + var enums = {}; + for (var i = 0; i < arr.length; i++) { + enums[arr[i].toUpperCase()] = arr[i]; + } + return enums; + }, has = function(str1, str2) { + if (typeof str1 === TYPEOF.OBJECT && str1.length > 0) { + for (var i in str1) { + if (lowerize(str2) == lowerize(str1[i])) return true; + } + return false; + } + return isString(str1) ? lowerize(str2) == lowerize(str1) : false; + }, isExtensions = function(obj, deep) { + for (var prop in obj) { + return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false); + } + }, isString = function(val) { + return typeof val === TYPEOF.STRING; + }, itemListToArray = function(header) { + if (!header) return undefined2; + var arr = []; + var tokens = strip(/\\?\"/g, header).split(","); + for (var i = 0; i < tokens.length; i++) { + if (tokens[i].indexOf(";") > -1) { + var token = trim(tokens[i]).split(";v="); + arr[i] = { brand: token[0], version: token[1] }; + } else { + arr[i] = trim(tokens[i]); + } + } + return arr; + }, lowerize = function(str) { + return isString(str) ? str.toLowerCase() : str; + }, majorize = function(version) { + return isString(version) ? strip(/[^\d\.]/g, version).split(".")[0] : undefined2; + }, setProps = function(arr) { + for (var i in arr) { + if (!arr.hasOwnProperty(i)) continue; + var propName = arr[i]; + if (typeof propName == TYPEOF.OBJECT && propName.length == 2) { + this[propName[0]] = propName[1]; + } else { + this[propName] = undefined2; + } + } + return this; + }, strip = function(pattern, str) { + return isString(str) ? str.replace(pattern, EMPTY) : str; + }, stripQuotes = function(str) { + return strip(/\\?\"/g, str); + }, trim = function(str, len) { + str = strip(/^\s\s*/, String(str)); + return typeof len === TYPEOF.UNDEFINED ? str : str.substring(0, len); + }; + var rgxMapper = function(ua, arrays) { + if (!ua || !arrays) return; + var i = 0, j, k, p, q, matches, match; + while (i < arrays.length && !matches) { + var regex = arrays[i], props = arrays[i + 1]; + j = k = 0; + while (j < regex.length && !matches) { + if (!regex[j]) { + break; + } + matches = regex[j++].exec(ua); + if (!!matches) { + for (p = 0; p < props.length; p++) { + match = matches[++k]; + q = props[p]; + if (typeof q === TYPEOF.OBJECT && q.length > 0) { + if (q.length === 2) { + if (typeof q[1] == TYPEOF.FUNCTION) { + this[q[0]] = q[1].call(this, match); + } else { + this[q[0]] = q[1]; + } + } else if (q.length >= 3) { + if (typeof q[1] === TYPEOF.FUNCTION && !(q[1].exec && q[1].test)) { + if (q.length > 3) { + this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined2; + } else { + this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined2; + } + } else { + if (q.length == 3) { + this[q[0]] = match ? match.replace(q[1], q[2]) : undefined2; + } else if (q.length == 4) { + this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined2; + } else if (q.length > 4) { + this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined2; + } + } + } + } else { + this[q] = match ? match : undefined2; + } + } + } + } + i += 2; + } + }, strMapper = function(str, map) { + for (var i in map) { + if (typeof map[i] === TYPEOF.OBJECT && map[i].length > 0) { + for (var j = 0; j < map[i].length; j++) { + if (has(map[i][j], str)) { + return i === UNKNOWN ? undefined2 : i; + } + } + } else if (has(map[i], str)) { + return i === UNKNOWN ? undefined2 : i; + } + } + return map.hasOwnProperty("*") ? map["*"] : str; + }; + var windowsVersionMap = { + "ME": "4.90", + "NT 3.51": "3.51", + "NT 4.0": "4.0", + "2000": ["5.0", "5.01"], + "XP": ["5.1", "5.2"], + "Vista": "6.0", + "7": "6.1", + "8": "6.2", + "8.1": "6.3", + "10": ["6.4", "10.0"], + "NT": "" + }, formFactorsMap = { + "embedded": "Automotive", + "mobile": "Mobile", + "tablet": ["Tablet", "EInk"], + "smarttv": "TV", + "wearable": "Watch", + "xr": ["VR", "XR"], + "?": ["Desktop", "Unknown"], + "*": undefined2 + }, browserHintsMap = { + "Chrome": "Google Chrome", + "Edge": "Microsoft Edge", + "Edge WebView2": "Microsoft Edge WebView2", + "Chrome WebView": "Android WebView", + "Chrome Headless": "HeadlessChrome", + "Huawei Browser": "HuaweiBrowser", + "MIUI Browser": "Miui Browser", + "Opera Mobi": "OperaMobile", + "Yandex": "YaBrowser" + }; + var defaultRegexes = { + browser: [ + [ + // Most common regardless engine + /\b(?:crmo|crios)\/([\w\.]+)/i + // Chrome for Android/iOS + ], + [VERSION, [NAME, PREFIX_MOBILE + "Chrome"]], + [ + /webview.+edge\/([\w\.]+)/i + // Microsoft Edge + ], + [VERSION, [NAME, EDGE + " WebView"]], + [ + /edg(?:e|ios|a)?\/([\w\.]+)/i + ], + [VERSION, [NAME, "Edge"]], + [ + // Presto based + /(opera mini)\/([-\w\.]+)/i, + // Opera Mini + /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, + // Opera Mobi/Tablet + /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i + // Opera + ], + [NAME, VERSION], + [ + /opios[\/ ]+([\w\.]+)/i + // Opera mini on iphone >= 8.0 + ], + [VERSION, [NAME, OPERA + " Mini"]], + [ + /\bop(?:rg)?x\/([\w\.]+)/i + // Opera GX + ], + [VERSION, [NAME, OPERA + " GX"]], + [ + /\bopr\/([\w\.]+)/i + // Opera Webkit + ], + [VERSION, [NAME, OPERA]], + [ + // Mixed + /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i + // Baidu + ], + [VERSION, [NAME, "Baidu"]], + [ + /\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i + // Maxthon + ], + [VERSION, [NAME, "Maxthon"]], + [ + /(kindle)\/([\w\.]+)/i, + // Kindle + /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i, + // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir + // Trident based + /(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, + // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet + /(?:ms|\()(ie) ([\w\.]+)/i, + // Internet Explorer + // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon/HiBrowser + /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\/v?([-\w\.]+)/i, + // Atlas/Rekonq/Puffin/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon + /(brave)(?: chrome)?\/([\d\.]+)/i, + // Brave + /(heytap|ovi|115|surf|qwant)browser\/([\d\.]+)/i, + // HeyTap/Ovi/115/Surf + /(qwant)(?:ios|mobile)\/([\d\.]+)/i, + // Qwant + /(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i + // Ecosia/Weibo + ], + [NAME, VERSION], + [ + /quark(?:pc)?\/([-\w\.]+)/i + // Quark + ], + [VERSION, [NAME, "Quark"]], + [ + /\bddg\/([\w\.]+)/i + // DuckDuckGo + ], + [VERSION, [NAME, "DuckDuckGo"]], + [ + /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i + // UCBrowser + ], + [VERSION, [NAME, "UCBrowser"]], + [ + /microm.+\bqbcore\/([\w\.]+)/i, + // WeChat Desktop for Windows Built-in Browser + /\bqbcore\/([\w\.]+).+microm/i, + /micromessenger\/([\w\.]+)/i + // WeChat + ], + [VERSION, [NAME, "WeChat"]], + [ + /konqueror\/([\w\.]+)/i + // Konqueror + ], + [VERSION, [NAME, "Konqueror"]], + [ + /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i + // IE11 + ], + [VERSION, [NAME, "IE"]], + [ + /ya(?:search)?browser\/([\w\.]+)/i + // Yandex + ], + [VERSION, [NAME, "Yandex"]], + [ + /slbrowser\/([\w\.]+)/i + // Smart Lenovo Browser + ], + [VERSION, [NAME, "Smart " + LENOVO + SUFFIX_BROWSER]], + [ + /(avast|avg)\/([\w\.]+)/i + // Avast/AVG Secure Browser + ], + [[NAME, /(.+)/, "$1 Secure" + SUFFIX_BROWSER], VERSION], + [ + /\bfocus\/([\w\.]+)/i + // Firefox Focus + ], + [VERSION, [NAME, FIREFOX + " Focus"]], + [ + / mms\/([\w\.]+)$/i + // Opera Neon + ], + [VERSION, [NAME, OPERA + " Neon"]], + [ + / opt\/([\w\.]+)$/i + // Opera Touch + ], + [VERSION, [NAME, OPERA + " Touch"]], + [ + /coc_coc\w+\/([\w\.]+)/i + // Coc Coc Browser + ], + [VERSION, [NAME, "Coc Coc"]], + [ + /dolfin\/([\w\.]+)/i + // Dolphin + ], + [VERSION, [NAME, "Dolphin"]], + [ + /coast\/([\w\.]+)/i + // Opera Coast + ], + [VERSION, [NAME, OPERA + " Coast"]], + [ + /miuibrowser\/([\w\.]+)/i + // MIUI Browser + ], + [VERSION, [NAME, "MIUI" + SUFFIX_BROWSER]], + [ + /fxios\/([\w\.-]+)/i + // Firefox for iOS + ], + [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], + [ + /\bqihoobrowser\/?([\w\.]*)/i + // 360 + ], + [VERSION, [NAME, "360"]], + [ + /\b(qq)\/([\w\.]+)/i + // QQ + ], + [[NAME, /(.+)/, "$1Browser"], VERSION], + [ + /(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i + ], + [[NAME, /(.+)/, "$1" + SUFFIX_BROWSER], VERSION], + [ + // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser + /samsungbrowser\/([\w\.]+)/i + // Samsung Internet + ], + [VERSION, [NAME, SAMSUNG + " Internet"]], + [ + /metasr[\/ ]?([\d\.]+)/i + // Sogou Explorer + ], + [VERSION, [NAME, SOGOU + " Explorer"]], + [ + /(sogou)mo\w+\/([\d\.]+)/i + // Sogou Mobile + ], + [[NAME, SOGOU + " Mobile"], VERSION], + [ + /(electron)\/([\w\.]+) safari/i, + // Electron-based App + /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, + // Tesla + /m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i + // QQ/2345 + ], + [NAME, VERSION], + [ + /(lbbrowser|rekonq|steam(?= (clie|tenf|gameo)))/i + // LieBao Browser/Rekonq/Steam + ], + [NAME], + [ + /ome\/([\w\.]+) \w* ?(iron) saf/i, + // Iron + /ome\/([\w\.]+).+qihu (360)[es]e/i + // 360 + ], + [VERSION, NAME], + [ + // WebView + /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i + // Facebook App for iOS & Android + ], + [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], + [ + /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, + // Kakao App + /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, + // Naver InApp + /(daum)apps[\/ ]([\w\.]+)/i, + // Daum App + /safari (line)\/([\w\.]+)/i, + // Line App for iOS + /\b(line)\/([\w\.]+)\/iab/i, + // Line App for Android + /(alipay)client\/([\w\.]+)/i, + // Alipay + /(twitter)(?:and| f.+e\/([\w\.]+))/i, + // Twitter + /(bing)(?:web|sapphire)\/([\w\.]+)/i, + // Bing + /(instagram|snapchat|klarna)[\/ ]([-\w\.]+)/i + // Instagram/Snapchat/Klarna + ], + [NAME, VERSION, [TYPE, INAPP]], + [ + /\bgsa\/([\w\.]+) .*safari\//i + // Google Search Appliance on iOS + ], + [VERSION, [NAME, "GSA"], [TYPE, INAPP]], + [ + /(?:musical_ly|trill)(?:.+app_?version\/|_)([\w\.]+)/i + // TikTok + ], + [VERSION, [NAME, "TikTok"], [TYPE, INAPP]], + [ + /\[(linkedin)app\]/i + // LinkedIn App for iOS & Android + ], + [NAME, [TYPE, INAPP]], + [ + /(zalo(?:app)?)[\/\sa-z]*([\w\.-]+)/i + // Zalo + ], + [[NAME, /(.+)/, "Zalo"], VERSION, [TYPE, INAPP]], + [ + /(chromium)[\/ ]([-\w\.]+)/i + // Chromium + ], + [NAME, VERSION], + [ + /headlesschrome(?:\/([\w\.]+)| )/i + // Chrome Headless + ], + [VERSION, [NAME, CHROME + " Headless"]], + [ + /wv\).+chrome\/([\w\.]+).+edgw\//i + // Edge WebView2 + ], + [VERSION, [NAME, EDGE + " WebView2"]], + [ + / wv\).+(chrome)\/([\w\.]+)/i + // Chrome WebView + ], + [[NAME, CHROME + " WebView"], VERSION], + [ + /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i + // Android Browser + ], + [VERSION, [NAME, "Android" + SUFFIX_BROWSER]], + [ + /chrome\/([\w\.]+) mobile/i + // Chrome Mobile + ], + [VERSION, [NAME, PREFIX_MOBILE + "Chrome"]], + [ + /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i + // Chrome/OmniWeb/Arora/Tizen/Nokia + ], + [NAME, VERSION], + [ + /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i + // Safari Mobile + ], + [VERSION, [NAME, PREFIX_MOBILE + "Safari"]], + [ + /iphone .*mobile(?:\/\w+ | ?)safari/i + ], + [[NAME, PREFIX_MOBILE + "Safari"]], + [ + /version\/([\w\.\,]+) .*(safari)/i + // Safari + ], + [VERSION, NAME], + [ + /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i + // Safari < 3.0 + ], + [NAME, [VERSION, "1"]], + [ + /(webkit|khtml)\/([\w\.]+)/i + ], + [NAME, VERSION], + [ + // Gecko based + /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i + // Firefox Mobile + ], + [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], + [ + /(navigator|netscape\d?)\/([-\w\.]+)/i + // Netscape + ], + [[NAME, "Netscape"], VERSION], + [ + /(wolvic|librewolf)\/([\w\.]+)/i + // Wolvic/LibreWolf + ], + [NAME, VERSION], + [ + /mobile vr; rv:([\w\.]+)\).+firefox/i + // Firefox Reality + ], + [VERSION, [NAME, FIREFOX + " Reality"]], + [ + /ekiohf.+(flow)\/([\w\.]+)/i, + // Flow + /(swiftfox)/i, + // Swiftfox + /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i, + // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror + /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\/([-\w\.]+)$/i, + // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix + /(firefox)\/([\w\.]+)/i, + // Other Firefox-based + /(mozilla)\/([\w\.]+(?= .+rv\:.+gecko\/\d+)|[0-4][\w\.]+(?!.+compatible))/i, + // Mozilla + // Other + /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, + // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird + /\b(links) \(([\w\.]+)/i + // Links + ], + [NAME, [VERSION, /_/g, "."]], + [ + /(cobalt)\/([\w\.]+)/i + // Cobalt + ], + [NAME, [VERSION, /[^\d\.]+./, EMPTY]] + ], + cpu: [ + [ + /\b((amd|x|x86[-_]?|wow|win)64)\b/i + // AMD64 (x64) + ], + [[ARCHITECTURE, "amd64"]], + [ + /(ia32(?=;))/i, + // IA32 (quicktime) + /\b((i[346]|x)86)(pc)?\b/i + // IA32 (x86) + ], + [[ARCHITECTURE, "ia32"]], + [ + /\b(aarch64|arm(v?[89]e?l?|_?64))\b/i + // ARM64 + ], + [[ARCHITECTURE, "arm64"]], + [ + /\b(arm(v[67])?ht?n?[fl]p?)\b/i + // ARMHF + ], + [[ARCHITECTURE, "armhf"]], + [ + // PocketPC mistakenly identified as PowerPC + /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i + ], + [[ARCHITECTURE, "arm"]], + [ + / sun4\w[;\)]/i + // SPARC + ], + [[ARCHITECTURE, "sparc"]], + [ + // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC + /\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i, + /((ppc|powerpc)(64)?)( mac|;|\))/i, + // PowerPC + /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i + // Alpha + ], + [[ARCHITECTURE, /ower/, EMPTY, lowerize]], + [ + /mc680.0/i + ], + [[ARCHITECTURE, "68k"]], + [ + /winnt.+\[axp/i + ], + [[ARCHITECTURE, "alpha"]] + ], + device: [ + [ + ////////////////////////// + // MOBILES & TABLETS + ///////////////////////// + // Samsung + /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i + ], + [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], + [ + /\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, + /samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i, + /sec-(sgh\w+)/i + ], + [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], + [ + // Apple + /(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i + // iPod/iPhone + ], + [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], + [ + /\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i, + // iPad + /\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i + ], + [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], + [ + /(macintosh);/i + ], + [MODEL, [VENDOR, APPLE]], + [ + // Sharp + /\b(sh-?[altvz]?\d\d[a-ekm]?)/i + ], + [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], + [ + // Honor + /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i + ], + [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], + [ + /honor([-\w ]+)[;\)]/i + ], + [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], + [ + // Huawei + /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i + ], + [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], + [ + /(?:huawei) ?([-\w ]+)[;\)]/i, + /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i + ], + [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], + [ + // Xiaomi + /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i, + /\b(?:xiao)?((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i + // Mi Pad tablets + ], + [[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, TABLET]], + [ + /\b; (\w+) build\/hm\1/i, + // Xiaomi Hongmi 'numeric' models + /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, + // Xiaomi Hongmi + // Xiaomi Redmi / POCO / Black Shark / Qin + /oid[^\)]+; (redmi[\-_ ]?(?:note|k)?[\w_ ]+|m?[12]\d[01]\d\w{3,6}|poco[\w ]+|(shark )?\w{3}-[ah]0|qin ?[1-3](s\+|ultra| pro)?)( bui|; wv|\))/i, + // Xiaomi Mi + /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\d{0,2}\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\))/i, + / ([\w ]+) miui\/v?\d/i + ], + [[MODEL, /_/g, " "], [VENDOR, XIAOMI], [TYPE, MOBILE]], + [ + // OnePlus + /droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-l]\w[1m]10)\b/i, + /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i + ], + [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], + [ + // OPPO + /; (\w+) bui.+ oppo/i, + /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i + ], + [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], + [ + /\b(opd2(\d{3}a?))(?: bui|\))/i + ], + [MODEL, [VENDOR, strMapper, { "OnePlus": ["203", "304", "403", "404", "413", "415"], "*": OPPO }], [TYPE, TABLET]], + [ + // BLU + /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i + // Vivo series + ], + [MODEL, [VENDOR, "BLU"], [TYPE, MOBILE]], + [ + // Vivo + /; vivo (\w+)(?: bui|\))/i, + /\b(v[12]\d{3}\w?[at])(?: bui|;)/i + ], + [MODEL, [VENDOR, "Vivo"], [TYPE, MOBILE]], + [ + // Realme + /\b(rmx[1-3]\d{3})(?: bui|;|\))/i + ], + [MODEL, [VENDOR, "Realme"], [TYPE, MOBILE]], + [ + // Lenovo + /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i, + /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i + ], + [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], + [ + /lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i + ], + [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], + [ + // Motorola + /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, + /\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i, + /((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i + ], + [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], + [ + /\b(mz60\d|xoom[2 ]{0,2}) build\//i + ], + [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], + [ + // LG + /\b(?:lg)?([vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i + ], + [MODEL, [VENDOR, LG], [TYPE, TABLET]], + [ + /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, + /\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i, + /\blg-?([\d\w]+) bui/i + ], + [MODEL, [VENDOR, LG], [TYPE, MOBILE]], + [ + // Nokia + /(nokia) (t[12][01])/i + ], + [VENDOR, MODEL, [TYPE, TABLET]], + [ + /(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i, + /nokia[-_ ]?(([-\w\. ]*?))( bui|\)|;|\/)/i + ], + [[MODEL, /_/g, " "], [TYPE, MOBILE], [VENDOR, "Nokia"]], + [ + // Google + /(pixel (c|tablet))\b/i + // Google Pixel C/Tablet + ], + [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], + [ + // Google Pixel + /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i + ], + [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], + [ + /(google) (pixelbook( go)?)/i + ], + [VENDOR, MODEL], + [ + // Sony + /droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i + ], + [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], + [ + /sony tablet [ps]/i, + /\b(?:sony)?sgp\w+(?: bui|\))/i + ], + [[MODEL, "Xperia Tablet"], [VENDOR, SONY], [TYPE, TABLET]], + [ + // Amazon + /(alexa)webm/i, + /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i, + // Kindle Fire without Silk / Echo Show + /(kf[a-z]+)( bui|\)).+silk\//i + // Kindle Fire HD + ], + [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], + [ + /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i + // Fire Phone + ], + [[MODEL, /(.+)/g, "Fire Phone $1"], [VENDOR, AMAZON], [TYPE, MOBILE]], + [ + // BlackBerry + /(playbook);[-\w\),; ]+(rim)/i + // BlackBerry PlayBook + ], + [MODEL, VENDOR, [TYPE, TABLET]], + [ + /\b((?:bb[a-f]|st[hv])100-\d)/i, + /(?:blackberry|\(bb10;) (\w+)/i + ], + [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], + [ + // Asus + /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i + ], + [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], + [ + / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i + ], + [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], + [ + // HTC + /(nexus 9)/i + // HTC Nexus 9 + ], + [MODEL, [VENDOR, "HTC"], [TYPE, TABLET]], + [ + /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, + // HTC + // ZTE + /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, + /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i + // Alcatel/GeeksPhone/Nexian/Panasonic/Sony + ], + [VENDOR, [MODEL, /_/g, " "], [TYPE, MOBILE]], + [ + // TCL + /tcl (xess p17aa)/i, + /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i + ], + [MODEL, [VENDOR, "TCL"], [TYPE, TABLET]], + [ + /droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i + ], + [MODEL, [VENDOR, "TCL"], [TYPE, MOBILE]], + [ + // itel + /(itel) ((\w+))/i + ], + [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { "tablet": ["p10001l", "w7001"], "*": "mobile" }]], + [ + // Acer + /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i + ], + [MODEL, [VENDOR, "Acer"], [TYPE, TABLET]], + [ + // Meizu + /droid.+; (m[1-5] note) bui/i, + /\bmz-([-\w]{2,})/i + ], + [MODEL, [VENDOR, "Meizu"], [TYPE, MOBILE]], + [ + // Ulefone + /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i + ], + [MODEL, [VENDOR, "Ulefone"], [TYPE, MOBILE]], + [ + // Energizer + /; (energy ?\w+)(?: bui|\))/i, + /; energizer ([\w ]+)(?: bui|\))/i + ], + [MODEL, [VENDOR, "Energizer"], [TYPE, MOBILE]], + [ + // Cat + /; cat (b35);/i, + /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i + ], + [MODEL, [VENDOR, "Cat"], [TYPE, MOBILE]], + [ + // Smartfren + /((?:new )?andromax[\w- ]+)(?: bui|\))/i + ], + [MODEL, [VENDOR, "Smartfren"], [TYPE, MOBILE]], + [ + // Nothing + /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i + ], + [MODEL, [VENDOR, "Nothing"], [TYPE, MOBILE]], + [ + // Archos + /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i, + /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i + ], + [MODEL, [VENDOR, "Archos"], [TYPE, TABLET]], + [ + /archos ([\w ]+)( b|\))/i, + /; (ac[3-6]\d\w{2,8})( b|\))/i + ], + [MODEL, [VENDOR, "Archos"], [TYPE, MOBILE]], + [ + // HMD + /; (n159v)/i + ], + [MODEL, [VENDOR, "HMD"], [TYPE, MOBILE]], + [ + // MIXED + /(imo) (tab \w+)/i, + // IMO + /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i + // Infinix XPad / Tecno + ], + [VENDOR, MODEL, [TYPE, TABLET]], + [ + /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i, + // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan + // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko + /; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, + /(hp) ([\w ]+\w)/i, + // HP iPAQ + /(microsoft); (lumia[\w ]+)/i, + // Microsoft Lumia + /(oppo) ?([\w ]+) bui/i, + // OPPO + /(hisense) ([ehv][\w ]+)\)/i, + // Hisense + /droid[^;]+; (philips)[_ ]([sv-x][\d]{3,4}[xz]?)/i + // Philips + ], + [VENDOR, MODEL, [TYPE, MOBILE]], + [ + /(kobo)\s(ereader|touch)/i, + // Kobo + /(hp).+(touchpad(?!.+tablet)|tablet)/i, + // HP TouchPad + /(kindle)\/([\w\.]+)/i + // Kindle + ], + [VENDOR, MODEL, [TYPE, TABLET]], + [ + /(surface duo)/i + // Surface Duo + ], + [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], + [ + /droid [\d\.]+; (fp\du?)(?: b|\))/i + // Fairphone + ], + [MODEL, [VENDOR, "Fairphone"], [TYPE, MOBILE]], + [ + /((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i + // Nvidia Tablets + ], + [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], + [ + /(sprint) (\w+)/i + // Sprint Phones + ], + [VENDOR, MODEL, [TYPE, MOBILE]], + [ + /(kin\.[onetw]{3})/i + // Microsoft Kin + ], + [[MODEL, /\./g, " "], [VENDOR, MICROSOFT], [TYPE, MOBILE]], + [ + /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i + // Zebra + ], + [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], + [ + /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i + ], + [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], + [ + /////////////////// + // SMARTTVS + /////////////////// + /(philips)[\w ]+tv/i, + // Philips + /smart-tv.+(samsung)/i + // Samsung + ], + [VENDOR, [TYPE, SMARTTV]], + [ + /hbbtv.+maple;(\d+)/i + ], + [[MODEL, /^/, "SmartTV"], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], + [ + /(vizio)(?: |.+model\/)(\w+-\w+)/i, + // Vizio + /tcast.+(lg)e?. ([-\w]+)/i + // LG SmartTV + ], + [VENDOR, MODEL, [TYPE, SMARTTV]], + [ + /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i + ], + [[VENDOR, LG], [TYPE, SMARTTV]], + [ + /(apple) ?tv/i + // Apple TV + ], + [VENDOR, [MODEL, APPLE + " TV"], [TYPE, SMARTTV]], + [ + /crkey.*devicetype\/chromecast/i + // Google Chromecast Third Generation + ], + [[MODEL, CHROMECAST + " Third Generation"], [VENDOR, GOOGLE], [TYPE, SMARTTV]], + [ + /crkey.*devicetype\/([^/]*)/i + // Google Chromecast with specific device type + ], + [[MODEL, /^/, "Chromecast "], [VENDOR, GOOGLE], [TYPE, SMARTTV]], + [ + /fuchsia.*crkey/i + // Google Chromecast Nest Hub + ], + [[MODEL, CHROMECAST + " Nest Hub"], [VENDOR, GOOGLE], [TYPE, SMARTTV]], + [ + /crkey/i + // Google Chromecast, Linux-based or unknown + ], + [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], + [ + /(portaltv)/i + // Facebook Portal TV + ], + [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], + [ + /droid.+aft(\w+)( bui|\))/i + // Fire TV + ], + [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], + [ + /(shield \w+ tv)/i + // Nvidia Shield TV + ], + [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], + [ + /\(dtv[\);].+(aquos)/i, + /(aquos-tv[\w ]+)\)/i + // Sharp + ], + [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]], + [ + /(bravia[\w ]+)( bui|\))/i + // Sony + ], + [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], + [ + /(mi(tv|box)-?\w+) bui/i + // Xiaomi + ], + [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], + [ + /Hbbtv.*(technisat) (.*);/i + // TechniSAT + ], + [VENDOR, MODEL, [TYPE, SMARTTV]], + [ + /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, + // Roku + /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i + // HbbTV devices + ], + [[VENDOR, /.+\/(\w+)/, "$1", strMapper, { "LG": "lge" }], [MODEL, trim], [TYPE, SMARTTV]], + [ + /////////////////// + // CONSOLES + /////////////////// + /(playstation \w+)/i + // Playstation + ], + [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], + [ + /\b(xbox(?: one)?(?!; xbox))[\); ]/i + // Microsoft Xbox + ], + [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], + [ + /(ouya)/i, + // Ouya + /(nintendo) (\w+)/i, + // Nintendo + /(retroid) (pocket ([^\)]+))/i, + // Retroid Pocket + /(valve).+(steam deck)/i, + /droid.+; ((shield|rgcube|gr0006))( bui|\))/i + // Nvidia Portable/Anbernic/Logitech + ], + [[VENDOR, strMapper, { "Nvidia": "Shield", "Anbernic": "RGCUBE", "Logitech": "GR0006" }], MODEL, [TYPE, CONSOLE]], + [ + /////////////////// + // WEARABLES + /////////////////// + /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i + // Samsung Galaxy Watch + ], + [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], + [ + /((pebble))app/i, + // Pebble + /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\w ]*)( bui|\))/i + // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch + ], + [VENDOR, MODEL, [TYPE, WEARABLE]], + [ + /(ow(?:19|20)?we?[1-3]{1,3})/i + // Oppo Watch + ], + [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], + [ + /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i + // Apple Watch + ], + [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], + [ + /(opwwe\d{3})/i + // OnePlus Watch + ], + [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], + [ + /(moto 360)/i + // Motorola 360 + ], + [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], + [ + /(smartwatch 3)/i + // Sony SmartWatch + ], + [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], + [ + /(g watch r)/i + // LG G Watch R + ], + [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], + [ + /droid.+; (wt63?0{2,3})\)/i + ], + [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], + [ + /////////////////// + // XR + /////////////////// + /droid.+; (glass) \d/i + // Google Glass + ], + [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], + [ + /(pico) ([\w ]+) os\d/i + // Pico + ], + [VENDOR, MODEL, [TYPE, XR]], + [ + /(quest( \d| pro)?s?).+vr/i + // Meta Quest + ], + [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], + [ + /mobile vr; rv.+firefox/i + // Unidentifiable VR device using Firefox Reality / Wolvic + ], + [[TYPE, XR]], + [ + /////////////////// + // EMBEDDED + /////////////////// + /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i + // Tesla + ], + [VENDOR, [TYPE, EMBEDDED]], + [ + /(aeobc)\b/i + // Echo Dot + ], + [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], + [ + /(homepod).+mac os/i + // Apple HomePod + ], + [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], + [ + /windows iot/i + // Unidentifiable embedded device using Windows IoT + ], + [[TYPE, EMBEDDED]], + [ + //////////////////// + // MIXED (GENERIC) + /////////////////// + /droid.+; ([\w- ]+) (4k|android|smart|google)[- ]?tv/i + // Unidentifiable SmartTV + ], + [MODEL, [TYPE, SMARTTV]], + [ + /\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\w ]+safari)\b/i + ], + [[TYPE, SMARTTV]], + [ + /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew|; hmsc).+?(mobile|vr|\d) safari/i + ], + [MODEL, [TYPE, strMapper, { "mobile": "Mobile", "xr": "VR", "*": TABLET }]], + [ + /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i + // Unidentifiable Tablet + ], + [[TYPE, TABLET]], + [ + /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i + // Unidentifiable Mobile + ], + [[TYPE, MOBILE]], + [ + /droid .+?; ([\w\. -]+)( bui|\))/i + // Generic Android Device + ], + [MODEL, [VENDOR, "Generic"]] + ], + engine: [ + [ + /windows.+ edge\/([\w\.]+)/i + // EdgeHTML + ], + [VERSION, [NAME, EDGE + "HTML"]], + [ + /(arkweb)\/([\w\.]+)/i + // ArkWeb + ], + [NAME, VERSION], + [ + /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i + // Blink + ], + [VERSION, [NAME, "Blink"]], + [ + /(presto)\/([\w\.]+)/i, + // Presto + /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i, + // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo + /ekioh(flow)\/([\w\.]+)/i, + // Flow + /(khtml|tasman|links|dillo)[\/ ]\(?([\w\.]+)/i, + // KHTML/Tasman/Links/Dillo + /(icab)[\/ ]([23]\.[\d\.]+)/i, + // iCab + /\b(libweb)/i + // LibWeb + ], + [NAME, VERSION], + [ + /ladybird\//i + ], + [[NAME, "LibWeb"]], + [ + /rv\:([\w\.]{1,9})\b.+(gecko)/i + // Gecko + ], + [VERSION, NAME] + ], + os: [ + [ + // Windows + /(windows nt) (6\.[23]); arm/i + // Windows RT + ], + [[NAME, /N/, "R"], [VERSION, strMapper, windowsVersionMap]], + [ + /(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i, + // Windows IoT/Mobile/Phone + // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11 + /(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i + ], + [NAME, VERSION], + [ + /windows nt ?([\d\.\)]*)(?!.+xbox)/i, + /\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i + ], + [[VERSION, /(;|\))/g, "", strMapper, windowsVersionMap], [NAME, WINDOWS]], + [ + /(windows ce)\/?([\d\.]*)/i + // Windows CE + ], + [NAME, VERSION], + [ + // iOS/macOS + /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i, + // iOS + /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\/ ]([\w\.]+)/i, + /\btvos ?([\w\.]+)/i, + /cfnetwork\/.+darwin/i + ], + [[VERSION, /_/g, "."], [NAME, "iOS"]], + [ + /(mac os x) ?([\w\. ]*)/i, + /(macintosh|mac_powerpc\b)(?!.+(haiku|morphos))/i + // Mac OS + ], + [[NAME, "macOS"], [VERSION, /_/g, "."]], + [ + // Google Chromecast + /android ([\d\.]+).*crkey/i + // Google Chromecast, Android-based + ], + [VERSION, [NAME, CHROMECAST + " Android"]], + [ + /fuchsia.*crkey\/([\d\.]+)/i + // Google Chromecast, Fuchsia-based + ], + [VERSION, [NAME, CHROMECAST + " Fuchsia"]], + [ + /crkey\/([\d\.]+).*devicetype\/smartspeaker/i + // Google Chromecast, Linux-based Smart Speaker + ], + [VERSION, [NAME, CHROMECAST + " SmartSpeaker"]], + [ + /linux.*crkey\/([\d\.]+)/i + // Google Chromecast, Legacy Linux-based + ], + [VERSION, [NAME, CHROMECAST + " Linux"]], + [ + /crkey\/([\d\.]+)/i + // Google Chromecast, unknown + ], + [VERSION, [NAME, CHROMECAST]], + [ + // Mobile OSes + /droid ([\w\.]+)\b.+(android[- ]x86)/i + // Android-x86 + ], + [VERSION, NAME], + [ + /(ubuntu) ([\w\.]+) like android/i + // Ubuntu Touch + ], + [[NAME, /(.+)/, "$1 Touch"], VERSION], + [ + /(harmonyos)[\/ ]?([\d\.]*)/i, + // HarmonyOS + // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen + /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\w*[-\/\.; ]?([\d\.]*)/i + ], + [NAME, VERSION], + [ + /\(bb(10);/i + // BlackBerry 10 + ], + [VERSION, [NAME, BLACKBERRY]], + [ + /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i + // Symbian + ], + [VERSION, [NAME, "Symbian"]], + [ + /mozilla\/[\d\.]+ \((?:mobile[;\w ]*|tablet|tv|[^\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\w\.]+)\).+gecko\//i + // Firefox OS + ], + [VERSION, [NAME, FIREFOX + " OS"]], + [ + /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i, + // WebOS + /webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i + ], + [VERSION, [NAME, "webOS"]], + [ + /web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i + // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine + ], + [[VERSION, strMapper, { "25": "120", "24": "108", "23": "94", "22": "87", "6": "79", "5": "68", "4": "53", "3": "38", "2": "538", "1": "537", "*": "TV" }], [NAME, "webOS"]], + [ + /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i + // watchOS + ], + [VERSION, [NAME, "watchOS"]], + [ + // Google ChromeOS + /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i + // Chromium OS + ], + [[NAME, "Chrome OS"], VERSION], + [ + // Smart TVs + /(netrange)mmh/i, + // Netrange + /(nettv)\/(\d+\.[\w\.]+)/i, + // NetTV + // Console + /(nintendo|playstation) (\w+)/i, + // Nintendo/Playstation + /(xbox); +xbox ([^\);]+)/i, + // Microsoft Xbox (360, One, X, S, Series X, Series S) + /(pico) .+os([\w\.]+)/i, + // Pico + // Other + /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, + // Joli/Palm + /linux.+(mint)[\/\(\) ]?([\w\.]*)/i, + // Mint + /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i, + // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch + /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, + // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix + /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, + // Solaris + /\b(aix)[; ]([1-9\.]{0,4})/i, + // AIX + /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i, + // Hurd/Linux/MorphOS + /(gnu) ?([\w\.]*)/i, + // GNU + /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, + // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly + /(haiku) ?(r\d)?/i + // Haiku + ], + [NAME, VERSION], + [ + /(sunos) ?([\d\.]*)/i + // Solaris + ], + [[NAME, "Solaris"], VERSION], + [ + /\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i, + // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS + /(unix) ?([\w\.]*)/i + // UNIX + ], + [NAME, VERSION] + ] + }; + var defaultProps = function() { + var props = { init: {}, isIgnore: {}, isIgnoreRgx: {}, toString: {} }; + setProps.call(props.init, [ + [BROWSER, [NAME, VERSION, MAJOR, TYPE]], + [CPU, [ARCHITECTURE]], + [DEVICE, [TYPE, MODEL, VENDOR]], + [ENGINE, [NAME, VERSION]], + [OS, [NAME, VERSION]] + ]); + setProps.call(props.isIgnore, [ + [BROWSER, [VERSION, MAJOR]], + [ENGINE, [VERSION]], + [OS, [VERSION]] + ]); + setProps.call(props.isIgnoreRgx, [ + [BROWSER, / ?browser$/i], + [OS, / ?os$/i] + ]); + setProps.call(props.toString, [ + [BROWSER, [NAME, VERSION]], + [CPU, [ARCHITECTURE]], + [DEVICE, [VENDOR, MODEL]], + [ENGINE, [NAME, VERSION]], + [OS, [NAME, VERSION]] + ]); + return props; + }(); + var createIData = function(item, itemType) { + var init_props = defaultProps.init[itemType], is_ignoreProps = defaultProps.isIgnore[itemType] || 0, is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0, toString_props = defaultProps.toString[itemType] || 0; + function IData() { + setProps.call(this, init_props); + } + IData.prototype.getItem = function() { + return item; + }; + IData.prototype.withClientHints = function() { + if (!NAVIGATOR_UADATA) { + return item.parseCH().get(); + } + return NAVIGATOR_UADATA.getHighEntropyValues(CH_ALL_VALUES).then(function(res) { + return item.setCH(new UACHData(res, false)).parseCH().get(); + }); + }; + IData.prototype.withFeatureCheck = function() { + return item.detectFeature().get(); + }; + if (itemType != RESULT) { + IData.prototype.is = function(strToCheck) { + var is = false; + for (var i in this) { + if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) { + is = true; + if (strToCheck != TYPEOF.UNDEFINED) break; + } else if (strToCheck == TYPEOF.UNDEFINED && is) { + is = !is; + break; + } + } + return is; + }; + IData.prototype.toString = function() { + var str = EMPTY; + for (var i in toString_props) { + if (typeof this[toString_props[i]] !== TYPEOF.UNDEFINED) { + str += (str ? " " : EMPTY) + this[toString_props[i]]; + } + } + return str || TYPEOF.UNDEFINED; + }; + } + IData.prototype.then = function(cb) { + var that = this; + var IDataResolve = function() { + for (var prop in that) { + if (that.hasOwnProperty(prop)) { + this[prop] = that[prop]; + } + } + }; + IDataResolve.prototype = { + is: IData.prototype.is, + toString: IData.prototype.toString, + withClientHints: IData.prototype.withClientHints, + withFeatureCheck: IData.prototype.withFeatureCheck + }; + var resolveData = new IDataResolve(); + cb(resolveData); + return resolveData; + }; + return new IData(); + }; + function UACHData(uach, isHttpUACH) { + uach = uach || {}; + setProps.call(this, CH_ALL_VALUES); + if (isHttpUACH) { + setProps.call(this, [ + [BRANDS, itemListToArray(uach[CH])], + [FULLVERLIST, itemListToArray(uach[CH_FULL_VER_LIST])], + [MOBILE, /\?1/.test(uach[CH_MOBILE])], + [MODEL, stripQuotes(uach[CH_MODEL])], + [PLATFORM, stripQuotes(uach[CH_PLATFORM])], + [PLATFORMVER, stripQuotes(uach[CH_PLATFORM_VER])], + [ARCHITECTURE, stripQuotes(uach[CH_ARCH])], + [FORMFACTORS, itemListToArray(uach[CH_FORM_FACTORS])], + [BITNESS, stripQuotes(uach[CH_BITNESS])] + ]); + } else { + for (var prop in uach) { + if (this.hasOwnProperty(prop) && typeof uach[prop] !== TYPEOF.UNDEFINED) this[prop] = uach[prop]; + } + } + } + function UAItem(itemType, ua, rgxMap, uaCH) { + setProps.call(this, [ + ["itemType", itemType], + ["ua", ua], + ["uaCH", uaCH], + ["rgxMap", rgxMap], + ["data", createIData(this, itemType)] + ]); + return this; + } + UAItem.prototype.get = function(prop) { + if (!prop) return this.data; + return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined2; + }; + UAItem.prototype.set = function(prop, val) { + this.data[prop] = val; + return this; + }; + UAItem.prototype.setCH = function(ch) { + this.uaCH = ch; + return this; + }; + UAItem.prototype.detectFeature = function() { + if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) { + switch (this.itemType) { + case BROWSER: + if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == TYPEOF.FUNCTION) { + this.set(NAME, "Brave"); + } + break; + case DEVICE: + if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) { + this.set(TYPE, MOBILE); + } + if (this.get(MODEL) == "Macintosh" && NAVIGATOR && typeof NAVIGATOR.standalone !== TYPEOF.UNDEFINED && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) { + this.set(MODEL, "iPad").set(TYPE, TABLET); + } + break; + case OS: + if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) { + this.set(NAME, NAVIGATOR_UADATA[PLATFORM]); + } + break; + case RESULT: + var data = this.data; + var detect = function(itemType) { + return data[itemType].getItem().detectFeature().get(); + }; + this.set(BROWSER, detect(BROWSER)).set(CPU, detect(CPU)).set(DEVICE, detect(DEVICE)).set(ENGINE, detect(ENGINE)).set(OS, detect(OS)); + } + } + return this; + }; + UAItem.prototype.parseUA = function() { + if (this.itemType != RESULT) { + rgxMapper.call(this.data, this.ua, this.rgxMap); + } + switch (this.itemType) { + case BROWSER: + this.set(MAJOR, majorize(this.get(VERSION))); + break; + case OS: + if (this.get(NAME) == "iOS" && this.get(VERSION) == "18.6") { + var realVersion = /\) Version\/([\d\.]+)/.exec(this.ua); + if (realVersion && parseInt(realVersion[1].substring(0, 2), 10) >= 26) { + this.set(VERSION, realVersion[1]); + } + } + break; + } + return this; + }; + UAItem.prototype.parseCH = function() { + var uaCH = this.uaCH, rgxMap = this.rgxMap; + switch (this.itemType) { + case BROWSER: + case ENGINE: + var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName; + if (brands) { + for (var i = 0; i < brands.length; i++) { + var brandName = brands[i].brand || brands[i], brandVersion = brands[i].version; + if (this.itemType == BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || /Chrom/.test(prevName) && brandName != CHROMIUM || prevName == EDGE && /WebView2/.test(brandName))) { + brandName = strMapper(brandName, browserHintsMap); + prevName = this.get(NAME); + if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) { + this.set(NAME, brandName).set(VERSION, brandVersion).set(MAJOR, majorize(brandVersion)); + } + prevName = brandName; + } + if (this.itemType == ENGINE && brandName == CHROMIUM) { + this.set(VERSION, brandVersion); + } + } + } + break; + case CPU: + var archName = uaCH[ARCHITECTURE]; + if (archName) { + if (archName && uaCH[BITNESS] == "64") archName += "64"; + rgxMapper.call(this.data, archName + ";", rgxMap); + } + break; + case DEVICE: + if (uaCH[MOBILE]) { + this.set(TYPE, MOBILE); + } + if (uaCH[MODEL]) { + this.set(MODEL, uaCH[MODEL]); + if (!this.get(TYPE) || !this.get(VENDOR)) { + var reParse = {}; + rgxMapper.call(reParse, "droid 9; " + uaCH[MODEL] + ")", rgxMap); + if (!this.get(TYPE) && !!reParse.type) { + this.set(TYPE, reParse.type); + } + if (!this.get(VENDOR) && !!reParse.vendor) { + this.set(VENDOR, reParse.vendor); + } + } + } + if (uaCH[FORMFACTORS]) { + var ff; + if (typeof uaCH[FORMFACTORS] !== "string") { + var idx = 0; + while (!ff && idx < uaCH[FORMFACTORS].length) { + ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap); + } + } else { + ff = strMapper(uaCH[FORMFACTORS], formFactorsMap); + } + this.set(TYPE, ff); + } + break; + case OS: + var osName = uaCH[PLATFORM]; + if (osName) { + var osVersion = uaCH[PLATFORMVER]; + if (osName == WINDOWS) osVersion = parseInt(majorize(osVersion), 10) >= 13 ? "11" : "10"; + this.set(NAME, osName).set(VERSION, osVersion); + } + if (this.get(NAME) == WINDOWS && uaCH[MODEL] == "Xbox") { + this.set(NAME, "Xbox").set(VERSION, undefined2); + } + break; + case RESULT: + var data = this.data; + var parse = function(itemType) { + return data[itemType].getItem().setCH(uaCH).parseCH().get(); + }; + this.set(BROWSER, parse(BROWSER)).set(CPU, parse(CPU)).set(DEVICE, parse(DEVICE)).set(ENGINE, parse(ENGINE)).set(OS, parse(OS)); + } + return this; + }; + function UAParser(ua, extensions, headers) { + if (typeof ua === TYPEOF.OBJECT) { + if (isExtensions(ua, true)) { + if (typeof extensions === TYPEOF.OBJECT) { + headers = extensions; + } + extensions = ua; + } else { + headers = ua; + extensions = undefined2; + } + ua = undefined2; + } else if (typeof ua === TYPEOF.STRING && !isExtensions(extensions, true)) { + headers = extensions; + extensions = undefined2; + } + if (headers) { + if (typeof headers.append === TYPEOF.FUNCTION) { + var kv = {}; + headers.forEach(function(v, k) { + kv[String(k).toLowerCase()] = v; + }); + headers = kv; + } else { + var normalized = {}; + for (var header in headers) { + if (headers.hasOwnProperty(header)) { + normalized[String(header).toLowerCase()] = headers[header]; + } + } + headers = normalized; + } + } + if (!(this instanceof UAParser)) { + return new UAParser(ua, extensions, headers).getResult(); + } + var userAgent = typeof ua === TYPEOF.STRING ? ua : ( + // Passed user-agent string + headers && headers[USER_AGENT] ? headers[USER_AGENT] : ( + // User-Agent from passed headers + NAVIGATOR && NAVIGATOR.userAgent ? NAVIGATOR.userAgent : ( + // navigator.userAgent + EMPTY + ) + ) + ), httpUACH = new UACHData(headers, true), regexMap = extensions ? extend(defaultRegexes, extensions) : defaultRegexes, createItemFunc = function(itemType) { + if (itemType == RESULT) { + return function() { + return new UAItem(itemType, userAgent, regexMap, httpUACH).set("ua", userAgent).set(BROWSER, this.getBrowser()).set(CPU, this.getCPU()).set(DEVICE, this.getDevice()).set(ENGINE, this.getEngine()).set(OS, this.getOS()).get(); + }; + } else { + return function() { + return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH).parseUA().get(); + }; + } + }; + setProps.call(this, [ + ["getBrowser", createItemFunc(BROWSER)], + ["getCPU", createItemFunc(CPU)], + ["getDevice", createItemFunc(DEVICE)], + ["getEngine", createItemFunc(ENGINE)], + ["getOS", createItemFunc(OS)], + ["getResult", createItemFunc(RESULT)], + ["getUA", function() { + return userAgent; + }], + ["setUA", function(ua2) { + if (isString(ua2)) userAgent = trim(ua2, UA_MAX_LENGTH); + return this; + }] + ]).setUA(userAgent); + return this; + } + UAParser.VERSION = LIBVERSION; + UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]); + UAParser.CPU = enumerize([ARCHITECTURE]); + UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); + UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); + if (typeof exports2 !== TYPEOF.UNDEFINED) { + if (typeof module2 !== TYPEOF.UNDEFINED && module2.exports) { + exports2 = module2.exports = UAParser; + } + exports2.UAParser = UAParser; + } else { + if (typeof define === TYPEOF.FUNCTION && define.amd) { + define(function() { + return UAParser; + }); + } else if (isWindow) { + window2.UAParser = UAParser; + } + } + var $ = isWindow && (window2.jQuery || window2.Zepto); + if ($ && !$.ua) { + var parser = new UAParser(); + $.ua = parser.getResult(); + $.ua.get = function() { + return parser.getUA(); + }; + $.ua.set = function(ua) { + parser.setUA(ua); + var result = parser.getResult(); + for (var prop in result) { + $.ua[prop] = result[prop]; + } + }; + } + })(typeof window === "object" ? window : exports2); + } +}); + +// node_modules/@trezor/env-utils/lib/jws.js +var require_jws = __commonJS({ + "node_modules/@trezor/env-utils/lib/jws.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.firmwareConfigPublicKey = exports2.publicKey = void 0; + exports2.publicKey = { + dev: `-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEbSUHJlr17+NywPS/w+xMkp3dSD8eWXSuAfFKwonZPe5fL63kISipJC+eJP7Mad0WxgyJoiMsZCV6BZPK2jIFdg== +-----END PUBLIC KEY-----`, + codesign: `-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAES7MbBzU/v5BsljkTM8Mz0Jsk+Nn5n2wH +o2/+MUI3TgCVdTbEHhn3HXaY7GJ6TLyWqxn+pIDY9wUUAyUqOStTUQ== +-----END PUBLIC KEY-----` + }; + exports2.firmwareConfigPublicKey = { + dev: ` +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEKjWdvv8SJm/UN2lXoEXl3ID35b/ +hsz3etxANvUgLQ4r0eEhqVUEL5l+dRMgEv4Ycvr3UEcMkSFRPoA8ktxX1A== +-----END PUBLIC KEY----- +`, + codesign: ` +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfEsFXNi5sdMxwiOYh4oRGorCM2RO +IEsfw3m+vWBrLb/r/GYWUVkVXWsZukLwPRZ8asP+7Ifd2ap7GZ2iQzWKCA== +-----END PUBLIC KEY----- +` + }; + } +}); + +// node_modules/@trezor/env-utils/lib/envUtils.js +var require_envUtils = __commonJS({ + "node_modules/@trezor/env-utils/lib/envUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.envUtils = exports2.getFirmwareReleaseJwsPublicKey = exports2.getJWSPublicKey = exports2.getEnvironment = exports2.isNative = exports2.isDesktop = exports2.isWeb = void 0; + var ua_parser_js_1 = require_ua_parser(); + var jws_1 = require_jws(); + var isWeb = () => process.env.SUITE_TYPE === "web"; + exports2.isWeb = isWeb; + var isDesktop = () => process.env.SUITE_TYPE === "desktop"; + exports2.isDesktop = isDesktop; + var isNative = () => false; + exports2.isNative = isNative; + var getEnvironment = () => { + if ((0, exports2.isWeb)()) return "web"; + return "desktop"; + }; + exports2.getEnvironment = getEnvironment; + var userAgentParser; + var getUserAgent = () => window.navigator.userAgent; + var getUserAgentParser = () => { + if (!userAgentParser) { + const ua = getUserAgent(); + userAgentParser = new ua_parser_js_1.UAParser(ua); + } + return userAgentParser; + }; + var isAndroid = () => /Android/.test(getUserAgent()); + var isChromeOs = () => /CrOS/.test(getUserAgent()); + var getBrowserVersion = () => getUserAgentParser().getBrowser().version || ""; + var getCommitHash = () => process.env.COMMITHASH || ""; + var getOsVersion = async () => { + const { + version + } = await getUserAgentParser().getOS().withClientHints(); + return version ?? ""; + }; + var getCpuArch = async () => { + const { + architecture + } = await getUserAgentParser().getCPU().withClientHints(); + return architecture ?? ""; + }; + var getSuiteVersion = () => process.env.VERSION || ""; + var getBrowserName = () => { + const browserName = getUserAgentParser().getBrowser().name?.replace(" ", ""); + return browserName?.toLowerCase() || ""; + }; + var isFirefox = () => getBrowserName() === "firefox"; + var getPlatform = () => window.navigator.platform; + var getPlatformLanguages = () => window.navigator.languages; + var getScreenWidth = () => window.screen.width; + var getScreenHeight = () => window.screen.height; + var getWindowWidth = () => window.innerWidth; + var getWindowHeight = () => window.innerHeight; + var getLocationOrigin = () => window.location.origin; + var getLocationHostname = () => window.location.hostname; + var getProcessPlatform = () => typeof process !== "undefined" ? process.platform : ""; + var isMacOs = () => { + if (getProcessPlatform() === "darwin") return true; + if (typeof window === "undefined") return false; + return getPlatform().toLowerCase().startsWith("mac"); + }; + var isWindows = () => { + if (getProcessPlatform() === "win32") return true; + if (typeof window === "undefined") return false; + return getPlatform().toLowerCase().startsWith("win"); + }; + var isIOs = () => ["iPhone", "iPad", "iPod"].includes(getPlatform()); + var isLinux = () => { + if (getProcessPlatform() === "linux") return true; + if (typeof window === "undefined") return false; + if (isAndroid() || isChromeOs()) return false; + return getPlatform().toLowerCase().startsWith("linux"); + }; + var isCodesignBuild = () => process.env.IS_CODESIGN_BUILD === "true"; + var getOsName = () => { + if (isWindows()) return "windows"; + if (isMacOs()) return "macos"; + if (isAndroid()) return "android"; + if (isChromeOs()) return "chromeos"; + if (isLinux()) return "linux"; + if (isIOs()) return "ios"; + return ""; + }; + var getOsNameWeb = () => getUserAgentParser().getOS().name?.replaceAll(" ", ""); + var getOsFamily = () => { + const osName = getUserAgentParser().getOS().name?.toLowerCase().replaceAll(" ", ""); + if (osName === "windows") { + return "Windows"; + } + if (osName === "macos") { + return "MacOS"; + } + return "Linux"; + }; + var getDeviceType = () => getUserAgentParser().getDevice().type; + var getJWSPublicKey = () => isCodesignBuild() ? jws_1.publicKey.codesign : jws_1.publicKey.dev; + exports2.getJWSPublicKey = getJWSPublicKey; + var getFirmwareReleaseJwsPublicKey = (useCodeSignKey) => useCodeSignKey ? jws_1.firmwareConfigPublicKey.codesign : jws_1.firmwareConfigPublicKey.dev; + exports2.getFirmwareReleaseJwsPublicKey = getFirmwareReleaseJwsPublicKey; + exports2.envUtils = { + isWeb: exports2.isWeb, + isDesktop: exports2.isDesktop, + isNative: exports2.isNative, + getEnvironment: exports2.getEnvironment, + getUserAgent, + isAndroid, + isChromeOs, + getOsVersion, + getCpuArch, + getBrowserName, + getBrowserVersion, + getCommitHash, + getDeviceType, + getSuiteVersion, + isFirefox, + getPlatform, + getPlatformLanguages, + getScreenWidth, + getScreenHeight, + getWindowWidth, + getWindowHeight, + getLocationOrigin, + getLocationHostname, + getProcessPlatform, + isMacOs, + isWindows, + isIOs, + isLinux, + isCodesignBuild, + getOsName, + getOsNameWeb, + getOsFamily, + getJWSPublicKey: exports2.getJWSPublicKey, + getFirmwareReleaseJwsPublicKey: exports2.getFirmwareReleaseJwsPublicKey + }; + } +}); + +// node_modules/@trezor/env-utils/lib/resolveStaticPath.js +var require_resolveStaticPath = __commonJS({ + "node_modules/@trezor/env-utils/lib/resolveStaticPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.resolveConnectPath = exports2.resolveStaticPath = void 0; + var getEnvAssetPrefix = () => typeof process !== "undefined" ? process.env?.ASSET_PREFIX : void 0; + var getDefaultPrefix = () => getEnvAssetPrefix() ?? ""; + var resolveStaticPath = (path2, pathPrefix = getDefaultPrefix()) => `${pathPrefix}/static/${path2.replace(/^\/+/, "")}`; + exports2.resolveStaticPath = resolveStaticPath; + var resolveConnectPath = (path2, pathPrefix = getDefaultPrefix()) => `${pathPrefix}/${path2.replace(/^\/+/, "")}`; + exports2.resolveConnectPath = resolveConnectPath; + } +}); + +// node_modules/@trezor/env-utils/lib/index.js +var require_lib4 = __commonJS({ + "node_modules/@trezor/env-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.resolveConnectPath = exports2.resolveStaticPath = exports2.getFirmwareReleaseJwsPublicKey = exports2.getJWSPublicKey = exports2.getOsFamily = exports2.getOsNameWeb = exports2.getOsName = exports2.isCodesignBuild = exports2.isLinux = exports2.isIOs = exports2.isWindows = exports2.isMacOs = exports2.getProcessPlatform = exports2.getLocationHostname = exports2.getLocationOrigin = exports2.getWindowHeight = exports2.getWindowWidth = exports2.getScreenHeight = exports2.getScreenWidth = exports2.getPlatformLanguages = exports2.getPlatform = exports2.isFirefox = exports2.getSuiteVersion = exports2.getCpuArch = exports2.getOsVersion = exports2.getDeviceType = exports2.getCommitHash = exports2.getBrowserName = exports2.getBrowserVersion = exports2.isChromeOs = exports2.isAndroid = exports2.getUserAgent = exports2.getEnvironment = exports2.isNative = exports2.isDesktop = exports2.isWeb = void 0; + var envUtils_1 = require_envUtils(); + exports2.isWeb = envUtils_1.envUtils.isWeb, exports2.isDesktop = envUtils_1.envUtils.isDesktop, exports2.isNative = envUtils_1.envUtils.isNative, exports2.getEnvironment = envUtils_1.envUtils.getEnvironment, exports2.getUserAgent = envUtils_1.envUtils.getUserAgent, exports2.isAndroid = envUtils_1.envUtils.isAndroid, exports2.isChromeOs = envUtils_1.envUtils.isChromeOs, exports2.getBrowserVersion = envUtils_1.envUtils.getBrowserVersion, exports2.getBrowserName = envUtils_1.envUtils.getBrowserName, exports2.getCommitHash = envUtils_1.envUtils.getCommitHash, exports2.getDeviceType = envUtils_1.envUtils.getDeviceType, exports2.getOsVersion = envUtils_1.envUtils.getOsVersion, exports2.getCpuArch = envUtils_1.envUtils.getCpuArch, exports2.getSuiteVersion = envUtils_1.envUtils.getSuiteVersion, exports2.isFirefox = envUtils_1.envUtils.isFirefox, exports2.getPlatform = envUtils_1.envUtils.getPlatform, exports2.getPlatformLanguages = envUtils_1.envUtils.getPlatformLanguages, exports2.getScreenWidth = envUtils_1.envUtils.getScreenWidth, exports2.getScreenHeight = envUtils_1.envUtils.getScreenHeight, exports2.getWindowWidth = envUtils_1.envUtils.getWindowWidth, exports2.getWindowHeight = envUtils_1.envUtils.getWindowHeight, exports2.getLocationOrigin = envUtils_1.envUtils.getLocationOrigin, exports2.getLocationHostname = envUtils_1.envUtils.getLocationHostname, exports2.getProcessPlatform = envUtils_1.envUtils.getProcessPlatform, exports2.isMacOs = envUtils_1.envUtils.isMacOs, exports2.isWindows = envUtils_1.envUtils.isWindows, exports2.isIOs = envUtils_1.envUtils.isIOs, exports2.isLinux = envUtils_1.envUtils.isLinux, exports2.isCodesignBuild = envUtils_1.envUtils.isCodesignBuild, exports2.getOsName = envUtils_1.envUtils.getOsName, exports2.getOsNameWeb = envUtils_1.envUtils.getOsNameWeb, exports2.getOsFamily = envUtils_1.envUtils.getOsFamily, exports2.getJWSPublicKey = envUtils_1.envUtils.getJWSPublicKey, exports2.getFirmwareReleaseJwsPublicKey = envUtils_1.envUtils.getFirmwareReleaseJwsPublicKey; + var resolveStaticPath_1 = require_resolveStaticPath(); + Object.defineProperty(exports2, "resolveStaticPath", { + enumerable: true, + get: function() { + return resolveStaticPath_1.resolveStaticPath; + } + }); + Object.defineProperty(exports2, "resolveConnectPath", { + enumerable: true, + get: function() { + return resolveStaticPath_1.resolveConnectPath; + } + }); + } +}); + +// node_modules/@trezor/connect-common/lib/systemInfo.js +var require_systemInfo = __commonJS({ + "node_modules/@trezor/connect-common/lib/systemInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getSystemInfo = exports2.getInstallerPackage = void 0; + var env_utils_1 = require_lib4(); + var getInstallerPackage = () => { + const agent = (0, env_utils_1.getUserAgent)(); + switch ((0, env_utils_1.getOsFamily)()) { + case "MacOS": + return "mac"; + case "Windows": { + const arch = agent.match(/(Win64|WOW64)/) ? "64" : "32"; + return `win${arch}`; + } + case "Linux": { + const isRpm = agent.match(/CentOS|Fedora|Mandriva|Mageia|Red Hat|Scientific|SUSE/) ? "rpm" : "deb"; + const is64x = agent.match(/Linux i[3456]86/) ? "32" : "64"; + return `${isRpm}${is64x}`; + } + default: + } + }; + exports2.getInstallerPackage = getInstallerPackage; + var getSystemInfo = (supportedBrowsers) => { + const browserName = (0, env_utils_1.getBrowserName)(); + const browserVersion = (0, env_utils_1.getBrowserVersion)(); + const supportedBrowser = browserName ? supportedBrowsers[browserName.toLowerCase()] : void 0; + const outdatedBrowser = supportedBrowser ? supportedBrowser.version > parseInt(browserVersion, 10) : false; + const mobile = (0, env_utils_1.getDeviceType)() === "mobile"; + const supportedMobile = mobile ? "usb" in navigator : true; + const supported = !!(supportedBrowser && !outdatedBrowser && supportedMobile); + return { + os: { + family: (0, env_utils_1.getOsFamily)(), + mobile + }, + browser: { + supported, + outdated: outdatedBrowser + } + }; + }; + exports2.getSystemInfo = getSystemInfo; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/release/releases.v1.json +var require_releases_v1 = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/release/releases.v1.json"(exports2, module2) { + module2.exports = { + version: 1, + timestamp: "2025-10-14T10:53:22Z", + sequence: 4, + releases: { + T1B1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t1b1/universal/t1b1-1.13.1-universal.json" + } + }, + T2B1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t2b1/universal/t2b1-2.9.1-universal.json" + } + }, + T2T1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t2t1/universal/t2t1-2.9.1-universal.json" + } + }, + T3B1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3b1/universal/t3b1-2.9.1-universal.json" + } + }, + T3T1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.9.0", + min_suite_native_version: "25.9.0" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3t1/universal/t3t1-2.9.1-universal.json" + } + }, + T3W1: { + "bitcoin-only": { + firmware_type: "bitcoin-only", + conditions: { + environment: { + min_suite_version: "25.10.2", + min_suite_native_version: "25.10.2" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json" + }, + universal: { + firmware_type: "universal", + conditions: { + environment: { + min_suite_version: "25.10.2", + min_suite_native_version: "25.10.2" + }, + rollout_probability: 100 + }, + releasePath: "firmware/t3w1/universal/t3w1-2.9.3-universal.json" + } + } + }, + intermediaries: { + T1B1: [ + { + min_firmware_version: [1, 6, 2], + min_bootloader_version: [1, 8, 0], + version: 1 + }, + { + min_firmware_version: [1, 12, 0], + min_bootloader_version: [1, 12, 0], + version: 2 + }, + { + min_firmware_version: [1, 12, 1], + min_bootloader_version: [1, 12, 1], + version: 3 + } + ] + } + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.0-bitcoinonly.json +var require_t1b1_1_10_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "f4424ece1ccb7fc0d6cad00ff840fac287a34f07", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.0-bitcoinonly.bin", + fingerprint: "20a4068c34ff6dd7d8c510350409376cf7ea744ba668fdcf16da8f1d81fed289", + changelog: "* Bootloader 1.10.0.\n* Allow decreasing the output value in RBF transactions.\n* Support long PIN of up to 50 digits.\n* Display nLockTime in human-readable form." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.1-bitcoinonly.json +var require_t1b1_1_10_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "3204fd682429eed23a82b748c05ae569c7f4481f", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.1-bitcoinonly.bin", + fingerprint: "74227362016a8763c4d5f5b06eeb7eabe5fbd7ed05798b586cc7f4bfef50d7fe", + changelog: "* Safety checks setting in T1." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.2-bitcoinonly.json +var require_t1b1_1_10_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "24bb4016388fca4b998285b95dcd408f4ed0bff6", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.2-bitcoinonly.bin", + fingerprint: "e597b6aef5a2e817f532d27b8501f99f189e432a887877bdd3498cd3a0afc431", + changelog: "* Security improvements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.3-bitcoinonly.json +var require_t1b1_1_10_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "9276b1702361f70e094286e2f89e919d8a230d5c", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.3-bitcoinonly.bin", + fingerprint: "d1143d2cba9c7dba4d57703d2b7da87859d8668472ffc651177ead6b94e89117", + changelog: "* Small code improvements" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.4-bitcoinonly.json +var require_t1b1_1_10_4_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.4-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 4], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "595b14254c1abb2be3f69e42c7932f1eca8cf1b1", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.4-bitcoinonly.bin", + fingerprint: "30d858b022e218f27854f071d568e5a696c937f1316d83b93aadcd178f3b0a38", + changelog: "* Support Taproot.\n* Show address confirmation in SignMessage." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.5-bitcoinonly.json +var require_t1b1_1_10_5_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.5-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 5], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "3f12742669bd782cac374a1750d517f4fd88c43b", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.5-bitcoinonly.bin", + fingerprint: "1d319f643fe2ba5c247b178c7f73b989ab4e43d914a60468566ee7cc5bb9dde0", + changelog: "* Small code improvements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.1-bitcoinonly.json +var require_t1b1_1_11_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 11, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "85a26d2c9593bcdf858c2d718d79951ca927a0c3", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.11.1-bitcoinonly.bin", + fingerprint: "8e17b95b5d302f203de3a8fe27959efd25e3d5140ac9b5e60412f1b3f624995d", + changelog: "* Support Electrum signatures in VerifyMessage.\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs)." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.2-bitcoinonly.json +var require_t1b1_1_11_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 11, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 11, 0], + firmware_revision: "0d87b55ba4fed7eecc72bf2a94ee473830b095e9", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.11.2-bitcoinonly.bin", + fingerprint: "7e51546f4411ecf44688c681ada72a18495fd08e91f3a0429ab91bc4415b362a", + changelog: "* Show the fee rate on the signing confirmation screen. \n* Show thousands separator when displaying large amounts \n* Fix potential security issues in recovery workflow. \n* Fix key extraction vulnerability in Cothority Collective Signing (CoSi). \n* Fix nonce bias in CoSi signing." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.12.1-bitcoinonly.json +var require_t1b1_1_12_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.12.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 12, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "1eb0eb9d91b092e571aac63db4ebff2a07fd8a1f", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.12.1-bitcoinonly.bin", + fingerprint: "985fb6a8c87f7547fb810f6c4a8331ebf19c677445810358778eb21eca78a181", + changelog: `* Fee rate shown when replacing transaction. +* Ledger Live legacy derivation path m/44'/coin_type'/0'/account is now supported. +* SLIP-0019 proofs of ownership for native SegWit implemented. +* SLIP-0025 coinjoin accounts implemented for testing purposes. +* Bech32 addresses now not converting to uppercase in QR code to increase compatibility. +* Decimals of fee rate extended to 2 digits. +* Only "sat" displayed instead of "sat BTC". +* Bootloader 1.12.1. included.` + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.0-bitcoinonly.json +var require_t1b1_1_13_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 13, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "592590cf66a9b62dfeee7e4d2afb6e01005e5b2c", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.13.0-bitcoinonly.bin", + fingerprint: "253042fb209c78e02482c645b16cc9894c19124e9c9c0c1051b3c68b6e7c700b", + changelog: "* Multisig-related changes.\n* Reworked PIN processing.\n* Allow showing XPUB using a QR code." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json +var require_t1b1_1_13_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 13, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.13.1-bitcoinonly.bin", + fingerprint: "f27095f2e08278a209567e254b9921f6e34b28a9c0fc702a268f210e23057c27", + changelog: "*" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.8.3-bitcoinonly.json +var require_t1b1_1_8_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.8.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 8, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "df0963ec48f01f3d07ffca556e21ff0070cab099", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.8.3-bitcoinonly.bin", + fingerprint: "13d6089cb935f453eaddbfe193e0ab37924a7aa66f684355a4fe5c660c18247a", + changelog: "* Small code improvements" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.0-bitcoinonly.json +var require_t1b1_1_9_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: true, + version: [1, 9, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "0b7a8449f8dd003fc415262b05102d113247d3de", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.0-bitcoinonly.bin", + fingerprint: "93a670dd20d044bf76cfce6eecd2a85918acdebe616229dbb31250fd03a33870", + changelog: "* Introduce Wipe Code\n* Introduce passphrase cache" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.1-bitcoinonly.json +var require_t1b1_1_9_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "c6b2580cd245ee924507f45e9675f857a3d78768", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.1-bitcoinonly.bin", + fingerprint: "ee743e3bd1e424ceb45a1d877a5422e7af449706f636c459cdd8bb0d4796cba5", + changelog: "* Refactor Bitcoin signing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.2-bitcoinonly.json +var require_t1b1_1_9_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "cde8f31ec2ddcb7d35e36edbcf8a71dda983a9ea", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.2-bitcoinonly.bin", + fingerprint: "2762c0ff78c96e23d1d348330e0a3cdf45d83c8fc8c2d48853b7cb602ddc19bb", + changelog: "* Adds support for multiple change outputs in outgoing transactions." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.3-bitcoinonly.json +var require_t1b1_1_9_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "0d5f00668fb3d1c093ff3c879311a91d3a7175c8", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.3-bitcoinonly.bin", + fingerprint: "76f899d60ffd9685713cb420d017565c05c43aadaf0e62b645a50a8db69afef6", + changelog: "* Improves the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\n* Fixes smaller issues in the user interface." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.4-bitcoinonly.json +var require_t1b1_1_9_4_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.4-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 4], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.4-bitcoinonly.bin", + fingerprint: "3f73dfbcfc48f66c8814f6562524d81888230e0acd1c19b52b6e8772c6c67e7f", + changelog: "* Replacement transaction signing for replace-by-fee.\n* Support for Output Descriptors export.\n* Show Ypub/Zpub correctly for multisig GetAddress.\n* Show amounts in mBTC, uBTC and sat denominations." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.0-universal.json +var require_t1b1_1_10_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "f4424ece1ccb7fc0d6cad00ff840fac287a34f07", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.0.bin", + fingerprint: "595ba3e8e887cba185e03098f9538e18164f72f9fc82445e691abcd03e5cf0a4", + changelog: "* Bootloader 1.10.0.\n* Allow decreasing the output value in RBF transactions.\n* Support long PIN of up to 50 digits.\n* Display nLockTime in human-readable form." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.1-universal.json +var require_t1b1_1_10_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "3204fd682429eed23a82b748c05ae569c7f4481f", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.1.bin", + fingerprint: "36400becf1cdddec22b8150d56ff59eef76d37fef60dc465a6f82b4858903886", + changelog: "* Safety checks setting in T1." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.2-universal.json +var require_t1b1_1_10_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "24bb4016388fca4b998285b95dcd408f4ed0bff6", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.2.bin", + fingerprint: "99707b90a504f7e402f26c3d59cbbdacbc52754cebcce79cc47be528fc889338", + changelog: "* Security improvements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.3-universal.json +var require_t1b1_1_10_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "9276b1702361f70e094286e2f89e919d8a230d5c", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.3.bin", + fingerprint: "bf0cc936a9afbf0a4ae7b727a2817fb69fba432d7230a0ff7b79b4a73b845197", + changelog: "* Remove Lisk.\n* Re-enabled Firo support.\n* Stricter protobuf field handling in Stellar." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.4-universal.json +var require_t1b1_1_10_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 4], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "595b14254c1abb2be3f69e42c7932f1eca8cf1b1", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.4.bin", + fingerprint: "74dfdfb9addb9d90fedb2c88794b7236af521d21ef0096f9080c25b597c8af86", + changelog: "* Support Taproot.\n* Show address confirmation in SignMessage.\n* Support for Ethereum EIP-1559 transactions." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.5-universal.json +var require_t1b1_1_10_5_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.5-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 10, 5], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "3f12742669bd782cac374a1750d517f4fd88c43b", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.10.5.bin", + fingerprint: "7619fcc73c43ca8a3e6aad3dc3eb6551fed05bb218340efe01a02bb96e9f346b", + changelog: "* Support for blindly signing EIP-712 data." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.1-universal.json +var require_t1b1_1_11_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 11, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 10, 0], + firmware_revision: "85a26d2c9593bcdf858c2d718d79951ca927a0c3", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.11.1.bin", + fingerprint: "f7c60d0b8c2853afd576867c6562aba5ea52bdc2ce34d0dbb8751f52867c3665", + changelog: "* Support Electrum signatures in VerifyMessage.\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\n* Zcash v5 transaction format." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.2-universal.json +var require_t1b1_1_11_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 11, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 11, 0], + firmware_revision: "0d87b55ba4fed7eecc72bf2a94ee473830b095e9", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.11.2.bin", + fingerprint: "d8b55b68dfe8a8449ce7391e841073ef5d29349638d85b750508bbef5d2de5ec", + changelog: "* Show the fee rate on the signing confirmation screen. \n* Show thousands separator when displaying large amounts \n* Fix potential security issues in recovery workflow. \n* Fix key extraction vulnerability in Cothority Collective Signing (CoSi). \n* Fix nonce bias in CoSi signing." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.12.1-universal.json +var require_t1b1_1_12_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.12.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 12, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "1eb0eb9d91b092e571aac63db4ebff2a07fd8a1f", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.12.1.bin", + fingerprint: "3c694191f5b66a65cb5bb209adbf113cb40209e644b77162ba996bb7ee8f382b", + changelog: `* Fee rate shown when replacing transaction. +* Ledger Live legacy derivation path m/44'/coin_type'/0'/account is now supported. +* SLIP-0019 proofs of ownership for native SegWit implemented. +* SLIP-0025 coinjoin accounts implemented for testing purposes. +* Bech32 addresses now not converting to uppercase in QR code to increase compatibility. +* Decimals of fee rate extended to 2 digits. +* Only "sat" displayed instead of "sat BTC". +* Bootloader 1.12.1. included. +* Stellar addresses now shown in full + as a QR code. +* Ethereum fees now wrapped to the next line when needed.` + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.0-universal.json +var require_t1b1_1_13_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 13, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "592590cf66a9b62dfeee7e4d2afb6e01005e5b2c", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.13.0.bin", + fingerprint: "356433bd9de6cb564bf7778fc5de73c56197459523358f267e9235af9e1ce46d", + changelog: "* Multisig-related changes.\n* Reworked PIN processing.\n* Allow showing XPUB using a QR code." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.1-universal.json +var require_t1b1_1_13_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 13, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 12, 0], + min_firmware_version: [1, 12, 0], + bootloader_version: [1, 12, 1], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.13.1.bin", + fingerprint: "f588657818ccf99b0046ede3f87eeaf17a0e6e6f1b7853344e18b846ca835328", + changelog: "* Clear sign ETH staking transactions on Everstake pool.\n* Use\xA0GWei\xA0when formatting large ETH amounts." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.3.6-universal.json +var require_t1b1_1_3_6_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.3.6-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 3, 6], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "36b9d80120348700264bba518a533d4f82d79cbd", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.3.6.bin", + fingerprint: "03b559a758961b2bfd4443e6c36c10025268cf033ecd376fdd7a79ff658bf511", + changelog: "* Enable advanced transactions such as ones with REPLACE-BY-FEE and CHECKLOCKTIMEVERIFY\n* Fix message signing for altcoins\n* Message verification now shows address\n* Enable GPG signing support\n* Enable Ed25519 curve (for SSH and GPG)\n* Use separate deterministic hierarchy for NIST256P1 and Ed25519 curves\n* Users using SSH already need to regenerate their keys using the new firmware!!!" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.0-universal.json +var require_t1b1_1_4_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 4, 0], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "e0e190b3dc29bcb0f6ab9699c439fe7bfbcde370", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.4.0.bin", + fingerprint: "5764715dbcf8ed88bc0ae1c2f715277f22b67f26c15e1f7543b2b44913b5c255", + changelog: "* U2F support\n* Ethereum support\n* GPG decryption support\n* Zcash support" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.1-universal.json +var require_t1b1_1_4_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 4, 1], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "ae37ea8a9a2ab96e60714451a7a9502e0ef1ffc9", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.4.1.bin", + fingerprint: "92636493f76f352213e681bbc26eb3a8844f7b8a3044214b65c3c2c10a0f788c", + changelog: "* Support for Zcash JoinSplit transactions\n* Enable device lock after 10 minutes of inactivity\n* Enable device lock by pressing left button for 2 seconds\n* Confirm dialog for U2F counter change" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.2-universal.json +var require_t1b1_1_4_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 4, 2], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "14399f100e862608c24a7e214e9ce971c4d32457", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.4.2.bin", + fingerprint: "a4b39f01bd134d01d7534821445bf779dbe6c25f0fcf7c7cb285a79b17f25e0a", + changelog: "* New Matrix-based recovery method\n* Minor Ethereum fixes (including EIP-155 replay protection)\n* Minor USB, U2F and GPG fixes" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.0-universal.json +var require_t1b1_1_5_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 5, 0], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "6b74139b4530a4687b4a317b8b08f4329704efc4", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.5.0.bin", + fingerprint: "c4eddafd29b580d8482cda68e61bdcf1740d77520ef3a603758646bbffe957ea", + changelog: "* Enable Segwit for Testnet and Litecoin\n* Enable ERC-20 tokens for Ethereum chains" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.1-universal.json +var require_t1b1_1_5_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 5, 1], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "f0d2e7a37142a6d4c7f7e45a6e4427e53123d614", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.5.1.bin", + fingerprint: "1c1fa9802cbd6a947a4f3e78f209d3efe49eb4abbacb101bbc3a0a709c742707", + changelog: '* Wipe storage after 16 wrong PIN attempts\n* Enable Segwit for Bitcoin\n* Bcash aka Bitcoin Cash support\n* Message signing/verification for Ethereum and Segwit\n* Make address dialog nicer (switch text/QR via button)\n* Use checksum for Ethereum addresses\n* Add more ERC-20 tokens, handle unrecognized ERC-20 tokens\n* Allow "dry run" recovery procedure\n* Allow separated backup procedure' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.2-universal.json +var require_t1b1_1_5_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.2-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [1, 5, 2], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "e4cc08775fc9c204f295442f930326eb7877f2d4", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.5.2.bin", + fingerprint: "99f71379dec893fbe109832a1150f338660be686fe6b4903ff10ff751ba4e448", + changelog: "* clean memory on start\n* fix storage import from older versions" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.0-universal.json +var require_t1b1_1_6_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 6, 0], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + firmware_revision: "723cf295a72ce07b96047901bb8c2e461a2488f8", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.6.0.bin", + fingerprint: "e40f6ce12724c2d24234a7752953b88fd9ec28b3ec72c0dbfa280095a67a06ca", + changelog: "* Native SegWit (Bech32) address support\n* Show recognized BIP44/BIP49 paths in GetAddress dialog\n* NEM support\n* Expanse and UBIQ chains support\n* Bitcoin Gold, DigiByte, Monacoin support\n* Ed25519 collective signatures (CoSi) support" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.1-universal.json +var require_t1b1_1_6_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.1-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [1, 6, 1], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + bootloader_version: [1, 4, 0], + firmware_revision: "9588e8f2736b60916f51e470deb18f55112a6ebc", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.6.1.bin", + fingerprint: "83c3190a94e524ac83a1704eb584a2ab53f8a65a893b1ab52e7135812857c807", + changelog: "* Use fixed-width font for addresses\n* Lots of under-the-hood improvements\n* Fixed issue with write-protection settings" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.2-universal.json +var require_t1b1_1_6_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 6, 2], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + bootloader_version: [1, 5, 0], + firmware_revision: "c9113fd3f5fcd78e9e560dbac75ed5aae359eb2d", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.6.2.bin", + fingerprint: "d31304f793854e343df6ccf1804f7e2abf48ddcd82a379ca2d3711d54127e138", + changelog: "* Add possibility to set custom auto-lock delay\n* Bitcoin Cash cashaddr support\n* Zcash Overwinter hardfork support\n* Support for new coins:\n - Decred, Bitcoin Private, Fujicoin, Groestlcoin, Vertcoin, Viacoin, Zcoin\n* Support for new Ethereum networks:\n - EOS Classic, Ethereum Social, Ellaism, Callisto, EtherGem, Wanchain\n* Support for 500+ new Ethereum tokens" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.3-universal.json +var require_t1b1_1_6_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 6, 3], + min_bridge_version: [1, 1, 5], + min_bootloader_version: [1, 0, 0], + min_firmware_version: [1, 0, 0], + bootloader_version: [1, 5, 1], + firmware_revision: "ef86786ff750351ec454c7bae33b4966cfa862d7", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.6.3.bin", + fingerprint: "e8dbb4b7fe8384afd4c99790277c2f2f366a1a0f3957aa3545c75371a99a8fcc", + changelog: "* Implement RSKIP-60 Ethereum checksum encoding\n* Add support for new Ethereum networks (ESN, AKA, ETHO, MUSI, PIRL, ATH, GO)\n* Add support for new 80 Ethereum tokens\n* Improve MPU configuration" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.1-universal.json +var require_t1b1_1_7_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 7, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 6, 0], + firmware_revision: "83f1906cad648c560cd560577317046606398630", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.7.1.bin", + fingerprint: "1c303c50bb45d3f35da9e962d8405d0b8e89cc45e122496a48fce3995fa71d48", + changelog: "* Switch from HID to WebUSB\n* Add support for Stellar\n* Add support for Lisk\n* Add support for Zcash Sapling hardfork\n* Implement seedless setup" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.2-universal.json +var require_t1b1_1_7_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 7, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 6, 0], + firmware_revision: "0b26c529ec49daf584f322f3ef959c79694c8cf5", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.7.2.bin", + fingerprint: "4d5c7ac191dba315b2433af27c187925fb713d06984cc6f566231d809dd8d370", + changelog: "* Add support for OMNI layer: OMNI/MAID/USDT\n* U2F fixes\n* Don't ask for PIN if it has been just set" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.3-universal.json +var require_t1b1_1_7_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 7, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 6, 1], + firmware_revision: "f641e798f91a15c3b09e8dc6a163195dd56f86d2", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.7.3.bin", + fingerprint: "10acc6aa4f24aff36627473b98c23dc4f6d0220d33bc1e09cb572f02410ffdaf", + changelog: "* Fix USB issue on some Windows 10 installations" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.0-universal.json +var require_t1b1_1_8_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 8, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "964a622bb512aa85cfcc3e451fc70729cc15bb4f", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.8.0.bin", + fingerprint: "d65f0c07a6a9c53d8b5287798eb53154b33f9e87cd38a3701970e3d0a750a659", + changelog: "* Security improvements\n* Upgraded to new storage format\n* Stellar and NEM fixes\n* New coins: ATS, KMD, XPM, XSN, ZCL\n* New ETH tokens" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.1-universal.json +var require_t1b1_1_8_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.1-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [1, 8, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "0a6a5f85729e663fbeae5ce9e5745918ff6f9d5d", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.8.1.bin", + fingerprint: "019e849c1eb285a03a92bbad6d18a328af3b4dc6999722ebb47677b403a4cd16", + changelog: "* Fix fault when using the device with no PIN* Fix OMNI transactions parsing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.2-universal.json +var require_t1b1_1_8_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 8, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "3c19e3167d69902305a27f10e43abb5fc7a0254d", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.8.2.bin", + fingerprint: "909742eddcffdc72ca854557962ecad90e97585770f514170abe7a691b0c6eb1", + changelog: "* Security improvements\n* Fix display of non-divisible OMNI amounts" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.3-universal.json +var require_t1b1_1_8_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 8, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "df0963ec48f01f3d07ffca556e21ff0070cab099", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.8.3.bin", + fingerprint: "496aecfab867504b2283a9f057a0b2fd9d17970a22c81f6ad74232e7b914ce68", + changelog: "* Small code improvements" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.0-universal.json +var require_t1b1_1_9_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.0-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [1, 9, 0], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "0b7a8449f8dd003fc415262b05102d113247d3de", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.0.bin", + fingerprint: "1f40d1e68f9d182888b5b60da5209eff047ec68fcc96a5c9b61b0e55dd07d458", + changelog: "* Introduce Wipe Code\n* Introduce passphrase cache" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.1-universal.json +var require_t1b1_1_9_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 1], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "c6b2580cd245ee924507f45e9675f857a3d78768", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.1.bin", + fingerprint: "30cde253c46d4fc705f98634a35d06a494cf2a36824622a9c6a573e07f14292d", + changelog: "* Refactor Bitcoin signing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.2-universal.json +var require_t1b1_1_9_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 2], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "cde8f31ec2ddcb7d35e36edbcf8a71dda983a9ea", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.2.bin", + fingerprint: "45b83acd1330ddfd5567edbae5ff8028df1c48a493f01d47cc5499ee0be9b991", + changelog: "* Reintroduces the ability to spend pre-Overwinter (2018) funds on Zcash-like coins.\n* Adds support for multiple change outputs in outgoing transactions.\n* Adds a security check to prevent potential issues with paths used in altcoin transactions." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.3-universal.json +var require_t1b1_1_9_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 3], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "0d5f00668fb3d1c093ff3c879311a91d3a7175c8", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.3.bin", + fingerprint: "2589f456559f813d1149be1022e62f2d48fbe28f4d02de933bd888d91035cace", + changelog: "* Improves the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\n* Adds support for Verge (XVG).\n* Drops support for Metaverse (ETP), GINcoin (GIN), Pesetacoin (PTC), and Zel (ZEL).\n* Re-enables spending coins from Bitcoin paths (fixing some compatibility issues with Bitcoin Cash wallets).\n* Fixes smaller issues in the user interface." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.4-universal.json +var require_t1b1_1_9_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [1, 9, 4], + min_bridge_version: [2, 0, 25], + min_bootloader_version: [1, 5, 0], + min_firmware_version: [1, 6, 2], + bootloader_version: [1, 8, 0], + firmware_revision: "ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3", + translations: {}, + url: "firmware/t1b1/trezor-t1b1-1.9.4.bin", + fingerprint: "867017bd784cc4e9ce6f0875c61ea86f89b19380d54045c34608b85472998000", + changelog: "* Replacement transaction signing for replace-by-fee.\n* Support for Output Descriptors export.\n* Show Ypub/Zpub correctly for multisig GetAddress.\n* Show amounts in mBTC, uBTC and sat denominations." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.3-bitcoinonly.json +var require_t2b1_2_6_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "2c7cc6e0255dee2339b445b5551eaffb88dbd1b4", + translations: {}, + url: "firmware/t2b1/trezor-t2b1-2.6.3-bitcoinonly.bin", + fingerprint: "6aecc9d9fd137a661f38ce36713aa0889b77ec4d35d91c68e01bda225cda2850", + changelog: "* QR Code for Extended Public Keys (XPUBs). \n* The new bootloader version 2.1.4 is now included for enhanced system performance and security. \n* The screen will now automatically turn off when the device is locked, helping to extend the life of the OLED display and save energy." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.4-bitcoinonly.json +var require_t2b1_2_6_4_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.4-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "42e9ed0e09033d474dee1a560fe5870646fa440e", + translations: {}, + url: "firmware/t2b1/trezor-t2b1-2.6.4-bitcoinonly.bin", + fingerprint: "013d595fc621c12324afd90721c6a37d055d853f6af54d5432e27e6a425656dd", + changelog: "* Resolved an issue related to the invalid encoding of signatures from the Optiga chip." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.0-bitcoinonly.json +var require_t2b1_2_7_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "45e8a842a31e62a6d43d7f6ccac62a45e1198ef0", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.0.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.7.0.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.7.0.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.0.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.7.0-bitcoinonly.bin", + fingerprint: "bb91489a4790b3668e2f5d574a729a0f43009510550fecb5e04c0937d355b2cf", + changelog: "* Add translations capability. \n* Add loader to homescreen when locking the device. \n* Allow for going back to previous word in recovery process. \n* Display descriptors for BTC Taproot public keys. \n* Add missing semicolon character to the passphrase entry." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.2-bitcoinonly.json +var require_t2b1_2_7_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.2.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.7.2-bitcoinonly.bin", + fingerprint: "5b6e312430de9db6ad3a843e1ba311f8cff9c6a691c20c0e69b711451a729f40", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.0-bitcoinonly.json +var require_t2b1_2_8_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "dd4671a5104952ef505d28d1f9e94d1484b4607a", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.0.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.0.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.0.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.0.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.0.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.0.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.0-bitcoinonly.bin", + fingerprint: "ae088439d44fc8643b8de28e0d7a8720cd3dbb247619f2742604bbe884542558", + changelog: "* Removed CoSi functionality. \n* Increased Optiga read timeout to avoid spurious RSODs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.10-bitcoinonly.json +var require_t2b1_2_8_10_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.10-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.10.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.10-bitcoinonly.bin", + fingerprint: "5bd50bbcf6435f97b6dc46f96ad11235965cd8a78619c573c3c0aca6822e9ed2", + changelog: '* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Allow firmware upgrade even if language change failed.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.7-bitcoinonly.json +var require_t2b1_2_8_7_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.7-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.7.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.7-bitcoinonly.bin", + fingerprint: "6381f8a373f9f91a3cf4000a762b8dbf553d11a4a6d433c8863b2fa9eecfd9f1", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Included new version of bootloader (2.1.8).\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.9-bitcoinonly.json +var require_t2b1_2_8_9_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.9-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.9.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.9-bitcoinonly.bin", + fingerprint: "bde9c5ef485548746150e07a9c5081c25f2bdf127707a41f3c487ca83a6c0667", + changelog: "* Ability to cancel recovery on word count selection screen.\n* New UI for confirming long messages." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json +var require_t2b1_2_9_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.9.1.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.9.1-bitcoinonly.bin", + fingerprint: "4021f750b194d4663c9dbc79048b6cf0acca3abe05eca4a27db563cb579d1829", + changelog: "* Make space between value and unit non-breakable.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.3-universal.json +var require_t2b1_2_6_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "2c7cc6e0255dee2339b445b5551eaffb88dbd1b4", + translations: {}, + url: "firmware/t2b1/trezor-t2b1-2.6.3.bin", + fingerprint: "1aea81cf4a823951540a041ae52d1950efade73531f7640c85805f8950f11a38", + changelog: "* QR Code for Extended Public Keys (XPUBs). \n* The new bootloader version 2.1.4 is now included for enhanced system performance and security. \n* The screen will now automatically turn off when the device is locked, helping to extend the life of the OLED display and save energy." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.4-universal.json +var require_t2b1_2_6_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "42e9ed0e09033d474dee1a560fe5870646fa440e", + translations: {}, + url: "firmware/t2b1/trezor-t2b1-2.6.4.bin", + fingerprint: "5ac16cb5002aa607908be376378a7fd1a1bc18f7b05e7a047cb1365840cc93ef", + changelog: "* Trezor Safe 3 now supports Solana, expanding the range of cryptocurrencies it can securely manage. [Universal fw only] \n* Ethereum fees are now uniformly presented in Gwei, enhancing clarity and consistency for users. [Universal fw only] \n* Issue with missing address confirmation screens is now fixed. [Universal fw only] \n* Resolved an issue related to the invalid encoding of signatures from the Optiga chip." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.0-universal.json +var require_t2b1_2_7_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "45e8a842a31e62a6d43d7f6ccac62a45e1198ef0", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.0.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.7.0.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.7.0.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.0.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.7.0.bin", + fingerprint: "522eb5db073c0f039f7164360668e75a43399d0b4e40edfd06f77f4401cd98aa", + changelog: "* Add translations capability. \n* Add loader to homescreen when locking the device. \n* Allow for going back to previous word in recovery process. \n* Clear sign ETH staking transactions on Everstake pool. [Universal fw only] \n* Display descriptors for BTC Taproot public keys. \n* Multiple Solana instructions improved. [Universal fw only] \n* Add missing semicolon character to the passphrase entry." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.2-universal.json +var require_t2b1_2_7_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.2.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.7.2.bin", + fingerprint: "d072560f34782faf5537aa08a48c4e24671d4c60e9c291a00bfbf12cbc425666", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares. \n* Added support for Cardano Conway certificates [Universal fw only]." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.0-universal.json +var require_t2b1_2_8_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 4], + firmware_revision: "dd4671a5104952ef505d28d1f9e94d1484b4607a", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.0.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.0.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.0.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.0.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.0.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.0.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.0.bin", + fingerprint: "cf3ce230a69a681199f74cf6ac8c6c431f8fa7e0d0183437f93c5cc029fbd155", + changelog: "* Removed CoSi functionality. \n* Increased Optiga read timeout to avoid spurious RSODs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.10-universal.json +var require_t2b1_2_8_10_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.10-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.10.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.10.bin", + fingerprint: "db555520689b1af7c18cb20fc2631fbf07ce4f7dd735c7e64ab279e1ad03a33a", + changelog: '* Solana: rent fee calculation [#4933]\n* Solana: loadable token definitions [#3541]\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Fixed Solana staking dialog title.\n* Updated EIP-1559 fee-related labels.\n* Allow firmware upgrade even if language change failed.\n* Solana: fees calculation is now exact [#4965]' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.7-universal.json +var require_t2b1_2_8_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.7.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.7.bin", + fingerprint: "554c6586df79e1281dd377bfb99d7b2594dbac66d749837c6a78b9c5e0751098", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\n* Included new version of bootloader (2.1.8).\n* Fix ETH account number detection.\n* New EVM call contract flow UI.\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.9-universal.json +var require_t2b1_2_8_9_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.9-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t2b1/translation-T2B1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.9.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.8.9.bin", + fingerprint: "f6e03b48ab163f302bb886da197b6a0e7b390efdc5815b419535c5dee5cac1f7", + changelog: "* Ability to cancel recovery on word count selection screen.\n* New UI for confirming long messages.\n* Solana staking confirmation dialogs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.9.1-universal.json +var require_t2b1_2_9_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.9.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 1], + min_firmware_version: [2, 6, 1], + bootloader_version: [2, 1, 8], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t2b1/translation-T2B1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t2b1/translation-T2B1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t2b1/translation-T2B1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t2b1/translation-T2B1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t2b1/translation-T2B1-pt-BR-2.9.1.bin" + }, + url: "firmware/t2b1/trezor-t2b1-2.9.1.bin", + fingerprint: "a3f4b7dd49aa7b22533bdff20b83ff07fbf4946794df0b1b830397d4cf3983e4", + changelog: "* Add support for signing arbitrary messages in Cardano.\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\n* Improved Stellar transaction signing interface for a more streamlined user experience.\n* Implement multi-item menus for Solana staking.\n* Make space between value and unit non-breakable.\n* Fixed Solana signature failure.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.5-bitcoinonly.json +var require_t2t1_2_1_5_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.5-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 5], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 1, 0], + firmware_revision: "df0963ec48f01f3d07ffca556e21ff0070cab099", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.5-bitcoinonly.bin", + fingerprint: "9de90d9f8ca12506f3b9a4cbe7616294144d965d67daa3a03bfe6c0b74a44843", + changelog: "* Fix UI for Shamir with 33 words" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.6-bitcoinonly.json +var require_t2t1_2_1_6_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.6-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 6], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "629fa58d396e732f230866ebe733d268370d7879", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.6-bitcoinonly.bin", + fingerprint: "4e7f0f95d71631159b9e873f36a812c93a10eca1fad5f38c78ae7fbe4c1f6ed4", + changelog: "* Small code improvements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.7-bitcoinonly.json +var require_t2t1_2_1_7_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.7-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "2cabc8b40ce237ee8a7e1926b6269040519d447a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.7-bitcoinonly.bin", + fingerprint: "fd92ac173a2cf93cc07ced3287e07800ed10466dc38c0c7240d9b20c689dd1d1", + changelog: "* Super Shamir (with Groups)\n* Fix low memory issue" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.8-bitcoinonly.json +var require_t2t1_2_1_8_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.8-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 8], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "8eb6ce08995514c67d175b7197feeadeccc48ff0", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.8-bitcoinonly.bin", + fingerprint: "ec752e9fa99a29979497e093b32bdb2b592783e2b48c87d8f6f0c18c73cd3022", + changelog: "* Show XPUBs in GetAddress for multisig\n* Security improvements" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.0-bitcoinonly.json +var require_t2t1_2_3_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: true, + version: [2, 3, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0b7a8449f8dd003fc415262b05102d113247d3de", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.0-bitcoinonly.bin", + fingerprint: "bddc0fd3b52fd32d94b776048f62b3d03dcb6ab90140e482a042a2863093115f", + changelog: "* Introduce Wipe code\n* Introduce SD card protection\n* Introduce passphrase cache\n* Security fixes" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.1-bitcoinonly.json +var require_t2t1_2_3_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "c6b2580cd245ee924507f45e9675f857a3d78768", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.1-bitcoinonly.bin", + fingerprint: "41795ec196f74c5d6acecc09047a5eacf1dfca47b0aeaa8442a69568efe20ddb", + changelog: "* Refactor Bitcoin signing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.2-bitcoinonly.json +var require_t2t1_2_3_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "63ebb8ccb56fc17a72eef91db36a37ff3176519d", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.2-bitcoinonly.bin", + fingerprint: "389cb54fb6fc75489b788ad669ce51f41d47a67af54b8745a0dfe48da38a777f", + changelog: "* Introduces 'Autolock' feature, which automatically locks the device to enforce the PIN entry after a certain period.\n* Fixes compatibility issues with Casa and GreenAddress.\n* Adds support for multiple change outputs in outgoing transactions.\n* Improves some interface elements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.3-bitcoinonly.json +var require_t2t1_2_3_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0d5f00668fb3d1c093ff3c879311a91d3a7175c8", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.3-bitcoinonly.bin", + fingerprint: "dda77cd7893a5f413f8fc4b2f44d1d43ed4b26e8ced5e6e578cc6b302c1a2310", + changelog: "* Advances the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\n* Introduces a hard limit on transaction fees to prevent accidentally paying extra hefty fees (the limit can be manually disabled).\n* Fixes smaller issues with the user interface, customization, and more." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.4-bitcoinonly.json +var require_t2t1_2_3_4_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.4-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "50854b9210f7674262c1541272a8c7fd1767b7a9", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.4-bitcoinonly.bin", + fingerprint: "085acbba98163284ef86dea637f9442b924e80fea245f5ebb60d5aab3be2b7b6", + changelog: "* Small code improvements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.5-bitcoinonly.json +var require_t2t1_2_3_5_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.5-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 5], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.5-bitcoinonly.bin", + fingerprint: "53e7ee5bfc75cfa6412d8de5461b1ea8d9b7e10970ce7cadae9cbb1e17bbb77d", + changelog: "* Replacement transaction signing for replace-by-fee and PayJoin.\n* Support for Output Descriptors export.\n* Paginated display for signing/verifying long messages.\n* Show Ypub/Zpub correctly for multisig GetAddress.\n* Show amounts in mBTC, uBTC and sat denominations." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.6-bitcoinonly.json +var require_t2t1_2_3_6_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.6-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 6], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "b19cbf67c6c7c38513947b703df6d4409c59bc98", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.6-bitcoinonly.bin", + fingerprint: "e2cab40bb4c6ae65417b80ad564b905796038a0f5e6d0f50cead257fdd3a9c2d", + changelog: "* Add compatibility paths for Unchained Capital" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.0-bitcoinonly.json +var require_t2t1_2_4_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "ea3596ad89a7993ad7b9d62798de94325ad1717a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.0-bitcoinonly.bin", + fingerprint: "89c91287ab7a9cd3ec246b6822a0d04b7d40401abef706cccafbb7b98bd6a3d7", + changelog: "* Locking the device by holding finger on the homescreen.\n* Support PIN of unlimited length.\n* Allow decreasing the output value in RBF transactions.\n* Reduce memory fragmentation.\n* Improve wording when showing multisig XPUBs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.1-bitcoinonly.json +var require_t2t1_2_4_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "24bb4016388fca4b998285b95dcd408f4ed0bff6", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.1-bitcoinonly.bin", + fingerprint: "fce4503fcadb68dc72144a562ec0a59e7c8d083e403e01bfc4c584161d79f596", + changelog: "* Security and major perfomance improvements.\n* Fix red screen on shutdown." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.2-bitcoinonly.json +var require_t2t1_2_4_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "9276b1702361f70e094286e2f89e919d8a230d5c", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.2-bitcoinonly.bin", + fingerprint: "60fee3c9775d8ccf71099f6f7d277463efd128414cfb9be45656b1a26eeb7301", + changelog: "* Memory optimization of BTC signing." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.3-bitcoinonly.json +var require_t2t1_2_4_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "595b14254c1abb2be3f69e42c7932f1eca8cf1b1", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.3-bitcoinonly.bin", + fingerprint: "1744efccabd479526392b281b7e0fc7aa2b4ecb454007dff7ca8c1f8171fad90", + changelog: "* Support Taproot.\n* Show address confirmation in SignMessage." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.1-bitcoinonly.json +var require_t2t1_2_5_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "85a26d2c9593bcdf858c2d718d79951ca927a0c3", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.1-bitcoinonly.bin", + fingerprint: "db5d7b211532f717a32fe0b1bd3e3df6ad5464079a896a7f7492ab6e9e030bb5", + changelog: "* Support Electrum signatures in VerifyMessage.\n* Bitcoin bech32 addresses QR codes have bigger pixels which are easier to scan.\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs)." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.2-bitcoinonly.json +var require_t2t1_2_5_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0d87b55ba4fed7eecc72bf2a94ee473830b095e9", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.2-bitcoinonly.bin", + fingerprint: "76aa25f9602cfb03cd3e07a82ac09226344eb355355aec216295e43b675eedf7", + changelog: "* Show the fee rate on the signing confirmation screen. \n* Show thousands separator when displaying large amounts." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.3-bitcoinonly.json +var require_t2t1_2_5_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "2f03ace311584988d5aeab58fd1acf24ef54711a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.3-bitcoinonly.bin", + fingerprint: "c094c84ba958129885fa725ee6ddb781b580fd2c7851e83aef9054ba4a10526c", + changelog: "* Add SLIP-0025 CoinJoin accounts. \n* Show red error header when Trezor doesn't see USB data connection. \n* Show fee rate when replacing transaction. \n* Optimize the signing of BTC transactions. \n* Extend decimals of fee rate to 2 digits. \n* Display only \u201Csat\u201D instead of \u201Csat BTC\u201D." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.0-bitcoinonly.json +var require_t2t1_2_6_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 0], + firmware_revision: "88e1f8c7a5c7615723664c64b0a25adc0c409dee", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.0-bitcoinonly.bin", + fingerprint: "54f084dab4be1e64dc2cb970a6de87969407e4d6c48d79acdcf5d374ec0f29d6", + changelog: ` Show source account path in BTC signing. +* Ability to reboot the device into bootloader mode directly, without needing to unplug the device. +* Support for Ledger Live legacy derivation path "m/44'/coin_type'/0'/account". +* Redesigned UI. +* Homescreen now supports full-screen images.` + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.3-bitcoinonly.json +var require_t2t1_2_6_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "2c7cc6e0255dee2339b445b5551eaffb88dbd1b4", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.3-bitcoinonly.bin", + fingerprint: "1765518ca4025d4d46362d07128bb38413831511a2aff0dee1b05e6e58ff5317", + changelog: "* QR Code for Extended Public Keys (XPUBs). \n* Adjusted buttons for multipage content scrolling, providing a more intuitive and user-friendly experience. \n* The new bootloader version 2.1.4 is now included for enhanced system performance and security." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.4-bitcoinonly.json +var require_t2t1_2_6_4_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.4-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "42e9ed0e09033d474dee1a560fe5870646fa440e", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.4-bitcoinonly.bin", + fingerprint: "e78da8a00354dd1223da081600f881b71bd297dd565e7a2c0a9880e52575d127", + changelog: "* The display of spaced addresses has been refined, offering a more user-friendly and visually optimized experience. \n* Boot-up logo display has been optimized, contributing to a smoother and more visually appealing device startup." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.0-bitcoinonly.json +var require_t2t1_2_7_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "45e8a842a31e62a6d43d7f6ccac62a45e1198ef0", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.0.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.7.0.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.7.0.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.0.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.7.0-bitcoinonly.bin", + fingerprint: "c94f07150a6f0bb2862d4c31c6059862aab14f0073dea581118eef51a983bc30", + changelog: "* Add translations capability. \n* Allow for going back to previous word in recovery process. \n* Display descriptors for BTC Taproot public keys. \n* Fixed blank display delay on startup when display orientation is set to other than north." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.2-bitcoinonly.json +var require_t2t1_2_7_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.2.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.7.2-bitcoinonly.bin", + fingerprint: "cba515383705ec6420c54dd1ffdb33ea7ce4bb04bc6d992c2923880daa53d3e1", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.1-bitcoinonly.json +var require_t2t1_2_8_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 6], + firmware_revision: "632b9561559b7ab6824bb7eeac072874e07b7b82", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.1.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.1.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.1.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.1.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.1.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.1.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.1-bitcoinonly.bin", + fingerprint: "38ab127fcf4263a18a3b07593301fdd2c6a1a96360b62c131adb849b5d18fae3", + changelog: "* Fixed displaying of a progress indicator for the formatting operation.\n* Improve precision of PIN validation countdown." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.10-bitcoinonly.json +var require_t2t1_2_8_10_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.10-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.10.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.10-bitcoinonly.bin", + fingerprint: "c280cfbe83b261ef30c64eb58f55538b3cceee01ba7d8f57d6e8cbf92527066b", + changelog: '* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Fixed upgrade confirmation text overflow.\n* Allow firmware upgrade even if language change failed.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.7-bitcoinonly.json +var require_t2t1_2_8_7_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.7-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.7.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.7-bitcoinonly.bin", + fingerprint: "7bdf5de0c00c5d15c06d526a5b0d22cfd8343eb3e7aa01ee3c4ed60dd063bbf1", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Included new version of bootloader (2.1.8).\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.8-bitcoinonly.json +var require_t2t1_2_8_8_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.8-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 8], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "592590cf66a9b62dfeee7e4d2afb6e01005e5b2c", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.8.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.8.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.8.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.8.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.8.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.8.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.8-bitcoinonly.bin", + fingerprint: "81928bbb5bc855f46a2ccb210173f9676b69d153a513bfa0101abfc063f7aef5", + changelog: '* Fix "PIN attempts exceeded" screen\n* Fixed a bug resulting in restarting the recovery flow when inputting 33-word mnemonic' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.9-bitcoinonly.json +var require_t2t1_2_8_9_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.9-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.9.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.9-bitcoinonly.bin", + fingerprint: "e5878fa067df9d1256cdcd86f10869930d85e090c39f807c23f8845472e8d995", + changelog: "* Ability to cancel recovery on word count selection screen.\n* New UI for confirming long messages." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json +var require_t2t1_2_9_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.9.1.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.9.1-bitcoinonly.bin", + fingerprint: "77b53ba1e381fcf8ce0868e8d158484e57ef22de1389b60df0a287199b92c14f", + changelog: "* Limit swipe detection to the component's bounds.\n* Make space between value and unit non-breakable.\n* Do not hide the shown PIN until the touch is released.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.10-universal.json +var require_t2t1_2_0_10_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.10-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 0, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 2], + firmware_revision: "5c3a5d4577b568d90bfa3528d0243d74848d994f", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.10.bin", + fingerprint: "fcaa6ee206c2c121eb2d45d065d66f0879f14be45c244d4acf908be1de22275e", + changelog: "* Fix Monero payment ID computation\n* Fix issue with touch screen and flickering\n* Add support for OMNI layer: OMNI/MAID/USDT\n* Add support for new coins: BTX, CPC, GAME, RVN\n* Add support for new Ethereum tokens" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.5-universal.json +var require_t2t1_2_0_5_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.5-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [2, 0, 5], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 0], + firmware_revision: "8852fb54820032f4f287414aa250df981d25445f", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.5.bin", + fingerprint: "851172eab96c07bf9efb43771cb0fd14dc0320a68de047132c7bd787a1ad64e9", + changelog: "* First public release" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.6-universal.json +var require_t2t1_2_0_6_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.6-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 0, 6], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 0], + firmware_revision: "886888b7750402d9a9e12bd990e75c0a8dc6cc86", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.6.bin", + fingerprint: "4eccabf2fd7e121ed0da657c064a65c5694402497e60ea2ac2dcf1e118db9cc6", + changelog: "* Fix layout for Ethereum transactions\n* Fix public key generation for SSH and GPG\n* Add special characters to passphrase keyboard" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.7-universal.json +var require_t2t1_2_0_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 0, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 0], + firmware_revision: "5c621800110a791c84865b6b381908e8c2f15283", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.7.bin", + fingerprint: "f3a42e640e526fba6574fafa520fc7d97ef9f557d24da24d9a2ea4176a4c4164", + changelog: "* Bitcoin Cash cashaddr support\n* Zcash Overwinter hardfork support\n* NEM support\n* Lisk support\n* Show warning on home screen if PIN is not set\n* Support for new coins:\n - Bitcoin Private, Fujicoin, Vertcoin, Viacoin, Zcoin\n* Support for new Ethereum networks:\n - EOS Classic, Ethereum Social, Ellaism, Callisto, EtherGem, Wanchain\n* Support for 500+ new Ethereum tokens" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.8-universal.json +var require_t2t1_2_0_8_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.8-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 0, 8], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 0], + firmware_revision: "939a93221941df8d454569a674f6fb082bf1d423", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.8.bin", + fingerprint: "642b6215bda981f8eacafee34dbee5cdeee7d47d49f605bbe2828a8d9b79813d", + changelog: "* Monero support\n* Cardano support\n* Stellar support\n* Ripple support\n* Tezos support\n* Decred support\n* Groestlcoin support\n* Zencash support\n* Zcash sapling hardfork support\n* Implemented seedless setup" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.9-universal.json +var require_t2t1_2_0_9_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.9-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 0, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 0], + firmware_revision: "7c2e9ed5a51dc00dec9d195878c5ad57016b4889", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.0.9.bin", + fingerprint: "87be93d6966e7a9eff78dc7b434d1a138ec8d1ee0300882d16f90b606f3a806b", + changelog: "* Small Monero and Segwit bugfixes" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.0-universal.json +var require_t2t1_2_1_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.0-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [2, 1, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + bootloader_version: [2, 0, 3], + firmware_revision: "3f0e3a334e03f49ff819d14cbbec00194c586c27", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.0.bin", + fingerprint: "bb5b0308807b45d41d1e2ab66a468152997ad69a01099789d8a35e464cde999f", + changelog: "* Security improvements\n* Upgraded to new storage format\n* Ripple, Stellar, Cardano and NEM fixes\n* New coins: ATS, AXE, FLO, GIN, KMD, NIX,\n PIVX, REOSC, XPM, XSN, ZCL\n* New ETH tokens" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.1-universal.json +var require_t2t1_2_1_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 5], + firmware_revision: "7af1d5859458e87efd6957885566aed890a9f781", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.1.bin", + fingerprint: "1b3166a878658fcd2ff82c7ac9a2587da544fd105f678cc7b4d41cba5a8d4c01", + changelog: "* Hotfix for touchscreen freeze\n* Don't rotate the screen via swipe gesture\n* Set screen rotation via user setting\n* More strict path validations\n* Display non-zero locktime values\n* EOS support\n* Monero UI fixes\n* Speed and memory optimizations" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.4-universal.json +var require_t2t1_2_1_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 1, 0], + firmware_revision: "6a1a02ca3c595067ed02a78f2d6c36eb58eaa9ed", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.4.bin", + fingerprint: "820611a92605b1ccc612b9bf8550617aec6962bd2484fcb6ae4792bc498654e4", + changelog: "* Shamir Backup with Recovery persistence\n* Touchscreen freeze fix\n* Fix display of non-divisible OMNI amounts" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.5-universal.json +var require_t2t1_2_1_5_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.5-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 5], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 1, 0], + firmware_revision: "df0963ec48f01f3d07ffca556e21ff0070cab099", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.5.bin", + fingerprint: "40e4bfaf3c5ec77872c1aaaac085aafcc443f60279ca2bb38d29c669233fdf62", + changelog: "* Fix for sluggish U2F authentication when using Shamir\n* Fix UI for Shamir with 33 words\n* Fix Wanchain signing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.6-universal.json +var require_t2t1_2_1_6_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.6-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 6], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "629fa58d396e732f230866ebe733d268370d7879", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.6.bin", + fingerprint: "e2032ad84108a85d4014d477b955b9181a1a56e6f222ef21bb7d47b503a02f0b", + changelog: "* Super Shamir (with Groups)\n* FIDO2 support with credential management" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.7-universal.json +var require_t2t1_2_1_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "2cabc8b40ce237ee8a7e1926b6269040519d447a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.7.bin", + fingerprint: "acf1b4c6fec3624a8fc53f9130ff53d690c3fa1c134bd4ca3e58ee7b5a0441d8", + changelog: "* Super Shamir (with Groups)\n* FIDO2 support with credential management\n* Fix low memory issue" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.8-universal.json +var require_t2t1_2_1_8_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.8-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 1, 8], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "8eb6ce08995514c67d175b7197feeadeccc48ff0", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.1.8.bin", + fingerprint: "8a5fa12132651b6e33344fd025d0d90885f5cc1c342427ebcea4f0ae98b50d8c", + changelog: "* Support Tezos 005-BABYLON hardfork\n* Show XPUBs in GetAddress for multisig\n* Security improvements" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.0-universal.json +var require_t2t1_2_3_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.0-universal.json"(exports2, module2) { + module2.exports = { + required: true, + version: [2, 3, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0b7a8449f8dd003fc415262b05102d113247d3de", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.0.bin", + fingerprint: "212929f63fe1393e2ff57e06537a38cff281e3cfb3a4e17235079e2f08871e6c", + changelog: "* Introduce Wipe code\n* Introduce SD card protection\n* Introduce passphrase cache\n* U2F UX improvements\n* Security fixes" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.1-universal.json +var require_t2t1_2_3_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "c6b2580cd245ee924507f45e9675f857a3d78768", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.1.bin", + fingerprint: "37178a5ec24e34f8a0599aebcadaf206af3ebadef2fc596665d617dd3e05a5db", + changelog: "* Refactor Bitcoin signing" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.2-universal.json +var require_t2t1_2_3_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "63ebb8ccb56fc17a72eef91db36a37ff3176519d", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.2.bin", + fingerprint: "f5ccdca0cbe163ecb93df726da72b69abb93f70d24d295db00b3ca2738216160", + changelog: "* Introduces 'Autolock' feature, which automatically locks the device to enforce the PIN entry after a certain period.\n* Updates the Cardano support to enable staking and other Shelley updates.\n* Reintroduces the ability to spend pre-Overwinter (2018) funds on Zcash-like coins.\n* Fixes compatibility issues with Casa and GreenAddress.\n* Adds support for multiple change outputs in outgoing transactions.\n* Improves some interface elements." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.3-universal.json +var require_t2t1_2_3_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0d5f00668fb3d1c093ff3c879311a91d3a7175c8", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.3.bin", + fingerprint: "46326222f8afcb82e1cd07867bc3bf8836f4e9d0f367e23b58d1e9bc32cd032e", + changelog: "* Advances the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\n* Adds support for Verge (XVG).\n* Drops support for Metaverse (ETP), GINcoin (GIN), Pesetacoin (PTC), and Zel (ZEL).\n* Introduces a hard limit on transaction fees to prevent accidentally paying extra hefty fees (the limit can be manually disabled).\n* Resolves the problems with generating the Crown addresses.\n* Re-enables spending altcoins from Bitcoin paths (fixing some compatibility issues with Bitcoin Cash wallets).\n* Fixes smaller issues with the user interface, customization, and more." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.4-universal.json +var require_t2t1_2_3_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "50854b9210f7674262c1541272a8c7fd1767b7a9", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.4.bin", + fingerprint: "58b51a6587993965979a744f8fcd5c4761f11ce4bec6b059a5d56bd0987d6658", + changelog: "* This firmware only contains the changes needed after the latest Monero update (HF13) by introducing support for the CLSAG transactions." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.5-universal.json +var require_t2t1_2_3_5_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.5-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 5], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.5.bin", + fingerprint: "c0a6cacfed5c7a691314919c22307c29fbe9522071a9a28669769c014762d386", + changelog: "* Replacement transaction signing for replace-by-fee and PayJoin.\n* Support for Output Descriptors export.\n* Paginated display for signing/verifying long messages.\n* Show Ypub/Zpub correctly for multisig GetAddress.\n* Show amounts in mBTC, uBTC and sat denominations." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.6-universal.json +var require_t2t1_2_3_6_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.6-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 3, 6], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "b19cbf67c6c7c38513947b703df6d4409c59bc98", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.3.6.bin", + fingerprint: "0efa3ba6135caea7693d145d60441eeb46283fe0b8b1fd59a04af33a638ad237", + changelog: "* Add compatibility paths for Unchained Capital" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.0-universal.json +var require_t2t1_2_4_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "ea3596ad89a7993ad7b9d62798de94325ad1717a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.0.bin", + fingerprint: "d90265ee6d7d499c7d938b5322f71f27042da8a6fdaed54c224d31b65e868def", + changelog: "* Locking the device by holding finger on the homescreen.\n* Support PIN of unlimited length.\n* Allow decreasing the output value in RBF transactions.\n* Reduce memory fragmentation.\n* Update FIDO icons.\n* Improve wording when showing multisig XPUBs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.1-universal.json +var require_t2t1_2_4_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "24bb4016388fca4b998285b95dcd408f4ed0bff6", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.1.bin", + fingerprint: "84bc47bb197b3ae7bfb096f03d4a528ccf6c9ef4dfee0aac4022971e4ec91d68", + changelog: "* Security and major perfomance improvements.\n* Cardano fixes.\n* Fix red screen on shutdown." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.2-universal.json +var require_t2t1_2_4_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "9276b1702361f70e094286e2f89e919d8a230d5c", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.2.bin", + fingerprint: "54ccf155510b5292bd17ed748409d0d135112e24e62eb74184639460beecb213", + changelog: "* Support for Ethereum EIP1559 transactions.\n* Re-enabled Firo support.\n* Memory optimization of BTC signing and CBOR decoding.\n* Support for large Cardano transactions.\n* Remove Lisk." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.3-universal.json +var require_t2t1_2_4_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 4, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "595b14254c1abb2be3f69e42c7932f1eca8cf1b1", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.4.3.bin", + fingerprint: "a07f69d8d2065006a79c6b5636bd046496dbcb3820b41f1d604d8a4605ca4056", + changelog: "* Support Taproot.\n* Show address confirmation in SignMessage.\n* Support for advanced Cardano transactions and different derivations for compatibility.\n* Ethereum support for EIP712 (signing typed data)." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.1-universal.json +var require_t2t1_2_5_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "85a26d2c9593bcdf858c2d718d79951ca927a0c3", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.1.bin", + fingerprint: "782d4934897018cac779eebb0d7c66e21da7789b9cd35e1f99f097bdfd9b7d33", + changelog: "* Support Electrum signatures in VerifyMessage.\n* Support Cardano Alonzo-era transactions (Plutus).\n* Bitcoin bech32 addresses QR codes have bigger pixels which are easier to scan.\n* EIP-1559 transaction correctly show final Hold to Confirm screen.\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\n* Zcash v5 transaction format." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.2-universal.json +var require_t2t1_2_5_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "0d87b55ba4fed7eecc72bf2a94ee473830b095e9", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.2.bin", + fingerprint: "659b1b698546fa63f24200e148b6f9a7044df31d11a0a5ec7c044f2dd83f4a27", + changelog: '* Add support for Monero HF15 features. \n* Show the fee rate on the signing confirmation screen. \n* Support for Cardano Babbage era transaction items \n* Add "Show All"/"Show Simple" choice to Cardano transaction signing \n* Show thousands separator when displaying large amounts. \n* Fix Decred transaction weight calculation.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.3-universal.json +var require_t2t1_2_5_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 5, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + firmware_revision: "2f03ace311584988d5aeab58fd1acf24ef54711a", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.5.3.bin", + fingerprint: "4f57dca1abc1a60d82c4fef7c96e86d784fc7a1e5e3da724dd2ae4d14c6350bf", + changelog: "* Add SLIP-0025 CoinJoin accounts. \n* Show red error header when Trezor doesn't see USB data connection. \n* Add support for Zcash unified addresses. \n* Show fee rate when replacing transaction. \n* Optimize the signing of BTC transactions. \n* Support for Cardano CIP-36 governance registration format. \n* Extend decimals of fee rate to 2 digits. \n* Display only \u201Csat\u201D instead of \u201Csat BTC\u201D. \n* Fix sending XMR transaction to an integrated address. \n* Fix XMR primary address display." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.0-universal.json +var require_t2t1_2_6_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 0], + firmware_revision: "88e1f8c7a5c7615723664c64b0a25adc0c409dee", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.0.bin", + fingerprint: "050526db604b9acceef2a5a8561bc99ecbe337909283ebb927b556d8e9b13872", + changelog: `* Show source account path in BTC signing. +* Address confirmation screen added to EIP712 signing flow. +* Ability to reboot the device into bootloader mode directly, without needing to unplug the device. +* Support for Ledger Live legacy derivation path "m/44'/coin_type'/0'/account". +* Redesigned UI. +* Homescreen now supports full-screen images. +* Force basic attestation in FIDO2 for google.com.` + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.3-universal.json +var require_t2t1_2_6_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "2c7cc6e0255dee2339b445b5551eaffb88dbd1b4", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.3.bin", + fingerprint: "9ff0874f2ce3579a7502747578cef65c824097d906e7150b0142f6b9aa395a43", + changelog: "* QR Code for Extended Public Keys (XPUBs). \n* Adjusted buttons for multipage content scrolling, providing a more intuitive and user-friendly experience. \n* The new bootloader version 2.1.4 is now included for enhanced system performance and security." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.4-universal.json +var require_t2t1_2_6_4_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.4-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 6, 4], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "42e9ed0e09033d474dee1a560fe5870646fa440e", + translations: {}, + url: "firmware/t2t1/trezor-t2t1-2.6.4.bin", + fingerprint: "441faa92156e8ae0b8247f9434c3ec8cf6ffd872f16fc593b22c4460dfd93913", + changelog: "* Trezor Model T now supports Solana, expanding the range of cryptocurrencies it can securely manage. [Universal fw only] \n* Ethereum fees are now uniformly presented in Gwei, enhancing clarity and consistency for users. [Universal fw only] \n* The display of spaced addresses has been refined, offering a more user-friendly and visually optimized experience. \n* Boot-up logo display has been optimized, contributing to a smoother and more visually appealing device startup." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.0-universal.json +var require_t2t1_2_7_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "45e8a842a31e62a6d43d7f6ccac62a45e1198ef0", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.0.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.7.0.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.7.0.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.0.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.7.0.bin", + fingerprint: "53a645218792e413ad06c27320b7d1adc944b690ce831301bbf11c30352d3278", + changelog: "* Add translations capability. \n* Allow for going back to previous word in recovery process. \n* Clear sign ETH staking transactions on Everstake pool. [Universal fw only] \n* Display descriptors for BTC Taproot public keys. \n* Fixed blank display delay on startup when display orientation is set to other than north. \n* Multiple Solana instructions improved. [Universal fw only]" + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.2-universal.json +var require_t2t1_2_7_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 4], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.2.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.7.2.bin", + fingerprint: "d64fcf47a8ead6edf0329583e312136d1548d30990c29cfaa2ce7c67197babcc", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares. \n* Added support for Cardano Conway certificates [Universal fw only]." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.1-universal.json +var require_t2t1_2_8_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 6], + firmware_revision: "632b9561559b7ab6824bb7eeac072874e07b7b82", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.1.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.1.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.1.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.1.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.1.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.1.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.1.bin", + fingerprint: "d3af84a212d32785449ca6575e3cf2a641920b353a82dec9f059083ea5d4b149", + changelog: "* Fixed displaying of a progress indicator for the formatting operation.\n* Improve precision of PIN validation countdown.\n* Solana: Improved support for AToken Create operation." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.10-universal.json +var require_t2t1_2_8_10_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.10-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.10.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.10.bin", + fingerprint: "91feae69ada0f98b72f19191f1d1e083b579c26079f7e6fcd751fae0902ec72f", + changelog: '* Add Nostr support (in debug mode only!).\n* Solana: rent fee calculation [#4933]\n* Solana: loadable token definitions [#3541]\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Fixed upgrade confirmation text overflow.\n* Fixed Solana staking dialog fonts.\n* Updated EIP-1559 fee-related labels.\n* Allow firmware upgrade even if language change failed.\n* Solana: fees calculation is now exact [#4965]' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.7-universal.json +var require_t2t1_2_8_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.7.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.7.bin", + fingerprint: "7f7bae53913c3a339f22adddb16db70b11bcf908af1c7a5986bae09af9d4ab62", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\n* Included new version of bootloader (2.1.8).\n* Fix ETH account number detection.\n* New EVM call contract flow UI.\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.8-universal.json +var require_t2t1_2_8_8_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.8-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 8], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "592590cf66a9b62dfeee7e4d2afb6e01005e5b2c", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.8.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.8.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.8.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.8.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.8.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.8.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.8.bin", + fingerprint: "f4888bed3e75205464910f3956d1f3ad19bb73e093b31c9141a66226a7081990", + changelog: '* Fix "PIN attempts exceeded" screen\n* Fixed a bug resulting in restarting the recovery flow when inputting 33-word mnemonic' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.9-universal.json +var require_t2t1_2_8_9_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.9-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t2t1/translation-T2T1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.9.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.8.9.bin", + fingerprint: "ec61dba50be195f1cbb78688a0b92fb293c23150b68f5dab3b44420a106fca17", + changelog: "* Ability to cancel recovery on word count selection screen.\n* Account info for ETH transactions.\n* New UI for confirming long messages.\n* Solana staking confirmation dialogs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.9.1-universal.json +var require_t2t1_2_9_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.9.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 0, 0], + min_firmware_version: [2, 0, 8], + bootloader_version: [2, 1, 8], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t2t1/translation-T2T1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t2t1/translation-T2T1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t2t1/translation-T2T1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t2t1/translation-T2T1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t2t1/translation-T2T1-pt-BR-2.9.1.bin" + }, + url: "firmware/t2t1/trezor-t2t1-2.9.1.bin", + fingerprint: "aaa616c14904cf6eb940497d7fd5da8735ab0d0ecdebd3f6ced49fff0ce278a0", + changelog: "* Add support for signing arbitrary messages in Cardano.\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\n* Improved Stellar transaction signing interface for a more streamlined user experience.\n* Limit swipe detection to the component's bounds.\n* Make space between value and unit non-breakable.\n* Do not hide the shown PIN until the touch is released.\n* Fixed Solana signature failure.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.10-bitcoinonly.json +var require_t3b1_2_8_10_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.10-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 10], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.10.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.10-bitcoinonly.bin", + fingerprint: "5a0aa661b61d056f72b83bf0d5c7eb4ddc84d6370fb977be794b145e49e8ff3f", + changelog: '* Upgrade bundled bootloader to 2.1.10.\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Allow firmware upgrade even if language change failed.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.3-bitcoinonly.json +var require_t3b1_2_8_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "7f373ae71eca855dd41b4a0fdcc7cadaa13a8281", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.3.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.3.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.3.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.3.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.3.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.3.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.3-bitcoinonly.bin", + fingerprint: "070a61b2a8653e4f9857810b6610d0a15f76ba627c7b6e5654a6de9a1c529049", + changelog: "* Fix persistent word when going to previous word during recovery process.\n* Fix display orientation south." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.7-bitcoinonly.json +var require_t3b1_2_8_7_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.7-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.7.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.7-bitcoinonly.bin", + fingerprint: "4737a6e12d0ebff19fec3aceb212adff57bbcea7a44f8208caf91cc656382d94", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Included new version of bootloader (2.1.8).\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.9-bitcoinonly.json +var require_t3b1_2_8_9_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.9-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.9.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.9-bitcoinonly.bin", + fingerprint: "d3905f15221f7b2733e5496986ceb1a3b39f390c4439e2d3cc89d5f3b7423278", + changelog: "* Ability to cancel recovery on word count selection screen.\n* New UI for confirming long messages." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json +var require_t3b1_2_9_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 10], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.9.1.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.9.1-bitcoinonly.bin", + fingerprint: "7588c0d41586268562837b8b302b8a4825fbec24ef94921e55ce820ff6dc2da6", + changelog: "* Make space between value and unit non-breakable.\n* Fix crash on first boot.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.10-universal.json +var require_t3b1_2_8_10_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.10-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 10], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.10.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.10.bin", + fingerprint: "ad763b0193bf2814bdb9807b51226e1c7639693e912e9334db3f446091943369", + changelog: '* Upgrade bundled bootloader to 2.1.10.\n* Add Nostr support (in debug mode only!).\n* Solana: rent fee calculation [#4933]\n* Solana: loadable token definitions [#3541]\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Fixed Solana staking dialog title.\n* Updated EIP-1559 fee-related labels.\n* Allow firmware upgrade even if language change failed.\n* Solana: fees calculation is now exact [#4965]' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.3-universal.json +var require_t3b1_2_8_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "7f373ae71eca855dd41b4a0fdcc7cadaa13a8281", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.3.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.3.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.3.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.3.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.3.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.3.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.3.bin", + fingerprint: "b659bdc5ddce208d46ce649fc7a8995ae49541c7c41a88ddaac5dfc038ffb5de", + changelog: "* Renamed MATIC to POL, following a network upgrade.\n* Fix persistent word when going to previous word during recovery process.\n* Fix display orientation south." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.7-universal.json +var require_t3b1_2_8_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.7.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.7.bin", + fingerprint: "1dd5ec22c2609beb6d17a97bf9b4f42a18af1c12db2446d29a945f4ece8727f6", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\n* Included new version of bootloader (2.1.8).\n* Fix ETH account number detection.\n* New EVM call contract flow UI.\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.9-universal.json +var require_t3b1_2_8_9_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.9-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 8], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t3b1/translation-T3B1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.9.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.8.9.bin", + fingerprint: "5b3a639c5b6423d87f4c0a3855dc4be8ad7e5be6d6b1b33f93ab1a54f3f36a91", + changelog: "* Ability to cancel recovery on word count selection screen.\n* New UI for confirming long messages.\n* Solana staking confirmation dialogs." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.9.1-universal.json +var require_t3b1_2_9_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.9.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 7], + min_firmware_version: [2, 8, 3], + bootloader_version: [2, 1, 10], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t3b1/translation-T3B1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t3b1/translation-T3B1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t3b1/translation-T3B1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t3b1/translation-T3B1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t3b1/translation-T3B1-pt-BR-2.9.1.bin" + }, + url: "firmware/t3b1/trezor-t3b1-2.9.1.bin", + fingerprint: "8a52e82d21a151cfa542b5ca0e265e9b4997f481365ff1b2bb047b45fac3a167", + changelog: "* Add support for signing arbitrary messages in Cardano.\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\n* Improved Stellar transaction signing interface for a more streamlined user experience.\n* Implement multi-item menus for Solana staking.\n* Make space between value and unit non-breakable.\n* Fixed Solana signature failure.\n* Fix crash on first boot.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.7.2-bitcoinonly.json +var require_t3t1_2_7_2_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.7.2-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.7.2.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.7.2-bitcoinonly.bin", + fingerprint: "246cca86b0a8cfcac6b7e6b3fcf55f543a8a9c9fd1f8ff88cd0de00640cb25eb", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.0-bitcoinonly.json +var require_t3t1_2_8_0_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.0-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "dd4671a5104952ef505d28d1f9e94d1484b4607a", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.0.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.0.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.0.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.0.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.0-bitcoinonly.bin", + fingerprint: "3dc847cc396fe83f5a324242097a4cf97fc64acf90516efcfcf23b6d3103a992", + changelog: "* Added tutorial flow. \n* Added Animated device label on homescreen/lockscreen. \n* Added word counter during wallet creation. \n* Improved change homescreen flow. \n* Improved swipe behavior and animations. \n* Increased Optiga read timeout to avoid spurious RSODs. \n* Fixed swipe back from address QR code screen. \n* Fixed device authenticity check. \n* Removed CoSi functionality." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.1-bitcoinonly.json +var require_t3t1_2_8_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "632b9561559b7ab6824bb7eeac072874e07b7b82", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.1.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.1.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.1.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.1.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.1-bitcoinonly.bin", + fingerprint: "6b17de0c89c9a7876687d6b9c44673f4aca7f8819237a755090848a3829bc36b", + changelog: "* Added PIN keyboard animation.\n* Added menu entry animation.\n* Added screen brightness settings.\n* Screen transitions and animations were improved and are now more smooth.\n* Improved precision of PIN validation countdown.\n* Improved instruction screens during multi-share recovery process.\n* New UI of firmware update.\n* Improved share words swiping animation during wallet creation.\n* Fixed title sometimes not fitting into result screen.\n* Improved touch layer precision.\n* Fixed \u201CMore info\u201D screen during multi-share backup creation.\n* Fixed title sometimes not fitting into result screen.\n* Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes now." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.10-bitcoinonly.json +var require_t3t1_2_8_10_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.10-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.10.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.10-bitcoinonly.bin", + fingerprint: "11d3f68d08f3f95c04dd526826f81eb7918df85928cfcef73beeae3132342bf0", + changelog: '* Visual cues to distinguish unlocked state on Homescreen.\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Allow firmware upgrade even if language change failed.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.3-bitcoinonly.json +var require_t3t1_2_8_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 8], + firmware_revision: "7f373ae71eca855dd41b4a0fdcc7cadaa13a8281", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.3.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.3.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.3.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.3.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.3.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.3.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.3-bitcoinonly.bin", + fingerprint: "9eaf99a9420d2a3b9377102eb06b938f5a1886ecb06cccde7fd3cb7a39e1abd7", + changelog: "* Added reassuring screen when entering empty passphrase on device.\n* Fix persistent word when going to previous word during recovery process.\n* Added missing info about remaining shares in super-shamir recovery." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.7-bitcoinonly.json +var require_t3t1_2_8_7_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.7-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 9], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.7.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.7-bitcoinonly.bin", + fingerprint: "2f58de2b7c2c29b6a2f14909ad0941e4aa9dd6d3e1416ab66c512a743b5385a9", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Included new version of bootloader (2.1.9).\n* Fix XPUB confirmed success screen title.\n* Fix incorrect navigation in handy menu while signing BTC message.\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.9-bitcoinonly.json +var require_t3t1_2_8_9_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.9-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.9.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.9-bitcoinonly.bin", + fingerprint: "ac995c394f7a7b3ea4cbd9c04977621d6d2fbef30bba856f707f585f34866ac4", + changelog: '* Ability to cancel recovery flow on word count selection screen.\n* New UI for confirming long messages.\n* Changed "swipe to continue" to "tap to continue". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json +var require_t3t1_2_9_1_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.9.1.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.9.1-bitcoinonly.bin", + fingerprint: "f19a88717e8eb7eb75ead0be5b5a0f1a129e2827658e587310fe285826138b2d", + changelog: "* Limit swipe detection to the component's bounds.\n* Make space between value and unit non-breakable.\n* Do not hide the shown PIN until the touch is released.\n* Fix incomplete disabling of haptics.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.7.2-universal.json +var require_t3t1_2_7_2_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.7.2-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 7, 2], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "da75d8f4b67410b40a9cfd2954d183d81dd6e8e8", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.7.2.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.7.2.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.7.2.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.7.2.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.7.2.bin", + fingerprint: "4daa5fd3c4c92ee0d76855997dde09a7ee25f4165b118c521ab10957c5fc92b0", + changelog: "* Introducing repeated backups. \n* Multi-share backups can now have any number of shares. \n* Added support for Cardano Conway certificates [Universal fw only]." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.0-universal.json +var require_t3t1_2_8_0_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.0-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 0], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "dd4671a5104952ef505d28d1f9e94d1484b4607a", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.0.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.0.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.0.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.0.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.0.bin", + fingerprint: "bd199ce0934769aca5c3a91f71fd48e533d88c8cf087b76ac49db415fa08c286", + changelog: "* Added tutorial flow. \n* Added Animated device label on homescreen/lockscreen. \n* Added word counter during wallet creation. \n* Improved change homescreen flow. \n* Improved swipe behavior and animations. \n* Increased Optiga read timeout to avoid spurious RSODs. \n* Fixed swipe back from address QR code screen. \n* Fixed device authenticity check. \n* Removed CoSi functionality." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.1-universal.json +var require_t3t1_2_8_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 6], + firmware_revision: "632b9561559b7ab6824bb7eeac072874e07b7b82", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.1.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.1.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.1.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.1.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.1.bin", + fingerprint: "6a064df4a928e1264d682a34cc014fc9272f312e0f8a8270ff88d6f1408fe68b", + changelog: "* Added PIN keyboard animation.\n* Added menu entry animation.\n* Added screen brightness settings.\n* Screen transitions and animations were improved and are now more smooth.\n* Improved precision of PIN validation countdown.\n* Improved instruction screens during multi-share recovery process.\n* New UI of firmware update.\n* Improved share words swiping animation during wallet creation.\n* Solana: Improved support for AToken Create operation.\n* Fixed title sometimes not fitting into result screen.\n* Improved touch layer precision.\n* Fixed \u201CMore info\u201D screen during multi-share backup creation.\n* Fixed title sometimes not fitting into result screen.\n* Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes now." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.10-universal.json +var require_t3t1_2_8_10_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.10-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 10], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "2a65d18200580005dc419b9569ed97fae440806a", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.10.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.10.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.10.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.10.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.10.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.10.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.10.bin", + fingerprint: "f6f50b4a419b041a59620ef681047c27af0902798e0227397c532dd70736694a", + changelog: '* Add Nostr support (in debug mode only!).\n* Visual cues to distinguish unlocked state on Homescreen.\n* Solana: rent fee calculation [#4933]\n* Solana: loadable token definitions [#3541]\n* Replaced "next page" icon with "..." ellipsis when confirming long message.\n* Updated EIP-1559 fee-related labels.\n* Allow firmware upgrade even if language change failed.\n* Solana: fees calculation is now exact [#4965]' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.3-universal.json +var require_t3t1_2_8_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 8], + firmware_revision: "7f373ae71eca855dd41b4a0fdcc7cadaa13a8281", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.3.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.3.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.3.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.3.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.3.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.3.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.3.bin", + fingerprint: "0de51126c17cc0ac623800638dc851c0abd5b787cad5f3aa5843ea2c4cf8248a", + changelog: "* Added reassuring screen when entering empty passphrase on device.\n* Improved ETH send and staking flow.\n* Redesigned FIDO2 UI.\n* Renamed MATIC to POL, following a network upgrade.\n* Fix persistent word when going to previous word during recovery process.\n* Added missing info about remaining shares in super-shamir recovery." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.7-universal.json +var require_t3t1_2_8_7_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.7-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 7], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 9], + firmware_revision: "8a254aa8eae82f99630df63f40e4d290066a3efc", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.7.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.7.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.7.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.7.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.7.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.7.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.7.bin", + fingerprint: "be15ee1f4b7891dc965512455f8d17067ff54a7047e28ed06cec8d56529ab2ef", + changelog: "* Show last typed PIN number for short period of time.\n* Multisig-related changes.\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\n* Included new version of bootloader (2.1.9).\n* Fix ETH account number detection.\n* Show account info in ETH send/stake flow.\n* Fix XPUB confirmed success screen title.\n* New EVM call contract flow UI.\n* Fix incorrect navigation in handy menu while signing BTC message.\n* Fix translation of the 'Enable labeling' screen." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.9-universal.json +var require_t3t1_2_8_9_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.9-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 8, 9], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "fad9682201cf9289bba2adb66e6e07ed1cf78936", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.9.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.8.9.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.8.9.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.9.bin", + "it-IT": "firmware/translations/t3t1/translation-T3T1-it-IT-2.8.9.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.9.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.8.9.bin", + fingerprint: "3a0228ae58bfd65ba341b33a34138d0d70a9a16f5d2db387f9ee2659d797dedf", + changelog: '* Ability to cancel recovery flow on word count selection screen.\n* New UI for confirming long messages.\n* Solana staking confirmation dialogs.\n* Changed "swipe to continue" to "tap to continue". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen.' + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.9.1-universal.json +var require_t3t1_2_9_1_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.9.1-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 1], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 6], + min_firmware_version: [2, 7, 2], + bootloader_version: [2, 1, 10], + firmware_revision: "acd56d0113a547e9b5983510b0ce9de079e30e05", + translations: { + "cs-CZ": "firmware/translations/t3t1/translation-T3T1-cs-CZ-2.9.1.bin", + "de-DE": "firmware/translations/t3t1/translation-T3T1-de-DE-2.9.1.bin", + "es-ES": "firmware/translations/t3t1/translation-T3T1-es-ES-2.9.1.bin", + "fr-FR": "firmware/translations/t3t1/translation-T3T1-fr-FR-2.9.1.bin", + "pt-BR": "firmware/translations/t3t1/translation-T3T1-pt-BR-2.9.1.bin" + }, + url: "firmware/t3t1/trezor-t3t1-2.9.1.bin", + fingerprint: "2db8a9aace0557a348237c0a2d2fb44249714d7e2002f253ed06446701f7658a", + changelog: "* Add support for signing arbitrary messages in Cardano.\n* Provider contract address in ETH approve.\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\n* Improved Stellar transaction signing interface for a more streamlined user experience.\n* Limit swipe detection to the component's bounds.\n* Make space between value and unit non-breakable.\n* Do not hide the shown PIN until the touch is released.\n* Fixed Solana signature failure.\n* Fix incomplete disabling of haptics.\n* Other small improvements and bug fixes." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json +var require_t3w1_2_9_3_bitcoinonly = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 13], + min_firmware_version: [2, 9, 3], + bootloader_version: [2, 1, 14], + firmware_revision: "0bd923c78990d8d58f82fe18660e57399aafc0f1", + translations: { + "cs-CZ": "firmware/translations/t3w1/translation-T3W1-cs-CZ-2.9.3.bin", + "de-DE": "firmware/translations/t3w1/translation-T3W1-de-DE-2.9.3.bin", + "es-ES": "firmware/translations/t3w1/translation-T3W1-es-ES-2.9.3.bin", + "fr-FR": "firmware/translations/t3w1/translation-T3W1-fr-FR-2.9.3.bin", + "pt-BR": "firmware/translations/t3w1/translation-T3W1-pt-BR-2.9.3.bin" + }, + url: "firmware/t3w1/trezor-t3w1-2.9.3-bitcoinonly.bin", + fingerprint: "f5875ebd0521f60f09cf4a82775aa1f024538b7f88bcbf3984af62c557bed21a", + changelog: "* Public release of TS7 firmware." + }; + } +}); + +// node_modules/@trezor/connect-common/files/firmware/t3w1/universal/t3w1-2.9.3-universal.json +var require_t3w1_2_9_3_universal = __commonJS({ + "node_modules/@trezor/connect-common/files/firmware/t3w1/universal/t3w1-2.9.3-universal.json"(exports2, module2) { + module2.exports = { + required: false, + version: [2, 9, 3], + min_bridge_version: [2, 0, 7], + min_bootloader_version: [2, 1, 13], + min_firmware_version: [2, 9, 3], + bootloader_version: [2, 1, 14], + firmware_revision: "0bd923c78990d8d58f82fe18660e57399aafc0f1", + translations: { + "cs-CZ": "firmware/translations/t3w1/translation-T3W1-cs-CZ-2.9.3.bin", + "de-DE": "firmware/translations/t3w1/translation-T3W1-de-DE-2.9.3.bin", + "es-ES": "firmware/translations/t3w1/translation-T3W1-es-ES-2.9.3.bin", + "fr-FR": "firmware/translations/t3w1/translation-T3W1-fr-FR-2.9.3.bin", + "pt-BR": "firmware/translations/t3w1/translation-T3W1-pt-BR-2.9.3.bin" + }, + url: "firmware/t3w1/trezor-t3w1-2.9.3.bin", + fingerprint: "7069b1bc408b4d250cc4409e7a1bcdceb10c458b8c2b5e6b70ec32432c41d9b2", + changelog: "* Public release of TS7 firmware." + }; + } +}); + +// node_modules/@trezor/connect-common/lib/map-releases.js +var require_map_releases = __commonJS({ + "node_modules/@trezor/connect-common/lib/map-releases.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.firmwareAssets = void 0; + exports2.firmwareAssets = { + release: { + "releases.v1": require_releases_v1() + }, + t1b1: { + bitcoinonly: { + "t1b1-1.10.0-bitcoinonly": require_t1b1_1_10_0_bitcoinonly(), + "t1b1-1.10.1-bitcoinonly": require_t1b1_1_10_1_bitcoinonly(), + "t1b1-1.10.2-bitcoinonly": require_t1b1_1_10_2_bitcoinonly(), + "t1b1-1.10.3-bitcoinonly": require_t1b1_1_10_3_bitcoinonly(), + "t1b1-1.10.4-bitcoinonly": require_t1b1_1_10_4_bitcoinonly(), + "t1b1-1.10.5-bitcoinonly": require_t1b1_1_10_5_bitcoinonly(), + "t1b1-1.11.1-bitcoinonly": require_t1b1_1_11_1_bitcoinonly(), + "t1b1-1.11.2-bitcoinonly": require_t1b1_1_11_2_bitcoinonly(), + "t1b1-1.12.1-bitcoinonly": require_t1b1_1_12_1_bitcoinonly(), + "t1b1-1.13.0-bitcoinonly": require_t1b1_1_13_0_bitcoinonly(), + "t1b1-1.13.1-bitcoinonly": require_t1b1_1_13_1_bitcoinonly(), + "t1b1-1.8.3-bitcoinonly": require_t1b1_1_8_3_bitcoinonly(), + "t1b1-1.9.0-bitcoinonly": require_t1b1_1_9_0_bitcoinonly(), + "t1b1-1.9.1-bitcoinonly": require_t1b1_1_9_1_bitcoinonly(), + "t1b1-1.9.2-bitcoinonly": require_t1b1_1_9_2_bitcoinonly(), + "t1b1-1.9.3-bitcoinonly": require_t1b1_1_9_3_bitcoinonly(), + "t1b1-1.9.4-bitcoinonly": require_t1b1_1_9_4_bitcoinonly() + }, + universal: { + "t1b1-1.10.0-universal": require_t1b1_1_10_0_universal(), + "t1b1-1.10.1-universal": require_t1b1_1_10_1_universal(), + "t1b1-1.10.2-universal": require_t1b1_1_10_2_universal(), + "t1b1-1.10.3-universal": require_t1b1_1_10_3_universal(), + "t1b1-1.10.4-universal": require_t1b1_1_10_4_universal(), + "t1b1-1.10.5-universal": require_t1b1_1_10_5_universal(), + "t1b1-1.11.1-universal": require_t1b1_1_11_1_universal(), + "t1b1-1.11.2-universal": require_t1b1_1_11_2_universal(), + "t1b1-1.12.1-universal": require_t1b1_1_12_1_universal(), + "t1b1-1.13.0-universal": require_t1b1_1_13_0_universal(), + "t1b1-1.13.1-universal": require_t1b1_1_13_1_universal(), + "t1b1-1.3.6-universal": require_t1b1_1_3_6_universal(), + "t1b1-1.4.0-universal": require_t1b1_1_4_0_universal(), + "t1b1-1.4.1-universal": require_t1b1_1_4_1_universal(), + "t1b1-1.4.2-universal": require_t1b1_1_4_2_universal(), + "t1b1-1.5.0-universal": require_t1b1_1_5_0_universal(), + "t1b1-1.5.1-universal": require_t1b1_1_5_1_universal(), + "t1b1-1.5.2-universal": require_t1b1_1_5_2_universal(), + "t1b1-1.6.0-universal": require_t1b1_1_6_0_universal(), + "t1b1-1.6.1-universal": require_t1b1_1_6_1_universal(), + "t1b1-1.6.2-universal": require_t1b1_1_6_2_universal(), + "t1b1-1.6.3-universal": require_t1b1_1_6_3_universal(), + "t1b1-1.7.1-universal": require_t1b1_1_7_1_universal(), + "t1b1-1.7.2-universal": require_t1b1_1_7_2_universal(), + "t1b1-1.7.3-universal": require_t1b1_1_7_3_universal(), + "t1b1-1.8.0-universal": require_t1b1_1_8_0_universal(), + "t1b1-1.8.1-universal": require_t1b1_1_8_1_universal(), + "t1b1-1.8.2-universal": require_t1b1_1_8_2_universal(), + "t1b1-1.8.3-universal": require_t1b1_1_8_3_universal(), + "t1b1-1.9.0-universal": require_t1b1_1_9_0_universal(), + "t1b1-1.9.1-universal": require_t1b1_1_9_1_universal(), + "t1b1-1.9.2-universal": require_t1b1_1_9_2_universal(), + "t1b1-1.9.3-universal": require_t1b1_1_9_3_universal(), + "t1b1-1.9.4-universal": require_t1b1_1_9_4_universal() + } + }, + t2b1: { + bitcoinonly: { + "t2b1-2.6.3-bitcoinonly": require_t2b1_2_6_3_bitcoinonly(), + "t2b1-2.6.4-bitcoinonly": require_t2b1_2_6_4_bitcoinonly(), + "t2b1-2.7.0-bitcoinonly": require_t2b1_2_7_0_bitcoinonly(), + "t2b1-2.7.2-bitcoinonly": require_t2b1_2_7_2_bitcoinonly(), + "t2b1-2.8.0-bitcoinonly": require_t2b1_2_8_0_bitcoinonly(), + "t2b1-2.8.10-bitcoinonly": require_t2b1_2_8_10_bitcoinonly(), + "t2b1-2.8.7-bitcoinonly": require_t2b1_2_8_7_bitcoinonly(), + "t2b1-2.8.9-bitcoinonly": require_t2b1_2_8_9_bitcoinonly(), + "t2b1-2.9.1-bitcoinonly": require_t2b1_2_9_1_bitcoinonly() + }, + universal: { + "t2b1-2.6.3-universal": require_t2b1_2_6_3_universal(), + "t2b1-2.6.4-universal": require_t2b1_2_6_4_universal(), + "t2b1-2.7.0-universal": require_t2b1_2_7_0_universal(), + "t2b1-2.7.2-universal": require_t2b1_2_7_2_universal(), + "t2b1-2.8.0-universal": require_t2b1_2_8_0_universal(), + "t2b1-2.8.10-universal": require_t2b1_2_8_10_universal(), + "t2b1-2.8.7-universal": require_t2b1_2_8_7_universal(), + "t2b1-2.8.9-universal": require_t2b1_2_8_9_universal(), + "t2b1-2.9.1-universal": require_t2b1_2_9_1_universal() + } + }, + t2t1: { + bitcoinonly: { + "t2t1-2.1.5-bitcoinonly": require_t2t1_2_1_5_bitcoinonly(), + "t2t1-2.1.6-bitcoinonly": require_t2t1_2_1_6_bitcoinonly(), + "t2t1-2.1.7-bitcoinonly": require_t2t1_2_1_7_bitcoinonly(), + "t2t1-2.1.8-bitcoinonly": require_t2t1_2_1_8_bitcoinonly(), + "t2t1-2.3.0-bitcoinonly": require_t2t1_2_3_0_bitcoinonly(), + "t2t1-2.3.1-bitcoinonly": require_t2t1_2_3_1_bitcoinonly(), + "t2t1-2.3.2-bitcoinonly": require_t2t1_2_3_2_bitcoinonly(), + "t2t1-2.3.3-bitcoinonly": require_t2t1_2_3_3_bitcoinonly(), + "t2t1-2.3.4-bitcoinonly": require_t2t1_2_3_4_bitcoinonly(), + "t2t1-2.3.5-bitcoinonly": require_t2t1_2_3_5_bitcoinonly(), + "t2t1-2.3.6-bitcoinonly": require_t2t1_2_3_6_bitcoinonly(), + "t2t1-2.4.0-bitcoinonly": require_t2t1_2_4_0_bitcoinonly(), + "t2t1-2.4.1-bitcoinonly": require_t2t1_2_4_1_bitcoinonly(), + "t2t1-2.4.2-bitcoinonly": require_t2t1_2_4_2_bitcoinonly(), + "t2t1-2.4.3-bitcoinonly": require_t2t1_2_4_3_bitcoinonly(), + "t2t1-2.5.1-bitcoinonly": require_t2t1_2_5_1_bitcoinonly(), + "t2t1-2.5.2-bitcoinonly": require_t2t1_2_5_2_bitcoinonly(), + "t2t1-2.5.3-bitcoinonly": require_t2t1_2_5_3_bitcoinonly(), + "t2t1-2.6.0-bitcoinonly": require_t2t1_2_6_0_bitcoinonly(), + "t2t1-2.6.3-bitcoinonly": require_t2t1_2_6_3_bitcoinonly(), + "t2t1-2.6.4-bitcoinonly": require_t2t1_2_6_4_bitcoinonly(), + "t2t1-2.7.0-bitcoinonly": require_t2t1_2_7_0_bitcoinonly(), + "t2t1-2.7.2-bitcoinonly": require_t2t1_2_7_2_bitcoinonly(), + "t2t1-2.8.1-bitcoinonly": require_t2t1_2_8_1_bitcoinonly(), + "t2t1-2.8.10-bitcoinonly": require_t2t1_2_8_10_bitcoinonly(), + "t2t1-2.8.7-bitcoinonly": require_t2t1_2_8_7_bitcoinonly(), + "t2t1-2.8.8-bitcoinonly": require_t2t1_2_8_8_bitcoinonly(), + "t2t1-2.8.9-bitcoinonly": require_t2t1_2_8_9_bitcoinonly(), + "t2t1-2.9.1-bitcoinonly": require_t2t1_2_9_1_bitcoinonly() + }, + universal: { + "t2t1-2.0.10-universal": require_t2t1_2_0_10_universal(), + "t2t1-2.0.5-universal": require_t2t1_2_0_5_universal(), + "t2t1-2.0.6-universal": require_t2t1_2_0_6_universal(), + "t2t1-2.0.7-universal": require_t2t1_2_0_7_universal(), + "t2t1-2.0.8-universal": require_t2t1_2_0_8_universal(), + "t2t1-2.0.9-universal": require_t2t1_2_0_9_universal(), + "t2t1-2.1.0-universal": require_t2t1_2_1_0_universal(), + "t2t1-2.1.1-universal": require_t2t1_2_1_1_universal(), + "t2t1-2.1.4-universal": require_t2t1_2_1_4_universal(), + "t2t1-2.1.5-universal": require_t2t1_2_1_5_universal(), + "t2t1-2.1.6-universal": require_t2t1_2_1_6_universal(), + "t2t1-2.1.7-universal": require_t2t1_2_1_7_universal(), + "t2t1-2.1.8-universal": require_t2t1_2_1_8_universal(), + "t2t1-2.3.0-universal": require_t2t1_2_3_0_universal(), + "t2t1-2.3.1-universal": require_t2t1_2_3_1_universal(), + "t2t1-2.3.2-universal": require_t2t1_2_3_2_universal(), + "t2t1-2.3.3-universal": require_t2t1_2_3_3_universal(), + "t2t1-2.3.4-universal": require_t2t1_2_3_4_universal(), + "t2t1-2.3.5-universal": require_t2t1_2_3_5_universal(), + "t2t1-2.3.6-universal": require_t2t1_2_3_6_universal(), + "t2t1-2.4.0-universal": require_t2t1_2_4_0_universal(), + "t2t1-2.4.1-universal": require_t2t1_2_4_1_universal(), + "t2t1-2.4.2-universal": require_t2t1_2_4_2_universal(), + "t2t1-2.4.3-universal": require_t2t1_2_4_3_universal(), + "t2t1-2.5.1-universal": require_t2t1_2_5_1_universal(), + "t2t1-2.5.2-universal": require_t2t1_2_5_2_universal(), + "t2t1-2.5.3-universal": require_t2t1_2_5_3_universal(), + "t2t1-2.6.0-universal": require_t2t1_2_6_0_universal(), + "t2t1-2.6.3-universal": require_t2t1_2_6_3_universal(), + "t2t1-2.6.4-universal": require_t2t1_2_6_4_universal(), + "t2t1-2.7.0-universal": require_t2t1_2_7_0_universal(), + "t2t1-2.7.2-universal": require_t2t1_2_7_2_universal(), + "t2t1-2.8.1-universal": require_t2t1_2_8_1_universal(), + "t2t1-2.8.10-universal": require_t2t1_2_8_10_universal(), + "t2t1-2.8.7-universal": require_t2t1_2_8_7_universal(), + "t2t1-2.8.8-universal": require_t2t1_2_8_8_universal(), + "t2t1-2.8.9-universal": require_t2t1_2_8_9_universal(), + "t2t1-2.9.1-universal": require_t2t1_2_9_1_universal() + } + }, + t3b1: { + bitcoinonly: { + "t3b1-2.8.10-bitcoinonly": require_t3b1_2_8_10_bitcoinonly(), + "t3b1-2.8.3-bitcoinonly": require_t3b1_2_8_3_bitcoinonly(), + "t3b1-2.8.7-bitcoinonly": require_t3b1_2_8_7_bitcoinonly(), + "t3b1-2.8.9-bitcoinonly": require_t3b1_2_8_9_bitcoinonly(), + "t3b1-2.9.1-bitcoinonly": require_t3b1_2_9_1_bitcoinonly() + }, + universal: { + "t3b1-2.8.10-universal": require_t3b1_2_8_10_universal(), + "t3b1-2.8.3-universal": require_t3b1_2_8_3_universal(), + "t3b1-2.8.7-universal": require_t3b1_2_8_7_universal(), + "t3b1-2.8.9-universal": require_t3b1_2_8_9_universal(), + "t3b1-2.9.1-universal": require_t3b1_2_9_1_universal() + } + }, + t3t1: { + bitcoinonly: { + "t3t1-2.7.2-bitcoinonly": require_t3t1_2_7_2_bitcoinonly(), + "t3t1-2.8.0-bitcoinonly": require_t3t1_2_8_0_bitcoinonly(), + "t3t1-2.8.1-bitcoinonly": require_t3t1_2_8_1_bitcoinonly(), + "t3t1-2.8.10-bitcoinonly": require_t3t1_2_8_10_bitcoinonly(), + "t3t1-2.8.3-bitcoinonly": require_t3t1_2_8_3_bitcoinonly(), + "t3t1-2.8.7-bitcoinonly": require_t3t1_2_8_7_bitcoinonly(), + "t3t1-2.8.9-bitcoinonly": require_t3t1_2_8_9_bitcoinonly(), + "t3t1-2.9.1-bitcoinonly": require_t3t1_2_9_1_bitcoinonly() + }, + universal: { + "t3t1-2.7.2-universal": require_t3t1_2_7_2_universal(), + "t3t1-2.8.0-universal": require_t3t1_2_8_0_universal(), + "t3t1-2.8.1-universal": require_t3t1_2_8_1_universal(), + "t3t1-2.8.10-universal": require_t3t1_2_8_10_universal(), + "t3t1-2.8.3-universal": require_t3t1_2_8_3_universal(), + "t3t1-2.8.7-universal": require_t3t1_2_8_7_universal(), + "t3t1-2.8.9-universal": require_t3t1_2_8_9_universal(), + "t3t1-2.9.1-universal": require_t3t1_2_9_1_universal() + } + }, + t3w1: { + bitcoinonly: { + "t3w1-2.9.3-bitcoinonly": require_t3w1_2_9_3_bitcoinonly() + }, + universal: { + "t3w1-2.9.3-universal": require_t3w1_2_9_3_universal() + } + } + }; + } +}); + +// node_modules/@trezor/connect-common/lib/index.js +var require_lib5 = __commonJS({ + "node_modules/@trezor/connect-common/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_storage(), exports2); + tslib_1.__exportStar(require_abstract(), exports2); + tslib_1.__exportStar(require_window_window(), exports2); + tslib_1.__exportStar(require_serviceworker_window(), exports2); + tslib_1.__exportStar(require_window_serviceworker(), exports2); + tslib_1.__exportStar(require_systemInfo(), exports2); + tslib_1.__exportStar(require_map_releases(), exports2); + } +}); + +// node_modules/@trezor/transport/lib/errors.js +var require_errors5 = __commonJS({ + "node_modules/@trezor/transport/lib/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.THP_STATE_MISSING = exports2.LIBUSB_ERROR_ACCESS = exports2.ABORTED_BY_TIMEOUT = exports2.ABORTED_BY_SIGNAL = exports2.UNEXPECTED_ERROR = exports2.API_DISCONNECTED = exports2.HTTP_ERROR = exports2.OTHER_CALL_IN_PROGRESS = exports2.DEVICE_DISCONNECTED_DURING_ACTION = exports2.WRONG_ENVIRONMENT = exports2.WRONG_RESULT_TYPE = exports2.NATIVE_INTERFACE_NOT_AVAILABLE = exports2.ALREADY_LISTENING = exports2.SESSION_BACKGROUND_TIMEOUT = exports2.SESSION_NOT_FOUND = exports2.SESSION_WRONG_PREVIOUS = exports2.DEVICE_UNREADABLE = exports2.DEVICE_NOT_FOUND = exports2.INTERFACE_DATA_TRANSFER = exports2.INTERFACE_UNABLE_TO_CLOSE_DEVICE = exports2.INTERFACE_UNABLE_TO_OPEN_DEVICE = void 0; + exports2.INTERFACE_UNABLE_TO_OPEN_DEVICE = "Unable to open device"; + exports2.INTERFACE_UNABLE_TO_CLOSE_DEVICE = "Unable to close device"; + exports2.INTERFACE_DATA_TRANSFER = "A transfer error has occurred."; + exports2.DEVICE_NOT_FOUND = "device not found"; + exports2.DEVICE_UNREADABLE = "Device unreadable"; + exports2.SESSION_WRONG_PREVIOUS = "wrong previous session"; + exports2.SESSION_NOT_FOUND = "session not found"; + exports2.SESSION_BACKGROUND_TIMEOUT = "sessions background did not respond"; + exports2.ALREADY_LISTENING = "already listening"; + exports2.NATIVE_INTERFACE_NOT_AVAILABLE = "interface not available"; + exports2.WRONG_RESULT_TYPE = "Wrong result type."; + exports2.WRONG_ENVIRONMENT = "This transport can not be used in this environment"; + exports2.DEVICE_DISCONNECTED_DURING_ACTION = "device disconnected during action"; + exports2.OTHER_CALL_IN_PROGRESS = "other call in progress"; + exports2.HTTP_ERROR = "Network request failed"; + exports2.API_DISCONNECTED = "Api disconnected"; + exports2.UNEXPECTED_ERROR = "unexpected error"; + exports2.ABORTED_BY_SIGNAL = "Aborted by signal"; + exports2.ABORTED_BY_TIMEOUT = "Aborted by timeout"; + exports2.LIBUSB_ERROR_ACCESS = "LIBUSB_ERROR_ACCESS"; + exports2.THP_STATE_MISSING = "ThpStateMissing"; + } +}); + +// node_modules/@trezor/transport/lib/constants.js +var require_constants2 = __commonJS({ + "node_modules/@trezor/transport/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DEVICE_TYPE = exports2.TRANSPORT = exports2.ACTION_TIMEOUT = exports2.TREZOR_USB_DESCRIPTORS = exports2.WEBUSB_BOOTLOADER_PRODUCT = exports2.T1_HID_PRODUCT = exports2.T1_HID_VENDOR = exports2.DEBUGLINK_ENDPOINT_ID = exports2.DEBUGLINK_INTERFACE_ID = exports2.ENDPOINT_ID = exports2.INTERFACE_ID = exports2.CONFIGURATION_ID = void 0; + exports2.CONFIGURATION_ID = 1; + exports2.INTERFACE_ID = 0; + exports2.ENDPOINT_ID = 1; + exports2.DEBUGLINK_INTERFACE_ID = 1; + exports2.DEBUGLINK_ENDPOINT_ID = 2; + exports2.T1_HID_VENDOR = 21324; + exports2.T1_HID_PRODUCT = 1; + var WEBUSB_FIRMWARE_PRODUCT = 21441; + exports2.WEBUSB_BOOTLOADER_PRODUCT = 21440; + exports2.TREZOR_USB_DESCRIPTORS = [{ + vendorId: 21324, + productId: exports2.T1_HID_PRODUCT + }, { + vendorId: 4617, + productId: exports2.WEBUSB_BOOTLOADER_PRODUCT + }, { + vendorId: 4617, + productId: WEBUSB_FIRMWARE_PRODUCT + }]; + exports2.ACTION_TIMEOUT = 1e4; + exports2.TRANSPORT = { + START: "transport-start", + ERROR: "transport-error", + STOPPED: "transport-stopped", + DEVICE_CONNECTED: "transport-device_connected", + DEVICE_DISCONNECTED: "transport-device_disconnected", + DEVICE_SESSION_CHANGED: "transport-device_session_changed", + DEVICE_REQUEST_RELEASE: "transport-device_request_release", + SEND_MESSAGE_PROGRESS: "transport-send_message_progress", + TREZOR_PUSH_NOTIFICATION: "trezor-push-notification", + BATTERY_LEVEL: "battery-level", + DISABLE_WEBUSB: "transport-disable_webusb", + REQUEST_DEVICE: "transport-request_device", + GET_INFO: "transport-get_info", + SET_TRANSPORTS: "transport-set_transports" + }; + var DEVICE_TYPE; + (function(DEVICE_TYPE2) { + DEVICE_TYPE2[DEVICE_TYPE2["TypeT1Hid"] = 0] = "TypeT1Hid"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeT1Webusb"] = 1] = "TypeT1Webusb"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeT1WebusbBoot"] = 2] = "TypeT1WebusbBoot"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeT2"] = 3] = "TypeT2"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeT2Boot"] = 4] = "TypeT2Boot"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeEmulator"] = 5] = "TypeEmulator"; + DEVICE_TYPE2[DEVICE_TYPE2["TypeBluetooth"] = 6] = "TypeBluetooth"; + })(DEVICE_TYPE || (exports2.DEVICE_TYPE = DEVICE_TYPE = {})); + } +}); + +// node_modules/@trezor/transport/lib/utils/result.js +var require_result = __commonJS({ + "node_modules/@trezor/transport/lib/utils/result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.unknownError = exports2.error = exports2.success = void 0; + var errors_1 = require_errors5(); + var success = (payload) => ({ + success: true, + payload + }); + exports2.success = success; + var error = ({ + error: error2, + message + }) => ({ + success: false, + error: error2, + message + }); + exports2.error = error; + var unknownError = (err2, expectedErrors = []) => { + const expectedErr = expectedErrors.find((eE) => eE === err2.message); + if (expectedErr) { + return (0, exports2.error)({ + error: expectedErr + }); + } + return { + success: false, + error: errors_1.UNEXPECTED_ERROR, + message: err2.message + }; + }; + exports2.unknownError = unknownError; + } +}); + +// node_modules/@trezor/transport/lib/transports/abstract.js +var require_abstract2 = __commonJS({ + "node_modules/@trezor/transport/lib/transports/abstract.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AbstractTransport = exports2.isTransportInstance = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var protobuf_1 = require_lib3(); + var utils_1 = require_lib(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var result_1 = require_result(); + var isTransportInstance = (transport) => { + const requiredMethods = ["init", "enumerate", "listen", "acquire", "release", "send", "receive", "call"]; + if (transport && typeof transport === "object") { + return !requiredMethods.some((m) => typeof transport[m] !== "function"); + } + return false; + }; + exports2.isTransportInstance = isTransportInstance; + var getKey = ({ + path: path2, + product + }) => `${path2}${product}`; + var AbstractTransport = class extends utils_1.TypedEmitter { + isOutdated = false; + version = ""; + stopped = true; + listening = false; + messages; + descriptors; + abortController; + logger; + id; + deviceEvents; + constructor({ + messages, + logger, + id + }) { + super(); + this.descriptors = []; + this.messages = (0, protobuf_1.parseConfigure)(messages); + this.abortController = new AbortController(); + this.logger = logger; + this.id = id; + this.deviceEvents = new utils_1.TypedEmitter(); + } + get apiType() { + return "usb"; + } + ping(_params) { + return Promise.resolve(false); + } + subscribe(_params) { + return Promise.reject(new Error(`${this.name} does not support the 'subscribe' method.`)); + } + stop() { + this.emit(constants_1.TRANSPORT.STOPPED); + this.removeAllListeners(); + this.deviceEvents.removeAllListeners(); + this.stopped = true; + this.listening = false; + this.abortController.abort(); + this.abortController = new AbortController(); + this.descriptors = []; + } + handleDescriptorsChange(nextDescriptors) { + if (this.stopped) { + return; + } + const oldDescriptors = new Map(this.descriptors.map((d) => [getKey(d), d])); + const newDescriptors = new Map(nextDescriptors.map((d) => [getKey(d), d])); + this.descriptors.filter((d) => !newDescriptors.has(getKey(d))).forEach((descriptor) => this.deviceEvents.emit(descriptor.path, { + type: constants_1.TRANSPORT.DEVICE_DISCONNECTED + })); + nextDescriptors.forEach((descriptor) => { + const prevDescriptor = oldDescriptors.get(getKey(descriptor)); + if (!prevDescriptor) { + this.emit(constants_1.TRANSPORT.DEVICE_CONNECTED, descriptor); + } else if (prevDescriptor.session !== descriptor.session) { + this.deviceEvents.emit(descriptor.path, { + type: constants_1.TRANSPORT.DEVICE_SESSION_CHANGED, + descriptor + }); + } + }); + this.descriptors = nextDescriptors; + } + getDescriptor(path2) { + return this.descriptors.find((d) => d.path === path2); + } + getMessage(message = "GetFeatures") { + return !!this.messages.get(message); + } + getMessages() { + return this.messages; + } + updateMessages(messages) { + this.messages = (0, protobuf_1.parseConfigure)(messages); + } + loadMessages(packageName, packageLoader) { + return (0, protobuf_1.loadDefinitions)(this.messages, packageName, packageLoader); + } + success(payload) { + return (0, result_1.success)(payload); + } + error(payload) { + return (0, result_1.error)(payload); + } + unknownError = (err2, expectedErrors = []) => { + this.logger?.error(this.name, "unexpected error: ", err2); + return (0, result_1.unknownError)(typeof err2 !== "string" ? err2 : new Error(err2), expectedErrors); + }; + mergeAbort(signal) { + if (!signal) { + return { + signal: this.abortController.signal, + clear: () => { + } + }; + } + const controller = new AbortController(); + const onAbort = () => controller.abort(); + signal.addEventListener("abort", onAbort); + if (signal.aborted) controller.abort(signal.reason); + this.abortController.signal.addEventListener("abort", onAbort); + const clear = () => { + signal.removeEventListener("abort", onAbort); + this.abortController.signal.removeEventListener("abort", onAbort); + }; + return { + signal: controller.signal, + clear + }; + } + scheduleAction = (action, params, errors = []) => { + const { + signal, + clear + } = this.mergeAbort(params?.signal); + return (0, utils_1.scheduleAction)(action, { + timeout: constants_1.ACTION_TIMEOUT, + ...params, + signal + }).catch((err2) => (0, result_1.unknownError)(err2, [ERRORS.ABORTED_BY_TIMEOUT, ERRORS.ABORTED_BY_SIGNAL, ...errors])).finally(clear); + }; + }; + exports2.AbstractTransport = AbstractTransport; + } +}); + +// node_modules/@trezor/protocol/lib/errors.js +var require_errors6 = __commonJS({ + "node_modules/@trezor/protocol/lib/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PROTOCOL_MISSMATCH_VERSION = exports2.PROTOCOL_MALFORMED = void 0; + exports2.PROTOCOL_MALFORMED = "Malformed protocol format"; + exports2.PROTOCOL_MISSMATCH_VERSION = "Protocol missmatch version"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v1/constants.js +var require_constants3 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v1/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.HEADER_SIZE = exports2.MESSAGE_HEADER_BYTE = exports2.MESSAGE_MAGIC_HEADER_BYTE = void 0; + exports2.MESSAGE_MAGIC_HEADER_BYTE = 63; + exports2.MESSAGE_HEADER_BYTE = 35; + exports2.HEADER_SIZE = 1 + 1 + 1 + 2 + 4; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v1/decode.js +var require_decode2 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v1/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = void 0; + var errors_1 = require_errors6(); + var constants_1 = require_constants3(); + var readHeaderChunked = (buffer) => { + const magic = buffer.readUInt8(); + const sharp1 = buffer.readUInt8(1); + const sharp2 = buffer.readUInt8(2); + const messageType = buffer.readUInt16BE(3); + const length = buffer.readUInt32BE(5); + return { + magic, + sharp1, + sharp2, + messageType, + length + }; + }; + var decode = (bytes) => { + if (bytes.byteLength === 0) { + console.error("protocol-v1: decode: received empty buffer"); + } + if (bytes.byteLength < constants_1.HEADER_SIZE) { + throw new Error(errors_1.PROTOCOL_MALFORMED); + } + const { + magic, + sharp1, + sharp2, + messageType, + length + } = readHeaderChunked(bytes); + if (magic !== constants_1.MESSAGE_MAGIC_HEADER_BYTE || sharp1 !== constants_1.MESSAGE_HEADER_BYTE || sharp2 !== constants_1.MESSAGE_HEADER_BYTE) { + throw new Error(errors_1.PROTOCOL_MALFORMED); + } + return { + header: bytes.subarray(0, 3), + length, + messageType, + payload: bytes.subarray(constants_1.HEADER_SIZE) + }; + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v1/encode.js +var require_encode2 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v1/encode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.encode = exports2.getHeaders = void 0; + var constants_1 = require_constants3(); + var getHeaders = () => { + const header = Buffer.alloc(3); + header.writeUInt8(constants_1.MESSAGE_MAGIC_HEADER_BYTE, 0); + header.writeUInt8(constants_1.MESSAGE_HEADER_BYTE, 1); + header.writeUInt8(constants_1.MESSAGE_HEADER_BYTE, 2); + const chunkHeader = Buffer.alloc(1); + chunkHeader.writeUInt8(constants_1.MESSAGE_MAGIC_HEADER_BYTE); + return [header, chunkHeader]; + }; + exports2.getHeaders = getHeaders; + var encode = (data, options) => { + const { + messageType + } = options; + if (typeof messageType === "string") { + throw new Error(`Unsupported message type ${messageType}`); + } + const fullSize = constants_1.HEADER_SIZE + data.length; + const encodedBuffer = Buffer.alloc(fullSize); + const [header] = (0, exports2.getHeaders)(data); + header.copy(encodedBuffer); + encodedBuffer.writeUInt16BE(messageType, 3); + encodedBuffer.writeUInt32BE(data.length, 5); + data.copy(encodedBuffer, constants_1.HEADER_SIZE); + return encodedBuffer; + }; + exports2.encode = encode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v1/index.js +var require_protocol_v1 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v1/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.name = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode2(), exports2); + tslib_1.__exportStar(require_encode2(), exports2); + exports2.name = "v1"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v2/constants.js +var require_constants4 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v2/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MESSAGE_TYPE = exports2.MESSAGE_LEN_SIZE = exports2.HEADER_SIZE = void 0; + exports2.HEADER_SIZE = 1 + 2; + exports2.MESSAGE_LEN_SIZE = 2; + exports2.MESSAGE_TYPE = "TrezorHostProtocolMessage"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/constants.js +var require_constants5 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TAG_LENGTH = exports2.CRC_LENGTH = exports2.THP_DEFAULT_CHANNEL = exports2.THP_CONTINUATION_PACKET = exports2.THP_CONTROL_BYTE_DECRYPTED = exports2.THP_CONTROL_BYTE_ENCRYPTED = exports2.THP_READ_ACK_HEADER_BYTE = exports2.THP_ERROR_HEADER_BYTE = exports2.THP_HANDSHAKE_COMPLETION_RESPONSE = exports2.THP_HANDSHAKE_COMPLETION_REQUEST = exports2.THP_HANDSHAKE_INIT_RESPONSE = exports2.THP_HANDSHAKE_INIT_REQUEST = exports2.THP_CREATE_CHANNEL_RESPONSE = exports2.THP_CREATE_CHANNEL_REQUEST = void 0; + exports2.THP_CREATE_CHANNEL_REQUEST = 64; + exports2.THP_CREATE_CHANNEL_RESPONSE = 65; + exports2.THP_HANDSHAKE_INIT_REQUEST = 0; + exports2.THP_HANDSHAKE_INIT_RESPONSE = 1; + exports2.THP_HANDSHAKE_COMPLETION_REQUEST = 2; + exports2.THP_HANDSHAKE_COMPLETION_RESPONSE = 3; + exports2.THP_ERROR_HEADER_BYTE = 66; + exports2.THP_READ_ACK_HEADER_BYTE = 32; + exports2.THP_CONTROL_BYTE_ENCRYPTED = 4; + exports2.THP_CONTROL_BYTE_DECRYPTED = 5; + exports2.THP_CONTINUATION_PACKET = 128; + exports2.THP_DEFAULT_CHANNEL = Buffer.from([255, 255]); + exports2.CRC_LENGTH = 4; + exports2.TAG_LENGTH = 16; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v2/encode.js +var require_encode3 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v2/encode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.encode = exports2.getHeaders = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ERRORS = tslib_1.__importStar(require_errors6()); + var constants_1 = require_constants4(); + var constants_2 = require_constants5(); + var getChunkHeader = (data) => { + if (data.byteLength < constants_1.HEADER_SIZE) { + throw new Error(ERRORS.PROTOCOL_MALFORMED); + } + const channel = data.subarray(1, constants_1.HEADER_SIZE); + const header = Buffer.concat([Buffer.from([constants_2.THP_CONTINUATION_PACKET]), channel]); + return header; + }; + var getHeaders = (data) => { + const chunkHeader = getChunkHeader(data); + return [data.subarray(0, constants_1.HEADER_SIZE), chunkHeader]; + }; + exports2.getHeaders = getHeaders; + var encode = (data, options) => { + if (options.messageType === constants_1.MESSAGE_TYPE) { + if (!options.header || options.header.byteLength !== constants_1.HEADER_SIZE) { + throw new Error(`${options.messageType} unexpected header ${options.header?.toString("hex")}`); + } + const length = Buffer.alloc(constants_1.MESSAGE_LEN_SIZE); + length.writeUInt16BE(data.length); + return Buffer.concat([options.header, length, data]); + } + throw new Error(`Use protocol-thp.encode for messageType ${options.messageType}`); + }; + exports2.encode = encode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v2/decode.js +var require_decode3 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v2/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ERRORS = tslib_1.__importStar(require_errors6()); + var constants_1 = require_constants4(); + var encode_1 = require_encode3(); + var decode = (bytes) => { + const buffer = Buffer.from(bytes); + if (buffer.byteLength < constants_1.HEADER_SIZE + constants_1.MESSAGE_LEN_SIZE) { + throw new Error(ERRORS.PROTOCOL_MALFORMED); + } + const [header, chunkHeader] = (0, encode_1.getHeaders)(buffer); + return { + header, + chunkHeader, + length: buffer.readUint16BE(constants_1.HEADER_SIZE), + messageType: constants_1.MESSAGE_TYPE, + payload: buffer.subarray(constants_1.HEADER_SIZE + constants_1.MESSAGE_LEN_SIZE) + }; + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-v2/index.js +var require_protocol_v2 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-v2/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.name = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode3(), exports2); + tslib_1.__exportStar(require_encode3(), exports2); + exports2.name = "v2"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-bridge/constants.js +var require_constants6 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-bridge/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.HEADER_SIZE = void 0; + exports2.HEADER_SIZE = 2 + 4; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-bridge/decode.js +var require_decode4 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-bridge/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = void 0; + var constants_1 = require_constants6(); + var errors_1 = require_errors6(); + var readHeader = (buffer) => { + const messageType = buffer.readUInt16BE(); + const length = buffer.readUInt32BE(2); + return { + messageType, + length + }; + }; + var decode = (bytes) => { + if (bytes.byteLength < constants_1.HEADER_SIZE) { + throw new Error(errors_1.PROTOCOL_MALFORMED); + } + const { + messageType, + length + } = readHeader(bytes); + return { + header: Buffer.alloc(0), + messageType, + length, + payload: bytes.subarray(constants_1.HEADER_SIZE) + }; + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-bridge/encode.js +var require_encode4 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-bridge/encode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.encode = exports2.getHeaders = void 0; + var constants_1 = require_constants6(); + var getHeaders = () => [Buffer.alloc(0), Buffer.alloc(0)]; + exports2.getHeaders = getHeaders; + var encode = (data, options) => { + const { + messageType + } = options; + if (typeof messageType === "string") { + throw new Error(`Unsupported message type ${messageType}`); + } + const encodedBuffer = Buffer.alloc(constants_1.HEADER_SIZE + data.length); + encodedBuffer.writeUInt16BE(messageType); + encodedBuffer.writeUInt32BE(data.length, 2); + data.copy(encodedBuffer, constants_1.HEADER_SIZE); + return encodedBuffer; + }; + exports2.encode = encode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-bridge/index.js +var require_protocol_bridge = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-bridge/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.name = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode4(), exports2); + tslib_1.__exportStar(require_encode4(), exports2); + exports2.name = "bridge"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/aesgcm.js +var require_aesgcm = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/aesgcm.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.aesgcm = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var crypto2 = tslib_1.__importStar(__require("crypto")); + var aesgcm = (key, iv) => { + const cipher = crypto2.createCipheriv("aes-256-gcm", key, iv); + const decipher = crypto2.createDecipheriv("aes-256-gcm", key, iv); + return { + auth: (authData) => { + cipher.setAAD(authData); + decipher.setAAD(authData); + }, + encrypt: (plainText) => { + const encrypted = cipher.update(plainText); + return Buffer.concat([encrypted, cipher.final()]); + }, + decrypt: (cipherText, authTag) => { + decipher.setAuthTag(authTag); + const decrypted = decipher.update(cipherText); + return Buffer.concat([decrypted, decipher.final()]); + }, + finish: () => cipher.getAuthTag() + }; + }; + exports2.aesgcm = aesgcm; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/crc32.js +var require_crc32 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/crc32.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.crc32 = void 0; + var getCrcTable = () => new Int32Array([0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117]); + var crc32 = (buf) => { + if (!Buffer.isBuffer(buf)) { + throw new Error("Invalid crc input"); + } + const table = getCrcTable(); + let crc = -1; + for (let i = 0; i < buf.length; i++) { + crc = table[(crc ^ buf[i]) & 255] ^ crc >>> 8; + } + const buffer = Buffer.alloc(4); + buffer.writeInt32BE(crc ^ -1, 0); + return buffer; + }; + exports2.crc32 = crc32; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/index.js +var require_crypto = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.crc32 = exports2.aesgcm = void 0; + var aesgcm_1 = require_aesgcm(); + Object.defineProperty(exports2, "aesgcm", { + enumerable: true, + get: function() { + return aesgcm_1.aesgcm; + } + }); + var crc32_1 = require_crc32(); + Object.defineProperty(exports2, "crc32", { + enumerable: true, + get: function() { + return crc32_1.crc32; + } + }); + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/curve25519.js +var require_curve25519 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/curve25519.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getCurve25519KeyPair = void 0; + exports2.curve25519 = curve25519; + exports2.elligator2 = elligator2; + var constants; + var getConstants = () => { + if (constants) { + return constants; + } + if (typeof BigInt === "undefined") { + throw new Error("curve25519: BigInt not supported"); + } + const p = 2n ** 255n - 19n; + const J = 486662n; + const c3 = BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"); + const c4 = (p - 5n) / 8n; + const a24 = (J + 2n) / 4n; + const ctx = { + p, + J, + c3, + c4, + a24 + }; + constants = ctx; + return ctx; + }; + function littleEndianBytesToBigInt(bytes) { + let result = 0n; + for (let i = 0; i < bytes.length; i++) { + result += BigInt(bytes[i]) << 8n * BigInt(i); + } + return result; + } + function bigintToLittleEndianBytes(value, length = 32) { + const byteArray = new Uint8Array(length); + for (let i = 0; i < length; i++) { + byteArray[i] = Number(value & 0xffn); + value >>= 8n; + } + return byteArray; + } + function pow(base, exp, mod3) { + let result = 1n; + base = base % mod3; + while (exp > 0) { + if (exp % 2n === 1n) { + result = result * base % mod3; + } + exp = exp >> 1n; + base = base * base % mod3; + } + return result; + } + function decodeScalar(scalar) { + if (scalar.length !== 32) { + throw new Error("Invalid length of scalar"); + } + const array = new Uint8Array(scalar); + array[0] &= 248; + array[31] &= 127; + array[31] |= 64; + return littleEndianBytesToBigInt(array); + } + function decodeCoordinate(coordinate) { + if (coordinate.length !== 32) { + throw new Error("Invalid length of coordinate"); + } + const array = new Uint8Array(coordinate); + array[array.length - 1] &= 127; + return littleEndianBytesToBigInt(array); + } + function encodeCoordinate(coordinate) { + return bigintToLittleEndianBytes(coordinate); + } + function conditionalSwap(a, b, condition) { + return condition ? [b, a] : [a, b]; + } + function ladderOperation({ + p, + a24 + }, x1, x2, z2, x3, z3) { + const a = (x2 + z2) % p; + const aa = a * a % p; + const b = (x2 - z2 + p) % p; + const bb = b * b % p; + const e = (aa - bb + p) % p; + const c = (x3 + z3) % p; + const d = (x3 - z3 + p) % p; + const da = d * a % p; + const cb = c * b % p; + const t0 = (da + cb) % p; + const x5 = t0 * t0 % p; + const t1 = (da - cb + p) % p; + const t2 = t1 * t1 % p; + const z5 = x1 * t2 % p; + const x4 = aa * bb % p; + const t3 = a24 * e % p; + const t4 = (bb + t3) % p; + const z4 = e * t4 % p; + return [x4, z4, x5, z5]; + } + function curve25519(privateKey, publicKey) { + const ctx = getConstants(); + const { + p + } = ctx; + const k = decodeScalar(privateKey); + const u = decodeCoordinate(publicKey) % p; + const x1 = u; + let x2 = 1n; + let z2 = 0n; + let x3 = u; + let z3 = 1n; + let swap = 0; + for (let i = 255; i >= 0; i--) { + const bit = Number(k >> BigInt(i) & 1n); + swap ^= bit; + [x2, x3] = conditionalSwap(x2, x3, Boolean(swap)); + [z2, z3] = conditionalSwap(z2, z3, Boolean(swap)); + swap = bit; + [x2, z2, x3, z3] = ladderOperation(ctx, x1, x2, z2, x3, z3); + } + [x2, x3] = conditionalSwap(x2, x3, Boolean(swap)); + [z2, z3] = conditionalSwap(z2, z3, Boolean(swap)); + const x = pow(z2, p - 2n, p) * x2 % p; + return Buffer.from(encodeCoordinate(x)); + } + function conditionalMove(first, second, condition) { + return condition ? second : first; + } + function elligator2(point) { + const ctx = getConstants(); + const { + p, + J, + c4, + c3 + } = ctx; + const u = decodeCoordinate(point) % p; + let tv1 = u * u % p; + tv1 = 2n * tv1 % p; + const xd = (tv1 + 1n) % p; + const x1n = (-J + p) % p; + let tv2 = xd * xd % p; + const gxd = tv2 * xd % p; + let gx1 = J * tv1 % p; + gx1 = gx1 * x1n % p; + gx1 = (gx1 + tv2) % p; + gx1 = gx1 * x1n % p; + let tv3 = gxd * gxd % p; + tv2 = tv3 * tv3 % p; + tv3 = tv3 * gxd % p; + tv3 = tv3 * gx1 % p; + tv2 = tv2 * tv3 % p; + let y11 = pow(tv2, c4, p); + y11 = y11 * tv3 % p; + const y12 = y11 * c3 % p; + tv2 = y11 * y11 % p; + tv2 = tv2 * gxd % p; + const e1 = tv2 == gx1; + const y1 = conditionalMove(y12, y11, e1); + const x2n = x1n * tv1 % p; + tv2 = y1 * y1 % p; + tv2 = tv2 * gxd % p; + const e3 = tv2 == gx1; + const xn = conditionalMove(x2n, x1n, e3); + const x = xn * pow(xd, p - 2n, p) % p; + return encodeCoordinate(x); + } + var getCurve25519KeyPair = (randomBytes2) => { + const randomPriv = Buffer.from(randomBytes2); + randomPriv[0] &= 248; + randomPriv[31] &= 127; + randomPriv[31] |= 64; + const basepoint = Buffer.alloc(32).fill(0); + basepoint[0] = 9; + return { + publicKey: curve25519(randomPriv, basepoint), + privateKey: randomPriv + }; + }; + exports2.getCurve25519KeyPair = getCurve25519KeyPair; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/tools.js +var require_tools = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/tools.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.littleEndianBytesToBigInt = exports2.bigEndianBytesToBigInt = exports2.getIvFromNonce = exports2.hashOfTwo = exports2.hkdf = exports2.sha256 = exports2.hmacSHA256 = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var crypto2 = tslib_1.__importStar(__require("crypto")); + var hmacSHA256 = (key, data) => crypto2.createHmac("sha256", key).update(data).digest(); + exports2.hmacSHA256 = hmacSHA256; + var sha256 = (buffer) => crypto2.createHash("sha256").update(buffer).digest(); + exports2.sha256 = sha256; + var hkdf = (chainingKey, input) => { + const tempKey = (0, exports2.hmacSHA256)(chainingKey, input); + const output1 = (0, exports2.hmacSHA256)(tempKey, Buffer.from([1])); + const ctxOutput2 = crypto2.createHmac("sha256", tempKey).update(output1); + ctxOutput2.update(Buffer.from([2])); + const output2 = ctxOutput2.digest(); + return [output1, output2]; + }; + exports2.hkdf = hkdf; + var hashOfTwo = (hash1, hash2) => crypto2.createHash("sha256").update(hash1).update(hash2).digest(); + exports2.hashOfTwo = hashOfTwo; + var getIvFromNonce = (nonce) => { + const iv = new Uint8Array(12); + const nonceBytes = new Uint8Array(8); + for (let i = 0; i < 8; i++) { + nonceBytes[7 - i] = nonce & 255; + nonce = nonce >> 8; + } + iv.set(nonceBytes, 4); + return Buffer.from(iv); + }; + exports2.getIvFromNonce = getIvFromNonce; + var bigEndianBytesToBigInt = (bytes) => { + const result = []; + const { + length + } = bytes; + for (let i = 0; i < length; i++) { + result.push(BigInt(bytes[i] * 256 ** (length - (1 + i)))); + } + return result.reduce((prev, curr) => prev + curr, BigInt(0)); + }; + exports2.bigEndianBytesToBigInt = bigEndianBytesToBigInt; + var littleEndianBytesToBigInt = (bytes) => { + let result = 0n; + for (let i = 0; i < bytes.length; i++) { + result += BigInt(bytes[i]) << 8n * BigInt(i); + } + return result; + }; + exports2.littleEndianBytesToBigInt = littleEndianBytesToBigInt; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufDefinitions.js +var require_protobufDefinitions = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufDefinitions.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getProtobufDefinitions = void 0; + var getProtobufDefinitions = () => ({ + ThpPairingMethod: { + values: { + SkipPairing: 1, + CodeEntry: 2, + QrCode: 3, + NFC: 4 + } + }, + ThpDeviceProperties: { + fields: { + internal_model: { + rule: "required", + type: "string", + id: 1 + }, + model_variant: { + type: "uint32", + id: 2, + options: { + default: 0 + } + }, + protocol_version_major: { + rule: "required", + type: "uint32", + id: 3 + }, + protocol_version_minor: { + rule: "required", + type: "uint32", + id: 4 + }, + pairing_methods: { + rule: "repeated", + type: "ThpPairingMethod", + id: 5, + options: { + packed: false + } + } + } + }, + ThpHandshakeCompletionReqNoisePayload: { + fields: { + host_pairing_credential: { + type: "bytes", + id: 1 + } + } + }, + ThpCreateNewSession: { + fields: { + passphrase: { + type: "string", + id: 1 + }, + on_device: { + type: "bool", + id: 2, + options: { + default: false + } + }, + derive_cardano: { + type: "bool", + id: 3, + options: { + default: false + } + } + } + }, + ThpPairingRequest: { + fields: { + host_name: { + rule: "required", + type: "string", + id: 1 + }, + app_name: { + rule: "required", + type: "string", + id: 2 + } + } + }, + ThpPairingRequestApproved: { + fields: {} + }, + ThpSelectMethod: { + fields: { + selected_pairing_method: { + rule: "required", + type: "ThpPairingMethod", + id: 1 + } + } + }, + ThpPairingPreparationsFinished: { + fields: {} + }, + ThpCodeEntryCommitment: { + fields: { + commitment: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpCodeEntryChallenge: { + fields: { + challenge: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpCodeEntryCpaceTrezor: { + fields: { + cpace_trezor_public_key: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpCodeEntryCpaceHostTag: { + fields: { + cpace_host_public_key: { + rule: "required", + type: "bytes", + id: 1 + }, + tag: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + ThpCodeEntrySecret: { + fields: { + secret: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpQrCodeTag: { + fields: { + tag: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpQrCodeSecret: { + fields: { + secret: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpNfcTagHost: { + fields: { + tag: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpNfcTagTrezor: { + fields: { + tag: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ThpCredentialRequest: { + fields: { + host_static_public_key: { + rule: "required", + type: "bytes", + id: 1 + }, + autoconnect: { + type: "bool", + id: 2, + options: { + default: false + } + }, + credential: { + type: "bytes", + id: 3 + } + } + }, + ThpCredentialResponse: { + fields: { + trezor_static_public_key: { + rule: "required", + type: "bytes", + id: 1 + }, + credential: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + ThpEndRequest: { + fields: {} + }, + ThpEndResponse: { + fields: {} + }, + MessageType: { + options: { + "(has_bitcoin_only_values)": true, + "(wire_enum)": true + }, + values: { + ThpCreateNewSession: 1e3, + ThpCredentialRequest: 1016, + ThpCredentialResponse: 1017, + ThpPairingRequest: 1008, + ThpPairingRequestApproved: 1009, + ThpSelectMethod: 1010, + ThpPairingPreparationsFinished: 1011, + ThpEndRequest: 1018, + ThpEndResponse: 1019, + ThpCodeEntryCommitment: 1024, + ThpCodeEntryChallenge: 1025, + ThpCodeEntryCpaceTrezor: 1026, + ThpCodeEntryCpaceHostTag: 1027, + ThpCodeEntrySecret: 1028, + ThpQrCodeTag: 1032, + ThpQrCodeSecret: 1033, + ThpNfcTagHost: 1040, + ThpNfcTagTrezor: 1041 + } + } + }); + exports2.getProtobufDefinitions = getProtobufDefinitions; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/messages/messageTypes.js +var require_messageTypes = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/messages/messageTypes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufTypes.js +var require_protobufTypes = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufTypes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ThpPairingMethod = void 0; + var ThpPairingMethod; + (function(ThpPairingMethod2) { + ThpPairingMethod2[ThpPairingMethod2["SkipPairing"] = 1] = "SkipPairing"; + ThpPairingMethod2[ThpPairingMethod2["CodeEntry"] = 2] = "CodeEntry"; + ThpPairingMethod2[ThpPairingMethod2["QrCode"] = 3] = "QrCode"; + ThpPairingMethod2[ThpPairingMethod2["NFC"] = 4] = "NFC"; + })(ThpPairingMethod || (exports2.ThpPairingMethod = ThpPairingMethod = {})); + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/messages/index.js +var require_messages2 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/messages/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getProtobufDefinitions = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var protobufDefinitions_1 = require_protobufDefinitions(); + Object.defineProperty(exports2, "getProtobufDefinitions", { + enumerable: true, + get: function() { + return protobufDefinitions_1.getProtobufDefinitions; + } + }); + tslib_1.__exportStar(require_messageTypes(), exports2); + tslib_1.__exportStar(require_protobufTypes(), exports2); + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/crypto/pairing.js +var require_pairing = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/crypto/pairing.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateNfcTag = exports2.validateQrCodeTag = exports2.validateCodeEntryTag = exports2.getSharedSecret = exports2.getCpaceHostKeys = exports2.handleHandshakeInit = exports2.getTrezorState = exports2.findKnownPairingCredentials = exports2.getHandshakeHash = void 0; + var crypto_1 = __require("crypto"); + var aesgcm_1 = require_aesgcm(); + var curve25519_1 = require_curve25519(); + var tools_1 = require_tools(); + var messages_1 = require_messages2(); + var getProtocolName = () => Buffer.concat([Buffer.from("Noise_XX_25519_AESGCM_SHA256"), Buffer.alloc(4).fill(0)]); + var getHandshakeHash = (deviceProperties) => (0, tools_1.hashOfTwo)(getProtocolName(), deviceProperties); + exports2.getHandshakeHash = getHandshakeHash; + var findKnownPairingCredentials = (knownCredentials, trezorMaskedStaticPubkey, trezorEphemeralPubkey) => knownCredentials.filter((c) => { + try { + const trezorStaticPubkey = Buffer.from(c.trezor_static_public_key, "hex"); + const h = (0, tools_1.hashOfTwo)(trezorStaticPubkey, trezorEphemeralPubkey); + return trezorMaskedStaticPubkey.compare((0, curve25519_1.curve25519)(h, trezorStaticPubkey)) === 0; + } catch { + } + }); + exports2.findKnownPairingCredentials = findKnownPairingCredentials; + var getTrezorState = (credentials, payload) => { + const aes = (0, aesgcm_1.aesgcm)(credentials.trezorKey, Buffer.alloc(12)); + aes.auth(Buffer.alloc(0)); + const trezorState = aes.decrypt(payload.subarray(0, 1), payload.subarray(1, 17)); + return trezorState.readUint8(); + }; + exports2.getTrezorState = getTrezorState; + var handleHandshakeInit = ({ + handshakeInitResponse, + thpState, + knownCredentials, + hostStaticKeys, + hostEphemeralKeys, + tryToUnlock, + protobufEncoder + }) => { + if (!thpState.handshakeCredentials) { + throw new Error("ThpStateMissing"); + } + const { + trezorEphemeralPubkey, + trezorEncryptedStaticPubkey, + tag + } = handshakeInitResponse; + const { + sendNonce, + recvNonce + } = thpState; + const { + handshakeHash + } = thpState.handshakeCredentials; + const iv0 = (0, tools_1.getIvFromNonce)(sendNonce); + const iv1 = (0, tools_1.getIvFromNonce)(recvNonce); + let h, point, aes; + h = handshakeHash; + h = (0, tools_1.hashOfTwo)(h, hostEphemeralKeys.publicKey); + h = (0, tools_1.hashOfTwo)(h, Buffer.from([tryToUnlock])); + h = (0, tools_1.hashOfTwo)(h, trezorEphemeralPubkey); + point = (0, curve25519_1.curve25519)(hostEphemeralKeys.privateKey, trezorEphemeralPubkey); + let [ck, k] = (0, tools_1.hkdf)(getProtocolName(), point); + aes = (0, aesgcm_1.aesgcm)(k, iv0); + aes.auth(h); + const trezorStaticPubkey = trezorEncryptedStaticPubkey.subarray(0, 32); + const trezorStaticPubkeyTag = trezorEncryptedStaticPubkey.subarray(32, 32 + 16); + const trezorMaskedStaticPubkey = aes.decrypt(trezorStaticPubkey, trezorStaticPubkeyTag); + h = (0, tools_1.hashOfTwo)(h, trezorEncryptedStaticPubkey); + point = (0, curve25519_1.curve25519)(hostEphemeralKeys.privateKey, trezorMaskedStaticPubkey); + [ck, k] = (0, tools_1.hkdf)(ck, point); + aes = (0, aesgcm_1.aesgcm)(k, iv0); + aes.auth(h); + aes.decrypt(Buffer.alloc(0), tag); + h = (0, tools_1.hashOfTwo)(h, tag); + const allCredentials = (0, exports2.findKnownPairingCredentials)(knownCredentials, trezorMaskedStaticPubkey, trezorEphemeralPubkey); + const credentials = allCredentials.length ? allCredentials[0] : void 0; + aes = (0, aesgcm_1.aesgcm)(k, iv1); + aes.auth(h); + const hostEncryptedStaticPubkey = Buffer.concat([aes.encrypt(hostStaticKeys.publicKey), aes.finish()]); + h = (0, tools_1.hashOfTwo)(h, hostEncryptedStaticPubkey); + point = (0, curve25519_1.curve25519)(hostStaticKeys.privateKey, trezorEphemeralPubkey); + [ck, k] = (0, tools_1.hkdf)(ck, point); + const { + message + } = protobufEncoder("ThpHandshakeCompletionReqNoisePayload", { + host_pairing_credential: credentials?.credential + }); + aes = (0, aesgcm_1.aesgcm)(k, iv0); + aes.auth(h); + const encryptedPayload = Buffer.concat([aes.encrypt(message), aes.finish()]); + h = (0, tools_1.hashOfTwo)(h, encryptedPayload); + const [hostKey, trezorKey] = (0, tools_1.hkdf)(ck, Buffer.alloc(0)); + return { + trezorMaskedStaticPubkey, + trezorEncryptedStaticPubkey, + hostEncryptedStaticPubkey, + hostKey, + trezorKey, + handshakeHash: h, + credentials, + allCredentials, + encryptedPayload + }; + }; + exports2.handleHandshakeInit = handleHandshakeInit; + var getCpaceHostKeys = (code, handshakeHash) => { + const shaCtx = (0, crypto_1.createHash)("sha512"); + shaCtx.update(Buffer.from([8, 67, 80, 97, 99, 101, 50, 53, 53, 6])); + shaCtx.update(code); + shaCtx.update(Buffer.concat([Buffer.from([111]), Buffer.alloc(111).fill(0), Buffer.from([32])])); + shaCtx.update(handshakeHash); + shaCtx.update(Buffer.from([0])); + const sha = shaCtx.digest().subarray(0, 32); + const generator = (0, curve25519_1.elligator2)(sha); + const privateKey = (0, crypto_1.randomBytes)(32); + const publicKey = (0, curve25519_1.curve25519)(privateKey, generator); + return { + privateKey, + publicKey + }; + }; + exports2.getCpaceHostKeys = getCpaceHostKeys; + var getSharedSecret = (publicKey, privateKey) => { + const sharedSecret = (0, curve25519_1.curve25519)(privateKey, publicKey); + return (0, tools_1.sha256)(Buffer.from(sharedSecret)); + }; + exports2.getSharedSecret = getSharedSecret; + var validateCodeEntryTag = (credentials, value, secret) => { + const sha = (0, crypto_1.createHash)("sha256").update(Buffer.from(secret, "hex")).digest(); + const { + handshakeHash, + handshakeCommitment, + codeEntryChallenge + } = credentials; + if (sha.compare(handshakeCommitment) !== 0) { + throw new Error(`HP5: commitment mismatch ${handshakeCommitment.toString("hex")} != ${sha.toString("hex")}`); + } + const shaCtx = (0, crypto_1.createHash)("sha256"); + shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.CodeEntry])); + shaCtx.update(handshakeHash); + shaCtx.update(Buffer.from(secret, "hex")); + shaCtx.update(codeEntryChallenge); + const calculatedValue = (0, tools_1.bigEndianBytesToBigInt)(shaCtx.digest()) % 1000000n; + if (calculatedValue !== BigInt(value)) { + throw new Error(`HP5: code mismatch ${value} != ${calculatedValue.toString()}`); + } + }; + exports2.validateCodeEntryTag = validateCodeEntryTag; + var validateQrCodeTag = ({ + handshakeHash + }, value, secret) => { + const shaCtx = (0, crypto_1.createHash)("sha256"); + shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.QrCode])); + shaCtx.update(handshakeHash); + shaCtx.update(Buffer.from(secret, "hex")); + const calculatedValue = shaCtx.digest().subarray(0, 16); + const expectedValue = Buffer.from(value, "hex").subarray(0, 16); + if (calculatedValue.compare(expectedValue) !== 0) { + throw new Error(`HP6: code mismatch ${calculatedValue.toString("hex")} != ${expectedValue.toString("hex")}`); + } + }; + exports2.validateQrCodeTag = validateQrCodeTag; + var validateNfcTag = ({ + handshakeHash + }, value, secret) => { + const shaCtx = (0, crypto_1.createHash)("sha256"); + shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.NFC])); + shaCtx.update(handshakeHash); + shaCtx.update(secret); + const calculatedValue = shaCtx.digest().subarray(0, 16); + const expectedValue = Buffer.from(value, "hex").subarray(0, 16); + if (calculatedValue.compare(expectedValue) !== 0) { + throw new Error(`HP7: code mismatch ${calculatedValue.toString("hex")} != ${expectedValue.toString("hex")}`); + } + }; + exports2.validateNfcTag = validateNfcTag; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/utils.js +var require_utils3 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getThpPairingMethod = exports2.isThpMessageName = exports2.isExpectedResponse = exports2.getExpectedHeaders = exports2.getExpectedResponses = exports2.isAckExpected = exports2.readThpHeader = exports2.getControlBit = exports2.clearControlBit = exports2.addSequenceBit = exports2.addAckBit = void 0; + var constants_1 = require_constants5(); + var messages_1 = require_messages2(); + var addAckBit = (magic, ackBit) => { + const result = Buffer.alloc(1); + result.writeInt8(magic | ackBit << 3); + return result; + }; + exports2.addAckBit = addAckBit; + var addSequenceBit = (magic, seqBit) => { + const result = Buffer.alloc(1); + result.writeInt8(magic | seqBit << 4); + return result; + }; + exports2.addSequenceBit = addSequenceBit; + var clearControlBit = (magic) => magic & ~(1 << 3) & ~(1 << 4); + exports2.clearControlBit = clearControlBit; + var getControlBit = (magic) => { + const ackBit = (magic & 1 << 3) === 0 ? 0 : 1; + const sequenceBit = (magic & 1 << 4) === 0 ? 0 : 1; + return { + ackBit, + sequenceBit + }; + }; + exports2.getControlBit = getControlBit; + var readThpHeader = (bytes) => { + const magic = bytes.readUInt8(); + const { + ackBit, + sequenceBit + } = (0, exports2.getControlBit)(magic); + const channel = bytes.subarray(1, 3); + return { + magic: (0, exports2.clearControlBit)(magic), + ackBit, + sequenceBit, + channel + }; + }; + exports2.readThpHeader = readThpHeader; + var isAckExpected = (bytesOrMagic) => { + const isCreateChannelMessage = (magic) => [constants_1.THP_CREATE_CHANNEL_REQUEST, constants_1.THP_CREATE_CHANNEL_RESPONSE].includes(magic); + if (Array.isArray(bytesOrMagic)) { + return !bytesOrMagic.find((n) => isCreateChannelMessage(n)); + } + return !isCreateChannelMessage(bytesOrMagic.readUInt8()); + }; + exports2.isAckExpected = isAckExpected; + var getExpectedResponses = (bytes) => { + const { + magic + } = (0, exports2.readThpHeader)(bytes); + if (magic === constants_1.THP_CREATE_CHANNEL_REQUEST) { + return [constants_1.THP_CREATE_CHANNEL_RESPONSE]; + } + if (magic === constants_1.THP_HANDSHAKE_INIT_REQUEST) { + return [constants_1.THP_HANDSHAKE_INIT_RESPONSE, constants_1.THP_CONTINUATION_PACKET]; + } + if (magic === constants_1.THP_HANDSHAKE_COMPLETION_REQUEST) { + return [constants_1.THP_HANDSHAKE_COMPLETION_RESPONSE, constants_1.THP_CONTINUATION_PACKET]; + } + if (magic === constants_1.THP_CONTROL_BYTE_ENCRYPTED) { + return [constants_1.THP_CONTROL_BYTE_ENCRYPTED, constants_1.THP_CONTINUATION_PACKET]; + } + if (magic === constants_1.THP_CONTROL_BYTE_DECRYPTED) { + return [constants_1.THP_CONTROL_BYTE_DECRYPTED, constants_1.THP_CONTINUATION_PACKET]; + } + return []; + }; + exports2.getExpectedResponses = getExpectedResponses; + var getExpectedHeaders = (state) => [...state.expectedResponses, constants_1.THP_ERROR_HEADER_BYTE].map((resp) => { + switch (resp) { + case constants_1.THP_CONTINUATION_PACKET: + return Buffer.from([resp]); + case constants_1.THP_READ_ACK_HEADER_BYTE: + return (0, exports2.addAckBit)(resp, state.sendAckBit); + default: + return (0, exports2.addSequenceBit)(resp, state.recvBit); + } + }).map((magic) => Buffer.concat([magic, state.channel])); + exports2.getExpectedHeaders = getExpectedHeaders; + var isExpectedResponse = (bytes, state) => { + if (bytes.length < 3) { + return false; + } + const header = (0, exports2.readThpHeader)(bytes); + if (header.channel.compare(state.channel) !== 0) { + return false; + } + const { + magic + } = header; + if (magic === constants_1.THP_ERROR_HEADER_BYTE) { + return true; + } + const { + expectedResponses + } = state; + for (let i = 0; i < expectedResponses.length; i++) { + if (magic === expectedResponses[i]) { + if (magic !== constants_1.THP_CONTINUATION_PACKET && (header.sequenceBit !== state?.recvBit || header.ackBit !== state?.recvAckBit)) { + console.warn("Unexpected control bit"); + return false; + } + return true; + } + } + return false; + }; + exports2.isExpectedResponse = isExpectedResponse; + var isThpMessageName = (name) => ["ThpCreateChannelRequest", "ThpHandshakeInitRequest", "ThpHandshakeCompletionRequest", "ThpReadAck"].includes(name); + exports2.isThpMessageName = isThpMessageName; + var getThpPairingMethod = (dm) => typeof dm === "string" ? messages_1.ThpPairingMethod[dm] : dm; + exports2.getThpPairingMethod = getThpPairingMethod; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/decode.js +var require_decode5 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = exports2.decodeSendAck = void 0; + var constants_1 = require_constants5(); + var crypto_1 = require_crypto(); + var crc32_1 = require_crc32(); + var pairing_1 = require_pairing(); + var tools_1 = require_tools(); + var utils_1 = require_utils3(); + var decipherMessage = (key, recvNonce, payload, tag) => { + const aes = (0, crypto_1.aesgcm)(key, (0, tools_1.getIvFromNonce)(recvNonce)); + aes.auth(Buffer.alloc(0)); + const trezorMaskedStaticPubkey = aes.decrypt(payload, tag); + return trezorMaskedStaticPubkey.subarray(1); + }; + var createChannelResponse = ({ + payload + }, protobufDecoder) => { + const nonce = payload.subarray(0, 8); + const channel = payload.subarray(8, 10); + const props = payload.subarray(10, payload.length - constants_1.CRC_LENGTH); + const properties = protobufDecoder("ThpDeviceProperties", props).message; + const handshakeHash = (0, pairing_1.getHandshakeHash)(props); + return { + type: "ThpCreateChannelResponse", + message: { + nonce, + channel, + properties, + handshakeHash + } + }; + }; + var readHandshakeInitResponse = ({ + payload + }) => { + const trezorEphemeralPubkey = payload.subarray(0, 32); + const trezorEncryptedStaticPubkey = payload.subarray(32, 32 + 48); + const tag = payload.subarray(32 + 48, 32 + 48 + constants_1.TAG_LENGTH); + return { + type: "ThpHandshakeInitResponse", + message: { + trezorEphemeralPubkey, + trezorEncryptedStaticPubkey, + tag + } + }; + }; + var readHandshakeCompletionResponse = ({ + payload, + thpState + }) => { + const state = (0, pairing_1.getTrezorState)(thpState.handshakeCredentials, payload); + return { + type: "ThpHandshakeCompletionResponse", + message: { + state + } + }; + }; + var readProtobufMessage = ({ + payload, + thpState + }, protobufDecoder) => { + const tagPos = payload.length - constants_1.TAG_LENGTH - constants_1.CRC_LENGTH; + const cipheredMessage = payload.subarray(0, tagPos); + const tag = payload.subarray(tagPos, payload.length - constants_1.CRC_LENGTH); + const decipheredMessage = decipherMessage(thpState.handshakeCredentials.trezorKey, thpState.recvNonce, cipheredMessage, tag); + const messageType = decipheredMessage.readUInt16BE(0); + const messagePayload = decipheredMessage.subarray(2); + return protobufDecoder(messageType, messagePayload); + }; + var decodeReadAck = () => ({ + type: "ThpAck", + message: {} + }); + var decodeThpError = (payload) => { + const [errorType] = payload; + const error = (() => { + switch (errorType) { + case 1: + return "ThpTransportBusy"; + case 2: + return "ThpUnallocatedChannel"; + case 3: + return "ThpDecryptionFailed"; + case 5: + return "ThpDeviceLocked"; + default: + return "ThpUnknownError"; + } + })(); + const message = { + code: error, + message: error ?? `Unknown ThpError ${errorType}` + }; + return { + type: "ThpError", + message + }; + }; + var validateCrc = (decodedMessage) => { + const payloadLen = decodedMessage.length - constants_1.CRC_LENGTH; + const length = Buffer.alloc(2); + length.writeUInt16BE(decodedMessage.length); + const expectedCrc = (0, crc32_1.crc32)(Buffer.concat([decodedMessage.header, length, decodedMessage.payload.subarray(0, payloadLen)])); + const crc = decodedMessage.payload.subarray(payloadLen, decodedMessage.length); + if (expectedCrc.compare(crc) !== 0) { + throw new Error(`Invalid CRC. expected: ${expectedCrc.toString("hex")} received: ${crc.toString("hex")}`); + } + }; + var decodeSendAck = (decodedMessage) => { + validateCrc(decodedMessage); + const { + magic + } = (0, utils_1.readThpHeader)(decodedMessage.header); + if (magic === constants_1.THP_ERROR_HEADER_BYTE) { + return decodeThpError(decodedMessage.payload); + } + if (magic === constants_1.THP_READ_ACK_HEADER_BYTE) { + return decodeReadAck(); + } + }; + exports2.decodeSendAck = decodeSendAck; + var decode = (decodedMessage, protobufDecoder, thpState) => { + if (!thpState) { + throw new Error("ThpStateMissing"); + } + validateCrc(decodedMessage); + const header = (0, utils_1.readThpHeader)(decodedMessage.header); + const message = { + ...decodedMessage, + ...header, + thpState + }; + const { + magic + } = header; + if (magic === constants_1.THP_ERROR_HEADER_BYTE) { + return decodeThpError(message.payload); + } + if (magic === constants_1.THP_READ_ACK_HEADER_BYTE) { + return decodeReadAck(); + } + if (magic === constants_1.THP_CREATE_CHANNEL_RESPONSE) { + return createChannelResponse(message, protobufDecoder); + } + if (magic === constants_1.THP_HANDSHAKE_INIT_RESPONSE) { + return readHandshakeInitResponse(message); + } + if (magic === constants_1.THP_HANDSHAKE_COMPLETION_RESPONSE) { + return readHandshakeCompletionResponse(message); + } + if (magic === constants_1.THP_CONTROL_BYTE_ENCRYPTED) { + return readProtobufMessage(message, protobufDecoder); + } + if (magic === constants_1.THP_CONTROL_BYTE_DECRYPTED) { + return readProtobufMessage(message, protobufDecoder); + } + throw new Error("Unknown message type: " + magic); + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/encode.js +var require_encode5 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/encode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.encode = exports2.encodeAck = exports2.encodeProtobufMessage = exports2.encodePayload = void 0; + var constants_1 = require_constants5(); + var crypto_1 = require_crypto(); + var tools_1 = require_tools(); + var utils_1 = require_utils3(); + var cipherMessage = (key, sendNonce, handshakeHash, payload) => { + const aes = (0, crypto_1.aesgcm)(key, (0, tools_1.getIvFromNonce)(sendNonce)); + aes.auth(handshakeHash); + const encryptedPayload = aes.encrypt(payload); + const encryptedPayloadTag = aes.finish(); + return Buffer.concat([encryptedPayload, encryptedPayloadTag]); + }; + var getBytesFromField = (data, fieldName) => { + const value = data[fieldName]; + if (typeof value === "string") { + return Buffer.from(value, "hex"); + } + if (typeof value === "number") { + return Buffer.from([value]); + } + if (Buffer.isBuffer(value)) { + return value; + } + }; + var createChannelRequestPayload = (data) => { + const nonce = getBytesFromField(data, "nonce"); + if (!nonce) { + throw new Error("Missing nonce field"); + } + return nonce; + }; + var handshakeInitRequestPayload = (data, _thpState) => { + const key = getBytesFromField(data, "key"); + if (!key) { + throw new Error("ThpHandshakeInitRequest missing key field"); + } + const tryToUnlock = getBytesFromField(data, "tryToUnlock") ?? Buffer.from([0]); + return Buffer.concat([key, tryToUnlock]); + }; + var handshakeCompletionRequestPayload = (data) => { + const hostPubkey = getBytesFromField(data, "hostPubkey"); + if (!hostPubkey) { + throw new Error("ThpHandshakeCompletionRequest missing hostPubkey field"); + } + const encryptedPayload = getBytesFromField(data, "encryptedPayload"); + if (!encryptedPayload) { + throw new Error("ThpHandshakeCompletionRequest missing encryptedPayload field"); + } + return Buffer.concat([hostPubkey, encryptedPayload]); + }; + var encodePayload = (name, data, thpState) => { + if (name === "ThpCreateChannelRequest") { + return createChannelRequestPayload(data); + } + if (name === "ThpHandshakeInitRequest") { + return handshakeInitRequestPayload(data, thpState); + } + if (name === "ThpHandshakeCompletionRequest") { + return handshakeCompletionRequestPayload(data); + } + return Buffer.alloc(0); + }; + exports2.encodePayload = encodePayload; + var createChannelRequest = (data, channel) => { + const length = Buffer.alloc(2); + length.writeUInt16BE(data.length + constants_1.CRC_LENGTH); + const magic = Buffer.from([constants_1.THP_CREATE_CHANNEL_REQUEST]); + const message = Buffer.concat([magic, channel, length, data]); + const crc = (0, crypto_1.crc32)(message); + return Buffer.concat([message, crc]); + }; + var handshakeInitRequest = (data, channel) => { + const length = Buffer.alloc(2); + length.writeUInt16BE(data.length + constants_1.CRC_LENGTH); + const magic = Buffer.from([constants_1.THP_HANDSHAKE_INIT_REQUEST]); + const message = Buffer.concat([magic, channel, length, data]); + const crc = (0, crypto_1.crc32)(message); + return Buffer.concat([message, crc]); + }; + var handshakeCompletionRequest = (data, channel, sendBit) => { + const length = Buffer.alloc(2); + length.writeUInt16BE(data.length + constants_1.CRC_LENGTH); + const magic = (0, utils_1.addSequenceBit)(constants_1.THP_HANDSHAKE_COMPLETION_REQUEST, sendBit); + const message = Buffer.concat([magic, channel, length, data]); + const crc = (0, crypto_1.crc32)(message); + return Buffer.concat([message, crc]); + }; + var encodeThpMessage = (messageType, data, channel, thpState) => { + if (messageType === "ThpCreateChannelRequest") { + return createChannelRequest(data, channel); + } + if (messageType === "ThpHandshakeInitRequest") { + return handshakeInitRequest(data, channel); + } + if (messageType === "ThpHandshakeCompletionRequest") { + return handshakeCompletionRequest(data, channel, thpState.sendBit || 0); + } + throw new Error(`Unknown Thp message type ${messageType}`); + }; + var encodeProtobufMessage = (messageType, data, channel, thpState) => { + if (!thpState) { + throw new Error("ThpStateMissing"); + } + const length = Buffer.alloc(2); + length.writeUInt16BE(1 + 2 + data.length + constants_1.TAG_LENGTH + constants_1.CRC_LENGTH); + const magic = (0, utils_1.addSequenceBit)(constants_1.THP_CONTROL_BYTE_ENCRYPTED, thpState.sendBit); + const header = Buffer.concat([magic, channel]); + const messageTypeBytes = Buffer.alloc(2); + messageTypeBytes.writeUInt16BE(messageType); + const cipheredMessage = cipherMessage(thpState.handshakeCredentials.hostKey, thpState.sendNonce, Buffer.alloc(0), Buffer.concat([thpState.sessionId, messageTypeBytes, data])); + const message = Buffer.concat([header, length, cipheredMessage]); + const crc = (0, crypto_1.crc32)(message); + return Buffer.concat([message, crc]); + }; + exports2.encodeProtobufMessage = encodeProtobufMessage; + var encodeAck = (state) => { + const length = Buffer.alloc(2); + length.writeUInt16BE(constants_1.CRC_LENGTH); + const magic = (0, utils_1.addAckBit)(constants_1.THP_READ_ACK_HEADER_BYTE, state.recvAckBit); + const message = Buffer.concat([magic, state.channel, length]); + const crc = (0, crypto_1.crc32)(message); + return Buffer.concat([message, crc]); + }; + exports2.encodeAck = encodeAck; + var encode = (options) => { + if (!options.thpState) { + throw new Error("ThpStateMissing"); + } + const channel = options.thpState.channel || constants_1.THP_DEFAULT_CHANNEL; + const { + messageName, + data, + protobufEncoder, + thpState + } = options; + let result; + if ((0, utils_1.isThpMessageName)(messageName)) { + const payload = (0, exports2.encodePayload)(messageName, data, thpState); + result = encodeThpMessage(messageName, payload, channel, options.thpState); + } else { + const { + messageType, + message + } = protobufEncoder(messageName, data); + result = (0, exports2.encodeProtobufMessage)(messageType, message, channel, thpState); + } + return result; + }; + exports2.encode = encode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/ThpState.js +var require_ThpState = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/ThpState.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ThpState = void 0; + var messages_1 = require_messages2(); + var ThpState = class { + _properties; + _pairingCredentials = []; + _phase = "handshake"; + _isPaired = false; + _pairingTagPromise; + _cancelablePromise = false; + _handshakeCredentials; + _channel = Buffer.alloc(0); + _sendBit = 0; + _sendAckBit = 0; + _sendNonce = 0; + _recvBit = 0; + _recvAckBit = 0; + _recvNonce = 1; + _expectedResponses = []; + _selectedMethod; + _nfcSecret; + _sessionId = Buffer.alloc(1); + _sessionIdCounter = 0; + get pairingTagPromise() { + return this._pairingTagPromise; + } + setPairingTagPromise(p) { + this._pairingTagPromise = p; + } + get cancelablePromise() { + return this._cancelablePromise; + } + setCancelablePromise(p) { + this._cancelablePromise = p; + } + get properties() { + return this._properties; + } + setThpProperties(props) { + this._properties = props; + } + get phase() { + return this._phase; + } + setPhase(phase) { + this._phase = phase; + } + get isPaired() { + return this._isPaired; + } + get isAutoconnectPaired() { + return this._isPaired && this._pairingCredentials[0]?.autoconnect; + } + setIsPaired(isPaired) { + this._isPaired = isPaired; + } + get pairingMethod() { + return this._selectedMethod; + } + setPairingMethod(method) { + this._selectedMethod = method; + } + get pairingCredentials() { + return this._pairingCredentials; + } + setPairingCredentials(credentials) { + if (credentials) { + this._pairingCredentials.push(...credentials); + } else { + this._pairingCredentials = []; + } + } + removePairingCredential({ + credential + }) { + const index = this._pairingCredentials.findIndex((c) => c.credential === credential); + if (index >= 0) this._pairingCredentials.splice(index, 1); + } + setNfcSecret(secret) { + this._nfcSecret = secret; + } + get nfcSecret() { + return this._nfcSecret; + } + get nfcData() { + if (this._selectedMethod === messages_1.ThpPairingMethod.NFC && this._nfcSecret) { + return Buffer.concat([this._nfcSecret, this.handshakeCredentials.handshakeHash.subarray(0, 16)]); + } + } + get channel() { + return this._channel; + } + setChannel(channel) { + this._channel = channel; + } + get sendBit() { + return this._sendBit; + } + get sendAckBit() { + return this._sendAckBit; + } + get sendNonce() { + return this._sendNonce; + } + get recvBit() { + return this._recvBit; + } + get recvAckBit() { + return this._recvAckBit; + } + get recvNonce() { + return this._recvNonce; + } + updateAckBit(type) { + if (type === "send") { + this._sendAckBit = this._sendAckBit > 0 ? 0 : 1; + } else { + this._recvAckBit = this._recvAckBit > 0 ? 0 : 1; + } + } + updateSyncBit(type) { + if (type === "send") { + this._sendBit = this._sendBit > 0 ? 0 : 1; + } else { + this._recvBit = this._recvBit > 0 ? 0 : 1; + } + } + updateNonce(type) { + if (type === "send") { + this._sendNonce += 1; + } else { + this._recvNonce += 1; + } + } + sync(type, messageType) { + const updateSyncBit = !["ThpCreateChannelRequest", "ThpCreateChannelResponse"].includes(messageType); + if (updateSyncBit) { + this.updateAckBit(type); + this.updateSyncBit(type); + } + const updateNonce = updateSyncBit && !["ThpHandshakeInitRequest", "ThpHandshakeInitResponse", "ThpHandshakeCompletionRequest", "ThpHandshakeCompletionResponse"].includes(messageType); + if (updateNonce) { + this.updateNonce(type); + } + } + get handshakeCredentials() { + return this._handshakeCredentials; + } + updateHandshakeCredentials(newCredentials) { + if (!this._handshakeCredentials) { + this._handshakeCredentials = { + pairingMethods: [], + handshakeHash: Buffer.alloc(0), + handshakeCommitment: Buffer.alloc(0), + codeEntryChallenge: Buffer.alloc(0), + trezorEncryptedStaticPubkey: Buffer.alloc(0), + hostEncryptedStaticPubkey: Buffer.alloc(0), + staticKey: Buffer.alloc(0), + hostStaticPublicKey: Buffer.alloc(0), + hostKey: Buffer.alloc(0), + trezorKey: Buffer.alloc(0), + trezorCpacePublicKey: Buffer.alloc(0) + }; + } + this._handshakeCredentials = { + ...this._handshakeCredentials, + ...newCredentials + }; + } + get sessionId() { + return this._sessionId; + } + createNewSessionId() { + this._sessionIdCounter++; + if (this._sessionIdCounter > 255) { + this._sessionIdCounter = 1; + } + const sessionId = Buffer.alloc(1); + sessionId.writeUint8(this._sessionIdCounter, 0); + this.setSessionId(sessionId); + return sessionId; + } + setSessionId(sessionId) { + this._sessionId = sessionId; + } + serialize() { + return { + properties: this._properties, + channel: this.channel.toString("hex"), + sendBit: this.sendBit, + recvBit: this.recvBit, + sendAckBit: this.sendAckBit, + recvAckBit: this.recvAckBit, + sendNonce: this.sendNonce, + recvNonce: this.recvNonce, + expectedResponses: this._expectedResponses.slice(0), + credentials: this._pairingCredentials.slice(0) + }; + } + deserialize(json) { + const error = new Error("ThpState.deserialize invalid state"); + if (!json || typeof json !== "object") { + throw error; + } + if (!Array.isArray(json.expectedResponses)) { + throw error; + } + if (typeof json.channel !== "string") { + throw error; + } + [json.sendBit, json.recvBit, json.sendAckBit, json.recvAckBit, json.sendNonce, json.recvNonce, ...json.expectedResponses].forEach((nr) => { + if (typeof nr !== "number") { + throw error; + } + }); + this._channel = Buffer.from(json.channel, "hex"); + this._expectedResponses = json.expectedResponses; + this._sendBit = json.sendBit; + this._recvBit = json.recvBit; + this._sendAckBit = json.sendAckBit; + this._recvAckBit = json.recvAckBit; + this._sendNonce = json.sendNonce; + this._recvNonce = json.recvNonce; + } + get expectedResponses() { + return this._expectedResponses; + } + setExpectedResponses(expected) { + this._expectedResponses = expected; + } + resetState() { + this._phase = "handshake"; + this._isPaired = false; + this._pairingTagPromise = void 0; + this._cancelablePromise = false; + this._handshakeCredentials = void 0; + this._channel = Buffer.alloc(0); + this._sendBit = 0; + this._sendAckBit = 0; + this._sendNonce = 0; + this._recvBit = 0; + this._recvAckBit = 0; + this._recvNonce = 1; + this._expectedResponses = []; + this._pairingCredentials = []; + this._selectedMethod = void 0; + this._nfcSecret = void 0; + this._sessionId = Buffer.alloc(1); + this._sessionIdCounter = 0; + } + toString() { + return JSON.stringify(this.serialize()); + } + }; + exports2.ThpState = ThpState; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-thp/index.js +var require_protocol_thp = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-thp/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.name = exports2.getThpPairingMethod = exports2.getCurve25519KeyPair = exports2.ThpState = exports2.validateNfcTag = exports2.validateQrCodeTag = exports2.validateCodeEntryTag = exports2.handleHandshakeInit = exports2.getHandshakeHash = exports2.getSharedSecret = exports2.getCpaceHostKeys = exports2.constants = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode5(), exports2); + tslib_1.__exportStar(require_encode5(), exports2); + tslib_1.__exportStar(require_messages2(), exports2); + tslib_1.__exportStar(require_utils3(), exports2); + exports2.constants = tslib_1.__importStar(require_constants5()); + var pairing_1 = require_pairing(); + Object.defineProperty(exports2, "getCpaceHostKeys", { + enumerable: true, + get: function() { + return pairing_1.getCpaceHostKeys; + } + }); + Object.defineProperty(exports2, "getSharedSecret", { + enumerable: true, + get: function() { + return pairing_1.getSharedSecret; + } + }); + Object.defineProperty(exports2, "getHandshakeHash", { + enumerable: true, + get: function() { + return pairing_1.getHandshakeHash; + } + }); + Object.defineProperty(exports2, "handleHandshakeInit", { + enumerable: true, + get: function() { + return pairing_1.handleHandshakeInit; + } + }); + Object.defineProperty(exports2, "validateCodeEntryTag", { + enumerable: true, + get: function() { + return pairing_1.validateCodeEntryTag; + } + }); + Object.defineProperty(exports2, "validateQrCodeTag", { + enumerable: true, + get: function() { + return pairing_1.validateQrCodeTag; + } + }); + Object.defineProperty(exports2, "validateNfcTag", { + enumerable: true, + get: function() { + return pairing_1.validateNfcTag; + } + }); + var ThpState_1 = require_ThpState(); + Object.defineProperty(exports2, "ThpState", { + enumerable: true, + get: function() { + return ThpState_1.ThpState; + } + }); + var curve25519_1 = require_curve25519(); + Object.defineProperty(exports2, "getCurve25519KeyPair", { + enumerable: true, + get: function() { + return curve25519_1.getCurve25519KeyPair; + } + }); + var utils_1 = require_utils3(); + Object.defineProperty(exports2, "getThpPairingMethod", { + enumerable: true, + get: function() { + return utils_1.getThpPairingMethod; + } + }); + exports2.name = "thp"; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-trzd/decode.js +var require_decode6 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-trzd/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = void 0; + var decode = (bytes) => { + const byteBuffer = Buffer.from(bytes); + const magic = byteBuffer.subarray(0, 5).toString("utf8"); + const definitionType = byteBuffer.readUInt8(5); + const dataVersion = byteBuffer.readUInt32LE(6); + const protobufLength = byteBuffer.readUInt16LE(10); + const protobufPayload = byteBuffer.subarray(12, 12 + protobufLength); + return { + magic, + definitionType, + dataVersion, + protobufLength, + protobufPayload + }; + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-trzd/index.js +var require_protocol_trzd = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-trzd/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode6(), exports2); + } +}); + +// node_modules/@trezor/protocol/lib/protocol-tpn/constants.js +var require_constants7 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-tpn/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TPN_VERSION = exports2.MESSAGE_LENGTH = void 0; + exports2.MESSAGE_LENGTH = 3; + exports2.TPN_VERSION = 1; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-tpn/decode.js +var require_decode7 = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-tpn/decode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = exports2.TrezorPushNotificationMode = exports2.TrezorPushNotificationType = exports2.Version = void 0; + var errors_1 = require_errors6(); + var constants_1 = require_constants7(); + var Version; + (function(Version2) { + Version2[Version2["v1"] = 1] = "v1"; + })(Version || (exports2.Version = Version = {})); + var TrezorPushNotificationType; + (function(TrezorPushNotificationType2) { + TrezorPushNotificationType2[TrezorPushNotificationType2["BOOT"] = 0] = "BOOT"; + TrezorPushNotificationType2[TrezorPushNotificationType2["UNLOCK"] = 1] = "UNLOCK"; + TrezorPushNotificationType2[TrezorPushNotificationType2["LOCK"] = 2] = "LOCK"; + TrezorPushNotificationType2[TrezorPushNotificationType2["DISCONNECT"] = 3] = "DISCONNECT"; + TrezorPushNotificationType2[TrezorPushNotificationType2["SETTING_CHANGE"] = 4] = "SETTING_CHANGE"; + TrezorPushNotificationType2[TrezorPushNotificationType2["SOFTLOCK"] = 5] = "SOFTLOCK"; + TrezorPushNotificationType2[TrezorPushNotificationType2["SOFTUNLOCK"] = 6] = "SOFTUNLOCK"; + TrezorPushNotificationType2[TrezorPushNotificationType2["PIN_CHANGE"] = 7] = "PIN_CHANGE"; + TrezorPushNotificationType2[TrezorPushNotificationType2["WIPE"] = 8] = "WIPE"; + TrezorPushNotificationType2[TrezorPushNotificationType2["UNPAIR"] = 9] = "UNPAIR"; + TrezorPushNotificationType2[TrezorPushNotificationType2["NOTIFY_POWER_STATUS_CHANGE"] = 10] = "NOTIFY_POWER_STATUS_CHANGE"; + })(TrezorPushNotificationType || (exports2.TrezorPushNotificationType = TrezorPushNotificationType = {})); + var TrezorPushNotificationMode; + (function(TrezorPushNotificationMode2) { + TrezorPushNotificationMode2[TrezorPushNotificationMode2["NormalMode"] = 0] = "NormalMode"; + TrezorPushNotificationMode2[TrezorPushNotificationMode2["BootloaderMode"] = 1] = "BootloaderMode"; + })(TrezorPushNotificationMode || (exports2.TrezorPushNotificationMode = TrezorPushNotificationMode = {})); + var decode = (message) => { + const [version, type, mode] = message; + if (!version || version !== constants_1.TPN_VERSION) { + return { + success: false, + error: errors_1.PROTOCOL_MISSMATCH_VERSION + }; + } + if (message.length < constants_1.MESSAGE_LENGTH || !Object.values(Version).includes(version) || !Object.values(TrezorPushNotificationType).includes(type) || !Object.values(TrezorPushNotificationMode).includes(mode)) { + return { + success: false, + error: errors_1.PROTOCOL_MALFORMED + }; + } + return { + success: true, + payload: { + type, + mode + } + }; + }; + exports2.decode = decode; + } +}); + +// node_modules/@trezor/protocol/lib/protocol-tpn/index.js +var require_protocol_tpn = __commonJS({ + "node_modules/@trezor/protocol/lib/protocol-tpn/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_decode7(), exports2); + } +}); + +// node_modules/@trezor/protocol/lib/types.js +var require_types2 = __commonJS({ + "node_modules/@trezor/protocol/lib/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TrezorPushNotificationMode = exports2.TrezorPushNotificationType = exports2.ThpPairingMethod = void 0; + var messages_1 = require_messages2(); + Object.defineProperty(exports2, "ThpPairingMethod", { + enumerable: true, + get: function() { + return messages_1.ThpPairingMethod; + } + }); + var index_1 = require_protocol_tpn(); + Object.defineProperty(exports2, "TrezorPushNotificationType", { + enumerable: true, + get: function() { + return index_1.TrezorPushNotificationType; + } + }); + Object.defineProperty(exports2, "TrezorPushNotificationMode", { + enumerable: true, + get: function() { + return index_1.TrezorPushNotificationMode; + } + }); + } +}); + +// node_modules/@trezor/protocol/lib/index.js +var require_lib6 = __commonJS({ + "node_modules/@trezor/protocol/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.tpn = exports2.trzd = exports2.thp = exports2.bridge = exports2.v2 = exports2.v1 = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + exports2.v1 = tslib_1.__importStar(require_protocol_v1()); + exports2.v2 = tslib_1.__importStar(require_protocol_v2()); + exports2.bridge = tslib_1.__importStar(require_protocol_bridge()); + exports2.thp = tslib_1.__importStar(require_protocol_thp()); + exports2.trzd = tslib_1.__importStar(require_protocol_trzd()); + exports2.tpn = tslib_1.__importStar(require_protocol_tpn()); + tslib_1.__exportStar(require_errors6(), exports2); + tslib_1.__exportStar(require_types2(), exports2); + } +}); + +// node_modules/@trezor/transport/lib/types/apiCall.js +var require_apiCall = __commonJS({ + "node_modules/@trezor/transport/lib/types/apiCall.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/transport/lib/types/index.js +var require_types3 = __commonJS({ + "node_modules/@trezor/transport/lib/types/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PathPublic = exports2.PathInternal = exports2.Session = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_apiCall(), exports2); + var Session = (input) => `${input}`; + exports2.Session = Session; + var PathInternal = (input) => input; + exports2.PathInternal = PathInternal; + var PathPublic = (input) => `${input}`; + exports2.PathPublic = PathPublic; + } +}); + +// node_modules/@trezor/transport/lib/sessions/background.js +var require_background = __commonJS({ + "node_modules/@trezor/transport/lib/sessions/background.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SessionsBackground = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var utils_1 = require_lib(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var types_1 = require_types3(); + var lockDuration = 1e3 * 4; + var SessionsBackground = class extends utils_1.TypedEmitter { + descriptors = {}; + pathInternalPathPublicMap = {}; + locksQueue = []; + locksTimeoutQueue = []; + lastSessionId = 0; + lastPathId = 0; + async handleMessage(message) { + let result; + try { + switch (message.type) { + case "handshake": + result = this.handshake(); + break; + case "enumerateDone": + result = await this.enumerateDone(message.payload); + break; + case "acquireIntent": + result = await this.acquireIntent(message.payload); + break; + case "acquireDone": + result = await this.acquireDone(message.payload); + break; + case "getSessions": + result = await this.getSessions(); + break; + case "releaseIntent": + result = await this.releaseIntent(message.payload); + break; + case "releaseDone": + result = await this.releaseDone(message.payload); + break; + case "getPathBySession": + result = this.getPathBySession(message.payload); + break; + case "dispose": + this.dispose(); + break; + default: + throw new Error(ERRORS.UNEXPECTED_ERROR); + } + result = JSON.parse(JSON.stringify({ + ...result, + id: message.id + })); + return result; + } catch (err2) { + console.error("Session background error", err2); + return { + ...this.error(ERRORS.UNEXPECTED_ERROR), + id: message.type + }; + } finally { + if (result && result.success && result.payload) { + if ("descriptors" in result.payload) { + const { + descriptors + } = result.payload; + this.emit("descriptors", descriptors); + } + if ("releaseRequest" in result.payload && result.payload.releaseRequest) { + const { + releaseRequest + } = result.payload; + this.emit("releaseRequest", releaseRequest); + } + } + } + } + handshake() { + return this.success(void 0); + } + enumerateDone(payload) { + const disconnectedDevices = (0, utils_1.typedObjectKeys)(this.descriptors).filter((pathInternal) => !payload.descriptors.find((d) => d.path === pathInternal)); + disconnectedDevices.forEach((d) => { + delete this.descriptors[d]; + delete this.pathInternalPathPublicMap[d]; + }); + payload.descriptors.forEach((d) => { + if (!this.pathInternalPathPublicMap[d.path]) { + this.pathInternalPathPublicMap[d.path] = (0, types_1.PathPublic)(`${this.lastPathId += 1}`); + } + if (!this.descriptors[d.path]) { + this.descriptors[d.path] = { + ...d, + path: this.pathInternalPathPublicMap[d.path], + session: null, + apiType: d.apiType + }; + } + }); + return Promise.resolve(this.success({ + descriptors: Object.values(this.descriptors) + })); + } + async acquireIntent(payload) { + const pathInternal = this.getInternal(payload.path); + if (!pathInternal) { + return this.error(ERRORS.DEVICE_NOT_FOUND); + } + const previous = this.descriptors[pathInternal]; + if (!previous) { + return this.error(ERRORS.DEVICE_NOT_FOUND); + } + if (payload.previous !== previous.session) { + return this.error(ERRORS.SESSION_WRONG_PREVIOUS); + } + await this.waitInQueue(); + if (previous.session !== this.descriptors[pathInternal]?.session) { + this.clearLock(); + return this.error(ERRORS.SESSION_WRONG_PREVIOUS); + } + this.lastSessionId++; + const session = (0, types_1.Session)(`${this.lastSessionId}`); + const releaseRequest = previous.session !== null ? this.descriptors[pathInternal] : void 0; + return this.success({ + session, + path: pathInternal, + releaseRequest + }); + } + acquireDone(payload) { + this.clearLock(); + const pathInternal = this.getInternal(payload.path); + if (!pathInternal || !this.descriptors[pathInternal]) { + return this.error(ERRORS.DEVICE_NOT_FOUND); + } + this.descriptors[pathInternal].session = (0, types_1.Session)(`${this.lastSessionId}`); + this.descriptors[pathInternal].sessionOwner = payload.sessionOwner; + return Promise.resolve(this.success({ + descriptors: Object.values(this.descriptors) + })); + } + async releaseIntent(payload) { + const pathResult = this.getPathBySession({ + session: payload.session + }); + if (!pathResult.success) { + return pathResult; + } + const { + path: path2 + } = pathResult.payload; + await this.waitInQueue(); + return this.success({ + path: path2 + }); + } + releaseDone(payload) { + this.descriptors[payload.path].session = null; + this.descriptors[payload.path].sessionOwner = void 0; + this.clearLock(); + return Promise.resolve(this.success({ + descriptors: Object.values(this.descriptors) + })); + } + getSessions() { + return Promise.resolve(this.success({ + descriptors: Object.values(this.descriptors) + })); + } + getPathBySession({ + session + }) { + const path2 = (0, utils_1.typedObjectKeys)(this.descriptors).find((pathKey) => this.descriptors[pathKey]?.session === session); + if (!path2) { + return this.error(ERRORS.SESSION_NOT_FOUND); + } + return this.success({ + path: path2 + }); + } + startLock() { + const dfd = (0, utils_1.createDeferred)(); + const timeout = setTimeout(() => { + dfd.resolve(void 0); + }, lockDuration); + this.locksQueue.push({ + id: timeout, + dfd + }); + this.locksTimeoutQueue.push(timeout); + return this.locksQueue.length - 1; + } + clearLock() { + const lock = this.locksQueue[0]; + if (lock) { + this.locksQueue[0].dfd.resolve(void 0); + this.locksQueue.shift(); + clearTimeout(this.locksTimeoutQueue[0]); + this.locksTimeoutQueue.shift(); + } + } + async waitForUnlocked(myIndex) { + if (myIndex > 0) { + const beforeMe = this.locksQueue.slice(0, myIndex); + if (beforeMe.length) { + await Promise.all(beforeMe.map((lock) => lock.dfd.promise)); + } + } + } + async waitInQueue() { + const myIndex = this.startLock(); + await this.waitForUnlocked(myIndex); + } + success(payload) { + return { + success: true, + payload + }; + } + error(error) { + return { + success: false, + error + }; + } + getInternal(pathPublic) { + return (0, utils_1.typedObjectKeys)(this.pathInternalPathPublicMap).find((internal) => this.pathInternalPathPublicMap[internal] === pathPublic); + } + dispose() { + this.locksQueue.forEach((lock) => clearTimeout(lock.id)); + this.locksTimeoutQueue.forEach((timeout) => clearTimeout(timeout)); + this.descriptors = {}; + this.lastSessionId = 0; + this.removeAllListeners(); + } + }; + exports2.SessionsBackground = SessionsBackground; + } +}); + +// node_modules/@trezor/transport/lib/sessions/client.js +var require_client = __commonJS({ + "node_modules/@trezor/transport/lib/sessions/client.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SessionsClient = void 0; + var utils_1 = require_lib(); + var SessionsClient = class extends utils_1.TypedEmitter { + caller = (0, utils_1.getWeakRandomId)(3); + id; + background; + constructor(background) { + super(); + this.id = 0; + this.background = background; + background.on("descriptors", (descriptors) => this.emit("descriptors", descriptors)); + background.on("releaseRequest", (descriptor) => this.emit("releaseRequest", descriptor)); + } + setBackground(background) { + this.background.dispose(); + this.id = 0; + this.background = background; + background.on("descriptors", (descriptors) => this.emit("descriptors", descriptors)); + background.on("releaseRequest", (descriptor) => this.emit("releaseRequest", descriptor)); + } + request(params) { + return this.background.handleMessage({ + ...params, + caller: this.caller, + id: this.id++ + }); + } + handshake() { + return this.request({ + type: "handshake" + }); + } + enumerateDone(payload) { + return this.request({ + type: "enumerateDone", + payload + }); + } + acquireIntent(payload) { + return this.request({ + type: "acquireIntent", + payload + }); + } + acquireDone(payload) { + return this.request({ + type: "acquireDone", + payload + }); + } + releaseIntent(payload) { + return this.request({ + type: "releaseIntent", + payload + }); + } + releaseDone(payload) { + return this.request({ + type: "releaseDone", + payload + }); + } + getSessions() { + return this.request({ + type: "getSessions" + }); + } + getPathBySession(payload) { + return this.request({ + type: "getPathBySession", + payload + }); + } + dispose() { + this.removeAllListeners("descriptors"); + return this.request({ + type: "dispose" + }); + } + }; + exports2.SessionsClient = SessionsClient; + } +}); + +// node_modules/@trezor/transport/lib/utils/readWithExpectedHeaders.js +var require_readWithExpectedHeaders = __commonJS({ + "node_modules/@trezor/transport/lib/utils/readWithExpectedHeaders.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.readWithExpectedHeaders = readWithExpectedHeaders; + var protocol_1 = require_lib6(); + var utils_1 = require_lib(); + var result_1 = require_result(); + var ATTEMPT_ERROR = "Unexpected chunk"; + async function readAndAssert(receiver, thpState, { + signal, + logger + } = {}) { + logger?.debug("readAndAssert start"); + const chunk = await receiver(signal); + if (!chunk.success) { + return chunk; + } + const expectedHeaders = thpState ? protocol_1.thp.getExpectedHeaders(thpState) : []; + if (expectedHeaders.length === 0) { + logger?.debug("readAndAssert skip"); + return chunk; + } + const bytes = chunk.payload; + const expected = expectedHeaders.find((header) => header.length <= bytes.length && bytes.subarray(0, header.length).compare(header) === 0); + if (expected) { + logger?.debug("readAndAssert done"); + return (0, result_1.success)(chunk.payload); + } + logger?.warn(`readAndAssert unexpected header`); + throw new Error(ATTEMPT_ERROR); + } + function readWithExpectedHeaders(receiver, options = {}) { + return (thpState, signal) => (0, utils_1.scheduleAction)((attemptSignal) => readAndAssert(receiver, thpState, { + ...options, + signal: attemptSignal + }), { + signal: signal ?? options?.signal, + graceful: options?.graceful, + attempts: options?.attempts || Infinity, + timeout: options?.timeout, + attemptFailureHandler: (error) => { + if (error.message !== ATTEMPT_ERROR) { + options.logger?.debug(`readAndAssert attempt error ${error.message}`); + return error; + } + } + }); + } + } +}); + +// node_modules/@trezor/transport/lib/utils/receive.js +var require_receive = __commonJS({ + "node_modules/@trezor/transport/lib/utils/receive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.receive = receive; + exports2.receiveAndParse = receiveAndParse; + var protobuf_1 = require_lib3(); + var result_1 = require_result(); + async function receive(receiver, protocol) { + const readResult = await receiver(); + if (!readResult.success) { + return readResult; + } + const data = readResult.payload; + const { + length, + messageType, + payload, + header + } = protocol.decode(data); + const result = Buffer.alloc(length); + const [, chunkHeader] = protocol.getHeaders(Buffer.from(data)); + payload.copy(result); + let offset = payload.length; + while (offset < length) { + const readResult2 = await receiver(); + if (!readResult2.success) { + return readResult2; + } + const data2 = readResult2.payload; + const dataChunkHeader = data2.subarray(0, chunkHeader.length); + if (dataChunkHeader.compare(chunkHeader) !== 0) { + throw new Error(`Unexpected chunkHeader ${dataChunkHeader.toString("hex")}`); + } + Buffer.from(data2).copy(result, offset, chunkHeader.byteLength); + offset += data2.byteLength - chunkHeader.byteLength; + } + return (0, result_1.success)({ + messageType, + payload: result, + header, + length + }); + } + async function receiveAndParse(messages, receiver, protocol) { + const readResult = await receive(receiver, protocol); + if (!readResult.success) return readResult; + const { + messageType, + payload + } = readResult.payload; + const message = (0, protobuf_1.decodeMessage)(messages, messageType, payload); + return (0, result_1.success)(message); + } + } +}); + +// node_modules/@trezor/transport/lib/thp/receive.js +var require_receive2 = __commonJS({ + "node_modules/@trezor/transport/lib/thp/receive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseThpMessage = exports2.receiveThpMessage = void 0; + var protobuf_1 = require_lib3(); + var protocol_1 = require_lib6(); + var readWithExpectedHeaders_1 = require_readWithExpectedHeaders(); + var receive_1 = require_receive(); + var result_1 = require_result(); + var receiveThpMessage = async ({ + thpState, + skipAck, + apiRead, + apiWrite, + signal, + graceful, + logger + }) => { + if (!thpState) { + return (0, result_1.error)({ + error: "ThpStateMissing" + }); + } + logger?.debug(`receiveThpMessage start ${thpState.expectedResponses}`); + try { + const apiReadWithExpectedHeaders = (0, readWithExpectedHeaders_1.readWithExpectedHeaders)(apiRead, { + signal, + graceful, + logger + }); + const message = await (0, receive_1.receive)(() => apiReadWithExpectedHeaders(thpState), protocol_1.v2); + if (!message.success) { + return message; + } + const isAckExpected = protocol_1.thp.isAckExpected(thpState.expectedResponses || []); + if (!skipAck && isAckExpected) { + const chunk = protocol_1.thp.encodeAck(thpState); + logger?.debug(`receiveThpMessage send ThpAck`); + const ackResult = await apiWrite(chunk, signal); + if (!ackResult.success) { + return ackResult; + } + } + logger?.debug(`receiveThpMessage done`); + return message; + } catch (err2) { + logger?.error(`receiveThpMessage error ${err2.message}`); + return (0, result_1.error)({ + error: err2.code, + message: err2.message + }); + } + }; + exports2.receiveThpMessage = receiveThpMessage; + var parseThpMessage = ({ + decoded, + messages, + thpState + }) => { + const message = protocol_1.thp.decode(decoded, (messageType, data) => (0, protobuf_1.decodeMessage)(messages, messageType, data), thpState); + return message; + }; + exports2.parseThpMessage = parseThpMessage; + } +}); + +// node_modules/@trezor/transport/lib/utils/send.js +var require_send = __commonJS({ + "node_modules/@trezor/transport/lib/utils/send.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sendChunks = exports2.buildMessage = exports2.createChunks = void 0; + var protobuf_1 = require_lib3(); + var protocol_1 = require_lib6(); + var createChunks = (data, chunkHeader, chunkSize) => { + if (!chunkSize || data.byteLength <= chunkSize) { + const buffer = Buffer.alloc(Math.max(chunkSize, data.byteLength)); + data.copy(buffer); + return [buffer]; + } + const chunks = [data.subarray(0, chunkSize)]; + let position = chunkSize; + while (position < data.byteLength) { + const sliceEnd = Math.min(position + chunkSize - chunkHeader.byteLength, data.byteLength); + const slice = data.subarray(position, sliceEnd); + const chunk = Buffer.concat([chunkHeader, slice]); + chunks.push(Buffer.alloc(chunkSize).fill(chunk, 0, chunk.byteLength)); + position = sliceEnd; + } + return chunks; + }; + exports2.createChunks = createChunks; + var buildMessage = ({ + messages, + name, + data, + protocol, + thpState + }) => { + const protobufEncoder = (messageName, data2) => { + const { + messageType, + message + } = (0, protobuf_1.encodeMessage)(messages, messageName, data2); + return protocol.encode(message, { + messageType + }); + }; + if (protocol.name === "v2") { + return protocol_1.thp.encode({ + messageName: name, + data, + thpState, + protobufEncoder: (messageName, data2) => (0, protobuf_1.encodeMessage)(messages, messageName, data2) + }); + } + return protobufEncoder(name, data); + }; + exports2.buildMessage = buildMessage; + var sendChunks = async (chunks, apiWrite) => { + for (let i = 0; i < chunks.length; i++) { + const result = await apiWrite(chunks[i]); + if (!result.success) { + return result; + } + } + return { + success: true, + payload: void 0 + }; + }; + exports2.sendChunks = sendChunks; + } +}); + +// node_modules/@trezor/transport/lib/thp/send.js +var require_send2 = __commonJS({ + "node_modules/@trezor/transport/lib/thp/send.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sendThpMessage = void 0; + var protocol_1 = require_lib6(); + var utils_1 = require_lib(); + var readWithExpectedHeaders_1 = require_readWithExpectedHeaders(); + var result_1 = require_result(); + var send_1 = require_send(); + var ATTEMPTS_LIMIT = 10; + var THP_ACK_DEADLINE = 3e4; + var sendThpMessage = async ({ + thpState, + skipAck, + chunks, + apiWrite, + apiRead, + signal, + graceful, + logger + }) => { + if (!thpState) { + return (0, result_1.error)({ + error: "ThpStateMissing" + }); + } + const expectedResponses = protocol_1.thp.getExpectedResponses(chunks[0]); + const isAckExpected = protocol_1.thp.isAckExpected(chunks[0]); + if (skipAck || !isAckExpected || expectedResponses.length === 0) { + const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite); + if (!sendResult.success) { + return sendResult; + } + thpState.setExpectedResponses(expectedResponses); + return sendResult; + } + thpState.setExpectedResponses([32]); + let attempt = 0; + const apiReadWithExpectedHeaders = (0, readWithExpectedHeaders_1.readWithExpectedHeaders)(apiRead, { + signal, + graceful, + logger + }); + try { + const result = await (0, utils_1.scheduleAction)(async (attemptSignal) => { + logger?.debug(`sendThpMessage attempt ${attempt} start`); + const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite); + logger?.debug(`sendThpMessage success: ${sendResult.success}`); + if (!sendResult.success) { + return sendResult; + } + logger?.debug(`sendThpMessage read ThpAck`); + return (0, utils_1.scheduleAction)((signal2) => apiReadWithExpectedHeaders(thpState, signal2), { + signal: attemptSignal, + graceful, + deadline: Date.now() + THP_ACK_DEADLINE + }); + }, { + signal, + attempts: ATTEMPTS_LIMIT, + attemptFailureHandler: (error) => { + if (error.message !== "Aborted by deadline") { + logger?.error(`sendThpMessage error ${error.message}`); + return error; + } + attempt++; + logger?.debug(`sendThpMessage retransmission ${attempt} start`); + } + }); + if (!result.success) { + return result; + } + const decodedResult = protocol_1.thp.decodeSendAck(protocol_1.v2.decode(result.payload)); + if (decodedResult?.type === "ThpError") { + const { + code, + message + } = decodedResult.message; + return (0, result_1.error)({ + error: code, + message + }); + } + logger?.debug("sendThpMessage done"); + thpState.setExpectedResponses(expectedResponses); + return (0, result_1.success)(void 0); + } catch (err2) { + logger?.error(`sendThpMessage error ${err2.message}`); + return (0, result_1.error)({ + error: err2.code, + message: err2.message + }); + } + }; + exports2.sendThpMessage = sendThpMessage; + } +}); + +// node_modules/@trezor/transport/lib/thp/call.js +var require_call = __commonJS({ + "node_modules/@trezor/transport/lib/thp/call.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.callThpMessage = void 0; + var receive_1 = require_receive2(); + var send_1 = require_send2(); + var callThpMessage = async ({ + thpState, + chunks, + apiWrite, + apiRead, + signal, + graceful, + logger + }) => { + const sendResult = await (0, send_1.sendThpMessage)({ + chunks, + thpState, + apiWrite, + apiRead, + signal, + graceful, + logger + }); + if (!sendResult.success) { + return sendResult; + } + const receiveResult = await (0, receive_1.receiveThpMessage)({ + thpState, + apiWrite, + apiRead, + signal, + graceful, + logger + }); + return receiveResult; + }; + exports2.callThpMessage = callThpMessage; + } +}); + +// node_modules/@trezor/transport/lib/thp/index.js +var require_thp = __commonJS({ + "node_modules/@trezor/transport/lib/thp/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.callThpMessage = exports2.sendThpMessage = exports2.parseThpMessage = exports2.receiveThpMessage = void 0; + var receive_1 = require_receive2(); + Object.defineProperty(exports2, "receiveThpMessage", { + enumerable: true, + get: function() { + return receive_1.receiveThpMessage; + } + }); + Object.defineProperty(exports2, "parseThpMessage", { + enumerable: true, + get: function() { + return receive_1.parseThpMessage; + } + }); + var send_1 = require_send2(); + Object.defineProperty(exports2, "sendThpMessage", { + enumerable: true, + get: function() { + return send_1.sendThpMessage; + } + }); + var call_1 = require_call(); + Object.defineProperty(exports2, "callThpMessage", { + enumerable: true, + get: function() { + return call_1.callThpMessage; + } + }); + } +}); + +// node_modules/@trezor/transport/lib/transports/abstractApi.js +var require_abstractApi = __commonJS({ + "node_modules/@trezor/transport/lib/transports/abstractApi.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AbstractApiTransport = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var protocol_1 = require_lib6(); + var abstract_1 = require_abstract2(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var background_1 = require_background(); + var client_1 = require_client(); + var thp_1 = require_thp(); + var receive_1 = require_receive(); + var send_1 = require_send(); + var AbstractApiTransport = class extends abstract_1.AbstractTransport { + sessionsClient; + sessionsBackground; + api; + constructor({ + api, + ...rest + }) { + super(rest); + this.api = api; + this.sessionsBackground = new background_1.SessionsBackground(); + this.sessionsClient = new client_1.SessionsClient(this.sessionsBackground); + } + get apiType() { + return this.api.type; + } + init({ + signal + } = {}) { + return this.scheduleAction(async () => { + this.sessionsClient.setBackground(this.sessionsBackground); + const handshakeRes = await this.sessionsClient.handshake(); + this.stopped = !handshakeRes.success; + return handshakeRes; + }, { + signal + }); + } + listen() { + if (this.listening) { + return this.error({ + error: ERRORS.ALREADY_LISTENING + }); + } + this.api.listen(); + this.listening = true; + this.api.on("transport-interface-change", (descriptors) => { + this.logger?.debug("new descriptors from api", descriptors); + this.sessionsClient.enumerateDone({ + descriptors + }); + }); + this.sessionsClient.on("descriptors", (descriptors) => { + this.logger?.debug("new descriptors from background", descriptors); + this.handleDescriptorsChange(descriptors); + }); + this.sessionsClient.on("releaseRequest", (descriptor) => { + this.deviceEvents.emit(descriptor.path, { + type: constants_1.TRANSPORT.DEVICE_REQUEST_RELEASE + }); + }); + return this.success(void 0); + } + enumerate({ + signal + } = {}) { + return this.scheduleAction(async (signal2) => { + const enumerateResult = await this.api.enumerate(signal2); + if (!enumerateResult.success) { + return enumerateResult; + } + const descriptors = enumerateResult.payload; + const enumerateDoneResponse = await this.sessionsClient.enumerateDone({ + descriptors + }); + return this.success(enumerateDoneResponse.payload.descriptors); + }, { + signal + }); + } + acquire({ + input, + signal + }) { + return this.scheduleAction(async (signal2) => { + const { + path: path2 + } = input; + const acquireIntentResponse = await this.sessionsClient.acquireIntent(input); + if (!acquireIntentResponse.success) { + return this.error({ + error: acquireIntentResponse.error + }); + } + const reset2 = !!input.previous; + const openDeviceResult = await this.api.openDevice(acquireIntentResponse.payload.path, { + reset: reset2, + signal: signal2, + channel: "read" + }); + if (!openDeviceResult.success) { + return openDeviceResult; + } + this.sessionsClient.acquireDone({ + path: path2, + sessionOwner: this.id + }); + return this.success(acquireIntentResponse.payload.session); + }, { + signal + }, [ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.SESSION_WRONG_PREVIOUS]); + } + subscribe({ + path: path2, + channels, + signal + }) { + return this.scheduleAction(async (signal2) => { + const entries = await Promise.all(channels.map(async (channel) => { + try { + const res = await this.api.openDevice(path2, { + reset: false, + signal: signal2, + channel + }); + return [channel, res.success]; + } catch { + return [channel, false]; + } + })); + const map = Object.fromEntries(entries); + return this.success(map); + }, { + signal + }); + } + release({ + path: _, + session, + signal + }) { + return this.scheduleAction(async () => { + const releaseIntentResponse = await this.sessionsClient.releaseIntent({ + session + }); + if (!releaseIntentResponse.success) { + return this.error({ + error: releaseIntentResponse.error + }); + } + await this.api.closeDevice(releaseIntentResponse.payload.path, { + channel: "read" + }); + await this.sessionsClient.releaseDone({ + path: releaseIntentResponse.payload.path + }); + return this.success(null); + }, { + signal + }); + } + releaseSync(session) { + this.sessionsClient.releaseIntent({ + session + }).then((res) => { + if (res.success) this.api.closeDevice(res.payload.path, { + channel: "read" + }); + }); + } + call({ + session, + name, + data, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const handleError = (error) => { + if (error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) { + this.enumerate(); + } + }; + const getPathBySessionResponse = await this.sessionsClient.getPathBySession({ + session + }); + if (!getPathBySessionResponse.success) { + if (getPathBySessionResponse.error === "session not found") { + return this.error({ + error: ERRORS.DEVICE_DISCONNECTED_DURING_ACTION + }); + } + return this.error({ + error: ERRORS.UNEXPECTED_ERROR + }); + } + const { + path: path2 + } = getPathBySessionResponse.payload; + const protocol = customProtocol || protocol_1.v1; + const bytes = (0, send_1.buildMessage)({ + messages: this.messages, + name, + data, + protocol, + thpState + }); + const [, chunkHeader] = protocol.getHeaders(bytes); + const chunks = (0, send_1.createChunks)(bytes, chunkHeader, this.api.chunkSize); + let progress = 0; + const apiWrite = (chunk, attemptSignal) => { + if (chunks.length > 1) { + progress++; + this.emit(constants_1.TRANSPORT.SEND_MESSAGE_PROGRESS, progress / chunks.length); + } + return this.api.write(path2, chunk, attemptSignal || signal2); + }; + const apiRead = (attemptSignal) => this.api.read(path2, attemptSignal || signal2); + if (protocol.name === "v2") { + const prevNonce = thpState?.sendNonce; + const callResult = await (0, thp_1.callThpMessage)({ + thpState, + chunks, + apiWrite, + apiRead, + signal: signal2, + graceful: true, + logger: this.logger + }); + if (!callResult.success) { + handleError(callResult.error); + return callResult; + } + if (prevNonce === thpState?.sendNonce) { + thpState?.sync("send", name); + } + const message = (0, thp_1.parseThpMessage)({ + messages: this.messages, + decoded: callResult.payload, + thpState + }); + thpState?.sync("recv", message.type); + return this.success(message); + } + const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite); + if (!sendResult.success) { + handleError(sendResult.error); + return sendResult; + } + const readResult = await (0, receive_1.receiveAndParse)(this.messages, apiRead, protocol); + if (!readResult.success) { + handleError(readResult.error); + return readResult; + } + return readResult; + }, { + signal, + graceful: true, + timeout + }); + } + send({ + data, + session, + name, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const getPathBySessionResponse = await this.sessionsClient.getPathBySession({ + session + }); + if (!getPathBySessionResponse.success) { + return this.error({ + error: getPathBySessionResponse.error + }); + } + const { + path: path2 + } = getPathBySessionResponse.payload; + const protocol = customProtocol || protocol_1.v1; + const bytes = (0, send_1.buildMessage)({ + messages: this.messages, + name, + data, + protocol, + thpState + }); + const [_, chunkHeader] = protocol.getHeaders(bytes); + const chunks = (0, send_1.createChunks)(bytes, chunkHeader, this.api.chunkSize); + let progress = 0; + const apiWrite = (chunk) => { + if (chunks.length > 1) { + progress++; + this.emit(constants_1.TRANSPORT.SEND_MESSAGE_PROGRESS, progress / chunks.length); + } + return this.api.write(path2, chunk, signal2); + }; + let sendResult; + if (protocol.name === "v2") { + sendResult = await (0, thp_1.sendThpMessage)({ + thpState, + skipAck: true, + chunks, + apiWrite, + apiRead: (attemptSignal) => this.api.read(path2, attemptSignal || signal2), + signal: signal2, + graceful: true, + logger: this.logger + }); + thpState?.sync("send", name); + } else { + sendResult = await (0, send_1.sendChunks)(chunks, apiWrite); + } + if (!sendResult.success) { + if (sendResult.error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) { + this.enumerate(); + } + } + return sendResult; + }, { + signal, + graceful: true, + timeout + }); + } + receive({ + session, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const getPathBySessionResponse = await this.sessionsClient.getPathBySession({ + session + }); + if (!getPathBySessionResponse.success) { + return this.error({ + error: getPathBySessionResponse.error + }); + } + const { + path: path2 + } = getPathBySessionResponse.payload; + const apiRead = (attemptSignal) => this.api.read(path2, attemptSignal || signal2); + const protocol = customProtocol || protocol_1.v1; + if (protocol.name === "v2") { + const decoded = await (0, thp_1.receiveThpMessage)({ + thpState, + skipAck: true, + apiWrite: (chunk, attemptSignal) => this.api.write(path2, chunk, attemptSignal || signal2), + apiRead, + signal: signal2, + graceful: true, + logger: this.logger + }); + if (!decoded.success) { + return decoded; + } + const message2 = (0, thp_1.parseThpMessage)({ + messages: this.messages, + decoded: decoded.payload, + thpState + }); + return this.success(message2); + } + const message = await (0, receive_1.receiveAndParse)(this.messages, apiRead, protocol); + if (!message.success) { + if (message.error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) { + this.enumerate(); + } + } + return message; + }, { + signal, + graceful: true, + timeout + }); + } + releaseDevice(session) { + return this.sessionsClient.getPathBySession({ + session + }).then((response) => { + if (response.success) { + return this.api.closeDevice(response.payload.path, { + channel: "read" + }); + } + return this.success(void 0); + }); + } + stop() { + if (!this.stopped) { + this.api.once("transport-interface-change", () => { + this.logger?.debug("device connected after transport stopped, goodbye..."); + }); + } + super.stop(); + this.api.dispose(); + } + }; + exports2.AbstractApiTransport = AbstractApiTransport; + } +}); + +// node_modules/@trezor/transport/lib/api/abstract.js +var require_abstract3 = __commonJS({ + "node_modules/@trezor/transport/lib/api/abstract.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AbstractApi = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var utils_1 = require_lib(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var result_1 = require_result(); + var AbstractApi = class extends utils_1.TypedEmitter { + logger; + listening = false; + lock = {}; + type; + constructor({ + logger, + type + }) { + super(); + this.type = type; + this.logger = logger; + } + success(payload) { + return (0, result_1.success)(payload); + } + error(payload) { + return (0, result_1.error)(payload); + } + unknownError(err2, expectedErrors = []) { + this.logger?.error("transport: abstract api: unknown error", err2); + return (0, result_1.unknownError)(err2, expectedErrors); + } + synchronize = (0, utils_1.getSynchronize)(); + requestAccess({ + lock, + path: path2 + }) { + if (!this.lock[path2]) { + this.lock[path2] = { + read: false, + write: false + }; + } + if (this.lock[path2].read && lock.read || this.lock[path2].write && lock.write) { + return this.error({ + error: ERRORS.OTHER_CALL_IN_PROGRESS + }); + } + this.lock[path2] = { + read: this.lock[path2].read || lock.read, + write: this.lock[path2].write || lock.write + }; + return this.success(void 0); + } + runInIsolation = async ({ + lock, + path: path2 + }, fn) => { + const accessRes = this.requestAccess({ + lock, + path: path2 + }); + if (!accessRes.success) { + return accessRes; + } + try { + return await this.synchronize(fn); + } catch (err2) { + this.logger?.error("transport: abstract api: runInIsolation error", err2); + return this.unknownError(err2); + } finally { + this.lock[path2] = { + read: lock.read ? false : this.lock[path2].read, + write: lock.write ? false : this.lock[path2].write + }; + } + }; + }; + exports2.AbstractApi = AbstractApi; + } +}); + +// node_modules/@trezor/transport/lib/api/usb.js +var require_usb = __commonJS({ + "node_modules/@trezor/transport/lib/api/usb.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UsbApi = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var utils_1 = require_lib(); + var abstract_1 = require_abstract3(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var types_1 = require_types3(); + var UsbApi = class extends abstract_1.AbstractApi { + chunkSize = 64; + devices = []; + usbInterface; + forceReadSerialOnConnect; + abortController = new AbortController(); + debugLink; + synchronizeCreateDevices = (0, utils_1.getSynchronize)(); + synchronizeGetDevices = (0, utils_1.getSynchronize)(); + synchronizeResetDevice = (0, utils_1.getSynchronize)(); + deviceResetMap = {}; + devicePendingTransferIn = /* @__PURE__ */ new Map(); + constructor({ + usbInterface, + logger, + forceReadSerialOnConnect, + debugLink + }) { + super({ + logger, + type: "usb" + }); + this.usbInterface = usbInterface; + this.forceReadSerialOnConnect = forceReadSerialOnConnect; + this.debugLink = debugLink; + } + listen() { + this.usbInterface.onconnect = async (event) => { + this.logger?.debug(`usb: onconnect: ${this.formatDeviceForLog(event.device)}`); + if (event.device.opened) { + this.logger?.debug("usb: onconnect: device already opened, closing"); + await event.device.close(); + } + return this.createDevices([event.device], this.abortController.signal).then((newDevices) => { + this.devices = [...this.devices, ...newDevices]; + this.emit("transport-interface-change", this.devicesToDescriptors()); + }).catch((err2) => { + this.logger?.error(`usb: createDevices error: ${err2.message}`); + }); + }; + this.usbInterface.ondisconnect = (event) => { + const { + device + } = event; + if (!device.serialNumber) { + this.logger?.debug(`usb: ondisconnect: device without serial number:, ${device.productName}, ${device.manufacturerName}`); + return this.enumerate(); + } + const index = this.devices.findIndex((d) => d.path === device.serialNumber); + if (index > -1) { + this.devices.splice(index, 1); + this.emit("transport-interface-change", this.devicesToDescriptors()); + } else { + this.logger?.error("usb: device that should be removed does not exist in state"); + } + }; + } + formatDeviceForLog(device) { + return JSON.stringify({ + productName: device.productName, + manufacturerName: device.manufacturerName, + serialNumber: device.serialNumber, + vendorId: device.vendorId, + productId: device.productId, + deviceVersionMajor: device.deviceVersionMajor, + deviceVersionMinor: device.deviceVersionMinor, + opened: device.opened + }); + } + matchDeviceType(device) { + const isBootloader = device.productId === constants_1.WEBUSB_BOOTLOADER_PRODUCT; + if (device.deviceVersionMajor === 2) { + if (isBootloader) { + return constants_1.DEVICE_TYPE.TypeT2Boot; + } else { + return constants_1.DEVICE_TYPE.TypeT2; + } + } else { + if (isBootloader) { + return constants_1.DEVICE_TYPE.TypeT1WebusbBoot; + } else if (device.vendorId === constants_1.T1_HID_VENDOR && device.productId === constants_1.T1_HID_PRODUCT) { + return constants_1.DEVICE_TYPE.TypeT1Hid; + } else { + return constants_1.DEVICE_TYPE.TypeT1Webusb; + } + } + } + devicesToDescriptors() { + return this.devices.map((d) => ({ + path: (0, types_1.PathInternal)(d.path), + type: this.matchDeviceType(d.device), + product: d.device.productId, + vendor: d.device.vendorId, + id: d.device.serialNumber, + apiType: this.type + })); + } + abortableMethod(method, { + signal, + onAbort + }) { + if (!signal) { + return method(); + } + if (signal.aborted) { + return Promise.reject(new Error(ERRORS.ABORTED_BY_SIGNAL)); + } + const dfd = (0, utils_1.createDeferred)(); + const abortListener = async () => { + this.logger?.debug("usb: abortableMethod onAbort start"); + try { + await onAbort?.(); + } catch { + } + this.logger?.debug("usb: abortableMethod onAbort done"); + dfd.reject(new Error(ERRORS.ABORTED_BY_SIGNAL)); + }; + signal?.addEventListener("abort", abortListener); + const methodPromise = method().catch((error) => { + this.logger?.debug(`usb: abortableMethod method() aborted: ${signal.aborted} ${error}`); + if (signal.aborted) { + return dfd.promise; + } + dfd.reject(error); + throw error; + }); + return Promise.race([methodPromise, dfd.promise]).then((r) => { + dfd.resolve(r); + return r; + }).finally(() => { + signal?.removeEventListener("abort", abortListener); + }); + } + async enumerate(signal) { + try { + this.logger?.debug("usb: enumerate"); + const devices = await this.abortableMethod(() => this.synchronizeGetDevices(() => this.usbInterface.getDevices()), { + signal + }); + this.devices = await this.createDevices(devices, signal); + return this.success(this.devicesToDescriptors()); + } catch (err2) { + return this.unknownError(err2); + } + } + getTransferIn(device) { + let pending = this.devicePendingTransferIn.get(device); + if (!pending) { + pending = device.transferIn(this.debugLink ? constants_1.DEBUGLINK_ENDPOINT_ID : constants_1.ENDPOINT_ID, this.chunkSize).finally(() => this.devicePendingTransferIn.delete(device)); + this.devicePendingTransferIn.set(device, pending); + } + return pending; + } + async read(path2, signal) { + const device = this.findDevice(path2); + if (!device) { + return this.error({ + error: ERRORS.DEVICE_NOT_FOUND + }); + } + try { + this.logger?.debug("usb: device.transferIn"); + const res = await this.abortableMethod(() => this.getTransferIn(device), { + signal, + onAbort: () => this.resetDevice(path2) + }); + this.logger?.debug(`usb: device.transferIn done. status: ${res.status}, byteLength: ${res.data?.byteLength}.`); + if (!res.data?.byteLength) { + this.logger?.warn(`usb: device.transferIn error: empty data buffer`); + return this.success(Buffer.alloc(0)); + } + return this.success(Buffer.from(res.data.buffer)); + } catch (err2) { + this.logger?.error(`usb: device.transferIn error ${err2}`); + return this.handleReadWriteError(err2); + } + } + async write(path2, buffer, signal) { + const device = this.findDevice(path2); + if (!device) { + return this.error({ + error: ERRORS.DEVICE_NOT_FOUND + }); + } + const newArray = new Uint8Array(this.chunkSize); + newArray.set(new Uint8Array(buffer)); + const timeout = setTimeout(() => { + this.logger?.debug("usb: device.transfer out take suspiciously long. timing out."); + this.resetDevice(path2).catch(() => { + }); + }, 1e3); + try { + this.logger?.debug("usb: device.transferOut"); + const result = await this.abortableMethod(() => device.transferOut(this.debugLink ? constants_1.DEBUGLINK_ENDPOINT_ID : constants_1.ENDPOINT_ID, newArray), { + signal, + onAbort: () => this.resetDevice(path2) + }); + this.logger?.debug(`usb: device.transferOut done.`); + if (result.status !== "ok") { + this.logger?.error(`usb: device.transferOut status not ok: ${result.status}`); + throw new Error("transfer out status not ok"); + } + return this.success(void 0); + } catch (err2) { + return this.handleReadWriteError(err2); + } finally { + clearTimeout(timeout); + } + } + async openDevice(path2, options) { + for (let i = 0; i < 5; i++) { + this.logger?.debug(`usb: openDevice attempt ${i}`); + const res = await this.openInternal(path2, options); + if (res.success || options.signal?.aborted) { + return res; + } + await (0, utils_1.resolveAfter)(100 * i); + } + return this.openInternal(path2, options); + } + async openInternal(path2, { + reset: reset2, + signal + }) { + const device = this.findDevice(path2); + if (!device) { + return this.error({ + error: ERRORS.DEVICE_NOT_FOUND + }); + } + try { + this.logger?.debug(`usb: device.open`); + await this.abortableMethod(() => device.open(), { + signal + }); + this.logger?.debug(`usb: device.open done. device: ${this.formatDeviceForLog(device)}`); + } catch (err2) { + this.logger?.error(`usb: device.open error ${err2}`); + if (err2.message.includes("LIBUSB_ERROR_ACCESS")) { + return this.error({ + error: ERRORS.LIBUSB_ERROR_ACCESS + }); + } + return this.error({ + error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, + message: err2.message + }); + } + if (device.configuration?.configurationValue !== constants_1.CONFIGURATION_ID) { + try { + this.logger?.debug(`usb: device.selectConfiguration ${constants_1.CONFIGURATION_ID}`); + await this.abortableMethod(() => device.selectConfiguration(constants_1.CONFIGURATION_ID), { + signal + }); + this.logger?.debug(`usb: device.selectConfiguration done: ${constants_1.CONFIGURATION_ID}.`); + } catch (err2) { + this.logger?.error(`usb: device.selectConfiguration error ${err2}. device: ${this.formatDeviceForLog(device)}`); + } + } + if (reset2) { + try { + this.logger?.debug("usb: device.reset"); + await this.resetDevice(path2); + this.logger?.debug(`usb: device.reset done.`); + } catch (err2) { + this.logger?.error(`usb: device.reset error ${err2}. device: ${this.formatDeviceForLog(device)}`); + } + } + const interfaceId = this.debugLink ? constants_1.DEBUGLINK_INTERFACE_ID : constants_1.INTERFACE_ID; + if (!this.isInterfaceClaimed(device, interfaceId)) { + try { + this.logger?.debug(`usb: device.claimInterface: ${interfaceId}`); + await this.abortableMethod(() => device.claimInterface(interfaceId), { + signal + }); + this.logger?.debug(`usb: device.claimInterface done: ${interfaceId}.`); + } catch (err2) { + this.logger?.error(`usb: device.claimInterface error ${err2}.`); + return this.error({ + error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, + message: err2.message + }); + } + } + return this.success(void 0); + } + async closeDevice(path2) { + let device = this.findDevice(path2); + if (!device) { + return this.error({ + error: ERRORS.DEVICE_NOT_FOUND + }); + } + this.logger?.debug(`usb: closeDevice. device.opened: ${device.opened}`); + if (device.opened) { + if (!this.debugLink) { + try { + await this.resetDevice(path2); + } catch (err2) { + this.logger?.error(`usb: device.reset error ${err2}. device: ${this.formatDeviceForLog(device)}`); + } + } + } + device = this.findDevice(path2); + const interfaceId = this.debugLink ? constants_1.DEBUGLINK_INTERFACE_ID : constants_1.INTERFACE_ID; + if (device?.opened && this.isInterfaceClaimed(device, interfaceId)) { + try { + this.logger?.debug(`usb: device.releaseInterface: ${interfaceId}`); + await this.synchronizeResetDevice(() => device?.releaseInterface(interfaceId)); + this.logger?.debug(`usb: device.releaseInterface done: ${interfaceId}.`); + } catch (err2) { + this.logger?.error(`usb: releaseInterface error ${err2}.`); + } + } + device = this.findDevice(path2); + if (device?.opened) { + try { + this.logger?.debug(`usb: device.close`); + await this.synchronizeResetDevice(() => device.close()); + this.logger?.debug(`usb: device.close done.`); + } catch (err2) { + this.logger?.debug(`usb: device.close error ${err2}.`); + return this.error({ + error: ERRORS.INTERFACE_UNABLE_TO_CLOSE_DEVICE, + message: err2.message + }); + } + } + return this.success(void 0); + } + findDevice(path2) { + const device = this.devices.find((d) => d.path === path2); + if (!device) { + return; + } + return device.device; + } + createDevices(devices, signal) { + return this.synchronizeCreateDevices(async () => { + let bootloaderId = 0; + const getPathFromUsbDevice = (device) => { + const { + serialNumber + } = device; + let path2 = serialNumber == null || serialNumber === "" ? "bootloader" : serialNumber; + if (path2 === "bootloader") { + this.logger?.debug("usb: device without serial number!"); + bootloaderId++; + path2 += bootloaderId; + } + return path2; + }; + const [hidDevices, nonHidDevices] = this.filterDevices(devices); + const loadedDevices = await Promise.all(nonHidDevices.map(async (device) => { + this.logger?.debug(`usb: creating device ${this.formatDeviceForLog(device)}`); + if (this.forceReadSerialOnConnect && !device.opened && !device.serialNumber) { + await this.loadSerialNumber(device, signal); + } + const path2 = getPathFromUsbDevice(device); + return { + path: path2, + device + }; + })); + return [...loadedDevices, ...hidDevices.map((d) => ({ + path: getPathFromUsbDevice(d), + device: d + }))]; + }); + } + async loadSerialNumber(device, signal) { + try { + this.logger?.debug(`usb: loadSerialNumber`); + await this.abortableMethod(() => device.open(), { + signal + }); + await this.abortableMethod(() => device.getStringDescriptor(device.device.deviceDescriptor.iSerialNumber), { + signal + }); + this.logger?.debug(`usb: loadSerialNumber done, serialNumber: ${device.serialNumber}`); + await this.abortableMethod(() => device.close(), { + signal + }); + } catch (err2) { + this.logger?.error(`usb: loadSerialNumber error: ${err2.message}`); + throw err2; + } + } + async resetDevice(path2) { + const device = this.findDevice(path2); + if (!device) { + this.logger?.debug(`usb: resetDevice: device not found`); + return; + } + if (this.deviceResetMap[path2]) { + this.logger?.debug(`usb: resetDevice: device reset already running`); + return; + } + this.deviceResetMap[path2] = true; + try { + this.logger?.debug(`usb: resetDevice: device.reset`); + await this.synchronizeResetDevice(() => device.reset()); + this.logger?.debug(`usb: resetDevice: device.reset done`); + } catch (err2) { + this.logger?.error(`usb: resetDevice: device.reset error: ${err2.message}`); + } finally { + delete this.deviceResetMap[path2]; + } + } + filterDevices(devices) { + const trezorDevices = devices.filter((dev) => constants_1.TREZOR_USB_DESCRIPTORS.some((desc) => dev.vendorId === desc.vendorId && dev.productId === desc.productId)); + const [hidDevices, nonHidDevices] = (0, utils_1.arrayPartition)(trezorDevices, (device) => device.vendorId === constants_1.T1_HID_VENDOR); + return [hidDevices, nonHidDevices]; + } + isInterfaceClaimed(device, interfaceId) { + return device.configuration?.interfaces.find((i) => i.interfaceNumber === interfaceId)?.claimed; + } + handleReadWriteError(err2) { + if (["LIBUSB_TRANSFER_ERROR", "LIBUSB_ERROR_PIPE", "LIBUSB_ERROR_IO", "LIBUSB_ERROR_NO_DEVICE", "LIBUSB_ERROR_OTHER", ERRORS.INTERFACE_DATA_TRANSFER, "The device was disconnected."].some((disconnectedErr) => err2.message.includes(disconnectedErr))) { + return this.error({ + error: ERRORS.DEVICE_DISCONNECTED_DURING_ACTION + }); + } + return this.unknownError(err2, [ERRORS.DEVICE_NOT_FOUND, ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.ABORTED_BY_TIMEOUT, ERRORS.ABORTED_BY_SIGNAL, ERRORS.UNEXPECTED_ERROR]); + } + dispose() { + if (this.usbInterface) { + this.usbInterface.onconnect = null; + this.usbInterface.ondisconnect = null; + } + this.abortController.abort(); + } + }; + exports2.UsbApi = UsbApi; + } +}); + +// node_modules/@trezor/transport/lib/utils/applyBridgeApiCallHeaders.js +var require_applyBridgeApiCallHeaders = __commonJS({ + "node_modules/@trezor/transport/lib/utils/applyBridgeApiCallHeaders.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.applyBridgeApiCallHeaders = applyBridgeApiCallHeaders; + var IS_NODE = typeof process !== "undefined" && typeof window === "undefined"; + function applyBridgeApiCallHeaders({ + headers, + contentType, + skipContentTypeHeader + }) { + if (IS_NODE) { + headers["Origin"] = "https://wallet.trezor.io"; + } + if (!skipContentTypeHeader) headers["Content-Type"] = contentType; + return headers; + } + } +}); + +// node_modules/@trezor/transport/lib/pinger/pingCommon.js +var require_pingCommon = __commonJS({ + "node_modules/@trezor/transport/lib/pinger/pingCommon.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ping = void 0; + var applyBridgeApiCallHeaders_1 = require_applyBridgeApiCallHeaders(); + var ping = (url) => fetch(url, { + method: "POST", + headers: (0, applyBridgeApiCallHeaders_1.applyBridgeApiCallHeaders)({ + headers: {}, + contentType: "text/plain", + skipContentTypeHeader: true + }) + }).then((res) => res.json()).then((res) => typeof res?.version === "string").catch(() => false); + exports2.ping = ping; + } +}); + +// node_modules/@trezor/transport/lib/pinger/ping.js +var require_ping = __commonJS({ + "node_modules/@trezor/transport/lib/pinger/ping.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ping = void 0; + var pingCommon_1 = require_pingCommon(); + Object.defineProperty(exports2, "ping", { + enumerable: true, + get: function() { + return pingCommon_1.ping; + } + }); + } +}); + +// node_modules/webidl-conversions/lib/index.js +var require_lib7 = __commonJS({ + "node_modules/webidl-conversions/lib/index.js"(exports2, module2) { + "use strict"; + var conversions = {}; + module2.exports = conversions; + function sign(x) { + return x < 0 ? -1 : 1; + } + function evenRound(x) { + if (x % 1 === 0.5 && (x & 1) === 0) { + return Math.floor(x); + } else { + return Math.round(x); + } + } + function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); + return function(V, opts) { + if (!opts) opts = {}; + let x = +V; + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } + return x; + } + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); + if (x < lowerBound) x = lowerBound; + if (x > upperBound) x = upperBound; + return x; + } + if (!Number.isFinite(x) || x === 0) { + return 0; + } + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { + return 0; + } + } + return x; + }; + } + conversions["void"] = function() { + return void 0; + }; + conversions["boolean"] = function(val) { + return !!val; + }; + conversions["byte"] = createNumberConversion(8, { unsigned: false }); + conversions["octet"] = createNumberConversion(8, { unsigned: true }); + conversions["short"] = createNumberConversion(16, { unsigned: false }); + conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); + conversions["long"] = createNumberConversion(32, { unsigned: false }); + conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); + conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); + conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); + conversions["double"] = function(V) { + const x = +V; + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } + return x; + }; + conversions["unrestricted double"] = function(V) { + const x = +V; + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } + return x; + }; + conversions["float"] = conversions["double"]; + conversions["unrestricted float"] = conversions["unrestricted double"]; + conversions["DOMString"] = function(V, opts) { + if (!opts) opts = {}; + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } + return String(V); + }; + conversions["ByteString"] = function(V, opts) { + const x = String(V); + let c = void 0; + for (let i = 0; (c = x.codePointAt(i)) !== void 0; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } + return x; + }; + conversions["USVString"] = function(V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 55296 || c > 57343) { + U.push(String.fromCodePoint(c)); + } else if (56320 <= c && c <= 57343) { + U.push(String.fromCodePoint(65533)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(65533)); + } else { + const d = S.charCodeAt(i + 1); + if (56320 <= d && d <= 57343) { + const a = c & 1023; + const b = d & 1023; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(65533)); + } + } + } + } + return U.join(""); + }; + conversions["Date"] = function(V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return void 0; + } + return V; + }; + conversions["RegExp"] = function(V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + return V; + }; + } +}); + +// node_modules/whatwg-url/lib/utils.js +var require_utils4 = __commonJS({ + "node_modules/whatwg-url/lib/utils.js"(exports2, module2) { + "use strict"; + module2.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + } + }; + module2.exports.wrapperSymbol = Symbol("wrapper"); + module2.exports.implSymbol = Symbol("impl"); + module2.exports.wrapperForImpl = function(impl) { + return impl[module2.exports.wrapperSymbol]; + }; + module2.exports.implForWrapper = function(wrapper) { + return wrapper[module2.exports.implSymbol]; + }; + } +}); + +// node_modules/tr46/lib/mappingTable.json +var require_mappingTable = __commonJS({ + "node_modules/tr46/lib/mappingTable.json"(exports2, module2) { + module2.exports = [[[0, 44], "disallowed_STD3_valid"], [[45, 46], "valid"], [[47, 47], "disallowed_STD3_valid"], [[48, 57], "valid"], [[58, 64], "disallowed_STD3_valid"], [[65, 65], "mapped", [97]], [[66, 66], "mapped", [98]], [[67, 67], "mapped", [99]], [[68, 68], "mapped", [100]], [[69, 69], "mapped", [101]], [[70, 70], "mapped", [102]], [[71, 71], "mapped", [103]], [[72, 72], "mapped", [104]], [[73, 73], "mapped", [105]], [[74, 74], "mapped", [106]], [[75, 75], "mapped", [107]], [[76, 76], "mapped", [108]], [[77, 77], "mapped", [109]], [[78, 78], "mapped", [110]], [[79, 79], "mapped", [111]], [[80, 80], "mapped", [112]], [[81, 81], "mapped", [113]], [[82, 82], "mapped", [114]], [[83, 83], "mapped", [115]], [[84, 84], "mapped", [116]], [[85, 85], "mapped", [117]], [[86, 86], "mapped", [118]], [[87, 87], "mapped", [119]], [[88, 88], "mapped", [120]], [[89, 89], "mapped", [121]], [[90, 90], "mapped", [122]], [[91, 96], "disallowed_STD3_valid"], [[97, 122], "valid"], [[123, 127], "disallowed_STD3_valid"], [[128, 159], "disallowed"], [[160, 160], "disallowed_STD3_mapped", [32]], [[161, 167], "valid", [], "NV8"], [[168, 168], "disallowed_STD3_mapped", [32, 776]], [[169, 169], "valid", [], "NV8"], [[170, 170], "mapped", [97]], [[171, 172], "valid", [], "NV8"], [[173, 173], "ignored"], [[174, 174], "valid", [], "NV8"], [[175, 175], "disallowed_STD3_mapped", [32, 772]], [[176, 177], "valid", [], "NV8"], [[178, 178], "mapped", [50]], [[179, 179], "mapped", [51]], [[180, 180], "disallowed_STD3_mapped", [32, 769]], [[181, 181], "mapped", [956]], [[182, 182], "valid", [], "NV8"], [[183, 183], "valid"], [[184, 184], "disallowed_STD3_mapped", [32, 807]], [[185, 185], "mapped", [49]], [[186, 186], "mapped", [111]], [[187, 187], "valid", [], "NV8"], [[188, 188], "mapped", [49, 8260, 52]], [[189, 189], "mapped", [49, 8260, 50]], [[190, 190], "mapped", [51, 8260, 52]], [[191, 191], "valid", [], "NV8"], [[192, 192], "mapped", [224]], [[193, 193], "mapped", [225]], [[194, 194], "mapped", [226]], [[195, 195], "mapped", [227]], [[196, 196], "mapped", [228]], [[197, 197], "mapped", [229]], [[198, 198], "mapped", [230]], [[199, 199], "mapped", [231]], [[200, 200], "mapped", [232]], [[201, 201], "mapped", [233]], [[202, 202], "mapped", [234]], [[203, 203], "mapped", [235]], [[204, 204], "mapped", [236]], [[205, 205], "mapped", [237]], [[206, 206], "mapped", [238]], [[207, 207], "mapped", [239]], [[208, 208], "mapped", [240]], [[209, 209], "mapped", [241]], [[210, 210], "mapped", [242]], [[211, 211], "mapped", [243]], [[212, 212], "mapped", [244]], [[213, 213], "mapped", [245]], [[214, 214], "mapped", [246]], [[215, 215], "valid", [], "NV8"], [[216, 216], "mapped", [248]], [[217, 217], "mapped", [249]], [[218, 218], "mapped", [250]], [[219, 219], "mapped", [251]], [[220, 220], "mapped", [252]], [[221, 221], "mapped", [253]], [[222, 222], "mapped", [254]], [[223, 223], "deviation", [115, 115]], [[224, 246], "valid"], [[247, 247], "valid", [], "NV8"], [[248, 255], "valid"], [[256, 256], "mapped", [257]], [[257, 257], "valid"], [[258, 258], "mapped", [259]], [[259, 259], "valid"], [[260, 260], "mapped", [261]], [[261, 261], "valid"], [[262, 262], "mapped", [263]], [[263, 263], "valid"], [[264, 264], "mapped", [265]], [[265, 265], "valid"], [[266, 266], "mapped", [267]], [[267, 267], "valid"], [[268, 268], "mapped", [269]], [[269, 269], "valid"], [[270, 270], "mapped", [271]], [[271, 271], "valid"], [[272, 272], "mapped", [273]], [[273, 273], "valid"], [[274, 274], "mapped", [275]], [[275, 275], "valid"], [[276, 276], "mapped", [277]], [[277, 277], "valid"], [[278, 278], "mapped", [279]], [[279, 279], "valid"], [[280, 280], "mapped", [281]], [[281, 281], "valid"], [[282, 282], "mapped", [283]], [[283, 283], "valid"], [[284, 284], "mapped", [285]], [[285, 285], "valid"], [[286, 286], "mapped", [287]], [[287, 287], "valid"], [[288, 288], "mapped", [289]], [[289, 289], "valid"], [[290, 290], "mapped", [291]], [[291, 291], "valid"], [[292, 292], "mapped", [293]], [[293, 293], "valid"], [[294, 294], "mapped", [295]], [[295, 295], "valid"], [[296, 296], "mapped", [297]], [[297, 297], "valid"], [[298, 298], "mapped", [299]], [[299, 299], "valid"], [[300, 300], "mapped", [301]], [[301, 301], "valid"], [[302, 302], "mapped", [303]], [[303, 303], "valid"], [[304, 304], "mapped", [105, 775]], [[305, 305], "valid"], [[306, 307], "mapped", [105, 106]], [[308, 308], "mapped", [309]], [[309, 309], "valid"], [[310, 310], "mapped", [311]], [[311, 312], "valid"], [[313, 313], "mapped", [314]], [[314, 314], "valid"], [[315, 315], "mapped", [316]], [[316, 316], "valid"], [[317, 317], "mapped", [318]], [[318, 318], "valid"], [[319, 320], "mapped", [108, 183]], [[321, 321], "mapped", [322]], [[322, 322], "valid"], [[323, 323], "mapped", [324]], [[324, 324], "valid"], [[325, 325], "mapped", [326]], [[326, 326], "valid"], [[327, 327], "mapped", [328]], [[328, 328], "valid"], [[329, 329], "mapped", [700, 110]], [[330, 330], "mapped", [331]], [[331, 331], "valid"], [[332, 332], "mapped", [333]], [[333, 333], "valid"], [[334, 334], "mapped", [335]], [[335, 335], "valid"], [[336, 336], "mapped", [337]], [[337, 337], "valid"], [[338, 338], "mapped", [339]], [[339, 339], "valid"], [[340, 340], "mapped", [341]], [[341, 341], "valid"], [[342, 342], "mapped", [343]], [[343, 343], "valid"], [[344, 344], "mapped", [345]], [[345, 345], "valid"], [[346, 346], "mapped", [347]], [[347, 347], "valid"], [[348, 348], "mapped", [349]], [[349, 349], "valid"], [[350, 350], "mapped", [351]], [[351, 351], "valid"], [[352, 352], "mapped", [353]], [[353, 353], "valid"], [[354, 354], "mapped", [355]], [[355, 355], "valid"], [[356, 356], "mapped", [357]], [[357, 357], "valid"], [[358, 358], "mapped", [359]], [[359, 359], "valid"], [[360, 360], "mapped", [361]], [[361, 361], "valid"], [[362, 362], "mapped", [363]], [[363, 363], "valid"], [[364, 364], "mapped", [365]], [[365, 365], "valid"], [[366, 366], "mapped", [367]], [[367, 367], "valid"], [[368, 368], "mapped", [369]], [[369, 369], "valid"], [[370, 370], "mapped", [371]], [[371, 371], "valid"], [[372, 372], "mapped", [373]], [[373, 373], "valid"], [[374, 374], "mapped", [375]], [[375, 375], "valid"], [[376, 376], "mapped", [255]], [[377, 377], "mapped", [378]], [[378, 378], "valid"], [[379, 379], "mapped", [380]], [[380, 380], "valid"], [[381, 381], "mapped", [382]], [[382, 382], "valid"], [[383, 383], "mapped", [115]], [[384, 384], "valid"], [[385, 385], "mapped", [595]], [[386, 386], "mapped", [387]], [[387, 387], "valid"], [[388, 388], "mapped", [389]], [[389, 389], "valid"], [[390, 390], "mapped", [596]], [[391, 391], "mapped", [392]], [[392, 392], "valid"], [[393, 393], "mapped", [598]], [[394, 394], "mapped", [599]], [[395, 395], "mapped", [396]], [[396, 397], "valid"], [[398, 398], "mapped", [477]], [[399, 399], "mapped", [601]], [[400, 400], "mapped", [603]], [[401, 401], "mapped", [402]], [[402, 402], "valid"], [[403, 403], "mapped", [608]], [[404, 404], "mapped", [611]], [[405, 405], "valid"], [[406, 406], "mapped", [617]], [[407, 407], "mapped", [616]], [[408, 408], "mapped", [409]], [[409, 411], "valid"], [[412, 412], "mapped", [623]], [[413, 413], "mapped", [626]], [[414, 414], "valid"], [[415, 415], "mapped", [629]], [[416, 416], "mapped", [417]], [[417, 417], "valid"], [[418, 418], "mapped", [419]], [[419, 419], "valid"], [[420, 420], "mapped", [421]], [[421, 421], "valid"], [[422, 422], "mapped", [640]], [[423, 423], "mapped", [424]], [[424, 424], "valid"], [[425, 425], "mapped", [643]], [[426, 427], "valid"], [[428, 428], "mapped", [429]], [[429, 429], "valid"], [[430, 430], "mapped", [648]], [[431, 431], "mapped", [432]], [[432, 432], "valid"], [[433, 433], "mapped", [650]], [[434, 434], "mapped", [651]], [[435, 435], "mapped", [436]], [[436, 436], "valid"], [[437, 437], "mapped", [438]], [[438, 438], "valid"], [[439, 439], "mapped", [658]], [[440, 440], "mapped", [441]], [[441, 443], "valid"], [[444, 444], "mapped", [445]], [[445, 451], "valid"], [[452, 454], "mapped", [100, 382]], [[455, 457], "mapped", [108, 106]], [[458, 460], "mapped", [110, 106]], [[461, 461], "mapped", [462]], [[462, 462], "valid"], [[463, 463], "mapped", [464]], [[464, 464], "valid"], [[465, 465], "mapped", [466]], [[466, 466], "valid"], [[467, 467], "mapped", [468]], [[468, 468], "valid"], [[469, 469], "mapped", [470]], [[470, 470], "valid"], [[471, 471], "mapped", [472]], [[472, 472], "valid"], [[473, 473], "mapped", [474]], [[474, 474], "valid"], [[475, 475], "mapped", [476]], [[476, 477], "valid"], [[478, 478], "mapped", [479]], [[479, 479], "valid"], [[480, 480], "mapped", [481]], [[481, 481], "valid"], [[482, 482], "mapped", [483]], [[483, 483], "valid"], [[484, 484], "mapped", [485]], [[485, 485], "valid"], [[486, 486], "mapped", [487]], [[487, 487], "valid"], [[488, 488], "mapped", [489]], [[489, 489], "valid"], [[490, 490], "mapped", [491]], [[491, 491], "valid"], [[492, 492], "mapped", [493]], [[493, 493], "valid"], [[494, 494], "mapped", [495]], [[495, 496], "valid"], [[497, 499], "mapped", [100, 122]], [[500, 500], "mapped", [501]], [[501, 501], "valid"], [[502, 502], "mapped", [405]], [[503, 503], "mapped", [447]], [[504, 504], "mapped", [505]], [[505, 505], "valid"], [[506, 506], "mapped", [507]], [[507, 507], "valid"], [[508, 508], "mapped", [509]], [[509, 509], "valid"], [[510, 510], "mapped", [511]], [[511, 511], "valid"], [[512, 512], "mapped", [513]], [[513, 513], "valid"], [[514, 514], "mapped", [515]], [[515, 515], "valid"], [[516, 516], "mapped", [517]], [[517, 517], "valid"], [[518, 518], "mapped", [519]], [[519, 519], "valid"], [[520, 520], "mapped", [521]], [[521, 521], "valid"], [[522, 522], "mapped", [523]], [[523, 523], "valid"], [[524, 524], "mapped", [525]], [[525, 525], "valid"], [[526, 526], "mapped", [527]], [[527, 527], "valid"], [[528, 528], "mapped", [529]], [[529, 529], "valid"], [[530, 530], "mapped", [531]], [[531, 531], "valid"], [[532, 532], "mapped", [533]], [[533, 533], "valid"], [[534, 534], "mapped", [535]], [[535, 535], "valid"], [[536, 536], "mapped", [537]], [[537, 537], "valid"], [[538, 538], "mapped", [539]], [[539, 539], "valid"], [[540, 540], "mapped", [541]], [[541, 541], "valid"], [[542, 542], "mapped", [543]], [[543, 543], "valid"], [[544, 544], "mapped", [414]], [[545, 545], "valid"], [[546, 546], "mapped", [547]], [[547, 547], "valid"], [[548, 548], "mapped", [549]], [[549, 549], "valid"], [[550, 550], "mapped", [551]], [[551, 551], "valid"], [[552, 552], "mapped", [553]], [[553, 553], "valid"], [[554, 554], "mapped", [555]], [[555, 555], "valid"], [[556, 556], "mapped", [557]], [[557, 557], "valid"], [[558, 558], "mapped", [559]], [[559, 559], "valid"], [[560, 560], "mapped", [561]], [[561, 561], "valid"], [[562, 562], "mapped", [563]], [[563, 563], "valid"], [[564, 566], "valid"], [[567, 569], "valid"], [[570, 570], "mapped", [11365]], [[571, 571], "mapped", [572]], [[572, 572], "valid"], [[573, 573], "mapped", [410]], [[574, 574], "mapped", [11366]], [[575, 576], "valid"], [[577, 577], "mapped", [578]], [[578, 578], "valid"], [[579, 579], "mapped", [384]], [[580, 580], "mapped", [649]], [[581, 581], "mapped", [652]], [[582, 582], "mapped", [583]], [[583, 583], "valid"], [[584, 584], "mapped", [585]], [[585, 585], "valid"], [[586, 586], "mapped", [587]], [[587, 587], "valid"], [[588, 588], "mapped", [589]], [[589, 589], "valid"], [[590, 590], "mapped", [591]], [[591, 591], "valid"], [[592, 680], "valid"], [[681, 685], "valid"], [[686, 687], "valid"], [[688, 688], "mapped", [104]], [[689, 689], "mapped", [614]], [[690, 690], "mapped", [106]], [[691, 691], "mapped", [114]], [[692, 692], "mapped", [633]], [[693, 693], "mapped", [635]], [[694, 694], "mapped", [641]], [[695, 695], "mapped", [119]], [[696, 696], "mapped", [121]], [[697, 705], "valid"], [[706, 709], "valid", [], "NV8"], [[710, 721], "valid"], [[722, 727], "valid", [], "NV8"], [[728, 728], "disallowed_STD3_mapped", [32, 774]], [[729, 729], "disallowed_STD3_mapped", [32, 775]], [[730, 730], "disallowed_STD3_mapped", [32, 778]], [[731, 731], "disallowed_STD3_mapped", [32, 808]], [[732, 732], "disallowed_STD3_mapped", [32, 771]], [[733, 733], "disallowed_STD3_mapped", [32, 779]], [[734, 734], "valid", [], "NV8"], [[735, 735], "valid", [], "NV8"], [[736, 736], "mapped", [611]], [[737, 737], "mapped", [108]], [[738, 738], "mapped", [115]], [[739, 739], "mapped", [120]], [[740, 740], "mapped", [661]], [[741, 745], "valid", [], "NV8"], [[746, 747], "valid", [], "NV8"], [[748, 748], "valid"], [[749, 749], "valid", [], "NV8"], [[750, 750], "valid"], [[751, 767], "valid", [], "NV8"], [[768, 831], "valid"], [[832, 832], "mapped", [768]], [[833, 833], "mapped", [769]], [[834, 834], "valid"], [[835, 835], "mapped", [787]], [[836, 836], "mapped", [776, 769]], [[837, 837], "mapped", [953]], [[838, 846], "valid"], [[847, 847], "ignored"], [[848, 855], "valid"], [[856, 860], "valid"], [[861, 863], "valid"], [[864, 865], "valid"], [[866, 866], "valid"], [[867, 879], "valid"], [[880, 880], "mapped", [881]], [[881, 881], "valid"], [[882, 882], "mapped", [883]], [[883, 883], "valid"], [[884, 884], "mapped", [697]], [[885, 885], "valid"], [[886, 886], "mapped", [887]], [[887, 887], "valid"], [[888, 889], "disallowed"], [[890, 890], "disallowed_STD3_mapped", [32, 953]], [[891, 893], "valid"], [[894, 894], "disallowed_STD3_mapped", [59]], [[895, 895], "mapped", [1011]], [[896, 899], "disallowed"], [[900, 900], "disallowed_STD3_mapped", [32, 769]], [[901, 901], "disallowed_STD3_mapped", [32, 776, 769]], [[902, 902], "mapped", [940]], [[903, 903], "mapped", [183]], [[904, 904], "mapped", [941]], [[905, 905], "mapped", [942]], [[906, 906], "mapped", [943]], [[907, 907], "disallowed"], [[908, 908], "mapped", [972]], [[909, 909], "disallowed"], [[910, 910], "mapped", [973]], [[911, 911], "mapped", [974]], [[912, 912], "valid"], [[913, 913], "mapped", [945]], [[914, 914], "mapped", [946]], [[915, 915], "mapped", [947]], [[916, 916], "mapped", [948]], [[917, 917], "mapped", [949]], [[918, 918], "mapped", [950]], [[919, 919], "mapped", [951]], [[920, 920], "mapped", [952]], [[921, 921], "mapped", [953]], [[922, 922], "mapped", [954]], [[923, 923], "mapped", [955]], [[924, 924], "mapped", [956]], [[925, 925], "mapped", [957]], [[926, 926], "mapped", [958]], [[927, 927], "mapped", [959]], [[928, 928], "mapped", [960]], [[929, 929], "mapped", [961]], [[930, 930], "disallowed"], [[931, 931], "mapped", [963]], [[932, 932], "mapped", [964]], [[933, 933], "mapped", [965]], [[934, 934], "mapped", [966]], [[935, 935], "mapped", [967]], [[936, 936], "mapped", [968]], [[937, 937], "mapped", [969]], [[938, 938], "mapped", [970]], [[939, 939], "mapped", [971]], [[940, 961], "valid"], [[962, 962], "deviation", [963]], [[963, 974], "valid"], [[975, 975], "mapped", [983]], [[976, 976], "mapped", [946]], [[977, 977], "mapped", [952]], [[978, 978], "mapped", [965]], [[979, 979], "mapped", [973]], [[980, 980], "mapped", [971]], [[981, 981], "mapped", [966]], [[982, 982], "mapped", [960]], [[983, 983], "valid"], [[984, 984], "mapped", [985]], [[985, 985], "valid"], [[986, 986], "mapped", [987]], [[987, 987], "valid"], [[988, 988], "mapped", [989]], [[989, 989], "valid"], [[990, 990], "mapped", [991]], [[991, 991], "valid"], [[992, 992], "mapped", [993]], [[993, 993], "valid"], [[994, 994], "mapped", [995]], [[995, 995], "valid"], [[996, 996], "mapped", [997]], [[997, 997], "valid"], [[998, 998], "mapped", [999]], [[999, 999], "valid"], [[1e3, 1e3], "mapped", [1001]], [[1001, 1001], "valid"], [[1002, 1002], "mapped", [1003]], [[1003, 1003], "valid"], [[1004, 1004], "mapped", [1005]], [[1005, 1005], "valid"], [[1006, 1006], "mapped", [1007]], [[1007, 1007], "valid"], [[1008, 1008], "mapped", [954]], [[1009, 1009], "mapped", [961]], [[1010, 1010], "mapped", [963]], [[1011, 1011], "valid"], [[1012, 1012], "mapped", [952]], [[1013, 1013], "mapped", [949]], [[1014, 1014], "valid", [], "NV8"], [[1015, 1015], "mapped", [1016]], [[1016, 1016], "valid"], [[1017, 1017], "mapped", [963]], [[1018, 1018], "mapped", [1019]], [[1019, 1019], "valid"], [[1020, 1020], "valid"], [[1021, 1021], "mapped", [891]], [[1022, 1022], "mapped", [892]], [[1023, 1023], "mapped", [893]], [[1024, 1024], "mapped", [1104]], [[1025, 1025], "mapped", [1105]], [[1026, 1026], "mapped", [1106]], [[1027, 1027], "mapped", [1107]], [[1028, 1028], "mapped", [1108]], [[1029, 1029], "mapped", [1109]], [[1030, 1030], "mapped", [1110]], [[1031, 1031], "mapped", [1111]], [[1032, 1032], "mapped", [1112]], [[1033, 1033], "mapped", [1113]], [[1034, 1034], "mapped", [1114]], [[1035, 1035], "mapped", [1115]], [[1036, 1036], "mapped", [1116]], [[1037, 1037], "mapped", [1117]], [[1038, 1038], "mapped", [1118]], [[1039, 1039], "mapped", [1119]], [[1040, 1040], "mapped", [1072]], [[1041, 1041], "mapped", [1073]], [[1042, 1042], "mapped", [1074]], [[1043, 1043], "mapped", [1075]], [[1044, 1044], "mapped", [1076]], [[1045, 1045], "mapped", [1077]], [[1046, 1046], "mapped", [1078]], [[1047, 1047], "mapped", [1079]], [[1048, 1048], "mapped", [1080]], [[1049, 1049], "mapped", [1081]], [[1050, 1050], "mapped", [1082]], [[1051, 1051], "mapped", [1083]], [[1052, 1052], "mapped", [1084]], [[1053, 1053], "mapped", [1085]], [[1054, 1054], "mapped", [1086]], [[1055, 1055], "mapped", [1087]], [[1056, 1056], "mapped", [1088]], [[1057, 1057], "mapped", [1089]], [[1058, 1058], "mapped", [1090]], [[1059, 1059], "mapped", [1091]], [[1060, 1060], "mapped", [1092]], [[1061, 1061], "mapped", [1093]], [[1062, 1062], "mapped", [1094]], [[1063, 1063], "mapped", [1095]], [[1064, 1064], "mapped", [1096]], [[1065, 1065], "mapped", [1097]], [[1066, 1066], "mapped", [1098]], [[1067, 1067], "mapped", [1099]], [[1068, 1068], "mapped", [1100]], [[1069, 1069], "mapped", [1101]], [[1070, 1070], "mapped", [1102]], [[1071, 1071], "mapped", [1103]], [[1072, 1103], "valid"], [[1104, 1104], "valid"], [[1105, 1116], "valid"], [[1117, 1117], "valid"], [[1118, 1119], "valid"], [[1120, 1120], "mapped", [1121]], [[1121, 1121], "valid"], [[1122, 1122], "mapped", [1123]], [[1123, 1123], "valid"], [[1124, 1124], "mapped", [1125]], [[1125, 1125], "valid"], [[1126, 1126], "mapped", [1127]], [[1127, 1127], "valid"], [[1128, 1128], "mapped", [1129]], [[1129, 1129], "valid"], [[1130, 1130], "mapped", [1131]], [[1131, 1131], "valid"], [[1132, 1132], "mapped", [1133]], [[1133, 1133], "valid"], [[1134, 1134], "mapped", [1135]], [[1135, 1135], "valid"], [[1136, 1136], "mapped", [1137]], [[1137, 1137], "valid"], [[1138, 1138], "mapped", [1139]], [[1139, 1139], "valid"], [[1140, 1140], "mapped", [1141]], [[1141, 1141], "valid"], [[1142, 1142], "mapped", [1143]], [[1143, 1143], "valid"], [[1144, 1144], "mapped", [1145]], [[1145, 1145], "valid"], [[1146, 1146], "mapped", [1147]], [[1147, 1147], "valid"], [[1148, 1148], "mapped", [1149]], [[1149, 1149], "valid"], [[1150, 1150], "mapped", [1151]], [[1151, 1151], "valid"], [[1152, 1152], "mapped", [1153]], [[1153, 1153], "valid"], [[1154, 1154], "valid", [], "NV8"], [[1155, 1158], "valid"], [[1159, 1159], "valid"], [[1160, 1161], "valid", [], "NV8"], [[1162, 1162], "mapped", [1163]], [[1163, 1163], "valid"], [[1164, 1164], "mapped", [1165]], [[1165, 1165], "valid"], [[1166, 1166], "mapped", [1167]], [[1167, 1167], "valid"], [[1168, 1168], "mapped", [1169]], [[1169, 1169], "valid"], [[1170, 1170], "mapped", [1171]], [[1171, 1171], "valid"], [[1172, 1172], "mapped", [1173]], [[1173, 1173], "valid"], [[1174, 1174], "mapped", [1175]], [[1175, 1175], "valid"], [[1176, 1176], "mapped", [1177]], [[1177, 1177], "valid"], [[1178, 1178], "mapped", [1179]], [[1179, 1179], "valid"], [[1180, 1180], "mapped", [1181]], [[1181, 1181], "valid"], [[1182, 1182], "mapped", [1183]], [[1183, 1183], "valid"], [[1184, 1184], "mapped", [1185]], [[1185, 1185], "valid"], [[1186, 1186], "mapped", [1187]], [[1187, 1187], "valid"], [[1188, 1188], "mapped", [1189]], [[1189, 1189], "valid"], [[1190, 1190], "mapped", [1191]], [[1191, 1191], "valid"], [[1192, 1192], "mapped", [1193]], [[1193, 1193], "valid"], [[1194, 1194], "mapped", [1195]], [[1195, 1195], "valid"], [[1196, 1196], "mapped", [1197]], [[1197, 1197], "valid"], [[1198, 1198], "mapped", [1199]], [[1199, 1199], "valid"], [[1200, 1200], "mapped", [1201]], [[1201, 1201], "valid"], [[1202, 1202], "mapped", [1203]], [[1203, 1203], "valid"], [[1204, 1204], "mapped", [1205]], [[1205, 1205], "valid"], [[1206, 1206], "mapped", [1207]], [[1207, 1207], "valid"], [[1208, 1208], "mapped", [1209]], [[1209, 1209], "valid"], [[1210, 1210], "mapped", [1211]], [[1211, 1211], "valid"], [[1212, 1212], "mapped", [1213]], [[1213, 1213], "valid"], [[1214, 1214], "mapped", [1215]], [[1215, 1215], "valid"], [[1216, 1216], "disallowed"], [[1217, 1217], "mapped", [1218]], [[1218, 1218], "valid"], [[1219, 1219], "mapped", [1220]], [[1220, 1220], "valid"], [[1221, 1221], "mapped", [1222]], [[1222, 1222], "valid"], [[1223, 1223], "mapped", [1224]], [[1224, 1224], "valid"], [[1225, 1225], "mapped", [1226]], [[1226, 1226], "valid"], [[1227, 1227], "mapped", [1228]], [[1228, 1228], "valid"], [[1229, 1229], "mapped", [1230]], [[1230, 1230], "valid"], [[1231, 1231], "valid"], [[1232, 1232], "mapped", [1233]], [[1233, 1233], "valid"], [[1234, 1234], "mapped", [1235]], [[1235, 1235], "valid"], [[1236, 1236], "mapped", [1237]], [[1237, 1237], "valid"], [[1238, 1238], "mapped", [1239]], [[1239, 1239], "valid"], [[1240, 1240], "mapped", [1241]], [[1241, 1241], "valid"], [[1242, 1242], "mapped", [1243]], [[1243, 1243], "valid"], [[1244, 1244], "mapped", [1245]], [[1245, 1245], "valid"], [[1246, 1246], "mapped", [1247]], [[1247, 1247], "valid"], [[1248, 1248], "mapped", [1249]], [[1249, 1249], "valid"], [[1250, 1250], "mapped", [1251]], [[1251, 1251], "valid"], [[1252, 1252], "mapped", [1253]], [[1253, 1253], "valid"], [[1254, 1254], "mapped", [1255]], [[1255, 1255], "valid"], [[1256, 1256], "mapped", [1257]], [[1257, 1257], "valid"], [[1258, 1258], "mapped", [1259]], [[1259, 1259], "valid"], [[1260, 1260], "mapped", [1261]], [[1261, 1261], "valid"], [[1262, 1262], "mapped", [1263]], [[1263, 1263], "valid"], [[1264, 1264], "mapped", [1265]], [[1265, 1265], "valid"], [[1266, 1266], "mapped", [1267]], [[1267, 1267], "valid"], [[1268, 1268], "mapped", [1269]], [[1269, 1269], "valid"], [[1270, 1270], "mapped", [1271]], [[1271, 1271], "valid"], [[1272, 1272], "mapped", [1273]], [[1273, 1273], "valid"], [[1274, 1274], "mapped", [1275]], [[1275, 1275], "valid"], [[1276, 1276], "mapped", [1277]], [[1277, 1277], "valid"], [[1278, 1278], "mapped", [1279]], [[1279, 1279], "valid"], [[1280, 1280], "mapped", [1281]], [[1281, 1281], "valid"], [[1282, 1282], "mapped", [1283]], [[1283, 1283], "valid"], [[1284, 1284], "mapped", [1285]], [[1285, 1285], "valid"], [[1286, 1286], "mapped", [1287]], [[1287, 1287], "valid"], [[1288, 1288], "mapped", [1289]], [[1289, 1289], "valid"], [[1290, 1290], "mapped", [1291]], [[1291, 1291], "valid"], [[1292, 1292], "mapped", [1293]], [[1293, 1293], "valid"], [[1294, 1294], "mapped", [1295]], [[1295, 1295], "valid"], [[1296, 1296], "mapped", [1297]], [[1297, 1297], "valid"], [[1298, 1298], "mapped", [1299]], [[1299, 1299], "valid"], [[1300, 1300], "mapped", [1301]], [[1301, 1301], "valid"], [[1302, 1302], "mapped", [1303]], [[1303, 1303], "valid"], [[1304, 1304], "mapped", [1305]], [[1305, 1305], "valid"], [[1306, 1306], "mapped", [1307]], [[1307, 1307], "valid"], [[1308, 1308], "mapped", [1309]], [[1309, 1309], "valid"], [[1310, 1310], "mapped", [1311]], [[1311, 1311], "valid"], [[1312, 1312], "mapped", [1313]], [[1313, 1313], "valid"], [[1314, 1314], "mapped", [1315]], [[1315, 1315], "valid"], [[1316, 1316], "mapped", [1317]], [[1317, 1317], "valid"], [[1318, 1318], "mapped", [1319]], [[1319, 1319], "valid"], [[1320, 1320], "mapped", [1321]], [[1321, 1321], "valid"], [[1322, 1322], "mapped", [1323]], [[1323, 1323], "valid"], [[1324, 1324], "mapped", [1325]], [[1325, 1325], "valid"], [[1326, 1326], "mapped", [1327]], [[1327, 1327], "valid"], [[1328, 1328], "disallowed"], [[1329, 1329], "mapped", [1377]], [[1330, 1330], "mapped", [1378]], [[1331, 1331], "mapped", [1379]], [[1332, 1332], "mapped", [1380]], [[1333, 1333], "mapped", [1381]], [[1334, 1334], "mapped", [1382]], [[1335, 1335], "mapped", [1383]], [[1336, 1336], "mapped", [1384]], [[1337, 1337], "mapped", [1385]], [[1338, 1338], "mapped", [1386]], [[1339, 1339], "mapped", [1387]], [[1340, 1340], "mapped", [1388]], [[1341, 1341], "mapped", [1389]], [[1342, 1342], "mapped", [1390]], [[1343, 1343], "mapped", [1391]], [[1344, 1344], "mapped", [1392]], [[1345, 1345], "mapped", [1393]], [[1346, 1346], "mapped", [1394]], [[1347, 1347], "mapped", [1395]], [[1348, 1348], "mapped", [1396]], [[1349, 1349], "mapped", [1397]], [[1350, 1350], "mapped", [1398]], [[1351, 1351], "mapped", [1399]], [[1352, 1352], "mapped", [1400]], [[1353, 1353], "mapped", [1401]], [[1354, 1354], "mapped", [1402]], [[1355, 1355], "mapped", [1403]], [[1356, 1356], "mapped", [1404]], [[1357, 1357], "mapped", [1405]], [[1358, 1358], "mapped", [1406]], [[1359, 1359], "mapped", [1407]], [[1360, 1360], "mapped", [1408]], [[1361, 1361], "mapped", [1409]], [[1362, 1362], "mapped", [1410]], [[1363, 1363], "mapped", [1411]], [[1364, 1364], "mapped", [1412]], [[1365, 1365], "mapped", [1413]], [[1366, 1366], "mapped", [1414]], [[1367, 1368], "disallowed"], [[1369, 1369], "valid"], [[1370, 1375], "valid", [], "NV8"], [[1376, 1376], "disallowed"], [[1377, 1414], "valid"], [[1415, 1415], "mapped", [1381, 1410]], [[1416, 1416], "disallowed"], [[1417, 1417], "valid", [], "NV8"], [[1418, 1418], "valid", [], "NV8"], [[1419, 1420], "disallowed"], [[1421, 1422], "valid", [], "NV8"], [[1423, 1423], "valid", [], "NV8"], [[1424, 1424], "disallowed"], [[1425, 1441], "valid"], [[1442, 1442], "valid"], [[1443, 1455], "valid"], [[1456, 1465], "valid"], [[1466, 1466], "valid"], [[1467, 1469], "valid"], [[1470, 1470], "valid", [], "NV8"], [[1471, 1471], "valid"], [[1472, 1472], "valid", [], "NV8"], [[1473, 1474], "valid"], [[1475, 1475], "valid", [], "NV8"], [[1476, 1476], "valid"], [[1477, 1477], "valid"], [[1478, 1478], "valid", [], "NV8"], [[1479, 1479], "valid"], [[1480, 1487], "disallowed"], [[1488, 1514], "valid"], [[1515, 1519], "disallowed"], [[1520, 1524], "valid"], [[1525, 1535], "disallowed"], [[1536, 1539], "disallowed"], [[1540, 1540], "disallowed"], [[1541, 1541], "disallowed"], [[1542, 1546], "valid", [], "NV8"], [[1547, 1547], "valid", [], "NV8"], [[1548, 1548], "valid", [], "NV8"], [[1549, 1551], "valid", [], "NV8"], [[1552, 1557], "valid"], [[1558, 1562], "valid"], [[1563, 1563], "valid", [], "NV8"], [[1564, 1564], "disallowed"], [[1565, 1565], "disallowed"], [[1566, 1566], "valid", [], "NV8"], [[1567, 1567], "valid", [], "NV8"], [[1568, 1568], "valid"], [[1569, 1594], "valid"], [[1595, 1599], "valid"], [[1600, 1600], "valid", [], "NV8"], [[1601, 1618], "valid"], [[1619, 1621], "valid"], [[1622, 1624], "valid"], [[1625, 1630], "valid"], [[1631, 1631], "valid"], [[1632, 1641], "valid"], [[1642, 1645], "valid", [], "NV8"], [[1646, 1647], "valid"], [[1648, 1652], "valid"], [[1653, 1653], "mapped", [1575, 1652]], [[1654, 1654], "mapped", [1608, 1652]], [[1655, 1655], "mapped", [1735, 1652]], [[1656, 1656], "mapped", [1610, 1652]], [[1657, 1719], "valid"], [[1720, 1721], "valid"], [[1722, 1726], "valid"], [[1727, 1727], "valid"], [[1728, 1742], "valid"], [[1743, 1743], "valid"], [[1744, 1747], "valid"], [[1748, 1748], "valid", [], "NV8"], [[1749, 1756], "valid"], [[1757, 1757], "disallowed"], [[1758, 1758], "valid", [], "NV8"], [[1759, 1768], "valid"], [[1769, 1769], "valid", [], "NV8"], [[1770, 1773], "valid"], [[1774, 1775], "valid"], [[1776, 1785], "valid"], [[1786, 1790], "valid"], [[1791, 1791], "valid"], [[1792, 1805], "valid", [], "NV8"], [[1806, 1806], "disallowed"], [[1807, 1807], "disallowed"], [[1808, 1836], "valid"], [[1837, 1839], "valid"], [[1840, 1866], "valid"], [[1867, 1868], "disallowed"], [[1869, 1871], "valid"], [[1872, 1901], "valid"], [[1902, 1919], "valid"], [[1920, 1968], "valid"], [[1969, 1969], "valid"], [[1970, 1983], "disallowed"], [[1984, 2037], "valid"], [[2038, 2042], "valid", [], "NV8"], [[2043, 2047], "disallowed"], [[2048, 2093], "valid"], [[2094, 2095], "disallowed"], [[2096, 2110], "valid", [], "NV8"], [[2111, 2111], "disallowed"], [[2112, 2139], "valid"], [[2140, 2141], "disallowed"], [[2142, 2142], "valid", [], "NV8"], [[2143, 2207], "disallowed"], [[2208, 2208], "valid"], [[2209, 2209], "valid"], [[2210, 2220], "valid"], [[2221, 2226], "valid"], [[2227, 2228], "valid"], [[2229, 2274], "disallowed"], [[2275, 2275], "valid"], [[2276, 2302], "valid"], [[2303, 2303], "valid"], [[2304, 2304], "valid"], [[2305, 2307], "valid"], [[2308, 2308], "valid"], [[2309, 2361], "valid"], [[2362, 2363], "valid"], [[2364, 2381], "valid"], [[2382, 2382], "valid"], [[2383, 2383], "valid"], [[2384, 2388], "valid"], [[2389, 2389], "valid"], [[2390, 2391], "valid"], [[2392, 2392], "mapped", [2325, 2364]], [[2393, 2393], "mapped", [2326, 2364]], [[2394, 2394], "mapped", [2327, 2364]], [[2395, 2395], "mapped", [2332, 2364]], [[2396, 2396], "mapped", [2337, 2364]], [[2397, 2397], "mapped", [2338, 2364]], [[2398, 2398], "mapped", [2347, 2364]], [[2399, 2399], "mapped", [2351, 2364]], [[2400, 2403], "valid"], [[2404, 2405], "valid", [], "NV8"], [[2406, 2415], "valid"], [[2416, 2416], "valid", [], "NV8"], [[2417, 2418], "valid"], [[2419, 2423], "valid"], [[2424, 2424], "valid"], [[2425, 2426], "valid"], [[2427, 2428], "valid"], [[2429, 2429], "valid"], [[2430, 2431], "valid"], [[2432, 2432], "valid"], [[2433, 2435], "valid"], [[2436, 2436], "disallowed"], [[2437, 2444], "valid"], [[2445, 2446], "disallowed"], [[2447, 2448], "valid"], [[2449, 2450], "disallowed"], [[2451, 2472], "valid"], [[2473, 2473], "disallowed"], [[2474, 2480], "valid"], [[2481, 2481], "disallowed"], [[2482, 2482], "valid"], [[2483, 2485], "disallowed"], [[2486, 2489], "valid"], [[2490, 2491], "disallowed"], [[2492, 2492], "valid"], [[2493, 2493], "valid"], [[2494, 2500], "valid"], [[2501, 2502], "disallowed"], [[2503, 2504], "valid"], [[2505, 2506], "disallowed"], [[2507, 2509], "valid"], [[2510, 2510], "valid"], [[2511, 2518], "disallowed"], [[2519, 2519], "valid"], [[2520, 2523], "disallowed"], [[2524, 2524], "mapped", [2465, 2492]], [[2525, 2525], "mapped", [2466, 2492]], [[2526, 2526], "disallowed"], [[2527, 2527], "mapped", [2479, 2492]], [[2528, 2531], "valid"], [[2532, 2533], "disallowed"], [[2534, 2545], "valid"], [[2546, 2554], "valid", [], "NV8"], [[2555, 2555], "valid", [], "NV8"], [[2556, 2560], "disallowed"], [[2561, 2561], "valid"], [[2562, 2562], "valid"], [[2563, 2563], "valid"], [[2564, 2564], "disallowed"], [[2565, 2570], "valid"], [[2571, 2574], "disallowed"], [[2575, 2576], "valid"], [[2577, 2578], "disallowed"], [[2579, 2600], "valid"], [[2601, 2601], "disallowed"], [[2602, 2608], "valid"], [[2609, 2609], "disallowed"], [[2610, 2610], "valid"], [[2611, 2611], "mapped", [2610, 2620]], [[2612, 2612], "disallowed"], [[2613, 2613], "valid"], [[2614, 2614], "mapped", [2616, 2620]], [[2615, 2615], "disallowed"], [[2616, 2617], "valid"], [[2618, 2619], "disallowed"], [[2620, 2620], "valid"], [[2621, 2621], "disallowed"], [[2622, 2626], "valid"], [[2627, 2630], "disallowed"], [[2631, 2632], "valid"], [[2633, 2634], "disallowed"], [[2635, 2637], "valid"], [[2638, 2640], "disallowed"], [[2641, 2641], "valid"], [[2642, 2648], "disallowed"], [[2649, 2649], "mapped", [2582, 2620]], [[2650, 2650], "mapped", [2583, 2620]], [[2651, 2651], "mapped", [2588, 2620]], [[2652, 2652], "valid"], [[2653, 2653], "disallowed"], [[2654, 2654], "mapped", [2603, 2620]], [[2655, 2661], "disallowed"], [[2662, 2676], "valid"], [[2677, 2677], "valid"], [[2678, 2688], "disallowed"], [[2689, 2691], "valid"], [[2692, 2692], "disallowed"], [[2693, 2699], "valid"], [[2700, 2700], "valid"], [[2701, 2701], "valid"], [[2702, 2702], "disallowed"], [[2703, 2705], "valid"], [[2706, 2706], "disallowed"], [[2707, 2728], "valid"], [[2729, 2729], "disallowed"], [[2730, 2736], "valid"], [[2737, 2737], "disallowed"], [[2738, 2739], "valid"], [[2740, 2740], "disallowed"], [[2741, 2745], "valid"], [[2746, 2747], "disallowed"], [[2748, 2757], "valid"], [[2758, 2758], "disallowed"], [[2759, 2761], "valid"], [[2762, 2762], "disallowed"], [[2763, 2765], "valid"], [[2766, 2767], "disallowed"], [[2768, 2768], "valid"], [[2769, 2783], "disallowed"], [[2784, 2784], "valid"], [[2785, 2787], "valid"], [[2788, 2789], "disallowed"], [[2790, 2799], "valid"], [[2800, 2800], "valid", [], "NV8"], [[2801, 2801], "valid", [], "NV8"], [[2802, 2808], "disallowed"], [[2809, 2809], "valid"], [[2810, 2816], "disallowed"], [[2817, 2819], "valid"], [[2820, 2820], "disallowed"], [[2821, 2828], "valid"], [[2829, 2830], "disallowed"], [[2831, 2832], "valid"], [[2833, 2834], "disallowed"], [[2835, 2856], "valid"], [[2857, 2857], "disallowed"], [[2858, 2864], "valid"], [[2865, 2865], "disallowed"], [[2866, 2867], "valid"], [[2868, 2868], "disallowed"], [[2869, 2869], "valid"], [[2870, 2873], "valid"], [[2874, 2875], "disallowed"], [[2876, 2883], "valid"], [[2884, 2884], "valid"], [[2885, 2886], "disallowed"], [[2887, 2888], "valid"], [[2889, 2890], "disallowed"], [[2891, 2893], "valid"], [[2894, 2901], "disallowed"], [[2902, 2903], "valid"], [[2904, 2907], "disallowed"], [[2908, 2908], "mapped", [2849, 2876]], [[2909, 2909], "mapped", [2850, 2876]], [[2910, 2910], "disallowed"], [[2911, 2913], "valid"], [[2914, 2915], "valid"], [[2916, 2917], "disallowed"], [[2918, 2927], "valid"], [[2928, 2928], "valid", [], "NV8"], [[2929, 2929], "valid"], [[2930, 2935], "valid", [], "NV8"], [[2936, 2945], "disallowed"], [[2946, 2947], "valid"], [[2948, 2948], "disallowed"], [[2949, 2954], "valid"], [[2955, 2957], "disallowed"], [[2958, 2960], "valid"], [[2961, 2961], "disallowed"], [[2962, 2965], "valid"], [[2966, 2968], "disallowed"], [[2969, 2970], "valid"], [[2971, 2971], "disallowed"], [[2972, 2972], "valid"], [[2973, 2973], "disallowed"], [[2974, 2975], "valid"], [[2976, 2978], "disallowed"], [[2979, 2980], "valid"], [[2981, 2983], "disallowed"], [[2984, 2986], "valid"], [[2987, 2989], "disallowed"], [[2990, 2997], "valid"], [[2998, 2998], "valid"], [[2999, 3001], "valid"], [[3002, 3005], "disallowed"], [[3006, 3010], "valid"], [[3011, 3013], "disallowed"], [[3014, 3016], "valid"], [[3017, 3017], "disallowed"], [[3018, 3021], "valid"], [[3022, 3023], "disallowed"], [[3024, 3024], "valid"], [[3025, 3030], "disallowed"], [[3031, 3031], "valid"], [[3032, 3045], "disallowed"], [[3046, 3046], "valid"], [[3047, 3055], "valid"], [[3056, 3058], "valid", [], "NV8"], [[3059, 3066], "valid", [], "NV8"], [[3067, 3071], "disallowed"], [[3072, 3072], "valid"], [[3073, 3075], "valid"], [[3076, 3076], "disallowed"], [[3077, 3084], "valid"], [[3085, 3085], "disallowed"], [[3086, 3088], "valid"], [[3089, 3089], "disallowed"], [[3090, 3112], "valid"], [[3113, 3113], "disallowed"], [[3114, 3123], "valid"], [[3124, 3124], "valid"], [[3125, 3129], "valid"], [[3130, 3132], "disallowed"], [[3133, 3133], "valid"], [[3134, 3140], "valid"], [[3141, 3141], "disallowed"], [[3142, 3144], "valid"], [[3145, 3145], "disallowed"], [[3146, 3149], "valid"], [[3150, 3156], "disallowed"], [[3157, 3158], "valid"], [[3159, 3159], "disallowed"], [[3160, 3161], "valid"], [[3162, 3162], "valid"], [[3163, 3167], "disallowed"], [[3168, 3169], "valid"], [[3170, 3171], "valid"], [[3172, 3173], "disallowed"], [[3174, 3183], "valid"], [[3184, 3191], "disallowed"], [[3192, 3199], "valid", [], "NV8"], [[3200, 3200], "disallowed"], [[3201, 3201], "valid"], [[3202, 3203], "valid"], [[3204, 3204], "disallowed"], [[3205, 3212], "valid"], [[3213, 3213], "disallowed"], [[3214, 3216], "valid"], [[3217, 3217], "disallowed"], [[3218, 3240], "valid"], [[3241, 3241], "disallowed"], [[3242, 3251], "valid"], [[3252, 3252], "disallowed"], [[3253, 3257], "valid"], [[3258, 3259], "disallowed"], [[3260, 3261], "valid"], [[3262, 3268], "valid"], [[3269, 3269], "disallowed"], [[3270, 3272], "valid"], [[3273, 3273], "disallowed"], [[3274, 3277], "valid"], [[3278, 3284], "disallowed"], [[3285, 3286], "valid"], [[3287, 3293], "disallowed"], [[3294, 3294], "valid"], [[3295, 3295], "disallowed"], [[3296, 3297], "valid"], [[3298, 3299], "valid"], [[3300, 3301], "disallowed"], [[3302, 3311], "valid"], [[3312, 3312], "disallowed"], [[3313, 3314], "valid"], [[3315, 3328], "disallowed"], [[3329, 3329], "valid"], [[3330, 3331], "valid"], [[3332, 3332], "disallowed"], [[3333, 3340], "valid"], [[3341, 3341], "disallowed"], [[3342, 3344], "valid"], [[3345, 3345], "disallowed"], [[3346, 3368], "valid"], [[3369, 3369], "valid"], [[3370, 3385], "valid"], [[3386, 3386], "valid"], [[3387, 3388], "disallowed"], [[3389, 3389], "valid"], [[3390, 3395], "valid"], [[3396, 3396], "valid"], [[3397, 3397], "disallowed"], [[3398, 3400], "valid"], [[3401, 3401], "disallowed"], [[3402, 3405], "valid"], [[3406, 3406], "valid"], [[3407, 3414], "disallowed"], [[3415, 3415], "valid"], [[3416, 3422], "disallowed"], [[3423, 3423], "valid"], [[3424, 3425], "valid"], [[3426, 3427], "valid"], [[3428, 3429], "disallowed"], [[3430, 3439], "valid"], [[3440, 3445], "valid", [], "NV8"], [[3446, 3448], "disallowed"], [[3449, 3449], "valid", [], "NV8"], [[3450, 3455], "valid"], [[3456, 3457], "disallowed"], [[3458, 3459], "valid"], [[3460, 3460], "disallowed"], [[3461, 3478], "valid"], [[3479, 3481], "disallowed"], [[3482, 3505], "valid"], [[3506, 3506], "disallowed"], [[3507, 3515], "valid"], [[3516, 3516], "disallowed"], [[3517, 3517], "valid"], [[3518, 3519], "disallowed"], [[3520, 3526], "valid"], [[3527, 3529], "disallowed"], [[3530, 3530], "valid"], [[3531, 3534], "disallowed"], [[3535, 3540], "valid"], [[3541, 3541], "disallowed"], [[3542, 3542], "valid"], [[3543, 3543], "disallowed"], [[3544, 3551], "valid"], [[3552, 3557], "disallowed"], [[3558, 3567], "valid"], [[3568, 3569], "disallowed"], [[3570, 3571], "valid"], [[3572, 3572], "valid", [], "NV8"], [[3573, 3584], "disallowed"], [[3585, 3634], "valid"], [[3635, 3635], "mapped", [3661, 3634]], [[3636, 3642], "valid"], [[3643, 3646], "disallowed"], [[3647, 3647], "valid", [], "NV8"], [[3648, 3662], "valid"], [[3663, 3663], "valid", [], "NV8"], [[3664, 3673], "valid"], [[3674, 3675], "valid", [], "NV8"], [[3676, 3712], "disallowed"], [[3713, 3714], "valid"], [[3715, 3715], "disallowed"], [[3716, 3716], "valid"], [[3717, 3718], "disallowed"], [[3719, 3720], "valid"], [[3721, 3721], "disallowed"], [[3722, 3722], "valid"], [[3723, 3724], "disallowed"], [[3725, 3725], "valid"], [[3726, 3731], "disallowed"], [[3732, 3735], "valid"], [[3736, 3736], "disallowed"], [[3737, 3743], "valid"], [[3744, 3744], "disallowed"], [[3745, 3747], "valid"], [[3748, 3748], "disallowed"], [[3749, 3749], "valid"], [[3750, 3750], "disallowed"], [[3751, 3751], "valid"], [[3752, 3753], "disallowed"], [[3754, 3755], "valid"], [[3756, 3756], "disallowed"], [[3757, 3762], "valid"], [[3763, 3763], "mapped", [3789, 3762]], [[3764, 3769], "valid"], [[3770, 3770], "disallowed"], [[3771, 3773], "valid"], [[3774, 3775], "disallowed"], [[3776, 3780], "valid"], [[3781, 3781], "disallowed"], [[3782, 3782], "valid"], [[3783, 3783], "disallowed"], [[3784, 3789], "valid"], [[3790, 3791], "disallowed"], [[3792, 3801], "valid"], [[3802, 3803], "disallowed"], [[3804, 3804], "mapped", [3755, 3737]], [[3805, 3805], "mapped", [3755, 3745]], [[3806, 3807], "valid"], [[3808, 3839], "disallowed"], [[3840, 3840], "valid"], [[3841, 3850], "valid", [], "NV8"], [[3851, 3851], "valid"], [[3852, 3852], "mapped", [3851]], [[3853, 3863], "valid", [], "NV8"], [[3864, 3865], "valid"], [[3866, 3871], "valid", [], "NV8"], [[3872, 3881], "valid"], [[3882, 3892], "valid", [], "NV8"], [[3893, 3893], "valid"], [[3894, 3894], "valid", [], "NV8"], [[3895, 3895], "valid"], [[3896, 3896], "valid", [], "NV8"], [[3897, 3897], "valid"], [[3898, 3901], "valid", [], "NV8"], [[3902, 3906], "valid"], [[3907, 3907], "mapped", [3906, 4023]], [[3908, 3911], "valid"], [[3912, 3912], "disallowed"], [[3913, 3916], "valid"], [[3917, 3917], "mapped", [3916, 4023]], [[3918, 3921], "valid"], [[3922, 3922], "mapped", [3921, 4023]], [[3923, 3926], "valid"], [[3927, 3927], "mapped", [3926, 4023]], [[3928, 3931], "valid"], [[3932, 3932], "mapped", [3931, 4023]], [[3933, 3944], "valid"], [[3945, 3945], "mapped", [3904, 4021]], [[3946, 3946], "valid"], [[3947, 3948], "valid"], [[3949, 3952], "disallowed"], [[3953, 3954], "valid"], [[3955, 3955], "mapped", [3953, 3954]], [[3956, 3956], "valid"], [[3957, 3957], "mapped", [3953, 3956]], [[3958, 3958], "mapped", [4018, 3968]], [[3959, 3959], "mapped", [4018, 3953, 3968]], [[3960, 3960], "mapped", [4019, 3968]], [[3961, 3961], "mapped", [4019, 3953, 3968]], [[3962, 3968], "valid"], [[3969, 3969], "mapped", [3953, 3968]], [[3970, 3972], "valid"], [[3973, 3973], "valid", [], "NV8"], [[3974, 3979], "valid"], [[3980, 3983], "valid"], [[3984, 3986], "valid"], [[3987, 3987], "mapped", [3986, 4023]], [[3988, 3989], "valid"], [[3990, 3990], "valid"], [[3991, 3991], "valid"], [[3992, 3992], "disallowed"], [[3993, 3996], "valid"], [[3997, 3997], "mapped", [3996, 4023]], [[3998, 4001], "valid"], [[4002, 4002], "mapped", [4001, 4023]], [[4003, 4006], "valid"], [[4007, 4007], "mapped", [4006, 4023]], [[4008, 4011], "valid"], [[4012, 4012], "mapped", [4011, 4023]], [[4013, 4013], "valid"], [[4014, 4016], "valid"], [[4017, 4023], "valid"], [[4024, 4024], "valid"], [[4025, 4025], "mapped", [3984, 4021]], [[4026, 4028], "valid"], [[4029, 4029], "disallowed"], [[4030, 4037], "valid", [], "NV8"], [[4038, 4038], "valid"], [[4039, 4044], "valid", [], "NV8"], [[4045, 4045], "disallowed"], [[4046, 4046], "valid", [], "NV8"], [[4047, 4047], "valid", [], "NV8"], [[4048, 4049], "valid", [], "NV8"], [[4050, 4052], "valid", [], "NV8"], [[4053, 4056], "valid", [], "NV8"], [[4057, 4058], "valid", [], "NV8"], [[4059, 4095], "disallowed"], [[4096, 4129], "valid"], [[4130, 4130], "valid"], [[4131, 4135], "valid"], [[4136, 4136], "valid"], [[4137, 4138], "valid"], [[4139, 4139], "valid"], [[4140, 4146], "valid"], [[4147, 4149], "valid"], [[4150, 4153], "valid"], [[4154, 4159], "valid"], [[4160, 4169], "valid"], [[4170, 4175], "valid", [], "NV8"], [[4176, 4185], "valid"], [[4186, 4249], "valid"], [[4250, 4253], "valid"], [[4254, 4255], "valid", [], "NV8"], [[4256, 4293], "disallowed"], [[4294, 4294], "disallowed"], [[4295, 4295], "mapped", [11559]], [[4296, 4300], "disallowed"], [[4301, 4301], "mapped", [11565]], [[4302, 4303], "disallowed"], [[4304, 4342], "valid"], [[4343, 4344], "valid"], [[4345, 4346], "valid"], [[4347, 4347], "valid", [], "NV8"], [[4348, 4348], "mapped", [4316]], [[4349, 4351], "valid"], [[4352, 4441], "valid", [], "NV8"], [[4442, 4446], "valid", [], "NV8"], [[4447, 4448], "disallowed"], [[4449, 4514], "valid", [], "NV8"], [[4515, 4519], "valid", [], "NV8"], [[4520, 4601], "valid", [], "NV8"], [[4602, 4607], "valid", [], "NV8"], [[4608, 4614], "valid"], [[4615, 4615], "valid"], [[4616, 4678], "valid"], [[4679, 4679], "valid"], [[4680, 4680], "valid"], [[4681, 4681], "disallowed"], [[4682, 4685], "valid"], [[4686, 4687], "disallowed"], [[4688, 4694], "valid"], [[4695, 4695], "disallowed"], [[4696, 4696], "valid"], [[4697, 4697], "disallowed"], [[4698, 4701], "valid"], [[4702, 4703], "disallowed"], [[4704, 4742], "valid"], [[4743, 4743], "valid"], [[4744, 4744], "valid"], [[4745, 4745], "disallowed"], [[4746, 4749], "valid"], [[4750, 4751], "disallowed"], [[4752, 4782], "valid"], [[4783, 4783], "valid"], [[4784, 4784], "valid"], [[4785, 4785], "disallowed"], [[4786, 4789], "valid"], [[4790, 4791], "disallowed"], [[4792, 4798], "valid"], [[4799, 4799], "disallowed"], [[4800, 4800], "valid"], [[4801, 4801], "disallowed"], [[4802, 4805], "valid"], [[4806, 4807], "disallowed"], [[4808, 4814], "valid"], [[4815, 4815], "valid"], [[4816, 4822], "valid"], [[4823, 4823], "disallowed"], [[4824, 4846], "valid"], [[4847, 4847], "valid"], [[4848, 4878], "valid"], [[4879, 4879], "valid"], [[4880, 4880], "valid"], [[4881, 4881], "disallowed"], [[4882, 4885], "valid"], [[4886, 4887], "disallowed"], [[4888, 4894], "valid"], [[4895, 4895], "valid"], [[4896, 4934], "valid"], [[4935, 4935], "valid"], [[4936, 4954], "valid"], [[4955, 4956], "disallowed"], [[4957, 4958], "valid"], [[4959, 4959], "valid"], [[4960, 4960], "valid", [], "NV8"], [[4961, 4988], "valid", [], "NV8"], [[4989, 4991], "disallowed"], [[4992, 5007], "valid"], [[5008, 5017], "valid", [], "NV8"], [[5018, 5023], "disallowed"], [[5024, 5108], "valid"], [[5109, 5109], "valid"], [[5110, 5111], "disallowed"], [[5112, 5112], "mapped", [5104]], [[5113, 5113], "mapped", [5105]], [[5114, 5114], "mapped", [5106]], [[5115, 5115], "mapped", [5107]], [[5116, 5116], "mapped", [5108]], [[5117, 5117], "mapped", [5109]], [[5118, 5119], "disallowed"], [[5120, 5120], "valid", [], "NV8"], [[5121, 5740], "valid"], [[5741, 5742], "valid", [], "NV8"], [[5743, 5750], "valid"], [[5751, 5759], "valid"], [[5760, 5760], "disallowed"], [[5761, 5786], "valid"], [[5787, 5788], "valid", [], "NV8"], [[5789, 5791], "disallowed"], [[5792, 5866], "valid"], [[5867, 5872], "valid", [], "NV8"], [[5873, 5880], "valid"], [[5881, 5887], "disallowed"], [[5888, 5900], "valid"], [[5901, 5901], "disallowed"], [[5902, 5908], "valid"], [[5909, 5919], "disallowed"], [[5920, 5940], "valid"], [[5941, 5942], "valid", [], "NV8"], [[5943, 5951], "disallowed"], [[5952, 5971], "valid"], [[5972, 5983], "disallowed"], [[5984, 5996], "valid"], [[5997, 5997], "disallowed"], [[5998, 6e3], "valid"], [[6001, 6001], "disallowed"], [[6002, 6003], "valid"], [[6004, 6015], "disallowed"], [[6016, 6067], "valid"], [[6068, 6069], "disallowed"], [[6070, 6099], "valid"], [[6100, 6102], "valid", [], "NV8"], [[6103, 6103], "valid"], [[6104, 6107], "valid", [], "NV8"], [[6108, 6108], "valid"], [[6109, 6109], "valid"], [[6110, 6111], "disallowed"], [[6112, 6121], "valid"], [[6122, 6127], "disallowed"], [[6128, 6137], "valid", [], "NV8"], [[6138, 6143], "disallowed"], [[6144, 6149], "valid", [], "NV8"], [[6150, 6150], "disallowed"], [[6151, 6154], "valid", [], "NV8"], [[6155, 6157], "ignored"], [[6158, 6158], "disallowed"], [[6159, 6159], "disallowed"], [[6160, 6169], "valid"], [[6170, 6175], "disallowed"], [[6176, 6263], "valid"], [[6264, 6271], "disallowed"], [[6272, 6313], "valid"], [[6314, 6314], "valid"], [[6315, 6319], "disallowed"], [[6320, 6389], "valid"], [[6390, 6399], "disallowed"], [[6400, 6428], "valid"], [[6429, 6430], "valid"], [[6431, 6431], "disallowed"], [[6432, 6443], "valid"], [[6444, 6447], "disallowed"], [[6448, 6459], "valid"], [[6460, 6463], "disallowed"], [[6464, 6464], "valid", [], "NV8"], [[6465, 6467], "disallowed"], [[6468, 6469], "valid", [], "NV8"], [[6470, 6509], "valid"], [[6510, 6511], "disallowed"], [[6512, 6516], "valid"], [[6517, 6527], "disallowed"], [[6528, 6569], "valid"], [[6570, 6571], "valid"], [[6572, 6575], "disallowed"], [[6576, 6601], "valid"], [[6602, 6607], "disallowed"], [[6608, 6617], "valid"], [[6618, 6618], "valid", [], "XV8"], [[6619, 6621], "disallowed"], [[6622, 6623], "valid", [], "NV8"], [[6624, 6655], "valid", [], "NV8"], [[6656, 6683], "valid"], [[6684, 6685], "disallowed"], [[6686, 6687], "valid", [], "NV8"], [[6688, 6750], "valid"], [[6751, 6751], "disallowed"], [[6752, 6780], "valid"], [[6781, 6782], "disallowed"], [[6783, 6793], "valid"], [[6794, 6799], "disallowed"], [[6800, 6809], "valid"], [[6810, 6815], "disallowed"], [[6816, 6822], "valid", [], "NV8"], [[6823, 6823], "valid"], [[6824, 6829], "valid", [], "NV8"], [[6830, 6831], "disallowed"], [[6832, 6845], "valid"], [[6846, 6846], "valid", [], "NV8"], [[6847, 6911], "disallowed"], [[6912, 6987], "valid"], [[6988, 6991], "disallowed"], [[6992, 7001], "valid"], [[7002, 7018], "valid", [], "NV8"], [[7019, 7027], "valid"], [[7028, 7036], "valid", [], "NV8"], [[7037, 7039], "disallowed"], [[7040, 7082], "valid"], [[7083, 7085], "valid"], [[7086, 7097], "valid"], [[7098, 7103], "valid"], [[7104, 7155], "valid"], [[7156, 7163], "disallowed"], [[7164, 7167], "valid", [], "NV8"], [[7168, 7223], "valid"], [[7224, 7226], "disallowed"], [[7227, 7231], "valid", [], "NV8"], [[7232, 7241], "valid"], [[7242, 7244], "disallowed"], [[7245, 7293], "valid"], [[7294, 7295], "valid", [], "NV8"], [[7296, 7359], "disallowed"], [[7360, 7367], "valid", [], "NV8"], [[7368, 7375], "disallowed"], [[7376, 7378], "valid"], [[7379, 7379], "valid", [], "NV8"], [[7380, 7410], "valid"], [[7411, 7414], "valid"], [[7415, 7415], "disallowed"], [[7416, 7417], "valid"], [[7418, 7423], "disallowed"], [[7424, 7467], "valid"], [[7468, 7468], "mapped", [97]], [[7469, 7469], "mapped", [230]], [[7470, 7470], "mapped", [98]], [[7471, 7471], "valid"], [[7472, 7472], "mapped", [100]], [[7473, 7473], "mapped", [101]], [[7474, 7474], "mapped", [477]], [[7475, 7475], "mapped", [103]], [[7476, 7476], "mapped", [104]], [[7477, 7477], "mapped", [105]], [[7478, 7478], "mapped", [106]], [[7479, 7479], "mapped", [107]], [[7480, 7480], "mapped", [108]], [[7481, 7481], "mapped", [109]], [[7482, 7482], "mapped", [110]], [[7483, 7483], "valid"], [[7484, 7484], "mapped", [111]], [[7485, 7485], "mapped", [547]], [[7486, 7486], "mapped", [112]], [[7487, 7487], "mapped", [114]], [[7488, 7488], "mapped", [116]], [[7489, 7489], "mapped", [117]], [[7490, 7490], "mapped", [119]], [[7491, 7491], "mapped", [97]], [[7492, 7492], "mapped", [592]], [[7493, 7493], "mapped", [593]], [[7494, 7494], "mapped", [7426]], [[7495, 7495], "mapped", [98]], [[7496, 7496], "mapped", [100]], [[7497, 7497], "mapped", [101]], [[7498, 7498], "mapped", [601]], [[7499, 7499], "mapped", [603]], [[7500, 7500], "mapped", [604]], [[7501, 7501], "mapped", [103]], [[7502, 7502], "valid"], [[7503, 7503], "mapped", [107]], [[7504, 7504], "mapped", [109]], [[7505, 7505], "mapped", [331]], [[7506, 7506], "mapped", [111]], [[7507, 7507], "mapped", [596]], [[7508, 7508], "mapped", [7446]], [[7509, 7509], "mapped", [7447]], [[7510, 7510], "mapped", [112]], [[7511, 7511], "mapped", [116]], [[7512, 7512], "mapped", [117]], [[7513, 7513], "mapped", [7453]], [[7514, 7514], "mapped", [623]], [[7515, 7515], "mapped", [118]], [[7516, 7516], "mapped", [7461]], [[7517, 7517], "mapped", [946]], [[7518, 7518], "mapped", [947]], [[7519, 7519], "mapped", [948]], [[7520, 7520], "mapped", [966]], [[7521, 7521], "mapped", [967]], [[7522, 7522], "mapped", [105]], [[7523, 7523], "mapped", [114]], [[7524, 7524], "mapped", [117]], [[7525, 7525], "mapped", [118]], [[7526, 7526], "mapped", [946]], [[7527, 7527], "mapped", [947]], [[7528, 7528], "mapped", [961]], [[7529, 7529], "mapped", [966]], [[7530, 7530], "mapped", [967]], [[7531, 7531], "valid"], [[7532, 7543], "valid"], [[7544, 7544], "mapped", [1085]], [[7545, 7578], "valid"], [[7579, 7579], "mapped", [594]], [[7580, 7580], "mapped", [99]], [[7581, 7581], "mapped", [597]], [[7582, 7582], "mapped", [240]], [[7583, 7583], "mapped", [604]], [[7584, 7584], "mapped", [102]], [[7585, 7585], "mapped", [607]], [[7586, 7586], "mapped", [609]], [[7587, 7587], "mapped", [613]], [[7588, 7588], "mapped", [616]], [[7589, 7589], "mapped", [617]], [[7590, 7590], "mapped", [618]], [[7591, 7591], "mapped", [7547]], [[7592, 7592], "mapped", [669]], [[7593, 7593], "mapped", [621]], [[7594, 7594], "mapped", [7557]], [[7595, 7595], "mapped", [671]], [[7596, 7596], "mapped", [625]], [[7597, 7597], "mapped", [624]], [[7598, 7598], "mapped", [626]], [[7599, 7599], "mapped", [627]], [[7600, 7600], "mapped", [628]], [[7601, 7601], "mapped", [629]], [[7602, 7602], "mapped", [632]], [[7603, 7603], "mapped", [642]], [[7604, 7604], "mapped", [643]], [[7605, 7605], "mapped", [427]], [[7606, 7606], "mapped", [649]], [[7607, 7607], "mapped", [650]], [[7608, 7608], "mapped", [7452]], [[7609, 7609], "mapped", [651]], [[7610, 7610], "mapped", [652]], [[7611, 7611], "mapped", [122]], [[7612, 7612], "mapped", [656]], [[7613, 7613], "mapped", [657]], [[7614, 7614], "mapped", [658]], [[7615, 7615], "mapped", [952]], [[7616, 7619], "valid"], [[7620, 7626], "valid"], [[7627, 7654], "valid"], [[7655, 7669], "valid"], [[7670, 7675], "disallowed"], [[7676, 7676], "valid"], [[7677, 7677], "valid"], [[7678, 7679], "valid"], [[7680, 7680], "mapped", [7681]], [[7681, 7681], "valid"], [[7682, 7682], "mapped", [7683]], [[7683, 7683], "valid"], [[7684, 7684], "mapped", [7685]], [[7685, 7685], "valid"], [[7686, 7686], "mapped", [7687]], [[7687, 7687], "valid"], [[7688, 7688], "mapped", [7689]], [[7689, 7689], "valid"], [[7690, 7690], "mapped", [7691]], [[7691, 7691], "valid"], [[7692, 7692], "mapped", [7693]], [[7693, 7693], "valid"], [[7694, 7694], "mapped", [7695]], [[7695, 7695], "valid"], [[7696, 7696], "mapped", [7697]], [[7697, 7697], "valid"], [[7698, 7698], "mapped", [7699]], [[7699, 7699], "valid"], [[7700, 7700], "mapped", [7701]], [[7701, 7701], "valid"], [[7702, 7702], "mapped", [7703]], [[7703, 7703], "valid"], [[7704, 7704], "mapped", [7705]], [[7705, 7705], "valid"], [[7706, 7706], "mapped", [7707]], [[7707, 7707], "valid"], [[7708, 7708], "mapped", [7709]], [[7709, 7709], "valid"], [[7710, 7710], "mapped", [7711]], [[7711, 7711], "valid"], [[7712, 7712], "mapped", [7713]], [[7713, 7713], "valid"], [[7714, 7714], "mapped", [7715]], [[7715, 7715], "valid"], [[7716, 7716], "mapped", [7717]], [[7717, 7717], "valid"], [[7718, 7718], "mapped", [7719]], [[7719, 7719], "valid"], [[7720, 7720], "mapped", [7721]], [[7721, 7721], "valid"], [[7722, 7722], "mapped", [7723]], [[7723, 7723], "valid"], [[7724, 7724], "mapped", [7725]], [[7725, 7725], "valid"], [[7726, 7726], "mapped", [7727]], [[7727, 7727], "valid"], [[7728, 7728], "mapped", [7729]], [[7729, 7729], "valid"], [[7730, 7730], "mapped", [7731]], [[7731, 7731], "valid"], [[7732, 7732], "mapped", [7733]], [[7733, 7733], "valid"], [[7734, 7734], "mapped", [7735]], [[7735, 7735], "valid"], [[7736, 7736], "mapped", [7737]], [[7737, 7737], "valid"], [[7738, 7738], "mapped", [7739]], [[7739, 7739], "valid"], [[7740, 7740], "mapped", [7741]], [[7741, 7741], "valid"], [[7742, 7742], "mapped", [7743]], [[7743, 7743], "valid"], [[7744, 7744], "mapped", [7745]], [[7745, 7745], "valid"], [[7746, 7746], "mapped", [7747]], [[7747, 7747], "valid"], [[7748, 7748], "mapped", [7749]], [[7749, 7749], "valid"], [[7750, 7750], "mapped", [7751]], [[7751, 7751], "valid"], [[7752, 7752], "mapped", [7753]], [[7753, 7753], "valid"], [[7754, 7754], "mapped", [7755]], [[7755, 7755], "valid"], [[7756, 7756], "mapped", [7757]], [[7757, 7757], "valid"], [[7758, 7758], "mapped", [7759]], [[7759, 7759], "valid"], [[7760, 7760], "mapped", [7761]], [[7761, 7761], "valid"], [[7762, 7762], "mapped", [7763]], [[7763, 7763], "valid"], [[7764, 7764], "mapped", [7765]], [[7765, 7765], "valid"], [[7766, 7766], "mapped", [7767]], [[7767, 7767], "valid"], [[7768, 7768], "mapped", [7769]], [[7769, 7769], "valid"], [[7770, 7770], "mapped", [7771]], [[7771, 7771], "valid"], [[7772, 7772], "mapped", [7773]], [[7773, 7773], "valid"], [[7774, 7774], "mapped", [7775]], [[7775, 7775], "valid"], [[7776, 7776], "mapped", [7777]], [[7777, 7777], "valid"], [[7778, 7778], "mapped", [7779]], [[7779, 7779], "valid"], [[7780, 7780], "mapped", [7781]], [[7781, 7781], "valid"], [[7782, 7782], "mapped", [7783]], [[7783, 7783], "valid"], [[7784, 7784], "mapped", [7785]], [[7785, 7785], "valid"], [[7786, 7786], "mapped", [7787]], [[7787, 7787], "valid"], [[7788, 7788], "mapped", [7789]], [[7789, 7789], "valid"], [[7790, 7790], "mapped", [7791]], [[7791, 7791], "valid"], [[7792, 7792], "mapped", [7793]], [[7793, 7793], "valid"], [[7794, 7794], "mapped", [7795]], [[7795, 7795], "valid"], [[7796, 7796], "mapped", [7797]], [[7797, 7797], "valid"], [[7798, 7798], "mapped", [7799]], [[7799, 7799], "valid"], [[7800, 7800], "mapped", [7801]], [[7801, 7801], "valid"], [[7802, 7802], "mapped", [7803]], [[7803, 7803], "valid"], [[7804, 7804], "mapped", [7805]], [[7805, 7805], "valid"], [[7806, 7806], "mapped", [7807]], [[7807, 7807], "valid"], [[7808, 7808], "mapped", [7809]], [[7809, 7809], "valid"], [[7810, 7810], "mapped", [7811]], [[7811, 7811], "valid"], [[7812, 7812], "mapped", [7813]], [[7813, 7813], "valid"], [[7814, 7814], "mapped", [7815]], [[7815, 7815], "valid"], [[7816, 7816], "mapped", [7817]], [[7817, 7817], "valid"], [[7818, 7818], "mapped", [7819]], [[7819, 7819], "valid"], [[7820, 7820], "mapped", [7821]], [[7821, 7821], "valid"], [[7822, 7822], "mapped", [7823]], [[7823, 7823], "valid"], [[7824, 7824], "mapped", [7825]], [[7825, 7825], "valid"], [[7826, 7826], "mapped", [7827]], [[7827, 7827], "valid"], [[7828, 7828], "mapped", [7829]], [[7829, 7833], "valid"], [[7834, 7834], "mapped", [97, 702]], [[7835, 7835], "mapped", [7777]], [[7836, 7837], "valid"], [[7838, 7838], "mapped", [115, 115]], [[7839, 7839], "valid"], [[7840, 7840], "mapped", [7841]], [[7841, 7841], "valid"], [[7842, 7842], "mapped", [7843]], [[7843, 7843], "valid"], [[7844, 7844], "mapped", [7845]], [[7845, 7845], "valid"], [[7846, 7846], "mapped", [7847]], [[7847, 7847], "valid"], [[7848, 7848], "mapped", [7849]], [[7849, 7849], "valid"], [[7850, 7850], "mapped", [7851]], [[7851, 7851], "valid"], [[7852, 7852], "mapped", [7853]], [[7853, 7853], "valid"], [[7854, 7854], "mapped", [7855]], [[7855, 7855], "valid"], [[7856, 7856], "mapped", [7857]], [[7857, 7857], "valid"], [[7858, 7858], "mapped", [7859]], [[7859, 7859], "valid"], [[7860, 7860], "mapped", [7861]], [[7861, 7861], "valid"], [[7862, 7862], "mapped", [7863]], [[7863, 7863], "valid"], [[7864, 7864], "mapped", [7865]], [[7865, 7865], "valid"], [[7866, 7866], "mapped", [7867]], [[7867, 7867], "valid"], [[7868, 7868], "mapped", [7869]], [[7869, 7869], "valid"], [[7870, 7870], "mapped", [7871]], [[7871, 7871], "valid"], [[7872, 7872], "mapped", [7873]], [[7873, 7873], "valid"], [[7874, 7874], "mapped", [7875]], [[7875, 7875], "valid"], [[7876, 7876], "mapped", [7877]], [[7877, 7877], "valid"], [[7878, 7878], "mapped", [7879]], [[7879, 7879], "valid"], [[7880, 7880], "mapped", [7881]], [[7881, 7881], "valid"], [[7882, 7882], "mapped", [7883]], [[7883, 7883], "valid"], [[7884, 7884], "mapped", [7885]], [[7885, 7885], "valid"], [[7886, 7886], "mapped", [7887]], [[7887, 7887], "valid"], [[7888, 7888], "mapped", [7889]], [[7889, 7889], "valid"], [[7890, 7890], "mapped", [7891]], [[7891, 7891], "valid"], [[7892, 7892], "mapped", [7893]], [[7893, 7893], "valid"], [[7894, 7894], "mapped", [7895]], [[7895, 7895], "valid"], [[7896, 7896], "mapped", [7897]], [[7897, 7897], "valid"], [[7898, 7898], "mapped", [7899]], [[7899, 7899], "valid"], [[7900, 7900], "mapped", [7901]], [[7901, 7901], "valid"], [[7902, 7902], "mapped", [7903]], [[7903, 7903], "valid"], [[7904, 7904], "mapped", [7905]], [[7905, 7905], "valid"], [[7906, 7906], "mapped", [7907]], [[7907, 7907], "valid"], [[7908, 7908], "mapped", [7909]], [[7909, 7909], "valid"], [[7910, 7910], "mapped", [7911]], [[7911, 7911], "valid"], [[7912, 7912], "mapped", [7913]], [[7913, 7913], "valid"], [[7914, 7914], "mapped", [7915]], [[7915, 7915], "valid"], [[7916, 7916], "mapped", [7917]], [[7917, 7917], "valid"], [[7918, 7918], "mapped", [7919]], [[7919, 7919], "valid"], [[7920, 7920], "mapped", [7921]], [[7921, 7921], "valid"], [[7922, 7922], "mapped", [7923]], [[7923, 7923], "valid"], [[7924, 7924], "mapped", [7925]], [[7925, 7925], "valid"], [[7926, 7926], "mapped", [7927]], [[7927, 7927], "valid"], [[7928, 7928], "mapped", [7929]], [[7929, 7929], "valid"], [[7930, 7930], "mapped", [7931]], [[7931, 7931], "valid"], [[7932, 7932], "mapped", [7933]], [[7933, 7933], "valid"], [[7934, 7934], "mapped", [7935]], [[7935, 7935], "valid"], [[7936, 7943], "valid"], [[7944, 7944], "mapped", [7936]], [[7945, 7945], "mapped", [7937]], [[7946, 7946], "mapped", [7938]], [[7947, 7947], "mapped", [7939]], [[7948, 7948], "mapped", [7940]], [[7949, 7949], "mapped", [7941]], [[7950, 7950], "mapped", [7942]], [[7951, 7951], "mapped", [7943]], [[7952, 7957], "valid"], [[7958, 7959], "disallowed"], [[7960, 7960], "mapped", [7952]], [[7961, 7961], "mapped", [7953]], [[7962, 7962], "mapped", [7954]], [[7963, 7963], "mapped", [7955]], [[7964, 7964], "mapped", [7956]], [[7965, 7965], "mapped", [7957]], [[7966, 7967], "disallowed"], [[7968, 7975], "valid"], [[7976, 7976], "mapped", [7968]], [[7977, 7977], "mapped", [7969]], [[7978, 7978], "mapped", [7970]], [[7979, 7979], "mapped", [7971]], [[7980, 7980], "mapped", [7972]], [[7981, 7981], "mapped", [7973]], [[7982, 7982], "mapped", [7974]], [[7983, 7983], "mapped", [7975]], [[7984, 7991], "valid"], [[7992, 7992], "mapped", [7984]], [[7993, 7993], "mapped", [7985]], [[7994, 7994], "mapped", [7986]], [[7995, 7995], "mapped", [7987]], [[7996, 7996], "mapped", [7988]], [[7997, 7997], "mapped", [7989]], [[7998, 7998], "mapped", [7990]], [[7999, 7999], "mapped", [7991]], [[8e3, 8005], "valid"], [[8006, 8007], "disallowed"], [[8008, 8008], "mapped", [8e3]], [[8009, 8009], "mapped", [8001]], [[8010, 8010], "mapped", [8002]], [[8011, 8011], "mapped", [8003]], [[8012, 8012], "mapped", [8004]], [[8013, 8013], "mapped", [8005]], [[8014, 8015], "disallowed"], [[8016, 8023], "valid"], [[8024, 8024], "disallowed"], [[8025, 8025], "mapped", [8017]], [[8026, 8026], "disallowed"], [[8027, 8027], "mapped", [8019]], [[8028, 8028], "disallowed"], [[8029, 8029], "mapped", [8021]], [[8030, 8030], "disallowed"], [[8031, 8031], "mapped", [8023]], [[8032, 8039], "valid"], [[8040, 8040], "mapped", [8032]], [[8041, 8041], "mapped", [8033]], [[8042, 8042], "mapped", [8034]], [[8043, 8043], "mapped", [8035]], [[8044, 8044], "mapped", [8036]], [[8045, 8045], "mapped", [8037]], [[8046, 8046], "mapped", [8038]], [[8047, 8047], "mapped", [8039]], [[8048, 8048], "valid"], [[8049, 8049], "mapped", [940]], [[8050, 8050], "valid"], [[8051, 8051], "mapped", [941]], [[8052, 8052], "valid"], [[8053, 8053], "mapped", [942]], [[8054, 8054], "valid"], [[8055, 8055], "mapped", [943]], [[8056, 8056], "valid"], [[8057, 8057], "mapped", [972]], [[8058, 8058], "valid"], [[8059, 8059], "mapped", [973]], [[8060, 8060], "valid"], [[8061, 8061], "mapped", [974]], [[8062, 8063], "disallowed"], [[8064, 8064], "mapped", [7936, 953]], [[8065, 8065], "mapped", [7937, 953]], [[8066, 8066], "mapped", [7938, 953]], [[8067, 8067], "mapped", [7939, 953]], [[8068, 8068], "mapped", [7940, 953]], [[8069, 8069], "mapped", [7941, 953]], [[8070, 8070], "mapped", [7942, 953]], [[8071, 8071], "mapped", [7943, 953]], [[8072, 8072], "mapped", [7936, 953]], [[8073, 8073], "mapped", [7937, 953]], [[8074, 8074], "mapped", [7938, 953]], [[8075, 8075], "mapped", [7939, 953]], [[8076, 8076], "mapped", [7940, 953]], [[8077, 8077], "mapped", [7941, 953]], [[8078, 8078], "mapped", [7942, 953]], [[8079, 8079], "mapped", [7943, 953]], [[8080, 8080], "mapped", [7968, 953]], [[8081, 8081], "mapped", [7969, 953]], [[8082, 8082], "mapped", [7970, 953]], [[8083, 8083], "mapped", [7971, 953]], [[8084, 8084], "mapped", [7972, 953]], [[8085, 8085], "mapped", [7973, 953]], [[8086, 8086], "mapped", [7974, 953]], [[8087, 8087], "mapped", [7975, 953]], [[8088, 8088], "mapped", [7968, 953]], [[8089, 8089], "mapped", [7969, 953]], [[8090, 8090], "mapped", [7970, 953]], [[8091, 8091], "mapped", [7971, 953]], [[8092, 8092], "mapped", [7972, 953]], [[8093, 8093], "mapped", [7973, 953]], [[8094, 8094], "mapped", [7974, 953]], [[8095, 8095], "mapped", [7975, 953]], [[8096, 8096], "mapped", [8032, 953]], [[8097, 8097], "mapped", [8033, 953]], [[8098, 8098], "mapped", [8034, 953]], [[8099, 8099], "mapped", [8035, 953]], [[8100, 8100], "mapped", [8036, 953]], [[8101, 8101], "mapped", [8037, 953]], [[8102, 8102], "mapped", [8038, 953]], [[8103, 8103], "mapped", [8039, 953]], [[8104, 8104], "mapped", [8032, 953]], [[8105, 8105], "mapped", [8033, 953]], [[8106, 8106], "mapped", [8034, 953]], [[8107, 8107], "mapped", [8035, 953]], [[8108, 8108], "mapped", [8036, 953]], [[8109, 8109], "mapped", [8037, 953]], [[8110, 8110], "mapped", [8038, 953]], [[8111, 8111], "mapped", [8039, 953]], [[8112, 8113], "valid"], [[8114, 8114], "mapped", [8048, 953]], [[8115, 8115], "mapped", [945, 953]], [[8116, 8116], "mapped", [940, 953]], [[8117, 8117], "disallowed"], [[8118, 8118], "valid"], [[8119, 8119], "mapped", [8118, 953]], [[8120, 8120], "mapped", [8112]], [[8121, 8121], "mapped", [8113]], [[8122, 8122], "mapped", [8048]], [[8123, 8123], "mapped", [940]], [[8124, 8124], "mapped", [945, 953]], [[8125, 8125], "disallowed_STD3_mapped", [32, 787]], [[8126, 8126], "mapped", [953]], [[8127, 8127], "disallowed_STD3_mapped", [32, 787]], [[8128, 8128], "disallowed_STD3_mapped", [32, 834]], [[8129, 8129], "disallowed_STD3_mapped", [32, 776, 834]], [[8130, 8130], "mapped", [8052, 953]], [[8131, 8131], "mapped", [951, 953]], [[8132, 8132], "mapped", [942, 953]], [[8133, 8133], "disallowed"], [[8134, 8134], "valid"], [[8135, 8135], "mapped", [8134, 953]], [[8136, 8136], "mapped", [8050]], [[8137, 8137], "mapped", [941]], [[8138, 8138], "mapped", [8052]], [[8139, 8139], "mapped", [942]], [[8140, 8140], "mapped", [951, 953]], [[8141, 8141], "disallowed_STD3_mapped", [32, 787, 768]], [[8142, 8142], "disallowed_STD3_mapped", [32, 787, 769]], [[8143, 8143], "disallowed_STD3_mapped", [32, 787, 834]], [[8144, 8146], "valid"], [[8147, 8147], "mapped", [912]], [[8148, 8149], "disallowed"], [[8150, 8151], "valid"], [[8152, 8152], "mapped", [8144]], [[8153, 8153], "mapped", [8145]], [[8154, 8154], "mapped", [8054]], [[8155, 8155], "mapped", [943]], [[8156, 8156], "disallowed"], [[8157, 8157], "disallowed_STD3_mapped", [32, 788, 768]], [[8158, 8158], "disallowed_STD3_mapped", [32, 788, 769]], [[8159, 8159], "disallowed_STD3_mapped", [32, 788, 834]], [[8160, 8162], "valid"], [[8163, 8163], "mapped", [944]], [[8164, 8167], "valid"], [[8168, 8168], "mapped", [8160]], [[8169, 8169], "mapped", [8161]], [[8170, 8170], "mapped", [8058]], [[8171, 8171], "mapped", [973]], [[8172, 8172], "mapped", [8165]], [[8173, 8173], "disallowed_STD3_mapped", [32, 776, 768]], [[8174, 8174], "disallowed_STD3_mapped", [32, 776, 769]], [[8175, 8175], "disallowed_STD3_mapped", [96]], [[8176, 8177], "disallowed"], [[8178, 8178], "mapped", [8060, 953]], [[8179, 8179], "mapped", [969, 953]], [[8180, 8180], "mapped", [974, 953]], [[8181, 8181], "disallowed"], [[8182, 8182], "valid"], [[8183, 8183], "mapped", [8182, 953]], [[8184, 8184], "mapped", [8056]], [[8185, 8185], "mapped", [972]], [[8186, 8186], "mapped", [8060]], [[8187, 8187], "mapped", [974]], [[8188, 8188], "mapped", [969, 953]], [[8189, 8189], "disallowed_STD3_mapped", [32, 769]], [[8190, 8190], "disallowed_STD3_mapped", [32, 788]], [[8191, 8191], "disallowed"], [[8192, 8202], "disallowed_STD3_mapped", [32]], [[8203, 8203], "ignored"], [[8204, 8205], "deviation", []], [[8206, 8207], "disallowed"], [[8208, 8208], "valid", [], "NV8"], [[8209, 8209], "mapped", [8208]], [[8210, 8214], "valid", [], "NV8"], [[8215, 8215], "disallowed_STD3_mapped", [32, 819]], [[8216, 8227], "valid", [], "NV8"], [[8228, 8230], "disallowed"], [[8231, 8231], "valid", [], "NV8"], [[8232, 8238], "disallowed"], [[8239, 8239], "disallowed_STD3_mapped", [32]], [[8240, 8242], "valid", [], "NV8"], [[8243, 8243], "mapped", [8242, 8242]], [[8244, 8244], "mapped", [8242, 8242, 8242]], [[8245, 8245], "valid", [], "NV8"], [[8246, 8246], "mapped", [8245, 8245]], [[8247, 8247], "mapped", [8245, 8245, 8245]], [[8248, 8251], "valid", [], "NV8"], [[8252, 8252], "disallowed_STD3_mapped", [33, 33]], [[8253, 8253], "valid", [], "NV8"], [[8254, 8254], "disallowed_STD3_mapped", [32, 773]], [[8255, 8262], "valid", [], "NV8"], [[8263, 8263], "disallowed_STD3_mapped", [63, 63]], [[8264, 8264], "disallowed_STD3_mapped", [63, 33]], [[8265, 8265], "disallowed_STD3_mapped", [33, 63]], [[8266, 8269], "valid", [], "NV8"], [[8270, 8274], "valid", [], "NV8"], [[8275, 8276], "valid", [], "NV8"], [[8277, 8278], "valid", [], "NV8"], [[8279, 8279], "mapped", [8242, 8242, 8242, 8242]], [[8280, 8286], "valid", [], "NV8"], [[8287, 8287], "disallowed_STD3_mapped", [32]], [[8288, 8288], "ignored"], [[8289, 8291], "disallowed"], [[8292, 8292], "ignored"], [[8293, 8293], "disallowed"], [[8294, 8297], "disallowed"], [[8298, 8303], "disallowed"], [[8304, 8304], "mapped", [48]], [[8305, 8305], "mapped", [105]], [[8306, 8307], "disallowed"], [[8308, 8308], "mapped", [52]], [[8309, 8309], "mapped", [53]], [[8310, 8310], "mapped", [54]], [[8311, 8311], "mapped", [55]], [[8312, 8312], "mapped", [56]], [[8313, 8313], "mapped", [57]], [[8314, 8314], "disallowed_STD3_mapped", [43]], [[8315, 8315], "mapped", [8722]], [[8316, 8316], "disallowed_STD3_mapped", [61]], [[8317, 8317], "disallowed_STD3_mapped", [40]], [[8318, 8318], "disallowed_STD3_mapped", [41]], [[8319, 8319], "mapped", [110]], [[8320, 8320], "mapped", [48]], [[8321, 8321], "mapped", [49]], [[8322, 8322], "mapped", [50]], [[8323, 8323], "mapped", [51]], [[8324, 8324], "mapped", [52]], [[8325, 8325], "mapped", [53]], [[8326, 8326], "mapped", [54]], [[8327, 8327], "mapped", [55]], [[8328, 8328], "mapped", [56]], [[8329, 8329], "mapped", [57]], [[8330, 8330], "disallowed_STD3_mapped", [43]], [[8331, 8331], "mapped", [8722]], [[8332, 8332], "disallowed_STD3_mapped", [61]], [[8333, 8333], "disallowed_STD3_mapped", [40]], [[8334, 8334], "disallowed_STD3_mapped", [41]], [[8335, 8335], "disallowed"], [[8336, 8336], "mapped", [97]], [[8337, 8337], "mapped", [101]], [[8338, 8338], "mapped", [111]], [[8339, 8339], "mapped", [120]], [[8340, 8340], "mapped", [601]], [[8341, 8341], "mapped", [104]], [[8342, 8342], "mapped", [107]], [[8343, 8343], "mapped", [108]], [[8344, 8344], "mapped", [109]], [[8345, 8345], "mapped", [110]], [[8346, 8346], "mapped", [112]], [[8347, 8347], "mapped", [115]], [[8348, 8348], "mapped", [116]], [[8349, 8351], "disallowed"], [[8352, 8359], "valid", [], "NV8"], [[8360, 8360], "mapped", [114, 115]], [[8361, 8362], "valid", [], "NV8"], [[8363, 8363], "valid", [], "NV8"], [[8364, 8364], "valid", [], "NV8"], [[8365, 8367], "valid", [], "NV8"], [[8368, 8369], "valid", [], "NV8"], [[8370, 8373], "valid", [], "NV8"], [[8374, 8376], "valid", [], "NV8"], [[8377, 8377], "valid", [], "NV8"], [[8378, 8378], "valid", [], "NV8"], [[8379, 8381], "valid", [], "NV8"], [[8382, 8382], "valid", [], "NV8"], [[8383, 8399], "disallowed"], [[8400, 8417], "valid", [], "NV8"], [[8418, 8419], "valid", [], "NV8"], [[8420, 8426], "valid", [], "NV8"], [[8427, 8427], "valid", [], "NV8"], [[8428, 8431], "valid", [], "NV8"], [[8432, 8432], "valid", [], "NV8"], [[8433, 8447], "disallowed"], [[8448, 8448], "disallowed_STD3_mapped", [97, 47, 99]], [[8449, 8449], "disallowed_STD3_mapped", [97, 47, 115]], [[8450, 8450], "mapped", [99]], [[8451, 8451], "mapped", [176, 99]], [[8452, 8452], "valid", [], "NV8"], [[8453, 8453], "disallowed_STD3_mapped", [99, 47, 111]], [[8454, 8454], "disallowed_STD3_mapped", [99, 47, 117]], [[8455, 8455], "mapped", [603]], [[8456, 8456], "valid", [], "NV8"], [[8457, 8457], "mapped", [176, 102]], [[8458, 8458], "mapped", [103]], [[8459, 8462], "mapped", [104]], [[8463, 8463], "mapped", [295]], [[8464, 8465], "mapped", [105]], [[8466, 8467], "mapped", [108]], [[8468, 8468], "valid", [], "NV8"], [[8469, 8469], "mapped", [110]], [[8470, 8470], "mapped", [110, 111]], [[8471, 8472], "valid", [], "NV8"], [[8473, 8473], "mapped", [112]], [[8474, 8474], "mapped", [113]], [[8475, 8477], "mapped", [114]], [[8478, 8479], "valid", [], "NV8"], [[8480, 8480], "mapped", [115, 109]], [[8481, 8481], "mapped", [116, 101, 108]], [[8482, 8482], "mapped", [116, 109]], [[8483, 8483], "valid", [], "NV8"], [[8484, 8484], "mapped", [122]], [[8485, 8485], "valid", [], "NV8"], [[8486, 8486], "mapped", [969]], [[8487, 8487], "valid", [], "NV8"], [[8488, 8488], "mapped", [122]], [[8489, 8489], "valid", [], "NV8"], [[8490, 8490], "mapped", [107]], [[8491, 8491], "mapped", [229]], [[8492, 8492], "mapped", [98]], [[8493, 8493], "mapped", [99]], [[8494, 8494], "valid", [], "NV8"], [[8495, 8496], "mapped", [101]], [[8497, 8497], "mapped", [102]], [[8498, 8498], "disallowed"], [[8499, 8499], "mapped", [109]], [[8500, 8500], "mapped", [111]], [[8501, 8501], "mapped", [1488]], [[8502, 8502], "mapped", [1489]], [[8503, 8503], "mapped", [1490]], [[8504, 8504], "mapped", [1491]], [[8505, 8505], "mapped", [105]], [[8506, 8506], "valid", [], "NV8"], [[8507, 8507], "mapped", [102, 97, 120]], [[8508, 8508], "mapped", [960]], [[8509, 8510], "mapped", [947]], [[8511, 8511], "mapped", [960]], [[8512, 8512], "mapped", [8721]], [[8513, 8516], "valid", [], "NV8"], [[8517, 8518], "mapped", [100]], [[8519, 8519], "mapped", [101]], [[8520, 8520], "mapped", [105]], [[8521, 8521], "mapped", [106]], [[8522, 8523], "valid", [], "NV8"], [[8524, 8524], "valid", [], "NV8"], [[8525, 8525], "valid", [], "NV8"], [[8526, 8526], "valid"], [[8527, 8527], "valid", [], "NV8"], [[8528, 8528], "mapped", [49, 8260, 55]], [[8529, 8529], "mapped", [49, 8260, 57]], [[8530, 8530], "mapped", [49, 8260, 49, 48]], [[8531, 8531], "mapped", [49, 8260, 51]], [[8532, 8532], "mapped", [50, 8260, 51]], [[8533, 8533], "mapped", [49, 8260, 53]], [[8534, 8534], "mapped", [50, 8260, 53]], [[8535, 8535], "mapped", [51, 8260, 53]], [[8536, 8536], "mapped", [52, 8260, 53]], [[8537, 8537], "mapped", [49, 8260, 54]], [[8538, 8538], "mapped", [53, 8260, 54]], [[8539, 8539], "mapped", [49, 8260, 56]], [[8540, 8540], "mapped", [51, 8260, 56]], [[8541, 8541], "mapped", [53, 8260, 56]], [[8542, 8542], "mapped", [55, 8260, 56]], [[8543, 8543], "mapped", [49, 8260]], [[8544, 8544], "mapped", [105]], [[8545, 8545], "mapped", [105, 105]], [[8546, 8546], "mapped", [105, 105, 105]], [[8547, 8547], "mapped", [105, 118]], [[8548, 8548], "mapped", [118]], [[8549, 8549], "mapped", [118, 105]], [[8550, 8550], "mapped", [118, 105, 105]], [[8551, 8551], "mapped", [118, 105, 105, 105]], [[8552, 8552], "mapped", [105, 120]], [[8553, 8553], "mapped", [120]], [[8554, 8554], "mapped", [120, 105]], [[8555, 8555], "mapped", [120, 105, 105]], [[8556, 8556], "mapped", [108]], [[8557, 8557], "mapped", [99]], [[8558, 8558], "mapped", [100]], [[8559, 8559], "mapped", [109]], [[8560, 8560], "mapped", [105]], [[8561, 8561], "mapped", [105, 105]], [[8562, 8562], "mapped", [105, 105, 105]], [[8563, 8563], "mapped", [105, 118]], [[8564, 8564], "mapped", [118]], [[8565, 8565], "mapped", [118, 105]], [[8566, 8566], "mapped", [118, 105, 105]], [[8567, 8567], "mapped", [118, 105, 105, 105]], [[8568, 8568], "mapped", [105, 120]], [[8569, 8569], "mapped", [120]], [[8570, 8570], "mapped", [120, 105]], [[8571, 8571], "mapped", [120, 105, 105]], [[8572, 8572], "mapped", [108]], [[8573, 8573], "mapped", [99]], [[8574, 8574], "mapped", [100]], [[8575, 8575], "mapped", [109]], [[8576, 8578], "valid", [], "NV8"], [[8579, 8579], "disallowed"], [[8580, 8580], "valid"], [[8581, 8584], "valid", [], "NV8"], [[8585, 8585], "mapped", [48, 8260, 51]], [[8586, 8587], "valid", [], "NV8"], [[8588, 8591], "disallowed"], [[8592, 8682], "valid", [], "NV8"], [[8683, 8691], "valid", [], "NV8"], [[8692, 8703], "valid", [], "NV8"], [[8704, 8747], "valid", [], "NV8"], [[8748, 8748], "mapped", [8747, 8747]], [[8749, 8749], "mapped", [8747, 8747, 8747]], [[8750, 8750], "valid", [], "NV8"], [[8751, 8751], "mapped", [8750, 8750]], [[8752, 8752], "mapped", [8750, 8750, 8750]], [[8753, 8799], "valid", [], "NV8"], [[8800, 8800], "disallowed_STD3_valid"], [[8801, 8813], "valid", [], "NV8"], [[8814, 8815], "disallowed_STD3_valid"], [[8816, 8945], "valid", [], "NV8"], [[8946, 8959], "valid", [], "NV8"], [[8960, 8960], "valid", [], "NV8"], [[8961, 8961], "valid", [], "NV8"], [[8962, 9e3], "valid", [], "NV8"], [[9001, 9001], "mapped", [12296]], [[9002, 9002], "mapped", [12297]], [[9003, 9082], "valid", [], "NV8"], [[9083, 9083], "valid", [], "NV8"], [[9084, 9084], "valid", [], "NV8"], [[9085, 9114], "valid", [], "NV8"], [[9115, 9166], "valid", [], "NV8"], [[9167, 9168], "valid", [], "NV8"], [[9169, 9179], "valid", [], "NV8"], [[9180, 9191], "valid", [], "NV8"], [[9192, 9192], "valid", [], "NV8"], [[9193, 9203], "valid", [], "NV8"], [[9204, 9210], "valid", [], "NV8"], [[9211, 9215], "disallowed"], [[9216, 9252], "valid", [], "NV8"], [[9253, 9254], "valid", [], "NV8"], [[9255, 9279], "disallowed"], [[9280, 9290], "valid", [], "NV8"], [[9291, 9311], "disallowed"], [[9312, 9312], "mapped", [49]], [[9313, 9313], "mapped", [50]], [[9314, 9314], "mapped", [51]], [[9315, 9315], "mapped", [52]], [[9316, 9316], "mapped", [53]], [[9317, 9317], "mapped", [54]], [[9318, 9318], "mapped", [55]], [[9319, 9319], "mapped", [56]], [[9320, 9320], "mapped", [57]], [[9321, 9321], "mapped", [49, 48]], [[9322, 9322], "mapped", [49, 49]], [[9323, 9323], "mapped", [49, 50]], [[9324, 9324], "mapped", [49, 51]], [[9325, 9325], "mapped", [49, 52]], [[9326, 9326], "mapped", [49, 53]], [[9327, 9327], "mapped", [49, 54]], [[9328, 9328], "mapped", [49, 55]], [[9329, 9329], "mapped", [49, 56]], [[9330, 9330], "mapped", [49, 57]], [[9331, 9331], "mapped", [50, 48]], [[9332, 9332], "disallowed_STD3_mapped", [40, 49, 41]], [[9333, 9333], "disallowed_STD3_mapped", [40, 50, 41]], [[9334, 9334], "disallowed_STD3_mapped", [40, 51, 41]], [[9335, 9335], "disallowed_STD3_mapped", [40, 52, 41]], [[9336, 9336], "disallowed_STD3_mapped", [40, 53, 41]], [[9337, 9337], "disallowed_STD3_mapped", [40, 54, 41]], [[9338, 9338], "disallowed_STD3_mapped", [40, 55, 41]], [[9339, 9339], "disallowed_STD3_mapped", [40, 56, 41]], [[9340, 9340], "disallowed_STD3_mapped", [40, 57, 41]], [[9341, 9341], "disallowed_STD3_mapped", [40, 49, 48, 41]], [[9342, 9342], "disallowed_STD3_mapped", [40, 49, 49, 41]], [[9343, 9343], "disallowed_STD3_mapped", [40, 49, 50, 41]], [[9344, 9344], "disallowed_STD3_mapped", [40, 49, 51, 41]], [[9345, 9345], "disallowed_STD3_mapped", [40, 49, 52, 41]], [[9346, 9346], "disallowed_STD3_mapped", [40, 49, 53, 41]], [[9347, 9347], "disallowed_STD3_mapped", [40, 49, 54, 41]], [[9348, 9348], "disallowed_STD3_mapped", [40, 49, 55, 41]], [[9349, 9349], "disallowed_STD3_mapped", [40, 49, 56, 41]], [[9350, 9350], "disallowed_STD3_mapped", [40, 49, 57, 41]], [[9351, 9351], "disallowed_STD3_mapped", [40, 50, 48, 41]], [[9352, 9371], "disallowed"], [[9372, 9372], "disallowed_STD3_mapped", [40, 97, 41]], [[9373, 9373], "disallowed_STD3_mapped", [40, 98, 41]], [[9374, 9374], "disallowed_STD3_mapped", [40, 99, 41]], [[9375, 9375], "disallowed_STD3_mapped", [40, 100, 41]], [[9376, 9376], "disallowed_STD3_mapped", [40, 101, 41]], [[9377, 9377], "disallowed_STD3_mapped", [40, 102, 41]], [[9378, 9378], "disallowed_STD3_mapped", [40, 103, 41]], [[9379, 9379], "disallowed_STD3_mapped", [40, 104, 41]], [[9380, 9380], "disallowed_STD3_mapped", [40, 105, 41]], [[9381, 9381], "disallowed_STD3_mapped", [40, 106, 41]], [[9382, 9382], "disallowed_STD3_mapped", [40, 107, 41]], [[9383, 9383], "disallowed_STD3_mapped", [40, 108, 41]], [[9384, 9384], "disallowed_STD3_mapped", [40, 109, 41]], [[9385, 9385], "disallowed_STD3_mapped", [40, 110, 41]], [[9386, 9386], "disallowed_STD3_mapped", [40, 111, 41]], [[9387, 9387], "disallowed_STD3_mapped", [40, 112, 41]], [[9388, 9388], "disallowed_STD3_mapped", [40, 113, 41]], [[9389, 9389], "disallowed_STD3_mapped", [40, 114, 41]], [[9390, 9390], "disallowed_STD3_mapped", [40, 115, 41]], [[9391, 9391], "disallowed_STD3_mapped", [40, 116, 41]], [[9392, 9392], "disallowed_STD3_mapped", [40, 117, 41]], [[9393, 9393], "disallowed_STD3_mapped", [40, 118, 41]], [[9394, 9394], "disallowed_STD3_mapped", [40, 119, 41]], [[9395, 9395], "disallowed_STD3_mapped", [40, 120, 41]], [[9396, 9396], "disallowed_STD3_mapped", [40, 121, 41]], [[9397, 9397], "disallowed_STD3_mapped", [40, 122, 41]], [[9398, 9398], "mapped", [97]], [[9399, 9399], "mapped", [98]], [[9400, 9400], "mapped", [99]], [[9401, 9401], "mapped", [100]], [[9402, 9402], "mapped", [101]], [[9403, 9403], "mapped", [102]], [[9404, 9404], "mapped", [103]], [[9405, 9405], "mapped", [104]], [[9406, 9406], "mapped", [105]], [[9407, 9407], "mapped", [106]], [[9408, 9408], "mapped", [107]], [[9409, 9409], "mapped", [108]], [[9410, 9410], "mapped", [109]], [[9411, 9411], "mapped", [110]], [[9412, 9412], "mapped", [111]], [[9413, 9413], "mapped", [112]], [[9414, 9414], "mapped", [113]], [[9415, 9415], "mapped", [114]], [[9416, 9416], "mapped", [115]], [[9417, 9417], "mapped", [116]], [[9418, 9418], "mapped", [117]], [[9419, 9419], "mapped", [118]], [[9420, 9420], "mapped", [119]], [[9421, 9421], "mapped", [120]], [[9422, 9422], "mapped", [121]], [[9423, 9423], "mapped", [122]], [[9424, 9424], "mapped", [97]], [[9425, 9425], "mapped", [98]], [[9426, 9426], "mapped", [99]], [[9427, 9427], "mapped", [100]], [[9428, 9428], "mapped", [101]], [[9429, 9429], "mapped", [102]], [[9430, 9430], "mapped", [103]], [[9431, 9431], "mapped", [104]], [[9432, 9432], "mapped", [105]], [[9433, 9433], "mapped", [106]], [[9434, 9434], "mapped", [107]], [[9435, 9435], "mapped", [108]], [[9436, 9436], "mapped", [109]], [[9437, 9437], "mapped", [110]], [[9438, 9438], "mapped", [111]], [[9439, 9439], "mapped", [112]], [[9440, 9440], "mapped", [113]], [[9441, 9441], "mapped", [114]], [[9442, 9442], "mapped", [115]], [[9443, 9443], "mapped", [116]], [[9444, 9444], "mapped", [117]], [[9445, 9445], "mapped", [118]], [[9446, 9446], "mapped", [119]], [[9447, 9447], "mapped", [120]], [[9448, 9448], "mapped", [121]], [[9449, 9449], "mapped", [122]], [[9450, 9450], "mapped", [48]], [[9451, 9470], "valid", [], "NV8"], [[9471, 9471], "valid", [], "NV8"], [[9472, 9621], "valid", [], "NV8"], [[9622, 9631], "valid", [], "NV8"], [[9632, 9711], "valid", [], "NV8"], [[9712, 9719], "valid", [], "NV8"], [[9720, 9727], "valid", [], "NV8"], [[9728, 9747], "valid", [], "NV8"], [[9748, 9749], "valid", [], "NV8"], [[9750, 9751], "valid", [], "NV8"], [[9752, 9752], "valid", [], "NV8"], [[9753, 9753], "valid", [], "NV8"], [[9754, 9839], "valid", [], "NV8"], [[9840, 9841], "valid", [], "NV8"], [[9842, 9853], "valid", [], "NV8"], [[9854, 9855], "valid", [], "NV8"], [[9856, 9865], "valid", [], "NV8"], [[9866, 9873], "valid", [], "NV8"], [[9874, 9884], "valid", [], "NV8"], [[9885, 9885], "valid", [], "NV8"], [[9886, 9887], "valid", [], "NV8"], [[9888, 9889], "valid", [], "NV8"], [[9890, 9905], "valid", [], "NV8"], [[9906, 9906], "valid", [], "NV8"], [[9907, 9916], "valid", [], "NV8"], [[9917, 9919], "valid", [], "NV8"], [[9920, 9923], "valid", [], "NV8"], [[9924, 9933], "valid", [], "NV8"], [[9934, 9934], "valid", [], "NV8"], [[9935, 9953], "valid", [], "NV8"], [[9954, 9954], "valid", [], "NV8"], [[9955, 9955], "valid", [], "NV8"], [[9956, 9959], "valid", [], "NV8"], [[9960, 9983], "valid", [], "NV8"], [[9984, 9984], "valid", [], "NV8"], [[9985, 9988], "valid", [], "NV8"], [[9989, 9989], "valid", [], "NV8"], [[9990, 9993], "valid", [], "NV8"], [[9994, 9995], "valid", [], "NV8"], [[9996, 10023], "valid", [], "NV8"], [[10024, 10024], "valid", [], "NV8"], [[10025, 10059], "valid", [], "NV8"], [[10060, 10060], "valid", [], "NV8"], [[10061, 10061], "valid", [], "NV8"], [[10062, 10062], "valid", [], "NV8"], [[10063, 10066], "valid", [], "NV8"], [[10067, 10069], "valid", [], "NV8"], [[10070, 10070], "valid", [], "NV8"], [[10071, 10071], "valid", [], "NV8"], [[10072, 10078], "valid", [], "NV8"], [[10079, 10080], "valid", [], "NV8"], [[10081, 10087], "valid", [], "NV8"], [[10088, 10101], "valid", [], "NV8"], [[10102, 10132], "valid", [], "NV8"], [[10133, 10135], "valid", [], "NV8"], [[10136, 10159], "valid", [], "NV8"], [[10160, 10160], "valid", [], "NV8"], [[10161, 10174], "valid", [], "NV8"], [[10175, 10175], "valid", [], "NV8"], [[10176, 10182], "valid", [], "NV8"], [[10183, 10186], "valid", [], "NV8"], [[10187, 10187], "valid", [], "NV8"], [[10188, 10188], "valid", [], "NV8"], [[10189, 10189], "valid", [], "NV8"], [[10190, 10191], "valid", [], "NV8"], [[10192, 10219], "valid", [], "NV8"], [[10220, 10223], "valid", [], "NV8"], [[10224, 10239], "valid", [], "NV8"], [[10240, 10495], "valid", [], "NV8"], [[10496, 10763], "valid", [], "NV8"], [[10764, 10764], "mapped", [8747, 8747, 8747, 8747]], [[10765, 10867], "valid", [], "NV8"], [[10868, 10868], "disallowed_STD3_mapped", [58, 58, 61]], [[10869, 10869], "disallowed_STD3_mapped", [61, 61]], [[10870, 10870], "disallowed_STD3_mapped", [61, 61, 61]], [[10871, 10971], "valid", [], "NV8"], [[10972, 10972], "mapped", [10973, 824]], [[10973, 11007], "valid", [], "NV8"], [[11008, 11021], "valid", [], "NV8"], [[11022, 11027], "valid", [], "NV8"], [[11028, 11034], "valid", [], "NV8"], [[11035, 11039], "valid", [], "NV8"], [[11040, 11043], "valid", [], "NV8"], [[11044, 11084], "valid", [], "NV8"], [[11085, 11087], "valid", [], "NV8"], [[11088, 11092], "valid", [], "NV8"], [[11093, 11097], "valid", [], "NV8"], [[11098, 11123], "valid", [], "NV8"], [[11124, 11125], "disallowed"], [[11126, 11157], "valid", [], "NV8"], [[11158, 11159], "disallowed"], [[11160, 11193], "valid", [], "NV8"], [[11194, 11196], "disallowed"], [[11197, 11208], "valid", [], "NV8"], [[11209, 11209], "disallowed"], [[11210, 11217], "valid", [], "NV8"], [[11218, 11243], "disallowed"], [[11244, 11247], "valid", [], "NV8"], [[11248, 11263], "disallowed"], [[11264, 11264], "mapped", [11312]], [[11265, 11265], "mapped", [11313]], [[11266, 11266], "mapped", [11314]], [[11267, 11267], "mapped", [11315]], [[11268, 11268], "mapped", [11316]], [[11269, 11269], "mapped", [11317]], [[11270, 11270], "mapped", [11318]], [[11271, 11271], "mapped", [11319]], [[11272, 11272], "mapped", [11320]], [[11273, 11273], "mapped", [11321]], [[11274, 11274], "mapped", [11322]], [[11275, 11275], "mapped", [11323]], [[11276, 11276], "mapped", [11324]], [[11277, 11277], "mapped", [11325]], [[11278, 11278], "mapped", [11326]], [[11279, 11279], "mapped", [11327]], [[11280, 11280], "mapped", [11328]], [[11281, 11281], "mapped", [11329]], [[11282, 11282], "mapped", [11330]], [[11283, 11283], "mapped", [11331]], [[11284, 11284], "mapped", [11332]], [[11285, 11285], "mapped", [11333]], [[11286, 11286], "mapped", [11334]], [[11287, 11287], "mapped", [11335]], [[11288, 11288], "mapped", [11336]], [[11289, 11289], "mapped", [11337]], [[11290, 11290], "mapped", [11338]], [[11291, 11291], "mapped", [11339]], [[11292, 11292], "mapped", [11340]], [[11293, 11293], "mapped", [11341]], [[11294, 11294], "mapped", [11342]], [[11295, 11295], "mapped", [11343]], [[11296, 11296], "mapped", [11344]], [[11297, 11297], "mapped", [11345]], [[11298, 11298], "mapped", [11346]], [[11299, 11299], "mapped", [11347]], [[11300, 11300], "mapped", [11348]], [[11301, 11301], "mapped", [11349]], [[11302, 11302], "mapped", [11350]], [[11303, 11303], "mapped", [11351]], [[11304, 11304], "mapped", [11352]], [[11305, 11305], "mapped", [11353]], [[11306, 11306], "mapped", [11354]], [[11307, 11307], "mapped", [11355]], [[11308, 11308], "mapped", [11356]], [[11309, 11309], "mapped", [11357]], [[11310, 11310], "mapped", [11358]], [[11311, 11311], "disallowed"], [[11312, 11358], "valid"], [[11359, 11359], "disallowed"], [[11360, 11360], "mapped", [11361]], [[11361, 11361], "valid"], [[11362, 11362], "mapped", [619]], [[11363, 11363], "mapped", [7549]], [[11364, 11364], "mapped", [637]], [[11365, 11366], "valid"], [[11367, 11367], "mapped", [11368]], [[11368, 11368], "valid"], [[11369, 11369], "mapped", [11370]], [[11370, 11370], "valid"], [[11371, 11371], "mapped", [11372]], [[11372, 11372], "valid"], [[11373, 11373], "mapped", [593]], [[11374, 11374], "mapped", [625]], [[11375, 11375], "mapped", [592]], [[11376, 11376], "mapped", [594]], [[11377, 11377], "valid"], [[11378, 11378], "mapped", [11379]], [[11379, 11379], "valid"], [[11380, 11380], "valid"], [[11381, 11381], "mapped", [11382]], [[11382, 11383], "valid"], [[11384, 11387], "valid"], [[11388, 11388], "mapped", [106]], [[11389, 11389], "mapped", [118]], [[11390, 11390], "mapped", [575]], [[11391, 11391], "mapped", [576]], [[11392, 11392], "mapped", [11393]], [[11393, 11393], "valid"], [[11394, 11394], "mapped", [11395]], [[11395, 11395], "valid"], [[11396, 11396], "mapped", [11397]], [[11397, 11397], "valid"], [[11398, 11398], "mapped", [11399]], [[11399, 11399], "valid"], [[11400, 11400], "mapped", [11401]], [[11401, 11401], "valid"], [[11402, 11402], "mapped", [11403]], [[11403, 11403], "valid"], [[11404, 11404], "mapped", [11405]], [[11405, 11405], "valid"], [[11406, 11406], "mapped", [11407]], [[11407, 11407], "valid"], [[11408, 11408], "mapped", [11409]], [[11409, 11409], "valid"], [[11410, 11410], "mapped", [11411]], [[11411, 11411], "valid"], [[11412, 11412], "mapped", [11413]], [[11413, 11413], "valid"], [[11414, 11414], "mapped", [11415]], [[11415, 11415], "valid"], [[11416, 11416], "mapped", [11417]], [[11417, 11417], "valid"], [[11418, 11418], "mapped", [11419]], [[11419, 11419], "valid"], [[11420, 11420], "mapped", [11421]], [[11421, 11421], "valid"], [[11422, 11422], "mapped", [11423]], [[11423, 11423], "valid"], [[11424, 11424], "mapped", [11425]], [[11425, 11425], "valid"], [[11426, 11426], "mapped", [11427]], [[11427, 11427], "valid"], [[11428, 11428], "mapped", [11429]], [[11429, 11429], "valid"], [[11430, 11430], "mapped", [11431]], [[11431, 11431], "valid"], [[11432, 11432], "mapped", [11433]], [[11433, 11433], "valid"], [[11434, 11434], "mapped", [11435]], [[11435, 11435], "valid"], [[11436, 11436], "mapped", [11437]], [[11437, 11437], "valid"], [[11438, 11438], "mapped", [11439]], [[11439, 11439], "valid"], [[11440, 11440], "mapped", [11441]], [[11441, 11441], "valid"], [[11442, 11442], "mapped", [11443]], [[11443, 11443], "valid"], [[11444, 11444], "mapped", [11445]], [[11445, 11445], "valid"], [[11446, 11446], "mapped", [11447]], [[11447, 11447], "valid"], [[11448, 11448], "mapped", [11449]], [[11449, 11449], "valid"], [[11450, 11450], "mapped", [11451]], [[11451, 11451], "valid"], [[11452, 11452], "mapped", [11453]], [[11453, 11453], "valid"], [[11454, 11454], "mapped", [11455]], [[11455, 11455], "valid"], [[11456, 11456], "mapped", [11457]], [[11457, 11457], "valid"], [[11458, 11458], "mapped", [11459]], [[11459, 11459], "valid"], [[11460, 11460], "mapped", [11461]], [[11461, 11461], "valid"], [[11462, 11462], "mapped", [11463]], [[11463, 11463], "valid"], [[11464, 11464], "mapped", [11465]], [[11465, 11465], "valid"], [[11466, 11466], "mapped", [11467]], [[11467, 11467], "valid"], [[11468, 11468], "mapped", [11469]], [[11469, 11469], "valid"], [[11470, 11470], "mapped", [11471]], [[11471, 11471], "valid"], [[11472, 11472], "mapped", [11473]], [[11473, 11473], "valid"], [[11474, 11474], "mapped", [11475]], [[11475, 11475], "valid"], [[11476, 11476], "mapped", [11477]], [[11477, 11477], "valid"], [[11478, 11478], "mapped", [11479]], [[11479, 11479], "valid"], [[11480, 11480], "mapped", [11481]], [[11481, 11481], "valid"], [[11482, 11482], "mapped", [11483]], [[11483, 11483], "valid"], [[11484, 11484], "mapped", [11485]], [[11485, 11485], "valid"], [[11486, 11486], "mapped", [11487]], [[11487, 11487], "valid"], [[11488, 11488], "mapped", [11489]], [[11489, 11489], "valid"], [[11490, 11490], "mapped", [11491]], [[11491, 11492], "valid"], [[11493, 11498], "valid", [], "NV8"], [[11499, 11499], "mapped", [11500]], [[11500, 11500], "valid"], [[11501, 11501], "mapped", [11502]], [[11502, 11505], "valid"], [[11506, 11506], "mapped", [11507]], [[11507, 11507], "valid"], [[11508, 11512], "disallowed"], [[11513, 11519], "valid", [], "NV8"], [[11520, 11557], "valid"], [[11558, 11558], "disallowed"], [[11559, 11559], "valid"], [[11560, 11564], "disallowed"], [[11565, 11565], "valid"], [[11566, 11567], "disallowed"], [[11568, 11621], "valid"], [[11622, 11623], "valid"], [[11624, 11630], "disallowed"], [[11631, 11631], "mapped", [11617]], [[11632, 11632], "valid", [], "NV8"], [[11633, 11646], "disallowed"], [[11647, 11647], "valid"], [[11648, 11670], "valid"], [[11671, 11679], "disallowed"], [[11680, 11686], "valid"], [[11687, 11687], "disallowed"], [[11688, 11694], "valid"], [[11695, 11695], "disallowed"], [[11696, 11702], "valid"], [[11703, 11703], "disallowed"], [[11704, 11710], "valid"], [[11711, 11711], "disallowed"], [[11712, 11718], "valid"], [[11719, 11719], "disallowed"], [[11720, 11726], "valid"], [[11727, 11727], "disallowed"], [[11728, 11734], "valid"], [[11735, 11735], "disallowed"], [[11736, 11742], "valid"], [[11743, 11743], "disallowed"], [[11744, 11775], "valid"], [[11776, 11799], "valid", [], "NV8"], [[11800, 11803], "valid", [], "NV8"], [[11804, 11805], "valid", [], "NV8"], [[11806, 11822], "valid", [], "NV8"], [[11823, 11823], "valid"], [[11824, 11824], "valid", [], "NV8"], [[11825, 11825], "valid", [], "NV8"], [[11826, 11835], "valid", [], "NV8"], [[11836, 11842], "valid", [], "NV8"], [[11843, 11903], "disallowed"], [[11904, 11929], "valid", [], "NV8"], [[11930, 11930], "disallowed"], [[11931, 11934], "valid", [], "NV8"], [[11935, 11935], "mapped", [27597]], [[11936, 12018], "valid", [], "NV8"], [[12019, 12019], "mapped", [40863]], [[12020, 12031], "disallowed"], [[12032, 12032], "mapped", [19968]], [[12033, 12033], "mapped", [20008]], [[12034, 12034], "mapped", [20022]], [[12035, 12035], "mapped", [20031]], [[12036, 12036], "mapped", [20057]], [[12037, 12037], "mapped", [20101]], [[12038, 12038], "mapped", [20108]], [[12039, 12039], "mapped", [20128]], [[12040, 12040], "mapped", [20154]], [[12041, 12041], "mapped", [20799]], [[12042, 12042], "mapped", [20837]], [[12043, 12043], "mapped", [20843]], [[12044, 12044], "mapped", [20866]], [[12045, 12045], "mapped", [20886]], [[12046, 12046], "mapped", [20907]], [[12047, 12047], "mapped", [20960]], [[12048, 12048], "mapped", [20981]], [[12049, 12049], "mapped", [20992]], [[12050, 12050], "mapped", [21147]], [[12051, 12051], "mapped", [21241]], [[12052, 12052], "mapped", [21269]], [[12053, 12053], "mapped", [21274]], [[12054, 12054], "mapped", [21304]], [[12055, 12055], "mapped", [21313]], [[12056, 12056], "mapped", [21340]], [[12057, 12057], "mapped", [21353]], [[12058, 12058], "mapped", [21378]], [[12059, 12059], "mapped", [21430]], [[12060, 12060], "mapped", [21448]], [[12061, 12061], "mapped", [21475]], [[12062, 12062], "mapped", [22231]], [[12063, 12063], "mapped", [22303]], [[12064, 12064], "mapped", [22763]], [[12065, 12065], "mapped", [22786]], [[12066, 12066], "mapped", [22794]], [[12067, 12067], "mapped", [22805]], [[12068, 12068], "mapped", [22823]], [[12069, 12069], "mapped", [22899]], [[12070, 12070], "mapped", [23376]], [[12071, 12071], "mapped", [23424]], [[12072, 12072], "mapped", [23544]], [[12073, 12073], "mapped", [23567]], [[12074, 12074], "mapped", [23586]], [[12075, 12075], "mapped", [23608]], [[12076, 12076], "mapped", [23662]], [[12077, 12077], "mapped", [23665]], [[12078, 12078], "mapped", [24027]], [[12079, 12079], "mapped", [24037]], [[12080, 12080], "mapped", [24049]], [[12081, 12081], "mapped", [24062]], [[12082, 12082], "mapped", [24178]], [[12083, 12083], "mapped", [24186]], [[12084, 12084], "mapped", [24191]], [[12085, 12085], "mapped", [24308]], [[12086, 12086], "mapped", [24318]], [[12087, 12087], "mapped", [24331]], [[12088, 12088], "mapped", [24339]], [[12089, 12089], "mapped", [24400]], [[12090, 12090], "mapped", [24417]], [[12091, 12091], "mapped", [24435]], [[12092, 12092], "mapped", [24515]], [[12093, 12093], "mapped", [25096]], [[12094, 12094], "mapped", [25142]], [[12095, 12095], "mapped", [25163]], [[12096, 12096], "mapped", [25903]], [[12097, 12097], "mapped", [25908]], [[12098, 12098], "mapped", [25991]], [[12099, 12099], "mapped", [26007]], [[12100, 12100], "mapped", [26020]], [[12101, 12101], "mapped", [26041]], [[12102, 12102], "mapped", [26080]], [[12103, 12103], "mapped", [26085]], [[12104, 12104], "mapped", [26352]], [[12105, 12105], "mapped", [26376]], [[12106, 12106], "mapped", [26408]], [[12107, 12107], "mapped", [27424]], [[12108, 12108], "mapped", [27490]], [[12109, 12109], "mapped", [27513]], [[12110, 12110], "mapped", [27571]], [[12111, 12111], "mapped", [27595]], [[12112, 12112], "mapped", [27604]], [[12113, 12113], "mapped", [27611]], [[12114, 12114], "mapped", [27663]], [[12115, 12115], "mapped", [27668]], [[12116, 12116], "mapped", [27700]], [[12117, 12117], "mapped", [28779]], [[12118, 12118], "mapped", [29226]], [[12119, 12119], "mapped", [29238]], [[12120, 12120], "mapped", [29243]], [[12121, 12121], "mapped", [29247]], [[12122, 12122], "mapped", [29255]], [[12123, 12123], "mapped", [29273]], [[12124, 12124], "mapped", [29275]], [[12125, 12125], "mapped", [29356]], [[12126, 12126], "mapped", [29572]], [[12127, 12127], "mapped", [29577]], [[12128, 12128], "mapped", [29916]], [[12129, 12129], "mapped", [29926]], [[12130, 12130], "mapped", [29976]], [[12131, 12131], "mapped", [29983]], [[12132, 12132], "mapped", [29992]], [[12133, 12133], "mapped", [3e4]], [[12134, 12134], "mapped", [30091]], [[12135, 12135], "mapped", [30098]], [[12136, 12136], "mapped", [30326]], [[12137, 12137], "mapped", [30333]], [[12138, 12138], "mapped", [30382]], [[12139, 12139], "mapped", [30399]], [[12140, 12140], "mapped", [30446]], [[12141, 12141], "mapped", [30683]], [[12142, 12142], "mapped", [30690]], [[12143, 12143], "mapped", [30707]], [[12144, 12144], "mapped", [31034]], [[12145, 12145], "mapped", [31160]], [[12146, 12146], "mapped", [31166]], [[12147, 12147], "mapped", [31348]], [[12148, 12148], "mapped", [31435]], [[12149, 12149], "mapped", [31481]], [[12150, 12150], "mapped", [31859]], [[12151, 12151], "mapped", [31992]], [[12152, 12152], "mapped", [32566]], [[12153, 12153], "mapped", [32593]], [[12154, 12154], "mapped", [32650]], [[12155, 12155], "mapped", [32701]], [[12156, 12156], "mapped", [32769]], [[12157, 12157], "mapped", [32780]], [[12158, 12158], "mapped", [32786]], [[12159, 12159], "mapped", [32819]], [[12160, 12160], "mapped", [32895]], [[12161, 12161], "mapped", [32905]], [[12162, 12162], "mapped", [33251]], [[12163, 12163], "mapped", [33258]], [[12164, 12164], "mapped", [33267]], [[12165, 12165], "mapped", [33276]], [[12166, 12166], "mapped", [33292]], [[12167, 12167], "mapped", [33307]], [[12168, 12168], "mapped", [33311]], [[12169, 12169], "mapped", [33390]], [[12170, 12170], "mapped", [33394]], [[12171, 12171], "mapped", [33400]], [[12172, 12172], "mapped", [34381]], [[12173, 12173], "mapped", [34411]], [[12174, 12174], "mapped", [34880]], [[12175, 12175], "mapped", [34892]], [[12176, 12176], "mapped", [34915]], [[12177, 12177], "mapped", [35198]], [[12178, 12178], "mapped", [35211]], [[12179, 12179], "mapped", [35282]], [[12180, 12180], "mapped", [35328]], [[12181, 12181], "mapped", [35895]], [[12182, 12182], "mapped", [35910]], [[12183, 12183], "mapped", [35925]], [[12184, 12184], "mapped", [35960]], [[12185, 12185], "mapped", [35997]], [[12186, 12186], "mapped", [36196]], [[12187, 12187], "mapped", [36208]], [[12188, 12188], "mapped", [36275]], [[12189, 12189], "mapped", [36523]], [[12190, 12190], "mapped", [36554]], [[12191, 12191], "mapped", [36763]], [[12192, 12192], "mapped", [36784]], [[12193, 12193], "mapped", [36789]], [[12194, 12194], "mapped", [37009]], [[12195, 12195], "mapped", [37193]], [[12196, 12196], "mapped", [37318]], [[12197, 12197], "mapped", [37324]], [[12198, 12198], "mapped", [37329]], [[12199, 12199], "mapped", [38263]], [[12200, 12200], "mapped", [38272]], [[12201, 12201], "mapped", [38428]], [[12202, 12202], "mapped", [38582]], [[12203, 12203], "mapped", [38585]], [[12204, 12204], "mapped", [38632]], [[12205, 12205], "mapped", [38737]], [[12206, 12206], "mapped", [38750]], [[12207, 12207], "mapped", [38754]], [[12208, 12208], "mapped", [38761]], [[12209, 12209], "mapped", [38859]], [[12210, 12210], "mapped", [38893]], [[12211, 12211], "mapped", [38899]], [[12212, 12212], "mapped", [38913]], [[12213, 12213], "mapped", [39080]], [[12214, 12214], "mapped", [39131]], [[12215, 12215], "mapped", [39135]], [[12216, 12216], "mapped", [39318]], [[12217, 12217], "mapped", [39321]], [[12218, 12218], "mapped", [39340]], [[12219, 12219], "mapped", [39592]], [[12220, 12220], "mapped", [39640]], [[12221, 12221], "mapped", [39647]], [[12222, 12222], "mapped", [39717]], [[12223, 12223], "mapped", [39727]], [[12224, 12224], "mapped", [39730]], [[12225, 12225], "mapped", [39740]], [[12226, 12226], "mapped", [39770]], [[12227, 12227], "mapped", [40165]], [[12228, 12228], "mapped", [40565]], [[12229, 12229], "mapped", [40575]], [[12230, 12230], "mapped", [40613]], [[12231, 12231], "mapped", [40635]], [[12232, 12232], "mapped", [40643]], [[12233, 12233], "mapped", [40653]], [[12234, 12234], "mapped", [40657]], [[12235, 12235], "mapped", [40697]], [[12236, 12236], "mapped", [40701]], [[12237, 12237], "mapped", [40718]], [[12238, 12238], "mapped", [40723]], [[12239, 12239], "mapped", [40736]], [[12240, 12240], "mapped", [40763]], [[12241, 12241], "mapped", [40778]], [[12242, 12242], "mapped", [40786]], [[12243, 12243], "mapped", [40845]], [[12244, 12244], "mapped", [40860]], [[12245, 12245], "mapped", [40864]], [[12246, 12271], "disallowed"], [[12272, 12283], "disallowed"], [[12284, 12287], "disallowed"], [[12288, 12288], "disallowed_STD3_mapped", [32]], [[12289, 12289], "valid", [], "NV8"], [[12290, 12290], "mapped", [46]], [[12291, 12292], "valid", [], "NV8"], [[12293, 12295], "valid"], [[12296, 12329], "valid", [], "NV8"], [[12330, 12333], "valid"], [[12334, 12341], "valid", [], "NV8"], [[12342, 12342], "mapped", [12306]], [[12343, 12343], "valid", [], "NV8"], [[12344, 12344], "mapped", [21313]], [[12345, 12345], "mapped", [21316]], [[12346, 12346], "mapped", [21317]], [[12347, 12347], "valid", [], "NV8"], [[12348, 12348], "valid"], [[12349, 12349], "valid", [], "NV8"], [[12350, 12350], "valid", [], "NV8"], [[12351, 12351], "valid", [], "NV8"], [[12352, 12352], "disallowed"], [[12353, 12436], "valid"], [[12437, 12438], "valid"], [[12439, 12440], "disallowed"], [[12441, 12442], "valid"], [[12443, 12443], "disallowed_STD3_mapped", [32, 12441]], [[12444, 12444], "disallowed_STD3_mapped", [32, 12442]], [[12445, 12446], "valid"], [[12447, 12447], "mapped", [12424, 12426]], [[12448, 12448], "valid", [], "NV8"], [[12449, 12542], "valid"], [[12543, 12543], "mapped", [12467, 12488]], [[12544, 12548], "disallowed"], [[12549, 12588], "valid"], [[12589, 12589], "valid"], [[12590, 12592], "disallowed"], [[12593, 12593], "mapped", [4352]], [[12594, 12594], "mapped", [4353]], [[12595, 12595], "mapped", [4522]], [[12596, 12596], "mapped", [4354]], [[12597, 12597], "mapped", [4524]], [[12598, 12598], "mapped", [4525]], [[12599, 12599], "mapped", [4355]], [[12600, 12600], "mapped", [4356]], [[12601, 12601], "mapped", [4357]], [[12602, 12602], "mapped", [4528]], [[12603, 12603], "mapped", [4529]], [[12604, 12604], "mapped", [4530]], [[12605, 12605], "mapped", [4531]], [[12606, 12606], "mapped", [4532]], [[12607, 12607], "mapped", [4533]], [[12608, 12608], "mapped", [4378]], [[12609, 12609], "mapped", [4358]], [[12610, 12610], "mapped", [4359]], [[12611, 12611], "mapped", [4360]], [[12612, 12612], "mapped", [4385]], [[12613, 12613], "mapped", [4361]], [[12614, 12614], "mapped", [4362]], [[12615, 12615], "mapped", [4363]], [[12616, 12616], "mapped", [4364]], [[12617, 12617], "mapped", [4365]], [[12618, 12618], "mapped", [4366]], [[12619, 12619], "mapped", [4367]], [[12620, 12620], "mapped", [4368]], [[12621, 12621], "mapped", [4369]], [[12622, 12622], "mapped", [4370]], [[12623, 12623], "mapped", [4449]], [[12624, 12624], "mapped", [4450]], [[12625, 12625], "mapped", [4451]], [[12626, 12626], "mapped", [4452]], [[12627, 12627], "mapped", [4453]], [[12628, 12628], "mapped", [4454]], [[12629, 12629], "mapped", [4455]], [[12630, 12630], "mapped", [4456]], [[12631, 12631], "mapped", [4457]], [[12632, 12632], "mapped", [4458]], [[12633, 12633], "mapped", [4459]], [[12634, 12634], "mapped", [4460]], [[12635, 12635], "mapped", [4461]], [[12636, 12636], "mapped", [4462]], [[12637, 12637], "mapped", [4463]], [[12638, 12638], "mapped", [4464]], [[12639, 12639], "mapped", [4465]], [[12640, 12640], "mapped", [4466]], [[12641, 12641], "mapped", [4467]], [[12642, 12642], "mapped", [4468]], [[12643, 12643], "mapped", [4469]], [[12644, 12644], "disallowed"], [[12645, 12645], "mapped", [4372]], [[12646, 12646], "mapped", [4373]], [[12647, 12647], "mapped", [4551]], [[12648, 12648], "mapped", [4552]], [[12649, 12649], "mapped", [4556]], [[12650, 12650], "mapped", [4558]], [[12651, 12651], "mapped", [4563]], [[12652, 12652], "mapped", [4567]], [[12653, 12653], "mapped", [4569]], [[12654, 12654], "mapped", [4380]], [[12655, 12655], "mapped", [4573]], [[12656, 12656], "mapped", [4575]], [[12657, 12657], "mapped", [4381]], [[12658, 12658], "mapped", [4382]], [[12659, 12659], "mapped", [4384]], [[12660, 12660], "mapped", [4386]], [[12661, 12661], "mapped", [4387]], [[12662, 12662], "mapped", [4391]], [[12663, 12663], "mapped", [4393]], [[12664, 12664], "mapped", [4395]], [[12665, 12665], "mapped", [4396]], [[12666, 12666], "mapped", [4397]], [[12667, 12667], "mapped", [4398]], [[12668, 12668], "mapped", [4399]], [[12669, 12669], "mapped", [4402]], [[12670, 12670], "mapped", [4406]], [[12671, 12671], "mapped", [4416]], [[12672, 12672], "mapped", [4423]], [[12673, 12673], "mapped", [4428]], [[12674, 12674], "mapped", [4593]], [[12675, 12675], "mapped", [4594]], [[12676, 12676], "mapped", [4439]], [[12677, 12677], "mapped", [4440]], [[12678, 12678], "mapped", [4441]], [[12679, 12679], "mapped", [4484]], [[12680, 12680], "mapped", [4485]], [[12681, 12681], "mapped", [4488]], [[12682, 12682], "mapped", [4497]], [[12683, 12683], "mapped", [4498]], [[12684, 12684], "mapped", [4500]], [[12685, 12685], "mapped", [4510]], [[12686, 12686], "mapped", [4513]], [[12687, 12687], "disallowed"], [[12688, 12689], "valid", [], "NV8"], [[12690, 12690], "mapped", [19968]], [[12691, 12691], "mapped", [20108]], [[12692, 12692], "mapped", [19977]], [[12693, 12693], "mapped", [22235]], [[12694, 12694], "mapped", [19978]], [[12695, 12695], "mapped", [20013]], [[12696, 12696], "mapped", [19979]], [[12697, 12697], "mapped", [30002]], [[12698, 12698], "mapped", [20057]], [[12699, 12699], "mapped", [19993]], [[12700, 12700], "mapped", [19969]], [[12701, 12701], "mapped", [22825]], [[12702, 12702], "mapped", [22320]], [[12703, 12703], "mapped", [20154]], [[12704, 12727], "valid"], [[12728, 12730], "valid"], [[12731, 12735], "disallowed"], [[12736, 12751], "valid", [], "NV8"], [[12752, 12771], "valid", [], "NV8"], [[12772, 12783], "disallowed"], [[12784, 12799], "valid"], [[12800, 12800], "disallowed_STD3_mapped", [40, 4352, 41]], [[12801, 12801], "disallowed_STD3_mapped", [40, 4354, 41]], [[12802, 12802], "disallowed_STD3_mapped", [40, 4355, 41]], [[12803, 12803], "disallowed_STD3_mapped", [40, 4357, 41]], [[12804, 12804], "disallowed_STD3_mapped", [40, 4358, 41]], [[12805, 12805], "disallowed_STD3_mapped", [40, 4359, 41]], [[12806, 12806], "disallowed_STD3_mapped", [40, 4361, 41]], [[12807, 12807], "disallowed_STD3_mapped", [40, 4363, 41]], [[12808, 12808], "disallowed_STD3_mapped", [40, 4364, 41]], [[12809, 12809], "disallowed_STD3_mapped", [40, 4366, 41]], [[12810, 12810], "disallowed_STD3_mapped", [40, 4367, 41]], [[12811, 12811], "disallowed_STD3_mapped", [40, 4368, 41]], [[12812, 12812], "disallowed_STD3_mapped", [40, 4369, 41]], [[12813, 12813], "disallowed_STD3_mapped", [40, 4370, 41]], [[12814, 12814], "disallowed_STD3_mapped", [40, 44032, 41]], [[12815, 12815], "disallowed_STD3_mapped", [40, 45208, 41]], [[12816, 12816], "disallowed_STD3_mapped", [40, 45796, 41]], [[12817, 12817], "disallowed_STD3_mapped", [40, 46972, 41]], [[12818, 12818], "disallowed_STD3_mapped", [40, 47560, 41]], [[12819, 12819], "disallowed_STD3_mapped", [40, 48148, 41]], [[12820, 12820], "disallowed_STD3_mapped", [40, 49324, 41]], [[12821, 12821], "disallowed_STD3_mapped", [40, 50500, 41]], [[12822, 12822], "disallowed_STD3_mapped", [40, 51088, 41]], [[12823, 12823], "disallowed_STD3_mapped", [40, 52264, 41]], [[12824, 12824], "disallowed_STD3_mapped", [40, 52852, 41]], [[12825, 12825], "disallowed_STD3_mapped", [40, 53440, 41]], [[12826, 12826], "disallowed_STD3_mapped", [40, 54028, 41]], [[12827, 12827], "disallowed_STD3_mapped", [40, 54616, 41]], [[12828, 12828], "disallowed_STD3_mapped", [40, 51452, 41]], [[12829, 12829], "disallowed_STD3_mapped", [40, 50724, 51204, 41]], [[12830, 12830], "disallowed_STD3_mapped", [40, 50724, 54980, 41]], [[12831, 12831], "disallowed"], [[12832, 12832], "disallowed_STD3_mapped", [40, 19968, 41]], [[12833, 12833], "disallowed_STD3_mapped", [40, 20108, 41]], [[12834, 12834], "disallowed_STD3_mapped", [40, 19977, 41]], [[12835, 12835], "disallowed_STD3_mapped", [40, 22235, 41]], [[12836, 12836], "disallowed_STD3_mapped", [40, 20116, 41]], [[12837, 12837], "disallowed_STD3_mapped", [40, 20845, 41]], [[12838, 12838], "disallowed_STD3_mapped", [40, 19971, 41]], [[12839, 12839], "disallowed_STD3_mapped", [40, 20843, 41]], [[12840, 12840], "disallowed_STD3_mapped", [40, 20061, 41]], [[12841, 12841], "disallowed_STD3_mapped", [40, 21313, 41]], [[12842, 12842], "disallowed_STD3_mapped", [40, 26376, 41]], [[12843, 12843], "disallowed_STD3_mapped", [40, 28779, 41]], [[12844, 12844], "disallowed_STD3_mapped", [40, 27700, 41]], [[12845, 12845], "disallowed_STD3_mapped", [40, 26408, 41]], [[12846, 12846], "disallowed_STD3_mapped", [40, 37329, 41]], [[12847, 12847], "disallowed_STD3_mapped", [40, 22303, 41]], [[12848, 12848], "disallowed_STD3_mapped", [40, 26085, 41]], [[12849, 12849], "disallowed_STD3_mapped", [40, 26666, 41]], [[12850, 12850], "disallowed_STD3_mapped", [40, 26377, 41]], [[12851, 12851], "disallowed_STD3_mapped", [40, 31038, 41]], [[12852, 12852], "disallowed_STD3_mapped", [40, 21517, 41]], [[12853, 12853], "disallowed_STD3_mapped", [40, 29305, 41]], [[12854, 12854], "disallowed_STD3_mapped", [40, 36001, 41]], [[12855, 12855], "disallowed_STD3_mapped", [40, 31069, 41]], [[12856, 12856], "disallowed_STD3_mapped", [40, 21172, 41]], [[12857, 12857], "disallowed_STD3_mapped", [40, 20195, 41]], [[12858, 12858], "disallowed_STD3_mapped", [40, 21628, 41]], [[12859, 12859], "disallowed_STD3_mapped", [40, 23398, 41]], [[12860, 12860], "disallowed_STD3_mapped", [40, 30435, 41]], [[12861, 12861], "disallowed_STD3_mapped", [40, 20225, 41]], [[12862, 12862], "disallowed_STD3_mapped", [40, 36039, 41]], [[12863, 12863], "disallowed_STD3_mapped", [40, 21332, 41]], [[12864, 12864], "disallowed_STD3_mapped", [40, 31085, 41]], [[12865, 12865], "disallowed_STD3_mapped", [40, 20241, 41]], [[12866, 12866], "disallowed_STD3_mapped", [40, 33258, 41]], [[12867, 12867], "disallowed_STD3_mapped", [40, 33267, 41]], [[12868, 12868], "mapped", [21839]], [[12869, 12869], "mapped", [24188]], [[12870, 12870], "mapped", [25991]], [[12871, 12871], "mapped", [31631]], [[12872, 12879], "valid", [], "NV8"], [[12880, 12880], "mapped", [112, 116, 101]], [[12881, 12881], "mapped", [50, 49]], [[12882, 12882], "mapped", [50, 50]], [[12883, 12883], "mapped", [50, 51]], [[12884, 12884], "mapped", [50, 52]], [[12885, 12885], "mapped", [50, 53]], [[12886, 12886], "mapped", [50, 54]], [[12887, 12887], "mapped", [50, 55]], [[12888, 12888], "mapped", [50, 56]], [[12889, 12889], "mapped", [50, 57]], [[12890, 12890], "mapped", [51, 48]], [[12891, 12891], "mapped", [51, 49]], [[12892, 12892], "mapped", [51, 50]], [[12893, 12893], "mapped", [51, 51]], [[12894, 12894], "mapped", [51, 52]], [[12895, 12895], "mapped", [51, 53]], [[12896, 12896], "mapped", [4352]], [[12897, 12897], "mapped", [4354]], [[12898, 12898], "mapped", [4355]], [[12899, 12899], "mapped", [4357]], [[12900, 12900], "mapped", [4358]], [[12901, 12901], "mapped", [4359]], [[12902, 12902], "mapped", [4361]], [[12903, 12903], "mapped", [4363]], [[12904, 12904], "mapped", [4364]], [[12905, 12905], "mapped", [4366]], [[12906, 12906], "mapped", [4367]], [[12907, 12907], "mapped", [4368]], [[12908, 12908], "mapped", [4369]], [[12909, 12909], "mapped", [4370]], [[12910, 12910], "mapped", [44032]], [[12911, 12911], "mapped", [45208]], [[12912, 12912], "mapped", [45796]], [[12913, 12913], "mapped", [46972]], [[12914, 12914], "mapped", [47560]], [[12915, 12915], "mapped", [48148]], [[12916, 12916], "mapped", [49324]], [[12917, 12917], "mapped", [50500]], [[12918, 12918], "mapped", [51088]], [[12919, 12919], "mapped", [52264]], [[12920, 12920], "mapped", [52852]], [[12921, 12921], "mapped", [53440]], [[12922, 12922], "mapped", [54028]], [[12923, 12923], "mapped", [54616]], [[12924, 12924], "mapped", [52280, 44256]], [[12925, 12925], "mapped", [51452, 51032]], [[12926, 12926], "mapped", [50864]], [[12927, 12927], "valid", [], "NV8"], [[12928, 12928], "mapped", [19968]], [[12929, 12929], "mapped", [20108]], [[12930, 12930], "mapped", [19977]], [[12931, 12931], "mapped", [22235]], [[12932, 12932], "mapped", [20116]], [[12933, 12933], "mapped", [20845]], [[12934, 12934], "mapped", [19971]], [[12935, 12935], "mapped", [20843]], [[12936, 12936], "mapped", [20061]], [[12937, 12937], "mapped", [21313]], [[12938, 12938], "mapped", [26376]], [[12939, 12939], "mapped", [28779]], [[12940, 12940], "mapped", [27700]], [[12941, 12941], "mapped", [26408]], [[12942, 12942], "mapped", [37329]], [[12943, 12943], "mapped", [22303]], [[12944, 12944], "mapped", [26085]], [[12945, 12945], "mapped", [26666]], [[12946, 12946], "mapped", [26377]], [[12947, 12947], "mapped", [31038]], [[12948, 12948], "mapped", [21517]], [[12949, 12949], "mapped", [29305]], [[12950, 12950], "mapped", [36001]], [[12951, 12951], "mapped", [31069]], [[12952, 12952], "mapped", [21172]], [[12953, 12953], "mapped", [31192]], [[12954, 12954], "mapped", [30007]], [[12955, 12955], "mapped", [22899]], [[12956, 12956], "mapped", [36969]], [[12957, 12957], "mapped", [20778]], [[12958, 12958], "mapped", [21360]], [[12959, 12959], "mapped", [27880]], [[12960, 12960], "mapped", [38917]], [[12961, 12961], "mapped", [20241]], [[12962, 12962], "mapped", [20889]], [[12963, 12963], "mapped", [27491]], [[12964, 12964], "mapped", [19978]], [[12965, 12965], "mapped", [20013]], [[12966, 12966], "mapped", [19979]], [[12967, 12967], "mapped", [24038]], [[12968, 12968], "mapped", [21491]], [[12969, 12969], "mapped", [21307]], [[12970, 12970], "mapped", [23447]], [[12971, 12971], "mapped", [23398]], [[12972, 12972], "mapped", [30435]], [[12973, 12973], "mapped", [20225]], [[12974, 12974], "mapped", [36039]], [[12975, 12975], "mapped", [21332]], [[12976, 12976], "mapped", [22812]], [[12977, 12977], "mapped", [51, 54]], [[12978, 12978], "mapped", [51, 55]], [[12979, 12979], "mapped", [51, 56]], [[12980, 12980], "mapped", [51, 57]], [[12981, 12981], "mapped", [52, 48]], [[12982, 12982], "mapped", [52, 49]], [[12983, 12983], "mapped", [52, 50]], [[12984, 12984], "mapped", [52, 51]], [[12985, 12985], "mapped", [52, 52]], [[12986, 12986], "mapped", [52, 53]], [[12987, 12987], "mapped", [52, 54]], [[12988, 12988], "mapped", [52, 55]], [[12989, 12989], "mapped", [52, 56]], [[12990, 12990], "mapped", [52, 57]], [[12991, 12991], "mapped", [53, 48]], [[12992, 12992], "mapped", [49, 26376]], [[12993, 12993], "mapped", [50, 26376]], [[12994, 12994], "mapped", [51, 26376]], [[12995, 12995], "mapped", [52, 26376]], [[12996, 12996], "mapped", [53, 26376]], [[12997, 12997], "mapped", [54, 26376]], [[12998, 12998], "mapped", [55, 26376]], [[12999, 12999], "mapped", [56, 26376]], [[13e3, 13e3], "mapped", [57, 26376]], [[13001, 13001], "mapped", [49, 48, 26376]], [[13002, 13002], "mapped", [49, 49, 26376]], [[13003, 13003], "mapped", [49, 50, 26376]], [[13004, 13004], "mapped", [104, 103]], [[13005, 13005], "mapped", [101, 114, 103]], [[13006, 13006], "mapped", [101, 118]], [[13007, 13007], "mapped", [108, 116, 100]], [[13008, 13008], "mapped", [12450]], [[13009, 13009], "mapped", [12452]], [[13010, 13010], "mapped", [12454]], [[13011, 13011], "mapped", [12456]], [[13012, 13012], "mapped", [12458]], [[13013, 13013], "mapped", [12459]], [[13014, 13014], "mapped", [12461]], [[13015, 13015], "mapped", [12463]], [[13016, 13016], "mapped", [12465]], [[13017, 13017], "mapped", [12467]], [[13018, 13018], "mapped", [12469]], [[13019, 13019], "mapped", [12471]], [[13020, 13020], "mapped", [12473]], [[13021, 13021], "mapped", [12475]], [[13022, 13022], "mapped", [12477]], [[13023, 13023], "mapped", [12479]], [[13024, 13024], "mapped", [12481]], [[13025, 13025], "mapped", [12484]], [[13026, 13026], "mapped", [12486]], [[13027, 13027], "mapped", [12488]], [[13028, 13028], "mapped", [12490]], [[13029, 13029], "mapped", [12491]], [[13030, 13030], "mapped", [12492]], [[13031, 13031], "mapped", [12493]], [[13032, 13032], "mapped", [12494]], [[13033, 13033], "mapped", [12495]], [[13034, 13034], "mapped", [12498]], [[13035, 13035], "mapped", [12501]], [[13036, 13036], "mapped", [12504]], [[13037, 13037], "mapped", [12507]], [[13038, 13038], "mapped", [12510]], [[13039, 13039], "mapped", [12511]], [[13040, 13040], "mapped", [12512]], [[13041, 13041], "mapped", [12513]], [[13042, 13042], "mapped", [12514]], [[13043, 13043], "mapped", [12516]], [[13044, 13044], "mapped", [12518]], [[13045, 13045], "mapped", [12520]], [[13046, 13046], "mapped", [12521]], [[13047, 13047], "mapped", [12522]], [[13048, 13048], "mapped", [12523]], [[13049, 13049], "mapped", [12524]], [[13050, 13050], "mapped", [12525]], [[13051, 13051], "mapped", [12527]], [[13052, 13052], "mapped", [12528]], [[13053, 13053], "mapped", [12529]], [[13054, 13054], "mapped", [12530]], [[13055, 13055], "disallowed"], [[13056, 13056], "mapped", [12450, 12497, 12540, 12488]], [[13057, 13057], "mapped", [12450, 12523, 12501, 12449]], [[13058, 13058], "mapped", [12450, 12531, 12506, 12450]], [[13059, 13059], "mapped", [12450, 12540, 12523]], [[13060, 13060], "mapped", [12452, 12491, 12531, 12464]], [[13061, 13061], "mapped", [12452, 12531, 12481]], [[13062, 13062], "mapped", [12454, 12457, 12531]], [[13063, 13063], "mapped", [12456, 12473, 12463, 12540, 12489]], [[13064, 13064], "mapped", [12456, 12540, 12459, 12540]], [[13065, 13065], "mapped", [12458, 12531, 12473]], [[13066, 13066], "mapped", [12458, 12540, 12512]], [[13067, 13067], "mapped", [12459, 12452, 12522]], [[13068, 13068], "mapped", [12459, 12521, 12483, 12488]], [[13069, 13069], "mapped", [12459, 12525, 12522, 12540]], [[13070, 13070], "mapped", [12460, 12525, 12531]], [[13071, 13071], "mapped", [12460, 12531, 12510]], [[13072, 13072], "mapped", [12462, 12460]], [[13073, 13073], "mapped", [12462, 12491, 12540]], [[13074, 13074], "mapped", [12461, 12517, 12522, 12540]], [[13075, 13075], "mapped", [12462, 12523, 12480, 12540]], [[13076, 13076], "mapped", [12461, 12525]], [[13077, 13077], "mapped", [12461, 12525, 12464, 12521, 12512]], [[13078, 13078], "mapped", [12461, 12525, 12513, 12540, 12488, 12523]], [[13079, 13079], "mapped", [12461, 12525, 12527, 12483, 12488]], [[13080, 13080], "mapped", [12464, 12521, 12512]], [[13081, 13081], "mapped", [12464, 12521, 12512, 12488, 12531]], [[13082, 13082], "mapped", [12463, 12523, 12476, 12452, 12525]], [[13083, 13083], "mapped", [12463, 12525, 12540, 12493]], [[13084, 13084], "mapped", [12465, 12540, 12473]], [[13085, 13085], "mapped", [12467, 12523, 12490]], [[13086, 13086], "mapped", [12467, 12540, 12509]], [[13087, 13087], "mapped", [12469, 12452, 12463, 12523]], [[13088, 13088], "mapped", [12469, 12531, 12481, 12540, 12512]], [[13089, 13089], "mapped", [12471, 12522, 12531, 12464]], [[13090, 13090], "mapped", [12475, 12531, 12481]], [[13091, 13091], "mapped", [12475, 12531, 12488]], [[13092, 13092], "mapped", [12480, 12540, 12473]], [[13093, 13093], "mapped", [12487, 12471]], [[13094, 13094], "mapped", [12489, 12523]], [[13095, 13095], "mapped", [12488, 12531]], [[13096, 13096], "mapped", [12490, 12494]], [[13097, 13097], "mapped", [12494, 12483, 12488]], [[13098, 13098], "mapped", [12495, 12452, 12484]], [[13099, 13099], "mapped", [12497, 12540, 12475, 12531, 12488]], [[13100, 13100], "mapped", [12497, 12540, 12484]], [[13101, 13101], "mapped", [12496, 12540, 12524, 12523]], [[13102, 13102], "mapped", [12500, 12450, 12473, 12488, 12523]], [[13103, 13103], "mapped", [12500, 12463, 12523]], [[13104, 13104], "mapped", [12500, 12467]], [[13105, 13105], "mapped", [12499, 12523]], [[13106, 13106], "mapped", [12501, 12449, 12521, 12483, 12489]], [[13107, 13107], "mapped", [12501, 12451, 12540, 12488]], [[13108, 13108], "mapped", [12502, 12483, 12471, 12455, 12523]], [[13109, 13109], "mapped", [12501, 12521, 12531]], [[13110, 13110], "mapped", [12504, 12463, 12479, 12540, 12523]], [[13111, 13111], "mapped", [12506, 12477]], [[13112, 13112], "mapped", [12506, 12491, 12498]], [[13113, 13113], "mapped", [12504, 12523, 12484]], [[13114, 13114], "mapped", [12506, 12531, 12473]], [[13115, 13115], "mapped", [12506, 12540, 12472]], [[13116, 13116], "mapped", [12505, 12540, 12479]], [[13117, 13117], "mapped", [12509, 12452, 12531, 12488]], [[13118, 13118], "mapped", [12508, 12523, 12488]], [[13119, 13119], "mapped", [12507, 12531]], [[13120, 13120], "mapped", [12509, 12531, 12489]], [[13121, 13121], "mapped", [12507, 12540, 12523]], [[13122, 13122], "mapped", [12507, 12540, 12531]], [[13123, 13123], "mapped", [12510, 12452, 12463, 12525]], [[13124, 13124], "mapped", [12510, 12452, 12523]], [[13125, 13125], "mapped", [12510, 12483, 12495]], [[13126, 13126], "mapped", [12510, 12523, 12463]], [[13127, 13127], "mapped", [12510, 12531, 12471, 12519, 12531]], [[13128, 13128], "mapped", [12511, 12463, 12525, 12531]], [[13129, 13129], "mapped", [12511, 12522]], [[13130, 13130], "mapped", [12511, 12522, 12496, 12540, 12523]], [[13131, 13131], "mapped", [12513, 12460]], [[13132, 13132], "mapped", [12513, 12460, 12488, 12531]], [[13133, 13133], "mapped", [12513, 12540, 12488, 12523]], [[13134, 13134], "mapped", [12516, 12540, 12489]], [[13135, 13135], "mapped", [12516, 12540, 12523]], [[13136, 13136], "mapped", [12518, 12450, 12531]], [[13137, 13137], "mapped", [12522, 12483, 12488, 12523]], [[13138, 13138], "mapped", [12522, 12521]], [[13139, 13139], "mapped", [12523, 12500, 12540]], [[13140, 13140], "mapped", [12523, 12540, 12502, 12523]], [[13141, 13141], "mapped", [12524, 12512]], [[13142, 13142], "mapped", [12524, 12531, 12488, 12466, 12531]], [[13143, 13143], "mapped", [12527, 12483, 12488]], [[13144, 13144], "mapped", [48, 28857]], [[13145, 13145], "mapped", [49, 28857]], [[13146, 13146], "mapped", [50, 28857]], [[13147, 13147], "mapped", [51, 28857]], [[13148, 13148], "mapped", [52, 28857]], [[13149, 13149], "mapped", [53, 28857]], [[13150, 13150], "mapped", [54, 28857]], [[13151, 13151], "mapped", [55, 28857]], [[13152, 13152], "mapped", [56, 28857]], [[13153, 13153], "mapped", [57, 28857]], [[13154, 13154], "mapped", [49, 48, 28857]], [[13155, 13155], "mapped", [49, 49, 28857]], [[13156, 13156], "mapped", [49, 50, 28857]], [[13157, 13157], "mapped", [49, 51, 28857]], [[13158, 13158], "mapped", [49, 52, 28857]], [[13159, 13159], "mapped", [49, 53, 28857]], [[13160, 13160], "mapped", [49, 54, 28857]], [[13161, 13161], "mapped", [49, 55, 28857]], [[13162, 13162], "mapped", [49, 56, 28857]], [[13163, 13163], "mapped", [49, 57, 28857]], [[13164, 13164], "mapped", [50, 48, 28857]], [[13165, 13165], "mapped", [50, 49, 28857]], [[13166, 13166], "mapped", [50, 50, 28857]], [[13167, 13167], "mapped", [50, 51, 28857]], [[13168, 13168], "mapped", [50, 52, 28857]], [[13169, 13169], "mapped", [104, 112, 97]], [[13170, 13170], "mapped", [100, 97]], [[13171, 13171], "mapped", [97, 117]], [[13172, 13172], "mapped", [98, 97, 114]], [[13173, 13173], "mapped", [111, 118]], [[13174, 13174], "mapped", [112, 99]], [[13175, 13175], "mapped", [100, 109]], [[13176, 13176], "mapped", [100, 109, 50]], [[13177, 13177], "mapped", [100, 109, 51]], [[13178, 13178], "mapped", [105, 117]], [[13179, 13179], "mapped", [24179, 25104]], [[13180, 13180], "mapped", [26157, 21644]], [[13181, 13181], "mapped", [22823, 27491]], [[13182, 13182], "mapped", [26126, 27835]], [[13183, 13183], "mapped", [26666, 24335, 20250, 31038]], [[13184, 13184], "mapped", [112, 97]], [[13185, 13185], "mapped", [110, 97]], [[13186, 13186], "mapped", [956, 97]], [[13187, 13187], "mapped", [109, 97]], [[13188, 13188], "mapped", [107, 97]], [[13189, 13189], "mapped", [107, 98]], [[13190, 13190], "mapped", [109, 98]], [[13191, 13191], "mapped", [103, 98]], [[13192, 13192], "mapped", [99, 97, 108]], [[13193, 13193], "mapped", [107, 99, 97, 108]], [[13194, 13194], "mapped", [112, 102]], [[13195, 13195], "mapped", [110, 102]], [[13196, 13196], "mapped", [956, 102]], [[13197, 13197], "mapped", [956, 103]], [[13198, 13198], "mapped", [109, 103]], [[13199, 13199], "mapped", [107, 103]], [[13200, 13200], "mapped", [104, 122]], [[13201, 13201], "mapped", [107, 104, 122]], [[13202, 13202], "mapped", [109, 104, 122]], [[13203, 13203], "mapped", [103, 104, 122]], [[13204, 13204], "mapped", [116, 104, 122]], [[13205, 13205], "mapped", [956, 108]], [[13206, 13206], "mapped", [109, 108]], [[13207, 13207], "mapped", [100, 108]], [[13208, 13208], "mapped", [107, 108]], [[13209, 13209], "mapped", [102, 109]], [[13210, 13210], "mapped", [110, 109]], [[13211, 13211], "mapped", [956, 109]], [[13212, 13212], "mapped", [109, 109]], [[13213, 13213], "mapped", [99, 109]], [[13214, 13214], "mapped", [107, 109]], [[13215, 13215], "mapped", [109, 109, 50]], [[13216, 13216], "mapped", [99, 109, 50]], [[13217, 13217], "mapped", [109, 50]], [[13218, 13218], "mapped", [107, 109, 50]], [[13219, 13219], "mapped", [109, 109, 51]], [[13220, 13220], "mapped", [99, 109, 51]], [[13221, 13221], "mapped", [109, 51]], [[13222, 13222], "mapped", [107, 109, 51]], [[13223, 13223], "mapped", [109, 8725, 115]], [[13224, 13224], "mapped", [109, 8725, 115, 50]], [[13225, 13225], "mapped", [112, 97]], [[13226, 13226], "mapped", [107, 112, 97]], [[13227, 13227], "mapped", [109, 112, 97]], [[13228, 13228], "mapped", [103, 112, 97]], [[13229, 13229], "mapped", [114, 97, 100]], [[13230, 13230], "mapped", [114, 97, 100, 8725, 115]], [[13231, 13231], "mapped", [114, 97, 100, 8725, 115, 50]], [[13232, 13232], "mapped", [112, 115]], [[13233, 13233], "mapped", [110, 115]], [[13234, 13234], "mapped", [956, 115]], [[13235, 13235], "mapped", [109, 115]], [[13236, 13236], "mapped", [112, 118]], [[13237, 13237], "mapped", [110, 118]], [[13238, 13238], "mapped", [956, 118]], [[13239, 13239], "mapped", [109, 118]], [[13240, 13240], "mapped", [107, 118]], [[13241, 13241], "mapped", [109, 118]], [[13242, 13242], "mapped", [112, 119]], [[13243, 13243], "mapped", [110, 119]], [[13244, 13244], "mapped", [956, 119]], [[13245, 13245], "mapped", [109, 119]], [[13246, 13246], "mapped", [107, 119]], [[13247, 13247], "mapped", [109, 119]], [[13248, 13248], "mapped", [107, 969]], [[13249, 13249], "mapped", [109, 969]], [[13250, 13250], "disallowed"], [[13251, 13251], "mapped", [98, 113]], [[13252, 13252], "mapped", [99, 99]], [[13253, 13253], "mapped", [99, 100]], [[13254, 13254], "mapped", [99, 8725, 107, 103]], [[13255, 13255], "disallowed"], [[13256, 13256], "mapped", [100, 98]], [[13257, 13257], "mapped", [103, 121]], [[13258, 13258], "mapped", [104, 97]], [[13259, 13259], "mapped", [104, 112]], [[13260, 13260], "mapped", [105, 110]], [[13261, 13261], "mapped", [107, 107]], [[13262, 13262], "mapped", [107, 109]], [[13263, 13263], "mapped", [107, 116]], [[13264, 13264], "mapped", [108, 109]], [[13265, 13265], "mapped", [108, 110]], [[13266, 13266], "mapped", [108, 111, 103]], [[13267, 13267], "mapped", [108, 120]], [[13268, 13268], "mapped", [109, 98]], [[13269, 13269], "mapped", [109, 105, 108]], [[13270, 13270], "mapped", [109, 111, 108]], [[13271, 13271], "mapped", [112, 104]], [[13272, 13272], "disallowed"], [[13273, 13273], "mapped", [112, 112, 109]], [[13274, 13274], "mapped", [112, 114]], [[13275, 13275], "mapped", [115, 114]], [[13276, 13276], "mapped", [115, 118]], [[13277, 13277], "mapped", [119, 98]], [[13278, 13278], "mapped", [118, 8725, 109]], [[13279, 13279], "mapped", [97, 8725, 109]], [[13280, 13280], "mapped", [49, 26085]], [[13281, 13281], "mapped", [50, 26085]], [[13282, 13282], "mapped", [51, 26085]], [[13283, 13283], "mapped", [52, 26085]], [[13284, 13284], "mapped", [53, 26085]], [[13285, 13285], "mapped", [54, 26085]], [[13286, 13286], "mapped", [55, 26085]], [[13287, 13287], "mapped", [56, 26085]], [[13288, 13288], "mapped", [57, 26085]], [[13289, 13289], "mapped", [49, 48, 26085]], [[13290, 13290], "mapped", [49, 49, 26085]], [[13291, 13291], "mapped", [49, 50, 26085]], [[13292, 13292], "mapped", [49, 51, 26085]], [[13293, 13293], "mapped", [49, 52, 26085]], [[13294, 13294], "mapped", [49, 53, 26085]], [[13295, 13295], "mapped", [49, 54, 26085]], [[13296, 13296], "mapped", [49, 55, 26085]], [[13297, 13297], "mapped", [49, 56, 26085]], [[13298, 13298], "mapped", [49, 57, 26085]], [[13299, 13299], "mapped", [50, 48, 26085]], [[13300, 13300], "mapped", [50, 49, 26085]], [[13301, 13301], "mapped", [50, 50, 26085]], [[13302, 13302], "mapped", [50, 51, 26085]], [[13303, 13303], "mapped", [50, 52, 26085]], [[13304, 13304], "mapped", [50, 53, 26085]], [[13305, 13305], "mapped", [50, 54, 26085]], [[13306, 13306], "mapped", [50, 55, 26085]], [[13307, 13307], "mapped", [50, 56, 26085]], [[13308, 13308], "mapped", [50, 57, 26085]], [[13309, 13309], "mapped", [51, 48, 26085]], [[13310, 13310], "mapped", [51, 49, 26085]], [[13311, 13311], "mapped", [103, 97, 108]], [[13312, 19893], "valid"], [[19894, 19903], "disallowed"], [[19904, 19967], "valid", [], "NV8"], [[19968, 40869], "valid"], [[40870, 40891], "valid"], [[40892, 40899], "valid"], [[40900, 40907], "valid"], [[40908, 40908], "valid"], [[40909, 40917], "valid"], [[40918, 40959], "disallowed"], [[40960, 42124], "valid"], [[42125, 42127], "disallowed"], [[42128, 42145], "valid", [], "NV8"], [[42146, 42147], "valid", [], "NV8"], [[42148, 42163], "valid", [], "NV8"], [[42164, 42164], "valid", [], "NV8"], [[42165, 42176], "valid", [], "NV8"], [[42177, 42177], "valid", [], "NV8"], [[42178, 42180], "valid", [], "NV8"], [[42181, 42181], "valid", [], "NV8"], [[42182, 42182], "valid", [], "NV8"], [[42183, 42191], "disallowed"], [[42192, 42237], "valid"], [[42238, 42239], "valid", [], "NV8"], [[42240, 42508], "valid"], [[42509, 42511], "valid", [], "NV8"], [[42512, 42539], "valid"], [[42540, 42559], "disallowed"], [[42560, 42560], "mapped", [42561]], [[42561, 42561], "valid"], [[42562, 42562], "mapped", [42563]], [[42563, 42563], "valid"], [[42564, 42564], "mapped", [42565]], [[42565, 42565], "valid"], [[42566, 42566], "mapped", [42567]], [[42567, 42567], "valid"], [[42568, 42568], "mapped", [42569]], [[42569, 42569], "valid"], [[42570, 42570], "mapped", [42571]], [[42571, 42571], "valid"], [[42572, 42572], "mapped", [42573]], [[42573, 42573], "valid"], [[42574, 42574], "mapped", [42575]], [[42575, 42575], "valid"], [[42576, 42576], "mapped", [42577]], [[42577, 42577], "valid"], [[42578, 42578], "mapped", [42579]], [[42579, 42579], "valid"], [[42580, 42580], "mapped", [42581]], [[42581, 42581], "valid"], [[42582, 42582], "mapped", [42583]], [[42583, 42583], "valid"], [[42584, 42584], "mapped", [42585]], [[42585, 42585], "valid"], [[42586, 42586], "mapped", [42587]], [[42587, 42587], "valid"], [[42588, 42588], "mapped", [42589]], [[42589, 42589], "valid"], [[42590, 42590], "mapped", [42591]], [[42591, 42591], "valid"], [[42592, 42592], "mapped", [42593]], [[42593, 42593], "valid"], [[42594, 42594], "mapped", [42595]], [[42595, 42595], "valid"], [[42596, 42596], "mapped", [42597]], [[42597, 42597], "valid"], [[42598, 42598], "mapped", [42599]], [[42599, 42599], "valid"], [[42600, 42600], "mapped", [42601]], [[42601, 42601], "valid"], [[42602, 42602], "mapped", [42603]], [[42603, 42603], "valid"], [[42604, 42604], "mapped", [42605]], [[42605, 42607], "valid"], [[42608, 42611], "valid", [], "NV8"], [[42612, 42619], "valid"], [[42620, 42621], "valid"], [[42622, 42622], "valid", [], "NV8"], [[42623, 42623], "valid"], [[42624, 42624], "mapped", [42625]], [[42625, 42625], "valid"], [[42626, 42626], "mapped", [42627]], [[42627, 42627], "valid"], [[42628, 42628], "mapped", [42629]], [[42629, 42629], "valid"], [[42630, 42630], "mapped", [42631]], [[42631, 42631], "valid"], [[42632, 42632], "mapped", [42633]], [[42633, 42633], "valid"], [[42634, 42634], "mapped", [42635]], [[42635, 42635], "valid"], [[42636, 42636], "mapped", [42637]], [[42637, 42637], "valid"], [[42638, 42638], "mapped", [42639]], [[42639, 42639], "valid"], [[42640, 42640], "mapped", [42641]], [[42641, 42641], "valid"], [[42642, 42642], "mapped", [42643]], [[42643, 42643], "valid"], [[42644, 42644], "mapped", [42645]], [[42645, 42645], "valid"], [[42646, 42646], "mapped", [42647]], [[42647, 42647], "valid"], [[42648, 42648], "mapped", [42649]], [[42649, 42649], "valid"], [[42650, 42650], "mapped", [42651]], [[42651, 42651], "valid"], [[42652, 42652], "mapped", [1098]], [[42653, 42653], "mapped", [1100]], [[42654, 42654], "valid"], [[42655, 42655], "valid"], [[42656, 42725], "valid"], [[42726, 42735], "valid", [], "NV8"], [[42736, 42737], "valid"], [[42738, 42743], "valid", [], "NV8"], [[42744, 42751], "disallowed"], [[42752, 42774], "valid", [], "NV8"], [[42775, 42778], "valid"], [[42779, 42783], "valid"], [[42784, 42785], "valid", [], "NV8"], [[42786, 42786], "mapped", [42787]], [[42787, 42787], "valid"], [[42788, 42788], "mapped", [42789]], [[42789, 42789], "valid"], [[42790, 42790], "mapped", [42791]], [[42791, 42791], "valid"], [[42792, 42792], "mapped", [42793]], [[42793, 42793], "valid"], [[42794, 42794], "mapped", [42795]], [[42795, 42795], "valid"], [[42796, 42796], "mapped", [42797]], [[42797, 42797], "valid"], [[42798, 42798], "mapped", [42799]], [[42799, 42801], "valid"], [[42802, 42802], "mapped", [42803]], [[42803, 42803], "valid"], [[42804, 42804], "mapped", [42805]], [[42805, 42805], "valid"], [[42806, 42806], "mapped", [42807]], [[42807, 42807], "valid"], [[42808, 42808], "mapped", [42809]], [[42809, 42809], "valid"], [[42810, 42810], "mapped", [42811]], [[42811, 42811], "valid"], [[42812, 42812], "mapped", [42813]], [[42813, 42813], "valid"], [[42814, 42814], "mapped", [42815]], [[42815, 42815], "valid"], [[42816, 42816], "mapped", [42817]], [[42817, 42817], "valid"], [[42818, 42818], "mapped", [42819]], [[42819, 42819], "valid"], [[42820, 42820], "mapped", [42821]], [[42821, 42821], "valid"], [[42822, 42822], "mapped", [42823]], [[42823, 42823], "valid"], [[42824, 42824], "mapped", [42825]], [[42825, 42825], "valid"], [[42826, 42826], "mapped", [42827]], [[42827, 42827], "valid"], [[42828, 42828], "mapped", [42829]], [[42829, 42829], "valid"], [[42830, 42830], "mapped", [42831]], [[42831, 42831], "valid"], [[42832, 42832], "mapped", [42833]], [[42833, 42833], "valid"], [[42834, 42834], "mapped", [42835]], [[42835, 42835], "valid"], [[42836, 42836], "mapped", [42837]], [[42837, 42837], "valid"], [[42838, 42838], "mapped", [42839]], [[42839, 42839], "valid"], [[42840, 42840], "mapped", [42841]], [[42841, 42841], "valid"], [[42842, 42842], "mapped", [42843]], [[42843, 42843], "valid"], [[42844, 42844], "mapped", [42845]], [[42845, 42845], "valid"], [[42846, 42846], "mapped", [42847]], [[42847, 42847], "valid"], [[42848, 42848], "mapped", [42849]], [[42849, 42849], "valid"], [[42850, 42850], "mapped", [42851]], [[42851, 42851], "valid"], [[42852, 42852], "mapped", [42853]], [[42853, 42853], "valid"], [[42854, 42854], "mapped", [42855]], [[42855, 42855], "valid"], [[42856, 42856], "mapped", [42857]], [[42857, 42857], "valid"], [[42858, 42858], "mapped", [42859]], [[42859, 42859], "valid"], [[42860, 42860], "mapped", [42861]], [[42861, 42861], "valid"], [[42862, 42862], "mapped", [42863]], [[42863, 42863], "valid"], [[42864, 42864], "mapped", [42863]], [[42865, 42872], "valid"], [[42873, 42873], "mapped", [42874]], [[42874, 42874], "valid"], [[42875, 42875], "mapped", [42876]], [[42876, 42876], "valid"], [[42877, 42877], "mapped", [7545]], [[42878, 42878], "mapped", [42879]], [[42879, 42879], "valid"], [[42880, 42880], "mapped", [42881]], [[42881, 42881], "valid"], [[42882, 42882], "mapped", [42883]], [[42883, 42883], "valid"], [[42884, 42884], "mapped", [42885]], [[42885, 42885], "valid"], [[42886, 42886], "mapped", [42887]], [[42887, 42888], "valid"], [[42889, 42890], "valid", [], "NV8"], [[42891, 42891], "mapped", [42892]], [[42892, 42892], "valid"], [[42893, 42893], "mapped", [613]], [[42894, 42894], "valid"], [[42895, 42895], "valid"], [[42896, 42896], "mapped", [42897]], [[42897, 42897], "valid"], [[42898, 42898], "mapped", [42899]], [[42899, 42899], "valid"], [[42900, 42901], "valid"], [[42902, 42902], "mapped", [42903]], [[42903, 42903], "valid"], [[42904, 42904], "mapped", [42905]], [[42905, 42905], "valid"], [[42906, 42906], "mapped", [42907]], [[42907, 42907], "valid"], [[42908, 42908], "mapped", [42909]], [[42909, 42909], "valid"], [[42910, 42910], "mapped", [42911]], [[42911, 42911], "valid"], [[42912, 42912], "mapped", [42913]], [[42913, 42913], "valid"], [[42914, 42914], "mapped", [42915]], [[42915, 42915], "valid"], [[42916, 42916], "mapped", [42917]], [[42917, 42917], "valid"], [[42918, 42918], "mapped", [42919]], [[42919, 42919], "valid"], [[42920, 42920], "mapped", [42921]], [[42921, 42921], "valid"], [[42922, 42922], "mapped", [614]], [[42923, 42923], "mapped", [604]], [[42924, 42924], "mapped", [609]], [[42925, 42925], "mapped", [620]], [[42926, 42927], "disallowed"], [[42928, 42928], "mapped", [670]], [[42929, 42929], "mapped", [647]], [[42930, 42930], "mapped", [669]], [[42931, 42931], "mapped", [43859]], [[42932, 42932], "mapped", [42933]], [[42933, 42933], "valid"], [[42934, 42934], "mapped", [42935]], [[42935, 42935], "valid"], [[42936, 42998], "disallowed"], [[42999, 42999], "valid"], [[43e3, 43e3], "mapped", [295]], [[43001, 43001], "mapped", [339]], [[43002, 43002], "valid"], [[43003, 43007], "valid"], [[43008, 43047], "valid"], [[43048, 43051], "valid", [], "NV8"], [[43052, 43055], "disallowed"], [[43056, 43065], "valid", [], "NV8"], [[43066, 43071], "disallowed"], [[43072, 43123], "valid"], [[43124, 43127], "valid", [], "NV8"], [[43128, 43135], "disallowed"], [[43136, 43204], "valid"], [[43205, 43213], "disallowed"], [[43214, 43215], "valid", [], "NV8"], [[43216, 43225], "valid"], [[43226, 43231], "disallowed"], [[43232, 43255], "valid"], [[43256, 43258], "valid", [], "NV8"], [[43259, 43259], "valid"], [[43260, 43260], "valid", [], "NV8"], [[43261, 43261], "valid"], [[43262, 43263], "disallowed"], [[43264, 43309], "valid"], [[43310, 43311], "valid", [], "NV8"], [[43312, 43347], "valid"], [[43348, 43358], "disallowed"], [[43359, 43359], "valid", [], "NV8"], [[43360, 43388], "valid", [], "NV8"], [[43389, 43391], "disallowed"], [[43392, 43456], "valid"], [[43457, 43469], "valid", [], "NV8"], [[43470, 43470], "disallowed"], [[43471, 43481], "valid"], [[43482, 43485], "disallowed"], [[43486, 43487], "valid", [], "NV8"], [[43488, 43518], "valid"], [[43519, 43519], "disallowed"], [[43520, 43574], "valid"], [[43575, 43583], "disallowed"], [[43584, 43597], "valid"], [[43598, 43599], "disallowed"], [[43600, 43609], "valid"], [[43610, 43611], "disallowed"], [[43612, 43615], "valid", [], "NV8"], [[43616, 43638], "valid"], [[43639, 43641], "valid", [], "NV8"], [[43642, 43643], "valid"], [[43644, 43647], "valid"], [[43648, 43714], "valid"], [[43715, 43738], "disallowed"], [[43739, 43741], "valid"], [[43742, 43743], "valid", [], "NV8"], [[43744, 43759], "valid"], [[43760, 43761], "valid", [], "NV8"], [[43762, 43766], "valid"], [[43767, 43776], "disallowed"], [[43777, 43782], "valid"], [[43783, 43784], "disallowed"], [[43785, 43790], "valid"], [[43791, 43792], "disallowed"], [[43793, 43798], "valid"], [[43799, 43807], "disallowed"], [[43808, 43814], "valid"], [[43815, 43815], "disallowed"], [[43816, 43822], "valid"], [[43823, 43823], "disallowed"], [[43824, 43866], "valid"], [[43867, 43867], "valid", [], "NV8"], [[43868, 43868], "mapped", [42791]], [[43869, 43869], "mapped", [43831]], [[43870, 43870], "mapped", [619]], [[43871, 43871], "mapped", [43858]], [[43872, 43875], "valid"], [[43876, 43877], "valid"], [[43878, 43887], "disallowed"], [[43888, 43888], "mapped", [5024]], [[43889, 43889], "mapped", [5025]], [[43890, 43890], "mapped", [5026]], [[43891, 43891], "mapped", [5027]], [[43892, 43892], "mapped", [5028]], [[43893, 43893], "mapped", [5029]], [[43894, 43894], "mapped", [5030]], [[43895, 43895], "mapped", [5031]], [[43896, 43896], "mapped", [5032]], [[43897, 43897], "mapped", [5033]], [[43898, 43898], "mapped", [5034]], [[43899, 43899], "mapped", [5035]], [[43900, 43900], "mapped", [5036]], [[43901, 43901], "mapped", [5037]], [[43902, 43902], "mapped", [5038]], [[43903, 43903], "mapped", [5039]], [[43904, 43904], "mapped", [5040]], [[43905, 43905], "mapped", [5041]], [[43906, 43906], "mapped", [5042]], [[43907, 43907], "mapped", [5043]], [[43908, 43908], "mapped", [5044]], [[43909, 43909], "mapped", [5045]], [[43910, 43910], "mapped", [5046]], [[43911, 43911], "mapped", [5047]], [[43912, 43912], "mapped", [5048]], [[43913, 43913], "mapped", [5049]], [[43914, 43914], "mapped", [5050]], [[43915, 43915], "mapped", [5051]], [[43916, 43916], "mapped", [5052]], [[43917, 43917], "mapped", [5053]], [[43918, 43918], "mapped", [5054]], [[43919, 43919], "mapped", [5055]], [[43920, 43920], "mapped", [5056]], [[43921, 43921], "mapped", [5057]], [[43922, 43922], "mapped", [5058]], [[43923, 43923], "mapped", [5059]], [[43924, 43924], "mapped", [5060]], [[43925, 43925], "mapped", [5061]], [[43926, 43926], "mapped", [5062]], [[43927, 43927], "mapped", [5063]], [[43928, 43928], "mapped", [5064]], [[43929, 43929], "mapped", [5065]], [[43930, 43930], "mapped", [5066]], [[43931, 43931], "mapped", [5067]], [[43932, 43932], "mapped", [5068]], [[43933, 43933], "mapped", [5069]], [[43934, 43934], "mapped", [5070]], [[43935, 43935], "mapped", [5071]], [[43936, 43936], "mapped", [5072]], [[43937, 43937], "mapped", [5073]], [[43938, 43938], "mapped", [5074]], [[43939, 43939], "mapped", [5075]], [[43940, 43940], "mapped", [5076]], [[43941, 43941], "mapped", [5077]], [[43942, 43942], "mapped", [5078]], [[43943, 43943], "mapped", [5079]], [[43944, 43944], "mapped", [5080]], [[43945, 43945], "mapped", [5081]], [[43946, 43946], "mapped", [5082]], [[43947, 43947], "mapped", [5083]], [[43948, 43948], "mapped", [5084]], [[43949, 43949], "mapped", [5085]], [[43950, 43950], "mapped", [5086]], [[43951, 43951], "mapped", [5087]], [[43952, 43952], "mapped", [5088]], [[43953, 43953], "mapped", [5089]], [[43954, 43954], "mapped", [5090]], [[43955, 43955], "mapped", [5091]], [[43956, 43956], "mapped", [5092]], [[43957, 43957], "mapped", [5093]], [[43958, 43958], "mapped", [5094]], [[43959, 43959], "mapped", [5095]], [[43960, 43960], "mapped", [5096]], [[43961, 43961], "mapped", [5097]], [[43962, 43962], "mapped", [5098]], [[43963, 43963], "mapped", [5099]], [[43964, 43964], "mapped", [5100]], [[43965, 43965], "mapped", [5101]], [[43966, 43966], "mapped", [5102]], [[43967, 43967], "mapped", [5103]], [[43968, 44010], "valid"], [[44011, 44011], "valid", [], "NV8"], [[44012, 44013], "valid"], [[44014, 44015], "disallowed"], [[44016, 44025], "valid"], [[44026, 44031], "disallowed"], [[44032, 55203], "valid"], [[55204, 55215], "disallowed"], [[55216, 55238], "valid", [], "NV8"], [[55239, 55242], "disallowed"], [[55243, 55291], "valid", [], "NV8"], [[55292, 55295], "disallowed"], [[55296, 57343], "disallowed"], [[57344, 63743], "disallowed"], [[63744, 63744], "mapped", [35912]], [[63745, 63745], "mapped", [26356]], [[63746, 63746], "mapped", [36554]], [[63747, 63747], "mapped", [36040]], [[63748, 63748], "mapped", [28369]], [[63749, 63749], "mapped", [20018]], [[63750, 63750], "mapped", [21477]], [[63751, 63752], "mapped", [40860]], [[63753, 63753], "mapped", [22865]], [[63754, 63754], "mapped", [37329]], [[63755, 63755], "mapped", [21895]], [[63756, 63756], "mapped", [22856]], [[63757, 63757], "mapped", [25078]], [[63758, 63758], "mapped", [30313]], [[63759, 63759], "mapped", [32645]], [[63760, 63760], "mapped", [34367]], [[63761, 63761], "mapped", [34746]], [[63762, 63762], "mapped", [35064]], [[63763, 63763], "mapped", [37007]], [[63764, 63764], "mapped", [27138]], [[63765, 63765], "mapped", [27931]], [[63766, 63766], "mapped", [28889]], [[63767, 63767], "mapped", [29662]], [[63768, 63768], "mapped", [33853]], [[63769, 63769], "mapped", [37226]], [[63770, 63770], "mapped", [39409]], [[63771, 63771], "mapped", [20098]], [[63772, 63772], "mapped", [21365]], [[63773, 63773], "mapped", [27396]], [[63774, 63774], "mapped", [29211]], [[63775, 63775], "mapped", [34349]], [[63776, 63776], "mapped", [40478]], [[63777, 63777], "mapped", [23888]], [[63778, 63778], "mapped", [28651]], [[63779, 63779], "mapped", [34253]], [[63780, 63780], "mapped", [35172]], [[63781, 63781], "mapped", [25289]], [[63782, 63782], "mapped", [33240]], [[63783, 63783], "mapped", [34847]], [[63784, 63784], "mapped", [24266]], [[63785, 63785], "mapped", [26391]], [[63786, 63786], "mapped", [28010]], [[63787, 63787], "mapped", [29436]], [[63788, 63788], "mapped", [37070]], [[63789, 63789], "mapped", [20358]], [[63790, 63790], "mapped", [20919]], [[63791, 63791], "mapped", [21214]], [[63792, 63792], "mapped", [25796]], [[63793, 63793], "mapped", [27347]], [[63794, 63794], "mapped", [29200]], [[63795, 63795], "mapped", [30439]], [[63796, 63796], "mapped", [32769]], [[63797, 63797], "mapped", [34310]], [[63798, 63798], "mapped", [34396]], [[63799, 63799], "mapped", [36335]], [[63800, 63800], "mapped", [38706]], [[63801, 63801], "mapped", [39791]], [[63802, 63802], "mapped", [40442]], [[63803, 63803], "mapped", [30860]], [[63804, 63804], "mapped", [31103]], [[63805, 63805], "mapped", [32160]], [[63806, 63806], "mapped", [33737]], [[63807, 63807], "mapped", [37636]], [[63808, 63808], "mapped", [40575]], [[63809, 63809], "mapped", [35542]], [[63810, 63810], "mapped", [22751]], [[63811, 63811], "mapped", [24324]], [[63812, 63812], "mapped", [31840]], [[63813, 63813], "mapped", [32894]], [[63814, 63814], "mapped", [29282]], [[63815, 63815], "mapped", [30922]], [[63816, 63816], "mapped", [36034]], [[63817, 63817], "mapped", [38647]], [[63818, 63818], "mapped", [22744]], [[63819, 63819], "mapped", [23650]], [[63820, 63820], "mapped", [27155]], [[63821, 63821], "mapped", [28122]], [[63822, 63822], "mapped", [28431]], [[63823, 63823], "mapped", [32047]], [[63824, 63824], "mapped", [32311]], [[63825, 63825], "mapped", [38475]], [[63826, 63826], "mapped", [21202]], [[63827, 63827], "mapped", [32907]], [[63828, 63828], "mapped", [20956]], [[63829, 63829], "mapped", [20940]], [[63830, 63830], "mapped", [31260]], [[63831, 63831], "mapped", [32190]], [[63832, 63832], "mapped", [33777]], [[63833, 63833], "mapped", [38517]], [[63834, 63834], "mapped", [35712]], [[63835, 63835], "mapped", [25295]], [[63836, 63836], "mapped", [27138]], [[63837, 63837], "mapped", [35582]], [[63838, 63838], "mapped", [20025]], [[63839, 63839], "mapped", [23527]], [[63840, 63840], "mapped", [24594]], [[63841, 63841], "mapped", [29575]], [[63842, 63842], "mapped", [30064]], [[63843, 63843], "mapped", [21271]], [[63844, 63844], "mapped", [30971]], [[63845, 63845], "mapped", [20415]], [[63846, 63846], "mapped", [24489]], [[63847, 63847], "mapped", [19981]], [[63848, 63848], "mapped", [27852]], [[63849, 63849], "mapped", [25976]], [[63850, 63850], "mapped", [32034]], [[63851, 63851], "mapped", [21443]], [[63852, 63852], "mapped", [22622]], [[63853, 63853], "mapped", [30465]], [[63854, 63854], "mapped", [33865]], [[63855, 63855], "mapped", [35498]], [[63856, 63856], "mapped", [27578]], [[63857, 63857], "mapped", [36784]], [[63858, 63858], "mapped", [27784]], [[63859, 63859], "mapped", [25342]], [[63860, 63860], "mapped", [33509]], [[63861, 63861], "mapped", [25504]], [[63862, 63862], "mapped", [30053]], [[63863, 63863], "mapped", [20142]], [[63864, 63864], "mapped", [20841]], [[63865, 63865], "mapped", [20937]], [[63866, 63866], "mapped", [26753]], [[63867, 63867], "mapped", [31975]], [[63868, 63868], "mapped", [33391]], [[63869, 63869], "mapped", [35538]], [[63870, 63870], "mapped", [37327]], [[63871, 63871], "mapped", [21237]], [[63872, 63872], "mapped", [21570]], [[63873, 63873], "mapped", [22899]], [[63874, 63874], "mapped", [24300]], [[63875, 63875], "mapped", [26053]], [[63876, 63876], "mapped", [28670]], [[63877, 63877], "mapped", [31018]], [[63878, 63878], "mapped", [38317]], [[63879, 63879], "mapped", [39530]], [[63880, 63880], "mapped", [40599]], [[63881, 63881], "mapped", [40654]], [[63882, 63882], "mapped", [21147]], [[63883, 63883], "mapped", [26310]], [[63884, 63884], "mapped", [27511]], [[63885, 63885], "mapped", [36706]], [[63886, 63886], "mapped", [24180]], [[63887, 63887], "mapped", [24976]], [[63888, 63888], "mapped", [25088]], [[63889, 63889], "mapped", [25754]], [[63890, 63890], "mapped", [28451]], [[63891, 63891], "mapped", [29001]], [[63892, 63892], "mapped", [29833]], [[63893, 63893], "mapped", [31178]], [[63894, 63894], "mapped", [32244]], [[63895, 63895], "mapped", [32879]], [[63896, 63896], "mapped", [36646]], [[63897, 63897], "mapped", [34030]], [[63898, 63898], "mapped", [36899]], [[63899, 63899], "mapped", [37706]], [[63900, 63900], "mapped", [21015]], [[63901, 63901], "mapped", [21155]], [[63902, 63902], "mapped", [21693]], [[63903, 63903], "mapped", [28872]], [[63904, 63904], "mapped", [35010]], [[63905, 63905], "mapped", [35498]], [[63906, 63906], "mapped", [24265]], [[63907, 63907], "mapped", [24565]], [[63908, 63908], "mapped", [25467]], [[63909, 63909], "mapped", [27566]], [[63910, 63910], "mapped", [31806]], [[63911, 63911], "mapped", [29557]], [[63912, 63912], "mapped", [20196]], [[63913, 63913], "mapped", [22265]], [[63914, 63914], "mapped", [23527]], [[63915, 63915], "mapped", [23994]], [[63916, 63916], "mapped", [24604]], [[63917, 63917], "mapped", [29618]], [[63918, 63918], "mapped", [29801]], [[63919, 63919], "mapped", [32666]], [[63920, 63920], "mapped", [32838]], [[63921, 63921], "mapped", [37428]], [[63922, 63922], "mapped", [38646]], [[63923, 63923], "mapped", [38728]], [[63924, 63924], "mapped", [38936]], [[63925, 63925], "mapped", [20363]], [[63926, 63926], "mapped", [31150]], [[63927, 63927], "mapped", [37300]], [[63928, 63928], "mapped", [38584]], [[63929, 63929], "mapped", [24801]], [[63930, 63930], "mapped", [20102]], [[63931, 63931], "mapped", [20698]], [[63932, 63932], "mapped", [23534]], [[63933, 63933], "mapped", [23615]], [[63934, 63934], "mapped", [26009]], [[63935, 63935], "mapped", [27138]], [[63936, 63936], "mapped", [29134]], [[63937, 63937], "mapped", [30274]], [[63938, 63938], "mapped", [34044]], [[63939, 63939], "mapped", [36988]], [[63940, 63940], "mapped", [40845]], [[63941, 63941], "mapped", [26248]], [[63942, 63942], "mapped", [38446]], [[63943, 63943], "mapped", [21129]], [[63944, 63944], "mapped", [26491]], [[63945, 63945], "mapped", [26611]], [[63946, 63946], "mapped", [27969]], [[63947, 63947], "mapped", [28316]], [[63948, 63948], "mapped", [29705]], [[63949, 63949], "mapped", [30041]], [[63950, 63950], "mapped", [30827]], [[63951, 63951], "mapped", [32016]], [[63952, 63952], "mapped", [39006]], [[63953, 63953], "mapped", [20845]], [[63954, 63954], "mapped", [25134]], [[63955, 63955], "mapped", [38520]], [[63956, 63956], "mapped", [20523]], [[63957, 63957], "mapped", [23833]], [[63958, 63958], "mapped", [28138]], [[63959, 63959], "mapped", [36650]], [[63960, 63960], "mapped", [24459]], [[63961, 63961], "mapped", [24900]], [[63962, 63962], "mapped", [26647]], [[63963, 63963], "mapped", [29575]], [[63964, 63964], "mapped", [38534]], [[63965, 63965], "mapped", [21033]], [[63966, 63966], "mapped", [21519]], [[63967, 63967], "mapped", [23653]], [[63968, 63968], "mapped", [26131]], [[63969, 63969], "mapped", [26446]], [[63970, 63970], "mapped", [26792]], [[63971, 63971], "mapped", [27877]], [[63972, 63972], "mapped", [29702]], [[63973, 63973], "mapped", [30178]], [[63974, 63974], "mapped", [32633]], [[63975, 63975], "mapped", [35023]], [[63976, 63976], "mapped", [35041]], [[63977, 63977], "mapped", [37324]], [[63978, 63978], "mapped", [38626]], [[63979, 63979], "mapped", [21311]], [[63980, 63980], "mapped", [28346]], [[63981, 63981], "mapped", [21533]], [[63982, 63982], "mapped", [29136]], [[63983, 63983], "mapped", [29848]], [[63984, 63984], "mapped", [34298]], [[63985, 63985], "mapped", [38563]], [[63986, 63986], "mapped", [40023]], [[63987, 63987], "mapped", [40607]], [[63988, 63988], "mapped", [26519]], [[63989, 63989], "mapped", [28107]], [[63990, 63990], "mapped", [33256]], [[63991, 63991], "mapped", [31435]], [[63992, 63992], "mapped", [31520]], [[63993, 63993], "mapped", [31890]], [[63994, 63994], "mapped", [29376]], [[63995, 63995], "mapped", [28825]], [[63996, 63996], "mapped", [35672]], [[63997, 63997], "mapped", [20160]], [[63998, 63998], "mapped", [33590]], [[63999, 63999], "mapped", [21050]], [[64e3, 64e3], "mapped", [20999]], [[64001, 64001], "mapped", [24230]], [[64002, 64002], "mapped", [25299]], [[64003, 64003], "mapped", [31958]], [[64004, 64004], "mapped", [23429]], [[64005, 64005], "mapped", [27934]], [[64006, 64006], "mapped", [26292]], [[64007, 64007], "mapped", [36667]], [[64008, 64008], "mapped", [34892]], [[64009, 64009], "mapped", [38477]], [[64010, 64010], "mapped", [35211]], [[64011, 64011], "mapped", [24275]], [[64012, 64012], "mapped", [20800]], [[64013, 64013], "mapped", [21952]], [[64014, 64015], "valid"], [[64016, 64016], "mapped", [22618]], [[64017, 64017], "valid"], [[64018, 64018], "mapped", [26228]], [[64019, 64020], "valid"], [[64021, 64021], "mapped", [20958]], [[64022, 64022], "mapped", [29482]], [[64023, 64023], "mapped", [30410]], [[64024, 64024], "mapped", [31036]], [[64025, 64025], "mapped", [31070]], [[64026, 64026], "mapped", [31077]], [[64027, 64027], "mapped", [31119]], [[64028, 64028], "mapped", [38742]], [[64029, 64029], "mapped", [31934]], [[64030, 64030], "mapped", [32701]], [[64031, 64031], "valid"], [[64032, 64032], "mapped", [34322]], [[64033, 64033], "valid"], [[64034, 64034], "mapped", [35576]], [[64035, 64036], "valid"], [[64037, 64037], "mapped", [36920]], [[64038, 64038], "mapped", [37117]], [[64039, 64041], "valid"], [[64042, 64042], "mapped", [39151]], [[64043, 64043], "mapped", [39164]], [[64044, 64044], "mapped", [39208]], [[64045, 64045], "mapped", [40372]], [[64046, 64046], "mapped", [37086]], [[64047, 64047], "mapped", [38583]], [[64048, 64048], "mapped", [20398]], [[64049, 64049], "mapped", [20711]], [[64050, 64050], "mapped", [20813]], [[64051, 64051], "mapped", [21193]], [[64052, 64052], "mapped", [21220]], [[64053, 64053], "mapped", [21329]], [[64054, 64054], "mapped", [21917]], [[64055, 64055], "mapped", [22022]], [[64056, 64056], "mapped", [22120]], [[64057, 64057], "mapped", [22592]], [[64058, 64058], "mapped", [22696]], [[64059, 64059], "mapped", [23652]], [[64060, 64060], "mapped", [23662]], [[64061, 64061], "mapped", [24724]], [[64062, 64062], "mapped", [24936]], [[64063, 64063], "mapped", [24974]], [[64064, 64064], "mapped", [25074]], [[64065, 64065], "mapped", [25935]], [[64066, 64066], "mapped", [26082]], [[64067, 64067], "mapped", [26257]], [[64068, 64068], "mapped", [26757]], [[64069, 64069], "mapped", [28023]], [[64070, 64070], "mapped", [28186]], [[64071, 64071], "mapped", [28450]], [[64072, 64072], "mapped", [29038]], [[64073, 64073], "mapped", [29227]], [[64074, 64074], "mapped", [29730]], [[64075, 64075], "mapped", [30865]], [[64076, 64076], "mapped", [31038]], [[64077, 64077], "mapped", [31049]], [[64078, 64078], "mapped", [31048]], [[64079, 64079], "mapped", [31056]], [[64080, 64080], "mapped", [31062]], [[64081, 64081], "mapped", [31069]], [[64082, 64082], "mapped", [31117]], [[64083, 64083], "mapped", [31118]], [[64084, 64084], "mapped", [31296]], [[64085, 64085], "mapped", [31361]], [[64086, 64086], "mapped", [31680]], [[64087, 64087], "mapped", [32244]], [[64088, 64088], "mapped", [32265]], [[64089, 64089], "mapped", [32321]], [[64090, 64090], "mapped", [32626]], [[64091, 64091], "mapped", [32773]], [[64092, 64092], "mapped", [33261]], [[64093, 64094], "mapped", [33401]], [[64095, 64095], "mapped", [33879]], [[64096, 64096], "mapped", [35088]], [[64097, 64097], "mapped", [35222]], [[64098, 64098], "mapped", [35585]], [[64099, 64099], "mapped", [35641]], [[64100, 64100], "mapped", [36051]], [[64101, 64101], "mapped", [36104]], [[64102, 64102], "mapped", [36790]], [[64103, 64103], "mapped", [36920]], [[64104, 64104], "mapped", [38627]], [[64105, 64105], "mapped", [38911]], [[64106, 64106], "mapped", [38971]], [[64107, 64107], "mapped", [24693]], [[64108, 64108], "mapped", [148206]], [[64109, 64109], "mapped", [33304]], [[64110, 64111], "disallowed"], [[64112, 64112], "mapped", [20006]], [[64113, 64113], "mapped", [20917]], [[64114, 64114], "mapped", [20840]], [[64115, 64115], "mapped", [20352]], [[64116, 64116], "mapped", [20805]], [[64117, 64117], "mapped", [20864]], [[64118, 64118], "mapped", [21191]], [[64119, 64119], "mapped", [21242]], [[64120, 64120], "mapped", [21917]], [[64121, 64121], "mapped", [21845]], [[64122, 64122], "mapped", [21913]], [[64123, 64123], "mapped", [21986]], [[64124, 64124], "mapped", [22618]], [[64125, 64125], "mapped", [22707]], [[64126, 64126], "mapped", [22852]], [[64127, 64127], "mapped", [22868]], [[64128, 64128], "mapped", [23138]], [[64129, 64129], "mapped", [23336]], [[64130, 64130], "mapped", [24274]], [[64131, 64131], "mapped", [24281]], [[64132, 64132], "mapped", [24425]], [[64133, 64133], "mapped", [24493]], [[64134, 64134], "mapped", [24792]], [[64135, 64135], "mapped", [24910]], [[64136, 64136], "mapped", [24840]], [[64137, 64137], "mapped", [24974]], [[64138, 64138], "mapped", [24928]], [[64139, 64139], "mapped", [25074]], [[64140, 64140], "mapped", [25140]], [[64141, 64141], "mapped", [25540]], [[64142, 64142], "mapped", [25628]], [[64143, 64143], "mapped", [25682]], [[64144, 64144], "mapped", [25942]], [[64145, 64145], "mapped", [26228]], [[64146, 64146], "mapped", [26391]], [[64147, 64147], "mapped", [26395]], [[64148, 64148], "mapped", [26454]], [[64149, 64149], "mapped", [27513]], [[64150, 64150], "mapped", [27578]], [[64151, 64151], "mapped", [27969]], [[64152, 64152], "mapped", [28379]], [[64153, 64153], "mapped", [28363]], [[64154, 64154], "mapped", [28450]], [[64155, 64155], "mapped", [28702]], [[64156, 64156], "mapped", [29038]], [[64157, 64157], "mapped", [30631]], [[64158, 64158], "mapped", [29237]], [[64159, 64159], "mapped", [29359]], [[64160, 64160], "mapped", [29482]], [[64161, 64161], "mapped", [29809]], [[64162, 64162], "mapped", [29958]], [[64163, 64163], "mapped", [30011]], [[64164, 64164], "mapped", [30237]], [[64165, 64165], "mapped", [30239]], [[64166, 64166], "mapped", [30410]], [[64167, 64167], "mapped", [30427]], [[64168, 64168], "mapped", [30452]], [[64169, 64169], "mapped", [30538]], [[64170, 64170], "mapped", [30528]], [[64171, 64171], "mapped", [30924]], [[64172, 64172], "mapped", [31409]], [[64173, 64173], "mapped", [31680]], [[64174, 64174], "mapped", [31867]], [[64175, 64175], "mapped", [32091]], [[64176, 64176], "mapped", [32244]], [[64177, 64177], "mapped", [32574]], [[64178, 64178], "mapped", [32773]], [[64179, 64179], "mapped", [33618]], [[64180, 64180], "mapped", [33775]], [[64181, 64181], "mapped", [34681]], [[64182, 64182], "mapped", [35137]], [[64183, 64183], "mapped", [35206]], [[64184, 64184], "mapped", [35222]], [[64185, 64185], "mapped", [35519]], [[64186, 64186], "mapped", [35576]], [[64187, 64187], "mapped", [35531]], [[64188, 64188], "mapped", [35585]], [[64189, 64189], "mapped", [35582]], [[64190, 64190], "mapped", [35565]], [[64191, 64191], "mapped", [35641]], [[64192, 64192], "mapped", [35722]], [[64193, 64193], "mapped", [36104]], [[64194, 64194], "mapped", [36664]], [[64195, 64195], "mapped", [36978]], [[64196, 64196], "mapped", [37273]], [[64197, 64197], "mapped", [37494]], [[64198, 64198], "mapped", [38524]], [[64199, 64199], "mapped", [38627]], [[64200, 64200], "mapped", [38742]], [[64201, 64201], "mapped", [38875]], [[64202, 64202], "mapped", [38911]], [[64203, 64203], "mapped", [38923]], [[64204, 64204], "mapped", [38971]], [[64205, 64205], "mapped", [39698]], [[64206, 64206], "mapped", [40860]], [[64207, 64207], "mapped", [141386]], [[64208, 64208], "mapped", [141380]], [[64209, 64209], "mapped", [144341]], [[64210, 64210], "mapped", [15261]], [[64211, 64211], "mapped", [16408]], [[64212, 64212], "mapped", [16441]], [[64213, 64213], "mapped", [152137]], [[64214, 64214], "mapped", [154832]], [[64215, 64215], "mapped", [163539]], [[64216, 64216], "mapped", [40771]], [[64217, 64217], "mapped", [40846]], [[64218, 64255], "disallowed"], [[64256, 64256], "mapped", [102, 102]], [[64257, 64257], "mapped", [102, 105]], [[64258, 64258], "mapped", [102, 108]], [[64259, 64259], "mapped", [102, 102, 105]], [[64260, 64260], "mapped", [102, 102, 108]], [[64261, 64262], "mapped", [115, 116]], [[64263, 64274], "disallowed"], [[64275, 64275], "mapped", [1396, 1398]], [[64276, 64276], "mapped", [1396, 1381]], [[64277, 64277], "mapped", [1396, 1387]], [[64278, 64278], "mapped", [1406, 1398]], [[64279, 64279], "mapped", [1396, 1389]], [[64280, 64284], "disallowed"], [[64285, 64285], "mapped", [1497, 1460]], [[64286, 64286], "valid"], [[64287, 64287], "mapped", [1522, 1463]], [[64288, 64288], "mapped", [1506]], [[64289, 64289], "mapped", [1488]], [[64290, 64290], "mapped", [1491]], [[64291, 64291], "mapped", [1492]], [[64292, 64292], "mapped", [1499]], [[64293, 64293], "mapped", [1500]], [[64294, 64294], "mapped", [1501]], [[64295, 64295], "mapped", [1512]], [[64296, 64296], "mapped", [1514]], [[64297, 64297], "disallowed_STD3_mapped", [43]], [[64298, 64298], "mapped", [1513, 1473]], [[64299, 64299], "mapped", [1513, 1474]], [[64300, 64300], "mapped", [1513, 1468, 1473]], [[64301, 64301], "mapped", [1513, 1468, 1474]], [[64302, 64302], "mapped", [1488, 1463]], [[64303, 64303], "mapped", [1488, 1464]], [[64304, 64304], "mapped", [1488, 1468]], [[64305, 64305], "mapped", [1489, 1468]], [[64306, 64306], "mapped", [1490, 1468]], [[64307, 64307], "mapped", [1491, 1468]], [[64308, 64308], "mapped", [1492, 1468]], [[64309, 64309], "mapped", [1493, 1468]], [[64310, 64310], "mapped", [1494, 1468]], [[64311, 64311], "disallowed"], [[64312, 64312], "mapped", [1496, 1468]], [[64313, 64313], "mapped", [1497, 1468]], [[64314, 64314], "mapped", [1498, 1468]], [[64315, 64315], "mapped", [1499, 1468]], [[64316, 64316], "mapped", [1500, 1468]], [[64317, 64317], "disallowed"], [[64318, 64318], "mapped", [1502, 1468]], [[64319, 64319], "disallowed"], [[64320, 64320], "mapped", [1504, 1468]], [[64321, 64321], "mapped", [1505, 1468]], [[64322, 64322], "disallowed"], [[64323, 64323], "mapped", [1507, 1468]], [[64324, 64324], "mapped", [1508, 1468]], [[64325, 64325], "disallowed"], [[64326, 64326], "mapped", [1510, 1468]], [[64327, 64327], "mapped", [1511, 1468]], [[64328, 64328], "mapped", [1512, 1468]], [[64329, 64329], "mapped", [1513, 1468]], [[64330, 64330], "mapped", [1514, 1468]], [[64331, 64331], "mapped", [1493, 1465]], [[64332, 64332], "mapped", [1489, 1471]], [[64333, 64333], "mapped", [1499, 1471]], [[64334, 64334], "mapped", [1508, 1471]], [[64335, 64335], "mapped", [1488, 1500]], [[64336, 64337], "mapped", [1649]], [[64338, 64341], "mapped", [1659]], [[64342, 64345], "mapped", [1662]], [[64346, 64349], "mapped", [1664]], [[64350, 64353], "mapped", [1658]], [[64354, 64357], "mapped", [1663]], [[64358, 64361], "mapped", [1657]], [[64362, 64365], "mapped", [1700]], [[64366, 64369], "mapped", [1702]], [[64370, 64373], "mapped", [1668]], [[64374, 64377], "mapped", [1667]], [[64378, 64381], "mapped", [1670]], [[64382, 64385], "mapped", [1671]], [[64386, 64387], "mapped", [1677]], [[64388, 64389], "mapped", [1676]], [[64390, 64391], "mapped", [1678]], [[64392, 64393], "mapped", [1672]], [[64394, 64395], "mapped", [1688]], [[64396, 64397], "mapped", [1681]], [[64398, 64401], "mapped", [1705]], [[64402, 64405], "mapped", [1711]], [[64406, 64409], "mapped", [1715]], [[64410, 64413], "mapped", [1713]], [[64414, 64415], "mapped", [1722]], [[64416, 64419], "mapped", [1723]], [[64420, 64421], "mapped", [1728]], [[64422, 64425], "mapped", [1729]], [[64426, 64429], "mapped", [1726]], [[64430, 64431], "mapped", [1746]], [[64432, 64433], "mapped", [1747]], [[64434, 64449], "valid", [], "NV8"], [[64450, 64466], "disallowed"], [[64467, 64470], "mapped", [1709]], [[64471, 64472], "mapped", [1735]], [[64473, 64474], "mapped", [1734]], [[64475, 64476], "mapped", [1736]], [[64477, 64477], "mapped", [1735, 1652]], [[64478, 64479], "mapped", [1739]], [[64480, 64481], "mapped", [1733]], [[64482, 64483], "mapped", [1737]], [[64484, 64487], "mapped", [1744]], [[64488, 64489], "mapped", [1609]], [[64490, 64491], "mapped", [1574, 1575]], [[64492, 64493], "mapped", [1574, 1749]], [[64494, 64495], "mapped", [1574, 1608]], [[64496, 64497], "mapped", [1574, 1735]], [[64498, 64499], "mapped", [1574, 1734]], [[64500, 64501], "mapped", [1574, 1736]], [[64502, 64504], "mapped", [1574, 1744]], [[64505, 64507], "mapped", [1574, 1609]], [[64508, 64511], "mapped", [1740]], [[64512, 64512], "mapped", [1574, 1580]], [[64513, 64513], "mapped", [1574, 1581]], [[64514, 64514], "mapped", [1574, 1605]], [[64515, 64515], "mapped", [1574, 1609]], [[64516, 64516], "mapped", [1574, 1610]], [[64517, 64517], "mapped", [1576, 1580]], [[64518, 64518], "mapped", [1576, 1581]], [[64519, 64519], "mapped", [1576, 1582]], [[64520, 64520], "mapped", [1576, 1605]], [[64521, 64521], "mapped", [1576, 1609]], [[64522, 64522], "mapped", [1576, 1610]], [[64523, 64523], "mapped", [1578, 1580]], [[64524, 64524], "mapped", [1578, 1581]], [[64525, 64525], "mapped", [1578, 1582]], [[64526, 64526], "mapped", [1578, 1605]], [[64527, 64527], "mapped", [1578, 1609]], [[64528, 64528], "mapped", [1578, 1610]], [[64529, 64529], "mapped", [1579, 1580]], [[64530, 64530], "mapped", [1579, 1605]], [[64531, 64531], "mapped", [1579, 1609]], [[64532, 64532], "mapped", [1579, 1610]], [[64533, 64533], "mapped", [1580, 1581]], [[64534, 64534], "mapped", [1580, 1605]], [[64535, 64535], "mapped", [1581, 1580]], [[64536, 64536], "mapped", [1581, 1605]], [[64537, 64537], "mapped", [1582, 1580]], [[64538, 64538], "mapped", [1582, 1581]], [[64539, 64539], "mapped", [1582, 1605]], [[64540, 64540], "mapped", [1587, 1580]], [[64541, 64541], "mapped", [1587, 1581]], [[64542, 64542], "mapped", [1587, 1582]], [[64543, 64543], "mapped", [1587, 1605]], [[64544, 64544], "mapped", [1589, 1581]], [[64545, 64545], "mapped", [1589, 1605]], [[64546, 64546], "mapped", [1590, 1580]], [[64547, 64547], "mapped", [1590, 1581]], [[64548, 64548], "mapped", [1590, 1582]], [[64549, 64549], "mapped", [1590, 1605]], [[64550, 64550], "mapped", [1591, 1581]], [[64551, 64551], "mapped", [1591, 1605]], [[64552, 64552], "mapped", [1592, 1605]], [[64553, 64553], "mapped", [1593, 1580]], [[64554, 64554], "mapped", [1593, 1605]], [[64555, 64555], "mapped", [1594, 1580]], [[64556, 64556], "mapped", [1594, 1605]], [[64557, 64557], "mapped", [1601, 1580]], [[64558, 64558], "mapped", [1601, 1581]], [[64559, 64559], "mapped", [1601, 1582]], [[64560, 64560], "mapped", [1601, 1605]], [[64561, 64561], "mapped", [1601, 1609]], [[64562, 64562], "mapped", [1601, 1610]], [[64563, 64563], "mapped", [1602, 1581]], [[64564, 64564], "mapped", [1602, 1605]], [[64565, 64565], "mapped", [1602, 1609]], [[64566, 64566], "mapped", [1602, 1610]], [[64567, 64567], "mapped", [1603, 1575]], [[64568, 64568], "mapped", [1603, 1580]], [[64569, 64569], "mapped", [1603, 1581]], [[64570, 64570], "mapped", [1603, 1582]], [[64571, 64571], "mapped", [1603, 1604]], [[64572, 64572], "mapped", [1603, 1605]], [[64573, 64573], "mapped", [1603, 1609]], [[64574, 64574], "mapped", [1603, 1610]], [[64575, 64575], "mapped", [1604, 1580]], [[64576, 64576], "mapped", [1604, 1581]], [[64577, 64577], "mapped", [1604, 1582]], [[64578, 64578], "mapped", [1604, 1605]], [[64579, 64579], "mapped", [1604, 1609]], [[64580, 64580], "mapped", [1604, 1610]], [[64581, 64581], "mapped", [1605, 1580]], [[64582, 64582], "mapped", [1605, 1581]], [[64583, 64583], "mapped", [1605, 1582]], [[64584, 64584], "mapped", [1605, 1605]], [[64585, 64585], "mapped", [1605, 1609]], [[64586, 64586], "mapped", [1605, 1610]], [[64587, 64587], "mapped", [1606, 1580]], [[64588, 64588], "mapped", [1606, 1581]], [[64589, 64589], "mapped", [1606, 1582]], [[64590, 64590], "mapped", [1606, 1605]], [[64591, 64591], "mapped", [1606, 1609]], [[64592, 64592], "mapped", [1606, 1610]], [[64593, 64593], "mapped", [1607, 1580]], [[64594, 64594], "mapped", [1607, 1605]], [[64595, 64595], "mapped", [1607, 1609]], [[64596, 64596], "mapped", [1607, 1610]], [[64597, 64597], "mapped", [1610, 1580]], [[64598, 64598], "mapped", [1610, 1581]], [[64599, 64599], "mapped", [1610, 1582]], [[64600, 64600], "mapped", [1610, 1605]], [[64601, 64601], "mapped", [1610, 1609]], [[64602, 64602], "mapped", [1610, 1610]], [[64603, 64603], "mapped", [1584, 1648]], [[64604, 64604], "mapped", [1585, 1648]], [[64605, 64605], "mapped", [1609, 1648]], [[64606, 64606], "disallowed_STD3_mapped", [32, 1612, 1617]], [[64607, 64607], "disallowed_STD3_mapped", [32, 1613, 1617]], [[64608, 64608], "disallowed_STD3_mapped", [32, 1614, 1617]], [[64609, 64609], "disallowed_STD3_mapped", [32, 1615, 1617]], [[64610, 64610], "disallowed_STD3_mapped", [32, 1616, 1617]], [[64611, 64611], "disallowed_STD3_mapped", [32, 1617, 1648]], [[64612, 64612], "mapped", [1574, 1585]], [[64613, 64613], "mapped", [1574, 1586]], [[64614, 64614], "mapped", [1574, 1605]], [[64615, 64615], "mapped", [1574, 1606]], [[64616, 64616], "mapped", [1574, 1609]], [[64617, 64617], "mapped", [1574, 1610]], [[64618, 64618], "mapped", [1576, 1585]], [[64619, 64619], "mapped", [1576, 1586]], [[64620, 64620], "mapped", [1576, 1605]], [[64621, 64621], "mapped", [1576, 1606]], [[64622, 64622], "mapped", [1576, 1609]], [[64623, 64623], "mapped", [1576, 1610]], [[64624, 64624], "mapped", [1578, 1585]], [[64625, 64625], "mapped", [1578, 1586]], [[64626, 64626], "mapped", [1578, 1605]], [[64627, 64627], "mapped", [1578, 1606]], [[64628, 64628], "mapped", [1578, 1609]], [[64629, 64629], "mapped", [1578, 1610]], [[64630, 64630], "mapped", [1579, 1585]], [[64631, 64631], "mapped", [1579, 1586]], [[64632, 64632], "mapped", [1579, 1605]], [[64633, 64633], "mapped", [1579, 1606]], [[64634, 64634], "mapped", [1579, 1609]], [[64635, 64635], "mapped", [1579, 1610]], [[64636, 64636], "mapped", [1601, 1609]], [[64637, 64637], "mapped", [1601, 1610]], [[64638, 64638], "mapped", [1602, 1609]], [[64639, 64639], "mapped", [1602, 1610]], [[64640, 64640], "mapped", [1603, 1575]], [[64641, 64641], "mapped", [1603, 1604]], [[64642, 64642], "mapped", [1603, 1605]], [[64643, 64643], "mapped", [1603, 1609]], [[64644, 64644], "mapped", [1603, 1610]], [[64645, 64645], "mapped", [1604, 1605]], [[64646, 64646], "mapped", [1604, 1609]], [[64647, 64647], "mapped", [1604, 1610]], [[64648, 64648], "mapped", [1605, 1575]], [[64649, 64649], "mapped", [1605, 1605]], [[64650, 64650], "mapped", [1606, 1585]], [[64651, 64651], "mapped", [1606, 1586]], [[64652, 64652], "mapped", [1606, 1605]], [[64653, 64653], "mapped", [1606, 1606]], [[64654, 64654], "mapped", [1606, 1609]], [[64655, 64655], "mapped", [1606, 1610]], [[64656, 64656], "mapped", [1609, 1648]], [[64657, 64657], "mapped", [1610, 1585]], [[64658, 64658], "mapped", [1610, 1586]], [[64659, 64659], "mapped", [1610, 1605]], [[64660, 64660], "mapped", [1610, 1606]], [[64661, 64661], "mapped", [1610, 1609]], [[64662, 64662], "mapped", [1610, 1610]], [[64663, 64663], "mapped", [1574, 1580]], [[64664, 64664], "mapped", [1574, 1581]], [[64665, 64665], "mapped", [1574, 1582]], [[64666, 64666], "mapped", [1574, 1605]], [[64667, 64667], "mapped", [1574, 1607]], [[64668, 64668], "mapped", [1576, 1580]], [[64669, 64669], "mapped", [1576, 1581]], [[64670, 64670], "mapped", [1576, 1582]], [[64671, 64671], "mapped", [1576, 1605]], [[64672, 64672], "mapped", [1576, 1607]], [[64673, 64673], "mapped", [1578, 1580]], [[64674, 64674], "mapped", [1578, 1581]], [[64675, 64675], "mapped", [1578, 1582]], [[64676, 64676], "mapped", [1578, 1605]], [[64677, 64677], "mapped", [1578, 1607]], [[64678, 64678], "mapped", [1579, 1605]], [[64679, 64679], "mapped", [1580, 1581]], [[64680, 64680], "mapped", [1580, 1605]], [[64681, 64681], "mapped", [1581, 1580]], [[64682, 64682], "mapped", [1581, 1605]], [[64683, 64683], "mapped", [1582, 1580]], [[64684, 64684], "mapped", [1582, 1605]], [[64685, 64685], "mapped", [1587, 1580]], [[64686, 64686], "mapped", [1587, 1581]], [[64687, 64687], "mapped", [1587, 1582]], [[64688, 64688], "mapped", [1587, 1605]], [[64689, 64689], "mapped", [1589, 1581]], [[64690, 64690], "mapped", [1589, 1582]], [[64691, 64691], "mapped", [1589, 1605]], [[64692, 64692], "mapped", [1590, 1580]], [[64693, 64693], "mapped", [1590, 1581]], [[64694, 64694], "mapped", [1590, 1582]], [[64695, 64695], "mapped", [1590, 1605]], [[64696, 64696], "mapped", [1591, 1581]], [[64697, 64697], "mapped", [1592, 1605]], [[64698, 64698], "mapped", [1593, 1580]], [[64699, 64699], "mapped", [1593, 1605]], [[64700, 64700], "mapped", [1594, 1580]], [[64701, 64701], "mapped", [1594, 1605]], [[64702, 64702], "mapped", [1601, 1580]], [[64703, 64703], "mapped", [1601, 1581]], [[64704, 64704], "mapped", [1601, 1582]], [[64705, 64705], "mapped", [1601, 1605]], [[64706, 64706], "mapped", [1602, 1581]], [[64707, 64707], "mapped", [1602, 1605]], [[64708, 64708], "mapped", [1603, 1580]], [[64709, 64709], "mapped", [1603, 1581]], [[64710, 64710], "mapped", [1603, 1582]], [[64711, 64711], "mapped", [1603, 1604]], [[64712, 64712], "mapped", [1603, 1605]], [[64713, 64713], "mapped", [1604, 1580]], [[64714, 64714], "mapped", [1604, 1581]], [[64715, 64715], "mapped", [1604, 1582]], [[64716, 64716], "mapped", [1604, 1605]], [[64717, 64717], "mapped", [1604, 1607]], [[64718, 64718], "mapped", [1605, 1580]], [[64719, 64719], "mapped", [1605, 1581]], [[64720, 64720], "mapped", [1605, 1582]], [[64721, 64721], "mapped", [1605, 1605]], [[64722, 64722], "mapped", [1606, 1580]], [[64723, 64723], "mapped", [1606, 1581]], [[64724, 64724], "mapped", [1606, 1582]], [[64725, 64725], "mapped", [1606, 1605]], [[64726, 64726], "mapped", [1606, 1607]], [[64727, 64727], "mapped", [1607, 1580]], [[64728, 64728], "mapped", [1607, 1605]], [[64729, 64729], "mapped", [1607, 1648]], [[64730, 64730], "mapped", [1610, 1580]], [[64731, 64731], "mapped", [1610, 1581]], [[64732, 64732], "mapped", [1610, 1582]], [[64733, 64733], "mapped", [1610, 1605]], [[64734, 64734], "mapped", [1610, 1607]], [[64735, 64735], "mapped", [1574, 1605]], [[64736, 64736], "mapped", [1574, 1607]], [[64737, 64737], "mapped", [1576, 1605]], [[64738, 64738], "mapped", [1576, 1607]], [[64739, 64739], "mapped", [1578, 1605]], [[64740, 64740], "mapped", [1578, 1607]], [[64741, 64741], "mapped", [1579, 1605]], [[64742, 64742], "mapped", [1579, 1607]], [[64743, 64743], "mapped", [1587, 1605]], [[64744, 64744], "mapped", [1587, 1607]], [[64745, 64745], "mapped", [1588, 1605]], [[64746, 64746], "mapped", [1588, 1607]], [[64747, 64747], "mapped", [1603, 1604]], [[64748, 64748], "mapped", [1603, 1605]], [[64749, 64749], "mapped", [1604, 1605]], [[64750, 64750], "mapped", [1606, 1605]], [[64751, 64751], "mapped", [1606, 1607]], [[64752, 64752], "mapped", [1610, 1605]], [[64753, 64753], "mapped", [1610, 1607]], [[64754, 64754], "mapped", [1600, 1614, 1617]], [[64755, 64755], "mapped", [1600, 1615, 1617]], [[64756, 64756], "mapped", [1600, 1616, 1617]], [[64757, 64757], "mapped", [1591, 1609]], [[64758, 64758], "mapped", [1591, 1610]], [[64759, 64759], "mapped", [1593, 1609]], [[64760, 64760], "mapped", [1593, 1610]], [[64761, 64761], "mapped", [1594, 1609]], [[64762, 64762], "mapped", [1594, 1610]], [[64763, 64763], "mapped", [1587, 1609]], [[64764, 64764], "mapped", [1587, 1610]], [[64765, 64765], "mapped", [1588, 1609]], [[64766, 64766], "mapped", [1588, 1610]], [[64767, 64767], "mapped", [1581, 1609]], [[64768, 64768], "mapped", [1581, 1610]], [[64769, 64769], "mapped", [1580, 1609]], [[64770, 64770], "mapped", [1580, 1610]], [[64771, 64771], "mapped", [1582, 1609]], [[64772, 64772], "mapped", [1582, 1610]], [[64773, 64773], "mapped", [1589, 1609]], [[64774, 64774], "mapped", [1589, 1610]], [[64775, 64775], "mapped", [1590, 1609]], [[64776, 64776], "mapped", [1590, 1610]], [[64777, 64777], "mapped", [1588, 1580]], [[64778, 64778], "mapped", [1588, 1581]], [[64779, 64779], "mapped", [1588, 1582]], [[64780, 64780], "mapped", [1588, 1605]], [[64781, 64781], "mapped", [1588, 1585]], [[64782, 64782], "mapped", [1587, 1585]], [[64783, 64783], "mapped", [1589, 1585]], [[64784, 64784], "mapped", [1590, 1585]], [[64785, 64785], "mapped", [1591, 1609]], [[64786, 64786], "mapped", [1591, 1610]], [[64787, 64787], "mapped", [1593, 1609]], [[64788, 64788], "mapped", [1593, 1610]], [[64789, 64789], "mapped", [1594, 1609]], [[64790, 64790], "mapped", [1594, 1610]], [[64791, 64791], "mapped", [1587, 1609]], [[64792, 64792], "mapped", [1587, 1610]], [[64793, 64793], "mapped", [1588, 1609]], [[64794, 64794], "mapped", [1588, 1610]], [[64795, 64795], "mapped", [1581, 1609]], [[64796, 64796], "mapped", [1581, 1610]], [[64797, 64797], "mapped", [1580, 1609]], [[64798, 64798], "mapped", [1580, 1610]], [[64799, 64799], "mapped", [1582, 1609]], [[64800, 64800], "mapped", [1582, 1610]], [[64801, 64801], "mapped", [1589, 1609]], [[64802, 64802], "mapped", [1589, 1610]], [[64803, 64803], "mapped", [1590, 1609]], [[64804, 64804], "mapped", [1590, 1610]], [[64805, 64805], "mapped", [1588, 1580]], [[64806, 64806], "mapped", [1588, 1581]], [[64807, 64807], "mapped", [1588, 1582]], [[64808, 64808], "mapped", [1588, 1605]], [[64809, 64809], "mapped", [1588, 1585]], [[64810, 64810], "mapped", [1587, 1585]], [[64811, 64811], "mapped", [1589, 1585]], [[64812, 64812], "mapped", [1590, 1585]], [[64813, 64813], "mapped", [1588, 1580]], [[64814, 64814], "mapped", [1588, 1581]], [[64815, 64815], "mapped", [1588, 1582]], [[64816, 64816], "mapped", [1588, 1605]], [[64817, 64817], "mapped", [1587, 1607]], [[64818, 64818], "mapped", [1588, 1607]], [[64819, 64819], "mapped", [1591, 1605]], [[64820, 64820], "mapped", [1587, 1580]], [[64821, 64821], "mapped", [1587, 1581]], [[64822, 64822], "mapped", [1587, 1582]], [[64823, 64823], "mapped", [1588, 1580]], [[64824, 64824], "mapped", [1588, 1581]], [[64825, 64825], "mapped", [1588, 1582]], [[64826, 64826], "mapped", [1591, 1605]], [[64827, 64827], "mapped", [1592, 1605]], [[64828, 64829], "mapped", [1575, 1611]], [[64830, 64831], "valid", [], "NV8"], [[64832, 64847], "disallowed"], [[64848, 64848], "mapped", [1578, 1580, 1605]], [[64849, 64850], "mapped", [1578, 1581, 1580]], [[64851, 64851], "mapped", [1578, 1581, 1605]], [[64852, 64852], "mapped", [1578, 1582, 1605]], [[64853, 64853], "mapped", [1578, 1605, 1580]], [[64854, 64854], "mapped", [1578, 1605, 1581]], [[64855, 64855], "mapped", [1578, 1605, 1582]], [[64856, 64857], "mapped", [1580, 1605, 1581]], [[64858, 64858], "mapped", [1581, 1605, 1610]], [[64859, 64859], "mapped", [1581, 1605, 1609]], [[64860, 64860], "mapped", [1587, 1581, 1580]], [[64861, 64861], "mapped", [1587, 1580, 1581]], [[64862, 64862], "mapped", [1587, 1580, 1609]], [[64863, 64864], "mapped", [1587, 1605, 1581]], [[64865, 64865], "mapped", [1587, 1605, 1580]], [[64866, 64867], "mapped", [1587, 1605, 1605]], [[64868, 64869], "mapped", [1589, 1581, 1581]], [[64870, 64870], "mapped", [1589, 1605, 1605]], [[64871, 64872], "mapped", [1588, 1581, 1605]], [[64873, 64873], "mapped", [1588, 1580, 1610]], [[64874, 64875], "mapped", [1588, 1605, 1582]], [[64876, 64877], "mapped", [1588, 1605, 1605]], [[64878, 64878], "mapped", [1590, 1581, 1609]], [[64879, 64880], "mapped", [1590, 1582, 1605]], [[64881, 64882], "mapped", [1591, 1605, 1581]], [[64883, 64883], "mapped", [1591, 1605, 1605]], [[64884, 64884], "mapped", [1591, 1605, 1610]], [[64885, 64885], "mapped", [1593, 1580, 1605]], [[64886, 64887], "mapped", [1593, 1605, 1605]], [[64888, 64888], "mapped", [1593, 1605, 1609]], [[64889, 64889], "mapped", [1594, 1605, 1605]], [[64890, 64890], "mapped", [1594, 1605, 1610]], [[64891, 64891], "mapped", [1594, 1605, 1609]], [[64892, 64893], "mapped", [1601, 1582, 1605]], [[64894, 64894], "mapped", [1602, 1605, 1581]], [[64895, 64895], "mapped", [1602, 1605, 1605]], [[64896, 64896], "mapped", [1604, 1581, 1605]], [[64897, 64897], "mapped", [1604, 1581, 1610]], [[64898, 64898], "mapped", [1604, 1581, 1609]], [[64899, 64900], "mapped", [1604, 1580, 1580]], [[64901, 64902], "mapped", [1604, 1582, 1605]], [[64903, 64904], "mapped", [1604, 1605, 1581]], [[64905, 64905], "mapped", [1605, 1581, 1580]], [[64906, 64906], "mapped", [1605, 1581, 1605]], [[64907, 64907], "mapped", [1605, 1581, 1610]], [[64908, 64908], "mapped", [1605, 1580, 1581]], [[64909, 64909], "mapped", [1605, 1580, 1605]], [[64910, 64910], "mapped", [1605, 1582, 1580]], [[64911, 64911], "mapped", [1605, 1582, 1605]], [[64912, 64913], "disallowed"], [[64914, 64914], "mapped", [1605, 1580, 1582]], [[64915, 64915], "mapped", [1607, 1605, 1580]], [[64916, 64916], "mapped", [1607, 1605, 1605]], [[64917, 64917], "mapped", [1606, 1581, 1605]], [[64918, 64918], "mapped", [1606, 1581, 1609]], [[64919, 64920], "mapped", [1606, 1580, 1605]], [[64921, 64921], "mapped", [1606, 1580, 1609]], [[64922, 64922], "mapped", [1606, 1605, 1610]], [[64923, 64923], "mapped", [1606, 1605, 1609]], [[64924, 64925], "mapped", [1610, 1605, 1605]], [[64926, 64926], "mapped", [1576, 1582, 1610]], [[64927, 64927], "mapped", [1578, 1580, 1610]], [[64928, 64928], "mapped", [1578, 1580, 1609]], [[64929, 64929], "mapped", [1578, 1582, 1610]], [[64930, 64930], "mapped", [1578, 1582, 1609]], [[64931, 64931], "mapped", [1578, 1605, 1610]], [[64932, 64932], "mapped", [1578, 1605, 1609]], [[64933, 64933], "mapped", [1580, 1605, 1610]], [[64934, 64934], "mapped", [1580, 1581, 1609]], [[64935, 64935], "mapped", [1580, 1605, 1609]], [[64936, 64936], "mapped", [1587, 1582, 1609]], [[64937, 64937], "mapped", [1589, 1581, 1610]], [[64938, 64938], "mapped", [1588, 1581, 1610]], [[64939, 64939], "mapped", [1590, 1581, 1610]], [[64940, 64940], "mapped", [1604, 1580, 1610]], [[64941, 64941], "mapped", [1604, 1605, 1610]], [[64942, 64942], "mapped", [1610, 1581, 1610]], [[64943, 64943], "mapped", [1610, 1580, 1610]], [[64944, 64944], "mapped", [1610, 1605, 1610]], [[64945, 64945], "mapped", [1605, 1605, 1610]], [[64946, 64946], "mapped", [1602, 1605, 1610]], [[64947, 64947], "mapped", [1606, 1581, 1610]], [[64948, 64948], "mapped", [1602, 1605, 1581]], [[64949, 64949], "mapped", [1604, 1581, 1605]], [[64950, 64950], "mapped", [1593, 1605, 1610]], [[64951, 64951], "mapped", [1603, 1605, 1610]], [[64952, 64952], "mapped", [1606, 1580, 1581]], [[64953, 64953], "mapped", [1605, 1582, 1610]], [[64954, 64954], "mapped", [1604, 1580, 1605]], [[64955, 64955], "mapped", [1603, 1605, 1605]], [[64956, 64956], "mapped", [1604, 1580, 1605]], [[64957, 64957], "mapped", [1606, 1580, 1581]], [[64958, 64958], "mapped", [1580, 1581, 1610]], [[64959, 64959], "mapped", [1581, 1580, 1610]], [[64960, 64960], "mapped", [1605, 1580, 1610]], [[64961, 64961], "mapped", [1601, 1605, 1610]], [[64962, 64962], "mapped", [1576, 1581, 1610]], [[64963, 64963], "mapped", [1603, 1605, 1605]], [[64964, 64964], "mapped", [1593, 1580, 1605]], [[64965, 64965], "mapped", [1589, 1605, 1605]], [[64966, 64966], "mapped", [1587, 1582, 1610]], [[64967, 64967], "mapped", [1606, 1580, 1610]], [[64968, 64975], "disallowed"], [[64976, 65007], "disallowed"], [[65008, 65008], "mapped", [1589, 1604, 1746]], [[65009, 65009], "mapped", [1602, 1604, 1746]], [[65010, 65010], "mapped", [1575, 1604, 1604, 1607]], [[65011, 65011], "mapped", [1575, 1603, 1576, 1585]], [[65012, 65012], "mapped", [1605, 1581, 1605, 1583]], [[65013, 65013], "mapped", [1589, 1604, 1593, 1605]], [[65014, 65014], "mapped", [1585, 1587, 1608, 1604]], [[65015, 65015], "mapped", [1593, 1604, 1610, 1607]], [[65016, 65016], "mapped", [1608, 1587, 1604, 1605]], [[65017, 65017], "mapped", [1589, 1604, 1609]], [[65018, 65018], "disallowed_STD3_mapped", [1589, 1604, 1609, 32, 1575, 1604, 1604, 1607, 32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605]], [[65019, 65019], "disallowed_STD3_mapped", [1580, 1604, 32, 1580, 1604, 1575, 1604, 1607]], [[65020, 65020], "mapped", [1585, 1740, 1575, 1604]], [[65021, 65021], "valid", [], "NV8"], [[65022, 65023], "disallowed"], [[65024, 65039], "ignored"], [[65040, 65040], "disallowed_STD3_mapped", [44]], [[65041, 65041], "mapped", [12289]], [[65042, 65042], "disallowed"], [[65043, 65043], "disallowed_STD3_mapped", [58]], [[65044, 65044], "disallowed_STD3_mapped", [59]], [[65045, 65045], "disallowed_STD3_mapped", [33]], [[65046, 65046], "disallowed_STD3_mapped", [63]], [[65047, 65047], "mapped", [12310]], [[65048, 65048], "mapped", [12311]], [[65049, 65049], "disallowed"], [[65050, 65055], "disallowed"], [[65056, 65059], "valid"], [[65060, 65062], "valid"], [[65063, 65069], "valid"], [[65070, 65071], "valid"], [[65072, 65072], "disallowed"], [[65073, 65073], "mapped", [8212]], [[65074, 65074], "mapped", [8211]], [[65075, 65076], "disallowed_STD3_mapped", [95]], [[65077, 65077], "disallowed_STD3_mapped", [40]], [[65078, 65078], "disallowed_STD3_mapped", [41]], [[65079, 65079], "disallowed_STD3_mapped", [123]], [[65080, 65080], "disallowed_STD3_mapped", [125]], [[65081, 65081], "mapped", [12308]], [[65082, 65082], "mapped", [12309]], [[65083, 65083], "mapped", [12304]], [[65084, 65084], "mapped", [12305]], [[65085, 65085], "mapped", [12298]], [[65086, 65086], "mapped", [12299]], [[65087, 65087], "mapped", [12296]], [[65088, 65088], "mapped", [12297]], [[65089, 65089], "mapped", [12300]], [[65090, 65090], "mapped", [12301]], [[65091, 65091], "mapped", [12302]], [[65092, 65092], "mapped", [12303]], [[65093, 65094], "valid", [], "NV8"], [[65095, 65095], "disallowed_STD3_mapped", [91]], [[65096, 65096], "disallowed_STD3_mapped", [93]], [[65097, 65100], "disallowed_STD3_mapped", [32, 773]], [[65101, 65103], "disallowed_STD3_mapped", [95]], [[65104, 65104], "disallowed_STD3_mapped", [44]], [[65105, 65105], "mapped", [12289]], [[65106, 65106], "disallowed"], [[65107, 65107], "disallowed"], [[65108, 65108], "disallowed_STD3_mapped", [59]], [[65109, 65109], "disallowed_STD3_mapped", [58]], [[65110, 65110], "disallowed_STD3_mapped", [63]], [[65111, 65111], "disallowed_STD3_mapped", [33]], [[65112, 65112], "mapped", [8212]], [[65113, 65113], "disallowed_STD3_mapped", [40]], [[65114, 65114], "disallowed_STD3_mapped", [41]], [[65115, 65115], "disallowed_STD3_mapped", [123]], [[65116, 65116], "disallowed_STD3_mapped", [125]], [[65117, 65117], "mapped", [12308]], [[65118, 65118], "mapped", [12309]], [[65119, 65119], "disallowed_STD3_mapped", [35]], [[65120, 65120], "disallowed_STD3_mapped", [38]], [[65121, 65121], "disallowed_STD3_mapped", [42]], [[65122, 65122], "disallowed_STD3_mapped", [43]], [[65123, 65123], "mapped", [45]], [[65124, 65124], "disallowed_STD3_mapped", [60]], [[65125, 65125], "disallowed_STD3_mapped", [62]], [[65126, 65126], "disallowed_STD3_mapped", [61]], [[65127, 65127], "disallowed"], [[65128, 65128], "disallowed_STD3_mapped", [92]], [[65129, 65129], "disallowed_STD3_mapped", [36]], [[65130, 65130], "disallowed_STD3_mapped", [37]], [[65131, 65131], "disallowed_STD3_mapped", [64]], [[65132, 65135], "disallowed"], [[65136, 65136], "disallowed_STD3_mapped", [32, 1611]], [[65137, 65137], "mapped", [1600, 1611]], [[65138, 65138], "disallowed_STD3_mapped", [32, 1612]], [[65139, 65139], "valid"], [[65140, 65140], "disallowed_STD3_mapped", [32, 1613]], [[65141, 65141], "disallowed"], [[65142, 65142], "disallowed_STD3_mapped", [32, 1614]], [[65143, 65143], "mapped", [1600, 1614]], [[65144, 65144], "disallowed_STD3_mapped", [32, 1615]], [[65145, 65145], "mapped", [1600, 1615]], [[65146, 65146], "disallowed_STD3_mapped", [32, 1616]], [[65147, 65147], "mapped", [1600, 1616]], [[65148, 65148], "disallowed_STD3_mapped", [32, 1617]], [[65149, 65149], "mapped", [1600, 1617]], [[65150, 65150], "disallowed_STD3_mapped", [32, 1618]], [[65151, 65151], "mapped", [1600, 1618]], [[65152, 65152], "mapped", [1569]], [[65153, 65154], "mapped", [1570]], [[65155, 65156], "mapped", [1571]], [[65157, 65158], "mapped", [1572]], [[65159, 65160], "mapped", [1573]], [[65161, 65164], "mapped", [1574]], [[65165, 65166], "mapped", [1575]], [[65167, 65170], "mapped", [1576]], [[65171, 65172], "mapped", [1577]], [[65173, 65176], "mapped", [1578]], [[65177, 65180], "mapped", [1579]], [[65181, 65184], "mapped", [1580]], [[65185, 65188], "mapped", [1581]], [[65189, 65192], "mapped", [1582]], [[65193, 65194], "mapped", [1583]], [[65195, 65196], "mapped", [1584]], [[65197, 65198], "mapped", [1585]], [[65199, 65200], "mapped", [1586]], [[65201, 65204], "mapped", [1587]], [[65205, 65208], "mapped", [1588]], [[65209, 65212], "mapped", [1589]], [[65213, 65216], "mapped", [1590]], [[65217, 65220], "mapped", [1591]], [[65221, 65224], "mapped", [1592]], [[65225, 65228], "mapped", [1593]], [[65229, 65232], "mapped", [1594]], [[65233, 65236], "mapped", [1601]], [[65237, 65240], "mapped", [1602]], [[65241, 65244], "mapped", [1603]], [[65245, 65248], "mapped", [1604]], [[65249, 65252], "mapped", [1605]], [[65253, 65256], "mapped", [1606]], [[65257, 65260], "mapped", [1607]], [[65261, 65262], "mapped", [1608]], [[65263, 65264], "mapped", [1609]], [[65265, 65268], "mapped", [1610]], [[65269, 65270], "mapped", [1604, 1570]], [[65271, 65272], "mapped", [1604, 1571]], [[65273, 65274], "mapped", [1604, 1573]], [[65275, 65276], "mapped", [1604, 1575]], [[65277, 65278], "disallowed"], [[65279, 65279], "ignored"], [[65280, 65280], "disallowed"], [[65281, 65281], "disallowed_STD3_mapped", [33]], [[65282, 65282], "disallowed_STD3_mapped", [34]], [[65283, 65283], "disallowed_STD3_mapped", [35]], [[65284, 65284], "disallowed_STD3_mapped", [36]], [[65285, 65285], "disallowed_STD3_mapped", [37]], [[65286, 65286], "disallowed_STD3_mapped", [38]], [[65287, 65287], "disallowed_STD3_mapped", [39]], [[65288, 65288], "disallowed_STD3_mapped", [40]], [[65289, 65289], "disallowed_STD3_mapped", [41]], [[65290, 65290], "disallowed_STD3_mapped", [42]], [[65291, 65291], "disallowed_STD3_mapped", [43]], [[65292, 65292], "disallowed_STD3_mapped", [44]], [[65293, 65293], "mapped", [45]], [[65294, 65294], "mapped", [46]], [[65295, 65295], "disallowed_STD3_mapped", [47]], [[65296, 65296], "mapped", [48]], [[65297, 65297], "mapped", [49]], [[65298, 65298], "mapped", [50]], [[65299, 65299], "mapped", [51]], [[65300, 65300], "mapped", [52]], [[65301, 65301], "mapped", [53]], [[65302, 65302], "mapped", [54]], [[65303, 65303], "mapped", [55]], [[65304, 65304], "mapped", [56]], [[65305, 65305], "mapped", [57]], [[65306, 65306], "disallowed_STD3_mapped", [58]], [[65307, 65307], "disallowed_STD3_mapped", [59]], [[65308, 65308], "disallowed_STD3_mapped", [60]], [[65309, 65309], "disallowed_STD3_mapped", [61]], [[65310, 65310], "disallowed_STD3_mapped", [62]], [[65311, 65311], "disallowed_STD3_mapped", [63]], [[65312, 65312], "disallowed_STD3_mapped", [64]], [[65313, 65313], "mapped", [97]], [[65314, 65314], "mapped", [98]], [[65315, 65315], "mapped", [99]], [[65316, 65316], "mapped", [100]], [[65317, 65317], "mapped", [101]], [[65318, 65318], "mapped", [102]], [[65319, 65319], "mapped", [103]], [[65320, 65320], "mapped", [104]], [[65321, 65321], "mapped", [105]], [[65322, 65322], "mapped", [106]], [[65323, 65323], "mapped", [107]], [[65324, 65324], "mapped", [108]], [[65325, 65325], "mapped", [109]], [[65326, 65326], "mapped", [110]], [[65327, 65327], "mapped", [111]], [[65328, 65328], "mapped", [112]], [[65329, 65329], "mapped", [113]], [[65330, 65330], "mapped", [114]], [[65331, 65331], "mapped", [115]], [[65332, 65332], "mapped", [116]], [[65333, 65333], "mapped", [117]], [[65334, 65334], "mapped", [118]], [[65335, 65335], "mapped", [119]], [[65336, 65336], "mapped", [120]], [[65337, 65337], "mapped", [121]], [[65338, 65338], "mapped", [122]], [[65339, 65339], "disallowed_STD3_mapped", [91]], [[65340, 65340], "disallowed_STD3_mapped", [92]], [[65341, 65341], "disallowed_STD3_mapped", [93]], [[65342, 65342], "disallowed_STD3_mapped", [94]], [[65343, 65343], "disallowed_STD3_mapped", [95]], [[65344, 65344], "disallowed_STD3_mapped", [96]], [[65345, 65345], "mapped", [97]], [[65346, 65346], "mapped", [98]], [[65347, 65347], "mapped", [99]], [[65348, 65348], "mapped", [100]], [[65349, 65349], "mapped", [101]], [[65350, 65350], "mapped", [102]], [[65351, 65351], "mapped", [103]], [[65352, 65352], "mapped", [104]], [[65353, 65353], "mapped", [105]], [[65354, 65354], "mapped", [106]], [[65355, 65355], "mapped", [107]], [[65356, 65356], "mapped", [108]], [[65357, 65357], "mapped", [109]], [[65358, 65358], "mapped", [110]], [[65359, 65359], "mapped", [111]], [[65360, 65360], "mapped", [112]], [[65361, 65361], "mapped", [113]], [[65362, 65362], "mapped", [114]], [[65363, 65363], "mapped", [115]], [[65364, 65364], "mapped", [116]], [[65365, 65365], "mapped", [117]], [[65366, 65366], "mapped", [118]], [[65367, 65367], "mapped", [119]], [[65368, 65368], "mapped", [120]], [[65369, 65369], "mapped", [121]], [[65370, 65370], "mapped", [122]], [[65371, 65371], "disallowed_STD3_mapped", [123]], [[65372, 65372], "disallowed_STD3_mapped", [124]], [[65373, 65373], "disallowed_STD3_mapped", [125]], [[65374, 65374], "disallowed_STD3_mapped", [126]], [[65375, 65375], "mapped", [10629]], [[65376, 65376], "mapped", [10630]], [[65377, 65377], "mapped", [46]], [[65378, 65378], "mapped", [12300]], [[65379, 65379], "mapped", [12301]], [[65380, 65380], "mapped", [12289]], [[65381, 65381], "mapped", [12539]], [[65382, 65382], "mapped", [12530]], [[65383, 65383], "mapped", [12449]], [[65384, 65384], "mapped", [12451]], [[65385, 65385], "mapped", [12453]], [[65386, 65386], "mapped", [12455]], [[65387, 65387], "mapped", [12457]], [[65388, 65388], "mapped", [12515]], [[65389, 65389], "mapped", [12517]], [[65390, 65390], "mapped", [12519]], [[65391, 65391], "mapped", [12483]], [[65392, 65392], "mapped", [12540]], [[65393, 65393], "mapped", [12450]], [[65394, 65394], "mapped", [12452]], [[65395, 65395], "mapped", [12454]], [[65396, 65396], "mapped", [12456]], [[65397, 65397], "mapped", [12458]], [[65398, 65398], "mapped", [12459]], [[65399, 65399], "mapped", [12461]], [[65400, 65400], "mapped", [12463]], [[65401, 65401], "mapped", [12465]], [[65402, 65402], "mapped", [12467]], [[65403, 65403], "mapped", [12469]], [[65404, 65404], "mapped", [12471]], [[65405, 65405], "mapped", [12473]], [[65406, 65406], "mapped", [12475]], [[65407, 65407], "mapped", [12477]], [[65408, 65408], "mapped", [12479]], [[65409, 65409], "mapped", [12481]], [[65410, 65410], "mapped", [12484]], [[65411, 65411], "mapped", [12486]], [[65412, 65412], "mapped", [12488]], [[65413, 65413], "mapped", [12490]], [[65414, 65414], "mapped", [12491]], [[65415, 65415], "mapped", [12492]], [[65416, 65416], "mapped", [12493]], [[65417, 65417], "mapped", [12494]], [[65418, 65418], "mapped", [12495]], [[65419, 65419], "mapped", [12498]], [[65420, 65420], "mapped", [12501]], [[65421, 65421], "mapped", [12504]], [[65422, 65422], "mapped", [12507]], [[65423, 65423], "mapped", [12510]], [[65424, 65424], "mapped", [12511]], [[65425, 65425], "mapped", [12512]], [[65426, 65426], "mapped", [12513]], [[65427, 65427], "mapped", [12514]], [[65428, 65428], "mapped", [12516]], [[65429, 65429], "mapped", [12518]], [[65430, 65430], "mapped", [12520]], [[65431, 65431], "mapped", [12521]], [[65432, 65432], "mapped", [12522]], [[65433, 65433], "mapped", [12523]], [[65434, 65434], "mapped", [12524]], [[65435, 65435], "mapped", [12525]], [[65436, 65436], "mapped", [12527]], [[65437, 65437], "mapped", [12531]], [[65438, 65438], "mapped", [12441]], [[65439, 65439], "mapped", [12442]], [[65440, 65440], "disallowed"], [[65441, 65441], "mapped", [4352]], [[65442, 65442], "mapped", [4353]], [[65443, 65443], "mapped", [4522]], [[65444, 65444], "mapped", [4354]], [[65445, 65445], "mapped", [4524]], [[65446, 65446], "mapped", [4525]], [[65447, 65447], "mapped", [4355]], [[65448, 65448], "mapped", [4356]], [[65449, 65449], "mapped", [4357]], [[65450, 65450], "mapped", [4528]], [[65451, 65451], "mapped", [4529]], [[65452, 65452], "mapped", [4530]], [[65453, 65453], "mapped", [4531]], [[65454, 65454], "mapped", [4532]], [[65455, 65455], "mapped", [4533]], [[65456, 65456], "mapped", [4378]], [[65457, 65457], "mapped", [4358]], [[65458, 65458], "mapped", [4359]], [[65459, 65459], "mapped", [4360]], [[65460, 65460], "mapped", [4385]], [[65461, 65461], "mapped", [4361]], [[65462, 65462], "mapped", [4362]], [[65463, 65463], "mapped", [4363]], [[65464, 65464], "mapped", [4364]], [[65465, 65465], "mapped", [4365]], [[65466, 65466], "mapped", [4366]], [[65467, 65467], "mapped", [4367]], [[65468, 65468], "mapped", [4368]], [[65469, 65469], "mapped", [4369]], [[65470, 65470], "mapped", [4370]], [[65471, 65473], "disallowed"], [[65474, 65474], "mapped", [4449]], [[65475, 65475], "mapped", [4450]], [[65476, 65476], "mapped", [4451]], [[65477, 65477], "mapped", [4452]], [[65478, 65478], "mapped", [4453]], [[65479, 65479], "mapped", [4454]], [[65480, 65481], "disallowed"], [[65482, 65482], "mapped", [4455]], [[65483, 65483], "mapped", [4456]], [[65484, 65484], "mapped", [4457]], [[65485, 65485], "mapped", [4458]], [[65486, 65486], "mapped", [4459]], [[65487, 65487], "mapped", [4460]], [[65488, 65489], "disallowed"], [[65490, 65490], "mapped", [4461]], [[65491, 65491], "mapped", [4462]], [[65492, 65492], "mapped", [4463]], [[65493, 65493], "mapped", [4464]], [[65494, 65494], "mapped", [4465]], [[65495, 65495], "mapped", [4466]], [[65496, 65497], "disallowed"], [[65498, 65498], "mapped", [4467]], [[65499, 65499], "mapped", [4468]], [[65500, 65500], "mapped", [4469]], [[65501, 65503], "disallowed"], [[65504, 65504], "mapped", [162]], [[65505, 65505], "mapped", [163]], [[65506, 65506], "mapped", [172]], [[65507, 65507], "disallowed_STD3_mapped", [32, 772]], [[65508, 65508], "mapped", [166]], [[65509, 65509], "mapped", [165]], [[65510, 65510], "mapped", [8361]], [[65511, 65511], "disallowed"], [[65512, 65512], "mapped", [9474]], [[65513, 65513], "mapped", [8592]], [[65514, 65514], "mapped", [8593]], [[65515, 65515], "mapped", [8594]], [[65516, 65516], "mapped", [8595]], [[65517, 65517], "mapped", [9632]], [[65518, 65518], "mapped", [9675]], [[65519, 65528], "disallowed"], [[65529, 65531], "disallowed"], [[65532, 65532], "disallowed"], [[65533, 65533], "disallowed"], [[65534, 65535], "disallowed"], [[65536, 65547], "valid"], [[65548, 65548], "disallowed"], [[65549, 65574], "valid"], [[65575, 65575], "disallowed"], [[65576, 65594], "valid"], [[65595, 65595], "disallowed"], [[65596, 65597], "valid"], [[65598, 65598], "disallowed"], [[65599, 65613], "valid"], [[65614, 65615], "disallowed"], [[65616, 65629], "valid"], [[65630, 65663], "disallowed"], [[65664, 65786], "valid"], [[65787, 65791], "disallowed"], [[65792, 65794], "valid", [], "NV8"], [[65795, 65798], "disallowed"], [[65799, 65843], "valid", [], "NV8"], [[65844, 65846], "disallowed"], [[65847, 65855], "valid", [], "NV8"], [[65856, 65930], "valid", [], "NV8"], [[65931, 65932], "valid", [], "NV8"], [[65933, 65935], "disallowed"], [[65936, 65947], "valid", [], "NV8"], [[65948, 65951], "disallowed"], [[65952, 65952], "valid", [], "NV8"], [[65953, 65999], "disallowed"], [[66e3, 66044], "valid", [], "NV8"], [[66045, 66045], "valid"], [[66046, 66175], "disallowed"], [[66176, 66204], "valid"], [[66205, 66207], "disallowed"], [[66208, 66256], "valid"], [[66257, 66271], "disallowed"], [[66272, 66272], "valid"], [[66273, 66299], "valid", [], "NV8"], [[66300, 66303], "disallowed"], [[66304, 66334], "valid"], [[66335, 66335], "valid"], [[66336, 66339], "valid", [], "NV8"], [[66340, 66351], "disallowed"], [[66352, 66368], "valid"], [[66369, 66369], "valid", [], "NV8"], [[66370, 66377], "valid"], [[66378, 66378], "valid", [], "NV8"], [[66379, 66383], "disallowed"], [[66384, 66426], "valid"], [[66427, 66431], "disallowed"], [[66432, 66461], "valid"], [[66462, 66462], "disallowed"], [[66463, 66463], "valid", [], "NV8"], [[66464, 66499], "valid"], [[66500, 66503], "disallowed"], [[66504, 66511], "valid"], [[66512, 66517], "valid", [], "NV8"], [[66518, 66559], "disallowed"], [[66560, 66560], "mapped", [66600]], [[66561, 66561], "mapped", [66601]], [[66562, 66562], "mapped", [66602]], [[66563, 66563], "mapped", [66603]], [[66564, 66564], "mapped", [66604]], [[66565, 66565], "mapped", [66605]], [[66566, 66566], "mapped", [66606]], [[66567, 66567], "mapped", [66607]], [[66568, 66568], "mapped", [66608]], [[66569, 66569], "mapped", [66609]], [[66570, 66570], "mapped", [66610]], [[66571, 66571], "mapped", [66611]], [[66572, 66572], "mapped", [66612]], [[66573, 66573], "mapped", [66613]], [[66574, 66574], "mapped", [66614]], [[66575, 66575], "mapped", [66615]], [[66576, 66576], "mapped", [66616]], [[66577, 66577], "mapped", [66617]], [[66578, 66578], "mapped", [66618]], [[66579, 66579], "mapped", [66619]], [[66580, 66580], "mapped", [66620]], [[66581, 66581], "mapped", [66621]], [[66582, 66582], "mapped", [66622]], [[66583, 66583], "mapped", [66623]], [[66584, 66584], "mapped", [66624]], [[66585, 66585], "mapped", [66625]], [[66586, 66586], "mapped", [66626]], [[66587, 66587], "mapped", [66627]], [[66588, 66588], "mapped", [66628]], [[66589, 66589], "mapped", [66629]], [[66590, 66590], "mapped", [66630]], [[66591, 66591], "mapped", [66631]], [[66592, 66592], "mapped", [66632]], [[66593, 66593], "mapped", [66633]], [[66594, 66594], "mapped", [66634]], [[66595, 66595], "mapped", [66635]], [[66596, 66596], "mapped", [66636]], [[66597, 66597], "mapped", [66637]], [[66598, 66598], "mapped", [66638]], [[66599, 66599], "mapped", [66639]], [[66600, 66637], "valid"], [[66638, 66717], "valid"], [[66718, 66719], "disallowed"], [[66720, 66729], "valid"], [[66730, 66815], "disallowed"], [[66816, 66855], "valid"], [[66856, 66863], "disallowed"], [[66864, 66915], "valid"], [[66916, 66926], "disallowed"], [[66927, 66927], "valid", [], "NV8"], [[66928, 67071], "disallowed"], [[67072, 67382], "valid"], [[67383, 67391], "disallowed"], [[67392, 67413], "valid"], [[67414, 67423], "disallowed"], [[67424, 67431], "valid"], [[67432, 67583], "disallowed"], [[67584, 67589], "valid"], [[67590, 67591], "disallowed"], [[67592, 67592], "valid"], [[67593, 67593], "disallowed"], [[67594, 67637], "valid"], [[67638, 67638], "disallowed"], [[67639, 67640], "valid"], [[67641, 67643], "disallowed"], [[67644, 67644], "valid"], [[67645, 67646], "disallowed"], [[67647, 67647], "valid"], [[67648, 67669], "valid"], [[67670, 67670], "disallowed"], [[67671, 67679], "valid", [], "NV8"], [[67680, 67702], "valid"], [[67703, 67711], "valid", [], "NV8"], [[67712, 67742], "valid"], [[67743, 67750], "disallowed"], [[67751, 67759], "valid", [], "NV8"], [[67760, 67807], "disallowed"], [[67808, 67826], "valid"], [[67827, 67827], "disallowed"], [[67828, 67829], "valid"], [[67830, 67834], "disallowed"], [[67835, 67839], "valid", [], "NV8"], [[67840, 67861], "valid"], [[67862, 67865], "valid", [], "NV8"], [[67866, 67867], "valid", [], "NV8"], [[67868, 67870], "disallowed"], [[67871, 67871], "valid", [], "NV8"], [[67872, 67897], "valid"], [[67898, 67902], "disallowed"], [[67903, 67903], "valid", [], "NV8"], [[67904, 67967], "disallowed"], [[67968, 68023], "valid"], [[68024, 68027], "disallowed"], [[68028, 68029], "valid", [], "NV8"], [[68030, 68031], "valid"], [[68032, 68047], "valid", [], "NV8"], [[68048, 68049], "disallowed"], [[68050, 68095], "valid", [], "NV8"], [[68096, 68099], "valid"], [[68100, 68100], "disallowed"], [[68101, 68102], "valid"], [[68103, 68107], "disallowed"], [[68108, 68115], "valid"], [[68116, 68116], "disallowed"], [[68117, 68119], "valid"], [[68120, 68120], "disallowed"], [[68121, 68147], "valid"], [[68148, 68151], "disallowed"], [[68152, 68154], "valid"], [[68155, 68158], "disallowed"], [[68159, 68159], "valid"], [[68160, 68167], "valid", [], "NV8"], [[68168, 68175], "disallowed"], [[68176, 68184], "valid", [], "NV8"], [[68185, 68191], "disallowed"], [[68192, 68220], "valid"], [[68221, 68223], "valid", [], "NV8"], [[68224, 68252], "valid"], [[68253, 68255], "valid", [], "NV8"], [[68256, 68287], "disallowed"], [[68288, 68295], "valid"], [[68296, 68296], "valid", [], "NV8"], [[68297, 68326], "valid"], [[68327, 68330], "disallowed"], [[68331, 68342], "valid", [], "NV8"], [[68343, 68351], "disallowed"], [[68352, 68405], "valid"], [[68406, 68408], "disallowed"], [[68409, 68415], "valid", [], "NV8"], [[68416, 68437], "valid"], [[68438, 68439], "disallowed"], [[68440, 68447], "valid", [], "NV8"], [[68448, 68466], "valid"], [[68467, 68471], "disallowed"], [[68472, 68479], "valid", [], "NV8"], [[68480, 68497], "valid"], [[68498, 68504], "disallowed"], [[68505, 68508], "valid", [], "NV8"], [[68509, 68520], "disallowed"], [[68521, 68527], "valid", [], "NV8"], [[68528, 68607], "disallowed"], [[68608, 68680], "valid"], [[68681, 68735], "disallowed"], [[68736, 68736], "mapped", [68800]], [[68737, 68737], "mapped", [68801]], [[68738, 68738], "mapped", [68802]], [[68739, 68739], "mapped", [68803]], [[68740, 68740], "mapped", [68804]], [[68741, 68741], "mapped", [68805]], [[68742, 68742], "mapped", [68806]], [[68743, 68743], "mapped", [68807]], [[68744, 68744], "mapped", [68808]], [[68745, 68745], "mapped", [68809]], [[68746, 68746], "mapped", [68810]], [[68747, 68747], "mapped", [68811]], [[68748, 68748], "mapped", [68812]], [[68749, 68749], "mapped", [68813]], [[68750, 68750], "mapped", [68814]], [[68751, 68751], "mapped", [68815]], [[68752, 68752], "mapped", [68816]], [[68753, 68753], "mapped", [68817]], [[68754, 68754], "mapped", [68818]], [[68755, 68755], "mapped", [68819]], [[68756, 68756], "mapped", [68820]], [[68757, 68757], "mapped", [68821]], [[68758, 68758], "mapped", [68822]], [[68759, 68759], "mapped", [68823]], [[68760, 68760], "mapped", [68824]], [[68761, 68761], "mapped", [68825]], [[68762, 68762], "mapped", [68826]], [[68763, 68763], "mapped", [68827]], [[68764, 68764], "mapped", [68828]], [[68765, 68765], "mapped", [68829]], [[68766, 68766], "mapped", [68830]], [[68767, 68767], "mapped", [68831]], [[68768, 68768], "mapped", [68832]], [[68769, 68769], "mapped", [68833]], [[68770, 68770], "mapped", [68834]], [[68771, 68771], "mapped", [68835]], [[68772, 68772], "mapped", [68836]], [[68773, 68773], "mapped", [68837]], [[68774, 68774], "mapped", [68838]], [[68775, 68775], "mapped", [68839]], [[68776, 68776], "mapped", [68840]], [[68777, 68777], "mapped", [68841]], [[68778, 68778], "mapped", [68842]], [[68779, 68779], "mapped", [68843]], [[68780, 68780], "mapped", [68844]], [[68781, 68781], "mapped", [68845]], [[68782, 68782], "mapped", [68846]], [[68783, 68783], "mapped", [68847]], [[68784, 68784], "mapped", [68848]], [[68785, 68785], "mapped", [68849]], [[68786, 68786], "mapped", [68850]], [[68787, 68799], "disallowed"], [[68800, 68850], "valid"], [[68851, 68857], "disallowed"], [[68858, 68863], "valid", [], "NV8"], [[68864, 69215], "disallowed"], [[69216, 69246], "valid", [], "NV8"], [[69247, 69631], "disallowed"], [[69632, 69702], "valid"], [[69703, 69709], "valid", [], "NV8"], [[69710, 69713], "disallowed"], [[69714, 69733], "valid", [], "NV8"], [[69734, 69743], "valid"], [[69744, 69758], "disallowed"], [[69759, 69759], "valid"], [[69760, 69818], "valid"], [[69819, 69820], "valid", [], "NV8"], [[69821, 69821], "disallowed"], [[69822, 69825], "valid", [], "NV8"], [[69826, 69839], "disallowed"], [[69840, 69864], "valid"], [[69865, 69871], "disallowed"], [[69872, 69881], "valid"], [[69882, 69887], "disallowed"], [[69888, 69940], "valid"], [[69941, 69941], "disallowed"], [[69942, 69951], "valid"], [[69952, 69955], "valid", [], "NV8"], [[69956, 69967], "disallowed"], [[69968, 70003], "valid"], [[70004, 70005], "valid", [], "NV8"], [[70006, 70006], "valid"], [[70007, 70015], "disallowed"], [[70016, 70084], "valid"], [[70085, 70088], "valid", [], "NV8"], [[70089, 70089], "valid", [], "NV8"], [[70090, 70092], "valid"], [[70093, 70093], "valid", [], "NV8"], [[70094, 70095], "disallowed"], [[70096, 70105], "valid"], [[70106, 70106], "valid"], [[70107, 70107], "valid", [], "NV8"], [[70108, 70108], "valid"], [[70109, 70111], "valid", [], "NV8"], [[70112, 70112], "disallowed"], [[70113, 70132], "valid", [], "NV8"], [[70133, 70143], "disallowed"], [[70144, 70161], "valid"], [[70162, 70162], "disallowed"], [[70163, 70199], "valid"], [[70200, 70205], "valid", [], "NV8"], [[70206, 70271], "disallowed"], [[70272, 70278], "valid"], [[70279, 70279], "disallowed"], [[70280, 70280], "valid"], [[70281, 70281], "disallowed"], [[70282, 70285], "valid"], [[70286, 70286], "disallowed"], [[70287, 70301], "valid"], [[70302, 70302], "disallowed"], [[70303, 70312], "valid"], [[70313, 70313], "valid", [], "NV8"], [[70314, 70319], "disallowed"], [[70320, 70378], "valid"], [[70379, 70383], "disallowed"], [[70384, 70393], "valid"], [[70394, 70399], "disallowed"], [[70400, 70400], "valid"], [[70401, 70403], "valid"], [[70404, 70404], "disallowed"], [[70405, 70412], "valid"], [[70413, 70414], "disallowed"], [[70415, 70416], "valid"], [[70417, 70418], "disallowed"], [[70419, 70440], "valid"], [[70441, 70441], "disallowed"], [[70442, 70448], "valid"], [[70449, 70449], "disallowed"], [[70450, 70451], "valid"], [[70452, 70452], "disallowed"], [[70453, 70457], "valid"], [[70458, 70459], "disallowed"], [[70460, 70468], "valid"], [[70469, 70470], "disallowed"], [[70471, 70472], "valid"], [[70473, 70474], "disallowed"], [[70475, 70477], "valid"], [[70478, 70479], "disallowed"], [[70480, 70480], "valid"], [[70481, 70486], "disallowed"], [[70487, 70487], "valid"], [[70488, 70492], "disallowed"], [[70493, 70499], "valid"], [[70500, 70501], "disallowed"], [[70502, 70508], "valid"], [[70509, 70511], "disallowed"], [[70512, 70516], "valid"], [[70517, 70783], "disallowed"], [[70784, 70853], "valid"], [[70854, 70854], "valid", [], "NV8"], [[70855, 70855], "valid"], [[70856, 70863], "disallowed"], [[70864, 70873], "valid"], [[70874, 71039], "disallowed"], [[71040, 71093], "valid"], [[71094, 71095], "disallowed"], [[71096, 71104], "valid"], [[71105, 71113], "valid", [], "NV8"], [[71114, 71127], "valid", [], "NV8"], [[71128, 71133], "valid"], [[71134, 71167], "disallowed"], [[71168, 71232], "valid"], [[71233, 71235], "valid", [], "NV8"], [[71236, 71236], "valid"], [[71237, 71247], "disallowed"], [[71248, 71257], "valid"], [[71258, 71295], "disallowed"], [[71296, 71351], "valid"], [[71352, 71359], "disallowed"], [[71360, 71369], "valid"], [[71370, 71423], "disallowed"], [[71424, 71449], "valid"], [[71450, 71452], "disallowed"], [[71453, 71467], "valid"], [[71468, 71471], "disallowed"], [[71472, 71481], "valid"], [[71482, 71487], "valid", [], "NV8"], [[71488, 71839], "disallowed"], [[71840, 71840], "mapped", [71872]], [[71841, 71841], "mapped", [71873]], [[71842, 71842], "mapped", [71874]], [[71843, 71843], "mapped", [71875]], [[71844, 71844], "mapped", [71876]], [[71845, 71845], "mapped", [71877]], [[71846, 71846], "mapped", [71878]], [[71847, 71847], "mapped", [71879]], [[71848, 71848], "mapped", [71880]], [[71849, 71849], "mapped", [71881]], [[71850, 71850], "mapped", [71882]], [[71851, 71851], "mapped", [71883]], [[71852, 71852], "mapped", [71884]], [[71853, 71853], "mapped", [71885]], [[71854, 71854], "mapped", [71886]], [[71855, 71855], "mapped", [71887]], [[71856, 71856], "mapped", [71888]], [[71857, 71857], "mapped", [71889]], [[71858, 71858], "mapped", [71890]], [[71859, 71859], "mapped", [71891]], [[71860, 71860], "mapped", [71892]], [[71861, 71861], "mapped", [71893]], [[71862, 71862], "mapped", [71894]], [[71863, 71863], "mapped", [71895]], [[71864, 71864], "mapped", [71896]], [[71865, 71865], "mapped", [71897]], [[71866, 71866], "mapped", [71898]], [[71867, 71867], "mapped", [71899]], [[71868, 71868], "mapped", [71900]], [[71869, 71869], "mapped", [71901]], [[71870, 71870], "mapped", [71902]], [[71871, 71871], "mapped", [71903]], [[71872, 71913], "valid"], [[71914, 71922], "valid", [], "NV8"], [[71923, 71934], "disallowed"], [[71935, 71935], "valid"], [[71936, 72383], "disallowed"], [[72384, 72440], "valid"], [[72441, 73727], "disallowed"], [[73728, 74606], "valid"], [[74607, 74648], "valid"], [[74649, 74649], "valid"], [[74650, 74751], "disallowed"], [[74752, 74850], "valid", [], "NV8"], [[74851, 74862], "valid", [], "NV8"], [[74863, 74863], "disallowed"], [[74864, 74867], "valid", [], "NV8"], [[74868, 74868], "valid", [], "NV8"], [[74869, 74879], "disallowed"], [[74880, 75075], "valid"], [[75076, 77823], "disallowed"], [[77824, 78894], "valid"], [[78895, 82943], "disallowed"], [[82944, 83526], "valid"], [[83527, 92159], "disallowed"], [[92160, 92728], "valid"], [[92729, 92735], "disallowed"], [[92736, 92766], "valid"], [[92767, 92767], "disallowed"], [[92768, 92777], "valid"], [[92778, 92781], "disallowed"], [[92782, 92783], "valid", [], "NV8"], [[92784, 92879], "disallowed"], [[92880, 92909], "valid"], [[92910, 92911], "disallowed"], [[92912, 92916], "valid"], [[92917, 92917], "valid", [], "NV8"], [[92918, 92927], "disallowed"], [[92928, 92982], "valid"], [[92983, 92991], "valid", [], "NV8"], [[92992, 92995], "valid"], [[92996, 92997], "valid", [], "NV8"], [[92998, 93007], "disallowed"], [[93008, 93017], "valid"], [[93018, 93018], "disallowed"], [[93019, 93025], "valid", [], "NV8"], [[93026, 93026], "disallowed"], [[93027, 93047], "valid"], [[93048, 93052], "disallowed"], [[93053, 93071], "valid"], [[93072, 93951], "disallowed"], [[93952, 94020], "valid"], [[94021, 94031], "disallowed"], [[94032, 94078], "valid"], [[94079, 94094], "disallowed"], [[94095, 94111], "valid"], [[94112, 110591], "disallowed"], [[110592, 110593], "valid"], [[110594, 113663], "disallowed"], [[113664, 113770], "valid"], [[113771, 113775], "disallowed"], [[113776, 113788], "valid"], [[113789, 113791], "disallowed"], [[113792, 113800], "valid"], [[113801, 113807], "disallowed"], [[113808, 113817], "valid"], [[113818, 113819], "disallowed"], [[113820, 113820], "valid", [], "NV8"], [[113821, 113822], "valid"], [[113823, 113823], "valid", [], "NV8"], [[113824, 113827], "ignored"], [[113828, 118783], "disallowed"], [[118784, 119029], "valid", [], "NV8"], [[119030, 119039], "disallowed"], [[119040, 119078], "valid", [], "NV8"], [[119079, 119080], "disallowed"], [[119081, 119081], "valid", [], "NV8"], [[119082, 119133], "valid", [], "NV8"], [[119134, 119134], "mapped", [119127, 119141]], [[119135, 119135], "mapped", [119128, 119141]], [[119136, 119136], "mapped", [119128, 119141, 119150]], [[119137, 119137], "mapped", [119128, 119141, 119151]], [[119138, 119138], "mapped", [119128, 119141, 119152]], [[119139, 119139], "mapped", [119128, 119141, 119153]], [[119140, 119140], "mapped", [119128, 119141, 119154]], [[119141, 119154], "valid", [], "NV8"], [[119155, 119162], "disallowed"], [[119163, 119226], "valid", [], "NV8"], [[119227, 119227], "mapped", [119225, 119141]], [[119228, 119228], "mapped", [119226, 119141]], [[119229, 119229], "mapped", [119225, 119141, 119150]], [[119230, 119230], "mapped", [119226, 119141, 119150]], [[119231, 119231], "mapped", [119225, 119141, 119151]], [[119232, 119232], "mapped", [119226, 119141, 119151]], [[119233, 119261], "valid", [], "NV8"], [[119262, 119272], "valid", [], "NV8"], [[119273, 119295], "disallowed"], [[119296, 119365], "valid", [], "NV8"], [[119366, 119551], "disallowed"], [[119552, 119638], "valid", [], "NV8"], [[119639, 119647], "disallowed"], [[119648, 119665], "valid", [], "NV8"], [[119666, 119807], "disallowed"], [[119808, 119808], "mapped", [97]], [[119809, 119809], "mapped", [98]], [[119810, 119810], "mapped", [99]], [[119811, 119811], "mapped", [100]], [[119812, 119812], "mapped", [101]], [[119813, 119813], "mapped", [102]], [[119814, 119814], "mapped", [103]], [[119815, 119815], "mapped", [104]], [[119816, 119816], "mapped", [105]], [[119817, 119817], "mapped", [106]], [[119818, 119818], "mapped", [107]], [[119819, 119819], "mapped", [108]], [[119820, 119820], "mapped", [109]], [[119821, 119821], "mapped", [110]], [[119822, 119822], "mapped", [111]], [[119823, 119823], "mapped", [112]], [[119824, 119824], "mapped", [113]], [[119825, 119825], "mapped", [114]], [[119826, 119826], "mapped", [115]], [[119827, 119827], "mapped", [116]], [[119828, 119828], "mapped", [117]], [[119829, 119829], "mapped", [118]], [[119830, 119830], "mapped", [119]], [[119831, 119831], "mapped", [120]], [[119832, 119832], "mapped", [121]], [[119833, 119833], "mapped", [122]], [[119834, 119834], "mapped", [97]], [[119835, 119835], "mapped", [98]], [[119836, 119836], "mapped", [99]], [[119837, 119837], "mapped", [100]], [[119838, 119838], "mapped", [101]], [[119839, 119839], "mapped", [102]], [[119840, 119840], "mapped", [103]], [[119841, 119841], "mapped", [104]], [[119842, 119842], "mapped", [105]], [[119843, 119843], "mapped", [106]], [[119844, 119844], "mapped", [107]], [[119845, 119845], "mapped", [108]], [[119846, 119846], "mapped", [109]], [[119847, 119847], "mapped", [110]], [[119848, 119848], "mapped", [111]], [[119849, 119849], "mapped", [112]], [[119850, 119850], "mapped", [113]], [[119851, 119851], "mapped", [114]], [[119852, 119852], "mapped", [115]], [[119853, 119853], "mapped", [116]], [[119854, 119854], "mapped", [117]], [[119855, 119855], "mapped", [118]], [[119856, 119856], "mapped", [119]], [[119857, 119857], "mapped", [120]], [[119858, 119858], "mapped", [121]], [[119859, 119859], "mapped", [122]], [[119860, 119860], "mapped", [97]], [[119861, 119861], "mapped", [98]], [[119862, 119862], "mapped", [99]], [[119863, 119863], "mapped", [100]], [[119864, 119864], "mapped", [101]], [[119865, 119865], "mapped", [102]], [[119866, 119866], "mapped", [103]], [[119867, 119867], "mapped", [104]], [[119868, 119868], "mapped", [105]], [[119869, 119869], "mapped", [106]], [[119870, 119870], "mapped", [107]], [[119871, 119871], "mapped", [108]], [[119872, 119872], "mapped", [109]], [[119873, 119873], "mapped", [110]], [[119874, 119874], "mapped", [111]], [[119875, 119875], "mapped", [112]], [[119876, 119876], "mapped", [113]], [[119877, 119877], "mapped", [114]], [[119878, 119878], "mapped", [115]], [[119879, 119879], "mapped", [116]], [[119880, 119880], "mapped", [117]], [[119881, 119881], "mapped", [118]], [[119882, 119882], "mapped", [119]], [[119883, 119883], "mapped", [120]], [[119884, 119884], "mapped", [121]], [[119885, 119885], "mapped", [122]], [[119886, 119886], "mapped", [97]], [[119887, 119887], "mapped", [98]], [[119888, 119888], "mapped", [99]], [[119889, 119889], "mapped", [100]], [[119890, 119890], "mapped", [101]], [[119891, 119891], "mapped", [102]], [[119892, 119892], "mapped", [103]], [[119893, 119893], "disallowed"], [[119894, 119894], "mapped", [105]], [[119895, 119895], "mapped", [106]], [[119896, 119896], "mapped", [107]], [[119897, 119897], "mapped", [108]], [[119898, 119898], "mapped", [109]], [[119899, 119899], "mapped", [110]], [[119900, 119900], "mapped", [111]], [[119901, 119901], "mapped", [112]], [[119902, 119902], "mapped", [113]], [[119903, 119903], "mapped", [114]], [[119904, 119904], "mapped", [115]], [[119905, 119905], "mapped", [116]], [[119906, 119906], "mapped", [117]], [[119907, 119907], "mapped", [118]], [[119908, 119908], "mapped", [119]], [[119909, 119909], "mapped", [120]], [[119910, 119910], "mapped", [121]], [[119911, 119911], "mapped", [122]], [[119912, 119912], "mapped", [97]], [[119913, 119913], "mapped", [98]], [[119914, 119914], "mapped", [99]], [[119915, 119915], "mapped", [100]], [[119916, 119916], "mapped", [101]], [[119917, 119917], "mapped", [102]], [[119918, 119918], "mapped", [103]], [[119919, 119919], "mapped", [104]], [[119920, 119920], "mapped", [105]], [[119921, 119921], "mapped", [106]], [[119922, 119922], "mapped", [107]], [[119923, 119923], "mapped", [108]], [[119924, 119924], "mapped", [109]], [[119925, 119925], "mapped", [110]], [[119926, 119926], "mapped", [111]], [[119927, 119927], "mapped", [112]], [[119928, 119928], "mapped", [113]], [[119929, 119929], "mapped", [114]], [[119930, 119930], "mapped", [115]], [[119931, 119931], "mapped", [116]], [[119932, 119932], "mapped", [117]], [[119933, 119933], "mapped", [118]], [[119934, 119934], "mapped", [119]], [[119935, 119935], "mapped", [120]], [[119936, 119936], "mapped", [121]], [[119937, 119937], "mapped", [122]], [[119938, 119938], "mapped", [97]], [[119939, 119939], "mapped", [98]], [[119940, 119940], "mapped", [99]], [[119941, 119941], "mapped", [100]], [[119942, 119942], "mapped", [101]], [[119943, 119943], "mapped", [102]], [[119944, 119944], "mapped", [103]], [[119945, 119945], "mapped", [104]], [[119946, 119946], "mapped", [105]], [[119947, 119947], "mapped", [106]], [[119948, 119948], "mapped", [107]], [[119949, 119949], "mapped", [108]], [[119950, 119950], "mapped", [109]], [[119951, 119951], "mapped", [110]], [[119952, 119952], "mapped", [111]], [[119953, 119953], "mapped", [112]], [[119954, 119954], "mapped", [113]], [[119955, 119955], "mapped", [114]], [[119956, 119956], "mapped", [115]], [[119957, 119957], "mapped", [116]], [[119958, 119958], "mapped", [117]], [[119959, 119959], "mapped", [118]], [[119960, 119960], "mapped", [119]], [[119961, 119961], "mapped", [120]], [[119962, 119962], "mapped", [121]], [[119963, 119963], "mapped", [122]], [[119964, 119964], "mapped", [97]], [[119965, 119965], "disallowed"], [[119966, 119966], "mapped", [99]], [[119967, 119967], "mapped", [100]], [[119968, 119969], "disallowed"], [[119970, 119970], "mapped", [103]], [[119971, 119972], "disallowed"], [[119973, 119973], "mapped", [106]], [[119974, 119974], "mapped", [107]], [[119975, 119976], "disallowed"], [[119977, 119977], "mapped", [110]], [[119978, 119978], "mapped", [111]], [[119979, 119979], "mapped", [112]], [[119980, 119980], "mapped", [113]], [[119981, 119981], "disallowed"], [[119982, 119982], "mapped", [115]], [[119983, 119983], "mapped", [116]], [[119984, 119984], "mapped", [117]], [[119985, 119985], "mapped", [118]], [[119986, 119986], "mapped", [119]], [[119987, 119987], "mapped", [120]], [[119988, 119988], "mapped", [121]], [[119989, 119989], "mapped", [122]], [[119990, 119990], "mapped", [97]], [[119991, 119991], "mapped", [98]], [[119992, 119992], "mapped", [99]], [[119993, 119993], "mapped", [100]], [[119994, 119994], "disallowed"], [[119995, 119995], "mapped", [102]], [[119996, 119996], "disallowed"], [[119997, 119997], "mapped", [104]], [[119998, 119998], "mapped", [105]], [[119999, 119999], "mapped", [106]], [[12e4, 12e4], "mapped", [107]], [[120001, 120001], "mapped", [108]], [[120002, 120002], "mapped", [109]], [[120003, 120003], "mapped", [110]], [[120004, 120004], "disallowed"], [[120005, 120005], "mapped", [112]], [[120006, 120006], "mapped", [113]], [[120007, 120007], "mapped", [114]], [[120008, 120008], "mapped", [115]], [[120009, 120009], "mapped", [116]], [[120010, 120010], "mapped", [117]], [[120011, 120011], "mapped", [118]], [[120012, 120012], "mapped", [119]], [[120013, 120013], "mapped", [120]], [[120014, 120014], "mapped", [121]], [[120015, 120015], "mapped", [122]], [[120016, 120016], "mapped", [97]], [[120017, 120017], "mapped", [98]], [[120018, 120018], "mapped", [99]], [[120019, 120019], "mapped", [100]], [[120020, 120020], "mapped", [101]], [[120021, 120021], "mapped", [102]], [[120022, 120022], "mapped", [103]], [[120023, 120023], "mapped", [104]], [[120024, 120024], "mapped", [105]], [[120025, 120025], "mapped", [106]], [[120026, 120026], "mapped", [107]], [[120027, 120027], "mapped", [108]], [[120028, 120028], "mapped", [109]], [[120029, 120029], "mapped", [110]], [[120030, 120030], "mapped", [111]], [[120031, 120031], "mapped", [112]], [[120032, 120032], "mapped", [113]], [[120033, 120033], "mapped", [114]], [[120034, 120034], "mapped", [115]], [[120035, 120035], "mapped", [116]], [[120036, 120036], "mapped", [117]], [[120037, 120037], "mapped", [118]], [[120038, 120038], "mapped", [119]], [[120039, 120039], "mapped", [120]], [[120040, 120040], "mapped", [121]], [[120041, 120041], "mapped", [122]], [[120042, 120042], "mapped", [97]], [[120043, 120043], "mapped", [98]], [[120044, 120044], "mapped", [99]], [[120045, 120045], "mapped", [100]], [[120046, 120046], "mapped", [101]], [[120047, 120047], "mapped", [102]], [[120048, 120048], "mapped", [103]], [[120049, 120049], "mapped", [104]], [[120050, 120050], "mapped", [105]], [[120051, 120051], "mapped", [106]], [[120052, 120052], "mapped", [107]], [[120053, 120053], "mapped", [108]], [[120054, 120054], "mapped", [109]], [[120055, 120055], "mapped", [110]], [[120056, 120056], "mapped", [111]], [[120057, 120057], "mapped", [112]], [[120058, 120058], "mapped", [113]], [[120059, 120059], "mapped", [114]], [[120060, 120060], "mapped", [115]], [[120061, 120061], "mapped", [116]], [[120062, 120062], "mapped", [117]], [[120063, 120063], "mapped", [118]], [[120064, 120064], "mapped", [119]], [[120065, 120065], "mapped", [120]], [[120066, 120066], "mapped", [121]], [[120067, 120067], "mapped", [122]], [[120068, 120068], "mapped", [97]], [[120069, 120069], "mapped", [98]], [[120070, 120070], "disallowed"], [[120071, 120071], "mapped", [100]], [[120072, 120072], "mapped", [101]], [[120073, 120073], "mapped", [102]], [[120074, 120074], "mapped", [103]], [[120075, 120076], "disallowed"], [[120077, 120077], "mapped", [106]], [[120078, 120078], "mapped", [107]], [[120079, 120079], "mapped", [108]], [[120080, 120080], "mapped", [109]], [[120081, 120081], "mapped", [110]], [[120082, 120082], "mapped", [111]], [[120083, 120083], "mapped", [112]], [[120084, 120084], "mapped", [113]], [[120085, 120085], "disallowed"], [[120086, 120086], "mapped", [115]], [[120087, 120087], "mapped", [116]], [[120088, 120088], "mapped", [117]], [[120089, 120089], "mapped", [118]], [[120090, 120090], "mapped", [119]], [[120091, 120091], "mapped", [120]], [[120092, 120092], "mapped", [121]], [[120093, 120093], "disallowed"], [[120094, 120094], "mapped", [97]], [[120095, 120095], "mapped", [98]], [[120096, 120096], "mapped", [99]], [[120097, 120097], "mapped", [100]], [[120098, 120098], "mapped", [101]], [[120099, 120099], "mapped", [102]], [[120100, 120100], "mapped", [103]], [[120101, 120101], "mapped", [104]], [[120102, 120102], "mapped", [105]], [[120103, 120103], "mapped", [106]], [[120104, 120104], "mapped", [107]], [[120105, 120105], "mapped", [108]], [[120106, 120106], "mapped", [109]], [[120107, 120107], "mapped", [110]], [[120108, 120108], "mapped", [111]], [[120109, 120109], "mapped", [112]], [[120110, 120110], "mapped", [113]], [[120111, 120111], "mapped", [114]], [[120112, 120112], "mapped", [115]], [[120113, 120113], "mapped", [116]], [[120114, 120114], "mapped", [117]], [[120115, 120115], "mapped", [118]], [[120116, 120116], "mapped", [119]], [[120117, 120117], "mapped", [120]], [[120118, 120118], "mapped", [121]], [[120119, 120119], "mapped", [122]], [[120120, 120120], "mapped", [97]], [[120121, 120121], "mapped", [98]], [[120122, 120122], "disallowed"], [[120123, 120123], "mapped", [100]], [[120124, 120124], "mapped", [101]], [[120125, 120125], "mapped", [102]], [[120126, 120126], "mapped", [103]], [[120127, 120127], "disallowed"], [[120128, 120128], "mapped", [105]], [[120129, 120129], "mapped", [106]], [[120130, 120130], "mapped", [107]], [[120131, 120131], "mapped", [108]], [[120132, 120132], "mapped", [109]], [[120133, 120133], "disallowed"], [[120134, 120134], "mapped", [111]], [[120135, 120137], "disallowed"], [[120138, 120138], "mapped", [115]], [[120139, 120139], "mapped", [116]], [[120140, 120140], "mapped", [117]], [[120141, 120141], "mapped", [118]], [[120142, 120142], "mapped", [119]], [[120143, 120143], "mapped", [120]], [[120144, 120144], "mapped", [121]], [[120145, 120145], "disallowed"], [[120146, 120146], "mapped", [97]], [[120147, 120147], "mapped", [98]], [[120148, 120148], "mapped", [99]], [[120149, 120149], "mapped", [100]], [[120150, 120150], "mapped", [101]], [[120151, 120151], "mapped", [102]], [[120152, 120152], "mapped", [103]], [[120153, 120153], "mapped", [104]], [[120154, 120154], "mapped", [105]], [[120155, 120155], "mapped", [106]], [[120156, 120156], "mapped", [107]], [[120157, 120157], "mapped", [108]], [[120158, 120158], "mapped", [109]], [[120159, 120159], "mapped", [110]], [[120160, 120160], "mapped", [111]], [[120161, 120161], "mapped", [112]], [[120162, 120162], "mapped", [113]], [[120163, 120163], "mapped", [114]], [[120164, 120164], "mapped", [115]], [[120165, 120165], "mapped", [116]], [[120166, 120166], "mapped", [117]], [[120167, 120167], "mapped", [118]], [[120168, 120168], "mapped", [119]], [[120169, 120169], "mapped", [120]], [[120170, 120170], "mapped", [121]], [[120171, 120171], "mapped", [122]], [[120172, 120172], "mapped", [97]], [[120173, 120173], "mapped", [98]], [[120174, 120174], "mapped", [99]], [[120175, 120175], "mapped", [100]], [[120176, 120176], "mapped", [101]], [[120177, 120177], "mapped", [102]], [[120178, 120178], "mapped", [103]], [[120179, 120179], "mapped", [104]], [[120180, 120180], "mapped", [105]], [[120181, 120181], "mapped", [106]], [[120182, 120182], "mapped", [107]], [[120183, 120183], "mapped", [108]], [[120184, 120184], "mapped", [109]], [[120185, 120185], "mapped", [110]], [[120186, 120186], "mapped", [111]], [[120187, 120187], "mapped", [112]], [[120188, 120188], "mapped", [113]], [[120189, 120189], "mapped", [114]], [[120190, 120190], "mapped", [115]], [[120191, 120191], "mapped", [116]], [[120192, 120192], "mapped", [117]], [[120193, 120193], "mapped", [118]], [[120194, 120194], "mapped", [119]], [[120195, 120195], "mapped", [120]], [[120196, 120196], "mapped", [121]], [[120197, 120197], "mapped", [122]], [[120198, 120198], "mapped", [97]], [[120199, 120199], "mapped", [98]], [[120200, 120200], "mapped", [99]], [[120201, 120201], "mapped", [100]], [[120202, 120202], "mapped", [101]], [[120203, 120203], "mapped", [102]], [[120204, 120204], "mapped", [103]], [[120205, 120205], "mapped", [104]], [[120206, 120206], "mapped", [105]], [[120207, 120207], "mapped", [106]], [[120208, 120208], "mapped", [107]], [[120209, 120209], "mapped", [108]], [[120210, 120210], "mapped", [109]], [[120211, 120211], "mapped", [110]], [[120212, 120212], "mapped", [111]], [[120213, 120213], "mapped", [112]], [[120214, 120214], "mapped", [113]], [[120215, 120215], "mapped", [114]], [[120216, 120216], "mapped", [115]], [[120217, 120217], "mapped", [116]], [[120218, 120218], "mapped", [117]], [[120219, 120219], "mapped", [118]], [[120220, 120220], "mapped", [119]], [[120221, 120221], "mapped", [120]], [[120222, 120222], "mapped", [121]], [[120223, 120223], "mapped", [122]], [[120224, 120224], "mapped", [97]], [[120225, 120225], "mapped", [98]], [[120226, 120226], "mapped", [99]], [[120227, 120227], "mapped", [100]], [[120228, 120228], "mapped", [101]], [[120229, 120229], "mapped", [102]], [[120230, 120230], "mapped", [103]], [[120231, 120231], "mapped", [104]], [[120232, 120232], "mapped", [105]], [[120233, 120233], "mapped", [106]], [[120234, 120234], "mapped", [107]], [[120235, 120235], "mapped", [108]], [[120236, 120236], "mapped", [109]], [[120237, 120237], "mapped", [110]], [[120238, 120238], "mapped", [111]], [[120239, 120239], "mapped", [112]], [[120240, 120240], "mapped", [113]], [[120241, 120241], "mapped", [114]], [[120242, 120242], "mapped", [115]], [[120243, 120243], "mapped", [116]], [[120244, 120244], "mapped", [117]], [[120245, 120245], "mapped", [118]], [[120246, 120246], "mapped", [119]], [[120247, 120247], "mapped", [120]], [[120248, 120248], "mapped", [121]], [[120249, 120249], "mapped", [122]], [[120250, 120250], "mapped", [97]], [[120251, 120251], "mapped", [98]], [[120252, 120252], "mapped", [99]], [[120253, 120253], "mapped", [100]], [[120254, 120254], "mapped", [101]], [[120255, 120255], "mapped", [102]], [[120256, 120256], "mapped", [103]], [[120257, 120257], "mapped", [104]], [[120258, 120258], "mapped", [105]], [[120259, 120259], "mapped", [106]], [[120260, 120260], "mapped", [107]], [[120261, 120261], "mapped", [108]], [[120262, 120262], "mapped", [109]], [[120263, 120263], "mapped", [110]], [[120264, 120264], "mapped", [111]], [[120265, 120265], "mapped", [112]], [[120266, 120266], "mapped", [113]], [[120267, 120267], "mapped", [114]], [[120268, 120268], "mapped", [115]], [[120269, 120269], "mapped", [116]], [[120270, 120270], "mapped", [117]], [[120271, 120271], "mapped", [118]], [[120272, 120272], "mapped", [119]], [[120273, 120273], "mapped", [120]], [[120274, 120274], "mapped", [121]], [[120275, 120275], "mapped", [122]], [[120276, 120276], "mapped", [97]], [[120277, 120277], "mapped", [98]], [[120278, 120278], "mapped", [99]], [[120279, 120279], "mapped", [100]], [[120280, 120280], "mapped", [101]], [[120281, 120281], "mapped", [102]], [[120282, 120282], "mapped", [103]], [[120283, 120283], "mapped", [104]], [[120284, 120284], "mapped", [105]], [[120285, 120285], "mapped", [106]], [[120286, 120286], "mapped", [107]], [[120287, 120287], "mapped", [108]], [[120288, 120288], "mapped", [109]], [[120289, 120289], "mapped", [110]], [[120290, 120290], "mapped", [111]], [[120291, 120291], "mapped", [112]], [[120292, 120292], "mapped", [113]], [[120293, 120293], "mapped", [114]], [[120294, 120294], "mapped", [115]], [[120295, 120295], "mapped", [116]], [[120296, 120296], "mapped", [117]], [[120297, 120297], "mapped", [118]], [[120298, 120298], "mapped", [119]], [[120299, 120299], "mapped", [120]], [[120300, 120300], "mapped", [121]], [[120301, 120301], "mapped", [122]], [[120302, 120302], "mapped", [97]], [[120303, 120303], "mapped", [98]], [[120304, 120304], "mapped", [99]], [[120305, 120305], "mapped", [100]], [[120306, 120306], "mapped", [101]], [[120307, 120307], "mapped", [102]], [[120308, 120308], "mapped", [103]], [[120309, 120309], "mapped", [104]], [[120310, 120310], "mapped", [105]], [[120311, 120311], "mapped", [106]], [[120312, 120312], "mapped", [107]], [[120313, 120313], "mapped", [108]], [[120314, 120314], "mapped", [109]], [[120315, 120315], "mapped", [110]], [[120316, 120316], "mapped", [111]], [[120317, 120317], "mapped", [112]], [[120318, 120318], "mapped", [113]], [[120319, 120319], "mapped", [114]], [[120320, 120320], "mapped", [115]], [[120321, 120321], "mapped", [116]], [[120322, 120322], "mapped", [117]], [[120323, 120323], "mapped", [118]], [[120324, 120324], "mapped", [119]], [[120325, 120325], "mapped", [120]], [[120326, 120326], "mapped", [121]], [[120327, 120327], "mapped", [122]], [[120328, 120328], "mapped", [97]], [[120329, 120329], "mapped", [98]], [[120330, 120330], "mapped", [99]], [[120331, 120331], "mapped", [100]], [[120332, 120332], "mapped", [101]], [[120333, 120333], "mapped", [102]], [[120334, 120334], "mapped", [103]], [[120335, 120335], "mapped", [104]], [[120336, 120336], "mapped", [105]], [[120337, 120337], "mapped", [106]], [[120338, 120338], "mapped", [107]], [[120339, 120339], "mapped", [108]], [[120340, 120340], "mapped", [109]], [[120341, 120341], "mapped", [110]], [[120342, 120342], "mapped", [111]], [[120343, 120343], "mapped", [112]], [[120344, 120344], "mapped", [113]], [[120345, 120345], "mapped", [114]], [[120346, 120346], "mapped", [115]], [[120347, 120347], "mapped", [116]], [[120348, 120348], "mapped", [117]], [[120349, 120349], "mapped", [118]], [[120350, 120350], "mapped", [119]], [[120351, 120351], "mapped", [120]], [[120352, 120352], "mapped", [121]], [[120353, 120353], "mapped", [122]], [[120354, 120354], "mapped", [97]], [[120355, 120355], "mapped", [98]], [[120356, 120356], "mapped", [99]], [[120357, 120357], "mapped", [100]], [[120358, 120358], "mapped", [101]], [[120359, 120359], "mapped", [102]], [[120360, 120360], "mapped", [103]], [[120361, 120361], "mapped", [104]], [[120362, 120362], "mapped", [105]], [[120363, 120363], "mapped", [106]], [[120364, 120364], "mapped", [107]], [[120365, 120365], "mapped", [108]], [[120366, 120366], "mapped", [109]], [[120367, 120367], "mapped", [110]], [[120368, 120368], "mapped", [111]], [[120369, 120369], "mapped", [112]], [[120370, 120370], "mapped", [113]], [[120371, 120371], "mapped", [114]], [[120372, 120372], "mapped", [115]], [[120373, 120373], "mapped", [116]], [[120374, 120374], "mapped", [117]], [[120375, 120375], "mapped", [118]], [[120376, 120376], "mapped", [119]], [[120377, 120377], "mapped", [120]], [[120378, 120378], "mapped", [121]], [[120379, 120379], "mapped", [122]], [[120380, 120380], "mapped", [97]], [[120381, 120381], "mapped", [98]], [[120382, 120382], "mapped", [99]], [[120383, 120383], "mapped", [100]], [[120384, 120384], "mapped", [101]], [[120385, 120385], "mapped", [102]], [[120386, 120386], "mapped", [103]], [[120387, 120387], "mapped", [104]], [[120388, 120388], "mapped", [105]], [[120389, 120389], "mapped", [106]], [[120390, 120390], "mapped", [107]], [[120391, 120391], "mapped", [108]], [[120392, 120392], "mapped", [109]], [[120393, 120393], "mapped", [110]], [[120394, 120394], "mapped", [111]], [[120395, 120395], "mapped", [112]], [[120396, 120396], "mapped", [113]], [[120397, 120397], "mapped", [114]], [[120398, 120398], "mapped", [115]], [[120399, 120399], "mapped", [116]], [[120400, 120400], "mapped", [117]], [[120401, 120401], "mapped", [118]], [[120402, 120402], "mapped", [119]], [[120403, 120403], "mapped", [120]], [[120404, 120404], "mapped", [121]], [[120405, 120405], "mapped", [122]], [[120406, 120406], "mapped", [97]], [[120407, 120407], "mapped", [98]], [[120408, 120408], "mapped", [99]], [[120409, 120409], "mapped", [100]], [[120410, 120410], "mapped", [101]], [[120411, 120411], "mapped", [102]], [[120412, 120412], "mapped", [103]], [[120413, 120413], "mapped", [104]], [[120414, 120414], "mapped", [105]], [[120415, 120415], "mapped", [106]], [[120416, 120416], "mapped", [107]], [[120417, 120417], "mapped", [108]], [[120418, 120418], "mapped", [109]], [[120419, 120419], "mapped", [110]], [[120420, 120420], "mapped", [111]], [[120421, 120421], "mapped", [112]], [[120422, 120422], "mapped", [113]], [[120423, 120423], "mapped", [114]], [[120424, 120424], "mapped", [115]], [[120425, 120425], "mapped", [116]], [[120426, 120426], "mapped", [117]], [[120427, 120427], "mapped", [118]], [[120428, 120428], "mapped", [119]], [[120429, 120429], "mapped", [120]], [[120430, 120430], "mapped", [121]], [[120431, 120431], "mapped", [122]], [[120432, 120432], "mapped", [97]], [[120433, 120433], "mapped", [98]], [[120434, 120434], "mapped", [99]], [[120435, 120435], "mapped", [100]], [[120436, 120436], "mapped", [101]], [[120437, 120437], "mapped", [102]], [[120438, 120438], "mapped", [103]], [[120439, 120439], "mapped", [104]], [[120440, 120440], "mapped", [105]], [[120441, 120441], "mapped", [106]], [[120442, 120442], "mapped", [107]], [[120443, 120443], "mapped", [108]], [[120444, 120444], "mapped", [109]], [[120445, 120445], "mapped", [110]], [[120446, 120446], "mapped", [111]], [[120447, 120447], "mapped", [112]], [[120448, 120448], "mapped", [113]], [[120449, 120449], "mapped", [114]], [[120450, 120450], "mapped", [115]], [[120451, 120451], "mapped", [116]], [[120452, 120452], "mapped", [117]], [[120453, 120453], "mapped", [118]], [[120454, 120454], "mapped", [119]], [[120455, 120455], "mapped", [120]], [[120456, 120456], "mapped", [121]], [[120457, 120457], "mapped", [122]], [[120458, 120458], "mapped", [97]], [[120459, 120459], "mapped", [98]], [[120460, 120460], "mapped", [99]], [[120461, 120461], "mapped", [100]], [[120462, 120462], "mapped", [101]], [[120463, 120463], "mapped", [102]], [[120464, 120464], "mapped", [103]], [[120465, 120465], "mapped", [104]], [[120466, 120466], "mapped", [105]], [[120467, 120467], "mapped", [106]], [[120468, 120468], "mapped", [107]], [[120469, 120469], "mapped", [108]], [[120470, 120470], "mapped", [109]], [[120471, 120471], "mapped", [110]], [[120472, 120472], "mapped", [111]], [[120473, 120473], "mapped", [112]], [[120474, 120474], "mapped", [113]], [[120475, 120475], "mapped", [114]], [[120476, 120476], "mapped", [115]], [[120477, 120477], "mapped", [116]], [[120478, 120478], "mapped", [117]], [[120479, 120479], "mapped", [118]], [[120480, 120480], "mapped", [119]], [[120481, 120481], "mapped", [120]], [[120482, 120482], "mapped", [121]], [[120483, 120483], "mapped", [122]], [[120484, 120484], "mapped", [305]], [[120485, 120485], "mapped", [567]], [[120486, 120487], "disallowed"], [[120488, 120488], "mapped", [945]], [[120489, 120489], "mapped", [946]], [[120490, 120490], "mapped", [947]], [[120491, 120491], "mapped", [948]], [[120492, 120492], "mapped", [949]], [[120493, 120493], "mapped", [950]], [[120494, 120494], "mapped", [951]], [[120495, 120495], "mapped", [952]], [[120496, 120496], "mapped", [953]], [[120497, 120497], "mapped", [954]], [[120498, 120498], "mapped", [955]], [[120499, 120499], "mapped", [956]], [[120500, 120500], "mapped", [957]], [[120501, 120501], "mapped", [958]], [[120502, 120502], "mapped", [959]], [[120503, 120503], "mapped", [960]], [[120504, 120504], "mapped", [961]], [[120505, 120505], "mapped", [952]], [[120506, 120506], "mapped", [963]], [[120507, 120507], "mapped", [964]], [[120508, 120508], "mapped", [965]], [[120509, 120509], "mapped", [966]], [[120510, 120510], "mapped", [967]], [[120511, 120511], "mapped", [968]], [[120512, 120512], "mapped", [969]], [[120513, 120513], "mapped", [8711]], [[120514, 120514], "mapped", [945]], [[120515, 120515], "mapped", [946]], [[120516, 120516], "mapped", [947]], [[120517, 120517], "mapped", [948]], [[120518, 120518], "mapped", [949]], [[120519, 120519], "mapped", [950]], [[120520, 120520], "mapped", [951]], [[120521, 120521], "mapped", [952]], [[120522, 120522], "mapped", [953]], [[120523, 120523], "mapped", [954]], [[120524, 120524], "mapped", [955]], [[120525, 120525], "mapped", [956]], [[120526, 120526], "mapped", [957]], [[120527, 120527], "mapped", [958]], [[120528, 120528], "mapped", [959]], [[120529, 120529], "mapped", [960]], [[120530, 120530], "mapped", [961]], [[120531, 120532], "mapped", [963]], [[120533, 120533], "mapped", [964]], [[120534, 120534], "mapped", [965]], [[120535, 120535], "mapped", [966]], [[120536, 120536], "mapped", [967]], [[120537, 120537], "mapped", [968]], [[120538, 120538], "mapped", [969]], [[120539, 120539], "mapped", [8706]], [[120540, 120540], "mapped", [949]], [[120541, 120541], "mapped", [952]], [[120542, 120542], "mapped", [954]], [[120543, 120543], "mapped", [966]], [[120544, 120544], "mapped", [961]], [[120545, 120545], "mapped", [960]], [[120546, 120546], "mapped", [945]], [[120547, 120547], "mapped", [946]], [[120548, 120548], "mapped", [947]], [[120549, 120549], "mapped", [948]], [[120550, 120550], "mapped", [949]], [[120551, 120551], "mapped", [950]], [[120552, 120552], "mapped", [951]], [[120553, 120553], "mapped", [952]], [[120554, 120554], "mapped", [953]], [[120555, 120555], "mapped", [954]], [[120556, 120556], "mapped", [955]], [[120557, 120557], "mapped", [956]], [[120558, 120558], "mapped", [957]], [[120559, 120559], "mapped", [958]], [[120560, 120560], "mapped", [959]], [[120561, 120561], "mapped", [960]], [[120562, 120562], "mapped", [961]], [[120563, 120563], "mapped", [952]], [[120564, 120564], "mapped", [963]], [[120565, 120565], "mapped", [964]], [[120566, 120566], "mapped", [965]], [[120567, 120567], "mapped", [966]], [[120568, 120568], "mapped", [967]], [[120569, 120569], "mapped", [968]], [[120570, 120570], "mapped", [969]], [[120571, 120571], "mapped", [8711]], [[120572, 120572], "mapped", [945]], [[120573, 120573], "mapped", [946]], [[120574, 120574], "mapped", [947]], [[120575, 120575], "mapped", [948]], [[120576, 120576], "mapped", [949]], [[120577, 120577], "mapped", [950]], [[120578, 120578], "mapped", [951]], [[120579, 120579], "mapped", [952]], [[120580, 120580], "mapped", [953]], [[120581, 120581], "mapped", [954]], [[120582, 120582], "mapped", [955]], [[120583, 120583], "mapped", [956]], [[120584, 120584], "mapped", [957]], [[120585, 120585], "mapped", [958]], [[120586, 120586], "mapped", [959]], [[120587, 120587], "mapped", [960]], [[120588, 120588], "mapped", [961]], [[120589, 120590], "mapped", [963]], [[120591, 120591], "mapped", [964]], [[120592, 120592], "mapped", [965]], [[120593, 120593], "mapped", [966]], [[120594, 120594], "mapped", [967]], [[120595, 120595], "mapped", [968]], [[120596, 120596], "mapped", [969]], [[120597, 120597], "mapped", [8706]], [[120598, 120598], "mapped", [949]], [[120599, 120599], "mapped", [952]], [[120600, 120600], "mapped", [954]], [[120601, 120601], "mapped", [966]], [[120602, 120602], "mapped", [961]], [[120603, 120603], "mapped", [960]], [[120604, 120604], "mapped", [945]], [[120605, 120605], "mapped", [946]], [[120606, 120606], "mapped", [947]], [[120607, 120607], "mapped", [948]], [[120608, 120608], "mapped", [949]], [[120609, 120609], "mapped", [950]], [[120610, 120610], "mapped", [951]], [[120611, 120611], "mapped", [952]], [[120612, 120612], "mapped", [953]], [[120613, 120613], "mapped", [954]], [[120614, 120614], "mapped", [955]], [[120615, 120615], "mapped", [956]], [[120616, 120616], "mapped", [957]], [[120617, 120617], "mapped", [958]], [[120618, 120618], "mapped", [959]], [[120619, 120619], "mapped", [960]], [[120620, 120620], "mapped", [961]], [[120621, 120621], "mapped", [952]], [[120622, 120622], "mapped", [963]], [[120623, 120623], "mapped", [964]], [[120624, 120624], "mapped", [965]], [[120625, 120625], "mapped", [966]], [[120626, 120626], "mapped", [967]], [[120627, 120627], "mapped", [968]], [[120628, 120628], "mapped", [969]], [[120629, 120629], "mapped", [8711]], [[120630, 120630], "mapped", [945]], [[120631, 120631], "mapped", [946]], [[120632, 120632], "mapped", [947]], [[120633, 120633], "mapped", [948]], [[120634, 120634], "mapped", [949]], [[120635, 120635], "mapped", [950]], [[120636, 120636], "mapped", [951]], [[120637, 120637], "mapped", [952]], [[120638, 120638], "mapped", [953]], [[120639, 120639], "mapped", [954]], [[120640, 120640], "mapped", [955]], [[120641, 120641], "mapped", [956]], [[120642, 120642], "mapped", [957]], [[120643, 120643], "mapped", [958]], [[120644, 120644], "mapped", [959]], [[120645, 120645], "mapped", [960]], [[120646, 120646], "mapped", [961]], [[120647, 120648], "mapped", [963]], [[120649, 120649], "mapped", [964]], [[120650, 120650], "mapped", [965]], [[120651, 120651], "mapped", [966]], [[120652, 120652], "mapped", [967]], [[120653, 120653], "mapped", [968]], [[120654, 120654], "mapped", [969]], [[120655, 120655], "mapped", [8706]], [[120656, 120656], "mapped", [949]], [[120657, 120657], "mapped", [952]], [[120658, 120658], "mapped", [954]], [[120659, 120659], "mapped", [966]], [[120660, 120660], "mapped", [961]], [[120661, 120661], "mapped", [960]], [[120662, 120662], "mapped", [945]], [[120663, 120663], "mapped", [946]], [[120664, 120664], "mapped", [947]], [[120665, 120665], "mapped", [948]], [[120666, 120666], "mapped", [949]], [[120667, 120667], "mapped", [950]], [[120668, 120668], "mapped", [951]], [[120669, 120669], "mapped", [952]], [[120670, 120670], "mapped", [953]], [[120671, 120671], "mapped", [954]], [[120672, 120672], "mapped", [955]], [[120673, 120673], "mapped", [956]], [[120674, 120674], "mapped", [957]], [[120675, 120675], "mapped", [958]], [[120676, 120676], "mapped", [959]], [[120677, 120677], "mapped", [960]], [[120678, 120678], "mapped", [961]], [[120679, 120679], "mapped", [952]], [[120680, 120680], "mapped", [963]], [[120681, 120681], "mapped", [964]], [[120682, 120682], "mapped", [965]], [[120683, 120683], "mapped", [966]], [[120684, 120684], "mapped", [967]], [[120685, 120685], "mapped", [968]], [[120686, 120686], "mapped", [969]], [[120687, 120687], "mapped", [8711]], [[120688, 120688], "mapped", [945]], [[120689, 120689], "mapped", [946]], [[120690, 120690], "mapped", [947]], [[120691, 120691], "mapped", [948]], [[120692, 120692], "mapped", [949]], [[120693, 120693], "mapped", [950]], [[120694, 120694], "mapped", [951]], [[120695, 120695], "mapped", [952]], [[120696, 120696], "mapped", [953]], [[120697, 120697], "mapped", [954]], [[120698, 120698], "mapped", [955]], [[120699, 120699], "mapped", [956]], [[120700, 120700], "mapped", [957]], [[120701, 120701], "mapped", [958]], [[120702, 120702], "mapped", [959]], [[120703, 120703], "mapped", [960]], [[120704, 120704], "mapped", [961]], [[120705, 120706], "mapped", [963]], [[120707, 120707], "mapped", [964]], [[120708, 120708], "mapped", [965]], [[120709, 120709], "mapped", [966]], [[120710, 120710], "mapped", [967]], [[120711, 120711], "mapped", [968]], [[120712, 120712], "mapped", [969]], [[120713, 120713], "mapped", [8706]], [[120714, 120714], "mapped", [949]], [[120715, 120715], "mapped", [952]], [[120716, 120716], "mapped", [954]], [[120717, 120717], "mapped", [966]], [[120718, 120718], "mapped", [961]], [[120719, 120719], "mapped", [960]], [[120720, 120720], "mapped", [945]], [[120721, 120721], "mapped", [946]], [[120722, 120722], "mapped", [947]], [[120723, 120723], "mapped", [948]], [[120724, 120724], "mapped", [949]], [[120725, 120725], "mapped", [950]], [[120726, 120726], "mapped", [951]], [[120727, 120727], "mapped", [952]], [[120728, 120728], "mapped", [953]], [[120729, 120729], "mapped", [954]], [[120730, 120730], "mapped", [955]], [[120731, 120731], "mapped", [956]], [[120732, 120732], "mapped", [957]], [[120733, 120733], "mapped", [958]], [[120734, 120734], "mapped", [959]], [[120735, 120735], "mapped", [960]], [[120736, 120736], "mapped", [961]], [[120737, 120737], "mapped", [952]], [[120738, 120738], "mapped", [963]], [[120739, 120739], "mapped", [964]], [[120740, 120740], "mapped", [965]], [[120741, 120741], "mapped", [966]], [[120742, 120742], "mapped", [967]], [[120743, 120743], "mapped", [968]], [[120744, 120744], "mapped", [969]], [[120745, 120745], "mapped", [8711]], [[120746, 120746], "mapped", [945]], [[120747, 120747], "mapped", [946]], [[120748, 120748], "mapped", [947]], [[120749, 120749], "mapped", [948]], [[120750, 120750], "mapped", [949]], [[120751, 120751], "mapped", [950]], [[120752, 120752], "mapped", [951]], [[120753, 120753], "mapped", [952]], [[120754, 120754], "mapped", [953]], [[120755, 120755], "mapped", [954]], [[120756, 120756], "mapped", [955]], [[120757, 120757], "mapped", [956]], [[120758, 120758], "mapped", [957]], [[120759, 120759], "mapped", [958]], [[120760, 120760], "mapped", [959]], [[120761, 120761], "mapped", [960]], [[120762, 120762], "mapped", [961]], [[120763, 120764], "mapped", [963]], [[120765, 120765], "mapped", [964]], [[120766, 120766], "mapped", [965]], [[120767, 120767], "mapped", [966]], [[120768, 120768], "mapped", [967]], [[120769, 120769], "mapped", [968]], [[120770, 120770], "mapped", [969]], [[120771, 120771], "mapped", [8706]], [[120772, 120772], "mapped", [949]], [[120773, 120773], "mapped", [952]], [[120774, 120774], "mapped", [954]], [[120775, 120775], "mapped", [966]], [[120776, 120776], "mapped", [961]], [[120777, 120777], "mapped", [960]], [[120778, 120779], "mapped", [989]], [[120780, 120781], "disallowed"], [[120782, 120782], "mapped", [48]], [[120783, 120783], "mapped", [49]], [[120784, 120784], "mapped", [50]], [[120785, 120785], "mapped", [51]], [[120786, 120786], "mapped", [52]], [[120787, 120787], "mapped", [53]], [[120788, 120788], "mapped", [54]], [[120789, 120789], "mapped", [55]], [[120790, 120790], "mapped", [56]], [[120791, 120791], "mapped", [57]], [[120792, 120792], "mapped", [48]], [[120793, 120793], "mapped", [49]], [[120794, 120794], "mapped", [50]], [[120795, 120795], "mapped", [51]], [[120796, 120796], "mapped", [52]], [[120797, 120797], "mapped", [53]], [[120798, 120798], "mapped", [54]], [[120799, 120799], "mapped", [55]], [[120800, 120800], "mapped", [56]], [[120801, 120801], "mapped", [57]], [[120802, 120802], "mapped", [48]], [[120803, 120803], "mapped", [49]], [[120804, 120804], "mapped", [50]], [[120805, 120805], "mapped", [51]], [[120806, 120806], "mapped", [52]], [[120807, 120807], "mapped", [53]], [[120808, 120808], "mapped", [54]], [[120809, 120809], "mapped", [55]], [[120810, 120810], "mapped", [56]], [[120811, 120811], "mapped", [57]], [[120812, 120812], "mapped", [48]], [[120813, 120813], "mapped", [49]], [[120814, 120814], "mapped", [50]], [[120815, 120815], "mapped", [51]], [[120816, 120816], "mapped", [52]], [[120817, 120817], "mapped", [53]], [[120818, 120818], "mapped", [54]], [[120819, 120819], "mapped", [55]], [[120820, 120820], "mapped", [56]], [[120821, 120821], "mapped", [57]], [[120822, 120822], "mapped", [48]], [[120823, 120823], "mapped", [49]], [[120824, 120824], "mapped", [50]], [[120825, 120825], "mapped", [51]], [[120826, 120826], "mapped", [52]], [[120827, 120827], "mapped", [53]], [[120828, 120828], "mapped", [54]], [[120829, 120829], "mapped", [55]], [[120830, 120830], "mapped", [56]], [[120831, 120831], "mapped", [57]], [[120832, 121343], "valid", [], "NV8"], [[121344, 121398], "valid"], [[121399, 121402], "valid", [], "NV8"], [[121403, 121452], "valid"], [[121453, 121460], "valid", [], "NV8"], [[121461, 121461], "valid"], [[121462, 121475], "valid", [], "NV8"], [[121476, 121476], "valid"], [[121477, 121483], "valid", [], "NV8"], [[121484, 121498], "disallowed"], [[121499, 121503], "valid"], [[121504, 121504], "disallowed"], [[121505, 121519], "valid"], [[121520, 124927], "disallowed"], [[124928, 125124], "valid"], [[125125, 125126], "disallowed"], [[125127, 125135], "valid", [], "NV8"], [[125136, 125142], "valid"], [[125143, 126463], "disallowed"], [[126464, 126464], "mapped", [1575]], [[126465, 126465], "mapped", [1576]], [[126466, 126466], "mapped", [1580]], [[126467, 126467], "mapped", [1583]], [[126468, 126468], "disallowed"], [[126469, 126469], "mapped", [1608]], [[126470, 126470], "mapped", [1586]], [[126471, 126471], "mapped", [1581]], [[126472, 126472], "mapped", [1591]], [[126473, 126473], "mapped", [1610]], [[126474, 126474], "mapped", [1603]], [[126475, 126475], "mapped", [1604]], [[126476, 126476], "mapped", [1605]], [[126477, 126477], "mapped", [1606]], [[126478, 126478], "mapped", [1587]], [[126479, 126479], "mapped", [1593]], [[126480, 126480], "mapped", [1601]], [[126481, 126481], "mapped", [1589]], [[126482, 126482], "mapped", [1602]], [[126483, 126483], "mapped", [1585]], [[126484, 126484], "mapped", [1588]], [[126485, 126485], "mapped", [1578]], [[126486, 126486], "mapped", [1579]], [[126487, 126487], "mapped", [1582]], [[126488, 126488], "mapped", [1584]], [[126489, 126489], "mapped", [1590]], [[126490, 126490], "mapped", [1592]], [[126491, 126491], "mapped", [1594]], [[126492, 126492], "mapped", [1646]], [[126493, 126493], "mapped", [1722]], [[126494, 126494], "mapped", [1697]], [[126495, 126495], "mapped", [1647]], [[126496, 126496], "disallowed"], [[126497, 126497], "mapped", [1576]], [[126498, 126498], "mapped", [1580]], [[126499, 126499], "disallowed"], [[126500, 126500], "mapped", [1607]], [[126501, 126502], "disallowed"], [[126503, 126503], "mapped", [1581]], [[126504, 126504], "disallowed"], [[126505, 126505], "mapped", [1610]], [[126506, 126506], "mapped", [1603]], [[126507, 126507], "mapped", [1604]], [[126508, 126508], "mapped", [1605]], [[126509, 126509], "mapped", [1606]], [[126510, 126510], "mapped", [1587]], [[126511, 126511], "mapped", [1593]], [[126512, 126512], "mapped", [1601]], [[126513, 126513], "mapped", [1589]], [[126514, 126514], "mapped", [1602]], [[126515, 126515], "disallowed"], [[126516, 126516], "mapped", [1588]], [[126517, 126517], "mapped", [1578]], [[126518, 126518], "mapped", [1579]], [[126519, 126519], "mapped", [1582]], [[126520, 126520], "disallowed"], [[126521, 126521], "mapped", [1590]], [[126522, 126522], "disallowed"], [[126523, 126523], "mapped", [1594]], [[126524, 126529], "disallowed"], [[126530, 126530], "mapped", [1580]], [[126531, 126534], "disallowed"], [[126535, 126535], "mapped", [1581]], [[126536, 126536], "disallowed"], [[126537, 126537], "mapped", [1610]], [[126538, 126538], "disallowed"], [[126539, 126539], "mapped", [1604]], [[126540, 126540], "disallowed"], [[126541, 126541], "mapped", [1606]], [[126542, 126542], "mapped", [1587]], [[126543, 126543], "mapped", [1593]], [[126544, 126544], "disallowed"], [[126545, 126545], "mapped", [1589]], [[126546, 126546], "mapped", [1602]], [[126547, 126547], "disallowed"], [[126548, 126548], "mapped", [1588]], [[126549, 126550], "disallowed"], [[126551, 126551], "mapped", [1582]], [[126552, 126552], "disallowed"], [[126553, 126553], "mapped", [1590]], [[126554, 126554], "disallowed"], [[126555, 126555], "mapped", [1594]], [[126556, 126556], "disallowed"], [[126557, 126557], "mapped", [1722]], [[126558, 126558], "disallowed"], [[126559, 126559], "mapped", [1647]], [[126560, 126560], "disallowed"], [[126561, 126561], "mapped", [1576]], [[126562, 126562], "mapped", [1580]], [[126563, 126563], "disallowed"], [[126564, 126564], "mapped", [1607]], [[126565, 126566], "disallowed"], [[126567, 126567], "mapped", [1581]], [[126568, 126568], "mapped", [1591]], [[126569, 126569], "mapped", [1610]], [[126570, 126570], "mapped", [1603]], [[126571, 126571], "disallowed"], [[126572, 126572], "mapped", [1605]], [[126573, 126573], "mapped", [1606]], [[126574, 126574], "mapped", [1587]], [[126575, 126575], "mapped", [1593]], [[126576, 126576], "mapped", [1601]], [[126577, 126577], "mapped", [1589]], [[126578, 126578], "mapped", [1602]], [[126579, 126579], "disallowed"], [[126580, 126580], "mapped", [1588]], [[126581, 126581], "mapped", [1578]], [[126582, 126582], "mapped", [1579]], [[126583, 126583], "mapped", [1582]], [[126584, 126584], "disallowed"], [[126585, 126585], "mapped", [1590]], [[126586, 126586], "mapped", [1592]], [[126587, 126587], "mapped", [1594]], [[126588, 126588], "mapped", [1646]], [[126589, 126589], "disallowed"], [[126590, 126590], "mapped", [1697]], [[126591, 126591], "disallowed"], [[126592, 126592], "mapped", [1575]], [[126593, 126593], "mapped", [1576]], [[126594, 126594], "mapped", [1580]], [[126595, 126595], "mapped", [1583]], [[126596, 126596], "mapped", [1607]], [[126597, 126597], "mapped", [1608]], [[126598, 126598], "mapped", [1586]], [[126599, 126599], "mapped", [1581]], [[126600, 126600], "mapped", [1591]], [[126601, 126601], "mapped", [1610]], [[126602, 126602], "disallowed"], [[126603, 126603], "mapped", [1604]], [[126604, 126604], "mapped", [1605]], [[126605, 126605], "mapped", [1606]], [[126606, 126606], "mapped", [1587]], [[126607, 126607], "mapped", [1593]], [[126608, 126608], "mapped", [1601]], [[126609, 126609], "mapped", [1589]], [[126610, 126610], "mapped", [1602]], [[126611, 126611], "mapped", [1585]], [[126612, 126612], "mapped", [1588]], [[126613, 126613], "mapped", [1578]], [[126614, 126614], "mapped", [1579]], [[126615, 126615], "mapped", [1582]], [[126616, 126616], "mapped", [1584]], [[126617, 126617], "mapped", [1590]], [[126618, 126618], "mapped", [1592]], [[126619, 126619], "mapped", [1594]], [[126620, 126624], "disallowed"], [[126625, 126625], "mapped", [1576]], [[126626, 126626], "mapped", [1580]], [[126627, 126627], "mapped", [1583]], [[126628, 126628], "disallowed"], [[126629, 126629], "mapped", [1608]], [[126630, 126630], "mapped", [1586]], [[126631, 126631], "mapped", [1581]], [[126632, 126632], "mapped", [1591]], [[126633, 126633], "mapped", [1610]], [[126634, 126634], "disallowed"], [[126635, 126635], "mapped", [1604]], [[126636, 126636], "mapped", [1605]], [[126637, 126637], "mapped", [1606]], [[126638, 126638], "mapped", [1587]], [[126639, 126639], "mapped", [1593]], [[126640, 126640], "mapped", [1601]], [[126641, 126641], "mapped", [1589]], [[126642, 126642], "mapped", [1602]], [[126643, 126643], "mapped", [1585]], [[126644, 126644], "mapped", [1588]], [[126645, 126645], "mapped", [1578]], [[126646, 126646], "mapped", [1579]], [[126647, 126647], "mapped", [1582]], [[126648, 126648], "mapped", [1584]], [[126649, 126649], "mapped", [1590]], [[126650, 126650], "mapped", [1592]], [[126651, 126651], "mapped", [1594]], [[126652, 126703], "disallowed"], [[126704, 126705], "valid", [], "NV8"], [[126706, 126975], "disallowed"], [[126976, 127019], "valid", [], "NV8"], [[127020, 127023], "disallowed"], [[127024, 127123], "valid", [], "NV8"], [[127124, 127135], "disallowed"], [[127136, 127150], "valid", [], "NV8"], [[127151, 127152], "disallowed"], [[127153, 127166], "valid", [], "NV8"], [[127167, 127167], "valid", [], "NV8"], [[127168, 127168], "disallowed"], [[127169, 127183], "valid", [], "NV8"], [[127184, 127184], "disallowed"], [[127185, 127199], "valid", [], "NV8"], [[127200, 127221], "valid", [], "NV8"], [[127222, 127231], "disallowed"], [[127232, 127232], "disallowed"], [[127233, 127233], "disallowed_STD3_mapped", [48, 44]], [[127234, 127234], "disallowed_STD3_mapped", [49, 44]], [[127235, 127235], "disallowed_STD3_mapped", [50, 44]], [[127236, 127236], "disallowed_STD3_mapped", [51, 44]], [[127237, 127237], "disallowed_STD3_mapped", [52, 44]], [[127238, 127238], "disallowed_STD3_mapped", [53, 44]], [[127239, 127239], "disallowed_STD3_mapped", [54, 44]], [[127240, 127240], "disallowed_STD3_mapped", [55, 44]], [[127241, 127241], "disallowed_STD3_mapped", [56, 44]], [[127242, 127242], "disallowed_STD3_mapped", [57, 44]], [[127243, 127244], "valid", [], "NV8"], [[127245, 127247], "disallowed"], [[127248, 127248], "disallowed_STD3_mapped", [40, 97, 41]], [[127249, 127249], "disallowed_STD3_mapped", [40, 98, 41]], [[127250, 127250], "disallowed_STD3_mapped", [40, 99, 41]], [[127251, 127251], "disallowed_STD3_mapped", [40, 100, 41]], [[127252, 127252], "disallowed_STD3_mapped", [40, 101, 41]], [[127253, 127253], "disallowed_STD3_mapped", [40, 102, 41]], [[127254, 127254], "disallowed_STD3_mapped", [40, 103, 41]], [[127255, 127255], "disallowed_STD3_mapped", [40, 104, 41]], [[127256, 127256], "disallowed_STD3_mapped", [40, 105, 41]], [[127257, 127257], "disallowed_STD3_mapped", [40, 106, 41]], [[127258, 127258], "disallowed_STD3_mapped", [40, 107, 41]], [[127259, 127259], "disallowed_STD3_mapped", [40, 108, 41]], [[127260, 127260], "disallowed_STD3_mapped", [40, 109, 41]], [[127261, 127261], "disallowed_STD3_mapped", [40, 110, 41]], [[127262, 127262], "disallowed_STD3_mapped", [40, 111, 41]], [[127263, 127263], "disallowed_STD3_mapped", [40, 112, 41]], [[127264, 127264], "disallowed_STD3_mapped", [40, 113, 41]], [[127265, 127265], "disallowed_STD3_mapped", [40, 114, 41]], [[127266, 127266], "disallowed_STD3_mapped", [40, 115, 41]], [[127267, 127267], "disallowed_STD3_mapped", [40, 116, 41]], [[127268, 127268], "disallowed_STD3_mapped", [40, 117, 41]], [[127269, 127269], "disallowed_STD3_mapped", [40, 118, 41]], [[127270, 127270], "disallowed_STD3_mapped", [40, 119, 41]], [[127271, 127271], "disallowed_STD3_mapped", [40, 120, 41]], [[127272, 127272], "disallowed_STD3_mapped", [40, 121, 41]], [[127273, 127273], "disallowed_STD3_mapped", [40, 122, 41]], [[127274, 127274], "mapped", [12308, 115, 12309]], [[127275, 127275], "mapped", [99]], [[127276, 127276], "mapped", [114]], [[127277, 127277], "mapped", [99, 100]], [[127278, 127278], "mapped", [119, 122]], [[127279, 127279], "disallowed"], [[127280, 127280], "mapped", [97]], [[127281, 127281], "mapped", [98]], [[127282, 127282], "mapped", [99]], [[127283, 127283], "mapped", [100]], [[127284, 127284], "mapped", [101]], [[127285, 127285], "mapped", [102]], [[127286, 127286], "mapped", [103]], [[127287, 127287], "mapped", [104]], [[127288, 127288], "mapped", [105]], [[127289, 127289], "mapped", [106]], [[127290, 127290], "mapped", [107]], [[127291, 127291], "mapped", [108]], [[127292, 127292], "mapped", [109]], [[127293, 127293], "mapped", [110]], [[127294, 127294], "mapped", [111]], [[127295, 127295], "mapped", [112]], [[127296, 127296], "mapped", [113]], [[127297, 127297], "mapped", [114]], [[127298, 127298], "mapped", [115]], [[127299, 127299], "mapped", [116]], [[127300, 127300], "mapped", [117]], [[127301, 127301], "mapped", [118]], [[127302, 127302], "mapped", [119]], [[127303, 127303], "mapped", [120]], [[127304, 127304], "mapped", [121]], [[127305, 127305], "mapped", [122]], [[127306, 127306], "mapped", [104, 118]], [[127307, 127307], "mapped", [109, 118]], [[127308, 127308], "mapped", [115, 100]], [[127309, 127309], "mapped", [115, 115]], [[127310, 127310], "mapped", [112, 112, 118]], [[127311, 127311], "mapped", [119, 99]], [[127312, 127318], "valid", [], "NV8"], [[127319, 127319], "valid", [], "NV8"], [[127320, 127326], "valid", [], "NV8"], [[127327, 127327], "valid", [], "NV8"], [[127328, 127337], "valid", [], "NV8"], [[127338, 127338], "mapped", [109, 99]], [[127339, 127339], "mapped", [109, 100]], [[127340, 127343], "disallowed"], [[127344, 127352], "valid", [], "NV8"], [[127353, 127353], "valid", [], "NV8"], [[127354, 127354], "valid", [], "NV8"], [[127355, 127356], "valid", [], "NV8"], [[127357, 127358], "valid", [], "NV8"], [[127359, 127359], "valid", [], "NV8"], [[127360, 127369], "valid", [], "NV8"], [[127370, 127373], "valid", [], "NV8"], [[127374, 127375], "valid", [], "NV8"], [[127376, 127376], "mapped", [100, 106]], [[127377, 127386], "valid", [], "NV8"], [[127387, 127461], "disallowed"], [[127462, 127487], "valid", [], "NV8"], [[127488, 127488], "mapped", [12411, 12363]], [[127489, 127489], "mapped", [12467, 12467]], [[127490, 127490], "mapped", [12469]], [[127491, 127503], "disallowed"], [[127504, 127504], "mapped", [25163]], [[127505, 127505], "mapped", [23383]], [[127506, 127506], "mapped", [21452]], [[127507, 127507], "mapped", [12487]], [[127508, 127508], "mapped", [20108]], [[127509, 127509], "mapped", [22810]], [[127510, 127510], "mapped", [35299]], [[127511, 127511], "mapped", [22825]], [[127512, 127512], "mapped", [20132]], [[127513, 127513], "mapped", [26144]], [[127514, 127514], "mapped", [28961]], [[127515, 127515], "mapped", [26009]], [[127516, 127516], "mapped", [21069]], [[127517, 127517], "mapped", [24460]], [[127518, 127518], "mapped", [20877]], [[127519, 127519], "mapped", [26032]], [[127520, 127520], "mapped", [21021]], [[127521, 127521], "mapped", [32066]], [[127522, 127522], "mapped", [29983]], [[127523, 127523], "mapped", [36009]], [[127524, 127524], "mapped", [22768]], [[127525, 127525], "mapped", [21561]], [[127526, 127526], "mapped", [28436]], [[127527, 127527], "mapped", [25237]], [[127528, 127528], "mapped", [25429]], [[127529, 127529], "mapped", [19968]], [[127530, 127530], "mapped", [19977]], [[127531, 127531], "mapped", [36938]], [[127532, 127532], "mapped", [24038]], [[127533, 127533], "mapped", [20013]], [[127534, 127534], "mapped", [21491]], [[127535, 127535], "mapped", [25351]], [[127536, 127536], "mapped", [36208]], [[127537, 127537], "mapped", [25171]], [[127538, 127538], "mapped", [31105]], [[127539, 127539], "mapped", [31354]], [[127540, 127540], "mapped", [21512]], [[127541, 127541], "mapped", [28288]], [[127542, 127542], "mapped", [26377]], [[127543, 127543], "mapped", [26376]], [[127544, 127544], "mapped", [30003]], [[127545, 127545], "mapped", [21106]], [[127546, 127546], "mapped", [21942]], [[127547, 127551], "disallowed"], [[127552, 127552], "mapped", [12308, 26412, 12309]], [[127553, 127553], "mapped", [12308, 19977, 12309]], [[127554, 127554], "mapped", [12308, 20108, 12309]], [[127555, 127555], "mapped", [12308, 23433, 12309]], [[127556, 127556], "mapped", [12308, 28857, 12309]], [[127557, 127557], "mapped", [12308, 25171, 12309]], [[127558, 127558], "mapped", [12308, 30423, 12309]], [[127559, 127559], "mapped", [12308, 21213, 12309]], [[127560, 127560], "mapped", [12308, 25943, 12309]], [[127561, 127567], "disallowed"], [[127568, 127568], "mapped", [24471]], [[127569, 127569], "mapped", [21487]], [[127570, 127743], "disallowed"], [[127744, 127776], "valid", [], "NV8"], [[127777, 127788], "valid", [], "NV8"], [[127789, 127791], "valid", [], "NV8"], [[127792, 127797], "valid", [], "NV8"], [[127798, 127798], "valid", [], "NV8"], [[127799, 127868], "valid", [], "NV8"], [[127869, 127869], "valid", [], "NV8"], [[127870, 127871], "valid", [], "NV8"], [[127872, 127891], "valid", [], "NV8"], [[127892, 127903], "valid", [], "NV8"], [[127904, 127940], "valid", [], "NV8"], [[127941, 127941], "valid", [], "NV8"], [[127942, 127946], "valid", [], "NV8"], [[127947, 127950], "valid", [], "NV8"], [[127951, 127955], "valid", [], "NV8"], [[127956, 127967], "valid", [], "NV8"], [[127968, 127984], "valid", [], "NV8"], [[127985, 127991], "valid", [], "NV8"], [[127992, 127999], "valid", [], "NV8"], [[128e3, 128062], "valid", [], "NV8"], [[128063, 128063], "valid", [], "NV8"], [[128064, 128064], "valid", [], "NV8"], [[128065, 128065], "valid", [], "NV8"], [[128066, 128247], "valid", [], "NV8"], [[128248, 128248], "valid", [], "NV8"], [[128249, 128252], "valid", [], "NV8"], [[128253, 128254], "valid", [], "NV8"], [[128255, 128255], "valid", [], "NV8"], [[128256, 128317], "valid", [], "NV8"], [[128318, 128319], "valid", [], "NV8"], [[128320, 128323], "valid", [], "NV8"], [[128324, 128330], "valid", [], "NV8"], [[128331, 128335], "valid", [], "NV8"], [[128336, 128359], "valid", [], "NV8"], [[128360, 128377], "valid", [], "NV8"], [[128378, 128378], "disallowed"], [[128379, 128419], "valid", [], "NV8"], [[128420, 128420], "disallowed"], [[128421, 128506], "valid", [], "NV8"], [[128507, 128511], "valid", [], "NV8"], [[128512, 128512], "valid", [], "NV8"], [[128513, 128528], "valid", [], "NV8"], [[128529, 128529], "valid", [], "NV8"], [[128530, 128532], "valid", [], "NV8"], [[128533, 128533], "valid", [], "NV8"], [[128534, 128534], "valid", [], "NV8"], [[128535, 128535], "valid", [], "NV8"], [[128536, 128536], "valid", [], "NV8"], [[128537, 128537], "valid", [], "NV8"], [[128538, 128538], "valid", [], "NV8"], [[128539, 128539], "valid", [], "NV8"], [[128540, 128542], "valid", [], "NV8"], [[128543, 128543], "valid", [], "NV8"], [[128544, 128549], "valid", [], "NV8"], [[128550, 128551], "valid", [], "NV8"], [[128552, 128555], "valid", [], "NV8"], [[128556, 128556], "valid", [], "NV8"], [[128557, 128557], "valid", [], "NV8"], [[128558, 128559], "valid", [], "NV8"], [[128560, 128563], "valid", [], "NV8"], [[128564, 128564], "valid", [], "NV8"], [[128565, 128576], "valid", [], "NV8"], [[128577, 128578], "valid", [], "NV8"], [[128579, 128580], "valid", [], "NV8"], [[128581, 128591], "valid", [], "NV8"], [[128592, 128639], "valid", [], "NV8"], [[128640, 128709], "valid", [], "NV8"], [[128710, 128719], "valid", [], "NV8"], [[128720, 128720], "valid", [], "NV8"], [[128721, 128735], "disallowed"], [[128736, 128748], "valid", [], "NV8"], [[128749, 128751], "disallowed"], [[128752, 128755], "valid", [], "NV8"], [[128756, 128767], "disallowed"], [[128768, 128883], "valid", [], "NV8"], [[128884, 128895], "disallowed"], [[128896, 128980], "valid", [], "NV8"], [[128981, 129023], "disallowed"], [[129024, 129035], "valid", [], "NV8"], [[129036, 129039], "disallowed"], [[129040, 129095], "valid", [], "NV8"], [[129096, 129103], "disallowed"], [[129104, 129113], "valid", [], "NV8"], [[129114, 129119], "disallowed"], [[129120, 129159], "valid", [], "NV8"], [[129160, 129167], "disallowed"], [[129168, 129197], "valid", [], "NV8"], [[129198, 129295], "disallowed"], [[129296, 129304], "valid", [], "NV8"], [[129305, 129407], "disallowed"], [[129408, 129412], "valid", [], "NV8"], [[129413, 129471], "disallowed"], [[129472, 129472], "valid", [], "NV8"], [[129473, 131069], "disallowed"], [[131070, 131071], "disallowed"], [[131072, 173782], "valid"], [[173783, 173823], "disallowed"], [[173824, 177972], "valid"], [[177973, 177983], "disallowed"], [[177984, 178205], "valid"], [[178206, 178207], "disallowed"], [[178208, 183969], "valid"], [[183970, 194559], "disallowed"], [[194560, 194560], "mapped", [20029]], [[194561, 194561], "mapped", [20024]], [[194562, 194562], "mapped", [20033]], [[194563, 194563], "mapped", [131362]], [[194564, 194564], "mapped", [20320]], [[194565, 194565], "mapped", [20398]], [[194566, 194566], "mapped", [20411]], [[194567, 194567], "mapped", [20482]], [[194568, 194568], "mapped", [20602]], [[194569, 194569], "mapped", [20633]], [[194570, 194570], "mapped", [20711]], [[194571, 194571], "mapped", [20687]], [[194572, 194572], "mapped", [13470]], [[194573, 194573], "mapped", [132666]], [[194574, 194574], "mapped", [20813]], [[194575, 194575], "mapped", [20820]], [[194576, 194576], "mapped", [20836]], [[194577, 194577], "mapped", [20855]], [[194578, 194578], "mapped", [132380]], [[194579, 194579], "mapped", [13497]], [[194580, 194580], "mapped", [20839]], [[194581, 194581], "mapped", [20877]], [[194582, 194582], "mapped", [132427]], [[194583, 194583], "mapped", [20887]], [[194584, 194584], "mapped", [20900]], [[194585, 194585], "mapped", [20172]], [[194586, 194586], "mapped", [20908]], [[194587, 194587], "mapped", [20917]], [[194588, 194588], "mapped", [168415]], [[194589, 194589], "mapped", [20981]], [[194590, 194590], "mapped", [20995]], [[194591, 194591], "mapped", [13535]], [[194592, 194592], "mapped", [21051]], [[194593, 194593], "mapped", [21062]], [[194594, 194594], "mapped", [21106]], [[194595, 194595], "mapped", [21111]], [[194596, 194596], "mapped", [13589]], [[194597, 194597], "mapped", [21191]], [[194598, 194598], "mapped", [21193]], [[194599, 194599], "mapped", [21220]], [[194600, 194600], "mapped", [21242]], [[194601, 194601], "mapped", [21253]], [[194602, 194602], "mapped", [21254]], [[194603, 194603], "mapped", [21271]], [[194604, 194604], "mapped", [21321]], [[194605, 194605], "mapped", [21329]], [[194606, 194606], "mapped", [21338]], [[194607, 194607], "mapped", [21363]], [[194608, 194608], "mapped", [21373]], [[194609, 194611], "mapped", [21375]], [[194612, 194612], "mapped", [133676]], [[194613, 194613], "mapped", [28784]], [[194614, 194614], "mapped", [21450]], [[194615, 194615], "mapped", [21471]], [[194616, 194616], "mapped", [133987]], [[194617, 194617], "mapped", [21483]], [[194618, 194618], "mapped", [21489]], [[194619, 194619], "mapped", [21510]], [[194620, 194620], "mapped", [21662]], [[194621, 194621], "mapped", [21560]], [[194622, 194622], "mapped", [21576]], [[194623, 194623], "mapped", [21608]], [[194624, 194624], "mapped", [21666]], [[194625, 194625], "mapped", [21750]], [[194626, 194626], "mapped", [21776]], [[194627, 194627], "mapped", [21843]], [[194628, 194628], "mapped", [21859]], [[194629, 194630], "mapped", [21892]], [[194631, 194631], "mapped", [21913]], [[194632, 194632], "mapped", [21931]], [[194633, 194633], "mapped", [21939]], [[194634, 194634], "mapped", [21954]], [[194635, 194635], "mapped", [22294]], [[194636, 194636], "mapped", [22022]], [[194637, 194637], "mapped", [22295]], [[194638, 194638], "mapped", [22097]], [[194639, 194639], "mapped", [22132]], [[194640, 194640], "mapped", [20999]], [[194641, 194641], "mapped", [22766]], [[194642, 194642], "mapped", [22478]], [[194643, 194643], "mapped", [22516]], [[194644, 194644], "mapped", [22541]], [[194645, 194645], "mapped", [22411]], [[194646, 194646], "mapped", [22578]], [[194647, 194647], "mapped", [22577]], [[194648, 194648], "mapped", [22700]], [[194649, 194649], "mapped", [136420]], [[194650, 194650], "mapped", [22770]], [[194651, 194651], "mapped", [22775]], [[194652, 194652], "mapped", [22790]], [[194653, 194653], "mapped", [22810]], [[194654, 194654], "mapped", [22818]], [[194655, 194655], "mapped", [22882]], [[194656, 194656], "mapped", [136872]], [[194657, 194657], "mapped", [136938]], [[194658, 194658], "mapped", [23020]], [[194659, 194659], "mapped", [23067]], [[194660, 194660], "mapped", [23079]], [[194661, 194661], "mapped", [23e3]], [[194662, 194662], "mapped", [23142]], [[194663, 194663], "mapped", [14062]], [[194664, 194664], "disallowed"], [[194665, 194665], "mapped", [23304]], [[194666, 194667], "mapped", [23358]], [[194668, 194668], "mapped", [137672]], [[194669, 194669], "mapped", [23491]], [[194670, 194670], "mapped", [23512]], [[194671, 194671], "mapped", [23527]], [[194672, 194672], "mapped", [23539]], [[194673, 194673], "mapped", [138008]], [[194674, 194674], "mapped", [23551]], [[194675, 194675], "mapped", [23558]], [[194676, 194676], "disallowed"], [[194677, 194677], "mapped", [23586]], [[194678, 194678], "mapped", [14209]], [[194679, 194679], "mapped", [23648]], [[194680, 194680], "mapped", [23662]], [[194681, 194681], "mapped", [23744]], [[194682, 194682], "mapped", [23693]], [[194683, 194683], "mapped", [138724]], [[194684, 194684], "mapped", [23875]], [[194685, 194685], "mapped", [138726]], [[194686, 194686], "mapped", [23918]], [[194687, 194687], "mapped", [23915]], [[194688, 194688], "mapped", [23932]], [[194689, 194689], "mapped", [24033]], [[194690, 194690], "mapped", [24034]], [[194691, 194691], "mapped", [14383]], [[194692, 194692], "mapped", [24061]], [[194693, 194693], "mapped", [24104]], [[194694, 194694], "mapped", [24125]], [[194695, 194695], "mapped", [24169]], [[194696, 194696], "mapped", [14434]], [[194697, 194697], "mapped", [139651]], [[194698, 194698], "mapped", [14460]], [[194699, 194699], "mapped", [24240]], [[194700, 194700], "mapped", [24243]], [[194701, 194701], "mapped", [24246]], [[194702, 194702], "mapped", [24266]], [[194703, 194703], "mapped", [172946]], [[194704, 194704], "mapped", [24318]], [[194705, 194706], "mapped", [140081]], [[194707, 194707], "mapped", [33281]], [[194708, 194709], "mapped", [24354]], [[194710, 194710], "mapped", [14535]], [[194711, 194711], "mapped", [144056]], [[194712, 194712], "mapped", [156122]], [[194713, 194713], "mapped", [24418]], [[194714, 194714], "mapped", [24427]], [[194715, 194715], "mapped", [14563]], [[194716, 194716], "mapped", [24474]], [[194717, 194717], "mapped", [24525]], [[194718, 194718], "mapped", [24535]], [[194719, 194719], "mapped", [24569]], [[194720, 194720], "mapped", [24705]], [[194721, 194721], "mapped", [14650]], [[194722, 194722], "mapped", [14620]], [[194723, 194723], "mapped", [24724]], [[194724, 194724], "mapped", [141012]], [[194725, 194725], "mapped", [24775]], [[194726, 194726], "mapped", [24904]], [[194727, 194727], "mapped", [24908]], [[194728, 194728], "mapped", [24910]], [[194729, 194729], "mapped", [24908]], [[194730, 194730], "mapped", [24954]], [[194731, 194731], "mapped", [24974]], [[194732, 194732], "mapped", [25010]], [[194733, 194733], "mapped", [24996]], [[194734, 194734], "mapped", [25007]], [[194735, 194735], "mapped", [25054]], [[194736, 194736], "mapped", [25074]], [[194737, 194737], "mapped", [25078]], [[194738, 194738], "mapped", [25104]], [[194739, 194739], "mapped", [25115]], [[194740, 194740], "mapped", [25181]], [[194741, 194741], "mapped", [25265]], [[194742, 194742], "mapped", [25300]], [[194743, 194743], "mapped", [25424]], [[194744, 194744], "mapped", [142092]], [[194745, 194745], "mapped", [25405]], [[194746, 194746], "mapped", [25340]], [[194747, 194747], "mapped", [25448]], [[194748, 194748], "mapped", [25475]], [[194749, 194749], "mapped", [25572]], [[194750, 194750], "mapped", [142321]], [[194751, 194751], "mapped", [25634]], [[194752, 194752], "mapped", [25541]], [[194753, 194753], "mapped", [25513]], [[194754, 194754], "mapped", [14894]], [[194755, 194755], "mapped", [25705]], [[194756, 194756], "mapped", [25726]], [[194757, 194757], "mapped", [25757]], [[194758, 194758], "mapped", [25719]], [[194759, 194759], "mapped", [14956]], [[194760, 194760], "mapped", [25935]], [[194761, 194761], "mapped", [25964]], [[194762, 194762], "mapped", [143370]], [[194763, 194763], "mapped", [26083]], [[194764, 194764], "mapped", [26360]], [[194765, 194765], "mapped", [26185]], [[194766, 194766], "mapped", [15129]], [[194767, 194767], "mapped", [26257]], [[194768, 194768], "mapped", [15112]], [[194769, 194769], "mapped", [15076]], [[194770, 194770], "mapped", [20882]], [[194771, 194771], "mapped", [20885]], [[194772, 194772], "mapped", [26368]], [[194773, 194773], "mapped", [26268]], [[194774, 194774], "mapped", [32941]], [[194775, 194775], "mapped", [17369]], [[194776, 194776], "mapped", [26391]], [[194777, 194777], "mapped", [26395]], [[194778, 194778], "mapped", [26401]], [[194779, 194779], "mapped", [26462]], [[194780, 194780], "mapped", [26451]], [[194781, 194781], "mapped", [144323]], [[194782, 194782], "mapped", [15177]], [[194783, 194783], "mapped", [26618]], [[194784, 194784], "mapped", [26501]], [[194785, 194785], "mapped", [26706]], [[194786, 194786], "mapped", [26757]], [[194787, 194787], "mapped", [144493]], [[194788, 194788], "mapped", [26766]], [[194789, 194789], "mapped", [26655]], [[194790, 194790], "mapped", [26900]], [[194791, 194791], "mapped", [15261]], [[194792, 194792], "mapped", [26946]], [[194793, 194793], "mapped", [27043]], [[194794, 194794], "mapped", [27114]], [[194795, 194795], "mapped", [27304]], [[194796, 194796], "mapped", [145059]], [[194797, 194797], "mapped", [27355]], [[194798, 194798], "mapped", [15384]], [[194799, 194799], "mapped", [27425]], [[194800, 194800], "mapped", [145575]], [[194801, 194801], "mapped", [27476]], [[194802, 194802], "mapped", [15438]], [[194803, 194803], "mapped", [27506]], [[194804, 194804], "mapped", [27551]], [[194805, 194805], "mapped", [27578]], [[194806, 194806], "mapped", [27579]], [[194807, 194807], "mapped", [146061]], [[194808, 194808], "mapped", [138507]], [[194809, 194809], "mapped", [146170]], [[194810, 194810], "mapped", [27726]], [[194811, 194811], "mapped", [146620]], [[194812, 194812], "mapped", [27839]], [[194813, 194813], "mapped", [27853]], [[194814, 194814], "mapped", [27751]], [[194815, 194815], "mapped", [27926]], [[194816, 194816], "mapped", [27966]], [[194817, 194817], "mapped", [28023]], [[194818, 194818], "mapped", [27969]], [[194819, 194819], "mapped", [28009]], [[194820, 194820], "mapped", [28024]], [[194821, 194821], "mapped", [28037]], [[194822, 194822], "mapped", [146718]], [[194823, 194823], "mapped", [27956]], [[194824, 194824], "mapped", [28207]], [[194825, 194825], "mapped", [28270]], [[194826, 194826], "mapped", [15667]], [[194827, 194827], "mapped", [28363]], [[194828, 194828], "mapped", [28359]], [[194829, 194829], "mapped", [147153]], [[194830, 194830], "mapped", [28153]], [[194831, 194831], "mapped", [28526]], [[194832, 194832], "mapped", [147294]], [[194833, 194833], "mapped", [147342]], [[194834, 194834], "mapped", [28614]], [[194835, 194835], "mapped", [28729]], [[194836, 194836], "mapped", [28702]], [[194837, 194837], "mapped", [28699]], [[194838, 194838], "mapped", [15766]], [[194839, 194839], "mapped", [28746]], [[194840, 194840], "mapped", [28797]], [[194841, 194841], "mapped", [28791]], [[194842, 194842], "mapped", [28845]], [[194843, 194843], "mapped", [132389]], [[194844, 194844], "mapped", [28997]], [[194845, 194845], "mapped", [148067]], [[194846, 194846], "mapped", [29084]], [[194847, 194847], "disallowed"], [[194848, 194848], "mapped", [29224]], [[194849, 194849], "mapped", [29237]], [[194850, 194850], "mapped", [29264]], [[194851, 194851], "mapped", [149e3]], [[194852, 194852], "mapped", [29312]], [[194853, 194853], "mapped", [29333]], [[194854, 194854], "mapped", [149301]], [[194855, 194855], "mapped", [149524]], [[194856, 194856], "mapped", [29562]], [[194857, 194857], "mapped", [29579]], [[194858, 194858], "mapped", [16044]], [[194859, 194859], "mapped", [29605]], [[194860, 194861], "mapped", [16056]], [[194862, 194862], "mapped", [29767]], [[194863, 194863], "mapped", [29788]], [[194864, 194864], "mapped", [29809]], [[194865, 194865], "mapped", [29829]], [[194866, 194866], "mapped", [29898]], [[194867, 194867], "mapped", [16155]], [[194868, 194868], "mapped", [29988]], [[194869, 194869], "mapped", [150582]], [[194870, 194870], "mapped", [30014]], [[194871, 194871], "mapped", [150674]], [[194872, 194872], "mapped", [30064]], [[194873, 194873], "mapped", [139679]], [[194874, 194874], "mapped", [30224]], [[194875, 194875], "mapped", [151457]], [[194876, 194876], "mapped", [151480]], [[194877, 194877], "mapped", [151620]], [[194878, 194878], "mapped", [16380]], [[194879, 194879], "mapped", [16392]], [[194880, 194880], "mapped", [30452]], [[194881, 194881], "mapped", [151795]], [[194882, 194882], "mapped", [151794]], [[194883, 194883], "mapped", [151833]], [[194884, 194884], "mapped", [151859]], [[194885, 194885], "mapped", [30494]], [[194886, 194887], "mapped", [30495]], [[194888, 194888], "mapped", [30538]], [[194889, 194889], "mapped", [16441]], [[194890, 194890], "mapped", [30603]], [[194891, 194891], "mapped", [16454]], [[194892, 194892], "mapped", [16534]], [[194893, 194893], "mapped", [152605]], [[194894, 194894], "mapped", [30798]], [[194895, 194895], "mapped", [30860]], [[194896, 194896], "mapped", [30924]], [[194897, 194897], "mapped", [16611]], [[194898, 194898], "mapped", [153126]], [[194899, 194899], "mapped", [31062]], [[194900, 194900], "mapped", [153242]], [[194901, 194901], "mapped", [153285]], [[194902, 194902], "mapped", [31119]], [[194903, 194903], "mapped", [31211]], [[194904, 194904], "mapped", [16687]], [[194905, 194905], "mapped", [31296]], [[194906, 194906], "mapped", [31306]], [[194907, 194907], "mapped", [31311]], [[194908, 194908], "mapped", [153980]], [[194909, 194910], "mapped", [154279]], [[194911, 194911], "disallowed"], [[194912, 194912], "mapped", [16898]], [[194913, 194913], "mapped", [154539]], [[194914, 194914], "mapped", [31686]], [[194915, 194915], "mapped", [31689]], [[194916, 194916], "mapped", [16935]], [[194917, 194917], "mapped", [154752]], [[194918, 194918], "mapped", [31954]], [[194919, 194919], "mapped", [17056]], [[194920, 194920], "mapped", [31976]], [[194921, 194921], "mapped", [31971]], [[194922, 194922], "mapped", [32e3]], [[194923, 194923], "mapped", [155526]], [[194924, 194924], "mapped", [32099]], [[194925, 194925], "mapped", [17153]], [[194926, 194926], "mapped", [32199]], [[194927, 194927], "mapped", [32258]], [[194928, 194928], "mapped", [32325]], [[194929, 194929], "mapped", [17204]], [[194930, 194930], "mapped", [156200]], [[194931, 194931], "mapped", [156231]], [[194932, 194932], "mapped", [17241]], [[194933, 194933], "mapped", [156377]], [[194934, 194934], "mapped", [32634]], [[194935, 194935], "mapped", [156478]], [[194936, 194936], "mapped", [32661]], [[194937, 194937], "mapped", [32762]], [[194938, 194938], "mapped", [32773]], [[194939, 194939], "mapped", [156890]], [[194940, 194940], "mapped", [156963]], [[194941, 194941], "mapped", [32864]], [[194942, 194942], "mapped", [157096]], [[194943, 194943], "mapped", [32880]], [[194944, 194944], "mapped", [144223]], [[194945, 194945], "mapped", [17365]], [[194946, 194946], "mapped", [32946]], [[194947, 194947], "mapped", [33027]], [[194948, 194948], "mapped", [17419]], [[194949, 194949], "mapped", [33086]], [[194950, 194950], "mapped", [23221]], [[194951, 194951], "mapped", [157607]], [[194952, 194952], "mapped", [157621]], [[194953, 194953], "mapped", [144275]], [[194954, 194954], "mapped", [144284]], [[194955, 194955], "mapped", [33281]], [[194956, 194956], "mapped", [33284]], [[194957, 194957], "mapped", [36766]], [[194958, 194958], "mapped", [17515]], [[194959, 194959], "mapped", [33425]], [[194960, 194960], "mapped", [33419]], [[194961, 194961], "mapped", [33437]], [[194962, 194962], "mapped", [21171]], [[194963, 194963], "mapped", [33457]], [[194964, 194964], "mapped", [33459]], [[194965, 194965], "mapped", [33469]], [[194966, 194966], "mapped", [33510]], [[194967, 194967], "mapped", [158524]], [[194968, 194968], "mapped", [33509]], [[194969, 194969], "mapped", [33565]], [[194970, 194970], "mapped", [33635]], [[194971, 194971], "mapped", [33709]], [[194972, 194972], "mapped", [33571]], [[194973, 194973], "mapped", [33725]], [[194974, 194974], "mapped", [33767]], [[194975, 194975], "mapped", [33879]], [[194976, 194976], "mapped", [33619]], [[194977, 194977], "mapped", [33738]], [[194978, 194978], "mapped", [33740]], [[194979, 194979], "mapped", [33756]], [[194980, 194980], "mapped", [158774]], [[194981, 194981], "mapped", [159083]], [[194982, 194982], "mapped", [158933]], [[194983, 194983], "mapped", [17707]], [[194984, 194984], "mapped", [34033]], [[194985, 194985], "mapped", [34035]], [[194986, 194986], "mapped", [34070]], [[194987, 194987], "mapped", [160714]], [[194988, 194988], "mapped", [34148]], [[194989, 194989], "mapped", [159532]], [[194990, 194990], "mapped", [17757]], [[194991, 194991], "mapped", [17761]], [[194992, 194992], "mapped", [159665]], [[194993, 194993], "mapped", [159954]], [[194994, 194994], "mapped", [17771]], [[194995, 194995], "mapped", [34384]], [[194996, 194996], "mapped", [34396]], [[194997, 194997], "mapped", [34407]], [[194998, 194998], "mapped", [34409]], [[194999, 194999], "mapped", [34473]], [[195e3, 195e3], "mapped", [34440]], [[195001, 195001], "mapped", [34574]], [[195002, 195002], "mapped", [34530]], [[195003, 195003], "mapped", [34681]], [[195004, 195004], "mapped", [34600]], [[195005, 195005], "mapped", [34667]], [[195006, 195006], "mapped", [34694]], [[195007, 195007], "disallowed"], [[195008, 195008], "mapped", [34785]], [[195009, 195009], "mapped", [34817]], [[195010, 195010], "mapped", [17913]], [[195011, 195011], "mapped", [34912]], [[195012, 195012], "mapped", [34915]], [[195013, 195013], "mapped", [161383]], [[195014, 195014], "mapped", [35031]], [[195015, 195015], "mapped", [35038]], [[195016, 195016], "mapped", [17973]], [[195017, 195017], "mapped", [35066]], [[195018, 195018], "mapped", [13499]], [[195019, 195019], "mapped", [161966]], [[195020, 195020], "mapped", [162150]], [[195021, 195021], "mapped", [18110]], [[195022, 195022], "mapped", [18119]], [[195023, 195023], "mapped", [35488]], [[195024, 195024], "mapped", [35565]], [[195025, 195025], "mapped", [35722]], [[195026, 195026], "mapped", [35925]], [[195027, 195027], "mapped", [162984]], [[195028, 195028], "mapped", [36011]], [[195029, 195029], "mapped", [36033]], [[195030, 195030], "mapped", [36123]], [[195031, 195031], "mapped", [36215]], [[195032, 195032], "mapped", [163631]], [[195033, 195033], "mapped", [133124]], [[195034, 195034], "mapped", [36299]], [[195035, 195035], "mapped", [36284]], [[195036, 195036], "mapped", [36336]], [[195037, 195037], "mapped", [133342]], [[195038, 195038], "mapped", [36564]], [[195039, 195039], "mapped", [36664]], [[195040, 195040], "mapped", [165330]], [[195041, 195041], "mapped", [165357]], [[195042, 195042], "mapped", [37012]], [[195043, 195043], "mapped", [37105]], [[195044, 195044], "mapped", [37137]], [[195045, 195045], "mapped", [165678]], [[195046, 195046], "mapped", [37147]], [[195047, 195047], "mapped", [37432]], [[195048, 195048], "mapped", [37591]], [[195049, 195049], "mapped", [37592]], [[195050, 195050], "mapped", [37500]], [[195051, 195051], "mapped", [37881]], [[195052, 195052], "mapped", [37909]], [[195053, 195053], "mapped", [166906]], [[195054, 195054], "mapped", [38283]], [[195055, 195055], "mapped", [18837]], [[195056, 195056], "mapped", [38327]], [[195057, 195057], "mapped", [167287]], [[195058, 195058], "mapped", [18918]], [[195059, 195059], "mapped", [38595]], [[195060, 195060], "mapped", [23986]], [[195061, 195061], "mapped", [38691]], [[195062, 195062], "mapped", [168261]], [[195063, 195063], "mapped", [168474]], [[195064, 195064], "mapped", [19054]], [[195065, 195065], "mapped", [19062]], [[195066, 195066], "mapped", [38880]], [[195067, 195067], "mapped", [168970]], [[195068, 195068], "mapped", [19122]], [[195069, 195069], "mapped", [169110]], [[195070, 195071], "mapped", [38923]], [[195072, 195072], "mapped", [38953]], [[195073, 195073], "mapped", [169398]], [[195074, 195074], "mapped", [39138]], [[195075, 195075], "mapped", [19251]], [[195076, 195076], "mapped", [39209]], [[195077, 195077], "mapped", [39335]], [[195078, 195078], "mapped", [39362]], [[195079, 195079], "mapped", [39422]], [[195080, 195080], "mapped", [19406]], [[195081, 195081], "mapped", [170800]], [[195082, 195082], "mapped", [39698]], [[195083, 195083], "mapped", [4e4]], [[195084, 195084], "mapped", [40189]], [[195085, 195085], "mapped", [19662]], [[195086, 195086], "mapped", [19693]], [[195087, 195087], "mapped", [40295]], [[195088, 195088], "mapped", [172238]], [[195089, 195089], "mapped", [19704]], [[195090, 195090], "mapped", [172293]], [[195091, 195091], "mapped", [172558]], [[195092, 195092], "mapped", [172689]], [[195093, 195093], "mapped", [40635]], [[195094, 195094], "mapped", [19798]], [[195095, 195095], "mapped", [40697]], [[195096, 195096], "mapped", [40702]], [[195097, 195097], "mapped", [40709]], [[195098, 195098], "mapped", [40719]], [[195099, 195099], "mapped", [40726]], [[195100, 195100], "mapped", [40763]], [[195101, 195101], "mapped", [173568]], [[195102, 196605], "disallowed"], [[196606, 196607], "disallowed"], [[196608, 262141], "disallowed"], [[262142, 262143], "disallowed"], [[262144, 327677], "disallowed"], [[327678, 327679], "disallowed"], [[327680, 393213], "disallowed"], [[393214, 393215], "disallowed"], [[393216, 458749], "disallowed"], [[458750, 458751], "disallowed"], [[458752, 524285], "disallowed"], [[524286, 524287], "disallowed"], [[524288, 589821], "disallowed"], [[589822, 589823], "disallowed"], [[589824, 655357], "disallowed"], [[655358, 655359], "disallowed"], [[655360, 720893], "disallowed"], [[720894, 720895], "disallowed"], [[720896, 786429], "disallowed"], [[786430, 786431], "disallowed"], [[786432, 851965], "disallowed"], [[851966, 851967], "disallowed"], [[851968, 917501], "disallowed"], [[917502, 917503], "disallowed"], [[917504, 917504], "disallowed"], [[917505, 917505], "disallowed"], [[917506, 917535], "disallowed"], [[917536, 917631], "disallowed"], [[917632, 917759], "disallowed"], [[917760, 917999], "ignored"], [[918e3, 983037], "disallowed"], [[983038, 983039], "disallowed"], [[983040, 1048573], "disallowed"], [[1048574, 1048575], "disallowed"], [[1048576, 1114109], "disallowed"], [[1114110, 1114111], "disallowed"]]; + } +}); + +// node_modules/tr46/index.js +var require_tr46 = __commonJS({ + "node_modules/tr46/index.js"(exports2, module2) { + "use strict"; + var punycode = __require("punycode"); + var mappingTable = require_mappingTable(); + var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 + }; + function normalize(str) { + return str.split("\0").map(function(s) { + return s.normalize("NFC"); + }).join("\0"); + } + function findStatus(val) { + var start = 0; + var end = mappingTable.length - 1; + while (start <= end) { + var mid = Math.floor((start + end) / 2); + var target = mappingTable[mid]; + if (target[0][0] <= val && target[0][1] >= val) { + return target; + } else if (target[0][0] > val) { + end = mid - 1; + } else { + start = mid + 1; + } + } + return null; + } + var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + function countSymbols(string) { + return string.replace(regexAstralSymbols, "_").length; + } + function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } + processed += String.fromCodePoint(codePoint); + break; + } + } + return { + string: processed, + error: hasError + }; + } + var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; + function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; + } + var error = false; + if (normalize(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) { + error = true; + } + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if (processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid" || processing === PROCESSING_OPTIONS.NONTRANSITIONAL && status[1] !== "valid" && status[1] !== "deviation") { + error = true; + break; + } + } + return { + label, + error + }; + } + function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch (e) { + result.error = true; + } + } + return { + string: labels.join("."), + error: result.error + }; + } + module2.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch (e) { + result.error = true; + return l; + } + }); + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } + for (var i = 0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } + if (result.error) return null; + return labels.join("."); + }; + module2.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + return { + domain: result.string, + error: result.error + }; + }; + module2.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; + } +}); + +// node_modules/whatwg-url/lib/url-state-machine.js +var require_url_state_machine = __commonJS({ + "node_modules/whatwg-url/lib/url-state-machine.js"(exports2, module2) { + "use strict"; + var punycode = __require("punycode"); + var tr46 = require_tr46(); + var specialSchemes = { + ftp: 21, + file: null, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + var failure = Symbol("failure"); + function countSymbols(str) { + return punycode.ucs2.decode(str).length; + } + function at(input, idx) { + const c = input[idx]; + return isNaN(c) ? void 0 : String.fromCodePoint(c); + } + function isASCIIDigit(c) { + return c >= 48 && c <= 57; + } + function isASCIIAlpha(c) { + return c >= 65 && c <= 90 || c >= 97 && c <= 122; + } + function isASCIIAlphanumeric(c) { + return isASCIIAlpha(c) || isASCIIDigit(c); + } + function isASCIIHex(c) { + return isASCIIDigit(c) || c >= 65 && c <= 70 || c >= 97 && c <= 102; + } + function isSingleDot(buffer) { + return buffer === "." || buffer.toLowerCase() === "%2e"; + } + function isDoubleDot(buffer) { + buffer = buffer.toLowerCase(); + return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e"; + } + function isWindowsDriveLetterCodePoints(cp1, cp2) { + return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124); + } + function isWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|"); + } + function isNormalizedWindowsDriveLetterString(string) { + return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":"; + } + function containsForbiddenHostCodePoint(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function containsForbiddenHostCodePointExcludingPercent(string) { + return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1; + } + function isSpecialScheme(scheme) { + return specialSchemes[scheme] !== void 0; + } + function isSpecial(url) { + return isSpecialScheme(url.scheme); + } + function defaultPort(scheme) { + return specialSchemes[scheme]; + } + function percentEncode(c) { + let hex = c.toString(16).toUpperCase(); + if (hex.length === 1) { + hex = "0" + hex; + } + return "%" + hex; + } + function utf8PercentEncode(c) { + const buf = new Buffer(c); + let str = ""; + for (let i = 0; i < buf.length; ++i) { + str += percentEncode(buf[i]); + } + return str; + } + function utf8PercentDecode(str) { + const input = new Buffer(str); + const output = []; + for (let i = 0; i < input.length; ++i) { + if (input[i] !== 37) { + output.push(input[i]); + } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) { + output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16)); + i += 2; + } else { + output.push(input[i]); + } + } + return new Buffer(output).toString(); + } + function isC0ControlPercentEncode(c) { + return c <= 31 || c > 126; + } + var extraPathPercentEncodeSet = /* @__PURE__ */ new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]); + function isPathPercentEncode(c) { + return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c); + } + var extraUserinfoPercentEncodeSet = /* @__PURE__ */ new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]); + function isUserinfoPercentEncode(c) { + return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c); + } + function percentEncodeChar(c, encodeSetPredicate) { + const cStr = String.fromCodePoint(c); + if (encodeSetPredicate(c)) { + return utf8PercentEncode(cStr); + } + return cStr; + } + function parseIPv4Number(input) { + let R = 10; + if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") { + input = input.substring(2); + R = 16; + } else if (input.length >= 2 && input.charAt(0) === "0") { + input = input.substring(1); + R = 8; + } + if (input === "") { + return 0; + } + const regex = R === 10 ? /[^0-9]/ : R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/; + if (regex.test(input)) { + return failure; + } + return parseInt(input, R); + } + function parseIPv4(input) { + const parts = input.split("."); + if (parts[parts.length - 1] === "") { + if (parts.length > 1) { + parts.pop(); + } + } + if (parts.length > 4) { + return input; + } + const numbers = []; + for (const part of parts) { + if (part === "") { + return input; + } + const n = parseIPv4Number(part); + if (n === failure) { + return input; + } + numbers.push(n); + } + for (let i = 0; i < numbers.length - 1; ++i) { + if (numbers[i] > 255) { + return failure; + } + } + if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) { + return failure; + } + let ipv4 = numbers.pop(); + let counter = 0; + for (const n of numbers) { + ipv4 += n * Math.pow(256, 3 - counter); + ++counter; + } + return ipv4; + } + function serializeIPv4(address) { + let output = ""; + let n = address; + for (let i = 1; i <= 4; ++i) { + output = String(n % 256) + output; + if (i !== 4) { + output = "." + output; + } + n = Math.floor(n / 256); + } + return output; + } + function parseIPv6(input) { + const address = [0, 0, 0, 0, 0, 0, 0, 0]; + let pieceIndex = 0; + let compress = null; + let pointer = 0; + input = punycode.ucs2.decode(input); + if (input[pointer] === 58) { + if (input[pointer + 1] !== 58) { + return failure; + } + pointer += 2; + ++pieceIndex; + compress = pieceIndex; + } + while (pointer < input.length) { + if (pieceIndex === 8) { + return failure; + } + if (input[pointer] === 58) { + if (compress !== null) { + return failure; + } + ++pointer; + ++pieceIndex; + compress = pieceIndex; + continue; + } + let value = 0; + let length = 0; + while (length < 4 && isASCIIHex(input[pointer])) { + value = value * 16 + parseInt(at(input, pointer), 16); + ++pointer; + ++length; + } + if (input[pointer] === 46) { + if (length === 0) { + return failure; + } + pointer -= length; + if (pieceIndex > 6) { + return failure; + } + let numbersSeen = 0; + while (input[pointer] !== void 0) { + let ipv4Piece = null; + if (numbersSeen > 0) { + if (input[pointer] === 46 && numbersSeen < 4) { + ++pointer; + } else { + return failure; + } + } + if (!isASCIIDigit(input[pointer])) { + return failure; + } + while (isASCIIDigit(input[pointer])) { + const number = parseInt(at(input, pointer)); + if (ipv4Piece === null) { + ipv4Piece = number; + } else if (ipv4Piece === 0) { + return failure; + } else { + ipv4Piece = ipv4Piece * 10 + number; + } + if (ipv4Piece > 255) { + return failure; + } + ++pointer; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + ++numbersSeen; + if (numbersSeen === 2 || numbersSeen === 4) { + ++pieceIndex; + } + } + if (numbersSeen !== 4) { + return failure; + } + break; + } else if (input[pointer] === 58) { + ++pointer; + if (input[pointer] === void 0) { + return failure; + } + } else if (input[pointer] !== void 0) { + return failure; + } + address[pieceIndex] = value; + ++pieceIndex; + } + if (compress !== null) { + let swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex !== 0 && swaps > 0) { + const temp = address[compress + swaps - 1]; + address[compress + swaps - 1] = address[pieceIndex]; + address[pieceIndex] = temp; + --pieceIndex; + --swaps; + } + } else if (compress === null && pieceIndex !== 8) { + return failure; + } + return address; + } + function serializeIPv6(address) { + let output = ""; + const seqResult = findLongestZeroSequence(address); + const compress = seqResult.idx; + let ignore0 = false; + for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) { + if (ignore0 && address[pieceIndex] === 0) { + continue; + } else if (ignore0) { + ignore0 = false; + } + if (compress === pieceIndex) { + const separator = pieceIndex === 0 ? "::" : ":"; + output += separator; + ignore0 = true; + continue; + } + output += address[pieceIndex].toString(16); + if (pieceIndex !== 7) { + output += ":"; + } + } + return output; + } + function parseHost(input, isSpecialArg) { + if (input[0] === "[") { + if (input[input.length - 1] !== "]") { + return failure; + } + return parseIPv6(input.substring(1, input.length - 1)); + } + if (!isSpecialArg) { + return parseOpaqueHost(input); + } + const domain = utf8PercentDecode(input); + const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false); + if (asciiDomain === null) { + return failure; + } + if (containsForbiddenHostCodePoint(asciiDomain)) { + return failure; + } + const ipv4Host = parseIPv4(asciiDomain); + if (typeof ipv4Host === "number" || ipv4Host === failure) { + return ipv4Host; + } + return asciiDomain; + } + function parseOpaqueHost(input) { + if (containsForbiddenHostCodePointExcludingPercent(input)) { + return failure; + } + let output = ""; + const decoded = punycode.ucs2.decode(input); + for (let i = 0; i < decoded.length; ++i) { + output += percentEncodeChar(decoded[i], isC0ControlPercentEncode); + } + return output; + } + function findLongestZeroSequence(arr) { + let maxIdx = null; + let maxLen = 1; + let currStart = null; + let currLen = 0; + for (let i = 0; i < arr.length; ++i) { + if (arr[i] !== 0) { + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + currStart = null; + currLen = 0; + } else { + if (currStart === null) { + currStart = i; + } + ++currLen; + } + } + if (currLen > maxLen) { + maxIdx = currStart; + maxLen = currLen; + } + return { + idx: maxIdx, + len: maxLen + }; + } + function serializeHost(host) { + if (typeof host === "number") { + return serializeIPv4(host); + } + if (host instanceof Array) { + return "[" + serializeIPv6(host) + "]"; + } + return host; + } + function trimControlChars(url) { + return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, ""); + } + function trimTabAndNewline(url) { + return url.replace(/\u0009|\u000A|\u000D/g, ""); + } + function shortenPath(url) { + const path2 = url.path; + if (path2.length === 0) { + return; + } + if (url.scheme === "file" && path2.length === 1 && isNormalizedWindowsDriveLetter(path2[0])) { + return; + } + path2.pop(); + } + function includesCredentials(url) { + return url.username !== "" || url.password !== ""; + } + function cannotHaveAUsernamePasswordPort(url) { + return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file"; + } + function isNormalizedWindowsDriveLetter(string) { + return /^[A-Za-z]:$/.test(string); + } + function URLStateMachine(input, base, encodingOverride, url, stateOverride) { + this.pointer = 0; + this.input = input; + this.base = base || null; + this.encodingOverride = encodingOverride || "utf-8"; + this.stateOverride = stateOverride; + this.url = url; + this.failure = false; + this.parseError = false; + if (!this.url) { + this.url = { + scheme: "", + username: "", + password: "", + host: null, + port: null, + path: [], + query: null, + fragment: null, + cannotBeABaseURL: false + }; + const res2 = trimControlChars(this.input); + if (res2 !== this.input) { + this.parseError = true; + } + this.input = res2; + } + const res = trimTabAndNewline(this.input); + if (res !== this.input) { + this.parseError = true; + } + this.input = res; + this.state = stateOverride || "scheme start"; + this.buffer = ""; + this.atFlag = false; + this.arrFlag = false; + this.passwordTokenSeenFlag = false; + this.input = punycode.ucs2.decode(this.input); + for (; this.pointer <= this.input.length; ++this.pointer) { + const c = this.input[this.pointer]; + const cStr = isNaN(c) ? void 0 : String.fromCodePoint(c); + const ret = this["parse " + this.state](c, cStr); + if (!ret) { + break; + } else if (ret === failure) { + this.failure = true; + break; + } + } + } + URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) { + if (isASCIIAlpha(c)) { + this.buffer += cStr.toLowerCase(); + this.state = "scheme"; + } else if (!this.stateOverride) { + this.state = "no scheme"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) { + if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) { + this.buffer += cStr.toLowerCase(); + } else if (c === 58) { + if (this.stateOverride) { + if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) { + return false; + } + if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) { + return false; + } + if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") { + return false; + } + if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) { + return false; + } + } + this.url.scheme = this.buffer; + this.buffer = ""; + if (this.stateOverride) { + return false; + } + if (this.url.scheme === "file") { + if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) { + this.parseError = true; + } + this.state = "file"; + } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) { + this.state = "special relative or authority"; + } else if (isSpecial(this.url)) { + this.state = "special authority slashes"; + } else if (this.input[this.pointer + 1] === 47) { + this.state = "path or authority"; + ++this.pointer; + } else { + this.url.cannotBeABaseURL = true; + this.url.path.push(""); + this.state = "cannot-be-a-base-URL path"; + } + } else if (!this.stateOverride) { + this.buffer = ""; + this.state = "no scheme"; + this.pointer = -1; + } else { + this.parseError = true; + return failure; + } + return true; + }; + URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) { + if (this.base === null || this.base.cannotBeABaseURL && c !== 35) { + return failure; + } else if (this.base.cannotBeABaseURL && c === 35) { + this.url.scheme = this.base.scheme; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.url.cannotBeABaseURL = true; + this.state = "fragment"; + } else if (this.base.scheme === "file") { + this.state = "file"; + --this.pointer; + } else { + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "relative"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) { + if (c === 47) { + this.state = "authority"; + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative"] = function parseRelative(c) { + this.url.scheme = this.base.scheme; + if (isNaN(c)) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 47) { + this.state = "relative slash"; + } else if (c === 63) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else if (isSpecial(this.url) && c === 92) { + this.parseError = true; + this.state = "relative slash"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.url.path = this.base.path.slice(0, this.base.path.length - 1); + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) { + if (isSpecial(this.url) && (c === 47 || c === 92)) { + if (c === 92) { + this.parseError = true; + } + this.state = "special authority ignore slashes"; + } else if (c === 47) { + this.state = "authority"; + } else { + this.url.username = this.base.username; + this.url.password = this.base.password; + this.url.host = this.base.host; + this.url.port = this.base.port; + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) { + if (c === 47 && this.input[this.pointer + 1] === 47) { + this.state = "special authority ignore slashes"; + ++this.pointer; + } else { + this.parseError = true; + this.state = "special authority ignore slashes"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) { + if (c !== 47 && c !== 92) { + this.state = "authority"; + --this.pointer; + } else { + this.parseError = true; + } + return true; + }; + URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) { + if (c === 64) { + this.parseError = true; + if (this.atFlag) { + this.buffer = "%40" + this.buffer; + } + this.atFlag = true; + const len = countSymbols(this.buffer); + for (let pointer = 0; pointer < len; ++pointer) { + const codePoint = this.buffer.codePointAt(pointer); + if (codePoint === 58 && !this.passwordTokenSeenFlag) { + this.passwordTokenSeenFlag = true; + continue; + } + const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode); + if (this.passwordTokenSeenFlag) { + this.url.password += encodedCodePoints; + } else { + this.url.username += encodedCodePoints; + } + } + this.buffer = ""; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + if (this.atFlag && this.buffer === "") { + this.parseError = true; + return failure; + } + this.pointer -= countSymbols(this.buffer) + 1; + this.buffer = ""; + this.state = "host"; + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse hostname"] = URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) { + if (this.stateOverride && this.url.scheme === "file") { + --this.pointer; + this.state = "file host"; + } else if (c === 58 && !this.arrFlag) { + if (this.buffer === "") { + this.parseError = true; + return failure; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "port"; + if (this.stateOverride === "hostname") { + return false; + } + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92) { + --this.pointer; + if (isSpecial(this.url) && this.buffer === "") { + this.parseError = true; + return failure; + } else if (this.stateOverride && this.buffer === "" && (includesCredentials(this.url) || this.url.port !== null)) { + this.parseError = true; + return false; + } + const host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + this.url.host = host; + this.buffer = ""; + this.state = "path start"; + if (this.stateOverride) { + return false; + } + } else { + if (c === 91) { + this.arrFlag = true; + } else if (c === 93) { + this.arrFlag = false; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) { + if (isASCIIDigit(c)) { + this.buffer += cStr; + } else if (isNaN(c) || c === 47 || c === 63 || c === 35 || isSpecial(this.url) && c === 92 || this.stateOverride) { + if (this.buffer !== "") { + const port = parseInt(this.buffer); + if (port > Math.pow(2, 16) - 1) { + this.parseError = true; + return failure; + } + this.url.port = port === defaultPort(this.url.scheme) ? null : port; + this.buffer = ""; + } + if (this.stateOverride) { + return false; + } + this.state = "path start"; + --this.pointer; + } else { + this.parseError = true; + return failure; + } + return true; + }; + var fileOtherwiseCodePoints = /* @__PURE__ */ new Set([47, 92, 63, 35]); + URLStateMachine.prototype["parse file"] = function parseFile(c) { + this.url.scheme = "file"; + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file slash"; + } else if (this.base !== null && this.base.scheme === "file") { + if (isNaN(c)) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + } else if (c === 63) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + this.url.query = this.base.query; + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points + !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) || this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points + !fileOtherwiseCodePoints.has(this.input[this.pointer + 2])) { + this.url.host = this.base.host; + this.url.path = this.base.path.slice(); + shortenPath(this.url); + } else { + this.parseError = true; + } + this.state = "path"; + --this.pointer; + } + } else { + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) { + if (c === 47 || c === 92) { + if (c === 92) { + this.parseError = true; + } + this.state = "file host"; + } else { + if (this.base !== null && this.base.scheme === "file") { + if (isNormalizedWindowsDriveLetterString(this.base.path[0])) { + this.url.path.push(this.base.path[0]); + } else { + this.url.host = this.base.host; + } + } + this.state = "path"; + --this.pointer; + } + return true; + }; + URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) { + if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) { + --this.pointer; + if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) { + this.parseError = true; + this.state = "path"; + } else if (this.buffer === "") { + this.url.host = ""; + if (this.stateOverride) { + return false; + } + this.state = "path start"; + } else { + let host = parseHost(this.buffer, isSpecial(this.url)); + if (host === failure) { + return failure; + } + if (host === "localhost") { + host = ""; + } + this.url.host = host; + if (this.stateOverride) { + return false; + } + this.buffer = ""; + this.state = "path start"; + } + } else { + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse path start"] = function parsePathStart(c) { + if (isSpecial(this.url)) { + if (c === 92) { + this.parseError = true; + } + this.state = "path"; + if (c !== 47 && c !== 92) { + --this.pointer; + } + } else if (!this.stateOverride && c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (!this.stateOverride && c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else if (c !== void 0) { + this.state = "path"; + if (c !== 47) { + --this.pointer; + } + } + return true; + }; + URLStateMachine.prototype["parse path"] = function parsePath(c) { + if (isNaN(c) || c === 47 || isSpecial(this.url) && c === 92 || !this.stateOverride && (c === 63 || c === 35)) { + if (isSpecial(this.url) && c === 92) { + this.parseError = true; + } + if (isDoubleDot(this.buffer)) { + shortenPath(this.url); + if (c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } + } else if (isSingleDot(this.buffer) && c !== 47 && !(isSpecial(this.url) && c === 92)) { + this.url.path.push(""); + } else if (!isSingleDot(this.buffer)) { + if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) { + if (this.url.host !== "" && this.url.host !== null) { + this.parseError = true; + this.url.host = ""; + } + this.buffer = this.buffer[0] + ":"; + } + this.url.path.push(this.buffer); + } + this.buffer = ""; + if (this.url.scheme === "file" && (c === void 0 || c === 63 || c === 35)) { + while (this.url.path.length > 1 && this.url.path[0] === "") { + this.parseError = true; + this.url.path.shift(); + } + } + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += percentEncodeChar(c, isPathPercentEncode); + } + return true; + }; + URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) { + if (c === 63) { + this.url.query = ""; + this.state = "query"; + } else if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } else { + if (!isNaN(c) && c !== 37) { + this.parseError = true; + } + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + if (!isNaN(c)) { + this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode); + } + } + return true; + }; + URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) { + if (isNaN(c) || !this.stateOverride && c === 35) { + if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") { + this.encodingOverride = "utf-8"; + } + const buffer = new Buffer(this.buffer); + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] < 33 || buffer[i] > 126 || buffer[i] === 34 || buffer[i] === 35 || buffer[i] === 60 || buffer[i] === 62) { + this.url.query += percentEncode(buffer[i]); + } else { + this.url.query += String.fromCodePoint(buffer[i]); + } + } + this.buffer = ""; + if (c === 35) { + this.url.fragment = ""; + this.state = "fragment"; + } + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.buffer += cStr; + } + return true; + }; + URLStateMachine.prototype["parse fragment"] = function parseFragment(c) { + if (isNaN(c)) { + } else if (c === 0) { + this.parseError = true; + } else { + if (c === 37 && (!isASCIIHex(this.input[this.pointer + 1]) || !isASCIIHex(this.input[this.pointer + 2]))) { + this.parseError = true; + } + this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode); + } + return true; + }; + function serializeURL(url, excludeFragment) { + let output = url.scheme + ":"; + if (url.host !== null) { + output += "//"; + if (url.username !== "" || url.password !== "") { + output += url.username; + if (url.password !== "") { + output += ":" + url.password; + } + output += "@"; + } + output += serializeHost(url.host); + if (url.port !== null) { + output += ":" + url.port; + } + } else if (url.host === null && url.scheme === "file") { + output += "//"; + } + if (url.cannotBeABaseURL) { + output += url.path[0]; + } else { + for (const string of url.path) { + output += "/" + string; + } + } + if (url.query !== null) { + output += "?" + url.query; + } + if (!excludeFragment && url.fragment !== null) { + output += "#" + url.fragment; + } + return output; + } + function serializeOrigin(tuple) { + let result = tuple.scheme + "://"; + result += serializeHost(tuple.host); + if (tuple.port !== null) { + result += ":" + tuple.port; + } + return result; + } + module2.exports.serializeURL = serializeURL; + module2.exports.serializeURLOrigin = function(url) { + switch (url.scheme) { + case "blob": + try { + return module2.exports.serializeURLOrigin(module2.exports.parseURL(url.path[0])); + } catch (e) { + return "null"; + } + case "ftp": + case "gopher": + case "http": + case "https": + case "ws": + case "wss": + return serializeOrigin({ + scheme: url.scheme, + host: url.host, + port: url.port + }); + case "file": + return "file://"; + default: + return "null"; + } + }; + module2.exports.basicURLParse = function(input, options) { + if (options === void 0) { + options = {}; + } + const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride); + if (usm.failure) { + return "failure"; + } + return usm.url; + }; + module2.exports.setTheUsername = function(url, username) { + url.username = ""; + const decoded = punycode.ucs2.decode(username); + for (let i = 0; i < decoded.length; ++i) { + url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.setThePassword = function(url, password) { + url.password = ""; + const decoded = punycode.ucs2.decode(password); + for (let i = 0; i < decoded.length; ++i) { + url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode); + } + }; + module2.exports.serializeHost = serializeHost; + module2.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort; + module2.exports.serializeInteger = function(integer) { + return String(integer); + }; + module2.exports.parseURL = function(input, options) { + if (options === void 0) { + options = {}; + } + return module2.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride }); + }; + } +}); + +// node_modules/whatwg-url/lib/URL-impl.js +var require_URL_impl = __commonJS({ + "node_modules/whatwg-url/lib/URL-impl.js"(exports2) { + "use strict"; + var usm = require_url_state_machine(); + exports2.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; + let parsedBase = null; + if (base !== void 0) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get href() { + return usm.serializeURL(this._url); + } + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + this._url = parsedURL; + } + get origin() { + return usm.serializeURLOrigin(this._url); + } + get protocol() { + return this._url.scheme + ":"; + } + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + get username() { + return this._url.username; + } + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setTheUsername(this._url, v); + } + get password() { + return this._url.password; + } + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + usm.setThePassword(this._url, v); + } + get host() { + const url = this._url; + if (url.host === null) { + return ""; + } + if (url.port === null) { + return usm.serializeHost(url.host); + } + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + get hostname() { + if (this._url.host === null) { + return ""; + } + return usm.serializeHost(this._url.host); + } + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + get port() { + if (this._url.port === null) { + return ""; + } + return usm.serializeInteger(this._url.port); + } + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + if (this._url.path.length === 0) { + return ""; + } + return "/" + this._url.path.join("/"); + } + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + return "?" + this._url.query; + } + set search(v) { + const url = this._url; + if (v === "") { + url.query = null; + return; + } + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + return "#" + this._url.fragment; + } + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + toJSON() { + return this.href; + } + }; + } +}); + +// node_modules/whatwg-url/lib/URL.js +var require_URL = __commonJS({ + "node_modules/whatwg-url/lib/URL.js"(exports2, module2) { + "use strict"; + var conversions = require_lib7(); + var utils = require_utils4(); + var Impl = require_URL_impl(); + var impl = utils.implSymbol; + function URL2(url) { + if (!this || this[impl] || !(this instanceof URL2)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== void 0) { + args[1] = conversions["USVString"](args[1]); + } + module2.exports.setup(this, args); + } + URL2.prototype.toJSON = function toJSON() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); + }; + Object.defineProperty(URL2.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true + }); + URL2.prototype.toString = function() { + if (!this || !module2.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; + }; + Object.defineProperty(URL2.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(URL2.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true + }); + module2.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL2.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) privateData = {}; + privateData.wrapper = obj; + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL2, + expose: { + Window: { URL: URL2 }, + Worker: { URL: URL2 } + } + }; + } +}); + +// node_modules/whatwg-url/lib/public-api.js +var require_public_api = __commonJS({ + "node_modules/whatwg-url/lib/public-api.js"(exports2) { + "use strict"; + exports2.URL = require_URL().interface; + exports2.serializeURL = require_url_state_machine().serializeURL; + exports2.serializeURLOrigin = require_url_state_machine().serializeURLOrigin; + exports2.basicURLParse = require_url_state_machine().basicURLParse; + exports2.setTheUsername = require_url_state_machine().setTheUsername; + exports2.setThePassword = require_url_state_machine().setThePassword; + exports2.serializeHost = require_url_state_machine().serializeHost; + exports2.serializeInteger = require_url_state_machine().serializeInteger; + exports2.parseURL = require_url_state_machine().parseURL; + } +}); + +// ../../../../node_modules/safer-buffer/safer.js +var require_safer = __commonJS({ + "../../../../node_modules/safer-buffer/safer.js"(exports2, module2) { + "use strict"; + var buffer = __require("buffer"); + var Buffer2 = buffer.Buffer; + var safer = {}; + var key; + for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue; + if (key === "SlowBuffer" || key === "Buffer") continue; + safer[key] = buffer[key]; + } + var Safer = safer.Buffer = {}; + for (key in Buffer2) { + if (!Buffer2.hasOwnProperty(key)) continue; + if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue; + Safer[key] = Buffer2[key]; + } + safer.Buffer.prototype = Buffer2.prototype; + if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function(value, encodingOrOffset, length) { + if (typeof value === "number") { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); + } + if (value && typeof value.length === "undefined") { + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); + } + return Buffer2(value, encodingOrOffset, length); + }; + } + if (!Safer.alloc) { + Safer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"'); + } + var buf = Buffer2(size); + if (!fill || fill.length === 0) { + buf.fill(0); + } else if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + return buf; + }; + } + if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; + } catch (e) { + } + } + if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + }; + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; + } + } + module2.exports = safer; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js +var require_bom_handling = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js"(exports2) { + "use strict"; + var BOMChar = "\uFEFF"; + exports2.PrependBOM = PrependBOMWrapper; + function PrependBOMWrapper(encoder, options) { + this.encoder = encoder; + this.addBOM = true; + } + PrependBOMWrapper.prototype.write = function(str) { + if (this.addBOM) { + str = BOMChar + str; + this.addBOM = false; + } + return this.encoder.write(str); + }; + PrependBOMWrapper.prototype.end = function() { + return this.encoder.end(); + }; + exports2.StripBOM = StripBOMWrapper; + function StripBOMWrapper(decoder, options) { + this.decoder = decoder; + this.pass = false; + this.options = options || {}; + } + StripBOMWrapper.prototype.write = function(buf) { + var res = this.decoder.write(buf); + if (this.pass || !res) + return res; + if (res[0] === BOMChar) { + res = res.slice(1); + if (typeof this.options.stripBOM === "function") + this.options.stripBOM(); + } + this.pass = true; + return res; + }; + StripBOMWrapper.prototype.end = function() { + return this.decoder.end(); + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/internal.js +var require_internal = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module2.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + // Codec. + _internal: InternalCodec + }; + function InternalCodec(codecOptions, iconv) { + this.enc = codecOptions.encodingName; + this.bomAware = codecOptions.bomAware; + if (this.enc === "base64") + this.encoder = InternalEncoderBase64; + else if (this.enc === "cesu8") { + this.enc = "utf8"; + this.encoder = InternalEncoderCesu8; + if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { + this.decoder = InternalDecoderCesu8; + this.defaultCharUnicode = iconv.defaultCharUnicode; + } + } + } + InternalCodec.prototype.encoder = InternalEncoder; + InternalCodec.prototype.decoder = InternalDecoder; + var StringDecoder = __require("string_decoder").StringDecoder; + if (!StringDecoder.prototype.end) + StringDecoder.prototype.end = function() { + }; + function InternalDecoder(options, codec) { + this.decoder = new StringDecoder(codec.enc); + } + InternalDecoder.prototype.write = function(buf) { + if (!Buffer2.isBuffer(buf)) { + buf = Buffer2.from(buf); + } + return this.decoder.write(buf); + }; + InternalDecoder.prototype.end = function() { + return this.decoder.end(); + }; + function InternalEncoder(options, codec) { + this.enc = codec.enc; + } + InternalEncoder.prototype.write = function(str) { + return Buffer2.from(str, this.enc); + }; + InternalEncoder.prototype.end = function() { + }; + function InternalEncoderBase64(options, codec) { + this.prevStr = ""; + } + InternalEncoderBase64.prototype.write = function(str) { + str = this.prevStr + str; + var completeQuads = str.length - str.length % 4; + this.prevStr = str.slice(completeQuads); + str = str.slice(0, completeQuads); + return Buffer2.from(str, "base64"); + }; + InternalEncoderBase64.prototype.end = function() { + return Buffer2.from(this.prevStr, "base64"); + }; + function InternalEncoderCesu8(options, codec) { + } + InternalEncoderCesu8.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length * 3), bufIdx = 0; + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i); + if (charCode < 128) + buf[bufIdx++] = charCode; + else if (charCode < 2048) { + buf[bufIdx++] = 192 + (charCode >>> 6); + buf[bufIdx++] = 128 + (charCode & 63); + } else { + buf[bufIdx++] = 224 + (charCode >>> 12); + buf[bufIdx++] = 128 + (charCode >>> 6 & 63); + buf[bufIdx++] = 128 + (charCode & 63); + } + } + return buf.slice(0, bufIdx); + }; + InternalEncoderCesu8.prototype.end = function() { + }; + function InternalDecoderCesu8(options, codec) { + this.acc = 0; + this.contBytes = 0; + this.accBytes = 0; + this.defaultCharUnicode = codec.defaultCharUnicode; + } + InternalDecoderCesu8.prototype.write = function(buf) { + var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = ""; + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i]; + if ((curByte & 192) !== 128) { + if (contBytes > 0) { + res += this.defaultCharUnicode; + contBytes = 0; + } + if (curByte < 128) { + res += String.fromCharCode(curByte); + } else if (curByte < 224) { + acc = curByte & 31; + contBytes = 1; + accBytes = 1; + } else if (curByte < 240) { + acc = curByte & 15; + contBytes = 2; + accBytes = 1; + } else { + res += this.defaultCharUnicode; + } + } else { + if (contBytes > 0) { + acc = acc << 6 | curByte & 63; + contBytes--; + accBytes++; + if (contBytes === 0) { + if (accBytes === 2 && acc < 128 && acc > 0) + res += this.defaultCharUnicode; + else if (accBytes === 3 && acc < 2048) + res += this.defaultCharUnicode; + else + res += String.fromCharCode(acc); + } + } else { + res += this.defaultCharUnicode; + } + } + } + this.acc = acc; + this.contBytes = contBytes; + this.accBytes = accBytes; + return res; + }; + InternalDecoderCesu8.prototype.end = function() { + var res = 0; + if (this.contBytes > 0) + res += this.defaultCharUnicode; + return res; + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js +var require_utf32 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js"(exports2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports2._utf32 = Utf32Codec; + function Utf32Codec(codecOptions, iconv) { + this.iconv = iconv; + this.bomAware = true; + this.isLE = codecOptions.isLE; + } + exports2.utf32le = { type: "_utf32", isLE: true }; + exports2.utf32be = { type: "_utf32", isLE: false }; + exports2.ucs4le = "utf32le"; + exports2.ucs4be = "utf32be"; + Utf32Codec.prototype.encoder = Utf32Encoder; + Utf32Codec.prototype.decoder = Utf32Decoder; + function Utf32Encoder(options, codec) { + this.isLE = codec.isLE; + this.highSurrogate = 0; + } + Utf32Encoder.prototype.write = function(str) { + var src = Buffer2.from(str, "ucs2"); + var dst = Buffer2.alloc(src.length * 2); + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE; + var offset = 0; + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i); + var isHighSurrogate = 55296 <= code && code < 56320; + var isLowSurrogate = 56320 <= code && code < 57344; + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + write32.call(dst, this.highSurrogate, offset); + offset += 4; + } else { + var codepoint = (this.highSurrogate - 55296 << 10 | code - 56320) + 65536; + write32.call(dst, codepoint, offset); + offset += 4; + this.highSurrogate = 0; + continue; + } + } + if (isHighSurrogate) + this.highSurrogate = code; + else { + write32.call(dst, code, offset); + offset += 4; + this.highSurrogate = 0; + } + } + if (offset < dst.length) + dst = dst.slice(0, offset); + return dst; + }; + Utf32Encoder.prototype.end = function() { + if (!this.highSurrogate) + return; + var buf = Buffer2.alloc(4); + if (this.isLE) + buf.writeUInt32LE(this.highSurrogate, 0); + else + buf.writeUInt32BE(this.highSurrogate, 0); + this.highSurrogate = 0; + return buf; + }; + function Utf32Decoder(options, codec) { + this.isLE = codec.isLE; + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0); + this.overflow = []; + } + Utf32Decoder.prototype.write = function(src) { + if (src.length === 0) + return ""; + var i = 0; + var codepoint = 0; + var dst = Buffer2.alloc(src.length + 4); + var offset = 0; + var isLE = this.isLE; + var overflow = this.overflow; + var badChar = this.badChar; + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) + overflow.push(src[i]); + if (overflow.length === 4) { + if (isLE) { + codepoint = overflow[i] | overflow[i + 1] << 8 | overflow[i + 2] << 16 | overflow[i + 3] << 24; + } else { + codepoint = overflow[i + 3] | overflow[i + 2] << 8 | overflow[i + 1] << 16 | overflow[i] << 24; + } + overflow.length = 0; + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + } + for (; i < src.length - 3; i += 4) { + if (isLE) { + codepoint = src[i] | src[i + 1] << 8 | src[i + 2] << 16 | src[i + 3] << 24; + } else { + codepoint = src[i + 3] | src[i + 2] << 8 | src[i + 1] << 16 | src[i] << 24; + } + offset = _writeCodepoint(dst, offset, codepoint, badChar); + } + for (; i < src.length; i++) { + overflow.push(src[i]); + } + return dst.slice(0, offset).toString("ucs2"); + }; + function _writeCodepoint(dst, offset, codepoint, badChar) { + if (codepoint < 0 || codepoint > 1114111) { + codepoint = badChar; + } + if (codepoint >= 65536) { + codepoint -= 65536; + var high = 55296 | codepoint >> 10; + dst[offset++] = high & 255; + dst[offset++] = high >> 8; + var codepoint = 56320 | codepoint & 1023; + } + dst[offset++] = codepoint & 255; + dst[offset++] = codepoint >> 8; + return offset; + } + Utf32Decoder.prototype.end = function() { + this.overflow.length = 0; + }; + exports2.utf32 = Utf32AutoCodec; + exports2.ucs4 = "utf32"; + function Utf32AutoCodec(options, iconv) { + this.iconv = iconv; + } + Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder; + Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder; + function Utf32AutoEncoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options); + } + Utf32AutoEncoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf32AutoEncoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf32AutoDecoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf32AutoDecoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 32) + return ""; + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf32AutoDecoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + var trail = this.decoder.end(); + if (trail) + resStr += trail; + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var invalidLE = 0, invalidBE = 0; + var bmpCharsLE = 0, bmpCharsBE = 0; + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 4) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254 && b[2] === 0 && b[3] === 0) { + return "utf-32le"; + } + if (b[0] === 0 && b[1] === 0 && b[2] === 254 && b[3] === 255) { + return "utf-32be"; + } + } + if (b[0] !== 0 || b[1] > 16) invalidBE++; + if (b[3] !== 0 || b[2] > 16) invalidLE++; + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++; + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be"; + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le"; + return defaultEncoding || "utf-32le"; + } + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js +var require_utf16 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js"(exports2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports2.utf16be = Utf16BECodec; + function Utf16BECodec() { + } + Utf16BECodec.prototype.encoder = Utf16BEEncoder; + Utf16BECodec.prototype.decoder = Utf16BEDecoder; + Utf16BECodec.prototype.bomAware = true; + function Utf16BEEncoder() { + } + Utf16BEEncoder.prototype.write = function(str) { + var buf = Buffer2.from(str, "ucs2"); + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; + buf[i] = buf[i + 1]; + buf[i + 1] = tmp; + } + return buf; + }; + Utf16BEEncoder.prototype.end = function() { + }; + function Utf16BEDecoder() { + this.overflowByte = -1; + } + Utf16BEDecoder.prototype.write = function(buf) { + if (buf.length == 0) + return ""; + var buf2 = Buffer2.alloc(buf.length + 1), i = 0, j = 0; + if (this.overflowByte !== -1) { + buf2[0] = buf[0]; + buf2[1] = this.overflowByte; + i = 1; + j = 2; + } + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1]; + buf2[j + 1] = buf[i]; + } + this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; + return buf2.slice(0, j).toString("ucs2"); + }; + Utf16BEDecoder.prototype.end = function() { + this.overflowByte = -1; + }; + exports2.utf16 = Utf16Codec; + function Utf16Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf16Codec.prototype.encoder = Utf16Encoder; + Utf16Codec.prototype.decoder = Utf16Decoder; + function Utf16Encoder(options, codec) { + options = options || {}; + if (options.addBOM === void 0) + options.addBOM = true; + this.encoder = codec.iconv.getEncoder("utf-16le", options); + } + Utf16Encoder.prototype.write = function(str) { + return this.encoder.write(str); + }; + Utf16Encoder.prototype.end = function() { + return this.encoder.end(); + }; + function Utf16Decoder(options, codec) { + this.decoder = null; + this.initialBufs = []; + this.initialBufsLen = 0; + this.options = options || {}; + this.iconv = codec.iconv; + } + Utf16Decoder.prototype.write = function(buf) { + if (!this.decoder) { + this.initialBufs.push(buf); + this.initialBufsLen += buf.length; + if (this.initialBufsLen < 16) + return ""; + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.write(buf); + }; + Utf16Decoder.prototype.end = function() { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding); + this.decoder = this.iconv.getDecoder(encoding, this.options); + var resStr = ""; + for (var i = 0; i < this.initialBufs.length; i++) + resStr += this.decoder.write(this.initialBufs[i]); + var trail = this.decoder.end(); + if (trail) + resStr += trail; + this.initialBufs.length = this.initialBufsLen = 0; + return resStr; + } + return this.decoder.end(); + }; + function detectEncoding(bufs, defaultEncoding) { + var b = []; + var charsProcessed = 0; + var asciiCharsLE = 0, asciiCharsBE = 0; + outer_loop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i]; + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]); + if (b.length === 2) { + if (charsProcessed === 0) { + if (b[0] === 255 && b[1] === 254) return "utf-16le"; + if (b[0] === 254 && b[1] === 255) return "utf-16be"; + } + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++; + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++; + b.length = 0; + charsProcessed++; + if (charsProcessed >= 100) { + break outer_loop; + } + } + } + } + if (asciiCharsBE > asciiCharsLE) return "utf-16be"; + if (asciiCharsBE < asciiCharsLE) return "utf-16le"; + return defaultEncoding || "utf-16le"; + } + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js +var require_utf7 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js"(exports2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports2.utf7 = Utf7Codec; + exports2.unicode11utf7 = "utf7"; + function Utf7Codec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7Codec.prototype.encoder = Utf7Encoder; + Utf7Codec.prototype.decoder = Utf7Decoder; + Utf7Codec.prototype.bomAware = true; + var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; + function Utf7Encoder(options, codec) { + this.iconv = codec.iconv; + } + Utf7Encoder.prototype.write = function(str) { + return Buffer2.from(str.replace(nonDirectChars, function(chunk) { + return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; + }.bind(this))); + }; + Utf7Encoder.prototype.end = function() { + }; + function Utf7Decoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64Regex = /[A-Za-z0-9\/+]/; + var base64Chars = []; + for (i = 0; i < 256; i++) + base64Chars[i] = base64Regex.test(String.fromCharCode(i)); + var i; + var plusChar = "+".charCodeAt(0); + var minusChar = "-".charCodeAt(0); + var andChar = "&".charCodeAt(0); + Utf7Decoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64Chars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "+"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7Decoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + exports2.utf7imap = Utf7IMAPCodec; + function Utf7IMAPCodec(codecOptions, iconv) { + this.iconv = iconv; + } + Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; + Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; + Utf7IMAPCodec.prototype.bomAware = true; + function Utf7IMAPEncoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = Buffer2.alloc(6); + this.base64AccumIdx = 0; + } + Utf7IMAPEncoder.prototype.write = function(str) { + var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer2.alloc(str.length * 5 + 10), bufIdx = 0; + for (var i2 = 0; i2 < str.length; i2++) { + var uChar = str.charCodeAt(i2); + if (32 <= uChar && uChar <= 126) { + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + inBase64 = false; + } + if (!inBase64) { + buf[bufIdx++] = uChar; + if (uChar === andChar) + buf[bufIdx++] = minusChar; + } + } else { + if (!inBase64) { + buf[bufIdx++] = andChar; + inBase64 = true; + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8; + base64Accum[base64AccumIdx++] = uChar & 255; + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); + base64AccumIdx = 0; + } + } + } + } + this.inBase64 = inBase64; + this.base64AccumIdx = base64AccumIdx; + return buf.slice(0, bufIdx); + }; + Utf7IMAPEncoder.prototype.end = function() { + var buf = Buffer2.alloc(10), bufIdx = 0; + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); + this.base64AccumIdx = 0; + } + buf[bufIdx++] = minusChar; + this.inBase64 = false; + } + return buf.slice(0, bufIdx); + }; + function Utf7IMAPDecoder(options, codec) { + this.iconv = codec.iconv; + this.inBase64 = false; + this.base64Accum = ""; + } + var base64IMAPChars = base64Chars.slice(); + base64IMAPChars[",".charCodeAt(0)] = true; + Utf7IMAPDecoder.prototype.write = function(buf) { + var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; + for (var i2 = 0; i2 < buf.length; i2++) { + if (!inBase64) { + if (buf[i2] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); + lastI = i2 + 1; + inBase64 = true; + } + } else { + if (!base64IMAPChars[buf[i2]]) { + if (i2 == lastI && buf[i2] == minusChar) { + res += "&"; + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i2), "ascii").replace(/,/g, "/"); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + if (buf[i2] != minusChar) + i2--; + lastI = i2 + 1; + inBase64 = false; + base64Accum = ""; + } + } + } + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii"); + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/"); + var canBeDecoded = b64str.length - b64str.length % 8; + base64Accum = b64str.slice(canBeDecoded); + b64str = b64str.slice(0, canBeDecoded); + res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); + } + this.inBase64 = inBase64; + this.base64Accum = base64Accum; + return res; + }; + Utf7IMAPDecoder.prototype.end = function() { + var res = ""; + if (this.inBase64 && this.base64Accum.length > 0) + res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); + this.inBase64 = false; + this.base64Accum = ""; + return res; + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js +var require_sbcs_codec = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports2._sbcs = SBCSCodec; + function SBCSCodec(codecOptions, iconv) { + if (!codecOptions) + throw new Error("SBCS codec is called without the data."); + if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); + if (codecOptions.chars.length === 128) { + var asciiString = ""; + for (var i = 0; i < 128; i++) + asciiString += String.fromCharCode(i); + codecOptions.chars = asciiString + codecOptions.chars; + } + this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); + var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); + for (var i = 0; i < codecOptions.chars.length; i++) + encodeBuf[codecOptions.chars.charCodeAt(i)] = i; + this.encodeBuf = encodeBuf; + } + SBCSCodec.prototype.encoder = SBCSEncoder; + SBCSCodec.prototype.decoder = SBCSDecoder; + function SBCSEncoder(options, codec) { + this.encodeBuf = codec.encodeBuf; + } + SBCSEncoder.prototype.write = function(str) { + var buf = Buffer2.alloc(str.length); + for (var i = 0; i < str.length; i++) + buf[i] = this.encodeBuf[str.charCodeAt(i)]; + return buf; + }; + SBCSEncoder.prototype.end = function() { + }; + function SBCSDecoder(options, codec) { + this.decodeBuf = codec.decodeBuf; + } + SBCSDecoder.prototype.write = function(buf) { + var decodeBuf = this.decodeBuf; + var newBuf = Buffer2.alloc(buf.length * 2); + var idx1 = 0, idx2 = 0; + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; + idx2 = i * 2; + newBuf[idx2] = decodeBuf[idx1]; + newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; + } + return newBuf.toString("ucs2"); + }; + SBCSDecoder.prototype.end = function() { + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js +var require_sbcs_data = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { + "use strict"; + module2.exports = { + // Not supported by iconv, not sure why. + "10029": "maccenteuro", + "maccenteuro": { + "type": "_sbcs", + "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" + }, + "808": "cp808", + "ibm808": "cp808", + "cp808": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" + }, + "mik": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "cp720": { + "type": "_sbcs", + "chars": "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + // Aliases of generated encodings. + "ascii8bit": "ascii", + "usascii": "ascii", + "ansix34": "ascii", + "ansix341968": "ascii", + "ansix341986": "ascii", + "csascii": "ascii", + "cp367": "ascii", + "ibm367": "ascii", + "isoir6": "ascii", + "iso646us": "ascii", + "iso646irv": "ascii", + "us": "ascii", + "latin1": "iso88591", + "latin2": "iso88592", + "latin3": "iso88593", + "latin4": "iso88594", + "latin5": "iso88599", + "latin6": "iso885910", + "latin7": "iso885913", + "latin8": "iso885914", + "latin9": "iso885915", + "latin10": "iso885916", + "csisolatin1": "iso88591", + "csisolatin2": "iso88592", + "csisolatin3": "iso88593", + "csisolatin4": "iso88594", + "csisolatincyrillic": "iso88595", + "csisolatinarabic": "iso88596", + "csisolatingreek": "iso88597", + "csisolatinhebrew": "iso88598", + "csisolatin5": "iso88599", + "csisolatin6": "iso885910", + "l1": "iso88591", + "l2": "iso88592", + "l3": "iso88593", + "l4": "iso88594", + "l5": "iso88599", + "l6": "iso885910", + "l7": "iso885913", + "l8": "iso885914", + "l9": "iso885915", + "l10": "iso885916", + "isoir14": "iso646jp", + "isoir57": "iso646cn", + "isoir100": "iso88591", + "isoir101": "iso88592", + "isoir109": "iso88593", + "isoir110": "iso88594", + "isoir144": "iso88595", + "isoir127": "iso88596", + "isoir126": "iso88597", + "isoir138": "iso88598", + "isoir148": "iso88599", + "isoir157": "iso885910", + "isoir166": "tis620", + "isoir179": "iso885913", + "isoir199": "iso885914", + "isoir203": "iso885915", + "isoir226": "iso885916", + "cp819": "iso88591", + "ibm819": "iso88591", + "cyrillic": "iso88595", + "arabic": "iso88596", + "arabic8": "iso88596", + "ecma114": "iso88596", + "asmo708": "iso88596", + "greek": "iso88597", + "greek8": "iso88597", + "ecma118": "iso88597", + "elot928": "iso88597", + "hebrew": "iso88598", + "hebrew8": "iso88598", + "turkish": "iso88599", + "turkish8": "iso88599", + "thai": "iso885911", + "thai8": "iso885911", + "celtic": "iso885914", + "celtic8": "iso885914", + "isoceltic": "iso885914", + "tis6200": "tis620", + "tis62025291": "tis620", + "tis62025330": "tis620", + "10000": "macroman", + "10006": "macgreek", + "10007": "maccyrillic", + "10079": "maciceland", + "10081": "macturkish", + "cspc8codepage437": "cp437", + "cspc775baltic": "cp775", + "cspc850multilingual": "cp850", + "cspcp852": "cp852", + "cspc862latinhebrew": "cp862", + "cpgr": "cp869", + "msee": "cp1250", + "mscyrl": "cp1251", + "msansi": "cp1252", + "msgreek": "cp1253", + "msturk": "cp1254", + "mshebr": "cp1255", + "msarab": "cp1256", + "winbaltrim": "cp1257", + "cp20866": "koi8r", + "20866": "koi8r", + "ibm878": "koi8r", + "cskoi8r": "koi8r", + "cp21866": "koi8u", + "21866": "koi8u", + "ibm1168": "koi8u", + "strk10482002": "rk1048", + "tcvn5712": "tcvn", + "tcvn57121": "tcvn", + "gb198880": "iso646cn", + "cn": "iso646cn", + "csiso14jisc6220ro": "iso646jp", + "jisc62201969ro": "iso646jp", + "jp": "iso646jp", + "cshproman8": "hproman8", + "r8": "hproman8", + "roman8": "hproman8", + "xroman8": "hproman8", + "ibm1051": "hproman8", + "mac": "macintosh", + "csmacintosh": "macintosh" + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js +var require_sbcs_data_generated = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { + "use strict"; + module2.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "macgreek": { + "type": "_sbcs", + "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" + }, + "maciceland": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macroman": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macromania": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macthai": { + "type": "_sbcs", + "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "macturkish": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "macukraine": { + "type": "_sbcs", + "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" + }, + "koi8r": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8u": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "koi8t": { + "type": "_sbcs", + "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" + }, + "armscii8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" + }, + "rk1048": { + "type": "_sbcs", + "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "georgianps": { + "type": "_sbcs", + "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" + }, + "pt154": { + "type": "_sbcs", + "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" + }, + "viscii": { + "type": "_sbcs", + "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "hproman8": { + "type": "_sbcs", + "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" + }, + "macintosh": { + "type": "_sbcs", + "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" + }, + "ascii": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" + }, + "tis620": { + "type": "_sbcs", + "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" + } + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js +var require_dbcs_codec = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + exports2._dbcs = DBCSCodec; + var UNASSIGNED = -1; + var GB18030_CODE = -2; + var SEQ_START = -10; + var NODE_START = -1e3; + var UNASSIGNED_NODE = new Array(256); + var DEF_CHAR = -1; + for (i = 0; i < 256; i++) + UNASSIGNED_NODE[i] = UNASSIGNED; + var i; + function DBCSCodec(codecOptions, iconv) { + this.encodingName = codecOptions.encodingName; + if (!codecOptions) + throw new Error("DBCS codec is called without the data."); + if (!codecOptions.table) + throw new Error("Encoding '" + this.encodingName + "' has no data."); + var mappingTable = codecOptions.table(); + this.decodeTables = []; + this.decodeTables[0] = UNASSIGNED_NODE.slice(0); + this.decodeTableSeq = []; + for (var i2 = 0; i2 < mappingTable.length; i2++) + this._addDecodeChunk(mappingTable[i2]); + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030(); + var commonThirdByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var commonFourthByteNodeIdx = this.decodeTables.length; + this.decodeTables.push(UNASSIGNED_NODE.slice(0)); + var firstByteNode = this.decodeTables[0]; + for (var i2 = 129; i2 <= 254; i2++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i2]]; + for (var j = 48; j <= 57; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx; + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2"); + } + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]; + for (var k = 129; k <= 254; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx; + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue; + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3"); + } + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]; + for (var l = 48; l <= 57; l++) { + if (fourthByteNode[l] === UNASSIGNED) + fourthByteNode[l] = GB18030_CODE; + } + } + } + } + } + this.defaultCharUnicode = iconv.defaultCharUnicode; + this.encodeTable = []; + this.encodeTableSeq = []; + var skipEncodeChars = {}; + if (codecOptions.encodeSkipVals) + for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { + var val = codecOptions.encodeSkipVals[i2]; + if (typeof val === "number") + skipEncodeChars[val] = true; + else + for (var j = val.from; j <= val.to; j++) + skipEncodeChars[j] = true; + } + this._fillEncodeTable(0, 0, skipEncodeChars); + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) + this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); + } + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); + } + DBCSCodec.prototype.encoder = DBCSEncoder; + DBCSCodec.prototype.decoder = DBCSDecoder; + DBCSCodec.prototype._getDecodeTrieNode = function(addr) { + var bytes = []; + for (; addr > 0; addr >>>= 8) + bytes.push(addr & 255); + if (bytes.length == 0) + bytes.push(0); + var node = this.decodeTables[0]; + for (var i2 = bytes.length - 1; i2 > 0; i2--) { + var val = node[bytes[i2]]; + if (val == UNASSIGNED) { + node[bytes[i2]] = NODE_START - this.decodeTables.length; + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); + } else if (val <= NODE_START) { + node = this.decodeTables[NODE_START - val]; + } else + throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); + } + return node; + }; + DBCSCodec.prototype._addDecodeChunk = function(chunk) { + var curAddr = parseInt(chunk[0], 16); + var writeTable = this._getDecodeTrieNode(curAddr); + curAddr = curAddr & 255; + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k]; + if (typeof part === "string") { + for (var l = 0; l < part.length; ) { + var code = part.charCodeAt(l++); + if (55296 <= code && code < 56320) { + var codeTrail = part.charCodeAt(l++); + if (56320 <= codeTrail && codeTrail < 57344) + writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); + else + throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); + } else if (4080 < code && code <= 4095) { + var len = 4095 - code + 2; + var seq = []; + for (var m = 0; m < len; m++) + seq.push(part.charCodeAt(l++)); + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; + this.decodeTableSeq.push(seq); + } else + writeTable[curAddr++] = code; + } + } else if (typeof part === "number") { + var charCode = writeTable[curAddr - 1] + 1; + for (var l = 0; l < part; l++) + writeTable[curAddr++] = charCode++; + } else + throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); + } + if (curAddr > 255) + throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); + }; + DBCSCodec.prototype._getEncodeBucket = function(uCode) { + var high = uCode >> 8; + if (this.encodeTable[high] === void 0) + this.encodeTable[high] = UNASSIGNED_NODE.slice(0); + return this.encodeTable[high]; + }; + DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + if (bucket[low] <= SEQ_START) + this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; + else if (bucket[low] == UNASSIGNED) + bucket[low] = dbcsCode; + }; + DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { + var uCode = seq[0]; + var bucket = this._getEncodeBucket(uCode); + var low = uCode & 255; + var node; + if (bucket[low] <= SEQ_START) { + node = this.encodeTableSeq[SEQ_START - bucket[low]]; + } else { + node = {}; + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; + bucket[low] = SEQ_START - this.encodeTableSeq.length; + this.encodeTableSeq.push(node); + } + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode]; + if (typeof oldVal === "object") + node = oldVal; + else { + node = node[uCode] = {}; + if (oldVal !== void 0) + node[DEF_CHAR] = oldVal; + } + } + uCode = seq[seq.length - 1]; + node[uCode] = dbcsCode; + }; + DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx]; + var hasValues = false; + var subNodeEmpty = {}; + for (var i2 = 0; i2 < 256; i2++) { + var uCode = node[i2]; + var mbCode = prefix + i2; + if (skipEncodeChars[mbCode]) + continue; + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode); + hasValues = true; + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode; + if (!subNodeEmpty[subNodeIdx]) { + var newPrefix = mbCode << 8 >>> 0; + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) + hasValues = true; + else + subNodeEmpty[subNodeIdx] = true; + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); + hasValues = true; + } + } + return hasValues; + }; + function DBCSEncoder(options, codec) { + this.leadSurrogate = -1; + this.seqObj = void 0; + this.encodeTable = codec.encodeTable; + this.encodeTableSeq = codec.encodeTableSeq; + this.defaultCharSingleByte = codec.defCharSB; + this.gb18030 = codec.gb18030; + } + DBCSEncoder.prototype.write = function(str) { + var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i2 = 0, j = 0; + while (true) { + if (nextChar === -1) { + if (i2 == str.length) break; + var uCode = str.charCodeAt(i2++); + } else { + var uCode = nextChar; + nextChar = -1; + } + if (55296 <= uCode && uCode < 57344) { + if (uCode < 56320) { + if (leadSurrogate === -1) { + leadSurrogate = uCode; + continue; + } else { + leadSurrogate = uCode; + uCode = UNASSIGNED; + } + } else { + if (leadSurrogate !== -1) { + uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); + leadSurrogate = -1; + } else { + uCode = UNASSIGNED; + } + } + } else if (leadSurrogate !== -1) { + nextChar = uCode; + uCode = UNASSIGNED; + leadSurrogate = -1; + } + var dbcsCode = UNASSIGNED; + if (seqObj !== void 0 && uCode != UNASSIGNED) { + var resCode = seqObj[uCode]; + if (typeof resCode === "object") { + seqObj = resCode; + continue; + } else if (typeof resCode == "number") { + dbcsCode = resCode; + } else if (resCode == void 0) { + resCode = seqObj[DEF_CHAR]; + if (resCode !== void 0) { + dbcsCode = resCode; + nextChar = uCode; + } else { + } + } + seqObj = void 0; + } else if (uCode >= 0) { + var subtable = this.encodeTable[uCode >> 8]; + if (subtable !== void 0) + dbcsCode = subtable[uCode & 255]; + if (dbcsCode <= SEQ_START) { + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; + continue; + } + if (dbcsCode == UNASSIGNED && this.gb18030) { + var idx = findIdx(this.gb18030.uChars, uCode); + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); + newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); + dbcsCode = dbcsCode % 12600; + newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); + dbcsCode = dbcsCode % 1260; + newBuf[j++] = 129 + Math.floor(dbcsCode / 10); + dbcsCode = dbcsCode % 10; + newBuf[j++] = 48 + dbcsCode; + continue; + } + } + } + if (dbcsCode === UNASSIGNED) + dbcsCode = this.defaultCharSingleByte; + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else if (dbcsCode < 65536) { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } else if (dbcsCode < 16777216) { + newBuf[j++] = dbcsCode >> 16; + newBuf[j++] = dbcsCode >> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } else { + newBuf[j++] = dbcsCode >>> 24; + newBuf[j++] = dbcsCode >>> 16 & 255; + newBuf[j++] = dbcsCode >>> 8 & 255; + newBuf[j++] = dbcsCode & 255; + } + } + this.seqObj = seqObj; + this.leadSurrogate = leadSurrogate; + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.end = function() { + if (this.leadSurrogate === -1 && this.seqObj === void 0) + return; + var newBuf = Buffer2.alloc(10), j = 0; + if (this.seqObj) { + var dbcsCode = this.seqObj[DEF_CHAR]; + if (dbcsCode !== void 0) { + if (dbcsCode < 256) { + newBuf[j++] = dbcsCode; + } else { + newBuf[j++] = dbcsCode >> 8; + newBuf[j++] = dbcsCode & 255; + } + } else { + } + this.seqObj = void 0; + } + if (this.leadSurrogate !== -1) { + newBuf[j++] = this.defaultCharSingleByte; + this.leadSurrogate = -1; + } + return newBuf.slice(0, j); + }; + DBCSEncoder.prototype.findIdx = findIdx; + function DBCSDecoder(options, codec) { + this.nodeIdx = 0; + this.prevBytes = []; + this.decodeTables = codec.decodeTables; + this.decodeTableSeq = codec.decodeTableSeq; + this.defaultCharUnicode = codec.defaultCharUnicode; + this.gb18030 = codec.gb18030; + } + DBCSDecoder.prototype.write = function(buf) { + var newBuf = Buffer2.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBytes = this.prevBytes, prevOffset = this.prevBytes.length, seqStart = -this.prevBytes.length, uCode; + for (var i2 = 0, j = 0; i2 < buf.length; i2++) { + var curByte = i2 >= 0 ? buf[i2] : prevBytes[i2 + prevOffset]; + var uCode = this.decodeTables[nodeIdx][curByte]; + if (uCode >= 0) { + } else if (uCode === UNASSIGNED) { + uCode = this.defaultCharUnicode.charCodeAt(0); + i2 = seqStart; + } else if (uCode === GB18030_CODE) { + if (i2 >= 3) { + var ptr = (buf[i2 - 3] - 129) * 12600 + (buf[i2 - 2] - 48) * 1260 + (buf[i2 - 1] - 129) * 10 + (curByte - 48); + } else { + var ptr = (prevBytes[i2 - 3 + prevOffset] - 129) * 12600 + ((i2 - 2 >= 0 ? buf[i2 - 2] : prevBytes[i2 - 2 + prevOffset]) - 48) * 1260 + ((i2 - 1 >= 0 ? buf[i2 - 1] : prevBytes[i2 - 1 + prevOffset]) - 129) * 10 + (curByte - 48); + } + var idx = findIdx(this.gb18030.gbChars, ptr); + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; + } else if (uCode <= NODE_START) { + nodeIdx = NODE_START - uCode; + continue; + } else if (uCode <= SEQ_START) { + var seq = this.decodeTableSeq[SEQ_START - uCode]; + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k]; + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + } + uCode = seq[seq.length - 1]; + } else + throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); + if (uCode >= 65536) { + uCode -= 65536; + var uCodeLead = 55296 | uCode >> 10; + newBuf[j++] = uCodeLead & 255; + newBuf[j++] = uCodeLead >> 8; + uCode = 56320 | uCode & 1023; + } + newBuf[j++] = uCode & 255; + newBuf[j++] = uCode >> 8; + nodeIdx = 0; + seqStart = i2 + 1; + } + this.nodeIdx = nodeIdx; + this.prevBytes = seqStart >= 0 ? Array.prototype.slice.call(buf, seqStart) : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)); + return newBuf.slice(0, j).toString("ucs2"); + }; + DBCSDecoder.prototype.end = function() { + var ret = ""; + while (this.prevBytes.length > 0) { + ret += this.defaultCharUnicode; + var bytesArr = this.prevBytes.slice(1); + this.prevBytes = []; + this.nodeIdx = 0; + if (bytesArr.length > 0) + ret += this.write(bytesArr); + } + this.prevBytes = []; + this.nodeIdx = 0; + return ret; + }; + function findIdx(table, val) { + if (table[0] > val) + return -1; + var l = 0, r = table.length; + while (l < r - 1) { + var mid = l + (r - l + 1 >> 1); + if (table[mid] <= val) + l = mid; + else + r = mid; + } + return l; + } + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json +var require_shiftjis = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 128], + ["a1", "\uFF61", 62], + ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], + ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["81fc", "\u25EF"], + ["824f", "\uFF10", 9], + ["8260", "\uFF21", 25], + ["8281", "\uFF41", 25], + ["829f", "\u3041", 82], + ["8340", "\u30A1", 62], + ["8380", "\u30E0", 22], + ["839f", "\u0391", 16, "\u03A3", 6], + ["83bf", "\u03B1", 16, "\u03C3", 6], + ["8440", "\u0410", 5, "\u0401\u0416", 25], + ["8470", "\u0430", 5, "\u0451\u0436", 7], + ["8480", "\u043E", 17], + ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["8740", "\u2460", 19, "\u2160", 9], + ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["877e", "\u337B"], + ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], + ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], + ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], + ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], + ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], + ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], + ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], + ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], + ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], + ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], + ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], + ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], + ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], + ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], + ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], + ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], + ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], + ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], + ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], + ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], + ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], + ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], + ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], + ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], + ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], + ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], + ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], + ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], + ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], + ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], + ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], + ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], + ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], + ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], + ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], + ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["f040", "\uE000", 62], + ["f080", "\uE03F", 124], + ["f140", "\uE0BC", 62], + ["f180", "\uE0FB", 124], + ["f240", "\uE178", 62], + ["f280", "\uE1B7", 124], + ["f340", "\uE234", 62], + ["f380", "\uE273", 124], + ["f440", "\uE2F0", 62], + ["f480", "\uE32F", 124], + ["f540", "\uE3AC", 62], + ["f580", "\uE3EB", 124], + ["f640", "\uE468", 62], + ["f680", "\uE4A7", 124], + ["f740", "\uE524", 62], + ["f780", "\uE563", 124], + ["f840", "\uE5E0", 62], + ["f880", "\uE61F", 124], + ["f940", "\uE69C"], + ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], + ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], + ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], + ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], + ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json +var require_eucjp = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8ea1", "\uFF61", 62], + ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], + ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], + ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], + ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], + ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], + ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], + ["a2fe", "\u25EF"], + ["a3b0", "\uFF10", 9], + ["a3c1", "\uFF21", 25], + ["a3e1", "\uFF41", 25], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], + ["ada1", "\u2460", 19, "\u2160", 9], + ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], + ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], + ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], + ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], + ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], + ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], + ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], + ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], + ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], + ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], + ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], + ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], + ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], + ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], + ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], + ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], + ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], + ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], + ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], + ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], + ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], + ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], + ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], + ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], + ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], + ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], + ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], + ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], + ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], + ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], + ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], + ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], + ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], + ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], + ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], + ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], + ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], + ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], + ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], + ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], + ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], + ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], + ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], + ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], + ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], + ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], + ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], + ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], + ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], + ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], + ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], + ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], + ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], + ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], + ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], + ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], + ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], + ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], + ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], + ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], + ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], + ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], + ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], + ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], + ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], + ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], + ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], + ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], + ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], + ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], + ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], + ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], + ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], + ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], + ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], + ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], + ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], + ["8fa2c2", "\xA1\xA6\xBF"], + ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], + ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], + ["8fa6e7", "\u038C"], + ["8fa6e9", "\u038E\u03AB"], + ["8fa6ec", "\u038F"], + ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], + ["8fa7c2", "\u0402", 10, "\u040E\u040F"], + ["8fa7f2", "\u0452", 10, "\u045E\u045F"], + ["8fa9a1", "\xC6\u0110"], + ["8fa9a4", "\u0126"], + ["8fa9a6", "\u0132"], + ["8fa9a8", "\u0141\u013F"], + ["8fa9ab", "\u014A\xD8\u0152"], + ["8fa9af", "\u0166\xDE"], + ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], + ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], + ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], + ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], + ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], + ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], + ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], + ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], + ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], + ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], + ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], + ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], + ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], + ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], + ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], + ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], + ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], + ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], + ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], + ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], + ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], + ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], + ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], + ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], + ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], + ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], + ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], + ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], + ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], + ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], + ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], + ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], + ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], + ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], + ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], + ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], + ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], + ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], + ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], + ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], + ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], + ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], + ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], + ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], + ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], + ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], + ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], + ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], + ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], + ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], + ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], + ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], + ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], + ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], + ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], + ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], + ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], + ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], + ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], + ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], + ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], + ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], + ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], + ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], + ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], + ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], + ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], + ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json +var require_cp936 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127, "\u20AC"], + ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], + ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], + ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], + ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], + ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], + ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], + ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], + ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], + ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], + ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], + ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], + ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], + ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], + ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], + ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], + ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], + ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], + ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], + ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], + ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], + ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], + ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], + ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], + ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], + ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], + ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], + ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], + ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], + ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], + ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], + ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], + ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], + ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], + ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], + ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], + ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], + ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], + ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], + ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], + ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], + ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], + ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], + ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], + ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], + ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], + ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], + ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], + ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], + ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], + ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], + ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], + ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], + ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], + ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], + ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], + ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], + ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], + ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], + ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], + ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], + ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], + ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], + ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], + ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], + ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], + ["a2a1", "\u2170", 9], + ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], + ["a2e5", "\u3220", 9], + ["a2f1", "\u2160", 11], + ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], + ["a4a1", "\u3041", 82], + ["a5a1", "\u30A1", 85], + ["a6a1", "\u0391", 16, "\u03A3", 6], + ["a6c1", "\u03B1", 16, "\u03C3", 6], + ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], + ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], + ["a6f4", "\uFE33\uFE34"], + ["a7a1", "\u0410", 5, "\u0401\u0416", 25], + ["a7d1", "\u0430", 5, "\u0451\u0436", 25], + ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], + ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], + ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], + ["a8bd", "\u0144\u0148"], + ["a8c0", "\u0261"], + ["a8c5", "\u3105", 36], + ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], + ["a959", "\u2121\u3231"], + ["a95c", "\u2010"], + ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], + ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], + ["a996", "\u3007"], + ["a9a4", "\u2500", 75], + ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], + ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], + ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], + ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], + ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], + ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], + ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], + ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], + ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], + ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], + ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], + ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], + ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], + ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], + ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], + ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], + ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], + ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], + ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], + ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], + ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], + ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], + ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], + ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], + ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], + ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], + ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], + ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], + ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], + ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], + ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], + ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], + ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], + ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], + ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], + ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], + ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], + ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], + ["bd40", "\u7D37", 54, "\u7D6F", 7], + ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], + ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], + ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], + ["bf40", "\u7DFB", 62], + ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], + ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], + ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], + ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], + ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], + ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], + ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], + ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], + ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], + ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], + ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], + ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], + ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], + ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], + ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], + ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], + ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], + ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], + ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], + ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], + ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], + ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], + ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], + ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], + ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], + ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], + ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], + ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], + ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], + ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], + ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], + ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], + ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], + ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], + ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], + ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], + ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], + ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], + ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], + ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], + ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], + ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], + ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], + ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], + ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], + ["d640", "\u8AE4", 34, "\u8B08", 27], + ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], + ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], + ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], + ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], + ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], + ["d940", "\u8CAE", 62], + ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], + ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], + ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], + ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], + ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], + ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], + ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], + ["dd40", "\u8EE5", 62], + ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], + ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], + ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], + ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], + ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], + ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], + ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], + ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], + ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], + ["e240", "\u91E6", 62], + ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], + ["e340", "\u9246", 45, "\u9275", 16], + ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], + ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], + ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], + ["e540", "\u930A", 51, "\u933F", 10], + ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], + ["e640", "\u936C", 34, "\u9390", 27], + ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], + ["e740", "\u93CE", 7, "\u93D7", 54], + ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], + ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], + ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], + ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], + ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], + ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], + ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], + ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], + ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], + ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], + ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], + ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], + ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], + ["ee40", "\u980F", 62], + ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], + ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], + ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], + ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], + ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], + ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], + ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], + ["f240", "\u99FA", 62], + ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], + ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], + ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], + ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], + ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], + ["f540", "\u9B7C", 62], + ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], + ["f640", "\u9BDC", 62], + ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], + ["f740", "\u9C3C", 62], + ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], + ["f840", "\u9CE3", 62], + ["f880", "\u9D22", 32], + ["f940", "\u9D43", 62], + ["f980", "\u9D82", 32], + ["fa40", "\u9DA3", 62], + ["fa80", "\u9DE2", 32], + ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], + ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], + ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], + ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], + ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], + ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], + ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json +var require_gbk_added = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { + module2.exports = [ + ["a140", "\uE4C6", 62], + ["a180", "\uE505", 32], + ["a240", "\uE526", 62], + ["a280", "\uE565", 32], + ["a2ab", "\uE766", 5], + ["a2e3", "\u20AC\uE76D"], + ["a2ef", "\uE76E\uE76F"], + ["a2fd", "\uE770\uE771"], + ["a340", "\uE586", 62], + ["a380", "\uE5C5", 31, "\u3000"], + ["a440", "\uE5E6", 62], + ["a480", "\uE625", 32], + ["a4f4", "\uE772", 10], + ["a540", "\uE646", 62], + ["a580", "\uE685", 32], + ["a5f7", "\uE77D", 7], + ["a640", "\uE6A6", 62], + ["a680", "\uE6E5", 32], + ["a6b9", "\uE785", 7], + ["a6d9", "\uE78D", 6], + ["a6ec", "\uE794\uE795"], + ["a6f3", "\uE796"], + ["a6f6", "\uE797", 8], + ["a740", "\uE706", 62], + ["a780", "\uE745", 32], + ["a7c2", "\uE7A0", 14], + ["a7f2", "\uE7AF", 12], + ["a896", "\uE7BC", 10], + ["a8bc", "\u1E3F"], + ["a8bf", "\u01F9"], + ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], + ["a8ea", "\uE7CD", 20], + ["a958", "\uE7E2"], + ["a95b", "\uE7E3"], + ["a95d", "\uE7E4\uE7E5\uE7E6"], + ["a989", "\u303E\u2FF0", 11], + ["a997", "\uE7F4", 12], + ["a9f0", "\uE801", 14], + ["aaa1", "\uE000", 93], + ["aba1", "\uE05E", 93], + ["aca1", "\uE0BC", 93], + ["ada1", "\uE11A", 93], + ["aea1", "\uE178", 93], + ["afa1", "\uE1D6", 93], + ["d7fa", "\uE810", 4], + ["f8a1", "\uE234", 93], + ["f9a1", "\uE292", 93], + ["faa1", "\uE2F0", 93], + ["fba1", "\uE34E", 93], + ["fca1", "\uE3AC", 93], + ["fda1", "\uE40A", 93], + ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], + ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93], + ["8135f437", "\uE7C7"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +var require_gb18030_ranges = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { + module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json +var require_cp949 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], + ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], + ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], + ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], + ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], + ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], + ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], + ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], + ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], + ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], + ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], + ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], + ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], + ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], + ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], + ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], + ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], + ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], + ["8741", "\uB19E", 9, "\uB1A9", 15], + ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], + ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], + ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], + ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], + ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], + ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], + ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], + ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], + ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], + ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], + ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], + ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], + ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], + ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], + ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], + ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], + ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], + ["8d41", "\uB6C3", 16, "\uB6D5", 8], + ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], + ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], + ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], + ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], + ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], + ["8f41", "\uB885", 7, "\uB88E", 17], + ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], + ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], + ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], + ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], + ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], + ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], + ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], + ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], + ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], + ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], + ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], + ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], + ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], + ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], + ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], + ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], + ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], + ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], + ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], + ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], + ["9641", "\uBEB8", 23, "\uBED2\uBED3"], + ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], + ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], + ["9741", "\uBF83", 16, "\uBF95", 8], + ["9761", "\uBF9E", 17, "\uBFB1", 7], + ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], + ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], + ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], + ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], + ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], + ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], + ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], + ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], + ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], + ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], + ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], + ["9b61", "\uC333", 17, "\uC346", 7], + ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], + ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], + ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], + ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], + ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], + ["9d61", "\uC4C6", 25], + ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], + ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], + ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], + ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], + ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], + ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], + ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], + ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], + ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], + ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], + ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], + ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], + ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], + ["a241", "\uC910\uC912", 5, "\uC919", 18], + ["a261", "\uC92D", 6, "\uC935", 18], + ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], + ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], + ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], + ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], + ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], + ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], + ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], + ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], + ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], + ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], + ["a5b0", "\u2160", 9], + ["a5c1", "\u0391", 16, "\u03A3", 6], + ["a5e1", "\u03B1", 16, "\u03C3", 6], + ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], + ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], + ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], + ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], + ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], + ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], + ["a841", "\uCB6D", 10, "\uCB7A", 14], + ["a861", "\uCB89", 18, "\uCB9D", 6], + ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], + ["a8a6", "\u0132"], + ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], + ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], + ["a941", "\uCBC5", 14, "\uCBD5", 10], + ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], + ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], + ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], + ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], + ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], + ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], + ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], + ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], + ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], + ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], + ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], + ["acd1", "\u0430", 5, "\u0451\u0436", 25], + ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], + ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], + ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], + ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], + ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], + ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], + ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], + ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], + ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], + ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], + ["b061", "\uCEBB", 5, "\uCEC2", 19], + ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], + ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], + ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], + ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], + ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], + ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], + ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], + ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], + ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], + ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], + ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], + ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], + ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], + ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], + ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], + ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], + ["b641", "\uD105", 7, "\uD10E", 17], + ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], + ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], + ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], + ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], + ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], + ["b841", "\uD1D0", 7, "\uD1D9", 17], + ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], + ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], + ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], + ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], + ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], + ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], + ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], + ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], + ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], + ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], + ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], + ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], + ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], + ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], + ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], + ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], + ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], + ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], + ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], + ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], + ["bf41", "\uD49E", 10, "\uD4AA", 14], + ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], + ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], + ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], + ["c061", "\uD51E", 25], + ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], + ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], + ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], + ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], + ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], + ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], + ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], + ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], + ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], + ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], + ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], + ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], + ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], + ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], + ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], + ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], + ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], + ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], + ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], + ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], + ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], + ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], + ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], + ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], + ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], + ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], + ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], + ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], + ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], + ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], + ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], + ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], + ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], + ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], + ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], + ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], + ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], + ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], + ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], + ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], + ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], + ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], + ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], + ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], + ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], + ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], + ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], + ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], + ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], + ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], + ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], + ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], + ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], + ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], + ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], + ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], + ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], + ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], + ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], + ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], + ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], + ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], + ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], + ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], + ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], + ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], + ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], + ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], + ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], + ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], + ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], + ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json +var require_cp950 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { + module2.exports = [ + ["0", "\0", 127], + ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], + ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], + ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], + ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], + ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], + ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], + ["a3e1", "\u20AC"], + ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], + ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], + ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], + ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], + ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], + ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], + ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], + ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], + ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], + ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], + ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], + ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], + ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], + ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], + ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], + ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], + ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], + ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], + ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], + ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], + ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], + ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], + ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], + ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], + ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], + ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], + ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], + ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], + ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], + ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], + ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], + ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], + ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], + ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], + ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], + ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], + ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], + ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], + ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], + ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], + ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], + ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], + ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], + ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], + ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], + ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], + ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], + ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], + ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], + ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], + ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], + ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], + ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], + ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], + ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], + ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], + ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], + ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], + ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], + ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], + ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], + ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], + ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], + ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], + ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], + ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], + ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], + ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], + ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], + ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], + ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], + ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], + ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], + ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], + ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], + ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], + ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], + ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], + ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], + ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], + ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], + ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], + ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], + ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], + ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], + ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], + ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], + ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], + ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], + ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], + ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], + ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], + ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], + ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], + ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], + ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], + ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], + ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], + ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], + ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], + ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], + ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], + ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], + ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], + ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], + ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], + ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], + ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], + ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], + ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], + ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], + ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], + ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], + ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], + ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], + ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], + ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], + ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], + ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], + ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], + ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], + ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], + ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], + ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], + ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], + ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], + ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], + ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], + ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], + ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], + ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], + ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], + ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], + ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], + ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], + ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], + ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], + ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], + ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], + ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], + ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], + ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], + ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], + ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], + ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], + ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], + ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], + ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], + ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], + ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], + ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], + ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], + ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], + ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], + ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], + ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], + ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], + ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], + ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], + ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], + ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], + ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], + ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], + ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], + ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], + ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], + ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json +var require_big5_added = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { + module2.exports = [ + ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], + ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], + ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], + ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], + ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], + ["8940", "\u{2A3A9}\u{21145}"], + ["8943", "\u650A"], + ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], + ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], + ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], + ["89ab", "\u918C\u78B8\u915E\u80BC"], + ["89b0", "\u8D0B\u80F6\u{209E7}"], + ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], + ["89c1", "\u6E9A\u823E\u7519"], + ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], + ["8a40", "\u{27D84}\u5525"], + ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], + ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], + ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], + ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], + ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], + ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], + ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], + ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], + ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], + ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], + ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], + ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], + ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], + ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], + ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], + ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], + ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], + ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], + ["8cc9", "\u9868\u676B\u4276\u573D"], + ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], + ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], + ["8d40", "\u{20B9F}"], + ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], + ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], + ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], + ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], + ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], + ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], + ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], + ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], + ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], + ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], + ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], + ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], + ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], + ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], + ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], + ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], + ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], + ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], + ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], + ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], + ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], + ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], + ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], + ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], + ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], + ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], + ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], + ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], + ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], + ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], + ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], + ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], + ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], + ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], + ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], + ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], + ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], + ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], + ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], + ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], + ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], + ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], + ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], + ["9fae", "\u9159\u9681\u915C"], + ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], + ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], + ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], + ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], + ["9fe7", "\u6BFA\u8818\u7F78"], + ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], + ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], + ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], + ["a055", "\u{2183B}\u{26E05}"], + ["a058", "\u8A7E\u{2251B}"], + ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], + ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], + ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], + ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], + ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], + ["a0ae", "\u77FE"], + ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], + ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], + ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], + ["a3c0", "\u2400", 31, "\u2421"], + ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], + ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], + ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], + ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], + ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], + ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], + ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], + ["f9fe", "\uFFED"], + ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], + ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], + ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], + ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], + ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], + ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], + ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], + ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], + ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], + ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] + ]; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js +var require_dbcs_data = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { + "use strict"; + module2.exports = { + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + "shiftjis": { + type: "_dbcs", + table: function() { + return require_shiftjis(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 }, + encodeSkipVals: [{ from: 60736, to: 63808 }] + }, + "csshiftjis": "shiftjis", + "mskanji": "shiftjis", + "sjis": "shiftjis", + "windows31j": "shiftjis", + "ms31j": "shiftjis", + "xsjis": "shiftjis", + "windows932": "shiftjis", + "ms932": "shiftjis", + "932": "shiftjis", + "cp932": "shiftjis", + "eucjp": { + type: "_dbcs", + table: function() { + return require_eucjp(); + }, + encodeAdd: { "\xA5": 92, "\u203E": 126 } + }, + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + "gb2312": "cp936", + "gb231280": "cp936", + "gb23121980": "cp936", + "csgb2312": "cp936", + "csiso58gb231280": "cp936", + "euccn": "cp936", + // Microsoft's CP936 is a subset and approximation of GBK. + "windows936": "cp936", + "ms936": "cp936", + "936": "cp936", + "cp936": { + type: "_dbcs", + table: function() { + return require_cp936(); + } + }, + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + "gbk": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + } + }, + "xgbk": "gbk", + "isoir58": "gbk", + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + "gb18030": { + type: "_dbcs", + table: function() { + return require_cp936().concat(require_gbk_added()); + }, + gb18030: function() { + return require_gb18030_ranges(); + }, + encodeSkipVals: [128], + encodeAdd: { "\u20AC": 41699 } + }, + "chinese": "gb18030", + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + "windows949": "cp949", + "ms949": "cp949", + "949": "cp949", + "cp949": { + type: "_dbcs", + table: function() { + return require_cp949(); + } + }, + "cseuckr": "cp949", + "csksc56011987": "cp949", + "euckr": "cp949", + "isoir149": "cp949", + "korean": "cp949", + "ksc56011987": "cp949", + "ksc56011989": "cp949", + "ksc5601": "cp949", + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + "windows950": "cp950", + "ms950": "cp950", + "950": "cp950", + "cp950": { + type: "_dbcs", + table: function() { + return require_cp950(); + } + }, + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + "big5": "big5hkscs", + "big5hkscs": { + type: "_dbcs", + table: function() { + return require_cp950().concat(require_big5_added()); + }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 36457, + 36463, + 36478, + 36523, + 36532, + 36557, + 36560, + 36695, + 36713, + 36718, + 36811, + 36862, + 36973, + 36986, + 37060, + 37084, + 37105, + 37311, + 37551, + 37552, + 37553, + 37554, + 37585, + 37959, + 38090, + 38361, + 38652, + 39285, + 39798, + 39800, + 39803, + 39878, + 39902, + 39916, + 39926, + 40002, + 40019, + 40034, + 40040, + 40043, + 40055, + 40124, + 40125, + 40144, + 40279, + 40282, + 40388, + 40431, + 40443, + 40617, + 40687, + 40701, + 40800, + 40907, + 41079, + 41180, + 41183, + 36812, + 37576, + 38468, + 38637, + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 41636, + 41637, + 41639, + 41638, + 41676, + 41678 + ] + }, + "cnbig5": "big5hkscs", + "csbig5": "big5hkscs", + "xxbig5": "big5hkscs" + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/encodings/index.js +var require_encodings = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/encodings/index.js"(exports2, module2) { + "use strict"; + var modules = [ + require_internal(), + require_utf32(), + require_utf16(), + require_utf7(), + require_sbcs_codec(), + require_sbcs_data(), + require_sbcs_data_generated(), + require_dbcs_codec(), + require_dbcs_data() + ]; + for (i = 0; i < modules.length; i++) { + module2 = modules[i]; + for (enc in module2) + if (Object.prototype.hasOwnProperty.call(module2, enc)) + exports2[enc] = module2[enc]; + } + var module2; + var enc; + var i; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/lib/streams.js +var require_streams = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/lib/streams.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + module2.exports = function(stream_module) { + var Transform = stream_module.Transform; + function IconvLiteEncoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.decodeStrings = false; + Transform.call(this, options); + } + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }); + IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { + if (typeof chunk != "string") + return done(new Error("Iconv encoding stream needs strings as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteEncoderStream.prototype.collect = function(cb) { + var chunks = []; + this.on("error", cb); + this.on("data", function(chunk) { + chunks.push(chunk); + }); + this.on("end", function() { + cb(null, Buffer2.concat(chunks)); + }); + return this; + }; + function IconvLiteDecoderStream(conv, options) { + this.conv = conv; + options = options || {}; + options.encoding = this.encoding = "utf8"; + Transform.call(this, options); + } + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }); + IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { + if (!Buffer2.isBuffer(chunk) && !(chunk instanceof Uint8Array)) + return done(new Error("Iconv decoding stream needs buffers as its input.")); + try { + var res = this.conv.write(chunk); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype._flush = function(done) { + try { + var res = this.conv.end(); + if (res && res.length) this.push(res, this.encoding); + done(); + } catch (e) { + done(e); + } + }; + IconvLiteDecoderStream.prototype.collect = function(cb) { + var res = ""; + this.on("error", cb); + this.on("data", function(chunk) { + res += chunk; + }); + this.on("end", function() { + cb(null, res); + }); + return this; + }; + return { + IconvLiteEncoderStream, + IconvLiteDecoderStream + }; + }; + } +}); + +// ../../../../node_modules/encoding/node_modules/iconv-lite/lib/index.js +var require_lib8 = __commonJS({ + "../../../../node_modules/encoding/node_modules/iconv-lite/lib/index.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safer().Buffer; + var bomHandling = require_bom_handling(); + var iconv = module2.exports; + iconv.encodings = null; + iconv.defaultCharUnicode = "\uFFFD"; + iconv.defaultCharSingleByte = "?"; + iconv.encode = function encode(str, encoding, options) { + str = "" + (str || ""); + var encoder = iconv.getEncoder(encoding, options); + var res = encoder.write(str); + var trail = encoder.end(); + return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; + }; + iconv.decode = function decode(buf, encoding, options) { + if (typeof buf === "string") { + if (!iconv.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); + iconv.skipDecodeWarning = true; + } + buf = Buffer2.from("" + (buf || ""), "binary"); + } + var decoder = iconv.getDecoder(encoding, options); + var res = decoder.write(buf); + var trail = decoder.end(); + return trail ? res + trail : res; + }; + iconv.encodingExists = function encodingExists(enc) { + try { + iconv.getCodec(enc); + return true; + } catch (e) { + return false; + } + }; + iconv.toEncoding = iconv.encode; + iconv.fromEncoding = iconv.decode; + iconv._codecDataCache = {}; + iconv.getCodec = function getCodec(encoding) { + if (!iconv.encodings) + iconv.encodings = require_encodings(); + var enc = iconv._canonicalizeEncoding(encoding); + var codecOptions = {}; + while (true) { + var codec = iconv._codecDataCache[enc]; + if (codec) + return codec; + var codecDef = iconv.encodings[enc]; + switch (typeof codecDef) { + case "string": + enc = codecDef; + break; + case "object": + for (var key in codecDef) + codecOptions[key] = codecDef[key]; + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + enc = codecDef.type; + break; + case "function": + if (!codecOptions.encodingName) + codecOptions.encodingName = enc; + codec = new codecDef(codecOptions, iconv); + iconv._codecDataCache[codecOptions.encodingName] = codec; + return codec; + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); + } + } + }; + iconv._canonicalizeEncoding = function(encoding) { + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); + }; + iconv.getEncoder = function getEncoder(encoding, options) { + var codec = iconv.getCodec(encoding), encoder = new codec.encoder(options, codec); + if (codec.bomAware && options && options.addBOM) + encoder = new bomHandling.PrependBOM(encoder, options); + return encoder; + }; + iconv.getDecoder = function getDecoder(encoding, options) { + var codec = iconv.getCodec(encoding), decoder = new codec.decoder(options, codec); + if (codec.bomAware && !(options && options.stripBOM === false)) + decoder = new bomHandling.StripBOM(decoder, options); + return decoder; + }; + iconv.enableStreamingAPI = function enableStreamingAPI(stream_module2) { + if (iconv.supportsStreams) + return; + var streams = require_streams()(stream_module2); + iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream; + iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream; + iconv.encodeStream = function encodeStream(encoding, options) { + return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); + }; + iconv.decodeStream = function decodeStream(encoding, options) { + return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); + }; + iconv.supportsStreams = true; + }; + var stream_module; + try { + stream_module = __require("stream"); + } catch (e) { + } + if (stream_module && stream_module.Transform) { + iconv.enableStreamingAPI(stream_module); + } else { + iconv.encodeStream = iconv.decodeStream = function() { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it."); + }; + } + if (false) { + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); + } + } +}); + +// ../../../../node_modules/encoding/lib/encoding.js +var require_encoding = __commonJS({ + "../../../../node_modules/encoding/lib/encoding.js"(exports2, module2) { + "use strict"; + var iconvLite = require_lib8(); + module2.exports.convert = convert; + function convert(str, to, from) { + from = checkEncoding(from || "UTF-8"); + to = checkEncoding(to || "UTF-8"); + str = str || ""; + var result; + if (from !== "UTF-8" && typeof str === "string") { + str = Buffer.from(str, "binary"); + } + if (from === to) { + if (typeof str === "string") { + result = Buffer.from(str); + } else { + result = str; + } + } else { + try { + result = convertIconvLite(str, to, from); + } catch (E) { + console.error(E); + result = str; + } + } + if (typeof result === "string") { + result = Buffer.from(result, "utf-8"); + } + return result; + } + function convertIconvLite(str, to, from) { + if (to === "UTF-8") { + return iconvLite.decode(str, from); + } else if (from === "UTF-8") { + return iconvLite.encode(str, to); + } else { + return iconvLite.encode(iconvLite.decode(str, from), to); + } + } + function checkEncoding(name) { + return (name || "").toString().trim().replace(/^latin[\-_]?(\d+)$/i, "ISO-8859-$1").replace(/^win(?:dows)?[\-_]?(\d+)$/i, "WINDOWS-$1").replace(/^utf[\-_]?(\d+)$/i, "UTF-$1").replace(/^ks_c_5601\-1987$/i, "CP949").replace(/^us[\-_]?ascii$/i, "ASCII").toUpperCase(); + } + } +}); + +// node_modules/node-fetch/lib/index.js +var require_lib9 = __commonJS({ + "node_modules/node-fetch/lib/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + function _interopDefault(ex) { + return ex && typeof ex === "object" && "default" in ex ? ex["default"] : ex; + } + var Stream = _interopDefault(__require("stream")); + var http2 = _interopDefault(__require("http")); + var Url = _interopDefault(__require("url")); + var whatwgUrl = _interopDefault(require_public_api()); + var https = _interopDefault(__require("https")); + var zlib = _interopDefault(__require("zlib")); + var Readable = Stream.Readable; + var BUFFER = Symbol("buffer"); + var TYPE = Symbol("type"); + var Blob2 = class _Blob { + constructor() { + this[TYPE] = ""; + const blobParts = arguments[0]; + const options = arguments[1]; + const buffers = []; + let size = 0; + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof _Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === "string" ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + this[BUFFER] = Buffer.concat(buffers); + let type = options && options.type !== void 0 && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function() { + }; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return "[object Blob]"; + } + slice() { + const size = this.size; + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === void 0) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === void 0) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new _Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } + }; + Object.defineProperties(Blob2.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } + }); + Object.defineProperty(Blob2.prototype, Symbol.toStringTag, { + value: "Blob", + writable: false, + enumerable: false, + configurable: true + }); + function FetchError(message, type, systemError) { + Error.call(this, message); + this.message = message; + this.type = type; + if (systemError) { + this.code = this.errno = systemError.code; + } + Error.captureStackTrace(this, this.constructor); + } + FetchError.prototype = Object.create(Error.prototype); + FetchError.prototype.constructor = FetchError; + FetchError.prototype.name = "FetchError"; + var convert; + try { + convert = require_encoding().convert; + } catch (e) { + } + var INTERNALS = Symbol("Body internals"); + var PassThrough = Stream.PassThrough; + function Body(body) { + var _this = this; + var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref$size = _ref.size; + let size = _ref$size === void 0 ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === void 0 ? 0 : _ref$timeout; + if (body == null) { + body = null; + } else if (isURLSearchParams(body)) { + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; + else if (Buffer.isBuffer(body)) ; + else if (Object.prototype.toString.call(body) === "[object ArrayBuffer]") { + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; + else { + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + if (body instanceof Stream) { + body.on("error", function(err2) { + const error = err2.name === "AbortError" ? err2 : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err2.message}`, "system", err2); + _this[INTERNALS].error = error; + }); + } + } + Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function(buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get("content-type") || ""; + return consumeBody.call(this).then(function(buf) { + return Object.assign( + // Prevent copying + new Blob2([], { + type: ct.toLowerCase() + }), + { + [BUFFER]: buf + } + ); + }); + }, + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + return consumeBody.call(this).then(function(buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err2) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err2.message}`, "invalid-json")); + } + }); + }, + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function(buffer) { + return buffer.toString(); + }); + }, + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + return consumeBody.call(this).then(function(buffer) { + return convertBody(buffer, _this3.headers); + }); + } + }; + Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } + }); + Body.mixIn = function(proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } + }; + function consumeBody() { + var _this4 = this; + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + this[INTERNALS].disturbed = true; + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + let body = this.body; + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + if (isBlob(body)) { + body = body.stream(); + } + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + let accum = []; + let accumBytes = 0; + let abort = false; + return new Body.Promise(function(resolve, reject) { + let resTimeout; + if (_this4.timeout) { + resTimeout = setTimeout(function() { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, "body-timeout")); + }, _this4.timeout); + } + body.on("error", function(err2) { + if (err2.name === "AbortError") { + abort = true; + reject(err2); + } else { + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err2.message}`, "system", err2)); + } + }); + body.on("data", function(chunk) { + if (abort || chunk === null) { + return; + } + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, "max-size")); + return; + } + accumBytes += chunk.length; + accum.push(chunk); + }); + body.on("end", function() { + if (abort) { + return; + } + clearTimeout(resTimeout); + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err2) { + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err2.message}`, "system", err2)); + } + }); + }); + } + function convertBody(buffer, headers) { + if (typeof convert !== "function") { + throw new Error("The package `encoding` must be installed to use the textConverted() function"); + } + const ct = headers.get("content-type"); + let charset = "utf-8"; + let res, str; + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + str = buffer.slice(0, 1024).toString(); + if (!res && str) { + res = / 0 && arguments[0] !== void 0 ? arguments[0] : void 0; + this[MAP] = /* @__PURE__ */ Object.create(null); + if (init instanceof _Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + return; + } + if (init == null) ; + else if (typeof init === "object") { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== "function") { + throw new TypeError("Header pairs must be iterable"); + } + const pairs = []; + for (const pair of init) { + if (typeof pair !== "object" || typeof pair[Symbol.iterator] !== "function") { + throw new TypeError("Each header pair must be iterable"); + } + pairs.push(Array.from(pair)); + } + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError("Each header pair must be a name/value tuple"); + } + this.append(pair[0], pair[1]); + } + } else { + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError("Provided initializer must be an object"); + } + } + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === void 0) { + return null; + } + return this[MAP][key].join(", "); + } + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : void 0; + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], value = _pairs$i[1]; + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== void 0 ? key : name] = [value]; + } + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== void 0) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== void 0; + } + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== void 0) { + delete this[MAP][key]; + } + } + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, "key"); + } + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, "value"); + } + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, "key+value"); + } + }; + Headers2.prototype.entries = Headers2.prototype[Symbol.iterator]; + Object.defineProperty(Headers2.prototype, Symbol.toStringTag, { + value: "Headers", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Headers2.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } + }); + function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "key+value"; + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === "key" ? function(k) { + return k.toLowerCase(); + } : kind === "value" ? function(k) { + return headers[MAP][k].join(", "); + } : function(k) { + return [k.toLowerCase(), headers[MAP][k].join(", ")]; + }); + } + var INTERNAL = Symbol("internal"); + function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; + } + var HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError("Value of `this` is not a HeadersIterator"); + } + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, kind = _INTERNAL.kind, index = _INTERNAL.index; + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: void 0, + done: true + }; + } + this[INTERNAL].index = index + 1; + return { + value: values[index], + done: false + }; + } + }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: "HeadersIterator", + writable: false, + enumerable: false, + configurable: true + }); + function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + const hostHeaderKey = find(headers[MAP], "Host"); + if (hostHeaderKey !== void 0) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + return obj; + } + function createHeadersLenient(obj) { + const headers = new Headers2(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === void 0) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; + } + var INTERNALS$1 = Symbol("Response internals"); + var STATUS_CODES = http2.STATUS_CODES; + var Response = class _Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + Body.call(this, body, opts); + const status = opts.status || 200; + const headers = new Headers2(opts.headers); + if (body != null && !headers.has("Content-Type")) { + const contentType = extractContentType(body); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + get url() { + return this[INTERNALS$1].url || ""; + } + get status() { + return this[INTERNALS$1].status; + } + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + get redirected() { + return this[INTERNALS$1].counter > 0; + } + get statusText() { + return this[INTERNALS$1].statusText; + } + get headers() { + return this[INTERNALS$1].headers; + } + /** + * Clone this response + * + * @return Response + */ + clone() { + return new _Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } + }; + Body.mixIn(Response.prototype); + Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } + }); + Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: "Response", + writable: false, + enumerable: false, + configurable: true + }); + var INTERNALS$2 = Symbol("Request internals"); + var URL2 = Url.URL || whatwgUrl.URL; + var parse_url = Url.parse; + var format_url = Url.format; + function parseURL(urlStr) { + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL2(urlStr).toString(); + } + return parse_url(urlStr); + } + var streamDestructionSupported = "destroy" in Stream.Readable.prototype; + function isRequest(input) { + return typeof input === "object" && typeof input[INTERNALS$2] === "object"; + } + function isAbortSignal(signal) { + const proto = signal && typeof signal === "object" && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === "AbortSignal"); + } + var Request = class _Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + let parsedURL; + if (!isRequest(input)) { + if (input && input.href) { + parsedURL = parseURL(input.href); + } else { + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + let method = init.method || input.method || "GET"; + method = method.toUpperCase(); + if ((init.body != null || isRequest(input) && input.body !== null) && (method === "GET" || method === "HEAD")) { + throw new TypeError("Request with GET/HEAD method cannot have body"); + } + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + const headers = new Headers2(init.headers || input.headers || {}); + if (inputBody != null && !headers.has("Content-Type")) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append("Content-Type", contentType); + } + } + let signal = isRequest(input) ? input.signal : null; + if ("signal" in init) signal = init.signal; + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError("Expected signal to be an instanceof AbortSignal"); + } + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || "follow", + headers, + parsedURL, + signal + }; + this.follow = init.follow !== void 0 ? init.follow : input.follow !== void 0 ? input.follow : 20; + this.compress = init.compress !== void 0 ? init.compress : input.compress !== void 0 ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + get method() { + return this[INTERNALS$2].method; + } + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + get headers() { + return this[INTERNALS$2].headers; + } + get redirect() { + return this[INTERNALS$2].redirect; + } + get signal() { + return this[INTERNALS$2].signal; + } + /** + * Clone this request + * + * @return Request + */ + clone() { + return new _Request(this); + } + }; + Body.mixIn(Request.prototype); + Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: "Request", + writable: false, + enumerable: false, + configurable: true + }); + Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } + }); + function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers2(request[INTERNALS$2].headers); + if (!headers.has("Accept")) { + headers.set("Accept", "*/*"); + } + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError("Only absolute URLs are supported"); + } + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError("Only HTTP(S) protocols are supported"); + } + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8"); + } + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = "0"; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === "number") { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set("Content-Length", contentLengthValue); + } + if (!headers.has("User-Agent")) { + headers.set("User-Agent", "node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"); + } + if (request.compress && !headers.has("Accept-Encoding")) { + headers.set("Accept-Encoding", "gzip,deflate"); + } + let agent = request.agent; + if (typeof agent === "function") { + agent = agent(parsedURL); + } + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); + } + function AbortError(message) { + Error.call(this, message); + this.type = "aborted"; + this.message = message; + Error.captureStackTrace(this, this.constructor); + } + AbortError.prototype = Object.create(Error.prototype); + AbortError.prototype.constructor = AbortError; + AbortError.prototype.name = "AbortError"; + var URL$1 = Url.URL || whatwgUrl.URL; + var PassThrough$1 = Stream.PassThrough; + var isDomainOrSubdomain = function isDomainOrSubdomain2(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; + return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest); + }; + var isSameProtocol = function isSameProtocol2(destination, original) { + const orig = new URL$1(original).protocol; + const dest = new URL$1(destination).protocol; + return orig === dest; + }; + function fetch2(url, opts) { + if (!fetch2.Promise) { + throw new Error("native promise missing, set fetch.Promise to your favorite alternative"); + } + Body.Promise = fetch2.Promise; + return new fetch2.Promise(function(resolve, reject) { + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + const send = (options.protocol === "https:" ? https : http2).request; + const signal = request.signal; + let response = null; + const abort = function abort2() { + let error = new AbortError("The user aborted a request."); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + destroyStream(request.body, error); + } + if (!response || !response.body) return; + response.body.emit("error", error); + }; + if (signal && signal.aborted) { + abort(); + return; + } + const abortAndFinalize = function abortAndFinalize2() { + abort(); + finalize(); + }; + const req = send(options); + let reqTimeout; + if (signal) { + signal.addEventListener("abort", abortAndFinalize); + } + function finalize() { + req.abort(); + if (signal) signal.removeEventListener("abort", abortAndFinalize); + clearTimeout(reqTimeout); + } + if (request.timeout) { + req.once("socket", function(socket) { + reqTimeout = setTimeout(function() { + reject(new FetchError(`network timeout at: ${request.url}`, "request-timeout")); + finalize(); + }, request.timeout); + }); + } + req.on("error", function(err2) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err2.message}`, "system", err2)); + if (response && response.body) { + destroyStream(response.body, err2); + } + finalize(); + }); + fixResponseChunkedTransferBadEnding(req, function(err2) { + if (signal && signal.aborted) { + return; + } + if (response && response.body) { + destroyStream(response.body, err2); + } + }); + if (parseInt(process.version.substring(1)) < 14) { + req.on("socket", function(s) { + s.addListener("close", function(hadError) { + const hasDataListener = s.listenerCount("data") > 0; + if (response && hasDataListener && !hadError && !(signal && signal.aborted)) { + const err2 = new Error("Premature close"); + err2.code = "ERR_STREAM_PREMATURE_CLOSE"; + response.body.emit("error", err2); + } + }); + }); + } + req.on("response", function(res) { + clearTimeout(reqTimeout); + const headers = createHeadersLenient(res.headers); + if (fetch2.isRedirect(res.statusCode)) { + const location2 = headers.get("Location"); + let locationURL = null; + try { + locationURL = location2 === null ? null : new URL$1(location2, request.url).toString(); + } catch (err2) { + if (request.redirect !== "manual") { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location2}`, "invalid-redirect")); + finalize(); + return; + } + } + switch (request.redirect) { + case "error": + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, "no-redirect")); + finalize(); + return; + case "manual": + if (locationURL !== null) { + try { + headers.set("Location", locationURL); + } catch (err2) { + reject(err2); + } + } + break; + case "follow": + if (locationURL === null) { + break; + } + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, "max-redirect")); + finalize(); + return; + } + const requestOpts = { + headers: new Headers2(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) { + for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) { + requestOpts.headers.delete(name); + } + } + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError("Cannot follow redirect with body being a readable stream", "unsupported-redirect")); + finalize(); + return; + } + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === "POST") { + requestOpts.method = "GET"; + requestOpts.body = void 0; + requestOpts.headers.delete("content-length"); + } + resolve(fetch2(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + res.once("end", function() { + if (signal) signal.removeEventListener("abort", abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + const codings = headers.get("Content-Encoding"); + if (!request.compress || request.method === "HEAD" || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + if (codings == "gzip" || codings == "x-gzip") { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + if (codings == "deflate" || codings == "x-deflate") { + const raw = res.pipe(new PassThrough$1()); + raw.once("data", function(chunk) { + if ((chunk[0] & 15) === 8) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + raw.on("end", function() { + if (!response) { + response = new Response(body, response_options); + resolve(response); + } + }); + return; + } + if (codings == "br" && typeof zlib.createBrotliDecompress === "function") { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + response = new Response(body, response_options); + resolve(response); + }); + writeToStream(req, request); + }); + } + function fixResponseChunkedTransferBadEnding(request, errorCallback) { + let socket; + request.on("socket", function(s) { + socket = s; + }); + request.on("response", function(response) { + const headers = response.headers; + if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) { + response.once("close", function(hadError) { + const hasDataListener = socket && socket.listenerCount("data") > 0; + if (hasDataListener && !hadError) { + const err2 = new Error("Premature close"); + err2.code = "ERR_STREAM_PREMATURE_CLOSE"; + errorCallback(err2); + } + }); + } + }); + } + function destroyStream(stream, err2) { + if (stream.destroy) { + stream.destroy(err2); + } else { + stream.emit("error", err2); + stream.end(); + } + } + fetch2.isRedirect = function(code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; + }; + fetch2.Promise = global.Promise; + module2.exports = exports2 = fetch2; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.default = exports2; + exports2.Headers = Headers2; + exports2.Request = Request; + exports2.Response = Response; + exports2.FetchError = FetchError; + exports2.AbortError = AbortError; + } +}); + +// node_modules/cross-fetch/dist/node-ponyfill.js +var require_node_ponyfill = __commonJS({ + "node_modules/cross-fetch/dist/node-ponyfill.js"(exports2, module2) { + var nodeFetch = require_lib9(); + var realFetch = nodeFetch.default || nodeFetch; + var fetch2 = function(url, options) { + if (/^\/\//.test(url)) { + url = "https:" + url; + } + return realFetch.call(this, url, options); + }; + fetch2.ponyfill = true; + module2.exports = exports2 = fetch2; + exports2.fetch = fetch2; + exports2.Headers = nodeFetch.Headers; + exports2.Request = nodeFetch.Request; + exports2.Response = nodeFetch.Response; + exports2.default = fetch2; + } +}); + +// node_modules/@trezor/transport/lib/utils/bridgeApiCall.js +var require_bridgeApiCall = __commonJS({ + "node_modules/@trezor/transport/lib/utils/bridgeApiCall.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.bridgeApiCall = bridgeApiCall; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var cross_fetch_1 = tslib_1.__importDefault(require_node_ponyfill()); + var errors_1 = require_errors6(); + var result_1 = require_result(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var applyBridgeApiCallHeaders_1 = require_applyBridgeApiCallHeaders(); + function contentType(body) { + if (typeof body === "string") { + if (body === "") { + return "text/plain"; + } + return "application/octet-stream"; + } + return "application/json"; + } + function wrapBody(body) { + if (typeof body === "string") { + return body; + } + return JSON.stringify(body); + } + function parseResult(text) { + try { + return JSON.parse(text); + } catch { + return text; + } + } + async function bridgeApiCall(options) { + const fetchOptions = { + method: options.method, + body: wrapBody(options.body), + credentials: "same-origin", + headers: {}, + signal: options.signal, + timeout: options.timeout + }; + fetchOptions.headers = (0, applyBridgeApiCallHeaders_1.applyBridgeApiCallHeaders)({ + headers: fetchOptions.headers, + contentType: contentType(options.body == null ? "" : options.body), + skipContentTypeHeader: options.skipContentTypeHeader + }); + let res; + try { + res = await (0, cross_fetch_1.default)(options.url, fetchOptions); + } catch (err2) { + return (0, result_1.error)({ + error: ERRORS.HTTP_ERROR, + message: err2.message + }); + } + let resParsed; + try { + resParsed = await res.text(); + resParsed = parseResult(resParsed); + } catch (err2) { + return (0, result_1.error)({ + error: ERRORS.HTTP_ERROR, + message: err2.message + }); + } + const getErrorStr = (err2) => { + if (typeof err2 === "string") { + return err2; + } + if ("message" in err2) { + return err2.message; + } + if ("error" in err2) { + return err2.error; + } + return err2.toString(); + }; + const BRIDGE_ERROR_DEVICE_CLOSED = "closed device"; + const BRIDGE_MALFORMED_PROTOBUF = "malformed protobuf"; + const BRIDGE_MALFORMED_WIRE_FORMAT = "malformed wire format"; + if (!res.ok) { + const errStr = getErrorStr(resParsed); + if (errStr === BRIDGE_ERROR_DEVICE_CLOSED) { + return (0, result_1.error)({ + error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE + }); + } + if (errStr === BRIDGE_MALFORMED_PROTOBUF || errStr === errors_1.PROTOCOL_MALFORMED) { + return (0, result_1.error)({ + error: errors_1.PROTOCOL_MALFORMED + }); + } + if (errStr === BRIDGE_MALFORMED_WIRE_FORMAT) { + return (0, result_1.error)({ + error: errors_1.PROTOCOL_MALFORMED + }); + } + if (typeof resParsed !== "string" && "error" in resParsed && typeof resParsed.error === "string") { + return (0, result_1.error)({ + error: resParsed.error, + message: "message" in resParsed && typeof resParsed.message === "string" ? resParsed.message : void 0 + }); + } + return (0, result_1.unknownError)(new Error(errStr), Object.values(ERRORS)); + } + return (0, result_1.success)(resParsed); + } + } +}); + +// node_modules/@trezor/transport/lib/utils/bridgeProtocolMessage.js +var require_bridgeProtocolMessage = __commonJS({ + "node_modules/@trezor/transport/lib/utils/bridgeProtocolMessage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateProtocolMessage = validateProtocolMessage; + exports2.createProtocolMessage = createProtocolMessage; + function validateProtocolMessage(body, withData = true) { + const isHex2 = (s) => /^[0-9A-Fa-f]+$/g.test(s); + const isValidProtocol = (s) => s === "v1" || s === "v2" || s === "bridge"; + if (typeof body === "string") { + if (withData && isHex2(body) || !withData && !body.length) { + return { + data: body + }; + } + } + let json; + if (typeof body === "object") { + json = body; + } else { + try { + json = JSON.parse(body); + } catch { + } + } + if (!json) { + throw new Error("Invalid BridgeProtocolMessage body"); + } + if (typeof json.protocol !== "string" || !isValidProtocol(json.protocol)) { + throw new Error("Invalid BridgeProtocolMessage protocol"); + } + if (withData && (typeof json.data !== "string" || !isHex2(json.data))) { + throw new Error("Invalid BridgeProtocolMessage data"); + } + return { + protocol: json.protocol, + data: json.data, + thpState: json.thpState + }; + } + function createProtocolMessage(body, protocol, thpState) { + let data; + if (Buffer.isBuffer(body)) { + data = body.toString("hex"); + } + if (typeof body === "string") { + data = body; + } + if (typeof data !== "string") { + data = ""; + } + if (!protocol) { + return data; + } + return JSON.stringify({ + protocol: typeof protocol === "string" ? protocol : protocol.name, + data, + thpState + }); + } + } +}); + +// node_modules/@trezor/transport/lib/utils/bridgeApiResult.js +var require_bridgeApiResult = __commonJS({ + "node_modules/@trezor/transport/lib/utils/bridgeApiResult.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.info = info; + exports2.version = version; + exports2.devices = devices; + exports2.acquire = acquire; + exports2.call = call; + exports2.post = post; + exports2.empty = empty; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bridgeProtocolMessage_1 = require_bridgeProtocolMessage(); + var result_1 = require_result(); + var ERRORS = tslib_1.__importStar(require_errors5()); + function isString(payload) { + return typeof payload === "string"; + } + function info(res) { + if (isString(res)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + const { + version: version2 + } = res; + if (typeof version2 !== "string") { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + const configured = !!res.configured; + const protocolMessages = !!res.protocolMessages; + return (0, result_1.success)({ + version: version2, + configured, + protocolMessages + }); + } + function version(res) { + if (!isString(res)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + return (0, result_1.success)(res.trim()); + } + function devices(res) { + if (isString(res)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + if (!(res instanceof Array)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + if (res.some((o) => typeof o !== "object" || !o || typeof o.path !== "string" || typeof o.session !== "string" && o.session !== null)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + return (0, result_1.success)(res.map((o) => ({ + path: o.path, + session: o.session, + sessionOwner: o.sessionOwner, + product: o.product, + type: o.type, + vendor: o.vendor, + debug: o.debug, + debugSession: o.debugSession, + id: o.id, + apiType: o.apiType || "usb" + }))); + } + function acquire(res) { + if (isString(res)) { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + const { + session + } = res; + if (typeof session !== "string") { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + return (0, result_1.success)(session); + } + function call(res) { + try { + return (0, result_1.success)((0, bridgeProtocolMessage_1.validateProtocolMessage)(res, true)); + } catch { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + } + function post(res) { + try { + return (0, result_1.success)((0, bridgeProtocolMessage_1.validateProtocolMessage)(res, false)); + } catch { + return (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }); + } + } + function empty(res) { + return res != null && JSON.stringify(res) === "{}" ? (0, result_1.error)({ + error: ERRORS.WRONG_RESULT_TYPE + }) : (0, result_1.success)(void 0); + } + } +}); + +// node_modules/@trezor/transport/lib/transports/bridge.js +var require_bridge = __commonJS({ + "node_modules/@trezor/transport/lib/transports/bridge.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BridgeTransport = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var protocol_1 = require_lib6(); + var abstract_1 = require_abstract2(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var ping_1 = require_ping(); + var receive_1 = require_receive2(); + var bridgeApiCall_1 = require_bridgeApiCall(); + var bridgeApiResult = tslib_1.__importStar(require_bridgeApiResult()); + var bridgeProtocolMessage_1 = require_bridgeProtocolMessage(); + var receive_2 = require_receive(); + var send_1 = require_send(); + var DEFAULT_URL = "http://127.0.0.1"; + var DEFAULT_PORT = 21325; + var BridgeTransport = class extends abstract_1.AbstractTransport { + useProtocolMessages = false; + url; + name = "BridgeTransport"; + constructor(params) { + const { + port = DEFAULT_PORT, + ...rest + } = params || {}; + super(rest); + this.url = `${DEFAULT_URL}:${port}`; + } + ping(_ = {}) { + return (0, ping_1.ping)(`${this.url}/`).catch(() => false); + } + init({ + signal + } = {}) { + return this.scheduleAction(async (signal2) => { + const response = await this.post("/", { + signal: signal2 + }); + if (!response.success) { + return response; + } + this.version = response.payload.version; + if (!this.version.startsWith("3")) { + this.isOutdated = true; + } + this.useProtocolMessages = !!response.payload.protocolMessages; + this.stopped = false; + return this.success(void 0); + }, { + signal + }); + } + listen() { + if (this.listening) { + return this.error({ + error: ERRORS.ALREADY_LISTENING + }); + } + this.listening = true; + this.listenLoop(); + return this.success(void 0); + } + async listenLoop() { + while (!this.stopped) { + const response = await this.post("/listen", { + body: this.descriptors, + signal: this.abortController.signal + }); + if (!response.success) { + this.emit(constants_1.TRANSPORT.ERROR, response.error); + } else { + this.handleDescriptorsChange(response.payload); + } + } + } + enumerate({ + signal + } = {}) { + return this.scheduleAction((signal2) => this.post("/enumerate", { + signal: signal2 + }), { + signal + }); + } + acquire({ + input, + signal + }) { + return this.scheduleAction(async (signal2) => { + const response = await this.post("/acquire", { + params: `${input.path}/${input.previous ?? "null"}`, + signal: signal2, + body: { + sessionOwner: this.id + } + }); + return response; + }, { + signal + }, [ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.SESSION_WRONG_PREVIOUS]); + } + release({ + path: _, + session, + signal + }) { + return this.scheduleAction(async (signal2) => { + const response = await this.post("/release", { + params: session, + signal: signal2 + }); + return response.success ? this.success(null) : response; + }, { + signal + }); + } + releaseSync(session) { + if (typeof navigator !== "undefined" && "sendBeacon" in navigator) { + navigator.sendBeacon(`${this.url}/release/${session}?beacon=1`); + } else { + this.post("/release", { + params: session + }); + } + } + releaseDevice() { + return Promise.resolve(this.success(void 0)); + } + getProtocol(customProtocol) { + if (!this.useProtocolMessages) { + return protocol_1.bridge; + } + return customProtocol || protocol_1.v1; + } + getRequestBody(body, protocol, thpState) { + return (0, bridgeProtocolMessage_1.createProtocolMessage)(body, this.useProtocolMessages ? protocol : void 0, thpState?.serialize()); + } + call({ + session, + name, + data, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const protocol = this.getProtocol(customProtocol); + const bytes = (0, send_1.buildMessage)({ + messages: this.messages, + name, + data, + protocol, + thpState + }); + const prevNonce = thpState?.sendNonce; + const response = await this.post(`/call`, { + params: session, + body: this.getRequestBody(bytes, protocol, thpState), + signal: signal2 + }); + if (!response.success) { + return response; + } + const respBytes = Buffer.from(response.payload.data, "hex"); + if (protocol.name === "v2") { + if (prevNonce === thpState?.sendNonce) { + thpState?.sync("send", name); + } + const message = (0, receive_1.parseThpMessage)({ + decoded: protocol.decode(respBytes), + messages: this.messages, + thpState + }); + thpState?.sync("recv", message.type); + return this.success(message); + } + return (0, receive_2.receiveAndParse)(this.messages, () => Promise.resolve(this.success(respBytes)), protocol); + }, { + signal, + timeout + }); + } + send({ + session, + name, + data, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const protocol = this.getProtocol(customProtocol); + const bytes = (0, send_1.buildMessage)({ + messages: this.messages, + name, + data, + protocol, + thpState + }); + const response = await this.post("/post", { + params: session, + body: this.getRequestBody(bytes, protocol, thpState), + signal: signal2 + }); + if (!response.success) { + return response; + } + if (protocol.name === "v2") { + thpState?.sync("send", name); + } + return this.success(void 0); + }, { + signal, + timeout + }); + } + receive({ + session, + protocol: customProtocol, + thpState, + signal, + timeout + }) { + return this.scheduleAction(async (signal2) => { + const protocol = this.getProtocol(customProtocol); + const response = await this.post("/read", { + params: session, + body: this.getRequestBody(Buffer.alloc(0), protocol, thpState), + signal: signal2 + }); + if (!response.success) { + return response; + } + const respBytes = Buffer.from(response.payload.data, "hex"); + if (protocol.name === "v2") { + const message = (0, receive_1.parseThpMessage)({ + decoded: protocol.decode(respBytes), + messages: this.messages, + thpState + }); + thpState?.sync("recv", message.type); + return this.success(message); + } + return (0, receive_2.receiveAndParse)(this.messages, () => Promise.resolve(this.success(respBytes)), protocol); + }, { + signal, + timeout + }); + } + async post(endpoint, options) { + const response = await (0, bridgeApiCall_1.bridgeApiCall)({ + ...options, + method: "POST", + url: `${this.url + endpoint}${options?.params ? `/${options.params}` : ""}`, + skipContentTypeHeader: true + }); + if (!response.success) { + if (response.error === ERRORS.UNEXPECTED_ERROR) { + return this.unknownError(response.error); + } + if (response.error === ERRORS.HTTP_ERROR) { + return this.error({ + error: response.error + }); + } + switch (endpoint) { + case "/": + return this.unknownError(response.error); + case "/acquire": + return this.unknownError(response.error, [ERRORS.SESSION_WRONG_PREVIOUS, ERRORS.DEVICE_NOT_FOUND, ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.LIBUSB_ERROR_ACCESS]); + case "/call": + case "/read": + case "/post": + return this.unknownError(response.error, [ERRORS.SESSION_NOT_FOUND, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.OTHER_CALL_IN_PROGRESS, ERRORS.INTERFACE_DATA_TRANSFER, protocol_1.PROTOCOL_MALFORMED]); + case "/enumerate": + case "/listen": + return this.unknownError(response.error); + case "/release": + return this.unknownError(response.error, [ERRORS.SESSION_NOT_FOUND, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION]); + default: + return this.error({ + error: ERRORS.WRONG_RESULT_TYPE, + message: "just for type safety, should never happen" + }); + } + } + switch (endpoint) { + case "/": + return bridgeApiResult.info(response.payload); + case "/acquire": + return bridgeApiResult.acquire(response.payload); + case "/read": + case "/call": + return bridgeApiResult.call(response.payload); + case "/post": + return bridgeApiResult.post(response.payload); + case "/enumerate": + case "/listen": + return bridgeApiResult.devices(response.payload); + case "/release": + return bridgeApiResult.empty(response.payload); + default: + return this.error({ + error: ERRORS.WRONG_RESULT_TYPE, + message: "just for type safety, should never happen" + }); + } + } + }; + exports2.BridgeTransport = BridgeTransport; + } +}); + +// node_modules/@trezor/transport/lib/utils/resultEmpty.js +var require_resultEmpty = __commonJS({ + "node_modules/@trezor/transport/lib/utils/resultEmpty.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.emptySync = exports2.empty = void 0; + var errors_1 = require_errors5(); + var result_1 = require_result(); + var empty = () => Promise.resolve((0, result_1.error)({ + error: errors_1.WRONG_ENVIRONMENT + })); + exports2.empty = empty; + var emptySync = () => (0, result_1.error)({ + error: errors_1.WRONG_ENVIRONMENT + }); + exports2.emptySync = emptySync; + } +}); + +// node_modules/@trezor/transport/lib/transports/webusb.js +var require_webusb = __commonJS({ + "node_modules/@trezor/transport/lib/transports/webusb.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WebUsbTransport = void 0; + var abstract_1 = require_abstract2(); + var errors_1 = require_errors5(); + var resultEmpty_1 = require_resultEmpty(); + var WebUsbTransport = class extends abstract_1.AbstractTransport { + name = "WebUsbTransport"; + constructor(params) { + super(params); + console.error(errors_1.WRONG_ENVIRONMENT); + } + init = resultEmpty_1.empty; + acquire = resultEmpty_1.empty; + enumerate = resultEmpty_1.empty; + call = resultEmpty_1.empty; + receive = resultEmpty_1.empty; + send = resultEmpty_1.empty; + release = resultEmpty_1.empty; + stop = resultEmpty_1.empty; + releaseDevice = resultEmpty_1.empty; + releaseSync = resultEmpty_1.emptySync; + listen = resultEmpty_1.emptySync; + }; + exports2.WebUsbTransport = WebUsbTransport; + } +}); + +// node_modules/node-gyp-build/node-gyp-build.js +var require_node_gyp_build = __commonJS({ + "node_modules/node-gyp-build/node-gyp-build.js"(exports2, module2) { + var fs = __require("fs"); + var path2 = __require("path"); + var os = __require("os"); + var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require; + var vars = process.config && process.config.variables || {}; + var prebuildsOnly = !!process.env.PREBUILDS_ONLY; + var abi = process.versions.modules; + var runtime = isElectron() ? "electron" : isNwjs() ? "node-webkit" : "node"; + var arch = process.env.npm_config_arch || os.arch(); + var platform = process.env.npm_config_platform || os.platform(); + var libc = process.env.LIBC || (isAlpine(platform) ? "musl" : "glibc"); + var armv = process.env.ARM_VERSION || (arch === "arm64" ? "8" : vars.arm_version) || ""; + var uv = (process.versions.uv || "").split(".")[0]; + module2.exports = load; + function load(dir) { + return runtimeRequire(load.resolve(dir)); + } + load.resolve = load.path = function(dir) { + dir = path2.resolve(dir || "."); + try { + var name = runtimeRequire(path2.join(dir, "package.json")).name.toUpperCase().replace(/-/g, "_"); + if (process.env[name + "_PREBUILD"]) dir = process.env[name + "_PREBUILD"]; + } catch (err2) { + } + if (!prebuildsOnly) { + var release = getFirst(path2.join(dir, "build/Release"), matchBuild); + if (release) return release; + var debug = getFirst(path2.join(dir, "build/Debug"), matchBuild); + if (debug) return debug; + } + var prebuild = resolve(dir); + if (prebuild) return prebuild; + var nearby = resolve(path2.dirname(process.execPath)); + if (nearby) return nearby; + var target = [ + "platform=" + platform, + "arch=" + arch, + "runtime=" + runtime, + "abi=" + abi, + "uv=" + uv, + armv ? "armv=" + armv : "", + "libc=" + libc, + "node=" + process.versions.node, + process.versions.electron ? "electron=" + process.versions.electron : "", + typeof __webpack_require__ === "function" ? "webpack=true" : "" + // eslint-disable-line + ].filter(Boolean).join(" "); + throw new Error("No native build was found for " + target + "\n loaded from: " + dir + "\n"); + function resolve(dir2) { + var tuples = readdirSync(path2.join(dir2, "prebuilds")).map(parseTuple); + var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]; + if (!tuple) return; + var prebuilds = path2.join(dir2, "prebuilds", tuple.name); + var parsed = readdirSync(prebuilds).map(parseTags); + var candidates = parsed.filter(matchTags(runtime, abi)); + var winner = candidates.sort(compareTags(runtime))[0]; + if (winner) return path2.join(prebuilds, winner.file); + } + }; + function readdirSync(dir) { + try { + return fs.readdirSync(dir); + } catch (err2) { + return []; + } + } + function getFirst(dir, filter) { + var files = readdirSync(dir).filter(filter); + return files[0] && path2.join(dir, files[0]); + } + function matchBuild(name) { + return /\.node$/.test(name); + } + function parseTuple(name) { + var arr = name.split("-"); + if (arr.length !== 2) return; + var platform2 = arr[0]; + var architectures = arr[1].split("+"); + if (!platform2) return; + if (!architectures.length) return; + if (!architectures.every(Boolean)) return; + return { name, platform: platform2, architectures }; + } + function matchTuple(platform2, arch2) { + return function(tuple) { + if (tuple == null) return false; + if (tuple.platform !== platform2) return false; + return tuple.architectures.includes(arch2); + }; + } + function compareTuples(a, b) { + return a.architectures.length - b.architectures.length; + } + function parseTags(file) { + var arr = file.split("."); + var extension = arr.pop(); + var tags = { file, specificity: 0 }; + if (extension !== "node") return; + for (var i = 0; i < arr.length; i++) { + var tag = arr[i]; + if (tag === "node" || tag === "electron" || tag === "node-webkit") { + tags.runtime = tag; + } else if (tag === "napi") { + tags.napi = true; + } else if (tag.slice(0, 3) === "abi") { + tags.abi = tag.slice(3); + } else if (tag.slice(0, 2) === "uv") { + tags.uv = tag.slice(2); + } else if (tag.slice(0, 4) === "armv") { + tags.armv = tag.slice(4); + } else if (tag === "glibc" || tag === "musl") { + tags.libc = tag; + } else { + continue; + } + tags.specificity++; + } + return tags; + } + function matchTags(runtime2, abi2) { + return function(tags) { + if (tags == null) return false; + if (tags.runtime && tags.runtime !== runtime2 && !runtimeAgnostic(tags)) return false; + if (tags.abi && tags.abi !== abi2 && !tags.napi) return false; + if (tags.uv && tags.uv !== uv) return false; + if (tags.armv && tags.armv !== armv) return false; + if (tags.libc && tags.libc !== libc) return false; + return true; + }; + } + function runtimeAgnostic(tags) { + return tags.runtime === "node" && tags.napi; + } + function compareTags(runtime2) { + return function(a, b) { + if (a.runtime !== b.runtime) { + return a.runtime === runtime2 ? -1 : 1; + } else if (a.abi !== b.abi) { + return a.abi ? -1 : 1; + } else if (a.specificity !== b.specificity) { + return a.specificity > b.specificity ? -1 : 1; + } else { + return 0; + } + }; + } + function isNwjs() { + return !!(process.versions && process.versions.nw); + } + function isElectron() { + if (process.versions && process.versions.electron) return true; + if (process.env.ELECTRON_RUN_AS_NODE) return true; + return typeof window !== "undefined" && window.process && window.process.type === "renderer"; + } + function isAlpine(platform2) { + return platform2 === "linux" && fs.existsSync("/etc/alpine-release"); + } + load.parseTags = parseTags; + load.matchTags = matchTags; + load.compareTags = compareTags; + load.parseTuple = parseTuple; + load.matchTuple = matchTuple; + load.compareTuples = compareTuples; + } +}); + +// node_modules/node-gyp-build/index.js +var require_node_gyp_build2 = __commonJS({ + "node_modules/node-gyp-build/index.js"(exports2, module2) { + var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require; + if (typeof runtimeRequire.addon === "function") { + module2.exports = runtimeRequire.addon.bind(runtimeRequire); + } else { + module2.exports = require_node_gyp_build(); + } + } +}); + +// node_modules/usb/dist/usb/bindings.js +var require_bindings = __commonJS({ + "node_modules/usb/dist/usb/bindings.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var path_1 = __require("path"); + var usb = require_node_gyp_build2()(process.env.NODE_USB_PATH || (0, path_1.join)(__dirname, "..", "..")); + module2.exports = usb; + } +}); + +// node_modules/usb/dist/usb/endpoint.js +var require_endpoint = __commonJS({ + "node_modules/usb/dist/usb/endpoint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OutEndpoint = exports2.InEndpoint = exports2.Endpoint = void 0; + var events_1 = __require("events"); + var bindings_1 = require_bindings(); + var util_1 = __require("util"); + var isBuffer = (obj) => obj && obj instanceof Buffer; + var Endpoint = class extends events_1.EventEmitter { + constructor(device, descriptor) { + super(); + this.device = device; + this.timeout = 0; + this.descriptor = descriptor; + this.address = descriptor.bEndpointAddress; + this.transferType = descriptor.bmAttributes & 3; + } + /** Clear the halt/stall condition for this endpoint. */ + clearHalt(callback) { + return this.device.__clearHalt(this.address, callback); + } + /** + * Create a new `Transfer` object for this endpoint. + * + * The passed callback will be called when the transfer is submitted and finishes. Its arguments are the error (if any), the submitted buffer, and the amount of data actually written (for + * OUT transfers) or read (for IN transfers). + * + * @param timeout Timeout for the transfer (0 means unlimited). + * @param callback Transfer completion callback. + */ + makeTransfer(timeout, callback) { + return new bindings_1.Transfer(this.device, this.address, this.transferType, timeout, callback); + } + }; + exports2.Endpoint = Endpoint; + var InEndpoint = class extends Endpoint { + constructor(device, descriptor) { + super(device, descriptor); + this.direction = "in"; + this.pollTransfers = []; + this.pollTransferSize = 0; + this.pollPending = 0; + this.pollActive = false; + this.transferAsync = (0, util_1.promisify)(this.transfer).bind(this); + } + /** + * Perform a transfer to read data from the endpoint. + * + * If length is greater than maxPacketSize, libusb will automatically split the transfer in multiple packets, and you will receive one callback with all data once all packets are complete. + * + * `this` in the callback is the InEndpoint object. + * + * The device must be open to use this method. + * @param length + * @param callback + */ + transfer(length, callback) { + const buffer = Buffer.alloc(length); + const cb = (error, _buffer, actualLength) => { + callback.call(this, error, buffer.slice(0, actualLength)); + }; + try { + this.makeTransfer(this.timeout, cb).submit(buffer); + } catch (e) { + process.nextTick(() => callback.call(this, e)); + } + return this; + } + /** + * Start polling the endpoint. + * + * The library will keep `nTransfers` transfers of size `transferSize` pending in the kernel at all times to ensure continuous data flow. + * This is handled by the libusb event thread, so it continues even if the Node v8 thread is busy. The `data` and `error` events are emitted as transfers complete. + * + * The device must be open to use this method. + * @param nTransfers + * @param transferSize + * @param callback + */ + startPoll(nTransfers, transferSize, callback) { + const transferDone = (error, transfer, buffer, actualLength) => { + if (!error) { + this.emit("data", buffer.slice(0, actualLength)); + } else if (error.errno !== bindings_1.LIBUSB_TRANSFER_CANCELLED) { + if (this.pollActive) { + this.emit("error", error); + this.stopPoll(); + } + } + if (this.pollActive) { + startTransfer(transfer); + } else { + this.pollPending--; + if (this.pollPending === 0) { + this.pollTransfers = []; + this.pollActive = false; + this.emit("end"); + if (callback) { + const cancelled = (error === null || error === void 0 ? void 0 : error.errno) === bindings_1.LIBUSB_TRANSFER_CANCELLED; + callback(cancelled ? void 0 : error, buffer, actualLength, cancelled); + } + } + } + }; + const startTransfer = (transfer) => { + try { + transfer.submit(Buffer.alloc(this.pollTransferSize), (error, buffer, actualLength) => { + transferDone(error, transfer, buffer, actualLength); + }); + } catch (e) { + this.emit("error", e); + this.stopPoll(); + } + }; + this.pollTransfers = this.startPollTransfers(nTransfers, transferSize, function(error, buffer, actualLength) { + transferDone(error, this, buffer, actualLength); + }); + this.pollTransfers.forEach(startTransfer); + this.pollPending = this.pollTransfers.length; + return this.pollTransfers; + } + startPollTransfers(nTransfers = 3, transferSize = this.descriptor.wMaxPacketSize, callback) { + if (this.pollActive) { + throw new Error("Polling already active"); + } + this.pollTransferSize = transferSize; + this.pollActive = true; + this.pollPending = 0; + const transfers = []; + for (let i = 0; i < nTransfers; i++) { + const transfer = this.makeTransfer(0, callback); + transfers[i] = transfer; + } + return transfers; + } + /** + * Stop polling. + * + * Further data may still be received. The `end` event is emitted and the callback is called once all transfers have completed or canceled. + * + * The device must be open to use this method. + * @param callback + */ + stopPoll(callback) { + if (!this.pollActive) { + throw new Error("Polling is not active."); + } + for (let i = 0; i < this.pollTransfers.length; i++) { + try { + this.pollTransfers[i].cancel(); + } catch (error) { + this.emit("error", error); + } + } + this.pollActive = false; + if (callback) + this.once("end", callback); + } + }; + exports2.InEndpoint = InEndpoint; + var OutEndpoint = class extends Endpoint { + constructor(device, descriptor) { + super(device, descriptor); + this.direction = "out"; + this.transferAsync = (0, util_1.promisify)(this.transfer).bind(this); + } + /** + * Perform a transfer to write `data` to the endpoint. + * + * If length is greater than maxPacketSize, libusb will automatically split the transfer in multiple packets, and you will receive one callback once all packets are complete. + * + * `this` in the callback is the OutEndpoint object. + * + * The device must be open to use this method. + * @param buffer + * @param callback + */ + transfer(buffer, callback) { + if (!buffer) { + buffer = Buffer.alloc(0); + } else if (!isBuffer(buffer)) { + buffer = Buffer.from(buffer); + } + const cb = (error, _buffer, actual) => { + if (callback) { + callback.call(this, error, actual || 0); + } + }; + try { + this.makeTransfer(this.timeout, cb).submit(buffer); + } catch (e) { + process.nextTick(() => cb(e)); + } + return this; + } + transferWithZLP(buffer, callback) { + if (buffer.length % this.descriptor.wMaxPacketSize === 0) { + this.transfer(buffer); + this.transfer(Buffer.alloc(0), callback); + } else { + this.transfer(buffer, callback); + } + } + }; + exports2.OutEndpoint = OutEndpoint; + } +}); + +// node_modules/usb/dist/usb/interface.js +var require_interface = __commonJS({ + "node_modules/usb/dist/usb/interface.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Interface = void 0; + var bindings_1 = require_bindings(); + var endpoint_1 = require_endpoint(); + var util_1 = __require("util"); + var Interface = class { + constructor(device, id) { + this.device = device; + this.id = id; + this.altSetting = 0; + this.refresh(); + this.releaseAsync = (0, util_1.promisify)(this.release).bind(this); + this.setAltSettingAsync = (0, util_1.promisify)(this.setAltSetting).bind(this); + } + refresh() { + if (!this.device.configDescriptor) { + return; + } + this.descriptor = this.device.configDescriptor.interfaces[this.id][this.altSetting]; + this.interfaceNumber = this.descriptor.bInterfaceNumber; + this.endpoints = []; + const len = this.descriptor.endpoints.length; + for (let i = 0; i < len; i++) { + const desc = this.descriptor.endpoints[i]; + const c = desc.bEndpointAddress & bindings_1.LIBUSB_ENDPOINT_IN ? endpoint_1.InEndpoint : endpoint_1.OutEndpoint; + this.endpoints[i] = new c(this.device, desc); + } + } + /** + * Claims the interface. This method must be called before using any endpoints of this interface. + * + * The device must be open to use this method. + */ + claim() { + this.device.__claimInterface(this.id); + } + release(closeEndpointsOrCallback, callback) { + let closeEndpoints = false; + if (typeof closeEndpointsOrCallback === "boolean") { + closeEndpoints = closeEndpointsOrCallback; + } else { + callback = closeEndpointsOrCallback; + } + const next = () => { + this.device.__releaseInterface(this.id, (error) => { + if (!error) { + this.altSetting = 0; + this.refresh(); + } + if (callback) { + callback.call(this, error); + } + }); + }; + if (!closeEndpoints || this.endpoints.length === 0) { + next(); + } else { + let n = this.endpoints.length; + this.endpoints.forEach((ep) => { + if (ep.direction === "in" && ep.pollActive) { + ep.once("end", () => { + if (--n === 0) { + next(); + } + }); + ep.stopPoll(); + } else { + if (--n === 0) { + next(); + } + } + }); + } + } + /** + * Returns `false` if a kernel driver is not active; `true` if active. + * + * The device must be open to use this method. + */ + isKernelDriverActive() { + return this.device.__isKernelDriverActive(this.id); + } + /** + * Detaches the kernel driver from the interface. + * + * The device must be open to use this method. + */ + detachKernelDriver() { + return this.device.__detachKernelDriver(this.id); + } + /** + * Re-attaches the kernel driver for the interface. + * + * The device must be open to use this method. + */ + attachKernelDriver() { + return this.device.__attachKernelDriver(this.id); + } + /** + * Sets the alternate setting. It updates the `interface.endpoints` array to reflect the endpoints found in the alternate setting. + * + * The device must be open to use this method. + * @param altSetting + * @param callback + */ + setAltSetting(altSetting, callback) { + this.device.__setInterface(this.id, altSetting, (error) => { + if (!error) { + this.altSetting = altSetting; + this.refresh(); + } + if (callback) { + callback.call(this, error); + } + }); + } + /** + * Return the InEndpoint or OutEndpoint with the specified address. + * + * The device must be open to use this method. + * @param addr + */ + endpoint(addr) { + return this.endpoints.find((item) => item.address === addr); + } + }; + exports2.Interface = Interface; + } +}); + +// node_modules/usb/dist/usb/capability.js +var require_capability = __commonJS({ + "node_modules/usb/dist/usb/capability.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Capability = void 0; + var Capability = class { + constructor(device, id) { + this.device = device; + this.id = id; + if (!device._bosDescriptor) { + throw new Error("bosDescriptor not found"); + } + this.descriptor = device._bosDescriptor.capabilities[this.id]; + this.type = this.descriptor.bDevCapabilityType; + this.data = this.descriptor.dev_capability_data; + } + }; + exports2.Capability = Capability; + } +}); + +// node_modules/usb/dist/usb/device.js +var require_device = __commonJS({ + "node_modules/usb/dist/usb/device.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ExtendedDevice = void 0; + var usb = require_bindings(); + var interface_1 = require_interface(); + var capability_1 = require_capability(); + var isBuffer = (obj) => !!obj && obj instanceof Uint8Array; + var DEFAULT_TIMEOUT = 1e3; + var ExtendedDevice = class { + constructor() { + this._timeout = DEFAULT_TIMEOUT; + } + /** + * Timeout in milliseconds to use for control transfers. + */ + get timeout() { + return this._timeout || DEFAULT_TIMEOUT; + } + set timeout(value) { + this._timeout = value; + } + /** + * Object with properties for the fields of the active configuration descriptor. + */ + get configDescriptor() { + try { + return this.__getConfigDescriptor(); + } catch (e) { + const errno = e.errno; + if (errno === usb.LIBUSB_ERROR_NOT_FOUND || errno === usb.LIBUSB_ERROR_NO_DEVICE) { + return void 0; + } + throw e; + } + } + /** + * Contains all config descriptors of the device (same structure as .configDescriptor above) + */ + get allConfigDescriptors() { + try { + return this.__getAllConfigDescriptors(); + } catch (e) { + const errno = e.errno; + if (errno === usb.LIBUSB_ERROR_NOT_FOUND || errno === usb.LIBUSB_ERROR_NO_DEVICE) { + return []; + } + throw e; + } + } + /** + * Contains the parent of the device, such as a hub. If there is no parent this property is set to `null`. + */ + get parent() { + return this.__getParent(); + } + /** + * Open the device. + * @param defaultConfig + */ + open(defaultConfig = true) { + this.__open(); + this.interfaces = []; + if (defaultConfig === false) { + return; + } + const len = this.configDescriptor ? this.configDescriptor.interfaces.length : 0; + for (let i = 0; i < len; i++) { + this.interfaces[i] = new interface_1.Interface(this, i); + } + } + /** + * Close the device. + * + * The device must be open to use this method. + */ + close() { + this.__close(); + this.interfaces = void 0; + } + /** + * Set the device configuration to something other than the default (0). To use this, first call `.open(false)` (which tells it not to auto configure), + * then before claiming an interface, call this method. + * + * The device must be open to use this method. + * @param desired + * @param callback + */ + setConfiguration(desired, callback) { + this.__setConfiguration(desired, (error) => { + if (!error) { + this.interfaces = []; + const len = this.configDescriptor ? this.configDescriptor.interfaces.length : 0; + for (let i = 0; i < len; i++) { + this.interfaces[i] = new interface_1.Interface(this, i); + } + } + if (callback) { + callback.call(this, error); + } + }); + } + /** + * Enable/disable libusb's automatic kernel driver detachment + * When this is enabled libusb will automatically detach the kernel driver on an interface when claiming the interface, and attach it when releasing the interface + * + * The device must be open to use this method. + */ + setAutoDetachKernelDriver(enable) { + return this.__setAutoDetachKernelDriver(enable ? 1 : 0); + } + /** + * Perform a control transfer with `libusb_control_transfer`. + * + * Parameter `data_or_length` can be an integer length for an IN transfer, or a `Buffer` for an OUT transfer. The type must match the direction specified in the MSB of bmRequestType. + * + * The `data` parameter of the callback is actual transferred for OUT transfers, or will be passed a Buffer for IN transfers. + * + * The device must be open to use this method. + * @param bmRequestType + * @param bRequest + * @param wValue + * @param wIndex + * @param data_or_length + * @param callback + */ + controlTransfer(bmRequestType, bRequest, wValue, wIndex, data_or_length, callback) { + const isIn = !!(bmRequestType & usb.LIBUSB_ENDPOINT_IN); + const wLength = isIn ? data_or_length : data_or_length.length; + if (isIn) { + if (wLength < 0) { + throw new TypeError("Expected size number for IN transfer (based on bmRequestType)"); + } + } else { + if (!isBuffer(data_or_length)) { + throw new TypeError("Expected buffer for OUT transfer (based on bmRequestType)"); + } + } + const buf = Buffer.alloc(wLength + usb.LIBUSB_CONTROL_SETUP_SIZE); + buf.writeUInt8(bmRequestType, 0); + buf.writeUInt8(bRequest, 1); + buf.writeUInt16LE(wValue, 2); + buf.writeUInt16LE(wIndex, 4); + buf.writeUInt16LE(wLength, 6); + if (!isIn) { + buf.set(data_or_length, usb.LIBUSB_CONTROL_SETUP_SIZE); + } + const transfer = new usb.Transfer(this, 0, usb.LIBUSB_TRANSFER_TYPE_CONTROL, this.timeout, (error, buf2, actual) => { + if (callback) { + if (isIn) { + callback.call(this, error, buf2.slice(usb.LIBUSB_CONTROL_SETUP_SIZE, usb.LIBUSB_CONTROL_SETUP_SIZE + actual)); + } else { + callback.call(this, error, actual); + } + } + }); + try { + transfer.submit(buf); + } catch (e) { + if (callback) { + process.nextTick(() => callback.call(this, e, void 0)); + } + } + return this; + } + /** + * Return the interface with the specified interface number. + * + * The device must be open to use this method. + * @param addr + */ + interface(addr) { + if (!this.interfaces) { + throw new Error("Device must be open before searching for interfaces"); + } + addr = addr || 0; + for (let i = 0; i < this.interfaces.length; i++) { + if (this.interfaces[i].interfaceNumber === addr) { + return this.interfaces[i]; + } + } + throw new Error(`Interface not found for address: ${addr}`); + } + /** + * Perform a control transfer to retrieve a string descriptor + * + * The device must be open to use this method. + * @param desc_index + * @param callback + */ + getStringDescriptor(desc_index, callback) { + if (desc_index === 0) { + callback(); + return; + } + const langid = 1033; + const length = 255; + this.controlTransfer(usb.LIBUSB_ENDPOINT_IN, usb.LIBUSB_REQUEST_GET_DESCRIPTOR, usb.LIBUSB_DT_STRING << 8 | desc_index, langid, length, (error, buffer) => { + if (error) { + return callback(error); + } + callback(void 0, isBuffer(buffer) ? buffer.toString("utf16le", 2) : void 0); + }); + } + /** + * Perform a control transfer to retrieve an object with properties for the fields of the Binary Object Store descriptor. + * + * The device must be open to use this method. + * @param callback + */ + getBosDescriptor(callback) { + if (this._bosDescriptor) { + return callback(void 0, this._bosDescriptor); + } + if (this.deviceDescriptor.bcdUSB < 513) { + return callback(void 0, void 0); + } + this.controlTransfer(usb.LIBUSB_ENDPOINT_IN, usb.LIBUSB_REQUEST_GET_DESCRIPTOR, usb.LIBUSB_DT_BOS << 8, 0, usb.LIBUSB_DT_BOS_SIZE, (error, buffer) => { + if (error) { + if (error.errno === usb.LIBUSB_TRANSFER_STALL) + return callback(void 0, void 0); + return callback(error, void 0); + } + if (!isBuffer(buffer)) { + return callback(void 0, void 0); + } + const totalLength = buffer.readUInt16LE(2); + this.controlTransfer(usb.LIBUSB_ENDPOINT_IN, usb.LIBUSB_REQUEST_GET_DESCRIPTOR, usb.LIBUSB_DT_BOS << 8, 0, totalLength, (error2, buffer2) => { + if (error2) { + if (error2.errno === usb.LIBUSB_TRANSFER_STALL) + return callback(void 0, void 0); + return callback(error2, void 0); + } + if (!isBuffer(buffer2)) { + return callback(void 0, void 0); + } + const descriptor = { + bLength: buffer2.readUInt8(0), + bDescriptorType: buffer2.readUInt8(1), + wTotalLength: buffer2.readUInt16LE(2), + bNumDeviceCaps: buffer2.readUInt8(4), + capabilities: [] + }; + let i = usb.LIBUSB_DT_BOS_SIZE; + while (i < descriptor.wTotalLength) { + const capability = { + bLength: buffer2.readUInt8(i + 0), + bDescriptorType: buffer2.readUInt8(i + 1), + bDevCapabilityType: buffer2.readUInt8(i + 2), + dev_capability_data: buffer2.slice(i + 3, i + buffer2.readUInt8(i + 0)) + }; + descriptor.capabilities.push(capability); + i += capability.bLength; + } + this._bosDescriptor = descriptor; + callback(void 0, this._bosDescriptor); + }); + }); + } + /** + * Retrieve a list of Capability objects for the Binary Object Store capabilities of the device. + * + * The device must be open to use this method. + * @param callback + */ + getCapabilities(callback) { + const capabilities = []; + this.getBosDescriptor((error, descriptor) => { + if (error) + return callback(error, void 0); + const len = descriptor ? descriptor.capabilities.length : 0; + for (let i = 0; i < len; i++) { + capabilities.push(new capability_1.Capability(this, i)); + } + callback(void 0, capabilities); + }); + } + }; + exports2.ExtendedDevice = ExtendedDevice; + } +}); + +// node_modules/usb/dist/usb/index.js +var require_usb2 = __commonJS({ + "node_modules/usb/dist/usb/index.js"(exports2, module2) { + "use strict"; + var events_1 = __require("events"); + var device_1 = require_device(); + var usb = require_bindings(); + if (usb.INIT_ERROR) { + console.warn("Failed to initialize libusb."); + } + Object.setPrototypeOf(usb, events_1.EventEmitter.prototype); + Object.defineProperty(usb, "pollHotplug", { + value: false, + writable: true + }); + Object.defineProperty(usb, "pollHotplugDelay", { + value: 500, + writable: true + }); + if (usb.Device) { + Object.getOwnPropertyNames(device_1.ExtendedDevice.prototype).forEach((name) => { + Object.defineProperty(usb.Device.prototype, name, Object.getOwnPropertyDescriptor(device_1.ExtendedDevice.prototype, name) || /* @__PURE__ */ Object.create(null)); + }); + } + var hotPlugDevices = /* @__PURE__ */ new Set(); + var emitHotplugEvents = () => { + const devices = new Set(usb.getDeviceList()); + for (const device of devices) { + if (!hotPlugDevices.has(device)) { + usb.emit("attach", device); + } + } + for (const device of hotPlugDevices) { + if (!devices.has(device)) { + usb.emit("detach", device); + } + } + hotPlugDevices = devices; + }; + var pollingHotplug = false; + var pollHotplug = (start = false) => { + if (start) { + pollingHotplug = true; + } else if (!pollingHotplug) { + return; + } else { + emitHotplugEvents(); + } + setTimeout(() => pollHotplug(), usb.pollHotplugDelay); + }; + var devicesChanged = () => setTimeout(() => emitHotplugEvents(), usb.pollHotplugDelay); + var hotplugSupported = 0; + var startHotplug = () => { + hotplugSupported = usb.pollHotplug ? 0 : usb._supportedHotplugEvents(); + if (hotplugSupported !== 1) { + hotPlugDevices = new Set(usb.getDeviceList()); + } + if (hotplugSupported) { + usb._enableHotplugEvents(); + if (hotplugSupported === 2) { + usb.on("attachIds", devicesChanged); + usb.on("detachIds", devicesChanged); + } + } else { + pollHotplug(true); + } + }; + var stopHotplug = () => { + if (hotplugSupported) { + usb._disableHotplugEvents(); + if (hotplugSupported === 2) { + usb.off("attachIds", devicesChanged); + usb.off("detachIds", devicesChanged); + } + } else { + pollingHotplug = false; + } + }; + usb.on("newListener", (event) => { + if (event !== "attach" && event !== "detach") { + return; + } + const listenerCount = usb.listenerCount("attach") + usb.listenerCount("detach"); + if (listenerCount === 0) { + startHotplug(); + } + }); + usb.on("removeListener", (event) => { + if (event !== "attach" && event !== "detach") { + return; + } + const listenerCount = usb.listenerCount("attach") + usb.listenerCount("detach"); + if (listenerCount === 0) { + stopHotplug(); + } + }); + module2.exports = usb; + } +}); + +// node_modules/usb/dist/webusb/webusb-device.js +var require_webusb_device = __commonJS({ + "node_modules/usb/dist/webusb/webusb-device.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WebUSBDevice = void 0; + var usb = require_usb2(); + var util_1 = __require("util"); + var os_1 = __require("os"); + var LIBUSB_TRANSFER_TYPE_MASK = 3; + var ENDPOINT_NUMBER_MASK = 127; + var CLEAR_FEATURE = 1; + var ENDPOINT_HALT = 0; + var WebUSBDevice = class _WebUSBDevice { + static async createInstance(device, autoDetachKernelDriver = true) { + const instance = new _WebUSBDevice(device, autoDetachKernelDriver); + await instance.initialize(); + return instance; + } + constructor(device, autoDetachKernelDriver) { + this.device = device; + this.autoDetachKernelDriver = autoDetachKernelDriver; + this.manufacturerName = null; + this.productName = null; + this.serialNumber = null; + this.configurations = []; + const usbVersion = this.decodeVersion(device.deviceDescriptor.bcdUSB); + this.usbVersionMajor = usbVersion.major; + this.usbVersionMinor = usbVersion.minor; + this.usbVersionSubminor = usbVersion.sub; + this.deviceClass = device.deviceDescriptor.bDeviceClass; + this.deviceSubclass = device.deviceDescriptor.bDeviceSubClass; + this.deviceProtocol = device.deviceDescriptor.bDeviceProtocol; + this.vendorId = device.deviceDescriptor.idVendor; + this.productId = device.deviceDescriptor.idProduct; + const deviceVersion = this.decodeVersion(device.deviceDescriptor.bcdDevice); + this.deviceVersionMajor = deviceVersion.major; + this.deviceVersionMinor = deviceVersion.minor; + this.deviceVersionSubminor = deviceVersion.sub; + this.controlTransferAsync = (0, util_1.promisify)(this.device.controlTransfer).bind(this.device); + this.setConfigurationAsync = (0, util_1.promisify)(this.device.setConfiguration).bind(this.device); + this.resetAsync = (0, util_1.promisify)(this.device.reset).bind(this.device); + this.getStringDescriptorAsync = (0, util_1.promisify)(this.device.getStringDescriptor).bind(this.device); + } + get configuration() { + if (!this.device.configDescriptor) { + return null; + } + const currentConfiguration = this.device.configDescriptor.bConfigurationValue; + return this.configurations.find((configuration) => configuration.configurationValue === currentConfiguration) || null; + } + get opened() { + return !!this.device.interfaces; + } + async open() { + try { + if (this.opened) { + return; + } + this.device.open(); + if ((0, os_1.platform)() !== "win32") { + this.device.setAutoDetachKernelDriver(this.autoDetachKernelDriver); + } + } catch (error) { + throw new Error(`open error: ${error}`); + } + } + async close() { + try { + if (!this.opened) { + return; + } + try { + if (this.configuration) { + for (const iface of this.configuration.interfaces) { + await this._releaseInterface(iface.interfaceNumber); + this.configuration.interfaces[this.configuration.interfaces.indexOf(iface)] = { + interfaceNumber: iface.interfaceNumber, + alternate: iface.alternate, + alternates: iface.alternates, + claimed: false + }; + } + } + } catch (_error) { + } + this.device.close(); + } catch (error) { + throw new Error(`close error: ${error}`); + } + } + async selectConfiguration(configurationValue) { + if (!this.opened || !this.device.configDescriptor) { + throw new Error("selectConfiguration error: invalid state"); + } + if (this.device.configDescriptor.bConfigurationValue === configurationValue) { + return; + } + const config2 = this.configurations.find((configuration) => configuration.configurationValue === configurationValue); + if (!config2) { + throw new Error("selectConfiguration error: configuration not found"); + } + try { + await this.setConfigurationAsync(configurationValue); + } catch (error) { + throw new Error(`selectConfiguration error: ${error}`); + } + } + async claimInterface(interfaceNumber) { + if (!this.opened) { + throw new Error("claimInterface error: invalid state"); + } + if (!this.configuration) { + throw new Error("claimInterface error: interface not found"); + } + const iface = this.configuration.interfaces.find((usbInterface) => usbInterface.interfaceNumber === interfaceNumber); + if (!iface) { + throw new Error("claimInterface error: interface not found"); + } + if (iface.claimed) { + return; + } + try { + this.device.interface(interfaceNumber).claim(); + this.configuration.interfaces[this.configuration.interfaces.indexOf(iface)] = { + interfaceNumber, + alternate: iface.alternate, + alternates: iface.alternates, + claimed: true + }; + } catch (error) { + throw new Error(`claimInterface error: ${error}`); + } + } + async releaseInterface(interfaceNumber) { + await this._releaseInterface(interfaceNumber); + if (this.configuration) { + const iface = this.configuration.interfaces.find((usbInterface) => usbInterface.interfaceNumber === interfaceNumber); + if (iface) { + this.configuration.interfaces[this.configuration.interfaces.indexOf(iface)] = { + interfaceNumber, + alternate: iface.alternate, + alternates: iface.alternates, + claimed: false + }; + } + } + } + async selectAlternateInterface(interfaceNumber, alternateSetting) { + if (!this.opened) { + throw new Error("selectAlternateInterface error: invalid state"); + } + if (!this.configuration) { + throw new Error("selectAlternateInterface error: interface not found"); + } + const iface = this.configuration.interfaces.find((usbInterface) => usbInterface.interfaceNumber === interfaceNumber); + if (!iface) { + throw new Error("selectAlternateInterface error: interface not found"); + } + if (!iface.claimed) { + throw new Error("selectAlternateInterface error: invalid state"); + } + try { + const iface2 = this.device.interface(interfaceNumber); + await iface2.setAltSettingAsync(alternateSetting); + } catch (error) { + throw new Error(`selectAlternateInterface error: ${error}`); + } + } + async controlTransferIn(setup, length) { + try { + this.checkDeviceOpen(); + const type = this.controlTransferParamsToType(setup, usb.LIBUSB_ENDPOINT_IN); + const result = await this.controlTransferAsync(type, setup.request, setup.value, setup.index, length); + return { + data: result ? new DataView(new Uint8Array(result).buffer) : void 0, + status: "ok" + }; + } catch (error) { + if (error.errno === usb.LIBUSB_TRANSFER_STALL) { + return { + status: "stall" + }; + } + if (error.errno === usb.LIBUSB_TRANSFER_OVERFLOW) { + return { + status: "babble" + }; + } + throw new Error(`controlTransferIn error: ${error}`); + } + } + async controlTransferOut(setup, data) { + try { + this.checkDeviceOpen(); + const type = this.controlTransferParamsToType(setup, usb.LIBUSB_ENDPOINT_OUT); + const buffer = data ? Buffer.from(data) : Buffer.alloc(0); + const bytesWritten = await this.controlTransferAsync(type, setup.request, setup.value, setup.index, buffer); + return { + bytesWritten, + status: "ok" + }; + } catch (error) { + if (error.errno === usb.LIBUSB_TRANSFER_STALL) { + return { + bytesWritten: 0, + status: "stall" + }; + } + throw new Error(`controlTransferOut error: ${error}`); + } + } + async clearHalt(direction, endpointNumber) { + try { + const wIndex = endpointNumber | (direction === "in" ? usb.LIBUSB_ENDPOINT_IN : usb.LIBUSB_ENDPOINT_OUT); + await this.controlTransferAsync(usb.LIBUSB_RECIPIENT_ENDPOINT, CLEAR_FEATURE, ENDPOINT_HALT, wIndex, Buffer.from(new Uint8Array())); + } catch (error) { + throw new Error(`clearHalt error: ${error}`); + } + } + async transferIn(endpointNumber, length) { + try { + this.checkDeviceOpen(); + const endpoint = this.getEndpoint(endpointNumber | usb.LIBUSB_ENDPOINT_IN); + const result = await endpoint.transferAsync(length); + return { + data: result ? new DataView(new Uint8Array(result).buffer) : void 0, + status: "ok" + }; + } catch (error) { + if (error.errno === usb.LIBUSB_TRANSFER_STALL) { + return { + status: "stall" + }; + } + if (error.errno === usb.LIBUSB_TRANSFER_OVERFLOW) { + return { + status: "babble" + }; + } + throw new Error(`transferIn error: ${error}`); + } + } + async transferOut(endpointNumber, data) { + try { + this.checkDeviceOpen(); + const endpoint = this.getEndpoint(endpointNumber | usb.LIBUSB_ENDPOINT_OUT); + const buffer = Buffer.from(data); + const bytesWritten = await endpoint.transferAsync(buffer); + return { + bytesWritten, + status: "ok" + }; + } catch (error) { + if (error.errno === usb.LIBUSB_TRANSFER_STALL) { + return { + bytesWritten: 0, + status: "stall" + }; + } + throw new Error(`transferOut error: ${error}`); + } + } + async reset() { + try { + await this.resetAsync(); + } catch (error) { + throw new Error(`reset error: ${error}`); + } + } + async isochronousTransferIn(_endpointNumber, _packetLengths) { + throw new Error("isochronousTransferIn error: method not implemented"); + } + async isochronousTransferOut(_endpointNumber, _data, _packetLengths) { + throw new Error("isochronousTransferOut error: method not implemented"); + } + async forget() { + throw new Error("forget error: method not implemented"); + } + async initialize() { + try { + if (!this.opened) { + this.device.open(); + if (this.deviceClass === 255 && (0, os_1.platform)() === "darwin") { + await this.setConfigurationAsync(1); + } + } + this.manufacturerName = await this.getStringDescriptor(this.device.deviceDescriptor.iManufacturer); + this.productName = await this.getStringDescriptor(this.device.deviceDescriptor.iProduct); + this.serialNumber = await this.getStringDescriptor(this.device.deviceDescriptor.iSerialNumber); + this.configurations = await this.getConfigurations(); + } catch (error) { + throw new Error(`initialize error: ${error}`); + } finally { + if (this.opened) { + this.device.close(); + } + } + } + decodeVersion(version) { + const hex = `0000${version.toString(16)}`.slice(-4); + return { + major: parseInt(hex.substr(0, 2), void 0), + minor: parseInt(hex.substr(2, 1), void 0), + sub: parseInt(hex.substr(3, 1), void 0) + }; + } + async getStringDescriptor(index) { + try { + const buffer = await this.getStringDescriptorAsync(index); + return buffer ? buffer.toString() : ""; + } catch (error) { + return ""; + } + } + async getConfigurations() { + const configs = []; + for (const config2 of this.device.allConfigDescriptors) { + const interfaces = []; + for (const iface of config2.interfaces) { + const alternates = []; + for (const alternate2 of iface) { + const endpoints = []; + for (const endpoint of alternate2.endpoints) { + endpoints.push({ + endpointNumber: endpoint.bEndpointAddress & ENDPOINT_NUMBER_MASK, + direction: endpoint.bEndpointAddress & usb.LIBUSB_ENDPOINT_IN ? "in" : "out", + type: (endpoint.bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) === usb.LIBUSB_TRANSFER_TYPE_BULK ? "bulk" : (endpoint.bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) === usb.LIBUSB_TRANSFER_TYPE_INTERRUPT ? "interrupt" : "isochronous", + packetSize: endpoint.wMaxPacketSize + }); + } + alternates.push({ + alternateSetting: alternate2.bAlternateSetting, + interfaceClass: alternate2.bInterfaceClass, + interfaceSubclass: alternate2.bInterfaceSubClass, + interfaceProtocol: alternate2.bInterfaceProtocol, + interfaceName: await this.getStringDescriptor(alternate2.iInterface), + endpoints + }); + } + const interfaceNumber = iface[0].bInterfaceNumber; + const alternate = alternates.find((alt) => alt.alternateSetting === this.device.interface(interfaceNumber).altSetting); + if (alternate) { + interfaces.push({ + interfaceNumber, + alternate, + alternates, + claimed: false + }); + } + } + configs.push({ + configurationValue: config2.bConfigurationValue, + configurationName: await this.getStringDescriptor(config2.iConfiguration), + interfaces + }); + } + return configs; + } + getEndpoint(address) { + if (!this.device.interfaces) { + return void 0; + } + for (const iface of this.device.interfaces) { + const endpoint = iface.endpoint(address); + if (endpoint) { + return endpoint; + } + } + return void 0; + } + controlTransferParamsToType(setup, direction) { + const recipient = setup.recipient === "device" ? usb.LIBUSB_RECIPIENT_DEVICE : setup.recipient === "interface" ? usb.LIBUSB_RECIPIENT_INTERFACE : setup.recipient === "endpoint" ? usb.LIBUSB_RECIPIENT_ENDPOINT : usb.LIBUSB_RECIPIENT_OTHER; + const requestType = setup.requestType === "standard" ? usb.LIBUSB_REQUEST_TYPE_STANDARD : setup.requestType === "class" ? usb.LIBUSB_REQUEST_TYPE_CLASS : usb.LIBUSB_REQUEST_TYPE_VENDOR; + return recipient | requestType | direction; + } + async _releaseInterface(interfaceNumber) { + if (!this.opened) { + throw new Error("releaseInterface error: invalid state"); + } + if (!this.configuration) { + throw new Error("releaseInterface error: interface not found"); + } + const iface = this.configuration.interfaces.find((usbInterface) => usbInterface.interfaceNumber === interfaceNumber); + if (!iface) { + throw new Error("releaseInterface error: interface not found"); + } + if (!iface.claimed) { + return; + } + try { + const iface2 = this.device.interface(interfaceNumber); + await iface2.releaseAsync(); + } catch (error) { + throw new Error(`releaseInterface error: ${error}`); + } + } + checkDeviceOpen() { + if (!this.opened) { + throw new Error("The device must be opened first"); + } + } + }; + exports2.WebUSBDevice = WebUSBDevice; + } +}); + +// node_modules/usb/dist/webusb/index.js +var require_webusb2 = __commonJS({ + "node_modules/usb/dist/webusb/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.WebUSB = exports2.getWebUsb = void 0; + var usb = require_usb2(); + var events_1 = __require("events"); + var webusb_device_1 = require_webusb_device(); + var getWebUsb = () => { + if (navigator && navigator.usb) { + return navigator.usb; + } + return new WebUSB(); + }; + exports2.getWebUsb = getWebUsb; + var NamedError = class extends Error { + constructor(message, name) { + super(message); + this.name = name; + } + }; + var WebUSB = class { + constructor(options = {}) { + this.options = options; + this.emitter = new events_1.EventEmitter(); + this.knownDevices = /* @__PURE__ */ new Map(); + this.authorisedDevices = /* @__PURE__ */ new Set(); + const deviceConnectCallback = async (device) => { + const webDevice = await this.getWebDevice(device); + if (webDevice && this.isAuthorisedDevice(webDevice)) { + const event = { + type: "connect", + device: webDevice + }; + this.emitter.emit("connect", event); + } + }; + const deviceDisconnectCallback = async (device) => { + if (this.knownDevices.has(device)) { + const webDevice = this.knownDevices.get(device); + if (webDevice && this.isAuthorisedDevice(webDevice)) { + const event = { + type: "disconnect", + device: webDevice + }; + this.emitter.emit("disconnect", event); + } + } + }; + this.emitter.on("newListener", (event) => { + const listenerCount = this.emitter.listenerCount(event); + if (listenerCount !== 0) { + return; + } + if (event === "connect") { + usb.addListener("attach", deviceConnectCallback); + } else if (event === "disconnect") { + usb.addListener("detach", deviceDisconnectCallback); + } + }); + this.emitter.on("removeListener", (event) => { + const listenerCount = this.emitter.listenerCount(event); + if (listenerCount !== 0) { + return; + } + if (event === "connect") { + usb.removeListener("attach", deviceConnectCallback); + } else if (event === "disconnect") { + usb.removeListener("detach", deviceDisconnectCallback); + } + }); + } + set onconnect(fn) { + if (this._onconnect) { + this.removeEventListener("connect", this._onconnect); + this._onconnect = void 0; + } + if (fn) { + this._onconnect = fn; + this.addEventListener("connect", this._onconnect); + } + } + set ondisconnect(fn) { + if (this._ondisconnect) { + this.removeEventListener("disconnect", this._ondisconnect); + this._ondisconnect = void 0; + } + if (fn) { + this._ondisconnect = fn; + this.addEventListener("disconnect", this._ondisconnect); + } + } + addEventListener(type, listener) { + this.emitter.addListener(type, listener); + } + removeEventListener(type, callback) { + this.emitter.removeListener(type, callback); + } + dispatchEvent(_event) { + return false; + } + /** + * Requests a single Web USB device + * @param options The options to use when scanning + * @returns Promise containing the selected device + */ + async requestDevice(options) { + if (!options) { + throw new TypeError("requestDevice error: 1 argument required, but only 0 present"); + } + if (options.constructor !== {}.constructor) { + throw new TypeError("requestDevice error: parameter 1 (options) is not an object"); + } + if (!options.filters) { + throw new TypeError("requestDevice error: required member filters is undefined"); + } + if (options.filters.constructor !== [].constructor) { + throw new TypeError("requestDevice error: the provided value cannot be converted to a sequence"); + } + options.filters.forEach((filter) => { + if (filter.protocolCode && !filter.subclassCode) { + throw new TypeError("requestDevice error: subclass code is required"); + } + if (filter.subclassCode && !filter.classCode) { + throw new TypeError("requestDevice error: class code is required"); + } + }); + let devices = await this.loadDevices(options.filters); + devices = devices.filter((device) => this.filterDevice(device, options.filters)); + if (devices.length === 0) { + throw new NamedError("Failed to execute 'requestDevice' on 'USB': No device selected.", "NotFoundError"); + } + try { + const device = this.options.devicesFound ? await this.options.devicesFound(devices) : devices[0]; + if (!device) { + throw new NamedError("Failed to execute 'requestDevice' on 'USB': No device selected.", "NotFoundError"); + } + this.authorisedDevices.add({ + vendorId: device.vendorId, + productId: device.productId, + classCode: device.deviceClass, + subclassCode: device.deviceSubclass, + protocolCode: device.deviceProtocol, + serialNumber: device.serialNumber || void 0 + }); + return device; + } catch (error) { + throw new NamedError("Failed to execute 'requestDevice' on 'USB': No device selected.", "NotFoundError"); + } + } + /** + * Gets all allowed Web USB devices which are connected + * @returns Promise containing an array of devices + */ + async getDevices() { + const preFilters = this.options.allowAllDevices ? void 0 : this.options.allowedDevices; + const devices = await this.loadDevices(preFilters); + return devices.filter((device) => this.isAuthorisedDevice(device)); + } + async loadDevices(preFilters) { + let devices = usb.getDeviceList(); + devices = this.quickFilter(devices, preFilters); + const refreshedKnownDevices = /* @__PURE__ */ new Map(); + for (const device of devices) { + const webDevice = await this.getWebDevice(device); + if (webDevice) { + refreshedKnownDevices.set(device, webDevice); + } + } + this.knownDevices = refreshedKnownDevices; + return [...this.knownDevices.values()]; + } + // Get a WebUSBDevice corresponding to underlying device. + // Returns undefined the device was not found and could not be created. + async getWebDevice(device) { + if (!this.knownDevices.has(device)) { + if (this.options.deviceTimeout) { + device.timeout = this.options.deviceTimeout; + } + try { + const webDevice = await webusb_device_1.WebUSBDevice.createInstance(device, this.options.autoDetachKernelDriver); + this.knownDevices.set(device, webDevice); + } catch { + } + } + return this.knownDevices.get(device); + } + // Undertake quick filter on devices before creating WebUSB devices if possible + quickFilter(devices, preFilters) { + if (!preFilters || !preFilters.length) { + return devices; + } + return devices.filter((device) => preFilters.some((filter) => { + if (filter.vendorId && filter.vendorId !== device.deviceDescriptor.idVendor) + return false; + if (filter.productId && filter.productId !== device.deviceDescriptor.idProduct) + return false; + return true; + })); + } + // Filter WebUSB devices + filterDevice(device, filters) { + if (!filters || !filters.length) { + return true; + } + return filters.some((filter) => { + if (filter.vendorId && filter.vendorId !== device.vendorId) + return false; + if (filter.productId && filter.productId !== device.productId) + return false; + if (filter.classCode) { + if (!device.configuration) { + return false; + } + const match = device.configuration.interfaces.some((iface) => { + if (filter.classCode && filter.classCode !== iface.alternate.interfaceClass) + return false; + if (filter.subclassCode && filter.subclassCode !== iface.alternate.interfaceSubclass) + return false; + if (filter.protocolCode && filter.protocolCode !== iface.alternate.interfaceProtocol) + return false; + return true; + }); + if (match) { + return true; + } + } + if (filter.classCode && filter.classCode !== device.deviceClass) + return false; + if (filter.subclassCode && filter.subclassCode !== device.deviceSubclass) + return false; + if (filter.protocolCode && filter.protocolCode !== device.deviceProtocol) + return false; + if (filter.serialNumber && filter.serialNumber !== device.serialNumber) + return false; + return true; + }); + } + // Check whether a device is authorised + isAuthorisedDevice(device) { + if (this.options.allowAllDevices) { + return true; + } + if (this.options.allowedDevices && this.filterDevice(device, this.options.allowedDevices)) { + return true; + } + return [...this.authorisedDevices.values()].some((authorised) => authorised.vendorId === device.vendorId && authorised.productId === device.productId && authorised.classCode === device.deviceClass && authorised.subclassCode === device.deviceSubclass && authorised.protocolCode === device.deviceProtocol && authorised.serialNumber === device.serialNumber); + } + }; + exports2.WebUSB = WebUSB; + } +}); + +// node_modules/usb/dist/usb/descriptors.js +var require_descriptors = __commonJS({ + "node_modules/usb/dist/usb/descriptors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/usb/dist/index.js +var require_dist = __commonJS({ + "node_modules/usb/dist/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.LibUSBException = exports2.useUsbDkBackend = exports2.getDeviceList = exports2.Transfer = exports2.Device = exports2.webusb = exports2.findBySerialNumber = exports2.findByIds = exports2.usb = void 0; + var util_1 = __require("util"); + var webusb_1 = require_webusb2(); + var usb = require_usb2(); + exports2.usb = usb; + var findByIds = (vid, pid) => { + const devices = usb.getDeviceList(); + return devices.find((item) => item.deviceDescriptor.idVendor === vid && item.deviceDescriptor.idProduct === pid); + }; + exports2.findByIds = findByIds; + var findBySerialNumber = async (serialNumber) => { + const devices = usb.getDeviceList(); + const opened = (device) => !!device.interfaces; + for (const device of devices) { + try { + if (!opened(device)) { + device.open(); + } + const getStringDescriptor = (0, util_1.promisify)(device.getStringDescriptor).bind(device); + const buffer = await getStringDescriptor(device.deviceDescriptor.iSerialNumber); + if (buffer && buffer.toString() === serialNumber) { + return device; + } + } catch { + } finally { + try { + if (opened(device)) { + device.close(); + } + } catch { + } + } + } + return void 0; + }; + exports2.findBySerialNumber = findBySerialNumber; + var webusb = new webusb_1.WebUSB(); + exports2.webusb = webusb; + var usb_1 = require_usb2(); + Object.defineProperty(exports2, "Device", { enumerable: true, get: function() { + return usb_1.Device; + } }); + Object.defineProperty(exports2, "Transfer", { enumerable: true, get: function() { + return usb_1.Transfer; + } }); + Object.defineProperty(exports2, "getDeviceList", { enumerable: true, get: function() { + return usb_1.getDeviceList; + } }); + Object.defineProperty(exports2, "useUsbDkBackend", { enumerable: true, get: function() { + return usb_1.useUsbDkBackend; + } }); + Object.defineProperty(exports2, "LibUSBException", { enumerable: true, get: function() { + return usb_1.LibUSBException; + } }); + __exportStar2(require_capability(), exports2); + __exportStar2(require_descriptors(), exports2); + __exportStar2(require_endpoint(), exports2); + __exportStar2(require_interface(), exports2); + __exportStar2(require_webusb2(), exports2); + __exportStar2(require_webusb_device(), exports2); + } +}); + +// node_modules/@trezor/transport/lib/transports/nodeusb.js +var require_nodeusb = __commonJS({ + "node_modules/@trezor/transport/lib/transports/nodeusb.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.NodeUsbTransport = void 0; + var usb_1 = require_dist(); + var abstractApi_1 = require_abstractApi(); + var usb_2 = require_usb(); + var NodeUsbTransport = class extends abstractApi_1.AbstractApiTransport { + name = "NodeUsbTransport"; + constructor(params) { + const { + logger, + debugLink, + ...rest + } = params; + super({ + api: new usb_2.UsbApi({ + usbInterface: new usb_1.WebUSB({ + allowAllDevices: true + }), + logger, + debugLink + }), + logger, + ...rest + }); + } + }; + exports2.NodeUsbTransport = NodeUsbTransport; + } +}); + +// node_modules/@trezor/transport/lib/utils/readMessageBuffer.js +var require_readMessageBuffer = __commonJS({ + "node_modules/@trezor/transport/lib/utils/readMessageBuffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.readMessageBuffer = void 0; + var utils_1 = require_lib(); + var result_1 = require_result(); + var errors_1 = require_errors5(); + var readMessageBuffer = () => { + const readBuffer = {}; + const readRequests = {}; + const onMessage = (path2, data) => { + if (readRequests[path2]) { + readRequests[path2].resolve((0, result_1.success)(data)); + delete readRequests[path2]; + } else { + if (!readBuffer[path2]) { + readBuffer[path2] = []; + } + readBuffer[path2].push(data); + } + }; + const read = (path2, signal) => { + const bufferMessage = readBuffer[path2]?.shift(); + if (bufferMessage) { + return Promise.resolve((0, result_1.success)(bufferMessage)); + } + if (readRequests[path2]) { + return readRequests[path2].promise; + } + const dfd = (0, utils_1.createDeferred)(); + readRequests[path2] = dfd; + const abortListener = () => { + dfd.resolve((0, result_1.error)({ + error: errors_1.ABORTED_BY_SIGNAL + })); + }; + signal?.addEventListener("abort", abortListener); + return dfd.promise.finally(() => { + signal?.removeEventListener("abort", abortListener); + delete readRequests[path2]; + }); + }; + const cancelRead = (path2) => { + if (readRequests[path2]) { + readRequests[path2].resolve((0, result_1.error)({ + error: errors_1.INTERFACE_DATA_TRANSFER + })); + } + delete readRequests[path2]; + delete readBuffer[path2]; + }; + return { + onMessage, + read, + cancelRead + }; + }; + exports2.readMessageBuffer = readMessageBuffer; + } +}); + +// node_modules/@trezor/transport/lib/api/udp.js +var require_udp = __commonJS({ + "node_modules/@trezor/transport/lib/api/udp.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UdpApi = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var dgram_1 = tslib_1.__importDefault(__require("dgram")); + var utils_1 = require_lib(); + var abstract_1 = require_abstract3(); + var constants_1 = require_constants2(); + var ERRORS = tslib_1.__importStar(require_errors5()); + var types_1 = require_types3(); + var readMessageBuffer_1 = require_readMessageBuffer(); + var PING = Buffer.from("PINGPING"); + var PONG = Buffer.from("PONGPONG"); + var UdpApi = class extends abstract_1.AbstractApi { + chunkSize = 64; + devices = []; + listenAbortController = new AbortController(); + interface = dgram_1.default.createSocket({ + type: "udp4", + signal: this.listenAbortController.signal + }); + debugLink; + readBuffer; + constructor({ + logger, + debugLink + }) { + super({ + logger, + type: "udp" + }); + this.debugLink = debugLink; + this.readBuffer = (0, readMessageBuffer_1.readMessageBuffer)(); + const onMessage = (message, info) => { + if (message.compare(PONG) === 0) { + return; + } + const id = `${info.address}:${info.port}`; + this.readBuffer.onMessage(id, message); + this.logger?.debug("udp: globalOnMessage log:", message.toString("hex")); + }; + this.interface.addListener("message", onMessage); + } + listen() { + if (this.listening) return; + this.listening = true; + this.listenLoop(); + } + async listenLoop() { + while (this.listening) { + await (0, utils_1.resolveAfter)(500); + if (!this.listening) break; + await this.enumerate(this.listenAbortController.signal); + } + } + write(path2, buffer, signal) { + const [hostname, port] = path2.split(":"); + return new Promise((resolve) => { + const listener = () => { + resolve(this.error({ + error: ERRORS.ABORTED_BY_SIGNAL + })); + }; + signal?.addEventListener("abort", listener); + let chunk; + if (buffer.compare(PING) === 0) { + chunk = buffer; + } else { + chunk = Buffer.alloc(this.chunkSize); + buffer.copy(chunk); + } + this.interface.send(chunk, Number.parseInt(port, 10), hostname, (err2) => { + signal?.removeEventListener("abort", listener); + if (signal?.aborted) { + return; + } + if (err2) { + this.logger?.error(err2.message); + resolve(this.error({ + error: ERRORS.INTERFACE_DATA_TRANSFER, + message: err2.message + })); + } + resolve(this.success(void 0)); + }); + }); + } + read(path2, signal) { + return this.readBuffer.read(path2, signal); + } + async ping(path2, signal) { + await this.write(path2, PING, signal); + if (signal?.aborted) { + throw new Error(ERRORS.ABORTED_BY_SIGNAL); + } + const pinged = new Promise((resolve) => { + const onClear = () => { + this.interface.removeListener("error", onError); + this.interface.removeListener("message", onMessage); + clearTimeout(timeout); + signal?.removeEventListener("abort", onError); + }; + const onError = () => { + resolve(false); + onClear(); + }; + const onMessage = (message, _info) => { + if (message.compare(PONG) === 0) { + resolve(true); + onClear(); + } + }; + signal?.addEventListener("abort", onError); + this.interface.addListener("error", onError); + this.interface.addListener("message", onMessage); + const timeout = setTimeout(onError, 4e3); + }); + return pinged; + } + async enumerate(signal) { + const paths = this.debugLink ? [(0, types_1.PathInternal)("127.0.0.1:21325")] : [(0, types_1.PathInternal)("127.0.0.1:21324")]; + try { + const enumerateResult = await Promise.all(paths.map((path2) => this.ping(path2, signal).then((pinged) => pinged ? { + path: path2, + type: constants_1.DEVICE_TYPE.TypeEmulator, + product: 0, + vendor: 0, + id: path2, + apiType: this.type + } : void 0))).then((res) => res.filter(utils_1.isNotUndefined)); + this.handleDevicesChange(enumerateResult); + return this.success(enumerateResult); + } catch { + this.handleDevicesChange([]); + return this.error({ + error: ERRORS.ABORTED_BY_SIGNAL + }); + } + } + handleDevicesChange(devices) { + const [known, unknown] = (0, utils_1.arrayPartition)(devices, (device) => !!this.devices.find((d) => d.path === device.path)); + const [disconnected] = (0, utils_1.arrayPartition)(this.devices, (device) => !devices.find((d) => d.path === device.path)); + disconnected.forEach((d) => this.readBuffer.cancelRead(d.path)); + if (known.length !== this.devices.length || unknown.length > 0) { + this.devices = devices; + if (this.listening) { + this.emit("transport-interface-change", this.devices); + } + } + } + openDevice(_path) { + return Promise.resolve(this.success(void 0)); + } + closeDevice(path2) { + this.readBuffer.cancelRead(path2); + return Promise.resolve(this.success(void 0)); + } + dispose() { + this.interface.removeAllListeners(); + this.interface.close(); + this.listening = false; + this.listenAbortController.abort(); + } + }; + exports2.UdpApi = UdpApi; + } +}); + +// node_modules/@trezor/transport/lib/transports/udp.js +var require_udp2 = __commonJS({ + "node_modules/@trezor/transport/lib/transports/udp.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UdpTransport = void 0; + var abstractApi_1 = require_abstractApi(); + var udp_1 = require_udp(); + var UdpTransport = class extends abstractApi_1.AbstractApiTransport { + name = "UdpTransport"; + enumerateTimeout; + constructor(params) { + const { + logger, + debugLink, + ...rest + } = params; + super({ + api: new udp_1.UdpApi({ + logger, + debugLink + }), + logger, + ...rest + }); + } + stop() { + if (this.enumerateTimeout) { + clearTimeout(this.enumerateTimeout); + this.enumerateTimeout = void 0; + } + return super.stop(); + } + }; + exports2.UdpTransport = UdpTransport; + } +}); + +// node_modules/@trezor/transport/lib/index.js +var require_lib10 = __commonJS({ + "node_modules/@trezor/transport/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UdpTransport = exports2.SessionsClient = exports2.SessionsBackground = exports2.NodeUsbTransport = exports2.WebUsbTransport = exports2.BridgeTransport = exports2.Messages = exports2.UsbApi = exports2.AbstractApiTransport = exports2.isTransportInstance = exports2.Transport = exports2.TRANSPORT = exports2.TREZOR_USB_DESCRIPTORS = exports2.TRANSPORT_ERROR = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + exports2.TRANSPORT_ERROR = tslib_1.__importStar(require_errors5()); + var constants_1 = require_constants2(); + Object.defineProperty(exports2, "TREZOR_USB_DESCRIPTORS", { + enumerable: true, + get: function() { + return constants_1.TREZOR_USB_DESCRIPTORS; + } + }); + Object.defineProperty(exports2, "TRANSPORT", { + enumerable: true, + get: function() { + return constants_1.TRANSPORT; + } + }); + var abstract_1 = require_abstract2(); + Object.defineProperty(exports2, "Transport", { + enumerable: true, + get: function() { + return abstract_1.AbstractTransport; + } + }); + Object.defineProperty(exports2, "isTransportInstance", { + enumerable: true, + get: function() { + return abstract_1.isTransportInstance; + } + }); + var abstractApi_1 = require_abstractApi(); + Object.defineProperty(exports2, "AbstractApiTransport", { + enumerable: true, + get: function() { + return abstractApi_1.AbstractApiTransport; + } + }); + var usb_1 = require_usb(); + Object.defineProperty(exports2, "UsbApi", { + enumerable: true, + get: function() { + return usb_1.UsbApi; + } + }); + var protobuf_1 = require_lib3(); + Object.defineProperty(exports2, "Messages", { + enumerable: true, + get: function() { + return protobuf_1.Messages; + } + }); + var bridge_1 = require_bridge(); + Object.defineProperty(exports2, "BridgeTransport", { + enumerable: true, + get: function() { + return bridge_1.BridgeTransport; + } + }); + var webusb_1 = require_webusb(); + Object.defineProperty(exports2, "WebUsbTransport", { + enumerable: true, + get: function() { + return webusb_1.WebUsbTransport; + } + }); + var nodeusb_1 = require_nodeusb(); + Object.defineProperty(exports2, "NodeUsbTransport", { + enumerable: true, + get: function() { + return nodeusb_1.NodeUsbTransport; + } + }); + var background_1 = require_background(); + Object.defineProperty(exports2, "SessionsBackground", { + enumerable: true, + get: function() { + return background_1.SessionsBackground; + } + }); + var client_1 = require_client(); + Object.defineProperty(exports2, "SessionsClient", { + enumerable: true, + get: function() { + return client_1.SessionsClient; + } + }); + var udp_1 = require_udp2(); + Object.defineProperty(exports2, "UdpTransport", { + enumerable: true, + get: function() { + return udp_1.UdpTransport; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/data/config.js +var require_config = __commonJS({ + "node_modules/@trezor/connect/lib/data/config.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.config = void 0; + var constants_1 = require_constants2(); + exports2.config = { + webusb: constants_1.TREZOR_USB_DESCRIPTORS, + whitelist: [{ + origin: "chrome-extension://imloifkgjagghnncjkhggdhalmcnfklk", + priority: 1 + }, { + origin: "chrome-extension://niebkpllfhmpfbffbfifagfgoamhpflf", + priority: 1 + }, { + origin: "file://", + priority: 2 + }, { + origin: "trezor.io", + priority: 0 + }, { + origin: "sldev.cz", + priority: 0 + }, { + origin: "localhost", + priority: 0 + }, { + origin: "trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad.onion", + priority: 0 + }], + management: [{ + origin: "trezor.io" + }, { + origin: "sldev.cz" + }, { + origin: "localhost" + }], + knownHosts: [{ + origin: "imloifkgjagghnncjkhggdhalmcnfklk", + label: "Trezor Password Manager (Develop)" + }, { + origin: "niebkpllfhmpfbffbfifagfgoamhpflf", + label: "Trezor Password Manager" + }, { + origin: "mnpfhpndmjholfdlhpkjfmjkgppmodaf", + label: "MetaMask" + }, { + origin: "webextension@metamask.io", + label: "MetaMask" + }, { + origin: "nkbihfbeogaeaoehlefnkodbefgpgknn", + label: "MetaMask" + }, { + origin: "bfibaipbbpipfifeecgfehbpmfhdakgo", + label: "Nightly DEV" + }, { + origin: "fiikommddbeccaoicoejoniammnalkfa", + label: "Nightly" + }, { + origin: "bpcdaglidgnlggelgbjfagekoapjmccp", + label: "Rainbow DEV" + }, { + origin: "opfgelmcmbiajamepnmloijbpoleiama", + label: "Rainbow" + }, { + origin: "acmacodkjbdgmoleebolmdjonilkdbch", + label: "Rabby" + }, { + origin: "ehnpnhnhcickeknioaiodjmielfaoajd", + label: "Ambire DEV" + }, { + origin: "ehgjhhccekdedpbkifaojjaefeohnoea", + label: "Ambire" + }, { + origin: "file://", + label: " " + }], + onionDomains: { + "trezor.io": "trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad.onion" + }, + supportedBrowsers: { + chrome: { + version: 59, + download: "https://www.google.com/chrome/", + update: "https://support.google.com/chrome/answer/95414" + }, + mobilechrome: { + version: 59, + download: "https://www.google.com/chrome/", + update: "https://support.google.com/chrome/answer/95414" + }, + chromium: { + version: 59, + download: "https://www.chromium.org/", + update: "https://www.chromium.org/" + }, + electron: { + version: 0, + download: "https://www.electronjs.org/", + update: "https://www.electronjs.org/" + }, + firefox: { + version: 54, + download: "https://www.mozilla.org/en-US/firefox/new/", + update: "https://support.mozilla.org/en-US/kb/update-firefox-latest-version" + }, + mobilefirefox: { + version: 54, + download: "https://www.mozilla.org/en-US/firefox/new/", + update: "https://support.mozilla.org/en-US/kb/update-firefox-latest-version" + }, + brave: { + version: 59, + download: "https://brave.com/download/", + update: "https://brave.com/download/" + }, + edge: { + version: 79, + download: "https://www.microsoft.com/en-us/edge", + update: "https://www.microsoft.com/en-us/edge" + }, + opera: { + version: 95, + download: "https://www.opera.com/download", + update: "https://www.opera.com/download" + } + }, + supportedFirmware: [{ + coin: ["xrp", "txrp"], + methods: ["getAccountInfo"], + min: { + T1B1: "0", + T2T1: "2.1.0" + }, + max: void 0, + comment: ["Since firmware 2.1.0 there is a new protobuf field 'destination_tag' in RippleSignTx"] + }, { + coin: ["bnb"], + min: { + T1B1: "1.9.0", + T2T1: "2.3.0" + }, + comment: ["There were protobuf backwards incompatible changes with introduction of 1.9.0/2.3.0 firmwares"] + }, { + coin: ["eth", "tsep", "thod"], + min: { + T1B1: "1.8.0", + T2T1: "2.1.0" + }, + comment: ["There were protobuf backwards incompatible changes."] + }, { + coin: ["ada", "tada"], + min: { + T1B1: "0", + T2T1: "2.4.3" + }, + comment: ["Since 2.4.3 there is initialize.derive_cardano message"] + }, { + methods: ["rippleGetAddress", "rippleSignTransaction"], + min: { + T1B1: "0", + T2T1: "2.1.0" + }, + comment: ["Since firmware 2.1.0 there is a new protobuf field 'destination_tag' in RippleSignTx"] + }, { + methods: ["cardanoGetAddress", "cardanoGetPublicKey"], + min: { + T1B1: "0", + T2T1: "2.4.3" + }, + comment: ["Since 2.4.3 Cardano derivation behavior has changed"] + }, { + methods: ["cardanoSignTransaction"], + min: { + T1B1: "0", + T2T1: "2.6.0" + }, + comment: ["Before 2.6.0 not all Cardano transactions were supported"] + }, { + methods: ["cardanoGetNativeScriptHash"], + min: { + T1B1: "0", + T2T1: "2.4.3" + }, + comment: ["Since 2.4.3 Cardano derivation behavior has changed"] + }, { + methods: ["tezosSignTransaction"], + min: { + T1B1: "0", + T2T1: "2.1.8" + }, + comment: ["Since 2.1.8 there are new protobuf fields in tezos transaction (Babylon fork)"] + }, { + methods: ["stellarSignTransaction"], + min: { + T1B1: "1.9.0", + T2T1: "2.3.0" + }, + comment: ["There were protobuf backwards incompatible changes with introduction of 1.9.0/2.3.0 firmwares"] + }, { + capabilities: ["replaceTransaction", "amountUnit"], + min: { + T1B1: "1.9.4", + T2T1: "2.3.5" + }, + comment: ["new sign tx process since 1.9.4/2.3.5"] + }, { + capabilities: ["decreaseOutput"], + min: { + T1B1: "1.10.0", + T2T1: "2.4.0" + }, + comment: ["allow reduce output in RBF transaction since 1.10.0/2.4.0"] + }, { + capabilities: ["eip1559"], + min: { + T1B1: "1.10.4", + T2T1: "2.4.2" + }, + comment: ["new eth transaction pricing mechanism (EIP1559) since 1.10.4/2.4.2"] + }, { + capabilities: ["taproot", "signMessageNoScriptType"], + min: { + T1B1: "1.10.4", + T2T1: "2.4.3" + }, + comment: ["new btc accounts taproot since 1.10.4/2.4.3 (BTC + TEST only)", "SignMessage with no_script_type support"] + }, { + coin: ["dcr", "tdcr"], + methods: ["signTransaction"], + min: { + T1B1: "1.10.1", + T2T1: "2.4.0" + }, + comment: [""] + }, { + methods: ["ethereumSignTypedData"], + min: { + T1B1: "1.10.5", + T2T1: "2.4.3" + }, + comment: ["EIP-712 typed signing support added in 1.10.5/2.4.3"] + }, { + capabilities: ["eip712-domain-only"], + min: { + T1B1: "1.10.6", + T2T1: "2.4.4" + }, + comment: ["EIP-712 domain-only signing, when primaryType=EIP712Domain"] + }, { + capabilities: ["coinjoin"], + methods: ["authorizeCoinjoin", "cancelCoinjoinAuthorization", "getOwnershipId", "getOwnershipProof", "setBusy", "unlockPath"], + min: { + T1B1: "1.12.1", + T2T1: "2.5.3" + } + }, { + capabilities: ["tutorial"], + methods: ["showDeviceTutorial"], + min: { + T1B1: "0", + T2T1: "0", + T3T1: "2.8.0" + } + }, { + methods: ["authenticateDevice"], + min: { + T1B1: "0", + T2T1: "0", + T3T1: "2.8.0" + } + }, { + capabilities: ["tropicDeviceAuthentication"], + min: { + T2B1: "0", + T3B1: "0", + T3T1: "0", + T3W1: "2.9.3" + } + }, { + capabilities: ["getFirmwareHash"], + methods: ["getFirmwareHash"], + min: { + T1B1: "1.11.1", + T2T1: "2.5.1" + } + }, { + methods: ["solanaGetPublicKey", "solanaGetAddress", "solanaSignTransaction"], + min: { + T1B1: "0", + T2T1: "2.6.4", + T2B1: "2.6.4" + } + }, { + capabilities: ["chunkify"], + min: { + T1B1: "0", + T2T1: "2.6.3", + T2B1: "2.6.3" + }, + comment: ["Since firmware 2.6.3 there is a new protobuf field 'chunkify' in almost all getAddress and signTx methods"] + }, { + methods: ["changeLanguage"], + min: { + T1B1: "0", + T2T1: "2.7.0", + T2B1: "2.7.0" + } + }, { + capabilities: ["entropyCheck"], + min: { + T1B1: "1.13.1", + T2T1: "2.8.7", + T2B1: "2.8.7", + T3B1: "2.8.7", + T3T1: "2.8.7" + } + }, { + capabilities: ["evmApproval"], + min: { + T1B1: "0", + T2T1: "2.9.0", + T2B1: "2.9.0", + T3B1: "2.9.0", + T3T1: "2.9.0" + }, + comment: ["EVM approval flow for ERC20 tokens, introduced in firmware 2.9.0"] + }, { + capabilities: ["slip24"], + methods: ["getNonce"], + min: { + T1B1: "0", + T2T1: "2.9.1", + T2B1: "2.9.1", + T3B1: "2.9.1", + T3T1: "2.9.1" + }, + comment: ["Since firmware 2.9.1 SLIP-24 is supported"] + }, { + methods: ["cardanoSignMessage"], + min: { + T1B1: "0", + T2T1: "2.9.1", + T2B1: "2.9.1", + T3B1: "2.9.1", + T3T1: "2.9.1" + }, + comment: ["Cardano SignMessage call added in 2.9.1"] + }, { + capabilities: ["evolu"], + methods: ["evoluGetNode", "evoluSignRegistrationRequest", "evoluGetDelegatedIdentityKey"], + min: { + T1B1: "0", + T2T1: "2.9.5", + T2B1: "2.9.5", + T3B1: "2.9.5", + T3T1: "2.9.5" + } + }, { + capabilities: ["monero"], + methods: ["moneroGetAddress", "moneroGetWatchKey", "moneroKeyImageSync", "moneroSignTransaction"], + min: { + T1B1: "0", + T2T1: "2.5.3", + T2B1: "2.5.3" + } + }] + }; + } +}); + +// node_modules/@trezor/connect/lib/events/ui-request.js +var require_ui_request = __commonJS({ + "node_modules/@trezor/connect/lib/events/ui-request.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createUiMessage = exports2.UI_REQUEST = exports2.UI_EVENT = void 0; + exports2.UI_EVENT = "UI_EVENT"; + exports2.UI_REQUEST = { + TRANSPORT: "ui-no_transport", + BOOTLOADER: "ui-device_bootloader_mode", + NOT_IN_BOOTLOADER: "ui-device_not_in_bootloader_mode", + REQUIRE_MODE: "ui-device_require_mode", + INITIALIZE: "ui-device_not_initialized", + SEEDLESS: "ui-device_seedless", + FIRMWARE_OLD: "ui-device_firmware_old", + FIRMWARE_OUTDATED: "ui-device_firmware_outdated", + FIRMWARE_NOT_SUPPORTED: "ui-device_firmware_unsupported", + FIRMWARE_NOT_COMPATIBLE: "ui-device_firmware_not_compatible", + FIRMWARE_NOT_INSTALLED: "ui-device_firmware_not_installed", + FIRMWARE_PROGRESS: "ui-firmware-progress", + FIRMWARE_PROGRESS_UNEXPECTED_DELAY: "ui-firmware-progress-unexpected-delay", + FIRMWARE_RECONNECT: "ui-firmware_reconnect", + FIRMWARE_DISCONNECT: "ui-firmware_disconnect", + FIRMWARE_DOWNLOADED: "ui-firmware_downloaded", + DEVICE_NEEDS_BACKUP: "ui-device_needs_backup", + REQUEST_UI_WINDOW: "ui-request_window", + CLOSE_UI_WINDOW: "ui-close_window", + REQUEST_PERMISSION: "ui-request_permission", + REQUEST_CONFIRMATION: "ui-request_confirmation", + REQUEST_PIN: "ui-request_pin", + INVALID_PIN: "ui-invalid_pin", + INVALID_PIN_ATTEMPTS_DEPLETED: "ui-invalid_pin_attempts_depleted", + REQUEST_PASSPHRASE: "ui-request_passphrase", + REQUEST_PASSPHRASE_ON_DEVICE: "ui-request_passphrase_on_device", + INVALID_PASSPHRASE: "ui-invalid_passphrase", + REQUEST_THP_PAIRING: "ui-request_thp_pairing", + CONNECT: "ui-connect", + LOADING: "ui-loading", + SET_OPERATION: "ui-set_operation", + SELECT_DEVICE: "ui-select_device", + SELECT_ACCOUNT: "ui-select_account", + SELECT_FEE: "ui-select_fee", + UPDATE_CUSTOM_FEE: "ui-update_custom_fee", + INSUFFICIENT_FUNDS: "ui-insufficient_funds", + REQUEST_BUTTON: "ui-button", + REQUEST_WORD: "ui-request_word", + LOGIN_CHALLENGE_REQUEST: "ui-login_challenge_request", + BUNDLE_PROGRESS: "ui-bundle_progress", + ADDRESS_VALIDATION: "ui-address_validation" + }; + var createUiMessage = (type, payload) => ({ + event: exports2.UI_EVENT, + type, + payload + }); + exports2.createUiMessage = createUiMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/ui-response.js +var require_ui_response = __commonJS({ + "node_modules/@trezor/connect/lib/events/ui-response.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createUiResponse = exports2.UI_RESPONSE = void 0; + var ui_request_1 = require_ui_request(); + exports2.UI_RESPONSE = { + RECEIVE_PERMISSION: "ui-receive_permission", + RECEIVE_CONFIRMATION: "ui-receive_confirmation", + RECEIVE_FIRMWARE: "ui-receive_firmware", + RECEIVE_PIN: "ui-receive_pin", + RECEIVE_PASSPHRASE: "ui-receive_passphrase", + RECEIVE_THP_PAIRING_TAG: "ui-receive_thp_pairing_tag", + RECEIVE_DEVICE: "ui-receive_device", + RECEIVE_ACCOUNT: "ui-receive_account", + RECEIVE_FEE: "ui-receive_fee", + RECEIVE_WORD: "ui-receive_word", + INVALID_PASSPHRASE_ACTION: "ui-invalid_passphrase_action", + CHANGE_SETTINGS: "ui-change_settings", + LOGIN_CHALLENGE_RESPONSE: "ui-login_challenge_response" + }; + var createUiResponse = (type, payload) => ({ + event: ui_request_1.UI_EVENT, + type, + payload + }); + exports2.createUiResponse = createUiResponse; + } +}); + +// node_modules/@trezor/connect/lib/events/blockchain.js +var require_blockchain = __commonJS({ + "node_modules/@trezor/connect/lib/events/blockchain.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createBlockchainMessage = exports2.BLOCKCHAIN = exports2.BLOCKCHAIN_EVENT = void 0; + exports2.BLOCKCHAIN_EVENT = "BLOCKCHAIN_EVENT"; + exports2.BLOCKCHAIN = { + CONNECT: "blockchain-connect", + RECONNECTING: "blockchain-reconnecting", + ERROR: "blockchain-error", + BLOCK: "blockchain-block", + NOTIFICATION: "blockchain-notification", + FIAT_RATES_UPDATE: "fiat-rates-update" + }; + var createBlockchainMessage = (type, payload) => ({ + event: exports2.BLOCKCHAIN_EVENT, + type, + payload + }); + exports2.createBlockchainMessage = createBlockchainMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/call.js +var require_call2 = __commonJS({ + "node_modules/@trezor/connect/lib/events/call.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createResponseMessage = exports2.RESPONSE_EVENT = void 0; + var errors_1 = require_errors(); + exports2.RESPONSE_EVENT = "RESPONSE_EVENT"; + var createResponseMessage = (id, success, payload, device) => ({ + event: exports2.RESPONSE_EVENT, + type: exports2.RESPONSE_EVENT, + id, + success, + payload: success ? payload : (0, errors_1.serializeError)(payload), + device: device ? { + path: device?.getUniquePath(), + state: device?.getState(), + instance: device?.getInstance() + } : void 0 + }); + exports2.createResponseMessage = createResponseMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/core.js +var require_core = __commonJS({ + "node_modules/@trezor/connect/lib/events/core.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createErrorMessage = exports2.parseMessage = exports2.CORE_EVENT = void 0; + exports2.CORE_EVENT = "CORE_EVENT"; + var parseMessage = (messageData) => { + const message = { + event: messageData.event, + type: messageData.type, + payload: messageData.payload, + device: messageData.device + }; + if (typeof messageData.id === "number") { + message.id = messageData.id; + } + if (typeof messageData.success === "boolean") { + message.success = messageData.success; + } + return message; + }; + exports2.parseMessage = parseMessage; + var createErrorMessage = (error) => ({ + success: false, + payload: { + error: error.message, + code: error.code + } + }); + exports2.createErrorMessage = createErrorMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/device.js +var require_device2 = __commonJS({ + "node_modules/@trezor/connect/lib/events/device.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createDeviceMessage = exports2.DEVICE = exports2.DEVICE_EVENT = exports2.TrezorPushNotificationType = exports2.TrezorPushNotificationMode = void 0; + var protocol_tpn_1 = require_protocol_tpn(); + Object.defineProperty(exports2, "TrezorPushNotificationMode", { + enumerable: true, + get: function() { + return protocol_tpn_1.TrezorPushNotificationMode; + } + }); + Object.defineProperty(exports2, "TrezorPushNotificationType", { + enumerable: true, + get: function() { + return protocol_tpn_1.TrezorPushNotificationType; + } + }); + exports2.DEVICE_EVENT = "DEVICE_EVENT"; + exports2.DEVICE = { + CONNECT: "device-connect", + CONNECT_UNACQUIRED: "device-connect_unacquired", + DISCONNECT: "device-disconnect", + CHANGED: "device-changed", + FIRMWARE_VERSION_CHANGED: "device-firmware_version_changed", + TREZOR_PUSH_NOTIFICATION: "device-trezor_push_notification", + THP_CREDENTIALS_CHANGED: "device-thp_credentials_changed", + BUTTON: "button", + PIN: "pin", + PASSPHRASE: "passphrase", + PASSPHRASE_ON_DEVICE: "passphrase_on_device", + WORD: "word", + THP_PAIRING: "thp_pairing" + }; + var createDeviceMessage = (type, payload) => ({ + event: exports2.DEVICE_EVENT, + type, + payload + }); + exports2.createDeviceMessage = createDeviceMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/iframe.js +var require_iframe = __commonJS({ + "node_modules/@trezor/connect/lib/events/iframe.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createIFrameMessage = exports2.IFRAME = void 0; + var ui_request_1 = require_ui_request(); + exports2.IFRAME = { + BOOTSTRAP: "iframe-bootstrap", + LOADED: "iframe-loaded", + INIT: "iframe-init", + ERROR: "iframe-error", + CALL: "iframe-call", + LOG: "iframe-log" + }; + var createIFrameMessage = (type, payload) => ({ + event: ui_request_1.UI_EVENT, + type, + payload + }); + exports2.createIFrameMessage = createIFrameMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/popup.js +var require_popup = __commonJS({ + "node_modules/@trezor/connect/lib/events/popup.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createPopupMessage = exports2.POPUP = void 0; + var ui_request_1 = require_ui_request(); + exports2.POPUP = { + BOOTSTRAP: "popup-bootstrap", + LOADED: "popup-loaded", + CORE_LOADED: "popup-core-loaded", + INIT: "popup-init", + ERROR: "popup-error", + EXTENSION_USB_PERMISSIONS: "open-usb-permissions", + HANDSHAKE: "popup-handshake", + CLOSED: "popup-closed", + CANCEL_POPUP_REQUEST: "ui-cancel-popup-request", + CLOSE_WINDOW: "window.close", + ANALYTICS_RESPONSE: "popup-analytics-response", + CONTENT_SCRIPT_LOADED: "popup-content-script-loaded", + METHOD_INFO: "popup-method-info" + }; + var createPopupMessage = (type, payload) => ({ + event: ui_request_1.UI_EVENT, + type, + payload + }); + exports2.createPopupMessage = createPopupMessage; + } +}); + +// node_modules/@trezor/connect/lib/data/udevInfo.js +var require_udevInfo = __commonJS({ + "node_modules/@trezor/connect/lib/data/udevInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.suggestUdevInstaller = void 0; + var info = { + packages: [{ + name: "RPM package", + platform: ["rpm32", "rpm64"], + url: "/udev/trezor-udev-2-1.noarch.rpm" + }, { + name: "DEB package", + platform: ["deb32", "deb64"], + url: "/udev/trezor-udev_2_all.deb", + preferred: true + }] + }; + var suggestUdevInstaller = (platform) => { + if (platform !== void 0) { + return { + packages: info.packages.map((it) => ({ + ...it, + preferred: it.platform.indexOf(platform) >= 0 + })) + }; + } + return info; + }; + exports2.suggestUdevInstaller = suggestUdevInstaller; + } +}); + +// node_modules/@trezor/connect/lib/events/transport.js +var require_transport = __commonJS({ + "node_modules/@trezor/connect/lib/events/transport.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createTransportMessage = exports2.TRANSPORT_EVENT = exports2.TRANSPORT = void 0; + var errors_1 = require_errors(); + var udevInfo_1 = require_udevInfo(); + var constants_1 = require_constants2(); + Object.defineProperty(exports2, "TRANSPORT", { + enumerable: true, + get: function() { + return constants_1.TRANSPORT; + } + }); + exports2.TRANSPORT_EVENT = "TRANSPORT_EVENT"; + var createTransportMessage = (type, payload) => ({ + event: exports2.TRANSPORT_EVENT, + type, + payload: "error" in payload ? (0, errors_1.serializeError)(payload) : { + ...payload, + udev: (0, udevInfo_1.suggestUdevInstaller)() + } + }); + exports2.createTransportMessage = createTransportMessage; + } +}); + +// node_modules/@trezor/connect/lib/events/ui-promise.js +var require_ui_promise = __commonJS({ + "node_modules/@trezor/connect/lib/events/ui-promise.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect/lib/events/webextension.js +var require_webextension = __commonJS({ + "node_modules/@trezor/connect/lib/events/webextension.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WEBEXTENSION = void 0; + exports2.WEBEXTENSION = { + USB_PERMISSIONS_BROADCAST: "usb-permissions", + USB_PERMISSIONS_INIT: "usb-permissions-init", + USB_PERMISSIONS_CLOSE: "usb-permissions-close", + USB_PERMISSIONS_FINISHED: "usb-permissions-finished", + CHANNEL_HANDSHAKE_CONFIRM: "channel-handshake-confirm" + }; + } +}); + +// node_modules/@trezor/connect/lib/events/index.js +var require_events = __commonJS({ + "node_modules/@trezor/connect/lib/events/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UI = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ui_request_1 = require_ui_request(); + var ui_response_1 = require_ui_response(); + tslib_1.__exportStar(require_blockchain(), exports2); + tslib_1.__exportStar(require_call2(), exports2); + tslib_1.__exportStar(require_core(), exports2); + tslib_1.__exportStar(require_device2(), exports2); + tslib_1.__exportStar(require_iframe(), exports2); + tslib_1.__exportStar(require_popup(), exports2); + tslib_1.__exportStar(require_transport(), exports2); + tslib_1.__exportStar(require_ui_promise(), exports2); + tslib_1.__exportStar(require_ui_request(), exports2); + tslib_1.__exportStar(require_ui_response(), exports2); + tslib_1.__exportStar(require_webextension(), exports2); + exports2.UI = { + ...ui_request_1.UI_REQUEST, + ...ui_response_1.UI_RESPONSE + }; + } +}); + +// node_modules/@trezor/connect/lib/utils/urlUtils.js +var require_urlUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/urlUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getOnionDomain = exports2.getHost = exports2.getOrigin = void 0; + var utils_1 = require_lib(); + var getOrigin = (url) => { + if (typeof url !== "string") return "unknown"; + if (url.indexOf("file://") === 0) return "file://"; + const [origin] = url.match(/^https?:\/\/[^/]+/) ?? []; + return origin ?? "unknown"; + }; + exports2.getOrigin = getOrigin; + var getHost = (url) => { + if (typeof url !== "string") return; + const [, , uri] = url.match(/^(https?):\/\/([^:/]+)?/i) ?? []; + if (uri) { + const parts = uri.split("."); + if (parts[parts.length - 1] === "localhost") return "localhost"; + return parts.length > 2 ? parts.slice(parts.length - 2, parts.length).join(".") : uri; + } + }; + exports2.getHost = getHost; + var getOnionDomain = (url, dict) => { + if (Array.isArray(url)) return url.map((u) => (0, utils_1.urlToOnion)(u, dict) ?? u); + if (typeof url === "string") return (0, utils_1.urlToOnion)(url, dict) ?? url; + return url; + }; + exports2.getOnionDomain = getOnionDomain; + } +}); + +// node_modules/@trezor/connect/lib/core/AbstractMethod.js +var require_AbstractMethod = __commonJS({ + "node_modules/@trezor/connect/lib/core/AbstractMethod.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AbstractMethod = exports2.DEFAULT_FIRMWARE_RANGE = void 0; + var connect_common_1 = require_lib5(); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var config_1 = require_config(); + var events_1 = require_events(); + var urlUtils_1 = require_urlUtils(); + exports2.DEFAULT_FIRMWARE_RANGE = { + UNKNOWN: { + min: "1.0.0", + max: "0" + }, + T1B1: { + min: "1.0.0", + max: "0" + }, + T2T1: { + min: "2.0.0", + max: "0" + }, + T2B1: { + min: "2.6.1", + max: "0" + }, + T3B1: { + min: "2.8.1", + max: "0" + }, + T3T1: { + min: "2.7.1", + max: "0" + }, + T3W1: { + min: "2.7.1", + max: "0" + } + }; + function validateStaticSessionId(input) { + if (typeof input !== "string") throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "DeviceState: invalid staticSessionId: " + input); + const [firstTestnetAddress, rest] = input.split("@"); + const [deviceId, instance] = rest.split(":"); + if (typeof firstTestnetAddress === "string" && typeof deviceId === "string" && typeof instance === "string" && Number.parseInt(instance) >= 0) { + return input; + } + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "DeviceState: invalid staticSessionId: " + input); + } + function validateDeviceState(input) { + if (typeof input === "string") { + return { + staticSessionId: validateStaticSessionId(input) + }; + } + if (input && typeof input === "object") { + const state = {}; + if ("staticSessionId" in input) { + state.staticSessionId = validateStaticSessionId(input.staticSessionId); + } + if ("sessionId" in input && typeof input.sessionId === "string") { + state.sessionId = input.sessionId; + } + if ("deriveCardano" in input && typeof input.deriveCardano === "boolean") { + state.deriveCardano = input.deriveCardano; + } + return state; + } + return void 0; + } + var AbstractMethod = class { + responseID; + device; + params; + deviceState; + hasExpectedDeviceState; + keepSession; + skipFinalReload; + skipFirmwareCheck; + overridePreviousCall; + overridden; + name; + payload; + get info() { + return ""; + } + get confirmation() { + return void 0; + } + useUi; + useDevice; + useDeviceState; + preauthorized; + useEmptyPassphrase; + allowSeedlessDevice; + firmwareRange; + requiredPermissions; + allowDeviceMode; + requireDeviceMode; + requiredDeviceCapabilities = []; + network; + useCardanoDerivation; + noBackupConfirmationMode; + postMessage; + createUiPromise; + constructor(message) { + const { + payload + } = message; + this.name = payload.method; + this.payload = payload; + this.responseID = message.id || 0; + this.deviceState = validateDeviceState(payload.device?.state); + this.hasExpectedDeviceState = payload.device ? Object.prototype.hasOwnProperty.call(payload.device, "state") : false; + this.keepSession = typeof payload.keepSession === "boolean" ? payload.keepSession : false; + this.skipFinalReload = typeof payload.skipFinalReload === "boolean" ? payload.skipFinalReload : true; + this.skipFirmwareCheck = false; + this.overridePreviousCall = typeof payload.override === "boolean" ? payload.override : false; + this.overridden = false; + this.useEmptyPassphrase = typeof payload.useEmptyPassphrase === "boolean" ? payload.useEmptyPassphrase : false; + this.allowSeedlessDevice = typeof payload.allowSeedlessDevice === "boolean" ? payload.allowSeedlessDevice : false; + this.allowDeviceMode = []; + this.requireDeviceMode = []; + if (this.allowSeedlessDevice) { + this.allowDeviceMode = [events_1.UI.SEEDLESS]; + } + this.network = "bitcoin"; + (0, utils_1.typedObjectKeys)(constants_1.NETWORK.TYPES).forEach((key) => { + if (this.name.startsWith(key)) { + this.network = key; + } + }); + this.firmwareRange = exports2.DEFAULT_FIRMWARE_RANGE; + this.requiredPermissions = []; + this.useDevice = true; + this.useDeviceState = true; + this.useUi = true; + this.useCardanoDerivation = typeof payload.useCardanoDerivation === "boolean" ? payload.useCardanoDerivation : payload.method.startsWith("cardano"); + this.noBackupConfirmationMode = "never"; + } + setDevice(device) { + this.device = device; + const originalFn = this.createUiPromise; + this.createUiPromise = (t, d) => originalFn(t, d || device); + } + getOriginPermissions({ + origin + }) { + if (!origin) { + return []; + } + return connect_common_1.storage.loadForOrigin(origin)?.permissions || []; + } + checkPermissions({ + origin + }) { + const originPermissions = this.getOriginPermissions({ + origin + }); + let notPermitted = [...this.requiredPermissions]; + if (originPermissions.length > 0) { + notPermitted = notPermitted.filter((np) => { + const granted = originPermissions.find((p) => p.type === np && p.device === this.device.features.device_id); + return !granted; + }); + } + this.requiredPermissions = notPermitted; + } + savePermissions(temporary = false, { + origin + }) { + const originPermissions = this.getOriginPermissions({ + origin + }); + let permissionsToSave = this.requiredPermissions.map((p) => ({ + type: p, + device: this.device.features.device_id || void 0 + })); + let emitEvent = false; + if (this.requiredPermissions.indexOf("read") >= 0) { + const wasAlreadyGranted = originPermissions.filter((p) => p.type === "read" && p.device === this.device.features.device_id); + if (wasAlreadyGranted.length < 1) { + emitEvent = true; + } + } + if (originPermissions.length > 0) { + permissionsToSave = permissionsToSave.filter((p2s) => { + const granted = originPermissions.find((p) => p.type === p2s.type && p.device === p2s.device); + return !granted; + }); + } + connect_common_1.storage.saveForOrigin((state) => ({ + ...state, + permissions: [...state.permissions || [], ...permissionsToSave] + }), origin, temporary); + if (emitEvent) { + this.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CONNECT, this.device.toMessageObject())); + } + } + checkFirmwareRange() { + if (this.skipFirmwareCheck) { + return; + } + const { + device + } = this; + if (!device.features || device.isBootloader()) return; + if (device.isSeedless()) return; + const range = this.firmwareRange[device.features.internal_model]; + if (device.firmwareStatus === "none") { + return events_1.UI.FIRMWARE_NOT_INSTALLED; + } + if (!range) { + return; + } + if (range.min === "0") { + return events_1.UI.FIRMWARE_NOT_SUPPORTED; + } + const version = device.getVersion(); + if (!version) return; + if (this.name !== "backupDevice" && this.name !== "recoveryDevice" && (device.firmwareStatus === "required" || !utils_1.versionUtils.isNewerOrEqual(version, range.min))) { + return events_1.UI.FIRMWARE_OLD; + } + if (range.max !== "0" && utils_1.versionUtils.isNewer(version, range.max)) { + return events_1.UI.FIRMWARE_NOT_COMPATIBLE; + } + } + isManagementRestricted({ + popup, + origin + }) { + if (popup && this.requiredPermissions.includes("management")) { + const host = (0, urlUtils_1.getHost)(origin); + const allowed = config_1.config.management.find((item) => item.origin === host || item.origin === origin); + return !allowed; + } + } + getMethodInfo() { + return { + useUi: this.useUi, + useDevice: this.useDevice, + useDeviceState: this.useDeviceState, + name: this.name, + requiredPermissions: this.requiredPermissions, + info: this.info, + precomposed: void 0, + confirmation: this.confirmation + }; + } + payloadToPrecomposed() { + return Promise.resolve(void 0); + } + checkDeviceCapability() { + const deviceHasAllRequiredCapabilities = (this.requiredDeviceCapabilities || []).every((capability) => this.device.features.capabilities.includes(capability)); + if (!deviceHasAllRequiredCapabilities) { + if (this.device.firmwareType === "bitcoin-only") { + throw constants_1.ERRORS.TypedError("Device_MissingCapabilityBtcOnly", `Trezor has Bitcoin-only firmware installed, which does not support this operation. Please install Universal firmware through Trezor Suite.`); + } + throw constants_1.ERRORS.TypedError("Device_MissingCapability", "Device does not have capability to call this method. Make sure you have the latest firmware installed."); + } + } + dispose() { + } + }; + exports2.AbstractMethod = AbstractMethod; + } +}); + +// node_modules/@trezor/connect/lib/api/applyFlags.js +var require_applyFlags = __commonJS({ + "node_modules/@trezor/connect/lib/api/applyFlags.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var ApplyFlags = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.ApplyFlags, payload); + this.params = { + flags: payload.flags + }; + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "confirm", + label: "Proceed" + }, + label: "Do you really want to apply flags?" + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("ApplyFlags", "Success", this.params); + return response.message; + } + }; + exports2.default = ApplyFlags; + } +}); + +// node_modules/@trezor/connect/lib/types/api/applySettings.js +var require_applySettings = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/applySettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ApplySettings = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + exports2.ApplySettings = schema_utils_1.Type.Composite([constants_1.PROTO.ApplySettings, schema_utils_1.Type.Object({ + passphrase_source: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + })]); + } +}); + +// node_modules/@trezor/connect/lib/api/applySettings.js +var require_applySettings2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/applySettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var applySettings_1 = require_applySettings(); + var ApplySettings = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(applySettings_1.ApplySettings, payload); + this.params = { + ...payload, + _passphrase_source: payload.passphrase_source + }; + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "confirm", + label: "Proceed" + }, + label: "Do you really want to change device settings?" + }; + } + async run() { + const cmd = this.device.getCommands(); + const homescreenBytes = this.params.homescreen ? Buffer.from(this.params.homescreen, "hex") : void 0; + if (this.device.atLeast("2.9.0") && homescreenBytes) { + this.params.homescreen = void 0; + this.params.homescreen_length = homescreenBytes.length; + } + let response = await cmd.typedCall("ApplySettings", ["DataChunkRequest", "Success"], this.params); + while (response.type !== "Success") { + const start = response.message.data_offset; + const end = start + response.message.data_length; + const data_chunk = homescreenBytes?.subarray(start, end).toString("hex") || ""; + response = await cmd.typedCall("DataChunkAck", ["DataChunkRequest", "Success"], { + data_chunk + }); + } + return response.message; + } + }; + exports2.default = ApplySettings; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/utils.js +function isBytes(a) { + return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array"; +} +function anumber(n, title = "") { + if (!Number.isSafeInteger(n) || n < 0) { + const prefix = title && `"${title}" `; + throw new Error(`${prefix}expected integer >= 0, got ${n}`); + } +} +function abytes(value, length, title = "") { + const bytes = isBytes(value); + const len = value?.length; + const needsLen = length !== void 0; + if (!bytes || needsLen && len !== length) { + const prefix = title && `"${title}" `; + const ofLen = needsLen ? ` of length ${length}` : ""; + const got = bytes ? `length=${len}` : `type=${typeof value}`; + throw new Error(prefix + "expected Uint8Array" + ofLen + ", got " + got); + } + return value; +} +function aexists(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error("Hash instance has been destroyed"); + if (checkFinished && instance.finished) + throw new Error("Hash#digest() has already been called"); +} +function aoutput(out, instance) { + abytes(out, void 0, "digestInto() output"); + const min = instance.outputLen; + if (out.length < min) { + throw new Error('"digestInto() output" expected to be of length >=' + min); + } +} +function clean(...arrays) { + for (let i = 0; i < arrays.length; i++) { + arrays[i].fill(0); + } +} +function createView(arr) { + return new DataView(arr.buffer, arr.byteOffset, arr.byteLength); +} +function bytesToHex(bytes) { + abytes(bytes); + if (hasHexBuiltin) + return bytes.toHex(); + let hex = ""; + for (let i = 0; i < bytes.length; i++) { + hex += hexes[bytes[i]]; + } + return hex; +} +function asciiToBase16(ch) { + if (ch >= asciis._0 && ch <= asciis._9) + return ch - asciis._0; + if (ch >= asciis.A && ch <= asciis.F) + return ch - (asciis.A - 10); + if (ch >= asciis.a && ch <= asciis.f) + return ch - (asciis.a - 10); + return; +} +function hexToBytes(hex) { + if (typeof hex !== "string") + throw new Error("hex string expected, got " + typeof hex); + if (hasHexBuiltin) + return Uint8Array.fromHex(hex); + const hl = hex.length; + const al = hl / 2; + if (hl % 2) + throw new Error("hex string expected, got unpadded hex of length " + hl); + const array = new Uint8Array(al); + for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) { + const n1 = asciiToBase16(hex.charCodeAt(hi)); + const n2 = asciiToBase16(hex.charCodeAt(hi + 1)); + if (n1 === void 0 || n2 === void 0) { + const char = hex[hi] + hex[hi + 1]; + throw new Error('hex string expected, got non-hex character "' + char + '" at index ' + hi); + } + array[ai] = n1 * 16 + n2; + } + return array; +} +function concatBytes(...arrays) { + let sum = 0; + for (let i = 0; i < arrays.length; i++) { + const a = arrays[i]; + abytes(a); + sum += a.length; + } + const res = new Uint8Array(sum); + for (let i = 0, pad = 0; i < arrays.length; i++) { + const a = arrays[i]; + res.set(a, pad); + pad += a.length; + } + return res; +} +function createHasher(hashCons, info = {}) { + const hashC = (msg, opts) => hashCons(opts).update(msg).digest(); + const tmp = hashCons(void 0); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = (opts) => hashCons(opts); + Object.assign(hashC, info); + return Object.freeze(hashC); +} +function randomBytes(bytesLength = 32) { + const cr = typeof globalThis === "object" ? globalThis.crypto : null; + if (typeof cr?.getRandomValues !== "function") + throw new Error("crypto.getRandomValues must be defined"); + return cr.getRandomValues(new Uint8Array(bytesLength)); +} +var hasHexBuiltin, hexes, asciis, oidNist; +var init_utils = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/utils.js"() { + hasHexBuiltin = /* @__PURE__ */ (() => ( + // @ts-ignore + typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function" + ))(); + hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); + asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; + oidNist = (suffix) => ({ + oid: Uint8Array.from([6, 9, 96, 134, 72, 1, 101, 3, 4, 2, suffix]) + }); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/_md.js +var HashMD, SHA512_IV; +var init_md = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/_md.js"() { + init_utils(); + HashMD = class { + blockLen; + outputLen; + padOffset; + isLE; + // For partial updates less than block size + buffer; + view; + finished = false; + length = 0; + pos = 0; + destroyed = false; + constructor(blockLen, outputLen, padOffset, isLE) { + this.blockLen = blockLen; + this.outputLen = outputLen; + this.padOffset = padOffset; + this.isLE = isLE; + this.buffer = new Uint8Array(blockLen); + this.view = createView(this.buffer); + } + update(data) { + aexists(this); + abytes(data); + const { view, buffer, blockLen } = this; + const len = data.length; + for (let pos = 0; pos < len; ) { + const take = Math.min(blockLen - this.pos, len - pos); + if (take === blockLen) { + const dataView = createView(data); + for (; blockLen <= len - pos; pos += blockLen) + this.process(dataView, pos); + continue; + } + buffer.set(data.subarray(pos, pos + take), this.pos); + this.pos += take; + pos += take; + if (this.pos === blockLen) { + this.process(view, 0); + this.pos = 0; + } + } + this.length += data.length; + this.roundClean(); + return this; + } + digestInto(out) { + aexists(this); + aoutput(out, this); + this.finished = true; + const { buffer, view, blockLen, isLE } = this; + let { pos } = this; + buffer[pos++] = 128; + clean(this.buffer.subarray(pos)); + if (this.padOffset > blockLen - pos) { + this.process(view, 0); + pos = 0; + } + for (let i = pos; i < blockLen; i++) + buffer[i] = 0; + view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE); + this.process(view, 0); + const oview = createView(out); + const len = this.outputLen; + if (len % 4) + throw new Error("_sha2: outputLen must be aligned to 32bit"); + const outLen = len / 4; + const state = this.get(); + if (outLen > state.length) + throw new Error("_sha2: outputLen bigger than state"); + for (let i = 0; i < outLen; i++) + oview.setUint32(4 * i, state[i], isLE); + } + digest() { + const { buffer, outputLen } = this; + this.digestInto(buffer); + const res = buffer.slice(0, outputLen); + this.destroy(); + return res; + } + _cloneInto(to) { + to ||= new this.constructor(); + to.set(...this.get()); + const { blockLen, buffer, length, finished, destroyed, pos } = this; + to.destroyed = destroyed; + to.finished = finished; + to.length = length; + to.pos = pos; + if (length % blockLen) + to.buffer.set(buffer); + return to; + } + clone() { + return this._cloneInto(); + } + }; + SHA512_IV = /* @__PURE__ */ Uint32Array.from([ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/_u64.js +function fromBig(n, le = false) { + if (le) + return { h: Number(n & U32_MASK64), l: Number(n >> _32n & U32_MASK64) }; + return { h: Number(n >> _32n & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 }; +} +function split(lst, le = false) { + const len = lst.length; + let Ah = new Uint32Array(len); + let Al = new Uint32Array(len); + for (let i = 0; i < len; i++) { + const { h, l } = fromBig(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; +} +function add(Ah, Al, Bh, Bl) { + const l = (Al >>> 0) + (Bl >>> 0); + return { h: Ah + Bh + (l / 2 ** 32 | 0) | 0, l: l | 0 }; +} +var U32_MASK64, _32n, shrSH, shrSL, rotrSH, rotrSL, rotrBH, rotrBL, add3L, add3H, add4L, add4H, add5L, add5H; +var init_u64 = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/_u64.js"() { + U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1); + _32n = /* @__PURE__ */ BigInt(32); + shrSH = (h, _l, s) => h >>> s; + shrSL = (h, l, s) => h << 32 - s | l >>> s; + rotrSH = (h, l, s) => h >>> s | l << 32 - s; + rotrSL = (h, l, s) => h << 32 - s | l >>> s; + rotrBH = (h, l, s) => h << 64 - s | l >>> s - 32; + rotrBL = (h, l, s) => h >>> s - 32 | l << 64 - s; + add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); + add3H = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0; + add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); + add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0; + add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); + add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/sha2.js +var K512, SHA512_Kh, SHA512_Kl, SHA512_W_H, SHA512_W_L, SHA2_64B, _SHA512, sha512; +var init_sha2 = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/sha2.js"() { + init_md(); + init_u64(); + init_utils(); + K512 = /* @__PURE__ */ (() => split([ + "0x428a2f98d728ae22", + "0x7137449123ef65cd", + "0xb5c0fbcfec4d3b2f", + "0xe9b5dba58189dbbc", + "0x3956c25bf348b538", + "0x59f111f1b605d019", + "0x923f82a4af194f9b", + "0xab1c5ed5da6d8118", + "0xd807aa98a3030242", + "0x12835b0145706fbe", + "0x243185be4ee4b28c", + "0x550c7dc3d5ffb4e2", + "0x72be5d74f27b896f", + "0x80deb1fe3b1696b1", + "0x9bdc06a725c71235", + "0xc19bf174cf692694", + "0xe49b69c19ef14ad2", + "0xefbe4786384f25e3", + "0x0fc19dc68b8cd5b5", + "0x240ca1cc77ac9c65", + "0x2de92c6f592b0275", + "0x4a7484aa6ea6e483", + "0x5cb0a9dcbd41fbd4", + "0x76f988da831153b5", + "0x983e5152ee66dfab", + "0xa831c66d2db43210", + "0xb00327c898fb213f", + "0xbf597fc7beef0ee4", + "0xc6e00bf33da88fc2", + "0xd5a79147930aa725", + "0x06ca6351e003826f", + "0x142929670a0e6e70", + "0x27b70a8546d22ffc", + "0x2e1b21385c26c926", + "0x4d2c6dfc5ac42aed", + "0x53380d139d95b3df", + "0x650a73548baf63de", + "0x766a0abb3c77b2a8", + "0x81c2c92e47edaee6", + "0x92722c851482353b", + "0xa2bfe8a14cf10364", + "0xa81a664bbc423001", + "0xc24b8b70d0f89791", + "0xc76c51a30654be30", + "0xd192e819d6ef5218", + "0xd69906245565a910", + "0xf40e35855771202a", + "0x106aa07032bbd1b8", + "0x19a4c116b8d2d0c8", + "0x1e376c085141ab53", + "0x2748774cdf8eeb99", + "0x34b0bcb5e19b48a8", + "0x391c0cb3c5c95a63", + "0x4ed8aa4ae3418acb", + "0x5b9cca4f7763e373", + "0x682e6ff3d6b2b8a3", + "0x748f82ee5defb2fc", + "0x78a5636f43172f60", + "0x84c87814a1f0ab72", + "0x8cc702081a6439ec", + "0x90befffa23631e28", + "0xa4506cebde82bde9", + "0xbef9a3f7b2c67915", + "0xc67178f2e372532b", + "0xca273eceea26619c", + "0xd186b8c721c0c207", + "0xeada7dd6cde0eb1e", + "0xf57d4f7fee6ed178", + "0x06f067aa72176fba", + "0x0a637dc5a2c898a6", + "0x113f9804bef90dae", + "0x1b710b35131c471b", + "0x28db77f523047d84", + "0x32caab7b40c72493", + "0x3c9ebe0a15c9bebc", + "0x431d67c49c100d4c", + "0x4cc5d4becb3e42b6", + "0x597f299cfc657e2a", + "0x5fcb6fab3ad6faec", + "0x6c44198c4a475817" + ].map((n) => BigInt(n))))(); + SHA512_Kh = /* @__PURE__ */ (() => K512[0])(); + SHA512_Kl = /* @__PURE__ */ (() => K512[1])(); + SHA512_W_H = /* @__PURE__ */ new Uint32Array(80); + SHA512_W_L = /* @__PURE__ */ new Uint32Array(80); + SHA2_64B = class extends HashMD { + constructor(outputLen) { + super(128, outputLen, 16, false); + } + // prettier-ignore + get() { + const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; + } + // prettier-ignore + set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) { + this.Ah = Ah | 0; + this.Al = Al | 0; + this.Bh = Bh | 0; + this.Bl = Bl | 0; + this.Ch = Ch | 0; + this.Cl = Cl | 0; + this.Dh = Dh | 0; + this.Dl = Dl | 0; + this.Eh = Eh | 0; + this.El = El | 0; + this.Fh = Fh | 0; + this.Fl = Fl | 0; + this.Gh = Gh | 0; + this.Gl = Gl | 0; + this.Hh = Hh | 0; + this.Hl = Hl | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) { + SHA512_W_H[i] = view.getUint32(offset); + SHA512_W_L[i] = view.getUint32(offset += 4); + } + for (let i = 16; i < 80; i++) { + const W15h = SHA512_W_H[i - 15] | 0; + const W15l = SHA512_W_L[i - 15] | 0; + const s0h = rotrSH(W15h, W15l, 1) ^ rotrSH(W15h, W15l, 8) ^ shrSH(W15h, W15l, 7); + const s0l = rotrSL(W15h, W15l, 1) ^ rotrSL(W15h, W15l, 8) ^ shrSL(W15h, W15l, 7); + const W2h = SHA512_W_H[i - 2] | 0; + const W2l = SHA512_W_L[i - 2] | 0; + const s1h = rotrSH(W2h, W2l, 19) ^ rotrBH(W2h, W2l, 61) ^ shrSH(W2h, W2l, 6); + const s1l = rotrSL(W2h, W2l, 19) ^ rotrBL(W2h, W2l, 61) ^ shrSL(W2h, W2l, 6); + const SUMl = add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]); + const SUMh = add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]); + SHA512_W_H[i] = SUMh | 0; + SHA512_W_L[i] = SUMl | 0; + } + let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + for (let i = 0; i < 80; i++) { + const sigma1h = rotrSH(Eh, El, 14) ^ rotrSH(Eh, El, 18) ^ rotrBH(Eh, El, 41); + const sigma1l = rotrSL(Eh, El, 14) ^ rotrSL(Eh, El, 18) ^ rotrBL(Eh, El, 41); + const CHIh = Eh & Fh ^ ~Eh & Gh; + const CHIl = El & Fl ^ ~El & Gl; + const T1ll = add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]); + const T1h = add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]); + const T1l = T1ll | 0; + const sigma0h = rotrSH(Ah, Al, 28) ^ rotrBH(Ah, Al, 34) ^ rotrBH(Ah, Al, 39); + const sigma0l = rotrSL(Ah, Al, 28) ^ rotrBL(Ah, Al, 34) ^ rotrBL(Ah, Al, 39); + const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch; + const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl; + Hh = Gh | 0; + Hl = Gl | 0; + Gh = Fh | 0; + Gl = Fl | 0; + Fh = Eh | 0; + Fl = El | 0; + ({ h: Eh, l: El } = add(Dh | 0, Dl | 0, T1h | 0, T1l | 0)); + Dh = Ch | 0; + Dl = Cl | 0; + Ch = Bh | 0; + Cl = Bl | 0; + Bh = Ah | 0; + Bl = Al | 0; + const All = add3L(T1l, sigma0l, MAJl); + Ah = add3H(All, T1h, sigma0h, MAJh); + Al = All | 0; + } + ({ h: Ah, l: Al } = add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0)); + ({ h: Bh, l: Bl } = add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0)); + ({ h: Ch, l: Cl } = add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0)); + ({ h: Dh, l: Dl } = add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0)); + ({ h: Eh, l: El } = add(this.Eh | 0, this.El | 0, Eh | 0, El | 0)); + ({ h: Fh, l: Fl } = add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0)); + ({ h: Gh, l: Gl } = add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0)); + ({ h: Hh, l: Hl } = add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0)); + this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl); + } + roundClean() { + clean(SHA512_W_H, SHA512_W_L); + } + destroy() { + clean(this.buffer); + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } + }; + _SHA512 = class extends SHA2_64B { + Ah = SHA512_IV[0] | 0; + Al = SHA512_IV[1] | 0; + Bh = SHA512_IV[2] | 0; + Bl = SHA512_IV[3] | 0; + Ch = SHA512_IV[4] | 0; + Cl = SHA512_IV[5] | 0; + Dh = SHA512_IV[6] | 0; + Dl = SHA512_IV[7] | 0; + Eh = SHA512_IV[8] | 0; + El = SHA512_IV[9] | 0; + Fh = SHA512_IV[10] | 0; + Fl = SHA512_IV[11] | 0; + Gh = SHA512_IV[12] | 0; + Gl = SHA512_IV[13] | 0; + Hh = SHA512_IV[14] | 0; + Hl = SHA512_IV[15] | 0; + constructor() { + super(64); + } + }; + sha512 = /* @__PURE__ */ createHasher( + () => new _SHA512(), + /* @__PURE__ */ oidNist(3) + ); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/utils.js +function abool(value, title = "") { + if (typeof value !== "boolean") { + const prefix = title && `"${title}" `; + throw new Error(prefix + "expected boolean, got type=" + typeof value); + } + return value; +} +function abignumber(n) { + if (typeof n === "bigint") { + if (!isPosBig(n)) + throw new Error("positive bigint expected, got " + n); + } else + anumber(n); + return n; +} +function asafenumber(value, title = "") { + if (!Number.isSafeInteger(value)) { + const prefix = title && `"${title}" `; + throw new Error(prefix + "expected safe integer, got type=" + typeof value); + } +} +function hexToNumber(hex) { + if (typeof hex !== "string") + throw new Error("hex string expected, got " + typeof hex); + return hex === "" ? _0n : BigInt("0x" + hex); +} +function bytesToNumberBE(bytes) { + return hexToNumber(bytesToHex(bytes)); +} +function bytesToNumberLE(bytes) { + return hexToNumber(bytesToHex(copyBytes(abytes(bytes)).reverse())); +} +function numberToBytesBE(n, len) { + anumber(len); + n = abignumber(n); + const res = hexToBytes(n.toString(16).padStart(len * 2, "0")); + if (res.length !== len) + throw new Error("number too large"); + return res; +} +function numberToBytesLE(n, len) { + return numberToBytesBE(n, len).reverse(); +} +function equalBytes(a, b) { + if (a.length !== b.length) + return false; + let diff = 0; + for (let i = 0; i < a.length; i++) + diff |= a[i] ^ b[i]; + return diff === 0; +} +function copyBytes(bytes) { + return Uint8Array.from(bytes); +} +function asciiToBytes(ascii) { + return Uint8Array.from(ascii, (c, i) => { + const charCode = c.charCodeAt(0); + if (c.length !== 1 || charCode > 127) { + throw new Error(`string contains non-ASCII character "${ascii[i]}" with code ${charCode} at position ${i}`); + } + return charCode; + }); +} +function inRange(n, min, max) { + return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max; +} +function aInRange(title, n, min, max) { + if (!inRange(n, min, max)) + throw new Error("expected valid " + title + ": " + min + " <= n < " + max + ", got " + n); +} +function bitLen(n) { + let len; + for (len = 0; n > _0n; n >>= _1n, len += 1) + ; + return len; +} +function validateObject(object, fields = {}, optFields = {}) { + if (!object || typeof object !== "object") + throw new Error("expected valid options object"); + function checkField(fieldName, expectedType, isOpt) { + const val = object[fieldName]; + if (isOpt && val === void 0) + return; + const current = typeof val; + if (current !== expectedType || val === null) + throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`); + } + const iter = (f, isOpt) => Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt)); + iter(fields, false); + iter(optFields, true); +} +function memoized(fn) { + const map = /* @__PURE__ */ new WeakMap(); + return (arg, ...args) => { + const val = map.get(arg); + if (val !== void 0) + return val; + const computed = fn(arg, ...args); + map.set(arg, computed); + return computed; + }; +} +var _0n, _1n, isPosBig, bitMask, notImplemented; +var init_utils2 = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/utils.js"() { + init_utils(); + init_utils(); + _0n = /* @__PURE__ */ BigInt(0); + _1n = /* @__PURE__ */ BigInt(1); + isPosBig = (n) => typeof n === "bigint" && _0n <= n; + bitMask = (n) => (_1n << BigInt(n)) - _1n; + notImplemented = () => { + throw new Error("not implemented"); + }; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/modular.js +function mod2(a, b) { + const result = a % b; + return result >= _0n2 ? result : b + result; +} +function pow2(x, power, modulo) { + let res = x; + while (power-- > _0n2) { + res *= res; + res %= modulo; + } + return res; +} +function invert(number, modulo) { + if (number === _0n2) + throw new Error("invert: expected non-zero number"); + if (modulo <= _0n2) + throw new Error("invert: expected positive modulus, got " + modulo); + let a = mod2(number, modulo); + let b = modulo; + let x = _0n2, y = _1n2, u = _1n2, v = _0n2; + while (a !== _0n2) { + const q = b / a; + const r = b % a; + const m = x - u * q; + const n = y - v * q; + b = a, a = r, x = u, y = v, u = m, v = n; + } + const gcd = b; + if (gcd !== _1n2) + throw new Error("invert: does not exist"); + return mod2(x, modulo); +} +function assertIsSquare(Fp2, root, n) { + if (!Fp2.eql(Fp2.sqr(root), n)) + throw new Error("Cannot find square root"); +} +function sqrt3mod4(Fp2, n) { + const p1div4 = (Fp2.ORDER + _1n2) / _4n; + const root = Fp2.pow(n, p1div4); + assertIsSquare(Fp2, root, n); + return root; +} +function sqrt5mod8(Fp2, n) { + const p5div8 = (Fp2.ORDER - _5n) / _8n; + const n2 = Fp2.mul(n, _2n); + const v = Fp2.pow(n2, p5div8); + const nv = Fp2.mul(n, v); + const i = Fp2.mul(Fp2.mul(nv, _2n), v); + const root = Fp2.mul(nv, Fp2.sub(i, Fp2.ONE)); + assertIsSquare(Fp2, root, n); + return root; +} +function sqrt9mod16(P) { + const Fp_ = Field(P); + const tn = tonelliShanks(P); + const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); + const c2 = tn(Fp_, c1); + const c3 = tn(Fp_, Fp_.neg(c1)); + const c4 = (P + _7n) / _16n; + return (Fp2, n) => { + let tv1 = Fp2.pow(n, c4); + let tv2 = Fp2.mul(tv1, c1); + const tv3 = Fp2.mul(tv1, c2); + const tv4 = Fp2.mul(tv1, c3); + const e1 = Fp2.eql(Fp2.sqr(tv2), n); + const e2 = Fp2.eql(Fp2.sqr(tv3), n); + tv1 = Fp2.cmov(tv1, tv2, e1); + tv2 = Fp2.cmov(tv4, tv3, e2); + const e3 = Fp2.eql(Fp2.sqr(tv2), n); + const root = Fp2.cmov(tv1, tv2, e3); + assertIsSquare(Fp2, root, n); + return root; + }; +} +function tonelliShanks(P) { + if (P < _3n) + throw new Error("sqrt is not defined for small field"); + let Q = P - _1n2; + let S = 0; + while (Q % _2n === _0n2) { + Q /= _2n; + S++; + } + let Z = _2n; + const _Fp = Field(P); + while (FpLegendre(_Fp, Z) === 1) { + if (Z++ > 1e3) + throw new Error("Cannot find square root: probably non-prime P"); + } + if (S === 1) + return sqrt3mod4; + let cc = _Fp.pow(Z, Q); + const Q1div2 = (Q + _1n2) / _2n; + return function tonelliSlow(Fp2, n) { + if (Fp2.is0(n)) + return n; + if (FpLegendre(Fp2, n) !== 1) + throw new Error("Cannot find square root"); + let M = S; + let c = Fp2.mul(Fp2.ONE, cc); + let t = Fp2.pow(n, Q); + let R = Fp2.pow(n, Q1div2); + while (!Fp2.eql(t, Fp2.ONE)) { + if (Fp2.is0(t)) + return Fp2.ZERO; + let i = 1; + let t_tmp = Fp2.sqr(t); + while (!Fp2.eql(t_tmp, Fp2.ONE)) { + i++; + t_tmp = Fp2.sqr(t_tmp); + if (i === M) + throw new Error("Cannot find square root"); + } + const exponent = _1n2 << BigInt(M - i - 1); + const b = Fp2.pow(c, exponent); + M = i; + c = Fp2.sqr(b); + t = Fp2.mul(t, c); + R = Fp2.mul(R, b); + } + return R; + }; +} +function FpSqrt(P) { + if (P % _4n === _3n) + return sqrt3mod4; + if (P % _8n === _5n) + return sqrt5mod8; + if (P % _16n === _9n) + return sqrt9mod16(P); + return tonelliShanks(P); +} +function validateField(field) { + const initial = { + ORDER: "bigint", + BYTES: "number", + BITS: "number" + }; + const opts = FIELD_FIELDS.reduce((map, val) => { + map[val] = "function"; + return map; + }, initial); + validateObject(field, opts); + return field; +} +function FpPow(Fp2, num, power) { + if (power < _0n2) + throw new Error("invalid exponent, negatives unsupported"); + if (power === _0n2) + return Fp2.ONE; + if (power === _1n2) + return num; + let p = Fp2.ONE; + let d = num; + while (power > _0n2) { + if (power & _1n2) + p = Fp2.mul(p, d); + d = Fp2.sqr(d); + power >>= _1n2; + } + return p; +} +function FpInvertBatch(Fp2, nums, passZero = false) { + const inverted = new Array(nums.length).fill(passZero ? Fp2.ZERO : void 0); + const multipliedAcc = nums.reduce((acc, num, i) => { + if (Fp2.is0(num)) + return acc; + inverted[i] = acc; + return Fp2.mul(acc, num); + }, Fp2.ONE); + const invertedAcc = Fp2.inv(multipliedAcc); + nums.reduceRight((acc, num, i) => { + if (Fp2.is0(num)) + return acc; + inverted[i] = Fp2.mul(acc, inverted[i]); + return Fp2.mul(acc, num); + }, invertedAcc); + return inverted; +} +function FpLegendre(Fp2, n) { + const p1mod2 = (Fp2.ORDER - _1n2) / _2n; + const powered = Fp2.pow(n, p1mod2); + const yes = Fp2.eql(powered, Fp2.ONE); + const zero = Fp2.eql(powered, Fp2.ZERO); + const no = Fp2.eql(powered, Fp2.neg(Fp2.ONE)); + if (!yes && !zero && !no) + throw new Error("invalid Legendre symbol result"); + return yes ? 1 : zero ? 0 : -1; +} +function nLength(n, nBitLength) { + if (nBitLength !== void 0) + anumber(nBitLength); + const _nBitLength = nBitLength !== void 0 ? nBitLength : n.toString(2).length; + const nByteLength = Math.ceil(_nBitLength / 8); + return { nBitLength: _nBitLength, nByteLength }; +} +function Field(ORDER, opts = {}) { + return new _Field(ORDER, opts); +} +function FpSqrtEven(Fp2, elm) { + if (!Fp2.isOdd) + throw new Error("Field doesn't have isOdd"); + const root = Fp2.sqrt(elm); + return Fp2.isOdd(root) ? Fp2.neg(root) : root; +} +function getFieldBytesLength(fieldOrder) { + if (typeof fieldOrder !== "bigint") + throw new Error("field order must be bigint"); + const bitLength = fieldOrder.toString(2).length; + return Math.ceil(bitLength / 8); +} +function getMinHashLength(fieldOrder) { + const length = getFieldBytesLength(fieldOrder); + return length + Math.ceil(length / 2); +} +function mapHashToField(key, fieldOrder, isLE = false) { + abytes(key); + const len = key.length; + const fieldLen = getFieldBytesLength(fieldOrder); + const minLen = getMinHashLength(fieldOrder); + if (len < 16 || len < minLen || len > 1024) + throw new Error("expected " + minLen + "-1024 bytes of input, got " + len); + const num = isLE ? bytesToNumberLE(key) : bytesToNumberBE(key); + const reduced = mod2(num, fieldOrder - _1n2) + _1n2; + return isLE ? numberToBytesLE(reduced, fieldLen) : numberToBytesBE(reduced, fieldLen); +} +var _0n2, _1n2, _2n, _3n, _4n, _5n, _7n, _8n, _9n, _16n, isNegativeLE, FIELD_FIELDS, _Field; +var init_modular = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/modular.js"() { + init_utils2(); + _0n2 = /* @__PURE__ */ BigInt(0); + _1n2 = /* @__PURE__ */ BigInt(1); + _2n = /* @__PURE__ */ BigInt(2); + _3n = /* @__PURE__ */ BigInt(3); + _4n = /* @__PURE__ */ BigInt(4); + _5n = /* @__PURE__ */ BigInt(5); + _7n = /* @__PURE__ */ BigInt(7); + _8n = /* @__PURE__ */ BigInt(8); + _9n = /* @__PURE__ */ BigInt(9); + _16n = /* @__PURE__ */ BigInt(16); + isNegativeLE = (num, modulo) => (mod2(num, modulo) & _1n2) === _1n2; + FIELD_FIELDS = [ + "create", + "isValid", + "is0", + "neg", + "inv", + "sqrt", + "sqr", + "eql", + "add", + "sub", + "mul", + "pow", + "div", + "addN", + "subN", + "mulN", + "sqrN" + ]; + _Field = class { + ORDER; + BITS; + BYTES; + isLE; + ZERO = _0n2; + ONE = _1n2; + _lengths; + _sqrt; + // cached sqrt + _mod; + constructor(ORDER, opts = {}) { + if (ORDER <= _0n2) + throw new Error("invalid field: expected ORDER > 0, got " + ORDER); + let _nbitLength = void 0; + this.isLE = false; + if (opts != null && typeof opts === "object") { + if (typeof opts.BITS === "number") + _nbitLength = opts.BITS; + if (typeof opts.sqrt === "function") + this.sqrt = opts.sqrt; + if (typeof opts.isLE === "boolean") + this.isLE = opts.isLE; + if (opts.allowedLengths) + this._lengths = opts.allowedLengths?.slice(); + if (typeof opts.modFromBytes === "boolean") + this._mod = opts.modFromBytes; + } + const { nBitLength, nByteLength } = nLength(ORDER, _nbitLength); + if (nByteLength > 2048) + throw new Error("invalid field: expected ORDER of <= 2048 bytes"); + this.ORDER = ORDER; + this.BITS = nBitLength; + this.BYTES = nByteLength; + this._sqrt = void 0; + Object.preventExtensions(this); + } + create(num) { + return mod2(num, this.ORDER); + } + isValid(num) { + if (typeof num !== "bigint") + throw new Error("invalid field element: expected bigint, got " + typeof num); + return _0n2 <= num && num < this.ORDER; + } + is0(num) { + return num === _0n2; + } + // is valid and invertible + isValidNot0(num) { + return !this.is0(num) && this.isValid(num); + } + isOdd(num) { + return (num & _1n2) === _1n2; + } + neg(num) { + return mod2(-num, this.ORDER); + } + eql(lhs, rhs) { + return lhs === rhs; + } + sqr(num) { + return mod2(num * num, this.ORDER); + } + add(lhs, rhs) { + return mod2(lhs + rhs, this.ORDER); + } + sub(lhs, rhs) { + return mod2(lhs - rhs, this.ORDER); + } + mul(lhs, rhs) { + return mod2(lhs * rhs, this.ORDER); + } + pow(num, power) { + return FpPow(this, num, power); + } + div(lhs, rhs) { + return mod2(lhs * invert(rhs, this.ORDER), this.ORDER); + } + // Same as above, but doesn't normalize + sqrN(num) { + return num * num; + } + addN(lhs, rhs) { + return lhs + rhs; + } + subN(lhs, rhs) { + return lhs - rhs; + } + mulN(lhs, rhs) { + return lhs * rhs; + } + inv(num) { + return invert(num, this.ORDER); + } + sqrt(num) { + if (!this._sqrt) + this._sqrt = FpSqrt(this.ORDER); + return this._sqrt(this, num); + } + toBytes(num) { + return this.isLE ? numberToBytesLE(num, this.BYTES) : numberToBytesBE(num, this.BYTES); + } + fromBytes(bytes, skipValidation = false) { + abytes(bytes); + const { _lengths: allowedLengths, BYTES, isLE, ORDER, _mod: modFromBytes } = this; + if (allowedLengths) { + if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) { + throw new Error("Field.fromBytes: expected " + allowedLengths + " bytes, got " + bytes.length); + } + const padded = new Uint8Array(BYTES); + padded.set(bytes, isLE ? 0 : padded.length - bytes.length); + bytes = padded; + } + if (bytes.length !== BYTES) + throw new Error("Field.fromBytes: expected " + BYTES + " bytes, got " + bytes.length); + let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes); + if (modFromBytes) + scalar = mod2(scalar, ORDER); + if (!skipValidation) { + if (!this.isValid(scalar)) + throw new Error("invalid field element: outside of range 0..ORDER"); + } + return scalar; + } + // TODO: we don't need it here, move out to separate fn + invertBatch(lst) { + return FpInvertBatch(this, lst); + } + // We can't move this out because Fp6, Fp12 implement it + // and it's unclear what to return in there. + cmov(a, b, condition) { + return condition ? b : a; + } + }; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/curve.js +function negateCt(condition, item) { + const neg = item.negate(); + return condition ? neg : item; +} +function normalizeZ(c, points) { + const invertedZs = FpInvertBatch(c.Fp, points.map((p) => p.Z)); + return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i]))); +} +function validateW(W, bits) { + if (!Number.isSafeInteger(W) || W <= 0 || W > bits) + throw new Error("invalid window size, expected [1.." + bits + "], got W=" + W); +} +function calcWOpts(W, scalarBits) { + validateW(W, scalarBits); + const windows = Math.ceil(scalarBits / W) + 1; + const windowSize = 2 ** (W - 1); + const maxNumber = 2 ** W; + const mask = bitMask(W); + const shiftBy = BigInt(W); + return { windows, windowSize, mask, maxNumber, shiftBy }; +} +function calcOffsets(n, window2, wOpts) { + const { windowSize, mask, maxNumber, shiftBy } = wOpts; + let wbits = Number(n & mask); + let nextN = n >> shiftBy; + if (wbits > windowSize) { + wbits -= maxNumber; + nextN += _1n3; + } + const offsetStart = window2 * windowSize; + const offset = offsetStart + Math.abs(wbits) - 1; + const isZero = wbits === 0; + const isNeg = wbits < 0; + const isNegF = window2 % 2 !== 0; + const offsetF = offsetStart; + return { nextN, offset, isZero, isNeg, isNegF, offsetF }; +} +function validateMSMPoints(points, c) { + if (!Array.isArray(points)) + throw new Error("array expected"); + points.forEach((p, i) => { + if (!(p instanceof c)) + throw new Error("invalid point at index " + i); + }); +} +function validateMSMScalars(scalars, field) { + if (!Array.isArray(scalars)) + throw new Error("array of scalars expected"); + scalars.forEach((s, i) => { + if (!field.isValid(s)) + throw new Error("invalid scalar at index " + i); + }); +} +function getW(P) { + return pointWindowSizes.get(P) || 1; +} +function assert0(n) { + if (n !== _0n3) + throw new Error("invalid wNAF"); +} +function pippenger(c, points, scalars) { + const fieldN = c.Fn; + validateMSMPoints(points, c); + validateMSMScalars(scalars, fieldN); + const plength = points.length; + const slength = scalars.length; + if (plength !== slength) + throw new Error("arrays of points and scalars must have equal length"); + const zero = c.ZERO; + const wbits = bitLen(BigInt(plength)); + let windowSize = 1; + if (wbits > 12) + windowSize = wbits - 3; + else if (wbits > 4) + windowSize = wbits - 2; + else if (wbits > 0) + windowSize = 2; + const MASK = bitMask(windowSize); + const buckets = new Array(Number(MASK) + 1).fill(zero); + const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize; + let sum = zero; + for (let i = lastBits; i >= 0; i -= windowSize) { + buckets.fill(zero); + for (let j = 0; j < slength; j++) { + const scalar = scalars[j]; + const wbits2 = Number(scalar >> BigInt(i) & MASK); + buckets[wbits2] = buckets[wbits2].add(points[j]); + } + let resI = zero; + for (let j = buckets.length - 1, sumI = zero; j > 0; j--) { + sumI = sumI.add(buckets[j]); + resI = resI.add(sumI); + } + sum = sum.add(resI); + if (i !== 0) + for (let j = 0; j < windowSize; j++) + sum = sum.double(); + } + return sum; +} +function createField(order, field, isLE) { + if (field) { + if (field.ORDER !== order) + throw new Error("Field.ORDER must match order: Fp == p, Fn == n"); + validateField(field); + return field; + } else { + return Field(order, { isLE }); + } +} +function createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) { + if (FpFnLE === void 0) + FpFnLE = type === "edwards"; + if (!CURVE || typeof CURVE !== "object") + throw new Error(`expected valid ${type} CURVE object`); + for (const p of ["p", "n", "h"]) { + const val = CURVE[p]; + if (!(typeof val === "bigint" && val > _0n3)) + throw new Error(`CURVE.${p} must be positive bigint`); + } + const Fp2 = createField(CURVE.p, curveOpts.Fp, FpFnLE); + const Fn2 = createField(CURVE.n, curveOpts.Fn, FpFnLE); + const _b = type === "weierstrass" ? "b" : "d"; + const params = ["Gx", "Gy", "a", _b]; + for (const p of params) { + if (!Fp2.isValid(CURVE[p])) + throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`); + } + CURVE = Object.freeze(Object.assign({}, CURVE)); + return { CURVE, Fp: Fp2, Fn: Fn2 }; +} +function createKeygen(randomSecretKey, getPublicKey) { + return function keygen(seed) { + const secretKey = randomSecretKey(seed); + return { secretKey, publicKey: getPublicKey(secretKey) }; + }; +} +var _0n3, _1n3, pointPrecomputes, pointWindowSizes, wNAF; +var init_curve = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/curve.js"() { + init_utils2(); + init_modular(); + _0n3 = /* @__PURE__ */ BigInt(0); + _1n3 = /* @__PURE__ */ BigInt(1); + pointPrecomputes = /* @__PURE__ */ new WeakMap(); + pointWindowSizes = /* @__PURE__ */ new WeakMap(); + wNAF = class { + BASE; + ZERO; + Fn; + bits; + // Parametrized with a given Point class (not individual point) + constructor(Point, bits) { + this.BASE = Point.BASE; + this.ZERO = Point.ZERO; + this.Fn = Point.Fn; + this.bits = bits; + } + // non-const time multiplication ladder + _unsafeLadder(elm, n, p = this.ZERO) { + let d = elm; + while (n > _0n3) { + if (n & _1n3) + p = p.add(d); + d = d.double(); + n >>= _1n3; + } + return p; + } + /** + * Creates a wNAF precomputation window. Used for caching. + * Default window size is set by `utils.precompute()` and is equal to 8. + * Number of precomputed points depends on the curve size: + * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where: + * - 𝑊 is the window size + * - 𝑛 is the bitlength of the curve order. + * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224. + * @param point Point instance + * @param W window size + * @returns precomputed point tables flattened to a single array + */ + precomputeWindow(point, W) { + const { windows, windowSize } = calcWOpts(W, this.bits); + const points = []; + let p = point; + let base = p; + for (let window2 = 0; window2 < windows; window2++) { + base = p; + points.push(base); + for (let i = 1; i < windowSize; i++) { + base = base.add(p); + points.push(base); + } + p = base.double(); + } + return points; + } + /** + * Implements ec multiplication using precomputed tables and w-ary non-adjacent form. + * More compact implementation: + * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541 + * @returns real and fake (for const-time) points + */ + wNAF(W, precomputes, n) { + if (!this.Fn.isValid(n)) + throw new Error("invalid scalar"); + let p = this.ZERO; + let f = this.BASE; + const wo = calcWOpts(W, this.bits); + for (let window2 = 0; window2 < wo.windows; window2++) { + const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window2, wo); + n = nextN; + if (isZero) { + f = f.add(negateCt(isNegF, precomputes[offsetF])); + } else { + p = p.add(negateCt(isNeg, precomputes[offset])); + } + } + assert0(n); + return { p, f }; + } + /** + * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form. + * @param acc accumulator point to add result of multiplication + * @returns point + */ + wNAFUnsafe(W, precomputes, n, acc = this.ZERO) { + const wo = calcWOpts(W, this.bits); + for (let window2 = 0; window2 < wo.windows; window2++) { + if (n === _0n3) + break; + const { nextN, offset, isZero, isNeg } = calcOffsets(n, window2, wo); + n = nextN; + if (isZero) { + continue; + } else { + const item = precomputes[offset]; + acc = acc.add(isNeg ? item.negate() : item); + } + } + assert0(n); + return acc; + } + getPrecomputes(W, point, transform) { + let comp = pointPrecomputes.get(point); + if (!comp) { + comp = this.precomputeWindow(point, W); + if (W !== 1) { + if (typeof transform === "function") + comp = transform(comp); + pointPrecomputes.set(point, comp); + } + } + return comp; + } + cached(point, scalar, transform) { + const W = getW(point); + return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar); + } + unsafe(point, scalar, transform, prev) { + const W = getW(point); + if (W === 1) + return this._unsafeLadder(point, scalar, prev); + return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev); + } + // We calculate precomputes for elliptic curve point multiplication + // using windowed method. This specifies window size and + // stores precomputed values. Usually only base point would be precomputed. + createCache(P, W) { + validateW(W, this.bits); + pointWindowSizes.set(P, W); + pointPrecomputes.delete(P); + } + hasCache(elm) { + return getW(elm) !== 1; + } + }; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/edwards.js +function isEdValidXY(Fp2, CURVE, x, y) { + const x2 = Fp2.sqr(x); + const y2 = Fp2.sqr(y); + const left = Fp2.add(Fp2.mul(CURVE.a, x2), y2); + const right = Fp2.add(Fp2.ONE, Fp2.mul(CURVE.d, Fp2.mul(x2, y2))); + return Fp2.eql(left, right); +} +function edwards(params, extraOpts = {}) { + const validated = createCurveFields("edwards", params, extraOpts, extraOpts.FpFnLE); + const { Fp: Fp2, Fn: Fn2 } = validated; + let CURVE = validated.CURVE; + const { h: cofactor } = CURVE; + validateObject(extraOpts, {}, { uvRatio: "function" }); + const MASK = _2n2 << BigInt(Fn2.BYTES * 8) - _1n4; + const modP = (n) => Fp2.create(n); + const uvRatio2 = extraOpts.uvRatio || ((u, v) => { + try { + return { isValid: true, value: Fp2.sqrt(Fp2.div(u, v)) }; + } catch (e) { + return { isValid: false, value: _0n4 }; + } + }); + if (!isEdValidXY(Fp2, CURVE, CURVE.Gx, CURVE.Gy)) + throw new Error("bad curve params: generator point"); + function acoord(title, n, banZero = false) { + const min = banZero ? _1n4 : _0n4; + aInRange("coordinate " + title, n, min, MASK); + return n; + } + function aedpoint(other) { + if (!(other instanceof Point)) + throw new Error("EdwardsPoint expected"); + } + const toAffineMemo = memoized((p, iz) => { + const { X, Y, Z } = p; + const is0 = p.is0(); + if (iz == null) + iz = is0 ? _8n2 : Fp2.inv(Z); + const x = modP(X * iz); + const y = modP(Y * iz); + const zz = Fp2.mul(Z, iz); + if (is0) + return { x: _0n4, y: _1n4 }; + if (zz !== _1n4) + throw new Error("invZ was invalid"); + return { x, y }; + }); + const assertValidMemo = memoized((p) => { + const { a, d } = CURVE; + if (p.is0()) + throw new Error("bad point: ZERO"); + const { X, Y, Z, T } = p; + const X2 = modP(X * X); + const Y2 = modP(Y * Y); + const Z2 = modP(Z * Z); + const Z4 = modP(Z2 * Z2); + const aX2 = modP(X2 * a); + const left = modP(Z2 * modP(aX2 + Y2)); + const right = modP(Z4 + modP(d * modP(X2 * Y2))); + if (left !== right) + throw new Error("bad point: equation left != right (1)"); + const XY = modP(X * Y); + const ZT = modP(Z * T); + if (XY !== ZT) + throw new Error("bad point: equation left != right (2)"); + return true; + }); + class Point { + // base / generator point + static BASE = new Point(CURVE.Gx, CURVE.Gy, _1n4, modP(CURVE.Gx * CURVE.Gy)); + // zero / infinity / identity point + static ZERO = new Point(_0n4, _1n4, _1n4, _0n4); + // 0, 1, 1, 0 + // math field + static Fp = Fp2; + // scalar field + static Fn = Fn2; + X; + Y; + Z; + T; + constructor(X, Y, Z, T) { + this.X = acoord("x", X); + this.Y = acoord("y", Y); + this.Z = acoord("z", Z, true); + this.T = acoord("t", T); + Object.freeze(this); + } + static CURVE() { + return CURVE; + } + static fromAffine(p) { + if (p instanceof Point) + throw new Error("extended point not allowed"); + const { x, y } = p || {}; + acoord("x", x); + acoord("y", y); + return new Point(x, y, _1n4, modP(x * y)); + } + // Uses algo from RFC8032 5.1.3. + static fromBytes(bytes, zip215 = false) { + const len = Fp2.BYTES; + const { a, d } = CURVE; + bytes = copyBytes(abytes(bytes, len, "point")); + abool(zip215, "zip215"); + const normed = copyBytes(bytes); + const lastByte = bytes[len - 1]; + normed[len - 1] = lastByte & ~128; + const y = bytesToNumberLE(normed); + const max = zip215 ? MASK : Fp2.ORDER; + aInRange("point.y", y, _0n4, max); + const y2 = modP(y * y); + const u = modP(y2 - _1n4); + const v = modP(d * y2 - a); + let { isValid, value: x } = uvRatio2(u, v); + if (!isValid) + throw new Error("bad point: invalid y coordinate"); + const isXOdd = (x & _1n4) === _1n4; + const isLastByteOdd = (lastByte & 128) !== 0; + if (!zip215 && x === _0n4 && isLastByteOdd) + throw new Error("bad point: x=0 and x_0=1"); + if (isLastByteOdd !== isXOdd) + x = modP(-x); + return Point.fromAffine({ x, y }); + } + static fromHex(hex, zip215 = false) { + return Point.fromBytes(hexToBytes(hex), zip215); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + precompute(windowSize = 8, isLazy = true) { + wnaf.createCache(this, windowSize); + if (!isLazy) + this.multiply(_2n2); + return this; + } + // Useful in fromAffine() - not for fromBytes(), which always created valid points. + assertValidity() { + assertValidMemo(this); + } + // Compare one point to another. + equals(other) { + aedpoint(other); + const { X: X1, Y: Y1, Z: Z1 } = this; + const { X: X2, Y: Y2, Z: Z2 } = other; + const X1Z2 = modP(X1 * Z2); + const X2Z1 = modP(X2 * Z1); + const Y1Z2 = modP(Y1 * Z2); + const Y2Z1 = modP(Y2 * Z1); + return X1Z2 === X2Z1 && Y1Z2 === Y2Z1; + } + is0() { + return this.equals(Point.ZERO); + } + negate() { + return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T)); + } + // Fast algo for doubling Extended Point. + // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd + // Cost: 4M + 4S + 1*a + 6add + 1*2. + double() { + const { a } = CURVE; + const { X: X1, Y: Y1, Z: Z1 } = this; + const A = modP(X1 * X1); + const B = modP(Y1 * Y1); + const C = modP(_2n2 * modP(Z1 * Z1)); + const D = modP(a * A); + const x1y1 = X1 + Y1; + const E = modP(modP(x1y1 * x1y1) - A - B); + const G = D + B; + const F = G - C; + const H = D - B; + const X3 = modP(E * F); + const Y3 = modP(G * H); + const T3 = modP(E * H); + const Z3 = modP(F * G); + return new Point(X3, Y3, Z3, T3); + } + // Fast algo for adding 2 Extended Points. + // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd + // Cost: 9M + 1*a + 1*d + 7add. + add(other) { + aedpoint(other); + const { a, d } = CURVE; + const { X: X1, Y: Y1, Z: Z1, T: T1 } = this; + const { X: X2, Y: Y2, Z: Z2, T: T2 } = other; + const A = modP(X1 * X2); + const B = modP(Y1 * Y2); + const C = modP(T1 * d * T2); + const D = modP(Z1 * Z2); + const E = modP((X1 + Y1) * (X2 + Y2) - A - B); + const F = D - C; + const G = D + C; + const H = modP(B - a * A); + const X3 = modP(E * F); + const Y3 = modP(G * H); + const T3 = modP(E * H); + const Z3 = modP(F * G); + return new Point(X3, Y3, Z3, T3); + } + subtract(other) { + return this.add(other.negate()); + } + // Constant-time multiplication. + multiply(scalar) { + if (!Fn2.isValidNot0(scalar)) + throw new Error("invalid scalar: expected 1 <= sc < curve.n"); + const { p, f } = wnaf.cached(this, scalar, (p2) => normalizeZ(Point, p2)); + return normalizeZ(Point, [p, f])[0]; + } + // Non-constant-time multiplication. Uses double-and-add algorithm. + // It's faster, but should only be used when you don't care about + // an exposed private key e.g. sig verification. + // Does NOT allow scalars higher than CURVE.n. + // Accepts optional accumulator to merge with multiply (important for sparse scalars) + multiplyUnsafe(scalar, acc = Point.ZERO) { + if (!Fn2.isValid(scalar)) + throw new Error("invalid scalar: expected 0 <= sc < curve.n"); + if (scalar === _0n4) + return Point.ZERO; + if (this.is0() || scalar === _1n4) + return this; + return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p), acc); + } + // Checks if point is of small order. + // If you add something to small order point, you will have "dirty" + // point with torsion component. + // Multiplies point by cofactor and checks if the result is 0. + isSmallOrder() { + return this.multiplyUnsafe(cofactor).is0(); + } + // Multiplies point by curve order and checks if the result is 0. + // Returns `false` is the point is dirty. + isTorsionFree() { + return wnaf.unsafe(this, CURVE.n).is0(); + } + // Converts Extended point to default (x, y) coordinates. + // Can accept precomputed Z^-1 - for example, from invertBatch. + toAffine(invertedZ) { + return toAffineMemo(this, invertedZ); + } + clearCofactor() { + if (cofactor === _1n4) + return this; + return this.multiplyUnsafe(cofactor); + } + toBytes() { + const { x, y } = this.toAffine(); + const bytes = Fp2.toBytes(y); + bytes[bytes.length - 1] |= x & _1n4 ? 128 : 0; + return bytes; + } + toHex() { + return bytesToHex(this.toBytes()); + } + toString() { + return ``; + } + } + const wnaf = new wNAF(Point, Fn2.BITS); + Point.BASE.precompute(8); + return Point; +} +function eddsa(Point, cHash, eddsaOpts = {}) { + if (typeof cHash !== "function") + throw new Error('"hash" function param is required'); + validateObject(eddsaOpts, {}, { + adjustScalarBytes: "function", + randomBytes: "function", + domain: "function", + prehash: "function", + mapToCurve: "function" + }); + const { prehash } = eddsaOpts; + const { BASE, Fp: Fp2, Fn: Fn2 } = Point; + const randomBytes2 = eddsaOpts.randomBytes || randomBytes; + const adjustScalarBytes2 = eddsaOpts.adjustScalarBytes || ((bytes) => bytes); + const domain = eddsaOpts.domain || ((data, ctx, phflag) => { + abool(phflag, "phflag"); + if (ctx.length || phflag) + throw new Error("Contexts/pre-hash are not supported"); + return data; + }); + function modN_LE(hash) { + return Fn2.create(bytesToNumberLE(hash)); + } + function getPrivateScalar(key) { + const len = lengths.secretKey; + abytes(key, lengths.secretKey, "secretKey"); + const hashed = abytes(cHash(key), 2 * len, "hashedSecretKey"); + const head = adjustScalarBytes2(hashed.slice(0, len)); + const prefix = hashed.slice(len, 2 * len); + const scalar = modN_LE(head); + return { head, prefix, scalar }; + } + function getExtendedPublicKey(secretKey) { + const { head, prefix, scalar } = getPrivateScalar(secretKey); + const point = BASE.multiply(scalar); + const pointBytes = point.toBytes(); + return { head, prefix, scalar, point, pointBytes }; + } + function getPublicKey(secretKey) { + return getExtendedPublicKey(secretKey).pointBytes; + } + function hashDomainToScalar(context = Uint8Array.of(), ...msgs) { + const msg = concatBytes(...msgs); + return modN_LE(cHash(domain(msg, abytes(context, void 0, "context"), !!prehash))); + } + function sign(msg, secretKey, options = {}) { + msg = abytes(msg, void 0, "message"); + if (prehash) + msg = prehash(msg); + const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey); + const r = hashDomainToScalar(options.context, prefix, msg); + const R = BASE.multiply(r).toBytes(); + const k = hashDomainToScalar(options.context, R, pointBytes, msg); + const s = Fn2.create(r + k * scalar); + if (!Fn2.isValid(s)) + throw new Error("sign failed: invalid s"); + const rs = concatBytes(R, Fn2.toBytes(s)); + return abytes(rs, lengths.signature, "result"); + } + const verifyOpts = { zip215: true }; + function verify(sig, msg, publicKey, options = verifyOpts) { + const { context, zip215 } = options; + const len = lengths.signature; + sig = abytes(sig, len, "signature"); + msg = abytes(msg, void 0, "message"); + publicKey = abytes(publicKey, lengths.publicKey, "publicKey"); + if (zip215 !== void 0) + abool(zip215, "zip215"); + if (prehash) + msg = prehash(msg); + const mid = len / 2; + const r = sig.subarray(0, mid); + const s = bytesToNumberLE(sig.subarray(mid, len)); + let A, R, SB; + try { + A = Point.fromBytes(publicKey, zip215); + R = Point.fromBytes(r, zip215); + SB = BASE.multiplyUnsafe(s); + } catch (error) { + return false; + } + if (!zip215 && A.isSmallOrder()) + return false; + const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg); + const RkA = R.add(A.multiplyUnsafe(k)); + return RkA.subtract(SB).clearCofactor().is0(); + } + const _size = Fp2.BYTES; + const lengths = { + secretKey: _size, + publicKey: _size, + signature: 2 * _size, + seed: _size + }; + function randomSecretKey(seed = randomBytes2(lengths.seed)) { + return abytes(seed, lengths.seed, "seed"); + } + function isValidSecretKey(key) { + return isBytes(key) && key.length === Fn2.BYTES; + } + function isValidPublicKey(key, zip215) { + try { + return !!Point.fromBytes(key, zip215); + } catch (error) { + return false; + } + } + const utils = { + getExtendedPublicKey, + randomSecretKey, + isValidSecretKey, + isValidPublicKey, + /** + * Converts ed public key to x public key. Uses formula: + * - ed25519: + * - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)` + * - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))` + * - ed448: + * - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)` + * - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))` + */ + toMontgomery(publicKey) { + const { y } = Point.fromBytes(publicKey); + const size = lengths.publicKey; + const is25519 = size === 32; + if (!is25519 && size !== 57) + throw new Error("only defined for 25519 and 448"); + const u = is25519 ? Fp2.div(_1n4 + y, _1n4 - y) : Fp2.div(y - _1n4, y + _1n4); + return Fp2.toBytes(u); + }, + toMontgomerySecret(secretKey) { + const size = lengths.secretKey; + abytes(secretKey, size); + const hashed = cHash(secretKey.subarray(0, size)); + return adjustScalarBytes2(hashed).subarray(0, size); + } + }; + return Object.freeze({ + keygen: createKeygen(randomSecretKey, getPublicKey), + getPublicKey, + sign, + verify, + utils, + Point, + lengths + }); +} +var _0n4, _1n4, _2n2, _8n2, PrimeEdwardsPoint; +var init_edwards = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/edwards.js"() { + init_utils2(); + init_curve(); + _0n4 = BigInt(0); + _1n4 = BigInt(1); + _2n2 = BigInt(2); + _8n2 = BigInt(8); + PrimeEdwardsPoint = class { + static BASE; + static ZERO; + static Fp; + static Fn; + ep; + constructor(ep) { + this.ep = ep; + } + // Static methods that must be implemented by subclasses + static fromBytes(_bytes) { + notImplemented(); + } + static fromHex(_hex) { + notImplemented(); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + // Common implementations + clearCofactor() { + return this; + } + assertValidity() { + this.ep.assertValidity(); + } + toAffine(invertedZ) { + return this.ep.toAffine(invertedZ); + } + toHex() { + return bytesToHex(this.toBytes()); + } + toString() { + return this.toHex(); + } + isTorsionFree() { + return true; + } + isSmallOrder() { + return false; + } + add(other) { + this.assertSame(other); + return this.init(this.ep.add(other.ep)); + } + subtract(other) { + this.assertSame(other); + return this.init(this.ep.subtract(other.ep)); + } + multiply(scalar) { + return this.init(this.ep.multiply(scalar)); + } + multiplyUnsafe(scalar) { + return this.init(this.ep.multiplyUnsafe(scalar)); + } + double() { + return this.init(this.ep.double()); + } + negate() { + return this.init(this.ep.negate()); + } + precompute(windowSize, isLazy) { + return this.init(this.ep.precompute(windowSize, isLazy)); + } + }; + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/hash-to-curve.js +function i2osp(value, length) { + asafenumber(value); + asafenumber(length); + if (value < 0 || value >= 1 << 8 * length) + throw new Error("invalid I2OSP input: " + value); + const res = Array.from({ length }).fill(0); + for (let i = length - 1; i >= 0; i--) { + res[i] = value & 255; + value >>>= 8; + } + return new Uint8Array(res); +} +function strxor(a, b) { + const arr = new Uint8Array(a.length); + for (let i = 0; i < a.length; i++) { + arr[i] = a[i] ^ b[i]; + } + return arr; +} +function normDST(DST) { + if (!isBytes(DST) && typeof DST !== "string") + throw new Error("DST must be Uint8Array or ascii string"); + return typeof DST === "string" ? asciiToBytes(DST) : DST; +} +function expand_message_xmd(msg, DST, lenInBytes, H) { + abytes(msg); + asafenumber(lenInBytes); + DST = normDST(DST); + if (DST.length > 255) + DST = H(concatBytes(asciiToBytes("H2C-OVERSIZE-DST-"), DST)); + const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H; + const ell = Math.ceil(lenInBytes / b_in_bytes); + if (lenInBytes > 65535 || ell > 255) + throw new Error("expand_message_xmd: invalid lenInBytes"); + const DST_prime = concatBytes(DST, i2osp(DST.length, 1)); + const Z_pad = i2osp(0, r_in_bytes); + const l_i_b_str = i2osp(lenInBytes, 2); + const b = new Array(ell); + const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime)); + b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime)); + for (let i = 1; i <= ell; i++) { + const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime]; + b[i] = H(concatBytes(...args)); + } + const pseudo_random_bytes = concatBytes(...b); + return pseudo_random_bytes.slice(0, lenInBytes); +} +function expand_message_xof(msg, DST, lenInBytes, k, H) { + abytes(msg); + asafenumber(lenInBytes); + DST = normDST(DST); + if (DST.length > 255) { + const dkLen = Math.ceil(2 * k / 8); + DST = H.create({ dkLen }).update(asciiToBytes("H2C-OVERSIZE-DST-")).update(DST).digest(); + } + if (lenInBytes > 65535 || DST.length > 255) + throw new Error("expand_message_xof: invalid lenInBytes"); + return H.create({ dkLen: lenInBytes }).update(msg).update(i2osp(lenInBytes, 2)).update(DST).update(i2osp(DST.length, 1)).digest(); +} +function hash_to_field(msg, count, options) { + validateObject(options, { + p: "bigint", + m: "number", + k: "number", + hash: "function" + }); + const { p, k, m, hash, expand, DST } = options; + asafenumber(hash.outputLen, "valid hash"); + abytes(msg); + asafenumber(count); + const log2p = p.toString(2).length; + const L = Math.ceil((log2p + k) / 8); + const len_in_bytes = count * m * L; + let prb; + if (expand === "xmd") { + prb = expand_message_xmd(msg, DST, len_in_bytes, hash); + } else if (expand === "xof") { + prb = expand_message_xof(msg, DST, len_in_bytes, k, hash); + } else if (expand === "_internal_pass") { + prb = msg; + } else { + throw new Error('expand must be "xmd" or "xof"'); + } + const u = new Array(count); + for (let i = 0; i < count; i++) { + const e = new Array(m); + for (let j = 0; j < m; j++) { + const elm_offset = L * (j + i * m); + const tv = prb.subarray(elm_offset, elm_offset + L); + e[j] = mod2(os2ip(tv), p); + } + u[i] = e; + } + return u; +} +function createHasher2(Point, mapToCurve, defaults) { + if (typeof mapToCurve !== "function") + throw new Error("mapToCurve() must be defined"); + function map(num) { + return Point.fromAffine(mapToCurve(num)); + } + function clear(initial) { + const P = initial.clearCofactor(); + if (P.equals(Point.ZERO)) + return Point.ZERO; + P.assertValidity(); + return P; + } + return { + defaults: Object.freeze(defaults), + Point, + hashToCurve(msg, options) { + const opts = Object.assign({}, defaults, options); + const u = hash_to_field(msg, 2, opts); + const u0 = map(u[0]); + const u1 = map(u[1]); + return clear(u0.add(u1)); + }, + encodeToCurve(msg, options) { + const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {}; + const opts = Object.assign({}, defaults, optsDst, options); + const u = hash_to_field(msg, 1, opts); + const u0 = map(u[0]); + return clear(u0); + }, + /** See {@link H2CHasher} */ + mapToCurve(scalars) { + if (defaults.m === 1) { + if (typeof scalars !== "bigint") + throw new Error("expected bigint (m=1)"); + return clear(map([scalars])); + } + if (!Array.isArray(scalars)) + throw new Error("expected array of bigints"); + for (const i of scalars) + if (typeof i !== "bigint") + throw new Error("expected array of bigints"); + return clear(map(scalars)); + }, + // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393 + // RFC 9380, draft-irtf-cfrg-bbs-signatures-08 + hashToScalar(msg, options) { + const N = Point.Fn.ORDER; + const opts = Object.assign({}, defaults, { p: N, m: 1, DST: _DST_scalar }, options); + return hash_to_field(msg, 1, opts)[0][0]; + } + }; +} +var os2ip, _DST_scalar; +var init_hash_to_curve = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/hash-to-curve.js"() { + init_utils2(); + init_modular(); + os2ip = bytesToNumberBE; + _DST_scalar = asciiToBytes("HashToScalar-"); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/montgomery.js +function validateOpts(curve) { + validateObject(curve, { + adjustScalarBytes: "function", + powPminus2: "function" + }); + return Object.freeze({ ...curve }); +} +function montgomery(curveDef) { + const CURVE = validateOpts(curveDef); + const { P, type, adjustScalarBytes: adjustScalarBytes2, powPminus2, randomBytes: rand } = CURVE; + const is25519 = type === "x25519"; + if (!is25519 && type !== "x448") + throw new Error("invalid type"); + const randomBytes_ = rand || randomBytes; + const montgomeryBits = is25519 ? 255 : 448; + const fieldLen = is25519 ? 32 : 56; + const Gu = is25519 ? BigInt(9) : BigInt(5); + const a24 = is25519 ? BigInt(121665) : BigInt(39081); + const minScalar = is25519 ? _2n3 ** BigInt(254) : _2n3 ** BigInt(447); + const maxAdded = is25519 ? BigInt(8) * _2n3 ** BigInt(251) - _1n5 : BigInt(4) * _2n3 ** BigInt(445) - _1n5; + const maxScalar = minScalar + maxAdded + _1n5; + const modP = (n) => mod2(n, P); + const GuBytes = encodeU(Gu); + function encodeU(u) { + return numberToBytesLE(modP(u), fieldLen); + } + function decodeU(u) { + const _u = copyBytes(abytes(u, fieldLen, "uCoordinate")); + if (is25519) + _u[31] &= 127; + return modP(bytesToNumberLE(_u)); + } + function decodeScalar(scalar) { + return bytesToNumberLE(adjustScalarBytes2(copyBytes(abytes(scalar, fieldLen, "scalar")))); + } + function scalarMult(scalar, u) { + const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar)); + if (pu === _0n5) + throw new Error("invalid private or public key received"); + return encodeU(pu); + } + function scalarMultBase(scalar) { + return scalarMult(scalar, GuBytes); + } + const getPublicKey = scalarMultBase; + const getSharedSecret = scalarMult; + function cswap(swap, x_2, x_3) { + const dummy = modP(swap * (x_2 - x_3)); + x_2 = modP(x_2 - dummy); + x_3 = modP(x_3 + dummy); + return { x_2, x_3 }; + } + function montgomeryLadder(u, scalar) { + aInRange("u", u, _0n5, P); + aInRange("scalar", scalar, minScalar, maxScalar); + const k = scalar; + const x_1 = u; + let x_2 = _1n5; + let z_2 = _0n5; + let x_3 = u; + let z_3 = _1n5; + let swap = _0n5; + for (let t = BigInt(montgomeryBits - 1); t >= _0n5; t--) { + const k_t = k >> t & _1n5; + swap ^= k_t; + ({ x_2, x_3 } = cswap(swap, x_2, x_3)); + ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3)); + swap = k_t; + const A = x_2 + z_2; + const AA = modP(A * A); + const B = x_2 - z_2; + const BB = modP(B * B); + const E = AA - BB; + const C = x_3 + z_3; + const D = x_3 - z_3; + const DA = modP(D * A); + const CB = modP(C * B); + const dacb = DA + CB; + const da_cb = DA - CB; + x_3 = modP(dacb * dacb); + z_3 = modP(x_1 * modP(da_cb * da_cb)); + x_2 = modP(AA * BB); + z_2 = modP(E * (AA + modP(a24 * E))); + } + ({ x_2, x_3 } = cswap(swap, x_2, x_3)); + ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3)); + const z2 = powPminus2(z_2); + return modP(x_2 * z2); + } + const lengths = { + secretKey: fieldLen, + publicKey: fieldLen, + seed: fieldLen + }; + const randomSecretKey = (seed = randomBytes_(fieldLen)) => { + abytes(seed, lengths.seed, "seed"); + return seed; + }; + const utils = { randomSecretKey }; + return Object.freeze({ + keygen: createKeygen(randomSecretKey, getPublicKey), + getSharedSecret, + getPublicKey, + scalarMult, + scalarMultBase, + utils, + GuBytes: GuBytes.slice(), + lengths + }); +} +var _0n5, _1n5, _2n3; +var init_montgomery = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/montgomery.js"() { + init_utils2(); + init_curve(); + init_modular(); + _0n5 = BigInt(0); + _1n5 = BigInt(1); + _2n3 = BigInt(2); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/oprf.js +function createORPF(opts) { + validateObject(opts, { + name: "string", + hash: "function", + hashToScalar: "function", + hashToGroup: "function" + }); + const { name, Point, hash } = opts; + const { Fn: Fn2 } = Point; + const hashToGroup = (msg, ctx) => opts.hashToGroup(msg, { + DST: concatBytes(asciiToBytes("HashToGroup-"), ctx) + }); + const hashToScalarPrefixed = (msg, ctx) => opts.hashToScalar(msg, { DST: concatBytes(_DST_scalar, ctx) }); + const randomScalar = (rng = randomBytes) => { + const t = mapHashToField(rng(getMinHashLength(Fn2.ORDER)), Fn2.ORDER, Fn2.isLE); + return Fn2.isLE ? bytesToNumberLE(t) : bytesToNumberBE(t); + }; + const msm = (points, scalars) => pippenger(Point, points, scalars); + const getCtx = (mode) => concatBytes(asciiToBytes("OPRFV1-"), new Uint8Array([mode]), asciiToBytes("-" + name)); + const ctxOPRF = getCtx(0); + const ctxVOPRF = getCtx(1); + const ctxPOPRF = getCtx(2); + function encode(...args) { + const res = []; + for (const a of args) { + if (typeof a === "number") + res.push(numberToBytesBE(a, 2)); + else if (typeof a === "string") + res.push(asciiToBytes(a)); + else { + abytes(a); + res.push(numberToBytesBE(a.length, 2), a); + } + } + return concatBytes(...res); + } + const hashInput = (...bytes) => hash(encode(...bytes, "Finalize")); + function getTranscripts(B, C, D, ctx) { + const Bm = B.toBytes(); + const seed = hash(encode(Bm, concatBytes(asciiToBytes("Seed-"), ctx))); + const res = []; + for (let i = 0; i < C.length; i++) { + const Ci = C[i].toBytes(); + const Di = D[i].toBytes(); + const di = hashToScalarPrefixed(encode(seed, i, Ci, Di, "Composite"), ctx); + res.push(di); + } + return res; + } + function computeComposites(B, C, D, ctx) { + const T = getTranscripts(B, C, D, ctx); + const M = msm(C, T); + const Z = msm(D, T); + return { M, Z }; + } + function computeCompositesFast(k, B, C, D, ctx) { + const T = getTranscripts(B, C, D, ctx); + const M = msm(C, T); + const Z = M.multiply(k); + return { M, Z }; + } + function challengeTranscript(B, M, Z, t2, t3, ctx) { + const [Bm, a0, a1, a2, a3] = [B, M, Z, t2, t3].map((i) => i.toBytes()); + return hashToScalarPrefixed(encode(Bm, a0, a1, a2, a3, "Challenge"), ctx); + } + function generateProof(ctx, k, B, C, D, rng) { + const { M, Z } = computeCompositesFast(k, B, C, D, ctx); + const r = randomScalar(rng); + const t2 = Point.BASE.multiply(r); + const t3 = M.multiply(r); + const c = challengeTranscript(B, M, Z, t2, t3, ctx); + const s = Fn2.sub(r, Fn2.mul(c, k)); + return concatBytes(...[c, s].map((i) => Fn2.toBytes(i))); + } + function verifyProof(ctx, B, C, D, proof) { + abytes(proof, 2 * Fn2.BYTES); + const { M, Z } = computeComposites(B, C, D, ctx); + const [c, s] = [proof.subarray(0, Fn2.BYTES), proof.subarray(Fn2.BYTES)].map((f) => Fn2.fromBytes(f)); + const t2 = Point.BASE.multiply(s).add(B.multiply(c)); + const t3 = M.multiply(s).add(Z.multiply(c)); + const expectedC = challengeTranscript(B, M, Z, t2, t3, ctx); + if (!Fn2.eql(c, expectedC)) + throw new Error("proof verification failed"); + } + function generateKeyPair() { + const skS = randomScalar(); + const pkS = Point.BASE.multiply(skS); + return { secretKey: Fn2.toBytes(skS), publicKey: pkS.toBytes() }; + } + function deriveKeyPair(ctx, seed, info) { + const dst = concatBytes(asciiToBytes("DeriveKeyPair"), ctx); + const msg = concatBytes(seed, encode(info), Uint8Array.of(0)); + for (let counter = 0; counter <= 255; counter++) { + msg[msg.length - 1] = counter; + const skS = opts.hashToScalar(msg, { DST: dst }); + if (Fn2.is0(skS)) + continue; + return { secretKey: Fn2.toBytes(skS), publicKey: Point.BASE.multiply(skS).toBytes() }; + } + throw new Error("Cannot derive key"); + } + function blind(ctx, input, rng = randomBytes) { + const blind2 = randomScalar(rng); + const inputPoint = hashToGroup(input, ctx); + if (inputPoint.equals(Point.ZERO)) + throw new Error("Input point at infinity"); + const blinded = inputPoint.multiply(blind2); + return { blind: Fn2.toBytes(blind2), blinded: blinded.toBytes() }; + } + function evaluate(ctx, secretKey, input) { + const skS = Fn2.fromBytes(secretKey); + const inputPoint = hashToGroup(input, ctx); + if (inputPoint.equals(Point.ZERO)) + throw new Error("Input point at infinity"); + const unblinded = inputPoint.multiply(skS).toBytes(); + return hashInput(input, unblinded); + } + const oprf = { + generateKeyPair, + deriveKeyPair: (seed, keyInfo) => deriveKeyPair(ctxOPRF, seed, keyInfo), + blind: (input, rng = randomBytes) => blind(ctxOPRF, input, rng), + blindEvaluate(secretKey, blindedPoint) { + const skS = Fn2.fromBytes(secretKey); + const elm = Point.fromBytes(blindedPoint); + return elm.multiply(skS).toBytes(); + }, + finalize(input, blindBytes, evaluatedBytes) { + const blind2 = Fn2.fromBytes(blindBytes); + const evalPoint = Point.fromBytes(evaluatedBytes); + const unblinded = evalPoint.multiply(Fn2.inv(blind2)).toBytes(); + return hashInput(input, unblinded); + }, + evaluate: (secretKey, input) => evaluate(ctxOPRF, secretKey, input) + }; + const voprf = { + generateKeyPair, + deriveKeyPair: (seed, keyInfo) => deriveKeyPair(ctxVOPRF, seed, keyInfo), + blind: (input, rng = randomBytes) => blind(ctxVOPRF, input, rng), + blindEvaluateBatch(secretKey, publicKey, blinded, rng = randomBytes) { + if (!Array.isArray(blinded)) + throw new Error("expected array"); + const skS = Fn2.fromBytes(secretKey); + const pkS = Point.fromBytes(publicKey); + const blindedPoints = blinded.map(Point.fromBytes); + const evaluated = blindedPoints.map((i) => i.multiply(skS)); + const proof = generateProof(ctxVOPRF, skS, pkS, blindedPoints, evaluated, rng); + return { evaluated: evaluated.map((i) => i.toBytes()), proof }; + }, + blindEvaluate(secretKey, publicKey, blinded, rng = randomBytes) { + const res = this.blindEvaluateBatch(secretKey, publicKey, [blinded], rng); + return { evaluated: res.evaluated[0], proof: res.proof }; + }, + finalizeBatch(items, publicKey, proof) { + if (!Array.isArray(items)) + throw new Error("expected array"); + const pkS = Point.fromBytes(publicKey); + const blindedPoints = items.map((i) => i.blinded).map(Point.fromBytes); + const evalPoints = items.map((i) => i.evaluated).map(Point.fromBytes); + verifyProof(ctxVOPRF, pkS, blindedPoints, evalPoints, proof); + return items.map((i) => oprf.finalize(i.input, i.blind, i.evaluated)); + }, + finalize(input, blind2, evaluated, blinded, publicKey, proof) { + return this.finalizeBatch([{ input, blind: blind2, evaluated, blinded }], publicKey, proof)[0]; + }, + evaluate: (secretKey, input) => evaluate(ctxVOPRF, secretKey, input) + }; + const poprf = (info) => { + const m = hashToScalarPrefixed(encode("Info", info), ctxPOPRF); + const T = Point.BASE.multiply(m); + return { + generateKeyPair, + deriveKeyPair: (seed, keyInfo) => deriveKeyPair(ctxPOPRF, seed, keyInfo), + blind(input, publicKey, rng = randomBytes) { + const pkS = Point.fromBytes(publicKey); + const tweakedKey = T.add(pkS); + if (tweakedKey.equals(Point.ZERO)) + throw new Error("tweakedKey point at infinity"); + const blind2 = randomScalar(rng); + const inputPoint = hashToGroup(input, ctxPOPRF); + if (inputPoint.equals(Point.ZERO)) + throw new Error("Input point at infinity"); + const blindedPoint = inputPoint.multiply(blind2); + return { + blind: Fn2.toBytes(blind2), + blinded: blindedPoint.toBytes(), + tweakedKey: tweakedKey.toBytes() + }; + }, + blindEvaluateBatch(secretKey, blinded, rng = randomBytes) { + if (!Array.isArray(blinded)) + throw new Error("expected array"); + const skS = Fn2.fromBytes(secretKey); + const t = Fn2.add(skS, m); + const invT = Fn2.inv(t); + const blindedPoints = blinded.map(Point.fromBytes); + const evalPoints = blindedPoints.map((i) => i.multiply(invT)); + const tweakedKey = Point.BASE.multiply(t); + const proof = generateProof(ctxPOPRF, t, tweakedKey, evalPoints, blindedPoints, rng); + return { evaluated: evalPoints.map((i) => i.toBytes()), proof }; + }, + blindEvaluate(secretKey, blinded, rng = randomBytes) { + const res = this.blindEvaluateBatch(secretKey, [blinded], rng); + return { evaluated: res.evaluated[0], proof: res.proof }; + }, + finalizeBatch(items, proof, tweakedKey) { + if (!Array.isArray(items)) + throw new Error("expected array"); + const evalPoints = items.map((i) => i.evaluated).map(Point.fromBytes); + verifyProof(ctxPOPRF, Point.fromBytes(tweakedKey), evalPoints, items.map((i) => i.blinded).map(Point.fromBytes), proof); + return items.map((i, j) => { + const blind2 = Fn2.fromBytes(i.blind); + const point = evalPoints[j].multiply(Fn2.inv(blind2)).toBytes(); + return hashInput(i.input, info, point); + }); + }, + finalize(input, blind2, evaluated, blinded, proof, tweakedKey) { + return this.finalizeBatch([{ input, blind: blind2, evaluated, blinded }], proof, tweakedKey)[0]; + }, + evaluate(secretKey, input) { + const skS = Fn2.fromBytes(secretKey); + const inputPoint = hashToGroup(input, ctxPOPRF); + if (inputPoint.equals(Point.ZERO)) + throw new Error("Input point at infinity"); + const t = Fn2.add(skS, m); + const invT = Fn2.inv(t); + const unblinded = inputPoint.multiply(invT).toBytes(); + return hashInput(input, info, unblinded); + } + }; + }; + return Object.freeze({ name, oprf, voprf, poprf, __tests: { Fn: Fn2 } }); +} +var init_oprf = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/abstract/oprf.js"() { + init_utils2(); + init_curve(); + init_hash_to_curve(); + init_modular(); + } +}); + +// node_modules/@trezor/device-authenticity/node_modules/@noble/curves/ed25519.js +var ed25519_exports = {}; +__export(ed25519_exports, { + ED25519_TORSION_SUBGROUP: () => ED25519_TORSION_SUBGROUP, + _map_to_curve_elligator2_curve25519: () => _map_to_curve_elligator2_curve25519, + ed25519: () => ed25519, + ed25519_hasher: () => ed25519_hasher, + ed25519ctx: () => ed25519ctx, + ed25519ph: () => ed25519ph, + ristretto255: () => ristretto255, + ristretto255_hasher: () => ristretto255_hasher, + ristretto255_oprf: () => ristretto255_oprf, + x25519: () => x25519 +}); +function ed25519_pow_2_252_3(x) { + const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80); + const P = ed25519_CURVE_p; + const x2 = x * x % P; + const b2 = x2 * x % P; + const b4 = pow2(b2, _2n4, P) * b2 % P; + const b5 = pow2(b4, _1n6, P) * x % P; + const b10 = pow2(b5, _5n2, P) * b5 % P; + const b20 = pow2(b10, _10n, P) * b10 % P; + const b40 = pow2(b20, _20n, P) * b20 % P; + const b80 = pow2(b40, _40n, P) * b40 % P; + const b160 = pow2(b80, _80n, P) * b80 % P; + const b240 = pow2(b160, _80n, P) * b80 % P; + const b250 = pow2(b240, _10n, P) * b10 % P; + const pow_p_5_8 = pow2(b250, _2n4, P) * x % P; + return { pow_p_5_8, b2 }; +} +function adjustScalarBytes(bytes) { + bytes[0] &= 248; + bytes[31] &= 127; + bytes[31] |= 64; + return bytes; +} +function uvRatio(u, v) { + const P = ed25519_CURVE_p; + const v3 = mod2(v * v * v, P); + const v7 = mod2(v3 * v3 * v, P); + const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8; + let x = mod2(u * v3 * pow, P); + const vx2 = mod2(v * x * x, P); + const root1 = x; + const root2 = mod2(x * ED25519_SQRT_M1, P); + const useRoot1 = vx2 === u; + const useRoot2 = vx2 === mod2(-u, P); + const noRoot = vx2 === mod2(-u * ED25519_SQRT_M1, P); + if (useRoot1) + x = root1; + if (useRoot2 || noRoot) + x = root2; + if (isNegativeLE(x, P)) + x = mod2(-x, P); + return { isValid: useRoot1 || useRoot2, value: x }; +} +function ed25519_domain(data, ctx, phflag) { + if (ctx.length > 255) + throw new Error("Context is too big"); + return concatBytes(asciiToBytes("SigEd25519 no Ed25519 collisions"), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data); +} +function ed(opts) { + return eddsa(ed25519_Point, sha512, Object.assign({ adjustScalarBytes }, opts)); +} +function _map_to_curve_elligator2_curve25519(u) { + const ELL2_C4 = (ed25519_CURVE_p - _5n2) / _8n3; + const ELL2_J = BigInt(486662); + let tv1 = Fp.sqr(u); + tv1 = Fp.mul(tv1, _2n4); + let xd = Fp.add(tv1, Fp.ONE); + let x1n = Fp.neg(ELL2_J); + let tv2 = Fp.sqr(xd); + let gxd = Fp.mul(tv2, xd); + let gx1 = Fp.mul(tv1, ELL2_J); + gx1 = Fp.mul(gx1, x1n); + gx1 = Fp.add(gx1, tv2); + gx1 = Fp.mul(gx1, x1n); + let tv3 = Fp.sqr(gxd); + tv2 = Fp.sqr(tv3); + tv3 = Fp.mul(tv3, gxd); + tv3 = Fp.mul(tv3, gx1); + tv2 = Fp.mul(tv2, tv3); + let y11 = Fp.pow(tv2, ELL2_C4); + y11 = Fp.mul(y11, tv3); + let y12 = Fp.mul(y11, ELL2_C3); + tv2 = Fp.sqr(y11); + tv2 = Fp.mul(tv2, gxd); + let e1 = Fp.eql(tv2, gx1); + let y1 = Fp.cmov(y12, y11, e1); + let x2n = Fp.mul(x1n, tv1); + let y21 = Fp.mul(y11, u); + y21 = Fp.mul(y21, ELL2_C2); + let y22 = Fp.mul(y21, ELL2_C3); + let gx2 = Fp.mul(gx1, tv1); + tv2 = Fp.sqr(y21); + tv2 = Fp.mul(tv2, gxd); + let e2 = Fp.eql(tv2, gx2); + let y2 = Fp.cmov(y22, y21, e2); + tv2 = Fp.sqr(y1); + tv2 = Fp.mul(tv2, gxd); + let e3 = Fp.eql(tv2, gx1); + let xn = Fp.cmov(x2n, x1n, e3); + let y = Fp.cmov(y2, y1, e3); + let e4 = Fp.isOdd(y); + y = Fp.cmov(y, Fp.neg(y), e3 !== e4); + return { xMn: xn, xMd: xd, yMn: y, yMd: _1n6 }; +} +function map_to_curve_elligator2_edwards25519(u) { + const { xMn, xMd, yMn, yMd } = _map_to_curve_elligator2_curve25519(u); + let xn = Fp.mul(xMn, yMd); + xn = Fp.mul(xn, ELL2_C1_EDWARDS); + let xd = Fp.mul(xMd, yMn); + let yn = Fp.sub(xMn, xMd); + let yd = Fp.add(xMn, xMd); + let tv1 = Fp.mul(xd, yd); + let e = Fp.eql(tv1, Fp.ZERO); + xn = Fp.cmov(xn, Fp.ZERO, e); + xd = Fp.cmov(xd, Fp.ONE, e); + yn = Fp.cmov(yn, Fp.ONE, e); + yd = Fp.cmov(yd, Fp.ONE, e); + const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); + return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; +} +function calcElligatorRistrettoMap(r0) { + const { d } = ed25519_CURVE; + const P = ed25519_CURVE_p; + const mod3 = (n) => Fp.create(n); + const r = mod3(SQRT_M1 * r0 * r0); + const Ns = mod3((r + _1n6) * ONE_MINUS_D_SQ); + let c = BigInt(-1); + const D = mod3((c - d * r) * mod3(r + d)); + let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); + let s_ = mod3(s * r0); + if (!isNegativeLE(s_, P)) + s_ = mod3(-s_); + if (!Ns_D_is_sq) + s = s_; + if (!Ns_D_is_sq) + c = r; + const Nt = mod3(c * (r - _1n6) * D_MINUS_ONE_SQ - D); + const s2 = s * s; + const W0 = mod3((s + s) * D); + const W1 = mod3(Nt * SQRT_AD_MINUS_ONE); + const W2 = mod3(_1n6 - s2); + const W3 = mod3(_1n6 + s2); + return new ed25519_Point(mod3(W0 * W3), mod3(W2 * W1), mod3(W1 * W3), mod3(W0 * W2)); +} +var _0n6, _1n6, _2n4, _3n2, _5n2, _8n3, ed25519_CURVE_p, ed25519_CURVE, ED25519_SQRT_M1, ed25519_Point, Fp, Fn, ed25519, ed25519ctx, ed25519ph, x25519, ELL2_C1, ELL2_C2, ELL2_C3, ELL2_C1_EDWARDS, ed25519_hasher, SQRT_M1, SQRT_AD_MINUS_ONE, INVSQRT_A_MINUS_D, ONE_MINUS_D_SQ, D_MINUS_ONE_SQ, invertSqrt, MAX_255B, bytes255ToNumberLE, _RistrettoPoint, ristretto255, ristretto255_hasher, ristretto255_oprf, ED25519_TORSION_SUBGROUP; +var init_ed25519 = __esm({ + "node_modules/@trezor/device-authenticity/node_modules/@noble/curves/ed25519.js"() { + init_sha2(); + init_utils(); + init_edwards(); + init_hash_to_curve(); + init_modular(); + init_montgomery(); + init_oprf(); + init_utils2(); + _0n6 = /* @__PURE__ */ BigInt(0); + _1n6 = BigInt(1); + _2n4 = BigInt(2); + _3n2 = /* @__PURE__ */ BigInt(3); + _5n2 = BigInt(5); + _8n3 = BigInt(8); + ed25519_CURVE_p = BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"); + ed25519_CURVE = /* @__PURE__ */ (() => ({ + p: ed25519_CURVE_p, + n: BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"), + h: _8n3, + a: BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"), + d: BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"), + Gx: BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"), + Gy: BigInt("0x6666666666666666666666666666666666666666666666666666666666666658") + }))(); + ED25519_SQRT_M1 = /* @__PURE__ */ BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"); + ed25519_Point = /* @__PURE__ */ edwards(ed25519_CURVE, { uvRatio }); + Fp = /* @__PURE__ */ (() => ed25519_Point.Fp)(); + Fn = /* @__PURE__ */ (() => ed25519_Point.Fn)(); + ed25519 = /* @__PURE__ */ ed({}); + ed25519ctx = /* @__PURE__ */ ed({ domain: ed25519_domain }); + ed25519ph = /* @__PURE__ */ ed({ domain: ed25519_domain, prehash: sha512 }); + x25519 = /* @__PURE__ */ (() => { + const P = ed25519_CURVE_p; + return montgomery({ + P, + type: "x25519", + powPminus2: (x) => { + const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x); + return mod2(pow2(pow_p_5_8, _3n2, P) * b2, P); + }, + adjustScalarBytes + }); + })(); + ELL2_C1 = /* @__PURE__ */ (() => (ed25519_CURVE_p + _3n2) / _8n3)(); + ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n4, ELL2_C1))(); + ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); + ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); + ed25519_hasher = /* @__PURE__ */ (() => createHasher2(ed25519_Point, (scalars) => map_to_curve_elligator2_edwards25519(scalars[0]), { + DST: "edwards25519_XMD:SHA-512_ELL2_RO_", + encodeDST: "edwards25519_XMD:SHA-512_ELL2_NU_", + p: ed25519_CURVE_p, + m: 1, + k: 128, + expand: "xmd", + hash: sha512 + }))(); + SQRT_M1 = ED25519_SQRT_M1; + SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"); + INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"); + ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"); + D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"); + invertSqrt = (number) => uvRatio(_1n6, number); + MAX_255B = /* @__PURE__ */ BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + bytes255ToNumberLE = (bytes) => Fp.create(bytesToNumberLE(bytes) & MAX_255B); + _RistrettoPoint = class __RistrettoPoint extends PrimeEdwardsPoint { + // Do NOT change syntax: the following gymnastics is done, + // because typescript strips comments, which makes bundlers disable tree-shaking. + // prettier-ignore + static BASE = /* @__PURE__ */ (() => new __RistrettoPoint(ed25519_Point.BASE))(); + // prettier-ignore + static ZERO = /* @__PURE__ */ (() => new __RistrettoPoint(ed25519_Point.ZERO))(); + // prettier-ignore + static Fp = /* @__PURE__ */ (() => Fp)(); + // prettier-ignore + static Fn = /* @__PURE__ */ (() => Fn)(); + constructor(ep) { + super(ep); + } + static fromAffine(ap) { + return new __RistrettoPoint(ed25519_Point.fromAffine(ap)); + } + assertSame(other) { + if (!(other instanceof __RistrettoPoint)) + throw new Error("RistrettoPoint expected"); + } + init(ep) { + return new __RistrettoPoint(ep); + } + static fromBytes(bytes) { + abytes(bytes, 32); + const { a, d } = ed25519_CURVE; + const P = ed25519_CURVE_p; + const mod3 = (n) => Fp.create(n); + const s = bytes255ToNumberLE(bytes); + if (!equalBytes(Fp.toBytes(s), bytes) || isNegativeLE(s, P)) + throw new Error("invalid ristretto255 encoding 1"); + const s2 = mod3(s * s); + const u1 = mod3(_1n6 + a * s2); + const u2 = mod3(_1n6 - a * s2); + const u1_2 = mod3(u1 * u1); + const u2_2 = mod3(u2 * u2); + const v = mod3(a * d * u1_2 - u2_2); + const { isValid, value: I } = invertSqrt(mod3(v * u2_2)); + const Dx = mod3(I * u2); + const Dy = mod3(I * Dx * v); + let x = mod3((s + s) * Dx); + if (isNegativeLE(x, P)) + x = mod3(-x); + const y = mod3(u1 * Dy); + const t = mod3(x * y); + if (!isValid || isNegativeLE(t, P) || y === _0n6) + throw new Error("invalid ristretto255 encoding 2"); + return new __RistrettoPoint(new ed25519_Point(x, y, _1n6, t)); + } + /** + * Converts ristretto-encoded string to ristretto point. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode). + * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding + */ + static fromHex(hex) { + return __RistrettoPoint.fromBytes(hexToBytes(hex)); + } + /** + * Encodes ristretto point to Uint8Array. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode). + */ + toBytes() { + let { X, Y, Z, T } = this.ep; + const P = ed25519_CURVE_p; + const mod3 = (n) => Fp.create(n); + const u1 = mod3(mod3(Z + Y) * mod3(Z - Y)); + const u2 = mod3(X * Y); + const u2sq = mod3(u2 * u2); + const { value: invsqrt } = invertSqrt(mod3(u1 * u2sq)); + const D1 = mod3(invsqrt * u1); + const D2 = mod3(invsqrt * u2); + const zInv = mod3(D1 * D2 * T); + let D; + if (isNegativeLE(T * zInv, P)) { + let _x = mod3(Y * SQRT_M1); + let _y = mod3(X * SQRT_M1); + X = _x; + Y = _y; + D = mod3(D1 * INVSQRT_A_MINUS_D); + } else { + D = D2; + } + if (isNegativeLE(X * zInv, P)) + Y = mod3(-Y); + let s = mod3((Z - Y) * D); + if (isNegativeLE(s, P)) + s = mod3(-s); + return Fp.toBytes(s); + } + /** + * Compares two Ristretto points. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals). + */ + equals(other) { + this.assertSame(other); + const { X: X1, Y: Y1 } = this.ep; + const { X: X2, Y: Y2 } = other.ep; + const mod3 = (n) => Fp.create(n); + const one = mod3(X1 * Y2) === mod3(Y1 * X2); + const two = mod3(Y1 * Y2) === mod3(X1 * X2); + return one || two; + } + is0() { + return this.equals(__RistrettoPoint.ZERO); + } + }; + ristretto255 = { Point: _RistrettoPoint }; + ristretto255_hasher = { + Point: _RistrettoPoint, + /** + * Spec: https://www.rfc-editor.org/rfc/rfc9380.html#name-hashing-to-ristretto255. Caveats: + * * There are no test vectors + * * encodeToCurve / mapToCurve is undefined + * * mapToCurve would be `calcElligatorRistrettoMap(scalars[0])`, not ristretto255_map! + * * hashToScalar is undefined too, so we just use OPRF implementation + * * We cannot re-use 'createHasher', because ristretto255_map is different algorithm/RFC + (os2ip -> bytes255ToNumberLE) + * * mapToCurve == calcElligatorRistrettoMap, hashToCurve == ristretto255_map + * * hashToScalar is undefined in RFC9380 for ristretto, we are using version from OPRF here, using bytes255ToNumblerLE will create different result if we use bytes255ToNumberLE as os2ip + * * current version is closest to spec. + */ + hashToCurve(msg, options) { + const DST = options?.DST || "ristretto255_XMD:SHA-512_R255MAP_RO_"; + const xmd = expand_message_xmd(msg, DST, 64, sha512); + return ristretto255_hasher.deriveToCurve(xmd); + }, + hashToScalar(msg, options = { DST: _DST_scalar }) { + const xmd = expand_message_xmd(msg, options.DST, 64, sha512); + return Fn.create(bytesToNumberLE(xmd)); + }, + /** + * HashToCurve-like construction based on RFC 9496 (Element Derivation). + * Converts 64 uniform random bytes into a curve point. + * + * WARNING: This represents an older hash-to-curve construction, preceding the finalization of RFC 9380. + * It was later reused as a component in the newer `hash_to_ristretto255` function defined in RFC 9380. + */ + deriveToCurve(bytes) { + abytes(bytes, 64); + const r1 = bytes255ToNumberLE(bytes.subarray(0, 32)); + const R1 = calcElligatorRistrettoMap(r1); + const r2 = bytes255ToNumberLE(bytes.subarray(32, 64)); + const R2 = calcElligatorRistrettoMap(r2); + return new _RistrettoPoint(R1.add(R2)); + } + }; + ristretto255_oprf = /* @__PURE__ */ (() => createORPF({ + name: "ristretto255-SHA512", + Point: _RistrettoPoint, + hash: sha512, + hashToGroup: ristretto255_hasher.hashToCurve, + hashToScalar: ristretto255_hasher.hashToScalar + }))(); + ED25519_TORSION_SUBGROUP = [ + "0100000000000000000000000000000000000000000000000000000000000000", + "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a", + "0000000000000000000000000000000000000000000000000000000000000080", + "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05", + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85", + "0000000000000000000000000000000000000000000000000000000000000000", + "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa" + ]; + } +}); + +// node_modules/@trezor/crypto-utils/lib/bip39.js +var require_bip39 = __commonJS({ + "node_modules/@trezor/crypto-utils/lib/bip39.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.bip39 = void 0; + exports2.bip39 = ["abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo"]; + } +}); + +// node_modules/@trezor/crypto-utils/lib/getSubtleCrypto.js +var require_getSubtleCrypto = __commonJS({ + "node_modules/@trezor/crypto-utils/lib/getSubtleCrypto.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getSubtleCrypto = void 0; + var getSubtleCrypto = () => { + const subtleCrypto = typeof window !== "undefined" ? window.crypto.subtle : crypto.subtle; + if (!subtleCrypto) { + throw new Error("SubtleCrypto not supported"); + } + return subtleCrypto; + }; + exports2.getSubtleCrypto = getSubtleCrypto; + } +}); + +// node_modules/@trezor/crypto-utils/lib/index.js +var require_lib11 = __commonJS({ + "node_modules/@trezor/crypto-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getSubtleCrypto = exports2.bip39 = void 0; + var bip39_1 = require_bip39(); + Object.defineProperty(exports2, "bip39", { + enumerable: true, + get: function() { + return bip39_1.bip39; + } + }); + var getSubtleCrypto_1 = require_getSubtleCrypto(); + Object.defineProperty(exports2, "getSubtleCrypto", { + enumerable: true, + get: function() { + return getSubtleCrypto_1.getSubtleCrypto; + } + }); + } +}); + +// node_modules/@trezor/device-authenticity/lib/utils.js +var require_utils5 = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getRootPubKeys = exports2.getRootPubKeyBlacklist = exports2.getRandomChallenge = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var crypto2 = tslib_1.__importStar(__require("crypto")); + var getRandomChallenge = () => crypto2.randomBytes(32); + exports2.getRandomChallenge = getRandomChallenge; + var getRootPubKeyBlacklist = ({ + blacklistConfig, + allowDebugKeys + }) => { + const normalBlacklist = blacklistConfig.blacklistedCaPubKeys ?? []; + const debugBlacklist = blacklistConfig.debug?.blacklistedCaPubKeys ?? []; + return allowDebugKeys ? normalBlacklist.concat(debugBlacklist) : normalBlacklist; + }; + exports2.getRootPubKeyBlacklist = getRootPubKeyBlacklist; + var getRootPubKeys = ({ + config: config2, + deviceModel, + allowDebugKeys + }) => { + const modelConfig = config2[deviceModel]; + if (modelConfig === void 0) { + throw new Error(`Pubkeys for ${deviceModel} not found in config`); + } + const rootPubKeysNormalOptiga = modelConfig.rootPubKeysOptiga ?? []; + const rootPubKeysNormalTropic = modelConfig.rootPubKeysTropic ?? []; + const rootPubKeysDebugOptiga = modelConfig.debug?.rootPubKeysOptiga ?? []; + const rootPubKeysDebugTropic = modelConfig.debug?.rootPubKeysTropic ?? []; + const rootPubKeysNormal = [...rootPubKeysNormalOptiga, ...rootPubKeysNormalTropic]; + if (!allowDebugKeys) return rootPubKeysNormal; + return [...rootPubKeysNormal, ...rootPubKeysDebugOptiga, ...rootPubKeysDebugTropic]; + }; + exports2.getRootPubKeys = getRootPubKeys; + } +}); + +// node_modules/@trezor/device-authenticity/lib/x509certificate.js +var require_x509certificate = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/x509certificate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseCertificate = exports2.parseName = void 0; + var parseOidToAlgorithmName = (oid) => { + if (oid === "1.2.840.10045.4.3.2") return "P-256"; + if (oid === "1.3.101.112") return "Ed25519"; + return "unknown"; + }; + var derToAsn1 = (byteArray) => { + let position = 0; + function getTag() { + let tag2 = byteArray[0] & 31; + position += 1; + if (tag2 === 31) { + tag2 = 0; + while (byteArray[position] >= 128) { + tag2 = tag2 * 128 + byteArray[position] - 128; + position += 1; + } + tag2 = tag2 * 128 + byteArray[position] - 128; + position += 1; + } + return tag2; + } + function getLength() { + let length2 = 0; + if (byteArray[position] < 128) { + length2 = byteArray[position]; + position += 1; + } else { + const numberOfDigits = byteArray[position] & 127; + position += 1; + length2 = 0; + for (let i = 0; i < numberOfDigits; i++) { + length2 = length2 * 256 + byteArray[position]; + position += 1; + } + } + return length2; + } + const cls = (byteArray[0] & 192) / 64; + const structured = (byteArray[0] & 32) === 32; + const tag = getTag(); + if (byteArray[position] === 128) { + throw new Error("Unsupported length encoding"); + } + const length = getLength(); + const byteLength = position + length; + const contents = byteArray.subarray(position, byteLength); + const raw = byteArray.subarray(0, byteLength); + return { + cls, + tag, + structured, + byteLength, + contents, + raw + }; + }; + var derToAsn1List = (byteArray) => { + const result = []; + let nextPosition = 0; + while (nextPosition < byteArray.length) { + const nextPiece = derToAsn1(byteArray.subarray(nextPosition)); + result.push(nextPiece); + nextPosition += nextPiece.byteLength; + } + return result; + }; + var derBitStringValue = (byteArray) => ({ + unusedBits: byteArray[0], + bytes: byteArray.subarray(1) + }); + var parseSignatureValue = (asn1) => { + if (asn1.cls !== 0 || asn1.tag !== 3 || asn1.structured) { + throw new Error("Bad signature value. Not a BIT STRING."); + } + return { + asn1, + bits: derBitStringValue(asn1.contents) + }; + }; + var derObjectIdentifierValue = (byteArray) => { + let oid = `${Math.floor(byteArray[0] / 40)}.${byteArray[0] % 40}`; + let position = 1; + while (position < byteArray.length) { + let nextInteger = 0; + while (byteArray[position] >= 128) { + nextInteger = nextInteger * 128 + (byteArray[position] & 127); + position += 1; + } + nextInteger = nextInteger * 128 + byteArray[position]; + position += 1; + oid += `.${nextInteger}`; + } + return oid; + }; + var parseAlgorithmIdentifier = (asn1) => { + if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) { + throw new Error("Bad algorithm identifier. Not a SEQUENCE."); + } + const pieces = derToAsn1List(asn1.contents); + if (pieces.length > 2) { + throw new Error("Bad algorithm identifier. Contains too many child objects."); + } + const encodedAlgorithm = pieces[0]; + if (encodedAlgorithm.cls !== 0 || encodedAlgorithm.tag !== 6 || encodedAlgorithm.structured) { + throw new Error("Bad algorithm identifier. Does not begin with an OBJECT IDENTIFIER."); + } + const algorithmOid = derObjectIdentifierValue(encodedAlgorithm.contents); + const algorithmName = parseOidToAlgorithmName(algorithmOid); + return { + asn1, + algorithmOid, + algorithmName, + parameters: pieces.length === 2 ? { + asn1: pieces[1] + } : null + }; + }; + var parseName = (asn1) => derToAsn1List(asn1.contents).map((item) => { + const attrSet = derToAsn1(item.contents); + return parseAlgorithmIdentifier(attrSet); + }); + exports2.parseName = parseName; + var parseSubjectPublicKeyInfo = (asn1) => { + if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) { + throw new Error("Bad SPKI. Not a SEQUENCE."); + } + const pieces = derToAsn1List(asn1.contents); + if (pieces.length !== 2) { + throw new Error("Bad SubjectPublicKeyInfo. Wrong number of child objects."); + } + return { + asn1, + algorithm: parseAlgorithmIdentifier(pieces[0]), + bits: derBitStringValue(pieces[1].contents) + }; + }; + var parseUtcTime = (time) => { + let offset = 4; + let yearOffset = 0; + if (time.tag === 23) { + offset = 2; + yearOffset = 2e3; + } + const utc = Buffer.from(time.contents).toString(); + const year = yearOffset + Number(utc.substring(0, offset)); + const month = Number(utc.substring(offset, offset + 2)) - 1; + const day = Number(utc.substring(offset + 2, offset + 4)); + const hour = Number(utc.substring(offset + 4, offset + 6)); + const minute = Number(utc.substring(offset + 6, offset + 8)); + const date = /* @__PURE__ */ new Date(); + date.setUTCFullYear(year, month, day); + date.setUTCHours(hour, minute, 0); + return date; + }; + var parseValidity = (asn1) => { + const [from, to] = derToAsn1List(asn1.contents); + return { + from: parseUtcTime(from), + to: parseUtcTime(to) + }; + }; + var parseExtensions = (data) => { + const asn1 = derToAsn1(data.contents); + if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) { + throw new Error("This can't be a Extension. Wrong data type."); + } + const readBoolean = (value) => { + if (!value) return false; + if (value.cls !== 0 || value.tag !== 1 || value.contents.length !== 1 || value.structured) { + throw new Error("This can't be a boolean. Wrong data type."); + } + if (![0, 255].includes(value.contents[0])) { + throw new Error("Invalid boolean value."); + } + return value.contents[0] === 255; + }; + const readBitString = (uint8Array) => { + const buffer = Buffer.from(uint8Array); + const tag = buffer.readUInt8(0); + if (tag !== 3) { + throw new Error("This can't be a bit string. Wrong data type."); + } + const length = buffer.readUInt8(1); + const unusedBits = buffer.readUInt8(2); + const bitStringBytes = buffer.subarray(3, 3 + length - 1); + const bitString = bitStringBytes.reduce((str, byte) => str + byte.toString(2).padStart(8, "0"), ""); + return bitString.slice(0, bitString.length - unusedBits); + }; + const readInteger = (value) => { + if (!value) return void 0; + if (value.cls !== 0 || value.tag !== 2 || value.contents.length !== 1 || value.structured) { + throw new Error("This can't be a integer. Wrong data type."); + } + return Buffer.from(value.contents).readInt8(); + }; + const extensions = []; + derToAsn1List(asn1.contents).forEach((item) => { + const [id, ...pieces] = derToAsn1List(item.contents); + if (id.cls !== 0 || id.tag !== 6 || id.structured) { + throw new Error("Bad extension. Does not begin with an OBJECT IDENTIFIER."); + } + const algorithm = derObjectIdentifierValue(id.contents); + const critical = pieces.length > 1 ? readBoolean(pieces[0]) : false; + const extnValue = pieces.length > 1 ? pieces[1] : pieces[0]; + if (extnValue.cls !== 0 || extnValue.tag !== 4 || extnValue.structured) { + throw new Error("This can't be a octet string. Wrong data type."); + } + if (algorithm === "2.5.29.15") { + extensions.push({ + key: "keyUsage", + critical, + keyCertSign: readBitString(extnValue.contents)[5] + }); + } else if (algorithm === "2.5.29.19") { + const fields = derToAsn1List(derToAsn1(extnValue.contents).contents); + const ca = fields.length > 0 && fields[0].tag === 1 ? fields[0] : void 0; + const len = fields.length > 0 && fields[0].tag === 2 ? fields[0] : fields[1]; + extensions.push({ + key: "basicConstraints", + critical, + cA: readBoolean(ca), + pathLenConstraint: readInteger(len) + }); + } else { + extensions.push({ + key: algorithm, + critical, + ...item + }); + } + }); + return extensions; + }; + var parseTBSCertificate = (asn1) => { + if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) { + throw new Error("This can't be a TBSCertificate. Wrong data type."); + } + const pieces = derToAsn1List(asn1.contents); + if (pieces.length < 7) { + throw new Error("Bad TBS Certificate. There are fewer than the seven required children."); + } + return { + asn1, + version: pieces[0], + serialNumber: pieces[1], + signature: parseAlgorithmIdentifier(pieces[2]), + issuer: pieces[3], + validity: parseValidity(pieces[4]), + subject: (0, exports2.parseName)(pieces[5]), + subjectPublicKeyInfo: parseSubjectPublicKeyInfo(pieces[6]), + extensions: parseExtensions(pieces[7]) + }; + }; + var parseCertificate = (byteArray) => { + const asn1 = derToAsn1(byteArray); + if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) { + throw new Error("This can't be an X.509 certificate. Wrong data type."); + } + const pieces = derToAsn1List(asn1.contents); + if (pieces.length !== 3) { + throw new Error("Certificate contains more than the three specified children."); + } + return { + asn1, + tbsCertificate: parseTBSCertificate(pieces[0]), + signatureAlgorithm: parseAlgorithmIdentifier(pieces[1]), + signatureValue: parseSignatureValue(pieces[2]) + }; + }; + exports2.parseCertificate = parseCertificate; + } +}); + +// node_modules/@trezor/device-authenticity/lib/verifyAuthenticityProof.js +var require_verifyAuthenticityProof = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/verifyAuthenticityProof.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.verifyAuthenticityProof = exports2.verifySignatureP256 = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ed25519_js_1 = (init_ed25519(), __toCommonJS(ed25519_exports)); + var crypto2 = tslib_1.__importStar(__require("crypto")); + var crypto_utils_1 = require_lib11(); + var utils_1 = require_lib(); + var utils_2 = require_utils5(); + var x509certificate_1 = require_x509certificate(); + var verifySignatureP256 = async (rawKey, data, signature) => { + const signer = crypto2.createVerify("sha256"); + signer.update(Buffer.from(data)); + const SubtleCrypto = (0, crypto_utils_1.getSubtleCrypto)(); + try { + const ecPubKey = await SubtleCrypto.importKey("raw", rawKey, { + name: "ECDSA", + namedCurve: "P-256" + }, true, ["verify"]); + const spkiPubKey = await SubtleCrypto.exportKey("spki", ecPubKey); + const key = `-----BEGIN PUBLIC KEY----- +${Buffer.from(spkiPubKey).toString("base64")} +-----END PUBLIC KEY-----`; + return signer.verify({ + key + }, Buffer.from(signature)); + } catch { + return false; + } + }; + exports2.verifySignatureP256 = verifySignatureP256; + var verifySignatureEd25519 = (rawKey, data, signature) => { + try { + return ed25519_js_1.ed25519.verify(signature, data, rawKey); + } catch { + return false; + } + }; + var getVerifyFn = (algorithmName) => { + if (algorithmName === "P-256") return exports2.verifySignatureP256; + if (algorithmName === "Ed25519") return verifySignatureEd25519; + throw new Error(`Unsupported signature algorithm.`); + }; + var validateCaCertExtensions = (cert, pathLen) => { + let hasKeyUsage, hasBasicConstraints = false; + cert.tbsCertificate.extensions.forEach((ext) => { + if (ext.key === "keyUsage") { + if (ext.keyCertSign !== "1") { + throw new Error(`CA keyCertSign not set`); + } + hasKeyUsage = true; + } else if (ext.key === "basicConstraints") { + if (!ext.cA) { + throw new Error(`CA basicConstraints.cA not set`); + } + if (typeof ext.pathLenConstraint != "number") { + throw new Error("CA basicConstraints.pathLenConstraint not set"); + } + if (ext.pathLenConstraint < pathLen) { + throw new Error("Issuer was not permitted to issue certificate"); + } + hasBasicConstraints = true; + } else if (ext.critical) { + throw new Error(`Unknown critical extension ${ext.key} in CA certificate`); + } + }); + if (!hasKeyUsage || !hasBasicConstraints) { + throw new Error(`CA missing extensions keyUsage: ${hasKeyUsage}, basicConstraints: ${hasBasicConstraints}`); + } + }; + var verifyAuthenticityProof = async ({ + challenge, + certificates, + signature, + deviceModel, + allowDebugKeys, + config: config2, + blacklistConfig, + challengePrefix = "AuthenticateDevice:", + bufferChunks = [] + }) => { + const allRootPubKeys = (0, utils_2.getRootPubKeys)({ + config: config2, + deviceModel, + allowDebugKeys + }); + const rootPubKeyBlacklist = (0, utils_2.getRootPubKeyBlacklist)({ + blacklistConfig, + allowDebugKeys + }); + const [deviceCert, caCert] = certificates.map((c, i) => { + const cert = (0, x509certificate_1.parseCertificate)(new Uint8Array(Buffer.from(c, "hex"))); + if (i === 0) { + return cert; + } + validateCaCertExtensions(cert, i - 1); + return cert; + }); + const deviceCertAlgName = deviceCert.signatureAlgorithm.algorithmName; + const caCertAlgName = caCert.signatureAlgorithm.algorithmName; + if (deviceCertAlgName !== caCertAlgName) { + throw new Error("Mismatched signature algorithms in device and CA certificates"); + } + const verifySignatureFn = getVerifyFn(deviceCertAlgName); + const caPubKey = Buffer.from(caCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes).toString("hex"); + const isCertSignedByRootPubkey = await Promise.all(allRootPubKeys.map((rootPubKey) => verifySignatureFn(Buffer.from(rootPubKey, "hex"), caCert.tbsCertificate.asn1.raw, caCert.signatureValue.bits.bytes))); + const rootPubKeyIndex = isCertSignedByRootPubkey.findIndex((valid) => !!valid); + const rootPubKeyMatch = allRootPubKeys[rootPubKeyIndex]; + const caCertValidityFrom = caCert.tbsCertificate.validity.from.getTime(); + if (caCertValidityFrom > (/* @__PURE__ */ new Date()).getTime()) { + throw new Error(`CA validity from ${caCertValidityFrom} can't be in the future!`); + } + if (rootPubKeyMatch === void 0) { + return { + valid: false, + caPubKey, + error: "ROOT_PUBKEY_NOT_FOUND" + }; + } + const [subject] = deviceCert.tbsCertificate.subject; + if (!subject.parameters || subject.algorithmOid !== "2.5.4.3") { + throw new Error("Missing certificate subject"); + } + const subjectValue = Buffer.from(subject.parameters.asn1.contents.subarray(0, 4)).toString(); + if (subjectValue !== deviceModel) { + return { + valid: false, + caPubKey, + rootPubKey: rootPubKeyMatch, + error: "INVALID_DEVICE_MODEL" + }; + } + const isDeviceCertValid = await verifySignatureFn(Buffer.from(caCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes), deviceCert.tbsCertificate.asn1.raw, deviceCert.signatureValue.bits.bytes); + const challengePrefixBuffer = Buffer.from(challengePrefix); + const chunks = bufferChunks && bufferChunks.length > 0 ? [challengePrefixBuffer, ...bufferChunks] : [challengePrefixBuffer, challenge]; + const prefixedBuffer = Buffer.concat(chunks.flatMap((chunk) => [utils_1.bufferUtils.getChunkSize(chunk.byteLength), chunk])); + const isSignatureValid = await verifySignatureFn(Buffer.from(deviceCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes), prefixedBuffer, Buffer.from(signature, "hex")); + if (isDeviceCertValid && isSignatureValid) { + if (rootPubKeyBlacklist.includes(caPubKey)) { + return { + valid: false, + caPubKey, + rootPubKey: rootPubKeyMatch, + error: "CA_PUBKEY_BLACKLISTED" + }; + } + return { + valid: true, + caPubKey, + rootPubKey: rootPubKeyMatch + }; + } + if (!isDeviceCertValid) { + return { + valid: false, + caPubKey, + rootPubKey: rootPubKeyMatch, + error: "INVALID_DEVICE_CERTIFICATE" + }; + } + return { + valid: false, + caPubKey, + rootPubKey: rootPubKeyMatch, + error: "INVALID_DEVICE_SIGNATURE" + }; + }; + exports2.verifyAuthenticityProof = verifyAuthenticityProof; + } +}); + +// node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfig.js +var require_deviceAuthenticityBlacklistConfig = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfig.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.deviceAuthenticityBlacklistConfig = void 0; + exports2.deviceAuthenticityBlacklistConfig = { + version: 1, + blacklistedCaPubKeys: [], + debug: { + blacklistedCaPubKeys: [] + } + }; + } +}); + +// node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfigTypes.js +var require_deviceAuthenticityBlacklistConfigTypes = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfigTypes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceAuthenticityBlacklistConfig = void 0; + var schema_utils_1 = require_lib2(); + var CertPubKeysBlacklist = schema_utils_1.Type.Object({ + blacklistedCaPubKeys: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }); + exports2.DeviceAuthenticityBlacklistConfig = schema_utils_1.Type.Intersect([CertPubKeysBlacklist, schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Number(), + debug: schema_utils_1.Type.Optional(CertPubKeysBlacklist) + })]); + } +}); + +// node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfig.js +var require_deviceAuthenticityConfig = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfig.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.deviceAuthenticityConfig = void 0; + exports2.deviceAuthenticityConfig = { + version: 2, + T2B1: { + rootPubKeysOptiga: ["04ca97480ac0d7b1e6efafe518cd433cec2bf8ab9822d76eafd34363b55d63e60380bff20acc75cde03cffcb50ab6f8ce70c878e37ebc58ff7cca0a83b16b15fa5"], + debug: { + rootPubKeysOptiga: ["047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a"] + } + }, + T3B1: { + rootPubKeysOptiga: ["045b5c3fdd01f3602092834209b86df0ca86a9faf25cac35c73bf6237d66eb21eafcec3706f1ccd5eb4cc7f2fa1751213eccb1c78389afba89a5788ff31ee46a5d"], + debug: { + rootPubKeysOptiga: ["047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a"] + } + }, + T3T1: { + rootPubKeysOptiga: ["041854b27fb1d9f65abb66828e78c9dc0ca301e66081ab0c6a4d104f9df1cd0ad5a7c75f77a8c092f55cf825d2abaf734f934c9394d5e75f75a5a06a5ee9be93ae"], + debug: { + rootPubKeysOptiga: ["04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161dbe8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959"] + } + }, + T3W1: { + rootPubKeysOptiga: ["040dde0d3e0d4da593fac6fd02a461d0e7eef238aca55c7c50b4e9ec37f3873303b6429ef1c9b78b4411a7dcbbc5dde5225979c1c2da3b073e82b1ed3f5f9825bb"], + rootPubKeysTropic: ["59237acd17134061d655b3f8d624573ca06ce8d862f38ba4e05140ce1d3d609d"], + debug: { + rootPubKeysOptiga: ["04521192e173a9da4e3023f747d836563725372681eba3079c56ff11b2fc137ab189eb4155f371127651b5594f8c332fc1e9c0f3b80d4212822668b63189706578"], + rootPubKeysTropic: [] + } + } + }; + } +}); + +// node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfigTypes.js +var require_deviceAuthenticityConfigTypes = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfigTypes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceAuthenticityConfig = void 0; + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var CertPubKeys = schema_utils_1.Type.Object({ + rootPubKeysOptiga: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + rootPubKeysTropic: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String())) + }); + var ModelsWithKeys = schema_utils_1.Type.Exclude(schema_utils_1.Type.KeyOfEnum(protobuf_1.MessagesSchema.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.Literal("T1B1"), schema_utils_1.Type.Literal("T2T1"), schema_utils_1.Type.Literal("UNKNOWN")])); + var ModelsWithoutKeys = schema_utils_1.Type.Extract(schema_utils_1.Type.KeyOfEnum(protobuf_1.MessagesSchema.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.Literal("T1B1"), schema_utils_1.Type.Literal("T2T1"), schema_utils_1.Type.Literal("UNKNOWN")])); + var ModelPubKeys = schema_utils_1.Type.Intersect([schema_utils_1.Type.Record(ModelsWithKeys, schema_utils_1.Type.Intersect([CertPubKeys, schema_utils_1.Type.Object({ + debug: schema_utils_1.Type.Optional(CertPubKeys) + })])), schema_utils_1.Type.Partial(schema_utils_1.Type.Record(ModelsWithoutKeys, schema_utils_1.Type.Undefined()))]); + exports2.DeviceAuthenticityConfig = schema_utils_1.Type.Intersect([ModelPubKeys, schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Number() + })]); + } +}); + +// node_modules/@trezor/device-authenticity/lib/index.js +var require_lib12 = __commonJS({ + "node_modules/@trezor/device-authenticity/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceAuthenticityConfig = exports2.deviceAuthenticityConfig = exports2.DeviceAuthenticityBlacklistConfig = exports2.deviceAuthenticityBlacklistConfig = exports2.getRandomChallenge = exports2.parseCertificate = exports2.parseName = exports2.verifySignatureP256 = exports2.verifyAuthenticityProof = void 0; + var verifyAuthenticityProof_1 = require_verifyAuthenticityProof(); + Object.defineProperty(exports2, "verifyAuthenticityProof", { + enumerable: true, + get: function() { + return verifyAuthenticityProof_1.verifyAuthenticityProof; + } + }); + Object.defineProperty(exports2, "verifySignatureP256", { + enumerable: true, + get: function() { + return verifyAuthenticityProof_1.verifySignatureP256; + } + }); + var x509certificate_1 = require_x509certificate(); + Object.defineProperty(exports2, "parseName", { + enumerable: true, + get: function() { + return x509certificate_1.parseName; + } + }); + Object.defineProperty(exports2, "parseCertificate", { + enumerable: true, + get: function() { + return x509certificate_1.parseCertificate; + } + }); + var utils_1 = require_utils5(); + Object.defineProperty(exports2, "getRandomChallenge", { + enumerable: true, + get: function() { + return utils_1.getRandomChallenge; + } + }); + var deviceAuthenticityBlacklistConfig_1 = require_deviceAuthenticityBlacklistConfig(); + Object.defineProperty(exports2, "deviceAuthenticityBlacklistConfig", { + enumerable: true, + get: function() { + return deviceAuthenticityBlacklistConfig_1.deviceAuthenticityBlacklistConfig; + } + }); + var deviceAuthenticityBlacklistConfigTypes_1 = require_deviceAuthenticityBlacklistConfigTypes(); + Object.defineProperty(exports2, "DeviceAuthenticityBlacklistConfig", { + enumerable: true, + get: function() { + return deviceAuthenticityBlacklistConfigTypes_1.DeviceAuthenticityBlacklistConfig; + } + }); + var deviceAuthenticityConfig_1 = require_deviceAuthenticityConfig(); + Object.defineProperty(exports2, "deviceAuthenticityConfig", { + enumerable: true, + get: function() { + return deviceAuthenticityConfig_1.deviceAuthenticityConfig; + } + }); + var deviceAuthenticityConfigTypes_1 = require_deviceAuthenticityConfigTypes(); + Object.defineProperty(exports2, "DeviceAuthenticityConfig", { + enumerable: true, + get: function() { + return deviceAuthenticityConfigTypes_1.DeviceAuthenticityConfig; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/utils/pathUtils.js +var require_pathUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/pathUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getLabel = exports2.fixPath = exports2.getIndexFromPath = exports2.getPathFromIndex = exports2.getSerializedPath = exports2.validatePath = exports2.getOutputScriptType = exports2.getScriptType = exports2.getAccountType = exports2.isTaprootPath = exports2.isBech32Path = exports2.isSegwitPath = exports2.getHDPath = exports2.getSlip44ByPath = exports2.fromHardened = exports2.toHardened = exports2.HD_HARDENED = void 0; + var constants_1 = require_constants(); + exports2.HD_HARDENED = 2147483648; + var toHardened = (n) => (n | exports2.HD_HARDENED) >>> 0; + exports2.toHardened = toHardened; + var fromHardened = (n) => (n & ~exports2.HD_HARDENED) >>> 0; + exports2.fromHardened = fromHardened; + var getSlip44ByPath = (path2) => (0, exports2.fromHardened)(path2[1]); + exports2.getSlip44ByPath = getSlip44ByPath; + var PATH_NOT_VALID = constants_1.ERRORS.TypedError("Method_InvalidParameter", "Not a valid path"); + var PATH_NEGATIVE_VALUES = constants_1.ERRORS.TypedError("Method_InvalidParameter", "Path cannot contain negative values"); + var getHDPath = (path2) => { + const parts = path2.toLowerCase().split("/"); + if (parts[0] !== "m") throw PATH_NOT_VALID; + return parts.filter((p) => p !== "m" && p !== "").map((p) => { + let hardened = false; + if (p.endsWith("'")) { + hardened = true; + p = p.substring(0, p.length - 1); + } + let n = parseInt(p, 10); + if (Number.isNaN(n)) { + throw PATH_NOT_VALID; + } else if (n < 0) { + throw PATH_NEGATIVE_VALUES; + } + if (hardened) { + n = (0, exports2.toHardened)(n); + } + return n; + }); + }; + exports2.getHDPath = getHDPath; + var isSegwitPath = (path2) => Array.isArray(path2) && path2[0] === (0, exports2.toHardened)(49); + exports2.isSegwitPath = isSegwitPath; + var isBech32Path = (path2) => Array.isArray(path2) && path2[0] === (0, exports2.toHardened)(84); + exports2.isBech32Path = isBech32Path; + var isTaprootPath = (path2) => Array.isArray(path2) && (path2[0] === (0, exports2.toHardened)(86) || path2[0] === (0, exports2.toHardened)(10025)); + exports2.isTaprootPath = isTaprootPath; + var getAccountType = (path2) => { + if ((0, exports2.isTaprootPath)(path2)) return "p2tr"; + if ((0, exports2.isBech32Path)(path2)) return "p2wpkh"; + if ((0, exports2.isSegwitPath)(path2)) return "p2sh"; + return "p2pkh"; + }; + exports2.getAccountType = getAccountType; + var getScriptType = (path2) => { + if (!Array.isArray(path2) || path2.length < 1) return void 0; + const p1 = (0, exports2.fromHardened)(path2[0]); + switch (p1) { + case 44: + return "SPENDADDRESS"; + case 48: { + if (path2.length < 4) return void 0; + const p3 = (0, exports2.fromHardened)(path2[3]); + switch (p3) { + case 0: + return "SPENDMULTISIG"; + case 1: + return "SPENDP2SHWITNESS"; + case 2: + return "SPENDWITNESS"; + default: + return void 0; + } + } + case 49: + return "SPENDP2SHWITNESS"; + case 84: + return "SPENDWITNESS"; + case 86: + case 10025: + return "SPENDTAPROOT"; + default: + return void 0; + } + }; + exports2.getScriptType = getScriptType; + var getOutputScriptType = (path2) => { + if (!Array.isArray(path2) || path2.length < 1) return void 0; + const p = (0, exports2.fromHardened)(path2[0]); + switch (p) { + case 44: + return "PAYTOADDRESS"; + case 48: { + if (path2.length < 4) return void 0; + const p3 = (0, exports2.fromHardened)(path2[3]); + switch (p3) { + case 0: + return "PAYTOMULTISIG"; + case 1: + return "PAYTOP2SHWITNESS"; + case 2: + return "PAYTOWITNESS"; + default: + return void 0; + } + } + case 49: + return "PAYTOP2SHWITNESS"; + case 84: + return "PAYTOWITNESS"; + case 86: + case 10025: + return "PAYTOTAPROOT"; + default: + return void 0; + } + }; + exports2.getOutputScriptType = getOutputScriptType; + var validatePath = (path2, length = 0, base = false) => { + let valid; + if (typeof path2 === "string") { + valid = (0, exports2.getHDPath)(path2); + } else if (Array.isArray(path2)) { + valid = path2.map((p) => { + const n = parseInt(p, 10); + if (Number.isNaN(n)) { + throw PATH_NOT_VALID; + } else if (n < 0) { + throw PATH_NEGATIVE_VALUES; + } + return n; + }); + } + if (!valid) throw PATH_NOT_VALID; + if (length > 0 && valid.length < length) throw PATH_NOT_VALID; + return base ? valid.splice(0, 3) : valid; + }; + exports2.validatePath = validatePath; + var getSerializedPath = (path2) => `m/${path2.map((i) => { + const s = (i & ~exports2.HD_HARDENED).toString(); + if (i & exports2.HD_HARDENED) { + return `${s}'`; + } + return s; + }).join("/")}`; + exports2.getSerializedPath = getSerializedPath; + var getPathFromIndex = (bip44purpose, bip44cointype, index) => [(0, exports2.toHardened)(bip44purpose), (0, exports2.toHardened)(bip44cointype), (0, exports2.toHardened)(index)]; + exports2.getPathFromIndex = getPathFromIndex; + var getIndexFromPath = (path2) => { + if (path2.length < 3) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", `getIndexFromPath: invalid path length ${path2.toString()}`); + } + return (0, exports2.fromHardened)(path2[2]); + }; + exports2.getIndexFromPath = getIndexFromPath; + var fixPath = (utxo) => { + if (utxo.address_n && Array.isArray(utxo.address_n)) { + utxo.address_n = utxo.address_n.map((i) => i >>> 0); + } + if (utxo.address_n && typeof utxo.address_n === "string") { + utxo.address_n = (0, exports2.getHDPath)(utxo.address_n); + } + return utxo; + }; + exports2.fixPath = fixPath; + var getLabel = (label, coinInfo) => { + if (coinInfo) { + return label.replace("#NETWORK", coinInfo.label); + } + return label.replace("#NETWORK", ""); + }; + exports2.getLabel = getLabel; + } +}); + +// node_modules/@trezor/connect/lib/api/common/paramsValidator.js +var require_paramsValidator = __commonJS({ + "node_modules/@trezor/connect/lib/api/common/paramsValidator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getFirmwareRange = exports2.validateCoinPath = void 0; + exports2.validateParams = validateParams; + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var config_1 = require_config(); + var pathUtils_1 = require_pathUtils(); + var invalidParameter = (message) => constants_1.ERRORS.TypedError("Method_InvalidParameter", message); + function validateParams(params, schema) { + schema.forEach((field) => { + const value = params[field.name]; + if (field.required && value == null) { + throw invalidParameter(`Parameter "${field.name}" is missing.`); + } + if (!field.type || value == null) return; + const { + name, + type + } = field; + if (Array.isArray(type)) { + const p = {}; + p[name] = value; + const success = type.reduce((count, t) => { + try { + validateParams(p, [{ + name: field.name, + type: t + }]); + return count + 1; + } catch { + return count; + } + }, 0); + if (!success) { + throw invalidParameter(`Parameter "${name}" has invalid type. Union of "${type.join("|")}" expected.`); + } + return; + } + if (type === "array") { + if (!Array.isArray(value)) { + throw invalidParameter(`Parameter "${name}" has invalid type. "${type}" expected.`); + } + if (!field.allowEmpty && value.length < 1) { + throw invalidParameter(`Parameter "${name}" is empty.`); + } + } else if (type === "uint") { + if (typeof value !== "string" && typeof value !== "number") { + throw invalidParameter(`Parameter "${name}" has invalid type. "string|number" expected.`); + } + if (typeof value === "number" && !Number.isSafeInteger(value) || !/^(?:[1-9]\d*|\d)$/.test(value.toString().replace(/^-/, field.allowNegative ? "" : "-"))) { + throw invalidParameter(`Parameter "${name}" has invalid value "${value}". Integer representation expected.`); + } + } else if (type === "array-buffer") { + if (!(value instanceof ArrayBuffer)) { + throw invalidParameter(`Parameter "${name}" has invalid type. "ArrayBuffer" expected.`); + } + } else if (typeof value !== type) { + throw invalidParameter(`Parameter "${name}" has invalid type. "${type}" expected.`); + } + }); + return params; + } + var validateCoinPath = (path2, coinInfo) => { + if (coinInfo && coinInfo.slip44 !== (0, pathUtils_1.fromHardened)(path2[1])) { + throw invalidParameter('Parameters "path" and "coin" do not match.'); + } + }; + exports2.validateCoinPath = validateCoinPath; + var getFirmwareRange = (method, coinInfo, currentRange) => { + const range = JSON.parse(JSON.stringify(currentRange)); + const models = (0, utils_1.typedObjectKeys)(range); + if (coinInfo) { + models.forEach((model) => { + const supportVersion = coinInfo.support ? coinInfo.support[model] : false; + if (supportVersion === false) { + range[model].min = "0"; + } else if (range[model].min !== "0" && typeof supportVersion === "string" && utils_1.versionUtils.isNewer(supportVersion, range[model].min)) { + range[model].min = supportVersion; + } + }); + } + const coinType = coinInfo?.type; + const shortcut = coinInfo?.shortcut.toLowerCase(); + const configRules = config_1.config.supportedFirmware.filter((rule) => { + if (rule.methods) { + return rule.methods.includes(method); + } + if (rule.capabilities) { + return rule.capabilities.includes(method); + } + return true; + }).filter((rule) => { + if (rule.coinType) { + return rule.coinType === coinType; + } + if (rule.coin) { + return (typeof rule.coin === "string" ? [rule.coin] : rule.coin).includes(shortcut); + } + return rule.methods || rule.capabilities; + }); + configRules.forEach((rule) => { + if (rule.min) { + models.forEach((model) => { + const modelMin = rule.min[model]; + if (modelMin) { + if (modelMin === "0" || range[model].min === "0" || !utils_1.versionUtils.isNewerOrEqual(range[model].min, modelMin)) { + range[model].min = modelMin; + } + } + }); + } + if (rule.max) { + models.forEach((model) => { + const modelMax = rule.max[model]; + if (modelMax) { + if (modelMax === "0" || range[model].max === "0" || !utils_1.versionUtils.isNewerOrEqual(range[model].max, modelMax)) { + range[model].max = modelMax; + } + } + }); + } + }); + return range; + }; + exports2.getFirmwareRange = getFirmwareRange; + } +}); + +// node_modules/@trezor/connect/lib/types/api/authenticateDevice.js +var require_authenticateDevice = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/authenticateDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AuthenticateDeviceParams = void 0; + var device_authenticity_1 = require_lib12(); + var schema_utils_1 = require_lib2(); + exports2.AuthenticateDeviceParams = schema_utils_1.Type.Object({ + config: schema_utils_1.Type.Optional(device_authenticity_1.DeviceAuthenticityConfig), + blacklistConfig: schema_utils_1.Type.Optional(device_authenticity_1.DeviceAuthenticityBlacklistConfig), + allowDebugKeys: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/authenticateDevice.js +var require_authenticateDevice2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/authenticateDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var device_authenticity_1 = require_lib12(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var authenticateDevice_1 = require_authenticateDevice(); + var AuthenticateDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useEmptyPassphrase = true; + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useDeviceState = false; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(authenticateDevice_1.AuthenticateDeviceParams, payload); + this.params = { + config: payload.config, + blacklistConfig: payload.blacklistConfig, + allowDebugKeys: payload.allowDebugKeys + }; + } + async run() { + const challenge = (0, device_authenticity_1.getRandomChallenge)(); + const { + message + } = await this.device.getCommands().typedCall("AuthenticateDevice", "AuthenticityProof", { + challenge: challenge.toString("hex") + }); + const config2 = this.params.config || device_authenticity_1.deviceAuthenticityConfig; + const blacklistConfig = this.params.blacklistConfig || device_authenticity_1.deviceAuthenticityBlacklistConfig; + const commonParams = { + challenge, + deviceModel: this.device.features.internal_model, + allowDebugKeys: this.params.allowDebugKeys, + config: config2, + blacklistConfig + }; + const getOptigaResult = async () => { + const { + optiga_signature: signature, + optiga_certificates: certificates + } = message; + const isAvailable = signature !== void 0 && certificates.length > 0; + if (isAvailable) { + return await (0, device_authenticity_1.verifyAuthenticityProof)({ + ...commonParams, + certificates, + signature + }); + } + return { + valid: false, + error: "RESPONSE_PAYLOAD_MISSING" + }; + }; + const getTropicResult = async () => { + const { + tropic_signature: signature, + tropic_certificates: certificates + } = message; + const isAvailable = signature !== void 0 && certificates.length > 0; + const isRequired = !this.device.unavailableCapabilities["tropicDeviceAuthentication"]; + if (isAvailable) { + return await (0, device_authenticity_1.verifyAuthenticityProof)({ + ...commonParams, + certificates, + signature + }); + } + if (isRequired) { + return { + valid: false, + error: "RESPONSE_PAYLOAD_MISSING" + }; + } + return null; + }; + const optigaResult = await getOptigaResult(); + const tropicResult = await getTropicResult(); + return { + optigaResult, + tropicResult + }; + } + }; + exports2.default = AuthenticateDevice; + } +}); + +// node_modules/@trezor/connect/lib/data/defaultFeeLevels.js +var require_defaultFeeLevels = __commonJS({ + "node_modules/@trezor/connect/lib/data/defaultFeeLevels.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getMiscFeeLevels = exports2.getEthereumFeeLevels = exports2.getBitcoinFeeLevels = exports2.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = void 0; + var utils_1 = require_lib(); + var BLOCKS_FOR_FEE_LEVEL = { + btc: { + high: 1, + normal: 3, + economy: 6, + low: 36 + } + }; + var DEFAULT_BLOCK_FOR_FEE_LEVEL = 1; + var getDefaultBlocksForFeeLevel = (shortcut, label) => BLOCKS_FOR_FEE_LEVEL[shortcut] && BLOCKS_FOR_FEE_LEVEL[shortcut][label] ? BLOCKS_FOR_FEE_LEVEL[shortcut][label] : DEFAULT_BLOCK_FOR_FEE_LEVEL; + exports2.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = "1"; + var EVM_GAS_PRICE_PER_CHAIN_IN_GWEI = { + eth: { + min: 0.1, + max: 1e4, + defaultGas: 10, + minPriorityFee: 0 + }, + pol: { + min: 0.1, + max: 1e7, + defaultGas: 200, + minPriorityFee: 30 + }, + bsc: { + min: 0.1, + max: 1e5, + defaultGas: 1, + minPriorityFee: 0 + }, + base: { + min: 1e-7, + max: 1e3, + defaultGas: 0.01, + minPriorityFee: 0 + }, + arb: { + min: 1e-3, + max: 1e3, + defaultGas: 0.01, + minPriorityFee: 0 + }, + op: { + min: 1e-9, + max: 1e3, + defaultGas: 0.01, + minPriorityFee: 0 + } + }; + var getEvmChainGweiGasPrice = (chain) => EVM_GAS_PRICE_PER_CHAIN_IN_GWEI[chain] ?? { + min: 1e-9, + max: 1e4, + defaultGas: 1, + minPriorityFee: 0 + }; + var getBitcoinFeeLevels = (coin) => { + const defaultFees = coin.default_fee_b; + const shortcut = coin.shortcut.toLowerCase(); + const keys = (0, utils_1.typedObjectKeys)(defaultFees); + const levels = keys.sort((levelA, levelB) => defaultFees[levelB] - defaultFees[levelA]).map((level) => { + const label = level.toLowerCase(); + return { + label, + feePerUnit: defaultFees[level].toString(), + blocks: getDefaultBlocksForFeeLevel(shortcut, label) + }; + }); + const minFee = coin.shortcut === "BTC" ? coin.minfee_kb / 1e3 : Math.round(coin.minfee_kb / 1e3); + return { + blockTime: Math.max(1, Math.round(coin.blocktime_seconds / 60)), + dustLimit: coin.dust_limit, + maxFee: Math.round(coin.maxfee_kb / 1e3), + minFee, + minPriorityFee: -1, + defaultFees: levels + }; + }; + exports2.getBitcoinFeeLevels = getBitcoinFeeLevels; + var getEthereumFeeLevels = (network) => { + const { + min, + max, + defaultGas, + minPriorityFee + } = getEvmChainGweiGasPrice(network.chain); + return { + blockTime: Math.max(0.1, Math.round(network.blocktime_seconds)), + defaultFees: [{ + label: "normal", + feePerUnit: new utils_1.BigNumber(defaultGas).multipliedBy("1e+9").toString(), + feeLimit: "21000", + blocks: -1 + }], + minFee: min, + maxFee: max, + minPriorityFee, + dustLimit: -1 + }; + }; + exports2.getEthereumFeeLevels = getEthereumFeeLevels; + var RIPPLE_FEE_INFO = { + blockTime: -1, + defaultFees: [{ + label: "normal", + feePerUnit: "12", + blocks: -1 + }], + minFee: 10, + maxFee: 1e4, + minPriorityFee: -1, + dustLimit: -1 + }; + var CARDANO_FEE_INFO = { + blockTime: -1, + defaultFees: [{ + label: "normal", + feePerUnit: "44", + blocks: -1 + }], + minFee: 44, + maxFee: 16384 * 44 + 155381, + minPriorityFee: -1, + dustLimit: -1 + }; + var SOLANA_FEE_INFO = { + blockTime: -1, + defaultFees: [{ + label: "normal", + feePerUnit: "100000", + feeLimit: "200000", + feePerTx: "25000", + blocks: -1 + }], + minFee: 5e3, + maxFee: 1e9, + minPriorityFee: -1, + dustLimit: -1 + }; + var STELLAR_FEE_INFO = { + blockTime: -1, + defaultFees: [{ + label: "normal", + feePerUnit: "100", + blocks: -1 + }], + minFee: 100, + maxFee: 1e7, + minPriorityFee: -1, + dustLimit: -1 + }; + var MISC_FEE_LEVELS = { + xrp: RIPPLE_FEE_INFO, + txrp: RIPPLE_FEE_INFO, + ada: CARDANO_FEE_INFO, + tada: CARDANO_FEE_INFO, + sol: SOLANA_FEE_INFO, + dsol: SOLANA_FEE_INFO, + xlm: STELLAR_FEE_INFO, + txlm: STELLAR_FEE_INFO + }; + var getMiscFeeLevels = (data) => { + const shortcut = data.shortcut.toLowerCase(); + return MISC_FEE_LEVELS[shortcut] || { + blockTime: -1, + minFee: -1, + maxFee: -1, + defaultFees: [{ + label: "normal", + feePerUnit: "-1", + blocks: -1 + }], + minPriorityFee: -1, + dustLimit: -1 + }; + }; + exports2.getMiscFeeLevels = getMiscFeeLevels; + } +}); + +// node_modules/@trezor/connect/lib/data/coinInfo.js +var require_coinInfo = __commonJS({ + "node_modules/@trezor/connect/lib/data/coinInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getAllNetworks = exports2.getUniqueNetworks = exports2.parseCoinsJson = exports2.ethereumNetworkInfoBase = exports2.getCoinName = exports2.getCoinInfo = exports2.fixCoinInfoNetwork = exports2.getBech32Network = exports2.getSegwitNetwork = exports2.getMiscNetwork = exports2.getEthereumNetwork = exports2.getBitcoinNetwork = void 0; + var utils_1 = require_lib(); + var defaultFeeLevels_1 = require_defaultFeeLevels(); + var pathUtils_1 = require_pathUtils(); + var bitcoinNetworks = []; + var ethereumNetworks = []; + var miscNetworks = []; + var getBitcoinNetwork = (pathOrName) => { + if (typeof pathOrName === "string") { + const name = pathOrName.toLowerCase(); + return bitcoinNetworks.find((n) => n.name.toLowerCase() === name || n.shortcut.toLowerCase() === name || n.label.toLowerCase() === name); + } + const slip44 = (0, pathUtils_1.fromHardened)(pathOrName[1]); + return bitcoinNetworks.find((n) => n.slip44 === slip44); + }; + exports2.getBitcoinNetwork = getBitcoinNetwork; + var getEthereumNetwork = (pathOrNetworkSymbol) => { + if (typeof pathOrNetworkSymbol === "string") { + const networkSymbol = pathOrNetworkSymbol.toLowerCase(); + return ethereumNetworks.find((network) => network.shortcut.toLowerCase() === networkSymbol); + } + const slip44 = (0, pathUtils_1.fromHardened)(pathOrNetworkSymbol[1]); + return ethereumNetworks.find((n) => n.slip44 === slip44); + }; + exports2.getEthereumNetwork = getEthereumNetwork; + var getMiscNetwork = (pathOrName) => { + if (typeof pathOrName === "string") { + const name = pathOrName.toLowerCase(); + return miscNetworks.find((n) => n.name.toLowerCase() === name || n.shortcut.toLowerCase() === name); + } + const slip44 = (0, pathUtils_1.fromHardened)(pathOrName[1]); + return miscNetworks.find((n) => n.slip44 === slip44); + }; + exports2.getMiscNetwork = getMiscNetwork; + var getSegwitNetwork = (coin) => { + if (coin.segwit && typeof coin.xPubMagicSegwit === "number") { + return { + ...coin.network, + bip32: { + ...coin.network.bip32, + public: coin.xPubMagicSegwit + } + }; + } + return null; + }; + exports2.getSegwitNetwork = getSegwitNetwork; + var getBech32Network = (coin) => { + if (coin.segwit && typeof coin.xPubMagicSegwitNative === "number") { + return { + ...coin.network, + bip32: { + ...coin.network.bip32, + public: coin.xPubMagicSegwitNative + } + }; + } + return null; + }; + exports2.getBech32Network = getBech32Network; + var fixCoinInfoNetwork = (ci, path2) => { + const coinInfo = (0, utils_1.cloneObject)(ci); + if (path2[0] === (0, pathUtils_1.toHardened)(84)) { + const bech32Network = (0, exports2.getBech32Network)(coinInfo); + if (bech32Network) { + coinInfo.network = bech32Network; + } + } else if (path2[0] === (0, pathUtils_1.toHardened)(49)) { + const segwitNetwork = (0, exports2.getSegwitNetwork)(coinInfo); + if (segwitNetwork) { + coinInfo.network = segwitNetwork; + } + } else { + coinInfo.segwit = false; + } + return coinInfo; + }; + exports2.fixCoinInfoNetwork = fixCoinInfoNetwork; + var getCoinInfo = (currency) => (0, exports2.getBitcoinNetwork)(currency) || (0, exports2.getEthereumNetwork)(currency) || (0, exports2.getMiscNetwork)(currency); + exports2.getCoinInfo = getCoinInfo; + var getCoinName = (path2) => { + const slip44 = (0, pathUtils_1.fromHardened)(path2[1]); + const network = ethereumNetworks.find((n) => n.slip44 === slip44); + return network ? network.name : "Unknown coin"; + }; + exports2.getCoinName = getCoinName; + var BITCOIN_SHORTCUTS = ["BTC", "TEST", "REGTEST"]; + var parseBitcoinNetworksJson = (json) => { + Object.keys(json).forEach((key) => { + const coin = json[key]; + const shortcut = coin.coin_shortcut; + const isBitcoin = BITCOIN_SHORTCUTS.includes(shortcut); + const network = { + messagePrefix: coin.signed_message_header, + bech32: coin.bech32_prefix, + bip32: { + public: coin.xpub_magic, + private: coin.xprv_magic + }, + pubKeyHash: coin.address_type, + scriptHash: coin.address_type_p2sh, + forkId: coin.fork_id, + wif: 0 + }; + bitcoinNetworks.push({ + type: "bitcoin", + blockchainLink: coin.blockchain_link, + cashAddrPrefix: coin.cashaddr_prefix, + label: coin.coin_label, + name: coin.coin_name, + shortcut, + curveName: coin.curve_name, + forceBip143: coin.force_bip143, + hashGenesisBlock: coin.hash_genesis_block, + maxAddressLength: coin.max_address_length, + maxFeeSatoshiKb: coin.maxfee_kb, + minAddressLength: coin.min_address_length, + minFeeSatoshiKb: coin.minfee_kb, + segwit: coin.segwit, + slip44: coin.slip44, + support: coin.support, + xPubMagic: coin.xpub_magic, + xPubMagicSegwitNative: coin.xpub_magic_segwit_native, + xPubMagicSegwit: coin.xpub_magic_segwit_p2sh, + taproot: coin.taproot, + network, + isBitcoin, + decimals: coin.decimals, + ...(0, defaultFeeLevels_1.getBitcoinFeeLevels)(coin) + }); + }); + }; + exports2.ethereumNetworkInfoBase = { + type: "ethereum", + decimals: 18 + }; + var parseEthereumNetworksJson = (json) => { + Object.keys(json).forEach((key) => { + const network = json[key]; + ethereumNetworks.push({ + ...exports2.ethereumNetworkInfoBase, + ...(0, defaultFeeLevels_1.getEthereumFeeLevels)(network), + blockchainLink: network.blockchain_link, + chainId: network.chain_id, + label: network.label, + name: network.name, + shortcut: network.shortcut, + slip44: network.slip44, + support: network.support + }); + }); + }; + var parseMiscNetworksJSON = (json, type) => { + Object.keys(json).forEach((key) => { + const network = json[key]; + miscNetworks.push({ + type: type || "misc", + blockchainLink: network.blockchain_link, + curve: network.curve, + label: network.name, + name: network.name, + shortcut: network.shortcut, + slip44: network.slip44, + support: network.support, + decimals: network.decimals, + ...(0, defaultFeeLevels_1.getMiscFeeLevels)(network) + }); + }); + }; + var parseCoinsJson = (json) => { + Object.keys(json).forEach((key) => { + switch (key) { + case "bitcoin": + return parseBitcoinNetworksJson(json[key]); + case "eth": + return parseEthereumNetworksJson(json[key]); + case "misc": + return parseMiscNetworksJSON(json[key]); + case "nem": + return parseMiscNetworksJSON(json[key], "nem"); + } + }); + }; + exports2.parseCoinsJson = parseCoinsJson; + var getUniqueNetworks = (networks) => networks.reduce((result, info) => { + if (!info || result.find((i) => i.shortcut === info.shortcut)) return result; + return result.concat(info); + }, []); + exports2.getUniqueNetworks = getUniqueNetworks; + var getAllNetworks = () => [...bitcoinNetworks, ...ethereumNetworks, ...miscNetworks]; + exports2.getAllNetworks = getAllNetworks; + } +}); + +// node_modules/@trezor/connect/lib/types/params.js +var require_params = __commonJS({ + "node_modules/@trezor/connect/lib/types/params.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PublicKey = exports2.GetPublicKey = exports2.GetAddress = exports2.DerivationPath = exports2.Bundle = void 0; + var schema_utils_1 = require_lib2(); + var Bundle = (type) => schema_utils_1.Type.Object({ + bundle: schema_utils_1.Type.Array(type, { + minItems: 1 + }) + }); + exports2.Bundle = Bundle; + exports2.DerivationPath = schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())], { + description: "Derivation Path (BIP32).", + $id: "DerivationPath" + }); + exports2.GetAddress = schema_utils_1.Type.Object({ + path: exports2.DerivationPath, + address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean({ + default: true + })), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + useEventListener: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.GetPublicKey = schema_utils_1.Type.Object({ + path: exports2.DerivationPath, + showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + suppressBackupWarning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.PublicKey = schema_utils_1.Type.Object({ + publicKey: schema_utils_1.Type.String(), + path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + serializedPath: schema_utils_1.Type.String() + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/authorizeCoinjoin.js +var require_authorizeCoinjoin = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/authorizeCoinjoin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AuthorizeCoinjoin = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.AuthorizeCoinjoin = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + coordinator: schema_utils_1.Type.String(), + maxRounds: schema_utils_1.Type.Number(), + maxCoordinatorFeeRate: schema_utils_1.Type.Number(), + maxFeePerKvbyte: schema_utils_1.Type.Number(), + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType), + amountUnit: schema_utils_1.Type.Optional(constants_1.PROTO.EnumAmountUnit), + preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/authorizeCoinjoin.js +var require_authorizeCoinjoin2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/authorizeCoinjoin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var authorizeCoinjoin_1 = require_authorizeCoinjoin(); + var pathUtils_1 = require_pathUtils(); + var AuthorizeCoinjoin = class extends AbstractMethod_1.AbstractMethod { + init() { + const { + payload + } = this; + (0, schema_utils_1.Assert)(authorizeCoinjoin_1.AuthorizeCoinjoin, payload); + const address_n = (0, pathUtils_1.validatePath)(payload.path, 3); + const script_type = payload.scriptType || (0, pathUtils_1.getScriptType)(address_n); + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin || address_n); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + this.preauthorized = payload.preauthorized; + this.params = { + coordinator: payload.coordinator, + max_rounds: payload.maxRounds, + max_coordinator_fee_rate: payload.maxCoordinatorFeeRate, + max_fee_per_kvbyte: payload.maxFeePerKvbyte, + address_n, + coin_name: coinInfo?.name, + script_type, + amount_unit: payload.amountUnit + }; + } + async run() { + const cmd = this.device.getCommands(); + if (this.preauthorized) { + if (await cmd.preauthorize(false)) { + return { + message: "Success" + }; + } + } + const response = await cmd.typedCall("AuthorizeCoinJoin", "Success", this.params); + return response.message; + } + }; + exports2.default = AuthorizeCoinjoin; + } +}); + +// node_modules/@trezor/connect/lib/types/api/cancelCoinjoinAuthorization.js +var require_cancelCoinjoinAuthorization = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/cancelCoinjoinAuthorization.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CancelCoinjoinAuthorization = void 0; + var schema_utils_1 = require_lib2(); + exports2.CancelCoinjoinAuthorization = schema_utils_1.Type.Object({ + preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/cancelCoinjoinAuthorization.js +var require_cancelCoinjoinAuthorization2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/cancelCoinjoinAuthorization.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var cancelCoinjoinAuthorization_1 = require_cancelCoinjoinAuthorization(); + var CancelCoinjoinAuthorization = class extends AbstractMethod_1.AbstractMethod { + init() { + const { + payload + } = this; + (0, schema_utils_1.Assert)(cancelCoinjoinAuthorization_1.CancelCoinjoinAuthorization, payload); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + this.preauthorized = typeof payload.preauthorized === "boolean" ? payload.preauthorized : true; + } + get info() { + return "Cancel Coinjoin Authorization"; + } + async run() { + const cmd = this.device.getCommands(); + if (!this.preauthorized) { + if (!await cmd.preauthorize(false)) { + return { + message: "Not authorized" + }; + } + } + const response = await cmd.typedCall("CancelAuthorization", "Success"); + return response.message; + } + }; + exports2.default = CancelCoinjoinAuthorization; + } +}); + +// node_modules/@trezor/connect/lib/api/showDeviceTutorial.js +var require_showDeviceTutorial = __commonJS({ + "node_modules/@trezor/connect/lib/api/showDeviceTutorial.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var ShowDeviceTutorial = class extends AbstractMethod_1.AbstractMethod { + init() { + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + this.useEmptyPassphrase = true; + this.useDeviceState = false; + this.allowDeviceMode = [events_1.UI.INITIALIZE]; + } + get info() { + return "Show device tutorial"; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("ShowDeviceTutorial", "Success"); + return response.message; + } + }; + exports2.default = ShowDeviceTutorial; + } +}); + +// node_modules/@trezor/connect/lib/api/backupDevice.js +var require_backupDevice = __commonJS({ + "node_modules/@trezor/connect/lib/api/backupDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var BackupDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useDeviceState = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.BackupDevice, payload); + this.params = { + group_threshold: payload.group_threshold, + groups: payload.groups + }; + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "confirm", + label: "Proceed" + }, + label: "Do you want to initiate backup procedure?" + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("BackupDevice", "Success", this.params); + return response.message; + } + }; + exports2.default = BackupDevice; + } +}); + +// node_modules/@trezor/connect/lib/api/bleUnpair.js +var require_bleUnpair = __commonJS({ + "node_modules/@trezor/connect/lib/api/bleUnpair.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var transport_1 = require_lib10(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var BleUnpair = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = true; + const { + payload + } = this; + this.params = { + all: payload.all + }; + (0, schema_utils_1.Assert)(constants_1.PROTO.BleUnpair, payload); + } + async run() { + const cmd = this.device.getCommands(); + try { + const response = await cmd.typedCall("BleUnpair", "Success", this.params); + return response.message; + } catch (error) { + if (this.device.descriptor.apiType === "bluetooth" && error.message === transport_1.TRANSPORT_ERROR.INTERFACE_DATA_TRANSFER) { + throw constants_1.ERRORS.TypedError("Device_Disconnected"); + } + throw error; + } + } + }; + exports2.default = BleUnpair; + } +}); + +// node_modules/@trezor/blockchain-link-types/lib/constants/messages.js +var require_messages3 = __commonJS({ + "node_modules/@trezor/blockchain-link-types/lib/constants/messages.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TERMINATE = exports2.PUSH_TRANSACTION = exports2.UNSUBSCRIBE = exports2.SUBSCRIBE = exports2.RPC_CALL = exports2.ESTIMATE_FEE = exports2.GET_TRANSACTION_HEX = exports2.GET_TRANSACTION = exports2.GET_ACCOUNT_UTXO = exports2.GET_ACCOUNT_INFO = exports2.GET_BLOCK = exports2.GET_BLOCK_HASH = exports2.GET_FIAT_RATES_TICKERS_LIST = exports2.GET_ACCOUNT_BALANCE_HISTORY = exports2.GET_FIAT_RATES_FOR_TIMESTAMPS = exports2.GET_CURRENT_FIAT_RATES = exports2.GET_INFO = exports2.DISCONNECT = exports2.CONNECT = exports2.INIT = exports2.HANDSHAKE = void 0; + exports2.HANDSHAKE = "m_handshake"; + exports2.INIT = "m_init"; + exports2.CONNECT = "m_connect"; + exports2.DISCONNECT = "m_disconnect"; + exports2.GET_INFO = "m_get_info"; + exports2.GET_CURRENT_FIAT_RATES = "m_get_current_fiat_rates"; + exports2.GET_FIAT_RATES_FOR_TIMESTAMPS = "m_get_fiat_rates_for_timestamps"; + exports2.GET_ACCOUNT_BALANCE_HISTORY = "m_get_account_balance_history"; + exports2.GET_FIAT_RATES_TICKERS_LIST = "m_get_fiat_rates_tickers_list"; + exports2.GET_BLOCK_HASH = "m_get_block_hash"; + exports2.GET_BLOCK = "m_get_block"; + exports2.GET_ACCOUNT_INFO = "m_get_account_info"; + exports2.GET_ACCOUNT_UTXO = "m_get_account_utxo"; + exports2.GET_TRANSACTION = "m_get_transaction"; + exports2.GET_TRANSACTION_HEX = "m_get_transaction_hex"; + exports2.ESTIMATE_FEE = "m_estimate_fee"; + exports2.RPC_CALL = "m_rpc_call"; + exports2.SUBSCRIBE = "m_subscribe"; + exports2.UNSUBSCRIBE = "m_unsubscribe"; + exports2.PUSH_TRANSACTION = "m_push_tx"; + exports2.TERMINATE = "terminate"; + } +}); + +// node_modules/@trezor/blockchain-link-types/lib/constants/responses.js +var require_responses = __commonJS({ + "node_modules/@trezor/blockchain-link-types/lib/constants/responses.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.NOTIFICATION = exports2.DISCONNECTED = exports2.CONNECTED = exports2.PUSH_TRANSACTION = exports2.UNSUBSCRIBE = exports2.SUBSCRIBE = exports2.RPC_CALL = exports2.ESTIMATE_FEE = exports2.GET_TRANSACTION_HEX = exports2.GET_TRANSACTION = exports2.GET_ACCOUNT_BALANCE_HISTORY = exports2.GET_ACCOUNT_UTXO = exports2.GET_ACCOUNT_INFO = exports2.GET_FIAT_RATES_TICKERS_LIST = exports2.GET_FIAT_RATES_FOR_TIMESTAMPS = exports2.GET_CURRENT_FIAT_RATES = exports2.GET_BLOCK = exports2.GET_BLOCK_HASH = exports2.GET_INFO = exports2.CONNECT = exports2.ERROR = void 0; + exports2.ERROR = "r_error"; + exports2.CONNECT = "r_connect"; + exports2.GET_INFO = "r_info"; + exports2.GET_BLOCK_HASH = "r_get_block_hash"; + exports2.GET_BLOCK = "r_get_block"; + exports2.GET_CURRENT_FIAT_RATES = "r_get_current_fiat_rates"; + exports2.GET_FIAT_RATES_FOR_TIMESTAMPS = "r_get_fiat_rates_for_timestamps"; + exports2.GET_FIAT_RATES_TICKERS_LIST = "r_GET_FIAT_RATES_TICKERS_LIST"; + exports2.GET_ACCOUNT_INFO = "r_account_info"; + exports2.GET_ACCOUNT_UTXO = "r_get_account_utxo"; + exports2.GET_ACCOUNT_BALANCE_HISTORY = "r_get_account_balance_history"; + exports2.GET_TRANSACTION = "r_get_transaction"; + exports2.GET_TRANSACTION_HEX = "r_get_transaction_hex"; + exports2.ESTIMATE_FEE = "r_estimate_fee"; + exports2.RPC_CALL = "r_rpc_call"; + exports2.SUBSCRIBE = "r_subscribe"; + exports2.UNSUBSCRIBE = "r_unsubscribe"; + exports2.PUSH_TRANSACTION = "r_push_tx"; + exports2.CONNECTED = "r_connected"; + exports2.DISCONNECTED = "r_disconnected"; + exports2.NOTIFICATION = "r_notification"; + } +}); + +// node_modules/@trezor/blockchain-link-types/lib/constants/index.js +var require_constants8 = __commonJS({ + "node_modules/@trezor/blockchain-link-types/lib/constants/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.RESPONSES = exports2.MESSAGES = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var MESSAGES = tslib_1.__importStar(require_messages3()); + exports2.MESSAGES = MESSAGES; + var RESPONSES = tslib_1.__importStar(require_responses()); + exports2.RESPONSES = RESPONSES; + } +}); + +// node_modules/@trezor/blockchain-link-types/lib/constants/errors.js +var require_errors7 = __commonJS({ + "node_modules/@trezor/blockchain-link-types/lib/constants/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CustomError = void 0; + var PREFIX = "blockchain_link/"; + var ERROR = { + connect: void 0, + worker_not_found: "Worker not found", + worker_invalid: "Invalid worker object", + worker_timeout: "Worker timeout", + worker_unknown_request: "Unknown message type:", + worker_runtime: void 0, + invalid_param: "Invalid parameter:", + websocket_not_initialized: "WebSocket not initialized", + websocket_no_url: "Cannot connect because no server was specified", + websocket_timeout: "Websocket timeout", + websocket_error_message: void 0, + websocket_runtime_error: void 0 + }; + var CustomError = class extends Error { + code; + message = ""; + constructor(codeOrMessage, message = "") { + super(message); + this.message = message; + if (typeof codeOrMessage === "string") { + const isPrefixed = codeOrMessage.indexOf(PREFIX) === 0; + const code = isPrefixed ? codeOrMessage.substring(PREFIX.length) : codeOrMessage; + const knownCode = Object.keys(ERROR).includes(code); + if (isPrefixed || knownCode) { + this.code = `${PREFIX}${code}`; + const codeMessage = ERROR[code]; + if (codeMessage) { + if (this.message === "") { + this.message = codeMessage; + } else if (message.indexOf("+") === 0) { + this.message = `${codeMessage} ${message.substring(1)}`; + } + } + } else if (this.message === "") { + this.message = code; + } + } + if (typeof this.message !== "string" || this.message === "") { + this.message = "Message not set"; + } + } + }; + exports2.CustomError = CustomError; + } +}); + +// node_modules/@trezor/blockchain-link/lib/index.js +var require_lib13 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var utils_1 = require_lib(); + var workerWrapper = (factory) => { + if (typeof factory === "function") return factory(); + if (typeof factory === "string" && typeof Worker !== "undefined") return new Worker(factory); + throw new errors_1.CustomError("worker_not_found"); + }; + var initWorker = async (settings) => { + const dfd = (0, utils_1.createDeferred)(-1); + const worker = await workerWrapper(settings.worker); + if (typeof worker !== "object" || typeof worker.postMessage !== "function") { + throw new errors_1.CustomError("worker_invalid"); + } + const timeout = setTimeout(() => { + worker.onmessage = null; + worker.onerror = null; + dfd.reject(new errors_1.CustomError("worker_timeout")); + }, settings.timeout || 3e4); + worker.onmessage = (message) => { + if (message.data.type !== constants_1.MESSAGES.HANDSHAKE) return; + clearTimeout(timeout); + worker.postMessage({ + type: constants_1.MESSAGES.HANDSHAKE, + settings: Object.assign(settings, { + worker: void 0 + }) + }); + dfd.resolve(worker); + }; + worker.onerror = (error) => { + clearTimeout(timeout); + worker.onmessage = null; + worker.onerror = null; + try { + worker.terminate(); + } catch { + } + const message = error.message ? `Worker runtime error: Line ${error.lineno} in ${error.filename}: ${error.message}` : "Worker handshake error"; + dfd.reject(new errors_1.CustomError("worker_runtime", message)); + }; + return dfd.promise; + }; + var BlockchainLink = class extends utils_1.TypedEmitter { + settings; + lazyWorker = (0, utils_1.createLazy)(this.initWorker.bind(this), this.disposeWorker.bind(this)); + deferred = (0, utils_1.createDeferredManager)(); + throttler; + constructor(settings) { + super(); + this.settings = settings; + const throttleBlockEventTimeout = typeof settings.throttleBlockEvent === "number" ? settings.throttleBlockEvent : 500; + this.throttler = new utils_1.Throttler(throttleBlockEventTimeout); + } + async initWorker() { + const worker = await initWorker(this.settings); + worker.onmessage = this.onMessage.bind(this); + worker.onerror = this.onError.bind(this); + return worker; + } + disposeWorker(worker) { + worker.terminate(); + } + async sendMessage(message) { + const worker = await this.lazyWorker.getOrInit(); + const { + promiseId, + promise + } = this.deferred.create(); + worker.postMessage({ + id: promiseId, + ...message + }); + return promise; + } + connect() { + return this.sendMessage({ + type: constants_1.MESSAGES.CONNECT + }); + } + getInfo() { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_INFO + }); + } + getBlockHash(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_BLOCK_HASH, + payload + }); + } + getBlock(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_BLOCK, + payload + }); + } + getAccountInfo(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_ACCOUNT_INFO, + payload + }); + } + getAccountUtxo(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_ACCOUNT_UTXO, + payload + }); + } + getTransaction(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_TRANSACTION, + payload + }); + } + getTransactionHex(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_TRANSACTION_HEX, + payload + }); + } + getAccountBalanceHistory(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY, + payload + }); + } + getCurrentFiatRates(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_CURRENT_FIAT_RATES, + payload + }); + } + getFiatRatesForTimestamps(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_FIAT_RATES_FOR_TIMESTAMPS, + payload + }); + } + getFiatRatesTickersList(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.GET_FIAT_RATES_TICKERS_LIST, + payload + }); + } + estimateFee(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.ESTIMATE_FEE, + payload + }); + } + rpcCall(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.RPC_CALL, + payload + }); + } + subscribe(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.SUBSCRIBE, + payload + }); + } + unsubscribe(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.UNSUBSCRIBE, + payload + }); + } + pushTransaction(payload) { + return this.sendMessage({ + type: constants_1.MESSAGES.PUSH_TRANSACTION, + payload + }); + } + async disconnect() { + if (!this.lazyWorker.get()) return true; + return this.sendMessage({ + type: constants_1.MESSAGES.DISCONNECT + }); + } + onMessage = (event) => { + if (!event.data) return; + const { + data + } = event; + if (data.id === -1) { + this.onEvent(data); + return; + } + if (data.type === constants_1.RESPONSES.ERROR) { + this.deferred.reject(data.id, new errors_1.CustomError(data.payload.code, data.payload.message)); + } else { + this.deferred.resolve(data.id, data.payload); + } + }; + onEvent = (data) => { + if (data.type === constants_1.RESPONSES.CONNECTED) { + this.emit("connected"); + } + if (data.type === constants_1.RESPONSES.DISCONNECTED) { + this.emit("disconnected"); + } + if (data.type === constants_1.RESPONSES.NOTIFICATION) { + const notification = data.payload; + if (notification.type === "block") { + this.throttler.throttle("block", () => { + this.emit(notification.type, notification.payload); + }); + } else if (notification.type === "notification") { + const txAccountId = `${notification.payload.descriptor}:${notification.payload.tx.txid}`; + this.throttler.throttle(txAccountId, () => { + this.emit(notification.type, notification.payload); + }); + } else { + this.emit(notification.type, notification.payload); + } + } + }; + onError = (error) => { + const message = error.message ? `Worker runtime error: Line ${error.lineno} in ${error.filename}: ${error.message}` : "Worker handshake error"; + const e = new errors_1.CustomError("worker_runtime", message); + this.deferred.rejectAll(e); + }; + dispose() { + this.removeAllListeners(); + this.throttler.dispose(); + this.lazyWorker.dispose(); + } + }; + exports2.default = BlockchainLink; + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/utils.js +var require_utils6 = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.filterShadowedPendingTxsByNonce = exports2.formatTokenSymbol = exports2.sortTxsFromLatest = exports2.transformTarget = exports2.sumVinVout = exports2.enhanceVinVout = exports2.filterTargets = exports2.isAccountOwned = void 0; + var utils_1 = require_lib(); + var bigNumber_1 = require_bigNumber(); + var isAccountOwned = (addresses) => (vinVout) => Array.isArray(vinVout?.addresses) && vinVout.addresses.some((a) => addresses.includes(a)); + exports2.isAccountOwned = isAccountOwned; + var filterTargets = (addresses, targets) => { + if (typeof addresses === "string") { + addresses = [addresses]; + } + if (!addresses || !Array.isArray(addresses) || !targets || !Array.isArray(targets)) return []; + const all = addresses.map((a) => { + if (typeof a === "string") return a; + if (typeof a === "object" && typeof a.address === "string") return a.address; + return void 0; + }).filter(utils_1.isNotUndefined); + return targets.filter((0, exports2.isAccountOwned)(all)); + }; + exports2.filterTargets = filterTargets; + var enhanceVinVout = (addresses) => (vinVout) => ({ + ...vinVout, + isAccountOwned: (0, exports2.isAccountOwned)(addresses)(vinVout) || void 0 + }); + exports2.enhanceVinVout = enhanceVinVout; + var sumVinVout = (sum, { + value + }) => typeof value === "string" ? new bigNumber_1.BigNumber(value || "0").plus(sum) : sum; + exports2.sumVinVout = sumVinVout; + var transformTarget = (target, incoming) => ({ + n: target.n || 0, + addresses: target.addresses, + isAddress: target.isAddress, + amount: target.value, + coinbase: target.coinbase, + isAccountTarget: incoming.includes(target) ? true : void 0 + }); + exports2.transformTarget = transformTarget; + var adjustHeight = ({ + blockHeight + }) => blockHeight === void 0 || blockHeight <= 0 ? Number.MAX_SAFE_INTEGER : blockHeight; + var sortTxsFromLatest = (transactions) => { + const txs = transactions.slice().sort((a, b) => adjustHeight(b) - adjustHeight(a)); + let from = 0; + while (from < txs.length - 1) { + const fromHeight = adjustHeight(txs[from]); + let to = from + 1; + if (fromHeight === adjustHeight(txs[to])) { + do { + to++; + } while (to < txs.length && fromHeight === adjustHeight(txs[to])); + const toposorted = (0, utils_1.topologicalSort)(txs.slice(from, to), (a, b) => a.details.vin.some(({ + txid + }) => txid === b.txid)); + txs.splice(from, toposorted.length, ...toposorted); + } + from = to; + } + return txs; + }; + exports2.sortTxsFromLatest = sortTxsFromLatest; + var formatTokenSymbol = (symbol) => { + const upperCasedSymbol = symbol.toUpperCase(); + const isTokenSymbolLong = upperCasedSymbol.length > 7; + return isTokenSymbolLong ? `${upperCasedSymbol.slice(0, 7)}...` : upperCasedSymbol; + }; + exports2.formatTokenSymbol = formatTokenSymbol; + var isOutgoing = (lowerCasedDescriptor, tx) => tx.details?.vin?.[0]?.addresses?.[0]?.toLowerCase() === lowerCasedDescriptor; + var filterShadowedPendingTxsByNonce = (txs, lowerCasedDescriptor) => { + const myLatestMinedTx = txs.find((tx) => isOutgoing(lowerCasedDescriptor, tx) && tx.ethereumSpecific && (tx.ethereumSpecific.status === 0 || tx.ethereumSpecific.status === 1) && Number.isInteger(tx.ethereumSpecific.nonce)); + if (!myLatestMinedTx?.ethereumSpecific) return txs; + const latestMinedNonce = myLatestMinedTx.ethereumSpecific.nonce; + return txs.filter((tx) => { + const es = tx.ethereumSpecific; + if (!es) return true; + const isOutgoingTx = isOutgoing(lowerCasedDescriptor, tx); + const isPending = es.status === -1; + if (isOutgoingTx && isPending && es.nonce <= latestMinedNonce) { + return false; + } + return true; + }); + }; + exports2.filterShadowedPendingTxsByNonce = filterShadowedPendingTxsByNonce; + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/blockbook.js +var require_blockbook = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/blockbook.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.transformAccountUtxo = exports2.transformAccountInfo = exports2.transformAddresses = exports2.transformTokenInfo = exports2.transformTransaction = exports2.isTxFailed = exports2.filterEthereumInternalTransfers = exports2.isEthereumStakingInternalTransfer = exports2.filterTokenTransfers = exports2.transformServerInfo = void 0; + var bigNumber_1 = require_bigNumber(); + var utils_1 = require_utils6(); + var transformServerInfo = (payload) => ({ + name: payload.name, + shortcut: payload.shortcut, + network: payload.network ?? payload.shortcut, + testnet: payload.testnet, + version: payload.version, + decimals: payload.decimals, + blockHeight: payload.bestHeight, + blockHash: payload.bestHash, + consensusBranchId: payload.backend?.consensus ? parseInt(payload.backend.consensus.chaintip, 16) : void 0 + }); + exports2.transformServerInfo = transformServerInfo; + var filterTokenTransfers = (addresses, transfers) => { + if (typeof addresses === "string") { + addresses = [addresses]; + } + if (!addresses || !Array.isArray(addresses) || !transfers || !Array.isArray(transfers)) return []; + const all = addresses.map((a) => { + if (typeof a === "string") return a; + if (typeof a === "object" && typeof a.address === "string") return a.address; + return null; + }); + return transfers.filter((transfer) => { + if (transfer && typeof transfer === "object") { + return transfer.from && all.indexOf(transfer.from) >= 0 || transfer.to && all.indexOf(transfer.to) >= 0; + } + return false; + }).map((transfer) => { + const isIncoming = transfer.from && all.indexOf(transfer.from) >= 0; + const isOutgoing = transfer.to && all.indexOf(transfer.to) >= 0; + let type; + if (isIncoming && isOutgoing) { + type = "self"; + } else if (isIncoming) { + type = "sent"; + } else { + type = "recv"; + } + const tokenTransfer = { + ...transfer, + type, + decimals: transfer.decimals || 0, + amount: transfer.value || "", + standard: transfer.standard + }; + delete tokenTransfer.value; + return tokenTransfer; + }); + }; + exports2.filterTokenTransfers = filterTokenTransfers; + var ethereumStakingAddresses = { + poolInstance: ["0xD523794C879D9eC028960a231F866758e405bE34", "0xAFA848357154a6a624686b348303EF9a13F63264"], + withdrawTreasury: ["0x19449f0f696703Aa3b1485DfA2d855F33659397a", "0x66cb3AeD024740164EBcF04e292dB09b5B63A2e1"] + }; + var isEthereumStakingInternalTransfer = (from, to) => { + const { + poolInstance, + withdrawTreasury + } = ethereumStakingAddresses; + return poolInstance.includes(from) && withdrawTreasury.includes(to); + }; + exports2.isEthereumStakingInternalTransfer = isEthereumStakingInternalTransfer; + var filterEthereumInternalTransfers = (address, ethereumSpecific) => { + const internalTransfers = ethereumSpecific?.internalTransfers; + if (!address || !internalTransfers?.length) { + return []; + } + return internalTransfers.filter(({ + type, + from, + to + }) => type === 0 && ([from, to].includes(address) || (0, exports2.isEthereumStakingInternalTransfer)(from, to))).map(({ + from, + to, + value + }) => { + const isIncoming = from === address; + const isOutgoing = to === address; + let type; + if (isIncoming && isOutgoing) { + type = "self"; + } else if (isIncoming) { + type = "sent"; + } else if (isOutgoing) { + type = "recv"; + } else { + type = "external"; + } + return { + type, + amount: value, + from, + to + }; + }); + }; + exports2.filterEthereumInternalTransfers = filterEthereumInternalTransfers; + var isTxFailed = (tx) => !(!tx.blockHeight || tx.blockHeight < 0) && tx.ethereumSpecific?.status === 0; + exports2.isTxFailed = isTxFailed; + var transformTransaction = (tx, addressesOrDescriptor) => { + const [addresses, descriptor] = typeof addressesOrDescriptor === "object" ? [addressesOrDescriptor, void 0] : [void 0, addressesOrDescriptor]; + const myAddresses = addresses ? addresses.change.concat(addresses.used, addresses.unused).map((a) => a.address) : descriptor && [descriptor] || []; + const inputs = Array.isArray(tx.vin) ? tx.vin : []; + const totalInput = inputs.reduce(utils_1.sumVinVout, 0); + const myInputs = (0, utils_1.filterTargets)(myAddresses, tx.vin); + const myTotalInput = myInputs.reduce(utils_1.sumVinVout, 0); + const outputs = Array.isArray(tx.vout) ? tx.vout : []; + const totalOutput = outputs.reduce(utils_1.sumVinVout, 0); + const myOutputs = (0, utils_1.filterTargets)(myAddresses, tx.vout); + const myTotalOutput = myOutputs.reduce(utils_1.sumVinVout, 0); + const myTokens = (0, exports2.filterTokenTransfers)(myAddresses, tx.tokenTransfers); + const myInternalTransfers = (0, exports2.filterEthereumInternalTransfers)(descriptor, tx.ethereumSpecific); + const isNonChangeOutput = (o) => addresses ? (0, utils_1.filterTargets)(addresses.change, tx.vout).indexOf(o) < 0 : true; + const isNonZero = (o) => o.value && o.value !== "0"; + let type; + let amount; + let targets; + if (tx.ethereumSpecific?.createdContract) { + type = "contract"; + amount = tx.value; + targets = []; + } else if (myInputs.length) { + if (myInputs.length < inputs.length) { + type = "joint"; + targets = []; + amount = new bigNumber_1.BigNumber(myTotalOutput).minus(myTotalInput).toString(); + } else if (myOutputs.length < outputs.length || !outputs.length) { + type = "sent"; + targets = myTokens.length ? outputs.filter(isNonZero) : outputs.filter(isNonChangeOutput); + amount = !outputs.length || tx.ethereumSpecific ? tx.value : new bigNumber_1.BigNumber(myTotalInput).minus(myTotalOutput).minus(tx.fees ?? "0").toString(); + } else { + type = "self"; + amount = tx.fees; + const intentionalOutputs = outputs.filter(isNonChangeOutput); + targets = intentionalOutputs.length ? intentionalOutputs : outputs; + } + } else if (myOutputs.length || myTokens.length || myInternalTransfers.length) { + type = "recv"; + amount = myTotalOutput.toString(); + targets = myOutputs; + const transfers = [...myTokens, ...myInternalTransfers]; + const isSentTransferAvailable = transfers.find((t) => t.type === "sent"); + const isNoRecvTransferAvailable = transfers.find((t) => t.type !== "recv"); + if (isSentTransferAvailable) { + type = "sent"; + } else if (!myOutputs.length && isNoRecvTransferAvailable) { + type = "self"; + } + } else { + type = "unknown"; + amount = tx.value; + targets = []; + } + type = (0, exports2.isTxFailed)(tx) ? "failed" : type; + const rbf = tx.rbf || inputs.find((i) => typeof i.sequence === "number" && i.sequence < 4294967295 - 1) ? true : void 0; + const fee = tx.ethereumSpecific && !tx.ethereumSpecific.gasUsed ? new bigNumber_1.BigNumber(tx.ethereumSpecific?.maxFeePerGas ?? tx.ethereumSpecific?.gasPrice ?? "0").times(tx.ethereumSpecific.gasLimit).toString() : tx.fees; + const feeRate = tx.vsize ? new bigNumber_1.BigNumber(fee).div(tx.vsize).decimalPlaces(2).toString() : void 0; + const size = tx.size || (typeof tx.hex === "string" ? tx.hex.length / 2 : 0); + return { + type, + txid: tx.txid, + hex: tx.hex, + blockTime: tx.blockTime, + blockHeight: tx.blockHeight, + blockHash: tx.blockHash, + lockTime: tx.lockTime, + amount, + fee, + vsize: tx.vsize, + feeRate, + targets: targets.filter((target) => typeof target === "object").map((target) => (0, utils_1.transformTarget)(target, myOutputs)), + tokens: myTokens, + internalTransfers: myInternalTransfers, + rbf, + ethereumSpecific: tx.ethereumSpecific && { + ...tx.ethereumSpecific, + gasPrice: tx.ethereumSpecific.gasPrice ?? "0" + }, + details: { + vin: inputs.map((0, utils_1.enhanceVinVout)(myAddresses)), + vout: outputs.map((0, utils_1.enhanceVinVout)(myAddresses)), + size, + totalInput: totalInput.toString(), + totalOutput: totalOutput.toString() + } + }; + }; + exports2.transformTransaction = transformTransaction; + var transformTokenInfo = (tokens) => { + if (!tokens || !Array.isArray(tokens)) return void 0; + const info = tokens.reduce((arr, token) => { + if (token.type === "XPUBAddress") return arr; + return arr.concat([{ + ...token, + decimals: token.decimals || 0, + standard: token.standard + }]); + }, []); + return info.length > 0 ? info : void 0; + }; + exports2.transformTokenInfo = transformTokenInfo; + var transformAddresses = (tokens) => { + if (!tokens || !Array.isArray(tokens)) return void 0; + const addresses = tokens.reduce((arr, t) => { + if (t.type !== "XPUBAddress") return arr; + return arr.concat([{ + address: t.name, + path: t.path, + transfers: t.transfers, + balance: t.balance, + sent: t.totalSent, + received: t.totalReceived + }]); + }, []); + if (addresses.length < 1) return void 0; + const internal = addresses.filter((a) => a.path.split("/")[4] === "1"); + const external = addresses.filter((a) => internal.indexOf(a) < 0); + return { + change: internal, + used: external.filter((a) => a.transfers > 0), + unused: external.filter((a) => a.transfers === 0) + }; + }; + exports2.transformAddresses = transformAddresses; + var transformAccountInfo = (payload) => { + let page; + if (typeof payload.page === "number") { + page = { + index: payload.page, + size: payload.itemsOnPage, + total: payload.totalPages + }; + } + const isEVM = typeof payload.nonce === "string"; + let misc; + if (isEVM) { + misc = { + nonce: payload.nonce, + contractInfo: payload.contractInfo, + stakingPools: payload.stakingPools, + addressAliases: payload.addressAliases + }; + } + const descriptor = payload.address; + const addresses = (0, exports2.transformAddresses)(payload.tokens); + const tokens = (0, exports2.transformTokenInfo)(payload.tokens); + const unconfirmedBalance = new bigNumber_1.BigNumber(payload.unconfirmedBalance); + let availableBalance = payload.balance; + if (!unconfirmedBalance.isNaN() && !isEVM) { + availableBalance = unconfirmedBalance.plus(payload.balance).toString(); + } + const empty = payload.txs === 0 && payload.unconfirmedTxs === 0 && new bigNumber_1.BigNumber(availableBalance).isZero(); + const unfilteredTransactions = payload.transactions ? payload.transactions.map((t) => (0, exports2.transformTransaction)(t, addresses ?? descriptor)) : void 0; + const transactions = isEVM && unfilteredTransactions ? (0, utils_1.filterShadowedPendingTxsByNonce)(unfilteredTransactions, descriptor.toLowerCase()) : unfilteredTransactions; + return { + descriptor, + balance: payload.balance, + availableBalance, + empty, + tokens, + addresses, + history: { + addrTxCount: payload.addrTxCount, + total: payload.txs, + tokens: typeof payload.nonTokenTxs === "number" ? payload.txs - payload.nonTokenTxs : void 0, + unconfirmed: payload.unconfirmedTxs, + transactions + }, + misc, + page + }; + }; + exports2.transformAccountInfo = transformAccountInfo; + var transformAccountUtxo = (payload) => payload.map((utxo) => ({ + txid: utxo.txid, + vout: utxo.vout, + amount: utxo.value, + blockHeight: utxo.height, + address: utxo.address, + path: utxo.path, + confirmations: utxo.confirmations, + coinbase: utxo.coinbase + })); + exports2.transformAccountUtxo = transformAccountUtxo; + } +}); + +// node_modules/smart-buffer/build/utils.js +var require_utils7 = __commonJS({ + "node_modules/smart-buffer/build/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var buffer_1 = __require("buffer"); + var ERRORS = { + INVALID_ENCODING: "Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.", + INVALID_SMARTBUFFER_SIZE: "Invalid size provided. Size must be a valid integer greater than zero.", + INVALID_SMARTBUFFER_BUFFER: "Invalid Buffer provided in SmartBufferOptions.", + INVALID_SMARTBUFFER_OBJECT: "Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.", + INVALID_OFFSET: "An invalid offset value was provided.", + INVALID_OFFSET_NON_NUMBER: "An invalid offset value was provided. A numeric value is required.", + INVALID_LENGTH: "An invalid length value was provided.", + INVALID_LENGTH_NON_NUMBER: "An invalid length value was provived. A numeric value is required.", + INVALID_TARGET_OFFSET: "Target offset is beyond the bounds of the internal SmartBuffer data.", + INVALID_TARGET_LENGTH: "Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.", + INVALID_READ_BEYOND_BOUNDS: "Attempted to read beyond the bounds of the managed data.", + INVALID_WRITE_BEYOND_BOUNDS: "Attempted to write beyond the bounds of the managed data." + }; + exports2.ERRORS = ERRORS; + function checkEncoding(encoding) { + if (!buffer_1.Buffer.isEncoding(encoding)) { + throw new Error(ERRORS.INVALID_ENCODING); + } + } + exports2.checkEncoding = checkEncoding; + function isFiniteInteger(value) { + return typeof value === "number" && isFinite(value) && isInteger(value); + } + exports2.isFiniteInteger = isFiniteInteger; + function checkOffsetOrLengthValue(value, offset) { + if (typeof value === "number") { + if (!isFiniteInteger(value) || value < 0) { + throw new Error(offset ? ERRORS.INVALID_OFFSET : ERRORS.INVALID_LENGTH); + } + } else { + throw new Error(offset ? ERRORS.INVALID_OFFSET_NON_NUMBER : ERRORS.INVALID_LENGTH_NON_NUMBER); + } + } + function checkLengthValue(length) { + checkOffsetOrLengthValue(length, false); + } + exports2.checkLengthValue = checkLengthValue; + function checkOffsetValue(offset) { + checkOffsetOrLengthValue(offset, true); + } + exports2.checkOffsetValue = checkOffsetValue; + function checkTargetOffset(offset, buff) { + if (offset < 0 || offset > buff.length) { + throw new Error(ERRORS.INVALID_TARGET_OFFSET); + } + } + exports2.checkTargetOffset = checkTargetOffset; + function isInteger(value) { + return typeof value === "number" && isFinite(value) && Math.floor(value) === value; + } + function bigIntAndBufferInt64Check(bufferMethod) { + if (typeof BigInt === "undefined") { + throw new Error("Platform does not support JS BigInt type."); + } + if (typeof buffer_1.Buffer.prototype[bufferMethod] === "undefined") { + throw new Error(`Platform does not support Buffer.prototype.${bufferMethod}.`); + } + } + exports2.bigIntAndBufferInt64Check = bigIntAndBufferInt64Check; + } +}); + +// node_modules/smart-buffer/build/smartbuffer.js +var require_smartbuffer = __commonJS({ + "node_modules/smart-buffer/build/smartbuffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var utils_1 = require_utils7(); + var DEFAULT_SMARTBUFFER_SIZE = 4096; + var DEFAULT_SMARTBUFFER_ENCODING = "utf8"; + var SmartBuffer = class _SmartBuffer { + /** + * Creates a new SmartBuffer instance. + * + * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. + */ + constructor(options) { + this.length = 0; + this._encoding = DEFAULT_SMARTBUFFER_ENCODING; + this._writeOffset = 0; + this._readOffset = 0; + if (_SmartBuffer.isSmartBufferOptions(options)) { + if (options.encoding) { + utils_1.checkEncoding(options.encoding); + this._encoding = options.encoding; + } + if (options.size) { + if (utils_1.isFiniteInteger(options.size) && options.size > 0) { + this._buff = Buffer.allocUnsafe(options.size); + } else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_SIZE); + } + } else if (options.buff) { + if (Buffer.isBuffer(options.buff)) { + this._buff = options.buff; + this.length = options.buff.length; + } else { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_BUFFER); + } + } else { + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } else { + if (typeof options !== "undefined") { + throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_OBJECT); + } + this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); + } + } + /** + * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. + * + * @param size { Number } The size of the internal Buffer. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromSize(size, encoding) { + return new this({ + size, + encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. + * + * @param buffer { Buffer } The Buffer to use as the internal Buffer value. + * @param encoding { String } The BufferEncoding to use for strings. + * + * @return { SmartBuffer } + */ + static fromBuffer(buff, encoding) { + return new this({ + buff, + encoding + }); + } + /** + * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. + * + * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. + */ + static fromOptions(options) { + return new this(options); + } + /** + * Type checking function that determines if an object is a SmartBufferOptions object. + */ + static isSmartBufferOptions(options) { + const castOptions = options; + return castOptions && (castOptions.encoding !== void 0 || castOptions.size !== void 0 || castOptions.buff !== void 0); + } + // Signed integers + /** + * Reads an Int8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt8(offset) { + return this._readNumberValue(Buffer.prototype.readInt8, 1, offset); + } + /** + * Reads an Int16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16BE, 2, offset); + } + /** + * Reads an Int16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt16LE, 2, offset); + } + /** + * Reads an Int32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32BE, 4, offset); + } + /** + * Reads an Int32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readInt32LE, 4, offset); + } + /** + * Reads a BigInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check("readBigInt64BE"); + return this._readNumberValue(Buffer.prototype.readBigInt64BE, 8, offset); + } + /** + * Reads a BigInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check("readBigInt64LE"); + return this._readNumberValue(Buffer.prototype.readBigInt64LE, 8, offset); + } + /** + * Writes an Int8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt8(value, offset) { + this._writeNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + return this; + } + /** + * Inserts an Int8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt8, 1, value, offset); + } + /** + * Writes an Int16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Inserts an Int16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); + } + /** + * Writes an Int16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Inserts an Int16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); + } + /** + * Writes an Int32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Inserts an Int32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); + } + /** + * Writes an Int32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Inserts an Int32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); + } + /** + * Writes a BigInt64BE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigInt64BE"); + return this._writeNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Inserts a BigInt64BE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigInt64BE"); + return this._insertNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); + } + /** + * Writes a BigInt64LE value to the current write position (or at optional offset). + * + * @param value { BigInt } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigInt64LE"); + return this._writeNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + /** + * Inserts a Int64LE value at the given offset value. + * + * @param value { BigInt } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigInt64LE"); + return this._insertNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); + } + // Unsigned Integers + /** + * Reads an UInt8 value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt8(offset) { + return this._readNumberValue(Buffer.prototype.readUInt8, 1, offset); + } + /** + * Reads an UInt16BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16BE, 2, offset); + } + /** + * Reads an UInt16LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt16LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt16LE, 2, offset); + } + /** + * Reads an UInt32BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32BE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32BE, 4, offset); + } + /** + * Reads an UInt32LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readUInt32LE(offset) { + return this._readNumberValue(Buffer.prototype.readUInt32LE, 4, offset); + } + /** + * Reads a BigUInt64BE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64BE(offset) { + utils_1.bigIntAndBufferInt64Check("readBigUInt64BE"); + return this._readNumberValue(Buffer.prototype.readBigUInt64BE, 8, offset); + } + /** + * Reads a BigUInt64LE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { BigInt } + */ + readBigUInt64LE(offset) { + utils_1.bigIntAndBufferInt64Check("readBigUInt64LE"); + return this._readNumberValue(Buffer.prototype.readBigUInt64LE, 8, offset); + } + /** + * Writes an UInt8 value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt8(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Inserts an UInt8 value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt8(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); + } + /** + * Writes an UInt16BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Inserts an UInt16BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); + } + /** + * Writes an UInt16LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt16LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Inserts an UInt16LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt16LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); + } + /** + * Writes an UInt32BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32BE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Inserts an UInt32BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32BE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); + } + /** + * Writes an UInt32LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeUInt32LE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Inserts an UInt32LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertUInt32LE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); + } + /** + * Writes a BigUInt64BE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigUInt64BE"); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Inserts a BigUInt64BE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64BE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigUInt64BE"); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); + } + /** + * Writes a BigUInt64LE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigUInt64LE"); + return this._writeNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + /** + * Inserts a BigUInt64LE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertBigUInt64LE(value, offset) { + utils_1.bigIntAndBufferInt64Check("writeBigUInt64LE"); + return this._insertNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); + } + // Floating Point + /** + * Reads an FloatBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatBE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatBE, 4, offset); + } + /** + * Reads an FloatLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readFloatLE(offset) { + return this._readNumberValue(Buffer.prototype.readFloatLE, 4, offset); + } + /** + * Writes a FloatBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Inserts a FloatBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); + } + /** + * Writes a FloatLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeFloatLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + /** + * Inserts a FloatLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertFloatLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); + } + // Double Floating Point + /** + * Reads an DoublEBE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleBE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleBE, 8, offset); + } + /** + * Reads an DoubleLE value from the current read position or an optionally provided offset. + * + * @param offset { Number } The offset to read data from (optional) + * @return { Number } + */ + readDoubleLE(offset) { + return this._readNumberValue(Buffer.prototype.readDoubleLE, 8, offset); + } + /** + * Writes a DoubleBE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleBE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Inserts a DoubleBE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleBE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); + } + /** + * Writes a DoubleLE value to the current write position (or at optional offset). + * + * @param value { Number } The value to write. + * @param offset { Number } The offset to write the value at. + * + * @return this + */ + writeDoubleLE(value, offset) { + return this._writeNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + /** + * Inserts a DoubleLE value at the given offset value. + * + * @param value { Number } The value to insert. + * @param offset { Number } The offset to insert the value at. + * + * @return this + */ + insertDoubleLE(value, offset) { + return this._insertNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); + } + // Strings + /** + * Reads a String from the current read position. + * + * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for + * the string (Defaults to instance level encoding). + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readString(arg1, encoding) { + let lengthVal; + if (typeof arg1 === "number") { + utils_1.checkLengthValue(arg1); + lengthVal = Math.min(arg1, this.length - this._readOffset); + } else { + encoding = arg1; + lengthVal = this.length - this._readOffset; + } + if (typeof encoding !== "undefined") { + utils_1.checkEncoding(encoding); + } + const value = this._buff.slice(this._readOffset, this._readOffset + lengthVal).toString(encoding || this._encoding); + this._readOffset += lengthVal; + return value; + } + /** + * Inserts a String + * + * @param value { String } The String value to insert. + * @param offset { Number } The offset to insert the string at. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertString(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + return this._handleString(value, true, offset, encoding); + } + /** + * Writes a String + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeString(value, arg2, encoding) { + return this._handleString(value, false, arg2, encoding); + } + /** + * Reads a null-terminated String from the current read position. + * + * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). + * + * @return { String } + */ + readStringNT(encoding) { + if (typeof encoding !== "undefined") { + utils_1.checkEncoding(encoding); + } + let nullPos = this.length; + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0) { + nullPos = i; + break; + } + } + const value = this._buff.slice(this._readOffset, nullPos); + this._readOffset = nullPos + 1; + return value.toString(encoding || this._encoding); + } + /** + * Inserts a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + insertStringNT(value, offset, encoding) { + utils_1.checkOffsetValue(offset); + this.insertString(value, offset, encoding); + this.insertUInt8(0, offset + value.length); + return this; + } + /** + * Writes a null-terminated String. + * + * @param value { String } The String value to write. + * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + * + * @return this + */ + writeStringNT(value, arg2, encoding) { + this.writeString(value, arg2, encoding); + this.writeUInt8(0, typeof arg2 === "number" ? arg2 + value.length : this.writeOffset); + return this; + } + // Buffers + /** + * Reads a Buffer from the internal read position. + * + * @param length { Number } The length of data to read as a Buffer. + * + * @return { Buffer } + */ + readBuffer(length) { + if (typeof length !== "undefined") { + utils_1.checkLengthValue(length); + } + const lengthVal = typeof length === "number" ? length : this.length; + const endPoint = Math.min(this.length, this._readOffset + lengthVal); + const value = this._buff.slice(this._readOffset, endPoint); + this._readOffset = endPoint; + return value; + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBuffer(value, offset) { + utils_1.checkOffsetValue(offset); + return this._handleBuffer(value, true, offset); + } + /** + * Writes a Buffer to the current write position. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBuffer(value, offset) { + return this._handleBuffer(value, false, offset); + } + /** + * Reads a null-terminated Buffer from the current read poisiton. + * + * @return { Buffer } + */ + readBufferNT() { + let nullPos = this.length; + for (let i = this._readOffset; i < this.length; i++) { + if (this._buff[i] === 0) { + nullPos = i; + break; + } + } + const value = this._buff.slice(this._readOffset, nullPos); + this._readOffset = nullPos + 1; + return value; + } + /** + * Inserts a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + insertBufferNT(value, offset) { + utils_1.checkOffsetValue(offset); + this.insertBuffer(value, offset); + this.insertUInt8(0, offset + value.length); + return this; + } + /** + * Writes a null-terminated Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + * + * @return this + */ + writeBufferNT(value, offset) { + if (typeof offset !== "undefined") { + utils_1.checkOffsetValue(offset); + } + this.writeBuffer(value, offset); + this.writeUInt8(0, typeof offset === "number" ? offset + value.length : this._writeOffset); + return this; + } + /** + * Clears the SmartBuffer instance to its original empty state. + */ + clear() { + this._writeOffset = 0; + this._readOffset = 0; + this.length = 0; + return this; + } + /** + * Gets the remaining data left to be read from the SmartBuffer instance. + * + * @return { Number } + */ + remaining() { + return this.length - this._readOffset; + } + /** + * Gets the current read offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get readOffset() { + return this._readOffset; + } + /** + * Sets the read offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set readOffset(offset) { + utils_1.checkOffsetValue(offset); + utils_1.checkTargetOffset(offset, this); + this._readOffset = offset; + } + /** + * Gets the current write offset value of the SmartBuffer instance. + * + * @return { Number } + */ + get writeOffset() { + return this._writeOffset; + } + /** + * Sets the write offset value of the SmartBuffer instance. + * + * @param offset { Number } - The offset value to set. + */ + set writeOffset(offset) { + utils_1.checkOffsetValue(offset); + utils_1.checkTargetOffset(offset, this); + this._writeOffset = offset; + } + /** + * Gets the currently set string encoding of the SmartBuffer instance. + * + * @return { BufferEncoding } The string Buffer encoding currently set. + */ + get encoding() { + return this._encoding; + } + /** + * Sets the string encoding of the SmartBuffer instance. + * + * @param encoding { BufferEncoding } The string Buffer encoding to set. + */ + set encoding(encoding) { + utils_1.checkEncoding(encoding); + this._encoding = encoding; + } + /** + * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) + * + * @return { Buffer } The Buffer value. + */ + get internalBuffer() { + return this._buff; + } + /** + * Gets the value of the internal managed Buffer (Includes managed data only) + * + * @param { Buffer } + */ + toBuffer() { + return this._buff.slice(0, this.length); + } + /** + * Gets the String value of the internal managed Buffer + * + * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). + */ + toString(encoding) { + const encodingVal = typeof encoding === "string" ? encoding : this._encoding; + utils_1.checkEncoding(encodingVal); + return this._buff.toString(encodingVal, 0, this.length); + } + /** + * Destroys the SmartBuffer instance. + */ + destroy() { + this.clear(); + return this; + } + /** + * Handles inserting and writing strings. + * + * @param value { String } The String value to insert. + * @param isInsert { Boolean } True if inserting a string, false if writing. + * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. + * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). + */ + _handleString(value, isInsert, arg3, encoding) { + let offsetVal = this._writeOffset; + let encodingVal = this._encoding; + if (typeof arg3 === "number") { + offsetVal = arg3; + } else if (typeof arg3 === "string") { + utils_1.checkEncoding(arg3); + encodingVal = arg3; + } + if (typeof encoding === "string") { + utils_1.checkEncoding(encoding); + encodingVal = encoding; + } + const byteLength = Buffer.byteLength(value, encodingVal); + if (isInsert) { + this.ensureInsertable(byteLength, offsetVal); + } else { + this._ensureWriteable(byteLength, offsetVal); + } + this._buff.write(value, offsetVal, byteLength, encodingVal); + if (isInsert) { + this._writeOffset += byteLength; + } else { + if (typeof arg3 === "number") { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteLength); + } else { + this._writeOffset += byteLength; + } + } + return this; + } + /** + * Handles writing or insert of a Buffer. + * + * @param value { Buffer } The Buffer to write. + * @param offset { Number } The offset to write the Buffer to. + */ + _handleBuffer(value, isInsert, offset) { + const offsetVal = typeof offset === "number" ? offset : this._writeOffset; + if (isInsert) { + this.ensureInsertable(value.length, offsetVal); + } else { + this._ensureWriteable(value.length, offsetVal); + } + value.copy(this._buff, offsetVal); + if (isInsert) { + this._writeOffset += value.length; + } else { + if (typeof offset === "number") { + this._writeOffset = Math.max(this._writeOffset, offsetVal + value.length); + } else { + this._writeOffset += value.length; + } + } + return this; + } + /** + * Ensures that the internal Buffer is large enough to read data. + * + * @param length { Number } The length of the data that needs to be read. + * @param offset { Number } The offset of the data that needs to be read. + */ + ensureReadable(length, offset) { + let offsetVal = this._readOffset; + if (typeof offset !== "undefined") { + utils_1.checkOffsetValue(offset); + offsetVal = offset; + } + if (offsetVal < 0 || offsetVal + length > this.length) { + throw new Error(utils_1.ERRORS.INVALID_READ_BEYOND_BOUNDS); + } + } + /** + * Ensures that the internal Buffer is large enough to insert data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written. + */ + ensureInsertable(dataLength, offset) { + utils_1.checkOffsetValue(offset); + this._ensureCapacity(this.length + dataLength); + if (offset < this.length) { + this._buff.copy(this._buff, offset + dataLength, offset, this._buff.length); + } + if (offset + dataLength > this.length) { + this.length = offset + dataLength; + } else { + this.length += dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write data. + * + * @param dataLength { Number } The length of the data that needs to be written. + * @param offset { Number } The offset of the data to be written (defaults to writeOffset). + */ + _ensureWriteable(dataLength, offset) { + const offsetVal = typeof offset === "number" ? offset : this._writeOffset; + this._ensureCapacity(offsetVal + dataLength); + if (offsetVal + dataLength > this.length) { + this.length = offsetVal + dataLength; + } + } + /** + * Ensures that the internal Buffer is large enough to write at least the given amount of data. + * + * @param minLength { Number } The minimum length of the data needs to be written. + */ + _ensureCapacity(minLength) { + const oldLength = this._buff.length; + if (minLength > oldLength) { + let data = this._buff; + let newLength = oldLength * 3 / 2 + 1; + if (newLength < minLength) { + newLength = minLength; + } + this._buff = Buffer.allocUnsafe(newLength); + data.copy(this._buff, 0, 0, oldLength); + } + } + /** + * Reads a numeric number value using the provided function. + * + * @typeparam T { number | bigint } The type of the value to be read + * + * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. + * @param byteSize { Number } The number of bytes read. + * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. + * + * @returns { T } the number value + */ + _readNumberValue(func, byteSize, offset) { + this.ensureReadable(byteSize, offset); + const value = func.call(this._buff, typeof offset === "number" ? offset : this._readOffset); + if (typeof offset === "undefined") { + this._readOffset += byteSize; + } + return value; + } + /** + * Inserts a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _insertNumberValue(func, byteSize, value, offset) { + utils_1.checkOffsetValue(offset); + this.ensureInsertable(byteSize, offset); + func.call(this._buff, value, offset); + this._writeOffset += byteSize; + return this; + } + /** + * Writes a numeric number value based on the given offset and value. + * + * @typeparam T { number | bigint } The type of the value to be written + * + * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. + * @param byteSize { Number } The number of bytes written. + * @param value { T } The number value to write. + * @param offset { Number } the offset to write the number at (REQUIRED). + * + * @returns SmartBuffer this buffer + */ + _writeNumberValue(func, byteSize, value, offset) { + if (typeof offset === "number") { + if (offset < 0) { + throw new Error(utils_1.ERRORS.INVALID_WRITE_BEYOND_BOUNDS); + } + utils_1.checkOffsetValue(offset); + } + const offsetVal = typeof offset === "number" ? offset : this._writeOffset; + this._ensureWriteable(byteSize, offsetVal); + func.call(this._buff, value, offsetVal); + if (typeof offset === "number") { + this._writeOffset = Math.max(this._writeOffset, offsetVal + byteSize); + } else { + this._writeOffset += byteSize; + } + return this; + } + }; + exports2.SmartBuffer = SmartBuffer; + } +}); + +// node_modules/socks/build/common/constants.js +var require_constants9 = __commonJS({ + "node_modules/socks/build/common/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SOCKS5_NO_ACCEPTABLE_AUTH = exports2.SOCKS5_CUSTOM_AUTH_END = exports2.SOCKS5_CUSTOM_AUTH_START = exports2.SOCKS_INCOMING_PACKET_SIZES = exports2.SocksClientState = exports2.Socks5Response = exports2.Socks5HostType = exports2.Socks5Auth = exports2.Socks4Response = exports2.SocksCommand = exports2.ERRORS = exports2.DEFAULT_TIMEOUT = void 0; + var DEFAULT_TIMEOUT = 3e4; + exports2.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; + var ERRORS = { + InvalidSocksCommand: "An invalid SOCKS command was provided. Valid options are connect, bind, and associate.", + InvalidSocksCommandForOperation: "An invalid SOCKS command was provided. Only a subset of commands are supported for this operation.", + InvalidSocksCommandChain: "An invalid SOCKS command was provided. Chaining currently only supports the connect command.", + InvalidSocksClientOptionsDestination: "An invalid destination host was provided.", + InvalidSocksClientOptionsExistingSocket: "An invalid existing socket was provided. This should be an instance of stream.Duplex.", + InvalidSocksClientOptionsProxy: "Invalid SOCKS proxy details were provided.", + InvalidSocksClientOptionsTimeout: "An invalid timeout value was provided. Please enter a value above 0 (in ms).", + InvalidSocksClientOptionsProxiesLength: "At least two socks proxies must be provided for chaining.", + InvalidSocksClientOptionsCustomAuthRange: "Custom auth must be a value between 0x80 and 0xFE.", + InvalidSocksClientOptionsCustomAuthOptions: "When a custom_auth_method is provided, custom_auth_request_handler, custom_auth_response_size, and custom_auth_response_handler must also be provided and valid.", + NegotiationError: "Negotiation error", + SocketClosed: "Socket closed", + ProxyConnectionTimedOut: "Proxy connection timed out", + InternalError: "SocksClient internal error (this should not happen)", + InvalidSocks4HandshakeResponse: "Received invalid Socks4 handshake response", + Socks4ProxyRejectedConnection: "Socks4 Proxy rejected connection", + InvalidSocks4IncomingConnectionResponse: "Socks4 invalid incoming connection response", + Socks4ProxyRejectedIncomingBoundConnection: "Socks4 Proxy rejected incoming bound connection", + InvalidSocks5InitialHandshakeResponse: "Received invalid Socks5 initial handshake response", + InvalidSocks5IntiailHandshakeSocksVersion: "Received invalid Socks5 initial handshake (invalid socks version)", + InvalidSocks5InitialHandshakeNoAcceptedAuthType: "Received invalid Socks5 initial handshake (no accepted authentication type)", + InvalidSocks5InitialHandshakeUnknownAuthType: "Received invalid Socks5 initial handshake (unknown authentication type)", + Socks5AuthenticationFailed: "Socks5 Authentication failed", + InvalidSocks5FinalHandshake: "Received invalid Socks5 final handshake response", + InvalidSocks5FinalHandshakeRejected: "Socks5 proxy rejected connection", + InvalidSocks5IncomingConnectionResponse: "Received invalid Socks5 incoming connection response", + Socks5ProxyRejectedIncomingBoundConnection: "Socks5 Proxy rejected incoming bound connection" + }; + exports2.ERRORS = ERRORS; + var SOCKS_INCOMING_PACKET_SIZES = { + Socks5InitialHandshakeResponse: 2, + Socks5UserPassAuthenticationResponse: 2, + // Command response + incoming connection (bind) + Socks5ResponseHeader: 5, + // We need at least 5 to read the hostname length, then we wait for the address+port information. + Socks5ResponseIPv4: 10, + // 4 header + 4 ip + 2 port + Socks5ResponseIPv6: 22, + // 4 header + 16 ip + 2 port + Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, + // 4 header + 1 host length + host + 2 port + // Command response + incoming connection (bind) + Socks4Response: 8 + // 2 header + 2 port + 4 ip + }; + exports2.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES; + var SocksCommand; + (function(SocksCommand2) { + SocksCommand2[SocksCommand2["connect"] = 1] = "connect"; + SocksCommand2[SocksCommand2["bind"] = 2] = "bind"; + SocksCommand2[SocksCommand2["associate"] = 3] = "associate"; + })(SocksCommand || (exports2.SocksCommand = SocksCommand = {})); + var Socks4Response; + (function(Socks4Response2) { + Socks4Response2[Socks4Response2["Granted"] = 90] = "Granted"; + Socks4Response2[Socks4Response2["Failed"] = 91] = "Failed"; + Socks4Response2[Socks4Response2["Rejected"] = 92] = "Rejected"; + Socks4Response2[Socks4Response2["RejectedIdent"] = 93] = "RejectedIdent"; + })(Socks4Response || (exports2.Socks4Response = Socks4Response = {})); + var Socks5Auth; + (function(Socks5Auth2) { + Socks5Auth2[Socks5Auth2["NoAuth"] = 0] = "NoAuth"; + Socks5Auth2[Socks5Auth2["GSSApi"] = 1] = "GSSApi"; + Socks5Auth2[Socks5Auth2["UserPass"] = 2] = "UserPass"; + })(Socks5Auth || (exports2.Socks5Auth = Socks5Auth = {})); + var SOCKS5_CUSTOM_AUTH_START = 128; + exports2.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START; + var SOCKS5_CUSTOM_AUTH_END = 254; + exports2.SOCKS5_CUSTOM_AUTH_END = SOCKS5_CUSTOM_AUTH_END; + var SOCKS5_NO_ACCEPTABLE_AUTH = 255; + exports2.SOCKS5_NO_ACCEPTABLE_AUTH = SOCKS5_NO_ACCEPTABLE_AUTH; + var Socks5Response; + (function(Socks5Response2) { + Socks5Response2[Socks5Response2["Granted"] = 0] = "Granted"; + Socks5Response2[Socks5Response2["Failure"] = 1] = "Failure"; + Socks5Response2[Socks5Response2["NotAllowed"] = 2] = "NotAllowed"; + Socks5Response2[Socks5Response2["NetworkUnreachable"] = 3] = "NetworkUnreachable"; + Socks5Response2[Socks5Response2["HostUnreachable"] = 4] = "HostUnreachable"; + Socks5Response2[Socks5Response2["ConnectionRefused"] = 5] = "ConnectionRefused"; + Socks5Response2[Socks5Response2["TTLExpired"] = 6] = "TTLExpired"; + Socks5Response2[Socks5Response2["CommandNotSupported"] = 7] = "CommandNotSupported"; + Socks5Response2[Socks5Response2["AddressNotSupported"] = 8] = "AddressNotSupported"; + })(Socks5Response || (exports2.Socks5Response = Socks5Response = {})); + var Socks5HostType; + (function(Socks5HostType2) { + Socks5HostType2[Socks5HostType2["IPv4"] = 1] = "IPv4"; + Socks5HostType2[Socks5HostType2["Hostname"] = 3] = "Hostname"; + Socks5HostType2[Socks5HostType2["IPv6"] = 4] = "IPv6"; + })(Socks5HostType || (exports2.Socks5HostType = Socks5HostType = {})); + var SocksClientState; + (function(SocksClientState2) { + SocksClientState2[SocksClientState2["Created"] = 0] = "Created"; + SocksClientState2[SocksClientState2["Connecting"] = 1] = "Connecting"; + SocksClientState2[SocksClientState2["Connected"] = 2] = "Connected"; + SocksClientState2[SocksClientState2["SentInitialHandshake"] = 3] = "SentInitialHandshake"; + SocksClientState2[SocksClientState2["ReceivedInitialHandshakeResponse"] = 4] = "ReceivedInitialHandshakeResponse"; + SocksClientState2[SocksClientState2["SentAuthentication"] = 5] = "SentAuthentication"; + SocksClientState2[SocksClientState2["ReceivedAuthenticationResponse"] = 6] = "ReceivedAuthenticationResponse"; + SocksClientState2[SocksClientState2["SentFinalHandshake"] = 7] = "SentFinalHandshake"; + SocksClientState2[SocksClientState2["ReceivedFinalResponse"] = 8] = "ReceivedFinalResponse"; + SocksClientState2[SocksClientState2["BoundWaitingForConnection"] = 9] = "BoundWaitingForConnection"; + SocksClientState2[SocksClientState2["Established"] = 10] = "Established"; + SocksClientState2[SocksClientState2["Disconnected"] = 11] = "Disconnected"; + SocksClientState2[SocksClientState2["Error"] = 99] = "Error"; + })(SocksClientState || (exports2.SocksClientState = SocksClientState = {})); + } +}); + +// node_modules/socks/build/common/util.js +var require_util3 = __commonJS({ + "node_modules/socks/build/common/util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.shuffleArray = exports2.SocksClientError = void 0; + var SocksClientError = class extends Error { + constructor(message, options) { + super(message); + this.options = options; + } + }; + exports2.SocksClientError = SocksClientError; + function shuffleArray(array) { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } + } + exports2.shuffleArray = shuffleArray; + } +}); + +// node_modules/ip-address/dist/common.js +var require_common = __commonJS({ + "node_modules/ip-address/dist/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isInSubnet = isInSubnet; + exports2.isCorrect = isCorrect; + exports2.numberToPaddedHex = numberToPaddedHex; + exports2.stringToPaddedHex = stringToPaddedHex; + exports2.testBit = testBit; + function isInSubnet(address) { + if (this.subnetMask < address.subnetMask) { + return false; + } + if (this.mask(address.subnetMask) === address.mask()) { + return true; + } + return false; + } + function isCorrect(defaultBits) { + return function() { + if (this.addressMinusSuffix !== this.correctForm()) { + return false; + } + if (this.subnetMask === defaultBits && !this.parsedSubnet) { + return true; + } + return this.parsedSubnet === String(this.subnetMask); + }; + } + function numberToPaddedHex(number) { + return number.toString(16).padStart(2, "0"); + } + function stringToPaddedHex(numberString) { + return numberToPaddedHex(parseInt(numberString, 10)); + } + function testBit(binaryValue, position) { + const { length } = binaryValue; + if (position > length) { + return false; + } + const positionInString = length - position; + return binaryValue.substring(positionInString, positionInString + 1) === "1"; + } + } +}); + +// node_modules/ip-address/dist/v4/constants.js +var require_constants10 = __commonJS({ + "node_modules/ip-address/dist/v4/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RE_SUBNET_STRING = exports2.RE_ADDRESS = exports2.GROUPS = exports2.BITS = void 0; + exports2.BITS = 32; + exports2.GROUPS = 4; + exports2.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g; + exports2.RE_SUBNET_STRING = /\/\d{1,2}$/; + } +}); + +// node_modules/ip-address/dist/address-error.js +var require_address_error = __commonJS({ + "node_modules/ip-address/dist/address-error.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AddressError = void 0; + var AddressError = class extends Error { + constructor(message, parseMessage) { + super(message); + this.name = "AddressError"; + this.parseMessage = parseMessage; + } + }; + exports2.AddressError = AddressError; + } +}); + +// node_modules/ip-address/dist/ipv4.js +var require_ipv4 = __commonJS({ + "node_modules/ip-address/dist/ipv4.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Address4 = void 0; + var common = __importStar2(require_common()); + var constants = __importStar2(require_constants10()); + var address_error_1 = require_address_error(); + var Address4 = class _Address4 { + constructor(address) { + this.groups = constants.GROUPS; + this.parsedAddress = []; + this.parsedSubnet = ""; + this.subnet = "/32"; + this.subnetMask = 32; + this.v4 = true; + this.isCorrect = common.isCorrect(constants.BITS); + this.isInSubnet = common.isInSubnet; + this.address = address; + const subnet = constants.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace("/", ""); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + address = address.replace(constants.RE_SUBNET_STRING, ""); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(address); + } + static isValid(address) { + try { + new _Address4(address); + return true; + } catch (e) { + return false; + } + } + /* + * Parses a v4 address + */ + parse(address) { + const groups = address.split("."); + if (!address.match(constants.RE_ADDRESS)) { + throw new address_error_1.AddressError("Invalid IPv4 address."); + } + return groups; + } + /** + * Returns the correct form of an address + * @memberof Address4 + * @instance + * @returns {String} + */ + correctForm() { + return this.parsedAddress.map((part) => parseInt(part, 10)).join("."); + } + /** + * Converts a hex string to an IPv4 address object + * @memberof Address4 + * @static + * @param {string} hex - a hex string to convert + * @returns {Address4} + */ + static fromHex(hex) { + const padded = hex.replace(/:/g, "").padStart(8, "0"); + const groups = []; + let i; + for (i = 0; i < 8; i += 2) { + const h = padded.slice(i, i + 2); + groups.push(parseInt(h, 16)); + } + return new _Address4(groups.join(".")); + } + /** + * Converts an integer into a IPv4 address object + * @memberof Address4 + * @static + * @param {integer} integer - a number to convert + * @returns {Address4} + */ + static fromInteger(integer) { + return _Address4.fromHex(integer.toString(16)); + } + /** + * Return an address from in-addr.arpa form + * @memberof Address4 + * @static + * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address + * @returns {Adress4} + * @example + * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.) + * address.correctForm(); // '192.0.2.42' + */ + static fromArpa(arpaFormAddress) { + const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, ""); + const address = leader.split(".").reverse().join("."); + return new _Address4(address); + } + /** + * Converts an IPv4 address object to a hex string + * @memberof Address4 + * @instance + * @returns {String} + */ + toHex() { + return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(":"); + } + /** + * Converts an IPv4 address object to an array of bytes + * @memberof Address4 + * @instance + * @returns {Array} + */ + toArray() { + return this.parsedAddress.map((part) => parseInt(part, 10)); + } + /** + * Converts an IPv4 address object to an IPv6 address group + * @memberof Address4 + * @instance + * @returns {String} + */ + toGroup6() { + const output = []; + let i; + for (i = 0; i < constants.GROUPS; i += 2) { + output.push(`${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(this.parsedAddress[i + 1])}`); + } + return output.join(":"); + } + /** + * Returns the address as a `bigint` + * @memberof Address4 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join("")}`); + } + /** + * Helper function getting start address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + "0".repeat(constants.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet. + * Often referred to as the Network Address. + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddress() { + return _Address4.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + startAddressExclusive() { + const adjust = BigInt("1"); + return _Address4.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address4 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + "1".repeat(constants.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddress() { + return _Address4.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address4 + * @instance + * @returns {Address4} + */ + endAddressExclusive() { + const adjust = BigInt("1"); + return _Address4.fromBigInt(this._endAddress() - adjust); + } + /** + * Converts a BigInt to a v4 address object + * @memberof Address4 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address4} + */ + static fromBigInt(bigInt) { + return _Address4.fromHex(bigInt.toString(16)); + } + /** + * Convert a byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 bytes (0-255) + * @returns {Address4} + */ + static fromByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError("IPv4 addresses require exactly 4 bytes"); + } + for (let i = 0; i < bytes.length; i++) { + if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) { + throw new address_error_1.AddressError("All bytes must be integers between 0 and 255"); + } + } + return this.fromUnsignedByteArray(bytes); + } + /** + * Convert an unsigned byte array to an Address4 object + * @memberof Address4 + * @static + * @param {Array} bytes - an array of 4 unsigned bytes (0-255) + * @returns {Address4} + */ + static fromUnsignedByteArray(bytes) { + if (bytes.length !== 4) { + throw new address_error_1.AddressError("IPv4 addresses require exactly 4 bytes"); + } + const address = bytes.join("."); + return new _Address4(address); + } + /** + * Returns the first n bits of the address, defaulting to the + * subnet mask + * @memberof Address4 + * @instance + * @returns {String} + */ + mask(mask) { + if (mask === void 0) { + mask = this.subnetMask; + } + return this.getBitsBase2(0, mask); + } + /** + * Returns the bits in the given range as a base-2 string + * @memberof Address4 + * @instance + * @returns {string} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address4 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const reversed = this.correctForm().split(".").reverse().join("."); + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.in-addr.arpa.`; + } + /** + * Returns true if the given address is a multicast address + * @memberof Address4 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.isInSubnet(new _Address4("224.0.0.0/4")); + } + /** + * Returns a zero-padded base-2 string representation of the address + * @memberof Address4 + * @instance + * @returns {string} + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants.BITS, "0"); + } + /** + * Groups an IPv4 address for inclusion at the end of an IPv6 address + * @returns {String} + */ + groupForV6() { + const segments = this.parsedAddress; + return this.address.replace(constants.RE_ADDRESS, `${segments.slice(0, 2).join(".")}.${segments.slice(2, 4).join(".")}`); + } + }; + exports2.Address4 = Address4; + } +}); + +// node_modules/ip-address/dist/v6/constants.js +var require_constants11 = __commonJS({ + "node_modules/ip-address/dist/v6/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RE_URL_WITH_PORT = exports2.RE_URL = exports2.RE_ZONE_STRING = exports2.RE_SUBNET_STRING = exports2.RE_BAD_ADDRESS = exports2.RE_BAD_CHARACTERS = exports2.TYPES = exports2.SCOPES = exports2.GROUPS = exports2.BITS = void 0; + exports2.BITS = 128; + exports2.GROUPS = 8; + exports2.SCOPES = { + 0: "Reserved", + 1: "Interface local", + 2: "Link local", + 4: "Admin local", + 5: "Site local", + 8: "Organization local", + 14: "Global", + 15: "Reserved" + }; + exports2.TYPES = { + "ff01::1/128": "Multicast (All nodes on this interface)", + "ff01::2/128": "Multicast (All routers on this interface)", + "ff02::1/128": "Multicast (All nodes on this link)", + "ff02::2/128": "Multicast (All routers on this link)", + "ff05::2/128": "Multicast (All routers in this site)", + "ff02::5/128": "Multicast (OSPFv3 AllSPF routers)", + "ff02::6/128": "Multicast (OSPFv3 AllDR routers)", + "ff02::9/128": "Multicast (RIP routers)", + "ff02::a/128": "Multicast (EIGRP routers)", + "ff02::d/128": "Multicast (PIM routers)", + "ff02::16/128": "Multicast (MLDv2 reports)", + "ff01::fb/128": "Multicast (mDNSv6)", + "ff02::fb/128": "Multicast (mDNSv6)", + "ff05::fb/128": "Multicast (mDNSv6)", + "ff02::1:2/128": "Multicast (All DHCP servers and relay agents on this link)", + "ff05::1:2/128": "Multicast (All DHCP servers and relay agents in this site)", + "ff02::1:3/128": "Multicast (All DHCP servers on this link)", + "ff05::1:3/128": "Multicast (All DHCP servers in this site)", + "::/128": "Unspecified", + "::1/128": "Loopback", + "ff00::/8": "Multicast", + "fe80::/10": "Link-local unicast" + }; + exports2.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; + exports2.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; + exports2.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; + exports2.RE_ZONE_STRING = /%.*$/; + exports2.RE_URL = /^\[{0,1}([0-9a-f:]+)\]{0,1}/; + exports2.RE_URL_WITH_PORT = /\[([0-9a-f:]+)\]:([0-9]{1,5})/; + } +}); + +// node_modules/ip-address/dist/v6/helpers.js +var require_helpers3 = __commonJS({ + "node_modules/ip-address/dist/v6/helpers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.spanAllZeroes = spanAllZeroes; + exports2.spanAll = spanAll; + exports2.spanLeadingZeroes = spanLeadingZeroes; + exports2.simpleGroup = simpleGroup; + function spanAllZeroes(s) { + return s.replace(/(0+)/g, '$1'); + } + function spanAll(s, offset = 0) { + const letters = s.split(""); + return letters.map((n, i) => `${spanAllZeroes(n)}`).join(""); + } + function spanLeadingZeroesSimple(group) { + return group.replace(/^(0+)/, '$1'); + } + function spanLeadingZeroes(address) { + const groups = address.split(":"); + return groups.map((g) => spanLeadingZeroesSimple(g)).join(":"); + } + function simpleGroup(addressString, offset = 0) { + const groups = addressString.split(":"); + return groups.map((g, i) => { + if (/group-v4/.test(g)) { + return g; + } + return `${spanLeadingZeroesSimple(g)}`; + }); + } + } +}); + +// node_modules/ip-address/dist/v6/regular-expressions.js +var require_regular_expressions = __commonJS({ + "node_modules/ip-address/dist/v6/regular-expressions.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ADDRESS_BOUNDARY = void 0; + exports2.groupPossibilities = groupPossibilities; + exports2.padGroup = padGroup; + exports2.simpleRegularExpression = simpleRegularExpression; + exports2.possibleElisions = possibleElisions; + var v6 = __importStar2(require_constants11()); + function groupPossibilities(possibilities) { + return `(${possibilities.join("|")})`; + } + function padGroup(group) { + if (group.length < 4) { + return `0{0,${4 - group.length}}${group}`; + } + return group; + } + exports2.ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]"; + function simpleRegularExpression(groups) { + const zeroIndexes = []; + groups.forEach((group, i) => { + const groupInteger = parseInt(group, 16); + if (groupInteger === 0) { + zeroIndexes.push(i); + } + }); + const possibilities = zeroIndexes.map((zeroIndex) => groups.map((group, i) => { + if (i === zeroIndex) { + const elision = i === 0 || i === v6.GROUPS - 1 ? ":" : ""; + return groupPossibilities([padGroup(group), elision]); + } + return padGroup(group); + }).join(":")); + possibilities.push(groups.map(padGroup).join(":")); + return groupPossibilities(possibilities); + } + function possibleElisions(elidedGroups, moreLeft, moreRight) { + const left = moreLeft ? "" : ":"; + const right = moreRight ? "" : ":"; + const possibilities = []; + if (!moreLeft && !moreRight) { + possibilities.push("::"); + } + if (moreLeft && moreRight) { + possibilities.push(""); + } + if (moreRight && !moreLeft || !moreRight && moreLeft) { + possibilities.push(":"); + } + possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`); + possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`); + possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`); + for (let groups = 1; groups < elidedGroups - 1; groups++) { + for (let position = 1; position < elidedGroups - groups; position++) { + possibilities.push(`(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`); + } + } + return groupPossibilities(possibilities); + } + } +}); + +// node_modules/ip-address/dist/ipv6.js +var require_ipv6 = __commonJS({ + "node_modules/ip-address/dist/ipv6.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Address6 = void 0; + var common = __importStar2(require_common()); + var constants4 = __importStar2(require_constants10()); + var constants6 = __importStar2(require_constants11()); + var helpers = __importStar2(require_helpers3()); + var ipv4_1 = require_ipv4(); + var regular_expressions_1 = require_regular_expressions(); + var address_error_1 = require_address_error(); + var common_1 = require_common(); + function assert(condition) { + if (!condition) { + throw new Error("Assertion failed."); + } + } + function addCommas(number) { + const r = /(\d+)(\d{3})/; + while (r.test(number)) { + number = number.replace(r, "$1,$2"); + } + return number; + } + function spanLeadingZeroes4(n) { + n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2'); + n = n.replace(/^(0{1,})(0)$/, '$1$2'); + return n; + } + function compact(address, slice) { + const s1 = []; + const s2 = []; + let i; + for (i = 0; i < address.length; i++) { + if (i < slice[0]) { + s1.push(address[i]); + } else if (i > slice[1]) { + s2.push(address[i]); + } + } + return s1.concat(["compact"]).concat(s2); + } + function paddedHex(octet) { + return parseInt(octet, 16).toString(16).padStart(4, "0"); + } + function unsignByte(b) { + return b & 255; + } + var Address6 = class _Address6 { + constructor(address, optionalGroups) { + this.addressMinusSuffix = ""; + this.parsedSubnet = ""; + this.subnet = "/128"; + this.subnetMask = 128; + this.v4 = false; + this.zone = ""; + this.isInSubnet = common.isInSubnet; + this.isCorrect = common.isCorrect(constants6.BITS); + if (optionalGroups === void 0) { + this.groups = constants6.GROUPS; + } else { + this.groups = optionalGroups; + } + this.address = address; + const subnet = constants6.RE_SUBNET_STRING.exec(address); + if (subnet) { + this.parsedSubnet = subnet[0].replace("/", ""); + this.subnetMask = parseInt(this.parsedSubnet, 10); + this.subnet = `/${this.subnetMask}`; + if (Number.isNaN(this.subnetMask) || this.subnetMask < 0 || this.subnetMask > constants6.BITS) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + address = address.replace(constants6.RE_SUBNET_STRING, ""); + } else if (/\//.test(address)) { + throw new address_error_1.AddressError("Invalid subnet mask."); + } + const zone = constants6.RE_ZONE_STRING.exec(address); + if (zone) { + this.zone = zone[0]; + address = address.replace(constants6.RE_ZONE_STRING, ""); + } + this.addressMinusSuffix = address; + this.parsedAddress = this.parse(this.addressMinusSuffix); + } + static isValid(address) { + try { + new _Address6(address); + return true; + } catch (e) { + return false; + } + } + /** + * Convert a BigInt to a v6 address object + * @memberof Address6 + * @static + * @param {bigint} bigInt - a BigInt to convert + * @returns {Address6} + * @example + * var bigInt = BigInt('1000000000000'); + * var address = Address6.fromBigInt(bigInt); + * address.correctForm(); // '::e8:d4a5:1000' + */ + static fromBigInt(bigInt) { + const hex = bigInt.toString(16).padStart(32, "0"); + const groups = []; + let i; + for (i = 0; i < constants6.GROUPS; i++) { + groups.push(hex.slice(i * 4, (i + 1) * 4)); + } + return new _Address6(groups.join(":")); + } + /** + * Convert a URL (with optional port number) to an address object + * @memberof Address6 + * @static + * @param {string} url - a URL with optional port number + * @example + * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); + * addressAndPort.address.correctForm(); // 'ffff::' + * addressAndPort.port; // 8080 + */ + static fromURL(url) { + let host; + let port = null; + let result; + if (url.indexOf("[") !== -1 && url.indexOf("]:") !== -1) { + result = constants6.RE_URL_WITH_PORT.exec(url); + if (result === null) { + return { + error: "failed to parse address with port", + address: null, + port: null + }; + } + host = result[1]; + port = result[2]; + } else if (url.indexOf("/") !== -1) { + url = url.replace(/^[a-z0-9]+:\/\//, ""); + result = constants6.RE_URL.exec(url); + if (result === null) { + return { + error: "failed to parse address from URL", + address: null, + port: null + }; + } + host = result[1]; + } else { + host = url; + } + if (port) { + port = parseInt(port, 10); + if (port < 0 || port > 65536) { + port = null; + } + } else { + port = null; + } + return { + address: new _Address6(host), + port + }; + } + /** + * Create an IPv6-mapped address given an IPv4 address + * @memberof Address6 + * @static + * @param {string} address - An IPv4 address string + * @returns {Address6} + * @example + * var address = Address6.fromAddress4('192.168.0.1'); + * address.correctForm(); // '::ffff:c0a8:1' + * address.to4in6(); // '::ffff:192.168.0.1' + */ + static fromAddress4(address) { + const address4 = new ipv4_1.Address4(address); + const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); + return new _Address6(`::ffff:${address4.correctForm()}/${mask6}`); + } + /** + * Return an address from ip6.arpa form + * @memberof Address6 + * @static + * @param {string} arpaFormAddress - an 'ip6.arpa' form address + * @returns {Adress6} + * @example + * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) + * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' + */ + static fromArpa(arpaFormAddress) { + let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, ""); + const semicolonAmount = 7; + if (address.length !== 63) { + throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); + } + const parts = address.split(".").reverse(); + for (let i = semicolonAmount; i > 0; i--) { + const insertIndex = i * 4; + parts.splice(insertIndex, 0, ":"); + } + address = parts.join(""); + return new _Address6(address); + } + /** + * Return the Microsoft UNC transcription of the address + * @memberof Address6 + * @instance + * @returns {String} the Microsoft UNC transcription of the address + */ + microsoftTranscription() { + return `${this.correctForm().replace(/:/g, "-")}.ipv6-literal.net`; + } + /** + * Return the first n bits of the address, defaulting to the subnet mask + * @memberof Address6 + * @instance + * @param {number} [mask=subnet] - the number of bits to mask + * @returns {String} the first n bits of the address as a string + */ + mask(mask = this.subnetMask) { + return this.getBitsBase2(0, mask); + } + /** + * Return the number of possible subnets of a given size in the address + * @memberof Address6 + * @instance + * @param {number} [subnetSize=128] - the subnet size + * @returns {String} + */ + // TODO: probably useful to have a numeric version of this too + possibleSubnets(subnetSize = 128) { + const availableBits = constants6.BITS - this.subnetMask; + const subnetBits = Math.abs(subnetSize - constants6.BITS); + const subnetPowers = availableBits - subnetBits; + if (subnetPowers < 0) { + return "0"; + } + return addCommas((BigInt("2") ** BigInt(subnetPowers)).toString(10)); + } + /** + * Helper function getting start address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _startAddress() { + return BigInt(`0b${this.mask() + "0".repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The first address in the range given by this address' subnet + * Often referred to as the Network Address. + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddress() { + return _Address6.fromBigInt(this._startAddress()); + } + /** + * The first host address in the range given by this address's subnet ie + * the first address after the Network Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + startAddressExclusive() { + const adjust = BigInt("1"); + return _Address6.fromBigInt(this._startAddress() + adjust); + } + /** + * Helper function getting end address. + * @memberof Address6 + * @instance + * @returns {bigint} + */ + _endAddress() { + return BigInt(`0b${this.mask() + "1".repeat(constants6.BITS - this.subnetMask)}`); + } + /** + * The last address in the range given by this address' subnet + * Often referred to as the Broadcast + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddress() { + return _Address6.fromBigInt(this._endAddress()); + } + /** + * The last host address in the range given by this address's subnet ie + * the last address prior to the Broadcast Address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + endAddressExclusive() { + const adjust = BigInt("1"); + return _Address6.fromBigInt(this._endAddress() - adjust); + } + /** + * Return the scope of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getScope() { + let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)]; + if (this.getType() === "Global unicast" && scope !== "Link local") { + scope = "Global"; + } + return scope || "Unknown"; + } + /** + * Return the type of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + getType() { + for (const subnet of Object.keys(constants6.TYPES)) { + if (this.isInSubnet(new _Address6(subnet))) { + return constants6.TYPES[subnet]; + } + } + return "Global unicast"; + } + /** + * Return the bits in the given range as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + getBits(start, end) { + return BigInt(`0b${this.getBitsBase2(start, end)}`); + } + /** + * Return the bits in the given range as a base-2 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase2(start, end) { + return this.binaryZeroPad().slice(start, end); + } + /** + * Return the bits in the given range as a base-16 string + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsBase16(start, end) { + const length = end - start; + if (length % 4 !== 0) { + throw new Error("Length of bits to retrieve must be divisible by four"); + } + return this.getBits(start, end).toString(16).padStart(length / 4, "0"); + } + /** + * Return the bits that are set past the subnet mask length + * @memberof Address6 + * @instance + * @returns {String} + */ + getBitsPastSubnet() { + return this.getBitsBase2(this.subnetMask, constants6.BITS); + } + /** + * Return the reversed ip6.arpa form of the address + * @memberof Address6 + * @param {Object} options + * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix + * @instance + * @returns {String} + */ + reverseForm(options) { + if (!options) { + options = {}; + } + const characters = Math.floor(this.subnetMask / 4); + const reversed = this.canonicalForm().replace(/:/g, "").split("").slice(0, characters).reverse().join("."); + if (characters > 0) { + if (options.omitSuffix) { + return reversed; + } + return `${reversed}.ip6.arpa.`; + } + if (options.omitSuffix) { + return ""; + } + return "ip6.arpa."; + } + /** + * Return the correct form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + correctForm() { + let i; + let groups = []; + let zeroCounter = 0; + const zeroes = []; + for (i = 0; i < this.parsedAddress.length; i++) { + const value = parseInt(this.parsedAddress[i], 16); + if (value === 0) { + zeroCounter++; + } + if (value !== 0 && zeroCounter > 0) { + if (zeroCounter > 1) { + zeroes.push([i - zeroCounter, i - 1]); + } + zeroCounter = 0; + } + } + if (zeroCounter > 1) { + zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); + } + const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); + if (zeroes.length > 0) { + const index = zeroLengths.indexOf(Math.max(...zeroLengths)); + groups = compact(this.parsedAddress, zeroes[index]); + } else { + groups = this.parsedAddress; + } + for (i = 0; i < groups.length; i++) { + if (groups[i] !== "compact") { + groups[i] = parseInt(groups[i], 16).toString(16); + } + } + let correct = groups.join(":"); + correct = correct.replace(/^compact$/, "::"); + correct = correct.replace(/(^compact)|(compact$)/, ":"); + correct = correct.replace(/compact/, ""); + return correct; + } + /** + * Return a zero-padded base-2 string representation of the address + * @memberof Address6 + * @instance + * @returns {String} + * @example + * var address = new Address6('2001:4860:4001:803::1011'); + * address.binaryZeroPad(); + * // '0010000000000001010010000110000001000000000000010000100000000011 + * // 0000000000000000000000000000000000000000000000000001000000010001' + */ + binaryZeroPad() { + return this.bigInt().toString(2).padStart(constants6.BITS, "0"); + } + // TODO: Improve the semantics of this helper function + parse4in6(address) { + const groups = address.split(":"); + const lastGroup = groups.slice(-1)[0]; + const address4 = lastGroup.match(constants4.RE_ADDRESS); + if (address4) { + this.parsedAddress4 = address4[0]; + this.address4 = new ipv4_1.Address4(this.parsedAddress4); + for (let i = 0; i < this.address4.groups; i++) { + if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) { + throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join("."))); + } + } + this.v4 = true; + groups[groups.length - 1] = this.address4.toGroup6(); + address = groups.join(":"); + } + return address; + } + // TODO: Make private? + parse(address) { + address = this.parse4in6(address); + const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); + if (badCharacters) { + throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? "s" : ""} detected in address: ${badCharacters.join("")}`, address.replace(constants6.RE_BAD_CHARACTERS, '$1')); + } + const badAddress = address.match(constants6.RE_BAD_ADDRESS); + if (badAddress) { + throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join("")}`, address.replace(constants6.RE_BAD_ADDRESS, '$1')); + } + let groups = []; + const halves = address.split("::"); + if (halves.length === 2) { + let first = halves[0].split(":"); + let last = halves[1].split(":"); + if (first.length === 1 && first[0] === "") { + first = []; + } + if (last.length === 1 && last[0] === "") { + last = []; + } + const remaining = this.groups - (first.length + last.length); + if (!remaining) { + throw new address_error_1.AddressError("Error parsing groups"); + } + this.elidedGroups = remaining; + this.elisionBegin = first.length; + this.elisionEnd = first.length + this.elidedGroups; + groups = groups.concat(first); + for (let i = 0; i < remaining; i++) { + groups.push("0"); + } + groups = groups.concat(last); + } else if (halves.length === 1) { + groups = address.split(":"); + this.elidedGroups = 0; + } else { + throw new address_error_1.AddressError("Too many :: groups found"); + } + groups = groups.map((group) => parseInt(group, 16).toString(16)); + if (groups.length !== this.groups) { + throw new address_error_1.AddressError("Incorrect number of groups found"); + } + return groups; + } + /** + * Return the canonical form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + canonicalForm() { + return this.parsedAddress.map(paddedHex).join(":"); + } + /** + * Return the decimal form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + decimal() { + return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, "0")).join(":"); + } + /** + * Return the address as a BigInt + * @memberof Address6 + * @instance + * @returns {bigint} + */ + bigInt() { + return BigInt(`0x${this.parsedAddress.map(paddedHex).join("")}`); + } + /** + * Return the last two groups of this address as an IPv4 address string + * @memberof Address6 + * @instance + * @returns {Address4} + * @example + * var address = new Address6('2001:4860:4001::1825:bf11'); + * address.to4().correctForm(); // '24.37.191.17' + */ + to4() { + const binary = this.binaryZeroPad().split(""); + return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join("")}`).toString(16)); + } + /** + * Return the v4-in-v6 form of the address + * @memberof Address6 + * @instance + * @returns {String} + */ + to4in6() { + const address4 = this.to4(); + const address6 = new _Address6(this.parsedAddress.slice(0, 6).join(":"), 6); + const correct = address6.correctForm(); + let infix = ""; + if (!/:$/.test(correct)) { + infix = ":"; + } + return correct + infix + address4.address; + } + /** + * Return an object containing the Teredo properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspectTeredo() { + const prefix = this.getBitsBase16(0, 32); + const bitsForUdpPort = this.getBits(80, 96); + const udpPort = (bitsForUdpPort ^ BigInt("0xffff")).toString(); + const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); + const bitsForClient4 = this.getBits(96, 128); + const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt("0xffffffff")).toString(16)); + const flagsBase2 = this.getBitsBase2(64, 80); + const coneNat = (0, common_1.testBit)(flagsBase2, 15); + const reserved = (0, common_1.testBit)(flagsBase2, 14); + const groupIndividual = (0, common_1.testBit)(flagsBase2, 8); + const universalLocal = (0, common_1.testBit)(flagsBase2, 9); + const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10); + return { + prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`, + server4: server4.address, + client4: client4.address, + flags: flagsBase2, + coneNat, + microsoft: { + reserved, + universalLocal, + groupIndividual, + nonce + }, + udpPort + }; + } + /** + * Return an object containing the 6to4 properties of the address + * @memberof Address6 + * @instance + * @returns {Object} + */ + inspect6to4() { + const prefix = this.getBitsBase16(0, 16); + const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); + return { + prefix: prefix.slice(0, 4), + gateway: gateway.address + }; + } + /** + * Return a v6 6to4 address from a v6 v4inv6 address + * @memberof Address6 + * @instance + * @returns {Address6} + */ + to6to4() { + if (!this.is4()) { + return null; + } + const addr6to4 = [ + "2002", + this.getBitsBase16(96, 112), + this.getBitsBase16(112, 128), + "", + "/16" + ].join(":"); + return new _Address6(addr6to4); + } + /** + * Return a byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toByteArray() { + const valueWithoutPadding = this.bigInt().toString(16); + const leadingPad = "0".repeat(valueWithoutPadding.length % 2); + const value = `${leadingPad}${valueWithoutPadding}`; + const bytes = []; + for (let i = 0, length = value.length; i < length; i += 2) { + bytes.push(parseInt(value.substring(i, i + 2), 16)); + } + return bytes; + } + /** + * Return an unsigned byte array + * @memberof Address6 + * @instance + * @returns {Array} + */ + toUnsignedByteArray() { + return this.toByteArray().map(unsignByte); + } + /** + * Convert a byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromByteArray(bytes) { + return this.fromUnsignedByteArray(bytes.map(unsignByte)); + } + /** + * Convert an unsigned byte array to an Address6 object + * @memberof Address6 + * @static + * @returns {Address6} + */ + static fromUnsignedByteArray(bytes) { + const BYTE_MAX = BigInt("256"); + let result = BigInt("0"); + let multiplier = BigInt("1"); + for (let i = bytes.length - 1; i >= 0; i--) { + result += multiplier * BigInt(bytes[i].toString(10)); + multiplier *= BYTE_MAX; + } + return _Address6.fromBigInt(result); + } + /** + * Returns true if the address is in the canonical form, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isCanonical() { + return this.addressMinusSuffix === this.canonicalForm(); + } + /** + * Returns true if the address is a link local address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLinkLocal() { + if (this.getBitsBase2(0, 64) === "1111111010000000000000000000000000000000000000000000000000000000") { + return true; + } + return false; + } + /** + * Returns true if the address is a multicast address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isMulticast() { + return this.getType() === "Multicast"; + } + /** + * Returns true if the address is a v4-in-v6 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is4() { + return this.v4; + } + /** + * Returns true if the address is a Teredo address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isTeredo() { + return this.isInSubnet(new _Address6("2001::/32")); + } + /** + * Returns true if the address is a 6to4 address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + is6to4() { + return this.isInSubnet(new _Address6("2002::/16")); + } + /** + * Returns true if the address is a loopback address, false otherwise + * @memberof Address6 + * @instance + * @returns {boolean} + */ + isLoopback() { + return this.getType() === "Loopback"; + } + // #endregion + // #region HTML + /** + * @returns {String} the address in link form with a default port of 80 + */ + href(optionalPort) { + if (optionalPort === void 0) { + optionalPort = ""; + } else { + optionalPort = `:${optionalPort}`; + } + return `http://[${this.correctForm()}]${optionalPort}/`; + } + /** + * @returns {String} a link suitable for conveying the address via a URL hash + */ + link(options) { + if (!options) { + options = {}; + } + if (options.className === void 0) { + options.className = ""; + } + if (options.prefix === void 0) { + options.prefix = "/#address="; + } + if (options.v4 === void 0) { + options.v4 = false; + } + let formFunction = this.correctForm; + if (options.v4) { + formFunction = this.to4in6; + } + const form = formFunction.call(this); + if (options.className) { + return `${form}`; + } + return `${form}`; + } + /** + * Groups an address + * @returns {String} + */ + group() { + if (this.elidedGroups === 0) { + return helpers.simpleGroup(this.address).join(":"); + } + assert(typeof this.elidedGroups === "number"); + assert(typeof this.elisionBegin === "number"); + const output = []; + const [left, right] = this.address.split("::"); + if (left.length) { + output.push(...helpers.simpleGroup(left)); + } else { + output.push(""); + } + const classes = ["hover-group"]; + for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { + classes.push(`group-${i}`); + } + output.push(``); + if (right.length) { + output.push(...helpers.simpleGroup(right, this.elisionEnd)); + } else { + output.push(""); + } + if (this.is4()) { + assert(this.address4 instanceof ipv4_1.Address4); + output.pop(); + output.push(this.address4.groupForV6()); + } + return output.join(":"); + } + // #endregion + // #region Regular expressions + /** + * Generate a regular expression string that can be used to find or validate + * all variations of this address + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {string} + */ + regularExpressionString(substringSearch = false) { + let output = []; + const address6 = new _Address6(this.correctForm()); + if (address6.elidedGroups === 0) { + output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); + } else if (address6.elidedGroups === constants6.GROUPS) { + output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); + } else { + const halves = address6.address.split("::"); + if (halves[0].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(":"))); + } + assert(typeof address6.elidedGroups === "number"); + output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); + if (halves[1].length) { + output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(":"))); + } + output = [output.join(":")]; + } + if (!substringSearch) { + output = [ + "(?=^|", + regular_expressions_1.ADDRESS_BOUNDARY, + "|[^\\w\\:])(", + ...output, + ")(?=[^\\w\\:]|", + regular_expressions_1.ADDRESS_BOUNDARY, + "|$)" + ]; + } + return output.join(""); + } + /** + * Generate a regular expression that can be used to find or validate all + * variations of this address. + * @memberof Address6 + * @instance + * @param {boolean} substringSearch + * @returns {RegExp} + */ + regularExpression(substringSearch = false) { + return new RegExp(this.regularExpressionString(substringSearch), "i"); + } + }; + exports2.Address6 = Address6; + } +}); + +// node_modules/ip-address/dist/ip-address.js +var require_ip_address = __commonJS({ + "node_modules/ip-address/dist/ip-address.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.v6 = exports2.AddressError = exports2.Address6 = exports2.Address4 = void 0; + var ipv4_1 = require_ipv4(); + Object.defineProperty(exports2, "Address4", { enumerable: true, get: function() { + return ipv4_1.Address4; + } }); + var ipv6_1 = require_ipv6(); + Object.defineProperty(exports2, "Address6", { enumerable: true, get: function() { + return ipv6_1.Address6; + } }); + var address_error_1 = require_address_error(); + Object.defineProperty(exports2, "AddressError", { enumerable: true, get: function() { + return address_error_1.AddressError; + } }); + var helpers = __importStar2(require_helpers3()); + exports2.v6 = { helpers }; + } +}); + +// node_modules/socks/build/common/helpers.js +var require_helpers4 = __commonJS({ + "node_modules/socks/build/common/helpers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ipToBuffer = exports2.int32ToIpv4 = exports2.ipv4ToInt32 = exports2.validateSocksClientChainOptions = exports2.validateSocksClientOptions = void 0; + var util_1 = require_util3(); + var constants_1 = require_constants9(); + var stream = __require("stream"); + var ip_address_1 = require_ip_address(); + var net = __require("net"); + function validateSocksClientOptions(options, acceptedCommands = ["connect", "bind", "associate"]) { + if (!constants_1.SocksCommand[options.command]) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommand, options); + } + if (acceptedCommands.indexOf(options.command) === -1) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandForOperation, options); + } + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + if (!isValidSocksProxy(options.proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + validateCustomProxyAuth(options.proxy, options); + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } + if (options.existing_socket && !(options.existing_socket instanceof stream.Duplex)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsExistingSocket, options); + } + } + exports2.validateSocksClientOptions = validateSocksClientOptions; + function validateSocksClientChainOptions(options) { + if (options.command !== "connect") { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandChain, options); + } + if (!isValidSocksRemoteHost(options.destination)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); + } + if (!(options.proxies && Array.isArray(options.proxies) && options.proxies.length >= 2)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxiesLength, options); + } + options.proxies.forEach((proxy) => { + if (!isValidSocksProxy(proxy)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); + } + validateCustomProxyAuth(proxy, options); + }); + if (options.timeout && !isValidTimeoutValue(options.timeout)) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); + } + } + exports2.validateSocksClientChainOptions = validateSocksClientChainOptions; + function validateCustomProxyAuth(proxy, options) { + if (proxy.custom_auth_method !== void 0) { + if (proxy.custom_auth_method < constants_1.SOCKS5_CUSTOM_AUTH_START || proxy.custom_auth_method > constants_1.SOCKS5_CUSTOM_AUTH_END) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthRange, options); + } + if (proxy.custom_auth_request_handler === void 0 || typeof proxy.custom_auth_request_handler !== "function") { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + if (proxy.custom_auth_response_size === void 0) { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + if (proxy.custom_auth_response_handler === void 0 || typeof proxy.custom_auth_response_handler !== "function") { + throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); + } + } + } + function isValidSocksRemoteHost(remoteHost) { + return remoteHost && typeof remoteHost.host === "string" && Buffer.byteLength(remoteHost.host) < 256 && typeof remoteHost.port === "number" && remoteHost.port >= 0 && remoteHost.port <= 65535; + } + function isValidSocksProxy(proxy) { + return proxy && (typeof proxy.host === "string" || typeof proxy.ipaddress === "string") && typeof proxy.port === "number" && proxy.port >= 0 && proxy.port <= 65535 && (proxy.type === 4 || proxy.type === 5); + } + function isValidTimeoutValue(value) { + return typeof value === "number" && value > 0; + } + function ipv4ToInt32(ip) { + const address = new ip_address_1.Address4(ip); + return address.toArray().reduce((acc, part) => (acc << 8) + part, 0) >>> 0; + } + exports2.ipv4ToInt32 = ipv4ToInt32; + function int32ToIpv4(int32) { + const octet1 = int32 >>> 24 & 255; + const octet2 = int32 >>> 16 & 255; + const octet3 = int32 >>> 8 & 255; + const octet4 = int32 & 255; + return [octet1, octet2, octet3, octet4].join("."); + } + exports2.int32ToIpv4 = int32ToIpv4; + function ipToBuffer(ip) { + if (net.isIPv4(ip)) { + const address = new ip_address_1.Address4(ip); + return Buffer.from(address.toArray()); + } else if (net.isIPv6(ip)) { + const address = new ip_address_1.Address6(ip); + return Buffer.from(address.canonicalForm().split(":").map((segment) => segment.padStart(4, "0")).join(""), "hex"); + } else { + throw new Error("Invalid IP address format"); + } + } + exports2.ipToBuffer = ipToBuffer; + } +}); + +// node_modules/socks/build/common/receivebuffer.js +var require_receivebuffer = __commonJS({ + "node_modules/socks/build/common/receivebuffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ReceiveBuffer = void 0; + var ReceiveBuffer = class { + constructor(size = 4096) { + this.buffer = Buffer.allocUnsafe(size); + this.offset = 0; + this.originalSize = size; + } + get length() { + return this.offset; + } + append(data) { + if (!Buffer.isBuffer(data)) { + throw new Error("Attempted to append a non-buffer instance to ReceiveBuffer."); + } + if (this.offset + data.length >= this.buffer.length) { + const tmp = this.buffer; + this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length)); + tmp.copy(this.buffer); + } + data.copy(this.buffer, this.offset); + return this.offset += data.length; + } + peek(length) { + if (length > this.offset) { + throw new Error("Attempted to read beyond the bounds of the managed internal data."); + } + return this.buffer.slice(0, length); + } + get(length) { + if (length > this.offset) { + throw new Error("Attempted to read beyond the bounds of the managed internal data."); + } + const value = Buffer.allocUnsafe(length); + this.buffer.slice(0, length).copy(value); + this.buffer.copyWithin(0, length, length + this.offset - length); + this.offset -= length; + return value; + } + }; + exports2.ReceiveBuffer = ReceiveBuffer; + } +}); + +// node_modules/socks/build/client/socksclient.js +var require_socksclient = __commonJS({ + "node_modules/socks/build/client/socksclient.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SocksClientError = exports2.SocksClient = void 0; + var events_1 = __require("events"); + var net = __require("net"); + var smart_buffer_1 = require_smartbuffer(); + var constants_1 = require_constants9(); + var helpers_1 = require_helpers4(); + var receivebuffer_1 = require_receivebuffer(); + var util_1 = require_util3(); + Object.defineProperty(exports2, "SocksClientError", { enumerable: true, get: function() { + return util_1.SocksClientError; + } }); + var ip_address_1 = require_ip_address(); + var SocksClient = class _SocksClient extends events_1.EventEmitter { + constructor(options) { + super(); + this.options = Object.assign({}, options); + (0, helpers_1.validateSocksClientOptions)(options); + this.setState(constants_1.SocksClientState.Created); + } + /** + * Creates a new SOCKS connection. + * + * Note: Supports callbacks and promises. Only supports the connect command. + * @param options { SocksClientOptions } Options. + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnection(options, callback) { + return new Promise((resolve, reject) => { + try { + (0, helpers_1.validateSocksClientOptions)(options, ["connect"]); + } catch (err2) { + if (typeof callback === "function") { + callback(err2); + return resolve(err2); + } else { + return reject(err2); + } + } + const client = new _SocksClient(options); + client.connect(options.existing_socket); + client.once("established", (info) => { + client.removeAllListeners(); + if (typeof callback === "function") { + callback(null, info); + resolve(info); + } else { + resolve(info); + } + }); + client.once("error", (err2) => { + client.removeAllListeners(); + if (typeof callback === "function") { + callback(err2); + resolve(err2); + } else { + reject(err2); + } + }); + }); + } + /** + * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. + * + * Note: Supports callbacks and promises. Only supports the connect method. + * Note: Implemented via createConnection() factory function. + * @param options { SocksClientChainOptions } Options + * @param callback { Function } An optional callback function. + * @returns { Promise } + */ + static createConnectionChain(options, callback) { + return new Promise((resolve, reject) => __awaiter2(this, void 0, void 0, function* () { + try { + (0, helpers_1.validateSocksClientChainOptions)(options); + } catch (err2) { + if (typeof callback === "function") { + callback(err2); + return resolve(err2); + } else { + return reject(err2); + } + } + if (options.randomizeChain) { + (0, util_1.shuffleArray)(options.proxies); + } + try { + let sock; + for (let i = 0; i < options.proxies.length; i++) { + const nextProxy = options.proxies[i]; + const nextDestination = i === options.proxies.length - 1 ? options.destination : { + host: options.proxies[i + 1].host || options.proxies[i + 1].ipaddress, + port: options.proxies[i + 1].port + }; + const result = yield _SocksClient.createConnection({ + command: "connect", + proxy: nextProxy, + destination: nextDestination, + existing_socket: sock + }); + sock = sock || result.socket; + } + if (typeof callback === "function") { + callback(null, { socket: sock }); + resolve({ socket: sock }); + } else { + resolve({ socket: sock }); + } + } catch (err2) { + if (typeof callback === "function") { + callback(err2); + resolve(err2); + } else { + reject(err2); + } + } + })); + } + /** + * Creates a SOCKS UDP Frame. + * @param options + */ + static createUDPFrame(options) { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt16BE(0); + buff.writeUInt8(options.frameNumber || 0); + if (net.isIPv4(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeUInt32BE((0, helpers_1.ipv4ToInt32)(options.remoteHost.host)); + } else if (net.isIPv6(options.remoteHost.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer((0, helpers_1.ipToBuffer)(options.remoteHost.host)); + } else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(Buffer.byteLength(options.remoteHost.host)); + buff.writeString(options.remoteHost.host); + } + buff.writeUInt16BE(options.remoteHost.port); + buff.writeBuffer(options.data); + return buff.toBuffer(); + } + /** + * Parses a SOCKS UDP frame. + * @param data + */ + static parseUDPFrame(data) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const frameNumber = buff.readUInt8(); + const hostType = buff.readUInt8(); + let remoteHost; + if (hostType === constants_1.Socks5HostType.IPv4) { + remoteHost = (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()); + } else if (hostType === constants_1.Socks5HostType.IPv6) { + remoteHost = ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(); + } else { + remoteHost = buff.readString(buff.readUInt8()); + } + const remotePort = buff.readUInt16BE(); + return { + frameNumber, + remoteHost: { + host: remoteHost, + port: remotePort + }, + data: buff.readBuffer() + }; + } + /** + * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. + */ + setState(newState) { + if (this.state !== constants_1.SocksClientState.Error) { + this.state = newState; + } + } + /** + * Starts the connection establishment to the proxy and destination. + * @param existingSocket Connected socket to use instead of creating a new one (internal use). + */ + connect(existingSocket) { + this.onDataReceived = (data) => this.onDataReceivedHandler(data); + this.onClose = () => this.onCloseHandler(); + this.onError = (err2) => this.onErrorHandler(err2); + this.onConnect = () => this.onConnectHandler(); + const timer = setTimeout(() => this.onEstablishedTimeout(), this.options.timeout || constants_1.DEFAULT_TIMEOUT); + if (timer.unref && typeof timer.unref === "function") { + timer.unref(); + } + if (existingSocket) { + this.socket = existingSocket; + } else { + this.socket = new net.Socket(); + } + this.socket.once("close", this.onClose); + this.socket.once("error", this.onError); + this.socket.once("connect", this.onConnect); + this.socket.on("data", this.onDataReceived); + this.setState(constants_1.SocksClientState.Connecting); + this.receiveBuffer = new receivebuffer_1.ReceiveBuffer(); + if (existingSocket) { + this.socket.emit("connect"); + } else { + this.socket.connect(this.getSocketOptions()); + if (this.options.set_tcp_nodelay !== void 0 && this.options.set_tcp_nodelay !== null) { + this.socket.setNoDelay(!!this.options.set_tcp_nodelay); + } + } + this.prependOnceListener("established", (info) => { + setImmediate(() => { + if (this.receiveBuffer.length > 0) { + const excessData = this.receiveBuffer.get(this.receiveBuffer.length); + info.socket.emit("data", excessData); + } + info.socket.resume(); + }); + }); + } + // Socket options (defaults host/port to options.proxy.host/options.proxy.port) + getSocketOptions() { + return Object.assign(Object.assign({}, this.options.socket_options), { host: this.options.proxy.host || this.options.proxy.ipaddress, port: this.options.proxy.port }); + } + /** + * Handles internal Socks timeout callback. + * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. + */ + onEstablishedTimeout() { + if (this.state !== constants_1.SocksClientState.Established && this.state !== constants_1.SocksClientState.BoundWaitingForConnection) { + this.closeSocket(constants_1.ERRORS.ProxyConnectionTimedOut); + } + } + /** + * Handles Socket connect event. + */ + onConnectHandler() { + this.setState(constants_1.SocksClientState.Connected); + if (this.options.proxy.type === 4) { + this.sendSocks4InitialHandshake(); + } else { + this.sendSocks5InitialHandshake(); + } + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles Socket data event. + * @param data + */ + onDataReceivedHandler(data) { + this.receiveBuffer.append(data); + this.processData(); + } + /** + * Handles processing of the data we have received. + */ + processData() { + while (this.state !== constants_1.SocksClientState.Established && this.state !== constants_1.SocksClientState.Error && this.receiveBuffer.length >= this.nextRequiredPacketBufferSize) { + if (this.state === constants_1.SocksClientState.SentInitialHandshake) { + if (this.options.proxy.type === 4) { + this.handleSocks4FinalHandshakeResponse(); + } else { + this.handleInitialSocks5HandshakeResponse(); + } + } else if (this.state === constants_1.SocksClientState.SentAuthentication) { + this.handleInitialSocks5AuthenticationHandshakeResponse(); + } else if (this.state === constants_1.SocksClientState.SentFinalHandshake) { + this.handleSocks5FinalHandshakeResponse(); + } else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) { + if (this.options.proxy.type === 4) { + this.handleSocks4IncomingConnectionResponse(); + } else { + this.handleSocks5IncomingConnectionResponse(); + } + } else { + this.closeSocket(constants_1.ERRORS.InternalError); + break; + } + } + } + /** + * Handles Socket close event. + * @param had_error + */ + onCloseHandler() { + this.closeSocket(constants_1.ERRORS.SocketClosed); + } + /** + * Handles Socket error event. + * @param err + */ + onErrorHandler(err2) { + this.closeSocket(err2.message); + } + /** + * Removes internal event listeners on the underlying Socket. + */ + removeInternalSocketHandlers() { + this.socket.pause(); + this.socket.removeListener("data", this.onDataReceived); + this.socket.removeListener("close", this.onClose); + this.socket.removeListener("error", this.onError); + this.socket.removeListener("connect", this.onConnect); + } + /** + * Closes and destroys the underlying Socket. Emits an error event. + * @param err { String } An error string to include in error event. + */ + closeSocket(err2) { + if (this.state !== constants_1.SocksClientState.Error) { + this.setState(constants_1.SocksClientState.Error); + this.socket.destroy(); + this.removeInternalSocketHandlers(); + this.emit("error", new util_1.SocksClientError(err2, this.options)); + } + } + /** + * Sends initial Socks v4 handshake request. + */ + sendSocks4InitialHandshake() { + const userId = this.options.proxy.userId || ""; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(4); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt16BE(this.options.destination.port); + if (net.isIPv4(this.options.destination.host)) { + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + buff.writeStringNT(userId); + } else { + buff.writeUInt8(0); + buff.writeUInt8(0); + buff.writeUInt8(0); + buff.writeUInt8(1); + buff.writeStringNT(userId); + buff.writeStringNT(this.options.destination.host); + } + this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response; + this.socket.write(buff.toBuffer()); + } + /** + * Handles Socks v4 handshake response. + * @param data + */ + handleSocks4FinalHandshakeResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`); + } else { + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()) + }; + if (remoteHost.host === "0.0.0.0") { + remoteHost.host = this.options.proxy.ipaddress; + } + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.emit("bound", { remoteHost, socket: this.socket }); + } else { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit("established", { socket: this.socket }); + } + } + } + /** + * Handles Socks v4 incoming connection request (BIND) + * @param data + */ + handleSocks4IncomingConnectionResponse() { + const data = this.receiveBuffer.get(8); + if (data[1] !== constants_1.Socks4Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`); + } else { + const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); + buff.readOffset = 2; + const remoteHost = { + port: buff.readUInt16BE(), + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()) + }; + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit("established", { remoteHost, socket: this.socket }); + } + } + /** + * Sends initial Socks v5 handshake request. + */ + sendSocks5InitialHandshake() { + const buff = new smart_buffer_1.SmartBuffer(); + const supportedAuthMethods = [constants_1.Socks5Auth.NoAuth]; + if (this.options.proxy.userId || this.options.proxy.password) { + supportedAuthMethods.push(constants_1.Socks5Auth.UserPass); + } + if (this.options.proxy.custom_auth_method !== void 0) { + supportedAuthMethods.push(this.options.proxy.custom_auth_method); + } + buff.writeUInt8(5); + buff.writeUInt8(supportedAuthMethods.length); + for (const authMethod of supportedAuthMethods) { + buff.writeUInt8(authMethod); + } + this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentInitialHandshake); + } + /** + * Handles initial Socks v5 handshake response. + * @param data + */ + handleInitialSocks5HandshakeResponse() { + const data = this.receiveBuffer.get(2); + if (data[0] !== 5) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion); + } else if (data[1] === constants_1.SOCKS5_NO_ACCEPTABLE_AUTH) { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeNoAcceptedAuthType); + } else { + if (data[1] === constants_1.Socks5Auth.NoAuth) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.NoAuth; + this.sendSocks5CommandRequest(); + } else if (data[1] === constants_1.Socks5Auth.UserPass) { + this.socks5ChosenAuthType = constants_1.Socks5Auth.UserPass; + this.sendSocks5UserPassAuthentication(); + } else if (data[1] === this.options.proxy.custom_auth_method) { + this.socks5ChosenAuthType = this.options.proxy.custom_auth_method; + this.sendSocks5CustomAuthentication(); + } else { + this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeUnknownAuthType); + } + } + } + /** + * Sends Socks v5 user & password auth handshake. + * + * Note: No auth and user/pass are currently supported. + */ + sendSocks5UserPassAuthentication() { + const userId = this.options.proxy.userId || ""; + const password = this.options.proxy.password || ""; + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(1); + buff.writeUInt8(Buffer.byteLength(userId)); + buff.writeString(userId); + buff.writeUInt8(Buffer.byteLength(password)); + buff.writeString(password); + this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentAuthentication); + } + sendSocks5CustomAuthentication() { + return __awaiter2(this, void 0, void 0, function* () { + this.nextRequiredPacketBufferSize = this.options.proxy.custom_auth_response_size; + this.socket.write(yield this.options.proxy.custom_auth_request_handler()); + this.setState(constants_1.SocksClientState.SentAuthentication); + }); + } + handleSocks5CustomAuthHandshakeResponse(data) { + return __awaiter2(this, void 0, void 0, function* () { + return yield this.options.proxy.custom_auth_response_handler(data); + }); + } + handleSocks5AuthenticationNoAuthHandshakeResponse(data) { + return __awaiter2(this, void 0, void 0, function* () { + return data[1] === 0; + }); + } + handleSocks5AuthenticationUserPassHandshakeResponse(data) { + return __awaiter2(this, void 0, void 0, function* () { + return data[1] === 0; + }); + } + /** + * Handles Socks v5 auth handshake response. + * @param data + */ + handleInitialSocks5AuthenticationHandshakeResponse() { + return __awaiter2(this, void 0, void 0, function* () { + this.setState(constants_1.SocksClientState.ReceivedAuthenticationResponse); + let authResult = false; + if (this.socks5ChosenAuthType === constants_1.Socks5Auth.NoAuth) { + authResult = yield this.handleSocks5AuthenticationNoAuthHandshakeResponse(this.receiveBuffer.get(2)); + } else if (this.socks5ChosenAuthType === constants_1.Socks5Auth.UserPass) { + authResult = yield this.handleSocks5AuthenticationUserPassHandshakeResponse(this.receiveBuffer.get(2)); + } else if (this.socks5ChosenAuthType === this.options.proxy.custom_auth_method) { + authResult = yield this.handleSocks5CustomAuthHandshakeResponse(this.receiveBuffer.get(this.options.proxy.custom_auth_response_size)); + } + if (!authResult) { + this.closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed); + } else { + this.sendSocks5CommandRequest(); + } + }); + } + /** + * Sends Socks v5 final handshake request. + */ + sendSocks5CommandRequest() { + const buff = new smart_buffer_1.SmartBuffer(); + buff.writeUInt8(5); + buff.writeUInt8(constants_1.SocksCommand[this.options.command]); + buff.writeUInt8(0); + if (net.isIPv4(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv4); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + } else if (net.isIPv6(this.options.destination.host)) { + buff.writeUInt8(constants_1.Socks5HostType.IPv6); + buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); + } else { + buff.writeUInt8(constants_1.Socks5HostType.Hostname); + buff.writeUInt8(this.options.destination.host.length); + buff.writeString(this.options.destination.host); + } + buff.writeUInt16BE(this.options.destination.port); + this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.socket.write(buff.toBuffer()); + this.setState(constants_1.SocksClientState.SentFinalHandshake); + } + /** + * Handles Socks v5 final handshake response. + * @param data + */ + handleSocks5FinalHandshakeResponse() { + const header = this.receiveBuffer.peek(5); + if (header[0] !== 5 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`); + } else { + const addressType = header[3]; + let remoteHost; + let buff; + if (addressType === constants_1.Socks5HostType.IPv4) { + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + port: buff.readUInt16BE() + }; + if (remoteHost.host === "0.0.0.0") { + remoteHost.host = this.options.proxy.ipaddress; + } + } else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE() + }; + } else if (addressType === constants_1.Socks5HostType.IPv6) { + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), + port: buff.readUInt16BE() + }; + } + this.setState(constants_1.SocksClientState.ReceivedFinalResponse); + if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.connect) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit("established", { remoteHost, socket: this.socket }); + } else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { + this.setState(constants_1.SocksClientState.BoundWaitingForConnection); + this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; + this.emit("bound", { remoteHost, socket: this.socket }); + } else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.associate) { + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit("established", { + remoteHost, + socket: this.socket + }); + } + } + } + /** + * Handles Socks v5 incoming connection request (BIND). + */ + handleSocks5IncomingConnectionResponse() { + const header = this.receiveBuffer.peek(5); + if (header[0] !== 5 || header[1] !== constants_1.Socks5Response.Granted) { + this.closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`); + } else { + const addressType = header[3]; + let remoteHost; + let buff; + if (addressType === constants_1.Socks5HostType.IPv4) { + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), + port: buff.readUInt16BE() + }; + if (remoteHost.host === "0.0.0.0") { + remoteHost.host = this.options.proxy.ipaddress; + } + } else if (addressType === constants_1.Socks5HostType.Hostname) { + const hostLength = header[4]; + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); + remoteHost = { + host: buff.readString(hostLength), + port: buff.readUInt16BE() + }; + } else if (addressType === constants_1.Socks5HostType.IPv6) { + const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; + if (this.receiveBuffer.length < dataNeeded) { + this.nextRequiredPacketBufferSize = dataNeeded; + return; + } + buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); + remoteHost = { + host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), + port: buff.readUInt16BE() + }; + } + this.setState(constants_1.SocksClientState.Established); + this.removeInternalSocketHandlers(); + this.emit("established", { remoteHost, socket: this.socket }); + } + } + get socksClientOptions() { + return Object.assign({}, this.options); + } + }; + exports2.SocksClient = SocksClient; + } +}); + +// node_modules/socks/build/index.js +var require_build = __commonJS({ + "node_modules/socks/build/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_socksclient(), exports2); + } +}); + +// node_modules/socks-proxy-agent/node_modules/agent-base/dist/helpers.js +var require_helpers5 = __commonJS({ + "node_modules/socks-proxy-agent/node_modules/agent-base/dist/helpers.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.req = exports2.json = exports2.toBuffer = void 0; + var http2 = __importStar2(__require("http")); + var https = __importStar2(__require("https")); + async function toBuffer(stream) { + let length = 0; + const chunks = []; + for await (const chunk of stream) { + length += chunk.length; + chunks.push(chunk); + } + return Buffer.concat(chunks, length); + } + exports2.toBuffer = toBuffer; + async function json(stream) { + const buf = await toBuffer(stream); + const str = buf.toString("utf8"); + try { + return JSON.parse(str); + } catch (_err) { + const err2 = _err; + err2.message += ` (input: ${str})`; + throw err2; + } + } + exports2.json = json; + function req(url, opts = {}) { + const href = typeof url === "string" ? url : url.href; + const req2 = (href.startsWith("https:") ? https : http2).request(url, opts); + const promise = new Promise((resolve, reject) => { + req2.once("response", resolve).once("error", reject).end(); + }); + req2.then = promise.then.bind(promise); + return req2; + } + exports2.req = req; + } +}); + +// node_modules/socks-proxy-agent/node_modules/agent-base/dist/index.js +var require_dist2 = __commonJS({ + "node_modules/socks-proxy-agent/node_modules/agent-base/dist/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Agent = void 0; + var net = __importStar2(__require("net")); + var http2 = __importStar2(__require("http")); + var https_1 = __require("https"); + __exportStar2(require_helpers5(), exports2); + var INTERNAL = Symbol("AgentBaseInternalState"); + var Agent = class extends http2.Agent { + constructor(opts) { + super(opts); + this[INTERNAL] = {}; + } + /** + * Determine whether this is an `http` or `https` request. + */ + isSecureEndpoint(options) { + if (options) { + if (typeof options.secureEndpoint === "boolean") { + return options.secureEndpoint; + } + if (typeof options.protocol === "string") { + return options.protocol === "https:"; + } + } + const { stack } = new Error(); + if (typeof stack !== "string") + return false; + return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1); + } + // In order to support async signatures in `connect()` and Node's native + // connection pooling in `http.Agent`, the array of sockets for each origin + // has to be updated synchronously. This is so the length of the array is + // accurate when `addRequest()` is next called. We achieve this by creating a + // fake socket and adding it to `sockets[origin]` and incrementing + // `totalSocketCount`. + incrementSockets(name) { + if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) { + return null; + } + if (!this.sockets[name]) { + this.sockets[name] = []; + } + const fakeSocket = new net.Socket({ writable: false }); + this.sockets[name].push(fakeSocket); + this.totalSocketCount++; + return fakeSocket; + } + decrementSockets(name, socket) { + if (!this.sockets[name] || socket === null) { + return; + } + const sockets = this.sockets[name]; + const index = sockets.indexOf(socket); + if (index !== -1) { + sockets.splice(index, 1); + this.totalSocketCount--; + if (sockets.length === 0) { + delete this.sockets[name]; + } + } + } + // In order to properly update the socket pool, we need to call `getName()` on + // the core `https.Agent` if it is a secureEndpoint. + getName(options) { + const secureEndpoint = this.isSecureEndpoint(options); + if (secureEndpoint) { + return https_1.Agent.prototype.getName.call(this, options); + } + return super.getName(options); + } + createSocket(req, options, cb) { + const connectOpts = { + ...options, + secureEndpoint: this.isSecureEndpoint(options) + }; + const name = this.getName(connectOpts); + const fakeSocket = this.incrementSockets(name); + Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => { + this.decrementSockets(name, fakeSocket); + if (socket instanceof http2.Agent) { + try { + return socket.addRequest(req, connectOpts); + } catch (err2) { + return cb(err2); + } + } + this[INTERNAL].currentSocket = socket; + super.createSocket(req, options, cb); + }, (err2) => { + this.decrementSockets(name, fakeSocket); + cb(err2); + }); + } + createConnection() { + const socket = this[INTERNAL].currentSocket; + this[INTERNAL].currentSocket = void 0; + if (!socket) { + throw new Error("No socket was returned in the `connect()` function"); + } + return socket; + } + get defaultPort() { + return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80); + } + set defaultPort(v) { + if (this[INTERNAL]) { + this[INTERNAL].defaultPort = v; + } + } + get protocol() { + return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:"); + } + set protocol(v) { + if (this[INTERNAL]) { + this[INTERNAL].protocol = v; + } + } + }; + exports2.Agent = Agent; + } +}); + +// node_modules/ms/index.js +var require_ms = __commonJS({ + "node_modules/ms/index.js"(exports2, module2) { + var s = 1e3; + var m = s * 60; + var h = m * 60; + var d = h * 24; + var w = d * 7; + var y = d * 365.25; + module2.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === "string" && val.length > 0) { + return parse(val); + } else if (type === "number" && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) + ); + }; + function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || "ms").toLowerCase(); + switch (type) { + case "years": + case "year": + case "yrs": + case "yr": + case "y": + return n * y; + case "weeks": + case "week": + case "w": + return n * w; + case "days": + case "day": + case "d": + return n * d; + case "hours": + case "hour": + case "hrs": + case "hr": + case "h": + return n * h; + case "minutes": + case "minute": + case "mins": + case "min": + case "m": + return n * m; + case "seconds": + case "second": + case "secs": + case "sec": + case "s": + return n * s; + case "milliseconds": + case "millisecond": + case "msecs": + case "msec": + case "ms": + return n; + default: + return void 0; + } + } + function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + "d"; + } + if (msAbs >= h) { + return Math.round(ms / h) + "h"; + } + if (msAbs >= m) { + return Math.round(ms / m) + "m"; + } + if (msAbs >= s) { + return Math.round(ms / s) + "s"; + } + return ms + "ms"; + } + function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, "day"); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, "hour"); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, "minute"); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, "second"); + } + return ms + " ms"; + } + function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); + } + } +}); + +// node_modules/debug/src/common.js +var require_common2 = __commonJS({ + "node_modules/debug/src/common.js"(exports2, module2) { + function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require_ms(); + createDebug.destroy = destroy; + Object.keys(env).forEach((key) => { + createDebug[key] = env[key]; + }); + createDebug.names = []; + createDebug.skips = []; + createDebug.formatters = {}; + function selectColor(namespace) { + let hash = 0; + for (let i = 0; i < namespace.length; i++) { + hash = (hash << 5) - hash + namespace.charCodeAt(i); + hash |= 0; + } + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + function debug(...args) { + if (!debug.enabled) { + return; + } + const self2 = debug; + const curr = Number(/* @__PURE__ */ new Date()); + const ms = curr - (prevTime || curr); + self2.diff = ms; + self2.prev = prevTime; + self2.curr = curr; + prevTime = curr; + args[0] = createDebug.coerce(args[0]); + if (typeof args[0] !== "string") { + args.unshift("%O"); + } + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + if (match === "%%") { + return "%"; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === "function") { + const val = args[index]; + match = formatter.call(self2, val); + args.splice(index, 1); + index--; + } + return match; + }); + createDebug.formatArgs.call(self2, args); + const logFn = self2.log || createDebug.log; + logFn.apply(self2, args); + } + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; + Object.defineProperty(debug, "enabled", { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + return enabledCache; + }, + set: (v) => { + enableOverride = v; + } + }); + if (typeof createDebug.init === "function") { + createDebug.init(debug); + } + return debug; + } + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + createDebug.names = []; + createDebug.skips = []; + const split2 = (typeof namespaces === "string" ? namespaces : "").trim().replace(/\s+/g, ",").split(",").filter(Boolean); + for (const ns of split2) { + if (ns[0] === "-") { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === "*")) { + if (template[templateIndex] === "*") { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; + } + } + while (templateIndex < template.length && template[templateIndex] === "*") { + templateIndex++; + } + return templateIndex === template.length; + } + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map((namespace) => "-" + namespace) + ].join(","); + createDebug.enable(""); + return namespaces; + } + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + return false; + } + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + function destroy() { + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + createDebug.enable(createDebug.load()); + return createDebug; + } + module2.exports = setup; + } +}); + +// node_modules/debug/src/browser.js +var require_browser = __commonJS({ + "node_modules/debug/src/browser.js"(exports2, module2) { + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.storage = localstorage(); + exports2.destroy = /* @__PURE__ */ (() => { + let warned = false; + return () => { + if (!warned) { + warned = true; + console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."); + } + }; + })(); + exports2.colors = [ + "#0000CC", + "#0000FF", + "#0033CC", + "#0033FF", + "#0066CC", + "#0066FF", + "#0099CC", + "#0099FF", + "#00CC00", + "#00CC33", + "#00CC66", + "#00CC99", + "#00CCCC", + "#00CCFF", + "#3300CC", + "#3300FF", + "#3333CC", + "#3333FF", + "#3366CC", + "#3366FF", + "#3399CC", + "#3399FF", + "#33CC00", + "#33CC33", + "#33CC66", + "#33CC99", + "#33CCCC", + "#33CCFF", + "#6600CC", + "#6600FF", + "#6633CC", + "#6633FF", + "#66CC00", + "#66CC33", + "#9900CC", + "#9900FF", + "#9933CC", + "#9933FF", + "#99CC00", + "#99CC33", + "#CC0000", + "#CC0033", + "#CC0066", + "#CC0099", + "#CC00CC", + "#CC00FF", + "#CC3300", + "#CC3333", + "#CC3366", + "#CC3399", + "#CC33CC", + "#CC33FF", + "#CC6600", + "#CC6633", + "#CC9900", + "#CC9933", + "#CCCC00", + "#CCCC33", + "#FF0000", + "#FF0033", + "#FF0066", + "#FF0099", + "#FF00CC", + "#FF00FF", + "#FF3300", + "#FF3333", + "#FF3366", + "#FF3399", + "#FF33CC", + "#FF33FF", + "#FF6600", + "#FF6633", + "#FF9900", + "#FF9933", + "#FFCC00", + "#FFCC33" + ]; + function useColors() { + if (typeof window !== "undefined" && window.process && (window.process.type === "renderer" || window.process.__nwjs)) { + return true; + } + if (typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + let m; + return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 + typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + typeof navigator !== "undefined" && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker + typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); + } + function formatArgs(args) { + args[0] = (this.useColors ? "%c" : "") + this.namespace + (this.useColors ? " %c" : " ") + args[0] + (this.useColors ? "%c " : " ") + "+" + module2.exports.humanize(this.diff); + if (!this.useColors) { + return; + } + const c = "color: " + this.color; + args.splice(1, 0, c, "color: inherit"); + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, (match) => { + if (match === "%%") { + return; + } + index++; + if (match === "%c") { + lastC = index; + } + }); + args.splice(lastC, 0, c); + } + exports2.log = console.debug || console.log || (() => { + }); + function save(namespaces) { + try { + if (namespaces) { + exports2.storage.setItem("debug", namespaces); + } else { + exports2.storage.removeItem("debug"); + } + } catch (error) { + } + } + function load() { + let r; + try { + r = exports2.storage.getItem("debug") || exports2.storage.getItem("DEBUG"); + } catch (error) { + } + if (!r && typeof process !== "undefined" && "env" in process) { + r = process.env.DEBUG; + } + return r; + } + function localstorage() { + try { + return localStorage; + } catch (error) { + } + } + module2.exports = require_common2()(exports2); + var { formatters } = module2.exports; + formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (error) { + return "[UnexpectedJSONParseError]: " + error.message; + } + }; + } +}); + +// node_modules/has-flag/index.js +var require_has_flag = __commonJS({ + "node_modules/has-flag/index.js"(exports2, module2) { + "use strict"; + module2.exports = (flag, argv = process.argv) => { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); + }; + } +}); + +// node_modules/supports-color/index.js +var require_supports_color = __commonJS({ + "node_modules/supports-color/index.js"(exports2, module2) { + "use strict"; + var os = __require("os"); + var tty = __require("tty"); + var hasFlag = require_has_flag(); + var { env } = process; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + forceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = 1; + } + if ("FORCE_COLOR" in env) { + if (env.FORCE_COLOR === "true") { + forceColor = 1; + } else if (env.FORCE_COLOR === "false") { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; + } + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; + } + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); + } + module2.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) + }; + } +}); + +// node_modules/debug/src/node.js +var require_node = __commonJS({ + "node_modules/debug/src/node.js"(exports2, module2) { + var tty = __require("tty"); + var util = __require("util"); + exports2.init = init; + exports2.log = log2; + exports2.formatArgs = formatArgs; + exports2.save = save; + exports2.load = load; + exports2.useColors = useColors; + exports2.destroy = util.deprecate( + () => { + }, + "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`." + ); + exports2.colors = [6, 2, 3, 4, 5, 1]; + try { + const supportsColor = require_supports_color(); + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports2.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } + } catch (error) { + } + exports2.inspectOpts = Object.keys(process.env).filter((key) => { + return /^debug_/i.test(key); + }).reduce((obj, key) => { + const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === "null") { + val = null; + } else { + val = Number(val); + } + obj[prop] = val; + return obj; + }, {}); + function useColors() { + return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(process.stderr.fd); + } + function formatArgs(args) { + const { namespace: name, useColors: useColors2 } = this; + if (useColors2) { + const c = this.color; + const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c); + const prefix = ` ${colorCode};1m${name} \x1B[0m`; + args[0] = prefix + args[0].split("\n").join("\n" + prefix); + args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m"); + } else { + args[0] = getDate() + name + " " + args[0]; + } + } + function getDate() { + if (exports2.inspectOpts.hideDate) { + return ""; + } + return (/* @__PURE__ */ new Date()).toISOString() + " "; + } + function log2(...args) { + return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args) + "\n"); + } + function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + delete process.env.DEBUG; + } + } + function load() { + return process.env.DEBUG; + } + function init(debug) { + debug.inspectOpts = {}; + const keys = Object.keys(exports2.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; + } + } + module2.exports = require_common2()(exports2); + var { formatters } = module2.exports; + formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts).split("\n").map((str) => str.trim()).join(" "); + }; + formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); + }; + } +}); + +// node_modules/debug/src/index.js +var require_src = __commonJS({ + "node_modules/debug/src/index.js"(exports2, module2) { + if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) { + module2.exports = require_browser(); + } else { + module2.exports = require_node(); + } + } +}); + +// node_modules/socks-proxy-agent/dist/index.js +var require_dist3 = __commonJS({ + "node_modules/socks-proxy-agent/dist/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SocksProxyAgent = void 0; + var socks_1 = require_build(); + var agent_base_1 = require_dist2(); + var debug_1 = __importDefault2(require_src()); + var dns = __importStar2(__require("dns")); + var net = __importStar2(__require("net")); + var tls = __importStar2(__require("tls")); + var url_1 = __require("url"); + var debug = (0, debug_1.default)("socks-proxy-agent"); + var setServernameFromNonIpHost = (options) => { + if (options.servername === void 0 && options.host && !net.isIP(options.host)) { + return { + ...options, + servername: options.host + }; + } + return options; + }; + function parseSocksURL(url) { + let lookup = false; + let type = 5; + const host = url.hostname; + const port = parseInt(url.port, 10) || 1080; + switch (url.protocol.replace(":", "")) { + case "socks4": + lookup = true; + type = 4; + break; + // pass through + case "socks4a": + type = 4; + break; + case "socks5": + lookup = true; + type = 5; + break; + // pass through + case "socks": + type = 5; + break; + case "socks5h": + type = 5; + break; + default: + throw new TypeError(`A "socks" protocol must be specified! Got: ${String(url.protocol)}`); + } + const proxy = { + host, + port, + type + }; + if (url.username) { + Object.defineProperty(proxy, "userId", { + value: decodeURIComponent(url.username), + enumerable: false + }); + } + if (url.password != null) { + Object.defineProperty(proxy, "password", { + value: decodeURIComponent(url.password), + enumerable: false + }); + } + return { lookup, proxy }; + } + var SocksProxyAgent = class extends agent_base_1.Agent { + constructor(uri, opts) { + super(opts); + const url = typeof uri === "string" ? new url_1.URL(uri) : uri; + const { proxy, lookup } = parseSocksURL(url); + this.shouldLookup = lookup; + this.proxy = proxy; + this.timeout = opts?.timeout ?? null; + this.socketOptions = opts?.socketOptions ?? null; + } + /** + * Initiates a SOCKS connection to the specified SOCKS proxy server, + * which in turn connects to the specified remote host and port. + */ + async connect(req, opts) { + const { shouldLookup, proxy, timeout } = this; + if (!opts.host) { + throw new Error("No `host` defined!"); + } + let { host } = opts; + const { port, lookup: lookupFn = dns.lookup } = opts; + if (shouldLookup) { + host = await new Promise((resolve, reject) => { + lookupFn(host, {}, (err2, res) => { + if (err2) { + reject(err2); + } else { + resolve(res); + } + }); + }); + } + const socksOpts = { + proxy, + destination: { + host, + port: typeof port === "number" ? port : parseInt(port, 10) + }, + command: "connect", + timeout: timeout ?? void 0, + // @ts-expect-error the type supplied by socks for socket_options is wider + // than necessary since socks will always override the host and port + socket_options: this.socketOptions ?? void 0 + }; + const cleanup = (tlsSocket) => { + req.destroy(); + socket.destroy(); + if (tlsSocket) + tlsSocket.destroy(); + }; + debug("Creating socks proxy connection: %o", socksOpts); + const { socket } = await socks_1.SocksClient.createConnection(socksOpts); + debug("Successfully created socks proxy connection"); + if (timeout !== null) { + socket.setTimeout(timeout); + socket.on("timeout", () => cleanup()); + } + if (opts.secureEndpoint) { + debug("Upgrading socket connection to TLS"); + const tlsSocket = tls.connect({ + ...omit(setServernameFromNonIpHost(opts), "host", "path", "port"), + socket + }); + tlsSocket.once("error", (error) => { + debug("Socket TLS error", error.message); + cleanup(tlsSocket); + }); + return tlsSocket; + } + return socket; + } + }; + SocksProxyAgent.protocols = [ + "socks", + "socks4", + "socks4a", + "socks5", + "socks5h" + ]; + exports2.SocksProxyAgent = SocksProxyAgent; + function omit(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/state.js +var require_state = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/state.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WorkerState = void 0; + var errors_1 = require_errors7(); + var utils_1 = require_lib(); + var WorkerState = class { + addresses; + accounts; + subscription; + cache; + constructor() { + this.addresses = []; + this.accounts = []; + this.subscription = {}; + this.cache = new utils_1.Cache(); + } + validateAddresses(addr) { + if (!Array.isArray(addr)) throw new errors_1.CustomError("invalid_param", "+addresses"); + const seen = []; + return addr.filter((a) => { + if (typeof a !== "string") return false; + if (seen.indexOf(a) >= 0) return false; + seen.push(a); + return true; + }); + } + addAddresses(addr) { + const unique = this.validateAddresses(addr).filter((a) => this.addresses.indexOf(a) < 0); + this.addresses = this.addresses.concat(unique); + return unique; + } + getAddresses() { + return this.addresses; + } + removeAddresses(addr) { + const unique = this.validateAddresses(addr); + this.addresses = this.addresses.filter((a) => unique.indexOf(a) < 0); + return this.addresses; + } + validateAccounts(acc) { + if (!Array.isArray(acc)) throw new errors_1.CustomError("invalid_param", "+accounts"); + const seen = []; + return acc.filter((a) => { + if (a && typeof a === "object" && typeof a.descriptor === "string") { + if (seen.indexOf(a.descriptor) >= 0) return false; + seen.push(a.descriptor); + return true; + } + return false; + }); + } + getAccountAddresses(acc) { + if (acc.addresses) { + const { + change, + used, + unused + } = acc.addresses; + return change.concat(used, unused).map((a) => a.address); + } + return [acc.descriptor]; + } + addAccounts(acc) { + const valid = this.validateAccounts(acc); + const others = this.accounts.filter((a) => !valid.find((b) => b.descriptor === a.descriptor)); + this.accounts = others.concat(valid); + const addresses = this.accounts.reduce((addr, a) => addr.concat(this.getAccountAddresses(a)), []); + this.addAddresses(addresses); + return valid; + } + getAccount(address) { + return this.accounts.find((a) => { + if (a.descriptor === address) return true; + if (a.addresses) { + const { + change, + used, + unused + } = a.addresses; + if (change.find((ad) => ad.address === address)) return true; + if (used.find((ad) => ad.address === address)) return true; + if (unused.find((ad) => ad.address === address)) return true; + } + return false; + }); + } + getAccounts() { + return this.accounts; + } + removeAccounts(acc) { + const valid = this.validateAccounts(acc); + const accountsToRemove = this.accounts.filter((a) => valid.find((b) => b.descriptor === a.descriptor)); + const addressesToRemove = accountsToRemove.reduce((addr, acc2) => addr.concat(this.getAccountAddresses(acc2)), []); + this.accounts = this.accounts.filter((a) => accountsToRemove.indexOf(a) < 0); + this.removeAddresses(addressesToRemove); + return this.accounts; + } + addSubscription(type, id = true) { + this.subscription[type] = id; + } + getSubscription(type) { + return this.subscription[type]; + } + hasSubscriptions() { + return Object.keys(this.subscription).length > 0; + } + removeSubscription(type) { + delete this.subscription[type]; + } + clearSubscriptions() { + Object.keys(this.subscription).forEach((key) => { + delete this.subscription[key]; + }); + } + removeEmpty(obj) { + Object.keys(obj).forEach((key) => { + if (Array.isArray(obj[key])) obj[key].map((o) => this.removeEmpty(o)); + if (obj[key] && typeof obj[key] === "object") this.removeEmpty(obj[key]); + else if (obj[key] === void 0) delete obj[key]; + }); + return obj; + } + cleanup() { + this.removeAccounts(this.getAccounts()); + this.removeAddresses(this.getAddresses()); + this.clearSubscriptions(); + } + }; + exports2.WorkerState = WorkerState; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/utils.js +var require_utils8 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.prioritizeEndpoints = void 0; + var utils_1 = require_lib(); + var prioritizeEndpoints = (urls) => urls.map((url) => { + const hostname = (0, utils_1.parseHostname)(url); + let priority = Math.random(); + if (hostname === "localhost" || hostname === "127.0.0.1") { + priority += 2; + } else if (hostname?.endsWith(".onion")) { + priority += 1; + } + return [url, priority]; + }).sort(([, a], [, b]) => b - a).map(([url]) => url); + exports2.prioritizeEndpoints = prioritizeEndpoints; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/baseWorker.js +var require_baseWorker = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/baseWorker.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BaseWorker = exports2.CONTEXT = void 0; + var socks_proxy_agent_1 = require_dist3(); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var state_1 = require_state(); + var utils_1 = require_utils8(); + exports2.CONTEXT = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope || typeof importScripts !== "undefined" ? "worker" : "main"; + var BaseWorker = class { + api; + proxyAgent; + settings = {}; + state; + post; + constructor() { + if (exports2.CONTEXT === "worker") { + this.post = (data) => self.postMessage(data); + } else { + this.post = (data) => this.onmessage({ + data + }); + } + this.state = new state_1.WorkerState(); + setTimeout(() => { + this.post({ + id: -1, + type: constants_1.MESSAGES.HANDSHAKE + }); + }, 10); + } + debug(...args) { + if (!this.settings.debug) return; + const debugPrefix = `[Worker "${this.settings.name}"]:`; + const fn = args[0]; + if (fn === "warn" || fn === "error") { + console[fn](debugPrefix, ...args.slice(1)); + } else { + console.log(debugPrefix, ...args); + } + } + cleanup() { + this.api = void 0; + this.state.cleanup(); + } + connectPromise; + connect() { + if (this.isConnected(this.api)) { + return Promise.resolve(this.api); + } + if (!this.connectPromise) { + const urls = Array.isArray(this.settings.server) ? this.settings.server.filter((url) => typeof url === "string") : []; + if (urls.length < 1) { + throw new errors_1.CustomError("connect", "Endpoint not set"); + } + const endpoints = (0, utils_1.prioritizeEndpoints)(urls); + this.connectPromise = this.connectRecursive(endpoints).then((api) => { + this.debug("Connected"); + this.api = api; + return api; + }).finally(() => { + this.connectPromise = void 0; + }); + } + return this.connectPromise; + } + connectRecursive([url, ...rest]) { + if (!url) { + throw new errors_1.CustomError("connect", "All backends are down"); + } + if (this.proxyAgent) { + this.proxyAgent.protocol = /^(https|wss):/.test(url) ? "https:" : "http:"; + } + this.debug("Connecting to", url); + return this.tryConnect(url).catch((error) => { + this.debug("Connection failed", error); + return this.connectRecursive(rest); + }); + } + disconnect() { + } + async messageHandler(event) { + if (!event.data) return true; + const { + data + } = event; + const { + id + } = data; + this.debug("onmessage", data); + if (data.type === constants_1.MESSAGES.HANDSHAKE) { + this.settings = data.settings; + const { + proxy + } = data.settings; + if (proxy) { + const agentUri = typeof proxy === "string" ? proxy : `socks://${proxy.host}:${proxy.port}`; + const socketOptions = typeof proxy === "object" ? { + timeout: proxy?.timeout + } : void 0; + this.proxyAgent = new socks_proxy_agent_1.SocksProxyAgent(agentUri, socketOptions); + } else { + this.proxyAgent = void 0; + } + return true; + } + if (data.type === constants_1.MESSAGES.CONNECT) { + await this.connect(); + this.post({ + id, + type: constants_1.RESPONSES.CONNECT, + payload: true + }); + return true; + } + if (data.type === constants_1.MESSAGES.DISCONNECT) { + await this.disconnect(); + this.post({ + id, + type: constants_1.RESPONSES.DISCONNECTED, + payload: true + }); + return true; + } + if (data.type === constants_1.MESSAGES.TERMINATE) { + this.disconnect(); + this.cleanup(); + return true; + } + } + errorResponse(id, error) { + const payload = { + code: "", + message: "" + }; + if (error instanceof Error) { + payload.message = error.message; + payload.code = error instanceof errors_1.CustomError && error.code ? error.code : ""; + } + this.post({ + id, + type: constants_1.RESPONSES.ERROR, + payload + }); + } + postMessage(data) { + this.messageHandler({ + data + }); + } + onmessage(_evt) { + } + onmessageerror(_error) { + } + onerror(_error) { + } + terminate() { + this.postMessage({ + id: -1, + type: constants_1.MESSAGES.TERMINATE + }); + } + }; + exports2.BaseWorker = BaseWorker; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/constants.js +var require_constants12 = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/constants.js"(exports2, module2) { + "use strict"; + var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"]; + var hasBlob = typeof Blob !== "undefined"; + if (hasBlob) BINARY_TYPES.push("blob"); + module2.exports = { + BINARY_TYPES, + CLOSE_TIMEOUT: 3e4, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + hasBlob, + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// node_modules/bufferutil/fallback.js +var require_fallback = __commonJS({ + "node_modules/bufferutil/fallback.js"(exports2, module2) { + "use strict"; + var mask = (source, mask2, output, offset, length) => { + for (var i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask2[i & 3]; + } + }; + var unmask = (buffer, mask2) => { + const length = buffer.length; + for (var i = 0; i < length; i++) { + buffer[i] ^= mask2[i & 3]; + } + }; + module2.exports = { mask, unmask }; + } +}); + +// node_modules/bufferutil/index.js +var require_bufferutil = __commonJS({ + "node_modules/bufferutil/index.js"(exports2, module2) { + "use strict"; + try { + module2.exports = require_node_gyp_build2()(__dirname); + } catch (e) { + module2.exports = require_fallback(); + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/buffer-util.js +var require_buffer_util = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/buffer-util.js"(exports2, module2) { + "use strict"; + var { EMPTY_BUFFER } = require_constants12(); + var FastBuffer = Buffer[Symbol.species]; + function concat2(list, totalLength) { + if (list.length === 0) return EMPTY_BUFFER; + if (list.length === 1) return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) { + return new FastBuffer(target.buffer, target.byteOffset, offset); + } + return target; + } + function _mask(source, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask[i & 3]; + } + } + function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = new FastBuffer(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module2.exports = { + concat: concat2, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require_bufferutil(); + module2.exports.mask = function(source, mask, output, offset, length) { + if (length < 48) _mask(source, mask, output, offset, length); + else bufferUtil.mask(source, mask, output, offset, length); + }; + module2.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) _unmask(buffer, mask); + else bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + } + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/limiter.js +var require_limiter = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/limiter.js"(exports2, module2) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module2.exports = Limiter; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/permessage-deflate.js +var require_permessage_deflate = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { + "use strict"; + var zlib = __require("zlib"); + var bufferUtil = require_buffer_util(); + var Limiter = require_limiter(); + var { kStatusCode } = require_constants12(); + var FastBuffer = Buffer[Symbol.species]; + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err2 = this._inflate[kError]; + if (err2) { + this._inflate.close(); + this._inflate = null; + callback(err2); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) { + data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); + } + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module2.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err2) { + this[kPerMessageDeflate]._inflate = null; + if (this[kError]) { + this[kCallback](this[kError]); + return; + } + err2[kStatusCode] = 1007; + this[kCallback](err2); + } + } +}); + +// node_modules/utf-8-validate/fallback.js +var require_fallback2 = __commonJS({ + "node_modules/utf-8-validate/fallback.js"(exports2, module2) { + "use strict"; + function isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + module2.exports = isValidUTF8; + } +}); + +// node_modules/utf-8-validate/index.js +var require_utf_8_validate = __commonJS({ + "node_modules/utf-8-validate/index.js"(exports2, module2) { + "use strict"; + try { + module2.exports = require_node_gyp_build2()(__dirname); + } catch (e) { + module2.exports = require_fallback2(); + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/validation.js +var require_validation = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/validation.js"(exports2, module2) { + "use strict"; + var { isUtf8 } = __require("buffer"); + var { hasBlob } = require_constants12(); + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + function isBlob(value) { + return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File"); + } + module2.exports = { + isBlob, + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (isUtf8) { + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; + } else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require_utf_8_validate(); + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + } + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/receiver.js +var require_receiver = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = __require("stream"); + var PerMessageDeflate = require_permessage_deflate(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants12(); + var { concat: concat2, toArrayBuffer, unmask } = require_buffer_util(); + var { isValidStatusCode, isValidUTF8 } = require_validation(); + var FastBuffer = Buffer[Symbol.species]; + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var DEFER_EVENT = 6; + var Receiver = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + if (!this._errored) cb(); + } + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + const error = this.createError( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + cb(error); + return; + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (!this._fragmented) { + const error = this.createError( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + const error = this.createError( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + cb(error); + return; + } + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { + const error = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + } else { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + if (!this._fin && !this._fragmented) this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + const error = this.createError( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + cb(error); + return; + } + } else if (this._masked) { + const error = this.createError( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + cb(error); + return; + } + if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; + else this.haveLength(cb); + } + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + const error = this.createError( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + } + if (this._masked) this._state = GET_MASK; + else this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) { + this.controlMessage(data, cb); + return; + } + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + this.dataMessage(cb); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err2, buf) => { + if (err2) return cb(err2); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + this._fragments.push(buf); + } + this.dataMessage(cb); + if (this._state === GET_INFO) this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat2(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat2(fragments, messageLength)); + } else if (this._binaryType === "blob") { + data = new Blob(fragments); + } else { + data = fragments; + } + if (this._allowSynchronousEvents) { + this.emit("message", data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat2(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit("message", buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 8) { + if (data.length === 0) { + this._loop = false; + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + const error = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + cb(error); + return; + } + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + this._loop = false; + this.emit("conclude", code, buf); + this.end(); + } + this._state = GET_INFO; + return; + } + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + const err2 = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err2, this.createError); + err2.code = errorCode; + err2[kStatusCode] = statusCode; + return err2; + } + }; + module2.exports = Receiver; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/sender.js +var require_sender = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/sender.js"(exports2, module2) { + "use strict"; + var { Duplex } = __require("stream"); + var { randomFillSync } = __require("crypto"); + var PerMessageDeflate = require_permessage_deflate(); + var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants12(); + var { isBlob, isValidStatusCode } = require_validation(); + var { mask: applyMask, toBuffer } = require_buffer_util(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var RANDOM_POOL_SIZE = 8 * 1024; + var randomPool; + var randomPoolPointer = RANDOM_POOL_SIZE; + var DEFAULT = 0; + var DEFLATING = 1; + var GET_BLOB_DATA = 2; + var Sender = class _Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP; + this[kWebSocket] = void 0; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + if (randomPool === void 0) { + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) return [target, data]; + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) this._firstFragment = true; + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + blob.arrayBuffer().then((arrayBuffer) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while the blob was being read" + ); + process.nextTick(callCallbacks, this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer(arrayBuffer); + if (!compress) { + this._state = DEFAULT; + this.sendFrame(_Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }).catch((err2) => { + process.nextTick(onError, this, err2, cb); + }); + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while data was being compressed" + ); + callCallbacks(this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {(Buffer | String)[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module2.exports = Sender; + function callCallbacks(sender, err2, cb) { + if (typeof cb === "function") cb(err2); + for (let i = 0; i < sender._queue.length; i++) { + const params = sender._queue[i]; + const callback = params[params.length - 1]; + if (typeof callback === "function") callback(err2); + } + } + function onError(sender, err2, cb) { + callCallbacks(sender, err2, cb); + sender.onerror(err2); + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/event-target.js +var require_event_target = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/event-target.js"(exports2, module2) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants12(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event.prototype, "target", { enumerable: true }); + Object.defineProperty(Event.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error) { + const event = new ErrorEvent("error", { + error, + message: error.message + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event("open"); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module2.exports = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/extension.js +var require_extension = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/extension.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function push(dest, name, elem) { + if (dest[name] === void 0) dest[name] = [elem]; + else dest[name].push(elem); + } + function parse(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + for (; i < header.length; i++) { + code = header.charCodeAt(i); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) start = i; + else if (!mustUnescape) mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 34 && header.charCodeAt(i - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) end = i; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module2.exports = { format, parse }; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket.js +var require_websocket = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var https = __require("https"); + var http2 = __require("http"); + var net = __require("net"); + var tls = __require("tls"); + var { randomBytes: randomBytes2, createHash } = __require("crypto"); + var { Duplex, Readable } = __require("stream"); + var { URL: URL2 } = __require("url"); + var PerMessageDeflate = require_permessage_deflate(); + var Receiver = require_receiver(); + var Sender = require_sender(); + var { isBlob } = require_validation(); + var { + BINARY_TYPES, + CLOSE_TIMEOUT, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants12(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target(); + var { format, parse } = require_extension(); + var { toBuffer } = require_buffer_util(); + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket = class _WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._closeTimeout = options.closeTimeout; + this._isServer = true; + } + } + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) return; + this._binaryType = type; + if (this._receiver) this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + const sender = new Sender(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + sender.onerror = senderOnError; + if (socket.setTimeout) socket.setTimeout(0); + if (socket.setNoDelay) socket.setNoDelay(); + if (head.length > 0) socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err2) => { + if (err2) return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + setCloseTimer(this); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) return listener[kListener]; + } + return null; + }, + set(handler) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler !== "function") return; + this.addEventListener(method, handler, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket.prototype.addEventListener = addEventListener; + WebSocket.prototype.removeEventListener = removeEventListener; + module2.exports = WebSocket; + function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + closeTimeout: CLOSE_TIMEOUT, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + websocket._autoPong = opts.autoPong; + websocket._closeTimeout = opts.closeTimeout; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL2) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL2(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + if (parsedUrl.protocol === "http:") { + parsedUrl.protocol = "ws:"; + } else if (parsedUrl.protocol === "https:") { + parsedUrl.protocol = "wss:"; + } + websocket._url = parsedUrl.href; + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err2 = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err2; + } else { + emitErrorAndClose(websocket, err2); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes2(16).toString("base64"); + const request = isSecure ? https.request : http2.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err2) => { + if (req === null || req[kAborted]) return; + req = websocket._req = null; + emitErrorAndClose(websocket, err2); + }); + req.on("response", (res) => { + const location2 = res.headers.location; + const statusCode = res.statusCode; + if (location2 && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL2(location2, address); + } catch (e) { + const err2 = new SyntaxError(`Invalid URL: ${location2}`); + emitErrorAndClose(websocket, err2); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket.CONNECTING) return; + req = websocket._req = null; + const upgrade = res.headers.upgrade; + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse(secWebSocketExtensions); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } + } + function emitErrorAndClose(websocket, err2) { + websocket._readyState = WebSocket.CLOSING; + websocket._errorEmitted = true; + websocket.emit("error", err2); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket.CLOSING; + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err2); + } else { + stream.destroy(err2); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob(data) ? data.size : toBuffer(data).length; + if (websocket._socket) websocket._sender._bufferedBytes += length; + else websocket._bufferedAmount += length; + } + if (cb) { + const err2 = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err2); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) websocket.close(); + else websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) websocket._socket.resume(); + } + function receiverOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err2[kStatusCode]); + } + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function senderOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket.readyState === WebSocket.CLOSED) return; + if (websocket.readyState === WebSocket.OPEN) { + websocket._readyState = WebSocket.CLOSING; + setCloseTimer(websocket); + } + this._socket.end(); + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + websocket._closeTimeout + ); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket.CLOSING; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && this._readableState.length !== 0) { + const chunk = this.read(this._readableState.length); + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket.CLOSING; + this.destroy(); + } + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/stream.js +var require_stream = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/stream.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket(); + var { Duplex } = __require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err2) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err2); + } + } + function createWebSocketStream(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) ws.pause(); + }); + ws.once("error", function error(err2) { + if (duplex.destroyed) return; + terminateOnDestroy = false; + duplex.destroy(err2); + }); + ws.once("close", function close() { + if (duplex.destroyed) return; + duplex.push(null); + }); + duplex._destroy = function(err2, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err2); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error(err3) { + called = true; + callback(err3); + }); + ws.once("close", function close() { + if (!called) callback(err2); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module2.exports = createWebSocketStream; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/subprotocol.js +var require_subprotocol = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/subprotocol.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation(); + function parse(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i = 0; + for (i; i < header.length; i++) { + const code = header.charCodeAt(i); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module2.exports = { parse }; + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket-server.js +var require_websocket_server = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket-server.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var http2 = __require("http"); + var { Duplex } = __require("stream"); + var { createHash } = __require("crypto"); + var extension = require_extension(); + var PerMessageDeflate = require_permessage_deflate(); + var subprotocol = require_subprotocol(); + var WebSocket = require_websocket(); + var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants12(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer = class extends EventEmitter { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to + * wait for the closing handshake to finish after `websocket.close()` is + * called + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + allowSynchronousEvents: true, + autoPong: true, + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + closeTimeout: CLOSE_TIMEOUT, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http2.createServer((req, res) => { + const body = http2.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) this.once("close", cb); + if (this._state === CLOSING) return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const upgrade = req.headers.upgrade; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (key === void 0 || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 13 && version !== 8) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, { + "Sec-WebSocket-Version": "13, 8" + }); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err2) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null, void 0, this.options); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + allowSynchronousEvents: this.options.allowSynchronousEvents, + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module2.exports = WebSocketServer; + function addListeners(server, map) { + for (const event of Object.keys(map)) server.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server.removeListener(event, map[event]); + } + }; + } + function emitClose(server) { + server._state = CLOSED; + server.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http2.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http2.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server, req, socket, code, message, headers) { + if (server.listenerCount("wsClientError")) { + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshakeOrEmitwsClientError); + server.emit("wsClientError", err2, socket, req); + } else { + abortHandshake(socket, code, message, headers); + } + } + } +}); + +// node_modules/@trezor/websocket-client/node_modules/ws/index.js +var require_ws = __commonJS({ + "node_modules/@trezor/websocket-client/node_modules/ws/index.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket(); + WebSocket.createWebSocketStream = require_stream(); + WebSocket.Server = require_websocket_server(); + WebSocket.Receiver = require_receiver(); + WebSocket.Sender = require_sender(); + WebSocket.WebSocket = WebSocket; + WebSocket.WebSocketServer = WebSocket.Server; + module2.exports = WebSocket; + } +}); + +// node_modules/@trezor/websocket-client/lib/client.js +var require_client2 = __commonJS({ + "node_modules/@trezor/websocket-client/lib/client.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WebsocketClient = exports2.WebsocketError = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ws_1 = tslib_1.__importDefault(require_ws()); + var utils_1 = require_lib(); + var DEFAULT_TIMEOUT = 20 * 1e3; + var DEFAULT_PING_TIMEOUT = 50 * 1e3; + var WebsocketError = class extends Error { + }; + exports2.WebsocketError = WebsocketError; + var WebsocketClient = class extends utils_1.TypedEmitter { + options; + messages; + emitter = this; + ws; + pingTimeout; + connectPromise; + ping() { + return this.sendMessage({ + type: "ping" + }); + } + constructor(options) { + super(); + this.options = options; + this.messages = (0, utils_1.createDeferredManager)({ + timeout: this.options.timeout || DEFAULT_TIMEOUT, + onTimeout: (promiseId) => this.onMessageTimeout(promiseId) + }); + } + initWebsocket({ + url, + timeout, + headers, + agent + }) { + if (typeof url !== "string") { + throw new WebsocketError("websocket_no_url"); + } + if (url.startsWith("http")) { + url = url.replace("http", "ws"); + } + return new ws_1.default(url, { + timeout, + headers: { + Origin: "https://node.trezor.io", + ...headers + }, + agent + }); + } + setPingTimeout() { + clearTimeout(this.pingTimeout); + const doPing = () => { + if (this.isConnected()) { + return this.onPing().catch(() => { + }); + } + }; + this.pingTimeout = this.isConnected() ? setTimeout(doPing, this.options.pingTimeout || DEFAULT_PING_TIMEOUT) : void 0; + } + onPing() { + return this.ping(); + } + onMessageTimeout(_promiseId) { + const { + ws + } = this; + if (!ws) return; + this.messages.rejectAll(new WebsocketError("websocket_timeout")); + ws.close(); + } + onError() { + this.onClose(); + } + sendMessage(message, { + timeout + } = {}) { + const { + ws + } = this; + if (!ws || !this.isConnected()) throw new WebsocketError("websocket_not_initialized"); + const { + promiseId, + promise + } = this.messages.create(timeout); + const req = { + id: promiseId.toString(), + ...message + }; + this.setPingTimeout(); + this.options.onSending?.(message); + ws.send(JSON.stringify(req)); + return promise; + } + sendRawMessage(message) { + const { + ws + } = this; + if (!ws || !this.isConnected()) throw new WebsocketError("websocket_not_initialized"); + ws.send(message, { + binary: typeof message !== "string" + }); + this.setPingTimeout(); + } + onMessage(message, messageValidation) { + try { + const data = JSON.parse(message.toString()); + const messageId = Number(data.id); + try { + const payload = messageValidation ? messageValidation(data) : data; + if (payload) { + this.messages.resolve(messageId, payload); + } + } catch (error) { + this.messages.reject(messageId, error); + } + } catch { + } finally { + this.setPingTimeout(); + } + } + async connect() { + if (this.connectPromise) { + return this.connectPromise; + } + if (this.isConnected()) return Promise.resolve(); + if (this.ws?.readyState === ws_1.default.CLOSING) { + await new Promise((resolve) => this.emitter.once("disconnected", resolve)); + } + const dfd = (0, utils_1.createDeferred)(); + this.connectPromise = dfd.promise; + const ws = this.createWebsocket ? this.createWebsocket() : this.initWebsocket(this.options); + const connectionTimeout = setTimeout(() => { + this.onClose(); + dfd.reject(new WebsocketError("websocket_timeout")); + try { + ws.close(); + } catch { + } + }, this.options.connectionTimeout || this.options.timeout || DEFAULT_TIMEOUT); + ws.once("error", (error) => { + clearTimeout(connectionTimeout); + this.onClose(); + dfd.reject(new WebsocketError(error.message)); + }); + ws.on("open", () => { + clearTimeout(connectionTimeout); + this.init(); + dfd.resolve(); + }); + this.ws = ws; + return dfd.promise.finally(() => { + this.connectPromise = void 0; + }); + } + init() { + const { + ws + } = this; + if (!ws || !this.isConnected()) { + throw Error("Websocket init cannot be called"); + } + ws.removeAllListeners(); + ws.on("error", (_error) => this.onError()); + ws.on("message", (message) => this.onMessage(message)); + ws.on("close", () => { + this.emitter.emit("disconnected"); + this.onClose(); + }); + } + disconnect() { + if (this.isConnected()) { + const disconnectPromise = new Promise((resolve) => { + this.ws?.once("close", resolve); + }); + this.ws?.close(); + return disconnectPromise; + } + return Promise.resolve(); + } + isConnected() { + return this.ws?.readyState === ws_1.default.OPEN; + } + onClose() { + clearTimeout(this.pingTimeout); + this.ws?.removeAllListeners(); + this.ws?.on("error", () => { + }); + this.messages.rejectAll(new WebsocketError("Websocket closed unexpectedly")); + } + dispose() { + this.removeAllListeners(); + this.disconnect(); + this.onClose(); + } + }; + exports2.WebsocketClient = WebsocketClient; + } +}); + +// node_modules/@trezor/websocket-client/lib/index.js +var require_lib14 = __commonJS({ + "node_modules/@trezor/websocket-client/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WebsocketClient = void 0; + var client_1 = require_client2(); + Object.defineProperty(exports2, "WebsocketClient", { + enumerable: true, + get: function() { + return client_1.WebsocketClient; + } + }); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/baseWebsocket.js +var require_baseWebsocket = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/baseWebsocket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BaseWebsocket = void 0; + var errors_1 = require_errors7(); + var websocket_client_1 = require_lib14(); + var BaseWebsocket = class extends websocket_client_1.WebsocketClient { + subscriptions = []; + async onPing() { + if (this.subscriptions.length > 0 || this.options.keepAlive) { + await this.ping().catch((error) => { + throw new errors_1.CustomError("websocket_runtime_error", error.message); + }); + } else { + this.disconnect(); + } + } + onMessage(message) { + super.onMessage(message, ({ + id, + data + }) => { + if (data.error) { + throw new errors_1.CustomError("websocket_error_message", data.error.message); + } + const messageSettled = this.messages.resolve(Number(id), data); + if (!messageSettled) { + const subs = this.subscriptions.find((s) => s.id === id); + if (subs) { + subs.callback(data); + } + } + }); + } + sendMessage(message) { + return super.sendMessage(message).catch((error) => { + throw new errors_1.CustomError(error.message); + }); + } + addSubscription(type, callback) { + const id = this.messages.nextId().toString(); + this.subscriptions.push({ + id, + type, + callback + }); + } + removeSubscription(type) { + const index = this.subscriptions.findIndex((s) => s.type === type); + if (index >= 0) { + this.subscriptions.splice(index, 1); + } + return index; + } + }; + exports2.BaseWebsocket = BaseWebsocket; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/blockbook/websocket.js +var require_websocket2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/blockbook/websocket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BlockbookAPI = void 0; + var errors_1 = require_errors7(); + var env_utils_1 = require_lib4(); + var baseWebsocket_1 = require_baseWebsocket(); + var BlockbookAPI = class extends baseWebsocket_1.BaseWebsocket { + createWebsocket() { + let { + url + } = this.options; + if (typeof url !== "string") { + throw new errors_1.CustomError("websocket_no_url"); + } + if (url.startsWith("http")) { + url = url.replace("http", "ws"); + } + if (!url.endsWith("/websocket")) { + const suffix = url.endsWith("/") ? "websocket" : "/websocket"; + url += suffix; + } + return this.initWebsocket({ + url, + agent: this.options.agent, + headers: { + "User-Agent": `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`, + ...this.options.headers + } + }); + } + ping() { + return this.getBlockHash(1); + } + send = (method, params = {}) => this.sendMessage({ + method, + params + }); + getServerInfo() { + return this.send("getInfo"); + } + getBlockHash(block) { + return this.send("getBlockHash", { + height: block + }); + } + getBlock(block) { + return this.send("getBlock", { + id: `${block}` + }); + } + getBlockFilter(blockHash, filterParams) { + return this.send("getBlockFilter", { + blockHash, + scriptType: "taproot-noordinals", + ...filterParams + }); + } + getBlockFiltersBatch(bestKnownBlockHash, pageSize, filterParams) { + return this.send("getBlockFiltersBatch", { + bestKnownBlockHash, + pageSize, + scriptType: "taproot-noordinals", + ...filterParams + }); + } + getMempoolFilters(fromTimestamp, filterParams) { + return this.send("getMempoolFilters", { + fromTimestamp, + scriptType: "taproot-noordinals", + ...filterParams + }); + } + getAccountInfo(payload) { + return this.send("getAccountInfo", payload); + } + getAccountUtxo(descriptor) { + return this.send("getAccountUtxo", { + descriptor + }); + } + getTransaction(txid) { + return this.send("getTransaction", { + txid + }); + } + pushTransaction(hex, disableAlternativeRPC) { + return this.send("sendTransaction", { + hex, + disableAlternativeRPC + }); + } + estimateFee(payload) { + return this.send("estimateFee", payload); + } + rpcCall(payload) { + return this.send("rpcCall", payload); + } + getCurrentFiatRates(payload) { + return this.send("getCurrentFiatRates", payload); + } + getAccountBalanceHistory(payload) { + return this.send("getBalanceHistory", payload); + } + getFiatRatesForTimestamps(payload) { + return this.send("getFiatRatesForTimestamps", payload); + } + getFiatRatesTickersList(payload) { + return this.send("getFiatRatesTickersList", payload); + } + subscribeAddresses(addresses) { + this.removeSubscription("notification"); + this.addSubscription("notification", (result) => this.emit("notification", result)); + return this.send("subscribeAddresses", { + addresses + }); + } + unsubscribeAddresses() { + const index = this.removeSubscription("notification"); + return index >= 0 ? this.send("unsubscribeAddresses") : { + subscribed: false + }; + } + subscribeBlock() { + this.removeSubscription("block"); + this.addSubscription("block", (result) => this.emit("block", result)); + return this.send("subscribeNewBlock"); + } + unsubscribeBlock() { + const index = this.removeSubscription("block"); + return index >= 0 ? this.send("unsubscribeNewBlock") : { + subscribed: false + }; + } + subscribeFiatRates(currency) { + this.removeSubscription("fiatRates"); + this.addSubscription("fiatRates", (result) => this.emit("fiatRates", result)); + return this.send("subscribeFiatRates", { + currency + }); + } + unsubscribeFiatRates() { + const index = this.removeSubscription("fiatRates"); + return index >= 0 ? this.send("unsubscribeFiatRates") : { + subscribed: false + }; + } + subscribeMempool() { + this.removeSubscription("mempool"); + this.addSubscription("mempool", (result) => this.emit("mempool", result)); + return this.send("subscribeNewTransaction"); + } + unsubscribeMempool() { + const index = this.removeSubscription("mempool"); + return index >= 0 ? this.send("unsubscribeNewTransaction") : { + subscribed: false + }; + } + }; + exports2.BlockbookAPI = BlockbookAPI; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/blockbook/index.js +var require_blockbook2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/blockbook/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Blockbook; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var utils = tslib_1.__importStar(require_blockbook()); + var baseWorker_1 = require_baseWorker(); + var websocket_1 = require_websocket2(); + var getInfo = async (request) => { + const api = await request.connect(); + const info = await api.getServerInfo(); + return { + type: constants_1.RESPONSES.GET_INFO, + payload: { + url: api.options.url, + ...utils.transformServerInfo(info) + } + }; + }; + var getBlockHash = async (request) => { + const api = await request.connect(); + const info = await api.getBlockHash(request.payload); + return { + type: constants_1.RESPONSES.GET_BLOCK_HASH, + payload: info.hash + }; + }; + var getBlock = async (request) => { + const api = await request.connect(); + const info = await api.getBlock(request.payload); + return { + type: constants_1.RESPONSES.GET_BLOCK, + payload: info + }; + }; + var getAccountInfo = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const info = await api.getAccountInfo(payload); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: utils.transformAccountInfo(info) + }; + }; + var getAccountUtxo = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const utxos = await api.getAccountUtxo(payload); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_UTXO, + payload: utils.transformAccountUtxo(utxos) + }; + }; + var getAccountBalanceHistory = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const history = await api.getAccountBalanceHistory(payload); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY, + payload: history + }; + }; + var getCurrentFiatRates = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const fiatRates = await api.getCurrentFiatRates(payload); + return { + type: constants_1.RESPONSES.GET_CURRENT_FIAT_RATES, + payload: fiatRates + }; + }; + var getFiatRatesForTimestamps = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const { + tickers + } = await api.getFiatRatesForTimestamps(payload); + return { + type: constants_1.RESPONSES.GET_FIAT_RATES_FOR_TIMESTAMPS, + payload: { + tickers + } + }; + }; + var getFiatRatesTickersList = async (request) => { + const { + payload + } = request; + const api = await request.connect(); + const tickers = await api.getFiatRatesTickersList(payload); + return { + type: constants_1.RESPONSES.GET_FIAT_RATES_TICKERS_LIST, + payload: { + ts: tickers.ts, + availableCurrencies: tickers.available_currencies + } + }; + }; + var getTransaction = async (request) => { + const api = await request.connect(); + const rawtx = await api.getTransaction(request.payload); + const tx = utils.transformTransaction(rawtx); + return { + type: constants_1.RESPONSES.GET_TRANSACTION, + payload: tx + }; + }; + var getTransactionHex = async (request) => { + const api = await request.connect(); + const { + hex + } = await api.getTransaction(request.payload); + if (!hex) throw new errors_1.CustomError(`Missing hex of ${request.payload}`); + return { + type: constants_1.RESPONSES.GET_TRANSACTION_HEX, + payload: hex + }; + }; + var pushTransaction = async (request) => { + const api = await request.connect(); + const { + hex, + disableAlternativeRPC + } = request.payload; + const resp = await api.pushTransaction(hex, disableAlternativeRPC); + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload: resp.result + }; + }; + var estimateFee = async (request) => { + const api = await request.connect(); + const resp = await api.estimateFee(request.payload); + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload: resp + }; + }; + var rpcCall = async (request) => { + const api = await request.connect(); + const resp = await api.rpcCall(request.payload); + return { + type: constants_1.RESPONSES.RPC_CALL, + payload: resp + }; + }; + var onNewBlock = ({ + post + }, event) => { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight: event.height, + blockHash: event.hash + } + } + }); + }; + var onMempoolTx = ({ + post + }, payload) => { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "mempool", + payload + } + }); + }; + var onTransaction = ({ + state, + post + }, event) => { + if (!event.tx) return; + const descriptor = event.address; + const account = state.getAccount(descriptor); + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "notification", + payload: { + descriptor: account ? account.descriptor : descriptor, + tx: account ? utils.transformTransaction(event.tx, account.addresses ?? account.descriptor) : utils.transformTransaction(event.tx, descriptor) + } + } + }); + }; + var onNewFiatRates = ({ + post + }, event) => { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "fiatRates", + payload: { + rates: event.rates + } + } + }); + }; + var subscribeAccounts = async (ctx, accounts) => { + const api = await ctx.connect(); + const { + state + } = ctx; + state.addAccounts(accounts); + if (!state.getSubscription("notification")) { + api.on("notification", (ev) => onTransaction(ctx, ev)); + state.addSubscription("notification"); + } + return api.subscribeAddresses(state.getAddresses()); + }; + var subscribeAddresses = async (ctx, addresses) => { + const api = await ctx.connect(); + const { + state + } = ctx; + state.addAddresses(addresses); + if (!state.getSubscription("notification")) { + api.on("notification", (ev) => onTransaction(ctx, ev)); + state.addSubscription("notification"); + } + return api.subscribeAddresses(state.getAddresses()); + }; + var subscribeBlock = async (ctx) => { + if (ctx.state.getSubscription("block")) return { + subscribed: true + }; + ctx.state.addSubscription("block"); + const api = await ctx.connect(); + api.on("block", (ev) => onNewBlock(ctx, ev)); + return api.subscribeBlock(); + }; + var subscribeFiatRates = async (ctx, currency) => { + const api = await ctx.connect(); + if (!ctx.state.getSubscription("fiatRates")) { + ctx.state.addSubscription("fiatRates"); + api.on("fiatRates", (ev) => onNewFiatRates(ctx, ev)); + } + return api.subscribeFiatRates(currency); + }; + var subscribeMempool = async (ctx) => { + const api = await ctx.connect(); + if (!ctx.state.getSubscription("mempool")) { + ctx.state.addSubscription("mempool"); + api.on("mempool", (ev) => onMempoolTx(ctx, ev)); + } + return api.subscribeMempool(); + }; + var subscribe = async (request) => { + const { + payload + } = request; + let response; + if (payload.type === "accounts") { + response = await subscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + response = await subscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + response = await subscribeBlock(request); + } else if (payload.type === "fiatRates") { + response = await subscribeFiatRates(request, payload.currency); + } else if (payload.type === "mempool") { + response = await subscribeMempool(request); + } else { + throw new errors_1.CustomError("invalid_param", "+type"); + } + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: response + }; + }; + var unsubscribeAccounts = async ({ + state, + connect + }, accounts) => { + state.removeAccounts(accounts || state.getAccounts()); + const api = await connect(); + const subscribed = state.getAddresses(); + if (subscribed.length < 1) { + api.removeAllListeners("notification"); + state.removeSubscription("notification"); + return api.unsubscribeAddresses(); + } + return api.subscribeAddresses(subscribed); + }; + var unsubscribeAddresses = async ({ + state, + connect + }, addresses) => { + const api = await connect(); + if (!addresses) { + state.removeAccounts(state.getAccounts()); + } + const subscribed = state.removeAddresses(addresses || state.getAddresses()); + if (subscribed.length < 1) { + api.removeAllListeners("notification"); + state.removeSubscription("notification"); + return api.unsubscribeAddresses(); + } + return api.subscribeAddresses(subscribed); + }; + var unsubscribeBlock = async ({ + state, + connect + }) => { + if (!state.getSubscription("block")) return { + subscribed: false + }; + const api = await connect(); + api.removeAllListeners("block"); + state.removeSubscription("block"); + return api.unsubscribeBlock(); + }; + var unsubscribeFiatRates = async ({ + state, + connect + }) => { + if (!state.getSubscription("fiatRates")) return { + subscribed: false + }; + const api = await connect(); + api.removeAllListeners("fiatRates"); + state.removeSubscription("fiatRates"); + return api.unsubscribeFiatRates(); + }; + var unsubscribeMempool = async ({ + state, + connect + }) => { + if (!state.getSubscription("mempool")) return { + subscribed: false + }; + const api = await connect(); + api.removeAllListeners("mempool"); + state.removeSubscription("mempool"); + return api.unsubscribeMempool(); + }; + var unsubscribe = async (request) => { + const { + payload + } = request; + let response; + if (payload.type === "accounts") { + response = await unsubscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + response = await unsubscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + response = await unsubscribeBlock(request); + } else if (payload.type === "fiatRates") { + response = await unsubscribeFiatRates(request); + } else if (payload.type === "mempool") { + response = await unsubscribeMempool(request); + } else { + throw new errors_1.CustomError("invalid_param", "+type"); + } + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: response + }; + }; + var onRequest = (request) => { + switch (request.type) { + case constants_1.MESSAGES.GET_INFO: + return getInfo(request); + case constants_1.MESSAGES.GET_BLOCK_HASH: + return getBlockHash(request); + case constants_1.MESSAGES.GET_BLOCK: + return getBlock(request); + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return getAccountInfo(request); + case constants_1.MESSAGES.GET_ACCOUNT_UTXO: + return getAccountUtxo(request); + case constants_1.MESSAGES.GET_TRANSACTION: + return getTransaction(request); + case constants_1.MESSAGES.GET_TRANSACTION_HEX: + return getTransactionHex(request); + case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY: + return getAccountBalanceHistory(request); + case constants_1.MESSAGES.GET_CURRENT_FIAT_RATES: + return getCurrentFiatRates(request); + case constants_1.MESSAGES.GET_FIAT_RATES_FOR_TIMESTAMPS: + return getFiatRatesForTimestamps(request); + case constants_1.MESSAGES.GET_FIAT_RATES_TICKERS_LIST: + return getFiatRatesTickersList(request); + case constants_1.MESSAGES.ESTIMATE_FEE: + return estimateFee(request); + case constants_1.MESSAGES.RPC_CALL: + return rpcCall(request); + case constants_1.MESSAGES.PUSH_TRANSACTION: + return pushTransaction(request); + case constants_1.MESSAGES.SUBSCRIBE: + return subscribe(request); + case constants_1.MESSAGES.UNSUBSCRIBE: + return unsubscribe(request); + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var BlockbookWorker = class extends baseWorker_1.BaseWorker { + cleanup() { + if (this.api) { + this.api.dispose(); + this.api.removeAllListeners(); + } + super.cleanup(); + } + isConnected(api) { + return api?.isConnected() ?? false; + } + async tryConnect(url) { + const { + timeout, + pingTimeout, + keepAlive + } = this.settings; + const api = new websocket_1.BlockbookAPI({ + url, + timeout, + pingTimeout, + keepAlive, + agent: this.proxyAgent + }); + await api.connect(); + api.on("disconnected", () => { + this.post({ + id: -1, + type: constants_1.RESPONSES.DISCONNECTED, + payload: true + }); + this.cleanup(); + }); + this.post({ + id: -1, + type: constants_1.RESPONSES.CONNECTED + }); + return api; + } + disconnect() { + if (this.api) { + this.api.disconnect(); + } + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + post: (data) => this.post(data), + state: this.state + }; + const response = await onRequest(request); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, error); + } + } + }; + function Blockbook() { + return new BlockbookWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new BlockbookWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/xrpl/node_modules/eventemitter3/index.js +var require_eventemitter3 = __commonJS({ + "node_modules/xrpl/node_modules/eventemitter3/index.js"(exports2, module2) { + "use strict"; + var has = Object.prototype.hasOwnProperty; + var prefix = "~"; + function Events() { + } + if (Object.create) { + Events.prototype = /* @__PURE__ */ Object.create(null); + if (!new Events().__proto__) prefix = false; + } + function EE(fn, context, once) { + this.fn = fn; + this.context = context; + this.once = once || false; + } + function addListener(emitter, event, fn, context, once) { + if (typeof fn !== "function") { + throw new TypeError("The listener must be a function"); + } + var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event; + if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; + else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); + else emitter._events[evt] = [emitter._events[evt], listener]; + return emitter; + } + function clearEvent(emitter, evt) { + if (--emitter._eventsCount === 0) emitter._events = new Events(); + else delete emitter._events[evt]; + } + function EventEmitter() { + this._events = new Events(); + this._eventsCount = 0; + } + EventEmitter.prototype.eventNames = function eventNames() { + var names = [], events, name; + if (this._eventsCount === 0) return names; + for (name in events = this._events) { + if (has.call(events, name)) names.push(prefix ? name.slice(1) : name); + } + if (Object.getOwnPropertySymbols) { + return names.concat(Object.getOwnPropertySymbols(events)); + } + return names; + }; + EventEmitter.prototype.listeners = function listeners(event) { + var evt = prefix ? prefix + event : event, handlers = this._events[evt]; + if (!handlers) return []; + if (handlers.fn) return [handlers.fn]; + for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { + ee[i] = handlers[i].fn; + } + return ee; + }; + EventEmitter.prototype.listenerCount = function listenerCount(event) { + var evt = prefix ? prefix + event : event, listeners = this._events[evt]; + if (!listeners) return 0; + if (listeners.fn) return 1; + return listeners.length; + }; + EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { + var evt = prefix ? prefix + event : event; + if (!this._events[evt]) return false; + var listeners = this._events[evt], len = arguments.length, args, i; + if (listeners.fn) { + if (listeners.once) this.removeListener(event, listeners.fn, void 0, true); + switch (len) { + case 1: + return listeners.fn.call(listeners.context), true; + case 2: + return listeners.fn.call(listeners.context, a1), true; + case 3: + return listeners.fn.call(listeners.context, a1, a2), true; + case 4: + return listeners.fn.call(listeners.context, a1, a2, a3), true; + case 5: + return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; + case 6: + return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; + } + for (i = 1, args = new Array(len - 1); i < len; i++) { + args[i - 1] = arguments[i]; + } + listeners.fn.apply(listeners.context, args); + } else { + var length = listeners.length, j; + for (i = 0; i < length; i++) { + if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true); + switch (len) { + case 1: + listeners[i].fn.call(listeners[i].context); + break; + case 2: + listeners[i].fn.call(listeners[i].context, a1); + break; + case 3: + listeners[i].fn.call(listeners[i].context, a1, a2); + break; + case 4: + listeners[i].fn.call(listeners[i].context, a1, a2, a3); + break; + default: + if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) { + args[j - 1] = arguments[j]; + } + listeners[i].fn.apply(listeners[i].context, args); + } + } + } + return true; + }; + EventEmitter.prototype.on = function on(event, fn, context) { + return addListener(this, event, fn, context, false); + }; + EventEmitter.prototype.once = function once(event, fn, context) { + return addListener(this, event, fn, context, true); + }; + EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) { + var evt = prefix ? prefix + event : event; + if (!this._events[evt]) return this; + if (!fn) { + clearEvent(this, evt); + return this; + } + var listeners = this._events[evt]; + if (listeners.fn) { + if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) { + clearEvent(this, evt); + } + } else { + for (var i = 0, events = [], length = listeners.length; i < length; i++) { + if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) { + events.push(listeners[i]); + } + } + if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; + else clearEvent(this, evt); + } + return this; + }; + EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { + var evt; + if (event) { + evt = prefix ? prefix + event : event; + if (this._events[evt]) clearEvent(this, evt); + } else { + this._events = new Events(); + this._eventsCount = 0; + } + return this; + }; + EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + EventEmitter.prototype.addListener = EventEmitter.prototype.on; + EventEmitter.prefixed = prefix; + EventEmitter.EventEmitter = EventEmitter; + if ("undefined" !== typeof module2) { + module2.exports = EventEmitter; + } + } +}); + +// node_modules/xrpl/dist/npm/errors.js +var require_errors8 = __commonJS({ + "node_modules/xrpl/dist/npm/errors.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.XRPLFaucetError = exports2.NotFoundError = exports2.ValidationError = exports2.ResponseFormatError = exports2.TimeoutError = exports2.RippledNotInitializedError = exports2.DisconnectedError = exports2.NotConnectedError = exports2.RippledError = exports2.ConnectionError = exports2.UnexpectedError = exports2.XrplError = void 0; + var XrplError = class extends Error { + constructor(message = "", data) { + super(message); + this.name = this.constructor.name; + this.message = message; + this.data = data; + if (Error.captureStackTrace != null) { + Error.captureStackTrace(this, this.constructor); + } + } + toString() { + let result = `[${this.name}(${this.message}`; + if (this.data) { + result += `, ${JSON.stringify(this.data)}`; + } + result += ")]"; + return result; + } + inspect() { + return this.toString(); + } + }; + exports2.XrplError = XrplError; + var RippledError = class extends XrplError { + }; + exports2.RippledError = RippledError; + var UnexpectedError = class extends XrplError { + }; + exports2.UnexpectedError = UnexpectedError; + var ConnectionError = class extends XrplError { + }; + exports2.ConnectionError = ConnectionError; + var NotConnectedError = class extends ConnectionError { + }; + exports2.NotConnectedError = NotConnectedError; + var DisconnectedError = class extends ConnectionError { + }; + exports2.DisconnectedError = DisconnectedError; + var RippledNotInitializedError = class extends ConnectionError { + }; + exports2.RippledNotInitializedError = RippledNotInitializedError; + var TimeoutError = class extends ConnectionError { + }; + exports2.TimeoutError = TimeoutError; + var ResponseFormatError = class extends ConnectionError { + }; + exports2.ResponseFormatError = ResponseFormatError; + var ValidationError = class extends XrplError { + }; + exports2.ValidationError = ValidationError; + var XRPLFaucetError = class extends XrplError { + }; + exports2.XRPLFaucetError = XRPLFaucetError; + var NotFoundError = class extends XrplError { + constructor(message = "Not found") { + super(message); + } + }; + exports2.NotFoundError = NotFoundError; + } +}); + +// node_modules/xrpl/dist/npm/models/common/index.js +var require_common3 = __commonJS({ + "node_modules/xrpl/dist/npm/models/common/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DEFAULT_API_VERSION = exports2.RIPPLED_API_V2 = exports2.RIPPLED_API_V1 = void 0; + exports2.RIPPLED_API_V1 = 1; + exports2.RIPPLED_API_V2 = 2; + exports2.DEFAULT_API_VERSION = exports2.RIPPLED_API_V2; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/AccountRoot.js +var require_AccountRoot = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/AccountRoot.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AccountRootFlags = void 0; + var AccountRootFlags; + (function(AccountRootFlags2) { + AccountRootFlags2[AccountRootFlags2["lsfPasswordSpent"] = 65536] = "lsfPasswordSpent"; + AccountRootFlags2[AccountRootFlags2["lsfRequireDestTag"] = 131072] = "lsfRequireDestTag"; + AccountRootFlags2[AccountRootFlags2["lsfRequireAuth"] = 262144] = "lsfRequireAuth"; + AccountRootFlags2[AccountRootFlags2["lsfDisallowXRP"] = 524288] = "lsfDisallowXRP"; + AccountRootFlags2[AccountRootFlags2["lsfDisableMaster"] = 1048576] = "lsfDisableMaster"; + AccountRootFlags2[AccountRootFlags2["lsfNoFreeze"] = 2097152] = "lsfNoFreeze"; + AccountRootFlags2[AccountRootFlags2["lsfGlobalFreeze"] = 4194304] = "lsfGlobalFreeze"; + AccountRootFlags2[AccountRootFlags2["lsfDefaultRipple"] = 8388608] = "lsfDefaultRipple"; + AccountRootFlags2[AccountRootFlags2["lsfDepositAuth"] = 16777216] = "lsfDepositAuth"; + AccountRootFlags2[AccountRootFlags2["lsfAMM"] = 33554432] = "lsfAMM"; + AccountRootFlags2[AccountRootFlags2["lsfDisallowIncomingNFTokenOffer"] = 67108864] = "lsfDisallowIncomingNFTokenOffer"; + AccountRootFlags2[AccountRootFlags2["lsfDisallowIncomingCheck"] = 134217728] = "lsfDisallowIncomingCheck"; + AccountRootFlags2[AccountRootFlags2["lsfDisallowIncomingPayChan"] = 268435456] = "lsfDisallowIncomingPayChan"; + AccountRootFlags2[AccountRootFlags2["lsfDisallowIncomingTrustline"] = 536870912] = "lsfDisallowIncomingTrustline"; + AccountRootFlags2[AccountRootFlags2["lsfAllowTrustLineClawback"] = 2147483648] = "lsfAllowTrustLineClawback"; + AccountRootFlags2[AccountRootFlags2["lsfAllowTrustLineLocking"] = 1073741824] = "lsfAllowTrustLineLocking"; + })(AccountRootFlags || (exports2.AccountRootFlags = AccountRootFlags = {})); + } +}); + +// node_modules/@noble/hashes/cryptoNode.js +var require_cryptoNode = __commonJS({ + "node_modules/@noble/hashes/cryptoNode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.crypto = void 0; + var nc = __require("node:crypto"); + exports2.crypto = nc && typeof nc === "object" && "webcrypto" in nc ? nc.webcrypto : nc && typeof nc === "object" && "randomBytes" in nc ? nc : void 0; + } +}); + +// node_modules/@noble/hashes/utils.js +var require_utils9 = __commonJS({ + "node_modules/@noble/hashes/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.wrapXOFConstructorWithOpts = exports2.wrapConstructorWithOpts = exports2.wrapConstructor = exports2.Hash = exports2.nextTick = exports2.swap32IfBE = exports2.byteSwapIfBE = exports2.swap8IfBE = exports2.isLE = void 0; + exports2.isBytes = isBytes2; + exports2.anumber = anumber2; + exports2.abytes = abytes2; + exports2.ahash = ahash; + exports2.aexists = aexists2; + exports2.aoutput = aoutput2; + exports2.u8 = u8; + exports2.u32 = u32; + exports2.clean = clean2; + exports2.createView = createView2; + exports2.rotr = rotr2; + exports2.rotl = rotl; + exports2.byteSwap = byteSwap; + exports2.byteSwap32 = byteSwap32; + exports2.bytesToHex = bytesToHex2; + exports2.hexToBytes = hexToBytes2; + exports2.asyncLoop = asyncLoop; + exports2.utf8ToBytes = utf8ToBytes; + exports2.bytesToUtf8 = bytesToUtf8; + exports2.toBytes = toBytes; + exports2.kdfInputToBytes = kdfInputToBytes; + exports2.concatBytes = concatBytes2; + exports2.checkOpts = checkOpts; + exports2.createHasher = createHasher3; + exports2.createOptHasher = createOptHasher; + exports2.createXOFer = createXOFer; + exports2.randomBytes = randomBytes2; + var crypto_1 = require_cryptoNode(); + function isBytes2(a) { + return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array"; + } + function anumber2(n) { + if (!Number.isSafeInteger(n) || n < 0) + throw new Error("positive integer expected, got " + n); + } + function abytes2(b, ...lengths) { + if (!isBytes2(b)) + throw new Error("Uint8Array expected"); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b.length); + } + function ahash(h) { + if (typeof h !== "function" || typeof h.create !== "function") + throw new Error("Hash should be wrapped by utils.createHasher"); + anumber2(h.outputLen); + anumber2(h.blockLen); + } + function aexists2(instance, checkFinished = true) { + if (instance.destroyed) + throw new Error("Hash instance has been destroyed"); + if (checkFinished && instance.finished) + throw new Error("Hash#digest() has already been called"); + } + function aoutput2(out, instance) { + abytes2(out); + const min = instance.outputLen; + if (out.length < min) { + throw new Error("digestInto() expects output buffer of length at least " + min); + } + } + function u8(arr) { + return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength); + } + function u32(arr) { + return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4)); + } + function clean2(...arrays) { + for (let i = 0; i < arrays.length; i++) { + arrays[i].fill(0); + } + } + function createView2(arr) { + return new DataView(arr.buffer, arr.byteOffset, arr.byteLength); + } + function rotr2(word, shift) { + return word << 32 - shift | word >>> shift; + } + function rotl(word, shift) { + return word << shift | word >>> 32 - shift >>> 0; + } + exports2.isLE = (() => new Uint8Array(new Uint32Array([287454020]).buffer)[0] === 68)(); + function byteSwap(word) { + return word << 24 & 4278190080 | word << 8 & 16711680 | word >>> 8 & 65280 | word >>> 24 & 255; + } + exports2.swap8IfBE = exports2.isLE ? (n) => n : (n) => byteSwap(n); + exports2.byteSwapIfBE = exports2.swap8IfBE; + function byteSwap32(arr) { + for (let i = 0; i < arr.length; i++) { + arr[i] = byteSwap(arr[i]); + } + return arr; + } + exports2.swap32IfBE = exports2.isLE ? (u) => u : byteSwap32; + var hasHexBuiltin2 = /* @__PURE__ */ (() => ( + // @ts-ignore + typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function" + ))(); + var hexes2 = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); + function bytesToHex2(bytes) { + abytes2(bytes); + if (hasHexBuiltin2) + return bytes.toHex(); + let hex = ""; + for (let i = 0; i < bytes.length; i++) { + hex += hexes2[bytes[i]]; + } + return hex; + } + var asciis2 = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 }; + function asciiToBase162(ch) { + if (ch >= asciis2._0 && ch <= asciis2._9) + return ch - asciis2._0; + if (ch >= asciis2.A && ch <= asciis2.F) + return ch - (asciis2.A - 10); + if (ch >= asciis2.a && ch <= asciis2.f) + return ch - (asciis2.a - 10); + return; + } + function hexToBytes2(hex) { + if (typeof hex !== "string") + throw new Error("hex string expected, got " + typeof hex); + if (hasHexBuiltin2) + return Uint8Array.fromHex(hex); + const hl = hex.length; + const al = hl / 2; + if (hl % 2) + throw new Error("hex string expected, got unpadded hex of length " + hl); + const array = new Uint8Array(al); + for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) { + const n1 = asciiToBase162(hex.charCodeAt(hi)); + const n2 = asciiToBase162(hex.charCodeAt(hi + 1)); + if (n1 === void 0 || n2 === void 0) { + const char = hex[hi] + hex[hi + 1]; + throw new Error('hex string expected, got non-hex character "' + char + '" at index ' + hi); + } + array[ai] = n1 * 16 + n2; + } + return array; + } + var nextTick = async () => { + }; + exports2.nextTick = nextTick; + async function asyncLoop(iters, tick, cb) { + let ts = Date.now(); + for (let i = 0; i < iters; i++) { + cb(i); + const diff = Date.now() - ts; + if (diff >= 0 && diff < tick) + continue; + await (0, exports2.nextTick)(); + ts += diff; + } + } + function utf8ToBytes(str) { + if (typeof str !== "string") + throw new Error("string expected"); + return new Uint8Array(new TextEncoder().encode(str)); + } + function bytesToUtf8(bytes) { + return new TextDecoder().decode(bytes); + } + function toBytes(data) { + if (typeof data === "string") + data = utf8ToBytes(data); + abytes2(data); + return data; + } + function kdfInputToBytes(data) { + if (typeof data === "string") + data = utf8ToBytes(data); + abytes2(data); + return data; + } + function concatBytes2(...arrays) { + let sum = 0; + for (let i = 0; i < arrays.length; i++) { + const a = arrays[i]; + abytes2(a); + sum += a.length; + } + const res = new Uint8Array(sum); + for (let i = 0, pad = 0; i < arrays.length; i++) { + const a = arrays[i]; + res.set(a, pad); + pad += a.length; + } + return res; + } + function checkOpts(defaults, opts) { + if (opts !== void 0 && {}.toString.call(opts) !== "[object Object]") + throw new Error("options should be object or undefined"); + const merged = Object.assign(defaults, opts); + return merged; + } + var Hash3 = class { + }; + exports2.Hash = Hash3; + function createHasher3(hashCons) { + const hashC = (msg) => hashCons().update(toBytes(msg)).digest(); + const tmp = hashCons(); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = () => hashCons(); + return hashC; + } + function createOptHasher(hashCons) { + const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest(); + const tmp = hashCons({}); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = (opts) => hashCons(opts); + return hashC; + } + function createXOFer(hashCons) { + const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest(); + const tmp = hashCons({}); + hashC.outputLen = tmp.outputLen; + hashC.blockLen = tmp.blockLen; + hashC.create = (opts) => hashCons(opts); + return hashC; + } + exports2.wrapConstructor = createHasher3; + exports2.wrapConstructorWithOpts = createOptHasher; + exports2.wrapXOFConstructorWithOpts = createXOFer; + function randomBytes2(bytesLength = 32) { + if (crypto_1.crypto && typeof crypto_1.crypto.getRandomValues === "function") { + return crypto_1.crypto.getRandomValues(new Uint8Array(bytesLength)); + } + if (crypto_1.crypto && typeof crypto_1.crypto.randomBytes === "function") { + return Uint8Array.from(crypto_1.crypto.randomBytes(bytesLength)); + } + throw new Error("crypto.getRandomValues must be defined"); + } + } +}); + +// node_modules/@xrplf/isomorphic/dist/utils/shared.js +var require_shared = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/utils/shared.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.equal = exports2.concat = exports2.HEX_REGEX = void 0; + var utils_1 = require_utils9(); + exports2.HEX_REGEX = /^[A-F0-9]*$/iu; + function concat2(views) { + return (0, utils_1.concatBytes)(...views); + } + exports2.concat = concat2; + function equal(buf1, buf2) { + if (buf1.byteLength !== buf2.byteLength) { + return false; + } + const dv1 = new Int8Array(buf1); + const dv2 = new Int8Array(buf2); + for (let i = 0; i !== buf1.byteLength; i++) { + if (dv1[i] !== dv2[i]) { + return false; + } + } + return true; + } + exports2.equal = equal; + } +}); + +// node_modules/@xrplf/isomorphic/dist/utils/index.js +var require_utils10 = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/utils/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.stringToHex = exports2.hexToString = exports2.randomBytes = exports2.hexToBytes = exports2.bytesToHex = void 0; + var crypto_1 = __require("crypto"); + var shared_1 = require_shared(); + var OriginalBuffer = Symbol("OriginalBuffer"); + function toUint8Array(buffer) { + const u8Array = new Uint8Array(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)); + u8Array[OriginalBuffer] = buffer; + return u8Array; + } + var bytesToHex2 = (bytes) => { + const buf = Buffer.from(bytes); + return buf.toString("hex").toUpperCase(); + }; + exports2.bytesToHex = bytesToHex2; + var hexToBytes2 = (hex) => { + if (!shared_1.HEX_REGEX.test(hex)) { + throw new Error("Invalid hex string"); + } + return toUint8Array(Buffer.from(hex, "hex")); + }; + exports2.hexToBytes = hexToBytes2; + var randomBytes2 = (size) => { + return toUint8Array((0, crypto_1.randomBytes)(size)); + }; + exports2.randomBytes = randomBytes2; + var hexToString = (hex, encoding = "utf8") => { + if (!shared_1.HEX_REGEX.test(hex)) { + throw new Error("Invalid hex string"); + } + return new TextDecoder(encoding).decode((0, exports2.hexToBytes)(hex)); + }; + exports2.hexToString = hexToString; + var stringToHex = (string) => { + return (0, exports2.bytesToHex)(new TextEncoder().encode(string)); + }; + exports2.stringToHex = stringToHex; + __exportStar2(require_shared(), exports2); + } +}); + +// node_modules/@scure/base/lib/index.js +var require_lib15 = __commonJS({ + "node_modules/@scure/base/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.bytes = exports2.stringToBytes = exports2.str = exports2.bytesToString = exports2.hex = exports2.utf8 = exports2.bech32m = exports2.bech32 = exports2.base58check = exports2.createBase58check = exports2.base58xmr = exports2.base58xrp = exports2.base58flickr = exports2.base58 = exports2.base64urlnopad = exports2.base64url = exports2.base64nopad = exports2.base64 = exports2.base32crockford = exports2.base32hexnopad = exports2.base32hex = exports2.base32nopad = exports2.base32 = exports2.base16 = exports2.utils = void 0; + function isBytes2(a) { + return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array"; + } + function abytes2(b, ...lengths) { + if (!isBytes2(b)) + throw new Error("Uint8Array expected"); + if (lengths.length > 0 && !lengths.includes(b.length)) + throw new Error("Uint8Array expected of length " + lengths + ", got length=" + b.length); + } + function isArrayOf(isString, arr) { + if (!Array.isArray(arr)) + return false; + if (arr.length === 0) + return true; + if (isString) { + return arr.every((item) => typeof item === "string"); + } else { + return arr.every((item) => Number.isSafeInteger(item)); + } + } + function afn(input) { + if (typeof input !== "function") + throw new Error("function expected"); + return true; + } + function astr(label, input) { + if (typeof input !== "string") + throw new Error(`${label}: string expected`); + return true; + } + function anumber2(n) { + if (!Number.isSafeInteger(n)) + throw new Error(`invalid integer: ${n}`); + } + function aArr(input) { + if (!Array.isArray(input)) + throw new Error("array expected"); + } + function astrArr(label, input) { + if (!isArrayOf(true, input)) + throw new Error(`${label}: array of strings expected`); + } + function anumArr(label, input) { + if (!isArrayOf(false, input)) + throw new Error(`${label}: array of numbers expected`); + } + // @__NO_SIDE_EFFECTS__ + function chain(...args) { + const id = (a) => a; + const wrap = (a, b) => (c) => a(b(c)); + const encode = args.map((x) => x.encode).reduceRight(wrap, id); + const decode = args.map((x) => x.decode).reduce(wrap, id); + return { encode, decode }; + } + // @__NO_SIDE_EFFECTS__ + function alphabet(letters) { + const lettersA = typeof letters === "string" ? letters.split("") : letters; + const len = lettersA.length; + astrArr("alphabet", lettersA); + const indexes = new Map(lettersA.map((l, i) => [l, i])); + return { + encode: (digits) => { + aArr(digits); + return digits.map((i) => { + if (!Number.isSafeInteger(i) || i < 0 || i >= len) + throw new Error(`alphabet.encode: digit index outside alphabet "${i}". Allowed: ${letters}`); + return lettersA[i]; + }); + }, + decode: (input) => { + aArr(input); + return input.map((letter) => { + astr("alphabet.decode", letter); + const i = indexes.get(letter); + if (i === void 0) + throw new Error(`Unknown letter: "${letter}". Allowed: ${letters}`); + return i; + }); + } + }; + } + // @__NO_SIDE_EFFECTS__ + function join(separator = "") { + astr("join", separator); + return { + encode: (from) => { + astrArr("join.decode", from); + return from.join(separator); + }, + decode: (to) => { + astr("join.decode", to); + return to.split(separator); + } + }; + } + // @__NO_SIDE_EFFECTS__ + function padding(bits, chr = "=") { + anumber2(bits); + astr("padding", chr); + return { + encode(data) { + astrArr("padding.encode", data); + while (data.length * bits % 8) + data.push(chr); + return data; + }, + decode(input) { + astrArr("padding.decode", input); + let end = input.length; + if (end * bits % 8) + throw new Error("padding: invalid, string should have whole number of bytes"); + for (; end > 0 && input[end - 1] === chr; end--) { + const last = end - 1; + const byte = last * bits; + if (byte % 8 === 0) + throw new Error("padding: invalid, string has too much padding"); + } + return input.slice(0, end); + } + }; + } + // @__NO_SIDE_EFFECTS__ + function normalize(fn) { + afn(fn); + return { encode: (from) => from, decode: (to) => fn(to) }; + } + function convertRadix(data, from, to) { + if (from < 2) + throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`); + if (to < 2) + throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`); + aArr(data); + if (!data.length) + return []; + let pos = 0; + const res = []; + const digits = Array.from(data, (d) => { + anumber2(d); + if (d < 0 || d >= from) + throw new Error(`invalid integer: ${d}`); + return d; + }); + const dlen = digits.length; + while (true) { + let carry = 0; + let done = true; + for (let i = pos; i < dlen; i++) { + const digit = digits[i]; + const fromCarry = from * carry; + const digitBase = fromCarry + digit; + if (!Number.isSafeInteger(digitBase) || fromCarry / from !== carry || digitBase - digit !== fromCarry) { + throw new Error("convertRadix: carry overflow"); + } + const div = digitBase / to; + carry = digitBase % to; + const rounded = Math.floor(div); + digits[i] = rounded; + if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase) + throw new Error("convertRadix: carry overflow"); + if (!done) + continue; + else if (!rounded) + pos = i; + else + done = false; + } + res.push(carry); + if (done) + break; + } + for (let i = 0; i < data.length - 1 && data[i] === 0; i++) + res.push(0); + return res.reverse(); + } + var gcd = (a, b) => b === 0 ? a : gcd(b, a % b); + var radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from, to) => from + (to - gcd(from, to)); + var powers = /* @__PURE__ */ (() => { + let res = []; + for (let i = 0; i < 40; i++) + res.push(2 ** i); + return res; + })(); + function convertRadix2(data, from, to, padding2) { + aArr(data); + if (from <= 0 || from > 32) + throw new Error(`convertRadix2: wrong from=${from}`); + if (to <= 0 || to > 32) + throw new Error(`convertRadix2: wrong to=${to}`); + if (/* @__PURE__ */ radix2carry(from, to) > 32) { + throw new Error(`convertRadix2: carry overflow from=${from} to=${to} carryBits=${/* @__PURE__ */ radix2carry(from, to)}`); + } + let carry = 0; + let pos = 0; + const max = powers[from]; + const mask = powers[to] - 1; + const res = []; + for (const n of data) { + anumber2(n); + if (n >= max) + throw new Error(`convertRadix2: invalid data word=${n} from=${from}`); + carry = carry << from | n; + if (pos + from > 32) + throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`); + pos += from; + for (; pos >= to; pos -= to) + res.push((carry >> pos - to & mask) >>> 0); + const pow = powers[pos]; + if (pow === void 0) + throw new Error("invalid carry"); + carry &= pow - 1; + } + carry = carry << to - pos & mask; + if (!padding2 && pos >= from) + throw new Error("Excess padding"); + if (!padding2 && carry > 0) + throw new Error(`Non-zero padding: ${carry}`); + if (padding2 && pos > 0) + res.push(carry >>> 0); + return res; + } + // @__NO_SIDE_EFFECTS__ + function radix(num) { + anumber2(num); + const _256 = 2 ** 8; + return { + encode: (bytes) => { + if (!isBytes2(bytes)) + throw new Error("radix.encode input should be Uint8Array"); + return convertRadix(Array.from(bytes), _256, num); + }, + decode: (digits) => { + anumArr("radix.decode", digits); + return Uint8Array.from(convertRadix(digits, num, _256)); + } + }; + } + // @__NO_SIDE_EFFECTS__ + function radix2(bits, revPadding = false) { + anumber2(bits); + if (bits <= 0 || bits > 32) + throw new Error("radix2: bits should be in (0..32]"); + if (/* @__PURE__ */ radix2carry(8, bits) > 32 || /* @__PURE__ */ radix2carry(bits, 8) > 32) + throw new Error("radix2: carry overflow"); + return { + encode: (bytes) => { + if (!isBytes2(bytes)) + throw new Error("radix2.encode input should be Uint8Array"); + return convertRadix2(Array.from(bytes), 8, bits, !revPadding); + }, + decode: (digits) => { + anumArr("radix2.decode", digits); + return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding)); + } + }; + } + function unsafeWrapper(fn) { + afn(fn); + return function(...args) { + try { + return fn.apply(null, args); + } catch (e) { + } + }; + } + function checksum(len, fn) { + anumber2(len); + afn(fn); + return { + encode(data) { + if (!isBytes2(data)) + throw new Error("checksum.encode: input should be Uint8Array"); + const sum = fn(data).slice(0, len); + const res = new Uint8Array(data.length + len); + res.set(data); + res.set(sum, data.length); + return res; + }, + decode(data) { + if (!isBytes2(data)) + throw new Error("checksum.decode: input should be Uint8Array"); + const payload = data.slice(0, -len); + const oldChecksum = data.slice(-len); + const newChecksum = fn(payload).slice(0, len); + for (let i = 0; i < len; i++) + if (newChecksum[i] !== oldChecksum[i]) + throw new Error("Invalid checksum"); + return payload; + } + }; + } + exports2.utils = { + alphabet, + chain, + checksum, + convertRadix, + convertRadix2, + radix, + radix2, + join, + padding + }; + exports2.base16 = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(4), /* @__PURE__ */ alphabet("0123456789ABCDEF"), /* @__PURE__ */ join("")); + exports2.base32 = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(5), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), /* @__PURE__ */ padding(5), /* @__PURE__ */ join("")); + exports2.base32nopad = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(5), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"), /* @__PURE__ */ join("")); + exports2.base32hex = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(5), /* @__PURE__ */ alphabet("0123456789ABCDEFGHIJKLMNOPQRSTUV"), /* @__PURE__ */ padding(5), /* @__PURE__ */ join("")); + exports2.base32hexnopad = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(5), /* @__PURE__ */ alphabet("0123456789ABCDEFGHIJKLMNOPQRSTUV"), /* @__PURE__ */ join("")); + exports2.base32crockford = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(5), /* @__PURE__ */ alphabet("0123456789ABCDEFGHJKMNPQRSTVWXYZ"), /* @__PURE__ */ join(""), /* @__PURE__ */ normalize((s) => s.toUpperCase().replace(/O/g, "0").replace(/[IL]/g, "1"))); + var hasBase64Builtin = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toBase64 === "function" && typeof Uint8Array.fromBase64 === "function")(); + var decodeBase64Builtin = (s, isUrl) => { + astr("base64", s); + const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/; + const alphabet2 = isUrl ? "base64url" : "base64"; + if (s.length > 0 && !re.test(s)) + throw new Error("invalid base64"); + return Uint8Array.fromBase64(s, { alphabet: alphabet2, lastChunkHandling: "strict" }); + }; + exports2.base64 = hasBase64Builtin ? { + encode(b) { + abytes2(b); + return b.toBase64(); + }, + decode(s) { + return decodeBase64Builtin(s, false); + } + } : /* @__PURE__ */ chain(/* @__PURE__ */ radix2(6), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), /* @__PURE__ */ padding(6), /* @__PURE__ */ join("")); + exports2.base64nopad = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(6), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"), /* @__PURE__ */ join("")); + exports2.base64url = hasBase64Builtin ? { + encode(b) { + abytes2(b); + return b.toBase64({ alphabet: "base64url" }); + }, + decode(s) { + return decodeBase64Builtin(s, true); + } + } : /* @__PURE__ */ chain(/* @__PURE__ */ radix2(6), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"), /* @__PURE__ */ padding(6), /* @__PURE__ */ join("")); + exports2.base64urlnopad = /* @__PURE__ */ chain(/* @__PURE__ */ radix2(6), /* @__PURE__ */ alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"), /* @__PURE__ */ join("")); + var genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc) => /* @__PURE__ */ chain(/* @__PURE__ */ radix(58), /* @__PURE__ */ alphabet(abc), /* @__PURE__ */ join("")); + exports2.base58 = /* @__PURE__ */ genBase58("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"); + exports2.base58flickr = /* @__PURE__ */ genBase58("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"); + exports2.base58xrp = /* @__PURE__ */ genBase58("rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz"); + var XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11]; + exports2.base58xmr = { + encode(data) { + let res = ""; + for (let i = 0; i < data.length; i += 8) { + const block = data.subarray(i, i + 8); + res += exports2.base58.encode(block).padStart(XMR_BLOCK_LEN[block.length], "1"); + } + return res; + }, + decode(str) { + let res = []; + for (let i = 0; i < str.length; i += 11) { + const slice = str.slice(i, i + 11); + const blockLen = XMR_BLOCK_LEN.indexOf(slice.length); + const block = exports2.base58.decode(slice); + for (let j = 0; j < block.length - blockLen; j++) { + if (block[j] !== 0) + throw new Error("base58xmr: wrong padding"); + } + res = res.concat(Array.from(block.slice(block.length - blockLen))); + } + return Uint8Array.from(res); + } + }; + var createBase58check = (sha256) => /* @__PURE__ */ chain(checksum(4, (data) => sha256(sha256(data))), exports2.base58); + exports2.createBase58check = createBase58check; + exports2.base58check = exports2.createBase58check; + var BECH_ALPHABET = /* @__PURE__ */ chain(/* @__PURE__ */ alphabet("qpzry9x8gf2tvdw0s3jn54khce6mua7l"), /* @__PURE__ */ join("")); + var POLYMOD_GENERATORS = [996825010, 642813549, 513874426, 1027748829, 705979059]; + function bech32Polymod(pre) { + const b = pre >> 25; + let chk = (pre & 33554431) << 5; + for (let i = 0; i < POLYMOD_GENERATORS.length; i++) { + if ((b >> i & 1) === 1) + chk ^= POLYMOD_GENERATORS[i]; + } + return chk; + } + function bechChecksum(prefix, words, encodingConst = 1) { + const len = prefix.length; + let chk = 1; + for (let i = 0; i < len; i++) { + const c = prefix.charCodeAt(i); + if (c < 33 || c > 126) + throw new Error(`Invalid prefix (${prefix})`); + chk = bech32Polymod(chk) ^ c >> 5; + } + chk = bech32Polymod(chk); + for (let i = 0; i < len; i++) + chk = bech32Polymod(chk) ^ prefix.charCodeAt(i) & 31; + for (let v of words) + chk = bech32Polymod(chk) ^ v; + for (let i = 0; i < 6; i++) + chk = bech32Polymod(chk); + chk ^= encodingConst; + return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]], 30, 5, false)); + } + // @__NO_SIDE_EFFECTS__ + function genBech32(encoding) { + const ENCODING_CONST = encoding === "bech32" ? 1 : 734539939; + const _words = /* @__PURE__ */ radix2(5); + const fromWords = _words.decode; + const toWords = _words.encode; + const fromWordsUnsafe = unsafeWrapper(fromWords); + function encode(prefix, words, limit = 90) { + astr("bech32.encode prefix", prefix); + if (isBytes2(words)) + words = Array.from(words); + anumArr("bech32.encode", words); + const plen = prefix.length; + if (plen === 0) + throw new TypeError(`Invalid prefix length ${plen}`); + const actualLength = plen + 7 + words.length; + if (limit !== false && actualLength > limit) + throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`); + const lowered = prefix.toLowerCase(); + const sum = bechChecksum(lowered, words, ENCODING_CONST); + return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}`; + } + function decode(str, limit = 90) { + astr("bech32.decode input", str); + const slen = str.length; + if (slen < 8 || limit !== false && slen > limit) + throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`); + const lowered = str.toLowerCase(); + if (str !== lowered && str !== str.toUpperCase()) + throw new Error(`String must be lowercase or uppercase`); + const sepIndex = lowered.lastIndexOf("1"); + if (sepIndex === 0 || sepIndex === -1) + throw new Error(`Letter "1" must be present between prefix and data only`); + const prefix = lowered.slice(0, sepIndex); + const data = lowered.slice(sepIndex + 1); + if (data.length < 6) + throw new Error("Data must be at least 6 characters long"); + const words = BECH_ALPHABET.decode(data).slice(0, -6); + const sum = bechChecksum(prefix, words, ENCODING_CONST); + if (!data.endsWith(sum)) + throw new Error(`Invalid checksum in ${str}: expected "${sum}"`); + return { prefix, words }; + } + const decodeUnsafe = unsafeWrapper(decode); + function decodeToBytes(str) { + const { prefix, words } = decode(str, false); + return { prefix, words, bytes: fromWords(words) }; + } + function encodeFromBytes(prefix, bytes) { + return encode(prefix, toWords(bytes)); + } + return { + encode, + decode, + encodeFromBytes, + decodeToBytes, + decodeUnsafe, + fromWords, + fromWordsUnsafe, + toWords + }; + } + exports2.bech32 = /* @__PURE__ */ genBech32("bech32"); + exports2.bech32m = /* @__PURE__ */ genBech32("bech32m"); + exports2.utf8 = { + encode: (data) => new TextDecoder().decode(data), + decode: (str) => new TextEncoder().encode(str) + }; + var hasHexBuiltin2 = /* @__PURE__ */ (() => typeof Uint8Array.from([]).toHex === "function" && typeof Uint8Array.fromHex === "function")(); + var hexBuiltin = { + encode(data) { + abytes2(data); + return data.toHex(); + }, + decode(s) { + astr("hex", s); + return Uint8Array.fromHex(s); + } + }; + exports2.hex = hasHexBuiltin2 ? hexBuiltin : /* @__PURE__ */ chain(/* @__PURE__ */ radix2(4), /* @__PURE__ */ alphabet("0123456789abcdef"), /* @__PURE__ */ join(""), /* @__PURE__ */ normalize((s) => { + if (typeof s !== "string" || s.length % 2 !== 0) + throw new TypeError(`hex.decode: expected string, got ${typeof s} with length ${s.length}`); + return s.toLowerCase(); + })); + var CODERS = { + utf8: exports2.utf8, + hex: exports2.hex, + base16: exports2.base16, + base32: exports2.base32, + base64: exports2.base64, + base64url: exports2.base64url, + base58: exports2.base58, + base58xmr: exports2.base58xmr + }; + var coderTypeError = "Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr"; + var bytesToString = (type, bytes) => { + if (typeof type !== "string" || !CODERS.hasOwnProperty(type)) + throw new TypeError(coderTypeError); + if (!isBytes2(bytes)) + throw new TypeError("bytesToString() expects Uint8Array"); + return CODERS[type].encode(bytes); + }; + exports2.bytesToString = bytesToString; + exports2.str = exports2.bytesToString; + var stringToBytes = (type, str) => { + if (!CODERS.hasOwnProperty(type)) + throw new TypeError(coderTypeError); + if (typeof str !== "string") + throw new TypeError("stringToBytes() expects string"); + return CODERS[type].decode(str); + }; + exports2.stringToBytes = stringToBytes; + exports2.bytes = exports2.stringToBytes; + } +}); + +// node_modules/@xrplf/isomorphic/dist/internal/normalizeInput.js +var require_normalizeInput = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/internal/normalizeInput.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + function normalizeInput(input) { + return Array.isArray(input) ? new Uint8Array(input) : input; + } + exports2.default = normalizeInput; + } +}); + +// node_modules/@xrplf/isomorphic/dist/internal/wrapCryptoCreateHash.js +var require_wrapCryptoCreateHash = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/internal/wrapCryptoCreateHash.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var normalizeInput_1 = __importDefault2(require_normalizeInput()); + function wrapCryptoCreateHash(type, fn) { + function hashFn(input) { + return fn(type).update((0, normalizeInput_1.default)(input)).digest(); + } + hashFn.create = () => { + const hash = fn(type); + return { + update(input) { + hash.update((0, normalizeInput_1.default)(input)); + return this; + }, + digest() { + return hash.digest(); + } + }; + }; + return hashFn; + } + exports2.default = wrapCryptoCreateHash; + } +}); + +// node_modules/@xrplf/isomorphic/dist/sha256/index.js +var require_sha256 = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/sha256/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sha256 = void 0; + var crypto_1 = __require("crypto"); + var wrapCryptoCreateHash_1 = __importDefault2(require_wrapCryptoCreateHash()); + exports2.sha256 = (0, wrapCryptoCreateHash_1.default)("sha256", crypto_1.createHash); + } +}); + +// node_modules/ripple-address-codec/dist/utils.js +var require_utils11 = __commonJS({ + "node_modules/ripple-address-codec/dist/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.concatArgs = exports2.arrayEqual = void 0; + function arrayEqual(arr1, arr2) { + if (arr1.length !== arr2.length) { + return false; + } + return arr1.every((value, index) => value === arr2[index]); + } + exports2.arrayEqual = arrayEqual; + function isScalar(val) { + return typeof val === "number"; + } + function concatArgs(...args) { + return args.flatMap((arg) => { + return isScalar(arg) ? [arg] : Array.from(arg); + }); + } + exports2.concatArgs = concatArgs; + } +}); + +// node_modules/ripple-address-codec/dist/xrp-codec.js +var require_xrp_codec = __commonJS({ + "node_modules/ripple-address-codec/dist/xrp-codec.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isValidClassicAddress = exports2.decodeAccountPublic = exports2.encodeAccountPublic = exports2.encodeNodePublic = exports2.decodeNodePublic = exports2.decodeAddress = exports2.decodeAccountID = exports2.encodeAddress = exports2.encodeAccountID = exports2.decodeSeed = exports2.encodeSeed = exports2.codec = void 0; + var base_1 = require_lib15(); + var sha256_1 = require_sha256(); + var utils_1 = require_utils11(); + var Codec = class { + constructor(options) { + this._sha256 = options.sha256; + this._codec = base_1.base58xrp; + } + /** + * Encoder. + * + * @param bytes - Uint8Array of data to encode. + * @param opts - Options object including the version bytes and the expected length of the data to encode. + */ + encode(bytes, opts) { + const versions = opts.versions; + return this._encodeVersioned(bytes, versions, opts.expectedLength); + } + /** + * Decoder. + * + * @param base58string - Base58Check-encoded string to decode. + * @param opts - Options object including the version byte(s) and the expected length of the data after decoding. + */ + /* eslint-disable max-lines-per-function -- + * TODO refactor */ + decode(base58string, opts) { + var _a; + const versions = opts.versions; + const types = opts.versionTypes; + const withoutSum = this.decodeChecked(base58string); + if (versions.length > 1 && !opts.expectedLength) { + throw new Error("expectedLength is required because there are >= 2 possible versions"); + } + const versionLengthGuess = typeof versions[0] === "number" ? 1 : versions[0].length; + const payloadLength = (_a = opts.expectedLength) !== null && _a !== void 0 ? _a : withoutSum.length - versionLengthGuess; + const versionBytes = withoutSum.slice(0, -payloadLength); + const payload = withoutSum.slice(-payloadLength); + for (let i = 0; i < versions.length; i++) { + const version = Array.isArray(versions[i]) ? versions[i] : [versions[i]]; + if ((0, utils_1.arrayEqual)(versionBytes, version)) { + return { + version, + bytes: payload, + type: types ? types[i] : null + }; + } + } + throw new Error("version_invalid: version bytes do not match any of the provided version(s)"); + } + encodeChecked(bytes) { + const check = this._sha256(this._sha256(bytes)).slice(0, 4); + return this._encodeRaw(Uint8Array.from((0, utils_1.concatArgs)(bytes, check))); + } + decodeChecked(base58string) { + const intArray = this._decodeRaw(base58string); + if (intArray.byteLength < 5) { + throw new Error("invalid_input_size: decoded data must have length >= 5"); + } + if (!this._verifyCheckSum(intArray)) { + throw new Error("checksum_invalid"); + } + return intArray.slice(0, -4); + } + _encodeVersioned(bytes, versions, expectedLength) { + if (!checkByteLength(bytes, expectedLength)) { + throw new Error("unexpected_payload_length: bytes.length does not match expectedLength. Ensure that the bytes are a Uint8Array."); + } + return this.encodeChecked((0, utils_1.concatArgs)(versions, bytes)); + } + _encodeRaw(bytes) { + return this._codec.encode(Uint8Array.from(bytes)); + } + /* eslint-enable max-lines-per-function */ + _decodeRaw(base58string) { + return this._codec.decode(base58string); + } + _verifyCheckSum(bytes) { + const computed = this._sha256(this._sha256(bytes.slice(0, -4))).slice(0, 4); + const checksum = bytes.slice(-4); + return (0, utils_1.arrayEqual)(computed, checksum); + } + }; + var ACCOUNT_ID = 0; + var ACCOUNT_PUBLIC_KEY = 35; + var FAMILY_SEED = 33; + var NODE_PUBLIC = 28; + var ED25519_SEED = [1, 225, 75]; + var codecOptions = { + sha256: sha256_1.sha256 + }; + var codecWithXrpAlphabet = new Codec(codecOptions); + exports2.codec = codecWithXrpAlphabet; + function encodeSeed(entropy, type) { + if (!checkByteLength(entropy, 16)) { + throw new Error("entropy must have length 16"); + } + const opts = { + expectedLength: 16, + // for secp256k1, use `FAMILY_SEED` + versions: type === "ed25519" ? ED25519_SEED : [FAMILY_SEED] + }; + return codecWithXrpAlphabet.encode(entropy, opts); + } + exports2.encodeSeed = encodeSeed; + function decodeSeed(seed, opts = { + versionTypes: ["ed25519", "secp256k1"], + versions: [ED25519_SEED, FAMILY_SEED], + expectedLength: 16 + }) { + return codecWithXrpAlphabet.decode(seed, opts); + } + exports2.decodeSeed = decodeSeed; + function encodeAccountID(bytes) { + const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }; + return codecWithXrpAlphabet.encode(bytes, opts); + } + exports2.encodeAccountID = encodeAccountID; + exports2.encodeAddress = encodeAccountID; + function decodeAccountID(accountId) { + const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }; + return codecWithXrpAlphabet.decode(accountId, opts).bytes; + } + exports2.decodeAccountID = decodeAccountID; + exports2.decodeAddress = decodeAccountID; + function decodeNodePublic(base58string) { + const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }; + return codecWithXrpAlphabet.decode(base58string, opts).bytes; + } + exports2.decodeNodePublic = decodeNodePublic; + function encodeNodePublic(bytes) { + const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }; + return codecWithXrpAlphabet.encode(bytes, opts); + } + exports2.encodeNodePublic = encodeNodePublic; + function encodeAccountPublic(bytes) { + const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }; + return codecWithXrpAlphabet.encode(bytes, opts); + } + exports2.encodeAccountPublic = encodeAccountPublic; + function decodeAccountPublic(base58string) { + const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }; + return codecWithXrpAlphabet.decode(base58string, opts).bytes; + } + exports2.decodeAccountPublic = decodeAccountPublic; + function isValidClassicAddress(address) { + try { + decodeAccountID(address); + } catch (_error) { + return false; + } + return true; + } + exports2.isValidClassicAddress = isValidClassicAddress; + function checkByteLength(bytes, expectedLength) { + return "byteLength" in bytes ? bytes.byteLength === expectedLength : bytes.length === expectedLength; + } + } +}); + +// node_modules/ripple-address-codec/dist/index.js +var require_dist4 = __commonJS({ + "node_modules/ripple-address-codec/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isValidXAddress = exports2.decodeXAddress = exports2.xAddressToClassicAddress = exports2.encodeXAddress = exports2.classicAddressToXAddress = exports2.isValidClassicAddress = exports2.decodeAccountPublic = exports2.encodeAccountPublic = exports2.decodeNodePublic = exports2.encodeNodePublic = exports2.decodeAccountID = exports2.encodeAccountID = exports2.decodeSeed = exports2.encodeSeed = exports2.codec = void 0; + var utils_1 = require_utils10(); + var xrp_codec_1 = require_xrp_codec(); + Object.defineProperty(exports2, "codec", { enumerable: true, get: function() { + return xrp_codec_1.codec; + } }); + Object.defineProperty(exports2, "encodeSeed", { enumerable: true, get: function() { + return xrp_codec_1.encodeSeed; + } }); + Object.defineProperty(exports2, "decodeSeed", { enumerable: true, get: function() { + return xrp_codec_1.decodeSeed; + } }); + Object.defineProperty(exports2, "encodeAccountID", { enumerable: true, get: function() { + return xrp_codec_1.encodeAccountID; + } }); + Object.defineProperty(exports2, "decodeAccountID", { enumerable: true, get: function() { + return xrp_codec_1.decodeAccountID; + } }); + Object.defineProperty(exports2, "encodeNodePublic", { enumerable: true, get: function() { + return xrp_codec_1.encodeNodePublic; + } }); + Object.defineProperty(exports2, "decodeNodePublic", { enumerable: true, get: function() { + return xrp_codec_1.decodeNodePublic; + } }); + Object.defineProperty(exports2, "encodeAccountPublic", { enumerable: true, get: function() { + return xrp_codec_1.encodeAccountPublic; + } }); + Object.defineProperty(exports2, "decodeAccountPublic", { enumerable: true, get: function() { + return xrp_codec_1.decodeAccountPublic; + } }); + Object.defineProperty(exports2, "isValidClassicAddress", { enumerable: true, get: function() { + return xrp_codec_1.isValidClassicAddress; + } }); + var PREFIX_BYTES = { + // 5, 68 + main: Uint8Array.from([5, 68]), + // 4, 147 + test: Uint8Array.from([4, 147]) + }; + var MAX_32_BIT_UNSIGNED_INT = 4294967295; + function classicAddressToXAddress(classicAddress, tag, test) { + const accountId = (0, xrp_codec_1.decodeAccountID)(classicAddress); + return encodeXAddress(accountId, tag, test); + } + exports2.classicAddressToXAddress = classicAddressToXAddress; + function encodeXAddress(accountId, tag, test) { + if (accountId.length !== 20) { + throw new Error("Account ID must be 20 bytes"); + } + if (tag !== false && tag > MAX_32_BIT_UNSIGNED_INT) { + throw new Error("Invalid tag"); + } + const theTag = tag || 0; + const flag = tag === false || tag == null ? 0 : 1; + const bytes = (0, utils_1.concat)([ + test ? PREFIX_BYTES.test : PREFIX_BYTES.main, + accountId, + Uint8Array.from([ + // 0x00 if no tag, 0x01 if 32-bit tag + flag, + // first byte + theTag & 255, + // second byte + theTag >> 8 & 255, + // third byte + theTag >> 16 & 255, + // fourth byte + theTag >> 24 & 255, + 0, + 0, + 0, + // four zero bytes (reserved for 64-bit tags) + 0 + ]) + ]); + return xrp_codec_1.codec.encodeChecked(bytes); + } + exports2.encodeXAddress = encodeXAddress; + function xAddressToClassicAddress(xAddress) { + const { accountId, tag, test } = decodeXAddress(xAddress); + const classicAddress = (0, xrp_codec_1.encodeAccountID)(accountId); + return { + classicAddress, + tag, + test + }; + } + exports2.xAddressToClassicAddress = xAddressToClassicAddress; + function decodeXAddress(xAddress) { + const decoded = xrp_codec_1.codec.decodeChecked(xAddress); + const test = isUint8ArrayForTestAddress(decoded); + const accountId = decoded.slice(2, 22); + const tag = tagFromUint8Array(decoded); + return { + accountId, + tag, + test + }; + } + exports2.decodeXAddress = decodeXAddress; + function isUint8ArrayForTestAddress(buf) { + const decodedPrefix = buf.slice(0, 2); + if ((0, utils_1.equal)(PREFIX_BYTES.main, decodedPrefix)) { + return false; + } + if ((0, utils_1.equal)(PREFIX_BYTES.test, decodedPrefix)) { + return true; + } + throw new Error("Invalid X-address: bad prefix"); + } + function tagFromUint8Array(buf) { + const flag = buf[22]; + if (flag >= 2) { + throw new Error("Unsupported X-address"); + } + if (flag === 1) { + return buf[23] + buf[24] * 256 + buf[25] * 65536 + buf[26] * 16777216; + } + if (flag !== 0) { + throw new Error("flag must be zero to indicate no tag"); + } + if (!(0, utils_1.equal)((0, utils_1.hexToBytes)("0000000000000000"), buf.slice(23, 23 + 8))) { + throw new Error("remaining bytes must be zero"); + } + return false; + } + function isValidXAddress(xAddress) { + try { + decodeXAddress(xAddress); + } catch (_error) { + return false; + } + return true; + } + exports2.isValidXAddress = isValidXAddress; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/definitions.json +var require_definitions = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/definitions.json"(exports2, module2) { + module2.exports = { + FIELDS: [ + [ + "Generic", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 0, + type: "Unknown" + } + ], + [ + "Invalid", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: -1, + type: "Unknown" + } + ], + [ + "ObjectEndMarker", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "STObject" + } + ], + [ + "ArrayEndMarker", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "STArray" + } + ], + [ + "taker_gets_funded", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 258, + type: "Amount" + } + ], + [ + "taker_pays_funded", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 259, + type: "Amount" + } + ], + [ + "LedgerEntryType", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "UInt16" + } + ], + [ + "TransactionType", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "UInt16" + } + ], + [ + "SignerWeight", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "UInt16" + } + ], + [ + "TransferFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "UInt16" + } + ], + [ + "TradingFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "UInt16" + } + ], + [ + "DiscountedFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "UInt16" + } + ], + [ + "Version", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "UInt16" + } + ], + [ + "HookStateChangeCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "UInt16" + } + ], + [ + "HookEmitCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "UInt16" + } + ], + [ + "HookExecutionIndex", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "UInt16" + } + ], + [ + "HookApiVersion", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "UInt16" + } + ], + [ + "LedgerFixType", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "UInt16" + } + ], + [ + "ManagementFeeRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "UInt16" + } + ], + [ + "NetworkID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "UInt32" + } + ], + [ + "Flags", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "UInt32" + } + ], + [ + "SourceTag", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "UInt32" + } + ], + [ + "Sequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "UInt32" + } + ], + [ + "PreviousTxnLgrSeq", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "UInt32" + } + ], + [ + "LedgerSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "UInt32" + } + ], + [ + "CloseTime", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "UInt32" + } + ], + [ + "ParentCloseTime", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "UInt32" + } + ], + [ + "SigningTime", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "UInt32" + } + ], + [ + "Expiration", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "UInt32" + } + ], + [ + "TransferRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "UInt32" + } + ], + [ + "WalletSize", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "UInt32" + } + ], + [ + "OwnerCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "UInt32" + } + ], + [ + "DestinationTag", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 14, + type: "UInt32" + } + ], + [ + "LastUpdateTime", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 15, + type: "UInt32" + } + ], + [ + "HighQualityIn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "UInt32" + } + ], + [ + "HighQualityOut", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "UInt32" + } + ], + [ + "LowQualityIn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "UInt32" + } + ], + [ + "LowQualityOut", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "UInt32" + } + ], + [ + "QualityIn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "UInt32" + } + ], + [ + "QualityOut", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "UInt32" + } + ], + [ + "StampEscrow", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "UInt32" + } + ], + [ + "BondAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 23, + type: "UInt32" + } + ], + [ + "LoadFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "UInt32" + } + ], + [ + "OfferSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "UInt32" + } + ], + [ + "FirstLedgerSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "UInt32" + } + ], + [ + "LastLedgerSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "UInt32" + } + ], + [ + "TransactionIndex", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "UInt32" + } + ], + [ + "OperationLimit", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "UInt32" + } + ], + [ + "ReferenceFeeUnits", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "UInt32" + } + ], + [ + "ReserveBase", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 31, + type: "UInt32" + } + ], + [ + "ReserveIncrement", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 32, + type: "UInt32" + } + ], + [ + "SetFlag", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 33, + type: "UInt32" + } + ], + [ + "ClearFlag", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 34, + type: "UInt32" + } + ], + [ + "SignerQuorum", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 35, + type: "UInt32" + } + ], + [ + "CancelAfter", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 36, + type: "UInt32" + } + ], + [ + "FinishAfter", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 37, + type: "UInt32" + } + ], + [ + "SignerListID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 38, + type: "UInt32" + } + ], + [ + "SettleDelay", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 39, + type: "UInt32" + } + ], + [ + "TicketCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 40, + type: "UInt32" + } + ], + [ + "TicketSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 41, + type: "UInt32" + } + ], + [ + "NFTokenTaxon", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 42, + type: "UInt32" + } + ], + [ + "MintedNFTokens", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 43, + type: "UInt32" + } + ], + [ + "BurnedNFTokens", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 44, + type: "UInt32" + } + ], + [ + "HookStateCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 45, + type: "UInt32" + } + ], + [ + "EmitGeneration", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 46, + type: "UInt32" + } + ], + [ + "VoteWeight", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 48, + type: "UInt32" + } + ], + [ + "FirstNFTokenSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 50, + type: "UInt32" + } + ], + [ + "OracleDocumentID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 51, + type: "UInt32" + } + ], + [ + "PermissionValue", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 52, + type: "UInt32" + } + ], + [ + "MutableFlags", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 53, + type: "UInt32" + } + ], + [ + "StartDate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 54, + type: "UInt32" + } + ], + [ + "PaymentInterval", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 55, + type: "UInt32" + } + ], + [ + "GracePeriod", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 56, + type: "UInt32" + } + ], + [ + "PreviousPaymentDate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 57, + type: "UInt32" + } + ], + [ + "NextPaymentDueDate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 58, + type: "UInt32" + } + ], + [ + "PaymentRemaining", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 59, + type: "UInt32" + } + ], + [ + "PaymentTotal", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 60, + type: "UInt32" + } + ], + [ + "LoanSequence", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 61, + type: "UInt32" + } + ], + [ + "CoverRateMinimum", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 62, + type: "UInt32" + } + ], + [ + "CoverRateLiquidation", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 63, + type: "UInt32" + } + ], + [ + "OverpaymentFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 64, + type: "UInt32" + } + ], + [ + "InterestRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 65, + type: "UInt32" + } + ], + [ + "LateInterestRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 66, + type: "UInt32" + } + ], + [ + "CloseInterestRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 67, + type: "UInt32" + } + ], + [ + "OverpaymentInterestRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 68, + type: "UInt32" + } + ], + [ + "IndexNext", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "UInt64" + } + ], + [ + "IndexPrevious", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "UInt64" + } + ], + [ + "BookNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "UInt64" + } + ], + [ + "OwnerNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "UInt64" + } + ], + [ + "BaseFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "UInt64" + } + ], + [ + "ExchangeRate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "UInt64" + } + ], + [ + "LowNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "UInt64" + } + ], + [ + "HighNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "UInt64" + } + ], + [ + "DestinationNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "UInt64" + } + ], + [ + "Cookie", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "UInt64" + } + ], + [ + "ServerVersion", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "UInt64" + } + ], + [ + "NFTokenOfferNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "UInt64" + } + ], + [ + "EmitBurden", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "UInt64" + } + ], + [ + "HookOn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "UInt64" + } + ], + [ + "HookInstructionCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "UInt64" + } + ], + [ + "HookReturnCode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "UInt64" + } + ], + [ + "ReferenceCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "UInt64" + } + ], + [ + "XChainClaimID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "UInt64" + } + ], + [ + "XChainAccountCreateCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "UInt64" + } + ], + [ + "XChainAccountClaimCount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "UInt64" + } + ], + [ + "AssetPrice", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 23, + type: "UInt64" + } + ], + [ + "MaximumAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "UInt64" + } + ], + [ + "OutstandingAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "UInt64" + } + ], + [ + "MPTAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "UInt64" + } + ], + [ + "IssuerNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "UInt64" + } + ], + [ + "SubjectNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "UInt64" + } + ], + [ + "LockedAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "UInt64" + } + ], + [ + "VaultNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "UInt64" + } + ], + [ + "LoanBrokerNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 31, + type: "UInt64" + } + ], + [ + "EmailHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Hash128" + } + ], + [ + "LedgerHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Hash256" + } + ], + [ + "ParentHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Hash256" + } + ], + [ + "TransactionHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "Hash256" + } + ], + [ + "AccountHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "Hash256" + } + ], + [ + "PreviousTxnID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "Hash256" + } + ], + [ + "LedgerIndex", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "Hash256" + } + ], + [ + "WalletLocator", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "Hash256" + } + ], + [ + "RootIndex", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "Hash256" + } + ], + [ + "AccountTxnID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "Hash256" + } + ], + [ + "NFTokenID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "Hash256" + } + ], + [ + "EmitParentTxnID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "Hash256" + } + ], + [ + "EmitNonce", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "Hash256" + } + ], + [ + "EmitHookHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "Hash256" + } + ], + [ + "AMMID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 14, + type: "Hash256" + } + ], + [ + "BookDirectory", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "Hash256" + } + ], + [ + "InvoiceID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "Hash256" + } + ], + [ + "Nickname", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "Hash256" + } + ], + [ + "Amendment", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "Hash256" + } + ], + [ + "Digest", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "Hash256" + } + ], + [ + "Channel", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "Hash256" + } + ], + [ + "ConsensusHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 23, + type: "Hash256" + } + ], + [ + "CheckID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "Hash256" + } + ], + [ + "ValidatedHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "Hash256" + } + ], + [ + "PreviousPageMin", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "Hash256" + } + ], + [ + "NextPageMin", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "Hash256" + } + ], + [ + "NFTokenBuyOffer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "Hash256" + } + ], + [ + "NFTokenSellOffer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "Hash256" + } + ], + [ + "HookStateKey", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "Hash256" + } + ], + [ + "HookHash", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 31, + type: "Hash256" + } + ], + [ + "HookNamespace", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 32, + type: "Hash256" + } + ], + [ + "HookSetTxnID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 33, + type: "Hash256" + } + ], + [ + "DomainID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 34, + type: "Hash256" + } + ], + [ + "VaultID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 35, + type: "Hash256" + } + ], + [ + "ParentBatchID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 36, + type: "Hash256" + } + ], + [ + "LoanBrokerID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 37, + type: "Hash256" + } + ], + [ + "LoanID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 38, + type: "Hash256" + } + ], + [ + "hash", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 257, + type: "Hash256" + } + ], + [ + "index", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 258, + type: "Hash256" + } + ], + [ + "Amount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Amount" + } + ], + [ + "Balance", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Amount" + } + ], + [ + "LimitAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "Amount" + } + ], + [ + "TakerPays", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "Amount" + } + ], + [ + "TakerGets", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "Amount" + } + ], + [ + "LowLimit", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "Amount" + } + ], + [ + "HighLimit", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "Amount" + } + ], + [ + "Fee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "Amount" + } + ], + [ + "SendMax", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "Amount" + } + ], + [ + "DeliverMin", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "Amount" + } + ], + [ + "Amount2", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "Amount" + } + ], + [ + "BidMin", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "Amount" + } + ], + [ + "BidMax", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "Amount" + } + ], + [ + "MinimumOffer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "Amount" + } + ], + [ + "RippleEscrow", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "Amount" + } + ], + [ + "DeliveredAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "Amount" + } + ], + [ + "NFTokenBrokerFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "Amount" + } + ], + [ + "BaseFeeDrops", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "Amount" + } + ], + [ + "ReserveBaseDrops", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 23, + type: "Amount" + } + ], + [ + "ReserveIncrementDrops", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "Amount" + } + ], + [ + "LPTokenOut", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "Amount" + } + ], + [ + "LPTokenIn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "Amount" + } + ], + [ + "EPrice", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "Amount" + } + ], + [ + "Price", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "Amount" + } + ], + [ + "SignatureReward", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "Amount" + } + ], + [ + "MinAccountCreateAmount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "Amount" + } + ], + [ + "LPTokenBalance", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 31, + type: "Amount" + } + ], + [ + "PublicKey", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 1, + type: "Blob" + } + ], + [ + "MessageKey", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 2, + type: "Blob" + } + ], + [ + "SigningPubKey", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 3, + type: "Blob" + } + ], + [ + "TxnSignature", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: true, + nth: 4, + type: "Blob" + } + ], + [ + "URI", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 5, + type: "Blob" + } + ], + [ + "Signature", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: true, + nth: 6, + type: "Blob" + } + ], + [ + "Domain", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 7, + type: "Blob" + } + ], + [ + "FundCode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 8, + type: "Blob" + } + ], + [ + "RemoveCode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 9, + type: "Blob" + } + ], + [ + "ExpireCode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 10, + type: "Blob" + } + ], + [ + "CreateCode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 11, + type: "Blob" + } + ], + [ + "MemoType", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 12, + type: "Blob" + } + ], + [ + "MemoData", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 13, + type: "Blob" + } + ], + [ + "MemoFormat", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 14, + type: "Blob" + } + ], + [ + "Fulfillment", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 16, + type: "Blob" + } + ], + [ + "Condition", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 17, + type: "Blob" + } + ], + [ + "MasterSignature", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: true, + nth: 18, + type: "Blob" + } + ], + [ + "UNLModifyValidator", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 19, + type: "Blob" + } + ], + [ + "ValidatorToDisable", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 20, + type: "Blob" + } + ], + [ + "ValidatorToReEnable", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 21, + type: "Blob" + } + ], + [ + "HookStateData", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 22, + type: "Blob" + } + ], + [ + "HookReturnString", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 23, + type: "Blob" + } + ], + [ + "HookParameterName", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 24, + type: "Blob" + } + ], + [ + "HookParameterValue", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 25, + type: "Blob" + } + ], + [ + "DIDDocument", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 26, + type: "Blob" + } + ], + [ + "Data", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 27, + type: "Blob" + } + ], + [ + "AssetClass", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 28, + type: "Blob" + } + ], + [ + "Provider", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 29, + type: "Blob" + } + ], + [ + "MPTokenMetadata", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 30, + type: "Blob" + } + ], + [ + "CredentialType", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 31, + type: "Blob" + } + ], + [ + "Account", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 1, + type: "AccountID" + } + ], + [ + "Owner", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 2, + type: "AccountID" + } + ], + [ + "Destination", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 3, + type: "AccountID" + } + ], + [ + "Issuer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 4, + type: "AccountID" + } + ], + [ + "Authorize", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 5, + type: "AccountID" + } + ], + [ + "Unauthorize", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 6, + type: "AccountID" + } + ], + [ + "RegularKey", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 8, + type: "AccountID" + } + ], + [ + "NFTokenMinter", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 9, + type: "AccountID" + } + ], + [ + "EmitCallback", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 10, + type: "AccountID" + } + ], + [ + "Holder", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 11, + type: "AccountID" + } + ], + [ + "Delegate", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 12, + type: "AccountID" + } + ], + [ + "HookAccount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 16, + type: "AccountID" + } + ], + [ + "OtherChainSource", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 18, + type: "AccountID" + } + ], + [ + "OtherChainDestination", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 19, + type: "AccountID" + } + ], + [ + "AttestationSignerAccount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 20, + type: "AccountID" + } + ], + [ + "AttestationRewardAccount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 21, + type: "AccountID" + } + ], + [ + "LockingChainDoor", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 22, + type: "AccountID" + } + ], + [ + "IssuingChainDoor", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 23, + type: "AccountID" + } + ], + [ + "Subject", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 24, + type: "AccountID" + } + ], + [ + "Borrower", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 25, + type: "AccountID" + } + ], + [ + "Counterparty", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 26, + type: "AccountID" + } + ], + [ + "Number", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Number" + } + ], + [ + "AssetsAvailable", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Number" + } + ], + [ + "AssetsMaximum", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "Number" + } + ], + [ + "AssetsTotal", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "Number" + } + ], + [ + "LossUnrealized", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "Number" + } + ], + [ + "DebtTotal", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "Number" + } + ], + [ + "DebtMaximum", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "Number" + } + ], + [ + "CoverAvailable", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "Number" + } + ], + [ + "LoanOriginationFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "Number" + } + ], + [ + "LoanServiceFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "Number" + } + ], + [ + "LatePaymentFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "Number" + } + ], + [ + "ClosePaymentFee", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "Number" + } + ], + [ + "PrincipalOutstanding", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "Number" + } + ], + [ + "PrincipalRequested", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 14, + type: "Number" + } + ], + [ + "TotalValueOutstanding", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 15, + type: "Number" + } + ], + [ + "PeriodicPayment", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "Number" + } + ], + [ + "ManagementFeeOutstanding", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "Number" + } + ], + [ + "LoanScale", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Int32" + } + ], + [ + "TransactionMetaData", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "STObject" + } + ], + [ + "CreatedNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "STObject" + } + ], + [ + "DeletedNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "STObject" + } + ], + [ + "ModifiedNode", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "STObject" + } + ], + [ + "PreviousFields", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "STObject" + } + ], + [ + "FinalFields", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "STObject" + } + ], + [ + "NewFields", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "STObject" + } + ], + [ + "TemplateEntry", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "STObject" + } + ], + [ + "Memo", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "STObject" + } + ], + [ + "SignerEntry", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "STObject" + } + ], + [ + "NFToken", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "STObject" + } + ], + [ + "EmitDetails", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "STObject" + } + ], + [ + "Hook", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 14, + type: "STObject" + } + ], + [ + "Permission", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 15, + type: "STObject" + } + ], + [ + "Signer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "STObject" + } + ], + [ + "Majority", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "STObject" + } + ], + [ + "DisabledValidator", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "STObject" + } + ], + [ + "EmittedTxn", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "STObject" + } + ], + [ + "HookExecution", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "STObject" + } + ], + [ + "HookDefinition", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "STObject" + } + ], + [ + "HookParameter", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 23, + type: "STObject" + } + ], + [ + "HookGrant", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "STObject" + } + ], + [ + "VoteEntry", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "STObject" + } + ], + [ + "AuctionSlot", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "STObject" + } + ], + [ + "AuthAccount", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "STObject" + } + ], + [ + "XChainClaimProofSig", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "STObject" + } + ], + [ + "XChainCreateAccountProofSig", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "STObject" + } + ], + [ + "XChainClaimAttestationCollectionElement", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "STObject" + } + ], + [ + "XChainCreateAccountAttestationCollectionElement", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 31, + type: "STObject" + } + ], + [ + "PriceData", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 32, + type: "STObject" + } + ], + [ + "Credential", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 33, + type: "STObject" + } + ], + [ + "RawTransaction", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 34, + type: "STObject" + } + ], + [ + "BatchSigner", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 35, + type: "STObject" + } + ], + [ + "Book", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 36, + type: "STObject" + } + ], + [ + "CounterpartySignature", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: false, + nth: 37, + type: "STObject" + } + ], + [ + "Signers", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: false, + nth: 3, + type: "STArray" + } + ], + [ + "SignerEntries", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "STArray" + } + ], + [ + "Template", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "STArray" + } + ], + [ + "Necessary", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 6, + type: "STArray" + } + ], + [ + "Sufficient", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 7, + type: "STArray" + } + ], + [ + "AffectedNodes", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 8, + type: "STArray" + } + ], + [ + "Memos", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 9, + type: "STArray" + } + ], + [ + "NFTokens", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 10, + type: "STArray" + } + ], + [ + "Hooks", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 11, + type: "STArray" + } + ], + [ + "VoteSlots", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 12, + type: "STArray" + } + ], + [ + "AdditionalBooks", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 13, + type: "STArray" + } + ], + [ + "Majorities", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "STArray" + } + ], + [ + "DisabledValidators", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "STArray" + } + ], + [ + "HookExecutions", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "STArray" + } + ], + [ + "HookParameters", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "STArray" + } + ], + [ + "HookGrants", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "STArray" + } + ], + [ + "XChainClaimAttestations", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 21, + type: "STArray" + } + ], + [ + "XChainCreateAccountAttestations", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 22, + type: "STArray" + } + ], + [ + "PriceDataSeries", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 24, + type: "STArray" + } + ], + [ + "AuthAccounts", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 25, + type: "STArray" + } + ], + [ + "AuthorizeCredentials", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 26, + type: "STArray" + } + ], + [ + "UnauthorizeCredentials", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 27, + type: "STArray" + } + ], + [ + "AcceptedCredentials", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 28, + type: "STArray" + } + ], + [ + "Permissions", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 29, + type: "STArray" + } + ], + [ + "RawTransactions", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 30, + type: "STArray" + } + ], + [ + "BatchSigners", + { + isSerialized: true, + isSigningField: false, + isVLEncoded: false, + nth: 31, + type: "STArray" + } + ], + [ + "CloseResolution", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "UInt8" + } + ], + [ + "Method", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "UInt8" + } + ], + [ + "TransactionResult", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "UInt8" + } + ], + [ + "Scale", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "UInt8" + } + ], + [ + "AssetScale", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 5, + type: "UInt8" + } + ], + [ + "TickSize", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 16, + type: "UInt8" + } + ], + [ + "UNLModifyDisabling", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 17, + type: "UInt8" + } + ], + [ + "HookResult", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 18, + type: "UInt8" + } + ], + [ + "WasLockingChainSend", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 19, + type: "UInt8" + } + ], + [ + "WithdrawalPolicy", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 20, + type: "UInt8" + } + ], + [ + "TakerPaysCurrency", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Hash160" + } + ], + [ + "TakerPaysIssuer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Hash160" + } + ], + [ + "TakerGetsCurrency", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "Hash160" + } + ], + [ + "TakerGetsIssuer", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "Hash160" + } + ], + [ + "Paths", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "PathSet" + } + ], + [ + "Indexes", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 1, + type: "Vector256" + } + ], + [ + "Hashes", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 2, + type: "Vector256" + } + ], + [ + "Amendments", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 3, + type: "Vector256" + } + ], + [ + "NFTokenOffers", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 4, + type: "Vector256" + } + ], + [ + "CredentialIDs", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: true, + nth: 5, + type: "Vector256" + } + ], + [ + "MPTokenIssuanceID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Hash192" + } + ], + [ + "ShareMPTID", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Hash192" + } + ], + [ + "LockingChainIssue", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Issue" + } + ], + [ + "IssuingChainIssue", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Issue" + } + ], + [ + "Asset", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 3, + type: "Issue" + } + ], + [ + "Asset2", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 4, + type: "Issue" + } + ], + [ + "XChainBridge", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "XChainBridge" + } + ], + [ + "BaseAsset", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 1, + type: "Currency" + } + ], + [ + "QuoteAsset", + { + isSerialized: true, + isSigningField: true, + isVLEncoded: false, + nth: 2, + type: "Currency" + } + ], + [ + "Transaction", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 257, + type: "Transaction" + } + ], + [ + "LedgerEntry", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 257, + type: "LedgerEntry" + } + ], + [ + "Validation", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 257, + type: "Validation" + } + ], + [ + "Metadata", + { + isSerialized: false, + isSigningField: false, + isVLEncoded: false, + nth: 257, + type: "Metadata" + } + ] + ], + LEDGER_ENTRY_TYPES: { + AMM: 121, + AccountRoot: 97, + Amendments: 102, + Bridge: 105, + Check: 67, + Credential: 129, + DID: 73, + Delegate: 131, + DepositPreauth: 112, + DirectoryNode: 100, + Escrow: 117, + FeeSettings: 115, + Invalid: -1, + LedgerHashes: 104, + Loan: 137, + LoanBroker: 136, + MPToken: 127, + MPTokenIssuance: 126, + NFTokenOffer: 55, + NFTokenPage: 80, + NegativeUNL: 78, + Offer: 111, + Oracle: 128, + PayChannel: 120, + PermissionedDomain: 130, + RippleState: 114, + SignerList: 83, + Ticket: 84, + Vault: 132, + XChainOwnedClaimID: 113, + XChainOwnedCreateAccountClaimID: 116 + }, + TRANSACTION_RESULTS: { + tecAMM_ACCOUNT: 168, + tecAMM_BALANCE: 163, + tecAMM_EMPTY: 166, + tecAMM_FAILED: 164, + tecAMM_INVALID_TOKENS: 165, + tecAMM_NOT_EMPTY: 167, + tecARRAY_EMPTY: 190, + tecARRAY_TOO_LARGE: 191, + tecBAD_CREDENTIALS: 193, + tecCANT_ACCEPT_OWN_NFTOKEN_OFFER: 158, + tecCLAIM: 100, + tecCRYPTOCONDITION_ERROR: 146, + tecDIR_FULL: 121, + tecDST_TAG_NEEDED: 143, + tecDUPLICATE: 149, + tecEMPTY_DID: 187, + tecEXPIRED: 148, + tecFAILED_PROCESSING: 105, + tecFROZEN: 137, + tecHAS_OBLIGATIONS: 151, + tecHOOK_REJECTED: 153, + tecINCOMPLETE: 169, + tecINSUFFICIENT_FUNDS: 159, + tecINSUFFICIENT_PAYMENT: 161, + tecINSUFFICIENT_RESERVE: 141, + tecINSUFF_FEE: 136, + tecINSUF_RESERVE_LINE: 122, + tecINSUF_RESERVE_OFFER: 123, + tecINTERNAL: 144, + tecINVALID_UPDATE_TIME: 188, + tecINVARIANT_FAILED: 147, + tecKILLED: 150, + tecLIMIT_EXCEEDED: 195, + tecLOCKED: 192, + tecMAX_SEQUENCE_REACHED: 154, + tecNEED_MASTER_KEY: 142, + tecNFTOKEN_BUY_SELL_MISMATCH: 156, + tecNFTOKEN_OFFER_TYPE_MISMATCH: 157, + tecNO_ALTERNATIVE_KEY: 130, + tecNO_AUTH: 134, + tecNO_DELEGATE_PERMISSION: 198, + tecNO_DST: 124, + tecNO_DST_INSUF_XRP: 125, + tecNO_ENTRY: 140, + tecNO_ISSUER: 133, + tecNO_LINE: 135, + tecNO_LINE_INSUF_RESERVE: 126, + tecNO_LINE_REDUNDANT: 127, + tecNO_PERMISSION: 139, + tecNO_REGULAR_KEY: 131, + tecNO_SUITABLE_NFTOKEN_PAGE: 155, + tecNO_TARGET: 138, + tecOBJECT_NOT_FOUND: 160, + tecOVERSIZE: 145, + tecOWNERS: 132, + tecPATH_DRY: 128, + tecPATH_PARTIAL: 101, + tecPRECISION_LOSS: 197, + tecPSEUDO_ACCOUNT: 196, + tecTOKEN_PAIR_NOT_FOUND: 189, + tecTOO_SOON: 152, + tecUNFUNDED: 129, + tecUNFUNDED_ADD: 102, + tecUNFUNDED_AMM: 162, + tecUNFUNDED_OFFER: 103, + tecUNFUNDED_PAYMENT: 104, + tecWRONG_ASSET: 194, + tecXCHAIN_ACCOUNT_CREATE_PAST: 181, + tecXCHAIN_ACCOUNT_CREATE_TOO_MANY: 182, + tecXCHAIN_BAD_CLAIM_ID: 172, + tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR: 185, + tecXCHAIN_BAD_TRANSFER_ISSUE: 170, + tecXCHAIN_CLAIM_NO_QUORUM: 173, + tecXCHAIN_CREATE_ACCOUNT_DISABLED: 186, + tecXCHAIN_CREATE_ACCOUNT_NONXRP_ISSUE: 175, + tecXCHAIN_INSUFF_CREATE_AMOUNT: 180, + tecXCHAIN_NO_CLAIM_ID: 171, + tecXCHAIN_NO_SIGNERS_LIST: 178, + tecXCHAIN_PAYMENT_FAILED: 183, + tecXCHAIN_PROOF_UNKNOWN_KEY: 174, + tecXCHAIN_REWARD_MISMATCH: 177, + tecXCHAIN_SELF_COMMIT: 184, + tecXCHAIN_SENDING_ACCOUNT_MISMATCH: 179, + tecXCHAIN_WRONG_CHAIN: 176, + tefALREADY: -198, + tefBAD_ADD_AUTH: -197, + tefBAD_AUTH: -196, + tefBAD_AUTH_MASTER: -183, + tefBAD_LEDGER: -195, + tefBAD_QUORUM: -185, + tefBAD_SIGNATURE: -186, + tefCREATED: -194, + tefEXCEPTION: -193, + tefFAILURE: -199, + tefINTERNAL: -192, + tefINVALID_LEDGER_FIX_TYPE: -178, + tefINVARIANT_FAILED: -182, + tefMASTER_DISABLED: -188, + tefMAX_LEDGER: -187, + tefNFTOKEN_IS_NOT_TRANSFERABLE: -179, + tefNOT_MULTI_SIGNING: -184, + tefNO_AUTH_REQUIRED: -191, + tefNO_TICKET: -180, + tefPAST_SEQ: -190, + tefTOO_BIG: -181, + tefWRONG_PRIOR: -189, + telBAD_DOMAIN: -398, + telBAD_PATH_COUNT: -397, + telBAD_PUBLIC_KEY: -396, + telCAN_NOT_QUEUE: -392, + telCAN_NOT_QUEUE_BALANCE: -391, + telCAN_NOT_QUEUE_BLOCKED: -389, + telCAN_NOT_QUEUE_BLOCKS: -390, + telCAN_NOT_QUEUE_FEE: -388, + telCAN_NOT_QUEUE_FULL: -387, + telENV_RPC_FAILED: -383, + telFAILED_PROCESSING: -395, + telINSUF_FEE_P: -394, + telLOCAL_ERROR: -399, + telNETWORK_ID_MAKES_TX_NON_CANONICAL: -384, + telNO_DST_PARTIAL: -393, + telREQUIRES_NETWORK_ID: -385, + telWRONG_NETWORK: -386, + temARRAY_EMPTY: -253, + temARRAY_TOO_LARGE: -252, + temBAD_AMM_TOKENS: -261, + temBAD_AMOUNT: -298, + temBAD_CURRENCY: -297, + temBAD_EXPIRATION: -296, + temBAD_FEE: -295, + temBAD_ISSUER: -294, + temBAD_LIMIT: -293, + temBAD_NFTOKEN_TRANSFER_FEE: -262, + temBAD_OFFER: -292, + temBAD_PATH: -291, + temBAD_PATH_LOOP: -290, + temBAD_QUORUM: -271, + temBAD_REGKEY: -289, + temBAD_SEND_XRP_LIMIT: -288, + temBAD_SEND_XRP_MAX: -287, + temBAD_SEND_XRP_NO_DIRECT: -286, + temBAD_SEND_XRP_PARTIAL: -285, + temBAD_SEND_XRP_PATHS: -284, + temBAD_SEQUENCE: -283, + temBAD_SIGNATURE: -282, + temBAD_SIGNER: -272, + temBAD_SRC_ACCOUNT: -281, + temBAD_TICK_SIZE: -269, + temBAD_TRANSFER_FEE: -251, + temBAD_TRANSFER_RATE: -280, + temBAD_WEIGHT: -270, + temCANNOT_PREAUTH_SELF: -267, + temDISABLED: -273, + temDST_IS_SRC: -279, + temDST_NEEDED: -278, + temEMPTY_DID: -254, + temINVALID: -277, + temINVALID_ACCOUNT_ID: -268, + temINVALID_COUNT: -266, + temINVALID_FLAG: -276, + temINVALID_INNER_BATCH: -250, + temMALFORMED: -299, + temREDUNDANT: -275, + temRIPPLE_EMPTY: -274, + temSEQ_AND_TICKET: -263, + temUNCERTAIN: -265, + temUNKNOWN: -264, + temXCHAIN_BAD_PROOF: -259, + temXCHAIN_BRIDGE_BAD_ISSUES: -258, + temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT: -256, + temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT: -255, + temXCHAIN_BRIDGE_NONDOOR_OWNER: -257, + temXCHAIN_EQUAL_DOOR_ACCOUNTS: -260, + terADDRESS_COLLISION: -86, + terFUNDS_SPENT: -98, + terINSUF_FEE_B: -97, + terLAST: -91, + terNO_ACCOUNT: -96, + terNO_AMM: -87, + terNO_AUTH: -95, + terNO_DELEGATE_PERMISSION: -85, + terNO_LINE: -94, + terNO_RIPPLE: -90, + terOWNERS: -93, + terPRE_SEQ: -92, + terPRE_TICKET: -88, + terQUEUED: -89, + terRETRY: -99, + tesSUCCESS: 0 + }, + TRANSACTION_TYPES: { + AMMBid: 39, + AMMClawback: 31, + AMMCreate: 35, + AMMDelete: 40, + AMMDeposit: 36, + AMMVote: 38, + AMMWithdraw: 37, + AccountDelete: 21, + AccountSet: 3, + Batch: 71, + CheckCancel: 18, + CheckCash: 17, + CheckCreate: 16, + Clawback: 30, + CredentialAccept: 59, + CredentialCreate: 58, + CredentialDelete: 60, + DIDDelete: 50, + DIDSet: 49, + DelegateSet: 64, + DepositPreauth: 19, + EnableAmendment: 100, + EscrowCancel: 4, + EscrowCreate: 1, + EscrowFinish: 2, + Invalid: -1, + LedgerStateFix: 53, + LoanBrokerCoverClawback: 78, + LoanBrokerCoverDeposit: 76, + LoanBrokerCoverWithdraw: 77, + LoanBrokerDelete: 75, + LoanBrokerSet: 74, + LoanDelete: 81, + LoanManage: 82, + LoanPay: 84, + LoanSet: 80, + MPTokenAuthorize: 57, + MPTokenIssuanceCreate: 54, + MPTokenIssuanceDestroy: 55, + MPTokenIssuanceSet: 56, + NFTokenAcceptOffer: 29, + NFTokenBurn: 26, + NFTokenCancelOffer: 28, + NFTokenCreateOffer: 27, + NFTokenMint: 25, + NFTokenModify: 61, + OfferCancel: 8, + OfferCreate: 7, + OracleDelete: 52, + OracleSet: 51, + Payment: 0, + PaymentChannelClaim: 15, + PaymentChannelCreate: 13, + PaymentChannelFund: 14, + PermissionedDomainDelete: 63, + PermissionedDomainSet: 62, + SetFee: 101, + SetRegularKey: 5, + SignerListSet: 12, + TicketCreate: 10, + TrustSet: 20, + UNLModify: 102, + VaultClawback: 70, + VaultCreate: 65, + VaultDelete: 67, + VaultDeposit: 68, + VaultSet: 66, + VaultWithdraw: 69, + XChainAccountCreateCommit: 44, + XChainAddAccountCreateAttestation: 46, + XChainAddClaimAttestation: 45, + XChainClaim: 43, + XChainCommit: 42, + XChainCreateBridge: 48, + XChainCreateClaimID: 41, + XChainModifyBridge: 47 + }, + TYPES: { + AccountID: 8, + Amount: 6, + Blob: 7, + Currency: 26, + Done: -1, + Hash128: 4, + Hash160: 17, + Hash192: 21, + Hash256: 5, + Int32: 10, + Int64: 11, + Issue: 24, + LedgerEntry: 10002, + Metadata: 10004, + NotPresent: 0, + Number: 9, + PathSet: 18, + STArray: 15, + STObject: 14, + Transaction: 10001, + UInt16: 1, + UInt32: 2, + UInt384: 22, + UInt512: 23, + UInt64: 3, + UInt8: 16, + UInt96: 20, + Unknown: -2, + Validation: 10003, + Vector256: 19, + XChainBridge: 25 + } + }; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/bytes.js +var require_bytes = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/bytes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.BytesLookup = exports2.Bytes = void 0; + var Bytes = class { + constructor(name, ordinal, ordinalWidth) { + this.name = name; + this.ordinal = ordinal; + this.ordinalWidth = ordinalWidth; + this.bytes = new Uint8Array(ordinalWidth); + for (let i = 0; i < ordinalWidth; i++) { + this.bytes[ordinalWidth - i - 1] = ordinal >>> i * 8 & 255; + } + } + toJSON() { + return this.name; + } + toBytesSink(sink) { + sink.put(this.bytes); + } + toBytes() { + return this.bytes; + } + }; + exports2.Bytes = Bytes; + var BytesLookup = class { + constructor(types, ordinalWidth) { + this.ordinalWidth = ordinalWidth; + Object.entries(types).forEach(([k, v]) => { + this.add(k, v); + }); + } + /** + * Add a new name value pair to the BytesLookup. + * + * @param name - A human readable name for the field. + * @param value - The numeric value for the field. + * @throws if the name or value already exist in the lookup because it's unclear how to decode. + */ + add(name, value) { + if (this[name]) { + throw new SyntaxError(`Attempted to add a value with a duplicate name "${name}". This is not allowed because it is unclear how to decode.`); + } + if (this[value.toString()]) { + throw new SyntaxError(`Attempted to add a duplicate value under a different name (Given name: "${name}" and previous name: "${this[value.toString()]}. This is not allowed because it is unclear how to decode. +Given value: ${value.toString()}`); + } + this[name] = new Bytes(name, value, this.ordinalWidth); + this[value.toString()] = this[name]; + } + from(value) { + return value instanceof Bytes ? value : this[value]; + } + fromParser(parser) { + return this.from(parser.readUIntN(this.ordinalWidth).toString()); + } + }; + exports2.BytesLookup = BytesLookup; + } +}); + +// node_modules/ripple-binary-codec/dist/serdes/binary-serializer.js +var require_binary_serializer = __commonJS({ + "node_modules/ripple-binary-codec/dist/serdes/binary-serializer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.BinarySerializer = exports2.BytesList = void 0; + var utils_1 = require_utils10(); + var BytesList = class { + constructor() { + this.bytesArray = []; + } + /** + * Get the total number of bytes in the BytesList + * + * @return the number of bytes + */ + getLength() { + return (0, utils_1.concat)(this.bytesArray).byteLength; + } + /** + * Put bytes in the BytesList + * + * @param bytesArg A Uint8Array + * @return this BytesList + */ + put(bytesArg) { + const bytes = Uint8Array.from(bytesArg); + this.bytesArray.push(bytes); + return this; + } + /** + * Write this BytesList to the back of another bytes list + * + * @param list The BytesList to write to + */ + toBytesSink(list) { + list.put(this.toBytes()); + } + toBytes() { + return (0, utils_1.concat)(this.bytesArray); + } + toHex() { + return (0, utils_1.bytesToHex)(this.toBytes()); + } + }; + exports2.BytesList = BytesList; + var BinarySerializer = class { + constructor(sink) { + this.sink = new BytesList(); + this.sink = sink; + } + /** + * Write a value to this BinarySerializer + * + * @param value a SerializedType value + */ + write(value) { + value.toBytesSink(this.sink); + } + /** + * Write bytes to this BinarySerializer + * + * @param bytes the bytes to write + */ + put(bytes) { + this.sink.put(bytes); + } + /** + * Write a value of a given type to this BinarySerializer + * + * @param type the type to write + * @param value a value of that type + */ + writeType(type, value) { + this.write(type.from(value)); + } + /** + * Write BytesList to this BinarySerializer + * + * @param bl BytesList to write to BinarySerializer + */ + writeBytesList(bl) { + bl.toBytesSink(this.sink); + } + /** + * Calculate the header of Variable Length encoded bytes + * + * @param length the length of the bytes + */ + encodeVariableLength(length) { + const lenBytes = new Uint8Array(3); + if (length <= 192) { + lenBytes[0] = length; + return lenBytes.slice(0, 1); + } else if (length <= 12480) { + length -= 193; + lenBytes[0] = 193 + (length >>> 8); + lenBytes[1] = length & 255; + return lenBytes.slice(0, 2); + } else if (length <= 918744) { + length -= 12481; + lenBytes[0] = 241 + (length >>> 16); + lenBytes[1] = length >> 8 & 255; + lenBytes[2] = length & 255; + return lenBytes.slice(0, 3); + } + throw new Error("Overflow error"); + } + /** + * Write field and value to BinarySerializer + * + * @param field field to write to BinarySerializer + * @param value value to write to BinarySerializer + */ + writeFieldAndValue(field, value, isUnlModifyWorkaround = false) { + const associatedValue = field.associatedType.from(value); + if (associatedValue.toBytesSink === void 0 || field.name === void 0) { + throw new Error(); + } + this.sink.put(field.header); + if (field.isVariableLengthEncoded) { + this.writeLengthEncoded(associatedValue, isUnlModifyWorkaround); + } else { + associatedValue.toBytesSink(this.sink); + } + } + /** + * Write a variable length encoded value to the BinarySerializer + * + * @param value length encoded value to write to BytesList + */ + writeLengthEncoded(value, isUnlModifyWorkaround = false) { + const bytes = new BytesList(); + if (!isUnlModifyWorkaround) { + value.toBytesSink(bytes); + } + this.put(this.encodeVariableLength(bytes.getLength())); + this.writeBytesList(bytes); + } + }; + exports2.BinarySerializer = BinarySerializer; + } +}); + +// node_modules/ripple-binary-codec/dist/types/serialized-type.js +var require_serialized_type = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/serialized-type.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Comparable = exports2.SerializedType = void 0; + var binary_serializer_1 = require_binary_serializer(); + var utils_1 = require_utils10(); + var SerializedType = class { + constructor(bytes) { + this.bytes = new Uint8Array(0); + this.bytes = bytes !== null && bytes !== void 0 ? bytes : new Uint8Array(0); + } + static fromParser(parser, hint) { + throw new Error("fromParser not implemented"); + return this.fromParser(parser, hint); + } + static from(value) { + throw new Error("from not implemented"); + return this.from(value); + } + /** + * Write the bytes representation of a SerializedType to a BytesList + * + * @param list The BytesList to write SerializedType bytes to + */ + toBytesSink(list) { + list.put(this.bytes); + } + /** + * Get the hex representation of a SerializedType's bytes + * + * @returns hex String of this.bytes + */ + toHex() { + return (0, utils_1.bytesToHex)(this.toBytes()); + } + /** + * Get the bytes representation of a SerializedType + * + * @returns A Uint8Array of the bytes + */ + toBytes() { + if (this.bytes) { + return this.bytes; + } + const bytes = new binary_serializer_1.BytesList(); + this.toBytesSink(bytes); + return bytes.toBytes(); + } + /** + * Return the JSON representation of a SerializedType + * + * @param _definitions rippled definitions used to parse the values of transaction types and such. + * Unused in default, but used in STObject, STArray + * Can be customized for sidechains and amendments. + * @returns any type, if not overloaded returns hexString representation of bytes + */ + toJSON(_definitions, _fieldName) { + return this.toHex(); + } + /** + * @returns hexString representation of this.bytes + */ + toString() { + return this.toHex(); + } + }; + exports2.SerializedType = SerializedType; + var Comparable = class extends SerializedType { + lt(other) { + return this.compareTo(other) < 0; + } + eq(other) { + return this.compareTo(other) === 0; + } + gt(other) { + return this.compareTo(other) > 0; + } + gte(other) { + return this.compareTo(other) > -1; + } + lte(other) { + return this.compareTo(other) < 1; + } + /** + * Overload this method to define how two Comparable SerializedTypes are compared + * + * @param other The comparable object to compare this to + * @returns A number denoting the relationship of this and other + */ + compareTo(other) { + throw new Error(`cannot compare ${this.toString()} and ${other.toString()}`); + } + }; + exports2.Comparable = Comparable; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/constants.js +var require_constants13 = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DELEGATABLE_PERMISSIONS_WIDTH = exports2.TRANSACTION_RESULT_WIDTH = exports2.TRANSACTION_TYPE_WIDTH = exports2.LEDGER_ENTRY_WIDTH = exports2.TYPE_WIDTH = void 0; + exports2.TYPE_WIDTH = 2; + exports2.LEDGER_ENTRY_WIDTH = 2; + exports2.TRANSACTION_TYPE_WIDTH = 2; + exports2.TRANSACTION_RESULT_WIDTH = 1; + exports2.DELEGATABLE_PERMISSIONS_WIDTH = 4; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/field.js +var require_field2 = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/field.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.FieldLookup = void 0; + var bytes_1 = require_bytes(); + var serialized_type_1 = require_serialized_type(); + var constants_1 = require_constants13(); + function fieldHeader(type, nth) { + const header = []; + if (type < 16) { + if (nth < 16) { + header.push(type << 4 | nth); + } else { + header.push(type << 4, nth); + } + } else if (nth < 16) { + header.push(nth, type); + } else { + header.push(0, type, nth); + } + return Uint8Array.from(header); + } + function buildField([name, info], typeOrdinal) { + const field = fieldHeader(typeOrdinal, info.nth); + return { + name, + nth: info.nth, + isVariableLengthEncoded: info.isVLEncoded, + isSerialized: info.isSerialized, + isSigningField: info.isSigningField, + ordinal: typeOrdinal << 16 | info.nth, + type: new bytes_1.Bytes(info.type, typeOrdinal, constants_1.TYPE_WIDTH), + header: field, + associatedType: serialized_type_1.SerializedType + // For later assignment in ./types/index.js or Definitions.updateAll(...) + }; + } + var FieldLookup = class { + constructor(fields, types) { + fields.forEach(([name, field_info]) => { + const typeOrdinal = types[field_info.type]; + this[name] = buildField([name, field_info], typeOrdinal); + this[this[name].ordinal.toString()] = this[name]; + }); + } + fromString(value) { + return this[value]; + } + }; + exports2.FieldLookup = FieldLookup; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/xrpl-definitions-base.js +var require_xrpl_definitions_base = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/xrpl-definitions-base.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.BytesLookup = exports2.Bytes = exports2.FieldLookup = exports2.XrplDefinitionsBase = void 0; + var bytes_1 = require_bytes(); + Object.defineProperty(exports2, "Bytes", { enumerable: true, get: function() { + return bytes_1.Bytes; + } }); + Object.defineProperty(exports2, "BytesLookup", { enumerable: true, get: function() { + return bytes_1.BytesLookup; + } }); + var field_1 = require_field2(); + Object.defineProperty(exports2, "FieldLookup", { enumerable: true, get: function() { + return field_1.FieldLookup; + } }); + var constants_1 = require_constants13(); + var XrplDefinitionsBase = class { + /** + * Present rippled types in a typed and updatable format. + * For an example of the input format see `definitions.json`. + * To generate a new definitions file from rippled source code, use the tool at + * `packages/ripple-binary-codec/tools/generateDefinitions.js`. + * + * See the definitions.test.js file for examples of how to create your own updated definitions.json. + * + * @param enums - A json encoding of the core types, transaction types, transaction results, transaction names, and fields. + * @param types - A list of type objects with the same name as the fields defined. + * You can use the coreTypes object if you are not adding new types. + */ + constructor(enums, types) { + this.type = new bytes_1.BytesLookup(enums.TYPES, constants_1.TYPE_WIDTH); + this.ledgerEntryType = new bytes_1.BytesLookup(enums.LEDGER_ENTRY_TYPES, constants_1.LEDGER_ENTRY_WIDTH); + this.transactionType = new bytes_1.BytesLookup(enums.TRANSACTION_TYPES, constants_1.TRANSACTION_TYPE_WIDTH); + this.transactionResult = new bytes_1.BytesLookup(enums.TRANSACTION_RESULTS, constants_1.TRANSACTION_RESULT_WIDTH); + this.field = new field_1.FieldLookup(enums.FIELDS, enums.TYPES); + this.transactionNames = Object.entries(enums.TRANSACTION_TYPES).filter(([_key, value]) => value >= 0).map(([key, _value]) => key); + this.dataTypes = {}; + this.associateTypes(types); + this.granularPermissions = { + TrustlineAuthorize: 65537, + TrustlineFreeze: 65538, + TrustlineUnfreeze: 65539, + AccountDomainSet: 65540, + AccountEmailHashSet: 65541, + AccountMessageKeySet: 65542, + AccountTransferRateSet: 65543, + AccountTickSizeSet: 65544, + PaymentMint: 65545, + PaymentBurn: 65546, + MPTokenIssuanceLock: 65547, + MPTokenIssuanceUnlock: 65548 + }; + const incrementedTransactionTypes = Object.fromEntries(Object.entries(enums.TRANSACTION_TYPES).map(([key, value]) => [ + key, + value + 1 + ])); + const combinedPermissions = Object.assign(Object.assign({}, this.granularPermissions), incrementedTransactionTypes); + this.delegatablePermissions = new bytes_1.BytesLookup(combinedPermissions, constants_1.DELEGATABLE_PERMISSIONS_WIDTH); + } + /** + * Associates each Field to a corresponding class that TypeScript can recognize. + * + * @param types a list of type objects with the same name as the fields defined. + * Defaults to xrpl.js's core type definitions. + */ + associateTypes(types) { + this.dataTypes = Object.assign({}, this.dataTypes, types); + Object.values(this.field).forEach((field) => { + field.associatedType = this.dataTypes[field.type.name]; + }); + this.field["TransactionType"].associatedType = this.transactionType; + this.field["TransactionResult"].associatedType = this.transactionResult; + this.field["LedgerEntryType"].associatedType = this.ledgerEntryType; + if (this.field["PermissionValue"]) { + this.field["PermissionValue"].associatedType = this.delegatablePermissions; + } + } + getAssociatedTypes() { + return this.dataTypes; + } + }; + exports2.XrplDefinitionsBase = XrplDefinitionsBase; + } +}); + +// node_modules/ripple-binary-codec/dist/enums/index.js +var require_enums = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.TRANSACTION_TYPES = exports2.TransactionType = exports2.TransactionResult = exports2.LedgerEntryType = exports2.Type = exports2.Field = exports2.DEFAULT_DEFINITIONS = exports2.XrplDefinitionsBase = exports2.Bytes = void 0; + var definitions_json_1 = __importDefault2(require_definitions()); + var xrpl_definitions_base_1 = require_xrpl_definitions_base(); + Object.defineProperty(exports2, "XrplDefinitionsBase", { enumerable: true, get: function() { + return xrpl_definitions_base_1.XrplDefinitionsBase; + } }); + Object.defineProperty(exports2, "Bytes", { enumerable: true, get: function() { + return xrpl_definitions_base_1.Bytes; + } }); + var DEFAULT_DEFINITIONS = new xrpl_definitions_base_1.XrplDefinitionsBase(definitions_json_1.default, {}); + exports2.DEFAULT_DEFINITIONS = DEFAULT_DEFINITIONS; + var Type = DEFAULT_DEFINITIONS.type; + exports2.Type = Type; + var LedgerEntryType = DEFAULT_DEFINITIONS.ledgerEntryType; + exports2.LedgerEntryType = LedgerEntryType; + var TransactionType = DEFAULT_DEFINITIONS.transactionType; + exports2.TransactionType = TransactionType; + var TransactionResult = DEFAULT_DEFINITIONS.transactionResult; + exports2.TransactionResult = TransactionResult; + var Field2 = DEFAULT_DEFINITIONS.field; + exports2.Field = Field2; + var TRANSACTION_TYPES = DEFAULT_DEFINITIONS.transactionNames; + exports2.TRANSACTION_TYPES = TRANSACTION_TYPES; + } +}); + +// node_modules/ripple-binary-codec/dist/utils.js +var require_utils12 = __commonJS({ + "node_modules/ripple-binary-codec/dist/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.compare = exports2.equal = exports2.readInt64BE = exports2.readInt32BE = exports2.readUInt32BE = exports2.readUInt16BE = exports2.writeInt64BE = exports2.writeInt32BE = exports2.writeUInt32BE = exports2.writeUInt16BE = exports2.writeUInt8 = void 0; + function writeUInt82(array, value, offset) { + value = Number(value); + array[offset] = value; + } + exports2.writeUInt8 = writeUInt82; + function writeUInt16BE(array, value, offset) { + value = Number(value); + array[offset] = value >>> 8; + array[offset + 1] = value; + } + exports2.writeUInt16BE = writeUInt16BE; + function writeUInt32BE(array, value, offset) { + array[offset] = value >>> 24 & 255; + array[offset + 1] = value >>> 16 & 255; + array[offset + 2] = value >>> 8 & 255; + array[offset + 3] = value & 255; + } + exports2.writeUInt32BE = writeUInt32BE; + function writeInt32BE(array, value, offset) { + new DataView(array.buffer, array.byteOffset, array.byteLength).setInt32(offset, value, false); + } + exports2.writeInt32BE = writeInt32BE; + function writeInt64BE(array, value, offset) { + new DataView(array.buffer, array.byteOffset, array.byteLength).setBigInt64(offset, value, false); + } + exports2.writeInt64BE = writeInt64BE; + function readUInt16BE(array, offset) { + return new DataView(array.buffer).getUint16(offset, false).toString(10); + } + exports2.readUInt16BE = readUInt16BE; + function readUInt32BE(array, offset) { + return new DataView(array.buffer).getUint32(offset, false).toString(10); + } + exports2.readUInt32BE = readUInt32BE; + function readInt32BE(array, offset) { + return new DataView(array.buffer, array.byteOffset, array.byteLength).getInt32(offset, false); + } + exports2.readInt32BE = readInt32BE; + function readInt64BE(array, offset) { + return new DataView(array.buffer, array.byteOffset, array.byteLength).getBigInt64(offset, false); + } + exports2.readInt64BE = readInt64BE; + function equal(a, b) { + const aUInt = a instanceof ArrayBuffer ? new Uint8Array(a, 0) : a; + const bUInt = b instanceof ArrayBuffer ? new Uint8Array(b, 0) : b; + if (aUInt.byteLength != bUInt.byteLength) + return false; + if (aligned32(aUInt) && aligned32(bUInt)) + return compare32(aUInt, bUInt) === 0; + if (aligned16(aUInt) && aligned16(bUInt)) + return compare16(aUInt, bUInt) === 0; + return compare8(aUInt, bUInt) === 0; + } + exports2.equal = equal; + function compare8(a, b) { + const ua = new Uint8Array(a.buffer, a.byteOffset, a.byteLength); + const ub = new Uint8Array(b.buffer, b.byteOffset, b.byteLength); + return compare2(ua, ub); + } + function compare16(a, b) { + const ua = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2); + const ub = new Uint16Array(b.buffer, b.byteOffset, b.byteLength / 2); + return compare2(ua, ub); + } + function compare32(a, b) { + const ua = new Uint32Array(a.buffer, a.byteOffset, a.byteLength / 4); + const ub = new Uint32Array(b.buffer, b.byteOffset, b.byteLength / 4); + return compare2(ua, ub); + } + function compare2(a, b) { + if (a.byteLength !== b.byteLength) { + throw new Error("Cannot compare arrays of different length"); + } + for (let i = 0; i < a.length - 1; i += 1) { + if (a[i] > b[i]) + return 1; + if (a[i] < b[i]) + return -1; + } + return 0; + } + exports2.compare = compare2; + function aligned16(array) { + return array.byteOffset % 2 === 0 && array.byteLength % 2 === 0; + } + function aligned32(array) { + return array.byteOffset % 4 === 0 && array.byteLength % 4 === 0; + } + } +}); + +// node_modules/ripple-binary-codec/dist/types/hash.js +var require_hash3 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/hash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Hash = void 0; + var serialized_type_1 = require_serialized_type(); + var utils_1 = require_utils10(); + var utils_2 = require_utils12(); + var Hash3 = class extends serialized_type_1.Comparable { + constructor(bytes) { + super(bytes); + if (this.bytes.length !== this.constructor.width) { + throw new Error(`Invalid Hash length ${this.bytes.byteLength}`); + } + } + /** + * Construct a Hash object from an existing Hash object or a hex-string + * + * @param value A hash object or hex-string of a hash + */ + static from(value) { + if (value instanceof this) { + return value; + } + if (typeof value === "string") { + if (!utils_1.HEX_REGEX.test(value)) { + throw new Error(`Invalid hash string ${value}`); + } + return new this((0, utils_1.hexToBytes)(value)); + } + throw new Error("Cannot construct Hash from given value"); + } + /** + * Read a Hash object from a BinaryParser + * + * @param parser BinaryParser to read the hash from + * @param hint length of the bytes to read, optional + */ + static fromParser(parser, hint) { + return new this(parser.read(hint !== null && hint !== void 0 ? hint : this.width)); + } + /** + * Overloaded operator for comparing two hash objects + * + * @param other The Hash to compare this to + */ + compareTo(other) { + return (0, utils_2.compare)(this.bytes, this.constructor.from(other).bytes); + } + /** + * @returns the hex-string representation of this Hash + */ + toString() { + return this.toHex(); + } + /** + * Returns four bits at the specified depth within a hash + * + * @param depth The depth of the four bits + * @returns The number represented by the four bits + */ + nibblet(depth) { + const byteIx = depth > 0 ? depth / 2 | 0 : 0; + let b = this.bytes[byteIx]; + if (depth % 2 === 0) { + b = (b & 240) >>> 4; + } else { + b = b & 15; + } + return b; + } + }; + exports2.Hash = Hash3; + } +}); + +// node_modules/ripple-binary-codec/dist/types/hash-160.js +var require_hash_160 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/hash-160.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Hash160 = void 0; + var hash_1 = require_hash3(); + var Hash160 = class _Hash160 extends hash_1.Hash { + constructor(bytes) { + if (bytes && bytes.byteLength === 0) { + bytes = _Hash160.ZERO_160.bytes; + } + super(bytes !== null && bytes !== void 0 ? bytes : _Hash160.ZERO_160.bytes); + } + }; + exports2.Hash160 = Hash160; + Hash160.width = 20; + Hash160.ZERO_160 = new Hash160(new Uint8Array(Hash160.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/account-id.js +var require_account_id = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/account-id.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AccountID = void 0; + var ripple_address_codec_1 = require_dist4(); + var hash_160_1 = require_hash_160(); + var utils_1 = require_utils10(); + var HEX_REGEX = /^[A-F0-9]{40}$/; + var AccountID = class _AccountID extends hash_160_1.Hash160 { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _AccountID.defaultAccountID.bytes); + } + /** + * Defines how to construct an AccountID + * + * @param value either an existing AccountID, a hex-string, or a base58 r-Address + * @returns an AccountID object + */ + static from(value) { + if (value instanceof _AccountID) { + return value; + } + if (typeof value === "string") { + if (value === "") { + return new _AccountID(); + } + return HEX_REGEX.test(value) ? new _AccountID((0, utils_1.hexToBytes)(value)) : this.fromBase58(value); + } + throw new Error("Cannot construct AccountID from value given"); + } + /** + * Defines how to build an AccountID from a base58 r-Address + * + * @param value a base58 r-Address + * @returns an AccountID object + */ + static fromBase58(value) { + if ((0, ripple_address_codec_1.isValidXAddress)(value)) { + const classic = (0, ripple_address_codec_1.xAddressToClassicAddress)(value); + if (classic.tag !== false) + throw new Error("Only allowed to have tag on Account or Destination"); + value = classic.classicAddress; + } + return new _AccountID(Uint8Array.from((0, ripple_address_codec_1.decodeAccountID)(value))); + } + /** + * Overload of toJSON + * + * @returns the base58 string for this AccountID + */ + toJSON() { + return this.toBase58(); + } + /** + * Defines how to encode AccountID into a base58 address + * + * @returns the base58 string defined by this.bytes + */ + toBase58() { + return (0, ripple_address_codec_1.encodeAccountID)(this.bytes); + } + }; + exports2.AccountID = AccountID; + AccountID.defaultAccountID = new AccountID(new Uint8Array(20)); + } +}); + +// node_modules/ripple-binary-codec/dist/serdes/binary-parser.js +var require_binary_parser = __commonJS({ + "node_modules/ripple-binary-codec/dist/serdes/binary-parser.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.BinaryParser = void 0; + var enums_1 = require_enums(); + var utils_1 = require_utils10(); + var BinaryParser = class { + /** + * Initialize bytes to a hex string + * + * @param hexBytes a hex string + * @param definitions Rippled definitions used to parse the values of transaction types and such. + * Can be customized for sidechains and amendments. + */ + constructor(hexBytes, definitions = enums_1.DEFAULT_DEFINITIONS) { + this.bytes = (0, utils_1.hexToBytes)(hexBytes); + this.definitions = definitions; + } + /** + * Peek the first byte of the BinaryParser + * + * @returns The first byte of the BinaryParser + */ + peek() { + if (this.bytes.byteLength === 0) { + throw new Error(); + } + return this.bytes[0]; + } + /** + * Consume the first n bytes of the BinaryParser + * + * @param n the number of bytes to skip + */ + skip(n) { + if (n > this.bytes.byteLength) { + throw new Error(); + } + this.bytes = this.bytes.slice(n); + } + /** + * read the first n bytes from the BinaryParser + * + * @param n The number of bytes to read + * @return The bytes + */ + read(n) { + if (n > this.bytes.byteLength) { + throw new Error(); + } + const slice = this.bytes.slice(0, n); + this.skip(n); + return slice; + } + /** + * Read an integer of given size + * + * @param n The number of bytes to read + * @return The number represented by those bytes + */ + readUIntN(n) { + if (0 >= n || n > 4) { + throw new Error("invalid n"); + } + return this.read(n).reduce((a, b) => a << 8 | b) >>> 0; + } + readUInt8() { + return this.readUIntN(1); + } + readUInt16() { + return this.readUIntN(2); + } + readUInt32() { + return this.readUIntN(4); + } + size() { + return this.bytes.byteLength; + } + end(customEnd) { + const length = this.bytes.byteLength; + return length === 0 || customEnd !== void 0 && length <= customEnd; + } + /** + * Reads variable length encoded bytes + * + * @return The variable length bytes + */ + readVariableLength() { + return this.read(this.readVariableLengthLength()); + } + /** + * Reads the length of the variable length encoded bytes + * + * @return The length of the variable length encoded bytes + */ + readVariableLengthLength() { + const b1 = this.readUInt8(); + if (b1 <= 192) { + return b1; + } else if (b1 <= 240) { + const b2 = this.readUInt8(); + return 193 + (b1 - 193) * 256 + b2; + } else if (b1 <= 254) { + const b2 = this.readUInt8(); + const b3 = this.readUInt8(); + return 12481 + (b1 - 241) * 65536 + b2 * 256 + b3; + } + throw new Error("Invalid variable length indicator"); + } + /** + * Reads the field ordinal from the BinaryParser + * + * @return Field ordinal + */ + readFieldOrdinal() { + let type = this.readUInt8(); + let nth = type & 15; + type >>= 4; + if (type === 0) { + type = this.readUInt8(); + if (type === 0 || type < 16) { + throw new Error(`Cannot read FieldOrdinal, type_code ${type} out of range`); + } + } + if (nth === 0) { + nth = this.readUInt8(); + if (nth === 0 || nth < 16) { + throw new Error(`Cannot read FieldOrdinal, field_code ${nth} out of range`); + } + } + return type << 16 | nth; + } + /** + * Read the field from the BinaryParser + * + * @return The field represented by the bytes at the head of the BinaryParser + */ + readField() { + return this.definitions.field.fromString(this.readFieldOrdinal().toString()); + } + /** + * Read a given type from the BinaryParser + * + * @param type The type that you want to read from the BinaryParser + * @return The instance of that type read from the BinaryParser + */ + readType(type) { + return type.fromParser(this); + } + /** + * Get the type associated with a given field + * + * @param field The field that you wan to get the type of + * @return The type associated with the given field + */ + typeForField(field) { + return field.associatedType; + } + /** + * Read value of the type specified by field from the BinaryParser + * + * @param field The field that you want to get the associated value for + * @return The value associated with the given field + */ + readFieldValue(field) { + const type = this.typeForField(field); + if (!type) { + throw new Error(`unsupported: (${field.name}, ${field.type.name})`); + } + const sizeHint = field.isVariableLengthEncoded ? this.readVariableLengthLength() : void 0; + const value = type.fromParser(this, sizeHint); + if (value === void 0) { + throw new Error(`fromParser for (${field.name}, ${field.type.name}) -> undefined `); + } + return value; + } + /** + * Get the next field and value from the BinaryParser + * + * @return The field and value + */ + readFieldAndValue() { + const field = this.readField(); + return [field, this.readFieldValue(field)]; + } + }; + exports2.BinaryParser = BinaryParser; + } +}); + +// node_modules/ripple-binary-codec/dist/types/currency.js +var require_currency = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/currency.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Currency = void 0; + var hash_160_1 = require_hash_160(); + var utils_1 = require_utils10(); + var XRP_HEX_REGEX = /^0{40}$/; + var ISO_REGEX = /^[A-Z0-9a-z?!@#$%^&*(){}[\]|]{3}$/; + var HEX_REGEX = /^[A-F0-9]{40}$/; + var STANDARD_FORMAT_HEX_REGEX = /^0{24}[\x00-\x7F]{6}0{10}$/; + function isoToBytes(iso) { + const bytes = new Uint8Array(20); + if (iso !== "XRP") { + const isoBytes = iso.split("").map((c) => c.charCodeAt(0)); + bytes.set(isoBytes, 12); + } + return bytes; + } + function isIsoCode(iso) { + return ISO_REGEX.test(iso); + } + function isoCodeFromHex(code) { + const iso = (0, utils_1.hexToString)((0, utils_1.bytesToHex)(code)); + if (iso === "XRP") { + return null; + } + if (isIsoCode(iso)) { + return iso; + } + return null; + } + function isHex2(hex) { + return HEX_REGEX.test(hex); + } + function isStringRepresentation(input) { + return input.length === 3 || isHex2(input); + } + function isBytesArray(bytes) { + return bytes.byteLength === 20; + } + function isValidRepresentation(input) { + return input instanceof Uint8Array ? isBytesArray(input) : isStringRepresentation(input); + } + function bytesFromRepresentation(input) { + if (!isValidRepresentation(input)) { + throw new Error(`Unsupported Currency representation: ${input}`); + } + return input.length === 3 ? isoToBytes(input) : (0, utils_1.hexToBytes)(input); + } + var Currency = class _Currency extends hash_160_1.Hash160 { + constructor(byteBuf) { + super(byteBuf !== null && byteBuf !== void 0 ? byteBuf : _Currency.XRP.bytes); + const hex = (0, utils_1.bytesToHex)(this.bytes); + if (XRP_HEX_REGEX.test(hex)) { + this._iso = "XRP"; + } else if (STANDARD_FORMAT_HEX_REGEX.test(hex)) { + this._iso = isoCodeFromHex(this.bytes.slice(12, 15)); + } else { + this._iso = null; + } + } + /** + * Return the ISO code of this currency + * + * @returns ISO code if it exists, else null + */ + iso() { + return this._iso; + } + /** + * Constructs a Currency object + * + * @param val Currency object or a string representation of a currency + */ + static from(value) { + if (value instanceof _Currency) { + return value; + } + if (typeof value === "string") { + return new _Currency(bytesFromRepresentation(value)); + } + throw new Error("Cannot construct Currency from value given"); + } + /** + * Gets the JSON representation of a currency + * + * @returns JSON representation + */ + toJSON() { + const iso = this.iso(); + if (iso !== null) { + return iso; + } + return (0, utils_1.bytesToHex)(this.bytes); + } + }; + exports2.Currency = Currency; + Currency.XRP = new Currency(new Uint8Array(20)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/hash-192.js +var require_hash_192 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/hash-192.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Hash192 = void 0; + var hash_1 = require_hash3(); + var Hash192 = class _Hash192 extends hash_1.Hash { + constructor(bytes) { + if (bytes && bytes.byteLength === 0) { + bytes = _Hash192.ZERO_192.bytes; + } + super(bytes !== null && bytes !== void 0 ? bytes : _Hash192.ZERO_192.bytes); + } + }; + exports2.Hash192 = Hash192; + Hash192.width = 24; + Hash192.ZERO_192 = new Hash192(new Uint8Array(Hash192.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/amount.js +var require_amount = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/amount.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Amount = void 0; + var binary_parser_1 = require_binary_parser(); + var account_id_1 = require_account_id(); + var currency_1 = require_currency(); + var serialized_type_1 = require_serialized_type(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var utils_1 = require_utils10(); + var utils_2 = require_utils12(); + var hash_192_1 = require_hash_192(); + var MIN_IOU_EXPONENT = -96; + var MAX_IOU_EXPONENT = 80; + var MAX_IOU_PRECISION = 16; + var MAX_DROPS = new bignumber_js_1.default("1e17"); + var MIN_XRP = new bignumber_js_1.default("1e-6"); + var mask = BigInt(4294967295); + var mptMask = BigInt(9223372036854776e3); + bignumber_js_1.default.config({ + EXPONENTIAL_AT: [ + MIN_IOU_EXPONENT - MAX_IOU_PRECISION, + MAX_IOU_EXPONENT + MAX_IOU_PRECISION + ] + }); + function isAmountObjectIOU(arg) { + const keys = Object.keys(arg).sort(); + return keys.length === 3 && keys[0] === "currency" && keys[1] === "issuer" && keys[2] === "value"; + } + function isAmountObjectMPT(arg) { + const keys = Object.keys(arg).sort(); + return keys.length === 2 && keys[0] === "mpt_issuance_id" && keys[1] === "value"; + } + var Amount = class _Amount extends serialized_type_1.SerializedType { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _Amount.defaultAmount.bytes); + } + /** + * Construct an amount from an IOU, MPT or string amount + * + * @param value An Amount, object representing an IOU, or a string + * representing an integer amount + * @returns An Amount object + */ + static from(value) { + if (value instanceof _Amount) { + return value; + } + let amount = new Uint8Array(8); + if (typeof value === "string") { + _Amount.assertXrpIsValid(value); + const number = BigInt(value); + const intBuf = [new Uint8Array(4), new Uint8Array(4)]; + (0, utils_2.writeUInt32BE)(intBuf[0], Number(number >> BigInt(32)), 0); + (0, utils_2.writeUInt32BE)(intBuf[1], Number(number & BigInt(mask)), 0); + amount = (0, utils_1.concat)(intBuf); + amount[0] |= 64; + return new _Amount(amount); + } + if (isAmountObjectIOU(value)) { + const number = new bignumber_js_1.default(value.value); + _Amount.assertIouIsValid(number); + if (number.isZero()) { + amount[0] |= 128; + } else { + const integerNumberString = number.times(`1e${-((number.e || 0) - 15)}`).abs().toString(); + const num = BigInt(integerNumberString); + const intBuf = [new Uint8Array(4), new Uint8Array(4)]; + (0, utils_2.writeUInt32BE)(intBuf[0], Number(num >> BigInt(32)), 0); + (0, utils_2.writeUInt32BE)(intBuf[1], Number(num & BigInt(mask)), 0); + amount = (0, utils_1.concat)(intBuf); + amount[0] |= 128; + if (number.gt(new bignumber_js_1.default(0))) { + amount[0] |= 64; + } + const exponent = (number.e || 0) - 15; + const exponentByte = 97 + exponent; + amount[0] |= exponentByte >>> 2; + amount[1] |= (exponentByte & 3) << 6; + } + const currency = currency_1.Currency.from(value.currency).toBytes(); + const issuer = account_id_1.AccountID.from(value.issuer).toBytes(); + return new _Amount((0, utils_1.concat)([amount, currency, issuer])); + } + if (isAmountObjectMPT(value)) { + _Amount.assertMptIsValid(value.value); + let leadingByte = new Uint8Array(1); + leadingByte[0] |= 96; + const num = BigInt(value.value); + const intBuf = [new Uint8Array(4), new Uint8Array(4)]; + (0, utils_2.writeUInt32BE)(intBuf[0], Number(num >> BigInt(32)), 0); + (0, utils_2.writeUInt32BE)(intBuf[1], Number(num & BigInt(mask)), 0); + amount = (0, utils_1.concat)(intBuf); + const mptIssuanceID = hash_192_1.Hash192.from(value.mpt_issuance_id).toBytes(); + return new _Amount((0, utils_1.concat)([leadingByte, amount, mptIssuanceID])); + } + throw new Error("Invalid type to construct an Amount"); + } + /** + * Read an amount from a BinaryParser + * + * @param parser BinaryParser to read the Amount from + * @returns An Amount object + */ + static fromParser(parser) { + const isIOU = parser.peek() & 128; + if (isIOU) + return new _Amount(parser.read(48)); + const isMPT = parser.peek() & 32; + const numBytes = isMPT ? 33 : 8; + return new _Amount(parser.read(numBytes)); + } + /** + * Get the JSON representation of this Amount + * + * @returns the JSON interpretation of this.bytes + */ + toJSON() { + if (this.isNative()) { + const bytes = this.bytes; + const isPositive = bytes[0] & 64; + const sign = isPositive ? "" : "-"; + bytes[0] &= 63; + const msb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(0, 4), 0)); + const lsb = BigInt((0, utils_2.readUInt32BE)(bytes.slice(4), 0)); + const num = msb << BigInt(32) | lsb; + return `${sign}${num.toString()}`; + } + if (this.isIOU()) { + const parser = new binary_parser_1.BinaryParser(this.toString()); + const mantissa = parser.read(8); + const currency = currency_1.Currency.fromParser(parser); + const issuer = account_id_1.AccountID.fromParser(parser); + const b1 = mantissa[0]; + const b2 = mantissa[1]; + const isPositive = b1 & 64; + const sign = isPositive ? "" : "-"; + const exponent = ((b1 & 63) << 2) + ((b2 & 255) >> 6) - 97; + mantissa[0] = 0; + mantissa[1] &= 63; + const value = new bignumber_js_1.default(`${sign}0x${(0, utils_1.bytesToHex)(mantissa)}`).times(`1e${exponent}`); + _Amount.assertIouIsValid(value); + return { + value: value.toString(), + currency: currency.toJSON(), + issuer: issuer.toJSON() + }; + } + if (this.isMPT()) { + const parser = new binary_parser_1.BinaryParser(this.toString()); + const leadingByte = parser.read(1); + const amount = parser.read(8); + const mptID = hash_192_1.Hash192.fromParser(parser); + const isPositive = leadingByte[0] & 64; + const sign = isPositive ? "" : "-"; + const msb = BigInt((0, utils_2.readUInt32BE)(amount.slice(0, 4), 0)); + const lsb = BigInt((0, utils_2.readUInt32BE)(amount.slice(4), 0)); + const num = msb << BigInt(32) | lsb; + return { + value: `${sign}${num.toString()}`, + mpt_issuance_id: mptID.toString() + }; + } + throw new Error("Invalid amount to construct JSON"); + } + /** + * Validate XRP amount + * + * @param amount String representing XRP amount + * @returns void, but will throw if invalid amount + */ + static assertXrpIsValid(amount) { + if (amount.indexOf(".") !== -1) { + throw new Error(`${amount.toString()} is an illegal amount`); + } + const decimal = new bignumber_js_1.default(amount); + if (!decimal.isZero()) { + if (decimal.lt(MIN_XRP) || decimal.gt(MAX_DROPS)) { + throw new Error(`${amount.toString()} is an illegal amount`); + } + } + } + /** + * Validate IOU.value amount + * + * @param decimal BigNumber object representing IOU.value + * @returns void, but will throw if invalid amount + */ + static assertIouIsValid(decimal) { + if (!decimal.isZero()) { + const p = decimal.precision(); + const e = (decimal.e || 0) - 15; + if (p > MAX_IOU_PRECISION || e > MAX_IOU_EXPONENT || e < MIN_IOU_EXPONENT) { + throw new Error("Decimal precision out of range"); + } + this.verifyNoDecimal(decimal); + } + } + /** + * Validate MPT.value amount + * + * @param decimal BigNumber object representing MPT.value + * @returns void, but will throw if invalid amount + */ + static assertMptIsValid(amount) { + if (amount.indexOf(".") !== -1) { + throw new Error(`${amount.toString()} is an illegal amount`); + } + const decimal = new bignumber_js_1.default(amount); + if (!decimal.isZero()) { + if (decimal < (0, bignumber_js_1.default)(0)) { + throw new Error(`${amount.toString()} is an illegal amount`); + } + if (Number(BigInt(amount) & BigInt(mptMask)) != 0) { + throw new Error(`${amount.toString()} is an illegal amount`); + } + } + } + /** + * Ensure that the value after being multiplied by the exponent does not + * contain a decimal. + * + * @param decimal a Decimal object + * @returns a string of the object without a decimal + */ + static verifyNoDecimal(decimal) { + const integerNumberString = decimal.times(`1e${-((decimal.e || 0) - 15)}`).abs().toString(); + if (integerNumberString.indexOf(".") !== -1) { + throw new Error("Decimal place found in integerNumberString"); + } + } + /** + * Test if this amount is in units of Native Currency(XRP) + * + * @returns true if Native (XRP) + */ + isNative() { + return (this.bytes[0] & 128) === 0 && (this.bytes[0] & 32) === 0; + } + /** + * Test if this amount is in units of MPT + * + * @returns true if MPT + */ + isMPT() { + return (this.bytes[0] & 128) === 0 && (this.bytes[0] & 32) !== 0; + } + /** + * Test if this amount is in units of IOU + * + * @returns true if IOU + */ + isIOU() { + return (this.bytes[0] & 128) !== 0; + } + }; + exports2.Amount = Amount; + Amount.defaultAmount = new Amount((0, utils_1.hexToBytes)("4000000000000000")); + } +}); + +// node_modules/ripple-binary-codec/dist/types/blob.js +var require_blob = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/blob.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Blob = void 0; + var serialized_type_1 = require_serialized_type(); + var utils_1 = require_utils10(); + var Blob2 = class _Blob extends serialized_type_1.SerializedType { + constructor(bytes) { + super(bytes); + } + /** + * Defines how to read a Blob from a BinaryParser + * + * @param parser The binary parser to read the Blob from + * @param hint The length of the blob, computed by readVariableLengthLength() and passed in + * @returns A Blob object + */ + static fromParser(parser, hint) { + return new _Blob(parser.read(hint)); + } + /** + * Create a Blob object from a hex-string + * + * @param value existing Blob object or a hex-string + * @returns A Blob object + */ + static from(value) { + if (value instanceof _Blob) { + return value; + } + if (typeof value === "string") { + if (!/^[A-F0-9]*$/iu.test(value)) { + throw new Error("Cannot construct Blob from a non-hex string"); + } + return new _Blob((0, utils_1.hexToBytes)(value)); + } + throw new Error("Cannot construct Blob from value given"); + } + }; + exports2.Blob = Blob2; + } +}); + +// node_modules/ripple-binary-codec/dist/types/hash-128.js +var require_hash_128 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/hash-128.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Hash128 = void 0; + var hash_1 = require_hash3(); + var utils_1 = require_utils10(); + var Hash128 = class _Hash128 extends hash_1.Hash { + constructor(bytes) { + if (bytes && bytes.byteLength === 0) { + bytes = _Hash128.ZERO_128.bytes; + } + super(bytes !== null && bytes !== void 0 ? bytes : _Hash128.ZERO_128.bytes); + } + /** + * Get the hex representation of a hash-128 bytes, allowing unset + * + * @returns hex String of this.bytes + */ + toHex() { + const hex = (0, utils_1.bytesToHex)(this.toBytes()); + if (/^0+$/.exec(hex)) { + return ""; + } + return hex; + } + }; + exports2.Hash128 = Hash128; + Hash128.width = 16; + Hash128.ZERO_128 = new Hash128(new Uint8Array(Hash128.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/hash-256.js +var require_hash_256 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/hash-256.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Hash256 = void 0; + var hash_1 = require_hash3(); + var Hash256 = class _Hash256 extends hash_1.Hash { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _Hash256.ZERO_256.bytes); + } + }; + exports2.Hash256 = Hash256; + Hash256.width = 32; + Hash256.ZERO_256 = new Hash256(new Uint8Array(Hash256.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/issue.js +var require_issue = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/issue.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Issue = void 0; + var utils_1 = require_utils10(); + var binary_parser_1 = require_binary_parser(); + var account_id_1 = require_account_id(); + var currency_1 = require_currency(); + var serialized_type_1 = require_serialized_type(); + var hash_192_1 = require_hash_192(); + var utils_2 = require_utils12(); + function isIssueObject(arg) { + const keys = Object.keys(arg).sort(); + const isXRP = keys.length === 1 && keys[0] === "currency"; + const isIOU = keys.length === 2 && keys[0] === "currency" && keys[1] === "issuer"; + const isMPT = keys.length === 1 && keys[0] === "mpt_issuance_id"; + return isXRP || isIOU || isMPT; + } + var MPT_WIDTH = 44; + var NO_ACCOUNT = account_id_1.AccountID.from("0000000000000000000000000000000000000001"); + var Issue = class _Issue extends serialized_type_1.SerializedType { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _Issue.XRP_ISSUE.bytes); + } + /** + * Construct Issue from XRPIssue, IOUIssue or MPTIssue + * + * @param value An object representing an XRPIssue, IOUIssue or MPTIssue + * @returns An Issue object + */ + static from(value) { + if (value instanceof _Issue) { + return value; + } + if (isIssueObject(value)) { + if (value.currency) { + const currency = currency_1.Currency.from(value.currency.toString()).toBytes(); + if (value.issuer) { + const issuer = account_id_1.AccountID.from(value.issuer.toString()).toBytes(); + return new _Issue((0, utils_1.concat)([currency, issuer])); + } + return new _Issue(currency); + } + if (value.mpt_issuance_id) { + const mptIssuanceIdBytes = hash_192_1.Hash192.from(value.mpt_issuance_id.toString()).toBytes(); + const issuerAccount = mptIssuanceIdBytes.slice(4); + const sequence = Number((0, utils_2.readUInt32BE)(mptIssuanceIdBytes.slice(0, 4), 0)); + const sequenceBuffer = new Uint8Array(4); + new DataView(sequenceBuffer.buffer).setUint32(0, sequence, true); + return new _Issue((0, utils_1.concat)([issuerAccount, NO_ACCOUNT.toBytes(), sequenceBuffer])); + } + } + throw new Error("Invalid type to construct an Issue"); + } + /** + * Read Issue from a BinaryParser + * + * @param parser BinaryParser to read the Issue from + * + * @returns An Issue object + */ + static fromParser(parser) { + const currencyOrAccount = parser.read(20); + if (new currency_1.Currency(currencyOrAccount).toJSON() === "XRP") { + return new _Issue(currencyOrAccount); + } + const issuerAccountId = new account_id_1.AccountID(parser.read(20)); + if (NO_ACCOUNT.toHex() === issuerAccountId.toHex()) { + const sequence = parser.read(4); + return new _Issue((0, utils_1.concat)([currencyOrAccount, NO_ACCOUNT.toBytes(), sequence])); + } + return new _Issue((0, utils_1.concat)([currencyOrAccount, issuerAccountId.toBytes()])); + } + /** + * Get the JSON representation of this IssueObject + * + * @returns the JSON interpretation of this.bytes + */ + toJSON() { + if (this.toBytes().length === MPT_WIDTH) { + const issuerAccount = this.toBytes().slice(0, 20); + const sequence = new DataView(this.toBytes().slice(40).buffer).getUint32(0, true); + const sequenceBuffer = new Uint8Array(4); + (0, utils_2.writeUInt32BE)(sequenceBuffer, sequence, 0); + return { + mpt_issuance_id: (0, utils_1.bytesToHex)((0, utils_1.concat)([sequenceBuffer, issuerAccount])) + }; + } + const parser = new binary_parser_1.BinaryParser(this.toString()); + const currency = currency_1.Currency.fromParser(parser); + if (currency.toJSON() === "XRP") { + return { currency: currency.toJSON() }; + } + const issuer = account_id_1.AccountID.fromParser(parser); + return { + currency: currency.toJSON(), + issuer: issuer.toJSON() + }; + } + }; + exports2.Issue = Issue; + Issue.XRP_ISSUE = new Issue(new Uint8Array(20)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/st-number.js +var require_st_number = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/st-number.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.STNumber = void 0; + var serialized_type_1 = require_serialized_type(); + var utils_1 = require_utils12(); + var MIN_MANTISSA = BigInt("1000000000000000"); + var MAX_MANTISSA = BigInt("9999999999999999"); + var MIN_EXPONENT = -32768; + var MAX_EXPONENT = 32768; + var DEFAULT_VALUE_EXPONENT = -2147483648; + function extractNumberPartsFromString(val) { + const regex = /^([-+]?)([0-9]+)(?:\.([0-9]+))?(?:[eE]([+-]?[0-9]+))?$/; + const match = regex.exec(val); + if (!match) + throw new Error(`Unable to parse number from string: ${val}`); + const [, sign, intPart, fracPart, expPart] = match; + const cleanIntPart = intPart.replace(/^0+(?=\d)/, "") || "0"; + let mantissaStr = cleanIntPart; + let exponent = 0; + if (fracPart) { + mantissaStr += fracPart; + exponent -= fracPart.length; + } + if (expPart) + exponent += parseInt(expPart, 10); + let mantissa = BigInt(mantissaStr); + if (sign === "-") + mantissa = -mantissa; + const isNegative = mantissa < BigInt(0); + return { mantissa, exponent, isNegative }; + } + function normalize(mantissa, exponent) { + let m = mantissa < BigInt(0) ? -mantissa : mantissa; + const isNegative = mantissa < BigInt(0); + while (m !== BigInt(0) && m < MIN_MANTISSA && exponent > MIN_EXPONENT) { + exponent -= 1; + m *= BigInt(10); + } + while (m > MAX_MANTISSA) { + if (exponent >= MAX_EXPONENT) + throw new Error("Mantissa and exponent are too large"); + exponent += 1; + m /= BigInt(10); + } + if (isNegative) + m = -m; + return { mantissa: m, exponent }; + } + var STNumber = class _STNumber extends serialized_type_1.SerializedType { + /** + * Construct a STNumber from 12 bytes (8 for mantissa, 4 for exponent). + * @param bytes - 12-byte Uint8Array + * @throws Error if input is not a Uint8Array of length 12. + */ + constructor(bytes) { + const used = bytes !== null && bytes !== void 0 ? bytes : _STNumber.defaultBytes; + if (!(used instanceof Uint8Array) || used.length !== 12) { + throw new Error(`STNumber must be constructed from a 12-byte Uint8Array, got ${used === null || used === void 0 ? void 0 : used.length}`); + } + super(used); + } + /** + * Construct from a number string (or another STNumber). + * + * @param value - A string, or STNumber instance. + * @returns STNumber instance. + * @throws Error if not a string or STNumber. + */ + static from(value) { + if (value instanceof _STNumber) { + return value; + } + if (typeof value === "string") { + return _STNumber.fromValue(value); + } + throw new Error("STNumber.from: Only string or STNumber instance is supported"); + } + /** + * Construct from a number string (integer, decimal, or scientific notation). + * Handles normalization to XRPL Number constraints. + * + * @param val - The number as a string (e.g. '1.23', '-123e5'). + * @returns STNumber instance + * @throws Error if val is not a valid number string. + */ + static fromValue(val) { + const { mantissa, exponent, isNegative } = extractNumberPartsFromString(val); + let normalizedMantissa; + let normalizedExponent; + if (mantissa === BigInt(0) && exponent === 0 && !isNegative) { + normalizedMantissa = BigInt(0); + normalizedExponent = DEFAULT_VALUE_EXPONENT; + } else { + ; + ({ mantissa: normalizedMantissa, exponent: normalizedExponent } = normalize(mantissa, exponent)); + } + const bytes = new Uint8Array(12); + (0, utils_1.writeInt64BE)(bytes, normalizedMantissa, 0); + (0, utils_1.writeInt32BE)(bytes, normalizedExponent, 8); + return new _STNumber(bytes); + } + /** + * Read a STNumber from a BinaryParser stream (12 bytes). + * @param parser - BinaryParser positioned at the start of a number + * @returns STNumber instance + */ + static fromParser(parser) { + return new _STNumber(parser.read(12)); + } + /** + * Convert this STNumber to a normalized string representation. + * The output is decimal or scientific notation, depending on exponent range. + * Follows XRPL convention: zero is "0", other values are normalized to a canonical string. + * + * @returns String representation of the value + */ + // eslint-disable-next-line complexity -- required + toJSON() { + const b = this.bytes; + if (!b || b.length !== 12) + throw new Error("STNumber internal bytes not set or wrong length"); + const mantissa = (0, utils_1.readInt64BE)(b, 0); + const exponent = (0, utils_1.readInt32BE)(b, 8); + if (mantissa === BigInt(0) && exponent === DEFAULT_VALUE_EXPONENT) { + return "0"; + } + if (exponent === 0) + return mantissa.toString(); + if (exponent < -25 || exponent > -5) { + return `${mantissa}e${exponent}`; + } + const isNegative = mantissa < BigInt(0); + const mantissaAbs = mantissa < BigInt(0) ? -mantissa : mantissa; + const padPrefix = 27; + const padSuffix = 23; + const mantissaStr = mantissaAbs.toString(); + const rawValue = "0".repeat(padPrefix) + mantissaStr + "0".repeat(padSuffix); + const OFFSET = exponent + 43; + const integerPart = rawValue.slice(0, OFFSET).replace(/^0+/, "") || "0"; + const fractionPart = rawValue.slice(OFFSET).replace(/0+$/, ""); + return `${isNegative ? "-" : ""}${integerPart}${fractionPart ? "." + fractionPart : ""}`; + } + }; + exports2.STNumber = STNumber; + STNumber.defaultBytes = new Uint8Array(12); + } +}); + +// node_modules/ripple-binary-codec/dist/types/path-set.js +var require_path_set = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/path-set.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PathSet = void 0; + var account_id_1 = require_account_id(); + var currency_1 = require_currency(); + var binary_parser_1 = require_binary_parser(); + var serialized_type_1 = require_serialized_type(); + var utils_1 = require_utils10(); + var PATHSET_END_BYTE = 0; + var PATH_SEPARATOR_BYTE = 255; + var TYPE_ACCOUNT = 1; + var TYPE_CURRENCY = 16; + var TYPE_ISSUER = 32; + function isHopObject(arg) { + return arg.issuer !== void 0 || arg.account !== void 0 || arg.currency !== void 0; + } + function isPathSet(arg) { + return Array.isArray(arg) && arg.length === 0 || Array.isArray(arg) && Array.isArray(arg[0]) && arg[0].length === 0 || Array.isArray(arg) && Array.isArray(arg[0]) && isHopObject(arg[0][0]); + } + var Hop = class _Hop extends serialized_type_1.SerializedType { + /** + * Create a Hop from a HopObject + * + * @param value Either a hop or HopObject to create a hop with + * @returns a Hop + */ + static from(value) { + if (value instanceof _Hop) { + return value; + } + const bytes = [Uint8Array.from([0])]; + if (value.account) { + bytes.push(account_id_1.AccountID.from(value.account).toBytes()); + bytes[0][0] |= TYPE_ACCOUNT; + } + if (value.currency) { + bytes.push(currency_1.Currency.from(value.currency).toBytes()); + bytes[0][0] |= TYPE_CURRENCY; + } + if (value.issuer) { + bytes.push(account_id_1.AccountID.from(value.issuer).toBytes()); + bytes[0][0] |= TYPE_ISSUER; + } + return new _Hop((0, utils_1.concat)(bytes)); + } + /** + * Construct a Hop from a BinaryParser + * + * @param parser BinaryParser to read the Hop from + * @returns a Hop + */ + static fromParser(parser) { + const type = parser.readUInt8(); + const bytes = [Uint8Array.from([type])]; + if (type & TYPE_ACCOUNT) { + bytes.push(parser.read(account_id_1.AccountID.width)); + } + if (type & TYPE_CURRENCY) { + bytes.push(parser.read(currency_1.Currency.width)); + } + if (type & TYPE_ISSUER) { + bytes.push(parser.read(account_id_1.AccountID.width)); + } + return new _Hop((0, utils_1.concat)(bytes)); + } + /** + * Get the JSON interpretation of this hop + * + * @returns a HopObject, an JS object with optional account, issuer, and currency + */ + toJSON() { + const hopParser = new binary_parser_1.BinaryParser((0, utils_1.bytesToHex)(this.bytes)); + const type = hopParser.readUInt8(); + let account, currency, issuer; + if (type & TYPE_ACCOUNT) { + account = account_id_1.AccountID.fromParser(hopParser).toJSON(); + } + if (type & TYPE_CURRENCY) { + currency = currency_1.Currency.fromParser(hopParser).toJSON(); + } + if (type & TYPE_ISSUER) { + issuer = account_id_1.AccountID.fromParser(hopParser).toJSON(); + } + const result = {}; + if (account) { + result.account = account; + } + if (issuer) { + result.issuer = issuer; + } + if (currency) { + result.currency = currency; + } + return result; + } + /** + * get a number representing the type of this hop + * + * @returns a number to be bitwise and-ed with TYPE_ constants to describe the types in the hop + */ + type() { + return this.bytes[0]; + } + }; + var Path = class _Path extends serialized_type_1.SerializedType { + /** + * construct a Path from an array of Hops + * + * @param value Path or array of HopObjects to construct a Path + * @returns the Path + */ + static from(value) { + if (value instanceof _Path) { + return value; + } + const bytes = []; + value.forEach((hop) => { + bytes.push(Hop.from(hop).toBytes()); + }); + return new _Path((0, utils_1.concat)(bytes)); + } + /** + * Read a Path from a BinaryParser + * + * @param parser BinaryParser to read Path from + * @returns the Path represented by the bytes read from the BinaryParser + */ + static fromParser(parser) { + const bytes = []; + while (!parser.end()) { + bytes.push(Hop.fromParser(parser).toBytes()); + if (parser.peek() === PATHSET_END_BYTE || parser.peek() === PATH_SEPARATOR_BYTE) { + break; + } + } + return new _Path((0, utils_1.concat)(bytes)); + } + /** + * Get the JSON representation of this Path + * + * @returns an Array of HopObject constructed from this.bytes + */ + toJSON() { + const json = []; + const pathParser = new binary_parser_1.BinaryParser(this.toString()); + while (!pathParser.end()) { + json.push(Hop.fromParser(pathParser).toJSON()); + } + return json; + } + }; + var PathSet = class _PathSet extends serialized_type_1.SerializedType { + /** + * Construct a PathSet from an Array of Arrays representing paths + * + * @param value A PathSet or Array of Array of HopObjects + * @returns the PathSet constructed from value + */ + static from(value) { + if (value instanceof _PathSet) { + return value; + } + if (isPathSet(value)) { + const bytes = []; + value.forEach((path2) => { + bytes.push(Path.from(path2).toBytes()); + bytes.push(Uint8Array.from([PATH_SEPARATOR_BYTE])); + }); + bytes[bytes.length - 1] = Uint8Array.from([PATHSET_END_BYTE]); + return new _PathSet((0, utils_1.concat)(bytes)); + } + throw new Error("Cannot construct PathSet from given value"); + } + /** + * Construct a PathSet from a BinaryParser + * + * @param parser A BinaryParser to read PathSet from + * @returns the PathSet read from parser + */ + static fromParser(parser) { + const bytes = []; + while (!parser.end()) { + bytes.push(Path.fromParser(parser).toBytes()); + bytes.push(parser.read(1)); + if (bytes[bytes.length - 1][0] == PATHSET_END_BYTE) { + break; + } + } + return new _PathSet((0, utils_1.concat)(bytes)); + } + /** + * Get the JSON representation of this PathSet + * + * @returns an Array of Array of HopObjects, representing this PathSet + */ + toJSON() { + const json = []; + const pathParser = new binary_parser_1.BinaryParser(this.toString()); + while (!pathParser.end()) { + json.push(Path.fromParser(pathParser).toJSON()); + pathParser.skip(1); + } + return json; + } + }; + exports2.PathSet = PathSet; + } +}); + +// node_modules/ripple-binary-codec/dist/types/uint.js +var require_uint2 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/uint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UInt = void 0; + var serialized_type_1 = require_serialized_type(); + function compare2(n1, n2) { + return n1 < n2 ? -1 : n1 == n2 ? 0 : 1; + } + var UInt = class extends serialized_type_1.Comparable { + constructor(bytes) { + super(bytes); + } + /** + * Overload of compareTo for Comparable + * + * @param other other UInt to compare this to + * @returns -1, 0, or 1 depending on how the objects relate to each other + */ + compareTo(other) { + return compare2(this.valueOf(), other.valueOf()); + } + /** + * Convert a UInt object to JSON + * + * @returns number or string represented by this.bytes + */ + toJSON() { + const val = this.valueOf(); + return typeof val === "number" ? val : val.toString(); + } + static checkUintRange(val, min, max) { + if (val < min || val > max) { + throw new Error(`Invalid ${this.constructor.name}: ${val} must be >= ${min} and <= ${max}`); + } + } + }; + exports2.UInt = UInt; + } +}); + +// node_modules/ripple-binary-codec/dist/types/uint-64.js +var require_uint_64 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/uint-64.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UInt64 = void 0; + var uint_1 = require_uint2(); + var utils_1 = require_utils10(); + var utils_2 = require_utils12(); + var enums_1 = require_enums(); + var HEX_REGEX = /^[a-fA-F0-9]{1,16}$/; + var BASE10_REGEX = /^[0-9]{1,20}$/; + var mask = BigInt(4294967295); + var BASE10_AMOUNT_FIELDS = /* @__PURE__ */ new Set([ + "MaximumAmount", + "OutstandingAmount", + "MPTAmount", + "LockedAmount" + ]); + function isBase10(fieldName) { + return BASE10_AMOUNT_FIELDS.has(fieldName); + } + var UInt64 = class _UInt64 extends uint_1.UInt { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _UInt64.defaultUInt64.bytes); + } + static fromParser(parser) { + return new _UInt64(parser.read(_UInt64.width)); + } + /** + * Construct a UInt64 object + * + * @param val A UInt64, hex-string, bigInt, or number + * @returns A UInt64 object + */ + // eslint-disable-next-line complexity + static from(val, fieldName = "") { + if (val instanceof _UInt64) { + return val; + } + let buf = new Uint8Array(_UInt64.width); + if (typeof val === "number") { + if (val < 0) { + throw new Error("value must be an unsigned integer"); + } + const number = BigInt(val); + const intBuf = [new Uint8Array(4), new Uint8Array(4)]; + (0, utils_2.writeUInt32BE)(intBuf[0], Number(number >> BigInt(32)), 0); + (0, utils_2.writeUInt32BE)(intBuf[1], Number(number & BigInt(mask)), 0); + return new _UInt64((0, utils_1.concat)(intBuf)); + } + if (typeof val === "string") { + if (isBase10(fieldName)) { + if (!BASE10_REGEX.test(val)) { + throw new Error(`${fieldName} ${val} is not a valid base 10 string`); + } + val = BigInt(val).toString(16); + } + if (typeof val === "string" && !HEX_REGEX.test(val)) { + throw new Error(`${val} is not a valid hex-string`); + } + const strBuf = val.padStart(16, "0"); + buf = (0, utils_1.hexToBytes)(strBuf); + return new _UInt64(buf); + } + if (typeof val === "bigint") { + const intBuf = [new Uint8Array(4), new Uint8Array(4)]; + (0, utils_2.writeUInt32BE)(intBuf[0], Number(Number(val >> BigInt(32))), 0); + (0, utils_2.writeUInt32BE)(intBuf[1], Number(val & BigInt(mask)), 0); + return new _UInt64((0, utils_1.concat)(intBuf)); + } + throw new Error("Cannot construct UInt64 from given value"); + } + /** + * The JSON representation of a UInt64 object + * + * @returns a hex-string + */ + toJSON(_definitions = enums_1.DEFAULT_DEFINITIONS, fieldName = "") { + const hexString = (0, utils_1.bytesToHex)(this.bytes); + if (isBase10(fieldName)) { + return BigInt("0x" + hexString).toString(10); + } + return hexString; + } + /** + * Get the value of the UInt64 + * + * @returns the number represented buy this.bytes + */ + valueOf() { + const msb = BigInt((0, utils_2.readUInt32BE)(this.bytes.slice(0, 4), 0)); + const lsb = BigInt((0, utils_2.readUInt32BE)(this.bytes.slice(4), 0)); + return msb << BigInt(32) | lsb; + } + /** + * Get the bytes representation of the UInt64 object + * + * @returns 8 bytes representing the UInt64 + */ + toBytes() { + return this.bytes; + } + }; + exports2.UInt64 = UInt64; + UInt64.width = 64 / 8; + UInt64.defaultUInt64 = new UInt64(new Uint8Array(UInt64.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/st-object.js +var require_st_object = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/st-object.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.STObject = void 0; + var enums_1 = require_enums(); + var serialized_type_1 = require_serialized_type(); + var ripple_address_codec_1 = require_dist4(); + var binary_parser_1 = require_binary_parser(); + var binary_serializer_1 = require_binary_serializer(); + var st_array_1 = require_st_array(); + var uint_64_1 = require_uint_64(); + var OBJECT_END_MARKER_BYTE = Uint8Array.from([225]); + var OBJECT_END_MARKER = "ObjectEndMarker"; + var ST_OBJECT = "STObject"; + var DESTINATION = "Destination"; + var ACCOUNT = "Account"; + var SOURCE_TAG = "SourceTag"; + var DEST_TAG = "DestinationTag"; + function handleXAddress(field, xAddress) { + const decoded = (0, ripple_address_codec_1.xAddressToClassicAddress)(xAddress); + let tagName; + if (field === DESTINATION) + tagName = DEST_TAG; + else if (field === ACCOUNT) + tagName = SOURCE_TAG; + else if (decoded.tag !== false) + throw new Error(`${field} cannot have an associated tag`); + return decoded.tag !== false ? { [field]: decoded.classicAddress, [tagName]: decoded.tag } : { [field]: decoded.classicAddress }; + } + function checkForDuplicateTags(obj1, obj2) { + if (!(obj1[SOURCE_TAG] === void 0 || obj2[SOURCE_TAG] === void 0)) + throw new Error("Cannot have Account X-Address and SourceTag"); + if (!(obj1[DEST_TAG] === void 0 || obj2[DEST_TAG] === void 0)) + throw new Error("Cannot have Destination X-Address and DestinationTag"); + } + var STObject = class _STObject extends serialized_type_1.SerializedType { + /** + * Construct a STObject from a BinaryParser + * + * @param parser BinaryParser to read STObject from + * @returns A STObject object + */ + static fromParser(parser) { + const list = new binary_serializer_1.BytesList(); + const bytes = new binary_serializer_1.BinarySerializer(list); + while (!parser.end()) { + const field = parser.readField(); + if (field.name === OBJECT_END_MARKER) { + break; + } + const associatedValue = parser.readFieldValue(field); + bytes.writeFieldAndValue(field, associatedValue); + if (field.type.name === ST_OBJECT) { + bytes.put(OBJECT_END_MARKER_BYTE); + } + } + return new _STObject(list.toBytes()); + } + /** + * Construct a STObject from a JSON object + * + * @param value An object to include + * @param filter optional, denote which field to include in serialized object + * @param definitions optional, types and values to use to encode/decode a transaction + * @returns a STObject object + */ + static from(value, filter, definitions = enums_1.DEFAULT_DEFINITIONS) { + if (value instanceof _STObject) { + return value; + } + const list = new binary_serializer_1.BytesList(); + const bytes = new binary_serializer_1.BinarySerializer(list); + let isUnlModify = false; + const xAddressDecoded = Object.entries(value).reduce((acc, [key, val]) => { + let handled = void 0; + if (val && (0, ripple_address_codec_1.isValidXAddress)(val.toString())) { + handled = handleXAddress(key, val.toString()); + checkForDuplicateTags(handled, value); + } + return Object.assign(acc, handled !== null && handled !== void 0 ? handled : { [key]: val }); + }, {}); + function isValidFieldInstance(f) { + return f !== void 0 && xAddressDecoded[f.name] !== void 0 && f.isSerialized; + } + let sorted = Object.keys(xAddressDecoded).map((f) => { + if (!(f in definitions.field)) { + if (f[0] === f[0].toLowerCase()) + return void 0; + throw new Error(`Field ${f} is not defined in the definitions`); + } + return definitions.field[f]; + }).filter(isValidFieldInstance).sort((a, b) => { + return a.ordinal - b.ordinal; + }); + if (filter !== void 0) { + sorted = sorted.filter(filter); + } + sorted.forEach((field) => { + const associatedValue = field.type.name === ST_OBJECT ? this.from(xAddressDecoded[field.name], void 0, definitions) : field.type.name === "STArray" ? st_array_1.STArray.from(xAddressDecoded[field.name], definitions) : field.type.name === "UInt64" ? uint_64_1.UInt64.from(xAddressDecoded[field.name], field.name) : field.associatedType.from(xAddressDecoded[field.name]); + if (associatedValue == void 0) { + throw new TypeError(`Unable to interpret "${field.name}: ${xAddressDecoded[field.name]}".`); + } + if (associatedValue.name === "UNLModify") { + isUnlModify = true; + } + const isUnlModifyWorkaround = field.name == "Account" && isUnlModify; + bytes.writeFieldAndValue(field, associatedValue, isUnlModifyWorkaround); + if (field.type.name === ST_OBJECT) { + bytes.put(OBJECT_END_MARKER_BYTE); + } + }); + return new _STObject(list.toBytes()); + } + /** + * Get the JSON interpretation of this.bytes + * @param definitions rippled definitions used to parse the values of transaction types and such. + * Can be customized for sidechains and amendments. + * @returns a JSON object + */ + toJSON(definitions) { + const objectParser = new binary_parser_1.BinaryParser(this.toString(), definitions); + const accumulator = {}; + while (!objectParser.end()) { + const field = objectParser.readField(); + if (field.name === OBJECT_END_MARKER) { + break; + } + accumulator[field.name] = objectParser.readFieldValue(field).toJSON(definitions, field.name); + } + return accumulator; + } + }; + exports2.STObject = STObject; + } +}); + +// node_modules/ripple-binary-codec/dist/types/st-array.js +var require_st_array = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/st-array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.STArray = void 0; + var enums_1 = require_enums(); + var serialized_type_1 = require_serialized_type(); + var st_object_1 = require_st_object(); + var binary_parser_1 = require_binary_parser(); + var utils_1 = require_utils10(); + var ARRAY_END_MARKER = Uint8Array.from([241]); + var ARRAY_END_MARKER_NAME = "ArrayEndMarker"; + var OBJECT_END_MARKER = Uint8Array.from([225]); + function isObjects(args) { + return Array.isArray(args) && args.every((arg) => typeof arg === "object" && Object.keys(arg).length === 1 && typeof Object.values(arg)[0] === "object"); + } + var STArray = class _STArray extends serialized_type_1.SerializedType { + /** + * Construct an STArray from a BinaryParser + * + * @param parser BinaryParser to parse an STArray from + * @returns An STArray Object + */ + static fromParser(parser) { + const bytes = []; + while (!parser.end()) { + const field = parser.readField(); + if (field.name === ARRAY_END_MARKER_NAME) { + break; + } + bytes.push(field.header, parser.readFieldValue(field).toBytes(), OBJECT_END_MARKER); + } + bytes.push(ARRAY_END_MARKER); + return new _STArray((0, utils_1.concat)(bytes)); + } + /** + * Construct an STArray from an Array of JSON Objects + * + * @param value STArray or Array of Objects to parse into an STArray + * @param definitions optional, types and values to use to encode/decode a transaction + * @returns An STArray object + */ + static from(value, definitions = enums_1.DEFAULT_DEFINITIONS) { + if (value instanceof _STArray) { + return value; + } + if (isObjects(value)) { + const bytes = []; + value.forEach((obj) => { + bytes.push(st_object_1.STObject.from(obj, void 0, definitions).toBytes()); + }); + bytes.push(ARRAY_END_MARKER); + return new _STArray((0, utils_1.concat)(bytes)); + } + throw new Error("Cannot construct STArray from value given"); + } + /** + * Return the JSON representation of this.bytes + * + * @param definitions optional, types and values to use to encode/decode a transaction + * @returns An Array of JSON objects + */ + toJSON(definitions = enums_1.DEFAULT_DEFINITIONS) { + const result = []; + const arrayParser = new binary_parser_1.BinaryParser(this.toString(), definitions); + while (!arrayParser.end()) { + const field = arrayParser.readField(); + if (field.name === ARRAY_END_MARKER_NAME) { + break; + } + const outer = {}; + outer[field.name] = st_object_1.STObject.fromParser(arrayParser).toJSON(definitions); + result.push(outer); + } + return result; + } + }; + exports2.STArray = STArray; + } +}); + +// node_modules/ripple-binary-codec/dist/types/uint-16.js +var require_uint_16 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/uint-16.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UInt16 = void 0; + var uint_1 = require_uint2(); + var utils_1 = require_utils12(); + var UInt16 = class _UInt16 extends uint_1.UInt { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _UInt16.defaultUInt16.bytes); + } + static fromParser(parser) { + return new _UInt16(parser.read(_UInt16.width)); + } + /** + * Construct a UInt16 object from a number + * + * @param val UInt16 object or number + */ + static from(val) { + if (val instanceof _UInt16) { + return val; + } + if (typeof val === "number") { + _UInt16.checkUintRange(val, 0, 65535); + const buf = new Uint8Array(_UInt16.width); + (0, utils_1.writeUInt16BE)(buf, val, 0); + return new _UInt16(buf); + } + throw new Error("Can not construct UInt16 with given value"); + } + /** + * get the value of a UInt16 object + * + * @returns the number represented by this.bytes + */ + valueOf() { + return parseInt((0, utils_1.readUInt16BE)(this.bytes, 0)); + } + }; + exports2.UInt16 = UInt16; + UInt16.width = 16 / 8; + UInt16.defaultUInt16 = new UInt16(new Uint8Array(UInt16.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/uint-32.js +var require_uint_32 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/uint-32.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UInt32 = void 0; + var uint_1 = require_uint2(); + var utils_1 = require_utils12(); + var UInt32 = class _UInt32 extends uint_1.UInt { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _UInt32.defaultUInt32.bytes); + } + static fromParser(parser) { + return new _UInt32(parser.read(_UInt32.width)); + } + /** + * Construct a UInt32 object from a number + * + * @param val UInt32 object or number + */ + static from(val) { + if (val instanceof _UInt32) { + return val; + } + const buf = new Uint8Array(_UInt32.width); + if (typeof val === "string") { + const num = Number.parseInt(val); + (0, utils_1.writeUInt32BE)(buf, num, 0); + return new _UInt32(buf); + } + if (typeof val === "number") { + _UInt32.checkUintRange(val, 0, 4294967295); + (0, utils_1.writeUInt32BE)(buf, val, 0); + return new _UInt32(buf); + } + throw new Error("Cannot construct UInt32 from given value"); + } + /** + * get the value of a UInt32 object + * + * @returns the number represented by this.bytes + */ + valueOf() { + return parseInt((0, utils_1.readUInt32BE)(this.bytes, 0), 10); + } + }; + exports2.UInt32 = UInt32; + UInt32.width = 32 / 8; + UInt32.defaultUInt32 = new UInt32(new Uint8Array(UInt32.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/uint-8.js +var require_uint_8 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/uint-8.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.UInt8 = void 0; + var uint_1 = require_uint2(); + var utils_1 = require_utils10(); + var utils_2 = require_utils12(); + var UInt8 = class _UInt8 extends uint_1.UInt { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _UInt8.defaultUInt8.bytes); + } + static fromParser(parser) { + return new _UInt8(parser.read(_UInt8.width)); + } + /** + * Construct a UInt8 object from a number + * + * @param val UInt8 object or number + */ + static from(val) { + if (val instanceof _UInt8) { + return val; + } + if (typeof val === "number") { + _UInt8.checkUintRange(val, 0, 255); + const buf = new Uint8Array(_UInt8.width); + (0, utils_2.writeUInt8)(buf, val, 0); + return new _UInt8(buf); + } + throw new Error("Cannot construct UInt8 from given value"); + } + /** + * get the value of a UInt8 object + * + * @returns the number represented by this.bytes + */ + valueOf() { + return parseInt((0, utils_1.bytesToHex)(this.bytes), 16); + } + }; + exports2.UInt8 = UInt8; + UInt8.width = 8 / 8; + UInt8.defaultUInt8 = new UInt8(new Uint8Array(UInt8.width)); + } +}); + +// node_modules/ripple-binary-codec/dist/types/vector-256.js +var require_vector_256 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/vector-256.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Vector256 = void 0; + var serialized_type_1 = require_serialized_type(); + var hash_256_1 = require_hash_256(); + var binary_serializer_1 = require_binary_serializer(); + var utils_1 = require_utils10(); + function isStrings(arg) { + return Array.isArray(arg) && (arg.length === 0 || typeof arg[0] === "string"); + } + var Vector256 = class _Vector256 extends serialized_type_1.SerializedType { + constructor(bytes) { + super(bytes); + } + /** + * Construct a Vector256 from a BinaryParser + * + * @param parser BinaryParser to + * @param hint length of the vector, in bytes, optional + * @returns a Vector256 object + */ + static fromParser(parser, hint) { + const bytesList = new binary_serializer_1.BytesList(); + const bytes = hint !== null && hint !== void 0 ? hint : parser.size(); + const hashes = bytes / 32; + for (let i = 0; i < hashes; i++) { + hash_256_1.Hash256.fromParser(parser).toBytesSink(bytesList); + } + return new _Vector256(bytesList.toBytes()); + } + /** + * Construct a Vector256 object from an array of hashes + * + * @param value A Vector256 object or array of hex-strings representing Hash256's + * @returns a Vector256 object + */ + static from(value) { + if (value instanceof _Vector256) { + return value; + } + if (isStrings(value)) { + const bytesList = new binary_serializer_1.BytesList(); + value.forEach((hash) => { + hash_256_1.Hash256.from(hash).toBytesSink(bytesList); + }); + return new _Vector256(bytesList.toBytes()); + } + throw new Error("Cannot construct Vector256 from given value"); + } + /** + * Return an Array of hex-strings represented by this.bytes + * + * @returns An Array of strings representing the Hash256 objects + */ + toJSON() { + if (this.bytes.byteLength % 32 !== 0) { + throw new Error("Invalid bytes for Vector256"); + } + const result = []; + for (let i = 0; i < this.bytes.byteLength; i += 32) { + result.push((0, utils_1.bytesToHex)(this.bytes.slice(i, i + 32))); + } + return result; + } + }; + exports2.Vector256 = Vector256; + } +}); + +// node_modules/ripple-binary-codec/dist/types/xchain-bridge.js +var require_xchain_bridge = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/xchain-bridge.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.XChainBridge = void 0; + var binary_parser_1 = require_binary_parser(); + var account_id_1 = require_account_id(); + var serialized_type_1 = require_serialized_type(); + var issue_1 = require_issue(); + var utils_1 = require_utils10(); + function isXChainBridgeObject(arg) { + const keys = Object.keys(arg).sort(); + return keys.length === 4 && keys[0] === "IssuingChainDoor" && keys[1] === "IssuingChainIssue" && keys[2] === "LockingChainDoor" && keys[3] === "LockingChainIssue"; + } + var XChainBridge = class _XChainBridge extends serialized_type_1.SerializedType { + constructor(bytes) { + super(bytes !== null && bytes !== void 0 ? bytes : _XChainBridge.ZERO_XCHAIN_BRIDGE.bytes); + } + /** + * Construct a cross-chain bridge from a JSON + * + * @param value XChainBridge or JSON to parse into an XChainBridge + * @returns An XChainBridge object + */ + static from(value) { + if (value instanceof _XChainBridge) { + return value; + } + if (!isXChainBridgeObject(value)) { + throw new Error("Invalid type to construct an XChainBridge"); + } + const bytes = []; + this.TYPE_ORDER.forEach((item) => { + const { name, type } = item; + if (type === account_id_1.AccountID) { + bytes.push(Uint8Array.from([20])); + } + const object = type.from(value[name]); + bytes.push(object.toBytes()); + }); + return new _XChainBridge((0, utils_1.concat)(bytes)); + } + /** + * Read an XChainBridge from a BinaryParser + * + * @param parser BinaryParser to read the XChainBridge from + * @returns An XChainBridge object + */ + static fromParser(parser) { + const bytes = []; + this.TYPE_ORDER.forEach((item) => { + const { type } = item; + if (type === account_id_1.AccountID) { + parser.skip(1); + bytes.push(Uint8Array.from([20])); + } + const object = type.fromParser(parser); + bytes.push(object.toBytes()); + }); + return new _XChainBridge((0, utils_1.concat)(bytes)); + } + /** + * Get the JSON representation of this XChainBridge + * + * @returns the JSON interpretation of this.bytes + */ + toJSON() { + const parser = new binary_parser_1.BinaryParser(this.toString()); + const json = {}; + _XChainBridge.TYPE_ORDER.forEach((item) => { + const { name, type } = item; + if (type === account_id_1.AccountID) { + parser.skip(1); + } + const object = type.fromParser(parser).toJSON(); + json[name] = object; + }); + return json; + } + }; + exports2.XChainBridge = XChainBridge; + XChainBridge.ZERO_XCHAIN_BRIDGE = new XChainBridge((0, utils_1.concat)([ + Uint8Array.from([20]), + new Uint8Array(40), + Uint8Array.from([20]), + new Uint8Array(40) + ])); + XChainBridge.TYPE_ORDER = [ + { name: "LockingChainDoor", type: account_id_1.AccountID }, + { name: "LockingChainIssue", type: issue_1.Issue }, + { name: "IssuingChainDoor", type: account_id_1.AccountID }, + { name: "IssuingChainIssue", type: issue_1.Issue } + ]; + } +}); + +// node_modules/ripple-binary-codec/dist/types/index.js +var require_types4 = __commonJS({ + "node_modules/ripple-binary-codec/dist/types/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Vector256 = exports2.UInt64 = exports2.UInt32 = exports2.UInt16 = exports2.UInt8 = exports2.STObject = exports2.STArray = exports2.PathSet = exports2.Hash256 = exports2.Hash192 = exports2.Hash160 = exports2.Hash128 = exports2.Currency = exports2.Blob = exports2.Amount = exports2.AccountID = exports2.coreTypes = void 0; + var account_id_1 = require_account_id(); + Object.defineProperty(exports2, "AccountID", { enumerable: true, get: function() { + return account_id_1.AccountID; + } }); + var amount_1 = require_amount(); + Object.defineProperty(exports2, "Amount", { enumerable: true, get: function() { + return amount_1.Amount; + } }); + var blob_1 = require_blob(); + Object.defineProperty(exports2, "Blob", { enumerable: true, get: function() { + return blob_1.Blob; + } }); + var currency_1 = require_currency(); + Object.defineProperty(exports2, "Currency", { enumerable: true, get: function() { + return currency_1.Currency; + } }); + var hash_128_1 = require_hash_128(); + Object.defineProperty(exports2, "Hash128", { enumerable: true, get: function() { + return hash_128_1.Hash128; + } }); + var hash_160_1 = require_hash_160(); + Object.defineProperty(exports2, "Hash160", { enumerable: true, get: function() { + return hash_160_1.Hash160; + } }); + var hash_192_1 = require_hash_192(); + Object.defineProperty(exports2, "Hash192", { enumerable: true, get: function() { + return hash_192_1.Hash192; + } }); + var hash_256_1 = require_hash_256(); + Object.defineProperty(exports2, "Hash256", { enumerable: true, get: function() { + return hash_256_1.Hash256; + } }); + var issue_1 = require_issue(); + var st_number_1 = require_st_number(); + var path_set_1 = require_path_set(); + Object.defineProperty(exports2, "PathSet", { enumerable: true, get: function() { + return path_set_1.PathSet; + } }); + var st_array_1 = require_st_array(); + Object.defineProperty(exports2, "STArray", { enumerable: true, get: function() { + return st_array_1.STArray; + } }); + var st_object_1 = require_st_object(); + Object.defineProperty(exports2, "STObject", { enumerable: true, get: function() { + return st_object_1.STObject; + } }); + var uint_16_1 = require_uint_16(); + Object.defineProperty(exports2, "UInt16", { enumerable: true, get: function() { + return uint_16_1.UInt16; + } }); + var uint_32_1 = require_uint_32(); + Object.defineProperty(exports2, "UInt32", { enumerable: true, get: function() { + return uint_32_1.UInt32; + } }); + var uint_64_1 = require_uint_64(); + Object.defineProperty(exports2, "UInt64", { enumerable: true, get: function() { + return uint_64_1.UInt64; + } }); + var uint_8_1 = require_uint_8(); + Object.defineProperty(exports2, "UInt8", { enumerable: true, get: function() { + return uint_8_1.UInt8; + } }); + var vector_256_1 = require_vector_256(); + Object.defineProperty(exports2, "Vector256", { enumerable: true, get: function() { + return vector_256_1.Vector256; + } }); + var xchain_bridge_1 = require_xchain_bridge(); + var enums_1 = require_enums(); + var coreTypes = { + AccountID: account_id_1.AccountID, + Amount: amount_1.Amount, + Blob: blob_1.Blob, + Currency: currency_1.Currency, + Hash128: hash_128_1.Hash128, + Hash160: hash_160_1.Hash160, + Hash192: hash_192_1.Hash192, + Hash256: hash_256_1.Hash256, + Issue: issue_1.Issue, + Number: st_number_1.STNumber, + PathSet: path_set_1.PathSet, + STArray: st_array_1.STArray, + STObject: st_object_1.STObject, + UInt8: uint_8_1.UInt8, + UInt16: uint_16_1.UInt16, + UInt32: uint_32_1.UInt32, + UInt64: uint_64_1.UInt64, + Vector256: vector_256_1.Vector256, + XChainBridge: xchain_bridge_1.XChainBridge + }; + exports2.coreTypes = coreTypes; + enums_1.DEFAULT_DEFINITIONS.associateTypes(coreTypes); + } +}); + +// node_modules/ripple-binary-codec/dist/hash-prefixes.js +var require_hash_prefixes = __commonJS({ + "node_modules/ripple-binary-codec/dist/hash-prefixes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HashPrefix = void 0; + var utils_1 = require_utils12(); + function bytes(uint32) { + const result = new Uint8Array(4); + (0, utils_1.writeUInt32BE)(result, uint32, 0); + return result; + } + var HashPrefix = { + transactionID: bytes(1415073280), + // transaction plus metadata + transaction: bytes(1397638144), + // account state + accountStateEntry: bytes(1296846336), + // inner node in tree + innerNode: bytes(1296649728), + // ledger master data for signing + ledgerHeader: bytes(1280791040), + // inner transaction to sign + transactionSig: bytes(1398036480), + // inner transaction to sign + transactionMultiSig: bytes(1397576704), + // validation for signing + validation: bytes(1447119872), + // proposal for signing + proposal: bytes(1347571712), + // payment channel claim + paymentChannelClaim: bytes(1129073920), + // batch + batch: bytes(1111705600) + }; + exports2.HashPrefix = HashPrefix; + } +}); + +// node_modules/@xrplf/isomorphic/dist/sha512/index.js +var require_sha512 = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/sha512/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sha512 = void 0; + var crypto_1 = __require("crypto"); + var wrapCryptoCreateHash_1 = __importDefault2(require_wrapCryptoCreateHash()); + exports2.sha512 = (0, wrapCryptoCreateHash_1.default)("sha512", crypto_1.createHash); + } +}); + +// node_modules/ripple-binary-codec/dist/hashes.js +var require_hashes = __commonJS({ + "node_modules/ripple-binary-codec/dist/hashes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.transactionID = exports2.sha512Half = exports2.Sha512Half = void 0; + var hash_prefixes_1 = require_hash_prefixes(); + var types_1 = require_types4(); + var binary_serializer_1 = require_binary_serializer(); + var sha512_1 = require_sha512(); + var Sha512Half = class _Sha512Half extends binary_serializer_1.BytesList { + constructor() { + super(...arguments); + this.hash = sha512_1.sha512.create(); + } + /** + * Construct a new Sha512Hash and write bytes this.hash + * + * @param bytes bytes to write to this.hash + * @returns the new Sha512Hash object + */ + static put(bytes) { + return new _Sha512Half().put(bytes); + } + /** + * Write bytes to an existing Sha512Hash + * + * @param bytes bytes to write to object + * @returns the Sha512 object + */ + put(bytes) { + this.hash.update(bytes); + return this; + } + /** + * Compute SHA512 hash and slice in half + * + * @returns half of a SHA512 hash + */ + finish256() { + return Uint8Array.from(this.hash.digest().slice(0, 32)); + } + /** + * Constructs a Hash256 from the Sha512Half object + * + * @returns a Hash256 object + */ + finish() { + return new types_1.Hash256(this.finish256()); + } + }; + exports2.Sha512Half = Sha512Half; + function sha512Half(...args) { + const hash = new Sha512Half(); + args.forEach((a) => hash.put(a)); + return hash.finish256(); + } + exports2.sha512Half = sha512Half; + function transactionID(serialized) { + return new types_1.Hash256(sha512Half(hash_prefixes_1.HashPrefix.transactionID, serialized)); + } + exports2.transactionID = transactionID; + } +}); + +// node_modules/ripple-binary-codec/dist/binary.js +var require_binary = __commonJS({ + "node_modules/ripple-binary-codec/dist/binary.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.signingBatchData = exports2.transactionID = exports2.sha512Half = exports2.binaryToJSON = exports2.signingClaimData = exports2.signingData = exports2.multiSigningData = exports2.readJSON = exports2.serializeObject = exports2.makeParser = exports2.BytesList = exports2.BinarySerializer = exports2.BinaryParser = void 0; + var utils_1 = require_utils10(); + var types_1 = require_types4(); + var binary_parser_1 = require_binary_parser(); + Object.defineProperty(exports2, "BinaryParser", { enumerable: true, get: function() { + return binary_parser_1.BinaryParser; + } }); + var hash_prefixes_1 = require_hash_prefixes(); + var binary_serializer_1 = require_binary_serializer(); + Object.defineProperty(exports2, "BinarySerializer", { enumerable: true, get: function() { + return binary_serializer_1.BinarySerializer; + } }); + Object.defineProperty(exports2, "BytesList", { enumerable: true, get: function() { + return binary_serializer_1.BytesList; + } }); + var hashes_1 = require_hashes(); + Object.defineProperty(exports2, "sha512Half", { enumerable: true, get: function() { + return hashes_1.sha512Half; + } }); + Object.defineProperty(exports2, "transactionID", { enumerable: true, get: function() { + return hashes_1.transactionID; + } }); + var enums_1 = require_enums(); + var makeParser = (bytes, definitions) => new binary_parser_1.BinaryParser(bytes instanceof Uint8Array ? (0, utils_1.bytesToHex)(bytes) : bytes, definitions); + exports2.makeParser = makeParser; + var readJSON = (parser, definitions = enums_1.DEFAULT_DEFINITIONS) => parser.readType(types_1.coreTypes.STObject).toJSON(definitions); + exports2.readJSON = readJSON; + var binaryToJSON = (bytes, definitions) => readJSON(makeParser(bytes, definitions), definitions); + exports2.binaryToJSON = binaryToJSON; + function serializeObject(object, opts = {}) { + const { prefix, suffix, signingFieldsOnly = false, definitions } = opts; + const bytesList = new binary_serializer_1.BytesList(); + if (prefix) { + bytesList.put(prefix); + } + const filter = signingFieldsOnly ? (f) => f.isSigningField : void 0; + types_1.coreTypes.STObject.from(object, filter, definitions).toBytesSink(bytesList); + if (suffix) { + bytesList.put(suffix); + } + return bytesList.toBytes(); + } + exports2.serializeObject = serializeObject; + function signingData(transaction, prefix = hash_prefixes_1.HashPrefix.transactionSig, opts = {}) { + return serializeObject(transaction, { + prefix, + signingFieldsOnly: true, + definitions: opts.definitions + }); + } + exports2.signingData = signingData; + function signingClaimData(claim) { + const num = BigInt(String(claim.amount)); + const prefix = hash_prefixes_1.HashPrefix.paymentChannelClaim; + const channel = types_1.coreTypes.Hash256.from(claim.channel).toBytes(); + const amount = types_1.coreTypes.UInt64.from(num).toBytes(); + const bytesList = new binary_serializer_1.BytesList(); + bytesList.put(prefix); + bytesList.put(channel); + bytesList.put(amount); + return bytesList.toBytes(); + } + exports2.signingClaimData = signingClaimData; + function multiSigningData(transaction, signingAccount, opts = { + definitions: enums_1.DEFAULT_DEFINITIONS + }) { + const prefix = hash_prefixes_1.HashPrefix.transactionMultiSig; + const suffix = types_1.coreTypes.AccountID.from(signingAccount).toBytes(); + return serializeObject(transaction, { + prefix, + suffix, + signingFieldsOnly: true, + definitions: opts.definitions + }); + } + exports2.multiSigningData = multiSigningData; + function signingBatchData(batch) { + if (batch.flags == null) { + throw Error("No field `flags'"); + } + if (batch.txIDs == null) { + throw Error("No field `txIDs`"); + } + const prefix = hash_prefixes_1.HashPrefix.batch; + const flags = types_1.coreTypes.UInt32.from(batch.flags).toBytes(); + const txIDsLength = types_1.coreTypes.UInt32.from(batch.txIDs.length).toBytes(); + const bytesList = new binary_serializer_1.BytesList(); + bytesList.put(prefix); + bytesList.put(flags); + bytesList.put(txIDsLength); + batch.txIDs.forEach((txID) => { + bytesList.put(types_1.coreTypes.Hash256.from(txID).toBytes()); + }); + return bytesList.toBytes(); + } + exports2.signingBatchData = signingBatchData; + } +}); + +// node_modules/ripple-binary-codec/dist/shamap.js +var require_shamap = __commonJS({ + "node_modules/ripple-binary-codec/dist/shamap.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ShaMapLeaf = exports2.ShaMapNode = exports2.ShaMap = void 0; + var types_1 = require_types4(); + var hash_prefixes_1 = require_hash_prefixes(); + var hashes_1 = require_hashes(); + var ShaMapNode = class { + }; + exports2.ShaMapNode = ShaMapNode; + var ShaMapLeaf = class extends ShaMapNode { + constructor(index, item) { + super(); + this.index = index; + this.item = item; + } + /** + * @returns true as ShaMapLeaf is a leaf node + */ + isLeaf() { + return true; + } + /** + * @returns false as ShaMapLeaf is not an inner node + */ + isInner() { + return false; + } + /** + * Get the prefix of the this.item + * + * @returns The hash prefix, unless this.item is undefined, then it returns an empty Uint8Array + */ + hashPrefix() { + return this.item === void 0 ? new Uint8Array(0) : this.item.hashPrefix(); + } + /** + * Hash the bytes representation of this + * + * @returns hash of this.item concatenated with this.index + */ + hash() { + const hash = hashes_1.Sha512Half.put(this.hashPrefix()); + this.toBytesSink(hash); + return hash.finish(); + } + /** + * Write the bytes representation of this to a BytesList + * @param list BytesList to write bytes to + */ + toBytesSink(list) { + if (this.item !== void 0) { + this.item.toBytesSink(list); + } + this.index.toBytesSink(list); + } + }; + exports2.ShaMapLeaf = ShaMapLeaf; + var ShaMapInner = class _ShaMapInner extends ShaMapNode { + constructor(depth = 0) { + super(); + this.depth = depth; + this.slotBits = 0; + this.branches = Array(16); + } + /** + * @returns true as ShaMapInner is an inner node + */ + isInner() { + return true; + } + /** + * @returns false as ShaMapInner is not a leaf node + */ + isLeaf() { + return false; + } + /** + * Get the hash prefix for this node + * + * @returns hash prefix describing an inner node + */ + hashPrefix() { + return hash_prefixes_1.HashPrefix.innerNode; + } + /** + * Set a branch of this node to be another node + * + * @param slot Slot to add branch to this.branches + * @param branch Branch to add + */ + setBranch(slot, branch) { + this.slotBits = this.slotBits | 1 << slot; + this.branches[slot] = branch; + } + /** + * @returns true if node is empty + */ + empty() { + return this.slotBits === 0; + } + /** + * Compute the hash of this node + * + * @returns The hash of this node + */ + hash() { + if (this.empty()) { + return types_1.coreTypes.Hash256.ZERO_256; + } + const hash = hashes_1.Sha512Half.put(this.hashPrefix()); + this.toBytesSink(hash); + return hash.finish(); + } + /** + * Writes the bytes representation of this node to a BytesList + * + * @param list BytesList to write bytes to + */ + toBytesSink(list) { + for (let i = 0; i < this.branches.length; i++) { + const branch = this.branches[i]; + const hash = branch ? branch.hash() : types_1.coreTypes.Hash256.ZERO_256; + hash.toBytesSink(list); + } + } + /** + * Add item to the SHAMap + * + * @param index Hash of the index of the item being inserted + * @param item Item to insert in the map + * @param leaf Leaf node to insert when branch doesn't exist + */ + addItem(index, item, leaf) { + if (index === void 0) { + throw new Error(); + } + if (index !== void 0) { + const nibble = index.nibblet(this.depth); + const existing = this.branches[nibble]; + if (existing === void 0) { + this.setBranch(nibble, leaf || new ShaMapLeaf(index, item)); + } else if (existing instanceof ShaMapLeaf) { + const newInner = new _ShaMapInner(this.depth + 1); + newInner.addItem(existing.index, void 0, existing); + newInner.addItem(index, item, leaf); + this.setBranch(nibble, newInner); + } else if (existing instanceof _ShaMapInner) { + existing.addItem(index, item, leaf); + } else { + throw new Error("invalid ShaMap.addItem call"); + } + } + } + }; + var ShaMap = class extends ShaMapInner { + }; + exports2.ShaMap = ShaMap; + } +}); + +// node_modules/ripple-binary-codec/dist/ledger-hashes.js +var require_ledger_hashes = __commonJS({ + "node_modules/ripple-binary-codec/dist/ledger-hashes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodeLedgerData = exports2.ledgerHash = exports2.transactionTreeHash = exports2.accountStateHash = void 0; + var shamap_1 = require_shamap(); + var hash_prefixes_1 = require_hash_prefixes(); + var hashes_1 = require_hashes(); + var binary_1 = require_binary(); + var hash_256_1 = require_hash_256(); + var st_object_1 = require_st_object(); + var uint_64_1 = require_uint_64(); + var uint_32_1 = require_uint_32(); + var uint_8_1 = require_uint_8(); + var binary_parser_1 = require_binary_parser(); + function computeHash(itemizer, itemsJson) { + const map = new shamap_1.ShaMap(); + itemsJson.forEach((item) => map.addItem(...itemizer(item))); + return map.hash(); + } + function transactionItemizer(json) { + if (!json.hash) { + throw new Error(); + } + const index = hash_256_1.Hash256.from(json.hash); + const item = { + hashPrefix() { + return hash_prefixes_1.HashPrefix.transaction; + }, + toBytesSink(sink) { + const serializer = new binary_1.BinarySerializer(sink); + serializer.writeLengthEncoded(st_object_1.STObject.from(json)); + serializer.writeLengthEncoded(st_object_1.STObject.from(json.metaData)); + } + }; + return [index, item, void 0]; + } + function entryItemizer(json) { + const index = hash_256_1.Hash256.from(json.index); + const bytes = (0, binary_1.serializeObject)(json); + const item = { + hashPrefix() { + return hash_prefixes_1.HashPrefix.accountStateEntry; + }, + toBytesSink(sink) { + sink.put(bytes); + } + }; + return [index, item, void 0]; + } + function transactionTreeHash(param) { + const itemizer = transactionItemizer; + return computeHash(itemizer, param); + } + exports2.transactionTreeHash = transactionTreeHash; + function accountStateHash(param) { + const itemizer = entryItemizer; + return computeHash(itemizer, param); + } + exports2.accountStateHash = accountStateHash; + function ledgerHash(header) { + const hash = new hashes_1.Sha512Half(); + hash.put(hash_prefixes_1.HashPrefix.ledgerHeader); + if (header.parent_close_time === void 0 || header.close_flags === void 0) { + throw new Error(); + } + uint_32_1.UInt32.from(header.ledger_index).toBytesSink(hash); + uint_64_1.UInt64.from(BigInt(String(header.total_coins))).toBytesSink(hash); + hash_256_1.Hash256.from(header.parent_hash).toBytesSink(hash); + hash_256_1.Hash256.from(header.transaction_hash).toBytesSink(hash); + hash_256_1.Hash256.from(header.account_hash).toBytesSink(hash); + uint_32_1.UInt32.from(header.parent_close_time).toBytesSink(hash); + uint_32_1.UInt32.from(header.close_time).toBytesSink(hash); + uint_8_1.UInt8.from(header.close_time_resolution).toBytesSink(hash); + uint_8_1.UInt8.from(header.close_flags).toBytesSink(hash); + return hash.finish(); + } + exports2.ledgerHash = ledgerHash; + function decodeLedgerData(binary, definitions) { + if (typeof binary !== "string") { + throw new Error("binary must be a hex string"); + } + const parser = new binary_parser_1.BinaryParser(binary, definitions); + return { + ledger_index: parser.readUInt32(), + total_coins: parser.readType(uint_64_1.UInt64).valueOf().toString(), + parent_hash: parser.readType(hash_256_1.Hash256).toHex(), + transaction_hash: parser.readType(hash_256_1.Hash256).toHex(), + account_hash: parser.readType(hash_256_1.Hash256).toHex(), + parent_close_time: parser.readUInt32(), + close_time: parser.readUInt32(), + close_time_resolution: parser.readUInt8(), + close_flags: parser.readUInt8() + }; + } + exports2.decodeLedgerData = decodeLedgerData; + } +}); + +// node_modules/ripple-binary-codec/dist/quality.js +var require_quality = __commonJS({ + "node_modules/ripple-binary-codec/dist/quality.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.quality = void 0; + var types_1 = require_types4(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var utils_1 = require_utils10(); + var quality = class { + /** + * Encode quality amount + * + * @param arg string representation of an amount + * @returns Serialized quality + */ + static encode(quality2) { + const decimal = (0, bignumber_js_1.default)(quality2); + const exponent = ((decimal === null || decimal === void 0 ? void 0 : decimal.e) || 0) - 15; + const qualityString = decimal.times(`1e${-exponent}`).abs().toString(); + const bytes = types_1.coreTypes.UInt64.from(BigInt(qualityString)).toBytes(); + bytes[0] = exponent + 100; + return bytes; + } + /** + * Decode quality amount + * + * @param arg hex-string denoting serialized quality + * @returns deserialized quality + */ + static decode(quality2) { + const bytes = (0, utils_1.hexToBytes)(quality2).slice(-8); + const exponent = bytes[0] - 100; + const mantissa = new bignumber_js_1.default(`0x${(0, utils_1.bytesToHex)(bytes.slice(1))}`); + return mantissa.times(`1e${exponent}`); + } + }; + exports2.quality = quality; + } +}); + +// node_modules/ripple-binary-codec/dist/coretypes.js +var require_coretypes = __commonJS({ + "node_modules/ripple-binary-codec/dist/coretypes.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.types = exports2.ShaMap = exports2.HashPrefix = exports2.quality = exports2.TransactionResult = exports2.Type = exports2.LedgerEntryType = exports2.TransactionType = exports2.Field = exports2.DEFAULT_DEFINITIONS = exports2.ledgerHashes = exports2.binary = exports2.hashes = void 0; + var enums_1 = require_enums(); + Object.defineProperty(exports2, "DEFAULT_DEFINITIONS", { enumerable: true, get: function() { + return enums_1.DEFAULT_DEFINITIONS; + } }); + Object.defineProperty(exports2, "Field", { enumerable: true, get: function() { + return enums_1.Field; + } }); + Object.defineProperty(exports2, "TransactionType", { enumerable: true, get: function() { + return enums_1.TransactionType; + } }); + Object.defineProperty(exports2, "LedgerEntryType", { enumerable: true, get: function() { + return enums_1.LedgerEntryType; + } }); + Object.defineProperty(exports2, "Type", { enumerable: true, get: function() { + return enums_1.Type; + } }); + Object.defineProperty(exports2, "TransactionResult", { enumerable: true, get: function() { + return enums_1.TransactionResult; + } }); + var types = __importStar2(require_types4()); + exports2.types = types; + var binary = __importStar2(require_binary()); + exports2.binary = binary; + var shamap_1 = require_shamap(); + Object.defineProperty(exports2, "ShaMap", { enumerable: true, get: function() { + return shamap_1.ShaMap; + } }); + var ledgerHashes = __importStar2(require_ledger_hashes()); + exports2.ledgerHashes = ledgerHashes; + var hashes = __importStar2(require_hashes()); + exports2.hashes = hashes; + var quality_1 = require_quality(); + Object.defineProperty(exports2, "quality", { enumerable: true, get: function() { + return quality_1.quality; + } }); + var hash_prefixes_1 = require_hash_prefixes(); + Object.defineProperty(exports2, "HashPrefix", { enumerable: true, get: function() { + return hash_prefixes_1.HashPrefix; + } }); + } +}); + +// node_modules/ripple-binary-codec/dist/enums/xrpl-definitions.js +var require_xrpl_definitions = __commonJS({ + "node_modules/ripple-binary-codec/dist/enums/xrpl-definitions.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.XrplDefinitions = void 0; + var xrpl_definitions_base_1 = require_xrpl_definitions_base(); + var types_1 = require_types4(); + var XrplDefinitions = class extends xrpl_definitions_base_1.XrplDefinitionsBase { + /** + * Present rippled types in a typed and updatable format. + * For an example of the input format see `definitions.json` + * To generate a new definitions file from rippled source code, use the tool at + * `packages/ripple-binary-codec/tools/generateDefinitions.js`. + * + * See the definitions.test.js file for examples of how to create your own updated definitions.json. + * + * @param enums - A json encoding of the core types, transaction types, transaction results, transaction names, and fields. + * @param additionalTypes - A list of SerializedType objects with the same name as the fields defined. + * These types will be included in addition to the coreTypes used on mainnet. + */ + constructor(enums, additionalTypes) { + const types = Object.assign({}, types_1.coreTypes, additionalTypes); + super(enums, types); + } + }; + exports2.XrplDefinitions = XrplDefinitions; + } +}); + +// node_modules/ripple-binary-codec/dist/index.js +var require_dist5 = __commonJS({ + "node_modules/ripple-binary-codec/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.coreTypes = exports2.DEFAULT_DEFINITIONS = exports2.XrplDefinitionsBase = exports2.XrplDefinitions = exports2.TRANSACTION_TYPES = exports2.decodeLedgerData = exports2.decodeQuality = exports2.encodeQuality = exports2.encodeForSigningBatch = exports2.encodeForMultisigning = exports2.encodeForSigningClaim = exports2.encodeForSigning = exports2.encode = exports2.decode = void 0; + var coretypes_1 = require_coretypes(); + var ledger_hashes_1 = require_ledger_hashes(); + Object.defineProperty(exports2, "decodeLedgerData", { enumerable: true, get: function() { + return ledger_hashes_1.decodeLedgerData; + } }); + var enums_1 = require_enums(); + Object.defineProperty(exports2, "XrplDefinitionsBase", { enumerable: true, get: function() { + return enums_1.XrplDefinitionsBase; + } }); + Object.defineProperty(exports2, "TRANSACTION_TYPES", { enumerable: true, get: function() { + return enums_1.TRANSACTION_TYPES; + } }); + Object.defineProperty(exports2, "DEFAULT_DEFINITIONS", { enumerable: true, get: function() { + return enums_1.DEFAULT_DEFINITIONS; + } }); + var xrpl_definitions_1 = require_xrpl_definitions(); + Object.defineProperty(exports2, "XrplDefinitions", { enumerable: true, get: function() { + return xrpl_definitions_1.XrplDefinitions; + } }); + var types_1 = require_types4(); + Object.defineProperty(exports2, "coreTypes", { enumerable: true, get: function() { + return types_1.coreTypes; + } }); + var utils_1 = require_utils10(); + var { signingData, signingClaimData, multiSigningData, signingBatchData, binaryToJSON, serializeObject } = coretypes_1.binary; + function decode(binary, definitions) { + if (typeof binary !== "string") { + throw new Error("binary must be a hex string"); + } + return binaryToJSON(binary, definitions); + } + exports2.decode = decode; + function encode(json, definitions) { + if (typeof json !== "object") { + throw new Error(); + } + return (0, utils_1.bytesToHex)(serializeObject(json, { definitions })); + } + exports2.encode = encode; + function encodeForSigning(json, definitions) { + if (typeof json !== "object") { + throw new Error(); + } + return (0, utils_1.bytesToHex)(signingData(json, coretypes_1.HashPrefix.transactionSig, { + definitions + })); + } + exports2.encodeForSigning = encodeForSigning; + function encodeForSigningClaim(json) { + if (typeof json !== "object") { + throw new Error(); + } + return (0, utils_1.bytesToHex)(signingClaimData(json)); + } + exports2.encodeForSigningClaim = encodeForSigningClaim; + function encodeForMultisigning(json, signer, definitions) { + if (typeof json !== "object") { + throw new Error(); + } + const definitionsOpt = definitions ? { definitions } : void 0; + return (0, utils_1.bytesToHex)(multiSigningData(json, signer, definitionsOpt)); + } + exports2.encodeForMultisigning = encodeForMultisigning; + function encodeForSigningBatch(json) { + if (typeof json !== "object") { + throw new Error("Need an object to encode a Batch transaction"); + } + return (0, utils_1.bytesToHex)(signingBatchData(json)); + } + exports2.encodeForSigningBatch = encodeForSigningBatch; + function encodeQuality(value) { + if (typeof value !== "string") { + throw new Error(); + } + return (0, utils_1.bytesToHex)(coretypes_1.quality.encode(value)); + } + exports2.encodeQuality = encodeQuality; + function decodeQuality(value) { + if (typeof value !== "string") { + throw new Error(); + } + return coretypes_1.quality.decode(value).toString(); + } + exports2.decodeQuality = decodeQuality; + } +}); + +// node_modules/xrpl/dist/npm/models/utils/index.js +var require_utils13 = __commonJS({ + "node_modules/xrpl/dist/npm/models/utils/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isHex = exports2.hasFlag = exports2.isFlagEnabled = exports2.onlyHasFields = exports2.INTEGER_SANITY_CHECK = void 0; + var HEX_REGEX = /^[0-9A-Fa-f]+$/u; + exports2.INTEGER_SANITY_CHECK = /^[0-9]+$/u; + function onlyHasFields(obj, fields) { + return Object.keys(obj).every((key) => fields.includes(key)); + } + exports2.onlyHasFields = onlyHasFields; + function isFlagEnabled(Flags, checkFlag) { + return (BigInt(checkFlag) & BigInt(Flags)) === BigInt(checkFlag); + } + exports2.isFlagEnabled = isFlagEnabled; + function hasFlag(tx, flag, flagName) { + if (tx.Flags == null) { + return false; + } + if (typeof tx.Flags === "number") { + return isFlagEnabled(tx.Flags, flag); + } + return tx.Flags[flagName] === true; + } + exports2.hasFlag = hasFlag; + function isHex2(str) { + return HEX_REGEX.test(str); + } + exports2.isHex = isHex2; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/common.js +var require_common4 = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/common.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isDomainID = exports2.containsDuplicates = exports2.validateCredentialsList = exports2.validateCredentialType = exports2.parseAmountValue = exports2.validateBaseTransaction = exports2.GlobalFlags = exports2.validateOptionalField = exports2.validateRequiredField = exports2.isArray = exports2.isXChainBridge = exports2.isAmount = exports2.isAccount = exports2.isClawbackAmount = exports2.isMPTAmount = exports2.isAuthorizeCredential = exports2.isIssuedCurrencyAmount = exports2.isIssuedCurrency = exports2.isCurrency = exports2.isXRPLNumber = exports2.isValue = exports2.isNull = exports2.isNumber = exports2.isString = exports2.isRecord = exports2.VAULT_DATA_MAX_BYTE_LENGTH = exports2.MAX_AUTHORIZED_CREDENTIALS = void 0; + var utils_1 = require_utils10(); + var ripple_address_codec_1 = require_dist4(); + var ripple_binary_codec_1 = require_dist5(); + var errors_1 = require_errors8(); + var utils_2 = require_utils13(); + var MEMO_SIZE = 3; + exports2.MAX_AUTHORIZED_CREDENTIALS = 8; + var MAX_CREDENTIAL_BYTE_LENGTH = 64; + var MAX_CREDENTIAL_TYPE_LENGTH = MAX_CREDENTIAL_BYTE_LENGTH * 2; + exports2.VAULT_DATA_MAX_BYTE_LENGTH = 256; + function isMemo(obj) { + if (!isRecord(obj)) { + return false; + } + const memo = obj.Memo; + if (!isRecord(memo)) { + return false; + } + const size = Object.keys(memo).length; + const validData = memo.MemoData == null || isString(memo.MemoData) && (0, utils_2.isHex)(memo.MemoData); + const validFormat = memo.MemoFormat == null || isString(memo.MemoFormat) && (0, utils_2.isHex)(memo.MemoFormat); + const validType = memo.MemoType == null || isString(memo.MemoType) && (0, utils_2.isHex)(memo.MemoType); + return size >= 1 && size <= MEMO_SIZE && validData && validFormat && validType && (0, utils_2.onlyHasFields)(memo, ["MemoFormat", "MemoData", "MemoType"]); + } + var SIGNER_SIZE = 3; + function isSigner(obj) { + if (!isRecord(obj)) { + return false; + } + const signer = obj.Signer; + if (!isRecord(signer)) { + return false; + } + return Object.keys(signer).length === SIGNER_SIZE && isString(signer.Account) && isString(signer.TxnSignature) && isString(signer.SigningPubKey); + } + var XRP_CURRENCY_SIZE = 1; + var MPT_CURRENCY_SIZE = 1; + var ISSUE_CURRENCY_SIZE = 2; + var MPT_CURRENCY_AMOUNT_SIZE = 2; + var ISSUED_CURRENCY_AMOUNT_SIZE = 3; + var XCHAIN_BRIDGE_SIZE = 4; + var AUTHORIZE_CREDENTIAL_SIZE = 1; + function isRecord(value) { + return value !== null && typeof value === "object" && !Array.isArray(value); + } + exports2.isRecord = isRecord; + function isString(str) { + return typeof str === "string"; + } + exports2.isString = isString; + function isNumber(num) { + return typeof num === "number"; + } + exports2.isNumber = isNumber; + function isNull(inp) { + return inp == null; + } + exports2.isNull = isNull; + function isValue(value) { + const isValueInternal = (inp) => inp === value; + return isValueInternal; + } + exports2.isValue = isValue; + function isXRPLNumber(value) { + return typeof value === "string" && /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$/u.test(value.trim()); + } + exports2.isXRPLNumber = isXRPLNumber; + function isCurrency(input) { + return isRecord(input) && (Object.keys(input).length === ISSUE_CURRENCY_SIZE && isString(input.issuer) && isString(input.currency) || Object.keys(input).length === XRP_CURRENCY_SIZE && input.currency === "XRP" || Object.keys(input).length === MPT_CURRENCY_SIZE && isString(input.mpt_issuance_id)); + } + exports2.isCurrency = isCurrency; + function isIssuedCurrency(input) { + return isRecord(input) && (Object.keys(input).length === ISSUE_CURRENCY_SIZE && isString(input.issuer) && isString(input.currency) || Object.keys(input).length === XRP_CURRENCY_SIZE && input.currency === "XRP"); + } + exports2.isIssuedCurrency = isIssuedCurrency; + function isIssuedCurrencyAmount(input) { + return isRecord(input) && Object.keys(input).length === ISSUED_CURRENCY_AMOUNT_SIZE && isString(input.value) && isString(input.issuer) && isString(input.currency); + } + exports2.isIssuedCurrencyAmount = isIssuedCurrencyAmount; + function isAuthorizeCredential(input) { + return isRecord(input) && isRecord(input.Credential) && Object.keys(input).length === AUTHORIZE_CREDENTIAL_SIZE && typeof input.Credential.CredentialType === "string" && typeof input.Credential.Issuer === "string"; + } + exports2.isAuthorizeCredential = isAuthorizeCredential; + function isMPTAmount(input) { + return isRecord(input) && Object.keys(input).length === MPT_CURRENCY_AMOUNT_SIZE && typeof input.value === "string" && typeof input.mpt_issuance_id === "string"; + } + exports2.isMPTAmount = isMPTAmount; + function isClawbackAmount(input) { + return isIssuedCurrencyAmount(input) || isMPTAmount(input); + } + exports2.isClawbackAmount = isClawbackAmount; + function isAccount(account) { + return typeof account === "string" && ((0, ripple_address_codec_1.isValidClassicAddress)(account) || (0, ripple_address_codec_1.isValidXAddress)(account)); + } + exports2.isAccount = isAccount; + function isAmount(amount) { + return typeof amount === "string" || isIssuedCurrencyAmount(amount) || isMPTAmount(amount); + } + exports2.isAmount = isAmount; + function isXChainBridge(input) { + return isRecord(input) && Object.keys(input).length === XCHAIN_BRIDGE_SIZE && typeof input.LockingChainDoor === "string" && isIssuedCurrency(input.LockingChainIssue) && typeof input.IssuingChainDoor === "string" && isIssuedCurrency(input.IssuingChainIssue); + } + exports2.isXChainBridge = isXChainBridge; + function isArray(input) { + return input != null && Array.isArray(input); + } + exports2.isArray = isArray; + function validateRequiredField(tx, param, checkValidity, errorOpts = {}) { + var _a, _b; + const paramNameStr = (_a = errorOpts.paramName) !== null && _a !== void 0 ? _a : param; + const txType = (_b = errorOpts.txType) !== null && _b !== void 0 ? _b : tx.TransactionType; + if (tx[param] == null) { + throw new errors_1.ValidationError(`${txType}: missing field ${String(paramNameStr)}`); + } + if (!checkValidity(tx[param])) { + throw new errors_1.ValidationError(`${txType}: invalid field ${String(paramNameStr)}`); + } + } + exports2.validateRequiredField = validateRequiredField; + function validateOptionalField(tx, param, checkValidity, errorOpts = {}) { + var _a, _b; + const paramNameStr = (_a = errorOpts.paramName) !== null && _a !== void 0 ? _a : param; + const txType = (_b = errorOpts.txType) !== null && _b !== void 0 ? _b : tx.TransactionType; + if (tx[param] !== void 0 && !checkValidity(tx[param])) { + throw new errors_1.ValidationError(`${txType}: invalid field ${String(paramNameStr)}`); + } + } + exports2.validateOptionalField = validateOptionalField; + var GlobalFlags; + (function(GlobalFlags2) { + GlobalFlags2[GlobalFlags2["tfInnerBatchTxn"] = 1073741824] = "tfInnerBatchTxn"; + })(GlobalFlags || (exports2.GlobalFlags = GlobalFlags = {})); + function validateBaseTransaction(common) { + if (!isRecord(common)) { + throw new errors_1.ValidationError("BaseTransaction: invalid, expected a valid object"); + } + if (common.TransactionType === void 0) { + throw new errors_1.ValidationError("BaseTransaction: missing field TransactionType"); + } + if (typeof common.TransactionType !== "string") { + throw new errors_1.ValidationError("BaseTransaction: TransactionType not string"); + } + if (!ripple_binary_codec_1.TRANSACTION_TYPES.includes(common.TransactionType)) { + throw new errors_1.ValidationError(`BaseTransaction: Unknown TransactionType ${common.TransactionType}`); + } + validateRequiredField(common, "Account", isString); + validateOptionalField(common, "Fee", isString); + validateOptionalField(common, "Sequence", isNumber); + validateOptionalField(common, "AccountTxnID", isString); + validateOptionalField(common, "LastLedgerSequence", isNumber); + const memos = common.Memos; + if (memos != null && (!isArray(memos) || !memos.every(isMemo))) { + throw new errors_1.ValidationError("BaseTransaction: invalid Memos"); + } + const signers = common.Signers; + if (signers != null && (!isArray(signers) || signers.length === 0 || !signers.every(isSigner))) { + throw new errors_1.ValidationError("BaseTransaction: invalid Signers"); + } + validateOptionalField(common, "SourceTag", isNumber); + validateOptionalField(common, "SigningPubKey", isString); + validateOptionalField(common, "TicketSequence", isNumber); + validateOptionalField(common, "TxnSignature", isString); + validateOptionalField(common, "NetworkID", isNumber); + validateOptionalField(common, "Delegate", isAccount); + const delegate = common.Delegate; + if (delegate != null && delegate === common.Account) { + throw new errors_1.ValidationError("BaseTransaction: Account and Delegate addresses cannot be the same"); + } + } + exports2.validateBaseTransaction = validateBaseTransaction; + function parseAmountValue(amount) { + if (!isAmount(amount)) { + return NaN; + } + if (typeof amount === "string") { + return parseFloat(amount); + } + return parseFloat(amount.value); + } + exports2.parseAmountValue = parseAmountValue; + function validateCredentialType(tx) { + if (typeof tx.TransactionType !== "string") { + throw new errors_1.ValidationError("Invalid TransactionType"); + } + if (tx.CredentialType === void 0) { + throw new errors_1.ValidationError(`${tx.TransactionType}: missing field CredentialType`); + } + if (!isString(tx.CredentialType)) { + throw new errors_1.ValidationError(`${tx.TransactionType}: CredentialType must be a string`); + } + if (tx.CredentialType.length === 0) { + throw new errors_1.ValidationError(`${tx.TransactionType}: CredentialType cannot be an empty string`); + } else if (tx.CredentialType.length > MAX_CREDENTIAL_TYPE_LENGTH) { + throw new errors_1.ValidationError(`${tx.TransactionType}: CredentialType length cannot be > ${MAX_CREDENTIAL_TYPE_LENGTH}`); + } + if (!utils_1.HEX_REGEX.test(tx.CredentialType)) { + throw new errors_1.ValidationError(`${tx.TransactionType}: CredentialType must be encoded in hex`); + } + } + exports2.validateCredentialType = validateCredentialType; + function validateCredentialsList(credentials, transactionType, isStringID, maxCredentials) { + if (credentials == null) { + return; + } + if (!isArray(credentials)) { + throw new errors_1.ValidationError(`${transactionType}: Credentials must be an array`); + } + if (credentials.length > maxCredentials) { + throw new errors_1.ValidationError(`${transactionType}: Credentials length cannot exceed ${maxCredentials} elements`); + } else if (credentials.length === 0) { + throw new errors_1.ValidationError(`${transactionType}: Credentials cannot be an empty array`); + } + credentials.forEach((credential) => { + if (isStringID) { + if (!isString(credential)) { + throw new errors_1.ValidationError(`${transactionType}: Invalid Credentials ID list format`); + } + } else if (!isAuthorizeCredential(credential)) { + throw new errors_1.ValidationError(`${transactionType}: Invalid Credentials format`); + } + }); + if (containsDuplicates(credentials)) { + throw new errors_1.ValidationError(`${transactionType}: Credentials cannot contain duplicate elements`); + } + } + exports2.validateCredentialsList = validateCredentialsList; + function isAuthorizeCredentialArray(list) { + return typeof list[0] !== "string"; + } + function containsDuplicates(objectList) { + if (typeof objectList[0] === "string") { + const objSet = new Set(objectList.map((obj) => JSON.stringify(obj))); + return objSet.size !== objectList.length; + } + const seen = /* @__PURE__ */ new Set(); + if (isAuthorizeCredentialArray(objectList)) { + for (const item of objectList) { + const key = `${item.Credential.Issuer}-${item.Credential.CredentialType}`; + if (seen.has(key)) { + return true; + } + seen.add(key); + } + } + return false; + } + exports2.containsDuplicates = containsDuplicates; + var _DOMAIN_ID_LENGTH = 64; + function isDomainID(domainID) { + return isString(domainID) && domainID.length === _DOMAIN_ID_LENGTH && (0, utils_2.isHex)(domainID); + } + exports2.isDomainID = isDomainID; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/accountSet.js +var require_accountSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/accountSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAccountSet = exports2.AccountSetTfFlags = exports2.AccountSetAsfFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var AccountSetAsfFlags; + (function(AccountSetAsfFlags2) { + AccountSetAsfFlags2[AccountSetAsfFlags2["asfRequireDest"] = 1] = "asfRequireDest"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfRequireAuth"] = 2] = "asfRequireAuth"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisallowXRP"] = 3] = "asfDisallowXRP"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisableMaster"] = 4] = "asfDisableMaster"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfAccountTxnID"] = 5] = "asfAccountTxnID"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfNoFreeze"] = 6] = "asfNoFreeze"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfGlobalFreeze"] = 7] = "asfGlobalFreeze"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDefaultRipple"] = 8] = "asfDefaultRipple"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDepositAuth"] = 9] = "asfDepositAuth"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfAuthorizedNFTokenMinter"] = 10] = "asfAuthorizedNFTokenMinter"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisallowIncomingNFTokenOffer"] = 12] = "asfDisallowIncomingNFTokenOffer"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisallowIncomingCheck"] = 13] = "asfDisallowIncomingCheck"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisallowIncomingPayChan"] = 14] = "asfDisallowIncomingPayChan"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfDisallowIncomingTrustline"] = 15] = "asfDisallowIncomingTrustline"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfAllowTrustLineClawback"] = 16] = "asfAllowTrustLineClawback"; + AccountSetAsfFlags2[AccountSetAsfFlags2["asfAllowTrustLineLocking"] = 17] = "asfAllowTrustLineLocking"; + })(AccountSetAsfFlags || (exports2.AccountSetAsfFlags = AccountSetAsfFlags = {})); + var AccountSetTfFlags; + (function(AccountSetTfFlags2) { + AccountSetTfFlags2[AccountSetTfFlags2["tfRequireDestTag"] = 65536] = "tfRequireDestTag"; + AccountSetTfFlags2[AccountSetTfFlags2["tfOptionalDestTag"] = 131072] = "tfOptionalDestTag"; + AccountSetTfFlags2[AccountSetTfFlags2["tfRequireAuth"] = 262144] = "tfRequireAuth"; + AccountSetTfFlags2[AccountSetTfFlags2["tfOptionalAuth"] = 524288] = "tfOptionalAuth"; + AccountSetTfFlags2[AccountSetTfFlags2["tfDisallowXRP"] = 1048576] = "tfDisallowXRP"; + AccountSetTfFlags2[AccountSetTfFlags2["tfAllowXRP"] = 2097152] = "tfAllowXRP"; + })(AccountSetTfFlags || (exports2.AccountSetTfFlags = AccountSetTfFlags = {})); + var MIN_TICK_SIZE = 3; + var MAX_TICK_SIZE = 15; + function validateAccountSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateOptionalField)(tx, "NFTokenMinter", common_1.isAccount); + if (tx.ClearFlag !== void 0) { + if (typeof tx.ClearFlag !== "number") { + throw new errors_1.ValidationError("AccountSet: invalid ClearFlag"); + } + if (!Object.values(AccountSetAsfFlags).includes(tx.ClearFlag)) { + throw new errors_1.ValidationError("AccountSet: invalid ClearFlag"); + } + } + if (tx.Domain !== void 0 && typeof tx.Domain !== "string") { + throw new errors_1.ValidationError("AccountSet: invalid Domain"); + } + if (tx.EmailHash !== void 0 && typeof tx.EmailHash !== "string") { + throw new errors_1.ValidationError("AccountSet: invalid EmailHash"); + } + if (tx.MessageKey !== void 0 && typeof tx.MessageKey !== "string") { + throw new errors_1.ValidationError("AccountSet: invalid MessageKey"); + } + if (tx.SetFlag !== void 0) { + if (typeof tx.SetFlag !== "number") { + throw new errors_1.ValidationError("AccountSet: invalid SetFlag"); + } + if (!Object.values(AccountSetAsfFlags).includes(tx.SetFlag)) { + throw new errors_1.ValidationError("AccountSet: invalid SetFlag"); + } + } + if (tx.TransferRate !== void 0 && typeof tx.TransferRate !== "number") { + throw new errors_1.ValidationError("AccountSet: invalid TransferRate"); + } + if (tx.TickSize !== void 0) { + if (typeof tx.TickSize !== "number") { + throw new errors_1.ValidationError("AccountSet: invalid TickSize"); + } + if (tx.TickSize !== 0 && (tx.TickSize < MIN_TICK_SIZE || tx.TickSize > MAX_TICK_SIZE)) { + throw new errors_1.ValidationError("AccountSet: invalid TickSize"); + } + } + } + exports2.validateAccountSet = validateAccountSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMClawback.js +var require_AMMClawback = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMClawback.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMClawback = exports2.AMMClawbackFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var AMMClawbackFlags; + (function(AMMClawbackFlags2) { + AMMClawbackFlags2[AMMClawbackFlags2["tfClawTwoAssets"] = 1] = "tfClawTwoAssets"; + })(AMMClawbackFlags || (exports2.AMMClawbackFlags = AMMClawbackFlags = {})); + function validateAMMClawback(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Holder", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "Asset", common_1.isIssuedCurrency); + const asset = tx.Asset; + if (tx.Holder === asset.issuer) { + throw new errors_1.ValidationError("AMMClawback: Holder and Asset.issuer must be distinct"); + } + if (tx.Account !== asset.issuer) { + throw new errors_1.ValidationError("AMMClawback: Account must be the same as Asset.issuer"); + } + (0, common_1.validateRequiredField)(tx, "Asset2", common_1.isIssuedCurrency); + (0, common_1.validateOptionalField)(tx, "Amount", common_1.isIssuedCurrencyAmount); + if (tx.Amount != null) { + if (tx.Amount.currency !== asset.currency) { + throw new errors_1.ValidationError("AMMClawback: Amount.currency must match Asset.currency"); + } + if (tx.Amount.issuer !== asset.issuer) { + throw new errors_1.ValidationError("AMMClawback: Amount.issuer must match Amount.issuer"); + } + } + } + exports2.validateAMMClawback = validateAMMClawback; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMDeposit.js +var require_AMMDeposit = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMDeposit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMDeposit = exports2.AMMDepositFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var AMMDepositFlags; + (function(AMMDepositFlags2) { + AMMDepositFlags2[AMMDepositFlags2["tfLPToken"] = 65536] = "tfLPToken"; + AMMDepositFlags2[AMMDepositFlags2["tfSingleAsset"] = 524288] = "tfSingleAsset"; + AMMDepositFlags2[AMMDepositFlags2["tfTwoAsset"] = 1048576] = "tfTwoAsset"; + AMMDepositFlags2[AMMDepositFlags2["tfOneAssetLPToken"] = 2097152] = "tfOneAssetLPToken"; + AMMDepositFlags2[AMMDepositFlags2["tfLimitLPToken"] = 4194304] = "tfLimitLPToken"; + AMMDepositFlags2[AMMDepositFlags2["tfTwoAssetIfEmpty"] = 8388608] = "tfTwoAssetIfEmpty"; + })(AMMDepositFlags || (exports2.AMMDepositFlags = AMMDepositFlags = {})); + function validateAMMDeposit(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Asset == null) { + throw new errors_1.ValidationError("AMMDeposit: missing field Asset"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset)) { + throw new errors_1.ValidationError("AMMDeposit: Asset must be a Currency"); + } + if (tx.Asset2 == null) { + throw new errors_1.ValidationError("AMMDeposit: missing field Asset2"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset2)) { + throw new errors_1.ValidationError("AMMDeposit: Asset2 must be a Currency"); + } + if (tx.Amount2 != null && tx.Amount == null) { + throw new errors_1.ValidationError("AMMDeposit: must set Amount with Amount2"); + } else if (tx.EPrice != null && tx.Amount == null) { + throw new errors_1.ValidationError("AMMDeposit: must set Amount with EPrice"); + } else if (tx.LPTokenOut == null && tx.Amount == null) { + throw new errors_1.ValidationError("AMMDeposit: must set at least LPTokenOut or Amount"); + } + if (tx.LPTokenOut != null && !(0, common_1.isIssuedCurrencyAmount)(tx.LPTokenOut)) { + throw new errors_1.ValidationError("AMMDeposit: LPTokenOut must be an IssuedCurrencyAmount"); + } + if (tx.Amount != null && !(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("AMMDeposit: Amount must be an Amount"); + } + if (tx.Amount2 != null && !(0, common_1.isAmount)(tx.Amount2)) { + throw new errors_1.ValidationError("AMMDeposit: Amount2 must be an Amount"); + } + if (tx.EPrice != null && !(0, common_1.isAmount)(tx.EPrice)) { + throw new errors_1.ValidationError("AMMDeposit: EPrice must be an Amount"); + } + } + exports2.validateAMMDeposit = validateAMMDeposit; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMWithdraw.js +var require_AMMWithdraw = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMWithdraw.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMWithdraw = exports2.AMMWithdrawFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var AMMWithdrawFlags; + (function(AMMWithdrawFlags2) { + AMMWithdrawFlags2[AMMWithdrawFlags2["tfLPToken"] = 65536] = "tfLPToken"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfWithdrawAll"] = 131072] = "tfWithdrawAll"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfOneAssetWithdrawAll"] = 262144] = "tfOneAssetWithdrawAll"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfSingleAsset"] = 524288] = "tfSingleAsset"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfTwoAsset"] = 1048576] = "tfTwoAsset"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfOneAssetLPToken"] = 2097152] = "tfOneAssetLPToken"; + AMMWithdrawFlags2[AMMWithdrawFlags2["tfLimitLPToken"] = 4194304] = "tfLimitLPToken"; + })(AMMWithdrawFlags || (exports2.AMMWithdrawFlags = AMMWithdrawFlags = {})); + function validateAMMWithdraw(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Asset == null) { + throw new errors_1.ValidationError("AMMWithdraw: missing field Asset"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset)) { + throw new errors_1.ValidationError("AMMWithdraw: Asset must be a Currency"); + } + if (tx.Asset2 == null) { + throw new errors_1.ValidationError("AMMWithdraw: missing field Asset2"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset2)) { + throw new errors_1.ValidationError("AMMWithdraw: Asset2 must be a Currency"); + } + if (tx.Amount2 != null && tx.Amount == null) { + throw new errors_1.ValidationError("AMMWithdraw: must set Amount with Amount2"); + } else if (tx.EPrice != null && tx.Amount == null) { + throw new errors_1.ValidationError("AMMWithdraw: must set Amount with EPrice"); + } + if (tx.LPTokenIn != null && !(0, common_1.isIssuedCurrencyAmount)(tx.LPTokenIn)) { + throw new errors_1.ValidationError("AMMWithdraw: LPTokenIn must be an IssuedCurrencyAmount"); + } + if (tx.Amount != null && !(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("AMMWithdraw: Amount must be an Amount"); + } + if (tx.Amount2 != null && !(0, common_1.isAmount)(tx.Amount2)) { + throw new errors_1.ValidationError("AMMWithdraw: Amount2 must be an Amount"); + } + if (tx.EPrice != null && !(0, common_1.isAmount)(tx.EPrice)) { + throw new errors_1.ValidationError("AMMWithdraw: EPrice must be an Amount"); + } + } + exports2.validateAMMWithdraw = validateAMMWithdraw; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/batch.js +var require_batch = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/batch.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateBatch = exports2.BatchFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var BatchFlags; + (function(BatchFlags2) { + BatchFlags2[BatchFlags2["tfAllOrNothing"] = 65536] = "tfAllOrNothing"; + BatchFlags2[BatchFlags2["tfOnlyOne"] = 131072] = "tfOnlyOne"; + BatchFlags2[BatchFlags2["tfUntilFailure"] = 262144] = "tfUntilFailure"; + BatchFlags2[BatchFlags2["tfIndependent"] = 524288] = "tfIndependent"; + })(BatchFlags || (exports2.BatchFlags = BatchFlags = {})); + function validateBatchInnerTransaction(tx, index) { + if (tx.TransactionType === "Batch") { + throw new errors_1.ValidationError(`Batch: RawTransactions[${index}] is a Batch transaction. Cannot nest Batch transactions.`); + } + if (!(0, utils_1.hasFlag)(tx, common_1.GlobalFlags.tfInnerBatchTxn, "tfInnerBatchTxn")) { + throw new errors_1.ValidationError(`Batch: RawTransactions[${index}] must contain the \`tfInnerBatchTxn\` flag.`); + } + (0, common_1.validateOptionalField)(tx, "Fee", (0, common_1.isValue)("0"), { + paramName: `RawTransactions[${index}].RawTransaction.Fee`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(tx, "SigningPubKey", (0, common_1.isValue)(""), { + paramName: `RawTransactions[${index}].RawTransaction.SigningPubKey`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(tx, "TxnSignature", common_1.isNull, { + paramName: `RawTransactions[${index}].RawTransaction.TxnSignature`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(tx, "Signers", common_1.isNull, { + paramName: `RawTransactions[${index}].RawTransaction.Signers`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(tx, "LastLedgerSequence", common_1.isNull, { + paramName: `RawTransactions[${index}].RawTransaction.LastLedgerSequence`, + txType: "Batch" + }); + } + function validateBatch(tx) { + var _a; + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "RawTransactions", common_1.isArray); + tx.RawTransactions.forEach((rawTxObj, index) => { + if (!(0, common_1.isRecord)(rawTxObj)) { + throw new errors_1.ValidationError(`Batch: RawTransactions[${index}] is not object.`); + } + (0, common_1.validateRequiredField)(rawTxObj, "RawTransaction", common_1.isRecord, { + paramName: `RawTransactions[${index}].RawTransaction`, + txType: "Batch" + }); + const rawTx = rawTxObj.RawTransaction; + validateBatchInnerTransaction(rawTx, index); + }); + (0, common_1.validateOptionalField)(tx, "BatchSigners", common_1.isArray); + (_a = tx.BatchSigners) === null || _a === void 0 ? void 0 : _a.forEach((signerObj, index) => { + if (!(0, common_1.isRecord)(signerObj)) { + throw new errors_1.ValidationError(`Batch: BatchSigners[${index}] is not object.`); + } + const signerRecord = signerObj; + (0, common_1.validateRequiredField)(signerRecord, "BatchSigner", common_1.isRecord, { + paramName: `BatchSigners[${index}].BatchSigner`, + txType: "Batch" + }); + const signer = signerRecord.BatchSigner; + (0, common_1.validateRequiredField)(signer, "Account", common_1.isString, { + paramName: `BatchSigners[${index}].BatchSigner.Account`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(signer, "SigningPubKey", common_1.isString, { + paramName: `BatchSigners[${index}].BatchSigner.SigningPubKey`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(signer, "TxnSignature", common_1.isString, { + paramName: `BatchSigners[${index}].BatchSigner.TxnSignature`, + txType: "Batch" + }); + (0, common_1.validateOptionalField)(signer, "Signers", common_1.isArray, { + paramName: `BatchSigners[${index}].BatchSigner.Signers`, + txType: "Batch" + }); + }); + } + exports2.validateBatch = validateBatch; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/MPTokenAuthorize.js +var require_MPTokenAuthorize = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/MPTokenAuthorize.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateMPTokenAuthorize = exports2.MPTokenAuthorizeFlags = void 0; + var common_1 = require_common4(); + var MPTokenAuthorizeFlags; + (function(MPTokenAuthorizeFlags2) { + MPTokenAuthorizeFlags2[MPTokenAuthorizeFlags2["tfMPTUnauthorize"] = 1] = "tfMPTUnauthorize"; + })(MPTokenAuthorizeFlags || (exports2.MPTokenAuthorizeFlags = MPTokenAuthorizeFlags = {})); + function validateMPTokenAuthorize(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "MPTokenIssuanceID", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Holder", common_1.isAccount); + } + exports2.validateMPTokenAuthorize = validateMPTokenAuthorize; + } +}); + +// node_modules/fast-json-stable-stringify/index.js +var require_fast_json_stable_stringify = __commonJS({ + "node_modules/fast-json-stable-stringify/index.js"(exports2, module2) { + "use strict"; + module2.exports = function(data, opts) { + if (!opts) opts = {}; + if (typeof opts === "function") opts = { cmp: opts }; + var cycles = typeof opts.cycles === "boolean" ? opts.cycles : false; + var cmp = opts.cmp && /* @__PURE__ */ function(f) { + return function(node) { + return function(a, b) { + var aobj = { key: a, value: node[a] }; + var bobj = { key: b, value: node[b] }; + return f(aobj, bobj); + }; + }; + }(opts.cmp); + var seen = []; + return function stringify(node) { + if (node && node.toJSON && typeof node.toJSON === "function") { + node = node.toJSON(); + } + if (node === void 0) return; + if (typeof node == "number") return isFinite(node) ? "" + node : "null"; + if (typeof node !== "object") return JSON.stringify(node); + var i, out; + if (Array.isArray(node)) { + out = "["; + for (i = 0; i < node.length; i++) { + if (i) out += ","; + out += stringify(node[i]) || "null"; + } + return out + "]"; + } + if (node === null) return "null"; + if (seen.indexOf(node) !== -1) { + if (cycles) return JSON.stringify("__cycle__"); + throw new TypeError("Converting circular structure to JSON"); + } + var seenIndex = seen.push(node) - 1; + var keys = Object.keys(node).sort(cmp && cmp(node)); + out = ""; + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = stringify(node[key]); + if (!value) continue; + if (out) out += ","; + out += JSON.stringify(key) + ":" + value; + } + seen.splice(seenIndex, 1); + return "{" + out + "}"; + }(data); + }; + } +}); + +// node_modules/xrpl/dist/npm/models/utils/mptokenMetadata.js +var require_mptokenMetadata = __commonJS({ + "node_modules/xrpl/dist/npm/models/utils/mptokenMetadata.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateMPTokenMetadata = exports2.decodeMPTokenMetadata = exports2.encodeMPTokenMetadata = exports2.MPT_META_WARNING_HEADER = exports2.MAX_MPT_META_BYTE_LENGTH = void 0; + var utils_1 = require_utils10(); + var fast_json_stable_stringify_1 = __importDefault2(require_fast_json_stable_stringify()); + var common_1 = require_common4(); + var _1 = require_utils13(); + exports2.MAX_MPT_META_BYTE_LENGTH = 1024; + exports2.MPT_META_WARNING_HEADER = "MPTokenMetadata is not properly formatted as JSON as per the XLS-89 standard. While adherence to this standard is not mandatory, such non-compliant MPToken's might not be discoverable by Explorers and Indexers in the XRPL ecosystem."; + var MPT_META_URI_FIELDS = [ + { + long: "uri", + compact: "u" + }, + { + long: "category", + compact: "c" + }, + { + long: "title", + compact: "t" + } + ]; + var MPT_META_ALL_FIELDS = [ + { + long: "ticker", + compact: "t", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) || !/^[A-Z0-9]{1,6}$/u.test(value)) { + return [ + `${this.long}/${this.compact}: should have uppercase letters (A-Z) and digits (0-9) only. Max 6 characters recommended.` + ]; + } + return []; + } + }, + { + long: "name", + compact: "n", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) || value.length === 0) { + return [`${this.long}/${this.compact}: should be a non-empty string.`]; + } + return []; + } + }, + { + long: "icon", + compact: "i", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) || value.length === 0) { + return [`${this.long}/${this.compact}: should be a non-empty string.`]; + } + return []; + } + }, + { + long: "asset_class", + compact: "ac", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + const MPT_META_ASSET_CLASSES = [ + "rwa", + "memes", + "wrapped", + "gaming", + "defi", + "other" + ]; + if (!(0, common_1.isString)(value) || !MPT_META_ASSET_CLASSES.includes(value)) { + return [ + `${this.long}/${this.compact}: should be one of ${MPT_META_ASSET_CLASSES.join(", ")}.` + ]; + } + return []; + } + }, + { + long: "issuer_name", + compact: "in", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) || value.length === 0) { + return [`${this.long}/${this.compact}: should be a non-empty string.`]; + } + return []; + } + }, + { + long: "desc", + compact: "d", + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + if (obj[this.long] === void 0 && obj[this.compact] === void 0) { + return []; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) || value.length === 0) { + return [`${this.long}/${this.compact}: should be a non-empty string.`]; + } + return []; + } + }, + { + long: "asset_subclass", + compact: "as", + required: false, + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if ((obj.asset_class === "rwa" || obj.ac === "rwa") && value === void 0) { + return [ + `${this.long}/${this.compact}: required when asset_class is rwa.` + ]; + } + if (obj[this.long] === void 0 && obj[this.compact] === void 0) { + return []; + } + const MPT_META_ASSET_SUB_CLASSES = [ + "stablecoin", + "commodity", + "real_estate", + "private_credit", + "equity", + "treasury", + "other" + ]; + if (!(0, common_1.isString)(value) || !MPT_META_ASSET_SUB_CLASSES.includes(value)) { + return [ + `${this.long}/${this.compact}: should be one of ${MPT_META_ASSET_SUB_CLASSES.join(", ")}.` + ]; + } + return []; + } + }, + { + long: "uris", + compact: "us", + required: false, + validate(obj) { + var _a, _b, _c, _d; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + if (obj[this.long] === void 0 && obj[this.compact] === void 0) { + return []; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!Array.isArray(value) || value.length === 0) { + return [`${this.long}/${this.compact}: should be a non-empty array.`]; + } + const messages = []; + for (const uriObj of value) { + if (!(0, common_1.isRecord)(uriObj) || Object.keys(uriObj).length !== MPT_META_URI_FIELDS.length) { + messages.push(`${this.long}/${this.compact}: should be an array of objects each with uri/u, category/c, and title/t properties.`); + continue; + } + for (const uriField of MPT_META_URI_FIELDS) { + if (uriObj[uriField.long] != null && uriObj[uriField.compact] != null) { + messages.push(`${this.long}/${this.compact}: should not have both ${uriField.long} and ${uriField.compact} fields.`); + break; + } + } + const uri = (_b = uriObj.uri) !== null && _b !== void 0 ? _b : uriObj.u; + const category = (_c = uriObj.category) !== null && _c !== void 0 ? _c : uriObj.c; + const title = (_d = uriObj.title) !== null && _d !== void 0 ? _d : uriObj.t; + if (!(0, common_1.isString)(uri) || !(0, common_1.isString)(category) || !(0, common_1.isString)(title)) { + messages.push(`${this.long}/${this.compact}: should be an array of objects each with uri/u, category/c, and title/t properties.`); + } + } + return messages; + } + }, + { + long: "additional_info", + compact: "ai", + required: false, + validate(obj) { + var _a; + if (obj[this.long] != null && obj[this.compact] != null) { + return [ + `${this.long}/${this.compact}: both long and compact forms present. expected only one.` + ]; + } + if (obj[this.long] === void 0 && obj[this.compact] === void 0) { + return []; + } + const value = (_a = obj[this.long]) !== null && _a !== void 0 ? _a : obj[this.compact]; + if (!(0, common_1.isString)(value) && !(0, common_1.isRecord)(value)) { + return [ + `${this.long}/${this.compact}: should be a string or JSON object.` + ]; + } + return []; + } + } + ]; + function shortenKeys(input, mappings) { + const output = {}; + for (const [key, value] of Object.entries(input)) { + const mapping = mappings.find(({ long, compact }) => long === key || compact === key); + if (mapping === void 0) { + output[key] = value; + continue; + } + if (input[mapping.long] !== void 0 && input[mapping.compact] !== void 0) { + output[key] = value; + continue; + } + output[mapping.compact] = value; + } + return output; + } + function encodeMPTokenMetadata(mptokenMetadata) { + let input = mptokenMetadata; + if (!(0, common_1.isRecord)(input)) { + throw new Error("MPTokenMetadata must be JSON object."); + } + input = shortenKeys(input, MPT_META_ALL_FIELDS); + if (Array.isArray(input.uris)) { + input.uris = input.uris.map((uri) => { + if ((0, common_1.isRecord)(uri)) { + return shortenKeys(uri, MPT_META_URI_FIELDS); + } + return uri; + }); + } + if (Array.isArray(input.us)) { + input.us = input.us.map((uri) => { + if ((0, common_1.isRecord)(uri)) { + return shortenKeys(uri, MPT_META_URI_FIELDS); + } + return uri; + }); + } + return (0, utils_1.stringToHex)((0, fast_json_stable_stringify_1.default)(input)).toUpperCase(); + } + exports2.encodeMPTokenMetadata = encodeMPTokenMetadata; + function expandKeys(input, mappings) { + const output = {}; + for (const [key, value] of Object.entries(input)) { + const mapping = mappings.find(({ long, compact }) => long === key || compact === key); + if (mapping === void 0) { + output[key] = value; + continue; + } + if (input[mapping.long] !== void 0 && input[mapping.compact] !== void 0) { + output[key] = value; + continue; + } + output[mapping.long] = value; + } + return output; + } + function decodeMPTokenMetadata(input) { + if (!(0, _1.isHex)(input)) { + throw new Error("MPTokenMetadata must be in hex format."); + } + let jsonMetaData; + try { + jsonMetaData = JSON.parse((0, utils_1.hexToString)(input)); + } catch (err2) { + throw new Error(`MPTokenMetadata is not properly formatted as JSON - ${String(err2)}`); + } + if (!(0, common_1.isRecord)(jsonMetaData)) { + throw new Error("MPTokenMetadata must be a JSON object."); + } + let output = jsonMetaData; + output = expandKeys(output, MPT_META_ALL_FIELDS); + if (Array.isArray(output.uris)) { + output.uris = output.uris.map((uri) => { + if ((0, common_1.isRecord)(uri)) { + return expandKeys(uri, MPT_META_URI_FIELDS); + } + return uri; + }); + } + if (Array.isArray(output.us)) { + output.us = output.us.map((uri) => { + if ((0, common_1.isRecord)(uri)) { + return expandKeys(uri, MPT_META_URI_FIELDS); + } + return uri; + }); + } + return output; + } + exports2.decodeMPTokenMetadata = decodeMPTokenMetadata; + function validateMPTokenMetadata(input) { + const validationMessages = []; + if (!(0, _1.isHex)(input)) { + validationMessages.push(`MPTokenMetadata must be in hex format.`); + return validationMessages; + } + if (input.length / 2 > exports2.MAX_MPT_META_BYTE_LENGTH) { + validationMessages.push(`MPTokenMetadata must be max ${exports2.MAX_MPT_META_BYTE_LENGTH} bytes.`); + return validationMessages; + } + let jsonMetaData; + try { + jsonMetaData = JSON.parse((0, utils_1.hexToString)(input)); + } catch (err2) { + validationMessages.push(`MPTokenMetadata is not properly formatted as JSON - ${String(err2)}`); + return validationMessages; + } + if (!(0, common_1.isRecord)(jsonMetaData)) { + validationMessages.push("MPTokenMetadata is not properly formatted JSON object as per XLS-89."); + return validationMessages; + } + if (Object.keys(jsonMetaData).length > MPT_META_ALL_FIELDS.length) { + validationMessages.push(`MPTokenMetadata must not contain more than ${MPT_META_ALL_FIELDS.length} top-level fields (found ${Object.keys(jsonMetaData).length}).`); + } + const obj = jsonMetaData; + for (const property of MPT_META_ALL_FIELDS) { + validationMessages.push(...property.validate(obj)); + } + return validationMessages; + } + exports2.validateMPTokenMetadata = validateMPTokenMetadata; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceCreate.js +var require_MPTokenIssuanceCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateMPTokenIssuanceCreate = exports2.MPTokenIssuanceCreateFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var mptokenMetadata_1 = require_mptokenMetadata(); + var common_1 = require_common4(); + var MAX_AMT = "9223372036854775807"; + var MAX_TRANSFER_FEE = 5e4; + var MPTokenIssuanceCreateFlags; + (function(MPTokenIssuanceCreateFlags2) { + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTCanLock"] = 2] = "tfMPTCanLock"; + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTRequireAuth"] = 4] = "tfMPTRequireAuth"; + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTCanEscrow"] = 8] = "tfMPTCanEscrow"; + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTCanTrade"] = 16] = "tfMPTCanTrade"; + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTCanTransfer"] = 32] = "tfMPTCanTransfer"; + MPTokenIssuanceCreateFlags2[MPTokenIssuanceCreateFlags2["tfMPTCanClawback"] = 64] = "tfMPTCanClawback"; + })(MPTokenIssuanceCreateFlags || (exports2.MPTokenIssuanceCreateFlags = MPTokenIssuanceCreateFlags = {})); + function validateMPTokenIssuanceCreate(tx) { + var _a, _b; + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateOptionalField)(tx, "MaximumAmount", common_1.isString); + (0, common_1.validateOptionalField)(tx, "MPTokenMetadata", common_1.isString); + (0, common_1.validateOptionalField)(tx, "TransferFee", common_1.isNumber); + (0, common_1.validateOptionalField)(tx, "AssetScale", common_1.isNumber); + if (typeof tx.MPTokenMetadata === "string" && (!(0, utils_1.isHex)(tx.MPTokenMetadata) || tx.MPTokenMetadata.length / 2 > mptokenMetadata_1.MAX_MPT_META_BYTE_LENGTH)) { + throw new errors_1.ValidationError(`MPTokenIssuanceCreate: MPTokenMetadata (hex format) must be non-empty and no more than ${mptokenMetadata_1.MAX_MPT_META_BYTE_LENGTH} bytes.`); + } + if (typeof tx.MaximumAmount === "string") { + if (!utils_1.INTEGER_SANITY_CHECK.exec(tx.MaximumAmount)) { + throw new errors_1.ValidationError("MPTokenIssuanceCreate: Invalid MaximumAmount"); + } else if (BigInt(tx.MaximumAmount) > BigInt(MAX_AMT) || BigInt(tx.MaximumAmount) < BigInt(`0`)) { + throw new errors_1.ValidationError("MPTokenIssuanceCreate: MaximumAmount out of range"); + } + } + if (typeof tx.TransferFee === "number") { + const flags = (_a = tx.Flags) !== null && _a !== void 0 ? _a : 0; + const isTfMPTCanTransfer = typeof flags === "number" ? (0, utils_1.isFlagEnabled)(flags, MPTokenIssuanceCreateFlags.tfMPTCanTransfer) : (_b = flags.tfMPTCanTransfer) !== null && _b !== void 0 ? _b : false; + if (tx.TransferFee < 0 || tx.TransferFee > MAX_TRANSFER_FEE) { + throw new errors_1.ValidationError(`MPTokenIssuanceCreate: TransferFee must be between 0 and ${MAX_TRANSFER_FEE}`); + } + if (tx.TransferFee && !isTfMPTCanTransfer) { + throw new errors_1.ValidationError("MPTokenIssuanceCreate: TransferFee cannot be provided without enabling tfMPTCanTransfer flag"); + } + } + if (tx.MPTokenMetadata != null) { + const validationMessages = (0, mptokenMetadata_1.validateMPTokenMetadata)(tx.MPTokenMetadata); + if (validationMessages.length > 0) { + const message = [ + mptokenMetadata_1.MPT_META_WARNING_HEADER, + ...validationMessages.map((msg) => `- ${msg}`) + ].join("\n"); + console.warn(message); + } + } + } + exports2.validateMPTokenIssuanceCreate = validateMPTokenIssuanceCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceSet.js +var require_MPTokenIssuanceSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateMPTokenIssuanceSet = exports2.MPTokenIssuanceSetFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var MPTokenIssuanceSetFlags; + (function(MPTokenIssuanceSetFlags2) { + MPTokenIssuanceSetFlags2[MPTokenIssuanceSetFlags2["tfMPTLock"] = 1] = "tfMPTLock"; + MPTokenIssuanceSetFlags2[MPTokenIssuanceSetFlags2["tfMPTUnlock"] = 2] = "tfMPTUnlock"; + })(MPTokenIssuanceSetFlags || (exports2.MPTokenIssuanceSetFlags = MPTokenIssuanceSetFlags = {})); + function validateMPTokenIssuanceSet(tx) { + var _a, _b, _c; + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "MPTokenIssuanceID", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Holder", common_1.isAccount); + const flags = (_a = tx.Flags) !== null && _a !== void 0 ? _a : 0; + const isTfMPTLock = typeof flags === "number" ? (0, utils_1.isFlagEnabled)(flags, MPTokenIssuanceSetFlags.tfMPTLock) : (_b = flags.tfMPTLock) !== null && _b !== void 0 ? _b : false; + const isTfMPTUnlock = typeof flags === "number" ? (0, utils_1.isFlagEnabled)(flags, MPTokenIssuanceSetFlags.tfMPTUnlock) : (_c = flags.tfMPTUnlock) !== null && _c !== void 0 ? _c : false; + if (isTfMPTLock && isTfMPTUnlock) { + throw new errors_1.ValidationError("MPTokenIssuanceSet: flag conflict"); + } + } + exports2.validateMPTokenIssuanceSet = validateMPTokenIssuanceSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenCreateOffer.js +var require_NFTokenCreateOffer = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenCreateOffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenCreateOffer = exports2.NFTokenCreateOfferFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var NFTokenCreateOfferFlags; + (function(NFTokenCreateOfferFlags2) { + NFTokenCreateOfferFlags2[NFTokenCreateOfferFlags2["tfSellNFToken"] = 1] = "tfSellNFToken"; + })(NFTokenCreateOfferFlags || (exports2.NFTokenCreateOfferFlags = NFTokenCreateOfferFlags = {})); + function validateNFTokenSellOfferCases(tx) { + if (tx.Owner != null) { + throw new errors_1.ValidationError("NFTokenCreateOffer: Owner must not be present for sell offers"); + } + } + function validateNFTokenBuyOfferCases(tx) { + if (tx.Owner == null) { + throw new errors_1.ValidationError("NFTokenCreateOffer: Owner must be present for buy offers"); + } + if ((0, common_1.parseAmountValue)(tx.Amount) <= 0) { + throw new errors_1.ValidationError("NFTokenCreateOffer: Amount must be greater than 0 for buy offers"); + } + } + function validateNFTokenCreateOffer(tx) { + var _a, _b; + (0, common_1.validateBaseTransaction)(tx); + if (tx.Account === tx.Owner) { + throw new errors_1.ValidationError("NFTokenCreateOffer: Owner and Account must not be equal"); + } + if (tx.Account === tx.Destination) { + throw new errors_1.ValidationError("NFTokenCreateOffer: Destination and Account must not be equal"); + } + (0, common_1.validateOptionalField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "Owner", common_1.isAccount); + if (tx.NFTokenID == null) { + throw new errors_1.ValidationError("NFTokenCreateOffer: missing field NFTokenID"); + } + if (!(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("NFTokenCreateOffer: invalid Amount"); + } + const flags = (_a = tx.Flags) !== null && _a !== void 0 ? _a : 0; + const isTfSellNFToken = typeof flags === "number" ? (0, utils_1.isFlagEnabled)(flags, NFTokenCreateOfferFlags.tfSellNFToken) : (_b = flags.tfSellNFToken) !== null && _b !== void 0 ? _b : false; + if (isTfSellNFToken) { + validateNFTokenSellOfferCases(tx); + } else { + validateNFTokenBuyOfferCases(tx); + } + } + exports2.validateNFTokenCreateOffer = validateNFTokenCreateOffer; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenMint.js +var require_NFTokenMint = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenMint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenMint = exports2.NFTokenMintFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var NFTokenMintFlags; + (function(NFTokenMintFlags2) { + NFTokenMintFlags2[NFTokenMintFlags2["tfBurnable"] = 1] = "tfBurnable"; + NFTokenMintFlags2[NFTokenMintFlags2["tfOnlyXRP"] = 2] = "tfOnlyXRP"; + NFTokenMintFlags2[NFTokenMintFlags2["tfTrustLine"] = 4] = "tfTrustLine"; + NFTokenMintFlags2[NFTokenMintFlags2["tfTransferable"] = 8] = "tfTransferable"; + NFTokenMintFlags2[NFTokenMintFlags2["tfMutable"] = 16] = "tfMutable"; + })(NFTokenMintFlags || (exports2.NFTokenMintFlags = NFTokenMintFlags = {})); + function validateNFTokenMint(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Account === tx.Issuer) { + throw new errors_1.ValidationError("NFTokenMint: Issuer must not be equal to Account"); + } + (0, common_1.validateOptionalField)(tx, "Issuer", common_1.isAccount); + if (typeof tx.URI === "string" && tx.URI === "") { + throw new errors_1.ValidationError("NFTokenMint: URI must not be empty string"); + } + if (typeof tx.URI === "string" && !(0, utils_1.isHex)(tx.URI)) { + throw new errors_1.ValidationError("NFTokenMint: URI must be in hex format"); + } + if (tx.NFTokenTaxon == null) { + throw new errors_1.ValidationError("NFTokenMint: missing field NFTokenTaxon"); + } + if (tx.Amount == null) { + if (tx.Expiration != null || tx.Destination != null) { + throw new errors_1.ValidationError("NFTokenMint: Amount is required when Expiration or Destination is present"); + } + } + (0, common_1.validateOptionalField)(tx, "Amount", common_1.isAmount); + (0, common_1.validateOptionalField)(tx, "Expiration", common_1.isNumber); + (0, common_1.validateOptionalField)(tx, "Destination", common_1.isAccount); + } + exports2.validateNFTokenMint = validateNFTokenMint; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/offerCreate.js +var require_offerCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/offerCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateOfferCreate = exports2.OfferCreateFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var OfferCreateFlags; + (function(OfferCreateFlags2) { + OfferCreateFlags2[OfferCreateFlags2["tfPassive"] = 65536] = "tfPassive"; + OfferCreateFlags2[OfferCreateFlags2["tfImmediateOrCancel"] = 131072] = "tfImmediateOrCancel"; + OfferCreateFlags2[OfferCreateFlags2["tfFillOrKill"] = 262144] = "tfFillOrKill"; + OfferCreateFlags2[OfferCreateFlags2["tfSell"] = 524288] = "tfSell"; + OfferCreateFlags2[OfferCreateFlags2["tfHybrid"] = 1048576] = "tfHybrid"; + })(OfferCreateFlags || (exports2.OfferCreateFlags = OfferCreateFlags = {})); + function validateOfferCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.TakerGets === void 0) { + throw new errors_1.ValidationError("OfferCreate: missing field TakerGets"); + } + if (tx.TakerPays === void 0) { + throw new errors_1.ValidationError("OfferCreate: missing field TakerPays"); + } + if (typeof tx.TakerGets !== "string" && !(0, common_1.isAmount)(tx.TakerGets)) { + throw new errors_1.ValidationError("OfferCreate: invalid TakerGets"); + } + if (typeof tx.TakerPays !== "string" && !(0, common_1.isAmount)(tx.TakerPays)) { + throw new errors_1.ValidationError("OfferCreate: invalid TakerPays"); + } + if (tx.Expiration !== void 0 && typeof tx.Expiration !== "number") { + throw new errors_1.ValidationError("OfferCreate: invalid Expiration"); + } + if (tx.OfferSequence !== void 0 && typeof tx.OfferSequence !== "number") { + throw new errors_1.ValidationError("OfferCreate: invalid OfferSequence"); + } + (0, common_1.validateOptionalField)(tx, "DomainID", common_1.isDomainID, { + txType: "OfferCreate", + paramName: "DomainID" + }); + if (tx.DomainID == null && (0, utils_1.hasFlag)(tx, OfferCreateFlags.tfHybrid, "tfHybrid")) { + throw new errors_1.ValidationError("OfferCreate: tfHybrid flag cannot be set if DomainID is not present"); + } + } + exports2.validateOfferCreate = validateOfferCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/payment.js +var require_payment = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/payment.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePayment = exports2.PaymentFlags = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var PaymentFlags; + (function(PaymentFlags2) { + PaymentFlags2[PaymentFlags2["tfNoRippleDirect"] = 65536] = "tfNoRippleDirect"; + PaymentFlags2[PaymentFlags2["tfPartialPayment"] = 131072] = "tfPartialPayment"; + PaymentFlags2[PaymentFlags2["tfLimitQuality"] = 262144] = "tfLimitQuality"; + })(PaymentFlags || (exports2.PaymentFlags = PaymentFlags = {})); + function validatePayment(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Amount === void 0) { + throw new errors_1.ValidationError("PaymentTransaction: missing field Amount"); + } + if (!(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("PaymentTransaction: invalid Amount"); + } + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + (0, common_1.validateCredentialsList)(tx.CredentialIDs, tx.TransactionType, true, common_1.MAX_AUTHORIZED_CREDENTIALS); + if (tx.InvoiceID !== void 0 && typeof tx.InvoiceID !== "string") { + throw new errors_1.ValidationError("PaymentTransaction: InvoiceID must be a string"); + } + (0, common_1.validateOptionalField)(tx, "DomainID", common_1.isDomainID, { + txType: "PaymentTransaction", + paramName: "DomainID" + }); + if (tx.Paths !== void 0 && !isPaths(tx.Paths)) { + throw new errors_1.ValidationError("PaymentTransaction: invalid Paths"); + } + if (tx.SendMax !== void 0 && !(0, common_1.isAmount)(tx.SendMax)) { + throw new errors_1.ValidationError("PaymentTransaction: invalid SendMax"); + } + checkPartialPayment(tx); + } + exports2.validatePayment = validatePayment; + function checkPartialPayment(tx) { + var _a; + if (tx.DeliverMin != null) { + if (tx.Flags == null) { + throw new errors_1.ValidationError("PaymentTransaction: tfPartialPayment flag required with DeliverMin"); + } + const flags = tx.Flags; + const isTfPartialPayment = typeof flags === "number" ? (0, utils_1.isFlagEnabled)(flags, PaymentFlags.tfPartialPayment) : (_a = flags.tfPartialPayment) !== null && _a !== void 0 ? _a : false; + if (!isTfPartialPayment) { + throw new errors_1.ValidationError("PaymentTransaction: tfPartialPayment flag required with DeliverMin"); + } + if (!(0, common_1.isAmount)(tx.DeliverMin)) { + throw new errors_1.ValidationError("PaymentTransaction: invalid DeliverMin"); + } + } + } + function isPathStep(pathStep) { + if (pathStep.account !== void 0 && typeof pathStep.account !== "string") { + return false; + } + if (pathStep.currency !== void 0 && typeof pathStep.currency !== "string") { + return false; + } + if (pathStep.issuer !== void 0 && typeof pathStep.issuer !== "string") { + return false; + } + if (pathStep.account !== void 0 && pathStep.currency === void 0 && pathStep.issuer === void 0) { + return true; + } + if (pathStep.currency !== void 0 || pathStep.issuer !== void 0) { + return true; + } + return false; + } + function isPath(path2) { + if (!Array.isArray(path2) || path2.length === 0) { + return false; + } + for (const pathStep of path2) { + if (!isPathStep(pathStep)) { + return false; + } + } + return true; + } + function isPaths(paths) { + if (!(0, common_1.isArray)(paths) || paths.length === 0) { + return false; + } + for (const path2 of paths) { + if (!(0, common_1.isArray)(path2) || path2.length === 0) { + return false; + } + if (!isPath(path2)) { + return false; + } + } + return true; + } + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/paymentChannelClaim.js +var require_paymentChannelClaim = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/paymentChannelClaim.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePaymentChannelClaim = exports2.PaymentChannelClaimFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var PaymentChannelClaimFlags; + (function(PaymentChannelClaimFlags2) { + PaymentChannelClaimFlags2[PaymentChannelClaimFlags2["tfRenew"] = 65536] = "tfRenew"; + PaymentChannelClaimFlags2[PaymentChannelClaimFlags2["tfClose"] = 131072] = "tfClose"; + })(PaymentChannelClaimFlags || (exports2.PaymentChannelClaimFlags = PaymentChannelClaimFlags = {})); + function validatePaymentChannelClaim(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateCredentialsList)(tx.CredentialIDs, tx.TransactionType, true, common_1.MAX_AUTHORIZED_CREDENTIALS); + if (tx.Channel === void 0) { + throw new errors_1.ValidationError("PaymentChannelClaim: missing Channel"); + } + if (typeof tx.Channel !== "string") { + throw new errors_1.ValidationError("PaymentChannelClaim: Channel must be a string"); + } + if (tx.Balance !== void 0 && typeof tx.Balance !== "string") { + throw new errors_1.ValidationError("PaymentChannelClaim: Balance must be a string"); + } + if (tx.Amount !== void 0 && typeof tx.Amount !== "string") { + throw new errors_1.ValidationError("PaymentChannelClaim: Amount must be a string"); + } + if (tx.Signature !== void 0 && typeof tx.Signature !== "string") { + throw new errors_1.ValidationError("PaymentChannelClaim: Signature must be a string"); + } + if (tx.PublicKey !== void 0 && typeof tx.PublicKey !== "string") { + throw new errors_1.ValidationError("PaymentChannelClaim: PublicKey must be a string"); + } + } + exports2.validatePaymentChannelClaim = validatePaymentChannelClaim; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/trustSet.js +var require_trustSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/trustSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateTrustSet = exports2.TrustSetFlags = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var TrustSetFlags; + (function(TrustSetFlags2) { + TrustSetFlags2[TrustSetFlags2["tfSetfAuth"] = 65536] = "tfSetfAuth"; + TrustSetFlags2[TrustSetFlags2["tfSetNoRipple"] = 131072] = "tfSetNoRipple"; + TrustSetFlags2[TrustSetFlags2["tfClearNoRipple"] = 262144] = "tfClearNoRipple"; + TrustSetFlags2[TrustSetFlags2["tfSetFreeze"] = 1048576] = "tfSetFreeze"; + TrustSetFlags2[TrustSetFlags2["tfClearFreeze"] = 2097152] = "tfClearFreeze"; + TrustSetFlags2[TrustSetFlags2["tfSetDeepFreeze"] = 4194304] = "tfSetDeepFreeze"; + TrustSetFlags2[TrustSetFlags2["tfClearDeepFreeze"] = 8388608] = "tfClearDeepFreeze"; + })(TrustSetFlags || (exports2.TrustSetFlags = TrustSetFlags = {})); + function validateTrustSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + const { LimitAmount, QualityIn, QualityOut } = tx; + if (LimitAmount === void 0) { + throw new errors_1.ValidationError("TrustSet: missing field LimitAmount"); + } + if (!(0, common_1.isAmount)(LimitAmount)) { + throw new errors_1.ValidationError("TrustSet: invalid LimitAmount"); + } + if (QualityIn !== void 0 && typeof QualityIn !== "number") { + throw new errors_1.ValidationError("TrustSet: QualityIn must be a number"); + } + if (QualityOut !== void 0 && typeof QualityOut !== "number") { + throw new errors_1.ValidationError("TrustSet: QualityOut must be a number"); + } + } + exports2.validateTrustSet = validateTrustSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultCreate.js +var require_vaultCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultCreate = exports2.VaultCreateFlags = exports2.VaultWithdrawalPolicy = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var mptokenMetadata_1 = require_mptokenMetadata(); + var common_1 = require_common4(); + var VaultWithdrawalPolicy; + (function(VaultWithdrawalPolicy2) { + VaultWithdrawalPolicy2[VaultWithdrawalPolicy2["vaultStrategyFirstComeFirstServe"] = 1] = "vaultStrategyFirstComeFirstServe"; + })(VaultWithdrawalPolicy || (exports2.VaultWithdrawalPolicy = VaultWithdrawalPolicy = {})); + var VaultCreateFlags; + (function(VaultCreateFlags2) { + VaultCreateFlags2[VaultCreateFlags2["tfVaultPrivate"] = 65536] = "tfVaultPrivate"; + VaultCreateFlags2[VaultCreateFlags2["tfVaultShareNonTransferable"] = 131072] = "tfVaultShareNonTransferable"; + })(VaultCreateFlags || (exports2.VaultCreateFlags = VaultCreateFlags = {})); + function validateVaultCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Asset", common_1.isCurrency); + (0, common_1.validateOptionalField)(tx, "Data", common_1.isString); + (0, common_1.validateOptionalField)(tx, "AssetsMaximum", common_1.isXRPLNumber); + (0, common_1.validateOptionalField)(tx, "MPTokenMetadata", common_1.isString); + (0, common_1.validateOptionalField)(tx, "WithdrawalPolicy", common_1.isNumber); + (0, common_1.validateOptionalField)(tx, "DomainID", common_1.isString); + if (tx.Data !== void 0) { + const dataHex = tx.Data; + if (!(0, utils_1.isHex)(dataHex)) { + throw new errors_1.ValidationError("VaultCreate: Data must be a valid hex string"); + } + const dataByteLength = dataHex.length / 2; + if (dataByteLength > common_1.VAULT_DATA_MAX_BYTE_LENGTH) { + throw new errors_1.ValidationError(`VaultCreate: Data exceeds ${common_1.VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`); + } + } + if (tx.MPTokenMetadata !== void 0) { + const metaHex = tx.MPTokenMetadata; + if (!(0, utils_1.isHex)(metaHex)) { + throw new errors_1.ValidationError("VaultCreate: MPTokenMetadata must be a valid non-empty hex string"); + } + const metaByteLength = metaHex.length / 2; + if (metaByteLength > mptokenMetadata_1.MAX_MPT_META_BYTE_LENGTH) { + throw new errors_1.ValidationError(`VaultCreate: MPTokenMetadata exceeds ${mptokenMetadata_1.MAX_MPT_META_BYTE_LENGTH} bytes (actual: ${metaByteLength})`); + } + } + if (tx.DomainID !== void 0 && !(0, utils_1.hasFlag)(tx, VaultCreateFlags.tfVaultPrivate, "tfVaultPrivate")) { + throw new errors_1.ValidationError("VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set."); + } + if (tx.MPTokenMetadata != null) { + const validationMessages = (0, mptokenMetadata_1.validateMPTokenMetadata)(tx.MPTokenMetadata); + if (validationMessages.length > 0) { + const message = [ + mptokenMetadata_1.MPT_META_WARNING_HEADER, + ...validationMessages.map((msg) => `- ${msg}`) + ].join("\n"); + console.warn(message); + } + } + } + exports2.validateVaultCreate = validateVaultCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainModifyBridge.js +var require_XChainModifyBridge = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainModifyBridge.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainModifyBridge = exports2.XChainModifyBridgeFlags = void 0; + var common_1 = require_common4(); + var XChainModifyBridgeFlags; + (function(XChainModifyBridgeFlags2) { + XChainModifyBridgeFlags2[XChainModifyBridgeFlags2["tfClearAccountCreateAmount"] = 65536] = "tfClearAccountCreateAmount"; + })(XChainModifyBridgeFlags || (exports2.XChainModifyBridgeFlags = XChainModifyBridgeFlags = {})); + function validateXChainModifyBridge(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateOptionalField)(tx, "SignatureReward", common_1.isAmount); + (0, common_1.validateOptionalField)(tx, "MinAccountCreateAmount", common_1.isAmount); + } + exports2.validateXChainModifyBridge = validateXChainModifyBridge; + } +}); + +// node_modules/xrpl/dist/npm/models/utils/flags.js +var require_flags = __commonJS({ + "node_modules/xrpl/dist/npm/models/utils/flags.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.parseTransactionFlags = exports2.convertTxFlagsToNumber = exports2.setTransactionFlagsToNumber = exports2.parseAccountRootFlags = void 0; + var errors_1 = require_errors8(); + var AccountRoot_1 = require_AccountRoot(); + var accountSet_1 = require_accountSet(); + var AMMClawback_1 = require_AMMClawback(); + var AMMDeposit_1 = require_AMMDeposit(); + var AMMWithdraw_1 = require_AMMWithdraw(); + var batch_1 = require_batch(); + var common_1 = require_common4(); + var MPTokenAuthorize_1 = require_MPTokenAuthorize(); + var MPTokenIssuanceCreate_1 = require_MPTokenIssuanceCreate(); + var MPTokenIssuanceSet_1 = require_MPTokenIssuanceSet(); + var NFTokenCreateOffer_1 = require_NFTokenCreateOffer(); + var NFTokenMint_1 = require_NFTokenMint(); + var offerCreate_1 = require_offerCreate(); + var payment_1 = require_payment(); + var paymentChannelClaim_1 = require_paymentChannelClaim(); + var trustSet_1 = require_trustSet(); + var vaultCreate_1 = require_vaultCreate(); + var XChainModifyBridge_1 = require_XChainModifyBridge(); + var _1 = require_utils13(); + function parseAccountRootFlags(flags) { + const flagsInterface = {}; + Object.values(AccountRoot_1.AccountRootFlags).forEach((flag) => { + if (typeof flag === "string" && (0, _1.isFlagEnabled)(flags, AccountRoot_1.AccountRootFlags[flag])) { + flagsInterface[flag] = true; + } + }); + return flagsInterface; + } + exports2.parseAccountRootFlags = parseAccountRootFlags; + var txToFlag = { + AccountSet: accountSet_1.AccountSetTfFlags, + AMMClawback: AMMClawback_1.AMMClawbackFlags, + AMMDeposit: AMMDeposit_1.AMMDepositFlags, + AMMWithdraw: AMMWithdraw_1.AMMWithdrawFlags, + Batch: batch_1.BatchFlags, + MPTokenAuthorize: MPTokenAuthorize_1.MPTokenAuthorizeFlags, + MPTokenIssuanceCreate: MPTokenIssuanceCreate_1.MPTokenIssuanceCreateFlags, + MPTokenIssuanceSet: MPTokenIssuanceSet_1.MPTokenIssuanceSetFlags, + NFTokenCreateOffer: NFTokenCreateOffer_1.NFTokenCreateOfferFlags, + NFTokenMint: NFTokenMint_1.NFTokenMintFlags, + OfferCreate: offerCreate_1.OfferCreateFlags, + PaymentChannelClaim: paymentChannelClaim_1.PaymentChannelClaimFlags, + Payment: payment_1.PaymentFlags, + TrustSet: trustSet_1.TrustSetFlags, + VaultCreate: vaultCreate_1.VaultCreateFlags, + XChainModifyBridge: XChainModifyBridge_1.XChainModifyBridgeFlags + }; + function isTxToFlagKey(transactionType) { + return transactionType in txToFlag; + } + function setTransactionFlagsToNumber(tx) { + console.warn("This function is deprecated. Use convertTxFlagsToNumber() instead and use the returned value to modify the Transaction.Flags from the caller."); + if (tx.Flags) { + tx.Flags = convertTxFlagsToNumber(tx); + } + } + exports2.setTransactionFlagsToNumber = setTransactionFlagsToNumber; + function convertTxFlagsToNumber(tx) { + const txFlags = tx.Flags; + if (txFlags == null) { + return 0; + } + if (typeof txFlags === "number") { + return txFlags; + } + if (isTxToFlagKey(tx.TransactionType)) { + const flagEnum = txToFlag[tx.TransactionType]; + return Object.keys(txFlags).reduce((resultFlags, flag) => { + var _a; + if (flagEnum[flag] == null && common_1.GlobalFlags[flag] == null) { + throw new errors_1.ValidationError(`Invalid flag ${flag}.`); + } + return txFlags[flag] ? resultFlags | ((_a = flagEnum[flag]) !== null && _a !== void 0 ? _a : common_1.GlobalFlags[flag]) : resultFlags; + }, 0); + } + return Object.keys(txFlags).reduce((resultFlags, flag) => { + if (common_1.GlobalFlags[flag] == null) { + throw new errors_1.ValidationError(`Invalid flag ${flag}. Valid flags are ${JSON.stringify(common_1.GlobalFlags)}`); + } + return txFlags[flag] ? resultFlags | common_1.GlobalFlags[flag] : resultFlags; + }, 0); + } + exports2.convertTxFlagsToNumber = convertTxFlagsToNumber; + function parseTransactionFlags(tx) { + const flags = convertTxFlagsToNumber(tx); + if (flags === 0) { + return {}; + } + const booleanFlagMap = {}; + if (isTxToFlagKey(tx.TransactionType)) { + const transactionTypeFlags = txToFlag[tx.TransactionType]; + Object.values(transactionTypeFlags).forEach((flag) => { + if (typeof flag === "string" && (0, _1.isFlagEnabled)(flags, transactionTypeFlags[flag])) { + booleanFlagMap[flag] = true; + } + }); + } + Object.values(common_1.GlobalFlags).forEach((flag) => { + if (typeof flag === "string" && (0, _1.isFlagEnabled)(flags, common_1.GlobalFlags[flag])) { + booleanFlagMap[flag] = true; + } + }); + return booleanFlagMap; + } + exports2.parseTransactionFlags = parseTransactionFlags; + } +}); + +// node_modules/@xrplf/isomorphic/dist/ripemd160/index.js +var require_ripemd160 = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/ripemd160/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ripemd160 = void 0; + var crypto_1 = __require("crypto"); + var wrapCryptoCreateHash_1 = __importDefault2(require_wrapCryptoCreateHash()); + exports2.ripemd160 = (0, wrapCryptoCreateHash_1.default)("ripemd160", crypto_1.createHash); + } +}); + +// node_modules/@noble/hashes/_md.js +var require_md = __commonJS({ + "node_modules/@noble/hashes/_md.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SHA512_IV = exports2.SHA384_IV = exports2.SHA224_IV = exports2.SHA256_IV = exports2.HashMD = void 0; + exports2.setBigUint64 = setBigUint64; + exports2.Chi = Chi2; + exports2.Maj = Maj2; + var utils_ts_1 = require_utils9(); + function setBigUint64(view, byteOffset, value, isLE) { + if (typeof view.setBigUint64 === "function") + return view.setBigUint64(byteOffset, value, isLE); + const _32n2 = BigInt(32); + const _u32_max = BigInt(4294967295); + const wh = Number(value >> _32n2 & _u32_max); + const wl = Number(value & _u32_max); + const h = isLE ? 4 : 0; + const l = isLE ? 0 : 4; + view.setUint32(byteOffset + h, wh, isLE); + view.setUint32(byteOffset + l, wl, isLE); + } + function Chi2(a, b, c) { + return a & b ^ ~a & c; + } + function Maj2(a, b, c) { + return a & b ^ a & c ^ b & c; + } + var HashMD2 = class extends utils_ts_1.Hash { + constructor(blockLen, outputLen, padOffset, isLE) { + super(); + this.finished = false; + this.length = 0; + this.pos = 0; + this.destroyed = false; + this.blockLen = blockLen; + this.outputLen = outputLen; + this.padOffset = padOffset; + this.isLE = isLE; + this.buffer = new Uint8Array(blockLen); + this.view = (0, utils_ts_1.createView)(this.buffer); + } + update(data) { + (0, utils_ts_1.aexists)(this); + data = (0, utils_ts_1.toBytes)(data); + (0, utils_ts_1.abytes)(data); + const { view, buffer, blockLen } = this; + const len = data.length; + for (let pos = 0; pos < len; ) { + const take = Math.min(blockLen - this.pos, len - pos); + if (take === blockLen) { + const dataView = (0, utils_ts_1.createView)(data); + for (; blockLen <= len - pos; pos += blockLen) + this.process(dataView, pos); + continue; + } + buffer.set(data.subarray(pos, pos + take), this.pos); + this.pos += take; + pos += take; + if (this.pos === blockLen) { + this.process(view, 0); + this.pos = 0; + } + } + this.length += data.length; + this.roundClean(); + return this; + } + digestInto(out) { + (0, utils_ts_1.aexists)(this); + (0, utils_ts_1.aoutput)(out, this); + this.finished = true; + const { buffer, view, blockLen, isLE } = this; + let { pos } = this; + buffer[pos++] = 128; + (0, utils_ts_1.clean)(this.buffer.subarray(pos)); + if (this.padOffset > blockLen - pos) { + this.process(view, 0); + pos = 0; + } + for (let i = pos; i < blockLen; i++) + buffer[i] = 0; + setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE); + this.process(view, 0); + const oview = (0, utils_ts_1.createView)(out); + const len = this.outputLen; + if (len % 4) + throw new Error("_sha2: outputLen should be aligned to 32bit"); + const outLen = len / 4; + const state = this.get(); + if (outLen > state.length) + throw new Error("_sha2: outputLen bigger than state"); + for (let i = 0; i < outLen; i++) + oview.setUint32(4 * i, state[i], isLE); + } + digest() { + const { buffer, outputLen } = this; + this.digestInto(buffer); + const res = buffer.slice(0, outputLen); + this.destroy(); + return res; + } + _cloneInto(to) { + to || (to = new this.constructor()); + to.set(...this.get()); + const { blockLen, buffer, length, finished, destroyed, pos } = this; + to.destroyed = destroyed; + to.finished = finished; + to.length = length; + to.pos = pos; + if (length % blockLen) + to.buffer.set(buffer); + return to; + } + clone() { + return this._cloneInto(); + } + }; + exports2.HashMD = HashMD2; + exports2.SHA256_IV = Uint32Array.from([ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]); + exports2.SHA224_IV = Uint32Array.from([ + 3238371032, + 914150663, + 812702999, + 4144912697, + 4290775857, + 1750603025, + 1694076839, + 3204075428 + ]); + exports2.SHA384_IV = Uint32Array.from([ + 3418070365, + 3238371032, + 1654270250, + 914150663, + 2438529370, + 812702999, + 355462360, + 4144912697, + 1731405415, + 4290775857, + 2394180231, + 1750603025, + 3675008525, + 1694076839, + 1203062813, + 3204075428 + ]); + exports2.SHA512_IV = Uint32Array.from([ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]); + } +}); + +// node_modules/@noble/hashes/_u64.js +var require_u64 = __commonJS({ + "node_modules/@noble/hashes/_u64.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.toBig = exports2.shrSL = exports2.shrSH = exports2.rotrSL = exports2.rotrSH = exports2.rotrBL = exports2.rotrBH = exports2.rotr32L = exports2.rotr32H = exports2.rotlSL = exports2.rotlSH = exports2.rotlBL = exports2.rotlBH = exports2.add5L = exports2.add5H = exports2.add4L = exports2.add4H = exports2.add3L = exports2.add3H = void 0; + exports2.add = add2; + exports2.fromBig = fromBig2; + exports2.split = split2; + var U32_MASK642 = /* @__PURE__ */ BigInt(2 ** 32 - 1); + var _32n2 = /* @__PURE__ */ BigInt(32); + function fromBig2(n, le = false) { + if (le) + return { h: Number(n & U32_MASK642), l: Number(n >> _32n2 & U32_MASK642) }; + return { h: Number(n >> _32n2 & U32_MASK642) | 0, l: Number(n & U32_MASK642) | 0 }; + } + function split2(lst, le = false) { + const len = lst.length; + let Ah = new Uint32Array(len); + let Al = new Uint32Array(len); + for (let i = 0; i < len; i++) { + const { h, l } = fromBig2(lst[i], le); + [Ah[i], Al[i]] = [h, l]; + } + return [Ah, Al]; + } + var toBig = (h, l) => BigInt(h >>> 0) << _32n2 | BigInt(l >>> 0); + exports2.toBig = toBig; + var shrSH2 = (h, _l, s) => h >>> s; + exports2.shrSH = shrSH2; + var shrSL2 = (h, l, s) => h << 32 - s | l >>> s; + exports2.shrSL = shrSL2; + var rotrSH2 = (h, l, s) => h >>> s | l << 32 - s; + exports2.rotrSH = rotrSH2; + var rotrSL2 = (h, l, s) => h << 32 - s | l >>> s; + exports2.rotrSL = rotrSL2; + var rotrBH2 = (h, l, s) => h << 64 - s | l >>> s - 32; + exports2.rotrBH = rotrBH2; + var rotrBL2 = (h, l, s) => h >>> s - 32 | l << 64 - s; + exports2.rotrBL = rotrBL2; + var rotr32H = (_h, l) => l; + exports2.rotr32H = rotr32H; + var rotr32L = (h, _l) => h; + exports2.rotr32L = rotr32L; + var rotlSH = (h, l, s) => h << s | l >>> 32 - s; + exports2.rotlSH = rotlSH; + var rotlSL = (h, l, s) => l << s | h >>> 32 - s; + exports2.rotlSL = rotlSL; + var rotlBH = (h, l, s) => l << s - 32 | h >>> 64 - s; + exports2.rotlBH = rotlBH; + var rotlBL = (h, l, s) => h << s - 32 | l >>> 64 - s; + exports2.rotlBL = rotlBL; + function add2(Ah, Al, Bh, Bl) { + const l = (Al >>> 0) + (Bl >>> 0); + return { h: Ah + Bh + (l / 2 ** 32 | 0) | 0, l: l | 0 }; + } + var add3L2 = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0); + exports2.add3L = add3L2; + var add3H2 = (low, Ah, Bh, Ch) => Ah + Bh + Ch + (low / 2 ** 32 | 0) | 0; + exports2.add3H = add3H2; + var add4L2 = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0); + exports2.add4L = add4L2; + var add4H2 = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) | 0; + exports2.add4H = add4H2; + var add5L2 = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0); + exports2.add5L = add5L2; + var add5H2 = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0; + exports2.add5H = add5H2; + var u64 = { + fromBig: fromBig2, + split: split2, + toBig, + shrSH: shrSH2, + shrSL: shrSL2, + rotrSH: rotrSH2, + rotrSL: rotrSL2, + rotrBH: rotrBH2, + rotrBL: rotrBL2, + rotr32H, + rotr32L, + rotlSH, + rotlSL, + rotlBH, + rotlBL, + add: add2, + add3L: add3L2, + add3H: add3H2, + add4L: add4L2, + add4H: add4H2, + add5H: add5H2, + add5L: add5L2 + }; + exports2.default = u64; + } +}); + +// node_modules/@noble/hashes/sha2.js +var require_sha2 = __commonJS({ + "node_modules/@noble/hashes/sha2.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sha512_224 = exports2.sha512_256 = exports2.sha384 = exports2.sha512 = exports2.sha224 = exports2.sha256 = exports2.SHA512_256 = exports2.SHA512_224 = exports2.SHA384 = exports2.SHA512 = exports2.SHA224 = exports2.SHA256 = void 0; + var _md_ts_1 = require_md(); + var u64 = require_u64(); + var utils_ts_1 = require_utils9(); + var SHA256_K = /* @__PURE__ */ Uint32Array.from([ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]); + var SHA256_W = /* @__PURE__ */ new Uint32Array(64); + var SHA256 = class extends _md_ts_1.HashMD { + constructor(outputLen = 32) { + super(64, outputLen, 8, false); + this.A = _md_ts_1.SHA256_IV[0] | 0; + this.B = _md_ts_1.SHA256_IV[1] | 0; + this.C = _md_ts_1.SHA256_IV[2] | 0; + this.D = _md_ts_1.SHA256_IV[3] | 0; + this.E = _md_ts_1.SHA256_IV[4] | 0; + this.F = _md_ts_1.SHA256_IV[5] | 0; + this.G = _md_ts_1.SHA256_IV[6] | 0; + this.H = _md_ts_1.SHA256_IV[7] | 0; + } + get() { + const { A, B, C, D, E, F, G, H } = this; + return [A, B, C, D, E, F, G, H]; + } + // prettier-ignore + set(A, B, C, D, E, F, G, H) { + this.A = A | 0; + this.B = B | 0; + this.C = C | 0; + this.D = D | 0; + this.E = E | 0; + this.F = F | 0; + this.G = G | 0; + this.H = H | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + SHA256_W[i] = view.getUint32(offset, false); + for (let i = 16; i < 64; i++) { + const W15 = SHA256_W[i - 15]; + const W2 = SHA256_W[i - 2]; + const s0 = (0, utils_ts_1.rotr)(W15, 7) ^ (0, utils_ts_1.rotr)(W15, 18) ^ W15 >>> 3; + const s1 = (0, utils_ts_1.rotr)(W2, 17) ^ (0, utils_ts_1.rotr)(W2, 19) ^ W2 >>> 10; + SHA256_W[i] = s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16] | 0; + } + let { A, B, C, D, E, F, G, H } = this; + for (let i = 0; i < 64; i++) { + const sigma1 = (0, utils_ts_1.rotr)(E, 6) ^ (0, utils_ts_1.rotr)(E, 11) ^ (0, utils_ts_1.rotr)(E, 25); + const T1 = H + sigma1 + (0, _md_ts_1.Chi)(E, F, G) + SHA256_K[i] + SHA256_W[i] | 0; + const sigma0 = (0, utils_ts_1.rotr)(A, 2) ^ (0, utils_ts_1.rotr)(A, 13) ^ (0, utils_ts_1.rotr)(A, 22); + const T2 = sigma0 + (0, _md_ts_1.Maj)(A, B, C) | 0; + H = G; + G = F; + F = E; + E = D + T1 | 0; + D = C; + C = B; + B = A; + A = T1 + T2 | 0; + } + A = A + this.A | 0; + B = B + this.B | 0; + C = C + this.C | 0; + D = D + this.D | 0; + E = E + this.E | 0; + F = F + this.F | 0; + G = G + this.G | 0; + H = H + this.H | 0; + this.set(A, B, C, D, E, F, G, H); + } + roundClean() { + (0, utils_ts_1.clean)(SHA256_W); + } + destroy() { + this.set(0, 0, 0, 0, 0, 0, 0, 0); + (0, utils_ts_1.clean)(this.buffer); + } + }; + exports2.SHA256 = SHA256; + var SHA224 = class extends SHA256 { + constructor() { + super(28); + this.A = _md_ts_1.SHA224_IV[0] | 0; + this.B = _md_ts_1.SHA224_IV[1] | 0; + this.C = _md_ts_1.SHA224_IV[2] | 0; + this.D = _md_ts_1.SHA224_IV[3] | 0; + this.E = _md_ts_1.SHA224_IV[4] | 0; + this.F = _md_ts_1.SHA224_IV[5] | 0; + this.G = _md_ts_1.SHA224_IV[6] | 0; + this.H = _md_ts_1.SHA224_IV[7] | 0; + } + }; + exports2.SHA224 = SHA224; + var K5122 = /* @__PURE__ */ (() => u64.split([ + "0x428a2f98d728ae22", + "0x7137449123ef65cd", + "0xb5c0fbcfec4d3b2f", + "0xe9b5dba58189dbbc", + "0x3956c25bf348b538", + "0x59f111f1b605d019", + "0x923f82a4af194f9b", + "0xab1c5ed5da6d8118", + "0xd807aa98a3030242", + "0x12835b0145706fbe", + "0x243185be4ee4b28c", + "0x550c7dc3d5ffb4e2", + "0x72be5d74f27b896f", + "0x80deb1fe3b1696b1", + "0x9bdc06a725c71235", + "0xc19bf174cf692694", + "0xe49b69c19ef14ad2", + "0xefbe4786384f25e3", + "0x0fc19dc68b8cd5b5", + "0x240ca1cc77ac9c65", + "0x2de92c6f592b0275", + "0x4a7484aa6ea6e483", + "0x5cb0a9dcbd41fbd4", + "0x76f988da831153b5", + "0x983e5152ee66dfab", + "0xa831c66d2db43210", + "0xb00327c898fb213f", + "0xbf597fc7beef0ee4", + "0xc6e00bf33da88fc2", + "0xd5a79147930aa725", + "0x06ca6351e003826f", + "0x142929670a0e6e70", + "0x27b70a8546d22ffc", + "0x2e1b21385c26c926", + "0x4d2c6dfc5ac42aed", + "0x53380d139d95b3df", + "0x650a73548baf63de", + "0x766a0abb3c77b2a8", + "0x81c2c92e47edaee6", + "0x92722c851482353b", + "0xa2bfe8a14cf10364", + "0xa81a664bbc423001", + "0xc24b8b70d0f89791", + "0xc76c51a30654be30", + "0xd192e819d6ef5218", + "0xd69906245565a910", + "0xf40e35855771202a", + "0x106aa07032bbd1b8", + "0x19a4c116b8d2d0c8", + "0x1e376c085141ab53", + "0x2748774cdf8eeb99", + "0x34b0bcb5e19b48a8", + "0x391c0cb3c5c95a63", + "0x4ed8aa4ae3418acb", + "0x5b9cca4f7763e373", + "0x682e6ff3d6b2b8a3", + "0x748f82ee5defb2fc", + "0x78a5636f43172f60", + "0x84c87814a1f0ab72", + "0x8cc702081a6439ec", + "0x90befffa23631e28", + "0xa4506cebde82bde9", + "0xbef9a3f7b2c67915", + "0xc67178f2e372532b", + "0xca273eceea26619c", + "0xd186b8c721c0c207", + "0xeada7dd6cde0eb1e", + "0xf57d4f7fee6ed178", + "0x06f067aa72176fba", + "0x0a637dc5a2c898a6", + "0x113f9804bef90dae", + "0x1b710b35131c471b", + "0x28db77f523047d84", + "0x32caab7b40c72493", + "0x3c9ebe0a15c9bebc", + "0x431d67c49c100d4c", + "0x4cc5d4becb3e42b6", + "0x597f299cfc657e2a", + "0x5fcb6fab3ad6faec", + "0x6c44198c4a475817" + ].map((n) => BigInt(n))))(); + var SHA512_Kh2 = /* @__PURE__ */ (() => K5122[0])(); + var SHA512_Kl2 = /* @__PURE__ */ (() => K5122[1])(); + var SHA512_W_H2 = /* @__PURE__ */ new Uint32Array(80); + var SHA512_W_L2 = /* @__PURE__ */ new Uint32Array(80); + var SHA512 = class extends _md_ts_1.HashMD { + constructor(outputLen = 64) { + super(128, outputLen, 16, false); + this.Ah = _md_ts_1.SHA512_IV[0] | 0; + this.Al = _md_ts_1.SHA512_IV[1] | 0; + this.Bh = _md_ts_1.SHA512_IV[2] | 0; + this.Bl = _md_ts_1.SHA512_IV[3] | 0; + this.Ch = _md_ts_1.SHA512_IV[4] | 0; + this.Cl = _md_ts_1.SHA512_IV[5] | 0; + this.Dh = _md_ts_1.SHA512_IV[6] | 0; + this.Dl = _md_ts_1.SHA512_IV[7] | 0; + this.Eh = _md_ts_1.SHA512_IV[8] | 0; + this.El = _md_ts_1.SHA512_IV[9] | 0; + this.Fh = _md_ts_1.SHA512_IV[10] | 0; + this.Fl = _md_ts_1.SHA512_IV[11] | 0; + this.Gh = _md_ts_1.SHA512_IV[12] | 0; + this.Gl = _md_ts_1.SHA512_IV[13] | 0; + this.Hh = _md_ts_1.SHA512_IV[14] | 0; + this.Hl = _md_ts_1.SHA512_IV[15] | 0; + } + // prettier-ignore + get() { + const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl]; + } + // prettier-ignore + set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) { + this.Ah = Ah | 0; + this.Al = Al | 0; + this.Bh = Bh | 0; + this.Bl = Bl | 0; + this.Ch = Ch | 0; + this.Cl = Cl | 0; + this.Dh = Dh | 0; + this.Dl = Dl | 0; + this.Eh = Eh | 0; + this.El = El | 0; + this.Fh = Fh | 0; + this.Fl = Fl | 0; + this.Gh = Gh | 0; + this.Gl = Gl | 0; + this.Hh = Hh | 0; + this.Hl = Hl | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) { + SHA512_W_H2[i] = view.getUint32(offset); + SHA512_W_L2[i] = view.getUint32(offset += 4); + } + for (let i = 16; i < 80; i++) { + const W15h = SHA512_W_H2[i - 15] | 0; + const W15l = SHA512_W_L2[i - 15] | 0; + const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7); + const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7); + const W2h = SHA512_W_H2[i - 2] | 0; + const W2l = SHA512_W_L2[i - 2] | 0; + const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6); + const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6); + const SUMl = u64.add4L(s0l, s1l, SHA512_W_L2[i - 7], SHA512_W_L2[i - 16]); + const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H2[i - 7], SHA512_W_H2[i - 16]); + SHA512_W_H2[i] = SUMh | 0; + SHA512_W_L2[i] = SUMl | 0; + } + let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this; + for (let i = 0; i < 80; i++) { + const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41); + const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41); + const CHIh = Eh & Fh ^ ~Eh & Gh; + const CHIl = El & Fl ^ ~El & Gl; + const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl2[i], SHA512_W_L2[i]); + const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh2[i], SHA512_W_H2[i]); + const T1l = T1ll | 0; + const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39); + const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39); + const MAJh = Ah & Bh ^ Ah & Ch ^ Bh & Ch; + const MAJl = Al & Bl ^ Al & Cl ^ Bl & Cl; + Hh = Gh | 0; + Hl = Gl | 0; + Gh = Fh | 0; + Gl = Fl | 0; + Fh = Eh | 0; + Fl = El | 0; + ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0)); + Dh = Ch | 0; + Dl = Cl | 0; + Ch = Bh | 0; + Cl = Bl | 0; + Bh = Ah | 0; + Bl = Al | 0; + const All = u64.add3L(T1l, sigma0l, MAJl); + Ah = u64.add3H(All, T1h, sigma0h, MAJh); + Al = All | 0; + } + ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0)); + ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0)); + ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0)); + ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0)); + ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0)); + ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0)); + ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0)); + ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0)); + this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl); + } + roundClean() { + (0, utils_ts_1.clean)(SHA512_W_H2, SHA512_W_L2); + } + destroy() { + (0, utils_ts_1.clean)(this.buffer); + this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } + }; + exports2.SHA512 = SHA512; + var SHA384 = class extends SHA512 { + constructor() { + super(48); + this.Ah = _md_ts_1.SHA384_IV[0] | 0; + this.Al = _md_ts_1.SHA384_IV[1] | 0; + this.Bh = _md_ts_1.SHA384_IV[2] | 0; + this.Bl = _md_ts_1.SHA384_IV[3] | 0; + this.Ch = _md_ts_1.SHA384_IV[4] | 0; + this.Cl = _md_ts_1.SHA384_IV[5] | 0; + this.Dh = _md_ts_1.SHA384_IV[6] | 0; + this.Dl = _md_ts_1.SHA384_IV[7] | 0; + this.Eh = _md_ts_1.SHA384_IV[8] | 0; + this.El = _md_ts_1.SHA384_IV[9] | 0; + this.Fh = _md_ts_1.SHA384_IV[10] | 0; + this.Fl = _md_ts_1.SHA384_IV[11] | 0; + this.Gh = _md_ts_1.SHA384_IV[12] | 0; + this.Gl = _md_ts_1.SHA384_IV[13] | 0; + this.Hh = _md_ts_1.SHA384_IV[14] | 0; + this.Hl = _md_ts_1.SHA384_IV[15] | 0; + } + }; + exports2.SHA384 = SHA384; + var T224_IV = /* @__PURE__ */ Uint32Array.from([ + 2352822216, + 424955298, + 1944164710, + 2312950998, + 502970286, + 855612546, + 1738396948, + 1479516111, + 258812777, + 2077511080, + 2011393907, + 79989058, + 1067287976, + 1780299464, + 286451373, + 2446758561 + ]); + var T256_IV = /* @__PURE__ */ Uint32Array.from([ + 573645204, + 4230739756, + 2673172387, + 3360449730, + 596883563, + 1867755857, + 2520282905, + 1497426621, + 2519219938, + 2827943907, + 3193839141, + 1401305490, + 721525244, + 746961066, + 246885852, + 2177182882 + ]); + var SHA512_224 = class extends SHA512 { + constructor() { + super(28); + this.Ah = T224_IV[0] | 0; + this.Al = T224_IV[1] | 0; + this.Bh = T224_IV[2] | 0; + this.Bl = T224_IV[3] | 0; + this.Ch = T224_IV[4] | 0; + this.Cl = T224_IV[5] | 0; + this.Dh = T224_IV[6] | 0; + this.Dl = T224_IV[7] | 0; + this.Eh = T224_IV[8] | 0; + this.El = T224_IV[9] | 0; + this.Fh = T224_IV[10] | 0; + this.Fl = T224_IV[11] | 0; + this.Gh = T224_IV[12] | 0; + this.Gl = T224_IV[13] | 0; + this.Hh = T224_IV[14] | 0; + this.Hl = T224_IV[15] | 0; + } + }; + exports2.SHA512_224 = SHA512_224; + var SHA512_256 = class extends SHA512 { + constructor() { + super(32); + this.Ah = T256_IV[0] | 0; + this.Al = T256_IV[1] | 0; + this.Bh = T256_IV[2] | 0; + this.Bl = T256_IV[3] | 0; + this.Ch = T256_IV[4] | 0; + this.Cl = T256_IV[5] | 0; + this.Dh = T256_IV[6] | 0; + this.Dl = T256_IV[7] | 0; + this.Eh = T256_IV[8] | 0; + this.El = T256_IV[9] | 0; + this.Fh = T256_IV[10] | 0; + this.Fl = T256_IV[11] | 0; + this.Gh = T256_IV[12] | 0; + this.Gl = T256_IV[13] | 0; + this.Hh = T256_IV[14] | 0; + this.Hl = T256_IV[15] | 0; + } + }; + exports2.SHA512_256 = SHA512_256; + exports2.sha256 = (0, utils_ts_1.createHasher)(() => new SHA256()); + exports2.sha224 = (0, utils_ts_1.createHasher)(() => new SHA224()); + exports2.sha512 = (0, utils_ts_1.createHasher)(() => new SHA512()); + exports2.sha384 = (0, utils_ts_1.createHasher)(() => new SHA384()); + exports2.sha512_256 = (0, utils_ts_1.createHasher)(() => new SHA512_256()); + exports2.sha512_224 = (0, utils_ts_1.createHasher)(() => new SHA512_224()); + } +}); + +// node_modules/@noble/hashes/hmac.js +var require_hmac = __commonJS({ + "node_modules/@noble/hashes/hmac.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hmac = exports2.HMAC = void 0; + var utils_ts_1 = require_utils9(); + var HMAC = class extends utils_ts_1.Hash { + constructor(hash, _key) { + super(); + this.finished = false; + this.destroyed = false; + (0, utils_ts_1.ahash)(hash); + const key = (0, utils_ts_1.toBytes)(_key); + this.iHash = hash.create(); + if (typeof this.iHash.update !== "function") + throw new Error("Expected instance of class which extends utils.Hash"); + this.blockLen = this.iHash.blockLen; + this.outputLen = this.iHash.outputLen; + const blockLen = this.blockLen; + const pad = new Uint8Array(blockLen); + pad.set(key.length > blockLen ? hash.create().update(key).digest() : key); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54; + this.iHash.update(pad); + this.oHash = hash.create(); + for (let i = 0; i < pad.length; i++) + pad[i] ^= 54 ^ 92; + this.oHash.update(pad); + (0, utils_ts_1.clean)(pad); + } + update(buf) { + (0, utils_ts_1.aexists)(this); + this.iHash.update(buf); + return this; + } + digestInto(out) { + (0, utils_ts_1.aexists)(this); + (0, utils_ts_1.abytes)(out, this.outputLen); + this.finished = true; + this.iHash.digestInto(out); + this.oHash.update(out); + this.oHash.digestInto(out); + this.destroy(); + } + digest() { + const out = new Uint8Array(this.oHash.outputLen); + this.digestInto(out); + return out; + } + _cloneInto(to) { + to || (to = Object.create(Object.getPrototypeOf(this), {})); + const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this; + to = to; + to.finished = finished; + to.destroyed = destroyed; + to.blockLen = blockLen; + to.outputLen = outputLen; + to.oHash = oHash._cloneInto(to.oHash); + to.iHash = iHash._cloneInto(to.iHash); + return to; + } + clone() { + return this._cloneInto(); + } + destroy() { + this.destroyed = true; + this.oHash.destroy(); + this.iHash.destroy(); + } + }; + exports2.HMAC = HMAC; + var hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest(); + exports2.hmac = hmac; + exports2.hmac.create = (hash, key) => new HMAC(hash, key); + } +}); + +// node_modules/@noble/curves/utils.js +var require_utils14 = __commonJS({ + "node_modules/@noble/curves/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.notImplemented = exports2.bitMask = exports2.utf8ToBytes = exports2.randomBytes = exports2.isBytes = exports2.hexToBytes = exports2.concatBytes = exports2.bytesToUtf8 = exports2.bytesToHex = exports2.anumber = exports2.abytes = void 0; + exports2.abool = abool2; + exports2._abool2 = _abool2; + exports2._abytes2 = _abytes2; + exports2.numberToHexUnpadded = numberToHexUnpadded; + exports2.hexToNumber = hexToNumber2; + exports2.bytesToNumberBE = bytesToNumberBE2; + exports2.bytesToNumberLE = bytesToNumberLE2; + exports2.numberToBytesBE = numberToBytesBE2; + exports2.numberToBytesLE = numberToBytesLE2; + exports2.numberToVarBytesBE = numberToVarBytesBE; + exports2.ensureBytes = ensureBytes; + exports2.equalBytes = equalBytes2; + exports2.copyBytes = copyBytes2; + exports2.asciiToBytes = asciiToBytes2; + exports2.inRange = inRange2; + exports2.aInRange = aInRange2; + exports2.bitLen = bitLen2; + exports2.bitGet = bitGet; + exports2.bitSet = bitSet; + exports2.createHmacDrbg = createHmacDrbg; + exports2.validateObject = validateObject2; + exports2.isHash = isHash; + exports2._validateObject = _validateObject; + exports2.memoized = memoized2; + var utils_js_1 = require_utils9(); + var utils_js_2 = require_utils9(); + Object.defineProperty(exports2, "abytes", { enumerable: true, get: function() { + return utils_js_2.abytes; + } }); + Object.defineProperty(exports2, "anumber", { enumerable: true, get: function() { + return utils_js_2.anumber; + } }); + Object.defineProperty(exports2, "bytesToHex", { enumerable: true, get: function() { + return utils_js_2.bytesToHex; + } }); + Object.defineProperty(exports2, "bytesToUtf8", { enumerable: true, get: function() { + return utils_js_2.bytesToUtf8; + } }); + Object.defineProperty(exports2, "concatBytes", { enumerable: true, get: function() { + return utils_js_2.concatBytes; + } }); + Object.defineProperty(exports2, "hexToBytes", { enumerable: true, get: function() { + return utils_js_2.hexToBytes; + } }); + Object.defineProperty(exports2, "isBytes", { enumerable: true, get: function() { + return utils_js_2.isBytes; + } }); + Object.defineProperty(exports2, "randomBytes", { enumerable: true, get: function() { + return utils_js_2.randomBytes; + } }); + Object.defineProperty(exports2, "utf8ToBytes", { enumerable: true, get: function() { + return utils_js_2.utf8ToBytes; + } }); + var _0n7 = /* @__PURE__ */ BigInt(0); + var _1n7 = /* @__PURE__ */ BigInt(1); + function abool2(title, value) { + if (typeof value !== "boolean") + throw new Error(title + " boolean expected, got " + value); + } + function _abool2(value, title = "") { + if (typeof value !== "boolean") { + const prefix = title && `"${title}"`; + throw new Error(prefix + "expected boolean, got type=" + typeof value); + } + return value; + } + function _abytes2(value, length, title = "") { + const bytes = (0, utils_js_1.isBytes)(value); + const len = value?.length; + const needsLen = length !== void 0; + if (!bytes || needsLen && len !== length) { + const prefix = title && `"${title}" `; + const ofLen = needsLen ? ` of length ${length}` : ""; + const got = bytes ? `length=${len}` : `type=${typeof value}`; + throw new Error(prefix + "expected Uint8Array" + ofLen + ", got " + got); + } + return value; + } + function numberToHexUnpadded(num) { + const hex = num.toString(16); + return hex.length & 1 ? "0" + hex : hex; + } + function hexToNumber2(hex) { + if (typeof hex !== "string") + throw new Error("hex string expected, got " + typeof hex); + return hex === "" ? _0n7 : BigInt("0x" + hex); + } + function bytesToNumberBE2(bytes) { + return hexToNumber2((0, utils_js_1.bytesToHex)(bytes)); + } + function bytesToNumberLE2(bytes) { + (0, utils_js_1.abytes)(bytes); + return hexToNumber2((0, utils_js_1.bytesToHex)(Uint8Array.from(bytes).reverse())); + } + function numberToBytesBE2(n, len) { + return (0, utils_js_1.hexToBytes)(n.toString(16).padStart(len * 2, "0")); + } + function numberToBytesLE2(n, len) { + return numberToBytesBE2(n, len).reverse(); + } + function numberToVarBytesBE(n) { + return (0, utils_js_1.hexToBytes)(numberToHexUnpadded(n)); + } + function ensureBytes(title, hex, expectedLength) { + let res; + if (typeof hex === "string") { + try { + res = (0, utils_js_1.hexToBytes)(hex); + } catch (e) { + throw new Error(title + " must be hex string or Uint8Array, cause: " + e); + } + } else if ((0, utils_js_1.isBytes)(hex)) { + res = Uint8Array.from(hex); + } else { + throw new Error(title + " must be hex string or Uint8Array"); + } + const len = res.length; + if (typeof expectedLength === "number" && len !== expectedLength) + throw new Error(title + " of length " + expectedLength + " expected, got " + len); + return res; + } + function equalBytes2(a, b) { + if (a.length !== b.length) + return false; + let diff = 0; + for (let i = 0; i < a.length; i++) + diff |= a[i] ^ b[i]; + return diff === 0; + } + function copyBytes2(bytes) { + return Uint8Array.from(bytes); + } + function asciiToBytes2(ascii) { + return Uint8Array.from(ascii, (c, i) => { + const charCode = c.charCodeAt(0); + if (c.length !== 1 || charCode > 127) { + throw new Error(`string contains non-ASCII character "${ascii[i]}" with code ${charCode} at position ${i}`); + } + return charCode; + }); + } + var isPosBig2 = (n) => typeof n === "bigint" && _0n7 <= n; + function inRange2(n, min, max) { + return isPosBig2(n) && isPosBig2(min) && isPosBig2(max) && min <= n && n < max; + } + function aInRange2(title, n, min, max) { + if (!inRange2(n, min, max)) + throw new Error("expected valid " + title + ": " + min + " <= n < " + max + ", got " + n); + } + function bitLen2(n) { + let len; + for (len = 0; n > _0n7; n >>= _1n7, len += 1) + ; + return len; + } + function bitGet(n, pos) { + return n >> BigInt(pos) & _1n7; + } + function bitSet(n, pos, value) { + return n | (value ? _1n7 : _0n7) << BigInt(pos); + } + var bitMask2 = (n) => (_1n7 << BigInt(n)) - _1n7; + exports2.bitMask = bitMask2; + function createHmacDrbg(hashLen, qByteLen, hmacFn) { + if (typeof hashLen !== "number" || hashLen < 2) + throw new Error("hashLen must be a number"); + if (typeof qByteLen !== "number" || qByteLen < 2) + throw new Error("qByteLen must be a number"); + if (typeof hmacFn !== "function") + throw new Error("hmacFn must be a function"); + const u8n = (len) => new Uint8Array(len); + const u8of = (byte) => Uint8Array.of(byte); + let v = u8n(hashLen); + let k = u8n(hashLen); + let i = 0; + const reset2 = () => { + v.fill(1); + k.fill(0); + i = 0; + }; + const h = (...b) => hmacFn(k, v, ...b); + const reseed = (seed = u8n(0)) => { + k = h(u8of(0), seed); + v = h(); + if (seed.length === 0) + return; + k = h(u8of(1), seed); + v = h(); + }; + const gen = () => { + if (i++ >= 1e3) + throw new Error("drbg: tried 1000 values"); + let len = 0; + const out = []; + while (len < qByteLen) { + v = h(); + const sl = v.slice(); + out.push(sl); + len += v.length; + } + return (0, utils_js_1.concatBytes)(...out); + }; + const genUntil = (seed, pred) => { + reset2(); + reseed(seed); + let res = void 0; + while (!(res = pred(gen()))) + reseed(); + reset2(); + return res; + }; + return genUntil; + } + var validatorFns = { + bigint: (val) => typeof val === "bigint", + function: (val) => typeof val === "function", + boolean: (val) => typeof val === "boolean", + string: (val) => typeof val === "string", + stringOrUint8Array: (val) => typeof val === "string" || (0, utils_js_1.isBytes)(val), + isSafeInteger: (val) => Number.isSafeInteger(val), + array: (val) => Array.isArray(val), + field: (val, object) => object.Fp.isValid(val), + hash: (val) => typeof val === "function" && Number.isSafeInteger(val.outputLen) + }; + function validateObject2(object, validators, optValidators = {}) { + const checkField = (fieldName, type, isOptional) => { + const checkVal = validatorFns[type]; + if (typeof checkVal !== "function") + throw new Error("invalid validator function"); + const val = object[fieldName]; + if (isOptional && val === void 0) + return; + if (!checkVal(val, object)) { + throw new Error("param " + String(fieldName) + " is invalid. Expected " + type + ", got " + val); + } + }; + for (const [fieldName, type] of Object.entries(validators)) + checkField(fieldName, type, false); + for (const [fieldName, type] of Object.entries(optValidators)) + checkField(fieldName, type, true); + return object; + } + function isHash(val) { + return typeof val === "function" && Number.isSafeInteger(val.outputLen); + } + function _validateObject(object, fields, optFields = {}) { + if (!object || typeof object !== "object") + throw new Error("expected valid options object"); + function checkField(fieldName, expectedType, isOpt) { + const val = object[fieldName]; + if (isOpt && val === void 0) + return; + const current = typeof val; + if (current !== expectedType || val === null) + throw new Error(`param "${fieldName}" is invalid: expected ${expectedType}, got ${current}`); + } + Object.entries(fields).forEach(([k, v]) => checkField(k, v, false)); + Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true)); + } + var notImplemented2 = () => { + throw new Error("not implemented"); + }; + exports2.notImplemented = notImplemented2; + function memoized2(fn) { + const map = /* @__PURE__ */ new WeakMap(); + return (arg, ...args) => { + const val = map.get(arg); + if (val !== void 0) + return val; + const computed = fn(arg, ...args); + map.set(arg, computed); + return computed; + }; + } + } +}); + +// node_modules/@noble/curves/abstract/modular.js +var require_modular = __commonJS({ + "node_modules/@noble/curves/abstract/modular.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isNegativeLE = void 0; + exports2.mod = mod3; + exports2.pow = pow; + exports2.pow2 = pow22; + exports2.invert = invert2; + exports2.tonelliShanks = tonelliShanks2; + exports2.FpSqrt = FpSqrt2; + exports2.validateField = validateField2; + exports2.FpPow = FpPow2; + exports2.FpInvertBatch = FpInvertBatch2; + exports2.FpDiv = FpDiv; + exports2.FpLegendre = FpLegendre2; + exports2.FpIsSquare = FpIsSquare; + exports2.nLength = nLength2; + exports2.Field = Field2; + exports2.FpSqrtOdd = FpSqrtOdd; + exports2.FpSqrtEven = FpSqrtEven2; + exports2.hashToPrivateScalar = hashToPrivateScalar; + exports2.getFieldBytesLength = getFieldBytesLength2; + exports2.getMinHashLength = getMinHashLength2; + exports2.mapHashToField = mapHashToField2; + var utils_ts_1 = require_utils14(); + var _0n7 = BigInt(0); + var _1n7 = BigInt(1); + var _2n5 = /* @__PURE__ */ BigInt(2); + var _3n3 = /* @__PURE__ */ BigInt(3); + var _4n2 = /* @__PURE__ */ BigInt(4); + var _5n3 = /* @__PURE__ */ BigInt(5); + var _7n2 = /* @__PURE__ */ BigInt(7); + var _8n4 = /* @__PURE__ */ BigInt(8); + var _9n2 = /* @__PURE__ */ BigInt(9); + var _16n2 = /* @__PURE__ */ BigInt(16); + function mod3(a, b) { + const result = a % b; + return result >= _0n7 ? result : b + result; + } + function pow(num, power, modulo) { + return FpPow2(Field2(modulo), num, power); + } + function pow22(x, power, modulo) { + let res = x; + while (power-- > _0n7) { + res *= res; + res %= modulo; + } + return res; + } + function invert2(number, modulo) { + if (number === _0n7) + throw new Error("invert: expected non-zero number"); + if (modulo <= _0n7) + throw new Error("invert: expected positive modulus, got " + modulo); + let a = mod3(number, modulo); + let b = modulo; + let x = _0n7, y = _1n7, u = _1n7, v = _0n7; + while (a !== _0n7) { + const q = b / a; + const r = b % a; + const m = x - u * q; + const n = y - v * q; + b = a, a = r, x = u, y = v, u = m, v = n; + } + const gcd = b; + if (gcd !== _1n7) + throw new Error("invert: does not exist"); + return mod3(x, modulo); + } + function assertIsSquare2(Fp2, root, n) { + if (!Fp2.eql(Fp2.sqr(root), n)) + throw new Error("Cannot find square root"); + } + function sqrt3mod42(Fp2, n) { + const p1div4 = (Fp2.ORDER + _1n7) / _4n2; + const root = Fp2.pow(n, p1div4); + assertIsSquare2(Fp2, root, n); + return root; + } + function sqrt5mod82(Fp2, n) { + const p5div8 = (Fp2.ORDER - _5n3) / _8n4; + const n2 = Fp2.mul(n, _2n5); + const v = Fp2.pow(n2, p5div8); + const nv = Fp2.mul(n, v); + const i = Fp2.mul(Fp2.mul(nv, _2n5), v); + const root = Fp2.mul(nv, Fp2.sub(i, Fp2.ONE)); + assertIsSquare2(Fp2, root, n); + return root; + } + function sqrt9mod162(P) { + const Fp_ = Field2(P); + const tn = tonelliShanks2(P); + const c1 = tn(Fp_, Fp_.neg(Fp_.ONE)); + const c2 = tn(Fp_, c1); + const c3 = tn(Fp_, Fp_.neg(c1)); + const c4 = (P + _7n2) / _16n2; + return (Fp2, n) => { + let tv1 = Fp2.pow(n, c4); + let tv2 = Fp2.mul(tv1, c1); + const tv3 = Fp2.mul(tv1, c2); + const tv4 = Fp2.mul(tv1, c3); + const e1 = Fp2.eql(Fp2.sqr(tv2), n); + const e2 = Fp2.eql(Fp2.sqr(tv3), n); + tv1 = Fp2.cmov(tv1, tv2, e1); + tv2 = Fp2.cmov(tv4, tv3, e2); + const e3 = Fp2.eql(Fp2.sqr(tv2), n); + const root = Fp2.cmov(tv1, tv2, e3); + assertIsSquare2(Fp2, root, n); + return root; + }; + } + function tonelliShanks2(P) { + if (P < _3n3) + throw new Error("sqrt is not defined for small field"); + let Q = P - _1n7; + let S = 0; + while (Q % _2n5 === _0n7) { + Q /= _2n5; + S++; + } + let Z = _2n5; + const _Fp = Field2(P); + while (FpLegendre2(_Fp, Z) === 1) { + if (Z++ > 1e3) + throw new Error("Cannot find square root: probably non-prime P"); + } + if (S === 1) + return sqrt3mod42; + let cc = _Fp.pow(Z, Q); + const Q1div2 = (Q + _1n7) / _2n5; + return function tonelliSlow(Fp2, n) { + if (Fp2.is0(n)) + return n; + if (FpLegendre2(Fp2, n) !== 1) + throw new Error("Cannot find square root"); + let M = S; + let c = Fp2.mul(Fp2.ONE, cc); + let t = Fp2.pow(n, Q); + let R = Fp2.pow(n, Q1div2); + while (!Fp2.eql(t, Fp2.ONE)) { + if (Fp2.is0(t)) + return Fp2.ZERO; + let i = 1; + let t_tmp = Fp2.sqr(t); + while (!Fp2.eql(t_tmp, Fp2.ONE)) { + i++; + t_tmp = Fp2.sqr(t_tmp); + if (i === M) + throw new Error("Cannot find square root"); + } + const exponent = _1n7 << BigInt(M - i - 1); + const b = Fp2.pow(c, exponent); + M = i; + c = Fp2.sqr(b); + t = Fp2.mul(t, c); + R = Fp2.mul(R, b); + } + return R; + }; + } + function FpSqrt2(P) { + if (P % _4n2 === _3n3) + return sqrt3mod42; + if (P % _8n4 === _5n3) + return sqrt5mod82; + if (P % _16n2 === _9n2) + return sqrt9mod162(P); + return tonelliShanks2(P); + } + var isNegativeLE2 = (num, modulo) => (mod3(num, modulo) & _1n7) === _1n7; + exports2.isNegativeLE = isNegativeLE2; + var FIELD_FIELDS2 = [ + "create", + "isValid", + "is0", + "neg", + "inv", + "sqrt", + "sqr", + "eql", + "add", + "sub", + "mul", + "pow", + "div", + "addN", + "subN", + "mulN", + "sqrN" + ]; + function validateField2(field) { + const initial = { + ORDER: "bigint", + MASK: "bigint", + BYTES: "number", + BITS: "number" + }; + const opts = FIELD_FIELDS2.reduce((map, val) => { + map[val] = "function"; + return map; + }, initial); + (0, utils_ts_1._validateObject)(field, opts); + return field; + } + function FpPow2(Fp2, num, power) { + if (power < _0n7) + throw new Error("invalid exponent, negatives unsupported"); + if (power === _0n7) + return Fp2.ONE; + if (power === _1n7) + return num; + let p = Fp2.ONE; + let d = num; + while (power > _0n7) { + if (power & _1n7) + p = Fp2.mul(p, d); + d = Fp2.sqr(d); + power >>= _1n7; + } + return p; + } + function FpInvertBatch2(Fp2, nums, passZero = false) { + const inverted = new Array(nums.length).fill(passZero ? Fp2.ZERO : void 0); + const multipliedAcc = nums.reduce((acc, num, i) => { + if (Fp2.is0(num)) + return acc; + inverted[i] = acc; + return Fp2.mul(acc, num); + }, Fp2.ONE); + const invertedAcc = Fp2.inv(multipliedAcc); + nums.reduceRight((acc, num, i) => { + if (Fp2.is0(num)) + return acc; + inverted[i] = Fp2.mul(acc, inverted[i]); + return Fp2.mul(acc, num); + }, invertedAcc); + return inverted; + } + function FpDiv(Fp2, lhs, rhs) { + return Fp2.mul(lhs, typeof rhs === "bigint" ? invert2(rhs, Fp2.ORDER) : Fp2.inv(rhs)); + } + function FpLegendre2(Fp2, n) { + const p1mod2 = (Fp2.ORDER - _1n7) / _2n5; + const powered = Fp2.pow(n, p1mod2); + const yes = Fp2.eql(powered, Fp2.ONE); + const zero = Fp2.eql(powered, Fp2.ZERO); + const no = Fp2.eql(powered, Fp2.neg(Fp2.ONE)); + if (!yes && !zero && !no) + throw new Error("invalid Legendre symbol result"); + return yes ? 1 : zero ? 0 : -1; + } + function FpIsSquare(Fp2, n) { + const l = FpLegendre2(Fp2, n); + return l === 1; + } + function nLength2(n, nBitLength) { + if (nBitLength !== void 0) + (0, utils_ts_1.anumber)(nBitLength); + const _nBitLength = nBitLength !== void 0 ? nBitLength : n.toString(2).length; + const nByteLength = Math.ceil(_nBitLength / 8); + return { nBitLength: _nBitLength, nByteLength }; + } + function Field2(ORDER, bitLenOrOpts, isLE = false, opts = {}) { + if (ORDER <= _0n7) + throw new Error("invalid field: expected ORDER > 0, got " + ORDER); + let _nbitLength = void 0; + let _sqrt = void 0; + let modFromBytes = false; + let allowedLengths = void 0; + if (typeof bitLenOrOpts === "object" && bitLenOrOpts != null) { + if (opts.sqrt || isLE) + throw new Error("cannot specify opts in two arguments"); + const _opts = bitLenOrOpts; + if (_opts.BITS) + _nbitLength = _opts.BITS; + if (_opts.sqrt) + _sqrt = _opts.sqrt; + if (typeof _opts.isLE === "boolean") + isLE = _opts.isLE; + if (typeof _opts.modFromBytes === "boolean") + modFromBytes = _opts.modFromBytes; + allowedLengths = _opts.allowedLengths; + } else { + if (typeof bitLenOrOpts === "number") + _nbitLength = bitLenOrOpts; + if (opts.sqrt) + _sqrt = opts.sqrt; + } + const { nBitLength: BITS, nByteLength: BYTES } = nLength2(ORDER, _nbitLength); + if (BYTES > 2048) + throw new Error("invalid field: expected ORDER of <= 2048 bytes"); + let sqrtP; + const f = Object.freeze({ + ORDER, + isLE, + BITS, + BYTES, + MASK: (0, utils_ts_1.bitMask)(BITS), + ZERO: _0n7, + ONE: _1n7, + allowedLengths, + create: (num) => mod3(num, ORDER), + isValid: (num) => { + if (typeof num !== "bigint") + throw new Error("invalid field element: expected bigint, got " + typeof num); + return _0n7 <= num && num < ORDER; + }, + is0: (num) => num === _0n7, + // is valid and invertible + isValidNot0: (num) => !f.is0(num) && f.isValid(num), + isOdd: (num) => (num & _1n7) === _1n7, + neg: (num) => mod3(-num, ORDER), + eql: (lhs, rhs) => lhs === rhs, + sqr: (num) => mod3(num * num, ORDER), + add: (lhs, rhs) => mod3(lhs + rhs, ORDER), + sub: (lhs, rhs) => mod3(lhs - rhs, ORDER), + mul: (lhs, rhs) => mod3(lhs * rhs, ORDER), + pow: (num, power) => FpPow2(f, num, power), + div: (lhs, rhs) => mod3(lhs * invert2(rhs, ORDER), ORDER), + // Same as above, but doesn't normalize + sqrN: (num) => num * num, + addN: (lhs, rhs) => lhs + rhs, + subN: (lhs, rhs) => lhs - rhs, + mulN: (lhs, rhs) => lhs * rhs, + inv: (num) => invert2(num, ORDER), + sqrt: _sqrt || ((n) => { + if (!sqrtP) + sqrtP = FpSqrt2(ORDER); + return sqrtP(f, n); + }), + toBytes: (num) => isLE ? (0, utils_ts_1.numberToBytesLE)(num, BYTES) : (0, utils_ts_1.numberToBytesBE)(num, BYTES), + fromBytes: (bytes, skipValidation = true) => { + if (allowedLengths) { + if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) { + throw new Error("Field.fromBytes: expected " + allowedLengths + " bytes, got " + bytes.length); + } + const padded = new Uint8Array(BYTES); + padded.set(bytes, isLE ? 0 : padded.length - bytes.length); + bytes = padded; + } + if (bytes.length !== BYTES) + throw new Error("Field.fromBytes: expected " + BYTES + " bytes, got " + bytes.length); + let scalar = isLE ? (0, utils_ts_1.bytesToNumberLE)(bytes) : (0, utils_ts_1.bytesToNumberBE)(bytes); + if (modFromBytes) + scalar = mod3(scalar, ORDER); + if (!skipValidation) { + if (!f.isValid(scalar)) + throw new Error("invalid field element: outside of range 0..ORDER"); + } + return scalar; + }, + // TODO: we don't need it here, move out to separate fn + invertBatch: (lst) => FpInvertBatch2(f, lst), + // We can't move this out because Fp6, Fp12 implement it + // and it's unclear what to return in there. + cmov: (a, b, c) => c ? b : a + }); + return Object.freeze(f); + } + function FpSqrtOdd(Fp2, elm) { + if (!Fp2.isOdd) + throw new Error("Field doesn't have isOdd"); + const root = Fp2.sqrt(elm); + return Fp2.isOdd(root) ? root : Fp2.neg(root); + } + function FpSqrtEven2(Fp2, elm) { + if (!Fp2.isOdd) + throw new Error("Field doesn't have isOdd"); + const root = Fp2.sqrt(elm); + return Fp2.isOdd(root) ? Fp2.neg(root) : root; + } + function hashToPrivateScalar(hash, groupOrder, isLE = false) { + hash = (0, utils_ts_1.ensureBytes)("privateHash", hash); + const hashLen = hash.length; + const minLen = nLength2(groupOrder).nByteLength + 8; + if (minLen < 24 || hashLen < minLen || hashLen > 1024) + throw new Error("hashToPrivateScalar: expected " + minLen + "-1024 bytes of input, got " + hashLen); + const num = isLE ? (0, utils_ts_1.bytesToNumberLE)(hash) : (0, utils_ts_1.bytesToNumberBE)(hash); + return mod3(num, groupOrder - _1n7) + _1n7; + } + function getFieldBytesLength2(fieldOrder) { + if (typeof fieldOrder !== "bigint") + throw new Error("field order must be bigint"); + const bitLength = fieldOrder.toString(2).length; + return Math.ceil(bitLength / 8); + } + function getMinHashLength2(fieldOrder) { + const length = getFieldBytesLength2(fieldOrder); + return length + Math.ceil(length / 2); + } + function mapHashToField2(key, fieldOrder, isLE = false) { + const len = key.length; + const fieldLen = getFieldBytesLength2(fieldOrder); + const minLen = getMinHashLength2(fieldOrder); + if (len < 16 || len < minLen || len > 1024) + throw new Error("expected " + minLen + "-1024 bytes of input, got " + len); + const num = isLE ? (0, utils_ts_1.bytesToNumberLE)(key) : (0, utils_ts_1.bytesToNumberBE)(key); + const reduced = mod3(num, fieldOrder - _1n7) + _1n7; + return isLE ? (0, utils_ts_1.numberToBytesLE)(reduced, fieldLen) : (0, utils_ts_1.numberToBytesBE)(reduced, fieldLen); + } + } +}); + +// node_modules/@noble/curves/abstract/curve.js +var require_curve = __commonJS({ + "node_modules/@noble/curves/abstract/curve.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.wNAF = void 0; + exports2.negateCt = negateCt2; + exports2.normalizeZ = normalizeZ2; + exports2.mulEndoUnsafe = mulEndoUnsafe; + exports2.pippenger = pippenger2; + exports2.precomputeMSMUnsafe = precomputeMSMUnsafe; + exports2.validateBasic = validateBasic; + exports2._createCurveFields = _createCurveFields; + var utils_ts_1 = require_utils14(); + var modular_ts_1 = require_modular(); + var _0n7 = BigInt(0); + var _1n7 = BigInt(1); + function negateCt2(condition, item) { + const neg = item.negate(); + return condition ? neg : item; + } + function normalizeZ2(c, points) { + const invertedZs = (0, modular_ts_1.FpInvertBatch)(c.Fp, points.map((p) => p.Z)); + return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i]))); + } + function validateW2(W, bits) { + if (!Number.isSafeInteger(W) || W <= 0 || W > bits) + throw new Error("invalid window size, expected [1.." + bits + "], got W=" + W); + } + function calcWOpts2(W, scalarBits) { + validateW2(W, scalarBits); + const windows = Math.ceil(scalarBits / W) + 1; + const windowSize = 2 ** (W - 1); + const maxNumber = 2 ** W; + const mask = (0, utils_ts_1.bitMask)(W); + const shiftBy = BigInt(W); + return { windows, windowSize, mask, maxNumber, shiftBy }; + } + function calcOffsets2(n, window2, wOpts) { + const { windowSize, mask, maxNumber, shiftBy } = wOpts; + let wbits = Number(n & mask); + let nextN = n >> shiftBy; + if (wbits > windowSize) { + wbits -= maxNumber; + nextN += _1n7; + } + const offsetStart = window2 * windowSize; + const offset = offsetStart + Math.abs(wbits) - 1; + const isZero = wbits === 0; + const isNeg = wbits < 0; + const isNegF = window2 % 2 !== 0; + const offsetF = offsetStart; + return { nextN, offset, isZero, isNeg, isNegF, offsetF }; + } + function validateMSMPoints2(points, c) { + if (!Array.isArray(points)) + throw new Error("array expected"); + points.forEach((p, i) => { + if (!(p instanceof c)) + throw new Error("invalid point at index " + i); + }); + } + function validateMSMScalars2(scalars, field) { + if (!Array.isArray(scalars)) + throw new Error("array of scalars expected"); + scalars.forEach((s, i) => { + if (!field.isValid(s)) + throw new Error("invalid scalar at index " + i); + }); + } + var pointPrecomputes2 = /* @__PURE__ */ new WeakMap(); + var pointWindowSizes2 = /* @__PURE__ */ new WeakMap(); + function getW2(P) { + return pointWindowSizes2.get(P) || 1; + } + function assert02(n) { + if (n !== _0n7) + throw new Error("invalid wNAF"); + } + var wNAF2 = class { + // Parametrized with a given Point class (not individual point) + constructor(Point, bits) { + this.BASE = Point.BASE; + this.ZERO = Point.ZERO; + this.Fn = Point.Fn; + this.bits = bits; + } + // non-const time multiplication ladder + _unsafeLadder(elm, n, p = this.ZERO) { + let d = elm; + while (n > _0n7) { + if (n & _1n7) + p = p.add(d); + d = d.double(); + n >>= _1n7; + } + return p; + } + /** + * Creates a wNAF precomputation window. Used for caching. + * Default window size is set by `utils.precompute()` and is equal to 8. + * Number of precomputed points depends on the curve size: + * 2^(𝑊−1) * (Math.ceil(𝑛 / 𝑊) + 1), where: + * - 𝑊 is the window size + * - 𝑛 is the bitlength of the curve order. + * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224. + * @param point Point instance + * @param W window size + * @returns precomputed point tables flattened to a single array + */ + precomputeWindow(point, W) { + const { windows, windowSize } = calcWOpts2(W, this.bits); + const points = []; + let p = point; + let base = p; + for (let window2 = 0; window2 < windows; window2++) { + base = p; + points.push(base); + for (let i = 1; i < windowSize; i++) { + base = base.add(p); + points.push(base); + } + p = base.double(); + } + return points; + } + /** + * Implements ec multiplication using precomputed tables and w-ary non-adjacent form. + * More compact implementation: + * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541 + * @returns real and fake (for const-time) points + */ + wNAF(W, precomputes, n) { + if (!this.Fn.isValid(n)) + throw new Error("invalid scalar"); + let p = this.ZERO; + let f = this.BASE; + const wo = calcWOpts2(W, this.bits); + for (let window2 = 0; window2 < wo.windows; window2++) { + const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets2(n, window2, wo); + n = nextN; + if (isZero) { + f = f.add(negateCt2(isNegF, precomputes[offsetF])); + } else { + p = p.add(negateCt2(isNeg, precomputes[offset])); + } + } + assert02(n); + return { p, f }; + } + /** + * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form. + * @param acc accumulator point to add result of multiplication + * @returns point + */ + wNAFUnsafe(W, precomputes, n, acc = this.ZERO) { + const wo = calcWOpts2(W, this.bits); + for (let window2 = 0; window2 < wo.windows; window2++) { + if (n === _0n7) + break; + const { nextN, offset, isZero, isNeg } = calcOffsets2(n, window2, wo); + n = nextN; + if (isZero) { + continue; + } else { + const item = precomputes[offset]; + acc = acc.add(isNeg ? item.negate() : item); + } + } + assert02(n); + return acc; + } + getPrecomputes(W, point, transform) { + let comp = pointPrecomputes2.get(point); + if (!comp) { + comp = this.precomputeWindow(point, W); + if (W !== 1) { + if (typeof transform === "function") + comp = transform(comp); + pointPrecomputes2.set(point, comp); + } + } + return comp; + } + cached(point, scalar, transform) { + const W = getW2(point); + return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar); + } + unsafe(point, scalar, transform, prev) { + const W = getW2(point); + if (W === 1) + return this._unsafeLadder(point, scalar, prev); + return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev); + } + // We calculate precomputes for elliptic curve point multiplication + // using windowed method. This specifies window size and + // stores precomputed values. Usually only base point would be precomputed. + createCache(P, W) { + validateW2(W, this.bits); + pointWindowSizes2.set(P, W); + pointPrecomputes2.delete(P); + } + hasCache(elm) { + return getW2(elm) !== 1; + } + }; + exports2.wNAF = wNAF2; + function mulEndoUnsafe(Point, point, k1, k2) { + let acc = point; + let p1 = Point.ZERO; + let p2 = Point.ZERO; + while (k1 > _0n7 || k2 > _0n7) { + if (k1 & _1n7) + p1 = p1.add(acc); + if (k2 & _1n7) + p2 = p2.add(acc); + acc = acc.double(); + k1 >>= _1n7; + k2 >>= _1n7; + } + return { p1, p2 }; + } + function pippenger2(c, fieldN, points, scalars) { + validateMSMPoints2(points, c); + validateMSMScalars2(scalars, fieldN); + const plength = points.length; + const slength = scalars.length; + if (plength !== slength) + throw new Error("arrays of points and scalars must have equal length"); + const zero = c.ZERO; + const wbits = (0, utils_ts_1.bitLen)(BigInt(plength)); + let windowSize = 1; + if (wbits > 12) + windowSize = wbits - 3; + else if (wbits > 4) + windowSize = wbits - 2; + else if (wbits > 0) + windowSize = 2; + const MASK = (0, utils_ts_1.bitMask)(windowSize); + const buckets = new Array(Number(MASK) + 1).fill(zero); + const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize; + let sum = zero; + for (let i = lastBits; i >= 0; i -= windowSize) { + buckets.fill(zero); + for (let j = 0; j < slength; j++) { + const scalar = scalars[j]; + const wbits2 = Number(scalar >> BigInt(i) & MASK); + buckets[wbits2] = buckets[wbits2].add(points[j]); + } + let resI = zero; + for (let j = buckets.length - 1, sumI = zero; j > 0; j--) { + sumI = sumI.add(buckets[j]); + resI = resI.add(sumI); + } + sum = sum.add(resI); + if (i !== 0) + for (let j = 0; j < windowSize; j++) + sum = sum.double(); + } + return sum; + } + function precomputeMSMUnsafe(c, fieldN, points, windowSize) { + validateW2(windowSize, fieldN.BITS); + validateMSMPoints2(points, c); + const zero = c.ZERO; + const tableSize = 2 ** windowSize - 1; + const chunks = Math.ceil(fieldN.BITS / windowSize); + const MASK = (0, utils_ts_1.bitMask)(windowSize); + const tables = points.map((p) => { + const res = []; + for (let i = 0, acc = p; i < tableSize; i++) { + res.push(acc); + acc = acc.add(p); + } + return res; + }); + return (scalars) => { + validateMSMScalars2(scalars, fieldN); + if (scalars.length > points.length) + throw new Error("array of scalars must be smaller than array of points"); + let res = zero; + for (let i = 0; i < chunks; i++) { + if (res !== zero) + for (let j = 0; j < windowSize; j++) + res = res.double(); + const shiftBy = BigInt(chunks * windowSize - (i + 1) * windowSize); + for (let j = 0; j < scalars.length; j++) { + const n = scalars[j]; + const curr = Number(n >> shiftBy & MASK); + if (!curr) + continue; + res = res.add(tables[j][curr - 1]); + } + } + return res; + }; + } + function validateBasic(curve) { + (0, modular_ts_1.validateField)(curve.Fp); + (0, utils_ts_1.validateObject)(curve, { + n: "bigint", + h: "bigint", + Gx: "field", + Gy: "field" + }, { + nBitLength: "isSafeInteger", + nByteLength: "isSafeInteger" + }); + return Object.freeze({ + ...(0, modular_ts_1.nLength)(curve.n, curve.nBitLength), + ...curve, + ...{ p: curve.Fp.ORDER } + }); + } + function createField2(order, field, isLE) { + if (field) { + if (field.ORDER !== order) + throw new Error("Field.ORDER must match order: Fp == p, Fn == n"); + (0, modular_ts_1.validateField)(field); + return field; + } else { + return (0, modular_ts_1.Field)(order, { isLE }); + } + } + function _createCurveFields(type, CURVE, curveOpts = {}, FpFnLE) { + if (FpFnLE === void 0) + FpFnLE = type === "edwards"; + if (!CURVE || typeof CURVE !== "object") + throw new Error(`expected valid ${type} CURVE object`); + for (const p of ["p", "n", "h"]) { + const val = CURVE[p]; + if (!(typeof val === "bigint" && val > _0n7)) + throw new Error(`CURVE.${p} must be positive bigint`); + } + const Fp2 = createField2(CURVE.p, curveOpts.Fp, FpFnLE); + const Fn2 = createField2(CURVE.n, curveOpts.Fn, FpFnLE); + const _b = type === "weierstrass" ? "b" : "d"; + const params = ["Gx", "Gy", "a", _b]; + for (const p of params) { + if (!Fp2.isValid(CURVE[p])) + throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`); + } + CURVE = Object.freeze(Object.assign({}, CURVE)); + return { CURVE, Fp: Fp2, Fn: Fn2 }; + } + } +}); + +// node_modules/@noble/curves/abstract/weierstrass.js +var require_weierstrass = __commonJS({ + "node_modules/@noble/curves/abstract/weierstrass.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.DER = exports2.DERErr = void 0; + exports2._splitEndoScalar = _splitEndoScalar; + exports2._normFnElement = _normFnElement; + exports2.weierstrassN = weierstrassN; + exports2.SWUFpSqrtRatio = SWUFpSqrtRatio; + exports2.mapToCurveSimpleSWU = mapToCurveSimpleSWU; + exports2.ecdh = ecdh; + exports2.ecdsa = ecdsa; + exports2.weierstrassPoints = weierstrassPoints; + exports2._legacyHelperEquat = _legacyHelperEquat; + exports2.weierstrass = weierstrass; + var hmac_js_1 = require_hmac(); + var utils_1 = require_utils9(); + var utils_ts_1 = require_utils14(); + var curve_ts_1 = require_curve(); + var modular_ts_1 = require_modular(); + var divNearest = (num, den) => (num + (num >= 0 ? den : -den) / _2n5) / den; + function _splitEndoScalar(k, basis, n) { + const [[a1, b1], [a2, b2]] = basis; + const c1 = divNearest(b2 * k, n); + const c2 = divNearest(-b1 * k, n); + let k1 = k - c1 * a1 - c2 * a2; + let k2 = -c1 * b1 - c2 * b2; + const k1neg = k1 < _0n7; + const k2neg = k2 < _0n7; + if (k1neg) + k1 = -k1; + if (k2neg) + k2 = -k2; + const MAX_NUM = (0, utils_ts_1.bitMask)(Math.ceil((0, utils_ts_1.bitLen)(n) / 2)) + _1n7; + if (k1 < _0n7 || k1 >= MAX_NUM || k2 < _0n7 || k2 >= MAX_NUM) { + throw new Error("splitScalar (endomorphism): failed, k=" + k); + } + return { k1neg, k1, k2neg, k2 }; + } + function validateSigFormat(format) { + if (!["compact", "recovered", "der"].includes(format)) + throw new Error('Signature format must be "compact", "recovered", or "der"'); + return format; + } + function validateSigOpts(opts, def) { + const optsn = {}; + for (let optName of Object.keys(def)) { + optsn[optName] = opts[optName] === void 0 ? def[optName] : opts[optName]; + } + (0, utils_ts_1._abool2)(optsn.lowS, "lowS"); + (0, utils_ts_1._abool2)(optsn.prehash, "prehash"); + if (optsn.format !== void 0) + validateSigFormat(optsn.format); + return optsn; + } + var DERErr = class extends Error { + constructor(m = "") { + super(m); + } + }; + exports2.DERErr = DERErr; + exports2.DER = { + // asn.1 DER encoding utils + Err: DERErr, + // Basic building block is TLV (Tag-Length-Value) + _tlv: { + encode: (tag, data) => { + const { Err: E } = exports2.DER; + if (tag < 0 || tag > 256) + throw new E("tlv.encode: wrong tag"); + if (data.length & 1) + throw new E("tlv.encode: unpadded data"); + const dataLen = data.length / 2; + const len = (0, utils_ts_1.numberToHexUnpadded)(dataLen); + if (len.length / 2 & 128) + throw new E("tlv.encode: long form length too big"); + const lenLen = dataLen > 127 ? (0, utils_ts_1.numberToHexUnpadded)(len.length / 2 | 128) : ""; + const t = (0, utils_ts_1.numberToHexUnpadded)(tag); + return t + lenLen + len + data; + }, + // v - value, l - left bytes (unparsed) + decode(tag, data) { + const { Err: E } = exports2.DER; + let pos = 0; + if (tag < 0 || tag > 256) + throw new E("tlv.encode: wrong tag"); + if (data.length < 2 || data[pos++] !== tag) + throw new E("tlv.decode: wrong tlv"); + const first = data[pos++]; + const isLong = !!(first & 128); + let length = 0; + if (!isLong) + length = first; + else { + const lenLen = first & 127; + if (!lenLen) + throw new E("tlv.decode(long): indefinite length not supported"); + if (lenLen > 4) + throw new E("tlv.decode(long): byte length is too big"); + const lengthBytes = data.subarray(pos, pos + lenLen); + if (lengthBytes.length !== lenLen) + throw new E("tlv.decode: length bytes not complete"); + if (lengthBytes[0] === 0) + throw new E("tlv.decode(long): zero leftmost byte"); + for (const b of lengthBytes) + length = length << 8 | b; + pos += lenLen; + if (length < 128) + throw new E("tlv.decode(long): not minimal encoding"); + } + const v = data.subarray(pos, pos + length); + if (v.length !== length) + throw new E("tlv.decode: wrong value length"); + return { v, l: data.subarray(pos + length) }; + } + }, + // https://crypto.stackexchange.com/a/57734 Leftmost bit of first byte is 'negative' flag, + // since we always use positive integers here. It must always be empty: + // - add zero byte if exists + // - if next byte doesn't have a flag, leading zero is not allowed (minimal encoding) + _int: { + encode(num) { + const { Err: E } = exports2.DER; + if (num < _0n7) + throw new E("integer: negative integers are not allowed"); + let hex = (0, utils_ts_1.numberToHexUnpadded)(num); + if (Number.parseInt(hex[0], 16) & 8) + hex = "00" + hex; + if (hex.length & 1) + throw new E("unexpected DER parsing assertion: unpadded hex"); + return hex; + }, + decode(data) { + const { Err: E } = exports2.DER; + if (data[0] & 128) + throw new E("invalid signature integer: negative"); + if (data[0] === 0 && !(data[1] & 128)) + throw new E("invalid signature integer: unnecessary leading zero"); + return (0, utils_ts_1.bytesToNumberBE)(data); + } + }, + toSig(hex) { + const { Err: E, _int: int, _tlv: tlv } = exports2.DER; + const data = (0, utils_ts_1.ensureBytes)("signature", hex); + const { v: seqBytes, l: seqLeftBytes } = tlv.decode(48, data); + if (seqLeftBytes.length) + throw new E("invalid signature: left bytes after parsing"); + const { v: rBytes, l: rLeftBytes } = tlv.decode(2, seqBytes); + const { v: sBytes, l: sLeftBytes } = tlv.decode(2, rLeftBytes); + if (sLeftBytes.length) + throw new E("invalid signature: left bytes after parsing"); + return { r: int.decode(rBytes), s: int.decode(sBytes) }; + }, + hexFromSig(sig) { + const { _tlv: tlv, _int: int } = exports2.DER; + const rs = tlv.encode(2, int.encode(sig.r)); + const ss = tlv.encode(2, int.encode(sig.s)); + const seq = rs + ss; + return tlv.encode(48, seq); + } + }; + var _0n7 = BigInt(0); + var _1n7 = BigInt(1); + var _2n5 = BigInt(2); + var _3n3 = BigInt(3); + var _4n2 = BigInt(4); + function _normFnElement(Fn2, key) { + const { BYTES: expected } = Fn2; + let num; + if (typeof key === "bigint") { + num = key; + } else { + let bytes = (0, utils_ts_1.ensureBytes)("private key", key); + try { + num = Fn2.fromBytes(bytes); + } catch (error) { + throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`); + } + } + if (!Fn2.isValidNot0(num)) + throw new Error("invalid private key: out of range [1..N-1]"); + return num; + } + function weierstrassN(params, extraOpts = {}) { + const validated = (0, curve_ts_1._createCurveFields)("weierstrass", params, extraOpts); + const { Fp: Fp2, Fn: Fn2 } = validated; + let CURVE = validated.CURVE; + const { h: cofactor, n: CURVE_ORDER } = CURVE; + (0, utils_ts_1._validateObject)(extraOpts, {}, { + allowInfinityPoint: "boolean", + clearCofactor: "function", + isTorsionFree: "function", + fromBytes: "function", + toBytes: "function", + endo: "object", + wrapPrivateKey: "boolean" + }); + const { endo } = extraOpts; + if (endo) { + if (!Fp2.is0(CURVE.a) || typeof endo.beta !== "bigint" || !Array.isArray(endo.basises)) { + throw new Error('invalid endo: expected "beta": bigint and "basises": array'); + } + } + const lengths = getWLengths(Fp2, Fn2); + function assertCompressionIsSupported() { + if (!Fp2.isOdd) + throw new Error("compression is not supported: Field does not have .isOdd()"); + } + function pointToBytes(_c, point, isCompressed) { + const { x, y } = point.toAffine(); + const bx = Fp2.toBytes(x); + (0, utils_ts_1._abool2)(isCompressed, "isCompressed"); + if (isCompressed) { + assertCompressionIsSupported(); + const hasEvenY = !Fp2.isOdd(y); + return (0, utils_ts_1.concatBytes)(pprefix(hasEvenY), bx); + } else { + return (0, utils_ts_1.concatBytes)(Uint8Array.of(4), bx, Fp2.toBytes(y)); + } + } + function pointFromBytes(bytes) { + (0, utils_ts_1._abytes2)(bytes, void 0, "Point"); + const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; + const length = bytes.length; + const head = bytes[0]; + const tail = bytes.subarray(1); + if (length === comp && (head === 2 || head === 3)) { + const x = Fp2.fromBytes(tail); + if (!Fp2.isValid(x)) + throw new Error("bad point: is not on curve, wrong x"); + const y2 = weierstrassEquation(x); + let y; + try { + y = Fp2.sqrt(y2); + } catch (sqrtError) { + const err2 = sqrtError instanceof Error ? ": " + sqrtError.message : ""; + throw new Error("bad point: is not on curve, sqrt error" + err2); + } + assertCompressionIsSupported(); + const isYOdd = Fp2.isOdd(y); + const isHeadOdd = (head & 1) === 1; + if (isHeadOdd !== isYOdd) + y = Fp2.neg(y); + return { x, y }; + } else if (length === uncomp && head === 4) { + const L = Fp2.BYTES; + const x = Fp2.fromBytes(tail.subarray(0, L)); + const y = Fp2.fromBytes(tail.subarray(L, L * 2)); + if (!isValidXY(x, y)) + throw new Error("bad point: is not on curve"); + return { x, y }; + } else { + throw new Error(`bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`); + } + } + const encodePoint = extraOpts.toBytes || pointToBytes; + const decodePoint = extraOpts.fromBytes || pointFromBytes; + function weierstrassEquation(x) { + const x2 = Fp2.sqr(x); + const x3 = Fp2.mul(x2, x); + return Fp2.add(Fp2.add(x3, Fp2.mul(x, CURVE.a)), CURVE.b); + } + function isValidXY(x, y) { + const left = Fp2.sqr(y); + const right = weierstrassEquation(x); + return Fp2.eql(left, right); + } + if (!isValidXY(CURVE.Gx, CURVE.Gy)) + throw new Error("bad curve params: generator point"); + const _4a3 = Fp2.mul(Fp2.pow(CURVE.a, _3n3), _4n2); + const _27b2 = Fp2.mul(Fp2.sqr(CURVE.b), BigInt(27)); + if (Fp2.is0(Fp2.add(_4a3, _27b2))) + throw new Error("bad curve params: a or b"); + function acoord(title, n, banZero = false) { + if (!Fp2.isValid(n) || banZero && Fp2.is0(n)) + throw new Error(`bad point coordinate ${title}`); + return n; + } + function aprjpoint(other) { + if (!(other instanceof Point)) + throw new Error("ProjectivePoint expected"); + } + function splitEndoScalarN(k) { + if (!endo || !endo.basises) + throw new Error("no endo"); + return _splitEndoScalar(k, endo.basises, Fn2.ORDER); + } + const toAffineMemo = (0, utils_ts_1.memoized)((p, iz) => { + const { X, Y, Z } = p; + if (Fp2.eql(Z, Fp2.ONE)) + return { x: X, y: Y }; + const is0 = p.is0(); + if (iz == null) + iz = is0 ? Fp2.ONE : Fp2.inv(Z); + const x = Fp2.mul(X, iz); + const y = Fp2.mul(Y, iz); + const zz = Fp2.mul(Z, iz); + if (is0) + return { x: Fp2.ZERO, y: Fp2.ZERO }; + if (!Fp2.eql(zz, Fp2.ONE)) + throw new Error("invZ was invalid"); + return { x, y }; + }); + const assertValidMemo = (0, utils_ts_1.memoized)((p) => { + if (p.is0()) { + if (extraOpts.allowInfinityPoint && !Fp2.is0(p.Y)) + return; + throw new Error("bad point: ZERO"); + } + const { x, y } = p.toAffine(); + if (!Fp2.isValid(x) || !Fp2.isValid(y)) + throw new Error("bad point: x or y not field elements"); + if (!isValidXY(x, y)) + throw new Error("bad point: equation left != right"); + if (!p.isTorsionFree()) + throw new Error("bad point: not in prime-order subgroup"); + return true; + }); + function finishEndo(endoBeta, k1p, k2p, k1neg, k2neg) { + k2p = new Point(Fp2.mul(k2p.X, endoBeta), k2p.Y, k2p.Z); + k1p = (0, curve_ts_1.negateCt)(k1neg, k1p); + k2p = (0, curve_ts_1.negateCt)(k2neg, k2p); + return k1p.add(k2p); + } + class Point { + /** Does NOT validate if the point is valid. Use `.assertValidity()`. */ + constructor(X, Y, Z) { + this.X = acoord("x", X); + this.Y = acoord("y", Y, true); + this.Z = acoord("z", Z); + Object.freeze(this); + } + static CURVE() { + return CURVE; + } + /** Does NOT validate if the point is valid. Use `.assertValidity()`. */ + static fromAffine(p) { + const { x, y } = p || {}; + if (!p || !Fp2.isValid(x) || !Fp2.isValid(y)) + throw new Error("invalid affine point"); + if (p instanceof Point) + throw new Error("projective point not allowed"); + if (Fp2.is0(x) && Fp2.is0(y)) + return Point.ZERO; + return new Point(x, y, Fp2.ONE); + } + static fromBytes(bytes) { + const P = Point.fromAffine(decodePoint((0, utils_ts_1._abytes2)(bytes, void 0, "point"))); + P.assertValidity(); + return P; + } + static fromHex(hex) { + return Point.fromBytes((0, utils_ts_1.ensureBytes)("pointHex", hex)); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + /** + * + * @param windowSize + * @param isLazy true will defer table computation until the first multiplication + * @returns + */ + precompute(windowSize = 8, isLazy = true) { + wnaf.createCache(this, windowSize); + if (!isLazy) + this.multiply(_3n3); + return this; + } + // TODO: return `this` + /** A point on curve is valid if it conforms to equation. */ + assertValidity() { + assertValidMemo(this); + } + hasEvenY() { + const { y } = this.toAffine(); + if (!Fp2.isOdd) + throw new Error("Field doesn't support isOdd"); + return !Fp2.isOdd(y); + } + /** Compare one point to another. */ + equals(other) { + aprjpoint(other); + const { X: X1, Y: Y1, Z: Z1 } = this; + const { X: X2, Y: Y2, Z: Z2 } = other; + const U1 = Fp2.eql(Fp2.mul(X1, Z2), Fp2.mul(X2, Z1)); + const U2 = Fp2.eql(Fp2.mul(Y1, Z2), Fp2.mul(Y2, Z1)); + return U1 && U2; + } + /** Flips point to one corresponding to (x, -y) in Affine coordinates. */ + negate() { + return new Point(this.X, Fp2.neg(this.Y), this.Z); + } + // Renes-Costello-Batina exception-free doubling formula. + // There is 30% faster Jacobian formula, but it is not complete. + // https://eprint.iacr.org/2015/1060, algorithm 3 + // Cost: 8M + 3S + 3*a + 2*b3 + 15add. + double() { + const { a, b } = CURVE; + const b3 = Fp2.mul(b, _3n3); + const { X: X1, Y: Y1, Z: Z1 } = this; + let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO; + let t0 = Fp2.mul(X1, X1); + let t1 = Fp2.mul(Y1, Y1); + let t2 = Fp2.mul(Z1, Z1); + let t3 = Fp2.mul(X1, Y1); + t3 = Fp2.add(t3, t3); + Z3 = Fp2.mul(X1, Z1); + Z3 = Fp2.add(Z3, Z3); + X3 = Fp2.mul(a, Z3); + Y3 = Fp2.mul(b3, t2); + Y3 = Fp2.add(X3, Y3); + X3 = Fp2.sub(t1, Y3); + Y3 = Fp2.add(t1, Y3); + Y3 = Fp2.mul(X3, Y3); + X3 = Fp2.mul(t3, X3); + Z3 = Fp2.mul(b3, Z3); + t2 = Fp2.mul(a, t2); + t3 = Fp2.sub(t0, t2); + t3 = Fp2.mul(a, t3); + t3 = Fp2.add(t3, Z3); + Z3 = Fp2.add(t0, t0); + t0 = Fp2.add(Z3, t0); + t0 = Fp2.add(t0, t2); + t0 = Fp2.mul(t0, t3); + Y3 = Fp2.add(Y3, t0); + t2 = Fp2.mul(Y1, Z1); + t2 = Fp2.add(t2, t2); + t0 = Fp2.mul(t2, t3); + X3 = Fp2.sub(X3, t0); + Z3 = Fp2.mul(t2, t1); + Z3 = Fp2.add(Z3, Z3); + Z3 = Fp2.add(Z3, Z3); + return new Point(X3, Y3, Z3); + } + // Renes-Costello-Batina exception-free addition formula. + // There is 30% faster Jacobian formula, but it is not complete. + // https://eprint.iacr.org/2015/1060, algorithm 1 + // Cost: 12M + 0S + 3*a + 3*b3 + 23add. + add(other) { + aprjpoint(other); + const { X: X1, Y: Y1, Z: Z1 } = this; + const { X: X2, Y: Y2, Z: Z2 } = other; + let X3 = Fp2.ZERO, Y3 = Fp2.ZERO, Z3 = Fp2.ZERO; + const a = CURVE.a; + const b3 = Fp2.mul(CURVE.b, _3n3); + let t0 = Fp2.mul(X1, X2); + let t1 = Fp2.mul(Y1, Y2); + let t2 = Fp2.mul(Z1, Z2); + let t3 = Fp2.add(X1, Y1); + let t4 = Fp2.add(X2, Y2); + t3 = Fp2.mul(t3, t4); + t4 = Fp2.add(t0, t1); + t3 = Fp2.sub(t3, t4); + t4 = Fp2.add(X1, Z1); + let t5 = Fp2.add(X2, Z2); + t4 = Fp2.mul(t4, t5); + t5 = Fp2.add(t0, t2); + t4 = Fp2.sub(t4, t5); + t5 = Fp2.add(Y1, Z1); + X3 = Fp2.add(Y2, Z2); + t5 = Fp2.mul(t5, X3); + X3 = Fp2.add(t1, t2); + t5 = Fp2.sub(t5, X3); + Z3 = Fp2.mul(a, t4); + X3 = Fp2.mul(b3, t2); + Z3 = Fp2.add(X3, Z3); + X3 = Fp2.sub(t1, Z3); + Z3 = Fp2.add(t1, Z3); + Y3 = Fp2.mul(X3, Z3); + t1 = Fp2.add(t0, t0); + t1 = Fp2.add(t1, t0); + t2 = Fp2.mul(a, t2); + t4 = Fp2.mul(b3, t4); + t1 = Fp2.add(t1, t2); + t2 = Fp2.sub(t0, t2); + t2 = Fp2.mul(a, t2); + t4 = Fp2.add(t4, t2); + t0 = Fp2.mul(t1, t4); + Y3 = Fp2.add(Y3, t0); + t0 = Fp2.mul(t5, t4); + X3 = Fp2.mul(t3, X3); + X3 = Fp2.sub(X3, t0); + t0 = Fp2.mul(t3, t1); + Z3 = Fp2.mul(t5, Z3); + Z3 = Fp2.add(Z3, t0); + return new Point(X3, Y3, Z3); + } + subtract(other) { + return this.add(other.negate()); + } + is0() { + return this.equals(Point.ZERO); + } + /** + * Constant time multiplication. + * Uses wNAF method. Windowed method may be 10% faster, + * but takes 2x longer to generate and consumes 2x memory. + * Uses precomputes when available. + * Uses endomorphism for Koblitz curves. + * @param scalar by which the point would be multiplied + * @returns New point + */ + multiply(scalar) { + const { endo: endo2 } = extraOpts; + if (!Fn2.isValidNot0(scalar)) + throw new Error("invalid scalar: out of range"); + let point, fake; + const mul = (n) => wnaf.cached(this, n, (p) => (0, curve_ts_1.normalizeZ)(Point, p)); + if (endo2) { + const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(scalar); + const { p: k1p, f: k1f } = mul(k1); + const { p: k2p, f: k2f } = mul(k2); + fake = k1f.add(k2f); + point = finishEndo(endo2.beta, k1p, k2p, k1neg, k2neg); + } else { + const { p, f } = mul(scalar); + point = p; + fake = f; + } + return (0, curve_ts_1.normalizeZ)(Point, [point, fake])[0]; + } + /** + * Non-constant-time multiplication. Uses double-and-add algorithm. + * It's faster, but should only be used when you don't care about + * an exposed secret key e.g. sig verification, which works over *public* keys. + */ + multiplyUnsafe(sc) { + const { endo: endo2 } = extraOpts; + const p = this; + if (!Fn2.isValid(sc)) + throw new Error("invalid scalar: out of range"); + if (sc === _0n7 || p.is0()) + return Point.ZERO; + if (sc === _1n7) + return p; + if (wnaf.hasCache(this)) + return this.multiply(sc); + if (endo2) { + const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc); + const { p1, p2 } = (0, curve_ts_1.mulEndoUnsafe)(Point, p, k1, k2); + return finishEndo(endo2.beta, p1, p2, k1neg, k2neg); + } else { + return wnaf.unsafe(p, sc); + } + } + multiplyAndAddUnsafe(Q, a, b) { + const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b)); + return sum.is0() ? void 0 : sum; + } + /** + * Converts Projective point to affine (x, y) coordinates. + * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch + */ + toAffine(invertedZ) { + return toAffineMemo(this, invertedZ); + } + /** + * Checks whether Point is free of torsion elements (is in prime subgroup). + * Always torsion-free for cofactor=1 curves. + */ + isTorsionFree() { + const { isTorsionFree } = extraOpts; + if (cofactor === _1n7) + return true; + if (isTorsionFree) + return isTorsionFree(Point, this); + return wnaf.unsafe(this, CURVE_ORDER).is0(); + } + clearCofactor() { + const { clearCofactor } = extraOpts; + if (cofactor === _1n7) + return this; + if (clearCofactor) + return clearCofactor(Point, this); + return this.multiplyUnsafe(cofactor); + } + isSmallOrder() { + return this.multiplyUnsafe(cofactor).is0(); + } + toBytes(isCompressed = true) { + (0, utils_ts_1._abool2)(isCompressed, "isCompressed"); + this.assertValidity(); + return encodePoint(Point, this, isCompressed); + } + toHex(isCompressed = true) { + return (0, utils_ts_1.bytesToHex)(this.toBytes(isCompressed)); + } + toString() { + return ``; + } + // TODO: remove + get px() { + return this.X; + } + get py() { + return this.X; + } + get pz() { + return this.Z; + } + toRawBytes(isCompressed = true) { + return this.toBytes(isCompressed); + } + _setWindowSize(windowSize) { + this.precompute(windowSize); + } + static normalizeZ(points) { + return (0, curve_ts_1.normalizeZ)(Point, points); + } + static msm(points, scalars) { + return (0, curve_ts_1.pippenger)(Point, Fn2, points, scalars); + } + static fromPrivateKey(privateKey) { + return Point.BASE.multiply(_normFnElement(Fn2, privateKey)); + } + } + Point.BASE = new Point(CURVE.Gx, CURVE.Gy, Fp2.ONE); + Point.ZERO = new Point(Fp2.ZERO, Fp2.ONE, Fp2.ZERO); + Point.Fp = Fp2; + Point.Fn = Fn2; + const bits = Fn2.BITS; + const wnaf = new curve_ts_1.wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits); + Point.BASE.precompute(8); + return Point; + } + function pprefix(hasEvenY) { + return Uint8Array.of(hasEvenY ? 2 : 3); + } + function SWUFpSqrtRatio(Fp2, Z) { + const q = Fp2.ORDER; + let l = _0n7; + for (let o = q - _1n7; o % _2n5 === _0n7; o /= _2n5) + l += _1n7; + const c1 = l; + const _2n_pow_c1_1 = _2n5 << c1 - _1n7 - _1n7; + const _2n_pow_c1 = _2n_pow_c1_1 * _2n5; + const c2 = (q - _1n7) / _2n_pow_c1; + const c3 = (c2 - _1n7) / _2n5; + const c4 = _2n_pow_c1 - _1n7; + const c5 = _2n_pow_c1_1; + const c6 = Fp2.pow(Z, c2); + const c7 = Fp2.pow(Z, (c2 + _1n7) / _2n5); + let sqrtRatio = (u, v) => { + let tv1 = c6; + let tv2 = Fp2.pow(v, c4); + let tv3 = Fp2.sqr(tv2); + tv3 = Fp2.mul(tv3, v); + let tv5 = Fp2.mul(u, tv3); + tv5 = Fp2.pow(tv5, c3); + tv5 = Fp2.mul(tv5, tv2); + tv2 = Fp2.mul(tv5, v); + tv3 = Fp2.mul(tv5, u); + let tv4 = Fp2.mul(tv3, tv2); + tv5 = Fp2.pow(tv4, c5); + let isQR = Fp2.eql(tv5, Fp2.ONE); + tv2 = Fp2.mul(tv3, c7); + tv5 = Fp2.mul(tv4, tv1); + tv3 = Fp2.cmov(tv2, tv3, isQR); + tv4 = Fp2.cmov(tv5, tv4, isQR); + for (let i = c1; i > _1n7; i--) { + let tv52 = i - _2n5; + tv52 = _2n5 << tv52 - _1n7; + let tvv5 = Fp2.pow(tv4, tv52); + const e1 = Fp2.eql(tvv5, Fp2.ONE); + tv2 = Fp2.mul(tv3, tv1); + tv1 = Fp2.mul(tv1, tv1); + tvv5 = Fp2.mul(tv4, tv1); + tv3 = Fp2.cmov(tv2, tv3, e1); + tv4 = Fp2.cmov(tvv5, tv4, e1); + } + return { isValid: isQR, value: tv3 }; + }; + if (Fp2.ORDER % _4n2 === _3n3) { + const c12 = (Fp2.ORDER - _3n3) / _4n2; + const c22 = Fp2.sqrt(Fp2.neg(Z)); + sqrtRatio = (u, v) => { + let tv1 = Fp2.sqr(v); + const tv2 = Fp2.mul(u, v); + tv1 = Fp2.mul(tv1, tv2); + let y1 = Fp2.pow(tv1, c12); + y1 = Fp2.mul(y1, tv2); + const y2 = Fp2.mul(y1, c22); + const tv3 = Fp2.mul(Fp2.sqr(y1), v); + const isQR = Fp2.eql(tv3, u); + let y = Fp2.cmov(y2, y1, isQR); + return { isValid: isQR, value: y }; + }; + } + return sqrtRatio; + } + function mapToCurveSimpleSWU(Fp2, opts) { + (0, modular_ts_1.validateField)(Fp2); + const { A, B, Z } = opts; + if (!Fp2.isValid(A) || !Fp2.isValid(B) || !Fp2.isValid(Z)) + throw new Error("mapToCurveSimpleSWU: invalid opts"); + const sqrtRatio = SWUFpSqrtRatio(Fp2, Z); + if (!Fp2.isOdd) + throw new Error("Field does not have .isOdd()"); + return (u) => { + let tv1, tv2, tv3, tv4, tv5, tv6, x, y; + tv1 = Fp2.sqr(u); + tv1 = Fp2.mul(tv1, Z); + tv2 = Fp2.sqr(tv1); + tv2 = Fp2.add(tv2, tv1); + tv3 = Fp2.add(tv2, Fp2.ONE); + tv3 = Fp2.mul(tv3, B); + tv4 = Fp2.cmov(Z, Fp2.neg(tv2), !Fp2.eql(tv2, Fp2.ZERO)); + tv4 = Fp2.mul(tv4, A); + tv2 = Fp2.sqr(tv3); + tv6 = Fp2.sqr(tv4); + tv5 = Fp2.mul(tv6, A); + tv2 = Fp2.add(tv2, tv5); + tv2 = Fp2.mul(tv2, tv3); + tv6 = Fp2.mul(tv6, tv4); + tv5 = Fp2.mul(tv6, B); + tv2 = Fp2.add(tv2, tv5); + x = Fp2.mul(tv1, tv3); + const { isValid, value } = sqrtRatio(tv2, tv6); + y = Fp2.mul(tv1, u); + y = Fp2.mul(y, value); + x = Fp2.cmov(x, tv3, isValid); + y = Fp2.cmov(y, value, isValid); + const e1 = Fp2.isOdd(u) === Fp2.isOdd(y); + y = Fp2.cmov(Fp2.neg(y), y, e1); + const tv4_inv = (0, modular_ts_1.FpInvertBatch)(Fp2, [tv4], true)[0]; + x = Fp2.mul(x, tv4_inv); + return { x, y }; + }; + } + function getWLengths(Fp2, Fn2) { + return { + secretKey: Fn2.BYTES, + publicKey: 1 + Fp2.BYTES, + publicKeyUncompressed: 1 + 2 * Fp2.BYTES, + publicKeyHasPrefix: true, + signature: 2 * Fn2.BYTES + }; + } + function ecdh(Point, ecdhOpts = {}) { + const { Fn: Fn2 } = Point; + const randomBytes_ = ecdhOpts.randomBytes || utils_ts_1.randomBytes; + const lengths = Object.assign(getWLengths(Point.Fp, Fn2), { seed: (0, modular_ts_1.getMinHashLength)(Fn2.ORDER) }); + function isValidSecretKey(secretKey) { + try { + return !!_normFnElement(Fn2, secretKey); + } catch (error) { + return false; + } + } + function isValidPublicKey(publicKey, isCompressed) { + const { publicKey: comp, publicKeyUncompressed } = lengths; + try { + const l = publicKey.length; + if (isCompressed === true && l !== comp) + return false; + if (isCompressed === false && l !== publicKeyUncompressed) + return false; + return !!Point.fromBytes(publicKey); + } catch (error) { + return false; + } + } + function randomSecretKey(seed = randomBytes_(lengths.seed)) { + return (0, modular_ts_1.mapHashToField)((0, utils_ts_1._abytes2)(seed, lengths.seed, "seed"), Fn2.ORDER); + } + function getPublicKey(secretKey, isCompressed = true) { + return Point.BASE.multiply(_normFnElement(Fn2, secretKey)).toBytes(isCompressed); + } + function keygen(seed) { + const secretKey = randomSecretKey(seed); + return { secretKey, publicKey: getPublicKey(secretKey) }; + } + function isProbPub(item) { + if (typeof item === "bigint") + return false; + if (item instanceof Point) + return true; + const { secretKey, publicKey, publicKeyUncompressed } = lengths; + if (Fn2.allowedLengths || secretKey === publicKey) + return void 0; + const l = (0, utils_ts_1.ensureBytes)("key", item).length; + return l === publicKey || l === publicKeyUncompressed; + } + function getSharedSecret(secretKeyA, publicKeyB, isCompressed = true) { + if (isProbPub(secretKeyA) === true) + throw new Error("first arg must be private key"); + if (isProbPub(publicKeyB) === false) + throw new Error("second arg must be public key"); + const s = _normFnElement(Fn2, secretKeyA); + const b = Point.fromHex(publicKeyB); + return b.multiply(s).toBytes(isCompressed); + } + const utils = { + isValidSecretKey, + isValidPublicKey, + randomSecretKey, + // TODO: remove + isValidPrivateKey: isValidSecretKey, + randomPrivateKey: randomSecretKey, + normPrivateKeyToScalar: (key) => _normFnElement(Fn2, key), + precompute(windowSize = 8, point = Point.BASE) { + return point.precompute(windowSize, false); + } + }; + return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths }); + } + function ecdsa(Point, hash, ecdsaOpts = {}) { + (0, utils_1.ahash)(hash); + (0, utils_ts_1._validateObject)(ecdsaOpts, {}, { + hmac: "function", + lowS: "boolean", + randomBytes: "function", + bits2int: "function", + bits2int_modN: "function" + }); + const randomBytes2 = ecdsaOpts.randomBytes || utils_ts_1.randomBytes; + const hmac = ecdsaOpts.hmac || ((key, ...msgs) => (0, hmac_js_1.hmac)(hash, key, (0, utils_ts_1.concatBytes)(...msgs))); + const { Fp: Fp2, Fn: Fn2 } = Point; + const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn2; + const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts); + const defaultSigOpts = { + prehash: false, + lowS: typeof ecdsaOpts.lowS === "boolean" ? ecdsaOpts.lowS : false, + format: void 0, + //'compact' as ECDSASigFormat, + extraEntropy: false + }; + const defaultSigOpts_format = "compact"; + function isBiggerThanHalfOrder(number) { + const HALF = CURVE_ORDER >> _1n7; + return number > HALF; + } + function validateRS(title, num) { + if (!Fn2.isValidNot0(num)) + throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`); + return num; + } + function validateSigLength(bytes, format) { + validateSigFormat(format); + const size = lengths.signature; + const sizer = format === "compact" ? size : format === "recovered" ? size + 1 : void 0; + return (0, utils_ts_1._abytes2)(bytes, sizer, `${format} signature`); + } + class Signature { + constructor(r, s, recovery) { + this.r = validateRS("r", r); + this.s = validateRS("s", s); + if (recovery != null) + this.recovery = recovery; + Object.freeze(this); + } + static fromBytes(bytes, format = defaultSigOpts_format) { + validateSigLength(bytes, format); + let recid; + if (format === "der") { + const { r: r2, s: s2 } = exports2.DER.toSig((0, utils_ts_1._abytes2)(bytes)); + return new Signature(r2, s2); + } + if (format === "recovered") { + recid = bytes[0]; + format = "compact"; + bytes = bytes.subarray(1); + } + const L = Fn2.BYTES; + const r = bytes.subarray(0, L); + const s = bytes.subarray(L, L * 2); + return new Signature(Fn2.fromBytes(r), Fn2.fromBytes(s), recid); + } + static fromHex(hex, format) { + return this.fromBytes((0, utils_ts_1.hexToBytes)(hex), format); + } + addRecoveryBit(recovery) { + return new Signature(this.r, this.s, recovery); + } + recoverPublicKey(messageHash) { + const FIELD_ORDER = Fp2.ORDER; + const { r, s, recovery: rec } = this; + if (rec == null || ![0, 1, 2, 3].includes(rec)) + throw new Error("recovery id invalid"); + const hasCofactor = CURVE_ORDER * _2n5 < FIELD_ORDER; + if (hasCofactor && rec > 1) + throw new Error("recovery id is ambiguous for h>1 curve"); + const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r; + if (!Fp2.isValid(radj)) + throw new Error("recovery id 2 or 3 invalid"); + const x = Fp2.toBytes(radj); + const R = Point.fromBytes((0, utils_ts_1.concatBytes)(pprefix((rec & 1) === 0), x)); + const ir = Fn2.inv(radj); + const h = bits2int_modN((0, utils_ts_1.ensureBytes)("msgHash", messageHash)); + const u1 = Fn2.create(-h * ir); + const u2 = Fn2.create(s * ir); + const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2)); + if (Q.is0()) + throw new Error("point at infinify"); + Q.assertValidity(); + return Q; + } + // Signatures should be low-s, to prevent malleability. + hasHighS() { + return isBiggerThanHalfOrder(this.s); + } + toBytes(format = defaultSigOpts_format) { + validateSigFormat(format); + if (format === "der") + return (0, utils_ts_1.hexToBytes)(exports2.DER.hexFromSig(this)); + const r = Fn2.toBytes(this.r); + const s = Fn2.toBytes(this.s); + if (format === "recovered") { + if (this.recovery == null) + throw new Error("recovery bit must be present"); + return (0, utils_ts_1.concatBytes)(Uint8Array.of(this.recovery), r, s); + } + return (0, utils_ts_1.concatBytes)(r, s); + } + toHex(format) { + return (0, utils_ts_1.bytesToHex)(this.toBytes(format)); + } + // TODO: remove + assertValidity() { + } + static fromCompact(hex) { + return Signature.fromBytes((0, utils_ts_1.ensureBytes)("sig", hex), "compact"); + } + static fromDER(hex) { + return Signature.fromBytes((0, utils_ts_1.ensureBytes)("sig", hex), "der"); + } + normalizeS() { + return this.hasHighS() ? new Signature(this.r, Fn2.neg(this.s), this.recovery) : this; + } + toDERRawBytes() { + return this.toBytes("der"); + } + toDERHex() { + return (0, utils_ts_1.bytesToHex)(this.toBytes("der")); + } + toCompactRawBytes() { + return this.toBytes("compact"); + } + toCompactHex() { + return (0, utils_ts_1.bytesToHex)(this.toBytes("compact")); + } + } + const bits2int = ecdsaOpts.bits2int || function bits2int_def(bytes) { + if (bytes.length > 8192) + throw new Error("input is too large"); + const num = (0, utils_ts_1.bytesToNumberBE)(bytes); + const delta = bytes.length * 8 - fnBits; + return delta > 0 ? num >> BigInt(delta) : num; + }; + const bits2int_modN = ecdsaOpts.bits2int_modN || function bits2int_modN_def(bytes) { + return Fn2.create(bits2int(bytes)); + }; + const ORDER_MASK = (0, utils_ts_1.bitMask)(fnBits); + function int2octets(num) { + (0, utils_ts_1.aInRange)("num < 2^" + fnBits, num, _0n7, ORDER_MASK); + return Fn2.toBytes(num); + } + function validateMsgAndHash(message, prehash) { + (0, utils_ts_1._abytes2)(message, void 0, "message"); + return prehash ? (0, utils_ts_1._abytes2)(hash(message), void 0, "prehashed message") : message; + } + function prepSig(message, privateKey, opts) { + if (["recovered", "canonical"].some((k) => k in opts)) + throw new Error("sign() legacy options not supported"); + const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts); + message = validateMsgAndHash(message, prehash); + const h1int = bits2int_modN(message); + const d = _normFnElement(Fn2, privateKey); + const seedArgs = [int2octets(d), int2octets(h1int)]; + if (extraEntropy != null && extraEntropy !== false) { + const e = extraEntropy === true ? randomBytes2(lengths.secretKey) : extraEntropy; + seedArgs.push((0, utils_ts_1.ensureBytes)("extraEntropy", e)); + } + const seed = (0, utils_ts_1.concatBytes)(...seedArgs); + const m = h1int; + function k2sig(kBytes) { + const k = bits2int(kBytes); + if (!Fn2.isValidNot0(k)) + return; + const ik = Fn2.inv(k); + const q = Point.BASE.multiply(k).toAffine(); + const r = Fn2.create(q.x); + if (r === _0n7) + return; + const s = Fn2.create(ik * Fn2.create(m + r * d)); + if (s === _0n7) + return; + let recovery = (q.x === r ? 0 : 2) | Number(q.y & _1n7); + let normS = s; + if (lowS && isBiggerThanHalfOrder(s)) { + normS = Fn2.neg(s); + recovery ^= 1; + } + return new Signature(r, normS, recovery); + } + return { seed, k2sig }; + } + function sign(message, secretKey, opts = {}) { + message = (0, utils_ts_1.ensureBytes)("message", message); + const { seed, k2sig } = prepSig(message, secretKey, opts); + const drbg = (0, utils_ts_1.createHmacDrbg)(hash.outputLen, Fn2.BYTES, hmac); + const sig = drbg(seed, k2sig); + return sig; + } + function tryParsingSig(sg) { + let sig = void 0; + const isHex2 = typeof sg === "string" || (0, utils_ts_1.isBytes)(sg); + const isObj = !isHex2 && sg !== null && typeof sg === "object" && typeof sg.r === "bigint" && typeof sg.s === "bigint"; + if (!isHex2 && !isObj) + throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance"); + if (isObj) { + sig = new Signature(sg.r, sg.s); + } else if (isHex2) { + try { + sig = Signature.fromBytes((0, utils_ts_1.ensureBytes)("sig", sg), "der"); + } catch (derError) { + if (!(derError instanceof exports2.DER.Err)) + throw derError; + } + if (!sig) { + try { + sig = Signature.fromBytes((0, utils_ts_1.ensureBytes)("sig", sg), "compact"); + } catch (error) { + return false; + } + } + } + if (!sig) + return false; + return sig; + } + function verify(signature, message, publicKey, opts = {}) { + const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts); + publicKey = (0, utils_ts_1.ensureBytes)("publicKey", publicKey); + message = validateMsgAndHash((0, utils_ts_1.ensureBytes)("message", message), prehash); + if ("strict" in opts) + throw new Error("options.strict was renamed to lowS"); + const sig = format === void 0 ? tryParsingSig(signature) : Signature.fromBytes((0, utils_ts_1.ensureBytes)("sig", signature), format); + if (sig === false) + return false; + try { + const P = Point.fromBytes(publicKey); + if (lowS && sig.hasHighS()) + return false; + const { r, s } = sig; + const h = bits2int_modN(message); + const is = Fn2.inv(s); + const u1 = Fn2.create(h * is); + const u2 = Fn2.create(r * is); + const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2)); + if (R.is0()) + return false; + const v = Fn2.create(R.x); + return v === r; + } catch (e) { + return false; + } + } + function recoverPublicKey(signature, message, opts = {}) { + const { prehash } = validateSigOpts(opts, defaultSigOpts); + message = validateMsgAndHash(message, prehash); + return Signature.fromBytes(signature, "recovered").recoverPublicKey(message).toBytes(); + } + return Object.freeze({ + keygen, + getPublicKey, + getSharedSecret, + utils, + lengths, + Point, + sign, + verify, + recoverPublicKey, + Signature, + hash + }); + } + function weierstrassPoints(c) { + const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c); + const Point = weierstrassN(CURVE, curveOpts); + return _weierstrass_new_output_to_legacy(c, Point); + } + function _weierstrass_legacy_opts_to_new(c) { + const CURVE = { + a: c.a, + b: c.b, + p: c.Fp.ORDER, + n: c.n, + h: c.h, + Gx: c.Gx, + Gy: c.Gy + }; + const Fp2 = c.Fp; + let allowedLengths = c.allowedPrivateKeyLengths ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2)))) : void 0; + const Fn2 = (0, modular_ts_1.Field)(CURVE.n, { + BITS: c.nBitLength, + allowedLengths, + modFromBytes: c.wrapPrivateKey + }); + const curveOpts = { + Fp: Fp2, + Fn: Fn2, + allowInfinityPoint: c.allowInfinityPoint, + endo: c.endo, + isTorsionFree: c.isTorsionFree, + clearCofactor: c.clearCofactor, + fromBytes: c.fromBytes, + toBytes: c.toBytes + }; + return { CURVE, curveOpts }; + } + function _ecdsa_legacy_opts_to_new(c) { + const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c); + const ecdsaOpts = { + hmac: c.hmac, + randomBytes: c.randomBytes, + lowS: c.lowS, + bits2int: c.bits2int, + bits2int_modN: c.bits2int_modN + }; + return { CURVE, curveOpts, hash: c.hash, ecdsaOpts }; + } + function _legacyHelperEquat(Fp2, a, b) { + function weierstrassEquation(x) { + const x2 = Fp2.sqr(x); + const x3 = Fp2.mul(x2, x); + return Fp2.add(Fp2.add(x3, Fp2.mul(x, a)), b); + } + return weierstrassEquation; + } + function _weierstrass_new_output_to_legacy(c, Point) { + const { Fp: Fp2, Fn: Fn2 } = Point; + function isWithinCurveOrder(num) { + return (0, utils_ts_1.inRange)(num, _1n7, Fn2.ORDER); + } + const weierstrassEquation = _legacyHelperEquat(Fp2, c.a, c.b); + return Object.assign({}, { + CURVE: c, + Point, + ProjectivePoint: Point, + normPrivateKeyToScalar: (key) => _normFnElement(Fn2, key), + weierstrassEquation, + isWithinCurveOrder + }); + } + function _ecdsa_new_output_to_legacy(c, _ecdsa) { + const Point = _ecdsa.Point; + return Object.assign({}, _ecdsa, { + ProjectivePoint: Point, + CURVE: Object.assign({}, c, (0, modular_ts_1.nLength)(Point.Fn.ORDER, Point.Fn.BITS)) + }); + } + function weierstrass(c) { + const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c); + const Point = weierstrassN(CURVE, curveOpts); + const signs = ecdsa(Point, hash, ecdsaOpts); + return _ecdsa_new_output_to_legacy(c, signs); + } + } +}); + +// node_modules/@noble/curves/_shortw_utils.js +var require_shortw_utils = __commonJS({ + "node_modules/@noble/curves/_shortw_utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getHash = getHash; + exports2.createCurve = createCurve; + var weierstrass_ts_1 = require_weierstrass(); + function getHash(hash) { + return { hash }; + } + function createCurve(curveDef, defHash) { + const create = (hash) => (0, weierstrass_ts_1.weierstrass)({ ...curveDef, hash }); + return { ...create(defHash), create }; + } + } +}); + +// node_modules/@noble/curves/abstract/hash-to-curve.js +var require_hash_to_curve = __commonJS({ + "node_modules/@noble/curves/abstract/hash-to-curve.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2._DST_scalar = void 0; + exports2.expand_message_xmd = expand_message_xmd2; + exports2.expand_message_xof = expand_message_xof2; + exports2.hash_to_field = hash_to_field2; + exports2.isogenyMap = isogenyMap; + exports2.createHasher = createHasher3; + var utils_ts_1 = require_utils14(); + var modular_ts_1 = require_modular(); + var os2ip2 = utils_ts_1.bytesToNumberBE; + function i2osp2(value, length) { + anum(value); + anum(length); + if (value < 0 || value >= 1 << 8 * length) + throw new Error("invalid I2OSP input: " + value); + const res = Array.from({ length }).fill(0); + for (let i = length - 1; i >= 0; i--) { + res[i] = value & 255; + value >>>= 8; + } + return new Uint8Array(res); + } + function strxor2(a, b) { + const arr = new Uint8Array(a.length); + for (let i = 0; i < a.length; i++) { + arr[i] = a[i] ^ b[i]; + } + return arr; + } + function anum(item) { + if (!Number.isSafeInteger(item)) + throw new Error("number expected"); + } + function normDST2(DST) { + if (!(0, utils_ts_1.isBytes)(DST) && typeof DST !== "string") + throw new Error("DST must be Uint8Array or string"); + return typeof DST === "string" ? (0, utils_ts_1.utf8ToBytes)(DST) : DST; + } + function expand_message_xmd2(msg, DST, lenInBytes, H) { + (0, utils_ts_1.abytes)(msg); + anum(lenInBytes); + DST = normDST2(DST); + if (DST.length > 255) + DST = H((0, utils_ts_1.concatBytes)((0, utils_ts_1.utf8ToBytes)("H2C-OVERSIZE-DST-"), DST)); + const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H; + const ell = Math.ceil(lenInBytes / b_in_bytes); + if (lenInBytes > 65535 || ell > 255) + throw new Error("expand_message_xmd: invalid lenInBytes"); + const DST_prime = (0, utils_ts_1.concatBytes)(DST, i2osp2(DST.length, 1)); + const Z_pad = i2osp2(0, r_in_bytes); + const l_i_b_str = i2osp2(lenInBytes, 2); + const b = new Array(ell); + const b_0 = H((0, utils_ts_1.concatBytes)(Z_pad, msg, l_i_b_str, i2osp2(0, 1), DST_prime)); + b[0] = H((0, utils_ts_1.concatBytes)(b_0, i2osp2(1, 1), DST_prime)); + for (let i = 1; i <= ell; i++) { + const args = [strxor2(b_0, b[i - 1]), i2osp2(i + 1, 1), DST_prime]; + b[i] = H((0, utils_ts_1.concatBytes)(...args)); + } + const pseudo_random_bytes = (0, utils_ts_1.concatBytes)(...b); + return pseudo_random_bytes.slice(0, lenInBytes); + } + function expand_message_xof2(msg, DST, lenInBytes, k, H) { + (0, utils_ts_1.abytes)(msg); + anum(lenInBytes); + DST = normDST2(DST); + if (DST.length > 255) { + const dkLen = Math.ceil(2 * k / 8); + DST = H.create({ dkLen }).update((0, utils_ts_1.utf8ToBytes)("H2C-OVERSIZE-DST-")).update(DST).digest(); + } + if (lenInBytes > 65535 || DST.length > 255) + throw new Error("expand_message_xof: invalid lenInBytes"); + return H.create({ dkLen: lenInBytes }).update(msg).update(i2osp2(lenInBytes, 2)).update(DST).update(i2osp2(DST.length, 1)).digest(); + } + function hash_to_field2(msg, count, options) { + (0, utils_ts_1._validateObject)(options, { + p: "bigint", + m: "number", + k: "number", + hash: "function" + }); + const { p, k, m, hash, expand, DST } = options; + if (!(0, utils_ts_1.isHash)(options.hash)) + throw new Error("expected valid hash"); + (0, utils_ts_1.abytes)(msg); + anum(count); + const log2p = p.toString(2).length; + const L = Math.ceil((log2p + k) / 8); + const len_in_bytes = count * m * L; + let prb; + if (expand === "xmd") { + prb = expand_message_xmd2(msg, DST, len_in_bytes, hash); + } else if (expand === "xof") { + prb = expand_message_xof2(msg, DST, len_in_bytes, k, hash); + } else if (expand === "_internal_pass") { + prb = msg; + } else { + throw new Error('expand must be "xmd" or "xof"'); + } + const u = new Array(count); + for (let i = 0; i < count; i++) { + const e = new Array(m); + for (let j = 0; j < m; j++) { + const elm_offset = L * (j + i * m); + const tv = prb.subarray(elm_offset, elm_offset + L); + e[j] = (0, modular_ts_1.mod)(os2ip2(tv), p); + } + u[i] = e; + } + return u; + } + function isogenyMap(field, map) { + const coeff = map.map((i) => Array.from(i).reverse()); + return (x, y) => { + const [xn, xd, yn, yd] = coeff.map((val) => val.reduce((acc, i) => field.add(field.mul(acc, x), i))); + const [xd_inv, yd_inv] = (0, modular_ts_1.FpInvertBatch)(field, [xd, yd], true); + x = field.mul(xn, xd_inv); + y = field.mul(y, field.mul(yn, yd_inv)); + return { x, y }; + }; + } + exports2._DST_scalar = (0, utils_ts_1.utf8ToBytes)("HashToScalar-"); + function createHasher3(Point, mapToCurve, defaults) { + if (typeof mapToCurve !== "function") + throw new Error("mapToCurve() must be defined"); + function map(num) { + return Point.fromAffine(mapToCurve(num)); + } + function clear(initial) { + const P = initial.clearCofactor(); + if (P.equals(Point.ZERO)) + return Point.ZERO; + P.assertValidity(); + return P; + } + return { + defaults, + hashToCurve(msg, options) { + const opts = Object.assign({}, defaults, options); + const u = hash_to_field2(msg, 2, opts); + const u0 = map(u[0]); + const u1 = map(u[1]); + return clear(u0.add(u1)); + }, + encodeToCurve(msg, options) { + const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {}; + const opts = Object.assign({}, defaults, optsDst, options); + const u = hash_to_field2(msg, 1, opts); + const u0 = map(u[0]); + return clear(u0); + }, + /** See {@link H2CHasher} */ + mapToCurve(scalars) { + if (!Array.isArray(scalars)) + throw new Error("expected array of bigints"); + for (const i of scalars) + if (typeof i !== "bigint") + throw new Error("expected array of bigints"); + return clear(map(scalars)); + }, + // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393 + // RFC 9380, draft-irtf-cfrg-bbs-signatures-08 + hashToScalar(msg, options) { + const N = Point.Fn.ORDER; + const opts = Object.assign({}, defaults, { p: N, m: 1, DST: exports2._DST_scalar }, options); + return hash_to_field2(msg, 1, opts)[0][0]; + } + }; + } + } +}); + +// node_modules/@noble/curves/secp256k1.js +var require_secp256k1 = __commonJS({ + "node_modules/@noble/curves/secp256k1.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encodeToCurve = exports2.hashToCurve = exports2.secp256k1_hasher = exports2.schnorr = exports2.secp256k1 = void 0; + var sha2_js_1 = require_sha2(); + var utils_js_1 = require_utils9(); + var _shortw_utils_ts_1 = require_shortw_utils(); + var hash_to_curve_ts_1 = require_hash_to_curve(); + var modular_ts_1 = require_modular(); + var weierstrass_ts_1 = require_weierstrass(); + var utils_ts_1 = require_utils14(); + var secp256k1_CURVE = { + p: BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"), + n: BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"), + h: BigInt(1), + a: BigInt(0), + b: BigInt(7), + Gx: BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"), + Gy: BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8") + }; + var secp256k1_ENDO = { + beta: BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"), + basises: [ + [BigInt("0x3086d221a7d46bcde86c90e49284eb15"), -BigInt("0xe4437ed6010e88286f547fa90abfe4c3")], + [BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"), BigInt("0x3086d221a7d46bcde86c90e49284eb15")] + ] + }; + var _0n7 = /* @__PURE__ */ BigInt(0); + var _1n7 = /* @__PURE__ */ BigInt(1); + var _2n5 = /* @__PURE__ */ BigInt(2); + function sqrtMod(y) { + const P = secp256k1_CURVE.p; + const _3n3 = BigInt(3), _6n = BigInt(6), _11n = BigInt(11), _22n = BigInt(22); + const _23n = BigInt(23), _44n = BigInt(44), _88n = BigInt(88); + const b2 = y * y * y % P; + const b3 = b2 * b2 * y % P; + const b6 = (0, modular_ts_1.pow2)(b3, _3n3, P) * b3 % P; + const b9 = (0, modular_ts_1.pow2)(b6, _3n3, P) * b3 % P; + const b11 = (0, modular_ts_1.pow2)(b9, _2n5, P) * b2 % P; + const b22 = (0, modular_ts_1.pow2)(b11, _11n, P) * b11 % P; + const b44 = (0, modular_ts_1.pow2)(b22, _22n, P) * b22 % P; + const b88 = (0, modular_ts_1.pow2)(b44, _44n, P) * b44 % P; + const b176 = (0, modular_ts_1.pow2)(b88, _88n, P) * b88 % P; + const b220 = (0, modular_ts_1.pow2)(b176, _44n, P) * b44 % P; + const b223 = (0, modular_ts_1.pow2)(b220, _3n3, P) * b3 % P; + const t1 = (0, modular_ts_1.pow2)(b223, _23n, P) * b22 % P; + const t2 = (0, modular_ts_1.pow2)(t1, _6n, P) * b2 % P; + const root = (0, modular_ts_1.pow2)(t2, _2n5, P); + if (!Fpk1.eql(Fpk1.sqr(root), y)) + throw new Error("Cannot find square root"); + return root; + } + var Fpk1 = (0, modular_ts_1.Field)(secp256k1_CURVE.p, { sqrt: sqrtMod }); + exports2.secp256k1 = (0, _shortw_utils_ts_1.createCurve)({ ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO }, sha2_js_1.sha256); + var TAGGED_HASH_PREFIXES = {}; + function taggedHash(tag, ...messages) { + let tagP = TAGGED_HASH_PREFIXES[tag]; + if (tagP === void 0) { + const tagH = (0, sha2_js_1.sha256)((0, utils_ts_1.utf8ToBytes)(tag)); + tagP = (0, utils_ts_1.concatBytes)(tagH, tagH); + TAGGED_HASH_PREFIXES[tag] = tagP; + } + return (0, sha2_js_1.sha256)((0, utils_ts_1.concatBytes)(tagP, ...messages)); + } + var pointToBytes = (point) => point.toBytes(true).slice(1); + var Pointk1 = /* @__PURE__ */ (() => exports2.secp256k1.Point)(); + var hasEven = (y) => y % _2n5 === _0n7; + function schnorrGetExtPubKey(priv) { + const { Fn: Fn2, BASE } = Pointk1; + const d_ = (0, weierstrass_ts_1._normFnElement)(Fn2, priv); + const p = BASE.multiply(d_); + const scalar = hasEven(p.y) ? d_ : Fn2.neg(d_); + return { scalar, bytes: pointToBytes(p) }; + } + function lift_x(x) { + const Fp2 = Fpk1; + if (!Fp2.isValidNot0(x)) + throw new Error("invalid x: Fail if x \u2265 p"); + const xx = Fp2.create(x * x); + const c = Fp2.create(xx * x + BigInt(7)); + let y = Fp2.sqrt(c); + if (!hasEven(y)) + y = Fp2.neg(y); + const p = Pointk1.fromAffine({ x, y }); + p.assertValidity(); + return p; + } + var num = utils_ts_1.bytesToNumberBE; + function challenge(...args) { + return Pointk1.Fn.create(num(taggedHash("BIP0340/challenge", ...args))); + } + function schnorrGetPublicKey(secretKey) { + return schnorrGetExtPubKey(secretKey).bytes; + } + function schnorrSign(message, secretKey, auxRand = (0, utils_js_1.randomBytes)(32)) { + const { Fn: Fn2 } = Pointk1; + const m = (0, utils_ts_1.ensureBytes)("message", message); + const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); + const a = (0, utils_ts_1.ensureBytes)("auxRand", auxRand, 32); + const t = Fn2.toBytes(d ^ num(taggedHash("BIP0340/aux", a))); + const rand = taggedHash("BIP0340/nonce", t, px, m); + const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand); + const e = challenge(rx, px, m); + const sig = new Uint8Array(64); + sig.set(rx, 0); + sig.set(Fn2.toBytes(Fn2.create(k + e * d)), 32); + if (!schnorrVerify(sig, m, px)) + throw new Error("sign: Invalid signature produced"); + return sig; + } + function schnorrVerify(signature, message, publicKey) { + const { Fn: Fn2, BASE } = Pointk1; + const sig = (0, utils_ts_1.ensureBytes)("signature", signature, 64); + const m = (0, utils_ts_1.ensureBytes)("message", message); + const pub = (0, utils_ts_1.ensureBytes)("publicKey", publicKey, 32); + try { + const P = lift_x(num(pub)); + const r = num(sig.subarray(0, 32)); + if (!(0, utils_ts_1.inRange)(r, _1n7, secp256k1_CURVE.p)) + return false; + const s = num(sig.subarray(32, 64)); + if (!(0, utils_ts_1.inRange)(s, _1n7, secp256k1_CURVE.n)) + return false; + const e = challenge(Fn2.toBytes(r), pointToBytes(P), m); + const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn2.neg(e))); + const { x, y } = R.toAffine(); + if (R.is0() || !hasEven(y) || x !== r) + return false; + return true; + } catch (error) { + return false; + } + } + exports2.schnorr = (() => { + const size = 32; + const seedLength = 48; + const randomSecretKey = (seed = (0, utils_js_1.randomBytes)(seedLength)) => { + return (0, modular_ts_1.mapHashToField)(seed, secp256k1_CURVE.n); + }; + exports2.secp256k1.utils.randomSecretKey; + function keygen(seed) { + const secretKey = randomSecretKey(seed); + return { secretKey, publicKey: schnorrGetPublicKey(secretKey) }; + } + return { + keygen, + getPublicKey: schnorrGetPublicKey, + sign: schnorrSign, + verify: schnorrVerify, + Point: Pointk1, + utils: { + randomSecretKey, + randomPrivateKey: randomSecretKey, + taggedHash, + // TODO: remove + lift_x, + pointToBytes, + numberToBytesBE: utils_ts_1.numberToBytesBE, + bytesToNumberBE: utils_ts_1.bytesToNumberBE, + mod: modular_ts_1.mod + }, + lengths: { + secretKey: size, + publicKey: size, + publicKeyHasPrefix: false, + signature: size * 2, + seed: seedLength + } + }; + })(); + var isoMap = /* @__PURE__ */ (() => (0, hash_to_curve_ts_1.isogenyMap)(Fpk1, [ + // xNum + [ + "0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7", + "0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581", + "0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262", + "0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c" + ], + // xDen + [ + "0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b", + "0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14", + "0x0000000000000000000000000000000000000000000000000000000000000001" + // LAST 1 + ], + // yNum + [ + "0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c", + "0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3", + "0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931", + "0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84" + ], + // yDen + [ + "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b", + "0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573", + "0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f", + "0x0000000000000000000000000000000000000000000000000000000000000001" + // LAST 1 + ] + ].map((i) => i.map((j) => BigInt(j)))))(); + var mapSWU = /* @__PURE__ */ (() => (0, weierstrass_ts_1.mapToCurveSimpleSWU)(Fpk1, { + A: BigInt("0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533"), + B: BigInt("1771"), + Z: Fpk1.create(BigInt("-11")) + }))(); + exports2.secp256k1_hasher = (() => (0, hash_to_curve_ts_1.createHasher)(exports2.secp256k1.Point, (scalars) => { + const { x, y } = mapSWU(Fpk1.create(scalars[0])); + return isoMap(x, y); + }, { + DST: "secp256k1_XMD:SHA-256_SSWU_RO_", + encodeDST: "secp256k1_XMD:SHA-256_SSWU_NU_", + p: Fpk1.ORDER, + m: 1, + k: 128, + expand: "xmd", + hash: sha2_js_1.sha256 + }))(); + exports2.hashToCurve = (() => exports2.secp256k1_hasher.hashToCurve)(); + exports2.encodeToCurve = (() => exports2.secp256k1_hasher.encodeToCurve)(); + } +}); + +// node_modules/@noble/curves/abstract/utils.js +var require_utils15 = __commonJS({ + "node_modules/@noble/curves/abstract/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isHash = exports2.validateObject = exports2.memoized = exports2.notImplemented = exports2.createHmacDrbg = exports2.bitMask = exports2.bitSet = exports2.bitGet = exports2.bitLen = exports2.aInRange = exports2.inRange = exports2.asciiToBytes = exports2.copyBytes = exports2.equalBytes = exports2.ensureBytes = exports2.numberToVarBytesBE = exports2.numberToBytesLE = exports2.numberToBytesBE = exports2.bytesToNumberLE = exports2.bytesToNumberBE = exports2.hexToNumber = exports2.numberToHexUnpadded = exports2.abool = exports2.utf8ToBytes = exports2.randomBytes = exports2.isBytes = exports2.hexToBytes = exports2.concatBytes = exports2.bytesToUtf8 = exports2.bytesToHex = exports2.anumber = exports2.abytes = void 0; + var u = require_utils14(); + exports2.abytes = u.abytes; + exports2.anumber = u.anumber; + exports2.bytesToHex = u.bytesToHex; + exports2.bytesToUtf8 = u.bytesToUtf8; + exports2.concatBytes = u.concatBytes; + exports2.hexToBytes = u.hexToBytes; + exports2.isBytes = u.isBytes; + exports2.randomBytes = u.randomBytes; + exports2.utf8ToBytes = u.utf8ToBytes; + exports2.abool = u.abool; + exports2.numberToHexUnpadded = u.numberToHexUnpadded; + exports2.hexToNumber = u.hexToNumber; + exports2.bytesToNumberBE = u.bytesToNumberBE; + exports2.bytesToNumberLE = u.bytesToNumberLE; + exports2.numberToBytesBE = u.numberToBytesBE; + exports2.numberToBytesLE = u.numberToBytesLE; + exports2.numberToVarBytesBE = u.numberToVarBytesBE; + exports2.ensureBytes = u.ensureBytes; + exports2.equalBytes = u.equalBytes; + exports2.copyBytes = u.copyBytes; + exports2.asciiToBytes = u.asciiToBytes; + exports2.inRange = u.inRange; + exports2.aInRange = u.aInRange; + exports2.bitLen = u.bitLen; + exports2.bitGet = u.bitGet; + exports2.bitSet = u.bitSet; + exports2.bitMask = u.bitMask; + exports2.createHmacDrbg = u.createHmacDrbg; + exports2.notImplemented = u.notImplemented; + exports2.memoized = u.memoized; + exports2.validateObject = u.validateObject; + exports2.isHash = u.isHash; + } +}); + +// node_modules/ripple-keypairs/dist/utils/Sha512.js +var require_Sha512 = __commonJS({ + "node_modules/ripple-keypairs/dist/utils/Sha512.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var sha512_1 = require_sha512(); + var utils_1 = require_utils15(); + var Sha512 = class _Sha512 { + constructor() { + this.hash = sha512_1.sha512.create(); + } + static half(input) { + return new _Sha512().add(input).first256(); + } + add(bytes) { + this.hash.update(bytes); + return this; + } + addU32(i) { + const buffer = new Uint8Array(4); + new DataView(buffer.buffer).setUint32(0, i); + return this.add(buffer); + } + finish() { + return this.hash.digest(); + } + first256() { + return this.finish().slice(0, 32); + } + first256BigInt() { + return (0, utils_1.bytesToNumberBE)(this.first256()); + } + }; + exports2.default = Sha512; + } +}); + +// node_modules/ripple-keypairs/dist/signing-schemes/secp256k1/utils.js +var require_utils16 = __commonJS({ + "node_modules/ripple-keypairs/dist/signing-schemes/secp256k1/utils.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.accountPublicFromPublicGenerator = exports2.derivePrivateKey = void 0; + var secp256k1_1 = require_secp256k1(); + var Sha512_1 = __importDefault2(require_Sha512()); + var ZERO = BigInt(0); + function deriveScalar(bytes, discrim) { + const order = secp256k1_1.secp256k1.CURVE.n; + for (let i = 0; i <= 4294967295; i++) { + const hasher = new Sha512_1.default().add(bytes); + if (discrim !== void 0) { + hasher.addU32(discrim); + } + hasher.addU32(i); + const key = hasher.first256BigInt(); + if (key > ZERO && key < order) { + return key; + } + } + throw new Error("impossible unicorn ;)"); + } + function derivePrivateKey(seed, opts = {}) { + const root = opts.validator; + const order = secp256k1_1.secp256k1.CURVE.n; + const privateGen = deriveScalar(seed); + if (root) { + return privateGen; + } + const publicGen = secp256k1_1.secp256k1.ProjectivePoint.BASE.multiply(privateGen).toRawBytes(true); + const accountIndex = opts.accountIndex || 0; + return (deriveScalar(publicGen, accountIndex) + privateGen) % order; + } + exports2.derivePrivateKey = derivePrivateKey; + function accountPublicFromPublicGenerator(publicGenBytes) { + const rootPubPoint = secp256k1_1.secp256k1.ProjectivePoint.fromHex(publicGenBytes); + const scalar = deriveScalar(publicGenBytes, 0); + const point = secp256k1_1.secp256k1.ProjectivePoint.BASE.multiply(scalar); + const offset = rootPubPoint.add(point); + return offset.toRawBytes(true); + } + exports2.accountPublicFromPublicGenerator = accountPublicFromPublicGenerator; + } +}); + +// node_modules/ripple-keypairs/dist/utils/assert.js +var require_assert = __commonJS({ + "node_modules/ripple-keypairs/dist/utils/assert.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var assertHelper = { + ok(cond, message) { + if (!cond) { + throw new Error(message); + } + } + }; + exports2.default = assertHelper; + } +}); + +// node_modules/ripple-keypairs/dist/utils/getAlgorithmFromKey.js +var require_getAlgorithmFromKey = __commonJS({ + "node_modules/ripple-keypairs/dist/utils/getAlgorithmFromKey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getAlgorithmFromPrivateKey = exports2.getAlgorithmFromPublicKey = exports2.getAlgorithmFromKey = void 0; + var Prefix; + (function(Prefix2) { + Prefix2[Prefix2["NONE"] = -1] = "NONE"; + Prefix2[Prefix2["ED25519"] = 237] = "ED25519"; + Prefix2[Prefix2["SECP256K1_PUB_X"] = 2] = "SECP256K1_PUB_X"; + Prefix2[Prefix2["SECP256K1_PUB_X_ODD_Y"] = 3] = "SECP256K1_PUB_X_ODD_Y"; + Prefix2[Prefix2["SECP256K1_PUB_XY"] = 4] = "SECP256K1_PUB_XY"; + Prefix2[Prefix2["SECP256K1_PRIVATE"] = 0] = "SECP256K1_PRIVATE"; + })(Prefix || (Prefix = {})); + var KEY_TYPES = { + [`private_${Prefix.NONE}_32`]: "ecdsa-secp256k1", + [`private_${Prefix.SECP256K1_PRIVATE}_33`]: "ecdsa-secp256k1", + [`private_${Prefix.ED25519}_33`]: "ed25519", + [`public_${Prefix.ED25519}_33`]: "ed25519", + [`public_${Prefix.SECP256K1_PUB_X}_33`]: "ecdsa-secp256k1", + [`public_${Prefix.SECP256K1_PUB_X_ODD_Y}_33`]: "ecdsa-secp256k1", + [`public_${Prefix.SECP256K1_PUB_XY}_65`]: "ecdsa-secp256k1" + }; + function getKeyInfo(key) { + return { + prefix: key.length < 2 ? Prefix.NONE : parseInt(key.slice(0, 2), 16), + len: key.length / 2 + }; + } + function prefixRepr(prefix) { + return prefix === Prefix.NONE ? "None" : `0x${prefix.toString(16).padStart(2, "0")}`; + } + function getValidFormatsTable(type) { + const padding = 2; + const colWidth = { + algorithm: "ecdsa-secp256k1".length + padding, + prefix: "0x00".length + padding + }; + return Object.entries(KEY_TYPES).filter(([key]) => key.startsWith(type)).map(([key, algorithm]) => { + const [, prefix, length] = key.split("_"); + const paddedAlgo = algorithm.padEnd(colWidth.algorithm); + const paddedPrefix = prefixRepr(Number(prefix)).padEnd(colWidth.prefix); + return `${paddedAlgo} - Prefix: ${paddedPrefix} Length: ${length} bytes`; + }).join("\n"); + } + function keyError({ key, type, prefix, len }) { + const validFormats = getValidFormatsTable(type); + return `invalid_key: + +Type: ${type} +Key: ${key} +Prefix: ${prefixRepr(prefix)} +Length: ${len} bytes + +Acceptable ${type} formats are: +${validFormats} +`; + } + function getAlgorithmFromKey(key, type) { + const { prefix, len } = getKeyInfo(key); + const usedPrefix = type === "private" && len === 32 ? Prefix.NONE : prefix; + const algorithm = KEY_TYPES[`${type}_${usedPrefix}_${len}`]; + if (!algorithm) { + throw new Error(keyError({ key, type, len, prefix: usedPrefix })); + } + return algorithm; + } + exports2.getAlgorithmFromKey = getAlgorithmFromKey; + function getAlgorithmFromPublicKey(key) { + return getAlgorithmFromKey(key, "public"); + } + exports2.getAlgorithmFromPublicKey = getAlgorithmFromPublicKey; + function getAlgorithmFromPrivateKey(key) { + return getAlgorithmFromKey(key, "private"); + } + exports2.getAlgorithmFromPrivateKey = getAlgorithmFromPrivateKey; + } +}); + +// node_modules/ripple-keypairs/dist/signing-schemes/secp256k1/index.js +var require_secp256k12 = __commonJS({ + "node_modules/ripple-keypairs/dist/signing-schemes/secp256k1/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var utils_1 = require_utils15(); + var secp256k1_1 = require_secp256k1(); + var utils_2 = require_utils10(); + var utils_3 = require_utils16(); + var assert_1 = __importDefault2(require_assert()); + var Sha512_1 = __importDefault2(require_Sha512()); + var SECP256K1_PREFIX = "00"; + var secp256k1 = { + deriveKeypair(entropy, options) { + const derived = (0, utils_3.derivePrivateKey)(entropy, options); + const privateKey = SECP256K1_PREFIX + (0, utils_2.bytesToHex)((0, utils_1.numberToBytesBE)(derived, 32)); + const publicKey = (0, utils_2.bytesToHex)(secp256k1_1.secp256k1.getPublicKey(derived, true)); + return { privateKey, publicKey }; + }, + sign(message, privateKey) { + assert_1.default.ok(privateKey.length === 66 && privateKey.startsWith(SECP256K1_PREFIX) || privateKey.length === 64); + const normedPrivateKey = privateKey.length === 66 ? privateKey.slice(2) : privateKey; + return secp256k1_1.secp256k1.sign(Sha512_1.default.half(message), normedPrivateKey, { + // "Canonical" signatures + lowS: true, + // Would fail tests if signatures aren't deterministic + extraEntropy: void 0 + }).toDERHex(true).toUpperCase(); + }, + verify(message, signature, publicKey) { + const decoded = secp256k1_1.secp256k1.Signature.fromDER(signature); + return secp256k1_1.secp256k1.verify(decoded, Sha512_1.default.half(message), publicKey); + } + }; + exports2.default = secp256k1; + } +}); + +// node_modules/@noble/curves/abstract/edwards.js +var require_edwards = __commonJS({ + "node_modules/@noble/curves/abstract/edwards.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.PrimeEdwardsPoint = void 0; + exports2.edwards = edwards2; + exports2.eddsa = eddsa2; + exports2.twistedEdwards = twistedEdwards; + var utils_ts_1 = require_utils14(); + var curve_ts_1 = require_curve(); + var modular_ts_1 = require_modular(); + var _0n7 = BigInt(0); + var _1n7 = BigInt(1); + var _2n5 = BigInt(2); + var _8n4 = BigInt(8); + function isEdValidXY2(Fp2, CURVE, x, y) { + const x2 = Fp2.sqr(x); + const y2 = Fp2.sqr(y); + const left = Fp2.add(Fp2.mul(CURVE.a, x2), y2); + const right = Fp2.add(Fp2.ONE, Fp2.mul(CURVE.d, Fp2.mul(x2, y2))); + return Fp2.eql(left, right); + } + function edwards2(params, extraOpts = {}) { + const validated = (0, curve_ts_1._createCurveFields)("edwards", params, extraOpts, extraOpts.FpFnLE); + const { Fp: Fp2, Fn: Fn2 } = validated; + let CURVE = validated.CURVE; + const { h: cofactor } = CURVE; + (0, utils_ts_1._validateObject)(extraOpts, {}, { uvRatio: "function" }); + const MASK = _2n5 << BigInt(Fn2.BYTES * 8) - _1n7; + const modP = (n) => Fp2.create(n); + const uvRatio2 = extraOpts.uvRatio || ((u, v) => { + try { + return { isValid: true, value: Fp2.sqrt(Fp2.div(u, v)) }; + } catch (e) { + return { isValid: false, value: _0n7 }; + } + }); + if (!isEdValidXY2(Fp2, CURVE, CURVE.Gx, CURVE.Gy)) + throw new Error("bad curve params: generator point"); + function acoord(title, n, banZero = false) { + const min = banZero ? _1n7 : _0n7; + (0, utils_ts_1.aInRange)("coordinate " + title, n, min, MASK); + return n; + } + function aextpoint(other) { + if (!(other instanceof Point)) + throw new Error("ExtendedPoint expected"); + } + const toAffineMemo = (0, utils_ts_1.memoized)((p, iz) => { + const { X, Y, Z } = p; + const is0 = p.is0(); + if (iz == null) + iz = is0 ? _8n4 : Fp2.inv(Z); + const x = modP(X * iz); + const y = modP(Y * iz); + const zz = Fp2.mul(Z, iz); + if (is0) + return { x: _0n7, y: _1n7 }; + if (zz !== _1n7) + throw new Error("invZ was invalid"); + return { x, y }; + }); + const assertValidMemo = (0, utils_ts_1.memoized)((p) => { + const { a, d } = CURVE; + if (p.is0()) + throw new Error("bad point: ZERO"); + const { X, Y, Z, T } = p; + const X2 = modP(X * X); + const Y2 = modP(Y * Y); + const Z2 = modP(Z * Z); + const Z4 = modP(Z2 * Z2); + const aX2 = modP(X2 * a); + const left = modP(Z2 * modP(aX2 + Y2)); + const right = modP(Z4 + modP(d * modP(X2 * Y2))); + if (left !== right) + throw new Error("bad point: equation left != right (1)"); + const XY = modP(X * Y); + const ZT = modP(Z * T); + if (XY !== ZT) + throw new Error("bad point: equation left != right (2)"); + return true; + }); + class Point { + constructor(X, Y, Z, T) { + this.X = acoord("x", X); + this.Y = acoord("y", Y); + this.Z = acoord("z", Z, true); + this.T = acoord("t", T); + Object.freeze(this); + } + static CURVE() { + return CURVE; + } + static fromAffine(p) { + if (p instanceof Point) + throw new Error("extended point not allowed"); + const { x, y } = p || {}; + acoord("x", x); + acoord("y", y); + return new Point(x, y, _1n7, modP(x * y)); + } + // Uses algo from RFC8032 5.1.3. + static fromBytes(bytes, zip215 = false) { + const len = Fp2.BYTES; + const { a, d } = CURVE; + bytes = (0, utils_ts_1.copyBytes)((0, utils_ts_1._abytes2)(bytes, len, "point")); + (0, utils_ts_1._abool2)(zip215, "zip215"); + const normed = (0, utils_ts_1.copyBytes)(bytes); + const lastByte = bytes[len - 1]; + normed[len - 1] = lastByte & ~128; + const y = (0, utils_ts_1.bytesToNumberLE)(normed); + const max = zip215 ? MASK : Fp2.ORDER; + (0, utils_ts_1.aInRange)("point.y", y, _0n7, max); + const y2 = modP(y * y); + const u = modP(y2 - _1n7); + const v = modP(d * y2 - a); + let { isValid, value: x } = uvRatio2(u, v); + if (!isValid) + throw new Error("bad point: invalid y coordinate"); + const isXOdd = (x & _1n7) === _1n7; + const isLastByteOdd = (lastByte & 128) !== 0; + if (!zip215 && x === _0n7 && isLastByteOdd) + throw new Error("bad point: x=0 and x_0=1"); + if (isLastByteOdd !== isXOdd) + x = modP(-x); + return Point.fromAffine({ x, y }); + } + static fromHex(bytes, zip215 = false) { + return Point.fromBytes((0, utils_ts_1.ensureBytes)("point", bytes), zip215); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + precompute(windowSize = 8, isLazy = true) { + wnaf.createCache(this, windowSize); + if (!isLazy) + this.multiply(_2n5); + return this; + } + // Useful in fromAffine() - not for fromBytes(), which always created valid points. + assertValidity() { + assertValidMemo(this); + } + // Compare one point to another. + equals(other) { + aextpoint(other); + const { X: X1, Y: Y1, Z: Z1 } = this; + const { X: X2, Y: Y2, Z: Z2 } = other; + const X1Z2 = modP(X1 * Z2); + const X2Z1 = modP(X2 * Z1); + const Y1Z2 = modP(Y1 * Z2); + const Y2Z1 = modP(Y2 * Z1); + return X1Z2 === X2Z1 && Y1Z2 === Y2Z1; + } + is0() { + return this.equals(Point.ZERO); + } + negate() { + return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T)); + } + // Fast algo for doubling Extended Point. + // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd + // Cost: 4M + 4S + 1*a + 6add + 1*2. + double() { + const { a } = CURVE; + const { X: X1, Y: Y1, Z: Z1 } = this; + const A = modP(X1 * X1); + const B = modP(Y1 * Y1); + const C = modP(_2n5 * modP(Z1 * Z1)); + const D = modP(a * A); + const x1y1 = X1 + Y1; + const E = modP(modP(x1y1 * x1y1) - A - B); + const G = D + B; + const F = G - C; + const H = D - B; + const X3 = modP(E * F); + const Y3 = modP(G * H); + const T3 = modP(E * H); + const Z3 = modP(F * G); + return new Point(X3, Y3, Z3, T3); + } + // Fast algo for adding 2 Extended Points. + // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd + // Cost: 9M + 1*a + 1*d + 7add. + add(other) { + aextpoint(other); + const { a, d } = CURVE; + const { X: X1, Y: Y1, Z: Z1, T: T1 } = this; + const { X: X2, Y: Y2, Z: Z2, T: T2 } = other; + const A = modP(X1 * X2); + const B = modP(Y1 * Y2); + const C = modP(T1 * d * T2); + const D = modP(Z1 * Z2); + const E = modP((X1 + Y1) * (X2 + Y2) - A - B); + const F = D - C; + const G = D + C; + const H = modP(B - a * A); + const X3 = modP(E * F); + const Y3 = modP(G * H); + const T3 = modP(E * H); + const Z3 = modP(F * G); + return new Point(X3, Y3, Z3, T3); + } + subtract(other) { + return this.add(other.negate()); + } + // Constant-time multiplication. + multiply(scalar) { + if (!Fn2.isValidNot0(scalar)) + throw new Error("invalid scalar: expected 1 <= sc < curve.n"); + const { p, f } = wnaf.cached(this, scalar, (p2) => (0, curve_ts_1.normalizeZ)(Point, p2)); + return (0, curve_ts_1.normalizeZ)(Point, [p, f])[0]; + } + // Non-constant-time multiplication. Uses double-and-add algorithm. + // It's faster, but should only be used when you don't care about + // an exposed private key e.g. sig verification. + // Does NOT allow scalars higher than CURVE.n. + // Accepts optional accumulator to merge with multiply (important for sparse scalars) + multiplyUnsafe(scalar, acc = Point.ZERO) { + if (!Fn2.isValid(scalar)) + throw new Error("invalid scalar: expected 0 <= sc < curve.n"); + if (scalar === _0n7) + return Point.ZERO; + if (this.is0() || scalar === _1n7) + return this; + return wnaf.unsafe(this, scalar, (p) => (0, curve_ts_1.normalizeZ)(Point, p), acc); + } + // Checks if point is of small order. + // If you add something to small order point, you will have "dirty" + // point with torsion component. + // Multiplies point by cofactor and checks if the result is 0. + isSmallOrder() { + return this.multiplyUnsafe(cofactor).is0(); + } + // Multiplies point by curve order and checks if the result is 0. + // Returns `false` is the point is dirty. + isTorsionFree() { + return wnaf.unsafe(this, CURVE.n).is0(); + } + // Converts Extended point to default (x, y) coordinates. + // Can accept precomputed Z^-1 - for example, from invertBatch. + toAffine(invertedZ) { + return toAffineMemo(this, invertedZ); + } + clearCofactor() { + if (cofactor === _1n7) + return this; + return this.multiplyUnsafe(cofactor); + } + toBytes() { + const { x, y } = this.toAffine(); + const bytes = Fp2.toBytes(y); + bytes[bytes.length - 1] |= x & _1n7 ? 128 : 0; + return bytes; + } + toHex() { + return (0, utils_ts_1.bytesToHex)(this.toBytes()); + } + toString() { + return ``; + } + // TODO: remove + get ex() { + return this.X; + } + get ey() { + return this.Y; + } + get ez() { + return this.Z; + } + get et() { + return this.T; + } + static normalizeZ(points) { + return (0, curve_ts_1.normalizeZ)(Point, points); + } + static msm(points, scalars) { + return (0, curve_ts_1.pippenger)(Point, Fn2, points, scalars); + } + _setWindowSize(windowSize) { + this.precompute(windowSize); + } + toRawBytes() { + return this.toBytes(); + } + } + Point.BASE = new Point(CURVE.Gx, CURVE.Gy, _1n7, modP(CURVE.Gx * CURVE.Gy)); + Point.ZERO = new Point(_0n7, _1n7, _1n7, _0n7); + Point.Fp = Fp2; + Point.Fn = Fn2; + const wnaf = new curve_ts_1.wNAF(Point, Fn2.BITS); + Point.BASE.precompute(8); + return Point; + } + var PrimeEdwardsPoint2 = class { + constructor(ep) { + this.ep = ep; + } + // Static methods that must be implemented by subclasses + static fromBytes(_bytes) { + (0, utils_ts_1.notImplemented)(); + } + static fromHex(_hex) { + (0, utils_ts_1.notImplemented)(); + } + get x() { + return this.toAffine().x; + } + get y() { + return this.toAffine().y; + } + // Common implementations + clearCofactor() { + return this; + } + assertValidity() { + this.ep.assertValidity(); + } + toAffine(invertedZ) { + return this.ep.toAffine(invertedZ); + } + toHex() { + return (0, utils_ts_1.bytesToHex)(this.toBytes()); + } + toString() { + return this.toHex(); + } + isTorsionFree() { + return true; + } + isSmallOrder() { + return false; + } + add(other) { + this.assertSame(other); + return this.init(this.ep.add(other.ep)); + } + subtract(other) { + this.assertSame(other); + return this.init(this.ep.subtract(other.ep)); + } + multiply(scalar) { + return this.init(this.ep.multiply(scalar)); + } + multiplyUnsafe(scalar) { + return this.init(this.ep.multiplyUnsafe(scalar)); + } + double() { + return this.init(this.ep.double()); + } + negate() { + return this.init(this.ep.negate()); + } + precompute(windowSize, isLazy) { + return this.init(this.ep.precompute(windowSize, isLazy)); + } + /** @deprecated use `toBytes` */ + toRawBytes() { + return this.toBytes(); + } + }; + exports2.PrimeEdwardsPoint = PrimeEdwardsPoint2; + function eddsa2(Point, cHash, eddsaOpts = {}) { + if (typeof cHash !== "function") + throw new Error('"hash" function param is required'); + (0, utils_ts_1._validateObject)(eddsaOpts, {}, { + adjustScalarBytes: "function", + randomBytes: "function", + domain: "function", + prehash: "function", + mapToCurve: "function" + }); + const { prehash } = eddsaOpts; + const { BASE, Fp: Fp2, Fn: Fn2 } = Point; + const randomBytes2 = eddsaOpts.randomBytes || utils_ts_1.randomBytes; + const adjustScalarBytes2 = eddsaOpts.adjustScalarBytes || ((bytes) => bytes); + const domain = eddsaOpts.domain || ((data, ctx, phflag) => { + (0, utils_ts_1._abool2)(phflag, "phflag"); + if (ctx.length || phflag) + throw new Error("Contexts/pre-hash are not supported"); + return data; + }); + function modN_LE(hash) { + return Fn2.create((0, utils_ts_1.bytesToNumberLE)(hash)); + } + function getPrivateScalar(key) { + const len = lengths.secretKey; + key = (0, utils_ts_1.ensureBytes)("private key", key, len); + const hashed = (0, utils_ts_1.ensureBytes)("hashed private key", cHash(key), 2 * len); + const head = adjustScalarBytes2(hashed.slice(0, len)); + const prefix = hashed.slice(len, 2 * len); + const scalar = modN_LE(head); + return { head, prefix, scalar }; + } + function getExtendedPublicKey(secretKey) { + const { head, prefix, scalar } = getPrivateScalar(secretKey); + const point = BASE.multiply(scalar); + const pointBytes = point.toBytes(); + return { head, prefix, scalar, point, pointBytes }; + } + function getPublicKey(secretKey) { + return getExtendedPublicKey(secretKey).pointBytes; + } + function hashDomainToScalar(context = Uint8Array.of(), ...msgs) { + const msg = (0, utils_ts_1.concatBytes)(...msgs); + return modN_LE(cHash(domain(msg, (0, utils_ts_1.ensureBytes)("context", context), !!prehash))); + } + function sign(msg, secretKey, options = {}) { + msg = (0, utils_ts_1.ensureBytes)("message", msg); + if (prehash) + msg = prehash(msg); + const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey); + const r = hashDomainToScalar(options.context, prefix, msg); + const R = BASE.multiply(r).toBytes(); + const k = hashDomainToScalar(options.context, R, pointBytes, msg); + const s = Fn2.create(r + k * scalar); + if (!Fn2.isValid(s)) + throw new Error("sign failed: invalid s"); + const rs = (0, utils_ts_1.concatBytes)(R, Fn2.toBytes(s)); + return (0, utils_ts_1._abytes2)(rs, lengths.signature, "result"); + } + const verifyOpts = { zip215: true }; + function verify(sig, msg, publicKey, options = verifyOpts) { + const { context, zip215 } = options; + const len = lengths.signature; + sig = (0, utils_ts_1.ensureBytes)("signature", sig, len); + msg = (0, utils_ts_1.ensureBytes)("message", msg); + publicKey = (0, utils_ts_1.ensureBytes)("publicKey", publicKey, lengths.publicKey); + if (zip215 !== void 0) + (0, utils_ts_1._abool2)(zip215, "zip215"); + if (prehash) + msg = prehash(msg); + const mid = len / 2; + const r = sig.subarray(0, mid); + const s = (0, utils_ts_1.bytesToNumberLE)(sig.subarray(mid, len)); + let A, R, SB; + try { + A = Point.fromBytes(publicKey, zip215); + R = Point.fromBytes(r, zip215); + SB = BASE.multiplyUnsafe(s); + } catch (error) { + return false; + } + if (!zip215 && A.isSmallOrder()) + return false; + const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg); + const RkA = R.add(A.multiplyUnsafe(k)); + return RkA.subtract(SB).clearCofactor().is0(); + } + const _size = Fp2.BYTES; + const lengths = { + secretKey: _size, + publicKey: _size, + signature: 2 * _size, + seed: _size + }; + function randomSecretKey(seed = randomBytes2(lengths.seed)) { + return (0, utils_ts_1._abytes2)(seed, lengths.seed, "seed"); + } + function keygen(seed) { + const secretKey = utils.randomSecretKey(seed); + return { secretKey, publicKey: getPublicKey(secretKey) }; + } + function isValidSecretKey(key) { + return (0, utils_ts_1.isBytes)(key) && key.length === Fn2.BYTES; + } + function isValidPublicKey(key, zip215) { + try { + return !!Point.fromBytes(key, zip215); + } catch (error) { + return false; + } + } + const utils = { + getExtendedPublicKey, + randomSecretKey, + isValidSecretKey, + isValidPublicKey, + /** + * Converts ed public key to x public key. Uses formula: + * - ed25519: + * - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)` + * - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))` + * - ed448: + * - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)` + * - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))` + */ + toMontgomery(publicKey) { + const { y } = Point.fromBytes(publicKey); + const size = lengths.publicKey; + const is25519 = size === 32; + if (!is25519 && size !== 57) + throw new Error("only defined for 25519 and 448"); + const u = is25519 ? Fp2.div(_1n7 + y, _1n7 - y) : Fp2.div(y - _1n7, y + _1n7); + return Fp2.toBytes(u); + }, + toMontgomerySecret(secretKey) { + const size = lengths.secretKey; + (0, utils_ts_1._abytes2)(secretKey, size); + const hashed = cHash(secretKey.subarray(0, size)); + return adjustScalarBytes2(hashed).subarray(0, size); + }, + /** @deprecated */ + randomPrivateKey: randomSecretKey, + /** @deprecated */ + precompute(windowSize = 8, point = Point.BASE) { + return point.precompute(windowSize, false); + } + }; + return Object.freeze({ + keygen, + getPublicKey, + sign, + verify, + utils, + Point, + lengths + }); + } + function _eddsa_legacy_opts_to_new(c) { + const CURVE = { + a: c.a, + d: c.d, + p: c.Fp.ORDER, + n: c.n, + h: c.h, + Gx: c.Gx, + Gy: c.Gy + }; + const Fp2 = c.Fp; + const Fn2 = (0, modular_ts_1.Field)(CURVE.n, c.nBitLength, true); + const curveOpts = { Fp: Fp2, Fn: Fn2, uvRatio: c.uvRatio }; + const eddsaOpts = { + randomBytes: c.randomBytes, + adjustScalarBytes: c.adjustScalarBytes, + domain: c.domain, + prehash: c.prehash, + mapToCurve: c.mapToCurve + }; + return { CURVE, curveOpts, hash: c.hash, eddsaOpts }; + } + function _eddsa_new_output_to_legacy(c, eddsa3) { + const Point = eddsa3.Point; + const legacy = Object.assign({}, eddsa3, { + ExtendedPoint: Point, + CURVE: c, + nBitLength: Point.Fn.BITS, + nByteLength: Point.Fn.BYTES + }); + return legacy; + } + function twistedEdwards(c) { + const { CURVE, curveOpts, hash, eddsaOpts } = _eddsa_legacy_opts_to_new(c); + const Point = edwards2(CURVE, curveOpts); + const EDDSA = eddsa2(Point, hash, eddsaOpts); + return _eddsa_new_output_to_legacy(c, EDDSA); + } + } +}); + +// node_modules/@noble/curves/abstract/montgomery.js +var require_montgomery = __commonJS({ + "node_modules/@noble/curves/abstract/montgomery.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.montgomery = montgomery2; + var utils_ts_1 = require_utils14(); + var modular_ts_1 = require_modular(); + var _0n7 = BigInt(0); + var _1n7 = BigInt(1); + var _2n5 = BigInt(2); + function validateOpts2(curve) { + (0, utils_ts_1._validateObject)(curve, { + adjustScalarBytes: "function", + powPminus2: "function" + }); + return Object.freeze({ ...curve }); + } + function montgomery2(curveDef) { + const CURVE = validateOpts2(curveDef); + const { P, type, adjustScalarBytes: adjustScalarBytes2, powPminus2, randomBytes: rand } = CURVE; + const is25519 = type === "x25519"; + if (!is25519 && type !== "x448") + throw new Error("invalid type"); + const randomBytes_ = rand || utils_ts_1.randomBytes; + const montgomeryBits = is25519 ? 255 : 448; + const fieldLen = is25519 ? 32 : 56; + const Gu = is25519 ? BigInt(9) : BigInt(5); + const a24 = is25519 ? BigInt(121665) : BigInt(39081); + const minScalar = is25519 ? _2n5 ** BigInt(254) : _2n5 ** BigInt(447); + const maxAdded = is25519 ? BigInt(8) * _2n5 ** BigInt(251) - _1n7 : BigInt(4) * _2n5 ** BigInt(445) - _1n7; + const maxScalar = minScalar + maxAdded + _1n7; + const modP = (n) => (0, modular_ts_1.mod)(n, P); + const GuBytes = encodeU(Gu); + function encodeU(u) { + return (0, utils_ts_1.numberToBytesLE)(modP(u), fieldLen); + } + function decodeU(u) { + const _u = (0, utils_ts_1.ensureBytes)("u coordinate", u, fieldLen); + if (is25519) + _u[31] &= 127; + return modP((0, utils_ts_1.bytesToNumberLE)(_u)); + } + function decodeScalar(scalar) { + return (0, utils_ts_1.bytesToNumberLE)(adjustScalarBytes2((0, utils_ts_1.ensureBytes)("scalar", scalar, fieldLen))); + } + function scalarMult(scalar, u) { + const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar)); + if (pu === _0n7) + throw new Error("invalid private or public key received"); + return encodeU(pu); + } + function scalarMultBase(scalar) { + return scalarMult(scalar, GuBytes); + } + function cswap(swap, x_2, x_3) { + const dummy = modP(swap * (x_2 - x_3)); + x_2 = modP(x_2 - dummy); + x_3 = modP(x_3 + dummy); + return { x_2, x_3 }; + } + function montgomeryLadder(u, scalar) { + (0, utils_ts_1.aInRange)("u", u, _0n7, P); + (0, utils_ts_1.aInRange)("scalar", scalar, minScalar, maxScalar); + const k = scalar; + const x_1 = u; + let x_2 = _1n7; + let z_2 = _0n7; + let x_3 = u; + let z_3 = _1n7; + let swap = _0n7; + for (let t = BigInt(montgomeryBits - 1); t >= _0n7; t--) { + const k_t = k >> t & _1n7; + swap ^= k_t; + ({ x_2, x_3 } = cswap(swap, x_2, x_3)); + ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3)); + swap = k_t; + const A = x_2 + z_2; + const AA = modP(A * A); + const B = x_2 - z_2; + const BB = modP(B * B); + const E = AA - BB; + const C = x_3 + z_3; + const D = x_3 - z_3; + const DA = modP(D * A); + const CB = modP(C * B); + const dacb = DA + CB; + const da_cb = DA - CB; + x_3 = modP(dacb * dacb); + z_3 = modP(x_1 * modP(da_cb * da_cb)); + x_2 = modP(AA * BB); + z_2 = modP(E * (AA + modP(a24 * E))); + } + ({ x_2, x_3 } = cswap(swap, x_2, x_3)); + ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3)); + const z2 = powPminus2(z_2); + return modP(x_2 * z2); + } + const lengths = { + secretKey: fieldLen, + publicKey: fieldLen, + seed: fieldLen + }; + const randomSecretKey = (seed = randomBytes_(fieldLen)) => { + (0, utils_ts_1.abytes)(seed, lengths.seed); + return seed; + }; + function keygen(seed) { + const secretKey = randomSecretKey(seed); + return { secretKey, publicKey: scalarMultBase(secretKey) }; + } + const utils = { + randomSecretKey, + randomPrivateKey: randomSecretKey + }; + return { + keygen, + getSharedSecret: (secretKey, publicKey) => scalarMult(secretKey, publicKey), + getPublicKey: (secretKey) => scalarMultBase(secretKey), + scalarMult, + scalarMultBase, + utils, + GuBytes: GuBytes.slice(), + lengths + }; + } + } +}); + +// node_modules/@noble/curves/ed25519.js +var require_ed25519 = __commonJS({ + "node_modules/@noble/curves/ed25519.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hash_to_ristretto255 = exports2.hashToRistretto255 = exports2.encodeToCurve = exports2.hashToCurve = exports2.RistrettoPoint = exports2.edwardsToMontgomery = exports2.ED25519_TORSION_SUBGROUP = exports2.ristretto255_hasher = exports2.ristretto255 = exports2.ed25519_hasher = exports2.x25519 = exports2.ed25519ph = exports2.ed25519ctx = exports2.ed25519 = void 0; + exports2.edwardsToMontgomeryPub = edwardsToMontgomeryPub; + exports2.edwardsToMontgomeryPriv = edwardsToMontgomeryPriv; + var sha2_js_1 = require_sha2(); + var utils_js_1 = require_utils9(); + var curve_ts_1 = require_curve(); + var edwards_ts_1 = require_edwards(); + var hash_to_curve_ts_1 = require_hash_to_curve(); + var modular_ts_1 = require_modular(); + var montgomery_ts_1 = require_montgomery(); + var utils_ts_1 = require_utils14(); + var _0n7 = /* @__PURE__ */ BigInt(0); + var _1n7 = BigInt(1); + var _2n5 = BigInt(2); + var _3n3 = BigInt(3); + var _5n3 = BigInt(5); + var _8n4 = BigInt(8); + var ed25519_CURVE_p2 = BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"); + var ed25519_CURVE2 = /* @__PURE__ */ (() => ({ + p: ed25519_CURVE_p2, + n: BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"), + h: _8n4, + a: BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"), + d: BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"), + Gx: BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"), + Gy: BigInt("0x6666666666666666666666666666666666666666666666666666666666666658") + }))(); + function ed25519_pow_2_252_32(x) { + const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80); + const P = ed25519_CURVE_p2; + const x2 = x * x % P; + const b2 = x2 * x % P; + const b4 = (0, modular_ts_1.pow2)(b2, _2n5, P) * b2 % P; + const b5 = (0, modular_ts_1.pow2)(b4, _1n7, P) * x % P; + const b10 = (0, modular_ts_1.pow2)(b5, _5n3, P) * b5 % P; + const b20 = (0, modular_ts_1.pow2)(b10, _10n, P) * b10 % P; + const b40 = (0, modular_ts_1.pow2)(b20, _20n, P) * b20 % P; + const b80 = (0, modular_ts_1.pow2)(b40, _40n, P) * b40 % P; + const b160 = (0, modular_ts_1.pow2)(b80, _80n, P) * b80 % P; + const b240 = (0, modular_ts_1.pow2)(b160, _80n, P) * b80 % P; + const b250 = (0, modular_ts_1.pow2)(b240, _10n, P) * b10 % P; + const pow_p_5_8 = (0, modular_ts_1.pow2)(b250, _2n5, P) * x % P; + return { pow_p_5_8, b2 }; + } + function adjustScalarBytes2(bytes) { + bytes[0] &= 248; + bytes[31] &= 127; + bytes[31] |= 64; + return bytes; + } + var ED25519_SQRT_M12 = /* @__PURE__ */ BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"); + function uvRatio2(u, v) { + const P = ed25519_CURVE_p2; + const v3 = (0, modular_ts_1.mod)(v * v * v, P); + const v7 = (0, modular_ts_1.mod)(v3 * v3 * v, P); + const pow = ed25519_pow_2_252_32(u * v7).pow_p_5_8; + let x = (0, modular_ts_1.mod)(u * v3 * pow, P); + const vx2 = (0, modular_ts_1.mod)(v * x * x, P); + const root1 = x; + const root2 = (0, modular_ts_1.mod)(x * ED25519_SQRT_M12, P); + const useRoot1 = vx2 === u; + const useRoot2 = vx2 === (0, modular_ts_1.mod)(-u, P); + const noRoot = vx2 === (0, modular_ts_1.mod)(-u * ED25519_SQRT_M12, P); + if (useRoot1) + x = root1; + if (useRoot2 || noRoot) + x = root2; + if ((0, modular_ts_1.isNegativeLE)(x, P)) + x = (0, modular_ts_1.mod)(-x, P); + return { isValid: useRoot1 || useRoot2, value: x }; + } + var Fp2 = /* @__PURE__ */ (() => (0, modular_ts_1.Field)(ed25519_CURVE2.p, { isLE: true }))(); + var Fn2 = /* @__PURE__ */ (() => (0, modular_ts_1.Field)(ed25519_CURVE2.n, { isLE: true }))(); + var ed25519Defaults = /* @__PURE__ */ (() => ({ + ...ed25519_CURVE2, + Fp: Fp2, + hash: sha2_js_1.sha512, + adjustScalarBytes: adjustScalarBytes2, + // dom2 + // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3. + // Constant-time, u/√v + uvRatio: uvRatio2 + }))(); + exports2.ed25519 = (() => (0, edwards_ts_1.twistedEdwards)(ed25519Defaults))(); + function ed25519_domain2(data, ctx, phflag) { + if (ctx.length > 255) + throw new Error("Context is too big"); + return (0, utils_js_1.concatBytes)((0, utils_js_1.utf8ToBytes)("SigEd25519 no Ed25519 collisions"), new Uint8Array([phflag ? 1 : 0, ctx.length]), ctx, data); + } + exports2.ed25519ctx = (() => (0, edwards_ts_1.twistedEdwards)({ + ...ed25519Defaults, + domain: ed25519_domain2 + }))(); + exports2.ed25519ph = (() => (0, edwards_ts_1.twistedEdwards)(Object.assign({}, ed25519Defaults, { + domain: ed25519_domain2, + prehash: sha2_js_1.sha512 + })))(); + exports2.x25519 = (() => { + const P = Fp2.ORDER; + return (0, montgomery_ts_1.montgomery)({ + P, + type: "x25519", + powPminus2: (x) => { + const { pow_p_5_8, b2 } = ed25519_pow_2_252_32(x); + return (0, modular_ts_1.mod)((0, modular_ts_1.pow2)(pow_p_5_8, _3n3, P) * b2, P); + }, + adjustScalarBytes: adjustScalarBytes2 + }); + })(); + var ELL2_C12 = /* @__PURE__ */ (() => (ed25519_CURVE_p2 + _3n3) / _8n4)(); + var ELL2_C22 = /* @__PURE__ */ (() => Fp2.pow(_2n5, ELL2_C12))(); + var ELL2_C32 = /* @__PURE__ */ (() => Fp2.sqrt(Fp2.neg(Fp2.ONE)))(); + function map_to_curve_elligator2_curve25519(u) { + const ELL2_C4 = (ed25519_CURVE_p2 - _5n3) / _8n4; + const ELL2_J = BigInt(486662); + let tv1 = Fp2.sqr(u); + tv1 = Fp2.mul(tv1, _2n5); + let xd = Fp2.add(tv1, Fp2.ONE); + let x1n = Fp2.neg(ELL2_J); + let tv2 = Fp2.sqr(xd); + let gxd = Fp2.mul(tv2, xd); + let gx1 = Fp2.mul(tv1, ELL2_J); + gx1 = Fp2.mul(gx1, x1n); + gx1 = Fp2.add(gx1, tv2); + gx1 = Fp2.mul(gx1, x1n); + let tv3 = Fp2.sqr(gxd); + tv2 = Fp2.sqr(tv3); + tv3 = Fp2.mul(tv3, gxd); + tv3 = Fp2.mul(tv3, gx1); + tv2 = Fp2.mul(tv2, tv3); + let y11 = Fp2.pow(tv2, ELL2_C4); + y11 = Fp2.mul(y11, tv3); + let y12 = Fp2.mul(y11, ELL2_C32); + tv2 = Fp2.sqr(y11); + tv2 = Fp2.mul(tv2, gxd); + let e1 = Fp2.eql(tv2, gx1); + let y1 = Fp2.cmov(y12, y11, e1); + let x2n = Fp2.mul(x1n, tv1); + let y21 = Fp2.mul(y11, u); + y21 = Fp2.mul(y21, ELL2_C22); + let y22 = Fp2.mul(y21, ELL2_C32); + let gx2 = Fp2.mul(gx1, tv1); + tv2 = Fp2.sqr(y21); + tv2 = Fp2.mul(tv2, gxd); + let e2 = Fp2.eql(tv2, gx2); + let y2 = Fp2.cmov(y22, y21, e2); + tv2 = Fp2.sqr(y1); + tv2 = Fp2.mul(tv2, gxd); + let e3 = Fp2.eql(tv2, gx1); + let xn = Fp2.cmov(x2n, x1n, e3); + let y = Fp2.cmov(y2, y1, e3); + let e4 = Fp2.isOdd(y); + y = Fp2.cmov(y, Fp2.neg(y), e3 !== e4); + return { xMn: xn, xMd: xd, yMn: y, yMd: _1n7 }; + } + var ELL2_C1_EDWARDS2 = /* @__PURE__ */ (() => (0, modular_ts_1.FpSqrtEven)(Fp2, Fp2.neg(BigInt(486664))))(); + function map_to_curve_elligator2_edwards255192(u) { + const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); + let xn = Fp2.mul(xMn, yMd); + xn = Fp2.mul(xn, ELL2_C1_EDWARDS2); + let xd = Fp2.mul(xMd, yMn); + let yn = Fp2.sub(xMn, xMd); + let yd = Fp2.add(xMn, xMd); + let tv1 = Fp2.mul(xd, yd); + let e = Fp2.eql(tv1, Fp2.ZERO); + xn = Fp2.cmov(xn, Fp2.ZERO, e); + xd = Fp2.cmov(xd, Fp2.ONE, e); + yn = Fp2.cmov(yn, Fp2.ONE, e); + yd = Fp2.cmov(yd, Fp2.ONE, e); + const [xd_inv, yd_inv] = (0, modular_ts_1.FpInvertBatch)(Fp2, [xd, yd], true); + return { x: Fp2.mul(xn, xd_inv), y: Fp2.mul(yn, yd_inv) }; + } + exports2.ed25519_hasher = (() => (0, hash_to_curve_ts_1.createHasher)(exports2.ed25519.Point, (scalars) => map_to_curve_elligator2_edwards255192(scalars[0]), { + DST: "edwards25519_XMD:SHA-512_ELL2_RO_", + encodeDST: "edwards25519_XMD:SHA-512_ELL2_NU_", + p: ed25519_CURVE_p2, + m: 1, + k: 128, + expand: "xmd", + hash: sha2_js_1.sha512 + }))(); + var SQRT_M12 = ED25519_SQRT_M12; + var SQRT_AD_MINUS_ONE2 = /* @__PURE__ */ BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"); + var INVSQRT_A_MINUS_D2 = /* @__PURE__ */ BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"); + var ONE_MINUS_D_SQ2 = /* @__PURE__ */ BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"); + var D_MINUS_ONE_SQ2 = /* @__PURE__ */ BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"); + var invertSqrt2 = (number) => uvRatio2(_1n7, number); + var MAX_255B2 = /* @__PURE__ */ BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + var bytes255ToNumberLE2 = (bytes) => exports2.ed25519.Point.Fp.create((0, utils_ts_1.bytesToNumberLE)(bytes) & MAX_255B2); + function calcElligatorRistrettoMap2(r0) { + const { d } = ed25519_CURVE2; + const P = ed25519_CURVE_p2; + const mod3 = (n) => Fp2.create(n); + const r = mod3(SQRT_M12 * r0 * r0); + const Ns = mod3((r + _1n7) * ONE_MINUS_D_SQ2); + let c = BigInt(-1); + const D = mod3((c - d * r) * mod3(r + d)); + let { isValid: Ns_D_is_sq, value: s } = uvRatio2(Ns, D); + let s_ = mod3(s * r0); + if (!(0, modular_ts_1.isNegativeLE)(s_, P)) + s_ = mod3(-s_); + if (!Ns_D_is_sq) + s = s_; + if (!Ns_D_is_sq) + c = r; + const Nt = mod3(c * (r - _1n7) * D_MINUS_ONE_SQ2 - D); + const s2 = s * s; + const W0 = mod3((s + s) * D); + const W1 = mod3(Nt * SQRT_AD_MINUS_ONE2); + const W2 = mod3(_1n7 - s2); + const W3 = mod3(_1n7 + s2); + return new exports2.ed25519.Point(mod3(W0 * W3), mod3(W2 * W1), mod3(W1 * W3), mod3(W0 * W2)); + } + function ristretto255_map(bytes) { + (0, utils_js_1.abytes)(bytes, 64); + const r1 = bytes255ToNumberLE2(bytes.subarray(0, 32)); + const R1 = calcElligatorRistrettoMap2(r1); + const r2 = bytes255ToNumberLE2(bytes.subarray(32, 64)); + const R2 = calcElligatorRistrettoMap2(r2); + return new _RistrettoPoint2(R1.add(R2)); + } + var _RistrettoPoint2 = class __RistrettoPoint extends edwards_ts_1.PrimeEdwardsPoint { + constructor(ep) { + super(ep); + } + static fromAffine(ap) { + return new __RistrettoPoint(exports2.ed25519.Point.fromAffine(ap)); + } + assertSame(other) { + if (!(other instanceof __RistrettoPoint)) + throw new Error("RistrettoPoint expected"); + } + init(ep) { + return new __RistrettoPoint(ep); + } + /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */ + static hashToCurve(hex) { + return ristretto255_map((0, utils_ts_1.ensureBytes)("ristrettoHash", hex, 64)); + } + static fromBytes(bytes) { + (0, utils_js_1.abytes)(bytes, 32); + const { a, d } = ed25519_CURVE2; + const P = ed25519_CURVE_p2; + const mod3 = (n) => Fp2.create(n); + const s = bytes255ToNumberLE2(bytes); + if (!(0, utils_ts_1.equalBytes)(Fp2.toBytes(s), bytes) || (0, modular_ts_1.isNegativeLE)(s, P)) + throw new Error("invalid ristretto255 encoding 1"); + const s2 = mod3(s * s); + const u1 = mod3(_1n7 + a * s2); + const u2 = mod3(_1n7 - a * s2); + const u1_2 = mod3(u1 * u1); + const u2_2 = mod3(u2 * u2); + const v = mod3(a * d * u1_2 - u2_2); + const { isValid, value: I } = invertSqrt2(mod3(v * u2_2)); + const Dx = mod3(I * u2); + const Dy = mod3(I * Dx * v); + let x = mod3((s + s) * Dx); + if ((0, modular_ts_1.isNegativeLE)(x, P)) + x = mod3(-x); + const y = mod3(u1 * Dy); + const t = mod3(x * y); + if (!isValid || (0, modular_ts_1.isNegativeLE)(t, P) || y === _0n7) + throw new Error("invalid ristretto255 encoding 2"); + return new __RistrettoPoint(new exports2.ed25519.Point(x, y, _1n7, t)); + } + /** + * Converts ristretto-encoded string to ristretto point. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode). + * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding + */ + static fromHex(hex) { + return __RistrettoPoint.fromBytes((0, utils_ts_1.ensureBytes)("ristrettoHex", hex, 32)); + } + static msm(points, scalars) { + return (0, curve_ts_1.pippenger)(__RistrettoPoint, exports2.ed25519.Point.Fn, points, scalars); + } + /** + * Encodes ristretto point to Uint8Array. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode). + */ + toBytes() { + let { X, Y, Z, T } = this.ep; + const P = ed25519_CURVE_p2; + const mod3 = (n) => Fp2.create(n); + const u1 = mod3(mod3(Z + Y) * mod3(Z - Y)); + const u2 = mod3(X * Y); + const u2sq = mod3(u2 * u2); + const { value: invsqrt } = invertSqrt2(mod3(u1 * u2sq)); + const D1 = mod3(invsqrt * u1); + const D2 = mod3(invsqrt * u2); + const zInv = mod3(D1 * D2 * T); + let D; + if ((0, modular_ts_1.isNegativeLE)(T * zInv, P)) { + let _x = mod3(Y * SQRT_M12); + let _y = mod3(X * SQRT_M12); + X = _x; + Y = _y; + D = mod3(D1 * INVSQRT_A_MINUS_D2); + } else { + D = D2; + } + if ((0, modular_ts_1.isNegativeLE)(X * zInv, P)) + Y = mod3(-Y); + let s = mod3((Z - Y) * D); + if ((0, modular_ts_1.isNegativeLE)(s, P)) + s = mod3(-s); + return Fp2.toBytes(s); + } + /** + * Compares two Ristretto points. + * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals). + */ + equals(other) { + this.assertSame(other); + const { X: X1, Y: Y1 } = this.ep; + const { X: X2, Y: Y2 } = other.ep; + const mod3 = (n) => Fp2.create(n); + const one = mod3(X1 * Y2) === mod3(Y1 * X2); + const two = mod3(Y1 * Y2) === mod3(X1 * X2); + return one || two; + } + is0() { + return this.equals(__RistrettoPoint.ZERO); + } + }; + _RistrettoPoint2.BASE = /* @__PURE__ */ (() => new _RistrettoPoint2(exports2.ed25519.Point.BASE))(); + _RistrettoPoint2.ZERO = /* @__PURE__ */ (() => new _RistrettoPoint2(exports2.ed25519.Point.ZERO))(); + _RistrettoPoint2.Fp = /* @__PURE__ */ (() => Fp2)(); + _RistrettoPoint2.Fn = /* @__PURE__ */ (() => Fn2)(); + exports2.ristretto255 = { Point: _RistrettoPoint2 }; + exports2.ristretto255_hasher = { + hashToCurve(msg, options) { + const DST = options?.DST || "ristretto255_XMD:SHA-512_R255MAP_RO_"; + const xmd = (0, hash_to_curve_ts_1.expand_message_xmd)(msg, DST, 64, sha2_js_1.sha512); + return ristretto255_map(xmd); + }, + hashToScalar(msg, options = { DST: hash_to_curve_ts_1._DST_scalar }) { + const xmd = (0, hash_to_curve_ts_1.expand_message_xmd)(msg, options.DST, 64, sha2_js_1.sha512); + return Fn2.create((0, utils_ts_1.bytesToNumberLE)(xmd)); + } + }; + exports2.ED25519_TORSION_SUBGROUP = [ + "0100000000000000000000000000000000000000000000000000000000000000", + "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a", + "0000000000000000000000000000000000000000000000000000000000000080", + "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05", + "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85", + "0000000000000000000000000000000000000000000000000000000000000000", + "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa" + ]; + function edwardsToMontgomeryPub(edwardsPub) { + return exports2.ed25519.utils.toMontgomery((0, utils_ts_1.ensureBytes)("pub", edwardsPub)); + } + exports2.edwardsToMontgomery = edwardsToMontgomeryPub; + function edwardsToMontgomeryPriv(edwardsPriv) { + return exports2.ed25519.utils.toMontgomerySecret((0, utils_ts_1.ensureBytes)("pub", edwardsPriv)); + } + exports2.RistrettoPoint = _RistrettoPoint2; + exports2.hashToCurve = (() => exports2.ed25519_hasher.hashToCurve)(); + exports2.encodeToCurve = (() => exports2.ed25519_hasher.encodeToCurve)(); + exports2.hashToRistretto255 = (() => exports2.ristretto255_hasher.hashToCurve)(); + exports2.hash_to_ristretto255 = (() => exports2.ristretto255_hasher.hashToCurve)(); + } +}); + +// node_modules/ripple-keypairs/dist/signing-schemes/ed25519/index.js +var require_ed255192 = __commonJS({ + "node_modules/ripple-keypairs/dist/signing-schemes/ed25519/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ed25519_1 = require_ed25519(); + var utils_1 = require_utils10(); + var assert_1 = __importDefault2(require_assert()); + var Sha512_1 = __importDefault2(require_Sha512()); + var ED_PREFIX = "ED"; + var ed255192 = { + deriveKeypair(entropy) { + const rawPrivateKey = Sha512_1.default.half(entropy); + const privateKey = ED_PREFIX + (0, utils_1.bytesToHex)(rawPrivateKey); + const publicKey = ED_PREFIX + (0, utils_1.bytesToHex)(ed25519_1.ed25519.getPublicKey(rawPrivateKey)); + return { privateKey, publicKey }; + }, + sign(message, privateKey) { + assert_1.default.ok(message instanceof Uint8Array, "message must be array of octets"); + assert_1.default.ok(privateKey.length === 66, "private key must be 33 bytes including prefix"); + return (0, utils_1.bytesToHex)(ed25519_1.ed25519.sign(message, privateKey.slice(2))); + }, + verify(message, signature, publicKey) { + assert_1.default.ok(publicKey.length === 66, "public key must be 33 bytes including prefix"); + return ed25519_1.ed25519.verify( + signature, + message, + // Remove the 0xED prefix + publicKey.slice(2), + // By default, set zip215 to false for compatibility reasons. + // ZIP 215 is a stricter Ed25519 signature verification scheme. + // However, setting it to false adheres to the more commonly used + // RFC8032 / NIST186-5 standards, making it compatible with systems + // like the XRP Ledger. + { zip215: false } + ); + } + }; + exports2.default = ed255192; + } +}); + +// node_modules/ripple-keypairs/dist/index.js +var require_dist6 = __commonJS({ + "node_modules/ripple-keypairs/dist/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.decodeSeed = exports2.deriveNodeAddress = exports2.deriveAddress = exports2.verify = exports2.sign = exports2.deriveKeypair = exports2.generateSeed = void 0; + var ripple_address_codec_1 = require_dist4(); + Object.defineProperty(exports2, "decodeSeed", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeSeed; + } }); + var ripemd160_1 = require_ripemd160(); + var sha256_1 = require_sha256(); + var utils_1 = require_utils10(); + var utils_2 = require_utils16(); + var Sha512_1 = __importDefault2(require_Sha512()); + var assert_1 = __importDefault2(require_assert()); + var getAlgorithmFromKey_1 = require_getAlgorithmFromKey(); + var secp256k1_1 = __importDefault2(require_secp256k12()); + var ed25519_1 = __importDefault2(require_ed255192()); + function getSigningScheme(algorithm) { + const schemes = { "ecdsa-secp256k1": secp256k1_1.default, ed25519: ed25519_1.default }; + return schemes[algorithm]; + } + function generateSeed(options = {}) { + assert_1.default.ok(!options.entropy || options.entropy.length >= 16, "entropy too short"); + const entropy = options.entropy ? options.entropy.slice(0, 16) : (0, utils_1.randomBytes)(16); + const type = options.algorithm === "ed25519" ? "ed25519" : "secp256k1"; + return (0, ripple_address_codec_1.encodeSeed)(entropy, type); + } + exports2.generateSeed = generateSeed; + function deriveKeypair(seed, options) { + var _a; + const decoded = (0, ripple_address_codec_1.decodeSeed)(seed); + const proposedAlgorithm = (_a = options === null || options === void 0 ? void 0 : options.algorithm) !== null && _a !== void 0 ? _a : decoded.type; + const algorithm = proposedAlgorithm === "ed25519" ? "ed25519" : "ecdsa-secp256k1"; + const scheme = getSigningScheme(algorithm); + const keypair = scheme.deriveKeypair(decoded.bytes, options); + const messageToVerify = Sha512_1.default.half("This test message should verify."); + const signature = scheme.sign(messageToVerify, keypair.privateKey); + if (!scheme.verify(messageToVerify, signature, keypair.publicKey)) { + throw new Error("derived keypair did not generate verifiable signature"); + } + return keypair; + } + exports2.deriveKeypair = deriveKeypair; + function sign(messageHex, privateKey) { + const algorithm = (0, getAlgorithmFromKey_1.getAlgorithmFromPrivateKey)(privateKey); + return getSigningScheme(algorithm).sign((0, utils_1.hexToBytes)(messageHex), privateKey); + } + exports2.sign = sign; + function verify(messageHex, signature, publicKey) { + const algorithm = (0, getAlgorithmFromKey_1.getAlgorithmFromPublicKey)(publicKey); + return getSigningScheme(algorithm).verify((0, utils_1.hexToBytes)(messageHex), signature, publicKey); + } + exports2.verify = verify; + function computePublicKeyHash(publicKeyBytes) { + return (0, ripemd160_1.ripemd160)((0, sha256_1.sha256)(publicKeyBytes)); + } + function deriveAddressFromBytes(publicKeyBytes) { + return (0, ripple_address_codec_1.encodeAccountID)(computePublicKeyHash(publicKeyBytes)); + } + function deriveAddress(publicKey) { + return deriveAddressFromBytes((0, utils_1.hexToBytes)(publicKey)); + } + exports2.deriveAddress = deriveAddress; + function deriveNodeAddress(publicKey) { + const generatorBytes = (0, ripple_address_codec_1.decodeNodePublic)(publicKey); + const accountPublicBytes = (0, utils_2.accountPublicFromPublicGenerator)(generatorBytes); + return deriveAddressFromBytes(accountPublicBytes); + } + exports2.deriveNodeAddress = deriveNodeAddress; + } +}); + +// node_modules/xrpl/dist/npm/utils/derive.js +var require_derive = __commonJS({ + "node_modules/xrpl/dist/npm/utils/derive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.deriveXAddress = exports2.deriveAddress = exports2.deriveKeypair = void 0; + var ripple_address_codec_1 = require_dist4(); + var ripple_keypairs_1 = require_dist6(); + Object.defineProperty(exports2, "deriveKeypair", { enumerable: true, get: function() { + return ripple_keypairs_1.deriveKeypair; + } }); + Object.defineProperty(exports2, "deriveAddress", { enumerable: true, get: function() { + return ripple_keypairs_1.deriveAddress; + } }); + function deriveXAddress(options) { + const classicAddress = (0, ripple_keypairs_1.deriveAddress)(options.publicKey); + return (0, ripple_address_codec_1.classicAddressToXAddress)(classicAddress, options.tag, options.test); + } + exports2.deriveXAddress = deriveXAddress; + } +}); + +// node_modules/xrpl/dist/npm/utils/collections.js +var require_collections = __commonJS({ + "node_modules/xrpl/dist/npm/utils/collections.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.omitBy = exports2.groupBy = void 0; + function groupBy(array, iteratee) { + function predicate(acc, value, index, arrayReference) { + const key = iteratee(value, index, arrayReference) || 0; + const group = acc[key] || []; + group.push(value); + acc[key] = group; + return acc; + } + return array.reduce(predicate, {}); + } + exports2.groupBy = groupBy; + function omitBy(obj, predicate) { + const keys = Object.keys(obj); + const keysToKeep = keys.filter((kb) => !predicate(obj[kb], kb)); + return keysToKeep.reduce((acc, key) => { + acc[key] = obj[key]; + return acc; + }, {}); + } + exports2.omitBy = omitBy; + } +}); + +// node_modules/xrpl/dist/npm/utils/xrpConversion.js +var require_xrpConversion = __commonJS({ + "node_modules/xrpl/dist/npm/utils/xrpConversion.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.xrpToDrops = exports2.dropsToXrp = void 0; + var bignumber_js_1 = __importDefault2(require_bignumber()); + var errors_1 = require_errors8(); + var DROPS_PER_XRP = 1e6; + var MAX_FRACTION_LENGTH = 6; + var BASE_TEN = 10; + var SANITY_CHECK = /^-?[0-9.]+$/u; + function dropsToXrp(dropsToConvert) { + const drops = new bignumber_js_1.default(dropsToConvert).toString(BASE_TEN); + if (typeof dropsToConvert === "string" && drops === "NaN") { + throw new errors_1.ValidationError(`dropsToXrp: invalid value '${dropsToConvert}', should be a BigNumber or string-encoded number.`); + } + if (drops.includes(".")) { + throw new errors_1.ValidationError(`dropsToXrp: value '${drops}' has too many decimal places.`); + } + if (!SANITY_CHECK.exec(drops)) { + throw new errors_1.ValidationError(`dropsToXrp: failed sanity check - value '${drops}', does not match (^-?[0-9]+$).`); + } + return new bignumber_js_1.default(drops).dividedBy(DROPS_PER_XRP).toNumber(); + } + exports2.dropsToXrp = dropsToXrp; + function xrpToDrops(xrpToConvert) { + const xrp = new bignumber_js_1.default(xrpToConvert).toString(BASE_TEN); + if (typeof xrpToConvert === "string" && xrp === "NaN") { + throw new errors_1.ValidationError(`xrpToDrops: invalid value '${xrpToConvert}', should be a BigNumber or string-encoded number.`); + } + if (!SANITY_CHECK.exec(xrp)) { + throw new errors_1.ValidationError(`xrpToDrops: failed sanity check - value '${xrp}', does not match (^-?[0-9.]+$).`); + } + const components = xrp.split("."); + if (components.length > 2) { + throw new errors_1.ValidationError(`xrpToDrops: failed sanity check - value '${xrp}' has too many decimal points.`); + } + const fraction = components[1] || "0"; + if (fraction.length > MAX_FRACTION_LENGTH) { + throw new errors_1.ValidationError(`xrpToDrops: value '${xrp}' has too many decimal places.`); + } + return new bignumber_js_1.default(xrp).times(DROPS_PER_XRP).integerValue(bignumber_js_1.default.ROUND_FLOOR).toString(BASE_TEN); + } + exports2.xrpToDrops = xrpToDrops; + } +}); + +// node_modules/xrpl/dist/npm/utils/getBalanceChanges.js +var require_getBalanceChanges = __commonJS({ + "node_modules/xrpl/dist/npm/utils/getBalanceChanges.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var collections_1 = require_collections(); + var xrpConversion_1 = require_xrpConversion(); + function normalizeNode(affectedNode) { + const diffType = Object.keys(affectedNode)[0]; + const node = affectedNode[diffType]; + return Object.assign(Object.assign({}, node), { NodeType: diffType, LedgerEntryType: node.LedgerEntryType, LedgerIndex: node.LedgerIndex, NewFields: node.NewFields, FinalFields: node.FinalFields, PreviousFields: node.PreviousFields }); + } + function normalizeNodes(metadata) { + if (metadata.AffectedNodes.length === 0) { + return []; + } + return metadata.AffectedNodes.map(normalizeNode); + } + function groupByAccount(balanceChanges) { + const grouped = (0, collections_1.groupBy)(balanceChanges, (node) => node.account); + return Object.entries(grouped).map(([account, items]) => { + return { account, balances: items.map((item) => item.balance) }; + }); + } + function getValue(balance) { + if (typeof balance === "string") { + return new bignumber_js_1.default(balance); + } + return new bignumber_js_1.default(balance.value); + } + function computeBalanceChange(node) { + var _a, _b, _c; + let value = null; + if ((_a = node.NewFields) === null || _a === void 0 ? void 0 : _a.Balance) { + value = getValue(node.NewFields.Balance); + } else if (((_b = node.PreviousFields) === null || _b === void 0 ? void 0 : _b.Balance) && ((_c = node.FinalFields) === null || _c === void 0 ? void 0 : _c.Balance)) { + value = getValue(node.FinalFields.Balance).minus(getValue(node.PreviousFields.Balance)); + } + if (value === null || value.isZero()) { + return null; + } + return value; + } + function getXRPQuantity(node) { + var _a, _b, _c; + const value = computeBalanceChange(node); + if (value === null) { + return null; + } + return { + account: (_b = (_a = node.FinalFields) === null || _a === void 0 ? void 0 : _a.Account) !== null && _b !== void 0 ? _b : (_c = node.NewFields) === null || _c === void 0 ? void 0 : _c.Account, + balance: { + currency: "XRP", + value: (0, xrpConversion_1.dropsToXrp)(value).toString() + } + }; + } + function flipTrustlinePerspective(balanceChange) { + const negatedBalance = new bignumber_js_1.default(balanceChange.balance.value).negated(); + return { + account: balanceChange.balance.issuer, + balance: { + issuer: balanceChange.account, + currency: balanceChange.balance.currency, + value: negatedBalance.toString() + } + }; + } + function getTrustlineQuantity(node) { + var _a, _b, _c; + const value = computeBalanceChange(node); + if (value === null) { + return null; + } + const fields = (_a = node.NewFields) !== null && _a !== void 0 ? _a : node.FinalFields; + const result = { + account: (_b = fields === null || fields === void 0 ? void 0 : fields.LowLimit) === null || _b === void 0 ? void 0 : _b.issuer, + balance: { + issuer: (_c = fields === null || fields === void 0 ? void 0 : fields.HighLimit) === null || _c === void 0 ? void 0 : _c.issuer, + currency: (fields === null || fields === void 0 ? void 0 : fields.Balance).currency, + value: value.toString() + } + }; + return [result, flipTrustlinePerspective(result)]; + } + function getBalanceChanges(metadata) { + const quantities = normalizeNodes(metadata).map((node) => { + if (node.LedgerEntryType === "AccountRoot") { + const xrpQuantity = getXRPQuantity(node); + if (xrpQuantity == null) { + return []; + } + return [xrpQuantity]; + } + if (node.LedgerEntryType === "RippleState") { + const trustlineQuantity = getTrustlineQuantity(node); + if (trustlineQuantity == null) { + return []; + } + return trustlineQuantity; + } + return []; + }); + return groupByAccount(quantities.flat()); + } + exports2.default = getBalanceChanges; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/metadata.js +var require_metadata = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/metadata.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isDeletedNode = exports2.isModifiedNode = exports2.isCreatedNode = void 0; + function isCreatedNode(node) { + return Object.prototype.hasOwnProperty.call(node, `CreatedNode`); + } + exports2.isCreatedNode = isCreatedNode; + function isModifiedNode(node) { + return Object.prototype.hasOwnProperty.call(node, `ModifiedNode`); + } + exports2.isModifiedNode = isModifiedNode; + function isDeletedNode(node) { + return Object.prototype.hasOwnProperty.call(node, `DeletedNode`); + } + exports2.isDeletedNode = isDeletedNode; + } +}); + +// node_modules/xrpl/dist/npm/utils/getNFTokenID.js +var require_getNFTokenID = __commonJS({ + "node_modules/xrpl/dist/npm/utils/getNFTokenID.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ripple_binary_codec_1 = require_dist5(); + var metadata_1 = require_metadata(); + function ensureDecodedMeta(meta) { + if (typeof meta === "string") { + return (0, ripple_binary_codec_1.decode)(meta); + } + return meta; + } + function getNFTokenID(meta) { + if (typeof meta !== "string" && (meta === null || meta === void 0 ? void 0 : meta.AffectedNodes) === void 0) { + throw new TypeError(`Unable to parse the parameter given to getNFTokenID. + 'meta' must be the metadata from an NFTokenMint transaction. Received ${JSON.stringify(meta)} instead.`); + } + const decodedMeta = ensureDecodedMeta(meta); + const affectedNodes = decodedMeta.AffectedNodes.filter((node) => { + var _a; + if ((0, metadata_1.isCreatedNode)(node)) { + return node.CreatedNode.LedgerEntryType === "NFTokenPage"; + } + if ((0, metadata_1.isModifiedNode)(node)) { + return node.ModifiedNode.LedgerEntryType === "NFTokenPage" && Boolean((_a = node.ModifiedNode.PreviousFields) === null || _a === void 0 ? void 0 : _a.NFTokens); + } + return false; + }); + const previousTokenIDSet = new Set(affectedNodes.flatMap((node) => { + var _a; + const nftokens = (0, metadata_1.isModifiedNode)(node) ? (_a = node.ModifiedNode.PreviousFields) === null || _a === void 0 ? void 0 : _a.NFTokens : []; + return nftokens.map((token) => token.NFToken.NFTokenID); + }).filter((id) => Boolean(id))); + const finalTokenIDs = affectedNodes.flatMap((node) => { + var _a, _b, _c, _d, _e, _f; + return ((_f = (_c = (_b = (_a = node.ModifiedNode) === null || _a === void 0 ? void 0 : _a.FinalFields) === null || _b === void 0 ? void 0 : _b.NFTokens) !== null && _c !== void 0 ? _c : (_e = (_d = node.CreatedNode) === null || _d === void 0 ? void 0 : _d.NewFields) === null || _e === void 0 ? void 0 : _e.NFTokens) !== null && _f !== void 0 ? _f : []).map((token) => token.NFToken.NFTokenID); + }).filter((nftokenID2) => Boolean(nftokenID2)); + const nftokenID = finalTokenIDs.find((id) => !previousTokenIDSet.has(id)); + return nftokenID; + } + exports2.default = getNFTokenID; + } +}); + +// node_modules/xrpl/dist/npm/utils/getXChainClaimID.js +var require_getXChainClaimID = __commonJS({ + "node_modules/xrpl/dist/npm/utils/getXChainClaimID.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ripple_binary_codec_1 = require_dist5(); + var metadata_1 = require_metadata(); + function ensureDecodedMeta(meta) { + if (typeof meta === "string") { + return (0, ripple_binary_codec_1.decode)(meta); + } + return meta; + } + function getXChainClaimID(meta) { + if (typeof meta !== "string" && (meta === null || meta === void 0 ? void 0 : meta.AffectedNodes) === void 0) { + throw new TypeError(`Unable to parse the parameter given to getXChainClaimID. + 'meta' must be the metadata from an XChainCreateClaimID transaction. Received ${JSON.stringify(meta)} instead.`); + } + const decodedMeta = ensureDecodedMeta(meta); + if (!decodedMeta.TransactionResult) { + throw new TypeError("Cannot get XChainClaimID from un-validated transaction"); + } + if (decodedMeta.TransactionResult !== "tesSUCCESS") { + return void 0; + } + const createdNode = decodedMeta.AffectedNodes.find((node) => (0, metadata_1.isCreatedNode)(node) && node.CreatedNode.LedgerEntryType === "XChainOwnedClaimID"); + return createdNode.CreatedNode.NewFields.XChainClaimID; + } + exports2.default = getXChainClaimID; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/HashPrefix.js +var require_HashPrefix = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/HashPrefix.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var HashPrefix; + (function(HashPrefix2) { + HashPrefix2[HashPrefix2["TRANSACTION_ID"] = 1415073280] = "TRANSACTION_ID"; + HashPrefix2[HashPrefix2["TRANSACTION_NODE"] = 1397638144] = "TRANSACTION_NODE"; + HashPrefix2[HashPrefix2["INNER_NODE"] = 1296649728] = "INNER_NODE"; + HashPrefix2[HashPrefix2["LEAF_NODE"] = 1296846336] = "LEAF_NODE"; + HashPrefix2[HashPrefix2["TRANSACTION_SIGN"] = 1398036480] = "TRANSACTION_SIGN"; + HashPrefix2[HashPrefix2["TRANSACTION_SIGN_TESTNET"] = 1937012736] = "TRANSACTION_SIGN_TESTNET"; + HashPrefix2[HashPrefix2["TRANSACTION_MULTISIGN"] = 1397576704] = "TRANSACTION_MULTISIGN"; + HashPrefix2[HashPrefix2["LEDGER"] = 1280791040] = "LEDGER"; + })(HashPrefix || (HashPrefix = {})); + exports2.default = HashPrefix; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/sha512Half.js +var require_sha512Half = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/sha512Half.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var sha512_1 = require_sha512(); + var utils_1 = require_utils10(); + var HASH_BYTES = 32; + function sha512Half(hex) { + return (0, utils_1.bytesToHex)((0, sha512_1.sha512)((0, utils_1.hexToBytes)(hex)).slice(0, HASH_BYTES)); + } + exports2.default = sha512Half; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/SHAMap/node.js +var require_node2 = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/SHAMap/node.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Node = exports2.NodeType = void 0; + var NodeType; + (function(NodeType2) { + NodeType2[NodeType2["INNER"] = 1] = "INNER"; + NodeType2[NodeType2["TRANSACTION_NO_METADATA"] = 2] = "TRANSACTION_NO_METADATA"; + NodeType2[NodeType2["TRANSACTION_METADATA"] = 3] = "TRANSACTION_METADATA"; + NodeType2[NodeType2["ACCOUNT_STATE"] = 4] = "ACCOUNT_STATE"; + })(NodeType || (exports2.NodeType = NodeType = {})); + var Node = class { + }; + exports2.Node = Node; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/SHAMap/LeafNode.js +var require_LeafNode = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/SHAMap/LeafNode.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var errors_1 = require_errors8(); + var HashPrefix_1 = __importDefault2(require_HashPrefix()); + var sha512Half_1 = __importDefault2(require_sha512Half()); + var node_1 = require_node2(); + var HEX = 16; + var LeafNode = class extends node_1.Node { + constructor(tag, data, type) { + super(); + this.tag = tag; + this.type = type; + this.data = data; + } + get hash() { + switch (this.type) { + case node_1.NodeType.ACCOUNT_STATE: { + const leafPrefix = HashPrefix_1.default.LEAF_NODE.toString(HEX); + return (0, sha512Half_1.default)(leafPrefix + this.data + this.tag); + } + case node_1.NodeType.TRANSACTION_NO_METADATA: { + const txIDPrefix = HashPrefix_1.default.TRANSACTION_ID.toString(HEX); + return (0, sha512Half_1.default)(txIDPrefix + this.data); + } + case node_1.NodeType.TRANSACTION_METADATA: { + const txNodePrefix = HashPrefix_1.default.TRANSACTION_NODE.toString(HEX); + return (0, sha512Half_1.default)(txNodePrefix + this.data + this.tag); + } + default: + throw new errors_1.XrplError("Tried to hash a SHAMap node of unknown type."); + } + } + addItem(tag, node) { + throw new errors_1.XrplError("Cannot call addItem on a LeafNode"); + this.addItem(tag, node); + } + }; + exports2.default = LeafNode; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/SHAMap/InnerNode.js +var require_InnerNode = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/SHAMap/InnerNode.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var errors_1 = require_errors8(); + var HashPrefix_1 = __importDefault2(require_HashPrefix()); + var sha512Half_1 = __importDefault2(require_sha512Half()); + var LeafNode_1 = __importDefault2(require_LeafNode()); + var node_1 = require_node2(); + var HEX_ZERO = "0000000000000000000000000000000000000000000000000000000000000000"; + var SLOT_MAX = 15; + var HEX = 16; + var InnerNode = class _InnerNode extends node_1.Node { + constructor(depth = 0) { + super(); + this.leaves = {}; + this.type = node_1.NodeType.INNER; + this.depth = depth; + this.empty = true; + } + get hash() { + if (this.empty) { + return HEX_ZERO; + } + let hex = ""; + for (let iter = 0; iter <= SLOT_MAX; iter++) { + const child = this.leaves[iter]; + const hash = child == null ? HEX_ZERO : child.hash; + hex += hash; + } + const prefix = HashPrefix_1.default.INNER_NODE.toString(HEX); + return (0, sha512Half_1.default)(prefix + hex); + } + addItem(tag, node) { + const existingNode = this.getNode(parseInt(tag[this.depth], HEX)); + if (existingNode === void 0) { + this.setNode(parseInt(tag[this.depth], HEX), node); + return; + } + if (existingNode instanceof _InnerNode) { + existingNode.addItem(tag, node); + } else if (existingNode instanceof LeafNode_1.default) { + if (existingNode.tag === tag) { + throw new errors_1.XrplError("Tried to add a node to a SHAMap that was already in there."); + } else { + const newInnerNode = new _InnerNode(this.depth + 1); + newInnerNode.addItem(existingNode.tag, existingNode); + newInnerNode.addItem(tag, node); + this.setNode(parseInt(tag[this.depth], HEX), newInnerNode); + } + } + } + setNode(slot, node) { + if (slot < 0 || slot > SLOT_MAX) { + throw new errors_1.XrplError("Invalid slot: slot must be between 0-15."); + } + this.leaves[slot] = node; + this.empty = false; + } + getNode(slot) { + if (slot < 0 || slot > SLOT_MAX) { + throw new errors_1.XrplError("Invalid slot: slot must be between 0-15."); + } + return this.leaves[slot]; + } + }; + exports2.default = InnerNode; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/SHAMap/index.js +var require_SHAMap = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/SHAMap/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var InnerNode_1 = __importDefault2(require_InnerNode()); + var LeafNode_1 = __importDefault2(require_LeafNode()); + var SHAMap = class { + constructor() { + this.root = new InnerNode_1.default(0); + } + get hash() { + return this.root.hash; + } + addItem(tag, data, type) { + this.root.addItem(tag, new LeafNode_1.default(tag, data, type)); + } + }; + __exportStar2(require_node2(), exports2); + exports2.default = SHAMap; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/hashLedger.js +var require_hashLedger = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/hashLedger.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hashStateTree = exports2.hashTxTree = exports2.hashLedgerHeader = exports2.hashSignedTx = void 0; + var utils_1 = require_utils10(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_binary_codec_1 = require_dist5(); + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var utils_2 = require_utils13(); + var HashPrefix_1 = __importDefault2(require_HashPrefix()); + var sha512Half_1 = __importDefault2(require_sha512Half()); + var SHAMap_1 = __importStar2(require_SHAMap()); + var HEX = 16; + function intToHex(integer, byteLength) { + const foo = Number(integer).toString(HEX).padStart(byteLength * 2, "0"); + return foo; + } + function bigintToHex(integerString, byteLength) { + const hex = new bignumber_js_1.default(integerString).toString(HEX); + return hex.padStart(byteLength * 2, "0"); + } + function addLengthPrefix(hex) { + const length = hex.length / 2; + if (length <= 192) { + return (0, utils_1.bytesToHex)([length]) + hex; + } + if (length <= 12480) { + const prefix = length - 193; + return (0, utils_1.bytesToHex)([193 + (prefix >>> 8), prefix & 255]) + hex; + } + if (length <= 918744) { + const prefix = length - 12481; + return (0, utils_1.bytesToHex)([ + 241 + (prefix >>> 16), + prefix >>> 8 & 255, + prefix & 255 + ]) + hex; + } + throw new errors_1.XrplError("Variable integer overflow."); + } + function hashSignedTx(tx) { + let txBlob; + let txObject; + if (typeof tx === "string") { + txBlob = tx; + txObject = (0, ripple_binary_codec_1.decode)(tx); + } else { + txBlob = (0, ripple_binary_codec_1.encode)(tx); + txObject = tx; + } + if (txObject.TxnSignature === void 0 && txObject.Signers === void 0 && txObject.SigningPubKey === void 0 && !(0, utils_2.hasFlag)(txObject, common_1.GlobalFlags.tfInnerBatchTxn, "tfInnerBatchTxn")) { + throw new errors_1.ValidationError("The transaction must be signed to hash it."); + } + const prefix = HashPrefix_1.default.TRANSACTION_ID.toString(16).toUpperCase(); + return (0, sha512Half_1.default)(prefix.concat(txBlob)); + } + exports2.hashSignedTx = hashSignedTx; + function hashLedgerHeader(ledgerHeader) { + const prefix = HashPrefix_1.default.LEDGER.toString(HEX).toUpperCase(); + const ledger = prefix + intToHex(Number(ledgerHeader.ledger_index), 4) + bigintToHex(ledgerHeader.total_coins, 8) + ledgerHeader.parent_hash + ledgerHeader.transaction_hash + ledgerHeader.account_hash + intToHex(ledgerHeader.parent_close_time, 4) + intToHex(ledgerHeader.close_time, 4) + intToHex(ledgerHeader.close_time_resolution, 1) + intToHex(ledgerHeader.close_flags, 1); + return (0, sha512Half_1.default)(ledger); + } + exports2.hashLedgerHeader = hashLedgerHeader; + function hashTxTree(transactions) { + var _a; + const shamap = new SHAMap_1.default(); + for (const txJSON of transactions) { + const txBlobHex = (0, ripple_binary_codec_1.encode)(txJSON); + const metaHex = (0, ripple_binary_codec_1.encode)((_a = txJSON.metaData) !== null && _a !== void 0 ? _a : {}); + const txHash = hashSignedTx(txBlobHex); + const data = addLengthPrefix(txBlobHex) + addLengthPrefix(metaHex); + shamap.addItem(txHash, data, SHAMap_1.NodeType.TRANSACTION_METADATA); + } + return shamap.hash; + } + exports2.hashTxTree = hashTxTree; + function hashStateTree(entries) { + const shamap = new SHAMap_1.default(); + entries.forEach((ledgerEntry) => { + const data = (0, ripple_binary_codec_1.encode)(ledgerEntry); + shamap.addItem(ledgerEntry.index, data, SHAMap_1.NodeType.ACCOUNT_STATE); + }); + return shamap.hash; + } + exports2.hashStateTree = hashStateTree; + function computeTransactionHash(ledger, options) { + const { transaction_hash } = ledger; + if (!options.computeTreeHashes) { + return transaction_hash; + } + if (ledger.transactions == null) { + throw new errors_1.ValidationError("transactions is missing from the ledger"); + } + const transactionHash = hashTxTree(ledger.transactions); + if (transaction_hash !== transactionHash) { + throw new errors_1.ValidationError("transactionHash in header does not match computed hash of transactions", { + transactionHashInHeader: transaction_hash, + computedHashOfTransactions: transactionHash + }); + } + return transactionHash; + } + function computeStateHash(ledger, options) { + const { account_hash } = ledger; + if (!options.computeTreeHashes) { + return account_hash; + } + if (ledger.accountState == null) { + throw new errors_1.ValidationError("accountState is missing from the ledger"); + } + const stateHash = hashStateTree(ledger.accountState); + if (account_hash !== stateHash) { + throw new errors_1.ValidationError("stateHash in header does not match computed hash of state"); + } + return stateHash; + } + function hashLedger(ledger, options = {}) { + const subhashes = { + transaction_hash: computeTransactionHash(ledger, options), + account_hash: computeStateHash(ledger, options) + }; + return hashLedgerHeader(Object.assign(Object.assign({}, ledger), subhashes)); + } + exports2.default = hashLedger; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/ledgerSpaces.js +var require_ledgerSpaces = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/ledgerSpaces.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ledgerSpaces = { + account: "a", + dirNode: "d", + generatorMap: "g", + rippleState: "r", + offer: "o", + ownerDir: "O", + bookDir: "B", + contract: "c", + skipList: "s", + escrow: "u", + amendment: "f", + feeSettings: "e", + ticket: "T", + signerList: "S", + paychan: "x", + check: "C", + depositPreauth: "p" + }; + exports2.default = ledgerSpaces; + } +}); + +// node_modules/xrpl/dist/npm/utils/hashes/index.js +var require_hashes2 = __commonJS({ + "node_modules/xrpl/dist/npm/utils/hashes/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.hashTxTree = exports2.hashStateTree = exports2.hashLedger = exports2.hashSignedTx = exports2.hashLedgerHeader = exports2.hashPaymentChannel = exports2.hashEscrow = exports2.hashTrustline = exports2.hashOfferId = exports2.hashSignerListId = exports2.hashAccountRoot = exports2.hashTx = void 0; + var utils_1 = require_utils10(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_address_codec_1 = require_dist4(); + var hashLedger_1 = __importStar2(require_hashLedger()); + exports2.hashLedger = hashLedger_1.default; + Object.defineProperty(exports2, "hashLedgerHeader", { enumerable: true, get: function() { + return hashLedger_1.hashLedgerHeader; + } }); + Object.defineProperty(exports2, "hashSignedTx", { enumerable: true, get: function() { + return hashLedger_1.hashSignedTx; + } }); + Object.defineProperty(exports2, "hashTxTree", { enumerable: true, get: function() { + return hashLedger_1.hashTxTree; + } }); + Object.defineProperty(exports2, "hashStateTree", { enumerable: true, get: function() { + return hashLedger_1.hashStateTree; + } }); + var HashPrefix_1 = __importDefault2(require_HashPrefix()); + var ledgerSpaces_1 = __importDefault2(require_ledgerSpaces()); + var sha512Half_1 = __importDefault2(require_sha512Half()); + var HEX = 16; + var BYTE_LENGTH = 4; + function addressToHex(address) { + return (0, utils_1.bytesToHex)((0, ripple_address_codec_1.decodeAccountID)(address)); + } + function ledgerSpaceHex(name) { + return ledgerSpaces_1.default[name].charCodeAt(0).toString(HEX).padStart(4, "0"); + } + var MASK = 255; + function currencyToHex(currency) { + if (currency.length !== 3) { + return currency; + } + const bytes = Array(20).fill(0); + bytes[12] = currency.charCodeAt(0) & MASK; + bytes[13] = currency.charCodeAt(1) & MASK; + bytes[14] = currency.charCodeAt(2) & MASK; + return (0, utils_1.bytesToHex)(Uint8Array.from(bytes)); + } + function hashTx(txBlobHex) { + const prefix = HashPrefix_1.default.TRANSACTION_SIGN.toString(HEX).toUpperCase(); + return (0, sha512Half_1.default)(prefix + txBlobHex); + } + exports2.hashTx = hashTx; + function hashAccountRoot(address) { + return (0, sha512Half_1.default)(ledgerSpaceHex("account") + addressToHex(address)); + } + exports2.hashAccountRoot = hashAccountRoot; + function hashSignerListId(address) { + return (0, sha512Half_1.default)(`${ledgerSpaceHex("signerList") + addressToHex(address)}00000000`); + } + exports2.hashSignerListId = hashSignerListId; + function hashOfferId(address, sequence) { + const hexPrefix = ledgerSpaces_1.default.offer.charCodeAt(0).toString(HEX).padStart(2, "0"); + const hexSequence = sequence.toString(HEX).padStart(8, "0"); + const prefix = `00${hexPrefix}`; + return (0, sha512Half_1.default)(prefix + addressToHex(address) + hexSequence); + } + exports2.hashOfferId = hashOfferId; + function hashTrustline(address1, address2, currency) { + const address1Hex = addressToHex(address1); + const address2Hex = addressToHex(address2); + const swap = new bignumber_js_1.default(address1Hex, 16).isGreaterThan(new bignumber_js_1.default(address2Hex, 16)); + const lowAddressHex = swap ? address2Hex : address1Hex; + const highAddressHex = swap ? address1Hex : address2Hex; + const prefix = ledgerSpaceHex("rippleState"); + return (0, sha512Half_1.default)(prefix + lowAddressHex + highAddressHex + currencyToHex(currency)); + } + exports2.hashTrustline = hashTrustline; + function hashEscrow(address, sequence) { + return (0, sha512Half_1.default)(ledgerSpaceHex("escrow") + addressToHex(address) + sequence.toString(HEX).padStart(BYTE_LENGTH * 2, "0")); + } + exports2.hashEscrow = hashEscrow; + function hashPaymentChannel(address, dstAddress, sequence) { + return (0, sha512Half_1.default)(ledgerSpaceHex("paychan") + addressToHex(address) + addressToHex(dstAddress) + sequence.toString(HEX).padStart(BYTE_LENGTH * 2, "0")); + } + exports2.hashPaymentChannel = hashPaymentChannel; + } +}); + +// node_modules/xrpl/dist/npm/utils/parseNFTokenID.js +var require_parseNFTokenID = __commonJS({ + "node_modules/xrpl/dist/npm/utils/parseNFTokenID.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var utils_1 = require_utils10(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_address_codec_1 = require_dist4(); + var errors_1 = require_errors8(); + function unscrambleTaxon(taxon, tokenSeq) { + const seed = 384160001; + const increment = 2459; + const max = 4294967296; + const scramble = new bignumber_js_1.default(seed).multipliedBy(tokenSeq).modulo(max).plus(increment).modulo(max).toNumber(); + return (taxon ^ scramble) >>> 0; + } + function parseNFTokenID(nftokenID) { + const expectedLength = 64; + if (nftokenID.length !== expectedLength) { + throw new errors_1.XrplError(`Attempting to parse a nftokenID with length ${nftokenID.length} + , but expected a token with length ${expectedLength}`); + } + const scrambledTaxon = new bignumber_js_1.default(nftokenID.substring(48, 56), 16).toNumber(); + const sequence = new bignumber_js_1.default(nftokenID.substring(56, 64), 16).toNumber(); + const NFTokenIDData = { + NFTokenID: nftokenID, + Flags: new bignumber_js_1.default(nftokenID.substring(0, 4), 16).toNumber(), + TransferFee: new bignumber_js_1.default(nftokenID.substring(4, 8), 16).toNumber(), + Issuer: (0, ripple_address_codec_1.encodeAccountID)((0, utils_1.hexToBytes)(nftokenID.substring(8, 48))), + Taxon: unscrambleTaxon(scrambledTaxon, sequence), + Sequence: sequence + }; + return NFTokenIDData; + } + exports2.default = parseNFTokenID; + } +}); + +// node_modules/xrpl/dist/npm/utils/quality.js +var require_quality2 = __commonJS({ + "node_modules/xrpl/dist/npm/utils/quality.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.percentToQuality = exports2.transferRateToDecimal = exports2.qualityToDecimal = exports2.decimalToQuality = exports2.percentToTransferRate = exports2.decimalToTransferRate = void 0; + var bignumber_js_1 = __importDefault2(require_bignumber()); + var errors_1 = require_errors8(); + var BASE_TEN = 10; + var ONE_BILLION = "1000000000"; + var TWO_BILLION = "2000000000"; + function percentToDecimal(percent) { + if (!percent.endsWith("%")) { + throw new errors_1.ValidationError(`Value ${percent} must end with %`); + } + const split2 = percent.split("%").filter((str) => str !== ""); + if (split2.length !== 1) { + throw new errors_1.ValidationError(`Value ${percent} contains too many % signs`); + } + return new bignumber_js_1.default(split2[0]).dividedBy("100").toString(BASE_TEN); + } + function decimalToTransferRate(decimal) { + const rate = new bignumber_js_1.default(decimal).times(ONE_BILLION).plus(ONE_BILLION); + if (rate.isLessThan(ONE_BILLION) || rate.isGreaterThan(TWO_BILLION)) { + throw new errors_1.ValidationError(`Decimal value must be between 0 and 1.00.`); + } + const billionths = rate.toString(BASE_TEN); + if (billionths === ONE_BILLION) { + return 0; + } + if (billionths === "NaN") { + throw new errors_1.ValidationError(`Value is not a number`); + } + if (billionths.includes(".")) { + throw new errors_1.ValidationError(`Decimal exceeds maximum precision.`); + } + return Number(billionths); + } + exports2.decimalToTransferRate = decimalToTransferRate; + function percentToTransferRate(percent) { + return decimalToTransferRate(percentToDecimal(percent)); + } + exports2.percentToTransferRate = percentToTransferRate; + function decimalToQuality(decimal) { + const rate = new bignumber_js_1.default(decimal).times(ONE_BILLION); + const billionths = rate.toString(BASE_TEN); + if (billionths === "NaN") { + throw new errors_1.ValidationError(`Value is not a number`); + } + if (billionths.includes("-")) { + throw new errors_1.ValidationError("Cannot have negative Quality"); + } + if (billionths === ONE_BILLION) { + return 0; + } + if (billionths.includes(".")) { + throw new errors_1.ValidationError(`Decimal exceeds maximum precision.`); + } + return Number(billionths); + } + exports2.decimalToQuality = decimalToQuality; + function qualityToDecimal(quality) { + if (!Number.isInteger(quality)) { + throw new errors_1.ValidationError("Quality must be an integer"); + } + if (quality < 0) { + throw new errors_1.ValidationError("Negative quality not allowed"); + } + if (quality === 0) { + return "1"; + } + const decimal = new bignumber_js_1.default(quality).dividedBy(ONE_BILLION); + return decimal.toString(BASE_TEN); + } + exports2.qualityToDecimal = qualityToDecimal; + function transferRateToDecimal(rate) { + if (!Number.isInteger(rate)) { + throw new errors_1.ValidationError("Error decoding, transfer Rate must be an integer"); + } + if (rate === 0) { + return "0"; + } + const decimal = new bignumber_js_1.default(rate).minus(ONE_BILLION).dividedBy(ONE_BILLION); + if (decimal.isLessThan(0)) { + throw new errors_1.ValidationError("Error decoding, negative transfer rate"); + } + return decimal.toString(BASE_TEN); + } + exports2.transferRateToDecimal = transferRateToDecimal; + function percentToQuality(percent) { + return decimalToQuality(percentToDecimal(percent)); + } + exports2.percentToQuality = percentToQuality; + } +}); + +// node_modules/xrpl/dist/npm/utils/signPaymentChannelClaim.js +var require_signPaymentChannelClaim = __commonJS({ + "node_modules/xrpl/dist/npm/utils/signPaymentChannelClaim.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + var xrpConversion_1 = require_xrpConversion(); + function signPaymentChannelClaim(channel, xrpAmount, privateKey) { + const signingData = (0, ripple_binary_codec_1.encodeForSigningClaim)({ + channel, + amount: (0, xrpConversion_1.xrpToDrops)(xrpAmount) + }); + return (0, ripple_keypairs_1.sign)(signingData, privateKey); + } + exports2.default = signPaymentChannelClaim; + } +}); + +// node_modules/xrpl/dist/npm/utils/stringConversion.js +var require_stringConversion = __commonJS({ + "node_modules/xrpl/dist/npm/utils/stringConversion.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.convertStringToHex = exports2.convertHexToString = void 0; + var utils_1 = require_utils10(); + function convertStringToHex(string) { + return (0, utils_1.stringToHex)(string); + } + exports2.convertStringToHex = convertStringToHex; + function convertHexToString(hex, encoding = "utf8") { + return (0, utils_1.hexToString)(hex, encoding); + } + exports2.convertHexToString = convertHexToString; + } +}); + +// node_modules/xrpl/dist/npm/utils/timeConversion.js +var require_timeConversion = __commonJS({ + "node_modules/xrpl/dist/npm/utils/timeConversion.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.isoTimeToRippleTime = exports2.rippleTimeToISOTime = exports2.unixTimeToRippleTime = exports2.rippleTimeToUnixTime = void 0; + var RIPPLE_EPOCH_DIFF = 946684800; + function rippleTimeToUnixTime(rpepoch) { + return (rpepoch + RIPPLE_EPOCH_DIFF) * 1e3; + } + exports2.rippleTimeToUnixTime = rippleTimeToUnixTime; + function unixTimeToRippleTime(timestamp) { + return Math.round(timestamp / 1e3) - RIPPLE_EPOCH_DIFF; + } + exports2.unixTimeToRippleTime = unixTimeToRippleTime; + function rippleTimeToISOTime(rippleTime) { + return new Date(rippleTimeToUnixTime(rippleTime)).toISOString(); + } + exports2.rippleTimeToISOTime = rippleTimeToISOTime; + function isoTimeToRippleTime(iso8601) { + const isoDate = typeof iso8601 === "string" ? new Date(iso8601) : iso8601; + return unixTimeToRippleTime(isoDate.getTime()); + } + exports2.isoTimeToRippleTime = isoTimeToRippleTime; + } +}); + +// node_modules/xrpl/dist/npm/utils/verifyPaymentChannelClaim.js +var require_verifyPaymentChannelClaim = __commonJS({ + "node_modules/xrpl/dist/npm/utils/verifyPaymentChannelClaim.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + var xrpConversion_1 = require_xrpConversion(); + function verifyPaymentChannelClaim(channel, xrpAmount, signature, publicKey) { + const signingData = (0, ripple_binary_codec_1.encodeForSigningClaim)({ + channel, + amount: (0, xrpConversion_1.xrpToDrops)(xrpAmount) + }); + return (0, ripple_keypairs_1.verify)(signingData, signature, publicKey); + } + exports2.default = verifyPaymentChannelClaim; + } +}); + +// node_modules/xrpl/dist/npm/utils/index.js +var require_utils17 = __commonJS({ + "node_modules/xrpl/dist/npm/utils/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getXChainClaimID = exports2.parseNFTokenID = exports2.getNFTokenID = exports2.encodeForSigningClaim = exports2.encodeForSigning = exports2.encodeForMultiSigning = exports2.decode = exports2.encode = exports2.decodeXAddress = exports2.encodeXAddress = exports2.decodeAccountPublic = exports2.encodeAccountPublic = exports2.decodeNodePublic = exports2.encodeNodePublic = exports2.decodeAccountID = exports2.encodeAccountID = exports2.decodeSeed = exports2.encodeSeed = exports2.isValidClassicAddress = exports2.isValidXAddress = exports2.xAddressToClassicAddress = exports2.classicAddressToXAddress = exports2.convertHexToString = exports2.convertStringToHex = exports2.verifyPaymentChannelClaim = exports2.verifyKeypairSignature = exports2.signPaymentChannelClaim = exports2.deriveXAddress = exports2.deriveAddress = exports2.deriveKeypair = exports2.hashes = exports2.isValidAddress = exports2.isValidSecret = exports2.qualityToDecimal = exports2.transferRateToDecimal = exports2.decimalToTransferRate = exports2.percentToTransferRate = exports2.decimalToQuality = exports2.percentToQuality = exports2.unixTimeToRippleTime = exports2.rippleTimeToUnixTime = exports2.isoTimeToRippleTime = exports2.rippleTimeToISOTime = exports2.hasNextPage = exports2.xrpToDrops = exports2.dropsToXrp = exports2.getBalanceChanges = void 0; + var ripple_address_codec_1 = require_dist4(); + Object.defineProperty(exports2, "classicAddressToXAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.classicAddressToXAddress; + } }); + Object.defineProperty(exports2, "decodeAccountID", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeAccountID; + } }); + Object.defineProperty(exports2, "decodeAccountPublic", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeAccountPublic; + } }); + Object.defineProperty(exports2, "decodeNodePublic", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeNodePublic; + } }); + Object.defineProperty(exports2, "decodeSeed", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeSeed; + } }); + Object.defineProperty(exports2, "decodeXAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.decodeXAddress; + } }); + Object.defineProperty(exports2, "encodeAccountID", { enumerable: true, get: function() { + return ripple_address_codec_1.encodeAccountID; + } }); + Object.defineProperty(exports2, "encodeAccountPublic", { enumerable: true, get: function() { + return ripple_address_codec_1.encodeAccountPublic; + } }); + Object.defineProperty(exports2, "encodeNodePublic", { enumerable: true, get: function() { + return ripple_address_codec_1.encodeNodePublic; + } }); + Object.defineProperty(exports2, "encodeSeed", { enumerable: true, get: function() { + return ripple_address_codec_1.encodeSeed; + } }); + Object.defineProperty(exports2, "encodeXAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.encodeXAddress; + } }); + Object.defineProperty(exports2, "isValidClassicAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.isValidClassicAddress; + } }); + Object.defineProperty(exports2, "isValidXAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.isValidXAddress; + } }); + Object.defineProperty(exports2, "xAddressToClassicAddress", { enumerable: true, get: function() { + return ripple_address_codec_1.xAddressToClassicAddress; + } }); + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + Object.defineProperty(exports2, "verifyKeypairSignature", { enumerable: true, get: function() { + return ripple_keypairs_1.verify; + } }); + var derive_1 = require_derive(); + Object.defineProperty(exports2, "deriveKeypair", { enumerable: true, get: function() { + return derive_1.deriveKeypair; + } }); + Object.defineProperty(exports2, "deriveAddress", { enumerable: true, get: function() { + return derive_1.deriveAddress; + } }); + Object.defineProperty(exports2, "deriveXAddress", { enumerable: true, get: function() { + return derive_1.deriveXAddress; + } }); + var getBalanceChanges_1 = __importDefault2(require_getBalanceChanges()); + exports2.getBalanceChanges = getBalanceChanges_1.default; + var getNFTokenID_1 = __importDefault2(require_getNFTokenID()); + exports2.getNFTokenID = getNFTokenID_1.default; + var getXChainClaimID_1 = __importDefault2(require_getXChainClaimID()); + exports2.getXChainClaimID = getXChainClaimID_1.default; + var hashes_1 = require_hashes2(); + var parseNFTokenID_1 = __importDefault2(require_parseNFTokenID()); + exports2.parseNFTokenID = parseNFTokenID_1.default; + var quality_1 = require_quality2(); + Object.defineProperty(exports2, "percentToTransferRate", { enumerable: true, get: function() { + return quality_1.percentToTransferRate; + } }); + Object.defineProperty(exports2, "decimalToTransferRate", { enumerable: true, get: function() { + return quality_1.decimalToTransferRate; + } }); + Object.defineProperty(exports2, "transferRateToDecimal", { enumerable: true, get: function() { + return quality_1.transferRateToDecimal; + } }); + Object.defineProperty(exports2, "percentToQuality", { enumerable: true, get: function() { + return quality_1.percentToQuality; + } }); + Object.defineProperty(exports2, "decimalToQuality", { enumerable: true, get: function() { + return quality_1.decimalToQuality; + } }); + Object.defineProperty(exports2, "qualityToDecimal", { enumerable: true, get: function() { + return quality_1.qualityToDecimal; + } }); + var signPaymentChannelClaim_1 = __importDefault2(require_signPaymentChannelClaim()); + exports2.signPaymentChannelClaim = signPaymentChannelClaim_1.default; + var stringConversion_1 = require_stringConversion(); + Object.defineProperty(exports2, "convertHexToString", { enumerable: true, get: function() { + return stringConversion_1.convertHexToString; + } }); + Object.defineProperty(exports2, "convertStringToHex", { enumerable: true, get: function() { + return stringConversion_1.convertStringToHex; + } }); + var timeConversion_1 = require_timeConversion(); + Object.defineProperty(exports2, "rippleTimeToISOTime", { enumerable: true, get: function() { + return timeConversion_1.rippleTimeToISOTime; + } }); + Object.defineProperty(exports2, "isoTimeToRippleTime", { enumerable: true, get: function() { + return timeConversion_1.isoTimeToRippleTime; + } }); + Object.defineProperty(exports2, "rippleTimeToUnixTime", { enumerable: true, get: function() { + return timeConversion_1.rippleTimeToUnixTime; + } }); + Object.defineProperty(exports2, "unixTimeToRippleTime", { enumerable: true, get: function() { + return timeConversion_1.unixTimeToRippleTime; + } }); + var verifyPaymentChannelClaim_1 = __importDefault2(require_verifyPaymentChannelClaim()); + exports2.verifyPaymentChannelClaim = verifyPaymentChannelClaim_1.default; + var xrpConversion_1 = require_xrpConversion(); + Object.defineProperty(exports2, "xrpToDrops", { enumerable: true, get: function() { + return xrpConversion_1.xrpToDrops; + } }); + Object.defineProperty(exports2, "dropsToXrp", { enumerable: true, get: function() { + return xrpConversion_1.dropsToXrp; + } }); + function isValidSecret(secret) { + try { + (0, derive_1.deriveKeypair)(secret); + return true; + } catch (_err) { + return false; + } + } + exports2.isValidSecret = isValidSecret; + function encode(object) { + return (0, ripple_binary_codec_1.encode)(object); + } + exports2.encode = encode; + function encodeForSigning(object) { + return (0, ripple_binary_codec_1.encodeForSigning)(object); + } + exports2.encodeForSigning = encodeForSigning; + function encodeForSigningClaim(object) { + return (0, ripple_binary_codec_1.encodeForSigningClaim)(object); + } + exports2.encodeForSigningClaim = encodeForSigningClaim; + function encodeForMultiSigning(object, signer) { + return (0, ripple_binary_codec_1.encodeForMultisigning)(object, signer); + } + exports2.encodeForMultiSigning = encodeForMultiSigning; + function decode(hex) { + return (0, ripple_binary_codec_1.decode)(hex); + } + exports2.decode = decode; + function isValidAddress(address) { + return (0, ripple_address_codec_1.isValidXAddress)(address) || (0, ripple_address_codec_1.isValidClassicAddress)(address); + } + exports2.isValidAddress = isValidAddress; + function hasNextPage(response) { + return Boolean(response.result["marker"]); + } + exports2.hasNextPage = hasNextPage; + var hashes = { + hashSignedTx: hashes_1.hashSignedTx, + hashTx: hashes_1.hashTx, + hashAccountRoot: hashes_1.hashAccountRoot, + hashSignerListId: hashes_1.hashSignerListId, + hashOfferId: hashes_1.hashOfferId, + hashTrustline: hashes_1.hashTrustline, + hashTxTree: hashes_1.hashTxTree, + hashStateTree: hashes_1.hashStateTree, + hashLedger: hashes_1.hashLedger, + hashLedgerHeader: hashes_1.hashLedgerHeader, + hashEscrow: hashes_1.hashEscrow, + hashPaymentChannel: hashes_1.hashPaymentChannel + }; + exports2.hashes = hashes; + } +}); + +// node_modules/xrpl/dist/npm/sugar/submit.js +var require_submit = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/submit.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getLastLedgerSequence = exports2.getSignedTx = exports2.waitForFinalTransactionOutcome = exports2.submitRequest = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils17(); + var LEDGER_CLOSE_TIME = 1e3; + function sleep(ms) { + return __awaiter2(this, void 0, void 0, function* () { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); + }); + } + function submitRequest(client, signedTransaction, failHard = false) { + return __awaiter2(this, void 0, void 0, function* () { + if (!isSigned(signedTransaction)) { + throw new errors_1.ValidationError("Transaction must be signed."); + } + const signedTxEncoded = typeof signedTransaction === "string" ? signedTransaction : (0, utils_1.encode)(signedTransaction); + const request = { + command: "submit", + tx_blob: signedTxEncoded, + fail_hard: isAccountDelete(signedTransaction) || failHard + }; + return client.request(request); + }); + } + exports2.submitRequest = submitRequest; + function waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult) { + return __awaiter2(this, void 0, void 0, function* () { + yield sleep(LEDGER_CLOSE_TIME); + const latestLedger = yield client.getLedgerIndex(); + if (lastLedger < latestLedger) { + throw new errors_1.XrplError(`The latest ledger sequence ${latestLedger} is greater than the transaction's LastLedgerSequence (${lastLedger}). +Preliminary result: ${submissionResult}`); + } + const txResponse = yield client.request({ + command: "tx", + transaction: txHash + }).catch((error) => __awaiter2(this, void 0, void 0, function* () { + var _a; + const message = (_a = error === null || error === void 0 ? void 0 : error.data) === null || _a === void 0 ? void 0 : _a.error; + if (message === "txnNotFound") { + return waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult); + } + throw new Error(`${message} + Preliminary result: ${submissionResult}. +Full error details: ${String(error)}`); + })); + if (txResponse.result.validated) { + return txResponse; + } + return waitForFinalTransactionOutcome(client, txHash, lastLedger, submissionResult); + }); + } + exports2.waitForFinalTransactionOutcome = waitForFinalTransactionOutcome; + function isSigned(transaction) { + const tx = typeof transaction === "string" ? (0, utils_1.decode)(transaction) : transaction; + if (typeof tx === "string") { + return false; + } + if (tx.Signers != null) { + const signers = tx.Signers; + for (const signer of signers) { + if (signer.Signer.SigningPubKey == null || signer.Signer.TxnSignature == null) { + return false; + } + } + return true; + } + return tx.SigningPubKey != null && tx.TxnSignature != null; + } + function getSignedTx(client, transaction, { autofill = true, wallet } = {}) { + return __awaiter2(this, void 0, void 0, function* () { + if (isSigned(transaction)) { + return transaction; + } + if (!wallet) { + throw new errors_1.ValidationError("Wallet must be provided when submitting an unsigned transaction"); + } + let tx = typeof transaction === "string" ? (0, utils_1.decode)(transaction) : transaction; + if (autofill) { + tx = yield client.autofill(tx); + } + return wallet.sign(tx).tx_blob; + }); + } + exports2.getSignedTx = getSignedTx; + function getLastLedgerSequence(transaction) { + const tx = typeof transaction === "string" ? (0, utils_1.decode)(transaction) : transaction; + return tx.LastLedgerSequence; + } + exports2.getLastLedgerSequence = getLastLedgerSequence; + function isAccountDelete(transaction) { + const tx = typeof transaction === "string" ? (0, utils_1.decode)(transaction) : transaction; + return tx.TransactionType === "AccountDelete"; + } + } +}); + +// node_modules/xrpl/dist/npm/sugar/utils.js +var require_utils18 = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ensureClassicAddress = void 0; + var ripple_address_codec_1 = require_dist4(); + function ensureClassicAddress(account) { + if ((0, ripple_address_codec_1.isValidXAddress)(account)) { + const { classicAddress, tag } = (0, ripple_address_codec_1.xAddressToClassicAddress)(account); + if (tag !== false) { + throw new Error("This command does not support the use of a tag. Use an address without a tag."); + } + return classicAddress; + } + return account; + } + exports2.ensureClassicAddress = ensureClassicAddress; + } +}); + +// node_modules/xrpl/dist/npm/sugar/index.js +var require_sugar = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_submit(), exports2); + __exportStar2(require_utils18(), exports2); + } +}); + +// node_modules/xrpl/dist/npm/sugar/getFeeXrp.js +var require_getFeeXrp = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/getFeeXrp.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var errors_1 = require_errors8(); + var NUM_DECIMAL_PLACES = 6; + var BASE_10 = 10; + function getFeeXrp(client, cushion) { + var _a, _b; + return __awaiter2(this, void 0, void 0, function* () { + const feeCushion = cushion !== null && cushion !== void 0 ? cushion : client.feeCushion; + const serverInfo = (yield client.request({ + command: "server_info" + })).result.info; + const baseFee = (_a = serverInfo.validated_ledger) === null || _a === void 0 ? void 0 : _a.base_fee_xrp; + if (baseFee == null) { + throw new errors_1.XrplError("getFeeXrp: Could not get base_fee_xrp from server_info"); + } + const baseFeeXrp = new bignumber_js_1.default(baseFee); + (_b = serverInfo.load_factor) !== null && _b !== void 0 ? _b : serverInfo.load_factor = 1; + let fee = baseFeeXrp.times(serverInfo.load_factor).times(feeCushion); + fee = bignumber_js_1.default.min(fee, client.maxFeeXRP); + return new bignumber_js_1.default(fee.toFixed(NUM_DECIMAL_PLACES)).toString(BASE_10); + }); + } + exports2.default = getFeeXrp; + } +}); + +// node_modules/xrpl/dist/npm/sugar/autofill.js +var require_autofill = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/autofill.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.autofillBatchTxn = exports2.handleDeliverMax = exports2.checkAccountDeleteBlockers = exports2.setLatestValidatedLedgerSequence = exports2.getTransactionFee = exports2.setNextValidSequenceNumber = exports2.setValidAddresses = exports2.txNeedsNetworkID = void 0; + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_address_codec_1 = require_dist4(); + var errors_1 = require_errors8(); + var utils_1 = require_utils17(); + var getFeeXrp_1 = __importDefault2(require_getFeeXrp()); + var LEDGER_OFFSET = 20; + var RESTRICTED_NETWORKS = 1024; + var REQUIRED_NETWORKID_VERSION = "1.11.0"; + function isNotLaterRippledVersion(source, target) { + if (source === target) { + return true; + } + const sourceDecomp = source.split("."); + const targetDecomp = target.split("."); + const sourceMajor = parseInt(sourceDecomp[0], 10); + const sourceMinor = parseInt(sourceDecomp[1], 10); + const targetMajor = parseInt(targetDecomp[0], 10); + const targetMinor = parseInt(targetDecomp[1], 10); + if (sourceMajor !== targetMajor) { + return sourceMajor < targetMajor; + } + if (sourceMinor !== targetMinor) { + return sourceMinor < targetMinor; + } + const sourcePatch = sourceDecomp[2].split("-"); + const targetPatch = targetDecomp[2].split("-"); + const sourcePatchVersion = parseInt(sourcePatch[0], 10); + const targetPatchVersion = parseInt(targetPatch[0], 10); + if (sourcePatchVersion !== targetPatchVersion) { + return sourcePatchVersion < targetPatchVersion; + } + if (sourcePatch.length !== targetPatch.length) { + return sourcePatch.length > targetPatch.length; + } + if (sourcePatch.length === 2) { + if (!sourcePatch[1][0].startsWith(targetPatch[1][0])) { + return sourcePatch[1] < targetPatch[1]; + } + if (sourcePatch[1].startsWith("b")) { + return parseInt(sourcePatch[1].slice(1), 10) < parseInt(targetPatch[1].slice(1), 10); + } + return parseInt(sourcePatch[1].slice(2), 10) < parseInt(targetPatch[1].slice(2), 10); + } + return false; + } + function txNeedsNetworkID(client) { + if (client.networkID !== void 0 && client.networkID > RESTRICTED_NETWORKS) { + if (client.buildVersion && isNotLaterRippledVersion(REQUIRED_NETWORKID_VERSION, client.buildVersion)) { + return true; + } + } + return false; + } + exports2.txNeedsNetworkID = txNeedsNetworkID; + function setValidAddresses(tx) { + validateAccountAddress(tx, "Account", "SourceTag"); + if (tx["Destination"] != null) { + validateAccountAddress(tx, "Destination", "DestinationTag"); + } + convertToClassicAddress(tx, "Authorize"); + convertToClassicAddress(tx, "Unauthorize"); + convertToClassicAddress(tx, "Owner"); + convertToClassicAddress(tx, "RegularKey"); + } + exports2.setValidAddresses = setValidAddresses; + function validateAccountAddress(tx, accountField, tagField) { + const { classicAccount, tag } = getClassicAccountAndTag(tx[accountField]); + tx[accountField] = classicAccount; + if (tag != null && tag !== false) { + if (tx[tagField] && tx[tagField] !== tag) { + throw new errors_1.ValidationError(`The ${tagField}, if present, must match the tag of the ${accountField} X-address`); + } + tx[tagField] = tag; + } + } + function getClassicAccountAndTag(account, expectedTag) { + if ((0, ripple_address_codec_1.isValidXAddress)(account)) { + const classic = (0, ripple_address_codec_1.xAddressToClassicAddress)(account); + if (expectedTag != null && classic.tag !== expectedTag) { + throw new errors_1.ValidationError("address includes a tag that does not match the tag specified in the transaction"); + } + return { + classicAccount: classic.classicAddress, + tag: classic.tag + }; + } + return { + classicAccount: account, + tag: expectedTag + }; + } + function convertToClassicAddress(tx, fieldName) { + const account = tx[fieldName]; + if (typeof account === "string") { + const { classicAccount } = getClassicAccountAndTag(account); + tx[fieldName] = classicAccount; + } + } + function getNextValidSequenceNumber(client, account) { + return __awaiter2(this, void 0, void 0, function* () { + const request = { + command: "account_info", + account, + ledger_index: "current" + }; + const data = yield client.request(request); + return data.result.account_data.Sequence; + }); + } + function setNextValidSequenceNumber(client, tx) { + return __awaiter2(this, void 0, void 0, function* () { + tx.Sequence = yield getNextValidSequenceNumber(client, tx.Account); + }); + } + exports2.setNextValidSequenceNumber = setNextValidSequenceNumber; + function fetchOwnerReserveFee(client) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const response = yield client.request({ command: "server_state" }); + const fee = (_a = response.result.state.validated_ledger) === null || _a === void 0 ? void 0 : _a.reserve_inc; + if (fee == null) { + return Promise.reject(new Error("Could not fetch Owner Reserve.")); + } + return new bignumber_js_1.default(fee); + }); + } + function calculateFeePerTransactionType(client, tx, signersCount = 0) { + return __awaiter2(this, void 0, void 0, function* () { + const netFeeXRP = yield (0, getFeeXrp_1.default)(client); + const netFeeDrops = (0, utils_1.xrpToDrops)(netFeeXRP); + let baseFee = new bignumber_js_1.default(netFeeDrops); + const isSpecialTxCost = ["AccountDelete", "AMMCreate"].includes(tx.TransactionType); + if (tx.TransactionType === "EscrowFinish" && tx.Fulfillment != null) { + const fulfillmentBytesSize = Math.ceil(tx.Fulfillment.length / 2); + baseFee = new bignumber_js_1.default(scaleValue(netFeeDrops, 33 + fulfillmentBytesSize / 16)); + } else if (isSpecialTxCost) { + baseFee = yield fetchOwnerReserveFee(client); + } else if (tx.TransactionType === "Batch") { + const rawTxFees = yield tx.RawTransactions.reduce((acc, rawTxn) => __awaiter2(this, void 0, void 0, function* () { + const resolvedAcc = yield acc; + const fee = yield calculateFeePerTransactionType(client, rawTxn.RawTransaction); + return bignumber_js_1.default.sum(resolvedAcc, fee); + }), Promise.resolve(new bignumber_js_1.default(0))); + baseFee = bignumber_js_1.default.sum(baseFee.times(2), rawTxFees); + } + if (signersCount > 0) { + baseFee = bignumber_js_1.default.sum(baseFee, scaleValue(netFeeDrops, signersCount)); + } + const maxFeeDrops = (0, utils_1.xrpToDrops)(client.maxFeeXRP); + const totalFee = isSpecialTxCost ? baseFee : bignumber_js_1.default.min(baseFee, maxFeeDrops); + return totalFee.dp(0, bignumber_js_1.default.ROUND_CEIL); + }); + } + function getTransactionFee(client, tx, signersCount = 0) { + return __awaiter2(this, void 0, void 0, function* () { + const fee = yield calculateFeePerTransactionType(client, tx, signersCount); + tx.Fee = fee.toString(10); + }); + } + exports2.getTransactionFee = getTransactionFee; + function scaleValue(value, multiplier) { + return new bignumber_js_1.default(value).times(multiplier).toString(); + } + function setLatestValidatedLedgerSequence(client, tx) { + return __awaiter2(this, void 0, void 0, function* () { + const ledgerSequence = yield client.getLedgerIndex(); + tx.LastLedgerSequence = ledgerSequence + LEDGER_OFFSET; + }); + } + exports2.setLatestValidatedLedgerSequence = setLatestValidatedLedgerSequence; + function checkAccountDeleteBlockers(client, tx) { + return __awaiter2(this, void 0, void 0, function* () { + const request = { + command: "account_objects", + account: tx.Account, + ledger_index: "validated", + deletion_blockers_only: true + }; + const response = yield client.request(request); + return new Promise((resolve, reject) => { + if (response.result.account_objects.length > 0) { + reject(new errors_1.XrplError(`Account ${tx.Account} cannot be deleted; there are Escrows, PayChannels, RippleStates, or Checks associated with the account.`, response.result.account_objects)); + } + resolve(); + }); + }); + } + exports2.checkAccountDeleteBlockers = checkAccountDeleteBlockers; + function handleDeliverMax(tx) { + var _a; + if (tx.DeliverMax != null) { + (_a = tx.Amount) !== null && _a !== void 0 ? _a : tx.Amount = tx.DeliverMax; + if (tx.Amount != null && tx.Amount !== tx.DeliverMax) { + throw new errors_1.ValidationError("PaymentTransaction: Amount and DeliverMax fields must be identical when both are provided"); + } + delete tx.DeliverMax; + } + } + exports2.handleDeliverMax = handleDeliverMax; + function autofillBatchTxn(client, tx) { + return __awaiter2(this, void 0, void 0, function* () { + const accountSequences = {}; + for (const rawTxn of tx.RawTransactions) { + const txn = rawTxn.RawTransaction; + if (txn.Sequence == null && txn.TicketSequence == null) { + if (txn.Account in accountSequences) { + txn.Sequence = accountSequences[txn.Account]; + accountSequences[txn.Account] += 1; + } else { + const nextSequence = yield getNextValidSequenceNumber(client, txn.Account); + const sequence = txn.Account === tx.Account ? nextSequence + 1 : nextSequence; + accountSequences[txn.Account] = sequence + 1; + txn.Sequence = sequence; + } + } + if (txn.Fee == null) { + txn.Fee = "0"; + } else if (txn.Fee !== "0") { + throw new errors_1.XrplError('Must have `Fee of "0" in inner Batch transaction.'); + } + if (txn.SigningPubKey == null) { + txn.SigningPubKey = ""; + } else if (txn.SigningPubKey !== "") { + throw new errors_1.XrplError('Must have `SigningPubKey` of "" in inner Batch transaction.'); + } + if (txn.TxnSignature != null) { + throw new errors_1.XrplError("Must not have `TxnSignature` in inner Batch transaction."); + } + if (txn.Signers != null) { + throw new errors_1.XrplError("Must not have `Signers` in inner Batch transaction."); + } + if (txn.NetworkID == null && txNeedsNetworkID(client)) { + txn.NetworkID = client.networkID; + } + } + }); + } + exports2.autofillBatchTxn = autofillBatchTxn; + } +}); + +// node_modules/xrpl/dist/npm/sugar/balances.js +var require_balances = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/balances.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.formatBalances = void 0; + function formatBalances(trustlines) { + return trustlines.map((trustline) => ({ + value: trustline.balance, + currency: trustline.currency, + issuer: trustline.account + })); + } + exports2.formatBalances = formatBalances; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/Offer.js +var require_Offer = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/Offer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.OfferFlags = void 0; + var OfferFlags; + (function(OfferFlags2) { + OfferFlags2[OfferFlags2["lsfPassive"] = 65536] = "lsfPassive"; + OfferFlags2[OfferFlags2["lsfSell"] = 131072] = "lsfSell"; + OfferFlags2[OfferFlags2["lsfHybrid"] = 262144] = "lsfHybrid"; + })(OfferFlags || (exports2.OfferFlags = OfferFlags = {})); + } +}); + +// node_modules/xrpl/dist/npm/sugar/getOrderbook.js +var require_getOrderbook = __commonJS({ + "node_modules/xrpl/dist/npm/sugar/getOrderbook.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sortAndLimitOffers = exports2.separateBuySellOrders = exports2.combineOrders = exports2.extractOffers = exports2.reverseRequest = exports2.requestAllOffers = exports2.createBookOffersRequest = exports2.validateOrderbookOptions = void 0; + var bignumber_js_1 = __importDefault2(require_bignumber()); + var errors_1 = require_errors8(); + var Offer_1 = require_Offer(); + var DEFAULT_LIMIT = 20; + function sortOffers(offers) { + return offers.sort((offerA, offerB) => { + var _a, _b; + const qualityA = (_a = offerA.quality) !== null && _a !== void 0 ? _a : 0; + const qualityB = (_b = offerB.quality) !== null && _b !== void 0 ? _b : 0; + return new bignumber_js_1.default(qualityA).comparedTo(qualityB); + }); + } + var getOrderbookOptionsSet = /* @__PURE__ */ new Set([ + "limit", + "ledger_index", + "ledger_hash", + "taker" + ]); + function validateOrderbookOptions(options) { + for (const key of Object.keys(options)) { + if (!getOrderbookOptionsSet.has(key)) { + throw new errors_1.ValidationError(`Unexpected option: ${key}`, options); + } + } + if (options.limit && typeof options.limit !== "number") { + throw new errors_1.ValidationError("limit must be a number", options.limit); + } + if (options.ledger_index && !(typeof options.ledger_index === "number" || typeof options.ledger_index === "string" && ["validated", "closed", "current"].includes(options.ledger_index))) { + throw new errors_1.ValidationError('ledger_index must be a number or a string of "validated", "closed", or "current"', options.ledger_index); + } + if (options.ledger_hash !== void 0 && options.ledger_hash !== null && typeof options.ledger_hash !== "string") { + throw new errors_1.ValidationError("ledger_hash must be a string", options.ledger_hash); + } + if (options.taker !== void 0 && typeof options.taker !== "string") { + throw new errors_1.ValidationError("taker must be a string", options.taker); + } + } + exports2.validateOrderbookOptions = validateOrderbookOptions; + function createBookOffersRequest(currency1, currency2, options) { + var _a, _b, _c; + const request = { + command: "book_offers", + taker_pays: currency1, + taker_gets: currency2, + ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : "validated", + ledger_hash: options.ledger_hash === null ? void 0 : options.ledger_hash, + limit: (_b = options.limit) !== null && _b !== void 0 ? _b : DEFAULT_LIMIT, + taker: (_c = options.taker) !== null && _c !== void 0 ? _c : void 0 + }; + return request; + } + exports2.createBookOffersRequest = createBookOffersRequest; + function requestAllOffers(client, request) { + return __awaiter2(this, void 0, void 0, function* () { + const results = yield client.requestAll(request); + return results.map((result) => result.result.offers); + }); + } + exports2.requestAllOffers = requestAllOffers; + function reverseRequest(request) { + return Object.assign(Object.assign({}, request), { taker_pays: request.taker_gets, taker_gets: request.taker_pays }); + } + exports2.reverseRequest = reverseRequest; + function extractOffers(offerResults) { + return offerResults.flatMap((offerResult) => offerResult); + } + exports2.extractOffers = extractOffers; + function combineOrders(directOffers, reverseOffers) { + return [...directOffers, ...reverseOffers]; + } + exports2.combineOrders = combineOrders; + function separateBuySellOrders(orders) { + const buy = []; + const sell = []; + orders.forEach((order) => { + if ((order.Flags & Offer_1.OfferFlags.lsfSell) === 0) { + buy.push(order); + } else { + sell.push(order); + } + }); + return { buy, sell }; + } + exports2.separateBuySellOrders = separateBuySellOrders; + function sortAndLimitOffers(offers, limit) { + const sortedOffers = sortOffers(offers); + return sortedOffers.slice(0, limit); + } + exports2.sortAndLimitOffers = sortAndLimitOffers; + } +}); + +// node_modules/@noble/hashes/legacy.js +var require_legacy = __commonJS({ + "node_modules/@noble/hashes/legacy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.ripemd160 = exports2.RIPEMD160 = exports2.md5 = exports2.MD5 = exports2.sha1 = exports2.SHA1 = void 0; + var _md_ts_1 = require_md(); + var utils_ts_1 = require_utils9(); + var SHA1_IV = /* @__PURE__ */ Uint32Array.from([ + 1732584193, + 4023233417, + 2562383102, + 271733878, + 3285377520 + ]); + var SHA1_W = /* @__PURE__ */ new Uint32Array(80); + var SHA1 = class extends _md_ts_1.HashMD { + constructor() { + super(64, 20, 8, false); + this.A = SHA1_IV[0] | 0; + this.B = SHA1_IV[1] | 0; + this.C = SHA1_IV[2] | 0; + this.D = SHA1_IV[3] | 0; + this.E = SHA1_IV[4] | 0; + } + get() { + const { A, B, C, D, E } = this; + return [A, B, C, D, E]; + } + set(A, B, C, D, E) { + this.A = A | 0; + this.B = B | 0; + this.C = C | 0; + this.D = D | 0; + this.E = E | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + SHA1_W[i] = view.getUint32(offset, false); + for (let i = 16; i < 80; i++) + SHA1_W[i] = (0, utils_ts_1.rotl)(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1); + let { A, B, C, D, E } = this; + for (let i = 0; i < 80; i++) { + let F, K2; + if (i < 20) { + F = (0, _md_ts_1.Chi)(B, C, D); + K2 = 1518500249; + } else if (i < 40) { + F = B ^ C ^ D; + K2 = 1859775393; + } else if (i < 60) { + F = (0, _md_ts_1.Maj)(B, C, D); + K2 = 2400959708; + } else { + F = B ^ C ^ D; + K2 = 3395469782; + } + const T = (0, utils_ts_1.rotl)(A, 5) + F + E + K2 + SHA1_W[i] | 0; + E = D; + D = C; + C = (0, utils_ts_1.rotl)(B, 30); + B = A; + A = T; + } + A = A + this.A | 0; + B = B + this.B | 0; + C = C + this.C | 0; + D = D + this.D | 0; + E = E + this.E | 0; + this.set(A, B, C, D, E); + } + roundClean() { + (0, utils_ts_1.clean)(SHA1_W); + } + destroy() { + this.set(0, 0, 0, 0, 0); + (0, utils_ts_1.clean)(this.buffer); + } + }; + exports2.SHA1 = SHA1; + exports2.sha1 = (0, utils_ts_1.createHasher)(() => new SHA1()); + var p32 = /* @__PURE__ */ Math.pow(2, 32); + var K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) => Math.floor(p32 * Math.abs(Math.sin(i + 1)))); + var MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4); + var MD5_W = /* @__PURE__ */ new Uint32Array(16); + var MD5 = class extends _md_ts_1.HashMD { + constructor() { + super(64, 16, 8, true); + this.A = MD5_IV[0] | 0; + this.B = MD5_IV[1] | 0; + this.C = MD5_IV[2] | 0; + this.D = MD5_IV[3] | 0; + } + get() { + const { A, B, C, D } = this; + return [A, B, C, D]; + } + set(A, B, C, D) { + this.A = A | 0; + this.B = B | 0; + this.C = C | 0; + this.D = D | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + MD5_W[i] = view.getUint32(offset, true); + let { A, B, C, D } = this; + for (let i = 0; i < 64; i++) { + let F, g, s; + if (i < 16) { + F = (0, _md_ts_1.Chi)(B, C, D); + g = i; + s = [7, 12, 17, 22]; + } else if (i < 32) { + F = (0, _md_ts_1.Chi)(D, B, C); + g = (5 * i + 1) % 16; + s = [5, 9, 14, 20]; + } else if (i < 48) { + F = B ^ C ^ D; + g = (3 * i + 5) % 16; + s = [4, 11, 16, 23]; + } else { + F = C ^ (B | ~D); + g = 7 * i % 16; + s = [6, 10, 15, 21]; + } + F = F + A + K[i] + MD5_W[g]; + A = D; + D = C; + C = B; + B = B + (0, utils_ts_1.rotl)(F, s[i % 4]); + } + A = A + this.A | 0; + B = B + this.B | 0; + C = C + this.C | 0; + D = D + this.D | 0; + this.set(A, B, C, D); + } + roundClean() { + (0, utils_ts_1.clean)(MD5_W); + } + destroy() { + this.set(0, 0, 0, 0); + (0, utils_ts_1.clean)(this.buffer); + } + }; + exports2.MD5 = MD5; + exports2.md5 = (0, utils_ts_1.createHasher)(() => new MD5()); + var Rho160 = /* @__PURE__ */ Uint8Array.from([ + 7, + 4, + 13, + 1, + 10, + 6, + 15, + 3, + 12, + 0, + 9, + 5, + 2, + 14, + 11, + 8 + ]); + var Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))(); + var Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))(); + var idxLR = /* @__PURE__ */ (() => { + const L = [Id160]; + const R = [Pi160]; + const res = [L, R]; + for (let i = 0; i < 4; i++) + for (let j of res) + j.push(j[i].map((k) => Rho160[k])); + return res; + })(); + var idxL = /* @__PURE__ */ (() => idxLR[0])(); + var idxR = /* @__PURE__ */ (() => idxLR[1])(); + var shifts160 = /* @__PURE__ */ [ + [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8], + [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7], + [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9], + [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6], + [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5] + ].map((i) => Uint8Array.from(i)); + var shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j])); + var shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j])); + var Kl160 = /* @__PURE__ */ Uint32Array.from([ + 0, + 1518500249, + 1859775393, + 2400959708, + 2840853838 + ]); + var Kr160 = /* @__PURE__ */ Uint32Array.from([ + 1352829926, + 1548603684, + 1836072691, + 2053994217, + 0 + ]); + function ripemd_f(group, x, y, z) { + if (group === 0) + return x ^ y ^ z; + if (group === 1) + return x & y | ~x & z; + if (group === 2) + return (x | ~y) ^ z; + if (group === 3) + return x & z | y & ~z; + return x ^ (y | ~z); + } + var BUF_160 = /* @__PURE__ */ new Uint32Array(16); + var RIPEMD160 = class extends _md_ts_1.HashMD { + constructor() { + super(64, 20, 8, true); + this.h0 = 1732584193 | 0; + this.h1 = 4023233417 | 0; + this.h2 = 2562383102 | 0; + this.h3 = 271733878 | 0; + this.h4 = 3285377520 | 0; + } + get() { + const { h0, h1, h2, h3, h4 } = this; + return [h0, h1, h2, h3, h4]; + } + set(h0, h1, h2, h3, h4) { + this.h0 = h0 | 0; + this.h1 = h1 | 0; + this.h2 = h2 | 0; + this.h3 = h3 | 0; + this.h4 = h4 | 0; + } + process(view, offset) { + for (let i = 0; i < 16; i++, offset += 4) + BUF_160[i] = view.getUint32(offset, true); + 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; + for (let group = 0; group < 5; group++) { + const rGroup = 4 - group; + const hbl = Kl160[group], hbr = Kr160[group]; + const rl = idxL[group], rr = idxR[group]; + const sl = shiftsL160[group], sr = shiftsR160[group]; + for (let i = 0; i < 16; i++) { + const tl = (0, utils_ts_1.rotl)(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el | 0; + al = el, el = dl, dl = (0, utils_ts_1.rotl)(cl, 10) | 0, cl = bl, bl = tl; + } + for (let i = 0; i < 16; i++) { + const tr = (0, utils_ts_1.rotl)(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er | 0; + ar = er, er = dr, dr = (0, utils_ts_1.rotl)(cr, 10) | 0, cr = br, br = tr; + } + } + 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); + } + roundClean() { + (0, utils_ts_1.clean)(BUF_160); + } + destroy() { + this.destroyed = true; + (0, utils_ts_1.clean)(this.buffer); + this.set(0, 0, 0, 0, 0); + } + }; + exports2.RIPEMD160 = RIPEMD160; + exports2.ripemd160 = (0, utils_ts_1.createHasher)(() => new RIPEMD160()); + } +}); + +// node_modules/@scure/bip32/lib/index.js +var require_lib16 = __commonJS({ + "node_modules/@scure/bip32/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.HDKey = exports2.HARDENED_OFFSET = void 0; + var modular_1 = require_modular(); + var secp256k1_1 = require_secp256k1(); + var hmac_1 = require_hmac(); + var legacy_1 = require_legacy(); + var sha2_1 = require_sha2(); + var utils_1 = require_utils9(); + var base_1 = require_lib15(); + var Point = secp256k1_1.secp256k1.ProjectivePoint; + var base58check = (0, base_1.createBase58check)(sha2_1.sha256); + function bytesToNumber(bytes) { + (0, utils_1.abytes)(bytes); + const h = bytes.length === 0 ? "0" : (0, utils_1.bytesToHex)(bytes); + return BigInt("0x" + h); + } + function numberToBytes(num) { + if (typeof num !== "bigint") + throw new Error("bigint expected"); + return (0, utils_1.hexToBytes)(num.toString(16).padStart(64, "0")); + } + var MASTER_SECRET = (0, utils_1.utf8ToBytes)("Bitcoin seed"); + var BITCOIN_VERSIONS = { private: 76066276, public: 76067358 }; + exports2.HARDENED_OFFSET = 2147483648; + var hash160 = (data) => (0, legacy_1.ripemd160)((0, sha2_1.sha256)(data)); + var fromU32 = (data) => (0, utils_1.createView)(data).getUint32(0, false); + var toU32 = (n) => { + if (!Number.isSafeInteger(n) || n < 0 || n > 2 ** 32 - 1) { + throw new Error("invalid number, should be from 0 to 2**32-1, got " + n); + } + const buf = new Uint8Array(4); + (0, utils_1.createView)(buf).setUint32(0, n, false); + return buf; + }; + var HDKey = class _HDKey { + get fingerprint() { + if (!this.pubHash) { + throw new Error("No publicKey set!"); + } + return fromU32(this.pubHash); + } + get identifier() { + return this.pubHash; + } + get pubKeyHash() { + return this.pubHash; + } + get privateKey() { + return this.privKeyBytes || null; + } + get publicKey() { + return this.pubKey || null; + } + get privateExtendedKey() { + const priv = this.privateKey; + if (!priv) { + throw new Error("No private key"); + } + return base58check.encode(this.serialize(this.versions.private, (0, utils_1.concatBytes)(new Uint8Array([0]), priv))); + } + get publicExtendedKey() { + if (!this.pubKey) { + throw new Error("No public key"); + } + return base58check.encode(this.serialize(this.versions.public, this.pubKey)); + } + static fromMasterSeed(seed, versions = BITCOIN_VERSIONS) { + (0, utils_1.abytes)(seed); + if (8 * seed.length < 128 || 8 * seed.length > 512) { + throw new Error("HDKey: seed length must be between 128 and 512 bits; 256 bits is advised, got " + seed.length); + } + const I = (0, hmac_1.hmac)(sha2_1.sha512, MASTER_SECRET, seed); + return new _HDKey({ + versions, + chainCode: I.slice(32), + privateKey: I.slice(0, 32) + }); + } + static fromExtendedKey(base58key, versions = BITCOIN_VERSIONS) { + const keyBuffer = base58check.decode(base58key); + const keyView = (0, utils_1.createView)(keyBuffer); + const version = keyView.getUint32(0, false); + const opt = { + versions, + depth: keyBuffer[4], + parentFingerprint: keyView.getUint32(5, false), + index: keyView.getUint32(9, false), + chainCode: keyBuffer.slice(13, 45) + }; + const key = keyBuffer.slice(45); + const isPriv = key[0] === 0; + if (version !== versions[isPriv ? "private" : "public"]) { + throw new Error("Version mismatch"); + } + if (isPriv) { + return new _HDKey({ ...opt, privateKey: key.slice(1) }); + } else { + return new _HDKey({ ...opt, publicKey: key }); + } + } + static fromJSON(json) { + return _HDKey.fromExtendedKey(json.xpriv); + } + constructor(opt) { + this.depth = 0; + this.index = 0; + this.chainCode = null; + this.parentFingerprint = 0; + if (!opt || typeof opt !== "object") { + throw new Error("HDKey.constructor must not be called directly"); + } + this.versions = opt.versions || BITCOIN_VERSIONS; + this.depth = opt.depth || 0; + this.chainCode = opt.chainCode || null; + this.index = opt.index || 0; + this.parentFingerprint = opt.parentFingerprint || 0; + if (!this.depth) { + if (this.parentFingerprint || this.index) { + throw new Error("HDKey: zero depth with non-zero index/parent fingerprint"); + } + } + if (opt.publicKey && opt.privateKey) { + throw new Error("HDKey: publicKey and privateKey at same time."); + } + if (opt.privateKey) { + if (!secp256k1_1.secp256k1.utils.isValidPrivateKey(opt.privateKey)) { + throw new Error("Invalid private key"); + } + this.privKey = typeof opt.privateKey === "bigint" ? opt.privateKey : bytesToNumber(opt.privateKey); + this.privKeyBytes = numberToBytes(this.privKey); + this.pubKey = secp256k1_1.secp256k1.getPublicKey(opt.privateKey, true); + } else if (opt.publicKey) { + this.pubKey = Point.fromHex(opt.publicKey).toRawBytes(true); + } else { + throw new Error("HDKey: no public or private key provided"); + } + this.pubHash = hash160(this.pubKey); + } + derive(path2) { + if (!/^[mM]'?/.test(path2)) { + throw new Error('Path must start with "m" or "M"'); + } + if (/^[mM]'?$/.test(path2)) { + return this; + } + const parts = path2.replace(/^[mM]'?\//, "").split("/"); + let child = this; + for (const c of parts) { + const m = /^(\d+)('?)$/.exec(c); + const m1 = m && m[1]; + if (!m || m.length !== 3 || typeof m1 !== "string") + throw new Error("invalid child index: " + c); + let idx = +m1; + if (!Number.isSafeInteger(idx) || idx >= exports2.HARDENED_OFFSET) { + throw new Error("Invalid index"); + } + if (m[2] === "'") { + idx += exports2.HARDENED_OFFSET; + } + child = child.deriveChild(idx); + } + return child; + } + deriveChild(index) { + if (!this.pubKey || !this.chainCode) { + throw new Error("No publicKey or chainCode set"); + } + let data = toU32(index); + if (index >= exports2.HARDENED_OFFSET) { + const priv = this.privateKey; + if (!priv) { + throw new Error("Could not derive hardened child key"); + } + data = (0, utils_1.concatBytes)(new Uint8Array([0]), priv, data); + } else { + data = (0, utils_1.concatBytes)(this.pubKey, data); + } + const I = (0, hmac_1.hmac)(sha2_1.sha512, this.chainCode, data); + const childTweak = bytesToNumber(I.slice(0, 32)); + const chainCode = I.slice(32); + if (!secp256k1_1.secp256k1.utils.isValidPrivateKey(childTweak)) { + throw new Error("Tweak bigger than curve order"); + } + const opt = { + versions: this.versions, + chainCode, + depth: this.depth + 1, + parentFingerprint: this.fingerprint, + index + }; + try { + if (this.privateKey) { + const added = (0, modular_1.mod)(this.privKey + childTweak, secp256k1_1.secp256k1.CURVE.n); + if (!secp256k1_1.secp256k1.utils.isValidPrivateKey(added)) { + throw new Error("The tweak was out of range or the resulted private key is invalid"); + } + opt.privateKey = added; + } else { + const added = Point.fromHex(this.pubKey).add(Point.fromPrivateKey(childTweak)); + if (added.equals(Point.ZERO)) { + throw new Error("The tweak was equal to negative P, which made the result key invalid"); + } + opt.publicKey = added.toRawBytes(true); + } + return new _HDKey(opt); + } catch (err2) { + return this.deriveChild(index + 1); + } + } + sign(hash) { + if (!this.privateKey) { + throw new Error("No privateKey set!"); + } + (0, utils_1.abytes)(hash, 32); + return secp256k1_1.secp256k1.sign(hash, this.privKey).toCompactRawBytes(); + } + verify(hash, signature) { + (0, utils_1.abytes)(hash, 32); + (0, utils_1.abytes)(signature, 64); + if (!this.publicKey) { + throw new Error("No publicKey set!"); + } + let sig; + try { + sig = secp256k1_1.secp256k1.Signature.fromCompact(signature); + } catch (error) { + return false; + } + return secp256k1_1.secp256k1.verify(sig, hash, this.publicKey); + } + wipePrivateData() { + this.privKey = void 0; + if (this.privKeyBytes) { + this.privKeyBytes.fill(0); + this.privKeyBytes = void 0; + } + return this; + } + toJSON() { + return { + xpriv: this.privateExtendedKey, + xpub: this.publicExtendedKey + }; + } + serialize(version, key) { + if (!this.chainCode) { + throw new Error("No chainCode set"); + } + (0, utils_1.abytes)(key, 33); + return (0, utils_1.concatBytes)(toU32(version), new Uint8Array([this.depth]), toU32(this.parentFingerprint), toU32(this.index), this.chainCode, key); + } + }; + exports2.HDKey = HDKey; + } +}); + +// node_modules/@noble/hashes/pbkdf2.js +var require_pbkdf2 = __commonJS({ + "node_modules/@noble/hashes/pbkdf2.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.pbkdf2 = pbkdf2; + exports2.pbkdf2Async = pbkdf2Async; + var hmac_ts_1 = require_hmac(); + var utils_ts_1 = require_utils9(); + function pbkdf2Init(hash, _password, _salt, _opts) { + (0, utils_ts_1.ahash)(hash); + const opts = (0, utils_ts_1.checkOpts)({ dkLen: 32, asyncTick: 10 }, _opts); + const { c, dkLen, asyncTick } = opts; + (0, utils_ts_1.anumber)(c); + (0, utils_ts_1.anumber)(dkLen); + (0, utils_ts_1.anumber)(asyncTick); + if (c < 1) + throw new Error("iterations (c) should be >= 1"); + const password = (0, utils_ts_1.kdfInputToBytes)(_password); + const salt = (0, utils_ts_1.kdfInputToBytes)(_salt); + const DK = new Uint8Array(dkLen); + const PRF = hmac_ts_1.hmac.create(hash, password); + const PRFSalt = PRF._cloneInto().update(salt); + return { c, dkLen, asyncTick, DK, PRF, PRFSalt }; + } + function pbkdf2Output(PRF, PRFSalt, DK, prfW, u) { + PRF.destroy(); + PRFSalt.destroy(); + if (prfW) + prfW.destroy(); + (0, utils_ts_1.clean)(u); + return DK; + } + function pbkdf2(hash, password, salt, opts) { + const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); + let prfW; + const arr = new Uint8Array(4); + const view = (0, utils_ts_1.createView)(arr); + const u = new Uint8Array(PRF.outputLen); + for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { + const Ti = DK.subarray(pos, pos + PRF.outputLen); + view.setInt32(0, ti, false); + (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); + Ti.set(u.subarray(0, Ti.length)); + for (let ui = 1; ui < c; ui++) { + PRF._cloneInto(prfW).update(u).digestInto(u); + for (let i = 0; i < Ti.length; i++) + Ti[i] ^= u[i]; + } + } + return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); + } + async function pbkdf2Async(hash, password, salt, opts) { + const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts); + let prfW; + const arr = new Uint8Array(4); + const view = (0, utils_ts_1.createView)(arr); + const u = new Uint8Array(PRF.outputLen); + for (let ti = 1, pos = 0; pos < dkLen; ti++, pos += PRF.outputLen) { + const Ti = DK.subarray(pos, pos + PRF.outputLen); + view.setInt32(0, ti, false); + (prfW = PRFSalt._cloneInto(prfW)).update(arr).digestInto(u); + Ti.set(u.subarray(0, Ti.length)); + await (0, utils_ts_1.asyncLoop)(c - 1, asyncTick, () => { + PRF._cloneInto(prfW).update(u).digestInto(u); + for (let i = 0; i < Ti.length; i++) + Ti[i] ^= u[i]; + }); + } + return pbkdf2Output(PRF, PRFSalt, DK, prfW, u); + } + } +}); + +// node_modules/@scure/bip39/index.js +var require_bip392 = __commonJS({ + "node_modules/@scure/bip39/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.generateMnemonic = generateMnemonic; + exports2.mnemonicToEntropy = mnemonicToEntropy; + exports2.entropyToMnemonic = entropyToMnemonic; + exports2.validateMnemonic = validateMnemonic; + exports2.mnemonicToSeed = mnemonicToSeed; + exports2.mnemonicToSeedSync = mnemonicToSeedSync; + var pbkdf2_1 = require_pbkdf2(); + var sha2_1 = require_sha2(); + var utils_1 = require_utils9(); + var base_1 = require_lib15(); + var isJapanese = (wordlist) => wordlist[0] === "\u3042\u3044\u3053\u304F\u3057\u3093"; + function nfkd(str) { + if (typeof str !== "string") + throw new TypeError("invalid mnemonic type: " + typeof str); + return str.normalize("NFKD"); + } + function normalize(str) { + const norm = nfkd(str); + const words = norm.split(" "); + if (![12, 15, 18, 21, 24].includes(words.length)) + throw new Error("Invalid mnemonic"); + return { nfkd: norm, words }; + } + function aentropy(ent) { + (0, utils_1.abytes)(ent, 16, 20, 24, 28, 32); + } + function generateMnemonic(wordlist, strength = 128) { + (0, utils_1.anumber)(strength); + if (strength % 32 !== 0 || strength > 256) + throw new TypeError("Invalid entropy"); + return entropyToMnemonic((0, utils_1.randomBytes)(strength / 8), wordlist); + } + var calcChecksum = (entropy) => { + const bitsLeft = 8 - entropy.length / 4; + return new Uint8Array([(0, sha2_1.sha256)(entropy)[0] >> bitsLeft << bitsLeft]); + }; + function getCoder(wordlist) { + if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== "string") + throw new Error("Wordlist: expected array of 2048 strings"); + wordlist.forEach((i) => { + if (typeof i !== "string") + throw new Error("wordlist: non-string element: " + i); + }); + return base_1.utils.chain(base_1.utils.checksum(1, calcChecksum), base_1.utils.radix2(11, true), base_1.utils.alphabet(wordlist)); + } + function mnemonicToEntropy(mnemonic, wordlist) { + const { words } = normalize(mnemonic); + const entropy = getCoder(wordlist).decode(words); + aentropy(entropy); + return entropy; + } + function entropyToMnemonic(entropy, wordlist) { + aentropy(entropy); + const words = getCoder(wordlist).encode(entropy); + return words.join(isJapanese(wordlist) ? "\u3000" : " "); + } + function validateMnemonic(mnemonic, wordlist) { + try { + mnemonicToEntropy(mnemonic, wordlist); + } catch (e) { + return false; + } + return true; + } + var psalt = (passphrase) => nfkd("mnemonic" + passphrase); + function mnemonicToSeed(mnemonic, passphrase = "") { + return (0, pbkdf2_1.pbkdf2Async)(sha2_1.sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 }); + } + function mnemonicToSeedSync(mnemonic, passphrase = "") { + return (0, pbkdf2_1.pbkdf2)(sha2_1.sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 }); + } + } +}); + +// node_modules/@scure/bip39/wordlists/english.js +var require_english = __commonJS({ + "node_modules/@scure/bip39/wordlists/english.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.wordlist = void 0; + exports2.wordlist = `abandon +ability +able +about +above +absent +absorb +abstract +absurd +abuse +access +accident +account +accuse +achieve +acid +acoustic +acquire +across +act +action +actor +actress +actual +adapt +add +addict +address +adjust +admit +adult +advance +advice +aerobic +affair +afford +afraid +again +age +agent +agree +ahead +aim +air +airport +aisle +alarm +album +alcohol +alert +alien +all +alley +allow +almost +alone +alpha +already +also +alter +always +amateur +amazing +among +amount +amused +analyst +anchor +ancient +anger +angle +angry +animal +ankle +announce +annual +another +answer +antenna +antique +anxiety +any +apart +apology +appear +apple +approve +april +arch +arctic +area +arena +argue +arm +armed +armor +army +around +arrange +arrest +arrive +arrow +art +artefact +artist +artwork +ask +aspect +assault +asset +assist +assume +asthma +athlete +atom +attack +attend +attitude +attract +auction +audit +august +aunt +author +auto +autumn +average +avocado +avoid +awake +aware +away +awesome +awful +awkward +axis +baby +bachelor +bacon +badge +bag +balance +balcony +ball +bamboo +banana +banner +bar +barely +bargain +barrel +base +basic +basket +battle +beach +bean +beauty +because +become +beef +before +begin +behave +behind +believe +below +belt +bench +benefit +best +betray +better +between +beyond +bicycle +bid +bike +bind +biology +bird +birth +bitter +black +blade +blame +blanket +blast +bleak +bless +blind +blood +blossom +blouse +blue +blur +blush +board +boat +body +boil +bomb +bone +bonus +book +boost +border +boring +borrow +boss +bottom +bounce +box +boy +bracket +brain +brand +brass +brave +bread +breeze +brick +bridge +brief +bright +bring +brisk +broccoli +broken +bronze +broom +brother +brown +brush +bubble +buddy +budget +buffalo +build +bulb +bulk +bullet +bundle +bunker +burden +burger +burst +bus +business +busy +butter +buyer +buzz +cabbage +cabin +cable +cactus +cage +cake +call +calm +camera +camp +can +canal +cancel +candy +cannon +canoe +canvas +canyon +capable +capital +captain +car +carbon +card +cargo +carpet +carry +cart +case +cash +casino +castle +casual +cat +catalog +catch +category +cattle +caught +cause +caution +cave +ceiling +celery +cement +census +century +cereal +certain +chair +chalk +champion +change +chaos +chapter +charge +chase +chat +cheap +check +cheese +chef +cherry +chest +chicken +chief +child +chimney +choice +choose +chronic +chuckle +chunk +churn +cigar +cinnamon +circle +citizen +city +civil +claim +clap +clarify +claw +clay +clean +clerk +clever +click +client +cliff +climb +clinic +clip +clock +clog +close +cloth +cloud +clown +club +clump +cluster +clutch +coach +coast +coconut +code +coffee +coil +coin +collect +color +column +combine +come +comfort +comic +common +company +concert +conduct +confirm +congress +connect +consider +control +convince +cook +cool +copper +copy +coral +core +corn +correct +cost +cotton +couch +country +couple +course +cousin +cover +coyote +crack +cradle +craft +cram +crane +crash +crater +crawl +crazy +cream +credit +creek +crew +cricket +crime +crisp +critic +crop +cross +crouch +crowd +crucial +cruel +cruise +crumble +crunch +crush +cry +crystal +cube +culture +cup +cupboard +curious +current +curtain +curve +cushion +custom +cute +cycle +dad +damage +damp +dance +danger +daring +dash +daughter +dawn +day +deal +debate +debris +decade +december +decide +decline +decorate +decrease +deer +defense +define +defy +degree +delay +deliver +demand +demise +denial +dentist +deny +depart +depend +deposit +depth +deputy +derive +describe +desert +design +desk +despair +destroy +detail +detect +develop +device +devote +diagram +dial +diamond +diary +dice +diesel +diet +differ +digital +dignity +dilemma +dinner +dinosaur +direct +dirt +disagree +discover +disease +dish +dismiss +disorder +display +distance +divert +divide +divorce +dizzy +doctor +document +dog +doll +dolphin +domain +donate +donkey +donor +door +dose +double +dove +draft +dragon +drama +drastic +draw +dream +dress +drift +drill +drink +drip +drive +drop +drum +dry +duck +dumb +dune +during +dust +dutch +duty +dwarf +dynamic +eager +eagle +early +earn +earth +easily +east +easy +echo +ecology +economy +edge +edit +educate +effort +egg +eight +either +elbow +elder +electric +elegant +element +elephant +elevator +elite +else +embark +embody +embrace +emerge +emotion +employ +empower +empty +enable +enact +end +endless +endorse +enemy +energy +enforce +engage +engine +enhance +enjoy +enlist +enough +enrich +enroll +ensure +enter +entire +entry +envelope +episode +equal +equip +era +erase +erode +erosion +error +erupt +escape +essay +essence +estate +eternal +ethics +evidence +evil +evoke +evolve +exact +example +excess +exchange +excite +exclude +excuse +execute +exercise +exhaust +exhibit +exile +exist +exit +exotic +expand +expect +expire +explain +expose +express +extend +extra +eye +eyebrow +fabric +face +faculty +fade +faint +faith +fall +false +fame +family +famous +fan +fancy +fantasy +farm +fashion +fat +fatal +father +fatigue +fault +favorite +feature +february +federal +fee +feed +feel +female +fence +festival +fetch +fever +few +fiber +fiction +field +figure +file +film +filter +final +find +fine +finger +finish +fire +firm +first +fiscal +fish +fit +fitness +fix +flag +flame +flash +flat +flavor +flee +flight +flip +float +flock +floor +flower +fluid +flush +fly +foam +focus +fog +foil +fold +follow +food +foot +force +forest +forget +fork +fortune +forum +forward +fossil +foster +found +fox +fragile +frame +frequent +fresh +friend +fringe +frog +front +frost +frown +frozen +fruit +fuel +fun +funny +furnace +fury +future +gadget +gain +galaxy +gallery +game +gap +garage +garbage +garden +garlic +garment +gas +gasp +gate +gather +gauge +gaze +general +genius +genre +gentle +genuine +gesture +ghost +giant +gift +giggle +ginger +giraffe +girl +give +glad +glance +glare +glass +glide +glimpse +globe +gloom +glory +glove +glow +glue +goat +goddess +gold +good +goose +gorilla +gospel +gossip +govern +gown +grab +grace +grain +grant +grape +grass +gravity +great +green +grid +grief +grit +grocery +group +grow +grunt +guard +guess +guide +guilt +guitar +gun +gym +habit +hair +half +hammer +hamster +hand +happy +harbor +hard +harsh +harvest +hat +have +hawk +hazard +head +health +heart +heavy +hedgehog +height +hello +helmet +help +hen +hero +hidden +high +hill +hint +hip +hire +history +hobby +hockey +hold +hole +holiday +hollow +home +honey +hood +hope +horn +horror +horse +hospital +host +hotel +hour +hover +hub +huge +human +humble +humor +hundred +hungry +hunt +hurdle +hurry +hurt +husband +hybrid +ice +icon +idea +identify +idle +ignore +ill +illegal +illness +image +imitate +immense +immune +impact +impose +improve +impulse +inch +include +income +increase +index +indicate +indoor +industry +infant +inflict +inform +inhale +inherit +initial +inject +injury +inmate +inner +innocent +input +inquiry +insane +insect +inside +inspire +install +intact +interest +into +invest +invite +involve +iron +island +isolate +issue +item +ivory +jacket +jaguar +jar +jazz +jealous +jeans +jelly +jewel +job +join +joke +journey +joy +judge +juice +jump +jungle +junior +junk +just +kangaroo +keen +keep +ketchup +key +kick +kid +kidney +kind +kingdom +kiss +kit +kitchen +kite +kitten +kiwi +knee +knife +knock +know +lab +label +labor +ladder +lady +lake +lamp +language +laptop +large +later +latin +laugh +laundry +lava +law +lawn +lawsuit +layer +lazy +leader +leaf +learn +leave +lecture +left +leg +legal +legend +leisure +lemon +lend +length +lens +leopard +lesson +letter +level +liar +liberty +library +license +life +lift +light +like +limb +limit +link +lion +liquid +list +little +live +lizard +load +loan +lobster +local +lock +logic +lonely +long +loop +lottery +loud +lounge +love +loyal +lucky +luggage +lumber +lunar +lunch +luxury +lyrics +machine +mad +magic +magnet +maid +mail +main +major +make +mammal +man +manage +mandate +mango +mansion +manual +maple +marble +march +margin +marine +market +marriage +mask +mass +master +match +material +math +matrix +matter +maximum +maze +meadow +mean +measure +meat +mechanic +medal +media +melody +melt +member +memory +mention +menu +mercy +merge +merit +merry +mesh +message +metal +method +middle +midnight +milk +million +mimic +mind +minimum +minor +minute +miracle +mirror +misery +miss +mistake +mix +mixed +mixture +mobile +model +modify +mom +moment +monitor +monkey +monster +month +moon +moral +more +morning +mosquito +mother +motion +motor +mountain +mouse +move +movie +much +muffin +mule +multiply +muscle +museum +mushroom +music +must +mutual +myself +mystery +myth +naive +name +napkin +narrow +nasty +nation +nature +near +neck +need +negative +neglect +neither +nephew +nerve +nest +net +network +neutral +never +news +next +nice +night +noble +noise +nominee +noodle +normal +north +nose +notable +note +nothing +notice +novel +now +nuclear +number +nurse +nut +oak +obey +object +oblige +obscure +observe +obtain +obvious +occur +ocean +october +odor +off +offer +office +often +oil +okay +old +olive +olympic +omit +once +one +onion +online +only +open +opera +opinion +oppose +option +orange +orbit +orchard +order +ordinary +organ +orient +original +orphan +ostrich +other +outdoor +outer +output +outside +oval +oven +over +own +owner +oxygen +oyster +ozone +pact +paddle +page +pair +palace +palm +panda +panel +panic +panther +paper +parade +parent +park +parrot +party +pass +patch +path +patient +patrol +pattern +pause +pave +payment +peace +peanut +pear +peasant +pelican +pen +penalty +pencil +people +pepper +perfect +permit +person +pet +phone +photo +phrase +physical +piano +picnic +picture +piece +pig +pigeon +pill +pilot +pink +pioneer +pipe +pistol +pitch +pizza +place +planet +plastic +plate +play +please +pledge +pluck +plug +plunge +poem +poet +point +polar +pole +police +pond +pony +pool +popular +portion +position +possible +post +potato +pottery +poverty +powder +power +practice +praise +predict +prefer +prepare +present +pretty +prevent +price +pride +primary +print +priority +prison +private +prize +problem +process +produce +profit +program +project +promote +proof +property +prosper +protect +proud +provide +public +pudding +pull +pulp +pulse +pumpkin +punch +pupil +puppy +purchase +purity +purpose +purse +push +put +puzzle +pyramid +quality +quantum +quarter +question +quick +quit +quiz +quote +rabbit +raccoon +race +rack +radar +radio +rail +rain +raise +rally +ramp +ranch +random +range +rapid +rare +rate +rather +raven +raw +razor +ready +real +reason +rebel +rebuild +recall +receive +recipe +record +recycle +reduce +reflect +reform +refuse +region +regret +regular +reject +relax +release +relief +rely +remain +remember +remind +remove +render +renew +rent +reopen +repair +repeat +replace +report +require +rescue +resemble +resist +resource +response +result +retire +retreat +return +reunion +reveal +review +reward +rhythm +rib +ribbon +rice +rich +ride +ridge +rifle +right +rigid +ring +riot +ripple +risk +ritual +rival +river +road +roast +robot +robust +rocket +romance +roof +rookie +room +rose +rotate +rough +round +route +royal +rubber +rude +rug +rule +run +runway +rural +sad +saddle +sadness +safe +sail +salad +salmon +salon +salt +salute +same +sample +sand +satisfy +satoshi +sauce +sausage +save +say +scale +scan +scare +scatter +scene +scheme +school +science +scissors +scorpion +scout +scrap +screen +script +scrub +sea +search +season +seat +second +secret +section +security +seed +seek +segment +select +sell +seminar +senior +sense +sentence +series +service +session +settle +setup +seven +shadow +shaft +shallow +share +shed +shell +sheriff +shield +shift +shine +ship +shiver +shock +shoe +shoot +shop +short +shoulder +shove +shrimp +shrug +shuffle +shy +sibling +sick +side +siege +sight +sign +silent +silk +silly +silver +similar +simple +since +sing +siren +sister +situate +six +size +skate +sketch +ski +skill +skin +skirt +skull +slab +slam +sleep +slender +slice +slide +slight +slim +slogan +slot +slow +slush +small +smart +smile +smoke +smooth +snack +snake +snap +sniff +snow +soap +soccer +social +sock +soda +soft +solar +soldier +solid +solution +solve +someone +song +soon +sorry +sort +soul +sound +soup +source +south +space +spare +spatial +spawn +speak +special +speed +spell +spend +sphere +spice +spider +spike +spin +spirit +split +spoil +sponsor +spoon +sport +spot +spray +spread +spring +spy +square +squeeze +squirrel +stable +stadium +staff +stage +stairs +stamp +stand +start +state +stay +steak +steel +stem +step +stereo +stick +still +sting +stock +stomach +stone +stool +story +stove +strategy +street +strike +strong +struggle +student +stuff +stumble +style +subject +submit +subway +success +such +sudden +suffer +sugar +suggest +suit +summer +sun +sunny +sunset +super +supply +supreme +sure +surface +surge +surprise +surround +survey +suspect +sustain +swallow +swamp +swap +swarm +swear +sweet +swift +swim +swing +switch +sword +symbol +symptom +syrup +system +table +tackle +tag +tail +talent +talk +tank +tape +target +task +taste +tattoo +taxi +teach +team +tell +ten +tenant +tennis +tent +term +test +text +thank +that +theme +then +theory +there +they +thing +this +thought +three +thrive +throw +thumb +thunder +ticket +tide +tiger +tilt +timber +time +tiny +tip +tired +tissue +title +toast +tobacco +today +toddler +toe +together +toilet +token +tomato +tomorrow +tone +tongue +tonight +tool +tooth +top +topic +topple +torch +tornado +tortoise +toss +total +tourist +toward +tower +town +toy +track +trade +traffic +tragic +train +transfer +trap +trash +travel +tray +treat +tree +trend +trial +tribe +trick +trigger +trim +trip +trophy +trouble +truck +true +truly +trumpet +trust +truth +try +tube +tuition +tumble +tuna +tunnel +turkey +turn +turtle +twelve +twenty +twice +twin +twist +two +type +typical +ugly +umbrella +unable +unaware +uncle +uncover +under +undo +unfair +unfold +unhappy +uniform +unique +unit +universe +unknown +unlock +until +unusual +unveil +update +upgrade +uphold +upon +upper +upset +urban +urge +usage +use +used +useful +useless +usual +utility +vacant +vacuum +vague +valid +valley +valve +van +vanish +vapor +various +vast +vault +vehicle +velvet +vendor +venture +venue +verb +verify +version +very +vessel +veteran +viable +vibrant +vicious +victory +video +view +village +vintage +violin +virtual +virus +visa +visit +visual +vital +vivid +vocal +voice +void +volcano +volume +vote +voyage +wage +wagon +wait +walk +wall +walnut +want +warfare +warm +warrior +wash +wasp +waste +water +wave +way +wealth +weapon +wear +weasel +weather +web +wedding +weekend +weird +welcome +west +wet +whale +what +wheat +wheel +when +where +whip +whisper +wide +width +wife +wild +will +win +window +wine +wing +wink +winner +winter +wire +wisdom +wise +wish +witness +wolf +woman +wonder +wood +wool +word +work +world +worry +worth +wrap +wreck +wrestle +wrist +write +wrong +yard +year +yellow +you +young +youth +zebra +zero +zone +zoo`.split("\n"); + } +}); + +// node_modules/xrpl/dist/npm/ECDSA.js +var require_ECDSA = __commonJS({ + "node_modules/xrpl/dist/npm/ECDSA.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ECDSA; + (function(ECDSA2) { + ECDSA2["ed25519"] = "ed25519"; + ECDSA2["secp256k1"] = "ecdsa-secp256k1"; + })(ECDSA || (ECDSA = {})); + exports2.default = ECDSA; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/accountDelete.js +var require_accountDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/accountDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAccountDelete = void 0; + var common_1 = require_common4(); + function validateAccountDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + (0, common_1.validateCredentialsList)(tx.CredentialIDs, tx.TransactionType, true, common_1.MAX_AUTHORIZED_CREDENTIALS); + } + exports2.validateAccountDelete = validateAccountDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMBid.js +var require_AMMBid = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMBid.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMBid = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var MAX_AUTH_ACCOUNTS = 4; + function validateAMMBid(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Asset == null) { + throw new errors_1.ValidationError("AMMBid: missing field Asset"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset)) { + throw new errors_1.ValidationError("AMMBid: Asset must be a Currency"); + } + if (tx.Asset2 == null) { + throw new errors_1.ValidationError("AMMBid: missing field Asset2"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset2)) { + throw new errors_1.ValidationError("AMMBid: Asset2 must be a Currency"); + } + if (tx.BidMin != null && !(0, common_1.isAmount)(tx.BidMin)) { + throw new errors_1.ValidationError("AMMBid: BidMin must be an Amount"); + } + if (tx.BidMax != null && !(0, common_1.isAmount)(tx.BidMax)) { + throw new errors_1.ValidationError("AMMBid: BidMax must be an Amount"); + } + if (tx.AuthAccounts != null) { + if (!(0, common_1.isArray)(tx.AuthAccounts)) { + throw new errors_1.ValidationError(`AMMBid: AuthAccounts must be an AuthAccount array`); + } + if (tx.AuthAccounts.length > MAX_AUTH_ACCOUNTS) { + throw new errors_1.ValidationError(`AMMBid: AuthAccounts length must not be greater than ${MAX_AUTH_ACCOUNTS}`); + } + validateAuthAccounts(tx.Account, tx.AuthAccounts); + } + } + exports2.validateAMMBid = validateAMMBid; + function validateAuthAccounts(senderAddress, authAccounts) { + for (const authAccount of authAccounts) { + if (!(0, common_1.isRecord)(authAccount)) { + throw new errors_1.ValidationError(`AMMBid: invalid AuthAccounts`); + } + if (!(0, common_1.isRecord)(authAccount.AuthAccount)) { + throw new errors_1.ValidationError(`AMMBid: invalid AuthAccounts`); + } + if (authAccount.AuthAccount.Account == null) { + throw new errors_1.ValidationError(`AMMBid: invalid AuthAccounts`); + } + if (typeof authAccount.AuthAccount.Account !== "string") { + throw new errors_1.ValidationError(`AMMBid: invalid AuthAccounts`); + } + if (authAccount.AuthAccount.Account === senderAddress) { + throw new errors_1.ValidationError(`AMMBid: AuthAccounts must not include sender's address`); + } + } + return true; + } + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMCreate.js +var require_AMMCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMCreate = exports2.AMM_MAX_TRADING_FEE = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + exports2.AMM_MAX_TRADING_FEE = 1e3; + function validateAMMCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Amount == null) { + throw new errors_1.ValidationError("AMMCreate: missing field Amount"); + } + if (!(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("AMMCreate: Amount must be an Amount"); + } + if (tx.Amount2 == null) { + throw new errors_1.ValidationError("AMMCreate: missing field Amount2"); + } + if (!(0, common_1.isAmount)(tx.Amount2)) { + throw new errors_1.ValidationError("AMMCreate: Amount2 must be an Amount"); + } + if (tx.TradingFee == null) { + throw new errors_1.ValidationError("AMMCreate: missing field TradingFee"); + } + if (typeof tx.TradingFee !== "number") { + throw new errors_1.ValidationError("AMMCreate: TradingFee must be a number"); + } + if (tx.TradingFee < 0 || tx.TradingFee > exports2.AMM_MAX_TRADING_FEE) { + throw new errors_1.ValidationError(`AMMCreate: TradingFee must be between 0 and ${exports2.AMM_MAX_TRADING_FEE}`); + } + } + exports2.validateAMMCreate = validateAMMCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMDelete.js +var require_AMMDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMDelete = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateAMMDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Asset == null) { + throw new errors_1.ValidationError("AMMDelete: missing field Asset"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset)) { + throw new errors_1.ValidationError("AMMDelete: Asset must be a Currency"); + } + if (tx.Asset2 == null) { + throw new errors_1.ValidationError("AMMDelete: missing field Asset2"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset2)) { + throw new errors_1.ValidationError("AMMDelete: Asset2 must be a Currency"); + } + } + exports2.validateAMMDelete = validateAMMDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/AMMVote.js +var require_AMMVote = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/AMMVote.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateAMMVote = void 0; + var errors_1 = require_errors8(); + var AMMCreate_1 = require_AMMCreate(); + var common_1 = require_common4(); + function validateAMMVote(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Asset == null) { + throw new errors_1.ValidationError("AMMVote: missing field Asset"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset)) { + throw new errors_1.ValidationError("AMMVote: Asset must be a Currency"); + } + if (tx.Asset2 == null) { + throw new errors_1.ValidationError("AMMVote: missing field Asset2"); + } + if (!(0, common_1.isIssuedCurrency)(tx.Asset2)) { + throw new errors_1.ValidationError("AMMVote: Asset2 must be a Currency"); + } + if (tx.TradingFee == null) { + throw new errors_1.ValidationError("AMMVote: missing field TradingFee"); + } + if (typeof tx.TradingFee !== "number") { + throw new errors_1.ValidationError("AMMVote: TradingFee must be a number"); + } + if (tx.TradingFee < 0 || tx.TradingFee > AMMCreate_1.AMM_MAX_TRADING_FEE) { + throw new errors_1.ValidationError(`AMMVote: TradingFee must be between 0 and ${AMMCreate_1.AMM_MAX_TRADING_FEE}`); + } + } + exports2.validateAMMVote = validateAMMVote; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/checkCancel.js +var require_checkCancel = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/checkCancel.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCheckCancel = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateCheckCancel(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.CheckID !== void 0 && typeof tx.CheckID !== "string") { + throw new errors_1.ValidationError("CheckCancel: invalid CheckID"); + } + } + exports2.validateCheckCancel = validateCheckCancel; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/checkCash.js +var require_checkCash = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/checkCash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCheckCash = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateCheckCash(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Amount == null && tx.DeliverMin == null) { + throw new errors_1.ValidationError("CheckCash: must have either Amount or DeliverMin"); + } + if (tx.Amount != null && tx.DeliverMin != null) { + throw new errors_1.ValidationError("CheckCash: cannot have both Amount and DeliverMin"); + } + if (tx.Amount != null && tx.Amount !== void 0 && !(0, common_1.isAmount)(tx.Amount)) { + throw new errors_1.ValidationError("CheckCash: invalid Amount"); + } + if (tx.DeliverMin != null && tx.DeliverMin !== void 0 && !(0, common_1.isAmount)(tx.DeliverMin)) { + throw new errors_1.ValidationError("CheckCash: invalid DeliverMin"); + } + if (tx.CheckID !== void 0 && typeof tx.CheckID !== "string") { + throw new errors_1.ValidationError("CheckCash: invalid CheckID"); + } + } + exports2.validateCheckCash = validateCheckCash; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/checkCreate.js +var require_checkCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/checkCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCheckCreate = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateCheckCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.SendMax === void 0) { + throw new errors_1.ValidationError("CheckCreate: missing field SendMax"); + } + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + if (typeof tx.SendMax !== "string" && !(0, common_1.isIssuedCurrencyAmount)(tx.SendMax)) { + throw new errors_1.ValidationError("CheckCreate: invalid SendMax"); + } + if (tx.Expiration !== void 0 && typeof tx.Expiration !== "number") { + throw new errors_1.ValidationError("CheckCreate: invalid Expiration"); + } + if (tx.InvoiceID !== void 0 && typeof tx.InvoiceID !== "string") { + throw new errors_1.ValidationError("CheckCreate: invalid InvoiceID"); + } + } + exports2.validateCheckCreate = validateCheckCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/clawback.js +var require_clawback = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/clawback.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateClawback = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateClawback(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isClawbackAmount); + (0, common_1.validateOptionalField)(tx, "Holder", common_1.isAccount); + if (!(0, common_1.isIssuedCurrencyAmount)(tx.Amount) && !(0, common_1.isMPTAmount)(tx.Amount)) { + throw new errors_1.ValidationError("Clawback: invalid Amount"); + } + if ((0, common_1.isIssuedCurrencyAmount)(tx.Amount) && tx.Account === tx.Amount.issuer) { + throw new errors_1.ValidationError("Clawback: invalid holder Account"); + } + if ((0, common_1.isMPTAmount)(tx.Amount) && tx.Account === tx.Holder) { + throw new errors_1.ValidationError("Clawback: invalid holder Account"); + } + if ((0, common_1.isIssuedCurrencyAmount)(tx.Amount) && tx.Holder) { + throw new errors_1.ValidationError("Clawback: cannot have Holder for currency"); + } + if ((0, common_1.isMPTAmount)(tx.Amount) && !tx.Holder) { + throw new errors_1.ValidationError("Clawback: missing Holder"); + } + } + exports2.validateClawback = validateClawback; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/CredentialAccept.js +var require_CredentialAccept = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/CredentialAccept.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCredentialAccept = void 0; + var common_1 = require_common4(); + function validateCredentialAccept(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Account", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Issuer", common_1.isString); + (0, common_1.validateCredentialType)(tx); + } + exports2.validateCredentialAccept = validateCredentialAccept; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/CredentialCreate.js +var require_CredentialCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/CredentialCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCredentialCreate = void 0; + var utils_1 = require_utils10(); + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var MAX_URI_LENGTH = 256; + function validateCredentialCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Account", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Subject", common_1.isString); + (0, common_1.validateCredentialType)(tx); + (0, common_1.validateOptionalField)(tx, "Expiration", common_1.isNumber); + validateURI(tx.URI); + } + exports2.validateCredentialCreate = validateCredentialCreate; + function validateURI(URI) { + if (URI === void 0) { + return; + } + if (typeof URI !== "string") { + throw new errors_1.ValidationError("CredentialCreate: invalid field URI"); + } + if (URI.length === 0) { + throw new errors_1.ValidationError("CredentialCreate: URI cannot be an empty string"); + } else if (URI.length > MAX_URI_LENGTH) { + throw new errors_1.ValidationError(`CredentialCreate: URI length must be <= ${MAX_URI_LENGTH}`); + } + if (!utils_1.HEX_REGEX.test(URI)) { + throw new errors_1.ValidationError("CredentialCreate: URI must be encoded in hex"); + } + } + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/CredentialDelete.js +var require_CredentialDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/CredentialDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateCredentialDelete = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateCredentialDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (!tx.Subject && !tx.Issuer) { + throw new errors_1.ValidationError("CredentialDelete: either `Issuer` or `Subject` must be provided"); + } + (0, common_1.validateRequiredField)(tx, "Account", common_1.isString); + (0, common_1.validateCredentialType)(tx); + (0, common_1.validateOptionalField)(tx, "Subject", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Issuer", common_1.isString); + } + exports2.validateCredentialDelete = validateCredentialDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/delegateSet.js +var require_delegateSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/delegateSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateDelegateSet = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var PERMISSIONS_MAX_LENGTH = 10; + var NON_DELEGABLE_TRANSACTIONS = /* @__PURE__ */ new Set([ + "AccountSet", + "SetRegularKey", + "SignerListSet", + "DelegateSet", + "AccountDelete", + "Batch", + "EnableAmendment", + "SetFee", + "UNLModify" + ]); + function validateDelegateSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Authorize", common_1.isAccount); + if (tx.Authorize === tx.Account) { + throw new errors_1.ValidationError("DelegateSet: Authorize and Account must be different."); + } + (0, common_1.validateRequiredField)(tx, "Permissions", Array.isArray); + const permissions = tx.Permissions; + if (permissions.length > PERMISSIONS_MAX_LENGTH) { + throw new errors_1.ValidationError(`DelegateSet: Permissions array length cannot be greater than ${PERMISSIONS_MAX_LENGTH}.`); + } + const permissionValueSet = /* @__PURE__ */ new Set(); + permissions.forEach((permission) => { + if (permission == null || Object.keys(permission).length !== 1 || permission.Permission == null || Object.keys(permission.Permission).length !== 1) { + throw new errors_1.ValidationError("DelegateSet: Permissions array element is malformed"); + } + const permissionValue = permission.Permission.PermissionValue; + if (permissionValue == null) { + throw new errors_1.ValidationError("DelegateSet: PermissionValue must be defined"); + } + if (typeof permissionValue !== "string") { + throw new errors_1.ValidationError("DelegateSet: PermissionValue must be a string"); + } + if (NON_DELEGABLE_TRANSACTIONS.has(permissionValue)) { + throw new errors_1.ValidationError(`DelegateSet: PermissionValue contains a non-delegatable transaction ${permissionValue}`); + } + permissionValueSet.add(permissionValue); + }); + if (permissions.length !== permissionValueSet.size) { + throw new errors_1.ValidationError("DelegateSet: Permissions array cannot contain duplicate values"); + } + } + exports2.validateDelegateSet = validateDelegateSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/depositPreauth.js +var require_depositPreauth = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/depositPreauth.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateDepositPreauth = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateDepositPreauth(tx) { + (0, common_1.validateBaseTransaction)(tx); + validateSingleAuthorizationFieldProvided(tx); + if (tx.Authorize !== void 0) { + if (typeof tx.Authorize !== "string") { + throw new errors_1.ValidationError("DepositPreauth: Authorize must be a string"); + } + if (tx.Account === tx.Authorize) { + throw new errors_1.ValidationError("DepositPreauth: Account can't preauthorize its own address"); + } + } else if (tx.Unauthorize !== void 0) { + if (typeof tx.Unauthorize !== "string") { + throw new errors_1.ValidationError("DepositPreauth: Unauthorize must be a string"); + } + if (tx.Account === tx.Unauthorize) { + throw new errors_1.ValidationError("DepositPreauth: Account can't unauthorize its own address"); + } + } else if (tx.AuthorizeCredentials !== void 0) { + (0, common_1.validateCredentialsList)(tx.AuthorizeCredentials, tx.TransactionType, false, common_1.MAX_AUTHORIZED_CREDENTIALS); + } else if (tx.UnauthorizeCredentials !== void 0) { + (0, common_1.validateCredentialsList)(tx.UnauthorizeCredentials, tx.TransactionType, false, common_1.MAX_AUTHORIZED_CREDENTIALS); + } + } + exports2.validateDepositPreauth = validateDepositPreauth; + function validateSingleAuthorizationFieldProvided(tx) { + const fields = [ + "Authorize", + "Unauthorize", + "AuthorizeCredentials", + "UnauthorizeCredentials" + ]; + const countProvided = fields.filter((key) => tx[key] !== void 0).length; + if (countProvided !== 1) { + throw new errors_1.ValidationError("DepositPreauth: Requires exactly one field of the following: Authorize, Unauthorize, AuthorizeCredentials, UnauthorizeCredentials."); + } + } + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/DIDDelete.js +var require_DIDDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/DIDDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateDIDDelete = void 0; + var common_1 = require_common4(); + function validateDIDDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + } + exports2.validateDIDDelete = validateDIDDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/DIDSet.js +var require_DIDSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/DIDSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateDIDSet = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateDIDSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateOptionalField)(tx, "Data", common_1.isString); + (0, common_1.validateOptionalField)(tx, "DIDDocument", common_1.isString); + (0, common_1.validateOptionalField)(tx, "URI", common_1.isString); + if (tx.Data === void 0 && tx.DIDDocument === void 0 && tx.URI === void 0) { + throw new errors_1.ValidationError("DIDSet: Must have at least one of `Data`, `DIDDocument`, and `URI`"); + } + } + exports2.validateDIDSet = validateDIDSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/escrowCancel.js +var require_escrowCancel = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/escrowCancel.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateEscrowCancel = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateEscrowCancel(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Owner", common_1.isAccount); + if (tx.OfferSequence == null) { + throw new errors_1.ValidationError("EscrowCancel: missing OfferSequence"); + } + if (typeof tx.OfferSequence !== "number" && typeof tx.OfferSequence !== "string" || Number.isNaN(Number(tx.OfferSequence))) { + throw new errors_1.ValidationError("EscrowCancel: OfferSequence must be a number"); + } + } + exports2.validateEscrowCancel = validateEscrowCancel; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/escrowCreate.js +var require_escrowCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/escrowCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateEscrowCreate = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateEscrowCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + if (tx.CancelAfter === void 0 && tx.FinishAfter === void 0) { + throw new errors_1.ValidationError("EscrowCreate: Either CancelAfter or FinishAfter must be specified"); + } + if (tx.FinishAfter === void 0 && tx.Condition === void 0) { + throw new errors_1.ValidationError("EscrowCreate: Either Condition or FinishAfter must be specified"); + } + if (tx.CancelAfter !== void 0 && typeof tx.CancelAfter !== "number") { + throw new errors_1.ValidationError("EscrowCreate: CancelAfter must be a number"); + } + if (tx.FinishAfter !== void 0 && typeof tx.FinishAfter !== "number") { + throw new errors_1.ValidationError("EscrowCreate: FinishAfter must be a number"); + } + if (tx.Condition !== void 0 && typeof tx.Condition !== "string") { + throw new errors_1.ValidationError("EscrowCreate: Condition must be a string"); + } + } + exports2.validateEscrowCreate = validateEscrowCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/escrowFinish.js +var require_escrowFinish = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/escrowFinish.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateEscrowFinish = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateEscrowFinish(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Owner", common_1.isAccount); + (0, common_1.validateCredentialsList)(tx.CredentialIDs, tx.TransactionType, true, common_1.MAX_AUTHORIZED_CREDENTIALS); + if (tx.OfferSequence == null) { + throw new errors_1.ValidationError("EscrowFinish: missing field OfferSequence"); + } + if (typeof tx.OfferSequence !== "number" && typeof tx.OfferSequence !== "string" || Number.isNaN(Number(tx.OfferSequence))) { + throw new errors_1.ValidationError("EscrowFinish: OfferSequence must be a number"); + } + if (tx.Condition !== void 0 && typeof tx.Condition !== "string") { + throw new errors_1.ValidationError("EscrowFinish: Condition must be a string"); + } + if (tx.Fulfillment !== void 0 && typeof tx.Fulfillment !== "string") { + throw new errors_1.ValidationError("EscrowFinish: Fulfillment must be a string"); + } + } + exports2.validateEscrowFinish = validateEscrowFinish; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceDestroy.js +var require_MPTokenIssuanceDestroy = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/MPTokenIssuanceDestroy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateMPTokenIssuanceDestroy = void 0; + var common_1 = require_common4(); + function validateMPTokenIssuanceDestroy(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "MPTokenIssuanceID", common_1.isString); + } + exports2.validateMPTokenIssuanceDestroy = validateMPTokenIssuanceDestroy; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenAcceptOffer.js +var require_NFTokenAcceptOffer = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenAcceptOffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenAcceptOffer = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateNFTokenBrokerFee(tx) { + const value = (0, common_1.parseAmountValue)(tx.NFTokenBrokerFee); + if (Number.isNaN(value)) { + throw new errors_1.ValidationError("NFTokenAcceptOffer: invalid NFTokenBrokerFee"); + } + if (value <= 0) { + throw new errors_1.ValidationError("NFTokenAcceptOffer: NFTokenBrokerFee must be greater than 0; omit if there is no fee"); + } + if (tx.NFTokenSellOffer == null || tx.NFTokenBuyOffer == null) { + throw new errors_1.ValidationError("NFTokenAcceptOffer: both NFTokenSellOffer and NFTokenBuyOffer must be set if using brokered mode"); + } + } + function validateNFTokenAcceptOffer(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.NFTokenBrokerFee != null) { + validateNFTokenBrokerFee(tx); + } + if (tx.NFTokenSellOffer == null && tx.NFTokenBuyOffer == null) { + throw new errors_1.ValidationError("NFTokenAcceptOffer: must set either NFTokenSellOffer or NFTokenBuyOffer"); + } + } + exports2.validateNFTokenAcceptOffer = validateNFTokenAcceptOffer; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenBurn.js +var require_NFTokenBurn = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenBurn.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenBurn = void 0; + var common_1 = require_common4(); + function validateNFTokenBurn(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "NFTokenID", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Owner", common_1.isAccount); + } + exports2.validateNFTokenBurn = validateNFTokenBurn; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenCancelOffer.js +var require_NFTokenCancelOffer = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenCancelOffer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenCancelOffer = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateNFTokenCancelOffer(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (!(0, common_1.isArray)(tx.NFTokenOffers)) { + throw new errors_1.ValidationError("NFTokenCancelOffer: missing field NFTokenOffers"); + } + if (tx.NFTokenOffers.length < 1) { + throw new errors_1.ValidationError("NFTokenCancelOffer: empty field NFTokenOffers"); + } + } + exports2.validateNFTokenCancelOffer = validateNFTokenCancelOffer; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/NFTokenModify.js +var require_NFTokenModify = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/NFTokenModify.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateNFTokenModify = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + function validateNFTokenModify(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "NFTokenID", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Owner", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "URI", common_1.isString); + if (tx.URI !== void 0 && typeof tx.URI === "string") { + if (tx.URI === "") { + throw new errors_1.ValidationError("NFTokenModify: URI must not be empty string"); + } + if (!(0, utils_1.isHex)(tx.URI)) { + throw new errors_1.ValidationError("NFTokenModify: URI must be in hex format"); + } + } + } + exports2.validateNFTokenModify = validateNFTokenModify; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/offerCancel.js +var require_offerCancel = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/offerCancel.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateOfferCancel = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateOfferCancel(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.OfferSequence === void 0) { + throw new errors_1.ValidationError("OfferCancel: missing field OfferSequence"); + } + if (typeof tx.OfferSequence !== "number") { + throw new errors_1.ValidationError("OfferCancel: OfferSequence must be a number"); + } + } + exports2.validateOfferCancel = validateOfferCancel; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/oracleDelete.js +var require_oracleDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/oracleDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateOracleDelete = void 0; + var common_1 = require_common4(); + function validateOracleDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "OracleDocumentID", common_1.isNumber); + } + exports2.validateOracleDelete = validateOracleDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/oracleSet.js +var require_oracleSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/oracleSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateOracleSet = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + var PRICE_DATA_SERIES_MAX_LENGTH = 10; + var SCALE_MAX = 10; + var MINIMUM_ASSET_PRICE_LENGTH = 1; + var MAXIMUM_ASSET_PRICE_LENGTH = 16; + function validateOracleSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "OracleDocumentID", common_1.isNumber); + (0, common_1.validateRequiredField)(tx, "LastUpdateTime", common_1.isNumber); + (0, common_1.validateOptionalField)(tx, "Provider", common_1.isString); + (0, common_1.validateOptionalField)(tx, "URI", common_1.isString); + (0, common_1.validateOptionalField)(tx, "AssetClass", common_1.isString); + (0, common_1.validateRequiredField)(tx, "PriceDataSeries", (value) => { + if (!(0, common_1.isArray)(value)) { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must be an array"); + } + if (value.length > PRICE_DATA_SERIES_MAX_LENGTH) { + throw new errors_1.ValidationError(`OracleSet: PriceDataSeries must have at most ${PRICE_DATA_SERIES_MAX_LENGTH} PriceData objects`); + } + for (const priceData of value) { + if (!(0, common_1.isRecord)(priceData)) { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must be an array of objects"); + } + const priceDataInner = priceData.PriceData; + if (!(0, common_1.isRecord)(priceDataInner)) { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must have a `PriceData` object"); + } + if (Object.keys(priceData).length !== 1) { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must only have a single PriceData object"); + } + if (priceDataInner.BaseAsset == null || typeof priceDataInner.BaseAsset !== "string") { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must have a `BaseAsset` string"); + } + if (typeof priceDataInner.QuoteAsset !== "string") { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must have a `QuoteAsset` string"); + } + if (priceDataInner.AssetPrice == null !== (priceDataInner.Scale == null)) { + throw new errors_1.ValidationError("OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present"); + } + if ("AssetPrice" in priceDataInner) { + if (!(0, common_1.isNumber)(priceDataInner.AssetPrice)) { + if (typeof priceDataInner.AssetPrice !== "string") { + throw new errors_1.ValidationError("OracleSet: Field AssetPrice must be a string or a number"); + } + if (!(0, utils_1.isHex)(priceDataInner.AssetPrice)) { + throw new errors_1.ValidationError("OracleSet: Field AssetPrice must be a valid hex string"); + } + if (priceDataInner.AssetPrice.length < MINIMUM_ASSET_PRICE_LENGTH || priceDataInner.AssetPrice.length > MAXIMUM_ASSET_PRICE_LENGTH) { + throw new errors_1.ValidationError(`OracleSet: Length of AssetPrice field must be between ${MINIMUM_ASSET_PRICE_LENGTH} and ${MAXIMUM_ASSET_PRICE_LENGTH} characters long`); + } + } + } + if ("Scale" in priceDataInner) { + if (!(0, common_1.isNumber)(priceDataInner.Scale)) { + throw new errors_1.ValidationError("OracleSet: invalid field Scale"); + } + if (priceDataInner.Scale < 0 || priceDataInner.Scale > SCALE_MAX) { + throw new errors_1.ValidationError(`OracleSet: Scale must be in range 0-${SCALE_MAX}`); + } + } + } + return true; + }); + } + exports2.validateOracleSet = validateOracleSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/paymentChannelCreate.js +var require_paymentChannelCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/paymentChannelCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePaymentChannelCreate = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validatePaymentChannelCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Amount === void 0) { + throw new errors_1.ValidationError("PaymentChannelCreate: missing Amount"); + } + if (typeof tx.Amount !== "string") { + throw new errors_1.ValidationError("PaymentChannelCreate: Amount must be a string"); + } + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + if (tx.SettleDelay === void 0) { + throw new errors_1.ValidationError("PaymentChannelCreate: missing SettleDelay"); + } + if (typeof tx.SettleDelay !== "number") { + throw new errors_1.ValidationError("PaymentChannelCreate: SettleDelay must be a number"); + } + if (tx.PublicKey === void 0) { + throw new errors_1.ValidationError("PaymentChannelCreate: missing PublicKey"); + } + if (typeof tx.PublicKey !== "string") { + throw new errors_1.ValidationError("PaymentChannelCreate: PublicKey must be a string"); + } + if (tx.CancelAfter !== void 0 && typeof tx.CancelAfter !== "number") { + throw new errors_1.ValidationError("PaymentChannelCreate: CancelAfter must be a number"); + } + } + exports2.validatePaymentChannelCreate = validatePaymentChannelCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/paymentChannelFund.js +var require_paymentChannelFund = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/paymentChannelFund.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePaymentChannelFund = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validatePaymentChannelFund(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.Channel === void 0) { + throw new errors_1.ValidationError("PaymentChannelFund: missing Channel"); + } + if (typeof tx.Channel !== "string") { + throw new errors_1.ValidationError("PaymentChannelFund: Channel must be a string"); + } + if (tx.Amount === void 0) { + throw new errors_1.ValidationError("PaymentChannelFund: missing Amount"); + } + if (typeof tx.Amount !== "string") { + throw new errors_1.ValidationError("PaymentChannelFund: Amount must be a string"); + } + if (tx.Expiration !== void 0 && typeof tx.Expiration !== "number") { + throw new errors_1.ValidationError("PaymentChannelFund: Expiration must be a number"); + } + } + exports2.validatePaymentChannelFund = validatePaymentChannelFund; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/permissionedDomainDelete.js +var require_permissionedDomainDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/permissionedDomainDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePermissionedDomainDelete = void 0; + var common_1 = require_common4(); + function validatePermissionedDomainDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "DomainID", common_1.isString); + } + exports2.validatePermissionedDomainDelete = validatePermissionedDomainDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/permissionedDomainSet.js +var require_permissionedDomainSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/permissionedDomainSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validatePermissionedDomainSet = void 0; + var common_1 = require_common4(); + var MAX_ACCEPTED_CREDENTIALS = 10; + function validatePermissionedDomainSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateOptionalField)(tx, "DomainID", common_1.isString); + (0, common_1.validateRequiredField)(tx, "AcceptedCredentials", common_1.isArray); + (0, common_1.validateCredentialsList)(tx.AcceptedCredentials, tx.TransactionType, false, MAX_ACCEPTED_CREDENTIALS); + } + exports2.validatePermissionedDomainSet = validatePermissionedDomainSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/setRegularKey.js +var require_setRegularKey = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/setRegularKey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateSetRegularKey = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + function validateSetRegularKey(tx) { + (0, common_1.validateBaseTransaction)(tx); + if (tx.RegularKey !== void 0 && typeof tx.RegularKey !== "string") { + throw new errors_1.ValidationError("SetRegularKey: RegularKey must be a string"); + } + } + exports2.validateSetRegularKey = validateSetRegularKey; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/signerListSet.js +var require_signerListSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/signerListSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateSignerListSet = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var MAX_SIGNERS = 32; + var HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u; + function validateSignerListSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "SignerQuorum", common_1.isNumber); + if (tx.SignerQuorum === 0) { + return; + } + (0, common_1.validateRequiredField)(tx, "SignerEntries", common_1.isArray); + if (tx.SignerEntries.length === 0) { + throw new errors_1.ValidationError("SignerListSet: need at least 1 member in SignerEntries"); + } + if (tx.SignerEntries.length > MAX_SIGNERS) { + throw new errors_1.ValidationError(`SignerListSet: maximum of ${MAX_SIGNERS} members allowed in SignerEntries`); + } + for (const entry of tx.SignerEntries) { + if (!(0, common_1.isRecord)(entry) || !(0, common_1.isRecord)(entry.SignerEntry)) { + throw new errors_1.ValidationError("SignerListSet: SignerEntries must be an array of SignerEntry objects"); + } + const signerEntry = entry.SignerEntry; + const { WalletLocator } = signerEntry; + if (WalletLocator != null && (!(0, common_1.isString)(WalletLocator) || !HEX_WALLET_LOCATOR_REGEX.test(WalletLocator))) { + throw new errors_1.ValidationError(`SignerListSet: WalletLocator in SignerEntry must be a 256-bit (32-byte) hexadecimal value`); + } + } + } + exports2.validateSignerListSet = validateSignerListSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/ticketCreate.js +var require_ticketCreate = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/ticketCreate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateTicketCreate = void 0; + var errors_1 = require_errors8(); + var common_1 = require_common4(); + var MAX_TICKETS = 250; + function validateTicketCreate(tx) { + (0, common_1.validateBaseTransaction)(tx); + const { TicketCount } = tx; + if (TicketCount === void 0) { + throw new errors_1.ValidationError("TicketCreate: missing field TicketCount"); + } + if (typeof TicketCount !== "number") { + throw new errors_1.ValidationError("TicketCreate: TicketCount must be a number"); + } + if (!Number.isInteger(TicketCount) || TicketCount < 1 || TicketCount > MAX_TICKETS) { + throw new errors_1.ValidationError("TicketCreate: TicketCount must be an integer from 1 to 250"); + } + } + exports2.validateTicketCreate = validateTicketCreate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultClawback.js +var require_vaultClawback = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultClawback.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultClawback = void 0; + var common_1 = require_common4(); + function validateVaultClawback(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "VaultID", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Holder", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "Amount", common_1.isClawbackAmount); + } + exports2.validateVaultClawback = validateVaultClawback; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultDelete.js +var require_vaultDelete = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultDelete.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultDelete = void 0; + var common_1 = require_common4(); + function validateVaultDelete(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "VaultID", common_1.isString); + } + exports2.validateVaultDelete = validateVaultDelete; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultDeposit.js +var require_vaultDeposit = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultDeposit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultDeposit = void 0; + var common_1 = require_common4(); + function validateVaultDeposit(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "VaultID", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + } + exports2.validateVaultDeposit = validateVaultDeposit; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultSet.js +var require_vaultSet = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultSet.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultSet = void 0; + var errors_1 = require_errors8(); + var utils_1 = require_utils13(); + var common_1 = require_common4(); + function validateVaultSet(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "VaultID", common_1.isString); + (0, common_1.validateOptionalField)(tx, "Data", common_1.isString); + (0, common_1.validateOptionalField)(tx, "AssetsMaximum", common_1.isXRPLNumber); + (0, common_1.validateOptionalField)(tx, "DomainID", common_1.isString); + if (tx.Data !== void 0) { + const dataHex = tx.Data; + if (!(0, utils_1.isHex)(dataHex)) { + throw new errors_1.ValidationError("VaultSet: Data must be a valid hex string"); + } + const dataByteLength = dataHex.length / 2; + if (dataByteLength > common_1.VAULT_DATA_MAX_BYTE_LENGTH) { + throw new errors_1.ValidationError(`VaultSet: Data exceeds ${common_1.VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`); + } + } + } + exports2.validateVaultSet = validateVaultSet; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/vaultWithdraw.js +var require_vaultWithdraw = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/vaultWithdraw.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateVaultWithdraw = void 0; + var common_1 = require_common4(); + function validateVaultWithdraw(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "VaultID", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + (0, common_1.validateOptionalField)(tx, "Destination", common_1.isAccount); + } + exports2.validateVaultWithdraw = validateVaultWithdraw; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainAccountCreateCommit.js +var require_XChainAccountCreateCommit = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainAccountCreateCommit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainAccountCreateCommit = void 0; + var common_1 = require_common4(); + function validateXChainAccountCreateCommit(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "SignatureReward", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + } + exports2.validateXChainAccountCreateCommit = validateXChainAccountCreateCommit; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainAddAccountCreateAttestation.js +var require_XChainAddAccountCreateAttestation = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainAddAccountCreateAttestation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainAddAccountCreateAttestation = void 0; + var common_1 = require_common4(); + function validateXChainAddAccountCreateAttestation(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "AttestationRewardAccount", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "AttestationSignerAccount", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "OtherChainSource", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "PublicKey", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Signature", common_1.isString); + (0, common_1.validateRequiredField)(tx, "SignatureReward", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "WasLockingChainSend", (inp) => inp === 0 || inp === 1); + (0, common_1.validateRequiredField)(tx, "XChainAccountCreateCount", (inp) => (0, common_1.isNumber)(inp) || (0, common_1.isString)(inp)); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + } + exports2.validateXChainAddAccountCreateAttestation = validateXChainAddAccountCreateAttestation; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainAddClaimAttestation.js +var require_XChainAddClaimAttestation = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainAddClaimAttestation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainAddClaimAttestation = void 0; + var common_1 = require_common4(); + function validateXChainAddClaimAttestation(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "AttestationRewardAccount", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "AttestationSignerAccount", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "OtherChainSource", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "PublicKey", common_1.isString); + (0, common_1.validateRequiredField)(tx, "Signature", common_1.isString); + (0, common_1.validateRequiredField)(tx, "WasLockingChainSend", (inp) => inp === 0 || inp === 1); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "XChainClaimID", (inp) => (0, common_1.isNumber)(inp) || (0, common_1.isString)(inp)); + } + exports2.validateXChainAddClaimAttestation = validateXChainAddClaimAttestation; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainClaim.js +var require_XChainClaim = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainClaim.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainClaim = void 0; + var common_1 = require_common4(); + function validateXChainClaim(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "XChainClaimID", (inp) => (0, common_1.isNumber)(inp) || (0, common_1.isString)(inp)); + (0, common_1.validateRequiredField)(tx, "Destination", common_1.isAccount); + (0, common_1.validateOptionalField)(tx, "DestinationTag", common_1.isNumber); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + } + exports2.validateXChainClaim = validateXChainClaim; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainCommit.js +var require_XChainCommit = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainCommit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainCommit = void 0; + var common_1 = require_common4(); + function validateXChainCommit(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "XChainClaimID", (inp) => (0, common_1.isNumber)(inp) || (0, common_1.isString)(inp)); + (0, common_1.validateOptionalField)(tx, "OtherChainDestination", common_1.isAccount); + (0, common_1.validateRequiredField)(tx, "Amount", common_1.isAmount); + } + exports2.validateXChainCommit = validateXChainCommit; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainCreateBridge.js +var require_XChainCreateBridge = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainCreateBridge.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainCreateBridge = void 0; + var common_1 = require_common4(); + function validateXChainCreateBridge(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "SignatureReward", common_1.isAmount); + (0, common_1.validateOptionalField)(tx, "MinAccountCreateAmount", common_1.isAmount); + } + exports2.validateXChainCreateBridge = validateXChainCreateBridge; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/XChainCreateClaimID.js +var require_XChainCreateClaimID = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/XChainCreateClaimID.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validateXChainCreateClaimID = void 0; + var common_1 = require_common4(); + function validateXChainCreateClaimID(tx) { + (0, common_1.validateBaseTransaction)(tx); + (0, common_1.validateRequiredField)(tx, "XChainBridge", common_1.isXChainBridge); + (0, common_1.validateRequiredField)(tx, "SignatureReward", common_1.isAmount); + (0, common_1.validateRequiredField)(tx, "OtherChainSource", common_1.isAccount); + } + exports2.validateXChainCreateClaimID = validateXChainCreateClaimID; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/transaction.js +var require_transaction = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.validate = void 0; + var errors_1 = require_errors8(); + var flags_1 = require_flags(); + var accountDelete_1 = require_accountDelete(); + var accountSet_1 = require_accountSet(); + var AMMBid_1 = require_AMMBid(); + var AMMClawback_1 = require_AMMClawback(); + var AMMCreate_1 = require_AMMCreate(); + var AMMDelete_1 = require_AMMDelete(); + var AMMDeposit_1 = require_AMMDeposit(); + var AMMVote_1 = require_AMMVote(); + var AMMWithdraw_1 = require_AMMWithdraw(); + var batch_1 = require_batch(); + var checkCancel_1 = require_checkCancel(); + var checkCash_1 = require_checkCash(); + var checkCreate_1 = require_checkCreate(); + var clawback_1 = require_clawback(); + var common_1 = require_common4(); + var CredentialAccept_1 = require_CredentialAccept(); + var CredentialCreate_1 = require_CredentialCreate(); + var CredentialDelete_1 = require_CredentialDelete(); + var delegateSet_1 = require_delegateSet(); + var depositPreauth_1 = require_depositPreauth(); + var DIDDelete_1 = require_DIDDelete(); + var DIDSet_1 = require_DIDSet(); + var escrowCancel_1 = require_escrowCancel(); + var escrowCreate_1 = require_escrowCreate(); + var escrowFinish_1 = require_escrowFinish(); + var MPTokenAuthorize_1 = require_MPTokenAuthorize(); + var MPTokenIssuanceCreate_1 = require_MPTokenIssuanceCreate(); + var MPTokenIssuanceDestroy_1 = require_MPTokenIssuanceDestroy(); + var MPTokenIssuanceSet_1 = require_MPTokenIssuanceSet(); + var NFTokenAcceptOffer_1 = require_NFTokenAcceptOffer(); + var NFTokenBurn_1 = require_NFTokenBurn(); + var NFTokenCancelOffer_1 = require_NFTokenCancelOffer(); + var NFTokenCreateOffer_1 = require_NFTokenCreateOffer(); + var NFTokenMint_1 = require_NFTokenMint(); + var NFTokenModify_1 = require_NFTokenModify(); + var offerCancel_1 = require_offerCancel(); + var offerCreate_1 = require_offerCreate(); + var oracleDelete_1 = require_oracleDelete(); + var oracleSet_1 = require_oracleSet(); + var payment_1 = require_payment(); + var paymentChannelClaim_1 = require_paymentChannelClaim(); + var paymentChannelCreate_1 = require_paymentChannelCreate(); + var paymentChannelFund_1 = require_paymentChannelFund(); + var permissionedDomainDelete_1 = require_permissionedDomainDelete(); + var permissionedDomainSet_1 = require_permissionedDomainSet(); + var setRegularKey_1 = require_setRegularKey(); + var signerListSet_1 = require_signerListSet(); + var ticketCreate_1 = require_ticketCreate(); + var trustSet_1 = require_trustSet(); + var vaultClawback_1 = require_vaultClawback(); + var vaultCreate_1 = require_vaultCreate(); + var vaultDelete_1 = require_vaultDelete(); + var vaultDeposit_1 = require_vaultDeposit(); + var vaultSet_1 = require_vaultSet(); + var vaultWithdraw_1 = require_vaultWithdraw(); + var XChainAccountCreateCommit_1 = require_XChainAccountCreateCommit(); + var XChainAddAccountCreateAttestation_1 = require_XChainAddAccountCreateAttestation(); + var XChainAddClaimAttestation_1 = require_XChainAddClaimAttestation(); + var XChainClaim_1 = require_XChainClaim(); + var XChainCommit_1 = require_XChainCommit(); + var XChainCreateBridge_1 = require_XChainCreateBridge(); + var XChainCreateClaimID_1 = require_XChainCreateClaimID(); + var XChainModifyBridge_1 = require_XChainModifyBridge(); + function validate(transaction) { + const tx = Object.assign({}, transaction); + (0, common_1.validateBaseTransaction)(tx); + Object.keys(tx).forEach((key) => { + const standard_currency_code_len = 3; + const value = tx[key]; + if (value && (0, common_1.isIssuedCurrencyAmount)(value)) { + const txCurrency = value.currency; + if (txCurrency.length === standard_currency_code_len && txCurrency.toUpperCase() === "XRP") { + throw new errors_1.ValidationError(`Cannot have an issued currency with a similar standard code to XRP (received '${txCurrency}'). XRP is not an issued currency.`); + } + } + }); + tx.Flags = (0, flags_1.convertTxFlagsToNumber)(tx); + switch (tx.TransactionType) { + case "AMMBid": + (0, AMMBid_1.validateAMMBid)(tx); + break; + case "AMMClawback": + (0, AMMClawback_1.validateAMMClawback)(tx); + break; + case "AMMCreate": + (0, AMMCreate_1.validateAMMCreate)(tx); + break; + case "AMMDelete": + (0, AMMDelete_1.validateAMMDelete)(tx); + break; + case "AMMDeposit": + (0, AMMDeposit_1.validateAMMDeposit)(tx); + break; + case "AMMVote": + (0, AMMVote_1.validateAMMVote)(tx); + break; + case "AMMWithdraw": + (0, AMMWithdraw_1.validateAMMWithdraw)(tx); + break; + case "AccountDelete": + (0, accountDelete_1.validateAccountDelete)(tx); + break; + case "AccountSet": + (0, accountSet_1.validateAccountSet)(tx); + break; + case "Batch": + (0, batch_1.validateBatch)(tx); + tx.RawTransactions.forEach((innerTx) => { + validate(innerTx.RawTransaction); + }); + break; + case "CheckCancel": + (0, checkCancel_1.validateCheckCancel)(tx); + break; + case "CheckCash": + (0, checkCash_1.validateCheckCash)(tx); + break; + case "CheckCreate": + (0, checkCreate_1.validateCheckCreate)(tx); + break; + case "Clawback": + (0, clawback_1.validateClawback)(tx); + break; + case "CredentialAccept": + (0, CredentialAccept_1.validateCredentialAccept)(tx); + break; + case "CredentialCreate": + (0, CredentialCreate_1.validateCredentialCreate)(tx); + break; + case "CredentialDelete": + (0, CredentialDelete_1.validateCredentialDelete)(tx); + break; + case "DIDDelete": + (0, DIDDelete_1.validateDIDDelete)(tx); + break; + case "DIDSet": + (0, DIDSet_1.validateDIDSet)(tx); + break; + case "DelegateSet": + (0, delegateSet_1.validateDelegateSet)(tx); + break; + case "DepositPreauth": + (0, depositPreauth_1.validateDepositPreauth)(tx); + break; + case "EscrowCancel": + (0, escrowCancel_1.validateEscrowCancel)(tx); + break; + case "EscrowCreate": + (0, escrowCreate_1.validateEscrowCreate)(tx); + break; + case "EscrowFinish": + (0, escrowFinish_1.validateEscrowFinish)(tx); + break; + case "MPTokenAuthorize": + (0, MPTokenAuthorize_1.validateMPTokenAuthorize)(tx); + break; + case "MPTokenIssuanceCreate": + (0, MPTokenIssuanceCreate_1.validateMPTokenIssuanceCreate)(tx); + break; + case "MPTokenIssuanceDestroy": + (0, MPTokenIssuanceDestroy_1.validateMPTokenIssuanceDestroy)(tx); + break; + case "MPTokenIssuanceSet": + (0, MPTokenIssuanceSet_1.validateMPTokenIssuanceSet)(tx); + break; + case "NFTokenAcceptOffer": + (0, NFTokenAcceptOffer_1.validateNFTokenAcceptOffer)(tx); + break; + case "NFTokenBurn": + (0, NFTokenBurn_1.validateNFTokenBurn)(tx); + break; + case "NFTokenCancelOffer": + (0, NFTokenCancelOffer_1.validateNFTokenCancelOffer)(tx); + break; + case "NFTokenCreateOffer": + (0, NFTokenCreateOffer_1.validateNFTokenCreateOffer)(tx); + break; + case "NFTokenMint": + (0, NFTokenMint_1.validateNFTokenMint)(tx); + break; + case "NFTokenModify": + (0, NFTokenModify_1.validateNFTokenModify)(tx); + break; + case "OfferCancel": + (0, offerCancel_1.validateOfferCancel)(tx); + break; + case "OfferCreate": + (0, offerCreate_1.validateOfferCreate)(tx); + break; + case "OracleDelete": + (0, oracleDelete_1.validateOracleDelete)(tx); + break; + case "OracleSet": + (0, oracleSet_1.validateOracleSet)(tx); + break; + case "Payment": + (0, payment_1.validatePayment)(tx); + break; + case "PaymentChannelClaim": + (0, paymentChannelClaim_1.validatePaymentChannelClaim)(tx); + break; + case "PaymentChannelCreate": + (0, paymentChannelCreate_1.validatePaymentChannelCreate)(tx); + break; + case "PaymentChannelFund": + (0, paymentChannelFund_1.validatePaymentChannelFund)(tx); + break; + case "PermissionedDomainSet": + (0, permissionedDomainSet_1.validatePermissionedDomainSet)(tx); + break; + case "PermissionedDomainDelete": + (0, permissionedDomainDelete_1.validatePermissionedDomainDelete)(tx); + break; + case "SetRegularKey": + (0, setRegularKey_1.validateSetRegularKey)(tx); + break; + case "SignerListSet": + (0, signerListSet_1.validateSignerListSet)(tx); + break; + case "TicketCreate": + (0, ticketCreate_1.validateTicketCreate)(tx); + break; + case "TrustSet": + (0, trustSet_1.validateTrustSet)(tx); + break; + case "VaultClawback": + (0, vaultClawback_1.validateVaultClawback)(tx); + break; + case "VaultCreate": + (0, vaultCreate_1.validateVaultCreate)(tx); + break; + case "VaultDelete": + (0, vaultDelete_1.validateVaultDelete)(tx); + break; + case "VaultDeposit": + (0, vaultDeposit_1.validateVaultDeposit)(tx); + break; + case "VaultSet": + (0, vaultSet_1.validateVaultSet)(tx); + break; + case "VaultWithdraw": + (0, vaultWithdraw_1.validateVaultWithdraw)(tx); + break; + case "XChainAccountCreateCommit": + (0, XChainAccountCreateCommit_1.validateXChainAccountCreateCommit)(tx); + break; + case "XChainAddAccountCreateAttestation": + (0, XChainAddAccountCreateAttestation_1.validateXChainAddAccountCreateAttestation)(tx); + break; + case "XChainAddClaimAttestation": + (0, XChainAddClaimAttestation_1.validateXChainAddClaimAttestation)(tx); + break; + case "XChainClaim": + (0, XChainClaim_1.validateXChainClaim)(tx); + break; + case "XChainCommit": + (0, XChainCommit_1.validateXChainCommit)(tx); + break; + case "XChainCreateBridge": + (0, XChainCreateBridge_1.validateXChainCreateBridge)(tx); + break; + case "XChainCreateClaimID": + (0, XChainCreateClaimID_1.validateXChainCreateClaimID)(tx); + break; + case "XChainModifyBridge": + (0, XChainModifyBridge_1.validateXChainModifyBridge)(tx); + break; + default: + throw new errors_1.ValidationError(`Invalid field TransactionType: ${tx.TransactionType}`); + } + } + exports2.validate = validate; + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/enableAmendment.js +var require_enableAmendment = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/enableAmendment.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.EnableAmendmentFlags = void 0; + var EnableAmendmentFlags; + (function(EnableAmendmentFlags2) { + EnableAmendmentFlags2[EnableAmendmentFlags2["tfGotMajority"] = 65536] = "tfGotMajority"; + EnableAmendmentFlags2[EnableAmendmentFlags2["tfLostMajority"] = 131072] = "tfLostMajority"; + })(EnableAmendmentFlags || (exports2.EnableAmendmentFlags = EnableAmendmentFlags = {})); + } +}); + +// node_modules/xrpl/dist/npm/models/transactions/index.js +var require_transactions = __commonJS({ + "node_modules/xrpl/dist/npm/models/transactions/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.XChainModifyBridgeFlags = exports2.VaultWithdrawalPolicy = exports2.VaultCreateFlags = exports2.TrustSetFlags = exports2.PaymentChannelClaimFlags = exports2.PaymentFlags = exports2.OfferCreateFlags = exports2.validateNFTokenModify = exports2.NFTokenMintFlags = exports2.NFTokenCreateOfferFlags = exports2.MPTokenIssuanceSetFlags = exports2.MPTokenIssuanceCreateFlags = exports2.MPTokenAuthorizeFlags = exports2.EnableAmendmentFlags = exports2.BatchFlags = exports2.AMMWithdrawFlags = exports2.AMMDepositFlags = exports2.AMMClawbackFlags = exports2.AccountSetTfFlags = exports2.AccountSetAsfFlags = exports2.validate = exports2.isMPTAmount = exports2.GlobalFlags = void 0; + var common_1 = require_common4(); + Object.defineProperty(exports2, "GlobalFlags", { enumerable: true, get: function() { + return common_1.GlobalFlags; + } }); + Object.defineProperty(exports2, "isMPTAmount", { enumerable: true, get: function() { + return common_1.isMPTAmount; + } }); + var transaction_1 = require_transaction(); + Object.defineProperty(exports2, "validate", { enumerable: true, get: function() { + return transaction_1.validate; + } }); + __exportStar2(require_metadata(), exports2); + var accountSet_1 = require_accountSet(); + Object.defineProperty(exports2, "AccountSetAsfFlags", { enumerable: true, get: function() { + return accountSet_1.AccountSetAsfFlags; + } }); + Object.defineProperty(exports2, "AccountSetTfFlags", { enumerable: true, get: function() { + return accountSet_1.AccountSetTfFlags; + } }); + var AMMClawback_1 = require_AMMClawback(); + Object.defineProperty(exports2, "AMMClawbackFlags", { enumerable: true, get: function() { + return AMMClawback_1.AMMClawbackFlags; + } }); + var AMMDeposit_1 = require_AMMDeposit(); + Object.defineProperty(exports2, "AMMDepositFlags", { enumerable: true, get: function() { + return AMMDeposit_1.AMMDepositFlags; + } }); + var AMMWithdraw_1 = require_AMMWithdraw(); + Object.defineProperty(exports2, "AMMWithdrawFlags", { enumerable: true, get: function() { + return AMMWithdraw_1.AMMWithdrawFlags; + } }); + var batch_1 = require_batch(); + Object.defineProperty(exports2, "BatchFlags", { enumerable: true, get: function() { + return batch_1.BatchFlags; + } }); + var enableAmendment_1 = require_enableAmendment(); + Object.defineProperty(exports2, "EnableAmendmentFlags", { enumerable: true, get: function() { + return enableAmendment_1.EnableAmendmentFlags; + } }); + var MPTokenAuthorize_1 = require_MPTokenAuthorize(); + Object.defineProperty(exports2, "MPTokenAuthorizeFlags", { enumerable: true, get: function() { + return MPTokenAuthorize_1.MPTokenAuthorizeFlags; + } }); + var MPTokenIssuanceCreate_1 = require_MPTokenIssuanceCreate(); + Object.defineProperty(exports2, "MPTokenIssuanceCreateFlags", { enumerable: true, get: function() { + return MPTokenIssuanceCreate_1.MPTokenIssuanceCreateFlags; + } }); + var MPTokenIssuanceSet_1 = require_MPTokenIssuanceSet(); + Object.defineProperty(exports2, "MPTokenIssuanceSetFlags", { enumerable: true, get: function() { + return MPTokenIssuanceSet_1.MPTokenIssuanceSetFlags; + } }); + var NFTokenCreateOffer_1 = require_NFTokenCreateOffer(); + Object.defineProperty(exports2, "NFTokenCreateOfferFlags", { enumerable: true, get: function() { + return NFTokenCreateOffer_1.NFTokenCreateOfferFlags; + } }); + var NFTokenMint_1 = require_NFTokenMint(); + Object.defineProperty(exports2, "NFTokenMintFlags", { enumerable: true, get: function() { + return NFTokenMint_1.NFTokenMintFlags; + } }); + var NFTokenModify_1 = require_NFTokenModify(); + Object.defineProperty(exports2, "validateNFTokenModify", { enumerable: true, get: function() { + return NFTokenModify_1.validateNFTokenModify; + } }); + var offerCreate_1 = require_offerCreate(); + Object.defineProperty(exports2, "OfferCreateFlags", { enumerable: true, get: function() { + return offerCreate_1.OfferCreateFlags; + } }); + var payment_1 = require_payment(); + Object.defineProperty(exports2, "PaymentFlags", { enumerable: true, get: function() { + return payment_1.PaymentFlags; + } }); + var paymentChannelClaim_1 = require_paymentChannelClaim(); + Object.defineProperty(exports2, "PaymentChannelClaimFlags", { enumerable: true, get: function() { + return paymentChannelClaim_1.PaymentChannelClaimFlags; + } }); + var trustSet_1 = require_trustSet(); + Object.defineProperty(exports2, "TrustSetFlags", { enumerable: true, get: function() { + return trustSet_1.TrustSetFlags; + } }); + var vaultCreate_1 = require_vaultCreate(); + Object.defineProperty(exports2, "VaultCreateFlags", { enumerable: true, get: function() { + return vaultCreate_1.VaultCreateFlags; + } }); + Object.defineProperty(exports2, "VaultWithdrawalPolicy", { enumerable: true, get: function() { + return vaultCreate_1.VaultWithdrawalPolicy; + } }); + var XChainModifyBridge_1 = require_XChainModifyBridge(); + Object.defineProperty(exports2, "XChainModifyBridgeFlags", { enumerable: true, get: function() { + return XChainModifyBridge_1.XChainModifyBridgeFlags; + } }); + } +}); + +// node_modules/xrpl/dist/npm/Wallet/rfc1751Words.json +var require_rfc1751Words = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/rfc1751Words.json"(exports2, module2) { + module2.exports = [ + "A", + "ABE", + "ACE", + "ACT", + "AD", + "ADA", + "ADD", + "AGO", + "AID", + "AIM", + "AIR", + "ALL", + "ALP", + "AM", + "AMY", + "AN", + "ANA", + "AND", + "ANN", + "ANT", + "ANY", + "APE", + "APS", + "APT", + "ARC", + "ARE", + "ARK", + "ARM", + "ART", + "AS", + "ASH", + "ASK", + "AT", + "ATE", + "AUG", + "AUK", + "AVE", + "AWE", + "AWK", + "AWL", + "AWN", + "AX", + "AYE", + "BAD", + "BAG", + "BAH", + "BAM", + "BAN", + "BAR", + "BAT", + "BAY", + "BE", + "BED", + "BEE", + "BEG", + "BEN", + "BET", + "BEY", + "BIB", + "BID", + "BIG", + "BIN", + "BIT", + "BOB", + "BOG", + "BON", + "BOO", + "BOP", + "BOW", + "BOY", + "BUB", + "BUD", + "BUG", + "BUM", + "BUN", + "BUS", + "BUT", + "BUY", + "BY", + "BYE", + "CAB", + "CAL", + "CAM", + "CAN", + "CAP", + "CAR", + "CAT", + "CAW", + "COD", + "COG", + "COL", + "CON", + "COO", + "COP", + "COT", + "COW", + "COY", + "CRY", + "CUB", + "CUE", + "CUP", + "CUR", + "CUT", + "DAB", + "DAD", + "DAM", + "DAN", + "DAR", + "DAY", + "DEE", + "DEL", + "DEN", + "DES", + "DEW", + "DID", + "DIE", + "DIG", + "DIN", + "DIP", + "DO", + "DOE", + "DOG", + "DON", + "DOT", + "DOW", + "DRY", + "DUB", + "DUD", + "DUE", + "DUG", + "DUN", + "EAR", + "EAT", + "ED", + "EEL", + "EGG", + "EGO", + "ELI", + "ELK", + "ELM", + "ELY", + "EM", + "END", + "EST", + "ETC", + "EVA", + "EVE", + "EWE", + "EYE", + "FAD", + "FAN", + "FAR", + "FAT", + "FAY", + "FED", + "FEE", + "FEW", + "FIB", + "FIG", + "FIN", + "FIR", + "FIT", + "FLO", + "FLY", + "FOE", + "FOG", + "FOR", + "FRY", + "FUM", + "FUN", + "FUR", + "GAB", + "GAD", + "GAG", + "GAL", + "GAM", + "GAP", + "GAS", + "GAY", + "GEE", + "GEL", + "GEM", + "GET", + "GIG", + "GIL", + "GIN", + "GO", + "GOT", + "GUM", + "GUN", + "GUS", + "GUT", + "GUY", + "GYM", + "GYP", + "HA", + "HAD", + "HAL", + "HAM", + "HAN", + "HAP", + "HAS", + "HAT", + "HAW", + "HAY", + "HE", + "HEM", + "HEN", + "HER", + "HEW", + "HEY", + "HI", + "HID", + "HIM", + "HIP", + "HIS", + "HIT", + "HO", + "HOB", + "HOC", + "HOE", + "HOG", + "HOP", + "HOT", + "HOW", + "HUB", + "HUE", + "HUG", + "HUH", + "HUM", + "HUT", + "I", + "ICY", + "IDA", + "IF", + "IKE", + "ILL", + "INK", + "INN", + "IO", + "ION", + "IQ", + "IRA", + "IRE", + "IRK", + "IS", + "IT", + "ITS", + "IVY", + "JAB", + "JAG", + "JAM", + "JAN", + "JAR", + "JAW", + "JAY", + "JET", + "JIG", + "JIM", + "JO", + "JOB", + "JOE", + "JOG", + "JOT", + "JOY", + "JUG", + "JUT", + "KAY", + "KEG", + "KEN", + "KEY", + "KID", + "KIM", + "KIN", + "KIT", + "LA", + "LAB", + "LAC", + "LAD", + "LAG", + "LAM", + "LAP", + "LAW", + "LAY", + "LEA", + "LED", + "LEE", + "LEG", + "LEN", + "LEO", + "LET", + "LEW", + "LID", + "LIE", + "LIN", + "LIP", + "LIT", + "LO", + "LOB", + "LOG", + "LOP", + "LOS", + "LOT", + "LOU", + "LOW", + "LOY", + "LUG", + "LYE", + "MA", + "MAC", + "MAD", + "MAE", + "MAN", + "MAO", + "MAP", + "MAT", + "MAW", + "MAY", + "ME", + "MEG", + "MEL", + "MEN", + "MET", + "MEW", + "MID", + "MIN", + "MIT", + "MOB", + "MOD", + "MOE", + "MOO", + "MOP", + "MOS", + "MOT", + "MOW", + "MUD", + "MUG", + "MUM", + "MY", + "NAB", + "NAG", + "NAN", + "NAP", + "NAT", + "NAY", + "NE", + "NED", + "NEE", + "NET", + "NEW", + "NIB", + "NIL", + "NIP", + "NIT", + "NO", + "NOB", + "NOD", + "NON", + "NOR", + "NOT", + "NOV", + "NOW", + "NU", + "NUN", + "NUT", + "O", + "OAF", + "OAK", + "OAR", + "OAT", + "ODD", + "ODE", + "OF", + "OFF", + "OFT", + "OH", + "OIL", + "OK", + "OLD", + "ON", + "ONE", + "OR", + "ORB", + "ORE", + "ORR", + "OS", + "OTT", + "OUR", + "OUT", + "OVA", + "OW", + "OWE", + "OWL", + "OWN", + "OX", + "PA", + "PAD", + "PAL", + "PAM", + "PAN", + "PAP", + "PAR", + "PAT", + "PAW", + "PAY", + "PEA", + "PEG", + "PEN", + "PEP", + "PER", + "PET", + "PEW", + "PHI", + "PI", + "PIE", + "PIN", + "PIT", + "PLY", + "PO", + "POD", + "POE", + "POP", + "POT", + "POW", + "PRO", + "PRY", + "PUB", + "PUG", + "PUN", + "PUP", + "PUT", + "QUO", + "RAG", + "RAM", + "RAN", + "RAP", + "RAT", + "RAW", + "RAY", + "REB", + "RED", + "REP", + "RET", + "RIB", + "RID", + "RIG", + "RIM", + "RIO", + "RIP", + "ROB", + "ROD", + "ROE", + "RON", + "ROT", + "ROW", + "ROY", + "RUB", + "RUE", + "RUG", + "RUM", + "RUN", + "RYE", + "SAC", + "SAD", + "SAG", + "SAL", + "SAM", + "SAN", + "SAP", + "SAT", + "SAW", + "SAY", + "SEA", + "SEC", + "SEE", + "SEN", + "SET", + "SEW", + "SHE", + "SHY", + "SIN", + "SIP", + "SIR", + "SIS", + "SIT", + "SKI", + "SKY", + "SLY", + "SO", + "SOB", + "SOD", + "SON", + "SOP", + "SOW", + "SOY", + "SPA", + "SPY", + "SUB", + "SUD", + "SUE", + "SUM", + "SUN", + "SUP", + "TAB", + "TAD", + "TAG", + "TAN", + "TAP", + "TAR", + "TEA", + "TED", + "TEE", + "TEN", + "THE", + "THY", + "TIC", + "TIE", + "TIM", + "TIN", + "TIP", + "TO", + "TOE", + "TOG", + "TOM", + "TON", + "TOO", + "TOP", + "TOW", + "TOY", + "TRY", + "TUB", + "TUG", + "TUM", + "TUN", + "TWO", + "UN", + "UP", + "US", + "USE", + "VAN", + "VAT", + "VET", + "VIE", + "WAD", + "WAG", + "WAR", + "WAS", + "WAY", + "WE", + "WEB", + "WED", + "WEE", + "WET", + "WHO", + "WHY", + "WIN", + "WIT", + "WOK", + "WON", + "WOO", + "WOW", + "WRY", + "WU", + "YAM", + "YAP", + "YAW", + "YE", + "YEA", + "YES", + "YET", + "YOU", + "ABED", + "ABEL", + "ABET", + "ABLE", + "ABUT", + "ACHE", + "ACID", + "ACME", + "ACRE", + "ACTA", + "ACTS", + "ADAM", + "ADDS", + "ADEN", + "AFAR", + "AFRO", + "AGEE", + "AHEM", + "AHOY", + "AIDA", + "AIDE", + "AIDS", + "AIRY", + "AJAR", + "AKIN", + "ALAN", + "ALEC", + "ALGA", + "ALIA", + "ALLY", + "ALMA", + "ALOE", + "ALSO", + "ALTO", + "ALUM", + "ALVA", + "AMEN", + "AMES", + "AMID", + "AMMO", + "AMOK", + "AMOS", + "AMRA", + "ANDY", + "ANEW", + "ANNA", + "ANNE", + "ANTE", + "ANTI", + "AQUA", + "ARAB", + "ARCH", + "AREA", + "ARGO", + "ARID", + "ARMY", + "ARTS", + "ARTY", + "ASIA", + "ASKS", + "ATOM", + "AUNT", + "AURA", + "AUTO", + "AVER", + "AVID", + "AVIS", + "AVON", + "AVOW", + "AWAY", + "AWRY", + "BABE", + "BABY", + "BACH", + "BACK", + "BADE", + "BAIL", + "BAIT", + "BAKE", + "BALD", + "BALE", + "BALI", + "BALK", + "BALL", + "BALM", + "BAND", + "BANE", + "BANG", + "BANK", + "BARB", + "BARD", + "BARE", + "BARK", + "BARN", + "BARR", + "BASE", + "BASH", + "BASK", + "BASS", + "BATE", + "BATH", + "BAWD", + "BAWL", + "BEAD", + "BEAK", + "BEAM", + "BEAN", + "BEAR", + "BEAT", + "BEAU", + "BECK", + "BEEF", + "BEEN", + "BEER", + "BEET", + "BELA", + "BELL", + "BELT", + "BEND", + "BENT", + "BERG", + "BERN", + "BERT", + "BESS", + "BEST", + "BETA", + "BETH", + "BHOY", + "BIAS", + "BIDE", + "BIEN", + "BILE", + "BILK", + "BILL", + "BIND", + "BING", + "BIRD", + "BITE", + "BITS", + "BLAB", + "BLAT", + "BLED", + "BLEW", + "BLOB", + "BLOC", + "BLOT", + "BLOW", + "BLUE", + "BLUM", + "BLUR", + "BOAR", + "BOAT", + "BOCA", + "BOCK", + "BODE", + "BODY", + "BOGY", + "BOHR", + "BOIL", + "BOLD", + "BOLO", + "BOLT", + "BOMB", + "BONA", + "BOND", + "BONE", + "BONG", + "BONN", + "BONY", + "BOOK", + "BOOM", + "BOON", + "BOOT", + "BORE", + "BORG", + "BORN", + "BOSE", + "BOSS", + "BOTH", + "BOUT", + "BOWL", + "BOYD", + "BRAD", + "BRAE", + "BRAG", + "BRAN", + "BRAY", + "BRED", + "BREW", + "BRIG", + "BRIM", + "BROW", + "BUCK", + "BUDD", + "BUFF", + "BULB", + "BULK", + "BULL", + "BUNK", + "BUNT", + "BUOY", + "BURG", + "BURL", + "BURN", + "BURR", + "BURT", + "BURY", + "BUSH", + "BUSS", + "BUST", + "BUSY", + "BYTE", + "CADY", + "CAFE", + "CAGE", + "CAIN", + "CAKE", + "CALF", + "CALL", + "CALM", + "CAME", + "CANE", + "CANT", + "CARD", + "CARE", + "CARL", + "CARR", + "CART", + "CASE", + "CASH", + "CASK", + "CAST", + "CAVE", + "CEIL", + "CELL", + "CENT", + "CERN", + "CHAD", + "CHAR", + "CHAT", + "CHAW", + "CHEF", + "CHEN", + "CHEW", + "CHIC", + "CHIN", + "CHOU", + "CHOW", + "CHUB", + "CHUG", + "CHUM", + "CITE", + "CITY", + "CLAD", + "CLAM", + "CLAN", + "CLAW", + "CLAY", + "CLOD", + "CLOG", + "CLOT", + "CLUB", + "CLUE", + "COAL", + "COAT", + "COCA", + "COCK", + "COCO", + "CODA", + "CODE", + "CODY", + "COED", + "COIL", + "COIN", + "COKE", + "COLA", + "COLD", + "COLT", + "COMA", + "COMB", + "COME", + "COOK", + "COOL", + "COON", + "COOT", + "CORD", + "CORE", + "CORK", + "CORN", + "COST", + "COVE", + "COWL", + "CRAB", + "CRAG", + "CRAM", + "CRAY", + "CREW", + "CRIB", + "CROW", + "CRUD", + "CUBA", + "CUBE", + "CUFF", + "CULL", + "CULT", + "CUNY", + "CURB", + "CURD", + "CURE", + "CURL", + "CURT", + "CUTS", + "DADE", + "DALE", + "DAME", + "DANA", + "DANE", + "DANG", + "DANK", + "DARE", + "DARK", + "DARN", + "DART", + "DASH", + "DATA", + "DATE", + "DAVE", + "DAVY", + "DAWN", + "DAYS", + "DEAD", + "DEAF", + "DEAL", + "DEAN", + "DEAR", + "DEBT", + "DECK", + "DEED", + "DEEM", + "DEER", + "DEFT", + "DEFY", + "DELL", + "DENT", + "DENY", + "DESK", + "DIAL", + "DICE", + "DIED", + "DIET", + "DIME", + "DINE", + "DING", + "DINT", + "DIRE", + "DIRT", + "DISC", + "DISH", + "DISK", + "DIVE", + "DOCK", + "DOES", + "DOLE", + "DOLL", + "DOLT", + "DOME", + "DONE", + "DOOM", + "DOOR", + "DORA", + "DOSE", + "DOTE", + "DOUG", + "DOUR", + "DOVE", + "DOWN", + "DRAB", + "DRAG", + "DRAM", + "DRAW", + "DREW", + "DRUB", + "DRUG", + "DRUM", + "DUAL", + "DUCK", + "DUCT", + "DUEL", + "DUET", + "DUKE", + "DULL", + "DUMB", + "DUNE", + "DUNK", + "DUSK", + "DUST", + "DUTY", + "EACH", + "EARL", + "EARN", + "EASE", + "EAST", + "EASY", + "EBEN", + "ECHO", + "EDDY", + "EDEN", + "EDGE", + "EDGY", + "EDIT", + "EDNA", + "EGAN", + "ELAN", + "ELBA", + "ELLA", + "ELSE", + "EMIL", + "EMIT", + "EMMA", + "ENDS", + "ERIC", + "EROS", + "EVEN", + "EVER", + "EVIL", + "EYED", + "FACE", + "FACT", + "FADE", + "FAIL", + "FAIN", + "FAIR", + "FAKE", + "FALL", + "FAME", + "FANG", + "FARM", + "FAST", + "FATE", + "FAWN", + "FEAR", + "FEAT", + "FEED", + "FEEL", + "FEET", + "FELL", + "FELT", + "FEND", + "FERN", + "FEST", + "FEUD", + "FIEF", + "FIGS", + "FILE", + "FILL", + "FILM", + "FIND", + "FINE", + "FINK", + "FIRE", + "FIRM", + "FISH", + "FISK", + "FIST", + "FITS", + "FIVE", + "FLAG", + "FLAK", + "FLAM", + "FLAT", + "FLAW", + "FLEA", + "FLED", + "FLEW", + "FLIT", + "FLOC", + "FLOG", + "FLOW", + "FLUB", + "FLUE", + "FOAL", + "FOAM", + "FOGY", + "FOIL", + "FOLD", + "FOLK", + "FOND", + "FONT", + "FOOD", + "FOOL", + "FOOT", + "FORD", + "FORE", + "FORK", + "FORM", + "FORT", + "FOSS", + "FOUL", + "FOUR", + "FOWL", + "FRAU", + "FRAY", + "FRED", + "FREE", + "FRET", + "FREY", + "FROG", + "FROM", + "FUEL", + "FULL", + "FUME", + "FUND", + "FUNK", + "FURY", + "FUSE", + "FUSS", + "GAFF", + "GAGE", + "GAIL", + "GAIN", + "GAIT", + "GALA", + "GALE", + "GALL", + "GALT", + "GAME", + "GANG", + "GARB", + "GARY", + "GASH", + "GATE", + "GAUL", + "GAUR", + "GAVE", + "GAWK", + "GEAR", + "GELD", + "GENE", + "GENT", + "GERM", + "GETS", + "GIBE", + "GIFT", + "GILD", + "GILL", + "GILT", + "GINA", + "GIRD", + "GIRL", + "GIST", + "GIVE", + "GLAD", + "GLEE", + "GLEN", + "GLIB", + "GLOB", + "GLOM", + "GLOW", + "GLUE", + "GLUM", + "GLUT", + "GOAD", + "GOAL", + "GOAT", + "GOER", + "GOES", + "GOLD", + "GOLF", + "GONE", + "GONG", + "GOOD", + "GOOF", + "GORE", + "GORY", + "GOSH", + "GOUT", + "GOWN", + "GRAB", + "GRAD", + "GRAY", + "GREG", + "GREW", + "GREY", + "GRID", + "GRIM", + "GRIN", + "GRIT", + "GROW", + "GRUB", + "GULF", + "GULL", + "GUNK", + "GURU", + "GUSH", + "GUST", + "GWEN", + "GWYN", + "HAAG", + "HAAS", + "HACK", + "HAIL", + "HAIR", + "HALE", + "HALF", + "HALL", + "HALO", + "HALT", + "HAND", + "HANG", + "HANK", + "HANS", + "HARD", + "HARK", + "HARM", + "HART", + "HASH", + "HAST", + "HATE", + "HATH", + "HAUL", + "HAVE", + "HAWK", + "HAYS", + "HEAD", + "HEAL", + "HEAR", + "HEAT", + "HEBE", + "HECK", + "HEED", + "HEEL", + "HEFT", + "HELD", + "HELL", + "HELM", + "HERB", + "HERD", + "HERE", + "HERO", + "HERS", + "HESS", + "HEWN", + "HICK", + "HIDE", + "HIGH", + "HIKE", + "HILL", + "HILT", + "HIND", + "HINT", + "HIRE", + "HISS", + "HIVE", + "HOBO", + "HOCK", + "HOFF", + "HOLD", + "HOLE", + "HOLM", + "HOLT", + "HOME", + "HONE", + "HONK", + "HOOD", + "HOOF", + "HOOK", + "HOOT", + "HORN", + "HOSE", + "HOST", + "HOUR", + "HOVE", + "HOWE", + "HOWL", + "HOYT", + "HUCK", + "HUED", + "HUFF", + "HUGE", + "HUGH", + "HUGO", + "HULK", + "HULL", + "HUNK", + "HUNT", + "HURD", + "HURL", + "HURT", + "HUSH", + "HYDE", + "HYMN", + "IBIS", + "ICON", + "IDEA", + "IDLE", + "IFFY", + "INCA", + "INCH", + "INTO", + "IONS", + "IOTA", + "IOWA", + "IRIS", + "IRMA", + "IRON", + "ISLE", + "ITCH", + "ITEM", + "IVAN", + "JACK", + "JADE", + "JAIL", + "JAKE", + "JANE", + "JAVA", + "JEAN", + "JEFF", + "JERK", + "JESS", + "JEST", + "JIBE", + "JILL", + "JILT", + "JIVE", + "JOAN", + "JOBS", + "JOCK", + "JOEL", + "JOEY", + "JOHN", + "JOIN", + "JOKE", + "JOLT", + "JOVE", + "JUDD", + "JUDE", + "JUDO", + "JUDY", + "JUJU", + "JUKE", + "JULY", + "JUNE", + "JUNK", + "JUNO", + "JURY", + "JUST", + "JUTE", + "KAHN", + "KALE", + "KANE", + "KANT", + "KARL", + "KATE", + "KEEL", + "KEEN", + "KENO", + "KENT", + "KERN", + "KERR", + "KEYS", + "KICK", + "KILL", + "KIND", + "KING", + "KIRK", + "KISS", + "KITE", + "KLAN", + "KNEE", + "KNEW", + "KNIT", + "KNOB", + "KNOT", + "KNOW", + "KOCH", + "KONG", + "KUDO", + "KURD", + "KURT", + "KYLE", + "LACE", + "LACK", + "LACY", + "LADY", + "LAID", + "LAIN", + "LAIR", + "LAKE", + "LAMB", + "LAME", + "LAND", + "LANE", + "LANG", + "LARD", + "LARK", + "LASS", + "LAST", + "LATE", + "LAUD", + "LAVA", + "LAWN", + "LAWS", + "LAYS", + "LEAD", + "LEAF", + "LEAK", + "LEAN", + "LEAR", + "LEEK", + "LEER", + "LEFT", + "LEND", + "LENS", + "LENT", + "LEON", + "LESK", + "LESS", + "LEST", + "LETS", + "LIAR", + "LICE", + "LICK", + "LIED", + "LIEN", + "LIES", + "LIEU", + "LIFE", + "LIFT", + "LIKE", + "LILA", + "LILT", + "LILY", + "LIMA", + "LIMB", + "LIME", + "LIND", + "LINE", + "LINK", + "LINT", + "LION", + "LISA", + "LIST", + "LIVE", + "LOAD", + "LOAF", + "LOAM", + "LOAN", + "LOCK", + "LOFT", + "LOGE", + "LOIS", + "LOLA", + "LONE", + "LONG", + "LOOK", + "LOON", + "LOOT", + "LORD", + "LORE", + "LOSE", + "LOSS", + "LOST", + "LOUD", + "LOVE", + "LOWE", + "LUCK", + "LUCY", + "LUGE", + "LUKE", + "LULU", + "LUND", + "LUNG", + "LURA", + "LURE", + "LURK", + "LUSH", + "LUST", + "LYLE", + "LYNN", + "LYON", + "LYRA", + "MACE", + "MADE", + "MAGI", + "MAID", + "MAIL", + "MAIN", + "MAKE", + "MALE", + "MALI", + "MALL", + "MALT", + "MANA", + "MANN", + "MANY", + "MARC", + "MARE", + "MARK", + "MARS", + "MART", + "MARY", + "MASH", + "MASK", + "MASS", + "MAST", + "MATE", + "MATH", + "MAUL", + "MAYO", + "MEAD", + "MEAL", + "MEAN", + "MEAT", + "MEEK", + "MEET", + "MELD", + "MELT", + "MEMO", + "MEND", + "MENU", + "MERT", + "MESH", + "MESS", + "MICE", + "MIKE", + "MILD", + "MILE", + "MILK", + "MILL", + "MILT", + "MIMI", + "MIND", + "MINE", + "MINI", + "MINK", + "MINT", + "MIRE", + "MISS", + "MIST", + "MITE", + "MITT", + "MOAN", + "MOAT", + "MOCK", + "MODE", + "MOLD", + "MOLE", + "MOLL", + "MOLT", + "MONA", + "MONK", + "MONT", + "MOOD", + "MOON", + "MOOR", + "MOOT", + "MORE", + "MORN", + "MORT", + "MOSS", + "MOST", + "MOTH", + "MOVE", + "MUCH", + "MUCK", + "MUDD", + "MUFF", + "MULE", + "MULL", + "MURK", + "MUSH", + "MUST", + "MUTE", + "MUTT", + "MYRA", + "MYTH", + "NAGY", + "NAIL", + "NAIR", + "NAME", + "NARY", + "NASH", + "NAVE", + "NAVY", + "NEAL", + "NEAR", + "NEAT", + "NECK", + "NEED", + "NEIL", + "NELL", + "NEON", + "NERO", + "NESS", + "NEST", + "NEWS", + "NEWT", + "NIBS", + "NICE", + "NICK", + "NILE", + "NINA", + "NINE", + "NOAH", + "NODE", + "NOEL", + "NOLL", + "NONE", + "NOOK", + "NOON", + "NORM", + "NOSE", + "NOTE", + "NOUN", + "NOVA", + "NUDE", + "NULL", + "NUMB", + "OATH", + "OBEY", + "OBOE", + "ODIN", + "OHIO", + "OILY", + "OINT", + "OKAY", + "OLAF", + "OLDY", + "OLGA", + "OLIN", + "OMAN", + "OMEN", + "OMIT", + "ONCE", + "ONES", + "ONLY", + "ONTO", + "ONUS", + "ORAL", + "ORGY", + "OSLO", + "OTIS", + "OTTO", + "OUCH", + "OUST", + "OUTS", + "OVAL", + "OVEN", + "OVER", + "OWLY", + "OWNS", + "QUAD", + "QUIT", + "QUOD", + "RACE", + "RACK", + "RACY", + "RAFT", + "RAGE", + "RAID", + "RAIL", + "RAIN", + "RAKE", + "RANK", + "RANT", + "RARE", + "RASH", + "RATE", + "RAVE", + "RAYS", + "READ", + "REAL", + "REAM", + "REAR", + "RECK", + "REED", + "REEF", + "REEK", + "REEL", + "REID", + "REIN", + "RENA", + "REND", + "RENT", + "REST", + "RICE", + "RICH", + "RICK", + "RIDE", + "RIFT", + "RILL", + "RIME", + "RING", + "RINK", + "RISE", + "RISK", + "RITE", + "ROAD", + "ROAM", + "ROAR", + "ROBE", + "ROCK", + "RODE", + "ROIL", + "ROLL", + "ROME", + "ROOD", + "ROOF", + "ROOK", + "ROOM", + "ROOT", + "ROSA", + "ROSE", + "ROSS", + "ROSY", + "ROTH", + "ROUT", + "ROVE", + "ROWE", + "ROWS", + "RUBE", + "RUBY", + "RUDE", + "RUDY", + "RUIN", + "RULE", + "RUNG", + "RUNS", + "RUNT", + "RUSE", + "RUSH", + "RUSK", + "RUSS", + "RUST", + "RUTH", + "SACK", + "SAFE", + "SAGE", + "SAID", + "SAIL", + "SALE", + "SALK", + "SALT", + "SAME", + "SAND", + "SANE", + "SANG", + "SANK", + "SARA", + "SAUL", + "SAVE", + "SAYS", + "SCAN", + "SCAR", + "SCAT", + "SCOT", + "SEAL", + "SEAM", + "SEAR", + "SEAT", + "SEED", + "SEEK", + "SEEM", + "SEEN", + "SEES", + "SELF", + "SELL", + "SEND", + "SENT", + "SETS", + "SEWN", + "SHAG", + "SHAM", + "SHAW", + "SHAY", + "SHED", + "SHIM", + "SHIN", + "SHOD", + "SHOE", + "SHOT", + "SHOW", + "SHUN", + "SHUT", + "SICK", + "SIDE", + "SIFT", + "SIGH", + "SIGN", + "SILK", + "SILL", + "SILO", + "SILT", + "SINE", + "SING", + "SINK", + "SIRE", + "SITE", + "SITS", + "SITU", + "SKAT", + "SKEW", + "SKID", + "SKIM", + "SKIN", + "SKIT", + "SLAB", + "SLAM", + "SLAT", + "SLAY", + "SLED", + "SLEW", + "SLID", + "SLIM", + "SLIT", + "SLOB", + "SLOG", + "SLOT", + "SLOW", + "SLUG", + "SLUM", + "SLUR", + "SMOG", + "SMUG", + "SNAG", + "SNOB", + "SNOW", + "SNUB", + "SNUG", + "SOAK", + "SOAR", + "SOCK", + "SODA", + "SOFA", + "SOFT", + "SOIL", + "SOLD", + "SOME", + "SONG", + "SOON", + "SOOT", + "SORE", + "SORT", + "SOUL", + "SOUR", + "SOWN", + "STAB", + "STAG", + "STAN", + "STAR", + "STAY", + "STEM", + "STEW", + "STIR", + "STOW", + "STUB", + "STUN", + "SUCH", + "SUDS", + "SUIT", + "SULK", + "SUMS", + "SUNG", + "SUNK", + "SURE", + "SURF", + "SWAB", + "SWAG", + "SWAM", + "SWAN", + "SWAT", + "SWAY", + "SWIM", + "SWUM", + "TACK", + "TACT", + "TAIL", + "TAKE", + "TALE", + "TALK", + "TALL", + "TANK", + "TASK", + "TATE", + "TAUT", + "TEAL", + "TEAM", + "TEAR", + "TECH", + "TEEM", + "TEEN", + "TEET", + "TELL", + "TEND", + "TENT", + "TERM", + "TERN", + "TESS", + "TEST", + "THAN", + "THAT", + "THEE", + "THEM", + "THEN", + "THEY", + "THIN", + "THIS", + "THUD", + "THUG", + "TICK", + "TIDE", + "TIDY", + "TIED", + "TIER", + "TILE", + "TILL", + "TILT", + "TIME", + "TINA", + "TINE", + "TINT", + "TINY", + "TIRE", + "TOAD", + "TOGO", + "TOIL", + "TOLD", + "TOLL", + "TONE", + "TONG", + "TONY", + "TOOK", + "TOOL", + "TOOT", + "TORE", + "TORN", + "TOTE", + "TOUR", + "TOUT", + "TOWN", + "TRAG", + "TRAM", + "TRAY", + "TREE", + "TREK", + "TRIG", + "TRIM", + "TRIO", + "TROD", + "TROT", + "TROY", + "TRUE", + "TUBA", + "TUBE", + "TUCK", + "TUFT", + "TUNA", + "TUNE", + "TUNG", + "TURF", + "TURN", + "TUSK", + "TWIG", + "TWIN", + "TWIT", + "ULAN", + "UNIT", + "URGE", + "USED", + "USER", + "USES", + "UTAH", + "VAIL", + "VAIN", + "VALE", + "VARY", + "VASE", + "VAST", + "VEAL", + "VEDA", + "VEIL", + "VEIN", + "VEND", + "VENT", + "VERB", + "VERY", + "VETO", + "VICE", + "VIEW", + "VINE", + "VISE", + "VOID", + "VOLT", + "VOTE", + "WACK", + "WADE", + "WAGE", + "WAIL", + "WAIT", + "WAKE", + "WALE", + "WALK", + "WALL", + "WALT", + "WAND", + "WANE", + "WANG", + "WANT", + "WARD", + "WARM", + "WARN", + "WART", + "WASH", + "WAST", + "WATS", + "WATT", + "WAVE", + "WAVY", + "WAYS", + "WEAK", + "WEAL", + "WEAN", + "WEAR", + "WEED", + "WEEK", + "WEIR", + "WELD", + "WELL", + "WELT", + "WENT", + "WERE", + "WERT", + "WEST", + "WHAM", + "WHAT", + "WHEE", + "WHEN", + "WHET", + "WHOA", + "WHOM", + "WICK", + "WIFE", + "WILD", + "WILL", + "WIND", + "WINE", + "WING", + "WINK", + "WINO", + "WIRE", + "WISE", + "WISH", + "WITH", + "WOLF", + "WONT", + "WOOD", + "WOOL", + "WORD", + "WORE", + "WORK", + "WORM", + "WORN", + "WOVE", + "WRIT", + "WYNN", + "YALE", + "YANG", + "YANK", + "YARD", + "YARN", + "YAWL", + "YAWN", + "YEAH", + "YEAR", + "YELL", + "YOGA", + "YOKE" + ]; + } +}); + +// node_modules/xrpl/dist/npm/Wallet/rfc1751.js +var require_rfc1751 = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/rfc1751.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.keyToRFC1751Mnemonic = exports2.rfc1751MnemonicToKey = void 0; + var utils_1 = require_utils10(); + var rfc1751Words_json_1 = __importDefault2(require_rfc1751Words()); + var rfc1751WordList = rfc1751Words_json_1.default; + var BINARY = [ + "0000", + "0001", + "0010", + "0011", + "0100", + "0101", + "0110", + "0111", + "1000", + "1001", + "1010", + "1011", + "1100", + "1101", + "1110", + "1111" + ]; + function keyToBinary(key) { + let res = ""; + for (const num of key) { + res += BINARY[num >> 4] + BINARY[num & 15]; + } + return res; + } + function extract(key, start, length) { + const subKey = key.substring(start, start + length); + let acc = 0; + for (let index = 0; index < subKey.length; index++) { + acc = acc * 2 + subKey.charCodeAt(index) - 48; + } + return acc; + } + function keyToRFC1751Mnemonic(hex_key) { + const buf = (0, utils_1.hexToBytes)(hex_key.replace(/\s+/gu, "")); + let key = bufferToArray(swap128(buf)); + const padding = []; + for (let index = 0; index < (8 - key.length % 8) % 8; index++) { + padding.push(0); + } + key = padding.concat(key); + const english = []; + for (let index = 0; index < key.length; index += 8) { + const subKey = key.slice(index, index + 8); + let skbin = keyToBinary(subKey); + let parity = 0; + for (let j = 0; j < 64; j += 2) { + parity += extract(skbin, j, 2); + } + subKey.push(parity << 6 & 255); + skbin = keyToBinary(subKey); + for (let j = 0; j < 64; j += 11) { + english.push(rfc1751WordList[extract(skbin, j, 11)]); + } + } + return english.join(" "); + } + exports2.keyToRFC1751Mnemonic = keyToRFC1751Mnemonic; + function rfc1751MnemonicToKey(english) { + const words = english.split(" "); + let key = []; + for (let index = 0; index < words.length; index += 6) { + const { subKey, word } = getSubKey(words, index); + const skbin = keyToBinary(subKey); + let parity = 0; + for (let j = 0; j < 64; j += 2) { + parity += extract(skbin, j, 2); + } + const cs0 = extract(skbin, 64, 2); + const cs1 = parity & 3; + if (cs0 !== cs1) { + throw new Error(`Parity error at ${word}`); + } + key = key.concat(subKey.slice(0, 8)); + } + const bufferKey = swap128(Uint8Array.from(key)); + return bufferKey; + } + exports2.rfc1751MnemonicToKey = rfc1751MnemonicToKey; + function getSubKey(words, index) { + const sublist = words.slice(index, index + 6); + let bits = 0; + const ch = [0, 0, 0, 0, 0, 0, 0, 0, 0]; + let word = ""; + for (word of sublist) { + const idx = rfc1751WordList.indexOf(word.toUpperCase()); + if (idx === -1) { + throw new TypeError(`Expected an RFC1751 word, but received '${word}'. For the full list of words in the RFC1751 encoding see https://datatracker.ietf.org/doc/html/rfc1751`); + } + const shift = (8 - (bits + 11) % 8) % 8; + const y = idx << shift; + const cl = y >> 16; + const cc = y >> 8 & 255; + const cr = y & 255; + const t = Math.floor(bits / 8); + if (shift > 5) { + ch[t] |= cl; + ch[t + 1] |= cc; + ch[t + 2] |= cr; + } else if (shift > -3) { + ch[t] |= cc; + ch[t + 1] |= cr; + } else { + ch[t] |= cr; + } + bits += 11; + } + const subKey = ch.slice(); + return { subKey, word }; + } + function bufferToArray(buf) { + return Array.prototype.slice.call(buf); + } + function swap(arr, n, m) { + const i = arr[n]; + arr[n] = arr[m]; + arr[m] = i; + } + function swap64(arr) { + const len = arr.length; + for (let i = 0; i < len; i += 8) { + swap(arr, i, i + 7); + swap(arr, i + 1, i + 6); + swap(arr, i + 2, i + 5); + swap(arr, i + 3, i + 4); + } + return arr; + } + function swap128(arr) { + const reversedBytes = swap64(arr); + return (0, utils_1.concat)([reversedBytes.slice(8, 16), reversedBytes.slice(0, 8)]); + } + } +}); + +// node_modules/xrpl/dist/npm/Wallet/utils.js +var require_utils19 = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/utils.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getDecodedTransaction = exports2.addressToBigNumber = exports2.NUM_BITS_IN_HEX = exports2.compareSigners = void 0; + var utils_1 = require_utils10(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_address_codec_1 = require_dist4(); + var ripple_binary_codec_1 = require_dist5(); + function compareSigners(left, right) { + return addressToBigNumber(left.Account).comparedTo(addressToBigNumber(right.Account)); + } + exports2.compareSigners = compareSigners; + exports2.NUM_BITS_IN_HEX = 16; + function addressToBigNumber(address) { + const hex = (0, utils_1.bytesToHex)((0, ripple_address_codec_1.decodeAccountID)(address)); + return new bignumber_js_1.default(hex, exports2.NUM_BITS_IN_HEX); + } + exports2.addressToBigNumber = addressToBigNumber; + function getDecodedTransaction(txOrBlob) { + if (typeof txOrBlob === "object") { + return (0, ripple_binary_codec_1.decode)((0, ripple_binary_codec_1.encode)(txOrBlob)); + } + return (0, ripple_binary_codec_1.decode)(txOrBlob); + } + exports2.getDecodedTransaction = getDecodedTransaction; + } +}); + +// node_modules/xrpl/dist/npm/Wallet/signer.js +var require_signer = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/signer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.multisign = exports2.verifySignature = void 0; + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + var errors_1 = require_errors8(); + var transactions_1 = require_transactions(); + var utils_1 = require_utils19(); + function multisign(transactions) { + if (transactions.length === 0) { + throw new errors_1.ValidationError("There were 0 transactions to multisign"); + } + const decodedTransactions = transactions.map((txOrBlob) => { + return (0, utils_1.getDecodedTransaction)(txOrBlob); + }); + decodedTransactions.forEach((tx) => { + (0, transactions_1.validate)(tx); + if (tx.Signers == null || tx.Signers.length === 0) { + throw new errors_1.ValidationError("For multisigning all transactions must include a Signers field containing an array of signatures. You may have forgotten to pass the 'forMultisign' parameter when signing."); + } + if (tx.SigningPubKey !== "") { + throw new errors_1.ValidationError("SigningPubKey must be an empty string for all transactions when multisigning."); + } + }); + validateTransactionEquivalence(decodedTransactions); + return (0, ripple_binary_codec_1.encode)(getTransactionWithAllSigners(decodedTransactions)); + } + exports2.multisign = multisign; + function verifySignature(tx, publicKey) { + const decodedTx = (0, utils_1.getDecodedTransaction)(tx); + let key = publicKey; + if (typeof decodedTx.TxnSignature !== "string" || !decodedTx.TxnSignature) { + throw new Error("Transaction is missing a signature, TxnSignature"); + } + if (!key) { + if (typeof decodedTx.SigningPubKey !== "string" || !decodedTx.SigningPubKey) { + throw new Error("Transaction is missing a public key, SigningPubKey"); + } + key = decodedTx.SigningPubKey; + } + return (0, ripple_keypairs_1.verify)((0, ripple_binary_codec_1.encodeForSigning)(decodedTx), decodedTx.TxnSignature, key); + } + exports2.verifySignature = verifySignature; + function validateTransactionEquivalence(transactions) { + const exampleTransaction = JSON.stringify(Object.assign(Object.assign({}, transactions[0]), { Signers: null })); + if (transactions.slice(1).some((tx) => JSON.stringify(Object.assign(Object.assign({}, tx), { Signers: null })) !== exampleTransaction)) { + throw new errors_1.ValidationError("txJSON is not the same for all signedTransactions"); + } + } + function getTransactionWithAllSigners(transactions) { + const sortedSigners = transactions.flatMap((tx) => { + var _a; + return (_a = tx.Signers) !== null && _a !== void 0 ? _a : []; + }).sort((signer1, signer2) => (0, utils_1.compareSigners)(signer1.Signer, signer2.Signer)); + return Object.assign(Object.assign({}, transactions[0]), { Signers: sortedSigners }); + } + } +}); + +// node_modules/xrpl/dist/npm/Wallet/index.js +var require_Wallet = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Wallet = void 0; + var bip32_1 = require_lib16(); + var bip39_1 = require_bip392(); + var english_1 = require_english(); + var utils_1 = require_utils10(); + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_address_codec_1 = require_dist4(); + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + var ECDSA_1 = __importDefault2(require_ECDSA()); + var errors_1 = require_errors8(); + var transactions_1 = require_transactions(); + var common_1 = require_common4(); + var utils_2 = require_utils13(); + var utils_3 = require_utils18(); + var collections_1 = require_collections(); + var hashLedger_1 = require_hashLedger(); + var rfc1751_1 = require_rfc1751(); + var signer_1 = require_signer(); + var DEFAULT_ALGORITHM = ECDSA_1.default.ed25519; + var DEFAULT_DERIVATION_PATH = "m/44'/144'/0'/0/0"; + function validateKey(node) { + if (!(node.privateKey instanceof Uint8Array)) { + throw new errors_1.ValidationError("Unable to derive privateKey from mnemonic input"); + } + if (!(node.publicKey instanceof Uint8Array)) { + throw new errors_1.ValidationError("Unable to derive publicKey from mnemonic input"); + } + } + var Wallet = class _Wallet { + constructor(publicKey, privateKey, opts = {}) { + this.publicKey = publicKey; + this.privateKey = privateKey; + this.classicAddress = opts.masterAddress ? (0, utils_3.ensureClassicAddress)(opts.masterAddress) : (0, ripple_keypairs_1.deriveAddress)(publicKey); + this.seed = opts.seed; + } + get address() { + return this.classicAddress; + } + static generate(algorithm = DEFAULT_ALGORITHM) { + if (!Object.values(ECDSA_1.default).includes(algorithm)) { + throw new errors_1.ValidationError("Invalid cryptographic signing algorithm"); + } + const seed = (0, ripple_keypairs_1.generateSeed)({ algorithm }); + return _Wallet.fromSeed(seed, { algorithm }); + } + static fromSeed(seed, opts = {}) { + return _Wallet.deriveWallet(seed, { + algorithm: opts.algorithm, + masterAddress: opts.masterAddress + }); + } + static fromEntropy(entropy, opts = {}) { + var _a; + const algorithm = (_a = opts.algorithm) !== null && _a !== void 0 ? _a : DEFAULT_ALGORITHM; + const options = { + entropy: Uint8Array.from(entropy), + algorithm + }; + const seed = (0, ripple_keypairs_1.generateSeed)(options); + return _Wallet.deriveWallet(seed, { + algorithm, + masterAddress: opts.masterAddress + }); + } + static fromMnemonic(mnemonic, opts = {}) { + var _a; + if (opts.mnemonicEncoding === "rfc1751") { + return _Wallet.fromRFC1751Mnemonic(mnemonic, { + masterAddress: opts.masterAddress, + algorithm: opts.algorithm + }); + } + if (!(0, bip39_1.validateMnemonic)(mnemonic, english_1.wordlist)) { + throw new errors_1.ValidationError("Unable to parse the given mnemonic using bip39 encoding"); + } + const seed = (0, bip39_1.mnemonicToSeedSync)(mnemonic); + const masterNode = bip32_1.HDKey.fromMasterSeed(seed); + const node = masterNode.derive((_a = opts.derivationPath) !== null && _a !== void 0 ? _a : DEFAULT_DERIVATION_PATH); + validateKey(node); + const publicKey = (0, utils_1.bytesToHex)(node.publicKey); + const privateKey = (0, utils_1.bytesToHex)(node.privateKey); + return new _Wallet(publicKey, `00${privateKey}`, { + masterAddress: opts.masterAddress + }); + } + static fromRFC1751Mnemonic(mnemonic, opts) { + const seed = (0, rfc1751_1.rfc1751MnemonicToKey)(mnemonic); + let encodeAlgorithm; + if (opts.algorithm === ECDSA_1.default.ed25519) { + encodeAlgorithm = "ed25519"; + } else { + encodeAlgorithm = "secp256k1"; + } + const encodedSeed = (0, ripple_address_codec_1.encodeSeed)(seed, encodeAlgorithm); + return _Wallet.fromSeed(encodedSeed, { + masterAddress: opts.masterAddress, + algorithm: opts.algorithm + }); + } + static deriveWallet(seed, opts = {}) { + var _a; + const { publicKey, privateKey } = (0, ripple_keypairs_1.deriveKeypair)(seed, { + algorithm: (_a = opts.algorithm) !== null && _a !== void 0 ? _a : DEFAULT_ALGORITHM + }); + return new _Wallet(publicKey, privateKey, { + seed, + masterAddress: opts.masterAddress + }); + } + sign(transaction, multisign) { + let multisignAddress = false; + if (typeof multisign === "string") { + multisignAddress = multisign; + } else if (multisign) { + multisignAddress = this.classicAddress; + } + const tx = (0, collections_1.omitBy)(Object.assign({}, transaction), (value) => value == null); + if (tx.TxnSignature || tx.Signers) { + throw new errors_1.ValidationError('txJSON must not contain "TxnSignature" or "Signers" properties'); + } + removeTrailingZeros(tx); + (0, transactions_1.validate)(tx); + if ((0, utils_2.hasFlag)(tx, common_1.GlobalFlags.tfInnerBatchTxn, "tfInnerBatchTxn")) { + throw new errors_1.ValidationError("Cannot sign a Batch inner transaction."); + } + const txToSignAndEncode = Object.assign({}, tx); + if (multisignAddress) { + txToSignAndEncode.SigningPubKey = ""; + const signer = { + Account: multisignAddress, + SigningPubKey: this.publicKey, + TxnSignature: computeSignature(txToSignAndEncode, this.privateKey, multisignAddress) + }; + txToSignAndEncode.Signers = [{ Signer: signer }]; + } else { + txToSignAndEncode.SigningPubKey = this.publicKey; + txToSignAndEncode.TxnSignature = computeSignature(txToSignAndEncode, this.privateKey); + } + const serialized = (0, ripple_binary_codec_1.encode)(txToSignAndEncode); + return { + tx_blob: serialized, + hash: (0, hashLedger_1.hashSignedTx)(serialized) + }; + } + verifyTransaction(signedTransaction) { + return (0, signer_1.verifySignature)(signedTransaction, this.publicKey); + } + getXAddress(tag = false, isTestnet = false) { + return (0, ripple_address_codec_1.classicAddressToXAddress)(this.classicAddress, tag, isTestnet); + } + }; + exports2.Wallet = Wallet; + Wallet.fromSecret = Wallet.fromSeed; + function computeSignature(tx, privateKey, signAs) { + if (signAs) { + const classicAddress = (0, ripple_address_codec_1.isValidXAddress)(signAs) ? (0, ripple_address_codec_1.xAddressToClassicAddress)(signAs).classicAddress : signAs; + return (0, ripple_keypairs_1.sign)((0, ripple_binary_codec_1.encodeForMultisigning)(tx, classicAddress), privateKey); + } + return (0, ripple_keypairs_1.sign)((0, ripple_binary_codec_1.encodeForSigning)(tx), privateKey); + } + function removeTrailingZeros(tx) { + if (tx.TransactionType === "Payment" && typeof tx.Amount !== "string" && tx.Amount.value.includes(".") && tx.Amount.value.endsWith("0")) { + tx.Amount = Object.assign({}, tx.Amount); + tx.Amount.value = new bignumber_js_1.default(tx.Amount.value).toString(); + } + } + } +}); + +// node_modules/xrpl/dist/npm/Wallet/defaultFaucets.js +var require_defaultFaucets = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/defaultFaucets.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.getFaucetPath = exports2.getFaucetHost = exports2.faucetNetworkIDs = exports2.faucetNetworkPaths = exports2.FaucetNetwork = void 0; + var errors_1 = require_errors8(); + var FaucetNetwork; + (function(FaucetNetwork2) { + FaucetNetwork2["Testnet"] = "faucet.altnet.rippletest.net"; + FaucetNetwork2["Devnet"] = "faucet.devnet.rippletest.net"; + })(FaucetNetwork || (exports2.FaucetNetwork = FaucetNetwork = {})); + exports2.faucetNetworkPaths = { + [FaucetNetwork.Testnet]: "/accounts", + [FaucetNetwork.Devnet]: "/accounts" + }; + exports2.faucetNetworkIDs = /* @__PURE__ */ new Map([ + [1, FaucetNetwork.Testnet], + [2, FaucetNetwork.Devnet] + ]); + function getFaucetHost(client) { + if (client.networkID == null) { + throw new errors_1.XRPLFaucetError("Cannot create faucet URL without networkID or the faucetHost information"); + } + if (exports2.faucetNetworkIDs.has(client.networkID)) { + return exports2.faucetNetworkIDs.get(client.networkID); + } + if (client.networkID === 0) { + throw new errors_1.XRPLFaucetError("Faucet is not available for mainnet."); + } + throw new errors_1.XRPLFaucetError("Faucet URL is not defined or inferrable."); + } + exports2.getFaucetHost = getFaucetHost; + function getFaucetPath(hostname) { + if (hostname === void 0) { + return "/accounts"; + } + return exports2.faucetNetworkPaths[hostname] || "/accounts"; + } + exports2.getFaucetPath = getFaucetPath; + } +}); + +// node_modules/xrpl/dist/npm/Wallet/fundWallet.js +var require_fundWallet = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/fundWallet.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.requestFunding = exports2.getStartingBalance = exports2.generateWalletToFund = void 0; + var ripple_address_codec_1 = require_dist4(); + var errors_1 = require_errors8(); + var defaultFaucets_1 = require_defaultFaucets(); + var _1 = require_Wallet(); + var INTERVAL_SECONDS = 1; + var MAX_ATTEMPTS = 20; + function generateWalletToFund(wallet) { + if (wallet && (0, ripple_address_codec_1.isValidClassicAddress)(wallet.classicAddress)) { + return wallet; + } + return _1.Wallet.generate(); + } + exports2.generateWalletToFund = generateWalletToFund; + function getStartingBalance(client, classicAddress) { + return __awaiter2(this, void 0, void 0, function* () { + let startingBalance = 0; + try { + startingBalance = Number(yield client.getXrpBalance(classicAddress)); + } catch (_a) { + } + return startingBalance; + }); + } + exports2.getStartingBalance = getStartingBalance; + function requestFunding(options, client, startingBalance, walletToFund, postBody) { + var _a, _b, _c; + return __awaiter2(this, void 0, void 0, function* () { + const hostname = (_a = options.faucetHost) !== null && _a !== void 0 ? _a : (0, defaultFaucets_1.getFaucetHost)(client); + if (!hostname) { + throw new errors_1.XRPLFaucetError("No faucet hostname could be derived"); + } + const pathname = (_b = options.faucetPath) !== null && _b !== void 0 ? _b : (0, defaultFaucets_1.getFaucetPath)(hostname); + const response = yield fetch(`https://${hostname}${pathname}`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(postBody) + }); + const body = yield response.json(); + if (response.ok && ((_c = response.headers.get("Content-Type")) === null || _c === void 0 ? void 0 : _c.startsWith("application/json"))) { + const classicAddress = body.account.classicAddress; + return processSuccessfulResponse(client, classicAddress, walletToFund, startingBalance); + } + return processError(response, body); + }); + } + exports2.requestFunding = requestFunding; + function processSuccessfulResponse(client, classicAddress, walletToFund, startingBalance) { + return __awaiter2(this, void 0, void 0, function* () { + if (!classicAddress) { + return Promise.reject(new errors_1.XRPLFaucetError(`The faucet account is undefined`)); + } + const updatedBalance = yield getUpdatedBalance(client, classicAddress, startingBalance); + if (updatedBalance > startingBalance) { + return { + wallet: walletToFund, + balance: updatedBalance + }; + } + throw new errors_1.XRPLFaucetError(`Unable to fund address with faucet after waiting ${INTERVAL_SECONDS * MAX_ATTEMPTS} seconds`); + }); + } + function processError(response, body) { + return __awaiter2(this, void 0, void 0, function* () { + return Promise.reject(new errors_1.XRPLFaucetError(`Request failed: ${JSON.stringify({ + body: body !== null && body !== void 0 ? body : {}, + contentType: response.headers.get("Content-Type"), + statusCode: response.status + })}`)); + }); + } + function getUpdatedBalance(client, address, originalBalance) { + return __awaiter2(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + let attempts = MAX_ATTEMPTS; + const interval = setInterval(() => __awaiter2(this, void 0, void 0, function* () { + if (attempts < 0) { + clearInterval(interval); + resolve(originalBalance); + } else { + attempts -= 1; + } + try { + let newBalance; + try { + newBalance = Number(yield client.getXrpBalance(address)); + } catch (_a) { + } + if (newBalance > originalBalance) { + clearInterval(interval); + resolve(newBalance); + } + } catch (err2) { + clearInterval(interval); + if (err2 instanceof Error) { + reject(new errors_1.XRPLFaucetError(`Unable to check if the address ${address} balance has increased. Error: ${err2.message}`)); + } + reject(err2); + } + }), INTERVAL_SECONDS * 1e3); + }); + }); + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/constants.js +var require_constants14 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/constants.js"(exports2, module2) { + "use strict"; + var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"]; + var hasBlob = typeof Blob !== "undefined"; + if (hasBlob) BINARY_TYPES.push("blob"); + module2.exports = { + BINARY_TYPES, + CLOSE_TIMEOUT: 3e4, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + hasBlob, + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/buffer-util.js +var require_buffer_util2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/buffer-util.js"(exports2, module2) { + "use strict"; + var { EMPTY_BUFFER } = require_constants14(); + var FastBuffer = Buffer[Symbol.species]; + function concat2(list, totalLength) { + if (list.length === 0) return EMPTY_BUFFER; + if (list.length === 1) return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) { + return new FastBuffer(target.buffer, target.byteOffset, offset); + } + return target; + } + function _mask(source, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask[i & 3]; + } + } + function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = new FastBuffer(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module2.exports = { + concat: concat2, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require_bufferutil(); + module2.exports.mask = function(source, mask, output, offset, length) { + if (length < 48) _mask(source, mask, output, offset, length); + else bufferUtil.mask(source, mask, output, offset, length); + }; + module2.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) _unmask(buffer, mask); + else bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + } + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/limiter.js +var require_limiter2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/limiter.js"(exports2, module2) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module2.exports = Limiter; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/permessage-deflate.js +var require_permessage_deflate2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { + "use strict"; + var zlib = __require("zlib"); + var bufferUtil = require_buffer_util2(); + var Limiter = require_limiter2(); + var { kStatusCode } = require_constants14(); + var FastBuffer = Buffer[Symbol.species]; + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err2 = this._inflate[kError]; + if (err2) { + this._inflate.close(); + this._inflate = null; + callback(err2); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) { + data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); + } + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module2.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err2) { + this[kPerMessageDeflate]._inflate = null; + if (this[kError]) { + this[kCallback](this[kError]); + return; + } + err2[kStatusCode] = 1007; + this[kCallback](err2); + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/validation.js +var require_validation2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/validation.js"(exports2, module2) { + "use strict"; + var { isUtf8 } = __require("buffer"); + var { hasBlob } = require_constants14(); + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + function isBlob(value) { + return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File"); + } + module2.exports = { + isBlob, + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (isUtf8) { + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; + } else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require_utf_8_validate(); + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + } + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/receiver.js +var require_receiver2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = __require("stream"); + var PerMessageDeflate = require_permessage_deflate2(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants14(); + var { concat: concat2, toArrayBuffer, unmask } = require_buffer_util2(); + var { isValidStatusCode, isValidUTF8 } = require_validation2(); + var FastBuffer = Buffer[Symbol.species]; + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var DEFER_EVENT = 6; + var Receiver = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + if (!this._errored) cb(); + } + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + const error = this.createError( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + cb(error); + return; + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (!this._fragmented) { + const error = this.createError( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + const error = this.createError( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + cb(error); + return; + } + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { + const error = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + } else { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + if (!this._fin && !this._fragmented) this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + const error = this.createError( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + cb(error); + return; + } + } else if (this._masked) { + const error = this.createError( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + cb(error); + return; + } + if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; + else this.haveLength(cb); + } + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + const error = this.createError( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + } + if (this._masked) this._state = GET_MASK; + else this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) { + this.controlMessage(data, cb); + return; + } + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + this.dataMessage(cb); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err2, buf) => { + if (err2) return cb(err2); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + this._fragments.push(buf); + } + this.dataMessage(cb); + if (this._state === GET_INFO) this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat2(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat2(fragments, messageLength)); + } else if (this._binaryType === "blob") { + data = new Blob(fragments); + } else { + data = fragments; + } + if (this._allowSynchronousEvents) { + this.emit("message", data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat2(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit("message", buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 8) { + if (data.length === 0) { + this._loop = false; + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + const error = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + cb(error); + return; + } + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + this._loop = false; + this.emit("conclude", code, buf); + this.end(); + } + this._state = GET_INFO; + return; + } + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + const err2 = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err2, this.createError); + err2.code = errorCode; + err2[kStatusCode] = statusCode; + return err2; + } + }; + module2.exports = Receiver; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/sender.js +var require_sender2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/sender.js"(exports2, module2) { + "use strict"; + var { Duplex } = __require("stream"); + var { randomFillSync } = __require("crypto"); + var PerMessageDeflate = require_permessage_deflate2(); + var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants14(); + var { isBlob, isValidStatusCode } = require_validation2(); + var { mask: applyMask, toBuffer } = require_buffer_util2(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var RANDOM_POOL_SIZE = 8 * 1024; + var randomPool; + var randomPoolPointer = RANDOM_POOL_SIZE; + var DEFAULT = 0; + var DEFLATING = 1; + var GET_BLOB_DATA = 2; + var Sender = class _Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP; + this[kWebSocket] = void 0; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + if (randomPool === void 0) { + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) return [target, data]; + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) this._firstFragment = true; + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + blob.arrayBuffer().then((arrayBuffer) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while the blob was being read" + ); + process.nextTick(callCallbacks, this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer(arrayBuffer); + if (!compress) { + this._state = DEFAULT; + this.sendFrame(_Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }).catch((err2) => { + process.nextTick(onError, this, err2, cb); + }); + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while data was being compressed" + ); + callCallbacks(this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {(Buffer | String)[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module2.exports = Sender; + function callCallbacks(sender, err2, cb) { + if (typeof cb === "function") cb(err2); + for (let i = 0; i < sender._queue.length; i++) { + const params = sender._queue[i]; + const callback = params[params.length - 1]; + if (typeof callback === "function") callback(err2); + } + } + function onError(sender, err2, cb) { + callCallbacks(sender, err2, cb); + sender.onerror(err2); + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/event-target.js +var require_event_target2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/event-target.js"(exports2, module2) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants14(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event.prototype, "target", { enumerable: true }); + Object.defineProperty(Event.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error) { + const event = new ErrorEvent("error", { + error, + message: error.message + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event("open"); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module2.exports = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/extension.js +var require_extension2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/extension.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation2(); + function push(dest, name, elem) { + if (dest[name] === void 0) dest[name] = [elem]; + else dest[name].push(elem); + } + function parse(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + for (; i < header.length; i++) { + code = header.charCodeAt(i); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) start = i; + else if (!mustUnescape) mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 34 && header.charCodeAt(i - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) end = i; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module2.exports = { format, parse }; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket.js +var require_websocket3 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var https = __require("https"); + var http2 = __require("http"); + var net = __require("net"); + var tls = __require("tls"); + var { randomBytes: randomBytes2, createHash } = __require("crypto"); + var { Duplex, Readable } = __require("stream"); + var { URL: URL2 } = __require("url"); + var PerMessageDeflate = require_permessage_deflate2(); + var Receiver = require_receiver2(); + var Sender = require_sender2(); + var { isBlob } = require_validation2(); + var { + BINARY_TYPES, + CLOSE_TIMEOUT, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants14(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target2(); + var { format, parse } = require_extension2(); + var { toBuffer } = require_buffer_util2(); + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket = class _WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._closeTimeout = options.closeTimeout; + this._isServer = true; + } + } + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) return; + this._binaryType = type; + if (this._receiver) this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + const sender = new Sender(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + sender.onerror = senderOnError; + if (socket.setTimeout) socket.setTimeout(0); + if (socket.setNoDelay) socket.setNoDelay(); + if (head.length > 0) socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err2) => { + if (err2) return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + setCloseTimer(this); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) return listener[kListener]; + } + return null; + }, + set(handler) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler !== "function") return; + this.addEventListener(method, handler, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket.prototype.addEventListener = addEventListener; + WebSocket.prototype.removeEventListener = removeEventListener; + module2.exports = WebSocket; + function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + closeTimeout: CLOSE_TIMEOUT, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + websocket._autoPong = opts.autoPong; + websocket._closeTimeout = opts.closeTimeout; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL2) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL2(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + if (parsedUrl.protocol === "http:") { + parsedUrl.protocol = "ws:"; + } else if (parsedUrl.protocol === "https:") { + parsedUrl.protocol = "wss:"; + } + websocket._url = parsedUrl.href; + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err2 = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err2; + } else { + emitErrorAndClose(websocket, err2); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes2(16).toString("base64"); + const request = isSecure ? https.request : http2.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err2) => { + if (req === null || req[kAborted]) return; + req = websocket._req = null; + emitErrorAndClose(websocket, err2); + }); + req.on("response", (res) => { + const location2 = res.headers.location; + const statusCode = res.statusCode; + if (location2 && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL2(location2, address); + } catch (e) { + const err2 = new SyntaxError(`Invalid URL: ${location2}`); + emitErrorAndClose(websocket, err2); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket.CONNECTING) return; + req = websocket._req = null; + const upgrade = res.headers.upgrade; + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse(secWebSocketExtensions); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } + } + function emitErrorAndClose(websocket, err2) { + websocket._readyState = WebSocket.CLOSING; + websocket._errorEmitted = true; + websocket.emit("error", err2); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket.CLOSING; + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err2); + } else { + stream.destroy(err2); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob(data) ? data.size : toBuffer(data).length; + if (websocket._socket) websocket._sender._bufferedBytes += length; + else websocket._bufferedAmount += length; + } + if (cb) { + const err2 = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err2); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) websocket.close(); + else websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) websocket._socket.resume(); + } + function receiverOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err2[kStatusCode]); + } + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function senderOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket.readyState === WebSocket.CLOSED) return; + if (websocket.readyState === WebSocket.OPEN) { + websocket._readyState = WebSocket.CLOSING; + setCloseTimer(websocket); + } + this._socket.end(); + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + websocket._closeTimeout + ); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket.CLOSING; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && this._readableState.length !== 0) { + const chunk = this.read(this._readableState.length); + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket.CLOSING; + this.destroy(); + } + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/stream.js +var require_stream2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/stream.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket3(); + var { Duplex } = __require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err2) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err2); + } + } + function createWebSocketStream(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) ws.pause(); + }); + ws.once("error", function error(err2) { + if (duplex.destroyed) return; + terminateOnDestroy = false; + duplex.destroy(err2); + }); + ws.once("close", function close() { + if (duplex.destroyed) return; + duplex.push(null); + }); + duplex._destroy = function(err2, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err2); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error(err3) { + called = true; + callback(err3); + }); + ws.once("close", function close() { + if (!called) callback(err2); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module2.exports = createWebSocketStream; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/subprotocol.js +var require_subprotocol2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/subprotocol.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation2(); + function parse(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i = 0; + for (i; i < header.length; i++) { + const code = header.charCodeAt(i); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module2.exports = { parse }; + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket-server.js +var require_websocket_server2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket-server.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var http2 = __require("http"); + var { Duplex } = __require("stream"); + var { createHash } = __require("crypto"); + var extension = require_extension2(); + var PerMessageDeflate = require_permessage_deflate2(); + var subprotocol = require_subprotocol2(); + var WebSocket = require_websocket3(); + var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants14(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer = class extends EventEmitter { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to + * wait for the closing handshake to finish after `websocket.close()` is + * called + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + allowSynchronousEvents: true, + autoPong: true, + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + closeTimeout: CLOSE_TIMEOUT, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http2.createServer((req, res) => { + const body = http2.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) this.once("close", cb); + if (this._state === CLOSING) return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const upgrade = req.headers.upgrade; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (key === void 0 || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 13 && version !== 8) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, { + "Sec-WebSocket-Version": "13, 8" + }); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err2) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null, void 0, this.options); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + allowSynchronousEvents: this.options.allowSynchronousEvents, + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module2.exports = WebSocketServer; + function addListeners(server, map) { + for (const event of Object.keys(map)) server.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server.removeListener(event, map[event]); + } + }; + } + function emitClose(server) { + server._state = CLOSED; + server.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http2.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http2.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server, req, socket, code, message, headers) { + if (server.listenerCount("wsClientError")) { + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshakeOrEmitwsClientError); + server.emit("wsClientError", err2, socket, req); + } else { + abortHandshake(socket, code, message, headers); + } + } + } +}); + +// node_modules/@xrplf/isomorphic/node_modules/ws/index.js +var require_ws2 = __commonJS({ + "node_modules/@xrplf/isomorphic/node_modules/ws/index.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket3(); + WebSocket.createWebSocketStream = require_stream2(); + WebSocket.Server = require_websocket_server2(); + WebSocket.Receiver = require_receiver2(); + WebSocket.Sender = require_sender2(); + WebSocket.WebSocket = WebSocket; + WebSocket.WebSocketServer = WebSocket.Server; + module2.exports = WebSocket; + } +}); + +// node_modules/@xrplf/isomorphic/dist/ws/index.js +var require_ws3 = __commonJS({ + "node_modules/@xrplf/isomorphic/dist/ws/index.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ws_1 = __importDefault2(require_ws2()); + var Socket = class extends ws_1.default { + constructor(...args) { + super(args[0], args[1], args[2]); + this.setMaxListeners(Infinity); + } + }; + exports2.default = Socket; + } +}); + +// node_modules/xrpl/dist/npm/client/ConnectionManager.js +var require_ConnectionManager = __commonJS({ + "node_modules/xrpl/dist/npm/client/ConnectionManager.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var ConnectionManager = class { + constructor() { + this.promisesAwaitingConnection = []; + } + resolveAllAwaiting() { + this.promisesAwaitingConnection.map(({ resolve }) => resolve()); + this.promisesAwaitingConnection = []; + } + rejectAllAwaiting(error) { + this.promisesAwaitingConnection.map(({ reject }) => reject(error)); + this.promisesAwaitingConnection = []; + } + awaitConnection() { + return __awaiter2(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + this.promisesAwaitingConnection.push({ resolve, reject }); + }); + }); + } + }; + exports2.default = ConnectionManager; + } +}); + +// node_modules/xrpl/dist/npm/client/ExponentialBackoff.js +var require_ExponentialBackoff = __commonJS({ + "node_modules/xrpl/dist/npm/client/ExponentialBackoff.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + var DEFAULT_MIN = 100; + var DEFAULT_MAX = 1e3; + var ExponentialBackoff = class { + constructor(opts = {}) { + var _a, _b; + this.factor = 2; + this.numAttempts = 0; + this.ms = (_a = opts.min) !== null && _a !== void 0 ? _a : DEFAULT_MIN; + this.max = (_b = opts.max) !== null && _b !== void 0 ? _b : DEFAULT_MAX; + } + get attempts() { + return this.numAttempts; + } + duration() { + const ms = this.ms * Math.pow(this.factor, this.numAttempts); + this.numAttempts += 1; + return Math.floor(Math.min(ms, this.max)); + } + reset() { + this.numAttempts = 0; + } + }; + exports2.default = ExponentialBackoff; + } +}); + +// node_modules/xrpl/dist/npm/client/RequestManager.js +var require_RequestManager = __commonJS({ + "node_modules/xrpl/dist/npm/client/RequestManager.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var errors_1 = require_errors8(); + var RequestManager = class { + constructor() { + this.nextId = 0; + this.promisesAwaitingResponse = /* @__PURE__ */ new Map(); + } + addPromise(newId, timer) { + return __awaiter2(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + this.promisesAwaitingResponse.set(newId, { + resolve, + reject, + timer + }); + }); + }); + } + resolve(id, response) { + const promise = this.promisesAwaitingResponse.get(id); + if (promise == null) { + throw new errors_1.XrplError(`No existing promise with id ${id}`, { + type: "resolve", + response + }); + } + clearTimeout(promise.timer); + promise.resolve(response); + this.deletePromise(id); + } + reject(id, error) { + const promise = this.promisesAwaitingResponse.get(id); + if (promise == null) { + throw new errors_1.XrplError(`No existing promise with id ${id}`, { + type: "reject", + error + }); + } + clearTimeout(promise.timer); + promise.reject(error); + this.deletePromise(id); + } + rejectAll(error) { + this.promisesAwaitingResponse.forEach((_promise, id, _map) => { + this.reject(id, error); + this.deletePromise(id); + }); + } + createRequest(request, timeout) { + let newId; + if (request.id == null) { + newId = this.nextId; + this.nextId += 1; + } else { + newId = request.id; + } + const newRequest = JSON.stringify(Object.assign(Object.assign({}, request), { id: newId })); + const timer = setTimeout(() => { + this.reject(newId, new errors_1.TimeoutError(`Timeout for request: ${JSON.stringify(request)} with id ${newId}`, request)); + }, timeout); + if (timer.unref) { + ; + timer.unref(); + } + if (this.promisesAwaitingResponse.has(newId)) { + clearTimeout(timer); + throw new errors_1.XrplError(`Response with id '${newId}' is already pending`, request); + } + const newPromise = new Promise((resolve, reject) => { + this.promisesAwaitingResponse.set(newId, { + resolve, + reject, + timer + }); + }); + return [newId, newRequest, newPromise]; + } + handleResponse(response) { + var _a, _b, _c; + if (response.id == null || !(typeof response.id === "string" || typeof response.id === "number")) { + throw new errors_1.ResponseFormatError("valid id not found in response", response); + } + if (!this.promisesAwaitingResponse.has(response.id)) { + return; + } + if (response.status == null) { + const error = new errors_1.ResponseFormatError("Response has no status"); + this.reject(response.id, error); + } + if (response.status === "error") { + const errorResponse = response; + const error = new errors_1.RippledError((_b = (_a = errorResponse.error_message) !== null && _a !== void 0 ? _a : errorResponse.error_exception) !== null && _b !== void 0 ? _b : errorResponse.error, errorResponse); + this.reject(response.id, error); + return; + } + if (response.status !== "success") { + const error = new errors_1.ResponseFormatError(`unrecognized response.status: ${(_c = response.status) !== null && _c !== void 0 ? _c : ""}`, response); + this.reject(response.id, error); + return; + } + delete response.status; + this.resolve(response.id, response); + } + deletePromise(id) { + this.promisesAwaitingResponse.delete(id); + } + }; + exports2.default = RequestManager; + } +}); + +// node_modules/xrpl/dist/npm/client/connection.js +var require_connection = __commonJS({ + "node_modules/xrpl/dist/npm/client/connection.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Connection = exports2.INTENTIONAL_DISCONNECT_CODE = void 0; + var utils_1 = require_utils10(); + var ws_1 = __importDefault2(require_ws3()); + var eventemitter3_1 = require_eventemitter3(); + var errors_1 = require_errors8(); + var ConnectionManager_1 = __importDefault2(require_ConnectionManager()); + var ExponentialBackoff_1 = __importDefault2(require_ExponentialBackoff()); + var RequestManager_1 = __importDefault2(require_RequestManager()); + var SECONDS_PER_MINUTE = 60; + var TIMEOUT = 20; + var CONNECTION_TIMEOUT = 5; + exports2.INTENTIONAL_DISCONNECT_CODE = 4e3; + function createWebSocket(url, config2) { + const options = { + agent: config2.agent + }; + if (config2.headers) { + options.headers = config2.headers; + } + if (config2.authorization != null) { + options.headers = Object.assign(Object.assign({}, options.headers), { Authorization: `Basic ${btoa(config2.authorization)}` }); + } + const websocketOptions = Object.assign({}, options); + return new ws_1.default(url, websocketOptions); + } + function websocketSendAsync(ws, message) { + return __awaiter2(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + ws.send(message, (error) => { + if (error) { + reject(new errors_1.DisconnectedError(error.message, error)); + } else { + resolve(); + } + }); + }); + }); + } + var Connection = class extends eventemitter3_1.EventEmitter { + constructor(url, options = {}) { + super(); + this.ws = null; + this.reconnectTimeoutID = null; + this.heartbeatIntervalID = null; + this.retryConnectionBackoff = new ExponentialBackoff_1.default({ + min: 100, + max: SECONDS_PER_MINUTE * 1e3 + }); + this.requestManager = new RequestManager_1.default(); + this.connectionManager = new ConnectionManager_1.default(); + this.trace = () => { + }; + this.url = url; + this.config = Object.assign({ timeout: TIMEOUT * 1e3, connectionTimeout: CONNECTION_TIMEOUT * 1e3 }, options); + if (typeof options.trace === "function") { + this.trace = options.trace; + } else if (options.trace) { + this.trace = console.log; + } + } + get state() { + return this.ws ? this.ws.readyState : ws_1.default.CLOSED; + } + get shouldBeConnected() { + return this.ws !== null; + } + isConnected() { + return this.state === ws_1.default.OPEN; + } + connect() { + return __awaiter2(this, void 0, void 0, function* () { + if (this.isConnected()) { + return Promise.resolve(); + } + if (this.state === ws_1.default.CONNECTING) { + return this.connectionManager.awaitConnection(); + } + if (!this.url) { + return Promise.reject(new errors_1.ConnectionError("Cannot connect because no server was specified")); + } + if (this.ws != null) { + return Promise.reject(new errors_1.XrplError("Websocket connection never cleaned up.", { + state: this.state + })); + } + const connectionTimeoutID = setTimeout(() => { + this.onConnectionFailed(new errors_1.ConnectionError(`Error: connect() timed out after ${this.config.connectionTimeout} ms. If your internet connection is working, the rippled server may be blocked or inaccessible. You can also try setting the 'connectionTimeout' option in the Client constructor.`)); + }, this.config.connectionTimeout); + this.ws = createWebSocket(this.url, this.config); + if (this.ws == null) { + throw new errors_1.XrplError("Connect: created null websocket"); + } + this.ws.on("error", (error) => this.onConnectionFailed(error)); + this.ws.on("error", () => clearTimeout(connectionTimeoutID)); + this.ws.on("close", (reason) => this.onConnectionFailed(reason)); + this.ws.on("close", () => clearTimeout(connectionTimeoutID)); + this.ws.once("open", () => { + void this.onceOpen(connectionTimeoutID); + }); + return this.connectionManager.awaitConnection(); + }); + } + disconnect() { + return __awaiter2(this, void 0, void 0, function* () { + this.clearHeartbeatInterval(); + if (this.reconnectTimeoutID !== null) { + clearTimeout(this.reconnectTimeoutID); + this.reconnectTimeoutID = null; + } + if (this.state === ws_1.default.CLOSED) { + return Promise.resolve(void 0); + } + if (this.ws == null) { + return Promise.resolve(void 0); + } + return new Promise((resolve) => { + if (this.ws == null) { + resolve(void 0); + } + if (this.ws != null) { + this.ws.once("close", (code) => resolve(code)); + } + if (this.ws != null && this.state !== ws_1.default.CLOSING) { + this.ws.close(exports2.INTENTIONAL_DISCONNECT_CODE); + } + }); + }); + } + reconnect() { + return __awaiter2(this, void 0, void 0, function* () { + this.emit("reconnect"); + yield this.disconnect(); + yield this.connect(); + }); + } + request(request, timeout) { + return __awaiter2(this, void 0, void 0, function* () { + if (!this.shouldBeConnected || this.ws == null) { + throw new errors_1.NotConnectedError(JSON.stringify(request), request); + } + const [id, message, responsePromise] = this.requestManager.createRequest(request, timeout !== null && timeout !== void 0 ? timeout : this.config.timeout); + this.trace("send", message); + websocketSendAsync(this.ws, message).catch((error) => { + try { + this.requestManager.reject(id, error); + } catch (err2) { + if (err2 instanceof errors_1.XrplError) { + this.trace("send", `send errored after connection was closed: ${err2.toString()}`); + } else { + this.trace("send", String(err2)); + } + } + }); + return responsePromise; + }); + } + getUrl() { + var _a; + return (_a = this.url) !== null && _a !== void 0 ? _a : ""; + } + onMessage(message) { + this.trace("receive", message); + let data; + try { + data = JSON.parse(message); + } catch (error) { + if (error instanceof Error) { + this.emit("error", "badMessage", error.message, message); + } + return; + } + if (data.type == null && data.error) { + this.emit("error", data.error, data.error_message, data); + return; + } + if (data.type) { + this.emit(data.type, data); + } + if (data.type === "response") { + try { + this.requestManager.handleResponse(data); + } catch (error) { + if (error instanceof Error) { + this.emit("error", "badMessage", error.message, message); + } else { + this.emit("error", "badMessage", error, error); + } + } + } + } + onceOpen(connectionTimeoutID) { + return __awaiter2(this, void 0, void 0, function* () { + if (this.ws == null) { + throw new errors_1.XrplError("onceOpen: ws is null"); + } + this.ws.removeAllListeners(); + clearTimeout(connectionTimeoutID); + this.ws.on("message", (message) => this.onMessage(message)); + this.ws.on("error", (error) => this.emit("error", "websocket", error.message, error)); + this.ws.once("close", (code, reason) => { + if (this.ws == null) { + throw new errors_1.XrplError("onceClose: ws is null"); + } + this.clearHeartbeatInterval(); + this.requestManager.rejectAll(new errors_1.DisconnectedError(`websocket was closed, ${reason ? (0, utils_1.hexToString)((0, utils_1.bytesToHex)(reason)) : ""}`)); + this.ws.removeAllListeners(); + this.ws = null; + if (code === void 0) { + const internalErrorCode = 1011; + this.emit("disconnected", internalErrorCode); + } else { + this.emit("disconnected", code); + } + if (code !== exports2.INTENTIONAL_DISCONNECT_CODE && code !== void 0) { + this.intentionalDisconnect(); + } + }); + try { + this.retryConnectionBackoff.reset(); + this.startHeartbeatInterval(); + this.connectionManager.resolveAllAwaiting(); + this.emit("connected"); + } catch (error) { + if (error instanceof Error) { + this.connectionManager.rejectAllAwaiting(error); + yield this.disconnect().catch(() => { + }); + } + } + }); + } + intentionalDisconnect() { + const retryTimeout = this.retryConnectionBackoff.duration(); + this.trace("reconnect", `Retrying connection in ${retryTimeout}ms.`); + this.emit("reconnecting", this.retryConnectionBackoff.attempts); + this.reconnectTimeoutID = setTimeout(() => { + this.reconnect().catch((error) => { + this.emit("error", "reconnect", error.message, error); + }); + }, retryTimeout); + } + clearHeartbeatInterval() { + if (this.heartbeatIntervalID) { + clearInterval(this.heartbeatIntervalID); + } + } + startHeartbeatInterval() { + this.clearHeartbeatInterval(); + this.heartbeatIntervalID = setInterval(() => { + void this.heartbeat(); + }, this.config.timeout); + } + heartbeat() { + return __awaiter2(this, void 0, void 0, function* () { + this.request({ command: "ping" }).catch(() => __awaiter2(this, void 0, void 0, function* () { + return this.reconnect().catch((error) => { + this.emit("error", "reconnect", error.message, error); + }); + })); + }); + } + onConnectionFailed(errorOrCode) { + if (this.ws) { + this.ws.removeAllListeners(); + this.ws.on("error", () => { + }); + this.ws.close(); + this.ws = null; + } + if (typeof errorOrCode === "number") { + this.connectionManager.rejectAllAwaiting(new errors_1.NotConnectedError(`Connection failed with code ${errorOrCode}.`, { + code: errorOrCode + })); + } else if (errorOrCode === null || errorOrCode === void 0 ? void 0 : errorOrCode.message) { + this.connectionManager.rejectAllAwaiting(new errors_1.NotConnectedError(errorOrCode.message, errorOrCode)); + } else { + this.connectionManager.rejectAllAwaiting(new errors_1.NotConnectedError("Connection failed.")); + } + } + }; + exports2.Connection = Connection; + } +}); + +// node_modules/xrpl/dist/npm/client/partialPayment.js +var require_partialPayment = __commonJS({ + "node_modules/xrpl/dist/npm/client/partialPayment.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.handleStreamPartialPayment = exports2.handlePartialPayment = void 0; + var bignumber_js_1 = __importDefault2(require_bignumber()); + var ripple_binary_codec_1 = require_dist5(); + var transactions_1 = require_transactions(); + var utils_1 = require_utils13(); + var WARN_PARTIAL_PAYMENT_CODE = 2001; + function amountsEqual(amt1, amt2) { + if (typeof amt1 === "string" && typeof amt2 === "string") { + return amt1 === amt2; + } + if (typeof amt1 === "string" || typeof amt2 === "string") { + return false; + } + if ((0, transactions_1.isMPTAmount)(amt1) && (0, transactions_1.isMPTAmount)(amt2)) { + const aValue2 = new bignumber_js_1.default(amt1.value); + const bValue2 = new bignumber_js_1.default(amt2.value); + return amt1.mpt_issuance_id === amt2.mpt_issuance_id && aValue2.isEqualTo(bValue2); + } + if ((0, transactions_1.isMPTAmount)(amt1) || (0, transactions_1.isMPTAmount)(amt2)) { + return false; + } + const aValue = new bignumber_js_1.default(amt1.value); + const bValue = new bignumber_js_1.default(amt2.value); + return amt1.currency === amt2.currency && amt1.issuer === amt2.issuer && aValue.isEqualTo(bValue); + } + function isPartialPayment(tx, metadata) { + var _a, _b; + if (tx == null || metadata == null || tx.TransactionType !== "Payment") { + return false; + } + let meta = metadata; + if (typeof meta === "string") { + if (meta === "unavailable") { + return false; + } + meta = (0, ripple_binary_codec_1.decode)(meta); + } + const tfPartial = typeof tx.Flags === "number" ? (0, utils_1.isFlagEnabled)(tx.Flags, transactions_1.PaymentFlags.tfPartialPayment) : (_a = tx.Flags) === null || _a === void 0 ? void 0 : _a.tfPartialPayment; + if (!tfPartial) { + return false; + } + const delivered = meta.delivered_amount; + const amount = (_b = tx.DeliverMax) !== null && _b !== void 0 ? _b : tx.Amount; + if (delivered === void 0) { + return false; + } + return !amountsEqual(delivered, amount); + } + function txHasPartialPayment(response) { + return isPartialPayment(response.result.tx_json, response.result.meta); + } + function txEntryHasPartialPayment(response) { + return isPartialPayment(response.result.tx_json, response.result.metadata); + } + function accountTxHasPartialPayment(response) { + const { transactions } = response.result; + const foo = transactions.some((tx) => { + if (tx.tx_json != null) { + const transaction2 = tx; + return isPartialPayment(transaction2.tx_json, transaction2.meta); + } + const transaction = tx; + return isPartialPayment(transaction.tx, transaction.meta); + }); + return foo; + } + function hasPartialPayment(command, response) { + switch (command) { + case "tx": + return txHasPartialPayment(response); + case "transaction_entry": + return txEntryHasPartialPayment(response); + case "account_tx": + return accountTxHasPartialPayment(response); + default: + return false; + } + } + function handlePartialPayment(command, response) { + var _a; + if (hasPartialPayment(command, response)) { + const warnings = (_a = response.warnings) !== null && _a !== void 0 ? _a : []; + const warning = { + id: WARN_PARTIAL_PAYMENT_CODE, + message: "This response contains a Partial Payment" + }; + warnings.push(warning); + response.warnings = warnings; + } + } + exports2.handlePartialPayment = handlePartialPayment; + function handleStreamPartialPayment(stream, log2) { + var _a, _b; + if (isPartialPayment((_a = stream.tx_json) !== null && _a !== void 0 ? _a : stream.transaction, stream.meta)) { + const warnings = (_b = stream.warnings) !== null && _b !== void 0 ? _b : []; + const warning = { + id: WARN_PARTIAL_PAYMENT_CODE, + message: "This response contains a Partial Payment" + }; + warnings.push(warning); + stream.warnings = warnings; + log2("Partial payment received", JSON.stringify(stream)); + } + } + exports2.handleStreamPartialPayment = handleStreamPartialPayment; + } +}); + +// node_modules/xrpl/dist/npm/client/index.js +var require_client3 = __commonJS({ + "node_modules/xrpl/dist/npm/client/index.js"(exports2) { + "use strict"; + var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Client = void 0; + var eventemitter3_1 = require_eventemitter3(); + var errors_1 = require_errors8(); + var common_1 = require_common3(); + var flags_1 = require_flags(); + var sugar_1 = require_sugar(); + var autofill_1 = require_autofill(); + var balances_1 = require_balances(); + var getOrderbook_1 = require_getOrderbook(); + var utils_1 = require_utils17(); + var Wallet_1 = require_Wallet(); + var fundWallet_1 = require_fundWallet(); + var connection_1 = require_connection(); + var partialPayment_1 = require_partialPayment(); + function getCollectKeyFromCommand(command) { + switch (command) { + case "account_channels": + return "channels"; + case "account_lines": + return "lines"; + case "account_objects": + return "account_objects"; + case "account_tx": + return "transactions"; + case "account_offers": + case "book_offers": + return "offers"; + case "ledger_data": + return "state"; + default: + return null; + } + } + function clamp(value, min, max) { + if (min > max) { + throw new Error("Illegal clamp bounds"); + } + return Math.min(Math.max(value, min), max); + } + var DEFAULT_FEE_CUSHION = 1.2; + var DEFAULT_MAX_FEE_XRP = "2"; + var MIN_LIMIT = 10; + var MAX_LIMIT = 400; + var NORMAL_DISCONNECT_CODE = 1e3; + var Client = class extends eventemitter3_1.EventEmitter { + constructor(server, options = {}) { + var _a, _b; + super(); + this.apiVersion = common_1.DEFAULT_API_VERSION; + if (typeof server !== "string" || !/wss?(?:\+unix)?:\/\//u.exec(server)) { + throw new errors_1.ValidationError("server URI must start with `wss://`, `ws://`, `wss+unix://`, or `ws+unix://`."); + } + this.feeCushion = (_a = options.feeCushion) !== null && _a !== void 0 ? _a : DEFAULT_FEE_CUSHION; + this.maxFeeXRP = (_b = options.maxFeeXRP) !== null && _b !== void 0 ? _b : DEFAULT_MAX_FEE_XRP; + this.connection = new connection_1.Connection(server, options); + this.connection.on("error", (errorCode, errorMessage, data) => { + this.emit("error", errorCode, errorMessage, data); + }); + this.connection.on("reconnect", () => { + this.connection.on("connected", () => this.emit("connected")); + }); + this.connection.on("disconnected", (code) => { + let finalCode = code; + if (finalCode === connection_1.INTENTIONAL_DISCONNECT_CODE) { + finalCode = NORMAL_DISCONNECT_CODE; + } + this.emit("disconnected", finalCode); + }); + this.connection.on("ledgerClosed", (ledger) => { + this.emit("ledgerClosed", ledger); + }); + this.connection.on("transaction", (tx) => { + (0, partialPayment_1.handleStreamPartialPayment)(tx, this.connection.trace); + this.emit("transaction", tx); + }); + this.connection.on("validationReceived", (validation) => { + this.emit("validationReceived", validation); + }); + this.connection.on("manifestReceived", (manifest) => { + this.emit("manifestReceived", manifest); + }); + this.connection.on("peerStatusChange", (status) => { + this.emit("peerStatusChange", status); + }); + this.connection.on("consensusPhase", (consensus) => { + this.emit("consensusPhase", consensus); + }); + this.connection.on("path_find", (path2) => { + this.emit("path_find", path2); + }); + } + get url() { + return this.connection.getUrl(); + } + request(req) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const request = Object.assign(Object.assign({}, req), { account: typeof req.account === "string" ? (0, sugar_1.ensureClassicAddress)(req.account) : void 0, api_version: (_a = req.api_version) !== null && _a !== void 0 ? _a : this.apiVersion }); + const response = yield this.connection.request(request); + (0, partialPayment_1.handlePartialPayment)(req.command, response); + return response; + }); + } + requestNextPage(req, resp) { + return __awaiter2(this, void 0, void 0, function* () { + if (!resp.result.marker) { + return Promise.reject(new errors_1.NotFoundError("response does not have a next page")); + } + const nextPageRequest = Object.assign(Object.assign({}, req), { marker: resp.result.marker }); + return this.request(nextPageRequest); + }); + } + on(eventName, listener) { + return super.on(eventName, listener); + } + requestAll(request, collect) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const collectKey = collect !== null && collect !== void 0 ? collect : getCollectKeyFromCommand(request.command); + if (!collectKey) { + throw new errors_1.ValidationError(`no collect key for command ${request.command}`); + } + const countTo = (_a = request.limit) !== null && _a !== void 0 ? _a : Infinity; + let count = 0; + let marker = request.marker; + const results = []; + do { + const countRemaining = clamp(countTo - count, MIN_LIMIT, MAX_LIMIT); + const repeatProps = Object.assign(Object.assign({}, request), { limit: countRemaining, marker }); + const singleResponse = yield this.connection.request(repeatProps); + const singleResult = singleResponse.result; + if (!(collectKey in singleResult)) { + throw new errors_1.XrplError(`${collectKey} not in result`); + } + const collectedData = singleResult[collectKey]; + marker = singleResult.marker; + results.push(singleResponse); + if (Array.isArray(collectedData)) { + count += collectedData.length; + } + } while (Boolean(marker) && count < countTo); + return results; + }); + } + getServerInfo() { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + try { + const response = yield this.request({ + command: "server_info" + }); + this.networkID = (_a = response.result.info.network_id) !== null && _a !== void 0 ? _a : void 0; + this.buildVersion = response.result.info.build_version; + } catch (error) { + console.error(error); + } + }); + } + connect() { + return __awaiter2(this, void 0, void 0, function* () { + return this.connection.connect().then(() => __awaiter2(this, void 0, void 0, function* () { + yield this.getServerInfo(); + this.emit("connected"); + })); + }); + } + disconnect() { + return __awaiter2(this, void 0, void 0, function* () { + yield this.connection.disconnect(); + }); + } + isConnected() { + return this.connection.isConnected(); + } + autofill(transaction, signersCount) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const tx = Object.assign({}, transaction); + (0, autofill_1.setValidAddresses)(tx); + tx.Flags = (0, flags_1.convertTxFlagsToNumber)(tx); + const promises = []; + (_a = tx.NetworkID) !== null && _a !== void 0 ? _a : tx.NetworkID = (0, autofill_1.txNeedsNetworkID)(this) ? this.networkID : void 0; + if (tx.Sequence == null) { + promises.push((0, autofill_1.setNextValidSequenceNumber)(this, tx)); + } + if (tx.Fee == null) { + promises.push((0, autofill_1.getTransactionFee)(this, tx, signersCount)); + } + if (tx.LastLedgerSequence == null) { + promises.push((0, autofill_1.setLatestValidatedLedgerSequence)(this, tx)); + } + if (tx.TransactionType === "AccountDelete") { + promises.push((0, autofill_1.checkAccountDeleteBlockers)(this, tx)); + } + if (tx.TransactionType === "Batch") { + promises.push((0, autofill_1.autofillBatchTxn)(this, tx)); + } + if (tx.TransactionType === "Payment" && tx.DeliverMax != null) { + (0, autofill_1.handleDeliverMax)(tx); + } + return Promise.all(promises).then(() => tx); + }); + } + simulate(transaction, opts) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const binary = (_a = opts === null || opts === void 0 ? void 0 : opts.binary) !== null && _a !== void 0 ? _a : false; + const request = typeof transaction === "string" ? { command: "simulate", tx_blob: transaction, binary } : { command: "simulate", tx_json: transaction, binary }; + return this.request(request); + }); + } + submit(transaction, opts) { + return __awaiter2(this, void 0, void 0, function* () { + const signedTx = yield (0, sugar_1.getSignedTx)(this, transaction, opts); + return (0, sugar_1.submitRequest)(this, signedTx, opts === null || opts === void 0 ? void 0 : opts.failHard); + }); + } + submitAndWait(transaction, opts) { + return __awaiter2(this, void 0, void 0, function* () { + const signedTx = yield (0, sugar_1.getSignedTx)(this, transaction, opts); + const lastLedger = (0, sugar_1.getLastLedgerSequence)(signedTx); + if (lastLedger == null) { + throw new errors_1.ValidationError("Transaction must contain a LastLedgerSequence value for reliable submission."); + } + const response = yield (0, sugar_1.submitRequest)(this, signedTx, opts === null || opts === void 0 ? void 0 : opts.failHard); + if (response.result.engine_result.startsWith("tem")) { + throw new errors_1.XrplError(`Transaction failed, ${response.result.engine_result}: ${response.result.engine_result_message}`); + } + const txHash = utils_1.hashes.hashSignedTx(signedTx); + return (0, sugar_1.waitForFinalTransactionOutcome)(this, txHash, lastLedger, response.result.engine_result); + }); + } + prepareTransaction(transaction, signersCount) { + return __awaiter2(this, void 0, void 0, function* () { + return this.autofill(transaction, signersCount); + }); + } + getXrpBalance(address, options = {}) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const xrpRequest = { + command: "account_info", + account: address, + ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : "validated", + ledger_hash: options.ledger_hash + }; + const response = yield this.request(xrpRequest); + return (0, utils_1.dropsToXrp)(response.result.account_data.Balance); + }); + } + getBalances(address, options = {}) { + var _a; + return __awaiter2(this, void 0, void 0, function* () { + const balances = []; + let xrpPromise = Promise.resolve(0); + if (!options.peer) { + xrpPromise = this.getXrpBalance(address, { + ledger_hash: options.ledger_hash, + ledger_index: options.ledger_index + }); + } + const linesRequest = { + command: "account_lines", + account: address, + ledger_index: (_a = options.ledger_index) !== null && _a !== void 0 ? _a : "validated", + ledger_hash: options.ledger_hash, + peer: options.peer, + limit: options.limit + }; + const linesPromise = this.requestAll(linesRequest); + yield Promise.all([xrpPromise, linesPromise]).then(([xrpBalance, linesResponses]) => { + const accountLinesBalance = linesResponses.flatMap((response) => (0, balances_1.formatBalances)(response.result.lines)); + if (xrpBalance !== 0) { + balances.push({ currency: "XRP", value: xrpBalance.toString() }); + } + balances.push(...accountLinesBalance); + }); + return balances.slice(0, options.limit); + }); + } + getOrderbook(currency1, currency2, options = {}) { + return __awaiter2(this, void 0, void 0, function* () { + (0, getOrderbook_1.validateOrderbookOptions)(options); + const request = (0, getOrderbook_1.createBookOffersRequest)(currency1, currency2, options); + const directOfferResults = yield (0, getOrderbook_1.requestAllOffers)(this, request); + const reverseOfferResults = yield (0, getOrderbook_1.requestAllOffers)(this, (0, getOrderbook_1.reverseRequest)(request)); + const directOffers = (0, getOrderbook_1.extractOffers)(directOfferResults); + const reverseOffers = (0, getOrderbook_1.extractOffers)(reverseOfferResults); + const orders = (0, getOrderbook_1.combineOrders)(directOffers, reverseOffers); + const { buy, sell } = (0, getOrderbook_1.separateBuySellOrders)(orders); + return { + buy: (0, getOrderbook_1.sortAndLimitOffers)(buy, options.limit), + sell: (0, getOrderbook_1.sortAndLimitOffers)(sell, options.limit) + }; + }); + } + getLedgerIndex() { + return __awaiter2(this, void 0, void 0, function* () { + const ledgerResponse = yield this.request({ + command: "ledger", + ledger_index: "validated" + }); + return ledgerResponse.result.ledger_index; + }); + } + fundWallet(wallet, options = {}) { + return __awaiter2(this, void 0, void 0, function* () { + if (!this.isConnected()) { + throw new errors_1.RippledError("Client not connected, cannot call faucet"); + } + const existingWallet = Boolean(wallet); + const walletToFund = wallet && (0, utils_1.isValidClassicAddress)(wallet.classicAddress) ? wallet : Wallet_1.Wallet.generate(); + const postBody = { + destination: walletToFund.classicAddress, + xrpAmount: options.amount, + usageContext: options.usageContext, + userAgent: "xrpl.js" + }; + let startingBalance = 0; + if (existingWallet) { + try { + startingBalance = Number(yield this.getXrpBalance(walletToFund.classicAddress)); + } catch (_a) { + } + } + return (0, fundWallet_1.requestFunding)(options, this, startingBalance, walletToFund, postBody); + }); + } + }; + exports2.Client = Client; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/Amendments.js +var require_Amendments = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/Amendments.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.AMENDMENTS_ID = void 0; + exports2.AMENDMENTS_ID = "7DB0788C020F02780A673DC74757F23823FA3014C1866E72CC4CD8B226CD6EF4"; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/FeeSettings.js +var require_FeeSettings = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/FeeSettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.FEE_SETTINGS_ID = void 0; + exports2.FEE_SETTINGS_ID = "4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A651"; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/NegativeUNL.js +var require_NegativeUNL = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/NegativeUNL.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.NEGATIVE_UNL_ID = void 0; + exports2.NEGATIVE_UNL_ID = "2E8A59AA9D3B5B186B0B9E0F62E6C02587CA74A4D778938E957B6357D364B244"; + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/RippleState.js +var require_RippleState = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/RippleState.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.RippleStateFlags = void 0; + var RippleStateFlags; + (function(RippleStateFlags2) { + RippleStateFlags2[RippleStateFlags2["lsfLowReserve"] = 65536] = "lsfLowReserve"; + RippleStateFlags2[RippleStateFlags2["lsfHighReserve"] = 131072] = "lsfHighReserve"; + RippleStateFlags2[RippleStateFlags2["lsfLowAuth"] = 262144] = "lsfLowAuth"; + RippleStateFlags2[RippleStateFlags2["lsfHighAuth"] = 524288] = "lsfHighAuth"; + RippleStateFlags2[RippleStateFlags2["lsfLowNoRipple"] = 1048576] = "lsfLowNoRipple"; + RippleStateFlags2[RippleStateFlags2["lsfHighNoRipple"] = 2097152] = "lsfHighNoRipple"; + RippleStateFlags2[RippleStateFlags2["lsfLowFreeze"] = 4194304] = "lsfLowFreeze"; + RippleStateFlags2[RippleStateFlags2["lsfHighFreeze"] = 8388608] = "lsfHighFreeze"; + RippleStateFlags2[RippleStateFlags2["lsfAMMNode"] = 16777216] = "lsfAMMNode"; + RippleStateFlags2[RippleStateFlags2["lsfLowDeepFreeze"] = 33554432] = "lsfLowDeepFreeze"; + RippleStateFlags2[RippleStateFlags2["lsfHighDeepFreeze"] = 67108864] = "lsfHighDeepFreeze"; + })(RippleStateFlags || (exports2.RippleStateFlags = RippleStateFlags = {})); + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/SignerList.js +var require_SignerList = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/SignerList.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.SignerListFlags = void 0; + var SignerListFlags; + (function(SignerListFlags2) { + SignerListFlags2[SignerListFlags2["lsfOneOwnerCount"] = 65536] = "lsfOneOwnerCount"; + })(SignerListFlags || (exports2.SignerListFlags = SignerListFlags = {})); + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/Vault.js +var require_Vault = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/Vault.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.VaultFlags = void 0; + var VaultFlags; + (function(VaultFlags2) { + VaultFlags2[VaultFlags2["lsfVaultPrivate"] = 65536] = "lsfVaultPrivate"; + })(VaultFlags || (exports2.VaultFlags = VaultFlags = {})); + } +}); + +// node_modules/xrpl/dist/npm/models/ledger/index.js +var require_ledger = __commonJS({ + "node_modules/xrpl/dist/npm/models/ledger/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.VaultFlags = exports2.SignerListFlags = exports2.RippleStateFlags = exports2.OfferFlags = exports2.NEGATIVE_UNL_ID = exports2.FEE_SETTINGS_ID = exports2.AMENDMENTS_ID = exports2.AccountRootFlags = void 0; + var AccountRoot_1 = require_AccountRoot(); + Object.defineProperty(exports2, "AccountRootFlags", { enumerable: true, get: function() { + return AccountRoot_1.AccountRootFlags; + } }); + var Amendments_1 = require_Amendments(); + Object.defineProperty(exports2, "AMENDMENTS_ID", { enumerable: true, get: function() { + return Amendments_1.AMENDMENTS_ID; + } }); + var FeeSettings_1 = require_FeeSettings(); + Object.defineProperty(exports2, "FEE_SETTINGS_ID", { enumerable: true, get: function() { + return FeeSettings_1.FEE_SETTINGS_ID; + } }); + var NegativeUNL_1 = require_NegativeUNL(); + Object.defineProperty(exports2, "NEGATIVE_UNL_ID", { enumerable: true, get: function() { + return NegativeUNL_1.NEGATIVE_UNL_ID; + } }); + var Offer_1 = require_Offer(); + Object.defineProperty(exports2, "OfferFlags", { enumerable: true, get: function() { + return Offer_1.OfferFlags; + } }); + var RippleState_1 = require_RippleState(); + Object.defineProperty(exports2, "RippleStateFlags", { enumerable: true, get: function() { + return RippleState_1.RippleStateFlags; + } }); + var SignerList_1 = require_SignerList(); + Object.defineProperty(exports2, "SignerListFlags", { enumerable: true, get: function() { + return SignerList_1.SignerListFlags; + } }); + var Vault_1 = require_Vault(); + Object.defineProperty(exports2, "VaultFlags", { enumerable: true, get: function() { + return Vault_1.VaultFlags; + } }); + } +}); + +// node_modules/xrpl/dist/npm/models/methods/index.js +var require_methods = __commonJS({ + "node_modules/xrpl/dist/npm/models/methods/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + } +}); + +// node_modules/xrpl/dist/npm/models/index.js +var require_models = __commonJS({ + "node_modules/xrpl/dist/npm/models/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encodeMPTokenMetadata = exports2.decodeMPTokenMetadata = exports2.validateMPTokenMetadata = exports2.parseTransactionFlags = exports2.convertTxFlagsToNumber = exports2.setTransactionFlagsToNumber = exports2.parseAccountRootFlags = exports2.LedgerEntry = void 0; + exports2.LedgerEntry = __importStar2(require_ledger()); + var flags_1 = require_flags(); + Object.defineProperty(exports2, "parseAccountRootFlags", { enumerable: true, get: function() { + return flags_1.parseAccountRootFlags; + } }); + Object.defineProperty(exports2, "setTransactionFlagsToNumber", { enumerable: true, get: function() { + return flags_1.setTransactionFlagsToNumber; + } }); + Object.defineProperty(exports2, "convertTxFlagsToNumber", { enumerable: true, get: function() { + return flags_1.convertTxFlagsToNumber; + } }); + Object.defineProperty(exports2, "parseTransactionFlags", { enumerable: true, get: function() { + return flags_1.parseTransactionFlags; + } }); + var mptokenMetadata_1 = require_mptokenMetadata(); + Object.defineProperty(exports2, "validateMPTokenMetadata", { enumerable: true, get: function() { + return mptokenMetadata_1.validateMPTokenMetadata; + } }); + Object.defineProperty(exports2, "decodeMPTokenMetadata", { enumerable: true, get: function() { + return mptokenMetadata_1.decodeMPTokenMetadata; + } }); + Object.defineProperty(exports2, "encodeMPTokenMetadata", { enumerable: true, get: function() { + return mptokenMetadata_1.encodeMPTokenMetadata; + } }); + __exportStar2(require_methods(), exports2); + __exportStar2(require_transactions(), exports2); + __exportStar2(require_common3(), exports2); + } +}); + +// node_modules/@xrplf/secret-numbers/dist/utils/index.js +var require_utils20 = __commonJS({ + "node_modules/@xrplf/secret-numbers/dist/utils/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.parseSecretString = exports2.checkChecksum = exports2.calculateChecksum = exports2.secretToEntropy = exports2.entropyToSecret = exports2.randomSecret = exports2.randomEntropy = void 0; + var utils_1 = require_utils10(); + function randomEntropy() { + return (0, utils_1.randomBytes)(16); + } + exports2.randomEntropy = randomEntropy; + function calculateChecksum(position, value) { + return value * (position * 2 + 1) % 9; + } + exports2.calculateChecksum = calculateChecksum; + function checkChecksum(position, value, checksum) { + let normalizedChecksum; + let normalizedValue; + if (typeof value === "string") { + if (value.length !== 6) { + throw new Error("value must have a length of 6"); + } + normalizedChecksum = parseInt(value.slice(5), 10); + normalizedValue = parseInt(value.slice(0, 5), 10); + } else { + if (typeof checksum !== "number") { + throw new Error("checksum must be a number when value is a number"); + } + normalizedChecksum = checksum; + normalizedValue = value; + } + return normalizedValue * (position * 2 + 1) % 9 === normalizedChecksum; + } + exports2.checkChecksum = checkChecksum; + function entropyToSecret(entropy) { + const len = new Array(Math.ceil(entropy.length / 2)); + const chunks = Array.from(len, (_a, chunk) => { + const buffChunk = entropy.slice(chunk * 2, (chunk + 1) * 2); + const no = parseInt((0, utils_1.bytesToHex)(buffChunk), 16); + const fill = "0".repeat(5 - String(no).length); + return fill + String(no) + String(calculateChecksum(chunk, no)); + }); + if (chunks.length !== 8) { + throw new Error("Chucks must have 8 digits"); + } + return chunks; + } + exports2.entropyToSecret = entropyToSecret; + function randomSecret() { + return entropyToSecret(randomEntropy()); + } + exports2.randomSecret = randomSecret; + function secretToEntropy(secret) { + return (0, utils_1.concat)(secret.map((chunk, i) => { + const no = Number(chunk.slice(0, 5)); + const checksum = Number(chunk.slice(5)); + if (chunk.length !== 6) { + throw new Error("Invalid secret: number invalid"); + } + if (!checkChecksum(i, no, checksum)) { + throw new Error("Invalid secret part: checksum invalid"); + } + const hex = `0000${no.toString(16)}`.slice(-4); + return (0, utils_1.hexToBytes)(hex); + })); + } + exports2.secretToEntropy = secretToEntropy; + function parseSecretString(secret) { + const normalizedSecret = secret.replace(/[^0-9]/gu, ""); + if (normalizedSecret.length !== 48) { + throw new Error("Invalid secret string (should contain 8 blocks of 6 digits"); + } + return Array.from(new Array(8), (_a, index) => { + return normalizedSecret.slice(index * 6, (index + 1) * 6); + }); + } + exports2.parseSecretString = parseSecretString; + } +}); + +// node_modules/@xrplf/secret-numbers/dist/schema/Account.js +var require_Account = __commonJS({ + "node_modules/@xrplf/secret-numbers/dist/schema/Account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Account = void 0; + var ripple_keypairs_1 = require_dist6(); + var utils_1 = require_utils20(); + var Account = class { + constructor(secretNumbers) { + this._account = { + familySeed: "", + address: "", + keypair: { + publicKey: "", + privateKey: "" + } + }; + if (typeof secretNumbers === "string") { + this._secret = (0, utils_1.parseSecretString)(secretNumbers); + } else if (Array.isArray(secretNumbers)) { + this._secret = secretNumbers; + } else if (secretNumbers instanceof Uint8Array) { + this._secret = (0, utils_1.entropyToSecret)(secretNumbers); + } else { + this._secret = (0, utils_1.randomSecret)(); + } + validateLengths(this._secret); + this.derive(); + } + getSecret() { + return this._secret; + } + getSecretString() { + return this._secret.join(" "); + } + getAddress() { + return this._account.address; + } + getFamilySeed() { + return this._account.familySeed; + } + getKeypair() { + return this._account.keypair; + } + toString() { + return this.getSecretString(); + } + derive() { + try { + const entropy = (0, utils_1.secretToEntropy)(this._secret); + this._account.familySeed = (0, ripple_keypairs_1.generateSeed)({ entropy }); + this._account.keypair = (0, ripple_keypairs_1.deriveKeypair)(this._account.familySeed); + this._account.address = (0, ripple_keypairs_1.deriveAddress)(this._account.keypair.publicKey); + } catch (error) { + let message = "Unknown Error"; + if (error instanceof Error) { + message = error.message; + } + throw new Error(message); + } + } + }; + exports2.Account = Account; + function validateLengths(secretNumbers) { + if (secretNumbers.length !== 8) { + throw new Error("Secret must have 8 numbers"); + } + secretNumbers.forEach((num) => { + if (num.length !== 6) { + throw new Error("Each secret number must be 6 digits"); + } + }); + } + } +}); + +// node_modules/@xrplf/secret-numbers/dist/index.js +var require_dist7 = __commonJS({ + "node_modules/@xrplf/secret-numbers/dist/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + __exportStar2(require_Account(), exports2); + __exportStar2(require_utils20(), exports2); + } +}); + +// node_modules/xrpl/dist/npm/Wallet/walletFromSecretNumbers.js +var require_walletFromSecretNumbers = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/walletFromSecretNumbers.js"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.walletFromSecretNumbers = void 0; + var secret_numbers_1 = require_dist7(); + var ECDSA_1 = __importDefault2(require_ECDSA()); + var _1 = require_Wallet(); + function walletFromSecretNumbers(secretNumbers, opts) { + var _a; + const secret = new secret_numbers_1.Account(secretNumbers).getFamilySeed(); + const updatedOpts = { + masterAddress: void 0, + algorithm: void 0 + }; + if (opts === void 0) { + updatedOpts.algorithm = ECDSA_1.default.secp256k1; + } else { + updatedOpts.masterAddress = opts.masterAddress; + updatedOpts.algorithm = (_a = opts.algorithm) !== null && _a !== void 0 ? _a : ECDSA_1.default.secp256k1; + } + return _1.Wallet.fromSecret(secret, updatedOpts); + } + exports2.walletFromSecretNumbers = walletFromSecretNumbers; + } +}); + +// node_modules/xrpl/dist/npm/Wallet/batchSigner.js +var require_batchSigner = __commonJS({ + "node_modules/xrpl/dist/npm/Wallet/batchSigner.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.combineBatchSigners = exports2.signMultiBatch = void 0; + var ripple_binary_codec_1 = require_dist5(); + var ripple_keypairs_1 = require_dist6(); + var errors_1 = require_errors8(); + var models_1 = require_models(); + var batch_1 = require_batch(); + var hashes_1 = require_hashes2(); + var utils_1 = require_utils19(); + function constructBatchSignerObject(batchAccount, wallet, signature, multisignAddress = false) { + let batchSigner; + if (multisignAddress) { + batchSigner = { + BatchSigner: { + Account: batchAccount, + Signers: [ + { + Signer: { + Account: multisignAddress, + SigningPubKey: wallet.publicKey, + TxnSignature: signature + } + } + ] + } + }; + } else { + batchSigner = { + BatchSigner: { + Account: batchAccount, + SigningPubKey: wallet.publicKey, + TxnSignature: signature + } + }; + } + return batchSigner; + } + function signMultiBatch(wallet, transaction, opts = {}) { + var _a; + const batchAccount = (_a = opts.batchAccount) !== null && _a !== void 0 ? _a : wallet.classicAddress; + let multisignAddress = false; + if (typeof opts.multisign === "string") { + multisignAddress = opts.multisign; + } else if (opts.multisign) { + multisignAddress = wallet.classicAddress; + } + if (transaction.TransactionType !== "Batch") { + throw new errors_1.ValidationError("Must be a Batch transaction."); + } + (0, models_1.validate)(transaction); + const involvedAccounts = new Set(transaction.RawTransactions.map((raw) => raw.RawTransaction.Account)); + if (!involvedAccounts.has(batchAccount)) { + throw new errors_1.ValidationError("Must be signing for an address submitting a transaction in the Batch."); + } + const fieldsToSign = { + flags: transaction.Flags, + txIDs: transaction.RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)) + }; + const signature = (0, ripple_keypairs_1.sign)((0, ripple_binary_codec_1.encodeForSigningBatch)(fieldsToSign), wallet.privateKey); + transaction.BatchSigners = [ + constructBatchSignerObject(batchAccount, wallet, signature, multisignAddress) + ]; + } + exports2.signMultiBatch = signMultiBatch; + function combineBatchSigners(transactions) { + if (transactions.length === 0) { + throw new errors_1.ValidationError("There are 0 transactions to combine."); + } + const decodedTransactions = transactions.map((txOrBlob) => { + return (0, utils_1.getDecodedTransaction)(txOrBlob); + }); + decodedTransactions.forEach((tx) => { + if (tx.TransactionType !== "Batch") { + throw new errors_1.ValidationError("TransactionType must be `Batch`."); + } + (0, batch_1.validateBatch)(tx); + if (tx.BatchSigners == null || tx.BatchSigners.length === 0) { + throw new errors_1.ValidationError("For combining Batch transaction signatures, all transactions must include a BatchSigners field containing an array of signatures."); + } + if (tx.TxnSignature != null || tx.Signers != null) { + throw new errors_1.ValidationError("Batch transaction must be unsigned."); + } + }); + const batchTransactions = decodedTransactions; + validateBatchTransactionEquivalence(batchTransactions); + return (0, ripple_binary_codec_1.encode)(getTransactionWithAllBatchSigners(batchTransactions)); + } + exports2.combineBatchSigners = combineBatchSigners; + function validateBatchTransactionEquivalence(transactions) { + const exampleTransaction = JSON.stringify({ + flags: transactions[0].Flags, + transactionIDs: transactions[0].RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)) + }); + if (transactions.slice(1).some((tx) => JSON.stringify({ + flags: tx.Flags, + transactionIDs: tx.RawTransactions.map((rawTx) => (0, hashes_1.hashSignedTx)(rawTx.RawTransaction)) + }) !== exampleTransaction)) { + throw new errors_1.ValidationError("Flags and transaction hashes are not the same for all provided transactions."); + } + } + function getTransactionWithAllBatchSigners(transactions) { + const sortedSigners = transactions.flatMap((tx) => { + var _a; + return (_a = tx.BatchSigners) !== null && _a !== void 0 ? _a : []; + }).filter((signer) => signer.BatchSigner.Account !== transactions[0].Account).sort((signer1, signer2) => (0, utils_1.compareSigners)(signer1.BatchSigner, signer2.BatchSigner)); + return Object.assign(Object.assign({}, transactions[0]), { BatchSigners: sortedSigners }); + } + } +}); + +// node_modules/xrpl/dist/npm/index.js +var require_npm = __commonJS({ + "node_modules/xrpl/dist/npm/index.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); + }; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.rfc1751MnemonicToKey = exports2.keyToRFC1751Mnemonic = exports2.walletFromSecretNumbers = exports2.Wallet = exports2.ECDSA = exports2.Client = void 0; + var client_1 = require_client3(); + Object.defineProperty(exports2, "Client", { enumerable: true, get: function() { + return client_1.Client; + } }); + __exportStar2(require_models(), exports2); + __exportStar2(require_utils17(), exports2); + var ECDSA_1 = require_ECDSA(); + Object.defineProperty(exports2, "ECDSA", { enumerable: true, get: function() { + return __importDefault2(ECDSA_1).default; + } }); + __exportStar2(require_errors8(), exports2); + var Wallet_1 = require_Wallet(); + Object.defineProperty(exports2, "Wallet", { enumerable: true, get: function() { + return Wallet_1.Wallet; + } }); + var walletFromSecretNumbers_1 = require_walletFromSecretNumbers(); + Object.defineProperty(exports2, "walletFromSecretNumbers", { enumerable: true, get: function() { + return walletFromSecretNumbers_1.walletFromSecretNumbers; + } }); + var rfc1751_1 = require_rfc1751(); + Object.defineProperty(exports2, "keyToRFC1751Mnemonic", { enumerable: true, get: function() { + return rfc1751_1.keyToRFC1751Mnemonic; + } }); + Object.defineProperty(exports2, "rfc1751MnemonicToKey", { enumerable: true, get: function() { + return rfc1751_1.rfc1751MnemonicToKey; + } }); + __exportStar2(require_signer(), exports2); + __exportStar2(require_batchSigner(), exports2); + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/ripple.js +var require_ripple = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/ripple.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.transformTransaction = exports2.transformServerInfo = void 0; + var transformServerInfo = (payload) => ({ + name: "Ripple", + shortcut: "xrp", + network: "xrp", + testnet: false, + version: payload.result.info.build_version, + decimals: 6, + blockHeight: payload.result.info.validated_ledger?.seq ?? 0, + blockHash: payload.result.info.validated_ledger?.hash ?? "" + }); + exports2.transformServerInfo = transformServerInfo; + var BLOCKTIME_OFFSET = 946684800; + var getUnixTimestamp = (xrplTimestamp) => { + if (!xrplTimestamp || xrplTimestamp <= 0) { + return 0; + } + return xrplTimestamp + BLOCKTIME_OFFSET; + }; + var transformTransaction = (hash, tx_json, meta, descriptor) => { + let txType = "unknown"; + let addresses = []; + let amount; + let destinationTag; + if (tx_json.TransactionType === "Payment") { + const deliverMax = tx_json.DeliverMax ?? void 0; + const isTokenTransaction = typeof deliverMax !== "string"; + amount = !isTokenTransaction ? deliverMax : void 0; + if (meta != null && typeof meta !== "string" && !meta.TransactionResult?.startsWith("tes")) { + txType = "failed"; + } else if (!descriptor || isTokenTransaction) { + txType = "unknown"; + } else { + txType = tx_json.Account === descriptor ? "sent" : "recv"; + } + addresses = [tx_json.Destination]; + destinationTag = tx_json.DestinationTag; + } + return { + type: txType, + txid: hash ?? "", + amount: amount ?? "0", + fee: tx_json.Fee ?? "0", + blockTime: getUnixTimestamp(tx_json.date), + blockHeight: tx_json.ledger_index, + blockHash: hash ?? "", + targets: txType === "unknown" ? [] : [{ + addresses, + isAddress: true, + amount, + n: 0 + }], + tokens: [], + internalTransfers: [], + feeRate: void 0, + details: { + vin: [], + vout: [], + size: 0, + totalInput: "0", + totalOutput: "0" + }, + rippleSpecific: { + destinationTag + } + }; + }; + exports2.transformTransaction = transformTransaction; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/ripple/index.js +var require_ripple2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/ripple/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Ripple; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var xrpl_1 = require_npm(); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var utils = tslib_1.__importStar(require_ripple()); + var env_utils_1 = require_lib4(); + var bigNumber_1 = require_bigNumber(); + var baseWorker_1 = require_baseWorker(); + var DEFAULT_TIMEOUT = 20 * 1e3; + var DEFAULT_PING_TIMEOUT = 3 * 60 * 1e3; + var RESERVE = { + BASE: "10000000", + OWNER: "2000000" + }; + var transformError = (error) => { + if (error instanceof xrpl_1.XrplError) { + const code = error.name === "TimeoutError" ? "websocket_timeout" : "websocket_error_message"; + if (error.data) { + const errorMessageData = error.data.error_message; + const errorMessage = `${error.name} ${errorMessageData}`; + return new errors_1.CustomError(code, errorMessage); + } + return new errors_1.CustomError(code, error.toString()); + } + return error; + }; + var getInfo = async (request) => { + const client = await request.connect(); + const response = await client.request({ + command: "server_info" + }); + if (response.result.info.validated_ledger != null) { + RESERVE.BASE = (0, xrpl_1.xrpToDrops)(response.result.info.validated_ledger.reserve_base_xrp); + RESERVE.OWNER = (0, xrpl_1.xrpToDrops)(response.result.info.validated_ledger.reserve_inc_xrp); + } + return { + type: constants_1.RESPONSES.GET_INFO, + payload: { + url: client.connection.getUrl(), + ...utils.transformServerInfo(response) + } + }; + }; + var getMempoolAccountInfo = async (client, account) => { + const response = await client.request({ + command: "account_info", + account, + ledger_index: "current", + queue: true + }); + return { + xrpBalance: response.result.account_data.Balance, + sequence: response.result.account_data.Sequence, + txs: response.result.queue_data ? response.result.queue_data.txn_count : 0 + }; + }; + var getAccountInfo = async (request) => { + const { + payload + } = request; + const account = { + descriptor: payload.descriptor, + balance: "0", + availableBalance: "0", + empty: true, + history: { + total: -1, + unconfirmed: 0, + transactions: void 0 + }, + misc: { + sequence: 0, + reserve: RESERVE.BASE + } + }; + try { + const client2 = await request.connect(); + const info = await client2.request({ + command: "account_info", + account: payload.descriptor, + ledger_index: "validated" + }); + const ownersReserve = info.result.account_data.OwnerCount > 0 ? new bigNumber_1.BigNumber(info.result.account_data.OwnerCount).times(RESERVE.OWNER).toString() : "0"; + const reserve = new bigNumber_1.BigNumber(RESERVE.BASE).plus(ownersReserve).toString(); + const misc = { + sequence: info.result.account_data.Sequence, + reserve + }; + account.misc = misc; + account.balance = info.result.account_data.Balance; + account.availableBalance = new bigNumber_1.BigNumber(account.balance).minus(reserve).toString(); + account.empty = false; + } catch (error) { + if (error instanceof xrpl_1.XrplError && error.data?.error === "actNotFound") { + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account + }; + } + throw error; + } + try { + const client2 = await request.connect(); + const mempoolInfo = await getMempoolAccountInfo(client2, payload.descriptor); + const { + misc + } = account; + const reserve = misc && typeof misc.reserve === "string" ? misc.reserve : RESERVE.BASE; + account.availableBalance = new bigNumber_1.BigNumber(mempoolInfo.xrpBalance).minus(reserve).toString(); + account.misc.sequence = mempoolInfo.sequence; + account.history.unconfirmed = mempoolInfo.txs; + } catch { + } + if (payload.details !== "txs") { + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account + }; + } + const client = await request.connect(); + const response = await client.request({ + command: "account_tx", + account: payload.descriptor, + ledger_index_min: payload.from ? payload.from : void 0, + ledger_index_max: payload.to ? payload.to : void 0, + limit: payload.pageSize || 25, + marker: payload.marker, + api_version: 2 + }); + account.history.transactions = response.result.transactions.flatMap((raw) => raw.tx_json != null ? [utils.transformTransaction(raw.hash, raw.tx_json, raw.meta, payload.descriptor)] : []); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: { + ...account, + marker: response.result.marker + } + }; + }; + var getTransaction = async ({ + connect, + payload + }) => { + const client = await connect(); + const rawTx = await client.request({ + command: "tx", + transaction: payload, + binary: false + }); + const tx = utils.transformTransaction(rawTx.result.hash, rawTx.result.tx_json, rawTx.result.meta); + return { + type: constants_1.RESPONSES.GET_TRANSACTION, + payload: tx + }; + }; + var pushTransaction = async ({ + connect, + payload + }) => { + const client = await connect(); + const info = await client.submit(payload.hex.toUpperCase()); + if (info.result.engine_result === "tesSUCCESS" && info.result.tx_json.hash) { + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload: info.result.tx_json.hash + }; + } + throw new Error(info.result.engine_result_message); + }; + var estimateFee = async (request) => { + const client = await request.connect(); + const fee = await client.request({ + command: "fee" + }); + const drops = fee.result.drops.base_fee; + const payload = request.payload && Array.isArray(request.payload.blocks) ? request.payload.blocks.map(() => ({ + feePerUnit: drops + })) : [{ + feePerUnit: drops + }]; + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload + }; + }; + var onNewBlock = ({ + post + }, event) => { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight: event.ledger_index, + blockHash: event.ledger_hash + } + } + }); + }; + var onTransaction = ({ + state, + post + }, event) => { + if (event.type !== "transaction") return; + if (event.tx_json?.TransactionType !== "Payment") return; + const { + tx_json, + hash + } = event; + const notify = (descriptor) => { + if (!tx_json || !hash) return; + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "notification", + payload: { + descriptor, + tx: utils.transformTransaction(hash, tx_json, void 0, descriptor) + } + } + }); + }; + const subscribed = state.getAddresses(); + const sent = subscribed.find((a) => a === tx_json.Account); + if (sent) notify(sent); + const recv = subscribed.find((a) => a === tx_json.Destination); + if (recv) notify(recv); + }; + var subscribeAccounts = async (ctx, accounts) => { + const api = await ctx.connect(); + const { + state + } = ctx; + const prevAddresses = state.getAddresses(); + state.addAccounts(accounts); + const uniqueAddresses = state.getAddresses().filter((a) => prevAddresses.indexOf(a) < 0); + if (uniqueAddresses.length > 0) { + if (!state.getSubscription("notification")) { + api.on("transaction", (ev) => onTransaction(ctx, ev)); + state.addSubscription("notification"); + } + await api.request({ + command: "subscribe", + accounts_proposed: uniqueAddresses + }); + } + return { + subscribed: state.getAddresses().length > 0 + }; + }; + var subscribeAddresses = async (ctx, addresses) => { + const api = await ctx.connect(); + const { + state + } = ctx; + const uniqueAddresses = state.addAddresses(addresses); + if (uniqueAddresses.length > 0) { + if (!state.getSubscription("transaction")) { + api.on("transaction", (ev) => onTransaction(ctx, ev)); + state.addSubscription("transaction"); + } + await api.request({ + command: "subscribe", + accounts_proposed: uniqueAddresses + }); + } + return { + subscribed: state.getAddresses().length > 0 + }; + }; + var subscribeBlock = async (ctx) => { + if (!ctx.state.getSubscription("ledger")) { + const api = await ctx.connect(); + api.on("ledgerClosed", (ev) => onNewBlock(ctx, ev)); + ctx.state.addSubscription("ledger"); + } + return { + subscribed: true + }; + }; + var subscribe = async (request) => { + const { + payload + } = request; + let response; + if (payload.type === "accounts") { + response = await subscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + response = await subscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + response = await subscribeBlock(request); + } else { + throw new errors_1.CustomError("invalid_param", "+type"); + } + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: response + }; + }; + var unsubscribeAddresses = async ({ + state, + connect + }, addresses) => { + const api = await connect(); + if (!addresses) { + const all = state.getAddresses(); + state.removeAccounts(state.getAccounts()); + state.removeAddresses(all); + await api.request({ + command: "unsubscribe", + accounts_proposed: all + }); + } else { + state.removeAddresses(addresses); + await api.request({ + command: "unsubscribe", + accounts_proposed: addresses + }); + } + if (state.getAccounts().length < 1) { + api.connection.removeAllListeners("transaction"); + state.removeSubscription("transaction"); + } + }; + var unsubscribeAccounts = async (ctx, accounts) => { + const { + state + } = ctx; + const prevAddresses = state.getAddresses(); + state.removeAccounts(accounts || state.getAccounts()); + const addresses = state.getAddresses(); + const uniqueAddresses = prevAddresses.filter((a) => addresses.indexOf(a) < 0); + await unsubscribeAddresses(ctx, uniqueAddresses); + }; + var unsubscribeBlock = async ({ + state, + connect + }) => { + if (!state.getSubscription("ledger")) return; + const client = await connect(); + client.removeAllListeners("ledgerClosed"); + state.removeSubscription("ledger"); + }; + var unsubscribe = async (request) => { + const { + payload + } = request; + if (payload.type === "accounts") { + await unsubscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + await unsubscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + await unsubscribeBlock(request); + } + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: { + subscribed: request.state.getAddresses().length > 0 + } + }; + }; + var onRequest = (request) => { + switch (request.type) { + case constants_1.MESSAGES.GET_INFO: + return getInfo(request); + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return getAccountInfo(request); + case constants_1.MESSAGES.GET_TRANSACTION: + return getTransaction(request); + case constants_1.MESSAGES.ESTIMATE_FEE: + return estimateFee(request); + case constants_1.MESSAGES.PUSH_TRANSACTION: + return pushTransaction(request); + case constants_1.MESSAGES.SUBSCRIBE: + return subscribe(request); + case constants_1.MESSAGES.UNSUBSCRIBE: + return unsubscribe(request); + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var RippleWorker = class extends baseWorker_1.BaseWorker { + pingTimeout; + cleanup() { + if (this.pingTimeout) { + clearTimeout(this.pingTimeout); + } + if (this.api) { + this.api.removeAllListeners(); + } + super.cleanup(); + } + isConnected(client) { + return client?.isConnected() ?? false; + } + async tryConnect(url) { + const options = { + headers: { + "User-Agent": `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}` + }, + timeout: this.settings.timeout || DEFAULT_TIMEOUT, + connectionTimeout: this.settings.timeout || DEFAULT_TIMEOUT, + ...this.proxyAgent && { + agent: this.proxyAgent + } + }; + const client = new xrpl_1.Client(url, options); + await client.connect(); + client.on("ledgerClosed", (ledger) => { + RESERVE.BASE = ledger.reserve_base.toString(); + RESERVE.OWNER = ledger.reserve_inc.toString(); + }); + client.on("disconnected", () => { + this.post({ + id: -1, + type: constants_1.RESPONSES.DISCONNECTED, + payload: true + }); + this.cleanup(); + }); + this.post({ + id: -1, + type: constants_1.RESPONSES.CONNECTED + }); + client.request({ + command: "subscribe", + streams: ["ledger"] + }); + return client; + } + async disconnect() { + try { + if (this.api?.isConnected()) { + await this.api.disconnect(); + } + } catch (error) { + this.debug("Disconnect failed", error); + } finally { + this.cleanup(); + } + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + post: (data) => this.post(data), + state: this.state + }; + const response = await onRequest(request); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, transformError(error)); + } finally { + if (event.data.type !== constants_1.MESSAGES.DISCONNECT) { + this.setPingTimeout(); + } + } + } + setPingTimeout() { + if (this.pingTimeout) { + clearTimeout(this.pingTimeout); + } + this.pingTimeout = this.api?.isConnected() ? setTimeout(() => this.onPing(), this.settings.pingTimeout || DEFAULT_PING_TIMEOUT) : void 0; + } + async onPing() { + if (!this.api || !this.api.isConnected()) return; + if (this.state.hasSubscriptions() || this.settings.keepAlive) { + try { + await this.api.request({ + command: "ping" + }); + } catch (error) { + this.debug(`Error in timeout ping request: ${error}`); + } + this.setPingTimeout(); + } else { + this.api.disconnect(); + } + } + }; + function Ripple() { + return new RippleWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new RippleWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/blockfrost.js +var require_blockfrost = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/blockfrost.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.transformAccountInfo = exports2.transformTransaction = exports2.filterTokenTransfers = exports2.transformInputOutput = exports2.transformTokenInfo = exports2.transformToken = exports2.parseAsset = exports2.transformUtxos = void 0; + var bigNumber_1 = require_bigNumber(); + var utils_1 = require_utils6(); + var transformUtxos = (utxos) => { + const result = []; + utxos.forEach((utxo) => utxo.utxoData.amount.forEach((u) => { + result.push({ + address: utxo.address, + txid: utxo.utxoData.tx_hash, + confirmations: utxo.blockInfo.confirmations, + blockHeight: utxo.blockInfo.height || 0, + amount: u.quantity, + vout: utxo.utxoData.output_index, + path: utxo.path, + cardanoSpecific: { + unit: u.unit + } + }); + })); + return result; + }; + exports2.transformUtxos = transformUtxos; + var hexToString = (input) => { + let str = ""; + for (let n = 0; n < input.length; n += 2) { + str += String.fromCharCode(parseInt(input.substring(n, n + 2), 16)); + } + return str; + }; + var getSubtype = (tx) => { + const withdrawal = tx.txData.withdrawal_count > 0; + if (withdrawal) { + return "withdrawal"; + } + const registrations = tx.txData.stake_cert_count; + const delegations = tx.txData.delegation_count; + if (registrations === 0 && delegations === 0) return; + if (registrations > 0) { + if (new bigNumber_1.BigNumber(tx.txData.deposit).gt(0)) { + return "stake_registration"; + } + return "stake_deregistration"; + } + if (delegations > 0) { + return "stake_delegation"; + } + }; + var parseAsset = (hex) => { + const policyIdSize = 56; + const policyId = hex.slice(0, policyIdSize); + const assetNameInHex = hex.slice(policyIdSize); + const assetName = hexToString(assetNameInHex); + return { + policyId, + assetName + }; + }; + exports2.parseAsset = parseAsset; + var transformToken = (token) => { + const { + policyId, + assetName + } = (0, exports2.parseAsset)(token.unit); + const symbol = token.ticker || assetName || (0, utils_1.formatTokenSymbol)(token.fingerprint); + return { + name: token.name || symbol, + contract: token.unit, + symbol, + decimals: token.decimals, + fingerprint: token.fingerprint, + policyId + }; + }; + exports2.transformToken = transformToken; + var transformTokenInfo = (tokens) => { + if (!tokens || !Array.isArray(tokens)) { + return void 0; + } + const info = tokens.map((token) => ({ + balance: token.quantity, + standard: "BLOCKFROST", + ...(0, exports2.transformToken)(token) + })); + return info.length > 0 ? info : void 0; + }; + exports2.transformTokenInfo = transformTokenInfo; + var transformInputOutput = (data, asset = "lovelace") => data.map((utxo) => ({ + n: utxo.output_index, + addresses: [utxo.address], + isAddress: true, + value: utxo.amount.find((a) => a.unit === asset)?.quantity ?? "0" + })); + exports2.transformInputOutput = transformInputOutput; + var filterTokenTransfers = (accountAddress, tx, type) => { + const transfers = []; + const myNonChangeAddresses = accountAddress.used.concat(accountAddress.unused); + const myAddresses = accountAddress.change.concat(myNonChangeAddresses); + tx.txUtxos.outputs.forEach((output) => { + output.amount.filter((a) => a.unit !== "lovelace").forEach((asset) => { + const tokenUnit = asset.unit; + const inputs = (0, exports2.transformInputOutput)(tx.txUtxos.inputs, tokenUnit); + const outputs = (0, exports2.transformInputOutput)(tx.txUtxos.outputs, tokenUnit); + const outgoing = (0, utils_1.filterTargets)(myAddresses, inputs); + const incoming = (0, utils_1.filterTargets)(myAddresses, outputs); + const isChange = accountAddress.change.find((a) => a.address === output.address); + if (incoming.length === 0 && outgoing.length === 0) return null; + const incomingForOutput = (0, utils_1.filterTargets)(myNonChangeAddresses, (0, exports2.transformInputOutput)([output], tokenUnit)); + let amount = "0"; + if (type === "sent") { + amount = isChange ? "0" : asset.quantity; + } else if (type === "recv") { + amount = incomingForOutput.reduce(utils_1.sumVinVout, 0).toString(); + } else if (type === "self" && !isChange) { + amount = incomingForOutput.reduce(utils_1.sumVinVout, 0).toString(); + } + if (amount === "0" || !asset.fingerprint) return null; + transfers.push({ + ...(0, exports2.transformToken)(asset), + type, + amount: amount.toString(), + from: type === "sent" || type === "self" ? tx.address : tx.txUtxos.inputs.find((i) => i.amount.find((a) => a.unit === tokenUnit))?.address || "", + to: type === "recv" ? tx.address : output.address, + standard: "BLOCKFROST" + }); + }); + }); + return transfers.filter((t) => !!t); + }; + exports2.filterTokenTransfers = filterTokenTransfers; + var transformTransaction = (blockfrostTxData, addressesOrDescriptor) => { + const fullData = ((data) => "txUtxos" in data)(blockfrostTxData); + const [accountAddress, descriptor] = typeof addressesOrDescriptor === "object" ? [addressesOrDescriptor, void 0] : [void 0, addressesOrDescriptor]; + const myAddresses = accountAddress ? accountAddress.change.concat(accountAddress.used, accountAddress.unused).map((a) => a.address) : descriptor && [descriptor] || []; + let type; + let targets = []; + let amount = blockfrostTxData.txData.output_amount.find((b) => b.unit === "lovelace")?.quantity || "0"; + const fee = blockfrostTxData.txData.fees; + let withdrawal; + let deposit; + const inputs = fullData ? (0, exports2.transformInputOutput)(blockfrostTxData.txUtxos.inputs) : []; + const outputs = fullData ? (0, exports2.transformInputOutput)(blockfrostTxData.txUtxos.outputs) : []; + const vinLength = Array.isArray(inputs) ? inputs.length : 0; + const voutLength = Array.isArray(outputs) ? outputs.length : 0; + const outgoing = (0, utils_1.filterTargets)(myAddresses, inputs); + const incoming = (0, utils_1.filterTargets)(myAddresses, outputs); + const internal = accountAddress ? (0, utils_1.filterTargets)(accountAddress.change, outputs) : []; + const totalInput = inputs.reduce(utils_1.sumVinVout, 0); + const totalOutput = outputs.reduce(utils_1.sumVinVout, 0); + if (outgoing.length === 0 && incoming.length === 0) { + type = "unknown"; + } else if (vinLength > 0 && voutLength > 0 && outgoing.length === vinLength && incoming.length === voutLength) { + type = "self"; + targets = outputs.filter((o) => internal.indexOf(o) < 0); + amount = blockfrostTxData.txData.fees; + const depositBn = new bigNumber_1.BigNumber(blockfrostTxData.txData.deposit || 0); + if (!depositBn.isZero()) { + deposit = depositBn.abs().toString(); + } + if (blockfrostTxData.txData.withdrawal_count > 0) { + const extra = new bigNumber_1.BigNumber(totalOutput).plus(blockfrostTxData.txData.fees || 0).minus(totalInput); + const withdrawalBn = depositBn.isNegative() ? extra.minus(depositBn) : extra; + withdrawal = withdrawalBn.abs().toString(); + } + } else if (outgoing.length === 0 && incoming.length > 0) { + type = "recv"; + amount = "0"; + if (incoming.length > 0) { + targets = incoming; + amount = incoming.reduce(utils_1.sumVinVout, 0); + } + } else { + type = "sent"; + targets = outputs.filter((o) => internal.indexOf(o) < 0); + if (voutLength) { + const myInputsSum = outgoing.reduce(utils_1.sumVinVout, 0); + const totalSpent = incoming.reduce(utils_1.sumVinVout, 0); + amount = new bigNumber_1.BigNumber(myInputsSum).minus(totalSpent).minus(fee ?? "0"); + } + } + const tokens = accountAddress && fullData ? (0, exports2.filterTokenTransfers)(accountAddress, blockfrostTxData, type) : []; + return { + type, + txid: blockfrostTxData.txData.hash, + blockTime: blockfrostTxData.txData.block_time, + blockHeight: blockfrostTxData.txData.block_height || void 0, + blockHash: blockfrostTxData.txData.block, + amount: amount?.toString(), + fee, + targets: targets.map((t) => (0, utils_1.transformTarget)(t, incoming)), + tokens, + internalTransfers: [], + cardanoSpecific: { + subtype: getSubtype(blockfrostTxData), + withdrawal, + deposit + }, + feeRate: void 0, + details: { + vin: inputs.map((0, utils_1.enhanceVinVout)(myAddresses)), + vout: outputs.map((0, utils_1.enhanceVinVout)(myAddresses)), + size: blockfrostTxData.txData.size, + totalInput: totalInput.toString(), + totalOutput: totalOutput.toString() + } + }; + }; + exports2.transformTransaction = transformTransaction; + var transformAccountInfo = (info) => { + const blockfrostTxs = info.history.transactions; + const result = { + ...info, + tokens: (0, exports2.transformTokenInfo)(info.tokens), + history: { + ...info.history, + transactions: !blockfrostTxs ? [] : blockfrostTxs?.map((tx) => (0, exports2.transformTransaction)(tx, info.addresses ?? info.descriptor)) + } + }; + return result; + }; + exports2.transformAccountInfo = transformAccountInfo; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/blockfrost/websocket.js +var require_websocket4 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/blockfrost/websocket.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BlockfrostAPI = void 0; + var env_utils_1 = require_lib4(); + var baseWebsocket_1 = require_baseWebsocket(); + var BlockfrostAPI = class extends baseWebsocket_1.BaseWebsocket { + createWebsocket() { + const { + url + } = this.options; + return this.initWebsocket({ + url, + agent: this.options.agent, + headers: { + "User-Agent": `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`, + ...this.options.headers + } + }); + } + ping() { + return this.getBlockHash(1); + } + send = (command, params = {}) => this.sendMessage({ + command, + params + }); + getServerInfo() { + return this.send("GET_SERVER_INFO"); + } + getBlockHash(number) { + return this.send("GET_BLOCK", { + hashOrNumber: number + }); + } + estimateFee(payload) { + return this.send("ESTIMATE_FEE", payload); + } + getAccountInfo(payload) { + return this.send("GET_ACCOUNT_INFO", payload); + } + getAccountUtxo(descriptor) { + return this.send("GET_ACCOUNT_UTXO", { + descriptor + }); + } + getAccountBalanceHistory(payload) { + return this.send("GET_BALANCE_HISTORY", payload); + } + getTransaction(txId) { + return this.send("GET_TRANSACTION", { + txId + }); + } + pushTransaction(txData) { + return this.send("PUSH_TRANSACTION", { + txData + }); + } + subscribeBlock() { + this.removeSubscription("block"); + this.addSubscription("block", (result) => this.emit("block", result)); + return this.send("SUBSCRIBE_BLOCK"); + } + subscribeAddresses(addresses) { + this.removeSubscription("notification"); + this.addSubscription("notification", (result) => this.emit("notification", result)); + return this.send("SUBSCRIBE_ADDRESS", { + addresses + }); + } + unsubscribeBlock() { + const index = this.removeSubscription("block"); + return index >= 0 ? this.send("UNSUBSCRIBE_BLOCK") : { + subscribed: false + }; + } + unsubscribeAddresses() { + const index = this.removeSubscription("notification"); + return index >= 0 ? this.send("UNSUBSCRIBE_ADDRESS") : { + subscribed: false + }; + } + }; + exports2.BlockfrostAPI = BlockfrostAPI; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/blockfrost/index.js +var require_blockfrost2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/blockfrost/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Blockfrost; + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var blockfrost_1 = require_blockfrost(); + var baseWorker_1 = require_baseWorker(); + var websocket_1 = require_websocket4(); + var getInfo = async (request) => { + const api = await request.connect(); + const info = await api.getServerInfo(); + return { + type: constants_1.RESPONSES.GET_INFO, + payload: { + url: api.options.url, + network: info.shortcut, + ...info + } + }; + }; + var getBlockHash = async (request) => { + const api = await request.connect(); + const blockMessage = await api.getBlockHash(request.payload); + return { + type: constants_1.RESPONSES.GET_BLOCK_HASH, + payload: blockMessage.hash + }; + }; + var getAccountBalanceHistory = async (request) => { + const socket = await request.connect(); + const history = await socket.getAccountBalanceHistory(request.payload); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY, + payload: history + }; + }; + var getTransaction = async (request) => { + const api = await request.connect(); + const txData = await api.getTransaction(request.payload); + const tx = (0, blockfrost_1.transformTransaction)({ + txData + }); + return { + type: constants_1.RESPONSES.GET_TRANSACTION, + payload: tx + }; + }; + var estimateFee = async (request) => { + const api = await request.connect(); + const resp = await api.estimateFee(request.payload); + const feeOptions = []; + feeOptions.push({ + feePerUnit: resp.lovelacePerByte.toString() + }); + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload: feeOptions + }; + }; + var pushTransaction = async (request) => { + const api = await request.connect(); + const payload = await api.pushTransaction(request.payload.hex); + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload + }; + }; + var getAccountInfo = async (request) => { + const api = await request.connect(); + const { + details = "basic", + ...rest + } = request.payload; + const info = await api.getAccountInfo({ + details, + ...rest + }); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: (0, blockfrost_1.transformAccountInfo)(info) + }; + }; + var getAccountUtxo = async (request) => { + const api = await request.connect(); + const utxos = await api.getAccountUtxo(request.payload); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_UTXO, + payload: (0, blockfrost_1.transformUtxos)(utxos) + }; + }; + var onNewBlock = ({ + post + }, event) => { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight: event.height || 0, + blockHash: event.hash + } + } + }); + }; + var onTransaction = ({ + state, + post + }, event) => { + const descriptor = event.address; + const account = state.getAccount(descriptor); + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "notification", + payload: { + descriptor: account ? account.descriptor : descriptor, + tx: account ? (0, blockfrost_1.transformTransaction)(event, account.addresses ?? account.descriptor) : (0, blockfrost_1.transformTransaction)(event, descriptor) + } + } + }); + }; + var subscribeBlock = async (ctx) => { + if (ctx.state.getSubscription("block")) return { + subscribed: true + }; + const api = await ctx.connect(); + ctx.state.addSubscription("block"); + api.on("block", (ev) => onNewBlock(ctx, ev)); + return api.subscribeBlock(); + }; + var subscribeAccounts = async (ctx, accounts) => { + const api = await ctx.connect(); + const { + state + } = ctx; + state.addAccounts(accounts); + if (!state.getSubscription("notification")) { + api.on("notification", (ev) => onTransaction(ctx, ev)); + state.addSubscription("notification"); + } + return api.subscribeAddresses(state.getAddresses()); + }; + var subscribeAddresses = async (ctx, addresses) => { + const api = await ctx.connect(); + const { + state + } = ctx; + state.addAddresses(addresses); + if (!state.getSubscription("notification")) { + api.on("notification", (ev) => onTransaction(ctx, ev)); + state.addSubscription("notification"); + } + return api.subscribeAddresses(state.getAddresses()); + }; + var subscribe = async (request) => { + const { + payload + } = request; + let response; + if (payload.type === "accounts") { + response = await subscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + response = await subscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + response = await subscribeBlock(request); + } else { + throw new errors_1.CustomError("invalid_param", "+type"); + } + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: response + }; + }; + var unsubscribeBlock = async ({ + state, + connect + }) => { + if (!state.getSubscription("block")) return { + subscribed: false + }; + const api = await connect(); + api.removeAllListeners("block"); + state.removeSubscription("block"); + return api.unsubscribeBlock(); + }; + var unsubscribeAccounts = async ({ + state, + connect + }, accounts) => { + state.removeAccounts(accounts || state.getAccounts()); + const api = await connect(); + const subscribed = state.getAddresses(); + if (subscribed.length < 1) { + api.removeAllListeners("notification"); + state.removeSubscription("notification"); + return api.unsubscribeAddresses(); + } + return api.subscribeAddresses(subscribed); + }; + var unsubscribeAddresses = async ({ + state, + connect + }, addresses) => { + const socket = await connect(); + if (!addresses) { + state.removeAccounts(state.getAccounts()); + } + const subscribed = state.removeAddresses(addresses || state.getAddresses()); + if (subscribed.length < 1) { + socket.removeAllListeners("notification"); + state.removeSubscription("notification"); + return socket.unsubscribeAddresses(); + } + return socket.subscribeAddresses(subscribed); + }; + var unsubscribe = async (request) => { + const { + payload + } = request; + let response; + if (payload.type === "accounts") { + response = await unsubscribeAccounts(request, payload.accounts); + } else if (payload.type === "addresses") { + response = await unsubscribeAddresses(request, payload.addresses); + } else if (payload.type === "block") { + response = await unsubscribeBlock(request); + } else { + throw new errors_1.CustomError("invalid_param", "+type"); + } + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: response + }; + }; + var onRequest = (request) => { + switch (request.type) { + case constants_1.MESSAGES.GET_INFO: + return getInfo(request); + case constants_1.MESSAGES.GET_BLOCK_HASH: + return getBlockHash(request); + case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY: + return getAccountBalanceHistory(request); + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return getAccountInfo(request); + case constants_1.MESSAGES.GET_ACCOUNT_UTXO: + return getAccountUtxo(request); + case constants_1.MESSAGES.GET_TRANSACTION: + return getTransaction(request); + case constants_1.MESSAGES.ESTIMATE_FEE: + return estimateFee(request); + case constants_1.MESSAGES.PUSH_TRANSACTION: + return pushTransaction(request); + case constants_1.MESSAGES.SUBSCRIBE: + return subscribe(request); + case constants_1.MESSAGES.UNSUBSCRIBE: + return unsubscribe(request); + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var BlockfrostWorker = class extends baseWorker_1.BaseWorker { + cleanup() { + if (this.api) { + this.api.dispose(); + this.api.removeAllListeners(); + } + super.cleanup(); + } + isConnected(api) { + return api?.isConnected() ?? false; + } + async tryConnect(url) { + const { + timeout, + pingTimeout, + keepAlive + } = this.settings; + const api = new websocket_1.BlockfrostAPI({ + url, + timeout, + pingTimeout, + keepAlive, + agent: this.proxyAgent + }); + await api.connect(); + api.on("disconnected", () => { + this.post({ + id: -1, + type: constants_1.RESPONSES.DISCONNECTED, + payload: true + }); + this.cleanup(); + }); + this.post({ + id: -1, + type: constants_1.RESPONSES.CONNECTED + }); + return api; + } + disconnect() { + if (this.api) { + this.api.disconnect(); + } + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + post: (data) => this.post(data), + state: this.state + }; + const response = await onRequest(request); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, error); + } + } + }; + function Blockfrost() { + return new BlockfrostWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new BlockfrostWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/@trezor/utxo-lib/node_modules/bech32/dist/index.js +var require_dist8 = __commonJS({ + "node_modules/@trezor/utxo-lib/node_modules/bech32/dist/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.bech32m = exports2.bech32 = void 0; + var ALPHABET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; + var ALPHABET_MAP = {}; + for (let z = 0; z < ALPHABET.length; z++) { + const x = ALPHABET.charAt(z); + ALPHABET_MAP[x] = z; + } + function polymodStep(pre) { + const b = pre >> 25; + return (pre & 33554431) << 5 ^ -(b >> 0 & 1) & 996825010 ^ -(b >> 1 & 1) & 642813549 ^ -(b >> 2 & 1) & 513874426 ^ -(b >> 3 & 1) & 1027748829 ^ -(b >> 4 & 1) & 705979059; + } + function prefixChk(prefix) { + let chk = 1; + for (let i = 0; i < prefix.length; ++i) { + const c = prefix.charCodeAt(i); + if (c < 33 || c > 126) + return "Invalid prefix (" + prefix + ")"; + chk = polymodStep(chk) ^ c >> 5; + } + chk = polymodStep(chk); + for (let i = 0; i < prefix.length; ++i) { + const v = prefix.charCodeAt(i); + chk = polymodStep(chk) ^ v & 31; + } + return chk; + } + function convert(data, inBits, outBits, pad) { + let value = 0; + let bits = 0; + const maxV = (1 << outBits) - 1; + const result = []; + for (let i = 0; i < data.length; ++i) { + value = value << inBits | data[i]; + bits += inBits; + while (bits >= outBits) { + bits -= outBits; + result.push(value >> bits & maxV); + } + } + if (pad) { + if (bits > 0) { + result.push(value << outBits - bits & maxV); + } + } else { + if (bits >= inBits) + return "Excess padding"; + if (value << outBits - bits & maxV) + return "Non-zero padding"; + } + return result; + } + function toWords(bytes) { + return convert(bytes, 8, 5, true); + } + function fromWordsUnsafe(words) { + const res = convert(words, 5, 8, false); + if (Array.isArray(res)) + return res; + } + function fromWords(words) { + const res = convert(words, 5, 8, false); + if (Array.isArray(res)) + return res; + throw new Error(res); + } + function getLibraryFromEncoding(encoding) { + let ENCODING_CONST; + if (encoding === "bech32") { + ENCODING_CONST = 1; + } else { + ENCODING_CONST = 734539939; + } + function encode(prefix, words, LIMIT) { + LIMIT = LIMIT || 90; + if (prefix.length + 7 + words.length > LIMIT) + throw new TypeError("Exceeds length limit"); + prefix = prefix.toLowerCase(); + let chk = prefixChk(prefix); + if (typeof chk === "string") + throw new Error(chk); + let result = prefix + "1"; + for (let i = 0; i < words.length; ++i) { + const x = words[i]; + if (x >> 5 !== 0) + throw new Error("Non 5-bit word"); + chk = polymodStep(chk) ^ x; + result += ALPHABET.charAt(x); + } + for (let i = 0; i < 6; ++i) { + chk = polymodStep(chk); + } + chk ^= ENCODING_CONST; + for (let i = 0; i < 6; ++i) { + const v = chk >> (5 - i) * 5 & 31; + result += ALPHABET.charAt(v); + } + return result; + } + function __decode(str, LIMIT) { + LIMIT = LIMIT || 90; + if (str.length < 8) + return str + " too short"; + if (str.length > LIMIT) + return "Exceeds length limit"; + const lowered = str.toLowerCase(); + const uppered = str.toUpperCase(); + if (str !== lowered && str !== uppered) + return "Mixed-case string " + str; + str = lowered; + const split2 = str.lastIndexOf("1"); + if (split2 === -1) + return "No separator character for " + str; + if (split2 === 0) + return "Missing prefix for " + str; + const prefix = str.slice(0, split2); + const wordChars = str.slice(split2 + 1); + if (wordChars.length < 6) + return "Data too short"; + let chk = prefixChk(prefix); + if (typeof chk === "string") + return chk; + const words = []; + for (let i = 0; i < wordChars.length; ++i) { + const c = wordChars.charAt(i); + const v = ALPHABET_MAP[c]; + if (v === void 0) + return "Unknown character " + c; + chk = polymodStep(chk) ^ v; + if (i + 6 >= wordChars.length) + continue; + words.push(v); + } + if (chk !== ENCODING_CONST) + return "Invalid checksum for " + str; + return { prefix, words }; + } + function decodeUnsafe(str, LIMIT) { + const res = __decode(str, LIMIT); + if (typeof res === "object") + return res; + } + function decode(str, LIMIT) { + const res = __decode(str, LIMIT); + if (typeof res === "object") + return res; + throw new Error(res); + } + return { + decodeUnsafe, + decode, + encode, + toWords, + fromWordsUnsafe, + fromWords + }; + } + exports2.bech32 = getLibraryFromEncoding("bech32"); + exports2.bech32m = getLibraryFromEncoding("bech32m"); + } +}); + +// node_modules/base-x/src/cjs/index.cjs +var require_cjs3 = __commonJS({ + "node_modules/base-x/src/cjs/index.cjs"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + function base(ALPHABET) { + if (ALPHABET.length >= 255) { + throw new TypeError("Alphabet too long"); + } + const BASE_MAP = new Uint8Array(256); + for (let j = 0; j < BASE_MAP.length; j++) { + BASE_MAP[j] = 255; + } + for (let i = 0; i < ALPHABET.length; i++) { + const x = ALPHABET.charAt(i); + const xc = x.charCodeAt(0); + if (BASE_MAP[xc] !== 255) { + throw new TypeError(x + " is ambiguous"); + } + BASE_MAP[xc] = i; + } + const BASE = ALPHABET.length; + const LEADER = ALPHABET.charAt(0); + const FACTOR = Math.log(BASE) / Math.log(256); + const iFACTOR = Math.log(256) / Math.log(BASE); + function encode(source) { + if (source instanceof Uint8Array) { + } else if (ArrayBuffer.isView(source)) { + source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength); + } else if (Array.isArray(source)) { + source = Uint8Array.from(source); + } + if (!(source instanceof Uint8Array)) { + throw new TypeError("Expected Uint8Array"); + } + if (source.length === 0) { + return ""; + } + let zeroes = 0; + let length = 0; + let pbegin = 0; + const pend = source.length; + while (pbegin !== pend && source[pbegin] === 0) { + pbegin++; + zeroes++; + } + const size = (pend - pbegin) * iFACTOR + 1 >>> 0; + const b58 = new Uint8Array(size); + while (pbegin !== pend) { + let carry = source[pbegin]; + let i = 0; + for (let it1 = size - 1; (carry !== 0 || i < length) && it1 !== -1; it1--, i++) { + carry += 256 * b58[it1] >>> 0; + b58[it1] = carry % BASE >>> 0; + carry = carry / BASE >>> 0; + } + if (carry !== 0) { + throw new Error("Non-zero carry"); + } + length = i; + pbegin++; + } + let it2 = size - length; + while (it2 !== size && b58[it2] === 0) { + it2++; + } + let str = LEADER.repeat(zeroes); + for (; it2 < size; ++it2) { + str += ALPHABET.charAt(b58[it2]); + } + return str; + } + function decodeUnsafe(source) { + if (typeof source !== "string") { + throw new TypeError("Expected String"); + } + if (source.length === 0) { + return new Uint8Array(); + } + let psz = 0; + let zeroes = 0; + let length = 0; + while (source[psz] === LEADER) { + zeroes++; + psz++; + } + const size = (source.length - psz) * FACTOR + 1 >>> 0; + const b256 = new Uint8Array(size); + while (psz < source.length) { + const charCode = source.charCodeAt(psz); + if (charCode > 255) { + return; + } + let carry = BASE_MAP[charCode]; + if (carry === 255) { + return; + } + let i = 0; + for (let it3 = size - 1; (carry !== 0 || i < length) && it3 !== -1; it3--, i++) { + carry += BASE * b256[it3] >>> 0; + b256[it3] = carry % 256 >>> 0; + carry = carry / 256 >>> 0; + } + if (carry !== 0) { + throw new Error("Non-zero carry"); + } + length = i; + psz++; + } + let it4 = size - length; + while (it4 !== size && b256[it4] === 0) { + it4++; + } + const vch = new Uint8Array(zeroes + (size - it4)); + let j = zeroes; + while (it4 !== size) { + vch[j++] = b256[it4++]; + } + return vch; + } + function decode(string) { + const buffer = decodeUnsafe(string); + if (buffer) { + return buffer; + } + throw new Error("Non-base" + BASE + " character"); + } + return { + encode, + decodeUnsafe, + decode + }; + } + exports2.default = base; + } +}); + +// node_modules/bs58/src/cjs/index.cjs +var require_cjs4 = __commonJS({ + "node_modules/bs58/src/cjs/index.cjs"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var base_x_1 = __importDefault2(require_cjs3()); + var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + exports2.default = (0, base_x_1.default)(ALPHABET); + } +}); + +// node_modules/@noble/hashes/sha256.js +var require_sha2562 = __commonJS({ + "node_modules/@noble/hashes/sha256.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.sha224 = exports2.SHA224 = exports2.sha256 = exports2.SHA256 = void 0; + var sha2_ts_1 = require_sha2(); + exports2.SHA256 = sha2_ts_1.SHA256; + exports2.sha256 = sha2_ts_1.sha256; + exports2.SHA224 = sha2_ts_1.SHA224; + exports2.sha224 = sha2_ts_1.sha224; + } +}); + +// node_modules/bs58check/src/cjs/base.cjs +var require_base = __commonJS({ + "node_modules/bs58check/src/cjs/base.cjs"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.default = default_1; + var bs58_1 = __importDefault2(require_cjs4()); + function default_1(checksumFn) { + function encode(payload) { + var payloadU8 = Uint8Array.from(payload); + var checksum = checksumFn(payloadU8); + var length = payloadU8.length + 4; + var both = new Uint8Array(length); + both.set(payloadU8, 0); + both.set(checksum.subarray(0, 4), payloadU8.length); + return bs58_1.default.encode(both); + } + function decodeRaw(buffer) { + var payload = buffer.slice(0, -4); + var checksum = buffer.slice(-4); + var newChecksum = checksumFn(payload); + if (checksum[0] ^ newChecksum[0] | checksum[1] ^ newChecksum[1] | checksum[2] ^ newChecksum[2] | checksum[3] ^ newChecksum[3]) + return; + return payload; + } + function decodeUnsafe(str) { + var buffer = bs58_1.default.decodeUnsafe(str); + if (buffer == null) + return; + return decodeRaw(buffer); + } + function decode(str) { + var buffer = bs58_1.default.decode(str); + var payload = decodeRaw(buffer); + if (payload == null) + throw new Error("Invalid checksum"); + return payload; + } + return { + encode, + decode, + decodeUnsafe + }; + } + } +}); + +// node_modules/bs58check/src/cjs/index.cjs +var require_cjs5 = __commonJS({ + "node_modules/bs58check/src/cjs/index.cjs"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + var sha256_1 = require_sha2562(); + var base_js_1 = __importDefault2(require_base()); + function sha256x2(buffer) { + return (0, sha256_1.sha256)((0, sha256_1.sha256)(buffer)); + } + exports2.default = (0, base_js_1.default)(sha256x2); + } +}); + +// node_modules/cashaddrjs/src/validation.js +var require_validation3 = __commonJS({ + "node_modules/cashaddrjs/src/validation.js"(exports2, module2) { + "use strict"; + function ValidationError(message) { + var error = new Error(); + this.name = error.name = "ValidationError"; + this.message = error.message = message; + this.stack = error.stack; + } + ValidationError.prototype = Object.create(Error.prototype); + function validate(condition, message) { + if (!condition) { + throw new ValidationError(message); + } + } + module2.exports = { + ValidationError, + validate + }; + } +}); + +// node_modules/cashaddrjs/src/base32.js +var require_base32 = __commonJS({ + "node_modules/cashaddrjs/src/base32.js"(exports2, module2) { + "use strict"; + var validate = require_validation3().validate; + var CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; + var CHARSET_INVERSE_INDEX = { + "q": 0, + "p": 1, + "z": 2, + "r": 3, + "y": 4, + "9": 5, + "x": 6, + "8": 7, + "g": 8, + "f": 9, + "2": 10, + "t": 11, + "v": 12, + "d": 13, + "w": 14, + "0": 15, + "s": 16, + "3": 17, + "j": 18, + "n": 19, + "5": 20, + "4": 21, + "k": 22, + "h": 23, + "c": 24, + "e": 25, + "6": 26, + "m": 27, + "u": 28, + "a": 29, + "7": 30, + "l": 31 + }; + function encode(data) { + validate(data instanceof Uint8Array, "Invalid data: " + data + "."); + var base32 = ""; + for (var i = 0; i < data.length; ++i) { + var value = data[i]; + validate(0 <= value && value < 32, "Invalid value: " + value + "."); + base32 += CHARSET[value]; + } + return base32; + } + function decode(string) { + validate(typeof string === "string", "Invalid base32-encoded string: " + string + "."); + var data = new Uint8Array(string.length); + for (var i = 0; i < string.length; ++i) { + var value = string[i]; + validate(value in CHARSET_INVERSE_INDEX, "Invalid value: " + value + "."); + data[i] = CHARSET_INVERSE_INDEX[value]; + } + return data; + } + module2.exports = { + encode, + decode + }; + } +}); + +// node_modules/big-integer/BigInteger.js +var require_BigInteger = __commonJS({ + "node_modules/big-integer/BigInteger.js"(exports2, module2) { + var bigInt = function(undefined2) { + "use strict"; + var BASE = 1e7, LOG_BASE = 7, MAX_INT = 9007199254740992, MAX_INT_ARR = smallToArray(MAX_INT), LOG_MAX_INT = Math.log(MAX_INT); + function Integer(v, radix) { + if (typeof v === "undefined") return Integer[0]; + if (typeof radix !== "undefined") return +radix === 10 ? parseValue(v) : parseBase(v, radix); + return parseValue(v); + } + function BigInteger(value, sign) { + this.value = value; + this.sign = sign; + this.isSmall = false; + } + BigInteger.prototype = Object.create(Integer.prototype); + function SmallInteger(value) { + this.value = value; + this.sign = value < 0; + this.isSmall = true; + } + SmallInteger.prototype = Object.create(Integer.prototype); + function isPrecise(n) { + return -MAX_INT < n && n < MAX_INT; + } + function smallToArray(n) { + if (n < 1e7) + return [n]; + if (n < 1e14) + return [n % 1e7, Math.floor(n / 1e7)]; + return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)]; + } + function arrayToSmall(arr) { + trim(arr); + var length = arr.length; + if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) { + switch (length) { + case 0: + return 0; + case 1: + return arr[0]; + case 2: + return arr[0] + arr[1] * BASE; + default: + return arr[0] + (arr[1] + arr[2] * BASE) * BASE; + } + } + return arr; + } + function trim(v) { + var i2 = v.length; + while (v[--i2] === 0) ; + v.length = i2 + 1; + } + function createArray(length) { + var x = new Array(length); + var i2 = -1; + while (++i2 < length) { + x[i2] = 0; + } + return x; + } + function truncate(n) { + if (n > 0) return Math.floor(n); + return Math.ceil(n); + } + function add2(a, b) { + var l_a = a.length, l_b = b.length, r = new Array(l_a), carry = 0, base = BASE, sum, i2; + for (i2 = 0; i2 < l_b; i2++) { + sum = a[i2] + b[i2] + carry; + carry = sum >= base ? 1 : 0; + r[i2] = sum - carry * base; + } + while (i2 < l_a) { + sum = a[i2] + carry; + carry = sum === base ? 1 : 0; + r[i2++] = sum - carry * base; + } + if (carry > 0) r.push(carry); + return r; + } + function addAny(a, b) { + if (a.length >= b.length) return add2(a, b); + return add2(b, a); + } + function addSmall(a, carry) { + var l = a.length, r = new Array(l), base = BASE, sum, i2; + for (i2 = 0; i2 < l; i2++) { + sum = a[i2] - base + carry; + carry = Math.floor(sum / base); + r[i2] = sum - carry * base; + carry += 1; + } + while (carry > 0) { + r[i2++] = carry % base; + carry = Math.floor(carry / base); + } + return r; + } + BigInteger.prototype.add = function(v) { + var n = parseValue(v); + if (this.sign !== n.sign) { + return this.subtract(n.negate()); + } + var a = this.value, b = n.value; + if (n.isSmall) { + return new BigInteger(addSmall(a, Math.abs(b)), this.sign); + } + return new BigInteger(addAny(a, b), this.sign); + }; + BigInteger.prototype.plus = BigInteger.prototype.add; + SmallInteger.prototype.add = function(v) { + var n = parseValue(v); + var a = this.value; + if (a < 0 !== n.sign) { + return this.subtract(n.negate()); + } + var b = n.value; + if (n.isSmall) { + if (isPrecise(a + b)) return new SmallInteger(a + b); + b = smallToArray(Math.abs(b)); + } + return new BigInteger(addSmall(b, Math.abs(a)), a < 0); + }; + SmallInteger.prototype.plus = SmallInteger.prototype.add; + function subtract(a, b) { + var a_l = a.length, b_l = b.length, r = new Array(a_l), borrow = 0, base = BASE, i2, difference; + for (i2 = 0; i2 < b_l; i2++) { + difference = a[i2] - borrow - b[i2]; + if (difference < 0) { + difference += base; + borrow = 1; + } else borrow = 0; + r[i2] = difference; + } + for (i2 = b_l; i2 < a_l; i2++) { + difference = a[i2] - borrow; + if (difference < 0) difference += base; + else { + r[i2++] = difference; + break; + } + r[i2] = difference; + } + for (; i2 < a_l; i2++) { + r[i2] = a[i2]; + } + trim(r); + return r; + } + function subtractAny(a, b, sign) { + var value; + if (compareAbs(a, b) >= 0) { + value = subtract(a, b); + } else { + value = subtract(b, a); + sign = !sign; + } + value = arrayToSmall(value); + if (typeof value === "number") { + if (sign) value = -value; + return new SmallInteger(value); + } + return new BigInteger(value, sign); + } + function subtractSmall(a, b, sign) { + var l = a.length, r = new Array(l), carry = -b, base = BASE, i2, difference; + for (i2 = 0; i2 < l; i2++) { + difference = a[i2] + carry; + carry = Math.floor(difference / base); + difference %= base; + r[i2] = difference < 0 ? difference + base : difference; + } + r = arrayToSmall(r); + if (typeof r === "number") { + if (sign) r = -r; + return new SmallInteger(r); + } + return new BigInteger(r, sign); + } + BigInteger.prototype.subtract = function(v) { + var n = parseValue(v); + if (this.sign !== n.sign) { + return this.add(n.negate()); + } + var a = this.value, b = n.value; + if (n.isSmall) + return subtractSmall(a, Math.abs(b), this.sign); + return subtractAny(a, b, this.sign); + }; + BigInteger.prototype.minus = BigInteger.prototype.subtract; + SmallInteger.prototype.subtract = function(v) { + var n = parseValue(v); + var a = this.value; + if (a < 0 !== n.sign) { + return this.add(n.negate()); + } + var b = n.value; + if (n.isSmall) { + return new SmallInteger(a - b); + } + return subtractSmall(b, Math.abs(a), a >= 0); + }; + SmallInteger.prototype.minus = SmallInteger.prototype.subtract; + BigInteger.prototype.negate = function() { + return new BigInteger(this.value, !this.sign); + }; + SmallInteger.prototype.negate = function() { + var sign = this.sign; + var small = new SmallInteger(-this.value); + small.sign = !sign; + return small; + }; + BigInteger.prototype.abs = function() { + return new BigInteger(this.value, false); + }; + SmallInteger.prototype.abs = function() { + return new SmallInteger(Math.abs(this.value)); + }; + function multiplyLong(a, b) { + var a_l = a.length, b_l = b.length, l = a_l + b_l, r = createArray(l), base = BASE, product, carry, i2, a_i, b_j; + for (i2 = 0; i2 < a_l; ++i2) { + a_i = a[i2]; + for (var j = 0; j < b_l; ++j) { + b_j = b[j]; + product = a_i * b_j + r[i2 + j]; + carry = Math.floor(product / base); + r[i2 + j] = product - carry * base; + r[i2 + j + 1] += carry; + } + } + trim(r); + return r; + } + function multiplySmall(a, b) { + var l = a.length, r = new Array(l), base = BASE, carry = 0, product, i2; + for (i2 = 0; i2 < l; i2++) { + product = a[i2] * b + carry; + carry = Math.floor(product / base); + r[i2] = product - carry * base; + } + while (carry > 0) { + r[i2++] = carry % base; + carry = Math.floor(carry / base); + } + return r; + } + function shiftLeft(x, n) { + var r = []; + while (n-- > 0) r.push(0); + return r.concat(x); + } + function multiplyKaratsuba(x, y) { + var n = Math.max(x.length, y.length); + if (n <= 30) return multiplyLong(x, y); + n = Math.ceil(n / 2); + var b = x.slice(n), a = x.slice(0, n), d = y.slice(n), c = y.slice(0, n); + var ac = multiplyKaratsuba(a, c), bd = multiplyKaratsuba(b, d), abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d)); + var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n)); + trim(product); + return product; + } + function useKaratsuba(l1, l2) { + return -0.012 * l1 - 0.012 * l2 + 15e-6 * l1 * l2 > 0; + } + BigInteger.prototype.multiply = function(v) { + var n = parseValue(v), a = this.value, b = n.value, sign = this.sign !== n.sign, abs; + if (n.isSmall) { + if (b === 0) return Integer[0]; + if (b === 1) return this; + if (b === -1) return this.negate(); + abs = Math.abs(b); + if (abs < BASE) { + return new BigInteger(multiplySmall(a, abs), sign); + } + b = smallToArray(abs); + } + if (useKaratsuba(a.length, b.length)) + return new BigInteger(multiplyKaratsuba(a, b), sign); + return new BigInteger(multiplyLong(a, b), sign); + }; + BigInteger.prototype.times = BigInteger.prototype.multiply; + function multiplySmallAndArray(a, b, sign) { + if (a < BASE) { + return new BigInteger(multiplySmall(b, a), sign); + } + return new BigInteger(multiplyLong(b, smallToArray(a)), sign); + } + SmallInteger.prototype._multiplyBySmall = function(a) { + if (isPrecise(a.value * this.value)) { + return new SmallInteger(a.value * this.value); + } + return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign); + }; + BigInteger.prototype._multiplyBySmall = function(a) { + if (a.value === 0) return Integer[0]; + if (a.value === 1) return this; + if (a.value === -1) return this.negate(); + return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign); + }; + SmallInteger.prototype.multiply = function(v) { + return parseValue(v)._multiplyBySmall(this); + }; + SmallInteger.prototype.times = SmallInteger.prototype.multiply; + function square(a) { + var l = a.length, r = createArray(l + l), base = BASE, product, carry, i2, a_i, a_j; + for (i2 = 0; i2 < l; i2++) { + a_i = a[i2]; + carry = 0 - a_i * a_i; + for (var j = i2; j < l; j++) { + a_j = a[j]; + product = 2 * (a_i * a_j) + r[i2 + j] + carry; + carry = Math.floor(product / base); + r[i2 + j] = product - carry * base; + } + r[i2 + l] = carry; + } + trim(r); + return r; + } + BigInteger.prototype.square = function() { + return new BigInteger(square(this.value), false); + }; + SmallInteger.prototype.square = function() { + var value = this.value * this.value; + if (isPrecise(value)) return new SmallInteger(value); + return new BigInteger(square(smallToArray(Math.abs(this.value))), false); + }; + function divMod1(a, b) { + var a_l = a.length, b_l = b.length, base = BASE, result = createArray(b.length), divisorMostSignificantDigit = b[b_l - 1], lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)), remainder = multiplySmall(a, lambda), divisor = multiplySmall(b, lambda), quotientDigit, shift, carry, borrow, i2, l, q; + if (remainder.length <= a_l) remainder.push(0); + divisor.push(0); + divisorMostSignificantDigit = divisor[b_l - 1]; + for (shift = a_l - b_l; shift >= 0; shift--) { + quotientDigit = base - 1; + if (remainder[shift + b_l] !== divisorMostSignificantDigit) { + quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit); + } + carry = 0; + borrow = 0; + l = divisor.length; + for (i2 = 0; i2 < l; i2++) { + carry += quotientDigit * divisor[i2]; + q = Math.floor(carry / base); + borrow += remainder[shift + i2] - (carry - q * base); + carry = q; + if (borrow < 0) { + remainder[shift + i2] = borrow + base; + borrow = -1; + } else { + remainder[shift + i2] = borrow; + borrow = 0; + } + } + while (borrow !== 0) { + quotientDigit -= 1; + carry = 0; + for (i2 = 0; i2 < l; i2++) { + carry += remainder[shift + i2] - base + divisor[i2]; + if (carry < 0) { + remainder[shift + i2] = carry + base; + carry = 0; + } else { + remainder[shift + i2] = carry; + carry = 1; + } + } + borrow += carry; + } + result[shift] = quotientDigit; + } + remainder = divModSmall(remainder, lambda)[0]; + return [arrayToSmall(result), arrayToSmall(remainder)]; + } + function divMod2(a, b) { + var a_l = a.length, b_l = b.length, result = [], part = [], base = BASE, guess, xlen, highx, highy, check; + while (a_l) { + part.unshift(a[--a_l]); + trim(part); + if (compareAbs(part, b) < 0) { + result.push(0); + continue; + } + xlen = part.length; + highx = part[xlen - 1] * base + part[xlen - 2]; + highy = b[b_l - 1] * base + b[b_l - 2]; + if (xlen > b_l) { + highx = (highx + 1) * base; + } + guess = Math.ceil(highx / highy); + do { + check = multiplySmall(b, guess); + if (compareAbs(check, part) <= 0) break; + guess--; + } while (guess); + result.push(guess); + part = subtract(part, check); + } + result.reverse(); + return [arrayToSmall(result), arrayToSmall(part)]; + } + function divModSmall(value, lambda) { + var length = value.length, quotient = createArray(length), base = BASE, i2, q, remainder, divisor; + remainder = 0; + for (i2 = length - 1; i2 >= 0; --i2) { + divisor = remainder * base + value[i2]; + q = truncate(divisor / lambda); + remainder = divisor - q * lambda; + quotient[i2] = q | 0; + } + return [quotient, remainder | 0]; + } + function divModAny(self2, v) { + var value, n = parseValue(v); + var a = self2.value, b = n.value; + var quotient; + if (b === 0) throw new Error("Cannot divide by zero"); + if (self2.isSmall) { + if (n.isSmall) { + return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)]; + } + return [Integer[0], self2]; + } + if (n.isSmall) { + if (b === 1) return [self2, Integer[0]]; + if (b == -1) return [self2.negate(), Integer[0]]; + var abs = Math.abs(b); + if (abs < BASE) { + value = divModSmall(a, abs); + quotient = arrayToSmall(value[0]); + var remainder = value[1]; + if (self2.sign) remainder = -remainder; + if (typeof quotient === "number") { + if (self2.sign !== n.sign) quotient = -quotient; + return [new SmallInteger(quotient), new SmallInteger(remainder)]; + } + return [new BigInteger(quotient, self2.sign !== n.sign), new SmallInteger(remainder)]; + } + b = smallToArray(abs); + } + var comparison = compareAbs(a, b); + if (comparison === -1) return [Integer[0], self2]; + if (comparison === 0) return [Integer[self2.sign === n.sign ? 1 : -1], Integer[0]]; + if (a.length + b.length <= 200) + value = divMod1(a, b); + else value = divMod2(a, b); + quotient = value[0]; + var qSign = self2.sign !== n.sign, mod3 = value[1], mSign = self2.sign; + if (typeof quotient === "number") { + if (qSign) quotient = -quotient; + quotient = new SmallInteger(quotient); + } else quotient = new BigInteger(quotient, qSign); + if (typeof mod3 === "number") { + if (mSign) mod3 = -mod3; + mod3 = new SmallInteger(mod3); + } else mod3 = new BigInteger(mod3, mSign); + return [quotient, mod3]; + } + BigInteger.prototype.divmod = function(v) { + var result = divModAny(this, v); + return { + quotient: result[0], + remainder: result[1] + }; + }; + SmallInteger.prototype.divmod = BigInteger.prototype.divmod; + BigInteger.prototype.divide = function(v) { + return divModAny(this, v)[0]; + }; + SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide; + BigInteger.prototype.mod = function(v) { + return divModAny(this, v)[1]; + }; + SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod; + BigInteger.prototype.pow = function(v) { + var n = parseValue(v), a = this.value, b = n.value, value, x, y; + if (b === 0) return Integer[1]; + if (a === 0) return Integer[0]; + if (a === 1) return Integer[1]; + if (a === -1) return n.isEven() ? Integer[1] : Integer[-1]; + if (n.sign) { + return Integer[0]; + } + if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large."); + if (this.isSmall) { + if (isPrecise(value = Math.pow(a, b))) + return new SmallInteger(truncate(value)); + } + x = this; + y = Integer[1]; + while (true) { + if (b & true) { + y = y.times(x); + --b; + } + if (b === 0) break; + b /= 2; + x = x.square(); + } + return y; + }; + SmallInteger.prototype.pow = BigInteger.prototype.pow; + BigInteger.prototype.modPow = function(exp, mod3) { + exp = parseValue(exp); + mod3 = parseValue(mod3); + if (mod3.isZero()) throw new Error("Cannot take modPow with modulus 0"); + var r = Integer[1], base = this.mod(mod3); + while (exp.isPositive()) { + if (base.isZero()) return Integer[0]; + if (exp.isOdd()) r = r.multiply(base).mod(mod3); + exp = exp.divide(2); + base = base.square().mod(mod3); + } + return r; + }; + SmallInteger.prototype.modPow = BigInteger.prototype.modPow; + function compareAbs(a, b) { + if (a.length !== b.length) { + return a.length > b.length ? 1 : -1; + } + for (var i2 = a.length - 1; i2 >= 0; i2--) { + if (a[i2] !== b[i2]) return a[i2] > b[i2] ? 1 : -1; + } + return 0; + } + BigInteger.prototype.compareAbs = function(v) { + var n = parseValue(v), a = this.value, b = n.value; + if (n.isSmall) return 1; + return compareAbs(a, b); + }; + SmallInteger.prototype.compareAbs = function(v) { + var n = parseValue(v), a = Math.abs(this.value), b = n.value; + if (n.isSmall) { + b = Math.abs(b); + return a === b ? 0 : a > b ? 1 : -1; + } + return -1; + }; + BigInteger.prototype.compare = function(v) { + if (v === Infinity) { + return -1; + } + if (v === -Infinity) { + return 1; + } + var n = parseValue(v), a = this.value, b = n.value; + if (this.sign !== n.sign) { + return n.sign ? 1 : -1; + } + if (n.isSmall) { + return this.sign ? -1 : 1; + } + return compareAbs(a, b) * (this.sign ? -1 : 1); + }; + BigInteger.prototype.compareTo = BigInteger.prototype.compare; + SmallInteger.prototype.compare = function(v) { + if (v === Infinity) { + return -1; + } + if (v === -Infinity) { + return 1; + } + var n = parseValue(v), a = this.value, b = n.value; + if (n.isSmall) { + return a == b ? 0 : a > b ? 1 : -1; + } + if (a < 0 !== n.sign) { + return a < 0 ? -1 : 1; + } + return a < 0 ? 1 : -1; + }; + SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; + BigInteger.prototype.equals = function(v) { + return this.compare(v) === 0; + }; + SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals; + BigInteger.prototype.notEquals = function(v) { + return this.compare(v) !== 0; + }; + SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals; + BigInteger.prototype.greater = function(v) { + return this.compare(v) > 0; + }; + SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater; + BigInteger.prototype.lesser = function(v) { + return this.compare(v) < 0; + }; + SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser; + BigInteger.prototype.greaterOrEquals = function(v) { + return this.compare(v) >= 0; + }; + SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals; + BigInteger.prototype.lesserOrEquals = function(v) { + return this.compare(v) <= 0; + }; + SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals; + BigInteger.prototype.isEven = function() { + return (this.value[0] & 1) === 0; + }; + SmallInteger.prototype.isEven = function() { + return (this.value & 1) === 0; + }; + BigInteger.prototype.isOdd = function() { + return (this.value[0] & 1) === 1; + }; + SmallInteger.prototype.isOdd = function() { + return (this.value & 1) === 1; + }; + BigInteger.prototype.isPositive = function() { + return !this.sign; + }; + SmallInteger.prototype.isPositive = function() { + return this.value > 0; + }; + BigInteger.prototype.isNegative = function() { + return this.sign; + }; + SmallInteger.prototype.isNegative = function() { + return this.value < 0; + }; + BigInteger.prototype.isUnit = function() { + return false; + }; + SmallInteger.prototype.isUnit = function() { + return Math.abs(this.value) === 1; + }; + BigInteger.prototype.isZero = function() { + return false; + }; + SmallInteger.prototype.isZero = function() { + return this.value === 0; + }; + BigInteger.prototype.isDivisibleBy = function(v) { + var n = parseValue(v); + var value = n.value; + if (value === 0) return false; + if (value === 1) return true; + if (value === 2) return this.isEven(); + return this.mod(n).equals(Integer[0]); + }; + SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy; + function isBasicPrime(v) { + var n = v.abs(); + if (n.isUnit()) return false; + if (n.equals(2) || n.equals(3) || n.equals(5)) return true; + if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false; + if (n.lesser(49)) return true; + } + function millerRabinTest(n, a) { + var nPrev = n.prev(), b = nPrev, r = 0, d, t, i2, x; + while (b.isEven()) b = b.divide(2), r++; + next: for (i2 = 0; i2 < a.length; i2++) { + if (n.lesser(a[i2])) continue; + x = bigInt(a[i2]).modPow(b, n); + if (x.equals(Integer[1]) || x.equals(nPrev)) continue; + for (d = r - 1; d != 0; d--) { + x = x.square().mod(n); + if (x.isUnit()) return false; + if (x.equals(nPrev)) continue next; + } + return false; + } + return true; + } + BigInteger.prototype.isPrime = function(strict) { + var isPrime = isBasicPrime(this); + if (isPrime !== undefined2) return isPrime; + var n = this.abs(); + var bits = n.bitLength(); + if (bits <= 64) + return millerRabinTest(n, [2, 325, 9375, 28178, 450775, 9780504, 1795265022]); + var logN = Math.log(2) * bits; + var t = Math.ceil(strict === true ? 2 * Math.pow(logN, 2) : logN); + for (var a = [], i2 = 0; i2 < t; i2++) { + a.push(bigInt(i2 + 2)); + } + return millerRabinTest(n, a); + }; + SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime; + BigInteger.prototype.isProbablePrime = function(iterations) { + var isPrime = isBasicPrime(this); + if (isPrime !== undefined2) return isPrime; + var n = this.abs(); + var t = iterations === undefined2 ? 5 : iterations; + for (var a = [], i2 = 0; i2 < t; i2++) { + a.push(bigInt.randBetween(2, n.minus(2))); + } + return millerRabinTest(n, a); + }; + SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime; + BigInteger.prototype.modInv = function(n) { + var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR; + while (!newR.equals(bigInt.zero)) { + q = r.divide(newR); + lastT = t; + lastR = r; + t = newT; + r = newR; + newT = lastT.subtract(q.multiply(newT)); + newR = lastR.subtract(q.multiply(newR)); + } + if (!r.equals(1)) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime"); + if (t.compare(0) === -1) { + t = t.add(n); + } + if (this.isNegative()) { + return t.negate(); + } + return t; + }; + SmallInteger.prototype.modInv = BigInteger.prototype.modInv; + BigInteger.prototype.next = function() { + var value = this.value; + if (this.sign) { + return subtractSmall(value, 1, this.sign); + } + return new BigInteger(addSmall(value, 1), this.sign); + }; + SmallInteger.prototype.next = function() { + var value = this.value; + if (value + 1 < MAX_INT) return new SmallInteger(value + 1); + return new BigInteger(MAX_INT_ARR, false); + }; + BigInteger.prototype.prev = function() { + var value = this.value; + if (this.sign) { + return new BigInteger(addSmall(value, 1), true); + } + return subtractSmall(value, 1, this.sign); + }; + SmallInteger.prototype.prev = function() { + var value = this.value; + if (value - 1 > -MAX_INT) return new SmallInteger(value - 1); + return new BigInteger(MAX_INT_ARR, true); + }; + var powersOfTwo = [1]; + while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); + var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1]; + function shift_isSmall(n) { + return (typeof n === "number" || typeof n === "string") && +Math.abs(n) <= BASE || n instanceof BigInteger && n.value.length <= 1; + } + BigInteger.prototype.shiftLeft = function(n) { + if (!shift_isSmall(n)) { + throw new Error(String(n) + " is too large for shifting."); + } + n = +n; + if (n < 0) return this.shiftRight(-n); + var result = this; + if (result.isZero()) return result; + while (n >= powers2Length) { + result = result.multiply(highestPower2); + n -= powers2Length - 1; + } + return result.multiply(powersOfTwo[n]); + }; + SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft; + BigInteger.prototype.shiftRight = function(n) { + var remQuo; + if (!shift_isSmall(n)) { + throw new Error(String(n) + " is too large for shifting."); + } + n = +n; + if (n < 0) return this.shiftLeft(-n); + var result = this; + while (n >= powers2Length) { + if (result.isZero() || result.isNegative() && result.isUnit()) return result; + remQuo = divModAny(result, highestPower2); + result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; + n -= powers2Length - 1; + } + remQuo = divModAny(result, powersOfTwo[n]); + return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; + }; + SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight; + function bitwise(x, y, fn) { + y = parseValue(y); + var xSign = x.isNegative(), ySign = y.isNegative(); + var xRem = xSign ? x.not() : x, yRem = ySign ? y.not() : y; + var xDigit = 0, yDigit = 0; + var xDivMod = null, yDivMod = null; + var result = []; + while (!xRem.isZero() || !yRem.isZero()) { + xDivMod = divModAny(xRem, highestPower2); + xDigit = xDivMod[1].toJSNumber(); + if (xSign) { + xDigit = highestPower2 - 1 - xDigit; + } + yDivMod = divModAny(yRem, highestPower2); + yDigit = yDivMod[1].toJSNumber(); + if (ySign) { + yDigit = highestPower2 - 1 - yDigit; + } + xRem = xDivMod[0]; + yRem = yDivMod[0]; + result.push(fn(xDigit, yDigit)); + } + var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0); + for (var i2 = result.length - 1; i2 >= 0; i2 -= 1) { + sum = sum.multiply(highestPower2).add(bigInt(result[i2])); + } + return sum; + } + BigInteger.prototype.not = function() { + return this.negate().prev(); + }; + SmallInteger.prototype.not = BigInteger.prototype.not; + BigInteger.prototype.and = function(n) { + return bitwise(this, n, function(a, b) { + return a & b; + }); + }; + SmallInteger.prototype.and = BigInteger.prototype.and; + BigInteger.prototype.or = function(n) { + return bitwise(this, n, function(a, b) { + return a | b; + }); + }; + SmallInteger.prototype.or = BigInteger.prototype.or; + BigInteger.prototype.xor = function(n) { + return bitwise(this, n, function(a, b) { + return a ^ b; + }); + }; + SmallInteger.prototype.xor = BigInteger.prototype.xor; + var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I; + function roughLOB(n) { + var v = n.value, x = typeof v === "number" ? v | LOBMASK_I : v[0] + v[1] * BASE | LOBMASK_BI; + return x & -x; + } + function integerLogarithm(value, base) { + if (base.compareTo(value) <= 0) { + var tmp = integerLogarithm(value, base.square(base)); + var p = tmp.p; + var e = tmp.e; + var t = p.multiply(base); + return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p, e: e * 2 }; + } + return { p: bigInt(1), e: 0 }; + } + BigInteger.prototype.bitLength = function() { + var n = this; + if (n.compareTo(bigInt(0)) < 0) { + n = n.negate().subtract(bigInt(1)); + } + if (n.compareTo(bigInt(0)) === 0) { + return bigInt(0); + } + return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1)); + }; + SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength; + function max(a, b) { + a = parseValue(a); + b = parseValue(b); + return a.greater(b) ? a : b; + } + function min(a, b) { + a = parseValue(a); + b = parseValue(b); + return a.lesser(b) ? a : b; + } + function gcd(a, b) { + a = parseValue(a).abs(); + b = parseValue(b).abs(); + if (a.equals(b)) return a; + if (a.isZero()) return b; + if (b.isZero()) return a; + var c = Integer[1], d, t; + while (a.isEven() && b.isEven()) { + d = Math.min(roughLOB(a), roughLOB(b)); + a = a.divide(d); + b = b.divide(d); + c = c.multiply(d); + } + while (a.isEven()) { + a = a.divide(roughLOB(a)); + } + do { + while (b.isEven()) { + b = b.divide(roughLOB(b)); + } + if (a.greater(b)) { + t = b; + b = a; + a = t; + } + b = b.subtract(a); + } while (!b.isZero()); + return c.isUnit() ? a : a.multiply(c); + } + function lcm(a, b) { + a = parseValue(a).abs(); + b = parseValue(b).abs(); + return a.divide(gcd(a, b)).multiply(b); + } + function randBetween(a, b) { + a = parseValue(a); + b = parseValue(b); + var low = min(a, b), high = max(a, b); + var range = high.subtract(low).add(1); + if (range.isSmall) return low.add(Math.floor(Math.random() * range)); + var length = range.value.length - 1; + var result = [], restricted = true; + for (var i2 = length; i2 >= 0; i2--) { + var top = restricted ? range.value[i2] : BASE; + var digit = truncate(Math.random() * top); + result.unshift(digit); + if (digit < top) restricted = false; + } + result = arrayToSmall(result); + return low.add(typeof result === "number" ? new SmallInteger(result) : new BigInteger(result, false)); + } + var parseBase = function(text, base) { + var length = text.length; + var i2; + var absBase = Math.abs(base); + for (var i2 = 0; i2 < length; i2++) { + var c = text[i2].toLowerCase(); + if (c === "-") continue; + if (/[a-z0-9]/.test(c)) { + if (/[0-9]/.test(c) && +c >= absBase) { + if (c === "1" && absBase === 1) continue; + throw new Error(c + " is not a valid digit in base " + base + "."); + } else if (c.charCodeAt(0) - 87 >= absBase) { + throw new Error(c + " is not a valid digit in base " + base + "."); + } + } + } + if (2 <= base && base <= 36) { + if (length <= LOG_MAX_INT / Math.log(base)) { + var result = parseInt(text, base); + if (isNaN(result)) { + throw new Error(c + " is not a valid digit in base " + base + "."); + } + return new SmallInteger(parseInt(text, base)); + } + } + base = parseValue(base); + var digits = []; + var isNegative = text[0] === "-"; + for (i2 = isNegative ? 1 : 0; i2 < text.length; i2++) { + var c = text[i2].toLowerCase(), charCode = c.charCodeAt(0); + if (48 <= charCode && charCode <= 57) digits.push(parseValue(c)); + else if (97 <= charCode && charCode <= 122) digits.push(parseValue(c.charCodeAt(0) - 87)); + else if (c === "<") { + var start = i2; + do { + i2++; + } while (text[i2] !== ">"); + digits.push(parseValue(text.slice(start + 1, i2))); + } else throw new Error(c + " is not a valid character"); + } + return parseBaseFromArray(digits, base, isNegative); + }; + function parseBaseFromArray(digits, base, isNegative) { + var val = Integer[0], pow = Integer[1], i2; + for (i2 = digits.length - 1; i2 >= 0; i2--) { + val = val.add(digits[i2].times(pow)); + pow = pow.times(base); + } + return isNegative ? val.negate() : val; + } + function stringify(digit) { + if (digit <= 35) { + return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(digit); + } + return "<" + digit + ">"; + } + function toBase(n, base) { + base = bigInt(base); + if (base.isZero()) { + if (n.isZero()) return { value: [0], isNegative: false }; + throw new Error("Cannot convert nonzero numbers to base 0."); + } + if (base.equals(-1)) { + if (n.isZero()) return { value: [0], isNegative: false }; + if (n.isNegative()) + return { + value: [].concat.apply( + [], + Array.apply(null, Array(-n)).map(Array.prototype.valueOf, [1, 0]) + ), + isNegative: false + }; + var arr = Array.apply(null, Array(+n - 1)).map(Array.prototype.valueOf, [0, 1]); + arr.unshift([1]); + return { + value: [].concat.apply([], arr), + isNegative: false + }; + } + var neg = false; + if (n.isNegative() && base.isPositive()) { + neg = true; + n = n.abs(); + } + if (base.equals(1)) { + if (n.isZero()) return { value: [0], isNegative: false }; + return { + value: Array.apply(null, Array(+n)).map(Number.prototype.valueOf, 1), + isNegative: neg + }; + } + var out = []; + var left = n, divmod; + while (left.isNegative() || left.compareAbs(base) >= 0) { + divmod = left.divmod(base); + left = divmod.quotient; + var digit = divmod.remainder; + if (digit.isNegative()) { + digit = base.minus(digit).abs(); + left = left.next(); + } + out.push(digit.toJSNumber()); + } + out.push(left.toJSNumber()); + return { value: out.reverse(), isNegative: neg }; + } + function toBaseString(n, base) { + var arr = toBase(n, base); + return (arr.isNegative ? "-" : "") + arr.value.map(stringify).join(""); + } + BigInteger.prototype.toArray = function(radix) { + return toBase(this, radix); + }; + SmallInteger.prototype.toArray = function(radix) { + return toBase(this, radix); + }; + BigInteger.prototype.toString = function(radix) { + if (radix === undefined2) radix = 10; + if (radix !== 10) return toBaseString(this, radix); + var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit; + while (--l >= 0) { + digit = String(v[l]); + str += zeros.slice(digit.length) + digit; + } + var sign = this.sign ? "-" : ""; + return sign + str; + }; + SmallInteger.prototype.toString = function(radix) { + if (radix === undefined2) radix = 10; + if (radix != 10) return toBaseString(this, radix); + return String(this.value); + }; + BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function() { + return this.toString(); + }; + BigInteger.prototype.valueOf = function() { + return parseInt(this.toString(), 10); + }; + BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; + SmallInteger.prototype.valueOf = function() { + return this.value; + }; + SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; + function parseStringValue(v) { + if (isPrecise(+v)) { + var x = +v; + if (x === truncate(x)) + return new SmallInteger(x); + throw new Error("Invalid integer: " + v); + } + var sign = v[0] === "-"; + if (sign) v = v.slice(1); + var split2 = v.split(/e/i); + if (split2.length > 2) throw new Error("Invalid integer: " + split2.join("e")); + if (split2.length === 2) { + var exp = split2[1]; + if (exp[0] === "+") exp = exp.slice(1); + exp = +exp; + if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent."); + var text = split2[0]; + var decimalPlace = text.indexOf("."); + if (decimalPlace >= 0) { + exp -= text.length - decimalPlace - 1; + text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1); + } + if (exp < 0) throw new Error("Cannot include negative exponent part for integers"); + text += new Array(exp + 1).join("0"); + v = text; + } + var isValid = /^([0-9][0-9]*)$/.test(v); + if (!isValid) throw new Error("Invalid integer: " + v); + var r = [], max2 = v.length, l = LOG_BASE, min2 = max2 - l; + while (max2 > 0) { + r.push(+v.slice(min2, max2)); + min2 -= l; + if (min2 < 0) min2 = 0; + max2 -= l; + } + trim(r); + return new BigInteger(r, sign); + } + function parseNumberValue(v) { + if (isPrecise(v)) { + if (v !== truncate(v)) throw new Error(v + " is not an integer."); + return new SmallInteger(v); + } + return parseStringValue(v.toString()); + } + function parseValue(v) { + if (typeof v === "number") { + return parseNumberValue(v); + } + if (typeof v === "string") { + return parseStringValue(v); + } + return v; + } + for (var i = 0; i < 1e3; i++) { + Integer[i] = new SmallInteger(i); + if (i > 0) Integer[-i] = new SmallInteger(-i); + } + Integer.one = Integer[1]; + Integer.zero = Integer[0]; + Integer.minusOne = Integer[-1]; + Integer.max = max; + Integer.min = min; + Integer.gcd = gcd; + Integer.lcm = lcm; + Integer.isInstance = function(x) { + return x instanceof BigInteger || x instanceof SmallInteger; + }; + Integer.randBetween = randBetween; + Integer.fromArray = function(digits, base, isNegative) { + return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative); + }; + return Integer; + }(); + if (typeof module2 !== "undefined" && module2.hasOwnProperty("exports")) { + module2.exports = bigInt; + } + if (typeof define === "function" && define.amd) { + define("big-integer", [], function() { + return bigInt; + }); + } + } +}); + +// node_modules/cashaddrjs/src/convertBits.js +var require_convertBits = __commonJS({ + "node_modules/cashaddrjs/src/convertBits.js"(exports2, module2) { + "use strict"; + var validate = require_validation3().validate; + module2.exports = function(data, from, to, strictMode) { + var length = strictMode ? Math.floor(data.length * from / to) : Math.ceil(data.length * from / to); + var mask = (1 << to) - 1; + var result = new Uint8Array(length); + var index = 0; + var accumulator = 0; + var bits = 0; + for (var i = 0; i < data.length; ++i) { + var value = data[i]; + validate(0 <= value && value >> from === 0, "Invalid value: " + value + "."); + accumulator = accumulator << from | value; + bits += from; + while (bits >= to) { + bits -= to; + result[index] = accumulator >> bits & mask; + ++index; + } + } + if (!strictMode) { + if (bits > 0) { + result[index] = accumulator << to - bits & mask; + ++index; + } + } else { + validate( + bits < from && (accumulator << to - bits & mask) === 0, + "Input cannot be converted to " + to + " bits without padding, but strict mode was used." + ); + } + return result; + }; + } +}); + +// node_modules/cashaddrjs/src/cashaddr.js +var require_cashaddr = __commonJS({ + "node_modules/cashaddrjs/src/cashaddr.js"(exports2, module2) { + "use strict"; + var base32 = require_base32(); + var bigInt = require_BigInteger(); + var convertBits = require_convertBits(); + var validation = require_validation3(); + var validate = validation.validate; + function encode(prefix, type, hash) { + validate(typeof prefix === "string" && isValidPrefix(prefix), "Invalid prefix: " + prefix + "."); + validate(typeof type === "string", "Invalid type: " + type + "."); + validate(hash instanceof Uint8Array, "Invalid hash: " + hash + "."); + var prefixData = concat2(prefixToUint5Array(prefix), new Uint8Array(1)); + var versionByte = getTypeBits(type) + getHashSizeBits(hash); + var payloadData = toUint5Array(concat2(new Uint8Array([versionByte]), hash)); + var checksumData = concat2(concat2(prefixData, payloadData), new Uint8Array(8)); + var payload = concat2(payloadData, checksumToUint5Array(polymod(checksumData))); + return prefix + ":" + base32.encode(payload); + } + function decode(address) { + validate(typeof address === "string" && hasSingleCase(address), "Invalid address: " + address + "."); + var pieces = address.toLowerCase().split(":"); + validate(pieces.length === 2, "Missing prefix: " + address + "."); + var prefix = pieces[0]; + var payload = base32.decode(pieces[1]); + validate(validChecksum(prefix, payload), "Invalid checksum: " + address + "."); + var payloadData = fromUint5Array(payload.subarray(0, -8)); + var versionByte = payloadData[0]; + var hash = payloadData.subarray(1); + validate(getHashSize(versionByte) === hash.length * 8, "Invalid hash size: " + address + "."); + var type = getType(versionByte); + return { + prefix, + type, + hash + }; + } + var ValidationError = validation.ValidationError; + var VALID_PREFIXES = ["bitcoincash", "bchtest", "bchreg"]; + function isValidPrefix(prefix) { + return hasSingleCase(prefix) && VALID_PREFIXES.indexOf(prefix.toLowerCase()) !== -1; + } + function prefixToUint5Array(prefix) { + var result = new Uint8Array(prefix.length); + for (var i = 0; i < prefix.length; ++i) { + result[i] = prefix[i].charCodeAt(0) & 31; + } + return result; + } + function checksumToUint5Array(checksum) { + var result = new Uint8Array(8); + for (var i = 0; i < 8; ++i) { + result[7 - i] = checksum.and(31).toJSNumber(); + checksum = checksum.shiftRight(5); + } + return result; + } + function getTypeBits(type) { + switch (type) { + case "P2PKH": + return 0; + case "P2SH": + return 8; + default: + throw new ValidationError("Invalid type: " + type + "."); + } + } + function getType(versionByte) { + switch (versionByte & 120) { + case 0: + return "P2PKH"; + case 8: + return "P2SH"; + default: + throw new ValidationError("Invalid address type in version byte: " + versionByte + "."); + } + } + function getHashSizeBits(hash) { + switch (hash.length * 8) { + case 160: + return 0; + case 192: + return 1; + case 224: + return 2; + case 256: + return 3; + case 320: + return 4; + case 384: + return 5; + case 448: + return 6; + case 512: + return 7; + default: + throw new ValidationError("Invalid hash size: " + hash.length + "."); + } + } + function getHashSize(versionByte) { + switch (versionByte & 7) { + case 0: + return 160; + case 1: + return 192; + case 2: + return 224; + case 3: + return 256; + case 4: + return 320; + case 5: + return 384; + case 6: + return 448; + case 7: + return 512; + } + } + function toUint5Array(data) { + return convertBits(data, 8, 5); + } + function fromUint5Array(data) { + return convertBits(data, 5, 8, true); + } + function concat2(a, b) { + var ab = new Uint8Array(a.length + b.length); + ab.set(a); + ab.set(b, a.length); + return ab; + } + function polymod(data) { + var GENERATOR = [656907472481, 522768456162, 1044723512260, 748107326120, 130178868336]; + var checksum = bigInt(1); + for (var i = 0; i < data.length; ++i) { + var value = data[i]; + var topBits = checksum.shiftRight(35); + checksum = checksum.and(34359738367).shiftLeft(5).xor(value); + for (var j = 0; j < GENERATOR.length; ++j) { + if (topBits.shiftRight(j).and(1).equals(1)) { + checksum = checksum.xor(GENERATOR[j]); + } + } + } + return checksum.xor(1); + } + function validChecksum(prefix, payload) { + var prefixData = concat2(prefixToUint5Array(prefix), new Uint8Array(1)); + var checksumData = concat2(prefixData, payload); + return polymod(checksumData).equals(0); + } + function hasSingleCase(string) { + return string === string.toLowerCase() || string === string.toUpperCase(); + } + module2.exports = { + encode, + decode, + ValidationError + }; + } +}); + +// node_modules/@trezor/utxo-lib/lib/bchUtils.js +var require_bchUtils = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/bchUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.toCashAddress = exports2.toLegacyAddress = exports2.isCashAddress = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check_1 = tslib_1.__importDefault(require_cjs5()); + var cashaddr = tslib_1.__importStar(require_cashaddr()); + var VERSION_BYTE = { + legacy: { + mainnet: { + p2pkh: 0, + p2sh: 5 + }, + testnet: { + p2pkh: 111, + p2sh: 196 + } + }, + cashaddr: { + mainnet: { + p2pkh: 0, + p2sh: 1 + }, + testnet: { + p2pkh: 0, + p2sh: 1 + } + } + }; + var decodeBase58Address = (address) => { + const payload = bs58check_1.default.decode(address); + if (payload.length !== 21) { + throw new Error("Invalid base58 address payload length"); + } + const version = payload[0]; + const hash = Array.prototype.slice.call(payload, 1); + switch (version) { + case 0: + return { + hash, + format: "legacy", + network: "mainnet", + type: "p2pkh" + }; + case 5: + return { + hash, + format: "legacy", + network: "mainnet", + type: "p2sh" + }; + case 111: + return { + hash, + format: "legacy", + network: "testnet", + type: "p2pkh" + }; + case 196: + return { + hash, + format: "legacy", + network: "testnet", + type: "p2sh" + }; + default: + throw new Error("Unknown version byte: " + version); + } + }; + var decodeCashAddressWithPrefix = (address) => { + const decoded = cashaddr.decode(address); + const hash = Array.prototype.slice.call(decoded.hash, 0); + const type = decoded.type === "P2PKH" ? "p2pkh" : "p2sh"; + switch (decoded.prefix) { + case "bitcoincash": + return { + hash, + format: "cashaddr", + network: "mainnet", + type + }; + case "bchtest": + case "bchreg": + return { + hash, + format: "cashaddr", + network: "testnet", + type + }; + default: + throw new Error("Unknown cashaddr prefix: " + decoded.prefix); + } + }; + var decodeCashAddress = (address) => { + if (address.indexOf(":") !== -1) { + return decodeCashAddressWithPrefix(address); + } else { + const prefixes = ["bitcoincash", "bchtest", "bchreg"]; + for (const prefix of prefixes) { + try { + return decodeCashAddressWithPrefix(prefix + ":" + address); + } catch { + } + } + } + throw new Error("Invalid cashaddr address"); + }; + var decodeAddress = (address) => { + try { + return decodeBase58Address(address); + } catch { + } + try { + return decodeCashAddress(address); + } catch { + } + throw new Error("Invalid Bitcoin Cash address"); + }; + var isCashAddress = (address) => decodeAddress(address).format === "cashaddr"; + exports2.isCashAddress = isCashAddress; + var toLegacyAddress = (address) => { + const decoded = decodeAddress(address); + if (decoded.format === "legacy") { + return address; + } + const version = VERSION_BYTE["legacy"][decoded.network][decoded.type]; + const buffer = Buffer.alloc(1 + decoded.hash.length); + buffer[0] = version; + buffer.set(decoded.hash, 1); + return bs58check_1.default.encode(buffer); + }; + exports2.toLegacyAddress = toLegacyAddress; + var toCashAddress = (address) => { + const decoded = decodeAddress(address); + const prefix = decoded.network === "mainnet" ? "bitcoincash" : "bchtest"; + const type = decoded.type === "p2pkh" ? "P2PKH" : "P2SH"; + const hash = new Uint8Array(decoded.hash); + return cashaddr.encode(prefix, type, hash); + }; + exports2.toCashAddress = toCashAddress; + } +}); + +// node_modules/readable-stream/lib/internal/streams/stream.js +var require_stream3 = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/stream.js"(exports2, module2) { + module2.exports = __require("stream"); + } +}); + +// node_modules/readable-stream/lib/internal/streams/buffer_list.js +var require_buffer_list = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/buffer_list.js"(exports2, module2) { + "use strict"; + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); + } + } + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + Object.defineProperty(Constructor, "prototype", { writable: false }); + return Constructor; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var _require = __require("buffer"); + var Buffer2 = _require.Buffer; + var _require2 = __require("util"); + var inspect = _require2.inspect; + var custom = inspect && inspect.custom || "inspect"; + function copyBuffer(src, target, offset) { + Buffer2.prototype.copy.call(src, target, offset); + } + module2.exports = /* @__PURE__ */ function() { + function BufferList() { + _classCallCheck(this, BufferList); + this.head = null; + this.tail = null; + this.length = 0; + } + _createClass(BufferList, [{ + key: "push", + value: function push(v) { + var entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry; + else this.head = entry; + this.tail = entry; + ++this.length; + } + }, { + key: "unshift", + value: function unshift(v) { + var entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + }, { + key: "shift", + value: function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null; + else this.head = this.head.next; + --this.length; + return ret; + } + }, { + key: "clear", + value: function clear() { + this.head = this.tail = null; + this.length = 0; + } + }, { + key: "join", + value: function join(s) { + if (this.length === 0) return ""; + var p = this.head; + var ret = "" + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + }, { + key: "concat", + value: function concat2(n) { + if (this.length === 0) return Buffer2.alloc(0); + var ret = Buffer2.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + } + // Consumes a specified amount of bytes or characters from the buffered data. + }, { + key: "consume", + value: function consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + ret = this.shift(); + } else { + ret = hasStrings ? this._getString(n) : this._getBuffer(n); + } + return ret; + } + }, { + key: "first", + value: function first() { + return this.head.data; + } + // Consumes a specified amount of characters from the buffered data. + }, { + key: "_getString", + value: function _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str; + else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + // Consumes a specified amount of bytes from the buffered data. + }, { + key: "_getBuffer", + value: function _getBuffer(n) { + var ret = Buffer2.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next; + else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + this.length -= c; + return ret; + } + // Make sure the linked list only shows the minimal necessary information. + }, { + key: custom, + value: function value(_, options) { + return inspect(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } + }]); + return BufferList; + }(); + } +}); + +// node_modules/readable-stream/lib/internal/streams/destroy.js +var require_destroy = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/destroy.js"(exports2, module2) { + "use strict"; + function destroy(err2, cb) { + var _this = this; + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err2); + } else if (err2) { + if (!this._writableState) { + process.nextTick(emitErrorNT, this, err2); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorNT, this, err2); + } + } + return this; + } + if (this._readableState) { + this._readableState.destroyed = true; + } + if (this._writableState) { + this._writableState.destroyed = true; + } + this._destroy(err2 || null, function(err3) { + if (!cb && err3) { + if (!_this._writableState) { + process.nextTick(emitErrorAndCloseNT, _this, err3); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, _this, err3); + } else { + process.nextTick(emitCloseNT, _this); + } + } else if (cb) { + process.nextTick(emitCloseNT, _this); + cb(err3); + } else { + process.nextTick(emitCloseNT, _this); + } + }); + return this; + } + function emitErrorAndCloseNT(self2, err2) { + emitErrorNT(self2, err2); + emitCloseNT(self2); + } + function emitCloseNT(self2) { + if (self2._writableState && !self2._writableState.emitClose) return; + if (self2._readableState && !self2._readableState.emitClose) return; + self2.emit("close"); + } + function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } + } + function emitErrorNT(self2, err2) { + self2.emit("error", err2); + } + function errorOrDestroy(stream, err2) { + var rState = stream._readableState; + var wState = stream._writableState; + if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err2); + else stream.emit("error", err2); + } + module2.exports = { + destroy, + undestroy, + errorOrDestroy + }; + } +}); + +// node_modules/readable-stream/errors.js +var require_errors9 = __commonJS({ + "node_modules/readable-stream/errors.js"(exports2, module2) { + "use strict"; + var codes = {}; + function createErrorType(code, message, Base) { + if (!Base) { + Base = Error; + } + function getMessage(arg1, arg2, arg3) { + if (typeof message === "string") { + return message; + } else { + return message(arg1, arg2, arg3); + } + } + class NodeError extends Base { + constructor(arg1, arg2, arg3) { + super(getMessage(arg1, arg2, arg3)); + } + } + NodeError.prototype.name = Base.name; + NodeError.prototype.code = code; + codes[code] = NodeError; + } + function oneOf(expected, thing) { + if (Array.isArray(expected)) { + const len = expected.length; + expected = expected.map((i) => String(i)); + if (len > 2) { + return `one of ${thing} ${expected.slice(0, len - 1).join(", ")}, or ` + expected[len - 1]; + } else if (len === 2) { + return `one of ${thing} ${expected[0]} or ${expected[1]}`; + } else { + return `of ${thing} ${expected[0]}`; + } + } else { + return `of ${thing} ${String(expected)}`; + } + } + function startsWith(str, search, pos) { + return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search; + } + function endsWith(str, search, this_len) { + if (this_len === void 0 || this_len > str.length) { + this_len = str.length; + } + return str.substring(this_len - search.length, this_len) === search; + } + function includes(str, search, start) { + if (typeof start !== "number") { + start = 0; + } + if (start + search.length > str.length) { + return false; + } else { + return str.indexOf(search, start) !== -1; + } + } + createErrorType("ERR_INVALID_OPT_VALUE", function(name, value) { + return 'The value "' + value + '" is invalid for option "' + name + '"'; + }, TypeError); + createErrorType("ERR_INVALID_ARG_TYPE", function(name, expected, actual) { + let determiner; + if (typeof expected === "string" && startsWith(expected, "not ")) { + determiner = "must not be"; + expected = expected.replace(/^not /, ""); + } else { + determiner = "must be"; + } + let msg; + if (endsWith(name, " argument")) { + msg = `The ${name} ${determiner} ${oneOf(expected, "type")}`; + } else { + const type = includes(name, ".") ? "property" : "argument"; + msg = `The "${name}" ${type} ${determiner} ${oneOf(expected, "type")}`; + } + msg += `. Received type ${typeof actual}`; + return msg; + }, TypeError); + createErrorType("ERR_STREAM_PUSH_AFTER_EOF", "stream.push() after EOF"); + createErrorType("ERR_METHOD_NOT_IMPLEMENTED", function(name) { + return "The " + name + " method is not implemented"; + }); + createErrorType("ERR_STREAM_PREMATURE_CLOSE", "Premature close"); + createErrorType("ERR_STREAM_DESTROYED", function(name) { + return "Cannot call " + name + " after a stream was destroyed"; + }); + createErrorType("ERR_MULTIPLE_CALLBACK", "Callback called multiple times"); + createErrorType("ERR_STREAM_CANNOT_PIPE", "Cannot pipe, not readable"); + createErrorType("ERR_STREAM_WRITE_AFTER_END", "write after end"); + createErrorType("ERR_STREAM_NULL_VALUES", "May not write null values to stream", TypeError); + createErrorType("ERR_UNKNOWN_ENCODING", function(arg) { + return "Unknown encoding: " + arg; + }, TypeError); + createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "stream.unshift() after end event"); + module2.exports.codes = codes; + } +}); + +// node_modules/readable-stream/lib/internal/streams/state.js +var require_state2 = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/state.js"(exports2, module2) { + "use strict"; + var ERR_INVALID_OPT_VALUE = require_errors9().codes.ERR_INVALID_OPT_VALUE; + function highWaterMarkFrom(options, isDuplex, duplexKey) { + return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; + } + function getHighWaterMark(state, options, duplexKey, isDuplex) { + var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); + if (hwm != null) { + if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { + var name = isDuplex ? duplexKey : "highWaterMark"; + throw new ERR_INVALID_OPT_VALUE(name, hwm); + } + return Math.floor(hwm); + } + return state.objectMode ? 16 : 16 * 1024; + } + module2.exports = { + getHighWaterMark + }; + } +}); + +// node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "node_modules/inherits/inherits_browser.js"(exports2, module2) { + if (typeof Object.create === "function") { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; + } + } +}); + +// node_modules/inherits/inherits.js +var require_inherits = __commonJS({ + "node_modules/inherits/inherits.js"(exports2, module2) { + try { + util = __require("util"); + if (typeof util.inherits !== "function") throw ""; + module2.exports = util.inherits; + } catch (e) { + module2.exports = require_inherits_browser(); + } + var util; + } +}); + +// node_modules/util-deprecate/node.js +var require_node3 = __commonJS({ + "node_modules/util-deprecate/node.js"(exports2, module2) { + module2.exports = __require("util").deprecate; + } +}); + +// node_modules/readable-stream/lib/_stream_writable.js +var require_stream_writable = __commonJS({ + "node_modules/readable-stream/lib/_stream_writable.js"(exports2, module2) { + "use strict"; + module2.exports = Writable; + function CorkedRequest(state) { + var _this = this; + this.next = null; + this.entry = null; + this.finish = function() { + onCorkedFinish(_this, state); + }; + } + var Duplex; + Writable.WritableState = WritableState; + var internalUtil = { + deprecate: require_node3() + }; + var Stream = require_stream3(); + var Buffer2 = __require("buffer").Buffer; + var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { + }; + function _uint8ArrayToBuffer(chunk) { + return Buffer2.from(chunk); + } + function _isUint8Array(obj) { + return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array; + } + var destroyImpl = require_destroy(); + var _require = require_state2(); + var getHighWaterMark = _require.getHighWaterMark; + var _require$codes = require_errors9().codes; + var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK; + var ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE; + var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + var ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES; + var ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END; + var ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; + var errorOrDestroy = destroyImpl.errorOrDestroy; + require_inherits()(Writable, Stream); + function nop() { + } + function WritableState(options, stream, isDuplex) { + Duplex = Duplex || require_stream_duplex(); + options = options || {}; + if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex; + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + this.highWaterMark = getHighWaterMark(this, options, "writableHighWaterMark", isDuplex); + this.finalCalled = false; + this.needDrain = false; + this.ending = false; + this.ended = false; + this.finished = false; + this.destroyed = false; + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + this.defaultEncoding = options.defaultEncoding || "utf8"; + this.length = 0; + this.writing = false; + this.corked = 0; + this.sync = true; + this.bufferProcessing = false; + this.onwrite = function(er) { + onwrite(stream, er); + }; + this.writecb = null; + this.writelen = 0; + this.bufferedRequest = null; + this.lastBufferedRequest = null; + this.pendingcb = 0; + this.prefinished = false; + this.errorEmitted = false; + this.emitClose = options.emitClose !== false; + this.autoDestroy = !!options.autoDestroy; + this.bufferedRequestCount = 0; + this.corkedRequestsFree = new CorkedRequest(this); + } + WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; + }; + (function() { + try { + Object.defineProperty(WritableState.prototype, "buffer", { + get: internalUtil.deprecate(function writableStateBufferGetter() { + return this.getBuffer(); + }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003") + }); + } catch (_) { + } + })(); + var realHasInstance; + if (typeof Symbol === "function" && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === "function") { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function value(object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + return object && object._writableState instanceof WritableState; + } + }); + } else { + realHasInstance = function realHasInstance2(object) { + return object instanceof this; + }; + } + function Writable(options) { + Duplex = Duplex || require_stream_duplex(); + var isDuplex = this instanceof Duplex; + if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); + this._writableState = new WritableState(options, this, isDuplex); + this.writable = true; + if (options) { + if (typeof options.write === "function") this._write = options.write; + if (typeof options.writev === "function") this._writev = options.writev; + if (typeof options.destroy === "function") this._destroy = options.destroy; + if (typeof options.final === "function") this._final = options.final; + } + Stream.call(this); + } + Writable.prototype.pipe = function() { + errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); + }; + function writeAfterEnd(stream, cb) { + var er = new ERR_STREAM_WRITE_AFTER_END(); + errorOrDestroy(stream, er); + process.nextTick(cb, er); + } + function validChunk(stream, state, chunk, cb) { + var er; + if (chunk === null) { + er = new ERR_STREAM_NULL_VALUES(); + } else if (typeof chunk !== "string" && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer"], chunk); + } + if (er) { + errorOrDestroy(stream, er); + process.nextTick(cb, er); + return false; + } + return true; + } + Writable.prototype.write = function(chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + if (isBuf && !Buffer2.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (typeof encoding === "function") { + cb = encoding; + encoding = null; + } + if (isBuf) encoding = "buffer"; + else if (!encoding) encoding = state.defaultEncoding; + if (typeof cb !== "function") cb = nop; + if (state.ending) writeAfterEnd(this, cb); + else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + return ret; + }; + Writable.prototype.cork = function() { + this._writableState.corked++; + }; + Writable.prototype.uncork = function() { + var state = this._writableState; + if (state.corked) { + state.corked--; + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } + }; + Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + if (typeof encoding === "string") encoding = encoding.toLowerCase(); + if (!(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((encoding + "").toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding); + this._writableState.defaultEncoding = encoding; + return this; + }; + Object.defineProperty(Writable.prototype, "writableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } + }); + function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === "string") { + chunk = Buffer2.from(chunk, encoding); + } + return chunk; + } + Object.defineProperty(Writable.prototype, "writableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } + }); + function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = "buffer"; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + state.length += len; + var ret = state.length < state.highWaterMark; + if (!ret) state.needDrain = true; + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk, + encoding, + isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + return ret; + } + function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED("write")); + else if (writev) stream._writev(chunk, state.onwrite); + else stream._write(chunk, encoding, state.onwrite); + state.sync = false; + } + function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + if (sync) { + process.nextTick(cb, er); + process.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + } else { + cb(er); + stream._writableState.errorEmitted = true; + errorOrDestroy(stream, er); + finishMaybe(stream, state); + } + } + function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; + } + function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + if (typeof cb !== "function") throw new ERR_MULTIPLE_CALLBACK(); + onwriteStateUpdate(state); + if (er) onwriteError(stream, state, sync, er, cb); + else { + var finished = needFinish(state) || stream.destroyed; + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + if (sync) { + process.nextTick(afterWrite, stream, state, finished, cb); + } else { + afterWrite(stream, state, finished, cb); + } + } + } + function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); + } + function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit("drain"); + } + } + function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + if (stream._writev && entry && entry.next) { + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + doWrite(stream, state, true, state.length, buffer, "", holder.finish); + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + if (state.writing) { + break; + } + } + if (entry === null) state.lastBufferedRequest = null; + } + state.bufferedRequest = entry; + state.bufferProcessing = false; + } + Writable.prototype._write = function(chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED("_write()")); + }; + Writable.prototype._writev = null; + Writable.prototype.end = function(chunk, encoding, cb) { + var state = this._writableState; + if (typeof chunk === "function") { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === "function") { + cb = encoding; + encoding = null; + } + if (chunk !== null && chunk !== void 0) this.write(chunk, encoding); + if (state.corked) { + state.corked = 1; + this.uncork(); + } + if (!state.ending) endWritable(this, state, cb); + return this; + }; + Object.defineProperty(Writable.prototype, "writableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } + }); + function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; + } + function callFinal(stream, state) { + stream._final(function(err2) { + state.pendingcb--; + if (err2) { + errorOrDestroy(stream, err2); + } + state.prefinished = true; + stream.emit("prefinish"); + finishMaybe(stream, state); + }); + } + function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === "function" && !state.destroyed) { + state.pendingcb++; + state.finalCalled = true; + process.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit("prefinish"); + } + } + } + function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit("finish"); + if (state.autoDestroy) { + var rState = stream._readableState; + if (!rState || rState.autoDestroy && rState.endEmitted) { + stream.destroy(); + } + } + } + } + return need; + } + function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) process.nextTick(cb); + else stream.once("finish", cb); + } + state.ended = true; + stream.writable = false; + } + function onCorkedFinish(corkReq, state, err2) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err2); + entry = entry.next; + } + state.corkedRequestsFree.next = corkReq; + } + Object.defineProperty(Writable.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._writableState === void 0) { + return false; + } + return this._writableState.destroyed; + }, + set: function set(value) { + if (!this._writableState) { + return; + } + this._writableState.destroyed = value; + } + }); + Writable.prototype.destroy = destroyImpl.destroy; + Writable.prototype._undestroy = destroyImpl.undestroy; + Writable.prototype._destroy = function(err2, cb) { + cb(err2); + }; + } +}); + +// node_modules/readable-stream/lib/_stream_duplex.js +var require_stream_duplex = __commonJS({ + "node_modules/readable-stream/lib/_stream_duplex.js"(exports2, module2) { + "use strict"; + var objectKeys = Object.keys || function(obj) { + var keys2 = []; + for (var key in obj) keys2.push(key); + return keys2; + }; + module2.exports = Duplex; + var Readable = require_stream_readable(); + var Writable = require_stream_writable(); + require_inherits()(Duplex, Readable); + { + keys = objectKeys(Writable.prototype); + for (v = 0; v < keys.length; v++) { + method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } + } + var keys; + var method; + var v; + function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + Readable.call(this, options); + Writable.call(this, options); + this.allowHalfOpen = true; + if (options) { + if (options.readable === false) this.readable = false; + if (options.writable === false) this.writable = false; + if (options.allowHalfOpen === false) { + this.allowHalfOpen = false; + this.once("end", onend); + } + } + } + Object.defineProperty(Duplex.prototype, "writableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.highWaterMark; + } + }); + Object.defineProperty(Duplex.prototype, "writableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState && this._writableState.getBuffer(); + } + }); + Object.defineProperty(Duplex.prototype, "writableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._writableState.length; + } + }); + function onend() { + if (this._writableState.ended) return; + process.nextTick(onEndNT, this); + } + function onEndNT(self2) { + self2.end(); + } + Object.defineProperty(Duplex.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === void 0 || this._writableState === void 0) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function set(value) { + if (this._readableState === void 0 || this._writableState === void 0) { + return; + } + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } + }); + } +}); + +// node_modules/safe-buffer/index.js +var require_safe_buffer = __commonJS({ + "node_modules/safe-buffer/index.js"(exports2, module2) { + var buffer = __require("buffer"); + var Buffer2 = buffer.Buffer; + function copyProps(src, dst) { + for (var key in src) { + dst[key] = src[key]; + } + } + if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { + module2.exports = buffer; + } else { + copyProps(buffer, exports2); + exports2.Buffer = SafeBuffer; + } + function SafeBuffer(arg, encodingOrOffset, length) { + return Buffer2(arg, encodingOrOffset, length); + } + SafeBuffer.prototype = Object.create(Buffer2.prototype); + copyProps(Buffer2, SafeBuffer); + SafeBuffer.from = function(arg, encodingOrOffset, length) { + if (typeof arg === "number") { + throw new TypeError("Argument must not be a number"); + } + return Buffer2(arg, encodingOrOffset, length); + }; + SafeBuffer.alloc = function(size, fill, encoding) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + var buf = Buffer2(size); + if (fill !== void 0) { + if (typeof encoding === "string") { + buf.fill(fill, encoding); + } else { + buf.fill(fill); + } + } else { + buf.fill(0); + } + return buf; + }; + SafeBuffer.allocUnsafe = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return Buffer2(size); + }; + SafeBuffer.allocUnsafeSlow = function(size) { + if (typeof size !== "number") { + throw new TypeError("Argument must be a number"); + } + return buffer.SlowBuffer(size); + }; + } +}); + +// node_modules/string_decoder/lib/string_decoder.js +var require_string_decoder = __commonJS({ + "node_modules/string_decoder/lib/string_decoder.js"(exports2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var isEncoding = Buffer2.isEncoding || function(encoding) { + encoding = "" + encoding; + switch (encoding && encoding.toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + case "raw": + return true; + default: + return false; + } + }; + function _normalizeEncoding(enc) { + if (!enc) return "utf8"; + var retried; + while (true) { + switch (enc) { + case "utf8": + case "utf-8": + return "utf8"; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return "utf16le"; + case "latin1": + case "binary": + return "latin1"; + case "base64": + case "ascii": + case "hex": + return enc; + default: + if (retried) return; + enc = ("" + enc).toLowerCase(); + retried = true; + } + } + } + function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== "string" && (Buffer2.isEncoding === isEncoding || !isEncoding(enc))) throw new Error("Unknown encoding: " + enc); + return nenc || enc; + } + exports2.StringDecoder = StringDecoder; + function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case "utf16le": + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case "utf8": + this.fillLast = utf8FillLast; + nb = 4; + break; + case "base64": + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer2.allocUnsafe(nb); + } + StringDecoder.prototype.write = function(buf) { + if (buf.length === 0) return ""; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === void 0) return ""; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ""; + }; + StringDecoder.prototype.end = utf8End; + StringDecoder.prototype.text = utf8Text; + StringDecoder.prototype.fillLast = function(buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; + }; + function utf8CheckByte(byte) { + if (byte <= 127) return 0; + else if (byte >> 5 === 6) return 2; + else if (byte >> 4 === 14) return 3; + else if (byte >> 3 === 30) return 4; + return byte >> 6 === 2 ? -1 : -2; + } + function utf8CheckIncomplete(self2, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self2.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self2.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0; + else self2.lastNeed = nb - 3; + } + return nb; + } + return 0; + } + function utf8CheckExtraBytes(self2, buf, p) { + if ((buf[0] & 192) !== 128) { + self2.lastNeed = 0; + return "\uFFFD"; + } + if (self2.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 192) !== 128) { + self2.lastNeed = 1; + return "\uFFFD"; + } + if (self2.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 192) !== 128) { + self2.lastNeed = 2; + return "\uFFFD"; + } + } + } + } + function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== void 0) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; + } + function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString("utf8", i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString("utf8", i, end); + } + function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) return r + "\uFFFD"; + return r; + } + function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString("utf16le", i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 55296 && c <= 56319) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString("utf16le", i, buf.length - 1); + } + function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString("utf16le", 0, end); + } + return r; + } + function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString("base64", i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString("base64", i, buf.length - n); + } + function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ""; + if (this.lastNeed) return r + this.lastChar.toString("base64", 0, 3 - this.lastNeed); + return r; + } + function simpleWrite(buf) { + return buf.toString(this.encoding); + } + function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ""; + } + } +}); + +// node_modules/readable-stream/lib/internal/streams/end-of-stream.js +var require_end_of_stream = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(exports2, module2) { + "use strict"; + var ERR_STREAM_PREMATURE_CLOSE = require_errors9().codes.ERR_STREAM_PREMATURE_CLOSE; + function once(callback) { + var called = false; + return function() { + if (called) return; + called = true; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + callback.apply(this, args); + }; + } + function noop() { + } + function isRequest(stream) { + return stream.setHeader && typeof stream.abort === "function"; + } + function eos(stream, opts, callback) { + if (typeof opts === "function") return eos(stream, null, opts); + if (!opts) opts = {}; + callback = once(callback || noop); + var readable = opts.readable || opts.readable !== false && stream.readable; + var writable = opts.writable || opts.writable !== false && stream.writable; + var onlegacyfinish = function onlegacyfinish2() { + if (!stream.writable) onfinish(); + }; + var writableEnded = stream._writableState && stream._writableState.finished; + var onfinish = function onfinish2() { + writable = false; + writableEnded = true; + if (!readable) callback.call(stream); + }; + var readableEnded = stream._readableState && stream._readableState.endEmitted; + var onend = function onend2() { + readable = false; + readableEnded = true; + if (!writable) callback.call(stream); + }; + var onerror = function onerror2(err2) { + callback.call(stream, err2); + }; + var onclose = function onclose2() { + var err2; + if (readable && !readableEnded) { + if (!stream._readableState || !stream._readableState.ended) err2 = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err2); + } + if (writable && !writableEnded) { + if (!stream._writableState || !stream._writableState.ended) err2 = new ERR_STREAM_PREMATURE_CLOSE(); + return callback.call(stream, err2); + } + }; + var onrequest = function onrequest2() { + stream.req.on("finish", onfinish); + }; + if (isRequest(stream)) { + stream.on("complete", onfinish); + stream.on("abort", onclose); + if (stream.req) onrequest(); + else stream.on("request", onrequest); + } else if (writable && !stream._writableState) { + stream.on("end", onlegacyfinish); + stream.on("close", onlegacyfinish); + } + stream.on("end", onend); + stream.on("finish", onfinish); + if (opts.error !== false) stream.on("error", onerror); + stream.on("close", onclose); + return function() { + stream.removeListener("complete", onfinish); + stream.removeListener("abort", onclose); + stream.removeListener("request", onrequest); + if (stream.req) stream.req.removeListener("finish", onfinish); + stream.removeListener("end", onlegacyfinish); + stream.removeListener("close", onlegacyfinish); + stream.removeListener("finish", onfinish); + stream.removeListener("end", onend); + stream.removeListener("error", onerror); + stream.removeListener("close", onclose); + }; + } + module2.exports = eos; + } +}); + +// node_modules/readable-stream/lib/internal/streams/async_iterator.js +var require_async_iterator3 = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/async_iterator.js"(exports2, module2) { + "use strict"; + var _Object$setPrototypeO; + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var finished = require_end_of_stream(); + var kLastResolve = Symbol("lastResolve"); + var kLastReject = Symbol("lastReject"); + var kError = Symbol("error"); + var kEnded = Symbol("ended"); + var kLastPromise = Symbol("lastPromise"); + var kHandlePromise = Symbol("handlePromise"); + var kStream = Symbol("stream"); + function createIterResult(value, done) { + return { + value, + done + }; + } + function readAndResolve(iter) { + var resolve = iter[kLastResolve]; + if (resolve !== null) { + var data = iter[kStream].read(); + if (data !== null) { + iter[kLastPromise] = null; + iter[kLastResolve] = null; + iter[kLastReject] = null; + resolve(createIterResult(data, false)); + } + } + } + function onReadable(iter) { + process.nextTick(readAndResolve, iter); + } + function wrapForNext(lastPromise, iter) { + return function(resolve, reject) { + lastPromise.then(function() { + if (iter[kEnded]) { + resolve(createIterResult(void 0, true)); + return; + } + iter[kHandlePromise](resolve, reject); + }, reject); + }; + } + var AsyncIteratorPrototype = Object.getPrototypeOf(function() { + }); + var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { + get stream() { + return this[kStream]; + }, + next: function next() { + var _this = this; + var error = this[kError]; + if (error !== null) { + return Promise.reject(error); + } + if (this[kEnded]) { + return Promise.resolve(createIterResult(void 0, true)); + } + if (this[kStream].destroyed) { + return new Promise(function(resolve, reject) { + process.nextTick(function() { + if (_this[kError]) { + reject(_this[kError]); + } else { + resolve(createIterResult(void 0, true)); + } + }); + }); + } + var lastPromise = this[kLastPromise]; + var promise; + if (lastPromise) { + promise = new Promise(wrapForNext(lastPromise, this)); + } else { + var data = this[kStream].read(); + if (data !== null) { + return Promise.resolve(createIterResult(data, false)); + } + promise = new Promise(this[kHandlePromise]); + } + this[kLastPromise] = promise; + return promise; + } + }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function() { + return this; + }), _defineProperty(_Object$setPrototypeO, "return", function _return() { + var _this2 = this; + return new Promise(function(resolve, reject) { + _this2[kStream].destroy(null, function(err2) { + if (err2) { + reject(err2); + return; + } + resolve(createIterResult(void 0, true)); + }); + }); + }), _Object$setPrototypeO), AsyncIteratorPrototype); + var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator2(stream) { + var _Object$create; + var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { + value: stream, + writable: true + }), _defineProperty(_Object$create, kLastResolve, { + value: null, + writable: true + }), _defineProperty(_Object$create, kLastReject, { + value: null, + writable: true + }), _defineProperty(_Object$create, kError, { + value: null, + writable: true + }), _defineProperty(_Object$create, kEnded, { + value: stream._readableState.endEmitted, + writable: true + }), _defineProperty(_Object$create, kHandlePromise, { + value: function value(resolve, reject) { + var data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + }), _Object$create)); + iterator[kLastPromise] = null; + finished(stream, function(err2) { + if (err2 && err2.code !== "ERR_STREAM_PREMATURE_CLOSE") { + var reject = iterator[kLastReject]; + if (reject !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + reject(err2); + } + iterator[kError] = err2; + return; + } + var resolve = iterator[kLastResolve]; + if (resolve !== null) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(void 0, true)); + } + iterator[kEnded] = true; + }); + stream.on("readable", onReadable.bind(null, iterator)); + return iterator; + }; + module2.exports = createReadableStreamAsyncIterator; + } +}); + +// node_modules/readable-stream/lib/internal/streams/from.js +var require_from = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/from.js"(exports2, module2) { + "use strict"; + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } + } + function _asyncToGenerator(fn) { + return function() { + var self2 = this, args = arguments; + return new Promise(function(resolve, reject) { + var gen = fn.apply(self2, args); + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + function _throw(err2) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err2); + } + _next(void 0); + }); + }; + } + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), true).forEach(function(key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); + } else { + obj[key] = value; + } + return obj; + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== void 0) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + var ERR_INVALID_ARG_TYPE = require_errors9().codes.ERR_INVALID_ARG_TYPE; + function from(Readable, iterable, opts) { + var iterator; + if (iterable && typeof iterable.next === "function") { + iterator = iterable; + } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator](); + else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator](); + else throw new ERR_INVALID_ARG_TYPE("iterable", ["Iterable"], iterable); + var readable = new Readable(_objectSpread({ + objectMode: true + }, opts)); + var reading = false; + readable._read = function() { + if (!reading) { + reading = true; + next(); + } + }; + function next() { + return _next2.apply(this, arguments); + } + function _next2() { + _next2 = _asyncToGenerator(function* () { + try { + var _yield$iterator$next = yield iterator.next(), value = _yield$iterator$next.value, done = _yield$iterator$next.done; + if (done) { + readable.push(null); + } else if (readable.push(yield value)) { + next(); + } else { + reading = false; + } + } catch (err2) { + readable.destroy(err2); + } + }); + return _next2.apply(this, arguments); + } + return readable; + } + module2.exports = from; + } +}); + +// node_modules/readable-stream/lib/_stream_readable.js +var require_stream_readable = __commonJS({ + "node_modules/readable-stream/lib/_stream_readable.js"(exports2, module2) { + "use strict"; + module2.exports = Readable; + var Duplex; + Readable.ReadableState = ReadableState; + var EE = __require("events").EventEmitter; + var EElistenerCount = function EElistenerCount2(emitter, type) { + return emitter.listeners(type).length; + }; + var Stream = require_stream3(); + var Buffer2 = __require("buffer").Buffer; + var OurUint8Array = (typeof global !== "undefined" ? global : typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : {}).Uint8Array || function() { + }; + function _uint8ArrayToBuffer(chunk) { + return Buffer2.from(chunk); + } + function _isUint8Array(obj) { + return Buffer2.isBuffer(obj) || obj instanceof OurUint8Array; + } + var debugUtil = __require("util"); + var debug; + if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog("stream"); + } else { + debug = function debug2() { + }; + } + var BufferList = require_buffer_list(); + var destroyImpl = require_destroy(); + var _require = require_state2(); + var getHighWaterMark = _require.getHighWaterMark; + var _require$codes = require_errors9().codes; + var ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE; + var ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + var StringDecoder; + var createReadableStreamAsyncIterator; + var from; + require_inherits()(Readable, Stream); + var errorOrDestroy = destroyImpl.errorOrDestroy; + var kProxyEvents = ["error", "close", "destroy", "pause", "resume"]; + function prependListener(emitter, event, fn) { + if (typeof emitter.prependListener === "function") return emitter.prependListener(event, fn); + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn); + else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn); + else emitter._events[event] = [fn, emitter._events[event]]; + } + function ReadableState(options, stream, isDuplex) { + Duplex = Duplex || require_stream_duplex(); + options = options || {}; + if (typeof isDuplex !== "boolean") isDuplex = stream instanceof Duplex; + this.objectMode = !!options.objectMode; + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + this.highWaterMark = getHighWaterMark(this, options, "readableHighWaterMark", isDuplex); + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + this.sync = true; + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + this.paused = true; + this.emitClose = options.emitClose !== false; + this.autoDestroy = !!options.autoDestroy; + this.destroyed = false; + this.defaultEncoding = options.defaultEncoding || "utf8"; + this.awaitDrain = 0; + this.readingMore = false; + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } + } + function Readable(options) { + Duplex = Duplex || require_stream_duplex(); + if (!(this instanceof Readable)) return new Readable(options); + var isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + this.readable = true; + if (options) { + if (typeof options.read === "function") this._read = options.read; + if (typeof options.destroy === "function") this._destroy = options.destroy; + } + Stream.call(this); + } + Object.defineProperty(Readable.prototype, "destroyed", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + if (this._readableState === void 0) { + return false; + } + return this._readableState.destroyed; + }, + set: function set(value) { + if (!this._readableState) { + return; + } + this._readableState.destroyed = value; + } + }); + Readable.prototype.destroy = destroyImpl.destroy; + Readable.prototype._undestroy = destroyImpl.undestroy; + Readable.prototype._destroy = function(err2, cb) { + cb(err2); + }; + Readable.prototype.push = function(chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + if (!state.objectMode) { + if (typeof chunk === "string") { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer2.from(chunk, encoding); + encoding = ""; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); + }; + Readable.prototype.unshift = function(chunk) { + return readableAddChunk(this, chunk, null, true, false); + }; + function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + debug("readableAddChunk", chunk); + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + errorOrDestroy(stream, er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== "string" && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer2.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + if (addToFront) { + if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT()); + else addChunk(stream, state, chunk, true); + } else if (state.ended) { + errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF()); + } else if (state.destroyed) { + return false; + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false); + else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + maybeReadMore(stream, state); + } + } + return !state.ended && (state.length < state.highWaterMark || state.length === 0); + } + function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + state.awaitDrain = 0; + stream.emit("data", chunk); + } else { + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk); + else state.buffer.push(chunk); + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); + } + function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== "string" && chunk !== void 0 && !state.objectMode) { + er = new ERR_INVALID_ARG_TYPE("chunk", ["string", "Buffer", "Uint8Array"], chunk); + } + return er; + } + Readable.prototype.isPaused = function() { + return this._readableState.flowing === false; + }; + Readable.prototype.setEncoding = function(enc) { + if (!StringDecoder) StringDecoder = require_string_decoder().StringDecoder; + var decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + this._readableState.encoding = this._readableState.decoder.encoding; + var p = this._readableState.buffer.head; + var content = ""; + while (p !== null) { + content += decoder.write(p.data); + p = p.next; + } + this._readableState.buffer.clear(); + if (content !== "") this._readableState.buffer.push(content); + this._readableState.length = content.length; + return this; + }; + var MAX_HWM = 1073741824; + function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; + } + function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + if (state.flowing && state.length) return state.buffer.head.data.length; + else return state.length; + } + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; + } + Readable.prototype.read = function(n) { + debug("read", n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + if (n !== 0) state.emittedReadable = false; + if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { + debug("read: emitReadable", state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this); + else emitReadable(this); + return null; + } + n = howMuchToRead(n, state); + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + var doRead = state.needReadable; + debug("need readable", doRead); + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug("length less than watermark", doRead); + } + if (state.ended || state.reading) { + doRead = false; + debug("reading or ended", doRead); + } else if (doRead) { + debug("do read"); + state.reading = true; + state.sync = true; + if (state.length === 0) state.needReadable = true; + this._read(state.highWaterMark); + state.sync = false; + if (!state.reading) n = howMuchToRead(nOrig, state); + } + var ret; + if (n > 0) ret = fromList(n, state); + else ret = null; + if (ret === null) { + state.needReadable = state.length <= state.highWaterMark; + n = 0; + } else { + state.length -= n; + state.awaitDrain = 0; + } + if (state.length === 0) { + if (!state.ended) state.needReadable = true; + if (nOrig !== n && state.ended) endReadable(this); + } + if (ret !== null) this.emit("data", ret); + return ret; + }; + function onEofChunk(stream, state) { + debug("onEofChunk"); + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + if (state.sync) { + emitReadable(stream); + } else { + state.needReadable = false; + if (!state.emittedReadable) { + state.emittedReadable = true; + emitReadable_(stream); + } + } + } + function emitReadable(stream) { + var state = stream._readableState; + debug("emitReadable", state.needReadable, state.emittedReadable); + state.needReadable = false; + if (!state.emittedReadable) { + debug("emitReadable", state.flowing); + state.emittedReadable = true; + process.nextTick(emitReadable_, stream); + } + } + function emitReadable_(stream) { + var state = stream._readableState; + debug("emitReadable_", state.destroyed, state.length, state.ended); + if (!state.destroyed && (state.length || state.ended)) { + stream.emit("readable"); + state.emittedReadable = false; + } + state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; + flow(stream); + } + function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + process.nextTick(maybeReadMore_, stream, state); + } + } + function maybeReadMore_(stream, state) { + while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { + var len = state.length; + debug("maybeReadMore read 0"); + stream.read(0); + if (len === state.length) + break; + } + state.readingMore = false; + } + Readable.prototype._read = function(n) { + errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED("_read()")); + }; + Readable.prototype.pipe = function(dest, pipeOpts) { + var src = this; + var state = this._readableState; + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug("pipe count=%d opts=%j", state.pipesCount, pipeOpts); + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) process.nextTick(endFn); + else src.once("end", endFn); + dest.on("unpipe", onunpipe); + function onunpipe(readable, unpipeInfo) { + debug("onunpipe"); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + function onend() { + debug("onend"); + dest.end(); + } + var ondrain = pipeOnDrain(src); + dest.on("drain", ondrain); + var cleanedUp = false; + function cleanup() { + debug("cleanup"); + dest.removeListener("close", onclose); + dest.removeListener("finish", onfinish); + dest.removeListener("drain", ondrain); + dest.removeListener("error", onerror); + dest.removeListener("unpipe", onunpipe); + src.removeListener("end", onend); + src.removeListener("end", unpipe); + src.removeListener("data", ondata); + cleanedUp = true; + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + src.on("data", ondata); + function ondata(chunk) { + debug("ondata"); + var ret = dest.write(chunk); + debug("dest.write", ret); + if (ret === false) { + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug("false write response, pause", state.awaitDrain); + state.awaitDrain++; + } + src.pause(); + } + } + function onerror(er) { + debug("onerror", er); + unpipe(); + dest.removeListener("error", onerror); + if (EElistenerCount(dest, "error") === 0) errorOrDestroy(dest, er); + } + prependListener(dest, "error", onerror); + function onclose() { + dest.removeListener("finish", onfinish); + unpipe(); + } + dest.once("close", onclose); + function onfinish() { + debug("onfinish"); + dest.removeListener("close", onclose); + unpipe(); + } + dest.once("finish", onfinish); + function unpipe() { + debug("unpipe"); + src.unpipe(dest); + } + dest.emit("pipe", src); + if (!state.flowing) { + debug("pipe resume"); + src.resume(); + } + return dest; + }; + function pipeOnDrain(src) { + return function pipeOnDrainFunctionResult() { + var state = src._readableState; + debug("pipeOnDrain", state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, "data")) { + state.flowing = true; + flow(src); + } + }; + } + Readable.prototype.unpipe = function(dest) { + var state = this._readableState; + var unpipeInfo = { + hasUnpiped: false + }; + if (state.pipesCount === 0) return this; + if (state.pipesCount === 1) { + if (dest && dest !== state.pipes) return this; + if (!dest) dest = state.pipes; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit("unpipe", this, unpipeInfo); + return this; + } + if (!dest) { + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + for (var i = 0; i < len; i++) dests[i].emit("unpipe", this, { + hasUnpiped: false + }); + return this; + } + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + dest.emit("unpipe", this, unpipeInfo); + return this; + }; + Readable.prototype.on = function(ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + var state = this._readableState; + if (ev === "data") { + state.readableListening = this.listenerCount("readable") > 0; + if (state.flowing !== false) this.resume(); + } else if (ev === "readable") { + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.flowing = false; + state.emittedReadable = false; + debug("on readable", state.length, state.reading); + if (state.length) { + emitReadable(this); + } else if (!state.reading) { + process.nextTick(nReadingNextTick, this); + } + } + } + return res; + }; + Readable.prototype.addListener = Readable.prototype.on; + Readable.prototype.removeListener = function(ev, fn) { + var res = Stream.prototype.removeListener.call(this, ev, fn); + if (ev === "readable") { + process.nextTick(updateReadableListening, this); + } + return res; + }; + Readable.prototype.removeAllListeners = function(ev) { + var res = Stream.prototype.removeAllListeners.apply(this, arguments); + if (ev === "readable" || ev === void 0) { + process.nextTick(updateReadableListening, this); + } + return res; + }; + function updateReadableListening(self2) { + var state = self2._readableState; + state.readableListening = self2.listenerCount("readable") > 0; + if (state.resumeScheduled && !state.paused) { + state.flowing = true; + } else if (self2.listenerCount("data") > 0) { + self2.resume(); + } + } + function nReadingNextTick(self2) { + debug("readable nexttick read 0"); + self2.read(0); + } + Readable.prototype.resume = function() { + var state = this._readableState; + if (!state.flowing) { + debug("resume"); + state.flowing = !state.readableListening; + resume(this, state); + } + state.paused = false; + return this; + }; + function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + process.nextTick(resume_, stream, state); + } + } + function resume_(stream, state) { + debug("resume", state.reading); + if (!state.reading) { + stream.read(0); + } + state.resumeScheduled = false; + stream.emit("resume"); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); + } + Readable.prototype.pause = function() { + debug("call pause flowing=%j", this._readableState.flowing); + if (this._readableState.flowing !== false) { + debug("pause"); + this._readableState.flowing = false; + this.emit("pause"); + } + this._readableState.paused = true; + return this; + }; + function flow(stream) { + var state = stream._readableState; + debug("flow", state.flowing); + while (state.flowing && stream.read() !== null) ; + } + Readable.prototype.wrap = function(stream) { + var _this = this; + var state = this._readableState; + var paused = false; + stream.on("end", function() { + debug("wrapped end"); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + _this.push(null); + }); + stream.on("data", function(chunk) { + debug("wrapped data"); + if (state.decoder) chunk = state.decoder.write(chunk); + if (state.objectMode && (chunk === null || chunk === void 0)) return; + else if (!state.objectMode && (!chunk || !chunk.length)) return; + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + for (var i in stream) { + if (this[i] === void 0 && typeof stream[i] === "function") { + this[i] = /* @__PURE__ */ function methodWrap(method) { + return function methodWrapReturnFunction() { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + this._read = function(n2) { + debug("wrapped _read", n2); + if (paused) { + paused = false; + stream.resume(); + } + }; + return this; + }; + if (typeof Symbol === "function") { + Readable.prototype[Symbol.asyncIterator] = function() { + if (createReadableStreamAsyncIterator === void 0) { + createReadableStreamAsyncIterator = require_async_iterator3(); + } + return createReadableStreamAsyncIterator(this); + }; + } + Object.defineProperty(Readable.prototype, "readableHighWaterMark", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.highWaterMark; + } + }); + Object.defineProperty(Readable.prototype, "readableBuffer", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState && this._readableState.buffer; + } + }); + Object.defineProperty(Readable.prototype, "readableFlowing", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.flowing; + }, + set: function set(state) { + if (this._readableState) { + this._readableState.flowing = state; + } + } + }); + Readable._fromList = fromList; + Object.defineProperty(Readable.prototype, "readableLength", { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function get() { + return this._readableState.length; + } + }); + function fromList(n, state) { + if (state.length === 0) return null; + var ret; + if (state.objectMode) ret = state.buffer.shift(); + else if (!n || n >= state.length) { + if (state.decoder) ret = state.buffer.join(""); + else if (state.buffer.length === 1) ret = state.buffer.first(); + else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + ret = state.buffer.consume(n, state.decoder); + } + return ret; + } + function endReadable(stream) { + var state = stream._readableState; + debug("endReadable", state.endEmitted); + if (!state.endEmitted) { + state.ended = true; + process.nextTick(endReadableNT, state, stream); + } + } + function endReadableNT(state, stream) { + debug("endReadableNT", state.endEmitted, state.length); + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit("end"); + if (state.autoDestroy) { + var wState = stream._writableState; + if (!wState || wState.autoDestroy && wState.finished) { + stream.destroy(); + } + } + } + } + if (typeof Symbol === "function") { + Readable.from = function(iterable, opts) { + if (from === void 0) { + from = require_from(); + } + return from(Readable, iterable, opts); + }; + } + function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; + } + } +}); + +// node_modules/readable-stream/lib/_stream_transform.js +var require_stream_transform = __commonJS({ + "node_modules/readable-stream/lib/_stream_transform.js"(exports2, module2) { + "use strict"; + module2.exports = Transform; + var _require$codes = require_errors9().codes; + var ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED; + var ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK; + var ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING; + var ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; + var Duplex = require_stream_duplex(); + require_inherits()(Transform, Duplex); + function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + var cb = ts.writecb; + if (cb === null) { + return this.emit("error", new ERR_MULTIPLE_CALLBACK()); + } + ts.writechunk = null; + ts.writecb = null; + if (data != null) + this.push(data); + cb(er); + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } + } + function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + Duplex.call(this, options); + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + this._readableState.needReadable = true; + this._readableState.sync = false; + if (options) { + if (typeof options.transform === "function") this._transform = options.transform; + if (typeof options.flush === "function") this._flush = options.flush; + } + this.on("prefinish", prefinish); + } + function prefinish() { + var _this = this; + if (typeof this._flush === "function" && !this._readableState.destroyed) { + this._flush(function(er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } + } + Transform.prototype.push = function(chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); + }; + Transform.prototype._transform = function(chunk, encoding, cb) { + cb(new ERR_METHOD_NOT_IMPLEMENTED("_transform()")); + }; + Transform.prototype._write = function(chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } + }; + Transform.prototype._read = function(n) { + var ts = this._transformState; + if (ts.writechunk !== null && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + ts.needTransform = true; + } + }; + Transform.prototype._destroy = function(err2, cb) { + Duplex.prototype._destroy.call(this, err2, function(err22) { + cb(err22); + }); + }; + function done(stream, er, data) { + if (er) return stream.emit("error", er); + if (data != null) + stream.push(data); + if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); + if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); + return stream.push(null); + } + } +}); + +// node_modules/readable-stream/lib/_stream_passthrough.js +var require_stream_passthrough = __commonJS({ + "node_modules/readable-stream/lib/_stream_passthrough.js"(exports2, module2) { + "use strict"; + module2.exports = PassThrough; + var Transform = require_stream_transform(); + require_inherits()(PassThrough, Transform); + function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + Transform.call(this, options); + } + PassThrough.prototype._transform = function(chunk, encoding, cb) { + cb(null, chunk); + }; + } +}); + +// node_modules/readable-stream/lib/internal/streams/pipeline.js +var require_pipeline = __commonJS({ + "node_modules/readable-stream/lib/internal/streams/pipeline.js"(exports2, module2) { + "use strict"; + var eos; + function once(callback) { + var called = false; + return function() { + if (called) return; + called = true; + callback.apply(void 0, arguments); + }; + } + var _require$codes = require_errors9().codes; + var ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS; + var ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; + function noop(err2) { + if (err2) throw err2; + } + function isRequest(stream) { + return stream.setHeader && typeof stream.abort === "function"; + } + function destroyer(stream, reading, writing, callback) { + callback = once(callback); + var closed = false; + stream.on("close", function() { + closed = true; + }); + if (eos === void 0) eos = require_end_of_stream(); + eos(stream, { + readable: reading, + writable: writing + }, function(err2) { + if (err2) return callback(err2); + closed = true; + callback(); + }); + var destroyed = false; + return function(err2) { + if (closed) return; + if (destroyed) return; + destroyed = true; + if (isRequest(stream)) return stream.abort(); + if (typeof stream.destroy === "function") return stream.destroy(); + callback(err2 || new ERR_STREAM_DESTROYED("pipe")); + }; + } + function call(fn) { + fn(); + } + function pipe(from, to) { + return from.pipe(to); + } + function popCallback(streams) { + if (!streams.length) return noop; + if (typeof streams[streams.length - 1] !== "function") return noop; + return streams.pop(); + } + function pipeline() { + for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { + streams[_key] = arguments[_key]; + } + var callback = popCallback(streams); + if (Array.isArray(streams[0])) streams = streams[0]; + if (streams.length < 2) { + throw new ERR_MISSING_ARGS("streams"); + } + var error; + var destroys = streams.map(function(stream, i) { + var reading = i < streams.length - 1; + var writing = i > 0; + return destroyer(stream, reading, writing, function(err2) { + if (!error) error = err2; + if (err2) destroys.forEach(call); + if (reading) return; + destroys.forEach(call); + callback(error); + }); + }); + return streams.reduce(pipe); + } + module2.exports = pipeline; + } +}); + +// node_modules/readable-stream/readable.js +var require_readable = __commonJS({ + "node_modules/readable-stream/readable.js"(exports2, module2) { + var Stream = __require("stream"); + if (process.env.READABLE_STREAM === "disable" && Stream) { + module2.exports = Stream.Readable; + Object.assign(module2.exports, Stream); + module2.exports.Stream = Stream; + } else { + exports2 = module2.exports = require_stream_readable(); + exports2.Stream = Stream || exports2; + exports2.Readable = exports2; + exports2.Writable = require_stream_writable(); + exports2.Duplex = require_stream_duplex(); + exports2.Transform = require_stream_transform(); + exports2.PassThrough = require_stream_passthrough(); + exports2.finished = require_end_of_stream(); + exports2.pipeline = require_pipeline(); + } + } +}); + +// node_modules/blake-hash/lib/api/blake.js +var require_blake = __commonJS({ + "node_modules/blake-hash/lib/api/blake.js"(exports2, module2) { + var Transform = require_readable().Transform; + module2.exports = class Blake extends Transform { + constructor(engine, options) { + super(options); + this._engine = engine; + this._finalized = false; + } + _transform(chunk, encoding, callback) { + let error = null; + try { + this.update(chunk, encoding); + } catch (err2) { + error = err2; + } + callback(error); + } + _flush(callback) { + let error = null; + try { + this.push(this.digest()); + } catch (err2) { + error = err2; + } + callback(error); + } + update(data, encoding) { + if (!Buffer.isBuffer(data) && typeof data !== "string") throw new TypeError("Data must be a string or a buffer"); + if (this._finalized) throw new Error("Digest already called"); + if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); + this._engine.update(data); + return this; + } + digest(encoding) { + if (this._finalized) throw new Error("Digest already called"); + this._finalized = true; + let digest = this._engine.digest(); + if (encoding !== void 0) digest = digest.toString(encoding); + return digest; + } + }; + } +}); + +// node_modules/blake-hash/lib/api/index.js +var require_api = __commonJS({ + "node_modules/blake-hash/lib/api/index.js"(exports2, module2) { + var Blake = require_blake(); + module2.exports = (engines) => { + const getEngine = (algorithm) => { + const hash = typeof algorithm === "string" ? algorithm.toLowerCase() : algorithm; + switch (hash) { + case "blake224": + return engines.Blake224; + case "blake256": + return engines.Blake256; + case "blake384": + return engines.Blake384; + case "blake512": + return engines.Blake512; + default: + throw new Error("Invald algorithm: " + algorithm); + } + }; + return (algorithm, options) => { + const Engine = getEngine(algorithm); + return new Blake(new Engine(), options); + }; + }; + } +}); + +// node_modules/blake-hash/bindings.js +var require_bindings2 = __commonJS({ + "node_modules/blake-hash/bindings.js"(exports2, module2) { + module2.exports = require_api()(require_node_gyp_build2()(__dirname)); + } +}); + +// node_modules/blake-hash/lib/blake.js +var require_blake2 = __commonJS({ + "node_modules/blake-hash/lib/blake.js"(exports2, module2) { + var Blake = class { + _lengthCarry(arr) { + for (let j = 0; j < arr.length; ++j) { + if (arr[j] < 4294967296) break; + arr[j] -= 4294967296; + arr[j + 1] += 1; + } + } + update(data) { + const block = this._block; + let offset = 0; + while (this._blockOffset + data.length - offset >= block.length) { + for (let i = this._blockOffset; i < block.length; ) block[i++] = data[offset++]; + this._length[0] += block.length * 8; + this._lengthCarry(this._length); + this._compress(); + this._blockOffset = 0; + } + while (offset < data.length) block[this._blockOffset++] = data[offset++]; + } + }; + Blake.sigma = [ + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], + [14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3], + [11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4], + [7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8], + [9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13], + [2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9], + [12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11], + [13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10], + [6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5], + [10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0], + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], + [14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3], + [11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4], + [7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8], + [9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13], + [2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9] + ]; + Blake.u256 = [ + 608135816, + 2242054355, + 320440878, + 57701188, + 2752067618, + 698298832, + 137296536, + 3964562569, + 1160258022, + 953160567, + 3193202383, + 887688300, + 3232508343, + 3380367581, + 1065670069, + 3041331479 + ]; + Blake.u512 = [ + 608135816, + 2242054355, + 320440878, + 57701188, + 2752067618, + 698298832, + 137296536, + 3964562569, + 1160258022, + 953160567, + 3193202383, + 887688300, + 3232508343, + 3380367581, + 1065670069, + 3041331479, + 2450970073, + 2306472731, + 3509652390, + 2564797868, + 805139163, + 3491422135, + 3101798381, + 1780907670, + 3128725573, + 4046225305, + 614570311, + 3012652279, + 134345442, + 2240740374, + 1667834072, + 1901547113 + ]; + Blake.padding = Buffer.from([ + 128, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ]); + module2.exports = Blake; + } +}); + +// node_modules/blake-hash/lib/blake256.js +var require_blake256 = __commonJS({ + "node_modules/blake-hash/lib/blake256.js"(exports2, module2) { + var Blake = require_blake2(); + var zo = Buffer.from([1]); + var oo = Buffer.from([129]); + var rot = (x, n) => (x << 32 - n | x >>> n) >>> 0; + function g(v, m, i, a, b, c, d, e) { + const sigma = Blake.sigma; + const u256 = Blake.u256; + v[a] = v[a] + ((m[sigma[i][e]] ^ u256[sigma[i][e + 1]]) >>> 0) + v[b] >>> 0; + v[d] = rot(v[d] ^ v[a], 16); + v[c] = v[c] + v[d] >>> 0; + v[b] = rot(v[b] ^ v[c], 12); + v[a] = v[a] + ((m[sigma[i][e + 1]] ^ u256[sigma[i][e]]) >>> 0) + v[b] >>> 0; + v[d] = rot(v[d] ^ v[a], 8); + v[c] = v[c] + v[d] >>> 0; + v[b] = rot(v[b] ^ v[c], 7); + } + module2.exports = class Blake256 extends Blake { + constructor() { + super(); + this._h = [ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]; + this._s = [0, 0, 0, 0]; + this._block = Buffer.alloc(64); + this._blockOffset = 0; + this._length = [0, 0]; + this._nullt = false; + this._zo = zo; + this._oo = oo; + } + _compress() { + const u256 = Blake.u256; + const v = new Array(16); + const m = new Array(16); + let i; + for (i = 0; i < 16; ++i) m[i] = this._block.readUInt32BE(i * 4); + for (i = 0; i < 8; ++i) v[i] = this._h[i] >>> 0; + for (i = 8; i < 12; ++i) v[i] = (this._s[i - 8] ^ u256[i - 8]) >>> 0; + for (i = 12; i < 16; ++i) v[i] = u256[i - 8]; + if (!this._nullt) { + v[12] = (v[12] ^ this._length[0]) >>> 0; + v[13] = (v[13] ^ this._length[0]) >>> 0; + v[14] = (v[14] ^ this._length[1]) >>> 0; + v[15] = (v[15] ^ this._length[1]) >>> 0; + } + for (i = 0; i < 14; ++i) { + g(v, m, i, 0, 4, 8, 12, 0); + g(v, m, i, 1, 5, 9, 13, 2); + g(v, m, i, 2, 6, 10, 14, 4); + g(v, m, i, 3, 7, 11, 15, 6); + g(v, m, i, 0, 5, 10, 15, 8); + g(v, m, i, 1, 6, 11, 12, 10); + g(v, m, i, 2, 7, 8, 13, 12); + g(v, m, i, 3, 4, 9, 14, 14); + } + for (i = 0; i < 16; ++i) this._h[i % 8] = (this._h[i % 8] ^ v[i]) >>> 0; + for (i = 0; i < 8; ++i) this._h[i] = (this._h[i] ^ this._s[i % 4]) >>> 0; + } + _padding() { + let lo = this._length[0] + this._blockOffset * 8; + let hi = this._length[1]; + if (lo >= 4294967296) { + lo -= 4294967296; + hi += 1; + } + const msglen = Buffer.alloc(8); + msglen.writeUInt32BE(hi, 0); + msglen.writeUInt32BE(lo, 4); + if (this._blockOffset === 55) { + this._length[0] -= 8; + this.update(this._oo); + } else { + if (this._blockOffset < 55) { + if (this._blockOffset === 0) this._nullt = true; + this._length[0] -= (55 - this._blockOffset) * 8; + this.update(Blake.padding.slice(0, 55 - this._blockOffset)); + } else { + this._length[0] -= (64 - this._blockOffset) * 8; + this.update(Blake.padding.slice(0, 64 - this._blockOffset)); + this._length[0] -= 55 * 8; + this.update(Blake.padding.slice(1, 1 + 55)); + this._nullt = true; + } + this.update(this._zo); + this._length[0] -= 8; + } + this._length[0] -= 64; + this.update(msglen); + } + digest() { + this._padding(); + const buffer = Buffer.alloc(32); + for (let i = 0; i < 8; ++i) buffer.writeUInt32BE(this._h[i], i * 4); + return buffer; + } + }; + } +}); + +// node_modules/blake-hash/lib/blake224.js +var require_blake224 = __commonJS({ + "node_modules/blake-hash/lib/blake224.js"(exports2, module2) { + var Blake256 = require_blake256(); + var zo = Buffer.from([0]); + var oo = Buffer.from([128]); + module2.exports = class Blake224 extends Blake256 { + constructor() { + super(); + this._h = [ + 3238371032, + 914150663, + 812702999, + 4144912697, + 4290775857, + 1750603025, + 1694076839, + 3204075428 + ]; + this._zo = zo; + this._oo = oo; + } + digest() { + this._padding(); + const buffer = Buffer.alloc(28); + for (let i = 0; i < 7; ++i) buffer.writeUInt32BE(this._h[i], i * 4); + return buffer; + } + }; + } +}); + +// node_modules/blake-hash/lib/blake512.js +var require_blake512 = __commonJS({ + "node_modules/blake-hash/lib/blake512.js"(exports2, module2) { + var Blake = require_blake2(); + var zo = Buffer.from([1]); + var oo = Buffer.from([129]); + function rot(v, i, j, n) { + let hi = v[i * 2] ^ v[j * 2]; + let lo = v[i * 2 + 1] ^ v[j * 2 + 1]; + if (n >= 32) { + lo = lo ^ hi; + hi = lo ^ hi; + lo = lo ^ hi; + n -= 32; + } + if (n === 0) { + v[i * 2] = hi >>> 0; + v[i * 2 + 1] = lo >>> 0; + } else { + v[i * 2] = (hi >>> n | lo << 32 - n) >>> 0; + v[i * 2 + 1] = (lo >>> n | hi << 32 - n) >>> 0; + } + } + function g(v, m, i, a, b, c, d, e) { + const sigma = Blake.sigma; + const u512 = Blake.u512; + let lo; + lo = v[a * 2 + 1] + ((m[sigma[i][e] * 2 + 1] ^ u512[sigma[i][e + 1] * 2 + 1]) >>> 0) + v[b * 2 + 1]; + v[a * 2] = v[a * 2] + ((m[sigma[i][e] * 2] ^ u512[sigma[i][e + 1] * 2]) >>> 0) + v[b * 2] + ~~(lo / 4294967296) >>> 0; + v[a * 2 + 1] = lo >>> 0; + rot(v, d, a, 32); + lo = v[c * 2 + 1] + v[d * 2 + 1]; + v[c * 2] = v[c * 2] + v[d * 2] + ~~(lo / 4294967296) >>> 0; + v[c * 2 + 1] = lo >>> 0; + rot(v, b, c, 25); + lo = v[a * 2 + 1] + ((m[sigma[i][e + 1] * 2 + 1] ^ u512[sigma[i][e] * 2 + 1]) >>> 0) + v[b * 2 + 1]; + v[a * 2] = v[a * 2] + ((m[sigma[i][e + 1] * 2] ^ u512[sigma[i][e] * 2]) >>> 0) + v[b * 2] + ~~(lo / 4294967296) >>> 0; + v[a * 2 + 1] = lo >>> 0; + rot(v, d, a, 16); + lo = v[c * 2 + 1] + v[d * 2 + 1]; + v[c * 2] = v[c * 2] + v[d * 2] + ~~(lo / 4294967296) >>> 0; + v[c * 2 + 1] = lo >>> 0; + rot(v, b, c, 11); + } + module2.exports = class Blake512 extends Blake { + constructor() { + super(); + this._h = [ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]; + this._s = [0, 0, 0, 0, 0, 0, 0, 0]; + this._block = Buffer.alloc(128); + this._blockOffset = 0; + this._length = [0, 0, 0, 0]; + this._nullt = false; + this._zo = zo; + this._oo = oo; + } + _compress() { + const u512 = Blake.u512; + const v = new Array(32); + const m = new Array(32); + let i; + for (i = 0; i < 32; ++i) m[i] = this._block.readUInt32BE(i * 4); + for (i = 0; i < 16; ++i) v[i] = this._h[i] >>> 0; + for (i = 16; i < 24; ++i) v[i] = (this._s[i - 16] ^ u512[i - 16]) >>> 0; + for (i = 24; i < 32; ++i) v[i] = u512[i - 16]; + if (!this._nullt) { + v[24] = (v[24] ^ this._length[1]) >>> 0; + v[25] = (v[25] ^ this._length[0]) >>> 0; + v[26] = (v[26] ^ this._length[1]) >>> 0; + v[27] = (v[27] ^ this._length[0]) >>> 0; + v[28] = (v[28] ^ this._length[3]) >>> 0; + v[29] = (v[29] ^ this._length[2]) >>> 0; + v[30] = (v[30] ^ this._length[3]) >>> 0; + v[31] = (v[31] ^ this._length[2]) >>> 0; + } + for (i = 0; i < 16; ++i) { + g(v, m, i, 0, 4, 8, 12, 0); + g(v, m, i, 1, 5, 9, 13, 2); + g(v, m, i, 2, 6, 10, 14, 4); + g(v, m, i, 3, 7, 11, 15, 6); + g(v, m, i, 0, 5, 10, 15, 8); + g(v, m, i, 1, 6, 11, 12, 10); + g(v, m, i, 2, 7, 8, 13, 12); + g(v, m, i, 3, 4, 9, 14, 14); + } + for (i = 0; i < 16; ++i) { + this._h[i % 8 * 2] = (this._h[i % 8 * 2] ^ v[i * 2]) >>> 0; + this._h[i % 8 * 2 + 1] = (this._h[i % 8 * 2 + 1] ^ v[i * 2 + 1]) >>> 0; + } + for (i = 0; i < 8; ++i) { + this._h[i * 2] = (this._h[i * 2] ^ this._s[i % 4 * 2]) >>> 0; + this._h[i * 2 + 1] = (this._h[i * 2 + 1] ^ this._s[i % 4 * 2 + 1]) >>> 0; + } + } + _padding() { + const len = this._length.slice(); + len[0] += this._blockOffset * 8; + this._lengthCarry(len); + const msglen = Buffer.alloc(16); + for (let i = 0; i < 4; ++i) msglen.writeUInt32BE(len[3 - i], i * 4); + if (this._blockOffset === 111) { + this._length[0] -= 8; + this.update(this._oo); + } else { + if (this._blockOffset < 111) { + if (this._blockOffset === 0) this._nullt = true; + this._length[0] -= (111 - this._blockOffset) * 8; + this.update(Blake.padding.slice(0, 111 - this._blockOffset)); + } else { + this._length[0] -= (128 - this._blockOffset) * 8; + this.update(Blake.padding.slice(0, 128 - this._blockOffset)); + this._length[0] -= 111 * 8; + this.update(Blake.padding.slice(1, 1 + 111)); + this._nullt = true; + } + this.update(this._zo); + this._length[0] -= 8; + } + this._length[0] -= 128; + this.update(msglen); + } + digest() { + this._padding(); + const buffer = Buffer.alloc(64); + for (let i = 0; i < 16; ++i) buffer.writeUInt32BE(this._h[i], i * 4); + return buffer; + } + }; + } +}); + +// node_modules/blake-hash/lib/blake384.js +var require_blake384 = __commonJS({ + "node_modules/blake-hash/lib/blake384.js"(exports2, module2) { + var Blake512 = require_blake512(); + var zo = Buffer.from([0]); + var oo = Buffer.from([128]); + module2.exports = class Blake384 extends Blake512 { + constructor() { + super(); + this._h = [ + 3418070365, + 3238371032, + 1654270250, + 914150663, + 2438529370, + 812702999, + 355462360, + 4144912697, + 1731405415, + 4290775857, + 2394180231, + 1750603025, + 3675008525, + 1694076839, + 1203062813, + 3204075428 + ]; + this._zo = zo; + this._oo = oo; + } + digest() { + this._padding(); + const buffer = Buffer.alloc(48); + for (let i = 0; i < 12; ++i) buffer.writeUInt32BE(this._h[i], i * 4); + return buffer; + } + }; + } +}); + +// node_modules/blake-hash/lib/index.js +var require_lib17 = __commonJS({ + "node_modules/blake-hash/lib/index.js"(exports2, module2) { + module2.exports = { + Blake224: require_blake224(), + Blake256: require_blake256(), + Blake384: require_blake384(), + Blake512: require_blake512() + }; + } +}); + +// node_modules/blake-hash/js.js +var require_js = __commonJS({ + "node_modules/blake-hash/js.js"(exports2, module2) { + module2.exports = require_api()(require_lib17()); + } +}); + +// node_modules/blake-hash/index.js +var require_blake_hash = __commonJS({ + "node_modules/blake-hash/index.js"(exports2, module2) { + try { + module2.exports = require_bindings2(); + } catch (err2) { + module2.exports = require_js(); + } + } +}); + +// node_modules/create-hmac/index.js +var require_create_hmac = __commonJS({ + "node_modules/create-hmac/index.js"(exports2, module2) { + module2.exports = __require("crypto").createHmac; + } +}); + +// node_modules/@trezor/utxo-lib/lib/crypto.js +var require_crypto2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/crypto.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ripemd160 = ripemd160; + exports2.sha1 = sha1; + exports2.sha256 = sha256; + exports2.blake256 = blake256; + exports2.hash160 = hash160; + exports2.hash160blake256 = hash160blake256; + exports2.hash256 = hash256; + exports2.hmacSHA512 = hmacSHA512; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var blake_hash_1 = tslib_1.__importDefault(require_blake_hash()); + var create_hmac_1 = tslib_1.__importDefault(require_create_hmac()); + var crypto_1 = __require("crypto"); + function ripemd160(buffer) { + try { + return (0, crypto_1.createHash)("rmd160").update(buffer).digest(); + } catch { + return (0, crypto_1.createHash)("ripemd160").update(buffer).digest(); + } + } + function sha1(buffer) { + return (0, crypto_1.createHash)("sha1").update(buffer).digest(); + } + function sha256(buffer) { + return (0, crypto_1.createHash)("sha256").update(buffer).digest(); + } + function blake256(buffer) { + return (0, blake_hash_1.default)("blake256").update(buffer).digest(); + } + function hash160(buffer) { + return ripemd160(sha256(buffer)); + } + function hash160blake256(buffer) { + return ripemd160(blake256(buffer)); + } + function hash256(buffer) { + return sha256(sha256(buffer)); + } + function hmacSHA512(key, data) { + return (0, create_hmac_1.default)("sha512", key).update(data).digest(); + } + } +}); + +// node_modules/typeforce/native.js +var require_native = __commonJS({ + "node_modules/typeforce/native.js"(exports2, module2) { + var types = { + Array: function(value) { + return value !== null && value !== void 0 && value.constructor === Array; + }, + Boolean: function(value) { + return typeof value === "boolean"; + }, + Function: function(value) { + return typeof value === "function"; + }, + Nil: function(value) { + return value === void 0 || value === null; + }, + Number: function(value) { + return typeof value === "number"; + }, + Object: function(value) { + return typeof value === "object"; + }, + String: function(value) { + return typeof value === "string"; + }, + "": function() { + return true; + } + }; + types.Null = types.Nil; + for (typeName in types) { + types[typeName].toJSON = function(t) { + return t; + }.bind(null, typeName); + } + var typeName; + module2.exports = types; + } +}); + +// node_modules/typeforce/errors.js +var require_errors10 = __commonJS({ + "node_modules/typeforce/errors.js"(exports2, module2) { + var native = require_native(); + function getTypeName(fn) { + return fn.name || fn.toString().match(/function (.*?)\s*\(/)[1]; + } + function getValueTypeName(value) { + return native.Nil(value) ? "" : getTypeName(value.constructor); + } + function getValue(value) { + if (native.Function(value)) return ""; + if (native.String(value)) return JSON.stringify(value); + if (value && native.Object(value)) return ""; + return value; + } + function captureStackTrace(e, t) { + if (Error.captureStackTrace) { + Error.captureStackTrace(e, t); + } + } + function tfJSON(type) { + if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type); + if (native.Array(type)) return "Array"; + if (type && native.Object(type)) return "Object"; + return type !== void 0 ? type : ""; + } + function tfErrorString(type, value, valueTypeName) { + var valueJson = getValue(value); + return "Expected " + tfJSON(type) + ", got" + (valueTypeName !== "" ? " " + valueTypeName : "") + (valueJson !== "" ? " " + valueJson : ""); + } + function TfTypeError(type, value, valueTypeName) { + valueTypeName = valueTypeName || getValueTypeName(value); + this.message = tfErrorString(type, value, valueTypeName); + captureStackTrace(this, TfTypeError); + this.__type = type; + this.__value = value; + this.__valueTypeName = valueTypeName; + } + TfTypeError.prototype = Object.create(Error.prototype); + TfTypeError.prototype.constructor = TfTypeError; + function tfPropertyErrorString(type, label, name, value, valueTypeName) { + var description = '" of type '; + if (label === "key") description = '" with key type '; + return tfErrorString('property "' + tfJSON(name) + description + tfJSON(type), value, valueTypeName); + } + function TfPropertyTypeError(type, property, label, value, valueTypeName) { + if (type) { + valueTypeName = valueTypeName || getValueTypeName(value); + this.message = tfPropertyErrorString(type, label, property, value, valueTypeName); + } else { + this.message = 'Unexpected property "' + property + '"'; + } + captureStackTrace(this, TfTypeError); + this.__label = label; + this.__property = property; + this.__type = type; + this.__value = value; + this.__valueTypeName = valueTypeName; + } + TfPropertyTypeError.prototype = Object.create(Error.prototype); + TfPropertyTypeError.prototype.constructor = TfTypeError; + function tfCustomError(expected, actual) { + return new TfTypeError(expected, {}, actual); + } + function tfSubError(e, property, label) { + if (e instanceof TfPropertyTypeError) { + property = property + "." + e.__property; + e = new TfPropertyTypeError( + e.__type, + property, + e.__label, + e.__value, + e.__valueTypeName + ); + } else if (e instanceof TfTypeError) { + e = new TfPropertyTypeError( + e.__type, + property, + label, + e.__value, + e.__valueTypeName + ); + } + captureStackTrace(e); + return e; + } + module2.exports = { + TfTypeError, + TfPropertyTypeError, + tfCustomError, + tfSubError, + tfJSON, + getValueTypeName + }; + } +}); + +// node_modules/typeforce/extra.js +var require_extra = __commonJS({ + "node_modules/typeforce/extra.js"(exports2, module2) { + var NATIVE = require_native(); + var ERRORS = require_errors10(); + function _Buffer(value) { + return Buffer.isBuffer(value); + } + function Hex(value) { + return typeof value === "string" && /^([0-9a-f]{2})+$/i.test(value); + } + function _LengthN(type, length) { + var name = type.toJSON(); + function Length(value) { + if (!type(value)) return false; + if (value.length === length) return true; + throw ERRORS.tfCustomError(name + "(Length: " + length + ")", name + "(Length: " + value.length + ")"); + } + Length.toJSON = function() { + return name; + }; + return Length; + } + var _ArrayN = _LengthN.bind(null, NATIVE.Array); + var _BufferN = _LengthN.bind(null, _Buffer); + var _HexN = _LengthN.bind(null, Hex); + var _StringN = _LengthN.bind(null, NATIVE.String); + function Range(a, b, f) { + f = f || NATIVE.Number; + function _range(value, strict) { + return f(value, strict) && value > a && value < b; + } + _range.toJSON = function() { + return `${f.toJSON()} between [${a}, ${b}]`; + }; + return _range; + } + var INT53_MAX = Math.pow(2, 53) - 1; + function Finite(value) { + return typeof value === "number" && isFinite(value); + } + function Int8(value) { + return value << 24 >> 24 === value; + } + function Int16(value) { + return value << 16 >> 16 === value; + } + function Int32(value) { + return (value | 0) === value; + } + function Int53(value) { + return typeof value === "number" && value >= -INT53_MAX && value <= INT53_MAX && Math.floor(value) === value; + } + function UInt8(value) { + return (value & 255) === value; + } + function UInt16(value) { + return (value & 65535) === value; + } + function UInt32(value) { + return value >>> 0 === value; + } + function UInt53(value) { + return typeof value === "number" && value >= 0 && value <= INT53_MAX && Math.floor(value) === value; + } + var types = { + ArrayN: _ArrayN, + Buffer: _Buffer, + BufferN: _BufferN, + Finite, + Hex, + HexN: _HexN, + Int8, + Int16, + Int32, + Int53, + Range, + StringN: _StringN, + UInt8, + UInt16, + UInt32, + UInt53 + }; + for (typeName in types) { + types[typeName].toJSON = function(t) { + return t; + }.bind(null, typeName); + } + var typeName; + module2.exports = types; + } +}); + +// node_modules/typeforce/index.js +var require_typeforce = __commonJS({ + "node_modules/typeforce/index.js"(exports2, module2) { + var ERRORS = require_errors10(); + var NATIVE = require_native(); + var tfJSON = ERRORS.tfJSON; + var TfTypeError = ERRORS.TfTypeError; + var TfPropertyTypeError = ERRORS.TfPropertyTypeError; + var tfSubError = ERRORS.tfSubError; + var getValueTypeName = ERRORS.getValueTypeName; + var TYPES = { + arrayOf: function arrayOf(type, options) { + type = compile(type); + options = options || {}; + function _arrayOf(array, strict) { + if (!NATIVE.Array(array)) return false; + if (NATIVE.Nil(array)) return false; + if (options.minLength !== void 0 && array.length < options.minLength) return false; + if (options.maxLength !== void 0 && array.length > options.maxLength) return false; + if (options.length !== void 0 && array.length !== options.length) return false; + return array.every(function(value, i) { + try { + return typeforce(type, value, strict); + } catch (e) { + throw tfSubError(e, i); + } + }); + } + _arrayOf.toJSON = function() { + var str = "[" + tfJSON(type) + "]"; + if (options.length !== void 0) { + str += "{" + options.length + "}"; + } else if (options.minLength !== void 0 || options.maxLength !== void 0) { + str += "{" + (options.minLength === void 0 ? 0 : options.minLength) + "," + (options.maxLength === void 0 ? Infinity : options.maxLength) + "}"; + } + return str; + }; + return _arrayOf; + }, + maybe: function maybe(type) { + type = compile(type); + function _maybe(value, strict) { + return NATIVE.Nil(value) || type(value, strict, maybe); + } + _maybe.toJSON = function() { + return "?" + tfJSON(type); + }; + return _maybe; + }, + map: function map(propertyType, propertyKeyType) { + propertyType = compile(propertyType); + if (propertyKeyType) propertyKeyType = compile(propertyKeyType); + function _map(value, strict) { + if (!NATIVE.Object(value)) return false; + if (NATIVE.Nil(value)) return false; + for (var propertyName in value) { + try { + if (propertyKeyType) { + typeforce(propertyKeyType, propertyName, strict); + } + } catch (e) { + throw tfSubError(e, propertyName, "key"); + } + try { + var propertyValue = value[propertyName]; + typeforce(propertyType, propertyValue, strict); + } catch (e) { + throw tfSubError(e, propertyName); + } + } + return true; + } + if (propertyKeyType) { + _map.toJSON = function() { + return "{" + tfJSON(propertyKeyType) + ": " + tfJSON(propertyType) + "}"; + }; + } else { + _map.toJSON = function() { + return "{" + tfJSON(propertyType) + "}"; + }; + } + return _map; + }, + object: function object(uncompiled) { + var type = {}; + for (var typePropertyName in uncompiled) { + type[typePropertyName] = compile(uncompiled[typePropertyName]); + } + function _object(value, strict) { + if (!NATIVE.Object(value)) return false; + if (NATIVE.Nil(value)) return false; + var propertyName; + try { + for (propertyName in type) { + var propertyType = type[propertyName]; + var propertyValue = value[propertyName]; + typeforce(propertyType, propertyValue, strict); + } + } catch (e) { + throw tfSubError(e, propertyName); + } + if (strict) { + for (propertyName in value) { + if (type[propertyName]) continue; + throw new TfPropertyTypeError(void 0, propertyName); + } + } + return true; + } + _object.toJSON = function() { + return tfJSON(type); + }; + return _object; + }, + anyOf: function anyOf() { + var types = [].slice.call(arguments).map(compile); + function _anyOf(value, strict) { + return types.some(function(type) { + try { + return typeforce(type, value, strict); + } catch (e) { + return false; + } + }); + } + _anyOf.toJSON = function() { + return types.map(tfJSON).join("|"); + }; + return _anyOf; + }, + allOf: function allOf() { + var types = [].slice.call(arguments).map(compile); + function _allOf(value, strict) { + return types.every(function(type) { + try { + return typeforce(type, value, strict); + } catch (e) { + return false; + } + }); + } + _allOf.toJSON = function() { + return types.map(tfJSON).join(" & "); + }; + return _allOf; + }, + quacksLike: function quacksLike(type) { + function _quacksLike(value) { + return type === getValueTypeName(value); + } + _quacksLike.toJSON = function() { + return type; + }; + return _quacksLike; + }, + tuple: function tuple() { + var types = [].slice.call(arguments).map(compile); + function _tuple(values, strict) { + if (NATIVE.Nil(values)) return false; + if (NATIVE.Nil(values.length)) return false; + if (strict && values.length !== types.length) return false; + return types.every(function(type, i) { + try { + return typeforce(type, values[i], strict); + } catch (e) { + throw tfSubError(e, i); + } + }); + } + _tuple.toJSON = function() { + return "(" + types.map(tfJSON).join(", ") + ")"; + }; + return _tuple; + }, + value: function value(expected) { + function _value(actual) { + return actual === expected; + } + _value.toJSON = function() { + return expected; + }; + return _value; + } + }; + TYPES.oneOf = TYPES.anyOf; + function compile(type) { + if (NATIVE.String(type)) { + if (type[0] === "?") return TYPES.maybe(type.slice(1)); + return NATIVE[type] || TYPES.quacksLike(type); + } else if (type && NATIVE.Object(type)) { + if (NATIVE.Array(type)) { + if (type.length !== 1) throw new TypeError("Expected compile() parameter of type Array of length 1"); + return TYPES.arrayOf(type[0]); + } + return TYPES.object(type); + } else if (NATIVE.Function(type)) { + return type; + } + return TYPES.value(type); + } + function typeforce(type, value, strict, surrogate) { + if (NATIVE.Function(type)) { + if (type(value, strict)) return true; + throw new TfTypeError(surrogate || type, value); + } + return typeforce(compile(type), value, strict); + } + for (typeName in NATIVE) { + typeforce[typeName] = NATIVE[typeName]; + } + var typeName; + for (typeName in TYPES) { + typeforce[typeName] = TYPES[typeName]; + } + var EXTRA = require_extra(); + for (typeName in EXTRA) { + typeforce[typeName] = EXTRA[typeName]; + } + typeforce.compile = compile; + typeforce.TfTypeError = TfTypeError; + typeforce.TfPropertyTypeError = TfPropertyTypeError; + module2.exports = typeforce; + } +}); + +// node_modules/@trezor/utxo-lib/lib/types/typeforce.js +var require_typeforce2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/types/typeforce.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.typeforce = exports2.anyOf = exports2.Nil = exports2.BufferN = exports2.Function = exports2.UInt32 = exports2.UInt16 = exports2.UInt8 = exports2.tuple = exports2.maybe = exports2.Hex = exports2.Buffer = exports2.String = exports2.Boolean = exports2.Array = exports2.Number = exports2.Hash256bit = exports2.Hash160bit = exports2.Buffer256bit = void 0; + exports2.Satoshi = Satoshi; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var typeforce_1 = tslib_1.__importDefault(require_typeforce()); + exports2.typeforce = typeforce_1.default; + var SATOSHI_MAX = 21 * 1e14; + function Satoshi(value) { + return typeforce_1.default.UInt53(value) && value <= SATOSHI_MAX; + } + exports2.Buffer256bit = typeforce_1.default.BufferN(32); + exports2.Hash160bit = typeforce_1.default.BufferN(20); + exports2.Hash256bit = typeforce_1.default.BufferN(32); + exports2.Number = typeforce_1.default.Number, exports2.Array = typeforce_1.default.Array, exports2.Boolean = typeforce_1.default.Boolean, exports2.String = typeforce_1.default.String, exports2.Buffer = typeforce_1.default.Buffer, exports2.Hex = typeforce_1.default.Hex, exports2.maybe = typeforce_1.default.maybe, exports2.tuple = typeforce_1.default.tuple, exports2.UInt8 = typeforce_1.default.UInt8, exports2.UInt16 = typeforce_1.default.UInt16, exports2.UInt32 = typeforce_1.default.UInt32, exports2.Function = typeforce_1.default.Function, exports2.BufferN = typeforce_1.default.BufferN, exports2.Nil = typeforce_1.default.Nil, exports2.anyOf = typeforce_1.default.anyOf; + } +}); + +// node_modules/@trezor/utxo-lib/lib/networks.js +var require_networks = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/networks.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.doge = exports2.decredSim = exports2.decredTest = exports2.decred = exports2.komodo = exports2.peercoinTest = exports2.peercoin = exports2.zcashTest = exports2.zcash = exports2.dashTest = exports2.dash = exports2.litecoinTest = exports2.litecoin = exports2.bitcoingold = exports2.bitcoincashTest = exports2.bitcoincash = exports2.testnet = exports2.regtest = exports2.bitcoin = void 0; + exports2.isNetworkType = isNetworkType; + var typeforce_1 = require_typeforce2(); + exports2.bitcoin = { + messagePrefix: "Bitcoin Signed Message:\n", + bech32: "bc", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 0, + scriptHash: 5, + wif: 128 + }; + exports2.regtest = { + messagePrefix: "Bitcoin Signed Message:\n", + bech32: "bcrt", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 111, + scriptHash: 196, + wif: 239 + }; + exports2.testnet = { + messagePrefix: "Bitcoin Signed Message:\n", + bech32: "tb", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 111, + scriptHash: 196, + wif: 239 + }; + exports2.bitcoincash = { + messagePrefix: "Bitcoin Signed Message:\n", + bech32: "", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 0, + scriptHash: 5, + wif: 128, + forkId: 0 + }; + exports2.bitcoincashTest = { + messagePrefix: "Bitcoin Signed Message:\n", + bech32: "", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 111, + scriptHash: 196, + wif: 239, + forkId: 0 + }; + exports2.bitcoingold = { + messagePrefix: "Bitcoin Gold Signed Message:\n", + bech32: "btg", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 38, + scriptHash: 23, + wif: 128, + forkId: 79 + }; + exports2.litecoin = { + messagePrefix: "Litecoin Signed Message:\n", + bech32: "ltc", + bip32: { + public: 27108450, + private: 27106558 + }, + pubKeyHash: 48, + scriptHash: 50, + wif: 176 + }; + exports2.litecoinTest = { + messagePrefix: "Litecoin Signed Message:\n", + bech32: "tltc", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 111, + scriptHash: 58, + wif: 176 + }; + exports2.dash = { + messagePrefix: "DarkCoin Signed Message:\n", + bech32: "", + bip32: { + public: 50221772, + private: 50221816 + }, + pubKeyHash: 76, + scriptHash: 16, + wif: 204 + }; + exports2.dashTest = { + messagePrefix: "DarkCoin Signed Message:\n", + bech32: "", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 140, + scriptHash: 19, + wif: 239 + }; + exports2.zcash = { + messagePrefix: "ZCash Signed Message:\n", + bech32: "", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 7352, + scriptHash: 7357, + wif: 128 + }; + exports2.zcashTest = { + messagePrefix: "ZCash Signed Message:\n", + bech32: "", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 7461, + scriptHash: 7354, + wif: 239 + }; + exports2.peercoin = { + messagePrefix: "Peercoin Signed Message:\n", + bech32: "pc", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 55, + scriptHash: 117, + wif: 0 + }; + exports2.peercoinTest = { + messagePrefix: "Peercoin Signed Message:\n", + bech32: "tpc", + bip32: { + public: 70617039, + private: 70615956 + }, + pubKeyHash: 111, + scriptHash: 196, + wif: 0 + }; + exports2.komodo = { + messagePrefix: "Komodo Signed Message:\n", + bech32: "", + bip32: { + public: 76067358, + private: 76066276 + }, + pubKeyHash: 60, + scriptHash: 85, + wif: 188 + }; + exports2.decred = { + messagePrefix: "Decred Signed Message:\n", + bech32: "", + bip32: { + public: 50178342, + private: 50177256 + }, + pubKeyHash: 1855, + scriptHash: 1818, + wif: 8926 + }; + exports2.decredTest = { + messagePrefix: "Decred Signed Message:\n", + bech32: "", + bip32: { + public: 70617041, + private: 70615959 + }, + pubKeyHash: 3873, + scriptHash: 3836, + wif: 8974 + }; + exports2.decredSim = { + messagePrefix: "Decred Signed Message:\n", + bech32: "", + bip32: { + public: 69254461, + private: 69253379 + }, + pubKeyHash: 3729, + scriptHash: 3692, + wif: 8967 + }; + exports2.doge = { + messagePrefix: "Dogecoin Signed Message:\n", + bech32: "", + bip32: { + public: 49990397, + private: 49988504 + }, + pubKeyHash: 30, + scriptHash: 22, + wif: 158 + }; + var NETWORK_TYPES = { + bitcoinCash: [exports2.bitcoincash, exports2.bitcoincashTest], + dash: [exports2.dash, exports2.dashTest], + decred: [exports2.decred, exports2.decredTest, exports2.decredSim], + peercoin: [exports2.peercoin, exports2.peercoinTest], + zcash: [exports2.zcash, exports2.zcashTest, exports2.komodo], + litecoin: [exports2.litecoin, exports2.litecoinTest], + doge: [exports2.doge] + }; + function isNetworkType(type, network) { + if (typeof type !== "string" || !network || !NETWORK_TYPES[type]) return false; + try { + (0, typeforce_1.typeforce)({ + bip32: { + public: typeforce_1.typeforce.UInt32, + private: typeforce_1.typeforce.UInt32 + }, + pubKeyHash: typeforce_1.typeforce.anyOf(typeforce_1.typeforce.UInt8, typeforce_1.typeforce.UInt16), + scriptHash: typeforce_1.typeforce.anyOf(typeforce_1.typeforce.UInt8, typeforce_1.typeforce.UInt16) + }, network); + } catch { + return false; + } + return !!NETWORK_TYPES[type].find((n) => n.bip32.public === network.bip32.public && n.bip32.private === network.bip32.private && (!n.bech32 && !network.bech32 || n.bech32 === network.bech32) && (!n.forkId && !network.forkId || n.forkId === network.forkId) && n.pubKeyHash === network.pubKeyHash && n.scriptHash === network.scriptHash); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/bs58check.js +var require_bs58check = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/bs58check.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decodeBlake = decodeBlake; + exports2.decodeBlake256Key = decodeBlake256Key; + exports2.decodeBlake256 = decodeBlake256; + exports2.encodeBlake256 = encodeBlake256; + exports2.encode = encode; + exports2.decode = decode; + exports2.decodeAddress = decodeAddress; + exports2.encodeAddress = encodeAddress; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58_1 = tslib_1.__importDefault(require_cjs4()); + var bs58check_1 = tslib_1.__importDefault(require_cjs5()); + var bchUtils_1 = require_bchUtils(); + var crypto_1 = require_crypto2(); + var networks_1 = require_networks(); + function decodeBlake(buffer) { + const want = buffer.subarray(-4); + const payload = buffer.subarray(0, -4); + const got = (0, crypto_1.blake256)((0, crypto_1.blake256)(payload)).subarray(0, 4); + if (want[0] ^ got[0] | want[1] ^ got[1] | want[2] ^ got[2] | want[3] ^ got[3]) throw new Error("invalid checksum"); + return payload; + } + function decodeBlake256Key(key) { + const bytes = bs58_1.default.decode(key); + const buffer = Buffer.from(bytes); + return decodeBlake(buffer); + } + function decodeBlake256(address) { + const bytes = bs58_1.default.decode(address); + const buffer = Buffer.from(bytes); + if (buffer.length !== 26) throw new Error(`${address} invalid address length`); + let payload; + try { + payload = decodeBlake(buffer); + } catch (e) { + if (e instanceof Error) { + throw new Error(`${address} ${e.message}`); + } + throw new Error(`${address} ${e}`); + } + return payload; + } + function encodeBlake256(payload) { + const checksum = (0, crypto_1.blake256)((0, crypto_1.blake256)(payload)).subarray(0, 4); + return bs58_1.default.encode(Buffer.concat([payload, checksum])); + } + function encode(payload, network = networks_1.bitcoin) { + return (0, networks_1.isNetworkType)("decred", network) ? encodeBlake256(payload) : bs58check_1.default.encode(payload); + } + function decode(payload, network = networks_1.bitcoin) { + return (0, networks_1.isNetworkType)("decred", network) ? decodeBlake256(payload) : bs58check_1.default.decode(payload); + } + function decodeAddress(address, network = networks_1.bitcoin) { + let payload; + if ((0, networks_1.isNetworkType)("bitcoinCash", network)) { + if (!(0, bchUtils_1.isCashAddress)(address)) throw Error(`${address} is not a cash address`); + payload = Buffer.from(bs58check_1.default.decode((0, bchUtils_1.toLegacyAddress)(address))); + } else { + payload = Buffer.from(decode(address, network)); + } + if (payload.length < 21) throw new TypeError(`${address} is too short`); + if (payload.length > 22) throw new TypeError(`${address} is too long`); + const multibyte = payload.length === 22; + const offset = multibyte ? 2 : 1; + const version = multibyte ? payload.readUInt16BE(0) : payload[0]; + const hash = payload.subarray(offset); + return { + version, + hash + }; + } + function encodeAddress(hash, version, network = networks_1.bitcoin) { + const multibyte = version > 255; + const size = multibyte ? 22 : 21; + const offset = multibyte ? 2 : 1; + const payload = Buffer.allocUnsafe(size); + if (multibyte) { + payload.writeUInt16BE(version, 0); + } else { + payload.writeUInt8(version, 0); + } + hash.copy(payload, offset); + const encoded = encode(payload, network); + return (0, networks_1.isNetworkType)("bitcoinCash", network) ? (0, bchUtils_1.toCashAddress)(encoded) : encoded; + } + } +}); + +// node_modules/bip66/src/cjs/index.cjs +var require_cjs6 = __commonJS({ + "node_modules/bip66/src/cjs/index.cjs"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encode = exports2.decode = exports2.check = void 0; + function check(buffer) { + var ret = internalCheck(buffer); + if (typeof ret === "string") { + return false; + } else { + return true; + } + } + exports2.check = check; + function internalCheck(buffer) { + if (buffer.length < 8) + return "DER sequence length is too short"; + if (buffer.length > 72) + return "DER sequence length is too long"; + if (buffer[0] !== 48) + return "Expected DER sequence (48)"; + if (buffer[1] !== buffer.length - 2) + return "DER sequence length is invalid"; + if (buffer[2] !== 2) + return "Expected DER integer (2)"; + var lenR = buffer[3]; + if (lenR === 0) + return "R length is zero"; + if (5 + lenR >= buffer.length) + return "R length is too long"; + if (buffer[4 + lenR] !== 2) + return "Expected DER integer (2)"; + var lenS = buffer[5 + lenR]; + if (lenS === 0) + return "S length is zero"; + if (6 + lenR + lenS !== buffer.length) + return "S length is invalid"; + if ((buffer[4] & 128) !== 0) + return "R value is negative"; + if (lenR > 1 && buffer[4] === 0 && (buffer[5] & 128) === 0) + return "R value excessively padded"; + if ((buffer[lenR + 6] & 128) !== 0) + return "S value is negative"; + if (lenS > 1 && buffer[lenR + 6] === 0 && (buffer[lenR + 7] & 128) === 0) + return "S value excessively padded"; + return lenR; + } + function decode(buffer) { + var ret = internalCheck(buffer); + if (typeof ret === "string") { + throw new Error(ret); + } + return { + r: buffer.subarray(4, 4 + ret), + s: buffer.subarray(6 + ret) + }; + } + exports2.decode = decode; + function encode(r, s) { + var lenR = r.length; + var lenS = s.length; + if (lenR === 0) + throw new Error("R length is zero"); + if (lenS === 0) + throw new Error("S length is zero"); + if (lenR > 33) + throw new Error("R length is too long"); + if (lenS > 33) + throw new Error("S length is too long"); + if ((r[0] & 128) !== 0) + throw new Error("R value is negative"); + if ((s[0] & 128) !== 0) + throw new Error("S value is negative"); + if (lenR > 1 && r[0] === 0 && (r[1] & 128) === 0) + throw new Error("R value excessively padded"); + if (lenS > 1 && s[0] === 0 && (s[1] & 128) === 0) + throw new Error("S value excessively padded"); + var signature = new Uint8Array(6 + lenR + lenS); + signature[0] = 48; + signature[1] = signature.length - 2; + signature[2] = 2; + signature[3] = r.length; + signature.set(r, 4); + signature[4 + lenR] = 2; + signature[5 + lenR] = s.length; + signature.set(s, 6 + lenR); + return signature; + } + exports2.encode = encode; + } +}); + +// node_modules/bitcoin-ops/index.json +var require_bitcoin_ops = __commonJS({ + "node_modules/bitcoin-ops/index.json"(exports2, module2) { + module2.exports = { + OP_FALSE: 0, + OP_0: 0, + OP_PUSHDATA1: 76, + OP_PUSHDATA2: 77, + OP_PUSHDATA4: 78, + OP_1NEGATE: 79, + OP_RESERVED: 80, + OP_TRUE: 81, + OP_1: 81, + OP_2: 82, + OP_3: 83, + OP_4: 84, + OP_5: 85, + OP_6: 86, + OP_7: 87, + OP_8: 88, + OP_9: 89, + OP_10: 90, + OP_11: 91, + OP_12: 92, + OP_13: 93, + OP_14: 94, + OP_15: 95, + OP_16: 96, + OP_NOP: 97, + OP_VER: 98, + OP_IF: 99, + OP_NOTIF: 100, + OP_VERIF: 101, + OP_VERNOTIF: 102, + OP_ELSE: 103, + OP_ENDIF: 104, + OP_VERIFY: 105, + OP_RETURN: 106, + OP_TOALTSTACK: 107, + OP_FROMALTSTACK: 108, + OP_2DROP: 109, + OP_2DUP: 110, + OP_3DUP: 111, + OP_2OVER: 112, + OP_2ROT: 113, + OP_2SWAP: 114, + OP_IFDUP: 115, + OP_DEPTH: 116, + OP_DROP: 117, + OP_DUP: 118, + OP_NIP: 119, + OP_OVER: 120, + OP_PICK: 121, + OP_ROLL: 122, + OP_ROT: 123, + OP_SWAP: 124, + OP_TUCK: 125, + OP_CAT: 126, + OP_SUBSTR: 127, + OP_LEFT: 128, + OP_RIGHT: 129, + OP_SIZE: 130, + OP_INVERT: 131, + OP_AND: 132, + OP_OR: 133, + OP_XOR: 134, + OP_EQUAL: 135, + OP_EQUALVERIFY: 136, + OP_RESERVED1: 137, + OP_RESERVED2: 138, + OP_1ADD: 139, + OP_1SUB: 140, + OP_2MUL: 141, + OP_2DIV: 142, + OP_NEGATE: 143, + OP_ABS: 144, + OP_NOT: 145, + OP_0NOTEQUAL: 146, + OP_ADD: 147, + OP_SUB: 148, + OP_MUL: 149, + OP_DIV: 150, + OP_MOD: 151, + OP_LSHIFT: 152, + OP_RSHIFT: 153, + OP_BOOLAND: 154, + OP_BOOLOR: 155, + OP_NUMEQUAL: 156, + OP_NUMEQUALVERIFY: 157, + OP_NUMNOTEQUAL: 158, + OP_LESSTHAN: 159, + OP_GREATERTHAN: 160, + OP_LESSTHANOREQUAL: 161, + OP_GREATERTHANOREQUAL: 162, + OP_MIN: 163, + OP_MAX: 164, + OP_WITHIN: 165, + OP_RIPEMD160: 166, + OP_SHA1: 167, + OP_SHA256: 168, + OP_HASH160: 169, + OP_HASH256: 170, + OP_CODESEPARATOR: 171, + OP_CHECKSIG: 172, + OP_CHECKSIGVERIFY: 173, + OP_CHECKMULTISIG: 174, + OP_CHECKMULTISIGVERIFY: 175, + OP_NOP1: 176, + OP_NOP2: 177, + OP_CHECKLOCKTIMEVERIFY: 177, + OP_NOP3: 178, + OP_CHECKSEQUENCEVERIFY: 178, + OP_NOP4: 179, + OP_NOP5: 180, + OP_NOP6: 181, + OP_NOP7: 182, + OP_NOP8: 183, + OP_NOP9: 184, + OP_NOP10: 185, + OP_PUBKEYHASH: 253, + OP_PUBKEY: 254, + OP_INVALIDOPCODE: 255 + }; + } +}); + +// node_modules/pushdata-bitcoin/index.js +var require_pushdata_bitcoin = __commonJS({ + "node_modules/pushdata-bitcoin/index.js"(exports2, module2) { + var OPS = require_bitcoin_ops(); + function encodingLength(i) { + return i < OPS.OP_PUSHDATA1 ? 1 : i <= 255 ? 2 : i <= 65535 ? 3 : 5; + } + function encode(buffer, number, offset) { + var size = encodingLength(number); + if (size === 1) { + buffer.writeUInt8(number, offset); + } else if (size === 2) { + buffer.writeUInt8(OPS.OP_PUSHDATA1, offset); + buffer.writeUInt8(number, offset + 1); + } else if (size === 3) { + buffer.writeUInt8(OPS.OP_PUSHDATA2, offset); + buffer.writeUInt16LE(number, offset + 1); + } else { + buffer.writeUInt8(OPS.OP_PUSHDATA4, offset); + buffer.writeUInt32LE(number, offset + 1); + } + return size; + } + function decode(buffer, offset) { + var opcode = buffer.readUInt8(offset); + var number, size; + if (opcode < OPS.OP_PUSHDATA1) { + number = opcode; + size = 1; + } else if (opcode === OPS.OP_PUSHDATA1) { + if (offset + 2 > buffer.length) return null; + number = buffer.readUInt8(offset + 1); + size = 2; + } else if (opcode === OPS.OP_PUSHDATA2) { + if (offset + 3 > buffer.length) return null; + number = buffer.readUInt16LE(offset + 1); + size = 3; + } else { + if (offset + 5 > buffer.length) return null; + if (opcode !== OPS.OP_PUSHDATA4) throw new Error("Unexpected opcode"); + number = buffer.readUInt32LE(offset + 1); + size = 5; + } + return { + opcode, + number, + size + }; + } + module2.exports = { + encodingLength, + encode, + decode + }; + } +}); + +// node_modules/file-uri-to-path/index.js +var require_file_uri_to_path = __commonJS({ + "node_modules/file-uri-to-path/index.js"(exports2, module2) { + var sep = __require("path").sep || "/"; + module2.exports = fileUriToPath; + function fileUriToPath(uri) { + if ("string" != typeof uri || uri.length <= 7 || "file://" != uri.substring(0, 7)) { + throw new TypeError("must pass in a file:// URI to convert to a file path"); + } + var rest = decodeURI(uri.substring(7)); + var firstSlash = rest.indexOf("/"); + var host = rest.substring(0, firstSlash); + var path2 = rest.substring(firstSlash + 1); + if ("localhost" == host) host = ""; + if (host) { + host = sep + sep + host; + } + path2 = path2.replace(/^(.+)\|/, "$1:"); + if (sep == "\\") { + path2 = path2.replace(/\//g, "\\"); + } + if (/^.+\:/.test(path2)) { + } else { + path2 = sep + path2; + } + return host + path2; + } + } +}); + +// node_modules/bindings/bindings.js +var require_bindings3 = __commonJS({ + "node_modules/bindings/bindings.js"(exports2, module2) { + var fs = __require("fs"); + var path2 = __require("path"); + var fileURLToPath = require_file_uri_to_path(); + var join = path2.join; + var dirname = path2.dirname; + var exists = fs.accessSync && function(path3) { + try { + fs.accessSync(path3); + } catch (e) { + return false; + } + return true; + } || fs.existsSync || path2.existsSync; + var defaults = { + arrow: process.env.NODE_BINDINGS_ARROW || " \u2192 ", + compiled: process.env.NODE_BINDINGS_COMPILED_DIR || "compiled", + platform: process.platform, + arch: process.arch, + nodePreGyp: "node-v" + process.versions.modules + "-" + process.platform + "-" + process.arch, + version: process.versions.node, + bindings: "bindings.node", + try: [ + // node-gyp's linked version in the "build" dir + ["module_root", "build", "bindings"], + // node-waf and gyp_addon (a.k.a node-gyp) + ["module_root", "build", "Debug", "bindings"], + ["module_root", "build", "Release", "bindings"], + // Debug files, for development (legacy behavior, remove for node v0.9) + ["module_root", "out", "Debug", "bindings"], + ["module_root", "Debug", "bindings"], + // Release files, but manually compiled (legacy behavior, remove for node v0.9) + ["module_root", "out", "Release", "bindings"], + ["module_root", "Release", "bindings"], + // Legacy from node-waf, node <= 0.4.x + ["module_root", "build", "default", "bindings"], + // Production "Release" buildtype binary (meh...) + ["module_root", "compiled", "version", "platform", "arch", "bindings"], + // node-qbs builds + ["module_root", "addon-build", "release", "install-root", "bindings"], + ["module_root", "addon-build", "debug", "install-root", "bindings"], + ["module_root", "addon-build", "default", "install-root", "bindings"], + // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch} + ["module_root", "lib", "binding", "nodePreGyp", "bindings"] + ] + }; + function bindings(opts) { + if (typeof opts == "string") { + opts = { bindings: opts }; + } else if (!opts) { + opts = {}; + } + Object.keys(defaults).map(function(i2) { + if (!(i2 in opts)) opts[i2] = defaults[i2]; + }); + if (!opts.module_root) { + opts.module_root = exports2.getRoot(exports2.getFileName()); + } + if (path2.extname(opts.bindings) != ".node") { + opts.bindings += ".node"; + } + var requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : __require; + var tries = [], i = 0, l = opts.try.length, n, b, err2; + for (; i < l; i++) { + n = join.apply( + null, + opts.try[i].map(function(p) { + return opts[p] || p; + }) + ); + tries.push(n); + try { + b = opts.path ? requireFunc.resolve(n) : requireFunc(n); + if (!opts.path) { + b.path = n; + } + return b; + } catch (e) { + if (e.code !== "MODULE_NOT_FOUND" && e.code !== "QUALIFIED_PATH_RESOLUTION_FAILED" && !/not find/i.test(e.message)) { + throw e; + } + } + } + err2 = new Error( + "Could not locate the bindings file. Tried:\n" + tries.map(function(a) { + return opts.arrow + a; + }).join("\n") + ); + err2.tries = tries; + throw err2; + } + module2.exports = exports2 = bindings; + exports2.getFileName = function getFileName(calling_file) { + var origPST = Error.prepareStackTrace, origSTL = Error.stackTraceLimit, dummy = {}, fileName; + Error.stackTraceLimit = 10; + Error.prepareStackTrace = function(e, st) { + for (var i = 0, l = st.length; i < l; i++) { + fileName = st[i].getFileName(); + if (fileName !== __filename) { + if (calling_file) { + if (fileName !== calling_file) { + return; + } + } else { + return; + } + } + } + }; + Error.captureStackTrace(dummy); + dummy.stack; + Error.prepareStackTrace = origPST; + Error.stackTraceLimit = origSTL; + var fileSchema = "file://"; + if (fileName.indexOf(fileSchema) === 0) { + fileName = fileURLToPath(fileName); + } + return fileName; + }; + exports2.getRoot = function getRoot(file) { + var dir = dirname(file), prev; + while (true) { + if (dir === ".") { + dir = process.cwd(); + } + if (exists(join(dir, "package.json")) || exists(join(dir, "node_modules"))) { + return dir; + } + if (prev === dir) { + throw new Error( + 'Could not find module root given file: "' + file + '". Do you have a `package.json` file? ' + ); + } + prev = dir; + dir = join(dir, ".."); + } + }; + } +}); + +// node_modules/tiny-secp256k1/native.js +var require_native2 = __commonJS({ + "node_modules/tiny-secp256k1/native.js"(exports2, module2) { + "use strict"; + var binding = require_bindings3()("secp256k1"); + delete binding.path; + for (let key in binding) { + if (key.indexOf("is") !== 0) continue; + binding[key].toJSON = function() { + return key; + }; + } + module2.exports = binding; + } +}); + +// node_modules/bn.js/lib/bn.js +var require_bn = __commonJS({ + "node_modules/bn.js/lib/bn.js"(exports2, module2) { + (function(module3, exports3) { + "use strict"; + function assert(val, msg) { + if (!val) throw new Error(msg || "Assertion failed"); + } + function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + function BN(number, base, endian) { + if (BN.isBN(number)) { + return number; + } + this.negative = 0; + this.words = null; + this.length = 0; + this.red = null; + if (number !== null) { + if (base === "le" || base === "be") { + endian = base; + base = 10; + } + this._init(number || 0, base || 10, endian || "be"); + } + } + if (typeof module3 === "object") { + module3.exports = BN; + } else { + exports3.BN = BN; + } + BN.BN = BN; + BN.wordSize = 26; + var Buffer2; + try { + if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") { + Buffer2 = window.Buffer; + } else { + Buffer2 = __require("buffer").Buffer; + } + } catch (e) { + } + BN.isBN = function isBN(num) { + if (num instanceof BN) { + return true; + } + return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + BN.max = function max(left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + BN.min = function min(left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + BN.prototype._init = function init(number, base, endian) { + if (typeof number === "number") { + return this._initNumber(number, base, endian); + } + if (typeof number === "object") { + return this._initArray(number, base, endian); + } + if (base === "hex") { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + number = number.toString().replace(/\s+/g, ""); + var start = 0; + if (number[0] === "-") { + start++; + this.negative = 1; + } + if (start < number.length) { + if (base === 16) { + this._parseHex(number, start, endian); + } else { + this._parseBase(number, base, start); + if (endian === "le") { + this._initArray(this.toArray(), base, endian); + } + } + } + }; + BN.prototype._initNumber = function _initNumber(number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 67108864) { + this.words = [number & 67108863]; + this.length = 1; + } else if (number < 4503599627370496) { + this.words = [ + number & 67108863, + number / 67108864 & 67108863 + ]; + this.length = 2; + } else { + assert(number < 9007199254740992); + this.words = [ + number & 67108863, + number / 67108864 & 67108863, + 1 + ]; + this.length = 3; + } + if (endian !== "le") return; + this._initArray(this.toArray(), base, endian); + }; + BN.prototype._initArray = function _initArray(number, base, endian) { + assert(typeof number.length === "number"); + if (number.length <= 0) { + this.words = [0]; + this.length = 1; + return this; + } + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var j, w; + var off = 0; + if (endian === "be") { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === "le") { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this.strip(); + }; + function parseHex4Bits(string, index) { + var c = string.charCodeAt(index); + if (c >= 65 && c <= 70) { + return c - 55; + } else if (c >= 97 && c <= 102) { + return c - 87; + } else { + return c - 48 & 15; + } + } + function parseHexByte(string, lowerBound, index) { + var r = parseHex4Bits(string, index); + if (index - 1 >= lowerBound) { + r |= parseHex4Bits(string, index - 1) << 4; + } + return r; + } + BN.prototype._parseHex = function _parseHex(number, start, endian) { + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var off = 0; + var j = 0; + var w; + if (endian === "be") { + for (i = number.length - 1; i >= start; i -= 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } else { + var parseLength = number.length - start; + for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } + this.strip(); + }; + function parseBase(str, start, end, mul) { + var r = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + r *= mul; + if (c >= 49) { + r += c - 49 + 10; + } else if (c >= 17) { + r += c - 17 + 10; + } else { + r += c; + } + } + return r; + } + BN.prototype._parseBase = function _parseBase(number, base, start) { + this.words = [0]; + this.length = 1; + for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = limbPow / base | 0; + var total = number.length - start; + var mod3 = total % limbLen; + var end = Math.min(total, total - mod3) + start; + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + this.imuln(limbPow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + if (mod3 !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + for (i = 0; i < mod3; i++) { + pow *= base; + } + this.imuln(pow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + this.strip(); + }; + BN.prototype.copy = function copy(dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + BN.prototype.clone = function clone() { + var r = new BN(null); + this.copy(r); + return r; + }; + BN.prototype._expand = function _expand(size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + BN.prototype.strip = function strip() { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + BN.prototype._normSign = function _normSign() { + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + BN.prototype.inspect = function inspect() { + return (this.red ? ""; + }; + var zeros = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000" + ]; + var groupSizes = [ + 0, + 0, + 25, + 16, + 12, + 11, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5 + ]; + var groupBases = [ + 0, + 0, + 33554432, + 43046721, + 16777216, + 48828125, + 60466176, + 40353607, + 16777216, + 43046721, + 1e7, + 19487171, + 35831808, + 62748517, + 7529536, + 11390625, + 16777216, + 24137569, + 34012224, + 47045881, + 64e6, + 4084101, + 5153632, + 6436343, + 7962624, + 9765625, + 11881376, + 14348907, + 17210368, + 20511149, + 243e5, + 28629151, + 33554432, + 39135393, + 45435424, + 52521875, + 60466176 + ]; + BN.prototype.toString = function toString(base, padding) { + base = base || 10; + padding = padding | 0 || 1; + var out; + if (base === 16 || base === "hex") { + out = ""; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = ((w << off | carry) & 16777215).toString(16); + carry = w >>> 24 - off & 16777215; + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + if (base === (base | 0) && base >= 2 && base <= 36) { + var groupSize = groupSizes[base]; + var groupBase = groupBases[base]; + out = ""; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modn(groupBase).toString(base); + c = c.idivn(groupBase); + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = "0" + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + assert(false, "Base should be between 2 and 36"); + }; + BN.prototype.toNumber = function toNumber() { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 67108864; + } else if (this.length === 3 && this.words[2] === 1) { + ret += 4503599627370496 + this.words[1] * 67108864; + } else if (this.length > 2) { + assert(false, "Number can only safely store up to 53 bits"); + } + return this.negative !== 0 ? -ret : ret; + }; + BN.prototype.toJSON = function toJSON() { + return this.toString(16); + }; + BN.prototype.toBuffer = function toBuffer(endian, length) { + assert(typeof Buffer2 !== "undefined"); + return this.toArrayLike(Buffer2, endian, length); + }; + BN.prototype.toArray = function toArray(endian, length) { + return this.toArrayLike(Array, endian, length); + }; + BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, "byte array longer than desired length"); + assert(reqLength > 0, "Requested array length <= 0"); + this.strip(); + var littleEndian = endian === "le"; + var res = new ArrayType(reqLength); + var b, i; + var q = this.clone(); + if (!littleEndian) { + for (i = 0; i < reqLength - byteLength; i++) { + res[i] = 0; + } + for (i = 0; !q.isZero(); i++) { + b = q.andln(255); + q.iushrn(8); + res[reqLength - i - 1] = b; + } + } else { + for (i = 0; !q.isZero(); i++) { + b = q.andln(255); + q.iushrn(8); + res[i] = b; + } + for (; i < reqLength; i++) { + res[i] = 0; + } + } + return res; + }; + if (Math.clz32) { + BN.prototype._countBits = function _countBits(w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits(w) { + var t = w; + var r = 0; + if (t >= 4096) { + r += 13; + t >>>= 13; + } + if (t >= 64) { + r += 7; + t >>>= 7; + } + if (t >= 8) { + r += 4; + t >>>= 4; + } + if (t >= 2) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + BN.prototype._zeroBits = function _zeroBits(w) { + if (w === 0) return 26; + var t = w; + var r = 0; + if ((t & 8191) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 127) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 15) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 1) === 0) { + r++; + } + return r; + }; + BN.prototype.bitLength = function bitLength() { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + function toBitArray(num) { + var w = new Array(num.bitLength()); + for (var bit = 0; bit < w.length; bit++) { + var off = bit / 26 | 0; + var wbit = bit % 26; + w[bit] = (num.words[off] & 1 << wbit) >>> wbit; + } + return w; + } + BN.prototype.zeroBits = function zeroBits() { + if (this.isZero()) return 0; + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + BN.prototype.byteLength = function byteLength() { + return Math.ceil(this.bitLength() / 8); + }; + BN.prototype.toTwos = function toTwos(width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + BN.prototype.fromTwos = function fromTwos(width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + BN.prototype.isNeg = function isNeg() { + return this.negative !== 0; + }; + BN.prototype.neg = function neg() { + return this.clone().ineg(); + }; + BN.prototype.ineg = function ineg() { + if (!this.isZero()) { + this.negative ^= 1; + } + return this; + }; + BN.prototype.iuor = function iuor(num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + return this.strip(); + }; + BN.prototype.ior = function ior(num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + BN.prototype.or = function or(num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + BN.prototype.uor = function uor(num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + BN.prototype.iuand = function iuand(num) { + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + this.length = b.length; + return this.strip(); + }; + BN.prototype.iand = function iand(num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + BN.prototype.and = function and(num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + BN.prototype.uand = function uand(num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + BN.prototype.iuxor = function iuxor(num) { + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = a.length; + return this.strip(); + }; + BN.prototype.ixor = function ixor(num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + BN.prototype.xor = function xor(num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + BN.prototype.uxor = function uxor(num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + BN.prototype.inotn = function inotn(width) { + assert(typeof width === "number" && width >= 0); + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + this._expand(bytesNeeded); + if (bitsLeft > 0) { + bytesNeeded--; + } + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 67108863; + } + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft; + } + return this.strip(); + }; + BN.prototype.notn = function notn(width) { + return this.clone().inotn(width); + }; + BN.prototype.setn = function setn(bit, val) { + assert(typeof bit === "number" && bit >= 0); + var off = bit / 26 | 0; + var wbit = bit % 26; + this._expand(off + 1); + if (val) { + this.words[off] = this.words[off] | 1 << wbit; + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + return this.strip(); + }; + BN.prototype.iadd = function iadd(num) { + var r; + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + return this; + }; + BN.prototype.add = function add2(num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + if (this.length > num.length) return this.clone().iadd(num); + return num.clone().iadd(this); + }; + BN.prototype.isub = function isub(num) { + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + var cmp = this.cmp(num); + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = Math.max(this.length, i); + if (a !== this) { + this.negative = 1; + } + return this.strip(); + }; + BN.prototype.sub = function sub(num) { + return this.clone().isub(num); + }; + function smallMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + var len = self2.length + num.length | 0; + out.length = len; + len = len - 1 | 0; + var a = self2.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + var lo = r & 67108863; + var carry = r / 67108864 | 0; + out.words[0] = lo; + for (var k = 1; k < len; k++) { + var ncarry = carry >>> 26; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j | 0; + a = self2.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += r / 67108864 | 0; + rword = r & 67108863; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + return out.strip(); + } + var comb10MulTo = function comb10MulTo2(self2, num, out) { + var a = self2.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 8191; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 8191; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 8191; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 8191; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 8191; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 8191; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 8191; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 8191; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 8191; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 8191; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 8191; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 8191; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 8191; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 8191; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 8191; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 8191; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 8191; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 8191; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 8191; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 8191; + var bh9 = b9 >>> 13; + out.negative = self2.negative ^ num.negative; + out.length = 19; + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = mid + Math.imul(ah0, bl0) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; + w0 &= 67108863; + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = mid + Math.imul(ah1, bl0) | 0; + hi = Math.imul(ah1, bh0); + lo = lo + Math.imul(al0, bl1) | 0; + mid = mid + Math.imul(al0, bh1) | 0; + mid = mid + Math.imul(ah0, bl1) | 0; + hi = hi + Math.imul(ah0, bh1) | 0; + var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; + w1 &= 67108863; + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = mid + Math.imul(ah2, bl0) | 0; + hi = Math.imul(ah2, bh0); + lo = lo + Math.imul(al1, bl1) | 0; + mid = mid + Math.imul(al1, bh1) | 0; + mid = mid + Math.imul(ah1, bl1) | 0; + hi = hi + Math.imul(ah1, bh1) | 0; + lo = lo + Math.imul(al0, bl2) | 0; + mid = mid + Math.imul(al0, bh2) | 0; + mid = mid + Math.imul(ah0, bl2) | 0; + hi = hi + Math.imul(ah0, bh2) | 0; + var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; + w2 &= 67108863; + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = mid + Math.imul(ah3, bl0) | 0; + hi = Math.imul(ah3, bh0); + lo = lo + Math.imul(al2, bl1) | 0; + mid = mid + Math.imul(al2, bh1) | 0; + mid = mid + Math.imul(ah2, bl1) | 0; + hi = hi + Math.imul(ah2, bh1) | 0; + lo = lo + Math.imul(al1, bl2) | 0; + mid = mid + Math.imul(al1, bh2) | 0; + mid = mid + Math.imul(ah1, bl2) | 0; + hi = hi + Math.imul(ah1, bh2) | 0; + lo = lo + Math.imul(al0, bl3) | 0; + mid = mid + Math.imul(al0, bh3) | 0; + mid = mid + Math.imul(ah0, bl3) | 0; + hi = hi + Math.imul(ah0, bh3) | 0; + var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; + w3 &= 67108863; + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = mid + Math.imul(ah4, bl0) | 0; + hi = Math.imul(ah4, bh0); + lo = lo + Math.imul(al3, bl1) | 0; + mid = mid + Math.imul(al3, bh1) | 0; + mid = mid + Math.imul(ah3, bl1) | 0; + hi = hi + Math.imul(ah3, bh1) | 0; + lo = lo + Math.imul(al2, bl2) | 0; + mid = mid + Math.imul(al2, bh2) | 0; + mid = mid + Math.imul(ah2, bl2) | 0; + hi = hi + Math.imul(ah2, bh2) | 0; + lo = lo + Math.imul(al1, bl3) | 0; + mid = mid + Math.imul(al1, bh3) | 0; + mid = mid + Math.imul(ah1, bl3) | 0; + hi = hi + Math.imul(ah1, bh3) | 0; + lo = lo + Math.imul(al0, bl4) | 0; + mid = mid + Math.imul(al0, bh4) | 0; + mid = mid + Math.imul(ah0, bl4) | 0; + hi = hi + Math.imul(ah0, bh4) | 0; + var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; + w4 &= 67108863; + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = mid + Math.imul(ah5, bl0) | 0; + hi = Math.imul(ah5, bh0); + lo = lo + Math.imul(al4, bl1) | 0; + mid = mid + Math.imul(al4, bh1) | 0; + mid = mid + Math.imul(ah4, bl1) | 0; + hi = hi + Math.imul(ah4, bh1) | 0; + lo = lo + Math.imul(al3, bl2) | 0; + mid = mid + Math.imul(al3, bh2) | 0; + mid = mid + Math.imul(ah3, bl2) | 0; + hi = hi + Math.imul(ah3, bh2) | 0; + lo = lo + Math.imul(al2, bl3) | 0; + mid = mid + Math.imul(al2, bh3) | 0; + mid = mid + Math.imul(ah2, bl3) | 0; + hi = hi + Math.imul(ah2, bh3) | 0; + lo = lo + Math.imul(al1, bl4) | 0; + mid = mid + Math.imul(al1, bh4) | 0; + mid = mid + Math.imul(ah1, bl4) | 0; + hi = hi + Math.imul(ah1, bh4) | 0; + lo = lo + Math.imul(al0, bl5) | 0; + mid = mid + Math.imul(al0, bh5) | 0; + mid = mid + Math.imul(ah0, bl5) | 0; + hi = hi + Math.imul(ah0, bh5) | 0; + var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; + w5 &= 67108863; + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = mid + Math.imul(ah6, bl0) | 0; + hi = Math.imul(ah6, bh0); + lo = lo + Math.imul(al5, bl1) | 0; + mid = mid + Math.imul(al5, bh1) | 0; + mid = mid + Math.imul(ah5, bl1) | 0; + hi = hi + Math.imul(ah5, bh1) | 0; + lo = lo + Math.imul(al4, bl2) | 0; + mid = mid + Math.imul(al4, bh2) | 0; + mid = mid + Math.imul(ah4, bl2) | 0; + hi = hi + Math.imul(ah4, bh2) | 0; + lo = lo + Math.imul(al3, bl3) | 0; + mid = mid + Math.imul(al3, bh3) | 0; + mid = mid + Math.imul(ah3, bl3) | 0; + hi = hi + Math.imul(ah3, bh3) | 0; + lo = lo + Math.imul(al2, bl4) | 0; + mid = mid + Math.imul(al2, bh4) | 0; + mid = mid + Math.imul(ah2, bl4) | 0; + hi = hi + Math.imul(ah2, bh4) | 0; + lo = lo + Math.imul(al1, bl5) | 0; + mid = mid + Math.imul(al1, bh5) | 0; + mid = mid + Math.imul(ah1, bl5) | 0; + hi = hi + Math.imul(ah1, bh5) | 0; + lo = lo + Math.imul(al0, bl6) | 0; + mid = mid + Math.imul(al0, bh6) | 0; + mid = mid + Math.imul(ah0, bl6) | 0; + hi = hi + Math.imul(ah0, bh6) | 0; + var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; + w6 &= 67108863; + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = mid + Math.imul(ah7, bl0) | 0; + hi = Math.imul(ah7, bh0); + lo = lo + Math.imul(al6, bl1) | 0; + mid = mid + Math.imul(al6, bh1) | 0; + mid = mid + Math.imul(ah6, bl1) | 0; + hi = hi + Math.imul(ah6, bh1) | 0; + lo = lo + Math.imul(al5, bl2) | 0; + mid = mid + Math.imul(al5, bh2) | 0; + mid = mid + Math.imul(ah5, bl2) | 0; + hi = hi + Math.imul(ah5, bh2) | 0; + lo = lo + Math.imul(al4, bl3) | 0; + mid = mid + Math.imul(al4, bh3) | 0; + mid = mid + Math.imul(ah4, bl3) | 0; + hi = hi + Math.imul(ah4, bh3) | 0; + lo = lo + Math.imul(al3, bl4) | 0; + mid = mid + Math.imul(al3, bh4) | 0; + mid = mid + Math.imul(ah3, bl4) | 0; + hi = hi + Math.imul(ah3, bh4) | 0; + lo = lo + Math.imul(al2, bl5) | 0; + mid = mid + Math.imul(al2, bh5) | 0; + mid = mid + Math.imul(ah2, bl5) | 0; + hi = hi + Math.imul(ah2, bh5) | 0; + lo = lo + Math.imul(al1, bl6) | 0; + mid = mid + Math.imul(al1, bh6) | 0; + mid = mid + Math.imul(ah1, bl6) | 0; + hi = hi + Math.imul(ah1, bh6) | 0; + lo = lo + Math.imul(al0, bl7) | 0; + mid = mid + Math.imul(al0, bh7) | 0; + mid = mid + Math.imul(ah0, bl7) | 0; + hi = hi + Math.imul(ah0, bh7) | 0; + var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; + w7 &= 67108863; + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = mid + Math.imul(ah8, bl0) | 0; + hi = Math.imul(ah8, bh0); + lo = lo + Math.imul(al7, bl1) | 0; + mid = mid + Math.imul(al7, bh1) | 0; + mid = mid + Math.imul(ah7, bl1) | 0; + hi = hi + Math.imul(ah7, bh1) | 0; + lo = lo + Math.imul(al6, bl2) | 0; + mid = mid + Math.imul(al6, bh2) | 0; + mid = mid + Math.imul(ah6, bl2) | 0; + hi = hi + Math.imul(ah6, bh2) | 0; + lo = lo + Math.imul(al5, bl3) | 0; + mid = mid + Math.imul(al5, bh3) | 0; + mid = mid + Math.imul(ah5, bl3) | 0; + hi = hi + Math.imul(ah5, bh3) | 0; + lo = lo + Math.imul(al4, bl4) | 0; + mid = mid + Math.imul(al4, bh4) | 0; + mid = mid + Math.imul(ah4, bl4) | 0; + hi = hi + Math.imul(ah4, bh4) | 0; + lo = lo + Math.imul(al3, bl5) | 0; + mid = mid + Math.imul(al3, bh5) | 0; + mid = mid + Math.imul(ah3, bl5) | 0; + hi = hi + Math.imul(ah3, bh5) | 0; + lo = lo + Math.imul(al2, bl6) | 0; + mid = mid + Math.imul(al2, bh6) | 0; + mid = mid + Math.imul(ah2, bl6) | 0; + hi = hi + Math.imul(ah2, bh6) | 0; + lo = lo + Math.imul(al1, bl7) | 0; + mid = mid + Math.imul(al1, bh7) | 0; + mid = mid + Math.imul(ah1, bl7) | 0; + hi = hi + Math.imul(ah1, bh7) | 0; + lo = lo + Math.imul(al0, bl8) | 0; + mid = mid + Math.imul(al0, bh8) | 0; + mid = mid + Math.imul(ah0, bl8) | 0; + hi = hi + Math.imul(ah0, bh8) | 0; + var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; + w8 &= 67108863; + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = mid + Math.imul(ah9, bl0) | 0; + hi = Math.imul(ah9, bh0); + lo = lo + Math.imul(al8, bl1) | 0; + mid = mid + Math.imul(al8, bh1) | 0; + mid = mid + Math.imul(ah8, bl1) | 0; + hi = hi + Math.imul(ah8, bh1) | 0; + lo = lo + Math.imul(al7, bl2) | 0; + mid = mid + Math.imul(al7, bh2) | 0; + mid = mid + Math.imul(ah7, bl2) | 0; + hi = hi + Math.imul(ah7, bh2) | 0; + lo = lo + Math.imul(al6, bl3) | 0; + mid = mid + Math.imul(al6, bh3) | 0; + mid = mid + Math.imul(ah6, bl3) | 0; + hi = hi + Math.imul(ah6, bh3) | 0; + lo = lo + Math.imul(al5, bl4) | 0; + mid = mid + Math.imul(al5, bh4) | 0; + mid = mid + Math.imul(ah5, bl4) | 0; + hi = hi + Math.imul(ah5, bh4) | 0; + lo = lo + Math.imul(al4, bl5) | 0; + mid = mid + Math.imul(al4, bh5) | 0; + mid = mid + Math.imul(ah4, bl5) | 0; + hi = hi + Math.imul(ah4, bh5) | 0; + lo = lo + Math.imul(al3, bl6) | 0; + mid = mid + Math.imul(al3, bh6) | 0; + mid = mid + Math.imul(ah3, bl6) | 0; + hi = hi + Math.imul(ah3, bh6) | 0; + lo = lo + Math.imul(al2, bl7) | 0; + mid = mid + Math.imul(al2, bh7) | 0; + mid = mid + Math.imul(ah2, bl7) | 0; + hi = hi + Math.imul(ah2, bh7) | 0; + lo = lo + Math.imul(al1, bl8) | 0; + mid = mid + Math.imul(al1, bh8) | 0; + mid = mid + Math.imul(ah1, bl8) | 0; + hi = hi + Math.imul(ah1, bh8) | 0; + lo = lo + Math.imul(al0, bl9) | 0; + mid = mid + Math.imul(al0, bh9) | 0; + mid = mid + Math.imul(ah0, bl9) | 0; + hi = hi + Math.imul(ah0, bh9) | 0; + var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; + w9 &= 67108863; + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = mid + Math.imul(ah9, bl1) | 0; + hi = Math.imul(ah9, bh1); + lo = lo + Math.imul(al8, bl2) | 0; + mid = mid + Math.imul(al8, bh2) | 0; + mid = mid + Math.imul(ah8, bl2) | 0; + hi = hi + Math.imul(ah8, bh2) | 0; + lo = lo + Math.imul(al7, bl3) | 0; + mid = mid + Math.imul(al7, bh3) | 0; + mid = mid + Math.imul(ah7, bl3) | 0; + hi = hi + Math.imul(ah7, bh3) | 0; + lo = lo + Math.imul(al6, bl4) | 0; + mid = mid + Math.imul(al6, bh4) | 0; + mid = mid + Math.imul(ah6, bl4) | 0; + hi = hi + Math.imul(ah6, bh4) | 0; + lo = lo + Math.imul(al5, bl5) | 0; + mid = mid + Math.imul(al5, bh5) | 0; + mid = mid + Math.imul(ah5, bl5) | 0; + hi = hi + Math.imul(ah5, bh5) | 0; + lo = lo + Math.imul(al4, bl6) | 0; + mid = mid + Math.imul(al4, bh6) | 0; + mid = mid + Math.imul(ah4, bl6) | 0; + hi = hi + Math.imul(ah4, bh6) | 0; + lo = lo + Math.imul(al3, bl7) | 0; + mid = mid + Math.imul(al3, bh7) | 0; + mid = mid + Math.imul(ah3, bl7) | 0; + hi = hi + Math.imul(ah3, bh7) | 0; + lo = lo + Math.imul(al2, bl8) | 0; + mid = mid + Math.imul(al2, bh8) | 0; + mid = mid + Math.imul(ah2, bl8) | 0; + hi = hi + Math.imul(ah2, bh8) | 0; + lo = lo + Math.imul(al1, bl9) | 0; + mid = mid + Math.imul(al1, bh9) | 0; + mid = mid + Math.imul(ah1, bl9) | 0; + hi = hi + Math.imul(ah1, bh9) | 0; + var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; + w10 &= 67108863; + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = mid + Math.imul(ah9, bl2) | 0; + hi = Math.imul(ah9, bh2); + lo = lo + Math.imul(al8, bl3) | 0; + mid = mid + Math.imul(al8, bh3) | 0; + mid = mid + Math.imul(ah8, bl3) | 0; + hi = hi + Math.imul(ah8, bh3) | 0; + lo = lo + Math.imul(al7, bl4) | 0; + mid = mid + Math.imul(al7, bh4) | 0; + mid = mid + Math.imul(ah7, bl4) | 0; + hi = hi + Math.imul(ah7, bh4) | 0; + lo = lo + Math.imul(al6, bl5) | 0; + mid = mid + Math.imul(al6, bh5) | 0; + mid = mid + Math.imul(ah6, bl5) | 0; + hi = hi + Math.imul(ah6, bh5) | 0; + lo = lo + Math.imul(al5, bl6) | 0; + mid = mid + Math.imul(al5, bh6) | 0; + mid = mid + Math.imul(ah5, bl6) | 0; + hi = hi + Math.imul(ah5, bh6) | 0; + lo = lo + Math.imul(al4, bl7) | 0; + mid = mid + Math.imul(al4, bh7) | 0; + mid = mid + Math.imul(ah4, bl7) | 0; + hi = hi + Math.imul(ah4, bh7) | 0; + lo = lo + Math.imul(al3, bl8) | 0; + mid = mid + Math.imul(al3, bh8) | 0; + mid = mid + Math.imul(ah3, bl8) | 0; + hi = hi + Math.imul(ah3, bh8) | 0; + lo = lo + Math.imul(al2, bl9) | 0; + mid = mid + Math.imul(al2, bh9) | 0; + mid = mid + Math.imul(ah2, bl9) | 0; + hi = hi + Math.imul(ah2, bh9) | 0; + var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; + w11 &= 67108863; + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = mid + Math.imul(ah9, bl3) | 0; + hi = Math.imul(ah9, bh3); + lo = lo + Math.imul(al8, bl4) | 0; + mid = mid + Math.imul(al8, bh4) | 0; + mid = mid + Math.imul(ah8, bl4) | 0; + hi = hi + Math.imul(ah8, bh4) | 0; + lo = lo + Math.imul(al7, bl5) | 0; + mid = mid + Math.imul(al7, bh5) | 0; + mid = mid + Math.imul(ah7, bl5) | 0; + hi = hi + Math.imul(ah7, bh5) | 0; + lo = lo + Math.imul(al6, bl6) | 0; + mid = mid + Math.imul(al6, bh6) | 0; + mid = mid + Math.imul(ah6, bl6) | 0; + hi = hi + Math.imul(ah6, bh6) | 0; + lo = lo + Math.imul(al5, bl7) | 0; + mid = mid + Math.imul(al5, bh7) | 0; + mid = mid + Math.imul(ah5, bl7) | 0; + hi = hi + Math.imul(ah5, bh7) | 0; + lo = lo + Math.imul(al4, bl8) | 0; + mid = mid + Math.imul(al4, bh8) | 0; + mid = mid + Math.imul(ah4, bl8) | 0; + hi = hi + Math.imul(ah4, bh8) | 0; + lo = lo + Math.imul(al3, bl9) | 0; + mid = mid + Math.imul(al3, bh9) | 0; + mid = mid + Math.imul(ah3, bl9) | 0; + hi = hi + Math.imul(ah3, bh9) | 0; + var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; + w12 &= 67108863; + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = mid + Math.imul(ah9, bl4) | 0; + hi = Math.imul(ah9, bh4); + lo = lo + Math.imul(al8, bl5) | 0; + mid = mid + Math.imul(al8, bh5) | 0; + mid = mid + Math.imul(ah8, bl5) | 0; + hi = hi + Math.imul(ah8, bh5) | 0; + lo = lo + Math.imul(al7, bl6) | 0; + mid = mid + Math.imul(al7, bh6) | 0; + mid = mid + Math.imul(ah7, bl6) | 0; + hi = hi + Math.imul(ah7, bh6) | 0; + lo = lo + Math.imul(al6, bl7) | 0; + mid = mid + Math.imul(al6, bh7) | 0; + mid = mid + Math.imul(ah6, bl7) | 0; + hi = hi + Math.imul(ah6, bh7) | 0; + lo = lo + Math.imul(al5, bl8) | 0; + mid = mid + Math.imul(al5, bh8) | 0; + mid = mid + Math.imul(ah5, bl8) | 0; + hi = hi + Math.imul(ah5, bh8) | 0; + lo = lo + Math.imul(al4, bl9) | 0; + mid = mid + Math.imul(al4, bh9) | 0; + mid = mid + Math.imul(ah4, bl9) | 0; + hi = hi + Math.imul(ah4, bh9) | 0; + var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; + w13 &= 67108863; + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = mid + Math.imul(ah9, bl5) | 0; + hi = Math.imul(ah9, bh5); + lo = lo + Math.imul(al8, bl6) | 0; + mid = mid + Math.imul(al8, bh6) | 0; + mid = mid + Math.imul(ah8, bl6) | 0; + hi = hi + Math.imul(ah8, bh6) | 0; + lo = lo + Math.imul(al7, bl7) | 0; + mid = mid + Math.imul(al7, bh7) | 0; + mid = mid + Math.imul(ah7, bl7) | 0; + hi = hi + Math.imul(ah7, bh7) | 0; + lo = lo + Math.imul(al6, bl8) | 0; + mid = mid + Math.imul(al6, bh8) | 0; + mid = mid + Math.imul(ah6, bl8) | 0; + hi = hi + Math.imul(ah6, bh8) | 0; + lo = lo + Math.imul(al5, bl9) | 0; + mid = mid + Math.imul(al5, bh9) | 0; + mid = mid + Math.imul(ah5, bl9) | 0; + hi = hi + Math.imul(ah5, bh9) | 0; + var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; + w14 &= 67108863; + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = mid + Math.imul(ah9, bl6) | 0; + hi = Math.imul(ah9, bh6); + lo = lo + Math.imul(al8, bl7) | 0; + mid = mid + Math.imul(al8, bh7) | 0; + mid = mid + Math.imul(ah8, bl7) | 0; + hi = hi + Math.imul(ah8, bh7) | 0; + lo = lo + Math.imul(al7, bl8) | 0; + mid = mid + Math.imul(al7, bh8) | 0; + mid = mid + Math.imul(ah7, bl8) | 0; + hi = hi + Math.imul(ah7, bh8) | 0; + lo = lo + Math.imul(al6, bl9) | 0; + mid = mid + Math.imul(al6, bh9) | 0; + mid = mid + Math.imul(ah6, bl9) | 0; + hi = hi + Math.imul(ah6, bh9) | 0; + var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; + w15 &= 67108863; + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = mid + Math.imul(ah9, bl7) | 0; + hi = Math.imul(ah9, bh7); + lo = lo + Math.imul(al8, bl8) | 0; + mid = mid + Math.imul(al8, bh8) | 0; + mid = mid + Math.imul(ah8, bl8) | 0; + hi = hi + Math.imul(ah8, bh8) | 0; + lo = lo + Math.imul(al7, bl9) | 0; + mid = mid + Math.imul(al7, bh9) | 0; + mid = mid + Math.imul(ah7, bl9) | 0; + hi = hi + Math.imul(ah7, bh9) | 0; + var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; + w16 &= 67108863; + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = mid + Math.imul(ah9, bl8) | 0; + hi = Math.imul(ah9, bh8); + lo = lo + Math.imul(al8, bl9) | 0; + mid = mid + Math.imul(al8, bh9) | 0; + mid = mid + Math.imul(ah8, bl9) | 0; + hi = hi + Math.imul(ah8, bh9) | 0; + var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; + w17 &= 67108863; + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = mid + Math.imul(ah9, bl9) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; + w18 &= 67108863; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + function bigMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + out.length = self2.length + num.length; + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self2.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + var lo = r & 67108863; + ncarry = ncarry + (r / 67108864 | 0) | 0; + lo = lo + rword | 0; + rword = lo & 67108863; + ncarry = ncarry + (lo >>> 26) | 0; + hncarry += ncarry >>> 26; + ncarry &= 67108863; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + return out.strip(); + } + function jumboMulTo(self2, num, out) { + var fftm = new FFTM(); + return fftm.mulp(self2, num, out); + } + BN.prototype.mulTo = function mulTo(num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + return res; + }; + function FFTM(x, y) { + this.x = x; + this.y = y; + } + FFTM.prototype.makeRBT = function makeRBT(N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + return t; + }; + FFTM.prototype.revBin = function revBin(x, l, N) { + if (x === 0 || x === N - 1) return x; + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << l - i - 1; + x >>= 1; + } + return rb; + }; + FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + var rx = rtwdf_ * ro - itwdf_ * io; + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + FFTM.prototype.guessLen13b = function guessLen13b(n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + return 1 << i + 1 + odd; + }; + FFTM.prototype.conjugate = function conjugate(rws, iws, N) { + if (N <= 1) return; + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + t = iws[i]; + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + FFTM.prototype.normalize13b = function normalize13b(ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; + ws[i] = w & 67108863; + if (w < 67108864) { + carry = 0; + } else { + carry = w / 67108864 | 0; + } + } + return ws; + }; + FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + rws[2 * i] = carry & 8191; + carry = carry >>> 13; + rws[2 * i + 1] = carry & 8191; + carry = carry >>> 13; + } + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + assert(carry === 0); + assert((carry & ~8191) === 0); + }; + FFTM.prototype.stub = function stub(N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + return ph; + }; + FFTM.prototype.mulp = function mulp(x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + var rbt = this.makeRBT(N); + var _ = this.stub(N); + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + var rmws = out.words; + rmws.length = N; + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out.strip(); + }; + BN.prototype.mul = function mul(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + BN.prototype.mulf = function mulf(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + BN.prototype.imul = function imul(num) { + return this.clone().mulTo(num, this); + }; + BN.prototype.imuln = function imuln(num) { + assert(typeof num === "number"); + assert(num < 67108864); + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 67108863) + (carry & 67108863); + carry >>= 26; + carry += w / 67108864 | 0; + carry += lo >>> 26; + this.words[i] = lo & 67108863; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + this.length = num === 0 ? 1 : this.length; + return this; + }; + BN.prototype.muln = function muln(num) { + return this.clone().imuln(num); + }; + BN.prototype.sqr = function sqr() { + return this.mul(this); + }; + BN.prototype.isqr = function isqr() { + return this.imul(this.clone()); + }; + BN.prototype.pow = function pow(num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + res = res.mul(q); + } + } + return res; + }; + BN.prototype.iushln = function iushln(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = 67108863 >>> 26 - r << 26 - r; + var i; + if (r !== 0) { + var carry = 0; + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = (this.words[i] | 0) - newCarry << r; + this.words[i] = c | carry; + carry = newCarry >>> 26 - r; + } + if (carry) { + this.words[i] = carry; + this.length++; + } + } + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + this.length += s; + } + return this.strip(); + }; + BN.prototype.ishln = function ishln(bits) { + assert(this.negative === 0); + return this.iushln(bits); + }; + BN.prototype.iushrn = function iushrn(bits, hint, extended) { + assert(typeof bits === "number" && bits >= 0); + var h; + if (hint) { + h = (hint - hint % 26) / 26; + } else { + h = 0; + } + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 67108863 ^ 67108863 >>> r << r; + var maskedWords = extended; + h -= s; + h = Math.max(0, h); + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + if (s === 0) { + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = carry << 26 - r | word >>> r; + carry = word & mask; + } + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + return this.strip(); + }; + BN.prototype.ishrn = function ishrn(bits, hint, extended) { + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + BN.prototype.shln = function shln(bits) { + return this.clone().ishln(bits); + }; + BN.prototype.ushln = function ushln(bits) { + return this.clone().iushln(bits); + }; + BN.prototype.shrn = function shrn(bits) { + return this.clone().ishrn(bits); + }; + BN.prototype.ushrn = function ushrn(bits) { + return this.clone().iushrn(bits); + }; + BN.prototype.testn = function testn(bit) { + assert(typeof bit === "number" && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) return false; + var w = this.words[s]; + return !!(w & q); + }; + BN.prototype.imaskn = function imaskn(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + assert(this.negative === 0, "imaskn works only with positive numbers"); + if (this.length <= s) { + return this; + } + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + if (r !== 0) { + var mask = 67108863 ^ 67108863 >>> r << r; + this.words[this.length - 1] &= mask; + } + return this.strip(); + }; + BN.prototype.maskn = function maskn(bits) { + return this.clone().imaskn(bits); + }; + BN.prototype.iaddn = function iaddn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.isubn(-num); + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) < num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + return this._iaddn(num); + }; + BN.prototype._iaddn = function _iaddn(num) { + this.words[0] += num; + for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) { + this.words[i] -= 67108864; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + return this; + }; + BN.prototype.isubn = function isubn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.iaddn(-num); + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + this.words[0] -= num; + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 67108864; + this.words[i + 1] -= 1; + } + } + return this.strip(); + }; + BN.prototype.addn = function addn(num) { + return this.clone().iaddn(num); + }; + BN.prototype.subn = function subn(num) { + return this.clone().isubn(num); + }; + BN.prototype.iabs = function iabs() { + this.negative = 0; + return this; + }; + BN.prototype.abs = function abs() { + return this.clone().iabs(); + }; + BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { + var len = num.length + shift; + var i; + this._expand(len); + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 67108863; + carry = (w >> 26) - (right / 67108864 | 0); + this.words[i + shift] = w & 67108863; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 67108863; + } + if (carry === 0) return this.strip(); + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 67108863; + } + this.negative = 1; + return this.strip(); + }; + BN.prototype._wordDiv = function _wordDiv(num, mode) { + var shift = this.length - num.length; + var a = this.clone(); + var b = num; + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + var m = a.length - b.length; + var q; + if (mode !== "mod") { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); + qj = Math.min(qj / bhi | 0, 67108863); + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q.strip(); + } + a.strip(); + if (mode !== "div" && shift !== 0) { + a.iushrn(shift); + } + return { + div: q || null, + mod: a + }; + }; + BN.prototype.divmod = function divmod(num, mode, positive) { + assert(!num.isZero()); + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + var div, mod3, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + if (mode !== "mod") { + div = res.div.neg(); + } + if (mode !== "div") { + mod3 = res.mod.neg(); + if (positive && mod3.negative !== 0) { + mod3.iadd(num); + } + } + return { + div, + mod: mod3 + }; + } + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + if (mode !== "mod") { + div = res.div.neg(); + } + return { + div, + mod: res.mod + }; + } + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + if (mode !== "div") { + mod3 = res.mod.neg(); + if (positive && mod3.negative !== 0) { + mod3.isub(num); + } + } + return { + div: res.div, + mod: mod3 + }; + } + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + if (num.length === 1) { + if (mode === "div") { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + if (mode === "mod") { + return { + div: null, + mod: new BN(this.modn(num.words[0])) + }; + } + return { + div: this.divn(num.words[0]), + mod: new BN(this.modn(num.words[0])) + }; + } + return this._wordDiv(num, mode); + }; + BN.prototype.div = function div(num) { + return this.divmod(num, "div", false).div; + }; + BN.prototype.mod = function mod3(num) { + return this.divmod(num, "mod", false).mod; + }; + BN.prototype.umod = function umod(num) { + return this.divmod(num, "mod", true).mod; + }; + BN.prototype.divRound = function divRound(num) { + var dm = this.divmod(num); + if (dm.mod.isZero()) return dm.div; + var mod3 = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod3.cmp(half); + if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + BN.prototype.modn = function modn(num) { + assert(num <= 67108863); + var p = (1 << 26) % num; + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + return acc; + }; + BN.prototype.idivn = function idivn(num) { + assert(num <= 67108863); + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 67108864; + this.words[i] = w / num | 0; + carry = w % num; + } + return this.strip(); + }; + BN.prototype.divn = function divn(num) { + return this.clone().idivn(num); + }; + BN.prototype.egcd = function egcd(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var x = this; + var y = p.clone(); + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + var A = new BN(1); + var B = new BN(0); + var C = new BN(0); + var D = new BN(1); + var g = 0; + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + var yp = y.clone(); + var xp = x.clone(); + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + A.iushrn(1); + B.iushrn(1); + } + } + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + C.iushrn(1); + D.iushrn(1); + } + } + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + BN.prototype._invmp = function _invmp(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var a = this; + var b = p.clone(); + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + var x1 = new BN(1); + var x2 = new BN(0); + var delta = b.clone(); + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + x1.iushrn(1); + } + } + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + x2.iushrn(1); + } + } + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + if (res.cmpn(0) < 0) { + res.iadd(p); + } + return res; + }; + BN.prototype.gcd = function gcd(num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + var r = a.cmp(b); + if (r < 0) { + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + a.isub(b); + } while (true); + return b.iushln(shift); + }; + BN.prototype.invm = function invm(num) { + return this.egcd(num).a.umod(num); + }; + BN.prototype.isEven = function isEven() { + return (this.words[0] & 1) === 0; + }; + BN.prototype.isOdd = function isOdd() { + return (this.words[0] & 1) === 1; + }; + BN.prototype.andln = function andln(num) { + return this.words[0] & num; + }; + BN.prototype.bincn = function bincn(bit) { + assert(typeof bit === "number"); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 67108863; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + BN.prototype.isZero = function isZero() { + return this.length === 1 && this.words[0] === 0; + }; + BN.prototype.cmpn = function cmpn(num) { + var negative = num < 0; + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + this.strip(); + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + assert(num <= 67108863, "Number is too big"); + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.cmp = function cmp(num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.ucmp = function ucmp(num) { + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + BN.prototype.gtn = function gtn(num) { + return this.cmpn(num) === 1; + }; + BN.prototype.gt = function gt(num) { + return this.cmp(num) === 1; + }; + BN.prototype.gten = function gten(num) { + return this.cmpn(num) >= 0; + }; + BN.prototype.gte = function gte(num) { + return this.cmp(num) >= 0; + }; + BN.prototype.ltn = function ltn(num) { + return this.cmpn(num) === -1; + }; + BN.prototype.lt = function lt(num) { + return this.cmp(num) === -1; + }; + BN.prototype.lten = function lten(num) { + return this.cmpn(num) <= 0; + }; + BN.prototype.lte = function lte(num) { + return this.cmp(num) <= 0; + }; + BN.prototype.eqn = function eqn(num) { + return this.cmpn(num) === 0; + }; + BN.prototype.eq = function eq(num) { + return this.cmp(num) === 0; + }; + BN.red = function red(num) { + return new Red(num); + }; + BN.prototype.toRed = function toRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + assert(this.negative === 0, "red works only with positives"); + return ctx.convertTo(this)._forceRed(ctx); + }; + BN.prototype.fromRed = function fromRed() { + assert(this.red, "fromRed works only with numbers in reduction context"); + return this.red.convertFrom(this); + }; + BN.prototype._forceRed = function _forceRed(ctx) { + this.red = ctx; + return this; + }; + BN.prototype.forceRed = function forceRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + return this._forceRed(ctx); + }; + BN.prototype.redAdd = function redAdd(num) { + assert(this.red, "redAdd works only with red numbers"); + return this.red.add(this, num); + }; + BN.prototype.redIAdd = function redIAdd(num) { + assert(this.red, "redIAdd works only with red numbers"); + return this.red.iadd(this, num); + }; + BN.prototype.redSub = function redSub(num) { + assert(this.red, "redSub works only with red numbers"); + return this.red.sub(this, num); + }; + BN.prototype.redISub = function redISub(num) { + assert(this.red, "redISub works only with red numbers"); + return this.red.isub(this, num); + }; + BN.prototype.redShl = function redShl(num) { + assert(this.red, "redShl works only with red numbers"); + return this.red.shl(this, num); + }; + BN.prototype.redMul = function redMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + BN.prototype.redIMul = function redIMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + BN.prototype.redSqr = function redSqr() { + assert(this.red, "redSqr works only with red numbers"); + this.red._verify1(this); + return this.red.sqr(this); + }; + BN.prototype.redISqr = function redISqr() { + assert(this.red, "redISqr works only with red numbers"); + this.red._verify1(this); + return this.red.isqr(this); + }; + BN.prototype.redSqrt = function redSqrt() { + assert(this.red, "redSqrt works only with red numbers"); + this.red._verify1(this); + return this.red.sqrt(this); + }; + BN.prototype.redInvm = function redInvm() { + assert(this.red, "redInvm works only with red numbers"); + this.red._verify1(this); + return this.red.invm(this); + }; + BN.prototype.redNeg = function redNeg() { + assert(this.red, "redNeg works only with red numbers"); + this.red._verify1(this); + return this.red.neg(this); + }; + BN.prototype.redPow = function redPow(num) { + assert(this.red && !num.red, "redPow(normalNum)"); + this.red._verify1(this); + return this.red.pow(this, num); + }; + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + function MPrime(name, p) { + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + this.tmp = this._tmp(); + } + MPrime.prototype._tmp = function _tmp() { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + MPrime.prototype.ireduce = function ireduce(num) { + var r = num; + var rlen; + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + if (r.strip !== void 0) { + r.strip(); + } else { + r._strip(); + } + } + return r; + }; + MPrime.prototype.split = function split2(input, out) { + input.iushrn(this.n, 0, out); + }; + MPrime.prototype.imulK = function imulK(num) { + return num.imul(this.k); + }; + function K256() { + MPrime.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + inherits(K256, MPrime); + K256.prototype.split = function split2(input, output) { + var mask = 4194303; + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = (next & mask) << 4 | prev >>> 22; + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + K256.prototype.imulK = function imulK(num) { + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 977; + num.words[i] = lo & 67108863; + lo = w * 64 + (lo / 67108864 | 0); + } + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + function P224() { + MPrime.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + inherits(P224, MPrime); + function P192() { + MPrime.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + inherits(P192, MPrime); + function P25519() { + MPrime.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + inherits(P25519, MPrime); + P25519.prototype.imulK = function imulK(num) { + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 19 + carry; + var lo = hi & 67108863; + hi >>>= 26; + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + BN._prime = function prime(name) { + if (primes[name]) return primes[name]; + var prime2; + if (name === "k256") { + prime2 = new K256(); + } else if (name === "p224") { + prime2 = new P224(); + } else if (name === "p192") { + prime2 = new P192(); + } else if (name === "p25519") { + prime2 = new P25519(); + } else { + throw new Error("Unknown prime " + name); + } + primes[name] = prime2; + return prime2; + }; + function Red(m) { + if (typeof m === "string") { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), "modulus must be greater than 1"); + this.m = m; + this.prime = null; + } + } + Red.prototype._verify1 = function _verify1(a) { + assert(a.negative === 0, "red works only with positives"); + assert(a.red, "red works only with red numbers"); + }; + Red.prototype._verify2 = function _verify2(a, b) { + assert((a.negative | b.negative) === 0, "red works only with positives"); + assert( + a.red && a.red === b.red, + "red works only with red numbers" + ); + }; + Red.prototype.imod = function imod(a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + return a.umod(this.m)._forceRed(this); + }; + Red.prototype.neg = function neg(a) { + if (a.isZero()) { + return a.clone(); + } + return this.m.sub(a)._forceRed(this); + }; + Red.prototype.add = function add2(a, b) { + this._verify2(a, b); + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + Red.prototype.iadd = function iadd(a, b) { + this._verify2(a, b); + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + Red.prototype.sub = function sub(a, b) { + this._verify2(a, b); + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + Red.prototype.isub = function isub(a, b) { + this._verify2(a, b); + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + Red.prototype.shl = function shl(a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + Red.prototype.imul = function imul(a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + Red.prototype.mul = function mul(a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + Red.prototype.isqr = function isqr(a) { + return this.imul(a, a.clone()); + }; + Red.prototype.sqr = function sqr(a) { + return this.mul(a, a); + }; + Red.prototype.sqrt = function sqrt(a) { + if (a.isZero()) return a.clone(); + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + return r; + }; + Red.prototype.invm = function invm(a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + Red.prototype.pow = function pow(a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = word >> j & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + return res; + }; + Red.prototype.convertTo = function convertTo(num) { + var r = num.umod(this.m); + return r === num ? r.clone() : r; + }; + Red.prototype.convertFrom = function convertFrom(num) { + var res = num.clone(); + res.red = null; + return res; + }; + BN.mont = function mont(num) { + return new Mont(num); + }; + function Mont(m) { + Red.call(this, m); + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - this.shift % 26; + } + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + Mont.prototype.convertTo = function convertTo(num) { + return this.imod(num.ushln(this.shift)); + }; + Mont.prototype.convertFrom = function convertFrom(num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + Mont.prototype.imul = function imul(a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.mul = function mul(a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.invm = function invm(a) { + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; + })(typeof module2 === "undefined" || module2, exports2); + } +}); + +// node_modules/elliptic/package.json +var require_package = __commonJS({ + "node_modules/elliptic/package.json"(exports2, module2) { + module2.exports = { + name: "elliptic", + version: "6.6.1", + description: "EC cryptography", + main: "lib/elliptic.js", + files: [ + "lib" + ], + scripts: { + lint: "eslint lib test", + "lint:fix": "npm run lint -- --fix", + unit: "istanbul test _mocha --reporter=spec test/index.js", + test: "npm run lint && npm run unit", + version: "grunt dist && git add dist/" + }, + repository: { + type: "git", + url: "git@github.com:indutny/elliptic" + }, + keywords: [ + "EC", + "Elliptic", + "curve", + "Cryptography" + ], + author: "Fedor Indutny ", + license: "MIT", + bugs: { + url: "https://github.com/indutny/elliptic/issues" + }, + homepage: "https://github.com/indutny/elliptic", + devDependencies: { + brfs: "^2.0.2", + coveralls: "^3.1.0", + eslint: "^7.6.0", + grunt: "^1.2.1", + "grunt-browserify": "^5.3.0", + "grunt-cli": "^1.3.2", + "grunt-contrib-connect": "^3.0.0", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-uglify": "^5.0.0", + "grunt-mocha-istanbul": "^5.0.2", + "grunt-saucelabs": "^9.0.1", + istanbul: "^0.4.5", + mocha: "^8.0.1" + }, + dependencies: { + "bn.js": "^4.11.9", + brorand: "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + inherits: "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }; + } +}); + +// node_modules/minimalistic-assert/index.js +var require_minimalistic_assert = __commonJS({ + "node_modules/minimalistic-assert/index.js"(exports2, module2) { + module2.exports = assert; + function assert(val, msg) { + if (!val) + throw new Error(msg || "Assertion failed"); + } + assert.equal = function assertEqual(l, r, msg) { + if (l != r) + throw new Error(msg || "Assertion failed: " + l + " != " + r); + }; + } +}); + +// node_modules/minimalistic-crypto-utils/lib/utils.js +var require_utils21 = __commonJS({ + "node_modules/minimalistic-crypto-utils/lib/utils.js"(exports2) { + "use strict"; + var utils = exports2; + function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg !== "string") { + for (var i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + return res; + } + if (enc === "hex") { + msg = msg.replace(/[^a-z0-9]+/ig, ""); + if (msg.length % 2 !== 0) + msg = "0" + msg; + for (var i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } else { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 255; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } + return res; + } + utils.toArray = toArray; + function zero2(word) { + if (word.length === 1) + return "0" + word; + else + return word; + } + utils.zero2 = zero2; + function toHex3(msg) { + var res = ""; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; + } + utils.toHex = toHex3; + utils.encode = function encode(arr, enc) { + if (enc === "hex") + return toHex3(arr); + else + return arr; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/utils.js +var require_utils22 = __commonJS({ + "node_modules/elliptic/lib/elliptic/utils.js"(exports2) { + "use strict"; + var utils = exports2; + var BN = require_bn(); + var minAssert = require_minimalistic_assert(); + var minUtils = require_utils21(); + utils.assert = minAssert; + utils.toArray = minUtils.toArray; + utils.zero2 = minUtils.zero2; + utils.toHex = minUtils.toHex; + utils.encode = minUtils.encode; + function getNAF(num, w, bits) { + var naf = new Array(Math.max(num.bitLength(), bits) + 1); + var i; + for (i = 0; i < naf.length; i += 1) { + naf[i] = 0; + } + var ws = 1 << w + 1; + var k = num.clone(); + for (i = 0; i < naf.length; i++) { + var z; + var mod3 = k.andln(ws - 1); + if (k.isOdd()) { + if (mod3 > (ws >> 1) - 1) + z = (ws >> 1) - mod3; + else + z = mod3; + k.isubn(z); + } else { + z = 0; + } + naf[i] = z; + k.iushrn(1); + } + return naf; + } + utils.getNAF = getNAF; + function getJSF(k1, k2) { + var jsf = [ + [], + [] + ]; + k1 = k1.clone(); + k2 = k2.clone(); + var d1 = 0; + var d2 = 0; + var m8; + while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { + var m14 = k1.andln(3) + d1 & 3; + var m24 = k2.andln(3) + d2 & 3; + if (m14 === 3) + m14 = -1; + if (m24 === 3) + m24 = -1; + var u1; + if ((m14 & 1) === 0) { + u1 = 0; + } else { + m8 = k1.andln(7) + d1 & 7; + if ((m8 === 3 || m8 === 5) && m24 === 2) + u1 = -m14; + else + u1 = m14; + } + jsf[0].push(u1); + var u2; + if ((m24 & 1) === 0) { + u2 = 0; + } else { + m8 = k2.andln(7) + d2 & 7; + if ((m8 === 3 || m8 === 5) && m14 === 2) + u2 = -m24; + else + u2 = m24; + } + jsf[1].push(u2); + if (2 * d1 === u1 + 1) + d1 = 1 - d1; + if (2 * d2 === u2 + 1) + d2 = 1 - d2; + k1.iushrn(1); + k2.iushrn(1); + } + return jsf; + } + utils.getJSF = getJSF; + function cachedProperty(obj, name, computer) { + var key = "_" + name; + obj.prototype[name] = function cachedProperty2() { + return this[key] !== void 0 ? this[key] : this[key] = computer.call(this); + }; + } + utils.cachedProperty = cachedProperty; + function parseBytes(bytes) { + return typeof bytes === "string" ? utils.toArray(bytes, "hex") : bytes; + } + utils.parseBytes = parseBytes; + function intFromLE(bytes) { + return new BN(bytes, "hex", "le"); + } + utils.intFromLE = intFromLE; + } +}); + +// node_modules/brorand/index.js +var require_brorand = __commonJS({ + "node_modules/brorand/index.js"(exports2, module2) { + var r; + module2.exports = function rand(len) { + if (!r) + r = new Rand(null); + return r.generate(len); + }; + function Rand(rand) { + this.rand = rand; + } + module2.exports.Rand = Rand; + Rand.prototype.generate = function generate(len) { + return this._rand(len); + }; + Rand.prototype._rand = function _rand(n) { + if (this.rand.getBytes) + return this.rand.getBytes(n); + var res = new Uint8Array(n); + for (var i = 0; i < res.length; i++) + res[i] = this.rand.getByte(); + return res; + }; + if (typeof self === "object") { + if (self.crypto && self.crypto.getRandomValues) { + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.crypto.getRandomValues(arr); + return arr; + }; + } else if (self.msCrypto && self.msCrypto.getRandomValues) { + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.msCrypto.getRandomValues(arr); + return arr; + }; + } else if (typeof window === "object") { + Rand.prototype._rand = function() { + throw new Error("Not implemented yet"); + }; + } + } else { + try { + crypto2 = __require("crypto"); + if (typeof crypto2.randomBytes !== "function") + throw new Error("Not supported"); + Rand.prototype._rand = function _rand(n) { + return crypto2.randomBytes(n); + }; + } catch (e) { + } + } + var crypto2; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/base.js +var require_base2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/base.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var utils = require_utils22(); + var getNAF = utils.getNAF; + var getJSF = utils.getJSF; + var assert = utils.assert; + function BaseCurve(type, conf) { + this.type = type; + this.p = new BN(conf.p, 16); + this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); + this.zero = new BN(0).toRed(this.red); + this.one = new BN(1).toRed(this.red); + this.two = new BN(2).toRed(this.red); + this.n = conf.n && new BN(conf.n, 16); + this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); + this._wnafT1 = new Array(4); + this._wnafT2 = new Array(4); + this._wnafT3 = new Array(4); + this._wnafT4 = new Array(4); + this._bitLength = this.n ? this.n.bitLength() : 0; + var adjustCount = this.n && this.p.div(this.n); + if (!adjustCount || adjustCount.cmpn(100) > 0) { + this.redN = null; + } else { + this._maxwellTrick = true; + this.redN = this.n.toRed(this.red); + } + } + module2.exports = BaseCurve; + BaseCurve.prototype.point = function point() { + throw new Error("Not implemented"); + }; + BaseCurve.prototype.validate = function validate() { + throw new Error("Not implemented"); + }; + BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { + assert(p.precomputed); + var doubles = p._getDoubles(); + var naf = getNAF(k, 1, this._bitLength); + var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1); + I /= 3; + var repr = []; + var j; + var nafW; + for (j = 0; j < naf.length; j += doubles.step) { + nafW = 0; + for (var l = j + doubles.step - 1; l >= j; l--) + nafW = (nafW << 1) + naf[l]; + repr.push(nafW); + } + var a = this.jpoint(null, null, null); + var b = this.jpoint(null, null, null); + for (var i = I; i > 0; i--) { + for (j = 0; j < repr.length; j++) { + nafW = repr[j]; + if (nafW === i) + b = b.mixedAdd(doubles.points[j]); + else if (nafW === -i) + b = b.mixedAdd(doubles.points[j].neg()); + } + a = a.add(b); + } + return a.toP(); + }; + BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { + var w = 4; + var nafPoints = p._getNAFPoints(w); + w = nafPoints.wnd; + var wnd = nafPoints.points; + var naf = getNAF(k, w, this._bitLength); + var acc = this.jpoint(null, null, null); + for (var i = naf.length - 1; i >= 0; i--) { + for (var l = 0; i >= 0 && naf[i] === 0; i--) + l++; + if (i >= 0) + l++; + acc = acc.dblp(l); + if (i < 0) + break; + var z = naf[i]; + assert(z !== 0); + if (p.type === "affine") { + if (z > 0) + acc = acc.mixedAdd(wnd[z - 1 >> 1]); + else + acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg()); + } else { + if (z > 0) + acc = acc.add(wnd[z - 1 >> 1]); + else + acc = acc.add(wnd[-z - 1 >> 1].neg()); + } + } + return p.type === "affine" ? acc.toP() : acc; + }; + BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) { + var wndWidth = this._wnafT1; + var wnd = this._wnafT2; + var naf = this._wnafT3; + var max = 0; + var i; + var j; + var p; + for (i = 0; i < len; i++) { + p = points[i]; + var nafPoints = p._getNAFPoints(defW); + wndWidth[i] = nafPoints.wnd; + wnd[i] = nafPoints.points; + } + for (i = len - 1; i >= 1; i -= 2) { + var a = i - 1; + var b = i; + if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { + naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); + naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); + max = Math.max(naf[a].length, max); + max = Math.max(naf[b].length, max); + continue; + } + var comb = [ + points[a], + /* 1 */ + null, + /* 3 */ + null, + /* 5 */ + points[b] + /* 7 */ + ]; + if (points[a].y.cmp(points[b].y) === 0) { + comb[1] = points[a].add(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].add(points[b].neg()); + } else { + comb[1] = points[a].toJ().mixedAdd(points[b]); + comb[2] = points[a].toJ().mixedAdd(points[b].neg()); + } + var index = [ + -3, + /* -1 -1 */ + -1, + /* -1 0 */ + -5, + /* -1 1 */ + -7, + /* 0 -1 */ + 0, + /* 0 0 */ + 7, + /* 0 1 */ + 5, + /* 1 -1 */ + 1, + /* 1 0 */ + 3 + /* 1 1 */ + ]; + var jsf = getJSF(coeffs[a], coeffs[b]); + max = Math.max(jsf[0].length, max); + naf[a] = new Array(max); + naf[b] = new Array(max); + for (j = 0; j < max; j++) { + var ja = jsf[0][j] | 0; + var jb = jsf[1][j] | 0; + naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; + naf[b][j] = 0; + wnd[a] = comb; + } + } + var acc = this.jpoint(null, null, null); + var tmp = this._wnafT4; + for (i = max; i >= 0; i--) { + var k = 0; + while (i >= 0) { + var zero = true; + for (j = 0; j < len; j++) { + tmp[j] = naf[j][i] | 0; + if (tmp[j] !== 0) + zero = false; + } + if (!zero) + break; + k++; + i--; + } + if (i >= 0) + k++; + acc = acc.dblp(k); + if (i < 0) + break; + for (j = 0; j < len; j++) { + var z = tmp[j]; + p; + if (z === 0) + continue; + else if (z > 0) + p = wnd[j][z - 1 >> 1]; + else if (z < 0) + p = wnd[j][-z - 1 >> 1].neg(); + if (p.type === "affine") + acc = acc.mixedAdd(p); + else + acc = acc.add(p); + } + } + for (i = 0; i < len; i++) + wnd[i] = null; + if (jacobianResult) + return acc; + else + return acc.toP(); + }; + function BasePoint(curve, type) { + this.curve = curve; + this.type = type; + this.precomputed = null; + } + BaseCurve.BasePoint = BasePoint; + BasePoint.prototype.eq = function eq() { + throw new Error("Not implemented"); + }; + BasePoint.prototype.validate = function validate() { + return this.curve.validate(this); + }; + BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + bytes = utils.toArray(bytes, enc); + var len = this.p.byteLength(); + if ((bytes[0] === 4 || bytes[0] === 6 || bytes[0] === 7) && bytes.length - 1 === 2 * len) { + if (bytes[0] === 6) + assert(bytes[bytes.length - 1] % 2 === 0); + else if (bytes[0] === 7) + assert(bytes[bytes.length - 1] % 2 === 1); + var res = this.point( + bytes.slice(1, 1 + len), + bytes.slice(1 + len, 1 + 2 * len) + ); + return res; + } else if ((bytes[0] === 2 || bytes[0] === 3) && bytes.length - 1 === len) { + return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 3); + } + throw new Error("Unknown point format"); + }; + BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { + return this.encode(enc, true); + }; + BasePoint.prototype._encode = function _encode(compact) { + var len = this.curve.p.byteLength(); + var x = this.getX().toArray("be", len); + if (compact) + return [this.getY().isEven() ? 2 : 3].concat(x); + return [4].concat(x, this.getY().toArray("be", len)); + }; + BasePoint.prototype.encode = function encode(enc, compact) { + return utils.encode(this._encode(compact), enc); + }; + BasePoint.prototype.precompute = function precompute(power) { + if (this.precomputed) + return this; + var precomputed = { + doubles: null, + naf: null, + beta: null + }; + precomputed.naf = this._getNAFPoints(8); + precomputed.doubles = this._getDoubles(4, power); + precomputed.beta = this._getBeta(); + this.precomputed = precomputed; + return this; + }; + BasePoint.prototype._hasDoubles = function _hasDoubles(k) { + if (!this.precomputed) + return false; + var doubles = this.precomputed.doubles; + if (!doubles) + return false; + return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); + }; + BasePoint.prototype._getDoubles = function _getDoubles(step, power) { + if (this.precomputed && this.precomputed.doubles) + return this.precomputed.doubles; + var doubles = [this]; + var acc = this; + for (var i = 0; i < power; i += step) { + for (var j = 0; j < step; j++) + acc = acc.dbl(); + doubles.push(acc); + } + return { + step, + points: doubles + }; + }; + BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { + if (this.precomputed && this.precomputed.naf) + return this.precomputed.naf; + var res = [this]; + var max = (1 << wnd) - 1; + var dbl = max === 1 ? null : this.dbl(); + for (var i = 1; i < max; i++) + res[i] = res[i - 1].add(dbl); + return { + wnd, + points: res + }; + }; + BasePoint.prototype._getBeta = function _getBeta() { + return null; + }; + BasePoint.prototype.dblp = function dblp(k) { + var r = this; + for (var i = 0; i < k; i++) + r = r.dbl(); + return r; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/short.js +var require_short = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/short.js"(exports2, module2) { + "use strict"; + var utils = require_utils22(); + var BN = require_bn(); + var inherits = require_inherits(); + var Base = require_base2(); + var assert = utils.assert; + function ShortCurve(conf) { + Base.call(this, "short", conf); + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.tinv = this.two.redInvm(); + this.zeroA = this.a.fromRed().cmpn(0) === 0; + this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; + this.endo = this._getEndomorphism(conf); + this._endoWnafT1 = new Array(4); + this._endoWnafT2 = new Array(4); + } + inherits(ShortCurve, Base); + module2.exports = ShortCurve; + ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { + if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) + return; + var beta; + var lambda; + if (conf.beta) { + beta = new BN(conf.beta, 16).toRed(this.red); + } else { + var betas = this._getEndoRoots(this.p); + beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; + beta = beta.toRed(this.red); + } + if (conf.lambda) { + lambda = new BN(conf.lambda, 16); + } else { + var lambdas = this._getEndoRoots(this.n); + if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { + lambda = lambdas[0]; + } else { + lambda = lambdas[1]; + assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); + } + } + var basis; + if (conf.basis) { + basis = conf.basis.map(function(vec) { + return { + a: new BN(vec.a, 16), + b: new BN(vec.b, 16) + }; + }); + } else { + basis = this._getEndoBasis(lambda); + } + return { + beta, + lambda, + basis + }; + }; + ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { + var red = num === this.p ? this.red : BN.mont(num); + var tinv = new BN(2).toRed(red).redInvm(); + var ntinv = tinv.redNeg(); + var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); + var l1 = ntinv.redAdd(s).fromRed(); + var l2 = ntinv.redSub(s).fromRed(); + return [l1, l2]; + }; + ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { + var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); + var u = lambda; + var v = this.n.clone(); + var x1 = new BN(1); + var y1 = new BN(0); + var x2 = new BN(0); + var y2 = new BN(1); + var a0; + var b0; + var a1; + var b1; + var a2; + var b2; + var prevR; + var i = 0; + var r; + var x; + while (u.cmpn(0) !== 0) { + var q = v.div(u); + r = v.sub(q.mul(u)); + x = x2.sub(q.mul(x1)); + var y = y2.sub(q.mul(y1)); + if (!a1 && r.cmp(aprxSqrt) < 0) { + a0 = prevR.neg(); + b0 = x1; + a1 = r.neg(); + b1 = x; + } else if (a1 && ++i === 2) { + break; + } + prevR = r; + v = u; + u = r; + x2 = x1; + x1 = x; + y2 = y1; + y1 = y; + } + a2 = r.neg(); + b2 = x; + var len1 = a1.sqr().add(b1.sqr()); + var len2 = a2.sqr().add(b2.sqr()); + if (len2.cmp(len1) >= 0) { + a2 = a0; + b2 = b0; + } + if (a1.negative) { + a1 = a1.neg(); + b1 = b1.neg(); + } + if (a2.negative) { + a2 = a2.neg(); + b2 = b2.neg(); + } + return [ + { a: a1, b: b1 }, + { a: a2, b: b2 } + ]; + }; + ShortCurve.prototype._endoSplit = function _endoSplit(k) { + var basis = this.endo.basis; + var v1 = basis[0]; + var v2 = basis[1]; + var c1 = v2.b.mul(k).divRound(this.n); + var c2 = v1.b.neg().mul(k).divRound(this.n); + var p1 = c1.mul(v1.a); + var p2 = c2.mul(v2.a); + var q1 = c1.mul(v1.b); + var q2 = c2.mul(v2.b); + var k1 = k.sub(p1).sub(p2); + var k2 = q1.add(q2).neg(); + return { k1, k2 }; + }; + ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + return this.point(x, y); + }; + ShortCurve.prototype.validate = function validate(point) { + if (point.inf) + return true; + var x = point.x; + var y = point.y; + var ax = this.a.redMul(x); + var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); + return y.redSqr().redISub(rhs).cmpn(0) === 0; + }; + ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) { + var npoints = this._endoWnafT1; + var ncoeffs = this._endoWnafT2; + for (var i = 0; i < points.length; i++) { + var split2 = this._endoSplit(coeffs[i]); + var p = points[i]; + var beta = p._getBeta(); + if (split2.k1.negative) { + split2.k1.ineg(); + p = p.neg(true); + } + if (split2.k2.negative) { + split2.k2.ineg(); + beta = beta.neg(true); + } + npoints[i * 2] = p; + npoints[i * 2 + 1] = beta; + ncoeffs[i * 2] = split2.k1; + ncoeffs[i * 2 + 1] = split2.k2; + } + var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); + for (var j = 0; j < i * 2; j++) { + npoints[j] = null; + ncoeffs[j] = null; + } + return res; + }; + function Point(curve, x, y, isRed) { + Base.BasePoint.call(this, curve, "affine"); + if (x === null && y === null) { + this.x = null; + this.y = null; + this.inf = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + if (isRed) { + this.x.forceRed(this.curve.red); + this.y.forceRed(this.curve.red); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + this.inf = false; + } + } + inherits(Point, Base.BasePoint); + ShortCurve.prototype.point = function point(x, y, isRed) { + return new Point(this, x, y, isRed); + }; + ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { + return Point.fromJSON(this, obj, red); + }; + Point.prototype._getBeta = function _getBeta() { + if (!this.curve.endo) + return; + var pre = this.precomputed; + if (pre && pre.beta) + return pre.beta; + var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); + if (pre) { + var curve = this.curve; + var endoMul = function(p) { + return curve.point(p.x.redMul(curve.endo.beta), p.y); + }; + pre.beta = beta; + beta.precomputed = { + beta: null, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(endoMul) + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(endoMul) + } + }; + } + return beta; + }; + Point.prototype.toJSON = function toJSON() { + if (!this.precomputed) + return [this.x, this.y]; + return [this.x, this.y, this.precomputed && { + doubles: this.precomputed.doubles && { + step: this.precomputed.doubles.step, + points: this.precomputed.doubles.points.slice(1) + }, + naf: this.precomputed.naf && { + wnd: this.precomputed.naf.wnd, + points: this.precomputed.naf.points.slice(1) + } + }]; + }; + Point.fromJSON = function fromJSON(curve, obj, red) { + if (typeof obj === "string") + obj = JSON.parse(obj); + var res = curve.point(obj[0], obj[1], red); + if (!obj[2]) + return res; + function obj2point(obj2) { + return curve.point(obj2[0], obj2[1], red); + } + var pre = obj[2]; + res.precomputed = { + beta: null, + doubles: pre.doubles && { + step: pre.doubles.step, + points: [res].concat(pre.doubles.points.map(obj2point)) + }, + naf: pre.naf && { + wnd: pre.naf.wnd, + points: [res].concat(pre.naf.points.map(obj2point)) + } + }; + return res; + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.inf; + }; + Point.prototype.add = function add2(p) { + if (this.inf) + return p; + if (p.inf) + return this; + if (this.eq(p)) + return this.dbl(); + if (this.neg().eq(p)) + return this.curve.point(null, null); + if (this.x.cmp(p.x) === 0) + return this.curve.point(null, null); + var c = this.y.redSub(p.y); + if (c.cmpn(0) !== 0) + c = c.redMul(this.x.redSub(p.x).redInvm()); + var nx = c.redSqr().redISub(this.x).redISub(p.x); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); + }; + Point.prototype.dbl = function dbl() { + if (this.inf) + return this; + var ys1 = this.y.redAdd(this.y); + if (ys1.cmpn(0) === 0) + return this.curve.point(null, null); + var a = this.curve.a; + var x2 = this.x.redSqr(); + var dyinv = ys1.redInvm(); + var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); + var nx = c.redSqr().redISub(this.x.redAdd(this.x)); + var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); + return this.curve.point(nx, ny); + }; + Point.prototype.getX = function getX() { + return this.x.fromRed(); + }; + Point.prototype.getY = function getY() { + return this.y.fromRed(); + }; + Point.prototype.mul = function mul(k) { + k = new BN(k, 16); + if (this.isInfinity()) + return this; + else if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else if (this.curve.endo) + return this.curve._endoWnafMulAdd([this], [k]); + else + return this.curve._wnafMul(this, k); + }; + Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { + var points = [this, p2]; + var coeffs = [k1, k2]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2); + }; + Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { + var points = [this, p2]; + var coeffs = [k1, k2]; + if (this.curve.endo) + return this.curve._endoWnafMulAdd(points, coeffs, true); + else + return this.curve._wnafMulAdd(1, points, coeffs, 2, true); + }; + Point.prototype.eq = function eq(p) { + return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); + }; + Point.prototype.neg = function neg(_precompute) { + if (this.inf) + return this; + var res = this.curve.point(this.x, this.y.redNeg()); + if (_precompute && this.precomputed) { + var pre = this.precomputed; + var negate = function(p) { + return p.neg(); + }; + res.precomputed = { + naf: pre.naf && { + wnd: pre.naf.wnd, + points: pre.naf.points.map(negate) + }, + doubles: pre.doubles && { + step: pre.doubles.step, + points: pre.doubles.points.map(negate) + } + }; + } + return res; + }; + Point.prototype.toJ = function toJ() { + if (this.inf) + return this.curve.jpoint(null, null, null); + var res = this.curve.jpoint(this.x, this.y, this.curve.one); + return res; + }; + function JPoint(curve, x, y, z) { + Base.BasePoint.call(this, curve, "jacobian"); + if (x === null && y === null && z === null) { + this.x = this.curve.one; + this.y = this.curve.one; + this.z = new BN(0); + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = new BN(z, 16); + } + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + this.zOne = this.z === this.curve.one; + } + inherits(JPoint, Base.BasePoint); + ShortCurve.prototype.jpoint = function jpoint(x, y, z) { + return new JPoint(this, x, y, z); + }; + JPoint.prototype.toP = function toP() { + if (this.isInfinity()) + return this.curve.point(null, null); + var zinv = this.z.redInvm(); + var zinv2 = zinv.redSqr(); + var ax = this.x.redMul(zinv2); + var ay = this.y.redMul(zinv2).redMul(zinv); + return this.curve.point(ax, ay); + }; + JPoint.prototype.neg = function neg() { + return this.curve.jpoint(this.x, this.y.redNeg(), this.z); + }; + JPoint.prototype.add = function add2(p) { + if (this.isInfinity()) + return p; + if (p.isInfinity()) + return this; + var pz2 = p.z.redSqr(); + var z2 = this.z.redSqr(); + var u1 = this.x.redMul(pz2); + var u2 = p.x.redMul(z2); + var s1 = this.y.redMul(pz2.redMul(p.z)); + var s2 = p.y.redMul(z2.redMul(this.z)); + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(p.z).redMul(h); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.mixedAdd = function mixedAdd(p) { + if (this.isInfinity()) + return p.toJ(); + if (p.isInfinity()) + return this; + var z2 = this.z.redSqr(); + var u1 = this.x; + var u2 = p.x.redMul(z2); + var s1 = this.y; + var s2 = p.y.redMul(z2).redMul(this.z); + var h = u1.redSub(u2); + var r = s1.redSub(s2); + if (h.cmpn(0) === 0) { + if (r.cmpn(0) !== 0) + return this.curve.jpoint(null, null, null); + else + return this.dbl(); + } + var h2 = h.redSqr(); + var h3 = h2.redMul(h); + var v = u1.redMul(h2); + var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); + var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); + var nz = this.z.redMul(h); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.dblp = function dblp(pow) { + if (pow === 0) + return this; + if (this.isInfinity()) + return this; + if (!pow) + return this.dbl(); + var i; + if (this.curve.zeroA || this.curve.threeA) { + var r = this; + for (i = 0; i < pow; i++) + r = r.dbl(); + return r; + } + var a = this.curve.a; + var tinv = this.curve.tinv; + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + var jyd = jy.redAdd(jy); + for (i = 0; i < pow; i++) { + var jx2 = jx.redSqr(); + var jyd2 = jyd.redSqr(); + var jyd4 = jyd2.redSqr(); + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + var t1 = jx.redMul(jyd2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + var dny = c.redMul(t2); + dny = dny.redIAdd(dny).redISub(jyd4); + var nz = jyd.redMul(jz); + if (i + 1 < pow) + jz4 = jz4.redMul(jyd4); + jx = nx; + jz = nz; + jyd = dny; + } + return this.curve.jpoint(jx, jyd.redMul(tinv), jz); + }; + JPoint.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + if (this.curve.zeroA) + return this._zeroDbl(); + else if (this.curve.threeA) + return this._threeDbl(); + else + return this._dbl(); + }; + JPoint.prototype._zeroDbl = function _zeroDbl() { + var nx; + var ny; + var nz; + if (this.zOne) { + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var yyyy = yy.redSqr(); + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + var m = xx.redAdd(xx).redIAdd(xx); + var t = m.redSqr().redISub(s).redISub(s); + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + nx = t; + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + nz = this.y.redAdd(this.y); + } else { + var a = this.x.redSqr(); + var b = this.y.redSqr(); + var c = b.redSqr(); + var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); + d = d.redIAdd(d); + var e = a.redAdd(a).redIAdd(a); + var f = e.redSqr(); + var c8 = c.redIAdd(c); + c8 = c8.redIAdd(c8); + c8 = c8.redIAdd(c8); + nx = f.redISub(d).redISub(d); + ny = e.redMul(d.redISub(nx)).redISub(c8); + nz = this.y.redMul(this.z); + nz = nz.redIAdd(nz); + } + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype._threeDbl = function _threeDbl() { + var nx; + var ny; + var nz; + if (this.zOne) { + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var yyyy = yy.redSqr(); + var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + s = s.redIAdd(s); + var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); + var t = m.redSqr().redISub(s).redISub(s); + nx = t; + var yyyy8 = yyyy.redIAdd(yyyy); + yyyy8 = yyyy8.redIAdd(yyyy8); + yyyy8 = yyyy8.redIAdd(yyyy8); + ny = m.redMul(s.redISub(t)).redISub(yyyy8); + nz = this.y.redAdd(this.y); + } else { + var delta = this.z.redSqr(); + var gamma = this.y.redSqr(); + var beta = this.x.redMul(gamma); + var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); + alpha = alpha.redAdd(alpha).redIAdd(alpha); + var beta4 = beta.redIAdd(beta); + beta4 = beta4.redIAdd(beta4); + var beta8 = beta4.redAdd(beta4); + nx = alpha.redSqr().redISub(beta8); + nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); + var ggamma8 = gamma.redSqr(); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ggamma8 = ggamma8.redIAdd(ggamma8); + ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); + } + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype._dbl = function _dbl() { + var a = this.curve.a; + var jx = this.x; + var jy = this.y; + var jz = this.z; + var jz4 = jz.redSqr().redSqr(); + var jx2 = jx.redSqr(); + var jy2 = jy.redSqr(); + var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); + var jxd4 = jx.redAdd(jx); + jxd4 = jxd4.redIAdd(jxd4); + var t1 = jxd4.redMul(jy2); + var nx = c.redSqr().redISub(t1.redAdd(t1)); + var t2 = t1.redISub(nx); + var jyd8 = jy2.redSqr(); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + jyd8 = jyd8.redIAdd(jyd8); + var ny = c.redMul(t2).redISub(jyd8); + var nz = jy.redAdd(jy).redMul(jz); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.trpl = function trpl() { + if (!this.curve.zeroA) + return this.dbl().add(this); + var xx = this.x.redSqr(); + var yy = this.y.redSqr(); + var zz = this.z.redSqr(); + var yyyy = yy.redSqr(); + var m = xx.redAdd(xx).redIAdd(xx); + var mm = m.redSqr(); + var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); + e = e.redIAdd(e); + e = e.redAdd(e).redIAdd(e); + e = e.redISub(mm); + var ee = e.redSqr(); + var t = yyyy.redIAdd(yyyy); + t = t.redIAdd(t); + t = t.redIAdd(t); + t = t.redIAdd(t); + var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); + var yyu4 = yy.redMul(u); + yyu4 = yyu4.redIAdd(yyu4); + yyu4 = yyu4.redIAdd(yyu4); + var nx = this.x.redMul(ee).redISub(yyu4); + nx = nx.redIAdd(nx); + nx = nx.redIAdd(nx); + var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + ny = ny.redIAdd(ny); + var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); + return this.curve.jpoint(nx, ny, nz); + }; + JPoint.prototype.mul = function mul(k, kbase) { + k = new BN(k, kbase); + return this.curve._wnafMul(this, k); + }; + JPoint.prototype.eq = function eq(p) { + if (p.type === "affine") + return this.eq(p.toJ()); + if (this === p) + return true; + var z2 = this.z.redSqr(); + var pz2 = p.z.redSqr(); + if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) + return false; + var z3 = z2.redMul(this.z); + var pz3 = pz2.redMul(p.z); + return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; + }; + JPoint.prototype.eqXToP = function eqXToP(x) { + var zs = this.z.redSqr(); + var rx = x.toRed(this.curve.red).redMul(zs); + if (this.x.cmp(rx) === 0) + return true; + var xc = x.clone(); + var t = this.curve.redN.redMul(zs); + for (; ; ) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } + }; + JPoint.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + JPoint.prototype.isInfinity = function isInfinity() { + return this.z.cmpn(0) === 0; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/mont.js +var require_mont = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/mont.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var inherits = require_inherits(); + var Base = require_base2(); + var utils = require_utils22(); + function MontCurve(conf) { + Base.call(this, "mont", conf); + this.a = new BN(conf.a, 16).toRed(this.red); + this.b = new BN(conf.b, 16).toRed(this.red); + this.i4 = new BN(4).toRed(this.red).redInvm(); + this.two = new BN(2).toRed(this.red); + this.a24 = this.i4.redMul(this.a.redAdd(this.two)); + } + inherits(MontCurve, Base); + module2.exports = MontCurve; + MontCurve.prototype.validate = function validate(point) { + var x = point.normalize().x; + var x2 = x.redSqr(); + var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); + var y = rhs.redSqrt(); + return y.redSqr().cmp(rhs) === 0; + }; + function Point(curve, x, z) { + Base.BasePoint.call(this, curve, "projective"); + if (x === null && z === null) { + this.x = this.curve.one; + this.z = this.curve.zero; + } else { + this.x = new BN(x, 16); + this.z = new BN(z, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + } + } + inherits(Point, Base.BasePoint); + MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { + return this.point(utils.toArray(bytes, enc), 1); + }; + MontCurve.prototype.point = function point(x, z) { + return new Point(this, x, z); + }; + MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); + }; + Point.prototype.precompute = function precompute() { + }; + Point.prototype._encode = function _encode() { + return this.getX().toArray("be", this.curve.p.byteLength()); + }; + Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1] || curve.one); + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.z.cmpn(0) === 0; + }; + Point.prototype.dbl = function dbl() { + var a = this.x.redAdd(this.z); + var aa = a.redSqr(); + var b = this.x.redSub(this.z); + var bb = b.redSqr(); + var c = aa.redSub(bb); + var nx = aa.redMul(bb); + var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); + return this.curve.point(nx, nz); + }; + Point.prototype.add = function add2() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.diffAdd = function diffAdd(p, diff) { + var a = this.x.redAdd(this.z); + var b = this.x.redSub(this.z); + var c = p.x.redAdd(p.z); + var d = p.x.redSub(p.z); + var da = d.redMul(a); + var cb = c.redMul(b); + var nx = diff.z.redMul(da.redAdd(cb).redSqr()); + var nz = diff.x.redMul(da.redISub(cb).redSqr()); + return this.curve.point(nx, nz); + }; + Point.prototype.mul = function mul(k) { + var t = k.clone(); + var a = this; + var b = this.curve.point(null, null); + var c = this; + for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) + bits.push(t.andln(1)); + for (var i = bits.length - 1; i >= 0; i--) { + if (bits[i] === 0) { + a = a.diffAdd(b, c); + b = b.dbl(); + } else { + b = a.diffAdd(b, c); + a = a.dbl(); + } + } + return b; + }; + Point.prototype.mulAdd = function mulAdd() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.jumlAdd = function jumlAdd() { + throw new Error("Not supported on Montgomery curve"); + }; + Point.prototype.eq = function eq(other) { + return this.getX().cmp(other.getX()) === 0; + }; + Point.prototype.normalize = function normalize() { + this.x = this.x.redMul(this.z.redInvm()); + this.z = this.curve.one; + return this; + }; + Point.prototype.getX = function getX() { + this.normalize(); + return this.x.fromRed(); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/edwards.js +var require_edwards2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/edwards.js"(exports2, module2) { + "use strict"; + var utils = require_utils22(); + var BN = require_bn(); + var inherits = require_inherits(); + var Base = require_base2(); + var assert = utils.assert; + function EdwardsCurve(conf) { + this.twisted = (conf.a | 0) !== 1; + this.mOneA = this.twisted && (conf.a | 0) === -1; + this.extended = this.mOneA; + Base.call(this, "edwards", conf); + this.a = new BN(conf.a, 16).umod(this.red.m); + this.a = this.a.toRed(this.red); + this.c = new BN(conf.c, 16).toRed(this.red); + this.c2 = this.c.redSqr(); + this.d = new BN(conf.d, 16).toRed(this.red); + this.dd = this.d.redAdd(this.d); + assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); + this.oneC = (conf.c | 0) === 1; + } + inherits(EdwardsCurve, Base); + module2.exports = EdwardsCurve; + EdwardsCurve.prototype._mulA = function _mulA(num) { + if (this.mOneA) + return num.redNeg(); + else + return this.a.redMul(num); + }; + EdwardsCurve.prototype._mulC = function _mulC(num) { + if (this.oneC) + return num; + else + return this.c.redMul(num); + }; + EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { + return this.point(x, y, z, t); + }; + EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { + x = new BN(x, 16); + if (!x.red) + x = x.toRed(this.red); + var x2 = x.redSqr(); + var rhs = this.c2.redSub(this.a.redMul(x2)); + var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); + var y2 = rhs.redMul(lhs.redInvm()); + var y = y2.redSqrt(); + if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + var isOdd = y.fromRed().isOdd(); + if (odd && !isOdd || !odd && isOdd) + y = y.redNeg(); + return this.point(x, y); + }; + EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { + y = new BN(y, 16); + if (!y.red) + y = y.toRed(this.red); + var y2 = y.redSqr(); + var lhs = y2.redSub(this.c2); + var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); + var x2 = lhs.redMul(rhs.redInvm()); + if (x2.cmp(this.zero) === 0) { + if (odd) + throw new Error("invalid point"); + else + return this.point(this.zero, y); + } + var x = x2.redSqrt(); + if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) + throw new Error("invalid point"); + if (x.fromRed().isOdd() !== odd) + x = x.redNeg(); + return this.point(x, y); + }; + EdwardsCurve.prototype.validate = function validate(point) { + if (point.isInfinity()) + return true; + point.normalize(); + var x2 = point.x.redSqr(); + var y2 = point.y.redSqr(); + var lhs = x2.redMul(this.a).redAdd(y2); + var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); + return lhs.cmp(rhs) === 0; + }; + function Point(curve, x, y, z, t) { + Base.BasePoint.call(this, curve, "projective"); + if (x === null && y === null && z === null) { + this.x = this.curve.zero; + this.y = this.curve.one; + this.z = this.curve.one; + this.t = this.curve.zero; + this.zOne = true; + } else { + this.x = new BN(x, 16); + this.y = new BN(y, 16); + this.z = z ? new BN(z, 16) : this.curve.one; + this.t = t && new BN(t, 16); + if (!this.x.red) + this.x = this.x.toRed(this.curve.red); + if (!this.y.red) + this.y = this.y.toRed(this.curve.red); + if (!this.z.red) + this.z = this.z.toRed(this.curve.red); + if (this.t && !this.t.red) + this.t = this.t.toRed(this.curve.red); + this.zOne = this.z === this.curve.one; + if (this.curve.extended && !this.t) { + this.t = this.x.redMul(this.y); + if (!this.zOne) + this.t = this.t.redMul(this.z.redInvm()); + } + } + } + inherits(Point, Base.BasePoint); + EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { + return Point.fromJSON(this, obj); + }; + EdwardsCurve.prototype.point = function point(x, y, z, t) { + return new Point(this, x, y, z, t); + }; + Point.fromJSON = function fromJSON(curve, obj) { + return new Point(curve, obj[0], obj[1], obj[2]); + }; + Point.prototype.inspect = function inspect() { + if (this.isInfinity()) + return ""; + return ""; + }; + Point.prototype.isInfinity = function isInfinity() { + return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0); + }; + Point.prototype._extDbl = function _extDbl() { + var a = this.x.redSqr(); + var b = this.y.redSqr(); + var c = this.z.redSqr(); + c = c.redIAdd(c); + var d = this.curve._mulA(a); + var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); + var g = d.redAdd(b); + var f = g.redSub(c); + var h = d.redSub(b); + var nx = e.redMul(f); + var ny = g.redMul(h); + var nt = e.redMul(h); + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); + }; + Point.prototype._projDbl = function _projDbl() { + var b = this.x.redAdd(this.y).redSqr(); + var c = this.x.redSqr(); + var d = this.y.redSqr(); + var nx; + var ny; + var nz; + var e; + var h; + var j; + if (this.curve.twisted) { + e = this.curve._mulA(c); + var f = e.redAdd(d); + if (this.zOne) { + nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); + ny = f.redMul(e.redSub(d)); + nz = f.redSqr().redSub(f).redSub(f); + } else { + h = this.z.redSqr(); + j = f.redSub(h).redISub(h); + nx = b.redSub(c).redISub(d).redMul(j); + ny = f.redMul(e.redSub(d)); + nz = f.redMul(j); + } + } else { + e = c.redAdd(d); + h = this.curve._mulC(this.z).redSqr(); + j = e.redSub(h).redSub(h); + nx = this.curve._mulC(b.redISub(e)).redMul(j); + ny = this.curve._mulC(e).redMul(c.redISub(d)); + nz = e.redMul(j); + } + return this.curve.point(nx, ny, nz); + }; + Point.prototype.dbl = function dbl() { + if (this.isInfinity()) + return this; + if (this.curve.extended) + return this._extDbl(); + else + return this._projDbl(); + }; + Point.prototype._extAdd = function _extAdd(p) { + var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); + var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); + var c = this.t.redMul(this.curve.dd).redMul(p.t); + var d = this.z.redMul(p.z.redAdd(p.z)); + var e = b.redSub(a); + var f = d.redSub(c); + var g = d.redAdd(c); + var h = b.redAdd(a); + var nx = e.redMul(f); + var ny = g.redMul(h); + var nt = e.redMul(h); + var nz = f.redMul(g); + return this.curve.point(nx, ny, nz, nt); + }; + Point.prototype._projAdd = function _projAdd(p) { + var a = this.z.redMul(p.z); + var b = a.redSqr(); + var c = this.x.redMul(p.x); + var d = this.y.redMul(p.y); + var e = this.curve.d.redMul(c).redMul(d); + var f = b.redSub(e); + var g = b.redAdd(e); + var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); + var nx = a.redMul(f).redMul(tmp); + var ny; + var nz; + if (this.curve.twisted) { + ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); + nz = f.redMul(g); + } else { + ny = a.redMul(g).redMul(d.redSub(c)); + nz = this.curve._mulC(f).redMul(g); + } + return this.curve.point(nx, ny, nz); + }; + Point.prototype.add = function add2(p) { + if (this.isInfinity()) + return p; + if (p.isInfinity()) + return this; + if (this.curve.extended) + return this._extAdd(p); + else + return this._projAdd(p); + }; + Point.prototype.mul = function mul(k) { + if (this._hasDoubles(k)) + return this.curve._fixedNafMul(this, k); + else + return this.curve._wnafMul(this, k); + }; + Point.prototype.mulAdd = function mulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false); + }; + Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { + return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true); + }; + Point.prototype.normalize = function normalize() { + if (this.zOne) + return this; + var zi = this.z.redInvm(); + this.x = this.x.redMul(zi); + this.y = this.y.redMul(zi); + if (this.t) + this.t = this.t.redMul(zi); + this.z = this.curve.one; + this.zOne = true; + return this; + }; + Point.prototype.neg = function neg() { + return this.curve.point( + this.x.redNeg(), + this.y, + this.z, + this.t && this.t.redNeg() + ); + }; + Point.prototype.getX = function getX() { + this.normalize(); + return this.x.fromRed(); + }; + Point.prototype.getY = function getY() { + this.normalize(); + return this.y.fromRed(); + }; + Point.prototype.eq = function eq(other) { + return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0; + }; + Point.prototype.eqXToP = function eqXToP(x) { + var rx = x.toRed(this.curve.red).redMul(this.z); + if (this.x.cmp(rx) === 0) + return true; + var xc = x.clone(); + var t = this.curve.redN.redMul(this.z); + for (; ; ) { + xc.iadd(this.curve.n); + if (xc.cmp(this.curve.p) >= 0) + return false; + rx.redIAdd(t); + if (this.x.cmp(rx) === 0) + return true; + } + }; + Point.prototype.toP = Point.prototype.normalize; + Point.prototype.mixedAdd = Point.prototype.add; + } +}); + +// node_modules/elliptic/lib/elliptic/curve/index.js +var require_curve2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/curve/index.js"(exports2) { + "use strict"; + var curve = exports2; + curve.base = require_base2(); + curve.short = require_short(); + curve.mont = require_mont(); + curve.edwards = require_edwards2(); + } +}); + +// node_modules/hash.js/lib/hash/utils.js +var require_utils23 = __commonJS({ + "node_modules/hash.js/lib/hash/utils.js"(exports2) { + "use strict"; + var assert = require_minimalistic_assert(); + var inherits = require_inherits(); + exports2.inherits = inherits; + function isSurrogatePair(msg, i) { + if ((msg.charCodeAt(i) & 64512) !== 55296) { + return false; + } + if (i < 0 || i + 1 >= msg.length) { + return false; + } + return (msg.charCodeAt(i + 1) & 64512) === 56320; + } + function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg === "string") { + if (!enc) { + var p = 0; + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + if (c < 128) { + res[p++] = c; + } else if (c < 2048) { + res[p++] = c >> 6 | 192; + res[p++] = c & 63 | 128; + } else if (isSurrogatePair(msg, i)) { + c = 65536 + ((c & 1023) << 10) + (msg.charCodeAt(++i) & 1023); + res[p++] = c >> 18 | 240; + res[p++] = c >> 12 & 63 | 128; + res[p++] = c >> 6 & 63 | 128; + res[p++] = c & 63 | 128; + } else { + res[p++] = c >> 12 | 224; + res[p++] = c >> 6 & 63 | 128; + res[p++] = c & 63 | 128; + } + } + } else if (enc === "hex") { + msg = msg.replace(/[^a-z0-9]+/ig, ""); + if (msg.length % 2 !== 0) + msg = "0" + msg; + for (i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } + } else { + for (i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + } + return res; + } + exports2.toArray = toArray; + function toHex3(msg) { + var res = ""; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; + } + exports2.toHex = toHex3; + function htonl(w) { + var res = w >>> 24 | w >>> 8 & 65280 | w << 8 & 16711680 | (w & 255) << 24; + return res >>> 0; + } + exports2.htonl = htonl; + function toHex32(msg, endian) { + var res = ""; + for (var i = 0; i < msg.length; i++) { + var w = msg[i]; + if (endian === "little") + w = htonl(w); + res += zero8(w.toString(16)); + } + return res; + } + exports2.toHex32 = toHex32; + function zero2(word) { + if (word.length === 1) + return "0" + word; + else + return word; + } + exports2.zero2 = zero2; + function zero8(word) { + if (word.length === 7) + return "0" + word; + else if (word.length === 6) + return "00" + word; + else if (word.length === 5) + return "000" + word; + else if (word.length === 4) + return "0000" + word; + else if (word.length === 3) + return "00000" + word; + else if (word.length === 2) + return "000000" + word; + else if (word.length === 1) + return "0000000" + word; + else + return word; + } + exports2.zero8 = zero8; + function join32(msg, start, end, endian) { + var len = end - start; + assert(len % 4 === 0); + var res = new Array(len / 4); + for (var i = 0, k = start; i < res.length; i++, k += 4) { + var w; + if (endian === "big") + w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3]; + else + w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k]; + res[i] = w >>> 0; + } + return res; + } + exports2.join32 = join32; + function split32(msg, endian) { + var res = new Array(msg.length * 4); + for (var i = 0, k = 0; i < msg.length; i++, k += 4) { + var m = msg[i]; + if (endian === "big") { + res[k] = m >>> 24; + res[k + 1] = m >>> 16 & 255; + res[k + 2] = m >>> 8 & 255; + res[k + 3] = m & 255; + } else { + res[k + 3] = m >>> 24; + res[k + 2] = m >>> 16 & 255; + res[k + 1] = m >>> 8 & 255; + res[k] = m & 255; + } + } + return res; + } + exports2.split32 = split32; + function rotr32(w, b) { + return w >>> b | w << 32 - b; + } + exports2.rotr32 = rotr32; + function rotl32(w, b) { + return w << b | w >>> 32 - b; + } + exports2.rotl32 = rotl32; + function sum32(a, b) { + return a + b >>> 0; + } + exports2.sum32 = sum32; + function sum32_3(a, b, c) { + return a + b + c >>> 0; + } + exports2.sum32_3 = sum32_3; + function sum32_4(a, b, c, d) { + return a + b + c + d >>> 0; + } + exports2.sum32_4 = sum32_4; + function sum32_5(a, b, c, d, e) { + return a + b + c + d + e >>> 0; + } + exports2.sum32_5 = sum32_5; + function sum64(buf, pos, ah, al) { + var bh = buf[pos]; + var bl = buf[pos + 1]; + var lo = al + bl >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + buf[pos] = hi >>> 0; + buf[pos + 1] = lo; + } + exports2.sum64 = sum64; + function sum64_hi(ah, al, bh, bl) { + var lo = al + bl >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + return hi >>> 0; + } + exports2.sum64_hi = sum64_hi; + function sum64_lo(ah, al, bh, bl) { + var lo = al + bl; + return lo >>> 0; + } + exports2.sum64_lo = sum64_lo; + function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { + var carry = 0; + var lo = al; + lo = lo + bl >>> 0; + carry += lo < al ? 1 : 0; + lo = lo + cl >>> 0; + carry += lo < cl ? 1 : 0; + lo = lo + dl >>> 0; + carry += lo < dl ? 1 : 0; + var hi = ah + bh + ch + dh + carry; + return hi >>> 0; + } + exports2.sum64_4_hi = sum64_4_hi; + function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { + var lo = al + bl + cl + dl; + return lo >>> 0; + } + exports2.sum64_4_lo = sum64_4_lo; + function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var carry = 0; + var lo = al; + lo = lo + bl >>> 0; + carry += lo < al ? 1 : 0; + lo = lo + cl >>> 0; + carry += lo < cl ? 1 : 0; + lo = lo + dl >>> 0; + carry += lo < dl ? 1 : 0; + lo = lo + el >>> 0; + carry += lo < el ? 1 : 0; + var hi = ah + bh + ch + dh + eh + carry; + return hi >>> 0; + } + exports2.sum64_5_hi = sum64_5_hi; + function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var lo = al + bl + cl + dl + el; + return lo >>> 0; + } + exports2.sum64_5_lo = sum64_5_lo; + function rotr64_hi(ah, al, num) { + var r = al << 32 - num | ah >>> num; + return r >>> 0; + } + exports2.rotr64_hi = rotr64_hi; + function rotr64_lo(ah, al, num) { + var r = ah << 32 - num | al >>> num; + return r >>> 0; + } + exports2.rotr64_lo = rotr64_lo; + function shr64_hi(ah, al, num) { + return ah >>> num; + } + exports2.shr64_hi = shr64_hi; + function shr64_lo(ah, al, num) { + var r = ah << 32 - num | al >>> num; + return r >>> 0; + } + exports2.shr64_lo = shr64_lo; + } +}); + +// node_modules/hash.js/lib/hash/common.js +var require_common5 = __commonJS({ + "node_modules/hash.js/lib/hash/common.js"(exports2) { + "use strict"; + var utils = require_utils23(); + var assert = require_minimalistic_assert(); + function BlockHash() { + this.pending = null; + this.pendingTotal = 0; + this.blockSize = this.constructor.blockSize; + this.outSize = this.constructor.outSize; + this.hmacStrength = this.constructor.hmacStrength; + this.padLength = this.constructor.padLength / 8; + this.endian = "big"; + this._delta8 = this.blockSize / 8; + this._delta32 = this.blockSize / 32; + } + exports2.BlockHash = BlockHash; + BlockHash.prototype.update = function update(msg, enc) { + msg = utils.toArray(msg, enc); + if (!this.pending) + this.pending = msg; + else + this.pending = this.pending.concat(msg); + this.pendingTotal += msg.length; + if (this.pending.length >= this._delta8) { + msg = this.pending; + var r = msg.length % this._delta8; + this.pending = msg.slice(msg.length - r, msg.length); + if (this.pending.length === 0) + this.pending = null; + msg = utils.join32(msg, 0, msg.length - r, this.endian); + for (var i = 0; i < msg.length; i += this._delta32) + this._update(msg, i, i + this._delta32); + } + return this; + }; + BlockHash.prototype.digest = function digest(enc) { + this.update(this._pad()); + assert(this.pending === null); + return this._digest(enc); + }; + BlockHash.prototype._pad = function pad() { + var len = this.pendingTotal; + var bytes = this._delta8; + var k = bytes - (len + this.padLength) % bytes; + var res = new Array(k + this.padLength); + res[0] = 128; + for (var i = 1; i < k; i++) + res[i] = 0; + len <<= 3; + if (this.endian === "big") { + for (var t = 8; t < this.padLength; t++) + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = len >>> 24 & 255; + res[i++] = len >>> 16 & 255; + res[i++] = len >>> 8 & 255; + res[i++] = len & 255; + } else { + res[i++] = len & 255; + res[i++] = len >>> 8 & 255; + res[i++] = len >>> 16 & 255; + res[i++] = len >>> 24 & 255; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + for (t = 8; t < this.padLength; t++) + res[i++] = 0; + } + return res; + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/common.js +var require_common6 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/common.js"(exports2) { + "use strict"; + var utils = require_utils23(); + var rotr32 = utils.rotr32; + function ft_1(s, x, y, z) { + if (s === 0) + return ch32(x, y, z); + if (s === 1 || s === 3) + return p32(x, y, z); + if (s === 2) + return maj32(x, y, z); + } + exports2.ft_1 = ft_1; + function ch32(x, y, z) { + return x & y ^ ~x & z; + } + exports2.ch32 = ch32; + function maj32(x, y, z) { + return x & y ^ x & z ^ y & z; + } + exports2.maj32 = maj32; + function p32(x, y, z) { + return x ^ y ^ z; + } + exports2.p32 = p32; + function s0_256(x) { + return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); + } + exports2.s0_256 = s0_256; + function s1_256(x) { + return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); + } + exports2.s1_256 = s1_256; + function g0_256(x) { + return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3; + } + exports2.g0_256 = g0_256; + function g1_256(x) { + return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10; + } + exports2.g1_256 = g1_256; + } +}); + +// node_modules/hash.js/lib/hash/sha/1.js +var require__ = __commonJS({ + "node_modules/hash.js/lib/hash/sha/1.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var common = require_common5(); + var shaCommon = require_common6(); + var rotl32 = utils.rotl32; + var sum32 = utils.sum32; + var sum32_5 = utils.sum32_5; + var ft_1 = shaCommon.ft_1; + var BlockHash = common.BlockHash; + var sha1_K = [ + 1518500249, + 1859775393, + 2400959708, + 3395469782 + ]; + function SHA1() { + if (!(this instanceof SHA1)) + return new SHA1(); + BlockHash.call(this); + this.h = [ + 1732584193, + 4023233417, + 2562383102, + 271733878, + 3285377520 + ]; + this.W = new Array(80); + } + utils.inherits(SHA1, BlockHash); + module2.exports = SHA1; + SHA1.blockSize = 512; + SHA1.outSize = 160; + SHA1.hmacStrength = 80; + SHA1.padLength = 64; + SHA1.prototype._update = function _update(msg, start) { + var W = this.W; + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + for (i = 0; i < W.length; i++) { + var s = ~~(i / 20); + var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); + e = d; + d = c; + c = rotl32(b, 30); + b = a; + a = t; + } + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + }; + SHA1.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/256.js +var require__2 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/256.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var common = require_common5(); + var shaCommon = require_common6(); + var assert = require_minimalistic_assert(); + var sum32 = utils.sum32; + var sum32_4 = utils.sum32_4; + var sum32_5 = utils.sum32_5; + var ch32 = shaCommon.ch32; + var maj32 = shaCommon.maj32; + var s0_256 = shaCommon.s0_256; + var s1_256 = shaCommon.s1_256; + var g0_256 = shaCommon.g0_256; + var g1_256 = shaCommon.g1_256; + var BlockHash = common.BlockHash; + var sha256_K = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + function SHA256() { + if (!(this instanceof SHA256)) + return new SHA256(); + BlockHash.call(this); + this.h = [ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]; + this.k = sha256_K; + this.W = new Array(64); + } + utils.inherits(SHA256, BlockHash); + module2.exports = SHA256; + SHA256.blockSize = 512; + SHA256.outSize = 256; + SHA256.hmacStrength = 192; + SHA256.padLength = 64; + SHA256.prototype._update = function _update(msg, start) { + var W = this.W; + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + var f = this.h[5]; + var g = this.h[6]; + var h = this.h[7]; + assert(this.k.length === W.length); + for (i = 0; i < W.length; i++) { + var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); + var T2 = sum32(s0_256(a), maj32(a, b, c)); + h = g; + g = f; + f = e; + e = sum32(d, T1); + d = c; + c = b; + b = a; + a = sum32(T1, T2); + } + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + this.h[5] = sum32(this.h[5], f); + this.h[6] = sum32(this.h[6], g); + this.h[7] = sum32(this.h[7], h); + }; + SHA256.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/224.js +var require__3 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/224.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var SHA256 = require__2(); + function SHA224() { + if (!(this instanceof SHA224)) + return new SHA224(); + SHA256.call(this); + this.h = [ + 3238371032, + 914150663, + 812702999, + 4144912697, + 4290775857, + 1750603025, + 1694076839, + 3204075428 + ]; + } + utils.inherits(SHA224, SHA256); + module2.exports = SHA224; + SHA224.blockSize = 512; + SHA224.outSize = 224; + SHA224.hmacStrength = 192; + SHA224.padLength = 64; + SHA224.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h.slice(0, 7), "big"); + else + return utils.split32(this.h.slice(0, 7), "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha/512.js +var require__4 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/512.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var common = require_common5(); + var assert = require_minimalistic_assert(); + var rotr64_hi = utils.rotr64_hi; + var rotr64_lo = utils.rotr64_lo; + var shr64_hi = utils.shr64_hi; + var shr64_lo = utils.shr64_lo; + var sum64 = utils.sum64; + var sum64_hi = utils.sum64_hi; + var sum64_lo = utils.sum64_lo; + var sum64_4_hi = utils.sum64_4_hi; + var sum64_4_lo = utils.sum64_4_lo; + var sum64_5_hi = utils.sum64_5_hi; + var sum64_5_lo = utils.sum64_5_lo; + var BlockHash = common.BlockHash; + var sha512_K = [ + 1116352408, + 3609767458, + 1899447441, + 602891725, + 3049323471, + 3964484399, + 3921009573, + 2173295548, + 961987163, + 4081628472, + 1508970993, + 3053834265, + 2453635748, + 2937671579, + 2870763221, + 3664609560, + 3624381080, + 2734883394, + 310598401, + 1164996542, + 607225278, + 1323610764, + 1426881987, + 3590304994, + 1925078388, + 4068182383, + 2162078206, + 991336113, + 2614888103, + 633803317, + 3248222580, + 3479774868, + 3835390401, + 2666613458, + 4022224774, + 944711139, + 264347078, + 2341262773, + 604807628, + 2007800933, + 770255983, + 1495990901, + 1249150122, + 1856431235, + 1555081692, + 3175218132, + 1996064986, + 2198950837, + 2554220882, + 3999719339, + 2821834349, + 766784016, + 2952996808, + 2566594879, + 3210313671, + 3203337956, + 3336571891, + 1034457026, + 3584528711, + 2466948901, + 113926993, + 3758326383, + 338241895, + 168717936, + 666307205, + 1188179964, + 773529912, + 1546045734, + 1294757372, + 1522805485, + 1396182291, + 2643833823, + 1695183700, + 2343527390, + 1986661051, + 1014477480, + 2177026350, + 1206759142, + 2456956037, + 344077627, + 2730485921, + 1290863460, + 2820302411, + 3158454273, + 3259730800, + 3505952657, + 3345764771, + 106217008, + 3516065817, + 3606008344, + 3600352804, + 1432725776, + 4094571909, + 1467031594, + 275423344, + 851169720, + 430227734, + 3100823752, + 506948616, + 1363258195, + 659060556, + 3750685593, + 883997877, + 3785050280, + 958139571, + 3318307427, + 1322822218, + 3812723403, + 1537002063, + 2003034995, + 1747873779, + 3602036899, + 1955562222, + 1575990012, + 2024104815, + 1125592928, + 2227730452, + 2716904306, + 2361852424, + 442776044, + 2428436474, + 593698344, + 2756734187, + 3733110249, + 3204031479, + 2999351573, + 3329325298, + 3815920427, + 3391569614, + 3928383900, + 3515267271, + 566280711, + 3940187606, + 3454069534, + 4118630271, + 4000239992, + 116418474, + 1914138554, + 174292421, + 2731055270, + 289380356, + 3203993006, + 460393269, + 320620315, + 685471733, + 587496836, + 852142971, + 1086792851, + 1017036298, + 365543100, + 1126000580, + 2618297676, + 1288033470, + 3409855158, + 1501505948, + 4234509866, + 1607167915, + 987167468, + 1816402316, + 1246189591 + ]; + function SHA512() { + if (!(this instanceof SHA512)) + return new SHA512(); + BlockHash.call(this); + this.h = [ + 1779033703, + 4089235720, + 3144134277, + 2227873595, + 1013904242, + 4271175723, + 2773480762, + 1595750129, + 1359893119, + 2917565137, + 2600822924, + 725511199, + 528734635, + 4215389547, + 1541459225, + 327033209 + ]; + this.k = sha512_K; + this.W = new Array(160); + } + utils.inherits(SHA512, BlockHash); + module2.exports = SHA512; + SHA512.blockSize = 1024; + SHA512.outSize = 512; + SHA512.hmacStrength = 192; + SHA512.padLength = 128; + SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { + var W = this.W; + for (var i = 0; i < 32; i++) + W[i] = msg[start + i]; + for (; i < W.length; i += 2) { + var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); + var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); + var c1_hi = W[i - 14]; + var c1_lo = W[i - 13]; + var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); + var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); + var c3_hi = W[i - 32]; + var c3_lo = W[i - 31]; + W[i] = sum64_4_hi( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo + ); + W[i + 1] = sum64_4_lo( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo + ); + } + }; + SHA512.prototype._update = function _update(msg, start) { + this._prepareBlock(msg, start); + var W = this.W; + var ah = this.h[0]; + var al = this.h[1]; + var bh = this.h[2]; + var bl = this.h[3]; + var ch = this.h[4]; + var cl = this.h[5]; + var dh = this.h[6]; + var dl = this.h[7]; + var eh = this.h[8]; + var el = this.h[9]; + var fh = this.h[10]; + var fl = this.h[11]; + var gh = this.h[12]; + var gl = this.h[13]; + var hh = this.h[14]; + var hl = this.h[15]; + assert(this.k.length === W.length); + for (var i = 0; i < W.length; i += 2) { + var c0_hi = hh; + var c0_lo = hl; + var c1_hi = s1_512_hi(eh, el); + var c1_lo = s1_512_lo(eh, el); + var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); + var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); + var c3_hi = this.k[i]; + var c3_lo = this.k[i + 1]; + var c4_hi = W[i]; + var c4_lo = W[i + 1]; + var T1_hi = sum64_5_hi( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo, + c4_hi, + c4_lo + ); + var T1_lo = sum64_5_lo( + c0_hi, + c0_lo, + c1_hi, + c1_lo, + c2_hi, + c2_lo, + c3_hi, + c3_lo, + c4_hi, + c4_lo + ); + c0_hi = s0_512_hi(ah, al); + c0_lo = s0_512_lo(ah, al); + c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); + c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); + var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); + var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + eh = sum64_hi(dh, dl, T1_hi, T1_lo); + el = sum64_lo(dl, dl, T1_hi, T1_lo); + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); + al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); + } + sum64(this.h, 0, ah, al); + sum64(this.h, 2, bh, bl); + sum64(this.h, 4, ch, cl); + sum64(this.h, 6, dh, dl); + sum64(this.h, 8, eh, el); + sum64(this.h, 10, fh, fl); + sum64(this.h, 12, gh, gl); + sum64(this.h, 14, hh, hl); + }; + SHA512.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "big"); + else + return utils.split32(this.h, "big"); + }; + function ch64_hi(xh, xl, yh, yl, zh) { + var r = xh & yh ^ ~xh & zh; + if (r < 0) + r += 4294967296; + return r; + } + function ch64_lo(xh, xl, yh, yl, zh, zl) { + var r = xl & yl ^ ~xl & zl; + if (r < 0) + r += 4294967296; + return r; + } + function maj64_hi(xh, xl, yh, yl, zh) { + var r = xh & yh ^ xh & zh ^ yh & zh; + if (r < 0) + r += 4294967296; + return r; + } + function maj64_lo(xh, xl, yh, yl, zh, zl) { + var r = xl & yl ^ xl & zl ^ yl & zl; + if (r < 0) + r += 4294967296; + return r; + } + function s0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 28); + var c1_hi = rotr64_hi(xl, xh, 2); + var c2_hi = rotr64_hi(xl, xh, 7); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function s0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 28); + var c1_lo = rotr64_lo(xl, xh, 2); + var c2_lo = rotr64_lo(xl, xh, 7); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function s1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 14); + var c1_hi = rotr64_hi(xh, xl, 18); + var c2_hi = rotr64_hi(xl, xh, 9); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function s1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 14); + var c1_lo = rotr64_lo(xh, xl, 18); + var c2_lo = rotr64_lo(xl, xh, 9); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function g0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 1); + var c1_hi = rotr64_hi(xh, xl, 8); + var c2_hi = shr64_hi(xh, xl, 7); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function g0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 1); + var c1_lo = rotr64_lo(xh, xl, 8); + var c2_lo = shr64_lo(xh, xl, 7); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + function g1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 19); + var c1_hi = rotr64_hi(xl, xh, 29); + var c2_hi = shr64_hi(xh, xl, 6); + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 4294967296; + return r; + } + function g1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 19); + var c1_lo = rotr64_lo(xl, xh, 29); + var c2_lo = shr64_lo(xh, xl, 6); + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 4294967296; + return r; + } + } +}); + +// node_modules/hash.js/lib/hash/sha/384.js +var require__5 = __commonJS({ + "node_modules/hash.js/lib/hash/sha/384.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var SHA512 = require__4(); + function SHA384() { + if (!(this instanceof SHA384)) + return new SHA384(); + SHA512.call(this); + this.h = [ + 3418070365, + 3238371032, + 1654270250, + 914150663, + 2438529370, + 812702999, + 355462360, + 4144912697, + 1731405415, + 4290775857, + 2394180231, + 1750603025, + 3675008525, + 1694076839, + 1203062813, + 3204075428 + ]; + } + utils.inherits(SHA384, SHA512); + module2.exports = SHA384; + SHA384.blockSize = 1024; + SHA384.outSize = 384; + SHA384.hmacStrength = 192; + SHA384.padLength = 128; + SHA384.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h.slice(0, 12), "big"); + else + return utils.split32(this.h.slice(0, 12), "big"); + }; + } +}); + +// node_modules/hash.js/lib/hash/sha.js +var require_sha = __commonJS({ + "node_modules/hash.js/lib/hash/sha.js"(exports2) { + "use strict"; + exports2.sha1 = require__(); + exports2.sha224 = require__3(); + exports2.sha256 = require__2(); + exports2.sha384 = require__5(); + exports2.sha512 = require__4(); + } +}); + +// node_modules/hash.js/lib/hash/ripemd.js +var require_ripemd = __commonJS({ + "node_modules/hash.js/lib/hash/ripemd.js"(exports2) { + "use strict"; + var utils = require_utils23(); + var common = require_common5(); + var rotl32 = utils.rotl32; + var sum32 = utils.sum32; + var sum32_3 = utils.sum32_3; + var sum32_4 = utils.sum32_4; + var BlockHash = common.BlockHash; + function RIPEMD160() { + if (!(this instanceof RIPEMD160)) + return new RIPEMD160(); + BlockHash.call(this); + this.h = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + this.endian = "little"; + } + utils.inherits(RIPEMD160, BlockHash); + exports2.ripemd160 = RIPEMD160; + RIPEMD160.blockSize = 512; + RIPEMD160.outSize = 160; + RIPEMD160.hmacStrength = 192; + RIPEMD160.padLength = 64; + RIPEMD160.prototype._update = function update(msg, start) { + var A = this.h[0]; + var B = this.h[1]; + var C = this.h[2]; + var D = this.h[3]; + var E = this.h[4]; + var Ah = A; + var Bh = B; + var Ch = C; + var Dh = D; + var Eh = E; + for (var j = 0; j < 80; j++) { + var T = sum32( + rotl32( + sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), + s[j] + ), + E + ); + A = E; + E = D; + D = rotl32(C, 10); + C = B; + B = T; + T = sum32( + rotl32( + sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), + sh[j] + ), + Eh + ); + Ah = Eh; + Eh = Dh; + Dh = rotl32(Ch, 10); + Ch = Bh; + Bh = T; + } + T = sum32_3(this.h[1], C, Dh); + this.h[1] = sum32_3(this.h[2], D, Eh); + this.h[2] = sum32_3(this.h[3], E, Ah); + this.h[3] = sum32_3(this.h[4], A, Bh); + this.h[4] = sum32_3(this.h[0], B, Ch); + this.h[0] = T; + }; + RIPEMD160.prototype._digest = function digest(enc) { + if (enc === "hex") + return utils.toHex32(this.h, "little"); + else + return utils.split32(this.h, "little"); + }; + function f(j, x, y, z) { + if (j <= 15) + return x ^ y ^ z; + else if (j <= 31) + return x & y | ~x & z; + else if (j <= 47) + return (x | ~y) ^ z; + else if (j <= 63) + return x & z | y & ~z; + else + return x ^ (y | ~z); + } + function K(j) { + if (j <= 15) + return 0; + else if (j <= 31) + return 1518500249; + else if (j <= 47) + return 1859775393; + else if (j <= 63) + return 2400959708; + else + return 2840853838; + } + function Kh(j) { + if (j <= 15) + return 1352829926; + else if (j <= 31) + return 1548603684; + else if (j <= 47) + return 1836072691; + else if (j <= 63) + return 2053994217; + else + return 0; + } + var r = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 7, + 4, + 13, + 1, + 10, + 6, + 15, + 3, + 12, + 0, + 9, + 5, + 2, + 14, + 11, + 8, + 3, + 10, + 14, + 4, + 9, + 15, + 8, + 1, + 2, + 7, + 0, + 6, + 13, + 11, + 5, + 12, + 1, + 9, + 11, + 10, + 0, + 8, + 12, + 4, + 13, + 3, + 7, + 15, + 14, + 5, + 6, + 2, + 4, + 0, + 5, + 9, + 7, + 12, + 2, + 10, + 14, + 1, + 3, + 8, + 11, + 6, + 15, + 13 + ]; + var rh = [ + 5, + 14, + 7, + 0, + 9, + 2, + 11, + 4, + 13, + 6, + 15, + 8, + 1, + 10, + 3, + 12, + 6, + 11, + 3, + 7, + 0, + 13, + 5, + 10, + 14, + 15, + 8, + 12, + 4, + 9, + 1, + 2, + 15, + 5, + 1, + 3, + 7, + 14, + 6, + 9, + 11, + 8, + 12, + 2, + 10, + 0, + 4, + 13, + 8, + 6, + 4, + 1, + 3, + 11, + 15, + 0, + 5, + 12, + 2, + 13, + 9, + 7, + 10, + 14, + 12, + 15, + 10, + 4, + 1, + 5, + 8, + 7, + 6, + 2, + 13, + 14, + 0, + 3, + 9, + 11 + ]; + var s = [ + 11, + 14, + 15, + 12, + 5, + 8, + 7, + 9, + 11, + 13, + 14, + 15, + 6, + 7, + 9, + 8, + 7, + 6, + 8, + 13, + 11, + 9, + 7, + 15, + 7, + 12, + 15, + 9, + 11, + 7, + 13, + 12, + 11, + 13, + 6, + 7, + 14, + 9, + 13, + 15, + 14, + 8, + 13, + 6, + 5, + 12, + 7, + 5, + 11, + 12, + 14, + 15, + 14, + 15, + 9, + 8, + 9, + 14, + 5, + 6, + 8, + 6, + 5, + 12, + 9, + 15, + 5, + 11, + 6, + 8, + 13, + 12, + 5, + 12, + 13, + 14, + 11, + 8, + 5, + 6 + ]; + var sh = [ + 8, + 9, + 9, + 11, + 13, + 15, + 15, + 5, + 7, + 7, + 8, + 11, + 14, + 14, + 12, + 6, + 9, + 13, + 15, + 7, + 12, + 8, + 9, + 11, + 7, + 7, + 12, + 7, + 6, + 15, + 13, + 11, + 9, + 7, + 15, + 11, + 8, + 6, + 6, + 14, + 12, + 13, + 5, + 14, + 13, + 13, + 7, + 5, + 15, + 5, + 8, + 11, + 14, + 14, + 6, + 14, + 6, + 9, + 12, + 9, + 12, + 5, + 15, + 8, + 8, + 5, + 12, + 9, + 12, + 5, + 14, + 6, + 8, + 13, + 6, + 5, + 15, + 13, + 11, + 11 + ]; + } +}); + +// node_modules/hash.js/lib/hash/hmac.js +var require_hmac2 = __commonJS({ + "node_modules/hash.js/lib/hash/hmac.js"(exports2, module2) { + "use strict"; + var utils = require_utils23(); + var assert = require_minimalistic_assert(); + function Hmac(hash, key, enc) { + if (!(this instanceof Hmac)) + return new Hmac(hash, key, enc); + this.Hash = hash; + this.blockSize = hash.blockSize / 8; + this.outSize = hash.outSize / 8; + this.inner = null; + this.outer = null; + this._init(utils.toArray(key, enc)); + } + module2.exports = Hmac; + Hmac.prototype._init = function init(key) { + if (key.length > this.blockSize) + key = new this.Hash().update(key).digest(); + assert(key.length <= this.blockSize); + for (var i = key.length; i < this.blockSize; i++) + key.push(0); + for (i = 0; i < key.length; i++) + key[i] ^= 54; + this.inner = new this.Hash().update(key); + for (i = 0; i < key.length; i++) + key[i] ^= 106; + this.outer = new this.Hash().update(key); + }; + Hmac.prototype.update = function update(msg, enc) { + this.inner.update(msg, enc); + return this; + }; + Hmac.prototype.digest = function digest(enc) { + this.outer.update(this.inner.digest()); + return this.outer.digest(enc); + }; + } +}); + +// node_modules/hash.js/lib/hash.js +var require_hash4 = __commonJS({ + "node_modules/hash.js/lib/hash.js"(exports2) { + var hash = exports2; + hash.utils = require_utils23(); + hash.common = require_common5(); + hash.sha = require_sha(); + hash.ripemd = require_ripemd(); + hash.hmac = require_hmac2(); + hash.sha1 = hash.sha.sha1; + hash.sha256 = hash.sha.sha256; + hash.sha224 = hash.sha.sha224; + hash.sha384 = hash.sha.sha384; + hash.sha512 = hash.sha.sha512; + hash.ripemd160 = hash.ripemd.ripemd160; + } +}); + +// node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js +var require_secp256k13 = __commonJS({ + "node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js"(exports2, module2) { + module2.exports = { + doubles: { + step: 4, + points: [ + [ + "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a", + "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821" + ], + [ + "8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508", + "11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf" + ], + [ + "175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739", + "d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695" + ], + [ + "363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640", + "4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9" + ], + [ + "8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c", + "4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36" + ], + [ + "723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda", + "96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f" + ], + [ + "eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa", + "5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999" + ], + [ + "100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0", + "cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09" + ], + [ + "e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d", + "9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d" + ], + [ + "feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d", + "e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088" + ], + [ + "da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1", + "9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d" + ], + [ + "53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0", + "5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8" + ], + [ + "8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047", + "10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a" + ], + [ + "385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862", + "283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453" + ], + [ + "6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7", + "7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160" + ], + [ + "3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd", + "56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0" + ], + [ + "85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83", + "7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6" + ], + [ + "948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a", + "53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589" + ], + [ + "6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8", + "bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17" + ], + [ + "e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d", + "4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda" + ], + [ + "e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725", + "7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd" + ], + [ + "213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754", + "4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2" + ], + [ + "4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c", + "17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6" + ], + [ + "fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6", + "6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f" + ], + [ + "76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39", + "c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01" + ], + [ + "c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891", + "893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3" + ], + [ + "d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b", + "febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f" + ], + [ + "b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03", + "2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7" + ], + [ + "e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d", + "eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78" + ], + [ + "a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070", + "7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1" + ], + [ + "90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4", + "e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150" + ], + [ + "8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da", + "662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82" + ], + [ + "e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11", + "1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc" + ], + [ + "8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e", + "efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b" + ], + [ + "e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41", + "2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51" + ], + [ + "b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef", + "67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45" + ], + [ + "d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8", + "db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120" + ], + [ + "324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d", + "648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84" + ], + [ + "4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96", + "35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d" + ], + [ + "9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd", + "ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d" + ], + [ + "6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5", + "9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8" + ], + [ + "a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266", + "40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8" + ], + [ + "7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71", + "34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac" + ], + [ + "928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac", + "c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f" + ], + [ + "85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751", + "1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962" + ], + [ + "ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e", + "493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907" + ], + [ + "827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241", + "c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec" + ], + [ + "eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3", + "be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d" + ], + [ + "e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f", + "4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414" + ], + [ + "1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19", + "aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd" + ], + [ + "146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be", + "b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0" + ], + [ + "fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9", + "6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811" + ], + [ + "da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2", + "8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1" + ], + [ + "a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13", + "7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c" + ], + [ + "174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c", + "ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73" + ], + [ + "959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba", + "2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd" + ], + [ + "d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151", + "e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405" + ], + [ + "64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073", + "d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589" + ], + [ + "8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458", + "38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e" + ], + [ + "13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b", + "69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27" + ], + [ + "bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366", + "d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1" + ], + [ + "8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa", + "40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482" + ], + [ + "8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0", + "620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945" + ], + [ + "dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787", + "7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573" + ], + [ + "f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e", + "ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82" + ] + ] + }, + naf: { + wnd: 7, + points: [ + [ + "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9", + "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672" + ], + [ + "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4", + "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6" + ], + [ + "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc", + "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da" + ], + [ + "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe", + "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37" + ], + [ + "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb", + "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b" + ], + [ + "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8", + "ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81" + ], + [ + "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e", + "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58" + ], + [ + "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34", + "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77" + ], + [ + "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c", + "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a" + ], + [ + "352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5", + "321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c" + ], + [ + "2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f", + "2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67" + ], + [ + "9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714", + "73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402" + ], + [ + "daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729", + "a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55" + ], + [ + "c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db", + "2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482" + ], + [ + "6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4", + "e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82" + ], + [ + "1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5", + "b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396" + ], + [ + "605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479", + "2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49" + ], + [ + "62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d", + "80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf" + ], + [ + "80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f", + "1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a" + ], + [ + "7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb", + "d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7" + ], + [ + "d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9", + "eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933" + ], + [ + "49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963", + "758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a" + ], + [ + "77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74", + "958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6" + ], + [ + "f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530", + "e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37" + ], + [ + "463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b", + "5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e" + ], + [ + "f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247", + "cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6" + ], + [ + "caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1", + "cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476" + ], + [ + "2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120", + "4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40" + ], + [ + "7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435", + "91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61" + ], + [ + "754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18", + "673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683" + ], + [ + "e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8", + "59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5" + ], + [ + "186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb", + "3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b" + ], + [ + "df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f", + "55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417" + ], + [ + "5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143", + "efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868" + ], + [ + "290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba", + "e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a" + ], + [ + "af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45", + "f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6" + ], + [ + "766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a", + "744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996" + ], + [ + "59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e", + "c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e" + ], + [ + "f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8", + "e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d" + ], + [ + "7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c", + "30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2" + ], + [ + "948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519", + "e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e" + ], + [ + "7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab", + "100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437" + ], + [ + "3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca", + "ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311" + ], + [ + "d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf", + "8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4" + ], + [ + "1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610", + "68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575" + ], + [ + "733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4", + "f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d" + ], + [ + "15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c", + "d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d" + ], + [ + "a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940", + "edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629" + ], + [ + "e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980", + "a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06" + ], + [ + "311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3", + "66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374" + ], + [ + "34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf", + "9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee" + ], + [ + "f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63", + "4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1" + ], + [ + "d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448", + "fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b" + ], + [ + "32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf", + "5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661" + ], + [ + "7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5", + "8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6" + ], + [ + "ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6", + "8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e" + ], + [ + "16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5", + "5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d" + ], + [ + "eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99", + "f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc" + ], + [ + "78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51", + "f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4" + ], + [ + "494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5", + "42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c" + ], + [ + "a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5", + "204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b" + ], + [ + "c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997", + "4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913" + ], + [ + "841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881", + "73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154" + ], + [ + "5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5", + "39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865" + ], + [ + "36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66", + "d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc" + ], + [ + "336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726", + "ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224" + ], + [ + "8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede", + "6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e" + ], + [ + "1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94", + "60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6" + ], + [ + "85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31", + "3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511" + ], + [ + "29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51", + "b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b" + ], + [ + "a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252", + "ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2" + ], + [ + "4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5", + "cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c" + ], + [ + "d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b", + "6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3" + ], + [ + "ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4", + "322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d" + ], + [ + "af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f", + "6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700" + ], + [ + "e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889", + "2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4" + ], + [ + "591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246", + "b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196" + ], + [ + "11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984", + "998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4" + ], + [ + "3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a", + "b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257" + ], + [ + "cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030", + "bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13" + ], + [ + "c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197", + "6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096" + ], + [ + "c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593", + "c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38" + ], + [ + "a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef", + "21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f" + ], + [ + "347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38", + "60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448" + ], + [ + "da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a", + "49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a" + ], + [ + "c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111", + "5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4" + ], + [ + "4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502", + "7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437" + ], + [ + "3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea", + "be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7" + ], + [ + "cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26", + "8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d" + ], + [ + "b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986", + "39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a" + ], + [ + "d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e", + "62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54" + ], + [ + "48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4", + "25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77" + ], + [ + "dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda", + "ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517" + ], + [ + "6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859", + "cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10" + ], + [ + "e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f", + "f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125" + ], + [ + "eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c", + "6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e" + ], + [ + "13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942", + "fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1" + ], + [ + "ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a", + "1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2" + ], + [ + "b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80", + "5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423" + ], + [ + "ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d", + "438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8" + ], + [ + "8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1", + "cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758" + ], + [ + "52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63", + "c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375" + ], + [ + "e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352", + "6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d" + ], + [ + "7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193", + "ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec" + ], + [ + "5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00", + "9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0" + ], + [ + "32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58", + "ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c" + ], + [ + "e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7", + "d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4" + ], + [ + "8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8", + "c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f" + ], + [ + "4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e", + "67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649" + ], + [ + "3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d", + "cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826" + ], + [ + "674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b", + "299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5" + ], + [ + "d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f", + "f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87" + ], + [ + "30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6", + "462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b" + ], + [ + "be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297", + "62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc" + ], + [ + "93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a", + "7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c" + ], + [ + "b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c", + "ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f" + ], + [ + "d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52", + "4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a" + ], + [ + "d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb", + "bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46" + ], + [ + "463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065", + "bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f" + ], + [ + "7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917", + "603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03" + ], + [ + "74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9", + "cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08" + ], + [ + "30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3", + "553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8" + ], + [ + "9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57", + "712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373" + ], + [ + "176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66", + "ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3" + ], + [ + "75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8", + "9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8" + ], + [ + "809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721", + "9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1" + ], + [ + "1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180", + "4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9" + ] + ] + } + }; + } +}); + +// node_modules/elliptic/lib/elliptic/curves.js +var require_curves = __commonJS({ + "node_modules/elliptic/lib/elliptic/curves.js"(exports2) { + "use strict"; + var curves = exports2; + var hash = require_hash4(); + var curve = require_curve2(); + var utils = require_utils22(); + var assert = utils.assert; + function PresetCurve(options) { + if (options.type === "short") + this.curve = new curve.short(options); + else if (options.type === "edwards") + this.curve = new curve.edwards(options); + else + this.curve = new curve.mont(options); + this.g = this.curve.g; + this.n = this.curve.n; + this.hash = options.hash; + assert(this.g.validate(), "Invalid curve"); + assert(this.g.mul(this.n).isInfinity(), "Invalid curve, G*N != O"); + } + curves.PresetCurve = PresetCurve; + function defineCurve(name, options) { + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + get: function() { + var curve2 = new PresetCurve(options); + Object.defineProperty(curves, name, { + configurable: true, + enumerable: true, + value: curve2 + }); + return curve2; + } + }); + } + defineCurve("p192", { + type: "short", + prime: "p192", + p: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc", + b: "64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1", + n: "ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831", + hash: hash.sha256, + gRed: false, + g: [ + "188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012", + "07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811" + ] + }); + defineCurve("p224", { + type: "short", + prime: "p224", + p: "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001", + a: "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe", + b: "b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4", + n: "ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d", + hash: hash.sha256, + gRed: false, + g: [ + "b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21", + "bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34" + ] + }); + defineCurve("p256", { + type: "short", + prime: null, + p: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff", + a: "ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc", + b: "5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b", + n: "ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551", + hash: hash.sha256, + gRed: false, + g: [ + "6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296", + "4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5" + ] + }); + defineCurve("p384", { + type: "short", + prime: null, + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff", + a: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc", + b: "b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef", + n: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973", + hash: hash.sha384, + gRed: false, + g: [ + "aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7", + "3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f" + ] + }); + defineCurve("p521", { + type: "short", + prime: null, + p: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff", + a: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc", + b: "00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00", + n: "000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409", + hash: hash.sha512, + gRed: false, + g: [ + "000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66", + "00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650" + ] + }); + defineCurve("curve25519", { + type: "mont", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "76d06", + b: "1", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: hash.sha256, + gRed: false, + g: [ + "9" + ] + }); + defineCurve("ed25519", { + type: "edwards", + prime: "p25519", + p: "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed", + a: "-1", + c: "1", + // -121665 * (121666^(-1)) (mod P) + d: "52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3", + n: "1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed", + hash: hash.sha256, + gRed: false, + g: [ + "216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a", + // 4/5 + "6666666666666666666666666666666666666666666666666666666666666658" + ] + }); + var pre; + try { + pre = require_secp256k13(); + } catch (e) { + pre = void 0; + } + defineCurve("secp256k1", { + type: "short", + prime: "k256", + p: "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f", + a: "0", + b: "7", + n: "ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141", + h: "1", + hash: hash.sha256, + // Precomputed endomorphism + beta: "7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee", + lambda: "5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72", + basis: [ + { + a: "3086d221a7d46bcde86c90e49284eb15", + b: "-e4437ed6010e88286f547fa90abfe4c3" + }, + { + a: "114ca50f7a8e2f3f657c1108d9d44cfd8", + b: "3086d221a7d46bcde86c90e49284eb15" + } + ], + gRed: false, + g: [ + "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798", + "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8", + pre + ] + }); + } +}); + +// node_modules/hmac-drbg/lib/hmac-drbg.js +var require_hmac_drbg = __commonJS({ + "node_modules/hmac-drbg/lib/hmac-drbg.js"(exports2, module2) { + "use strict"; + var hash = require_hash4(); + var utils = require_utils21(); + var assert = require_minimalistic_assert(); + function HmacDRBG(options) { + if (!(this instanceof HmacDRBG)) + return new HmacDRBG(options); + this.hash = options.hash; + this.predResist = !!options.predResist; + this.outLen = this.hash.outSize; + this.minEntropy = options.minEntropy || this.hash.hmacStrength; + this._reseed = null; + this.reseedInterval = null; + this.K = null; + this.V = null; + var entropy = utils.toArray(options.entropy, options.entropyEnc || "hex"); + var nonce = utils.toArray(options.nonce, options.nonceEnc || "hex"); + var pers = utils.toArray(options.pers, options.persEnc || "hex"); + assert( + entropy.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + this.minEntropy + " bits" + ); + this._init(entropy, nonce, pers); + } + module2.exports = HmacDRBG; + HmacDRBG.prototype._init = function init(entropy, nonce, pers) { + var seed = entropy.concat(nonce).concat(pers); + this.K = new Array(this.outLen / 8); + this.V = new Array(this.outLen / 8); + for (var i = 0; i < this.V.length; i++) { + this.K[i] = 0; + this.V[i] = 1; + } + this._update(seed); + this._reseed = 1; + this.reseedInterval = 281474976710656; + }; + HmacDRBG.prototype._hmac = function hmac() { + return new hash.hmac(this.hash, this.K); + }; + HmacDRBG.prototype._update = function update(seed) { + var kmac = this._hmac().update(this.V).update([0]); + if (seed) + kmac = kmac.update(seed); + this.K = kmac.digest(); + this.V = this._hmac().update(this.V).digest(); + if (!seed) + return; + this.K = this._hmac().update(this.V).update([1]).update(seed).digest(); + this.V = this._hmac().update(this.V).digest(); + }; + HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add2, addEnc) { + if (typeof entropyEnc !== "string") { + addEnc = add2; + add2 = entropyEnc; + entropyEnc = null; + } + entropy = utils.toArray(entropy, entropyEnc); + add2 = utils.toArray(add2, addEnc); + assert( + entropy.length >= this.minEntropy / 8, + "Not enough entropy. Minimum is: " + this.minEntropy + " bits" + ); + this._update(entropy.concat(add2 || [])); + this._reseed = 1; + }; + HmacDRBG.prototype.generate = function generate(len, enc, add2, addEnc) { + if (this._reseed > this.reseedInterval) + throw new Error("Reseed is required"); + if (typeof enc !== "string") { + addEnc = add2; + add2 = enc; + enc = null; + } + if (add2) { + add2 = utils.toArray(add2, addEnc || "hex"); + this._update(add2); + } + var temp = []; + while (temp.length < len) { + this.V = this._hmac().update(this.V).digest(); + temp = temp.concat(this.V); + } + var res = temp.slice(0, len); + this._update(add2); + this._reseed++; + return utils.encode(res, enc); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/key.js +var require_key = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/key.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var utils = require_utils22(); + var assert = utils.assert; + function KeyPair(ec, options) { + this.ec = ec; + this.priv = null; + this.pub = null; + if (options.priv) + this._importPrivate(options.priv, options.privEnc); + if (options.pub) + this._importPublic(options.pub, options.pubEnc); + } + module2.exports = KeyPair; + KeyPair.fromPublic = function fromPublic(ec, pub, enc) { + if (pub instanceof KeyPair) + return pub; + return new KeyPair(ec, { + pub, + pubEnc: enc + }); + }; + KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { + if (priv instanceof KeyPair) + return priv; + return new KeyPair(ec, { + priv, + privEnc: enc + }); + }; + KeyPair.prototype.validate = function validate() { + var pub = this.getPublic(); + if (pub.isInfinity()) + return { result: false, reason: "Invalid public key" }; + if (!pub.validate()) + return { result: false, reason: "Public key is not a point" }; + if (!pub.mul(this.ec.curve.n).isInfinity()) + return { result: false, reason: "Public key * N != O" }; + return { result: true, reason: null }; + }; + KeyPair.prototype.getPublic = function getPublic(compact, enc) { + if (typeof compact === "string") { + enc = compact; + compact = null; + } + if (!this.pub) + this.pub = this.ec.g.mul(this.priv); + if (!enc) + return this.pub; + return this.pub.encode(enc, compact); + }; + KeyPair.prototype.getPrivate = function getPrivate(enc) { + if (enc === "hex") + return this.priv.toString(16, 2); + else + return this.priv; + }; + KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { + this.priv = new BN(key, enc || 16); + this.priv = this.priv.umod(this.ec.curve.n); + }; + KeyPair.prototype._importPublic = function _importPublic(key, enc) { + if (key.x || key.y) { + if (this.ec.curve.type === "mont") { + assert(key.x, "Need x coordinate"); + } else if (this.ec.curve.type === "short" || this.ec.curve.type === "edwards") { + assert(key.x && key.y, "Need both x and y coordinate"); + } + this.pub = this.ec.curve.point(key.x, key.y); + return; + } + this.pub = this.ec.curve.decodePoint(key, enc); + }; + KeyPair.prototype.derive = function derive(pub) { + if (!pub.validate()) { + assert(pub.validate(), "public point not validated"); + } + return pub.mul(this.priv).getX(); + }; + KeyPair.prototype.sign = function sign(msg, enc, options) { + return this.ec.sign(msg, this, enc, options); + }; + KeyPair.prototype.verify = function verify(msg, signature, options) { + return this.ec.verify(msg, signature, this, void 0, options); + }; + KeyPair.prototype.inspect = function inspect() { + return ""; + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/signature.js +var require_signature = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/signature.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var utils = require_utils22(); + var assert = utils.assert; + function Signature(options, enc) { + if (options instanceof Signature) + return options; + if (this._importDER(options, enc)) + return; + assert(options.r && options.s, "Signature without r or s"); + this.r = new BN(options.r, 16); + this.s = new BN(options.s, 16); + if (options.recoveryParam === void 0) + this.recoveryParam = null; + else + this.recoveryParam = options.recoveryParam; + } + module2.exports = Signature; + function Position() { + this.place = 0; + } + function getLength(buf, p) { + var initial = buf[p.place++]; + if (!(initial & 128)) { + return initial; + } + var octetLen = initial & 15; + if (octetLen === 0 || octetLen > 4) { + return false; + } + if (buf[p.place] === 0) { + return false; + } + var val = 0; + for (var i = 0, off = p.place; i < octetLen; i++, off++) { + val <<= 8; + val |= buf[off]; + val >>>= 0; + } + if (val <= 127) { + return false; + } + p.place = off; + return val; + } + function rmPadding(buf) { + var i = 0; + var len = buf.length - 1; + while (!buf[i] && !(buf[i + 1] & 128) && i < len) { + i++; + } + if (i === 0) { + return buf; + } + return buf.slice(i); + } + Signature.prototype._importDER = function _importDER(data, enc) { + data = utils.toArray(data, enc); + var p = new Position(); + if (data[p.place++] !== 48) { + return false; + } + var len = getLength(data, p); + if (len === false) { + return false; + } + if (len + p.place !== data.length) { + return false; + } + if (data[p.place++] !== 2) { + return false; + } + var rlen = getLength(data, p); + if (rlen === false) { + return false; + } + if ((data[p.place] & 128) !== 0) { + return false; + } + var r = data.slice(p.place, rlen + p.place); + p.place += rlen; + if (data[p.place++] !== 2) { + return false; + } + var slen = getLength(data, p); + if (slen === false) { + return false; + } + if (data.length !== slen + p.place) { + return false; + } + if ((data[p.place] & 128) !== 0) { + return false; + } + var s = data.slice(p.place, slen + p.place); + if (r[0] === 0) { + if (r[1] & 128) { + r = r.slice(1); + } else { + return false; + } + } + if (s[0] === 0) { + if (s[1] & 128) { + s = s.slice(1); + } else { + return false; + } + } + this.r = new BN(r); + this.s = new BN(s); + this.recoveryParam = null; + return true; + }; + function constructLength(arr, len) { + if (len < 128) { + arr.push(len); + return; + } + var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); + arr.push(octets | 128); + while (--octets) { + arr.push(len >>> (octets << 3) & 255); + } + arr.push(len); + } + Signature.prototype.toDER = function toDER(enc) { + var r = this.r.toArray(); + var s = this.s.toArray(); + if (r[0] & 128) + r = [0].concat(r); + if (s[0] & 128) + s = [0].concat(s); + r = rmPadding(r); + s = rmPadding(s); + while (!s[0] && !(s[1] & 128)) { + s = s.slice(1); + } + var arr = [2]; + constructLength(arr, r.length); + arr = arr.concat(r); + arr.push(2); + constructLength(arr, s.length); + var backHalf = arr.concat(s); + var res = [48]; + constructLength(res, backHalf.length); + res = res.concat(backHalf); + return utils.encode(res, enc); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/ec/index.js +var require_ec = __commonJS({ + "node_modules/elliptic/lib/elliptic/ec/index.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var HmacDRBG = require_hmac_drbg(); + var utils = require_utils22(); + var curves = require_curves(); + var rand = require_brorand(); + var assert = utils.assert; + var KeyPair = require_key(); + var Signature = require_signature(); + function EC(options) { + if (!(this instanceof EC)) + return new EC(options); + if (typeof options === "string") { + assert( + Object.prototype.hasOwnProperty.call(curves, options), + "Unknown curve " + options + ); + options = curves[options]; + } + if (options instanceof curves.PresetCurve) + options = { curve: options }; + this.curve = options.curve.curve; + this.n = this.curve.n; + this.nh = this.n.ushrn(1); + this.g = this.curve.g; + this.g = options.curve.g; + this.g.precompute(options.curve.n.bitLength() + 1); + this.hash = options.hash || options.curve.hash; + } + module2.exports = EC; + EC.prototype.keyPair = function keyPair(options) { + return new KeyPair(this, options); + }; + EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { + return KeyPair.fromPrivate(this, priv, enc); + }; + EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { + return KeyPair.fromPublic(this, pub, enc); + }; + EC.prototype.genKeyPair = function genKeyPair(options) { + if (!options) + options = {}; + var drbg = new HmacDRBG({ + hash: this.hash, + pers: options.pers, + persEnc: options.persEnc || "utf8", + entropy: options.entropy || rand(this.hash.hmacStrength), + entropyEnc: options.entropy && options.entropyEnc || "utf8", + nonce: this.n.toArray() + }); + var bytes = this.n.byteLength(); + var ns2 = this.n.sub(new BN(2)); + for (; ; ) { + var priv = new BN(drbg.generate(bytes)); + if (priv.cmp(ns2) > 0) + continue; + priv.iaddn(1); + return this.keyFromPrivate(priv); + } + }; + EC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) { + var byteLength; + if (BN.isBN(msg) || typeof msg === "number") { + msg = new BN(msg, 16); + byteLength = msg.byteLength(); + } else if (typeof msg === "object") { + byteLength = msg.length; + msg = new BN(msg, 16); + } else { + var str = msg.toString(); + byteLength = str.length + 1 >>> 1; + msg = new BN(str, 16); + } + if (typeof bitLength !== "number") { + bitLength = byteLength * 8; + } + var delta = bitLength - this.n.bitLength(); + if (delta > 0) + msg = msg.ushrn(delta); + if (!truncOnly && msg.cmp(this.n) >= 0) + return msg.sub(this.n); + else + return msg; + }; + EC.prototype.sign = function sign(msg, key, enc, options) { + if (typeof enc === "object") { + options = enc; + enc = null; + } + if (!options) + options = {}; + if (typeof msg !== "string" && typeof msg !== "number" && !BN.isBN(msg)) { + assert( + typeof msg === "object" && msg && typeof msg.length === "number", + "Expected message to be an array-like, a hex string, or a BN instance" + ); + assert(msg.length >>> 0 === msg.length); + for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]); + } + key = this.keyFromPrivate(key, enc); + msg = this._truncateToN(msg, false, options.msgBitLength); + assert(!msg.isNeg(), "Can not sign a negative message"); + var bytes = this.n.byteLength(); + var bkey = key.getPrivate().toArray("be", bytes); + var nonce = msg.toArray("be", bytes); + assert(new BN(nonce).eq(msg), "Can not sign message"); + var drbg = new HmacDRBG({ + hash: this.hash, + entropy: bkey, + nonce, + pers: options.pers, + persEnc: options.persEnc || "utf8" + }); + var ns1 = this.n.sub(new BN(1)); + for (var iter = 0; ; iter++) { + var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength())); + k = this._truncateToN(k, true); + if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) + continue; + var kp = this.g.mul(k); + if (kp.isInfinity()) + continue; + var kpX = kp.getX(); + var r = kpX.umod(this.n); + if (r.cmpn(0) === 0) + continue; + var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); + s = s.umod(this.n); + if (s.cmpn(0) === 0) + continue; + var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); + if (options.canonical && s.cmp(this.nh) > 0) { + s = this.n.sub(s); + recoveryParam ^= 1; + } + return new Signature({ r, s, recoveryParam }); + } + }; + EC.prototype.verify = function verify(msg, signature, key, enc, options) { + if (!options) + options = {}; + msg = this._truncateToN(msg, false, options.msgBitLength); + key = this.keyFromPublic(key, enc); + signature = new Signature(signature, "hex"); + var r = signature.r; + var s = signature.s; + if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) + return false; + if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) + return false; + var sinv = s.invm(this.n); + var u1 = sinv.mul(msg).umod(this.n); + var u2 = sinv.mul(r).umod(this.n); + var p; + if (!this.curve._maxwellTrick) { + p = this.g.mulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + return p.getX().umod(this.n).cmp(r) === 0; + } + p = this.g.jmulAdd(u1, key.getPublic(), u2); + if (p.isInfinity()) + return false; + return p.eqXToP(r); + }; + EC.prototype.recoverPubKey = function(msg, signature, j, enc) { + assert((3 & j) === j, "The recovery param is more than two bits"); + signature = new Signature(signature, enc); + var n = this.n; + var e = new BN(msg); + var r = signature.r; + var s = signature.s; + var isYOdd = j & 1; + var isSecondKey = j >> 1; + if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) + throw new Error("Unable to find sencond key candinate"); + if (isSecondKey) + r = this.curve.pointFromX(r.add(this.curve.n), isYOdd); + else + r = this.curve.pointFromX(r, isYOdd); + var rInv = signature.r.invm(n); + var s1 = n.sub(e).mul(rInv).umod(n); + var s2 = s.mul(rInv).umod(n); + return this.g.mulAdd(s1, r, s2); + }; + EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { + signature = new Signature(signature, enc); + if (signature.recoveryParam !== null) + return signature.recoveryParam; + for (var i = 0; i < 4; i++) { + var Qprime; + try { + Qprime = this.recoverPubKey(e, signature, i); + } catch (e2) { + continue; + } + if (Qprime.eq(Q)) + return i; + } + throw new Error("Unable to find valid recovery factor"); + }; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/key.js +var require_key2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/key.js"(exports2, module2) { + "use strict"; + var utils = require_utils22(); + var assert = utils.assert; + var parseBytes = utils.parseBytes; + var cachedProperty = utils.cachedProperty; + function KeyPair(eddsa2, params) { + this.eddsa = eddsa2; + this._secret = parseBytes(params.secret); + if (eddsa2.isPoint(params.pub)) + this._pub = params.pub; + else + this._pubBytes = parseBytes(params.pub); + } + KeyPair.fromPublic = function fromPublic(eddsa2, pub) { + if (pub instanceof KeyPair) + return pub; + return new KeyPair(eddsa2, { pub }); + }; + KeyPair.fromSecret = function fromSecret(eddsa2, secret) { + if (secret instanceof KeyPair) + return secret; + return new KeyPair(eddsa2, { secret }); + }; + KeyPair.prototype.secret = function secret() { + return this._secret; + }; + cachedProperty(KeyPair, "pubBytes", function pubBytes() { + return this.eddsa.encodePoint(this.pub()); + }); + cachedProperty(KeyPair, "pub", function pub() { + if (this._pubBytes) + return this.eddsa.decodePoint(this._pubBytes); + return this.eddsa.g.mul(this.priv()); + }); + cachedProperty(KeyPair, "privBytes", function privBytes() { + var eddsa2 = this.eddsa; + var hash = this.hash(); + var lastIx = eddsa2.encodingLength - 1; + var a = hash.slice(0, eddsa2.encodingLength); + a[0] &= 248; + a[lastIx] &= 127; + a[lastIx] |= 64; + return a; + }); + cachedProperty(KeyPair, "priv", function priv() { + return this.eddsa.decodeInt(this.privBytes()); + }); + cachedProperty(KeyPair, "hash", function hash() { + return this.eddsa.hash().update(this.secret()).digest(); + }); + cachedProperty(KeyPair, "messagePrefix", function messagePrefix() { + return this.hash().slice(this.eddsa.encodingLength); + }); + KeyPair.prototype.sign = function sign(message) { + assert(this._secret, "KeyPair can only verify"); + return this.eddsa.sign(message, this); + }; + KeyPair.prototype.verify = function verify(message, sig) { + return this.eddsa.verify(message, sig, this); + }; + KeyPair.prototype.getSecret = function getSecret(enc) { + assert(this._secret, "KeyPair is public only"); + return utils.encode(this.secret(), enc); + }; + KeyPair.prototype.getPublic = function getPublic(enc) { + return utils.encode(this.pubBytes(), enc); + }; + module2.exports = KeyPair; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/signature.js +var require_signature2 = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/signature.js"(exports2, module2) { + "use strict"; + var BN = require_bn(); + var utils = require_utils22(); + var assert = utils.assert; + var cachedProperty = utils.cachedProperty; + var parseBytes = utils.parseBytes; + function Signature(eddsa2, sig) { + this.eddsa = eddsa2; + if (typeof sig !== "object") + sig = parseBytes(sig); + if (Array.isArray(sig)) { + assert(sig.length === eddsa2.encodingLength * 2, "Signature has invalid size"); + sig = { + R: sig.slice(0, eddsa2.encodingLength), + S: sig.slice(eddsa2.encodingLength) + }; + } + assert(sig.R && sig.S, "Signature without R or S"); + if (eddsa2.isPoint(sig.R)) + this._R = sig.R; + if (sig.S instanceof BN) + this._S = sig.S; + this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; + this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; + } + cachedProperty(Signature, "S", function S() { + return this.eddsa.decodeInt(this.Sencoded()); + }); + cachedProperty(Signature, "R", function R() { + return this.eddsa.decodePoint(this.Rencoded()); + }); + cachedProperty(Signature, "Rencoded", function Rencoded() { + return this.eddsa.encodePoint(this.R()); + }); + cachedProperty(Signature, "Sencoded", function Sencoded() { + return this.eddsa.encodeInt(this.S()); + }); + Signature.prototype.toBytes = function toBytes() { + return this.Rencoded().concat(this.Sencoded()); + }; + Signature.prototype.toHex = function toHex3() { + return utils.encode(this.toBytes(), "hex").toUpperCase(); + }; + module2.exports = Signature; + } +}); + +// node_modules/elliptic/lib/elliptic/eddsa/index.js +var require_eddsa = __commonJS({ + "node_modules/elliptic/lib/elliptic/eddsa/index.js"(exports2, module2) { + "use strict"; + var hash = require_hash4(); + var curves = require_curves(); + var utils = require_utils22(); + var assert = utils.assert; + var parseBytes = utils.parseBytes; + var KeyPair = require_key2(); + var Signature = require_signature2(); + function EDDSA(curve) { + assert(curve === "ed25519", "only tested with ed25519 so far"); + if (!(this instanceof EDDSA)) + return new EDDSA(curve); + curve = curves[curve].curve; + this.curve = curve; + this.g = curve.g; + this.g.precompute(curve.n.bitLength() + 1); + this.pointClass = curve.point().constructor; + this.encodingLength = Math.ceil(curve.n.bitLength() / 8); + this.hash = hash.sha512; + } + module2.exports = EDDSA; + EDDSA.prototype.sign = function sign(message, secret) { + message = parseBytes(message); + var key = this.keyFromSecret(secret); + var r = this.hashInt(key.messagePrefix(), message); + var R = this.g.mul(r); + var Rencoded = this.encodePoint(R); + var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv()); + var S = r.add(s_).umod(this.curve.n); + return this.makeSignature({ R, S, Rencoded }); + }; + EDDSA.prototype.verify = function verify(message, sig, pub) { + message = parseBytes(message); + sig = this.makeSignature(sig); + if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) { + return false; + } + var key = this.keyFromPublic(pub); + var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); + var SG = this.g.mul(sig.S()); + var RplusAh = sig.R().add(key.pub().mul(h)); + return RplusAh.eq(SG); + }; + EDDSA.prototype.hashInt = function hashInt() { + var hash2 = this.hash(); + for (var i = 0; i < arguments.length; i++) + hash2.update(arguments[i]); + return utils.intFromLE(hash2.digest()).umod(this.curve.n); + }; + EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { + return KeyPair.fromPublic(this, pub); + }; + EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { + return KeyPair.fromSecret(this, secret); + }; + EDDSA.prototype.makeSignature = function makeSignature(sig) { + if (sig instanceof Signature) + return sig; + return new Signature(this, sig); + }; + EDDSA.prototype.encodePoint = function encodePoint(point) { + var enc = point.getY().toArray("le", this.encodingLength); + enc[this.encodingLength - 1] |= point.getX().isOdd() ? 128 : 0; + return enc; + }; + EDDSA.prototype.decodePoint = function decodePoint(bytes) { + bytes = utils.parseBytes(bytes); + var lastIx = bytes.length - 1; + var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~128); + var xIsOdd = (bytes[lastIx] & 128) !== 0; + var y = utils.intFromLE(normed); + return this.curve.pointFromY(y, xIsOdd); + }; + EDDSA.prototype.encodeInt = function encodeInt(num) { + return num.toArray("le", this.encodingLength); + }; + EDDSA.prototype.decodeInt = function decodeInt(bytes) { + return utils.intFromLE(bytes); + }; + EDDSA.prototype.isPoint = function isPoint(val) { + return val instanceof this.pointClass; + }; + } +}); + +// node_modules/elliptic/lib/elliptic.js +var require_elliptic = __commonJS({ + "node_modules/elliptic/lib/elliptic.js"(exports2) { + "use strict"; + var elliptic = exports2; + elliptic.version = require_package().version; + elliptic.utils = require_utils22(); + elliptic.rand = require_brorand(); + elliptic.curve = require_curve2(); + elliptic.curves = require_curves(); + elliptic.ec = require_ec(); + elliptic.eddsa = require_eddsa(); + } +}); + +// node_modules/tiny-secp256k1/rfc6979.js +var require_rfc6979 = __commonJS({ + "node_modules/tiny-secp256k1/rfc6979.js"(exports2, module2) { + var createHmac = require_create_hmac(); + var ONE1 = Buffer.alloc(1, 1); + var ZERO1 = Buffer.alloc(1, 0); + function deterministicGenerateK(hash, x, checkSig, isPrivate, extraEntropy) { + let k = Buffer.alloc(32, 0); + let v = Buffer.alloc(32, 1); + k = createHmac("sha256", k).update(v).update(ZERO1).update(x).update(hash).update(extraEntropy || "").digest(); + v = createHmac("sha256", k).update(v).digest(); + k = createHmac("sha256", k).update(v).update(ONE1).update(x).update(hash).update(extraEntropy || "").digest(); + v = createHmac("sha256", k).update(v).digest(); + v = createHmac("sha256", k).update(v).digest(); + let T = v; + while (!isPrivate(T) || !checkSig(T)) { + k = createHmac("sha256", k).update(v).update(ZERO1).digest(); + v = createHmac("sha256", k).update(v).digest(); + v = createHmac("sha256", k).update(v).digest(); + T = v; + } + return T; + } + module2.exports = deterministicGenerateK; + } +}); + +// node_modules/tiny-secp256k1/js.js +var require_js2 = __commonJS({ + "node_modules/tiny-secp256k1/js.js"(exports2, module2) { + var BN = require_bn(); + var EC = require_elliptic().ec; + var secp256k1 = new EC("secp256k1"); + var deterministicGenerateK = require_rfc6979(); + var ZERO32 = Buffer.alloc(32, 0); + var EC_GROUP_ORDER = Buffer.from("fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", "hex"); + var EC_P = Buffer.from("fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f", "hex"); + var n = secp256k1.curve.n; + var nDiv2 = n.shrn(1); + var G = secp256k1.curve.g; + var THROW_BAD_PRIVATE = "Expected Private"; + var THROW_BAD_POINT = "Expected Point"; + var THROW_BAD_TWEAK = "Expected Tweak"; + var THROW_BAD_HASH = "Expected Hash"; + var THROW_BAD_SIGNATURE = "Expected Signature"; + var THROW_BAD_EXTRA_DATA = "Expected Extra Data (32 bytes)"; + function isScalar(x) { + return x instanceof Uint8Array && x.length === 32; + } + function isOrderScalar(x) { + if (!isScalar(x)) return false; + return EC_GROUP_ORDER.compare(x) > 0; + } + function isPoint(p) { + if (!(p instanceof Uint8Array)) return false; + if (p.length < 33) return false; + const t = p[0]; + const x = p.subarray(1, 33); + if (ZERO32.compare(x) === 0) return false; + if (EC_P.compare(x) <= 0) return false; + if ((t === 2 || t === 3) && p.length === 33) { + try { + decodeFrom(p); + } catch (e) { + return false; + } + return true; + } + const y = p.subarray(33); + if (ZERO32.compare(y) === 0) return false; + if (EC_P.compare(y) <= 0) return false; + if (t === 4 && p.length === 65) return true; + return false; + } + function __isPointCompressed(p) { + return p[0] !== 4; + } + function isPointCompressed(p) { + if (!isPoint(p)) return false; + return __isPointCompressed(p); + } + function isPrivate(x) { + if (!isScalar(x)) return false; + return ZERO32.compare(x) < 0 && // > 0 + EC_GROUP_ORDER.compare(x) > 0; + } + function isSignature(value) { + const r = value.subarray(0, 32); + const s = value.subarray(32, 64); + return value instanceof Uint8Array && value.length === 64 && EC_GROUP_ORDER.compare(r) > 0 && EC_GROUP_ORDER.compare(s) > 0; + } + function assumeCompression(value, pubkey) { + if (value === void 0 && pubkey !== void 0) return __isPointCompressed(pubkey); + if (value === void 0) return true; + return value; + } + function fromBuffer(d) { + return new BN(d); + } + function toBuffer(d) { + return d.toArrayLike(Buffer, "be", 32); + } + function decodeFrom(P) { + return secp256k1.curve.decodePoint(P); + } + function getEncoded(P, compressed) { + return Buffer.from(P._encode(compressed)); + } + function pointAdd(pA, pB, __compressed) { + if (!isPoint(pA)) throw new TypeError(THROW_BAD_POINT); + if (!isPoint(pB)) throw new TypeError(THROW_BAD_POINT); + const a = decodeFrom(pA); + const b = decodeFrom(pB); + const pp = a.add(b); + if (pp.isInfinity()) return null; + const compressed = assumeCompression(__compressed, pA); + return getEncoded(pp, compressed); + } + function pointAddScalar(p, tweak, __compressed) { + if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT); + if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK); + const compressed = assumeCompression(__compressed, p); + const pp = decodeFrom(p); + if (ZERO32.compare(tweak) === 0) return getEncoded(pp, compressed); + const tt = fromBuffer(tweak); + const qq = G.mul(tt); + const uu = pp.add(qq); + if (uu.isInfinity()) return null; + return getEncoded(uu, compressed); + } + function pointCompress(p, __compressed) { + if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT); + const pp = decodeFrom(p); + if (pp.isInfinity()) throw new TypeError(THROW_BAD_POINT); + const compressed = assumeCompression(__compressed, p); + return getEncoded(pp, compressed); + } + function pointFromScalar(d, __compressed) { + if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE); + const dd = fromBuffer(d); + const pp = G.mul(dd); + if (pp.isInfinity()) return null; + const compressed = assumeCompression(__compressed); + return getEncoded(pp, compressed); + } + function pointMultiply(p, tweak, __compressed) { + if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT); + if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK); + const compressed = assumeCompression(__compressed, p); + const pp = decodeFrom(p); + const tt = fromBuffer(tweak); + const qq = pp.mul(tt); + if (qq.isInfinity()) return null; + return getEncoded(qq, compressed); + } + function privateAdd(d, tweak) { + if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE); + if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK); + const dd = fromBuffer(d); + const tt = fromBuffer(tweak); + const dt = toBuffer(dd.add(tt).umod(n)); + if (!isPrivate(dt)) return null; + return dt; + } + function privateSub(d, tweak) { + if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE); + if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK); + const dd = fromBuffer(d); + const tt = fromBuffer(tweak); + const dt = toBuffer(dd.sub(tt).umod(n)); + if (!isPrivate(dt)) return null; + return dt; + } + function sign(hash, x) { + return __sign(hash, x); + } + function signWithEntropy(hash, x, addData) { + return __sign(hash, x, addData); + } + function __sign(hash, x, addData) { + if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH); + if (!isPrivate(x)) throw new TypeError(THROW_BAD_PRIVATE); + if (addData !== void 0 && !isScalar(addData)) throw new TypeError(THROW_BAD_EXTRA_DATA); + const d = fromBuffer(x); + const e = fromBuffer(hash); + let r, s; + const checkSig = function(k) { + const kI = fromBuffer(k); + const Q = G.mul(kI); + if (Q.isInfinity()) return false; + r = Q.x.umod(n); + if (r.isZero() === 0) return false; + s = kI.invm(n).mul(e.add(d.mul(r))).umod(n); + if (s.isZero() === 0) return false; + return true; + }; + deterministicGenerateK(hash, x, checkSig, isPrivate, addData); + if (s.cmp(nDiv2) > 0) { + s = n.sub(s); + } + const buffer = Buffer.allocUnsafe(64); + toBuffer(r).copy(buffer, 0); + toBuffer(s).copy(buffer, 32); + return buffer; + } + function verify(hash, q, signature, strict) { + if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH); + if (!isPoint(q)) throw new TypeError(THROW_BAD_POINT); + if (!isSignature(signature)) throw new TypeError(THROW_BAD_SIGNATURE); + const Q = decodeFrom(q); + const r = fromBuffer(signature.subarray(0, 32)); + const s = fromBuffer(signature.subarray(32, 64)); + if (strict && s.cmp(nDiv2) > 0) { + return false; + } + if (r.gtn(0) <= 0) return false; + if (s.gtn(0) <= 0) return false; + const e = fromBuffer(hash); + const sInv = s.invm(n); + const u1 = e.mul(sInv).umod(n); + const u2 = r.mul(sInv).umod(n); + const R = G.mulAdd(u1, Q, u2); + if (R.isInfinity()) return false; + const xR = R.x; + const v = xR.umod(n); + return v.eq(r); + } + module2.exports = { + isPoint, + isPointCompressed, + isPrivate, + pointAdd, + pointAddScalar, + pointCompress, + pointFromScalar, + pointMultiply, + privateAdd, + privateSub, + sign, + signWithEntropy, + verify + }; + } +}); + +// node_modules/tiny-secp256k1/index.js +var require_tiny_secp256k1 = __commonJS({ + "node_modules/tiny-secp256k1/index.js"(exports2, module2) { + "use strict"; + try { + module2.exports = require_native2(); + } catch (err2) { + module2.exports = require_js2(); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/script/ops.js +var require_ops = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/script/ops.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.REVERSE_OPS = exports2.OPS = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ops = tslib_1.__importStar(require_bitcoin_ops()); + var OPS = { + ...ops, + OP_SSTX: 186, + OP_SSTXCHANGE: 189, + OP_SSGEN: 187, + OP_SSRTX: 188 + }; + exports2.OPS = OPS; + var REVERSE_OPS = []; + exports2.REVERSE_OPS = REVERSE_OPS; + Object.keys(OPS).forEach((code) => { + REVERSE_OPS[OPS[code]] = code; + }); + } +}); + +// node_modules/@trezor/utxo-lib/lib/script/scriptNumber.js +var require_scriptNumber = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/script/scriptNumber.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decode = decode; + exports2.encode = encode; + function decode(buffer, maxLength = 4, minimal = true) { + const { + length + } = buffer; + if (length === 0) return 0; + if (length > maxLength) throw new TypeError("Script number overflow"); + if (minimal) { + if ((buffer[length - 1] & 127) === 0) { + if (length <= 1 || (buffer[length - 2] & 128) === 0) throw new Error("Non-minimally encoded script number"); + } + } + if (length === 5) { + const a = buffer.readUInt32LE(0); + const b = buffer.readUInt8(4); + if (b & 128) return -((b & ~128) * 4294967296 + a); + return b * 4294967296 + a; + } + let result = 0; + for (let i = 0; i < length; ++i) { + result |= buffer[i] << 8 * i; + } + if (buffer[length - 1] & 128) return -(result & ~(128 << 8 * (length - 1))); + return result; + } + function scriptNumSize(i) { + if (i > 2147483647) return 5; + if (i > 8388607) return 4; + if (i > 32767) return 3; + if (i > 127) return 2; + if (i > 0) return 1; + return 0; + } + function encode(number) { + let value = Math.abs(number); + const size = scriptNumSize(value); + const buffer = Buffer.allocUnsafe(size); + const negative = number < 0; + for (let i = 0; i < size; ++i) { + buffer.writeUInt8(value & 255, i); + value >>= 8; + } + if (buffer[size - 1] & 128) { + buffer.writeUInt8(negative ? 128 : 0, size - 1); + } else if (negative) { + buffer[size - 1] |= 128; + } + return buffer; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/types/coinselect.js +var require_coinselect = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/types/coinselect.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/utxo-lib/lib/types/compose.js +var require_compose = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/types/compose.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.COMPOSE_ERROR_TYPES = void 0; + exports2.COMPOSE_ERROR_TYPES = ["MISSING-UTXOS", "MISSING-OUTPUTS", "INCORRECT-FEE-RATE", "NOT-ENOUGH-FUNDS"]; + } +}); + +// node_modules/@trezor/utxo-lib/lib/types/payments.js +var require_payments = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/types/payments.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/utxo-lib/lib/types/index.js +var require_types5 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/types/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_coinselect(), exports2); + tslib_1.__exportStar(require_compose(), exports2); + tslib_1.__exportStar(require_payments(), exports2); + tslib_1.__exportStar(require_typeforce2(), exports2); + } +}); + +// node_modules/@trezor/utxo-lib/lib/script/scriptSignature.js +var require_scriptSignature = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/script/scriptSignature.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.toDER = toDER; + exports2.fromDER = fromDER; + exports2.decode = decode; + exports2.encode = encode; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bip66 = tslib_1.__importStar(require_cjs6()); + var types = tslib_1.__importStar(require_types5()); + var ZERO = Buffer.alloc(1, 0); + function toDER(x) { + let i = 0; + while (x[i] === 0) ++i; + if (i === x.length) return ZERO; + x = x.subarray(i); + if (x[0] & 128) return Buffer.concat([ZERO, x], 1 + x.length); + return x; + } + function fromDER(x) { + if (x[0] === 0) x = x.subarray(1); + const buffer = Buffer.alloc(32, 0); + const bstart = Math.max(0, 32 - x.length); + x.copy(buffer, bstart); + return buffer; + } + function decode(buffer) { + const hashType = buffer.readUInt8(buffer.length - 1); + const hashTypeMod = hashType & ~128; + if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error(`Invalid hashType ${hashType}`); + const decoded = bip66.decode(buffer.subarray(0, -1)); + const r = fromDER(decoded.r); + const s = fromDER(decoded.s); + const signature = Buffer.concat([r, s], 64); + return { + signature, + hashType + }; + } + function encode(signature, hashType) { + types.typeforce({ + signature: types.BufferN(64), + hashType: types.UInt8 + }, { + signature, + hashType + }); + const hashTypeMod = hashType & ~128; + if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error(`Invalid hashType ${hashType}`); + const hashTypeBuffer = Buffer.allocUnsafe(1); + hashTypeBuffer.writeUInt8(hashType, 0); + const r = toDER(signature.subarray(0, 32)); + const s = toDER(signature.subarray(32, 64)); + return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/script/index.js +var require_script = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/script/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.OPS = exports2.signature = exports2.number = void 0; + exports2.isPushOnly = isPushOnly; + exports2.compile = compile; + exports2.decompile = decompile; + exports2.toASM = toASM; + exports2.fromASM = fromASM; + exports2.toStack = toStack; + exports2.isCanonicalPubKey = isCanonicalPubKey; + exports2.isDefinedHashType = isDefinedHashType; + exports2.isCanonicalScriptSignature = isCanonicalScriptSignature; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bip66 = tslib_1.__importStar(require_cjs6()); + var pushdata_bitcoin_1 = tslib_1.__importDefault(require_pushdata_bitcoin()); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var ops_1 = require_ops(); + var scriptNumber = tslib_1.__importStar(require_scriptNumber()); + var scriptSignature = tslib_1.__importStar(require_scriptSignature()); + var types = tslib_1.__importStar(require_types5()); + var types_1 = require_types5(); + var OP_INT_BASE = ops_1.OPS.OP_RESERVED; + function isOPInt(value) { + return types.Number(value) && (value === ops_1.OPS.OP_0 || value >= ops_1.OPS.OP_1 && value <= ops_1.OPS.OP_16 || value === ops_1.OPS.OP_1NEGATE); + } + function isPushOnlyChunk(value) { + return types.Buffer(value) || isOPInt(value); + } + function isPushOnly(value) { + return types.Array(value) && value.every(isPushOnlyChunk); + } + function asMinimalOP(buffer) { + if (buffer.length === 0) return ops_1.OPS.OP_0; + if (buffer.length !== 1) return; + if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0]; + if (buffer[0] === 129) return ops_1.OPS.OP_1NEGATE; + } + function compile(chunks) { + if (types.Buffer(chunks)) return chunks; + (0, types_1.typeforce)(types.Array, chunks); + const bufferSize = chunks.reduce((accum, chunk) => { + if (types.Buffer(chunk)) { + if (chunk.length === 1 && asMinimalOP(chunk) !== void 0) { + return accum + 1; + } + return accum + pushdata_bitcoin_1.default.encodingLength(chunk.length) + chunk.length; + } + return accum + 1; + }, 0); + const buffer = Buffer.allocUnsafe(bufferSize); + let offset = 0; + chunks.forEach((chunk) => { + if (types.Buffer(chunk)) { + const opcode = asMinimalOP(chunk); + if (opcode !== void 0) { + buffer.writeUInt8(opcode, offset); + offset += 1; + return; + } + offset += pushdata_bitcoin_1.default.encode(buffer, chunk.length, offset); + chunk.copy(buffer, offset); + offset += chunk.length; + } else { + buffer.writeUInt8(chunk, offset); + offset += 1; + } + }); + if (offset !== buffer.length) throw new Error("Could not decode chunks"); + return buffer; + } + function decompile(buffer) { + if (types.Array(buffer)) return buffer; + (0, types_1.typeforce)(types.Buffer, buffer); + const chunks = []; + let i = 0; + while (i < buffer.length) { + const opcode = buffer[i]; + if (opcode > ops_1.OPS.OP_0 && opcode <= ops_1.OPS.OP_PUSHDATA4) { + const d = pushdata_bitcoin_1.default.decode(buffer, i); + if (d === null) return []; + i += d.size; + if (i + d.number > buffer.length) return []; + const data = buffer.subarray(i, i + d.number); + i += d.number; + const op = asMinimalOP(data); + if (op !== void 0) { + chunks.push(op); + } else { + chunks.push(data); + } + } else { + chunks.push(opcode); + i += 1; + } + } + return chunks; + } + function toASM(chunks) { + if (types.Buffer(chunks)) { + chunks = decompile(chunks); + } + return chunks.map((chunk) => { + if (types.Buffer(chunk)) { + const op = asMinimalOP(chunk); + if (op === void 0) return chunk.toString("hex"); + chunk = op; + } + return ops_1.REVERSE_OPS[chunk]; + }).join(" "); + } + function fromASM(asm) { + (0, types_1.typeforce)(types.String, asm); + return compile(asm.split(" ").map((chunkStr) => { + if (ops_1.OPS[chunkStr] !== void 0) return ops_1.OPS[chunkStr]; + (0, types_1.typeforce)(types.Hex, chunkStr); + return Buffer.from(chunkStr, "hex"); + })); + } + function toStack(chunks0) { + const chunks = decompile(chunks0); + (0, types_1.typeforce)(isPushOnly, chunks); + return chunks?.map((op) => { + if (types.Buffer(op)) return op; + if (op === ops_1.OPS.OP_0) return Buffer.allocUnsafe(0); + return scriptNumber.encode(op - OP_INT_BASE); + }); + } + function isCanonicalPubKey(buffer) { + return tiny_secp256k1_1.default.isPoint(buffer); + } + function isDefinedHashType(hashType) { + const hashTypeMod = hashType & ~128; + return hashTypeMod > 0 && hashTypeMod < 4; + } + function isCanonicalScriptSignature(buffer) { + if (!types.Buffer(buffer)) return false; + if (!isDefinedHashType(buffer[buffer.length - 1])) return false; + return bip66.check(buffer.subarray(0, -1)); + } + exports2.number = scriptNumber; + exports2.signature = scriptSignature; + var ops_2 = require_ops(); + Object.defineProperty(exports2, "OPS", { + enumerable: true, + get: function() { + return ops_2.OPS; + } + }); + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/lazy.js +var require_lazy = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/lazy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.prop = prop; + exports2.value = value; + function prop(object, name, f) { + Object.defineProperty(object, name, { + configurable: true, + enumerable: true, + get() { + const value2 = f.call(this); + this[name] = value2; + return value2; + }, + set(value2) { + Object.defineProperty(this, name, { + configurable: true, + enumerable: true, + value: value2, + writable: true + }); + } + }); + } + function value(f) { + let value2; + return () => { + if (value2 !== void 0) return value2; + value2 = f(); + return value2; + }; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/embed.js +var require_embed = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/embed.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2data = p2data; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function stacksEqual(a, b) { + if (a.length !== b.length) return false; + return a.every((x, i) => x.equals(b[i])); + } + function p2data(a, opts) { + if (!a.data && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer), + data: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }, a); + const network = a.network || networks_1.bitcoin; + const o = { + name: "embed", + network + }; + lazy.prop(o, "output", () => { + if (!a.data) return; + return bscript.compile([OPS.OP_RETURN].concat(a.data)); + }); + lazy.prop(o, "data", () => { + if (!a.output) return; + return bscript.decompile(a.output).slice(1); + }); + if (opts.validate) { + if (a.output) { + const chunks = bscript.decompile(a.output); + if (chunks[0] !== OPS.OP_RETURN) throw new TypeError("Output is invalid"); + if (!chunks.slice(1).every(types_1.typeforce.Buffer)) throw new TypeError("Output is invalid"); + if (a.data && !stacksEqual(a.data, o.data)) throw new TypeError("Data mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2ms.js +var require_p2ms = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2ms.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2ms = p2ms; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + var OP_INT_BASE = OPS.OP_RESERVED; + function stacksEqual(a, b) { + if (a.length !== b.length) return false; + return a.every((x, i) => x.equals(b[i])); + } + function p2ms(a, opts) { + if (!a.input && !a.output && !(a.pubkeys && a.m !== void 0) && !a.signatures) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + function isAcceptableSignature(x) { + return bscript.isCanonicalScriptSignature(x) || (opts.allowIncomplete && x === OPS.OP_0) !== void 0; + } + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + m: types_1.typeforce.maybe(types_1.typeforce.Number), + n: types_1.typeforce.maybe(types_1.typeforce.Number), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer), + pubkeys: types_1.typeforce.maybe(types_1.typeforce.arrayOf(tiny_secp256k1_1.default.isPoint)), + signatures: types_1.typeforce.maybe(types_1.typeforce.arrayOf(isAcceptableSignature)), + input: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const network = a.network || networks_1.bitcoin; + const o = { + name: "p2ms", + network + }; + let chunks = []; + let decoded = false; + function decode(output) { + if (decoded) return; + decoded = true; + chunks = bscript.decompile(output); + o.m = chunks[0] - OP_INT_BASE; + o.n = chunks[chunks.length - 2] - OP_INT_BASE; + o.pubkeys = chunks.slice(1, -2); + } + lazy.prop(o, "output", () => { + if (!a.m) return; + if (!o.n) return; + if (!a.pubkeys) return; + return bscript.compile([].concat(OP_INT_BASE + a.m, a.pubkeys, OP_INT_BASE + o.n, OPS.OP_CHECKMULTISIG)); + }); + lazy.prop(o, "m", () => { + if (!o.output) return; + decode(o.output); + return o.m; + }); + lazy.prop(o, "n", () => { + if (!o.pubkeys) return; + return o.pubkeys.length; + }); + lazy.prop(o, "pubkeys", () => { + if (!a.output) return; + decode(a.output); + return o.pubkeys; + }); + lazy.prop(o, "signatures", () => { + if (!a.input) return; + return bscript.decompile(a.input).slice(1); + }); + lazy.prop(o, "input", () => { + if (!a.signatures) return; + return bscript.compile([OPS.OP_0].concat(a.signatures)); + }); + lazy.prop(o, "witness", () => { + if (!o.input) return; + return []; + }); + lazy.prop(o, "name", () => { + if (!o.m || !o.n) return; + return `p2ms(${o.m} of ${o.n})`; + }); + if (opts.validate) { + if (a.output) { + decode(a.output); + if (!types_1.typeforce.Number(chunks[0])) throw new TypeError("Output is invalid"); + if (!types_1.typeforce.Number(chunks[chunks.length - 2])) throw new TypeError("Output is invalid"); + if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) throw new TypeError("Output is invalid"); + if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3) throw new TypeError("Output is invalid"); + if (!o.pubkeys.every((x) => tiny_secp256k1_1.default.isPoint(x))) throw new TypeError("Output is invalid"); + if (a.m !== void 0 && a.m !== o.m) throw new TypeError("m mismatch"); + if (a.n !== void 0 && a.n !== o.n) throw new TypeError("n mismatch"); + if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys)) throw new TypeError("Pubkeys mismatch"); + } + if (a.pubkeys) { + if (a.n !== void 0 && a.n !== a.pubkeys.length) throw new TypeError("Pubkey count mismatch"); + o.n = a.pubkeys.length; + if (o.n < o.m) throw new TypeError("Pubkey count cannot be less than m"); + } + if (a.signatures) { + if (a.signatures.length < o.m) throw new TypeError("Not enough signatures provided"); + if (a.signatures.length > o.m) throw new TypeError("Too many signatures provided"); + } + if (a.input) { + if (a.input[0] !== OPS.OP_0) throw new TypeError("Input is invalid"); + if (o.signatures.length === 0 || !o.signatures.every(isAcceptableSignature)) throw new TypeError("Input has invalid signature(s)"); + if (a.signatures && !stacksEqual(a.signatures, o.signatures)) throw new TypeError("Signature mismatch"); + if (a.m !== void 0 && a.m !== a.signatures.length) throw new TypeError("Signature count mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2pk.js +var require_p2pk = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2pk.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2pk = p2pk; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function p2pk(a, opts) { + if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer), + pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint), + signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature), + input: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const _chunks = lazy.value(() => bscript.decompile(a.input)); + const network = a.network || networks_1.bitcoin; + const o = { + name: "p2pk", + network + }; + lazy.prop(o, "output", () => { + if (!a.pubkey) return; + return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]); + }); + lazy.prop(o, "pubkey", () => { + if (!a.output) return; + return a.output.subarray(1, -1); + }); + lazy.prop(o, "signature", () => { + if (!a.input) return; + return _chunks()[0]; + }); + lazy.prop(o, "input", () => { + if (!a.signature) return; + return bscript.compile([a.signature]); + }); + lazy.prop(o, "witness", () => { + if (!o.input) return; + return []; + }); + if (opts.validate) { + if (a.output) { + if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG) throw new TypeError("Output is invalid"); + if (!tiny_secp256k1_1.default.isPoint(o.pubkey)) throw new TypeError("Output pubkey is invalid"); + if (a.pubkey && !a.pubkey.equals(o.pubkey)) throw new TypeError("Pubkey mismatch"); + } + if (a.signature) { + if (a.input && !a.input.equals(o.input)) throw new TypeError("Signature mismatch"); + } + if (a.input) { + if (_chunks().length !== 1) throw new TypeError("Input is invalid"); + if (!bscript.isCanonicalScriptSignature(o.signature)) throw new TypeError("Input has invalid signature"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2pkh.js +var require_p2pkh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2pkh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2pkh = p2pkh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var bs58check = tslib_1.__importStar(require_bs58check()); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function p2pkh(a, opts) { + if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.BufferN(25)), + pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint), + signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature), + input: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network)); + const _chunks = lazy.value(() => bscript.decompile(a.input)); + const network = a.network || networks_1.bitcoin; + const o = { + name: "p2pkh", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.pubKeyHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(3, 23); + if (a.address) return _address().hash; + if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey); + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]); + }); + lazy.prop(o, "pubkey", () => { + if (!a.input) return; + return _chunks()[1]; + }); + lazy.prop(o, "signature", () => { + if (!a.input) return; + return _chunks()[0]; + }); + lazy.prop(o, "input", () => { + if (!a.pubkey) return; + if (!a.signature) return; + return bscript.compile([a.signature, a.pubkey]); + }); + lazy.prop(o, "witness", () => { + if (!o.input) return; + return []; + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.pubKeyHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 25 || a.output[0] !== OPS.OP_DUP || a.output[1] !== OPS.OP_HASH160 || a.output[2] !== 20 || a.output[23] !== OPS.OP_EQUALVERIFY || a.output[24] !== OPS.OP_CHECKSIG) throw new TypeError("Output is invalid"); + const hash2 = a.output.subarray(3, 23); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + if (a.pubkey) { + const pkh = bcrypto.hash160(a.pubkey); + if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError("Hash mismatch"); + else hash = pkh; + } + if (a.input) { + const chunks = _chunks(); + if (chunks.length !== 2) throw new TypeError("Input is invalid"); + if (!bscript.isCanonicalScriptSignature(chunks[0])) throw new TypeError("Input has invalid signature"); + if (!tiny_secp256k1_1.default.isPoint(chunks[1])) throw new TypeError("Input has invalid pubkey"); + if (a.signature && !a.signature.equals(chunks[0])) throw new TypeError("Signature mismatch"); + if (a.pubkey && !a.pubkey.equals(chunks[1])) throw new TypeError("Pubkey mismatch"); + const pkh = bcrypto.hash160(chunks[1]); + if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2sh.js +var require_p2sh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2sh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2sh = p2sh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check = tslib_1.__importStar(require_bs58check()); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function stacksEqual(a, b) { + if (a.length !== b.length) return false; + return a.every((x, i) => x.equals(b[i])); + } + function p2sh(a, opts) { + if (!a.address && !a.hash && !a.output && !a.redeem && !a.input) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.BufferN(23)), + redeem: types_1.typeforce.maybe({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer), + input: types_1.typeforce.maybe(types_1.typeforce.Buffer), + witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }), + input: types_1.typeforce.maybe(types_1.typeforce.Buffer), + witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }, a); + let { + network + } = a; + if (!network) { + network = a.redeem && a.redeem.network || networks_1.bitcoin; + } + const o = { + name: "p2sh", + network + }; + const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network)); + const _chunks = lazy.value(() => bscript.decompile(a.input)); + const _redeem = lazy.value(() => { + const chunks = _chunks(); + return { + network, + output: chunks[chunks.length - 1], + input: bscript.compile(chunks.slice(0, -1)), + witness: a.witness || [] + }; + }); + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.scriptHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(2, 22); + if (a.address) return _address().hash; + if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output); + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]); + }); + lazy.prop(o, "redeem", () => { + if (!a.input) return; + return _redeem(); + }); + lazy.prop(o, "input", () => { + if (!a.redeem || !a.redeem.input || !a.redeem.output) return; + return bscript.compile([].concat(bscript.decompile(a.redeem.input), a.redeem.output)); + }); + lazy.prop(o, "witness", () => { + if (o.redeem && o.redeem.witness) return o.redeem.witness; + if (o.input) return []; + }); + lazy.prop(o, "name", () => { + const nameParts = ["p2sh"]; + if (o.redeem !== void 0 && o.redeem.name !== void 0) nameParts.push(o.redeem.name); + return nameParts.join("-"); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.scriptHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 23 || a.output[0] !== OPS.OP_HASH160 || a.output[1] !== 20 || a.output[22] !== OPS.OP_EQUAL) throw new TypeError("Output is invalid"); + const hash2 = a.output.subarray(2, 22); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + const checkRedeem = (redeem) => { + if (redeem.output) { + const decompile = bscript.decompile(redeem.output); + if (!decompile || decompile.length < 1) throw new TypeError("Redeem.output too short"); + const hash2 = bcrypto.hash160(redeem.output); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + if (redeem.input) { + const hasInput = redeem.input.length > 0; + const hasWitness = redeem.witness && redeem.witness.length > 0; + if (!hasInput && !hasWitness) throw new TypeError("Empty input"); + if (hasInput && hasWitness) throw new TypeError("Input and witness provided"); + if (hasInput) { + const richunks = bscript.decompile(redeem.input); + if (!bscript.isPushOnly(richunks)) throw new TypeError("Non push-only scriptSig"); + } + } + }; + if (a.input) { + const chunks = _chunks(); + if (!chunks || chunks.length < 1) throw new TypeError("Input too short"); + if (!Buffer.isBuffer(_redeem().output)) throw new TypeError("Input is invalid"); + checkRedeem(_redeem()); + } + if (a.redeem) { + if (a.redeem.network && a.redeem.network !== network) throw new TypeError("Network mismatch"); + if (a.input) { + const redeem = _redeem(); + if (a.redeem.output && !a.redeem.output.equals(redeem.output)) throw new TypeError("Redeem.output mismatch"); + if (a.redeem.input && !a.redeem.input.equals(redeem.input)) throw new TypeError("Redeem.input mismatch"); + } + checkRedeem(a.redeem); + } + if (a.witness) { + if (a.redeem && a.redeem.witness && !stacksEqual(a.redeem.witness, a.witness)) throw new TypeError("Witness and redeem.witness mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2tr.js +var require_p2tr = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2tr.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2tr = p2tr; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bech32_1 = require_dist8(); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + var TAGS = ["TapLeaf", "TapBranch", "TapTweak", "KeyAgg list", "KeyAgg coefficient"]; + var TAGGED_HASH_PREFIXES = TAGS.reduce((obj, tag) => { + const tagHash = bcrypto.sha256(Buffer.from(tag)); + obj[tag] = Buffer.concat([tagHash, tagHash]); + return obj; + }, {}); + var EVEN_Y_COORD_PREFIX = new Uint8Array([2]); + function taggedHash(prefix, data) { + return bcrypto.sha256(Buffer.concat([TAGGED_HASH_PREFIXES[prefix], data])); + } + function tapTweakPubkey(pubkey, tapTreeRoot) { + let tapTweak; + if (tapTreeRoot) { + tapTweak = taggedHash("TapTweak", Buffer.concat([pubkey, tapTreeRoot])); + } else { + tapTweak = taggedHash("TapTweak", pubkey); + } + const tweakedPubkey = tiny_secp256k1_1.default.pointAddScalar(Buffer.concat([EVEN_Y_COORD_PREFIX, pubkey]), tapTweak); + return { + parity: tweakedPubkey[0] === EVEN_Y_COORD_PREFIX[0] ? 0 : 1, + pubkey: tweakedPubkey.slice(1) + }; + } + var liftX = (pubkey) => { + const offset = pubkey.length === 33 ? 1 : 0; + return pubkey.subarray(offset); + }; + function p2tr(a, opts) { + if (!a.address && !a.pubkey && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + const network = a.network || networks_1.bitcoin; + const o = { + name: "p2tr", + network + }; + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + output: types_1.typeforce.maybe(types_1.typeforce.BufferN(34)), + pubkey: types_1.typeforce.maybe(types_1.typeforce.anyOf(types_1.typeforce.BufferN(32), types_1.typeforce.BufferN(33))) + }, a); + const _address = lazy.value(() => { + const result = bech32_1.bech32m.decode(a.address); + const version = result.words.shift(); + const data = bech32_1.bech32m.fromWords(result.words); + return { + version, + prefix: result.prefix, + data: Buffer.from(data) + }; + }); + lazy.prop(o, "address", () => { + if (!o.hash) return; + const words = bech32_1.bech32m.toWords(o.hash); + words.unshift(1); + return bech32_1.bech32m.encode(network.bech32, words); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(2); + if (a.address) return _address().data; + if (a.pubkey) { + return tapTweakPubkey(liftX(a.pubkey)).pubkey; + } + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_1, o.hash]); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + prefix, + version, + data + } = _address(); + if (prefix !== network.bech32) throw new TypeError("Invalid prefix or Network mismatch"); + if (version !== 1) throw new TypeError("Invalid address version"); + if (data.length !== 32) throw new TypeError("Invalid address data"); + hash = data; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output[0] !== OPS.OP_1 || a.output[1] !== 32) throw new TypeError("p2tr output is invalid"); + const hash2 = a.output.subarray(2); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + if (a.pubkey) { + const pkh = tapTweakPubkey(liftX(a.pubkey)).pubkey; + if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError("Hash mismatch"); + else hash = pkh; + if (!tiny_secp256k1_1.default.isPoint(Buffer.concat([EVEN_Y_COORD_PREFIX, liftX(a.pubkey)]))) throw new TypeError("Invalid pubkey for p2tr"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2wpkh.js +var require_p2wpkh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2wpkh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2wpkh = p2wpkh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bech32_1 = require_dist8(); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var types_1 = require_types5(); + var lazy = tslib_1.__importStar(require_lazy()); + var { + OPS + } = bscript; + var EMPTY_BUFFER = Buffer.alloc(0); + function p2wpkh(a, opts) { + if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + input: types_1.typeforce.maybe(types_1.typeforce.BufferN(0)), + network: types_1.typeforce.maybe(types_1.typeforce.Object), + output: types_1.typeforce.maybe(types_1.typeforce.BufferN(22)), + pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint), + signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature), + witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }, a); + const _address = lazy.value(() => { + const result = bech32_1.bech32.decode(a.address); + const version = result.words.shift(); + const data = bech32_1.bech32.fromWords(result.words); + return { + version, + prefix: result.prefix, + data: Buffer.from(data) + }; + }); + const network = a.network || networks_1.bitcoin; + const o = { + name: "p2wpkh", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + const words = bech32_1.bech32.toWords(o.hash); + words.unshift(0); + return bech32_1.bech32.encode(network.bech32, words); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(2, 22); + if (a.address) return _address().data; + if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey); + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_0, o.hash]); + }); + lazy.prop(o, "pubkey", () => { + if (a.pubkey) return a.pubkey; + if (!a.witness) return; + return a.witness[1]; + }); + lazy.prop(o, "signature", () => { + if (!a.witness) return; + return a.witness[0]; + }); + lazy.prop(o, "input", () => { + if (!o.witness) return; + return EMPTY_BUFFER; + }); + lazy.prop(o, "witness", () => { + if (!a.pubkey) return; + if (!a.signature) return; + return [a.signature, a.pubkey]; + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + prefix, + version, + data + } = _address(); + if (network && network.bech32 !== prefix) throw new TypeError("Invalid prefix or Network mismatch"); + if (version !== 0) throw new TypeError("Invalid address version"); + if (data.length !== 20) throw new TypeError("Invalid address data"); + hash = data; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 22 || a.output[0] !== OPS.OP_0 || a.output[1] !== 20) throw new TypeError("Output is invalid"); + if (hash.length > 0 && !hash.equals(a.output.subarray(2))) throw new TypeError("Hash mismatch"); + else hash = a.output.subarray(2); + } + if (a.pubkey) { + const pkh = bcrypto.hash160(a.pubkey); + if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError("Hash mismatch"); + else hash = pkh; + if (!tiny_secp256k1_1.default.isPoint(a.pubkey) || a.pubkey.length !== 33) throw new TypeError("Invalid pubkey for p2wpkh"); + } + if (a.witness) { + if (a.witness.length !== 2) throw new TypeError("Witness is invalid"); + if (!bscript.isCanonicalScriptSignature(a.witness[0])) throw new TypeError("Witness has invalid signature"); + if (!tiny_secp256k1_1.default.isPoint(a.witness[1]) || a.witness[1].length !== 33) throw new TypeError("Witness has invalid pubkey"); + if (a.signature && !a.signature.equals(a.witness[0])) throw new TypeError("Signature mismatch"); + if (a.pubkey && !a.pubkey.equals(a.witness[1])) throw new TypeError("Pubkey mismatch"); + const pkh = bcrypto.hash160(a.witness[1]); + if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/p2wsh.js +var require_p2wsh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/p2wsh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.p2wsh = p2wsh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bech32_1 = require_dist8(); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + var EMPTY_BUFFER = Buffer.alloc(0); + function stacksEqual(a, b) { + if (a.length !== b.length) return false; + return a.every((x, i) => x.equals(b[i])); + } + function chunkHasUncompressedPubkey(chunk) { + if (Buffer.isBuffer(chunk) && chunk.length === 65 && chunk[0] === 4 && tiny_secp256k1_1.default.isPoint(chunk)) { + return true; + } + return false; + } + function p2wsh(a, opts) { + if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(32)), + output: types_1.typeforce.maybe(types_1.typeforce.BufferN(34)), + redeem: types_1.typeforce.maybe({ + input: types_1.typeforce.maybe(types_1.typeforce.Buffer), + network: types_1.typeforce.maybe(types_1.typeforce.Object), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer), + witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }), + input: types_1.typeforce.maybe(types_1.typeforce.BufferN(0)), + witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer)) + }, a); + const _address = lazy.value(() => { + const result = bech32_1.bech32.decode(a.address); + const version = result.words.shift(); + const data = bech32_1.bech32.fromWords(result.words); + return { + version, + prefix: result.prefix, + data: Buffer.from(data) + }; + }); + const _rchunks = lazy.value(() => bscript.decompile(a.redeem.input)); + let { + network + } = a; + if (!network) { + network = a.redeem && a.redeem.network || networks_1.bitcoin; + } + const o = { + name: "p2wsh", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + const words = bech32_1.bech32.toWords(o.hash); + words.unshift(0); + return bech32_1.bech32.encode(network.bech32, words); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(2); + if (a.address) return _address().data; + if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output); + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_0, o.hash]); + }); + lazy.prop(o, "redeem", () => { + if (!a.witness) return; + return { + output: a.witness[a.witness.length - 1], + input: EMPTY_BUFFER, + witness: a.witness.slice(0, -1) + }; + }); + lazy.prop(o, "input", () => { + if (!o.witness) return; + return EMPTY_BUFFER; + }); + lazy.prop(o, "witness", () => { + if (a.redeem && a.redeem.input && a.redeem.input.length > 0 && a.redeem.output && a.redeem.output.length > 0) { + const stack = bscript.toStack(_rchunks()); + o.redeem = Object.assign({ + witness: stack + }, a.redeem); + o.redeem.input = EMPTY_BUFFER; + return [].concat(stack, a.redeem.output); + } + if (!a.redeem) return; + if (!a.redeem.output) return; + if (!a.redeem.witness) return; + return [].concat(a.redeem.witness, a.redeem.output); + }); + lazy.prop(o, "name", () => { + const nameParts = ["p2wsh"]; + if (o.redeem !== void 0 && o.redeem.name !== void 0) nameParts.push(o.redeem.name); + return nameParts.join("-"); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + prefix, + version, + data + } = _address(); + if (prefix !== network.bech32) throw new TypeError("Invalid prefix or Network mismatch"); + if (version !== 0) throw new TypeError("Invalid address version"); + if (data.length !== 32) throw new TypeError("Invalid address data"); + hash = data; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 34 || a.output[0] !== OPS.OP_0 || a.output[1] !== 32) throw new TypeError("Output is invalid"); + const hash2 = a.output.subarray(2); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + if (a.redeem) { + if (a.redeem.network && a.redeem.network !== network) throw new TypeError("Network mismatch"); + if (a.redeem.input && a.redeem.input.length > 0 && a.redeem.witness && a.redeem.witness.length > 0) throw new TypeError("Ambiguous witness source"); + if (a.redeem.output) { + if (bscript.decompile(a.redeem.output).length === 0) throw new TypeError("Redeem.output is invalid"); + const hash2 = bcrypto.sha256(a.redeem.output); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + else hash = hash2; + } + if (a.redeem.input && !bscript.isPushOnly(_rchunks())) throw new TypeError("Non push-only scriptSig"); + if (a.witness && a.redeem.witness && !stacksEqual(a.witness, a.redeem.witness)) throw new TypeError("Witness and redeem.witness mismatch"); + if (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey) || a.redeem.output && (bscript.decompile(a.redeem.output) || []).some(chunkHasUncompressedPubkey)) { + throw new TypeError("redeem.input or redeem.output contains uncompressed pubkey"); + } + } + if (a.witness && a.witness.length > 0) { + const wScript = a.witness[a.witness.length - 1]; + if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript)) throw new TypeError("Witness and redeem.output mismatch"); + if (a.witness.some(chunkHasUncompressedPubkey) || (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)) throw new TypeError("Witness contains uncompressed pubkey"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/sstxchange.js +var require_sstxchange = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/sstxchange.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sstxchange = sstxchange; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check = tslib_1.__importStar(require_bs58check()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function sstxchange(a, opts) { + if (!a.address && !a.hash && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network)); + const network = a.network || networks_1.decred; + const o = { + name: "sstxchange", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.pubKeyHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(4, 24); + if (a.address) return _address().hash; + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_SSTXCHANGE, OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.pubKeyHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 26 || a.output[0] !== OPS.OP_SSTXCHANGE || a.output[1] !== OPS.OP_DUP || a.output[2] !== OPS.OP_HASH160 || a.output[3] !== 20 || a.output[24] !== OPS.OP_EQUALVERIFY || a.output[25] !== OPS.OP_CHECKSIG) throw new TypeError("sstxchange output is invalid"); + const hash2 = a.output.subarray(4, 24); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/node_modules/bn.js/lib/bn.js +var require_bn2 = __commonJS({ + "node_modules/@trezor/utxo-lib/node_modules/bn.js/lib/bn.js"(exports2, module2) { + (function(module3, exports3) { + "use strict"; + function assert(val, msg) { + if (!val) throw new Error(msg || "Assertion failed"); + } + function inherits(ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + function BN(number, base, endian) { + if (BN.isBN(number)) { + return number; + } + this.negative = 0; + this.words = null; + this.length = 0; + this.red = null; + if (number !== null) { + if (base === "le" || base === "be") { + endian = base; + base = 10; + } + this._init(number || 0, base || 10, endian || "be"); + } + } + if (typeof module3 === "object") { + module3.exports = BN; + } else { + exports3.BN = BN; + } + BN.BN = BN; + BN.wordSize = 26; + var Buffer2; + try { + if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") { + Buffer2 = window.Buffer; + } else { + Buffer2 = __require("buffer").Buffer; + } + } catch (e) { + } + BN.isBN = function isBN(num) { + if (num instanceof BN) { + return true; + } + return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + BN.max = function max(left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + BN.min = function min(left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + BN.prototype._init = function init(number, base, endian) { + if (typeof number === "number") { + return this._initNumber(number, base, endian); + } + if (typeof number === "object") { + return this._initArray(number, base, endian); + } + if (base === "hex") { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + number = number.toString().replace(/\s+/g, ""); + var start = 0; + if (number[0] === "-") { + start++; + this.negative = 1; + } + if (start < number.length) { + if (base === 16) { + this._parseHex(number, start, endian); + } else { + this._parseBase(number, base, start); + if (endian === "le") { + this._initArray(this.toArray(), base, endian); + } + } + } + }; + BN.prototype._initNumber = function _initNumber(number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 67108864) { + this.words = [number & 67108863]; + this.length = 1; + } else if (number < 4503599627370496) { + this.words = [ + number & 67108863, + number / 67108864 & 67108863 + ]; + this.length = 2; + } else { + assert(number < 9007199254740992); + this.words = [ + number & 67108863, + number / 67108864 & 67108863, + 1 + ]; + this.length = 3; + } + if (endian !== "le") return; + this._initArray(this.toArray(), base, endian); + }; + BN.prototype._initArray = function _initArray(number, base, endian) { + assert(typeof number.length === "number"); + if (number.length <= 0) { + this.words = [0]; + this.length = 1; + return this; + } + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var j, w; + var off = 0; + if (endian === "be") { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === "le") { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; + this.words[j] |= w << off & 67108863; + this.words[j + 1] = w >>> 26 - off & 67108863; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this._strip(); + }; + function parseHex4Bits(string, index) { + var c = string.charCodeAt(index); + if (c >= 48 && c <= 57) { + return c - 48; + } else if (c >= 65 && c <= 70) { + return c - 55; + } else if (c >= 97 && c <= 102) { + return c - 87; + } else { + assert(false, "Invalid character in " + string); + } + } + function parseHexByte(string, lowerBound, index) { + var r = parseHex4Bits(string, index); + if (index - 1 >= lowerBound) { + r |= parseHex4Bits(string, index - 1) << 4; + } + return r; + } + BN.prototype._parseHex = function _parseHex(number, start, endian) { + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + var off = 0; + var j = 0; + var w; + if (endian === "be") { + for (i = number.length - 1; i >= start; i -= 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } else { + var parseLength = number.length - start; + for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) { + w = parseHexByte(number, start, i) << off; + this.words[j] |= w & 67108863; + if (off >= 18) { + off -= 18; + j += 1; + this.words[j] |= w >>> 26; + } else { + off += 8; + } + } + } + this._strip(); + }; + function parseBase(str, start, end, mul) { + var r = 0; + var b = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + r *= mul; + if (c >= 49) { + b = c - 49 + 10; + } else if (c >= 17) { + b = c - 17 + 10; + } else { + b = c; + } + assert(c >= 0 && b < mul, "Invalid character"); + r += b; + } + return r; + } + BN.prototype._parseBase = function _parseBase(number, base, start) { + this.words = [0]; + this.length = 1; + for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = limbPow / base | 0; + var total = number.length - start; + var mod3 = total % limbLen; + var end = Math.min(total, total - mod3) + start; + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + this.imuln(limbPow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + if (mod3 !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + for (i = 0; i < mod3; i++) { + pow *= base; + } + this.imuln(pow); + if (this.words[0] + word < 67108864) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + this._strip(); + }; + BN.prototype.copy = function copy(dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + function move(dest, src) { + dest.words = src.words; + dest.length = src.length; + dest.negative = src.negative; + dest.red = src.red; + } + BN.prototype._move = function _move(dest) { + move(dest, this); + }; + BN.prototype.clone = function clone() { + var r = new BN(null); + this.copy(r); + return r; + }; + BN.prototype._expand = function _expand(size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + BN.prototype._strip = function strip() { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + BN.prototype._normSign = function _normSign() { + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + if (typeof Symbol !== "undefined" && typeof Symbol.for === "function") { + try { + BN.prototype[Symbol.for("nodejs.util.inspect.custom")] = inspect; + } catch (e) { + BN.prototype.inspect = inspect; + } + } else { + BN.prototype.inspect = inspect; + } + function inspect() { + return (this.red ? ""; + } + var zeros = [ + "", + "0", + "00", + "000", + "0000", + "00000", + "000000", + "0000000", + "00000000", + "000000000", + "0000000000", + "00000000000", + "000000000000", + "0000000000000", + "00000000000000", + "000000000000000", + "0000000000000000", + "00000000000000000", + "000000000000000000", + "0000000000000000000", + "00000000000000000000", + "000000000000000000000", + "0000000000000000000000", + "00000000000000000000000", + "000000000000000000000000", + "0000000000000000000000000" + ]; + var groupSizes = [ + 0, + 0, + 25, + 16, + 12, + 11, + 10, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5 + ]; + var groupBases = [ + 0, + 0, + 33554432, + 43046721, + 16777216, + 48828125, + 60466176, + 40353607, + 16777216, + 43046721, + 1e7, + 19487171, + 35831808, + 62748517, + 7529536, + 11390625, + 16777216, + 24137569, + 34012224, + 47045881, + 64e6, + 4084101, + 5153632, + 6436343, + 7962624, + 9765625, + 11881376, + 14348907, + 17210368, + 20511149, + 243e5, + 28629151, + 33554432, + 39135393, + 45435424, + 52521875, + 60466176 + ]; + BN.prototype.toString = function toString(base, padding) { + base = base || 10; + padding = padding | 0 || 1; + var out; + if (base === 16 || base === "hex") { + out = ""; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = ((w << off | carry) & 16777215).toString(16); + carry = w >>> 24 - off & 16777215; + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + if (base === (base | 0) && base >= 2 && base <= 36) { + var groupSize = groupSizes[base]; + var groupBase = groupBases[base]; + out = ""; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modrn(groupBase).toString(base); + c = c.idivn(groupBase); + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = "0" + out; + } + while (out.length % padding !== 0) { + out = "0" + out; + } + if (this.negative !== 0) { + out = "-" + out; + } + return out; + } + assert(false, "Base should be between 2 and 36"); + }; + BN.prototype.toNumber = function toNumber() { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 67108864; + } else if (this.length === 3 && this.words[2] === 1) { + ret += 4503599627370496 + this.words[1] * 67108864; + } else if (this.length > 2) { + assert(false, "Number can only safely store up to 53 bits"); + } + return this.negative !== 0 ? -ret : ret; + }; + BN.prototype.toJSON = function toJSON() { + return this.toString(16, 2); + }; + if (Buffer2) { + BN.prototype.toBuffer = function toBuffer(endian, length) { + return this.toArrayLike(Buffer2, endian, length); + }; + } + BN.prototype.toArray = function toArray(endian, length) { + return this.toArrayLike(Array, endian, length); + }; + var allocate = function allocate2(ArrayType, size) { + if (ArrayType.allocUnsafe) { + return ArrayType.allocUnsafe(size); + } + return new ArrayType(size); + }; + BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { + this._strip(); + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, "byte array longer than desired length"); + assert(reqLength > 0, "Requested array length <= 0"); + var res = allocate(ArrayType, reqLength); + var postfix = endian === "le" ? "LE" : "BE"; + this["_toArrayLike" + postfix](res, byteLength); + return res; + }; + BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) { + var position = 0; + var carry = 0; + for (var i = 0, shift = 0; i < this.length; i++) { + var word = this.words[i] << shift | carry; + res[position++] = word & 255; + if (position < res.length) { + res[position++] = word >> 8 & 255; + } + if (position < res.length) { + res[position++] = word >> 16 & 255; + } + if (shift === 6) { + if (position < res.length) { + res[position++] = word >> 24 & 255; + } + carry = 0; + shift = 0; + } else { + carry = word >>> 24; + shift += 2; + } + } + if (position < res.length) { + res[position++] = carry; + while (position < res.length) { + res[position++] = 0; + } + } + }; + BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) { + var position = res.length - 1; + var carry = 0; + for (var i = 0, shift = 0; i < this.length; i++) { + var word = this.words[i] << shift | carry; + res[position--] = word & 255; + if (position >= 0) { + res[position--] = word >> 8 & 255; + } + if (position >= 0) { + res[position--] = word >> 16 & 255; + } + if (shift === 6) { + if (position >= 0) { + res[position--] = word >> 24 & 255; + } + carry = 0; + shift = 0; + } else { + carry = word >>> 24; + shift += 2; + } + } + if (position >= 0) { + res[position--] = carry; + while (position >= 0) { + res[position--] = 0; + } + } + }; + if (Math.clz32) { + BN.prototype._countBits = function _countBits(w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits(w) { + var t = w; + var r = 0; + if (t >= 4096) { + r += 13; + t >>>= 13; + } + if (t >= 64) { + r += 7; + t >>>= 7; + } + if (t >= 8) { + r += 4; + t >>>= 4; + } + if (t >= 2) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + BN.prototype._zeroBits = function _zeroBits(w) { + if (w === 0) return 26; + var t = w; + var r = 0; + if ((t & 8191) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 127) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 15) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 1) === 0) { + r++; + } + return r; + }; + BN.prototype.bitLength = function bitLength() { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + function toBitArray(num) { + var w = new Array(num.bitLength()); + for (var bit = 0; bit < w.length; bit++) { + var off = bit / 26 | 0; + var wbit = bit % 26; + w[bit] = num.words[off] >>> wbit & 1; + } + return w; + } + BN.prototype.zeroBits = function zeroBits() { + if (this.isZero()) return 0; + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + BN.prototype.byteLength = function byteLength() { + return Math.ceil(this.bitLength() / 8); + }; + BN.prototype.toTwos = function toTwos(width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + BN.prototype.fromTwos = function fromTwos(width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + BN.prototype.isNeg = function isNeg() { + return this.negative !== 0; + }; + BN.prototype.neg = function neg() { + return this.clone().ineg(); + }; + BN.prototype.ineg = function ineg() { + if (!this.isZero()) { + this.negative ^= 1; + } + return this; + }; + BN.prototype.iuor = function iuor(num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + return this._strip(); + }; + BN.prototype.ior = function ior(num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + BN.prototype.or = function or(num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + BN.prototype.uor = function uor(num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + BN.prototype.iuand = function iuand(num) { + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + this.length = b.length; + return this._strip(); + }; + BN.prototype.iand = function iand(num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + BN.prototype.and = function and(num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + BN.prototype.uand = function uand(num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + BN.prototype.iuxor = function iuxor(num) { + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = a.length; + return this._strip(); + }; + BN.prototype.ixor = function ixor(num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + BN.prototype.xor = function xor(num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + BN.prototype.uxor = function uxor(num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + BN.prototype.inotn = function inotn(width) { + assert(typeof width === "number" && width >= 0); + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + this._expand(bytesNeeded); + if (bitsLeft > 0) { + bytesNeeded--; + } + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 67108863; + } + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft; + } + return this._strip(); + }; + BN.prototype.notn = function notn(width) { + return this.clone().inotn(width); + }; + BN.prototype.setn = function setn(bit, val) { + assert(typeof bit === "number" && bit >= 0); + var off = bit / 26 | 0; + var wbit = bit % 26; + this._expand(off + 1); + if (val) { + this.words[off] = this.words[off] | 1 << wbit; + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + return this._strip(); + }; + BN.prototype.iadd = function iadd(num) { + var r; + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 67108863; + carry = r >>> 26; + } + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + return this; + }; + BN.prototype.add = function add2(num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + if (this.length > num.length) return this.clone().iadd(num); + return num.clone().iadd(this); + }; + BN.prototype.isub = function isub(num) { + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + var cmp = this.cmp(num); + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 67108863; + } + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + this.length = Math.max(this.length, i); + if (a !== this) { + this.negative = 1; + } + return this._strip(); + }; + BN.prototype.sub = function sub(num) { + return this.clone().isub(num); + }; + function smallMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + var len = self2.length + num.length | 0; + out.length = len; + len = len - 1 | 0; + var a = self2.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + var lo = r & 67108863; + var carry = r / 67108864 | 0; + out.words[0] = lo; + for (var k = 1; k < len; k++) { + var ncarry = carry >>> 26; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j | 0; + a = self2.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += r / 67108864 | 0; + rword = r & 67108863; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + return out._strip(); + } + var comb10MulTo = function comb10MulTo2(self2, num, out) { + var a = self2.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 8191; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 8191; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 8191; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 8191; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 8191; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 8191; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 8191; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 8191; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 8191; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 8191; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 8191; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 8191; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 8191; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 8191; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 8191; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 8191; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 8191; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 8191; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 8191; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 8191; + var bh9 = b9 >>> 13; + out.negative = self2.negative ^ num.negative; + out.length = 19; + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = mid + Math.imul(ah0, bl0) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; + w0 &= 67108863; + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = mid + Math.imul(ah1, bl0) | 0; + hi = Math.imul(ah1, bh0); + lo = lo + Math.imul(al0, bl1) | 0; + mid = mid + Math.imul(al0, bh1) | 0; + mid = mid + Math.imul(ah0, bl1) | 0; + hi = hi + Math.imul(ah0, bh1) | 0; + var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; + w1 &= 67108863; + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = mid + Math.imul(ah2, bl0) | 0; + hi = Math.imul(ah2, bh0); + lo = lo + Math.imul(al1, bl1) | 0; + mid = mid + Math.imul(al1, bh1) | 0; + mid = mid + Math.imul(ah1, bl1) | 0; + hi = hi + Math.imul(ah1, bh1) | 0; + lo = lo + Math.imul(al0, bl2) | 0; + mid = mid + Math.imul(al0, bh2) | 0; + mid = mid + Math.imul(ah0, bl2) | 0; + hi = hi + Math.imul(ah0, bh2) | 0; + var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; + w2 &= 67108863; + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = mid + Math.imul(ah3, bl0) | 0; + hi = Math.imul(ah3, bh0); + lo = lo + Math.imul(al2, bl1) | 0; + mid = mid + Math.imul(al2, bh1) | 0; + mid = mid + Math.imul(ah2, bl1) | 0; + hi = hi + Math.imul(ah2, bh1) | 0; + lo = lo + Math.imul(al1, bl2) | 0; + mid = mid + Math.imul(al1, bh2) | 0; + mid = mid + Math.imul(ah1, bl2) | 0; + hi = hi + Math.imul(ah1, bh2) | 0; + lo = lo + Math.imul(al0, bl3) | 0; + mid = mid + Math.imul(al0, bh3) | 0; + mid = mid + Math.imul(ah0, bl3) | 0; + hi = hi + Math.imul(ah0, bh3) | 0; + var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; + w3 &= 67108863; + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = mid + Math.imul(ah4, bl0) | 0; + hi = Math.imul(ah4, bh0); + lo = lo + Math.imul(al3, bl1) | 0; + mid = mid + Math.imul(al3, bh1) | 0; + mid = mid + Math.imul(ah3, bl1) | 0; + hi = hi + Math.imul(ah3, bh1) | 0; + lo = lo + Math.imul(al2, bl2) | 0; + mid = mid + Math.imul(al2, bh2) | 0; + mid = mid + Math.imul(ah2, bl2) | 0; + hi = hi + Math.imul(ah2, bh2) | 0; + lo = lo + Math.imul(al1, bl3) | 0; + mid = mid + Math.imul(al1, bh3) | 0; + mid = mid + Math.imul(ah1, bl3) | 0; + hi = hi + Math.imul(ah1, bh3) | 0; + lo = lo + Math.imul(al0, bl4) | 0; + mid = mid + Math.imul(al0, bh4) | 0; + mid = mid + Math.imul(ah0, bl4) | 0; + hi = hi + Math.imul(ah0, bh4) | 0; + var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; + w4 &= 67108863; + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = mid + Math.imul(ah5, bl0) | 0; + hi = Math.imul(ah5, bh0); + lo = lo + Math.imul(al4, bl1) | 0; + mid = mid + Math.imul(al4, bh1) | 0; + mid = mid + Math.imul(ah4, bl1) | 0; + hi = hi + Math.imul(ah4, bh1) | 0; + lo = lo + Math.imul(al3, bl2) | 0; + mid = mid + Math.imul(al3, bh2) | 0; + mid = mid + Math.imul(ah3, bl2) | 0; + hi = hi + Math.imul(ah3, bh2) | 0; + lo = lo + Math.imul(al2, bl3) | 0; + mid = mid + Math.imul(al2, bh3) | 0; + mid = mid + Math.imul(ah2, bl3) | 0; + hi = hi + Math.imul(ah2, bh3) | 0; + lo = lo + Math.imul(al1, bl4) | 0; + mid = mid + Math.imul(al1, bh4) | 0; + mid = mid + Math.imul(ah1, bl4) | 0; + hi = hi + Math.imul(ah1, bh4) | 0; + lo = lo + Math.imul(al0, bl5) | 0; + mid = mid + Math.imul(al0, bh5) | 0; + mid = mid + Math.imul(ah0, bl5) | 0; + hi = hi + Math.imul(ah0, bh5) | 0; + var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; + w5 &= 67108863; + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = mid + Math.imul(ah6, bl0) | 0; + hi = Math.imul(ah6, bh0); + lo = lo + Math.imul(al5, bl1) | 0; + mid = mid + Math.imul(al5, bh1) | 0; + mid = mid + Math.imul(ah5, bl1) | 0; + hi = hi + Math.imul(ah5, bh1) | 0; + lo = lo + Math.imul(al4, bl2) | 0; + mid = mid + Math.imul(al4, bh2) | 0; + mid = mid + Math.imul(ah4, bl2) | 0; + hi = hi + Math.imul(ah4, bh2) | 0; + lo = lo + Math.imul(al3, bl3) | 0; + mid = mid + Math.imul(al3, bh3) | 0; + mid = mid + Math.imul(ah3, bl3) | 0; + hi = hi + Math.imul(ah3, bh3) | 0; + lo = lo + Math.imul(al2, bl4) | 0; + mid = mid + Math.imul(al2, bh4) | 0; + mid = mid + Math.imul(ah2, bl4) | 0; + hi = hi + Math.imul(ah2, bh4) | 0; + lo = lo + Math.imul(al1, bl5) | 0; + mid = mid + Math.imul(al1, bh5) | 0; + mid = mid + Math.imul(ah1, bl5) | 0; + hi = hi + Math.imul(ah1, bh5) | 0; + lo = lo + Math.imul(al0, bl6) | 0; + mid = mid + Math.imul(al0, bh6) | 0; + mid = mid + Math.imul(ah0, bl6) | 0; + hi = hi + Math.imul(ah0, bh6) | 0; + var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; + w6 &= 67108863; + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = mid + Math.imul(ah7, bl0) | 0; + hi = Math.imul(ah7, bh0); + lo = lo + Math.imul(al6, bl1) | 0; + mid = mid + Math.imul(al6, bh1) | 0; + mid = mid + Math.imul(ah6, bl1) | 0; + hi = hi + Math.imul(ah6, bh1) | 0; + lo = lo + Math.imul(al5, bl2) | 0; + mid = mid + Math.imul(al5, bh2) | 0; + mid = mid + Math.imul(ah5, bl2) | 0; + hi = hi + Math.imul(ah5, bh2) | 0; + lo = lo + Math.imul(al4, bl3) | 0; + mid = mid + Math.imul(al4, bh3) | 0; + mid = mid + Math.imul(ah4, bl3) | 0; + hi = hi + Math.imul(ah4, bh3) | 0; + lo = lo + Math.imul(al3, bl4) | 0; + mid = mid + Math.imul(al3, bh4) | 0; + mid = mid + Math.imul(ah3, bl4) | 0; + hi = hi + Math.imul(ah3, bh4) | 0; + lo = lo + Math.imul(al2, bl5) | 0; + mid = mid + Math.imul(al2, bh5) | 0; + mid = mid + Math.imul(ah2, bl5) | 0; + hi = hi + Math.imul(ah2, bh5) | 0; + lo = lo + Math.imul(al1, bl6) | 0; + mid = mid + Math.imul(al1, bh6) | 0; + mid = mid + Math.imul(ah1, bl6) | 0; + hi = hi + Math.imul(ah1, bh6) | 0; + lo = lo + Math.imul(al0, bl7) | 0; + mid = mid + Math.imul(al0, bh7) | 0; + mid = mid + Math.imul(ah0, bl7) | 0; + hi = hi + Math.imul(ah0, bh7) | 0; + var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; + w7 &= 67108863; + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = mid + Math.imul(ah8, bl0) | 0; + hi = Math.imul(ah8, bh0); + lo = lo + Math.imul(al7, bl1) | 0; + mid = mid + Math.imul(al7, bh1) | 0; + mid = mid + Math.imul(ah7, bl1) | 0; + hi = hi + Math.imul(ah7, bh1) | 0; + lo = lo + Math.imul(al6, bl2) | 0; + mid = mid + Math.imul(al6, bh2) | 0; + mid = mid + Math.imul(ah6, bl2) | 0; + hi = hi + Math.imul(ah6, bh2) | 0; + lo = lo + Math.imul(al5, bl3) | 0; + mid = mid + Math.imul(al5, bh3) | 0; + mid = mid + Math.imul(ah5, bl3) | 0; + hi = hi + Math.imul(ah5, bh3) | 0; + lo = lo + Math.imul(al4, bl4) | 0; + mid = mid + Math.imul(al4, bh4) | 0; + mid = mid + Math.imul(ah4, bl4) | 0; + hi = hi + Math.imul(ah4, bh4) | 0; + lo = lo + Math.imul(al3, bl5) | 0; + mid = mid + Math.imul(al3, bh5) | 0; + mid = mid + Math.imul(ah3, bl5) | 0; + hi = hi + Math.imul(ah3, bh5) | 0; + lo = lo + Math.imul(al2, bl6) | 0; + mid = mid + Math.imul(al2, bh6) | 0; + mid = mid + Math.imul(ah2, bl6) | 0; + hi = hi + Math.imul(ah2, bh6) | 0; + lo = lo + Math.imul(al1, bl7) | 0; + mid = mid + Math.imul(al1, bh7) | 0; + mid = mid + Math.imul(ah1, bl7) | 0; + hi = hi + Math.imul(ah1, bh7) | 0; + lo = lo + Math.imul(al0, bl8) | 0; + mid = mid + Math.imul(al0, bh8) | 0; + mid = mid + Math.imul(ah0, bl8) | 0; + hi = hi + Math.imul(ah0, bh8) | 0; + var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; + w8 &= 67108863; + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = mid + Math.imul(ah9, bl0) | 0; + hi = Math.imul(ah9, bh0); + lo = lo + Math.imul(al8, bl1) | 0; + mid = mid + Math.imul(al8, bh1) | 0; + mid = mid + Math.imul(ah8, bl1) | 0; + hi = hi + Math.imul(ah8, bh1) | 0; + lo = lo + Math.imul(al7, bl2) | 0; + mid = mid + Math.imul(al7, bh2) | 0; + mid = mid + Math.imul(ah7, bl2) | 0; + hi = hi + Math.imul(ah7, bh2) | 0; + lo = lo + Math.imul(al6, bl3) | 0; + mid = mid + Math.imul(al6, bh3) | 0; + mid = mid + Math.imul(ah6, bl3) | 0; + hi = hi + Math.imul(ah6, bh3) | 0; + lo = lo + Math.imul(al5, bl4) | 0; + mid = mid + Math.imul(al5, bh4) | 0; + mid = mid + Math.imul(ah5, bl4) | 0; + hi = hi + Math.imul(ah5, bh4) | 0; + lo = lo + Math.imul(al4, bl5) | 0; + mid = mid + Math.imul(al4, bh5) | 0; + mid = mid + Math.imul(ah4, bl5) | 0; + hi = hi + Math.imul(ah4, bh5) | 0; + lo = lo + Math.imul(al3, bl6) | 0; + mid = mid + Math.imul(al3, bh6) | 0; + mid = mid + Math.imul(ah3, bl6) | 0; + hi = hi + Math.imul(ah3, bh6) | 0; + lo = lo + Math.imul(al2, bl7) | 0; + mid = mid + Math.imul(al2, bh7) | 0; + mid = mid + Math.imul(ah2, bl7) | 0; + hi = hi + Math.imul(ah2, bh7) | 0; + lo = lo + Math.imul(al1, bl8) | 0; + mid = mid + Math.imul(al1, bh8) | 0; + mid = mid + Math.imul(ah1, bl8) | 0; + hi = hi + Math.imul(ah1, bh8) | 0; + lo = lo + Math.imul(al0, bl9) | 0; + mid = mid + Math.imul(al0, bh9) | 0; + mid = mid + Math.imul(ah0, bl9) | 0; + hi = hi + Math.imul(ah0, bh9) | 0; + var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; + w9 &= 67108863; + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = mid + Math.imul(ah9, bl1) | 0; + hi = Math.imul(ah9, bh1); + lo = lo + Math.imul(al8, bl2) | 0; + mid = mid + Math.imul(al8, bh2) | 0; + mid = mid + Math.imul(ah8, bl2) | 0; + hi = hi + Math.imul(ah8, bh2) | 0; + lo = lo + Math.imul(al7, bl3) | 0; + mid = mid + Math.imul(al7, bh3) | 0; + mid = mid + Math.imul(ah7, bl3) | 0; + hi = hi + Math.imul(ah7, bh3) | 0; + lo = lo + Math.imul(al6, bl4) | 0; + mid = mid + Math.imul(al6, bh4) | 0; + mid = mid + Math.imul(ah6, bl4) | 0; + hi = hi + Math.imul(ah6, bh4) | 0; + lo = lo + Math.imul(al5, bl5) | 0; + mid = mid + Math.imul(al5, bh5) | 0; + mid = mid + Math.imul(ah5, bl5) | 0; + hi = hi + Math.imul(ah5, bh5) | 0; + lo = lo + Math.imul(al4, bl6) | 0; + mid = mid + Math.imul(al4, bh6) | 0; + mid = mid + Math.imul(ah4, bl6) | 0; + hi = hi + Math.imul(ah4, bh6) | 0; + lo = lo + Math.imul(al3, bl7) | 0; + mid = mid + Math.imul(al3, bh7) | 0; + mid = mid + Math.imul(ah3, bl7) | 0; + hi = hi + Math.imul(ah3, bh7) | 0; + lo = lo + Math.imul(al2, bl8) | 0; + mid = mid + Math.imul(al2, bh8) | 0; + mid = mid + Math.imul(ah2, bl8) | 0; + hi = hi + Math.imul(ah2, bh8) | 0; + lo = lo + Math.imul(al1, bl9) | 0; + mid = mid + Math.imul(al1, bh9) | 0; + mid = mid + Math.imul(ah1, bl9) | 0; + hi = hi + Math.imul(ah1, bh9) | 0; + var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; + w10 &= 67108863; + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = mid + Math.imul(ah9, bl2) | 0; + hi = Math.imul(ah9, bh2); + lo = lo + Math.imul(al8, bl3) | 0; + mid = mid + Math.imul(al8, bh3) | 0; + mid = mid + Math.imul(ah8, bl3) | 0; + hi = hi + Math.imul(ah8, bh3) | 0; + lo = lo + Math.imul(al7, bl4) | 0; + mid = mid + Math.imul(al7, bh4) | 0; + mid = mid + Math.imul(ah7, bl4) | 0; + hi = hi + Math.imul(ah7, bh4) | 0; + lo = lo + Math.imul(al6, bl5) | 0; + mid = mid + Math.imul(al6, bh5) | 0; + mid = mid + Math.imul(ah6, bl5) | 0; + hi = hi + Math.imul(ah6, bh5) | 0; + lo = lo + Math.imul(al5, bl6) | 0; + mid = mid + Math.imul(al5, bh6) | 0; + mid = mid + Math.imul(ah5, bl6) | 0; + hi = hi + Math.imul(ah5, bh6) | 0; + lo = lo + Math.imul(al4, bl7) | 0; + mid = mid + Math.imul(al4, bh7) | 0; + mid = mid + Math.imul(ah4, bl7) | 0; + hi = hi + Math.imul(ah4, bh7) | 0; + lo = lo + Math.imul(al3, bl8) | 0; + mid = mid + Math.imul(al3, bh8) | 0; + mid = mid + Math.imul(ah3, bl8) | 0; + hi = hi + Math.imul(ah3, bh8) | 0; + lo = lo + Math.imul(al2, bl9) | 0; + mid = mid + Math.imul(al2, bh9) | 0; + mid = mid + Math.imul(ah2, bl9) | 0; + hi = hi + Math.imul(ah2, bh9) | 0; + var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; + w11 &= 67108863; + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = mid + Math.imul(ah9, bl3) | 0; + hi = Math.imul(ah9, bh3); + lo = lo + Math.imul(al8, bl4) | 0; + mid = mid + Math.imul(al8, bh4) | 0; + mid = mid + Math.imul(ah8, bl4) | 0; + hi = hi + Math.imul(ah8, bh4) | 0; + lo = lo + Math.imul(al7, bl5) | 0; + mid = mid + Math.imul(al7, bh5) | 0; + mid = mid + Math.imul(ah7, bl5) | 0; + hi = hi + Math.imul(ah7, bh5) | 0; + lo = lo + Math.imul(al6, bl6) | 0; + mid = mid + Math.imul(al6, bh6) | 0; + mid = mid + Math.imul(ah6, bl6) | 0; + hi = hi + Math.imul(ah6, bh6) | 0; + lo = lo + Math.imul(al5, bl7) | 0; + mid = mid + Math.imul(al5, bh7) | 0; + mid = mid + Math.imul(ah5, bl7) | 0; + hi = hi + Math.imul(ah5, bh7) | 0; + lo = lo + Math.imul(al4, bl8) | 0; + mid = mid + Math.imul(al4, bh8) | 0; + mid = mid + Math.imul(ah4, bl8) | 0; + hi = hi + Math.imul(ah4, bh8) | 0; + lo = lo + Math.imul(al3, bl9) | 0; + mid = mid + Math.imul(al3, bh9) | 0; + mid = mid + Math.imul(ah3, bl9) | 0; + hi = hi + Math.imul(ah3, bh9) | 0; + var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; + w12 &= 67108863; + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = mid + Math.imul(ah9, bl4) | 0; + hi = Math.imul(ah9, bh4); + lo = lo + Math.imul(al8, bl5) | 0; + mid = mid + Math.imul(al8, bh5) | 0; + mid = mid + Math.imul(ah8, bl5) | 0; + hi = hi + Math.imul(ah8, bh5) | 0; + lo = lo + Math.imul(al7, bl6) | 0; + mid = mid + Math.imul(al7, bh6) | 0; + mid = mid + Math.imul(ah7, bl6) | 0; + hi = hi + Math.imul(ah7, bh6) | 0; + lo = lo + Math.imul(al6, bl7) | 0; + mid = mid + Math.imul(al6, bh7) | 0; + mid = mid + Math.imul(ah6, bl7) | 0; + hi = hi + Math.imul(ah6, bh7) | 0; + lo = lo + Math.imul(al5, bl8) | 0; + mid = mid + Math.imul(al5, bh8) | 0; + mid = mid + Math.imul(ah5, bl8) | 0; + hi = hi + Math.imul(ah5, bh8) | 0; + lo = lo + Math.imul(al4, bl9) | 0; + mid = mid + Math.imul(al4, bh9) | 0; + mid = mid + Math.imul(ah4, bl9) | 0; + hi = hi + Math.imul(ah4, bh9) | 0; + var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; + w13 &= 67108863; + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = mid + Math.imul(ah9, bl5) | 0; + hi = Math.imul(ah9, bh5); + lo = lo + Math.imul(al8, bl6) | 0; + mid = mid + Math.imul(al8, bh6) | 0; + mid = mid + Math.imul(ah8, bl6) | 0; + hi = hi + Math.imul(ah8, bh6) | 0; + lo = lo + Math.imul(al7, bl7) | 0; + mid = mid + Math.imul(al7, bh7) | 0; + mid = mid + Math.imul(ah7, bl7) | 0; + hi = hi + Math.imul(ah7, bh7) | 0; + lo = lo + Math.imul(al6, bl8) | 0; + mid = mid + Math.imul(al6, bh8) | 0; + mid = mid + Math.imul(ah6, bl8) | 0; + hi = hi + Math.imul(ah6, bh8) | 0; + lo = lo + Math.imul(al5, bl9) | 0; + mid = mid + Math.imul(al5, bh9) | 0; + mid = mid + Math.imul(ah5, bl9) | 0; + hi = hi + Math.imul(ah5, bh9) | 0; + var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; + w14 &= 67108863; + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = mid + Math.imul(ah9, bl6) | 0; + hi = Math.imul(ah9, bh6); + lo = lo + Math.imul(al8, bl7) | 0; + mid = mid + Math.imul(al8, bh7) | 0; + mid = mid + Math.imul(ah8, bl7) | 0; + hi = hi + Math.imul(ah8, bh7) | 0; + lo = lo + Math.imul(al7, bl8) | 0; + mid = mid + Math.imul(al7, bh8) | 0; + mid = mid + Math.imul(ah7, bl8) | 0; + hi = hi + Math.imul(ah7, bh8) | 0; + lo = lo + Math.imul(al6, bl9) | 0; + mid = mid + Math.imul(al6, bh9) | 0; + mid = mid + Math.imul(ah6, bl9) | 0; + hi = hi + Math.imul(ah6, bh9) | 0; + var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; + w15 &= 67108863; + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = mid + Math.imul(ah9, bl7) | 0; + hi = Math.imul(ah9, bh7); + lo = lo + Math.imul(al8, bl8) | 0; + mid = mid + Math.imul(al8, bh8) | 0; + mid = mid + Math.imul(ah8, bl8) | 0; + hi = hi + Math.imul(ah8, bh8) | 0; + lo = lo + Math.imul(al7, bl9) | 0; + mid = mid + Math.imul(al7, bh9) | 0; + mid = mid + Math.imul(ah7, bl9) | 0; + hi = hi + Math.imul(ah7, bh9) | 0; + var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; + w16 &= 67108863; + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = mid + Math.imul(ah9, bl8) | 0; + hi = Math.imul(ah9, bh8); + lo = lo + Math.imul(al8, bl9) | 0; + mid = mid + Math.imul(al8, bh9) | 0; + mid = mid + Math.imul(ah8, bl9) | 0; + hi = hi + Math.imul(ah8, bh9) | 0; + var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; + w17 &= 67108863; + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = mid + Math.imul(ah9, bl9) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0; + c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; + w18 &= 67108863; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + function bigMulTo(self2, num, out) { + out.negative = num.negative ^ self2.negative; + out.length = self2.length + num.length; + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 67108863; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self2.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self2.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + var lo = r & 67108863; + ncarry = ncarry + (r / 67108864 | 0) | 0; + lo = lo + rword | 0; + rword = lo & 67108863; + ncarry = ncarry + (lo >>> 26) | 0; + hncarry += ncarry >>> 26; + ncarry &= 67108863; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + return out._strip(); + } + function jumboMulTo(self2, num, out) { + return bigMulTo(self2, num, out); + } + BN.prototype.mulTo = function mulTo(num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + return res; + }; + function FFTM(x, y) { + this.x = x; + this.y = y; + } + FFTM.prototype.makeRBT = function makeRBT(N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + return t; + }; + FFTM.prototype.revBin = function revBin(x, l, N) { + if (x === 0 || x === N - 1) return x; + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << l - i - 1; + x >>= 1; + } + return rb; + }; + FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + var rx = rtwdf_ * ro - itwdf_ * io; + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + FFTM.prototype.guessLen13b = function guessLen13b(n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + return 1 << i + 1 + odd; + }; + FFTM.prototype.conjugate = function conjugate(rws, iws, N) { + if (N <= 1) return; + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + t = iws[i]; + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + FFTM.prototype.normalize13b = function normalize13b(ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry; + ws[i] = w & 67108863; + if (w < 67108864) { + carry = 0; + } else { + carry = w / 67108864 | 0; + } + } + return ws; + }; + FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + rws[2 * i] = carry & 8191; + carry = carry >>> 13; + rws[2 * i + 1] = carry & 8191; + carry = carry >>> 13; + } + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + assert(carry === 0); + assert((carry & ~8191) === 0); + }; + FFTM.prototype.stub = function stub(N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + return ph; + }; + FFTM.prototype.mulp = function mulp(x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + var rbt = this.makeRBT(N); + var _ = this.stub(N); + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + var rmws = out.words; + rmws.length = N; + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out._strip(); + }; + BN.prototype.mul = function mul(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + BN.prototype.mulf = function mulf(num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + BN.prototype.imul = function imul(num) { + return this.clone().mulTo(num, this); + }; + BN.prototype.imuln = function imuln(num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + assert(typeof num === "number"); + assert(num < 67108864); + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 67108863) + (carry & 67108863); + carry >>= 26; + carry += w / 67108864 | 0; + carry += lo >>> 26; + this.words[i] = lo & 67108863; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + this.length = num === 0 ? 1 : this.length; + return isNegNum ? this.ineg() : this; + }; + BN.prototype.muln = function muln(num) { + return this.clone().imuln(num); + }; + BN.prototype.sqr = function sqr() { + return this.mul(this); + }; + BN.prototype.isqr = function isqr() { + return this.imul(this.clone()); + }; + BN.prototype.pow = function pow(num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + res = res.mul(q); + } + } + return res; + }; + BN.prototype.iushln = function iushln(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = 67108863 >>> 26 - r << 26 - r; + var i; + if (r !== 0) { + var carry = 0; + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = (this.words[i] | 0) - newCarry << r; + this.words[i] = c | carry; + carry = newCarry >>> 26 - r; + } + if (carry) { + this.words[i] = carry; + this.length++; + } + } + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + this.length += s; + } + return this._strip(); + }; + BN.prototype.ishln = function ishln(bits) { + assert(this.negative === 0); + return this.iushln(bits); + }; + BN.prototype.iushrn = function iushrn(bits, hint, extended) { + assert(typeof bits === "number" && bits >= 0); + var h; + if (hint) { + h = (hint - hint % 26) / 26; + } else { + h = 0; + } + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 67108863 ^ 67108863 >>> r << r; + var maskedWords = extended; + h -= s; + h = Math.max(0, h); + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + if (s === 0) { + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = carry << 26 - r | word >>> r; + carry = word & mask; + } + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + return this._strip(); + }; + BN.prototype.ishrn = function ishrn(bits, hint, extended) { + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + BN.prototype.shln = function shln(bits) { + return this.clone().ishln(bits); + }; + BN.prototype.ushln = function ushln(bits) { + return this.clone().iushln(bits); + }; + BN.prototype.shrn = function shrn(bits) { + return this.clone().ishrn(bits); + }; + BN.prototype.ushrn = function ushrn(bits) { + return this.clone().iushrn(bits); + }; + BN.prototype.testn = function testn(bit) { + assert(typeof bit === "number" && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) return false; + var w = this.words[s]; + return !!(w & q); + }; + BN.prototype.imaskn = function imaskn(bits) { + assert(typeof bits === "number" && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + assert(this.negative === 0, "imaskn works only with positive numbers"); + if (this.length <= s) { + return this; + } + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + if (r !== 0) { + var mask = 67108863 ^ 67108863 >>> r << r; + this.words[this.length - 1] &= mask; + } + return this._strip(); + }; + BN.prototype.maskn = function maskn(bits) { + return this.clone().imaskn(bits); + }; + BN.prototype.iaddn = function iaddn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.isubn(-num); + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) <= num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + return this._iaddn(num); + }; + BN.prototype._iaddn = function _iaddn(num) { + this.words[0] += num; + for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) { + this.words[i] -= 67108864; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + return this; + }; + BN.prototype.isubn = function isubn(num) { + assert(typeof num === "number"); + assert(num < 67108864); + if (num < 0) return this.iaddn(-num); + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + this.words[0] -= num; + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 67108864; + this.words[i + 1] -= 1; + } + } + return this._strip(); + }; + BN.prototype.addn = function addn(num) { + return this.clone().iaddn(num); + }; + BN.prototype.subn = function subn(num) { + return this.clone().isubn(num); + }; + BN.prototype.iabs = function iabs() { + this.negative = 0; + return this; + }; + BN.prototype.abs = function abs() { + return this.clone().iabs(); + }; + BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { + var len = num.length + shift; + var i; + this._expand(len); + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 67108863; + carry = (w >> 26) - (right / 67108864 | 0); + this.words[i + shift] = w & 67108863; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 67108863; + } + if (carry === 0) return this._strip(); + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 67108863; + } + this.negative = 1; + return this._strip(); + }; + BN.prototype._wordDiv = function _wordDiv(num, mode) { + var shift = this.length - num.length; + var a = this.clone(); + var b = num; + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + var m = a.length - b.length; + var q; + if (mode !== "mod") { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0); + qj = Math.min(qj / bhi | 0, 67108863); + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q._strip(); + } + a._strip(); + if (mode !== "div" && shift !== 0) { + a.iushrn(shift); + } + return { + div: q || null, + mod: a + }; + }; + BN.prototype.divmod = function divmod(num, mode, positive) { + assert(!num.isZero()); + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + var div, mod3, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + if (mode !== "mod") { + div = res.div.neg(); + } + if (mode !== "div") { + mod3 = res.mod.neg(); + if (positive && mod3.negative !== 0) { + mod3.iadd(num); + } + } + return { + div, + mod: mod3 + }; + } + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + if (mode !== "mod") { + div = res.div.neg(); + } + return { + div, + mod: res.mod + }; + } + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + if (mode !== "div") { + mod3 = res.mod.neg(); + if (positive && mod3.negative !== 0) { + mod3.isub(num); + } + } + return { + div: res.div, + mod: mod3 + }; + } + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + if (num.length === 1) { + if (mode === "div") { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + if (mode === "mod") { + return { + div: null, + mod: new BN(this.modrn(num.words[0])) + }; + } + return { + div: this.divn(num.words[0]), + mod: new BN(this.modrn(num.words[0])) + }; + } + return this._wordDiv(num, mode); + }; + BN.prototype.div = function div(num) { + return this.divmod(num, "div", false).div; + }; + BN.prototype.mod = function mod3(num) { + return this.divmod(num, "mod", false).mod; + }; + BN.prototype.umod = function umod(num) { + return this.divmod(num, "mod", true).mod; + }; + BN.prototype.divRound = function divRound(num) { + var dm = this.divmod(num); + if (dm.mod.isZero()) return dm.div; + var mod3 = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod3.cmp(half); + if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + BN.prototype.modrn = function modrn(num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + assert(num <= 67108863); + var p = (1 << 26) % num; + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + return isNegNum ? -acc : acc; + }; + BN.prototype.modn = function modn(num) { + return this.modrn(num); + }; + BN.prototype.idivn = function idivn(num) { + var isNegNum = num < 0; + if (isNegNum) num = -num; + assert(num <= 67108863); + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 67108864; + this.words[i] = w / num | 0; + carry = w % num; + } + this._strip(); + return isNegNum ? this.ineg() : this; + }; + BN.prototype.divn = function divn(num) { + return this.clone().idivn(num); + }; + BN.prototype.egcd = function egcd(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var x = this; + var y = p.clone(); + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + var A = new BN(1); + var B = new BN(0); + var C = new BN(0); + var D = new BN(1); + var g = 0; + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + var yp = y.clone(); + var xp = x.clone(); + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + A.iushrn(1); + B.iushrn(1); + } + } + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + C.iushrn(1); + D.iushrn(1); + } + } + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + BN.prototype._invmp = function _invmp(p) { + assert(p.negative === 0); + assert(!p.isZero()); + var a = this; + var b = p.clone(); + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + var x1 = new BN(1); + var x2 = new BN(0); + var delta = b.clone(); + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) ; + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + x1.iushrn(1); + } + } + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) ; + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + x2.iushrn(1); + } + } + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + if (res.cmpn(0) < 0) { + res.iadd(p); + } + return res; + }; + BN.prototype.gcd = function gcd(num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + var r = a.cmp(b); + if (r < 0) { + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + a.isub(b); + } while (true); + return b.iushln(shift); + }; + BN.prototype.invm = function invm(num) { + return this.egcd(num).a.umod(num); + }; + BN.prototype.isEven = function isEven() { + return (this.words[0] & 1) === 0; + }; + BN.prototype.isOdd = function isOdd() { + return (this.words[0] & 1) === 1; + }; + BN.prototype.andln = function andln(num) { + return this.words[0] & num; + }; + BN.prototype.bincn = function bincn(bit) { + assert(typeof bit === "number"); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 67108863; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + BN.prototype.isZero = function isZero() { + return this.length === 1 && this.words[0] === 0; + }; + BN.prototype.cmpn = function cmpn(num) { + var negative = num < 0; + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + this._strip(); + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + assert(num <= 67108863, "Number is too big"); + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.cmp = function cmp(num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + BN.prototype.ucmp = function ucmp(num) { + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + BN.prototype.gtn = function gtn(num) { + return this.cmpn(num) === 1; + }; + BN.prototype.gt = function gt(num) { + return this.cmp(num) === 1; + }; + BN.prototype.gten = function gten(num) { + return this.cmpn(num) >= 0; + }; + BN.prototype.gte = function gte(num) { + return this.cmp(num) >= 0; + }; + BN.prototype.ltn = function ltn(num) { + return this.cmpn(num) === -1; + }; + BN.prototype.lt = function lt(num) { + return this.cmp(num) === -1; + }; + BN.prototype.lten = function lten(num) { + return this.cmpn(num) <= 0; + }; + BN.prototype.lte = function lte(num) { + return this.cmp(num) <= 0; + }; + BN.prototype.eqn = function eqn(num) { + return this.cmpn(num) === 0; + }; + BN.prototype.eq = function eq(num) { + return this.cmp(num) === 0; + }; + BN.red = function red(num) { + return new Red(num); + }; + BN.prototype.toRed = function toRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + assert(this.negative === 0, "red works only with positives"); + return ctx.convertTo(this)._forceRed(ctx); + }; + BN.prototype.fromRed = function fromRed() { + assert(this.red, "fromRed works only with numbers in reduction context"); + return this.red.convertFrom(this); + }; + BN.prototype._forceRed = function _forceRed(ctx) { + this.red = ctx; + return this; + }; + BN.prototype.forceRed = function forceRed(ctx) { + assert(!this.red, "Already a number in reduction context"); + return this._forceRed(ctx); + }; + BN.prototype.redAdd = function redAdd(num) { + assert(this.red, "redAdd works only with red numbers"); + return this.red.add(this, num); + }; + BN.prototype.redIAdd = function redIAdd(num) { + assert(this.red, "redIAdd works only with red numbers"); + return this.red.iadd(this, num); + }; + BN.prototype.redSub = function redSub(num) { + assert(this.red, "redSub works only with red numbers"); + return this.red.sub(this, num); + }; + BN.prototype.redISub = function redISub(num) { + assert(this.red, "redISub works only with red numbers"); + return this.red.isub(this, num); + }; + BN.prototype.redShl = function redShl(num) { + assert(this.red, "redShl works only with red numbers"); + return this.red.shl(this, num); + }; + BN.prototype.redMul = function redMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + BN.prototype.redIMul = function redIMul(num) { + assert(this.red, "redMul works only with red numbers"); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + BN.prototype.redSqr = function redSqr() { + assert(this.red, "redSqr works only with red numbers"); + this.red._verify1(this); + return this.red.sqr(this); + }; + BN.prototype.redISqr = function redISqr() { + assert(this.red, "redISqr works only with red numbers"); + this.red._verify1(this); + return this.red.isqr(this); + }; + BN.prototype.redSqrt = function redSqrt() { + assert(this.red, "redSqrt works only with red numbers"); + this.red._verify1(this); + return this.red.sqrt(this); + }; + BN.prototype.redInvm = function redInvm() { + assert(this.red, "redInvm works only with red numbers"); + this.red._verify1(this); + return this.red.invm(this); + }; + BN.prototype.redNeg = function redNeg() { + assert(this.red, "redNeg works only with red numbers"); + this.red._verify1(this); + return this.red.neg(this); + }; + BN.prototype.redPow = function redPow(num) { + assert(this.red && !num.red, "redPow(normalNum)"); + this.red._verify1(this); + return this.red.pow(this, num); + }; + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + function MPrime(name, p) { + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + this.tmp = this._tmp(); + } + MPrime.prototype._tmp = function _tmp() { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + MPrime.prototype.ireduce = function ireduce(num) { + var r = num; + var rlen; + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + if (r.strip !== void 0) { + r.strip(); + } else { + r._strip(); + } + } + return r; + }; + MPrime.prototype.split = function split2(input, out) { + input.iushrn(this.n, 0, out); + }; + MPrime.prototype.imulK = function imulK(num) { + return num.imul(this.k); + }; + function K256() { + MPrime.call( + this, + "k256", + "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f" + ); + } + inherits(K256, MPrime); + K256.prototype.split = function split2(input, output) { + var mask = 4194303; + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = (next & mask) << 4 | prev >>> 22; + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + K256.prototype.imulK = function imulK(num) { + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 977; + num.words[i] = lo & 67108863; + lo = w * 64 + (lo / 67108864 | 0); + } + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + function P224() { + MPrime.call( + this, + "p224", + "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001" + ); + } + inherits(P224, MPrime); + function P192() { + MPrime.call( + this, + "p192", + "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff" + ); + } + inherits(P192, MPrime); + function P25519() { + MPrime.call( + this, + "25519", + "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed" + ); + } + inherits(P25519, MPrime); + P25519.prototype.imulK = function imulK(num) { + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 19 + carry; + var lo = hi & 67108863; + hi >>>= 26; + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + BN._prime = function prime(name) { + if (primes[name]) return primes[name]; + var prime2; + if (name === "k256") { + prime2 = new K256(); + } else if (name === "p224") { + prime2 = new P224(); + } else if (name === "p192") { + prime2 = new P192(); + } else if (name === "p25519") { + prime2 = new P25519(); + } else { + throw new Error("Unknown prime " + name); + } + primes[name] = prime2; + return prime2; + }; + function Red(m) { + if (typeof m === "string") { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), "modulus must be greater than 1"); + this.m = m; + this.prime = null; + } + } + Red.prototype._verify1 = function _verify1(a) { + assert(a.negative === 0, "red works only with positives"); + assert(a.red, "red works only with red numbers"); + }; + Red.prototype._verify2 = function _verify2(a, b) { + assert((a.negative | b.negative) === 0, "red works only with positives"); + assert( + a.red && a.red === b.red, + "red works only with red numbers" + ); + }; + Red.prototype.imod = function imod(a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + move(a, a.umod(this.m)._forceRed(this)); + return a; + }; + Red.prototype.neg = function neg(a) { + if (a.isZero()) { + return a.clone(); + } + return this.m.sub(a)._forceRed(this); + }; + Red.prototype.add = function add2(a, b) { + this._verify2(a, b); + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + Red.prototype.iadd = function iadd(a, b) { + this._verify2(a, b); + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + Red.prototype.sub = function sub(a, b) { + this._verify2(a, b); + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + Red.prototype.isub = function isub(a, b) { + this._verify2(a, b); + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + Red.prototype.shl = function shl(a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + Red.prototype.imul = function imul(a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + Red.prototype.mul = function mul(a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + Red.prototype.isqr = function isqr(a) { + return this.imul(a, a.clone()); + }; + Red.prototype.sqr = function sqr(a) { + return this.mul(a, a); + }; + Red.prototype.sqrt = function sqrt(a) { + if (a.isZero()) return a.clone(); + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + return r; + }; + Red.prototype.invm = function invm(a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + Red.prototype.pow = function pow(a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = word >> j & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + return res; + }; + Red.prototype.convertTo = function convertTo(num) { + var r = num.umod(this.m); + return r === num ? r.clone() : r; + }; + Red.prototype.convertFrom = function convertFrom(num) { + var res = num.clone(); + res.red = null; + return res; + }; + BN.mont = function mont(num) { + return new Mont(num); + }; + function Mont(m) { + Red.call(this, m); + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - this.shift % 26; + } + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + Mont.prototype.convertTo = function convertTo(num) { + return this.imod(num.ushln(this.shift)); + }; + Mont.prototype.convertFrom = function convertFrom(num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + Mont.prototype.imul = function imul(a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.mul = function mul(a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + return res._forceRed(this); + }; + Mont.prototype.invm = function invm(a) { + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; + })(typeof module2 === "undefined" || module2, exports2); + } +}); + +// node_modules/int64-buffer/int64-buffer.js +var require_int64_buffer = __commonJS({ + "node_modules/int64-buffer/int64-buffer.js"(exports2) { + var Uint64BE; + var Int64BE; + var Uint64LE; + var Int64LE; + !function(exports3) { + var UNDEFINED = "undefined"; + var BUFFER = UNDEFINED !== typeof Buffer && Buffer; + var UINT8ARRAY = UNDEFINED !== typeof Uint8Array && Uint8Array; + var ARRAYBUFFER = UNDEFINED !== typeof ArrayBuffer && ArrayBuffer; + var ZERO = [0, 0, 0, 0, 0, 0, 0, 0]; + var isArray = Array.isArray || _isArray; + var BIT32 = 4294967296; + var BIT24 = 16777216; + var storage; + Uint64BE = factory("Uint64BE", true, true); + Int64BE = factory("Int64BE", true, false); + Uint64LE = factory("Uint64LE", false, true); + Int64LE = factory("Int64LE", false, false); + function factory(name, bigendian, unsigned) { + var posH = bigendian ? 0 : 4; + var posL = bigendian ? 4 : 0; + var pos0 = bigendian ? 0 : 3; + var pos1 = bigendian ? 1 : 2; + var pos2 = bigendian ? 2 : 1; + var pos3 = bigendian ? 3 : 0; + var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE; + var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE; + var proto = Int64.prototype; + var isName = "is" + name; + var _isInt64 = "_" + isName; + proto.buffer = void 0; + proto.offset = 0; + proto[_isInt64] = true; + proto.toNumber = toNumber; + proto.toString = toString; + proto.toJSON = toNumber; + proto.toArray = toArray; + if (BUFFER) proto.toBuffer = toBuffer; + if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer; + Int64[isName] = isInt64; + exports3[name] = Int64; + return Int64; + function Int64(buffer, offset, value, raddix) { + if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix); + return init(this, buffer, offset, value, raddix); + } + function isInt64(b) { + return !!(b && b[_isInt64]); + } + function init(that, buffer, offset, value, raddix) { + if (UINT8ARRAY && ARRAYBUFFER) { + if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer); + if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value); + } + if (!buffer && !offset && !value && !storage) { + that.buffer = newArray(ZERO, 0); + return; + } + if (!isValidBuffer(buffer, offset)) { + var _storage = storage || Array; + raddix = offset; + value = buffer; + offset = 0; + buffer = storage === BUFFER ? BUFFER.alloc(8) : new _storage(8); + } + that.buffer = buffer; + that.offset = offset |= 0; + if (UNDEFINED === typeof value) return; + if ("string" === typeof value) { + fromString(buffer, offset, value, raddix || 10); + } else if (isValidBuffer(value, raddix)) { + fromArray(buffer, offset, value, raddix); + } else if ("number" === typeof raddix) { + writeInt32(buffer, offset + posH, value); + writeInt32(buffer, offset + posL, raddix); + } else if (value > 0) { + fromPositive(buffer, offset, value); + } else if (value < 0) { + fromNegative(buffer, offset, value); + } else { + fromArray(buffer, offset, ZERO, 0); + } + } + function fromString(buffer, offset, str, raddix) { + var pos = 0; + var len = str.length; + var high = 0; + var low = 0; + if (str[0] === "-") pos++; + var sign = pos; + while (pos < len) { + var chr = parseInt(str[pos++], raddix); + if (!(chr >= 0)) break; + low = low * raddix + chr; + high = high * raddix + Math.floor(low / BIT32); + low %= BIT32; + } + if (sign) { + high = ~high; + if (low) { + low = BIT32 - low; + } else { + high++; + } + } + writeInt32(buffer, offset + posH, high); + writeInt32(buffer, offset + posL, low); + } + function toNumber() { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + if (!unsigned) high |= 0; + return high ? high * BIT32 + low : low; + } + function toString(radix) { + var buffer = this.buffer; + var offset = this.offset; + var high = readInt32(buffer, offset + posH); + var low = readInt32(buffer, offset + posL); + var str = ""; + var sign = !unsigned && high & 2147483648; + if (sign) { + high = ~high; + low = BIT32 - low; + } + radix = radix || 10; + while (1) { + var mod3 = high % radix * BIT32 + low; + high = Math.floor(high / radix); + low = Math.floor(mod3 / radix); + str = (mod3 % radix).toString(radix) + str; + if (!high && !low) break; + } + if (sign) { + str = "-" + str; + } + return str; + } + function writeInt32(buffer, offset, value) { + buffer[offset + pos3] = value & 255; + value = value >> 8; + buffer[offset + pos2] = value & 255; + value = value >> 8; + buffer[offset + pos1] = value & 255; + value = value >> 8; + buffer[offset + pos0] = value & 255; + } + function readInt32(buffer, offset) { + return buffer[offset + pos0] * BIT24 + (buffer[offset + pos1] << 16) + (buffer[offset + pos2] << 8) + buffer[offset + pos3]; + } + } + function toArray(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = null; + if (raw !== false && isArray(buffer)) { + return buffer.length === 8 ? buffer : buffer.slice(offset, offset + 8); + } + return newArray(buffer, offset); + } + function toBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + storage = BUFFER; + if (raw !== false && BUFFER.isBuffer(buffer)) { + return buffer.length === 8 ? buffer : buffer.slice(offset, offset + 8); + } + return BUFFER.from(toArrayBuffer.call(this, raw)); + } + function toArrayBuffer(raw) { + var buffer = this.buffer; + var offset = this.offset; + var arrbuf = buffer.buffer; + storage = UINT8ARRAY; + if (raw !== false && !buffer.offset && arrbuf instanceof ARRAYBUFFER) { + return arrbuf.byteLength === 8 ? arrbuf : arrbuf.slice(offset, offset + 8); + } + var dest = new UINT8ARRAY(8); + fromArray(dest, 0, buffer, offset); + return dest.buffer; + } + function isValidBuffer(buffer, offset) { + var len = buffer && buffer.length; + offset |= 0; + return len && offset + 8 <= len && "string" !== typeof buffer[offset]; + } + function fromArray(destbuf, destoff, srcbuf, srcoff) { + destoff |= 0; + srcoff |= 0; + for (var i = 0; i < 8; i++) { + destbuf[destoff++] = srcbuf[srcoff++] & 255; + } + } + function newArray(buffer, offset) { + return Array.prototype.slice.call(buffer, offset, offset + 8); + } + function fromPositiveBE(buffer, offset, value) { + var pos = offset + 8; + while (pos > offset) { + buffer[--pos] = value & 255; + value /= 256; + } + } + function fromNegativeBE(buffer, offset, value) { + var pos = offset + 8; + value++; + while (pos > offset) { + buffer[--pos] = -value & 255 ^ 255; + value /= 256; + } + } + function fromPositiveLE(buffer, offset, value) { + var end = offset + 8; + while (offset < end) { + buffer[offset++] = value & 255; + value /= 256; + } + } + function fromNegativeLE(buffer, offset, value) { + var end = offset + 8; + value++; + while (offset < end) { + buffer[offset++] = -value & 255 ^ 255; + value /= 256; + } + } + function _isArray(val) { + return !!val && "[object Array]" == Object.prototype.toString.call(val); + } + }(typeof exports2 === "object" && typeof exports2.nodeName !== "string" ? exports2 : exports2 || {}); + } +}); + +// node_modules/uint8array-tools/src/mjs/index.js +var mjs_exports = {}; +__export(mjs_exports, { + compare: () => compare, + concat: () => concat, + fromBase64: () => fromBase64, + fromHex: () => fromHex, + fromUtf8: () => fromUtf8, + readUInt16: () => readUInt16, + readUInt32: () => readUInt32, + readUInt64: () => readUInt64, + readUInt8: () => readUInt8, + toBase64: () => toBase64, + toHex: () => toHex, + toUtf8: () => toUtf8, + writeUInt16: () => writeUInt16, + writeUInt32: () => writeUInt32, + writeUInt64: () => writeUInt64, + writeUInt8: () => writeUInt8 +}); +function toUtf8(bytes) { + return Buffer.from(bytes || []).toString(); +} +function fromUtf8(s) { + return Uint8Array.from(Buffer.from(s || "", "utf8")); +} +function concat(arrays) { + return Uint8Array.from(Buffer.concat(arrays)); +} +function toHex(bytes) { + return Buffer.from(bytes || []).toString("hex"); +} +function fromHex(hexString) { + return Uint8Array.from(Buffer.from(hexString || "", "hex")); +} +function toBase64(bytes) { + return Buffer.from(bytes).toString("base64"); +} +function fromBase64(base64) { + return Uint8Array.from(Buffer.from(base64 || "", "base64")); +} +function compare(v1, v2) { + return Buffer.from(v1).compare(Buffer.from(v2)); +} +function writeUInt8(buffer, offset, value) { + if (offset + 1 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + const buf = Buffer.alloc(1); + buf.writeUInt8(value, 0); + buffer.set(Uint8Array.from(buf), offset); +} +function writeUInt16(buffer, offset, value, littleEndian) { + if (offset + 2 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.alloc(2); + if (littleEndian === "LE") { + buf.writeUInt16LE(value, 0); + } else { + buf.writeUInt16BE(value, 0); + } + buffer.set(Uint8Array.from(buf), offset); +} +function writeUInt32(buffer, offset, value, littleEndian) { + if (offset + 4 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.alloc(4); + if (littleEndian === "LE") { + buf.writeUInt32LE(value, 0); + } else { + buf.writeUInt32BE(value, 0); + } + buffer.set(Uint8Array.from(buf), offset); +} +function writeUInt64(buffer, offset, value, littleEndian) { + if (offset + 8 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.alloc(8); + if (value > 0xffffffffffffffffn) { + throw new Error(`The value of "value" is out of range. It must be >= 0 and <= ${0xffffffffffffffffn}. Received ${value}`); + } + if (littleEndian === "LE") { + buf.writeBigUInt64LE(value, 0); + } else { + buf.writeBigUInt64BE(value, 0); + } + buffer.set(Uint8Array.from(buf), offset); +} +function readUInt8(buffer, offset) { + if (offset + 1 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + const buf = Buffer.from(buffer); + return buf.readUInt8(offset); +} +function readUInt16(buffer, offset, littleEndian) { + if (offset + 2 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.from(buffer); + if (littleEndian === "LE") { + return buf.readUInt16LE(offset); + } else { + return buf.readUInt16BE(offset); + } +} +function readUInt32(buffer, offset, littleEndian) { + if (offset + 4 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.from(buffer); + if (littleEndian === "LE") { + return buf.readUInt32LE(offset); + } else { + return buf.readUInt32BE(offset); + } +} +function readUInt64(buffer, offset, littleEndian) { + if (offset + 8 > buffer.length) { + throw new Error("Offset is outside the bounds of Uint8Array"); + } + littleEndian = littleEndian.toUpperCase(); + const buf = Buffer.from(buffer); + if (littleEndian === "LE") { + return buf.readBigUInt64LE(offset); + } else { + return buf.readBigUInt64BE(offset); + } +} +var init_mjs = __esm({ + "node_modules/uint8array-tools/src/mjs/index.js"() { + } +}); + +// node_modules/varuint-bitcoin/src/cjs/index.cjs +var require_cjs7 = __commonJS({ + "node_modules/varuint-bitcoin/src/cjs/index.cjs"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k in mod3) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod3, k)) __createBinding2(result, mod3, k); + } + __setModuleDefault(result, mod3); + return result; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encode = encode; + exports2.decode = decode; + exports2.encodingLength = encodingLength; + var tools = __importStar2((init_mjs(), __toCommonJS(mjs_exports))); + var checkUInt64 = (n) => { + if (n < 0 || n > 0xffffffffffffffffn) { + throw new RangeError("value out of range"); + } + }; + function checkUInt53(n) { + if (n < 0 || n > Number.MAX_SAFE_INTEGER || n % 1 !== 0) + throw new RangeError("value out of range"); + } + function checkUint53OrUint64(n) { + if (typeof n === "number") + checkUInt53(n); + else + checkUInt64(n); + } + function encode(n, buffer, offset) { + checkUint53OrUint64(n); + if (offset === void 0) + offset = 0; + if (buffer === void 0) { + buffer = new Uint8Array(encodingLength(n)); + } + let bytes = 0; + if (n < 253) { + buffer.set([Number(n)], offset); + bytes = 1; + } else if (n <= 65535) { + buffer.set([253], offset); + tools.writeUInt16(buffer, offset + 1, Number(n), "LE"); + bytes = 3; + } else if (n <= 4294967295) { + buffer.set([254], offset); + tools.writeUInt32(buffer, offset + 1, Number(n), "LE"); + bytes = 5; + } else { + buffer.set([255], offset); + tools.writeUInt64(buffer, offset + 1, BigInt(n), "LE"); + bytes = 9; + } + return { buffer, bytes }; + } + function decode(buffer, offset) { + if (offset === void 0) + offset = 0; + const first = buffer.at(offset); + if (first === void 0) + throw new Error("buffer too small"); + if (first < 253) { + return { numberValue: first, bigintValue: BigInt(first), bytes: 1 }; + } else if (first === 253) { + const val = tools.readUInt16(buffer, offset + 1, "LE"); + return { + numberValue: val, + bigintValue: BigInt(val), + bytes: 3 + }; + } else if (first === 254) { + const val = tools.readUInt32(buffer, offset + 1, "LE"); + return { + numberValue: val, + bigintValue: BigInt(val), + bytes: 5 + }; + } else { + const number = tools.readUInt64(buffer, offset + 1, "LE"); + return { numberValue: number <= Number.MAX_SAFE_INTEGER ? Number(number) : null, bigintValue: number, bytes: 9 }; + } + } + function encodingLength(n) { + checkUint53OrUint64(n); + return n < 253 ? 1 : n <= 65535 ? 3 : n <= 4294967295 ? 5 : 9; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/bufferutils.js +var require_bufferutils = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/bufferutils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BufferReader = exports2.BufferWriter = exports2.getChunkSize = exports2.reverseBuffer = exports2.writePushDataInt = exports2.varIntSize = exports2.readPushDataInt = exports2.pushDataSize = void 0; + exports2.verifuint = verifuint; + exports2.readUInt64LE = readUInt64LE; + exports2.readUInt64LEasString = readUInt64LEasString; + exports2.readInt64LE = readInt64LE; + exports2.writeUInt64LE = writeUInt64LE; + exports2.writeUInt64LEasString = writeUInt64LEasString; + exports2.writeInt64LE = writeInt64LE; + exports2.readVarInt = readVarInt; + exports2.writeVarInt = writeVarInt; + exports2.cloneBuffer = cloneBuffer; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var int64_buffer_1 = require_int64_buffer(); + var pushdata_bitcoin_1 = tslib_1.__importDefault(require_pushdata_bitcoin()); + var varuint = tslib_1.__importStar(require_cjs7()); + var utils_1 = require_lib(); + var types = tslib_1.__importStar(require_types5()); + var OUT_OF_RANGE_ERROR = "value out of range"; + function verifuint(value, max) { + if (typeof value !== "number") throw new Error("cannot write a non-number as a number"); + if (value < 0) throw new Error("specified a negative value for writing an unsigned value"); + if (value > max) throw new Error(OUT_OF_RANGE_ERROR); + if (Math.floor(value) !== value) throw new Error("value has a fractional component"); + } + function readUInt64LE(buffer, offset) { + const a = buffer.readUInt32LE(offset); + let b = buffer.readUInt32LE(offset + 4); + b *= 4294967296; + verifuint(b + a, 9007199254740991); + return b + a; + } + function readUInt64LEasString(buffer, offset) { + try { + const result = readUInt64LE(buffer, offset); + return result.toString(); + } catch { + const aUint = buffer.readUInt32LE(offset); + const bUint = buffer.readUInt32LE(offset + 4); + const m = new bn_js_1.default(4294967296); + const a = new bn_js_1.default(aUint); + const b = new bn_js_1.default(bUint).mul(m); + return a.add(b).toString(); + } + } + function readInt64LE(buffer, offset) { + const a = buffer.readUInt32LE(offset); + let b = buffer.readInt32LE(offset + 4); + b *= 4294967296; + return b + a; + } + function writeUInt64LE(buffer, value, offset) { + verifuint(value, 9007199254740991); + buffer.writeInt32LE(value & -1, offset); + buffer.writeUInt32LE(Math.floor(value / 4294967296), offset + 4); + return offset + 8; + } + function writeUInt64LEasString(buffer, value, offset) { + if (typeof value !== "string") { + return writeUInt64LE(buffer, value, offset); + } + const v = new int64_buffer_1.Int64LE(value); + v.toBuffer().copy(buffer, offset); + return offset + 8; + } + function writeInt64LE(buffer, value, offset) { + const v = new int64_buffer_1.Int64LE(value); + const a = v.toArray(); + for (let i = 0; i < 8; i++) { + buffer.writeUInt8(a[i], offset + i); + } + return offset + 8; + } + function readVarInt(buffer, offset) { + const { + numberValue, + bytes + } = varuint.decode(buffer, offset); + if (numberValue === null) throw new Error(OUT_OF_RANGE_ERROR); + return { + number: numberValue, + size: bytes + }; + } + function writeVarInt(buffer, number, offset) { + const { + bytes + } = varuint.encode(number, buffer, offset); + return bytes; + } + function cloneBuffer(buffer) { + const clone = Buffer.allocUnsafe(buffer.length); + buffer.copy(clone); + return clone; + } + exports2.pushDataSize = pushdata_bitcoin_1.default.encodingLength; + exports2.readPushDataInt = pushdata_bitcoin_1.default.decode; + exports2.varIntSize = varuint.encodingLength; + exports2.writePushDataInt = pushdata_bitcoin_1.default.encode; + exports2.reverseBuffer = utils_1.bufferUtils.reverseBuffer, exports2.getChunkSize = utils_1.bufferUtils.getChunkSize; + var BufferWriter = class { + buffer; + offset; + constructor(buffer, offset = 0) { + this.buffer = buffer; + this.offset = offset; + types.typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]); + } + writeUInt8(i) { + this.offset = this.buffer.writeUInt8(i, this.offset); + } + writeUInt16(i) { + this.offset = this.buffer.writeUInt16LE(i, this.offset); + } + writeInt32(i) { + this.offset = this.buffer.writeInt32LE(i, this.offset); + } + writeUInt32(i) { + this.offset = this.buffer.writeUInt32LE(i, this.offset); + } + writeInt64(i) { + this.offset = writeInt64LE(this.buffer, i, this.offset); + } + writeUInt64(i) { + this.offset = typeof i === "string" ? writeUInt64LEasString(this.buffer, i, this.offset) : writeUInt64LE(this.buffer, i, this.offset); + } + writeVarInt(i) { + const { + bytes + } = varuint.encode(i, this.buffer, this.offset); + this.offset += bytes; + } + writeSlice(slice) { + if (this.buffer.length < this.offset + slice.length) { + throw new Error("Cannot write slice out of bounds"); + } + this.offset += slice.copy(this.buffer, this.offset); + } + writeVarSlice(slice) { + this.writeVarInt(slice.length); + this.writeSlice(slice); + } + writeVector(vector) { + this.writeVarInt(vector.length); + vector.forEach((buf) => this.writeVarSlice(buf)); + } + }; + exports2.BufferWriter = BufferWriter; + var BufferReader = class { + buffer; + offset; + constructor(buffer, offset = 0) { + this.buffer = buffer; + this.offset = offset; + types.typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]); + } + readUInt8() { + const result = this.buffer.readUInt8(this.offset); + this.offset++; + return result; + } + readUInt16() { + const result = this.buffer.readUInt16LE(this.offset); + this.offset += 2; + return result; + } + readInt32() { + const result = this.buffer.readInt32LE(this.offset); + this.offset += 4; + return result; + } + readUInt32() { + const result = this.buffer.readUInt32LE(this.offset); + this.offset += 4; + return result; + } + readInt64() { + const result = readInt64LE(this.buffer, this.offset); + this.offset += 8; + return result; + } + readUInt64() { + const result = readUInt64LE(this.buffer, this.offset); + this.offset += 8; + return result; + } + readUInt64String() { + const result = readUInt64LEasString(this.buffer, this.offset); + this.offset += 8; + return result; + } + readVarInt() { + const { + numberValue, + bytes + } = varuint.decode(this.buffer, this.offset); + if (numberValue === null) throw new Error(OUT_OF_RANGE_ERROR); + this.offset += bytes; + return numberValue; + } + readSlice(n) { + if (this.buffer.length < this.offset + n) { + throw new Error("Cannot read slice out of bounds"); + } + const result = this.buffer.subarray(this.offset, this.offset + n); + this.offset += n; + return result; + } + readVarSlice() { + return this.readSlice(this.readVarInt()); + } + readVector() { + const count = this.readVarInt(); + const vector = []; + for (let i = 0; i < count; i++) vector.push(this.readVarSlice()); + return vector; + } + }; + exports2.BufferReader = BufferReader; + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/sstxcommitment.js +var require_sstxcommitment = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/sstxcommitment.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sstxcommitment = sstxcommitment; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check = tslib_1.__importStar(require_bs58check()); + var bufferutils_1 = require_bufferutils(); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function sstxcommitment(a, opts) { + if (!a.address && !a.amount && !a.hash && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + amount: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network)); + const network = a.network || networks_1.decred; + const o = { + name: "sstxcommitment", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.pubKeyHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(2, 22); + if (a.address) return _address().hash; + }); + lazy.prop(o, "output", () => { + if (!o.hash || !a.amount) return; + const buf = Buffer.allocUnsafe(o.hash.length + 10); + const writer = new bufferutils_1.BufferWriter(buf); + writer.writeSlice(o.hash); + writer.writeUInt64(a.amount); + writer.writeUInt8(0); + writer.writeUInt8(88); + return bscript.compile([OPS.OP_RETURN, buf]); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.pubKeyHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 32 || a.output[0] !== OPS.OP_RETURN) throw new TypeError("sstxcommitment output is invalid"); + const hash2 = a.output.subarray(2, 22); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/sstxpkh.js +var require_sstxpkh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/sstxpkh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sstxpkh = sstxpkh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check = tslib_1.__importStar(require_bs58check()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function sstxpkh(a, opts) { + if (!a.address && !a.hash && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network)); + const network = a.network || networks_1.decred; + const o = { + name: "sstxpkh", + network + }; + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.pubKeyHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(4, 24); + if (a.address) return _address().hash; + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_SSTX, OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.pubKeyHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 26 || a.output[0] !== OPS.OP_SSTX || a.output[1] !== OPS.OP_DUP || a.output[2] !== OPS.OP_HASH160 || a.output[3] !== 20 || a.output[24] !== OPS.OP_EQUALVERIFY || a.output[25] !== OPS.OP_CHECKSIG) throw new TypeError("sstxpkh output is invalid"); + const hash2 = a.output.subarray(4, 24); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/sstxsh.js +var require_sstxsh = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/sstxsh.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sstxsh = sstxsh; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58check = tslib_1.__importStar(require_bs58check()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var lazy = tslib_1.__importStar(require_lazy()); + var types_1 = require_types5(); + var { + OPS + } = bscript; + function sstxsh(a, opts) { + if (!a.address && !a.hash && !a.output) throw new TypeError("Not enough data"); + opts = Object.assign({ + validate: true + }, opts || {}); + (0, types_1.typeforce)({ + network: types_1.typeforce.maybe(types_1.typeforce.Object), + address: types_1.typeforce.maybe(types_1.typeforce.String), + hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)), + output: types_1.typeforce.maybe(types_1.typeforce.Buffer) + }, a); + const network = a.network || networks_1.decred; + const o = { + name: "sstxsh", + network + }; + const _address = lazy.value(() => bs58check.decodeAddress(a.address, network)); + lazy.prop(o, "address", () => { + if (!o.hash) return; + return bs58check.encodeAddress(o.hash, network.scriptHash, network); + }); + lazy.prop(o, "hash", () => { + if (a.output) return a.output.subarray(3, 23); + if (a.address) return _address().hash; + }); + lazy.prop(o, "output", () => { + if (!o.hash) return; + return bscript.compile([OPS.OP_SSTX, OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]); + }); + if (opts.validate) { + let hash = Buffer.from([]); + if (a.address) { + const { + version, + hash: aHash + } = _address(); + if (version !== network.scriptHash) throw new TypeError("Invalid version or Network mismatch"); + if (aHash.length !== 20) throw new TypeError("Invalid address"); + hash = aHash; + } + if (a.hash) { + if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError("Hash mismatch"); + else hash = a.hash; + } + if (a.output) { + if (a.output.length !== 24 || a.output[0] !== OPS.OP_SSTX || a.output[1] !== OPS.OP_HASH160 || a.output[2] !== 20 || a.output[23] !== OPS.OP_EQUAL) throw new TypeError("sstxsh output is invalid"); + const hash2 = a.output.subarray(3, 23); + if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError("Hash mismatch"); + } + } + return Object.assign(o, a); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/payments/index.js +var require_payments2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/payments/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sstxsh = exports2.sstxpkh = exports2.sstxcommitment = exports2.sstxchange = exports2.p2wsh = exports2.p2wpkh = exports2.p2tr = exports2.p2sh = exports2.p2pkh = exports2.p2pk = exports2.p2ms = exports2.embed = void 0; + var embed_1 = require_embed(); + Object.defineProperty(exports2, "embed", { + enumerable: true, + get: function() { + return embed_1.p2data; + } + }); + var p2ms_1 = require_p2ms(); + Object.defineProperty(exports2, "p2ms", { + enumerable: true, + get: function() { + return p2ms_1.p2ms; + } + }); + var p2pk_1 = require_p2pk(); + Object.defineProperty(exports2, "p2pk", { + enumerable: true, + get: function() { + return p2pk_1.p2pk; + } + }); + var p2pkh_1 = require_p2pkh(); + Object.defineProperty(exports2, "p2pkh", { + enumerable: true, + get: function() { + return p2pkh_1.p2pkh; + } + }); + var p2sh_1 = require_p2sh(); + Object.defineProperty(exports2, "p2sh", { + enumerable: true, + get: function() { + return p2sh_1.p2sh; + } + }); + var p2tr_1 = require_p2tr(); + Object.defineProperty(exports2, "p2tr", { + enumerable: true, + get: function() { + return p2tr_1.p2tr; + } + }); + var p2wpkh_1 = require_p2wpkh(); + Object.defineProperty(exports2, "p2wpkh", { + enumerable: true, + get: function() { + return p2wpkh_1.p2wpkh; + } + }); + var p2wsh_1 = require_p2wsh(); + Object.defineProperty(exports2, "p2wsh", { + enumerable: true, + get: function() { + return p2wsh_1.p2wsh; + } + }); + var sstxchange_1 = require_sstxchange(); + Object.defineProperty(exports2, "sstxchange", { + enumerable: true, + get: function() { + return sstxchange_1.sstxchange; + } + }); + var sstxcommitment_1 = require_sstxcommitment(); + Object.defineProperty(exports2, "sstxcommitment", { + enumerable: true, + get: function() { + return sstxcommitment_1.sstxcommitment; + } + }); + var sstxpkh_1 = require_sstxpkh(); + Object.defineProperty(exports2, "sstxpkh", { + enumerable: true, + get: function() { + return sstxpkh_1.sstxpkh; + } + }); + var sstxsh_1 = require_sstxsh(); + Object.defineProperty(exports2, "sstxsh", { + enumerable: true, + get: function() { + return sstxsh_1.sstxsh; + } + }); + } +}); + +// node_modules/@trezor/utxo-lib/lib/address.js +var require_address = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/address.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromBase58Check = fromBase58Check; + exports2.fromBech32 = fromBech32; + exports2.toBech32 = toBech32; + exports2.fromOutputScript = fromOutputScript; + exports2.getAddressType = getAddressType; + exports2.toOutputScript = toOutputScript; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bech32_1 = require_dist8(); + var bs58check = tslib_1.__importStar(require_bs58check()); + var networks_1 = require_networks(); + var payments = tslib_1.__importStar(require_payments2()); + var bscript = tslib_1.__importStar(require_script()); + function fromBase58Check(address, network = networks_1.bitcoin) { + return bs58check.decodeAddress(address, network); + } + function fromBech32(address) { + let result; + let version; + try { + result = bech32_1.bech32.decode(address); + } catch { + } + if (result) { + [version] = result.words; + if (version !== 0) throw new TypeError(`${address} uses wrong encoding`); + } else { + result = bech32_1.bech32m.decode(address); + [version] = result.words; + if (version === 0) throw new TypeError(`${address} uses wrong encoding`); + } + const data = bech32_1.bech32.fromWords(result.words.slice(1)); + return { + version, + prefix: result.prefix, + data: Buffer.from(data) + }; + } + function toBech32(data, version, prefix) { + const words = bech32_1.bech32.toWords(data); + words.unshift(version); + return version === 0 ? bech32_1.bech32.encode(prefix, words) : bech32_1.bech32m.encode(prefix, words); + } + var FUTURE_SEGWIT_MAX_SIZE = 40; + var FUTURE_SEGWIT_MIN_SIZE = 2; + var FUTURE_SEGWIT_MAX_VERSION = 16; + var FUTURE_SEGWIT_MIN_VERSION = 1; + var FUTURE_SEGWIT_VERSION_DIFF = 80; + function toFutureSegwitAddress(output, network = networks_1.bitcoin) { + const data = output.subarray(2); + if (data.length < FUTURE_SEGWIT_MIN_SIZE || data.length > FUTURE_SEGWIT_MAX_SIZE) throw new TypeError("Invalid program length for segwit address"); + const version = output[0] - FUTURE_SEGWIT_VERSION_DIFF; + if (version < FUTURE_SEGWIT_MIN_VERSION || version > FUTURE_SEGWIT_MAX_VERSION) throw new TypeError("Invalid version for segwit address"); + if (output[1] !== data.length) throw new TypeError("Invalid script for segwit address"); + return toBech32(data, version, network.bech32); + } + function fromOutputScript(output, network = networks_1.bitcoin) { + try { + return payments.p2pkh({ + output, + network + }).address; + } catch { + } + try { + return payments.p2sh({ + output, + network + }).address; + } catch { + } + try { + return payments.p2wpkh({ + output, + network + }).address; + } catch { + } + try { + return payments.p2wsh({ + output, + network + }).address; + } catch { + } + try { + return payments.p2tr({ + output, + network + }).address; + } catch { + } + try { + return toFutureSegwitAddress(output, network); + } catch { + } + throw new Error(`${bscript.toASM(output)} has no matching Address`); + } + function decodeAddress(address, network) { + try { + const { + hash, + version + } = fromBase58Check(address, network); + return { + success: true, + format: "base58", + version, + hash + }; + } catch { + try { + const { + data, + prefix, + version + } = fromBech32(address); + if (prefix === network.bech32) { + return { + success: true, + format: "bech32", + version, + hash: data + }; + } + return { + success: false, + error: "bech32-invalid-prefix" + }; + } catch { + } + } + return { + success: false, + error: "unknown-format" + }; + } + function identifyAddressType(format, version, hash, network) { + if (format === "base58") { + if (version === network.pubKeyHash) return "p2pkh"; + if (version === network.scriptHash) return "p2sh"; + } else if (format === "bech32") { + if (version === 0) { + if (hash.length === 20) return "p2wpkh"; + if (hash.length === 32) return "p2wsh"; + } else if (version === 1 && hash.length === 32) { + return "p2tr"; + } else if (version >= FUTURE_SEGWIT_MIN_VERSION && version <= FUTURE_SEGWIT_MAX_VERSION && hash.length >= FUTURE_SEGWIT_MIN_SIZE && hash.length <= FUTURE_SEGWIT_MAX_SIZE) { + return "p2w-unknown"; + } + } + return "unknown"; + } + function createOutputScript(type, hash, version) { + switch (type) { + case "p2pkh": + return payments.p2pkh({ + hash + }).output; + case "p2sh": + return payments.p2sh({ + hash + }).output; + case "p2wpkh": + return payments.p2wpkh({ + hash + }).output; + case "p2wsh": + return payments.p2wsh({ + hash + }).output; + case "p2tr": + case "p2w-unknown": + return bscript.compile([version + FUTURE_SEGWIT_VERSION_DIFF, hash]); + } + } + function getAddressType(address, network = networks_1.bitcoin) { + const { + success, + format, + version, + hash + } = decodeAddress(address, network); + return success ? identifyAddressType(format, version, hash, network) : "unknown"; + } + function toOutputScript(address, network = networks_1.bitcoin) { + const { + success, + format, + version, + hash, + error + } = decodeAddress(address, network); + if (success) { + const type = identifyAddressType(format, version, hash, network); + if (type !== "unknown") { + return createOutputScript(type, hash, version); + } + } else if (error === "bech32-invalid-prefix") { + throw new Error(`${address} has an invalid prefix`); + } + throw new Error(`${address} has no matching Script`); + } + } +}); + +// node_modules/wif/src/cjs/index.cjs +var require_cjs8 = __commonJS({ + "node_modules/wif/src/cjs/index.cjs"(exports2) { + "use strict"; + var __importDefault2 = exports2 && exports2.__importDefault || function(mod3) { + return mod3 && mod3.__esModule ? mod3 : { "default": mod3 }; + }; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.encode = exports2.decode = exports2.encodeRaw = exports2.decodeRaw = void 0; + var bs58check_1 = __importDefault2(require_cjs5()); + function decodeRaw(buffer, version) { + if (version !== void 0 && buffer[0] !== version) + throw new Error("Invalid network version"); + if (buffer.length === 33) { + return { + version: buffer[0], + privateKey: buffer.slice(1, 33), + compressed: false + }; + } + if (buffer.length !== 34) + throw new Error("Invalid WIF length"); + if (buffer[33] !== 1) + throw new Error("Invalid compression flag"); + return { + version: buffer[0], + privateKey: buffer.slice(1, 33), + compressed: true + }; + } + exports2.decodeRaw = decodeRaw; + function encodeRaw(version, privateKey, compressed) { + if (privateKey.length !== 32) + throw new TypeError("Invalid privateKey length"); + var result = new Uint8Array(compressed ? 34 : 33); + var view = new DataView(result.buffer); + view.setUint8(0, version); + result.set(privateKey, 1); + if (compressed) { + result[33] = 1; + } + return result; + } + exports2.encodeRaw = encodeRaw; + function decode(str, version) { + return decodeRaw(bs58check_1.default.decode(str), version); + } + exports2.decode = decode; + function encode(wif) { + return bs58check_1.default.encode(encodeRaw(wif.version, wif.privateKey, wif.compressed)); + } + exports2.encode = encode; + } +}); + +// node_modules/@trezor/utxo-lib/lib/bip32.js +var require_bip32 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/bip32.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromBase58 = fromBase58; + exports2.fromPrivateKey = fromPrivateKey; + exports2.fromPublicKey = fromPublicKey; + exports2.fromSeed = fromSeed; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var tiny_secp256k1_1 = tslib_1.__importDefault(require_tiny_secp256k1()); + var wif = tslib_1.__importStar(require_cjs8()); + var bs58check = tslib_1.__importStar(require_bs58check()); + var crypto2 = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var typeforce_1 = require_typeforce2(); + var UINT256_TYPE = typeforce_1.typeforce.BufferN(32); + var NETWORK_TYPE = typeforce_1.typeforce.compile({ + wif: typeforce_1.typeforce.UInt8, + bip32: { + public: typeforce_1.typeforce.UInt32, + private: typeforce_1.typeforce.UInt32 + } + }); + var HIGHEST_BIT = 2147483648; + var UINT31_MAX = 2 ** 31 - 1; + function BIP32Path(value) { + return typeforce_1.typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/) !== null; + } + function UInt31(value) { + return typeforce_1.typeforce.UInt32(value) && value <= UINT31_MAX; + } + function fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) { + (0, typeforce_1.typeforce)({ + privateKey: UINT256_TYPE, + chainCode: UINT256_TYPE + }, { + privateKey, + chainCode + }); + network = network || networks_1.bitcoin; + if (!tiny_secp256k1_1.default.isPrivate(privateKey)) throw new TypeError("Private key not in range [1, n)"); + return new BIP32(privateKey, void 0, chainCode, network, depth, index, parentFingerprint); + } + function fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) { + (0, typeforce_1.typeforce)({ + publicKey: typeforce_1.typeforce.BufferN(33), + chainCode: UINT256_TYPE + }, { + publicKey, + chainCode + }); + network = network || networks_1.bitcoin; + if (!tiny_secp256k1_1.default.isPoint(publicKey)) throw new TypeError("Point is not on the curve"); + return new BIP32(void 0, publicKey, chainCode, network, depth, index, parentFingerprint); + } + var BIP32 = class { + __D; + __Q; + chainCode; + network; + __DEPTH; + __INDEX; + __PARENT_FINGERPRINT; + lowR; + constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0) { + this.__D = __D; + this.__Q = __Q; + this.chainCode = chainCode; + this.network = network; + this.__DEPTH = __DEPTH; + this.__INDEX = __INDEX; + this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT; + (0, typeforce_1.typeforce)(NETWORK_TYPE, network); + this.lowR = false; + } + get depth() { + return this.__DEPTH; + } + get index() { + return this.__INDEX; + } + get parentFingerprint() { + return this.__PARENT_FINGERPRINT; + } + get publicKey() { + if (this.__Q === void 0) this.__Q = tiny_secp256k1_1.default.pointFromScalar(this.__D, true); + return this.__Q; + } + get privateKey() { + return this.__D; + } + get identifier() { + if ((0, networks_1.isNetworkType)("decred", this.network)) return crypto2.hash160blake256(this.publicKey); + return crypto2.hash160(this.publicKey); + } + get fingerprint() { + return this.identifier.subarray(0, 4); + } + get compressed() { + return true; + } + isNeutered() { + return this.__D === void 0; + } + neutered() { + return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint); + } + toBase58() { + const { + network + } = this; + const version = !this.isNeutered() ? network.bip32.private : network.bip32.public; + const buffer = Buffer.allocUnsafe(78); + buffer.writeUInt32BE(version, 0); + buffer.writeUInt8(this.depth, 4); + buffer.writeUInt32BE(this.parentFingerprint, 5); + buffer.writeUInt32BE(this.index, 9); + this.chainCode.copy(buffer, 13); + if (!this.isNeutered()) { + buffer.writeUInt8(0, 45); + this.privateKey.copy(buffer, 46); + } else { + this.publicKey.copy(buffer, 45); + } + return bs58check.encode(buffer, network); + } + toWIF() { + if (!this.privateKey) throw new TypeError("Missing private key"); + return wif.encode({ + version: this.network.wif, + privateKey: this.privateKey, + compressed: true + }); + } + derive(index) { + (0, typeforce_1.typeforce)(typeforce_1.typeforce.UInt32, index); + const isHardened = index >= HIGHEST_BIT; + const data = Buffer.allocUnsafe(37); + if (isHardened) { + if (this.isNeutered()) throw new TypeError("Missing private key for hardened child key"); + data[0] = 0; + this.privateKey.copy(data, 1); + data.writeUInt32BE(index, 33); + } else { + this.publicKey.copy(data, 0); + data.writeUInt32BE(index, 33); + } + const I = crypto2.hmacSHA512(this.chainCode, data); + const IL = I.subarray(0, 32); + const IR = I.subarray(32); + if (!tiny_secp256k1_1.default.isPrivate(IL)) return this.derive(index + 1); + let hd; + if (!this.isNeutered()) { + const ki = tiny_secp256k1_1.default.privateAdd(this.privateKey, IL); + if (ki == null) return this.derive(index + 1); + hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0)); + } else { + const Ki = tiny_secp256k1_1.default.pointAddScalar(this.publicKey, IL, true); + if (Ki === null) return this.derive(index + 1); + hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0)); + } + return hd; + } + deriveHardened(index) { + (0, typeforce_1.typeforce)(UInt31, index); + return this.derive(index + HIGHEST_BIT); + } + derivePath(path2) { + (0, typeforce_1.typeforce)(BIP32Path, path2); + let splitPath = path2.split("/"); + if (splitPath[0] === "m") { + if (this.parentFingerprint) throw new TypeError("Expected master, got child"); + splitPath = splitPath.slice(1); + } + return splitPath.reduce((prevHd, indexStr) => { + let index; + if (indexStr.slice(-1) === `'`) { + index = parseInt(indexStr.slice(0, -1), 10); + return prevHd.deriveHardened(index); + } + index = parseInt(indexStr, 10); + return prevHd.derive(index); + }, this); + } + sign(hash, lowR) { + if (!this.privateKey) throw new Error("Missing private key"); + if (lowR === void 0) lowR = this.lowR; + if (lowR === false) { + return tiny_secp256k1_1.default.sign(hash, this.privateKey); + } + let sig = tiny_secp256k1_1.default.sign(hash, this.privateKey); + const extraData = Buffer.alloc(32, 0); + let counter = 0; + while (sig[0] > 127) { + counter++; + extraData.writeUIntLE(counter, 0, 6); + sig = tiny_secp256k1_1.default.signWithEntropy(hash, this.privateKey, extraData); + } + return sig; + } + verify(hash, signature) { + return tiny_secp256k1_1.default.verify(hash, this.publicKey, signature); + } + }; + function fromBase58(inString, network) { + const buffer = Buffer.from((0, networks_1.isNetworkType)("decred", network) ? bs58check.decodeBlake256Key(inString) : bs58check.decode(inString, network)); + if (buffer.length !== 78) throw new TypeError("Invalid buffer length"); + network = network || networks_1.bitcoin; + const version = buffer.readUInt32BE(0); + if (version !== network.bip32.private && version !== network.bip32.public) throw new TypeError("Invalid network version"); + const depth = buffer[4]; + const parentFingerprint = buffer.readUInt32BE(5); + if (depth === 0) { + if (parentFingerprint !== 0) throw new TypeError("Invalid parent fingerprint"); + } + const index = buffer.readUInt32BE(9); + if (depth === 0 && index !== 0) throw new TypeError("Invalid index"); + const chainCode = buffer.subarray(13, 45); + let hd; + if (version === network.bip32.private) { + if (buffer.readUInt8(45) !== 0) throw new TypeError("Invalid private key"); + const k = buffer.subarray(46, 78); + hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint); + } else { + const X = buffer.subarray(45, 78); + hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint); + } + return hd; + } + function fromPrivateKey(privateKey, chainCode, network) { + return fromPrivateKeyLocal(privateKey, chainCode, network); + } + function fromPublicKey(publicKey, chainCode, network) { + return fromPublicKeyLocal(publicKey, chainCode, network); + } + function fromSeed(seed, network) { + (0, typeforce_1.typeforce)(typeforce_1.typeforce.Buffer, seed); + if (seed.length < 16) throw new TypeError("Seed should be at least 128 bits"); + if (seed.length > 64) throw new TypeError("Seed should be at most 512 bits"); + network = network || networks_1.bitcoin; + const I = crypto2.hmacSHA512(Buffer.from("Bitcoin seed", "utf8"), seed); + const IL = I.subarray(0, 32); + const IR = I.subarray(32); + return fromPrivateKey(IL, IR, network); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/coinselectUtils.js +var require_coinselectUtils = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/coinselectUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MINIMAL_COINBASE_CONFIRMATIONS = exports2.OUTPUT_SCRIPT_LENGTH = exports2.INPUT_SCRIPT_LENGTH = exports2.ZERO = void 0; + exports2.getVarIntSize = getVarIntSize; + exports2.inputWeight = inputWeight; + exports2.inputBytes = inputBytes; + exports2.outputWeight = outputWeight; + exports2.outputBytes = outputBytes; + exports2.getFeeForBytes = getFeeForBytes; + exports2.transactionWeight = transactionWeight; + exports2.transactionBytes = transactionBytes; + exports2.getDustAmount = getDustAmount; + exports2.bignumberOrNaN = bignumberOrNaN; + exports2.sumOrNaN = sumOrNaN; + exports2.getFeePolicy = getFeePolicy; + exports2.getFee = getFee; + exports2.finalize = finalize; + exports2.anyOf = anyOf; + exports2.utxoScore = utxoScore; + exports2.sortByScore = sortByScore; + exports2.filterCoinbase = filterCoinbase; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var networks_1 = require_networks(); + exports2.ZERO = new bn_js_1.default(0); + exports2.INPUT_SCRIPT_LENGTH = { + p2pkh: 108, + p2sh: 107, + p2tr: 65, + p2wpkh: 107, + p2wsh: 107 + }; + exports2.OUTPUT_SCRIPT_LENGTH = { + p2pkh: 25, + p2sh: 23, + p2tr: 34, + p2wpkh: 22, + p2wsh: 34 + }; + var SEGWIT_INPUT_SCRIPT_TYPES = ["p2sh", "p2tr", "p2wpkh", "p2wsh"]; + var TX_BASE = 32; + var INPUT_SIZE = 160; + var DUST_RELAY_FEE_RATE = 3; + exports2.MINIMAL_COINBASE_CONFIRMATIONS = 100; + function getVarIntSize(length) { + if (length < 253) return 1; + if (length < 65536) return 3; + if (length < 4294967296) return 5; + return 9; + } + function inputWeight(input) { + if (input.weight) return input.weight; + let weight = INPUT_SIZE; + if (!SEGWIT_INPUT_SCRIPT_TYPES.includes(input.type)) { + weight += 4 * input.script.length; + } else { + if (input.type === "p2sh") { + weight += 4 * (2 + 22); + } else { + weight += 4; + } + weight += 1 + input.script.length; + } + return weight; + } + function inputBytes(input) { + return Math.ceil(inputWeight(input) / 4); + } + function outputWeight(output) { + if (output.weight) return output.weight; + return 4 * (8 + 1 + output.script.length); + } + function outputBytes(output) { + return Math.ceil(outputWeight(output) / 4); + } + function getFeeForBytes(feeRate, bytes) { + return Math.ceil(feeRate * bytes); + } + function transactionWeight(inputs, outputs) { + const segwitInputs = inputs.filter((i) => SEGWIT_INPUT_SCRIPT_TYPES.includes(i.type)).length; + return TX_BASE + 4 * getVarIntSize(inputs.length) + inputs.reduce((x, i) => x + inputWeight(i), 0) + 4 * getVarIntSize(outputs.length) + outputs.reduce((x, o) => x + outputWeight(o), 0) + (segwitInputs ? 2 + (inputs.length - segwitInputs) : 0); + } + function transactionBytes(inputs, outputs) { + return Math.ceil(transactionWeight(inputs, outputs) / 4); + } + function getDustAmount(feeRate, { + txType, + longTermFeeRate, + dustThreshold + }) { + const inputSize = inputBytes({ + type: txType, + script: { + length: exports2.INPUT_SCRIPT_LENGTH[txType] + } + }); + const longTermFee = longTermFeeRate ? Math.min(feeRate, longTermFeeRate) : 0; + const dustRelayFeeRate = Math.max(longTermFee, DUST_RELAY_FEE_RATE); + return Math.max(dustThreshold || 0, getFeeForBytes(dustRelayFeeRate, inputSize)); + } + function bignumberOrNaN(v, forgiving = false) { + if (bn_js_1.default.isBN(v)) return v; + const defaultValue = forgiving ? exports2.ZERO : void 0; + if (!v || typeof v !== "string" || !/^\d+$/.test(v)) return defaultValue; + try { + return new bn_js_1.default(v); + } catch { + return defaultValue; + } + } + function sumOrNaN(range, forgiving = false) { + return range.reduce((a, x) => { + if (!a) return a; + const value = bignumberOrNaN(x.value); + if (!value) return forgiving ? exports2.ZERO.add(a) : void 0; + return value.add(a); + }, exports2.ZERO); + } + function getFeePolicy(network) { + if ((0, networks_1.isNetworkType)("doge", network)) return "doge"; + if ((0, networks_1.isNetworkType)("zcash", network)) return "zcash"; + return "bitcoin"; + } + function getBitcoinFee(inputs, outputs, feeRate, { + baseFee = 0, + floorBaseFee + }) { + const bytes = transactionBytes(inputs, outputs); + const defaultFee = getFeeForBytes(feeRate, bytes); + return baseFee && floorBaseFee ? baseFee * (1 + Math.floor(defaultFee / baseFee)) : baseFee + defaultFee; + } + function getDogeFee(inputs, outputs, feeRate, { + dustThreshold = 0, + ...options + }) { + const fee = getBitcoinFee(inputs, outputs, feeRate, options); + const limit = new bn_js_1.default(dustThreshold); + const dustOutputsCount = outputs.filter(({ + value + }) => value && value.lt(limit)).length; + return fee + dustOutputsCount * dustThreshold; + } + var MARGINAL_FEE_ZAT_PER_ACTION = 5e3; + var GRACE_ACTIONS = 2; + var P2PKH_STANDARD_INPUT_SIZE = 150; + var P2PKH_STANDARD_OUTPUT_SIZE = 34; + function getZcashFee(inputs, outputs, feeRate, options) { + const fee = getBitcoinFee(inputs, outputs, feeRate, options); + const txInTotalBytes = inputs.reduce((sum, i) => sum + inputBytes(i), 0); + const txOutTotalBytes = outputs.reduce((sum, o) => sum + outputBytes(o), 0); + const actions = Math.max(GRACE_ACTIONS, Math.ceil(txInTotalBytes / P2PKH_STANDARD_INPUT_SIZE), Math.ceil(txOutTotalBytes / P2PKH_STANDARD_OUTPUT_SIZE)); + return Math.max(actions * MARGINAL_FEE_ZAT_PER_ACTION, fee); + } + function getFee(inputs, outputs, feeRate, { + feePolicy, + ...options + } = {}) { + switch (feePolicy) { + case "doge": + return getDogeFee(inputs, outputs, feeRate, options); + case "zcash": + return getZcashFee(inputs, outputs, feeRate, options); + default: + return getBitcoinFee(inputs, outputs, feeRate, options); + } + } + function finalize(inputs, outputs, feeRate, options) { + const changeOutput = options.changeOutput || { + script: { + length: exports2.OUTPUT_SCRIPT_LENGTH[options.txType] + } + }; + const fee = getFee(inputs, outputs, feeRate, options); + const feeAfterExtraOutput = getFee(inputs, [...outputs, changeOutput], feeRate, options); + const sumInputs = sumOrNaN(inputs); + const sumOutputs = sumOrNaN(outputs); + if (!sumInputs || !sumOutputs || sumInputs.sub(sumOutputs).lt(new bn_js_1.default(fee))) { + return { + fee + }; + } + const remainderAfterExtraOutput = sumInputs.sub(sumOutputs.add(new bn_js_1.default(feeAfterExtraOutput))); + const dustAmount = getDustAmount(feeRate, options); + const finalOutputs = [...outputs]; + if (remainderAfterExtraOutput.gte(new bn_js_1.default(dustAmount))) { + finalOutputs.push({ + ...changeOutput, + value: remainderAfterExtraOutput + }); + } + return { + inputs, + outputs: finalOutputs, + fee: sumInputs.sub(sumOrNaN(finalOutputs, true)).toNumber() + }; + } + function anyOf(algorithms) { + return (utxos, outputs, feeRate, options) => { + let result = { + fee: 0 + }; + for (let i = 0; i < algorithms.length; i++) { + const algorithm = algorithms[i]; + result = algorithm(utxos, outputs, feeRate, options); + if (result.inputs) { + return result; + } + } + return result; + }; + } + function utxoScore(x, feeRate) { + return x.value.sub(new bn_js_1.default(getFeeForBytes(feeRate, inputBytes(x)))); + } + function sortByScore(feeRate) { + return (a, b) => { + const difference = utxoScore(a, feeRate).sub(utxoScore(b, feeRate)); + if (difference.eq(exports2.ZERO)) { + return a.i - b.i; + } + return difference.isNeg() ? 1 : -1; + }; + } + function filterCoinbase(utxos, minConfCoinbase) { + return utxos.filter((utxo) => { + if (utxo.coinbase && !utxo.required) { + return utxo.confirmations >= minConfCoinbase; + } + return true; + }); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/request.js +var require_request = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/request.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateAndParseRequest = validateAndParseRequest; + var address_1 = require_address(); + var coinselectUtils_1 = require_coinselectUtils(); + var embed_1 = require_embed(); + function validateAndParseFeeRate(rate) { + const feeRate = typeof rate === "string" ? Number(rate) : rate; + if (typeof feeRate !== "number" || Number.isNaN(feeRate) || !Number.isFinite(feeRate) || feeRate > Number.MAX_SAFE_INTEGER || feeRate <= 0) { + return; + } + return feeRate; + } + function transformInput(i, utxo, txType) { + if (typeof utxo.coinbase !== "boolean") { + throw new Error("Missing coinbase"); + } + if (typeof utxo.own !== "boolean") { + throw new Error("Missing own"); + } + if (typeof utxo.confirmations !== "number") { + throw new Error("Missing confirmations"); + } + const value = (0, coinselectUtils_1.bignumberOrNaN)(utxo.amount); + if (!value) { + throw new Error("Invalid amount"); + } + return { + ...utxo, + type: txType, + i, + script: { + length: coinselectUtils_1.INPUT_SCRIPT_LENGTH[txType] + }, + value + }; + } + function validateAndParseUtxos(txType, { + utxos + }) { + if (utxos.length === 0) { + return { + type: "error", + error: "MISSING-UTXOS" + }; + } + const incorrectUtxoError = (index, message) => ({ + type: "error", + error: "INCORRECT-UTXO", + message: `${message} at index ${index}` + }); + const result = []; + for (let i = 0; i < utxos.length; i++) { + try { + const csInput = transformInput(i, utxos[i], txType); + csInput.weight = (0, coinselectUtils_1.inputWeight)(csInput); + result.push(csInput); + } catch (error) { + return incorrectUtxoError(i, error.message); + } + } + return result; + } + function transformOutput(output, txType, network) { + const script = { + length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[txType] + }; + if (output.type === "payment") { + const value = (0, coinselectUtils_1.bignumberOrNaN)(output.amount); + if (!value) throw new Error("Invalid amount"); + return { + value, + script: (0, address_1.toOutputScript)(output.address, network) + }; + } + if (output.type === "payment-noaddress") { + const value = (0, coinselectUtils_1.bignumberOrNaN)(output.amount); + if (!value) throw new Error("Invalid amount"); + return { + value, + script + }; + } + if (output.type === "opreturn") { + return { + value: (0, coinselectUtils_1.bignumberOrNaN)("0", true), + script: (0, embed_1.p2data)({ + data: [Buffer.from(output.dataHex, "hex")] + }).output + }; + } + if (output.type === "send-max") { + return { + script: (0, address_1.toOutputScript)(output.address, network) + }; + } + if (output.type === "send-max-noaddress") { + return { + script + }; + } + throw new Error("Unknown output type"); + } + function validateAndParseOutputs(txType, { + outputs, + network + }) { + if (outputs.length === 0) { + return { + type: "error", + error: "MISSING-OUTPUTS" + }; + } + const incorrectOutputError = (index, message) => ({ + type: "error", + error: "INCORRECT-OUTPUT", + message: `${message} at index ${index}` + }); + let sendMaxOutputIndex = -1; + const result = []; + for (let i = 0; i < outputs.length; i++) { + const output = outputs[i]; + if (output.type === "send-max-noaddress" || output.type === "send-max") { + if (sendMaxOutputIndex >= 0) { + return incorrectOutputError(i, "Multiple send-max"); + } + sendMaxOutputIndex = i; + } + try { + const csOutput = transformOutput(output, txType, network); + csOutput.weight = (0, coinselectUtils_1.outputWeight)(csOutput); + result.push(csOutput); + } catch (error) { + return incorrectOutputError(i, error.message); + } + } + return { + outputs: result, + sendMaxOutputIndex + }; + } + function validateAndParseChangeOutput(txType, { + changeAddress, + network + }) { + try { + return transformOutput({ + type: "send-max", + ...changeAddress + }, txType, network); + } catch (error) { + return { + type: "error", + error: "INCORRECT-OUTPUT", + message: error.message + }; + } + } + function validateAndParseRequest(request) { + const feeRate = validateAndParseFeeRate(request.feeRate); + if (!feeRate) { + return { + type: "error", + error: "INCORRECT-FEE-RATE" + }; + } + const longTermFeeRate = validateAndParseFeeRate(request.longTermFeeRate); + if (request.longTermFeeRate != null && !longTermFeeRate) { + return { + type: "error", + error: "INCORRECT-FEE-RATE" + }; + } + const txType = request.txType || "p2pkh"; + const inputs = validateAndParseUtxos(txType, request); + if ("error" in inputs) { + return inputs; + } + const outputs = validateAndParseOutputs(txType, request); + if ("error" in outputs) { + return outputs; + } + const changeOutput = validateAndParseChangeOutput(txType, request); + if ("error" in changeOutput) { + return changeOutput; + } + const feePolicy = (0, coinselectUtils_1.getFeePolicy)(request.network); + return { + txType, + inputs, + ...outputs, + changeOutput, + feeRate, + feePolicy, + longTermFeeRate, + dustThreshold: request.dustThreshold, + baseFee: request.baseFee, + floorBaseFee: request.floorBaseFee, + sortingStrategy: request.sortingStrategy + }; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/sorting/convertOutput.js +var require_convertOutput = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/sorting/convertOutput.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.convertOutput = void 0; + var convertOutput = (selectedOutput, composeOutput) => { + if (composeOutput.type === "change") { + return { + ...composeOutput, + amount: selectedOutput.value.toString() + }; + } + if (composeOutput.type === "opreturn") { + return composeOutput; + } + return { + ...composeOutput, + type: "payment", + amount: selectedOutput.value.toString() + }; + }; + exports2.convertOutput = convertOutput; + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/sorting/bip69SortingStrategy.js +var require_bip69SortingStrategy = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/sorting/bip69SortingStrategy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.bip69SortingStrategy = void 0; + var convertOutput_1 = require_convertOutput(); + function inputComparator(a, b) { + return Buffer.from(a.txid, "hex").compare(Buffer.from(b.txid, "hex")) || a.vout - b.vout; + } + function outputComparator(a, b) { + return a.value.cmp(b.value) || (Buffer.isBuffer(a.script) && Buffer.isBuffer(b.script) ? a.script.compare(b.script) : a.script.length - b.script.length); + } + var bip69SortingStrategy = ({ + result, + request, + convertedInputs + }) => { + const defaultPermutation = []; + const convertedOutputs = result.outputs.map((output, index) => { + defaultPermutation.push(index); + if (request.outputs[index]) { + return (0, convertOutput_1.convertOutput)(output, request.outputs[index]); + } + return (0, convertOutput_1.convertOutput)(output, { + type: "change", + ...request.changeAddress + }); + }); + const permutation = defaultPermutation.sort((a, b) => outputComparator(result.outputs[a], result.outputs[b])); + const sortedOutputs = permutation.map((index) => convertedOutputs[index]); + return { + inputs: convertedInputs.sort(inputComparator), + outputs: sortedOutputs, + outputsPermutation: permutation + }; + }; + exports2.bip69SortingStrategy = bip69SortingStrategy; + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/sorting/noneSortingStrategy.js +var require_noneSortingStrategy = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/sorting/noneSortingStrategy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.noneSortingStrategy = void 0; + var convertOutput_1 = require_convertOutput(); + var noneSortingStrategy = ({ + result, + request, + convertedInputs + }) => { + const convertedOutputs = result.outputs.map((output, index) => { + if (request.outputs[index]) { + return (0, convertOutput_1.convertOutput)(output, request.outputs[index]); + } + return (0, convertOutput_1.convertOutput)(output, { + type: "change", + ...request.changeAddress + }); + }); + return { + inputs: convertedInputs, + outputs: convertedOutputs, + outputsPermutation: Array.from(convertedOutputs.keys()) + }; + }; + exports2.noneSortingStrategy = noneSortingStrategy; + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/sorting/randomSortingStrategy.js +var require_randomSortingStrategy = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/sorting/randomSortingStrategy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.randomSortingStrategy = void 0; + var utils_1 = require_lib(); + var convertOutput_1 = require_convertOutput(); + var randomSortingStrategy = ({ + result, + request, + convertedInputs + }) => { + const nonChangeOutputPermutation = []; + const changeOutputPermutation = []; + const convertedOutputs = result.outputs.map((output, index) => { + if (request.outputs[index]) { + nonChangeOutputPermutation.push(index); + return (0, convertOutput_1.convertOutput)(output, request.outputs[index]); + } + changeOutputPermutation.push(index); + return (0, convertOutput_1.convertOutput)(output, { + type: "change", + ...request.changeAddress + }); + }); + const permutation = [...nonChangeOutputPermutation]; + const newPositionOfChange = (0, utils_1.getRandomInt)(0, permutation.length + 1); + permutation.splice(newPositionOfChange, 0, ...changeOutputPermutation); + const sortedOutputs = permutation.map((index) => convertedOutputs[index]); + return { + inputs: (0, utils_1.arrayShuffle)(convertedInputs, { + randomInt: utils_1.getRandomInt + }), + outputs: sortedOutputs, + outputsPermutation: permutation + }; + }; + exports2.randomSortingStrategy = randomSortingStrategy; + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/transaction.js +var require_transaction2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createTransaction = createTransaction; + var bip69SortingStrategy_1 = require_bip69SortingStrategy(); + var noneSortingStrategy_1 = require_noneSortingStrategy(); + var randomSortingStrategy_1 = require_randomSortingStrategy(); + var strategyMap = { + bip69: bip69SortingStrategy_1.bip69SortingStrategy, + none: noneSortingStrategy_1.noneSortingStrategy, + random: randomSortingStrategy_1.randomSortingStrategy + }; + function createTransaction(request, result) { + const convertedInputs = result.inputs.map((input) => request.utxos[input.i]); + return strategyMap[request.sortingStrategy]({ + result, + request, + convertedInputs + }); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/result.js +var require_result2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getErrorResult = getErrorResult; + exports2.getResult = getResult; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var transaction_1 = require_transaction2(); + var coinselectUtils_1 = require_coinselectUtils(); + var types_1 = require_types5(); + function getErrorResult(error) { + const message = error instanceof Error ? error.message : `${error}`; + const known = types_1.COMPOSE_ERROR_TYPES.find((e) => e === message); + if (known) { + return { + type: "error", + error: known + }; + } + return { + type: "error", + error: "COINSELECT", + message + }; + } + function splitByCompleteness(outputs) { + const complete = []; + const incomplete = []; + outputs.forEach((output) => { + if (output.type === "payment" || output.type === "send-max" || output.type === "opreturn") { + complete.push(output); + } else { + incomplete.push(output); + } + }); + return { + complete, + incomplete + }; + } + function getResult(request, { + sendMaxOutputIndex + }, result) { + if (!result.inputs || !result.outputs) { + return { + type: "error", + error: "NOT-ENOUGH-FUNDS" + }; + } + const totalSpent = result.outputs.reduce((total, output, index) => { + if (request.outputs[index]) { + return total.add(output.value); + } + return total; + }, new bn_js_1.default(result.fee)); + const max = sendMaxOutputIndex >= 0 ? result.outputs[sendMaxOutputIndex].value.toString() : void 0; + const bytes = (0, coinselectUtils_1.transactionBytes)(result.inputs, result.outputs); + const feePerByte = result.fee / bytes; + const { + complete, + incomplete + } = splitByCompleteness(request.outputs); + if (incomplete.length > 0) { + const inputs = result.inputs.map((input) => request.utxos[input.i]); + return { + type: "nonfinal", + fee: result.fee.toString(), + feePerByte: feePerByte.toString(), + bytes, + max, + totalSpent: totalSpent.toString(), + inputs + }; + } + const transaction = (0, transaction_1.createTransaction)({ + ...request, + outputs: complete + }, result); + return { + type: "final", + fee: result.fee.toString(), + feePerByte: feePerByte.toString(), + bytes, + max, + totalSpent: totalSpent.toString(), + ...transaction + }; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/inputs/accumulative.js +var require_accumulative = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/inputs/accumulative.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.accumulative = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var coinselectUtils_1 = require_coinselectUtils(); + var accumulative = (utxos0, outputs, feeRate, options) => { + let inAccum = coinselectUtils_1.ZERO; + const inputs = []; + const outAccum = (0, coinselectUtils_1.sumOrNaN)(outputs); + const requiredUtxos = []; + const utxos = []; + utxos0.forEach((u) => { + if (u.required) { + requiredUtxos.push(u); + const utxoValue = (0, coinselectUtils_1.bignumberOrNaN)(u.value, true); + inAccum = inAccum.add(utxoValue); + inputs.push(u); + } else { + utxos.push(u); + } + }); + if (requiredUtxos.length > 0) { + const requiredIsEnough = (0, coinselectUtils_1.finalize)(requiredUtxos, outputs, feeRate, options); + if (requiredIsEnough.inputs) { + return requiredIsEnough; + } + } + for (let i = 0; i < utxos.length; ++i) { + const utxo = utxos[i]; + const utxoBytes = (0, coinselectUtils_1.inputBytes)(utxo); + const utxoFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, utxoBytes); + const utxoValue = (0, coinselectUtils_1.bignumberOrNaN)(utxo.value); + if (!utxoValue || utxoValue.lt(new bn_js_1.default(utxoFee))) { + if (i === utxos.length - 1) { + const fee2 = (0, coinselectUtils_1.getFee)([...inputs, utxo], outputs, feeRate, options); + return { + fee: fee2 + }; + } + } else { + inAccum = inAccum.add(utxoValue); + inputs.push(utxo); + const fee2 = (0, coinselectUtils_1.getFee)(inputs, outputs, feeRate, options); + const outAccumWithFee = outAccum ? outAccum.add(new bn_js_1.default(fee2)) : coinselectUtils_1.ZERO; + if (inAccum.gte(outAccumWithFee)) { + return (0, coinselectUtils_1.finalize)(inputs, outputs, feeRate, options); + } + } + } + const fee = (0, coinselectUtils_1.getFee)(inputs, outputs, feeRate, options); + return { + fee + }; + }; + exports2.accumulative = accumulative; + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/inputs/branchAndBound.js +var require_branchAndBound = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/inputs/branchAndBound.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.branchAndBound = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var coinselectUtils_1 = require_coinselectUtils(); + var MAX_TRIES = 1e6; + function calculateEffectiveValues(utxos, feeRate) { + return utxos.map((utxo) => { + const value = (0, coinselectUtils_1.bignumberOrNaN)(utxo.value); + if (!value) { + return { + utxo, + effectiveValue: coinselectUtils_1.ZERO + }; + } + const effectiveFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, (0, coinselectUtils_1.inputBytes)(utxo)); + const effectiveValue = value.sub(new bn_js_1.default(effectiveFee)); + return { + utxo, + effectiveValue + }; + }); + } + function search(effectiveUtxos, target, costRange) { + if (effectiveUtxos.length === 0) { + return null; + } + let tries = MAX_TRIES; + const selected = []; + let selectedAccum = coinselectUtils_1.ZERO; + let done = false; + let backtrack = false; + let remaining = effectiveUtxos.reduce((a, x) => x.effectiveValue.add(a), coinselectUtils_1.ZERO); + let depth = 0; + while (!done) { + if (tries <= 0) { + return null; + } + if (selectedAccum.gt(costRange)) { + backtrack = true; + } else if (selectedAccum.gte(target)) { + done = true; + } else if (depth >= effectiveUtxos.length) { + backtrack = true; + } else if (selectedAccum.add(remaining).lt(target)) { + if (depth === 0) { + return null; + } + backtrack = true; + } else { + remaining = remaining.sub(effectiveUtxos[depth].effectiveValue); + selected[depth] = true; + selectedAccum = selectedAccum.add(effectiveUtxos[depth].effectiveValue); + depth++; + } + if (backtrack) { + backtrack = false; + depth--; + while (!selected[depth]) { + remaining = remaining.add(effectiveUtxos[depth].effectiveValue); + depth--; + if (depth < 0) { + return null; + } + } + selected[depth] = false; + selectedAccum = selectedAccum.sub(effectiveUtxos[depth].effectiveValue); + depth++; + } + tries--; + } + return selected; + } + var branchAndBound = (utxos, outputs, feeRate, options) => { + if (options.baseFee) return { + fee: 0 + }; + if (utxos.find((u) => u.required)) return { + fee: 0 + }; + const changeOutputFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, (0, coinselectUtils_1.outputBytes)({ + script: { + length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[options.txType] + } + })); + const costOfChange = changeOutputFee + (0, coinselectUtils_1.getDustAmount)(feeRate, options); + const outputsBytes = (0, coinselectUtils_1.transactionBytes)([], outputs); + const outputsFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, outputsBytes); + const outputsTotalValue = (0, coinselectUtils_1.sumOrNaN)(outputs); + if (!outputsTotalValue) return { + fee: 0 + }; + const target = outputsTotalValue.add(new bn_js_1.default(outputsFee)); + const targetRange = target.add(new bn_js_1.default(costOfChange)); + const effectiveUtxos = calculateEffectiveValues(utxos, feeRate).filter(({ + effectiveValue + }) => effectiveValue.gt(coinselectUtils_1.ZERO) && effectiveValue.lte(targetRange)).sort((a, b) => { + const subtract = b.effectiveValue.sub(a.effectiveValue).toNumber(); + if (subtract !== 0) { + return subtract; + } + return a.utxo.i - b.utxo.i; + }); + const utxosTotalEffectiveValue = effectiveUtxos.reduce((total, { + effectiveValue + }) => total.add(effectiveValue), coinselectUtils_1.ZERO); + if (utxosTotalEffectiveValue.lt(target)) { + return { + fee: 0 + }; + } + const selected = search(effectiveUtxos, target, targetRange); + if (selected !== null) { + const inputs = []; + for (let i = 0; i < effectiveUtxos.length; i++) { + if (selected[i]) { + inputs.push(effectiveUtxos[i].utxo); + } + } + return (0, coinselectUtils_1.finalize)(inputs, outputs, feeRate, options); + } + return { + fee: 0 + }; + }; + exports2.branchAndBound = branchAndBound; + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/outputs/split.js +var require_split = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/outputs/split.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.split = split2; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bn_js_1 = tslib_1.__importDefault(require_bn2()); + var coinselectUtils_1 = require_coinselectUtils(); + function split2(utxosOrig, outputs, feeRate, options) { + const coinbase = options.coinbase || coinselectUtils_1.MINIMAL_COINBASE_CONFIRMATIONS; + const utxos = (0, coinselectUtils_1.filterCoinbase)(utxosOrig, coinbase); + const fee = (0, coinselectUtils_1.getFee)(utxos, outputs, feeRate, options); + if (outputs.length === 0) return { + fee + }; + const inAccum = (0, coinselectUtils_1.sumOrNaN)(utxos); + const outAccum = (0, coinselectUtils_1.sumOrNaN)(outputs, true); + if (!inAccum) return { + fee + }; + const remaining = inAccum.sub(outAccum).sub(new bn_js_1.default(fee)); + if (remaining.lt(coinselectUtils_1.ZERO)) return { + fee + }; + const unspecified = outputs.reduce((a, x) => a + (!(0, coinselectUtils_1.bignumberOrNaN)(x.value) ? 1 : 0), 0); + if (remaining.isZero() || unspecified === 0) { + return (0, coinselectUtils_1.finalize)(utxos, outputs, feeRate, options); + } + const splitValue = remaining.div(new bn_js_1.default(unspecified)); + const dustAmount = (0, coinselectUtils_1.getDustAmount)(feeRate, options); + if (unspecified && splitValue.lt(new bn_js_1.default(dustAmount))) return { + fee + }; + const outputsSplit = outputs.map((output) => { + if (output.value) return output; + return { + ...output, + value: splitValue + }; + }); + return (0, coinselectUtils_1.finalize)(utxos, outputsSplit, feeRate, options); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/tryconfirmed.js +var require_tryconfirmed = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/tryconfirmed.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.tryConfirmed = tryConfirmed; + var coinselectUtils_1 = require_coinselectUtils(); + function filterUtxos(utxos, minConfOwn, minConfOther) { + const usable = []; + const unusable = []; + for (let i = 0; i < utxos.length; i++) { + const utxo = utxos[i]; + const isUsed = utxo.own ? utxo.confirmations >= minConfOwn : utxo.confirmations >= minConfOther; + if (isUsed || utxo.required) { + usable.push(utxo); + } else { + unusable.push(utxo); + } + } + return { + usable, + unusable + }; + } + function tryConfirmed(algorithm, options) { + const own = options.own || 1; + const other = options.other || 6; + const coinbase = options.coinbase || coinselectUtils_1.MINIMAL_COINBASE_CONFIRMATIONS; + return (utxosO, outputs, feeRate, optionsIn) => { + const utxos = (0, coinselectUtils_1.filterCoinbase)(utxosO, coinbase); + if (utxos.length === 0) { + return { + fee: 0 + }; + } + const trials = []; + let i; + for (i = own; i > 0; i--) { + trials.push({ + other, + own: i + }); + } + for (i = other - 1; i > 0; i--) { + trials.push({ + other: i, + own: 1 + }); + } + trials.push({ + other: 1, + own: 0 + }); + trials.push({ + other: 0, + own: 0 + }); + let unusable = utxos; + let usable = []; + for (i = 0; i < trials.length; i++) { + const trial = trials[i]; + const filterResult = filterUtxos(unusable, trial.own, trial.other); + if (filterResult.usable.length > 0) { + usable = usable.concat(filterResult.usable); + const unusableH = filterResult.unusable; + unusable = unusableH; + const result = algorithm(usable, outputs, feeRate, optionsIn); + if (result.inputs) { + return result; + } + if (unusable.length === 0) { + return result; + } + } + } + throw new Error("Unexpected unreturned result"); + }; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/coinselect/index.js +var require_coinselect2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/coinselect/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.coinselect = coinselect; + var coinselectUtils_1 = require_coinselectUtils(); + var accumulative_1 = require_accumulative(); + var branchAndBound_1 = require_branchAndBound(); + var split_1 = require_split(); + var tryconfirmed_1 = require_tryconfirmed(); + function coinselect({ + inputs, + outputs, + feeRate, + ...options + }) { + if (options.sendMaxOutputIndex >= 0) { + return (0, split_1.split)(inputs, outputs, feeRate, options); + } + const sortedInputs = options.sortingStrategy === "none" ? inputs : inputs.sort((0, coinselectUtils_1.sortByScore)(feeRate)); + const algorithm = (0, tryconfirmed_1.tryConfirmed)((0, coinselectUtils_1.anyOf)([branchAndBound_1.branchAndBound, accumulative_1.accumulative]), options); + return algorithm(sortedInputs, outputs, feeRate, options); + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/compose/index.js +var require_compose2 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/compose/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.composeTx = composeTx; + var request_1 = require_request(); + var result_1 = require_result2(); + var coinselect_1 = require_coinselect2(); + function composeTx(request) { + const coinselectRequest = (0, request_1.validateAndParseRequest)(request); + if ("error" in coinselectRequest) { + return coinselectRequest; + } + try { + const result = (0, coinselect_1.coinselect)(coinselectRequest); + return (0, result_1.getResult)(request, coinselectRequest, result); + } catch (error) { + return (0, result_1.getErrorResult)(error); + } + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/derivation.js +var require_derivation = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/derivation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.deriveAddresses = exports2.getXpubOrDescriptorInfo = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bs58_1 = tslib_1.__importDefault(require_cjs4()); + var utils_1 = require_lib(); + var bip32_1 = require_bip32(); + var networks_1 = require_networks(); + var payments_1 = require_payments2(); + var BIP32_PAYMENT_TYPES = { + 76067358: "p2pkh", + 77429938: "p2sh", + 78792518: "p2wpkh", + 70617039: "p2pkh", + 71979618: "p2sh", + 73342198: "p2wpkh", + 27108450: "p2pkh", + 28471030: "p2sh" + }; + var BIP32_COIN_TYPES = { + 76067358: "0'", + 77429938: "0'", + 78792518: "0'", + 70617039: "1'", + 71979618: "1'", + 73342198: "1'", + 27108450: "2'", + 28471030: "2'" + }; + var BIP32_PURPOSES = { + p2pkh: "44'", + p2sh: "49'", + p2wpkh: "84'", + p2tr: "86'" + }; + var validateVersion = (version) => !!BIP32_PAYMENT_TYPES[version]; + var getVersion = (xpub) => { + const version = Buffer.from(bs58_1.default.decode(xpub)).readUInt32BE(); + if (!validateVersion(version)) throw new Error(`Unknown xpub version: ${xpub}`); + return version; + }; + var getPubkeyToPayment = (type, network) => (pubkey) => { + switch (type) { + case "p2pkh": + return (0, payments_1.p2pkh)({ + pubkey, + network + }); + case "p2sh": + return (0, payments_1.p2sh)({ + redeem: (0, payments_1.p2wpkh)({ + pubkey, + network + }), + network + }); + case "p2wpkh": + return (0, payments_1.p2wpkh)({ + pubkey, + network + }); + case "p2tr": + return (0, payments_1.p2tr)({ + pubkey, + network + }); + default: + throw new Error(`Unknown payment type '${type}'`); + } + }; + var getBip32Node = (xpub, version, network) => (0, bip32_1.fromBase58)(xpub, { + ...network, + bip32: { + ...network.bip32, + public: version + } + }); + var getXpubInfo = (xpub, network) => { + const version = getVersion(xpub); + const paymentType = BIP32_PAYMENT_TYPES[version]; + const coinType = network.wif === 176 ? "2'" : BIP32_COIN_TYPES[version]; + const purpose = BIP32_PURPOSES[paymentType]; + const node = getBip32Node(xpub, version, network); + const account = `${node.index << 1 >>> 1}'`; + const levels = [purpose, coinType, account]; + return { + levels, + paymentType, + node + }; + }; + var getDescriptorInfo = (paymentType, descriptor, network) => { + const [_match, _script, path2, xpub, _checksum] = descriptor.match(/^([a-z]+\()+\[([a-z0-9]{8}(?:\/[0-9]+'?){3,})\]([xyztuv]pub[a-zA-Z0-9]*)\/<0;1>\/\*\)+(#[a-z0-9]{8})?$/) || (0, utils_1.throwError)(`Descriptor cannot be parsed: ${descriptor}`); + const [_fingerprint, ...levels] = path2.split("/"); + const version = getVersion(xpub); + const node = getBip32Node(xpub, version, network); + return { + levels, + paymentType, + node + }; + }; + var getXpubOrDescriptorInfo = (descriptor, network = networks_1.bitcoin) => { + if (descriptor.startsWith("pkh(")) { + return getDescriptorInfo("p2pkh", descriptor, network); + } + if (descriptor.startsWith("sh(wpkh(")) { + return getDescriptorInfo("p2sh", descriptor, network); + } + if (descriptor.startsWith("wpkh(")) { + return getDescriptorInfo("p2wpkh", descriptor, network); + } + if (descriptor.startsWith("tr(")) { + return getDescriptorInfo("p2tr", descriptor, network); + } + return getXpubInfo(descriptor, network); + }; + exports2.getXpubOrDescriptorInfo = getXpubOrDescriptorInfo; + var deriveAddresses = (descriptor, type, from, count, network = networks_1.bitcoin) => { + const { + levels, + node, + paymentType + } = (0, exports2.getXpubOrDescriptorInfo)(descriptor, network); + const getAddress = getPubkeyToPayment(paymentType, network); + const change = type === "receive" ? 0 : 1; + const changeNode = node.derive(change); + return Array.from(Array(count).keys()).map((i) => changeNode.derive(from + i).publicKey).map((a) => getAddress(a).address || (0, utils_1.throwError)("Cannot convert pubkey to address")).map((address, i) => ({ + address, + path: `m/${levels.join("/")}/${change}/${from + i}` + })); + }; + exports2.deriveAddresses = deriveAddresses; + } +}); + +// node_modules/@trezor/utxo-lib/lib/discovery.js +var require_discovery = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/discovery.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.discovery = exports2.countUnusedFromEnd = void 0; + var derivation_1 = require_derivation(); + var DISCOVERY_LOOKOUT = 20; + var countUnusedFromEnd = (array, isUnused, lookout) => { + const boundary = array.length > lookout ? array.length - lookout : 0; + for (let i = array.length; i > boundary; --i) { + if (!isUnused(array[i - 1])) { + return array.length - i; + } + } + return array.length; + }; + exports2.countUnusedFromEnd = countUnusedFromEnd; + var discovery = (discover, xpub, type, network, lookout = DISCOVERY_LOOKOUT) => { + const discoverRecursive = async (from, prev) => { + const unused = (0, exports2.countUnusedFromEnd)(prev, (a) => a.empty, lookout); + if (unused >= lookout) return prev; + const moreCount = lookout - unused; + const addresses = (0, derivation_1.deriveAddresses)(xpub, type, from, moreCount, network); + const more = await Promise.all(addresses.map(discover)); + return discoverRecursive(from + moreCount, prev.concat(more)); + }; + return discoverRecursive(0, []); + }; + exports2.discovery = discovery; + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/base.js +var require_base3 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/base.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransactionBase = exports2.EMPTY_SCRIPT = void 0; + exports2.varSliceSize = varSliceSize; + exports2.vectorSize = vectorSize; + exports2.isCoinbaseHash = isCoinbaseHash; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var varuint = tslib_1.__importStar(require_cjs7()); + var bufferutils_1 = require_bufferutils(); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var networks_1 = require_networks(); + var bscript = tslib_1.__importStar(require_script()); + var types = tslib_1.__importStar(require_types5()); + function varSliceSize(someScript) { + const { + length + } = someScript; + return varuint.encodingLength(length) + length; + } + function vectorSize(someVector) { + return varuint.encodingLength(someVector.length) + someVector.reduce((sum, witness) => sum + varSliceSize(witness), 0); + } + function isCoinbaseHash(buffer) { + types.typeforce(types.Hash256bit, buffer); + for (let i = 0; i < 32; ++i) { + if (buffer[i] !== 0) return false; + } + return true; + } + exports2.EMPTY_SCRIPT = Buffer.allocUnsafe(0); + var TransactionBase = class { + version = 1; + locktime = 0; + ins = []; + outs = []; + specific; + network; + type; + timestamp; + expiry; + constructor(options) { + this.network = options.network || networks_1.bitcoin; + this.specific = options.txSpecific; + } + isCoinbase() { + return this.ins.length === 1 && isCoinbaseHash(this.ins[0].hash); + } + hasWitnesses() { + return this.ins.some((x) => x.witness.length !== 0); + } + isMwebPegOutTx() { + if (!(0, networks_1.isNetworkType)("litecoin", this.network)) { + return false; + } + return this.outs.some((output) => { + const asm = bscript.toASM(output.script); + return asm.startsWith("OP_8"); + }) && this.ins.some((input) => !input.script.length); + } + weight() { + const base = this.byteLength(false, false); + const total = this.byteLength(true, false); + return base * 3 + total; + } + virtualSize() { + return Math.ceil(this.weight() / 4); + } + byteLength(_ALLOW_WITNESS = true, _ALLOW_MWEB = true) { + const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses(); + return (hasWitnesses ? 10 : 8) + (this.timestamp ? 4 : 0) + varuint.encodingLength(this.ins.length) + varuint.encodingLength(this.outs.length) + this.ins.reduce((sum, input) => sum + 40 + varSliceSize(input.script), 0) + this.outs.reduce((sum, output) => sum + 8 + varSliceSize(output.script), 0) + (hasWitnesses ? this.ins.reduce((sum, input) => sum + vectorSize(input.witness), 0) : 0) + (_ALLOW_MWEB && this.isMwebPegOutTx() ? 3 : 0); + } + getHash(forWitness = false, forMweb = false) { + if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0); + return bcrypto.hash256(this.toBuffer(void 0, void 0, forWitness, forMweb)); + } + getId() { + return (0, bufferutils_1.reverseBuffer)(this.getHash(false)).toString("hex"); + } + getWitness(index) { + if (!this.hasWitnesses() || !this.ins[index] || !Array.isArray(this.ins[index].witness) || this.ins[index].witness.length < 1) return; + const { + witness + } = this.ins[index]; + const chunks = witness.reduce((arr, chunk) => arr.concat([(0, bufferutils_1.getChunkSize)(chunk.length), chunk]), [(0, bufferutils_1.getChunkSize)(witness.length)]); + return Buffer.concat(chunks); + } + getExtraData() { + } + getSpecificData() { + return this.specific; + } + toBuffer(_buffer, _initialOffset, _ALLOW_WITNESS = true, _ALLOW_MWEB = true) { + return exports2.EMPTY_SCRIPT; + } + toHex() { + return this.toBuffer().toString("hex"); + } + }; + exports2.TransactionBase = TransactionBase; + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/bitcoin.js +var require_bitcoin = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/bitcoin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromConstructor = fromConstructor; + exports2.fromBuffer = fromBuffer; + var bufferutils_1 = require_bufferutils(); + var networks_1 = require_networks(); + var base_1 = require_base3(); + var ADVANCED_TRANSACTION_MARKER = 0; + var ADVANCED_TRANSACTION_FLAG = 1; + var MWEB_PEGOUT_TX_FLAG = 8; + function toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true, _ALLOW_MWEB = true) { + if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(_ALLOW_WITNESS, _ALLOW_MWEB)); + const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0); + bufferWriter.writeInt32(tx.version); + const hasWitnesses = _ALLOW_WITNESS && tx.hasWitnesses(); + const hasMweb = _ALLOW_MWEB && tx.isMwebPegOutTx(); + if (hasWitnesses) { + bufferWriter.writeUInt8(ADVANCED_TRANSACTION_MARKER); + bufferWriter.writeUInt8(ADVANCED_TRANSACTION_FLAG); + } else if (hasMweb) { + bufferWriter.writeUInt8(ADVANCED_TRANSACTION_MARKER); + bufferWriter.writeUInt8(MWEB_PEGOUT_TX_FLAG); + } + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + bufferWriter.writeVarSlice(txIn.script); + bufferWriter.writeUInt32(txIn.sequence); + }); + bufferWriter.writeVarInt(tx.outs.length); + tx.outs.forEach((txOut) => { + bufferWriter.writeUInt64(txOut.value); + bufferWriter.writeVarSlice(txOut.script); + }); + if (hasWitnesses) { + tx.ins.forEach((input) => { + bufferWriter.writeVector(input.witness); + }); + } + if (hasMweb) { + bufferWriter.writeUInt8(0); + } + bufferWriter.writeUInt32(tx.locktime); + if (initialOffset !== void 0) return buffer.subarray(initialOffset, bufferWriter.offset); + return buffer; + } + function fromConstructor(options) { + const tx = new base_1.TransactionBase(options); + tx.toBuffer = toBuffer.bind(null, tx); + return tx; + } + function fromBuffer(buffer, options) { + const bufferReader = new bufferutils_1.BufferReader(buffer); + const tx = fromConstructor(options); + tx.version = bufferReader.readInt32(); + const marker = bufferReader.readUInt8(); + const flag = bufferReader.readUInt8(); + let hasWitnesses = false; + let hasMweb = false; + if ((0, networks_1.isNetworkType)("litecoin", tx.network)) { + if (marker === ADVANCED_TRANSACTION_MARKER && flag === MWEB_PEGOUT_TX_FLAG) { + hasMweb = true; + } + } + if (marker === ADVANCED_TRANSACTION_MARKER && flag === ADVANCED_TRANSACTION_FLAG) { + hasWitnesses = true; + } else if (!hasMweb) { + bufferReader.offset -= 2; + } + const vinLen = bufferReader.readVarInt(); + for (let i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: bufferReader.readSlice(32), + index: bufferReader.readUInt32(), + script: bufferReader.readVarSlice(), + sequence: bufferReader.readUInt32(), + witness: [] + }); + } + const voutLen = bufferReader.readVarInt(); + for (let i = 0; i < voutLen; ++i) { + tx.outs.push({ + value: bufferReader.readUInt64String(), + script: bufferReader.readVarSlice() + }); + } + if (hasWitnesses) { + for (let i = 0; i < vinLen; ++i) { + tx.ins[i].witness = bufferReader.readVector(); + } + if (!tx.hasWitnesses()) throw new Error("Transaction has superfluous witness data"); + } + if (hasMweb) { + bufferReader.readUInt8(); + } + tx.locktime = bufferReader.readUInt32(); + if (options.nostrict) return tx; + if (bufferReader.offset !== buffer.length) throw new Error("Transaction has unexpected data"); + return tx; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/dash.js +var require_dash = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/dash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromConstructor = fromConstructor; + exports2.fromBuffer = fromBuffer; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var varuint = tslib_1.__importStar(require_cjs7()); + var bufferutils_1 = require_bufferutils(); + var base_1 = require_base3(); + var DASH_NORMAL = 0; + var DASH_QUORUM_COMMITMENT = 6; + function byteLength(tx, _ALLOW_WITNESS = true) { + const hasWitnesses = _ALLOW_WITNESS && tx.hasWitnesses(); + return (hasWitnesses ? 10 : 8) + (tx.timestamp ? 4 : 0) + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + (tx.specific?.extraPayload ? (0, base_1.varSliceSize)(tx.specific.extraPayload) : 0) + (hasWitnesses ? tx.ins.reduce((sum, input) => sum + (0, base_1.vectorSize)(input.witness), 0) : 0); + } + function toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true) { + if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(_ALLOW_WITNESS)); + const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0); + if (tx.version >= 3 && tx.type !== DASH_NORMAL) { + bufferWriter.writeUInt16(tx.version); + bufferWriter.writeUInt16(tx.type); + } else { + bufferWriter.writeInt32(tx.version); + } + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + bufferWriter.writeVarSlice(txIn.script); + bufferWriter.writeUInt32(txIn.sequence); + }); + bufferWriter.writeVarInt(tx.outs.length); + tx.outs.forEach((txOut) => { + bufferWriter.writeUInt64(txOut.value); + bufferWriter.writeVarSlice(txOut.script); + }); + bufferWriter.writeUInt32(tx.locktime); + if (tx.specific?.extraPayload) bufferWriter.writeVarSlice(tx.specific.extraPayload); + if (initialOffset !== void 0) return buffer.subarray(initialOffset, bufferWriter.offset); + return buffer; + } + function getExtraData(tx) { + if (!tx.specific?.extraPayload) return; + const { + buffer: extraDataLength + } = varuint.encode(tx.specific.extraPayload.length); + return Buffer.concat([extraDataLength, tx.specific.extraPayload]); + } + function fromConstructor(options) { + const tx = new base_1.TransactionBase(options); + tx.specific = tx.specific || { + type: "dash" + }; + tx.byteLength = byteLength.bind(null, tx); + tx.toBuffer = toBuffer.bind(null, tx); + tx.getExtraData = getExtraData.bind(null, tx); + return tx; + } + function fromBuffer(buffer, options) { + const bufferReader = new bufferutils_1.BufferReader(buffer); + const tx = fromConstructor(options); + tx.version = bufferReader.readInt32(); + tx.type = tx.version >> 16; + tx.version &= 65535; + if (tx.version === 3 && (tx.type < DASH_NORMAL || tx.type > DASH_QUORUM_COMMITMENT)) { + throw new Error("Unsupported Dash transaction type"); + } + const vinLen = bufferReader.readVarInt(); + for (let i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: bufferReader.readSlice(32), + index: bufferReader.readUInt32(), + script: bufferReader.readVarSlice(), + sequence: bufferReader.readUInt32(), + witness: [] + }); + } + const voutLen = bufferReader.readVarInt(); + for (let i = 0; i < voutLen; ++i) { + tx.outs.push({ + value: bufferReader.readUInt64String(), + script: bufferReader.readVarSlice() + }); + } + tx.locktime = bufferReader.readUInt32(); + if (tx.version >= 3 && tx.type !== DASH_NORMAL) { + tx.specific.extraPayload = bufferReader.readVarSlice(); + } + if (options.nostrict) return tx; + if (bufferReader.offset !== buffer.length) throw new Error("Transaction has unexpected data"); + return tx; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/decred.js +var require_decred = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/decred.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromConstructor = fromConstructor; + exports2.fromBuffer = fromBuffer; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var varuint = tslib_1.__importStar(require_cjs7()); + var bufferutils_1 = require_bufferutils(); + var bcrypto = tslib_1.__importStar(require_crypto2()); + var base_1 = require_base3(); + var DECRED_TX_VERSION = 1; + var DECRED_TX_SERIALIZE_FULL = 0; + var DECRED_TX_SERIALIZE_NO_WITNESS = 1; + var DECRED_SCRIPT_VERSION = 0; + function hasWitnesses(tx) { + return tx.type === DECRED_TX_SERIALIZE_FULL; + } + function byteLength(tx, _ALLOW_WITNESS = true) { + let byteLength2 = 4 + varuint.encodingLength(tx.ins.length); + let nWitness = 0; + const hasWitnesses2 = _ALLOW_WITNESS && tx.hasWitnesses(); + byteLength2 += tx.ins.reduce((sum, input) => { + sum += 32 + 4 + 1 + 4; + if (hasWitnesses2) { + nWitness += 1; + sum += 8 + 4 + 4; + sum += (0, base_1.varSliceSize)(input.decredWitness.script); + } + return sum; + }, 0); + if (hasWitnesses2) { + byteLength2 += varuint.encodingLength(nWitness); + } + byteLength2 += varuint.encodingLength(tx.outs.length); + byteLength2 += tx.outs.reduce((sum, output) => { + sum += 8 + 2; + sum += (0, base_1.varSliceSize)(output.script); + return sum; + }, 0); + byteLength2 += 4 + 4; + return byteLength2; + } + function toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true) { + if (!buffer) buffer = Buffer.allocUnsafe(byteLength(tx, _ALLOW_WITNESS)); + const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0); + bufferWriter.writeUInt16(tx.version); + bufferWriter.writeUInt16(_ALLOW_WITNESS ? tx.type : DECRED_TX_SERIALIZE_NO_WITNESS); + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + bufferWriter.writeUInt8(txIn.decredTree); + bufferWriter.writeUInt32(txIn.sequence); + }); + bufferWriter.writeVarInt(tx.outs.length); + tx.outs.forEach((txOut) => { + bufferWriter.writeUInt64(txOut.value); + bufferWriter.writeUInt16(txOut.decredVersion); + bufferWriter.writeVarSlice(txOut.script); + }); + bufferWriter.writeUInt32(tx.locktime); + bufferWriter.writeUInt32(tx.expiry); + if (_ALLOW_WITNESS && tx.hasWitnesses()) { + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((input) => { + bufferWriter.writeUInt64(input.decredWitness.value); + bufferWriter.writeUInt32(input.decredWitness.height); + bufferWriter.writeUInt32(input.decredWitness.blockIndex); + bufferWriter.writeVarSlice(input.decredWitness.script); + }); + } + if (initialOffset !== void 0) return buffer.subarray(initialOffset, bufferWriter.offset); + return buffer; + } + function getHash(tx, forWitness = false) { + if (forWitness && tx.isCoinbase()) return Buffer.alloc(32, 0); + return bcrypto.blake256(toBuffer(tx, void 0, void 0, forWitness)); + } + function weight(tx) { + return tx.byteLength(true); + } + function fromConstructor(options) { + const tx = new base_1.TransactionBase(options); + tx.byteLength = byteLength.bind(null, tx); + tx.toBuffer = toBuffer.bind(null, tx); + tx.hasWitnesses = hasWitnesses.bind(null, tx); + tx.getHash = getHash.bind(null, tx); + tx.weight = weight.bind(null, tx); + return tx; + } + function fromBuffer(buffer, options) { + const bufferReader = new bufferutils_1.BufferReader(buffer); + const tx = fromConstructor(options); + tx.version = bufferReader.readInt32(); + tx.type = tx.version >> 16; + tx.version &= 65535; + if (tx.version !== DECRED_TX_VERSION) { + throw new Error("Unsupported Decred transaction version"); + } + if (tx.type !== DECRED_TX_SERIALIZE_FULL && tx.type !== DECRED_TX_SERIALIZE_NO_WITNESS) { + throw new Error("Unsupported Decred transaction type"); + } + const vinLen = bufferReader.readVarInt(); + for (let i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: bufferReader.readSlice(32), + index: bufferReader.readUInt32(), + decredTree: bufferReader.readUInt8(), + sequence: bufferReader.readUInt32(), + script: base_1.EMPTY_SCRIPT, + witness: [] + }); + } + const voutLen = bufferReader.readVarInt(); + for (let i = 0; i < voutLen; i++) { + const value = bufferReader.readUInt64String(); + const version = bufferReader.readUInt16(); + if (version !== DECRED_SCRIPT_VERSION) throw new Error("Unsupported Decred script version"); + tx.outs.push({ + value, + decredVersion: version, + script: bufferReader.readVarSlice() + }); + } + tx.locktime = bufferReader.readUInt32(); + tx.expiry = bufferReader.readUInt32(); + if (tx.type === DECRED_TX_SERIALIZE_FULL) { + const count = bufferReader.readVarInt(); + if (count !== vinLen) throw new Error("Non equal number of ins and witnesses"); + tx.ins.forEach((vin) => { + vin.decredWitness = { + value: bufferReader.readUInt64String(), + height: bufferReader.readUInt32(), + blockIndex: bufferReader.readUInt32(), + script: bufferReader.readVarSlice() + }; + }); + } + if (options.nostrict) return tx; + if (bufferReader.offset !== buffer.length) throw new Error("Transaction has unexpected data"); + return tx; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/peercoin.js +var require_peercoin = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/peercoin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromConstructor = fromConstructor; + exports2.fromBuffer = fromBuffer; + var bufferutils_1 = require_bufferutils(); + var base_1 = require_base3(); + function toBuffer(tx, buffer, initialOffset) { + if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(false)); + const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0); + bufferWriter.writeInt32(tx.version); + bufferWriter.writeUInt32(tx.timestamp); + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + bufferWriter.writeVarSlice(txIn.script); + bufferWriter.writeUInt32(txIn.sequence); + }); + bufferWriter.writeVarInt(tx.outs.length); + tx.outs.forEach((txOut) => { + bufferWriter.writeUInt64(txOut.value); + bufferWriter.writeVarSlice(txOut.script); + }); + bufferWriter.writeUInt32(tx.locktime); + if (initialOffset !== void 0) return buffer.subarray(initialOffset, bufferWriter.offset); + return buffer; + } + function fromConstructor(options) { + const tx = new base_1.TransactionBase(options); + tx.toBuffer = toBuffer.bind(null, tx); + return tx; + } + function fromBuffer(buffer, options) { + const bufferReader = new bufferutils_1.BufferReader(buffer); + const tx = fromConstructor(options); + tx.version = bufferReader.readInt32(); + tx.timestamp = bufferReader.readUInt32(); + const vinLen = bufferReader.readVarInt(); + for (let i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: bufferReader.readSlice(32), + index: bufferReader.readUInt32(), + script: bufferReader.readVarSlice(), + sequence: bufferReader.readUInt32(), + witness: [] + }); + } + const voutLen = bufferReader.readVarInt(); + for (let i = 0; i < voutLen; ++i) { + tx.outs.push({ + value: bufferReader.readUInt64String(), + script: bufferReader.readVarSlice() + }); + } + tx.locktime = bufferReader.readUInt32(); + if (options.nostrict) return tx; + if (bufferReader.offset !== buffer.length) throw new Error("Transaction has unexpected data"); + return tx; + } + } +}); + +// node_modules/blakejs/util.js +var require_util4 = __commonJS({ + "node_modules/blakejs/util.js"(exports2, module2) { + var ERROR_MSG_INPUT = "Input must be an string, Buffer or Uint8Array"; + function normalizeInput(input) { + let ret; + if (input instanceof Uint8Array) { + ret = input; + } else if (typeof input === "string") { + const encoder = new TextEncoder(); + ret = encoder.encode(input); + } else { + throw new Error(ERROR_MSG_INPUT); + } + return ret; + } + function toHex3(bytes) { + return Array.prototype.map.call(bytes, function(n) { + return (n < 16 ? "0" : "") + n.toString(16); + }).join(""); + } + function uint32ToHex(val) { + return (4294967296 + val).toString(16).substring(1); + } + function debugPrint(label, arr, size) { + let msg = "\n" + label + " = "; + for (let i = 0; i < arr.length; i += 2) { + if (size === 32) { + msg += uint32ToHex(arr[i]).toUpperCase(); + msg += " "; + msg += uint32ToHex(arr[i + 1]).toUpperCase(); + } else if (size === 64) { + msg += uint32ToHex(arr[i + 1]).toUpperCase(); + msg += uint32ToHex(arr[i]).toUpperCase(); + } else throw new Error("Invalid size " + size); + if (i % 6 === 4) { + msg += "\n" + new Array(label.length + 4).join(" "); + } else if (i < arr.length - 2) { + msg += " "; + } + } + console.log(msg); + } + function testSpeed(hashFn, N, M) { + let startMs = (/* @__PURE__ */ new Date()).getTime(); + const input = new Uint8Array(N); + for (let i = 0; i < N; i++) { + input[i] = i % 256; + } + const genMs = (/* @__PURE__ */ new Date()).getTime(); + console.log("Generated random input in " + (genMs - startMs) + "ms"); + startMs = genMs; + for (let i = 0; i < M; i++) { + const hashHex = hashFn(input); + const hashMs = (/* @__PURE__ */ new Date()).getTime(); + const ms = hashMs - startMs; + startMs = hashMs; + console.log("Hashed in " + ms + "ms: " + hashHex.substring(0, 20) + "..."); + console.log( + Math.round(N / (1 << 20) / (ms / 1e3) * 100) / 100 + " MB PER SECOND" + ); + } + } + module2.exports = { + normalizeInput, + toHex: toHex3, + debugPrint, + testSpeed + }; + } +}); + +// node_modules/blakejs/blake2b.js +var require_blake2b = __commonJS({ + "node_modules/blakejs/blake2b.js"(exports2, module2) { + var util = require_util4(); + function ADD64AA(v2, a, b) { + const o0 = v2[a] + v2[b]; + let o1 = v2[a + 1] + v2[b + 1]; + if (o0 >= 4294967296) { + o1++; + } + v2[a] = o0; + v2[a + 1] = o1; + } + function ADD64AC(v2, a, b0, b1) { + let o0 = v2[a] + b0; + if (b0 < 0) { + o0 += 4294967296; + } + let o1 = v2[a + 1] + b1; + if (o0 >= 4294967296) { + o1++; + } + v2[a] = o0; + v2[a + 1] = o1; + } + function B2B_GET32(arr, i) { + return arr[i] ^ arr[i + 1] << 8 ^ arr[i + 2] << 16 ^ arr[i + 3] << 24; + } + function B2B_G(a, b, c, d, ix, iy) { + const x0 = m[ix]; + const x1 = m[ix + 1]; + const y0 = m[iy]; + const y1 = m[iy + 1]; + ADD64AA(v, a, b); + ADD64AC(v, a, x0, x1); + let xor0 = v[d] ^ v[a]; + let xor1 = v[d + 1] ^ v[a + 1]; + v[d] = xor1; + v[d + 1] = xor0; + ADD64AA(v, c, d); + xor0 = v[b] ^ v[c]; + xor1 = v[b + 1] ^ v[c + 1]; + v[b] = xor0 >>> 24 ^ xor1 << 8; + v[b + 1] = xor1 >>> 24 ^ xor0 << 8; + ADD64AA(v, a, b); + ADD64AC(v, a, y0, y1); + xor0 = v[d] ^ v[a]; + xor1 = v[d + 1] ^ v[a + 1]; + v[d] = xor0 >>> 16 ^ xor1 << 16; + v[d + 1] = xor1 >>> 16 ^ xor0 << 16; + ADD64AA(v, c, d); + xor0 = v[b] ^ v[c]; + xor1 = v[b + 1] ^ v[c + 1]; + v[b] = xor1 >>> 31 ^ xor0 << 1; + v[b + 1] = xor0 >>> 31 ^ xor1 << 1; + } + var BLAKE2B_IV32 = new Uint32Array([ + 4089235720, + 1779033703, + 2227873595, + 3144134277, + 4271175723, + 1013904242, + 1595750129, + 2773480762, + 2917565137, + 1359893119, + 725511199, + 2600822924, + 4215389547, + 528734635, + 327033209, + 1541459225 + ]); + var SIGMA8 = [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 14, + 10, + 4, + 8, + 9, + 15, + 13, + 6, + 1, + 12, + 0, + 2, + 11, + 7, + 5, + 3, + 11, + 8, + 12, + 0, + 5, + 2, + 15, + 13, + 10, + 14, + 3, + 6, + 7, + 1, + 9, + 4, + 7, + 9, + 3, + 1, + 13, + 12, + 11, + 14, + 2, + 6, + 5, + 10, + 4, + 0, + 15, + 8, + 9, + 0, + 5, + 7, + 2, + 4, + 10, + 15, + 14, + 1, + 11, + 12, + 6, + 8, + 3, + 13, + 2, + 12, + 6, + 10, + 0, + 11, + 8, + 3, + 4, + 13, + 7, + 5, + 15, + 14, + 1, + 9, + 12, + 5, + 1, + 15, + 14, + 13, + 4, + 10, + 0, + 7, + 6, + 3, + 9, + 2, + 8, + 11, + 13, + 11, + 7, + 14, + 12, + 1, + 3, + 9, + 5, + 0, + 15, + 4, + 8, + 6, + 2, + 10, + 6, + 15, + 14, + 9, + 11, + 3, + 0, + 8, + 12, + 2, + 13, + 7, + 1, + 4, + 10, + 5, + 10, + 2, + 8, + 4, + 7, + 6, + 1, + 5, + 15, + 11, + 9, + 14, + 3, + 12, + 13, + 0, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 14, + 10, + 4, + 8, + 9, + 15, + 13, + 6, + 1, + 12, + 0, + 2, + 11, + 7, + 5, + 3 + ]; + var SIGMA82 = new Uint8Array( + SIGMA8.map(function(x) { + return x * 2; + }) + ); + var v = new Uint32Array(32); + var m = new Uint32Array(32); + function blake2bCompress(ctx, last) { + let i = 0; + for (i = 0; i < 16; i++) { + v[i] = ctx.h[i]; + v[i + 16] = BLAKE2B_IV32[i]; + } + v[24] = v[24] ^ ctx.t; + v[25] = v[25] ^ ctx.t / 4294967296; + if (last) { + v[28] = ~v[28]; + v[29] = ~v[29]; + } + for (i = 0; i < 32; i++) { + m[i] = B2B_GET32(ctx.b, 4 * i); + } + for (i = 0; i < 12; i++) { + B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1]); + B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3]); + B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5]); + B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7]); + B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9]); + B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11]); + B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13]); + B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15]); + } + for (i = 0; i < 16; i++) { + ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]; + } + } + var parameterBlock = new Uint8Array([ + 0, + 0, + 0, + 0, + // 0: outlen, keylen, fanout, depth + 0, + 0, + 0, + 0, + // 4: leaf length, sequential mode + 0, + 0, + 0, + 0, + // 8: node offset + 0, + 0, + 0, + 0, + // 12: node offset + 0, + 0, + 0, + 0, + // 16: node depth, inner length, rfu + 0, + 0, + 0, + 0, + // 20: rfu + 0, + 0, + 0, + 0, + // 24: rfu + 0, + 0, + 0, + 0, + // 28: rfu + 0, + 0, + 0, + 0, + // 32: salt + 0, + 0, + 0, + 0, + // 36: salt + 0, + 0, + 0, + 0, + // 40: salt + 0, + 0, + 0, + 0, + // 44: salt + 0, + 0, + 0, + 0, + // 48: personal + 0, + 0, + 0, + 0, + // 52: personal + 0, + 0, + 0, + 0, + // 56: personal + 0, + 0, + 0, + 0 + // 60: personal + ]); + function blake2bInit(outlen, key, salt, personal) { + if (outlen === 0 || outlen > 64) { + throw new Error("Illegal output length, expected 0 < length <= 64"); + } + if (key && key.length > 64) { + throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64"); + } + if (salt && salt.length !== 16) { + throw new Error("Illegal salt, expected Uint8Array with length is 16"); + } + if (personal && personal.length !== 16) { + throw new Error("Illegal personal, expected Uint8Array with length is 16"); + } + const ctx = { + b: new Uint8Array(128), + h: new Uint32Array(16), + t: 0, + // input count + c: 0, + // pointer within buffer + outlen + // output length in bytes + }; + parameterBlock.fill(0); + parameterBlock[0] = outlen; + if (key) parameterBlock[1] = key.length; + parameterBlock[2] = 1; + parameterBlock[3] = 1; + if (salt) parameterBlock.set(salt, 32); + if (personal) parameterBlock.set(personal, 48); + for (let i = 0; i < 16; i++) { + ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4); + } + if (key) { + blake2bUpdate(ctx, key); + ctx.c = 128; + } + return ctx; + } + function blake2bUpdate(ctx, input) { + for (let i = 0; i < input.length; i++) { + if (ctx.c === 128) { + ctx.t += ctx.c; + blake2bCompress(ctx, false); + ctx.c = 0; + } + ctx.b[ctx.c++] = input[i]; + } + } + function blake2bFinal(ctx) { + ctx.t += ctx.c; + while (ctx.c < 128) { + ctx.b[ctx.c++] = 0; + } + blake2bCompress(ctx, true); + const out = new Uint8Array(ctx.outlen); + for (let i = 0; i < ctx.outlen; i++) { + out[i] = ctx.h[i >> 2] >> 8 * (i & 3); + } + return out; + } + function blake2b(input, key, outlen, salt, personal) { + outlen = outlen || 64; + input = util.normalizeInput(input); + if (salt) { + salt = util.normalizeInput(salt); + } + if (personal) { + personal = util.normalizeInput(personal); + } + const ctx = blake2bInit(outlen, key, salt, personal); + blake2bUpdate(ctx, input); + return blake2bFinal(ctx); + } + function blake2bHex(input, key, outlen, salt, personal) { + const output = blake2b(input, key, outlen, salt, personal); + return util.toHex(output); + } + module2.exports = { + blake2b, + blake2bHex, + blake2bInit, + blake2bUpdate, + blake2bFinal + }; + } +}); + +// node_modules/blakejs/blake2s.js +var require_blake2s = __commonJS({ + "node_modules/blakejs/blake2s.js"(exports2, module2) { + var util = require_util4(); + function B2S_GET32(v2, i) { + return v2[i] ^ v2[i + 1] << 8 ^ v2[i + 2] << 16 ^ v2[i + 3] << 24; + } + function B2S_G(a, b, c, d, x, y) { + v[a] = v[a] + v[b] + x; + v[d] = ROTR32(v[d] ^ v[a], 16); + v[c] = v[c] + v[d]; + v[b] = ROTR32(v[b] ^ v[c], 12); + v[a] = v[a] + v[b] + y; + v[d] = ROTR32(v[d] ^ v[a], 8); + v[c] = v[c] + v[d]; + v[b] = ROTR32(v[b] ^ v[c], 7); + } + function ROTR32(x, y) { + return x >>> y ^ x << 32 - y; + } + var BLAKE2S_IV = new Uint32Array([ + 1779033703, + 3144134277, + 1013904242, + 2773480762, + 1359893119, + 2600822924, + 528734635, + 1541459225 + ]); + var SIGMA = new Uint8Array([ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 14, + 10, + 4, + 8, + 9, + 15, + 13, + 6, + 1, + 12, + 0, + 2, + 11, + 7, + 5, + 3, + 11, + 8, + 12, + 0, + 5, + 2, + 15, + 13, + 10, + 14, + 3, + 6, + 7, + 1, + 9, + 4, + 7, + 9, + 3, + 1, + 13, + 12, + 11, + 14, + 2, + 6, + 5, + 10, + 4, + 0, + 15, + 8, + 9, + 0, + 5, + 7, + 2, + 4, + 10, + 15, + 14, + 1, + 11, + 12, + 6, + 8, + 3, + 13, + 2, + 12, + 6, + 10, + 0, + 11, + 8, + 3, + 4, + 13, + 7, + 5, + 15, + 14, + 1, + 9, + 12, + 5, + 1, + 15, + 14, + 13, + 4, + 10, + 0, + 7, + 6, + 3, + 9, + 2, + 8, + 11, + 13, + 11, + 7, + 14, + 12, + 1, + 3, + 9, + 5, + 0, + 15, + 4, + 8, + 6, + 2, + 10, + 6, + 15, + 14, + 9, + 11, + 3, + 0, + 8, + 12, + 2, + 13, + 7, + 1, + 4, + 10, + 5, + 10, + 2, + 8, + 4, + 7, + 6, + 1, + 5, + 15, + 11, + 9, + 14, + 3, + 12, + 13, + 0 + ]); + var v = new Uint32Array(16); + var m = new Uint32Array(16); + function blake2sCompress(ctx, last) { + let i = 0; + for (i = 0; i < 8; i++) { + v[i] = ctx.h[i]; + v[i + 8] = BLAKE2S_IV[i]; + } + v[12] ^= ctx.t; + v[13] ^= ctx.t / 4294967296; + if (last) { + v[14] = ~v[14]; + } + for (i = 0; i < 16; i++) { + m[i] = B2S_GET32(ctx.b, 4 * i); + } + for (i = 0; i < 10; i++) { + B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]]); + B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]]); + B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]]); + B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]]); + B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]]); + B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]]); + B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]]); + B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]]); + } + for (i = 0; i < 8; i++) { + ctx.h[i] ^= v[i] ^ v[i + 8]; + } + } + function blake2sInit(outlen, key) { + if (!(outlen > 0 && outlen <= 32)) { + throw new Error("Incorrect output length, should be in [1, 32]"); + } + const keylen = key ? key.length : 0; + if (key && !(keylen > 0 && keylen <= 32)) { + throw new Error("Incorrect key length, should be in [1, 32]"); + } + const ctx = { + h: new Uint32Array(BLAKE2S_IV), + // hash state + b: new Uint8Array(64), + // input block + c: 0, + // pointer within block + t: 0, + // input count + outlen + // output length in bytes + }; + ctx.h[0] ^= 16842752 ^ keylen << 8 ^ outlen; + if (keylen > 0) { + blake2sUpdate(ctx, key); + ctx.c = 64; + } + return ctx; + } + function blake2sUpdate(ctx, input) { + for (let i = 0; i < input.length; i++) { + if (ctx.c === 64) { + ctx.t += ctx.c; + blake2sCompress(ctx, false); + ctx.c = 0; + } + ctx.b[ctx.c++] = input[i]; + } + } + function blake2sFinal(ctx) { + ctx.t += ctx.c; + while (ctx.c < 64) { + ctx.b[ctx.c++] = 0; + } + blake2sCompress(ctx, true); + const out = new Uint8Array(ctx.outlen); + for (let i = 0; i < ctx.outlen; i++) { + out[i] = ctx.h[i >> 2] >> 8 * (i & 3) & 255; + } + return out; + } + function blake2s(input, key, outlen) { + outlen = outlen || 32; + input = util.normalizeInput(input); + const ctx = blake2sInit(outlen, key); + blake2sUpdate(ctx, input); + return blake2sFinal(ctx); + } + function blake2sHex(input, key, outlen) { + const output = blake2s(input, key, outlen); + return util.toHex(output); + } + module2.exports = { + blake2s, + blake2sHex, + blake2sInit, + blake2sUpdate, + blake2sFinal + }; + } +}); + +// node_modules/blakejs/index.js +var require_blakejs = __commonJS({ + "node_modules/blakejs/index.js"(exports2, module2) { + var b2b = require_blake2b(); + var b2s = require_blake2s(); + module2.exports = { + blake2b: b2b.blake2b, + blake2bHex: b2b.blake2bHex, + blake2bInit: b2b.blake2bInit, + blake2bUpdate: b2b.blake2bUpdate, + blake2bFinal: b2b.blake2bFinal, + blake2s: b2s.blake2s, + blake2sHex: b2s.blake2sHex, + blake2sInit: b2s.blake2sInit, + blake2sUpdate: b2s.blake2sUpdate, + blake2sFinal: b2s.blake2sFinal + }; + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/zcash.js +var require_zcash = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/zcash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.fromConstructor = fromConstructor; + exports2.fromBuffer = fromBuffer; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var blakejs_1 = require_blakejs(); + var varuint = tslib_1.__importStar(require_cjs7()); + var bufferutils_1 = require_bufferutils(); + var base_1 = require_base3(); + var crypto_1 = require_crypto2(); + var ZCASH_JOINSPLITS_SUPPORT_VERSION = 2; + var ZCASH_OVERWINTER_VERSION = 3; + var ZCASH_SAPLING_VERSION = 4; + var ZCASH_NU5_VERSION = 5; + var ZCASH_NUM_JOINSPLITS_INPUTS = 2; + var ZCASH_NUM_JOINSPLITS_OUTPUTS = 2; + var ZCASH_NOTECIPHERTEXT_SIZE = 1 + 8 + 32 + 32 + 512 + 16; + var ZCASH_G1_PREFIX_MASK = 2; + var ZCASH_G2_PREFIX_MASK = 10; + function byteLength(tx) { + const overwinterSize = tx.version >= ZCASH_OVERWINTER_VERSION ? 4 + 4 : 0; + const txSpecific = tx.specific; + const getJoinSplitsSize = () => { + if (tx.version < ZCASH_JOINSPLITS_SUPPORT_VERSION || tx.version >= ZCASH_NU5_VERSION) return 0; + const joinSplitsLen = txSpecific.joinsplits.length; + if (joinSplitsLen < 1) return (0, bufferutils_1.varIntSize)(joinSplitsLen); + return (0, bufferutils_1.varIntSize)(joinSplitsLen) + (tx.version >= ZCASH_SAPLING_VERSION ? 1698 * joinSplitsLen : 1802 * joinSplitsLen) + 32 + 64; + }; + const saplingSize = tx.version === ZCASH_SAPLING_VERSION ? 8 + varuint.encodingLength(txSpecific.vShieldedSpend.length) + 384 * txSpecific.vShieldedSpend.length + varuint.encodingLength(txSpecific.vShieldedOutput.length) + 948 * txSpecific.vShieldedOutput.length + (txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0 ? 64 : 0) : 0; + const NU5size = tx.version >= ZCASH_NU5_VERSION ? 4 + 1 + 1 + 1 : 0; + return 4 + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + 4 + overwinterSize + getJoinSplitsSize() + saplingSize + NU5size; + } + function toBuffer(tx, buffer, initialOffset) { + if (!buffer) buffer = Buffer.allocUnsafe(byteLength(tx)); + const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0); + const txSpecific = tx.specific; + if (tx.version >= ZCASH_OVERWINTER_VERSION) { + const mask = txSpecific.overwintered ? 1 : 0; + bufferWriter.writeInt32(tx.version | mask << 31); + bufferWriter.writeUInt32(txSpecific.versionGroupId); + } else { + bufferWriter.writeInt32(tx.version); + } + if (tx.version >= ZCASH_NU5_VERSION) { + bufferWriter.writeUInt32(txSpecific.consensusBranchId); + bufferWriter.writeUInt32(tx.locktime); + bufferWriter.writeUInt32(tx.expiry); + } + bufferWriter.writeVarInt(tx.ins.length); + tx.ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + bufferWriter.writeVarSlice(txIn.script); + bufferWriter.writeUInt32(txIn.sequence); + }); + bufferWriter.writeVarInt(tx.outs.length); + tx.outs.forEach((txOut) => { + bufferWriter.writeUInt64(txOut.value); + bufferWriter.writeVarSlice(txOut.script); + }); + if (tx.version < ZCASH_NU5_VERSION) { + bufferWriter.writeUInt32(tx.locktime); + if (tx.version >= ZCASH_OVERWINTER_VERSION) { + bufferWriter.writeUInt32(tx.expiry); + } + } + if (tx.version === ZCASH_SAPLING_VERSION) { + bufferWriter.writeInt64(txSpecific.valueBalance); + bufferWriter.writeVarInt(txSpecific.vShieldedSpend.length); + txSpecific.vShieldedSpend.forEach((shieldedSpend) => { + bufferWriter.writeSlice(shieldedSpend.cv); + bufferWriter.writeSlice(shieldedSpend.anchor); + bufferWriter.writeSlice(shieldedSpend.nullifier); + bufferWriter.writeSlice(shieldedSpend.rk); + bufferWriter.writeSlice(shieldedSpend.zkproof.sA); + bufferWriter.writeSlice(shieldedSpend.zkproof.sB); + bufferWriter.writeSlice(shieldedSpend.zkproof.sC); + bufferWriter.writeSlice(shieldedSpend.spendAuthSig); + }); + bufferWriter.writeVarInt(txSpecific.vShieldedOutput.length); + txSpecific.vShieldedOutput.forEach((shieldedOutput) => { + bufferWriter.writeSlice(shieldedOutput.cv); + bufferWriter.writeSlice(shieldedOutput.cmu); + bufferWriter.writeSlice(shieldedOutput.ephemeralKey); + bufferWriter.writeSlice(shieldedOutput.encCiphertext); + bufferWriter.writeSlice(shieldedOutput.outCiphertext); + bufferWriter.writeSlice(shieldedOutput.zkproof.sA); + bufferWriter.writeSlice(shieldedOutput.zkproof.sB); + bufferWriter.writeSlice(shieldedOutput.zkproof.sC); + }); + } + function writeCompressedG1(i) { + bufferWriter.writeUInt8(ZCASH_G1_PREFIX_MASK | i.yLsb); + bufferWriter.writeSlice(i.x); + } + function writeCompressedG2(i) { + bufferWriter.writeUInt8(ZCASH_G2_PREFIX_MASK | i.yLsb); + bufferWriter.writeSlice(i.x); + } + if (tx.version >= ZCASH_JOINSPLITS_SUPPORT_VERSION && tx.version < ZCASH_NU5_VERSION) { + bufferWriter.writeVarInt(txSpecific.joinsplits.length); + txSpecific.joinsplits.forEach((joinsplit) => { + bufferWriter.writeUInt64(joinsplit.vpubOld); + bufferWriter.writeUInt64(joinsplit.vpubNew); + bufferWriter.writeSlice(joinsplit.anchor); + joinsplit.nullifiers.forEach((nullifier) => { + bufferWriter.writeSlice(nullifier); + }); + joinsplit.commitments.forEach((nullifier) => { + bufferWriter.writeSlice(nullifier); + }); + bufferWriter.writeSlice(joinsplit.ephemeralKey); + bufferWriter.writeSlice(joinsplit.randomSeed); + joinsplit.macs.forEach((nullifier) => { + bufferWriter.writeSlice(nullifier); + }); + if (joinsplit.zkproof.type === "sapling") { + bufferWriter.writeSlice(joinsplit.zkproof.sA); + bufferWriter.writeSlice(joinsplit.zkproof.sB); + bufferWriter.writeSlice(joinsplit.zkproof.sC); + } else { + writeCompressedG1(joinsplit.zkproof.gA); + writeCompressedG1(joinsplit.zkproof.gAPrime); + writeCompressedG2(joinsplit.zkproof.gB); + writeCompressedG1(joinsplit.zkproof.gBPrime); + writeCompressedG1(joinsplit.zkproof.gC); + writeCompressedG1(joinsplit.zkproof.gCPrime); + writeCompressedG1(joinsplit.zkproof.gK); + writeCompressedG1(joinsplit.zkproof.gH); + } + joinsplit.ciphertexts.forEach((ciphertext) => { + bufferWriter.writeSlice(ciphertext); + }); + }); + if (txSpecific.joinsplits.length > 0) { + bufferWriter.writeSlice(txSpecific.joinsplitPubkey); + bufferWriter.writeSlice(txSpecific.joinsplitSig); + } + } + if (tx.version >= ZCASH_SAPLING_VERSION && txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0) { + bufferWriter.writeSlice(txSpecific.bindingSig); + } + if (tx.version === ZCASH_NU5_VERSION) { + bufferWriter.writeVarInt(0); + bufferWriter.writeVarInt(0); + bufferWriter.writeUInt8(0); + } + if (initialOffset !== void 0) return buffer.subarray(initialOffset, bufferWriter.offset); + return buffer; + } + function getExtraData(tx) { + if (tx.version < ZCASH_JOINSPLITS_SUPPORT_VERSION || tx.version >= ZCASH_NU5_VERSION) return; + const offset = 4 + (tx.version >= ZCASH_OVERWINTER_VERSION ? 8 : 0) + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + 4; + return tx.toBuffer().subarray(offset); + } + function getBlake2bDigestHash(buffer, personalization) { + const personalizedBuffer = typeof personalization === "string" ? Buffer.from(personalization) : personalization; + const hash = (0, blakejs_1.blake2b)(buffer, void 0, 32, void 0, personalizedBuffer); + return Buffer.from(hash); + } + function getHeaderDigest(tx) { + const mask = tx.specific.overwintered ? 1 : 0; + const writer = new bufferutils_1.BufferWriter(Buffer.alloc(4 * 5)); + writer.writeInt32(tx.version | mask << 31); + writer.writeUInt32(tx.specific.versionGroupId); + writer.writeUInt32(tx.specific.consensusBranchId); + writer.writeUInt32(tx.locktime); + writer.writeUInt32(tx.expiry); + return getBlake2bDigestHash(writer.buffer, "ZTxIdHeadersHash"); + } + function getPrevoutsDigest(ins) { + const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(36 * ins.length)); + ins.forEach((txIn) => { + bufferWriter.writeSlice(txIn.hash); + bufferWriter.writeUInt32(txIn.index); + }); + return getBlake2bDigestHash(bufferWriter.buffer, "ZTxIdPrevoutHash"); + } + function getSequenceDigest(ins) { + const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(4 * ins.length)); + ins.forEach((txIn) => { + bufferWriter.writeUInt32(txIn.sequence); + }); + return getBlake2bDigestHash(bufferWriter.buffer, "ZTxIdSequencHash"); + } + function getOutputsDigest(outs) { + const txOutsSize = outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0); + const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(txOutsSize)); + outs.forEach((out) => { + bufferWriter.writeUInt64(out.value); + bufferWriter.writeVarSlice(out.script); + }); + return getBlake2bDigestHash(bufferWriter.buffer, "ZTxIdOutputsHash"); + } + function getTransparentDigest(tx) { + let buffer; + if (tx.ins.length || tx.outs.length) { + const writer = new bufferutils_1.BufferWriter(Buffer.alloc(32 * 3)); + writer.writeSlice(getPrevoutsDigest(tx.ins)); + writer.writeSlice(getSequenceDigest(tx.ins)); + writer.writeSlice(getOutputsDigest(tx.outs)); + buffer = writer.buffer; + } else { + buffer = Buffer.of(); + } + return getBlake2bDigestHash(buffer, "ZTxIdTranspaHash"); + } + function getHash(tx, _forWitness = false) { + if (tx.version < ZCASH_NU5_VERSION) { + return (0, crypto_1.hash256)(toBuffer(tx)); + } + const writer = new bufferutils_1.BufferWriter(Buffer.alloc(32 * 4)); + writer.writeSlice(getHeaderDigest(tx)); + writer.writeSlice(getTransparentDigest(tx)); + writer.writeSlice(getBlake2bDigestHash(Buffer.of(), "ZTxIdSaplingHash")); + writer.writeSlice(getBlake2bDigestHash(Buffer.of(), "ZTxIdOrchardHash")); + const personalizationTag = "ZcashTxHash_"; + const personalization = new bufferutils_1.BufferWriter(Buffer.alloc(personalizationTag.length + 4)); + personalization.writeSlice(Buffer.from(personalizationTag)); + personalization.writeUInt32(tx.specific.consensusBranchId); + return getBlake2bDigestHash(writer.buffer, personalization.buffer); + } + function fromConstructor(options) { + const tx = new base_1.TransactionBase(options); + tx.specific = tx.specific || { + type: "zcash", + joinsplits: [], + joinsplitPubkey: base_1.EMPTY_SCRIPT, + joinsplitSig: base_1.EMPTY_SCRIPT, + overwintered: 0, + versionGroupId: 0, + valueBalance: 0, + vShieldedSpend: [], + vShieldedOutput: [], + bindingSig: base_1.EMPTY_SCRIPT, + consensusBranchId: 0 + }; + tx.byteLength = byteLength.bind(null, tx); + tx.toBuffer = toBuffer.bind(null, tx); + tx.getExtraData = getExtraData.bind(null, tx); + tx.getHash = getHash.bind(null, tx); + return tx; + } + function fromBuffer(buffer, options) { + const bufferReader = new bufferutils_1.BufferReader(buffer); + const tx = fromConstructor(options); + const txSpecific = tx.specific; + tx.version = bufferReader.readInt32(); + txSpecific.overwintered = tx.version >>> 31; + tx.version &= 2147483647; + if (tx.version >= ZCASH_OVERWINTER_VERSION) { + txSpecific.versionGroupId = bufferReader.readUInt32(); + } + if (tx.version >= ZCASH_NU5_VERSION) { + txSpecific.consensusBranchId = bufferReader.readUInt32(); + tx.locktime = bufferReader.readUInt32(); + tx.expiry = bufferReader.readUInt32(); + } + const vinLen = bufferReader.readVarInt(); + for (let i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: bufferReader.readSlice(32), + index: bufferReader.readUInt32(), + script: bufferReader.readVarSlice(), + sequence: bufferReader.readUInt32(), + witness: [] + }); + } + const voutLen = bufferReader.readVarInt(); + for (let i = 0; i < voutLen; ++i) { + tx.outs.push({ + value: bufferReader.readUInt64String(), + script: bufferReader.readVarSlice() + }); + } + if (tx.version < ZCASH_NU5_VERSION) { + tx.locktime = bufferReader.readUInt32(); + tx.expiry = tx.version >= ZCASH_OVERWINTER_VERSION ? bufferReader.readUInt32() : 0; + } + function readCompressedG1() { + const yLsb = bufferReader.readUInt8() & 1; + const x = bufferReader.readSlice(32); + return { + x, + yLsb + }; + } + function readCompressedG2() { + const yLsb = bufferReader.readUInt8() & 1; + const x = bufferReader.readSlice(64); + return { + x, + yLsb + }; + } + function readSaplingZKProof() { + return { + type: "sapling", + sA: bufferReader.readSlice(48), + sB: bufferReader.readSlice(96), + sC: bufferReader.readSlice(48) + }; + } + function readZKProof() { + if (tx.version >= ZCASH_SAPLING_VERSION) { + return readSaplingZKProof(); + } + return { + type: "joinsplit", + gA: readCompressedG1(), + gAPrime: readCompressedG1(), + gB: readCompressedG2(), + gBPrime: readCompressedG1(), + gC: readCompressedG1(), + gCPrime: readCompressedG1(), + gK: readCompressedG1(), + gH: readCompressedG1() + }; + } + if (tx.version === ZCASH_SAPLING_VERSION) { + txSpecific.valueBalance = bufferReader.readInt64(); + const nShieldedSpend = bufferReader.readVarInt(); + for (let i = 0; i < nShieldedSpend; ++i) { + txSpecific.vShieldedSpend.push({ + cv: bufferReader.readSlice(32), + anchor: bufferReader.readSlice(32), + nullifier: bufferReader.readSlice(32), + rk: bufferReader.readSlice(32), + zkproof: readSaplingZKProof(), + spendAuthSig: bufferReader.readSlice(64) + }); + } + const nShieldedOutput = bufferReader.readVarInt(); + for (let i = 0; i < nShieldedOutput; ++i) { + txSpecific.vShieldedOutput.push({ + cv: bufferReader.readSlice(32), + cmu: bufferReader.readSlice(32), + ephemeralKey: bufferReader.readSlice(32), + encCiphertext: bufferReader.readSlice(580), + outCiphertext: bufferReader.readSlice(80), + zkproof: readSaplingZKProof() + }); + } + } + if (tx.version >= ZCASH_JOINSPLITS_SUPPORT_VERSION && tx.version < ZCASH_NU5_VERSION) { + const joinSplitsLen = bufferReader.readVarInt(); + for (let i = 0; i < joinSplitsLen; ++i) { + let j; + const vpubOld = bufferReader.readUInt64(); + const vpubNew = bufferReader.readUInt64(); + const anchor = bufferReader.readSlice(32); + const nullifiers = []; + for (j = 0; j < ZCASH_NUM_JOINSPLITS_INPUTS; j++) { + nullifiers.push(bufferReader.readSlice(32)); + } + const commitments = []; + for (j = 0; j < ZCASH_NUM_JOINSPLITS_OUTPUTS; j++) { + commitments.push(bufferReader.readSlice(32)); + } + const ephemeralKey = bufferReader.readSlice(32); + const randomSeed = bufferReader.readSlice(32); + const macs = []; + for (j = 0; j < ZCASH_NUM_JOINSPLITS_INPUTS; j++) { + macs.push(bufferReader.readSlice(32)); + } + const zkproof = readZKProof(); + const ciphertexts = []; + for (j = 0; j < ZCASH_NUM_JOINSPLITS_OUTPUTS; j++) { + ciphertexts.push(bufferReader.readSlice(ZCASH_NOTECIPHERTEXT_SIZE)); + } + txSpecific.joinsplits.push({ + vpubOld, + vpubNew, + anchor, + nullifiers, + commitments, + ephemeralKey, + randomSeed, + macs, + zkproof, + ciphertexts + }); + } + if (joinSplitsLen > 0) { + txSpecific.joinsplitPubkey = bufferReader.readSlice(32); + txSpecific.joinsplitSig = bufferReader.readSlice(64); + } + } + if (tx.version >= ZCASH_SAPLING_VERSION && txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0) { + txSpecific.bindingSig = bufferReader.readSlice(64); + } + if (tx.version === ZCASH_NU5_VERSION) { + if (bufferReader.readVarInt() !== 0) { + throw Error("Unexpected vSpendsSapling vector"); + } + if (bufferReader.readVarInt() !== 0) { + throw Error("Unexpected vOutputsSapling vector"); + } + if (bufferReader.readUInt8() !== 0) { + throw Error("Unexpected orchard byte"); + } + } + if (options.nostrict) return tx; + if (bufferReader.offset !== buffer.length) throw new Error("Transaction has unexpected data"); + return tx; + } + } +}); + +// node_modules/@trezor/utxo-lib/lib/transaction/index.js +var require_transaction3 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/transaction/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Transaction = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var networks_1 = require_networks(); + var base_1 = require_base3(); + var bitcoin = tslib_1.__importStar(require_bitcoin()); + var dash = tslib_1.__importStar(require_dash()); + var decred = tslib_1.__importStar(require_decred()); + var peercoin = tslib_1.__importStar(require_peercoin()); + var zcash = tslib_1.__importStar(require_zcash()); + var Transaction = class extends base_1.TransactionBase { + constructor(options = {}) { + super(options); + if ((0, networks_1.isNetworkType)("dash", this.network)) return dash.fromConstructor(options); + if ((0, networks_1.isNetworkType)("decred", this.network)) return decred.fromConstructor(options); + if ((0, networks_1.isNetworkType)("peercoin", this.network)) return peercoin.fromConstructor(options); + if ((0, networks_1.isNetworkType)("zcash", this.network)) return zcash.fromConstructor(options); + return bitcoin.fromConstructor(options); + } + static isCoinbaseHash(buffer) { + return (0, base_1.isCoinbaseHash)(buffer); + } + static fromBuffer(buffer, options = {}) { + if ((0, networks_1.isNetworkType)("dash", options.network)) return dash.fromBuffer(buffer, options); + if ((0, networks_1.isNetworkType)("decred", options.network)) return decred.fromBuffer(buffer, options); + if ((0, networks_1.isNetworkType)("peercoin", options.network)) return peercoin.fromBuffer(buffer, options); + if ((0, networks_1.isNetworkType)("zcash", options.network)) return zcash.fromBuffer(buffer, options); + return bitcoin.fromBuffer(buffer, options); + } + static fromHex(hex, options = {}) { + return this.fromBuffer(Buffer.from(hex, "hex"), { + ...options, + nostrict: false + }); + } + }; + exports2.Transaction = Transaction; + } +}); + +// node_modules/@trezor/utxo-lib/lib/index.js +var require_lib18 = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.discovery = exports2.getXpubOrDescriptorInfo = exports2.deriveAddresses = exports2.composeTx = exports2.networks = exports2.script = exports2.payments = exports2.crypto = exports2.bufferutils = exports2.bip32 = exports2.address = exports2.Transaction = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var address = tslib_1.__importStar(require_address()); + exports2.address = address; + var bip32 = tslib_1.__importStar(require_bip32()); + exports2.bip32 = bip32; + var bufferutils = tslib_1.__importStar(require_bufferutils()); + exports2.bufferutils = bufferutils; + var compose_1 = require_compose2(); + Object.defineProperty(exports2, "composeTx", { + enumerable: true, + get: function() { + return compose_1.composeTx; + } + }); + var crypto2 = tslib_1.__importStar(require_crypto2()); + exports2.crypto = crypto2; + var derivation_1 = require_derivation(); + Object.defineProperty(exports2, "deriveAddresses", { + enumerable: true, + get: function() { + return derivation_1.deriveAddresses; + } + }); + Object.defineProperty(exports2, "getXpubOrDescriptorInfo", { + enumerable: true, + get: function() { + return derivation_1.getXpubOrDescriptorInfo; + } + }); + var discovery_1 = require_discovery(); + Object.defineProperty(exports2, "discovery", { + enumerable: true, + get: function() { + return discovery_1.discovery; + } + }); + var networks = tslib_1.__importStar(require_networks()); + exports2.networks = networks; + var payments = tslib_1.__importStar(require_payments2()); + exports2.payments = payments; + var script = tslib_1.__importStar(require_script()); + exports2.script = script; + var transaction_1 = require_transaction3(); + Object.defineProperty(exports2, "Transaction", { + enumerable: true, + get: function() { + return transaction_1.Transaction; + } + }); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/client/json-rpc.js +var require_json_rpc = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/client/json-rpc.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.JsonRpcClient = void 0; + var events_1 = __require("events"); + var utils_1 = require_lib(); + var JsonRpcClient = class { + id = 0; + buffer = ""; + emitter = new events_1.EventEmitter(); + callbacks = {}; + socket; + debug = false; + async connect(socket, options) { + if (this.socket) return; + this.debug = options?.debug || false; + try { + this.socket = socket; + await this.socket.connect(this); + } catch (err2) { + this.socket = void 0; + throw new Error(`JSON RPC connection failed: [${err2}]`); + } + } + isConnected() { + return !!this.socket; + } + close() { + this.socket?.close(); + this.socket = void 0; + this.onClose(); + } + request(method, ...params) { + return new Promise((resolve, reject) => { + const id = ++this.id; + const request = JSON.stringify({ + jsonrpc: "2.0", + method, + params, + id + }); + this.callbacks[id] = (err2, result) => { + if (err2) reject(err2); + else resolve(result); + }; + this.send(request); + }); + } + on(event, listener) { + this.emitter.on(event, listener); + } + off(event, listener) { + this.emitter.off(event, listener); + } + send(message) { + const socket = this.socket || (0, utils_1.throwError)("Connection not established"); + this.log("SENDING:", message); + socket.send(`${message} +`); + } + response(response) { + const { + id, + method, + params, + result, + error + } = response; + if (!id) { + this.emitter.emit(method, params); + } else { + const callback = this.callbacks[id]; + if (callback) { + delete this.callbacks[id]; + callback(error, result); + } else { + this.log(`Can't get callback for ${id}`); + } + } + } + onMessage(body) { + const msg = JSON.parse(body); + this.log("RECEIVED:", msg); + this.response(msg); + } + onConnect() { + this.log("onConnect"); + } + onReceive(chunk) { + const msgs = (this.buffer + chunk).split("\n"); + this.buffer = msgs.pop() || ""; + msgs.filter((msg) => !!msg).forEach(this.onMessage, this); + } + onEnd(e) { + this.log(`onEnd: [${e}]`); + } + onError(error) { + this.log(`onError: [${error}]`); + } + onClose() { + this.log("onClose"); + Object.values(this.callbacks).forEach((cb) => cb(new Error("Connection closed"))); + this.callbacks = {}; + this.emitter.removeAllListeners(); + } + log(...data) { + if (this.debug) { + console.log(...data); + } + } + }; + exports2.JsonRpcClient = JsonRpcClient; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/client/batching.js +var require_batching = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/client/batching.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BatchingJsonRpcClient = void 0; + var json_rpc_1 = require_json_rpc(); + var TIMEOUT_MS = 50; + var MAX_QUEUE_LENGTH = 15; + var BatchingJsonRpcClient = class extends json_rpc_1.JsonRpcClient { + queue = []; + batchTimer; + timeoutMs; + maxQueueLength; + batchingDisabled = false; + constructor(options) { + super(); + this.timeoutMs = options?.timeoutMs || TIMEOUT_MS; + this.maxQueueLength = options?.maxQueueLength || MAX_QUEUE_LENGTH; + } + send(message) { + if (this.batchingDisabled) { + super.send(message); + return; + } + const { + queue + } = this; + queue.push(message); + if (this.batchTimer) clearTimeout(this.batchTimer); + this.batchTimer = setTimeout(() => { + this.batchTimer = void 0; + while (queue.length) { + const q = queue.splice(0, this.maxQueueLength); + const content = q.length > 1 ? `[${q.join(",")}]` : q[0]; + super.send(content); + } + }, this.timeoutMs); + } + onMessage(body) { + const msg = JSON.parse(body); + this.log("RECEIVED:", msg); + if (Array.isArray(msg)) { + msg.forEach(this.response, this); + } else { + this.response(msg); + } + } + }; + exports2.BatchingJsonRpcClient = BatchingJsonRpcClient; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/client/electrum.js +var require_electrum = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/client/electrum.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ElectrumClient = void 0; + var utxo_lib_1 = require_lib18(); + var batching_1 = require_batching(); + var KEEP_ALIVE_INTERVAL = 120 * 1e3; + var selectNetwork = (shortcut) => { + switch (shortcut) { + case "REGTEST": + return utxo_lib_1.networks.regtest; + case "TEST": + return utxo_lib_1.networks.testnet; + default: + return utxo_lib_1.networks.bitcoin; + } + }; + var ElectrumClient = class extends batching_1.BatchingJsonRpcClient { + options; + network; + version; + lastBlock; + timeLastCall = 0; + async connect(socket, options) { + this.timeLastCall = 0; + this.options = options; + this.network = selectNetwork(options.coin); + const { + name, + protocolVersion + } = options.client; + await super.connect(socket, options); + try { + this.version = await this.request("server.version", name, protocolVersion); + if (this.version[0]?.startsWith("ElectrumPersonalServer") || this.version[0]?.startsWith("electrs-esplora")) { + this.batchingDisabled = true; + } + this.on("blockchain.headers.subscribe", this.onBlock.bind(this)); + this.lastBlock = await this.request("blockchain.headers.subscribe"); + } catch (err2) { + this.socket = void 0; + throw new Error(`Communication with Electrum server failed: [${err2}]`); + } + this.keepAlive(); + } + getInfo() { + if (this.options?.url && this.version && this.lastBlock && this.network) { + return { + url: this.options.url, + version: this.version, + block: this.lastBlock, + coin: this.options.coin, + network: this.network + }; + } + } + onBlock(blocks) { + const [last] = blocks.sort((a, b) => b.height - a.height); + if (last) this.lastBlock = last; + } + request(method, ...params) { + this.timeLastCall = (/* @__PURE__ */ new Date()).getTime(); + return super.request(method, ...params); + } + keepAliveHandle; + keepAlive() { + if (!this.socket) return; + this.keepAliveHandle = setInterval(async () => { + if (this.timeLastCall !== 0 && (/* @__PURE__ */ new Date()).getTime() > this.timeLastCall + KEEP_ALIVE_INTERVAL / 2) { + await this.request("server.ping").catch((err2) => { + console.error(`Ping to server failed: [${err2}]`); + this.close(); + }); + } + }, KEEP_ALIVE_INTERVAL); + } + onClose() { + super.onClose(); + if (this.keepAliveHandle) clearInterval(this.keepAliveHandle); + } + }; + exports2.ElectrumClient = ElectrumClient; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/client/caching.js +var require_caching = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/client/caching.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CachingElectrumClient = void 0; + var electrum_1 = require_electrum(); + var CachingElectrumClient = class extends electrum_1.ElectrumClient { + cache = {}; + statuses = {}; + cached = 0; + total = 0; + logTimer; + constructor() { + super(); + this.logTimer = setInterval(() => { + this.log(`Caching effectiveness: ${this.cached}/${this.total}`); + this.log("Subscription count: ", Object.keys(this.statuses).length); + }, 6e4); + } + async cacheRequest(status, method, params) { + const descriptor = [method, ...params].join(":"); + const cached = this.cache[descriptor]; + if (cached) { + const [cachedStatus, cachedResponse] = cached; + if (cachedStatus === status) { + this.cached++; + return cachedResponse; + } + } + const response = await super.request(method, ...params); + this.cache[descriptor] = [status, response]; + return response; + } + async trySubscribe(scripthash) { + const status = this.statuses[scripthash]; + if (status !== void 0) { + return status; + } + const newStatus = await super.request("blockchain.scripthash.subscribe", scripthash); + this.statuses[scripthash] = newStatus; + return newStatus; + } + async request(method, ...params) { + this.total++; + switch (method) { + case "blockchain.scripthash.get_history": + case "blockchain.scripthash.get_balance": + case "blockchain.scripthash.listunspent": { + const [scripthash] = params; + const status = await this.trySubscribe(scripthash); + return this.cacheRequest(status, method, params); + } + case "blockchain.transaction.get": { + const curBlock = this.lastBlock?.hex; + if (curBlock === void 0) break; + return this.cacheRequest(curBlock, method, params); + } + case "blockchain.scripthash.subscribe": { + const [scripthash] = params; + return this.trySubscribe(scripthash); + } + case "blockchain.scripthash.unsubscribe": { + const [scripthash] = params; + delete this.statuses[scripthash]; + return super.request(method, ...params); + } + default: + break; + } + return super.request(method, ...params); + } + response(response) { + const { + method, + params + } = response; + switch (method) { + case "blockchain.scripthash.subscribe": { + const [scripthash, status] = params; + this.statuses[scripthash] = status; + break; + } + default: + break; + } + super.response(response); + } + onClose() { + super.onClose(); + clearInterval(this.logTimer); + } + }; + exports2.CachingElectrumClient = CachingElectrumClient; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transform.js +var require_transform3 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transform.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.tryGetScripthash = exports2.blockheaderToBlockhash = exports2.scriptToScripthash = exports2.addressToScripthash = exports2.btcToSat = void 0; + var utxo_lib_1 = require_lib18(); + var btcToSat = (btc) => Math.round(1e8 * btc).toString(); + exports2.btcToSat = btcToSat; + var addressToScripthash = (address, network) => { + const script = utxo_lib_1.address.toOutputScript(address, network); + const scripthash = utxo_lib_1.crypto.sha256(script).reverse().toString("hex"); + return scripthash; + }; + exports2.addressToScripthash = addressToScripthash; + var scriptToScripthash = (hex) => { + const buffer = Buffer.from(hex, "hex"); + return utxo_lib_1.crypto.sha256(buffer).reverse().toString("hex"); + }; + exports2.scriptToScripthash = scriptToScripthash; + var blockheaderToBlockhash = (header) => { + const buffer = Buffer.from(header, "hex"); + const hash = utxo_lib_1.crypto.hash256(buffer).reverse().toString("hex"); + return hash; + }; + exports2.blockheaderToBlockhash = blockheaderToBlockhash; + var tryGetScripthash = (address, network) => { + try { + return { + valid: true, + scripthash: (0, exports2.addressToScripthash)(address, network) + }; + } catch { + return { + valid: false + }; + } + }; + exports2.tryGetScripthash = tryGetScripthash; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/addressManager.js +var require_addressManager = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/addressManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createAddressManager = void 0; + var utils_1 = require_lib(); + var transform_1 = require_transform3(); + var addressesFromAccounts = (array) => array.filter(utils_1.isNotUndefined).flatMap(({ + change, + used, + unused + }) => change.concat(used, unused).map(({ + address + }) => address)); + var createAddressManager = (getNetwork) => { + let subscribedAddrs = {}; + let subscribedAccs = {}; + const addAddresses = (addresses) => { + const toAdd = addresses.filter(utils_1.arrayDistinct).filter((addr) => !subscribedAddrs[addr]); + const network = getNetwork(); + subscribedAddrs = toAdd.reduce((dic, addr) => ({ + ...dic, + [addr]: (0, transform_1.addressToScripthash)(addr, network) + }), subscribedAddrs); + return toAdd.map((addr) => subscribedAddrs[addr]); + }; + const removeAddresses = (addresses) => { + const [toRemove, toPreserve] = addresses ? (0, utils_1.objectPartition)(subscribedAddrs, addresses) : [subscribedAddrs, {}]; + subscribedAddrs = toPreserve; + return Object.values(toRemove); + }; + const addAccounts = (accounts) => { + const toAdd = accounts.filter((acc) => !subscribedAccs[acc.descriptor]); + subscribedAccs = toAdd.reduce((dic, acc) => ({ + ...dic, + [acc.descriptor]: acc.addresses || { + change: [], + used: [], + unused: [] + } + }), subscribedAccs); + const addresses = addressesFromAccounts(toAdd.map((acc) => acc.addresses)); + return addAddresses(addresses); + }; + const removeAccounts = (accounts) => { + const [toRemove, toPreserve] = accounts ? (0, utils_1.objectPartition)(subscribedAccs, accounts.map(({ + descriptor + }) => descriptor)) : [subscribedAccs, {}]; + subscribedAccs = toPreserve; + const addresses = addressesFromAccounts(Object.values(toRemove)); + return removeAddresses(addresses); + }; + const getCount = () => Object.keys(subscribedAddrs).length; + const getInfo = (scripthash) => { + const [address, _sh] = Object.entries(subscribedAddrs).find(([_addr, sh]) => sh === scripthash) || []; + if (!address) return { + descriptor: scripthash + }; + const [account, addresses] = Object.entries(subscribedAccs).find(([_acc, { + change, + unused, + used + }]) => !!change.concat(used, unused).find((ad) => ad.address === address)) || []; + return { + descriptor: account || address, + addresses + }; + }; + return { + addAddresses, + removeAddresses, + addAccounts, + removeAccounts, + getCount, + getInfo + }; + }; + exports2.createAddressManager = createAddressManager; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/discovery.js +var require_discovery2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/discovery.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.discoverAddress = void 0; + var transform_1 = require_transform3(); + var discoverAddress = (client) => async ({ + address, + path: path2 + }) => { + const scripthash = (0, transform_1.addressToScripthash)(address, client.getInfo()?.network); + const history = await client.request("blockchain.scripthash.get_history", scripthash); + return { + address, + scripthash, + path: path2, + history, + empty: !history.length + }; + }; + exports2.discoverAddress = discoverAddress; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transaction.js +var require_transaction4 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getTransactions = void 0; + var utils_1 = require_lib(); + var transform_1 = require_transform3(); + var transformOpReturn = (hex) => { + const [, _len, data] = hex.match(/^6a(?:4c)?([0-9a-f]{2})([0-9a-f]*)$/i) ?? []; + return data ? `OP_RETURN (${Buffer.from(data, "hex").toString("ascii")})` : void 0; + }; + var parseAddresses = ({ + address, + addresses, + type, + hex + }) => { + if (type === "nulldata") { + const opReturn = transformOpReturn(hex); + return { + addresses: opReturn ? [opReturn] : [], + isAddress: false + }; + } + const addrs = !address ? addresses || [] : [address]; + return { + addresses: addrs, + isAddress: addrs.length === 1 + }; + }; + var isNotCoinbase = (item) => item.txid !== void 0; + var formatTransaction = (getVout, getSpent, currentHeight) => (tx) => { + const { + txid, + version, + vin, + vout, + hex, + blockhash, + confirmations, + blocktime, + locktime, + vsize, + size + } = tx; + const vinRegular = vin.filter(isNotCoinbase); + const value = vout.map(({ + value: value2 + }) => value2).reduce((a, b) => a + b, 0); + const valueIn = vinRegular.map(({ + txid: txid2, + vout: vout2 + }) => getVout(txid2, vout2).value).reduce((a, b) => a + b, 0); + return { + txid, + hex, + version, + confirmations: confirmations ?? 0, + lockTime: locktime, + blockTime: blocktime, + blockHash: blockhash, + blockHeight: currentHeight && confirmations ? currentHeight - confirmations + 1 : -1, + value: (0, transform_1.btcToSat)(value), + valueIn: (0, transform_1.btcToSat)(valueIn), + fees: (0, transform_1.btcToSat)(valueIn - value), + vsize, + size, + vin: vinRegular.map(({ + txid: txid2, + vout: vout2, + sequence, + n + }, index) => ({ + txid: txid2, + vout: vout2, + sequence, + n: n || index, + value: (0, transform_1.btcToSat)(getVout(txid2, vout2).value), + ...parseAddresses(getVout(txid2, vout2).scriptPubKey) + })), + vout: vout.map(({ + value: value2, + n, + scriptPubKey + }) => ({ + value: (0, transform_1.btcToSat)(value2), + n, + spent: getSpent(txid, n), + hex: scriptPubKey.hex, + ...parseAddresses(scriptPubKey) + })) + }; + }; + var getTransactions = async (client, history) => { + const txids = history.map(({ + tx_hash + }) => tx_hash).filter(utils_1.arrayDistinct); + const origTxs = await Promise.all(txids.map((txid) => client.request("blockchain.transaction.get", txid, true))).then((txs) => (0, utils_1.arrayToDictionary)(txs, ({ + txid + }) => txid)); + const prevTxs = await Promise.all(Object.values(origTxs).flatMap(({ + vin + }) => vin.filter(isNotCoinbase).map(({ + txid + }) => txid)).filter(utils_1.arrayDistinct).filter((txid) => !origTxs[txid]).map((txid) => client.request("blockchain.transaction.get", txid, true))).then((txs) => (0, utils_1.arrayToDictionary)(txs, ({ + txid + }) => txid)); + const getSpent = () => false; + const getTx = (txid) => origTxs[txid] || prevTxs[txid]; + const getVout = (txid, vout) => getTx(txid).vout[vout]; + const currentHeight = client.getInfo()?.block?.height || 0; + return Object.values(origTxs).map(formatTransaction(getVout, getSpent, currentHeight)); + }; + exports2.getTransactions = getTransactions; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/index.js +var require_utils24 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_addressManager(), exports2); + tslib_1.__exportStar(require_discovery2(), exports2); + tslib_1.__exportStar(require_transform3(), exports2); + tslib_1.__exportStar(require_transaction4(), exports2); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/blockListener.js +var require_blockListener = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/blockListener.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.blockListener = void 0; + var constants_1 = require_constants8(); + var utils_1 = require_lib(); + var utils_2 = require_utils24(); + var blockListener = (worker) => { + const { + state + } = worker; + const api = () => worker.api ?? (0, utils_1.throwError)("API not created"); + const onBlock = (blocks) => { + blocks.forEach(({ + height, + hex + }) => worker.post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight: height, + blockHash: (0, utils_2.blockheaderToBlockhash)(hex) + } + } + })); + }; + const subscribe = () => { + if (!state.getSubscription("block")) { + state.addSubscription("block"); + api().on("blockchain.headers.subscribe", onBlock); + } + return { + subscribed: true + }; + }; + const unsubscribe = () => { + if (state.getSubscription("block")) { + api().off("blockchain.headers.subscribe", onBlock); + state.removeSubscription("block"); + } + return { + subscribed: false + }; + }; + return { + subscribe, + unsubscribe + }; + }; + exports2.blockListener = blockListener; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/txListener.js +var require_txListener = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/txListener.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.txListener = void 0; + var constants_1 = require_constants8(); + var blockbook_1 = require_blockbook(); + var utils_1 = require_lib(); + var utils_2 = require_utils24(); + var mostRecent = (previous, current) => { + if (previous === void 0) return current; + if (previous.height === -1) return previous; + if (current.height === -1) return current; + if (previous.height === 0) return previous; + if (current.height === 0) return current; + return previous.height >= current.height ? previous : current; + }; + var txListener = (worker) => { + const { + state + } = worker; + const api = () => worker.api ?? (0, utils_1.throwError)("API not created"); + const addressManager = (0, utils_2.createAddressManager)(() => api().getInfo()?.network); + const onTransaction = async ([scripthash, _status]) => { + const { + descriptor, + addresses + } = addressManager.getInfo(scripthash); + if (descriptor === scripthash) { + return; + } + const history = await api().request("blockchain.scripthash.get_history", scripthash); + const recent = history.reduce(mostRecent, void 0); + if (!recent) return; + const [tx] = await (0, utils_2.getTransactions)(api(), [recent]); + worker.post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "notification", + payload: { + descriptor, + tx: (0, blockbook_1.transformTransaction)(tx, addresses ?? descriptor) + } + } + }); + }; + const subscribe = async (data) => { + const shToSubscribe = data.type === "accounts" ? addressManager.addAccounts(data.accounts) : addressManager.addAddresses(data.addresses); + if (!shToSubscribe.length) return { + subscribed: false + }; + if (!state.getSubscription("notification")) { + api().on("blockchain.scripthash.subscribe", onTransaction); + state.addSubscription("notification"); + } + await Promise.all(shToSubscribe.map((scripthash) => api().request("blockchain.scripthash.subscribe", scripthash))); + return { + subscribed: true + }; + }; + const unsubscribe = async (data) => { + const shToUnsubscribe = data.type === "accounts" ? addressManager.removeAccounts(data.accounts) : addressManager.removeAddresses(data.addresses); + if (!shToUnsubscribe.length) return { + subscribed: false + }; + if (state.getSubscription("notification") && !addressManager.getCount()) { + api().off("blockchain.scripthash.subscribe", onTransaction); + state.removeSubscription("notification"); + } + await Promise.all(shToUnsubscribe.map((scripthash) => api().request("blockchain.scripthash.unsubscribe", scripthash))); + return { + subscribed: false + }; + }; + return { + subscribe, + unsubscribe + }; + }; + exports2.txListener = txListener; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/index.js +var require_listeners = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.txListener = exports2.blockListener = void 0; + var blockListener_1 = require_blockListener(); + Object.defineProperty(exports2, "blockListener", { + enumerable: true, + get: function() { + return blockListener_1.blockListener; + } + }); + var txListener_1 = require_txListener(); + Object.defineProperty(exports2, "txListener", { + enumerable: true, + get: function() { + return txListener_1.txListener; + } + }); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/estimateFee.js +var require_estimateFee = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/estimateFee.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_utils24(); + var estimateFee = (client, payload) => Promise.all((payload.blocks || []).map((num) => client.request("blockchain.estimatefee", num).then((btc) => ({ + feePerUnit: (0, utils_1.btcToSat)(btc) + })))); + exports2.default = estimateFee; + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/pipe.js +var require_pipe = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/pipe.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + pipe: () => pipe + }); + function pipe() { + let x = arguments[0]; + for (let i = 1, l = arguments.length; i < l; i++) { + x = arguments[i](x); + } + return x; + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/flow.js +var require_flow = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/flow.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + flow: () => flow + }); + function flow() { + let fns = arguments; + return function() { + let x = fns[0].apply(null, arguments); + for (let i = 1, l = fns.length; i < l; i++) { + x = fns[i](x); + } + return x; + }; + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Function/index.js +var require_Function = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Function/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + after: () => after, + allPass: () => allPass, + always: () => always, + anyPass: () => anyPass, + before: () => before, + both: () => both, + coerce: () => coerce, + debounce: () => debounce, + defaultTo: () => defaultTo, + either: () => either, + equals: () => equals, + falsy: () => falsy, + identity: () => identity, + ifElse: () => ifElse, + ignore: () => ignore, + makeControlledDebounce: () => makeControlledDebounce, + makeControlledThrottle: () => makeControlledThrottle, + memoize: () => memoize, + memoizeWithKey: () => memoizeWithKey, + once: () => once, + placeholder: () => placeholder, + tap: () => tap, + throttle: () => throttle, + toMutable: () => toMutable, + truthy: () => truthy, + tryCatch: () => tryCatch, + unless: () => unless, + when: () => when + }); + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + function valFromOption(x) { + if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) { + return x; + } + var depth = x.BS_PRIVATE_NESTED_SOME_NONE; + if (depth === 0) { + return; + } else { + return { + BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0 + }; + } + } + var id = { + contents: 0 + }; + function create(str) { + id.contents = id.contents + 1 | 0; + return str + ("/" + id.contents); + } + function caml_is_extension(e) { + if (e == null) { + return false; + } else { + return typeof e.RE_EXN_ID === "string"; + } + } + var $$Error = /* @__PURE__ */ create("Caml_js_exceptions.Error"); + function internalToOCamlException(e) { + if (caml_is_extension(e)) { + return e; + } else { + return { + RE_EXN_ID: $$Error, + _1: e + }; + } + } + var $$Error$1 = $$Error; + var for_in = function(o, foo) { + for (var x in o) { + foo(x); + } + }; + function caml_equal(a, b) { + if (a === b) { + return true; + } + var a_type = typeof a; + if (a_type === "string" || a_type === "number" || a_type === "boolean" || a_type === "undefined" || a === null) { + return false; + } + var b_type = typeof b; + if (a_type === "function" || b_type === "function") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: functional value", + Error: new Error() + }; + } + if (b_type === "number" || b_type === "undefined" || b === null) { + return false; + } + var tag_a = a.TAG | 0; + var tag_b = b.TAG | 0; + if (tag_a === 248) { + return a[1] === b[1]; + } + if (tag_a === 251) { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: abstract value", + Error: new Error() + }; + } + if (tag_a !== tag_b) { + return false; + } + var len_a = a.length | 0; + var len_b = b.length | 0; + if (len_a === len_b) { + if (Array.isArray(a)) { + var _i = 0; + while (true) { + var i = _i; + if (i === len_a) { + return true; + } + if (!caml_equal(a[i], b[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } else if (a instanceof Date && b instanceof Date) { + return !(a > b || a < b); + } else { + var result = { + contents: true + }; + var do_key_a = function(key) { + if (!Object.prototype.hasOwnProperty.call(b, key)) { + result.contents = false; + return; + } + }; + var do_key_b = function(key) { + if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) { + result.contents = false; + return; + } + }; + for_in(a, do_key_a); + if (result.contents) { + for_in(b, do_key_b); + } + return result.contents; + } + } else { + return false; + } + } + function everyU(arr, b) { + var len = arr.length; + var _i = 0; + while (true) { + var i = _i; + if (i === len) { + return true; + } + if (!b(arr[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } + function someU(arr, b) { + var len = arr.length; + var _i = 0; + while (true) { + var i = _i; + if (i === len) { + return false; + } + if (b(arr[i])) { + return true; + } + _i = i + 1 | 0; + continue; + } + ; + } + function mapWithDefaultU(opt, $$default, f) { + if (opt !== void 0) { + return f(valFromOption(opt)); + } else { + return $$default; + } + } + function isSome(param) { + return param !== void 0; + } + function treeHeight(n) { + if (n !== void 0) { + return n.h; + } else { + return 0; + } + } + function create2(l, x, d, r) { + var hl = treeHeight(l); + var hr = treeHeight(r); + return { + k: x, + v: d, + h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, + l, + r + }; + } + function singleton(x, d) { + return { + k: x, + v: d, + h: 1, + l: void 0, + r: void 0 + }; + } + function updateValue(n, newValue) { + if (n.v === newValue) { + return n; + } else { + return { + k: n.k, + v: newValue, + h: n.h, + l: n.l, + r: n.r + }; + } + } + function bal(l, x, d, r) { + var hl = l !== void 0 ? l.h : 0; + var hr = r !== void 0 ? r.h : 0; + if (hl > (hr + 2 | 0)) { + var ll = l.l; + var lr = l.r; + if (treeHeight(ll) >= treeHeight(lr)) { + return create2(ll, l.k, l.v, create2(lr, x, d, r)); + } else { + return create2(create2(ll, l.k, l.v, lr.l), lr.k, lr.v, create2(lr.r, x, d, r)); + } + } + if (hr <= (hl + 2 | 0)) { + return { + k: x, + v: d, + h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0, + l, + r + }; + } + var rl = r.l; + var rr = r.r; + if (treeHeight(rr) >= treeHeight(rl)) { + return create2(create2(l, x, d, rl), r.k, r.v, rr); + } else { + return create2(create2(l, x, d, rl.l), rl.k, rl.v, create2(rl.r, r.k, r.v, rr)); + } + } + function get(_n, x) { + while (true) { + var n = _n; + if (n === void 0) { + return; + } + var v = n.k; + if (x === v) { + return some(n.v); + } + _n = x < v ? n.l : n.r; + continue; + } + ; + } + function set(t, newK, newD) { + if (t === void 0) { + return singleton(newK, newD); + } + var k = t.k; + if (newK === k) { + return updateValue(t, newD); + } + var v = t.v; + if (newK < k) { + return bal(set(t.l, newK, newD), k, v, t.r); + } else { + return bal(t.l, k, v, set(t.r, newK, newD)); + } + } + var get2 = get; + function placeholder(param) { + } + function identity(value) { + return value; + } + var _equals = caml_equal; + function equals() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _equals(data, args[0]); + }; + } + return _equals(arguments[0], arguments[1]); + } + function _both(value, fn0, fn1) { + if (fn0(value)) { + return fn1(value); + } else { + return false; + } + } + function both() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _both(data, args[0], args[1]); + }; + } + return _both(arguments[0], arguments[1], arguments[2]); + } + function _either(value, fn0, fn1) { + if (fn0(value)) { + return true; + } else { + return fn1(value); + } + } + function either() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _either(data, args[0], args[1]); + }; + } + return _either(arguments[0], arguments[1], arguments[2]); + } + function always(value) { + return function() { + return value; + }; + } + function _defaultTo(value, defaultValue) { + if (value == null) { + return defaultValue; + } else { + return value; + } + } + function defaultTo() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _defaultTo(data, args[0]); + }; + } + return _defaultTo(arguments[0], arguments[1]); + } + function falsy() { + return false; + } + function truthy() { + return true; + } + function _ifElse(value, predicateFn, truthyFn, falsyFn) { + if (predicateFn(value)) { + return truthyFn(value); + } else { + return falsyFn(value); + } + } + function ifElse() { + if (arguments.length === 3) { + const args = arguments; + return function fn(data) { + return _ifElse(data, args[0], args[1], args[2]); + }; + } + return _ifElse(arguments[0], arguments[1], arguments[2], arguments[3]); + } + function ignore(param) { + } + function _unless(value, predicateFn, falsyFn) { + if (predicateFn(value)) { + return value; + } else { + return falsyFn(value); + } + } + function unless() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _unless(data, args[0], args[1]); + }; + } + return _unless(arguments[0], arguments[1], arguments[2]); + } + function _when_(value, predicateFn, truthyFn) { + if (predicateFn(value)) { + return truthyFn(value); + } else { + return value; + } + } + function when() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _when_(data, args[0], args[1]); + }; + } + return _when_(arguments[0], arguments[1], arguments[2]); + } + function _allPass(value, fns) { + return everyU(fns, function(fn) { + return fn(value); + }); + } + function allPass() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _allPass(data, args[0]); + }; + } + return _allPass(arguments[0], arguments[1]); + } + function _anyPass(value, fns) { + return someU(fns, function(fn) { + return fn(value); + }); + } + function anyPass() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _anyPass(data, args[0]); + }; + } + return _anyPass(arguments[0], arguments[1]); + } + function _tap(value, fn) { + fn(value); + return value; + } + function tap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tap(data, args[0]); + }; + } + return _tap(arguments[0], arguments[1]); + } + function _makeControlledThrottle(fn, options) { + var isThrottled = { + contents: false + }; + var timer = { + contents: void 0 + }; + var cancel = function(param) { + mapWithDefaultU(timer.contents, void 0, function(timer2) { + clearTimeout(timer2); + }); + timer.contents = void 0; + }; + var invoke = function(...restArgs) { + cancel(void 0); + return fn(...restArgs); + }; + var isScheduled = function(param) { + return isThrottled.contents; + }; + var isLeading = { + contents: options.leading + }; + var make = function(...restArgs) { + if (isLeading.contents) { + isLeading.contents = false; + return fn(...restArgs); + } else { + if (isThrottled.contents) { + return; + } + cancel(void 0); + isThrottled.contents = true; + fn(...restArgs); + var timeout = setTimeout(function(param) { + isThrottled.contents = false; + timer.contents = void 0; + }, options.delay); + timer.contents = some(timeout); + return; + } + }; + return { + cancel, + invoke, + isScheduled, + schedule: make + }; + } + function makeControlledThrottle() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _makeControlledThrottle(data, args[0]); + }; + } + return _makeControlledThrottle(arguments[0], arguments[1]); + } + function _throttle(fn, delay) { + return makeControlledThrottle(fn, { + delay, + leading: false + }).schedule; + } + function throttle() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _throttle(data, args[0]); + }; + } + return _throttle(arguments[0], arguments[1]); + } + function _makeControlledDebounce(fn, options) { + var timer = { + contents: void 0 + }; + var cancel = function(param) { + mapWithDefaultU(timer.contents, void 0, function(timer2) { + clearTimeout(timer2); + }); + timer.contents = void 0; + }; + var invoke = function(...restArgs) { + cancel(void 0); + return fn(...restArgs); + }; + var isScheduled = function(param) { + return isSome(timer.contents); + }; + var isLeading = { + contents: options.leading + }; + var make = function(...restArgs) { + if (isLeading.contents) { + isLeading.contents = false; + return fn(...restArgs); + } else { + cancel(void 0); + var timeout = setTimeout(function(param) { + fn(...restArgs); + timer.contents = void 0; + }, options.delay); + timer.contents = some(timeout); + return; + } + }; + return { + cancel, + invoke, + isScheduled, + schedule: make + }; + } + function makeControlledDebounce() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _makeControlledDebounce(data, args[0]); + }; + } + return _makeControlledDebounce(arguments[0], arguments[1]); + } + function _debounce(fn, delay) { + return makeControlledDebounce(fn, { + delay, + leading: false + }).schedule; + } + function debounce() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _debounce(data, args[0]); + }; + } + return _debounce(arguments[0], arguments[1]); + } + function _tryCatch(value, fn) { + try { + return { + TAG: 0, + _0: fn(value) + }; + } catch (raw_obj) { + var obj = internalToOCamlException(raw_obj); + if (obj.RE_EXN_ID === $$Error$1) { + var message = obj._1.message; + if (message !== void 0) { + return { + TAG: 1, + _0: message + }; + } else { + return { + TAG: 1, + _0: "F.tryCatch: unknown error" + }; + } + } + throw obj; + } + } + function tryCatch() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tryCatch(data, args[0]); + }; + } + return _tryCatch(arguments[0], arguments[1]); + } + function _before(times, fn) { + var count = { + contents: 0 + }; + var lastResult = { + contents: void 0 + }; + return function(...restArgs) { + var result = lastResult.contents; + if (result !== void 0) { + if (count.contents >= times) { + return valFromOption(result); + } + var result$1 = fn(...restArgs); + lastResult.contents = some(result$1); + count.contents = count.contents + 1 | 0; + return result$1; + } + var result$2 = fn(...restArgs); + lastResult.contents = some(result$2); + count.contents = count.contents + 1 | 0; + return result$2; + }; + } + function before() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _before(data, args[0]); + }; + } + return _before(arguments[0], arguments[1]); + } + function _after(times, fn) { + var count = { + contents: 0 + }; + return function(...restArgs) { + if (count.contents < times) { + count.contents = count.contents + 1 | 0; + return; + } else { + return some(fn(...restArgs)); + } + }; + } + function after() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _after(data, args[0]); + }; + } + return _after(arguments[0], arguments[1]); + } + function once(fn) { + var lastResult = { + contents: void 0 + }; + return function(...restArgs) { + var result = lastResult.contents; + if (result !== void 0) { + return valFromOption(result); + } + var result$1 = fn(...restArgs); + lastResult.contents = some(result$1); + return result$1; + }; + } + var memoize = once; + function _memoizeWithKey(makeKeyFn, fn) { + var cache = { + contents: void 0 + }; + return function(...restArgs) { + var key = makeKeyFn(...restArgs); + var result = get2(cache.contents, key); + if (result !== void 0) { + return valFromOption(result); + } + var result$1 = fn(...restArgs); + cache.contents = set(cache.contents, key, result$1); + return result$1; + }; + } + function memoizeWithKey() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _memoizeWithKey(data, args[0]); + }; + } + return _memoizeWithKey(arguments[0], arguments[1]); + } + function toMutable(value) { + return value; + } + function coerce(value) { + return value; + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Array/index.js +var require_Array = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Array/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all2) => { + __markAsModule(target); + for (var name in all2) + __defProp2(target, name, { get: all2[name], enumerable: true }); + }; + __export2(exports2, { + all: () => all, + any: () => any, + append: () => append, + at: () => at, + concat: () => concat22, + concatMany: () => concatMany2, + copy: () => copy, + deepFlat: () => deepFlat, + difference: () => difference, + drop: () => drop, + dropExactly: () => dropExactly, + dropWhile: () => dropWhile, + eq: () => eq, + every: () => every, + filter: () => filter, + filterMap: () => filterMap, + filterWithIndex: () => filterWithIndex, + find: () => find, + flat: () => flat, + flatten: () => flatten, + flip: () => flip, + forEach: () => forEach, + forEachWithIndex: () => forEachWithIndex, + get: () => get3, + getBy: () => getBy, + getIndexBy: () => getIndexBy, + getUndefined: () => getUndefined, + getUnsafe: () => getUnsafe, + groupBy: () => groupBy, + head: () => head, + includes: () => includes, + init: () => init, + initOrEmpty: () => initOrEmpty, + insertAt: () => insertAt, + intersection: () => intersection, + intersperse: () => intersperse, + isEmpty: () => isEmpty, + isNotEmpty: () => isNotEmpty, + join: () => join, + keep: () => keep, + keepMap: () => keepMap, + keepWithIndex: () => keepWithIndex, + last: () => last, + length: () => length, + make: () => make2, + makeEmpty: () => makeEmpty, + makeWithIndex: () => makeWithIndex, + map: () => map, + mapWithIndex: () => mapWithIndex, + partition: () => partition, + placeholder: () => placeholder, + prepend: () => prepend, + prependToAll: () => prependToAll, + range: () => range2, + rangeBy: () => rangeBy2, + reduce: () => reduce, + reduceReverse: () => reduceReverse, + reduceWithIndex: () => reduceWithIndex, + reject: () => reject, + rejectWithIndex: () => rejectWithIndex, + removeAt: () => removeAt, + removeFirst: () => removeFirst, + removeFirstBy: () => removeFirstBy, + repeat: () => repeat, + replaceAt: () => replaceAt, + reverse: () => reverse2, + shuffle: () => shuffle2, + slice: () => slice2, + sliceToEnd: () => sliceToEnd2, + some: () => some2, + sort: () => sort, + sortBy: () => sortBy, + splitAt: () => splitAt, + splitEvery: () => splitEvery, + swapAt: () => swapAt, + tail: () => tail, + tailOrEmpty: () => tailOrEmpty, + take: () => take, + takeExactly: () => takeExactly, + takeWhile: () => takeWhile, + tap: () => tap, + toTuple: () => toTuple, + uncons: () => uncons, + union: () => union, + uniq: () => uniq, + uniqBy: () => uniqBy, + unzip: () => unzip2, + updateAt: () => updateAt, + zip: () => zip2, + zipWith: () => zipWith, + zipWithIndex: () => zipWithIndex + }); + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + function valFromOption(x) { + if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) { + return x; + } + var depth = x.BS_PRIVATE_NESTED_SOME_NONE; + if (depth === 0) { + return; + } else { + return { + BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0 + }; + } + } + function get(dict, k) { + if (k in dict) { + return some(dict[k]); + } + } + function caml_int_compare(x, y) { + if (x < y) { + return -1; + } else if (x === y) { + return 0; + } else { + return 1; + } + } + function caml_bool_compare(x, y) { + if (x) { + if (y) { + return 0; + } else { + return 1; + } + } else if (y) { + return -1; + } else { + return 0; + } + } + function caml_string_compare(s1, s2) { + if (s1 === s2) { + return 0; + } else if (s1 < s2) { + return -1; + } else { + return 1; + } + } + function caml_int_max(x, y) { + if (x > y) { + return x; + } else { + return y; + } + } + var for_in = function(o, foo) { + for (var x in o) { + foo(x); + } + }; + function caml_compare(a, b) { + if (a === b) { + return 0; + } + var a_type = typeof a; + var b_type = typeof b; + switch (a_type) { + case "boolean": + if (b_type === "boolean") { + return caml_bool_compare(a, b); + } + break; + case "function": + if (b_type === "function") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "compare: functional value", + Error: new Error() + }; + } + break; + case "number": + if (b_type === "number") { + return caml_int_compare(a, b); + } + break; + case "string": + if (b_type === "string") { + return caml_string_compare(a, b); + } else { + return 1; + } + case "undefined": + return -1; + default: + } + switch (b_type) { + case "string": + return -1; + case "undefined": + return 1; + default: + if (a_type === "boolean") { + return 1; + } + if (b_type === "boolean") { + return -1; + } + if (a_type === "function") { + return 1; + } + if (b_type === "function") { + return -1; + } + if (a_type === "number") { + if (b === null || b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return 1; + } else { + return -1; + } + } + if (b_type === "number") { + if (a === null || a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return -1; + } else { + return 1; + } + } + if (a === null) { + if (b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return 1; + } else { + return -1; + } + } + if (b === null) { + if (a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return -1; + } else { + return 1; + } + } + if (a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + if (b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return aux_obj_compare(a, b); + } else { + return -1; + } + } + var tag_a = a.TAG | 0; + var tag_b = b.TAG | 0; + if (tag_a === 248) { + return caml_int_compare(a[1], b[1]); + } + if (tag_a === 251) { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: abstract value", + Error: new Error() + }; + } + if (tag_a !== tag_b) { + if (tag_a < tag_b) { + return -1; + } else { + return 1; + } + } + var len_a = a.length | 0; + var len_b = b.length | 0; + if (len_a === len_b) { + if (Array.isArray(a)) { + var _i = 0; + while (true) { + var i = _i; + if (i === len_a) { + return 0; + } + var res = caml_compare(a[i], b[i]); + if (res !== 0) { + return res; + } + _i = i + 1 | 0; + continue; + } + ; + } else if (a instanceof Date && b instanceof Date) { + return a - b; + } else { + return aux_obj_compare(a, b); + } + } else if (len_a < len_b) { + var _i$1 = 0; + while (true) { + var i$1 = _i$1; + if (i$1 === len_a) { + return -1; + } + var res$1 = caml_compare(a[i$1], b[i$1]); + if (res$1 !== 0) { + return res$1; + } + _i$1 = i$1 + 1 | 0; + continue; + } + ; + } else { + var _i$2 = 0; + while (true) { + var i$2 = _i$2; + if (i$2 === len_b) { + return 1; + } + var res$2 = caml_compare(a[i$2], b[i$2]); + if (res$2 !== 0) { + return res$2; + } + _i$2 = i$2 + 1 | 0; + continue; + } + ; + } + } + } + function aux_obj_compare(a, b) { + var min_key_lhs = { + contents: void 0 + }; + var min_key_rhs = { + contents: void 0 + }; + var do_key = function(param, key) { + var min_key = param[2]; + var b2 = param[1]; + if (!(!Object.prototype.hasOwnProperty.call(b2, key) || caml_compare(param[0][key], b2[key]) > 0)) { + return; + } + var mk = min_key.contents; + if (mk !== void 0 && key >= mk) { + return; + } else { + min_key.contents = key; + return; + } + }; + var partial_arg = [ + a, + b, + min_key_rhs + ]; + var do_key_a = function(param) { + return do_key(partial_arg, param); + }; + var partial_arg$1 = [ + b, + a, + min_key_lhs + ]; + var do_key_b = function(param) { + return do_key(partial_arg$1, param); + }; + for_in(a, do_key_a); + for_in(b, do_key_b); + var match = min_key_lhs.contents; + var match$1 = min_key_rhs.contents; + if (match !== void 0) { + if (match$1 !== void 0) { + return caml_string_compare(match, match$1); + } else { + return -1; + } + } else if (match$1 !== void 0) { + return 1; + } else { + return 0; + } + } + function caml_equal(a, b) { + if (a === b) { + return true; + } + var a_type = typeof a; + if (a_type === "string" || a_type === "number" || a_type === "boolean" || a_type === "undefined" || a === null) { + return false; + } + var b_type = typeof b; + if (a_type === "function" || b_type === "function") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: functional value", + Error: new Error() + }; + } + if (b_type === "number" || b_type === "undefined" || b === null) { + return false; + } + var tag_a = a.TAG | 0; + var tag_b = b.TAG | 0; + if (tag_a === 248) { + return a[1] === b[1]; + } + if (tag_a === 251) { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: abstract value", + Error: new Error() + }; + } + if (tag_a !== tag_b) { + return false; + } + var len_a = a.length | 0; + var len_b = b.length | 0; + if (len_a === len_b) { + if (Array.isArray(a)) { + var _i = 0; + while (true) { + var i = _i; + if (i === len_a) { + return true; + } + if (!caml_equal(a[i], b[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } else if (a instanceof Date && b instanceof Date) { + return !(a > b || a < b); + } else { + var result = { + contents: true + }; + var do_key_a = function(key) { + if (!Object.prototype.hasOwnProperty.call(b, key)) { + result.contents = false; + return; + } + }; + var do_key_b = function(key) { + if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) { + result.contents = false; + return; + } + }; + for_in(a, do_key_a); + if (result.contents) { + for_in(b, do_key_b); + } + return result.contents; + } + } else { + return false; + } + } + function caml_lessthan(a, b) { + return caml_compare(a, b) < 0; + } + var max = 2147483647; + var min = -2147483648; + function floor_int(f) { + if (f > max) { + return max; + } else if (f < min) { + return min; + } else { + return Math.floor(f); + } + } + function random_int(min2, max2) { + return floor_int(Math.random() * (max2 - min2 | 0)) + min2 | 0; + } + function get2(arr, i) { + if (i >= 0 && i < arr.length) { + return some(arr[i]); + } + } + function getExn(arr, i) { + if (!(i >= 0 && i < arr.length)) { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "belt_Array.ml", + 27, + 4 + ], + Error: new Error() + }; + } + return arr[i]; + } + function swapUnsafe(xs, i, j) { + var tmp = xs[i]; + xs[i] = xs[j]; + xs[j] = tmp; + } + function shuffleInPlace(xs) { + var len = xs.length; + for (var i = 0; i < len; ++i) { + swapUnsafe(xs, i, random_int(i, len)); + } + } + function shuffle(xs) { + var result = xs.slice(0); + shuffleInPlace(result); + return result; + } + function reverse(xs) { + var len = xs.length; + var result = new Array(len); + for (var i = 0; i < len; ++i) { + result[i] = xs[(len - 1 | 0) - i | 0]; + } + return result; + } + function make(l, f) { + if (l <= 0) { + return []; + } + var res = new Array(l); + for (var i = 0; i < l; ++i) { + res[i] = f; + } + return res; + } + function makeByU(l, f) { + if (l <= 0) { + return []; + } + var res = new Array(l); + for (var i = 0; i < l; ++i) { + res[i] = f(i); + } + return res; + } + function range(start, finish) { + var cut = finish - start | 0; + if (cut < 0) { + return []; + } + var arr = new Array(cut + 1 | 0); + for (var i = 0; i <= cut; ++i) { + arr[i] = start + i | 0; + } + return arr; + } + function rangeBy(start, finish, step) { + var cut = finish - start | 0; + if (cut < 0 || step <= 0) { + return []; + } + var nb = (cut / step | 0) + 1 | 0; + var arr = new Array(nb); + var cur = start; + for (var i = 0; i < nb; ++i) { + arr[i] = cur; + cur = cur + step | 0; + } + return arr; + } + function zip(xs, ys) { + var lenx = xs.length; + var leny = ys.length; + var len = lenx < leny ? lenx : leny; + var s = new Array(len); + for (var i = 0; i < len; ++i) { + s[i] = [ + xs[i], + ys[i] + ]; + } + return s; + } + function zipByU(xs, ys, f) { + var lenx = xs.length; + var leny = ys.length; + var len = lenx < leny ? lenx : leny; + var s = new Array(len); + for (var i = 0; i < len; ++i) { + s[i] = f(xs[i], ys[i]); + } + return s; + } + function concat2(a1, a2) { + var l1 = a1.length; + var l2 = a2.length; + var a1a2 = new Array(l1 + l2 | 0); + for (var i = 0; i < l1; ++i) { + a1a2[i] = a1[i]; + } + for (var i$1 = 0; i$1 < l2; ++i$1) { + a1a2[l1 + i$1 | 0] = a2[i$1]; + } + return a1a2; + } + function concatMany(arrs) { + var lenArrs = arrs.length; + var totalLen = 0; + for (var i = 0; i < lenArrs; ++i) { + totalLen = totalLen + arrs[i].length | 0; + } + var result = new Array(totalLen); + totalLen = 0; + for (var j = 0; j < lenArrs; ++j) { + var cur = arrs[j]; + for (var k = 0, k_finish = cur.length; k < k_finish; ++k) { + result[totalLen] = cur[k]; + totalLen = totalLen + 1 | 0; + } + } + return result; + } + function slice(a, offset, len) { + if (len <= 0) { + return []; + } + var lena = a.length; + var ofs = offset < 0 ? caml_int_max(lena + offset | 0, 0) : offset; + var hasLen = lena - ofs | 0; + var copyLength = hasLen < len ? hasLen : len; + if (copyLength <= 0) { + return []; + } + var result = new Array(copyLength); + for (var i = 0; i < copyLength; ++i) { + result[i] = a[ofs + i | 0]; + } + return result; + } + function sliceToEnd(a, offset) { + var lena = a.length; + var ofs = offset < 0 ? caml_int_max(lena + offset | 0, 0) : offset; + var len = lena - ofs | 0; + var result = new Array(len); + for (var i = 0; i < len; ++i) { + result[i] = a[ofs + i | 0]; + } + return result; + } + function blitUnsafe(a1, srcofs1, a2, srcofs2, blitLength) { + if (srcofs2 <= srcofs1) { + for (var j = 0; j < blitLength; ++j) { + a2[j + srcofs2 | 0] = a1[j + srcofs1 | 0]; + } + return; + } + for (var j$1 = blitLength - 1 | 0; j$1 >= 0; --j$1) { + a2[j$1 + srcofs2 | 0] = a1[j$1 + srcofs1 | 0]; + } + } + function forEachU(a, f) { + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + f(a[i]); + } + } + function mapU(a, f) { + var l = a.length; + var r = new Array(l); + for (var i = 0; i < l; ++i) { + r[i] = f(a[i]); + } + return r; + } + function getByU(a, p) { + var l = a.length; + var i = 0; + var r; + while (r === void 0 && i < l) { + var v = a[i]; + if (p(v)) { + r = some(v); + } + i = i + 1 | 0; + } + ; + return r; + } + function getIndexByU(a, p) { + var l = a.length; + var i = 0; + var r; + while (r === void 0 && i < l) { + var v = a[i]; + if (p(v)) { + r = i; + } + i = i + 1 | 0; + } + ; + return r; + } + function keepMapU(a, f) { + var l = a.length; + var r = new Array(l); + var j = 0; + for (var i = 0; i < l; ++i) { + var v = a[i]; + var v$1 = f(v); + if (v$1 !== void 0) { + r[j] = valFromOption(v$1); + j = j + 1 | 0; + } + } + r.length = j; + return r; + } + function forEachWithIndexU(a, f) { + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + f(i, a[i]); + } + } + function mapWithIndexU(a, f) { + var l = a.length; + var r = new Array(l); + for (var i = 0; i < l; ++i) { + r[i] = f(i, a[i]); + } + return r; + } + function reduceU(a, x, f) { + var r = x; + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + r = f(r, a[i]); + } + return r; + } + function reduceReverseU(a, x, f) { + var r = x; + for (var i = a.length - 1 | 0; i >= 0; --i) { + r = f(r, a[i]); + } + return r; + } + function reduceWithIndexU(a, x, f) { + var r = x; + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + r = f(r, a[i], i); + } + return r; + } + function everyU(arr, b) { + var len = arr.length; + var _i = 0; + while (true) { + var i = _i; + if (i === len) { + return true; + } + if (!b(arr[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } + function someU(arr, b) { + var len = arr.length; + var _i = 0; + while (true) { + var i = _i; + if (i === len) { + return false; + } + if (b(arr[i])) { + return true; + } + _i = i + 1 | 0; + continue; + } + ; + } + function everyAux2(arr1, arr2, _i, b, len) { + while (true) { + var i = _i; + if (i === len) { + return true; + } + if (!b(arr1[i], arr2[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } + function eqU(a, b, p) { + var lena = a.length; + var lenb = b.length; + if (lena === lenb) { + return everyAux2(a, b, 0, p, lena); + } else { + return false; + } + } + function partitionU(a, f) { + var l = a.length; + var i = 0; + var j = 0; + var a1 = new Array(l); + var a2 = new Array(l); + for (var ii = 0; ii < l; ++ii) { + var v = a[ii]; + if (f(v)) { + a1[i] = v; + i = i + 1 | 0; + } else { + a2[j] = v; + j = j + 1 | 0; + } + } + a1.length = i; + a2.length = j; + return [ + a1, + a2 + ]; + } + function unzip(a) { + var l = a.length; + var a1 = new Array(l); + var a2 = new Array(l); + for (var i = 0; i < l; ++i) { + var match = a[i]; + a1[i] = match[0]; + a2[i] = match[1]; + } + return [ + a1, + a2 + ]; + } + function merge(src, src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs, cmp) { + var src1r = src1ofs + src1len | 0; + var src2r = src2ofs + src2len | 0; + var _i1 = src1ofs; + var _s1 = src[src1ofs]; + var _i2 = src2ofs; + var _s2 = src2[src2ofs]; + var _d = dstofs; + while (true) { + var d = _d; + var s2 = _s2; + var i2 = _i2; + var s1 = _s1; + var i1 = _i1; + if (cmp(s1, s2) <= 0) { + dst[d] = s1; + var i1$1 = i1 + 1 | 0; + if (i1$1 >= src1r) { + return blitUnsafe(src2, i2, dst, d + 1 | 0, src2r - i2 | 0); + } + _d = d + 1 | 0; + _s1 = src[i1$1]; + _i1 = i1$1; + continue; + } + dst[d] = s2; + var i2$1 = i2 + 1 | 0; + if (i2$1 >= src2r) { + return blitUnsafe(src, i1, dst, d + 1 | 0, src1r - i1 | 0); + } + _d = d + 1 | 0; + _s2 = src2[i2$1]; + _i2 = i2$1; + continue; + } + ; + } + function insertionSort(src, srcofs, dst, dstofs, len, cmp) { + for (var i = 0; i < len; ++i) { + var e = src[srcofs + i | 0]; + var j = (dstofs + i | 0) - 1 | 0; + while (j >= dstofs && cmp(dst[j], e) > 0) { + dst[j + 1 | 0] = dst[j]; + j = j - 1 | 0; + } + ; + dst[j + 1 | 0] = e; + } + } + function sortTo(src, srcofs, dst, dstofs, len, cmp) { + if (len <= 5) { + return insertionSort(src, srcofs, dst, dstofs, len, cmp); + } + var l1 = len / 2 | 0; + var l2 = len - l1 | 0; + sortTo(src, srcofs + l1 | 0, dst, dstofs + l1 | 0, l2, cmp); + sortTo(src, srcofs, src, srcofs + l2 | 0, l1, cmp); + return merge(src, srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs, cmp); + } + function stableSortInPlaceByU(a, cmp) { + var l = a.length; + if (l <= 5) { + return insertionSort(a, 0, a, 0, l, cmp); + } + var l1 = l / 2 | 0; + var l2 = l - l1 | 0; + var t = new Array(l2); + sortTo(a, l1, t, 0, l2, cmp); + sortTo(a, 0, a, l2, l1, cmp); + return merge(a, l2, l1, t, 0, l2, a, 0, cmp); + } + function stableSortByU(a, cmp) { + var b = a.slice(0); + stableSortInPlaceByU(b, cmp); + return b; + } + function placeholder(param) { + } + function makeEmpty(param) { + return []; + } + var _makeWithIndex = makeByU; + function makeWithIndex() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _makeWithIndex(data, args[0]); + }; + } + return _makeWithIndex(arguments[0], arguments[1]); + } + var _make = make; + function make2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _make(data, args[0]); + }; + } + return _make(arguments[0], arguments[1]); + } + var _repeat = make; + function repeat() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _repeat(data, args[0]); + }; + } + return _repeat(arguments[0], arguments[1]); + } + function length(xs) { + return xs.length; + } + function isEmpty(xs) { + return xs.length === 0; + } + function isNotEmpty(xs) { + return xs.length !== 0; + } + var reverse2 = reverse; + function _append(xs, element) { + return concat2(xs, [element]); + } + function append() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _append(data, args[0]); + }; + } + return _append(arguments[0], arguments[1]); + } + function _prepend(xs, element) { + return concat2([element], xs); + } + function prepend() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _prepend(data, args[0]); + }; + } + return _prepend(arguments[0], arguments[1]); + } + function _prependToAll(xs, delimiter) { + return reduceU(xs, [], function(acc, value) { + return concat2(acc, [ + delimiter, + value + ]); + }); + } + function prependToAll() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _prependToAll(data, args[0]); + }; + } + return _prependToAll(arguments[0], arguments[1]); + } + function _intersperse(xs, delimiter) { + return reduceWithIndexU(xs, [], function(acc, value, index) { + if ((xs.length - 1 | 0) === index) { + acc.push(value); + } else { + acc.push(value, delimiter); + } + return acc; + }); + } + function intersperse() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _intersperse(data, args[0]); + }; + } + return _intersperse(arguments[0], arguments[1]); + } + var _get = get2; + function get3() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _get(data, args[0]); + }; + } + return _get(arguments[0], arguments[1]); + } + var _at = get2; + function at() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _at(data, args[0]); + }; + } + return _at(arguments[0], arguments[1]); + } + function _getUnsafe(xs, index) { + return xs[index]; + } + function getUnsafe() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getUnsafe(data, args[0]); + }; + } + return _getUnsafe(arguments[0], arguments[1]); + } + function _getUndefined(xs, index) { + return xs[index]; + } + function getUndefined() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getUndefined(data, args[0]); + }; + } + return _getUndefined(arguments[0], arguments[1]); + } + var _getBy = getByU; + function getBy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getBy(data, args[0]); + }; + } + return _getBy(arguments[0], arguments[1]); + } + var _find = getByU; + function find() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _find(data, args[0]); + }; + } + return _find(arguments[0], arguments[1]); + } + function head(xs) { + return get2(xs, 0); + } + function last(xs) { + var l = xs.length; + if (l === 0) { + return; + } else { + return get2(xs, l - 1 | 0); + } + } + function tail(xs) { + var l = xs.length; + if (l === 1) { + return []; + } + if (l === 0) { + return; + } + var xs$1 = sliceToEnd(xs, 1); + if (xs$1.length !== 0) { + return xs$1; + } + } + function tailOrEmpty(xs) { + var xs$1 = tail(xs); + if (xs$1 !== void 0) { + return xs$1; + } else { + return []; + } + } + function init(xs) { + var l = xs.length; + if (l === 0) { + return; + } else { + return slice(xs, 0, l - 1 | 0); + } + } + function initOrEmpty(xs) { + var xs$1 = init(xs); + if (xs$1 !== void 0) { + return xs$1; + } else { + return []; + } + } + function _take(xs, n) { + var l = xs.length; + var len = n < 0 ? 0 : l < n ? l : n; + return slice(xs, 0, len); + } + function take() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _take(data, args[0]); + }; + } + return _take(arguments[0], arguments[1]); + } + function _takeExactly(xs, n) { + if (n < 0 || n > xs.length) { + return; + } else { + return slice(xs, 0, n); + } + } + function takeExactly() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _takeExactly(data, args[0]); + }; + } + return _takeExactly(arguments[0], arguments[1]); + } + function _takeWhile(xs, predicateFn) { + return reduceU(xs, [], function(acc, element) { + if (predicateFn(element)) { + acc.push(element); + } + return acc; + }); + } + function takeWhile() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _takeWhile(data, args[0]); + }; + } + return _takeWhile(arguments[0], arguments[1]); + } + function _drop(xs, n) { + var l = xs.length; + var start = n < 0 ? 0 : l < n ? l : n; + return sliceToEnd(xs, start); + } + function drop() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _drop(data, args[0]); + }; + } + return _drop(arguments[0], arguments[1]); + } + function _dropExactly(xs, n) { + if (n < 0 || n > xs.length) { + return; + } else { + return sliceToEnd(xs, n); + } + } + function dropExactly() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _dropExactly(data, args[0]); + }; + } + return _dropExactly(arguments[0], arguments[1]); + } + function _dropWhile(xs, predicateFn) { + return reduceU(xs, [], function(acc, element) { + if (!predicateFn(element)) { + acc.push(element); + } + return acc; + }); + } + function dropWhile() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _dropWhile(data, args[0]); + }; + } + return _dropWhile(arguments[0], arguments[1]); + } + function uncons(xs) { + if (xs.length !== 0) { + return [ + getExn(xs, 0), + sliceToEnd(xs, 1) + ]; + } + } + function _map(xs, mapFn) { + return mapU(xs, mapFn); + } + function map() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _map(data, args[0]); + }; + } + return _map(arguments[0], arguments[1]); + } + var _mapWithIndex = mapWithIndexU; + function mapWithIndex() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _mapWithIndex(data, args[0]); + }; + } + return _mapWithIndex(arguments[0], arguments[1]); + } + function _filter(xs, predicateFn) { + var index = 0; + var arr = []; + while (index < xs.length) { + var value = xs[index]; + if (predicateFn(value)) { + arr.push(value); + } + index = index + 1 | 0; + } + ; + return arr; + } + function filter() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filter(data, args[0]); + }; + } + return _filter(arguments[0], arguments[1]); + } + var keep = filter; + function _filterWithIndex(xs, predicateFn) { + var index = 0; + var arr = []; + while (index < xs.length) { + var value = xs[index]; + if (predicateFn(index, value)) { + arr.push(value); + } + index = index + 1 | 0; + } + ; + return arr; + } + function filterWithIndex() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filterWithIndex(data, args[0]); + }; + } + return _filterWithIndex(arguments[0], arguments[1]); + } + var keepWithIndex = filterWithIndex; + function _reject(xs, predicateFn) { + return filter(xs, function(el) { + return !predicateFn(el); + }); + } + function reject() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _reject(data, args[0]); + }; + } + return _reject(arguments[0], arguments[1]); + } + function _rejectWithIndex(xs, predicateFn) { + return filterWithIndex(xs, function(index, el) { + return !predicateFn(index, el); + }); + } + function rejectWithIndex() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _rejectWithIndex(data, args[0]); + }; + } + return _rejectWithIndex(arguments[0], arguments[1]); + } + var _reduce = reduceU; + function reduce() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _reduce(data, args[0], args[1]); + }; + } + return _reduce(arguments[0], arguments[1], arguments[2]); + } + var _reduceReverse = reduceReverseU; + function reduceReverse() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _reduceReverse(data, args[0], args[1]); + }; + } + return _reduceReverse(arguments[0], arguments[1], arguments[2]); + } + var _reduceWithIndex = reduceWithIndexU; + function reduceWithIndex() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _reduceWithIndex(data, args[0], args[1]); + }; + } + return _reduceWithIndex(arguments[0], arguments[1], arguments[2]); + } + function _splitAt(xs, offset) { + if (offset < 0 || offset > xs.length) { + return; + } else { + return [ + slice(xs, 0, offset), + sliceToEnd(xs, offset) + ]; + } + } + function splitAt() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _splitAt(data, args[0]); + }; + } + return _splitAt(arguments[0], arguments[1]); + } + function _splitEvery(xs, size) { + if (size < 1 || xs.length <= size) { + return [xs]; + } + var offset = 0; + var arr = []; + while (offset < xs.length) { + var len = offset + size | 0; + arr.push(slice(xs, offset, size)); + offset = len; + } + ; + return arr; + } + function splitEvery() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _splitEvery(data, args[0]); + }; + } + return _splitEvery(arguments[0], arguments[1]); + } + var shuffle2 = shuffle; + var _partition = partitionU; + function partition() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _partition(data, args[0]); + }; + } + return _partition(arguments[0], arguments[1]); + } + var _concat = concat2; + function concat22() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _concat(data, args[0]); + }; + } + return _concat(arguments[0], arguments[1]); + } + var concatMany2 = concatMany; + var _every = everyU; + function every() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _every(data, args[0]); + }; + } + return _every(arguments[0], arguments[1]); + } + var _some = someU; + function some2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _some(data, args[0]); + }; + } + return _some(arguments[0], arguments[1]); + } + var _slice = slice; + function slice2() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _slice(data, args[0], args[1]); + }; + } + return _slice(arguments[0], arguments[1], arguments[2]); + } + var _sliceToEnd = sliceToEnd; + function sliceToEnd2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _sliceToEnd(data, args[0]); + }; + } + return _sliceToEnd(arguments[0], arguments[1]); + } + var _eq = eqU; + function eq() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _eq(data, args[0], args[1]); + }; + } + return _eq(arguments[0], arguments[1], arguments[2]); + } + var _range = range; + function range2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _range(data, args[0]); + }; + } + return _range(arguments[0], arguments[1]); + } + var _rangeBy = rangeBy; + function rangeBy2() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _rangeBy(data, args[0], args[1]); + }; + } + return _rangeBy(arguments[0], arguments[1], arguments[2]); + } + function copy(xs) { + return xs.slice(0); + } + var _zip = zip; + function zip2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _zip(data, args[0]); + }; + } + return _zip(arguments[0], arguments[1]); + } + var _zipWith = zipByU; + function zipWith() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _zipWith(data, args[0], args[1]); + }; + } + return _zipWith(arguments[0], arguments[1], arguments[2]); + } + var unzip2 = unzip; + function _replaceAt(xs, targetIndex, element) { + return mapWithIndexU(xs, function(currentIndex, current) { + if (currentIndex === targetIndex) { + return element; + } else { + return current; + } + }); + } + function replaceAt() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _replaceAt(data, args[0], args[1]); + }; + } + return _replaceAt(arguments[0], arguments[1], arguments[2]); + } + function _insertAt(xs, targetIndex, element) { + var match = splitAt(xs, targetIndex); + if (match !== void 0) { + return concat2(match[0], concat2([element], match[1])); + } else { + return xs; + } + } + function insertAt() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _insertAt(data, args[0], args[1]); + }; + } + return _insertAt(arguments[0], arguments[1], arguments[2]); + } + function _updateAt(xs, targetIndex, fn) { + return mapWithIndexU(xs, function(index, el) { + if (index === targetIndex) { + return fn(el); + } else { + return el; + } + }); + } + function updateAt() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _updateAt(data, args[0], args[1]); + }; + } + return _updateAt(arguments[0], arguments[1], arguments[2]); + } + function _swapAt(xs, targetIndex, swapIndex) { + var match = get2(xs, targetIndex); + var match$1 = get2(xs, swapIndex); + if (match === void 0) { + return xs; + } + if (match$1 === void 0) { + return xs; + } + var b = valFromOption(match$1); + var a = valFromOption(match); + return mapWithIndexU(xs, function(k, x) { + if (targetIndex === k) { + return b; + } else if (swapIndex === k) { + return a; + } else { + return x; + } + }); + } + function swapAt() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _swapAt(data, args[0], args[1]); + }; + } + return _swapAt(arguments[0], arguments[1], arguments[2]); + } + function _removeAt(xs, targetIndex) { + return filterWithIndex(xs, function(index, param) { + return index !== targetIndex; + }); + } + function removeAt() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _removeAt(data, args[0]); + }; + } + return _removeAt(arguments[0], arguments[1]); + } + function _uniqBy(xs, uniqFn) { + var index = 0; + var arr = []; + while (index < xs.length) { + var value = xs[index]; + var alreadyAdded = someU(arr, /* @__PURE__ */ function(value2) { + return function(x) { + return caml_equal(uniqFn(x), uniqFn(value2)); + }; + }(value)); + if (!alreadyAdded) { + arr.push(value); + } + index = index + 1 | 0; + } + ; + return arr; + } + function uniqBy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _uniqBy(data, args[0]); + }; + } + return _uniqBy(arguments[0], arguments[1]); + } + function uniq(xs) { + return uniqBy(xs, function(element) { + return element; + }); + } + var _forEach = forEachU; + function forEach() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _forEach(data, args[0]); + }; + } + return _forEach(arguments[0], arguments[1]); + } + var _forEachWithIndex = forEachWithIndexU; + function forEachWithIndex() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _forEachWithIndex(data, args[0]); + }; + } + return _forEachWithIndex(arguments[0], arguments[1]); + } + var _getIndexBy = getIndexByU; + function getIndexBy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getIndexBy(data, args[0]); + }; + } + return _getIndexBy(arguments[0], arguments[1]); + } + function _includes(xs, value) { + return someU(xs, function(x) { + return caml_equal(x, value); + }); + } + function includes() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _includes(data, args[0]); + }; + } + return _includes(arguments[0], arguments[1]); + } + function _join(xs, delimiter) { + return xs.join(delimiter); + } + function join() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _join(data, args[0]); + }; + } + return _join(arguments[0], arguments[1]); + } + var _sort = stableSortByU; + function sort() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _sort(data, args[0]); + }; + } + return _sort(arguments[0], arguments[1]); + } + function _sortBy(xs, sortFn) { + return stableSortByU(xs, function(a, b) { + var a$1 = sortFn(a); + var b$1 = sortFn(b); + if (a$1 === b$1) { + return 0; + } else if (caml_lessthan(a$1, b$1)) { + return -1; + } else { + return 1; + } + }); + } + function sortBy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _sortBy(data, args[0]); + }; + } + return _sortBy(arguments[0], arguments[1]); + } + function _groupBy(xs, groupFn) { + return reduceU(xs, {}, function(acc, element) { + var key = groupFn(element); + var value = get(acc, key); + if (value !== void 0) { + value.push(element); + } else { + acc[key] = [element]; + } + return acc; + }); + } + function groupBy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _groupBy(data, args[0]); + }; + } + return _groupBy(arguments[0], arguments[1]); + } + function flat(xs) { + return reduceU(xs, [], function(acc, value) { + if (Array.isArray(value)) { + forEachU(value, function(element) { + acc.push(element); + }); + } else { + acc.push(value); + } + return acc; + }); + } + function _flatten(xs, arr) { + var index = 0; + while (index < xs.length) { + var value = xs[index]; + if (Array.isArray(value)) { + flatten(value, arr); + } else { + arr.push(value); + } + index = index + 1 | 0; + } + ; + return arr; + } + function flatten() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _flatten(data, args[0]); + }; + } + return _flatten(arguments[0], arguments[1]); + } + function deepFlat(xs) { + return flatten(xs, []); + } + function toTuple(xs) { + return xs; + } + function _tap(xs, fn) { + forEachU(xs, fn); + return xs; + } + function tap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tap(data, args[0]); + }; + } + return _tap(arguments[0], arguments[1]); + } + function flip(xs) { + return [ + xs[1], + xs[0] + ]; + } + var _filterMap = keepMapU; + function filterMap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filterMap(data, args[0]); + }; + } + return _filterMap(arguments[0], arguments[1]); + } + var _keepMap = keepMapU; + function keepMap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _keepMap(data, args[0]); + }; + } + return _keepMap(arguments[0], arguments[1]); + } + function _removeFirstBy(xs, value, predicateFn) { + return reduceU(xs, [ + false, + [] + ], function(acc, v) { + var ys = acc[1]; + if (acc[0]) { + ys.push(v); + return [ + true, + ys + ]; + } else if (predicateFn(v, value)) { + return [ + true, + ys + ]; + } else { + ys.push(v); + return [ + false, + ys + ]; + } + })[1]; + } + function removeFirstBy() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _removeFirstBy(data, args[0], args[1]); + }; + } + return _removeFirstBy(arguments[0], arguments[1], arguments[2]); + } + function _removeFirst(xs, value) { + return removeFirstBy(xs, value, caml_equal); + } + function removeFirst() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _removeFirst(data, args[0]); + }; + } + return _removeFirst(arguments[0], arguments[1]); + } + function zipWithIndex(xs) { + return reduceWithIndexU(xs, [], function(acc, value, index) { + acc.push([ + value, + index + ]); + return acc; + }); + } + function _all(xs, predicateFn) { + return everyU(xs, predicateFn); + } + function all() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _all(data, args[0]); + }; + } + return _all(arguments[0], arguments[1]); + } + function _any(xs, predicateFn) { + return someU(xs, predicateFn); + } + function any() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _any(data, args[0]); + }; + } + return _any(arguments[0], arguments[1]); + } + function _difference(xs, ys) { + return reject(uniqBy(xs, function(element) { + return element; + }), function(value) { + return includes(ys, value); + }); + } + function difference() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _difference(data, args[0]); + }; + } + return _difference(arguments[0], arguments[1]); + } + function _union(xs, ys) { + var xs$1 = concat2(xs, ys); + return uniqBy(xs$1, function(element) { + return element; + }); + } + function union() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _union(data, args[0]); + }; + } + return _union(arguments[0], arguments[1]); + } + function _intersection(xs, ys) { + var match = xs.length > ys.length ? [ + xs, + ys + ] : [ + ys, + xs + ]; + var ys$1 = match[1]; + var xs$1 = filter(match[0], function(value) { + return includes(ys$1, value); + }); + return uniqBy(xs$1, function(element) { + return element; + }); + } + function intersection() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _intersection(data, args[0]); + }; + } + return _intersection(arguments[0], arguments[1]); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Result/index.js +var require_Result = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Result/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + Error: () => Error2, + Ok: () => Ok, + catchError: () => catchError, + flatMap: () => flatMap2, + flip: () => flip, + fromExecution: () => fromExecution, + fromFalsy: () => fromFalsy, + fromNullable: () => fromNullable, + fromPredicate: () => fromPredicate, + fromPromise: () => fromPromise, + getExn: () => getExn2, + getWithDefault: () => getWithDefault2, + handleError: () => handleError, + isError: () => isError2, + isOk: () => isOk2, + map: () => map, + mapError: () => mapError, + mapWithDefault: () => mapWithDefault, + match: () => match, + placeholder: () => placeholder, + recover: () => recover, + tap: () => tap, + tapError: () => tapError, + toNullable: () => toNullable, + toOption: () => toOption, + toUndefined: () => toUndefined + }); + function sub(x, offset, len) { + var result = new Array(len); + var j = 0; + var i = offset; + while (j < len) { + result[j] = x[i]; + j = j + 1 | 0; + i = i + 1 | 0; + } + ; + return result; + } + function app(_f, _args) { + while (true) { + var args = _args; + var f = _f; + var init_arity = f.length; + var arity = init_arity === 0 ? 1 : init_arity; + var len = args.length; + var d = arity - len | 0; + if (d === 0) { + return f.apply(null, args); + } + if (d >= 0) { + return /* @__PURE__ */ function(f2, args2) { + return function(x) { + return app(f2, args2.concat([x])); + }; + }(f, args); + } + _args = sub(args, arity, -d | 0); + _f = f.apply(null, sub(args, 0, arity)); + continue; + } + ; + } + function _1(o, a0) { + var arity = o.length; + if (arity === 1) { + return o(a0); + } else { + switch (arity) { + case 1: + return o(a0); + case 2: + return function(param) { + return o(a0, param); + }; + case 3: + return function(param, param$1) { + return o(a0, param, param$1); + }; + case 4: + return function(param, param$1, param$2) { + return o(a0, param, param$1, param$2); + }; + case 5: + return function(param, param$1, param$2, param$3) { + return o(a0, param, param$1, param$2, param$3); + }; + case 6: + return function(param, param$1, param$2, param$3, param$4) { + return o(a0, param, param$1, param$2, param$3, param$4); + }; + case 7: + return function(param, param$1, param$2, param$3, param$4, param$5) { + return o(a0, param, param$1, param$2, param$3, param$4, param$5); + }; + default: + return app(o, [a0]); + } + } + } + function __1(o) { + var arity = o.length; + if (arity === 1) { + return o; + } else { + return function(a0) { + return _1(o, a0); + }; + } + } + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + var id = { + contents: 0 + }; + function create(str) { + id.contents = id.contents + 1 | 0; + return str + ("/" + id.contents); + } + function caml_is_extension(e) { + if (e == null) { + return false; + } else { + return typeof e.RE_EXN_ID === "string"; + } + } + var $$Error = /* @__PURE__ */ create("Caml_js_exceptions.Error"); + function internalToOCamlException(e) { + if (caml_is_extension(e)) { + return e; + } else { + return { + RE_EXN_ID: $$Error, + _1: e + }; + } + } + var $$Error$1 = $$Error; + function getExn(x) { + if (x.TAG === 0) { + return x._0; + } + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + function mapWithDefaultU(opt, $$default, f) { + if (opt.TAG === 0) { + return f(opt._0); + } else { + return $$default; + } + } + function mapU(opt, f) { + if (opt.TAG === 0) { + return { + TAG: 0, + _0: f(opt._0) + }; + } else { + return { + TAG: 1, + _0: opt._0 + }; + } + } + function flatMapU(opt, f) { + if (opt.TAG === 0) { + return f(opt._0); + } else { + return { + TAG: 1, + _0: opt._0 + }; + } + } + function flatMap(opt, f) { + return flatMapU(opt, __1(f)); + } + function getWithDefault(opt, $$default) { + if (opt.TAG === 0) { + return opt._0; + } else { + return $$default; + } + } + function isOk(param) { + if (param.TAG === 0) { + return true; + } else { + return false; + } + } + function isError(param) { + if (param.TAG === 0) { + return false; + } else { + return true; + } + } + function placeholder(param) { + } + function _fromNullable(value, errorValue) { + if (value == null) { + return { + TAG: 1, + _0: errorValue + }; + } else { + return { + TAG: 0, + _0: value + }; + } + } + function fromNullable() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _fromNullable(data, args[0]); + }; + } + return _fromNullable(arguments[0], arguments[1]); + } + function _fromFalsy(value, errorValue) { + if (value) { + return { + TAG: 0, + _0: value + }; + } else { + return { + TAG: 1, + _0: errorValue + }; + } + } + function fromFalsy() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _fromFalsy(data, args[0]); + }; + } + return _fromFalsy(arguments[0], arguments[1]); + } + function _fromPredicate(value, predicateFn, errorValue) { + return flatMap(fromNullable(value, errorValue), function(value2) { + if (predicateFn(value2)) { + return { + TAG: 0, + _0: value2 + }; + } else { + return { + TAG: 1, + _0: errorValue + }; + } + }); + } + function fromPredicate() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _fromPredicate(data, args[0], args[1]); + }; + } + return _fromPredicate(arguments[0], arguments[1], arguments[2]); + } + function fromExecution(fn) { + try { + return { + TAG: 0, + _0: fn(void 0) + }; + } catch (raw_err) { + var err2 = internalToOCamlException(raw_err); + if (err2.RE_EXN_ID === $$Error$1) { + return { + TAG: 1, + _0: err2._1 + }; + } + throw err2; + } + } + function fromPromise(promise) { + var __x = promise.then(function(value) { + return Promise.resolve({ + TAG: 0, + _0: value + }); + }); + return __x.catch(function(err2) { + return Promise.resolve({ + TAG: 1, + _0: err2 + }); + }); + } + var _map = mapU; + function map() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _map(data, args[0]); + }; + } + return _map(arguments[0], arguments[1]); + } + var _mapWithDefault = mapWithDefaultU; + function mapWithDefault() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _mapWithDefault(data, args[0], args[1]); + }; + } + return _mapWithDefault(arguments[0], arguments[1], arguments[2]); + } + var _flatMap = flatMapU; + function flatMap2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _flatMap(data, args[0]); + }; + } + return _flatMap(arguments[0], arguments[1]); + } + var getExn2 = getExn; + var _getWithDefault = getWithDefault; + function getWithDefault2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getWithDefault(data, args[0]); + }; + } + return _getWithDefault(arguments[0], arguments[1]); + } + function toUndefined(result) { + return getWithDefault(result, void 0); + } + function toNullable(result) { + return getWithDefault(result, null); + } + function toOption(result) { + if (result.TAG === 0) { + return some(result._0); + } + } + function _match(result, okFn, errorFn) { + if (result.TAG === 0) { + return okFn(result._0); + } else { + return errorFn(result._0); + } + } + function match() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _match(data, args[0], args[1]); + }; + } + return _match(arguments[0], arguments[1], arguments[2]); + } + var isError2 = isError; + var isOk2 = isOk; + function _tap(result, okFn) { + if (result.TAG !== 0) { + return result; + } + okFn(result._0); + return result; + } + function tap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tap(data, args[0]); + }; + } + return _tap(arguments[0], arguments[1]); + } + function _tapError(result, errorFn) { + if (result.TAG === 0) { + return result; + } + errorFn(result._0); + return result; + } + function tapError() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tapError(data, args[0]); + }; + } + return _tapError(arguments[0], arguments[1]); + } + function _handleError(result, mapFn) { + if (result.TAG === 0) { + return result; + } else { + return { + TAG: 0, + _0: mapFn(result._0) + }; + } + } + function handleError() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _handleError(data, args[0]); + }; + } + return _handleError(arguments[0], arguments[1]); + } + function _mapError(result, mapFn) { + if (result.TAG === 0) { + return result; + } else { + return { + TAG: 1, + _0: mapFn(result._0) + }; + } + } + function mapError() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _mapError(data, args[0]); + }; + } + return _mapError(arguments[0], arguments[1]); + } + function _catchError(result, mapFn) { + if (result.TAG === 0) { + return result; + } else { + return mapFn(result._0); + } + } + function catchError() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _catchError(data, args[0]); + }; + } + return _catchError(arguments[0], arguments[1]); + } + function _recover(result, defaultValue) { + return catchError(result, function(param) { + return { + TAG: 0, + _0: defaultValue + }; + }); + } + function recover() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _recover(data, args[0]); + }; + } + return _recover(arguments[0], arguments[1]); + } + function flip(result) { + if (result.TAG === 0) { + return { + TAG: 1, + _0: result._0 + }; + } else { + return { + TAG: 0, + _0: result._0 + }; + } + } + var Ok = (value) => { + return { + TAG: 0, + _0: value + }; + }; + var Error2 = (value) => { + return { + TAG: 1, + _0: value + }; + }; + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Guards/index.js +var require_Guards = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Guards/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + is: () => is, + isArray: () => isArray, + isBoolean: () => isBoolean, + isDate: () => isDate, + isError: () => isError, + isFunction: () => isFunction, + isNot: () => isNot, + isNotNullable: () => isNotNullable, + isNull: () => isNull, + isNullable: () => isNullable, + isNumber: () => isNumber, + isObject: () => isObject, + isPromise: () => isPromise, + isString: () => isString, + isUndefined: () => isUndefined + }); + function _is(value, type_) { + return typeof value === type_; + } + function is() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _is(data, args[0]); + }; + } + return _is(arguments[0], arguments[1]); + } + function isString(value) { + return typeof value === "string"; + } + function isNumber(value) { + if (typeof value === "number") { + return !Number.isNaN(value); + } else { + return false; + } + } + function isBoolean(value) { + return typeof value === "boolean"; + } + var isPromise = (value) => value instanceof Promise; + function isArray(value) { + return Array.isArray(value); + } + function isObject(value) { + if (!!value && !Array.isArray(value)) { + return typeof value === "object"; + } else { + return false; + } + } + function isFunction(value) { + return typeof value === "function"; + } + var isError = (value) => value instanceof Error; + var isDate = (value) => value instanceof Date; + function isNullable(value) { + return value == null; + } + function isNotNullable(value) { + return !(value == null); + } + var isNull = (value) => value === null; + var isUndefined = (value) => value === void 0; + function _isNot(value, predicateFn) { + return !predicateFn(value); + } + function isNot() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _isNot(data, args[0]); + }; + } + return _isNot(arguments[0], arguments[1]); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Option/index.js +var require_Option = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Option/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + None: () => None, + Some: () => Some, + contains: () => contains, + filter: () => filter, + flatMap: () => flatMap2, + fromExecution: () => fromExecution, + fromFalsy: () => fromFalsy, + fromNullable: () => fromNullable, + fromPredicate: () => fromPredicate, + fromPromise: () => fromPromise, + getExn: () => getExn2, + getWithDefault: () => getWithDefault2, + isNone: () => isNone2, + isSome: () => isSome2, + map: () => map, + mapNullable: () => mapNullable, + mapWithDefault: () => mapWithDefault, + match: () => match, + placeholder: () => placeholder, + tap: () => tap, + toNullable: () => toNullable, + toResult: () => toResult, + toUndefined: () => toUndefined, + zip: () => zip, + zipWith: () => zipWith + }); + function sub(x, offset, len) { + var result = new Array(len); + var j = 0; + var i = offset; + while (j < len) { + result[j] = x[i]; + j = j + 1 | 0; + i = i + 1 | 0; + } + ; + return result; + } + function app(_f, _args) { + while (true) { + var args = _args; + var f = _f; + var init_arity = f.length; + var arity = init_arity === 0 ? 1 : init_arity; + var len = args.length; + var d = arity - len | 0; + if (d === 0) { + return f.apply(null, args); + } + if (d >= 0) { + return /* @__PURE__ */ function(f2, args2) { + return function(x) { + return app(f2, args2.concat([x])); + }; + }(f, args); + } + _args = sub(args, arity, -d | 0); + _f = f.apply(null, sub(args, 0, arity)); + continue; + } + ; + } + function _1(o, a0) { + var arity = o.length; + if (arity === 1) { + return o(a0); + } else { + switch (arity) { + case 1: + return o(a0); + case 2: + return function(param) { + return o(a0, param); + }; + case 3: + return function(param, param$1) { + return o(a0, param, param$1); + }; + case 4: + return function(param, param$1, param$2) { + return o(a0, param, param$1, param$2); + }; + case 5: + return function(param, param$1, param$2, param$3) { + return o(a0, param, param$1, param$2, param$3); + }; + case 6: + return function(param, param$1, param$2, param$3, param$4) { + return o(a0, param, param$1, param$2, param$3, param$4); + }; + case 7: + return function(param, param$1, param$2, param$3, param$4, param$5) { + return o(a0, param, param$1, param$2, param$3, param$4, param$5); + }; + default: + return app(o, [a0]); + } + } + } + function __1(o) { + var arity = o.length; + if (arity === 1) { + return o; + } else { + return function(a0) { + return _1(o, a0); + }; + } + } + var for_in = function(o, foo) { + for (var x in o) { + foo(x); + } + }; + function caml_equal(a, b) { + if (a === b) { + return true; + } + var a_type = typeof a; + if (a_type === "string" || a_type === "number" || a_type === "boolean" || a_type === "undefined" || a === null) { + return false; + } + var b_type = typeof b; + if (a_type === "function" || b_type === "function") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: functional value", + Error: new Error() + }; + } + if (b_type === "number" || b_type === "undefined" || b === null) { + return false; + } + var tag_a = a.TAG | 0; + var tag_b = b.TAG | 0; + if (tag_a === 248) { + return a[1] === b[1]; + } + if (tag_a === 251) { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: abstract value", + Error: new Error() + }; + } + if (tag_a !== tag_b) { + return false; + } + var len_a = a.length | 0; + var len_b = b.length | 0; + if (len_a === len_b) { + if (Array.isArray(a)) { + var _i = 0; + while (true) { + var i = _i; + if (i === len_a) { + return true; + } + if (!caml_equal(a[i], b[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } else if (a instanceof Date && b instanceof Date) { + return !(a > b || a < b); + } else { + var result = { + contents: true + }; + var do_key_a = function(key) { + if (!Object.prototype.hasOwnProperty.call(b, key)) { + result.contents = false; + return; + } + }; + var do_key_b = function(key) { + if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) { + result.contents = false; + return; + } + }; + for_in(a, do_key_a); + if (result.contents) { + for_in(b, do_key_b); + } + return result.contents; + } + } else { + return false; + } + } + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + function nullable_to_opt(x) { + if (x == null) { + return; + } else { + return some(x); + } + } + function valFromOption(x) { + if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) { + return x; + } + var depth = x.BS_PRIVATE_NESTED_SOME_NONE; + if (depth === 0) { + return; + } else { + return { + BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0 + }; + } + } + function getExn(x) { + if (x !== void 0) { + return valFromOption(x); + } + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + function mapWithDefaultU(opt, $$default, f) { + if (opt !== void 0) { + return f(valFromOption(opt)); + } else { + return $$default; + } + } + function mapU(opt, f) { + if (opt !== void 0) { + return some(f(valFromOption(opt))); + } + } + function flatMapU(opt, f) { + if (opt !== void 0) { + return f(valFromOption(opt)); + } + } + function flatMap(opt, f) { + return flatMapU(opt, __1(f)); + } + function getWithDefault(opt, $$default) { + if (opt !== void 0) { + return valFromOption(opt); + } else { + return $$default; + } + } + function isSome(param) { + return param !== void 0; + } + function isNone(x) { + return x === void 0; + } + function placeholder(param) { + } + function fromNullable(value) { + if (value == null) { + return; + } else { + return some(value); + } + } + function fromFalsy(value) { + if (value) { + return value; + } + } + function _fromPredicate(value, predicateFn) { + return flatMap(value == null ? void 0 : some(value), function(value2) { + if (predicateFn(value2)) { + return some(value2); + } + }); + } + function fromPredicate() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _fromPredicate(data, args[0]); + }; + } + return _fromPredicate(arguments[0], arguments[1]); + } + function fromExecution(fn) { + try { + return some(fn(void 0)); + } catch (exn) { + return; + } + } + function fromPromise(promise) { + var __x = promise.then(function(value) { + return Promise.resolve(some(value)); + }); + return __x.catch(function(param) { + return Promise.resolve(void 0); + }); + } + var _map = mapU; + function map() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _map(data, args[0]); + }; + } + return _map(arguments[0], arguments[1]); + } + var _flatMap = flatMapU; + function flatMap2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _flatMap(data, args[0]); + }; + } + return _flatMap(arguments[0], arguments[1]); + } + var _mapWithDefault = mapWithDefaultU; + function mapWithDefault() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _mapWithDefault(data, args[0], args[1]); + }; + } + return _mapWithDefault(arguments[0], arguments[1], arguments[2]); + } + function _mapNullable(option, mapFn) { + if (option !== void 0) { + return nullable_to_opt(mapFn(valFromOption(option))); + } + } + function mapNullable() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _mapNullable(data, args[0]); + }; + } + return _mapNullable(arguments[0], arguments[1]); + } + function _filter(option, predicateFn) { + return flatMapU(option, function(value) { + if (predicateFn(value)) { + return some(value); + } + }); + } + function filter() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filter(data, args[0]); + }; + } + return _filter(arguments[0], arguments[1]); + } + var _getWithDefault = getWithDefault; + function getWithDefault2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getWithDefault(data, args[0]); + }; + } + return _getWithDefault(arguments[0], arguments[1]); + } + var getExn2 = getExn; + function toNullable(option) { + return getWithDefault(option, null); + } + function toUndefined(option) { + return getWithDefault(option, void 0); + } + function _toResult(option, errorValue) { + if (option !== void 0) { + return { + TAG: 0, + _0: valFromOption(option) + }; + } else { + return { + TAG: 1, + _0: errorValue + }; + } + } + function toResult() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _toResult(data, args[0]); + }; + } + return _toResult(arguments[0], arguments[1]); + } + function _match(option, someFn, noneFn) { + if (option !== void 0) { + return someFn(valFromOption(option)); + } else { + return noneFn(void 0); + } + } + function match() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _match(data, args[0], args[1]); + }; + } + return _match(arguments[0], arguments[1], arguments[2]); + } + var isNone2 = isNone; + var isSome2 = isSome; + function _tap(option, someFn) { + if (option !== void 0) { + someFn(valFromOption(option)); + return option; + } else { + return option; + } + } + function tap() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _tap(data, args[0]); + }; + } + return _tap(arguments[0], arguments[1]); + } + function _contains(option, value) { + return mapWithDefaultU(option, false, function(someValue) { + return caml_equal(someValue, value); + }); + } + function contains() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _contains(data, args[0]); + }; + } + return _contains(arguments[0], arguments[1]); + } + function _zip(fstOption, sndOption) { + if (fstOption !== void 0 && sndOption !== void 0) { + return [ + valFromOption(fstOption), + valFromOption(sndOption) + ]; + } + } + function zip() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _zip(data, args[0]); + }; + } + return _zip(arguments[0], arguments[1]); + } + function _zipWith(fstOption, sndOption, mapFn) { + if (fstOption !== void 0 && sndOption !== void 0) { + return some(mapFn(valFromOption(fstOption), valFromOption(sndOption))); + } + } + function zipWith() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _zipWith(data, args[0], args[1]); + }; + } + return _zipWith(arguments[0], arguments[1], arguments[2]); + } + var Some = (value) => value; + var None = void 0; + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/String/index.js +var require_String = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/String/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + append: () => append, + concat: () => concat2, + endsWith: () => endsWith, + get: () => get, + getUnsafe: () => getUnsafe, + head: () => head, + includes: () => includes, + indexOf: () => indexOf, + isEmpty: () => isEmpty, + isNotEmpty: () => isNotEmpty, + last: () => last, + lastIndexOf: () => lastIndexOf, + length: () => length, + make: () => make, + match: () => match, + placeholder: () => placeholder, + prepend: () => prepend, + remove: () => remove, + removeAll: () => removeAll, + repeat: () => repeat, + replace: () => replace, + replaceAll: () => replaceAll, + replaceByRe: () => replaceByRe, + search: () => search, + slice: () => slice, + sliceToEnd: () => sliceToEnd, + split: () => split2, + splitAt: () => splitAt, + splitByRe: () => splitByRe, + startsWith: () => startsWith, + toArray: () => toArray, + toLowerCase: () => toLowerCase, + toUpperCase: () => toUpperCase, + trim: () => trim, + trimEnd: () => trimEnd, + trimStart: () => trimStart + }); + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + function undefined_to_opt(x) { + if (x === void 0) { + return; + } else { + return some(x); + } + } + function null_to_opt(x) { + if (x === null) { + return; + } else { + return some(x); + } + } + function makeByU(l, f) { + if (l <= 0) { + return []; + } + var res = new Array(l); + for (var i = 0; i < l; ++i) { + res[i] = f(i); + } + return res; + } + function reduceWithIndexU(a, x, f) { + var r = x; + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + r = f(r, a[i], i); + } + return r; + } + function placeholder(param) { + } + function make(value) { + return String(value); + } + function length(str) { + return str.length; + } + function _concat(str, appendValue) { + return str.concat(appendValue); + } + function concat2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _concat(data, args[0]); + }; + } + return _concat(arguments[0], arguments[1]); + } + function _append(str, appendValue) { + return str.concat(appendValue); + } + function append() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _append(data, args[0]); + }; + } + return _append(arguments[0], arguments[1]); + } + function _prepend(str, prependValue) { + return prependValue.concat(str); + } + function prepend() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _prepend(data, args[0]); + }; + } + return _prepend(arguments[0], arguments[1]); + } + function _slice(str, start, end) { + return str.slice(start, end); + } + function slice() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _slice(data, args[0], args[1]); + }; + } + return _slice(arguments[0], arguments[1], arguments[2]); + } + function _sliceToEnd(str, start) { + return str.slice(start); + } + function sliceToEnd() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _sliceToEnd(data, args[0]); + }; + } + return _sliceToEnd(arguments[0], arguments[1]); + } + function toLowerCase(str) { + return str.toLowerCase(); + } + function toUpperCase(str) { + return str.toUpperCase(); + } + function trim(str) { + return str.trim(); + } + function trimStart(str) { + return str.trimStart(); + } + function trimEnd(str) { + return str.trimEnd(); + } + function isEmpty(str) { + return str.length === 0; + } + function isNotEmpty(str) { + return str.length > 0; + } + function _split(str, delimiter) { + return str.split(delimiter); + } + function split2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _split(data, args[0]); + }; + } + return _split(arguments[0], arguments[1]); + } + function _splitByRe(str, regex) { + return str.split(regex); + } + function splitByRe() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _splitByRe(data, args[0]); + }; + } + return _splitByRe(arguments[0], arguments[1]); + } + function _splitAt(str, index) { + return [ + str.slice(0, index), + str.slice(index) + ]; + } + function splitAt() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _splitAt(data, args[0]); + }; + } + return _splitAt(arguments[0], arguments[1]); + } + function _includes(str, searchValue) { + return str.includes(searchValue); + } + function includes() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _includes(data, args[0]); + }; + } + return _includes(arguments[0], arguments[1]); + } + function _replace(str, oldValue, newValue) { + return str.replace(oldValue, newValue); + } + function replace() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _replace(data, args[0], args[1]); + }; + } + return _replace(arguments[0], arguments[1], arguments[2]); + } + function _replaceAll(str, oldValue, newValue) { + var xs = str.split(oldValue); + return reduceWithIndexU(xs, "", function(acc, str2, index) { + var value = index < (xs.length - 1 | 0) ? str2.concat(newValue) : str2; + return acc.concat(value); + }); + } + function replaceAll() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _replaceAll(data, args[0], args[1]); + }; + } + return _replaceAll(arguments[0], arguments[1], arguments[2]); + } + function _replaceByRe(str, regex, value) { + return str.replace(regex, value); + } + function replaceByRe() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _replaceByRe(data, args[0], args[1]); + }; + } + return _replaceByRe(arguments[0], arguments[1], arguments[2]); + } + function _remove(str, value) { + return str.replace(value, ""); + } + function remove() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _remove(data, args[0]); + }; + } + return _remove(arguments[0], arguments[1]); + } + function _removeAll(str, value) { + return replaceAll(str, value, ""); + } + function removeAll() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _removeAll(data, args[0]); + }; + } + return _removeAll(arguments[0], arguments[1]); + } + function _search(str, regex) { + var index = str.search(regex); + if (index < 0) { + return; + } else { + return index; + } + } + function search() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _search(data, args[0]); + }; + } + return _search(arguments[0], arguments[1]); + } + function _match(str, regex) { + return null_to_opt(str.match(regex)); + } + function match() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _match(data, args[0]); + }; + } + return _match(arguments[0], arguments[1]); + } + function _repeat(str, n) { + return str.repeat(n); + } + function repeat() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _repeat(data, args[0]); + }; + } + return _repeat(arguments[0], arguments[1]); + } + function _indexOf(str, searchValue) { + var index = str.indexOf(searchValue); + if (index < 0) { + return; + } else { + return index; + } + } + function indexOf() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _indexOf(data, args[0]); + }; + } + return _indexOf(arguments[0], arguments[1]); + } + function _lastIndexOf(str, searchValue) { + var index = str.lastIndexOf(searchValue); + if (index < 0) { + return; + } else { + return index; + } + } + function lastIndexOf() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _lastIndexOf(data, args[0]); + }; + } + return _lastIndexOf(arguments[0], arguments[1]); + } + function _endsWith(str, substr) { + return str.endsWith(substr); + } + function endsWith() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _endsWith(data, args[0]); + }; + } + return _endsWith(arguments[0], arguments[1]); + } + function _startsWith(str, substr) { + return str.startsWith(substr); + } + function startsWith() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _startsWith(data, args[0]); + }; + } + return _startsWith(arguments[0], arguments[1]); + } + function _getUnsafe(str, n) { + return str[n]; + } + function getUnsafe() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getUnsafe(data, args[0]); + }; + } + return _getUnsafe(arguments[0], arguments[1]); + } + function _get(str, n) { + return undefined_to_opt(str[n]); + } + function get() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _get(data, args[0]); + }; + } + return _get(arguments[0], arguments[1]); + } + function toArray(str) { + return makeByU(str.length, function(index) { + return str[index]; + }); + } + function head(str) { + return undefined_to_opt(str[0]); + } + function last(str) { + var n = str.length - 1 | 0; + return undefined_to_opt(str[n]); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Dict/index.js +var require_Dict = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Dict/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + deleteKey: () => deleteKey, + deleteKeys: () => deleteKeys, + filter: () => filter, + filterWithKey: () => filterWithKey, + fromPairs: () => fromPairs, + get: () => get3, + getUnsafe: () => getUnsafe, + isEmpty: () => isEmpty, + isNotEmpty: () => isNotEmpty, + keys: () => keys, + makeEmpty: () => makeEmpty, + map: () => map, + mapWithKey: () => mapWithKey, + merge: () => merge, + placeholder: () => placeholder, + prop: () => prop, + reject: () => reject, + rejectWithKey: () => rejectWithKey, + selectKeys: () => selectKeys, + set: () => set, + toPairs: () => toPairs, + update: () => update, + updateUnsafe: () => updateUnsafe, + values: () => values2 + }); + function some(x) { + if (x === void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: 0 + }; + } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) { + return { + BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0 + }; + } else { + return x; + } + } + function get(dict, k) { + if (k in dict) { + return some(dict[k]); + } + } + var unsafeDeleteKey = function(dict, key) { + delete dict[key]; + }; + function values(dict) { + var keys2 = Object.keys(dict); + var l = keys2.length; + var values$1 = new Array(l); + for (var i = 0; i < l; ++i) { + values$1[i] = dict[keys2[i]]; + } + return values$1; + } + function fromArray(entries) { + var dict = {}; + var l = entries.length; + for (var i = 0; i < l; ++i) { + var match = entries[i]; + dict[match[0]] = match[1]; + } + return dict; + } + var for_in = function(o, foo) { + for (var x in o) { + foo(x); + } + }; + function caml_equal(a, b) { + if (a === b) { + return true; + } + var a_type = typeof a; + if (a_type === "string" || a_type === "number" || a_type === "boolean" || a_type === "undefined" || a === null) { + return false; + } + var b_type = typeof b; + if (a_type === "function" || b_type === "function") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: functional value", + Error: new Error() + }; + } + if (b_type === "number" || b_type === "undefined" || b === null) { + return false; + } + var tag_a = a.TAG | 0; + var tag_b = b.TAG | 0; + if (tag_a === 248) { + return a[1] === b[1]; + } + if (tag_a === 251) { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "equal: abstract value", + Error: new Error() + }; + } + if (tag_a !== tag_b) { + return false; + } + var len_a = a.length | 0; + var len_b = b.length | 0; + if (len_a === len_b) { + if (Array.isArray(a)) { + var _i = 0; + while (true) { + var i = _i; + if (i === len_a) { + return true; + } + if (!caml_equal(a[i], b[i])) { + return false; + } + _i = i + 1 | 0; + continue; + } + ; + } else if (a instanceof Date && b instanceof Date) { + return !(a > b || a < b); + } else { + var result = { + contents: true + }; + var do_key_a = function(key) { + if (!Object.prototype.hasOwnProperty.call(b, key)) { + result.contents = false; + return; + } + }; + var do_key_b = function(key) { + if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) { + result.contents = false; + return; + } + }; + for_in(a, do_key_a); + if (result.contents) { + for_in(b, do_key_b); + } + return result.contents; + } + } else { + return false; + } + } + function concat2(a1, a2) { + var l1 = a1.length; + var l2 = a2.length; + var a1a2 = new Array(l1 + l2 | 0); + for (var i = 0; i < l1; ++i) { + a1a2[i] = a1[i]; + } + for (var i$1 = 0; i$1 < l2; ++i$1) { + a1a2[l1 + i$1 | 0] = a2[i$1]; + } + return a1a2; + } + function forEachU(a, f) { + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + f(a[i]); + } + } + function mapU(a, f) { + var l = a.length; + var r = new Array(l); + for (var i = 0; i < l; ++i) { + r[i] = f(a[i]); + } + return r; + } + function reduceU(a, x, f) { + var r = x; + for (var i = 0, i_finish = a.length; i < i_finish; ++i) { + r = f(r, a[i]); + } + return r; + } + function _append(xs, element) { + return concat2(xs, [element]); + } + function append() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _append(data, args[0]); + }; + } + return _append(arguments[0], arguments[1]); + } + function placeholder(param) { + } + function makeEmpty(prim) { + return {}; + } + function _getUnsafe(dict, key) { + return dict[key]; + } + function getUnsafe() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _getUnsafe(data, args[0]); + }; + } + return _getUnsafe(arguments[0], arguments[1]); + } + var _get = get; + function get3() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _get(data, args[0]); + }; + } + return _get(arguments[0], arguments[1]); + } + function _prop(dict, key) { + return dict[key]; + } + function prop() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _prop(data, args[0]); + }; + } + return _prop(arguments[0], arguments[1]); + } + function toPairs(dict) { + return Object.entries(dict); + } + var values2 = values; + function keys(dict) { + return Object.keys(dict); + } + var fromPairs = fromArray; + function _merge(fst, snd) { + return Object.assign({}, fst, snd); + } + function merge() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _merge(data, args[0]); + }; + } + return _merge(arguments[0], arguments[1]); + } + function _set(dict, key, value) { + var obj = merge({}, dict); + obj[key] = value; + return obj; + } + function set() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _set(data, args[0], args[1]); + }; + } + return _set(arguments[0], arguments[1], arguments[2]); + } + function _update(dict, key, fn) { + var optionalValue = get(dict, key); + return set(dict, key, fn(optionalValue)); + } + function update() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _update(data, args[0], args[1]); + }; + } + return _update(arguments[0], arguments[1], arguments[2]); + } + function _updateUnsafe(dict, key, fn) { + var value = dict[key]; + return set(dict, key, fn(value)); + } + function updateUnsafe() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _updateUnsafe(data, args[0], args[1]); + }; + } + return _updateUnsafe(arguments[0], arguments[1], arguments[2]); + } + function _deleteKey(dict, key) { + var obj = merge({}, dict); + unsafeDeleteKey(obj, key); + return obj; + } + function deleteKey() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _deleteKey(data, args[0]); + }; + } + return _deleteKey(arguments[0], arguments[1]); + } + function _deleteKeys(dict, keys2) { + var obj = merge({}, dict); + forEachU(keys2, function(key) { + return unsafeDeleteKey(obj, key); + }); + return obj; + } + function deleteKeys() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _deleteKeys(data, args[0]); + }; + } + return _deleteKeys(arguments[0], arguments[1]); + } + function _map(dict, mapFn) { + return fromArray(mapU(Object.keys(dict), function(key) { + var value = mapFn(dict[key]); + return [ + key, + value + ]; + })); + } + function map() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _map(data, args[0]); + }; + } + return _map(arguments[0], arguments[1]); + } + function _mapWithKey(dict, mapFn) { + return fromArray(mapU(Object.keys(dict), function(key) { + var value = mapFn(key, dict[key]); + return [ + key, + value + ]; + })); + } + function mapWithKey() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _mapWithKey(data, args[0]); + }; + } + return _mapWithKey(arguments[0], arguments[1]); + } + function _filter(dict, predicateFn) { + return fromArray(reduceU(Object.keys(dict), [], function(acc, key) { + var value = dict[key]; + if (predicateFn(value)) { + return append(acc, [ + key, + value + ]); + } else { + return acc; + } + })); + } + function filter() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filter(data, args[0]); + }; + } + return _filter(arguments[0], arguments[1]); + } + function _filterWithKey(dict, predicateFn) { + return fromArray(reduceU(Object.keys(dict), [], function(acc, key) { + var value = dict[key]; + if (predicateFn(key, value)) { + return append(acc, [ + key, + value + ]); + } else { + return acc; + } + })); + } + function filterWithKey() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _filterWithKey(data, args[0]); + }; + } + return _filterWithKey(arguments[0], arguments[1]); + } + function _reject(dict, predicateFn) { + return filter(dict, function(value) { + return !predicateFn(value); + }); + } + function reject() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _reject(data, args[0]); + }; + } + return _reject(arguments[0], arguments[1]); + } + function _rejectWithKey(dict, predicateFn) { + return filterWithKey(dict, function(key, value) { + return !predicateFn(key, value); + }); + } + function rejectWithKey() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _rejectWithKey(data, args[0]); + }; + } + return _rejectWithKey(arguments[0], arguments[1]); + } + function _selectKeys(dict, keys2) { + return filterWithKey(dict, function(key, param) { + return keys2.includes(key); + }); + } + function selectKeys() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _selectKeys(data, args[0]); + }; + } + return _selectKeys(arguments[0], arguments[1]); + } + function isEmpty(dict) { + return caml_equal(dict, {}); + } + function isNotEmpty(dict) { + return !caml_equal(dict, {}); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Bool/index.js +var require_Bool = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Bool/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + and: () => and, + ifElse: () => ifElse, + implies: () => implies, + inverse: () => inverse, + nand: () => nand, + nor: () => nor, + not: () => not, + or: () => or, + placeholder: () => placeholder, + xnor: () => xnor, + xor: () => xor + }); + function placeholder(param) { + } + function _ifElse(value, truthyFn, falsyFn) { + if (value) { + return truthyFn(void 0); + } else { + return falsyFn(void 0); + } + } + function ifElse() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _ifElse(data, args[0], args[1]); + }; + } + return _ifElse(arguments[0], arguments[1], arguments[2]); + } + function inverse(value) { + return !value; + } + function not(value) { + return !value; + } + function _and_(a, b) { + if (a) { + return b; + } else { + return false; + } + } + function and() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _and_(data, args[0]); + }; + } + return _and_(arguments[0], arguments[1]); + } + function _or_(a, b) { + if (a) { + return true; + } else { + return b; + } + } + function or() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _or_(data, args[0]); + }; + } + return _or_(arguments[0], arguments[1]); + } + function _nand(a, b) { + return !(a && b); + } + function nand() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _nand(data, args[0]); + }; + } + return _nand(arguments[0], arguments[1]); + } + function _nor(a, b) { + return !(a || b); + } + function nor() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _nor(data, args[0]); + }; + } + return _nor(arguments[0], arguments[1]); + } + function _xor(a, b) { + if (!a && b) { + return true; + } else if (a) { + return !b; + } else { + return false; + } + } + function xor() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _xor(data, args[0]); + }; + } + return _xor(arguments[0], arguments[1]); + } + function _xnor(a, b) { + return !xor(a, b); + } + function xnor() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _xnor(data, args[0]); + }; + } + return _xnor(arguments[0], arguments[1]); + } + function _implies(a, b) { + if (a) { + return b; + } else { + return true; + } + } + function implies() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _implies(data, args[0]); + }; + } + return _implies(arguments[0], arguments[1]); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/Number/index.js +var require_Number = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/Number/index.js"(exports2) { + var __defProp2 = Object.defineProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + __export2(exports2, { + add: () => add2, + clamp: () => clamp, + divide: () => divide, + divideWithModulo: () => divideWithModulo, + gt: () => gt, + gte: () => gte, + lt: () => lt, + lte: () => lte, + modulo: () => modulo, + multiply: () => multiply, + placeholder: () => placeholder, + pred: () => pred, + subtract: () => subtract, + succ: () => succ + }); + function mod_(x, y) { + if (y === 0) { + throw { + RE_EXN_ID: "Division_by_zero", + Error: new Error() + }; + } + return x % y; + } + function placeholder(param) { + } + function pred(n) { + return n - 1 | 0; + } + function succ(n) { + return n + 1 | 0; + } + function _add(a, b) { + return a + b; + } + function add2() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _add(data, args[0]); + }; + } + return _add(arguments[0], arguments[1]); + } + function _subtract(a, b) { + return a - b; + } + function subtract() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _subtract(data, args[0]); + }; + } + return _subtract(arguments[0], arguments[1]); + } + function _multiply(a, b) { + return a * b; + } + function multiply() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _multiply(data, args[0]); + }; + } + return _multiply(arguments[0], arguments[1]); + } + function _divide(a, b) { + return a / b; + } + function divide() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _divide(data, args[0]); + }; + } + return _divide(arguments[0], arguments[1]); + } + var _modulo = mod_; + function modulo() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _modulo(data, args[0]); + }; + } + return _modulo(arguments[0], arguments[1]); + } + function _divideWithModulo(a, b) { + return [ + a / b, + mod_(a | 0, b | 0) + ]; + } + function divideWithModulo() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _divideWithModulo(data, args[0]); + }; + } + return _divideWithModulo(arguments[0], arguments[1]); + } + function _gt(a, b) { + return a > b; + } + function gt() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _gt(data, args[0]); + }; + } + return _gt(arguments[0], arguments[1]); + } + function _gte(a, b) { + return a >= b; + } + function gte() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _gte(data, args[0]); + }; + } + return _gte(arguments[0], arguments[1]); + } + function _lt(a, b) { + return a < b; + } + function lt() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _lt(data, args[0]); + }; + } + return _lt(arguments[0], arguments[1]); + } + function _lte(a, b) { + return a <= b; + } + function lte() { + if (arguments.length === 1) { + const args = arguments; + return function fn(data) { + return _lte(data, args[0]); + }; + } + return _lte(arguments[0], arguments[1]); + } + function _clamp(num, min, max) { + return Math.min(Math.max(num, min), max); + } + function clamp() { + if (arguments.length === 2) { + const args = arguments; + return function fn(data) { + return _clamp(data, args[0], args[1]); + }; + } + return _clamp(arguments[0], arguments[1], arguments[2]); + } + } +}); + +// node_modules/@mobily/ts-belt/dist/cjs/index.js +var require_cjs9 = __commonJS({ + "node_modules/@mobily/ts-belt/dist/cjs/index.js"(exports2) { + var __create2 = Object.create; + var __defProp2 = Object.defineProperty; + var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor; + var __getOwnPropNames2 = Object.getOwnPropertyNames; + var __getProtoOf2 = Object.getPrototypeOf; + var __hasOwnProp2 = Object.prototype.hasOwnProperty; + var __markAsModule = (target) => __defProp2(target, "__esModule", { value: true }); + var __export2 = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp2(target, name, { get: all[name], enumerable: true }); + }; + var __reExport = (target, module22, desc) => { + if (module22 && typeof module22 === "object" || typeof module22 === "function") { + for (let key of __getOwnPropNames2(module22)) + if (!__hasOwnProp2.call(target, key) && key !== "default") + __defProp2(target, key, { get: () => module22[key], enumerable: !(desc = __getOwnPropDesc2(module22, key)) || desc.enumerable }); + } + return target; + }; + var __toModule = (module22) => { + return __reExport(__markAsModule(__defProp2(module22 != null ? __create2(__getProtoOf2(module22)) : {}, "default", module22 && module22.__esModule && "default" in module22 ? { get: () => module22.default, enumerable: true } : { value: module22, enumerable: true })), module22); + }; + __export2(exports2, { + A: () => A, + B: () => B, + D: () => D, + F: () => F, + G: () => G, + N: () => N, + O: () => O, + R: () => R, + S: () => S, + flow: () => import_flow.flow, + pipe: () => import_pipe.pipe + }); + var import_pipe = __toModule(require_pipe()); + var import_flow = __toModule(require_flow()); + var F = __toModule(require_Function()); + var A = __toModule(require_Array()); + var R = __toModule(require_Result()); + var G = __toModule(require_Guards()); + var O = __toModule(require_Option()); + var S = __toModule(require_String()); + var D = __toModule(require_Dict()); + var B = __toModule(require_Bool()); + var N = __toModule(require_Number()); + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/solana.js +var require_solana = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/solana.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.transformTransaction = exports2.getTokens = exports2.getAmount = exports2.getDetails = exports2.getTxType = exports2.getTargets = exports2.extractAccountBalanceDiff = exports2.transformTokenInfo = exports2.tokenStandardToTokenProgramName = exports2.getTokenNameAndSymbol = exports2.getTokenMetadata = exports2.tokenProgramsInfo = exports2.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID = exports2.SERUM_ASSET_OWNER_PROGRAM_ID = exports2.COMPUTE_BUDGET_PROGRAM_ID = exports2.STAKE_PROGRAM_PUBLIC_KEY = exports2.WSOL_MINT = exports2.SYSTEM_PROGRAM_PUBLIC_KEY = exports2.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = exports2.TOKEN_2022_PROGRAM_PUBLIC_KEY = exports2.TOKEN_PROGRAM_PUBLIC_KEY = void 0; + exports2.getNativeEffects = getNativeEffects; + var ts_belt_1 = require_cjs9(); + var env_utils_1 = require_lib4(); + var utils_1 = require_lib(); + var bigNumber_1 = require_bigNumber(); + var utils_2 = require_utils6(); + exports2.TOKEN_PROGRAM_PUBLIC_KEY = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + exports2.TOKEN_2022_PROGRAM_PUBLIC_KEY = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + exports2.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; + exports2.SYSTEM_PROGRAM_PUBLIC_KEY = "11111111111111111111111111111111"; + exports2.WSOL_MINT = "So11111111111111111111111111111111111111112"; + exports2.STAKE_PROGRAM_PUBLIC_KEY = "Stake11111111111111111111111111111111111111"; + exports2.COMPUTE_BUDGET_PROGRAM_ID = "ComputeBudget111111111111111111111111111111"; + exports2.SERUM_ASSET_OWNER_PROGRAM_ID = "4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5"; + exports2.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID = "DeJBGdMFa1uynnnKiwrVioatTuHmNLpyFKnmB5kaFdzQ"; + var tokenProgramNames = ["spl-token", "spl-token-2022"]; + exports2.tokenProgramsInfo = { + "spl-token": { + publicKey: exports2.TOKEN_PROGRAM_PUBLIC_KEY, + tokenStandard: "SPL" + }, + "spl-token-2022": { + publicKey: exports2.TOKEN_2022_PROGRAM_PUBLIC_KEY, + tokenStandard: "SPL-2022" + } + }; + var getTokenMetadata = async () => { + const env = (0, env_utils_1.isCodesignBuild)() ? "stable" : "develop"; + const response = await fetch(`https://data.trezor.io/suite/definitions/${env}/solana.advanced.coin.definitions.v1.json`); + if (!response.ok) { + throw Error(response.statusText); + } + const data = await response.json(); + data[exports2.WSOL_MINT] = { + symbol: "wSOL", + name: "Wrapped SOL" + }; + return data; + }; + exports2.getTokenMetadata = getTokenMetadata; + var getTokenNameAndSymbol = (mint, tokenDetailByMint) => { + const tokenDetail = tokenDetailByMint[mint]; + return tokenDetail ? { + name: tokenDetail.name, + symbol: tokenDetail.symbol + } : { + name: mint, + symbol: (0, utils_2.formatTokenSymbol)(mint) + }; + }; + exports2.getTokenNameAndSymbol = getTokenNameAndSymbol; + var isTokenProgramName = (programName) => tokenProgramNames.some((name) => name === programName); + var tokenStandardToTokenProgramName = (standard) => { + const tokenProgram = Object.entries(exports2.tokenProgramsInfo).find(([_, programInfo]) => programInfo.tokenStandard === standard); + if (!tokenProgram) throw new Error(`Cannot convert token standard ${standard} to Solana token program name`); + return tokenProgram[0]; + }; + exports2.tokenStandardToTokenProgramName = tokenStandardToTokenProgramName; + var isSplTokenAccount = (tokenAccount) => { + const { + parsed + } = tokenAccount.account.data; + return isTokenProgramName(tokenAccount.account.data.program) && "info" in parsed && !!parsed.info && "mint" in parsed.info && typeof parsed.info.mint === "string" && "tokenAmount" in parsed.info && !!parsed.info.tokenAmount && typeof parsed.info.tokenAmount === "object" && "amount" in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.amount === "string" && "decimals" in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.decimals === "number"; + }; + var transformTokenInfo = (tokenAccounts, tokenDetailByMint) => { + const tokens = ts_belt_1.F.toMutable((0, ts_belt_1.pipe)(tokenAccounts, ts_belt_1.A.filter(isSplTokenAccount), ts_belt_1.A.map((tokenAccount) => { + const { + parsed: { + info + }, + program + } = tokenAccount.account.data; + return { + type: exports2.tokenProgramsInfo[program].tokenStandard, + contract: info.mint, + balance: info.tokenAmount.amount, + decimals: info.tokenAmount.decimals, + ...(0, exports2.getTokenNameAndSymbol)(info.mint, tokenDetailByMint), + address: tokenAccount.pubkey, + standard: exports2.tokenProgramsInfo[program].tokenStandard + }; + }), ts_belt_1.A.reduce({}, (acc, token) => { + if (acc[token.contract] != null) { + acc[token.contract].balance = new bigNumber_1.BigNumber(acc[token.contract].balance || "0").plus(token.balance || "0").toString(); + acc[token.contract].accounts.push({ + publicKey: token.address, + balance: token.balance || "0" + }); + } else { + const { + standard, + contract, + balance, + decimals, + name, + symbol + } = token; + acc[token.contract] = { + standard, + contract, + balance, + decimals, + name, + symbol, + accounts: [{ + publicKey: token.address, + balance: balance || "0" + }] + }; + } + return acc; + }), ts_belt_1.D.values)); + return tokens; + }; + exports2.transformTokenInfo = transformTokenInfo; + var extractAccountBalanceDiff = (transaction, address, isTokenDiff = false) => { + const pubKeyIndex = transaction.transaction.message.accountKeys.findIndex((ak) => ak.pubkey === address); + if (pubKeyIndex === -1) { + return null; + } + if (isTokenDiff) { + const preBalance2 = transaction.meta?.preTokenBalances?.find((balance) => balance.accountIndex === pubKeyIndex)?.uiTokenAmount.amount; + const postBalance2 = transaction.meta?.postTokenBalances?.find((balance) => balance.accountIndex === pubKeyIndex)?.uiTokenAmount.amount; + return { + preBalance: new bigNumber_1.BigNumber(preBalance2 ?? 0), + postBalance: new bigNumber_1.BigNumber(postBalance2 ?? 0) + }; + } + const preBalance = transaction.meta?.preBalances[pubKeyIndex]; + const postBalance = transaction.meta?.postBalances[pubKeyIndex]; + return { + preBalance: new bigNumber_1.BigNumber(preBalance?.toString(10) ?? 0), + postBalance: new bigNumber_1.BigNumber(postBalance?.toString(10) ?? 0) + }; + }; + exports2.extractAccountBalanceDiff = extractAccountBalanceDiff; + var isWSolTransfer = (ixs) => ixs.find((ix) => "parsed" in ix && !!ix.parsed.info && "mint" in ix.parsed.info && ix.parsed.info.mint === exports2.WSOL_MINT); + function getNativeEffects(transaction) { + const wSolTransferInstruction = isWSolTransfer(transaction.transaction.message.instructions || []); + return transaction.transaction.message.accountKeys.map((ak) => { + const targetAddress = ak.pubkey; + const balanceDiff = (0, exports2.extractAccountBalanceDiff)(transaction, targetAddress); + if (wSolTransferInstruction && "parsed" in wSolTransferInstruction) { + if (!!wSolTransferInstruction.parsed.info && "destination" in wSolTransferInstruction.parsed.info && wSolTransferInstruction.parsed.info.destination === targetAddress || !!wSolTransferInstruction.parsed.info && "source" in wSolTransferInstruction.parsed.info && wSolTransferInstruction.parsed.info.source === targetAddress) { + return null; + } + } + if (!balanceDiff) { + return null; + } + return { + address: targetAddress, + amount: balanceDiff.postBalance.minus(balanceDiff.preBalance) + }; + }).filter((effect) => !!effect).filter(({ + amount + }) => !amount.isZero()); + } + var getTargets = (effects, txType, accountAddress) => effects.filter((effect) => { + if (txType === "self") { + return false; + } + if (txType === "unknown") { + return false; + } + if (txType !== "sent" && effect.address !== accountAddress) { + return false; + } + return effect.amount.isGreaterThan(0); + }).map((effect, i) => { + const target = { + n: i, + addresses: [effect.address], + isAddress: true, + amount: effect.amount.abs().toString(), + isAccountTarget: effect.address === accountAddress && txType !== "sent" + }; + return target; + }); + exports2.getTargets = getTargets; + var getTokenTransferTxType = (transfers) => { + if (transfers.some((transfer) => transfer.to === transfer.from)) { + return "self"; + } + if (transfers.some(({ + type + }) => type === "recv")) { + return "recv"; + } + if (transfers.some(({ + type + }) => type === "sent")) { + return "sent"; + } + return "unknown"; + }; + var getNativeTransferTxType = (effects, accountAddress, transaction) => { + if (effects.length === 1 && effects[0]?.address === accountAddress && effects[0]?.amount.abs().isEqualTo(new bigNumber_1.BigNumber(transaction.meta?.fee.toString() || 0))) { + return "self"; + } + const [senders, receivers] = (0, utils_1.arrayPartition)(effects, ({ + amount + }) => amount.isNegative()); + if (senders.some(({ + address + }) => address === accountAddress)) { + return "sent"; + } + if (receivers.some(({ + address + }) => address === accountAddress)) { + return "recv"; + } + return "unknown"; + }; + var getTxType = (transaction, effects, accountAddress, tokenTransfers) => { + if (transaction.meta?.err) { + return "failed"; + } + const isUnknownProgramInstruction = (instruction) => ![exports2.SYSTEM_PROGRAM_PUBLIC_KEY, ...Object.values(exports2.tokenProgramsInfo).map((info) => info.publicKey), exports2.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY, exports2.STAKE_PROGRAM_PUBLIC_KEY, exports2.COMPUTE_BUDGET_PROGRAM_ID, exports2.SERUM_ASSET_OWNER_PROGRAM_ID, exports2.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID].includes(instruction.programId); + if (transaction.transaction.message.instructions.some(isUnknownProgramInstruction)) { + return "contract"; + } + const parsedInstructions = transaction.transaction.message.instructions.filter((instruction) => "parsed" in instruction); + if (parsedInstructions.length === 0) { + return "unknown"; + } + const isInstructionCreatingTokenAccount = (instruction) => instruction.program === "spl-associated-token-account" && (instruction.parsed.type === "create" || instruction.parsed.type === "createIdempotent"); + const isTransfer = parsedInstructions.every((instruction) => instruction.parsed.type === "transfer" || instruction.parsed.type === "transferChecked" || instruction.program === "system" && instruction.parsed.type === "advanceNonce" || isInstructionCreatingTokenAccount(instruction)); + if (isTransfer) { + return tokenTransfers.length > 0 ? getTokenTransferTxType(tokenTransfers) : getNativeTransferTxType(effects, accountAddress, transaction); + } + return "unknown"; + }; + exports2.getTxType = getTxType; + var getDetails = (transaction, effects, accountAddress, txType) => { + const senders = effects.filter(({ + amount + }) => amount.isNegative()); + const receivers = effects.filter(({ + amount, + address + }) => amount.isPositive() && (txType !== "sent" ? address === accountAddress : true)).filter(({ + address + }) => !(txType === "self" && address === accountAddress)); + const getVin = ({ + address, + amount + }, i) => ({ + txid: transaction.transaction.signatures[0].toString(), + version: transaction.version?.toString(), + isAddress: true, + isAccountOwned: address === accountAddress, + n: i, + value: amount?.abs().toString(), + addresses: [address] + }); + const vin = senders.map((sender, i) => getVin(sender, i)); + const vout = receivers.map((receiver, i) => getVin(receiver, i)); + if (txType === "self") { + vout.push(getVin({ + address: accountAddress + }, vout.length)); + } + return { + size: transaction.meta?.computeUnitsConsumed != null ? Number(transaction.meta?.computeUnitsConsumed) : 0, + totalInput: senders.reduce((acc, curr) => acc.plus(curr.amount.abs()), new bigNumber_1.BigNumber(0)).toString(), + totalOutput: receivers.reduce((acc, curr) => acc.plus(curr.amount.abs()), new bigNumber_1.BigNumber(0)).toString(), + vin, + vout + }; + }; + exports2.getDetails = getDetails; + var getAmount = (accountEffect, txType) => { + if (!accountEffect) { + return "0"; + } + if (txType === "self") { + return "0"; + } + return accountEffect.amount.abs().toString(); + }; + exports2.getAmount = getAmount; + var isTokenTransferInstruction = (ix) => { + if (!("parsed" in ix)) { + return false; + } + const { + parsed + } = ix; + return "program" in ix && typeof ix.program === "string" && isTokenProgramName(ix.program) && "type" in parsed && typeof parsed.type === "string" && (parsed.type === "transferChecked" || parsed.type === "transfer") && "info" in parsed && typeof parsed.info === "object" && ("authority" in parsed.info && typeof parsed.info.authority === "string" || "multisigAuthority" in parsed.info && typeof parsed.info.multisigAuthority === "string") && "source" in parsed.info && typeof parsed.info.source === "string" && "destination" in parsed.info && typeof parsed.info.destination === "string" && ("tokenAmount" in parsed.info && !!parsed.info.tokenAmount && typeof parsed.info.tokenAmount === "object" && "amount" in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.amount === "string" || "amount" in parsed.info && typeof parsed.info.amount === "string"); + }; + var getTokens = (tx, accountAddress, tokenDetailByMint, tokenAccountsInfos) => { + const getUiType = ({ + parsed + }) => { + const accountAddresses = [...tokenAccountsInfos.map(({ + address + }) => address), accountAddress]; + const isAccountDestination = accountAddresses.includes(parsed.info.destination); + const isAccountSource = accountAddresses.includes(parsed.info.multisigAuthority || parsed.info.authority || parsed.info.source); + if (isAccountDestination && isAccountSource) { + return "self"; + } + if (isAccountDestination) { + return "recv"; + } + return "sent"; + }; + const matchTokenAccountInfo = ({ + parsed + }, address) => address === parsed.info?.source || address === parsed.info.destination || address === parsed.info?.authority; + const instructions = [...tx.transaction.message.instructions, ...tx.meta?.innerInstructions?.flatMap((innerIx) => innerIx.instructions) ?? []]; + const effects = instructions.filter((instruction) => isTokenTransferInstruction(instruction) && tokenAccountsInfos.some((tokenAccountInfo) => matchTokenAccountInfo(instruction, tokenAccountInfo.address))).map((ix) => { + const { + parsed, + program + } = ix; + const instructionTokenInfo = tokenAccountsInfos.find((tokenAccountInfo) => matchTokenAccountInfo(ix, tokenAccountInfo.address)); + const mint = parsed.info.mint || instructionTokenInfo?.mint || "Unknown token contract"; + const decimals = Number(parsed.info.tokenAmount?.decimals || instructionTokenInfo?.decimals || 0); + const amount = parsed.info.tokenAmount?.amount || parsed.info.amount || "-1"; + const source = parsed.info.authority || parsed.info.source; + const from = source === instructionTokenInfo?.address ? accountAddress : source; + const to = parsed.info.destination === instructionTokenInfo?.address ? accountAddress : parsed.info.destination; + return { + type: getUiType(ix), + standard: exports2.tokenProgramsInfo[program].tokenStandard, + from, + to, + contract: mint, + decimals, + ...(0, exports2.getTokenNameAndSymbol)(mint, tokenDetailByMint), + amount + }; + }).filter((effect) => effect.to === accountAddress || effect.from === accountAddress); + return effects; + }; + exports2.getTokens = getTokens; + function getTransactionStakeType(tx) { + const { + instructions + } = tx.transaction.message; + if (!instructions) { + throw new Error("Invalid transaction data"); + } + for (const instruction of instructions) { + if (instruction.programId === exports2.STAKE_PROGRAM_PUBLIC_KEY && "parsed" in instruction) { + const { + type + } = instruction.parsed || {}; + if (type === "delegate") return "stake"; + if (type === "deactivate") return "unstake"; + if (type === "withdraw") return "claim"; + } + } + return void 0; + } + var getUnstakeAmount = (tx) => { + const { + transaction, + meta + } = tx; + const { + instructions, + accountKeys + } = transaction.message; + if (!instructions || !meta) { + throw new Error("Invalid transaction data"); + } + const stakeAccountIndexes = instructions.filter((instruction) => instruction.programId === exports2.STAKE_PROGRAM_PUBLIC_KEY && "parsed" in instruction && instruction.parsed?.type === "deactivate").map((instruction) => { + if (typeof instruction.parsed?.info === "object" && "stakeAccount" in instruction.parsed.info) { + const stakeAccount = instruction.parsed.info?.stakeAccount; + return accountKeys.findIndex((key) => key.pubkey === stakeAccount); + } + return -1; + }).filter((index) => index >= 0); + const totalPostBalance = stakeAccountIndexes.reduce((sum, stakeAccountIndex) => sum.plus(new bigNumber_1.BigNumber(meta.postBalances[stakeAccountIndex]?.toString(10) || 0)), new bigNumber_1.BigNumber(0)); + return totalPostBalance.toString(); + }; + var determineTransactionType = (type, stakeType) => { + if (type !== "unknown" || !stakeType) { + return type; + } + switch (stakeType) { + case "claim": + return "recv"; + case "stake": + case "unstake": + return "sent"; + default: + return "unknown"; + } + }; + var transformTransaction = (tx, accountAddress, tokenAccountsInfos, tokenDetailByMint = {}) => { + const nativeEffects = getNativeEffects(tx); + const tokens = (0, exports2.getTokens)(tx, accountAddress, tokenDetailByMint, tokenAccountsInfos); + const type = (0, exports2.getTxType)(tx, nativeEffects, accountAddress, tokens); + const stakeType = getTransactionStakeType(tx); + const txType = determineTransactionType(type, stakeType); + const targets = (0, exports2.getTargets)(nativeEffects, txType, accountAddress); + const isUnstakeTx = stakeType === "unstake"; + const amount = isUnstakeTx ? "0" : (0, exports2.getAmount)(nativeEffects.find(({ + address + }) => address === accountAddress), type); + const stakeAmount = isUnstakeTx ? getUnstakeAmount(tx) : amount; + const details = (0, exports2.getDetails)(tx, nativeEffects, accountAddress, type); + return { + type: txType, + txid: tx.transaction.signatures[0].toString(), + blockTime: tx.blockTime == null ? void 0 : Number(tx.blockTime), + blockHeight: tx.slot == null ? void 0 : Number(tx.slot), + amount, + fee: (tx.meta?.fee || 0).toString(), + targets, + tokens, + internalTransfers: [], + details, + blockHash: tx.transaction.message.recentBlockhash, + solanaSpecific: { + status: "confirmed", + stakeOperation: stakeType ? { + type: stakeType, + amount: stakeAmount + } : void 0 + } + }; + }; + exports2.transformTransaction = transformTransaction; + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/index.js +var require_lib19 = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.solanaUtils = exports2.blockfrostUtils = exports2.blockbookUtils = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_utils6(), exports2); + exports2.blockbookUtils = tslib_1.__importStar(require_blockbook()); + exports2.blockfrostUtils = tslib_1.__importStar(require_blockfrost()); + exports2.solanaUtils = tslib_1.__importStar(require_solana()); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountBalanceHistory.js +var require_getAccountBalanceHistory = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountBalanceHistory.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var blockchain_link_utils_1 = require_lib19(); + var blockbook_1 = require_blockbook(); + var bigNumber_1 = require_bigNumber(); + var utxo_lib_1 = require_lib18(); + var utils_1 = require_utils24(); + var transformAddress = (addr) => ({ + address: addr.address, + path: addr.path, + transfers: addr.history.length, + balance: "0", + sent: "0", + received: "0" + }); + var aggregateTransactions = (txs, groupBy = 3600) => { + const result = []; + let i = 0; + while (i < txs.length) { + const time = Math.floor(txs[i].blockTime / groupBy) * groupBy; + let j = i; + let received = 0; + let sent = 0; + let sentToSelf = 0; + while (j < txs.length && txs[j].blockTime < time + groupBy) { + const { + type, + amount, + fee, + details: { + vin, + vout, + totalInput, + totalOutput + } + } = txs[j]; + if (type === "recv") received += Number.parseInt(amount, 10); + else if (type === "sent") sent += Number.parseInt(amount, 10) + Number.parseInt(fee, 10); + else if (type === "self") { + sentToSelf += Number.parseInt(totalOutput, 10); + sent += Number.parseInt(totalInput, 10); + received += Number.parseInt(totalOutput, 10); + } else if (type === "joint") { + const myTotalInput = new bigNumber_1.BigNumber(vin.filter((vin2) => vin2.isAccountOwned).reduce(blockchain_link_utils_1.sumVinVout, 0)).toNumber(); + const myTotalOutput = new bigNumber_1.BigNumber(vout.filter((vout2) => vout2.isAccountOwned).reduce(blockchain_link_utils_1.sumVinVout, 0)).toNumber(); + sent += myTotalInput; + received += myTotalOutput; + sentToSelf += Math.min(myTotalInput, myTotalOutput); + } + j++; + } + result.push({ + time, + txs: j - i, + received: received.toString(), + sent: sent.toString(), + sentToSelf: sentToSelf.toString(), + rates: {} + }); + i = j; + } + return result; + }; + var getAccountBalanceHistory = async (client, { + descriptor, + from, + to, + groupBy + }) => { + let history; + let addresses; + const network = client.getInfo()?.network; + const parsed = (0, utils_1.tryGetScripthash)(descriptor, network); + if (parsed.valid) { + history = await client.request("blockchain.scripthash.get_history", parsed.scripthash); + addresses = void 0; + } else { + const discover = (0, utils_1.discoverAddress)(client); + const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, "receive", network); + const change = await (0, utxo_lib_1.discovery)(discover, descriptor, "change", network); + addresses = { + change: change.map(transformAddress), + used: receive.filter(({ + history: history2 + }) => history2.length).map(transformAddress), + unused: receive.filter(({ + history: history2 + }) => !history2.length).map(transformAddress) + }; + history = receive.map(({ + history: history2 + }) => history2).concat(change.map(({ + history: history2 + }) => history2)).flat(); + } + const txs = await (0, utils_1.getTransactions)(client, history).then((txs2) => txs2.filter(({ + blockTime + }) => (from || 0) <= blockTime && blockTime <= (to || Number.MAX_SAFE_INTEGER)).sort((a, b) => a.blockTime - b.blockTime).map((tx) => ({ + blockTime: -1, + ...(0, blockbook_1.transformTransaction)(tx, addresses ?? descriptor) + }))); + return aggregateTransactions(txs, groupBy); + }; + exports2.default = getAccountBalanceHistory; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountInfo.js +var require_getAccountInfo = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.sumAddressValues = void 0; + var blockchain_link_utils_1 = require_lib19(); + var blockbook_1 = require_blockbook(); + var utxo_lib_1 = require_lib18(); + var utils_1 = require_utils24(); + var PAGE_SIZE_DEFAULT = 25; + var getBalances = (client) => (addresses) => Promise.all(addresses.map(async ({ + address, + path: path2, + history, + scripthash, + empty + }) => { + const { + confirmed, + unconfirmed + } = history.length ? await client.request("blockchain.scripthash.get_balance", scripthash) : { + confirmed: 0, + unconfirmed: 0 + }; + return { + address, + path: path2, + history, + empty, + confirmed, + unconfirmed + }; + })); + var getPagination = (perPage, txs) => ({ + index: 1, + size: perPage, + total: Math.ceil(txs.length / perPage) + }); + var sumAddressValues = (transactions, address, getVinVouts) => transactions.flatMap((tx) => getVinVouts(tx).filter(({ + addresses + }) => addresses?.includes(address)).map(({ + value + }) => value ? Number.parseFloat(value) : 0)).reduce((a, b) => a + b, 0); + exports2.sumAddressValues = sumAddressValues; + var getAccountInfo = async (client, payload) => { + const { + descriptor, + details = "basic", + pageSize = PAGE_SIZE_DEFAULT + } = payload; + const network = client.getInfo()?.network; + const parsed = (0, utils_1.tryGetScripthash)(descriptor, network); + if (parsed.valid) { + const { + confirmed: confirmed2, + unconfirmed: unconfirmed2, + history: history2 + } = await Promise.all([client.request("blockchain.scripthash.get_balance", parsed.scripthash), client.request("blockchain.scripthash.get_history", parsed.scripthash)]).then(([{ + confirmed: confirmed3, + unconfirmed: unconfirmed3 + }, history3]) => ({ + confirmed: confirmed3, + unconfirmed: unconfirmed3, + history: history3 + })); + const historyUnconfirmed2 = history2.filter((r) => r.height <= 0).length; + const transactions2 = details === "txs" ? await (0, utils_1.getTransactions)(client, history2).then((txs) => txs.map((tx) => (0, blockbook_1.transformTransaction)(tx, descriptor))).then(blockchain_link_utils_1.sortTxsFromLatest) : void 0; + return { + descriptor, + balance: confirmed2.toString(), + availableBalance: (confirmed2 + unconfirmed2).toString(), + empty: !history2.length, + history: { + total: history2.length - historyUnconfirmed2, + unconfirmed: historyUnconfirmed2, + transactions: transactions2 + }, + page: details === "txs" ? getPagination(pageSize, transactions2 ?? []) : void 0 + }; + } + const discover = (0, utils_1.discoverAddress)(client); + const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, "receive", network).then(getBalances(client)); + const change = await (0, utxo_lib_1.discovery)(discover, descriptor, "change", network).then(getBalances(client)); + const batch = receive.concat(change); + const [confirmed, unconfirmed] = batch.reduce(([c, u], { + confirmed: confirmed2, + unconfirmed: unconfirmed2 + }) => [c + confirmed2, u + unconfirmed2], [0, 0]); + const history = batch.flatMap(({ + history: history2 + }) => history2); + const historyUnconfirmed = history.filter((r) => r.height <= 0).length; + const transformAddressInfo = ({ + address, + path: path2, + history: history2, + confirmed: confirmed2 + }) => ({ + address, + path: path2, + transfers: history2.length, + balance: confirmed2.toString(), + sent: "0", + received: "0" + }); + const addresses = { + change: change.map(transformAddressInfo), + unused: receive.filter((recv) => !recv.history.length).map(transformAddressInfo), + used: receive.filter((recv) => recv.history.length).map(transformAddressInfo) + }; + const transactions = ["tokenBalances", "txids", "txs"].includes(details) ? await (0, utils_1.getTransactions)(client, history).then((txs) => txs.map((tx) => (0, blockbook_1.transformTransaction)(tx, addresses))).then(blockchain_link_utils_1.sortTxsFromLatest) : []; + const extendAddressInfo = ({ + address, + path: path2, + transfers, + balance + }) => ({ + address, + path: path2, + transfers, + balance: "0", + sent: "0", + received: "0", + ...["tokenBalances", "txids", "txs"].includes(details) && transfers ? { + balance, + sent: (0, exports2.sumAddressValues)(transactions, address, (tx) => tx.details.vin).toString(), + received: (0, exports2.sumAddressValues)(transactions, address, (tx) => tx.details.vout).toString() + } : {} + }); + return { + descriptor, + balance: confirmed.toString(), + availableBalance: (confirmed + unconfirmed).toString(), + empty: !history.length, + history: { + total: history.length - historyUnconfirmed, + unconfirmed: historyUnconfirmed, + transactions: details === "txs" ? transactions : void 0 + }, + addresses: details !== "basic" ? { + change: addresses.change.map(extendAddressInfo), + unused: addresses.unused.map(extendAddressInfo), + used: addresses.used.map(extendAddressInfo) + } : void 0, + page: details === "txs" ? getPagination(pageSize, transactions) : void 0 + }; + }; + exports2.default = getAccountInfo; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountUtxo.js +var require_getAccountUtxo = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountUtxo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_lib(); + var utxo_lib_1 = require_lib18(); + var utils_2 = require_utils24(); + var transformUtxo = (currentHeight, addressInfo = {}) => ({ + height, + tx_hash, + tx_pos, + value + }) => ({ + txid: tx_hash, + vout: tx_pos, + amount: value.toString(), + address: "", + path: "", + ...addressInfo, + ...height ? { + blockHeight: height, + confirmations: currentHeight - height + 1 + } : { + blockHeight: -1, + confirmations: 0 + } + }); + var getAccountUtxo = async (client, descriptor) => { + const { + block: { + height + }, + network + } = client.getInfo() || (0, utils_1.throwError)("Client not initialized"); + const parsed = (0, utils_2.tryGetScripthash)(descriptor, network); + if (parsed.valid) { + const utxos = await client.request("blockchain.scripthash.listunspent", parsed.scripthash); + return utxos.map(transformUtxo(height)); + } + const discover = (0, utils_2.discoverAddress)(client); + const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, "receive", network); + const change = await (0, utxo_lib_1.discovery)(discover, descriptor, "change", network); + const result = await Promise.all(receive.concat(change).filter((a) => a.history.length).map(({ + address, + path: path2, + scripthash + }) => client.request("blockchain.scripthash.listunspent", scripthash).then((utxos) => utxos.map(transformUtxo(height, { + address, + path: path2 + }))))).then((res) => res.flat()); + return result; + }; + exports2.default = getAccountUtxo; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getBlockHash.js +var require_getBlockHash = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getBlockHash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_utils24(); + var getBlockHash = async (client, payload) => { + const blockheader = await client.request("blockchain.block.header", payload); + return (0, utils_1.blockheaderToBlockhash)(blockheader); + }; + exports2.default = getBlockHash; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getInfo.js +var require_getInfo = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_lib(); + var utils_2 = require_utils24(); + var getInfo = (client) => { + const { + url, + coin, + block: { + hex, + height + }, + version: [_name, version] + } = client.getInfo() || (0, utils_1.throwError)("Client not initialized"); + return Promise.resolve({ + url, + version, + blockHeight: height, + blockHash: (0, utils_2.blockheaderToBlockhash)(hex), + name: "Bitcoin", + shortcut: coin, + network: coin, + testnet: coin === "REGTEST", + decimals: 8 + }); + }; + exports2.default = getInfo; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getTransaction.js +var require_getTransaction = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var blockbook_1 = require_blockbook(); + var utils_1 = require_utils24(); + var getTransaction = async (client, payload) => { + const [tx] = await (0, utils_1.getTransactions)(client, [{ + tx_hash: payload, + height: -1 + }]); + return (0, blockbook_1.transformTransaction)(tx); + }; + exports2.default = getTransaction; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/pushTransaction.js +var require_pushTransaction = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/pushTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var pushTransaction = async (client, payload) => { + const res = await client.request("blockchain.transaction.broadcast", payload.hex); + return res; + }; + exports2.default = pushTransaction; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/index.js +var require_methods2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.pushTransaction = exports2.getTransaction = exports2.getInfo = exports2.getBlockHash = exports2.getAccountUtxo = exports2.getAccountInfo = exports2.getAccountBalanceHistory = exports2.estimateFee = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var estimateFee_1 = require_estimateFee(); + Object.defineProperty(exports2, "estimateFee", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(estimateFee_1).default; + } + }); + var getAccountBalanceHistory_1 = require_getAccountBalanceHistory(); + Object.defineProperty(exports2, "getAccountBalanceHistory", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAccountBalanceHistory_1).default; + } + }); + var getAccountInfo_1 = require_getAccountInfo(); + Object.defineProperty(exports2, "getAccountInfo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAccountInfo_1).default; + } + }); + var getAccountUtxo_1 = require_getAccountUtxo(); + Object.defineProperty(exports2, "getAccountUtxo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAccountUtxo_1).default; + } + }); + var getBlockHash_1 = require_getBlockHash(); + Object.defineProperty(exports2, "getBlockHash", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getBlockHash_1).default; + } + }); + var getInfo_1 = require_getInfo(); + Object.defineProperty(exports2, "getInfo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getInfo_1).default; + } + }); + var getTransaction_1 = require_getTransaction(); + Object.defineProperty(exports2, "getTransaction", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getTransaction_1).default; + } + }); + var pushTransaction_1 = require_pushTransaction(); + Object.defineProperty(exports2, "pushTransaction", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(pushTransaction_1).default; + } + }); + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/base.js +var require_base4 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/base.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SocketBase = void 0; + var TIMEOUT = 1e4; + var KEEP_ALIVE = true; + var SocketBase = class { + socket; + host; + port; + timeout; + keepAlive; + constructor({ + host, + port, + timeout, + keepAlive + }) { + this.host = host; + this.port = port; + this.timeout = timeout !== void 0 ? timeout : TIMEOUT; + this.keepAlive = keepAlive !== void 0 ? keepAlive : KEEP_ALIVE; + } + async connect(listener) { + this.socket = await this.openSocket(listener); + } + close() { + this.socket?.end(); + this.socket?.destroy(); + } + send(data) { + return this.socket?.write(data); + } + configureSocket(socket) { + socket.setTimeout(this.timeout); + socket.setEncoding("utf8"); + socket.setKeepAlive(this.keepAlive); + socket.setNoDelay(true); + } + bindSocket(socket, listener) { + socket.on("connect", () => { + socket.setTimeout(0); + listener.onConnect(); + }); + socket.on("close", (e) => { + listener.onClose(e); + }); + socket.on("timeout", () => { + const e = new Error("ETIMEDOUT"); + e.errorno = "ETIMEDOUT"; + e.code = "ETIMEDOUT"; + e.connect = false; + socket.emit("error", e); + }); + socket.on("data", (chunk) => { + socket.setTimeout(0); + listener.onReceive(chunk); + }); + socket.on("end", (e) => { + socket.setTimeout(0); + listener.onEnd(e); + }); + socket.on("error", (e) => { + listener.onError(e); + }); + } + }; + exports2.SocketBase = SocketBase; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tcp.js +var require_tcp = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tcp.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TcpSocket = void 0; + var net_1 = __require("net"); + var base_1 = require_base4(); + var TcpSocket = class extends base_1.SocketBase { + openSocket(listener) { + const socket = new net_1.Socket(); + this.configureSocket(socket); + this.bindSocket(socket, listener); + return new Promise((resolve, reject) => { + const errorHandler = (err2) => reject(err2); + socket.on("error", errorHandler); + socket.connect(this.port, this.host, () => { + socket.removeListener("error", errorHandler); + resolve(socket); + }); + }); + } + }; + exports2.TcpSocket = TcpSocket; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tls.js +var require_tls = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tls.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TlsSocket = void 0; + var tls_1 = __require("tls"); + var base_1 = require_base4(); + var TlsSocket = class extends base_1.SocketBase { + openSocket(listener) { + const socket = new tls_1.TLSSocket(null); + this.configureSocket(socket); + this.bindSocket(socket, listener); + return new Promise((resolve, reject) => { + const errorHandler = (err2) => reject(err2); + socket.on("error", errorHandler); + socket.connect(this.port, this.host, () => { + socket.removeListener("error", errorHandler); + resolve(socket); + }); + }); + } + }; + exports2.TlsSocket = TlsSocket; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tor.js +var require_tor = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tor.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TorSocket = void 0; + var base_1 = require_base4(); + var TorSocket = class extends base_1.SocketBase { + proxyAgent; + constructor({ + proxyAgent, + ...rest + }) { + super(rest); + this.proxyAgent = proxyAgent; + } + async openSocket(listener) { + const { + host, + port + } = this; + const socket = await this.proxyAgent.connect(null, { + host, + port, + timeout: this.timeout, + secureEndpoint: false + }).catch((e) => { + listener.onError(e); + throw e; + }); + listener.onConnect(); + this.configureSocket(socket); + this.bindSocket(socket, listener); + return socket; + } + }; + exports2.TorSocket = TorSocket; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/index.js +var require_sockets = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createSocket = void 0; + var errors_1 = require_errors7(); + var utils_1 = require_lib(); + var tcp_1 = require_tcp(); + var tls_1 = require_tls(); + var tor_1 = require_tor(); + var createSocket = (url, options) => { + const parsed = (0, utils_1.parseElectrumUrl)(url); + if (!parsed) throw new errors_1.CustomError("Invalid electrum url"); + const { + host, + port, + protocol + } = parsed; + const { + timeout, + keepAlive, + proxyAgent + } = options || {}; + if (proxyAgent) { + return new tor_1.TorSocket({ + host, + port, + timeout, + keepAlive, + proxyAgent + }); + } + switch (protocol) { + case "t": + return new tcp_1.TcpSocket({ + host, + port, + timeout, + keepAlive + }); + case "s": + default: + return new tls_1.TlsSocket({ + host, + port, + timeout, + keepAlive + }); + } + }; + exports2.createSocket = createSocket; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/electrum/index.js +var require_electrum2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/electrum/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Electrum; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var baseWorker_1 = require_baseWorker(); + var caching_1 = require_caching(); + var L = tslib_1.__importStar(require_listeners()); + var M = tslib_1.__importStar(require_methods2()); + var sockets_1 = require_sockets(); + var onRequest = async (request) => { + const client = await request.connect(); + switch (request.type) { + case constants_1.MESSAGES.GET_INFO: + return { + type: constants_1.RESPONSES.GET_INFO, + payload: await M.getInfo(client) + }; + case constants_1.MESSAGES.GET_BLOCK_HASH: + return { + type: constants_1.RESPONSES.GET_BLOCK_HASH, + payload: await M.getBlockHash(client, request.payload) + }; + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: await M.getAccountInfo(client, request.payload) + }; + case constants_1.MESSAGES.GET_ACCOUNT_UTXO: + return { + type: constants_1.RESPONSES.GET_ACCOUNT_UTXO, + payload: await M.getAccountUtxo(client, request.payload) + }; + case constants_1.MESSAGES.GET_TRANSACTION: + return { + type: constants_1.RESPONSES.GET_TRANSACTION, + payload: await M.getTransaction(client, request.payload) + }; + case constants_1.MESSAGES.GET_TRANSACTION_HEX: + return { + type: constants_1.RESPONSES.GET_TRANSACTION_HEX, + payload: await client.request("blockchain.transaction.get", request.payload, false) + }; + case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY: + return { + type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY, + payload: await M.getAccountBalanceHistory(client, request.payload) + }; + case constants_1.MESSAGES.ESTIMATE_FEE: + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload: await M.estimateFee(client, request.payload) + }; + case constants_1.MESSAGES.PUSH_TRANSACTION: + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload: await M.pushTransaction(client, request.payload) + }; + case constants_1.MESSAGES.SUBSCRIBE: + switch (request.payload.type) { + case "block": + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: request.blockListener.subscribe() + }; + case "addresses": + case "accounts": + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: await request.txListener.subscribe(request.payload) + }; + default: + throw new errors_1.CustomError(`Subscription ${request.payload.type} not implemented`); + } + case constants_1.MESSAGES.UNSUBSCRIBE: + switch (request.payload.type) { + case "block": + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: request.blockListener.unsubscribe() + }; + case "addresses": + case "accounts": + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: await request.txListener.unsubscribe(request.payload) + }; + default: + throw new errors_1.CustomError(`Subscription ${request.payload.type} not implemented`); + } + case "raw": { + const { + method, + params + } = request.payload; + return client.request(method, ...params).then((res) => ({ + type: method, + payload: res + })); + } + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var ElectrumWorker = class extends baseWorker_1.BaseWorker { + blockListener; + txListener; + constructor() { + super(); + this.blockListener = L.blockListener(this); + this.txListener = L.txListener(this); + } + isConnected(api) { + return api?.isConnected() ?? false; + } + async tryConnect(url) { + const { + debug, + timeout, + keepAlive, + name + } = this.settings; + const socket = (0, sockets_1.createSocket)(url, { + timeout, + keepAlive, + proxyAgent: this.proxyAgent + }); + const api = new caching_1.CachingElectrumClient(); + await api.connect(socket, { + url, + coin: name ?? "BTC", + debug, + client: { + name: "blockchain-link", + protocolVersion: "1.4" + } + }); + this.post({ + id: -1, + type: constants_1.RESPONSES.CONNECTED + }); + return api; + } + disconnect() { + if (this.api?.isConnected()) { + this.api.close(); + } + } + cleanup() { + if (this.api) { + this.api.close(); + } + super.cleanup(); + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + post: (data) => this.post(data), + state: this.state, + blockListener: this.blockListener, + txListener: this.txListener + }; + const response = await onRequest(request); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, error); + } + } + }; + function Electrum() { + return new ElectrumWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new ElectrumWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/@solana/errors/dist/index.node.cjs +var require_index_node = __commonJS({ + "node_modules/@solana/errors/dist/index.node.cjs"(exports2) { + "use strict"; + var SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1; + var SOLANA_ERROR__INVALID_NONCE = 2; + var SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3; + var SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4; + var SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5; + var SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6; + var SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7; + var SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8; + var SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9; + var SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR = 10; + var SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700; + var SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603; + var SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602; + var SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601; + var SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = -32016; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = -32015; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = -32014; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = -32013; + var SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = -32011; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = -32010; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = -32009; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = -32006; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = -32003; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = -32002; + var SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001; + var SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 28e5; + var SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001; + var SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002; + var SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003; + var SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004; + var SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005; + var SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006; + var SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007; + var SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008; + var SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 2800009; + var SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010; + var SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS = 2800011; + var SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 323e4; + var SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001; + var SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002; + var SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003; + var SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230004; + var SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 361e4; + var SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001; + var SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 3610002; + var SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003; + var SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 3610004; + var SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005; + var SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006; + var SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3610007; + var SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611e3; + var SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704e3; + var SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001; + var SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002; + var SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003; + var SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004; + var SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128e3; + var SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001; + var SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002; + var SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615e3; + var SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005; + var SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006; + var SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007; + var SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615008; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 4615009; + var SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010; + var SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011; + var SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = 4615013; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = 4615014; + var SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015; + var SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016; + var SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018; + var SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019; + var SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615024; + var SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4615025; + var SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029; + var SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = 4615030; + var SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031; + var SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032; + var SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033; + var SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034; + var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037; + var SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4615038; + var SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039; + var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = 4615040; + var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615041; + var SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042; + var SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043; + var SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044; + var SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045; + var SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046; + var SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047; + var SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048; + var SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049; + var SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050; + var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = 4615051; + var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052; + var SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = 4615053; + var SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = 4615054; + var SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508e3; + var SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001; + var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002; + var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003; + var SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004; + var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005; + var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508006; + var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007; + var SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008; + var SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = 5508009; + var SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010; + var SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011; + var SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663e3; + var SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = 5663001; + var SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002; + var SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003; + var SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004; + var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = 5663005; + var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = 5663006; + var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = 5663007; + var SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = 5663008; + var SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009; + var SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010; + var SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011; + var SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012; + var SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = 5663013; + var SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = 5663014; + var SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 5663015; + var SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5663016; + var SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017; + var SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663018; + var SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = 5663019; + var SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT = 5663020; + var SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 705e4; + var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001; + var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002; + var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003; + var SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004; + var SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050005; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006; + var SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007; + var SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008; + var SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009; + var SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011; + var SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7050013; + var SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014; + var SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015; + var SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050016; + var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = 7050017; + var SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019; + var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = 7050020; + var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = 7050021; + var SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022; + var SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = 7050023; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 7050024; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = 7050025; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 7050026; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 7050027; + var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = 7050028; + var SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = 7050029; + var SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030; + var SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 7050031; + var SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = 7050032; + var SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = 7050033; + var SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034; + var SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = 7050035; + var SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036; + var SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078e3; + var SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001; + var SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002; + var SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003; + var SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = 8078004; + var SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005; + var SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006; + var SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007; + var SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008; + var SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009; + var SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010; + var SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011; + var SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012; + var SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013; + var SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014; + var SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015; + var SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8078016; + var SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017; + var SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018; + var SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = 8078019; + var SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 8078020; + var SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021; + var SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = 8078022; + var SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 81e5; + var SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001; + var SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002; + var SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003; + var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = 819e4; + var SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = 8190001; + var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = 8190002; + var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003; + var SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004; + var SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = 99e5; + var SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = 9900001; + var SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = 9900002; + var SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 9900003; + var SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = 9900004; + function encodeValue(value) { + if (Array.isArray(value)) { + const commaSeparatedValues = value.map(encodeValue).join( + "%2C%20" + /* ", " */ + ); + return "%5B" + commaSeparatedValues + /* "]" */ + "%5D"; + } else if (typeof value === "bigint") { + return `${value}n`; + } else { + return encodeURIComponent( + String( + value != null && Object.getPrototypeOf(value) === null ? ( + // Plain objects with no prototype don't have a `toString` method. + // Convert them before stringifying them. + { ...value } + ) : value + ) + ); + } + } + function encodeObjectContextEntry([key, value]) { + return `${key}=${encodeValue(value)}`; + } + function encodeContextObject(context) { + const searchParamsString = Object.entries(context).map(encodeObjectContextEntry).join("&"); + return Buffer.from(searchParamsString, "utf8").toString("base64"); + } + var SolanaErrorMessages = { + [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: "Account not found at address: $address", + [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]: "Not all accounts were decoded. Encoded accounts found at addresses: $addresses.", + [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: "Expected decoded account at address: $address", + [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: "Failed to decode account data at address: $address", + [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: "Accounts not found at addresses: $addresses", + [SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]: "Unable to find a viable program address bump seed.", + [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: "$putativeAddress is not a base58-encoded address.", + [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]: "Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.", + [SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]: "The `CryptoKey` must be an `Ed25519` public key.", + [SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS]: "$putativeOffCurveAddress is not a base58-encoded off-curve address.", + [SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]: "Invalid seeds; point must fall off the Ed25519 curve.", + [SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]: "Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].", + [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]: "A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.", + [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]: "The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.", + [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]: "Expected program derived address bump to be in the range [0, 255], got: $bump.", + [SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]: "Program address cannot end with PDA marker.", + [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]: "Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.", + [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]: "Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.", + [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]: "The network has progressed past the last block for which this transaction could have been committed.", + [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]: "Codec [$codecDescription] cannot decode empty byte arrays.", + [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]: "Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.", + [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]: "Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].", + [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]: "Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].", + [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]: "Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].", + [SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]: "Encoder and decoder must either both be fixed-size or variable-size.", + [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]: "Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.", + [SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]: "Expected a fixed-size codec, got a variable-size one.", + [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]: "Codec [$codecDescription] expected a positive byte length, got $bytesLength.", + [SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]: "Expected a variable-size codec, got a fixed-size one.", + [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]: "Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].", + [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]: "Codec [$codecDescription] expected $expected bytes, got $bytesLength.", + [SOLANA_ERROR__CODECS__INVALID_CONSTANT]: "Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].", + [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]: "Invalid discriminated union variant. Expected one of [$variants], got $value.", + [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]: "Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.", + [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]: "Invalid literal union variant. Expected one of [$variants], got $value.", + [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]: "Expected [$codecDescription] to have $expected items, got $actual.", + [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: "Invalid value $value for base $base with alphabet $alphabet.", + [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]: "Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.", + [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]: "Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.", + [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]: "Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.", + [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]: "Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].", + [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]: "Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.", + [SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]: "No random values implementation could be found.", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]: "instruction requires an uninitialized account", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]: "instruction tries to borrow reference for an account which is already borrowed", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]: "instruction left account with an outstanding borrowed reference", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]: "program other than the account's owner changed the size of the account data", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]: "account data too small for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]: "instruction expected an executable account", + [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]: "An account does not have enough lamports to be rent-exempt", + [SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]: "Program arithmetic overflowed", + [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: "Failed to serialize or deserialize account data: $encodedData", + [SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]: "Builtin programs must consume compute units", + [SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]: "Cross-program invocation call depth too deep", + [SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]: "Computational budget exceeded", + [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: "custom program error: #$code", + [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]: "instruction contains duplicate accounts", + [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]: "instruction modifications of multiply-passed account differ", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]: "executable accounts must be rent exempt", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]: "instruction changed executable accounts data", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]: "instruction changed the balance of an executable account", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]: "instruction changed executable bit of an account", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]: "instruction modified data of an account it does not own", + [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]: "instruction spent from the balance of an account it does not own", + [SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]: "generic instruction error", + [SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]: "Provided owner is not allowed", + [SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]: "Account is immutable", + [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]: "Incorrect authority provided", + [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]: "incorrect program id for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]: "insufficient funds for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]: "invalid account data for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]: "Invalid account owner", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]: "invalid program argument", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]: "program returned invalid error code", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]: "invalid instruction data", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]: "Failed to reallocate account data", + [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]: "Provided seeds do not result in a valid address", + [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]: "Accounts data allocations exceeded the maximum allowed per transaction", + [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]: "Max accounts exceeded", + [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]: "Max instruction trace length exceeded", + [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]: "Length of the seed is too long for address generation", + [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]: "An account required by the instruction is missing", + [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]: "missing required signature for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]: "instruction illegally modified the program id of an account", + [SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]: "insufficient account keys for instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]: "Cross-program invocation with unauthorized signer or writable account", + [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]: "Failed to create program execution environment", + [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]: "Program failed to compile", + [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]: "Program failed to complete", + [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]: "instruction modified data of a read-only account", + [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]: "instruction changed the balance of a read-only account", + [SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]: "Cross-program invocation reentrancy not allowed for this instruction", + [SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]: "instruction modified rent epoch of an account", + [SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]: "sum of account balances before and after instruction do not match", + [SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]: "instruction requires an initialized account", + [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: "", + [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]: "Unsupported program id", + [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]: "Unsupported sysvar", + [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: "The instruction does not have any accounts.", + [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: "The instruction does not have any data.", + [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]: "Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.", + [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]: "Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.", + [SOLANA_ERROR__INVALID_NONCE]: "The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`", + [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]: "Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant", + [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]: "Invariant violation: This data publisher does not publish to the channel named `$channelName`. Supported channels include $supportedChannelNames.", + [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]: "Invariant violation: WebSocket message iterator state is corrupt; iterated without first resolving existing message promise. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant", + [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]: "Invariant violation: WebSocket message iterator is missing state storage. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant", + [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]: "Invariant violation: Switch statement non-exhaustive. Received unexpected value `$unexpectedValue`. It should be impossible to hit this error; please file an issue at https://sola.na/web3invariant", + [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: "JSON-RPC error: Internal JSON-RPC error ($__serverMessage)", + [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: "JSON-RPC error: Invalid method parameter(s) ($__serverMessage)", + [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]: "JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)", + [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]: "JSON-RPC error: The method does not exist / is not available ($__serverMessage)", + [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]: "JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)", + [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: "Minimum context slot has not been reached", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: "Node is unhealthy; behind by $numSlotsBehind slots", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]: "No snapshot", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: "Transaction simulation failed", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]: "Transaction history is not available from this node", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: "$__serverMessage", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]: "Transaction signature length mismatch", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]: "Transaction signature verification failure", + [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: "$__serverMessage", + [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: "Key pair bytes must be of length 64, got $byteLength.", + [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]: "Expected private key bytes with length 32. Actual length: $actualLength.", + [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]: "Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.", + [SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]: "The provided private key does not match the provided public key.", + [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]: "Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.", + [SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]: "Lamports value must be in the range [0, 2e64-1]", + [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: "`$value` cannot be parsed as a `BigInt`", + [SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]: "$message", + [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: "`$value` cannot be parsed as a `Number`", + [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: "No nonce account could be found at address `$nonceAccountAddress`", + [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]: "The notification name must end in 'Notifications' and the API must supply a subscription plan creator function for the notification '$notificationName'.", + [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]: "WebSocket was closed before payload could be added to the send buffer", + [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]: "WebSocket connection closed", + [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: "WebSocket failed to connect", + [SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]: "Failed to obtain a subscription id from the server", + [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: "Could not find an API plan for RPC method: `$method`", + [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]: "The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was `$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds `Number.MAX_SAFE_INTEGER`.", + [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: "HTTP error ($statusCode): $message", + [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]: "HTTP header(s) forbidden: $headers. Learn more at https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.", + [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]: "Multiple distinct signers were identified for address `$address`. Please ensure that you are using the same signer instance for each address.", + [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]: "The provided value does not implement the `KeyPairSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]: "The provided value does not implement the `MessageModifyingSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]: "The provided value does not implement the `MessagePartialSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]: "The provided value does not implement any of the `MessageSigner` interfaces", + [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]: "The provided value does not implement the `TransactionModifyingSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]: "The provided value does not implement the `TransactionPartialSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]: "The provided value does not implement the `TransactionSendingSigner` interface", + [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]: "The provided value does not implement any of the `TransactionSigner` interfaces", + [SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]: "More than one `TransactionSendingSigner` was identified.", + [SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]: "No `TransactionSendingSigner` was identified. Please provide a valid `TransactionWithSingleSendingSigner` transaction.", + [SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]: "Wallet account signers do not support signing multiple messages/transactions in a single operation", + [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: "Cannot export a non-extractable key.", + [SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]: "No digest implementation could be found.", + [SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]: "Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.", + [SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]: "This runtime does not support the generation of Ed25519 key pairs.\n\nInstall @solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in environments that do not support Ed25519.\n\nFor a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20.", + [SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]: "No signature verification implementation could be found.", + [SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]: "No key generation implementation could be found.", + [SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]: "No signing implementation could be found.", + [SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]: "No key export implementation could be found.", + [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]: "Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given", + [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]: "Transaction processing left an account with an outstanding borrowed reference", + [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]: "Account in use", + [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]: "Account loaded twice", + [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]: "Attempt to debit an account but found no record of a prior credit.", + [SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]: "Transaction loads an address table account that doesn't exist", + [SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]: "This transaction has already been processed", + [SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]: "Blockhash not found", + [SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]: "Loader call chain is too deep", + [SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]: "Transactions are currently disabled due to cluster maintenance", + [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]: "Transaction contains a duplicate instruction ($index) that is not allowed", + [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: "Insufficient funds for fee", + [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]: "Transaction results in an account ($accountIndex) with insufficient funds for rent", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]: "This account may not be used to pay transaction fees", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]: "Transaction contains an invalid account reference", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]: "Transaction loads an address table account with invalid data", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]: "Transaction address table lookup uses an invalid index", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]: "Transaction loads an address table account with an invalid owner", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]: "LoadedAccountsDataSizeLimit set for transaction must be greater than 0.", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]: "This program may not be used for executing instructions", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]: "Transaction leaves an account with a lower balance than rent-exempt minimum", + [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]: "Transaction loads a writable account that cannot be written", + [SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]: "Transaction exceeded max loaded accounts data size cap", + [SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]: "Transaction requires a fee but has no signature present", + [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]: "Attempt to load a program that does not exist", + [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]: "Execution of the program referenced by account at index $accountIndex is temporarily restricted.", + [SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]: "ResanitizationNeeded", + [SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]: "Transaction failed to sanitize accounts offsets correctly", + [SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]: "Transaction did not pass signature verification", + [SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]: "Transaction locked too many accounts", + [SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]: "Sum of account balances before and after transaction do not match", + [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: "The transaction failed with the error `$errorName`", + [SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]: "Transaction version is unsupported", + [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]: "Transaction would exceed account data limit within the block", + [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]: "Transaction would exceed total account data limit", + [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]: "Transaction would exceed max account limit within the block", + [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]: "Transaction would exceed max Block Cost Limit", + [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]: "Transaction would exceed max Vote Cost Limit", + [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]: "Attempted to sign a transaction with an address that is not a signer for it", + [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: "Transaction is missing an address at index: $index.", + [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]: "Transaction has no expected signers therefore it cannot be encoded", + [SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]: "Transaction size $transactionSize exceeds limit of $transactionSizeLimit bytes", + [SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]: "Transaction does not have a blockhash lifetime", + [SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]: "Transaction is not a durable nonce transaction", + [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]: "Contents of these address lookup tables unknown: $lookupTableAddresses", + [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]: "Lookup of address at index $highestRequestedIndex failed for lookup table `$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table may have been extended since its contents were retrieved", + [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]: "No fee payer set in CompiledTransaction", + [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]: "Could not find program address at index $index", + [SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]: "Failed to estimate the compute unit consumption for this transaction message. This is likely because simulating the transaction failed. Inspect the `cause` property of this error to learn more", + [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]: "Transaction failed when it was simulated in order to estimate the compute unit consumption. The compute unit estimate provided is for a transaction that failed when simulated and may not be representative of the compute units this transaction would consume if successful. Inspect the `cause` property of this error to learn more", + [SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]: "Transaction is missing a fee payer.", + [SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]: "Could not determine this transaction's signature. Make sure that the transaction has been signed by its fee payer.", + [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]: "Transaction first instruction is not advance nonce account instruction.", + [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]: "Transaction with no instructions cannot be durable nonce transaction.", + [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]: "This transaction includes an address (`$programAddress`) which is both invoked and set as the fee payer. Program addresses may not pay fees", + [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]: "This transaction includes an address (`$programAddress`) which is both invoked and marked writable. Program addresses may not be writable", + [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]: "The transaction message expected the transaction to have $signerAddressesLength signatures, got $signaturesLength.", + [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: "Transaction is missing signatures for addresses: $addresses.", + [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]: "Transaction version must be in the range [0, 127]. `$actualVersion` given" + }; + var START_INDEX = "i"; + var TYPE = "t"; + function getHumanReadableErrorMessage(code, context = {}) { + const messageFormatString = SolanaErrorMessages[code]; + if (messageFormatString.length === 0) { + return ""; + } + let state; + function commitStateUpTo(endIndex) { + if (state[TYPE] === 2) { + const variableName = messageFormatString.slice(state[START_INDEX] + 1, endIndex); + fragments.push( + variableName in context ? ( + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + `${context[variableName]}` + ) : `$${variableName}` + ); + } else if (state[TYPE] === 1) { + fragments.push(messageFormatString.slice(state[START_INDEX], endIndex)); + } + } + const fragments = []; + messageFormatString.split("").forEach((char, ii) => { + if (ii === 0) { + state = { + [START_INDEX]: 0, + [TYPE]: messageFormatString[0] === "\\" ? 0 : messageFormatString[0] === "$" ? 2 : 1 + /* Text */ + }; + return; + } + let nextState; + switch (state[TYPE]) { + case 0: + nextState = { + [START_INDEX]: ii, + [TYPE]: 1 + /* Text */ + }; + break; + case 1: + if (char === "\\") { + nextState = { + [START_INDEX]: ii, + [TYPE]: 0 + /* EscapeSequence */ + }; + } else if (char === "$") { + nextState = { + [START_INDEX]: ii, + [TYPE]: 2 + /* Variable */ + }; + } + break; + case 2: + if (char === "\\") { + nextState = { + [START_INDEX]: ii, + [TYPE]: 0 + /* EscapeSequence */ + }; + } else if (char === "$") { + nextState = { + [START_INDEX]: ii, + [TYPE]: 2 + /* Variable */ + }; + } else if (!char.match(/\w/)) { + nextState = { + [START_INDEX]: ii, + [TYPE]: 1 + /* Text */ + }; + } + break; + } + if (nextState) { + if (state !== nextState) { + commitStateUpTo(ii); + } + state = nextState; + } + }); + commitStateUpTo(); + return fragments.join(""); + } + function getErrorMessage(code, context = {}) { + if (process.env.NODE_ENV !== "production") { + return getHumanReadableErrorMessage(code, context); + } else { + let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \`npx @solana/errors decode -- ${code}`; + if (Object.keys(context).length) { + decodingAdviceMessage += ` '${encodeContextObject(context)}'`; + } + return `${decodingAdviceMessage}\``; + } + } + function isSolanaError(e, code) { + const isSolanaError2 = e instanceof Error && e.name === "SolanaError"; + if (isSolanaError2) { + if (code !== void 0) { + return e.context.__code === code; + } + return true; + } + return false; + } + var SolanaError = class extends Error { + /** + * Indicates the root cause of this {@link SolanaError}, if any. + * + * For example, a transaction error might have an instruction error as its root cause. In this + * case, you will be able to access the instruction error on the transaction error as `cause`. + */ + cause = this.cause; + /** + * Contains context that can assist in understanding or recovering from a {@link SolanaError}. + */ + context; + constructor(...[code, contextAndErrorOptions]) { + let context; + let errorOptions; + if (contextAndErrorOptions) { + const { cause, ...contextRest } = contextAndErrorOptions; + if (cause) { + errorOptions = { cause }; + } + if (Object.keys(contextRest).length > 0) { + context = contextRest; + } + } + const message = getErrorMessage(code, context); + super(message, errorOptions); + this.context = { + __code: code, + ...context + }; + this.name = "SolanaError"; + } + }; + function safeCaptureStackTrace(...args) { + if ("captureStackTrace" in Error && typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(...args); + } + } + function getSolanaErrorFromRpcError({ errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }, constructorOpt) { + let rpcErrorName; + let rpcErrorContext; + if (typeof rpcEnumError === "string") { + rpcErrorName = rpcEnumError; + } else { + rpcErrorName = Object.keys(rpcEnumError)[0]; + rpcErrorContext = rpcEnumError[rpcErrorName]; + } + const codeOffset = orderedErrorNames.indexOf(rpcErrorName); + const errorCode = errorCodeBaseOffset + codeOffset; + const errorContext = getErrorContext(errorCode, rpcErrorName, rpcErrorContext); + const err2 = new SolanaError(errorCode, errorContext); + safeCaptureStackTrace(err2, constructorOpt); + return err2; + } + var ORDERED_ERROR_NAMES = [ + // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/program/src/instruction.rs + // If this list ever gets too large, consider implementing a compression strategy like this: + // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47 + "GenericError", + "InvalidArgument", + "InvalidInstructionData", + "InvalidAccountData", + "AccountDataTooSmall", + "InsufficientFunds", + "IncorrectProgramId", + "MissingRequiredSignature", + "AccountAlreadyInitialized", + "UninitializedAccount", + "UnbalancedInstruction", + "ModifiedProgramId", + "ExternalAccountLamportSpend", + "ExternalAccountDataModified", + "ReadonlyLamportChange", + "ReadonlyDataModified", + "DuplicateAccountIndex", + "ExecutableModified", + "RentEpochModified", + "NotEnoughAccountKeys", + "AccountDataSizeChanged", + "AccountNotExecutable", + "AccountBorrowFailed", + "AccountBorrowOutstanding", + "DuplicateAccountOutOfSync", + "Custom", + "InvalidError", + "ExecutableDataModified", + "ExecutableLamportChange", + "ExecutableAccountNotRentExempt", + "UnsupportedProgramId", + "CallDepth", + "MissingAccount", + "ReentrancyNotAllowed", + "MaxSeedLengthExceeded", + "InvalidSeeds", + "InvalidRealloc", + "ComputationalBudgetExceeded", + "PrivilegeEscalation", + "ProgramEnvironmentSetupFailure", + "ProgramFailedToComplete", + "ProgramFailedToCompile", + "Immutable", + "IncorrectAuthority", + "BorshIoError", + "AccountNotRentExempt", + "InvalidAccountOwner", + "ArithmeticOverflow", + "UnsupportedSysvar", + "IllegalOwner", + "MaxAccountsDataAllocationsExceeded", + "MaxAccountsExceeded", + "MaxInstructionTraceLengthExceeded", + "BuiltinProgramsMustConsumeComputeUnits" + ]; + function getSolanaErrorFromInstructionError(index, instructionError) { + const numberIndex = Number(index); + return getSolanaErrorFromRpcError( + { + errorCodeBaseOffset: 4615001, + getErrorContext(errorCode, rpcErrorName, rpcErrorContext) { + if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) { + return { + errorName: rpcErrorName, + index: numberIndex, + ...rpcErrorContext !== void 0 ? { instructionErrorContext: rpcErrorContext } : null + }; + } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) { + return { + code: Number(rpcErrorContext), + index: numberIndex + }; + } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR) { + return { + encodedData: rpcErrorContext, + index: numberIndex + }; + } + return { index: numberIndex }; + }, + orderedErrorNames: ORDERED_ERROR_NAMES, + rpcEnumError: instructionError + }, + getSolanaErrorFromInstructionError + ); + } + var ORDERED_ERROR_NAMES2 = [ + // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/src/transaction/error.rs + // If this list ever gets too large, consider implementing a compression strategy like this: + // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47 + "AccountInUse", + "AccountLoadedTwice", + "AccountNotFound", + "ProgramAccountNotFound", + "InsufficientFundsForFee", + "InvalidAccountForFee", + "AlreadyProcessed", + "BlockhashNotFound", + // `InstructionError` intentionally omitted; delegated to `getSolanaErrorFromInstructionError` + "CallChainTooDeep", + "MissingSignatureForFee", + "InvalidAccountIndex", + "SignatureFailure", + "InvalidProgramForExecution", + "SanitizeFailure", + "ClusterMaintenance", + "AccountBorrowOutstanding", + "WouldExceedMaxBlockCostLimit", + "UnsupportedVersion", + "InvalidWritableAccount", + "WouldExceedMaxAccountCostLimit", + "WouldExceedAccountDataBlockLimit", + "TooManyAccountLocks", + "AddressLookupTableNotFound", + "InvalidAddressLookupTableOwner", + "InvalidAddressLookupTableData", + "InvalidAddressLookupTableIndex", + "InvalidRentPayingAccount", + "WouldExceedMaxVoteCostLimit", + "WouldExceedAccountDataTotalLimit", + "DuplicateInstruction", + "InsufficientFundsForRent", + "MaxLoadedAccountsDataSizeExceeded", + "InvalidLoadedAccountsDataSizeLimit", + "ResanitizationNeeded", + "ProgramExecutionTemporarilyRestricted", + "UnbalancedTransaction" + ]; + function getSolanaErrorFromTransactionError(transactionError) { + if (typeof transactionError === "object" && "InstructionError" in transactionError) { + return getSolanaErrorFromInstructionError( + ...transactionError.InstructionError + ); + } + return getSolanaErrorFromRpcError( + { + errorCodeBaseOffset: 7050001, + getErrorContext(errorCode, rpcErrorName, rpcErrorContext) { + if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) { + return { + errorName: rpcErrorName, + ...rpcErrorContext !== void 0 ? { transactionErrorContext: rpcErrorContext } : null + }; + } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) { + return { + index: Number(rpcErrorContext) + }; + } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT || errorCode === SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED) { + return { + accountIndex: Number(rpcErrorContext.account_index) + }; + } + }, + orderedErrorNames: ORDERED_ERROR_NAMES2, + rpcEnumError: transactionError + }, + getSolanaErrorFromTransactionError + ); + } + function getSolanaErrorFromJsonRpcError(putativeErrorResponse) { + let out; + if (isRpcErrorResponse(putativeErrorResponse)) { + const { code: rawCode, data, message } = putativeErrorResponse; + const code = Number(rawCode); + if (code === SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) { + const { err: err2, ...preflightErrorContext } = data; + const causeObject = err2 ? { cause: getSolanaErrorFromTransactionError(err2) } : null; + out = new SolanaError(SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, { + ...preflightErrorContext, + ...causeObject + }); + } else { + let errorContext; + switch (code) { + case SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR: + case SOLANA_ERROR__JSON_RPC__INVALID_PARAMS: + case SOLANA_ERROR__JSON_RPC__INVALID_REQUEST: + case SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND: + case SOLANA_ERROR__JSON_RPC__PARSE_ERROR: + case SOLANA_ERROR__JSON_RPC__SCAN_ERROR: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: + case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: + errorContext = { __serverMessage: message }; + break; + default: + if (typeof data === "object" && !Array.isArray(data)) { + errorContext = data; + } + } + out = new SolanaError(code, errorContext); + } + } else { + const message = typeof putativeErrorResponse === "object" && putativeErrorResponse !== null && "message" in putativeErrorResponse && typeof putativeErrorResponse.message === "string" ? putativeErrorResponse.message : "Malformed JSON-RPC error with no message attribute"; + out = new SolanaError(SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, { error: putativeErrorResponse, message }); + } + safeCaptureStackTrace(out, getSolanaErrorFromJsonRpcError); + return out; + } + function isRpcErrorResponse(value) { + return typeof value === "object" && value !== null && "code" in value && "message" in value && (typeof value.code === "number" || typeof value.code === "bigint") && typeof value.message === "string"; + } + exports2.SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND; + exports2.SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED; + exports2.SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT; + exports2.SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT; + exports2.SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND; + exports2.SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED; + exports2.SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS; + exports2.SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH; + exports2.SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY; + exports2.SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS = SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS; + exports2.SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE; + exports2.SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = SOLANA_ERROR__ADDRESSES__MALFORMED_PDA; + exports2.SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED; + exports2.SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED; + exports2.SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE; + exports2.SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER; + exports2.SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE; + exports2.SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE; + exports2.SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED; + exports2.SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY; + exports2.SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS; + exports2.SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL; + exports2.SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH; + exports2.SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH; + exports2.SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH; + exports2.SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE; + exports2.SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH; + exports2.SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH; + exports2.SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH; + exports2.SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE; + exports2.SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH; + exports2.SOLANA_ERROR__CODECS__INVALID_CONSTANT = SOLANA_ERROR__CODECS__INVALID_CONSTANT; + exports2.SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT; + exports2.SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT; + exports2.SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT; + exports2.SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS; + exports2.SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE; + exports2.SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE; + exports2.SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE; + exports2.SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE; + exports2.SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES; + exports2.SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE; + exports2.SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID; + exports2.SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR; + exports2.SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS; + exports2.SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA; + exports2.SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH; + exports2.SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH; + exports2.SOLANA_ERROR__INVALID_NONCE = SOLANA_ERROR__INVALID_NONCE; + exports2.SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING; + exports2.SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED; + exports2.SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE; + exports2.SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING; + exports2.SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE; + exports2.SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR; + exports2.SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = SOLANA_ERROR__JSON_RPC__INVALID_PARAMS; + exports2.SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = SOLANA_ERROR__JSON_RPC__INVALID_REQUEST; + exports2.SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND; + exports2.SOLANA_ERROR__JSON_RPC__PARSE_ERROR = SOLANA_ERROR__JSON_RPC__PARSE_ERROR; + exports2.SOLANA_ERROR__JSON_RPC__SCAN_ERROR = SOLANA_ERROR__JSON_RPC__SCAN_ERROR; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE; + exports2.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION; + exports2.SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH; + exports2.SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH; + exports2.SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH; + exports2.SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY; + exports2.SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE; + exports2.SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE; + exports2.SOLANA_ERROR__MALFORMED_BIGINT_STRING = SOLANA_ERROR__MALFORMED_BIGINT_STRING; + exports2.SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR = SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR; + exports2.SOLANA_ERROR__MALFORMED_NUMBER_STRING = SOLANA_ERROR__MALFORMED_NUMBER_STRING; + exports2.SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND; + exports2.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN; + exports2.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED; + exports2.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED; + exports2.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT; + exports2.SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID; + exports2.SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD; + exports2.SOLANA_ERROR__RPC__INTEGER_OVERFLOW = SOLANA_ERROR__RPC__INTEGER_OVERFLOW; + exports2.SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR; + exports2.SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN; + exports2.SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER; + exports2.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER; + exports2.SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS; + exports2.SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING; + exports2.SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED; + exports2.SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED; + exports2.SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION; + exports2.SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES; + exports2.SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT = SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME; + exports2.SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT; + exports2.SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE; + exports2.SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES; + exports2.SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE; + exports2.SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH; + exports2.SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING; + exports2.SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE; + exports2.SolanaError = SolanaError; + exports2.getSolanaErrorFromInstructionError = getSolanaErrorFromInstructionError; + exports2.getSolanaErrorFromJsonRpcError = getSolanaErrorFromJsonRpcError; + exports2.getSolanaErrorFromTransactionError = getSolanaErrorFromTransactionError; + exports2.isSolanaError = isSolanaError; + exports2.safeCaptureStackTrace = safeCaptureStackTrace; + } +}); + +// node_modules/@solana/codecs-core/dist/index.node.cjs +var require_index_node2 = __commonJS({ + "node_modules/@solana/codecs-core/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var mergeBytes = (byteArrays) => { + const nonEmptyByteArrays = byteArrays.filter((arr) => arr.length); + if (nonEmptyByteArrays.length === 0) { + return byteArrays.length ? byteArrays[0] : new Uint8Array(); + } + if (nonEmptyByteArrays.length === 1) { + return nonEmptyByteArrays[0]; + } + const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0); + const result = new Uint8Array(totalLength); + let offset = 0; + nonEmptyByteArrays.forEach((arr) => { + result.set(arr, offset); + offset += arr.length; + }); + return result; + }; + var padBytes = (bytes, length) => { + if (bytes.length >= length) return bytes; + const paddedBytes = new Uint8Array(length).fill(0); + paddedBytes.set(bytes); + return paddedBytes; + }; + var fixBytes = (bytes, length) => padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length); + function containsBytes(data, bytes, offset) { + const slice = offset === 0 && data.length === bytes.length ? data : data.slice(offset, offset + bytes.length); + if (slice.length !== bytes.length) return false; + return bytes.every((b, i) => b === slice[i]); + } + function getEncodedSize(value, encoder) { + return "fixedSize" in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value); + } + function createEncoder(encoder) { + return Object.freeze({ + ...encoder, + encode: (value) => { + const bytes = new Uint8Array(getEncodedSize(value, encoder)); + encoder.write(value, bytes, 0); + return bytes; + } + }); + } + function createDecoder(decoder) { + return Object.freeze({ + ...decoder, + decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0] + }); + } + function createCodec(codec) { + return Object.freeze({ + ...codec, + decode: (bytes, offset = 0) => codec.read(bytes, offset)[0], + encode: (value) => { + const bytes = new Uint8Array(getEncodedSize(value, codec)); + codec.write(value, bytes, 0); + return bytes; + } + }); + } + function isFixedSize(codec) { + return "fixedSize" in codec && typeof codec.fixedSize === "number"; + } + function assertIsFixedSize(codec) { + if (!isFixedSize(codec)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH); + } + } + function isVariableSize(codec) { + return !isFixedSize(codec); + } + function assertIsVariableSize(codec) { + if (!isVariableSize(codec)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH); + } + } + function combineCodec(encoder, decoder) { + if (isFixedSize(encoder) !== isFixedSize(decoder)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH); + } + if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, { + decoderFixedSize: decoder.fixedSize, + encoderFixedSize: encoder.fixedSize + }); + } + if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, { + decoderMaxSize: decoder.maxSize, + encoderMaxSize: encoder.maxSize + }); + } + return { + ...decoder, + ...encoder, + decode: decoder.decode, + encode: encoder.encode, + read: decoder.read, + write: encoder.write + }; + } + function addEncoderSentinel(encoder, sentinel) { + const write = (value, bytes, offset) => { + const encoderBytes = encoder.encode(value); + if (findSentinelIndex(encoderBytes, sentinel) >= 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, { + encodedBytes: encoderBytes, + hexEncodedBytes: hexBytes(encoderBytes), + hexSentinel: hexBytes(sentinel), + sentinel + }); + } + bytes.set(encoderBytes, offset); + offset += encoderBytes.length; + bytes.set(sentinel, offset); + offset += sentinel.length; + return offset; + }; + if (isFixedSize(encoder)) { + return createEncoder({ ...encoder, fixedSize: encoder.fixedSize + sentinel.length, write }); + } + return createEncoder({ + ...encoder, + ...encoder.maxSize != null ? { maxSize: encoder.maxSize + sentinel.length } : {}, + getSizeFromValue: (value) => encoder.getSizeFromValue(value) + sentinel.length, + write + }); + } + function addDecoderSentinel(decoder, sentinel) { + const read = (bytes, offset) => { + const candidateBytes = offset === 0 ? bytes : bytes.slice(offset); + const sentinelIndex = findSentinelIndex(candidateBytes, sentinel); + if (sentinelIndex === -1) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, { + decodedBytes: candidateBytes, + hexDecodedBytes: hexBytes(candidateBytes), + hexSentinel: hexBytes(sentinel), + sentinel + }); + } + const preSentinelBytes = candidateBytes.slice(0, sentinelIndex); + return [decoder.decode(preSentinelBytes), offset + preSentinelBytes.length + sentinel.length]; + }; + if (isFixedSize(decoder)) { + return createDecoder({ ...decoder, fixedSize: decoder.fixedSize + sentinel.length, read }); + } + return createDecoder({ + ...decoder, + ...decoder.maxSize != null ? { maxSize: decoder.maxSize + sentinel.length } : {}, + read + }); + } + function addCodecSentinel(codec, sentinel) { + return combineCodec(addEncoderSentinel(codec, sentinel), addDecoderSentinel(codec, sentinel)); + } + function findSentinelIndex(bytes, sentinel) { + return bytes.findIndex((byte, index, arr) => { + if (sentinel.length === 1) return byte === sentinel[0]; + return containsBytes(arr, sentinel, index); + }); + } + function hexBytes(bytes) { + return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + } + function assertByteArrayIsNotEmptyForCodec(codecDescription, bytes, offset = 0) { + if (bytes.length - offset <= 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, { + codecDescription + }); + } + } + function assertByteArrayHasEnoughBytesForCodec(codecDescription, expected, bytes, offset = 0) { + const bytesLength = bytes.length - offset; + if (bytesLength < expected) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, { + bytesLength, + codecDescription, + expected + }); + } + } + function assertByteArrayOffsetIsNotOutOfRange(codecDescription, offset, bytesLength) { + if (offset < 0 || offset > bytesLength) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, { + bytesLength, + codecDescription, + offset + }); + } + } + function addEncoderSizePrefix(encoder, prefix) { + const write = (value, bytes, offset) => { + const encoderBytes = encoder.encode(value); + offset = prefix.write(encoderBytes.length, bytes, offset); + bytes.set(encoderBytes, offset); + return offset + encoderBytes.length; + }; + if (isFixedSize(prefix) && isFixedSize(encoder)) { + return createEncoder({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write }); + } + const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : prefix.maxSize ?? null; + const encoderMaxSize = isFixedSize(encoder) ? encoder.fixedSize : encoder.maxSize ?? null; + const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null; + return createEncoder({ + ...encoder, + ...maxSize !== null ? { maxSize } : {}, + getSizeFromValue: (value) => { + const encoderSize = getEncodedSize(value, encoder); + return getEncodedSize(encoderSize, prefix) + encoderSize; + }, + write + }); + } + function addDecoderSizePrefix(decoder, prefix) { + const read = (bytes, offset) => { + const [bigintSize, decoderOffset] = prefix.read(bytes, offset); + const size = Number(bigintSize); + offset = decoderOffset; + if (offset > 0 || bytes.length > size) { + bytes = bytes.slice(offset, offset + size); + } + assertByteArrayHasEnoughBytesForCodec("addDecoderSizePrefix", size, bytes); + return [decoder.decode(bytes), offset + size]; + }; + if (isFixedSize(prefix) && isFixedSize(decoder)) { + return createDecoder({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read }); + } + const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : prefix.maxSize ?? null; + const decoderMaxSize = isFixedSize(decoder) ? decoder.fixedSize : decoder.maxSize ?? null; + const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null; + return createDecoder({ ...decoder, ...maxSize !== null ? { maxSize } : {}, read }); + } + function addCodecSizePrefix(codec, prefix) { + return combineCodec(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix)); + } + function fixEncoderSize(encoder, fixedBytes) { + return createEncoder({ + fixedSize: fixedBytes, + write: (value, bytes, offset) => { + const variableByteArray = encoder.encode(value); + const fixedByteArray = variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray; + bytes.set(fixedByteArray, offset); + return offset + fixedBytes; + } + }); + } + function fixDecoderSize(decoder, fixedBytes) { + return createDecoder({ + fixedSize: fixedBytes, + read: (bytes, offset) => { + assertByteArrayHasEnoughBytesForCodec("fixCodecSize", fixedBytes, bytes, offset); + if (offset > 0 || bytes.length > fixedBytes) { + bytes = bytes.slice(offset, offset + fixedBytes); + } + if (isFixedSize(decoder)) { + bytes = fixBytes(bytes, decoder.fixedSize); + } + const [value] = decoder.read(bytes, 0); + return [value, offset + fixedBytes]; + } + }); + } + function fixCodecSize(codec, fixedBytes) { + return combineCodec(fixEncoderSize(codec, fixedBytes), fixDecoderSize(codec, fixedBytes)); + } + function offsetEncoder(encoder, config2) { + return createEncoder({ + ...encoder, + write: (value, bytes, preOffset) => { + const wrapBytes = (offset) => modulo(offset, bytes.length); + const newPreOffset = config2.preOffset ? config2.preOffset({ bytes, preOffset, wrapBytes }) : preOffset; + assertByteArrayOffsetIsNotOutOfRange("offsetEncoder", newPreOffset, bytes.length); + const postOffset = encoder.write(value, bytes, newPreOffset); + const newPostOffset = config2.postOffset ? config2.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes }) : postOffset; + assertByteArrayOffsetIsNotOutOfRange("offsetEncoder", newPostOffset, bytes.length); + return newPostOffset; + } + }); + } + function offsetDecoder(decoder, config2) { + return createDecoder({ + ...decoder, + read: (bytes, preOffset) => { + const wrapBytes = (offset) => modulo(offset, bytes.length); + const newPreOffset = config2.preOffset ? config2.preOffset({ bytes, preOffset, wrapBytes }) : preOffset; + assertByteArrayOffsetIsNotOutOfRange("offsetDecoder", newPreOffset, bytes.length); + const [value, postOffset] = decoder.read(bytes, newPreOffset); + const newPostOffset = config2.postOffset ? config2.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes }) : postOffset; + assertByteArrayOffsetIsNotOutOfRange("offsetDecoder", newPostOffset, bytes.length); + return [value, newPostOffset]; + } + }); + } + function offsetCodec(codec, config2) { + return combineCodec(offsetEncoder(codec, config2), offsetDecoder(codec, config2)); + } + function modulo(dividend, divisor) { + if (divisor === 0) return 0; + return (dividend % divisor + divisor) % divisor; + } + function resizeEncoder(encoder, resize) { + if (isFixedSize(encoder)) { + const fixedSize = resize(encoder.fixedSize); + if (fixedSize < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, { + bytesLength: fixedSize, + codecDescription: "resizeEncoder" + }); + } + return createEncoder({ ...encoder, fixedSize }); + } + return createEncoder({ + ...encoder, + getSizeFromValue: (value) => { + const newSize = resize(encoder.getSizeFromValue(value)); + if (newSize < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, { + bytesLength: newSize, + codecDescription: "resizeEncoder" + }); + } + return newSize; + } + }); + } + function resizeDecoder(decoder, resize) { + if (isFixedSize(decoder)) { + const fixedSize = resize(decoder.fixedSize); + if (fixedSize < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, { + bytesLength: fixedSize, + codecDescription: "resizeDecoder" + }); + } + return createDecoder({ ...decoder, fixedSize }); + } + return decoder; + } + function resizeCodec(codec, resize) { + return combineCodec(resizeEncoder(codec, resize), resizeDecoder(codec, resize)); + } + function padLeftEncoder(encoder, offset) { + return offsetEncoder( + resizeEncoder(encoder, (size) => size + offset), + { preOffset: ({ preOffset }) => preOffset + offset } + ); + } + function padRightEncoder(encoder, offset) { + return offsetEncoder( + resizeEncoder(encoder, (size) => size + offset), + { postOffset: ({ postOffset }) => postOffset + offset } + ); + } + function padLeftDecoder(decoder, offset) { + return offsetDecoder( + resizeDecoder(decoder, (size) => size + offset), + { preOffset: ({ preOffset }) => preOffset + offset } + ); + } + function padRightDecoder(decoder, offset) { + return offsetDecoder( + resizeDecoder(decoder, (size) => size + offset), + { postOffset: ({ postOffset }) => postOffset + offset } + ); + } + function padLeftCodec(codec, offset) { + return combineCodec(padLeftEncoder(codec, offset), padLeftDecoder(codec, offset)); + } + function padRightCodec(codec, offset) { + return combineCodec(padRightEncoder(codec, offset), padRightDecoder(codec, offset)); + } + function copySourceToTargetInReverse(source, target_WILL_MUTATE, sourceOffset, sourceLength, targetOffset = 0) { + while (sourceOffset < --sourceLength) { + const leftValue = source[sourceOffset]; + target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceLength]; + target_WILL_MUTATE[sourceLength + targetOffset] = leftValue; + sourceOffset++; + } + if (sourceOffset === sourceLength) { + target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceOffset]; + } + } + function reverseEncoder(encoder) { + assertIsFixedSize(encoder); + return createEncoder({ + ...encoder, + write: (value, bytes, offset) => { + const newOffset = encoder.write(value, bytes, offset); + copySourceToTargetInReverse( + bytes, + bytes, + offset, + offset + encoder.fixedSize + ); + return newOffset; + } + }); + } + function reverseDecoder(decoder) { + assertIsFixedSize(decoder); + return createDecoder({ + ...decoder, + read: (bytes, offset) => { + const reversedBytes = bytes.slice(); + copySourceToTargetInReverse( + bytes, + reversedBytes, + offset, + offset + decoder.fixedSize + ); + return decoder.read(reversedBytes, offset); + } + }); + } + function reverseCodec(codec) { + return combineCodec(reverseEncoder(codec), reverseDecoder(codec)); + } + function transformEncoder(encoder, unmap) { + return createEncoder({ + ...isVariableSize(encoder) ? { ...encoder, getSizeFromValue: (value) => encoder.getSizeFromValue(unmap(value)) } : encoder, + write: (value, bytes, offset) => encoder.write(unmap(value), bytes, offset) + }); + } + function transformDecoder(decoder, map) { + return createDecoder({ + ...decoder, + read: (bytes, offset) => { + const [value, newOffset] = decoder.read(bytes, offset); + return [map(value, bytes, offset), newOffset]; + } + }); + } + function transformCodec(codec, unmap, map) { + return createCodec({ + ...transformEncoder(codec, unmap), + read: map ? transformDecoder(codec, map).read : codec.read + }); + } + exports2.addCodecSentinel = addCodecSentinel; + exports2.addCodecSizePrefix = addCodecSizePrefix; + exports2.addDecoderSentinel = addDecoderSentinel; + exports2.addDecoderSizePrefix = addDecoderSizePrefix; + exports2.addEncoderSentinel = addEncoderSentinel; + exports2.addEncoderSizePrefix = addEncoderSizePrefix; + exports2.assertByteArrayHasEnoughBytesForCodec = assertByteArrayHasEnoughBytesForCodec; + exports2.assertByteArrayIsNotEmptyForCodec = assertByteArrayIsNotEmptyForCodec; + exports2.assertByteArrayOffsetIsNotOutOfRange = assertByteArrayOffsetIsNotOutOfRange; + exports2.assertIsFixedSize = assertIsFixedSize; + exports2.assertIsVariableSize = assertIsVariableSize; + exports2.combineCodec = combineCodec; + exports2.containsBytes = containsBytes; + exports2.createCodec = createCodec; + exports2.createDecoder = createDecoder; + exports2.createEncoder = createEncoder; + exports2.fixBytes = fixBytes; + exports2.fixCodecSize = fixCodecSize; + exports2.fixDecoderSize = fixDecoderSize; + exports2.fixEncoderSize = fixEncoderSize; + exports2.getEncodedSize = getEncodedSize; + exports2.isFixedSize = isFixedSize; + exports2.isVariableSize = isVariableSize; + exports2.mergeBytes = mergeBytes; + exports2.offsetCodec = offsetCodec; + exports2.offsetDecoder = offsetDecoder; + exports2.offsetEncoder = offsetEncoder; + exports2.padBytes = padBytes; + exports2.padLeftCodec = padLeftCodec; + exports2.padLeftDecoder = padLeftDecoder; + exports2.padLeftEncoder = padLeftEncoder; + exports2.padRightCodec = padRightCodec; + exports2.padRightDecoder = padRightDecoder; + exports2.padRightEncoder = padRightEncoder; + exports2.resizeCodec = resizeCodec; + exports2.resizeDecoder = resizeDecoder; + exports2.resizeEncoder = resizeEncoder; + exports2.reverseCodec = reverseCodec; + exports2.reverseDecoder = reverseDecoder; + exports2.reverseEncoder = reverseEncoder; + exports2.transformCodec = transformCodec; + exports2.transformDecoder = transformDecoder; + exports2.transformEncoder = transformEncoder; + } +}); + +// node_modules/@solana/codecs-strings/dist/index.node.cjs +var require_index_node3 = __commonJS({ + "node_modules/@solana/codecs-strings/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var codecsCore = require_index_node2(); + function assertValidBaseString(alphabet4, testValue, givenValue = testValue) { + if (!testValue.match(new RegExp(`^[${alphabet4}]*$`))) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, { + alphabet: alphabet4, + base: alphabet4.length, + value: givenValue + }); + } + } + var getBaseXEncoder = (alphabet4) => { + return codecsCore.createEncoder({ + getSizeFromValue: (value) => { + const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]); + if (!tailChars) return value.length; + const base10Number = getBigIntFromBaseX(tailChars, alphabet4); + return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2); + }, + write(value, bytes, offset) { + assertValidBaseString(alphabet4, value); + if (value === "") return offset; + const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]); + if (!tailChars) { + bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset); + return offset + leadingZeroes.length; + } + let base10Number = getBigIntFromBaseX(tailChars, alphabet4); + const tailBytes = []; + while (base10Number > 0n) { + tailBytes.unshift(Number(base10Number % 256n)); + base10Number /= 256n; + } + const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes]; + bytes.set(bytesToAdd, offset); + return offset + bytesToAdd.length; + } + }); + }; + var getBaseXDecoder = (alphabet4) => { + return codecsCore.createDecoder({ + read(rawBytes, offset) { + const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset); + if (bytes.length === 0) return ["", 0]; + let trailIndex = bytes.findIndex((n) => n !== 0); + trailIndex = trailIndex === -1 ? bytes.length : trailIndex; + const leadingZeroes = alphabet4[0].repeat(trailIndex); + if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length]; + const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n); + const tailChars = getBaseXFromBigInt(base10Number, alphabet4); + return [leadingZeroes + tailChars, rawBytes.length]; + } + }); + }; + var getBaseXCodec = (alphabet4) => codecsCore.combineCodec(getBaseXEncoder(alphabet4), getBaseXDecoder(alphabet4)); + function partitionLeadingZeroes(value, zeroCharacter) { + const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`)); + return [leadingZeros, tailChars]; + } + function getBigIntFromBaseX(value, alphabet4) { + const base = BigInt(alphabet4.length); + let sum = 0n; + for (const char of value) { + sum *= base; + sum += BigInt(alphabet4.indexOf(char)); + } + return sum; + } + function getBaseXFromBigInt(value, alphabet4) { + const base = BigInt(alphabet4.length); + const tailChars = []; + while (value > 0n) { + tailChars.unshift(alphabet4[Number(value % base)]); + value /= base; + } + return tailChars.join(""); + } + var alphabet = "0123456789"; + var getBase10Encoder = () => getBaseXEncoder(alphabet); + var getBase10Decoder = () => getBaseXDecoder(alphabet); + var getBase10Codec = () => getBaseXCodec(alphabet); + var INVALID_STRING_ERROR_BASE_CONFIG = { + alphabet: "0123456789abcdef", + base: 16 + }; + function charCodeToBase16(char) { + if (char >= 48 && char <= 57) return char - 48; + if (char >= 65 && char <= 70) return char - (65 - 10); + if (char >= 97 && char <= 102) return char - (97 - 10); + } + var getBase16Encoder = () => codecsCore.createEncoder({ + getSizeFromValue: (value) => Math.ceil(value.length / 2), + write(value, bytes, offset) { + const len = value.length; + const al = len / 2; + if (len === 1) { + const c = value.charCodeAt(0); + const n = charCodeToBase16(c); + if (n === void 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, { + ...INVALID_STRING_ERROR_BASE_CONFIG, + value + }); + } + bytes.set([n], offset); + return 1 + offset; + } + const hexBytes = new Uint8Array(al); + for (let i = 0, j = 0; i < al; i++) { + const c1 = value.charCodeAt(j++); + const c2 = value.charCodeAt(j++); + const n1 = charCodeToBase16(c1); + const n2 = charCodeToBase16(c2); + if (n1 === void 0 || n2 === void 0 && !Number.isNaN(c2)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, { + ...INVALID_STRING_ERROR_BASE_CONFIG, + value + }); + } + hexBytes[i] = !Number.isNaN(c2) ? n1 << 4 | (n2 ?? 0) : n1; + } + bytes.set(hexBytes, offset); + return hexBytes.length + offset; + } + }); + var getBase16Decoder = () => codecsCore.createDecoder({ + read(bytes, offset) { + const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + return [value, bytes.length]; + } + }); + var getBase16Codec = () => codecsCore.combineCodec(getBase16Encoder(), getBase16Decoder()); + var alphabet2 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + var getBase58Encoder = () => getBaseXEncoder(alphabet2); + var getBase58Decoder = () => getBaseXDecoder(alphabet2); + var getBase58Codec = () => getBaseXCodec(alphabet2); + var getBaseXResliceEncoder = (alphabet4, bits) => codecsCore.createEncoder({ + getSizeFromValue: (value) => Math.floor(value.length * bits / 8), + write(value, bytes, offset) { + assertValidBaseString(alphabet4, value); + if (value === "") return offset; + const charIndices = [...value].map((c) => alphabet4.indexOf(c)); + const reslicedBytes = reslice(charIndices, bits, 8, false); + bytes.set(reslicedBytes, offset); + return reslicedBytes.length + offset; + } + }); + var getBaseXResliceDecoder = (alphabet4, bits) => codecsCore.createDecoder({ + read(rawBytes, offset = 0) { + const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset); + if (bytes.length === 0) return ["", rawBytes.length]; + const charIndices = reslice([...bytes], 8, bits, true); + return [charIndices.map((i) => alphabet4[i]).join(""), rawBytes.length]; + } + }); + var getBaseXResliceCodec = (alphabet4, bits) => codecsCore.combineCodec(getBaseXResliceEncoder(alphabet4, bits), getBaseXResliceDecoder(alphabet4, bits)); + function reslice(input, inputBits, outputBits, useRemainder) { + const output = []; + let accumulator = 0; + let bitsInAccumulator = 0; + const mask = (1 << outputBits) - 1; + for (const value of input) { + accumulator = accumulator << inputBits | value; + bitsInAccumulator += inputBits; + while (bitsInAccumulator >= outputBits) { + bitsInAccumulator -= outputBits; + output.push(accumulator >> bitsInAccumulator & mask); + } + } + if (useRemainder && bitsInAccumulator > 0) { + output.push(accumulator << outputBits - bitsInAccumulator & mask); + } + return output; + } + var alphabet3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var getBase64Encoder = () => { + { + return codecsCore.createEncoder({ + getSizeFromValue: (value) => Buffer.from(value, "base64").length, + write(value, bytes, offset) { + assertValidBaseString(alphabet3, value.replace(/=/g, "")); + const buffer = Buffer.from(value, "base64"); + bytes.set(buffer, offset); + return buffer.length + offset; + } + }); + } + }; + var getBase64Decoder = () => { + { + return codecsCore.createDecoder({ + read: (bytes, offset = 0) => [Buffer.from(bytes, offset).toString("base64"), bytes.length] + }); + } + }; + var getBase64Codec = () => codecsCore.combineCodec(getBase64Encoder(), getBase64Decoder()); + var removeNullCharacters = (value) => ( + // eslint-disable-next-line no-control-regex + value.replace(/\u0000/g, "") + ); + var padNullCharacters = (value, chars) => value.padEnd(chars, "\0"); + var e = globalThis.TextDecoder; + var o = globalThis.TextEncoder; + var getUtf8Encoder = () => { + let textEncoder; + return codecsCore.createEncoder({ + getSizeFromValue: (value) => (textEncoder ||= new o()).encode(value).length, + write: (value, bytes, offset) => { + const bytesToAdd = (textEncoder ||= new o()).encode(value); + bytes.set(bytesToAdd, offset); + return offset + bytesToAdd.length; + } + }); + }; + var getUtf8Decoder = () => { + let textDecoder; + return codecsCore.createDecoder({ + read(bytes, offset) { + const value = (textDecoder ||= new e()).decode(bytes.slice(offset)); + return [removeNullCharacters(value), bytes.length]; + } + }); + }; + var getUtf8Codec = () => codecsCore.combineCodec(getUtf8Encoder(), getUtf8Decoder()); + exports2.assertValidBaseString = assertValidBaseString; + exports2.getBase10Codec = getBase10Codec; + exports2.getBase10Decoder = getBase10Decoder; + exports2.getBase10Encoder = getBase10Encoder; + exports2.getBase16Codec = getBase16Codec; + exports2.getBase16Decoder = getBase16Decoder; + exports2.getBase16Encoder = getBase16Encoder; + exports2.getBase58Codec = getBase58Codec; + exports2.getBase58Decoder = getBase58Decoder; + exports2.getBase58Encoder = getBase58Encoder; + exports2.getBase64Codec = getBase64Codec; + exports2.getBase64Decoder = getBase64Decoder; + exports2.getBase64Encoder = getBase64Encoder; + exports2.getBaseXCodec = getBaseXCodec; + exports2.getBaseXDecoder = getBaseXDecoder; + exports2.getBaseXEncoder = getBaseXEncoder; + exports2.getBaseXResliceCodec = getBaseXResliceCodec; + exports2.getBaseXResliceDecoder = getBaseXResliceDecoder; + exports2.getBaseXResliceEncoder = getBaseXResliceEncoder; + exports2.getUtf8Codec = getUtf8Codec; + exports2.getUtf8Decoder = getUtf8Decoder; + exports2.getUtf8Encoder = getUtf8Encoder; + exports2.padNullCharacters = padNullCharacters; + exports2.removeNullCharacters = removeNullCharacters; + } +}); + +// node_modules/@solana/accounts/dist/index.node.cjs +var require_index_node4 = __commonJS({ + "node_modules/@solana/accounts/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var codecsStrings = require_index_node3(); + var BASE_ACCOUNT_SIZE = 128; + function decodeAccount(encodedAccount, decoder) { + try { + if ("exists" in encodedAccount && !encodedAccount.exists) { + return encodedAccount; + } + return Object.freeze({ ...encodedAccount, data: decoder.decode(encodedAccount.data) }); + } catch { + throw new errors.SolanaError(errors.SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, { + address: encodedAccount.address + }); + } + } + function accountExists(account) { + return !("exists" in account) || "exists" in account && account.exists; + } + function assertAccountDecoded(account) { + if (accountExists(account) && account.data instanceof Uint8Array) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, { + address: account.address + }); + } + } + function assertAccountsDecoded(accounts) { + const encoded = accounts.filter((a) => accountExists(a) && a.data instanceof Uint8Array); + if (encoded.length > 0) { + const encodedAddresses = encoded.map((a) => a.address); + throw new errors.SolanaError(errors.SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, { + addresses: encodedAddresses + }); + } + } + function parseBase64RpcAccount(address, rpcAccount) { + if (!rpcAccount) return Object.freeze({ address, exists: false }); + const data = codecsStrings.getBase64Encoder().encode(rpcAccount.data[0]); + return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true }); + } + function parseBase58RpcAccount(address, rpcAccount) { + if (!rpcAccount) return Object.freeze({ address, exists: false }); + const data = codecsStrings.getBase58Encoder().encode(typeof rpcAccount.data === "string" ? rpcAccount.data : rpcAccount.data[0]); + return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true }); + } + function parseJsonRpcAccount(address, rpcAccount) { + if (!rpcAccount) return Object.freeze({ address, exists: false }); + const data = rpcAccount.data.parsed.info; + return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true }); + } + function parseBaseAccount(rpcAccount) { + return Object.freeze({ + executable: rpcAccount.executable, + lamports: rpcAccount.lamports, + programAddress: rpcAccount.owner, + space: rpcAccount.space + }); + } + async function fetchEncodedAccount(rpc, address, config2 = {}) { + const { abortSignal, ...rpcConfig } = config2; + const response = await rpc.getAccountInfo(address, { ...rpcConfig, encoding: "base64" }).send({ abortSignal }); + return parseBase64RpcAccount(address, response.value); + } + async function fetchJsonParsedAccount(rpc, address, config2 = {}) { + const { abortSignal, ...rpcConfig } = config2; + const { value: account } = await rpc.getAccountInfo(address, { ...rpcConfig, encoding: "jsonParsed" }).send({ abortSignal }); + return !!account && typeof account === "object" && "parsed" in account.data ? parseJsonRpcAccount(address, account) : parseBase64RpcAccount(address, account); + } + async function fetchEncodedAccounts(rpc, addresses, config2 = {}) { + const { abortSignal, ...rpcConfig } = config2; + const response = await rpc.getMultipleAccounts(addresses, { ...rpcConfig, encoding: "base64" }).send({ abortSignal }); + return response.value.map((account, index) => parseBase64RpcAccount(addresses[index], account)); + } + async function fetchJsonParsedAccounts(rpc, addresses, config2 = {}) { + const { abortSignal, ...rpcConfig } = config2; + const response = await rpc.getMultipleAccounts(addresses, { ...rpcConfig, encoding: "jsonParsed" }).send({ abortSignal }); + return response.value.map((account, index) => { + return !!account && typeof account === "object" && "parsed" in account.data ? parseJsonRpcAccount(addresses[index], account) : parseBase64RpcAccount(addresses[index], account); + }); + } + function assertAccountExists(account) { + if (!account.exists) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, { address: account.address }); + } + } + function assertAccountsExist(accounts) { + const missingAccounts = accounts.filter((a) => !a.exists); + if (missingAccounts.length > 0) { + const missingAddresses = missingAccounts.map((a) => a.address); + throw new errors.SolanaError(errors.SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, { addresses: missingAddresses }); + } + } + exports2.BASE_ACCOUNT_SIZE = BASE_ACCOUNT_SIZE; + exports2.assertAccountDecoded = assertAccountDecoded; + exports2.assertAccountExists = assertAccountExists; + exports2.assertAccountsDecoded = assertAccountsDecoded; + exports2.assertAccountsExist = assertAccountsExist; + exports2.decodeAccount = decodeAccount; + exports2.fetchEncodedAccount = fetchEncodedAccount; + exports2.fetchEncodedAccounts = fetchEncodedAccounts; + exports2.fetchJsonParsedAccount = fetchJsonParsedAccount; + exports2.fetchJsonParsedAccounts = fetchJsonParsedAccounts; + exports2.parseBase58RpcAccount = parseBase58RpcAccount; + exports2.parseBase64RpcAccount = parseBase64RpcAccount; + exports2.parseJsonRpcAccount = parseJsonRpcAccount; + } +}); + +// node_modules/@solana/assertions/dist/index.node.cjs +var require_index_node5 = __commonJS({ + "node_modules/@solana/assertions/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + function assertPRNGIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.getRandomValues !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED); + } + } + var cachedEd25519Decision; + async function isEd25519CurveSupported(subtle) { + if (cachedEd25519Decision === void 0) { + cachedEd25519Decision = new Promise((resolve) => { + subtle.generateKey( + "Ed25519", + /* extractable */ + false, + ["sign", "verify"] + ).then(() => { + resolve(cachedEd25519Decision = true); + }).catch(() => { + resolve(cachedEd25519Decision = false); + }); + }); + } + if (typeof cachedEd25519Decision === "boolean") { + return cachedEd25519Decision; + } else { + return await cachedEd25519Decision; + } + } + function assertDigestCapabilityIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.subtle?.digest !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED); + } + } + async function assertKeyGenerationIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.subtle?.generateKey !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED); + } + if (!await isEd25519CurveSupported(globalThis.crypto.subtle)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED); + } + } + function assertKeyExporterIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.subtle?.exportKey !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED); + } + } + function assertSigningCapabilityIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.subtle?.sign !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED); + } + } + function assertVerificationCapabilityIsAvailable() { + if (typeof globalThis.crypto === "undefined" || typeof globalThis.crypto.subtle?.verify !== "function") { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED); + } + } + exports2.assertDigestCapabilityIsAvailable = assertDigestCapabilityIsAvailable; + exports2.assertKeyExporterIsAvailable = assertKeyExporterIsAvailable; + exports2.assertKeyGenerationIsAvailable = assertKeyGenerationIsAvailable; + exports2.assertPRNGIsAvailable = assertPRNGIsAvailable; + exports2.assertSigningCapabilityIsAvailable = assertSigningCapabilityIsAvailable; + exports2.assertVerificationCapabilityIsAvailable = assertVerificationCapabilityIsAvailable; + } +}); + +// node_modules/@solana/addresses/dist/index.node.cjs +var require_index_node6 = __commonJS({ + "node_modules/@solana/addresses/dist/index.node.cjs"(exports2) { + "use strict"; + var codecsCore = require_index_node2(); + var codecsStrings = require_index_node3(); + var errors = require_index_node(); + var assertions = require_index_node5(); + var memoizedBase58Encoder; + var memoizedBase58Decoder; + function getMemoizedBase58Encoder() { + if (!memoizedBase58Encoder) memoizedBase58Encoder = codecsStrings.getBase58Encoder(); + return memoizedBase58Encoder; + } + function getMemoizedBase58Decoder() { + if (!memoizedBase58Decoder) memoizedBase58Decoder = codecsStrings.getBase58Decoder(); + return memoizedBase58Decoder; + } + function isAddress(putativeAddress) { + if ( + // Lowest address (32 bytes of zeroes) + putativeAddress.length < 32 || // Highest address (32 bytes of 255) + putativeAddress.length > 44 + ) { + return false; + } + const base58Encoder = getMemoizedBase58Encoder(); + try { + return base58Encoder.encode(putativeAddress).byteLength === 32; + } catch { + return false; + } + } + function assertIsAddress(putativeAddress) { + if ( + // Lowest address (32 bytes of zeroes) + putativeAddress.length < 32 || // Highest address (32 bytes of 255) + putativeAddress.length > 44 + ) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, { + actualLength: putativeAddress.length + }); + } + const base58Encoder = getMemoizedBase58Encoder(); + const bytes = base58Encoder.encode(putativeAddress); + const numBytes = bytes.byteLength; + if (numBytes !== 32) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, { + actualLength: numBytes + }); + } + } + function address(putativeAddress) { + assertIsAddress(putativeAddress); + return putativeAddress; + } + function getAddressEncoder() { + return codecsCore.transformEncoder( + codecsCore.fixEncoderSize(getMemoizedBase58Encoder(), 32), + (putativeAddress) => address(putativeAddress) + ); + } + function getAddressDecoder() { + return codecsCore.fixDecoderSize(getMemoizedBase58Decoder(), 32); + } + function getAddressCodec() { + return codecsCore.combineCodec(getAddressEncoder(), getAddressDecoder()); + } + function getAddressComparator() { + return new Intl.Collator("en", { + caseFirst: "lower", + ignorePunctuation: false, + localeMatcher: "best fit", + numeric: false, + sensitivity: "variant", + usage: "sort" + }).compare; + } + var D = 37095705934669439343138083508754565189542113879843219016388785533085940283555n; + var P = 57896044618658097711785492504343953926634992332820282019728792003956564819949n; + var RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; + function mod3(a) { + const r = a % P; + return r >= 0n ? r : P + r; + } + function pow22(x, power) { + let r = x; + while (power-- > 0n) { + r *= r; + r %= P; + } + return r; + } + function pow_2_252_3(x) { + const x2 = x * x % P; + const b2 = x2 * x % P; + const b4 = pow22(b2, 2n) * b2 % P; + const b5 = pow22(b4, 1n) * x % P; + const b10 = pow22(b5, 5n) * b5 % P; + const b20 = pow22(b10, 10n) * b10 % P; + const b40 = pow22(b20, 20n) * b20 % P; + const b80 = pow22(b40, 40n) * b40 % P; + const b160 = pow22(b80, 80n) * b80 % P; + const b240 = pow22(b160, 80n) * b80 % P; + const b250 = pow22(b240, 10n) * b10 % P; + const pow_p_5_8 = pow22(b250, 2n) * x % P; + return pow_p_5_8; + } + function uvRatio2(u, v) { + const v3 = mod3(v * v * v); + const v7 = mod3(v3 * v3 * v); + const pow = pow_2_252_3(u * v7); + let x = mod3(u * v3 * pow); + const vx2 = mod3(v * x * x); + const root1 = x; + const root2 = mod3(x * RM1); + const useRoot1 = vx2 === u; + const useRoot2 = vx2 === mod3(-u); + const noRoot = vx2 === mod3(-u * RM1); + if (useRoot1) x = root1; + if (useRoot2 || noRoot) x = root2; + if ((mod3(x) & 1n) === 1n) x = mod3(-x); + if (!useRoot1 && !useRoot2) { + return null; + } + return x; + } + function pointIsOnCurve(y, lastByte) { + const y2 = mod3(y * y); + const u = mod3(y2 - 1n); + const v = mod3(D * y2 + 1n); + const x = uvRatio2(u, v); + if (x === null) { + return false; + } + const isLastByteOdd = (lastByte & 128) !== 0; + if (x === 0n && isLastByteOdd) { + return false; + } + return true; + } + function byteToHex(byte) { + const hexString = byte.toString(16); + if (hexString.length === 1) { + return `0${hexString}`; + } else { + return hexString; + } + } + function decompressPointBytes(bytes) { + const hexString = bytes.reduce((acc, byte, ii) => `${byteToHex(ii === 31 ? byte & -129 : byte)}${acc}`, ""); + const integerLiteralString = `0x${hexString}`; + return BigInt(integerLiteralString); + } + function compressedPointBytesAreOnCurve(bytes) { + if (bytes.byteLength !== 32) { + return false; + } + const y = decompressPointBytes(bytes); + return pointIsOnCurve(y, bytes[31]); + } + function isOffCurveAddress(putativeOffCurveAddress) { + const addressBytes = getAddressCodec().encode(putativeOffCurveAddress); + return compressedPointBytesAreOnCurve(addressBytes) === false; + } + function assertIsOffCurveAddress(putativeOffCurveAddress) { + if (!isOffCurveAddress(putativeOffCurveAddress)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS); + } + } + function offCurveAddress(putativeOffCurveAddress) { + assertIsOffCurveAddress(putativeOffCurveAddress); + return putativeOffCurveAddress; + } + function isProgramDerivedAddress(value) { + return Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && typeof value[1] === "number" && value[1] >= 0 && value[1] <= 255 && isAddress(value[0]); + } + function assertIsProgramDerivedAddress(value) { + const validFormat = Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && typeof value[1] === "number"; + if (!validFormat) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__MALFORMED_PDA); + } + if (value[1] < 0 || value[1] > 255) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, { + bump: value[1] + }); + } + assertIsAddress(value[0]); + } + var MAX_SEED_LENGTH = 32; + var MAX_SEEDS = 16; + var PDA_MARKER_BYTES = [ + // The string 'ProgramDerivedAddress' + 80, + 114, + 111, + 103, + 114, + 97, + 109, + 68, + 101, + 114, + 105, + 118, + 101, + 100, + 65, + 100, + 100, + 114, + 101, + 115, + 115 + ]; + async function createProgramDerivedAddress({ programAddress, seeds }) { + assertions.assertDigestCapabilityIsAvailable(); + if (seeds.length > MAX_SEEDS) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, { + actual: seeds.length, + maxSeeds: MAX_SEEDS + }); + } + let textEncoder; + const seedBytes = seeds.reduce((acc, seed, ii) => { + const bytes = typeof seed === "string" ? (textEncoder ||= new TextEncoder()).encode(seed) : seed; + if (bytes.byteLength > MAX_SEED_LENGTH) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, { + actual: bytes.byteLength, + index: ii, + maxSeedLength: MAX_SEED_LENGTH + }); + } + acc.push(...bytes); + return acc; + }, []); + const base58EncodedAddressCodec = getAddressCodec(); + const programAddressBytes = base58EncodedAddressCodec.encode(programAddress); + const addressBytesBuffer = await crypto.subtle.digest( + "SHA-256", + new Uint8Array([...seedBytes, ...programAddressBytes, ...PDA_MARKER_BYTES]) + ); + const addressBytes = new Uint8Array(addressBytesBuffer); + if (compressedPointBytesAreOnCurve(addressBytes)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE); + } + return base58EncodedAddressCodec.decode(addressBytes); + } + async function getProgramDerivedAddress({ + programAddress, + seeds + }) { + let bumpSeed = 255; + while (bumpSeed > 0) { + try { + const address2 = await createProgramDerivedAddress({ + programAddress, + seeds: [...seeds, new Uint8Array([bumpSeed])] + }); + return [address2, bumpSeed]; + } catch (e) { + if (errors.isSolanaError(e, errors.SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE)) { + bumpSeed--; + } else { + throw e; + } + } + } + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED); + } + async function createAddressWithSeed({ baseAddress, programAddress, seed }) { + const { encode, decode } = getAddressCodec(); + const seedBytes = typeof seed === "string" ? new TextEncoder().encode(seed) : seed; + if (seedBytes.byteLength > MAX_SEED_LENGTH) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, { + actual: seedBytes.byteLength, + index: 0, + maxSeedLength: MAX_SEED_LENGTH + }); + } + const programAddressBytes = encode(programAddress); + if (programAddressBytes.length >= PDA_MARKER_BYTES.length && programAddressBytes.slice(-PDA_MARKER_BYTES.length).every((byte, index) => byte === PDA_MARKER_BYTES[index])) { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER); + } + const addressBytesBuffer = await crypto.subtle.digest( + "SHA-256", + new Uint8Array([...encode(baseAddress), ...seedBytes, ...programAddressBytes]) + ); + const addressBytes = new Uint8Array(addressBytesBuffer); + return decode(addressBytes); + } + async function getAddressFromPublicKey(publicKey) { + assertions.assertKeyExporterIsAvailable(); + if (publicKey.type !== "public" || publicKey.algorithm.name !== "Ed25519") { + throw new errors.SolanaError(errors.SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY); + } + const publicKeyBytes = await crypto.subtle.exportKey("raw", publicKey); + return getAddressDecoder().decode(new Uint8Array(publicKeyBytes)); + } + async function getPublicKeyFromAddress(address2) { + const addressBytes = getAddressEncoder().encode(address2); + return await crypto.subtle.importKey("raw", addressBytes, { name: "Ed25519" }, true, ["verify"]); + } + exports2.address = address; + exports2.assertIsAddress = assertIsAddress; + exports2.assertIsOffCurveAddress = assertIsOffCurveAddress; + exports2.assertIsProgramDerivedAddress = assertIsProgramDerivedAddress; + exports2.createAddressWithSeed = createAddressWithSeed; + exports2.getAddressCodec = getAddressCodec; + exports2.getAddressComparator = getAddressComparator; + exports2.getAddressDecoder = getAddressDecoder; + exports2.getAddressEncoder = getAddressEncoder; + exports2.getAddressFromPublicKey = getAddressFromPublicKey; + exports2.getProgramDerivedAddress = getProgramDerivedAddress; + exports2.getPublicKeyFromAddress = getPublicKeyFromAddress; + exports2.isAddress = isAddress; + exports2.isOffCurveAddress = isOffCurveAddress; + exports2.isProgramDerivedAddress = isProgramDerivedAddress; + exports2.offCurveAddress = offCurveAddress; + } +}); + +// node_modules/@solana/codecs-numbers/dist/index.node.cjs +var require_index_node7 = __commonJS({ + "node_modules/@solana/codecs-numbers/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var codecsCore = require_index_node2(); + function assertNumberIsBetweenForCodec(codecDescription, min, max, value) { + if (value < min || value > max) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, { + codecDescription, + max, + min, + value + }); + } + } + var Endian = /* @__PURE__ */ ((Endian2) => { + Endian2[Endian2["Little"] = 0] = "Little"; + Endian2[Endian2["Big"] = 1] = "Big"; + return Endian2; + })(Endian || {}); + function isLittleEndian(config2) { + return config2?.endian === 1 ? false : true; + } + function numberEncoderFactory(input) { + return codecsCore.createEncoder({ + fixedSize: input.size, + write(value, bytes, offset) { + if (input.range) { + assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value); + } + const arrayBuffer = new ArrayBuffer(input.size); + input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config)); + bytes.set(new Uint8Array(arrayBuffer), offset); + return offset + input.size; + } + }); + } + function numberDecoderFactory(input) { + return codecsCore.createDecoder({ + fixedSize: input.size, + read(bytes, offset = 0) { + codecsCore.assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset); + codecsCore.assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset); + const view = new DataView(toArrayBuffer(bytes, offset, input.size)); + return [input.get(view, isLittleEndian(input.config)), offset + input.size]; + } + }); + } + function toArrayBuffer(bytes, offset, length) { + const bytesOffset = bytes.byteOffset + (offset ?? 0); + const bytesLength = length ?? bytes.byteLength; + return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength); + } + var getF32Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "f32", + set: (view, value, le) => view.setFloat32(0, Number(value), le), + size: 4 + }); + var getF32Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getFloat32(0, le), + name: "f32", + size: 4 + }); + var getF32Codec = (config2 = {}) => codecsCore.combineCodec(getF32Encoder(config2), getF32Decoder(config2)); + var getF64Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "f64", + set: (view, value, le) => view.setFloat64(0, Number(value), le), + size: 8 + }); + var getF64Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getFloat64(0, le), + name: "f64", + size: 8 + }); + var getF64Codec = (config2 = {}) => codecsCore.combineCodec(getF64Encoder(config2), getF64Decoder(config2)); + var getI128Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "i128", + range: [-BigInt("0x7fffffffffffffffffffffffffffffff") - 1n, BigInt("0x7fffffffffffffffffffffffffffffff")], + set: (view, value, le) => { + const leftOffset = le ? 8 : 0; + const rightOffset = le ? 0 : 8; + const rightMask = 0xffffffffffffffffn; + view.setBigInt64(leftOffset, BigInt(value) >> 64n, le); + view.setBigUint64(rightOffset, BigInt(value) & rightMask, le); + }, + size: 16 + }); + var getI128Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => { + const leftOffset = le ? 8 : 0; + const rightOffset = le ? 0 : 8; + const left = view.getBigInt64(leftOffset, le); + const right = view.getBigUint64(rightOffset, le); + return (left << 64n) + right; + }, + name: "i128", + size: 16 + }); + var getI128Codec = (config2 = {}) => codecsCore.combineCodec(getI128Encoder(config2), getI128Decoder(config2)); + var getI16Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "i16", + range: [-Number("0x7fff") - 1, Number("0x7fff")], + set: (view, value, le) => view.setInt16(0, Number(value), le), + size: 2 + }); + var getI16Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getInt16(0, le), + name: "i16", + size: 2 + }); + var getI16Codec = (config2 = {}) => codecsCore.combineCodec(getI16Encoder(config2), getI16Decoder(config2)); + var getI32Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "i32", + range: [-Number("0x7fffffff") - 1, Number("0x7fffffff")], + set: (view, value, le) => view.setInt32(0, Number(value), le), + size: 4 + }); + var getI32Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getInt32(0, le), + name: "i32", + size: 4 + }); + var getI32Codec = (config2 = {}) => codecsCore.combineCodec(getI32Encoder(config2), getI32Decoder(config2)); + var getI64Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "i64", + range: [-BigInt("0x7fffffffffffffff") - 1n, BigInt("0x7fffffffffffffff")], + set: (view, value, le) => view.setBigInt64(0, BigInt(value), le), + size: 8 + }); + var getI64Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getBigInt64(0, le), + name: "i64", + size: 8 + }); + var getI64Codec = (config2 = {}) => codecsCore.combineCodec(getI64Encoder(config2), getI64Decoder(config2)); + var getI8Encoder = () => numberEncoderFactory({ + name: "i8", + range: [-Number("0x7f") - 1, Number("0x7f")], + set: (view, value) => view.setInt8(0, Number(value)), + size: 1 + }); + var getI8Decoder = () => numberDecoderFactory({ + get: (view) => view.getInt8(0), + name: "i8", + size: 1 + }); + var getI8Codec = () => codecsCore.combineCodec(getI8Encoder(), getI8Decoder()); + var getShortU16Encoder = () => codecsCore.createEncoder({ + getSizeFromValue: (value) => { + if (value <= 127) return 1; + if (value <= 16383) return 2; + return 3; + }, + maxSize: 3, + write: (value, bytes, offset) => { + assertNumberIsBetweenForCodec("shortU16", 0, 65535, value); + const shortU16Bytes = [0]; + for (let ii = 0; ; ii += 1) { + const alignedValue = Number(value) >> ii * 7; + if (alignedValue === 0) { + break; + } + const nextSevenBits = 127 & alignedValue; + shortU16Bytes[ii] = nextSevenBits; + if (ii > 0) { + shortU16Bytes[ii - 1] |= 128; + } + } + bytes.set(shortU16Bytes, offset); + return offset + shortU16Bytes.length; + } + }); + var getShortU16Decoder = () => codecsCore.createDecoder({ + maxSize: 3, + read: (bytes, offset) => { + let value = 0; + let byteCount = 0; + while (++byteCount) { + const byteIndex = byteCount - 1; + const currentByte = bytes[offset + byteIndex]; + const nextSevenBits = 127 & currentByte; + value |= nextSevenBits << byteIndex * 7; + if ((currentByte & 128) === 0) { + break; + } + } + return [value, offset + byteCount]; + } + }); + var getShortU16Codec = () => codecsCore.combineCodec(getShortU16Encoder(), getShortU16Decoder()); + var getU128Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "u128", + range: [0n, BigInt("0xffffffffffffffffffffffffffffffff")], + set: (view, value, le) => { + const leftOffset = le ? 8 : 0; + const rightOffset = le ? 0 : 8; + const rightMask = 0xffffffffffffffffn; + view.setBigUint64(leftOffset, BigInt(value) >> 64n, le); + view.setBigUint64(rightOffset, BigInt(value) & rightMask, le); + }, + size: 16 + }); + var getU128Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => { + const leftOffset = le ? 8 : 0; + const rightOffset = le ? 0 : 8; + const left = view.getBigUint64(leftOffset, le); + const right = view.getBigUint64(rightOffset, le); + return (left << 64n) + right; + }, + name: "u128", + size: 16 + }); + var getU128Codec = (config2 = {}) => codecsCore.combineCodec(getU128Encoder(config2), getU128Decoder(config2)); + var getU16Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "u16", + range: [0, Number("0xffff")], + set: (view, value, le) => view.setUint16(0, Number(value), le), + size: 2 + }); + var getU16Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getUint16(0, le), + name: "u16", + size: 2 + }); + var getU16Codec = (config2 = {}) => codecsCore.combineCodec(getU16Encoder(config2), getU16Decoder(config2)); + var getU32Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "u32", + range: [0, Number("0xffffffff")], + set: (view, value, le) => view.setUint32(0, Number(value), le), + size: 4 + }); + var getU32Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getUint32(0, le), + name: "u32", + size: 4 + }); + var getU32Codec = (config2 = {}) => codecsCore.combineCodec(getU32Encoder(config2), getU32Decoder(config2)); + var getU64Encoder = (config2 = {}) => numberEncoderFactory({ + config: config2, + name: "u64", + range: [0n, BigInt("0xffffffffffffffff")], + set: (view, value, le) => view.setBigUint64(0, BigInt(value), le), + size: 8 + }); + var getU64Decoder = (config2 = {}) => numberDecoderFactory({ + config: config2, + get: (view, le) => view.getBigUint64(0, le), + name: "u64", + size: 8 + }); + var getU64Codec = (config2 = {}) => codecsCore.combineCodec(getU64Encoder(config2), getU64Decoder(config2)); + var getU8Encoder = () => numberEncoderFactory({ + name: "u8", + range: [0, Number("0xff")], + set: (view, value) => view.setUint8(0, Number(value)), + size: 1 + }); + var getU8Decoder = () => numberDecoderFactory({ + get: (view) => view.getUint8(0), + name: "u8", + size: 1 + }); + var getU8Codec = () => codecsCore.combineCodec(getU8Encoder(), getU8Decoder()); + exports2.Endian = Endian; + exports2.assertNumberIsBetweenForCodec = assertNumberIsBetweenForCodec; + exports2.getF32Codec = getF32Codec; + exports2.getF32Decoder = getF32Decoder; + exports2.getF32Encoder = getF32Encoder; + exports2.getF64Codec = getF64Codec; + exports2.getF64Decoder = getF64Decoder; + exports2.getF64Encoder = getF64Encoder; + exports2.getI128Codec = getI128Codec; + exports2.getI128Decoder = getI128Decoder; + exports2.getI128Encoder = getI128Encoder; + exports2.getI16Codec = getI16Codec; + exports2.getI16Decoder = getI16Decoder; + exports2.getI16Encoder = getI16Encoder; + exports2.getI32Codec = getI32Codec; + exports2.getI32Decoder = getI32Decoder; + exports2.getI32Encoder = getI32Encoder; + exports2.getI64Codec = getI64Codec; + exports2.getI64Decoder = getI64Decoder; + exports2.getI64Encoder = getI64Encoder; + exports2.getI8Codec = getI8Codec; + exports2.getI8Decoder = getI8Decoder; + exports2.getI8Encoder = getI8Encoder; + exports2.getShortU16Codec = getShortU16Codec; + exports2.getShortU16Decoder = getShortU16Decoder; + exports2.getShortU16Encoder = getShortU16Encoder; + exports2.getU128Codec = getU128Codec; + exports2.getU128Decoder = getU128Decoder; + exports2.getU128Encoder = getU128Encoder; + exports2.getU16Codec = getU16Codec; + exports2.getU16Decoder = getU16Decoder; + exports2.getU16Encoder = getU16Encoder; + exports2.getU32Codec = getU32Codec; + exports2.getU32Decoder = getU32Decoder; + exports2.getU32Encoder = getU32Encoder; + exports2.getU64Codec = getU64Codec; + exports2.getU64Decoder = getU64Decoder; + exports2.getU64Encoder = getU64Encoder; + exports2.getU8Codec = getU8Codec; + exports2.getU8Decoder = getU8Decoder; + exports2.getU8Encoder = getU8Encoder; + } +}); + +// node_modules/@solana/codecs-data-structures/dist/index.node.cjs +var require_index_node8 = __commonJS({ + "node_modules/@solana/codecs-data-structures/dist/index.node.cjs"(exports2) { + "use strict"; + var codecsCore = require_index_node2(); + var codecsNumbers = require_index_node7(); + var errors = require_index_node(); + function assertValidNumberOfItemsForCodec(codecDescription, expected, actual) { + if (expected !== actual) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, { + actual, + codecDescription, + expected + }); + } + } + function maxCodecSizes(sizes) { + return sizes.reduce( + (all, size) => all === null || size === null ? null : Math.max(all, size), + 0 + ); + } + function sumCodecSizes(sizes) { + return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0); + } + function getFixedSize(codec) { + return codecsCore.isFixedSize(codec) ? codec.fixedSize : null; + } + function getMaxSize(codec) { + return codecsCore.isFixedSize(codec) ? codec.fixedSize : codec.maxSize ?? null; + } + function getArrayEncoder(item, config2 = {}) { + const size = config2.size ?? codecsNumbers.getU32Encoder(); + const fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item)); + const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? void 0; + return codecsCore.createEncoder({ + ...fixedSize !== null ? { fixedSize } : { + getSizeFromValue: (array) => { + const prefixSize = typeof size === "object" ? codecsCore.getEncodedSize(array.length, size) : 0; + return prefixSize + [...array].reduce((all, value) => all + codecsCore.getEncodedSize(value, item), 0); + }, + maxSize + }, + write: (array, bytes, offset) => { + if (typeof size === "number") { + assertValidNumberOfItemsForCodec("array", size, array.length); + } + if (typeof size === "object") { + offset = size.write(array.length, bytes, offset); + } + array.forEach((value) => { + offset = item.write(value, bytes, offset); + }); + return offset; + } + }); + } + function getArrayDecoder(item, config2 = {}) { + const size = config2.size ?? codecsNumbers.getU32Decoder(); + const itemSize = getFixedSize(item); + const fixedSize = computeArrayLikeCodecSize(size, itemSize); + const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? void 0; + return codecsCore.createDecoder({ + ...fixedSize !== null ? { fixedSize } : { maxSize }, + read: (bytes, offset) => { + const array = []; + if (typeof size === "object" && bytes.slice(offset).length === 0) { + return [array, offset]; + } + if (size === "remainder") { + while (offset < bytes.length) { + const [value, newOffset2] = item.read(bytes, offset); + offset = newOffset2; + array.push(value); + } + return [array, offset]; + } + const [resolvedSize, newOffset] = typeof size === "number" ? [size, offset] : size.read(bytes, offset); + offset = newOffset; + for (let i = 0; i < resolvedSize; i += 1) { + const [value, newOffset2] = item.read(bytes, offset); + offset = newOffset2; + array.push(value); + } + return [array, offset]; + } + }); + } + function getArrayCodec(item, config2 = {}) { + return codecsCore.combineCodec(getArrayEncoder(item, config2), getArrayDecoder(item, config2)); + } + function computeArrayLikeCodecSize(size, itemSize) { + if (typeof size !== "number") return null; + if (size === 0) return 0; + return itemSize === null ? null : itemSize * size; + } + function getBitArrayEncoder(size, config2 = {}) { + const parsedConfig = typeof config2 === "boolean" ? { backward: config2 } : config2; + const backward = parsedConfig.backward ?? false; + return codecsCore.createEncoder({ + fixedSize: size, + write(value, bytes, offset) { + const bytesToAdd = []; + for (let i = 0; i < size; i += 1) { + let byte = 0; + for (let j = 0; j < 8; j += 1) { + const feature = Number(value[i * 8 + j] ?? 0); + byte |= feature << (backward ? j : 7 - j); + } + if (backward) { + bytesToAdd.unshift(byte); + } else { + bytesToAdd.push(byte); + } + } + bytes.set(bytesToAdd, offset); + return size; + } + }); + } + function getBitArrayDecoder(size, config2 = {}) { + const parsedConfig = typeof config2 === "boolean" ? { backward: config2 } : config2; + const backward = parsedConfig.backward ?? false; + return codecsCore.createDecoder({ + fixedSize: size, + read(bytes, offset) { + codecsCore.assertByteArrayHasEnoughBytesForCodec("bitArray", size, bytes, offset); + const booleans = []; + let slice = bytes.slice(offset, offset + size); + slice = backward ? slice.reverse() : slice; + slice.forEach((byte) => { + for (let i = 0; i < 8; i += 1) { + if (backward) { + booleans.push(Boolean(byte & 1)); + byte >>= 1; + } else { + booleans.push(Boolean(byte & 128)); + byte <<= 1; + } + } + }); + return [booleans, offset + size]; + } + }); + } + function getBitArrayCodec(size, config2 = {}) { + return codecsCore.combineCodec(getBitArrayEncoder(size, config2), getBitArrayDecoder(size, config2)); + } + function getBooleanEncoder(config2 = {}) { + return codecsCore.transformEncoder(config2.size ?? codecsNumbers.getU8Encoder(), (value) => value ? 1 : 0); + } + function getBooleanDecoder(config2 = {}) { + return codecsCore.transformDecoder(config2.size ?? codecsNumbers.getU8Decoder(), (value) => Number(value) === 1); + } + function getBooleanCodec(config2 = {}) { + return codecsCore.combineCodec(getBooleanEncoder(config2), getBooleanDecoder(config2)); + } + function getBytesEncoder() { + return codecsCore.createEncoder({ + getSizeFromValue: (value) => value.length, + write: (value, bytes, offset) => { + bytes.set(value, offset); + return offset + value.length; + } + }); + } + function getBytesDecoder() { + return codecsCore.createDecoder({ + read: (bytes, offset) => { + const slice = bytes.slice(offset); + return [slice, offset + slice.length]; + } + }); + } + function getBytesCodec() { + return codecsCore.combineCodec(getBytesEncoder(), getBytesDecoder()); + } + var getBase16Decoder = () => codecsCore.createDecoder({ + read(bytes, offset) { + const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, "0"), ""); + return [value, bytes.length]; + } + }); + function getConstantEncoder(constant) { + return codecsCore.createEncoder({ + fixedSize: constant.length, + write: (_, bytes, offset) => { + bytes.set(constant, offset); + return offset + constant.length; + } + }); + } + function getConstantDecoder(constant) { + return codecsCore.createDecoder({ + fixedSize: constant.length, + read: (bytes, offset) => { + const base16 = getBase16Decoder(); + if (!codecsCore.containsBytes(bytes, constant, offset)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_CONSTANT, { + constant, + data: bytes, + hexConstant: base16.decode(constant), + hexData: base16.decode(bytes), + offset + }); + } + return [void 0, offset + constant.length]; + } + }); + } + function getConstantCodec(constant) { + return codecsCore.combineCodec(getConstantEncoder(constant), getConstantDecoder(constant)); + } + function getTupleEncoder(items) { + const fixedSize = sumCodecSizes(items.map(getFixedSize)); + const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? void 0; + return codecsCore.createEncoder({ + ...fixedSize === null ? { + getSizeFromValue: (value) => items.map((item, index) => codecsCore.getEncodedSize(value[index], item)).reduce((all, one) => all + one, 0), + maxSize + } : { fixedSize }, + write: (value, bytes, offset) => { + assertValidNumberOfItemsForCodec("tuple", items.length, value.length); + items.forEach((item, index) => { + offset = item.write(value[index], bytes, offset); + }); + return offset; + } + }); + } + function getTupleDecoder(items) { + const fixedSize = sumCodecSizes(items.map(getFixedSize)); + const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? void 0; + return codecsCore.createDecoder({ + ...fixedSize === null ? { maxSize } : { fixedSize }, + read: (bytes, offset) => { + const values = []; + items.forEach((item) => { + const [newValue, newOffset] = item.read(bytes, offset); + values.push(newValue); + offset = newOffset; + }); + return [values, offset]; + } + }); + } + function getTupleCodec(items) { + return codecsCore.combineCodec( + getTupleEncoder(items), + getTupleDecoder(items) + ); + } + function getUnionEncoder(variants, getIndexFromValue) { + const fixedSize = getUnionFixedSize(variants); + const write = (variant, bytes, offset) => { + const index = getIndexFromValue(variant); + assertValidVariantIndex(variants, index); + return variants[index].write(variant, bytes, offset); + }; + if (fixedSize !== null) { + return codecsCore.createEncoder({ fixedSize, write }); + } + const maxSize = getUnionMaxSize(variants); + return codecsCore.createEncoder({ + ...maxSize !== null ? { maxSize } : {}, + getSizeFromValue: (variant) => { + const index = getIndexFromValue(variant); + assertValidVariantIndex(variants, index); + return codecsCore.getEncodedSize(variant, variants[index]); + }, + write + }); + } + function getUnionDecoder(variants, getIndexFromBytes) { + const fixedSize = getUnionFixedSize(variants); + const read = (bytes, offset) => { + const index = getIndexFromBytes(bytes, offset); + assertValidVariantIndex(variants, index); + return variants[index].read(bytes, offset); + }; + if (fixedSize !== null) { + return codecsCore.createDecoder({ fixedSize, read }); + } + const maxSize = getUnionMaxSize(variants); + return codecsCore.createDecoder({ ...maxSize !== null ? { maxSize } : {}, read }); + } + function getUnionCodec(variants, getIndexFromValue, getIndexFromBytes) { + return codecsCore.combineCodec( + getUnionEncoder(variants, getIndexFromValue), + getUnionDecoder(variants, getIndexFromBytes) + ); + } + function assertValidVariantIndex(variants, index) { + if (typeof variants[index] === "undefined") { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, { + maxRange: variants.length - 1, + minRange: 0, + variant: index + }); + } + } + function getUnionFixedSize(variants) { + if (variants.length === 0) return 0; + if (!codecsCore.isFixedSize(variants[0])) return null; + const variantSize = variants[0].fixedSize; + const sameSizedVariants = variants.every((variant) => codecsCore.isFixedSize(variant) && variant.fixedSize === variantSize); + return sameSizedVariants ? variantSize : null; + } + function getUnionMaxSize(variants) { + return maxCodecSizes(variants.map((variant) => getMaxSize(variant))); + } + function getDiscriminatedUnionEncoder(variants, config2 = {}) { + const discriminatorProperty = config2.discriminator ?? "__kind"; + const prefix = config2.size ?? codecsNumbers.getU8Encoder(); + return getUnionEncoder( + variants.map( + ([, variant], index) => codecsCore.transformEncoder(getTupleEncoder([prefix, variant]), (value) => [index, value]) + ), + (value) => getVariantDiscriminator(variants, value[discriminatorProperty]) + ); + } + function getDiscriminatedUnionDecoder(variants, config2 = {}) { + const discriminatorProperty = config2.discriminator ?? "__kind"; + const prefix = config2.size ?? codecsNumbers.getU8Decoder(); + return getUnionDecoder( + variants.map( + ([discriminator, variant]) => codecsCore.transformDecoder(getTupleDecoder([prefix, variant]), ([, value]) => ({ + [discriminatorProperty]: discriminator, + ...value + })) + ), + (bytes, offset) => Number(prefix.read(bytes, offset)[0]) + ); + } + function getDiscriminatedUnionCodec(variants, config2 = {}) { + return codecsCore.combineCodec( + getDiscriminatedUnionEncoder(variants, config2), + getDiscriminatedUnionDecoder(variants, config2) + ); + } + function getVariantDiscriminator(variants, discriminatorValue) { + const discriminator = variants.findIndex(([key]) => discriminatorValue === key); + if (discriminator < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, { + value: discriminatorValue, + variants: variants.map(([key]) => key) + }); + } + return discriminator; + } + var getDataEnumEncoder = getDiscriminatedUnionEncoder; + var getDataEnumDecoder = getDiscriminatedUnionDecoder; + var getDataEnumCodec = getDiscriminatedUnionCodec; + function getEnumStats(constructor) { + const numericalValues = [...new Set(Object.values(constructor).filter((v) => typeof v === "number"))].sort(); + const enumRecord = Object.fromEntries(Object.entries(constructor).slice(numericalValues.length)); + const enumKeys = Object.keys(enumRecord); + const enumValues = Object.values(enumRecord); + const stringValues = [ + .../* @__PURE__ */ new Set([...enumKeys, ...enumValues.filter((v) => typeof v === "string")]) + ]; + return { enumKeys, enumRecord, enumValues, numericalValues, stringValues }; + } + function getEnumIndexFromVariant({ + enumKeys, + enumValues, + variant + }) { + const valueIndex = findLastIndex(enumValues, (value) => value === variant); + if (valueIndex >= 0) return valueIndex; + return enumKeys.findIndex((key) => key === variant); + } + function getEnumIndexFromDiscriminator({ + discriminator, + enumKeys, + enumValues, + useValuesAsDiscriminators + }) { + if (!useValuesAsDiscriminators) { + return discriminator >= 0 && discriminator < enumKeys.length ? discriminator : -1; + } + return findLastIndex(enumValues, (value) => value === discriminator); + } + function findLastIndex(array, predicate) { + let l = array.length; + while (l--) { + if (predicate(array[l], l, array)) return l; + } + return -1; + } + function formatNumericalValues(values) { + if (values.length === 0) return ""; + let range = [values[0], values[0]]; + const ranges = []; + for (let index = 1; index < values.length; index++) { + const value = values[index]; + if (range[1] + 1 === value) { + range[1] = value; + } else { + ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`); + range = [value, value]; + } + } + ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`); + return ranges.join(", "); + } + function getEnumEncoder(constructor, config2 = {}) { + const prefix = config2.size ?? codecsNumbers.getU8Encoder(); + const useValuesAsDiscriminators = config2.useValuesAsDiscriminators ?? false; + const { enumKeys, enumValues, numericalValues, stringValues } = getEnumStats(constructor); + if (useValuesAsDiscriminators && enumValues.some((value) => typeof value === "string")) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, { + stringValues: enumValues.filter((v) => typeof v === "string") + }); + } + return codecsCore.transformEncoder(prefix, (variant) => { + const index = getEnumIndexFromVariant({ enumKeys, enumValues, variant }); + if (index < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, { + formattedNumericalValues: formatNumericalValues(numericalValues), + numericalValues, + stringValues, + variant + }); + } + return useValuesAsDiscriminators ? enumValues[index] : index; + }); + } + function getEnumDecoder(constructor, config2 = {}) { + const prefix = config2.size ?? codecsNumbers.getU8Decoder(); + const useValuesAsDiscriminators = config2.useValuesAsDiscriminators ?? false; + const { enumKeys, enumValues, numericalValues } = getEnumStats(constructor); + if (useValuesAsDiscriminators && enumValues.some((value) => typeof value === "string")) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, { + stringValues: enumValues.filter((v) => typeof v === "string") + }); + } + return codecsCore.transformDecoder(prefix, (value) => { + const discriminator = Number(value); + const index = getEnumIndexFromDiscriminator({ + discriminator, + enumKeys, + enumValues, + useValuesAsDiscriminators + }); + if (index < 0) { + const validDiscriminators = useValuesAsDiscriminators ? numericalValues : [...Array(enumKeys.length).keys()]; + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, { + discriminator, + formattedValidDiscriminators: formatNumericalValues(validDiscriminators), + validDiscriminators + }); + } + return enumValues[index]; + }); + } + function getEnumCodec(constructor, config2 = {}) { + return codecsCore.combineCodec(getEnumEncoder(constructor, config2), getEnumDecoder(constructor, config2)); + } + var getScalarEnumEncoder = getEnumEncoder; + var getScalarEnumDecoder = getEnumDecoder; + var getScalarEnumCodec = getEnumCodec; + function getHiddenPrefixEncoder(encoder, prefixedEncoders) { + return codecsCore.transformEncoder( + getTupleEncoder([...prefixedEncoders, encoder]), + (value) => [...prefixedEncoders.map(() => void 0), value] + ); + } + function getHiddenPrefixDecoder(decoder, prefixedDecoders) { + return codecsCore.transformDecoder( + getTupleDecoder([...prefixedDecoders, decoder]), + (tuple) => tuple[tuple.length - 1] + ); + } + function getHiddenPrefixCodec(codec, prefixedCodecs) { + return codecsCore.combineCodec(getHiddenPrefixEncoder(codec, prefixedCodecs), getHiddenPrefixDecoder(codec, prefixedCodecs)); + } + function getHiddenSuffixEncoder(encoder, suffixedEncoders) { + return codecsCore.transformEncoder( + getTupleEncoder([encoder, ...suffixedEncoders]), + (value) => [value, ...suffixedEncoders.map(() => void 0)] + ); + } + function getHiddenSuffixDecoder(decoder, suffixedDecoders) { + return codecsCore.transformDecoder( + getTupleDecoder([decoder, ...suffixedDecoders]), + (tuple) => tuple[0] + ); + } + function getHiddenSuffixCodec(codec, suffixedCodecs) { + return codecsCore.combineCodec(getHiddenSuffixEncoder(codec, suffixedCodecs), getHiddenSuffixDecoder(codec, suffixedCodecs)); + } + function getLiteralUnionEncoder(variants, config2 = {}) { + const discriminator = config2.size ?? codecsNumbers.getU8Encoder(); + return codecsCore.transformEncoder(discriminator, (variant) => { + const index = variants.indexOf(variant); + if (index < 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT, { + value: variant, + variants + }); + } + return index; + }); + } + function getLiteralUnionDecoder(variants, config2 = {}) { + const discriminator = config2.size ?? codecsNumbers.getU8Decoder(); + return codecsCore.transformDecoder(discriminator, (index) => { + if (index < 0 || index >= variants.length) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE, { + discriminator: index, + maxRange: variants.length - 1, + minRange: 0 + }); + } + return variants[Number(index)]; + }); + } + function getLiteralUnionCodec(variants, config2 = {}) { + return codecsCore.combineCodec(getLiteralUnionEncoder(variants, config2), getLiteralUnionDecoder(variants, config2)); + } + function getMapEncoder(key, value, config2 = {}) { + return codecsCore.transformEncoder( + getArrayEncoder(getTupleEncoder([key, value]), config2), + (map) => [...map.entries()] + ); + } + function getMapDecoder(key, value, config2 = {}) { + return codecsCore.transformDecoder( + getArrayDecoder(getTupleDecoder([key, value]), config2), + (entries) => new Map(entries) + ); + } + function getMapCodec(key, value, config2 = {}) { + return codecsCore.combineCodec(getMapEncoder(key, value, config2), getMapDecoder(key, value, config2)); + } + function getUnitEncoder() { + return codecsCore.createEncoder({ + fixedSize: 0, + write: (_value, _bytes, offset) => offset + }); + } + function getUnitDecoder() { + return codecsCore.createDecoder({ + fixedSize: 0, + read: (_bytes, offset) => [void 0, offset] + }); + } + function getUnitCodec() { + return codecsCore.combineCodec(getUnitEncoder(), getUnitDecoder()); + } + function getNullableEncoder(item, config2 = {}) { + const prefix = (() => { + if (config2.prefix === null) { + return codecsCore.transformEncoder(getUnitEncoder(), (_boolean) => void 0); + } + return getBooleanEncoder({ size: config2.prefix ?? codecsNumbers.getU8Encoder() }); + })(); + const noneValue = (() => { + if (config2.noneValue === "zeroes") { + codecsCore.assertIsFixedSize(item); + return codecsCore.fixEncoderSize(getUnitEncoder(), item.fixedSize); + } + if (!config2.noneValue) { + return getUnitEncoder(); + } + return getConstantEncoder(config2.noneValue); + })(); + return getUnionEncoder( + [ + codecsCore.transformEncoder(getTupleEncoder([prefix, noneValue]), (_value) => [ + false, + void 0 + ]), + codecsCore.transformEncoder(getTupleEncoder([prefix, item]), (value) => [true, value]) + ], + (variant) => Number(variant !== null) + ); + } + function getNullableDecoder(item, config2 = {}) { + const prefix = (() => { + if (config2.prefix === null) { + return codecsCore.transformDecoder(getUnitDecoder(), () => false); + } + return getBooleanDecoder({ size: config2.prefix ?? codecsNumbers.getU8Decoder() }); + })(); + const noneValue = (() => { + if (config2.noneValue === "zeroes") { + codecsCore.assertIsFixedSize(item); + return codecsCore.fixDecoderSize(getUnitDecoder(), item.fixedSize); + } + if (!config2.noneValue) { + return getUnitDecoder(); + } + return getConstantDecoder(config2.noneValue); + })(); + return getUnionDecoder( + [ + codecsCore.transformDecoder(getTupleDecoder([prefix, noneValue]), () => null), + codecsCore.transformDecoder(getTupleDecoder([prefix, item]), ([, value]) => value) + ], + (bytes, offset) => { + if (config2.prefix === null && !config2.noneValue) { + return Number(offset < bytes.length); + } + if (config2.prefix === null && config2.noneValue != null) { + const zeroValue = config2.noneValue === "zeroes" ? new Uint8Array(noneValue.fixedSize).fill(0) : config2.noneValue; + return codecsCore.containsBytes(bytes, zeroValue, offset) ? 0 : 1; + } + return Number(prefix.read(bytes, offset)[0]); + } + ); + } + function getNullableCodec(item, config2 = {}) { + return codecsCore.combineCodec( + getNullableEncoder(item, config2), + getNullableDecoder(item, config2) + ); + } + function getSetEncoder(item, config2 = {}) { + return codecsCore.transformEncoder(getArrayEncoder(item, config2), (set) => [...set]); + } + function getSetDecoder(item, config2 = {}) { + return codecsCore.transformDecoder(getArrayDecoder(item, config2), (entries) => new Set(entries)); + } + function getSetCodec(item, config2 = {}) { + return codecsCore.combineCodec(getSetEncoder(item, config2), getSetDecoder(item, config2)); + } + function getStructEncoder(fields) { + const fieldCodecs = fields.map(([, codec]) => codec); + const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize)); + const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? void 0; + return codecsCore.createEncoder({ + ...fixedSize === null ? { + getSizeFromValue: (value) => fields.map(([key, codec]) => codecsCore.getEncodedSize(value[key], codec)).reduce((all, one) => all + one, 0), + maxSize + } : { fixedSize }, + write: (struct, bytes, offset) => { + fields.forEach(([key, codec]) => { + offset = codec.write(struct[key], bytes, offset); + }); + return offset; + } + }); + } + function getStructDecoder(fields) { + const fieldCodecs = fields.map(([, codec]) => codec); + const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize)); + const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? void 0; + return codecsCore.createDecoder({ + ...fixedSize === null ? { maxSize } : { fixedSize }, + read: (bytes, offset) => { + const struct = {}; + fields.forEach(([key, codec]) => { + const [value, newOffset] = codec.read(bytes, offset); + offset = newOffset; + struct[key] = value; + }); + return [struct, offset]; + } + }); + } + function getStructCodec(fields) { + return codecsCore.combineCodec( + getStructEncoder(fields), + getStructDecoder(fields) + ); + } + exports2.assertValidNumberOfItemsForCodec = assertValidNumberOfItemsForCodec; + exports2.getArrayCodec = getArrayCodec; + exports2.getArrayDecoder = getArrayDecoder; + exports2.getArrayEncoder = getArrayEncoder; + exports2.getBitArrayCodec = getBitArrayCodec; + exports2.getBitArrayDecoder = getBitArrayDecoder; + exports2.getBitArrayEncoder = getBitArrayEncoder; + exports2.getBooleanCodec = getBooleanCodec; + exports2.getBooleanDecoder = getBooleanDecoder; + exports2.getBooleanEncoder = getBooleanEncoder; + exports2.getBytesCodec = getBytesCodec; + exports2.getBytesDecoder = getBytesDecoder; + exports2.getBytesEncoder = getBytesEncoder; + exports2.getConstantCodec = getConstantCodec; + exports2.getConstantDecoder = getConstantDecoder; + exports2.getConstantEncoder = getConstantEncoder; + exports2.getDataEnumCodec = getDataEnumCodec; + exports2.getDataEnumDecoder = getDataEnumDecoder; + exports2.getDataEnumEncoder = getDataEnumEncoder; + exports2.getDiscriminatedUnionCodec = getDiscriminatedUnionCodec; + exports2.getDiscriminatedUnionDecoder = getDiscriminatedUnionDecoder; + exports2.getDiscriminatedUnionEncoder = getDiscriminatedUnionEncoder; + exports2.getEnumCodec = getEnumCodec; + exports2.getEnumDecoder = getEnumDecoder; + exports2.getEnumEncoder = getEnumEncoder; + exports2.getHiddenPrefixCodec = getHiddenPrefixCodec; + exports2.getHiddenPrefixDecoder = getHiddenPrefixDecoder; + exports2.getHiddenPrefixEncoder = getHiddenPrefixEncoder; + exports2.getHiddenSuffixCodec = getHiddenSuffixCodec; + exports2.getHiddenSuffixDecoder = getHiddenSuffixDecoder; + exports2.getHiddenSuffixEncoder = getHiddenSuffixEncoder; + exports2.getLiteralUnionCodec = getLiteralUnionCodec; + exports2.getLiteralUnionDecoder = getLiteralUnionDecoder; + exports2.getLiteralUnionEncoder = getLiteralUnionEncoder; + exports2.getMapCodec = getMapCodec; + exports2.getMapDecoder = getMapDecoder; + exports2.getMapEncoder = getMapEncoder; + exports2.getNullableCodec = getNullableCodec; + exports2.getNullableDecoder = getNullableDecoder; + exports2.getNullableEncoder = getNullableEncoder; + exports2.getScalarEnumCodec = getScalarEnumCodec; + exports2.getScalarEnumDecoder = getScalarEnumDecoder; + exports2.getScalarEnumEncoder = getScalarEnumEncoder; + exports2.getSetCodec = getSetCodec; + exports2.getSetDecoder = getSetDecoder; + exports2.getSetEncoder = getSetEncoder; + exports2.getStructCodec = getStructCodec; + exports2.getStructDecoder = getStructDecoder; + exports2.getStructEncoder = getStructEncoder; + exports2.getTupleCodec = getTupleCodec; + exports2.getTupleDecoder = getTupleDecoder; + exports2.getTupleEncoder = getTupleEncoder; + exports2.getUnionCodec = getUnionCodec; + exports2.getUnionDecoder = getUnionDecoder; + exports2.getUnionEncoder = getUnionEncoder; + exports2.getUnitCodec = getUnitCodec; + exports2.getUnitDecoder = getUnitDecoder; + exports2.getUnitEncoder = getUnitEncoder; + } +}); + +// node_modules/@solana/options/dist/index.node.cjs +var require_index_node9 = __commonJS({ + "node_modules/@solana/options/dist/index.node.cjs"(exports2) { + "use strict"; + var codecsCore = require_index_node2(); + var codecsDataStructures = require_index_node8(); + var codecsNumbers = require_index_node7(); + var some = (value) => ({ __option: "Some", value }); + var none = () => ({ __option: "None" }); + var isOption = (input) => !!(input && typeof input === "object" && "__option" in input && (input.__option === "Some" && "value" in input || input.__option === "None")); + var isSome = (option) => option.__option === "Some"; + var isNone = (option) => option.__option === "None"; + function unwrapOption(option, fallback2) { + if (isSome(option)) return option.value; + return fallback2 ? fallback2() : null; + } + var wrapNullable = (nullable) => nullable !== null ? some(nullable) : none(); + function getOptionEncoder(item, config2 = {}) { + const prefix = (() => { + if (config2.prefix === null) { + return codecsCore.transformEncoder(codecsDataStructures.getUnitEncoder(), (_boolean) => void 0); + } + return codecsDataStructures.getBooleanEncoder({ size: config2.prefix ?? codecsNumbers.getU8Encoder() }); + })(); + const noneValue = (() => { + if (config2.noneValue === "zeroes") { + codecsCore.assertIsFixedSize(item); + return codecsCore.fixEncoderSize(codecsDataStructures.getUnitEncoder(), item.fixedSize); + } + if (!config2.noneValue) { + return codecsDataStructures.getUnitEncoder(); + } + return codecsDataStructures.getConstantEncoder(config2.noneValue); + })(); + return codecsDataStructures.getUnionEncoder( + [ + codecsCore.transformEncoder(codecsDataStructures.getTupleEncoder([prefix, noneValue]), (_value) => [ + false, + void 0 + ]), + codecsCore.transformEncoder(codecsDataStructures.getTupleEncoder([prefix, item]), (value) => [ + true, + isOption(value) && isSome(value) ? value.value : value + ]) + ], + (variant) => { + const option = isOption(variant) ? variant : wrapNullable(variant); + return Number(isSome(option)); + } + ); + } + function getOptionDecoder(item, config2 = {}) { + const prefix = (() => { + if (config2.prefix === null) { + return codecsCore.transformDecoder(codecsDataStructures.getUnitDecoder(), () => false); + } + return codecsDataStructures.getBooleanDecoder({ size: config2.prefix ?? codecsNumbers.getU8Decoder() }); + })(); + const noneValue = (() => { + if (config2.noneValue === "zeroes") { + codecsCore.assertIsFixedSize(item); + return codecsCore.fixDecoderSize(codecsDataStructures.getUnitDecoder(), item.fixedSize); + } + if (!config2.noneValue) { + return codecsDataStructures.getUnitDecoder(); + } + return codecsDataStructures.getConstantDecoder(config2.noneValue); + })(); + return codecsDataStructures.getUnionDecoder( + [ + codecsCore.transformDecoder(codecsDataStructures.getTupleDecoder([prefix, noneValue]), () => none()), + codecsCore.transformDecoder(codecsDataStructures.getTupleDecoder([prefix, item]), ([, value]) => some(value)) + ], + (bytes, offset) => { + if (config2.prefix === null && !config2.noneValue) { + return Number(offset < bytes.length); + } + if (config2.prefix === null && config2.noneValue != null) { + const zeroValue = config2.noneValue === "zeroes" ? new Uint8Array(noneValue.fixedSize).fill(0) : config2.noneValue; + return codecsCore.containsBytes(bytes, zeroValue, offset) ? 0 : 1; + } + return Number(prefix.read(bytes, offset)[0]); + } + ); + } + function getOptionCodec(item, config2 = {}) { + return codecsCore.combineCodec( + getOptionEncoder(item, config2), + getOptionDecoder(item, config2) + ); + } + function unwrapOptionRecursively(input, fallback2) { + if (!input || ArrayBuffer.isView(input)) { + return input; + } + const next = (x) => fallback2 ? unwrapOptionRecursively(x, fallback2) : unwrapOptionRecursively(x); + if (isOption(input)) { + if (isSome(input)) return next(input.value); + return fallback2 ? fallback2() : null; + } + if (Array.isArray(input)) { + return input.map(next); + } + if (typeof input === "object") { + return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, next(v)])); + } + return input; + } + exports2.getOptionCodec = getOptionCodec; + exports2.getOptionDecoder = getOptionDecoder; + exports2.getOptionEncoder = getOptionEncoder; + exports2.isNone = isNone; + exports2.isOption = isOption; + exports2.isSome = isSome; + exports2.none = none; + exports2.some = some; + exports2.unwrapOption = unwrapOption; + exports2.unwrapOptionRecursively = unwrapOptionRecursively; + exports2.wrapNullable = wrapNullable; + } +}); + +// node_modules/@solana/codecs/dist/index.node.cjs +var require_index_node10 = __commonJS({ + "node_modules/@solana/codecs/dist/index.node.cjs"(exports2) { + "use strict"; + var codecsCore = require_index_node2(); + var codecsDataStructures = require_index_node8(); + var codecsNumbers = require_index_node7(); + var codecsStrings = require_index_node3(); + var options = require_index_node9(); + Object.keys(codecsCore).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return codecsCore[k]; + } + }); + }); + Object.keys(codecsDataStructures).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return codecsDataStructures[k]; + } + }); + }); + Object.keys(codecsNumbers).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return codecsNumbers[k]; + } + }); + }); + Object.keys(codecsStrings).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return codecsStrings[k]; + } + }); + }); + Object.keys(options).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return options[k]; + } + }); + }); + } +}); + +// node_modules/@solana/functional/dist/index.node.cjs +var require_index_node11 = __commonJS({ + "node_modules/@solana/functional/dist/index.node.cjs"(exports2) { + "use strict"; + function pipe(init, ...fns) { + return fns.reduce((acc, fn) => fn(acc), init); + } + exports2.pipe = pipe; + } +}); + +// node_modules/@solana/instructions/dist/index.node.cjs +var require_index_node12 = __commonJS({ + "node_modules/@solana/instructions/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + function isInstructionForProgram(instruction, programAddress) { + return instruction.programAddress === programAddress; + } + function assertIsInstructionForProgram(instruction, programAddress) { + if (instruction.programAddress !== programAddress) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, { + actualProgramAddress: instruction.programAddress, + expectedProgramAddress: programAddress + }); + } + } + function isInstructionWithAccounts(instruction) { + return instruction.accounts !== void 0; + } + function assertIsInstructionWithAccounts(instruction) { + if (instruction.accounts === void 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, { + data: instruction.data, + programAddress: instruction.programAddress + }); + } + } + function isInstructionWithData(instruction) { + return instruction.data !== void 0; + } + function assertIsInstructionWithData(instruction) { + if (instruction.data === void 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, { + accountAddresses: instruction.accounts?.map((a) => a.address), + programAddress: instruction.programAddress + }); + } + } + var AccountRole = /* @__PURE__ */ ((AccountRole2) => { + AccountRole2[AccountRole2["WRITABLE_SIGNER"] = /* 3 */ + 3] = "WRITABLE_SIGNER"; + AccountRole2[AccountRole2["READONLY_SIGNER"] = /* 2 */ + 2] = "READONLY_SIGNER"; + AccountRole2[AccountRole2["WRITABLE"] = /* 1 */ + 1] = "WRITABLE"; + AccountRole2[AccountRole2["READONLY"] = /* 0 */ + 0] = "READONLY"; + return AccountRole2; + })(AccountRole || {}); + var IS_SIGNER_BITMASK = 2; + var IS_WRITABLE_BITMASK = 1; + function downgradeRoleToNonSigner(role) { + return role & -3; + } + function downgradeRoleToReadonly(role) { + return role & -2; + } + function isSignerRole(role) { + return role >= 2; + } + function isWritableRole(role) { + return (role & IS_WRITABLE_BITMASK) !== 0; + } + function mergeRoles(roleA, roleB) { + return roleA | roleB; + } + function upgradeRoleToSigner(role) { + return role | IS_SIGNER_BITMASK; + } + function upgradeRoleToWritable(role) { + return role | IS_WRITABLE_BITMASK; + } + exports2.AccountRole = AccountRole; + exports2.assertIsInstructionForProgram = assertIsInstructionForProgram; + exports2.assertIsInstructionWithAccounts = assertIsInstructionWithAccounts; + exports2.assertIsInstructionWithData = assertIsInstructionWithData; + exports2.downgradeRoleToNonSigner = downgradeRoleToNonSigner; + exports2.downgradeRoleToReadonly = downgradeRoleToReadonly; + exports2.isInstructionForProgram = isInstructionForProgram; + exports2.isInstructionWithAccounts = isInstructionWithAccounts; + exports2.isInstructionWithData = isInstructionWithData; + exports2.isSignerRole = isSignerRole; + exports2.isWritableRole = isWritableRole; + exports2.mergeRoles = mergeRoles; + exports2.upgradeRoleToSigner = upgradeRoleToSigner; + exports2.upgradeRoleToWritable = upgradeRoleToWritable; + } +}); + +// node_modules/@solana/keys/dist/index.node.cjs +var require_index_node13 = __commonJS({ + "node_modules/@solana/keys/dist/index.node.cjs"(exports2) { + "use strict"; + var assertions = require_index_node5(); + var errors = require_index_node(); + var codecsStrings = require_index_node3(); + var ED25519_ALGORITHM_IDENTIFIER = ( + // Resist the temptation to convert this to a simple string; As of version 133.0.3, Firefox + // requires the object form of `AlgorithmIdentifier` and will throw a `DOMException` otherwise. + Object.freeze({ name: "Ed25519" }) + ); + function addPkcs8Header(bytes) { + return new Uint8Array([ + /** + * PKCS#8 header + */ + 48, + // ASN.1 sequence tag + 46, + // Length of sequence (46 more bytes) + 2, + // ASN.1 integer tag + 1, + // Length of integer + 0, + // Version number + 48, + // ASN.1 sequence tag + 5, + // Length of sequence + 6, + // ASN.1 object identifier tag + 3, + // Length of object identifier + // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112 + 43, + // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node) + 101, + // thawte(101) + // Ed25519 identifier + 112, + // id-Ed25519(112) + /** + * Private key payload + */ + 4, + // ASN.1 octet string tag + 34, + // String length (34 more bytes) + // Private key bytes as octet string + 4, + // ASN.1 octet string tag + 32, + // String length (32 bytes) + ...bytes + ]); + } + async function createPrivateKeyFromBytes(bytes, extractable = false) { + const actualLength = bytes.byteLength; + if (actualLength !== 32) { + throw new errors.SolanaError(errors.SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, { + actualLength + }); + } + const privateKeyBytesPkcs8 = addPkcs8Header(bytes); + return await crypto.subtle.importKey("pkcs8", privateKeyBytesPkcs8, ED25519_ALGORITHM_IDENTIFIER, extractable, [ + "sign" + ]); + } + async function getPublicKeyFromPrivateKey(privateKey, extractable = false) { + assertions.assertKeyExporterIsAvailable(); + if (privateKey.extractable === false) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, { key: privateKey }); + } + const jwk = await crypto.subtle.exportKey("jwk", privateKey); + return await crypto.subtle.importKey( + "jwk", + { + crv: "Ed25519", + ext: extractable, + key_ops: ["verify"], + kty: "OKP", + x: jwk.x + }, + "Ed25519", + extractable, + ["verify"] + ); + } + var base58Encoder; + function assertIsSignature(putativeSignature) { + if (!base58Encoder) base58Encoder = codecsStrings.getBase58Encoder(); + if ( + // Lowest value (64 bytes of zeroes) + putativeSignature.length < 64 || // Highest value (64 bytes of 255) + putativeSignature.length > 88 + ) { + throw new errors.SolanaError(errors.SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, { + actualLength: putativeSignature.length + }); + } + const bytes = base58Encoder.encode(putativeSignature); + const numBytes = bytes.byteLength; + if (numBytes !== 64) { + throw new errors.SolanaError(errors.SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, { + actualLength: numBytes + }); + } + } + function isSignature(putativeSignature) { + if (!base58Encoder) base58Encoder = codecsStrings.getBase58Encoder(); + if ( + // Lowest value (64 bytes of zeroes) + putativeSignature.length < 64 || // Highest value (64 bytes of 255) + putativeSignature.length > 88 + ) { + return false; + } + const bytes = base58Encoder.encode(putativeSignature); + const numBytes = bytes.byteLength; + if (numBytes !== 64) { + return false; + } + return true; + } + async function signBytes(key, data) { + assertions.assertSigningCapabilityIsAvailable(); + const signedData = await crypto.subtle.sign(ED25519_ALGORITHM_IDENTIFIER, key, data); + return new Uint8Array(signedData); + } + function signature(putativeSignature) { + assertIsSignature(putativeSignature); + return putativeSignature; + } + async function verifySignature(key, signature2, data) { + assertions.assertVerificationCapabilityIsAvailable(); + return await crypto.subtle.verify(ED25519_ALGORITHM_IDENTIFIER, key, signature2, data); + } + async function generateKeyPair() { + await assertions.assertKeyGenerationIsAvailable(); + const keyPair = await crypto.subtle.generateKey( + /* algorithm */ + ED25519_ALGORITHM_IDENTIFIER, + // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20 + /* extractable */ + false, + // Prevents the bytes of the private key from being visible to JS. + /* allowed uses */ + ["sign", "verify"] + ); + return keyPair; + } + async function createKeyPairFromBytes(bytes, extractable = false) { + assertions.assertPRNGIsAvailable(); + if (bytes.byteLength !== 64) { + throw new errors.SolanaError(errors.SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, { byteLength: bytes.byteLength }); + } + const [publicKey, privateKey] = await Promise.all([ + crypto.subtle.importKey( + "raw", + bytes.slice(32), + ED25519_ALGORITHM_IDENTIFIER, + /* extractable */ + true, + [ + "verify" + ] + ), + createPrivateKeyFromBytes(bytes.slice(0, 32), extractable) + ]); + const randomBytes2 = new Uint8Array(32); + crypto.getRandomValues(randomBytes2); + const signedData = await signBytes(privateKey, randomBytes2); + const isValid = await verifySignature(publicKey, signedData, randomBytes2); + if (!isValid) { + throw new errors.SolanaError(errors.SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY); + } + return { privateKey, publicKey }; + } + async function createKeyPairFromPrivateKeyBytes(bytes, extractable = false) { + const privateKeyPromise = createPrivateKeyFromBytes(bytes, extractable); + const [publicKey, privateKey] = await Promise.all([ + // This nested promise makes things efficient by + // creating the public key in parallel with the + // second private key creation, if it is needed. + (extractable ? privateKeyPromise : createPrivateKeyFromBytes( + bytes, + true + /* extractable */ + )).then( + async (privateKey2) => await getPublicKeyFromPrivateKey( + privateKey2, + true + /* extractable */ + ) + ), + privateKeyPromise + ]); + return { privateKey, publicKey }; + } + exports2.assertIsSignature = assertIsSignature; + exports2.createKeyPairFromBytes = createKeyPairFromBytes; + exports2.createKeyPairFromPrivateKeyBytes = createKeyPairFromPrivateKeyBytes; + exports2.createPrivateKeyFromBytes = createPrivateKeyFromBytes; + exports2.generateKeyPair = generateKeyPair; + exports2.getPublicKeyFromPrivateKey = getPublicKeyFromPrivateKey; + exports2.isSignature = isSignature; + exports2.signBytes = signBytes; + exports2.signature = signature; + exports2.verifySignature = verifySignature; + } +}); + +// node_modules/@solana/programs/dist/index.node.cjs +var require_index_node14 = __commonJS({ + "node_modules/@solana/programs/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + function isProgramError(error, transactionMessage, programAddress, code) { + if (!errors.isSolanaError(error, errors.SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM)) { + return false; + } + const instructionProgramAddress = transactionMessage.instructions[error.context.index]?.programAddress; + if (!instructionProgramAddress || instructionProgramAddress !== programAddress) { + return false; + } + return typeof code === "undefined" || error.context.code === code; + } + exports2.isProgramError = isProgramError; + } +}); + +// node_modules/@solana/rpc-spec-types/dist/index.node.cjs +var require_index_node15 = __commonJS({ + "node_modules/@solana/rpc-spec-types/dist/index.node.cjs"(exports2) { + "use strict"; + function parseJsonWithBigInts(json) { + return JSON.parse(wrapIntegersInBigIntValueObject(json), (_, value) => { + return isBigIntValueObject(value) ? unwrapBigIntValueObject(value) : value; + }); + } + function wrapIntegersInBigIntValueObject(json) { + const out = []; + let inQuote = false; + for (let ii = 0; ii < json.length; ii++) { + let isEscaped = false; + if (json[ii] === "\\") { + out.push(json[ii++]); + isEscaped = !isEscaped; + } + if (json[ii] === '"') { + out.push(json[ii]); + if (!isEscaped) { + inQuote = !inQuote; + } + continue; + } + if (!inQuote) { + const consumedNumber = consumeNumber(json, ii); + if (consumedNumber?.length) { + ii += consumedNumber.length - 1; + if (consumedNumber.match(/\.|[eE]-/)) { + out.push(consumedNumber); + } else { + out.push(wrapBigIntValueObject(consumedNumber)); + } + continue; + } + } + out.push(json[ii]); + } + return out.join(""); + } + function consumeNumber(json, ii) { + const JSON_NUMBER_REGEX = /^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/; + if (!json[ii]?.match(/[-\d]/)) { + return null; + } + const numberMatch = json.slice(ii).match(JSON_NUMBER_REGEX); + return numberMatch ? numberMatch[0] : null; + } + function wrapBigIntValueObject(value) { + return `{"$n":"${value}"}`; + } + function unwrapBigIntValueObject({ $n }) { + if ($n.match(/[eE]/)) { + const [units, exponent] = $n.split(/[eE]/); + return BigInt(units) * BigInt(10) ** BigInt(exponent); + } + return BigInt($n); + } + function isBigIntValueObject(value) { + return !!value && typeof value === "object" && "$n" in value && typeof value.$n === "string"; + } + var _nextMessageId = 0n; + function getNextMessageId() { + const id = _nextMessageId; + _nextMessageId++; + return id.toString(); + } + function createRpcMessage(request) { + return { + id: getNextMessageId(), + jsonrpc: "2.0", + method: request.methodName, + params: request.params + }; + } + function stringifyJsonWithBigints(value, space) { + return unwrapBigIntValueObject2( + JSON.stringify(value, (_, v) => typeof v === "bigint" ? wrapBigIntValueObject2(v) : v, space) + ); + } + function wrapBigIntValueObject2(value) { + return { $n: `${value}` }; + } + function unwrapBigIntValueObject2(value) { + return value.replace(/\{\s*"\$n"\s*:\s*"(-?\d+)"\s*\}/g, "$1"); + } + exports2.createRpcMessage = createRpcMessage; + exports2.parseJsonWithBigInts = parseJsonWithBigInts; + exports2.stringifyJsonWithBigints = stringifyJsonWithBigints; + } +}); + +// node_modules/@solana/rpc-spec/dist/index.node.cjs +var require_index_node16 = __commonJS({ + "node_modules/@solana/rpc-spec/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var rpcSpecTypes = require_index_node15(); + function createRpc(rpcConfig) { + return makeProxy(rpcConfig); + } + function makeProxy(rpcConfig) { + return new Proxy(rpcConfig.api, { + defineProperty() { + return false; + }, + deleteProperty() { + return false; + }, + get(target, p, receiver) { + if (p === "then") { + return void 0; + } + return function(...rawParams) { + const methodName = p.toString(); + const getApiPlan = Reflect.get(target, methodName, receiver); + if (!getApiPlan) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, { + method: methodName, + params: rawParams + }); + } + const apiPlan = getApiPlan(...rawParams); + return createPendingRpcRequest(rpcConfig, apiPlan); + }; + } + }); + } + function createPendingRpcRequest({ transport }, plan) { + return { + async send(options) { + return await plan.execute({ signal: options?.abortSignal, transport }); + } + }; + } + function createJsonRpcApi(config2) { + return new Proxy({}, { + defineProperty() { + return false; + }, + deleteProperty() { + return false; + }, + get(...args) { + const [_, p] = args; + const methodName = p.toString(); + return function(...rawParams) { + const rawRequest = Object.freeze({ methodName, params: rawParams }); + const request = config2?.requestTransformer ? config2?.requestTransformer(rawRequest) : rawRequest; + return Object.freeze({ + execute: async ({ signal, transport }) => { + const payload = rpcSpecTypes.createRpcMessage(request); + const response = await transport({ payload, signal }); + if (!config2?.responseTransformer) { + return response; + } + return config2.responseTransformer(response, request); + } + }); + }; + } + }); + } + function isJsonRpcPayload(payload) { + if (payload == null || typeof payload !== "object" || Array.isArray(payload)) { + return false; + } + return "jsonrpc" in payload && payload.jsonrpc === "2.0" && "method" in payload && typeof payload.method === "string" && "params" in payload; + } + exports2.createJsonRpcApi = createJsonRpcApi; + exports2.createRpc = createRpc; + exports2.isJsonRpcPayload = isJsonRpcPayload; + } +}); + +// node_modules/@solana/rpc-transformers/dist/index.node.cjs +var require_index_node17 = __commonJS({ + "node_modules/@solana/rpc-transformers/dist/index.node.cjs"(exports2) { + "use strict"; + var functional = require_index_node11(); + var errors = require_index_node(); + function downcastNodeToNumberIfBigint(value) { + return typeof value === "bigint" ? ( + // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana + // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely + // downcasting `bigints` to `numbers`. + Number(value) + ) : value; + } + var KEYPATH_WILDCARD = {}; + function getTreeWalker(visitors) { + return function traverse(node, state) { + if (Array.isArray(node)) { + return node.map((element, ii) => { + const nextState = { + ...state, + keyPath: [...state.keyPath, ii] + }; + return traverse(element, nextState); + }); + } else if (typeof node === "object" && node !== null) { + const out = {}; + for (const propName in node) { + if (!Object.prototype.hasOwnProperty.call(node, propName)) { + continue; + } + const nextState = { + ...state, + keyPath: [...state.keyPath, propName] + }; + out[propName] = traverse(node[propName], nextState); + } + return out; + } else { + return visitors.reduce((acc, visitNode) => visitNode(acc, state), node); + } + }; + } + function getTreeWalkerRequestTransformer(visitors, initialState) { + return (request) => { + const traverse = getTreeWalker(visitors); + return Object.freeze({ + ...request, + params: traverse(request.params, initialState) + }); + }; + } + function getTreeWalkerResponseTransformer(visitors, initialState) { + return (json) => getTreeWalker(visitors)(json, initialState); + } + function getBigIntDowncastRequestTransformer() { + return getTreeWalkerRequestTransformer([downcastNodeToNumberIfBigint], { keyPath: [] }); + } + function applyDefaultCommitment({ + commitmentPropertyName, + params, + optionsObjectPositionInParams, + overrideCommitment + }) { + const paramInTargetPosition = params[optionsObjectPositionInParams]; + if ( + // There's no config. + paramInTargetPosition === void 0 || // There is a config object. + paramInTargetPosition && typeof paramInTargetPosition === "object" && !Array.isArray(paramInTargetPosition) + ) { + if ( + // The config object already has a commitment set. + paramInTargetPosition && commitmentPropertyName in paramInTargetPosition + ) { + if (!paramInTargetPosition[commitmentPropertyName] || paramInTargetPosition[commitmentPropertyName] === "finalized") { + const nextParams = [...params]; + const { + [commitmentPropertyName]: _, + // eslint-disable-line @typescript-eslint/no-unused-vars + ...rest + } = paramInTargetPosition; + if (Object.keys(rest).length > 0) { + nextParams[optionsObjectPositionInParams] = rest; + } else { + if (optionsObjectPositionInParams === nextParams.length - 1) { + nextParams.length--; + } else { + nextParams[optionsObjectPositionInParams] = void 0; + } + } + return nextParams; + } + } else if (overrideCommitment !== "finalized") { + const nextParams = [...params]; + nextParams[optionsObjectPositionInParams] = { + ...paramInTargetPosition, + [commitmentPropertyName]: overrideCommitment + }; + return nextParams; + } + } + return params; + } + function getDefaultCommitmentRequestTransformer({ + defaultCommitment, + optionsObjectPositionByMethod + }) { + return (request) => { + const { params, methodName } = request; + if (!Array.isArray(params)) { + return request; + } + const optionsObjectPositionInParams = optionsObjectPositionByMethod[methodName]; + if (optionsObjectPositionInParams == null) { + return request; + } + return Object.freeze({ + methodName, + params: applyDefaultCommitment({ + commitmentPropertyName: methodName === "sendTransaction" ? "preflightCommitment" : "commitment", + optionsObjectPositionInParams, + overrideCommitment: defaultCommitment, + params + }) + }); + }; + } + function getIntegerOverflowNodeVisitor(onIntegerOverflow) { + return (value, { keyPath }) => { + if (typeof value === "bigint") { + if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) { + onIntegerOverflow(keyPath, value); + } + } + return value; + }; + } + function getIntegerOverflowRequestTransformer(onIntegerOverflow) { + return (request) => { + const transformer = getTreeWalkerRequestTransformer( + [getIntegerOverflowNodeVisitor((...args) => onIntegerOverflow(request, ...args))], + { keyPath: [] } + ); + return transformer(request); + }; + } + var OPTIONS_OBJECT_POSITION_BY_METHOD = { + accountNotifications: 1, + blockNotifications: 1, + getAccountInfo: 1, + getBalance: 1, + getBlock: 1, + getBlockHeight: 0, + getBlockProduction: 0, + getBlocks: 2, + getBlocksWithLimit: 2, + getEpochInfo: 0, + getFeeForMessage: 1, + getInflationGovernor: 0, + getInflationReward: 1, + getLargestAccounts: 0, + getLatestBlockhash: 0, + getLeaderSchedule: 1, + getMinimumBalanceForRentExemption: 1, + getMultipleAccounts: 1, + getProgramAccounts: 1, + getSignaturesForAddress: 1, + getSlot: 0, + getSlotLeader: 0, + getStakeMinimumDelegation: 0, + getSupply: 0, + getTokenAccountBalance: 1, + getTokenAccountsByDelegate: 2, + getTokenAccountsByOwner: 2, + getTokenLargestAccounts: 1, + getTokenSupply: 1, + getTransaction: 1, + getTransactionCount: 0, + getVoteAccounts: 0, + isBlockhashValid: 1, + logsNotifications: 1, + programNotifications: 1, + requestAirdrop: 2, + sendTransaction: 1, + signatureNotifications: 1, + simulateTransaction: 1 + }; + function getDefaultRequestTransformerForSolanaRpc(config2) { + const handleIntegerOverflow = config2?.onIntegerOverflow; + return (request) => { + return functional.pipe( + request, + handleIntegerOverflow ? getIntegerOverflowRequestTransformer(handleIntegerOverflow) : (r) => r, + getBigIntDowncastRequestTransformer(), + getDefaultCommitmentRequestTransformer({ + defaultCommitment: config2?.defaultCommitment, + optionsObjectPositionByMethod: OPTIONS_OBJECT_POSITION_BY_METHOD + }) + ); + }; + } + function getBigIntUpcastVisitor(allowedNumericKeyPaths) { + return function upcastNodeToBigIntIfNumber(value, { keyPath }) { + const isInteger = typeof value === "number" && Number.isInteger(value) || typeof value === "bigint"; + if (!isInteger) return value; + if (keyPathIsAllowedToBeNumeric(keyPath, allowedNumericKeyPaths)) { + return Number(value); + } else { + return BigInt(value); + } + }; + } + function keyPathIsAllowedToBeNumeric(keyPath, allowedNumericKeyPaths) { + return allowedNumericKeyPaths.some((prohibitedKeyPath) => { + if (prohibitedKeyPath.length !== keyPath.length) { + return false; + } + for (let ii = keyPath.length - 1; ii >= 0; ii--) { + const keyPathPart = keyPath[ii]; + const prohibitedKeyPathPart = prohibitedKeyPath[ii]; + if (prohibitedKeyPathPart !== keyPathPart && (prohibitedKeyPathPart !== KEYPATH_WILDCARD || typeof keyPathPart !== "number")) { + return false; + } + } + return true; + }); + } + function getBigIntUpcastResponseTransformer(allowedNumericKeyPaths) { + return getTreeWalkerResponseTransformer([getBigIntUpcastVisitor(allowedNumericKeyPaths)], { keyPath: [] }); + } + function getResultResponseTransformer() { + return (json) => json.result; + } + function getThrowSolanaErrorResponseTransformer() { + return (json) => { + const jsonRpcResponse = json; + if ("error" in jsonRpcResponse) { + throw errors.getSolanaErrorFromJsonRpcError(jsonRpcResponse.error); + } + return jsonRpcResponse; + }; + } + function getDefaultResponseTransformerForSolanaRpc(config2) { + return (response, request) => { + const methodName = request.methodName; + const keyPaths = config2?.allowedNumericKeyPaths && methodName ? config2.allowedNumericKeyPaths[methodName] : void 0; + return functional.pipe( + response, + (r) => getThrowSolanaErrorResponseTransformer()(r, request), + (r) => getResultResponseTransformer()(r, request), + (r) => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request) + ); + }; + } + function getDefaultResponseTransformerForSolanaRpcSubscriptions(config2) { + return (response, request) => { + const methodName = request.methodName; + const keyPaths = config2?.allowedNumericKeyPaths && methodName ? config2.allowedNumericKeyPaths[methodName] : void 0; + return functional.pipe(response, (r) => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request)); + }; + } + var jsonParsedTokenAccountsConfigs = [ + // parsed Token/Token22 token account + ["data", "parsed", "info", "tokenAmount", "decimals"], + ["data", "parsed", "info", "tokenAmount", "uiAmount"], + ["data", "parsed", "info", "rentExemptReserve", "decimals"], + ["data", "parsed", "info", "rentExemptReserve", "uiAmount"], + ["data", "parsed", "info", "delegatedAmount", "decimals"], + ["data", "parsed", "info", "delegatedAmount", "uiAmount"], + ["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "olderTransferFee", "transferFeeBasisPoints"], + ["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "newerTransferFee", "transferFeeBasisPoints"], + ["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "preUpdateAverageRate"], + ["data", "parsed", "info", "extensions", KEYPATH_WILDCARD, "state", "currentRate"] + ]; + var jsonParsedAccountsConfigs = [ + ...jsonParsedTokenAccountsConfigs, + // parsed AddressTableLookup account + ["data", "parsed", "info", "lastExtendedSlotStartIndex"], + // parsed Config account + ["data", "parsed", "info", "slashPenalty"], + ["data", "parsed", "info", "warmupCooldownRate"], + // parsed Token/Token22 mint account + ["data", "parsed", "info", "decimals"], + // parsed Token/Token22 multisig account + ["data", "parsed", "info", "numRequiredSigners"], + ["data", "parsed", "info", "numValidSigners"], + // parsed Stake account + ["data", "parsed", "info", "stake", "delegation", "warmupCooldownRate"], + // parsed Sysvar rent account + ["data", "parsed", "info", "exemptionThreshold"], + ["data", "parsed", "info", "burnPercent"], + // parsed Vote account + ["data", "parsed", "info", "commission"], + ["data", "parsed", "info", "votes", KEYPATH_WILDCARD, "confirmationCount"] + ]; + var innerInstructionsConfigs = [ + ["index"], + ["instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD], + ["instructions", KEYPATH_WILDCARD, "programIdIndex"], + ["instructions", KEYPATH_WILDCARD, "stackHeight"] + ]; + var messageConfig = [ + ["addressTableLookups", KEYPATH_WILDCARD, "writableIndexes", KEYPATH_WILDCARD], + ["addressTableLookups", KEYPATH_WILDCARD, "readonlyIndexes", KEYPATH_WILDCARD], + ["header", "numReadonlySignedAccounts"], + ["header", "numReadonlyUnsignedAccounts"], + ["header", "numRequiredSignatures"], + ["instructions", KEYPATH_WILDCARD, "accounts", KEYPATH_WILDCARD], + ["instructions", KEYPATH_WILDCARD, "programIdIndex"], + ["instructions", KEYPATH_WILDCARD, "stackHeight"] + ]; + exports2.KEYPATH_WILDCARD = KEYPATH_WILDCARD; + exports2.getBigIntDowncastRequestTransformer = getBigIntDowncastRequestTransformer; + exports2.getBigIntUpcastResponseTransformer = getBigIntUpcastResponseTransformer; + exports2.getDefaultCommitmentRequestTransformer = getDefaultCommitmentRequestTransformer; + exports2.getDefaultRequestTransformerForSolanaRpc = getDefaultRequestTransformerForSolanaRpc; + exports2.getDefaultResponseTransformerForSolanaRpc = getDefaultResponseTransformerForSolanaRpc; + exports2.getDefaultResponseTransformerForSolanaRpcSubscriptions = getDefaultResponseTransformerForSolanaRpcSubscriptions; + exports2.getIntegerOverflowRequestTransformer = getIntegerOverflowRequestTransformer; + exports2.getResultResponseTransformer = getResultResponseTransformer; + exports2.getThrowSolanaErrorResponseTransformer = getThrowSolanaErrorResponseTransformer; + exports2.getTreeWalkerRequestTransformer = getTreeWalkerRequestTransformer; + exports2.getTreeWalkerResponseTransformer = getTreeWalkerResponseTransformer; + exports2.innerInstructionsConfigs = innerInstructionsConfigs; + exports2.jsonParsedAccountsConfigs = jsonParsedAccountsConfigs; + exports2.jsonParsedTokenAccountsConfigs = jsonParsedTokenAccountsConfigs; + exports2.messageConfig = messageConfig; + } +}); + +// node_modules/@solana/rpc-api/dist/index.node.cjs +var require_index_node18 = __commonJS({ + "node_modules/@solana/rpc-api/dist/index.node.cjs"(exports2) { + "use strict"; + var rpcSpec = require_index_node16(); + var rpcTransformers = require_index_node17(); + function createSolanaRpcApi(config2) { + return rpcSpec.createJsonRpcApi({ + requestTransformer: rpcTransformers.getDefaultRequestTransformerForSolanaRpc(config2), + responseTransformer: rpcTransformers.getDefaultResponseTransformerForSolanaRpc({ + allowedNumericKeyPaths: getAllowedNumericKeypaths() + }) + }); + } + var memoizedKeypaths; + function getAllowedNumericKeypaths() { + if (!memoizedKeypaths) { + memoizedKeypaths = { + getAccountInfo: rpcTransformers.jsonParsedAccountsConfigs.map((c) => ["value", ...c]), + getBlock: [ + ["transactions", rpcTransformers.KEYPATH_WILDCARD, "meta", "preTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "accountIndex"], + [ + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "preTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "uiTokenAmount", + "decimals" + ], + ["transactions", rpcTransformers.KEYPATH_WILDCARD, "meta", "postTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "accountIndex"], + [ + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "postTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "uiTokenAmount", + "decimals" + ], + ["transactions", rpcTransformers.KEYPATH_WILDCARD, "meta", "rewards", rpcTransformers.KEYPATH_WILDCARD, "commission"], + ...rpcTransformers.innerInstructionsConfigs.map((c) => [ + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "innerInstructions", + rpcTransformers.KEYPATH_WILDCARD, + ...c + ]), + ...rpcTransformers.messageConfig.map((c) => ["transactions", rpcTransformers.KEYPATH_WILDCARD, "transaction", "message", ...c]), + ["rewards", rpcTransformers.KEYPATH_WILDCARD, "commission"] + ], + getClusterNodes: [ + [rpcTransformers.KEYPATH_WILDCARD, "featureSet"], + [rpcTransformers.KEYPATH_WILDCARD, "shredVersion"] + ], + getInflationGovernor: [["initial"], ["foundation"], ["foundationTerm"], ["taper"], ["terminal"]], + getInflationRate: [["foundation"], ["total"], ["validator"]], + getInflationReward: [[rpcTransformers.KEYPATH_WILDCARD, "commission"]], + getMultipleAccounts: rpcTransformers.jsonParsedAccountsConfigs.map((c) => ["value", rpcTransformers.KEYPATH_WILDCARD, ...c]), + getProgramAccounts: rpcTransformers.jsonParsedAccountsConfigs.flatMap((c) => [ + ["value", rpcTransformers.KEYPATH_WILDCARD, "account", ...c], + [rpcTransformers.KEYPATH_WILDCARD, "account", ...c] + ]), + getRecentPerformanceSamples: [[rpcTransformers.KEYPATH_WILDCARD, "samplePeriodSecs"]], + getTokenAccountBalance: [ + ["value", "decimals"], + ["value", "uiAmount"] + ], + getTokenAccountsByDelegate: rpcTransformers.jsonParsedTokenAccountsConfigs.map((c) => [ + "value", + rpcTransformers.KEYPATH_WILDCARD, + "account", + ...c + ]), + getTokenAccountsByOwner: rpcTransformers.jsonParsedTokenAccountsConfigs.map((c) => [ + "value", + rpcTransformers.KEYPATH_WILDCARD, + "account", + ...c + ]), + getTokenLargestAccounts: [ + ["value", rpcTransformers.KEYPATH_WILDCARD, "decimals"], + ["value", rpcTransformers.KEYPATH_WILDCARD, "uiAmount"] + ], + getTokenSupply: [ + ["value", "decimals"], + ["value", "uiAmount"] + ], + getTransaction: [ + ["meta", "preTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "accountIndex"], + ["meta", "preTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "uiTokenAmount", "decimals"], + ["meta", "postTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "accountIndex"], + ["meta", "postTokenBalances", rpcTransformers.KEYPATH_WILDCARD, "uiTokenAmount", "decimals"], + ["meta", "rewards", rpcTransformers.KEYPATH_WILDCARD, "commission"], + ...rpcTransformers.innerInstructionsConfigs.map((c) => ["meta", "innerInstructions", rpcTransformers.KEYPATH_WILDCARD, ...c]), + ...rpcTransformers.messageConfig.map((c) => ["transaction", "message", ...c]) + ], + getVersion: [["feature-set"]], + getVoteAccounts: [ + ["current", rpcTransformers.KEYPATH_WILDCARD, "commission"], + ["delinquent", rpcTransformers.KEYPATH_WILDCARD, "commission"] + ], + simulateTransaction: [ + ...rpcTransformers.jsonParsedAccountsConfigs.map((c) => ["value", "accounts", rpcTransformers.KEYPATH_WILDCARD, ...c]), + ...rpcTransformers.innerInstructionsConfigs.map((c) => ["value", "innerInstructions", rpcTransformers.KEYPATH_WILDCARD, ...c]) + ] + }; + } + return memoizedKeypaths; + } + exports2.createSolanaRpcApi = createSolanaRpcApi; + } +}); + +// node_modules/@solana/rpc-transport-http/dist/index.node.cjs +var require_index_node19 = __commonJS({ + "node_modules/@solana/rpc-transport-http/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var rpcSpecTypes = require_index_node15(); + var rpcSpec = require_index_node16(); + var DISALLOWED_HEADERS = { + accept: true, + "content-length": true, + "content-type": true + }; + var FORBIDDEN_HEADERS = /* @__PURE__ */ Object.assign( + { + "accept-charset": true, + "access-control-request-headers": true, + "access-control-request-method": true, + connection: true, + "content-length": true, + cookie: true, + date: true, + dnt: true, + expect: true, + host: true, + "keep-alive": true, + origin: true, + "permissions-policy": true, + // Prefix matching is implemented in code, below. + // 'proxy-': true, + // 'sec-': true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + via: true + }, + void 0 + ); + function assertIsAllowedHttpRequestHeaders(headers) { + const badHeaders = Object.keys(headers).filter((headerName) => { + const lowercaseHeaderName = headerName.toLowerCase(); + return DISALLOWED_HEADERS[headerName.toLowerCase()] === true || FORBIDDEN_HEADERS[headerName.toLowerCase()] === true || lowercaseHeaderName.startsWith("proxy-") || lowercaseHeaderName.startsWith("sec-"); + }); + if (badHeaders.length > 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, { + headers: badHeaders + }); + } + } + function normalizeHeaders(headers) { + const out = {}; + for (const headerName in headers) { + out[headerName.toLowerCase()] = headers[headerName]; + } + return out; + } + function createHttpTransport(config2) { + if (process.env.NODE_ENV !== "production" && false) ; + const { fromJson, headers, toJson, url } = config2; + if (process.env.NODE_ENV !== "production" && headers) { + assertIsAllowedHttpRequestHeaders(headers); + } + let dispatcherConfig; + if ("dispatcher_NODE_ONLY" in config2) { + dispatcherConfig = { dispatcher: config2.dispatcher_NODE_ONLY }; + } + const customHeaders = headers && normalizeHeaders(headers); + return async function makeHttpRequest({ + payload, + signal + }) { + const body = toJson ? toJson(payload) : JSON.stringify(payload); + const requestInfo = { + ...dispatcherConfig, + body, + headers: { + ...customHeaders, + // Keep these headers lowercase so they will override any user-supplied headers above. + accept: "application/json", + "content-length": body.length.toString(), + "content-type": "application/json; charset=utf-8" + }, + method: "POST", + signal + }; + const response = await fetch(url, requestInfo); + if (!response.ok) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, { + headers: response.headers, + message: response.statusText, + statusCode: response.status + }); + } + if (fromJson) { + return fromJson(await response.text(), payload); + } + return await response.json(); + }; + } + var SOLANA_RPC_METHODS = [ + "getAccountInfo", + "getBalance", + "getBlock", + "getBlockCommitment", + "getBlockHeight", + "getBlockProduction", + "getBlocks", + "getBlocksWithLimit", + "getBlockTime", + "getClusterNodes", + "getEpochInfo", + "getEpochSchedule", + "getFeeForMessage", + "getFirstAvailableBlock", + "getGenesisHash", + "getHealth", + "getHighestSnapshotSlot", + "getIdentity", + "getInflationGovernor", + "getInflationRate", + "getInflationReward", + "getLargestAccounts", + "getLatestBlockhash", + "getLeaderSchedule", + "getMaxRetransmitSlot", + "getMaxShredInsertSlot", + "getMinimumBalanceForRentExemption", + "getMultipleAccounts", + "getProgramAccounts", + "getRecentPerformanceSamples", + "getRecentPrioritizationFees", + "getSignaturesForAddress", + "getSignatureStatuses", + "getSlot", + "getSlotLeader", + "getSlotLeaders", + "getStakeMinimumDelegation", + "getSupply", + "getTokenAccountBalance", + "getTokenAccountsByDelegate", + "getTokenAccountsByOwner", + "getTokenLargestAccounts", + "getTokenSupply", + "getTransaction", + "getTransactionCount", + "getVersion", + "getVoteAccounts", + "index", + "isBlockhashValid", + "minimumLedgerSlot", + "requestAirdrop", + "sendTransaction", + "simulateTransaction" + ]; + function isSolanaRequest(payload) { + return rpcSpec.isJsonRpcPayload(payload) && SOLANA_RPC_METHODS.includes(payload.method); + } + function createHttpTransportForSolanaRpc(config2) { + return createHttpTransport({ + ...config2, + fromJson: (rawResponse, payload) => isSolanaRequest(payload) ? rpcSpecTypes.parseJsonWithBigInts(rawResponse) : JSON.parse(rawResponse), + toJson: (payload) => isSolanaRequest(payload) ? rpcSpecTypes.stringifyJsonWithBigints(payload) : JSON.stringify(payload) + }); + } + exports2.createHttpTransport = createHttpTransport; + exports2.createHttpTransportForSolanaRpc = createHttpTransportForSolanaRpc; + } +}); + +// node_modules/@solana/fast-stable-stringify/dist/index.node.cjs +var require_index_node20 = __commonJS({ + "node_modules/@solana/fast-stable-stringify/dist/index.node.cjs"(exports2, module2) { + "use strict"; + var objToString = Object.prototype.toString; + var objKeys = Object.keys || function(obj) { + const keys = []; + for (const name in obj) { + keys.push(name); + } + return keys; + }; + function stringify(val, isArrayProp) { + let i, max, str, keys, key, propVal, toStr; + if (val === true) { + return "true"; + } + if (val === false) { + return "false"; + } + switch (typeof val) { + case "object": + if (val === null) { + return null; + } else if ("toJSON" in val && typeof val.toJSON === "function") { + return stringify(val.toJSON(), isArrayProp); + } else { + toStr = objToString.call(val); + if (toStr === "[object Array]") { + str = "["; + max = val.length - 1; + for (i = 0; i < max; i++) { + str += stringify(val[i], true) + ","; + } + if (max > -1) { + str += stringify(val[i], true); + } + return str + "]"; + } else if (toStr === "[object Object]") { + keys = objKeys(val).sort(); + max = keys.length; + str = ""; + i = 0; + while (i < max) { + key = keys[i]; + propVal = stringify(val[key], false); + if (propVal !== void 0) { + if (str) { + str += ","; + } + str += JSON.stringify(key) + ":" + propVal; + } + i++; + } + return "{" + str + "}"; + } else { + return JSON.stringify(val); + } + } + case "function": + case "undefined": + return isArrayProp ? null : void 0; + case "bigint": + return `${val.toString()}n`; + case "string": + return JSON.stringify(val); + default: + return isFinite(val) ? val : null; + } + } + function index_default(val) { + const returnVal = stringify(val, false); + if (returnVal !== void 0) { + return "" + returnVal; + } + } + module2.exports = index_default; + } +}); + +// node_modules/@solana/rpc/dist/index.node.cjs +var require_index_node21 = __commonJS({ + "node_modules/@solana/rpc/dist/index.node.cjs"(exports2) { + "use strict"; + var rpcApi = require_index_node18(); + var rpcSpec = require_index_node16(); + var errors = require_index_node(); + var functional = require_index_node11(); + var rpcTransportHttp = require_index_node19(); + var events = __require("events"); + var fastStableStringify = require_index_node20(); + function _interopDefault(e2) { + return e2 && e2.__esModule ? e2 : { default: e2 }; + } + var fastStableStringify__default = /* @__PURE__ */ _interopDefault(fastStableStringify); + function createSolanaJsonRpcIntegerOverflowError(methodName, keyPath, value) { + let argumentLabel = ""; + if (typeof keyPath[0] === "number") { + const argPosition = keyPath[0] + 1; + const lastDigit = argPosition % 10; + const lastTwoDigits = argPosition % 100; + if (lastDigit == 1 && lastTwoDigits != 11) { + argumentLabel = argPosition + "st"; + } else if (lastDigit == 2 && lastTwoDigits != 12) { + argumentLabel = argPosition + "nd"; + } else if (lastDigit == 3 && lastTwoDigits != 13) { + argumentLabel = argPosition + "rd"; + } else { + argumentLabel = argPosition + "th"; + } + } else { + argumentLabel = `\`${keyPath[0].toString()}\``; + } + const path2 = keyPath.length > 1 ? keyPath.slice(1).map((pathPart) => typeof pathPart === "number" ? `[${pathPart}]` : pathPart).join(".") : void 0; + const error = new errors.SolanaError(errors.SOLANA_ERROR__RPC__INTEGER_OVERFLOW, { + argumentLabel, + keyPath, + methodName, + optionalPathLabel: path2 ? ` at path \`${path2}\`` : "", + value, + ...path2 !== void 0 ? { path: path2 } : void 0 + }); + errors.safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError); + return error; + } + var DEFAULT_RPC_CONFIG = { + defaultCommitment: "confirmed", + onIntegerOverflow(request, keyPath, value) { + throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value); + } + }; + var e = class extends globalThis.AbortController { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal); + } + }; + var EXPLICIT_ABORT_TOKEN; + function createExplicitAbortToken() { + return process.env.NODE_ENV !== "production" ? { + EXPLICIT_ABORT_TOKEN: "This object is thrown from the request that underlies a series of coalesced requests when the last request in that series aborts" + } : {}; + } + function getRpcTransportWithRequestCoalescing(transport, getDeduplicationKey) { + let coalescedRequestsByDeduplicationKey; + return async function makeCoalescedHttpRequest(request) { + const { payload, signal } = request; + const deduplicationKey = getDeduplicationKey(payload); + if (deduplicationKey === void 0) { + return await transport(request); + } + if (!coalescedRequestsByDeduplicationKey) { + queueMicrotask(() => { + coalescedRequestsByDeduplicationKey = void 0; + }); + coalescedRequestsByDeduplicationKey = {}; + } + if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) { + const abortController = new e(); + const responsePromise = (async () => { + try { + return await transport({ + ...request, + signal: abortController.signal + }); + } catch (e2) { + if (e2 === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) { + return; + } + throw e2; + } + })(); + coalescedRequestsByDeduplicationKey[deduplicationKey] = { + abortController, + numConsumers: 0, + responsePromise + }; + } + const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey]; + coalescedRequest.numConsumers++; + if (signal) { + const responsePromise = coalescedRequest.responsePromise; + return await new Promise((resolve, reject) => { + const handleAbort = (e2) => { + signal.removeEventListener("abort", handleAbort); + coalescedRequest.numConsumers -= 1; + queueMicrotask(() => { + if (coalescedRequest.numConsumers === 0) { + const abortController = coalescedRequest.abortController; + abortController.abort(EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()); + } + }); + reject(e2.target.reason); + }; + signal.addEventListener("abort", handleAbort); + responsePromise.then(resolve).catch(reject).finally(() => { + signal.removeEventListener("abort", handleAbort); + }); + }); + } else { + return await coalescedRequest.responsePromise; + } + }; + } + function getSolanaRpcPayloadDeduplicationKey(payload) { + return rpcSpec.isJsonRpcPayload(payload) ? fastStableStringify__default.default([payload.method, payload.params]) : void 0; + } + function normalizeHeaders(headers) { + const out = {}; + for (const headerName in headers) { + out[headerName.toLowerCase()] = headers[headerName]; + } + return out; + } + function createDefaultRpcTransport(config2) { + return functional.pipe( + rpcTransportHttp.createHttpTransportForSolanaRpc({ + ...config2, + headers: { + ...{ + // Keep these headers lowercase so they will be overridden by any user-supplied headers below. + "accept-encoding": ( + // Natively supported by Node LTS v20.18.0 and above. + "br,gzip,deflate" + ) + // Brotli, gzip, and Deflate, in that order. + }, + ...config2.headers ? normalizeHeaders(config2.headers) : void 0, + ...{ + // Keep these headers lowercase so they will override any user-supplied headers above. + "solana-client": `js/${"2.3.0"}` + } + } + }), + (transport) => getRpcTransportWithRequestCoalescing(transport, getSolanaRpcPayloadDeduplicationKey) + ); + } + function createSolanaRpc(clusterUrl, config2) { + return createSolanaRpcFromTransport(createDefaultRpcTransport({ url: clusterUrl, ...config2 })); + } + function createSolanaRpcFromTransport(transport) { + return rpcSpec.createRpc({ + api: rpcApi.createSolanaRpcApi(DEFAULT_RPC_CONFIG), + transport + }); + } + exports2.DEFAULT_RPC_CONFIG = DEFAULT_RPC_CONFIG; + exports2.createDefaultRpcTransport = createDefaultRpcTransport; + exports2.createSolanaRpc = createSolanaRpc; + exports2.createSolanaRpcFromTransport = createSolanaRpcFromTransport; + Object.keys(rpcApi).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcApi[k]; + } + }); + }); + Object.keys(rpcSpec).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcSpec[k]; + } + }); + }); + } +}); + +// node_modules/@solana/rpc-parsed-types/dist/index.node.cjs +var require_index_node22 = __commonJS({ + "node_modules/@solana/rpc-parsed-types/dist/index.node.cjs"() { + "use strict"; + } +}); + +// node_modules/@solana/subscribable/dist/index.node.cjs +var require_index_node23 = __commonJS({ + "node_modules/@solana/subscribable/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var events = __require("events"); + var e = class extends globalThis.AbortController { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal); + } + }; + var s = class extends globalThis.EventTarget { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this); + } + }; + var EXPLICIT_ABORT_TOKEN; + function createExplicitAbortToken() { + return Symbol( + process.env.NODE_ENV !== "production" ? "This symbol is thrown from a socket's iterator when the connection is explicitly aborted by the user" : void 0 + ); + } + var UNINITIALIZED = Symbol(); + function createAsyncIterableFromDataPublisher({ + abortSignal, + dataChannelName, + dataPublisher, + errorChannelName + }) { + const iteratorState = /* @__PURE__ */ new Map(); + function publishErrorToAllIterators(reason) { + for (const [iteratorKey, state] of iteratorState.entries()) { + if (state.__hasPolled) { + iteratorState.delete(iteratorKey); + state.onError(reason); + } else { + state.publishQueue.push({ + __type: 1, + err: reason + }); + } + } + } + const abortController = new e(); + abortSignal.addEventListener("abort", () => { + abortController.abort(); + publishErrorToAllIterators(EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()); + }); + const options = { signal: abortController.signal }; + let firstError = UNINITIALIZED; + dataPublisher.on( + errorChannelName, + (err2) => { + if (firstError === UNINITIALIZED) { + firstError = err2; + abortController.abort(); + publishErrorToAllIterators(err2); + } + }, + options + ); + dataPublisher.on( + dataChannelName, + (data) => { + iteratorState.forEach((state, iteratorKey) => { + if (state.__hasPolled) { + const { onData } = state; + iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] }); + onData(data); + } else { + state.publishQueue.push({ + __type: 0, + data + }); + } + }); + }, + options + ); + return { + async *[Symbol.asyncIterator]() { + if (abortSignal.aborted) { + return; + } + if (firstError !== UNINITIALIZED) { + throw firstError; + } + const iteratorKey = Symbol(); + iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] }); + try { + while (true) { + const state = iteratorState.get(iteratorKey); + if (!state) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING); + } + if (state.__hasPolled) { + throw new errors.SolanaError( + errors.SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE + ); + } + const publishQueue = state.publishQueue; + try { + if (publishQueue.length) { + state.publishQueue = []; + for (const item of publishQueue) { + if (item.__type === 0) { + yield item.data; + } else { + throw item.err; + } + } + } else { + yield await new Promise((resolve, reject) => { + iteratorState.set(iteratorKey, { + __hasPolled: true, + onData: resolve, + onError: reject + }); + }); + } + } catch (e2) { + if (e2 === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) { + return; + } else { + throw e2; + } + } + } + } finally { + iteratorState.delete(iteratorKey); + } + } + }; + } + function getDataPublisherFromEventEmitter(eventEmitter) { + return { + on(channelName, subscriber, options) { + function innerListener(ev) { + if (ev instanceof CustomEvent) { + const data = ev.detail; + subscriber(data); + } else { + subscriber(); + } + } + eventEmitter.addEventListener(channelName, innerListener, options); + return () => { + eventEmitter.removeEventListener(channelName, innerListener); + }; + } + }; + } + function demultiplexDataPublisher(publisher, sourceChannelName, messageTransformer) { + let innerPublisherState; + const eventTarget = new s(); + const demultiplexedDataPublisher = getDataPublisherFromEventEmitter(eventTarget); + return { + ...demultiplexedDataPublisher, + on(channelName, subscriber, options) { + if (!innerPublisherState) { + const innerPublisherUnsubscribe = publisher.on(sourceChannelName, (sourceMessage) => { + const transformResult = messageTransformer(sourceMessage); + if (!transformResult) { + return; + } + const [destinationChannelName, message] = transformResult; + eventTarget.dispatchEvent( + new CustomEvent(destinationChannelName, { + detail: message + }) + ); + }); + innerPublisherState = { + dispose: innerPublisherUnsubscribe, + numSubscribers: 0 + }; + } + innerPublisherState.numSubscribers++; + const unsubscribe = demultiplexedDataPublisher.on(channelName, subscriber, options); + let isActive = true; + function handleUnsubscribe() { + if (!isActive) { + return; + } + isActive = false; + options?.signal.removeEventListener("abort", handleUnsubscribe); + innerPublisherState.numSubscribers--; + if (innerPublisherState.numSubscribers === 0) { + innerPublisherState.dispose(); + innerPublisherState = void 0; + } + unsubscribe(); + } + options?.signal.addEventListener("abort", handleUnsubscribe); + return handleUnsubscribe; + } + }; + } + exports2.createAsyncIterableFromDataPublisher = createAsyncIterableFromDataPublisher; + exports2.demultiplexDataPublisher = demultiplexDataPublisher; + exports2.getDataPublisherFromEventEmitter = getDataPublisherFromEventEmitter; + } +}); + +// node_modules/@solana/promises/dist/index.node.cjs +var require_index_node24 = __commonJS({ + "node_modules/@solana/promises/dist/index.node.cjs"(exports2) { + "use strict"; + function isObject(value) { + return value !== null && (typeof value === "object" || typeof value === "function"); + } + function addRaceContender(contender) { + const deferreds = /* @__PURE__ */ new Set(); + const record = { deferreds, settled: false }; + Promise.resolve(contender).then( + (value) => { + for (const { resolve } of deferreds) { + resolve(value); + } + deferreds.clear(); + record.settled = true; + }, + (err2) => { + for (const { reject } of deferreds) { + reject(err2); + } + deferreds.clear(); + record.settled = true; + } + ); + return record; + } + var wm = /* @__PURE__ */ new WeakMap(); + async function safeRace(contenders) { + let deferred; + const result = new Promise((resolve, reject) => { + deferred = { reject, resolve }; + for (const contender of contenders) { + if (!isObject(contender)) { + Promise.resolve(contender).then(resolve, reject); + continue; + } + let record = wm.get(contender); + if (record === void 0) { + record = addRaceContender(contender); + record.deferreds.add(deferred); + wm.set(contender, record); + } else if (record.settled) { + Promise.resolve(contender).then(resolve, reject); + } else { + record.deferreds.add(deferred); + } + } + }); + return await result.finally(() => { + for (const contender of contenders) { + if (isObject(contender)) { + const record = wm.get(contender); + record.deferreds.delete(deferred); + } + } + }); + } + function getAbortablePromise(promise, abortSignal) { + if (!abortSignal) { + return promise; + } else { + return safeRace([ + // This promise only ever rejects if the signal is aborted. Otherwise it idles forever. + // It's important that this come before the input promise; in the event of an abort, we + // want to throw even if the input promise's result is ready + new Promise((_, reject) => { + if (abortSignal.aborted) { + reject(abortSignal.reason); + } else { + abortSignal.addEventListener("abort", function() { + reject(this.reason); + }); + } + }), + promise + ]); + } + } + exports2.getAbortablePromise = getAbortablePromise; + exports2.safeRace = safeRace; + } +}); + +// node_modules/@solana/rpc-subscriptions-spec/dist/index.node.cjs +var require_index_node25 = __commonJS({ + "node_modules/@solana/rpc-subscriptions-spec/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var subscribable = require_index_node23(); + var events = __require("events"); + var promises = require_index_node24(); + var rpcSpecTypes = require_index_node15(); + function createSubscriptionRpc(rpcConfig) { + return new Proxy(rpcConfig.api, { + defineProperty() { + return false; + }, + deleteProperty() { + return false; + }, + get(target, p, receiver) { + if (p === "then") { + return void 0; + } + return function(...rawParams) { + const notificationName = p.toString(); + const createRpcSubscriptionPlan = Reflect.get(target, notificationName, receiver); + if (!createRpcSubscriptionPlan) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, { + notificationName + }); + } + const subscriptionPlan = createRpcSubscriptionPlan(...rawParams); + return createPendingRpcSubscription(rpcConfig.transport, subscriptionPlan); + }; + } + }); + } + function createPendingRpcSubscription(transport, subscriptionsPlan) { + return { + async subscribe({ abortSignal }) { + const notificationsDataPublisher = await transport({ + signal: abortSignal, + ...subscriptionsPlan + }); + return subscribable.createAsyncIterableFromDataPublisher({ + abortSignal, + dataChannelName: "notification", + dataPublisher: notificationsDataPublisher, + errorChannelName: "error" + }); + } + }; + } + function createRpcSubscriptionsApi(config2) { + return new Proxy({}, { + defineProperty() { + return false; + }, + deleteProperty() { + return false; + }, + get(...args) { + const [_, p] = args; + const methodName = p.toString(); + return function(...params) { + const rawRequest = { methodName, params }; + const request = config2.requestTransformer ? config2.requestTransformer(rawRequest) : rawRequest; + return { + execute(planConfig) { + return config2.planExecutor({ ...planConfig, request }); + }, + request + }; + }; + } + }); + } + function transformChannelInboundMessages(channel, transform) { + return Object.freeze({ + ...channel, + on(type, subscriber, options) { + if (type !== "message") { + return channel.on( + type, + subscriber, + options + ); + } + return channel.on( + "message", + (message) => subscriber(transform(message)), + options + ); + } + }); + } + function transformChannelOutboundMessages(channel, transform) { + return Object.freeze({ + ...channel, + send: (message) => channel.send(transform(message)) + }); + } + var e = class extends globalThis.AbortController { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal); + } + }; + var subscriberCountBySubscriptionIdByChannel = /* @__PURE__ */ new WeakMap(); + function decrementSubscriberCountAndReturnNewCount(channel, subscriptionId) { + return augmentSubscriberCountAndReturnNewCount(-1, channel, subscriptionId); + } + function incrementSubscriberCount(channel, subscriptionId) { + augmentSubscriberCountAndReturnNewCount(1, channel, subscriptionId); + } + function getSubscriberCountBySubscriptionIdForChannel(channel) { + let subscriberCountBySubscriptionId = subscriberCountBySubscriptionIdByChannel.get(channel); + if (!subscriberCountBySubscriptionId) { + subscriberCountBySubscriptionIdByChannel.set(channel, subscriberCountBySubscriptionId = {}); + } + return subscriberCountBySubscriptionId; + } + function augmentSubscriberCountAndReturnNewCount(amount, channel, subscriptionId) { + if (subscriptionId === void 0) { + return; + } + const subscriberCountBySubscriptionId = getSubscriberCountBySubscriptionIdForChannel(channel); + if (!subscriberCountBySubscriptionId[subscriptionId] && amount > 0) { + subscriberCountBySubscriptionId[subscriptionId] = 0; + } + const newCount = amount + subscriberCountBySubscriptionId[subscriptionId]; + if (newCount <= 0) { + delete subscriberCountBySubscriptionId[subscriptionId]; + } else { + subscriberCountBySubscriptionId[subscriptionId] = newCount; + } + return newCount; + } + var cache = /* @__PURE__ */ new WeakMap(); + function getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer(channel, subscribeRequest, responseTransformer) { + let publisherByResponseTransformer = cache.get(channel); + if (!publisherByResponseTransformer) { + cache.set(channel, publisherByResponseTransformer = /* @__PURE__ */ new WeakMap()); + } + const responseTransformerKey = responseTransformer ?? channel; + let publisher = publisherByResponseTransformer.get(responseTransformerKey); + if (!publisher) { + publisherByResponseTransformer.set( + responseTransformerKey, + publisher = subscribable.demultiplexDataPublisher(channel, "message", (rawMessage) => { + const message = rawMessage; + if (!("method" in message)) { + return; + } + const transformedNotification = responseTransformer ? responseTransformer(message.params.result, subscribeRequest) : message.params.result; + return [`notification:${message.params.subscription}`, transformedNotification]; + }) + ); + } + return publisher; + } + async function executeRpcPubSubSubscriptionPlan({ + channel, + responseTransformer, + signal, + subscribeRequest, + unsubscribeMethodName + }) { + let subscriptionId; + channel.on( + "error", + () => { + subscriptionId = void 0; + subscriberCountBySubscriptionIdByChannel.delete(channel); + }, + { signal } + ); + const abortPromise = new Promise((_, reject) => { + function handleAbort() { + if (decrementSubscriberCountAndReturnNewCount(channel, subscriptionId) === 0) { + const unsubscribePayload = rpcSpecTypes.createRpcMessage({ + methodName: unsubscribeMethodName, + params: [subscriptionId] + }); + subscriptionId = void 0; + channel.send(unsubscribePayload).catch(() => { + }); + } + reject(this.reason); + } + if (signal.aborted) { + handleAbort.call(signal); + } else { + signal.addEventListener("abort", handleAbort); + } + }); + const subscribePayload = rpcSpecTypes.createRpcMessage(subscribeRequest); + await channel.send(subscribePayload); + const subscriptionIdPromise = new Promise((resolve, reject) => { + const abortController = new e(); + signal.addEventListener("abort", abortController.abort.bind(abortController)); + const options = { signal: abortController.signal }; + channel.on( + "error", + (err2) => { + abortController.abort(); + reject(err2); + }, + options + ); + channel.on( + "message", + (message) => { + if (message && typeof message === "object" && "id" in message && message.id === subscribePayload.id) { + abortController.abort(); + if ("error" in message) { + reject(errors.getSolanaErrorFromJsonRpcError(message.error)); + } else { + resolve(message.result); + } + } + }, + options + ); + }); + subscriptionId = await promises.safeRace([abortPromise, subscriptionIdPromise]); + if (subscriptionId == null) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID); + } + incrementSubscriberCount(channel, subscriptionId); + const notificationPublisher = getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer( + channel, + subscribeRequest, + responseTransformer + ); + const notificationKey = `notification:${subscriptionId}`; + return { + on(type, listener, options) { + switch (type) { + case "notification": + return notificationPublisher.on( + notificationKey, + listener, + options + ); + case "error": + return channel.on( + "error", + listener, + options + ); + default: + throw new errors.SolanaError(errors.SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, { + channelName: type, + supportedChannelNames: ["notification", "error"] + }); + } + } + }; + } + exports2.createRpcSubscriptionsApi = createRpcSubscriptionsApi; + exports2.createSubscriptionRpc = createSubscriptionRpc; + exports2.executeRpcPubSubSubscriptionPlan = executeRpcPubSubSubscriptionPlan; + exports2.transformChannelInboundMessages = transformChannelInboundMessages; + exports2.transformChannelOutboundMessages = transformChannelOutboundMessages; + } +}); + +// node_modules/@solana/rpc-subscriptions-api/dist/index.node.cjs +var require_index_node26 = __commonJS({ + "node_modules/@solana/rpc-subscriptions-api/dist/index.node.cjs"(exports2) { + "use strict"; + var rpcSubscriptionsSpec = require_index_node25(); + var rpcTransformers = require_index_node17(); + function createSolanaRpcSubscriptionsApi_INTERNAL(config2) { + const requestTransformer = rpcTransformers.getDefaultRequestTransformerForSolanaRpc(config2); + const responseTransformer = rpcTransformers.getDefaultResponseTransformerForSolanaRpcSubscriptions({ + allowedNumericKeyPaths: getAllowedNumericKeypaths() + }); + return rpcSubscriptionsSpec.createRpcSubscriptionsApi({ + planExecutor({ request, ...rest }) { + return rpcSubscriptionsSpec.executeRpcPubSubSubscriptionPlan({ + ...rest, + responseTransformer, + subscribeRequest: { ...request, methodName: request.methodName.replace(/Notifications$/, "Subscribe") }, + unsubscribeMethodName: request.methodName.replace(/Notifications$/, "Unsubscribe") + }); + }, + requestTransformer + }); + } + function createSolanaRpcSubscriptionsApi(config2) { + return createSolanaRpcSubscriptionsApi_INTERNAL(config2); + } + function createSolanaRpcSubscriptionsApi_UNSTABLE(config2) { + return createSolanaRpcSubscriptionsApi_INTERNAL( + config2 + ); + } + var memoizedKeypaths; + function getAllowedNumericKeypaths() { + if (!memoizedKeypaths) { + memoizedKeypaths = { + accountNotifications: rpcTransformers.jsonParsedAccountsConfigs.map((c) => ["value", ...c]), + blockNotifications: [ + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "preTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "accountIndex" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "preTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "uiTokenAmount", + "decimals" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "postTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "accountIndex" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "postTokenBalances", + rpcTransformers.KEYPATH_WILDCARD, + "uiTokenAmount", + "decimals" + ], + ["value", "block", "transactions", rpcTransformers.KEYPATH_WILDCARD, "meta", "rewards", rpcTransformers.KEYPATH_WILDCARD, "commission"], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "innerInstructions", + rpcTransformers.KEYPATH_WILDCARD, + "index" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "innerInstructions", + rpcTransformers.KEYPATH_WILDCARD, + "instructions", + rpcTransformers.KEYPATH_WILDCARD, + "programIdIndex" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "meta", + "innerInstructions", + rpcTransformers.KEYPATH_WILDCARD, + "instructions", + rpcTransformers.KEYPATH_WILDCARD, + "accounts", + rpcTransformers.KEYPATH_WILDCARD + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "addressTableLookups", + rpcTransformers.KEYPATH_WILDCARD, + "writableIndexes", + rpcTransformers.KEYPATH_WILDCARD + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "addressTableLookups", + rpcTransformers.KEYPATH_WILDCARD, + "readonlyIndexes", + rpcTransformers.KEYPATH_WILDCARD + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "instructions", + rpcTransformers.KEYPATH_WILDCARD, + "programIdIndex" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "instructions", + rpcTransformers.KEYPATH_WILDCARD, + "accounts", + rpcTransformers.KEYPATH_WILDCARD + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "header", + "numReadonlySignedAccounts" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "header", + "numReadonlyUnsignedAccounts" + ], + [ + "value", + "block", + "transactions", + rpcTransformers.KEYPATH_WILDCARD, + "transaction", + "message", + "header", + "numRequiredSignatures" + ], + ["value", "block", "rewards", rpcTransformers.KEYPATH_WILDCARD, "commission"] + ], + programNotifications: rpcTransformers.jsonParsedAccountsConfigs.flatMap((c) => [ + ["value", rpcTransformers.KEYPATH_WILDCARD, "account", ...c], + [rpcTransformers.KEYPATH_WILDCARD, "account", ...c] + ]) + }; + } + return memoizedKeypaths; + } + exports2.createSolanaRpcSubscriptionsApi = createSolanaRpcSubscriptionsApi; + exports2.createSolanaRpcSubscriptionsApi_UNSTABLE = createSolanaRpcSubscriptionsApi_UNSTABLE; + } +}); + +// node_modules/ws/lib/constants.js +var require_constants15 = __commonJS({ + "node_modules/ws/lib/constants.js"(exports2, module2) { + "use strict"; + var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"]; + var hasBlob = typeof Blob !== "undefined"; + if (hasBlob) BINARY_TYPES.push("blob"); + module2.exports = { + BINARY_TYPES, + EMPTY_BUFFER: Buffer.alloc(0), + GUID: "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", + hasBlob, + kForOnEventAttribute: Symbol("kIsForOnEventAttribute"), + kListener: Symbol("kListener"), + kStatusCode: Symbol("status-code"), + kWebSocket: Symbol("websocket"), + NOOP: () => { + } + }; + } +}); + +// node_modules/ws/lib/buffer-util.js +var require_buffer_util3 = __commonJS({ + "node_modules/ws/lib/buffer-util.js"(exports2, module2) { + "use strict"; + var { EMPTY_BUFFER } = require_constants15(); + var FastBuffer = Buffer[Symbol.species]; + function concat2(list, totalLength) { + if (list.length === 0) return EMPTY_BUFFER; + if (list.length === 1) return list[0]; + const target = Buffer.allocUnsafe(totalLength); + let offset = 0; + for (let i = 0; i < list.length; i++) { + const buf = list[i]; + target.set(buf, offset); + offset += buf.length; + } + if (offset < totalLength) { + return new FastBuffer(target.buffer, target.byteOffset, offset); + } + return target; + } + function _mask(source, mask, output, offset, length) { + for (let i = 0; i < length; i++) { + output[offset + i] = source[i] ^ mask[i & 3]; + } + } + function _unmask(buffer, mask) { + for (let i = 0; i < buffer.length; i++) { + buffer[i] ^= mask[i & 3]; + } + } + function toArrayBuffer(buf) { + if (buf.length === buf.buffer.byteLength) { + return buf.buffer; + } + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length); + } + function toBuffer(data) { + toBuffer.readOnly = true; + if (Buffer.isBuffer(data)) return data; + let buf; + if (data instanceof ArrayBuffer) { + buf = new FastBuffer(data); + } else if (ArrayBuffer.isView(data)) { + buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength); + } else { + buf = Buffer.from(data); + toBuffer.readOnly = false; + } + return buf; + } + module2.exports = { + concat: concat2, + mask: _mask, + toArrayBuffer, + toBuffer, + unmask: _unmask + }; + if (!process.env.WS_NO_BUFFER_UTIL) { + try { + const bufferUtil = require_bufferutil(); + module2.exports.mask = function(source, mask, output, offset, length) { + if (length < 48) _mask(source, mask, output, offset, length); + else bufferUtil.mask(source, mask, output, offset, length); + }; + module2.exports.unmask = function(buffer, mask) { + if (buffer.length < 32) _unmask(buffer, mask); + else bufferUtil.unmask(buffer, mask); + }; + } catch (e) { + } + } + } +}); + +// node_modules/ws/lib/limiter.js +var require_limiter3 = __commonJS({ + "node_modules/ws/lib/limiter.js"(exports2, module2) { + "use strict"; + var kDone = Symbol("kDone"); + var kRun = Symbol("kRun"); + var Limiter = class { + /** + * Creates a new `Limiter`. + * + * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed + * to run concurrently + */ + constructor(concurrency) { + this[kDone] = () => { + this.pending--; + this[kRun](); + }; + this.concurrency = concurrency || Infinity; + this.jobs = []; + this.pending = 0; + } + /** + * Adds a job to the queue. + * + * @param {Function} job The job to run + * @public + */ + add(job) { + this.jobs.push(job); + this[kRun](); + } + /** + * Removes a job from the queue and runs it if possible. + * + * @private + */ + [kRun]() { + if (this.pending === this.concurrency) return; + if (this.jobs.length) { + const job = this.jobs.shift(); + this.pending++; + job(this[kDone]); + } + } + }; + module2.exports = Limiter; + } +}); + +// node_modules/ws/lib/permessage-deflate.js +var require_permessage_deflate3 = __commonJS({ + "node_modules/ws/lib/permessage-deflate.js"(exports2, module2) { + "use strict"; + var zlib = __require("zlib"); + var bufferUtil = require_buffer_util3(); + var Limiter = require_limiter3(); + var { kStatusCode } = require_constants15(); + var FastBuffer = Buffer[Symbol.species]; + var TRAILER = Buffer.from([0, 0, 255, 255]); + var kPerMessageDeflate = Symbol("permessage-deflate"); + var kTotalLength = Symbol("total-length"); + var kCallback = Symbol("callback"); + var kBuffers = Symbol("buffers"); + var kError = Symbol("error"); + var zlibLimiter; + var PerMessageDeflate = class { + /** + * Creates a PerMessageDeflate instance. + * + * @param {Object} [options] Configuration options + * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support + * for, or request, a custom client window size + * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/ + * acknowledge disabling of client context takeover + * @param {Number} [options.concurrencyLimit=10] The number of concurrent + * calls to zlib + * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the + * use of a custom server window size + * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept + * disabling of server context takeover + * @param {Number} [options.threshold=1024] Size (in bytes) below which + * messages should not be compressed if context takeover is disabled + * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on + * deflate + * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on + * inflate + * @param {Boolean} [isServer=false] Create the instance in either server or + * client mode + * @param {Number} [maxPayload=0] The maximum allowed message length + */ + constructor(options, isServer, maxPayload) { + this._maxPayload = maxPayload | 0; + this._options = options || {}; + this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024; + this._isServer = !!isServer; + this._deflate = null; + this._inflate = null; + this.params = null; + if (!zlibLimiter) { + const concurrency = this._options.concurrencyLimit !== void 0 ? this._options.concurrencyLimit : 10; + zlibLimiter = new Limiter(concurrency); + } + } + /** + * @type {String} + */ + static get extensionName() { + return "permessage-deflate"; + } + /** + * Create an extension negotiation offer. + * + * @return {Object} Extension parameters + * @public + */ + offer() { + const params = {}; + if (this._options.serverNoContextTakeover) { + params.server_no_context_takeover = true; + } + if (this._options.clientNoContextTakeover) { + params.client_no_context_takeover = true; + } + if (this._options.serverMaxWindowBits) { + params.server_max_window_bits = this._options.serverMaxWindowBits; + } + if (this._options.clientMaxWindowBits) { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } else if (this._options.clientMaxWindowBits == null) { + params.client_max_window_bits = true; + } + return params; + } + /** + * Accept an extension negotiation offer/response. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Object} Accepted configuration + * @public + */ + accept(configurations) { + configurations = this.normalizeParams(configurations); + this.params = this._isServer ? this.acceptAsServer(configurations) : this.acceptAsClient(configurations); + return this.params; + } + /** + * Releases all resources used by the extension. + * + * @public + */ + cleanup() { + if (this._inflate) { + this._inflate.close(); + this._inflate = null; + } + if (this._deflate) { + const callback = this._deflate[kCallback]; + this._deflate.close(); + this._deflate = null; + if (callback) { + callback( + new Error( + "The deflate stream was closed while data was being processed" + ) + ); + } + } + } + /** + * Accept an extension negotiation offer. + * + * @param {Array} offers The extension negotiation offers + * @return {Object} Accepted configuration + * @private + */ + acceptAsServer(offers) { + const opts = this._options; + const accepted = offers.find((params) => { + if (opts.serverNoContextTakeover === false && params.server_no_context_takeover || params.server_max_window_bits && (opts.serverMaxWindowBits === false || typeof opts.serverMaxWindowBits === "number" && opts.serverMaxWindowBits > params.server_max_window_bits) || typeof opts.clientMaxWindowBits === "number" && !params.client_max_window_bits) { + return false; + } + return true; + }); + if (!accepted) { + throw new Error("None of the extension offers can be accepted"); + } + if (opts.serverNoContextTakeover) { + accepted.server_no_context_takeover = true; + } + if (opts.clientNoContextTakeover) { + accepted.client_no_context_takeover = true; + } + if (typeof opts.serverMaxWindowBits === "number") { + accepted.server_max_window_bits = opts.serverMaxWindowBits; + } + if (typeof opts.clientMaxWindowBits === "number") { + accepted.client_max_window_bits = opts.clientMaxWindowBits; + } else if (accepted.client_max_window_bits === true || opts.clientMaxWindowBits === false) { + delete accepted.client_max_window_bits; + } + return accepted; + } + /** + * Accept the extension negotiation response. + * + * @param {Array} response The extension negotiation response + * @return {Object} Accepted configuration + * @private + */ + acceptAsClient(response) { + const params = response[0]; + if (this._options.clientNoContextTakeover === false && params.client_no_context_takeover) { + throw new Error('Unexpected parameter "client_no_context_takeover"'); + } + if (!params.client_max_window_bits) { + if (typeof this._options.clientMaxWindowBits === "number") { + params.client_max_window_bits = this._options.clientMaxWindowBits; + } + } else if (this._options.clientMaxWindowBits === false || typeof this._options.clientMaxWindowBits === "number" && params.client_max_window_bits > this._options.clientMaxWindowBits) { + throw new Error( + 'Unexpected or invalid parameter "client_max_window_bits"' + ); + } + return params; + } + /** + * Normalize parameters. + * + * @param {Array} configurations The extension negotiation offers/reponse + * @return {Array} The offers/response with normalized parameters + * @private + */ + normalizeParams(configurations) { + configurations.forEach((params) => { + Object.keys(params).forEach((key) => { + let value = params[key]; + if (value.length > 1) { + throw new Error(`Parameter "${key}" must have only a single value`); + } + value = value[0]; + if (key === "client_max_window_bits") { + if (value !== true) { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (!this._isServer) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else if (key === "server_max_window_bits") { + const num = +value; + if (!Number.isInteger(num) || num < 8 || num > 15) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + value = num; + } else if (key === "client_no_context_takeover" || key === "server_no_context_takeover") { + if (value !== true) { + throw new TypeError( + `Invalid value for parameter "${key}": ${value}` + ); + } + } else { + throw new Error(`Unknown parameter "${key}"`); + } + params[key] = value; + }); + }); + return configurations; + } + /** + * Decompress data. Concurrency limited. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + decompress(data, fin, callback) { + zlibLimiter.add((done) => { + this._decompress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Compress data. Concurrency limited. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @public + */ + compress(data, fin, callback) { + zlibLimiter.add((done) => { + this._compress(data, fin, (err2, result) => { + done(); + callback(err2, result); + }); + }); + } + /** + * Decompress data. + * + * @param {Buffer} data Compressed data + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _decompress(data, fin, callback) { + const endpoint = this._isServer ? "client" : "server"; + if (!this._inflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._inflate = zlib.createInflateRaw({ + ...this._options.zlibInflateOptions, + windowBits + }); + this._inflate[kPerMessageDeflate] = this; + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + this._inflate.on("error", inflateOnError); + this._inflate.on("data", inflateOnData); + } + this._inflate[kCallback] = callback; + this._inflate.write(data); + if (fin) this._inflate.write(TRAILER); + this._inflate.flush(() => { + const err2 = this._inflate[kError]; + if (err2) { + this._inflate.close(); + this._inflate = null; + callback(err2); + return; + } + const data2 = bufferUtil.concat( + this._inflate[kBuffers], + this._inflate[kTotalLength] + ); + if (this._inflate._readableState.endEmitted) { + this._inflate.close(); + this._inflate = null; + } else { + this._inflate[kTotalLength] = 0; + this._inflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._inflate.reset(); + } + } + callback(null, data2); + }); + } + /** + * Compress data. + * + * @param {(Buffer|String)} data Data to compress + * @param {Boolean} fin Specifies whether or not this is the last fragment + * @param {Function} callback Callback + * @private + */ + _compress(data, fin, callback) { + const endpoint = this._isServer ? "server" : "client"; + if (!this._deflate) { + const key = `${endpoint}_max_window_bits`; + const windowBits = typeof this.params[key] !== "number" ? zlib.Z_DEFAULT_WINDOWBITS : this.params[key]; + this._deflate = zlib.createDeflateRaw({ + ...this._options.zlibDeflateOptions, + windowBits + }); + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + this._deflate.on("data", deflateOnData); + } + this._deflate[kCallback] = callback; + this._deflate.write(data); + this._deflate.flush(zlib.Z_SYNC_FLUSH, () => { + if (!this._deflate) { + return; + } + let data2 = bufferUtil.concat( + this._deflate[kBuffers], + this._deflate[kTotalLength] + ); + if (fin) { + data2 = new FastBuffer(data2.buffer, data2.byteOffset, data2.length - 4); + } + this._deflate[kCallback] = null; + this._deflate[kTotalLength] = 0; + this._deflate[kBuffers] = []; + if (fin && this.params[`${endpoint}_no_context_takeover`]) { + this._deflate.reset(); + } + callback(null, data2); + }); + } + }; + module2.exports = PerMessageDeflate; + function deflateOnData(chunk) { + this[kBuffers].push(chunk); + this[kTotalLength] += chunk.length; + } + function inflateOnData(chunk) { + this[kTotalLength] += chunk.length; + if (this[kPerMessageDeflate]._maxPayload < 1 || this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload) { + this[kBuffers].push(chunk); + return; + } + this[kError] = new RangeError("Max payload size exceeded"); + this[kError].code = "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"; + this[kError][kStatusCode] = 1009; + this.removeListener("data", inflateOnData); + this.reset(); + } + function inflateOnError(err2) { + this[kPerMessageDeflate]._inflate = null; + err2[kStatusCode] = 1007; + this[kCallback](err2); + } + } +}); + +// node_modules/ws/lib/validation.js +var require_validation4 = __commonJS({ + "node_modules/ws/lib/validation.js"(exports2, module2) { + "use strict"; + var { isUtf8 } = __require("buffer"); + var { hasBlob } = require_constants15(); + var tokenChars = [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 0 - 15 + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + // 16 - 31 + 0, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 1, + 1, + 0, + 1, + 1, + 0, + // 32 - 47 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 0, + 0, + 0, + // 48 - 63 + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 64 - 79 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 0, + 1, + 1, + // 80 - 95 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + // 96 - 111 + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 0, + 1, + 0 + // 112 - 127 + ]; + function isValidStatusCode(code) { + return code >= 1e3 && code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006 || code >= 3e3 && code <= 4999; + } + function _isValidUTF8(buf) { + const len = buf.length; + let i = 0; + while (i < len) { + if ((buf[i] & 128) === 0) { + i++; + } else if ((buf[i] & 224) === 192) { + if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { + return false; + } + i += 2; + } else if ((buf[i] & 240) === 224) { + if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // Overlong + buf[i] === 237 && (buf[i + 1] & 224) === 160) { + return false; + } + i += 3; + } else if ((buf[i] & 248) === 240) { + if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // Overlong + buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { + return false; + } + i += 4; + } else { + return false; + } + } + return true; + } + function isBlob(value) { + return hasBlob && typeof value === "object" && typeof value.arrayBuffer === "function" && typeof value.type === "string" && typeof value.stream === "function" && (value[Symbol.toStringTag] === "Blob" || value[Symbol.toStringTag] === "File"); + } + module2.exports = { + isBlob, + isValidStatusCode, + isValidUTF8: _isValidUTF8, + tokenChars + }; + if (isUtf8) { + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf); + }; + } else if (!process.env.WS_NO_UTF_8_VALIDATE) { + try { + const isValidUTF8 = require_utf_8_validate(); + module2.exports.isValidUTF8 = function(buf) { + return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf); + }; + } catch (e) { + } + } + } +}); + +// node_modules/ws/lib/receiver.js +var require_receiver3 = __commonJS({ + "node_modules/ws/lib/receiver.js"(exports2, module2) { + "use strict"; + var { Writable } = __require("stream"); + var PerMessageDeflate = require_permessage_deflate3(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + kStatusCode, + kWebSocket + } = require_constants15(); + var { concat: concat2, toArrayBuffer, unmask } = require_buffer_util3(); + var { isValidStatusCode, isValidUTF8 } = require_validation4(); + var FastBuffer = Buffer[Symbol.species]; + var GET_INFO = 0; + var GET_PAYLOAD_LENGTH_16 = 1; + var GET_PAYLOAD_LENGTH_64 = 2; + var GET_MASK = 3; + var GET_DATA = 4; + var INFLATING = 5; + var DEFER_EVENT = 6; + var Receiver = class extends Writable { + /** + * Creates a Receiver instance. + * + * @param {Object} [options] Options object + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {String} [options.binaryType=nodebuffer] The type for binary data + * @param {Object} [options.extensions] An object containing the negotiated + * extensions + * @param {Boolean} [options.isServer=false] Specifies whether to operate in + * client or server mode + * @param {Number} [options.maxPayload=0] The maximum allowed message length + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + */ + constructor(options = {}) { + super(); + this._allowSynchronousEvents = options.allowSynchronousEvents !== void 0 ? options.allowSynchronousEvents : true; + this._binaryType = options.binaryType || BINARY_TYPES[0]; + this._extensions = options.extensions || {}; + this._isServer = !!options.isServer; + this._maxPayload = options.maxPayload | 0; + this._skipUTF8Validation = !!options.skipUTF8Validation; + this[kWebSocket] = void 0; + this._bufferedBytes = 0; + this._buffers = []; + this._compressed = false; + this._payloadLength = 0; + this._mask = void 0; + this._fragmented = 0; + this._masked = false; + this._fin = false; + this._opcode = 0; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragments = []; + this._errored = false; + this._loop = false; + this._state = GET_INFO; + } + /** + * Implements `Writable.prototype._write()`. + * + * @param {Buffer} chunk The chunk of data to write + * @param {String} encoding The character encoding of `chunk` + * @param {Function} cb Callback + * @private + */ + _write(chunk, encoding, cb) { + if (this._opcode === 8 && this._state == GET_INFO) return cb(); + this._bufferedBytes += chunk.length; + this._buffers.push(chunk); + this.startLoop(cb); + } + /** + * Consumes `n` bytes from the buffered data. + * + * @param {Number} n The number of bytes to consume + * @return {Buffer} The consumed bytes + * @private + */ + consume(n) { + this._bufferedBytes -= n; + if (n === this._buffers[0].length) return this._buffers.shift(); + if (n < this._buffers[0].length) { + const buf = this._buffers[0]; + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + return new FastBuffer(buf.buffer, buf.byteOffset, n); + } + const dst = Buffer.allocUnsafe(n); + do { + const buf = this._buffers[0]; + const offset = dst.length - n; + if (n >= buf.length) { + dst.set(this._buffers.shift(), offset); + } else { + dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset); + this._buffers[0] = new FastBuffer( + buf.buffer, + buf.byteOffset + n, + buf.length - n + ); + } + n -= buf.length; + } while (n > 0); + return dst; + } + /** + * Starts the parsing loop. + * + * @param {Function} cb Callback + * @private + */ + startLoop(cb) { + this._loop = true; + do { + switch (this._state) { + case GET_INFO: + this.getInfo(cb); + break; + case GET_PAYLOAD_LENGTH_16: + this.getPayloadLength16(cb); + break; + case GET_PAYLOAD_LENGTH_64: + this.getPayloadLength64(cb); + break; + case GET_MASK: + this.getMask(); + break; + case GET_DATA: + this.getData(cb); + break; + case INFLATING: + case DEFER_EVENT: + this._loop = false; + return; + } + } while (this._loop); + if (!this._errored) cb(); + } + /** + * Reads the first two bytes of a frame. + * + * @param {Function} cb Callback + * @private + */ + getInfo(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + const buf = this.consume(2); + if ((buf[0] & 48) !== 0) { + const error = this.createError( + RangeError, + "RSV2 and RSV3 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_2_3" + ); + cb(error); + return; + } + const compressed = (buf[0] & 64) === 64; + if (compressed && !this._extensions[PerMessageDeflate.extensionName]) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + this._fin = (buf[0] & 128) === 128; + this._opcode = buf[0] & 15; + this._payloadLength = buf[1] & 127; + if (this._opcode === 0) { + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (!this._fragmented) { + const error = this.createError( + RangeError, + "invalid opcode 0", + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._opcode = this._fragmented; + } else if (this._opcode === 1 || this._opcode === 2) { + if (this._fragmented) { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + this._compressed = compressed; + } else if (this._opcode > 7 && this._opcode < 11) { + if (!this._fin) { + const error = this.createError( + RangeError, + "FIN must be set", + true, + 1002, + "WS_ERR_EXPECTED_FIN" + ); + cb(error); + return; + } + if (compressed) { + const error = this.createError( + RangeError, + "RSV1 must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_RSV_1" + ); + cb(error); + return; + } + if (this._payloadLength > 125 || this._opcode === 8 && this._payloadLength === 1) { + const error = this.createError( + RangeError, + `invalid payload length ${this._payloadLength}`, + true, + 1002, + "WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + } else { + const error = this.createError( + RangeError, + `invalid opcode ${this._opcode}`, + true, + 1002, + "WS_ERR_INVALID_OPCODE" + ); + cb(error); + return; + } + if (!this._fin && !this._fragmented) this._fragmented = this._opcode; + this._masked = (buf[1] & 128) === 128; + if (this._isServer) { + if (!this._masked) { + const error = this.createError( + RangeError, + "MASK must be set", + true, + 1002, + "WS_ERR_EXPECTED_MASK" + ); + cb(error); + return; + } + } else if (this._masked) { + const error = this.createError( + RangeError, + "MASK must be clear", + true, + 1002, + "WS_ERR_UNEXPECTED_MASK" + ); + cb(error); + return; + } + if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16; + else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64; + else this.haveLength(cb); + } + /** + * Gets extended payload length (7+16). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength16(cb) { + if (this._bufferedBytes < 2) { + this._loop = false; + return; + } + this._payloadLength = this.consume(2).readUInt16BE(0); + this.haveLength(cb); + } + /** + * Gets extended payload length (7+64). + * + * @param {Function} cb Callback + * @private + */ + getPayloadLength64(cb) { + if (this._bufferedBytes < 8) { + this._loop = false; + return; + } + const buf = this.consume(8); + const num = buf.readUInt32BE(0); + if (num > Math.pow(2, 53 - 32) - 1) { + const error = this.createError( + RangeError, + "Unsupported WebSocket frame: payload length > 2^53 - 1", + false, + 1009, + "WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH" + ); + cb(error); + return; + } + this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4); + this.haveLength(cb); + } + /** + * Payload length has been read. + * + * @param {Function} cb Callback + * @private + */ + haveLength(cb) { + if (this._payloadLength && this._opcode < 8) { + this._totalPayloadLength += this._payloadLength; + if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + } + if (this._masked) this._state = GET_MASK; + else this._state = GET_DATA; + } + /** + * Reads mask bytes. + * + * @private + */ + getMask() { + if (this._bufferedBytes < 4) { + this._loop = false; + return; + } + this._mask = this.consume(4); + this._state = GET_DATA; + } + /** + * Reads data bytes. + * + * @param {Function} cb Callback + * @private + */ + getData(cb) { + let data = EMPTY_BUFFER; + if (this._payloadLength) { + if (this._bufferedBytes < this._payloadLength) { + this._loop = false; + return; + } + data = this.consume(this._payloadLength); + if (this._masked && (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0) { + unmask(data, this._mask); + } + } + if (this._opcode > 7) { + this.controlMessage(data, cb); + return; + } + if (this._compressed) { + this._state = INFLATING; + this.decompress(data, cb); + return; + } + if (data.length) { + this._messageLength = this._totalPayloadLength; + this._fragments.push(data); + } + this.dataMessage(cb); + } + /** + * Decompresses data. + * + * @param {Buffer} data Compressed data + * @param {Function} cb Callback + * @private + */ + decompress(data, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + perMessageDeflate.decompress(data, this._fin, (err2, buf) => { + if (err2) return cb(err2); + if (buf.length) { + this._messageLength += buf.length; + if (this._messageLength > this._maxPayload && this._maxPayload > 0) { + const error = this.createError( + RangeError, + "Max payload size exceeded", + false, + 1009, + "WS_ERR_UNSUPPORTED_MESSAGE_LENGTH" + ); + cb(error); + return; + } + this._fragments.push(buf); + } + this.dataMessage(cb); + if (this._state === GET_INFO) this.startLoop(cb); + }); + } + /** + * Handles a data message. + * + * @param {Function} cb Callback + * @private + */ + dataMessage(cb) { + if (!this._fin) { + this._state = GET_INFO; + return; + } + const messageLength = this._messageLength; + const fragments = this._fragments; + this._totalPayloadLength = 0; + this._messageLength = 0; + this._fragmented = 0; + this._fragments = []; + if (this._opcode === 2) { + let data; + if (this._binaryType === "nodebuffer") { + data = concat2(fragments, messageLength); + } else if (this._binaryType === "arraybuffer") { + data = toArrayBuffer(concat2(fragments, messageLength)); + } else if (this._binaryType === "blob") { + data = new Blob(fragments); + } else { + data = fragments; + } + if (this._allowSynchronousEvents) { + this.emit("message", data, true); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", data, true); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } else { + const buf = concat2(fragments, messageLength); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + if (this._state === INFLATING || this._allowSynchronousEvents) { + this.emit("message", buf, false); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit("message", buf, false); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + } + /** + * Handles a control message. + * + * @param {Buffer} data Data to handle + * @return {(Error|RangeError|undefined)} A possible error + * @private + */ + controlMessage(data, cb) { + if (this._opcode === 8) { + if (data.length === 0) { + this._loop = false; + this.emit("conclude", 1005, EMPTY_BUFFER); + this.end(); + } else { + const code = data.readUInt16BE(0); + if (!isValidStatusCode(code)) { + const error = this.createError( + RangeError, + `invalid status code ${code}`, + true, + 1002, + "WS_ERR_INVALID_CLOSE_CODE" + ); + cb(error); + return; + } + const buf = new FastBuffer( + data.buffer, + data.byteOffset + 2, + data.length - 2 + ); + if (!this._skipUTF8Validation && !isValidUTF8(buf)) { + const error = this.createError( + Error, + "invalid UTF-8 sequence", + true, + 1007, + "WS_ERR_INVALID_UTF8" + ); + cb(error); + return; + } + this._loop = false; + this.emit("conclude", code, buf); + this.end(); + } + this._state = GET_INFO; + return; + } + if (this._allowSynchronousEvents) { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + } else { + this._state = DEFER_EVENT; + setImmediate(() => { + this.emit(this._opcode === 9 ? "ping" : "pong", data); + this._state = GET_INFO; + this.startLoop(cb); + }); + } + } + /** + * Builds an error object. + * + * @param {function(new:Error|RangeError)} ErrorCtor The error constructor + * @param {String} message The error message + * @param {Boolean} prefix Specifies whether or not to add a default prefix to + * `message` + * @param {Number} statusCode The status code + * @param {String} errorCode The exposed error code + * @return {(Error|RangeError)} The error + * @private + */ + createError(ErrorCtor, message, prefix, statusCode, errorCode) { + this._loop = false; + this._errored = true; + const err2 = new ErrorCtor( + prefix ? `Invalid WebSocket frame: ${message}` : message + ); + Error.captureStackTrace(err2, this.createError); + err2.code = errorCode; + err2[kStatusCode] = statusCode; + return err2; + } + }; + module2.exports = Receiver; + } +}); + +// node_modules/ws/lib/sender.js +var require_sender3 = __commonJS({ + "node_modules/ws/lib/sender.js"(exports2, module2) { + "use strict"; + var { Duplex } = __require("stream"); + var { randomFillSync } = __require("crypto"); + var PerMessageDeflate = require_permessage_deflate3(); + var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants15(); + var { isBlob, isValidStatusCode } = require_validation4(); + var { mask: applyMask, toBuffer } = require_buffer_util3(); + var kByteLength = Symbol("kByteLength"); + var maskBuffer = Buffer.alloc(4); + var RANDOM_POOL_SIZE = 8 * 1024; + var randomPool; + var randomPoolPointer = RANDOM_POOL_SIZE; + var DEFAULT = 0; + var DEFLATING = 1; + var GET_BLOB_DATA = 2; + var Sender = class _Sender { + /** + * Creates a Sender instance. + * + * @param {Duplex} socket The connection socket + * @param {Object} [extensions] An object containing the negotiated extensions + * @param {Function} [generateMask] The function used to generate the masking + * key + */ + constructor(socket, extensions, generateMask) { + this._extensions = extensions || {}; + if (generateMask) { + this._generateMask = generateMask; + this._maskBuffer = Buffer.alloc(4); + } + this._socket = socket; + this._firstFragment = true; + this._compress = false; + this._bufferedBytes = 0; + this._queue = []; + this._state = DEFAULT; + this.onerror = NOOP; + this[kWebSocket] = void 0; + } + /** + * Frames a piece of data according to the HyBi WebSocket protocol. + * + * @param {(Buffer|String)} data The data to frame + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @return {(Buffer|String)[]} The framed data + * @public + */ + static frame(data, options) { + let mask; + let merge = false; + let offset = 2; + let skipMasking = false; + if (options.mask) { + mask = options.maskBuffer || maskBuffer; + if (options.generateMask) { + options.generateMask(mask); + } else { + if (randomPoolPointer === RANDOM_POOL_SIZE) { + if (randomPool === void 0) { + randomPool = Buffer.alloc(RANDOM_POOL_SIZE); + } + randomFillSync(randomPool, 0, RANDOM_POOL_SIZE); + randomPoolPointer = 0; + } + mask[0] = randomPool[randomPoolPointer++]; + mask[1] = randomPool[randomPoolPointer++]; + mask[2] = randomPool[randomPoolPointer++]; + mask[3] = randomPool[randomPoolPointer++]; + } + skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0; + offset = 6; + } + let dataLength; + if (typeof data === "string") { + if ((!options.mask || skipMasking) && options[kByteLength] !== void 0) { + dataLength = options[kByteLength]; + } else { + data = Buffer.from(data); + dataLength = data.length; + } + } else { + dataLength = data.length; + merge = options.mask && options.readOnly && !skipMasking; + } + let payloadLength = dataLength; + if (dataLength >= 65536) { + offset += 8; + payloadLength = 127; + } else if (dataLength > 125) { + offset += 2; + payloadLength = 126; + } + const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset); + target[0] = options.fin ? options.opcode | 128 : options.opcode; + if (options.rsv1) target[0] |= 64; + target[1] = payloadLength; + if (payloadLength === 126) { + target.writeUInt16BE(dataLength, 2); + } else if (payloadLength === 127) { + target[2] = target[3] = 0; + target.writeUIntBE(dataLength, 4, 6); + } + if (!options.mask) return [target, data]; + target[1] |= 128; + target[offset - 4] = mask[0]; + target[offset - 3] = mask[1]; + target[offset - 2] = mask[2]; + target[offset - 1] = mask[3]; + if (skipMasking) return [target, data]; + if (merge) { + applyMask(data, mask, target, offset, dataLength); + return [target]; + } + applyMask(data, mask, data, 0, dataLength); + return [target, data]; + } + /** + * Sends a close message to the other peer. + * + * @param {Number} [code] The status code component of the body + * @param {(String|Buffer)} [data] The message component of the body + * @param {Boolean} [mask=false] Specifies whether or not to mask the message + * @param {Function} [cb] Callback + * @public + */ + close(code, data, mask, cb) { + let buf; + if (code === void 0) { + buf = EMPTY_BUFFER; + } else if (typeof code !== "number" || !isValidStatusCode(code)) { + throw new TypeError("First argument must be a valid error code number"); + } else if (data === void 0 || !data.length) { + buf = Buffer.allocUnsafe(2); + buf.writeUInt16BE(code, 0); + } else { + const length = Buffer.byteLength(data); + if (length > 123) { + throw new RangeError("The message must not be greater than 123 bytes"); + } + buf = Buffer.allocUnsafe(2 + length); + buf.writeUInt16BE(code, 0); + if (typeof data === "string") { + buf.write(data, 2); + } else { + buf.set(data, 2); + } + } + const options = { + [kByteLength]: buf.length, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 8, + readOnly: false, + rsv1: false + }; + if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, buf, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(buf, options), cb); + } + } + /** + * Sends a ping message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + ping(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 9, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a pong message to the other peer. + * + * @param {*} data The message to send + * @param {Boolean} [mask=false] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback + * @public + */ + pong(data, mask, cb) { + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (byteLength > 125) { + throw new RangeError("The data size must not be greater than 125 bytes"); + } + const options = { + [kByteLength]: byteLength, + fin: true, + generateMask: this._generateMask, + mask, + maskBuffer: this._maskBuffer, + opcode: 10, + readOnly, + rsv1: false + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, false, options, cb]); + } else { + this.getBlobData(data, false, options, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, false, options, cb]); + } else { + this.sendFrame(_Sender.frame(data, options), cb); + } + } + /** + * Sends a data message to the other peer. + * + * @param {*} data The message to send + * @param {Object} options Options object + * @param {Boolean} [options.binary=false] Specifies whether `data` is binary + * or text + * @param {Boolean} [options.compress=false] Specifies whether or not to + * compress `data` + * @param {Boolean} [options.fin=false] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Function} [cb] Callback + * @public + */ + send(data, options, cb) { + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + let opcode = options.binary ? 2 : 1; + let rsv1 = options.compress; + let byteLength; + let readOnly; + if (typeof data === "string") { + byteLength = Buffer.byteLength(data); + readOnly = false; + } else if (isBlob(data)) { + byteLength = data.size; + readOnly = false; + } else { + data = toBuffer(data); + byteLength = data.length; + readOnly = toBuffer.readOnly; + } + if (this._firstFragment) { + this._firstFragment = false; + if (rsv1 && perMessageDeflate && perMessageDeflate.params[perMessageDeflate._isServer ? "server_no_context_takeover" : "client_no_context_takeover"]) { + rsv1 = byteLength >= perMessageDeflate._threshold; + } + this._compress = rsv1; + } else { + rsv1 = false; + opcode = 0; + } + if (options.fin) this._firstFragment = true; + const opts = { + [kByteLength]: byteLength, + fin: options.fin, + generateMask: this._generateMask, + mask: options.mask, + maskBuffer: this._maskBuffer, + opcode, + readOnly, + rsv1 + }; + if (isBlob(data)) { + if (this._state !== DEFAULT) { + this.enqueue([this.getBlobData, data, this._compress, opts, cb]); + } else { + this.getBlobData(data, this._compress, opts, cb); + } + } else if (this._state !== DEFAULT) { + this.enqueue([this.dispatch, data, this._compress, opts, cb]); + } else { + this.dispatch(data, this._compress, opts, cb); + } + } + /** + * Gets the contents of a blob as binary data. + * + * @param {Blob} blob The blob + * @param {Boolean} [compress=false] Specifies whether or not to compress + * the data + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + getBlobData(blob, compress, options, cb) { + this._bufferedBytes += options[kByteLength]; + this._state = GET_BLOB_DATA; + blob.arrayBuffer().then((arrayBuffer) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while the blob was being read" + ); + process.nextTick(callCallbacks, this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + const data = toBuffer(arrayBuffer); + if (!compress) { + this._state = DEFAULT; + this.sendFrame(_Sender.frame(data, options), cb); + this.dequeue(); + } else { + this.dispatch(data, compress, options, cb); + } + }).catch((err2) => { + process.nextTick(onError, this, err2, cb); + }); + } + /** + * Dispatches a message. + * + * @param {(Buffer|String)} data The message to send + * @param {Boolean} [compress=false] Specifies whether or not to compress + * `data` + * @param {Object} options Options object + * @param {Boolean} [options.fin=false] Specifies whether or not to set the + * FIN bit + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Boolean} [options.mask=false] Specifies whether or not to mask + * `data` + * @param {Buffer} [options.maskBuffer] The buffer used to store the masking + * key + * @param {Number} options.opcode The opcode + * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be + * modified + * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the + * RSV1 bit + * @param {Function} [cb] Callback + * @private + */ + dispatch(data, compress, options, cb) { + if (!compress) { + this.sendFrame(_Sender.frame(data, options), cb); + return; + } + const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName]; + this._bufferedBytes += options[kByteLength]; + this._state = DEFLATING; + perMessageDeflate.compress(data, options.fin, (_, buf) => { + if (this._socket.destroyed) { + const err2 = new Error( + "The socket was closed while data was being compressed" + ); + callCallbacks(this, err2, cb); + return; + } + this._bufferedBytes -= options[kByteLength]; + this._state = DEFAULT; + options.readOnly = false; + this.sendFrame(_Sender.frame(buf, options), cb); + this.dequeue(); + }); + } + /** + * Executes queued send operations. + * + * @private + */ + dequeue() { + while (this._state === DEFAULT && this._queue.length) { + const params = this._queue.shift(); + this._bufferedBytes -= params[3][kByteLength]; + Reflect.apply(params[0], this, params.slice(1)); + } + } + /** + * Enqueues a send operation. + * + * @param {Array} params Send operation parameters. + * @private + */ + enqueue(params) { + this._bufferedBytes += params[3][kByteLength]; + this._queue.push(params); + } + /** + * Sends a frame. + * + * @param {(Buffer | String)[]} list The frame to send + * @param {Function} [cb] Callback + * @private + */ + sendFrame(list, cb) { + if (list.length === 2) { + this._socket.cork(); + this._socket.write(list[0]); + this._socket.write(list[1], cb); + this._socket.uncork(); + } else { + this._socket.write(list[0], cb); + } + } + }; + module2.exports = Sender; + function callCallbacks(sender, err2, cb) { + if (typeof cb === "function") cb(err2); + for (let i = 0; i < sender._queue.length; i++) { + const params = sender._queue[i]; + const callback = params[params.length - 1]; + if (typeof callback === "function") callback(err2); + } + } + function onError(sender, err2, cb) { + callCallbacks(sender, err2, cb); + sender.onerror(err2); + } + } +}); + +// node_modules/ws/lib/event-target.js +var require_event_target3 = __commonJS({ + "node_modules/ws/lib/event-target.js"(exports2, module2) { + "use strict"; + var { kForOnEventAttribute, kListener } = require_constants15(); + var kCode = Symbol("kCode"); + var kData = Symbol("kData"); + var kError = Symbol("kError"); + var kMessage = Symbol("kMessage"); + var kReason = Symbol("kReason"); + var kTarget = Symbol("kTarget"); + var kType = Symbol("kType"); + var kWasClean = Symbol("kWasClean"); + var Event = class { + /** + * Create a new `Event`. + * + * @param {String} type The name of the event + * @throws {TypeError} If the `type` argument is not specified + */ + constructor(type) { + this[kTarget] = null; + this[kType] = type; + } + /** + * @type {*} + */ + get target() { + return this[kTarget]; + } + /** + * @type {String} + */ + get type() { + return this[kType]; + } + }; + Object.defineProperty(Event.prototype, "target", { enumerable: true }); + Object.defineProperty(Event.prototype, "type", { enumerable: true }); + var CloseEvent = class extends Event { + /** + * Create a new `CloseEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {Number} [options.code=0] The status code explaining why the + * connection was closed + * @param {String} [options.reason=''] A human-readable string explaining why + * the connection was closed + * @param {Boolean} [options.wasClean=false] Indicates whether or not the + * connection was cleanly closed + */ + constructor(type, options = {}) { + super(type); + this[kCode] = options.code === void 0 ? 0 : options.code; + this[kReason] = options.reason === void 0 ? "" : options.reason; + this[kWasClean] = options.wasClean === void 0 ? false : options.wasClean; + } + /** + * @type {Number} + */ + get code() { + return this[kCode]; + } + /** + * @type {String} + */ + get reason() { + return this[kReason]; + } + /** + * @type {Boolean} + */ + get wasClean() { + return this[kWasClean]; + } + }; + Object.defineProperty(CloseEvent.prototype, "code", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "reason", { enumerable: true }); + Object.defineProperty(CloseEvent.prototype, "wasClean", { enumerable: true }); + var ErrorEvent = class extends Event { + /** + * Create a new `ErrorEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.error=null] The error that generated this event + * @param {String} [options.message=''] The error message + */ + constructor(type, options = {}) { + super(type); + this[kError] = options.error === void 0 ? null : options.error; + this[kMessage] = options.message === void 0 ? "" : options.message; + } + /** + * @type {*} + */ + get error() { + return this[kError]; + } + /** + * @type {String} + */ + get message() { + return this[kMessage]; + } + }; + Object.defineProperty(ErrorEvent.prototype, "error", { enumerable: true }); + Object.defineProperty(ErrorEvent.prototype, "message", { enumerable: true }); + var MessageEvent = class extends Event { + /** + * Create a new `MessageEvent`. + * + * @param {String} type The name of the event + * @param {Object} [options] A dictionary object that allows for setting + * attributes via object members of the same name + * @param {*} [options.data=null] The message content + */ + constructor(type, options = {}) { + super(type); + this[kData] = options.data === void 0 ? null : options.data; + } + /** + * @type {*} + */ + get data() { + return this[kData]; + } + }; + Object.defineProperty(MessageEvent.prototype, "data", { enumerable: true }); + var EventTarget = { + /** + * Register an event listener. + * + * @param {String} type A string representing the event type to listen for + * @param {(Function|Object)} handler The listener to add + * @param {Object} [options] An options object specifies characteristics about + * the event listener + * @param {Boolean} [options.once=false] A `Boolean` indicating that the + * listener should be invoked at most once after being added. If `true`, + * the listener would be automatically removed when invoked. + * @public + */ + addEventListener(type, handler, options = {}) { + for (const listener of this.listeners(type)) { + if (!options[kForOnEventAttribute] && listener[kListener] === handler && !listener[kForOnEventAttribute]) { + return; + } + } + let wrapper; + if (type === "message") { + wrapper = function onMessage(data, isBinary) { + const event = new MessageEvent("message", { + data: isBinary ? data : data.toString() + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "close") { + wrapper = function onClose(code, message) { + const event = new CloseEvent("close", { + code, + reason: message.toString(), + wasClean: this._closeFrameReceived && this._closeFrameSent + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "error") { + wrapper = function onError(error) { + const event = new ErrorEvent("error", { + error, + message: error.message + }); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else if (type === "open") { + wrapper = function onOpen() { + const event = new Event("open"); + event[kTarget] = this; + callListener(handler, this, event); + }; + } else { + return; + } + wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute]; + wrapper[kListener] = handler; + if (options.once) { + this.once(type, wrapper); + } else { + this.on(type, wrapper); + } + }, + /** + * Remove an event listener. + * + * @param {String} type A string representing the event type to remove + * @param {(Function|Object)} handler The listener to remove + * @public + */ + removeEventListener(type, handler) { + for (const listener of this.listeners(type)) { + if (listener[kListener] === handler && !listener[kForOnEventAttribute]) { + this.removeListener(type, listener); + break; + } + } + } + }; + module2.exports = { + CloseEvent, + ErrorEvent, + Event, + EventTarget, + MessageEvent + }; + function callListener(listener, thisArg, event) { + if (typeof listener === "object" && listener.handleEvent) { + listener.handleEvent.call(listener, event); + } else { + listener.call(thisArg, event); + } + } + } +}); + +// node_modules/ws/lib/extension.js +var require_extension3 = __commonJS({ + "node_modules/ws/lib/extension.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation4(); + function push(dest, name, elem) { + if (dest[name] === void 0) dest[name] = [elem]; + else dest[name].push(elem); + } + function parse(header) { + const offers = /* @__PURE__ */ Object.create(null); + let params = /* @__PURE__ */ Object.create(null); + let mustUnescape = false; + let isEscaping = false; + let inQuotes = false; + let extensionName; + let paramName; + let start = -1; + let code = -1; + let end = -1; + let i = 0; + for (; i < header.length; i++) { + code = header.charCodeAt(i); + if (extensionName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const name = header.slice(start, end); + if (code === 44) { + push(offers, name, params); + params = /* @__PURE__ */ Object.create(null); + } else { + extensionName = name; + } + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (paramName === void 0) { + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 32 || code === 9) { + if (end === -1 && start !== -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + push(params, header.slice(start, end), true); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + start = end = -1; + } else if (code === 61 && start !== -1 && end === -1) { + paramName = header.slice(start, i); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else { + if (isEscaping) { + if (tokenChars[code] !== 1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (start === -1) start = i; + else if (!mustUnescape) mustUnescape = true; + isEscaping = false; + } else if (inQuotes) { + if (tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (code === 34 && start !== -1) { + inQuotes = false; + end = i; + } else if (code === 92) { + isEscaping = true; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } else if (code === 34 && header.charCodeAt(i - 1) === 61) { + inQuotes = true; + } else if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (start !== -1 && (code === 32 || code === 9)) { + if (end === -1) end = i; + } else if (code === 59 || code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + let value = header.slice(start, end); + if (mustUnescape) { + value = value.replace(/\\/g, ""); + mustUnescape = false; + } + push(params, paramName, value); + if (code === 44) { + push(offers, extensionName, params); + params = /* @__PURE__ */ Object.create(null); + extensionName = void 0; + } + paramName = void 0; + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + } + if (start === -1 || inQuotes || code === 32 || code === 9) { + throw new SyntaxError("Unexpected end of input"); + } + if (end === -1) end = i; + const token = header.slice(start, end); + if (extensionName === void 0) { + push(offers, token, params); + } else { + if (paramName === void 0) { + push(params, token, true); + } else if (mustUnescape) { + push(params, paramName, token.replace(/\\/g, "")); + } else { + push(params, paramName, token); + } + push(offers, extensionName, params); + } + return offers; + } + function format(extensions) { + return Object.keys(extensions).map((extension) => { + let configurations = extensions[extension]; + if (!Array.isArray(configurations)) configurations = [configurations]; + return configurations.map((params) => { + return [extension].concat( + Object.keys(params).map((k) => { + let values = params[k]; + if (!Array.isArray(values)) values = [values]; + return values.map((v) => v === true ? k : `${k}=${v}`).join("; "); + }) + ).join("; "); + }).join(", "); + }).join(", "); + } + module2.exports = { format, parse }; + } +}); + +// node_modules/ws/lib/websocket.js +var require_websocket5 = __commonJS({ + "node_modules/ws/lib/websocket.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var https = __require("https"); + var http2 = __require("http"); + var net = __require("net"); + var tls = __require("tls"); + var { randomBytes: randomBytes2, createHash } = __require("crypto"); + var { Duplex, Readable } = __require("stream"); + var { URL: URL2 } = __require("url"); + var PerMessageDeflate = require_permessage_deflate3(); + var Receiver = require_receiver3(); + var Sender = require_sender3(); + var { isBlob } = require_validation4(); + var { + BINARY_TYPES, + EMPTY_BUFFER, + GUID, + kForOnEventAttribute, + kListener, + kStatusCode, + kWebSocket, + NOOP + } = require_constants15(); + var { + EventTarget: { addEventListener, removeEventListener } + } = require_event_target3(); + var { format, parse } = require_extension3(); + var { toBuffer } = require_buffer_util3(); + var closeTimeout = 30 * 1e3; + var kAborted = Symbol("kAborted"); + var protocolVersions = [8, 13]; + var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"]; + var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/; + var WebSocket = class _WebSocket extends EventEmitter { + /** + * Create a new `WebSocket`. + * + * @param {(String|URL)} address The URL to which to connect + * @param {(String|String[])} [protocols] The subprotocols + * @param {Object} [options] Connection options + */ + constructor(address, protocols, options) { + super(); + this._binaryType = BINARY_TYPES[0]; + this._closeCode = 1006; + this._closeFrameReceived = false; + this._closeFrameSent = false; + this._closeMessage = EMPTY_BUFFER; + this._closeTimer = null; + this._errorEmitted = false; + this._extensions = {}; + this._paused = false; + this._protocol = ""; + this._readyState = _WebSocket.CONNECTING; + this._receiver = null; + this._sender = null; + this._socket = null; + if (address !== null) { + this._bufferedAmount = 0; + this._isServer = false; + this._redirects = 0; + if (protocols === void 0) { + protocols = []; + } else if (!Array.isArray(protocols)) { + if (typeof protocols === "object" && protocols !== null) { + options = protocols; + protocols = []; + } else { + protocols = [protocols]; + } + } + initAsClient(this, address, protocols, options); + } else { + this._autoPong = options.autoPong; + this._isServer = true; + } + } + /** + * For historical reasons, the custom "nodebuffer" type is used by the default + * instead of "blob". + * + * @type {String} + */ + get binaryType() { + return this._binaryType; + } + set binaryType(type) { + if (!BINARY_TYPES.includes(type)) return; + this._binaryType = type; + if (this._receiver) this._receiver._binaryType = type; + } + /** + * @type {Number} + */ + get bufferedAmount() { + if (!this._socket) return this._bufferedAmount; + return this._socket._writableState.length + this._sender._bufferedBytes; + } + /** + * @type {String} + */ + get extensions() { + return Object.keys(this._extensions).join(); + } + /** + * @type {Boolean} + */ + get isPaused() { + return this._paused; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onclose() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onerror() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onopen() { + return null; + } + /** + * @type {Function} + */ + /* istanbul ignore next */ + get onmessage() { + return null; + } + /** + * @type {String} + */ + get protocol() { + return this._protocol; + } + /** + * @type {Number} + */ + get readyState() { + return this._readyState; + } + /** + * @type {String} + */ + get url() { + return this._url; + } + /** + * Set up the socket and the internal resources. + * + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Object} options Options object + * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Function} [options.generateMask] The function used to generate the + * masking key + * @param {Number} [options.maxPayload=0] The maximum allowed message size + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @private + */ + setSocket(socket, head, options) { + const receiver = new Receiver({ + allowSynchronousEvents: options.allowSynchronousEvents, + binaryType: this.binaryType, + extensions: this._extensions, + isServer: this._isServer, + maxPayload: options.maxPayload, + skipUTF8Validation: options.skipUTF8Validation + }); + const sender = new Sender(socket, this._extensions, options.generateMask); + this._receiver = receiver; + this._sender = sender; + this._socket = socket; + receiver[kWebSocket] = this; + sender[kWebSocket] = this; + socket[kWebSocket] = this; + receiver.on("conclude", receiverOnConclude); + receiver.on("drain", receiverOnDrain); + receiver.on("error", receiverOnError); + receiver.on("message", receiverOnMessage); + receiver.on("ping", receiverOnPing); + receiver.on("pong", receiverOnPong); + sender.onerror = senderOnError; + if (socket.setTimeout) socket.setTimeout(0); + if (socket.setNoDelay) socket.setNoDelay(); + if (head.length > 0) socket.unshift(head); + socket.on("close", socketOnClose); + socket.on("data", socketOnData); + socket.on("end", socketOnEnd); + socket.on("error", socketOnError); + this._readyState = _WebSocket.OPEN; + this.emit("open"); + } + /** + * Emit the `'close'` event. + * + * @private + */ + emitClose() { + if (!this._socket) { + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + return; + } + if (this._extensions[PerMessageDeflate.extensionName]) { + this._extensions[PerMessageDeflate.extensionName].cleanup(); + } + this._receiver.removeAllListeners(); + this._readyState = _WebSocket.CLOSED; + this.emit("close", this._closeCode, this._closeMessage); + } + /** + * Start a closing handshake. + * + * +----------+ +-----------+ +----------+ + * - - -|ws.close()|-->|close frame|-->|ws.close()|- - - + * | +----------+ +-----------+ +----------+ | + * +----------+ +-----------+ | + * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING + * +----------+ +-----------+ | + * | | | +---+ | + * +------------------------+-->|fin| - - - - + * | +---+ | +---+ + * - - - - -|fin|<---------------------+ + * +---+ + * + * @param {Number} [code] Status code explaining why the connection is closing + * @param {(String|Buffer)} [data] The reason why the connection is + * closing + * @public + */ + close(code, data) { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this.readyState === _WebSocket.CLOSING) { + if (this._closeFrameSent && (this._closeFrameReceived || this._receiver._writableState.errorEmitted)) { + this._socket.end(); + } + return; + } + this._readyState = _WebSocket.CLOSING; + this._sender.close(code, data, !this._isServer, (err2) => { + if (err2) return; + this._closeFrameSent = true; + if (this._closeFrameReceived || this._receiver._writableState.errorEmitted) { + this._socket.end(); + } + }); + setCloseTimer(this); + } + /** + * Pause the socket. + * + * @public + */ + pause() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = true; + this._socket.pause(); + } + /** + * Send a ping. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the ping is sent + * @public + */ + ping(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.ping(data || EMPTY_BUFFER, mask, cb); + } + /** + * Send a pong. + * + * @param {*} [data] The data to send + * @param {Boolean} [mask] Indicates whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when the pong is sent + * @public + */ + pong(data, mask, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof data === "function") { + cb = data; + data = mask = void 0; + } else if (typeof mask === "function") { + cb = mask; + mask = void 0; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + if (mask === void 0) mask = !this._isServer; + this._sender.pong(data || EMPTY_BUFFER, mask, cb); + } + /** + * Resume the socket. + * + * @public + */ + resume() { + if (this.readyState === _WebSocket.CONNECTING || this.readyState === _WebSocket.CLOSED) { + return; + } + this._paused = false; + if (!this._receiver._writableState.needDrain) this._socket.resume(); + } + /** + * Send a data message. + * + * @param {*} data The message to send + * @param {Object} [options] Options object + * @param {Boolean} [options.binary] Specifies whether `data` is binary or + * text + * @param {Boolean} [options.compress] Specifies whether or not to compress + * `data` + * @param {Boolean} [options.fin=true] Specifies whether the fragment is the + * last one + * @param {Boolean} [options.mask] Specifies whether or not to mask `data` + * @param {Function} [cb] Callback which is executed when data is written out + * @public + */ + send(data, options, cb) { + if (this.readyState === _WebSocket.CONNECTING) { + throw new Error("WebSocket is not open: readyState 0 (CONNECTING)"); + } + if (typeof options === "function") { + cb = options; + options = {}; + } + if (typeof data === "number") data = data.toString(); + if (this.readyState !== _WebSocket.OPEN) { + sendAfterClose(this, data, cb); + return; + } + const opts = { + binary: typeof data !== "string", + mask: !this._isServer, + compress: true, + fin: true, + ...options + }; + if (!this._extensions[PerMessageDeflate.extensionName]) { + opts.compress = false; + } + this._sender.send(data || EMPTY_BUFFER, opts, cb); + } + /** + * Forcibly close the connection. + * + * @public + */ + terminate() { + if (this.readyState === _WebSocket.CLOSED) return; + if (this.readyState === _WebSocket.CONNECTING) { + const msg = "WebSocket was closed before the connection was established"; + abortHandshake(this, this._req, msg); + return; + } + if (this._socket) { + this._readyState = _WebSocket.CLOSING; + this._socket.destroy(); + } + } + }; + Object.defineProperty(WebSocket, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket.prototype, "CONNECTING", { + enumerable: true, + value: readyStates.indexOf("CONNECTING") + }); + Object.defineProperty(WebSocket, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket.prototype, "OPEN", { + enumerable: true, + value: readyStates.indexOf("OPEN") + }); + Object.defineProperty(WebSocket, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket.prototype, "CLOSING", { + enumerable: true, + value: readyStates.indexOf("CLOSING") + }); + Object.defineProperty(WebSocket, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + Object.defineProperty(WebSocket.prototype, "CLOSED", { + enumerable: true, + value: readyStates.indexOf("CLOSED") + }); + [ + "binaryType", + "bufferedAmount", + "extensions", + "isPaused", + "protocol", + "readyState", + "url" + ].forEach((property) => { + Object.defineProperty(WebSocket.prototype, property, { enumerable: true }); + }); + ["open", "error", "close", "message"].forEach((method) => { + Object.defineProperty(WebSocket.prototype, `on${method}`, { + enumerable: true, + get() { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) return listener[kListener]; + } + return null; + }, + set(handler) { + for (const listener of this.listeners(method)) { + if (listener[kForOnEventAttribute]) { + this.removeListener(method, listener); + break; + } + } + if (typeof handler !== "function") return; + this.addEventListener(method, handler, { + [kForOnEventAttribute]: true + }); + } + }); + }); + WebSocket.prototype.addEventListener = addEventListener; + WebSocket.prototype.removeEventListener = removeEventListener; + module2.exports = WebSocket; + function initAsClient(websocket, address, protocols, options) { + const opts = { + allowSynchronousEvents: true, + autoPong: true, + protocolVersion: protocolVersions[1], + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: true, + followRedirects: false, + maxRedirects: 10, + ...options, + socketPath: void 0, + hostname: void 0, + protocol: void 0, + timeout: void 0, + method: "GET", + host: void 0, + path: void 0, + port: void 0 + }; + websocket._autoPong = opts.autoPong; + if (!protocolVersions.includes(opts.protocolVersion)) { + throw new RangeError( + `Unsupported protocol version: ${opts.protocolVersion} (supported versions: ${protocolVersions.join(", ")})` + ); + } + let parsedUrl; + if (address instanceof URL2) { + parsedUrl = address; + } else { + try { + parsedUrl = new URL2(address); + } catch (e) { + throw new SyntaxError(`Invalid URL: ${address}`); + } + } + if (parsedUrl.protocol === "http:") { + parsedUrl.protocol = "ws:"; + } else if (parsedUrl.protocol === "https:") { + parsedUrl.protocol = "wss:"; + } + websocket._url = parsedUrl.href; + const isSecure = parsedUrl.protocol === "wss:"; + const isIpcUrl = parsedUrl.protocol === "ws+unix:"; + let invalidUrlMessage; + if (parsedUrl.protocol !== "ws:" && !isSecure && !isIpcUrl) { + invalidUrlMessage = `The URL's protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"`; + } else if (isIpcUrl && !parsedUrl.pathname) { + invalidUrlMessage = "The URL's pathname is empty"; + } else if (parsedUrl.hash) { + invalidUrlMessage = "The URL contains a fragment identifier"; + } + if (invalidUrlMessage) { + const err2 = new SyntaxError(invalidUrlMessage); + if (websocket._redirects === 0) { + throw err2; + } else { + emitErrorAndClose(websocket, err2); + return; + } + } + const defaultPort = isSecure ? 443 : 80; + const key = randomBytes2(16).toString("base64"); + const request = isSecure ? https.request : http2.request; + const protocolSet = /* @__PURE__ */ new Set(); + let perMessageDeflate; + opts.createConnection = opts.createConnection || (isSecure ? tlsConnect : netConnect); + opts.defaultPort = opts.defaultPort || defaultPort; + opts.port = parsedUrl.port || defaultPort; + opts.host = parsedUrl.hostname.startsWith("[") ? parsedUrl.hostname.slice(1, -1) : parsedUrl.hostname; + opts.headers = { + ...opts.headers, + "Sec-WebSocket-Version": opts.protocolVersion, + "Sec-WebSocket-Key": key, + Connection: "Upgrade", + Upgrade: "websocket" + }; + opts.path = parsedUrl.pathname + parsedUrl.search; + opts.timeout = opts.handshakeTimeout; + if (opts.perMessageDeflate) { + perMessageDeflate = new PerMessageDeflate( + opts.perMessageDeflate !== true ? opts.perMessageDeflate : {}, + false, + opts.maxPayload + ); + opts.headers["Sec-WebSocket-Extensions"] = format({ + [PerMessageDeflate.extensionName]: perMessageDeflate.offer() + }); + } + if (protocols.length) { + for (const protocol of protocols) { + if (typeof protocol !== "string" || !subprotocolRegex.test(protocol) || protocolSet.has(protocol)) { + throw new SyntaxError( + "An invalid or duplicated subprotocol was specified" + ); + } + protocolSet.add(protocol); + } + opts.headers["Sec-WebSocket-Protocol"] = protocols.join(","); + } + if (opts.origin) { + if (opts.protocolVersion < 13) { + opts.headers["Sec-WebSocket-Origin"] = opts.origin; + } else { + opts.headers.Origin = opts.origin; + } + } + if (parsedUrl.username || parsedUrl.password) { + opts.auth = `${parsedUrl.username}:${parsedUrl.password}`; + } + if (isIpcUrl) { + const parts = opts.path.split(":"); + opts.socketPath = parts[0]; + opts.path = parts[1]; + } + let req; + if (opts.followRedirects) { + if (websocket._redirects === 0) { + websocket._originalIpc = isIpcUrl; + websocket._originalSecure = isSecure; + websocket._originalHostOrSocketPath = isIpcUrl ? opts.socketPath : parsedUrl.host; + const headers = options && options.headers; + options = { ...options, headers: {} }; + if (headers) { + for (const [key2, value] of Object.entries(headers)) { + options.headers[key2.toLowerCase()] = value; + } + } + } else if (websocket.listenerCount("redirect") === 0) { + const isSameHost = isIpcUrl ? websocket._originalIpc ? opts.socketPath === websocket._originalHostOrSocketPath : false : websocket._originalIpc ? false : parsedUrl.host === websocket._originalHostOrSocketPath; + if (!isSameHost || websocket._originalSecure && !isSecure) { + delete opts.headers.authorization; + delete opts.headers.cookie; + if (!isSameHost) delete opts.headers.host; + opts.auth = void 0; + } + } + if (opts.auth && !options.headers.authorization) { + options.headers.authorization = "Basic " + Buffer.from(opts.auth).toString("base64"); + } + req = websocket._req = request(opts); + if (websocket._redirects) { + websocket.emit("redirect", websocket.url, req); + } + } else { + req = websocket._req = request(opts); + } + if (opts.timeout) { + req.on("timeout", () => { + abortHandshake(websocket, req, "Opening handshake has timed out"); + }); + } + req.on("error", (err2) => { + if (req === null || req[kAborted]) return; + req = websocket._req = null; + emitErrorAndClose(websocket, err2); + }); + req.on("response", (res) => { + const location2 = res.headers.location; + const statusCode = res.statusCode; + if (location2 && opts.followRedirects && statusCode >= 300 && statusCode < 400) { + if (++websocket._redirects > opts.maxRedirects) { + abortHandshake(websocket, req, "Maximum redirects exceeded"); + return; + } + req.abort(); + let addr; + try { + addr = new URL2(location2, address); + } catch (e) { + const err2 = new SyntaxError(`Invalid URL: ${location2}`); + emitErrorAndClose(websocket, err2); + return; + } + initAsClient(websocket, addr, protocols, options); + } else if (!websocket.emit("unexpected-response", req, res)) { + abortHandshake( + websocket, + req, + `Unexpected server response: ${res.statusCode}` + ); + } + }); + req.on("upgrade", (res, socket, head) => { + websocket.emit("upgrade", res); + if (websocket.readyState !== WebSocket.CONNECTING) return; + req = websocket._req = null; + const upgrade = res.headers.upgrade; + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + abortHandshake(websocket, socket, "Invalid Upgrade header"); + return; + } + const digest = createHash("sha1").update(key + GUID).digest("base64"); + if (res.headers["sec-websocket-accept"] !== digest) { + abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header"); + return; + } + const serverProt = res.headers["sec-websocket-protocol"]; + let protError; + if (serverProt !== void 0) { + if (!protocolSet.size) { + protError = "Server sent a subprotocol but none was requested"; + } else if (!protocolSet.has(serverProt)) { + protError = "Server sent an invalid subprotocol"; + } + } else if (protocolSet.size) { + protError = "Server sent no subprotocol"; + } + if (protError) { + abortHandshake(websocket, socket, protError); + return; + } + if (serverProt) websocket._protocol = serverProt; + const secWebSocketExtensions = res.headers["sec-websocket-extensions"]; + if (secWebSocketExtensions !== void 0) { + if (!perMessageDeflate) { + const message = "Server sent a Sec-WebSocket-Extensions header but no extension was requested"; + abortHandshake(websocket, socket, message); + return; + } + let extensions; + try { + extensions = parse(secWebSocketExtensions); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + const extensionNames = Object.keys(extensions); + if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) { + const message = "Server indicated an extension that was not requested"; + abortHandshake(websocket, socket, message); + return; + } + try { + perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Extensions header"; + abortHandshake(websocket, socket, message); + return; + } + websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + websocket.setSocket(socket, head, { + allowSynchronousEvents: opts.allowSynchronousEvents, + generateMask: opts.generateMask, + maxPayload: opts.maxPayload, + skipUTF8Validation: opts.skipUTF8Validation + }); + }); + if (opts.finishRequest) { + opts.finishRequest(req, websocket); + } else { + req.end(); + } + } + function emitErrorAndClose(websocket, err2) { + websocket._readyState = WebSocket.CLOSING; + websocket._errorEmitted = true; + websocket.emit("error", err2); + websocket.emitClose(); + } + function netConnect(options) { + options.path = options.socketPath; + return net.connect(options); + } + function tlsConnect(options) { + options.path = void 0; + if (!options.servername && options.servername !== "") { + options.servername = net.isIP(options.host) ? "" : options.host; + } + return tls.connect(options); + } + function abortHandshake(websocket, stream, message) { + websocket._readyState = WebSocket.CLOSING; + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshake); + if (stream.setHeader) { + stream[kAborted] = true; + stream.abort(); + if (stream.socket && !stream.socket.destroyed) { + stream.socket.destroy(); + } + process.nextTick(emitErrorAndClose, websocket, err2); + } else { + stream.destroy(err2); + stream.once("error", websocket.emit.bind(websocket, "error")); + stream.once("close", websocket.emitClose.bind(websocket)); + } + } + function sendAfterClose(websocket, data, cb) { + if (data) { + const length = isBlob(data) ? data.size : toBuffer(data).length; + if (websocket._socket) websocket._sender._bufferedBytes += length; + else websocket._bufferedAmount += length; + } + if (cb) { + const err2 = new Error( + `WebSocket is not open: readyState ${websocket.readyState} (${readyStates[websocket.readyState]})` + ); + process.nextTick(cb, err2); + } + } + function receiverOnConclude(code, reason) { + const websocket = this[kWebSocket]; + websocket._closeFrameReceived = true; + websocket._closeMessage = reason; + websocket._closeCode = code; + if (websocket._socket[kWebSocket] === void 0) return; + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + if (code === 1005) websocket.close(); + else websocket.close(code, reason); + } + function receiverOnDrain() { + const websocket = this[kWebSocket]; + if (!websocket.isPaused) websocket._socket.resume(); + } + function receiverOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket._socket[kWebSocket] !== void 0) { + websocket._socket.removeListener("data", socketOnData); + process.nextTick(resume, websocket._socket); + websocket.close(err2[kStatusCode]); + } + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function receiverOnFinish() { + this[kWebSocket].emitClose(); + } + function receiverOnMessage(data, isBinary) { + this[kWebSocket].emit("message", data, isBinary); + } + function receiverOnPing(data) { + const websocket = this[kWebSocket]; + if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP); + websocket.emit("ping", data); + } + function receiverOnPong(data) { + this[kWebSocket].emit("pong", data); + } + function resume(stream) { + stream.resume(); + } + function senderOnError(err2) { + const websocket = this[kWebSocket]; + if (websocket.readyState === WebSocket.CLOSED) return; + if (websocket.readyState === WebSocket.OPEN) { + websocket._readyState = WebSocket.CLOSING; + setCloseTimer(websocket); + } + this._socket.end(); + if (!websocket._errorEmitted) { + websocket._errorEmitted = true; + websocket.emit("error", err2); + } + } + function setCloseTimer(websocket) { + websocket._closeTimer = setTimeout( + websocket._socket.destroy.bind(websocket._socket), + closeTimeout + ); + } + function socketOnClose() { + const websocket = this[kWebSocket]; + this.removeListener("close", socketOnClose); + this.removeListener("data", socketOnData); + this.removeListener("end", socketOnEnd); + websocket._readyState = WebSocket.CLOSING; + let chunk; + if (!this._readableState.endEmitted && !websocket._closeFrameReceived && !websocket._receiver._writableState.errorEmitted && (chunk = websocket._socket.read()) !== null) { + websocket._receiver.write(chunk); + } + websocket._receiver.end(); + this[kWebSocket] = void 0; + clearTimeout(websocket._closeTimer); + if (websocket._receiver._writableState.finished || websocket._receiver._writableState.errorEmitted) { + websocket.emitClose(); + } else { + websocket._receiver.on("error", receiverOnFinish); + websocket._receiver.on("finish", receiverOnFinish); + } + } + function socketOnData(chunk) { + if (!this[kWebSocket]._receiver.write(chunk)) { + this.pause(); + } + } + function socketOnEnd() { + const websocket = this[kWebSocket]; + websocket._readyState = WebSocket.CLOSING; + websocket._receiver.end(); + this.end(); + } + function socketOnError() { + const websocket = this[kWebSocket]; + this.removeListener("error", socketOnError); + this.on("error", NOOP); + if (websocket) { + websocket._readyState = WebSocket.CLOSING; + this.destroy(); + } + } + } +}); + +// node_modules/ws/lib/stream.js +var require_stream4 = __commonJS({ + "node_modules/ws/lib/stream.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket5(); + var { Duplex } = __require("stream"); + function emitClose(stream) { + stream.emit("close"); + } + function duplexOnEnd() { + if (!this.destroyed && this._writableState.finished) { + this.destroy(); + } + } + function duplexOnError(err2) { + this.removeListener("error", duplexOnError); + this.destroy(); + if (this.listenerCount("error") === 0) { + this.emit("error", err2); + } + } + function createWebSocketStream(ws, options) { + let terminateOnDestroy = true; + const duplex = new Duplex({ + ...options, + autoDestroy: false, + emitClose: false, + objectMode: false, + writableObjectMode: false + }); + ws.on("message", function message(msg, isBinary) { + const data = !isBinary && duplex._readableState.objectMode ? msg.toString() : msg; + if (!duplex.push(data)) ws.pause(); + }); + ws.once("error", function error(err2) { + if (duplex.destroyed) return; + terminateOnDestroy = false; + duplex.destroy(err2); + }); + ws.once("close", function close() { + if (duplex.destroyed) return; + duplex.push(null); + }); + duplex._destroy = function(err2, callback) { + if (ws.readyState === ws.CLOSED) { + callback(err2); + process.nextTick(emitClose, duplex); + return; + } + let called = false; + ws.once("error", function error(err3) { + called = true; + callback(err3); + }); + ws.once("close", function close() { + if (!called) callback(err2); + process.nextTick(emitClose, duplex); + }); + if (terminateOnDestroy) ws.terminate(); + }; + duplex._final = function(callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._final(callback); + }); + return; + } + if (ws._socket === null) return; + if (ws._socket._writableState.finished) { + callback(); + if (duplex._readableState.endEmitted) duplex.destroy(); + } else { + ws._socket.once("finish", function finish() { + callback(); + }); + ws.close(); + } + }; + duplex._read = function() { + if (ws.isPaused) ws.resume(); + }; + duplex._write = function(chunk, encoding, callback) { + if (ws.readyState === ws.CONNECTING) { + ws.once("open", function open() { + duplex._write(chunk, encoding, callback); + }); + return; + } + ws.send(chunk, callback); + }; + duplex.on("end", duplexOnEnd); + duplex.on("error", duplexOnError); + return duplex; + } + module2.exports = createWebSocketStream; + } +}); + +// node_modules/ws/lib/subprotocol.js +var require_subprotocol3 = __commonJS({ + "node_modules/ws/lib/subprotocol.js"(exports2, module2) { + "use strict"; + var { tokenChars } = require_validation4(); + function parse(header) { + const protocols = /* @__PURE__ */ new Set(); + let start = -1; + let end = -1; + let i = 0; + for (i; i < header.length; i++) { + const code = header.charCodeAt(i); + if (end === -1 && tokenChars[code] === 1) { + if (start === -1) start = i; + } else if (i !== 0 && (code === 32 || code === 9)) { + if (end === -1 && start !== -1) end = i; + } else if (code === 44) { + if (start === -1) { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + if (end === -1) end = i; + const protocol2 = header.slice(start, end); + if (protocols.has(protocol2)) { + throw new SyntaxError(`The "${protocol2}" subprotocol is duplicated`); + } + protocols.add(protocol2); + start = end = -1; + } else { + throw new SyntaxError(`Unexpected character at index ${i}`); + } + } + if (start === -1 || end !== -1) { + throw new SyntaxError("Unexpected end of input"); + } + const protocol = header.slice(start, i); + if (protocols.has(protocol)) { + throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`); + } + protocols.add(protocol); + return protocols; + } + module2.exports = { parse }; + } +}); + +// node_modules/ws/lib/websocket-server.js +var require_websocket_server3 = __commonJS({ + "node_modules/ws/lib/websocket-server.js"(exports2, module2) { + "use strict"; + var EventEmitter = __require("events"); + var http2 = __require("http"); + var { Duplex } = __require("stream"); + var { createHash } = __require("crypto"); + var extension = require_extension3(); + var PerMessageDeflate = require_permessage_deflate3(); + var subprotocol = require_subprotocol3(); + var WebSocket = require_websocket5(); + var { GUID, kWebSocket } = require_constants15(); + var keyRegex = /^[+/0-9A-Za-z]{22}==$/; + var RUNNING = 0; + var CLOSING = 1; + var CLOSED = 2; + var WebSocketServer = class extends EventEmitter { + /** + * Create a `WebSocketServer` instance. + * + * @param {Object} options Configuration options + * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether + * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted + * multiple times in the same tick + * @param {Boolean} [options.autoPong=true] Specifies whether or not to + * automatically send a pong in response to a ping + * @param {Number} [options.backlog=511] The maximum length of the queue of + * pending connections + * @param {Boolean} [options.clientTracking=true] Specifies whether or not to + * track clients + * @param {Function} [options.handleProtocols] A hook to handle protocols + * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxPayload=104857600] The maximum allowed message + * size + * @param {Boolean} [options.noServer=false] Enable no server mode + * @param {String} [options.path] Accept only connections matching this path + * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable + * permessage-deflate + * @param {Number} [options.port] The port where to bind the server + * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S + * server to use + * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or + * not to skip UTF-8 validation for text and close messages + * @param {Function} [options.verifyClient] A hook to reject connections + * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket` + * class to use. It must be the `WebSocket` class or class that extends it + * @param {Function} [callback] A listener for the `listening` event + */ + constructor(options, callback) { + super(); + options = { + allowSynchronousEvents: true, + autoPong: true, + maxPayload: 100 * 1024 * 1024, + skipUTF8Validation: false, + perMessageDeflate: false, + handleProtocols: null, + clientTracking: true, + verifyClient: null, + noServer: false, + backlog: null, + // use default (511 as implemented in net.js) + server: null, + host: null, + path: null, + port: null, + WebSocket, + ...options + }; + if (options.port == null && !options.server && !options.noServer || options.port != null && (options.server || options.noServer) || options.server && options.noServer) { + throw new TypeError( + 'One and only one of the "port", "server", or "noServer" options must be specified' + ); + } + if (options.port != null) { + this._server = http2.createServer((req, res) => { + const body = http2.STATUS_CODES[426]; + res.writeHead(426, { + "Content-Length": body.length, + "Content-Type": "text/plain" + }); + res.end(body); + }); + this._server.listen( + options.port, + options.host, + options.backlog, + callback + ); + } else if (options.server) { + this._server = options.server; + } + if (this._server) { + const emitConnection = this.emit.bind(this, "connection"); + this._removeListeners = addListeners(this._server, { + listening: this.emit.bind(this, "listening"), + error: this.emit.bind(this, "error"), + upgrade: (req, socket, head) => { + this.handleUpgrade(req, socket, head, emitConnection); + } + }); + } + if (options.perMessageDeflate === true) options.perMessageDeflate = {}; + if (options.clientTracking) { + this.clients = /* @__PURE__ */ new Set(); + this._shouldEmitClose = false; + } + this.options = options; + this._state = RUNNING; + } + /** + * Returns the bound address, the address family name, and port of the server + * as reported by the operating system if listening on an IP socket. + * If the server is listening on a pipe or UNIX domain socket, the name is + * returned as a string. + * + * @return {(Object|String|null)} The address of the server + * @public + */ + address() { + if (this.options.noServer) { + throw new Error('The server is operating in "noServer" mode'); + } + if (!this._server) return null; + return this._server.address(); + } + /** + * Stop the server from accepting new connections and emit the `'close'` event + * when all existing connections are closed. + * + * @param {Function} [cb] A one-time listener for the `'close'` event + * @public + */ + close(cb) { + if (this._state === CLOSED) { + if (cb) { + this.once("close", () => { + cb(new Error("The server is not running")); + }); + } + process.nextTick(emitClose, this); + return; + } + if (cb) this.once("close", cb); + if (this._state === CLOSING) return; + this._state = CLOSING; + if (this.options.noServer || this.options.server) { + if (this._server) { + this._removeListeners(); + this._removeListeners = this._server = null; + } + if (this.clients) { + if (!this.clients.size) { + process.nextTick(emitClose, this); + } else { + this._shouldEmitClose = true; + } + } else { + process.nextTick(emitClose, this); + } + } else { + const server = this._server; + this._removeListeners(); + this._removeListeners = this._server = null; + server.close(() => { + emitClose(this); + }); + } + } + /** + * See if a given request should be handled by this server instance. + * + * @param {http.IncomingMessage} req Request object to inspect + * @return {Boolean} `true` if the request is valid, else `false` + * @public + */ + shouldHandle(req) { + if (this.options.path) { + const index = req.url.indexOf("?"); + const pathname = index !== -1 ? req.url.slice(0, index) : req.url; + if (pathname !== this.options.path) return false; + } + return true; + } + /** + * Handle a HTTP Upgrade request. + * + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @public + */ + handleUpgrade(req, socket, head, cb) { + socket.on("error", socketOnError); + const key = req.headers["sec-websocket-key"]; + const upgrade = req.headers.upgrade; + const version = +req.headers["sec-websocket-version"]; + if (req.method !== "GET") { + const message = "Invalid HTTP method"; + abortHandshakeOrEmitwsClientError(this, req, socket, 405, message); + return; + } + if (upgrade === void 0 || upgrade.toLowerCase() !== "websocket") { + const message = "Invalid Upgrade header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (key === void 0 || !keyRegex.test(key)) { + const message = "Missing or invalid Sec-WebSocket-Key header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (version !== 8 && version !== 13) { + const message = "Missing or invalid Sec-WebSocket-Version header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + if (!this.shouldHandle(req)) { + abortHandshake(socket, 400); + return; + } + const secWebSocketProtocol = req.headers["sec-websocket-protocol"]; + let protocols = /* @__PURE__ */ new Set(); + if (secWebSocketProtocol !== void 0) { + try { + protocols = subprotocol.parse(secWebSocketProtocol); + } catch (err2) { + const message = "Invalid Sec-WebSocket-Protocol header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + const secWebSocketExtensions = req.headers["sec-websocket-extensions"]; + const extensions = {}; + if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) { + const perMessageDeflate = new PerMessageDeflate( + this.options.perMessageDeflate, + true, + this.options.maxPayload + ); + try { + const offers = extension.parse(secWebSocketExtensions); + if (offers[PerMessageDeflate.extensionName]) { + perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]); + extensions[PerMessageDeflate.extensionName] = perMessageDeflate; + } + } catch (err2) { + const message = "Invalid or unacceptable Sec-WebSocket-Extensions header"; + abortHandshakeOrEmitwsClientError(this, req, socket, 400, message); + return; + } + } + if (this.options.verifyClient) { + const info = { + origin: req.headers[`${version === 8 ? "sec-websocket-origin" : "origin"}`], + secure: !!(req.socket.authorized || req.socket.encrypted), + req + }; + if (this.options.verifyClient.length === 2) { + this.options.verifyClient(info, (verified, code, message, headers) => { + if (!verified) { + return abortHandshake(socket, code || 401, message, headers); + } + this.completeUpgrade( + extensions, + key, + protocols, + req, + socket, + head, + cb + ); + }); + return; + } + if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); + } + this.completeUpgrade(extensions, key, protocols, req, socket, head, cb); + } + /** + * Upgrade the connection to WebSocket. + * + * @param {Object} extensions The accepted extensions + * @param {String} key The value of the `Sec-WebSocket-Key` header + * @param {Set} protocols The subprotocols + * @param {http.IncomingMessage} req The request object + * @param {Duplex} socket The network socket between the server and client + * @param {Buffer} head The first packet of the upgraded stream + * @param {Function} cb Callback + * @throws {Error} If called more than once with the same socket + * @private + */ + completeUpgrade(extensions, key, protocols, req, socket, head, cb) { + if (!socket.readable || !socket.writable) return socket.destroy(); + if (socket[kWebSocket]) { + throw new Error( + "server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration" + ); + } + if (this._state > RUNNING) return abortHandshake(socket, 503); + const digest = createHash("sha1").update(key + GUID).digest("base64"); + const headers = [ + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Connection: Upgrade", + `Sec-WebSocket-Accept: ${digest}` + ]; + const ws = new this.options.WebSocket(null, void 0, this.options); + if (protocols.size) { + const protocol = this.options.handleProtocols ? this.options.handleProtocols(protocols, req) : protocols.values().next().value; + if (protocol) { + headers.push(`Sec-WebSocket-Protocol: ${protocol}`); + ws._protocol = protocol; + } + } + if (extensions[PerMessageDeflate.extensionName]) { + const params = extensions[PerMessageDeflate.extensionName].params; + const value = extension.format({ + [PerMessageDeflate.extensionName]: [params] + }); + headers.push(`Sec-WebSocket-Extensions: ${value}`); + ws._extensions = extensions; + } + this.emit("headers", headers, req); + socket.write(headers.concat("\r\n").join("\r\n")); + socket.removeListener("error", socketOnError); + ws.setSocket(socket, head, { + allowSynchronousEvents: this.options.allowSynchronousEvents, + maxPayload: this.options.maxPayload, + skipUTF8Validation: this.options.skipUTF8Validation + }); + if (this.clients) { + this.clients.add(ws); + ws.on("close", () => { + this.clients.delete(ws); + if (this._shouldEmitClose && !this.clients.size) { + process.nextTick(emitClose, this); + } + }); + } + cb(ws, req); + } + }; + module2.exports = WebSocketServer; + function addListeners(server, map) { + for (const event of Object.keys(map)) server.on(event, map[event]); + return function removeListeners() { + for (const event of Object.keys(map)) { + server.removeListener(event, map[event]); + } + }; + } + function emitClose(server) { + server._state = CLOSED; + server.emit("close"); + } + function socketOnError() { + this.destroy(); + } + function abortHandshake(socket, code, message, headers) { + message = message || http2.STATUS_CODES[code]; + headers = { + Connection: "close", + "Content-Type": "text/html", + "Content-Length": Buffer.byteLength(message), + ...headers + }; + socket.once("finish", socket.destroy); + socket.end( + `HTTP/1.1 ${code} ${http2.STATUS_CODES[code]}\r +` + Object.keys(headers).map((h) => `${h}: ${headers[h]}`).join("\r\n") + "\r\n\r\n" + message + ); + } + function abortHandshakeOrEmitwsClientError(server, req, socket, code, message) { + if (server.listenerCount("wsClientError")) { + const err2 = new Error(message); + Error.captureStackTrace(err2, abortHandshakeOrEmitwsClientError); + server.emit("wsClientError", err2, socket, req); + } else { + abortHandshake(socket, code, message); + } + } + } +}); + +// node_modules/ws/index.js +var require_ws4 = __commonJS({ + "node_modules/ws/index.js"(exports2, module2) { + "use strict"; + var WebSocket = require_websocket5(); + WebSocket.createWebSocketStream = require_stream4(); + WebSocket.Server = require_websocket_server3(); + WebSocket.Receiver = require_receiver3(); + WebSocket.Sender = require_sender3(); + WebSocket.WebSocket = WebSocket; + WebSocket.WebSocketServer = WebSocket.Server; + module2.exports = WebSocket; + } +}); + +// node_modules/@solana/rpc-subscriptions-channel-websocket/dist/index.node.cjs +var require_index_node27 = __commonJS({ + "node_modules/@solana/rpc-subscriptions-channel-websocket/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var events = __require("events"); + var subscribable = require_index_node23(); + var e2 = require_ws4(); + function _interopDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + var e2__default = /* @__PURE__ */ _interopDefault(e2); + var s = class extends globalThis.EventTarget { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this); + } + }; + var l = globalThis.WebSocket ? globalThis.WebSocket : e2__default.default; + var NORMAL_CLOSURE_CODE = 1e3; + function createWebSocketChannel({ + sendBufferHighWatermark, + signal, + url + }) { + if (signal.aborted) { + return Promise.reject(signal.reason); + } + let bufferDrainWatcher; + let hasConnected = false; + const listenerRemovers = /* @__PURE__ */ new Set(); + function cleanupListeners() { + listenerRemovers.forEach((r) => { + r(); + }); + listenerRemovers.clear(); + } + function handleAbort() { + cleanupListeners(); + if (!hasConnected) { + rejectOpen(signal.reason); + } + if (webSocket.readyState !== l.CLOSED && webSocket.readyState !== l.CLOSING) { + webSocket.close(NORMAL_CLOSURE_CODE); + } + } + function handleClose(ev) { + cleanupListeners(); + bufferDrainWatcher?.onCancel(); + signal.removeEventListener("abort", handleAbort); + webSocket.removeEventListener("close", handleClose); + webSocket.removeEventListener("error", handleError); + webSocket.removeEventListener("message", handleMessage); + webSocket.removeEventListener("open", handleOpen); + if (!signal.aborted && !(ev.wasClean && ev.code === NORMAL_CLOSURE_CODE)) { + eventTarget.dispatchEvent( + new CustomEvent("error", { + detail: new errors.SolanaError(errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED, { + cause: ev + }) + }) + ); + } + } + function handleError(ev) { + if (signal.aborted) { + return; + } + if (!hasConnected) { + const failedToConnectError = new errors.SolanaError(errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, { + errorEvent: ev + }); + rejectOpen(failedToConnectError); + eventTarget.dispatchEvent( + new CustomEvent("error", { + detail: failedToConnectError + }) + ); + } + } + function handleMessage(ev) { + if (signal.aborted) { + return; + } + eventTarget.dispatchEvent(new CustomEvent("message", { detail: ev.data })); + } + const eventTarget = new s(); + const dataPublisher = subscribable.getDataPublisherFromEventEmitter(eventTarget); + function handleOpen() { + hasConnected = true; + resolveOpen({ + ...dataPublisher, + async send(message) { + if (webSocket.readyState !== l.OPEN) { + throw new errors.SolanaError(errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED); + } + if (!bufferDrainWatcher && webSocket.bufferedAmount > sendBufferHighWatermark) { + let onCancel; + const promise = new Promise((resolve, reject) => { + const intervalId = setInterval(() => { + if (webSocket.readyState !== l.OPEN || !(webSocket.bufferedAmount > sendBufferHighWatermark)) { + clearInterval(intervalId); + bufferDrainWatcher = void 0; + resolve(); + } + }, 16); + onCancel = () => { + bufferDrainWatcher = void 0; + clearInterval(intervalId); + reject( + new errors.SolanaError( + errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED + ) + ); + }; + }); + bufferDrainWatcher = { + onCancel, + promise + }; + } + if (bufferDrainWatcher) { + if (ArrayBuffer.isView(message) && !(message instanceof DataView)) { + const TypedArrayConstructor = message.constructor; + message = new TypedArrayConstructor(message); + } + await bufferDrainWatcher.promise; + } + webSocket.send(message); + } + }); + } + const webSocket = new l(url); + signal.addEventListener("abort", handleAbort); + webSocket.addEventListener("close", handleClose); + webSocket.addEventListener("error", handleError); + webSocket.addEventListener("message", handleMessage); + webSocket.addEventListener("open", handleOpen); + let rejectOpen; + let resolveOpen; + return new Promise((resolve, reject) => { + rejectOpen = reject; + resolveOpen = resolve; + }); + } + exports2.createWebSocketChannel = createWebSocketChannel; + } +}); + +// node_modules/@solana/rpc-subscriptions/dist/index.node.cjs +var require_index_node28 = __commonJS({ + "node_modules/@solana/rpc-subscriptions/dist/index.node.cjs"(exports2) { + "use strict"; + var rpcSubscriptionsApi = require_index_node26(); + var rpcSubscriptionsSpec = require_index_node25(); + var errors = require_index_node(); + var rpcSubscriptionsChannelWebsocket = require_index_node27(); + var events = __require("events"); + var functional = require_index_node11(); + var rpcSpecTypes = require_index_node15(); + var fastStableStringify = require_index_node20(); + function _interopDefault(e2) { + return e2 && e2.__esModule ? e2 : { default: e2 }; + } + var fastStableStringify__default = /* @__PURE__ */ _interopDefault(fastStableStringify); + function createSolanaJsonRpcIntegerOverflowError(methodName, keyPath, value) { + let argumentLabel = ""; + if (typeof keyPath[0] === "number") { + const argPosition = keyPath[0] + 1; + const lastDigit = argPosition % 10; + const lastTwoDigits = argPosition % 100; + if (lastDigit == 1 && lastTwoDigits != 11) { + argumentLabel = argPosition + "st"; + } else if (lastDigit == 2 && lastTwoDigits != 12) { + argumentLabel = argPosition + "nd"; + } else if (lastDigit == 3 && lastTwoDigits != 13) { + argumentLabel = argPosition + "rd"; + } else { + argumentLabel = argPosition + "th"; + } + } else { + argumentLabel = `\`${keyPath[0].toString()}\``; + } + const path2 = keyPath.length > 1 ? keyPath.slice(1).map((pathPart) => typeof pathPart === "number" ? `[${pathPart}]` : pathPart).join(".") : void 0; + const error = new errors.SolanaError(errors.SOLANA_ERROR__RPC__INTEGER_OVERFLOW, { + argumentLabel, + keyPath, + methodName, + optionalPathLabel: path2 ? ` at path \`${path2}\`` : "", + value, + ...path2 !== void 0 ? { path: path2 } : void 0 + }); + errors.safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError); + return error; + } + var DEFAULT_RPC_SUBSCRIPTIONS_CONFIG = { + defaultCommitment: "confirmed", + onIntegerOverflow(request, keyPath, value) { + throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value); + } + }; + var e = class extends globalThis.AbortController { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal); + } + }; + var PING_PAYLOAD = { + jsonrpc: "2.0", + method: "ping" + }; + function getRpcSubscriptionsChannelWithAutoping({ + abortSignal: callerAbortSignal, + channel, + intervalMs + }) { + let intervalId; + function sendPing() { + channel.send(PING_PAYLOAD).catch((e2) => { + if (errors.isSolanaError(e2, errors.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) { + pingerAbortController.abort(); + } + }); + } + function restartPingTimer() { + clearInterval(intervalId); + intervalId = setInterval(sendPing, intervalMs); + } + const pingerAbortController = new e(); + pingerAbortController.signal.addEventListener("abort", () => { + clearInterval(intervalId); + }); + callerAbortSignal.addEventListener("abort", () => { + pingerAbortController.abort(); + }); + channel.on( + "error", + () => { + pingerAbortController.abort(); + }, + { signal: pingerAbortController.signal } + ); + channel.on("message", restartPingTimer, { signal: pingerAbortController.signal }); + { + restartPingTimer(); + } + return { + ...channel, + send(...args) { + if (!pingerAbortController.signal.aborted) { + restartPingTimer(); + } + return channel.send(...args); + } + }; + } + function createChannelPool() { + return { + entries: [], + freeChannelIndex: -1 + }; + } + function getChannelPoolingChannelCreator(createChannel, { maxSubscriptionsPerChannel, minChannels }) { + const pool = createChannelPool(); + function recomputeFreeChannelIndex() { + if (pool.entries.length < minChannels) { + pool.freeChannelIndex = -1; + return; + } + let mostFreeChannel; + for (let ii = 0; ii < pool.entries.length; ii++) { + const nextPoolIndex = (pool.freeChannelIndex + ii + 2) % pool.entries.length; + const nextPoolEntry = ( + // Start from the item two positions after the current item. This way, the + // search will finish on the item after the current one. This ensures that, if + // any channels tie for having the most capacity, the one that will be chosen is + // the one immediately to the current one's right (wrapping around). + pool.entries[nextPoolIndex] + ); + if (nextPoolEntry.subscriptionCount < maxSubscriptionsPerChannel && (!mostFreeChannel || mostFreeChannel.subscriptionCount >= nextPoolEntry.subscriptionCount)) { + mostFreeChannel = { + poolIndex: nextPoolIndex, + subscriptionCount: nextPoolEntry.subscriptionCount + }; + } + } + pool.freeChannelIndex = mostFreeChannel?.poolIndex ?? -1; + } + return function getExistingChannelWithMostCapacityOrCreateChannel({ abortSignal }) { + let poolEntry; + function destroyPoolEntry() { + const index = pool.entries.findIndex((entry) => entry === poolEntry); + pool.entries.splice(index, 1); + poolEntry.dispose(); + recomputeFreeChannelIndex(); + } + if (pool.freeChannelIndex === -1) { + const abortController = new e(); + const newChannelPromise = createChannel({ abortSignal: abortController.signal }); + newChannelPromise.then((newChannel) => { + newChannel.on("error", destroyPoolEntry, { signal: abortController.signal }); + }).catch(destroyPoolEntry); + poolEntry = { + channel: newChannelPromise, + dispose() { + abortController.abort(); + }, + subscriptionCount: 0 + }; + pool.entries.push(poolEntry); + } else { + poolEntry = pool.entries[pool.freeChannelIndex]; + } + poolEntry.subscriptionCount++; + abortSignal.addEventListener("abort", function destroyConsumer() { + poolEntry.subscriptionCount--; + if (poolEntry.subscriptionCount === 0) { + destroyPoolEntry(); + } else if (pool.freeChannelIndex !== -1) { + pool.freeChannelIndex--; + recomputeFreeChannelIndex(); + } + }); + recomputeFreeChannelIndex(); + return poolEntry.channel; + }; + } + function getRpcSubscriptionsChannelWithJSONSerialization(channel) { + return functional.pipe( + channel, + (c) => rpcSubscriptionsSpec.transformChannelInboundMessages(c, JSON.parse), + (c) => rpcSubscriptionsSpec.transformChannelOutboundMessages(c, JSON.stringify) + ); + } + function getRpcSubscriptionsChannelWithBigIntJSONSerialization(channel) { + return functional.pipe( + channel, + (c) => rpcSubscriptionsSpec.transformChannelInboundMessages(c, rpcSpecTypes.parseJsonWithBigInts), + (c) => rpcSubscriptionsSpec.transformChannelOutboundMessages(c, rpcSpecTypes.stringifyJsonWithBigints) + ); + } + function createDefaultSolanaRpcSubscriptionsChannelCreator(config2) { + return createDefaultRpcSubscriptionsChannelCreatorImpl({ + ...config2, + jsonSerializer: getRpcSubscriptionsChannelWithBigIntJSONSerialization + }); + } + function createDefaultRpcSubscriptionsChannelCreator(config2) { + return createDefaultRpcSubscriptionsChannelCreatorImpl({ + ...config2, + jsonSerializer: getRpcSubscriptionsChannelWithJSONSerialization + }); + } + function createDefaultRpcSubscriptionsChannelCreatorImpl(config2) { + if (/^wss?:/i.test(config2.url) === false) { + const protocolMatch = config2.url.match(/^([^:]+):/); + throw new DOMException( + protocolMatch ? `Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. '${protocolMatch[1]}:' is not allowed.` : `Failed to construct 'WebSocket': The URL '${config2.url}' is invalid.` + ); + } + const { intervalMs, ...rest } = config2; + const createDefaultRpcSubscriptionsChannel = ({ abortSignal }) => { + return rpcSubscriptionsChannelWebsocket.createWebSocketChannel({ + ...rest, + sendBufferHighWatermark: config2.sendBufferHighWatermark ?? // Let 128KB of data into the WebSocket buffer before buffering it in the app. + 131072, + signal: abortSignal + }).then(config2.jsonSerializer).then( + (channel) => getRpcSubscriptionsChannelWithAutoping({ + abortSignal, + channel, + intervalMs: intervalMs ?? 5e3 + }) + ); + }; + return getChannelPoolingChannelCreator(createDefaultRpcSubscriptionsChannel, { + maxSubscriptionsPerChannel: config2.maxSubscriptionsPerChannel ?? /** + * A note about this default. The idea here is that, because some RPC providers impose + * an upper limit on the number of subscriptions you can make per channel, we must + * choose a number low enough to avoid hitting that limit. Without knowing what provider + * a given person is using, or what their limit is, we have to choose the lowest of all + * known limits. As of this writing (October 2024) that is the public mainnet RPC node + * (api.mainnet-beta.solana.com) at 100 subscriptions. + */ + 100, + minChannels: config2.minChannels ?? 1 + }); + } + function getRpcSubscriptionsTransportWithSubscriptionCoalescing(transport) { + const cache = /* @__PURE__ */ new Map(); + return function rpcSubscriptionsTransportWithSubscriptionCoalescing(config2) { + const { request, signal } = config2; + const subscriptionConfigurationHash = fastStableStringify__default.default([request.methodName, request.params]); + let cachedDataPublisherPromise = cache.get(subscriptionConfigurationHash); + if (!cachedDataPublisherPromise) { + const abortController = new e(); + const dataPublisherPromise = transport({ + ...config2, + signal: abortController.signal + }); + dataPublisherPromise.then((dataPublisher) => { + dataPublisher.on( + "error", + () => { + cache.delete(subscriptionConfigurationHash); + abortController.abort(); + }, + { signal: abortController.signal } + ); + }).catch(() => { + }); + cache.set( + subscriptionConfigurationHash, + cachedDataPublisherPromise = { + abortController, + dataPublisherPromise, + numSubscribers: 0 + } + ); + } + cachedDataPublisherPromise.numSubscribers++; + signal.addEventListener( + "abort", + () => { + cachedDataPublisherPromise.numSubscribers--; + if (cachedDataPublisherPromise.numSubscribers === 0) { + queueMicrotask(() => { + if (cachedDataPublisherPromise.numSubscribers === 0) { + cache.delete(subscriptionConfigurationHash); + cachedDataPublisherPromise.abortController.abort(); + } + }); + } + }, + { signal: cachedDataPublisherPromise.abortController.signal } + ); + return cachedDataPublisherPromise.dataPublisherPromise; + }; + } + function createDefaultRpcSubscriptionsTransport({ + createChannel + }) { + return functional.pipe( + createRpcSubscriptionsTransportFromChannelCreator( + createChannel + ), + (transport) => getRpcSubscriptionsTransportWithSubscriptionCoalescing(transport) + ); + } + function createRpcSubscriptionsTransportFromChannelCreator(createChannel) { + return async ({ execute, signal }) => { + const channel = await createChannel({ abortSignal: signal }); + return await execute({ channel, signal }); + }; + } + function createSolanaRpcSubscriptionsImpl(clusterUrl, config2) { + const transport = createDefaultRpcSubscriptionsTransport({ + createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({ ...config2, url: clusterUrl }) + }); + return createSolanaRpcSubscriptionsFromTransport(transport); + } + function createSolanaRpcSubscriptions(clusterUrl, config2) { + return createSolanaRpcSubscriptionsImpl(clusterUrl, config2); + } + function createSolanaRpcSubscriptions_UNSTABLE(clusterUrl, config2) { + return createSolanaRpcSubscriptionsImpl( + clusterUrl, + config2 + ); + } + function createSolanaRpcSubscriptionsFromTransport(transport) { + return rpcSubscriptionsSpec.createSubscriptionRpc({ + api: rpcSubscriptionsApi.createSolanaRpcSubscriptionsApi(DEFAULT_RPC_SUBSCRIPTIONS_CONFIG), + transport + }); + } + exports2.DEFAULT_RPC_SUBSCRIPTIONS_CONFIG = DEFAULT_RPC_SUBSCRIPTIONS_CONFIG; + exports2.createDefaultRpcSubscriptionsChannelCreator = createDefaultRpcSubscriptionsChannelCreator; + exports2.createDefaultRpcSubscriptionsTransport = createDefaultRpcSubscriptionsTransport; + exports2.createDefaultSolanaRpcSubscriptionsChannelCreator = createDefaultSolanaRpcSubscriptionsChannelCreator; + exports2.createRpcSubscriptionsTransportFromChannelCreator = createRpcSubscriptionsTransportFromChannelCreator; + exports2.createSolanaRpcSubscriptions = createSolanaRpcSubscriptions; + exports2.createSolanaRpcSubscriptionsFromTransport = createSolanaRpcSubscriptionsFromTransport; + exports2.createSolanaRpcSubscriptions_UNSTABLE = createSolanaRpcSubscriptions_UNSTABLE; + exports2.getRpcSubscriptionsChannelWithJSONSerialization = getRpcSubscriptionsChannelWithJSONSerialization; + Object.keys(rpcSubscriptionsApi).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcSubscriptionsApi[k]; + } + }); + }); + Object.keys(rpcSubscriptionsSpec).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcSubscriptionsSpec[k]; + } + }); + }); + } +}); + +// node_modules/@solana/rpc-types/dist/index.node.cjs +var require_index_node29 = __commonJS({ + "node_modules/@solana/rpc-types/dist/index.node.cjs"(exports2) { + "use strict"; + var addresses = require_index_node6(); + var codecsCore = require_index_node2(); + var errors = require_index_node(); + var codecsNumbers = require_index_node7(); + function isBlockhash(putativeBlockhash) { + return addresses.isAddress(putativeBlockhash); + } + function assertIsBlockhash(putativeBlockhash) { + try { + addresses.assertIsAddress(putativeBlockhash); + } catch (error) { + if (errors.isSolanaError(error, errors.SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, error.context); + } + if (errors.isSolanaError(error, errors.SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, error.context); + } + throw error; + } + } + function blockhash(putativeBlockhash) { + assertIsBlockhash(putativeBlockhash); + return putativeBlockhash; + } + function getBlockhashEncoder() { + const addressEncoder = addresses.getAddressEncoder(); + return codecsCore.createEncoder({ + fixedSize: 32, + write: (value, bytes, offset) => { + assertIsBlockhash(value); + return addressEncoder.write(value, bytes, offset); + } + }); + } + function getBlockhashDecoder() { + return addresses.getAddressDecoder(); + } + function getBlockhashCodec() { + return codecsCore.combineCodec(getBlockhashEncoder(), getBlockhashDecoder()); + } + function getBlockhashComparator() { + return new Intl.Collator("en", { + caseFirst: "lower", + ignorePunctuation: false, + localeMatcher: "best fit", + numeric: false, + sensitivity: "variant", + usage: "sort" + }).compare; + } + function mainnet(putativeString) { + return putativeString; + } + function devnet(putativeString) { + return putativeString; + } + function testnet(putativeString) { + return putativeString; + } + function getCommitmentScore(commitment) { + switch (commitment) { + case "finalized": + return 2; + case "confirmed": + return 1; + case "processed": + return 0; + default: + throw new errors.SolanaError(errors.SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, { + unexpectedValue: commitment + }); + } + } + function commitmentComparator(a, b) { + if (a === b) { + return 0; + } + return getCommitmentScore(a) < getCommitmentScore(b) ? -1 : 1; + } + var maxU64Value = 18446744073709551615n; + var memoizedU64Encoder; + var memoizedU64Decoder; + function getMemoizedU64Encoder() { + if (!memoizedU64Encoder) memoizedU64Encoder = codecsNumbers.getU64Encoder(); + return memoizedU64Encoder; + } + function getMemoizedU64Decoder() { + if (!memoizedU64Decoder) memoizedU64Decoder = codecsNumbers.getU64Decoder(); + return memoizedU64Decoder; + } + function isLamports(putativeLamports) { + return putativeLamports >= 0 && putativeLamports <= maxU64Value; + } + function assertIsLamports(putativeLamports) { + if (putativeLamports < 0 || putativeLamports > maxU64Value) { + throw new errors.SolanaError(errors.SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE); + } + } + function lamports(putativeLamports) { + assertIsLamports(putativeLamports); + return putativeLamports; + } + function getDefaultLamportsEncoder() { + return getLamportsEncoder(getMemoizedU64Encoder()); + } + function getLamportsEncoder(innerEncoder) { + return innerEncoder; + } + function getDefaultLamportsDecoder() { + return getLamportsDecoder(getMemoizedU64Decoder()); + } + function getLamportsDecoder(innerDecoder) { + return codecsCore.transformDecoder( + innerDecoder, + (value) => lamports(typeof value === "bigint" ? value : BigInt(value)) + ); + } + function getDefaultLamportsCodec() { + return codecsCore.combineCodec(getDefaultLamportsEncoder(), getDefaultLamportsDecoder()); + } + function getLamportsCodec(innerCodec) { + return codecsCore.combineCodec(getLamportsEncoder(innerCodec), getLamportsDecoder(innerCodec)); + } + function isStringifiedBigInt(putativeBigInt) { + try { + BigInt(putativeBigInt); + return true; + } catch { + return false; + } + } + function assertIsStringifiedBigInt(putativeBigInt) { + try { + BigInt(putativeBigInt); + } catch { + throw new errors.SolanaError(errors.SOLANA_ERROR__MALFORMED_BIGINT_STRING, { + value: putativeBigInt + }); + } + } + function stringifiedBigInt(putativeBigInt) { + assertIsStringifiedBigInt(putativeBigInt); + return putativeBigInt; + } + function isStringifiedNumber(putativeNumber) { + return !Number.isNaN(Number(putativeNumber)); + } + function assertIsStringifiedNumber(putativeNumber) { + if (Number.isNaN(Number(putativeNumber))) { + throw new errors.SolanaError(errors.SOLANA_ERROR__MALFORMED_NUMBER_STRING, { + value: putativeNumber + }); + } + } + function stringifiedNumber(putativeNumber) { + assertIsStringifiedNumber(putativeNumber); + return putativeNumber; + } + var maxI64Value = 9223372036854775807n; + var minI64Value = -9223372036854775808n; + function isUnixTimestamp(putativeTimestamp) { + return putativeTimestamp >= minI64Value && putativeTimestamp <= maxI64Value; + } + function assertIsUnixTimestamp(putativeTimestamp) { + if (putativeTimestamp < minI64Value || putativeTimestamp > maxI64Value) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, { + value: putativeTimestamp + }); + } + } + function unixTimestamp(putativeTimestamp) { + assertIsUnixTimestamp(putativeTimestamp); + return putativeTimestamp; + } + exports2.assertIsBlockhash = assertIsBlockhash; + exports2.assertIsLamports = assertIsLamports; + exports2.assertIsStringifiedBigInt = assertIsStringifiedBigInt; + exports2.assertIsStringifiedNumber = assertIsStringifiedNumber; + exports2.assertIsUnixTimestamp = assertIsUnixTimestamp; + exports2.blockhash = blockhash; + exports2.commitmentComparator = commitmentComparator; + exports2.devnet = devnet; + exports2.getBlockhashCodec = getBlockhashCodec; + exports2.getBlockhashComparator = getBlockhashComparator; + exports2.getBlockhashDecoder = getBlockhashDecoder; + exports2.getBlockhashEncoder = getBlockhashEncoder; + exports2.getDefaultLamportsCodec = getDefaultLamportsCodec; + exports2.getDefaultLamportsDecoder = getDefaultLamportsDecoder; + exports2.getDefaultLamportsEncoder = getDefaultLamportsEncoder; + exports2.getLamportsCodec = getLamportsCodec; + exports2.getLamportsDecoder = getLamportsDecoder; + exports2.getLamportsEncoder = getLamportsEncoder; + exports2.isBlockhash = isBlockhash; + exports2.isLamports = isLamports; + exports2.isStringifiedBigInt = isStringifiedBigInt; + exports2.isStringifiedNumber = isStringifiedNumber; + exports2.isUnixTimestamp = isUnixTimestamp; + exports2.lamports = lamports; + exports2.mainnet = mainnet; + exports2.stringifiedBigInt = stringifiedBigInt; + exports2.stringifiedNumber = stringifiedNumber; + exports2.testnet = testnet; + exports2.unixTimestamp = unixTimestamp; + } +}); + +// node_modules/@solana/transaction-messages/dist/index.node.cjs +var require_index_node30 = __commonJS({ + "node_modules/@solana/transaction-messages/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var rpcTypes = require_index_node29(); + var addresses = require_index_node6(); + var codecsCore = require_index_node2(); + var codecsDataStructures = require_index_node8(); + var codecsNumbers = require_index_node7(); + var instructions = require_index_node12(); + var functional = require_index_node11(); + function isTransactionMessageWithBlockhashLifetime(transactionMessage) { + return "lifetimeConstraint" in transactionMessage && typeof transactionMessage.lifetimeConstraint.blockhash === "string" && typeof transactionMessage.lifetimeConstraint.lastValidBlockHeight === "bigint" && rpcTypes.isBlockhash(transactionMessage.lifetimeConstraint.blockhash); + } + function assertIsTransactionMessageWithBlockhashLifetime(transactionMessage) { + if (!isTransactionMessageWithBlockhashLifetime(transactionMessage)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME); + } + } + function setTransactionMessageLifetimeUsingBlockhash(blockhashLifetimeConstraint, transactionMessage) { + if ("lifetimeConstraint" in transactionMessage && transactionMessage.lifetimeConstraint && "blockhash" in transactionMessage.lifetimeConstraint && transactionMessage.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash && transactionMessage.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight) { + return transactionMessage; + } + return Object.freeze({ + ...transactionMessage, + lifetimeConstraint: Object.freeze(blockhashLifetimeConstraint) + }); + } + function assertValidBaseString(alphabet4, testValue, givenValue = testValue) { + if (!testValue.match(new RegExp(`^[${alphabet4}]*$`))) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, { + alphabet: alphabet4, + base: alphabet4.length, + value: givenValue + }); + } + } + var getBaseXEncoder = (alphabet4) => { + return codecsCore.createEncoder({ + getSizeFromValue: (value) => { + const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]); + if (!tailChars) return value.length; + const base10Number = getBigIntFromBaseX(tailChars, alphabet4); + return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2); + }, + write(value, bytes, offset) { + assertValidBaseString(alphabet4, value); + if (value === "") return offset; + const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet4[0]); + if (!tailChars) { + bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset); + return offset + leadingZeroes.length; + } + let base10Number = getBigIntFromBaseX(tailChars, alphabet4); + const tailBytes = []; + while (base10Number > 0n) { + tailBytes.unshift(Number(base10Number % 256n)); + base10Number /= 256n; + } + const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes]; + bytes.set(bytesToAdd, offset); + return offset + bytesToAdd.length; + } + }); + }; + var getBaseXDecoder = (alphabet4) => { + return codecsCore.createDecoder({ + read(rawBytes, offset) { + const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset); + if (bytes.length === 0) return ["", 0]; + let trailIndex = bytes.findIndex((n) => n !== 0); + trailIndex = trailIndex === -1 ? bytes.length : trailIndex; + const leadingZeroes = alphabet4[0].repeat(trailIndex); + if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length]; + const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n); + const tailChars = getBaseXFromBigInt(base10Number, alphabet4); + return [leadingZeroes + tailChars, rawBytes.length]; + } + }); + }; + function partitionLeadingZeroes(value, zeroCharacter) { + const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`)); + return [leadingZeros, tailChars]; + } + function getBigIntFromBaseX(value, alphabet4) { + const base = BigInt(alphabet4.length); + let sum = 0n; + for (const char of value) { + sum *= base; + sum += BigInt(alphabet4.indexOf(char)); + } + return sum; + } + function getBaseXFromBigInt(value, alphabet4) { + const base = BigInt(alphabet4.length); + const tailChars = []; + while (value > 0n) { + tailChars.unshift(alphabet4[Number(value % base)]); + value /= base; + } + return tailChars.join(""); + } + var alphabet2 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + var getBase58Encoder = () => getBaseXEncoder(alphabet2); + var getBase58Decoder = () => getBaseXDecoder(alphabet2); + var memoizedAddressTableLookupEncoder; + function getAddressTableLookupEncoder() { + if (!memoizedAddressTableLookupEncoder) { + const indexEncoder = codecsDataStructures.getArrayEncoder(codecsNumbers.getU8Encoder(), { size: codecsNumbers.getShortU16Encoder() }); + memoizedAddressTableLookupEncoder = codecsDataStructures.getStructEncoder([ + ["lookupTableAddress", addresses.getAddressEncoder()], + ["writableIndexes", indexEncoder], + ["readonlyIndexes", indexEncoder] + ]); + } + return memoizedAddressTableLookupEncoder; + } + var memoizedAddressTableLookupDecoder; + function getAddressTableLookupDecoder() { + if (!memoizedAddressTableLookupDecoder) { + const indexEncoder = codecsDataStructures.getArrayDecoder(codecsNumbers.getU8Decoder(), { size: codecsNumbers.getShortU16Decoder() }); + memoizedAddressTableLookupDecoder = codecsCore.transformDecoder( + codecsDataStructures.getStructDecoder([ + ["lookupTableAddress", addresses.getAddressDecoder()], + ["writableIndexes", indexEncoder], + ["readonlyIndexes", indexEncoder] + ]), + (lookupTable) => "readableIndices" in lookupTable ? { + ...lookupTable, + readonlyIndexes: lookupTable.readableIndices, + // @ts-expect-error Remove when `readableIndices` and `writableIndices` are removed. + writableIndexes: lookupTable.writableIndices + } : lookupTable + ); + } + return memoizedAddressTableLookupDecoder; + } + var memoizedU8Encoder; + function getMemoizedU8Encoder() { + if (!memoizedU8Encoder) memoizedU8Encoder = codecsNumbers.getU8Encoder(); + return memoizedU8Encoder; + } + var memoizedU8Decoder; + function getMemoizedU8Decoder() { + if (!memoizedU8Decoder) memoizedU8Decoder = codecsNumbers.getU8Decoder(); + return memoizedU8Decoder; + } + function getMessageHeaderEncoder() { + return codecsDataStructures.getStructEncoder([ + ["numSignerAccounts", getMemoizedU8Encoder()], + ["numReadonlySignerAccounts", getMemoizedU8Encoder()], + ["numReadonlyNonSignerAccounts", getMemoizedU8Encoder()] + ]); + } + function getMessageHeaderDecoder() { + return codecsDataStructures.getStructDecoder([ + ["numSignerAccounts", getMemoizedU8Decoder()], + ["numReadonlySignerAccounts", getMemoizedU8Decoder()], + ["numReadonlyNonSignerAccounts", getMemoizedU8Decoder()] + ]); + } + var memoizedGetInstructionEncoder; + function getInstructionEncoder() { + if (!memoizedGetInstructionEncoder) { + memoizedGetInstructionEncoder = codecsCore.transformEncoder( + codecsDataStructures.getStructEncoder([ + ["programAddressIndex", codecsNumbers.getU8Encoder()], + ["accountIndices", codecsDataStructures.getArrayEncoder(codecsNumbers.getU8Encoder(), { size: codecsNumbers.getShortU16Encoder() })], + ["data", codecsCore.addEncoderSizePrefix(codecsDataStructures.getBytesEncoder(), codecsNumbers.getShortU16Encoder())] + ]), + // Convert an instruction to have all fields defined + (instruction) => { + if (instruction.accountIndices !== void 0 && instruction.data !== void 0) { + return instruction; + } + return { + ...instruction, + accountIndices: instruction.accountIndices ?? [], + data: instruction.data ?? new Uint8Array(0) + }; + } + ); + } + return memoizedGetInstructionEncoder; + } + var memoizedGetInstructionDecoder; + function getInstructionDecoder() { + if (!memoizedGetInstructionDecoder) { + memoizedGetInstructionDecoder = codecsCore.transformDecoder( + codecsDataStructures.getStructDecoder([ + ["programAddressIndex", codecsNumbers.getU8Decoder()], + ["accountIndices", codecsDataStructures.getArrayDecoder(codecsNumbers.getU8Decoder(), { size: codecsNumbers.getShortU16Decoder() })], + [ + "data", + codecsCore.addDecoderSizePrefix(codecsDataStructures.getBytesDecoder(), codecsNumbers.getShortU16Decoder()) + ] + ]), + // Convert an instruction to exclude optional fields if they are empty + (instruction) => { + if (instruction.accountIndices.length && instruction.data.byteLength) { + return instruction; + } + const { accountIndices, data, ...rest } = instruction; + return { + ...rest, + ...accountIndices.length ? { accountIndices } : null, + ...data.byteLength ? { data } : null + }; + } + ); + } + return memoizedGetInstructionDecoder; + } + var VERSION_FLAG_MASK = 128; + function getTransactionVersionEncoder() { + return codecsCore.createEncoder({ + getSizeFromValue: (value) => value === "legacy" ? 0 : 1, + maxSize: 1, + write: (value, bytes, offset) => { + if (value === "legacy") { + return offset; + } + if (value < 0 || value > 127) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, { + actualVersion: value + }); + } + bytes.set([value | VERSION_FLAG_MASK], offset); + return offset + 1; + } + }); + } + function getTransactionVersionDecoder() { + return codecsCore.createDecoder({ + maxSize: 1, + read: (bytes, offset) => { + const firstByte = bytes[offset]; + if ((firstByte & VERSION_FLAG_MASK) === 0) { + return ["legacy", offset]; + } else { + const version = firstByte ^ VERSION_FLAG_MASK; + return [version, offset + 1]; + } + } + }); + } + function getTransactionVersionCodec() { + return codecsCore.combineCodec(getTransactionVersionEncoder(), getTransactionVersionDecoder()); + } + function getCompiledMessageLegacyEncoder() { + return codecsDataStructures.getStructEncoder(getPreludeStructEncoderTuple()); + } + function getCompiledMessageVersionedEncoder() { + return codecsCore.transformEncoder( + codecsDataStructures.getStructEncoder([ + ...getPreludeStructEncoderTuple(), + ["addressTableLookups", getAddressTableLookupArrayEncoder()] + ]), + (value) => { + if (value.version === "legacy") { + return value; + } + return { + ...value, + addressTableLookups: value.addressTableLookups ?? [] + }; + } + ); + } + function getPreludeStructEncoderTuple() { + return [ + ["version", getTransactionVersionEncoder()], + ["header", getMessageHeaderEncoder()], + ["staticAccounts", codecsDataStructures.getArrayEncoder(addresses.getAddressEncoder(), { size: codecsNumbers.getShortU16Encoder() })], + ["lifetimeToken", codecsCore.fixEncoderSize(getBase58Encoder(), 32)], + ["instructions", codecsDataStructures.getArrayEncoder(getInstructionEncoder(), { size: codecsNumbers.getShortU16Encoder() })] + ]; + } + function getPreludeStructDecoderTuple() { + return [ + ["version", getTransactionVersionDecoder()], + ["header", getMessageHeaderDecoder()], + ["staticAccounts", codecsDataStructures.getArrayDecoder(addresses.getAddressDecoder(), { size: codecsNumbers.getShortU16Decoder() })], + ["lifetimeToken", codecsCore.fixDecoderSize(getBase58Decoder(), 32)], + ["instructions", codecsDataStructures.getArrayDecoder(getInstructionDecoder(), { size: codecsNumbers.getShortU16Decoder() })], + ["addressTableLookups", getAddressTableLookupArrayDecoder()] + ]; + } + function getAddressTableLookupArrayEncoder() { + return codecsDataStructures.getArrayEncoder(getAddressTableLookupEncoder(), { size: codecsNumbers.getShortU16Encoder() }); + } + function getAddressTableLookupArrayDecoder() { + return codecsDataStructures.getArrayDecoder(getAddressTableLookupDecoder(), { size: codecsNumbers.getShortU16Decoder() }); + } + function getCompiledTransactionMessageEncoder() { + return codecsCore.createEncoder({ + getSizeFromValue: (compiledMessage) => { + if (compiledMessage.version === "legacy") { + return getCompiledMessageLegacyEncoder().getSizeFromValue(compiledMessage); + } else { + return getCompiledMessageVersionedEncoder().getSizeFromValue(compiledMessage); + } + }, + write: (compiledMessage, bytes, offset) => { + if (compiledMessage.version === "legacy") { + return getCompiledMessageLegacyEncoder().write(compiledMessage, bytes, offset); + } else { + return getCompiledMessageVersionedEncoder().write(compiledMessage, bytes, offset); + } + } + }); + } + function getCompiledTransactionMessageDecoder() { + return codecsCore.transformDecoder( + codecsDataStructures.getStructDecoder(getPreludeStructDecoderTuple()), + ({ addressTableLookups, ...restOfMessage }) => { + if (restOfMessage.version === "legacy" || !addressTableLookups?.length) { + return restOfMessage; + } + return { ...restOfMessage, addressTableLookups }; + } + ); + } + function getCompiledTransactionMessageCodec() { + return codecsCore.combineCodec(getCompiledTransactionMessageEncoder(), getCompiledTransactionMessageDecoder()); + } + function upsert(addressMap, address, update) { + addressMap[address] = update(addressMap[address] ?? { role: instructions.AccountRole.READONLY }); + } + var TYPE = Symbol("AddressMapTypeProperty"); + function getAddressMapFromInstructions(feePayer, instructions$1) { + const addressMap = { + [feePayer]: { [TYPE]: 0, role: instructions.AccountRole.WRITABLE_SIGNER } + }; + const addressesOfInvokedPrograms = /* @__PURE__ */ new Set(); + for (const instruction of instructions$1) { + upsert(addressMap, instruction.programAddress, (entry) => { + addressesOfInvokedPrograms.add(instruction.programAddress); + if (TYPE in entry) { + if (instructions.isWritableRole(entry.role)) { + switch (entry[TYPE]) { + case 0: + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, { + programAddress: instruction.programAddress + }); + default: + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, { + programAddress: instruction.programAddress + }); + } + } + if (entry[TYPE] === 2) { + return entry; + } + } + return { [TYPE]: 2, role: instructions.AccountRole.READONLY }; + }); + let addressComparator; + if (!instruction.accounts) { + continue; + } + for (const account of instruction.accounts) { + upsert(addressMap, account.address, (entry) => { + const { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + address: _, + ...accountMeta + } = account; + if (TYPE in entry) { + switch (entry[TYPE]) { + case 0: + return entry; + case 1: { + const nextRole = instructions.mergeRoles(entry.role, accountMeta.role); + if ("lookupTableAddress" in accountMeta) { + const shouldReplaceEntry = ( + // Consider using the new LOOKUP_TABLE if its address is different... + entry.lookupTableAddress !== accountMeta.lookupTableAddress && // ...and sorts before the existing one. + (addressComparator ||= addresses.getAddressComparator())( + accountMeta.lookupTableAddress, + entry.lookupTableAddress + ) < 0 + ); + if (shouldReplaceEntry) { + return { + [TYPE]: 1, + ...accountMeta, + role: nextRole + }; + } + } else if (instructions.isSignerRole(accountMeta.role)) { + return { + [TYPE]: 2, + role: nextRole + }; + } + if (entry.role !== nextRole) { + return { + ...entry, + role: nextRole + }; + } else { + return entry; + } + } + case 2: { + const nextRole = instructions.mergeRoles(entry.role, accountMeta.role); + if ( + // Check to see if this address represents a program that is invoked + // in this transaction. + addressesOfInvokedPrograms.has(account.address) + ) { + if (instructions.isWritableRole(accountMeta.role)) { + throw new errors.SolanaError( + errors.SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, + { + programAddress: account.address + } + ); + } + if (entry.role !== nextRole) { + return { + ...entry, + role: nextRole + }; + } else { + return entry; + } + } else if ("lookupTableAddress" in accountMeta && // Static accounts can be 'upgraded' to lookup table accounts as + // long as they are not require to sign the transaction. + !instructions.isSignerRole(entry.role)) { + return { + ...accountMeta, + [TYPE]: 1, + role: nextRole + }; + } else { + if (entry.role !== nextRole) { + return { + ...entry, + role: nextRole + }; + } else { + return entry; + } + } + } + } + } + if ("lookupTableAddress" in accountMeta) { + return { + ...accountMeta, + [TYPE]: 1 + /* LOOKUP_TABLE */ + }; + } else { + return { + ...accountMeta, + [TYPE]: 2 + /* STATIC */ + }; + } + }); + } + } + return addressMap; + } + function getOrderedAccountsFromAddressMap(addressMap) { + let addressComparator; + const orderedAccounts = Object.entries(addressMap).sort(([leftAddress, leftEntry], [rightAddress, rightEntry]) => { + if (leftEntry[TYPE] !== rightEntry[TYPE]) { + if (leftEntry[TYPE] === 0) { + return -1; + } else if (rightEntry[TYPE] === 0) { + return 1; + } else if (leftEntry[TYPE] === 2) { + return -1; + } else if (rightEntry[TYPE] === 2) { + return 1; + } + } + const leftIsSigner = instructions.isSignerRole(leftEntry.role); + if (leftIsSigner !== instructions.isSignerRole(rightEntry.role)) { + return leftIsSigner ? -1 : 1; + } + const leftIsWritable = instructions.isWritableRole(leftEntry.role); + if (leftIsWritable !== instructions.isWritableRole(rightEntry.role)) { + return leftIsWritable ? -1 : 1; + } + addressComparator ||= addresses.getAddressComparator(); + if (leftEntry[TYPE] === 1 && rightEntry[TYPE] === 1 && leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress) { + return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress); + } else { + return addressComparator(leftAddress, rightAddress); + } + }).map(([address, addressMeta]) => ({ + address, + ...addressMeta + })); + return orderedAccounts; + } + function getCompiledAddressTableLookups(orderedAccounts) { + const index = {}; + for (const account of orderedAccounts) { + if (!("lookupTableAddress" in account)) { + continue; + } + const entry = index[account.lookupTableAddress] ||= { + /** @deprecated Remove in a future major version */ + readableIndices: [], + readonlyIndexes: [], + writableIndexes: [], + /** @deprecated Remove in a future major version */ + writableIndices: [] + }; + if (account.role === instructions.AccountRole.WRITABLE) { + entry.writableIndexes.push(account.addressIndex); + entry.writableIndices.push(account.addressIndex); + } else { + entry.readableIndices.push(account.addressIndex); + entry.readonlyIndexes.push(account.addressIndex); + } + } + return Object.keys(index).sort(addresses.getAddressComparator()).map((lookupTableAddress) => ({ + lookupTableAddress, + ...index[lookupTableAddress] + })); + } + function getCompiledMessageHeader(orderedAccounts) { + let numReadonlyNonSignerAccounts = 0; + let numReadonlySignerAccounts = 0; + let numSignerAccounts = 0; + for (const account of orderedAccounts) { + if ("lookupTableAddress" in account) { + break; + } + const accountIsWritable = instructions.isWritableRole(account.role); + if (instructions.isSignerRole(account.role)) { + numSignerAccounts++; + if (!accountIsWritable) { + numReadonlySignerAccounts++; + } + } else if (!accountIsWritable) { + numReadonlyNonSignerAccounts++; + } + } + return { + numReadonlyNonSignerAccounts, + numReadonlySignerAccounts, + numSignerAccounts + }; + } + function getAccountIndex(orderedAccounts) { + const out = {}; + for (const [index, account] of orderedAccounts.entries()) { + out[account.address] = index; + } + return out; + } + function getCompiledInstructions(instructions2, orderedAccounts) { + const accountIndex = getAccountIndex(orderedAccounts); + return instructions2.map(({ accounts, data, programAddress }) => { + return { + programAddressIndex: accountIndex[programAddress], + ...accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[address]) } : null, + ...data ? { data } : null + }; + }); + } + function getCompiledLifetimeToken(lifetimeConstraint) { + if ("nonce" in lifetimeConstraint) { + return lifetimeConstraint.nonce; + } + return lifetimeConstraint.blockhash; + } + function getCompiledStaticAccounts(orderedAccounts) { + const firstLookupTableAccountIndex = orderedAccounts.findIndex((account) => "lookupTableAddress" in account); + const orderedStaticAccounts = firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex); + return orderedStaticAccounts.map(({ address }) => address); + } + function compileTransactionMessage(transactionMessage) { + const addressMap = getAddressMapFromInstructions( + transactionMessage.feePayer.address, + transactionMessage.instructions + ); + const orderedAccounts = getOrderedAccountsFromAddressMap(addressMap); + return { + ...transactionMessage.version !== "legacy" ? { addressTableLookups: getCompiledAddressTableLookups(orderedAccounts) } : null, + header: getCompiledMessageHeader(orderedAccounts), + instructions: getCompiledInstructions(transactionMessage.instructions, orderedAccounts), + lifetimeToken: getCompiledLifetimeToken(transactionMessage.lifetimeConstraint), + staticAccounts: getCompiledStaticAccounts(orderedAccounts), + version: transactionMessage.version + }; + } + function findAddressInLookupTables(address, role, addressesByLookupTableAddress) { + for (const [lookupTableAddress, addresses2] of Object.entries(addressesByLookupTableAddress)) { + for (let i = 0; i < addresses2.length; i++) { + if (address === addresses2[i]) { + return { + address, + addressIndex: i, + lookupTableAddress, + role + }; + } + } + } + } + function compressTransactionMessageUsingAddressLookupTables(transactionMessage, addressesByLookupTableAddress) { + const lookupTableAddresses = new Set(Object.values(addressesByLookupTableAddress).flatMap((a) => a)); + const newInstructions = []; + let updatedAnyInstructions = false; + for (const instruction of transactionMessage.instructions) { + if (!instruction.accounts) { + newInstructions.push(instruction); + continue; + } + const newAccounts = []; + let updatedAnyAccounts = false; + for (const account of instruction.accounts) { + if ("lookupTableAddress" in account || !lookupTableAddresses.has(account.address) || instructions.isSignerRole(account.role)) { + newAccounts.push(account); + continue; + } + const lookupMetaAccount = findAddressInLookupTables( + account.address, + account.role, + addressesByLookupTableAddress + ); + newAccounts.push(Object.freeze(lookupMetaAccount)); + updatedAnyAccounts = true; + updatedAnyInstructions = true; + } + newInstructions.push( + Object.freeze(updatedAnyAccounts ? { ...instruction, accounts: newAccounts } : instruction) + ); + } + return Object.freeze( + updatedAnyInstructions ? { ...transactionMessage, instructions: newInstructions } : transactionMessage + ); + } + function createTransactionMessage(config2) { + return Object.freeze({ + instructions: Object.freeze([]), + version: config2.version + }); + } + var RECENT_BLOCKHASHES_SYSVAR_ADDRESS = "SysvarRecentB1ockHashes11111111111111111111"; + var SYSTEM_PROGRAM_ADDRESS = "11111111111111111111111111111111"; + function createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress) { + return { + accounts: [ + { address: nonceAccountAddress, role: instructions.AccountRole.WRITABLE }, + { + address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS, + role: instructions.AccountRole.READONLY + }, + { address: nonceAuthorityAddress, role: instructions.AccountRole.READONLY_SIGNER } + ], + data: new Uint8Array([4, 0, 0, 0]), + programAddress: SYSTEM_PROGRAM_ADDRESS + }; + } + function isAdvanceNonceAccountInstruction(instruction) { + return instruction.programAddress === SYSTEM_PROGRAM_ADDRESS && // Test for `AdvanceNonceAccount` instruction data + instruction.data != null && isAdvanceNonceAccountInstructionData(instruction.data) && // Test for exactly 3 accounts + instruction.accounts?.length === 3 && // First account is nonce account address + instruction.accounts[0].address != null && instruction.accounts[0].role === instructions.AccountRole.WRITABLE && // Second account is recent blockhashes sysvar + instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS && instruction.accounts[1].role === instructions.AccountRole.READONLY && // Third account is nonce authority account + instruction.accounts[2].address != null && instructions.isSignerRole(instruction.accounts[2].role); + } + function isAdvanceNonceAccountInstructionData(data) { + return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0; + } + function isTransactionMessageWithDurableNonceLifetime(transactionMessage) { + return "lifetimeConstraint" in transactionMessage && typeof transactionMessage.lifetimeConstraint.nonce === "string" && transactionMessage.instructions[0] != null && isAdvanceNonceAccountInstruction(transactionMessage.instructions[0]); + } + function assertIsTransactionMessageWithDurableNonceLifetime(transactionMessage) { + if (!isTransactionMessageWithDurableNonceLifetime(transactionMessage)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME); + } + } + function isAdvanceNonceAccountInstructionForNonce(instruction, nonceAccountAddress, nonceAuthorityAddress) { + return instruction.accounts[0].address === nonceAccountAddress && instruction.accounts[2].address === nonceAuthorityAddress; + } + function setTransactionMessageLifetimeUsingDurableNonce({ + nonce, + nonceAccountAddress, + nonceAuthorityAddress + }, transactionMessage) { + let newInstructions; + const firstInstruction = transactionMessage.instructions[0]; + if (firstInstruction && isAdvanceNonceAccountInstruction(firstInstruction)) { + if (isAdvanceNonceAccountInstructionForNonce(firstInstruction, nonceAccountAddress, nonceAuthorityAddress)) { + if (isTransactionMessageWithDurableNonceLifetime(transactionMessage) && transactionMessage.lifetimeConstraint.nonce === nonce) { + return transactionMessage; + } else { + newInstructions = [firstInstruction, ...transactionMessage.instructions.slice(1)]; + } + } else { + newInstructions = [ + Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)), + ...transactionMessage.instructions.slice(1) + ]; + } + } else { + newInstructions = [ + Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)), + ...transactionMessage.instructions + ]; + } + return Object.freeze({ + ...transactionMessage, + instructions: Object.freeze(newInstructions), + lifetimeConstraint: Object.freeze({ nonce }) + }); + } + function setTransactionMessageFeePayer(feePayer, transactionMessage) { + if ("feePayer" in transactionMessage && feePayer === transactionMessage.feePayer?.address && isAddressOnlyFeePayer(transactionMessage.feePayer)) { + return transactionMessage; + } + const out = { + ...transactionMessage, + feePayer: Object.freeze({ address: feePayer }) + }; + Object.freeze(out); + return out; + } + function isAddressOnlyFeePayer(feePayer) { + return !!feePayer && "address" in feePayer && typeof feePayer.address === "string" && Object.keys(feePayer).length === 1; + } + function appendTransactionMessageInstruction(instruction, transactionMessage) { + return appendTransactionMessageInstructions([instruction], transactionMessage); + } + function appendTransactionMessageInstructions(instructions2, transactionMessage) { + return Object.freeze({ + ...transactionMessage, + instructions: Object.freeze([ + ...transactionMessage.instructions, + ...instructions2 + ]) + }); + } + function prependTransactionMessageInstruction(instruction, transactionMessage) { + return prependTransactionMessageInstructions([instruction], transactionMessage); + } + function prependTransactionMessageInstructions(instructions2, transactionMessage) { + return Object.freeze({ + ...transactionMessage, + instructions: Object.freeze([ + ...instructions2, + ...transactionMessage.instructions + ]) + }); + } + function getAccountMetas(message) { + const { header } = message; + const numWritableSignerAccounts = header.numSignerAccounts - header.numReadonlySignerAccounts; + const numWritableNonSignerAccounts = message.staticAccounts.length - header.numSignerAccounts - header.numReadonlyNonSignerAccounts; + const accountMetas = []; + let accountIndex = 0; + for (let i = 0; i < numWritableSignerAccounts; i++) { + accountMetas.push({ + address: message.staticAccounts[accountIndex], + role: instructions.AccountRole.WRITABLE_SIGNER + }); + accountIndex++; + } + for (let i = 0; i < header.numReadonlySignerAccounts; i++) { + accountMetas.push({ + address: message.staticAccounts[accountIndex], + role: instructions.AccountRole.READONLY_SIGNER + }); + accountIndex++; + } + for (let i = 0; i < numWritableNonSignerAccounts; i++) { + accountMetas.push({ + address: message.staticAccounts[accountIndex], + role: instructions.AccountRole.WRITABLE + }); + accountIndex++; + } + for (let i = 0; i < header.numReadonlyNonSignerAccounts; i++) { + accountMetas.push({ + address: message.staticAccounts[accountIndex], + role: instructions.AccountRole.READONLY + }); + accountIndex++; + } + return accountMetas; + } + function getAddressLookupMetas(compiledAddressTableLookups, addressesByLookupTableAddress) { + const compiledAddressTableLookupAddresses = compiledAddressTableLookups.map((l) => l.lookupTableAddress); + const missing = compiledAddressTableLookupAddresses.filter((a) => addressesByLookupTableAddress[a] === void 0); + if (missing.length > 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, { + lookupTableAddresses: missing + }); + } + const readOnlyMetas = []; + const writableMetas = []; + for (const lookup of compiledAddressTableLookups) { + const addresses2 = addressesByLookupTableAddress[lookup.lookupTableAddress]; + const readonlyIndexes = lookup.readonlyIndexes ?? /** @deprecated Remove in a future major version */ + lookup.readableIndices; + const writableIndexes = lookup.writableIndexes ?? /** @deprecated Remove in a future major version */ + lookup.writableIndices; + const highestIndex = Math.max(...readonlyIndexes, ...writableIndexes); + if (highestIndex >= addresses2.length) { + throw new errors.SolanaError( + errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE, + { + highestKnownIndex: addresses2.length - 1, + highestRequestedIndex: highestIndex, + lookupTableAddress: lookup.lookupTableAddress + } + ); + } + const readOnlyForLookup = readonlyIndexes.map((r) => ({ + address: addresses2[r], + addressIndex: r, + lookupTableAddress: lookup.lookupTableAddress, + role: instructions.AccountRole.READONLY + })); + readOnlyMetas.push(...readOnlyForLookup); + const writableForLookup = writableIndexes.map((w) => ({ + address: addresses2[w], + addressIndex: w, + lookupTableAddress: lookup.lookupTableAddress, + role: instructions.AccountRole.WRITABLE + })); + writableMetas.push(...writableForLookup); + } + return [...writableMetas, ...readOnlyMetas]; + } + function convertInstruction(instruction, accountMetas) { + const programAddress = accountMetas[instruction.programAddressIndex]?.address; + if (!programAddress) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, { + index: instruction.programAddressIndex + }); + } + const accounts = instruction.accountIndices?.map((accountIndex) => accountMetas[accountIndex]); + const { data } = instruction; + return Object.freeze({ + programAddress, + ...accounts && accounts.length ? { accounts: Object.freeze(accounts) } : {}, + ...data && data.length ? { data } : {} + }); + } + function getLifetimeConstraint(messageLifetimeToken, firstInstruction, lastValidBlockHeight) { + if (!firstInstruction || !isAdvanceNonceAccountInstruction(firstInstruction)) { + return { + blockhash: messageLifetimeToken, + lastValidBlockHeight: lastValidBlockHeight ?? 2n ** 64n - 1n + // U64 MAX + }; + } else { + const nonceAccountAddress = firstInstruction.accounts[0].address; + addresses.assertIsAddress(nonceAccountAddress); + const nonceAuthorityAddress = firstInstruction.accounts[2].address; + addresses.assertIsAddress(nonceAuthorityAddress); + return { + nonce: messageLifetimeToken, + nonceAccountAddress, + nonceAuthorityAddress + }; + } + } + function decompileTransactionMessage(compiledTransactionMessage, config2) { + const feePayer = compiledTransactionMessage.staticAccounts[0]; + if (!feePayer) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING); + } + const accountMetas = getAccountMetas(compiledTransactionMessage); + const accountLookupMetas = "addressTableLookups" in compiledTransactionMessage && compiledTransactionMessage.addressTableLookups !== void 0 && compiledTransactionMessage.addressTableLookups.length > 0 ? getAddressLookupMetas( + compiledTransactionMessage.addressTableLookups, + config2?.addressesByLookupTableAddress ?? {} + ) : []; + const transactionMetas = [...accountMetas, ...accountLookupMetas]; + const instructions2 = compiledTransactionMessage.instructions.map( + (compiledInstruction) => convertInstruction(compiledInstruction, transactionMetas) + ); + const firstInstruction = instructions2[0]; + const lifetimeConstraint = getLifetimeConstraint( + compiledTransactionMessage.lifetimeToken, + firstInstruction, + config2?.lastValidBlockHeight + ); + return functional.pipe( + createTransactionMessage({ version: compiledTransactionMessage.version }), + (m) => setTransactionMessageFeePayer(feePayer, m), + (m) => instructions2.reduce( + (acc, instruction) => appendTransactionMessageInstruction(instruction, acc), + m + ), + (m) => "blockhash" in lifetimeConstraint ? setTransactionMessageLifetimeUsingBlockhash(lifetimeConstraint, m) : setTransactionMessageLifetimeUsingDurableNonce(lifetimeConstraint, m) + ); + } + var assertIsDurableNonceTransactionMessage = assertIsTransactionMessageWithDurableNonceLifetime; + var isDurableNonceTransaction = isTransactionMessageWithDurableNonceLifetime; + exports2.appendTransactionMessageInstruction = appendTransactionMessageInstruction; + exports2.appendTransactionMessageInstructions = appendTransactionMessageInstructions; + exports2.assertIsDurableNonceTransactionMessage = assertIsDurableNonceTransactionMessage; + exports2.assertIsTransactionMessageWithBlockhashLifetime = assertIsTransactionMessageWithBlockhashLifetime; + exports2.assertIsTransactionMessageWithDurableNonceLifetime = assertIsTransactionMessageWithDurableNonceLifetime; + exports2.compileTransactionMessage = compileTransactionMessage; + exports2.compressTransactionMessageUsingAddressLookupTables = compressTransactionMessageUsingAddressLookupTables; + exports2.createTransactionMessage = createTransactionMessage; + exports2.decompileTransactionMessage = decompileTransactionMessage; + exports2.getCompiledTransactionMessageCodec = getCompiledTransactionMessageCodec; + exports2.getCompiledTransactionMessageDecoder = getCompiledTransactionMessageDecoder; + exports2.getCompiledTransactionMessageEncoder = getCompiledTransactionMessageEncoder; + exports2.getTransactionVersionCodec = getTransactionVersionCodec; + exports2.getTransactionVersionDecoder = getTransactionVersionDecoder; + exports2.getTransactionVersionEncoder = getTransactionVersionEncoder; + exports2.isAdvanceNonceAccountInstruction = isAdvanceNonceAccountInstruction; + exports2.isDurableNonceTransaction = isDurableNonceTransaction; + exports2.isTransactionMessageWithBlockhashLifetime = isTransactionMessageWithBlockhashLifetime; + exports2.isTransactionMessageWithDurableNonceLifetime = isTransactionMessageWithDurableNonceLifetime; + exports2.prependTransactionMessageInstruction = prependTransactionMessageInstruction; + exports2.prependTransactionMessageInstructions = prependTransactionMessageInstructions; + exports2.setTransactionMessageFeePayer = setTransactionMessageFeePayer; + exports2.setTransactionMessageLifetimeUsingBlockhash = setTransactionMessageLifetimeUsingBlockhash; + exports2.setTransactionMessageLifetimeUsingDurableNonce = setTransactionMessageLifetimeUsingDurableNonce; + } +}); + +// node_modules/@solana/transactions/dist/index.node.cjs +var require_index_node31 = __commonJS({ + "node_modules/@solana/transactions/dist/index.node.cjs"(exports2) { + "use strict"; + var addresses = require_index_node6(); + var codecsCore = require_index_node2(); + var codecsDataStructures = require_index_node8(); + var codecsNumbers = require_index_node7(); + var errors = require_index_node(); + var transactionMessages = require_index_node30(); + var codecsStrings = require_index_node3(); + var keys = require_index_node13(); + function getSignaturesToEncode(signaturesMap) { + const signatures = Object.values(signaturesMap); + if (signatures.length === 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES); + } + return signatures.map((signature) => { + if (!signature) { + return new Uint8Array(64).fill(0); + } + return signature; + }); + } + function getSignaturesEncoder() { + return codecsCore.transformEncoder( + codecsDataStructures.getArrayEncoder(codecsCore.fixEncoderSize(codecsDataStructures.getBytesEncoder(), 64), { size: codecsNumbers.getShortU16Encoder() }), + getSignaturesToEncode + ); + } + function getTransactionEncoder() { + return codecsDataStructures.getStructEncoder([ + ["signatures", getSignaturesEncoder()], + ["messageBytes", codecsDataStructures.getBytesEncoder()] + ]); + } + function getTransactionDecoder() { + return codecsCore.transformDecoder( + codecsDataStructures.getStructDecoder([ + ["signatures", codecsDataStructures.getArrayDecoder(codecsCore.fixDecoderSize(codecsDataStructures.getBytesDecoder(), 64), { size: codecsNumbers.getShortU16Decoder() })], + ["messageBytes", codecsDataStructures.getBytesDecoder()] + ]), + decodePartiallyDecodedTransaction + ); + } + function getTransactionCodec() { + return codecsCore.combineCodec(getTransactionEncoder(), getTransactionDecoder()); + } + function decodePartiallyDecodedTransaction(transaction) { + const { messageBytes, signatures } = transaction; + const signerAddressesDecoder = codecsDataStructures.getTupleDecoder([ + // read transaction version + transactionMessages.getTransactionVersionDecoder(), + // read first byte of header, `numSignerAccounts` + // padRight to skip the next 2 bytes, `numReadOnlySignedAccounts` and `numReadOnlyUnsignedAccounts` which we don't need + codecsCore.padRightDecoder(codecsNumbers.getU8Decoder(), 2), + // read static addresses + codecsDataStructures.getArrayDecoder(addresses.getAddressDecoder(), { size: codecsNumbers.getShortU16Decoder() }) + ]); + const [_txVersion, numRequiredSignatures, staticAddresses] = signerAddressesDecoder.decode(messageBytes); + const signerAddresses = staticAddresses.slice(0, numRequiredSignatures); + if (signerAddresses.length !== signatures.length) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, { + numRequiredSignatures, + signaturesLength: signatures.length, + signerAddresses + }); + } + const signaturesMap = {}; + signerAddresses.forEach((address, index) => { + const signatureForAddress = signatures[index]; + if (signatureForAddress.every((b) => b === 0)) { + signaturesMap[address] = null; + } else { + signaturesMap[address] = signatureForAddress; + } + }); + return { + messageBytes, + signatures: Object.freeze(signaturesMap) + }; + } + function compileTransaction(transactionMessage) { + const compiledMessage = transactionMessages.compileTransactionMessage(transactionMessage); + const messageBytes = transactionMessages.getCompiledTransactionMessageEncoder().encode(compiledMessage); + const transactionSigners = compiledMessage.staticAccounts.slice(0, compiledMessage.header.numSignerAccounts); + const signatures = {}; + for (const signerAddress of transactionSigners) { + signatures[signerAddress] = null; + } + let lifetimeConstraint; + if (transactionMessages.isTransactionMessageWithBlockhashLifetime(transactionMessage)) { + lifetimeConstraint = { + blockhash: transactionMessage.lifetimeConstraint.blockhash, + lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight + }; + } else { + lifetimeConstraint = { + nonce: transactionMessage.lifetimeConstraint.nonce, + nonceAccountAddress: transactionMessage.instructions[0].accounts[0].address + }; + } + return Object.freeze({ + lifetimeConstraint, + messageBytes, + signatures: Object.freeze(signatures) + }); + } + var base58Decoder; + function getSignatureFromTransaction(transaction) { + if (!base58Decoder) base58Decoder = codecsStrings.getBase58Decoder(); + const signatureBytes = Object.values(transaction.signatures)[0]; + if (!signatureBytes) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING); + } + const transactionSignature = base58Decoder.decode(signatureBytes); + return transactionSignature; + } + function uint8ArraysEqual(arr1, arr2) { + return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]); + } + async function partiallySignTransaction(keyPairs, transaction) { + let newSignatures; + let unexpectedSigners; + await Promise.all( + keyPairs.map(async (keyPair) => { + const address = await addresses.getAddressFromPublicKey(keyPair.publicKey); + const existingSignature = transaction.signatures[address]; + if (existingSignature === void 0) { + unexpectedSigners ||= /* @__PURE__ */ new Set(); + unexpectedSigners.add(address); + return; + } + if (unexpectedSigners) { + return; + } + const newSignature = await keys.signBytes(keyPair.privateKey, transaction.messageBytes); + if (existingSignature !== null && uint8ArraysEqual(newSignature, existingSignature)) { + return; + } + newSignatures ||= {}; + newSignatures[address] = newSignature; + }) + ); + if (unexpectedSigners && unexpectedSigners.size > 0) { + const expectedSigners = Object.keys(transaction.signatures); + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, { + expectedAddresses: expectedSigners, + unexpectedAddresses: [...unexpectedSigners] + }); + } + if (!newSignatures) { + return transaction; + } + return Object.freeze({ + ...transaction, + signatures: Object.freeze({ + ...transaction.signatures, + ...newSignatures + }) + }); + } + async function signTransaction(keyPairs, transaction) { + const out = await partiallySignTransaction(keyPairs, transaction); + assertIsFullySignedTransaction(out); + Object.freeze(out); + return out; + } + function isFullySignedTransaction(transaction) { + return Object.entries(transaction.signatures).every(([_, signatureBytes]) => !!signatureBytes); + } + function assertIsFullySignedTransaction(transaction) { + const missingSigs = []; + Object.entries(transaction.signatures).forEach(([address, signatureBytes]) => { + if (!signatureBytes) { + missingSigs.push(address); + } + }); + if (missingSigs.length > 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, { + addresses: missingSigs + }); + } + } + function getBase64EncodedWireTransaction(transaction) { + const wireTransactionBytes = getTransactionEncoder().encode(transaction); + return codecsStrings.getBase64Decoder().decode(wireTransactionBytes); + } + var TRANSACTION_PACKET_SIZE = 1280; + var TRANSACTION_PACKET_HEADER = 40 + 8; + var TRANSACTION_SIZE_LIMIT = TRANSACTION_PACKET_SIZE - TRANSACTION_PACKET_HEADER; + function getTransactionSize(transaction) { + return getTransactionEncoder().getSizeFromValue(transaction); + } + function isTransactionWithinSizeLimit(transaction) { + return getTransactionSize(transaction) <= TRANSACTION_SIZE_LIMIT; + } + function assertIsTransactionWithinSizeLimit(transaction) { + const transactionSize = getTransactionSize(transaction); + if (transactionSize > TRANSACTION_SIZE_LIMIT) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, { + transactionSize, + transactionSizeLimit: TRANSACTION_SIZE_LIMIT + }); + } + } + function getTransactionMessageSize(transactionMessage) { + return getTransactionSize(compileTransaction(transactionMessage)); + } + function isTransactionMessageWithinSizeLimit(transactionMessage) { + return getTransactionMessageSize(transactionMessage) <= TRANSACTION_SIZE_LIMIT; + } + function assertIsTransactionMessageWithinSizeLimit(transactionMessage) { + const transactionSize = getTransactionMessageSize(transactionMessage); + if (transactionSize > TRANSACTION_SIZE_LIMIT) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, { + transactionSize, + transactionSizeLimit: TRANSACTION_SIZE_LIMIT + }); + } + } + var assertTransactionIsFullySigned = assertIsFullySignedTransaction; + exports2.TRANSACTION_PACKET_HEADER = TRANSACTION_PACKET_HEADER; + exports2.TRANSACTION_PACKET_SIZE = TRANSACTION_PACKET_SIZE; + exports2.TRANSACTION_SIZE_LIMIT = TRANSACTION_SIZE_LIMIT; + exports2.assertIsFullySignedTransaction = assertIsFullySignedTransaction; + exports2.assertIsTransactionMessageWithinSizeLimit = assertIsTransactionMessageWithinSizeLimit; + exports2.assertIsTransactionWithinSizeLimit = assertIsTransactionWithinSizeLimit; + exports2.assertTransactionIsFullySigned = assertTransactionIsFullySigned; + exports2.compileTransaction = compileTransaction; + exports2.getBase64EncodedWireTransaction = getBase64EncodedWireTransaction; + exports2.getSignatureFromTransaction = getSignatureFromTransaction; + exports2.getTransactionCodec = getTransactionCodec; + exports2.getTransactionDecoder = getTransactionDecoder; + exports2.getTransactionEncoder = getTransactionEncoder; + exports2.getTransactionMessageSize = getTransactionMessageSize; + exports2.getTransactionSize = getTransactionSize; + exports2.isFullySignedTransaction = isFullySignedTransaction; + exports2.isTransactionMessageWithinSizeLimit = isTransactionMessageWithinSizeLimit; + exports2.isTransactionWithinSizeLimit = isTransactionWithinSizeLimit; + exports2.partiallySignTransaction = partiallySignTransaction; + exports2.signTransaction = signTransaction; + } +}); + +// node_modules/@solana/signers/dist/index.node.cjs +var require_index_node32 = __commonJS({ + "node_modules/@solana/signers/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var instructions = require_index_node12(); + var addresses = require_index_node6(); + var keys = require_index_node13(); + var transactions = require_index_node31(); + function deduplicateSigners(signers) { + const deduplicated = {}; + signers.forEach((signer) => { + if (!deduplicated[signer.address]) { + deduplicated[signer.address] = signer; + } else if (deduplicated[signer.address] !== signer) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, { + address: signer.address + }); + } + }); + return Object.values(deduplicated); + } + function isTransactionModifyingSigner(value) { + return "modifyAndSignTransactions" in value && typeof value.modifyAndSignTransactions === "function"; + } + function assertIsTransactionModifyingSigner(value) { + if (!isTransactionModifyingSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, { + address: value.address + }); + } + } + function isTransactionPartialSigner(value) { + return "signTransactions" in value && typeof value.signTransactions === "function"; + } + function assertIsTransactionPartialSigner(value) { + if (!isTransactionPartialSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, { + address: value.address + }); + } + } + function isTransactionSendingSigner(value) { + return "signAndSendTransactions" in value && typeof value.signAndSendTransactions === "function"; + } + function assertIsTransactionSendingSigner(value) { + if (!isTransactionSendingSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, { + address: value.address + }); + } + } + function isTransactionSigner(value) { + return isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value); + } + function assertIsTransactionSigner(value) { + if (!isTransactionSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, { + address: value.address + }); + } + } + function getSignersFromInstruction(instruction) { + return deduplicateSigners( + (instruction.accounts ?? []).flatMap((account) => "signer" in account ? account.signer : []) + ); + } + function getSignersFromTransactionMessage(transaction) { + return deduplicateSigners([ + ...transaction.feePayer && isTransactionSigner(transaction.feePayer) ? [transaction.feePayer] : [], + ...transaction.instructions.flatMap(getSignersFromInstruction) + ]); + } + function addSignersToInstruction(signers, instruction) { + if (!instruction.accounts || instruction.accounts.length === 0) { + return instruction; + } + const signerByAddress = new Map(deduplicateSigners(signers).map((signer) => [signer.address, signer])); + return Object.freeze({ + ...instruction, + accounts: instruction.accounts.map((account) => { + const signer = signerByAddress.get(account.address); + if (!instructions.isSignerRole(account.role) || "signer" in account || !signer) { + return account; + } + return Object.freeze({ ...account, signer }); + }) + }); + } + function addSignersToTransactionMessage(signers, transactionMessage) { + const feePayerSigner = hasAddressOnlyFeePayer(transactionMessage) ? signers.find((signer) => signer.address === transactionMessage.feePayer.address) : void 0; + if (!feePayerSigner && transactionMessage.instructions.length === 0) { + return transactionMessage; + } + return Object.freeze({ + ...transactionMessage, + ...feePayerSigner ? { feePayer: feePayerSigner } : null, + instructions: transactionMessage.instructions.map((instruction) => addSignersToInstruction(signers, instruction)) + }); + } + function hasAddressOnlyFeePayer(message) { + return !!message && "feePayer" in message && !!message.feePayer && typeof message.feePayer.address === "string" && !isTransactionSigner(message.feePayer); + } + function setTransactionMessageFeePayerSigner(feePayer, transactionMessage) { + Object.freeze(feePayer); + const out = { ...transactionMessage, feePayer }; + Object.freeze(out); + return out; + } + function isMessagePartialSigner(value) { + return "signMessages" in value && typeof value.signMessages === "function"; + } + function assertIsMessagePartialSigner(value) { + if (!isMessagePartialSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, { + address: value.address + }); + } + } + function isKeyPairSigner(value) { + return "keyPair" in value && typeof value.keyPair === "object" && isMessagePartialSigner(value) && isTransactionPartialSigner(value); + } + function assertIsKeyPairSigner(value) { + if (!isKeyPairSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, { + address: value.address + }); + } + } + async function createSignerFromKeyPair(keyPair) { + const address = await addresses.getAddressFromPublicKey(keyPair.publicKey); + const out = { + address, + keyPair, + signMessages: (messages) => Promise.all( + messages.map( + async (message) => Object.freeze({ [address]: await keys.signBytes(keyPair.privateKey, message.content) }) + ) + ), + signTransactions: (transactions$1) => Promise.all( + transactions$1.map(async (transaction) => { + const signedTransaction = await transactions.partiallySignTransaction([keyPair], transaction); + return Object.freeze({ [address]: signedTransaction.signatures[address] }); + }) + ) + }; + return Object.freeze(out); + } + async function generateKeyPairSigner() { + return await createSignerFromKeyPair(await keys.generateKeyPair()); + } + async function createKeyPairSignerFromBytes(bytes, extractable) { + return await createSignerFromKeyPair(await keys.createKeyPairFromBytes(bytes, extractable)); + } + async function createKeyPairSignerFromPrivateKeyBytes(bytes, extractable) { + return await createSignerFromKeyPair(await keys.createKeyPairFromPrivateKeyBytes(bytes, extractable)); + } + function isMessageModifyingSigner(value) { + return addresses.isAddress(value.address) && "modifyAndSignMessages" in value && typeof value.modifyAndSignMessages === "function"; + } + function assertIsMessageModifyingSigner(value) { + if (!isMessageModifyingSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, { + address: value.address + }); + } + } + function isMessageSigner(value) { + return isMessagePartialSigner(value) || isMessageModifyingSigner(value); + } + function assertIsMessageSigner(value) { + if (!isMessageSigner(value)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, { + address: value.address + }); + } + } + function createNoopSigner(address) { + const out = { + address, + signMessages: (messages) => Promise.resolve(messages.map(() => Object.freeze({}))), + signTransactions: (transactions2) => Promise.resolve(transactions2.map(() => Object.freeze({}))) + }; + return Object.freeze(out); + } + function isTransactionMessageWithSingleSendingSigner(transaction) { + try { + assertIsTransactionMessageWithSingleSendingSigner(transaction); + return true; + } catch { + return false; + } + } + function assertIsTransactionMessageWithSingleSendingSigner(transaction) { + const signers = getSignersFromTransactionMessage(transaction); + const sendingSigners = signers.filter(isTransactionSendingSigner); + if (sendingSigners.length === 0) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING); + } + const sendingOnlySigners = sendingSigners.filter( + (signer) => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer) + ); + if (sendingOnlySigners.length > 1) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS); + } + } + async function partiallySignTransactionMessageWithSigners(transactionMessage, config2) { + const { partialSigners, modifyingSigners } = categorizeTransactionSigners( + deduplicateSigners(getSignersFromTransactionMessage(transactionMessage).filter(isTransactionSigner)), + { identifySendingSigner: false } + ); + return await signModifyingAndPartialTransactionSigners( + transactionMessage, + modifyingSigners, + partialSigners, + config2 + ); + } + async function signTransactionMessageWithSigners(transactionMessage, config2) { + const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage, config2); + transactions.assertIsFullySignedTransaction(signedTransaction); + return signedTransaction; + } + async function signAndSendTransactionMessageWithSigners(transaction, config2) { + assertIsTransactionMessageWithSingleSendingSigner(transaction); + const abortSignal = config2?.abortSignal; + const { partialSigners, modifyingSigners, sendingSigner } = categorizeTransactionSigners( + deduplicateSigners(getSignersFromTransactionMessage(transaction).filter(isTransactionSigner)) + ); + abortSignal?.throwIfAborted(); + const signedTransaction = await signModifyingAndPartialTransactionSigners( + transaction, + modifyingSigners, + partialSigners, + config2 + ); + if (!sendingSigner) { + throw new errors.SolanaError(errors.SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING); + } + abortSignal?.throwIfAborted(); + const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], config2); + abortSignal?.throwIfAborted(); + return signature; + } + function categorizeTransactionSigners(signers, config2 = {}) { + const identifySendingSigner = config2.identifySendingSigner ?? true; + const sendingSigner = identifySendingSigner ? identifyTransactionSendingSigner(signers) : null; + const otherSigners = signers.filter( + (signer) => signer !== sendingSigner && (isTransactionModifyingSigner(signer) || isTransactionPartialSigner(signer)) + ); + const modifyingSigners = identifyTransactionModifyingSigners(otherSigners); + const partialSigners = otherSigners.filter(isTransactionPartialSigner).filter((signer) => !modifyingSigners.includes(signer)); + return Object.freeze({ modifyingSigners, partialSigners, sendingSigner }); + } + function identifyTransactionSendingSigner(signers) { + const sendingSigners = signers.filter(isTransactionSendingSigner); + if (sendingSigners.length === 0) return null; + const sendingOnlySigners = sendingSigners.filter( + (signer) => !isTransactionModifyingSigner(signer) && !isTransactionPartialSigner(signer) + ); + if (sendingOnlySigners.length > 0) { + return sendingOnlySigners[0]; + } + return sendingSigners[0]; + } + function identifyTransactionModifyingSigners(signers) { + const modifyingSigners = signers.filter(isTransactionModifyingSigner); + if (modifyingSigners.length === 0) return []; + const nonPartialSigners = modifyingSigners.filter((signer) => !isTransactionPartialSigner(signer)); + if (nonPartialSigners.length > 0) return nonPartialSigners; + return [modifyingSigners[0]]; + } + async function signModifyingAndPartialTransactionSigners(transactionMessage, modifyingSigners = [], partialSigners = [], config2) { + const transaction = transactions.compileTransaction(transactionMessage); + const modifiedTransaction = await modifyingSigners.reduce( + async (transaction2, modifyingSigner) => { + config2?.abortSignal?.throwIfAborted(); + const [tx] = await modifyingSigner.modifyAndSignTransactions([await transaction2], config2); + return Object.freeze(tx); + }, + Promise.resolve(transaction) + ); + config2?.abortSignal?.throwIfAborted(); + const signatureDictionaries = await Promise.all( + partialSigners.map(async (partialSigner) => { + const [signatures] = await partialSigner.signTransactions([modifiedTransaction], config2); + return signatures; + }) + ); + return Object.freeze({ + ...modifiedTransaction, + signatures: Object.freeze( + signatureDictionaries.reduce((signatures, signatureDictionary) => { + return { ...signatures, ...signatureDictionary }; + }, modifiedTransaction.signatures ?? {}) + ) + }); + } + var o = globalThis.TextEncoder; + function createSignableMessage(content, signatures = {}) { + return Object.freeze({ + content: typeof content === "string" ? new o().encode(content) : content, + signatures: Object.freeze({ ...signatures }) + }); + } + exports2.addSignersToInstruction = addSignersToInstruction; + exports2.addSignersToTransactionMessage = addSignersToTransactionMessage; + exports2.assertIsKeyPairSigner = assertIsKeyPairSigner; + exports2.assertIsMessageModifyingSigner = assertIsMessageModifyingSigner; + exports2.assertIsMessagePartialSigner = assertIsMessagePartialSigner; + exports2.assertIsMessageSigner = assertIsMessageSigner; + exports2.assertIsTransactionMessageWithSingleSendingSigner = assertIsTransactionMessageWithSingleSendingSigner; + exports2.assertIsTransactionModifyingSigner = assertIsTransactionModifyingSigner; + exports2.assertIsTransactionPartialSigner = assertIsTransactionPartialSigner; + exports2.assertIsTransactionSendingSigner = assertIsTransactionSendingSigner; + exports2.assertIsTransactionSigner = assertIsTransactionSigner; + exports2.createKeyPairSignerFromBytes = createKeyPairSignerFromBytes; + exports2.createKeyPairSignerFromPrivateKeyBytes = createKeyPairSignerFromPrivateKeyBytes; + exports2.createNoopSigner = createNoopSigner; + exports2.createSignableMessage = createSignableMessage; + exports2.createSignerFromKeyPair = createSignerFromKeyPair; + exports2.generateKeyPairSigner = generateKeyPairSigner; + exports2.getSignersFromInstruction = getSignersFromInstruction; + exports2.getSignersFromTransactionMessage = getSignersFromTransactionMessage; + exports2.isKeyPairSigner = isKeyPairSigner; + exports2.isMessageModifyingSigner = isMessageModifyingSigner; + exports2.isMessagePartialSigner = isMessagePartialSigner; + exports2.isMessageSigner = isMessageSigner; + exports2.isTransactionMessageWithSingleSendingSigner = isTransactionMessageWithSingleSendingSigner; + exports2.isTransactionModifyingSigner = isTransactionModifyingSigner; + exports2.isTransactionPartialSigner = isTransactionPartialSigner; + exports2.isTransactionSendingSigner = isTransactionSendingSigner; + exports2.isTransactionSigner = isTransactionSigner; + exports2.partiallySignTransactionMessageWithSigners = partiallySignTransactionMessageWithSigners; + exports2.setTransactionMessageFeePayerSigner = setTransactionMessageFeePayerSigner; + exports2.signAndSendTransactionMessageWithSigners = signAndSendTransactionMessageWithSigners; + exports2.signTransactionMessageWithSigners = signTransactionMessageWithSigners; + } +}); + +// node_modules/@solana/transaction-confirmation/dist/index.node.cjs +var require_index_node33 = __commonJS({ + "node_modules/@solana/transaction-confirmation/dist/index.node.cjs"(exports2) { + "use strict"; + var errors = require_index_node(); + var events = __require("events"); + var codecsStrings = require_index_node3(); + var promises = require_index_node24(); + var rpcTypes = require_index_node29(); + var transactions = require_index_node31(); + var e = class extends globalThis.AbortController { + constructor(...t) { + super(...t), events.setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal); + } + }; + function createBlockHeightExceedencePromiseFactory({ + rpc, + rpcSubscriptions + }) { + return async function getBlockHeightExceedencePromise({ + abortSignal: callerAbortSignal, + commitment, + lastValidBlockHeight + }) { + callerAbortSignal.throwIfAborted(); + const abortController = new e(); + const handleAbort = () => { + abortController.abort(); + }; + callerAbortSignal.addEventListener("abort", handleAbort, { signal: abortController.signal }); + async function getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight() { + const { absoluteSlot, blockHeight } = await rpc.getEpochInfo({ commitment }).send({ abortSignal: abortController.signal }); + return { + blockHeight, + differenceBetweenSlotHeightAndBlockHeight: absoluteSlot - blockHeight + }; + } + try { + const [slotNotifications, { blockHeight: initialBlockHeight, differenceBetweenSlotHeightAndBlockHeight }] = await Promise.all([ + rpcSubscriptions.slotNotifications().subscribe({ abortSignal: abortController.signal }), + getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight() + ]); + callerAbortSignal.throwIfAborted(); + let currentBlockHeight = initialBlockHeight; + if (currentBlockHeight <= lastValidBlockHeight) { + let lastKnownDifferenceBetweenSlotHeightAndBlockHeight = differenceBetweenSlotHeightAndBlockHeight; + for await (const slotNotification of slotNotifications) { + const { slot } = slotNotification; + if (slot - lastKnownDifferenceBetweenSlotHeightAndBlockHeight > lastValidBlockHeight) { + const { + blockHeight: recheckedBlockHeight, + differenceBetweenSlotHeightAndBlockHeight: currentDifferenceBetweenSlotHeightAndBlockHeight + } = await getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight(); + currentBlockHeight = recheckedBlockHeight; + if (currentBlockHeight > lastValidBlockHeight) { + break; + } else { + lastKnownDifferenceBetweenSlotHeightAndBlockHeight = currentDifferenceBetweenSlotHeightAndBlockHeight; + } + } + } + } + callerAbortSignal.throwIfAborted(); + throw new errors.SolanaError(errors.SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, { + currentBlockHeight, + lastValidBlockHeight + }); + } finally { + abortController.abort(); + } + }; + } + var NONCE_VALUE_OFFSET = 4 + // version(u32) + 4 + // state(u32) + 32; + function createNonceInvalidationPromiseFactory({ + rpc, + rpcSubscriptions + }) { + return async function getNonceInvalidationPromise({ + abortSignal: callerAbortSignal, + commitment, + currentNonceValue: expectedNonceValue, + nonceAccountAddress + }) { + const abortController = new e(); + function handleAbort() { + abortController.abort(); + } + callerAbortSignal.addEventListener("abort", handleAbort, { signal: abortController.signal }); + const accountNotifications = await rpcSubscriptions.accountNotifications(nonceAccountAddress, { commitment, encoding: "base64" }).subscribe({ abortSignal: abortController.signal }); + const base58Decoder = codecsStrings.getBase58Decoder(); + const base64Encoder = codecsStrings.getBase64Encoder(); + function getNonceFromAccountData([base64EncodedBytes]) { + const data = base64Encoder.encode(base64EncodedBytes); + const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32); + return base58Decoder.decode(nonceValueBytes); + } + const nonceAccountDidAdvancePromise = (async () => { + for await (const accountNotification of accountNotifications) { + const nonceValue = getNonceFromAccountData(accountNotification.value.data); + if (nonceValue !== expectedNonceValue) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INVALID_NONCE, { + actualNonceValue: nonceValue, + expectedNonceValue + }); + } + } + })(); + const nonceIsAlreadyInvalidPromise = (async () => { + const { value: nonceAccount } = await rpc.getAccountInfo(nonceAccountAddress, { + commitment, + dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET }, + encoding: "base58" + }).send({ abortSignal: abortController.signal }); + if (!nonceAccount) { + throw new errors.SolanaError(errors.SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, { + nonceAccountAddress + }); + } + const nonceValue = ( + // This works because we asked for the exact slice of data representing the nonce + // value, and furthermore asked for it in `base58` encoding. + nonceAccount.data[0] + ); + if (nonceValue !== expectedNonceValue) { + throw new errors.SolanaError(errors.SOLANA_ERROR__INVALID_NONCE, { + actualNonceValue: nonceValue, + expectedNonceValue + }); + } else { + await new Promise(() => { + }); + } + })(); + try { + return await promises.safeRace([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]); + } finally { + abortController.abort(); + } + }; + } + function createRecentSignatureConfirmationPromiseFactory({ + rpc, + rpcSubscriptions + }) { + return async function getRecentSignatureConfirmationPromise({ + abortSignal: callerAbortSignal, + commitment, + signature + }) { + const abortController = new e(); + function handleAbort() { + abortController.abort(); + } + callerAbortSignal.addEventListener("abort", handleAbort, { signal: abortController.signal }); + const signatureStatusNotifications = await rpcSubscriptions.signatureNotifications(signature, { commitment }).subscribe({ abortSignal: abortController.signal }); + const signatureDidCommitPromise = (async () => { + for await (const signatureStatusNotification of signatureStatusNotifications) { + if (signatureStatusNotification.value.err) { + throw errors.getSolanaErrorFromTransactionError(signatureStatusNotification.value.err); + } else { + return; + } + } + })(); + const signatureStatusLookupPromise = (async () => { + const { value: signatureStatusResults } = await rpc.getSignatureStatuses([signature]).send({ abortSignal: abortController.signal }); + const signatureStatus = signatureStatusResults[0]; + if (signatureStatus && signatureStatus.confirmationStatus && rpcTypes.commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0) { + return; + } else { + await new Promise(() => { + }); + } + })(); + try { + return await promises.safeRace([signatureDidCommitPromise, signatureStatusLookupPromise]); + } finally { + abortController.abort(); + } + }; + } + async function getTimeoutPromise({ abortSignal: callerAbortSignal, commitment }) { + return await new Promise((_, reject) => { + const handleAbort = (e2) => { + clearTimeout(timeoutId); + const abortError = new DOMException(e2.target.reason, "AbortError"); + reject(abortError); + }; + callerAbortSignal.addEventListener("abort", handleAbort); + const timeoutMs = commitment === "processed" ? 3e4 : 6e4; + const startMs = performance.now(); + const timeoutId = ( + // We use `setTimeout` instead of `AbortSignal.timeout()` because we want to measure + // elapsed time instead of active time. + // See https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static + setTimeout(() => { + const elapsedMs = performance.now() - startMs; + reject(new DOMException(`Timeout elapsed after ${elapsedMs} ms`, "TimeoutError")); + }, timeoutMs) + ); + }); + } + async function raceStrategies(signature, config2, getSpecificStrategiesForRace) { + const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config2; + callerAbortSignal?.throwIfAborted(); + const abortController = new e(); + if (callerAbortSignal) { + const handleAbort = () => { + abortController.abort(); + }; + callerAbortSignal.addEventListener("abort", handleAbort, { signal: abortController.signal }); + } + try { + const specificStrategies = getSpecificStrategiesForRace({ + ...config2, + abortSignal: abortController.signal + }); + return await promises.safeRace([ + getRecentSignatureConfirmationPromise({ + abortSignal: abortController.signal, + commitment, + signature + }), + ...specificStrategies + ]); + } finally { + abortController.abort(); + } + } + async function waitForDurableNonceTransactionConfirmation(config2) { + await raceStrategies( + transactions.getSignatureFromTransaction(config2.transaction), + config2, + function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) { + return [ + getNonceInvalidationPromise({ + abortSignal, + commitment, + currentNonceValue: transaction.lifetimeConstraint.nonce, + nonceAccountAddress: transaction.lifetimeConstraint.nonceAccountAddress + }) + ]; + } + ); + } + async function waitForRecentTransactionConfirmation(config2) { + await raceStrategies( + transactions.getSignatureFromTransaction(config2.transaction), + config2, + function getSpecificStrategiesForRace({ + abortSignal, + commitment, + getBlockHeightExceedencePromise, + transaction + }) { + return [ + getBlockHeightExceedencePromise({ + abortSignal, + commitment, + lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight + }) + ]; + } + ); + } + async function waitForRecentTransactionConfirmationUntilTimeout(config2) { + await raceStrategies( + config2.signature, + config2, + function getSpecificStrategiesForRace({ abortSignal, commitment, getTimeoutPromise: getTimeoutPromise2 }) { + return [ + getTimeoutPromise2({ + abortSignal, + commitment + }) + ]; + } + ); + } + exports2.createBlockHeightExceedencePromiseFactory = createBlockHeightExceedencePromiseFactory; + exports2.createNonceInvalidationPromiseFactory = createNonceInvalidationPromiseFactory; + exports2.createRecentSignatureConfirmationPromiseFactory = createRecentSignatureConfirmationPromiseFactory; + exports2.getTimeoutPromise = getTimeoutPromise; + exports2.waitForDurableNonceTransactionConfirmation = waitForDurableNonceTransactionConfirmation; + exports2.waitForRecentTransactionConfirmation = waitForRecentTransactionConfirmation; + exports2.waitForRecentTransactionConfirmationUntilTimeout = waitForRecentTransactionConfirmationUntilTimeout; + } +}); + +// node_modules/@solana/kit/dist/index.node.cjs +var require_index_node34 = __commonJS({ + "node_modules/@solana/kit/dist/index.node.cjs"(exports2) { + "use strict"; + var accounts = require_index_node4(); + var addresses = require_index_node6(); + var codecs = require_index_node10(); + var errors = require_index_node(); + var functional = require_index_node11(); + var instructions = require_index_node12(); + var keys = require_index_node13(); + var programs = require_index_node14(); + var rpc = require_index_node21(); + var rpcParsedTypes = require_index_node22(); + var rpcSubscriptions = require_index_node28(); + var rpcTypes = require_index_node29(); + var signers = require_index_node32(); + var transactionMessages = require_index_node30(); + var transactions = require_index_node31(); + var transactionConfirmation = require_index_node33(); + var rpcSpecTypes = require_index_node15(); + async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({ + abortSignal, + commitment, + confirmSignatureOnlyTransaction, + lamports, + recipientAddress, + rpc: rpc2 + }) { + const airdropTransactionSignature = await rpc2.requestAirdrop(recipientAddress, lamports, { commitment }).send({ abortSignal }); + await confirmSignatureOnlyTransaction({ + abortSignal, + commitment, + signature: airdropTransactionSignature + }); + return airdropTransactionSignature; + } + function airdropFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }) { + const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }); + async function confirmSignatureOnlyTransaction(config2) { + await transactionConfirmation.waitForRecentTransactionConfirmationUntilTimeout({ + ...config2, + getRecentSignatureConfirmationPromise, + getTimeoutPromise: transactionConfirmation.getTimeoutPromise + }); + } + return async function airdrop(config2) { + return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...config2, + confirmSignatureOnlyTransaction, + rpc: rpc2 + }); + }; + } + var COMPUTE_BUDGET_PROGRAM_ADDRESS = "ComputeBudget111111111111111111111111111111"; + var INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH = { + blockhash: "11111111111111111111111111111111", + lastValidBlockHeight: 0n + // This is not included in compiled transactions; it can be anything. + }; + var SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX = 2; + function createComputeUnitLimitInstruction(units) { + const data = new Uint8Array(5); + data[0] = SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX; + codecs.getU32Encoder().write( + units, + data, + 1 + /* offset */ + ); + return Object.freeze({ + data, + programAddress: COMPUTE_BUDGET_PROGRAM_ADDRESS + }); + } + function isSetComputeLimitInstruction(instruction) { + return instructions.isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) && instructions.isInstructionWithData(instruction) && instruction.data[0] === SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX; + } + async function getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({ + abortSignal, + rpc: rpc2, + transactionMessage, + ...simulateConfig + }) { + const isDurableNonceTransactionMessage = transactionMessages.isTransactionMessageWithDurableNonceLifetime(transactionMessage); + let compilableTransactionMessage; + if (isDurableNonceTransactionMessage || transactionMessages.isTransactionMessageWithBlockhashLifetime(transactionMessage)) { + compilableTransactionMessage = transactionMessage; + } else { + compilableTransactionMessage = transactionMessages.setTransactionMessageLifetimeUsingBlockhash( + INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH, + transactionMessage + ); + } + const existingSetComputeUnitLimitInstructionIndex = transactionMessage.instructions.findIndex(isSetComputeLimitInstruction); + const maxComputeUnitLimitInstruction = createComputeUnitLimitInstruction( + 14e5 + /* MAX_COMPUTE_UNIT_LIMIT */ + ); + if (existingSetComputeUnitLimitInstructionIndex === -1) { + compilableTransactionMessage = transactionMessages.appendTransactionMessageInstruction( + maxComputeUnitLimitInstruction, + compilableTransactionMessage + ); + } else { + const nextInstructions = [...compilableTransactionMessage.instructions]; + nextInstructions.splice(existingSetComputeUnitLimitInstructionIndex, 1, maxComputeUnitLimitInstruction); + compilableTransactionMessage = Object.freeze({ + ...compilableTransactionMessage, + instructions: nextInstructions + }); + } + const compiledTransaction = transactions.compileTransaction(compilableTransactionMessage); + const wireTransactionBytes = transactions.getBase64EncodedWireTransaction(compiledTransaction); + try { + const { + value: { err: transactionError, unitsConsumed } + } = await rpc2.simulateTransaction(wireTransactionBytes, { + ...simulateConfig, + encoding: "base64", + replaceRecentBlockhash: !isDurableNonceTransactionMessage, + sigVerify: false + }).send({ abortSignal }); + if (unitsConsumed == null) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT); + } + const downcastUnitsConsumed = unitsConsumed > 4294967295n ? 4294967295 : Number(unitsConsumed); + if (transactionError) { + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, { + cause: transactionError, + unitsConsumed: downcastUnitsConsumed + }); + } + return downcastUnitsConsumed; + } catch (e) { + if (errors.isSolanaError(e, errors.SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT)) throw e; + throw new errors.SolanaError(errors.SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, { + cause: e + }); + } + } + function getComputeUnitEstimateForTransactionMessageFactory({ + rpc: rpc2 + }) { + return async function getComputeUnitEstimateForTransactionMessage(transactionMessage, config2) { + return await getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...config2, + rpc: rpc2, + transactionMessage + }); + }; + } + async function fetchAddressesForLookupTables(lookupTableAddresses, rpc2, config2) { + if (lookupTableAddresses.length === 0) { + return {}; + } + const fetchedLookupTables = await accounts.fetchJsonParsedAccounts( + rpc2, + lookupTableAddresses, + config2 + ); + accounts.assertAccountsDecoded(fetchedLookupTables); + accounts.assertAccountsExist(fetchedLookupTables); + return fetchedLookupTables.reduce((acc, lookup) => { + return { + ...acc, + [lookup.address]: lookup.data.addresses + }; + }, {}); + } + async function decompileTransactionMessageFetchingLookupTables(compiledTransactionMessage, rpc2, config2) { + const lookupTables = "addressTableLookups" in compiledTransactionMessage && compiledTransactionMessage.addressTableLookups !== void 0 && compiledTransactionMessage.addressTableLookups.length > 0 ? compiledTransactionMessage.addressTableLookups : []; + const lookupTableAddresses = lookupTables.map((l) => l.lookupTableAddress); + const { lastValidBlockHeight, ...fetchAccountsConfig } = config2 ?? {}; + const addressesByLookupTableAddress = lookupTableAddresses.length > 0 ? await fetchAddressesForLookupTables(lookupTableAddresses, rpc2, fetchAccountsConfig) : {}; + return transactionMessages.decompileTransactionMessage(compiledTransactionMessage, { + addressesByLookupTableAddress, + lastValidBlockHeight + }); + } + function getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, config2) { + if ( + // The developer has supplied no value for `preflightCommitment`. + !config2?.preflightCommitment && // The value of `commitment` is lower than the server default of `preflightCommitment`. + rpcTypes.commitmentComparator( + commitment, + "finalized" + /* default value of `preflightCommitment` */ + ) < 0 + ) { + return { + ...config2, + // In the common case, it is unlikely that you want to simulate a transaction at + // `finalized` commitment when your standard of commitment for confirming the + // transaction is lower. Cap the simulation commitment level to the level of the + // confirmation commitment. + preflightCommitment: commitment + }; + } + return config2; + } + async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + abortSignal, + commitment, + rpc: rpc2, + transaction, + ...sendTransactionConfig + }) { + const base64EncodedWireTransaction = transactions.getBase64EncodedWireTransaction(transaction); + return await rpc2.sendTransaction(base64EncodedWireTransaction, { + ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig), + encoding: "base64" + }).send({ abortSignal }); + } + async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + abortSignal, + commitment, + confirmDurableNonceTransaction, + rpc: rpc2, + transaction, + ...sendTransactionConfig + }) { + const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...sendTransactionConfig, + abortSignal, + commitment, + rpc: rpc2, + transaction + }); + await confirmDurableNonceTransaction({ + abortSignal, + commitment, + transaction + }); + return transactionSignature; + } + async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({ + abortSignal, + commitment, + confirmRecentTransaction, + rpc: rpc2, + transaction, + ...sendTransactionConfig + }) { + const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...sendTransactionConfig, + abortSignal, + commitment, + rpc: rpc2, + transaction + }); + await confirmRecentTransaction({ + abortSignal, + commitment, + transaction + }); + return transactionSignature; + } + function sendAndConfirmDurableNonceTransactionFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }) { + const getNonceInvalidationPromise = transactionConfirmation.createNonceInvalidationPromiseFactory({ rpc: rpc2, rpcSubscriptions: rpcSubscriptions2 }); + const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }); + async function confirmDurableNonceTransaction(config2) { + await transactionConfirmation.waitForDurableNonceTransactionConfirmation({ + ...config2, + getNonceInvalidationPromise, + getRecentSignatureConfirmationPromise + }); + } + return async function sendAndConfirmDurableNonceTransaction(transaction, config2) { + await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...config2, + confirmDurableNonceTransaction, + rpc: rpc2, + transaction + }); + }; + } + function sendAndConfirmTransactionFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }) { + const getBlockHeightExceedencePromise = transactionConfirmation.createBlockHeightExceedencePromiseFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }); + const getRecentSignatureConfirmationPromise = transactionConfirmation.createRecentSignatureConfirmationPromiseFactory({ + rpc: rpc2, + rpcSubscriptions: rpcSubscriptions2 + }); + async function confirmRecentTransaction(config2) { + await transactionConfirmation.waitForRecentTransactionConfirmation({ + ...config2, + getBlockHeightExceedencePromise, + getRecentSignatureConfirmationPromise + }); + } + return async function sendAndConfirmTransaction(transaction, config2) { + await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...config2, + confirmRecentTransaction, + rpc: rpc2, + transaction + }); + }; + } + function sendTransactionWithoutConfirmingFactory({ + rpc: rpc2 + }) { + return async function sendTransactionWithoutConfirming(transaction, config2) { + await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({ + ...config2, + rpc: rpc2, + transaction + }); + }; + } + Object.defineProperty(exports2, "createRpcMessage", { + enumerable: true, + get: function() { + return rpcSpecTypes.createRpcMessage; + } + }); + exports2.airdropFactory = airdropFactory; + exports2.decompileTransactionMessageFetchingLookupTables = decompileTransactionMessageFetchingLookupTables; + exports2.fetchAddressesForLookupTables = fetchAddressesForLookupTables; + exports2.getComputeUnitEstimateForTransactionMessageFactory = getComputeUnitEstimateForTransactionMessageFactory; + exports2.sendAndConfirmDurableNonceTransactionFactory = sendAndConfirmDurableNonceTransactionFactory; + exports2.sendAndConfirmTransactionFactory = sendAndConfirmTransactionFactory; + exports2.sendTransactionWithoutConfirmingFactory = sendTransactionWithoutConfirmingFactory; + Object.keys(accounts).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return accounts[k]; + } + }); + }); + Object.keys(addresses).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return addresses[k]; + } + }); + }); + Object.keys(codecs).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return codecs[k]; + } + }); + }); + Object.keys(errors).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return errors[k]; + } + }); + }); + Object.keys(functional).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return functional[k]; + } + }); + }); + Object.keys(instructions).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return instructions[k]; + } + }); + }); + Object.keys(keys).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return keys[k]; + } + }); + }); + Object.keys(programs).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return programs[k]; + } + }); + }); + Object.keys(rpc).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpc[k]; + } + }); + }); + Object.keys(rpcParsedTypes).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcParsedTypes[k]; + } + }); + }); + Object.keys(rpcSubscriptions).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcSubscriptions[k]; + } + }); + }); + Object.keys(rpcTypes).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return rpcTypes[k]; + } + }); + }); + Object.keys(signers).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return signers[k]; + } + }); + }); + Object.keys(transactionMessages).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return transactionMessages[k]; + } + }); + }); + Object.keys(transactions).forEach(function(k) { + if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports2, k)) Object.defineProperty(exports2, k, { + enumerable: true, + get: function() { + return transactions[k]; + } + }); + }); + } +}); + +// node_modules/@solana-program/token/dist/src/index.js +var require_src2 = __commonJS({ + "node_modules/@solana-program/token/dist/src/index.js"(exports2) { + "use strict"; + var kit = require_index_node34(); + function getMintEncoder() { + return kit.getStructEncoder([ + [ + "mintAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["supply", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()], + ["isInitialized", kit.getBooleanEncoder()], + [ + "freezeAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ] + ]); + } + function getMintDecoder() { + return kit.getStructDecoder([ + [ + "mintAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["supply", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()], + ["isInitialized", kit.getBooleanDecoder()], + [ + "freezeAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ] + ]); + } + function getMintCodec() { + return kit.combineCodec(getMintEncoder(), getMintDecoder()); + } + function decodeMint(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getMintDecoder() + ); + } + async function fetchMint(rpc, address, config2) { + const maybeAccount = await fetchMaybeMint(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeMint(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeMint(maybeAccount); + } + async function fetchAllMint(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeMint(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeMint(maybeAccount)); + } + function getMintSize() { + return 82; + } + function getMultisigEncoder() { + return kit.getStructEncoder([ + ["m", kit.getU8Encoder()], + ["n", kit.getU8Encoder()], + ["isInitialized", kit.getBooleanEncoder()], + ["signers", kit.getArrayEncoder(kit.getAddressEncoder(), { size: 11 })] + ]); + } + function getMultisigDecoder() { + return kit.getStructDecoder([ + ["m", kit.getU8Decoder()], + ["n", kit.getU8Decoder()], + ["isInitialized", kit.getBooleanDecoder()], + ["signers", kit.getArrayDecoder(kit.getAddressDecoder(), { size: 11 })] + ]); + } + function getMultisigCodec() { + return kit.combineCodec(getMultisigEncoder(), getMultisigDecoder()); + } + function decodeMultisig(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getMultisigDecoder() + ); + } + async function fetchMultisig(rpc, address, config2) { + const maybeAccount = await fetchMaybeMultisig(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeMultisig(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeMultisig(maybeAccount); + } + async function fetchAllMultisig(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeMultisig(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount)); + } + function getMultisigSize() { + return 355; + } + var AccountState = /* @__PURE__ */ ((AccountState2) => { + AccountState2[AccountState2["Uninitialized"] = 0] = "Uninitialized"; + AccountState2[AccountState2["Initialized"] = 1] = "Initialized"; + AccountState2[AccountState2["Frozen"] = 2] = "Frozen"; + return AccountState2; + })(AccountState || {}); + function getAccountStateEncoder() { + return kit.getEnumEncoder(AccountState); + } + function getAccountStateDecoder() { + return kit.getEnumDecoder(AccountState); + } + function getAccountStateCodec() { + return kit.combineCodec(getAccountStateEncoder(), getAccountStateDecoder()); + } + var AuthorityType = /* @__PURE__ */ ((AuthorityType2) => { + AuthorityType2[AuthorityType2["MintTokens"] = 0] = "MintTokens"; + AuthorityType2[AuthorityType2["FreezeAccount"] = 1] = "FreezeAccount"; + AuthorityType2[AuthorityType2["AccountOwner"] = 2] = "AccountOwner"; + AuthorityType2[AuthorityType2["CloseAccount"] = 3] = "CloseAccount"; + return AuthorityType2; + })(AuthorityType || {}); + function getAuthorityTypeEncoder() { + return kit.getEnumEncoder(AuthorityType); + } + function getAuthorityTypeDecoder() { + return kit.getEnumDecoder(AuthorityType); + } + function getAuthorityTypeCodec() { + return kit.combineCodec(getAuthorityTypeEncoder(), getAuthorityTypeDecoder()); + } + function getTokenEncoder() { + return kit.getStructEncoder([ + ["mint", kit.getAddressEncoder()], + ["owner", kit.getAddressEncoder()], + ["amount", kit.getU64Encoder()], + [ + "delegate", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["state", getAccountStateEncoder()], + [ + "isNative", + kit.getOptionEncoder(kit.getU64Encoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["delegatedAmount", kit.getU64Encoder()], + [ + "closeAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ] + ]); + } + function getTokenDecoder() { + return kit.getStructDecoder([ + ["mint", kit.getAddressDecoder()], + ["owner", kit.getAddressDecoder()], + ["amount", kit.getU64Decoder()], + [ + "delegate", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["state", getAccountStateDecoder()], + [ + "isNative", + kit.getOptionDecoder(kit.getU64Decoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["delegatedAmount", kit.getU64Decoder()], + [ + "closeAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ] + ]); + } + function getTokenCodec() { + return kit.combineCodec(getTokenEncoder(), getTokenDecoder()); + } + function decodeToken(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getTokenDecoder() + ); + } + async function fetchToken(rpc, address, config2) { + const maybeAccount = await fetchMaybeToken(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeToken(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeToken(maybeAccount); + } + async function fetchAllToken(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeToken(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeToken(maybeAccount)); + } + function getTokenSize() { + return 165; + } + var ASSOCIATED_TOKEN_PROGRAM_ADDRESS = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; + var AssociatedTokenInstruction = /* @__PURE__ */ ((AssociatedTokenInstruction2) => { + AssociatedTokenInstruction2[AssociatedTokenInstruction2["CreateAssociatedToken"] = 0] = "CreateAssociatedToken"; + AssociatedTokenInstruction2[AssociatedTokenInstruction2["CreateAssociatedTokenIdempotent"] = 1] = "CreateAssociatedTokenIdempotent"; + AssociatedTokenInstruction2[AssociatedTokenInstruction2["RecoverNestedAssociatedToken"] = 2] = "RecoverNestedAssociatedToken"; + return AssociatedTokenInstruction2; + })(AssociatedTokenInstruction || {}); + function identifyAssociatedTokenInstruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU8Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(2), 0)) { + return 2; + } + throw new Error( + "The provided instruction could not be identified as a associatedToken instruction." + ); + } + var TOKEN_PROGRAM_ADDRESS = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + var TokenAccount = /* @__PURE__ */ ((TokenAccount2) => { + TokenAccount2[TokenAccount2["Mint"] = 0] = "Mint"; + TokenAccount2[TokenAccount2["Token"] = 1] = "Token"; + TokenAccount2[TokenAccount2["Multisig"] = 2] = "Multisig"; + return TokenAccount2; + })(TokenAccount || {}); + function identifyTokenAccount(account) { + const data = "data" in account ? account.data : account; + if (data.length === 82) { + return 0; + } + if (data.length === 165) { + return 1; + } + if (data.length === 355) { + return 2; + } + throw new Error( + "The provided account could not be identified as a token account." + ); + } + var TokenInstruction = /* @__PURE__ */ ((TokenInstruction2) => { + TokenInstruction2[TokenInstruction2["InitializeMint"] = 0] = "InitializeMint"; + TokenInstruction2[TokenInstruction2["InitializeAccount"] = 1] = "InitializeAccount"; + TokenInstruction2[TokenInstruction2["InitializeMultisig"] = 2] = "InitializeMultisig"; + TokenInstruction2[TokenInstruction2["Transfer"] = 3] = "Transfer"; + TokenInstruction2[TokenInstruction2["Approve"] = 4] = "Approve"; + TokenInstruction2[TokenInstruction2["Revoke"] = 5] = "Revoke"; + TokenInstruction2[TokenInstruction2["SetAuthority"] = 6] = "SetAuthority"; + TokenInstruction2[TokenInstruction2["MintTo"] = 7] = "MintTo"; + TokenInstruction2[TokenInstruction2["Burn"] = 8] = "Burn"; + TokenInstruction2[TokenInstruction2["CloseAccount"] = 9] = "CloseAccount"; + TokenInstruction2[TokenInstruction2["FreezeAccount"] = 10] = "FreezeAccount"; + TokenInstruction2[TokenInstruction2["ThawAccount"] = 11] = "ThawAccount"; + TokenInstruction2[TokenInstruction2["TransferChecked"] = 12] = "TransferChecked"; + TokenInstruction2[TokenInstruction2["ApproveChecked"] = 13] = "ApproveChecked"; + TokenInstruction2[TokenInstruction2["MintToChecked"] = 14] = "MintToChecked"; + TokenInstruction2[TokenInstruction2["BurnChecked"] = 15] = "BurnChecked"; + TokenInstruction2[TokenInstruction2["InitializeAccount2"] = 16] = "InitializeAccount2"; + TokenInstruction2[TokenInstruction2["SyncNative"] = 17] = "SyncNative"; + TokenInstruction2[TokenInstruction2["InitializeAccount3"] = 18] = "InitializeAccount3"; + TokenInstruction2[TokenInstruction2["InitializeMultisig2"] = 19] = "InitializeMultisig2"; + TokenInstruction2[TokenInstruction2["InitializeMint2"] = 20] = "InitializeMint2"; + TokenInstruction2[TokenInstruction2["GetAccountDataSize"] = 21] = "GetAccountDataSize"; + TokenInstruction2[TokenInstruction2["InitializeImmutableOwner"] = 22] = "InitializeImmutableOwner"; + TokenInstruction2[TokenInstruction2["AmountToUiAmount"] = 23] = "AmountToUiAmount"; + TokenInstruction2[TokenInstruction2["UiAmountToAmount"] = 24] = "UiAmountToAmount"; + return TokenInstruction2; + })(TokenInstruction || {}); + function identifyTokenInstruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU8Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(2), 0)) { + return 2; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(3), 0)) { + return 3; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(4), 0)) { + return 4; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(5), 0)) { + return 5; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(6), 0)) { + return 6; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(7), 0)) { + return 7; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(8), 0)) { + return 8; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(9), 0)) { + return 9; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(10), 0)) { + return 10; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(11), 0)) { + return 11; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(12), 0)) { + return 12; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(13), 0)) { + return 13; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(14), 0)) { + return 14; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(15), 0)) { + return 15; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(16), 0)) { + return 16; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(17), 0)) { + return 17; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(18), 0)) { + return 18; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(19), 0)) { + return 19; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(20), 0)) { + return 20; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(21), 0)) { + return 21; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(22), 0)) { + return 22; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(23), 0)) { + return 23; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(24), 0)) { + return 24; + } + throw new Error( + "The provided instruction could not be identified as a token instruction." + ); + } + var ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = 0; + var associatedTokenErrorMessages; + if (process.env.NODE_ENV !== "production") { + associatedTokenErrorMessages = { + [ASSOCIATED_TOKEN_ERROR__INVALID_OWNER]: `Associated token account owner does not match address derivation` + }; + } + function getAssociatedTokenErrorMessage(code) { + if (process.env.NODE_ENV !== "production") { + return associatedTokenErrorMessages[code]; + } + return "Error message not available in production bundles."; + } + function isAssociatedTokenError(error, transactionMessage, code) { + return kit.isProgramError( + error, + transactionMessage, + ASSOCIATED_TOKEN_PROGRAM_ADDRESS, + code + ); + } + var TOKEN_ERROR__NOT_RENT_EXEMPT = 0; + var TOKEN_ERROR__INSUFFICIENT_FUNDS = 1; + var TOKEN_ERROR__INVALID_MINT = 2; + var TOKEN_ERROR__MINT_MISMATCH = 3; + var TOKEN_ERROR__OWNER_MISMATCH = 4; + var TOKEN_ERROR__FIXED_SUPPLY = 5; + var TOKEN_ERROR__ALREADY_IN_USE = 6; + var TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = 7; + var TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = 8; + var TOKEN_ERROR__UNINITIALIZED_STATE = 9; + var TOKEN_ERROR__NATIVE_NOT_SUPPORTED = 10; + var TOKEN_ERROR__NON_NATIVE_HAS_BALANCE = 11; + var TOKEN_ERROR__INVALID_INSTRUCTION = 12; + var TOKEN_ERROR__INVALID_STATE = 13; + var TOKEN_ERROR__OVERFLOW = 14; + var TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = 15; + var TOKEN_ERROR__MINT_CANNOT_FREEZE = 16; + var TOKEN_ERROR__ACCOUNT_FROZEN = 17; + var TOKEN_ERROR__MINT_DECIMALS_MISMATCH = 18; + var TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED = 19; + var tokenErrorMessages; + if (process.env.NODE_ENV !== "production") { + tokenErrorMessages = { + [TOKEN_ERROR__ACCOUNT_FROZEN]: `Account is frozen`, + [TOKEN_ERROR__ALREADY_IN_USE]: `Already in use`, + [TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED]: `Account does not support specified authority type`, + [TOKEN_ERROR__FIXED_SUPPLY]: `Fixed supply`, + [TOKEN_ERROR__INSUFFICIENT_FUNDS]: `Insufficient funds`, + [TOKEN_ERROR__INVALID_INSTRUCTION]: `Invalid instruction`, + [TOKEN_ERROR__INVALID_MINT]: `Invalid Mint`, + [TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS]: `Invalid number of provided signers`, + [TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS]: `Invalid number of required signers`, + [TOKEN_ERROR__INVALID_STATE]: `State is invalid for requested operation`, + [TOKEN_ERROR__MINT_CANNOT_FREEZE]: `This token mint cannot freeze accounts`, + [TOKEN_ERROR__MINT_DECIMALS_MISMATCH]: `The provided decimals value different from the Mint decimals`, + [TOKEN_ERROR__MINT_MISMATCH]: `Account not associated with this Mint`, + [TOKEN_ERROR__NATIVE_NOT_SUPPORTED]: `Instruction does not support native tokens`, + [TOKEN_ERROR__NON_NATIVE_HAS_BALANCE]: `Non-native account can only be closed if its balance is zero`, + [TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED]: `Instruction does not support non-native tokens`, + [TOKEN_ERROR__NOT_RENT_EXEMPT]: `Lamport balance below rent-exempt threshold`, + [TOKEN_ERROR__OVERFLOW]: `Operation overflowed`, + [TOKEN_ERROR__OWNER_MISMATCH]: `Owner does not match`, + [TOKEN_ERROR__UNINITIALIZED_STATE]: `State is unititialized` + }; + } + function getTokenErrorMessage(code) { + if (process.env.NODE_ENV !== "production") { + return tokenErrorMessages[code]; + } + return "Error message not available in production bundles."; + } + function isTokenError(error, transactionMessage, code) { + return kit.isProgramError( + error, + transactionMessage, + TOKEN_PROGRAM_ADDRESS, + code + ); + } + function expectAddress(value) { + if (!value) { + throw new Error("Expected a Address."); + } + if (typeof value === "object" && "address" in value) { + return value.address; + } + if (Array.isArray(value)) { + return value[0]; + } + return value; + } + function getAccountMetaFactory(programAddress, optionalAccountStrategy) { + return (account) => { + if (!account.value) { + return Object.freeze({ + address: programAddress, + role: kit.AccountRole.READONLY + }); + } + const writableRole = account.isWritable ? kit.AccountRole.WRITABLE : kit.AccountRole.READONLY; + return Object.freeze({ + address: expectAddress(account.value), + role: isTransactionSigner(account.value) ? kit.upgradeRoleToSigner(writableRole) : writableRole, + ...isTransactionSigner(account.value) ? { signer: account.value } : {} + }); + }; + } + function isTransactionSigner(value) { + return !!value && typeof value === "object" && "address" in value && kit.isTransactionSigner(value); + } + var AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = 23; + function getAmountToUiAmountDiscriminatorBytes() { + return kit.getU8Encoder().encode(AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR); + } + function getAmountToUiAmountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR }) + ); + } + function getAmountToUiAmountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getAmountToUiAmountInstructionDataCodec() { + return kit.combineCodec( + getAmountToUiAmountInstructionDataEncoder(), + getAmountToUiAmountInstructionDataDecoder() + ); + } + function getAmountToUiAmountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getAmountToUiAmountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAmountToUiAmountInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getAmountToUiAmountInstructionDataDecoder().decode(instruction.data) + }; + } + var APPROVE_DISCRIMINATOR = 4; + function getApproveDiscriminatorBytes() { + return kit.getU8Encoder().encode(APPROVE_DISCRIMINATOR); + } + function getApproveInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: APPROVE_DISCRIMINATOR }) + ); + } + function getApproveInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getApproveInstructionDataCodec() { + return kit.combineCodec( + getApproveInstructionDataEncoder(), + getApproveInstructionDataDecoder() + ); + } + function getApproveInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + delegate: { value: input.delegate ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.delegate), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getApproveInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseApproveInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + delegate: getNextAccount(), + owner: getNextAccount() + }, + data: getApproveInstructionDataDecoder().decode(instruction.data) + }; + } + var APPROVE_CHECKED_DISCRIMINATOR = 13; + function getApproveCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(APPROVE_CHECKED_DISCRIMINATOR); + } + function getApproveCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: APPROVE_CHECKED_DISCRIMINATOR }) + ); + } + function getApproveCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getApproveCheckedInstructionDataCodec() { + return kit.combineCodec( + getApproveCheckedInstructionDataEncoder(), + getApproveCheckedInstructionDataDecoder() + ); + } + function getApproveCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + delegate: { value: input.delegate ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.delegate), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getApproveCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseApproveCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + mint: getNextAccount(), + delegate: getNextAccount(), + owner: getNextAccount() + }, + data: getApproveCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var BURN_DISCRIMINATOR = 8; + function getBurnDiscriminatorBytes() { + return kit.getU8Encoder().encode(BURN_DISCRIMINATOR); + } + function getBurnInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: BURN_DISCRIMINATOR }) + ); + } + function getBurnInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getBurnInstructionDataCodec() { + return kit.combineCodec( + getBurnInstructionDataEncoder(), + getBurnInstructionDataDecoder() + ); + } + function getBurnInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getBurnInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseBurnInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getBurnInstructionDataDecoder().decode(instruction.data) + }; + } + var BURN_CHECKED_DISCRIMINATOR = 15; + function getBurnCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(BURN_CHECKED_DISCRIMINATOR); + } + function getBurnCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: BURN_CHECKED_DISCRIMINATOR }) + ); + } + function getBurnCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getBurnCheckedInstructionDataCodec() { + return kit.combineCodec( + getBurnCheckedInstructionDataEncoder(), + getBurnCheckedInstructionDataDecoder() + ); + } + function getBurnCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getBurnCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseBurnCheckedInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getBurnCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var CLOSE_ACCOUNT_DISCRIMINATOR = 9; + function getCloseAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(CLOSE_ACCOUNT_DISCRIMINATOR); + } + function getCloseAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: CLOSE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getCloseAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCloseAccountInstructionDataCodec() { + return kit.combineCodec( + getCloseAccountInstructionDataEncoder(), + getCloseAccountInstructionDataDecoder() + ); + } + function getCloseAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + destination: { value: input.destination ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getCloseAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCloseAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + destination: getNextAccount(), + owner: getNextAccount() + }, + data: getCloseAccountInstructionDataDecoder().decode(instruction.data) + }; + } + async function findAssociatedTokenPda(seeds, config2 = {}) { + const { + programAddress = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } = config2; + return await kit.getProgramDerivedAddress({ + programAddress, + seeds: [ + kit.getAddressEncoder().encode(seeds.owner), + kit.getAddressEncoder().encode(seeds.tokenProgram), + kit.getAddressEncoder().encode(seeds.mint) + ] + }); + } + var CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = 0; + function getCreateAssociatedTokenDiscriminatorBytes() { + return kit.getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR); + } + function getCreateAssociatedTokenInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR + }) + ); + } + function getCreateAssociatedTokenInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCreateAssociatedTokenInstructionDataCodec() { + return kit.combineCodec( + getCreateAssociatedTokenInstructionDataEncoder(), + getCreateAssociatedTokenInstructionDataDecoder() + ); + } + async function getCreateAssociatedTokenInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + if (!accounts.ata.value) { + accounts.ata.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.owner.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.mint.value) + }); + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getCreateAssociatedTokenInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCreateAssociatedTokenInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + payer: getNextAccount(), + ata: getNextAccount(), + owner: getNextAccount(), + mint: getNextAccount(), + systemProgram: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getCreateAssociatedTokenInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = 1; + function getCreateAssociatedTokenIdempotentDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR + ); + } + function getCreateAssociatedTokenIdempotentInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR + }) + ); + } + function getCreateAssociatedTokenIdempotentInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCreateAssociatedTokenIdempotentInstructionDataCodec() { + return kit.combineCodec( + getCreateAssociatedTokenIdempotentInstructionDataEncoder(), + getCreateAssociatedTokenIdempotentInstructionDataDecoder() + ); + } + async function getCreateAssociatedTokenIdempotentInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + if (!accounts.ata.value) { + accounts.ata.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.owner.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.mint.value) + }); + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getCreateAssociatedTokenIdempotentInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCreateAssociatedTokenIdempotentInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + payer: getNextAccount(), + ata: getNextAccount(), + owner: getNextAccount(), + mint: getNextAccount(), + systemProgram: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getCreateAssociatedTokenIdempotentInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var FREEZE_ACCOUNT_DISCRIMINATOR = 10; + function getFreezeAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(FREEZE_ACCOUNT_DISCRIMINATOR); + } + function getFreezeAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: FREEZE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getFreezeAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getFreezeAccountInstructionDataCodec() { + return kit.combineCodec( + getFreezeAccountInstructionDataEncoder(), + getFreezeAccountInstructionDataDecoder() + ); + } + function getFreezeAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getFreezeAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseFreezeAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount() + }, + data: getFreezeAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = 21; + function getGetAccountDataSizeDiscriminatorBytes() { + return kit.getU8Encoder().encode(GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR); + } + function getGetAccountDataSizeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR + }) + ); + } + function getGetAccountDataSizeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getGetAccountDataSizeInstructionDataCodec() { + return kit.combineCodec( + getGetAccountDataSizeInstructionDataEncoder(), + getGetAccountDataSizeInstructionDataDecoder() + ); + } + function getGetAccountDataSizeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getGetAccountDataSizeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseGetAccountDataSizeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getGetAccountDataSizeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_ACCOUNT_DISCRIMINATOR = 1; + function getInitializeAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT_DISCRIMINATOR); + } + function getInitializeAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getInitializeAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getInitializeAccountInstructionDataCodec() { + return kit.combineCodec( + getInitializeAccountInstructionDataEncoder(), + getInitializeAccountInstructionDataDecoder() + ); + } + function getInitializeAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.rent) + ], + programAddress, + data: getInitializeAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeAccountInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_ACCOUNT2_DISCRIMINATOR = 16; + function getInitializeAccount2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT2_DISCRIMINATOR); + } + function getInitializeAccount2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["owner", kit.getAddressEncoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT2_DISCRIMINATOR }) + ); + } + function getInitializeAccount2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["owner", kit.getAddressDecoder()] + ]); + } + function getInitializeAccount2InstructionDataCodec() { + return kit.combineCodec( + getInitializeAccount2InstructionDataEncoder(), + getInitializeAccount2InstructionDataDecoder() + ); + } + function getInitializeAccount2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.rent) + ], + programAddress, + data: getInitializeAccount2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeAccount2Instruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeAccount2InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_ACCOUNT3_DISCRIMINATOR = 18; + function getInitializeAccount3DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT3_DISCRIMINATOR); + } + function getInitializeAccount3InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["owner", kit.getAddressEncoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT3_DISCRIMINATOR }) + ); + } + function getInitializeAccount3InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["owner", kit.getAddressDecoder()] + ]); + } + function getInitializeAccount3InstructionDataCodec() { + return kit.combineCodec( + getInitializeAccount3InstructionDataEncoder(), + getInitializeAccount3InstructionDataDecoder() + ); + } + function getInitializeAccount3Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeAccount3InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeAccount3Instruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount() + }, + data: getInitializeAccount3InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = 22; + function getInitializeImmutableOwnerDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR); + } + function getInitializeImmutableOwnerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR + }) + ); + } + function getInitializeImmutableOwnerInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getInitializeImmutableOwnerInstructionDataCodec() { + return kit.combineCodec( + getInitializeImmutableOwnerInstructionDataEncoder(), + getInitializeImmutableOwnerInstructionDataDecoder() + ); + } + function getInitializeImmutableOwnerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account)], + programAddress, + data: getInitializeImmutableOwnerInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeImmutableOwnerInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount() + }, + data: getInitializeImmutableOwnerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_MINT_DISCRIMINATOR = 0; + function getInitializeMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MINT_DISCRIMINATOR); + } + function getInitializeMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["decimals", kit.getU8Encoder()], + ["mintAuthority", kit.getAddressEncoder()], + ["freezeAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_MINT_DISCRIMINATOR, + freezeAuthority: value.freezeAuthority ?? kit.none() + }) + ); + } + function getInitializeMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["decimals", kit.getU8Decoder()], + ["mintAuthority", kit.getAddressDecoder()], + ["freezeAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getInitializeMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeMintInstructionDataEncoder(), + getInitializeMintInstructionDataDecoder() + ); + } + function getInitializeMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)], + programAddress, + data: getInitializeMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeMintInstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_MINT2_DISCRIMINATOR = 20; + function getInitializeMint2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MINT2_DISCRIMINATOR); + } + function getInitializeMint2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["decimals", kit.getU8Encoder()], + ["mintAuthority", kit.getAddressEncoder()], + ["freezeAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_MINT2_DISCRIMINATOR, + freezeAuthority: value.freezeAuthority ?? kit.none() + }) + ); + } + function getInitializeMint2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["decimals", kit.getU8Decoder()], + ["mintAuthority", kit.getAddressDecoder()], + ["freezeAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getInitializeMint2InstructionDataCodec() { + return kit.combineCodec( + getInitializeMint2InstructionDataEncoder(), + getInitializeMint2InstructionDataDecoder() + ); + } + function getInitializeMint2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeMint2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMint2Instruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeMint2InstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_MULTISIG_DISCRIMINATOR = 2; + function getInitializeMultisigDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MULTISIG_DISCRIMINATOR); + } + function getInitializeMultisigInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["m", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG_DISCRIMINATOR }) + ); + } + function getInitializeMultisigInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["m", kit.getU8Decoder()] + ]); + } + function getInitializeMultisigInstructionDataCodec() { + return kit.combineCodec( + getInitializeMultisigInstructionDataEncoder(), + getInitializeMultisigInstructionDataDecoder() + ); + } + function getInitializeMultisigInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + multisig: { value: input.multisig ?? null, isWritable: true }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const remainingAccounts = args.signers.map((address) => ({ + address, + role: kit.AccountRole.READONLY + })); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.multisig), + getAccountMeta(accounts.rent), + ...remainingAccounts + ], + programAddress, + data: getInitializeMultisigInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMultisigInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + multisig: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeMultisigInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_MULTISIG2_DISCRIMINATOR = 19; + function getInitializeMultisig2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MULTISIG2_DISCRIMINATOR); + } + function getInitializeMultisig2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["m", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG2_DISCRIMINATOR }) + ); + } + function getInitializeMultisig2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["m", kit.getU8Decoder()] + ]); + } + function getInitializeMultisig2InstructionDataCodec() { + return kit.combineCodec( + getInitializeMultisig2InstructionDataEncoder(), + getInitializeMultisig2InstructionDataDecoder() + ); + } + function getInitializeMultisig2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + multisig: { value: input.multisig ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = args.signers.map((address) => ({ + address, + role: kit.AccountRole.READONLY + })); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.multisig), ...remainingAccounts], + programAddress, + data: getInitializeMultisig2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMultisig2Instruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + multisig: getNextAccount() + }, + data: getInitializeMultisig2InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var MINT_TO_DISCRIMINATOR = 7; + function getMintToDiscriminatorBytes() { + return kit.getU8Encoder().encode(MINT_TO_DISCRIMINATOR); + } + function getMintToInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: MINT_TO_DISCRIMINATOR }) + ); + } + function getMintToInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getMintToInstructionDataCodec() { + return kit.combineCodec( + getMintToInstructionDataEncoder(), + getMintToInstructionDataDecoder() + ); + } + function getMintToInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + token: { value: input.token ?? null, isWritable: true }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.token), + getAccountMeta(accounts.mintAuthority), + ...remainingAccounts + ], + programAddress, + data: getMintToInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMintToInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + token: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getMintToInstructionDataDecoder().decode(instruction.data) + }; + } + var MINT_TO_CHECKED_DISCRIMINATOR = 14; + function getMintToCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(MINT_TO_CHECKED_DISCRIMINATOR); + } + function getMintToCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: MINT_TO_CHECKED_DISCRIMINATOR }) + ); + } + function getMintToCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getMintToCheckedInstructionDataCodec() { + return kit.combineCodec( + getMintToCheckedInstructionDataEncoder(), + getMintToCheckedInstructionDataDecoder() + ); + } + function getMintToCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + token: { value: input.token ?? null, isWritable: true }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.token), + getAccountMeta(accounts.mintAuthority), + ...remainingAccounts + ], + programAddress, + data: getMintToCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMintToCheckedInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + token: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getMintToCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = 2; + function getRecoverNestedAssociatedTokenDiscriminatorBytes() { + return kit.getU8Encoder().encode(RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR); + } + function getRecoverNestedAssociatedTokenInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR + }) + ); + } + function getRecoverNestedAssociatedTokenInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getRecoverNestedAssociatedTokenInstructionDataCodec() { + return kit.combineCodec( + getRecoverNestedAssociatedTokenInstructionDataEncoder(), + getRecoverNestedAssociatedTokenInstructionDataDecoder() + ); + } + async function getRecoverNestedAssociatedTokenInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + nestedAssociatedAccountAddress: { + value: input.nestedAssociatedAccountAddress ?? null, + isWritable: true + }, + nestedTokenMintAddress: { + value: input.nestedTokenMintAddress ?? null, + isWritable: false + }, + destinationAssociatedAccountAddress: { + value: input.destinationAssociatedAccountAddress ?? null, + isWritable: true + }, + ownerAssociatedAccountAddress: { + value: input.ownerAssociatedAccountAddress ?? null, + isWritable: false + }, + ownerTokenMintAddress: { + value: input.ownerTokenMintAddress ?? null, + isWritable: false + }, + walletAddress: { value: input.walletAddress ?? null, isWritable: true }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + if (!accounts.ownerAssociatedAccountAddress.value) { + accounts.ownerAssociatedAccountAddress.value = await findAssociatedTokenPda( + { + owner: expectAddress(accounts.walletAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.ownerTokenMintAddress.value) + } + ); + } + if (!accounts.nestedAssociatedAccountAddress.value) { + accounts.nestedAssociatedAccountAddress.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.ownerAssociatedAccountAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.nestedTokenMintAddress.value) + }); + } + if (!accounts.destinationAssociatedAccountAddress.value) { + accounts.destinationAssociatedAccountAddress.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.walletAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.nestedTokenMintAddress.value) + }); + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.nestedAssociatedAccountAddress), + getAccountMeta(accounts.nestedTokenMintAddress), + getAccountMeta(accounts.destinationAssociatedAccountAddress), + getAccountMeta(accounts.ownerAssociatedAccountAddress), + getAccountMeta(accounts.ownerTokenMintAddress), + getAccountMeta(accounts.walletAddress), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getRecoverNestedAssociatedTokenInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + nestedAssociatedAccountAddress: { + value: input.nestedAssociatedAccountAddress ?? null, + isWritable: true + }, + nestedTokenMintAddress: { + value: input.nestedTokenMintAddress ?? null, + isWritable: false + }, + destinationAssociatedAccountAddress: { + value: input.destinationAssociatedAccountAddress ?? null, + isWritable: true + }, + ownerAssociatedAccountAddress: { + value: input.ownerAssociatedAccountAddress ?? null, + isWritable: false + }, + ownerTokenMintAddress: { + value: input.ownerTokenMintAddress ?? null, + isWritable: false + }, + walletAddress: { value: input.walletAddress ?? null, isWritable: true }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.nestedAssociatedAccountAddress), + getAccountMeta(accounts.nestedTokenMintAddress), + getAccountMeta(accounts.destinationAssociatedAccountAddress), + getAccountMeta(accounts.ownerAssociatedAccountAddress), + getAccountMeta(accounts.ownerTokenMintAddress), + getAccountMeta(accounts.walletAddress), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseRecoverNestedAssociatedTokenInstruction(instruction) { + if (instruction.accounts.length < 7) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + nestedAssociatedAccountAddress: getNextAccount(), + nestedTokenMintAddress: getNextAccount(), + destinationAssociatedAccountAddress: getNextAccount(), + ownerAssociatedAccountAddress: getNextAccount(), + ownerTokenMintAddress: getNextAccount(), + walletAddress: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getRecoverNestedAssociatedTokenInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var REVOKE_DISCRIMINATOR = 5; + function getRevokeDiscriminatorBytes() { + return kit.getU8Encoder().encode(REVOKE_DISCRIMINATOR); + } + function getRevokeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: REVOKE_DISCRIMINATOR }) + ); + } + function getRevokeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getRevokeInstructionDataCodec() { + return kit.combineCodec( + getRevokeInstructionDataEncoder(), + getRevokeInstructionDataDecoder() + ); + } + function getRevokeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getRevokeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseRevokeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + owner: getNextAccount() + }, + data: getRevokeInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_AUTHORITY_DISCRIMINATOR = 6; + function getSetAuthorityDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_AUTHORITY_DISCRIMINATOR); + } + function getSetAuthorityInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["authorityType", getAuthorityTypeEncoder()], + ["newAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR }) + ); + } + function getSetAuthorityInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["authorityType", getAuthorityTypeDecoder()], + ["newAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getSetAuthorityInstructionDataCodec() { + return kit.combineCodec( + getSetAuthorityInstructionDataEncoder(), + getSetAuthorityInstructionDataDecoder() + ); + } + function getSetAuthorityInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + owned: { value: input.owned ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.owned), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getSetAuthorityInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetAuthorityInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + owned: getNextAccount(), + owner: getNextAccount() + }, + data: getSetAuthorityInstructionDataDecoder().decode(instruction.data) + }; + } + var SYNC_NATIVE_DISCRIMINATOR = 17; + function getSyncNativeDiscriminatorBytes() { + return kit.getU8Encoder().encode(SYNC_NATIVE_DISCRIMINATOR); + } + function getSyncNativeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: SYNC_NATIVE_DISCRIMINATOR }) + ); + } + function getSyncNativeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getSyncNativeInstructionDataCodec() { + return kit.combineCodec( + getSyncNativeInstructionDataEncoder(), + getSyncNativeInstructionDataDecoder() + ); + } + function getSyncNativeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account)], + programAddress, + data: getSyncNativeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseSyncNativeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount() + }, + data: getSyncNativeInstructionDataDecoder().decode(instruction.data) + }; + } + var THAW_ACCOUNT_DISCRIMINATOR = 11; + function getThawAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(THAW_ACCOUNT_DISCRIMINATOR); + } + function getThawAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: THAW_ACCOUNT_DISCRIMINATOR }) + ); + } + function getThawAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getThawAccountInstructionDataCodec() { + return kit.combineCodec( + getThawAccountInstructionDataEncoder(), + getThawAccountInstructionDataDecoder() + ); + } + function getThawAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getThawAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseThawAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount() + }, + data: getThawAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var TRANSFER_DISCRIMINATOR = 3; + function getTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode(TRANSFER_DISCRIMINATOR); + } + function getTransferInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR }) + ); + } + function getTransferInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getTransferInstructionDataCodec() { + return kit.combineCodec( + getTransferInstructionDataEncoder(), + getTransferInstructionDataDecoder() + ); + } + function getTransferInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + destination: { value: input.destination ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getTransferInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseTransferInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + destination: getNextAccount(), + authority: getNextAccount() + }, + data: getTransferInstructionDataDecoder().decode(instruction.data) + }; + } + var TRANSFER_CHECKED_DISCRIMINATOR = 12; + function getTransferCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(TRANSFER_CHECKED_DISCRIMINATOR); + } + function getTransferCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: TRANSFER_CHECKED_DISCRIMINATOR }) + ); + } + function getTransferCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getTransferCheckedInstructionDataCodec() { + return kit.combineCodec( + getTransferCheckedInstructionDataEncoder(), + getTransferCheckedInstructionDataDecoder() + ); + } + function getTransferCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + destination: { value: input.destination ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getTransferCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseTransferCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + mint: getNextAccount(), + destination: getNextAccount(), + authority: getNextAccount() + }, + data: getTransferCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = 24; + function getUiAmountToAmountDiscriminatorBytes() { + return kit.getU8Encoder().encode(UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR); + } + function getUiAmountToAmountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["uiAmount", kit.getUtf8Encoder()] + ]), + (value) => ({ ...value, discriminator: UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR }) + ); + } + function getUiAmountToAmountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["uiAmount", kit.getUtf8Decoder()] + ]); + } + function getUiAmountToAmountInstructionDataCodec() { + return kit.combineCodec( + getUiAmountToAmountInstructionDataEncoder(), + getUiAmountToAmountInstructionDataDecoder() + ); + } + function getUiAmountToAmountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getUiAmountToAmountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUiAmountToAmountInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getUiAmountToAmountInstructionDataDecoder().decode(instruction.data) + }; + } + exports2.AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR; + exports2.APPROVE_CHECKED_DISCRIMINATOR = APPROVE_CHECKED_DISCRIMINATOR; + exports2.APPROVE_DISCRIMINATOR = APPROVE_DISCRIMINATOR; + exports2.ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = ASSOCIATED_TOKEN_ERROR__INVALID_OWNER; + exports2.ASSOCIATED_TOKEN_PROGRAM_ADDRESS = ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + exports2.AccountState = AccountState; + exports2.AssociatedTokenInstruction = AssociatedTokenInstruction; + exports2.AuthorityType = AuthorityType; + exports2.BURN_CHECKED_DISCRIMINATOR = BURN_CHECKED_DISCRIMINATOR; + exports2.BURN_DISCRIMINATOR = BURN_DISCRIMINATOR; + exports2.CLOSE_ACCOUNT_DISCRIMINATOR = CLOSE_ACCOUNT_DISCRIMINATOR; + exports2.CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR; + exports2.CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR; + exports2.FREEZE_ACCOUNT_DISCRIMINATOR = FREEZE_ACCOUNT_DISCRIMINATOR; + exports2.GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT2_DISCRIMINATOR = INITIALIZE_ACCOUNT2_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT3_DISCRIMINATOR = INITIALIZE_ACCOUNT3_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT_DISCRIMINATOR = INITIALIZE_ACCOUNT_DISCRIMINATOR; + exports2.INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR; + exports2.INITIALIZE_MINT2_DISCRIMINATOR = INITIALIZE_MINT2_DISCRIMINATOR; + exports2.INITIALIZE_MINT_DISCRIMINATOR = INITIALIZE_MINT_DISCRIMINATOR; + exports2.INITIALIZE_MULTISIG2_DISCRIMINATOR = INITIALIZE_MULTISIG2_DISCRIMINATOR; + exports2.INITIALIZE_MULTISIG_DISCRIMINATOR = INITIALIZE_MULTISIG_DISCRIMINATOR; + exports2.MINT_TO_CHECKED_DISCRIMINATOR = MINT_TO_CHECKED_DISCRIMINATOR; + exports2.MINT_TO_DISCRIMINATOR = MINT_TO_DISCRIMINATOR; + exports2.RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR; + exports2.REVOKE_DISCRIMINATOR = REVOKE_DISCRIMINATOR; + exports2.SET_AUTHORITY_DISCRIMINATOR = SET_AUTHORITY_DISCRIMINATOR; + exports2.SYNC_NATIVE_DISCRIMINATOR = SYNC_NATIVE_DISCRIMINATOR; + exports2.THAW_ACCOUNT_DISCRIMINATOR = THAW_ACCOUNT_DISCRIMINATOR; + exports2.TOKEN_ERROR__ACCOUNT_FROZEN = TOKEN_ERROR__ACCOUNT_FROZEN; + exports2.TOKEN_ERROR__ALREADY_IN_USE = TOKEN_ERROR__ALREADY_IN_USE; + exports2.TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED; + exports2.TOKEN_ERROR__FIXED_SUPPLY = TOKEN_ERROR__FIXED_SUPPLY; + exports2.TOKEN_ERROR__INSUFFICIENT_FUNDS = TOKEN_ERROR__INSUFFICIENT_FUNDS; + exports2.TOKEN_ERROR__INVALID_INSTRUCTION = TOKEN_ERROR__INVALID_INSTRUCTION; + exports2.TOKEN_ERROR__INVALID_MINT = TOKEN_ERROR__INVALID_MINT; + exports2.TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS; + exports2.TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS; + exports2.TOKEN_ERROR__INVALID_STATE = TOKEN_ERROR__INVALID_STATE; + exports2.TOKEN_ERROR__MINT_CANNOT_FREEZE = TOKEN_ERROR__MINT_CANNOT_FREEZE; + exports2.TOKEN_ERROR__MINT_DECIMALS_MISMATCH = TOKEN_ERROR__MINT_DECIMALS_MISMATCH; + exports2.TOKEN_ERROR__MINT_MISMATCH = TOKEN_ERROR__MINT_MISMATCH; + exports2.TOKEN_ERROR__NATIVE_NOT_SUPPORTED = TOKEN_ERROR__NATIVE_NOT_SUPPORTED; + exports2.TOKEN_ERROR__NON_NATIVE_HAS_BALANCE = TOKEN_ERROR__NON_NATIVE_HAS_BALANCE; + exports2.TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED = TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED; + exports2.TOKEN_ERROR__NOT_RENT_EXEMPT = TOKEN_ERROR__NOT_RENT_EXEMPT; + exports2.TOKEN_ERROR__OVERFLOW = TOKEN_ERROR__OVERFLOW; + exports2.TOKEN_ERROR__OWNER_MISMATCH = TOKEN_ERROR__OWNER_MISMATCH; + exports2.TOKEN_ERROR__UNINITIALIZED_STATE = TOKEN_ERROR__UNINITIALIZED_STATE; + exports2.TOKEN_PROGRAM_ADDRESS = TOKEN_PROGRAM_ADDRESS; + exports2.TRANSFER_CHECKED_DISCRIMINATOR = TRANSFER_CHECKED_DISCRIMINATOR; + exports2.TRANSFER_DISCRIMINATOR = TRANSFER_DISCRIMINATOR; + exports2.TokenAccount = TokenAccount; + exports2.TokenInstruction = TokenInstruction; + exports2.UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR; + exports2.decodeMint = decodeMint; + exports2.decodeMultisig = decodeMultisig; + exports2.decodeToken = decodeToken; + exports2.fetchAllMaybeMint = fetchAllMaybeMint; + exports2.fetchAllMaybeMultisig = fetchAllMaybeMultisig; + exports2.fetchAllMaybeToken = fetchAllMaybeToken; + exports2.fetchAllMint = fetchAllMint; + exports2.fetchAllMultisig = fetchAllMultisig; + exports2.fetchAllToken = fetchAllToken; + exports2.fetchMaybeMint = fetchMaybeMint; + exports2.fetchMaybeMultisig = fetchMaybeMultisig; + exports2.fetchMaybeToken = fetchMaybeToken; + exports2.fetchMint = fetchMint; + exports2.fetchMultisig = fetchMultisig; + exports2.fetchToken = fetchToken; + exports2.findAssociatedTokenPda = findAssociatedTokenPda; + exports2.getAccountStateCodec = getAccountStateCodec; + exports2.getAccountStateDecoder = getAccountStateDecoder; + exports2.getAccountStateEncoder = getAccountStateEncoder; + exports2.getAmountToUiAmountDiscriminatorBytes = getAmountToUiAmountDiscriminatorBytes; + exports2.getAmountToUiAmountInstruction = getAmountToUiAmountInstruction; + exports2.getAmountToUiAmountInstructionDataCodec = getAmountToUiAmountInstructionDataCodec; + exports2.getAmountToUiAmountInstructionDataDecoder = getAmountToUiAmountInstructionDataDecoder; + exports2.getAmountToUiAmountInstructionDataEncoder = getAmountToUiAmountInstructionDataEncoder; + exports2.getApproveCheckedDiscriminatorBytes = getApproveCheckedDiscriminatorBytes; + exports2.getApproveCheckedInstruction = getApproveCheckedInstruction; + exports2.getApproveCheckedInstructionDataCodec = getApproveCheckedInstructionDataCodec; + exports2.getApproveCheckedInstructionDataDecoder = getApproveCheckedInstructionDataDecoder; + exports2.getApproveCheckedInstructionDataEncoder = getApproveCheckedInstructionDataEncoder; + exports2.getApproveDiscriminatorBytes = getApproveDiscriminatorBytes; + exports2.getApproveInstruction = getApproveInstruction; + exports2.getApproveInstructionDataCodec = getApproveInstructionDataCodec; + exports2.getApproveInstructionDataDecoder = getApproveInstructionDataDecoder; + exports2.getApproveInstructionDataEncoder = getApproveInstructionDataEncoder; + exports2.getAssociatedTokenErrorMessage = getAssociatedTokenErrorMessage; + exports2.getAuthorityTypeCodec = getAuthorityTypeCodec; + exports2.getAuthorityTypeDecoder = getAuthorityTypeDecoder; + exports2.getAuthorityTypeEncoder = getAuthorityTypeEncoder; + exports2.getBurnCheckedDiscriminatorBytes = getBurnCheckedDiscriminatorBytes; + exports2.getBurnCheckedInstruction = getBurnCheckedInstruction; + exports2.getBurnCheckedInstructionDataCodec = getBurnCheckedInstructionDataCodec; + exports2.getBurnCheckedInstructionDataDecoder = getBurnCheckedInstructionDataDecoder; + exports2.getBurnCheckedInstructionDataEncoder = getBurnCheckedInstructionDataEncoder; + exports2.getBurnDiscriminatorBytes = getBurnDiscriminatorBytes; + exports2.getBurnInstruction = getBurnInstruction; + exports2.getBurnInstructionDataCodec = getBurnInstructionDataCodec; + exports2.getBurnInstructionDataDecoder = getBurnInstructionDataDecoder; + exports2.getBurnInstructionDataEncoder = getBurnInstructionDataEncoder; + exports2.getCloseAccountDiscriminatorBytes = getCloseAccountDiscriminatorBytes; + exports2.getCloseAccountInstruction = getCloseAccountInstruction; + exports2.getCloseAccountInstructionDataCodec = getCloseAccountInstructionDataCodec; + exports2.getCloseAccountInstructionDataDecoder = getCloseAccountInstructionDataDecoder; + exports2.getCloseAccountInstructionDataEncoder = getCloseAccountInstructionDataEncoder; + exports2.getCreateAssociatedTokenDiscriminatorBytes = getCreateAssociatedTokenDiscriminatorBytes; + exports2.getCreateAssociatedTokenIdempotentDiscriminatorBytes = getCreateAssociatedTokenIdempotentDiscriminatorBytes; + exports2.getCreateAssociatedTokenIdempotentInstruction = getCreateAssociatedTokenIdempotentInstruction; + exports2.getCreateAssociatedTokenIdempotentInstructionAsync = getCreateAssociatedTokenIdempotentInstructionAsync; + exports2.getCreateAssociatedTokenIdempotentInstructionDataCodec = getCreateAssociatedTokenIdempotentInstructionDataCodec; + exports2.getCreateAssociatedTokenIdempotentInstructionDataDecoder = getCreateAssociatedTokenIdempotentInstructionDataDecoder; + exports2.getCreateAssociatedTokenIdempotentInstructionDataEncoder = getCreateAssociatedTokenIdempotentInstructionDataEncoder; + exports2.getCreateAssociatedTokenInstruction = getCreateAssociatedTokenInstruction; + exports2.getCreateAssociatedTokenInstructionAsync = getCreateAssociatedTokenInstructionAsync; + exports2.getCreateAssociatedTokenInstructionDataCodec = getCreateAssociatedTokenInstructionDataCodec; + exports2.getCreateAssociatedTokenInstructionDataDecoder = getCreateAssociatedTokenInstructionDataDecoder; + exports2.getCreateAssociatedTokenInstructionDataEncoder = getCreateAssociatedTokenInstructionDataEncoder; + exports2.getFreezeAccountDiscriminatorBytes = getFreezeAccountDiscriminatorBytes; + exports2.getFreezeAccountInstruction = getFreezeAccountInstruction; + exports2.getFreezeAccountInstructionDataCodec = getFreezeAccountInstructionDataCodec; + exports2.getFreezeAccountInstructionDataDecoder = getFreezeAccountInstructionDataDecoder; + exports2.getFreezeAccountInstructionDataEncoder = getFreezeAccountInstructionDataEncoder; + exports2.getGetAccountDataSizeDiscriminatorBytes = getGetAccountDataSizeDiscriminatorBytes; + exports2.getGetAccountDataSizeInstruction = getGetAccountDataSizeInstruction; + exports2.getGetAccountDataSizeInstructionDataCodec = getGetAccountDataSizeInstructionDataCodec; + exports2.getGetAccountDataSizeInstructionDataDecoder = getGetAccountDataSizeInstructionDataDecoder; + exports2.getGetAccountDataSizeInstructionDataEncoder = getGetAccountDataSizeInstructionDataEncoder; + exports2.getInitializeAccount2DiscriminatorBytes = getInitializeAccount2DiscriminatorBytes; + exports2.getInitializeAccount2Instruction = getInitializeAccount2Instruction; + exports2.getInitializeAccount2InstructionDataCodec = getInitializeAccount2InstructionDataCodec; + exports2.getInitializeAccount2InstructionDataDecoder = getInitializeAccount2InstructionDataDecoder; + exports2.getInitializeAccount2InstructionDataEncoder = getInitializeAccount2InstructionDataEncoder; + exports2.getInitializeAccount3DiscriminatorBytes = getInitializeAccount3DiscriminatorBytes; + exports2.getInitializeAccount3Instruction = getInitializeAccount3Instruction; + exports2.getInitializeAccount3InstructionDataCodec = getInitializeAccount3InstructionDataCodec; + exports2.getInitializeAccount3InstructionDataDecoder = getInitializeAccount3InstructionDataDecoder; + exports2.getInitializeAccount3InstructionDataEncoder = getInitializeAccount3InstructionDataEncoder; + exports2.getInitializeAccountDiscriminatorBytes = getInitializeAccountDiscriminatorBytes; + exports2.getInitializeAccountInstruction = getInitializeAccountInstruction; + exports2.getInitializeAccountInstructionDataCodec = getInitializeAccountInstructionDataCodec; + exports2.getInitializeAccountInstructionDataDecoder = getInitializeAccountInstructionDataDecoder; + exports2.getInitializeAccountInstructionDataEncoder = getInitializeAccountInstructionDataEncoder; + exports2.getInitializeImmutableOwnerDiscriminatorBytes = getInitializeImmutableOwnerDiscriminatorBytes; + exports2.getInitializeImmutableOwnerInstruction = getInitializeImmutableOwnerInstruction; + exports2.getInitializeImmutableOwnerInstructionDataCodec = getInitializeImmutableOwnerInstructionDataCodec; + exports2.getInitializeImmutableOwnerInstructionDataDecoder = getInitializeImmutableOwnerInstructionDataDecoder; + exports2.getInitializeImmutableOwnerInstructionDataEncoder = getInitializeImmutableOwnerInstructionDataEncoder; + exports2.getInitializeMint2DiscriminatorBytes = getInitializeMint2DiscriminatorBytes; + exports2.getInitializeMint2Instruction = getInitializeMint2Instruction; + exports2.getInitializeMint2InstructionDataCodec = getInitializeMint2InstructionDataCodec; + exports2.getInitializeMint2InstructionDataDecoder = getInitializeMint2InstructionDataDecoder; + exports2.getInitializeMint2InstructionDataEncoder = getInitializeMint2InstructionDataEncoder; + exports2.getInitializeMintDiscriminatorBytes = getInitializeMintDiscriminatorBytes; + exports2.getInitializeMintInstruction = getInitializeMintInstruction; + exports2.getInitializeMintInstructionDataCodec = getInitializeMintInstructionDataCodec; + exports2.getInitializeMintInstructionDataDecoder = getInitializeMintInstructionDataDecoder; + exports2.getInitializeMintInstructionDataEncoder = getInitializeMintInstructionDataEncoder; + exports2.getInitializeMultisig2DiscriminatorBytes = getInitializeMultisig2DiscriminatorBytes; + exports2.getInitializeMultisig2Instruction = getInitializeMultisig2Instruction; + exports2.getInitializeMultisig2InstructionDataCodec = getInitializeMultisig2InstructionDataCodec; + exports2.getInitializeMultisig2InstructionDataDecoder = getInitializeMultisig2InstructionDataDecoder; + exports2.getInitializeMultisig2InstructionDataEncoder = getInitializeMultisig2InstructionDataEncoder; + exports2.getInitializeMultisigDiscriminatorBytes = getInitializeMultisigDiscriminatorBytes; + exports2.getInitializeMultisigInstruction = getInitializeMultisigInstruction; + exports2.getInitializeMultisigInstructionDataCodec = getInitializeMultisigInstructionDataCodec; + exports2.getInitializeMultisigInstructionDataDecoder = getInitializeMultisigInstructionDataDecoder; + exports2.getInitializeMultisigInstructionDataEncoder = getInitializeMultisigInstructionDataEncoder; + exports2.getMintCodec = getMintCodec; + exports2.getMintDecoder = getMintDecoder; + exports2.getMintEncoder = getMintEncoder; + exports2.getMintSize = getMintSize; + exports2.getMintToCheckedDiscriminatorBytes = getMintToCheckedDiscriminatorBytes; + exports2.getMintToCheckedInstruction = getMintToCheckedInstruction; + exports2.getMintToCheckedInstructionDataCodec = getMintToCheckedInstructionDataCodec; + exports2.getMintToCheckedInstructionDataDecoder = getMintToCheckedInstructionDataDecoder; + exports2.getMintToCheckedInstructionDataEncoder = getMintToCheckedInstructionDataEncoder; + exports2.getMintToDiscriminatorBytes = getMintToDiscriminatorBytes; + exports2.getMintToInstruction = getMintToInstruction; + exports2.getMintToInstructionDataCodec = getMintToInstructionDataCodec; + exports2.getMintToInstructionDataDecoder = getMintToInstructionDataDecoder; + exports2.getMintToInstructionDataEncoder = getMintToInstructionDataEncoder; + exports2.getMultisigCodec = getMultisigCodec; + exports2.getMultisigDecoder = getMultisigDecoder; + exports2.getMultisigEncoder = getMultisigEncoder; + exports2.getMultisigSize = getMultisigSize; + exports2.getRecoverNestedAssociatedTokenDiscriminatorBytes = getRecoverNestedAssociatedTokenDiscriminatorBytes; + exports2.getRecoverNestedAssociatedTokenInstruction = getRecoverNestedAssociatedTokenInstruction; + exports2.getRecoverNestedAssociatedTokenInstructionAsync = getRecoverNestedAssociatedTokenInstructionAsync; + exports2.getRecoverNestedAssociatedTokenInstructionDataCodec = getRecoverNestedAssociatedTokenInstructionDataCodec; + exports2.getRecoverNestedAssociatedTokenInstructionDataDecoder = getRecoverNestedAssociatedTokenInstructionDataDecoder; + exports2.getRecoverNestedAssociatedTokenInstructionDataEncoder = getRecoverNestedAssociatedTokenInstructionDataEncoder; + exports2.getRevokeDiscriminatorBytes = getRevokeDiscriminatorBytes; + exports2.getRevokeInstruction = getRevokeInstruction; + exports2.getRevokeInstructionDataCodec = getRevokeInstructionDataCodec; + exports2.getRevokeInstructionDataDecoder = getRevokeInstructionDataDecoder; + exports2.getRevokeInstructionDataEncoder = getRevokeInstructionDataEncoder; + exports2.getSetAuthorityDiscriminatorBytes = getSetAuthorityDiscriminatorBytes; + exports2.getSetAuthorityInstruction = getSetAuthorityInstruction; + exports2.getSetAuthorityInstructionDataCodec = getSetAuthorityInstructionDataCodec; + exports2.getSetAuthorityInstructionDataDecoder = getSetAuthorityInstructionDataDecoder; + exports2.getSetAuthorityInstructionDataEncoder = getSetAuthorityInstructionDataEncoder; + exports2.getSyncNativeDiscriminatorBytes = getSyncNativeDiscriminatorBytes; + exports2.getSyncNativeInstruction = getSyncNativeInstruction; + exports2.getSyncNativeInstructionDataCodec = getSyncNativeInstructionDataCodec; + exports2.getSyncNativeInstructionDataDecoder = getSyncNativeInstructionDataDecoder; + exports2.getSyncNativeInstructionDataEncoder = getSyncNativeInstructionDataEncoder; + exports2.getThawAccountDiscriminatorBytes = getThawAccountDiscriminatorBytes; + exports2.getThawAccountInstruction = getThawAccountInstruction; + exports2.getThawAccountInstructionDataCodec = getThawAccountInstructionDataCodec; + exports2.getThawAccountInstructionDataDecoder = getThawAccountInstructionDataDecoder; + exports2.getThawAccountInstructionDataEncoder = getThawAccountInstructionDataEncoder; + exports2.getTokenCodec = getTokenCodec; + exports2.getTokenDecoder = getTokenDecoder; + exports2.getTokenEncoder = getTokenEncoder; + exports2.getTokenErrorMessage = getTokenErrorMessage; + exports2.getTokenSize = getTokenSize; + exports2.getTransferCheckedDiscriminatorBytes = getTransferCheckedDiscriminatorBytes; + exports2.getTransferCheckedInstruction = getTransferCheckedInstruction; + exports2.getTransferCheckedInstructionDataCodec = getTransferCheckedInstructionDataCodec; + exports2.getTransferCheckedInstructionDataDecoder = getTransferCheckedInstructionDataDecoder; + exports2.getTransferCheckedInstructionDataEncoder = getTransferCheckedInstructionDataEncoder; + exports2.getTransferDiscriminatorBytes = getTransferDiscriminatorBytes; + exports2.getTransferInstruction = getTransferInstruction; + exports2.getTransferInstructionDataCodec = getTransferInstructionDataCodec; + exports2.getTransferInstructionDataDecoder = getTransferInstructionDataDecoder; + exports2.getTransferInstructionDataEncoder = getTransferInstructionDataEncoder; + exports2.getUiAmountToAmountDiscriminatorBytes = getUiAmountToAmountDiscriminatorBytes; + exports2.getUiAmountToAmountInstruction = getUiAmountToAmountInstruction; + exports2.getUiAmountToAmountInstructionDataCodec = getUiAmountToAmountInstructionDataCodec; + exports2.getUiAmountToAmountInstructionDataDecoder = getUiAmountToAmountInstructionDataDecoder; + exports2.getUiAmountToAmountInstructionDataEncoder = getUiAmountToAmountInstructionDataEncoder; + exports2.identifyAssociatedTokenInstruction = identifyAssociatedTokenInstruction; + exports2.identifyTokenAccount = identifyTokenAccount; + exports2.identifyTokenInstruction = identifyTokenInstruction; + exports2.isAssociatedTokenError = isAssociatedTokenError; + exports2.isTokenError = isTokenError; + exports2.parseAmountToUiAmountInstruction = parseAmountToUiAmountInstruction; + exports2.parseApproveCheckedInstruction = parseApproveCheckedInstruction; + exports2.parseApproveInstruction = parseApproveInstruction; + exports2.parseBurnCheckedInstruction = parseBurnCheckedInstruction; + exports2.parseBurnInstruction = parseBurnInstruction; + exports2.parseCloseAccountInstruction = parseCloseAccountInstruction; + exports2.parseCreateAssociatedTokenIdempotentInstruction = parseCreateAssociatedTokenIdempotentInstruction; + exports2.parseCreateAssociatedTokenInstruction = parseCreateAssociatedTokenInstruction; + exports2.parseFreezeAccountInstruction = parseFreezeAccountInstruction; + exports2.parseGetAccountDataSizeInstruction = parseGetAccountDataSizeInstruction; + exports2.parseInitializeAccount2Instruction = parseInitializeAccount2Instruction; + exports2.parseInitializeAccount3Instruction = parseInitializeAccount3Instruction; + exports2.parseInitializeAccountInstruction = parseInitializeAccountInstruction; + exports2.parseInitializeImmutableOwnerInstruction = parseInitializeImmutableOwnerInstruction; + exports2.parseInitializeMint2Instruction = parseInitializeMint2Instruction; + exports2.parseInitializeMintInstruction = parseInitializeMintInstruction; + exports2.parseInitializeMultisig2Instruction = parseInitializeMultisig2Instruction; + exports2.parseInitializeMultisigInstruction = parseInitializeMultisigInstruction; + exports2.parseMintToCheckedInstruction = parseMintToCheckedInstruction; + exports2.parseMintToInstruction = parseMintToInstruction; + exports2.parseRecoverNestedAssociatedTokenInstruction = parseRecoverNestedAssociatedTokenInstruction; + exports2.parseRevokeInstruction = parseRevokeInstruction; + exports2.parseSetAuthorityInstruction = parseSetAuthorityInstruction; + exports2.parseSyncNativeInstruction = parseSyncNativeInstruction; + exports2.parseThawAccountInstruction = parseThawAccountInstruction; + exports2.parseTransferCheckedInstruction = parseTransferCheckedInstruction; + exports2.parseTransferInstruction = parseTransferInstruction; + exports2.parseUiAmountToAmountInstruction = parseUiAmountToAmountInstruction; + } +}); + +// node_modules/@solana/sysvars/dist/index.node.cjs +var require_index_node35 = __commonJS({ + "node_modules/@solana/sysvars/dist/index.node.cjs"(exports2) { + "use strict"; + var accounts = require_index_node4(); + var codecs = require_index_node10(); + var rpcTypes = require_index_node29(); + var errors = require_index_node(); + var SYSVAR_CLOCK_ADDRESS = "SysvarC1ock11111111111111111111111111111111"; + var SYSVAR_EPOCH_REWARDS_ADDRESS = "SysvarEpochRewards1111111111111111111111111"; + var SYSVAR_EPOCH_SCHEDULE_ADDRESS = "SysvarEpochSchedu1e111111111111111111111111"; + var SYSVAR_INSTRUCTIONS_ADDRESS = "Sysvar1nstructions1111111111111111111111111"; + var SYSVAR_LAST_RESTART_SLOT_ADDRESS = "SysvarLastRestartS1ot1111111111111111111111"; + var SYSVAR_RECENT_BLOCKHASHES_ADDRESS = "SysvarRecentB1ockHashes11111111111111111111"; + var SYSVAR_RENT_ADDRESS = "SysvarRent111111111111111111111111111111111"; + var SYSVAR_SLOT_HASHES_ADDRESS = "SysvarS1otHashes111111111111111111111111111"; + var SYSVAR_SLOT_HISTORY_ADDRESS = "SysvarS1otHistory11111111111111111111111111"; + var SYSVAR_STAKE_HISTORY_ADDRESS = "SysvarStakeHistory1111111111111111111111111"; + async function fetchEncodedSysvarAccount(rpc, address, config2) { + return await accounts.fetchEncodedAccount(rpc, address, config2); + } + async function fetchJsonParsedSysvarAccount(rpc, address, config2) { + return await accounts.fetchJsonParsedAccount(rpc, address, config2); + } + function getSysvarClockEncoder() { + return codecs.getStructEncoder([ + ["slot", codecs.getU64Encoder()], + ["epochStartTimestamp", codecs.getI64Encoder()], + ["epoch", codecs.getU64Encoder()], + ["leaderScheduleEpoch", codecs.getU64Encoder()], + ["unixTimestamp", codecs.getI64Encoder()] + ]); + } + function getSysvarClockDecoder() { + return codecs.getStructDecoder([ + ["slot", codecs.getU64Decoder()], + ["epochStartTimestamp", codecs.getI64Decoder()], + ["epoch", codecs.getU64Decoder()], + ["leaderScheduleEpoch", codecs.getU64Decoder()], + ["unixTimestamp", codecs.getI64Decoder()] + ]); + } + function getSysvarClockCodec() { + return codecs.combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder()); + } + async function fetchSysvarClock(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarClockDecoder()); + return decoded.data; + } + function getSysvarEpochRewardsEncoder() { + return codecs.getStructEncoder([ + ["distributionStartingBlockHeight", codecs.getU64Encoder()], + ["numPartitions", codecs.getU64Encoder()], + ["parentBlockhash", rpcTypes.getBlockhashEncoder()], + ["totalPoints", codecs.getU128Encoder()], + ["totalRewards", rpcTypes.getDefaultLamportsEncoder()], + ["distributedRewards", rpcTypes.getDefaultLamportsEncoder()], + ["active", codecs.getBooleanEncoder()] + ]); + } + function getSysvarEpochRewardsDecoder() { + return codecs.getStructDecoder([ + ["distributionStartingBlockHeight", codecs.getU64Decoder()], + ["numPartitions", codecs.getU64Decoder()], + ["parentBlockhash", rpcTypes.getBlockhashDecoder()], + ["totalPoints", codecs.getU128Decoder()], + ["totalRewards", rpcTypes.getDefaultLamportsDecoder()], + ["distributedRewards", rpcTypes.getDefaultLamportsDecoder()], + ["active", codecs.getBooleanDecoder()] + ]); + } + function getSysvarEpochRewardsCodec() { + return codecs.combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder()); + } + async function fetchSysvarEpochRewards(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarEpochRewardsDecoder()); + return decoded.data; + } + function getSysvarEpochScheduleEncoder() { + return codecs.getStructEncoder([ + ["slotsPerEpoch", codecs.getU64Encoder()], + ["leaderScheduleSlotOffset", codecs.getU64Encoder()], + ["warmup", codecs.getBooleanEncoder()], + ["firstNormalEpoch", codecs.getU64Encoder()], + ["firstNormalSlot", codecs.getU64Encoder()] + ]); + } + function getSysvarEpochScheduleDecoder() { + return codecs.getStructDecoder([ + ["slotsPerEpoch", codecs.getU64Decoder()], + ["leaderScheduleSlotOffset", codecs.getU64Decoder()], + ["warmup", codecs.getBooleanDecoder()], + ["firstNormalEpoch", codecs.getU64Decoder()], + ["firstNormalSlot", codecs.getU64Decoder()] + ]); + } + function getSysvarEpochScheduleCodec() { + return codecs.combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder()); + } + async function fetchSysvarEpochSchedule(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarEpochScheduleDecoder()); + return decoded.data; + } + function getSysvarLastRestartSlotEncoder() { + return codecs.getStructEncoder([["lastRestartSlot", codecs.getU64Encoder()]]); + } + function getSysvarLastRestartSlotDecoder() { + return codecs.getStructDecoder([["lastRestartSlot", codecs.getU64Decoder()]]); + } + function getSysvarLastRestartSlotCodec() { + return codecs.combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder()); + } + async function fetchSysvarLastRestartSlot(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarLastRestartSlotDecoder()); + return decoded.data; + } + function getSysvarRecentBlockhashesEncoder() { + return codecs.getArrayEncoder( + codecs.getStructEncoder([ + ["blockhash", rpcTypes.getBlockhashEncoder()], + ["feeCalculator", codecs.getStructEncoder([["lamportsPerSignature", rpcTypes.getDefaultLamportsEncoder()]])] + ]) + ); + } + function getSysvarRecentBlockhashesDecoder() { + return codecs.getArrayDecoder( + codecs.getStructDecoder([ + ["blockhash", rpcTypes.getBlockhashDecoder()], + ["feeCalculator", codecs.getStructDecoder([["lamportsPerSignature", rpcTypes.getDefaultLamportsDecoder()]])] + ]) + ); + } + function getSysvarRecentBlockhashesCodec() { + return codecs.combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder()); + } + async function fetchSysvarRecentBlockhashes(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarRecentBlockhashesDecoder()); + return decoded.data; + } + function getSysvarRentEncoder() { + return codecs.getStructEncoder([ + ["lamportsPerByteYear", rpcTypes.getDefaultLamportsEncoder()], + ["exemptionThreshold", codecs.getF64Encoder()], + ["burnPercent", codecs.getU8Encoder()] + ]); + } + function getSysvarRentDecoder() { + return codecs.getStructDecoder([ + ["lamportsPerByteYear", rpcTypes.getDefaultLamportsDecoder()], + ["exemptionThreshold", codecs.getF64Decoder()], + ["burnPercent", codecs.getU8Decoder()] + ]); + } + function getSysvarRentCodec() { + return codecs.combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder()); + } + async function fetchSysvarRent(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarRentDecoder()); + return decoded.data; + } + function getSysvarSlotHashesEncoder() { + return codecs.getArrayEncoder( + codecs.getStructEncoder([ + ["slot", codecs.getU64Encoder()], + ["hash", rpcTypes.getBlockhashEncoder()] + ]) + ); + } + function getSysvarSlotHashesDecoder() { + return codecs.getArrayDecoder( + codecs.getStructDecoder([ + ["slot", codecs.getU64Decoder()], + ["hash", rpcTypes.getBlockhashDecoder()] + ]) + ); + } + function getSysvarSlotHashesCodec() { + return codecs.combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder()); + } + async function fetchSysvarSlotHashes(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarSlotHashesDecoder()); + return decoded.data; + } + var BITVEC_DISCRIMINATOR = 1; + var BITVEC_NUM_BITS = 1024 * 1024; + var BITVEC_LENGTH = BITVEC_NUM_BITS / 64; + var SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE = 1 + // Discriminator + 8 + // bitvector length (u64) + BITVEC_LENGTH * 8 + 8 + // Number of bits (u64) + 8; + var memoizedU64Encoder; + var memoizedU64Decoder; + var memoizedU64ArrayEncoder; + var memoizedU64ArrayDecoder; + function getMemoizedU64Encoder() { + if (!memoizedU64Encoder) memoizedU64Encoder = codecs.getU64Encoder(); + return memoizedU64Encoder; + } + function getMemoizedU64Decoder() { + if (!memoizedU64Decoder) memoizedU64Decoder = codecs.getU64Decoder(); + return memoizedU64Decoder; + } + function getMemoizedU64ArrayEncoder() { + if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = codecs.getArrayCodec(codecs.getU64Codec(), { size: BITVEC_LENGTH }); + return memoizedU64ArrayEncoder; + } + function getMemoizedU64ArrayDecoder() { + if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = codecs.getArrayCodec(codecs.getU64Codec(), { size: BITVEC_LENGTH }); + return memoizedU64ArrayDecoder; + } + function getSysvarSlotHistoryEncoder() { + return codecs.createEncoder({ + fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE, + write: (value, bytes, offset) => { + bytes.set([BITVEC_DISCRIMINATOR], offset); + offset += 1; + getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset); + offset += 8; + getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset); + offset += BITVEC_LENGTH * 8; + getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset); + offset += 8; + getMemoizedU64Encoder().write(value.nextSlot, bytes, offset); + offset += 8; + return offset; + } + }); + } + function getSysvarSlotHistoryDecoder() { + return codecs.createDecoder({ + fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE, + read: (bytes, offset) => { + if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, { + actual: bytes.length, + expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE + }); + } + const discriminator = bytes[offset]; + offset += 1; + if (discriminator !== BITVEC_DISCRIMINATOR) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, { + actual: discriminator, + expected: BITVEC_DISCRIMINATOR + }); + } + const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0]; + offset += 8; + if (bitVecLength !== BigInt(BITVEC_LENGTH)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, { + actual: bitVecLength, + codecDescription: "SysvarSlotHistoryCodec", + expected: BITVEC_LENGTH + }); + } + const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0]; + offset += BITVEC_LENGTH * 8; + const numBits = getMemoizedU64Decoder().read(bytes, offset)[0]; + offset += 8; + if (numBits !== BigInt(BITVEC_NUM_BITS)) { + throw new errors.SolanaError(errors.SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, { + actual: numBits, + codecDescription: "SysvarSlotHistoryCodec", + expected: BITVEC_NUM_BITS + }); + } + const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0]; + offset += 8; + return [ + { + bits, + nextSlot + }, + offset + ]; + } + }); + } + function getSysvarSlotHistoryCodec() { + return codecs.combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder()); + } + async function fetchSysvarSlotHistory(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarSlotHistoryDecoder()); + return decoded.data; + } + function getSysvarStakeHistoryEncoder() { + return codecs.getArrayEncoder( + codecs.getStructEncoder([ + ["epoch", codecs.getU64Encoder()], + [ + "stakeHistory", + codecs.getStructEncoder([ + ["effective", rpcTypes.getDefaultLamportsEncoder()], + ["activating", rpcTypes.getDefaultLamportsEncoder()], + ["deactivating", rpcTypes.getDefaultLamportsEncoder()] + ]) + ] + ]), + { size: codecs.getU64Encoder() } + ); + } + function getSysvarStakeHistoryDecoder() { + return codecs.getArrayDecoder( + codecs.getStructDecoder([ + ["epoch", codecs.getU64Decoder()], + [ + "stakeHistory", + codecs.getStructDecoder([ + ["effective", rpcTypes.getDefaultLamportsDecoder()], + ["activating", rpcTypes.getDefaultLamportsDecoder()], + ["deactivating", rpcTypes.getDefaultLamportsDecoder()] + ]) + ] + ]), + { size: codecs.getU64Decoder() } + ); + } + function getSysvarStakeHistoryCodec() { + return codecs.combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder()); + } + async function fetchSysvarStakeHistory(rpc, config2) { + const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config2); + accounts.assertAccountExists(account); + const decoded = accounts.decodeAccount(account, getSysvarStakeHistoryDecoder()); + return decoded.data; + } + exports2.SYSVAR_CLOCK_ADDRESS = SYSVAR_CLOCK_ADDRESS; + exports2.SYSVAR_EPOCH_REWARDS_ADDRESS = SYSVAR_EPOCH_REWARDS_ADDRESS; + exports2.SYSVAR_EPOCH_SCHEDULE_ADDRESS = SYSVAR_EPOCH_SCHEDULE_ADDRESS; + exports2.SYSVAR_INSTRUCTIONS_ADDRESS = SYSVAR_INSTRUCTIONS_ADDRESS; + exports2.SYSVAR_LAST_RESTART_SLOT_ADDRESS = SYSVAR_LAST_RESTART_SLOT_ADDRESS; + exports2.SYSVAR_RECENT_BLOCKHASHES_ADDRESS = SYSVAR_RECENT_BLOCKHASHES_ADDRESS; + exports2.SYSVAR_RENT_ADDRESS = SYSVAR_RENT_ADDRESS; + exports2.SYSVAR_SLOT_HASHES_ADDRESS = SYSVAR_SLOT_HASHES_ADDRESS; + exports2.SYSVAR_SLOT_HISTORY_ADDRESS = SYSVAR_SLOT_HISTORY_ADDRESS; + exports2.SYSVAR_STAKE_HISTORY_ADDRESS = SYSVAR_STAKE_HISTORY_ADDRESS; + exports2.fetchEncodedSysvarAccount = fetchEncodedSysvarAccount; + exports2.fetchJsonParsedSysvarAccount = fetchJsonParsedSysvarAccount; + exports2.fetchSysvarClock = fetchSysvarClock; + exports2.fetchSysvarEpochRewards = fetchSysvarEpochRewards; + exports2.fetchSysvarEpochSchedule = fetchSysvarEpochSchedule; + exports2.fetchSysvarLastRestartSlot = fetchSysvarLastRestartSlot; + exports2.fetchSysvarRecentBlockhashes = fetchSysvarRecentBlockhashes; + exports2.fetchSysvarRent = fetchSysvarRent; + exports2.fetchSysvarSlotHashes = fetchSysvarSlotHashes; + exports2.fetchSysvarSlotHistory = fetchSysvarSlotHistory; + exports2.fetchSysvarStakeHistory = fetchSysvarStakeHistory; + exports2.getSysvarClockCodec = getSysvarClockCodec; + exports2.getSysvarClockDecoder = getSysvarClockDecoder; + exports2.getSysvarClockEncoder = getSysvarClockEncoder; + exports2.getSysvarEpochRewardsCodec = getSysvarEpochRewardsCodec; + exports2.getSysvarEpochRewardsDecoder = getSysvarEpochRewardsDecoder; + exports2.getSysvarEpochRewardsEncoder = getSysvarEpochRewardsEncoder; + exports2.getSysvarEpochScheduleCodec = getSysvarEpochScheduleCodec; + exports2.getSysvarEpochScheduleDecoder = getSysvarEpochScheduleDecoder; + exports2.getSysvarEpochScheduleEncoder = getSysvarEpochScheduleEncoder; + exports2.getSysvarLastRestartSlotCodec = getSysvarLastRestartSlotCodec; + exports2.getSysvarLastRestartSlotDecoder = getSysvarLastRestartSlotDecoder; + exports2.getSysvarLastRestartSlotEncoder = getSysvarLastRestartSlotEncoder; + exports2.getSysvarRecentBlockhashesCodec = getSysvarRecentBlockhashesCodec; + exports2.getSysvarRecentBlockhashesDecoder = getSysvarRecentBlockhashesDecoder; + exports2.getSysvarRecentBlockhashesEncoder = getSysvarRecentBlockhashesEncoder; + exports2.getSysvarRentCodec = getSysvarRentCodec; + exports2.getSysvarRentDecoder = getSysvarRentDecoder; + exports2.getSysvarRentEncoder = getSysvarRentEncoder; + exports2.getSysvarSlotHashesCodec = getSysvarSlotHashesCodec; + exports2.getSysvarSlotHashesDecoder = getSysvarSlotHashesDecoder; + exports2.getSysvarSlotHashesEncoder = getSysvarSlotHashesEncoder; + exports2.getSysvarSlotHistoryCodec = getSysvarSlotHistoryCodec; + exports2.getSysvarSlotHistoryDecoder = getSysvarSlotHistoryDecoder; + exports2.getSysvarSlotHistoryEncoder = getSysvarSlotHistoryEncoder; + exports2.getSysvarStakeHistoryCodec = getSysvarStakeHistoryCodec; + exports2.getSysvarStakeHistoryDecoder = getSysvarStakeHistoryDecoder; + exports2.getSysvarStakeHistoryEncoder = getSysvarStakeHistoryEncoder; + } +}); + +// node_modules/@solana-program/token-2022/dist/src/index.js +var require_src3 = __commonJS({ + "node_modules/@solana-program/token-2022/dist/src/index.js"(exports2) { + "use strict"; + var kit = require_index_node34(); + var sysvars = require_index_node35(); + var AccountState = /* @__PURE__ */ ((AccountState2) => { + AccountState2[AccountState2["Uninitialized"] = 0] = "Uninitialized"; + AccountState2[AccountState2["Initialized"] = 1] = "Initialized"; + AccountState2[AccountState2["Frozen"] = 2] = "Frozen"; + return AccountState2; + })(AccountState || {}); + function getAccountStateEncoder() { + return kit.getEnumEncoder(AccountState); + } + function getAccountStateDecoder() { + return kit.getEnumDecoder(AccountState); + } + function getAccountStateCodec() { + return kit.combineCodec(getAccountStateEncoder(), getAccountStateDecoder()); + } + var AuthorityType = /* @__PURE__ */ ((AuthorityType2) => { + AuthorityType2[AuthorityType2["MintTokens"] = 0] = "MintTokens"; + AuthorityType2[AuthorityType2["FreezeAccount"] = 1] = "FreezeAccount"; + AuthorityType2[AuthorityType2["AccountOwner"] = 2] = "AccountOwner"; + AuthorityType2[AuthorityType2["CloseAccount"] = 3] = "CloseAccount"; + AuthorityType2[AuthorityType2["TransferFeeConfig"] = 4] = "TransferFeeConfig"; + AuthorityType2[AuthorityType2["WithheldWithdraw"] = 5] = "WithheldWithdraw"; + AuthorityType2[AuthorityType2["CloseMint"] = 6] = "CloseMint"; + AuthorityType2[AuthorityType2["InterestRate"] = 7] = "InterestRate"; + AuthorityType2[AuthorityType2["PermanentDelegate"] = 8] = "PermanentDelegate"; + AuthorityType2[AuthorityType2["ConfidentialTransferMint"] = 9] = "ConfidentialTransferMint"; + AuthorityType2[AuthorityType2["TransferHookProgramId"] = 10] = "TransferHookProgramId"; + AuthorityType2[AuthorityType2["ConfidentialTransferFeeConfig"] = 11] = "ConfidentialTransferFeeConfig"; + AuthorityType2[AuthorityType2["MetadataPointer"] = 12] = "MetadataPointer"; + AuthorityType2[AuthorityType2["GroupPointer"] = 13] = "GroupPointer"; + AuthorityType2[AuthorityType2["GroupMemberPointer"] = 14] = "GroupMemberPointer"; + AuthorityType2[AuthorityType2["ScaledUiAmount"] = 15] = "ScaledUiAmount"; + AuthorityType2[AuthorityType2["Pause"] = 16] = "Pause"; + return AuthorityType2; + })(AuthorityType || {}); + function getAuthorityTypeEncoder() { + return kit.getEnumEncoder(AuthorityType); + } + function getAuthorityTypeDecoder() { + return kit.getEnumDecoder(AuthorityType); + } + function getAuthorityTypeCodec() { + return kit.combineCodec(getAuthorityTypeEncoder(), getAuthorityTypeDecoder()); + } + function getDecryptableBalanceEncoder() { + return kit.fixEncoderSize(kit.getBytesEncoder(), 36); + } + function getDecryptableBalanceDecoder() { + return kit.fixDecoderSize(kit.getBytesDecoder(), 36); + } + function getDecryptableBalanceCodec() { + return kit.combineCodec( + getDecryptableBalanceEncoder(), + getDecryptableBalanceDecoder() + ); + } + function getEncryptedBalanceEncoder() { + return kit.fixEncoderSize(kit.getBytesEncoder(), 64); + } + function getEncryptedBalanceDecoder() { + return kit.fixDecoderSize(kit.getBytesDecoder(), 64); + } + function getEncryptedBalanceCodec() { + return kit.combineCodec( + getEncryptedBalanceEncoder(), + getEncryptedBalanceDecoder() + ); + } + function getExtensionEncoder() { + return kit.getDiscriminatedUnionEncoder( + [ + ["Uninitialized", kit.getUnitEncoder()], + [ + "TransferFeeConfig", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["transferFeeConfigAuthority", kit.getAddressEncoder()], + ["withdrawWithheldAuthority", kit.getAddressEncoder()], + ["withheldAmount", kit.getU64Encoder()], + ["olderTransferFee", getTransferFeeEncoder()], + ["newerTransferFee", getTransferFeeEncoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "TransferFeeAmount", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["withheldAmount", kit.getU64Encoder()]]), + kit.getU16Encoder() + ) + ], + [ + "MintCloseAuthority", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["closeAuthority", kit.getAddressEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "ConfidentialTransferMint", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["autoApproveNewAccounts", kit.getBooleanEncoder()], + [ + "auditorElgamalPubkey", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Encoder() + ) + ], + [ + "ConfidentialTransferAccount", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["approved", kit.getBooleanEncoder()], + ["elgamalPubkey", kit.getAddressEncoder()], + ["pendingBalanceLow", getEncryptedBalanceEncoder()], + ["pendingBalanceHigh", getEncryptedBalanceEncoder()], + ["availableBalance", getEncryptedBalanceEncoder()], + ["decryptableAvailableBalance", getDecryptableBalanceEncoder()], + ["allowConfidentialCredits", kit.getBooleanEncoder()], + ["allowNonConfidentialCredits", kit.getBooleanEncoder()], + ["pendingBalanceCreditCounter", kit.getU64Encoder()], + ["maximumPendingBalanceCreditCounter", kit.getU64Encoder()], + ["expectedPendingBalanceCreditCounter", kit.getU64Encoder()], + ["actualPendingBalanceCreditCounter", kit.getU64Encoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "DefaultAccountState", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["state", getAccountStateEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "ImmutableOwner", + kit.addEncoderSizePrefix(kit.getStructEncoder([]), kit.getU16Encoder()) + ], + [ + "MemoTransfer", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["requireIncomingTransferMemos", kit.getBooleanEncoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "NonTransferable", + kit.addEncoderSizePrefix(kit.getStructEncoder([]), kit.getU16Encoder()) + ], + [ + "InterestBearingConfig", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["rateAuthority", kit.getAddressEncoder()], + ["initializationTimestamp", kit.getU64Encoder()], + ["preUpdateAverageRate", kit.getI16Encoder()], + ["lastUpdateTimestamp", kit.getU64Encoder()], + ["currentRate", kit.getI16Encoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "CpiGuard", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["lockCpi", kit.getBooleanEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "PermanentDelegate", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["delegate", kit.getAddressEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "NonTransferableAccount", + kit.addEncoderSizePrefix(kit.getStructEncoder([]), kit.getU16Encoder()) + ], + [ + "TransferHook", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["authority", kit.getAddressEncoder()], + ["programId", kit.getAddressEncoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "TransferHookAccount", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["transferring", kit.getBooleanEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "ConfidentialTransferFee", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["elgamalPubkey", kit.getAddressEncoder()], + ["harvestToMintEnabled", kit.getBooleanEncoder()], + ["withheldAmount", getEncryptedBalanceEncoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "ConfidentialTransferFeeAmount", + kit.addEncoderSizePrefix( + kit.getStructEncoder([["withheldAmount", getEncryptedBalanceEncoder()]]), + kit.getU16Encoder() + ) + ], + [ + "MetadataPointer", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "metadataAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Encoder() + ) + ], + [ + "TokenMetadata", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "updateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["mint", kit.getAddressEncoder()], + ["name", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())], + ["symbol", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())], + ["uri", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())], + [ + "additionalMetadata", + kit.getMapEncoder( + kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder()), + kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder()) + ) + ] + ]), + kit.getU16Encoder() + ) + ], + [ + "GroupPointer", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "groupAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Encoder() + ) + ], + [ + "TokenGroup", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "updateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["mint", kit.getAddressEncoder()], + ["size", kit.getU64Encoder()], + ["maxSize", kit.getU64Encoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "GroupMemberPointer", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "memberAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Encoder() + ) + ], + [ + "TokenGroupMember", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["mint", kit.getAddressEncoder()], + ["group", kit.getAddressEncoder()], + ["memberNumber", kit.getU64Encoder()] + ]), + kit.getU16Encoder() + ) + ], + ["ConfidentialMintBurn", kit.getUnitEncoder()], + [ + "ScaledUiAmountConfig", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + ["authority", kit.getAddressEncoder()], + ["multiplier", kit.getF64Encoder()], + ["newMultiplierEffectiveTimestamp", kit.getU64Encoder()], + ["newMultiplier", kit.getF64Encoder()] + ]), + kit.getU16Encoder() + ) + ], + [ + "PausableConfig", + kit.addEncoderSizePrefix( + kit.getStructEncoder([ + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["paused", kit.getBooleanEncoder()] + ]), + kit.getU16Encoder() + ) + ], + ["PausableAccount", kit.getUnitEncoder()] + ], + { size: kit.getU16Encoder() } + ); + } + function getExtensionDecoder() { + return kit.getDiscriminatedUnionDecoder( + [ + ["Uninitialized", kit.getUnitDecoder()], + [ + "TransferFeeConfig", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["transferFeeConfigAuthority", kit.getAddressDecoder()], + ["withdrawWithheldAuthority", kit.getAddressDecoder()], + ["withheldAmount", kit.getU64Decoder()], + ["olderTransferFee", getTransferFeeDecoder()], + ["newerTransferFee", getTransferFeeDecoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "TransferFeeAmount", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["withheldAmount", kit.getU64Decoder()]]), + kit.getU16Decoder() + ) + ], + [ + "MintCloseAuthority", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["closeAuthority", kit.getAddressDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "ConfidentialTransferMint", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["autoApproveNewAccounts", kit.getBooleanDecoder()], + [ + "auditorElgamalPubkey", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Decoder() + ) + ], + [ + "ConfidentialTransferAccount", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["approved", kit.getBooleanDecoder()], + ["elgamalPubkey", kit.getAddressDecoder()], + ["pendingBalanceLow", getEncryptedBalanceDecoder()], + ["pendingBalanceHigh", getEncryptedBalanceDecoder()], + ["availableBalance", getEncryptedBalanceDecoder()], + ["decryptableAvailableBalance", getDecryptableBalanceDecoder()], + ["allowConfidentialCredits", kit.getBooleanDecoder()], + ["allowNonConfidentialCredits", kit.getBooleanDecoder()], + ["pendingBalanceCreditCounter", kit.getU64Decoder()], + ["maximumPendingBalanceCreditCounter", kit.getU64Decoder()], + ["expectedPendingBalanceCreditCounter", kit.getU64Decoder()], + ["actualPendingBalanceCreditCounter", kit.getU64Decoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "DefaultAccountState", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["state", getAccountStateDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "ImmutableOwner", + kit.addDecoderSizePrefix(kit.getStructDecoder([]), kit.getU16Decoder()) + ], + [ + "MemoTransfer", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["requireIncomingTransferMemos", kit.getBooleanDecoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "NonTransferable", + kit.addDecoderSizePrefix(kit.getStructDecoder([]), kit.getU16Decoder()) + ], + [ + "InterestBearingConfig", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["rateAuthority", kit.getAddressDecoder()], + ["initializationTimestamp", kit.getU64Decoder()], + ["preUpdateAverageRate", kit.getI16Decoder()], + ["lastUpdateTimestamp", kit.getU64Decoder()], + ["currentRate", kit.getI16Decoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "CpiGuard", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["lockCpi", kit.getBooleanDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "PermanentDelegate", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["delegate", kit.getAddressDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "NonTransferableAccount", + kit.addDecoderSizePrefix(kit.getStructDecoder([]), kit.getU16Decoder()) + ], + [ + "TransferHook", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["authority", kit.getAddressDecoder()], + ["programId", kit.getAddressDecoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "TransferHookAccount", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["transferring", kit.getBooleanDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "ConfidentialTransferFee", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["elgamalPubkey", kit.getAddressDecoder()], + ["harvestToMintEnabled", kit.getBooleanDecoder()], + ["withheldAmount", getEncryptedBalanceDecoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "ConfidentialTransferFeeAmount", + kit.addDecoderSizePrefix( + kit.getStructDecoder([["withheldAmount", getEncryptedBalanceDecoder()]]), + kit.getU16Decoder() + ) + ], + [ + "MetadataPointer", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "metadataAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Decoder() + ) + ], + [ + "TokenMetadata", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "updateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["mint", kit.getAddressDecoder()], + ["name", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["symbol", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["uri", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + [ + "additionalMetadata", + kit.getMapDecoder( + kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder()), + kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder()) + ) + ] + ]), + kit.getU16Decoder() + ) + ], + [ + "GroupPointer", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "groupAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Decoder() + ) + ], + [ + "TokenGroup", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "updateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["mint", kit.getAddressDecoder()], + ["size", kit.getU64Decoder()], + ["maxSize", kit.getU64Decoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "GroupMemberPointer", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "memberAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + kit.getU16Decoder() + ) + ], + [ + "TokenGroupMember", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["mint", kit.getAddressDecoder()], + ["group", kit.getAddressDecoder()], + ["memberNumber", kit.getU64Decoder()] + ]), + kit.getU16Decoder() + ) + ], + ["ConfidentialMintBurn", kit.getUnitDecoder()], + [ + "ScaledUiAmountConfig", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + ["authority", kit.getAddressDecoder()], + ["multiplier", kit.getF64Decoder()], + ["newMultiplierEffectiveTimestamp", kit.getU64Decoder()], + ["newMultiplier", kit.getF64Decoder()] + ]), + kit.getU16Decoder() + ) + ], + [ + "PausableConfig", + kit.addDecoderSizePrefix( + kit.getStructDecoder([ + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["paused", kit.getBooleanDecoder()] + ]), + kit.getU16Decoder() + ) + ], + ["PausableAccount", kit.getUnitDecoder()] + ], + { size: kit.getU16Decoder() } + ); + } + function getExtensionCodec() { + return kit.combineCodec(getExtensionEncoder(), getExtensionDecoder()); + } + function extension(kind, data) { + return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...data ?? {} }; + } + function isExtension(kind, value) { + return value.__kind === kind; + } + var ExtensionType = /* @__PURE__ */ ((ExtensionType2) => { + ExtensionType2[ExtensionType2["Uninitialized"] = 0] = "Uninitialized"; + ExtensionType2[ExtensionType2["TransferFeeConfig"] = 1] = "TransferFeeConfig"; + ExtensionType2[ExtensionType2["TransferFeeAmount"] = 2] = "TransferFeeAmount"; + ExtensionType2[ExtensionType2["MintCloseAuthority"] = 3] = "MintCloseAuthority"; + ExtensionType2[ExtensionType2["ConfidentialTransferMint"] = 4] = "ConfidentialTransferMint"; + ExtensionType2[ExtensionType2["ConfidentialTransferAccount"] = 5] = "ConfidentialTransferAccount"; + ExtensionType2[ExtensionType2["DefaultAccountState"] = 6] = "DefaultAccountState"; + ExtensionType2[ExtensionType2["ImmutableOwner"] = 7] = "ImmutableOwner"; + ExtensionType2[ExtensionType2["MemoTransfer"] = 8] = "MemoTransfer"; + ExtensionType2[ExtensionType2["NonTransferable"] = 9] = "NonTransferable"; + ExtensionType2[ExtensionType2["InterestBearingConfig"] = 10] = "InterestBearingConfig"; + ExtensionType2[ExtensionType2["CpiGuard"] = 11] = "CpiGuard"; + ExtensionType2[ExtensionType2["PermanentDelegate"] = 12] = "PermanentDelegate"; + ExtensionType2[ExtensionType2["NonTransferableAccount"] = 13] = "NonTransferableAccount"; + ExtensionType2[ExtensionType2["TransferHook"] = 14] = "TransferHook"; + ExtensionType2[ExtensionType2["TransferHookAccount"] = 15] = "TransferHookAccount"; + ExtensionType2[ExtensionType2["ConfidentialTransferFee"] = 16] = "ConfidentialTransferFee"; + ExtensionType2[ExtensionType2["ConfidentialTransferFeeAmount"] = 17] = "ConfidentialTransferFeeAmount"; + ExtensionType2[ExtensionType2["ScaledUiAmountConfig"] = 18] = "ScaledUiAmountConfig"; + ExtensionType2[ExtensionType2["PausableConfig"] = 19] = "PausableConfig"; + ExtensionType2[ExtensionType2["PausableAccount"] = 20] = "PausableAccount"; + ExtensionType2[ExtensionType2["MetadataPointer"] = 21] = "MetadataPointer"; + ExtensionType2[ExtensionType2["TokenMetadata"] = 22] = "TokenMetadata"; + ExtensionType2[ExtensionType2["GroupPointer"] = 23] = "GroupPointer"; + ExtensionType2[ExtensionType2["TokenGroup"] = 24] = "TokenGroup"; + ExtensionType2[ExtensionType2["GroupMemberPointer"] = 25] = "GroupMemberPointer"; + ExtensionType2[ExtensionType2["TokenGroupMember"] = 26] = "TokenGroupMember"; + return ExtensionType2; + })(ExtensionType || {}); + function getExtensionTypeEncoder() { + return kit.getEnumEncoder(ExtensionType, { size: kit.getU16Encoder() }); + } + function getExtensionTypeDecoder() { + return kit.getEnumDecoder(ExtensionType, { size: kit.getU16Decoder() }); + } + function getExtensionTypeCodec() { + return kit.combineCodec(getExtensionTypeEncoder(), getExtensionTypeDecoder()); + } + function getTokenMetadataFieldEncoder() { + return kit.getDiscriminatedUnionEncoder([ + ["Name", kit.getUnitEncoder()], + ["Symbol", kit.getUnitEncoder()], + ["Uri", kit.getUnitEncoder()], + [ + "Key", + kit.getStructEncoder([ + [ + "fields", + kit.getTupleEncoder([ + kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder()) + ]) + ] + ]) + ] + ]); + } + function getTokenMetadataFieldDecoder() { + return kit.getDiscriminatedUnionDecoder([ + ["Name", kit.getUnitDecoder()], + ["Symbol", kit.getUnitDecoder()], + ["Uri", kit.getUnitDecoder()], + [ + "Key", + kit.getStructDecoder([ + [ + "fields", + kit.getTupleDecoder([ + kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder()) + ]) + ] + ]) + ] + ]); + } + function getTokenMetadataFieldCodec() { + return kit.combineCodec( + getTokenMetadataFieldEncoder(), + getTokenMetadataFieldDecoder() + ); + } + function tokenMetadataField(kind, data) { + return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...data ?? {} }; + } + function isTokenMetadataField(kind, value) { + return value.__kind === kind; + } + function getTransferFeeEncoder() { + return kit.getStructEncoder([ + ["epoch", kit.getU64Encoder()], + ["maximumFee", kit.getU64Encoder()], + ["transferFeeBasisPoints", kit.getU16Encoder()] + ]); + } + function getTransferFeeDecoder() { + return kit.getStructDecoder([ + ["epoch", kit.getU64Decoder()], + ["maximumFee", kit.getU64Decoder()], + ["transferFeeBasisPoints", kit.getU16Decoder()] + ]); + } + function getTransferFeeCodec() { + return kit.combineCodec(getTransferFeeEncoder(), getTransferFeeDecoder()); + } + function getMintEncoder() { + return kit.getStructEncoder([ + [ + "mintAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["supply", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()], + ["isInitialized", kit.getBooleanEncoder()], + [ + "freezeAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + [ + "extensions", + kit.getOptionEncoder( + kit.getHiddenPrefixEncoder( + kit.getArrayEncoder(getExtensionEncoder(), { size: "remainder" }), + [kit.getConstantEncoder(kit.padLeftEncoder(kit.getU8Encoder(), 83).encode(1))] + ), + { prefix: null } + ) + ] + ]); + } + function getMintDecoder() { + return kit.getStructDecoder([ + [ + "mintAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["supply", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()], + ["isInitialized", kit.getBooleanDecoder()], + [ + "freezeAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + [ + "extensions", + kit.getOptionDecoder( + kit.getHiddenPrefixDecoder( + kit.getArrayDecoder(getExtensionDecoder(), { size: "remainder" }), + [kit.getConstantDecoder(kit.padLeftEncoder(kit.getU8Encoder(), 83).encode(1))] + ), + { prefix: null } + ) + ] + ]); + } + function getMintCodec() { + return kit.combineCodec(getMintEncoder(), getMintDecoder()); + } + function decodeMint(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getMintDecoder() + ); + } + async function fetchMint(rpc, address, config2) { + const maybeAccount = await fetchMaybeMint(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeMint(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeMint(maybeAccount); + } + async function fetchAllMint(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeMint(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeMint(maybeAccount)); + } + function getMultisigEncoder() { + return kit.getStructEncoder([ + ["m", kit.getU8Encoder()], + ["n", kit.getU8Encoder()], + ["isInitialized", kit.getBooleanEncoder()], + ["signers", kit.getArrayEncoder(kit.getAddressEncoder(), { size: 11 })] + ]); + } + function getMultisigDecoder() { + return kit.getStructDecoder([ + ["m", kit.getU8Decoder()], + ["n", kit.getU8Decoder()], + ["isInitialized", kit.getBooleanDecoder()], + ["signers", kit.getArrayDecoder(kit.getAddressDecoder(), { size: 11 })] + ]); + } + function getMultisigCodec() { + return kit.combineCodec(getMultisigEncoder(), getMultisigDecoder()); + } + function decodeMultisig(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getMultisigDecoder() + ); + } + async function fetchMultisig(rpc, address, config2) { + const maybeAccount = await fetchMaybeMultisig(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeMultisig(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeMultisig(maybeAccount); + } + async function fetchAllMultisig(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeMultisig(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount)); + } + function getMultisigSize() { + return 355; + } + function getTokenEncoder() { + return kit.getStructEncoder([ + ["mint", kit.getAddressEncoder()], + ["owner", kit.getAddressEncoder()], + ["amount", kit.getU64Encoder()], + [ + "delegate", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["state", getAccountStateEncoder()], + [ + "isNative", + kit.getOptionEncoder(kit.getU64Encoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + ["delegatedAmount", kit.getU64Encoder()], + [ + "closeAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: kit.getU32Encoder(), + noneValue: "zeroes" + }) + ], + [ + "extensions", + kit.getOptionEncoder( + kit.getHiddenPrefixEncoder( + kit.getArrayEncoder(getExtensionEncoder(), { size: "remainder" }), + [kit.getConstantEncoder(kit.getU8Encoder().encode(2))] + ), + { prefix: null } + ) + ] + ]); + } + function getTokenDecoder() { + return kit.getStructDecoder([ + ["mint", kit.getAddressDecoder()], + ["owner", kit.getAddressDecoder()], + ["amount", kit.getU64Decoder()], + [ + "delegate", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["state", getAccountStateDecoder()], + [ + "isNative", + kit.getOptionDecoder(kit.getU64Decoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + ["delegatedAmount", kit.getU64Decoder()], + [ + "closeAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: kit.getU32Decoder(), + noneValue: "zeroes" + }) + ], + [ + "extensions", + kit.getOptionDecoder( + kit.getHiddenPrefixDecoder( + kit.getArrayDecoder(getExtensionDecoder(), { size: "remainder" }), + [kit.getConstantDecoder(kit.getU8Encoder().encode(2))] + ), + { prefix: null } + ) + ] + ]); + } + function getTokenCodec() { + return kit.combineCodec(getTokenEncoder(), getTokenDecoder()); + } + function decodeToken(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getTokenDecoder() + ); + } + async function fetchToken(rpc, address, config2) { + const maybeAccount = await fetchMaybeToken(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeToken(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeToken(maybeAccount); + } + async function fetchAllToken(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config2); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeToken(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map((maybeAccount) => decodeToken(maybeAccount)); + } + var ASSOCIATED_TOKEN_PROGRAM_ADDRESS = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"; + var AssociatedTokenInstruction = /* @__PURE__ */ ((AssociatedTokenInstruction2) => { + AssociatedTokenInstruction2[AssociatedTokenInstruction2["CreateAssociatedToken"] = 0] = "CreateAssociatedToken"; + AssociatedTokenInstruction2[AssociatedTokenInstruction2["CreateAssociatedTokenIdempotent"] = 1] = "CreateAssociatedTokenIdempotent"; + AssociatedTokenInstruction2[AssociatedTokenInstruction2["RecoverNestedAssociatedToken"] = 2] = "RecoverNestedAssociatedToken"; + return AssociatedTokenInstruction2; + })(AssociatedTokenInstruction || {}); + function identifyAssociatedTokenInstruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU8Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(2), 0)) { + return 2; + } + throw new Error( + "The provided instruction could not be identified as a associatedToken instruction." + ); + } + var TOKEN_2022_PROGRAM_ADDRESS = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + var Token2022Account = /* @__PURE__ */ ((Token2022Account2) => { + Token2022Account2[Token2022Account2["Mint"] = 0] = "Mint"; + Token2022Account2[Token2022Account2["Token"] = 1] = "Token"; + Token2022Account2[Token2022Account2["Multisig"] = 2] = "Multisig"; + return Token2022Account2; + })(Token2022Account || {}); + function identifyToken2022Account(account) { + const data = "data" in account ? account.data : account; + if (data.length === 82) { + return 0; + } + if (data.length === 165) { + return 1; + } + if (data.length === 355) { + return 2; + } + throw new Error( + "The provided account could not be identified as a token-2022 account." + ); + } + var Token2022Instruction = /* @__PURE__ */ ((Token2022Instruction2) => { + Token2022Instruction2[Token2022Instruction2["InitializeMint"] = 0] = "InitializeMint"; + Token2022Instruction2[Token2022Instruction2["InitializeAccount"] = 1] = "InitializeAccount"; + Token2022Instruction2[Token2022Instruction2["InitializeMultisig"] = 2] = "InitializeMultisig"; + Token2022Instruction2[Token2022Instruction2["Transfer"] = 3] = "Transfer"; + Token2022Instruction2[Token2022Instruction2["Approve"] = 4] = "Approve"; + Token2022Instruction2[Token2022Instruction2["Revoke"] = 5] = "Revoke"; + Token2022Instruction2[Token2022Instruction2["SetAuthority"] = 6] = "SetAuthority"; + Token2022Instruction2[Token2022Instruction2["MintTo"] = 7] = "MintTo"; + Token2022Instruction2[Token2022Instruction2["Burn"] = 8] = "Burn"; + Token2022Instruction2[Token2022Instruction2["CloseAccount"] = 9] = "CloseAccount"; + Token2022Instruction2[Token2022Instruction2["FreezeAccount"] = 10] = "FreezeAccount"; + Token2022Instruction2[Token2022Instruction2["ThawAccount"] = 11] = "ThawAccount"; + Token2022Instruction2[Token2022Instruction2["TransferChecked"] = 12] = "TransferChecked"; + Token2022Instruction2[Token2022Instruction2["ApproveChecked"] = 13] = "ApproveChecked"; + Token2022Instruction2[Token2022Instruction2["MintToChecked"] = 14] = "MintToChecked"; + Token2022Instruction2[Token2022Instruction2["BurnChecked"] = 15] = "BurnChecked"; + Token2022Instruction2[Token2022Instruction2["InitializeAccount2"] = 16] = "InitializeAccount2"; + Token2022Instruction2[Token2022Instruction2["SyncNative"] = 17] = "SyncNative"; + Token2022Instruction2[Token2022Instruction2["InitializeAccount3"] = 18] = "InitializeAccount3"; + Token2022Instruction2[Token2022Instruction2["InitializeMultisig2"] = 19] = "InitializeMultisig2"; + Token2022Instruction2[Token2022Instruction2["InitializeMint2"] = 20] = "InitializeMint2"; + Token2022Instruction2[Token2022Instruction2["GetAccountDataSize"] = 21] = "GetAccountDataSize"; + Token2022Instruction2[Token2022Instruction2["InitializeImmutableOwner"] = 22] = "InitializeImmutableOwner"; + Token2022Instruction2[Token2022Instruction2["AmountToUiAmount"] = 23] = "AmountToUiAmount"; + Token2022Instruction2[Token2022Instruction2["UiAmountToAmount"] = 24] = "UiAmountToAmount"; + Token2022Instruction2[Token2022Instruction2["InitializeMintCloseAuthority"] = 25] = "InitializeMintCloseAuthority"; + Token2022Instruction2[Token2022Instruction2["InitializeTransferFeeConfig"] = 26] = "InitializeTransferFeeConfig"; + Token2022Instruction2[Token2022Instruction2["TransferCheckedWithFee"] = 27] = "TransferCheckedWithFee"; + Token2022Instruction2[Token2022Instruction2["WithdrawWithheldTokensFromMint"] = 28] = "WithdrawWithheldTokensFromMint"; + Token2022Instruction2[Token2022Instruction2["WithdrawWithheldTokensFromAccounts"] = 29] = "WithdrawWithheldTokensFromAccounts"; + Token2022Instruction2[Token2022Instruction2["HarvestWithheldTokensToMint"] = 30] = "HarvestWithheldTokensToMint"; + Token2022Instruction2[Token2022Instruction2["SetTransferFee"] = 31] = "SetTransferFee"; + Token2022Instruction2[Token2022Instruction2["InitializeConfidentialTransferMint"] = 32] = "InitializeConfidentialTransferMint"; + Token2022Instruction2[Token2022Instruction2["UpdateConfidentialTransferMint"] = 33] = "UpdateConfidentialTransferMint"; + Token2022Instruction2[Token2022Instruction2["ConfigureConfidentialTransferAccount"] = 34] = "ConfigureConfidentialTransferAccount"; + Token2022Instruction2[Token2022Instruction2["ApproveConfidentialTransferAccount"] = 35] = "ApproveConfidentialTransferAccount"; + Token2022Instruction2[Token2022Instruction2["EmptyConfidentialTransferAccount"] = 36] = "EmptyConfidentialTransferAccount"; + Token2022Instruction2[Token2022Instruction2["ConfidentialDeposit"] = 37] = "ConfidentialDeposit"; + Token2022Instruction2[Token2022Instruction2["ConfidentialWithdraw"] = 38] = "ConfidentialWithdraw"; + Token2022Instruction2[Token2022Instruction2["ConfidentialTransfer"] = 39] = "ConfidentialTransfer"; + Token2022Instruction2[Token2022Instruction2["ApplyConfidentialPendingBalance"] = 40] = "ApplyConfidentialPendingBalance"; + Token2022Instruction2[Token2022Instruction2["EnableConfidentialCredits"] = 41] = "EnableConfidentialCredits"; + Token2022Instruction2[Token2022Instruction2["DisableConfidentialCredits"] = 42] = "DisableConfidentialCredits"; + Token2022Instruction2[Token2022Instruction2["EnableNonConfidentialCredits"] = 43] = "EnableNonConfidentialCredits"; + Token2022Instruction2[Token2022Instruction2["DisableNonConfidentialCredits"] = 44] = "DisableNonConfidentialCredits"; + Token2022Instruction2[Token2022Instruction2["ConfidentialTransferWithFee"] = 45] = "ConfidentialTransferWithFee"; + Token2022Instruction2[Token2022Instruction2["InitializeDefaultAccountState"] = 46] = "InitializeDefaultAccountState"; + Token2022Instruction2[Token2022Instruction2["UpdateDefaultAccountState"] = 47] = "UpdateDefaultAccountState"; + Token2022Instruction2[Token2022Instruction2["Reallocate"] = 48] = "Reallocate"; + Token2022Instruction2[Token2022Instruction2["EnableMemoTransfers"] = 49] = "EnableMemoTransfers"; + Token2022Instruction2[Token2022Instruction2["DisableMemoTransfers"] = 50] = "DisableMemoTransfers"; + Token2022Instruction2[Token2022Instruction2["CreateNativeMint"] = 51] = "CreateNativeMint"; + Token2022Instruction2[Token2022Instruction2["InitializeNonTransferableMint"] = 52] = "InitializeNonTransferableMint"; + Token2022Instruction2[Token2022Instruction2["InitializeInterestBearingMint"] = 53] = "InitializeInterestBearingMint"; + Token2022Instruction2[Token2022Instruction2["UpdateRateInterestBearingMint"] = 54] = "UpdateRateInterestBearingMint"; + Token2022Instruction2[Token2022Instruction2["EnableCpiGuard"] = 55] = "EnableCpiGuard"; + Token2022Instruction2[Token2022Instruction2["DisableCpiGuard"] = 56] = "DisableCpiGuard"; + Token2022Instruction2[Token2022Instruction2["InitializePermanentDelegate"] = 57] = "InitializePermanentDelegate"; + Token2022Instruction2[Token2022Instruction2["InitializeTransferHook"] = 58] = "InitializeTransferHook"; + Token2022Instruction2[Token2022Instruction2["UpdateTransferHook"] = 59] = "UpdateTransferHook"; + Token2022Instruction2[Token2022Instruction2["InitializeConfidentialTransferFee"] = 60] = "InitializeConfidentialTransferFee"; + Token2022Instruction2[Token2022Instruction2["WithdrawWithheldTokensFromMintForConfidentialTransferFee"] = 61] = "WithdrawWithheldTokensFromMintForConfidentialTransferFee"; + Token2022Instruction2[Token2022Instruction2["WithdrawWithheldTokensFromAccountsForConfidentialTransferFee"] = 62] = "WithdrawWithheldTokensFromAccountsForConfidentialTransferFee"; + Token2022Instruction2[Token2022Instruction2["HarvestWithheldTokensToMintForConfidentialTransferFee"] = 63] = "HarvestWithheldTokensToMintForConfidentialTransferFee"; + Token2022Instruction2[Token2022Instruction2["EnableHarvestToMint"] = 64] = "EnableHarvestToMint"; + Token2022Instruction2[Token2022Instruction2["DisableHarvestToMint"] = 65] = "DisableHarvestToMint"; + Token2022Instruction2[Token2022Instruction2["WithdrawExcessLamports"] = 66] = "WithdrawExcessLamports"; + Token2022Instruction2[Token2022Instruction2["InitializeMetadataPointer"] = 67] = "InitializeMetadataPointer"; + Token2022Instruction2[Token2022Instruction2["UpdateMetadataPointer"] = 68] = "UpdateMetadataPointer"; + Token2022Instruction2[Token2022Instruction2["InitializeGroupPointer"] = 69] = "InitializeGroupPointer"; + Token2022Instruction2[Token2022Instruction2["UpdateGroupPointer"] = 70] = "UpdateGroupPointer"; + Token2022Instruction2[Token2022Instruction2["InitializeGroupMemberPointer"] = 71] = "InitializeGroupMemberPointer"; + Token2022Instruction2[Token2022Instruction2["UpdateGroupMemberPointer"] = 72] = "UpdateGroupMemberPointer"; + Token2022Instruction2[Token2022Instruction2["InitializeScaledUiAmountMint"] = 73] = "InitializeScaledUiAmountMint"; + Token2022Instruction2[Token2022Instruction2["UpdateMultiplierScaledUiMint"] = 74] = "UpdateMultiplierScaledUiMint"; + Token2022Instruction2[Token2022Instruction2["InitializePausableConfig"] = 75] = "InitializePausableConfig"; + Token2022Instruction2[Token2022Instruction2["Pause"] = 76] = "Pause"; + Token2022Instruction2[Token2022Instruction2["Resume"] = 77] = "Resume"; + Token2022Instruction2[Token2022Instruction2["InitializeTokenMetadata"] = 78] = "InitializeTokenMetadata"; + Token2022Instruction2[Token2022Instruction2["UpdateTokenMetadataField"] = 79] = "UpdateTokenMetadataField"; + Token2022Instruction2[Token2022Instruction2["RemoveTokenMetadataKey"] = 80] = "RemoveTokenMetadataKey"; + Token2022Instruction2[Token2022Instruction2["UpdateTokenMetadataUpdateAuthority"] = 81] = "UpdateTokenMetadataUpdateAuthority"; + Token2022Instruction2[Token2022Instruction2["EmitTokenMetadata"] = 82] = "EmitTokenMetadata"; + Token2022Instruction2[Token2022Instruction2["InitializeTokenGroup"] = 83] = "InitializeTokenGroup"; + Token2022Instruction2[Token2022Instruction2["UpdateTokenGroupMaxSize"] = 84] = "UpdateTokenGroupMaxSize"; + Token2022Instruction2[Token2022Instruction2["UpdateTokenGroupUpdateAuthority"] = 85] = "UpdateTokenGroupUpdateAuthority"; + Token2022Instruction2[Token2022Instruction2["InitializeTokenGroupMember"] = 86] = "InitializeTokenGroupMember"; + return Token2022Instruction2; + })(Token2022Instruction || {}); + function identifyToken2022Instruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU8Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(2), 0)) { + return 2; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(3), 0)) { + return 3; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(4), 0)) { + return 4; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(5), 0)) { + return 5; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(6), 0)) { + return 6; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(7), 0)) { + return 7; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(8), 0)) { + return 8; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(9), 0)) { + return 9; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(10), 0)) { + return 10; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(11), 0)) { + return 11; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(12), 0)) { + return 12; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(13), 0)) { + return 13; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(14), 0)) { + return 14; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(15), 0)) { + return 15; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(16), 0)) { + return 16; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(17), 0)) { + return 17; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(18), 0)) { + return 18; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(19), 0)) { + return 19; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(20), 0)) { + return 20; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(21), 0)) { + return 21; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(22), 0)) { + return 22; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(23), 0)) { + return 23; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(24), 0)) { + return 24; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(25), 0)) { + return 25; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 26; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 27; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(2), 1)) { + return 28; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(3), 1)) { + return 29; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(4), 1)) { + return 30; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(26), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(5), 1)) { + return 31; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 32; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 33; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(2), 1)) { + return 34; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(3), 1)) { + return 35; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(4), 1)) { + return 36; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(5), 1)) { + return 37; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(6), 1)) { + return 38; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(7), 1)) { + return 39; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(8), 1)) { + return 40; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(9), 1)) { + return 41; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(10), 1)) { + return 42; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(11), 1)) { + return 43; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(12), 1)) { + return 44; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(27), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(13), 1)) { + return 45; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(28), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 46; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(28), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 47; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(29), 0)) { + return 48; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(30), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 49; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(30), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 50; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(31), 0)) { + return 51; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(32), 0)) { + return 52; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(33), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 53; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(33), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 54; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(34), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 55; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(34), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 56; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(35), 0)) { + return 57; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(36), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 58; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(36), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 59; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 60; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 61; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(2), 1)) { + return 62; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(3), 1)) { + return 63; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(4), 1)) { + return 64; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(37), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(5), 1)) { + return 65; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(38), 0)) { + return 66; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(39), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 67; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(39), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 68; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(40), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 69; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(40), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 70; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(41), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 71; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(41), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 72; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(43), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 73; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(43), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 74; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(44), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(0), 1)) { + return 75; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(44), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(1), 1)) { + return 76; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(44), 0) && kit.containsBytes(data, kit.getU8Encoder().encode(2), 1)) { + return 77; + } + if (kit.containsBytes( + data, + new Uint8Array([210, 225, 30, 162, 88, 184, 77, 141]), + 0 + )) { + return 78; + } + if (kit.containsBytes( + data, + new Uint8Array([221, 233, 49, 45, 181, 202, 220, 200]), + 0 + )) { + return 79; + } + if (kit.containsBytes(data, new Uint8Array([234, 18, 32, 56, 89, 141, 37, 181]), 0)) { + return 80; + } + if (kit.containsBytes( + data, + new Uint8Array([215, 228, 166, 228, 84, 100, 86, 123]), + 0 + )) { + return 81; + } + if (kit.containsBytes( + data, + new Uint8Array([250, 166, 180, 250, 13, 12, 184, 70]), + 0 + )) { + return 82; + } + if (kit.containsBytes(data, new Uint8Array([121, 113, 108, 39, 54, 51, 0, 4]), 0)) { + return 83; + } + if (kit.containsBytes( + data, + new Uint8Array([108, 37, 171, 143, 248, 30, 18, 110]), + 0 + )) { + return 84; + } + if (kit.containsBytes( + data, + new Uint8Array([161, 105, 88, 1, 237, 221, 216, 203]), + 0 + )) { + return 85; + } + if (kit.containsBytes( + data, + new Uint8Array([152, 32, 222, 176, 223, 237, 116, 134]), + 0 + )) { + return 86; + } + throw new Error( + "The provided instruction could not be identified as a token-2022 instruction." + ); + } + var ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = 0; + var associatedTokenErrorMessages; + if (process.env.NODE_ENV !== "production") { + associatedTokenErrorMessages = { + [ASSOCIATED_TOKEN_ERROR__INVALID_OWNER]: `Associated token account owner does not match address derivation` + }; + } + function getAssociatedTokenErrorMessage(code) { + if (process.env.NODE_ENV !== "production") { + return associatedTokenErrorMessages[code]; + } + return "Error message not available in production bundles."; + } + function isAssociatedTokenError(error, transactionMessage, code) { + return kit.isProgramError( + error, + transactionMessage, + ASSOCIATED_TOKEN_PROGRAM_ADDRESS, + code + ); + } + var TOKEN_2022_ERROR__NOT_RENT_EXEMPT = 0; + var TOKEN_2022_ERROR__INSUFFICIENT_FUNDS = 1; + var TOKEN_2022_ERROR__INVALID_MINT = 2; + var TOKEN_2022_ERROR__MINT_MISMATCH = 3; + var TOKEN_2022_ERROR__OWNER_MISMATCH = 4; + var TOKEN_2022_ERROR__FIXED_SUPPLY = 5; + var TOKEN_2022_ERROR__ALREADY_IN_USE = 6; + var TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = 7; + var TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = 8; + var TOKEN_2022_ERROR__UNINITIALIZED_STATE = 9; + var TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED = 10; + var TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE = 11; + var TOKEN_2022_ERROR__INVALID_INSTRUCTION = 12; + var TOKEN_2022_ERROR__INVALID_STATE = 13; + var TOKEN_2022_ERROR__OVERFLOW = 14; + var TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = 15; + var TOKEN_2022_ERROR__MINT_CANNOT_FREEZE = 16; + var TOKEN_2022_ERROR__ACCOUNT_FROZEN = 17; + var TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH = 18; + var TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED = 19; + var token2022ErrorMessages; + if (process.env.NODE_ENV !== "production") { + token2022ErrorMessages = { + [TOKEN_2022_ERROR__ACCOUNT_FROZEN]: `Account is frozen`, + [TOKEN_2022_ERROR__ALREADY_IN_USE]: `Already in use`, + [TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED]: `Account does not support specified authority type`, + [TOKEN_2022_ERROR__FIXED_SUPPLY]: `Fixed supply`, + [TOKEN_2022_ERROR__INSUFFICIENT_FUNDS]: `Insufficient funds`, + [TOKEN_2022_ERROR__INVALID_INSTRUCTION]: `Invalid instruction`, + [TOKEN_2022_ERROR__INVALID_MINT]: `Invalid Mint`, + [TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS]: `Invalid number of provided signers`, + [TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS]: `Invalid number of required signers`, + [TOKEN_2022_ERROR__INVALID_STATE]: `State is invalid for requested operation`, + [TOKEN_2022_ERROR__MINT_CANNOT_FREEZE]: `This token mint cannot freeze accounts`, + [TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH]: `The provided decimals value different from the Mint decimals`, + [TOKEN_2022_ERROR__MINT_MISMATCH]: `Account not associated with this Mint`, + [TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED]: `Instruction does not support native tokens`, + [TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE]: `Non-native account can only be closed if its balance is zero`, + [TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED]: `Instruction does not support non-native tokens`, + [TOKEN_2022_ERROR__NOT_RENT_EXEMPT]: `Lamport balance below rent-exempt threshold`, + [TOKEN_2022_ERROR__OVERFLOW]: `Operation overflowed`, + [TOKEN_2022_ERROR__OWNER_MISMATCH]: `Owner does not match`, + [TOKEN_2022_ERROR__UNINITIALIZED_STATE]: `State is unititialized` + }; + } + function getToken2022ErrorMessage(code) { + if (process.env.NODE_ENV !== "production") { + return token2022ErrorMessages[code]; + } + return "Error message not available in production bundles."; + } + function isToken2022Error(error, transactionMessage, code) { + return kit.isProgramError( + error, + transactionMessage, + TOKEN_2022_PROGRAM_ADDRESS, + code + ); + } + function expectAddress(value) { + if (!value) { + throw new Error("Expected a Address."); + } + if (typeof value === "object" && "address" in value) { + return value.address; + } + if (Array.isArray(value)) { + return value[0]; + } + return value; + } + function getAccountMetaFactory(programAddress, optionalAccountStrategy) { + return (account) => { + if (!account.value) { + return Object.freeze({ + address: programAddress, + role: kit.AccountRole.READONLY + }); + } + const writableRole = account.isWritable ? kit.AccountRole.WRITABLE : kit.AccountRole.READONLY; + return Object.freeze({ + address: expectAddress(account.value), + role: isTransactionSigner(account.value) ? kit.upgradeRoleToSigner(writableRole) : writableRole, + ...isTransactionSigner(account.value) ? { signer: account.value } : {} + }); + }; + } + function isTransactionSigner(value) { + return !!value && typeof value === "object" && "address" in value && kit.isTransactionSigner(value); + } + var AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = 23; + function getAmountToUiAmountDiscriminatorBytes() { + return kit.getU8Encoder().encode(AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR); + } + function getAmountToUiAmountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR }) + ); + } + function getAmountToUiAmountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getAmountToUiAmountInstructionDataCodec() { + return kit.combineCodec( + getAmountToUiAmountInstructionDataEncoder(), + getAmountToUiAmountInstructionDataDecoder() + ); + } + function getAmountToUiAmountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getAmountToUiAmountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAmountToUiAmountInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getAmountToUiAmountInstructionDataDecoder().decode(instruction.data) + }; + } + var APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR = 27; + function getApplyConfidentialPendingBalanceDiscriminatorBytes() { + return kit.getU8Encoder().encode( + APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR + ); + } + var APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 8; + function getApplyConfidentialPendingBalanceConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getApplyConfidentialPendingBalanceInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["expectedPendingBalanceCreditCounter", kit.getU64Encoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceEncoder()] + ]), + (value) => ({ + ...value, + discriminator: APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR, + confidentialTransferDiscriminator: APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getApplyConfidentialPendingBalanceInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["expectedPendingBalanceCreditCounter", kit.getU64Decoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceDecoder()] + ]); + } + function getApplyConfidentialPendingBalanceInstructionDataCodec() { + return kit.combineCodec( + getApplyConfidentialPendingBalanceInstructionDataEncoder(), + getApplyConfidentialPendingBalanceInstructionDataDecoder() + ); + } + function getApplyConfidentialPendingBalanceInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getApplyConfidentialPendingBalanceInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseApplyConfidentialPendingBalanceInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + authority: getNextAccount() + }, + data: getApplyConfidentialPendingBalanceInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var APPROVE_DISCRIMINATOR = 4; + function getApproveDiscriminatorBytes() { + return kit.getU8Encoder().encode(APPROVE_DISCRIMINATOR); + } + function getApproveInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: APPROVE_DISCRIMINATOR }) + ); + } + function getApproveInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getApproveInstructionDataCodec() { + return kit.combineCodec( + getApproveInstructionDataEncoder(), + getApproveInstructionDataDecoder() + ); + } + function getApproveInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + delegate: { value: input.delegate ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.delegate), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getApproveInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseApproveInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + delegate: getNextAccount(), + owner: getNextAccount() + }, + data: getApproveInstructionDataDecoder().decode(instruction.data) + }; + } + var APPROVE_CHECKED_DISCRIMINATOR = 13; + function getApproveCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(APPROVE_CHECKED_DISCRIMINATOR); + } + function getApproveCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: APPROVE_CHECKED_DISCRIMINATOR }) + ); + } + function getApproveCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getApproveCheckedInstructionDataCodec() { + return kit.combineCodec( + getApproveCheckedInstructionDataEncoder(), + getApproveCheckedInstructionDataDecoder() + ); + } + function getApproveCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + delegate: { value: input.delegate ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.delegate), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getApproveCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseApproveCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + mint: getNextAccount(), + delegate: getNextAccount(), + owner: getNextAccount() + }, + data: getApproveCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27; + function getApproveConfidentialTransferAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode( + APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR + ); + } + var APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 3; + function getApproveConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getApproveConfidentialTransferAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR, + confidentialTransferDiscriminator: APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getApproveConfidentialTransferAccountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()] + ]); + } + function getApproveConfidentialTransferAccountInstructionDataCodec() { + return kit.combineCodec( + getApproveConfidentialTransferAccountInstructionDataEncoder(), + getApproveConfidentialTransferAccountInstructionDataDecoder() + ); + } + function getApproveConfidentialTransferAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority) + ], + programAddress, + data: getApproveConfidentialTransferAccountInstructionDataEncoder().encode( + {} + ) + }; + return instruction; + } + function parseApproveConfidentialTransferAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getApproveConfidentialTransferAccountInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var BURN_DISCRIMINATOR = 8; + function getBurnDiscriminatorBytes() { + return kit.getU8Encoder().encode(BURN_DISCRIMINATOR); + } + function getBurnInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: BURN_DISCRIMINATOR }) + ); + } + function getBurnInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getBurnInstructionDataCodec() { + return kit.combineCodec( + getBurnInstructionDataEncoder(), + getBurnInstructionDataDecoder() + ); + } + function getBurnInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getBurnInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseBurnInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getBurnInstructionDataDecoder().decode(instruction.data) + }; + } + var BURN_CHECKED_DISCRIMINATOR = 15; + function getBurnCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(BURN_CHECKED_DISCRIMINATOR); + } + function getBurnCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: BURN_CHECKED_DISCRIMINATOR }) + ); + } + function getBurnCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getBurnCheckedInstructionDataCodec() { + return kit.combineCodec( + getBurnCheckedInstructionDataEncoder(), + getBurnCheckedInstructionDataDecoder() + ); + } + function getBurnCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getBurnCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseBurnCheckedInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getBurnCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var CLOSE_ACCOUNT_DISCRIMINATOR = 9; + function getCloseAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(CLOSE_ACCOUNT_DISCRIMINATOR); + } + function getCloseAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: CLOSE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getCloseAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCloseAccountInstructionDataCodec() { + return kit.combineCodec( + getCloseAccountInstructionDataEncoder(), + getCloseAccountInstructionDataDecoder() + ); + } + function getCloseAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + destination: { value: input.destination ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getCloseAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCloseAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + destination: getNextAccount(), + owner: getNextAccount() + }, + data: getCloseAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var CONFIDENTIAL_DEPOSIT_DISCRIMINATOR = 27; + function getConfidentialDepositDiscriminatorBytes() { + return kit.getU8Encoder().encode(CONFIDENTIAL_DEPOSIT_DISCRIMINATOR); + } + var CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 5; + function getConfidentialDepositConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getConfidentialDepositInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: CONFIDENTIAL_DEPOSIT_DISCRIMINATOR, + confidentialTransferDiscriminator: CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getConfidentialDepositInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getConfidentialDepositInstructionDataCodec() { + return kit.combineCodec( + getConfidentialDepositInstructionDataEncoder(), + getConfidentialDepositInstructionDataDecoder() + ); + } + function getConfidentialDepositInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getConfidentialDepositInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseConfidentialDepositInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getConfidentialDepositInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 27; + function getConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode(CONFIDENTIAL_TRANSFER_DISCRIMINATOR); + } + var CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 7; + function getConfidentialTransferConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getConfidentialTransferInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["newSourceDecryptableAvailableBalance", getDecryptableBalanceEncoder()], + ["equalityProofInstructionOffset", kit.getI8Encoder()], + ["ciphertextValidityProofInstructionOffset", kit.getI8Encoder()], + ["rangeProofInstructionOffset", kit.getI8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: CONFIDENTIAL_TRANSFER_DISCRIMINATOR, + confidentialTransferDiscriminator: CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getConfidentialTransferInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["newSourceDecryptableAvailableBalance", getDecryptableBalanceDecoder()], + ["equalityProofInstructionOffset", kit.getI8Decoder()], + ["ciphertextValidityProofInstructionOffset", kit.getI8Decoder()], + ["rangeProofInstructionOffset", kit.getI8Decoder()] + ]); + } + function getConfidentialTransferInstructionDataCodec() { + return kit.combineCodec( + getConfidentialTransferInstructionDataEncoder(), + getConfidentialTransferInstructionDataDecoder() + ); + } + function getConfidentialTransferInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + sourceToken: { value: input.sourceToken ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + destinationToken: { + value: input.destinationToken ?? null, + isWritable: true + }, + instructionsSysvar: { + value: input.instructionsSysvar ?? null, + isWritable: false + }, + equalityRecord: { value: input.equalityRecord ?? null, isWritable: false }, + ciphertextValidityRecord: { + value: input.ciphertextValidityRecord ?? null, + isWritable: false + }, + rangeRecord: { value: input.rangeRecord ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.sourceToken), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destinationToken), + getAccountMeta(accounts.instructionsSysvar), + getAccountMeta(accounts.equalityRecord), + getAccountMeta(accounts.ciphertextValidityRecord), + getAccountMeta(accounts.rangeRecord), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getConfidentialTransferInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseConfidentialTransferInstruction(instruction) { + if (instruction.accounts.length < 8) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + sourceToken: getNextAccount(), + mint: getNextAccount(), + destinationToken: getNextAccount(), + instructionsSysvar: getNextOptionalAccount(), + equalityRecord: getNextOptionalAccount(), + ciphertextValidityRecord: getNextOptionalAccount(), + rangeRecord: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getConfidentialTransferInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR = 27; + function getConfidentialTransferWithFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode(CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR); + } + var CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 13; + function getConfidentialTransferWithFeeConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getConfidentialTransferWithFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["newSourceDecryptableAvailableBalance", getDecryptableBalanceEncoder()], + ["equalityProofInstructionOffset", kit.getI8Encoder()], + [ + "transferAmountCiphertextValidityProofInstructionOffset", + kit.getI8Encoder() + ], + ["feeSigmaProofInstructionOffset", kit.getI8Encoder()], + ["feeCiphertextValidityProofInstructionOffset", kit.getI8Encoder()], + ["rangeProofInstructionOffset", kit.getI8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR, + confidentialTransferDiscriminator: CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getConfidentialTransferWithFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["newSourceDecryptableAvailableBalance", getDecryptableBalanceDecoder()], + ["equalityProofInstructionOffset", kit.getI8Decoder()], + ["transferAmountCiphertextValidityProofInstructionOffset", kit.getI8Decoder()], + ["feeSigmaProofInstructionOffset", kit.getI8Decoder()], + ["feeCiphertextValidityProofInstructionOffset", kit.getI8Decoder()], + ["rangeProofInstructionOffset", kit.getI8Decoder()] + ]); + } + function getConfidentialTransferWithFeeInstructionDataCodec() { + return kit.combineCodec( + getConfidentialTransferWithFeeInstructionDataEncoder(), + getConfidentialTransferWithFeeInstructionDataDecoder() + ); + } + function getConfidentialTransferWithFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + sourceToken: { value: input.sourceToken ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + destinationToken: { + value: input.destinationToken ?? null, + isWritable: true + }, + instructionsSysvar: { + value: input.instructionsSysvar ?? null, + isWritable: false + }, + equalityRecord: { value: input.equalityRecord ?? null, isWritable: false }, + transferAmountCiphertextValidityRecord: { + value: input.transferAmountCiphertextValidityRecord ?? null, + isWritable: false + }, + feeSigmaRecord: { value: input.feeSigmaRecord ?? null, isWritable: false }, + feeCiphertextValidityRecord: { + value: input.feeCiphertextValidityRecord ?? null, + isWritable: false + }, + rangeRecord: { value: input.rangeRecord ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.sourceToken), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destinationToken), + getAccountMeta(accounts.instructionsSysvar), + getAccountMeta(accounts.equalityRecord), + getAccountMeta(accounts.transferAmountCiphertextValidityRecord), + getAccountMeta(accounts.feeSigmaRecord), + getAccountMeta(accounts.feeCiphertextValidityRecord), + getAccountMeta(accounts.rangeRecord), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getConfidentialTransferWithFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseConfidentialTransferWithFeeInstruction(instruction) { + if (instruction.accounts.length < 10) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + sourceToken: getNextAccount(), + mint: getNextAccount(), + destinationToken: getNextAccount(), + instructionsSysvar: getNextOptionalAccount(), + equalityRecord: getNextOptionalAccount(), + transferAmountCiphertextValidityRecord: getNextOptionalAccount(), + feeSigmaRecord: getNextOptionalAccount(), + feeCiphertextValidityRecord: getNextOptionalAccount(), + rangeRecord: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getConfidentialTransferWithFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CONFIDENTIAL_WITHDRAW_DISCRIMINATOR = 27; + function getConfidentialWithdrawDiscriminatorBytes() { + return kit.getU8Encoder().encode(CONFIDENTIAL_WITHDRAW_DISCRIMINATOR); + } + var CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 6; + function getConfidentialWithdrawConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getConfidentialWithdrawInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceEncoder()], + ["equalityProofInstructionOffset", kit.getI8Encoder()], + ["rangeProofInstructionOffset", kit.getI8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: CONFIDENTIAL_WITHDRAW_DISCRIMINATOR, + confidentialTransferDiscriminator: CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getConfidentialWithdrawInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceDecoder()], + ["equalityProofInstructionOffset", kit.getI8Decoder()], + ["rangeProofInstructionOffset", kit.getI8Decoder()] + ]); + } + function getConfidentialWithdrawInstructionDataCodec() { + return kit.combineCodec( + getConfidentialWithdrawInstructionDataEncoder(), + getConfidentialWithdrawInstructionDataDecoder() + ); + } + function getConfidentialWithdrawInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + instructionsSysvar: { + value: input.instructionsSysvar ?? null, + isWritable: false + }, + equalityRecord: { value: input.equalityRecord ?? null, isWritable: false }, + rangeRecord: { value: input.rangeRecord ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.instructionsSysvar), + getAccountMeta(accounts.equalityRecord), + getAccountMeta(accounts.rangeRecord), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getConfidentialWithdrawInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseConfidentialWithdrawInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + mint: getNextAccount(), + instructionsSysvar: getNextOptionalAccount(), + equalityRecord: getNextOptionalAccount(), + rangeRecord: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getConfidentialWithdrawInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27; + function getConfigureConfidentialTransferAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR + ); + } + var CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 2; + function getConfigureConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getConfigureConfidentialTransferAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["decryptableZeroBalance", getDecryptableBalanceEncoder()], + ["maximumPendingBalanceCreditCounter", kit.getU64Encoder()], + ["proofInstructionOffset", kit.getI8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR, + confidentialTransferDiscriminator: CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getConfigureConfidentialTransferAccountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["decryptableZeroBalance", getDecryptableBalanceDecoder()], + ["maximumPendingBalanceCreditCounter", kit.getU64Decoder()], + ["proofInstructionOffset", kit.getI8Decoder()] + ]); + } + function getConfigureConfidentialTransferAccountInstructionDataCodec() { + return kit.combineCodec( + getConfigureConfidentialTransferAccountInstructionDataEncoder(), + getConfigureConfidentialTransferAccountInstructionDataDecoder() + ); + } + function getConfigureConfidentialTransferAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + instructionsSysvarOrContextState: { + value: input.instructionsSysvarOrContextState ?? null, + isWritable: false + }, + record: { value: input.record ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.instructionsSysvarOrContextState.value) { + accounts.instructionsSysvarOrContextState.value = "Sysvar1nstructions1111111111111111111111111"; + } + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.instructionsSysvarOrContextState), + getAccountMeta(accounts.record), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getConfigureConfidentialTransferAccountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseConfigureConfidentialTransferAccountInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + mint: getNextAccount(), + instructionsSysvarOrContextState: getNextAccount(), + record: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getConfigureConfidentialTransferAccountInstructionDataDecoder().decode( + instruction.data + ) + }; + } + async function findAssociatedTokenPda(seeds, config2 = {}) { + const { + programAddress = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL" + } = config2; + return await kit.getProgramDerivedAddress({ + programAddress, + seeds: [ + kit.getAddressEncoder().encode(seeds.owner), + kit.getAddressEncoder().encode(seeds.tokenProgram), + kit.getAddressEncoder().encode(seeds.mint) + ] + }); + } + var CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = 0; + function getCreateAssociatedTokenDiscriminatorBytes() { + return kit.getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR); + } + function getCreateAssociatedTokenInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR + }) + ); + } + function getCreateAssociatedTokenInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCreateAssociatedTokenInstructionDataCodec() { + return kit.combineCodec( + getCreateAssociatedTokenInstructionDataEncoder(), + getCreateAssociatedTokenInstructionDataDecoder() + ); + } + async function getCreateAssociatedTokenInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + if (!accounts.ata.value) { + accounts.ata.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.owner.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.mint.value) + }); + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getCreateAssociatedTokenInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCreateAssociatedTokenInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + payer: getNextAccount(), + ata: getNextAccount(), + owner: getNextAccount(), + mint: getNextAccount(), + systemProgram: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getCreateAssociatedTokenInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = 1; + function getCreateAssociatedTokenIdempotentDiscriminatorBytes() { + return kit.getU8Encoder().encode( + CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR + ); + } + function getCreateAssociatedTokenIdempotentInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR + }) + ); + } + function getCreateAssociatedTokenIdempotentInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCreateAssociatedTokenIdempotentInstructionDataCodec() { + return kit.combineCodec( + getCreateAssociatedTokenIdempotentInstructionDataEncoder(), + getCreateAssociatedTokenIdempotentInstructionDataDecoder() + ); + } + async function getCreateAssociatedTokenIdempotentInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + if (!accounts.ata.value) { + accounts.ata.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.owner.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.mint.value) + }); + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getCreateAssociatedTokenIdempotentInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + ata: { value: input.ata ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false }, + mint: { value: input.mint ?? null, isWritable: false }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.ata), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCreateAssociatedTokenIdempotentInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + payer: getNextAccount(), + ata: getNextAccount(), + owner: getNextAccount(), + mint: getNextAccount(), + systemProgram: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getCreateAssociatedTokenIdempotentInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var CREATE_NATIVE_MINT_DISCRIMINATOR = 31; + function getCreateNativeMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(CREATE_NATIVE_MINT_DISCRIMINATOR); + } + function getCreateNativeMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: CREATE_NATIVE_MINT_DISCRIMINATOR }) + ); + } + function getCreateNativeMintInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getCreateNativeMintInstructionDataCodec() { + return kit.combineCodec( + getCreateNativeMintInstructionDataEncoder(), + getCreateNativeMintInstructionDataDecoder() + ); + } + function getCreateNativeMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + payer: { value: input.payer ?? null, isWritable: true }, + nativeMint: { value: input.nativeMint ?? null, isWritable: true }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.payer), + getAccountMeta(accounts.nativeMint), + getAccountMeta(accounts.systemProgram) + ], + programAddress, + data: getCreateNativeMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseCreateNativeMintInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + payer: getNextAccount(), + nativeMint: getNextAccount(), + systemProgram: getNextAccount() + }, + data: getCreateNativeMintInstructionDataDecoder().decode(instruction.data) + }; + } + var DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27; + function getDisableConfidentialCreditsDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR); + } + var DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 10; + function getDisableConfidentialCreditsConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getDisableConfidentialCreditsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR, + confidentialTransferDiscriminator: DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getDisableConfidentialCreditsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()] + ]); + } + function getDisableConfidentialCreditsInstructionDataCodec() { + return kit.combineCodec( + getDisableConfidentialCreditsInstructionDataEncoder(), + getDisableConfidentialCreditsInstructionDataDecoder() + ); + } + function getDisableConfidentialCreditsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getDisableConfidentialCreditsInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDisableConfidentialCreditsInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + authority: getNextAccount() + }, + data: getDisableConfidentialCreditsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var DISABLE_CPI_GUARD_DISCRIMINATOR = 34; + function getDisableCpiGuardDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_CPI_GUARD_DISCRIMINATOR); + } + var DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 1; + function getDisableCpiGuardCpiGuardDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR); + } + function getDisableCpiGuardInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["cpiGuardDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: DISABLE_CPI_GUARD_DISCRIMINATOR, + cpiGuardDiscriminator: DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR + }) + ); + } + function getDisableCpiGuardInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["cpiGuardDiscriminator", kit.getU8Decoder()] + ]); + } + function getDisableCpiGuardInstructionDataCodec() { + return kit.combineCodec( + getDisableCpiGuardInstructionDataEncoder(), + getDisableCpiGuardInstructionDataDecoder() + ); + } + function getDisableCpiGuardInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getDisableCpiGuardInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDisableCpiGuardInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + owner: getNextAccount() + }, + data: getDisableCpiGuardInstructionDataDecoder().decode(instruction.data) + }; + } + var DISABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37; + function getDisableHarvestToMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_HARVEST_TO_MINT_DISCRIMINATOR); + } + var DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 5; + function getDisableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getDisableHarvestToMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: DISABLE_HARVEST_TO_MINT_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getDisableHarvestToMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()] + ]); + } + function getDisableHarvestToMintInstructionDataCodec() { + return kit.combineCodec( + getDisableHarvestToMintInstructionDataEncoder(), + getDisableHarvestToMintInstructionDataDecoder() + ); + } + function getDisableHarvestToMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getDisableHarvestToMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDisableHarvestToMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getDisableHarvestToMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var DISABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30; + function getDisableMemoTransfersDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_MEMO_TRANSFERS_DISCRIMINATOR); + } + var DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 1; + function getDisableMemoTransfersMemoTransfersDiscriminatorBytes() { + return kit.getU8Encoder().encode( + DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR + ); + } + function getDisableMemoTransfersInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["memoTransfersDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: DISABLE_MEMO_TRANSFERS_DISCRIMINATOR, + memoTransfersDiscriminator: DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR + }) + ); + } + function getDisableMemoTransfersInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["memoTransfersDiscriminator", kit.getU8Decoder()] + ]); + } + function getDisableMemoTransfersInstructionDataCodec() { + return kit.combineCodec( + getDisableMemoTransfersInstructionDataEncoder(), + getDisableMemoTransfersInstructionDataDecoder() + ); + } + function getDisableMemoTransfersInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getDisableMemoTransfersInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDisableMemoTransfersInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + owner: getNextAccount() + }, + data: getDisableMemoTransfersInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27; + function getDisableNonConfidentialCreditsDiscriminatorBytes() { + return kit.getU8Encoder().encode(DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR); + } + var DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 12; + function getDisableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getDisableNonConfidentialCreditsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR, + confidentialTransferDiscriminator: DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getDisableNonConfidentialCreditsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()] + ]); + } + function getDisableNonConfidentialCreditsInstructionDataCodec() { + return kit.combineCodec( + getDisableNonConfidentialCreditsInstructionDataEncoder(), + getDisableNonConfidentialCreditsInstructionDataDecoder() + ); + } + function getDisableNonConfidentialCreditsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getDisableNonConfidentialCreditsInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDisableNonConfidentialCreditsInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + authority: getNextAccount() + }, + data: getDisableNonConfidentialCreditsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var EMIT_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([ + 250, + 166, + 180, + 250, + 13, + 12, + 184, + 70 + ]); + function getEmitTokenMetadataDiscriminatorBytes() { + return kit.getBytesEncoder().encode(EMIT_TOKEN_METADATA_DISCRIMINATOR); + } + function getEmitTokenMetadataInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + ["start", kit.getOptionEncoder(kit.getU64Encoder())], + ["end", kit.getOptionEncoder(kit.getU64Encoder())] + ]), + (value) => ({ + ...value, + discriminator: EMIT_TOKEN_METADATA_DISCRIMINATOR, + start: value.start ?? kit.none(), + end: value.end ?? kit.none() + }) + ); + } + function getEmitTokenMetadataInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + ["start", kit.getOptionDecoder(kit.getU64Decoder())], + ["end", kit.getOptionDecoder(kit.getU64Decoder())] + ]); + } + function getEmitTokenMetadataInstructionDataCodec() { + return kit.combineCodec( + getEmitTokenMetadataInstructionDataEncoder(), + getEmitTokenMetadataInstructionDataDecoder() + ); + } + function getEmitTokenMetadataInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + metadata: { value: input.metadata ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.metadata)], + programAddress, + data: getEmitTokenMetadataInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseEmitTokenMetadataInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + metadata: getNextAccount() + }, + data: getEmitTokenMetadataInstructionDataDecoder().decode(instruction.data) + }; + } + var EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27; + function getEmptyConfidentialTransferAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode( + EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR + ); + } + var EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 4; + function getEmptyConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getEmptyConfidentialTransferAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["proofInstructionOffset", kit.getI8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR, + confidentialTransferDiscriminator: EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getEmptyConfidentialTransferAccountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["proofInstructionOffset", kit.getI8Decoder()] + ]); + } + function getEmptyConfidentialTransferAccountInstructionDataCodec() { + return kit.combineCodec( + getEmptyConfidentialTransferAccountInstructionDataEncoder(), + getEmptyConfidentialTransferAccountInstructionDataDecoder() + ); + } + function getEmptyConfidentialTransferAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + instructionsSysvarOrContextState: { + value: input.instructionsSysvarOrContextState ?? null, + isWritable: false + }, + record: { value: input.record ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.instructionsSysvarOrContextState.value) { + accounts.instructionsSysvarOrContextState.value = "Sysvar1nstructions1111111111111111111111111"; + } + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.instructionsSysvarOrContextState), + getAccountMeta(accounts.record), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getEmptyConfidentialTransferAccountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseEmptyConfidentialTransferAccountInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + instructionsSysvarOrContextState: getNextAccount(), + record: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getEmptyConfidentialTransferAccountInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27; + function getEnableConfidentialCreditsDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR); + } + var ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 9; + function getEnableConfidentialCreditsConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getEnableConfidentialCreditsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR, + confidentialTransferDiscriminator: ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getEnableConfidentialCreditsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()] + ]); + } + function getEnableConfidentialCreditsInstructionDataCodec() { + return kit.combineCodec( + getEnableConfidentialCreditsInstructionDataEncoder(), + getEnableConfidentialCreditsInstructionDataDecoder() + ); + } + function getEnableConfidentialCreditsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getEnableConfidentialCreditsInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseEnableConfidentialCreditsInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + authority: getNextAccount() + }, + data: getEnableConfidentialCreditsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var ENABLE_CPI_GUARD_DISCRIMINATOR = 34; + function getEnableCpiGuardDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_CPI_GUARD_DISCRIMINATOR); + } + var ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 0; + function getEnableCpiGuardCpiGuardDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR); + } + function getEnableCpiGuardInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["cpiGuardDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: ENABLE_CPI_GUARD_DISCRIMINATOR, + cpiGuardDiscriminator: ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR + }) + ); + } + function getEnableCpiGuardInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["cpiGuardDiscriminator", kit.getU8Decoder()] + ]); + } + function getEnableCpiGuardInstructionDataCodec() { + return kit.combineCodec( + getEnableCpiGuardInstructionDataEncoder(), + getEnableCpiGuardInstructionDataDecoder() + ); + } + function getEnableCpiGuardInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getEnableCpiGuardInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseEnableCpiGuardInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + owner: getNextAccount() + }, + data: getEnableCpiGuardInstructionDataDecoder().decode(instruction.data) + }; + } + var ENABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37; + function getEnableHarvestToMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_HARVEST_TO_MINT_DISCRIMINATOR); + } + var ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 4; + function getEnableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getEnableHarvestToMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: ENABLE_HARVEST_TO_MINT_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getEnableHarvestToMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()] + ]); + } + function getEnableHarvestToMintInstructionDataCodec() { + return kit.combineCodec( + getEnableHarvestToMintInstructionDataEncoder(), + getEnableHarvestToMintInstructionDataDecoder() + ); + } + function getEnableHarvestToMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getEnableHarvestToMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseEnableHarvestToMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getEnableHarvestToMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var ENABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30; + function getEnableMemoTransfersDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_MEMO_TRANSFERS_DISCRIMINATOR); + } + var ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 0; + function getEnableMemoTransfersMemoTransfersDiscriminatorBytes() { + return kit.getU8Encoder().encode( + ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR + ); + } + function getEnableMemoTransfersInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["memoTransfersDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: ENABLE_MEMO_TRANSFERS_DISCRIMINATOR, + memoTransfersDiscriminator: ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR + }) + ); + } + function getEnableMemoTransfersInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["memoTransfersDiscriminator", kit.getU8Decoder()] + ]); + } + function getEnableMemoTransfersInstructionDataCodec() { + return kit.combineCodec( + getEnableMemoTransfersInstructionDataEncoder(), + getEnableMemoTransfersInstructionDataDecoder() + ); + } + function getEnableMemoTransfersInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getEnableMemoTransfersInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseEnableMemoTransfersInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + owner: getNextAccount() + }, + data: getEnableMemoTransfersInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27; + function getEnableNonConfidentialCreditsDiscriminatorBytes() { + return kit.getU8Encoder().encode(ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR); + } + var ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 11; + function getEnableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getEnableNonConfidentialCreditsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR, + confidentialTransferDiscriminator: ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getEnableNonConfidentialCreditsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()] + ]); + } + function getEnableNonConfidentialCreditsInstructionDataCodec() { + return kit.combineCodec( + getEnableNonConfidentialCreditsInstructionDataEncoder(), + getEnableNonConfidentialCreditsInstructionDataDecoder() + ); + } + function getEnableNonConfidentialCreditsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getEnableNonConfidentialCreditsInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseEnableNonConfidentialCreditsInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + authority: getNextAccount() + }, + data: getEnableNonConfidentialCreditsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var FREEZE_ACCOUNT_DISCRIMINATOR = 10; + function getFreezeAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(FREEZE_ACCOUNT_DISCRIMINATOR); + } + function getFreezeAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: FREEZE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getFreezeAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getFreezeAccountInstructionDataCodec() { + return kit.combineCodec( + getFreezeAccountInstructionDataEncoder(), + getFreezeAccountInstructionDataDecoder() + ); + } + function getFreezeAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getFreezeAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseFreezeAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount() + }, + data: getFreezeAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = 21; + function getGetAccountDataSizeDiscriminatorBytes() { + return kit.getU8Encoder().encode(GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR); + } + function getGetAccountDataSizeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR + }) + ); + } + function getGetAccountDataSizeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getGetAccountDataSizeInstructionDataCodec() { + return kit.combineCodec( + getGetAccountDataSizeInstructionDataEncoder(), + getGetAccountDataSizeInstructionDataDecoder() + ); + } + function getGetAccountDataSizeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getGetAccountDataSizeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseGetAccountDataSizeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getGetAccountDataSizeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR = 26; + function getHarvestWithheldTokensToMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR); + } + var HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR = 4; + function getHarvestWithheldTokensToMintTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getHarvestWithheldTokensToMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR, + transferFeeDiscriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getHarvestWithheldTokensToMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()] + ]); + } + function getHarvestWithheldTokensToMintInstructionDataCodec() { + return kit.combineCodec( + getHarvestWithheldTokensToMintInstructionDataEncoder(), + getHarvestWithheldTokensToMintInstructionDataDecoder() + ); + } + function getHarvestWithheldTokensToMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = args.sources.map((address) => ({ + address, + role: kit.AccountRole.WRITABLE + })); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint), ...remainingAccounts], + programAddress, + data: getHarvestWithheldTokensToMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseHarvestWithheldTokensToMintInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getHarvestWithheldTokensToMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37; + function getHarvestWithheldTokensToMintForConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + var HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 3; + function getHarvestWithheldTokensToMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()] + ]); + } + function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataCodec() { + return kit.combineCodec( + getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder(), + getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder() + ); + } + function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.sources ?? []).map( + (address) => ({ address, role: kit.AccountRole.WRITABLE }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint), ...remainingAccounts], + programAddress, + data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder().encode( + {} + ) + }; + return instruction; + } + function parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_ACCOUNT_DISCRIMINATOR = 1; + function getInitializeAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT_DISCRIMINATOR); + } + function getInitializeAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT_DISCRIMINATOR }) + ); + } + function getInitializeAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getInitializeAccountInstructionDataCodec() { + return kit.combineCodec( + getInitializeAccountInstructionDataEncoder(), + getInitializeAccountInstructionDataDecoder() + ); + } + function getInitializeAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + getAccountMeta(accounts.rent) + ], + programAddress, + data: getInitializeAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeAccountInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_ACCOUNT2_DISCRIMINATOR = 16; + function getInitializeAccount2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT2_DISCRIMINATOR); + } + function getInitializeAccount2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["owner", kit.getAddressEncoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT2_DISCRIMINATOR }) + ); + } + function getInitializeAccount2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["owner", kit.getAddressDecoder()] + ]); + } + function getInitializeAccount2InstructionDataCodec() { + return kit.combineCodec( + getInitializeAccount2InstructionDataEncoder(), + getInitializeAccount2InstructionDataDecoder() + ); + } + function getInitializeAccount2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.rent) + ], + programAddress, + data: getInitializeAccount2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeAccount2Instruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeAccount2InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_ACCOUNT3_DISCRIMINATOR = 18; + function getInitializeAccount3DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_ACCOUNT3_DISCRIMINATOR); + } + function getInitializeAccount3InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["owner", kit.getAddressEncoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT3_DISCRIMINATOR }) + ); + } + function getInitializeAccount3InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["owner", kit.getAddressDecoder()] + ]); + } + function getInitializeAccount3InstructionDataCodec() { + return kit.combineCodec( + getInitializeAccount3InstructionDataEncoder(), + getInitializeAccount3InstructionDataDecoder() + ); + } + function getInitializeAccount3Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeAccount3InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeAccount3Instruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount() + }, + data: getInitializeAccount3InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37; + function getInitializeConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + var INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 0; + function getInitializeConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getInitializeConfidentialTransferFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "withdrawWithheldAuthorityElGamalPubkey", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getInitializeConfidentialTransferFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "withdrawWithheldAuthorityElGamalPubkey", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeConfidentialTransferFeeInstructionDataCodec() { + return kit.combineCodec( + getInitializeConfidentialTransferFeeInstructionDataEncoder(), + getInitializeConfidentialTransferFeeInstructionDataDecoder() + ); + } + function getInitializeConfidentialTransferFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeConfidentialTransferFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeConfidentialTransferFeeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeConfidentialTransferFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27; + function getInitializeConfidentialTransferMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR + ); + } + var INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 0; + function getInitializeConfidentialTransferMintConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getInitializeConfidentialTransferMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["autoApproveNewAccounts", kit.getBooleanEncoder()], + [ + "auditorElgamalPubkey", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR, + confidentialTransferDiscriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getInitializeConfidentialTransferMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["autoApproveNewAccounts", kit.getBooleanDecoder()], + [ + "auditorElgamalPubkey", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeConfidentialTransferMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeConfidentialTransferMintInstructionDataEncoder(), + getInitializeConfidentialTransferMintInstructionDataDecoder() + ); + } + function getInitializeConfidentialTransferMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeConfidentialTransferMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeConfidentialTransferMintInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeConfidentialTransferMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28; + function getInitializeDefaultAccountStateDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR); + } + var INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 0; + function getInitializeDefaultAccountStateDefaultAccountStateDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR + ); + } + function getInitializeDefaultAccountStateInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["defaultAccountStateDiscriminator", kit.getU8Encoder()], + ["state", getAccountStateEncoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR, + defaultAccountStateDiscriminator: INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR + }) + ); + } + function getInitializeDefaultAccountStateInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["defaultAccountStateDiscriminator", kit.getU8Decoder()], + ["state", getAccountStateDecoder()] + ]); + } + function getInitializeDefaultAccountStateInstructionDataCodec() { + return kit.combineCodec( + getInitializeDefaultAccountStateInstructionDataEncoder(), + getInitializeDefaultAccountStateInstructionDataDecoder() + ); + } + function getInitializeDefaultAccountStateInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeDefaultAccountStateInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeDefaultAccountStateInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeDefaultAccountStateInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41; + function getInitializeGroupMemberPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR); + } + var INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 0; + function getInitializeGroupMemberPointerGroupMemberPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR + ); + } + function getInitializeGroupMemberPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["groupMemberPointerDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "memberAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR, + groupMemberPointerDiscriminator: INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR + }) + ); + } + function getInitializeGroupMemberPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["groupMemberPointerDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "memberAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeGroupMemberPointerInstructionDataCodec() { + return kit.combineCodec( + getInitializeGroupMemberPointerInstructionDataEncoder(), + getInitializeGroupMemberPointerInstructionDataDecoder() + ); + } + function getInitializeGroupMemberPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeGroupMemberPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeGroupMemberPointerInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeGroupMemberPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_GROUP_POINTER_DISCRIMINATOR = 40; + function getInitializeGroupPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_GROUP_POINTER_DISCRIMINATOR); + } + var INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 0; + function getInitializeGroupPointerGroupPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR + ); + } + function getInitializeGroupPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["groupPointerDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "groupAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_GROUP_POINTER_DISCRIMINATOR, + groupPointerDiscriminator: INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR + }) + ); + } + function getInitializeGroupPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["groupPointerDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "groupAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeGroupPointerInstructionDataCodec() { + return kit.combineCodec( + getInitializeGroupPointerInstructionDataEncoder(), + getInitializeGroupPointerInstructionDataDecoder() + ); + } + function getInitializeGroupPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeGroupPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeGroupPointerInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeGroupPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = 22; + function getInitializeImmutableOwnerDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR); + } + function getInitializeImmutableOwnerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR + }) + ); + } + function getInitializeImmutableOwnerInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getInitializeImmutableOwnerInstructionDataCodec() { + return kit.combineCodec( + getInitializeImmutableOwnerInstructionDataEncoder(), + getInitializeImmutableOwnerInstructionDataDecoder() + ); + } + function getInitializeImmutableOwnerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account)], + programAddress, + data: getInitializeImmutableOwnerInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeImmutableOwnerInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount() + }, + data: getInitializeImmutableOwnerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33; + function getInitializeInterestBearingMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR); + } + var INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 0; + function getInitializeInterestBearingMintInterestBearingMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR + ); + } + function getInitializeInterestBearingMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["interestBearingMintDiscriminator", kit.getU8Encoder()], + [ + "rateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["rate", kit.getI16Encoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR, + interestBearingMintDiscriminator: INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR + }) + ); + } + function getInitializeInterestBearingMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["interestBearingMintDiscriminator", kit.getU8Decoder()], + [ + "rateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["rate", kit.getI16Decoder()] + ]); + } + function getInitializeInterestBearingMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeInterestBearingMintInstructionDataEncoder(), + getInitializeInterestBearingMintInstructionDataDecoder() + ); + } + function getInitializeInterestBearingMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeInterestBearingMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeInterestBearingMintInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeInterestBearingMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_METADATA_POINTER_DISCRIMINATOR = 39; + function getInitializeMetadataPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_METADATA_POINTER_DISCRIMINATOR); + } + var INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 0; + function getInitializeMetadataPointerMetadataPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR + ); + } + function getInitializeMetadataPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["metadataPointerDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "metadataAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_METADATA_POINTER_DISCRIMINATOR, + metadataPointerDiscriminator: INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR + }) + ); + } + function getInitializeMetadataPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["metadataPointerDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "metadataAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeMetadataPointerInstructionDataCodec() { + return kit.combineCodec( + getInitializeMetadataPointerInstructionDataEncoder(), + getInitializeMetadataPointerInstructionDataDecoder() + ); + } + function getInitializeMetadataPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeMetadataPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMetadataPointerInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeMetadataPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_MINT_DISCRIMINATOR = 0; + function getInitializeMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MINT_DISCRIMINATOR); + } + function getInitializeMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["decimals", kit.getU8Encoder()], + ["mintAuthority", kit.getAddressEncoder()], + ["freezeAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_MINT_DISCRIMINATOR, + freezeAuthority: value.freezeAuthority ?? kit.none() + }) + ); + } + function getInitializeMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["decimals", kit.getU8Decoder()], + ["mintAuthority", kit.getAddressDecoder()], + ["freezeAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getInitializeMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeMintInstructionDataEncoder(), + getInitializeMintInstructionDataDecoder() + ); + } + function getInitializeMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)], + programAddress, + data: getInitializeMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeMintInstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_MINT2_DISCRIMINATOR = 20; + function getInitializeMint2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MINT2_DISCRIMINATOR); + } + function getInitializeMint2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["decimals", kit.getU8Encoder()], + ["mintAuthority", kit.getAddressEncoder()], + ["freezeAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_MINT2_DISCRIMINATOR, + freezeAuthority: value.freezeAuthority ?? kit.none() + }) + ); + } + function getInitializeMint2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["decimals", kit.getU8Decoder()], + ["mintAuthority", kit.getAddressDecoder()], + ["freezeAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getInitializeMint2InstructionDataCodec() { + return kit.combineCodec( + getInitializeMint2InstructionDataEncoder(), + getInitializeMint2InstructionDataDecoder() + ); + } + function getInitializeMint2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeMint2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMint2Instruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeMint2InstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR = 25; + function getInitializeMintCloseAuthorityDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR); + } + function getInitializeMintCloseAuthorityInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["closeAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR + }) + ); + } + function getInitializeMintCloseAuthorityInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["closeAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getInitializeMintCloseAuthorityInstructionDataCodec() { + return kit.combineCodec( + getInitializeMintCloseAuthorityInstructionDataEncoder(), + getInitializeMintCloseAuthorityInstructionDataDecoder() + ); + } + function getInitializeMintCloseAuthorityInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeMintCloseAuthorityInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMintCloseAuthorityInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeMintCloseAuthorityInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_MULTISIG_DISCRIMINATOR = 2; + function getInitializeMultisigDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MULTISIG_DISCRIMINATOR); + } + function getInitializeMultisigInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["m", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG_DISCRIMINATOR }) + ); + } + function getInitializeMultisigInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["m", kit.getU8Decoder()] + ]); + } + function getInitializeMultisigInstructionDataCodec() { + return kit.combineCodec( + getInitializeMultisigInstructionDataEncoder(), + getInitializeMultisigInstructionDataDecoder() + ); + } + function getInitializeMultisigInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + multisig: { value: input.multisig ?? null, isWritable: true }, + rent: { value: input.rent ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rent.value) { + accounts.rent.value = "SysvarRent111111111111111111111111111111111"; + } + const remainingAccounts = args.signers.map((address) => ({ + address, + role: kit.AccountRole.READONLY + })); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.multisig), + getAccountMeta(accounts.rent), + ...remainingAccounts + ], + programAddress, + data: getInitializeMultisigInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMultisigInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + multisig: getNextAccount(), + rent: getNextAccount() + }, + data: getInitializeMultisigInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_MULTISIG2_DISCRIMINATOR = 19; + function getInitializeMultisig2DiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_MULTISIG2_DISCRIMINATOR); + } + function getInitializeMultisig2InstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["m", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG2_DISCRIMINATOR }) + ); + } + function getInitializeMultisig2InstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["m", kit.getU8Decoder()] + ]); + } + function getInitializeMultisig2InstructionDataCodec() { + return kit.combineCodec( + getInitializeMultisig2InstructionDataEncoder(), + getInitializeMultisig2InstructionDataDecoder() + ); + } + function getInitializeMultisig2Instruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + multisig: { value: input.multisig ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = args.signers.map((address) => ({ + address, + role: kit.AccountRole.READONLY + })); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.multisig), ...remainingAccounts], + programAddress, + data: getInitializeMultisig2InstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeMultisig2Instruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + multisig: getNextAccount() + }, + data: getInitializeMultisig2InstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR = 32; + function getInitializeNonTransferableMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR); + } + function getInitializeNonTransferableMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR + }) + ); + } + function getInitializeNonTransferableMintInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getInitializeNonTransferableMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeNonTransferableMintInstructionDataEncoder(), + getInitializeNonTransferableMintInstructionDataDecoder() + ); + } + function getInitializeNonTransferableMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeNonTransferableMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeNonTransferableMintInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeNonTransferableMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR = 44; + function getInitializePausableConfigDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR); + } + var INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR = 0; + function getInitializePausableConfigPausableDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR + ); + } + function getInitializePausableConfigInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["pausableDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR, + pausableDiscriminator: INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR + }) + ); + } + function getInitializePausableConfigInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["pausableDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializePausableConfigInstructionDataCodec() { + return kit.combineCodec( + getInitializePausableConfigInstructionDataEncoder(), + getInitializePausableConfigInstructionDataDecoder() + ); + } + function getInitializePausableConfigInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializePausableConfigInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializePausableConfigInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializePausableConfigInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR = 35; + function getInitializePermanentDelegateDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR); + } + function getInitializePermanentDelegateInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["delegate", kit.getAddressEncoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR + }) + ); + } + function getInitializePermanentDelegateInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["delegate", kit.getAddressDecoder()] + ]); + } + function getInitializePermanentDelegateInstructionDataCodec() { + return kit.combineCodec( + getInitializePermanentDelegateInstructionDataEncoder(), + getInitializePermanentDelegateInstructionDataDecoder() + ); + } + function getInitializePermanentDelegateInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializePermanentDelegateInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializePermanentDelegateInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializePermanentDelegateInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 43; + function getInitializeScaledUiAmountMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR); + } + var INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 0; + function getInitializeScaledUiAmountMintScaledUiAmountMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR + ); + } + function getInitializeScaledUiAmountMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["scaledUiAmountMintDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["multiplier", kit.getF64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR, + scaledUiAmountMintDiscriminator: INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR + }) + ); + } + function getInitializeScaledUiAmountMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["scaledUiAmountMintDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["multiplier", kit.getF64Decoder()] + ]); + } + function getInitializeScaledUiAmountMintInstructionDataCodec() { + return kit.combineCodec( + getInitializeScaledUiAmountMintInstructionDataEncoder(), + getInitializeScaledUiAmountMintInstructionDataDecoder() + ); + } + function getInitializeScaledUiAmountMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeScaledUiAmountMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeScaledUiAmountMintInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeScaledUiAmountMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_TOKEN_GROUP_DISCRIMINATOR = new Uint8Array([ + 121, + 113, + 108, + 39, + 54, + 51, + 0, + 4 + ]); + function getInitializeTokenGroupDiscriminatorBytes() { + return kit.getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_DISCRIMINATOR); + } + function getInitializeTokenGroupInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + [ + "updateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["maxSize", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_TOKEN_GROUP_DISCRIMINATOR + }) + ); + } + function getInitializeTokenGroupInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + [ + "updateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + ["maxSize", kit.getU64Decoder()] + ]); + } + function getInitializeTokenGroupInstructionDataCodec() { + return kit.combineCodec( + getInitializeTokenGroupInstructionDataEncoder(), + getInitializeTokenGroupInstructionDataDecoder() + ); + } + function getInitializeTokenGroupInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + group: { value: input.group ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.group), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.mintAuthority) + ], + programAddress, + data: getInitializeTokenGroupInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeTokenGroupInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + group: getNextAccount(), + mint: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getInitializeTokenGroupInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR = new Uint8Array([ + 152, + 32, + 222, + 176, + 223, + 237, + 116, + 134 + ]); + function getInitializeTokenGroupMemberDiscriminatorBytes() { + return kit.getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR); + } + function getInitializeTokenGroupMemberInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getBytesEncoder()]]), + (value) => ({ + ...value, + discriminator: INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR + }) + ); + } + function getInitializeTokenGroupMemberInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getBytesDecoder()]]); + } + function getInitializeTokenGroupMemberInstructionDataCodec() { + return kit.combineCodec( + getInitializeTokenGroupMemberInstructionDataEncoder(), + getInitializeTokenGroupMemberInstructionDataDecoder() + ); + } + function getInitializeTokenGroupMemberInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + member: { value: input.member ?? null, isWritable: true }, + memberMint: { value: input.memberMint ?? null, isWritable: false }, + memberMintAuthority: { + value: input.memberMintAuthority ?? null, + isWritable: false + }, + group: { value: input.group ?? null, isWritable: true }, + groupUpdateAuthority: { + value: input.groupUpdateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.member), + getAccountMeta(accounts.memberMint), + getAccountMeta(accounts.memberMintAuthority), + getAccountMeta(accounts.group), + getAccountMeta(accounts.groupUpdateAuthority) + ], + programAddress, + data: getInitializeTokenGroupMemberInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeTokenGroupMemberInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + member: getNextAccount(), + memberMint: getNextAccount(), + memberMintAuthority: getNextAccount(), + group: getNextAccount(), + groupUpdateAuthority: getNextAccount() + }, + data: getInitializeTokenGroupMemberInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([ + 210, + 225, + 30, + 162, + 88, + 184, + 77, + 141 + ]); + function getInitializeTokenMetadataDiscriminatorBytes() { + return kit.getBytesEncoder().encode(INITIALIZE_TOKEN_METADATA_DISCRIMINATOR); + } + function getInitializeTokenMetadataInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + ["name", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())], + ["symbol", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())], + ["uri", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_TOKEN_METADATA_DISCRIMINATOR + }) + ); + } + function getInitializeTokenMetadataInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + ["name", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["symbol", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["uri", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())] + ]); + } + function getInitializeTokenMetadataInstructionDataCodec() { + return kit.combineCodec( + getInitializeTokenMetadataInstructionDataEncoder(), + getInitializeTokenMetadataInstructionDataDecoder() + ); + } + function getInitializeTokenMetadataInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + metadata: { value: input.metadata ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + }, + mint: { value: input.mint ?? null, isWritable: false }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.metadata), + getAccountMeta(accounts.updateAuthority), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.mintAuthority) + ], + programAddress, + data: getInitializeTokenMetadataInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeTokenMetadataInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + metadata: getNextAccount(), + updateAuthority: getNextAccount(), + mint: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getInitializeTokenMetadataInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR = 26; + function getInitializeTransferFeeConfigDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR); + } + var INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR = 0; + function getInitializeTransferFeeConfigTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getInitializeTransferFeeConfigInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()], + ["transferFeeConfigAuthority", kit.getOptionEncoder(kit.getAddressEncoder())], + ["withdrawWithheldAuthority", kit.getOptionEncoder(kit.getAddressEncoder())], + ["transferFeeBasisPoints", kit.getU16Encoder()], + ["maximumFee", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR, + transferFeeDiscriminator: INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getInitializeTransferFeeConfigInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()], + ["transferFeeConfigAuthority", kit.getOptionDecoder(kit.getAddressDecoder())], + ["withdrawWithheldAuthority", kit.getOptionDecoder(kit.getAddressDecoder())], + ["transferFeeBasisPoints", kit.getU16Decoder()], + ["maximumFee", kit.getU64Decoder()] + ]); + } + function getInitializeTransferFeeConfigInstructionDataCodec() { + return kit.combineCodec( + getInitializeTransferFeeConfigInstructionDataEncoder(), + getInitializeTransferFeeConfigInstructionDataDecoder() + ); + } + function getInitializeTransferFeeConfigInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeTransferFeeConfigInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeTransferFeeConfigInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeTransferFeeConfigInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR = 36; + function getInitializeTransferHookDiscriminatorBytes() { + return kit.getU8Encoder().encode(INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR); + } + var INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 0; + function getInitializeTransferHookTransferHookDiscriminatorBytes() { + return kit.getU8Encoder().encode( + INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR + ); + } + function getInitializeTransferHookInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferHookDiscriminator", kit.getU8Encoder()], + [ + "authority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "programId", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR, + transferHookDiscriminator: INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR + }) + ); + } + function getInitializeTransferHookInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferHookDiscriminator", kit.getU8Decoder()], + [ + "authority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ], + [ + "programId", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getInitializeTransferHookInstructionDataCodec() { + return kit.combineCodec( + getInitializeTransferHookInstructionDataEncoder(), + getInitializeTransferHookInstructionDataDecoder() + ); + } + function getInitializeTransferHookInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getInitializeTransferHookInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeTransferHookInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getInitializeTransferHookInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var MINT_TO_DISCRIMINATOR = 7; + function getMintToDiscriminatorBytes() { + return kit.getU8Encoder().encode(MINT_TO_DISCRIMINATOR); + } + function getMintToInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: MINT_TO_DISCRIMINATOR }) + ); + } + function getMintToInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getMintToInstructionDataCodec() { + return kit.combineCodec( + getMintToInstructionDataEncoder(), + getMintToInstructionDataDecoder() + ); + } + function getMintToInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + token: { value: input.token ?? null, isWritable: true }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.token), + getAccountMeta(accounts.mintAuthority), + ...remainingAccounts + ], + programAddress, + data: getMintToInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMintToInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + token: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getMintToInstructionDataDecoder().decode(instruction.data) + }; + } + var MINT_TO_CHECKED_DISCRIMINATOR = 14; + function getMintToCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(MINT_TO_CHECKED_DISCRIMINATOR); + } + function getMintToCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: MINT_TO_CHECKED_DISCRIMINATOR }) + ); + } + function getMintToCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getMintToCheckedInstructionDataCodec() { + return kit.combineCodec( + getMintToCheckedInstructionDataEncoder(), + getMintToCheckedInstructionDataDecoder() + ); + } + function getMintToCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + token: { value: input.token ?? null, isWritable: true }, + mintAuthority: { value: input.mintAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.token), + getAccountMeta(accounts.mintAuthority), + ...remainingAccounts + ], + programAddress, + data: getMintToCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMintToCheckedInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + token: getNextAccount(), + mintAuthority: getNextAccount() + }, + data: getMintToCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var PAUSE_DISCRIMINATOR = 44; + function getPauseDiscriminatorBytes() { + return kit.getU8Encoder().encode(PAUSE_DISCRIMINATOR); + } + var PAUSE_PAUSABLE_DISCRIMINATOR = 1; + function getPausePausableDiscriminatorBytes() { + return kit.getU8Encoder().encode(PAUSE_PAUSABLE_DISCRIMINATOR); + } + function getPauseInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["pausableDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: PAUSE_DISCRIMINATOR, + pausableDiscriminator: PAUSE_PAUSABLE_DISCRIMINATOR + }) + ); + } + function getPauseInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["pausableDiscriminator", kit.getU8Decoder()] + ]); + } + function getPauseInstructionDataCodec() { + return kit.combineCodec( + getPauseInstructionDataEncoder(), + getPauseInstructionDataDecoder() + ); + } + function getPauseInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority) + ], + programAddress, + data: getPauseInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parsePauseInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getPauseInstructionDataDecoder().decode(instruction.data) + }; + } + var REALLOCATE_DISCRIMINATOR = 29; + function getReallocateDiscriminatorBytes() { + return kit.getU8Encoder().encode(REALLOCATE_DISCRIMINATOR); + } + function getReallocateInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + [ + "newExtensionTypes", + kit.getArrayEncoder(getExtensionTypeEncoder(), { size: "remainder" }) + ] + ]), + (value) => ({ ...value, discriminator: REALLOCATE_DISCRIMINATOR }) + ); + } + function getReallocateInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + [ + "newExtensionTypes", + kit.getArrayDecoder(getExtensionTypeDecoder(), { size: "remainder" }) + ] + ]); + } + function getReallocateInstructionDataCodec() { + return kit.combineCodec( + getReallocateInstructionDataEncoder(), + getReallocateInstructionDataDecoder() + ); + } + function getReallocateInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + token: { value: input.token ?? null, isWritable: true }, + payer: { value: input.payer ?? null, isWritable: true }, + systemProgram: { value: input.systemProgram ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.systemProgram.value) { + accounts.systemProgram.value = "11111111111111111111111111111111"; + } + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.token), + getAccountMeta(accounts.payer), + getAccountMeta(accounts.systemProgram), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getReallocateInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseReallocateInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + token: getNextAccount(), + payer: getNextAccount(), + systemProgram: getNextAccount(), + owner: getNextAccount() + }, + data: getReallocateInstructionDataDecoder().decode(instruction.data) + }; + } + var RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = 2; + function getRecoverNestedAssociatedTokenDiscriminatorBytes() { + return kit.getU8Encoder().encode(RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR); + } + function getRecoverNestedAssociatedTokenInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR + }) + ); + } + function getRecoverNestedAssociatedTokenInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getRecoverNestedAssociatedTokenInstructionDataCodec() { + return kit.combineCodec( + getRecoverNestedAssociatedTokenInstructionDataEncoder(), + getRecoverNestedAssociatedTokenInstructionDataDecoder() + ); + } + async function getRecoverNestedAssociatedTokenInstructionAsync(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + nestedAssociatedAccountAddress: { + value: input.nestedAssociatedAccountAddress ?? null, + isWritable: true + }, + nestedTokenMintAddress: { + value: input.nestedTokenMintAddress ?? null, + isWritable: false + }, + destinationAssociatedAccountAddress: { + value: input.destinationAssociatedAccountAddress ?? null, + isWritable: true + }, + ownerAssociatedAccountAddress: { + value: input.ownerAssociatedAccountAddress ?? null, + isWritable: false + }, + ownerTokenMintAddress: { + value: input.ownerTokenMintAddress ?? null, + isWritable: false + }, + walletAddress: { value: input.walletAddress ?? null, isWritable: true }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + if (!accounts.ownerAssociatedAccountAddress.value) { + accounts.ownerAssociatedAccountAddress.value = await findAssociatedTokenPda( + { + owner: expectAddress(accounts.walletAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.ownerTokenMintAddress.value) + } + ); + } + if (!accounts.nestedAssociatedAccountAddress.value) { + accounts.nestedAssociatedAccountAddress.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.ownerAssociatedAccountAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.nestedTokenMintAddress.value) + }); + } + if (!accounts.destinationAssociatedAccountAddress.value) { + accounts.destinationAssociatedAccountAddress.value = await findAssociatedTokenPda({ + owner: expectAddress(accounts.walletAddress.value), + tokenProgram: expectAddress(accounts.tokenProgram.value), + mint: expectAddress(accounts.nestedTokenMintAddress.value) + }); + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.nestedAssociatedAccountAddress), + getAccountMeta(accounts.nestedTokenMintAddress), + getAccountMeta(accounts.destinationAssociatedAccountAddress), + getAccountMeta(accounts.ownerAssociatedAccountAddress), + getAccountMeta(accounts.ownerTokenMintAddress), + getAccountMeta(accounts.walletAddress), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function getRecoverNestedAssociatedTokenInstruction(input, config2) { + const programAddress = config2?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + const originalAccounts = { + nestedAssociatedAccountAddress: { + value: input.nestedAssociatedAccountAddress ?? null, + isWritable: true + }, + nestedTokenMintAddress: { + value: input.nestedTokenMintAddress ?? null, + isWritable: false + }, + destinationAssociatedAccountAddress: { + value: input.destinationAssociatedAccountAddress ?? null, + isWritable: true + }, + ownerAssociatedAccountAddress: { + value: input.ownerAssociatedAccountAddress ?? null, + isWritable: false + }, + ownerTokenMintAddress: { + value: input.ownerTokenMintAddress ?? null, + isWritable: false + }, + walletAddress: { value: input.walletAddress ?? null, isWritable: true }, + tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.tokenProgram.value) { + accounts.tokenProgram.value = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"; + } + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.nestedAssociatedAccountAddress), + getAccountMeta(accounts.nestedTokenMintAddress), + getAccountMeta(accounts.destinationAssociatedAccountAddress), + getAccountMeta(accounts.ownerAssociatedAccountAddress), + getAccountMeta(accounts.ownerTokenMintAddress), + getAccountMeta(accounts.walletAddress), + getAccountMeta(accounts.tokenProgram) + ], + programAddress, + data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseRecoverNestedAssociatedTokenInstruction(instruction) { + if (instruction.accounts.length < 7) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + nestedAssociatedAccountAddress: getNextAccount(), + nestedTokenMintAddress: getNextAccount(), + destinationAssociatedAccountAddress: getNextAccount(), + ownerAssociatedAccountAddress: getNextAccount(), + ownerTokenMintAddress: getNextAccount(), + walletAddress: getNextAccount(), + tokenProgram: getNextAccount() + }, + data: getRecoverNestedAssociatedTokenInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR = new Uint8Array([ + 234, + 18, + 32, + 56, + 89, + 141, + 37, + 181 + ]); + function getRemoveTokenMetadataKeyDiscriminatorBytes() { + return kit.getBytesEncoder().encode(REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR); + } + function getRemoveTokenMetadataKeyInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + ["idempotent", kit.getBooleanEncoder()], + ["key", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())] + ]), + (value) => ({ + ...value, + discriminator: REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR, + idempotent: value.idempotent ?? false + }) + ); + } + function getRemoveTokenMetadataKeyInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + ["idempotent", kit.getBooleanDecoder()], + ["key", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())] + ]); + } + function getRemoveTokenMetadataKeyInstructionDataCodec() { + return kit.combineCodec( + getRemoveTokenMetadataKeyInstructionDataEncoder(), + getRemoveTokenMetadataKeyInstructionDataDecoder() + ); + } + function getRemoveTokenMetadataKeyInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + metadata: { value: input.metadata ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.metadata), + getAccountMeta(accounts.updateAuthority) + ], + programAddress, + data: getRemoveTokenMetadataKeyInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseRemoveTokenMetadataKeyInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + metadata: getNextAccount(), + updateAuthority: getNextAccount() + }, + data: getRemoveTokenMetadataKeyInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var RESUME_DISCRIMINATOR = 44; + function getResumeDiscriminatorBytes() { + return kit.getU8Encoder().encode(RESUME_DISCRIMINATOR); + } + var RESUME_PAUSABLE_DISCRIMINATOR = 2; + function getResumePausableDiscriminatorBytes() { + return kit.getU8Encoder().encode(RESUME_PAUSABLE_DISCRIMINATOR); + } + function getResumeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["pausableDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: RESUME_DISCRIMINATOR, + pausableDiscriminator: RESUME_PAUSABLE_DISCRIMINATOR + }) + ); + } + function getResumeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["pausableDiscriminator", kit.getU8Decoder()] + ]); + } + function getResumeInstructionDataCodec() { + return kit.combineCodec( + getResumeInstructionDataEncoder(), + getResumeInstructionDataDecoder() + ); + } + function getResumeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority) + ], + programAddress, + data: getResumeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseResumeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getResumeInstructionDataDecoder().decode(instruction.data) + }; + } + var REVOKE_DISCRIMINATOR = 5; + function getRevokeDiscriminatorBytes() { + return kit.getU8Encoder().encode(REVOKE_DISCRIMINATOR); + } + function getRevokeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: REVOKE_DISCRIMINATOR }) + ); + } + function getRevokeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getRevokeInstructionDataCodec() { + return kit.combineCodec( + getRevokeInstructionDataEncoder(), + getRevokeInstructionDataDecoder() + ); + } + function getRevokeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getRevokeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseRevokeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + owner: getNextAccount() + }, + data: getRevokeInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_AUTHORITY_DISCRIMINATOR = 6; + function getSetAuthorityDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_AUTHORITY_DISCRIMINATOR); + } + function getSetAuthorityInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["authorityType", getAuthorityTypeEncoder()], + ["newAuthority", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR }) + ); + } + function getSetAuthorityInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["authorityType", getAuthorityTypeDecoder()], + ["newAuthority", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getSetAuthorityInstructionDataCodec() { + return kit.combineCodec( + getSetAuthorityInstructionDataEncoder(), + getSetAuthorityInstructionDataDecoder() + ); + } + function getSetAuthorityInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + owned: { value: input.owned ?? null, isWritable: true }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.owned), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getSetAuthorityInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetAuthorityInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + owned: getNextAccount(), + owner: getNextAccount() + }, + data: getSetAuthorityInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_TRANSFER_FEE_DISCRIMINATOR = 26; + function getSetTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_TRANSFER_FEE_DISCRIMINATOR); + } + var SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR = 5; + function getSetTransferFeeTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR); + } + function getSetTransferFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()], + ["transferFeeBasisPoints", kit.getU16Encoder()], + ["maximumFee", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: SET_TRANSFER_FEE_DISCRIMINATOR, + transferFeeDiscriminator: SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getSetTransferFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()], + ["transferFeeBasisPoints", kit.getU16Decoder()], + ["maximumFee", kit.getU64Decoder()] + ]); + } + function getSetTransferFeeInstructionDataCodec() { + return kit.combineCodec( + getSetTransferFeeInstructionDataEncoder(), + getSetTransferFeeInstructionDataDecoder() + ); + } + function getSetTransferFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + transferFeeConfigAuthority: { + value: input.transferFeeConfigAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.transferFeeConfigAuthority), + ...remainingAccounts + ], + programAddress, + data: getSetTransferFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetTransferFeeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + transferFeeConfigAuthority: getNextAccount() + }, + data: getSetTransferFeeInstructionDataDecoder().decode(instruction.data) + }; + } + var SYNC_NATIVE_DISCRIMINATOR = 17; + function getSyncNativeDiscriminatorBytes() { + return kit.getU8Encoder().encode(SYNC_NATIVE_DISCRIMINATOR); + } + function getSyncNativeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: SYNC_NATIVE_DISCRIMINATOR }) + ); + } + function getSyncNativeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getSyncNativeInstructionDataCodec() { + return kit.combineCodec( + getSyncNativeInstructionDataEncoder(), + getSyncNativeInstructionDataDecoder() + ); + } + function getSyncNativeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.account)], + programAddress, + data: getSyncNativeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseSyncNativeInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount() + }, + data: getSyncNativeInstructionDataDecoder().decode(instruction.data) + }; + } + var THAW_ACCOUNT_DISCRIMINATOR = 11; + function getThawAccountDiscriminatorBytes() { + return kit.getU8Encoder().encode(THAW_ACCOUNT_DISCRIMINATOR); + } + function getThawAccountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ ...value, discriminator: THAW_ACCOUNT_DISCRIMINATOR }) + ); + } + function getThawAccountInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getThawAccountInstructionDataCodec() { + return kit.combineCodec( + getThawAccountInstructionDataEncoder(), + getThawAccountInstructionDataDecoder() + ); + } + function getThawAccountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + account: { value: input.account ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + owner: { value: input.owner ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.account), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.owner), + ...remainingAccounts + ], + programAddress, + data: getThawAccountInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseThawAccountInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + account: getNextAccount(), + mint: getNextAccount(), + owner: getNextAccount() + }, + data: getThawAccountInstructionDataDecoder().decode(instruction.data) + }; + } + var TRANSFER_DISCRIMINATOR = 3; + function getTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode(TRANSFER_DISCRIMINATOR); + } + function getTransferInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR }) + ); + } + function getTransferInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()] + ]); + } + function getTransferInstructionDataCodec() { + return kit.combineCodec( + getTransferInstructionDataEncoder(), + getTransferInstructionDataDecoder() + ); + } + function getTransferInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + destination: { value: input.destination ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getTransferInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseTransferInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + destination: getNextAccount(), + authority: getNextAccount() + }, + data: getTransferInstructionDataDecoder().decode(instruction.data) + }; + } + var TRANSFER_CHECKED_DISCRIMINATOR = 12; + function getTransferCheckedDiscriminatorBytes() { + return kit.getU8Encoder().encode(TRANSFER_CHECKED_DISCRIMINATOR); + } + function getTransferCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()] + ]), + (value) => ({ ...value, discriminator: TRANSFER_CHECKED_DISCRIMINATOR }) + ); + } + function getTransferCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()] + ]); + } + function getTransferCheckedInstructionDataCodec() { + return kit.combineCodec( + getTransferCheckedInstructionDataEncoder(), + getTransferCheckedInstructionDataDecoder() + ); + } + function getTransferCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + destination: { value: input.destination ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getTransferCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseTransferCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + mint: getNextAccount(), + destination: getNextAccount(), + authority: getNextAccount() + }, + data: getTransferCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR = 26; + function getTransferCheckedWithFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode(TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR); + } + var TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR = 1; + function getTransferCheckedWithFeeTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getTransferCheckedWithFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()], + ["amount", kit.getU64Encoder()], + ["decimals", kit.getU8Encoder()], + ["fee", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR, + transferFeeDiscriminator: TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getTransferCheckedWithFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()], + ["amount", kit.getU64Decoder()], + ["decimals", kit.getU8Decoder()], + ["fee", kit.getU64Decoder()] + ]); + } + function getTransferCheckedWithFeeInstructionDataCodec() { + return kit.combineCodec( + getTransferCheckedWithFeeInstructionDataEncoder(), + getTransferCheckedWithFeeInstructionDataDecoder() + ); + } + function getTransferCheckedWithFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + source: { value: input.source ?? null, isWritable: true }, + mint: { value: input.mint ?? null, isWritable: false }, + destination: { value: input.destination ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.source), + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getTransferCheckedWithFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseTransferCheckedWithFeeInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + source: getNextAccount(), + mint: getNextAccount(), + destination: getNextAccount(), + authority: getNextAccount() + }, + data: getTransferCheckedWithFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = 24; + function getUiAmountToAmountDiscriminatorBytes() { + return kit.getU8Encoder().encode(UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR); + } + function getUiAmountToAmountInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["uiAmount", kit.getUtf8Encoder()] + ]), + (value) => ({ ...value, discriminator: UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR }) + ); + } + function getUiAmountToAmountInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["uiAmount", kit.getUtf8Decoder()] + ]); + } + function getUiAmountToAmountInstructionDataCodec() { + return kit.combineCodec( + getUiAmountToAmountInstructionDataEncoder(), + getUiAmountToAmountInstructionDataDecoder() + ); + } + function getUiAmountToAmountInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [getAccountMeta(accounts.mint)], + programAddress, + data: getUiAmountToAmountInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUiAmountToAmountInstruction(instruction) { + if (instruction.accounts.length < 1) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount() + }, + data: getUiAmountToAmountInstructionDataDecoder().decode(instruction.data) + }; + } + var UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27; + function getUpdateConfidentialTransferMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR); + } + var UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 1; + function getUpdateConfidentialTransferMintConfidentialTransferDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + ); + } + function getUpdateConfidentialTransferMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferDiscriminator", kit.getU8Encoder()], + ["autoApproveNewAccounts", kit.getBooleanEncoder()], + [ + "auditorElgamalPubkey", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR, + confidentialTransferDiscriminator: UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR + }) + ); + } + function getUpdateConfidentialTransferMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferDiscriminator", kit.getU8Decoder()], + ["autoApproveNewAccounts", kit.getBooleanDecoder()], + [ + "auditorElgamalPubkey", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateConfidentialTransferMintInstructionDataCodec() { + return kit.combineCodec( + getUpdateConfidentialTransferMintInstructionDataEncoder(), + getUpdateConfidentialTransferMintInstructionDataDecoder() + ); + } + function getUpdateConfidentialTransferMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority) + ], + programAddress, + data: getUpdateConfidentialTransferMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateConfidentialTransferMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getUpdateConfidentialTransferMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28; + function getUpdateDefaultAccountStateDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR); + } + var UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 1; + function getUpdateDefaultAccountStateDefaultAccountStateDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR + ); + } + function getUpdateDefaultAccountStateInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["defaultAccountStateDiscriminator", kit.getU8Encoder()], + ["state", getAccountStateEncoder()] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR, + defaultAccountStateDiscriminator: UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR + }) + ); + } + function getUpdateDefaultAccountStateInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["defaultAccountStateDiscriminator", kit.getU8Decoder()], + ["state", getAccountStateDecoder()] + ]); + } + function getUpdateDefaultAccountStateInstructionDataCodec() { + return kit.combineCodec( + getUpdateDefaultAccountStateInstructionDataEncoder(), + getUpdateDefaultAccountStateInstructionDataDecoder() + ); + } + function getUpdateDefaultAccountStateInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + freezeAuthority: { + value: input.freezeAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.freezeAuthority), + ...remainingAccounts + ], + programAddress, + data: getUpdateDefaultAccountStateInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateDefaultAccountStateInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + freezeAuthority: getNextAccount() + }, + data: getUpdateDefaultAccountStateInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41; + function getUpdateGroupMemberPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR); + } + var UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 1; + function getUpdateGroupMemberPointerGroupMemberPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR + ); + } + function getUpdateGroupMemberPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["groupMemberPointerDiscriminator", kit.getU8Encoder()], + [ + "memberAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR, + groupMemberPointerDiscriminator: UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR + }) + ); + } + function getUpdateGroupMemberPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["groupMemberPointerDiscriminator", kit.getU8Decoder()], + [ + "memberAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateGroupMemberPointerInstructionDataCodec() { + return kit.combineCodec( + getUpdateGroupMemberPointerInstructionDataEncoder(), + getUpdateGroupMemberPointerInstructionDataDecoder() + ); + } + function getUpdateGroupMemberPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + groupMemberPointerAuthority: { + value: input.groupMemberPointerAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.groupMemberPointerAuthority), + ...remainingAccounts + ], + programAddress, + data: getUpdateGroupMemberPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateGroupMemberPointerInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + groupMemberPointerAuthority: getNextAccount() + }, + data: getUpdateGroupMemberPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_GROUP_POINTER_DISCRIMINATOR = 40; + function getUpdateGroupPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_GROUP_POINTER_DISCRIMINATOR); + } + var UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 1; + function getUpdateGroupPointerGroupPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR + ); + } + function getUpdateGroupPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["groupPointerDiscriminator", kit.getU8Encoder()], + [ + "groupAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_GROUP_POINTER_DISCRIMINATOR, + groupPointerDiscriminator: UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR + }) + ); + } + function getUpdateGroupPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["groupPointerDiscriminator", kit.getU8Decoder()], + [ + "groupAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateGroupPointerInstructionDataCodec() { + return kit.combineCodec( + getUpdateGroupPointerInstructionDataEncoder(), + getUpdateGroupPointerInstructionDataDecoder() + ); + } + function getUpdateGroupPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + groupPointerAuthority: { + value: input.groupPointerAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.groupPointerAuthority), + ...remainingAccounts + ], + programAddress, + data: getUpdateGroupPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateGroupPointerInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + groupPointerAuthority: getNextAccount() + }, + data: getUpdateGroupPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_METADATA_POINTER_DISCRIMINATOR = 39; + function getUpdateMetadataPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_METADATA_POINTER_DISCRIMINATOR); + } + var UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 1; + function getUpdateMetadataPointerMetadataPointerDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR + ); + } + function getUpdateMetadataPointerInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["metadataPointerDiscriminator", kit.getU8Encoder()], + [ + "metadataAddress", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_METADATA_POINTER_DISCRIMINATOR, + metadataPointerDiscriminator: UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR + }) + ); + } + function getUpdateMetadataPointerInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["metadataPointerDiscriminator", kit.getU8Decoder()], + [ + "metadataAddress", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateMetadataPointerInstructionDataCodec() { + return kit.combineCodec( + getUpdateMetadataPointerInstructionDataEncoder(), + getUpdateMetadataPointerInstructionDataDecoder() + ); + } + function getUpdateMetadataPointerInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + metadataPointerAuthority: { + value: input.metadataPointerAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.metadataPointerAuthority), + ...remainingAccounts + ], + programAddress, + data: getUpdateMetadataPointerInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateMetadataPointerInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + metadataPointerAuthority: getNextAccount() + }, + data: getUpdateMetadataPointerInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR = 43; + function getUpdateMultiplierScaledUiMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR); + } + var UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 1; + function getUpdateMultiplierScaledUiMintScaledUiAmountMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR + ); + } + function getUpdateMultiplierScaledUiMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["scaledUiAmountMintDiscriminator", kit.getU8Encoder()], + ["multiplier", kit.getF64Encoder()], + ["effectiveTimestamp", kit.getI64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR, + scaledUiAmountMintDiscriminator: UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR + }) + ); + } + function getUpdateMultiplierScaledUiMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["scaledUiAmountMintDiscriminator", kit.getU8Decoder()], + ["multiplier", kit.getF64Decoder()], + ["effectiveTimestamp", kit.getI64Decoder()] + ]); + } + function getUpdateMultiplierScaledUiMintInstructionDataCodec() { + return kit.combineCodec( + getUpdateMultiplierScaledUiMintInstructionDataEncoder(), + getUpdateMultiplierScaledUiMintInstructionDataDecoder() + ); + } + function getUpdateMultiplierScaledUiMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getUpdateMultiplierScaledUiMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateMultiplierScaledUiMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getUpdateMultiplierScaledUiMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33; + function getUpdateRateInterestBearingMintDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR); + } + var UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 1; + function getUpdateRateInterestBearingMintInterestBearingMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR + ); + } + function getUpdateRateInterestBearingMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["interestBearingMintDiscriminator", kit.getU8Encoder()], + ["rate", kit.getI16Encoder()] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR, + interestBearingMintDiscriminator: UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR + }) + ); + } + function getUpdateRateInterestBearingMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["interestBearingMintDiscriminator", kit.getU8Decoder()], + ["rate", kit.getI16Decoder()] + ]); + } + function getUpdateRateInterestBearingMintInstructionDataCodec() { + return kit.combineCodec( + getUpdateRateInterestBearingMintInstructionDataEncoder(), + getUpdateRateInterestBearingMintInstructionDataDecoder() + ); + } + function getUpdateRateInterestBearingMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + rateAuthority: { value: input.rateAuthority ?? null, isWritable: true } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.rateAuthority), + ...remainingAccounts + ], + programAddress, + data: getUpdateRateInterestBearingMintInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateRateInterestBearingMintInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + rateAuthority: getNextAccount() + }, + data: getUpdateRateInterestBearingMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR = new Uint8Array([ + 108, + 37, + 171, + 143, + 248, + 30, + 18, + 110 + ]); + function getUpdateTokenGroupMaxSizeDiscriminatorBytes() { + return kit.getBytesEncoder().encode(UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR); + } + function getUpdateTokenGroupMaxSizeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + ["maxSize", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR + }) + ); + } + function getUpdateTokenGroupMaxSizeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + ["maxSize", kit.getU64Decoder()] + ]); + } + function getUpdateTokenGroupMaxSizeInstructionDataCodec() { + return kit.combineCodec( + getUpdateTokenGroupMaxSizeInstructionDataEncoder(), + getUpdateTokenGroupMaxSizeInstructionDataDecoder() + ); + } + function getUpdateTokenGroupMaxSizeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + group: { value: input.group ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.group), + getAccountMeta(accounts.updateAuthority) + ], + programAddress, + data: getUpdateTokenGroupMaxSizeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateTokenGroupMaxSizeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + group: getNextAccount(), + updateAuthority: getNextAccount() + }, + data: getUpdateTokenGroupMaxSizeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array( + [161, 105, 88, 1, 237, 221, 216, 203] + ); + function getUpdateTokenGroupUpdateAuthorityDiscriminatorBytes() { + return kit.getBytesEncoder().encode( + UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR + ); + } + function getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + [ + "newUpdateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR + }) + ); + } + function getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + [ + "newUpdateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateTokenGroupUpdateAuthorityInstructionDataCodec() { + return kit.combineCodec( + getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder(), + getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder() + ); + } + function getUpdateTokenGroupUpdateAuthorityInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + group: { value: input.group ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.group), + getAccountMeta(accounts.updateAuthority) + ], + programAddress, + data: getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateTokenGroupUpdateAuthorityInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + group: getNextAccount(), + updateAuthority: getNextAccount() + }, + data: getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR = new Uint8Array([ + 221, + 233, + 49, + 45, + 181, + 202, + 220, + 200 + ]); + function getUpdateTokenMetadataFieldDiscriminatorBytes() { + return kit.getBytesEncoder().encode(UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR); + } + function getUpdateTokenMetadataFieldInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + ["field", getTokenMetadataFieldEncoder()], + ["value", kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder())] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR + }) + ); + } + function getUpdateTokenMetadataFieldInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + ["field", getTokenMetadataFieldDecoder()], + ["value", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())] + ]); + } + function getUpdateTokenMetadataFieldInstructionDataCodec() { + return kit.combineCodec( + getUpdateTokenMetadataFieldInstructionDataEncoder(), + getUpdateTokenMetadataFieldInstructionDataDecoder() + ); + } + function getUpdateTokenMetadataFieldInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + metadata: { value: input.metadata ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.metadata), + getAccountMeta(accounts.updateAuthority) + ], + programAddress, + data: getUpdateTokenMetadataFieldInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateTokenMetadataFieldInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + metadata: getNextAccount(), + updateAuthority: getNextAccount() + }, + data: getUpdateTokenMetadataFieldInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([215, 228, 166, 228, 84, 100, 86, 123]); + function getUpdateTokenMetadataUpdateAuthorityDiscriminatorBytes() { + return kit.getBytesEncoder().encode( + UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR + ); + } + function getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getBytesEncoder()], + [ + "newUpdateAuthority", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR + }) + ); + } + function getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getBytesDecoder()], + [ + "newUpdateAuthority", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateTokenMetadataUpdateAuthorityInstructionDataCodec() { + return kit.combineCodec( + getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder(), + getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder() + ); + } + function getUpdateTokenMetadataUpdateAuthorityInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + metadata: { value: input.metadata ?? null, isWritable: true }, + updateAuthority: { + value: input.updateAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.metadata), + getAccountMeta(accounts.updateAuthority) + ], + programAddress, + data: getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateTokenMetadataUpdateAuthorityInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + metadata: getNextAccount(), + updateAuthority: getNextAccount() + }, + data: getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var UPDATE_TRANSFER_HOOK_DISCRIMINATOR = 36; + function getUpdateTransferHookDiscriminatorBytes() { + return kit.getU8Encoder().encode(UPDATE_TRANSFER_HOOK_DISCRIMINATOR); + } + var UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 1; + function getUpdateTransferHookTransferHookDiscriminatorBytes() { + return kit.getU8Encoder().encode( + UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR + ); + } + function getUpdateTransferHookInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferHookDiscriminator", kit.getU8Encoder()], + [ + "programId", + kit.getOptionEncoder(kit.getAddressEncoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]), + (value) => ({ + ...value, + discriminator: UPDATE_TRANSFER_HOOK_DISCRIMINATOR, + transferHookDiscriminator: UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR + }) + ); + } + function getUpdateTransferHookInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferHookDiscriminator", kit.getU8Decoder()], + [ + "programId", + kit.getOptionDecoder(kit.getAddressDecoder(), { + prefix: null, + noneValue: "zeroes" + }) + ] + ]); + } + function getUpdateTransferHookInstructionDataCodec() { + return kit.combineCodec( + getUpdateTransferHookInstructionDataEncoder(), + getUpdateTransferHookInstructionDataDecoder() + ); + } + function getUpdateTransferHookInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getUpdateTransferHookInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseUpdateTransferHookInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + authority: getNextAccount() + }, + data: getUpdateTransferHookInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR = 38; + function getWithdrawExcessLamportsDiscriminatorBytes() { + return kit.getU8Encoder().encode(WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR); + } + function getWithdrawExcessLamportsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU8Encoder()]]), + (value) => ({ + ...value, + discriminator: WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR + }) + ); + } + function getWithdrawExcessLamportsInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU8Decoder()]]); + } + function getWithdrawExcessLamportsInstructionDataCodec() { + return kit.combineCodec( + getWithdrawExcessLamportsInstructionDataEncoder(), + getWithdrawExcessLamportsInstructionDataDecoder() + ); + } + function getWithdrawExcessLamportsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + sourceAccount: { value: input.sourceAccount ?? null, isWritable: true }, + destinationAccount: { + value: input.destinationAccount ?? null, + isWritable: true + }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.sourceAccount), + getAccountMeta(accounts.destinationAccount), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getWithdrawExcessLamportsInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseWithdrawExcessLamportsInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + sourceAccount: getNextAccount(), + destinationAccount: getNextAccount(), + authority: getNextAccount() + }, + data: getWithdrawExcessLamportsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR = 26; + function getWithdrawWithheldTokensFromAccountsDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR + ); + } + var WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR = 3; + function getWithdrawWithheldTokensFromAccountsTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getWithdrawWithheldTokensFromAccountsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()], + ["numTokenAccounts", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR, + transferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getWithdrawWithheldTokensFromAccountsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()], + ["numTokenAccounts", kit.getU8Decoder()] + ]); + } + function getWithdrawWithheldTokensFromAccountsInstructionDataCodec() { + return kit.combineCodec( + getWithdrawWithheldTokensFromAccountsInstructionDataEncoder(), + getWithdrawWithheldTokensFromAccountsInstructionDataDecoder() + ); + } + function getWithdrawWithheldTokensFromAccountsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false }, + feeReceiver: { value: input.feeReceiver ?? null, isWritable: true }, + withdrawWithheldAuthority: { + value: input.withdrawWithheldAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = [ + ...(args.multiSigners ?? []).map((signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + })), + ...args.sources.map((address) => ({ address, role: kit.AccountRole.WRITABLE })) + ]; + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.feeReceiver), + getAccountMeta(accounts.withdrawWithheldAuthority), + ...remainingAccounts + ], + programAddress, + data: getWithdrawWithheldTokensFromAccountsInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseWithdrawWithheldTokensFromAccountsInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + feeReceiver: getNextAccount(), + withdrawWithheldAuthority: getNextAccount() + }, + data: getWithdrawWithheldTokensFromAccountsInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37; + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + var WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 2; + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()], + ["numTokenAccounts", kit.getU8Encoder()], + ["proofInstructionOffset", kit.getI8Encoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceEncoder()] + ]), + (value) => ({ + ...value, + discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()], + ["numTokenAccounts", kit.getU8Decoder()], + ["proofInstructionOffset", kit.getI8Decoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceDecoder()] + ]); + } + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataCodec() { + return kit.combineCodec( + getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder(), + getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder() + ); + } + function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: false }, + destination: { value: input.destination ?? null, isWritable: true }, + instructionsSysvarOrContextState: { + value: input.instructionsSysvarOrContextState ?? null, + isWritable: false + }, + record: { value: input.record ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.instructionsSysvarOrContextState), + getAccountMeta(accounts.record), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + destination: getNextAccount(), + instructionsSysvarOrContextState: getNextAccount(), + record: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR = 26; + function getWithdrawWithheldTokensFromMintDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR + ); + } + var WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR = 2; + function getWithdrawWithheldTokensFromMintTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getWithdrawWithheldTokensFromMintInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["transferFeeDiscriminator", kit.getU8Encoder()] + ]), + (value) => ({ + ...value, + discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR, + transferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getWithdrawWithheldTokensFromMintInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["transferFeeDiscriminator", kit.getU8Decoder()] + ]); + } + function getWithdrawWithheldTokensFromMintInstructionDataCodec() { + return kit.combineCodec( + getWithdrawWithheldTokensFromMintInstructionDataEncoder(), + getWithdrawWithheldTokensFromMintInstructionDataDecoder() + ); + } + function getWithdrawWithheldTokensFromMintInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + feeReceiver: { value: input.feeReceiver ?? null, isWritable: true }, + withdrawWithheldAuthority: { + value: input.withdrawWithheldAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.feeReceiver), + getAccountMeta(accounts.withdrawWithheldAuthority), + ...remainingAccounts + ], + programAddress, + data: getWithdrawWithheldTokensFromMintInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseWithdrawWithheldTokensFromMintInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + feeReceiver: getNextAccount(), + withdrawWithheldAuthority: getNextAccount() + }, + data: getWithdrawWithheldTokensFromMintInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37; + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + var WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 1; + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() { + return kit.getU8Encoder().encode( + WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + ); + } + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Encoder()], + ["proofInstructionOffset", kit.getI8Encoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceEncoder()] + ]), + (value) => ({ + ...value, + discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR, + confidentialTransferFeeDiscriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR + }) + ); + } + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["confidentialTransferFeeDiscriminator", kit.getU8Decoder()], + ["proofInstructionOffset", kit.getI8Decoder()], + ["newDecryptableAvailableBalance", getDecryptableBalanceDecoder()] + ]); + } + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataCodec() { + return kit.combineCodec( + getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder(), + getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder() + ); + } + function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS; + const originalAccounts = { + mint: { value: input.mint ?? null, isWritable: true }, + destination: { value: input.destination ?? null, isWritable: true }, + instructionsSysvarOrContextState: { + value: input.instructionsSysvarOrContextState ?? null, + isWritable: false + }, + record: { value: input.record ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const remainingAccounts = (args.multiSigners ?? []).map( + (signer) => ({ + address: signer.address, + role: kit.AccountRole.READONLY_SIGNER, + signer + }) + ); + const getAccountMeta = getAccountMetaFactory(programAddress); + const instruction = { + accounts: [ + getAccountMeta(accounts.mint), + getAccountMeta(accounts.destination), + getAccountMeta(accounts.instructionsSysvarOrContextState), + getAccountMeta(accounts.record), + getAccountMeta(accounts.authority), + ...remainingAccounts + ], + programAddress, + data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + const getNextOptionalAccount = () => { + const accountMeta = getNextAccount(); + return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS ? void 0 : accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + mint: getNextAccount(), + destination: getNextAccount(), + instructionsSysvarOrContextState: getNextAccount(), + record: getNextOptionalAccount(), + authority: getNextAccount() + }, + data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var ONE_IN_BASIS_POINTS = 1e4; + var SECONDS_PER_YEAR = 60 * 60 * 24 * 365.24; + function calculateExponentForTimesAndRate(t1, t2, r) { + const timespan = t2 - t1; + if (timespan < 0) { + throw new Error("Invalid timespan: end time before start time"); + } + const numerator = r * timespan; + const exponent = numerator / (SECONDS_PER_YEAR * ONE_IN_BASIS_POINTS); + return Math.exp(exponent); + } + function calculateTotalScale({ + currentTimestamp, + lastUpdateTimestamp, + initializationTimestamp, + preUpdateAverageRate, + currentRate + }) { + const preUpdateExp = calculateExponentForTimesAndRate( + initializationTimestamp, + lastUpdateTimestamp, + preUpdateAverageRate + ); + const postUpdateExp = calculateExponentForTimesAndRate( + lastUpdateTimestamp, + currentTimestamp, + currentRate + ); + return preUpdateExp * postUpdateExp; + } + function getDecimalFactor(decimals) { + return Math.pow(10, decimals); + } + async function getSysvarClockTimestamp(rpc) { + const info = await sysvars.fetchSysvarClock(rpc); + if (!info) { + throw new Error("Failed to fetch sysvar clock"); + } + return info.unixTimestamp; + } + function amountToUiAmountForInterestBearingMintWithoutSimulation(amount, decimals, currentTimestamp, lastUpdateTimestamp, initializationTimestamp, preUpdateAverageRate, currentRate) { + const totalScale = calculateTotalScale({ + currentTimestamp, + lastUpdateTimestamp, + initializationTimestamp, + preUpdateAverageRate, + currentRate + }); + const scaledAmount = Number(amount) * totalScale; + const decimalFactor = getDecimalFactor(decimals); + return (Math.trunc(scaledAmount) / decimalFactor).toString(); + } + function uiAmountToAmountForInterestBearingMintWithoutSimulation(uiAmount, decimals, currentTimestamp, lastUpdateTimestamp, initializationTimestamp, preUpdateAverageRate, currentRate) { + const uiAmountNumber = parseFloat(uiAmount); + const decimalsFactor = getDecimalFactor(decimals); + const uiAmountScaled = uiAmountNumber * decimalsFactor; + const totalScale = calculateTotalScale({ + currentTimestamp, + lastUpdateTimestamp, + initializationTimestamp, + preUpdateAverageRate, + currentRate + }); + const originalPrincipal = uiAmountScaled / totalScale; + return BigInt(Math.trunc(originalPrincipal)); + } + function amountToUiAmountForScaledUiAmountMintWithoutSimulation(amount, decimals, multiplier) { + const scaledAmount = Number(amount) * multiplier; + const decimalFactor = getDecimalFactor(decimals); + return (Math.trunc(scaledAmount) / decimalFactor).toString(); + } + function uiAmountToAmountForScaledUiAmountMintWithoutSimulation(uiAmount, decimals, multiplier) { + const uiAmountNumber = parseFloat(uiAmount); + const decimalsFactor = getDecimalFactor(decimals); + const uiAmountScaled = uiAmountNumber * decimalsFactor; + const rawAmount = uiAmountScaled / multiplier; + return BigInt(Math.trunc(rawAmount)); + } + async function amountToUiAmountForMintWithoutSimulation(rpc, mint, amount) { + const accountInfo = await fetchMint(rpc, mint); + const extensions = kit.unwrapOption(accountInfo.data.extensions); + const interestBearingMintConfigState = extensions?.find( + (ext) => ext.__kind === "InterestBearingConfig" + ); + const scaledUiAmountConfig = extensions?.find( + (ext) => ext.__kind === "ScaledUiAmountConfig" + ); + if (!interestBearingMintConfigState && !scaledUiAmountConfig) { + const amountNumber = Number(amount); + const decimalsFactor = getDecimalFactor(accountInfo.data.decimals); + return (amountNumber / decimalsFactor).toString(); + } + const timestamp = await getSysvarClockTimestamp(rpc); + if (interestBearingMintConfigState) { + return amountToUiAmountForInterestBearingMintWithoutSimulation( + amount, + accountInfo.data.decimals, + Number(timestamp), + Number(interestBearingMintConfigState.lastUpdateTimestamp), + Number(interestBearingMintConfigState.initializationTimestamp), + interestBearingMintConfigState.preUpdateAverageRate, + interestBearingMintConfigState.currentRate + ); + } + if (scaledUiAmountConfig) { + let multiplier = scaledUiAmountConfig.multiplier; + if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) { + multiplier = scaledUiAmountConfig.newMultiplier; + } + return amountToUiAmountForScaledUiAmountMintWithoutSimulation( + amount, + accountInfo.data.decimals, + multiplier + ); + } + throw new Error("Unknown mint extension type"); + } + async function uiAmountToAmountForMintWithoutSimulation(rpc, mint, uiAmount) { + const accountInfo = await fetchMint(rpc, mint); + const extensions = kit.unwrapOption(accountInfo.data.extensions); + const interestBearingMintConfigState = extensions?.find( + (ext) => ext.__kind === "InterestBearingConfig" + ); + const scaledUiAmountConfig = extensions?.find( + (ext) => ext.__kind === "ScaledUiAmountConfig" + ); + if (!interestBearingMintConfigState && !scaledUiAmountConfig) { + const uiAmountScaled = parseFloat(uiAmount) * getDecimalFactor(accountInfo.data.decimals); + return BigInt(Math.trunc(uiAmountScaled)); + } + const timestamp = await getSysvarClockTimestamp(rpc); + if (interestBearingMintConfigState) { + return uiAmountToAmountForInterestBearingMintWithoutSimulation( + uiAmount, + accountInfo.data.decimals, + Number(timestamp), + Number(interestBearingMintConfigState.lastUpdateTimestamp), + Number(interestBearingMintConfigState.initializationTimestamp), + interestBearingMintConfigState.preUpdateAverageRate, + interestBearingMintConfigState.currentRate + ); + } + if (scaledUiAmountConfig) { + let multiplier = scaledUiAmountConfig.multiplier; + if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) { + multiplier = scaledUiAmountConfig.newMultiplier; + } + return uiAmountToAmountForScaledUiAmountMintWithoutSimulation( + uiAmount, + accountInfo.data.decimals, + multiplier + ); + } + throw new Error("Unknown mint extension type"); + } + function getPreInitializeInstructionsForMintExtensions(mint, extensions) { + return extensions.flatMap((extension2) => { + switch (extension2.__kind) { + case "ConfidentialTransferMint": + return [ + getInitializeConfidentialTransferMintInstruction({ + mint, + ...extension2 + }) + ]; + case "DefaultAccountState": + return [ + getInitializeDefaultAccountStateInstruction({ + mint, + state: extension2.state + }) + ]; + case "TransferFeeConfig": + return [ + getInitializeTransferFeeConfigInstruction({ + mint, + transferFeeConfigAuthority: extension2.transferFeeConfigAuthority, + withdrawWithheldAuthority: extension2.withdrawWithheldAuthority, + transferFeeBasisPoints: extension2.newerTransferFee.transferFeeBasisPoints, + maximumFee: extension2.newerTransferFee.maximumFee + }) + ]; + case "MetadataPointer": + return [ + getInitializeMetadataPointerInstruction({ + mint, + authority: extension2.authority, + metadataAddress: extension2.metadataAddress + }) + ]; + case "InterestBearingConfig": + return [ + getInitializeInterestBearingMintInstruction({ + mint, + rateAuthority: extension2.rateAuthority, + rate: extension2.currentRate + }) + ]; + case "ScaledUiAmountConfig": + return [ + getInitializeScaledUiAmountMintInstruction({ + mint, + authority: extension2.authority, + multiplier: extension2.multiplier + }) + ]; + case "PausableConfig": + return [ + getInitializePausableConfigInstruction({ + mint, + authority: extension2.authority + }) + ]; + case "GroupPointer": + return [ + getInitializeGroupPointerInstruction({ + mint, + authority: extension2.authority, + groupAddress: extension2.groupAddress + }) + ]; + case "GroupMemberPointer": + return [ + getInitializeGroupMemberPointerInstruction({ + mint, + authority: extension2.authority, + memberAddress: extension2.memberAddress + }) + ]; + case "NonTransferable": + return getInitializeNonTransferableMintInstruction({ mint }); + case "TransferHook": + return [ + getInitializeTransferHookInstruction({ + mint, + authority: extension2.authority, + programId: extension2.programId + }) + ]; + case "PermanentDelegate": + return getInitializePermanentDelegateInstruction({ + mint, + delegate: extension2.delegate + }); + case "ConfidentialTransferFee": + return [ + getInitializeConfidentialTransferFeeInstruction({ + mint, + authority: extension2.authority, + withdrawWithheldAuthorityElGamalPubkey: extension2.elgamalPubkey + }) + ]; + case "MintCloseAuthority": + return getInitializeMintCloseAuthorityInstruction({ + closeAuthority: extension2.closeAuthority, + mint + }); + default: + return []; + } + }); + } + function getPostInitializeInstructionsForMintExtensions(mint, authority, extensions) { + return extensions.flatMap((extension2) => { + switch (extension2.__kind) { + case "TokenMetadata": + const tokenMetadataUpdateAuthority = kit.isOption(extension2.updateAuthority) ? extension2.updateAuthority : kit.wrapNullable(extension2.updateAuthority); + if (kit.isNone(tokenMetadataUpdateAuthority)) { + return []; + } + return [ + getInitializeTokenMetadataInstruction({ + metadata: mint, + updateAuthority: tokenMetadataUpdateAuthority.value, + mint, + mintAuthority: authority, + name: extension2.name, + symbol: extension2.symbol, + uri: extension2.uri + }) + ]; + case "TokenGroup": + return [ + getInitializeTokenGroupInstruction({ + group: mint, + updateAuthority: kit.isOption(extension2.updateAuthority) ? extension2.updateAuthority : kit.wrapNullable(extension2.updateAuthority), + mint, + mintAuthority: authority, + maxSize: extension2.maxSize + }) + ]; + default: + return []; + } + }); + } + function getPostInitializeInstructionsForTokenExtensions(token, owner, extensions, multiSigners) { + return extensions.flatMap((extension2) => { + switch (extension2.__kind) { + case "MemoTransfer": + return [ + extension2.requireIncomingTransferMemos ? getEnableMemoTransfersInstruction({ owner, token, multiSigners }) : getDisableMemoTransfersInstruction({ + owner, + token, + multiSigners + }) + ]; + case "CpiGuard": + return [ + extension2.lockCpi ? getEnableCpiGuardInstruction({ owner, token, multiSigners }) : getDisableCpiGuardInstruction({ + owner, + token, + multiSigners + }) + ]; + default: + return []; + } + }); + } + var TOKEN_BASE_SIZE = 165; + function getTokenSize(extensions) { + if (extensions == null) return TOKEN_BASE_SIZE; + const tvlEncoder = kit.getHiddenPrefixEncoder( + kit.getArrayEncoder(getExtensionEncoder(), { size: "remainder" }), + [kit.getConstantEncoder(kit.getU8Encoder().encode(2))] + ); + return TOKEN_BASE_SIZE + tvlEncoder.encode(extensions).length; + } + var MINT_BASE_SIZE = 82; + function getMintSize(extensions) { + if (extensions == null) return MINT_BASE_SIZE; + const tvlEncoder = kit.getHiddenPrefixEncoder( + kit.getArrayEncoder(getExtensionEncoder(), { size: "remainder" }), + [kit.getConstantEncoder(kit.padLeftEncoder(kit.getU8Encoder(), 83).encode(1))] + ); + return MINT_BASE_SIZE + tvlEncoder.encode(extensions).length; + } + exports2.AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR; + exports2.APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR = APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR; + exports2.APPROVE_CHECKED_DISCRIMINATOR = APPROVE_CHECKED_DISCRIMINATOR; + exports2.APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR; + exports2.APPROVE_DISCRIMINATOR = APPROVE_DISCRIMINATOR; + exports2.ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = ASSOCIATED_TOKEN_ERROR__INVALID_OWNER; + exports2.ASSOCIATED_TOKEN_PROGRAM_ADDRESS = ASSOCIATED_TOKEN_PROGRAM_ADDRESS; + exports2.AccountState = AccountState; + exports2.AssociatedTokenInstruction = AssociatedTokenInstruction; + exports2.AuthorityType = AuthorityType; + exports2.BURN_CHECKED_DISCRIMINATOR = BURN_CHECKED_DISCRIMINATOR; + exports2.BURN_DISCRIMINATOR = BURN_DISCRIMINATOR; + exports2.CLOSE_ACCOUNT_DISCRIMINATOR = CLOSE_ACCOUNT_DISCRIMINATOR; + exports2.CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIDENTIAL_DEPOSIT_DISCRIMINATOR = CONFIDENTIAL_DEPOSIT_DISCRIMINATOR; + exports2.CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR = CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR; + exports2.CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIDENTIAL_WITHDRAW_DISCRIMINATOR = CONFIDENTIAL_WITHDRAW_DISCRIMINATOR; + exports2.CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR; + exports2.CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR; + exports2.CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR; + exports2.CREATE_NATIVE_MINT_DISCRIMINATOR = CREATE_NATIVE_MINT_DISCRIMINATOR; + exports2.DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR; + exports2.DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR; + exports2.DISABLE_CPI_GUARD_DISCRIMINATOR = DISABLE_CPI_GUARD_DISCRIMINATOR; + exports2.DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.DISABLE_HARVEST_TO_MINT_DISCRIMINATOR = DISABLE_HARVEST_TO_MINT_DISCRIMINATOR; + exports2.DISABLE_MEMO_TRANSFERS_DISCRIMINATOR = DISABLE_MEMO_TRANSFERS_DISCRIMINATOR; + exports2.DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR; + exports2.DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR; + exports2.EMIT_TOKEN_METADATA_DISCRIMINATOR = EMIT_TOKEN_METADATA_DISCRIMINATOR; + exports2.EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR; + exports2.ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR; + exports2.ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR; + exports2.ENABLE_CPI_GUARD_DISCRIMINATOR = ENABLE_CPI_GUARD_DISCRIMINATOR; + exports2.ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.ENABLE_HARVEST_TO_MINT_DISCRIMINATOR = ENABLE_HARVEST_TO_MINT_DISCRIMINATOR; + exports2.ENABLE_MEMO_TRANSFERS_DISCRIMINATOR = ENABLE_MEMO_TRANSFERS_DISCRIMINATOR; + exports2.ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR; + exports2.ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR; + exports2.ExtensionType = ExtensionType; + exports2.FREEZE_ACCOUNT_DISCRIMINATOR = FREEZE_ACCOUNT_DISCRIMINATOR; + exports2.GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR; + exports2.HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR = HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR; + exports2.HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR = HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT2_DISCRIMINATOR = INITIALIZE_ACCOUNT2_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT3_DISCRIMINATOR = INITIALIZE_ACCOUNT3_DISCRIMINATOR; + exports2.INITIALIZE_ACCOUNT_DISCRIMINATOR = INITIALIZE_ACCOUNT_DISCRIMINATOR; + exports2.INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR; + exports2.INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR; + exports2.INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR; + exports2.INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR = INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_GROUP_POINTER_DISCRIMINATOR = INITIALIZE_GROUP_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR; + exports2.INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR = INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR; + exports2.INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR; + exports2.INITIALIZE_METADATA_POINTER_DISCRIMINATOR = INITIALIZE_METADATA_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR; + exports2.INITIALIZE_MINT2_DISCRIMINATOR = INITIALIZE_MINT2_DISCRIMINATOR; + exports2.INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR = INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR; + exports2.INITIALIZE_MINT_DISCRIMINATOR = INITIALIZE_MINT_DISCRIMINATOR; + exports2.INITIALIZE_MULTISIG2_DISCRIMINATOR = INITIALIZE_MULTISIG2_DISCRIMINATOR; + exports2.INITIALIZE_MULTISIG_DISCRIMINATOR = INITIALIZE_MULTISIG_DISCRIMINATOR; + exports2.INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR = INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR; + exports2.INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR = INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR; + exports2.INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR = INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR; + exports2.INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR = INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR; + exports2.INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR; + exports2.INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR; + exports2.INITIALIZE_TOKEN_GROUP_DISCRIMINATOR = INITIALIZE_TOKEN_GROUP_DISCRIMINATOR; + exports2.INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR = INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR; + exports2.INITIALIZE_TOKEN_METADATA_DISCRIMINATOR = INITIALIZE_TOKEN_METADATA_DISCRIMINATOR; + exports2.INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR = INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR; + exports2.INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR = INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR; + exports2.INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR = INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR; + exports2.INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR; + exports2.MINT_TO_CHECKED_DISCRIMINATOR = MINT_TO_CHECKED_DISCRIMINATOR; + exports2.MINT_TO_DISCRIMINATOR = MINT_TO_DISCRIMINATOR; + exports2.PAUSE_DISCRIMINATOR = PAUSE_DISCRIMINATOR; + exports2.PAUSE_PAUSABLE_DISCRIMINATOR = PAUSE_PAUSABLE_DISCRIMINATOR; + exports2.REALLOCATE_DISCRIMINATOR = REALLOCATE_DISCRIMINATOR; + exports2.RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR; + exports2.REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR = REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR; + exports2.RESUME_DISCRIMINATOR = RESUME_DISCRIMINATOR; + exports2.RESUME_PAUSABLE_DISCRIMINATOR = RESUME_PAUSABLE_DISCRIMINATOR; + exports2.REVOKE_DISCRIMINATOR = REVOKE_DISCRIMINATOR; + exports2.SET_AUTHORITY_DISCRIMINATOR = SET_AUTHORITY_DISCRIMINATOR; + exports2.SET_TRANSFER_FEE_DISCRIMINATOR = SET_TRANSFER_FEE_DISCRIMINATOR; + exports2.SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR = SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR; + exports2.SYNC_NATIVE_DISCRIMINATOR = SYNC_NATIVE_DISCRIMINATOR; + exports2.THAW_ACCOUNT_DISCRIMINATOR = THAW_ACCOUNT_DISCRIMINATOR; + exports2.TOKEN_2022_ERROR__ACCOUNT_FROZEN = TOKEN_2022_ERROR__ACCOUNT_FROZEN; + exports2.TOKEN_2022_ERROR__ALREADY_IN_USE = TOKEN_2022_ERROR__ALREADY_IN_USE; + exports2.TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED; + exports2.TOKEN_2022_ERROR__FIXED_SUPPLY = TOKEN_2022_ERROR__FIXED_SUPPLY; + exports2.TOKEN_2022_ERROR__INSUFFICIENT_FUNDS = TOKEN_2022_ERROR__INSUFFICIENT_FUNDS; + exports2.TOKEN_2022_ERROR__INVALID_INSTRUCTION = TOKEN_2022_ERROR__INVALID_INSTRUCTION; + exports2.TOKEN_2022_ERROR__INVALID_MINT = TOKEN_2022_ERROR__INVALID_MINT; + exports2.TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS; + exports2.TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS; + exports2.TOKEN_2022_ERROR__INVALID_STATE = TOKEN_2022_ERROR__INVALID_STATE; + exports2.TOKEN_2022_ERROR__MINT_CANNOT_FREEZE = TOKEN_2022_ERROR__MINT_CANNOT_FREEZE; + exports2.TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH = TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH; + exports2.TOKEN_2022_ERROR__MINT_MISMATCH = TOKEN_2022_ERROR__MINT_MISMATCH; + exports2.TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED = TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED; + exports2.TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE = TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE; + exports2.TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED = TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED; + exports2.TOKEN_2022_ERROR__NOT_RENT_EXEMPT = TOKEN_2022_ERROR__NOT_RENT_EXEMPT; + exports2.TOKEN_2022_ERROR__OVERFLOW = TOKEN_2022_ERROR__OVERFLOW; + exports2.TOKEN_2022_ERROR__OWNER_MISMATCH = TOKEN_2022_ERROR__OWNER_MISMATCH; + exports2.TOKEN_2022_ERROR__UNINITIALIZED_STATE = TOKEN_2022_ERROR__UNINITIALIZED_STATE; + exports2.TOKEN_2022_PROGRAM_ADDRESS = TOKEN_2022_PROGRAM_ADDRESS; + exports2.TRANSFER_CHECKED_DISCRIMINATOR = TRANSFER_CHECKED_DISCRIMINATOR; + exports2.TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR = TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR; + exports2.TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR = TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR; + exports2.TRANSFER_DISCRIMINATOR = TRANSFER_DISCRIMINATOR; + exports2.Token2022Account = Token2022Account; + exports2.Token2022Instruction = Token2022Instruction; + exports2.UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR; + exports2.UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR; + exports2.UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR; + exports2.UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR; + exports2.UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR; + exports2.UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR = UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR; + exports2.UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR; + exports2.UPDATE_GROUP_POINTER_DISCRIMINATOR = UPDATE_GROUP_POINTER_DISCRIMINATOR; + exports2.UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR; + exports2.UPDATE_METADATA_POINTER_DISCRIMINATOR = UPDATE_METADATA_POINTER_DISCRIMINATOR; + exports2.UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR; + exports2.UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR = UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR; + exports2.UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR; + exports2.UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR = UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR; + exports2.UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR; + exports2.UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR = UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR; + exports2.UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR = UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR; + exports2.UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR = UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR; + exports2.UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR = UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR; + exports2.UPDATE_TRANSFER_HOOK_DISCRIMINATOR = UPDATE_TRANSFER_HOOK_DISCRIMINATOR; + exports2.UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR; + exports2.WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR = WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR; + exports2.WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR = WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR; + exports2.amountToUiAmountForInterestBearingMintWithoutSimulation = amountToUiAmountForInterestBearingMintWithoutSimulation; + exports2.amountToUiAmountForMintWithoutSimulation = amountToUiAmountForMintWithoutSimulation; + exports2.amountToUiAmountForScaledUiAmountMintWithoutSimulation = amountToUiAmountForScaledUiAmountMintWithoutSimulation; + exports2.decodeMint = decodeMint; + exports2.decodeMultisig = decodeMultisig; + exports2.decodeToken = decodeToken; + exports2.extension = extension; + exports2.fetchAllMaybeMint = fetchAllMaybeMint; + exports2.fetchAllMaybeMultisig = fetchAllMaybeMultisig; + exports2.fetchAllMaybeToken = fetchAllMaybeToken; + exports2.fetchAllMint = fetchAllMint; + exports2.fetchAllMultisig = fetchAllMultisig; + exports2.fetchAllToken = fetchAllToken; + exports2.fetchMaybeMint = fetchMaybeMint; + exports2.fetchMaybeMultisig = fetchMaybeMultisig; + exports2.fetchMaybeToken = fetchMaybeToken; + exports2.fetchMint = fetchMint; + exports2.fetchMultisig = fetchMultisig; + exports2.fetchToken = fetchToken; + exports2.findAssociatedTokenPda = findAssociatedTokenPda; + exports2.getAccountStateCodec = getAccountStateCodec; + exports2.getAccountStateDecoder = getAccountStateDecoder; + exports2.getAccountStateEncoder = getAccountStateEncoder; + exports2.getAmountToUiAmountDiscriminatorBytes = getAmountToUiAmountDiscriminatorBytes; + exports2.getAmountToUiAmountInstruction = getAmountToUiAmountInstruction; + exports2.getAmountToUiAmountInstructionDataCodec = getAmountToUiAmountInstructionDataCodec; + exports2.getAmountToUiAmountInstructionDataDecoder = getAmountToUiAmountInstructionDataDecoder; + exports2.getAmountToUiAmountInstructionDataEncoder = getAmountToUiAmountInstructionDataEncoder; + exports2.getApplyConfidentialPendingBalanceConfidentialTransferDiscriminatorBytes = getApplyConfidentialPendingBalanceConfidentialTransferDiscriminatorBytes; + exports2.getApplyConfidentialPendingBalanceDiscriminatorBytes = getApplyConfidentialPendingBalanceDiscriminatorBytes; + exports2.getApplyConfidentialPendingBalanceInstruction = getApplyConfidentialPendingBalanceInstruction; + exports2.getApplyConfidentialPendingBalanceInstructionDataCodec = getApplyConfidentialPendingBalanceInstructionDataCodec; + exports2.getApplyConfidentialPendingBalanceInstructionDataDecoder = getApplyConfidentialPendingBalanceInstructionDataDecoder; + exports2.getApplyConfidentialPendingBalanceInstructionDataEncoder = getApplyConfidentialPendingBalanceInstructionDataEncoder; + exports2.getApproveCheckedDiscriminatorBytes = getApproveCheckedDiscriminatorBytes; + exports2.getApproveCheckedInstruction = getApproveCheckedInstruction; + exports2.getApproveCheckedInstructionDataCodec = getApproveCheckedInstructionDataCodec; + exports2.getApproveCheckedInstructionDataDecoder = getApproveCheckedInstructionDataDecoder; + exports2.getApproveCheckedInstructionDataEncoder = getApproveCheckedInstructionDataEncoder; + exports2.getApproveConfidentialTransferAccountConfidentialTransferDiscriminatorBytes = getApproveConfidentialTransferAccountConfidentialTransferDiscriminatorBytes; + exports2.getApproveConfidentialTransferAccountDiscriminatorBytes = getApproveConfidentialTransferAccountDiscriminatorBytes; + exports2.getApproveConfidentialTransferAccountInstruction = getApproveConfidentialTransferAccountInstruction; + exports2.getApproveConfidentialTransferAccountInstructionDataCodec = getApproveConfidentialTransferAccountInstructionDataCodec; + exports2.getApproveConfidentialTransferAccountInstructionDataDecoder = getApproveConfidentialTransferAccountInstructionDataDecoder; + exports2.getApproveConfidentialTransferAccountInstructionDataEncoder = getApproveConfidentialTransferAccountInstructionDataEncoder; + exports2.getApproveDiscriminatorBytes = getApproveDiscriminatorBytes; + exports2.getApproveInstruction = getApproveInstruction; + exports2.getApproveInstructionDataCodec = getApproveInstructionDataCodec; + exports2.getApproveInstructionDataDecoder = getApproveInstructionDataDecoder; + exports2.getApproveInstructionDataEncoder = getApproveInstructionDataEncoder; + exports2.getAssociatedTokenErrorMessage = getAssociatedTokenErrorMessage; + exports2.getAuthorityTypeCodec = getAuthorityTypeCodec; + exports2.getAuthorityTypeDecoder = getAuthorityTypeDecoder; + exports2.getAuthorityTypeEncoder = getAuthorityTypeEncoder; + exports2.getBurnCheckedDiscriminatorBytes = getBurnCheckedDiscriminatorBytes; + exports2.getBurnCheckedInstruction = getBurnCheckedInstruction; + exports2.getBurnCheckedInstructionDataCodec = getBurnCheckedInstructionDataCodec; + exports2.getBurnCheckedInstructionDataDecoder = getBurnCheckedInstructionDataDecoder; + exports2.getBurnCheckedInstructionDataEncoder = getBurnCheckedInstructionDataEncoder; + exports2.getBurnDiscriminatorBytes = getBurnDiscriminatorBytes; + exports2.getBurnInstruction = getBurnInstruction; + exports2.getBurnInstructionDataCodec = getBurnInstructionDataCodec; + exports2.getBurnInstructionDataDecoder = getBurnInstructionDataDecoder; + exports2.getBurnInstructionDataEncoder = getBurnInstructionDataEncoder; + exports2.getCloseAccountDiscriminatorBytes = getCloseAccountDiscriminatorBytes; + exports2.getCloseAccountInstruction = getCloseAccountInstruction; + exports2.getCloseAccountInstructionDataCodec = getCloseAccountInstructionDataCodec; + exports2.getCloseAccountInstructionDataDecoder = getCloseAccountInstructionDataDecoder; + exports2.getCloseAccountInstructionDataEncoder = getCloseAccountInstructionDataEncoder; + exports2.getConfidentialDepositConfidentialTransferDiscriminatorBytes = getConfidentialDepositConfidentialTransferDiscriminatorBytes; + exports2.getConfidentialDepositDiscriminatorBytes = getConfidentialDepositDiscriminatorBytes; + exports2.getConfidentialDepositInstruction = getConfidentialDepositInstruction; + exports2.getConfidentialDepositInstructionDataCodec = getConfidentialDepositInstructionDataCodec; + exports2.getConfidentialDepositInstructionDataDecoder = getConfidentialDepositInstructionDataDecoder; + exports2.getConfidentialDepositInstructionDataEncoder = getConfidentialDepositInstructionDataEncoder; + exports2.getConfidentialTransferConfidentialTransferDiscriminatorBytes = getConfidentialTransferConfidentialTransferDiscriminatorBytes; + exports2.getConfidentialTransferDiscriminatorBytes = getConfidentialTransferDiscriminatorBytes; + exports2.getConfidentialTransferInstruction = getConfidentialTransferInstruction; + exports2.getConfidentialTransferInstructionDataCodec = getConfidentialTransferInstructionDataCodec; + exports2.getConfidentialTransferInstructionDataDecoder = getConfidentialTransferInstructionDataDecoder; + exports2.getConfidentialTransferInstructionDataEncoder = getConfidentialTransferInstructionDataEncoder; + exports2.getConfidentialTransferWithFeeConfidentialTransferDiscriminatorBytes = getConfidentialTransferWithFeeConfidentialTransferDiscriminatorBytes; + exports2.getConfidentialTransferWithFeeDiscriminatorBytes = getConfidentialTransferWithFeeDiscriminatorBytes; + exports2.getConfidentialTransferWithFeeInstruction = getConfidentialTransferWithFeeInstruction; + exports2.getConfidentialTransferWithFeeInstructionDataCodec = getConfidentialTransferWithFeeInstructionDataCodec; + exports2.getConfidentialTransferWithFeeInstructionDataDecoder = getConfidentialTransferWithFeeInstructionDataDecoder; + exports2.getConfidentialTransferWithFeeInstructionDataEncoder = getConfidentialTransferWithFeeInstructionDataEncoder; + exports2.getConfidentialWithdrawConfidentialTransferDiscriminatorBytes = getConfidentialWithdrawConfidentialTransferDiscriminatorBytes; + exports2.getConfidentialWithdrawDiscriminatorBytes = getConfidentialWithdrawDiscriminatorBytes; + exports2.getConfidentialWithdrawInstruction = getConfidentialWithdrawInstruction; + exports2.getConfidentialWithdrawInstructionDataCodec = getConfidentialWithdrawInstructionDataCodec; + exports2.getConfidentialWithdrawInstructionDataDecoder = getConfidentialWithdrawInstructionDataDecoder; + exports2.getConfidentialWithdrawInstructionDataEncoder = getConfidentialWithdrawInstructionDataEncoder; + exports2.getConfigureConfidentialTransferAccountConfidentialTransferDiscriminatorBytes = getConfigureConfidentialTransferAccountConfidentialTransferDiscriminatorBytes; + exports2.getConfigureConfidentialTransferAccountDiscriminatorBytes = getConfigureConfidentialTransferAccountDiscriminatorBytes; + exports2.getConfigureConfidentialTransferAccountInstruction = getConfigureConfidentialTransferAccountInstruction; + exports2.getConfigureConfidentialTransferAccountInstructionDataCodec = getConfigureConfidentialTransferAccountInstructionDataCodec; + exports2.getConfigureConfidentialTransferAccountInstructionDataDecoder = getConfigureConfidentialTransferAccountInstructionDataDecoder; + exports2.getConfigureConfidentialTransferAccountInstructionDataEncoder = getConfigureConfidentialTransferAccountInstructionDataEncoder; + exports2.getCreateAssociatedTokenDiscriminatorBytes = getCreateAssociatedTokenDiscriminatorBytes; + exports2.getCreateAssociatedTokenIdempotentDiscriminatorBytes = getCreateAssociatedTokenIdempotentDiscriminatorBytes; + exports2.getCreateAssociatedTokenIdempotentInstruction = getCreateAssociatedTokenIdempotentInstruction; + exports2.getCreateAssociatedTokenIdempotentInstructionAsync = getCreateAssociatedTokenIdempotentInstructionAsync; + exports2.getCreateAssociatedTokenIdempotentInstructionDataCodec = getCreateAssociatedTokenIdempotentInstructionDataCodec; + exports2.getCreateAssociatedTokenIdempotentInstructionDataDecoder = getCreateAssociatedTokenIdempotentInstructionDataDecoder; + exports2.getCreateAssociatedTokenIdempotentInstructionDataEncoder = getCreateAssociatedTokenIdempotentInstructionDataEncoder; + exports2.getCreateAssociatedTokenInstruction = getCreateAssociatedTokenInstruction; + exports2.getCreateAssociatedTokenInstructionAsync = getCreateAssociatedTokenInstructionAsync; + exports2.getCreateAssociatedTokenInstructionDataCodec = getCreateAssociatedTokenInstructionDataCodec; + exports2.getCreateAssociatedTokenInstructionDataDecoder = getCreateAssociatedTokenInstructionDataDecoder; + exports2.getCreateAssociatedTokenInstructionDataEncoder = getCreateAssociatedTokenInstructionDataEncoder; + exports2.getCreateNativeMintDiscriminatorBytes = getCreateNativeMintDiscriminatorBytes; + exports2.getCreateNativeMintInstruction = getCreateNativeMintInstruction; + exports2.getCreateNativeMintInstructionDataCodec = getCreateNativeMintInstructionDataCodec; + exports2.getCreateNativeMintInstructionDataDecoder = getCreateNativeMintInstructionDataDecoder; + exports2.getCreateNativeMintInstructionDataEncoder = getCreateNativeMintInstructionDataEncoder; + exports2.getDecryptableBalanceCodec = getDecryptableBalanceCodec; + exports2.getDecryptableBalanceDecoder = getDecryptableBalanceDecoder; + exports2.getDecryptableBalanceEncoder = getDecryptableBalanceEncoder; + exports2.getDisableConfidentialCreditsConfidentialTransferDiscriminatorBytes = getDisableConfidentialCreditsConfidentialTransferDiscriminatorBytes; + exports2.getDisableConfidentialCreditsDiscriminatorBytes = getDisableConfidentialCreditsDiscriminatorBytes; + exports2.getDisableConfidentialCreditsInstruction = getDisableConfidentialCreditsInstruction; + exports2.getDisableConfidentialCreditsInstructionDataCodec = getDisableConfidentialCreditsInstructionDataCodec; + exports2.getDisableConfidentialCreditsInstructionDataDecoder = getDisableConfidentialCreditsInstructionDataDecoder; + exports2.getDisableConfidentialCreditsInstructionDataEncoder = getDisableConfidentialCreditsInstructionDataEncoder; + exports2.getDisableCpiGuardCpiGuardDiscriminatorBytes = getDisableCpiGuardCpiGuardDiscriminatorBytes; + exports2.getDisableCpiGuardDiscriminatorBytes = getDisableCpiGuardDiscriminatorBytes; + exports2.getDisableCpiGuardInstruction = getDisableCpiGuardInstruction; + exports2.getDisableCpiGuardInstructionDataCodec = getDisableCpiGuardInstructionDataCodec; + exports2.getDisableCpiGuardInstructionDataDecoder = getDisableCpiGuardInstructionDataDecoder; + exports2.getDisableCpiGuardInstructionDataEncoder = getDisableCpiGuardInstructionDataEncoder; + exports2.getDisableHarvestToMintConfidentialTransferFeeDiscriminatorBytes = getDisableHarvestToMintConfidentialTransferFeeDiscriminatorBytes; + exports2.getDisableHarvestToMintDiscriminatorBytes = getDisableHarvestToMintDiscriminatorBytes; + exports2.getDisableHarvestToMintInstruction = getDisableHarvestToMintInstruction; + exports2.getDisableHarvestToMintInstructionDataCodec = getDisableHarvestToMintInstructionDataCodec; + exports2.getDisableHarvestToMintInstructionDataDecoder = getDisableHarvestToMintInstructionDataDecoder; + exports2.getDisableHarvestToMintInstructionDataEncoder = getDisableHarvestToMintInstructionDataEncoder; + exports2.getDisableMemoTransfersDiscriminatorBytes = getDisableMemoTransfersDiscriminatorBytes; + exports2.getDisableMemoTransfersInstruction = getDisableMemoTransfersInstruction; + exports2.getDisableMemoTransfersInstructionDataCodec = getDisableMemoTransfersInstructionDataCodec; + exports2.getDisableMemoTransfersInstructionDataDecoder = getDisableMemoTransfersInstructionDataDecoder; + exports2.getDisableMemoTransfersInstructionDataEncoder = getDisableMemoTransfersInstructionDataEncoder; + exports2.getDisableMemoTransfersMemoTransfersDiscriminatorBytes = getDisableMemoTransfersMemoTransfersDiscriminatorBytes; + exports2.getDisableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes = getDisableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes; + exports2.getDisableNonConfidentialCreditsDiscriminatorBytes = getDisableNonConfidentialCreditsDiscriminatorBytes; + exports2.getDisableNonConfidentialCreditsInstruction = getDisableNonConfidentialCreditsInstruction; + exports2.getDisableNonConfidentialCreditsInstructionDataCodec = getDisableNonConfidentialCreditsInstructionDataCodec; + exports2.getDisableNonConfidentialCreditsInstructionDataDecoder = getDisableNonConfidentialCreditsInstructionDataDecoder; + exports2.getDisableNonConfidentialCreditsInstructionDataEncoder = getDisableNonConfidentialCreditsInstructionDataEncoder; + exports2.getEmitTokenMetadataDiscriminatorBytes = getEmitTokenMetadataDiscriminatorBytes; + exports2.getEmitTokenMetadataInstruction = getEmitTokenMetadataInstruction; + exports2.getEmitTokenMetadataInstructionDataCodec = getEmitTokenMetadataInstructionDataCodec; + exports2.getEmitTokenMetadataInstructionDataDecoder = getEmitTokenMetadataInstructionDataDecoder; + exports2.getEmitTokenMetadataInstructionDataEncoder = getEmitTokenMetadataInstructionDataEncoder; + exports2.getEmptyConfidentialTransferAccountConfidentialTransferDiscriminatorBytes = getEmptyConfidentialTransferAccountConfidentialTransferDiscriminatorBytes; + exports2.getEmptyConfidentialTransferAccountDiscriminatorBytes = getEmptyConfidentialTransferAccountDiscriminatorBytes; + exports2.getEmptyConfidentialTransferAccountInstruction = getEmptyConfidentialTransferAccountInstruction; + exports2.getEmptyConfidentialTransferAccountInstructionDataCodec = getEmptyConfidentialTransferAccountInstructionDataCodec; + exports2.getEmptyConfidentialTransferAccountInstructionDataDecoder = getEmptyConfidentialTransferAccountInstructionDataDecoder; + exports2.getEmptyConfidentialTransferAccountInstructionDataEncoder = getEmptyConfidentialTransferAccountInstructionDataEncoder; + exports2.getEnableConfidentialCreditsConfidentialTransferDiscriminatorBytes = getEnableConfidentialCreditsConfidentialTransferDiscriminatorBytes; + exports2.getEnableConfidentialCreditsDiscriminatorBytes = getEnableConfidentialCreditsDiscriminatorBytes; + exports2.getEnableConfidentialCreditsInstruction = getEnableConfidentialCreditsInstruction; + exports2.getEnableConfidentialCreditsInstructionDataCodec = getEnableConfidentialCreditsInstructionDataCodec; + exports2.getEnableConfidentialCreditsInstructionDataDecoder = getEnableConfidentialCreditsInstructionDataDecoder; + exports2.getEnableConfidentialCreditsInstructionDataEncoder = getEnableConfidentialCreditsInstructionDataEncoder; + exports2.getEnableCpiGuardCpiGuardDiscriminatorBytes = getEnableCpiGuardCpiGuardDiscriminatorBytes; + exports2.getEnableCpiGuardDiscriminatorBytes = getEnableCpiGuardDiscriminatorBytes; + exports2.getEnableCpiGuardInstruction = getEnableCpiGuardInstruction; + exports2.getEnableCpiGuardInstructionDataCodec = getEnableCpiGuardInstructionDataCodec; + exports2.getEnableCpiGuardInstructionDataDecoder = getEnableCpiGuardInstructionDataDecoder; + exports2.getEnableCpiGuardInstructionDataEncoder = getEnableCpiGuardInstructionDataEncoder; + exports2.getEnableHarvestToMintConfidentialTransferFeeDiscriminatorBytes = getEnableHarvestToMintConfidentialTransferFeeDiscriminatorBytes; + exports2.getEnableHarvestToMintDiscriminatorBytes = getEnableHarvestToMintDiscriminatorBytes; + exports2.getEnableHarvestToMintInstruction = getEnableHarvestToMintInstruction; + exports2.getEnableHarvestToMintInstructionDataCodec = getEnableHarvestToMintInstructionDataCodec; + exports2.getEnableHarvestToMintInstructionDataDecoder = getEnableHarvestToMintInstructionDataDecoder; + exports2.getEnableHarvestToMintInstructionDataEncoder = getEnableHarvestToMintInstructionDataEncoder; + exports2.getEnableMemoTransfersDiscriminatorBytes = getEnableMemoTransfersDiscriminatorBytes; + exports2.getEnableMemoTransfersInstruction = getEnableMemoTransfersInstruction; + exports2.getEnableMemoTransfersInstructionDataCodec = getEnableMemoTransfersInstructionDataCodec; + exports2.getEnableMemoTransfersInstructionDataDecoder = getEnableMemoTransfersInstructionDataDecoder; + exports2.getEnableMemoTransfersInstructionDataEncoder = getEnableMemoTransfersInstructionDataEncoder; + exports2.getEnableMemoTransfersMemoTransfersDiscriminatorBytes = getEnableMemoTransfersMemoTransfersDiscriminatorBytes; + exports2.getEnableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes = getEnableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes; + exports2.getEnableNonConfidentialCreditsDiscriminatorBytes = getEnableNonConfidentialCreditsDiscriminatorBytes; + exports2.getEnableNonConfidentialCreditsInstruction = getEnableNonConfidentialCreditsInstruction; + exports2.getEnableNonConfidentialCreditsInstructionDataCodec = getEnableNonConfidentialCreditsInstructionDataCodec; + exports2.getEnableNonConfidentialCreditsInstructionDataDecoder = getEnableNonConfidentialCreditsInstructionDataDecoder; + exports2.getEnableNonConfidentialCreditsInstructionDataEncoder = getEnableNonConfidentialCreditsInstructionDataEncoder; + exports2.getEncryptedBalanceCodec = getEncryptedBalanceCodec; + exports2.getEncryptedBalanceDecoder = getEncryptedBalanceDecoder; + exports2.getEncryptedBalanceEncoder = getEncryptedBalanceEncoder; + exports2.getExtensionCodec = getExtensionCodec; + exports2.getExtensionDecoder = getExtensionDecoder; + exports2.getExtensionEncoder = getExtensionEncoder; + exports2.getExtensionTypeCodec = getExtensionTypeCodec; + exports2.getExtensionTypeDecoder = getExtensionTypeDecoder; + exports2.getExtensionTypeEncoder = getExtensionTypeEncoder; + exports2.getFreezeAccountDiscriminatorBytes = getFreezeAccountDiscriminatorBytes; + exports2.getFreezeAccountInstruction = getFreezeAccountInstruction; + exports2.getFreezeAccountInstructionDataCodec = getFreezeAccountInstructionDataCodec; + exports2.getFreezeAccountInstructionDataDecoder = getFreezeAccountInstructionDataDecoder; + exports2.getFreezeAccountInstructionDataEncoder = getFreezeAccountInstructionDataEncoder; + exports2.getGetAccountDataSizeDiscriminatorBytes = getGetAccountDataSizeDiscriminatorBytes; + exports2.getGetAccountDataSizeInstruction = getGetAccountDataSizeInstruction; + exports2.getGetAccountDataSizeInstructionDataCodec = getGetAccountDataSizeInstructionDataCodec; + exports2.getGetAccountDataSizeInstructionDataDecoder = getGetAccountDataSizeInstructionDataDecoder; + exports2.getGetAccountDataSizeInstructionDataEncoder = getGetAccountDataSizeInstructionDataEncoder; + exports2.getHarvestWithheldTokensToMintDiscriminatorBytes = getHarvestWithheldTokensToMintDiscriminatorBytes; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes = getHarvestWithheldTokensToMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeDiscriminatorBytes = getHarvestWithheldTokensToMintForConfidentialTransferFeeDiscriminatorBytes; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction = getHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataCodec = getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataCodec; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder = getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder; + exports2.getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder = getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder; + exports2.getHarvestWithheldTokensToMintInstruction = getHarvestWithheldTokensToMintInstruction; + exports2.getHarvestWithheldTokensToMintInstructionDataCodec = getHarvestWithheldTokensToMintInstructionDataCodec; + exports2.getHarvestWithheldTokensToMintInstructionDataDecoder = getHarvestWithheldTokensToMintInstructionDataDecoder; + exports2.getHarvestWithheldTokensToMintInstructionDataEncoder = getHarvestWithheldTokensToMintInstructionDataEncoder; + exports2.getHarvestWithheldTokensToMintTransferFeeDiscriminatorBytes = getHarvestWithheldTokensToMintTransferFeeDiscriminatorBytes; + exports2.getInitializeAccount2DiscriminatorBytes = getInitializeAccount2DiscriminatorBytes; + exports2.getInitializeAccount2Instruction = getInitializeAccount2Instruction; + exports2.getInitializeAccount2InstructionDataCodec = getInitializeAccount2InstructionDataCodec; + exports2.getInitializeAccount2InstructionDataDecoder = getInitializeAccount2InstructionDataDecoder; + exports2.getInitializeAccount2InstructionDataEncoder = getInitializeAccount2InstructionDataEncoder; + exports2.getInitializeAccount3DiscriminatorBytes = getInitializeAccount3DiscriminatorBytes; + exports2.getInitializeAccount3Instruction = getInitializeAccount3Instruction; + exports2.getInitializeAccount3InstructionDataCodec = getInitializeAccount3InstructionDataCodec; + exports2.getInitializeAccount3InstructionDataDecoder = getInitializeAccount3InstructionDataDecoder; + exports2.getInitializeAccount3InstructionDataEncoder = getInitializeAccount3InstructionDataEncoder; + exports2.getInitializeAccountDiscriminatorBytes = getInitializeAccountDiscriminatorBytes; + exports2.getInitializeAccountInstruction = getInitializeAccountInstruction; + exports2.getInitializeAccountInstructionDataCodec = getInitializeAccountInstructionDataCodec; + exports2.getInitializeAccountInstructionDataDecoder = getInitializeAccountInstructionDataDecoder; + exports2.getInitializeAccountInstructionDataEncoder = getInitializeAccountInstructionDataEncoder; + exports2.getInitializeConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes = getInitializeConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes; + exports2.getInitializeConfidentialTransferFeeDiscriminatorBytes = getInitializeConfidentialTransferFeeDiscriminatorBytes; + exports2.getInitializeConfidentialTransferFeeInstruction = getInitializeConfidentialTransferFeeInstruction; + exports2.getInitializeConfidentialTransferFeeInstructionDataCodec = getInitializeConfidentialTransferFeeInstructionDataCodec; + exports2.getInitializeConfidentialTransferFeeInstructionDataDecoder = getInitializeConfidentialTransferFeeInstructionDataDecoder; + exports2.getInitializeConfidentialTransferFeeInstructionDataEncoder = getInitializeConfidentialTransferFeeInstructionDataEncoder; + exports2.getInitializeConfidentialTransferMintConfidentialTransferDiscriminatorBytes = getInitializeConfidentialTransferMintConfidentialTransferDiscriminatorBytes; + exports2.getInitializeConfidentialTransferMintDiscriminatorBytes = getInitializeConfidentialTransferMintDiscriminatorBytes; + exports2.getInitializeConfidentialTransferMintInstruction = getInitializeConfidentialTransferMintInstruction; + exports2.getInitializeConfidentialTransferMintInstructionDataCodec = getInitializeConfidentialTransferMintInstructionDataCodec; + exports2.getInitializeConfidentialTransferMintInstructionDataDecoder = getInitializeConfidentialTransferMintInstructionDataDecoder; + exports2.getInitializeConfidentialTransferMintInstructionDataEncoder = getInitializeConfidentialTransferMintInstructionDataEncoder; + exports2.getInitializeDefaultAccountStateDefaultAccountStateDiscriminatorBytes = getInitializeDefaultAccountStateDefaultAccountStateDiscriminatorBytes; + exports2.getInitializeDefaultAccountStateDiscriminatorBytes = getInitializeDefaultAccountStateDiscriminatorBytes; + exports2.getInitializeDefaultAccountStateInstruction = getInitializeDefaultAccountStateInstruction; + exports2.getInitializeDefaultAccountStateInstructionDataCodec = getInitializeDefaultAccountStateInstructionDataCodec; + exports2.getInitializeDefaultAccountStateInstructionDataDecoder = getInitializeDefaultAccountStateInstructionDataDecoder; + exports2.getInitializeDefaultAccountStateInstructionDataEncoder = getInitializeDefaultAccountStateInstructionDataEncoder; + exports2.getInitializeGroupMemberPointerDiscriminatorBytes = getInitializeGroupMemberPointerDiscriminatorBytes; + exports2.getInitializeGroupMemberPointerGroupMemberPointerDiscriminatorBytes = getInitializeGroupMemberPointerGroupMemberPointerDiscriminatorBytes; + exports2.getInitializeGroupMemberPointerInstruction = getInitializeGroupMemberPointerInstruction; + exports2.getInitializeGroupMemberPointerInstructionDataCodec = getInitializeGroupMemberPointerInstructionDataCodec; + exports2.getInitializeGroupMemberPointerInstructionDataDecoder = getInitializeGroupMemberPointerInstructionDataDecoder; + exports2.getInitializeGroupMemberPointerInstructionDataEncoder = getInitializeGroupMemberPointerInstructionDataEncoder; + exports2.getInitializeGroupPointerDiscriminatorBytes = getInitializeGroupPointerDiscriminatorBytes; + exports2.getInitializeGroupPointerGroupPointerDiscriminatorBytes = getInitializeGroupPointerGroupPointerDiscriminatorBytes; + exports2.getInitializeGroupPointerInstruction = getInitializeGroupPointerInstruction; + exports2.getInitializeGroupPointerInstructionDataCodec = getInitializeGroupPointerInstructionDataCodec; + exports2.getInitializeGroupPointerInstructionDataDecoder = getInitializeGroupPointerInstructionDataDecoder; + exports2.getInitializeGroupPointerInstructionDataEncoder = getInitializeGroupPointerInstructionDataEncoder; + exports2.getInitializeImmutableOwnerDiscriminatorBytes = getInitializeImmutableOwnerDiscriminatorBytes; + exports2.getInitializeImmutableOwnerInstruction = getInitializeImmutableOwnerInstruction; + exports2.getInitializeImmutableOwnerInstructionDataCodec = getInitializeImmutableOwnerInstructionDataCodec; + exports2.getInitializeImmutableOwnerInstructionDataDecoder = getInitializeImmutableOwnerInstructionDataDecoder; + exports2.getInitializeImmutableOwnerInstructionDataEncoder = getInitializeImmutableOwnerInstructionDataEncoder; + exports2.getInitializeInterestBearingMintDiscriminatorBytes = getInitializeInterestBearingMintDiscriminatorBytes; + exports2.getInitializeInterestBearingMintInstruction = getInitializeInterestBearingMintInstruction; + exports2.getInitializeInterestBearingMintInstructionDataCodec = getInitializeInterestBearingMintInstructionDataCodec; + exports2.getInitializeInterestBearingMintInstructionDataDecoder = getInitializeInterestBearingMintInstructionDataDecoder; + exports2.getInitializeInterestBearingMintInstructionDataEncoder = getInitializeInterestBearingMintInstructionDataEncoder; + exports2.getInitializeInterestBearingMintInterestBearingMintDiscriminatorBytes = getInitializeInterestBearingMintInterestBearingMintDiscriminatorBytes; + exports2.getInitializeMetadataPointerDiscriminatorBytes = getInitializeMetadataPointerDiscriminatorBytes; + exports2.getInitializeMetadataPointerInstruction = getInitializeMetadataPointerInstruction; + exports2.getInitializeMetadataPointerInstructionDataCodec = getInitializeMetadataPointerInstructionDataCodec; + exports2.getInitializeMetadataPointerInstructionDataDecoder = getInitializeMetadataPointerInstructionDataDecoder; + exports2.getInitializeMetadataPointerInstructionDataEncoder = getInitializeMetadataPointerInstructionDataEncoder; + exports2.getInitializeMetadataPointerMetadataPointerDiscriminatorBytes = getInitializeMetadataPointerMetadataPointerDiscriminatorBytes; + exports2.getInitializeMint2DiscriminatorBytes = getInitializeMint2DiscriminatorBytes; + exports2.getInitializeMint2Instruction = getInitializeMint2Instruction; + exports2.getInitializeMint2InstructionDataCodec = getInitializeMint2InstructionDataCodec; + exports2.getInitializeMint2InstructionDataDecoder = getInitializeMint2InstructionDataDecoder; + exports2.getInitializeMint2InstructionDataEncoder = getInitializeMint2InstructionDataEncoder; + exports2.getInitializeMintCloseAuthorityDiscriminatorBytes = getInitializeMintCloseAuthorityDiscriminatorBytes; + exports2.getInitializeMintCloseAuthorityInstruction = getInitializeMintCloseAuthorityInstruction; + exports2.getInitializeMintCloseAuthorityInstructionDataCodec = getInitializeMintCloseAuthorityInstructionDataCodec; + exports2.getInitializeMintCloseAuthorityInstructionDataDecoder = getInitializeMintCloseAuthorityInstructionDataDecoder; + exports2.getInitializeMintCloseAuthorityInstructionDataEncoder = getInitializeMintCloseAuthorityInstructionDataEncoder; + exports2.getInitializeMintDiscriminatorBytes = getInitializeMintDiscriminatorBytes; + exports2.getInitializeMintInstruction = getInitializeMintInstruction; + exports2.getInitializeMintInstructionDataCodec = getInitializeMintInstructionDataCodec; + exports2.getInitializeMintInstructionDataDecoder = getInitializeMintInstructionDataDecoder; + exports2.getInitializeMintInstructionDataEncoder = getInitializeMintInstructionDataEncoder; + exports2.getInitializeMultisig2DiscriminatorBytes = getInitializeMultisig2DiscriminatorBytes; + exports2.getInitializeMultisig2Instruction = getInitializeMultisig2Instruction; + exports2.getInitializeMultisig2InstructionDataCodec = getInitializeMultisig2InstructionDataCodec; + exports2.getInitializeMultisig2InstructionDataDecoder = getInitializeMultisig2InstructionDataDecoder; + exports2.getInitializeMultisig2InstructionDataEncoder = getInitializeMultisig2InstructionDataEncoder; + exports2.getInitializeMultisigDiscriminatorBytes = getInitializeMultisigDiscriminatorBytes; + exports2.getInitializeMultisigInstruction = getInitializeMultisigInstruction; + exports2.getInitializeMultisigInstructionDataCodec = getInitializeMultisigInstructionDataCodec; + exports2.getInitializeMultisigInstructionDataDecoder = getInitializeMultisigInstructionDataDecoder; + exports2.getInitializeMultisigInstructionDataEncoder = getInitializeMultisigInstructionDataEncoder; + exports2.getInitializeNonTransferableMintDiscriminatorBytes = getInitializeNonTransferableMintDiscriminatorBytes; + exports2.getInitializeNonTransferableMintInstruction = getInitializeNonTransferableMintInstruction; + exports2.getInitializeNonTransferableMintInstructionDataCodec = getInitializeNonTransferableMintInstructionDataCodec; + exports2.getInitializeNonTransferableMintInstructionDataDecoder = getInitializeNonTransferableMintInstructionDataDecoder; + exports2.getInitializeNonTransferableMintInstructionDataEncoder = getInitializeNonTransferableMintInstructionDataEncoder; + exports2.getInitializePausableConfigDiscriminatorBytes = getInitializePausableConfigDiscriminatorBytes; + exports2.getInitializePausableConfigInstruction = getInitializePausableConfigInstruction; + exports2.getInitializePausableConfigInstructionDataCodec = getInitializePausableConfigInstructionDataCodec; + exports2.getInitializePausableConfigInstructionDataDecoder = getInitializePausableConfigInstructionDataDecoder; + exports2.getInitializePausableConfigInstructionDataEncoder = getInitializePausableConfigInstructionDataEncoder; + exports2.getInitializePausableConfigPausableDiscriminatorBytes = getInitializePausableConfigPausableDiscriminatorBytes; + exports2.getInitializePermanentDelegateDiscriminatorBytes = getInitializePermanentDelegateDiscriminatorBytes; + exports2.getInitializePermanentDelegateInstruction = getInitializePermanentDelegateInstruction; + exports2.getInitializePermanentDelegateInstructionDataCodec = getInitializePermanentDelegateInstructionDataCodec; + exports2.getInitializePermanentDelegateInstructionDataDecoder = getInitializePermanentDelegateInstructionDataDecoder; + exports2.getInitializePermanentDelegateInstructionDataEncoder = getInitializePermanentDelegateInstructionDataEncoder; + exports2.getInitializeScaledUiAmountMintDiscriminatorBytes = getInitializeScaledUiAmountMintDiscriminatorBytes; + exports2.getInitializeScaledUiAmountMintInstruction = getInitializeScaledUiAmountMintInstruction; + exports2.getInitializeScaledUiAmountMintInstructionDataCodec = getInitializeScaledUiAmountMintInstructionDataCodec; + exports2.getInitializeScaledUiAmountMintInstructionDataDecoder = getInitializeScaledUiAmountMintInstructionDataDecoder; + exports2.getInitializeScaledUiAmountMintInstructionDataEncoder = getInitializeScaledUiAmountMintInstructionDataEncoder; + exports2.getInitializeScaledUiAmountMintScaledUiAmountMintDiscriminatorBytes = getInitializeScaledUiAmountMintScaledUiAmountMintDiscriminatorBytes; + exports2.getInitializeTokenGroupDiscriminatorBytes = getInitializeTokenGroupDiscriminatorBytes; + exports2.getInitializeTokenGroupInstruction = getInitializeTokenGroupInstruction; + exports2.getInitializeTokenGroupInstructionDataCodec = getInitializeTokenGroupInstructionDataCodec; + exports2.getInitializeTokenGroupInstructionDataDecoder = getInitializeTokenGroupInstructionDataDecoder; + exports2.getInitializeTokenGroupInstructionDataEncoder = getInitializeTokenGroupInstructionDataEncoder; + exports2.getInitializeTokenGroupMemberDiscriminatorBytes = getInitializeTokenGroupMemberDiscriminatorBytes; + exports2.getInitializeTokenGroupMemberInstruction = getInitializeTokenGroupMemberInstruction; + exports2.getInitializeTokenGroupMemberInstructionDataCodec = getInitializeTokenGroupMemberInstructionDataCodec; + exports2.getInitializeTokenGroupMemberInstructionDataDecoder = getInitializeTokenGroupMemberInstructionDataDecoder; + exports2.getInitializeTokenGroupMemberInstructionDataEncoder = getInitializeTokenGroupMemberInstructionDataEncoder; + exports2.getInitializeTokenMetadataDiscriminatorBytes = getInitializeTokenMetadataDiscriminatorBytes; + exports2.getInitializeTokenMetadataInstruction = getInitializeTokenMetadataInstruction; + exports2.getInitializeTokenMetadataInstructionDataCodec = getInitializeTokenMetadataInstructionDataCodec; + exports2.getInitializeTokenMetadataInstructionDataDecoder = getInitializeTokenMetadataInstructionDataDecoder; + exports2.getInitializeTokenMetadataInstructionDataEncoder = getInitializeTokenMetadataInstructionDataEncoder; + exports2.getInitializeTransferFeeConfigDiscriminatorBytes = getInitializeTransferFeeConfigDiscriminatorBytes; + exports2.getInitializeTransferFeeConfigInstruction = getInitializeTransferFeeConfigInstruction; + exports2.getInitializeTransferFeeConfigInstructionDataCodec = getInitializeTransferFeeConfigInstructionDataCodec; + exports2.getInitializeTransferFeeConfigInstructionDataDecoder = getInitializeTransferFeeConfigInstructionDataDecoder; + exports2.getInitializeTransferFeeConfigInstructionDataEncoder = getInitializeTransferFeeConfigInstructionDataEncoder; + exports2.getInitializeTransferFeeConfigTransferFeeDiscriminatorBytes = getInitializeTransferFeeConfigTransferFeeDiscriminatorBytes; + exports2.getInitializeTransferHookDiscriminatorBytes = getInitializeTransferHookDiscriminatorBytes; + exports2.getInitializeTransferHookInstruction = getInitializeTransferHookInstruction; + exports2.getInitializeTransferHookInstructionDataCodec = getInitializeTransferHookInstructionDataCodec; + exports2.getInitializeTransferHookInstructionDataDecoder = getInitializeTransferHookInstructionDataDecoder; + exports2.getInitializeTransferHookInstructionDataEncoder = getInitializeTransferHookInstructionDataEncoder; + exports2.getInitializeTransferHookTransferHookDiscriminatorBytes = getInitializeTransferHookTransferHookDiscriminatorBytes; + exports2.getMintCodec = getMintCodec; + exports2.getMintDecoder = getMintDecoder; + exports2.getMintEncoder = getMintEncoder; + exports2.getMintSize = getMintSize; + exports2.getMintToCheckedDiscriminatorBytes = getMintToCheckedDiscriminatorBytes; + exports2.getMintToCheckedInstruction = getMintToCheckedInstruction; + exports2.getMintToCheckedInstructionDataCodec = getMintToCheckedInstructionDataCodec; + exports2.getMintToCheckedInstructionDataDecoder = getMintToCheckedInstructionDataDecoder; + exports2.getMintToCheckedInstructionDataEncoder = getMintToCheckedInstructionDataEncoder; + exports2.getMintToDiscriminatorBytes = getMintToDiscriminatorBytes; + exports2.getMintToInstruction = getMintToInstruction; + exports2.getMintToInstructionDataCodec = getMintToInstructionDataCodec; + exports2.getMintToInstructionDataDecoder = getMintToInstructionDataDecoder; + exports2.getMintToInstructionDataEncoder = getMintToInstructionDataEncoder; + exports2.getMultisigCodec = getMultisigCodec; + exports2.getMultisigDecoder = getMultisigDecoder; + exports2.getMultisigEncoder = getMultisigEncoder; + exports2.getMultisigSize = getMultisigSize; + exports2.getPauseDiscriminatorBytes = getPauseDiscriminatorBytes; + exports2.getPauseInstruction = getPauseInstruction; + exports2.getPauseInstructionDataCodec = getPauseInstructionDataCodec; + exports2.getPauseInstructionDataDecoder = getPauseInstructionDataDecoder; + exports2.getPauseInstructionDataEncoder = getPauseInstructionDataEncoder; + exports2.getPausePausableDiscriminatorBytes = getPausePausableDiscriminatorBytes; + exports2.getPostInitializeInstructionsForMintExtensions = getPostInitializeInstructionsForMintExtensions; + exports2.getPostInitializeInstructionsForTokenExtensions = getPostInitializeInstructionsForTokenExtensions; + exports2.getPreInitializeInstructionsForMintExtensions = getPreInitializeInstructionsForMintExtensions; + exports2.getReallocateDiscriminatorBytes = getReallocateDiscriminatorBytes; + exports2.getReallocateInstruction = getReallocateInstruction; + exports2.getReallocateInstructionDataCodec = getReallocateInstructionDataCodec; + exports2.getReallocateInstructionDataDecoder = getReallocateInstructionDataDecoder; + exports2.getReallocateInstructionDataEncoder = getReallocateInstructionDataEncoder; + exports2.getRecoverNestedAssociatedTokenDiscriminatorBytes = getRecoverNestedAssociatedTokenDiscriminatorBytes; + exports2.getRecoverNestedAssociatedTokenInstruction = getRecoverNestedAssociatedTokenInstruction; + exports2.getRecoverNestedAssociatedTokenInstructionAsync = getRecoverNestedAssociatedTokenInstructionAsync; + exports2.getRecoverNestedAssociatedTokenInstructionDataCodec = getRecoverNestedAssociatedTokenInstructionDataCodec; + exports2.getRecoverNestedAssociatedTokenInstructionDataDecoder = getRecoverNestedAssociatedTokenInstructionDataDecoder; + exports2.getRecoverNestedAssociatedTokenInstructionDataEncoder = getRecoverNestedAssociatedTokenInstructionDataEncoder; + exports2.getRemoveTokenMetadataKeyDiscriminatorBytes = getRemoveTokenMetadataKeyDiscriminatorBytes; + exports2.getRemoveTokenMetadataKeyInstruction = getRemoveTokenMetadataKeyInstruction; + exports2.getRemoveTokenMetadataKeyInstructionDataCodec = getRemoveTokenMetadataKeyInstructionDataCodec; + exports2.getRemoveTokenMetadataKeyInstructionDataDecoder = getRemoveTokenMetadataKeyInstructionDataDecoder; + exports2.getRemoveTokenMetadataKeyInstructionDataEncoder = getRemoveTokenMetadataKeyInstructionDataEncoder; + exports2.getResumeDiscriminatorBytes = getResumeDiscriminatorBytes; + exports2.getResumeInstruction = getResumeInstruction; + exports2.getResumeInstructionDataCodec = getResumeInstructionDataCodec; + exports2.getResumeInstructionDataDecoder = getResumeInstructionDataDecoder; + exports2.getResumeInstructionDataEncoder = getResumeInstructionDataEncoder; + exports2.getResumePausableDiscriminatorBytes = getResumePausableDiscriminatorBytes; + exports2.getRevokeDiscriminatorBytes = getRevokeDiscriminatorBytes; + exports2.getRevokeInstruction = getRevokeInstruction; + exports2.getRevokeInstructionDataCodec = getRevokeInstructionDataCodec; + exports2.getRevokeInstructionDataDecoder = getRevokeInstructionDataDecoder; + exports2.getRevokeInstructionDataEncoder = getRevokeInstructionDataEncoder; + exports2.getSetAuthorityDiscriminatorBytes = getSetAuthorityDiscriminatorBytes; + exports2.getSetAuthorityInstruction = getSetAuthorityInstruction; + exports2.getSetAuthorityInstructionDataCodec = getSetAuthorityInstructionDataCodec; + exports2.getSetAuthorityInstructionDataDecoder = getSetAuthorityInstructionDataDecoder; + exports2.getSetAuthorityInstructionDataEncoder = getSetAuthorityInstructionDataEncoder; + exports2.getSetTransferFeeDiscriminatorBytes = getSetTransferFeeDiscriminatorBytes; + exports2.getSetTransferFeeInstruction = getSetTransferFeeInstruction; + exports2.getSetTransferFeeInstructionDataCodec = getSetTransferFeeInstructionDataCodec; + exports2.getSetTransferFeeInstructionDataDecoder = getSetTransferFeeInstructionDataDecoder; + exports2.getSetTransferFeeInstructionDataEncoder = getSetTransferFeeInstructionDataEncoder; + exports2.getSetTransferFeeTransferFeeDiscriminatorBytes = getSetTransferFeeTransferFeeDiscriminatorBytes; + exports2.getSyncNativeDiscriminatorBytes = getSyncNativeDiscriminatorBytes; + exports2.getSyncNativeInstruction = getSyncNativeInstruction; + exports2.getSyncNativeInstructionDataCodec = getSyncNativeInstructionDataCodec; + exports2.getSyncNativeInstructionDataDecoder = getSyncNativeInstructionDataDecoder; + exports2.getSyncNativeInstructionDataEncoder = getSyncNativeInstructionDataEncoder; + exports2.getThawAccountDiscriminatorBytes = getThawAccountDiscriminatorBytes; + exports2.getThawAccountInstruction = getThawAccountInstruction; + exports2.getThawAccountInstructionDataCodec = getThawAccountInstructionDataCodec; + exports2.getThawAccountInstructionDataDecoder = getThawAccountInstructionDataDecoder; + exports2.getThawAccountInstructionDataEncoder = getThawAccountInstructionDataEncoder; + exports2.getToken2022ErrorMessage = getToken2022ErrorMessage; + exports2.getTokenCodec = getTokenCodec; + exports2.getTokenDecoder = getTokenDecoder; + exports2.getTokenEncoder = getTokenEncoder; + exports2.getTokenMetadataFieldCodec = getTokenMetadataFieldCodec; + exports2.getTokenMetadataFieldDecoder = getTokenMetadataFieldDecoder; + exports2.getTokenMetadataFieldEncoder = getTokenMetadataFieldEncoder; + exports2.getTokenSize = getTokenSize; + exports2.getTransferCheckedDiscriminatorBytes = getTransferCheckedDiscriminatorBytes; + exports2.getTransferCheckedInstruction = getTransferCheckedInstruction; + exports2.getTransferCheckedInstructionDataCodec = getTransferCheckedInstructionDataCodec; + exports2.getTransferCheckedInstructionDataDecoder = getTransferCheckedInstructionDataDecoder; + exports2.getTransferCheckedInstructionDataEncoder = getTransferCheckedInstructionDataEncoder; + exports2.getTransferCheckedWithFeeDiscriminatorBytes = getTransferCheckedWithFeeDiscriminatorBytes; + exports2.getTransferCheckedWithFeeInstruction = getTransferCheckedWithFeeInstruction; + exports2.getTransferCheckedWithFeeInstructionDataCodec = getTransferCheckedWithFeeInstructionDataCodec; + exports2.getTransferCheckedWithFeeInstructionDataDecoder = getTransferCheckedWithFeeInstructionDataDecoder; + exports2.getTransferCheckedWithFeeInstructionDataEncoder = getTransferCheckedWithFeeInstructionDataEncoder; + exports2.getTransferCheckedWithFeeTransferFeeDiscriminatorBytes = getTransferCheckedWithFeeTransferFeeDiscriminatorBytes; + exports2.getTransferDiscriminatorBytes = getTransferDiscriminatorBytes; + exports2.getTransferFeeCodec = getTransferFeeCodec; + exports2.getTransferFeeDecoder = getTransferFeeDecoder; + exports2.getTransferFeeEncoder = getTransferFeeEncoder; + exports2.getTransferInstruction = getTransferInstruction; + exports2.getTransferInstructionDataCodec = getTransferInstructionDataCodec; + exports2.getTransferInstructionDataDecoder = getTransferInstructionDataDecoder; + exports2.getTransferInstructionDataEncoder = getTransferInstructionDataEncoder; + exports2.getUiAmountToAmountDiscriminatorBytes = getUiAmountToAmountDiscriminatorBytes; + exports2.getUiAmountToAmountInstruction = getUiAmountToAmountInstruction; + exports2.getUiAmountToAmountInstructionDataCodec = getUiAmountToAmountInstructionDataCodec; + exports2.getUiAmountToAmountInstructionDataDecoder = getUiAmountToAmountInstructionDataDecoder; + exports2.getUiAmountToAmountInstructionDataEncoder = getUiAmountToAmountInstructionDataEncoder; + exports2.getUpdateConfidentialTransferMintConfidentialTransferDiscriminatorBytes = getUpdateConfidentialTransferMintConfidentialTransferDiscriminatorBytes; + exports2.getUpdateConfidentialTransferMintDiscriminatorBytes = getUpdateConfidentialTransferMintDiscriminatorBytes; + exports2.getUpdateConfidentialTransferMintInstruction = getUpdateConfidentialTransferMintInstruction; + exports2.getUpdateConfidentialTransferMintInstructionDataCodec = getUpdateConfidentialTransferMintInstructionDataCodec; + exports2.getUpdateConfidentialTransferMintInstructionDataDecoder = getUpdateConfidentialTransferMintInstructionDataDecoder; + exports2.getUpdateConfidentialTransferMintInstructionDataEncoder = getUpdateConfidentialTransferMintInstructionDataEncoder; + exports2.getUpdateDefaultAccountStateDefaultAccountStateDiscriminatorBytes = getUpdateDefaultAccountStateDefaultAccountStateDiscriminatorBytes; + exports2.getUpdateDefaultAccountStateDiscriminatorBytes = getUpdateDefaultAccountStateDiscriminatorBytes; + exports2.getUpdateDefaultAccountStateInstruction = getUpdateDefaultAccountStateInstruction; + exports2.getUpdateDefaultAccountStateInstructionDataCodec = getUpdateDefaultAccountStateInstructionDataCodec; + exports2.getUpdateDefaultAccountStateInstructionDataDecoder = getUpdateDefaultAccountStateInstructionDataDecoder; + exports2.getUpdateDefaultAccountStateInstructionDataEncoder = getUpdateDefaultAccountStateInstructionDataEncoder; + exports2.getUpdateGroupMemberPointerDiscriminatorBytes = getUpdateGroupMemberPointerDiscriminatorBytes; + exports2.getUpdateGroupMemberPointerGroupMemberPointerDiscriminatorBytes = getUpdateGroupMemberPointerGroupMemberPointerDiscriminatorBytes; + exports2.getUpdateGroupMemberPointerInstruction = getUpdateGroupMemberPointerInstruction; + exports2.getUpdateGroupMemberPointerInstructionDataCodec = getUpdateGroupMemberPointerInstructionDataCodec; + exports2.getUpdateGroupMemberPointerInstructionDataDecoder = getUpdateGroupMemberPointerInstructionDataDecoder; + exports2.getUpdateGroupMemberPointerInstructionDataEncoder = getUpdateGroupMemberPointerInstructionDataEncoder; + exports2.getUpdateGroupPointerDiscriminatorBytes = getUpdateGroupPointerDiscriminatorBytes; + exports2.getUpdateGroupPointerGroupPointerDiscriminatorBytes = getUpdateGroupPointerGroupPointerDiscriminatorBytes; + exports2.getUpdateGroupPointerInstruction = getUpdateGroupPointerInstruction; + exports2.getUpdateGroupPointerInstructionDataCodec = getUpdateGroupPointerInstructionDataCodec; + exports2.getUpdateGroupPointerInstructionDataDecoder = getUpdateGroupPointerInstructionDataDecoder; + exports2.getUpdateGroupPointerInstructionDataEncoder = getUpdateGroupPointerInstructionDataEncoder; + exports2.getUpdateMetadataPointerDiscriminatorBytes = getUpdateMetadataPointerDiscriminatorBytes; + exports2.getUpdateMetadataPointerInstruction = getUpdateMetadataPointerInstruction; + exports2.getUpdateMetadataPointerInstructionDataCodec = getUpdateMetadataPointerInstructionDataCodec; + exports2.getUpdateMetadataPointerInstructionDataDecoder = getUpdateMetadataPointerInstructionDataDecoder; + exports2.getUpdateMetadataPointerInstructionDataEncoder = getUpdateMetadataPointerInstructionDataEncoder; + exports2.getUpdateMetadataPointerMetadataPointerDiscriminatorBytes = getUpdateMetadataPointerMetadataPointerDiscriminatorBytes; + exports2.getUpdateMultiplierScaledUiMintDiscriminatorBytes = getUpdateMultiplierScaledUiMintDiscriminatorBytes; + exports2.getUpdateMultiplierScaledUiMintInstruction = getUpdateMultiplierScaledUiMintInstruction; + exports2.getUpdateMultiplierScaledUiMintInstructionDataCodec = getUpdateMultiplierScaledUiMintInstructionDataCodec; + exports2.getUpdateMultiplierScaledUiMintInstructionDataDecoder = getUpdateMultiplierScaledUiMintInstructionDataDecoder; + exports2.getUpdateMultiplierScaledUiMintInstructionDataEncoder = getUpdateMultiplierScaledUiMintInstructionDataEncoder; + exports2.getUpdateMultiplierScaledUiMintScaledUiAmountMintDiscriminatorBytes = getUpdateMultiplierScaledUiMintScaledUiAmountMintDiscriminatorBytes; + exports2.getUpdateRateInterestBearingMintDiscriminatorBytes = getUpdateRateInterestBearingMintDiscriminatorBytes; + exports2.getUpdateRateInterestBearingMintInstruction = getUpdateRateInterestBearingMintInstruction; + exports2.getUpdateRateInterestBearingMintInstructionDataCodec = getUpdateRateInterestBearingMintInstructionDataCodec; + exports2.getUpdateRateInterestBearingMintInstructionDataDecoder = getUpdateRateInterestBearingMintInstructionDataDecoder; + exports2.getUpdateRateInterestBearingMintInstructionDataEncoder = getUpdateRateInterestBearingMintInstructionDataEncoder; + exports2.getUpdateRateInterestBearingMintInterestBearingMintDiscriminatorBytes = getUpdateRateInterestBearingMintInterestBearingMintDiscriminatorBytes; + exports2.getUpdateTokenGroupMaxSizeDiscriminatorBytes = getUpdateTokenGroupMaxSizeDiscriminatorBytes; + exports2.getUpdateTokenGroupMaxSizeInstruction = getUpdateTokenGroupMaxSizeInstruction; + exports2.getUpdateTokenGroupMaxSizeInstructionDataCodec = getUpdateTokenGroupMaxSizeInstructionDataCodec; + exports2.getUpdateTokenGroupMaxSizeInstructionDataDecoder = getUpdateTokenGroupMaxSizeInstructionDataDecoder; + exports2.getUpdateTokenGroupMaxSizeInstructionDataEncoder = getUpdateTokenGroupMaxSizeInstructionDataEncoder; + exports2.getUpdateTokenGroupUpdateAuthorityDiscriminatorBytes = getUpdateTokenGroupUpdateAuthorityDiscriminatorBytes; + exports2.getUpdateTokenGroupUpdateAuthorityInstruction = getUpdateTokenGroupUpdateAuthorityInstruction; + exports2.getUpdateTokenGroupUpdateAuthorityInstructionDataCodec = getUpdateTokenGroupUpdateAuthorityInstructionDataCodec; + exports2.getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder = getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder; + exports2.getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder = getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder; + exports2.getUpdateTokenMetadataFieldDiscriminatorBytes = getUpdateTokenMetadataFieldDiscriminatorBytes; + exports2.getUpdateTokenMetadataFieldInstruction = getUpdateTokenMetadataFieldInstruction; + exports2.getUpdateTokenMetadataFieldInstructionDataCodec = getUpdateTokenMetadataFieldInstructionDataCodec; + exports2.getUpdateTokenMetadataFieldInstructionDataDecoder = getUpdateTokenMetadataFieldInstructionDataDecoder; + exports2.getUpdateTokenMetadataFieldInstructionDataEncoder = getUpdateTokenMetadataFieldInstructionDataEncoder; + exports2.getUpdateTokenMetadataUpdateAuthorityDiscriminatorBytes = getUpdateTokenMetadataUpdateAuthorityDiscriminatorBytes; + exports2.getUpdateTokenMetadataUpdateAuthorityInstruction = getUpdateTokenMetadataUpdateAuthorityInstruction; + exports2.getUpdateTokenMetadataUpdateAuthorityInstructionDataCodec = getUpdateTokenMetadataUpdateAuthorityInstructionDataCodec; + exports2.getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder = getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder; + exports2.getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder = getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder; + exports2.getUpdateTransferHookDiscriminatorBytes = getUpdateTransferHookDiscriminatorBytes; + exports2.getUpdateTransferHookInstruction = getUpdateTransferHookInstruction; + exports2.getUpdateTransferHookInstructionDataCodec = getUpdateTransferHookInstructionDataCodec; + exports2.getUpdateTransferHookInstructionDataDecoder = getUpdateTransferHookInstructionDataDecoder; + exports2.getUpdateTransferHookInstructionDataEncoder = getUpdateTransferHookInstructionDataEncoder; + exports2.getUpdateTransferHookTransferHookDiscriminatorBytes = getUpdateTransferHookTransferHookDiscriminatorBytes; + exports2.getWithdrawExcessLamportsDiscriminatorBytes = getWithdrawExcessLamportsDiscriminatorBytes; + exports2.getWithdrawExcessLamportsInstruction = getWithdrawExcessLamportsInstruction; + exports2.getWithdrawExcessLamportsInstructionDataCodec = getWithdrawExcessLamportsInstructionDataCodec; + exports2.getWithdrawExcessLamportsInstructionDataDecoder = getWithdrawExcessLamportsInstructionDataDecoder; + exports2.getWithdrawExcessLamportsInstructionDataEncoder = getWithdrawExcessLamportsInstructionDataEncoder; + exports2.getWithdrawWithheldTokensFromAccountsDiscriminatorBytes = getWithdrawWithheldTokensFromAccountsDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataCodec = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataCodec; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder; + exports2.getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder = getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder; + exports2.getWithdrawWithheldTokensFromAccountsInstruction = getWithdrawWithheldTokensFromAccountsInstruction; + exports2.getWithdrawWithheldTokensFromAccountsInstructionDataCodec = getWithdrawWithheldTokensFromAccountsInstructionDataCodec; + exports2.getWithdrawWithheldTokensFromAccountsInstructionDataDecoder = getWithdrawWithheldTokensFromAccountsInstructionDataDecoder; + exports2.getWithdrawWithheldTokensFromAccountsInstructionDataEncoder = getWithdrawWithheldTokensFromAccountsInstructionDataEncoder; + exports2.getWithdrawWithheldTokensFromAccountsTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromAccountsTransferFeeDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromMintDiscriminatorBytes = getWithdrawWithheldTokensFromMintDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeDiscriminatorBytes; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataCodec = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataCodec; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder; + exports2.getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder = getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder; + exports2.getWithdrawWithheldTokensFromMintInstruction = getWithdrawWithheldTokensFromMintInstruction; + exports2.getWithdrawWithheldTokensFromMintInstructionDataCodec = getWithdrawWithheldTokensFromMintInstructionDataCodec; + exports2.getWithdrawWithheldTokensFromMintInstructionDataDecoder = getWithdrawWithheldTokensFromMintInstructionDataDecoder; + exports2.getWithdrawWithheldTokensFromMintInstructionDataEncoder = getWithdrawWithheldTokensFromMintInstructionDataEncoder; + exports2.getWithdrawWithheldTokensFromMintTransferFeeDiscriminatorBytes = getWithdrawWithheldTokensFromMintTransferFeeDiscriminatorBytes; + exports2.identifyAssociatedTokenInstruction = identifyAssociatedTokenInstruction; + exports2.identifyToken2022Account = identifyToken2022Account; + exports2.identifyToken2022Instruction = identifyToken2022Instruction; + exports2.isAssociatedTokenError = isAssociatedTokenError; + exports2.isExtension = isExtension; + exports2.isToken2022Error = isToken2022Error; + exports2.isTokenMetadataField = isTokenMetadataField; + exports2.parseAmountToUiAmountInstruction = parseAmountToUiAmountInstruction; + exports2.parseApplyConfidentialPendingBalanceInstruction = parseApplyConfidentialPendingBalanceInstruction; + exports2.parseApproveCheckedInstruction = parseApproveCheckedInstruction; + exports2.parseApproveConfidentialTransferAccountInstruction = parseApproveConfidentialTransferAccountInstruction; + exports2.parseApproveInstruction = parseApproveInstruction; + exports2.parseBurnCheckedInstruction = parseBurnCheckedInstruction; + exports2.parseBurnInstruction = parseBurnInstruction; + exports2.parseCloseAccountInstruction = parseCloseAccountInstruction; + exports2.parseConfidentialDepositInstruction = parseConfidentialDepositInstruction; + exports2.parseConfidentialTransferInstruction = parseConfidentialTransferInstruction; + exports2.parseConfidentialTransferWithFeeInstruction = parseConfidentialTransferWithFeeInstruction; + exports2.parseConfidentialWithdrawInstruction = parseConfidentialWithdrawInstruction; + exports2.parseConfigureConfidentialTransferAccountInstruction = parseConfigureConfidentialTransferAccountInstruction; + exports2.parseCreateAssociatedTokenIdempotentInstruction = parseCreateAssociatedTokenIdempotentInstruction; + exports2.parseCreateAssociatedTokenInstruction = parseCreateAssociatedTokenInstruction; + exports2.parseCreateNativeMintInstruction = parseCreateNativeMintInstruction; + exports2.parseDisableConfidentialCreditsInstruction = parseDisableConfidentialCreditsInstruction; + exports2.parseDisableCpiGuardInstruction = parseDisableCpiGuardInstruction; + exports2.parseDisableHarvestToMintInstruction = parseDisableHarvestToMintInstruction; + exports2.parseDisableMemoTransfersInstruction = parseDisableMemoTransfersInstruction; + exports2.parseDisableNonConfidentialCreditsInstruction = parseDisableNonConfidentialCreditsInstruction; + exports2.parseEmitTokenMetadataInstruction = parseEmitTokenMetadataInstruction; + exports2.parseEmptyConfidentialTransferAccountInstruction = parseEmptyConfidentialTransferAccountInstruction; + exports2.parseEnableConfidentialCreditsInstruction = parseEnableConfidentialCreditsInstruction; + exports2.parseEnableCpiGuardInstruction = parseEnableCpiGuardInstruction; + exports2.parseEnableHarvestToMintInstruction = parseEnableHarvestToMintInstruction; + exports2.parseEnableMemoTransfersInstruction = parseEnableMemoTransfersInstruction; + exports2.parseEnableNonConfidentialCreditsInstruction = parseEnableNonConfidentialCreditsInstruction; + exports2.parseFreezeAccountInstruction = parseFreezeAccountInstruction; + exports2.parseGetAccountDataSizeInstruction = parseGetAccountDataSizeInstruction; + exports2.parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction = parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction; + exports2.parseHarvestWithheldTokensToMintInstruction = parseHarvestWithheldTokensToMintInstruction; + exports2.parseInitializeAccount2Instruction = parseInitializeAccount2Instruction; + exports2.parseInitializeAccount3Instruction = parseInitializeAccount3Instruction; + exports2.parseInitializeAccountInstruction = parseInitializeAccountInstruction; + exports2.parseInitializeConfidentialTransferFeeInstruction = parseInitializeConfidentialTransferFeeInstruction; + exports2.parseInitializeConfidentialTransferMintInstruction = parseInitializeConfidentialTransferMintInstruction; + exports2.parseInitializeDefaultAccountStateInstruction = parseInitializeDefaultAccountStateInstruction; + exports2.parseInitializeGroupMemberPointerInstruction = parseInitializeGroupMemberPointerInstruction; + exports2.parseInitializeGroupPointerInstruction = parseInitializeGroupPointerInstruction; + exports2.parseInitializeImmutableOwnerInstruction = parseInitializeImmutableOwnerInstruction; + exports2.parseInitializeInterestBearingMintInstruction = parseInitializeInterestBearingMintInstruction; + exports2.parseInitializeMetadataPointerInstruction = parseInitializeMetadataPointerInstruction; + exports2.parseInitializeMint2Instruction = parseInitializeMint2Instruction; + exports2.parseInitializeMintCloseAuthorityInstruction = parseInitializeMintCloseAuthorityInstruction; + exports2.parseInitializeMintInstruction = parseInitializeMintInstruction; + exports2.parseInitializeMultisig2Instruction = parseInitializeMultisig2Instruction; + exports2.parseInitializeMultisigInstruction = parseInitializeMultisigInstruction; + exports2.parseInitializeNonTransferableMintInstruction = parseInitializeNonTransferableMintInstruction; + exports2.parseInitializePausableConfigInstruction = parseInitializePausableConfigInstruction; + exports2.parseInitializePermanentDelegateInstruction = parseInitializePermanentDelegateInstruction; + exports2.parseInitializeScaledUiAmountMintInstruction = parseInitializeScaledUiAmountMintInstruction; + exports2.parseInitializeTokenGroupInstruction = parseInitializeTokenGroupInstruction; + exports2.parseInitializeTokenGroupMemberInstruction = parseInitializeTokenGroupMemberInstruction; + exports2.parseInitializeTokenMetadataInstruction = parseInitializeTokenMetadataInstruction; + exports2.parseInitializeTransferFeeConfigInstruction = parseInitializeTransferFeeConfigInstruction; + exports2.parseInitializeTransferHookInstruction = parseInitializeTransferHookInstruction; + exports2.parseMintToCheckedInstruction = parseMintToCheckedInstruction; + exports2.parseMintToInstruction = parseMintToInstruction; + exports2.parsePauseInstruction = parsePauseInstruction; + exports2.parseReallocateInstruction = parseReallocateInstruction; + exports2.parseRecoverNestedAssociatedTokenInstruction = parseRecoverNestedAssociatedTokenInstruction; + exports2.parseRemoveTokenMetadataKeyInstruction = parseRemoveTokenMetadataKeyInstruction; + exports2.parseResumeInstruction = parseResumeInstruction; + exports2.parseRevokeInstruction = parseRevokeInstruction; + exports2.parseSetAuthorityInstruction = parseSetAuthorityInstruction; + exports2.parseSetTransferFeeInstruction = parseSetTransferFeeInstruction; + exports2.parseSyncNativeInstruction = parseSyncNativeInstruction; + exports2.parseThawAccountInstruction = parseThawAccountInstruction; + exports2.parseTransferCheckedInstruction = parseTransferCheckedInstruction; + exports2.parseTransferCheckedWithFeeInstruction = parseTransferCheckedWithFeeInstruction; + exports2.parseTransferInstruction = parseTransferInstruction; + exports2.parseUiAmountToAmountInstruction = parseUiAmountToAmountInstruction; + exports2.parseUpdateConfidentialTransferMintInstruction = parseUpdateConfidentialTransferMintInstruction; + exports2.parseUpdateDefaultAccountStateInstruction = parseUpdateDefaultAccountStateInstruction; + exports2.parseUpdateGroupMemberPointerInstruction = parseUpdateGroupMemberPointerInstruction; + exports2.parseUpdateGroupPointerInstruction = parseUpdateGroupPointerInstruction; + exports2.parseUpdateMetadataPointerInstruction = parseUpdateMetadataPointerInstruction; + exports2.parseUpdateMultiplierScaledUiMintInstruction = parseUpdateMultiplierScaledUiMintInstruction; + exports2.parseUpdateRateInterestBearingMintInstruction = parseUpdateRateInterestBearingMintInstruction; + exports2.parseUpdateTokenGroupMaxSizeInstruction = parseUpdateTokenGroupMaxSizeInstruction; + exports2.parseUpdateTokenGroupUpdateAuthorityInstruction = parseUpdateTokenGroupUpdateAuthorityInstruction; + exports2.parseUpdateTokenMetadataFieldInstruction = parseUpdateTokenMetadataFieldInstruction; + exports2.parseUpdateTokenMetadataUpdateAuthorityInstruction = parseUpdateTokenMetadataUpdateAuthorityInstruction; + exports2.parseUpdateTransferHookInstruction = parseUpdateTransferHookInstruction; + exports2.parseWithdrawExcessLamportsInstruction = parseWithdrawExcessLamportsInstruction; + exports2.parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction = parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction; + exports2.parseWithdrawWithheldTokensFromAccountsInstruction = parseWithdrawWithheldTokensFromAccountsInstruction; + exports2.parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction = parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction; + exports2.parseWithdrawWithheldTokensFromMintInstruction = parseWithdrawWithheldTokensFromMintInstruction; + exports2.tokenMetadataField = tokenMetadataField; + exports2.uiAmountToAmountForInterestBearingMintWithoutSimulation = uiAmountToAmountForInterestBearingMintWithoutSimulation; + exports2.uiAmountToAmountForMintWithoutSimulation = uiAmountToAmountForMintWithoutSimulation; + exports2.uiAmountToAmountForScaledUiAmountMintWithoutSimulation = uiAmountToAmountForScaledUiAmountMintWithoutSimulation; + } +}); + +// node_modules/@solana-program/compute-budget/dist/src/index.js +var require_src4 = __commonJS({ + "node_modules/@solana-program/compute-budget/dist/src/index.js"(exports2) { + "use strict"; + var kit = require_index_node34(); + var COMPUTE_BUDGET_PROGRAM_ADDRESS = "ComputeBudget111111111111111111111111111111"; + var ComputeBudgetInstruction = /* @__PURE__ */ ((ComputeBudgetInstruction2) => { + ComputeBudgetInstruction2[ComputeBudgetInstruction2["RequestUnits"] = 0] = "RequestUnits"; + ComputeBudgetInstruction2[ComputeBudgetInstruction2["RequestHeapFrame"] = 1] = "RequestHeapFrame"; + ComputeBudgetInstruction2[ComputeBudgetInstruction2["SetComputeUnitLimit"] = 2] = "SetComputeUnitLimit"; + ComputeBudgetInstruction2[ComputeBudgetInstruction2["SetComputeUnitPrice"] = 3] = "SetComputeUnitPrice"; + ComputeBudgetInstruction2[ComputeBudgetInstruction2["SetLoadedAccountsDataSizeLimit"] = 4] = "SetLoadedAccountsDataSizeLimit"; + return ComputeBudgetInstruction2; + })(ComputeBudgetInstruction || {}); + function identifyComputeBudgetInstruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU8Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(2), 0)) { + return 2; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(3), 0)) { + return 3; + } + if (kit.containsBytes(data, kit.getU8Encoder().encode(4), 0)) { + return 4; + } + throw new Error( + "The provided instruction could not be identified as a computeBudget instruction." + ); + } + var REQUEST_HEAP_FRAME_DISCRIMINATOR = 1; + function getRequestHeapFrameDiscriminatorBytes() { + return kit.getU8Encoder().encode(REQUEST_HEAP_FRAME_DISCRIMINATOR); + } + function getRequestHeapFrameInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["bytes", kit.getU32Encoder()] + ]), + (value) => ({ ...value, discriminator: REQUEST_HEAP_FRAME_DISCRIMINATOR }) + ); + } + function getRequestHeapFrameInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["bytes", kit.getU32Decoder()] + ]); + } + function getRequestHeapFrameInstructionDataCodec() { + return kit.combineCodec( + getRequestHeapFrameInstructionDataEncoder(), + getRequestHeapFrameInstructionDataDecoder() + ); + } + function getRequestHeapFrameInstruction(input, config2) { + const programAddress = config2?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS; + const args = { ...input }; + const instruction = { + programAddress, + data: getRequestHeapFrameInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseRequestHeapFrameInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getRequestHeapFrameInstructionDataDecoder().decode(instruction.data) + }; + } + var REQUEST_UNITS_DISCRIMINATOR = 0; + function getRequestUnitsDiscriminatorBytes() { + return kit.getU8Encoder().encode(REQUEST_UNITS_DISCRIMINATOR); + } + function getRequestUnitsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["units", kit.getU32Encoder()], + ["additionalFee", kit.getU32Encoder()] + ]), + (value) => ({ ...value, discriminator: REQUEST_UNITS_DISCRIMINATOR }) + ); + } + function getRequestUnitsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["units", kit.getU32Decoder()], + ["additionalFee", kit.getU32Decoder()] + ]); + } + function getRequestUnitsInstructionDataCodec() { + return kit.combineCodec( + getRequestUnitsInstructionDataEncoder(), + getRequestUnitsInstructionDataDecoder() + ); + } + function getRequestUnitsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS; + const args = { ...input }; + const instruction = { + programAddress, + data: getRequestUnitsInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseRequestUnitsInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getRequestUnitsInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = 2; + function getSetComputeUnitLimitDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR); + } + function getSetComputeUnitLimitInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["units", kit.getU32Encoder()] + ]), + (value) => ({ + ...value, + discriminator: SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR + }) + ); + } + function getSetComputeUnitLimitInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["units", kit.getU32Decoder()] + ]); + } + function getSetComputeUnitLimitInstructionDataCodec() { + return kit.combineCodec( + getSetComputeUnitLimitInstructionDataEncoder(), + getSetComputeUnitLimitInstructionDataDecoder() + ); + } + function getSetComputeUnitLimitInstruction(input, config2) { + const programAddress = config2?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS; + const args = { ...input }; + const instruction = { + programAddress, + data: getSetComputeUnitLimitInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetComputeUnitLimitInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getSetComputeUnitLimitInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR = 3; + function getSetComputeUnitPriceDiscriminatorBytes() { + return kit.getU8Encoder().encode(SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR); + } + function getSetComputeUnitPriceInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["microLamports", kit.getU64Encoder()] + ]), + (value) => ({ + ...value, + discriminator: SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR + }) + ); + } + function getSetComputeUnitPriceInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["microLamports", kit.getU64Decoder()] + ]); + } + function getSetComputeUnitPriceInstructionDataCodec() { + return kit.combineCodec( + getSetComputeUnitPriceInstructionDataEncoder(), + getSetComputeUnitPriceInstructionDataDecoder() + ); + } + function getSetComputeUnitPriceInstruction(input, config2) { + const programAddress = config2?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS; + const args = { ...input }; + const instruction = { + programAddress, + data: getSetComputeUnitPriceInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetComputeUnitPriceInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getSetComputeUnitPriceInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR = 4; + function getSetLoadedAccountsDataSizeLimitDiscriminatorBytes() { + return kit.getU8Encoder().encode( + SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR + ); + } + function getSetLoadedAccountsDataSizeLimitInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU8Encoder()], + ["accountDataSizeLimit", kit.getU32Encoder()] + ]), + (value) => ({ + ...value, + discriminator: SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR + }) + ); + } + function getSetLoadedAccountsDataSizeLimitInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU8Decoder()], + ["accountDataSizeLimit", kit.getU32Decoder()] + ]); + } + function getSetLoadedAccountsDataSizeLimitInstructionDataCodec() { + return kit.combineCodec( + getSetLoadedAccountsDataSizeLimitInstructionDataEncoder(), + getSetLoadedAccountsDataSizeLimitInstructionDataDecoder() + ); + } + function getSetLoadedAccountsDataSizeLimitInstruction(input, config2) { + const programAddress = config2?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS; + const args = { ...input }; + const instruction = { + programAddress, + data: getSetLoadedAccountsDataSizeLimitInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetLoadedAccountsDataSizeLimitInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getSetLoadedAccountsDataSizeLimitInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var PROVISORY_COMPUTE_UNIT_LIMIT = 0; + var MAX_COMPUTE_UNIT_LIMIT = 14e5; + function getSetComputeUnitLimitInstructionIndexAndUnits(transactionMessage) { + const index = getSetComputeUnitLimitInstructionIndex(transactionMessage); + if (index < 0) { + return null; + } + const units = kit.getU32Decoder().decode( + transactionMessage.instructions[index].data, + 1 + ); + return { index, units }; + } + function getSetComputeUnitLimitInstructionIndex(transactionMessage) { + return transactionMessage.instructions.findIndex( + isSetComputeUnitLimitInstruction + ); + } + function isSetComputeUnitLimitInstruction(instruction) { + return instruction.programAddress === COMPUTE_BUDGET_PROGRAM_ADDRESS && identifyComputeBudgetInstruction(instruction.data) === 2; + } + function getSetComputeUnitPriceInstructionIndexAndMicroLamports(transactionMessage) { + const index = getSetComputeUnitPriceInstructionIndex(transactionMessage); + if (index < 0) { + return null; + } + const microLamports = kit.getU64Decoder().decode( + transactionMessage.instructions[index].data, + 1 + ); + return { index, microLamports }; + } + function getSetComputeUnitPriceInstructionIndex(transactionMessage) { + return transactionMessage.instructions.findIndex( + isSetComputeUnitPriceInstruction + ); + } + function isSetComputeUnitPriceInstruction(instruction) { + return instruction.programAddress === COMPUTE_BUDGET_PROGRAM_ADDRESS && identifyComputeBudgetInstruction(instruction.data) === 3; + } + function fillProvisorySetComputeUnitLimitInstruction(transactionMessage) { + return updateOrAppendSetComputeUnitLimitInstruction( + (previousUnits) => previousUnits === null ? PROVISORY_COMPUTE_UNIT_LIMIT : previousUnits, + transactionMessage + ); + } + function updateOrAppendSetComputeUnitLimitInstruction(units, transactionMessage) { + const getUnits = (previousUnits2) => typeof units === "function" ? units(previousUnits2) : units; + const instructionDetails = getSetComputeUnitLimitInstructionIndexAndUnits(transactionMessage); + if (!instructionDetails) { + return kit.appendTransactionMessageInstruction( + getSetComputeUnitLimitInstruction({ units: getUnits(null) }), + transactionMessage + ); + } + const { index, units: previousUnits } = instructionDetails; + const newUnits = getUnits(previousUnits); + if (newUnits === previousUnits) { + return transactionMessage; + } + const newInstruction = getSetComputeUnitLimitInstruction({ units: newUnits }); + const newInstructions = [...transactionMessage.instructions]; + newInstructions.splice(index, 1, newInstruction); + return Object.freeze({ + ...transactionMessage, + instructions: newInstructions + }); + } + function estimateAndUpdateProvisoryComputeUnitLimitFactory(estimateComputeUnitLimit2) { + return async function fn(transactionMessage, config2) { + const instructionDetails = getSetComputeUnitLimitInstructionIndexAndUnits(transactionMessage); + if (instructionDetails && instructionDetails.units !== PROVISORY_COMPUTE_UNIT_LIMIT && instructionDetails.units !== MAX_COMPUTE_UNIT_LIMIT) { + return transactionMessage; + } + return updateOrAppendSetComputeUnitLimitInstruction( + await estimateComputeUnitLimit2(transactionMessage, config2), + transactionMessage + ); + }; + } + var PROVISORY_BLOCKHASH_LIFETIME_CONSTRAINT = { + blockhash: "11111111111111111111111111111111", + lastValidBlockHeight: 0n + // This is not included in compiled transactions; it can be anything. + }; + function fillMissingTransactionMessageLifetimeUsingProvisoryBlockhash(transactionMessage) { + if ("lifetimeConstraint" in transactionMessage) { + return transactionMessage; + } + return setTransactionMessageLifetimeUsingProvisoryBlockhash( + transactionMessage + ); + } + function setTransactionMessageLifetimeUsingProvisoryBlockhash(transactionMessage) { + return kit.setTransactionMessageLifetimeUsingBlockhash( + PROVISORY_BLOCKHASH_LIFETIME_CONSTRAINT, + transactionMessage + ); + } + async function estimateComputeUnitLimit({ + transactionMessage, + ...configs + }) { + const replaceRecentBlockhash = !kit.isDurableNonceTransaction(transactionMessage); + const transaction = kit.pipe( + transactionMessage, + fillMissingTransactionMessageLifetimeUsingProvisoryBlockhash, + (m) => updateOrAppendSetComputeUnitLimitInstruction(MAX_COMPUTE_UNIT_LIMIT, m), + kit.compileTransaction + ); + return await simulateTransactionAndGetConsumedUnits({ + transaction, + replaceRecentBlockhash, + ...configs + }); + } + async function simulateTransactionAndGetConsumedUnits({ + abortSignal, + rpc, + transaction, + ...simulateConfig + }) { + const wireTransactionBytes = kit.getBase64EncodedWireTransaction(transaction); + try { + const { + value: { err: transactionError, unitsConsumed } + } = await rpc.simulateTransaction(wireTransactionBytes, { + ...simulateConfig, + encoding: "base64", + sigVerify: false + }).send({ abortSignal }); + if (unitsConsumed == null) { + throw new kit.SolanaError( + kit.SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT + ); + } + const downcastUnitsConsumed = unitsConsumed > 4294967295n ? 4294967295 : Number(unitsConsumed); + if (transactionError) { + throw new kit.SolanaError( + kit.SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, + { + cause: transactionError, + unitsConsumed: downcastUnitsConsumed + } + ); + } + return downcastUnitsConsumed; + } catch (e) { + if (kit.isSolanaError( + e, + kit.SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT + )) + throw e; + throw new kit.SolanaError( + kit.SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, + { cause: e } + ); + } + } + function estimateComputeUnitLimitFactory({ + rpc + }) { + return async function estimateComputeUnitLimitFactoryFunction(transactionMessage, config2) { + return await estimateComputeUnitLimit({ + ...config2, + rpc, + transactionMessage + }); + }; + } + function setTransactionMessageComputeUnitPrice(microLamports, transactionMessage) { + return kit.appendTransactionMessageInstruction( + getSetComputeUnitPriceInstruction({ microLamports }), + transactionMessage + ); + } + function updateOrAppendSetComputeUnitPriceInstruction(microLamports, transactionMessage) { + const getMicroLamports = (previousMicroLamports2) => typeof microLamports === "function" ? microLamports(previousMicroLamports2) : microLamports; + const instructionDetails = getSetComputeUnitPriceInstructionIndexAndMicroLamports(transactionMessage); + if (!instructionDetails) { + return kit.appendTransactionMessageInstruction( + getSetComputeUnitPriceInstruction({ + microLamports: getMicroLamports(null) + }), + transactionMessage + ); + } + const { index, microLamports: previousMicroLamports } = instructionDetails; + const newMicroLamports = getMicroLamports(previousMicroLamports); + if (newMicroLamports === previousMicroLamports) { + return transactionMessage; + } + const newInstruction = getSetComputeUnitPriceInstruction({ + microLamports: newMicroLamports + }); + const newInstructions = [...transactionMessage.instructions]; + newInstructions.splice(index, 1, newInstruction); + return Object.freeze({ + ...transactionMessage, + instructions: newInstructions + }); + } + exports2.COMPUTE_BUDGET_PROGRAM_ADDRESS = COMPUTE_BUDGET_PROGRAM_ADDRESS; + exports2.ComputeBudgetInstruction = ComputeBudgetInstruction; + exports2.MAX_COMPUTE_UNIT_LIMIT = MAX_COMPUTE_UNIT_LIMIT; + exports2.PROVISORY_COMPUTE_UNIT_LIMIT = PROVISORY_COMPUTE_UNIT_LIMIT; + exports2.REQUEST_HEAP_FRAME_DISCRIMINATOR = REQUEST_HEAP_FRAME_DISCRIMINATOR; + exports2.REQUEST_UNITS_DISCRIMINATOR = REQUEST_UNITS_DISCRIMINATOR; + exports2.SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR; + exports2.SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR = SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR; + exports2.SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR = SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR; + exports2.estimateAndUpdateProvisoryComputeUnitLimitFactory = estimateAndUpdateProvisoryComputeUnitLimitFactory; + exports2.estimateComputeUnitLimitFactory = estimateComputeUnitLimitFactory; + exports2.fillProvisorySetComputeUnitLimitInstruction = fillProvisorySetComputeUnitLimitInstruction; + exports2.getRequestHeapFrameDiscriminatorBytes = getRequestHeapFrameDiscriminatorBytes; + exports2.getRequestHeapFrameInstruction = getRequestHeapFrameInstruction; + exports2.getRequestHeapFrameInstructionDataCodec = getRequestHeapFrameInstructionDataCodec; + exports2.getRequestHeapFrameInstructionDataDecoder = getRequestHeapFrameInstructionDataDecoder; + exports2.getRequestHeapFrameInstructionDataEncoder = getRequestHeapFrameInstructionDataEncoder; + exports2.getRequestUnitsDiscriminatorBytes = getRequestUnitsDiscriminatorBytes; + exports2.getRequestUnitsInstruction = getRequestUnitsInstruction; + exports2.getRequestUnitsInstructionDataCodec = getRequestUnitsInstructionDataCodec; + exports2.getRequestUnitsInstructionDataDecoder = getRequestUnitsInstructionDataDecoder; + exports2.getRequestUnitsInstructionDataEncoder = getRequestUnitsInstructionDataEncoder; + exports2.getSetComputeUnitLimitDiscriminatorBytes = getSetComputeUnitLimitDiscriminatorBytes; + exports2.getSetComputeUnitLimitInstruction = getSetComputeUnitLimitInstruction; + exports2.getSetComputeUnitLimitInstructionDataCodec = getSetComputeUnitLimitInstructionDataCodec; + exports2.getSetComputeUnitLimitInstructionDataDecoder = getSetComputeUnitLimitInstructionDataDecoder; + exports2.getSetComputeUnitLimitInstructionDataEncoder = getSetComputeUnitLimitInstructionDataEncoder; + exports2.getSetComputeUnitPriceDiscriminatorBytes = getSetComputeUnitPriceDiscriminatorBytes; + exports2.getSetComputeUnitPriceInstruction = getSetComputeUnitPriceInstruction; + exports2.getSetComputeUnitPriceInstructionDataCodec = getSetComputeUnitPriceInstructionDataCodec; + exports2.getSetComputeUnitPriceInstructionDataDecoder = getSetComputeUnitPriceInstructionDataDecoder; + exports2.getSetComputeUnitPriceInstructionDataEncoder = getSetComputeUnitPriceInstructionDataEncoder; + exports2.getSetLoadedAccountsDataSizeLimitDiscriminatorBytes = getSetLoadedAccountsDataSizeLimitDiscriminatorBytes; + exports2.getSetLoadedAccountsDataSizeLimitInstruction = getSetLoadedAccountsDataSizeLimitInstruction; + exports2.getSetLoadedAccountsDataSizeLimitInstructionDataCodec = getSetLoadedAccountsDataSizeLimitInstructionDataCodec; + exports2.getSetLoadedAccountsDataSizeLimitInstructionDataDecoder = getSetLoadedAccountsDataSizeLimitInstructionDataDecoder; + exports2.getSetLoadedAccountsDataSizeLimitInstructionDataEncoder = getSetLoadedAccountsDataSizeLimitInstructionDataEncoder; + exports2.identifyComputeBudgetInstruction = identifyComputeBudgetInstruction; + exports2.parseRequestHeapFrameInstruction = parseRequestHeapFrameInstruction; + exports2.parseRequestUnitsInstruction = parseRequestUnitsInstruction; + exports2.parseSetComputeUnitLimitInstruction = parseSetComputeUnitLimitInstruction; + exports2.parseSetComputeUnitPriceInstruction = parseSetComputeUnitPriceInstruction; + exports2.parseSetLoadedAccountsDataSizeLimitInstruction = parseSetLoadedAccountsDataSizeLimitInstruction; + exports2.setTransactionMessageComputeUnitPrice = setTransactionMessageComputeUnitPrice; + exports2.updateOrAppendSetComputeUnitLimitInstruction = updateOrAppendSetComputeUnitLimitInstruction; + exports2.updateOrAppendSetComputeUnitPriceInstruction = updateOrAppendSetComputeUnitPriceInstruction; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/solana/utils/fee.js +var require_fee = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/solana/utils/fee.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getPriorityFee = exports2.getBaseFee = void 0; + var kit_1 = require_index_node34(); + var compute_budget_1 = require_src4(); + var solana_1 = require_solana(); + var utils_1 = require_lib(); + var bigNumber_1 = require_bigNumber(); + var DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS = BigInt(3e5); + var stripComputeBudgetInstructions = (message) => ({ + ...message, + instructions: message.instructions.filter((instruction) => message.staticAccounts[instruction.programAddressIndex] !== solana_1.COMPUTE_BUDGET_PROGRAM_ID) + }); + var bumpUnitLimitComputeBudgetInstructions = (message) => ({ + ...message, + instructions: message.instructions.map((ix) => { + if (message.staticAccounts[ix.programAddressIndex] === solana_1.COMPUTE_BUDGET_PROGRAM_ID && ix.data?.[0] === compute_budget_1.SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR) { + const data = (0, compute_budget_1.getSetComputeUnitLimitInstructionDataEncoder)().encode({ + units: compute_budget_1.MAX_COMPUTE_UNIT_LIMIT + }); + return { + ...ix, + data + }; + } + return ix; + }) + }); + var getBaseFee = async (api, message) => { + const messageWithoutComputeBudget = (0, kit_1.pipe)(stripComputeBudgetInstructions(message), (0, kit_1.getCompiledTransactionMessageEncoder)().encode, (0, kit_1.getBase64Decoder)().decode); + const result = await api.getFeeForMessage(messageWithoutComputeBudget).send(); + if (result.value == null) { + throw new Error("Could not estimate fee for transaction."); + } + return result.value; + }; + exports2.getBaseFee = getBaseFee; + var getPriorityFee = async (api, decompiledMessage, compiledMessage, signatures) => { + const affectedAccounts = new Set(decompiledMessage.instructions.flatMap((instruction) => instruction.accounts ?? []).filter(({ + role + }) => (0, kit_1.isWritableRole)(role)).map(({ + address + }) => address)); + const messageBytes = (0, kit_1.pipe)(bumpUnitLimitComputeBudgetInstructions(compiledMessage), (0, kit_1.getCompiledTransactionMessageEncoder)().encode); + const rawTx = (0, kit_1.pipe)({ + messageBytes, + signatures + }, (0, kit_1.getTransactionEncoder)().encode, (0, kit_1.getBase64Decoder)().decode); + const simulated = await api.simulateTransaction(rawTx, { + commitment: "confirmed", + encoding: "base64", + sigVerify: false, + replaceRecentBlockhash: true + }).send(); + if (simulated.value.err != null || simulated.value.unitsConsumed == null) { + const stringifiedError = (0, utils_1.safeBigIntStringify)(simulated.value.err); + console.error("Could not simulate transaction:", stringifiedError); + throw new Error(`Could not simulate transaction: ${stringifiedError}`); + } + const computeUnitLimit = new bigNumber_1.BigNumber(simulated.value.unitsConsumed.toString()).times(1.2).decimalPlaces(0, bigNumber_1.BigNumber.ROUND_UP); + const recentFees = await api.getRecentPrioritizationFees(Array.from(affectedAccounts)).send(); + const networkPriorityFee = recentFees.map((a) => a.prioritizationFee).sort((a, b) => Number(b - a))[Math.floor(recentFees.length / 4)]; + const computeUnitPrice = networkPriorityFee > DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS ? networkPriorityFee : DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS; + const fee = new bigNumber_1.BigNumber(computeUnitPrice.toString()).times(10 ** -6).times(computeUnitLimit).decimalPlaces(0, bigNumber_1.BigNumber.ROUND_UP).toString(10); + return { + computeUnitPrice: computeUnitPrice.toString(10), + computeUnitLimit: computeUnitLimit.toString(10), + fee + }; + }; + exports2.getPriorityFee = getPriorityFee; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/solana/utils/getThrottledTransport.js +var require_getThrottledTransport = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/solana/utils/getThrottledTransport.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getThrottledTransport = void 0; + var DEFAULT_MAX_RPS = 4; + var DEFAULT_INTERVAL = 1e3; + var getThrottledTransport = (originalTransport, { + maxRps = DEFAULT_MAX_RPS, + interval = DEFAULT_INTERVAL, + debug = false + } = {}) => { + let requestBudgetRemaining = maxRps; + let pendingQueueRunTimerId; + const queuedRequests = []; + const processQueue = () => { + if (requestBudgetRemaining === 0) { + return; + } + if (debug) { + console.warn("[transport] Processing request queue", { + numQueuedRequests: queuedRequests.length + }); + } + while (queuedRequests.length && requestBudgetRemaining > 0) { + const request = queuedRequests.shift(); + if (debug) { + console.warn(`[transport] Processing request ${request.requestNumber}`, { + requestBudgetRemaining + }); + } + if (request.config.signal?.aborted) { + if (debug) { + console.warn(`[transport] Skipping aborted request ${request.requestNumber}`); + } + continue; + } + if (debug) { + console.warn(`[transport] Starting request ${request.requestNumber}`); + } + originalTransport(request.config).then(request.resolve).catch(request.reject); + requestBudgetRemaining--; + if (pendingQueueRunTimerId === void 0) { + if (debug) { + console.warn(`[transport] Setting request budget reset deadline for ${interval} ms from now`); + } + pendingQueueRunTimerId = setTimeout(() => { + if (debug) { + console.warn("[transport] Replenishing request budget"); + } + pendingQueueRunTimerId = void 0; + requestBudgetRemaining = maxRps; + processQueue(); + }, interval); + } + } + }; + let requestCount = 0; + const throttledTransport = (config2) => new Promise((resolve, reject) => { + queuedRequests.push({ + config: config2, + reject, + requestNumber: ++requestCount, + resolve + }); + if (config2.signal) { + config2.signal.addEventListener("abort", function() { + reject(this.reason); + }); + } + processQueue(); + }); + return throttledTransport; + }; + exports2.getThrottledTransport = getThrottledTransport; + } +}); + +// node_modules/@solana-program/stake/dist/src/index.js +var require_src5 = __commonJS({ + "node_modules/@solana-program/stake/dist/src/index.js"(exports2) { + "use strict"; + var kit = require_index_node34(); + function getAuthorizedEncoder() { + return kit.getStructEncoder([ + ["staker", kit.getAddressEncoder()], + ["withdrawer", kit.getAddressEncoder()] + ]); + } + function getAuthorizedDecoder() { + return kit.getStructDecoder([ + ["staker", kit.getAddressDecoder()], + ["withdrawer", kit.getAddressDecoder()] + ]); + } + function getAuthorizedCodec() { + return kit.combineCodec(getAuthorizedEncoder(), getAuthorizedDecoder()); + } + function getDelegationEncoder() { + return kit.getStructEncoder([ + ["voterPubkey", kit.getAddressEncoder()], + ["stake", kit.getU64Encoder()], + ["activationEpoch", kit.getU64Encoder()], + ["deactivationEpoch", kit.getU64Encoder()], + ["warmupCooldownRate", kit.getF64Encoder()] + ]); + } + function getDelegationDecoder() { + return kit.getStructDecoder([ + ["voterPubkey", kit.getAddressDecoder()], + ["stake", kit.getU64Decoder()], + ["activationEpoch", kit.getU64Decoder()], + ["deactivationEpoch", kit.getU64Decoder()], + ["warmupCooldownRate", kit.getF64Decoder()] + ]); + } + function getDelegationCodec() { + return kit.combineCodec(getDelegationEncoder(), getDelegationDecoder()); + } + function getLockupEncoder() { + return kit.getStructEncoder([ + ["unixTimestamp", kit.getI64Encoder()], + ["epoch", kit.getU64Encoder()], + ["custodian", kit.getAddressEncoder()] + ]); + } + function getLockupDecoder() { + return kit.getStructDecoder([ + ["unixTimestamp", kit.getI64Decoder()], + ["epoch", kit.getU64Decoder()], + ["custodian", kit.getAddressDecoder()] + ]); + } + function getLockupCodec() { + return kit.combineCodec(getLockupEncoder(), getLockupDecoder()); + } + function getMetaEncoder() { + return kit.getStructEncoder([ + ["rentExemptReserve", kit.getU64Encoder()], + ["authorized", getAuthorizedEncoder()], + ["lockup", getLockupEncoder()] + ]); + } + function getMetaDecoder() { + return kit.getStructDecoder([ + ["rentExemptReserve", kit.getU64Decoder()], + ["authorized", getAuthorizedDecoder()], + ["lockup", getLockupDecoder()] + ]); + } + function getMetaCodec() { + return kit.combineCodec(getMetaEncoder(), getMetaDecoder()); + } + function getStakeEncoder() { + return kit.getStructEncoder([ + ["delegation", getDelegationEncoder()], + ["creditsObserved", kit.getU64Encoder()] + ]); + } + function getStakeDecoder() { + return kit.getStructDecoder([ + ["delegation", getDelegationDecoder()], + ["creditsObserved", kit.getU64Decoder()] + ]); + } + function getStakeCodec() { + return kit.combineCodec(getStakeEncoder(), getStakeDecoder()); + } + var StakeAuthorize = /* @__PURE__ */ ((StakeAuthorize2) => { + StakeAuthorize2[StakeAuthorize2["Staker"] = 0] = "Staker"; + StakeAuthorize2[StakeAuthorize2["Withdrawer"] = 1] = "Withdrawer"; + return StakeAuthorize2; + })(StakeAuthorize || {}); + function getStakeAuthorizeEncoder() { + return kit.getEnumEncoder(StakeAuthorize); + } + function getStakeAuthorizeDecoder() { + return kit.getEnumDecoder(StakeAuthorize); + } + function getStakeAuthorizeCodec() { + return kit.combineCodec(getStakeAuthorizeEncoder(), getStakeAuthorizeDecoder()); + } + function getStakeFlagsEncoder() { + return kit.getStructEncoder([["bits", kit.getU8Encoder()]]); + } + function getStakeFlagsDecoder() { + return kit.getStructDecoder([["bits", kit.getU8Decoder()]]); + } + function getStakeFlagsCodec() { + return kit.combineCodec(getStakeFlagsEncoder(), getStakeFlagsDecoder()); + } + function getStakeStateEncoder() { + return kit.getDiscriminatedUnionEncoder( + [ + ["Uninitialized", kit.getUnitEncoder()], + [ + "Initialized", + kit.getStructEncoder([["fields", kit.getTupleEncoder([getMetaEncoder()])]]) + ], + [ + "Stake", + kit.getStructEncoder([ + ["fields", kit.getTupleEncoder([getMetaEncoder(), getStakeEncoder()])] + ]) + ], + ["RewardsPool", kit.getUnitEncoder()] + ], + { size: kit.getU32Encoder() } + ); + } + function getStakeStateDecoder() { + return kit.getDiscriminatedUnionDecoder( + [ + ["Uninitialized", kit.getUnitDecoder()], + [ + "Initialized", + kit.getStructDecoder([["fields", kit.getTupleDecoder([getMetaDecoder()])]]) + ], + [ + "Stake", + kit.getStructDecoder([ + ["fields", kit.getTupleDecoder([getMetaDecoder(), getStakeDecoder()])] + ]) + ], + ["RewardsPool", kit.getUnitDecoder()] + ], + { size: kit.getU32Decoder() } + ); + } + function getStakeStateCodec() { + return kit.combineCodec(getStakeStateEncoder(), getStakeStateDecoder()); + } + function stakeState(kind, data) { + return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...data ?? {} }; + } + function isStakeState(kind, value) { + return value.__kind === kind; + } + function getStakeStateV2Encoder() { + return kit.getDiscriminatedUnionEncoder( + [ + ["Uninitialized", kit.getUnitEncoder()], + [ + "Initialized", + kit.getStructEncoder([["fields", kit.getTupleEncoder([getMetaEncoder()])]]) + ], + [ + "Stake", + kit.getStructEncoder([ + [ + "fields", + kit.getTupleEncoder([ + getMetaEncoder(), + getStakeEncoder(), + getStakeFlagsEncoder() + ]) + ] + ]) + ], + ["RewardsPool", kit.getUnitEncoder()] + ], + { size: kit.getU32Encoder() } + ); + } + function getStakeStateV2Decoder() { + return kit.getDiscriminatedUnionDecoder( + [ + ["Uninitialized", kit.getUnitDecoder()], + [ + "Initialized", + kit.getStructDecoder([["fields", kit.getTupleDecoder([getMetaDecoder()])]]) + ], + [ + "Stake", + kit.getStructDecoder([ + [ + "fields", + kit.getTupleDecoder([ + getMetaDecoder(), + getStakeDecoder(), + getStakeFlagsDecoder() + ]) + ] + ]) + ], + ["RewardsPool", kit.getUnitDecoder()] + ], + { size: kit.getU32Decoder() } + ); + } + function getStakeStateV2Codec() { + return kit.combineCodec(getStakeStateV2Encoder(), getStakeStateV2Decoder()); + } + function stakeStateV2(kind, data) { + return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...data ?? {} }; + } + function isStakeStateV2(kind, value) { + return value.__kind === kind; + } + function getStakeStateAccountEncoder() { + return kit.getStructEncoder([["state", getStakeStateV2Encoder()]]); + } + function getStakeStateAccountDecoder() { + return kit.getStructDecoder([["state", getStakeStateV2Decoder()]]); + } + function getStakeStateAccountCodec() { + return kit.combineCodec( + getStakeStateAccountEncoder(), + getStakeStateAccountDecoder() + ); + } + function decodeStakeStateAccount(encodedAccount) { + return kit.decodeAccount( + encodedAccount, + getStakeStateAccountDecoder() + ); + } + async function fetchStakeStateAccount(rpc, address, config2) { + const maybeAccount = await fetchMaybeStakeStateAccount(rpc, address, config2); + kit.assertAccountExists(maybeAccount); + return maybeAccount; + } + async function fetchMaybeStakeStateAccount(rpc, address, config2) { + const maybeAccount = await kit.fetchEncodedAccount(rpc, address, config2); + return decodeStakeStateAccount(maybeAccount); + } + async function fetchAllStakeStateAccount(rpc, addresses, config2) { + const maybeAccounts = await fetchAllMaybeStakeStateAccount( + rpc, + addresses, + config2 + ); + kit.assertAccountsExist(maybeAccounts); + return maybeAccounts; + } + async function fetchAllMaybeStakeStateAccount(rpc, addresses, config2) { + const maybeAccounts = await kit.fetchEncodedAccounts(rpc, addresses, config2); + return maybeAccounts.map( + (maybeAccount) => decodeStakeStateAccount(maybeAccount) + ); + } + var STAKE_PROGRAM_ADDRESS = "Stake11111111111111111111111111111111111111"; + var StakeAccount = /* @__PURE__ */ ((StakeAccount2) => { + StakeAccount2[StakeAccount2["StakeStateAccount"] = 0] = "StakeStateAccount"; + return StakeAccount2; + })(StakeAccount || {}); + var StakeInstruction = /* @__PURE__ */ ((StakeInstruction2) => { + StakeInstruction2[StakeInstruction2["Initialize"] = 0] = "Initialize"; + StakeInstruction2[StakeInstruction2["Authorize"] = 1] = "Authorize"; + StakeInstruction2[StakeInstruction2["DelegateStake"] = 2] = "DelegateStake"; + StakeInstruction2[StakeInstruction2["Split"] = 3] = "Split"; + StakeInstruction2[StakeInstruction2["Withdraw"] = 4] = "Withdraw"; + StakeInstruction2[StakeInstruction2["Deactivate"] = 5] = "Deactivate"; + StakeInstruction2[StakeInstruction2["SetLockup"] = 6] = "SetLockup"; + StakeInstruction2[StakeInstruction2["Merge"] = 7] = "Merge"; + StakeInstruction2[StakeInstruction2["AuthorizeWithSeed"] = 8] = "AuthorizeWithSeed"; + StakeInstruction2[StakeInstruction2["InitializeChecked"] = 9] = "InitializeChecked"; + StakeInstruction2[StakeInstruction2["AuthorizeChecked"] = 10] = "AuthorizeChecked"; + StakeInstruction2[StakeInstruction2["AuthorizeCheckedWithSeed"] = 11] = "AuthorizeCheckedWithSeed"; + StakeInstruction2[StakeInstruction2["SetLockupChecked"] = 12] = "SetLockupChecked"; + StakeInstruction2[StakeInstruction2["GetMinimumDelegation"] = 13] = "GetMinimumDelegation"; + StakeInstruction2[StakeInstruction2["DeactivateDelinquent"] = 14] = "DeactivateDelinquent"; + StakeInstruction2[StakeInstruction2["MoveStake"] = 15] = "MoveStake"; + StakeInstruction2[StakeInstruction2["MoveLamports"] = 16] = "MoveLamports"; + return StakeInstruction2; + })(StakeInstruction || {}); + function identifyStakeInstruction(instruction) { + const data = "data" in instruction ? instruction.data : instruction; + if (kit.containsBytes(data, kit.getU32Encoder().encode(0), 0)) { + return 0; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(1), 0)) { + return 1; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(2), 0)) { + return 2; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(3), 0)) { + return 3; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(4), 0)) { + return 4; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(5), 0)) { + return 5; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(6), 0)) { + return 6; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(7), 0)) { + return 7; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(8), 0)) { + return 8; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(9), 0)) { + return 9; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(10), 0)) { + return 10; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(11), 0)) { + return 11; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(12), 0)) { + return 12; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(13), 0)) { + return 13; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(14), 0)) { + return 14; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(16), 0)) { + return 15; + } + if (kit.containsBytes(data, kit.getU32Encoder().encode(17), 0)) { + return 16; + } + throw new Error( + "The provided instruction could not be identified as a stake instruction." + ); + } + var STAKE_ERROR__NO_CREDITS_TO_REDEEM = 0; + var STAKE_ERROR__LOCKUP_IN_FORCE = 1; + var STAKE_ERROR__ALREADY_DEACTIVATED = 2; + var STAKE_ERROR__TOO_SOON_TO_REDELEGATE = 3; + var STAKE_ERROR__INSUFFICIENT_STAKE = 4; + var STAKE_ERROR__MERGE_TRANSIENT_STAKE = 5; + var STAKE_ERROR__MERGE_MISMATCH = 6; + var STAKE_ERROR__CUSTODIAN_MISSING = 7; + var STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING = 8; + var STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES = 9; + var STAKE_ERROR__VOTE_ADDRESS_MISMATCH = 10; + var STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET = 11; + var STAKE_ERROR__INSUFFICIENT_DELEGATION = 12; + var STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE = 13; + var STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT = 14; + var STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED = 15; + var STAKE_ERROR__EPOCH_REWARDS_ACTIVE = 16; + var stakeErrorMessages; + if (process.env.NODE_ENV !== "production") { + stakeErrorMessages = { + [STAKE_ERROR__ALREADY_DEACTIVATED]: `Stake already deactivated`, + [STAKE_ERROR__CUSTODIAN_MISSING]: `Custodian address not present`, + [STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING]: `Custodian signature not present`, + [STAKE_ERROR__EPOCH_REWARDS_ACTIVE]: `Stake action is not permitted while the epoch rewards period is active`, + [STAKE_ERROR__INSUFFICIENT_DELEGATION]: `Delegation amount is less than the minimum`, + [STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES]: `Insufficient voting activity in the reference vote account`, + [STAKE_ERROR__INSUFFICIENT_STAKE]: `Split amount is more than is staked`, + [STAKE_ERROR__LOCKUP_IN_FORCE]: `Lockup has not yet expired`, + [STAKE_ERROR__MERGE_MISMATCH]: `Stake account merge failed due to different authority, lockups or state`, + [STAKE_ERROR__MERGE_TRANSIENT_STAKE]: `Stake account with transient stake cannot be merged`, + [STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET]: `Stake account has not been delinquent for the minimum epochs required for deactivation`, + [STAKE_ERROR__NO_CREDITS_TO_REDEEM]: `Not enough credits to redeem`, + [STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED]: `Redelegated stake must be fully activated before deactivation`, + [STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT]: `Stake redelegation to the same vote account is not permitted`, + [STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE]: `Stake account with transient or inactive stake cannot be redelegated`, + [STAKE_ERROR__TOO_SOON_TO_REDELEGATE]: `One re-delegation permitted per epoch`, + [STAKE_ERROR__VOTE_ADDRESS_MISMATCH]: `Stake account is not delegated to the provided vote account` + }; + } + function getStakeErrorMessage(code) { + if (process.env.NODE_ENV !== "production") { + return stakeErrorMessages[code]; + } + return "Error message not available in production bundles."; + } + function isStakeError(error, transactionMessage, code) { + return kit.isProgramError( + error, + transactionMessage, + STAKE_PROGRAM_ADDRESS, + code + ); + } + function expectAddress(value) { + if (!value) { + throw new Error("Expected a Address."); + } + if (typeof value === "object" && "address" in value) { + return value.address; + } + if (Array.isArray(value)) { + return value[0]; + } + return value; + } + function getAccountMetaFactory(programAddress, optionalAccountStrategy) { + return (account) => { + if (!account.value) { + return; + } + const writableRole = account.isWritable ? kit.AccountRole.WRITABLE : kit.AccountRole.READONLY; + return Object.freeze({ + address: expectAddress(account.value), + role: isTransactionSigner(account.value) ? kit.upgradeRoleToSigner(writableRole) : writableRole, + ...isTransactionSigner(account.value) ? { signer: account.value } : {} + }); + }; + } + function isTransactionSigner(value) { + return !!value && typeof value === "object" && "address" in value && kit.isTransactionSigner(value); + } + var AUTHORIZE_DISCRIMINATOR = 1; + function getAuthorizeDiscriminatorBytes() { + return kit.getU32Encoder().encode(AUTHORIZE_DISCRIMINATOR); + } + function getAuthorizeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["arg0", kit.getAddressEncoder()], + ["arg1", getStakeAuthorizeEncoder()] + ]), + (value) => ({ ...value, discriminator: AUTHORIZE_DISCRIMINATOR }) + ); + } + function getAuthorizeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["arg0", kit.getAddressDecoder()], + ["arg1", getStakeAuthorizeDecoder()] + ]); + } + function getAuthorizeInstructionDataCodec() { + return kit.combineCodec( + getAuthorizeInstructionDataEncoder(), + getAuthorizeInstructionDataDecoder() + ); + } + function getAuthorizeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false }, + lockupAuthority: { + value: input.lockupAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.authority), + getAccountMeta(accounts.lockupAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getAuthorizeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAuthorizeInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 3; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + clockSysvar: getNextAccount(), + authority: getNextAccount(), + lockupAuthority: getNextOptionalAccount() + }, + data: getAuthorizeInstructionDataDecoder().decode(instruction.data) + }; + } + var AUTHORIZE_CHECKED_DISCRIMINATOR = 10; + function getAuthorizeCheckedDiscriminatorBytes() { + return kit.getU32Encoder().encode(AUTHORIZE_CHECKED_DISCRIMINATOR); + } + function getAuthorizeCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["stakeAuthorize", getStakeAuthorizeEncoder()] + ]), + (value) => ({ ...value, discriminator: AUTHORIZE_CHECKED_DISCRIMINATOR }) + ); + } + function getAuthorizeCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["stakeAuthorize", getStakeAuthorizeDecoder()] + ]); + } + function getAuthorizeCheckedInstructionDataCodec() { + return kit.combineCodec( + getAuthorizeCheckedInstructionDataEncoder(), + getAuthorizeCheckedInstructionDataDecoder() + ); + } + function getAuthorizeCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + authority: { value: input.authority ?? null, isWritable: false }, + newAuthority: { value: input.newAuthority ?? null, isWritable: false }, + lockupAuthority: { + value: input.lockupAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.authority), + getAccountMeta(accounts.newAuthority), + getAccountMeta(accounts.lockupAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getAuthorizeCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAuthorizeCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 4; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + clockSysvar: getNextAccount(), + authority: getNextAccount(), + newAuthority: getNextAccount(), + lockupAuthority: getNextOptionalAccount() + }, + data: getAuthorizeCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR = 11; + function getAuthorizeCheckedWithSeedDiscriminatorBytes() { + return kit.getU32Encoder().encode(AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR); + } + function getAuthorizeCheckedWithSeedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["stakeAuthorize", getStakeAuthorizeEncoder()], + [ + "authoritySeed", + kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder()) + ], + ["authorityOwner", kit.getAddressEncoder()] + ]), + (value) => ({ + ...value, + discriminator: AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR + }) + ); + } + function getAuthorizeCheckedWithSeedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["stakeAuthorize", getStakeAuthorizeDecoder()], + ["authoritySeed", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["authorityOwner", kit.getAddressDecoder()] + ]); + } + function getAuthorizeCheckedWithSeedInstructionDataCodec() { + return kit.combineCodec( + getAuthorizeCheckedWithSeedInstructionDataEncoder(), + getAuthorizeCheckedWithSeedInstructionDataDecoder() + ); + } + function getAuthorizeCheckedWithSeedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + base: { value: input.base ?? null, isWritable: false }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + newAuthority: { value: input.newAuthority ?? null, isWritable: false }, + lockupAuthority: { + value: input.lockupAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.base), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.newAuthority), + getAccountMeta(accounts.lockupAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getAuthorizeCheckedWithSeedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAuthorizeCheckedWithSeedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 4; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + base: getNextAccount(), + clockSysvar: getNextAccount(), + newAuthority: getNextAccount(), + lockupAuthority: getNextOptionalAccount() + }, + data: getAuthorizeCheckedWithSeedInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var AUTHORIZE_WITH_SEED_DISCRIMINATOR = 8; + function getAuthorizeWithSeedDiscriminatorBytes() { + return kit.getU32Encoder().encode(AUTHORIZE_WITH_SEED_DISCRIMINATOR); + } + function getAuthorizeWithSeedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["newAuthorizedPubkey", kit.getAddressEncoder()], + ["stakeAuthorize", getStakeAuthorizeEncoder()], + [ + "authoritySeed", + kit.addEncoderSizePrefix(kit.getUtf8Encoder(), kit.getU32Encoder()) + ], + ["authorityOwner", kit.getAddressEncoder()] + ]), + (value) => ({ ...value, discriminator: AUTHORIZE_WITH_SEED_DISCRIMINATOR }) + ); + } + function getAuthorizeWithSeedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["newAuthorizedPubkey", kit.getAddressDecoder()], + ["stakeAuthorize", getStakeAuthorizeDecoder()], + ["authoritySeed", kit.addDecoderSizePrefix(kit.getUtf8Decoder(), kit.getU32Decoder())], + ["authorityOwner", kit.getAddressDecoder()] + ]); + } + function getAuthorizeWithSeedInstructionDataCodec() { + return kit.combineCodec( + getAuthorizeWithSeedInstructionDataEncoder(), + getAuthorizeWithSeedInstructionDataDecoder() + ); + } + function getAuthorizeWithSeedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + base: { value: input.base ?? null, isWritable: false }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + lockupAuthority: { + value: input.lockupAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.base), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.lockupAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getAuthorizeWithSeedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseAuthorizeWithSeedInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 3; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + base: getNextAccount(), + clockSysvar: getNextAccount(), + lockupAuthority: getNextOptionalAccount() + }, + data: getAuthorizeWithSeedInstructionDataDecoder().decode(instruction.data) + }; + } + var DEACTIVATE_DISCRIMINATOR = 5; + function getDeactivateDiscriminatorBytes() { + return kit.getU32Encoder().encode(DEACTIVATE_DISCRIMINATOR); + } + function getDeactivateInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ ...value, discriminator: DEACTIVATE_DISCRIMINATOR }) + ); + } + function getDeactivateInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getDeactivateInstructionDataCodec() { + return kit.combineCodec( + getDeactivateInstructionDataEncoder(), + getDeactivateInstructionDataDecoder() + ); + } + function getDeactivateInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getDeactivateInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDeactivateInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + clockSysvar: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getDeactivateInstructionDataDecoder().decode(instruction.data) + }; + } + var DEACTIVATE_DELINQUENT_DISCRIMINATOR = 14; + function getDeactivateDelinquentDiscriminatorBytes() { + return kit.getU32Encoder().encode(DEACTIVATE_DELINQUENT_DISCRIMINATOR); + } + function getDeactivateDelinquentInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ + ...value, + discriminator: DEACTIVATE_DELINQUENT_DISCRIMINATOR + }) + ); + } + function getDeactivateDelinquentInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getDeactivateDelinquentInstructionDataCodec() { + return kit.combineCodec( + getDeactivateDelinquentInstructionDataEncoder(), + getDeactivateDelinquentInstructionDataDecoder() + ); + } + function getDeactivateDelinquentInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + delinquentVote: { value: input.delinquentVote ?? null, isWritable: false }, + referenceVote: { value: input.referenceVote ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.delinquentVote), + getAccountMeta(accounts.referenceVote) + ], + programAddress, + data: getDeactivateDelinquentInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDeactivateDelinquentInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + delinquentVote: getNextAccount(), + referenceVote: getNextAccount() + }, + data: getDeactivateDelinquentInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var DELEGATE_STAKE_DISCRIMINATOR = 2; + function getDelegateStakeDiscriminatorBytes() { + return kit.getU32Encoder().encode(DELEGATE_STAKE_DISCRIMINATOR); + } + function getDelegateStakeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ ...value, discriminator: DELEGATE_STAKE_DISCRIMINATOR }) + ); + } + function getDelegateStakeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getDelegateStakeInstructionDataCodec() { + return kit.combineCodec( + getDelegateStakeInstructionDataEncoder(), + getDelegateStakeInstructionDataDecoder() + ); + } + function getDelegateStakeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + vote: { value: input.vote ?? null, isWritable: false }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + stakeHistory: { value: input.stakeHistory ?? null, isWritable: false }, + unused: { value: input.unused ?? null, isWritable: false }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.vote), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.stakeHistory), + getAccountMeta(accounts.unused), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getDelegateStakeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseDelegateStakeInstruction(instruction) { + if (instruction.accounts.length < 6) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + vote: getNextAccount(), + clockSysvar: getNextAccount(), + stakeHistory: getNextAccount(), + unused: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getDelegateStakeInstructionDataDecoder().decode(instruction.data) + }; + } + var GET_MINIMUM_DELEGATION_DISCRIMINATOR = 13; + function getGetMinimumDelegationDiscriminatorBytes() { + return kit.getU32Encoder().encode(GET_MINIMUM_DELEGATION_DISCRIMINATOR); + } + function getGetMinimumDelegationInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ + ...value, + discriminator: GET_MINIMUM_DELEGATION_DISCRIMINATOR + }) + ); + } + function getGetMinimumDelegationInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getGetMinimumDelegationInstructionDataCodec() { + return kit.combineCodec( + getGetMinimumDelegationInstructionDataEncoder(), + getGetMinimumDelegationInstructionDataDecoder() + ); + } + function getGetMinimumDelegationInstruction(config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const instruction = { + programAddress, + data: getGetMinimumDelegationInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseGetMinimumDelegationInstruction(instruction) { + return { + programAddress: instruction.programAddress, + data: getGetMinimumDelegationInstructionDataDecoder().decode( + instruction.data + ) + }; + } + var INITIALIZE_DISCRIMINATOR = 0; + function getInitializeDiscriminatorBytes() { + return kit.getU32Encoder().encode(INITIALIZE_DISCRIMINATOR); + } + function getInitializeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["arg0", getAuthorizedEncoder()], + ["arg1", getLockupEncoder()] + ]), + (value) => ({ ...value, discriminator: INITIALIZE_DISCRIMINATOR }) + ); + } + function getInitializeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["arg0", getAuthorizedDecoder()], + ["arg1", getLockupDecoder()] + ]); + } + function getInitializeInstructionDataCodec() { + return kit.combineCodec( + getInitializeInstructionDataEncoder(), + getInitializeInstructionDataDecoder() + ); + } + function getInitializeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + rentSysvar: { value: input.rentSysvar ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.rentSysvar.value) { + accounts.rentSysvar.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.rentSysvar) + ], + programAddress, + data: getInitializeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseInitializeInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + rentSysvar: getNextAccount() + }, + data: getInitializeInstructionDataDecoder().decode(instruction.data) + }; + } + var INITIALIZE_CHECKED_DISCRIMINATOR = 9; + function getInitializeCheckedDiscriminatorBytes() { + return kit.getU32Encoder().encode(INITIALIZE_CHECKED_DISCRIMINATOR); + } + function getInitializeCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ ...value, discriminator: INITIALIZE_CHECKED_DISCRIMINATOR }) + ); + } + function getInitializeCheckedInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getInitializeCheckedInstructionDataCodec() { + return kit.combineCodec( + getInitializeCheckedInstructionDataEncoder(), + getInitializeCheckedInstructionDataDecoder() + ); + } + function getInitializeCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + rentSysvar: { value: input.rentSysvar ?? null, isWritable: false }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false }, + withdrawAuthority: { + value: input.withdrawAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + if (!accounts.rentSysvar.value) { + accounts.rentSysvar.value = "SysvarRent111111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.rentSysvar), + getAccountMeta(accounts.stakeAuthority), + getAccountMeta(accounts.withdrawAuthority) + ], + programAddress, + data: getInitializeCheckedInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseInitializeCheckedInstruction(instruction) { + if (instruction.accounts.length < 4) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + rentSysvar: getNextAccount(), + stakeAuthority: getNextAccount(), + withdrawAuthority: getNextAccount() + }, + data: getInitializeCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var MERGE_DISCRIMINATOR = 7; + function getMergeDiscriminatorBytes() { + return kit.getU32Encoder().encode(MERGE_DISCRIMINATOR); + } + function getMergeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([["discriminator", kit.getU32Encoder()]]), + (value) => ({ ...value, discriminator: MERGE_DISCRIMINATOR }) + ); + } + function getMergeInstructionDataDecoder() { + return kit.getStructDecoder([["discriminator", kit.getU32Decoder()]]); + } + function getMergeInstructionDataCodec() { + return kit.combineCodec( + getMergeInstructionDataEncoder(), + getMergeInstructionDataDecoder() + ); + } + function getMergeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + destinationStake: { + value: input.destinationStake ?? null, + isWritable: true + }, + sourceStake: { value: input.sourceStake ?? null, isWritable: true }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + stakeHistory: { value: input.stakeHistory ?? null, isWritable: false }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.destinationStake), + getAccountMeta(accounts.sourceStake), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.stakeHistory), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getMergeInstructionDataEncoder().encode({}) + }; + return instruction; + } + function parseMergeInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + destinationStake: getNextAccount(), + sourceStake: getNextAccount(), + clockSysvar: getNextAccount(), + stakeHistory: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getMergeInstructionDataDecoder().decode(instruction.data) + }; + } + var MOVE_LAMPORTS_DISCRIMINATOR = 17; + function getMoveLamportsDiscriminatorBytes() { + return kit.getU32Encoder().encode(MOVE_LAMPORTS_DISCRIMINATOR); + } + function getMoveLamportsInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["args", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: MOVE_LAMPORTS_DISCRIMINATOR }) + ); + } + function getMoveLamportsInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["args", kit.getU64Decoder()] + ]); + } + function getMoveLamportsInstructionDataCodec() { + return kit.combineCodec( + getMoveLamportsInstructionDataEncoder(), + getMoveLamportsInstructionDataDecoder() + ); + } + function getMoveLamportsInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + sourceStake: { value: input.sourceStake ?? null, isWritable: true }, + destinationStake: { + value: input.destinationStake ?? null, + isWritable: true + }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.sourceStake), + getAccountMeta(accounts.destinationStake), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getMoveLamportsInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMoveLamportsInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + sourceStake: getNextAccount(), + destinationStake: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getMoveLamportsInstructionDataDecoder().decode(instruction.data) + }; + } + var MOVE_STAKE_DISCRIMINATOR = 16; + function getMoveStakeDiscriminatorBytes() { + return kit.getU32Encoder().encode(MOVE_STAKE_DISCRIMINATOR); + } + function getMoveStakeInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["args", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: MOVE_STAKE_DISCRIMINATOR }) + ); + } + function getMoveStakeInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["args", kit.getU64Decoder()] + ]); + } + function getMoveStakeInstructionDataCodec() { + return kit.combineCodec( + getMoveStakeInstructionDataEncoder(), + getMoveStakeInstructionDataDecoder() + ); + } + function getMoveStakeInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + sourceStake: { value: input.sourceStake ?? null, isWritable: true }, + destinationStake: { + value: input.destinationStake ?? null, + isWritable: true + }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.sourceStake), + getAccountMeta(accounts.destinationStake), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getMoveStakeInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseMoveStakeInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + sourceStake: getNextAccount(), + destinationStake: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getMoveStakeInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_LOCKUP_DISCRIMINATOR = 6; + function getSetLockupDiscriminatorBytes() { + return kit.getU32Encoder().encode(SET_LOCKUP_DISCRIMINATOR); + } + function getSetLockupInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["unixTimestamp", kit.getOptionEncoder(kit.getI64Encoder())], + ["epoch", kit.getOptionEncoder(kit.getU64Encoder())], + ["custodian", kit.getOptionEncoder(kit.getAddressEncoder())] + ]), + (value) => ({ ...value, discriminator: SET_LOCKUP_DISCRIMINATOR }) + ); + } + function getSetLockupInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["unixTimestamp", kit.getOptionDecoder(kit.getI64Decoder())], + ["epoch", kit.getOptionDecoder(kit.getU64Decoder())], + ["custodian", kit.getOptionDecoder(kit.getAddressDecoder())] + ]); + } + function getSetLockupInstructionDataCodec() { + return kit.combineCodec( + getSetLockupInstructionDataEncoder(), + getSetLockupInstructionDataDecoder() + ); + } + function getSetLockupInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.authority) + ], + programAddress, + data: getSetLockupInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetLockupInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + authority: getNextAccount() + }, + data: getSetLockupInstructionDataDecoder().decode(instruction.data) + }; + } + var SET_LOCKUP_CHECKED_DISCRIMINATOR = 12; + function getSetLockupCheckedDiscriminatorBytes() { + return kit.getU32Encoder().encode(SET_LOCKUP_CHECKED_DISCRIMINATOR); + } + function getSetLockupCheckedInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["unixTimestamp", kit.getOptionEncoder(kit.getI64Encoder())], + ["epoch", kit.getOptionEncoder(kit.getU64Encoder())] + ]), + (value) => ({ ...value, discriminator: SET_LOCKUP_CHECKED_DISCRIMINATOR }) + ); + } + function getSetLockupCheckedInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["unixTimestamp", kit.getOptionDecoder(kit.getI64Decoder())], + ["epoch", kit.getOptionDecoder(kit.getU64Decoder())] + ]); + } + function getSetLockupCheckedInstructionDataCodec() { + return kit.combineCodec( + getSetLockupCheckedInstructionDataEncoder(), + getSetLockupCheckedInstructionDataDecoder() + ); + } + function getSetLockupCheckedInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + authority: { value: input.authority ?? null, isWritable: false }, + newAuthority: { value: input.newAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.authority), + getAccountMeta(accounts.newAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getSetLockupCheckedInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSetLockupCheckedInstruction(instruction) { + if (instruction.accounts.length < 2) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 2; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + authority: getNextAccount(), + newAuthority: getNextOptionalAccount() + }, + data: getSetLockupCheckedInstructionDataDecoder().decode(instruction.data) + }; + } + var SPLIT_DISCRIMINATOR = 3; + function getSplitDiscriminatorBytes() { + return kit.getU32Encoder().encode(SPLIT_DISCRIMINATOR); + } + function getSplitInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["args", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: SPLIT_DISCRIMINATOR }) + ); + } + function getSplitInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["args", kit.getU64Decoder()] + ]); + } + function getSplitInstructionDataCodec() { + return kit.combineCodec( + getSplitInstructionDataEncoder(), + getSplitInstructionDataDecoder() + ); + } + function getSplitInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + splitStake: { value: input.splitStake ?? null, isWritable: true }, + stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false } + }; + const accounts = originalAccounts; + const args = { ...input }; + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.splitStake), + getAccountMeta(accounts.stakeAuthority) + ], + programAddress, + data: getSplitInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseSplitInstruction(instruction) { + if (instruction.accounts.length < 3) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + splitStake: getNextAccount(), + stakeAuthority: getNextAccount() + }, + data: getSplitInstructionDataDecoder().decode(instruction.data) + }; + } + var WITHDRAW_DISCRIMINATOR = 4; + function getWithdrawDiscriminatorBytes() { + return kit.getU32Encoder().encode(WITHDRAW_DISCRIMINATOR); + } + function getWithdrawInstructionDataEncoder() { + return kit.transformEncoder( + kit.getStructEncoder([ + ["discriminator", kit.getU32Encoder()], + ["args", kit.getU64Encoder()] + ]), + (value) => ({ ...value, discriminator: WITHDRAW_DISCRIMINATOR }) + ); + } + function getWithdrawInstructionDataDecoder() { + return kit.getStructDecoder([ + ["discriminator", kit.getU32Decoder()], + ["args", kit.getU64Decoder()] + ]); + } + function getWithdrawInstructionDataCodec() { + return kit.combineCodec( + getWithdrawInstructionDataEncoder(), + getWithdrawInstructionDataDecoder() + ); + } + function getWithdrawInstruction(input, config2) { + const programAddress = config2?.programAddress ?? STAKE_PROGRAM_ADDRESS; + const originalAccounts = { + stake: { value: input.stake ?? null, isWritable: true }, + recipient: { value: input.recipient ?? null, isWritable: true }, + clockSysvar: { value: input.clockSysvar ?? null, isWritable: false }, + stakeHistory: { value: input.stakeHistory ?? null, isWritable: false }, + withdrawAuthority: { + value: input.withdrawAuthority ?? null, + isWritable: false + }, + lockupAuthority: { + value: input.lockupAuthority ?? null, + isWritable: false + } + }; + const accounts = originalAccounts; + const args = { ...input }; + if (!accounts.clockSysvar.value) { + accounts.clockSysvar.value = "SysvarC1ock11111111111111111111111111111111"; + } + const getAccountMeta = getAccountMetaFactory(); + const instruction = { + accounts: [ + getAccountMeta(accounts.stake), + getAccountMeta(accounts.recipient), + getAccountMeta(accounts.clockSysvar), + getAccountMeta(accounts.stakeHistory), + getAccountMeta(accounts.withdrawAuthority), + getAccountMeta(accounts.lockupAuthority) + ].filter((x) => x !== void 0), + programAddress, + data: getWithdrawInstructionDataEncoder().encode( + args + ) + }; + return instruction; + } + function parseWithdrawInstruction(instruction) { + if (instruction.accounts.length < 5) { + throw new Error("Not enough accounts"); + } + let accountIndex = 0; + const getNextAccount = () => { + const accountMeta = instruction.accounts[accountIndex]; + accountIndex += 1; + return accountMeta; + }; + let optionalAccountsRemaining = instruction.accounts.length - 5; + const getNextOptionalAccount = () => { + if (optionalAccountsRemaining === 0) return void 0; + optionalAccountsRemaining -= 1; + return getNextAccount(); + }; + return { + programAddress: instruction.programAddress, + accounts: { + stake: getNextAccount(), + recipient: getNextAccount(), + clockSysvar: getNextAccount(), + stakeHistory: getNextAccount(), + withdrawAuthority: getNextAccount(), + lockupAuthority: getNextOptionalAccount() + }, + data: getWithdrawInstructionDataDecoder().decode(instruction.data) + }; + } + exports2.AUTHORIZE_CHECKED_DISCRIMINATOR = AUTHORIZE_CHECKED_DISCRIMINATOR; + exports2.AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR = AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR; + exports2.AUTHORIZE_DISCRIMINATOR = AUTHORIZE_DISCRIMINATOR; + exports2.AUTHORIZE_WITH_SEED_DISCRIMINATOR = AUTHORIZE_WITH_SEED_DISCRIMINATOR; + exports2.DEACTIVATE_DELINQUENT_DISCRIMINATOR = DEACTIVATE_DELINQUENT_DISCRIMINATOR; + exports2.DEACTIVATE_DISCRIMINATOR = DEACTIVATE_DISCRIMINATOR; + exports2.DELEGATE_STAKE_DISCRIMINATOR = DELEGATE_STAKE_DISCRIMINATOR; + exports2.GET_MINIMUM_DELEGATION_DISCRIMINATOR = GET_MINIMUM_DELEGATION_DISCRIMINATOR; + exports2.INITIALIZE_CHECKED_DISCRIMINATOR = INITIALIZE_CHECKED_DISCRIMINATOR; + exports2.INITIALIZE_DISCRIMINATOR = INITIALIZE_DISCRIMINATOR; + exports2.MERGE_DISCRIMINATOR = MERGE_DISCRIMINATOR; + exports2.MOVE_LAMPORTS_DISCRIMINATOR = MOVE_LAMPORTS_DISCRIMINATOR; + exports2.MOVE_STAKE_DISCRIMINATOR = MOVE_STAKE_DISCRIMINATOR; + exports2.SET_LOCKUP_CHECKED_DISCRIMINATOR = SET_LOCKUP_CHECKED_DISCRIMINATOR; + exports2.SET_LOCKUP_DISCRIMINATOR = SET_LOCKUP_DISCRIMINATOR; + exports2.SPLIT_DISCRIMINATOR = SPLIT_DISCRIMINATOR; + exports2.STAKE_ERROR__ALREADY_DEACTIVATED = STAKE_ERROR__ALREADY_DEACTIVATED; + exports2.STAKE_ERROR__CUSTODIAN_MISSING = STAKE_ERROR__CUSTODIAN_MISSING; + exports2.STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING = STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING; + exports2.STAKE_ERROR__EPOCH_REWARDS_ACTIVE = STAKE_ERROR__EPOCH_REWARDS_ACTIVE; + exports2.STAKE_ERROR__INSUFFICIENT_DELEGATION = STAKE_ERROR__INSUFFICIENT_DELEGATION; + exports2.STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES = STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES; + exports2.STAKE_ERROR__INSUFFICIENT_STAKE = STAKE_ERROR__INSUFFICIENT_STAKE; + exports2.STAKE_ERROR__LOCKUP_IN_FORCE = STAKE_ERROR__LOCKUP_IN_FORCE; + exports2.STAKE_ERROR__MERGE_MISMATCH = STAKE_ERROR__MERGE_MISMATCH; + exports2.STAKE_ERROR__MERGE_TRANSIENT_STAKE = STAKE_ERROR__MERGE_TRANSIENT_STAKE; + exports2.STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET = STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET; + exports2.STAKE_ERROR__NO_CREDITS_TO_REDEEM = STAKE_ERROR__NO_CREDITS_TO_REDEEM; + exports2.STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED = STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED; + exports2.STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT = STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT; + exports2.STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE = STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE; + exports2.STAKE_ERROR__TOO_SOON_TO_REDELEGATE = STAKE_ERROR__TOO_SOON_TO_REDELEGATE; + exports2.STAKE_ERROR__VOTE_ADDRESS_MISMATCH = STAKE_ERROR__VOTE_ADDRESS_MISMATCH; + exports2.STAKE_PROGRAM_ADDRESS = STAKE_PROGRAM_ADDRESS; + exports2.StakeAccount = StakeAccount; + exports2.StakeAuthorize = StakeAuthorize; + exports2.StakeInstruction = StakeInstruction; + exports2.WITHDRAW_DISCRIMINATOR = WITHDRAW_DISCRIMINATOR; + exports2.decodeStakeStateAccount = decodeStakeStateAccount; + exports2.fetchAllMaybeStakeStateAccount = fetchAllMaybeStakeStateAccount; + exports2.fetchAllStakeStateAccount = fetchAllStakeStateAccount; + exports2.fetchMaybeStakeStateAccount = fetchMaybeStakeStateAccount; + exports2.fetchStakeStateAccount = fetchStakeStateAccount; + exports2.getAuthorizeCheckedDiscriminatorBytes = getAuthorizeCheckedDiscriminatorBytes; + exports2.getAuthorizeCheckedInstruction = getAuthorizeCheckedInstruction; + exports2.getAuthorizeCheckedInstructionDataCodec = getAuthorizeCheckedInstructionDataCodec; + exports2.getAuthorizeCheckedInstructionDataDecoder = getAuthorizeCheckedInstructionDataDecoder; + exports2.getAuthorizeCheckedInstructionDataEncoder = getAuthorizeCheckedInstructionDataEncoder; + exports2.getAuthorizeCheckedWithSeedDiscriminatorBytes = getAuthorizeCheckedWithSeedDiscriminatorBytes; + exports2.getAuthorizeCheckedWithSeedInstruction = getAuthorizeCheckedWithSeedInstruction; + exports2.getAuthorizeCheckedWithSeedInstructionDataCodec = getAuthorizeCheckedWithSeedInstructionDataCodec; + exports2.getAuthorizeCheckedWithSeedInstructionDataDecoder = getAuthorizeCheckedWithSeedInstructionDataDecoder; + exports2.getAuthorizeCheckedWithSeedInstructionDataEncoder = getAuthorizeCheckedWithSeedInstructionDataEncoder; + exports2.getAuthorizeDiscriminatorBytes = getAuthorizeDiscriminatorBytes; + exports2.getAuthorizeInstruction = getAuthorizeInstruction; + exports2.getAuthorizeInstructionDataCodec = getAuthorizeInstructionDataCodec; + exports2.getAuthorizeInstructionDataDecoder = getAuthorizeInstructionDataDecoder; + exports2.getAuthorizeInstructionDataEncoder = getAuthorizeInstructionDataEncoder; + exports2.getAuthorizeWithSeedDiscriminatorBytes = getAuthorizeWithSeedDiscriminatorBytes; + exports2.getAuthorizeWithSeedInstruction = getAuthorizeWithSeedInstruction; + exports2.getAuthorizeWithSeedInstructionDataCodec = getAuthorizeWithSeedInstructionDataCodec; + exports2.getAuthorizeWithSeedInstructionDataDecoder = getAuthorizeWithSeedInstructionDataDecoder; + exports2.getAuthorizeWithSeedInstructionDataEncoder = getAuthorizeWithSeedInstructionDataEncoder; + exports2.getAuthorizedCodec = getAuthorizedCodec; + exports2.getAuthorizedDecoder = getAuthorizedDecoder; + exports2.getAuthorizedEncoder = getAuthorizedEncoder; + exports2.getDeactivateDelinquentDiscriminatorBytes = getDeactivateDelinquentDiscriminatorBytes; + exports2.getDeactivateDelinquentInstruction = getDeactivateDelinquentInstruction; + exports2.getDeactivateDelinquentInstructionDataCodec = getDeactivateDelinquentInstructionDataCodec; + exports2.getDeactivateDelinquentInstructionDataDecoder = getDeactivateDelinquentInstructionDataDecoder; + exports2.getDeactivateDelinquentInstructionDataEncoder = getDeactivateDelinquentInstructionDataEncoder; + exports2.getDeactivateDiscriminatorBytes = getDeactivateDiscriminatorBytes; + exports2.getDeactivateInstruction = getDeactivateInstruction; + exports2.getDeactivateInstructionDataCodec = getDeactivateInstructionDataCodec; + exports2.getDeactivateInstructionDataDecoder = getDeactivateInstructionDataDecoder; + exports2.getDeactivateInstructionDataEncoder = getDeactivateInstructionDataEncoder; + exports2.getDelegateStakeDiscriminatorBytes = getDelegateStakeDiscriminatorBytes; + exports2.getDelegateStakeInstruction = getDelegateStakeInstruction; + exports2.getDelegateStakeInstructionDataCodec = getDelegateStakeInstructionDataCodec; + exports2.getDelegateStakeInstructionDataDecoder = getDelegateStakeInstructionDataDecoder; + exports2.getDelegateStakeInstructionDataEncoder = getDelegateStakeInstructionDataEncoder; + exports2.getDelegationCodec = getDelegationCodec; + exports2.getDelegationDecoder = getDelegationDecoder; + exports2.getDelegationEncoder = getDelegationEncoder; + exports2.getGetMinimumDelegationDiscriminatorBytes = getGetMinimumDelegationDiscriminatorBytes; + exports2.getGetMinimumDelegationInstruction = getGetMinimumDelegationInstruction; + exports2.getGetMinimumDelegationInstructionDataCodec = getGetMinimumDelegationInstructionDataCodec; + exports2.getGetMinimumDelegationInstructionDataDecoder = getGetMinimumDelegationInstructionDataDecoder; + exports2.getGetMinimumDelegationInstructionDataEncoder = getGetMinimumDelegationInstructionDataEncoder; + exports2.getInitializeCheckedDiscriminatorBytes = getInitializeCheckedDiscriminatorBytes; + exports2.getInitializeCheckedInstruction = getInitializeCheckedInstruction; + exports2.getInitializeCheckedInstructionDataCodec = getInitializeCheckedInstructionDataCodec; + exports2.getInitializeCheckedInstructionDataDecoder = getInitializeCheckedInstructionDataDecoder; + exports2.getInitializeCheckedInstructionDataEncoder = getInitializeCheckedInstructionDataEncoder; + exports2.getInitializeDiscriminatorBytes = getInitializeDiscriminatorBytes; + exports2.getInitializeInstruction = getInitializeInstruction; + exports2.getInitializeInstructionDataCodec = getInitializeInstructionDataCodec; + exports2.getInitializeInstructionDataDecoder = getInitializeInstructionDataDecoder; + exports2.getInitializeInstructionDataEncoder = getInitializeInstructionDataEncoder; + exports2.getLockupCodec = getLockupCodec; + exports2.getLockupDecoder = getLockupDecoder; + exports2.getLockupEncoder = getLockupEncoder; + exports2.getMergeDiscriminatorBytes = getMergeDiscriminatorBytes; + exports2.getMergeInstruction = getMergeInstruction; + exports2.getMergeInstructionDataCodec = getMergeInstructionDataCodec; + exports2.getMergeInstructionDataDecoder = getMergeInstructionDataDecoder; + exports2.getMergeInstructionDataEncoder = getMergeInstructionDataEncoder; + exports2.getMetaCodec = getMetaCodec; + exports2.getMetaDecoder = getMetaDecoder; + exports2.getMetaEncoder = getMetaEncoder; + exports2.getMoveLamportsDiscriminatorBytes = getMoveLamportsDiscriminatorBytes; + exports2.getMoveLamportsInstruction = getMoveLamportsInstruction; + exports2.getMoveLamportsInstructionDataCodec = getMoveLamportsInstructionDataCodec; + exports2.getMoveLamportsInstructionDataDecoder = getMoveLamportsInstructionDataDecoder; + exports2.getMoveLamportsInstructionDataEncoder = getMoveLamportsInstructionDataEncoder; + exports2.getMoveStakeDiscriminatorBytes = getMoveStakeDiscriminatorBytes; + exports2.getMoveStakeInstruction = getMoveStakeInstruction; + exports2.getMoveStakeInstructionDataCodec = getMoveStakeInstructionDataCodec; + exports2.getMoveStakeInstructionDataDecoder = getMoveStakeInstructionDataDecoder; + exports2.getMoveStakeInstructionDataEncoder = getMoveStakeInstructionDataEncoder; + exports2.getSetLockupCheckedDiscriminatorBytes = getSetLockupCheckedDiscriminatorBytes; + exports2.getSetLockupCheckedInstruction = getSetLockupCheckedInstruction; + exports2.getSetLockupCheckedInstructionDataCodec = getSetLockupCheckedInstructionDataCodec; + exports2.getSetLockupCheckedInstructionDataDecoder = getSetLockupCheckedInstructionDataDecoder; + exports2.getSetLockupCheckedInstructionDataEncoder = getSetLockupCheckedInstructionDataEncoder; + exports2.getSetLockupDiscriminatorBytes = getSetLockupDiscriminatorBytes; + exports2.getSetLockupInstruction = getSetLockupInstruction; + exports2.getSetLockupInstructionDataCodec = getSetLockupInstructionDataCodec; + exports2.getSetLockupInstructionDataDecoder = getSetLockupInstructionDataDecoder; + exports2.getSetLockupInstructionDataEncoder = getSetLockupInstructionDataEncoder; + exports2.getSplitDiscriminatorBytes = getSplitDiscriminatorBytes; + exports2.getSplitInstruction = getSplitInstruction; + exports2.getSplitInstructionDataCodec = getSplitInstructionDataCodec; + exports2.getSplitInstructionDataDecoder = getSplitInstructionDataDecoder; + exports2.getSplitInstructionDataEncoder = getSplitInstructionDataEncoder; + exports2.getStakeAuthorizeCodec = getStakeAuthorizeCodec; + exports2.getStakeAuthorizeDecoder = getStakeAuthorizeDecoder; + exports2.getStakeAuthorizeEncoder = getStakeAuthorizeEncoder; + exports2.getStakeCodec = getStakeCodec; + exports2.getStakeDecoder = getStakeDecoder; + exports2.getStakeEncoder = getStakeEncoder; + exports2.getStakeErrorMessage = getStakeErrorMessage; + exports2.getStakeFlagsCodec = getStakeFlagsCodec; + exports2.getStakeFlagsDecoder = getStakeFlagsDecoder; + exports2.getStakeFlagsEncoder = getStakeFlagsEncoder; + exports2.getStakeStateAccountCodec = getStakeStateAccountCodec; + exports2.getStakeStateAccountDecoder = getStakeStateAccountDecoder; + exports2.getStakeStateAccountEncoder = getStakeStateAccountEncoder; + exports2.getStakeStateCodec = getStakeStateCodec; + exports2.getStakeStateDecoder = getStakeStateDecoder; + exports2.getStakeStateEncoder = getStakeStateEncoder; + exports2.getStakeStateV2Codec = getStakeStateV2Codec; + exports2.getStakeStateV2Decoder = getStakeStateV2Decoder; + exports2.getStakeStateV2Encoder = getStakeStateV2Encoder; + exports2.getWithdrawDiscriminatorBytes = getWithdrawDiscriminatorBytes; + exports2.getWithdrawInstruction = getWithdrawInstruction; + exports2.getWithdrawInstructionDataCodec = getWithdrawInstructionDataCodec; + exports2.getWithdrawInstructionDataDecoder = getWithdrawInstructionDataDecoder; + exports2.getWithdrawInstructionDataEncoder = getWithdrawInstructionDataEncoder; + exports2.identifyStakeInstruction = identifyStakeInstruction; + exports2.isStakeError = isStakeError; + exports2.isStakeState = isStakeState; + exports2.isStakeStateV2 = isStakeStateV2; + exports2.parseAuthorizeCheckedInstruction = parseAuthorizeCheckedInstruction; + exports2.parseAuthorizeCheckedWithSeedInstruction = parseAuthorizeCheckedWithSeedInstruction; + exports2.parseAuthorizeInstruction = parseAuthorizeInstruction; + exports2.parseAuthorizeWithSeedInstruction = parseAuthorizeWithSeedInstruction; + exports2.parseDeactivateDelinquentInstruction = parseDeactivateDelinquentInstruction; + exports2.parseDeactivateInstruction = parseDeactivateInstruction; + exports2.parseDelegateStakeInstruction = parseDelegateStakeInstruction; + exports2.parseGetMinimumDelegationInstruction = parseGetMinimumDelegationInstruction; + exports2.parseInitializeCheckedInstruction = parseInitializeCheckedInstruction; + exports2.parseInitializeInstruction = parseInitializeInstruction; + exports2.parseMergeInstruction = parseMergeInstruction; + exports2.parseMoveLamportsInstruction = parseMoveLamportsInstruction; + exports2.parseMoveStakeInstruction = parseMoveStakeInstruction; + exports2.parseSetLockupCheckedInstruction = parseSetLockupCheckedInstruction; + exports2.parseSetLockupInstruction = parseSetLockupInstruction; + exports2.parseSplitInstruction = parseSplitInstruction; + exports2.parseWithdrawInstruction = parseWithdrawInstruction; + exports2.stakeState = stakeState; + exports2.stakeStateV2 = stakeStateV2; + } +}); + +// node_modules/@trezor/blockchain-link-types/lib/solana.js +var require_solana2 = __commonJS({ + "node_modules/@trezor/blockchain-link-types/lib/solana.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StakeState = void 0; + exports2.StakeState = { + Inactive: "inactive", + Activating: "activating", + Active: "active", + Deactivating: "deactivating", + Deactivated: "deactivated" + }; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/solana/utils/stakingAccounts.js +var require_stakingAccounts = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/solana/utils/stakingAccounts.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getSolanaStakingData = exports2.getDelegations = exports2.stakeAccountState = exports2.isStake = exports2.FILTER_OFFSET = exports2.FILTER_DATA_SIZE = exports2.STAKE_ACCOUNT_V2_SIZE = void 0; + var kit_1 = require_index_node34(); + var stake_1 = require_src5(); + var solana_1 = require_solana2(); + exports2.STAKE_ACCOUNT_V2_SIZE = 200; + exports2.FILTER_DATA_SIZE = 200n; + exports2.FILTER_OFFSET = 44n; + var EVERSTAKE_VOTER_PUBKEYS = ["9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF", "GkqYQysEGmuL6V2AJoNnWZUz2ZBGWhzQXsJiXm2CLKAN"]; + var isStake = (state) => state.__kind === "Stake"; + exports2.isStake = isStake; + var stakeAccountState = (account, currentEpoch) => { + const { + state + } = account; + if (!(0, exports2.isStake)(state)) { + return solana_1.StakeState.Inactive; + } + const { + activationEpoch, + deactivationEpoch + } = state.fields[1].delegation; + if (activationEpoch > currentEpoch) { + return solana_1.StakeState.Inactive; + } + if (activationEpoch === currentEpoch) { + if (deactivationEpoch === activationEpoch) return solana_1.StakeState.Inactive; + return solana_1.StakeState.Activating; + } + if (deactivationEpoch > currentEpoch) return solana_1.StakeState.Active; + if (deactivationEpoch === currentEpoch) return solana_1.StakeState.Deactivating; + return solana_1.StakeState.Deactivated; + }; + exports2.stakeAccountState = stakeAccountState; + var getDelegations = async (rpc, descriptor) => { + try { + const accounts = await rpc.getProgramAccounts(stake_1.STAKE_PROGRAM_ADDRESS, { + encoding: "base64", + filters: [{ + dataSize: exports2.FILTER_DATA_SIZE + }, { + memcmp: { + bytes: descriptor, + encoding: "base58", + offset: exports2.FILTER_OFFSET + } + }] + }).send(); + return accounts.map((account) => { + const parsedAccount = (0, kit_1.parseBase64RpcAccount)(account.pubkey, account.account); + return (0, stake_1.decodeStakeStateAccount)(parsedAccount); + }); + } catch { + throw new Error("Failed to fetch delegations"); + } + }; + exports2.getDelegations = getDelegations; + var getSolanaStakingData = async (rpc, descriptor, epoch) => { + const stakingAccounts = await (0, exports2.getDelegations)(rpc, descriptor); + return stakingAccounts.map((account) => { + const stakeAccount = account?.data; + if (!stakeAccount) return; + const stakeState = (0, exports2.stakeAccountState)(stakeAccount, BigInt(epoch)); + const { + state + } = account?.data ?? {}; + if (!(0, exports2.isStake)(state)) return; + if (state && "fields" in state) { + const { + fields + } = state; + const voterPubkey = fields[1]?.delegation?.voterPubkey; + if (!EVERSTAKE_VOTER_PUBKEYS.includes(voterPubkey)) return; + return { + rentExemptReserve: fields[0]?.rentExemptReserve.toString(), + stake: fields[1]?.delegation?.stake.toString(), + status: stakeState + }; + } + }).filter((account) => account !== void 0); + }; + exports2.getSolanaStakingData = getSolanaStakingData; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/solana/index.js +var require_solana3 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/solana/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Solana; + var kit_1 = require_index_node34(); + var token_1 = require_src2(); + var token_2022_1 = require_src3(); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var blockchain_link_utils_1 = require_lib19(); + var solana_1 = require_solana(); + var env_utils_1 = require_lib4(); + var utils_1 = require_lib(); + var baseWorker_1 = require_baseWorker(); + var fee_1 = require_fee(); + var getThrottledTransport_1 = require_getThrottledTransport(); + var stakingAccounts_1 = require_stakingAccounts(); + var THROTTLE_OPTIONS = { + maxRps: 4, + interval: 100 + }; + function nonNullable(value) { + return value !== null && value !== void 0; + } + var getAllSignatures = async (api, descriptor, fullHistory = false) => { + let lastSignature; + let keepFetching = true; + let allSignatures = []; + const defaultValueLimit = 100; + while (keepFetching) { + const signaturesInfos = await api.rpc.getSignaturesForAddress((0, kit_1.address)(descriptor), { + before: lastSignature?.signature, + limit: defaultValueLimit + }).send(); + const signatures = signaturesInfos.map((info) => ({ + signature: info.signature, + slot: info.slot + })); + lastSignature = signatures[signatures.length - 1]; + keepFetching = signatures.length === defaultValueLimit && fullHistory; + allSignatures = [...allSignatures, ...signatures]; + } + return allSignatures; + }; + var fetchTransactionPage = async (api, signatures) => (await Promise.all(signatures.map((signature) => api.rpc.getTransaction(signature, { + encoding: "jsonParsed", + maxSupportedTransactionVersion: 0, + commitment: "confirmed" + }).send()))).filter(nonNullable); + var isValidTransaction = (tx) => !!(tx && tx.meta && tx.transaction && tx.blockTime); + var pushTransaction = async (request) => { + const rawTx = request.payload.hex.startsWith("0x") ? request.payload.hex.slice(2) : request.payload.hex; + const api = await request.connect(); + const txByteArray = (0, kit_1.getBase16Encoder)().encode(rawTx); + const transaction = (0, kit_1.getTransactionDecoder)().decode(txByteArray); + (0, kit_1.assertTransactionIsFullySigned)(transaction); + const compiledMessage = (0, kit_1.getCompiledTransactionMessageDecoder)().decode(transaction.messageBytes); + const message = await (0, kit_1.decompileTransactionMessageFetchingLookupTables)(compiledMessage, api.rpc); + if ((0, kit_1.isDurableNonceTransaction)(message)) { + throw new Error("Unimplemented: Confirming durable nonce transactions"); + } + let transactionWithBlockhashLifetime = transaction; + if (message.lifetimeConstraint === void 0) { + const { + value: { + blockhash, + lastValidBlockHeight + } + } = await api.rpc.getLatestBlockhash({ + commitment: "confirmed" + }).send(); + transactionWithBlockhashLifetime = { + ...transactionWithBlockhashLifetime, + lifetimeConstraint: { + blockhash, + lastValidBlockHeight + } + }; + } else { + transactionWithBlockhashLifetime = { + ...transactionWithBlockhashLifetime, + lifetimeConstraint: message.lifetimeConstraint + }; + } + try { + const signature = (0, kit_1.getSignatureFromTransaction)(transaction); + const sendAndConfirmTransaction = (0, kit_1.sendAndConfirmTransactionFactory)(api); + await sendAndConfirmTransaction(transactionWithBlockhashLifetime, { + commitment: "confirmed", + skipPreflight: false + }); + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload: signature + }; + } catch (error) { + if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED)) { + throw new Error("Please make sure that you submit the transaction within 1 minute after signing."); + } + if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT) || (0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED) || (0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR)) { + throw new Error("Solana backend connection failure. The backend might be inaccessible or the connection is unstable."); + } + if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) && (0, kit_1.isSolanaError)(error.cause, kit_1.SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND)) { + throw new Error("The transaction has expired because too much time passed between signing and sending. Please try again."); + } + if ((0, kit_1.isSolanaError)(error)) { + throw new Error(`Solana error code: ${error.context.__code}. Please try again or contact support.`); + } + throw error; + } + }; + var getAccountInfo = async (request) => { + const { + payload + } = request; + const { + details = "basic" + } = payload; + const api = await request.connect(); + const publicKey = (0, kit_1.address)(payload.descriptor); + const { + value: accountInfo + } = await api.rpc.getAccountInfo(publicKey, { + encoding: "base64" + }).send(); + const tokenMetadata = await request.getTokenMetadata(); + const getTokenAccountsForProgram = (programPublicKey) => api.rpc.getTokenAccountsByOwner(publicKey, { + programId: (0, kit_1.address)(programPublicKey) + }, { + encoding: "jsonParsed" + }).send(); + const tokenAccounts = (await Promise.all(Object.values(solana_1.tokenProgramsInfo).map((programInfo) => getTokenAccountsForProgram(programInfo.publicKey)))).map((res) => res.value).flat(); + const recognisedWithBalance = tokenAccounts.filter((acc) => { + const info = acc.account.data.parsed?.info; + const mint = info?.mint; + const amount = info?.tokenAmount?.amount; + return mint && tokenMetadata[mint] && amount !== "0"; + }); + const recognizedAccountsPubkeys = recognisedWithBalance.map((a) => a.pubkey); + const getAllTxIds = async (tokenAccountPubkeys) => { + const sortedTokenAccountPubkeys = [...tokenAccountPubkeys].sort(); + const allAccounts = [payload.descriptor, ...sortedTokenAccountPubkeys]; + const allTxIds2 = details === "txs" || details === "txids" ? Array.from(new Set((await Promise.all(allAccounts.map((account2) => getAllSignatures(api, account2)))).flat().sort((a, b) => Number(b.slot - a.slot)).map((it) => it.signature))) : []; + return allTxIds2; + }; + const getEpoch = async () => { + const cachedEpoch = await request.state.cache.get("epoch"); + if (cachedEpoch) { + return cachedEpoch; + } + const deferred = (0, utils_1.createDeferred)(); + request.state.cache.set("epoch", deferred.promise, 36e5); + const { + epoch + } = await api.rpc.getEpochInfo().send(); + deferred.resolve(Number(epoch)); + return deferred.promise; + }; + let tokens = []; + if (tokenAccounts.length > 0) { + tokens = (0, solana_1.transformTokenInfo)(tokenAccounts, tokenMetadata); + } + if (details === "txids") { + const txids = await getAllTxIds(recognizedAccountsPubkeys); + const solEpoch = await getEpoch(); + const account2 = { + descriptor: payload.descriptor, + balance: "0", + availableBalance: "0", + empty: txids.length === 0, + history: { + total: txids.length, + unconfirmed: 0, + txids + }, + tokens, + misc: { + solEpoch + } + }; + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account2 + }; + } + const getATAOwnerAddress = async (address) => { + const { + value: accountInfo2 + } = await api.rpc.getAccountInfo(address, { + encoding: "jsonParsed" + }).send(); + if (!accountInfo2?.data || "parsed" in accountInfo2.data === false) { + return address; + } + return accountInfo2.data.parsed?.info?.owner ?? address; + }; + const getTransactionPage = async (txIds, tokenAccountsInfos2) => { + if (txIds.length === 0) { + return []; + } + const transactionsPage = await fetchTransactionPage(api, txIds); + const page = transactionsPage.filter(isValidTransaction).map((tx) => blockchain_link_utils_1.solanaUtils.transformTransaction(tx, payload.descriptor, tokenAccountsInfos2, tokenMetadata)).filter((tx) => !!tx); + const transactions = await Promise.all(page.map(async (tx) => { + const tokens2 = await Promise.all(tx.tokens.map(async (transfer) => { + const from = transfer.from !== payload.descriptor ? await getATAOwnerAddress((0, kit_1.address)(transfer.from)) : transfer.from; + const to = transfer.to !== payload.descriptor ? await getATAOwnerAddress((0, kit_1.address)(transfer.to)) : transfer.to; + return { + ...transfer, + from, + to + }; + })); + return { + ...tx, + tokens: tokens2 + }; + })); + return transactions; + }; + const allTxIds = await getAllTxIds(recognizedAccountsPubkeys); + const pageNumber = payload.page ? payload.page - 1 : 0; + const pageSize = payload.pageSize || 5; + const pageStartIndex = pageNumber * pageSize; + const pageEndIndex = Math.min(pageStartIndex + pageSize, allTxIds.length); + const txIdPage = allTxIds.slice(pageStartIndex, pageEndIndex); + const tokenAccountsInfos = tokenAccounts.map((a) => ({ + address: a.pubkey, + mint: a.account.data.parsed?.info?.mint, + decimals: a.account.data.parsed?.info?.tokenAmount?.decimals + })); + const transactionPage = details === "txs" ? await getTransactionPage(txIdPage, tokenAccountsInfos) : void 0; + const { + value: balance + } = await api.rpc.getBalance(publicKey).send(); + let misc; + if (!["basic", "tokens"].includes(details)) { + const solEpoch = await getEpoch(); + const solStakingAccounts = await (0, stakingAccounts_1.getSolanaStakingData)(api?.rpc, publicKey, solEpoch); + misc = { + solStakingAccounts, + solEpoch + }; + if (accountInfo) { + const [accountDataEncoded] = accountInfo.data; + const accountDataBytes = (0, kit_1.getBase64Encoder)().encode(accountDataEncoded); + const accountDataLength = BigInt(accountDataBytes.byteLength); + const rent = await api.rpc.getMinimumBalanceForRentExemption(accountDataLength).send(); + misc.rent = Number(rent); + } + } + const isAccountEmpty = !(allTxIds.length || balance || tokens.length); + const account = { + descriptor: payload.descriptor, + balance: balance.toString(), + availableBalance: balance.toString(), + empty: isAccountEmpty, + history: { + total: allTxIds.length, + unconfirmed: 0, + transactions: transactionPage, + txids: txIdPage + }, + page: transactionPage ? { + total: allTxIds.length, + index: pageNumber, + size: transactionPage.length + } : void 0, + tokens, + misc: { + ...misc, + owner: accountInfo?.owner + } + }; + const workerAccount = request.state.getAccount(payload.descriptor); + if (workerAccount) { + request.state.addAccounts([{ + ...workerAccount, + tokens + }]); + } + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account + }; + }; + var getInfo = async (request, isTestnet) => { + const api = await request.connect(); + const { + value: { + blockhash: blockHash, + lastValidBlockHeight: blockHeight + } + } = await api.rpc.getLatestBlockhash({ + commitment: "confirmed" + }).send(); + const serverInfo = { + testnet: isTestnet, + blockHeight: Number(blockHeight), + blockHash, + shortcut: isTestnet ? "dsol" : "sol", + network: isTestnet ? "dsol" : "sol", + url: api.clusterUrl, + name: "Solana", + version: "1", + decimals: 9 + }; + return { + type: constants_1.RESPONSES.GET_INFO, + payload: { + ...serverInfo + } + }; + }; + var getAccountProgramSize = (programName) => ({ + staking: stakingAccounts_1.STAKE_ACCOUNT_V2_SIZE, + "spl-token": (0, token_1.getTokenSize)(), + "spl-token-2022": (0, token_2022_1.getTokenSize)() + })[programName]; + var estimateFee = async (request) => { + const api = await request.connect(); + const { + data: messageHex, + newAccountProgramName + } = request.payload.specific ?? {}; + if (messageHex == null) { + throw new Error("Could not estimate fee for transaction."); + } + const transaction = (0, kit_1.pipe)(messageHex, (0, kit_1.getBase16Encoder)().encode, (0, kit_1.getTransactionDecoder)().decode); + const message = (0, kit_1.pipe)(transaction.messageBytes, (0, kit_1.getCompiledTransactionMessageDecoder)().decode); + const decompiledTransactionMessage = await (0, kit_1.decompileTransactionMessageFetchingLookupTables)(message, api.rpc); + const priorityFee = await (0, fee_1.getPriorityFee)(api.rpc, decompiledTransactionMessage, message, transaction.signatures); + const baseFee = await (0, fee_1.getBaseFee)(api.rpc, message); + const accountCreationFee = newAccountProgramName ? await api.rpc.getMinimumBalanceForRentExemption(BigInt(getAccountProgramSize(newAccountProgramName))).send() : BigInt(0); + const payload = [{ + feePerTx: new utils_1.BigNumber(baseFee.toString()).plus(priorityFee.fee).plus(accountCreationFee.toString()).toString(10), + feePerUnit: priorityFee.computeUnitPrice, + feeLimit: priorityFee.computeUnitLimit, + feePayer: decompiledTransactionMessage.feePayer.address + }]; + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload + }; + }; + var BLOCK_SUBSCRIBE_INTERVAL_MS = 5e4; + var subscribeBlock = async ({ + state, + connect, + post + }) => { + if (state.getSubscription("block")) return { + subscribed: true + }; + const api = await connect(); + const fetchBlock = async () => { + const { + value: { + blockhash: blockHash, + lastValidBlockHeight: blockHeight + } + } = await api.rpc.getLatestBlockhash({ + commitment: "confirmed" + }).send(); + if (blockHeight) { + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight: Number(blockHeight), + blockHash + } + } + }); + } + }; + fetchBlock(); + const interval = setInterval(fetchBlock, BLOCK_SUBSCRIBE_INTERVAL_MS); + state.addSubscription("block", interval); + return { + subscribed: true + }; + }; + var unsubscribeBlock = ({ + state + }) => { + if (!state.getSubscription("block")) return; + const interval = state.getSubscription("block"); + clearInterval(interval); + state.removeSubscription("block"); + }; + var extractTokenAccounts = (accounts, tokenMetadata) => accounts.flatMap((account) => account.tokens?.flatMap((token) => token.accounts?.filter((tokenAccount) => tokenAccount.balance !== "0" && tokenMetadata[token.contract]).map((tokenAccount) => ({ + descriptor: tokenAccount.publicKey + })) || []) || []); + var findTokenAccountOwner = (accounts, accountDescriptor) => accounts.find((account) => account.tokens?.find((token) => token.accounts?.find((tokenAccount) => tokenAccount.publicKey === accountDescriptor))); + var NEXT_ACCOUNT_SUBSCRIPTION_ID = 0; + var ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS = /* @__PURE__ */ new Map(); + function abortSubscription(id) { + const abortController = ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.get(id); + ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.delete(id); + abortController?.abort(); + } + var handleAccountNotification = async (context, accountNotifications, account) => { + const { + connect, + state, + post, + getTokenMetadata + } = context; + try { + for await (const _ of accountNotifications) { + const api = await connect(); + const [lastSignatureResponse] = await api.rpc.getSignaturesForAddress((0, kit_1.address)(account.descriptor), { + limit: 1 + }).send(); + const lastSignature = lastSignatureResponse?.signature; + if (!lastSignature) return; + const lastTx = await api.rpc.getTransaction(lastSignature, { + encoding: "jsonParsed", + maxSupportedTransactionVersion: 0, + commitment: "confirmed" + }).send(); + if (!lastTx || !isValidTransaction(lastTx)) { + return; + } + const tokenMetadata = await getTokenMetadata(); + const tx = blockchain_link_utils_1.solanaUtils.transformTransaction(lastTx, account.descriptor, [], tokenMetadata); + const descriptor = findTokenAccountOwner(state.getAccounts(), account.descriptor)?.descriptor || account.descriptor; + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "notification", + payload: { + descriptor, + tx + } + } + }); + } + } catch (error) { + if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) { + if (account.subscriptionId) abortSubscription(account.subscriptionId); + state.removeAccounts([account]); + context.onNetworkDisconnect(); + } + } + }; + var subscribeAccounts = async (context, accounts) => { + const { + connect, + state + } = context; + const api = await connect(); + const subscribedAccounts = state.getAccounts(); + const tokenMetadata = await context.getTokenMetadata(); + const tokenAccounts = extractTokenAccounts(accounts, tokenMetadata); + const newAccounts = [...accounts, ...tokenAccounts].filter((account) => !subscribedAccounts.some((subscribedAccount) => account.descriptor === subscribedAccount.descriptor)); + await Promise.all(newAccounts.map(async (a) => { + const abortController = new AbortController(); + const accountNotifications = await api.rpcSubscriptions.accountNotifications((0, kit_1.address)(a.descriptor), { + commitment: "confirmed" + }).subscribe({ + abortSignal: abortController.signal + }); + const subscriptionId = NEXT_ACCOUNT_SUBSCRIPTION_ID++; + ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.set(subscriptionId, abortController); + const account = { + ...a, + subscriptionId + }; + state.addAccounts([account]); + handleAccountNotification(context, accountNotifications, account); + })); + return { + subscribed: newAccounts.length > 0 + }; + }; + var unsubscribeAccounts = ({ + state + }, accounts = []) => { + const subscribedAccounts = state.getAccounts(); + accounts.forEach((a) => { + if (a.subscriptionId != null) { + abortSubscription(a.subscriptionId); + state.removeAccounts([a]); + } + a.tokens?.forEach((t) => { + t.accounts?.forEach((ta) => { + const tokenAccount = subscribedAccounts.find((sa) => sa.descriptor === ta.publicKey); + if (tokenAccount?.subscriptionId != null) { + abortSubscription(tokenAccount.subscriptionId); + state.removeAccounts([tokenAccount]); + } + }); + }); + }); + }; + var subscribe = async (request) => { + let response; + switch (request.payload.type) { + case "block": + response = await subscribeBlock(request); + break; + case "accounts": + response = await subscribeAccounts(request, request.payload.accounts); + break; + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: response + }; + }; + var unsubscribe = (request) => { + switch (request.payload.type) { + case "block": + unsubscribeBlock(request); + break; + case "accounts": { + unsubscribeAccounts(request, request.payload.accounts); + break; + } + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: { + subscribed: request.state.getAccounts().length > 0 + } + }; + }; + var onRequest = (request, isTestnet) => { + switch (request.type) { + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return getAccountInfo(request); + case constants_1.MESSAGES.GET_INFO: + return getInfo(request, isTestnet); + case constants_1.MESSAGES.PUSH_TRANSACTION: + return pushTransaction(request); + case constants_1.MESSAGES.ESTIMATE_FEE: + return estimateFee(request); + case constants_1.MESSAGES.SUBSCRIBE: + return subscribe(request); + case constants_1.MESSAGES.UNSUBSCRIBE: + return unsubscribe(request); + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var SolanaWorker = class extends baseWorker_1.BaseWorker { + isConnected(api) { + return !!api; + } + lazyTokens = (0, utils_1.createLazy)(() => blockchain_link_utils_1.solanaUtils.getTokenMetadata()); + isTestnet = false; + async tryConnect(url) { + const clusterUrl = (0, kit_1.mainnet)(url); + const transport = (0, kit_1.createDefaultRpcTransport)({ + url: clusterUrl, + headers: { + "User-Agent": `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}` + } + }); + const throttledTransport = (0, getThrottledTransport_1.getThrottledTransport)(transport, THROTTLE_OPTIONS); + const throttledRpc = (0, kit_1.createSolanaRpcFromTransport)(throttledTransport); + const api = { + clusterUrl, + rpc: throttledRpc, + rpcSubscriptions: (0, kit_1.createSolanaRpcSubscriptions)((0, kit_1.mainnet)(url.replace("http", "ws")), { + intervalMs: 60 * 60 * 1e3 + }) + }; + this.isTestnet = await api.rpc.getGenesisHash().send() !== "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"; + this.post({ + id: -1, + type: constants_1.RESPONSES.CONNECTED + }); + return api; + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + onNetworkDisconnect: () => { + if (this.api) { + this.post({ + id: -1, + type: constants_1.RESPONSES.DISCONNECTED, + payload: true + }); + } + this.disconnect(); + }, + post: (data) => this.post(data), + state: this.state, + getTokenMetadata: this.lazyTokens.getOrInit + }; + const response = await onRequest(request, this.isTestnet); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, error); + } + } + disconnect() { + if (!this.api) { + return; + } + this.state.getAccounts().forEach((a) => { + if (a.subscriptionId != null) { + abortSubscription(a.subscriptionId); + } + }); + if (this.state.getSubscription("block")) { + const interval = this.state.getSubscription("block"); + clearInterval(interval); + this.state.removeSubscription("block"); + } + this.api = void 0; + } + }; + function Solana() { + return new SolanaWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new SolanaWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/network.js +var require_network2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/network.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.NetworkError = void 0; + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t2) { + if (null === t2 || !_isNativeFunction(t2)) return t2; + if ("function" != typeof t2) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t2)) return r.get(t2); + r.set(t2, Wrapper); + } + function Wrapper() { + return _construct(t2, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t2); + }, _wrapNativeSuper(t); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + var NetworkError = exports2.NetworkError = function(_Error) { + function NetworkError2(message, response) { + var _this; + _classCallCheck(this, NetworkError2); + var trueProto = (this instanceof NetworkError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, NetworkError2, [message]); + _this.__proto__ = trueProto; + _this.constructor = NetworkError2; + _this.response = response; + return _this; + } + _inherits(NetworkError2, _Error); + return _createClass(NetworkError2, [{ + key: "getResponse", + value: function getResponse() { + return this.response; + } + }]); + }(_wrapNativeSuper(Error)); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/not_found.js +var require_not_found = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/not_found.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.NotFoundError = void 0; + var _network = require_network2(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var NotFoundError = exports2.NotFoundError = function(_NetworkError) { + function NotFoundError2(message, response) { + var _this; + _classCallCheck(this, NotFoundError2); + var trueProto = (this instanceof NotFoundError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, NotFoundError2, [message, response]); + _this.__proto__ = trueProto; + _this.constructor = NotFoundError2; + _this.name = "NotFoundError"; + return _this; + } + _inherits(NotFoundError2, _NetworkError); + return _createClass(NotFoundError2); + }(_network.NetworkError); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/bad_request.js +var require_bad_request = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/bad_request.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BadRequestError = void 0; + var _network = require_network2(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var BadRequestError = exports2.BadRequestError = function(_NetworkError) { + function BadRequestError2(message, response) { + var _this; + _classCallCheck(this, BadRequestError2); + var trueProto = (this instanceof BadRequestError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, BadRequestError2, [message, response]); + _this.__proto__ = trueProto; + _this.constructor = BadRequestError2; + _this.name = "BadRequestError"; + return _this; + } + _inherits(BadRequestError2, _NetworkError); + return _createClass(BadRequestError2); + }(_network.NetworkError); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/bad_response.js +var require_bad_response = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/bad_response.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BadResponseError = void 0; + var _network = require_network2(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var BadResponseError = exports2.BadResponseError = function(_NetworkError) { + function BadResponseError2(message, response) { + var _this; + _classCallCheck(this, BadResponseError2); + var trueProto = (this instanceof BadResponseError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, BadResponseError2, [message, response]); + _this.__proto__ = trueProto; + _this.constructor = BadResponseError2; + _this.name = "BadResponseError"; + return _this; + } + _inherits(BadResponseError2, _NetworkError); + return _createClass(BadResponseError2); + }(_network.NetworkError); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/account_requires_memo.js +var require_account_requires_memo = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/account_requires_memo.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AccountRequiresMemoError = void 0; + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t2) { + if (null === t2 || !_isNativeFunction(t2)) return t2; + if ("function" != typeof t2) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t2)) return r.get(t2); + r.set(t2, Wrapper); + } + function Wrapper() { + return _construct(t2, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t2); + }, _wrapNativeSuper(t); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + var AccountRequiresMemoError = exports2.AccountRequiresMemoError = function(_Error) { + function AccountRequiresMemoError2(message, accountId, operationIndex) { + var _this; + _classCallCheck(this, AccountRequiresMemoError2); + var trueProto = (this instanceof AccountRequiresMemoError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, AccountRequiresMemoError2, [message]); + _this.__proto__ = trueProto; + _this.constructor = AccountRequiresMemoError2; + _this.name = "AccountRequiresMemoError"; + _this.accountId = accountId; + _this.operationIndex = operationIndex; + return _this; + } + _inherits(AccountRequiresMemoError2, _Error); + return _createClass(AccountRequiresMemoError2); + }(_wrapNativeSuper(Error)); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/errors/index.js +var require_errors11 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/errors/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _network = require_network2(); + Object.keys(_network).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _network[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _network[key]; + } + }); + }); + var _not_found = require_not_found(); + Object.keys(_not_found).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _not_found[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _not_found[key]; + } + }); + }); + var _bad_request = require_bad_request(); + Object.keys(_bad_request).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _bad_request[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _bad_request[key]; + } + }); + }); + var _bad_response = require_bad_response(); + Object.keys(_bad_response).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _bad_response[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _bad_response[key]; + } + }); + }); + var _account_requires_memo = require_account_requires_memo(); + Object.keys(_account_requires_memo).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _account_requires_memo[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _account_requires_memo[key]; + } + }); + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/config.js +var require_config2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/config.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Config = void 0; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var defaultConfig = { + allowHttp: false, + timeout: 0 + }; + var config2 = _objectSpread({}, defaultConfig); + var Config = exports2.Config = function() { + function Config2() { + _classCallCheck(this, Config2); + } + return _createClass(Config2, null, [{ + key: "setAllowHttp", + value: function setAllowHttp(value) { + config2.allowHttp = value; + } + }, { + key: "setTimeout", + value: function setTimeout2(value) { + config2.timeout = value; + } + }, { + key: "isAllowHttp", + value: function isAllowHttp() { + return config2.allowHttp; + } + }, { + key: "getTimeout", + value: function getTimeout() { + return config2.timeout; + } + }, { + key: "setDefault", + value: function setDefault() { + config2 = _objectSpread({}, defaultConfig); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/utils.js +var require_utils25 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Utils = void 0; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Utils = exports2.Utils = function() { + function Utils2() { + _classCallCheck(this, Utils2); + } + return _createClass(Utils2, null, [{ + key: "validateTimebounds", + value: function validateTimebounds(transaction) { + var gracePeriod = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0; + if (!transaction.timeBounds) { + return false; + } + var now = Math.floor(Date.now() / 1e3); + var _transaction$timeBoun = transaction.timeBounds, minTime = _transaction$timeBoun.minTime, maxTime = _transaction$timeBoun.maxTime; + return now >= Number.parseInt(minTime, 10) - gracePeriod && now <= Number.parseInt(maxTime, 10) + gracePeriod; + } + }, { + key: "sleep", + value: function sleep(ms) { + return new Promise(function(resolve) { + return setTimeout(resolve, ms); + }); + } + }]); + }(); + } +}); + +// node_modules/toml/lib/parser.js +var require_parser = __commonJS({ + "node_modules/toml/lib/parser.js"(exports2, module2) { + module2.exports = function() { + function peg$subclass(child, parent) { + function ctor() { + this.constructor = child; + } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + function SyntaxError2(message, expected, found, offset, line, column) { + this.message = message; + this.expected = expected; + this.found = found; + this.offset = offset; + this.line = line; + this.column = column; + this.name = "SyntaxError"; + } + peg$subclass(SyntaxError2, Error); + function parse(input) { + var options = arguments.length > 1 ? arguments[1] : {}, peg$FAILED = {}, peg$startRuleFunctions = { start: peg$parsestart }, peg$startRuleFunction = peg$parsestart, peg$c0 = [], peg$c1 = function() { + return nodes; + }, peg$c2 = peg$FAILED, peg$c3 = "#", peg$c4 = { type: "literal", value: "#", description: '"#"' }, peg$c5 = void 0, peg$c6 = { type: "any", description: "any character" }, peg$c7 = "[", peg$c8 = { type: "literal", value: "[", description: '"["' }, peg$c9 = "]", peg$c10 = { type: "literal", value: "]", description: '"]"' }, peg$c11 = function(name) { + addNode(node("ObjectPath", name, line, column)); + }, peg$c12 = function(name) { + addNode(node("ArrayPath", name, line, column)); + }, peg$c13 = function(parts, name) { + return parts.concat(name); + }, peg$c14 = function(name) { + return [name]; + }, peg$c15 = function(name) { + return name; + }, peg$c16 = ".", peg$c17 = { type: "literal", value: ".", description: '"."' }, peg$c18 = "=", peg$c19 = { type: "literal", value: "=", description: '"="' }, peg$c20 = function(key, value) { + addNode(node("Assign", value, line, column, key)); + }, peg$c21 = function(chars) { + return chars.join(""); + }, peg$c22 = function(node2) { + return node2.value; + }, peg$c23 = '"""', peg$c24 = { type: "literal", value: '"""', description: '"\\"\\"\\""' }, peg$c25 = null, peg$c26 = function(chars) { + return node("String", chars.join(""), line, column); + }, peg$c27 = '"', peg$c28 = { type: "literal", value: '"', description: '"\\""' }, peg$c29 = "'''", peg$c30 = { type: "literal", value: "'''", description: `"'''"` }, peg$c31 = "'", peg$c32 = { type: "literal", value: "'", description: `"'"` }, peg$c33 = function(char) { + return char; + }, peg$c34 = function(char) { + return char; + }, peg$c35 = "\\", peg$c36 = { type: "literal", value: "\\", description: '"\\\\"' }, peg$c37 = function() { + return ""; + }, peg$c38 = "e", peg$c39 = { type: "literal", value: "e", description: '"e"' }, peg$c40 = "E", peg$c41 = { type: "literal", value: "E", description: '"E"' }, peg$c42 = function(left, right) { + return node("Float", parseFloat(left + "e" + right), line, column); + }, peg$c43 = function(text2) { + return node("Float", parseFloat(text2), line, column); + }, peg$c44 = "+", peg$c45 = { type: "literal", value: "+", description: '"+"' }, peg$c46 = function(digits) { + return digits.join(""); + }, peg$c47 = "-", peg$c48 = { type: "literal", value: "-", description: '"-"' }, peg$c49 = function(digits) { + return "-" + digits.join(""); + }, peg$c50 = function(text2) { + return node("Integer", parseInt(text2, 10), line, column); + }, peg$c51 = "true", peg$c52 = { type: "literal", value: "true", description: '"true"' }, peg$c53 = function() { + return node("Boolean", true, line, column); + }, peg$c54 = "false", peg$c55 = { type: "literal", value: "false", description: '"false"' }, peg$c56 = function() { + return node("Boolean", false, line, column); + }, peg$c57 = function() { + return node("Array", [], line, column); + }, peg$c58 = function(value) { + return node("Array", value ? [value] : [], line, column); + }, peg$c59 = function(values) { + return node("Array", values, line, column); + }, peg$c60 = function(values, value) { + return node("Array", values.concat(value), line, column); + }, peg$c61 = function(value) { + return value; + }, peg$c62 = ",", peg$c63 = { type: "literal", value: ",", description: '","' }, peg$c64 = "{", peg$c65 = { type: "literal", value: "{", description: '"{"' }, peg$c66 = "}", peg$c67 = { type: "literal", value: "}", description: '"}"' }, peg$c68 = function(values) { + return node("InlineTable", values, line, column); + }, peg$c69 = function(key, value) { + return node("InlineTableValue", value, line, column, key); + }, peg$c70 = function(digits) { + return "." + digits; + }, peg$c71 = function(date) { + return date.join(""); + }, peg$c72 = ":", peg$c73 = { type: "literal", value: ":", description: '":"' }, peg$c74 = function(time) { + return time.join(""); + }, peg$c75 = "T", peg$c76 = { type: "literal", value: "T", description: '"T"' }, peg$c77 = "Z", peg$c78 = { type: "literal", value: "Z", description: '"Z"' }, peg$c79 = function(date, time) { + return node("Date", /* @__PURE__ */ new Date(date + "T" + time + "Z"), line, column); + }, peg$c80 = function(date, time) { + return node("Date", /* @__PURE__ */ new Date(date + "T" + time), line, column); + }, peg$c81 = /^[ \t]/, peg$c82 = { type: "class", value: "[ \\t]", description: "[ \\t]" }, peg$c83 = "\n", peg$c84 = { type: "literal", value: "\n", description: '"\\n"' }, peg$c85 = "\r", peg$c86 = { type: "literal", value: "\r", description: '"\\r"' }, peg$c87 = /^[0-9a-f]/i, peg$c88 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" }, peg$c89 = /^[0-9]/, peg$c90 = { type: "class", value: "[0-9]", description: "[0-9]" }, peg$c91 = "_", peg$c92 = { type: "literal", value: "_", description: '"_"' }, peg$c93 = function() { + return ""; + }, peg$c94 = /^[A-Za-z0-9_\-]/, peg$c95 = { type: "class", value: "[A-Za-z0-9_\\-]", description: "[A-Za-z0-9_\\-]" }, peg$c96 = function(d) { + return d.join(""); + }, peg$c97 = '\\"', peg$c98 = { type: "literal", value: '\\"', description: '"\\\\\\""' }, peg$c99 = function() { + return '"'; + }, peg$c100 = "\\\\", peg$c101 = { type: "literal", value: "\\\\", description: '"\\\\\\\\"' }, peg$c102 = function() { + return "\\"; + }, peg$c103 = "\\b", peg$c104 = { type: "literal", value: "\\b", description: '"\\\\b"' }, peg$c105 = function() { + return "\b"; + }, peg$c106 = "\\t", peg$c107 = { type: "literal", value: "\\t", description: '"\\\\t"' }, peg$c108 = function() { + return " "; + }, peg$c109 = "\\n", peg$c110 = { type: "literal", value: "\\n", description: '"\\\\n"' }, peg$c111 = function() { + return "\n"; + }, peg$c112 = "\\f", peg$c113 = { type: "literal", value: "\\f", description: '"\\\\f"' }, peg$c114 = function() { + return "\f"; + }, peg$c115 = "\\r", peg$c116 = { type: "literal", value: "\\r", description: '"\\\\r"' }, peg$c117 = function() { + return "\r"; + }, peg$c118 = "\\U", peg$c119 = { type: "literal", value: "\\U", description: '"\\\\U"' }, peg$c120 = function(digits) { + return convertCodePoint(digits.join("")); + }, peg$c121 = "\\u", peg$c122 = { type: "literal", value: "\\u", description: '"\\\\u"' }, peg$currPos = 0, peg$reportedPos = 0, peg$cachedPos = 0, peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }, peg$maxFailPos = 0, peg$maxFailExpected = [], peg$silentFails = 0, peg$cache = {}, peg$result; + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error(`Can't start parsing from rule "` + options.startRule + '".'); + } + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + function text() { + return input.substring(peg$reportedPos, peg$currPos); + } + function offset() { + return peg$reportedPos; + } + function line() { + return peg$computePosDetails(peg$reportedPos).line; + } + function column() { + return peg$computePosDetails(peg$reportedPos).column; + } + function expected(description) { + throw peg$buildException( + null, + [{ type: "other", description }], + peg$reportedPos + ); + } + function error(message) { + throw peg$buildException(message, null, peg$reportedPos); + } + function peg$computePosDetails(pos) { + function advance(details, startPos, endPos) { + var p, ch; + for (p = startPos; p < endPos; p++) { + ch = input.charAt(p); + if (ch === "\n") { + if (!details.seenCR) { + details.line++; + } + details.column = 1; + details.seenCR = false; + } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") { + details.line++; + details.column = 1; + details.seenCR = true; + } else { + details.column++; + details.seenCR = false; + } + } + } + if (peg$cachedPos !== pos) { + if (peg$cachedPos > pos) { + peg$cachedPos = 0; + peg$cachedPosDetails = { line: 1, column: 1, seenCR: false }; + } + advance(peg$cachedPosDetails, peg$cachedPos, pos); + peg$cachedPos = pos; + } + return peg$cachedPosDetails; + } + function peg$fail(expected2) { + if (peg$currPos < peg$maxFailPos) { + return; + } + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + peg$maxFailExpected.push(expected2); + } + function peg$buildException(message, expected2, pos) { + function cleanupExpected(expected3) { + var i = 1; + expected3.sort(function(a, b) { + if (a.description < b.description) { + return -1; + } else if (a.description > b.description) { + return 1; + } else { + return 0; + } + }); + while (i < expected3.length) { + if (expected3[i - 1] === expected3[i]) { + expected3.splice(i, 1); + } else { + i++; + } + } + } + function buildMessage(expected3, found2) { + function stringEscape(s) { + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { + return "\\x0" + hex(ch); + }).replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { + return "\\x" + hex(ch); + }).replace(/[\u0180-\u0FFF]/g, function(ch) { + return "\\u0" + hex(ch); + }).replace(/[\u1080-\uFFFF]/g, function(ch) { + return "\\u" + hex(ch); + }); + } + var expectedDescs = new Array(expected3.length), expectedDesc, foundDesc, i; + for (i = 0; i < expected3.length; i++) { + expectedDescs[i] = expected3[i].description; + } + expectedDesc = expected3.length > 1 ? expectedDescs.slice(0, -1).join(", ") + " or " + expectedDescs[expected3.length - 1] : expectedDescs[0]; + foundDesc = found2 ? '"' + stringEscape(found2) + '"' : "end of input"; + return "Expected " + expectedDesc + " but " + foundDesc + " found."; + } + var posDetails = peg$computePosDetails(pos), found = pos < input.length ? input.charAt(pos) : null; + if (expected2 !== null) { + cleanupExpected(expected2); + } + return new SyntaxError2( + message !== null ? message : buildMessage(expected2, found), + expected2, + found, + pos, + posDetails.line, + posDetails.column + ); + } + function peg$parsestart() { + var s0, s1, s2; + var key = peg$currPos * 49 + 0, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseline(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseline(); + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c1(); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseline() { + var s0, s1, s2, s3, s4, s5, s6; + var key = peg$currPos * 49 + 1, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parseexpression(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parsecomment(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parsecomment(); + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseNL(); + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseNL(); + } + } else { + s5 = peg$c2; + } + if (s5 === peg$FAILED) { + s5 = peg$parseEOF(); + } + if (s5 !== peg$FAILED) { + s1 = [s1, s2, s3, s4, s5]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseNL(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseNL(); + } + } else { + s2 = peg$c2; + } + if (s2 === peg$FAILED) { + s2 = peg$parseEOF(); + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$parseNL(); + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseexpression() { + var s0; + var key = peg$currPos * 49 + 2, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parsecomment(); + if (s0 === peg$FAILED) { + s0 = peg$parsepath(); + if (s0 === peg$FAILED) { + s0 = peg$parsetablearray(); + if (s0 === peg$FAILED) { + s0 = peg$parseassignment(); + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsecomment() { + var s0, s1, s2, s3, s4, s5; + var key = peg$currPos * 49 + 3, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 35) { + s1 = peg$c3; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c4); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$currPos; + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parseNL(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOF(); + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = peg$c5; + } else { + peg$currPos = s4; + s4 = peg$c2; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + } else { + peg$currPos = s3; + s3 = peg$c2; + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$currPos; + s4 = peg$currPos; + peg$silentFails++; + s5 = peg$parseNL(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOF(); + } + peg$silentFails--; + if (s5 === peg$FAILED) { + s4 = peg$c5; + } else { + peg$currPos = s4; + s4 = peg$c2; + } + if (s4 !== peg$FAILED) { + if (input.length > peg$currPos) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s5 !== peg$FAILED) { + s4 = [s4, s5]; + s3 = s4; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + } else { + peg$currPos = s3; + s3 = peg$c2; + } + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsepath() { + var s0, s1, s2, s3, s4, s5; + var key = peg$currPos * 49 + 4, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseS(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseS(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parsetable_key(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseS(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseS(); + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s5 = peg$c9; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c11(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsetablearray() { + var s0, s1, s2, s3, s4, s5, s6, s7; + var key = peg$currPos * 49 + 5, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 91) { + s2 = peg$c7; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + s4 = peg$parsetable_key(); + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseS(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseS(); + } + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s6 = peg$c9; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s7 = peg$c9; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s7 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c12(s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsetable_key() { + var s0, s1, s2; + var key = peg$currPos * 49 + 6, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parsedot_ended_table_key_part(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsedot_ended_table_key_part(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsetable_key_part(); + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c13(s1, s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsetable_key_part(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c14(s1); + } + s0 = s1; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsetable_key_part() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 7, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsekey(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsequoted_key(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsedot_ended_table_key_part() { + var s0, s1, s2, s3, s4, s5, s6; + var key = peg$currPos * 49 + 8, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsekey(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseS(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseS(); + } + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsequoted_key(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseS(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseS(); + } + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c15(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseassignment() { + var s0, s1, s2, s3, s4, s5; + var key = peg$currPos * 49 + 9, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$parsekey(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseS(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseS(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c19); + } + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseS(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseS(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsevalue(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c20(s1, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsequoted_key(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseS(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseS(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s3 = peg$c18; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c19); + } + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseS(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseS(); + } + if (s4 !== peg$FAILED) { + s5 = peg$parsevalue(); + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c20(s1, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsekey() { + var s0, s1, s2; + var key = peg$currPos * 49 + 10, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseASCII_BASIC(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseASCII_BASIC(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c21(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsequoted_key() { + var s0, s1; + var key = peg$currPos * 49 + 11, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$parsedouble_quoted_single_line_string(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c22(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsesingle_quoted_single_line_string(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c22(s1); + } + s0 = s1; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsevalue() { + var s0; + var key = peg$currPos * 49 + 12, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parsestring(); + if (s0 === peg$FAILED) { + s0 = peg$parsedatetime(); + if (s0 === peg$FAILED) { + s0 = peg$parsefloat(); + if (s0 === peg$FAILED) { + s0 = peg$parseinteger(); + if (s0 === peg$FAILED) { + s0 = peg$parseboolean(); + if (s0 === peg$FAILED) { + s0 = peg$parsearray(); + if (s0 === peg$FAILED) { + s0 = peg$parseinline_table(); + } + } + } + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsestring() { + var s0; + var key = peg$currPos * 49 + 13, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parsedouble_quoted_multiline_string(); + if (s0 === peg$FAILED) { + s0 = peg$parsedouble_quoted_single_line_string(); + if (s0 === peg$FAILED) { + s0 = peg$parsesingle_quoted_multiline_string(); + if (s0 === peg$FAILED) { + s0 = peg$parsesingle_quoted_single_line_string(); + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsedouble_quoted_multiline_string() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 14, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c23) { + s1 = peg$c23; + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c24); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseNL(); + if (s2 === peg$FAILED) { + s2 = peg$c25; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parsemultiline_string_char(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsemultiline_string_char(); + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c23) { + s4 = peg$c23; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c24); + } + } + if (s4 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsedouble_quoted_single_line_string() { + var s0, s1, s2, s3; + var key = peg$currPos * 49 + 15, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c27; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c28); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsestring_char(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsestring_char(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c27; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c28); + } + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsesingle_quoted_multiline_string() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 16, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.substr(peg$currPos, 3) === peg$c29) { + s1 = peg$c29; + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c30); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseNL(); + if (s2 === peg$FAILED) { + s2 = peg$c25; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parsemultiline_literal_char(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsemultiline_literal_char(); + } + if (s3 !== peg$FAILED) { + if (input.substr(peg$currPos, 3) === peg$c29) { + s4 = peg$c29; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c30); + } + } + if (s4 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsesingle_quoted_single_line_string() { + var s0, s1, s2, s3; + var key = peg$currPos * 49 + 17, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 39) { + s1 = peg$c31; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c32); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseliteral_char(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseliteral_char(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 39) { + s3 = peg$c31; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c32); + } + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c26(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsestring_char() { + var s0, s1, s2; + var key = peg$currPos * 49 + 18, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parseESCAPED(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 34) { + s2 = peg$c27; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c28); + } + } + peg$silentFails--; + if (s2 === peg$FAILED) { + s1 = peg$c5; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + if (input.length > peg$currPos) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c33(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseliteral_char() { + var s0, s1, s2; + var key = peg$currPos * 49 + 19, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 39) { + s2 = peg$c31; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c32); + } + } + peg$silentFails--; + if (s2 === peg$FAILED) { + s1 = peg$c5; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + if (input.length > peg$currPos) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c33(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsemultiline_string_char() { + var s0, s1, s2; + var key = peg$currPos * 49 + 20, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parseESCAPED(); + if (s0 === peg$FAILED) { + s0 = peg$parsemultiline_string_delim(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c23) { + s2 = peg$c23; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c24); + } + } + peg$silentFails--; + if (s2 === peg$FAILED) { + s1 = peg$c5; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + if (input.length > peg$currPos) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c34(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsemultiline_string_delim() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 21, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c35; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c36); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseNL(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseNLS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseNLS(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c37(); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsemultiline_literal_char() { + var s0, s1, s2; + var key = peg$currPos * 49 + 22, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c29) { + s2 = peg$c29; + peg$currPos += 3; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c30); + } + } + peg$silentFails--; + if (s2 === peg$FAILED) { + s1 = peg$c5; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + if (input.length > peg$currPos) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c33(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsefloat() { + var s0, s1, s2, s3; + var key = peg$currPos * 49 + 23, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$parsefloat_text(); + if (s1 === peg$FAILED) { + s1 = peg$parseinteger_text(); + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 101) { + s2 = peg$c38; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c39); + } + } + if (s2 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 69) { + s2 = peg$c40; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c41); + } + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseinteger_text(); + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c42(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsefloat_text(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c43(s1); + } + s0 = s1; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsefloat_text() { + var s0, s1, s2, s3, s4, s5; + var key = peg$currPos * 49 + 24, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 43) { + s1 = peg$c44; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c45); + } + } + if (s1 === peg$FAILED) { + s1 = peg$c25; + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parseDIGITS(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseDIGITS(); + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c46(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s1 = peg$c47; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c48); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parseDIGITS(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseDIGITS(); + if (s5 !== peg$FAILED) { + s3 = [s3, s4, s5]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c49(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseinteger() { + var s0, s1; + var key = peg$currPos * 49 + 25, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$parseinteger_text(); + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c50(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseinteger_text() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 26, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 43) { + s1 = peg$c44; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c45); + } + } + if (s1 === peg$FAILED) { + s1 = peg$c25; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseDIGIT_OR_UNDER(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseDIGIT_OR_UNDER(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = peg$c5; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c46(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 45) { + s1 = peg$c47; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c48); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseDIGIT_OR_UNDER(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseDIGIT_OR_UNDER(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 46) { + s4 = peg$c16; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = peg$c5; + } else { + peg$currPos = s3; + s3 = peg$c2; + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c49(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseboolean() { + var s0, s1; + var key = peg$currPos * 49 + 27, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.substr(peg$currPos, 4) === peg$c51) { + s1 = peg$c51; + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c52); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c53(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 5) === peg$c54) { + s1 = peg$c54; + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c55); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c56(); + } + s0 = s1; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsearray() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 28, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsearray_sep(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsearray_sep(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s3 = peg$c9; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c57(); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parsearray_value(); + if (s2 === peg$FAILED) { + s2 = peg$c25; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s3 = peg$c9; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c58(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsearray_value_list(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsearray_value_list(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s3 = peg$c9; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c59(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c7; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c8); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parsearray_value_list(); + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parsearray_value_list(); + } + } else { + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + s3 = peg$parsearray_value(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s4 = peg$c9; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c10); + } + } + if (s4 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c60(s2, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsearray_value() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 29, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parsearray_sep(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsearray_sep(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsevalue(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parsearray_sep(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsearray_sep(); + } + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsearray_value_list() { + var s0, s1, s2, s3, s4, s5, s6; + var key = peg$currPos * 49 + 30, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parsearray_sep(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parsearray_sep(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsevalue(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parsearray_sep(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parsearray_sep(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c62; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c63); + } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parsearray_sep(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parsearray_sep(); + } + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c61(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsearray_sep() { + var s0; + var key = peg$currPos * 49 + 31, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parseS(); + if (s0 === peg$FAILED) { + s0 = peg$parseNL(); + if (s0 === peg$FAILED) { + s0 = peg$parsecomment(); + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseinline_table() { + var s0, s1, s2, s3, s4, s5; + var key = peg$currPos * 49 + 32, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c64; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c65); + } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseS(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseS(); + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseinline_table_assignment(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseinline_table_assignment(); + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseS(); + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseS(); + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c66; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c67); + } + } + if (s5 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c68(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseinline_table_assignment() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + var key = peg$currPos * 49 + 33, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsekey(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c19); + } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseS(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseS(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parsevalue(); + if (s6 !== peg$FAILED) { + s7 = []; + s8 = peg$parseS(); + while (s8 !== peg$FAILED) { + s7.push(s8); + s8 = peg$parseS(); + } + if (s7 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s8 = peg$c62; + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c63); + } + } + if (s8 !== peg$FAILED) { + s9 = []; + s10 = peg$parseS(); + while (s10 !== peg$FAILED) { + s9.push(s10); + s10 = peg$parseS(); + } + if (s9 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c69(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = []; + s2 = peg$parseS(); + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseS(); + } + if (s1 !== peg$FAILED) { + s2 = peg$parsekey(); + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseS(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseS(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s4 = peg$c18; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c19); + } + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseS(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseS(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parsevalue(); + if (s6 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c69(s2, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsesecfragment() { + var s0, s1, s2; + var key = peg$currPos * 49 + 34, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 46) { + s1 = peg$c16; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c17); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseDIGITS(); + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c70(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsedate() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11; + var key = peg$currPos * 49 + 35, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseDIGIT_OR_UNDER(); + if (s2 !== peg$FAILED) { + s3 = peg$parseDIGIT_OR_UNDER(); + if (s3 !== peg$FAILED) { + s4 = peg$parseDIGIT_OR_UNDER(); + if (s4 !== peg$FAILED) { + s5 = peg$parseDIGIT_OR_UNDER(); + if (s5 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s6 = peg$c47; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c48); + } + } + if (s6 !== peg$FAILED) { + s7 = peg$parseDIGIT_OR_UNDER(); + if (s7 !== peg$FAILED) { + s8 = peg$parseDIGIT_OR_UNDER(); + if (s8 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s9 = peg$c47; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c48); + } + } + if (s9 !== peg$FAILED) { + s10 = peg$parseDIGIT_OR_UNDER(); + if (s10 !== peg$FAILED) { + s11 = peg$parseDIGIT_OR_UNDER(); + if (s11 !== peg$FAILED) { + s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c71(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsetime() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + var key = peg$currPos * 49 + 36, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseDIGIT_OR_UNDER(); + if (s2 !== peg$FAILED) { + s3 = peg$parseDIGIT_OR_UNDER(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c72; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c73); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseDIGIT_OR_UNDER(); + if (s5 !== peg$FAILED) { + s6 = peg$parseDIGIT_OR_UNDER(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s7 = peg$c72; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c73); + } + } + if (s7 !== peg$FAILED) { + s8 = peg$parseDIGIT_OR_UNDER(); + if (s8 !== peg$FAILED) { + s9 = peg$parseDIGIT_OR_UNDER(); + if (s9 !== peg$FAILED) { + s10 = peg$parsesecfragment(); + if (s10 === peg$FAILED) { + s10 = peg$c25; + } + if (s10 !== peg$FAILED) { + s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c74(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsetime_with_offset() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16; + var key = peg$currPos * 49 + 37, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$currPos; + s2 = peg$parseDIGIT_OR_UNDER(); + if (s2 !== peg$FAILED) { + s3 = peg$parseDIGIT_OR_UNDER(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s4 = peg$c72; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c73); + } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseDIGIT_OR_UNDER(); + if (s5 !== peg$FAILED) { + s6 = peg$parseDIGIT_OR_UNDER(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s7 = peg$c72; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c73); + } + } + if (s7 !== peg$FAILED) { + s8 = peg$parseDIGIT_OR_UNDER(); + if (s8 !== peg$FAILED) { + s9 = peg$parseDIGIT_OR_UNDER(); + if (s9 !== peg$FAILED) { + s10 = peg$parsesecfragment(); + if (s10 === peg$FAILED) { + s10 = peg$c25; + } + if (s10 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 45) { + s11 = peg$c47; + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c48); + } + } + if (s11 === peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 43) { + s11 = peg$c44; + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c45); + } + } + } + if (s11 !== peg$FAILED) { + s12 = peg$parseDIGIT_OR_UNDER(); + if (s12 !== peg$FAILED) { + s13 = peg$parseDIGIT_OR_UNDER(); + if (s13 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 58) { + s14 = peg$c72; + peg$currPos++; + } else { + s14 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c73); + } + } + if (s14 !== peg$FAILED) { + s15 = peg$parseDIGIT_OR_UNDER(); + if (s15 !== peg$FAILED) { + s16 = peg$parseDIGIT_OR_UNDER(); + if (s16 !== peg$FAILED) { + s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + } else { + peg$currPos = s1; + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c74(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parsedatetime() { + var s0, s1, s2, s3, s4; + var key = peg$currPos * 49 + 38, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = peg$parsedate(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 84) { + s2 = peg$c75; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c76); + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsetime(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 90) { + s4 = peg$c77; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c78); + } + } + if (s4 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c79(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parsedate(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 84) { + s2 = peg$c75; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c76); + } + } + if (s2 !== peg$FAILED) { + s3 = peg$parsetime_with_offset(); + if (s3 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c80(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseS() { + var s0; + var key = peg$currPos * 49 + 39, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + if (peg$c81.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c82); + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseNL() { + var s0, s1, s2; + var key = peg$currPos * 49 + 40, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + if (input.charCodeAt(peg$currPos) === 10) { + s0 = peg$c83; + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c84); + } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 13) { + s1 = peg$c85; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c86); + } + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 10) { + s2 = peg$c83; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c84); + } + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseNLS() { + var s0; + var key = peg$currPos * 49 + 41, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$parseNL(); + if (s0 === peg$FAILED) { + s0 = peg$parseS(); + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseEOF() { + var s0, s1; + var key = peg$currPos * 49 + 42, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + peg$silentFails++; + if (input.length > peg$currPos) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c6); + } + } + peg$silentFails--; + if (s1 === peg$FAILED) { + s0 = peg$c5; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseHEX() { + var s0; + var key = peg$currPos * 49 + 43, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + if (peg$c87.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c88); + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseDIGIT_OR_UNDER() { + var s0, s1; + var key = peg$currPos * 49 + 44, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + if (peg$c89.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c90); + } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 95) { + s1 = peg$c91; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c92); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c93(); + } + s0 = s1; + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseASCII_BASIC() { + var s0; + var key = peg$currPos * 49 + 45, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + if (peg$c94.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c95); + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseDIGITS() { + var s0, s1, s2; + var key = peg$currPos * 49 + 46, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + s1 = []; + s2 = peg$parseDIGIT_OR_UNDER(); + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + s2 = peg$parseDIGIT_OR_UNDER(); + } + } else { + s1 = peg$c2; + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c96(s1); + } + s0 = s1; + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseESCAPED() { + var s0, s1; + var key = peg$currPos * 49 + 47, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c97) { + s1 = peg$c97; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c98); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c99(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c100) { + s1 = peg$c100; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c101); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c102(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c103) { + s1 = peg$c103; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c104); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c105(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c106) { + s1 = peg$c106; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c107); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c108(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c109) { + s1 = peg$c109; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c110); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c111(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c112) { + s1 = peg$c112; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c113); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c114(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c115) { + s1 = peg$c115; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c116); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c117(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$parseESCAPED_UNICODE(); + } + } + } + } + } + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + function peg$parseESCAPED_UNICODE() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + var key = peg$currPos * 49 + 48, cached = peg$cache[key]; + if (cached) { + peg$currPos = cached.nextPos; + return cached.result; + } + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c118) { + s1 = peg$c118; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c119); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parseHEX(); + if (s3 !== peg$FAILED) { + s4 = peg$parseHEX(); + if (s4 !== peg$FAILED) { + s5 = peg$parseHEX(); + if (s5 !== peg$FAILED) { + s6 = peg$parseHEX(); + if (s6 !== peg$FAILED) { + s7 = peg$parseHEX(); + if (s7 !== peg$FAILED) { + s8 = peg$parseHEX(); + if (s8 !== peg$FAILED) { + s9 = peg$parseHEX(); + if (s9 !== peg$FAILED) { + s10 = peg$parseHEX(); + if (s10 !== peg$FAILED) { + s3 = [s3, s4, s5, s6, s7, s8, s9, s10]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c120(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c121) { + s1 = peg$c121; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c122); + } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = peg$parseHEX(); + if (s3 !== peg$FAILED) { + s4 = peg$parseHEX(); + if (s4 !== peg$FAILED) { + s5 = peg$parseHEX(); + if (s5 !== peg$FAILED) { + s6 = peg$parseHEX(); + if (s6 !== peg$FAILED) { + s3 = [s3, s4, s5, s6]; + s2 = s3; + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + } else { + peg$currPos = s2; + s2 = peg$c2; + } + if (s2 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c120(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } else { + peg$currPos = s0; + s0 = peg$c2; + } + } + peg$cache[key] = { nextPos: peg$currPos, result: s0 }; + return s0; + } + var nodes = []; + function genError(err2, line2, col) { + var ex = new Error(err2); + ex.line = line2; + ex.column = col; + throw ex; + } + function addNode(node2) { + nodes.push(node2); + } + function node(type, value, line2, column2, key) { + var obj = { type, value, line: line2(), column: column2() }; + if (key) obj.key = key; + return obj; + } + function convertCodePoint(str, line2, col) { + var num = parseInt("0x" + str); + if (!isFinite(num) || Math.floor(num) != num || num < 0 || num > 1114111 || num > 55295 && num < 57344) { + genError("Invalid Unicode escape code: " + str, line2, col); + } else { + return fromCodePoint(num); + } + } + function fromCodePoint() { + var MAX_SIZE = 16384; + var codeUnits = []; + var highSurrogate; + var lowSurrogate; + var index = -1; + var length = arguments.length; + if (!length) { + return ""; + } + var result = ""; + while (++index < length) { + var codePoint = Number(arguments[index]); + if (codePoint <= 65535) { + codeUnits.push(codePoint); + } else { + codePoint -= 65536; + highSurrogate = (codePoint >> 10) + 55296; + lowSurrogate = codePoint % 1024 + 56320; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 == length || codeUnits.length > MAX_SIZE) { + result += String.fromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + } + peg$result = peg$startRuleFunction(); + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail({ type: "end", description: "end of input" }); + } + throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos); + } + } + return { + SyntaxError: SyntaxError2, + parse + }; + }(); + } +}); + +// node_modules/toml/lib/compiler.js +var require_compiler = __commonJS({ + "node_modules/toml/lib/compiler.js"(exports2, module2) { + "use strict"; + function compile(nodes) { + var assignedPaths = []; + var valueAssignments = []; + var currentPath = ""; + var data = /* @__PURE__ */ Object.create(null); + var context = data; + var arrayMode = false; + return reduce(nodes); + function reduce(nodes2) { + var node; + for (var i = 0; i < nodes2.length; i++) { + node = nodes2[i]; + switch (node.type) { + case "Assign": + assign(node); + break; + case "ObjectPath": + setPath(node); + break; + case "ArrayPath": + addTableArray(node); + break; + } + } + return data; + } + function genError(err2, line, col) { + var ex = new Error(err2); + ex.line = line; + ex.column = col; + throw ex; + } + function assign(node) { + var key = node.key; + var value = node.value; + var line = node.line; + var column = node.column; + var fullPath; + if (currentPath) { + fullPath = currentPath + "." + key; + } else { + fullPath = key; + } + if (typeof context[key] !== "undefined") { + genError("Cannot redefine existing key '" + fullPath + "'.", line, column); + } + context[key] = reduceValueNode(value); + if (!pathAssigned(fullPath)) { + assignedPaths.push(fullPath); + valueAssignments.push(fullPath); + } + } + function pathAssigned(path2) { + return assignedPaths.indexOf(path2) !== -1; + } + function reduceValueNode(node) { + if (node.type === "Array") { + return reduceArrayWithTypeChecking(node.value); + } else if (node.type === "InlineTable") { + return reduceInlineTableNode(node.value); + } else { + return node.value; + } + } + function reduceInlineTableNode(values) { + var obj = /* @__PURE__ */ Object.create(null); + for (var i = 0; i < values.length; i++) { + var val = values[i]; + if (val.value.type === "InlineTable") { + obj[val.key] = reduceInlineTableNode(val.value.value); + } else if (val.type === "InlineTableValue") { + obj[val.key] = reduceValueNode(val.value); + } + } + return obj; + } + function setPath(node) { + var path2 = node.value; + var quotedPath = path2.map(quoteDottedString).join("."); + var line = node.line; + var column = node.column; + if (pathAssigned(quotedPath)) { + genError("Cannot redefine existing key '" + path2 + "'.", line, column); + } + assignedPaths.push(quotedPath); + context = deepRef(data, path2, /* @__PURE__ */ Object.create(null), line, column); + currentPath = path2; + } + function addTableArray(node) { + var path2 = node.value; + var quotedPath = path2.map(quoteDottedString).join("."); + var line = node.line; + var column = node.column; + if (!pathAssigned(quotedPath)) { + assignedPaths.push(quotedPath); + } + assignedPaths = assignedPaths.filter(function(p) { + return p.indexOf(quotedPath) !== 0; + }); + assignedPaths.push(quotedPath); + context = deepRef(data, path2, [], line, column); + currentPath = quotedPath; + if (context instanceof Array) { + var newObj = /* @__PURE__ */ Object.create(null); + context.push(newObj); + context = newObj; + } else { + genError("Cannot redefine existing key '" + path2 + "'.", line, column); + } + } + function deepRef(start, keys, value, line, column) { + var traversed = []; + var traversedPath = ""; + var path2 = keys.join("."); + var ctx = start; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + traversed.push(key); + traversedPath = traversed.join("."); + if (typeof ctx[key] === "undefined") { + if (i === keys.length - 1) { + ctx[key] = value; + } else { + ctx[key] = /* @__PURE__ */ Object.create(null); + } + } else if (i !== keys.length - 1 && valueAssignments.indexOf(traversedPath) > -1) { + genError("Cannot redefine existing key '" + traversedPath + "'.", line, column); + } + ctx = ctx[key]; + if (ctx instanceof Array && ctx.length && i < keys.length - 1) { + ctx = ctx[ctx.length - 1]; + } + } + return ctx; + } + function reduceArrayWithTypeChecking(array) { + var firstType = null; + for (var i = 0; i < array.length; i++) { + var node = array[i]; + if (firstType === null) { + firstType = node.type; + } else { + if (node.type !== firstType) { + genError("Cannot add value of type " + node.type + " to array of type " + firstType + ".", node.line, node.column); + } + } + } + return array.map(reduceValueNode); + } + function quoteDottedString(str) { + if (str.indexOf(".") > -1) { + return '"' + str + '"'; + } else { + return str; + } + } + } + module2.exports = { + compile + }; + } +}); + +// node_modules/toml/index.js +var require_toml = __commonJS({ + "node_modules/toml/index.js"(exports2, module2) { + var parser = require_parser(); + var compiler = require_compiler(); + module2.exports = { + parse: function(input) { + var nodes = parser.parse(input.toString()); + return compiler.compile(nodes); + } + }; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/http-client/types.js +var require_types6 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/http-client/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CancelToken = void 0; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var CancelToken = exports2.CancelToken = function() { + function CancelToken2(executor) { + var _this = this; + _classCallCheck(this, CancelToken2); + var resolvePromise; + this.promise = new Promise(function(resolve) { + resolvePromise = resolve; + }); + executor(function(reason) { + _this.reason = reason; + resolvePromise(); + }); + } + return _createClass(CancelToken2, [{ + key: "throwIfRequested", + value: function throwIfRequested() { + if (this.reason) { + throw new Error(this.reason); + } + } + }]); + }(); + } +}); + +// node_modules/delayed-stream/lib/delayed_stream.js +var require_delayed_stream = __commonJS({ + "node_modules/delayed-stream/lib/delayed_stream.js"(exports2, module2) { + var Stream = __require("stream").Stream; + var util = __require("util"); + module2.exports = DelayedStream; + function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; + } + util.inherits(DelayedStream, Stream); + DelayedStream.create = function(source, options) { + var delayedStream = new this(); + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + delayedStream.source = source; + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + source.on("error", function() { + }); + if (delayedStream.pauseStream) { + source.pause(); + } + return delayedStream; + }; + Object.defineProperty(DelayedStream.prototype, "readable", { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } + }); + DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); + }; + DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } + this.source.resume(); + }; + DelayedStream.prototype.pause = function() { + this.source.pause(); + }; + DelayedStream.prototype.release = function() { + this._released = true; + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; + }; + DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; + }; + DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } + if (args[0] === "data") { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } + this._bufferedEvents.push(args); + }; + DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } + if (this.dataSize <= this.maxDataSize) { + return; + } + this._maxDataSizeExceeded = true; + var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; + this.emit("error", new Error(message)); + }; + } +}); + +// node_modules/combined-stream/lib/combined_stream.js +var require_combined_stream = __commonJS({ + "node_modules/combined-stream/lib/combined_stream.js"(exports2, module2) { + var util = __require("util"); + var Stream = __require("stream").Stream; + var DelayedStream = require_delayed_stream(); + module2.exports = CombinedStream; + function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; + } + util.inherits(CombinedStream, Stream); + CombinedStream.create = function(options) { + var combinedStream = new this(); + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; + } + return combinedStream; + }; + CombinedStream.isStreamLike = function(stream) { + return typeof stream !== "function" && typeof stream !== "string" && typeof stream !== "boolean" && typeof stream !== "number" && !Buffer.isBuffer(stream); + }; + CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams + }); + stream.on("data", this._checkDataSize.bind(this)); + stream = newStream; + } + this._handleErrors(stream); + if (this.pauseStreams) { + stream.pause(); + } + } + this._streams.push(stream); + return this; + }; + CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; + }; + CombinedStream.prototype._getNext = function() { + this._currentStream = null; + if (this._insideLoop) { + this._pendingNext = true; + return; + } + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } + }; + CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); + if (typeof stream == "undefined") { + this.end(); + return; + } + if (typeof stream !== "function") { + this._pipeNext(stream); + return; + } + var getStream = stream; + getStream(function(stream2) { + var isStreamLike = CombinedStream.isStreamLike(stream2); + if (isStreamLike) { + stream2.on("data", this._checkDataSize.bind(this)); + this._handleErrors(stream2); + } + this._pipeNext(stream2); + }.bind(this)); + }; + CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on("end", this._getNext.bind(this)); + stream.pipe(this, { end: false }); + return; + } + var value = stream; + this.write(value); + this._getNext(); + }; + CombinedStream.prototype._handleErrors = function(stream) { + var self2 = this; + stream.on("error", function(err2) { + self2._emitError(err2); + }); + }; + CombinedStream.prototype.write = function(data) { + this.emit("data", data); + }; + CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } + if (this.pauseStreams && this._currentStream && typeof this._currentStream.pause == "function") this._currentStream.pause(); + this.emit("pause"); + }; + CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } + if (this.pauseStreams && this._currentStream && typeof this._currentStream.resume == "function") this._currentStream.resume(); + this.emit("resume"); + }; + CombinedStream.prototype.end = function() { + this._reset(); + this.emit("end"); + }; + CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit("close"); + }; + CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; + }; + CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } + var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded."; + this._emitError(new Error(message)); + }; + CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; + var self2 = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } + self2.dataSize += stream.dataSize; + }); + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } + }; + CombinedStream.prototype._emitError = function(err2) { + this._reset(); + this.emit("error", err2); + }; + } +}); + +// node_modules/mime-db/db.json +var require_db = __commonJS({ + "node_modules/mime-db/db.json"(exports2, module2) { + module2.exports = { + "application/1d-interleaved-parityfec": { + source: "iana" + }, + "application/3gpdash-qoe-report+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/3gpp-ims+xml": { + source: "iana", + compressible: true + }, + "application/3gpphal+json": { + source: "iana", + compressible: true + }, + "application/3gpphalforms+json": { + source: "iana", + compressible: true + }, + "application/a2l": { + source: "iana" + }, + "application/ace+cbor": { + source: "iana" + }, + "application/activemessage": { + source: "iana" + }, + "application/activity+json": { + source: "iana", + compressible: true + }, + "application/alto-costmap+json": { + source: "iana", + compressible: true + }, + "application/alto-costmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-directory+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcost+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointcostparams+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointprop+json": { + source: "iana", + compressible: true + }, + "application/alto-endpointpropparams+json": { + source: "iana", + compressible: true + }, + "application/alto-error+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmap+json": { + source: "iana", + compressible: true + }, + "application/alto-networkmapfilter+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamcontrol+json": { + source: "iana", + compressible: true + }, + "application/alto-updatestreamparams+json": { + source: "iana", + compressible: true + }, + "application/aml": { + source: "iana" + }, + "application/andrew-inset": { + source: "iana", + extensions: ["ez"] + }, + "application/applefile": { + source: "iana" + }, + "application/applixware": { + source: "apache", + extensions: ["aw"] + }, + "application/at+jwt": { + source: "iana" + }, + "application/atf": { + source: "iana" + }, + "application/atfx": { + source: "iana" + }, + "application/atom+xml": { + source: "iana", + compressible: true, + extensions: ["atom"] + }, + "application/atomcat+xml": { + source: "iana", + compressible: true, + extensions: ["atomcat"] + }, + "application/atomdeleted+xml": { + source: "iana", + compressible: true, + extensions: ["atomdeleted"] + }, + "application/atomicmail": { + source: "iana" + }, + "application/atomsvc+xml": { + source: "iana", + compressible: true, + extensions: ["atomsvc"] + }, + "application/atsc-dwd+xml": { + source: "iana", + compressible: true, + extensions: ["dwd"] + }, + "application/atsc-dynamic-event-message": { + source: "iana" + }, + "application/atsc-held+xml": { + source: "iana", + compressible: true, + extensions: ["held"] + }, + "application/atsc-rdt+json": { + source: "iana", + compressible: true + }, + "application/atsc-rsat+xml": { + source: "iana", + compressible: true, + extensions: ["rsat"] + }, + "application/atxml": { + source: "iana" + }, + "application/auth-policy+xml": { + source: "iana", + compressible: true + }, + "application/bacnet-xdd+zip": { + source: "iana", + compressible: false + }, + "application/batch-smtp": { + source: "iana" + }, + "application/bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/beep+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/calendar+json": { + source: "iana", + compressible: true + }, + "application/calendar+xml": { + source: "iana", + compressible: true, + extensions: ["xcs"] + }, + "application/call-completion": { + source: "iana" + }, + "application/cals-1840": { + source: "iana" + }, + "application/captive+json": { + source: "iana", + compressible: true + }, + "application/cbor": { + source: "iana" + }, + "application/cbor-seq": { + source: "iana" + }, + "application/cccex": { + source: "iana" + }, + "application/ccmp+xml": { + source: "iana", + compressible: true + }, + "application/ccxml+xml": { + source: "iana", + compressible: true, + extensions: ["ccxml"] + }, + "application/cdfx+xml": { + source: "iana", + compressible: true, + extensions: ["cdfx"] + }, + "application/cdmi-capability": { + source: "iana", + extensions: ["cdmia"] + }, + "application/cdmi-container": { + source: "iana", + extensions: ["cdmic"] + }, + "application/cdmi-domain": { + source: "iana", + extensions: ["cdmid"] + }, + "application/cdmi-object": { + source: "iana", + extensions: ["cdmio"] + }, + "application/cdmi-queue": { + source: "iana", + extensions: ["cdmiq"] + }, + "application/cdni": { + source: "iana" + }, + "application/cea": { + source: "iana" + }, + "application/cea-2018+xml": { + source: "iana", + compressible: true + }, + "application/cellml+xml": { + source: "iana", + compressible: true + }, + "application/cfw": { + source: "iana" + }, + "application/city+json": { + source: "iana", + compressible: true + }, + "application/clr": { + source: "iana" + }, + "application/clue+xml": { + source: "iana", + compressible: true + }, + "application/clue_info+xml": { + source: "iana", + compressible: true + }, + "application/cms": { + source: "iana" + }, + "application/cnrp+xml": { + source: "iana", + compressible: true + }, + "application/coap-group+json": { + source: "iana", + compressible: true + }, + "application/coap-payload": { + source: "iana" + }, + "application/commonground": { + source: "iana" + }, + "application/conference-info+xml": { + source: "iana", + compressible: true + }, + "application/cose": { + source: "iana" + }, + "application/cose-key": { + source: "iana" + }, + "application/cose-key-set": { + source: "iana" + }, + "application/cpl+xml": { + source: "iana", + compressible: true, + extensions: ["cpl"] + }, + "application/csrattrs": { + source: "iana" + }, + "application/csta+xml": { + source: "iana", + compressible: true + }, + "application/cstadata+xml": { + source: "iana", + compressible: true + }, + "application/csvm+json": { + source: "iana", + compressible: true + }, + "application/cu-seeme": { + source: "apache", + extensions: ["cu"] + }, + "application/cwt": { + source: "iana" + }, + "application/cybercash": { + source: "iana" + }, + "application/dart": { + compressible: true + }, + "application/dash+xml": { + source: "iana", + compressible: true, + extensions: ["mpd"] + }, + "application/dash-patch+xml": { + source: "iana", + compressible: true, + extensions: ["mpp"] + }, + "application/dashdelta": { + source: "iana" + }, + "application/davmount+xml": { + source: "iana", + compressible: true, + extensions: ["davmount"] + }, + "application/dca-rft": { + source: "iana" + }, + "application/dcd": { + source: "iana" + }, + "application/dec-dx": { + source: "iana" + }, + "application/dialog-info+xml": { + source: "iana", + compressible: true + }, + "application/dicom": { + source: "iana" + }, + "application/dicom+json": { + source: "iana", + compressible: true + }, + "application/dicom+xml": { + source: "iana", + compressible: true + }, + "application/dii": { + source: "iana" + }, + "application/dit": { + source: "iana" + }, + "application/dns": { + source: "iana" + }, + "application/dns+json": { + source: "iana", + compressible: true + }, + "application/dns-message": { + source: "iana" + }, + "application/docbook+xml": { + source: "apache", + compressible: true, + extensions: ["dbk"] + }, + "application/dots+cbor": { + source: "iana" + }, + "application/dskpp+xml": { + source: "iana", + compressible: true + }, + "application/dssc+der": { + source: "iana", + extensions: ["dssc"] + }, + "application/dssc+xml": { + source: "iana", + compressible: true, + extensions: ["xdssc"] + }, + "application/dvcs": { + source: "iana" + }, + "application/ecmascript": { + source: "iana", + compressible: true, + extensions: ["es", "ecma"] + }, + "application/edi-consent": { + source: "iana" + }, + "application/edi-x12": { + source: "iana", + compressible: false + }, + "application/edifact": { + source: "iana", + compressible: false + }, + "application/efi": { + source: "iana" + }, + "application/elm+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/elm+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.cap+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/emergencycalldata.comment+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.control+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.deviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.ecall.msd": { + source: "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.serviceinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.subscriberinfo+xml": { + source: "iana", + compressible: true + }, + "application/emergencycalldata.veds+xml": { + source: "iana", + compressible: true + }, + "application/emma+xml": { + source: "iana", + compressible: true, + extensions: ["emma"] + }, + "application/emotionml+xml": { + source: "iana", + compressible: true, + extensions: ["emotionml"] + }, + "application/encaprtp": { + source: "iana" + }, + "application/epp+xml": { + source: "iana", + compressible: true + }, + "application/epub+zip": { + source: "iana", + compressible: false, + extensions: ["epub"] + }, + "application/eshop": { + source: "iana" + }, + "application/exi": { + source: "iana", + extensions: ["exi"] + }, + "application/expect-ct-report+json": { + source: "iana", + compressible: true + }, + "application/express": { + source: "iana", + extensions: ["exp"] + }, + "application/fastinfoset": { + source: "iana" + }, + "application/fastsoap": { + source: "iana" + }, + "application/fdt+xml": { + source: "iana", + compressible: true, + extensions: ["fdt"] + }, + "application/fhir+json": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fhir+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/fido.trusted-apps+json": { + compressible: true + }, + "application/fits": { + source: "iana" + }, + "application/flexfec": { + source: "iana" + }, + "application/font-sfnt": { + source: "iana" + }, + "application/font-tdpfr": { + source: "iana", + extensions: ["pfr"] + }, + "application/font-woff": { + source: "iana", + compressible: false + }, + "application/framework-attributes+xml": { + source: "iana", + compressible: true + }, + "application/geo+json": { + source: "iana", + compressible: true, + extensions: ["geojson"] + }, + "application/geo+json-seq": { + source: "iana" + }, + "application/geopackage+sqlite3": { + source: "iana" + }, + "application/geoxacml+xml": { + source: "iana", + compressible: true + }, + "application/gltf-buffer": { + source: "iana" + }, + "application/gml+xml": { + source: "iana", + compressible: true, + extensions: ["gml"] + }, + "application/gpx+xml": { + source: "apache", + compressible: true, + extensions: ["gpx"] + }, + "application/gxf": { + source: "apache", + extensions: ["gxf"] + }, + "application/gzip": { + source: "iana", + compressible: false, + extensions: ["gz"] + }, + "application/h224": { + source: "iana" + }, + "application/held+xml": { + source: "iana", + compressible: true + }, + "application/hjson": { + extensions: ["hjson"] + }, + "application/http": { + source: "iana" + }, + "application/hyperstudio": { + source: "iana", + extensions: ["stk"] + }, + "application/ibe-key-request+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pkg-reply+xml": { + source: "iana", + compressible: true + }, + "application/ibe-pp-data": { + source: "iana" + }, + "application/iges": { + source: "iana" + }, + "application/im-iscomposing+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/index": { + source: "iana" + }, + "application/index.cmd": { + source: "iana" + }, + "application/index.obj": { + source: "iana" + }, + "application/index.response": { + source: "iana" + }, + "application/index.vnd": { + source: "iana" + }, + "application/inkml+xml": { + source: "iana", + compressible: true, + extensions: ["ink", "inkml"] + }, + "application/iotp": { + source: "iana" + }, + "application/ipfix": { + source: "iana", + extensions: ["ipfix"] + }, + "application/ipp": { + source: "iana" + }, + "application/isup": { + source: "iana" + }, + "application/its+xml": { + source: "iana", + compressible: true, + extensions: ["its"] + }, + "application/java-archive": { + source: "apache", + compressible: false, + extensions: ["jar", "war", "ear"] + }, + "application/java-serialized-object": { + source: "apache", + compressible: false, + extensions: ["ser"] + }, + "application/java-vm": { + source: "apache", + compressible: false, + extensions: ["class"] + }, + "application/javascript": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["js", "mjs"] + }, + "application/jf2feed+json": { + source: "iana", + compressible: true + }, + "application/jose": { + source: "iana" + }, + "application/jose+json": { + source: "iana", + compressible: true + }, + "application/jrd+json": { + source: "iana", + compressible: true + }, + "application/jscalendar+json": { + source: "iana", + compressible: true + }, + "application/json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["json", "map"] + }, + "application/json-patch+json": { + source: "iana", + compressible: true + }, + "application/json-seq": { + source: "iana" + }, + "application/json5": { + extensions: ["json5"] + }, + "application/jsonml+json": { + source: "apache", + compressible: true, + extensions: ["jsonml"] + }, + "application/jwk+json": { + source: "iana", + compressible: true + }, + "application/jwk-set+json": { + source: "iana", + compressible: true + }, + "application/jwt": { + source: "iana" + }, + "application/kpml-request+xml": { + source: "iana", + compressible: true + }, + "application/kpml-response+xml": { + source: "iana", + compressible: true + }, + "application/ld+json": { + source: "iana", + compressible: true, + extensions: ["jsonld"] + }, + "application/lgr+xml": { + source: "iana", + compressible: true, + extensions: ["lgr"] + }, + "application/link-format": { + source: "iana" + }, + "application/load-control+xml": { + source: "iana", + compressible: true + }, + "application/lost+xml": { + source: "iana", + compressible: true, + extensions: ["lostxml"] + }, + "application/lostsync+xml": { + source: "iana", + compressible: true + }, + "application/lpf+zip": { + source: "iana", + compressible: false + }, + "application/lxf": { + source: "iana" + }, + "application/mac-binhex40": { + source: "iana", + extensions: ["hqx"] + }, + "application/mac-compactpro": { + source: "apache", + extensions: ["cpt"] + }, + "application/macwriteii": { + source: "iana" + }, + "application/mads+xml": { + source: "iana", + compressible: true, + extensions: ["mads"] + }, + "application/manifest+json": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["webmanifest"] + }, + "application/marc": { + source: "iana", + extensions: ["mrc"] + }, + "application/marcxml+xml": { + source: "iana", + compressible: true, + extensions: ["mrcx"] + }, + "application/mathematica": { + source: "iana", + extensions: ["ma", "nb", "mb"] + }, + "application/mathml+xml": { + source: "iana", + compressible: true, + extensions: ["mathml"] + }, + "application/mathml-content+xml": { + source: "iana", + compressible: true + }, + "application/mathml-presentation+xml": { + source: "iana", + compressible: true + }, + "application/mbms-associated-procedure-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-deregister+xml": { + source: "iana", + compressible: true + }, + "application/mbms-envelope+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk+xml": { + source: "iana", + compressible: true + }, + "application/mbms-msk-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-protection-description+xml": { + source: "iana", + compressible: true + }, + "application/mbms-reception-report+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register+xml": { + source: "iana", + compressible: true + }, + "application/mbms-register-response+xml": { + source: "iana", + compressible: true + }, + "application/mbms-schedule+xml": { + source: "iana", + compressible: true + }, + "application/mbms-user-service-description+xml": { + source: "iana", + compressible: true + }, + "application/mbox": { + source: "iana", + extensions: ["mbox"] + }, + "application/media-policy-dataset+xml": { + source: "iana", + compressible: true, + extensions: ["mpf"] + }, + "application/media_control+xml": { + source: "iana", + compressible: true + }, + "application/mediaservercontrol+xml": { + source: "iana", + compressible: true, + extensions: ["mscml"] + }, + "application/merge-patch+json": { + source: "iana", + compressible: true + }, + "application/metalink+xml": { + source: "apache", + compressible: true, + extensions: ["metalink"] + }, + "application/metalink4+xml": { + source: "iana", + compressible: true, + extensions: ["meta4"] + }, + "application/mets+xml": { + source: "iana", + compressible: true, + extensions: ["mets"] + }, + "application/mf4": { + source: "iana" + }, + "application/mikey": { + source: "iana" + }, + "application/mipc": { + source: "iana" + }, + "application/missing-blocks+cbor-seq": { + source: "iana" + }, + "application/mmt-aei+xml": { + source: "iana", + compressible: true, + extensions: ["maei"] + }, + "application/mmt-usd+xml": { + source: "iana", + compressible: true, + extensions: ["musd"] + }, + "application/mods+xml": { + source: "iana", + compressible: true, + extensions: ["mods"] + }, + "application/moss-keys": { + source: "iana" + }, + "application/moss-signature": { + source: "iana" + }, + "application/mosskey-data": { + source: "iana" + }, + "application/mosskey-request": { + source: "iana" + }, + "application/mp21": { + source: "iana", + extensions: ["m21", "mp21"] + }, + "application/mp4": { + source: "iana", + extensions: ["mp4s", "m4p"] + }, + "application/mpeg4-generic": { + source: "iana" + }, + "application/mpeg4-iod": { + source: "iana" + }, + "application/mpeg4-iod-xmt": { + source: "iana" + }, + "application/mrb-consumer+xml": { + source: "iana", + compressible: true + }, + "application/mrb-publish+xml": { + source: "iana", + compressible: true + }, + "application/msc-ivr+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msc-mixer+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/msword": { + source: "iana", + compressible: false, + extensions: ["doc", "dot"] + }, + "application/mud+json": { + source: "iana", + compressible: true + }, + "application/multipart-core": { + source: "iana" + }, + "application/mxf": { + source: "iana", + extensions: ["mxf"] + }, + "application/n-quads": { + source: "iana", + extensions: ["nq"] + }, + "application/n-triples": { + source: "iana", + extensions: ["nt"] + }, + "application/nasdata": { + source: "iana" + }, + "application/news-checkgroups": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-groupinfo": { + source: "iana", + charset: "US-ASCII" + }, + "application/news-transmission": { + source: "iana" + }, + "application/nlsml+xml": { + source: "iana", + compressible: true + }, + "application/node": { + source: "iana", + extensions: ["cjs"] + }, + "application/nss": { + source: "iana" + }, + "application/oauth-authz-req+jwt": { + source: "iana" + }, + "application/oblivious-dns-message": { + source: "iana" + }, + "application/ocsp-request": { + source: "iana" + }, + "application/ocsp-response": { + source: "iana" + }, + "application/octet-stream": { + source: "iana", + compressible: false, + extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] + }, + "application/oda": { + source: "iana", + extensions: ["oda"] + }, + "application/odm+xml": { + source: "iana", + compressible: true + }, + "application/odx": { + source: "iana" + }, + "application/oebps-package+xml": { + source: "iana", + compressible: true, + extensions: ["opf"] + }, + "application/ogg": { + source: "iana", + compressible: false, + extensions: ["ogx"] + }, + "application/omdoc+xml": { + source: "apache", + compressible: true, + extensions: ["omdoc"] + }, + "application/onenote": { + source: "apache", + extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] + }, + "application/opc-nodeset+xml": { + source: "iana", + compressible: true + }, + "application/oscore": { + source: "iana" + }, + "application/oxps": { + source: "iana", + extensions: ["oxps"] + }, + "application/p21": { + source: "iana" + }, + "application/p21+zip": { + source: "iana", + compressible: false + }, + "application/p2p-overlay+xml": { + source: "iana", + compressible: true, + extensions: ["relo"] + }, + "application/parityfec": { + source: "iana" + }, + "application/passport": { + source: "iana" + }, + "application/patch-ops-error+xml": { + source: "iana", + compressible: true, + extensions: ["xer"] + }, + "application/pdf": { + source: "iana", + compressible: false, + extensions: ["pdf"] + }, + "application/pdx": { + source: "iana" + }, + "application/pem-certificate-chain": { + source: "iana" + }, + "application/pgp-encrypted": { + source: "iana", + compressible: false, + extensions: ["pgp"] + }, + "application/pgp-keys": { + source: "iana", + extensions: ["asc"] + }, + "application/pgp-signature": { + source: "iana", + extensions: ["asc", "sig"] + }, + "application/pics-rules": { + source: "apache", + extensions: ["prf"] + }, + "application/pidf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pidf-diff+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/pkcs10": { + source: "iana", + extensions: ["p10"] + }, + "application/pkcs12": { + source: "iana" + }, + "application/pkcs7-mime": { + source: "iana", + extensions: ["p7m", "p7c"] + }, + "application/pkcs7-signature": { + source: "iana", + extensions: ["p7s"] + }, + "application/pkcs8": { + source: "iana", + extensions: ["p8"] + }, + "application/pkcs8-encrypted": { + source: "iana" + }, + "application/pkix-attr-cert": { + source: "iana", + extensions: ["ac"] + }, + "application/pkix-cert": { + source: "iana", + extensions: ["cer"] + }, + "application/pkix-crl": { + source: "iana", + extensions: ["crl"] + }, + "application/pkix-pkipath": { + source: "iana", + extensions: ["pkipath"] + }, + "application/pkixcmp": { + source: "iana", + extensions: ["pki"] + }, + "application/pls+xml": { + source: "iana", + compressible: true, + extensions: ["pls"] + }, + "application/poc-settings+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/postscript": { + source: "iana", + compressible: true, + extensions: ["ai", "eps", "ps"] + }, + "application/ppsp-tracker+json": { + source: "iana", + compressible: true + }, + "application/problem+json": { + source: "iana", + compressible: true + }, + "application/problem+xml": { + source: "iana", + compressible: true + }, + "application/provenance+xml": { + source: "iana", + compressible: true, + extensions: ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + source: "iana" + }, + "application/prs.cww": { + source: "iana", + extensions: ["cww"] + }, + "application/prs.cyn": { + source: "iana", + charset: "7-BIT" + }, + "application/prs.hpub+zip": { + source: "iana", + compressible: false + }, + "application/prs.nprend": { + source: "iana" + }, + "application/prs.plucker": { + source: "iana" + }, + "application/prs.rdf-xml-crypt": { + source: "iana" + }, + "application/prs.xsf+xml": { + source: "iana", + compressible: true + }, + "application/pskc+xml": { + source: "iana", + compressible: true, + extensions: ["pskcxml"] + }, + "application/pvd+json": { + source: "iana", + compressible: true + }, + "application/qsig": { + source: "iana" + }, + "application/raml+yaml": { + compressible: true, + extensions: ["raml"] + }, + "application/raptorfec": { + source: "iana" + }, + "application/rdap+json": { + source: "iana", + compressible: true + }, + "application/rdf+xml": { + source: "iana", + compressible: true, + extensions: ["rdf", "owl"] + }, + "application/reginfo+xml": { + source: "iana", + compressible: true, + extensions: ["rif"] + }, + "application/relax-ng-compact-syntax": { + source: "iana", + extensions: ["rnc"] + }, + "application/remote-printing": { + source: "iana" + }, + "application/reputon+json": { + source: "iana", + compressible: true + }, + "application/resource-lists+xml": { + source: "iana", + compressible: true, + extensions: ["rl"] + }, + "application/resource-lists-diff+xml": { + source: "iana", + compressible: true, + extensions: ["rld"] + }, + "application/rfc+xml": { + source: "iana", + compressible: true + }, + "application/riscos": { + source: "iana" + }, + "application/rlmi+xml": { + source: "iana", + compressible: true + }, + "application/rls-services+xml": { + source: "iana", + compressible: true, + extensions: ["rs"] + }, + "application/route-apd+xml": { + source: "iana", + compressible: true, + extensions: ["rapd"] + }, + "application/route-s-tsid+xml": { + source: "iana", + compressible: true, + extensions: ["sls"] + }, + "application/route-usd+xml": { + source: "iana", + compressible: true, + extensions: ["rusd"] + }, + "application/rpki-ghostbusters": { + source: "iana", + extensions: ["gbr"] + }, + "application/rpki-manifest": { + source: "iana", + extensions: ["mft"] + }, + "application/rpki-publication": { + source: "iana" + }, + "application/rpki-roa": { + source: "iana", + extensions: ["roa"] + }, + "application/rpki-updown": { + source: "iana" + }, + "application/rsd+xml": { + source: "apache", + compressible: true, + extensions: ["rsd"] + }, + "application/rss+xml": { + source: "apache", + compressible: true, + extensions: ["rss"] + }, + "application/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "application/rtploopback": { + source: "iana" + }, + "application/rtx": { + source: "iana" + }, + "application/samlassertion+xml": { + source: "iana", + compressible: true + }, + "application/samlmetadata+xml": { + source: "iana", + compressible: true + }, + "application/sarif+json": { + source: "iana", + compressible: true + }, + "application/sarif-external-properties+json": { + source: "iana", + compressible: true + }, + "application/sbe": { + source: "iana" + }, + "application/sbml+xml": { + source: "iana", + compressible: true, + extensions: ["sbml"] + }, + "application/scaip+xml": { + source: "iana", + compressible: true + }, + "application/scim+json": { + source: "iana", + compressible: true + }, + "application/scvp-cv-request": { + source: "iana", + extensions: ["scq"] + }, + "application/scvp-cv-response": { + source: "iana", + extensions: ["scs"] + }, + "application/scvp-vp-request": { + source: "iana", + extensions: ["spq"] + }, + "application/scvp-vp-response": { + source: "iana", + extensions: ["spp"] + }, + "application/sdp": { + source: "iana", + extensions: ["sdp"] + }, + "application/secevent+jwt": { + source: "iana" + }, + "application/senml+cbor": { + source: "iana" + }, + "application/senml+json": { + source: "iana", + compressible: true + }, + "application/senml+xml": { + source: "iana", + compressible: true, + extensions: ["senmlx"] + }, + "application/senml-etch+cbor": { + source: "iana" + }, + "application/senml-etch+json": { + source: "iana", + compressible: true + }, + "application/senml-exi": { + source: "iana" + }, + "application/sensml+cbor": { + source: "iana" + }, + "application/sensml+json": { + source: "iana", + compressible: true + }, + "application/sensml+xml": { + source: "iana", + compressible: true, + extensions: ["sensmlx"] + }, + "application/sensml-exi": { + source: "iana" + }, + "application/sep+xml": { + source: "iana", + compressible: true + }, + "application/sep-exi": { + source: "iana" + }, + "application/session-info": { + source: "iana" + }, + "application/set-payment": { + source: "iana" + }, + "application/set-payment-initiation": { + source: "iana", + extensions: ["setpay"] + }, + "application/set-registration": { + source: "iana" + }, + "application/set-registration-initiation": { + source: "iana", + extensions: ["setreg"] + }, + "application/sgml": { + source: "iana" + }, + "application/sgml-open-catalog": { + source: "iana" + }, + "application/shf+xml": { + source: "iana", + compressible: true, + extensions: ["shf"] + }, + "application/sieve": { + source: "iana", + extensions: ["siv", "sieve"] + }, + "application/simple-filter+xml": { + source: "iana", + compressible: true + }, + "application/simple-message-summary": { + source: "iana" + }, + "application/simplesymbolcontainer": { + source: "iana" + }, + "application/sipc": { + source: "iana" + }, + "application/slate": { + source: "iana" + }, + "application/smil": { + source: "iana" + }, + "application/smil+xml": { + source: "iana", + compressible: true, + extensions: ["smi", "smil"] + }, + "application/smpte336m": { + source: "iana" + }, + "application/soap+fastinfoset": { + source: "iana" + }, + "application/soap+xml": { + source: "iana", + compressible: true + }, + "application/sparql-query": { + source: "iana", + extensions: ["rq"] + }, + "application/sparql-results+xml": { + source: "iana", + compressible: true, + extensions: ["srx"] + }, + "application/spdx+json": { + source: "iana", + compressible: true + }, + "application/spirits-event+xml": { + source: "iana", + compressible: true + }, + "application/sql": { + source: "iana" + }, + "application/srgs": { + source: "iana", + extensions: ["gram"] + }, + "application/srgs+xml": { + source: "iana", + compressible: true, + extensions: ["grxml"] + }, + "application/sru+xml": { + source: "iana", + compressible: true, + extensions: ["sru"] + }, + "application/ssdl+xml": { + source: "apache", + compressible: true, + extensions: ["ssdl"] + }, + "application/ssml+xml": { + source: "iana", + compressible: true, + extensions: ["ssml"] + }, + "application/stix+json": { + source: "iana", + compressible: true + }, + "application/swid+xml": { + source: "iana", + compressible: true, + extensions: ["swidtag"] + }, + "application/tamp-apex-update": { + source: "iana" + }, + "application/tamp-apex-update-confirm": { + source: "iana" + }, + "application/tamp-community-update": { + source: "iana" + }, + "application/tamp-community-update-confirm": { + source: "iana" + }, + "application/tamp-error": { + source: "iana" + }, + "application/tamp-sequence-adjust": { + source: "iana" + }, + "application/tamp-sequence-adjust-confirm": { + source: "iana" + }, + "application/tamp-status-query": { + source: "iana" + }, + "application/tamp-status-response": { + source: "iana" + }, + "application/tamp-update": { + source: "iana" + }, + "application/tamp-update-confirm": { + source: "iana" + }, + "application/tar": { + compressible: true + }, + "application/taxii+json": { + source: "iana", + compressible: true + }, + "application/td+json": { + source: "iana", + compressible: true + }, + "application/tei+xml": { + source: "iana", + compressible: true, + extensions: ["tei", "teicorpus"] + }, + "application/tetra_isi": { + source: "iana" + }, + "application/thraud+xml": { + source: "iana", + compressible: true, + extensions: ["tfi"] + }, + "application/timestamp-query": { + source: "iana" + }, + "application/timestamp-reply": { + source: "iana" + }, + "application/timestamped-data": { + source: "iana", + extensions: ["tsd"] + }, + "application/tlsrpt+gzip": { + source: "iana" + }, + "application/tlsrpt+json": { + source: "iana", + compressible: true + }, + "application/tnauthlist": { + source: "iana" + }, + "application/token-introspection+jwt": { + source: "iana" + }, + "application/toml": { + compressible: true, + extensions: ["toml"] + }, + "application/trickle-ice-sdpfrag": { + source: "iana" + }, + "application/trig": { + source: "iana", + extensions: ["trig"] + }, + "application/ttml+xml": { + source: "iana", + compressible: true, + extensions: ["ttml"] + }, + "application/tve-trigger": { + source: "iana" + }, + "application/tzif": { + source: "iana" + }, + "application/tzif-leap": { + source: "iana" + }, + "application/ubjson": { + compressible: false, + extensions: ["ubj"] + }, + "application/ulpfec": { + source: "iana" + }, + "application/urc-grpsheet+xml": { + source: "iana", + compressible: true + }, + "application/urc-ressheet+xml": { + source: "iana", + compressible: true, + extensions: ["rsheet"] + }, + "application/urc-targetdesc+xml": { + source: "iana", + compressible: true, + extensions: ["td"] + }, + "application/urc-uisocketdesc+xml": { + source: "iana", + compressible: true + }, + "application/vcard+json": { + source: "iana", + compressible: true + }, + "application/vcard+xml": { + source: "iana", + compressible: true + }, + "application/vemmi": { + source: "iana" + }, + "application/vividence.scriptfile": { + source: "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + source: "iana", + compressible: true, + extensions: ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp-v2x-local-service-information": { + source: "iana" + }, + "application/vnd.3gpp.5gnas": { + source: "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.bsf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gmop+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.gtpc": { + source: "iana" + }, + "application/vnd.3gpp.interworking-data": { + source: "iana" + }, + "application/vnd.3gpp.lpp": { + source: "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-payload": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-signalling": { + source: "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.mid-call+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ngap": { + source: "iana" + }, + "application/vnd.3gpp.pfcp": { + source: "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + source: "iana", + extensions: ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + source: "iana", + extensions: ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + source: "iana", + extensions: ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + source: "iana" + }, + "application/vnd.3gpp.sms": { + source: "iana" + }, + "application/vnd.3gpp.sms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.srvcc-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp.ussd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.3gpp2.sms": { + source: "iana" + }, + "application/vnd.3gpp2.tcap": { + source: "iana", + extensions: ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + source: "iana" + }, + "application/vnd.3m.post-it-notes": { + source: "iana", + extensions: ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + source: "iana", + extensions: ["aso"] + }, + "application/vnd.accpac.simply.imp": { + source: "iana", + extensions: ["imp"] + }, + "application/vnd.acucobol": { + source: "iana", + extensions: ["acu"] + }, + "application/vnd.acucorp": { + source: "iana", + extensions: ["atc", "acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + source: "apache", + compressible: false, + extensions: ["air"] + }, + "application/vnd.adobe.flash.movie": { + source: "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + source: "iana", + extensions: ["fcdt"] + }, + "application/vnd.adobe.fxp": { + source: "iana", + extensions: ["fxp", "fxpl"] + }, + "application/vnd.adobe.partial-upload": { + source: "iana" + }, + "application/vnd.adobe.xdp+xml": { + source: "iana", + compressible: true, + extensions: ["xdp"] + }, + "application/vnd.adobe.xfdf": { + source: "iana", + extensions: ["xfdf"] + }, + "application/vnd.aether.imp": { + source: "iana" + }, + "application/vnd.afpc.afplinedata": { + source: "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + source: "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + source: "iana" + }, + "application/vnd.afpc.foca-charset": { + source: "iana" + }, + "application/vnd.afpc.foca-codedfont": { + source: "iana" + }, + "application/vnd.afpc.foca-codepage": { + source: "iana" + }, + "application/vnd.afpc.modca": { + source: "iana" + }, + "application/vnd.afpc.modca-cmtable": { + source: "iana" + }, + "application/vnd.afpc.modca-formdef": { + source: "iana" + }, + "application/vnd.afpc.modca-mediummap": { + source: "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + source: "iana" + }, + "application/vnd.afpc.modca-overlay": { + source: "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + source: "iana" + }, + "application/vnd.age": { + source: "iana", + extensions: ["age"] + }, + "application/vnd.ah-barcode": { + source: "iana" + }, + "application/vnd.ahead.space": { + source: "iana", + extensions: ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + source: "iana", + extensions: ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + source: "iana", + extensions: ["azs"] + }, + "application/vnd.amadeus+json": { + source: "iana", + compressible: true + }, + "application/vnd.amazon.ebook": { + source: "apache", + extensions: ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + source: "iana" + }, + "application/vnd.americandynamics.acc": { + source: "iana", + extensions: ["acc"] + }, + "application/vnd.amiga.ami": { + source: "iana", + extensions: ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + source: "iana", + compressible: true + }, + "application/vnd.android.ota": { + source: "iana" + }, + "application/vnd.android.package-archive": { + source: "apache", + compressible: false, + extensions: ["apk"] + }, + "application/vnd.anki": { + source: "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + source: "iana", + extensions: ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + source: "apache", + extensions: ["fti"] + }, + "application/vnd.antix.game-component": { + source: "iana", + extensions: ["atx"] + }, + "application/vnd.apache.arrow.file": { + source: "iana" + }, + "application/vnd.apache.arrow.stream": { + source: "iana" + }, + "application/vnd.apache.thrift.binary": { + source: "iana" + }, + "application/vnd.apache.thrift.compact": { + source: "iana" + }, + "application/vnd.apache.thrift.json": { + source: "iana" + }, + "application/vnd.api+json": { + source: "iana", + compressible: true + }, + "application/vnd.aplextor.warrp+json": { + source: "iana", + compressible: true + }, + "application/vnd.apothekende.reservation+json": { + source: "iana", + compressible: true + }, + "application/vnd.apple.installer+xml": { + source: "iana", + compressible: true, + extensions: ["mpkg"] + }, + "application/vnd.apple.keynote": { + source: "iana", + extensions: ["key"] + }, + "application/vnd.apple.mpegurl": { + source: "iana", + extensions: ["m3u8"] + }, + "application/vnd.apple.numbers": { + source: "iana", + extensions: ["numbers"] + }, + "application/vnd.apple.pages": { + source: "iana", + extensions: ["pages"] + }, + "application/vnd.apple.pkpass": { + compressible: false, + extensions: ["pkpass"] + }, + "application/vnd.arastra.swi": { + source: "iana" + }, + "application/vnd.aristanetworks.swi": { + source: "iana", + extensions: ["swi"] + }, + "application/vnd.artisan+json": { + source: "iana", + compressible: true + }, + "application/vnd.artsquare": { + source: "iana" + }, + "application/vnd.astraea-software.iota": { + source: "iana", + extensions: ["iota"] + }, + "application/vnd.audiograph": { + source: "iana", + extensions: ["aep"] + }, + "application/vnd.autopackage": { + source: "iana" + }, + "application/vnd.avalon+json": { + source: "iana", + compressible: true + }, + "application/vnd.avistar+xml": { + source: "iana", + compressible: true + }, + "application/vnd.balsamiq.bmml+xml": { + source: "iana", + compressible: true, + extensions: ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + source: "iana" + }, + "application/vnd.banana-accounting": { + source: "iana" + }, + "application/vnd.bbf.usp.error": { + source: "iana" + }, + "application/vnd.bbf.usp.msg": { + source: "iana" + }, + "application/vnd.bbf.usp.msg+json": { + source: "iana", + compressible: true + }, + "application/vnd.bekitzur-stech+json": { + source: "iana", + compressible: true + }, + "application/vnd.bint.med-content": { + source: "iana" + }, + "application/vnd.biopax.rdf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.blink-idb-value-wrapper": { + source: "iana" + }, + "application/vnd.blueice.multipass": { + source: "iana", + extensions: ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + source: "iana" + }, + "application/vnd.bluetooth.le.oob": { + source: "iana" + }, + "application/vnd.bmi": { + source: "iana", + extensions: ["bmi"] + }, + "application/vnd.bpf": { + source: "iana" + }, + "application/vnd.bpf3": { + source: "iana" + }, + "application/vnd.businessobjects": { + source: "iana", + extensions: ["rep"] + }, + "application/vnd.byu.uapi+json": { + source: "iana", + compressible: true + }, + "application/vnd.cab-jscript": { + source: "iana" + }, + "application/vnd.canon-cpdl": { + source: "iana" + }, + "application/vnd.canon-lips": { + source: "iana" + }, + "application/vnd.capasystems-pg+json": { + source: "iana", + compressible: true + }, + "application/vnd.cendio.thinlinc.clientconf": { + source: "iana" + }, + "application/vnd.century-systems.tcp_stream": { + source: "iana" + }, + "application/vnd.chemdraw+xml": { + source: "iana", + compressible: true, + extensions: ["cdxml"] + }, + "application/vnd.chess-pgn": { + source: "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + source: "iana", + extensions: ["mmd"] + }, + "application/vnd.ciedi": { + source: "iana" + }, + "application/vnd.cinderella": { + source: "iana", + extensions: ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + source: "iana" + }, + "application/vnd.citationstyles.style+xml": { + source: "iana", + compressible: true, + extensions: ["csl"] + }, + "application/vnd.claymore": { + source: "iana", + extensions: ["cla"] + }, + "application/vnd.cloanto.rp9": { + source: "iana", + extensions: ["rp9"] + }, + "application/vnd.clonk.c4group": { + source: "iana", + extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + source: "iana", + extensions: ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + source: "iana", + extensions: ["c11amz"] + }, + "application/vnd.coffeescript": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + source: "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + source: "iana" + }, + "application/vnd.collection+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.doc+json": { + source: "iana", + compressible: true + }, + "application/vnd.collection.next+json": { + source: "iana", + compressible: true + }, + "application/vnd.comicbook+zip": { + source: "iana", + compressible: false + }, + "application/vnd.comicbook-rar": { + source: "iana" + }, + "application/vnd.commerce-battelle": { + source: "iana" + }, + "application/vnd.commonspace": { + source: "iana", + extensions: ["csp"] + }, + "application/vnd.contact.cmsg": { + source: "iana", + extensions: ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + source: "iana", + compressible: true + }, + "application/vnd.cosmocaller": { + source: "iana", + extensions: ["cmc"] + }, + "application/vnd.crick.clicker": { + source: "iana", + extensions: ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + source: "iana", + extensions: ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + source: "iana", + extensions: ["clkp"] + }, + "application/vnd.crick.clicker.template": { + source: "iana", + extensions: ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + source: "iana", + extensions: ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + source: "iana", + compressible: true, + extensions: ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + source: "iana", + compressible: true + }, + "application/vnd.crypto-shade-file": { + source: "iana" + }, + "application/vnd.cryptomator.encrypted": { + source: "iana" + }, + "application/vnd.cryptomator.vault": { + source: "iana" + }, + "application/vnd.ctc-posml": { + source: "iana", + extensions: ["pml"] + }, + "application/vnd.ctct.ws+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cups-pdf": { + source: "iana" + }, + "application/vnd.cups-postscript": { + source: "iana" + }, + "application/vnd.cups-ppd": { + source: "iana", + extensions: ["ppd"] + }, + "application/vnd.cups-raster": { + source: "iana" + }, + "application/vnd.cups-raw": { + source: "iana" + }, + "application/vnd.curl": { + source: "iana" + }, + "application/vnd.curl.car": { + source: "apache", + extensions: ["car"] + }, + "application/vnd.curl.pcurl": { + source: "apache", + extensions: ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.cybank": { + source: "iana" + }, + "application/vnd.cyclonedx+json": { + source: "iana", + compressible: true + }, + "application/vnd.cyclonedx+xml": { + source: "iana", + compressible: true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + source: "iana", + compressible: false + }, + "application/vnd.d3m-dataset": { + source: "iana" + }, + "application/vnd.d3m-problem": { + source: "iana" + }, + "application/vnd.dart": { + source: "iana", + compressible: true, + extensions: ["dart"] + }, + "application/vnd.data-vision.rdz": { + source: "iana", + extensions: ["rdz"] + }, + "application/vnd.datapackage+json": { + source: "iana", + compressible: true + }, + "application/vnd.dataresource+json": { + source: "iana", + compressible: true + }, + "application/vnd.dbf": { + source: "iana", + extensions: ["dbf"] + }, + "application/vnd.debian.binary-package": { + source: "iana" + }, + "application/vnd.dece.data": { + source: "iana", + extensions: ["uvf", "uvvf", "uvd", "uvvd"] + }, + "application/vnd.dece.ttml+xml": { + source: "iana", + compressible: true, + extensions: ["uvt", "uvvt"] + }, + "application/vnd.dece.unspecified": { + source: "iana", + extensions: ["uvx", "uvvx"] + }, + "application/vnd.dece.zip": { + source: "iana", + extensions: ["uvz", "uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + source: "iana", + extensions: ["fe_launch"] + }, + "application/vnd.desmume.movie": { + source: "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + source: "iana" + }, + "application/vnd.dm.delegation+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dna": { + source: "iana", + extensions: ["dna"] + }, + "application/vnd.document+json": { + source: "iana", + compressible: true + }, + "application/vnd.dolby.mlp": { + source: "apache", + extensions: ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + source: "iana" + }, + "application/vnd.dolby.mobile.2": { + source: "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + source: "iana" + }, + "application/vnd.dpgraph": { + source: "iana", + extensions: ["dpg"] + }, + "application/vnd.dreamfactory": { + source: "iana", + extensions: ["dfac"] + }, + "application/vnd.drive+json": { + source: "iana", + compressible: true + }, + "application/vnd.ds-keypoint": { + source: "apache", + extensions: ["kpxx"] + }, + "application/vnd.dtg.local": { + source: "iana" + }, + "application/vnd.dtg.local.flash": { + source: "iana" + }, + "application/vnd.dtg.local.html": { + source: "iana" + }, + "application/vnd.dvb.ait": { + source: "iana", + extensions: ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.dvbj": { + source: "iana" + }, + "application/vnd.dvb.esgcontainer": { + source: "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + source: "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + source: "iana" + }, + "application/vnd.dvb.ipdcroaming": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + source: "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + source: "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-container+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-generic+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.notif-init+xml": { + source: "iana", + compressible: true + }, + "application/vnd.dvb.pfr": { + source: "iana" + }, + "application/vnd.dvb.service": { + source: "iana", + extensions: ["svc"] + }, + "application/vnd.dxr": { + source: "iana" + }, + "application/vnd.dynageo": { + source: "iana", + extensions: ["geo"] + }, + "application/vnd.dzr": { + source: "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + source: "iana" + }, + "application/vnd.ecdis-update": { + source: "iana" + }, + "application/vnd.ecip.rlp": { + source: "iana" + }, + "application/vnd.eclipse.ditto+json": { + source: "iana", + compressible: true + }, + "application/vnd.ecowin.chart": { + source: "iana", + extensions: ["mag"] + }, + "application/vnd.ecowin.filerequest": { + source: "iana" + }, + "application/vnd.ecowin.fileupdate": { + source: "iana" + }, + "application/vnd.ecowin.series": { + source: "iana" + }, + "application/vnd.ecowin.seriesrequest": { + source: "iana" + }, + "application/vnd.ecowin.seriesupdate": { + source: "iana" + }, + "application/vnd.efi.img": { + source: "iana" + }, + "application/vnd.efi.iso": { + source: "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + source: "iana", + compressible: true + }, + "application/vnd.enliven": { + source: "iana", + extensions: ["nml"] + }, + "application/vnd.enphase.envoy": { + source: "iana" + }, + "application/vnd.eprints.data+xml": { + source: "iana", + compressible: true + }, + "application/vnd.epson.esf": { + source: "iana", + extensions: ["esf"] + }, + "application/vnd.epson.msf": { + source: "iana", + extensions: ["msf"] + }, + "application/vnd.epson.quickanime": { + source: "iana", + extensions: ["qam"] + }, + "application/vnd.epson.salt": { + source: "iana", + extensions: ["slt"] + }, + "application/vnd.epson.ssf": { + source: "iana", + extensions: ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + source: "iana" + }, + "application/vnd.espass-espass+zip": { + source: "iana", + compressible: false + }, + "application/vnd.eszigno3+xml": { + source: "iana", + compressible: true, + extensions: ["es3", "et3"] + }, + "application/vnd.etsi.aoc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.asic-e+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.asic-s+zip": { + source: "iana", + compressible: false + }, + "application/vnd.etsi.cug+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvcommand+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvservice+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvsync+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.iptvueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mcid+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.mheg5": { + source: "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.pstn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.sci+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.simservs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.timestamp-token": { + source: "iana" + }, + "application/vnd.etsi.tsl+xml": { + source: "iana", + compressible: true + }, + "application/vnd.etsi.tsl.der": { + source: "iana" + }, + "application/vnd.eu.kasparian.car+json": { + source: "iana", + compressible: true + }, + "application/vnd.eudora.data": { + source: "iana" + }, + "application/vnd.evolv.ecig.profile": { + source: "iana" + }, + "application/vnd.evolv.ecig.settings": { + source: "iana" + }, + "application/vnd.evolv.ecig.theme": { + source: "iana" + }, + "application/vnd.exstream-empower+zip": { + source: "iana", + compressible: false + }, + "application/vnd.exstream-package": { + source: "iana" + }, + "application/vnd.ezpix-album": { + source: "iana", + extensions: ["ez2"] + }, + "application/vnd.ezpix-package": { + source: "iana", + extensions: ["ez3"] + }, + "application/vnd.f-secure.mobile": { + source: "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + source: "iana", + compressible: false + }, + "application/vnd.fastcopy-disk-image": { + source: "iana" + }, + "application/vnd.fdf": { + source: "iana", + extensions: ["fdf"] + }, + "application/vnd.fdsn.mseed": { + source: "iana", + extensions: ["mseed"] + }, + "application/vnd.fdsn.seed": { + source: "iana", + extensions: ["seed", "dataless"] + }, + "application/vnd.ffsns": { + source: "iana" + }, + "application/vnd.ficlab.flb+zip": { + source: "iana", + compressible: false + }, + "application/vnd.filmit.zfc": { + source: "iana" + }, + "application/vnd.fints": { + source: "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + source: "iana" + }, + "application/vnd.flographit": { + source: "iana", + extensions: ["gph"] + }, + "application/vnd.fluxtime.clip": { + source: "iana", + extensions: ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + source: "iana" + }, + "application/vnd.framemaker": { + source: "iana", + extensions: ["fm", "frame", "maker", "book"] + }, + "application/vnd.frogans.fnc": { + source: "iana", + extensions: ["fnc"] + }, + "application/vnd.frogans.ltf": { + source: "iana", + extensions: ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + source: "iana", + extensions: ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + source: "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + source: "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.fujitsu.oasys": { + source: "iana", + extensions: ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + source: "iana", + extensions: ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + source: "iana", + extensions: ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + source: "iana", + extensions: ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + source: "iana", + extensions: ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + source: "iana" + }, + "application/vnd.fujixerox.art4": { + source: "iana" + }, + "application/vnd.fujixerox.ddd": { + source: "iana", + extensions: ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + source: "iana", + extensions: ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + source: "iana", + extensions: ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + source: "iana" + }, + "application/vnd.fujixerox.hbpl": { + source: "iana" + }, + "application/vnd.fut-misnet": { + source: "iana" + }, + "application/vnd.futoin+cbor": { + source: "iana" + }, + "application/vnd.futoin+json": { + source: "iana", + compressible: true + }, + "application/vnd.fuzzysheet": { + source: "iana", + extensions: ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + source: "iana", + extensions: ["txd"] + }, + "application/vnd.gentics.grd+json": { + source: "iana", + compressible: true + }, + "application/vnd.geo+json": { + source: "iana", + compressible: true + }, + "application/vnd.geocube+xml": { + source: "iana", + compressible: true + }, + "application/vnd.geogebra.file": { + source: "iana", + extensions: ["ggb"] + }, + "application/vnd.geogebra.slides": { + source: "iana" + }, + "application/vnd.geogebra.tool": { + source: "iana", + extensions: ["ggt"] + }, + "application/vnd.geometry-explorer": { + source: "iana", + extensions: ["gex", "gre"] + }, + "application/vnd.geonext": { + source: "iana", + extensions: ["gxt"] + }, + "application/vnd.geoplan": { + source: "iana", + extensions: ["g2w"] + }, + "application/vnd.geospace": { + source: "iana", + extensions: ["g3w"] + }, + "application/vnd.gerber": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + source: "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + source: "iana" + }, + "application/vnd.gmx": { + source: "iana", + extensions: ["gmx"] + }, + "application/vnd.google-apps.document": { + compressible: false, + extensions: ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + compressible: false, + extensions: ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + compressible: false, + extensions: ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + source: "iana", + compressible: true, + extensions: ["kml"] + }, + "application/vnd.google-earth.kmz": { + source: "iana", + compressible: false, + extensions: ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + source: "iana", + compressible: true + }, + "application/vnd.gov.sk.e-form+zip": { + source: "iana", + compressible: false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.grafeq": { + source: "iana", + extensions: ["gqf", "gqs"] + }, + "application/vnd.gridmp": { + source: "iana" + }, + "application/vnd.groove-account": { + source: "iana", + extensions: ["gac"] + }, + "application/vnd.groove-help": { + source: "iana", + extensions: ["ghf"] + }, + "application/vnd.groove-identity-message": { + source: "iana", + extensions: ["gim"] + }, + "application/vnd.groove-injector": { + source: "iana", + extensions: ["grv"] + }, + "application/vnd.groove-tool-message": { + source: "iana", + extensions: ["gtm"] + }, + "application/vnd.groove-tool-template": { + source: "iana", + extensions: ["tpl"] + }, + "application/vnd.groove-vcard": { + source: "iana", + extensions: ["vcg"] + }, + "application/vnd.hal+json": { + source: "iana", + compressible: true + }, + "application/vnd.hal+xml": { + source: "iana", + compressible: true, + extensions: ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + source: "iana", + compressible: true, + extensions: ["zmm"] + }, + "application/vnd.hbci": { + source: "iana", + extensions: ["hbci"] + }, + "application/vnd.hc+json": { + source: "iana", + compressible: true + }, + "application/vnd.hcl-bireports": { + source: "iana" + }, + "application/vnd.hdt": { + source: "iana" + }, + "application/vnd.heroku+json": { + source: "iana", + compressible: true + }, + "application/vnd.hhe.lesson-player": { + source: "iana", + extensions: ["les"] + }, + "application/vnd.hl7cda+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hl7v2+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.hp-hpgl": { + source: "iana", + extensions: ["hpgl"] + }, + "application/vnd.hp-hpid": { + source: "iana", + extensions: ["hpid"] + }, + "application/vnd.hp-hps": { + source: "iana", + extensions: ["hps"] + }, + "application/vnd.hp-jlyt": { + source: "iana", + extensions: ["jlt"] + }, + "application/vnd.hp-pcl": { + source: "iana", + extensions: ["pcl"] + }, + "application/vnd.hp-pclxl": { + source: "iana", + extensions: ["pclxl"] + }, + "application/vnd.httphone": { + source: "iana" + }, + "application/vnd.hydrostatix.sof-data": { + source: "iana", + extensions: ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyper-item+json": { + source: "iana", + compressible: true + }, + "application/vnd.hyperdrive+json": { + source: "iana", + compressible: true + }, + "application/vnd.hzn-3d-crossword": { + source: "iana" + }, + "application/vnd.ibm.afplinedata": { + source: "iana" + }, + "application/vnd.ibm.electronic-media": { + source: "iana" + }, + "application/vnd.ibm.minipay": { + source: "iana", + extensions: ["mpy"] + }, + "application/vnd.ibm.modcap": { + source: "iana", + extensions: ["afp", "listafp", "list3820"] + }, + "application/vnd.ibm.rights-management": { + source: "iana", + extensions: ["irm"] + }, + "application/vnd.ibm.secure-container": { + source: "iana", + extensions: ["sc"] + }, + "application/vnd.iccprofile": { + source: "iana", + extensions: ["icc", "icm"] + }, + "application/vnd.ieee.1905": { + source: "iana" + }, + "application/vnd.igloader": { + source: "iana", + extensions: ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + source: "iana", + compressible: false + }, + "application/vnd.imagemeter.image+zip": { + source: "iana", + compressible: false + }, + "application/vnd.immervision-ivp": { + source: "iana", + extensions: ["ivp"] + }, + "application/vnd.immervision-ivu": { + source: "iana", + extensions: ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + source: "iana" + }, + "application/vnd.ims.imsccv1p2": { + source: "iana" + }, + "application/vnd.ims.imsccv1p3": { + source: "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + source: "iana", + compressible: true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + source: "iana", + compressible: true + }, + "application/vnd.informedcontrol.rms+xml": { + source: "iana", + compressible: true + }, + "application/vnd.informix-visionary": { + source: "iana" + }, + "application/vnd.infotech.project": { + source: "iana" + }, + "application/vnd.infotech.project+xml": { + source: "iana", + compressible: true + }, + "application/vnd.innopath.wamp.notification": { + source: "iana" + }, + "application/vnd.insors.igm": { + source: "iana", + extensions: ["igm"] + }, + "application/vnd.intercon.formnet": { + source: "iana", + extensions: ["xpw", "xpx"] + }, + "application/vnd.intergeo": { + source: "iana", + extensions: ["i2g"] + }, + "application/vnd.intertrust.digibox": { + source: "iana" + }, + "application/vnd.intertrust.nncp": { + source: "iana" + }, + "application/vnd.intu.qbo": { + source: "iana", + extensions: ["qbo"] + }, + "application/vnd.intu.qfx": { + source: "iana", + extensions: ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.packageitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.iptc.g2.planningitem+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ipunplugged.rcprofile": { + source: "iana", + extensions: ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + source: "iana", + compressible: true, + extensions: ["irp"] + }, + "application/vnd.is-xpr": { + source: "iana", + extensions: ["xpr"] + }, + "application/vnd.isac.fcs": { + source: "iana", + extensions: ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + source: "iana", + compressible: false + }, + "application/vnd.jam": { + source: "iana", + extensions: ["jam"] + }, + "application/vnd.japannet-directory-service": { + source: "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-payment-wakeup": { + source: "iana" + }, + "application/vnd.japannet-registration": { + source: "iana" + }, + "application/vnd.japannet-registration-wakeup": { + source: "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + source: "iana" + }, + "application/vnd.japannet-verification": { + source: "iana" + }, + "application/vnd.japannet-verification-wakeup": { + source: "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + source: "iana", + extensions: ["rms"] + }, + "application/vnd.jisp": { + source: "iana", + extensions: ["jisp"] + }, + "application/vnd.joost.joda-archive": { + source: "iana", + extensions: ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + source: "iana" + }, + "application/vnd.kahootz": { + source: "iana", + extensions: ["ktz", "ktr"] + }, + "application/vnd.kde.karbon": { + source: "iana", + extensions: ["karbon"] + }, + "application/vnd.kde.kchart": { + source: "iana", + extensions: ["chrt"] + }, + "application/vnd.kde.kformula": { + source: "iana", + extensions: ["kfo"] + }, + "application/vnd.kde.kivio": { + source: "iana", + extensions: ["flw"] + }, + "application/vnd.kde.kontour": { + source: "iana", + extensions: ["kon"] + }, + "application/vnd.kde.kpresenter": { + source: "iana", + extensions: ["kpr", "kpt"] + }, + "application/vnd.kde.kspread": { + source: "iana", + extensions: ["ksp"] + }, + "application/vnd.kde.kword": { + source: "iana", + extensions: ["kwd", "kwt"] + }, + "application/vnd.kenameaapp": { + source: "iana", + extensions: ["htke"] + }, + "application/vnd.kidspiration": { + source: "iana", + extensions: ["kia"] + }, + "application/vnd.kinar": { + source: "iana", + extensions: ["kne", "knp"] + }, + "application/vnd.koan": { + source: "iana", + extensions: ["skp", "skd", "skt", "skm"] + }, + "application/vnd.kodak-descriptor": { + source: "iana", + extensions: ["sse"] + }, + "application/vnd.las": { + source: "iana" + }, + "application/vnd.las.las+json": { + source: "iana", + compressible: true + }, + "application/vnd.las.las+xml": { + source: "iana", + compressible: true, + extensions: ["lasxml"] + }, + "application/vnd.laszip": { + source: "iana" + }, + "application/vnd.leap+json": { + source: "iana", + compressible: true + }, + "application/vnd.liberty-request+xml": { + source: "iana", + compressible: true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + source: "iana", + extensions: ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + source: "iana", + compressible: true, + extensions: ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + source: "iana", + compressible: false + }, + "application/vnd.loom": { + source: "iana" + }, + "application/vnd.lotus-1-2-3": { + source: "iana", + extensions: ["123"] + }, + "application/vnd.lotus-approach": { + source: "iana", + extensions: ["apr"] + }, + "application/vnd.lotus-freelance": { + source: "iana", + extensions: ["pre"] + }, + "application/vnd.lotus-notes": { + source: "iana", + extensions: ["nsf"] + }, + "application/vnd.lotus-organizer": { + source: "iana", + extensions: ["org"] + }, + "application/vnd.lotus-screencam": { + source: "iana", + extensions: ["scm"] + }, + "application/vnd.lotus-wordpro": { + source: "iana", + extensions: ["lwp"] + }, + "application/vnd.macports.portpkg": { + source: "iana", + extensions: ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + source: "iana", + extensions: ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.conftoken+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.license+xml": { + source: "iana", + compressible: true + }, + "application/vnd.marlin.drm.mdcf": { + source: "iana" + }, + "application/vnd.mason+json": { + source: "iana", + compressible: true + }, + "application/vnd.maxar.archive.3tz+zip": { + source: "iana", + compressible: false + }, + "application/vnd.maxmind.maxmind-db": { + source: "iana" + }, + "application/vnd.mcd": { + source: "iana", + extensions: ["mcd"] + }, + "application/vnd.medcalcdata": { + source: "iana", + extensions: ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + source: "iana", + extensions: ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + source: "iana" + }, + "application/vnd.mfer": { + source: "iana", + extensions: ["mwf"] + }, + "application/vnd.mfmp": { + source: "iana", + extensions: ["mfm"] + }, + "application/vnd.micro+json": { + source: "iana", + compressible: true + }, + "application/vnd.micrografx.flo": { + source: "iana", + extensions: ["flo"] + }, + "application/vnd.micrografx.igx": { + source: "iana", + extensions: ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + source: "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + source: "iana" + }, + "application/vnd.miele+json": { + source: "iana", + compressible: true + }, + "application/vnd.mif": { + source: "iana", + extensions: ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + source: "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + source: "iana" + }, + "application/vnd.mobius.daf": { + source: "iana", + extensions: ["daf"] + }, + "application/vnd.mobius.dis": { + source: "iana", + extensions: ["dis"] + }, + "application/vnd.mobius.mbk": { + source: "iana", + extensions: ["mbk"] + }, + "application/vnd.mobius.mqy": { + source: "iana", + extensions: ["mqy"] + }, + "application/vnd.mobius.msl": { + source: "iana", + extensions: ["msl"] + }, + "application/vnd.mobius.plc": { + source: "iana", + extensions: ["plc"] + }, + "application/vnd.mobius.txf": { + source: "iana", + extensions: ["txf"] + }, + "application/vnd.mophun.application": { + source: "iana", + extensions: ["mpn"] + }, + "application/vnd.mophun.certificate": { + source: "iana", + extensions: ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + source: "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + source: "iana" + }, + "application/vnd.motorola.iprm": { + source: "iana" + }, + "application/vnd.mozilla.xul+xml": { + source: "iana", + compressible: true, + extensions: ["xul"] + }, + "application/vnd.ms-3mfdocument": { + source: "iana" + }, + "application/vnd.ms-artgalry": { + source: "iana", + extensions: ["cil"] + }, + "application/vnd.ms-asf": { + source: "iana" + }, + "application/vnd.ms-cab-compressed": { + source: "iana", + extensions: ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + source: "apache" + }, + "application/vnd.ms-excel": { + source: "iana", + compressible: false, + extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + source: "iana", + extensions: ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + source: "iana", + extensions: ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + source: "iana", + extensions: ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + source: "iana", + extensions: ["xltm"] + }, + "application/vnd.ms-fontobject": { + source: "iana", + compressible: true, + extensions: ["eot"] + }, + "application/vnd.ms-htmlhelp": { + source: "iana", + extensions: ["chm"] + }, + "application/vnd.ms-ims": { + source: "iana", + extensions: ["ims"] + }, + "application/vnd.ms-lrm": { + source: "iana", + extensions: ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-officetheme": { + source: "iana", + extensions: ["thmx"] + }, + "application/vnd.ms-opentype": { + source: "apache", + compressible: true + }, + "application/vnd.ms-outlook": { + compressible: false, + extensions: ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + source: "apache" + }, + "application/vnd.ms-pki.seccat": { + source: "apache", + extensions: ["cat"] + }, + "application/vnd.ms-pki.stl": { + source: "apache", + extensions: ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-powerpoint": { + source: "iana", + compressible: false, + extensions: ["ppt", "pps", "pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + source: "iana", + extensions: ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + source: "iana", + extensions: ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + source: "iana", + extensions: ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + source: "iana", + extensions: ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + source: "iana", + extensions: ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-printing.printticket+xml": { + source: "apache", + compressible: true + }, + "application/vnd.ms-printschematicket+xml": { + source: "iana", + compressible: true + }, + "application/vnd.ms-project": { + source: "iana", + extensions: ["mpp", "mpt"] + }, + "application/vnd.ms-tnef": { + source: "iana" + }, + "application/vnd.ms-windows.devicepairing": { + source: "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + source: "iana" + }, + "application/vnd.ms-windows.printerpairing": { + source: "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + source: "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + source: "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + source: "iana", + extensions: ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + source: "iana", + extensions: ["dotm"] + }, + "application/vnd.ms-works": { + source: "iana", + extensions: ["wps", "wks", "wcm", "wdb"] + }, + "application/vnd.ms-wpl": { + source: "iana", + extensions: ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + source: "iana", + compressible: false, + extensions: ["xps"] + }, + "application/vnd.msa-disk-image": { + source: "iana" + }, + "application/vnd.mseq": { + source: "iana", + extensions: ["mseq"] + }, + "application/vnd.msign": { + source: "iana" + }, + "application/vnd.multiad.creator": { + source: "iana" + }, + "application/vnd.multiad.creator.cif": { + source: "iana" + }, + "application/vnd.music-niff": { + source: "iana" + }, + "application/vnd.musician": { + source: "iana", + extensions: ["mus"] + }, + "application/vnd.muvee.style": { + source: "iana", + extensions: ["msty"] + }, + "application/vnd.mynfc": { + source: "iana", + extensions: ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + source: "iana", + compressible: true + }, + "application/vnd.ncd.control": { + source: "iana" + }, + "application/vnd.ncd.reference": { + source: "iana" + }, + "application/vnd.nearst.inv+json": { + source: "iana", + compressible: true + }, + "application/vnd.nebumind.line": { + source: "iana" + }, + "application/vnd.nervana": { + source: "iana" + }, + "application/vnd.netfpx": { + source: "iana" + }, + "application/vnd.neurolanguage.nlu": { + source: "iana", + extensions: ["nlu"] + }, + "application/vnd.nimn": { + source: "iana" + }, + "application/vnd.nintendo.nitro.rom": { + source: "iana" + }, + "application/vnd.nintendo.snes.rom": { + source: "iana" + }, + "application/vnd.nitf": { + source: "iana", + extensions: ["ntf", "nitf"] + }, + "application/vnd.noblenet-directory": { + source: "iana", + extensions: ["nnd"] + }, + "application/vnd.noblenet-sealer": { + source: "iana", + extensions: ["nns"] + }, + "application/vnd.noblenet-web": { + source: "iana", + extensions: ["nnw"] + }, + "application/vnd.nokia.catalogs": { + source: "iana" + }, + "application/vnd.nokia.conml+wbxml": { + source: "iana" + }, + "application/vnd.nokia.conml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.iptv.config+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.isds-radio-presets": { + source: "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + source: "iana" + }, + "application/vnd.nokia.landmark+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.landmarkcollection+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.n-gage.ac+xml": { + source: "iana", + compressible: true, + extensions: ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + source: "iana", + extensions: ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + source: "iana", + extensions: ["n-gage"] + }, + "application/vnd.nokia.ncd": { + source: "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + source: "iana" + }, + "application/vnd.nokia.pcd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.nokia.radio-preset": { + source: "iana", + extensions: ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + source: "iana", + extensions: ["rpss"] + }, + "application/vnd.novadigm.edm": { + source: "iana", + extensions: ["edm"] + }, + "application/vnd.novadigm.edx": { + source: "iana", + extensions: ["edx"] + }, + "application/vnd.novadigm.ext": { + source: "iana", + extensions: ["ext"] + }, + "application/vnd.ntt-local.content-share": { + source: "iana" + }, + "application/vnd.ntt-local.file-transfer": { + source: "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + source: "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + source: "iana" + }, + "application/vnd.oasis.opendocument.chart": { + source: "iana", + extensions: ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + source: "iana", + extensions: ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + source: "iana", + extensions: ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + source: "iana", + extensions: ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + source: "iana", + extensions: ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + source: "iana", + compressible: false, + extensions: ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + source: "iana", + extensions: ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + source: "iana", + extensions: ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + source: "iana", + extensions: ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + source: "iana", + compressible: false, + extensions: ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + source: "iana", + extensions: ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + source: "iana", + compressible: false, + extensions: ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + source: "iana", + extensions: ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + source: "iana", + compressible: false, + extensions: ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + source: "iana", + extensions: ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + source: "iana", + extensions: ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + source: "iana", + extensions: ["oth"] + }, + "application/vnd.obn": { + source: "iana" + }, + "application/vnd.ocf+cbor": { + source: "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + source: "iana", + compressible: true + }, + "application/vnd.oftn.l10n+json": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.cspg-hexbinary": { + source: "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.dae.xhtml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.pae.gem": { + source: "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.spdlist+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.ueprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oipf.userprofile+xml": { + source: "iana", + compressible: true + }, + "application/vnd.olpc-sugar": { + source: "iana", + extensions: ["xo"] + }, + "application/vnd.oma-scws-config": { + source: "iana" + }, + "application/vnd.oma-scws-http-request": { + source: "iana" + }, + "application/vnd.oma-scws-http-response": { + source: "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.imd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.ltkm": { + source: "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + source: "iana" + }, + "application/vnd.oma.bcast.sgboot": { + source: "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sgdu": { + source: "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + source: "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.sprov+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.bcast.stkm": { + source: "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-feature-handler+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-pcc+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-subs-invite+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.cab-user-prefs+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.dcd": { + source: "iana" + }, + "application/vnd.oma.dcdc": { + source: "iana" + }, + "application/vnd.oma.dd2+xml": { + source: "iana", + compressible: true, + extensions: ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.group-usage-list+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+cbor": { + source: "iana" + }, + "application/vnd.oma.lwm2m+json": { + source: "iana", + compressible: true + }, + "application/vnd.oma.lwm2m+tlv": { + source: "iana" + }, + "application/vnd.oma.pal+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.final-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.groups+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.push": { + source: "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oma.xcap-directory+xml": { + source: "iana", + compressible: true + }, + "application/vnd.omads-email+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-file+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omads-folder+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.omaloc-supl-init": { + source: "iana" + }, + "application/vnd.onepager": { + source: "iana" + }, + "application/vnd.onepagertamp": { + source: "iana" + }, + "application/vnd.onepagertamx": { + source: "iana" + }, + "application/vnd.onepagertat": { + source: "iana" + }, + "application/vnd.onepagertatp": { + source: "iana" + }, + "application/vnd.onepagertatx": { + source: "iana" + }, + "application/vnd.openblox.game+xml": { + source: "iana", + compressible: true, + extensions: ["obgx"] + }, + "application/vnd.openblox.game-binary": { + source: "iana" + }, + "application/vnd.openeye.oeb": { + source: "iana" + }, + "application/vnd.openofficeorg.extension": { + source: "apache", + extensions: ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + source: "iana", + compressible: true, + extensions: ["osm"] + }, + "application/vnd.opentimestamps.ots": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + source: "iana", + compressible: false, + extensions: ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + source: "iana", + extensions: ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + source: "iana", + extensions: ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + source: "iana", + extensions: ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + source: "iana", + compressible: false, + extensions: ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + source: "iana", + extensions: ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + source: "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + source: "iana", + compressible: false, + extensions: ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + source: "iana", + extensions: ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + source: "iana", + compressible: true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oracle.resource+json": { + source: "iana", + compressible: true + }, + "application/vnd.orange.indata": { + source: "iana" + }, + "application/vnd.osa.netdeploy": { + source: "iana" + }, + "application/vnd.osgeo.mapguide.package": { + source: "iana", + extensions: ["mgp"] + }, + "application/vnd.osgi.bundle": { + source: "iana" + }, + "application/vnd.osgi.dp": { + source: "iana", + extensions: ["dp"] + }, + "application/vnd.osgi.subsystem": { + source: "iana", + extensions: ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + source: "iana", + compressible: true + }, + "application/vnd.oxli.countgraph": { + source: "iana" + }, + "application/vnd.pagerduty+json": { + source: "iana", + compressible: true + }, + "application/vnd.palm": { + source: "iana", + extensions: ["pdb", "pqa", "oprc"] + }, + "application/vnd.panoply": { + source: "iana" + }, + "application/vnd.paos.xml": { + source: "iana" + }, + "application/vnd.patentdive": { + source: "iana" + }, + "application/vnd.patientecommsdoc": { + source: "iana" + }, + "application/vnd.pawaafile": { + source: "iana", + extensions: ["paw"] + }, + "application/vnd.pcos": { + source: "iana" + }, + "application/vnd.pg.format": { + source: "iana", + extensions: ["str"] + }, + "application/vnd.pg.osasli": { + source: "iana", + extensions: ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + source: "iana" + }, + "application/vnd.picsel": { + source: "iana", + extensions: ["efif"] + }, + "application/vnd.pmi.widget": { + source: "iana", + extensions: ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + source: "iana", + compressible: true + }, + "application/vnd.pocketlearn": { + source: "iana", + extensions: ["plf"] + }, + "application/vnd.powerbuilder6": { + source: "iana", + extensions: ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + source: "iana" + }, + "application/vnd.powerbuilder7": { + source: "iana" + }, + "application/vnd.powerbuilder7-s": { + source: "iana" + }, + "application/vnd.powerbuilder75": { + source: "iana" + }, + "application/vnd.powerbuilder75-s": { + source: "iana" + }, + "application/vnd.preminet": { + source: "iana" + }, + "application/vnd.previewsystems.box": { + source: "iana", + extensions: ["box"] + }, + "application/vnd.proteus.magazine": { + source: "iana", + extensions: ["mgz"] + }, + "application/vnd.psfs": { + source: "iana" + }, + "application/vnd.publishare-delta-tree": { + source: "iana", + extensions: ["qps"] + }, + "application/vnd.pvi.ptid1": { + source: "iana", + extensions: ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + source: "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + source: "iana", + compressible: true + }, + "application/vnd.qualcomm.brew-app-res": { + source: "iana" + }, + "application/vnd.quarantainenet": { + source: "iana" + }, + "application/vnd.quark.quarkxpress": { + source: "iana", + extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] + }, + "application/vnd.quobject-quoxdocument": { + source: "iana" + }, + "application/vnd.radisys.moml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-conf+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + source: "iana", + compressible: true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + source: "iana", + compressible: true + }, + "application/vnd.rainstor.data": { + source: "iana" + }, + "application/vnd.rapid": { + source: "iana" + }, + "application/vnd.rar": { + source: "iana", + extensions: ["rar"] + }, + "application/vnd.realvnc.bed": { + source: "iana", + extensions: ["bed"] + }, + "application/vnd.recordare.musicxml": { + source: "iana", + extensions: ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + source: "iana", + compressible: true, + extensions: ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + source: "iana" + }, + "application/vnd.resilient.logic": { + source: "iana" + }, + "application/vnd.restful+json": { + source: "iana", + compressible: true + }, + "application/vnd.rig.cryptonote": { + source: "iana", + extensions: ["cryptonote"] + }, + "application/vnd.rim.cod": { + source: "apache", + extensions: ["cod"] + }, + "application/vnd.rn-realmedia": { + source: "apache", + extensions: ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + source: "apache", + extensions: ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + source: "iana", + compressible: true, + extensions: ["link66"] + }, + "application/vnd.rs-274x": { + source: "iana" + }, + "application/vnd.ruckus.download": { + source: "iana" + }, + "application/vnd.s3sms": { + source: "iana" + }, + "application/vnd.sailingtracker.track": { + source: "iana", + extensions: ["st"] + }, + "application/vnd.sar": { + source: "iana" + }, + "application/vnd.sbm.cid": { + source: "iana" + }, + "application/vnd.sbm.mid2": { + source: "iana" + }, + "application/vnd.scribus": { + source: "iana" + }, + "application/vnd.sealed.3df": { + source: "iana" + }, + "application/vnd.sealed.csf": { + source: "iana" + }, + "application/vnd.sealed.doc": { + source: "iana" + }, + "application/vnd.sealed.eml": { + source: "iana" + }, + "application/vnd.sealed.mht": { + source: "iana" + }, + "application/vnd.sealed.net": { + source: "iana" + }, + "application/vnd.sealed.ppt": { + source: "iana" + }, + "application/vnd.sealed.tiff": { + source: "iana" + }, + "application/vnd.sealed.xls": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + source: "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + source: "iana" + }, + "application/vnd.seemail": { + source: "iana", + extensions: ["see"] + }, + "application/vnd.seis+json": { + source: "iana", + compressible: true + }, + "application/vnd.sema": { + source: "iana", + extensions: ["sema"] + }, + "application/vnd.semd": { + source: "iana", + extensions: ["semd"] + }, + "application/vnd.semf": { + source: "iana", + extensions: ["semf"] + }, + "application/vnd.shade-save-file": { + source: "iana" + }, + "application/vnd.shana.informed.formdata": { + source: "iana", + extensions: ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + source: "iana", + extensions: ["itp"] + }, + "application/vnd.shana.informed.interchange": { + source: "iana", + extensions: ["iif"] + }, + "application/vnd.shana.informed.package": { + source: "iana", + extensions: ["ipk"] + }, + "application/vnd.shootproof+json": { + source: "iana", + compressible: true + }, + "application/vnd.shopkick+json": { + source: "iana", + compressible: true + }, + "application/vnd.shp": { + source: "iana" + }, + "application/vnd.shx": { + source: "iana" + }, + "application/vnd.sigrok.session": { + source: "iana" + }, + "application/vnd.simtech-mindmapper": { + source: "iana", + extensions: ["twd", "twds"] + }, + "application/vnd.siren+json": { + source: "iana", + compressible: true + }, + "application/vnd.smaf": { + source: "iana", + extensions: ["mmf"] + }, + "application/vnd.smart.notebook": { + source: "iana" + }, + "application/vnd.smart.teacher": { + source: "iana", + extensions: ["teacher"] + }, + "application/vnd.snesdev-page-table": { + source: "iana" + }, + "application/vnd.software602.filler.form+xml": { + source: "iana", + compressible: true, + extensions: ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + source: "iana" + }, + "application/vnd.solent.sdkm+xml": { + source: "iana", + compressible: true, + extensions: ["sdkm", "sdkd"] + }, + "application/vnd.spotfire.dxp": { + source: "iana", + extensions: ["dxp"] + }, + "application/vnd.spotfire.sfs": { + source: "iana", + extensions: ["sfs"] + }, + "application/vnd.sqlite3": { + source: "iana" + }, + "application/vnd.sss-cod": { + source: "iana" + }, + "application/vnd.sss-dtf": { + source: "iana" + }, + "application/vnd.sss-ntf": { + source: "iana" + }, + "application/vnd.stardivision.calc": { + source: "apache", + extensions: ["sdc"] + }, + "application/vnd.stardivision.draw": { + source: "apache", + extensions: ["sda"] + }, + "application/vnd.stardivision.impress": { + source: "apache", + extensions: ["sdd"] + }, + "application/vnd.stardivision.math": { + source: "apache", + extensions: ["smf"] + }, + "application/vnd.stardivision.writer": { + source: "apache", + extensions: ["sdw", "vor"] + }, + "application/vnd.stardivision.writer-global": { + source: "apache", + extensions: ["sgl"] + }, + "application/vnd.stepmania.package": { + source: "iana", + extensions: ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + source: "iana", + extensions: ["sm"] + }, + "application/vnd.street-stream": { + source: "iana" + }, + "application/vnd.sun.wadl+xml": { + source: "iana", + compressible: true, + extensions: ["wadl"] + }, + "application/vnd.sun.xml.calc": { + source: "apache", + extensions: ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + source: "apache", + extensions: ["stc"] + }, + "application/vnd.sun.xml.draw": { + source: "apache", + extensions: ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + source: "apache", + extensions: ["std"] + }, + "application/vnd.sun.xml.impress": { + source: "apache", + extensions: ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + source: "apache", + extensions: ["sti"] + }, + "application/vnd.sun.xml.math": { + source: "apache", + extensions: ["sxm"] + }, + "application/vnd.sun.xml.writer": { + source: "apache", + extensions: ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + source: "apache", + extensions: ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + source: "apache", + extensions: ["stw"] + }, + "application/vnd.sus-calendar": { + source: "iana", + extensions: ["sus", "susp"] + }, + "application/vnd.svd": { + source: "iana", + extensions: ["svd"] + }, + "application/vnd.swiftview-ics": { + source: "iana" + }, + "application/vnd.sycle+xml": { + source: "iana", + compressible: true + }, + "application/vnd.syft+json": { + source: "iana", + compressible: true + }, + "application/vnd.symbian.install": { + source: "apache", + extensions: ["sis", "sisx"] + }, + "application/vnd.syncml+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + source: "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmddf+xml": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + source: "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + source: "iana", + charset: "UTF-8", + compressible: true + }, + "application/vnd.syncml.ds.notification": { + source: "iana" + }, + "application/vnd.tableschema+json": { + source: "iana", + compressible: true + }, + "application/vnd.tao.intent-module-archive": { + source: "iana", + extensions: ["tao"] + }, + "application/vnd.tcpdump.pcap": { + source: "iana", + extensions: ["pcap", "cap", "dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + source: "iana", + compressible: true + }, + "application/vnd.tmd.mediaflex.api+xml": { + source: "iana", + compressible: true + }, + "application/vnd.tml": { + source: "iana" + }, + "application/vnd.tmobile-livetv": { + source: "iana", + extensions: ["tmo"] + }, + "application/vnd.tri.onesource": { + source: "iana" + }, + "application/vnd.trid.tpt": { + source: "iana", + extensions: ["tpt"] + }, + "application/vnd.triscape.mxs": { + source: "iana", + extensions: ["mxs"] + }, + "application/vnd.trueapp": { + source: "iana", + extensions: ["tra"] + }, + "application/vnd.truedoc": { + source: "iana" + }, + "application/vnd.ubisoft.webplayer": { + source: "iana" + }, + "application/vnd.ufdl": { + source: "iana", + extensions: ["ufd", "ufdl"] + }, + "application/vnd.uiq.theme": { + source: "iana", + extensions: ["utz"] + }, + "application/vnd.umajin": { + source: "iana", + extensions: ["umj"] + }, + "application/vnd.unity": { + source: "iana", + extensions: ["unityweb"] + }, + "application/vnd.uoml+xml": { + source: "iana", + compressible: true, + extensions: ["uoml"] + }, + "application/vnd.uplanet.alert": { + source: "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice": { + source: "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.cacheop": { + source: "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.channel": { + source: "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.list": { + source: "iana" + }, + "application/vnd.uplanet.list-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.listcmd": { + source: "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + source: "iana" + }, + "application/vnd.uplanet.signal": { + source: "iana" + }, + "application/vnd.uri-map": { + source: "iana" + }, + "application/vnd.valve.source.material": { + source: "iana" + }, + "application/vnd.vcx": { + source: "iana", + extensions: ["vcx"] + }, + "application/vnd.vd-study": { + source: "iana" + }, + "application/vnd.vectorworks": { + source: "iana" + }, + "application/vnd.vel+json": { + source: "iana", + compressible: true + }, + "application/vnd.verimatrix.vcas": { + source: "iana" + }, + "application/vnd.veritone.aion+json": { + source: "iana", + compressible: true + }, + "application/vnd.veryant.thin": { + source: "iana" + }, + "application/vnd.ves.encrypted": { + source: "iana" + }, + "application/vnd.vidsoft.vidconference": { + source: "iana" + }, + "application/vnd.visio": { + source: "iana", + extensions: ["vsd", "vst", "vss", "vsw"] + }, + "application/vnd.visionary": { + source: "iana", + extensions: ["vis"] + }, + "application/vnd.vividence.scriptfile": { + source: "iana" + }, + "application/vnd.vsf": { + source: "iana", + extensions: ["vsf"] + }, + "application/vnd.wap.sic": { + source: "iana" + }, + "application/vnd.wap.slc": { + source: "iana" + }, + "application/vnd.wap.wbxml": { + source: "iana", + charset: "UTF-8", + extensions: ["wbxml"] + }, + "application/vnd.wap.wmlc": { + source: "iana", + extensions: ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + source: "iana", + extensions: ["wmlsc"] + }, + "application/vnd.webturbo": { + source: "iana", + extensions: ["wtb"] + }, + "application/vnd.wfa.dpp": { + source: "iana" + }, + "application/vnd.wfa.p2p": { + source: "iana" + }, + "application/vnd.wfa.wsc": { + source: "iana" + }, + "application/vnd.windows.devicepairing": { + source: "iana" + }, + "application/vnd.wmc": { + source: "iana" + }, + "application/vnd.wmf.bootstrap": { + source: "iana" + }, + "application/vnd.wolfram.mathematica": { + source: "iana" + }, + "application/vnd.wolfram.mathematica.package": { + source: "iana" + }, + "application/vnd.wolfram.player": { + source: "iana", + extensions: ["nbp"] + }, + "application/vnd.wordperfect": { + source: "iana", + extensions: ["wpd"] + }, + "application/vnd.wqd": { + source: "iana", + extensions: ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + source: "iana" + }, + "application/vnd.wt.stf": { + source: "iana", + extensions: ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + source: "iana" + }, + "application/vnd.wv.csp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.wv.ssp+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xacml+json": { + source: "iana", + compressible: true + }, + "application/vnd.xara": { + source: "iana", + extensions: ["xar"] + }, + "application/vnd.xfdl": { + source: "iana", + extensions: ["xfdl"] + }, + "application/vnd.xfdl.webform": { + source: "iana" + }, + "application/vnd.xmi+xml": { + source: "iana", + compressible: true + }, + "application/vnd.xmpie.cpkg": { + source: "iana" + }, + "application/vnd.xmpie.dpkg": { + source: "iana" + }, + "application/vnd.xmpie.plan": { + source: "iana" + }, + "application/vnd.xmpie.ppkg": { + source: "iana" + }, + "application/vnd.xmpie.xlim": { + source: "iana" + }, + "application/vnd.yamaha.hv-dic": { + source: "iana", + extensions: ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + source: "iana", + extensions: ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + source: "iana", + extensions: ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + source: "iana", + extensions: ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + source: "iana", + compressible: true, + extensions: ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + source: "iana" + }, + "application/vnd.yamaha.smaf-audio": { + source: "iana", + extensions: ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + source: "iana", + extensions: ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + source: "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + source: "iana" + }, + "application/vnd.yaoweme": { + source: "iana" + }, + "application/vnd.yellowriver-custom-menu": { + source: "iana", + extensions: ["cmp"] + }, + "application/vnd.youtube.yt": { + source: "iana" + }, + "application/vnd.zul": { + source: "iana", + extensions: ["zir", "zirz"] + }, + "application/vnd.zzazz.deck+xml": { + source: "iana", + compressible: true, + extensions: ["zaz"] + }, + "application/voicexml+xml": { + source: "iana", + compressible: true, + extensions: ["vxml"] + }, + "application/voucher-cms+json": { + source: "iana", + compressible: true + }, + "application/vq-rtcpxr": { + source: "iana" + }, + "application/wasm": { + source: "iana", + compressible: true, + extensions: ["wasm"] + }, + "application/watcherinfo+xml": { + source: "iana", + compressible: true, + extensions: ["wif"] + }, + "application/webpush-options+json": { + source: "iana", + compressible: true + }, + "application/whoispp-query": { + source: "iana" + }, + "application/whoispp-response": { + source: "iana" + }, + "application/widget": { + source: "iana", + extensions: ["wgt"] + }, + "application/winhlp": { + source: "apache", + extensions: ["hlp"] + }, + "application/wita": { + source: "iana" + }, + "application/wordperfect5.1": { + source: "iana" + }, + "application/wsdl+xml": { + source: "iana", + compressible: true, + extensions: ["wsdl"] + }, + "application/wspolicy+xml": { + source: "iana", + compressible: true, + extensions: ["wspolicy"] + }, + "application/x-7z-compressed": { + source: "apache", + compressible: false, + extensions: ["7z"] + }, + "application/x-abiword": { + source: "apache", + extensions: ["abw"] + }, + "application/x-ace-compressed": { + source: "apache", + extensions: ["ace"] + }, + "application/x-amf": { + source: "apache" + }, + "application/x-apple-diskimage": { + source: "apache", + extensions: ["dmg"] + }, + "application/x-arj": { + compressible: false, + extensions: ["arj"] + }, + "application/x-authorware-bin": { + source: "apache", + extensions: ["aab", "x32", "u32", "vox"] + }, + "application/x-authorware-map": { + source: "apache", + extensions: ["aam"] + }, + "application/x-authorware-seg": { + source: "apache", + extensions: ["aas"] + }, + "application/x-bcpio": { + source: "apache", + extensions: ["bcpio"] + }, + "application/x-bdoc": { + compressible: false, + extensions: ["bdoc"] + }, + "application/x-bittorrent": { + source: "apache", + extensions: ["torrent"] + }, + "application/x-blorb": { + source: "apache", + extensions: ["blb", "blorb"] + }, + "application/x-bzip": { + source: "apache", + compressible: false, + extensions: ["bz"] + }, + "application/x-bzip2": { + source: "apache", + compressible: false, + extensions: ["bz2", "boz"] + }, + "application/x-cbr": { + source: "apache", + extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] + }, + "application/x-cdlink": { + source: "apache", + extensions: ["vcd"] + }, + "application/x-cfs-compressed": { + source: "apache", + extensions: ["cfs"] + }, + "application/x-chat": { + source: "apache", + extensions: ["chat"] + }, + "application/x-chess-pgn": { + source: "apache", + extensions: ["pgn"] + }, + "application/x-chrome-extension": { + extensions: ["crx"] + }, + "application/x-cocoa": { + source: "nginx", + extensions: ["cco"] + }, + "application/x-compress": { + source: "apache" + }, + "application/x-conference": { + source: "apache", + extensions: ["nsc"] + }, + "application/x-cpio": { + source: "apache", + extensions: ["cpio"] + }, + "application/x-csh": { + source: "apache", + extensions: ["csh"] + }, + "application/x-deb": { + compressible: false + }, + "application/x-debian-package": { + source: "apache", + extensions: ["deb", "udeb"] + }, + "application/x-dgc-compressed": { + source: "apache", + extensions: ["dgc"] + }, + "application/x-director": { + source: "apache", + extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] + }, + "application/x-doom": { + source: "apache", + extensions: ["wad"] + }, + "application/x-dtbncx+xml": { + source: "apache", + compressible: true, + extensions: ["ncx"] + }, + "application/x-dtbook+xml": { + source: "apache", + compressible: true, + extensions: ["dtb"] + }, + "application/x-dtbresource+xml": { + source: "apache", + compressible: true, + extensions: ["res"] + }, + "application/x-dvi": { + source: "apache", + compressible: false, + extensions: ["dvi"] + }, + "application/x-envoy": { + source: "apache", + extensions: ["evy"] + }, + "application/x-eva": { + source: "apache", + extensions: ["eva"] + }, + "application/x-font-bdf": { + source: "apache", + extensions: ["bdf"] + }, + "application/x-font-dos": { + source: "apache" + }, + "application/x-font-framemaker": { + source: "apache" + }, + "application/x-font-ghostscript": { + source: "apache", + extensions: ["gsf"] + }, + "application/x-font-libgrx": { + source: "apache" + }, + "application/x-font-linux-psf": { + source: "apache", + extensions: ["psf"] + }, + "application/x-font-pcf": { + source: "apache", + extensions: ["pcf"] + }, + "application/x-font-snf": { + source: "apache", + extensions: ["snf"] + }, + "application/x-font-speedo": { + source: "apache" + }, + "application/x-font-sunos-news": { + source: "apache" + }, + "application/x-font-type1": { + source: "apache", + extensions: ["pfa", "pfb", "pfm", "afm"] + }, + "application/x-font-vfont": { + source: "apache" + }, + "application/x-freearc": { + source: "apache", + extensions: ["arc"] + }, + "application/x-futuresplash": { + source: "apache", + extensions: ["spl"] + }, + "application/x-gca-compressed": { + source: "apache", + extensions: ["gca"] + }, + "application/x-glulx": { + source: "apache", + extensions: ["ulx"] + }, + "application/x-gnumeric": { + source: "apache", + extensions: ["gnumeric"] + }, + "application/x-gramps-xml": { + source: "apache", + extensions: ["gramps"] + }, + "application/x-gtar": { + source: "apache", + extensions: ["gtar"] + }, + "application/x-gzip": { + source: "apache" + }, + "application/x-hdf": { + source: "apache", + extensions: ["hdf"] + }, + "application/x-httpd-php": { + compressible: true, + extensions: ["php"] + }, + "application/x-install-instructions": { + source: "apache", + extensions: ["install"] + }, + "application/x-iso9660-image": { + source: "apache", + extensions: ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + extensions: ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + extensions: ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + extensions: ["pages"] + }, + "application/x-java-archive-diff": { + source: "nginx", + extensions: ["jardiff"] + }, + "application/x-java-jnlp-file": { + source: "apache", + compressible: false, + extensions: ["jnlp"] + }, + "application/x-javascript": { + compressible: true + }, + "application/x-keepass2": { + extensions: ["kdbx"] + }, + "application/x-latex": { + source: "apache", + compressible: false, + extensions: ["latex"] + }, + "application/x-lua-bytecode": { + extensions: ["luac"] + }, + "application/x-lzh-compressed": { + source: "apache", + extensions: ["lzh", "lha"] + }, + "application/x-makeself": { + source: "nginx", + extensions: ["run"] + }, + "application/x-mie": { + source: "apache", + extensions: ["mie"] + }, + "application/x-mobipocket-ebook": { + source: "apache", + extensions: ["prc", "mobi"] + }, + "application/x-mpegurl": { + compressible: false + }, + "application/x-ms-application": { + source: "apache", + extensions: ["application"] + }, + "application/x-ms-shortcut": { + source: "apache", + extensions: ["lnk"] + }, + "application/x-ms-wmd": { + source: "apache", + extensions: ["wmd"] + }, + "application/x-ms-wmz": { + source: "apache", + extensions: ["wmz"] + }, + "application/x-ms-xbap": { + source: "apache", + extensions: ["xbap"] + }, + "application/x-msaccess": { + source: "apache", + extensions: ["mdb"] + }, + "application/x-msbinder": { + source: "apache", + extensions: ["obd"] + }, + "application/x-mscardfile": { + source: "apache", + extensions: ["crd"] + }, + "application/x-msclip": { + source: "apache", + extensions: ["clp"] + }, + "application/x-msdos-program": { + extensions: ["exe"] + }, + "application/x-msdownload": { + source: "apache", + extensions: ["exe", "dll", "com", "bat", "msi"] + }, + "application/x-msmediaview": { + source: "apache", + extensions: ["mvb", "m13", "m14"] + }, + "application/x-msmetafile": { + source: "apache", + extensions: ["wmf", "wmz", "emf", "emz"] + }, + "application/x-msmoney": { + source: "apache", + extensions: ["mny"] + }, + "application/x-mspublisher": { + source: "apache", + extensions: ["pub"] + }, + "application/x-msschedule": { + source: "apache", + extensions: ["scd"] + }, + "application/x-msterminal": { + source: "apache", + extensions: ["trm"] + }, + "application/x-mswrite": { + source: "apache", + extensions: ["wri"] + }, + "application/x-netcdf": { + source: "apache", + extensions: ["nc", "cdf"] + }, + "application/x-ns-proxy-autoconfig": { + compressible: true, + extensions: ["pac"] + }, + "application/x-nzb": { + source: "apache", + extensions: ["nzb"] + }, + "application/x-perl": { + source: "nginx", + extensions: ["pl", "pm"] + }, + "application/x-pilot": { + source: "nginx", + extensions: ["prc", "pdb"] + }, + "application/x-pkcs12": { + source: "apache", + compressible: false, + extensions: ["p12", "pfx"] + }, + "application/x-pkcs7-certificates": { + source: "apache", + extensions: ["p7b", "spc"] + }, + "application/x-pkcs7-certreqresp": { + source: "apache", + extensions: ["p7r"] + }, + "application/x-pki-message": { + source: "iana" + }, + "application/x-rar-compressed": { + source: "apache", + compressible: false, + extensions: ["rar"] + }, + "application/x-redhat-package-manager": { + source: "nginx", + extensions: ["rpm"] + }, + "application/x-research-info-systems": { + source: "apache", + extensions: ["ris"] + }, + "application/x-sea": { + source: "nginx", + extensions: ["sea"] + }, + "application/x-sh": { + source: "apache", + compressible: true, + extensions: ["sh"] + }, + "application/x-shar": { + source: "apache", + extensions: ["shar"] + }, + "application/x-shockwave-flash": { + source: "apache", + compressible: false, + extensions: ["swf"] + }, + "application/x-silverlight-app": { + source: "apache", + extensions: ["xap"] + }, + "application/x-sql": { + source: "apache", + extensions: ["sql"] + }, + "application/x-stuffit": { + source: "apache", + compressible: false, + extensions: ["sit"] + }, + "application/x-stuffitx": { + source: "apache", + extensions: ["sitx"] + }, + "application/x-subrip": { + source: "apache", + extensions: ["srt"] + }, + "application/x-sv4cpio": { + source: "apache", + extensions: ["sv4cpio"] + }, + "application/x-sv4crc": { + source: "apache", + extensions: ["sv4crc"] + }, + "application/x-t3vm-image": { + source: "apache", + extensions: ["t3"] + }, + "application/x-tads": { + source: "apache", + extensions: ["gam"] + }, + "application/x-tar": { + source: "apache", + compressible: true, + extensions: ["tar"] + }, + "application/x-tcl": { + source: "apache", + extensions: ["tcl", "tk"] + }, + "application/x-tex": { + source: "apache", + extensions: ["tex"] + }, + "application/x-tex-tfm": { + source: "apache", + extensions: ["tfm"] + }, + "application/x-texinfo": { + source: "apache", + extensions: ["texinfo", "texi"] + }, + "application/x-tgif": { + source: "apache", + extensions: ["obj"] + }, + "application/x-ustar": { + source: "apache", + extensions: ["ustar"] + }, + "application/x-virtualbox-hdd": { + compressible: true, + extensions: ["hdd"] + }, + "application/x-virtualbox-ova": { + compressible: true, + extensions: ["ova"] + }, + "application/x-virtualbox-ovf": { + compressible: true, + extensions: ["ovf"] + }, + "application/x-virtualbox-vbox": { + compressible: true, + extensions: ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + compressible: false, + extensions: ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + compressible: true, + extensions: ["vdi"] + }, + "application/x-virtualbox-vhd": { + compressible: true, + extensions: ["vhd"] + }, + "application/x-virtualbox-vmdk": { + compressible: true, + extensions: ["vmdk"] + }, + "application/x-wais-source": { + source: "apache", + extensions: ["src"] + }, + "application/x-web-app-manifest+json": { + compressible: true, + extensions: ["webapp"] + }, + "application/x-www-form-urlencoded": { + source: "iana", + compressible: true + }, + "application/x-x509-ca-cert": { + source: "iana", + extensions: ["der", "crt", "pem"] + }, + "application/x-x509-ca-ra-cert": { + source: "iana" + }, + "application/x-x509-next-ca-cert": { + source: "iana" + }, + "application/x-xfig": { + source: "apache", + extensions: ["fig"] + }, + "application/x-xliff+xml": { + source: "apache", + compressible: true, + extensions: ["xlf"] + }, + "application/x-xpinstall": { + source: "apache", + compressible: false, + extensions: ["xpi"] + }, + "application/x-xz": { + source: "apache", + extensions: ["xz"] + }, + "application/x-zmachine": { + source: "apache", + extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] + }, + "application/x400-bp": { + source: "iana" + }, + "application/xacml+xml": { + source: "iana", + compressible: true + }, + "application/xaml+xml": { + source: "apache", + compressible: true, + extensions: ["xaml"] + }, + "application/xcap-att+xml": { + source: "iana", + compressible: true, + extensions: ["xav"] + }, + "application/xcap-caps+xml": { + source: "iana", + compressible: true, + extensions: ["xca"] + }, + "application/xcap-diff+xml": { + source: "iana", + compressible: true, + extensions: ["xdf"] + }, + "application/xcap-el+xml": { + source: "iana", + compressible: true, + extensions: ["xel"] + }, + "application/xcap-error+xml": { + source: "iana", + compressible: true + }, + "application/xcap-ns+xml": { + source: "iana", + compressible: true, + extensions: ["xns"] + }, + "application/xcon-conference-info+xml": { + source: "iana", + compressible: true + }, + "application/xcon-conference-info-diff+xml": { + source: "iana", + compressible: true + }, + "application/xenc+xml": { + source: "iana", + compressible: true, + extensions: ["xenc"] + }, + "application/xhtml+xml": { + source: "iana", + compressible: true, + extensions: ["xhtml", "xht"] + }, + "application/xhtml-voice+xml": { + source: "apache", + compressible: true + }, + "application/xliff+xml": { + source: "iana", + compressible: true, + extensions: ["xlf"] + }, + "application/xml": { + source: "iana", + compressible: true, + extensions: ["xml", "xsl", "xsd", "rng"] + }, + "application/xml-dtd": { + source: "iana", + compressible: true, + extensions: ["dtd"] + }, + "application/xml-external-parsed-entity": { + source: "iana" + }, + "application/xml-patch+xml": { + source: "iana", + compressible: true + }, + "application/xmpp+xml": { + source: "iana", + compressible: true + }, + "application/xop+xml": { + source: "iana", + compressible: true, + extensions: ["xop"] + }, + "application/xproc+xml": { + source: "apache", + compressible: true, + extensions: ["xpl"] + }, + "application/xslt+xml": { + source: "iana", + compressible: true, + extensions: ["xsl", "xslt"] + }, + "application/xspf+xml": { + source: "apache", + compressible: true, + extensions: ["xspf"] + }, + "application/xv+xml": { + source: "iana", + compressible: true, + extensions: ["mxml", "xhvml", "xvml", "xvm"] + }, + "application/yang": { + source: "iana", + extensions: ["yang"] + }, + "application/yang-data+json": { + source: "iana", + compressible: true + }, + "application/yang-data+xml": { + source: "iana", + compressible: true + }, + "application/yang-patch+json": { + source: "iana", + compressible: true + }, + "application/yang-patch+xml": { + source: "iana", + compressible: true + }, + "application/yin+xml": { + source: "iana", + compressible: true, + extensions: ["yin"] + }, + "application/zip": { + source: "iana", + compressible: false, + extensions: ["zip"] + }, + "application/zlib": { + source: "iana" + }, + "application/zstd": { + source: "iana" + }, + "audio/1d-interleaved-parityfec": { + source: "iana" + }, + "audio/32kadpcm": { + source: "iana" + }, + "audio/3gpp": { + source: "iana", + compressible: false, + extensions: ["3gpp"] + }, + "audio/3gpp2": { + source: "iana" + }, + "audio/aac": { + source: "iana" + }, + "audio/ac3": { + source: "iana" + }, + "audio/adpcm": { + source: "apache", + extensions: ["adp"] + }, + "audio/amr": { + source: "iana", + extensions: ["amr"] + }, + "audio/amr-wb": { + source: "iana" + }, + "audio/amr-wb+": { + source: "iana" + }, + "audio/aptx": { + source: "iana" + }, + "audio/asc": { + source: "iana" + }, + "audio/atrac-advanced-lossless": { + source: "iana" + }, + "audio/atrac-x": { + source: "iana" + }, + "audio/atrac3": { + source: "iana" + }, + "audio/basic": { + source: "iana", + compressible: false, + extensions: ["au", "snd"] + }, + "audio/bv16": { + source: "iana" + }, + "audio/bv32": { + source: "iana" + }, + "audio/clearmode": { + source: "iana" + }, + "audio/cn": { + source: "iana" + }, + "audio/dat12": { + source: "iana" + }, + "audio/dls": { + source: "iana" + }, + "audio/dsr-es201108": { + source: "iana" + }, + "audio/dsr-es202050": { + source: "iana" + }, + "audio/dsr-es202211": { + source: "iana" + }, + "audio/dsr-es202212": { + source: "iana" + }, + "audio/dv": { + source: "iana" + }, + "audio/dvi4": { + source: "iana" + }, + "audio/eac3": { + source: "iana" + }, + "audio/encaprtp": { + source: "iana" + }, + "audio/evrc": { + source: "iana" + }, + "audio/evrc-qcp": { + source: "iana" + }, + "audio/evrc0": { + source: "iana" + }, + "audio/evrc1": { + source: "iana" + }, + "audio/evrcb": { + source: "iana" + }, + "audio/evrcb0": { + source: "iana" + }, + "audio/evrcb1": { + source: "iana" + }, + "audio/evrcnw": { + source: "iana" + }, + "audio/evrcnw0": { + source: "iana" + }, + "audio/evrcnw1": { + source: "iana" + }, + "audio/evrcwb": { + source: "iana" + }, + "audio/evrcwb0": { + source: "iana" + }, + "audio/evrcwb1": { + source: "iana" + }, + "audio/evs": { + source: "iana" + }, + "audio/flexfec": { + source: "iana" + }, + "audio/fwdred": { + source: "iana" + }, + "audio/g711-0": { + source: "iana" + }, + "audio/g719": { + source: "iana" + }, + "audio/g722": { + source: "iana" + }, + "audio/g7221": { + source: "iana" + }, + "audio/g723": { + source: "iana" + }, + "audio/g726-16": { + source: "iana" + }, + "audio/g726-24": { + source: "iana" + }, + "audio/g726-32": { + source: "iana" + }, + "audio/g726-40": { + source: "iana" + }, + "audio/g728": { + source: "iana" + }, + "audio/g729": { + source: "iana" + }, + "audio/g7291": { + source: "iana" + }, + "audio/g729d": { + source: "iana" + }, + "audio/g729e": { + source: "iana" + }, + "audio/gsm": { + source: "iana" + }, + "audio/gsm-efr": { + source: "iana" + }, + "audio/gsm-hr-08": { + source: "iana" + }, + "audio/ilbc": { + source: "iana" + }, + "audio/ip-mr_v2.5": { + source: "iana" + }, + "audio/isac": { + source: "apache" + }, + "audio/l16": { + source: "iana" + }, + "audio/l20": { + source: "iana" + }, + "audio/l24": { + source: "iana", + compressible: false + }, + "audio/l8": { + source: "iana" + }, + "audio/lpc": { + source: "iana" + }, + "audio/melp": { + source: "iana" + }, + "audio/melp1200": { + source: "iana" + }, + "audio/melp2400": { + source: "iana" + }, + "audio/melp600": { + source: "iana" + }, + "audio/mhas": { + source: "iana" + }, + "audio/midi": { + source: "apache", + extensions: ["mid", "midi", "kar", "rmi"] + }, + "audio/mobile-xmf": { + source: "iana", + extensions: ["mxmf"] + }, + "audio/mp3": { + compressible: false, + extensions: ["mp3"] + }, + "audio/mp4": { + source: "iana", + compressible: false, + extensions: ["m4a", "mp4a"] + }, + "audio/mp4a-latm": { + source: "iana" + }, + "audio/mpa": { + source: "iana" + }, + "audio/mpa-robust": { + source: "iana" + }, + "audio/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] + }, + "audio/mpeg4-generic": { + source: "iana" + }, + "audio/musepack": { + source: "apache" + }, + "audio/ogg": { + source: "iana", + compressible: false, + extensions: ["oga", "ogg", "spx", "opus"] + }, + "audio/opus": { + source: "iana" + }, + "audio/parityfec": { + source: "iana" + }, + "audio/pcma": { + source: "iana" + }, + "audio/pcma-wb": { + source: "iana" + }, + "audio/pcmu": { + source: "iana" + }, + "audio/pcmu-wb": { + source: "iana" + }, + "audio/prs.sid": { + source: "iana" + }, + "audio/qcelp": { + source: "iana" + }, + "audio/raptorfec": { + source: "iana" + }, + "audio/red": { + source: "iana" + }, + "audio/rtp-enc-aescm128": { + source: "iana" + }, + "audio/rtp-midi": { + source: "iana" + }, + "audio/rtploopback": { + source: "iana" + }, + "audio/rtx": { + source: "iana" + }, + "audio/s3m": { + source: "apache", + extensions: ["s3m"] + }, + "audio/scip": { + source: "iana" + }, + "audio/silk": { + source: "apache", + extensions: ["sil"] + }, + "audio/smv": { + source: "iana" + }, + "audio/smv-qcp": { + source: "iana" + }, + "audio/smv0": { + source: "iana" + }, + "audio/sofa": { + source: "iana" + }, + "audio/sp-midi": { + source: "iana" + }, + "audio/speex": { + source: "iana" + }, + "audio/t140c": { + source: "iana" + }, + "audio/t38": { + source: "iana" + }, + "audio/telephone-event": { + source: "iana" + }, + "audio/tetra_acelp": { + source: "iana" + }, + "audio/tetra_acelp_bb": { + source: "iana" + }, + "audio/tone": { + source: "iana" + }, + "audio/tsvcis": { + source: "iana" + }, + "audio/uemclip": { + source: "iana" + }, + "audio/ulpfec": { + source: "iana" + }, + "audio/usac": { + source: "iana" + }, + "audio/vdvi": { + source: "iana" + }, + "audio/vmr-wb": { + source: "iana" + }, + "audio/vnd.3gpp.iufp": { + source: "iana" + }, + "audio/vnd.4sb": { + source: "iana" + }, + "audio/vnd.audiokoz": { + source: "iana" + }, + "audio/vnd.celp": { + source: "iana" + }, + "audio/vnd.cisco.nse": { + source: "iana" + }, + "audio/vnd.cmles.radio-events": { + source: "iana" + }, + "audio/vnd.cns.anp1": { + source: "iana" + }, + "audio/vnd.cns.inf1": { + source: "iana" + }, + "audio/vnd.dece.audio": { + source: "iana", + extensions: ["uva", "uvva"] + }, + "audio/vnd.digital-winds": { + source: "iana", + extensions: ["eol"] + }, + "audio/vnd.dlna.adts": { + source: "iana" + }, + "audio/vnd.dolby.heaac.1": { + source: "iana" + }, + "audio/vnd.dolby.heaac.2": { + source: "iana" + }, + "audio/vnd.dolby.mlp": { + source: "iana" + }, + "audio/vnd.dolby.mps": { + source: "iana" + }, + "audio/vnd.dolby.pl2": { + source: "iana" + }, + "audio/vnd.dolby.pl2x": { + source: "iana" + }, + "audio/vnd.dolby.pl2z": { + source: "iana" + }, + "audio/vnd.dolby.pulse.1": { + source: "iana" + }, + "audio/vnd.dra": { + source: "iana", + extensions: ["dra"] + }, + "audio/vnd.dts": { + source: "iana", + extensions: ["dts"] + }, + "audio/vnd.dts.hd": { + source: "iana", + extensions: ["dtshd"] + }, + "audio/vnd.dts.uhd": { + source: "iana" + }, + "audio/vnd.dvb.file": { + source: "iana" + }, + "audio/vnd.everad.plj": { + source: "iana" + }, + "audio/vnd.hns.audio": { + source: "iana" + }, + "audio/vnd.lucent.voice": { + source: "iana", + extensions: ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + source: "iana", + extensions: ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + source: "iana" + }, + "audio/vnd.nortel.vbk": { + source: "iana" + }, + "audio/vnd.nuera.ecelp4800": { + source: "iana", + extensions: ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + source: "iana", + extensions: ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + source: "iana", + extensions: ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + source: "iana" + }, + "audio/vnd.presonus.multitrack": { + source: "iana" + }, + "audio/vnd.qcelp": { + source: "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + source: "iana" + }, + "audio/vnd.rip": { + source: "iana", + extensions: ["rip"] + }, + "audio/vnd.rn-realaudio": { + compressible: false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + source: "iana" + }, + "audio/vnd.vmx.cvsd": { + source: "iana" + }, + "audio/vnd.wave": { + compressible: false + }, + "audio/vorbis": { + source: "iana", + compressible: false + }, + "audio/vorbis-config": { + source: "iana" + }, + "audio/wav": { + compressible: false, + extensions: ["wav"] + }, + "audio/wave": { + compressible: false, + extensions: ["wav"] + }, + "audio/webm": { + source: "apache", + compressible: false, + extensions: ["weba"] + }, + "audio/x-aac": { + source: "apache", + compressible: false, + extensions: ["aac"] + }, + "audio/x-aiff": { + source: "apache", + extensions: ["aif", "aiff", "aifc"] + }, + "audio/x-caf": { + source: "apache", + compressible: false, + extensions: ["caf"] + }, + "audio/x-flac": { + source: "apache", + extensions: ["flac"] + }, + "audio/x-m4a": { + source: "nginx", + extensions: ["m4a"] + }, + "audio/x-matroska": { + source: "apache", + extensions: ["mka"] + }, + "audio/x-mpegurl": { + source: "apache", + extensions: ["m3u"] + }, + "audio/x-ms-wax": { + source: "apache", + extensions: ["wax"] + }, + "audio/x-ms-wma": { + source: "apache", + extensions: ["wma"] + }, + "audio/x-pn-realaudio": { + source: "apache", + extensions: ["ram", "ra"] + }, + "audio/x-pn-realaudio-plugin": { + source: "apache", + extensions: ["rmp"] + }, + "audio/x-realaudio": { + source: "nginx", + extensions: ["ra"] + }, + "audio/x-tta": { + source: "apache" + }, + "audio/x-wav": { + source: "apache", + extensions: ["wav"] + }, + "audio/xm": { + source: "apache", + extensions: ["xm"] + }, + "chemical/x-cdx": { + source: "apache", + extensions: ["cdx"] + }, + "chemical/x-cif": { + source: "apache", + extensions: ["cif"] + }, + "chemical/x-cmdf": { + source: "apache", + extensions: ["cmdf"] + }, + "chemical/x-cml": { + source: "apache", + extensions: ["cml"] + }, + "chemical/x-csml": { + source: "apache", + extensions: ["csml"] + }, + "chemical/x-pdb": { + source: "apache" + }, + "chemical/x-xyz": { + source: "apache", + extensions: ["xyz"] + }, + "font/collection": { + source: "iana", + extensions: ["ttc"] + }, + "font/otf": { + source: "iana", + compressible: true, + extensions: ["otf"] + }, + "font/sfnt": { + source: "iana" + }, + "font/ttf": { + source: "iana", + compressible: true, + extensions: ["ttf"] + }, + "font/woff": { + source: "iana", + extensions: ["woff"] + }, + "font/woff2": { + source: "iana", + extensions: ["woff2"] + }, + "image/aces": { + source: "iana", + extensions: ["exr"] + }, + "image/apng": { + compressible: false, + extensions: ["apng"] + }, + "image/avci": { + source: "iana", + extensions: ["avci"] + }, + "image/avcs": { + source: "iana", + extensions: ["avcs"] + }, + "image/avif": { + source: "iana", + compressible: false, + extensions: ["avif"] + }, + "image/bmp": { + source: "iana", + compressible: true, + extensions: ["bmp"] + }, + "image/cgm": { + source: "iana", + extensions: ["cgm"] + }, + "image/dicom-rle": { + source: "iana", + extensions: ["drle"] + }, + "image/emf": { + source: "iana", + extensions: ["emf"] + }, + "image/fits": { + source: "iana", + extensions: ["fits"] + }, + "image/g3fax": { + source: "iana", + extensions: ["g3"] + }, + "image/gif": { + source: "iana", + compressible: false, + extensions: ["gif"] + }, + "image/heic": { + source: "iana", + extensions: ["heic"] + }, + "image/heic-sequence": { + source: "iana", + extensions: ["heics"] + }, + "image/heif": { + source: "iana", + extensions: ["heif"] + }, + "image/heif-sequence": { + source: "iana", + extensions: ["heifs"] + }, + "image/hej2k": { + source: "iana", + extensions: ["hej2"] + }, + "image/hsj2": { + source: "iana", + extensions: ["hsj2"] + }, + "image/ief": { + source: "iana", + extensions: ["ief"] + }, + "image/jls": { + source: "iana", + extensions: ["jls"] + }, + "image/jp2": { + source: "iana", + compressible: false, + extensions: ["jp2", "jpg2"] + }, + "image/jpeg": { + source: "iana", + compressible: false, + extensions: ["jpeg", "jpg", "jpe"] + }, + "image/jph": { + source: "iana", + extensions: ["jph"] + }, + "image/jphc": { + source: "iana", + extensions: ["jhc"] + }, + "image/jpm": { + source: "iana", + compressible: false, + extensions: ["jpm"] + }, + "image/jpx": { + source: "iana", + compressible: false, + extensions: ["jpx", "jpf"] + }, + "image/jxr": { + source: "iana", + extensions: ["jxr"] + }, + "image/jxra": { + source: "iana", + extensions: ["jxra"] + }, + "image/jxrs": { + source: "iana", + extensions: ["jxrs"] + }, + "image/jxs": { + source: "iana", + extensions: ["jxs"] + }, + "image/jxsc": { + source: "iana", + extensions: ["jxsc"] + }, + "image/jxsi": { + source: "iana", + extensions: ["jxsi"] + }, + "image/jxss": { + source: "iana", + extensions: ["jxss"] + }, + "image/ktx": { + source: "iana", + extensions: ["ktx"] + }, + "image/ktx2": { + source: "iana", + extensions: ["ktx2"] + }, + "image/naplps": { + source: "iana" + }, + "image/pjpeg": { + compressible: false + }, + "image/png": { + source: "iana", + compressible: false, + extensions: ["png"] + }, + "image/prs.btif": { + source: "iana", + extensions: ["btif"] + }, + "image/prs.pti": { + source: "iana", + extensions: ["pti"] + }, + "image/pwg-raster": { + source: "iana" + }, + "image/sgi": { + source: "apache", + extensions: ["sgi"] + }, + "image/svg+xml": { + source: "iana", + compressible: true, + extensions: ["svg", "svgz"] + }, + "image/t38": { + source: "iana", + extensions: ["t38"] + }, + "image/tiff": { + source: "iana", + compressible: false, + extensions: ["tif", "tiff"] + }, + "image/tiff-fx": { + source: "iana", + extensions: ["tfx"] + }, + "image/vnd.adobe.photoshop": { + source: "iana", + compressible: true, + extensions: ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + source: "iana", + extensions: ["azv"] + }, + "image/vnd.cns.inf2": { + source: "iana" + }, + "image/vnd.dece.graphic": { + source: "iana", + extensions: ["uvi", "uvvi", "uvg", "uvvg"] + }, + "image/vnd.djvu": { + source: "iana", + extensions: ["djvu", "djv"] + }, + "image/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "image/vnd.dwg": { + source: "iana", + extensions: ["dwg"] + }, + "image/vnd.dxf": { + source: "iana", + extensions: ["dxf"] + }, + "image/vnd.fastbidsheet": { + source: "iana", + extensions: ["fbs"] + }, + "image/vnd.fpx": { + source: "iana", + extensions: ["fpx"] + }, + "image/vnd.fst": { + source: "iana", + extensions: ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + source: "iana", + extensions: ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + source: "iana", + extensions: ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + source: "iana" + }, + "image/vnd.microsoft.icon": { + source: "iana", + compressible: true, + extensions: ["ico"] + }, + "image/vnd.mix": { + source: "iana" + }, + "image/vnd.mozilla.apng": { + source: "iana" + }, + "image/vnd.ms-dds": { + compressible: true, + extensions: ["dds"] + }, + "image/vnd.ms-modi": { + source: "iana", + extensions: ["mdi"] + }, + "image/vnd.ms-photo": { + source: "apache", + extensions: ["wdp"] + }, + "image/vnd.net-fpx": { + source: "iana", + extensions: ["npx"] + }, + "image/vnd.pco.b16": { + source: "iana", + extensions: ["b16"] + }, + "image/vnd.radiance": { + source: "iana" + }, + "image/vnd.sealed.png": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + source: "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + source: "iana" + }, + "image/vnd.svf": { + source: "iana" + }, + "image/vnd.tencent.tap": { + source: "iana", + extensions: ["tap"] + }, + "image/vnd.valve.source.texture": { + source: "iana", + extensions: ["vtf"] + }, + "image/vnd.wap.wbmp": { + source: "iana", + extensions: ["wbmp"] + }, + "image/vnd.xiff": { + source: "iana", + extensions: ["xif"] + }, + "image/vnd.zbrush.pcx": { + source: "iana", + extensions: ["pcx"] + }, + "image/webp": { + source: "apache", + extensions: ["webp"] + }, + "image/wmf": { + source: "iana", + extensions: ["wmf"] + }, + "image/x-3ds": { + source: "apache", + extensions: ["3ds"] + }, + "image/x-cmu-raster": { + source: "apache", + extensions: ["ras"] + }, + "image/x-cmx": { + source: "apache", + extensions: ["cmx"] + }, + "image/x-freehand": { + source: "apache", + extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] + }, + "image/x-icon": { + source: "apache", + compressible: true, + extensions: ["ico"] + }, + "image/x-jng": { + source: "nginx", + extensions: ["jng"] + }, + "image/x-mrsid-image": { + source: "apache", + extensions: ["sid"] + }, + "image/x-ms-bmp": { + source: "nginx", + compressible: true, + extensions: ["bmp"] + }, + "image/x-pcx": { + source: "apache", + extensions: ["pcx"] + }, + "image/x-pict": { + source: "apache", + extensions: ["pic", "pct"] + }, + "image/x-portable-anymap": { + source: "apache", + extensions: ["pnm"] + }, + "image/x-portable-bitmap": { + source: "apache", + extensions: ["pbm"] + }, + "image/x-portable-graymap": { + source: "apache", + extensions: ["pgm"] + }, + "image/x-portable-pixmap": { + source: "apache", + extensions: ["ppm"] + }, + "image/x-rgb": { + source: "apache", + extensions: ["rgb"] + }, + "image/x-tga": { + source: "apache", + extensions: ["tga"] + }, + "image/x-xbitmap": { + source: "apache", + extensions: ["xbm"] + }, + "image/x-xcf": { + compressible: false + }, + "image/x-xpixmap": { + source: "apache", + extensions: ["xpm"] + }, + "image/x-xwindowdump": { + source: "apache", + extensions: ["xwd"] + }, + "message/cpim": { + source: "iana" + }, + "message/delivery-status": { + source: "iana" + }, + "message/disposition-notification": { + source: "iana", + extensions: [ + "disposition-notification" + ] + }, + "message/external-body": { + source: "iana" + }, + "message/feedback-report": { + source: "iana" + }, + "message/global": { + source: "iana", + extensions: ["u8msg"] + }, + "message/global-delivery-status": { + source: "iana", + extensions: ["u8dsn"] + }, + "message/global-disposition-notification": { + source: "iana", + extensions: ["u8mdn"] + }, + "message/global-headers": { + source: "iana", + extensions: ["u8hdr"] + }, + "message/http": { + source: "iana", + compressible: false + }, + "message/imdn+xml": { + source: "iana", + compressible: true + }, + "message/news": { + source: "iana" + }, + "message/partial": { + source: "iana", + compressible: false + }, + "message/rfc822": { + source: "iana", + compressible: true, + extensions: ["eml", "mime"] + }, + "message/s-http": { + source: "iana" + }, + "message/sip": { + source: "iana" + }, + "message/sipfrag": { + source: "iana" + }, + "message/tracking-status": { + source: "iana" + }, + "message/vnd.si.simp": { + source: "iana" + }, + "message/vnd.wfa.wsc": { + source: "iana", + extensions: ["wsc"] + }, + "model/3mf": { + source: "iana", + extensions: ["3mf"] + }, + "model/e57": { + source: "iana" + }, + "model/gltf+json": { + source: "iana", + compressible: true, + extensions: ["gltf"] + }, + "model/gltf-binary": { + source: "iana", + compressible: true, + extensions: ["glb"] + }, + "model/iges": { + source: "iana", + compressible: false, + extensions: ["igs", "iges"] + }, + "model/mesh": { + source: "iana", + compressible: false, + extensions: ["msh", "mesh", "silo"] + }, + "model/mtl": { + source: "iana", + extensions: ["mtl"] + }, + "model/obj": { + source: "iana", + extensions: ["obj"] + }, + "model/step": { + source: "iana" + }, + "model/step+xml": { + source: "iana", + compressible: true, + extensions: ["stpx"] + }, + "model/step+zip": { + source: "iana", + compressible: false, + extensions: ["stpz"] + }, + "model/step-xml+zip": { + source: "iana", + compressible: false, + extensions: ["stpxz"] + }, + "model/stl": { + source: "iana", + extensions: ["stl"] + }, + "model/vnd.collada+xml": { + source: "iana", + compressible: true, + extensions: ["dae"] + }, + "model/vnd.dwf": { + source: "iana", + extensions: ["dwf"] + }, + "model/vnd.flatland.3dml": { + source: "iana" + }, + "model/vnd.gdl": { + source: "iana", + extensions: ["gdl"] + }, + "model/vnd.gs-gdl": { + source: "apache" + }, + "model/vnd.gs.gdl": { + source: "iana" + }, + "model/vnd.gtw": { + source: "iana", + extensions: ["gtw"] + }, + "model/vnd.moml+xml": { + source: "iana", + compressible: true + }, + "model/vnd.mts": { + source: "iana", + extensions: ["mts"] + }, + "model/vnd.opengex": { + source: "iana", + extensions: ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + source: "iana", + extensions: ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + source: "iana", + extensions: ["x_t"] + }, + "model/vnd.pytha.pyox": { + source: "iana" + }, + "model/vnd.rosette.annotated-data-model": { + source: "iana" + }, + "model/vnd.sap.vds": { + source: "iana", + extensions: ["vds"] + }, + "model/vnd.usdz+zip": { + source: "iana", + compressible: false, + extensions: ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + source: "iana", + extensions: ["bsp"] + }, + "model/vnd.vtu": { + source: "iana", + extensions: ["vtu"] + }, + "model/vrml": { + source: "iana", + compressible: false, + extensions: ["wrl", "vrml"] + }, + "model/x3d+binary": { + source: "apache", + compressible: false, + extensions: ["x3db", "x3dbz"] + }, + "model/x3d+fastinfoset": { + source: "iana", + extensions: ["x3db"] + }, + "model/x3d+vrml": { + source: "apache", + compressible: false, + extensions: ["x3dv", "x3dvz"] + }, + "model/x3d+xml": { + source: "iana", + compressible: true, + extensions: ["x3d", "x3dz"] + }, + "model/x3d-vrml": { + source: "iana", + extensions: ["x3dv"] + }, + "multipart/alternative": { + source: "iana", + compressible: false + }, + "multipart/appledouble": { + source: "iana" + }, + "multipart/byteranges": { + source: "iana" + }, + "multipart/digest": { + source: "iana" + }, + "multipart/encrypted": { + source: "iana", + compressible: false + }, + "multipart/form-data": { + source: "iana", + compressible: false + }, + "multipart/header-set": { + source: "iana" + }, + "multipart/mixed": { + source: "iana" + }, + "multipart/multilingual": { + source: "iana" + }, + "multipart/parallel": { + source: "iana" + }, + "multipart/related": { + source: "iana", + compressible: false + }, + "multipart/report": { + source: "iana" + }, + "multipart/signed": { + source: "iana", + compressible: false + }, + "multipart/vnd.bint.med-plus": { + source: "iana" + }, + "multipart/voice-message": { + source: "iana" + }, + "multipart/x-mixed-replace": { + source: "iana" + }, + "text/1d-interleaved-parityfec": { + source: "iana" + }, + "text/cache-manifest": { + source: "iana", + compressible: true, + extensions: ["appcache", "manifest"] + }, + "text/calendar": { + source: "iana", + extensions: ["ics", "ifb"] + }, + "text/calender": { + compressible: true + }, + "text/cmd": { + compressible: true + }, + "text/coffeescript": { + extensions: ["coffee", "litcoffee"] + }, + "text/cql": { + source: "iana" + }, + "text/cql-expression": { + source: "iana" + }, + "text/cql-identifier": { + source: "iana" + }, + "text/css": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["css"] + }, + "text/csv": { + source: "iana", + compressible: true, + extensions: ["csv"] + }, + "text/csv-schema": { + source: "iana" + }, + "text/directory": { + source: "iana" + }, + "text/dns": { + source: "iana" + }, + "text/ecmascript": { + source: "iana" + }, + "text/encaprtp": { + source: "iana" + }, + "text/enriched": { + source: "iana" + }, + "text/fhirpath": { + source: "iana" + }, + "text/flexfec": { + source: "iana" + }, + "text/fwdred": { + source: "iana" + }, + "text/gff3": { + source: "iana" + }, + "text/grammar-ref-list": { + source: "iana" + }, + "text/html": { + source: "iana", + compressible: true, + extensions: ["html", "htm", "shtml"] + }, + "text/jade": { + extensions: ["jade"] + }, + "text/javascript": { + source: "iana", + compressible: true + }, + "text/jcr-cnd": { + source: "iana" + }, + "text/jsx": { + compressible: true, + extensions: ["jsx"] + }, + "text/less": { + compressible: true, + extensions: ["less"] + }, + "text/markdown": { + source: "iana", + compressible: true, + extensions: ["markdown", "md"] + }, + "text/mathml": { + source: "nginx", + extensions: ["mml"] + }, + "text/mdx": { + compressible: true, + extensions: ["mdx"] + }, + "text/mizar": { + source: "iana" + }, + "text/n3": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["n3"] + }, + "text/parameters": { + source: "iana", + charset: "UTF-8" + }, + "text/parityfec": { + source: "iana" + }, + "text/plain": { + source: "iana", + compressible: true, + extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] + }, + "text/provenance-notation": { + source: "iana", + charset: "UTF-8" + }, + "text/prs.fallenstein.rst": { + source: "iana" + }, + "text/prs.lines.tag": { + source: "iana", + extensions: ["dsc"] + }, + "text/prs.prop.logic": { + source: "iana" + }, + "text/raptorfec": { + source: "iana" + }, + "text/red": { + source: "iana" + }, + "text/rfc822-headers": { + source: "iana" + }, + "text/richtext": { + source: "iana", + compressible: true, + extensions: ["rtx"] + }, + "text/rtf": { + source: "iana", + compressible: true, + extensions: ["rtf"] + }, + "text/rtp-enc-aescm128": { + source: "iana" + }, + "text/rtploopback": { + source: "iana" + }, + "text/rtx": { + source: "iana" + }, + "text/sgml": { + source: "iana", + extensions: ["sgml", "sgm"] + }, + "text/shaclc": { + source: "iana" + }, + "text/shex": { + source: "iana", + extensions: ["shex"] + }, + "text/slim": { + extensions: ["slim", "slm"] + }, + "text/spdx": { + source: "iana", + extensions: ["spdx"] + }, + "text/strings": { + source: "iana" + }, + "text/stylus": { + extensions: ["stylus", "styl"] + }, + "text/t140": { + source: "iana" + }, + "text/tab-separated-values": { + source: "iana", + compressible: true, + extensions: ["tsv"] + }, + "text/troff": { + source: "iana", + extensions: ["t", "tr", "roff", "man", "me", "ms"] + }, + "text/turtle": { + source: "iana", + charset: "UTF-8", + extensions: ["ttl"] + }, + "text/ulpfec": { + source: "iana" + }, + "text/uri-list": { + source: "iana", + compressible: true, + extensions: ["uri", "uris", "urls"] + }, + "text/vcard": { + source: "iana", + compressible: true, + extensions: ["vcard"] + }, + "text/vnd.a": { + source: "iana" + }, + "text/vnd.abc": { + source: "iana" + }, + "text/vnd.ascii-art": { + source: "iana" + }, + "text/vnd.curl": { + source: "iana", + extensions: ["curl"] + }, + "text/vnd.curl.dcurl": { + source: "apache", + extensions: ["dcurl"] + }, + "text/vnd.curl.mcurl": { + source: "apache", + extensions: ["mcurl"] + }, + "text/vnd.curl.scurl": { + source: "apache", + extensions: ["scurl"] + }, + "text/vnd.debian.copyright": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.dmclientscript": { + source: "iana" + }, + "text/vnd.dvb.subtitle": { + source: "iana", + extensions: ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + source: "iana", + extensions: ["ged"] + }, + "text/vnd.ficlab.flt": { + source: "iana" + }, + "text/vnd.fly": { + source: "iana", + extensions: ["fly"] + }, + "text/vnd.fmi.flexstor": { + source: "iana", + extensions: ["flx"] + }, + "text/vnd.gml": { + source: "iana" + }, + "text/vnd.graphviz": { + source: "iana", + extensions: ["gv"] + }, + "text/vnd.hans": { + source: "iana" + }, + "text/vnd.hgl": { + source: "iana" + }, + "text/vnd.in3d.3dml": { + source: "iana", + extensions: ["3dml"] + }, + "text/vnd.in3d.spot": { + source: "iana", + extensions: ["spot"] + }, + "text/vnd.iptc.newsml": { + source: "iana" + }, + "text/vnd.iptc.nitf": { + source: "iana" + }, + "text/vnd.latex-z": { + source: "iana" + }, + "text/vnd.motorola.reflex": { + source: "iana" + }, + "text/vnd.ms-mediapackage": { + source: "iana" + }, + "text/vnd.net2phone.commcenter.command": { + source: "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + source: "iana" + }, + "text/vnd.senx.warpscript": { + source: "iana" + }, + "text/vnd.si.uricatalogue": { + source: "iana" + }, + "text/vnd.sosi": { + source: "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + source: "iana", + charset: "UTF-8", + extensions: ["jad"] + }, + "text/vnd.trolltech.linguist": { + source: "iana", + charset: "UTF-8" + }, + "text/vnd.wap.si": { + source: "iana" + }, + "text/vnd.wap.sl": { + source: "iana" + }, + "text/vnd.wap.wml": { + source: "iana", + extensions: ["wml"] + }, + "text/vnd.wap.wmlscript": { + source: "iana", + extensions: ["wmls"] + }, + "text/vtt": { + source: "iana", + charset: "UTF-8", + compressible: true, + extensions: ["vtt"] + }, + "text/x-asm": { + source: "apache", + extensions: ["s", "asm"] + }, + "text/x-c": { + source: "apache", + extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] + }, + "text/x-component": { + source: "nginx", + extensions: ["htc"] + }, + "text/x-fortran": { + source: "apache", + extensions: ["f", "for", "f77", "f90"] + }, + "text/x-gwt-rpc": { + compressible: true + }, + "text/x-handlebars-template": { + extensions: ["hbs"] + }, + "text/x-java-source": { + source: "apache", + extensions: ["java"] + }, + "text/x-jquery-tmpl": { + compressible: true + }, + "text/x-lua": { + extensions: ["lua"] + }, + "text/x-markdown": { + compressible: true, + extensions: ["mkd"] + }, + "text/x-nfo": { + source: "apache", + extensions: ["nfo"] + }, + "text/x-opml": { + source: "apache", + extensions: ["opml"] + }, + "text/x-org": { + compressible: true, + extensions: ["org"] + }, + "text/x-pascal": { + source: "apache", + extensions: ["p", "pas"] + }, + "text/x-processing": { + compressible: true, + extensions: ["pde"] + }, + "text/x-sass": { + extensions: ["sass"] + }, + "text/x-scss": { + extensions: ["scss"] + }, + "text/x-setext": { + source: "apache", + extensions: ["etx"] + }, + "text/x-sfv": { + source: "apache", + extensions: ["sfv"] + }, + "text/x-suse-ymp": { + compressible: true, + extensions: ["ymp"] + }, + "text/x-uuencode": { + source: "apache", + extensions: ["uu"] + }, + "text/x-vcalendar": { + source: "apache", + extensions: ["vcs"] + }, + "text/x-vcard": { + source: "apache", + extensions: ["vcf"] + }, + "text/xml": { + source: "iana", + compressible: true, + extensions: ["xml"] + }, + "text/xml-external-parsed-entity": { + source: "iana" + }, + "text/yaml": { + compressible: true, + extensions: ["yaml", "yml"] + }, + "video/1d-interleaved-parityfec": { + source: "iana" + }, + "video/3gpp": { + source: "iana", + extensions: ["3gp", "3gpp"] + }, + "video/3gpp-tt": { + source: "iana" + }, + "video/3gpp2": { + source: "iana", + extensions: ["3g2"] + }, + "video/av1": { + source: "iana" + }, + "video/bmpeg": { + source: "iana" + }, + "video/bt656": { + source: "iana" + }, + "video/celb": { + source: "iana" + }, + "video/dv": { + source: "iana" + }, + "video/encaprtp": { + source: "iana" + }, + "video/ffv1": { + source: "iana" + }, + "video/flexfec": { + source: "iana" + }, + "video/h261": { + source: "iana", + extensions: ["h261"] + }, + "video/h263": { + source: "iana", + extensions: ["h263"] + }, + "video/h263-1998": { + source: "iana" + }, + "video/h263-2000": { + source: "iana" + }, + "video/h264": { + source: "iana", + extensions: ["h264"] + }, + "video/h264-rcdo": { + source: "iana" + }, + "video/h264-svc": { + source: "iana" + }, + "video/h265": { + source: "iana" + }, + "video/iso.segment": { + source: "iana", + extensions: ["m4s"] + }, + "video/jpeg": { + source: "iana", + extensions: ["jpgv"] + }, + "video/jpeg2000": { + source: "iana" + }, + "video/jpm": { + source: "apache", + extensions: ["jpm", "jpgm"] + }, + "video/jxsv": { + source: "iana" + }, + "video/mj2": { + source: "iana", + extensions: ["mj2", "mjp2"] + }, + "video/mp1s": { + source: "iana" + }, + "video/mp2p": { + source: "iana" + }, + "video/mp2t": { + source: "iana", + extensions: ["ts"] + }, + "video/mp4": { + source: "iana", + compressible: false, + extensions: ["mp4", "mp4v", "mpg4"] + }, + "video/mp4v-es": { + source: "iana" + }, + "video/mpeg": { + source: "iana", + compressible: false, + extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] + }, + "video/mpeg4-generic": { + source: "iana" + }, + "video/mpv": { + source: "iana" + }, + "video/nv": { + source: "iana" + }, + "video/ogg": { + source: "iana", + compressible: false, + extensions: ["ogv"] + }, + "video/parityfec": { + source: "iana" + }, + "video/pointer": { + source: "iana" + }, + "video/quicktime": { + source: "iana", + compressible: false, + extensions: ["qt", "mov"] + }, + "video/raptorfec": { + source: "iana" + }, + "video/raw": { + source: "iana" + }, + "video/rtp-enc-aescm128": { + source: "iana" + }, + "video/rtploopback": { + source: "iana" + }, + "video/rtx": { + source: "iana" + }, + "video/scip": { + source: "iana" + }, + "video/smpte291": { + source: "iana" + }, + "video/smpte292m": { + source: "iana" + }, + "video/ulpfec": { + source: "iana" + }, + "video/vc1": { + source: "iana" + }, + "video/vc2": { + source: "iana" + }, + "video/vnd.cctv": { + source: "iana" + }, + "video/vnd.dece.hd": { + source: "iana", + extensions: ["uvh", "uvvh"] + }, + "video/vnd.dece.mobile": { + source: "iana", + extensions: ["uvm", "uvvm"] + }, + "video/vnd.dece.mp4": { + source: "iana" + }, + "video/vnd.dece.pd": { + source: "iana", + extensions: ["uvp", "uvvp"] + }, + "video/vnd.dece.sd": { + source: "iana", + extensions: ["uvs", "uvvs"] + }, + "video/vnd.dece.video": { + source: "iana", + extensions: ["uvv", "uvvv"] + }, + "video/vnd.directv.mpeg": { + source: "iana" + }, + "video/vnd.directv.mpeg-tts": { + source: "iana" + }, + "video/vnd.dlna.mpeg-tts": { + source: "iana" + }, + "video/vnd.dvb.file": { + source: "iana", + extensions: ["dvb"] + }, + "video/vnd.fvt": { + source: "iana", + extensions: ["fvt"] + }, + "video/vnd.hns.video": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + source: "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + source: "iana" + }, + "video/vnd.iptvforum.ttsavc": { + source: "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + source: "iana" + }, + "video/vnd.motorola.video": { + source: "iana" + }, + "video/vnd.motorola.videop": { + source: "iana" + }, + "video/vnd.mpegurl": { + source: "iana", + extensions: ["mxu", "m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + source: "iana", + extensions: ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + source: "iana" + }, + "video/vnd.nokia.mp4vr": { + source: "iana" + }, + "video/vnd.nokia.videovoip": { + source: "iana" + }, + "video/vnd.objectvideo": { + source: "iana" + }, + "video/vnd.radgamettools.bink": { + source: "iana" + }, + "video/vnd.radgamettools.smacker": { + source: "iana" + }, + "video/vnd.sealed.mpeg1": { + source: "iana" + }, + "video/vnd.sealed.mpeg4": { + source: "iana" + }, + "video/vnd.sealed.swf": { + source: "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + source: "iana" + }, + "video/vnd.uvvu.mp4": { + source: "iana", + extensions: ["uvu", "uvvu"] + }, + "video/vnd.vivo": { + source: "iana", + extensions: ["viv"] + }, + "video/vnd.youtube.yt": { + source: "iana" + }, + "video/vp8": { + source: "iana" + }, + "video/vp9": { + source: "iana" + }, + "video/webm": { + source: "apache", + compressible: false, + extensions: ["webm"] + }, + "video/x-f4v": { + source: "apache", + extensions: ["f4v"] + }, + "video/x-fli": { + source: "apache", + extensions: ["fli"] + }, + "video/x-flv": { + source: "apache", + compressible: false, + extensions: ["flv"] + }, + "video/x-m4v": { + source: "apache", + extensions: ["m4v"] + }, + "video/x-matroska": { + source: "apache", + compressible: false, + extensions: ["mkv", "mk3d", "mks"] + }, + "video/x-mng": { + source: "apache", + extensions: ["mng"] + }, + "video/x-ms-asf": { + source: "apache", + extensions: ["asf", "asx"] + }, + "video/x-ms-vob": { + source: "apache", + extensions: ["vob"] + }, + "video/x-ms-wm": { + source: "apache", + extensions: ["wm"] + }, + "video/x-ms-wmv": { + source: "apache", + compressible: false, + extensions: ["wmv"] + }, + "video/x-ms-wmx": { + source: "apache", + extensions: ["wmx"] + }, + "video/x-ms-wvx": { + source: "apache", + extensions: ["wvx"] + }, + "video/x-msvideo": { + source: "apache", + extensions: ["avi"] + }, + "video/x-sgi-movie": { + source: "apache", + extensions: ["movie"] + }, + "video/x-smv": { + source: "apache", + extensions: ["smv"] + }, + "x-conference/x-cooltalk": { + source: "apache", + extensions: ["ice"] + }, + "x-shader/x-fragment": { + compressible: true + }, + "x-shader/x-vertex": { + compressible: true + } + }; + } +}); + +// node_modules/mime-db/index.js +var require_mime_db = __commonJS({ + "node_modules/mime-db/index.js"(exports2, module2) { + module2.exports = require_db(); + } +}); + +// node_modules/mime-types/index.js +var require_mime_types = __commonJS({ + "node_modules/mime-types/index.js"(exports2) { + "use strict"; + var db = require_mime_db(); + var extname = __require("path").extname; + var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; + var TEXT_TYPE_REGEXP = /^text\//i; + exports2.charset = charset; + exports2.charsets = { lookup: charset }; + exports2.contentType = contentType; + exports2.extension = extension; + exports2.extensions = /* @__PURE__ */ Object.create(null); + exports2.lookup = lookup; + exports2.types = /* @__PURE__ */ Object.create(null); + populateMaps(exports2.extensions, exports2.types); + function charset(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var mime = match && db[match[1].toLowerCase()]; + if (mime && mime.charset) { + return mime.charset; + } + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return "UTF-8"; + } + return false; + } + function contentType(str) { + if (!str || typeof str !== "string") { + return false; + } + var mime = str.indexOf("/") === -1 ? exports2.lookup(str) : str; + if (!mime) { + return false; + } + if (mime.indexOf("charset") === -1) { + var charset2 = exports2.charset(mime); + if (charset2) mime += "; charset=" + charset2.toLowerCase(); + } + return mime; + } + function extension(type) { + if (!type || typeof type !== "string") { + return false; + } + var match = EXTRACT_TYPE_REGEXP.exec(type); + var exts = match && exports2.extensions[match[1].toLowerCase()]; + if (!exts || !exts.length) { + return false; + } + return exts[0]; + } + function lookup(path2) { + if (!path2 || typeof path2 !== "string") { + return false; + } + var extension2 = extname("x." + path2).toLowerCase().substr(1); + if (!extension2) { + return false; + } + return exports2.types[extension2] || false; + } + function populateMaps(extensions, types) { + var preference = ["nginx", "apache", void 0, "iana"]; + Object.keys(db).forEach(function forEachMimeType(type) { + var mime = db[type]; + var exts = mime.extensions; + if (!exts || !exts.length) { + return; + } + extensions[type] = exts; + for (var i = 0; i < exts.length; i++) { + var extension2 = exts[i]; + if (types[extension2]) { + var from = preference.indexOf(db[types[extension2]].source); + var to = preference.indexOf(mime.source); + if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) { + continue; + } + } + types[extension2] = type; + } + }); + } + } +}); + +// node_modules/asynckit/lib/defer.js +var require_defer = __commonJS({ + "node_modules/asynckit/lib/defer.js"(exports2, module2) { + module2.exports = defer; + function defer(fn) { + var nextTick = typeof setImmediate == "function" ? setImmediate : typeof process == "object" && typeof process.nextTick == "function" ? process.nextTick : null; + if (nextTick) { + nextTick(fn); + } else { + setTimeout(fn, 0); + } + } + } +}); + +// node_modules/asynckit/lib/async.js +var require_async = __commonJS({ + "node_modules/asynckit/lib/async.js"(exports2, module2) { + var defer = require_defer(); + module2.exports = async; + function async(callback) { + var isAsync = false; + defer(function() { + isAsync = true; + }); + return function async_callback(err2, result) { + if (isAsync) { + callback(err2, result); + } else { + defer(function nextTick_callback() { + callback(err2, result); + }); + } + }; + } + } +}); + +// node_modules/asynckit/lib/abort.js +var require_abort = __commonJS({ + "node_modules/asynckit/lib/abort.js"(exports2, module2) { + module2.exports = abort; + function abort(state) { + Object.keys(state.jobs).forEach(clean2.bind(state)); + state.jobs = {}; + } + function clean2(key) { + if (typeof this.jobs[key] == "function") { + this.jobs[key](); + } + } + } +}); + +// node_modules/asynckit/lib/iterate.js +var require_iterate = __commonJS({ + "node_modules/asynckit/lib/iterate.js"(exports2, module2) { + var async = require_async(); + var abort = require_abort(); + module2.exports = iterate; + function iterate(list, iterator, state, callback) { + var key = state["keyedList"] ? state["keyedList"][state.index] : state.index; + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) { + if (!(key in state.jobs)) { + return; + } + delete state.jobs[key]; + if (error) { + abort(state); + } else { + state.results[key] = output; + } + callback(error, state.results); + }); + } + function runJob(iterator, key, item, callback) { + var aborter; + if (iterator.length == 2) { + aborter = iterator(item, async(callback)); + } else { + aborter = iterator(item, key, async(callback)); + } + return aborter; + } + } +}); + +// node_modules/asynckit/lib/state.js +var require_state3 = __commonJS({ + "node_modules/asynckit/lib/state.js"(exports2, module2) { + module2.exports = state; + function state(list, sortMethod) { + var isNamedList = !Array.isArray(list), initState = { + index: 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs: {}, + results: isNamedList ? {} : [], + size: isNamedList ? Object.keys(list).length : list.length + }; + if (sortMethod) { + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) { + return sortMethod(list[a], list[b]); + }); + } + return initState; + } + } +}); + +// node_modules/asynckit/lib/terminator.js +var require_terminator = __commonJS({ + "node_modules/asynckit/lib/terminator.js"(exports2, module2) { + var abort = require_abort(); + var async = require_async(); + module2.exports = terminator; + function terminator(callback) { + if (!Object.keys(this.jobs).length) { + return; + } + this.index = this.size; + abort(this); + async(callback)(null, this.results); + } + } +}); + +// node_modules/asynckit/parallel.js +var require_parallel = __commonJS({ + "node_modules/asynckit/parallel.js"(exports2, module2) { + var iterate = require_iterate(); + var initState = require_state3(); + var terminator = require_terminator(); + module2.exports = parallel; + function parallel(list, iterator, callback) { + var state = initState(list); + while (state.index < (state["keyedList"] || list).length) { + iterate(list, iterator, state, function(error, result) { + if (error) { + callback(error, result); + return; + } + if (Object.keys(state.jobs).length === 0) { + callback(null, state.results); + return; + } + }); + state.index++; + } + return terminator.bind(state, callback); + } + } +}); + +// node_modules/asynckit/serialOrdered.js +var require_serialOrdered = __commonJS({ + "node_modules/asynckit/serialOrdered.js"(exports2, module2) { + var iterate = require_iterate(); + var initState = require_state3(); + var terminator = require_terminator(); + module2.exports = serialOrdered; + module2.exports.ascending = ascending; + module2.exports.descending = descending; + function serialOrdered(list, iterator, sortMethod, callback) { + var state = initState(list, sortMethod); + iterate(list, iterator, state, function iteratorHandler(error, result) { + if (error) { + callback(error, result); + return; + } + state.index++; + if (state.index < (state["keyedList"] || list).length) { + iterate(list, iterator, state, iteratorHandler); + return; + } + callback(null, state.results); + }); + return terminator.bind(state, callback); + } + function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : 0; + } + function descending(a, b) { + return -1 * ascending(a, b); + } + } +}); + +// node_modules/asynckit/serial.js +var require_serial = __commonJS({ + "node_modules/asynckit/serial.js"(exports2, module2) { + var serialOrdered = require_serialOrdered(); + module2.exports = serial; + function serial(list, iterator, callback) { + return serialOrdered(list, iterator, null, callback); + } + } +}); + +// node_modules/asynckit/index.js +var require_asynckit = __commonJS({ + "node_modules/asynckit/index.js"(exports2, module2) { + module2.exports = { + parallel: require_parallel(), + serial: require_serial(), + serialOrdered: require_serialOrdered() + }; + } +}); + +// node_modules/es-object-atoms/index.js +var require_es_object_atoms = __commonJS({ + "node_modules/es-object-atoms/index.js"(exports2, module2) { + "use strict"; + module2.exports = Object; + } +}); + +// node_modules/es-errors/index.js +var require_es_errors = __commonJS({ + "node_modules/es-errors/index.js"(exports2, module2) { + "use strict"; + module2.exports = Error; + } +}); + +// node_modules/es-errors/eval.js +var require_eval = __commonJS({ + "node_modules/es-errors/eval.js"(exports2, module2) { + "use strict"; + module2.exports = EvalError; + } +}); + +// node_modules/es-errors/range.js +var require_range = __commonJS({ + "node_modules/es-errors/range.js"(exports2, module2) { + "use strict"; + module2.exports = RangeError; + } +}); + +// node_modules/es-errors/ref.js +var require_ref3 = __commonJS({ + "node_modules/es-errors/ref.js"(exports2, module2) { + "use strict"; + module2.exports = ReferenceError; + } +}); + +// node_modules/es-errors/syntax.js +var require_syntax2 = __commonJS({ + "node_modules/es-errors/syntax.js"(exports2, module2) { + "use strict"; + module2.exports = SyntaxError; + } +}); + +// node_modules/es-errors/type.js +var require_type8 = __commonJS({ + "node_modules/es-errors/type.js"(exports2, module2) { + "use strict"; + module2.exports = TypeError; + } +}); + +// node_modules/es-errors/uri.js +var require_uri = __commonJS({ + "node_modules/es-errors/uri.js"(exports2, module2) { + "use strict"; + module2.exports = URIError; + } +}); + +// node_modules/math-intrinsics/abs.js +var require_abs = __commonJS({ + "node_modules/math-intrinsics/abs.js"(exports2, module2) { + "use strict"; + module2.exports = Math.abs; + } +}); + +// node_modules/math-intrinsics/floor.js +var require_floor = __commonJS({ + "node_modules/math-intrinsics/floor.js"(exports2, module2) { + "use strict"; + module2.exports = Math.floor; + } +}); + +// node_modules/math-intrinsics/max.js +var require_max = __commonJS({ + "node_modules/math-intrinsics/max.js"(exports2, module2) { + "use strict"; + module2.exports = Math.max; + } +}); + +// node_modules/math-intrinsics/min.js +var require_min = __commonJS({ + "node_modules/math-intrinsics/min.js"(exports2, module2) { + "use strict"; + module2.exports = Math.min; + } +}); + +// node_modules/math-intrinsics/pow.js +var require_pow = __commonJS({ + "node_modules/math-intrinsics/pow.js"(exports2, module2) { + "use strict"; + module2.exports = Math.pow; + } +}); + +// node_modules/math-intrinsics/round.js +var require_round = __commonJS({ + "node_modules/math-intrinsics/round.js"(exports2, module2) { + "use strict"; + module2.exports = Math.round; + } +}); + +// node_modules/math-intrinsics/isNaN.js +var require_isNaN = __commonJS({ + "node_modules/math-intrinsics/isNaN.js"(exports2, module2) { + "use strict"; + module2.exports = Number.isNaN || function isNaN2(a) { + return a !== a; + }; + } +}); + +// node_modules/math-intrinsics/sign.js +var require_sign = __commonJS({ + "node_modules/math-intrinsics/sign.js"(exports2, module2) { + "use strict"; + var $isNaN = require_isNaN(); + module2.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : 1; + }; + } +}); + +// node_modules/gopd/gOPD.js +var require_gOPD = __commonJS({ + "node_modules/gopd/gOPD.js"(exports2, module2) { + "use strict"; + module2.exports = Object.getOwnPropertyDescriptor; + } +}); + +// node_modules/gopd/index.js +var require_gopd = __commonJS({ + "node_modules/gopd/index.js"(exports2, module2) { + "use strict"; + var $gOPD = require_gOPD(); + if ($gOPD) { + try { + $gOPD([], "length"); + } catch (e) { + $gOPD = null; + } + } + module2.exports = $gOPD; + } +}); + +// node_modules/es-define-property/index.js +var require_es_define_property = __commonJS({ + "node_modules/es-define-property/index.js"(exports2, module2) { + "use strict"; + var $defineProperty = Object.defineProperty || false; + if ($defineProperty) { + try { + $defineProperty({}, "a", { value: 1 }); + } catch (e) { + $defineProperty = false; + } + } + module2.exports = $defineProperty; + } +}); + +// node_modules/has-symbols/shams.js +var require_shams = __commonJS({ + "node_modules/has-symbols/shams.js"(exports2, module2) { + "use strict"; + module2.exports = function hasSymbols() { + if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { + return false; + } + if (typeof Symbol.iterator === "symbol") { + return true; + } + var obj = {}; + var sym = Symbol("test"); + var symObj = Object(sym); + if (typeof sym === "string") { + return false; + } + if (Object.prototype.toString.call(sym) !== "[object Symbol]") { + return false; + } + if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { + return false; + } + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { + return false; + } + if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { + return false; + } + if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { + return false; + } + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { + return false; + } + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { + return false; + } + if (typeof Object.getOwnPropertyDescriptor === "function") { + var descriptor = ( + /** @type {PropertyDescriptor} */ + Object.getOwnPropertyDescriptor(obj, sym) + ); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { + return false; + } + } + return true; + }; + } +}); + +// node_modules/has-symbols/index.js +var require_has_symbols = __commonJS({ + "node_modules/has-symbols/index.js"(exports2, module2) { + "use strict"; + var origSymbol = typeof Symbol !== "undefined" && Symbol; + var hasSymbolSham = require_shams(); + module2.exports = function hasNativeSymbols() { + if (typeof origSymbol !== "function") { + return false; + } + if (typeof Symbol !== "function") { + return false; + } + if (typeof origSymbol("foo") !== "symbol") { + return false; + } + if (typeof Symbol("bar") !== "symbol") { + return false; + } + return hasSymbolSham(); + }; + } +}); + +// node_modules/get-proto/Reflect.getPrototypeOf.js +var require_Reflect_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Reflect.getPrototypeOf.js"(exports2, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; + } +}); + +// node_modules/get-proto/Object.getPrototypeOf.js +var require_Object_getPrototypeOf = __commonJS({ + "node_modules/get-proto/Object.getPrototypeOf.js"(exports2, module2) { + "use strict"; + var $Object = require_es_object_atoms(); + module2.exports = $Object.getPrototypeOf || null; + } +}); + +// node_modules/function-bind/implementation.js +var require_implementation = __commonJS({ + "node_modules/function-bind/implementation.js"(exports2, module2) { + "use strict"; + var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; + var toStr = Object.prototype.toString; + var max = Math.max; + var funcType = "[object Function]"; + var concatty = function concatty2(a, b) { + var arr = []; + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + return arr; + }; + var slicy = function slicy2(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; + }; + var joiny = function(arr, joiner) { + var str = ""; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; + }; + module2.exports = function bind(that) { + var target = this; + if (typeof target !== "function" || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + var bound; + var binder = function() { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + }; + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = "$" + i; + } + bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); + if (target.prototype) { + var Empty = function Empty2() { + }; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + return bound; + }; + } +}); + +// node_modules/function-bind/index.js +var require_function_bind = __commonJS({ + "node_modules/function-bind/index.js"(exports2, module2) { + "use strict"; + var implementation = require_implementation(); + module2.exports = Function.prototype.bind || implementation; + } +}); + +// node_modules/call-bind-apply-helpers/functionCall.js +var require_functionCall = __commonJS({ + "node_modules/call-bind-apply-helpers/functionCall.js"(exports2, module2) { + "use strict"; + module2.exports = Function.prototype.call; + } +}); + +// node_modules/call-bind-apply-helpers/functionApply.js +var require_functionApply = __commonJS({ + "node_modules/call-bind-apply-helpers/functionApply.js"(exports2, module2) { + "use strict"; + module2.exports = Function.prototype.apply; + } +}); + +// node_modules/call-bind-apply-helpers/reflectApply.js +var require_reflectApply = __commonJS({ + "node_modules/call-bind-apply-helpers/reflectApply.js"(exports2, module2) { + "use strict"; + module2.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; + } +}); + +// node_modules/call-bind-apply-helpers/actualApply.js +var require_actualApply = __commonJS({ + "node_modules/call-bind-apply-helpers/actualApply.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var $reflectApply = require_reflectApply(); + module2.exports = $reflectApply || bind.call($call, $apply); + } +}); + +// node_modules/call-bind-apply-helpers/index.js +var require_call_bind_apply_helpers = __commonJS({ + "node_modules/call-bind-apply-helpers/index.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + var $TypeError = require_type8(); + var $call = require_functionCall(); + var $actualApply = require_actualApply(); + module2.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== "function") { + throw new $TypeError("a function is required"); + } + return $actualApply(bind, $call, args); + }; + } +}); + +// node_modules/dunder-proto/get.js +var require_get = __commonJS({ + "node_modules/dunder-proto/get.js"(exports2, module2) { + "use strict"; + var callBind = require_call_bind_apply_helpers(); + var gOPD = require_gopd(); + var hasProtoAccessor; + try { + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ + [].__proto__ === Array.prototype; + } catch (e) { + if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") { + throw e; + } + } + var desc = !!hasProtoAccessor && gOPD && gOPD( + Object.prototype, + /** @type {keyof typeof Object.prototype} */ + "__proto__" + ); + var $Object = Object; + var $getPrototypeOf = $Object.getPrototypeOf; + module2.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? ( + /** @type {import('./get')} */ + function getDunder(value) { + return $getPrototypeOf(value == null ? value : $Object(value)); + } + ) : false; + } +}); + +// node_modules/get-proto/index.js +var require_get_proto = __commonJS({ + "node_modules/get-proto/index.js"(exports2, module2) { + "use strict"; + var reflectGetProto = require_Reflect_getPrototypeOf(); + var originalGetProto = require_Object_getPrototypeOf(); + var getDunderProto = require_get(); + module2.exports = reflectGetProto ? function getProto(O) { + return reflectGetProto(O); + } : originalGetProto ? function getProto(O) { + if (!O || typeof O !== "object" && typeof O !== "function") { + throw new TypeError("getProto: not an object"); + } + return originalGetProto(O); + } : getDunderProto ? function getProto(O) { + return getDunderProto(O); + } : null; + } +}); + +// node_modules/hasown/index.js +var require_hasown = __commonJS({ + "node_modules/hasown/index.js"(exports2, module2) { + "use strict"; + var call = Function.prototype.call; + var $hasOwn = Object.prototype.hasOwnProperty; + var bind = require_function_bind(); + module2.exports = bind.call(call, $hasOwn); + } +}); + +// node_modules/get-intrinsic/index.js +var require_get_intrinsic = __commonJS({ + "node_modules/get-intrinsic/index.js"(exports2, module2) { + "use strict"; + var undefined2; + var $Object = require_es_object_atoms(); + var $Error = require_es_errors(); + var $EvalError = require_eval(); + var $RangeError = require_range(); + var $ReferenceError = require_ref3(); + var $SyntaxError = require_syntax2(); + var $TypeError = require_type8(); + var $URIError = require_uri(); + var abs = require_abs(); + var floor = require_floor(); + var max = require_max(); + var min = require_min(); + var pow = require_pow(); + var round = require_round(); + var sign = require_sign(); + var $Function = Function; + var getEvalledConstructor = function(expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); + } catch (e) { + } + }; + var $gOPD = require_gopd(); + var $defineProperty = require_es_define_property(); + var throwTypeError = function() { + throw new $TypeError(); + }; + var ThrowTypeError = $gOPD ? function() { + try { + arguments.callee; + return throwTypeError; + } catch (calleeThrows) { + try { + return $gOPD(arguments, "callee").get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }() : throwTypeError; + var hasSymbols = require_has_symbols()(); + var getProto = require_get_proto(); + var $ObjectGPO = require_Object_getPrototypeOf(); + var $ReflectGPO = require_Reflect_getPrototypeOf(); + var $apply = require_functionApply(); + var $call = require_functionCall(); + var needsEval = {}; + var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); + var INTRINSICS = { + __proto__: null, + "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, + "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, + "%AsyncFromSyncIteratorPrototype%": undefined2, + "%AsyncFunction%": needsEval, + "%AsyncGenerator%": needsEval, + "%AsyncGeneratorFunction%": needsEval, + "%AsyncIteratorPrototype%": needsEval, + "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, + "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, + "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, + "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": $Error, + "%eval%": eval, + // eslint-disable-line no-eval + "%EvalError%": $EvalError, + "%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array, + "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, + "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, + "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, + "%Function%": $Function, + "%GeneratorFunction%": needsEval, + "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, + "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, + "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, + "%JSON%": typeof JSON === "object" ? JSON : undefined2, + "%Map%": typeof Map === "undefined" ? undefined2 : Map, + "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), + "%Math%": Math, + "%Number%": Number, + "%Object%": $Object, + "%Object.getOwnPropertyDescriptor%": $gOPD, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, + "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, + "%RangeError%": $RangeError, + "%ReferenceError%": $ReferenceError, + "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, + "%RegExp%": RegExp, + "%Set%": typeof Set === "undefined" ? undefined2 : Set, + "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), + "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, + "%Symbol%": hasSymbols ? Symbol : undefined2, + "%SyntaxError%": $SyntaxError, + "%ThrowTypeError%": ThrowTypeError, + "%TypedArray%": TypedArray, + "%TypeError%": $TypeError, + "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, + "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, + "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, + "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, + "%URIError%": $URIError, + "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, + "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, + "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet, + "%Function.prototype.call%": $call, + "%Function.prototype.apply%": $apply, + "%Object.defineProperty%": $defineProperty, + "%Object.getPrototypeOf%": $ObjectGPO, + "%Math.abs%": abs, + "%Math.floor%": floor, + "%Math.max%": max, + "%Math.min%": min, + "%Math.pow%": pow, + "%Math.round%": round, + "%Math.sign%": sign, + "%Reflect.getPrototypeOf%": $ReflectGPO + }; + if (getProto) { + try { + null.error; + } catch (e) { + errorProto = getProto(getProto(e)); + INTRINSICS["%Error.prototype%"] = errorProto; + } + } + var errorProto; + var doEval = function doEval2(name) { + var value; + if (name === "%AsyncFunction%") { + value = getEvalledConstructor("async function () {}"); + } else if (name === "%GeneratorFunction%") { + value = getEvalledConstructor("function* () {}"); + } else if (name === "%AsyncGeneratorFunction%") { + value = getEvalledConstructor("async function* () {}"); + } else if (name === "%AsyncGenerator%") { + var fn = doEval2("%AsyncGeneratorFunction%"); + if (fn) { + value = fn.prototype; + } + } else if (name === "%AsyncIteratorPrototype%") { + var gen = doEval2("%AsyncGenerator%"); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + INTRINSICS[name] = value; + return value; + }; + var LEGACY_ALIASES = { + __proto__: null, + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }; + var bind = require_function_bind(); + var hasOwn = require_hasown(); + var $concat = bind.call($call, Array.prototype.concat); + var $spliceApply = bind.call($apply, Array.prototype.splice); + var $replace = bind.call($call, String.prototype.replace); + var $strSlice = bind.call($call, String.prototype.slice); + var $exec = bind.call($call, RegExp.prototype.exec); + var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; + var reEscapeChar = /\\(\\)?/g; + var stringToPath = function stringToPath2(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === "%" && last !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); + } else if (last === "%" && first !== "%") { + throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); + } + var result = []; + $replace(string, rePropName, function(match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; + }); + return result; + }; + var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = "%" + alias[0] + "%"; + } + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === "undefined" && !allowMissing) { + throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); + } + return { + alias, + name: intrinsicName, + value + }; + } + throw new $SyntaxError("intrinsic " + name + " does not exist!"); + }; + module2.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== "string" || name.length === 0) { + throw new $TypeError("intrinsic name must be a non-empty string"); + } + if (arguments.length > 1 && typeof allowMissing !== "boolean") { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; + var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { + throw new $SyntaxError("property names with quotes must have matching quotes"); + } + if (part === "constructor" || !isOwn) { + skipFurtherCaching = true; + } + intrinsicBaseName += "." + part; + intrinsicRealName = "%" + intrinsicBaseName + "%"; + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); + } + return void undefined2; + } + if ($gOPD && i + 1 >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + if (isOwn && "get" in desc && !("originalValue" in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; + }; + } +}); + +// node_modules/has-tostringtag/shams.js +var require_shams2 = __commonJS({ + "node_modules/has-tostringtag/shams.js"(exports2, module2) { + "use strict"; + var hasSymbols = require_shams(); + module2.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; + }; + } +}); + +// node_modules/es-set-tostringtag/index.js +var require_es_set_tostringtag = __commonJS({ + "node_modules/es-set-tostringtag/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var $defineProperty = GetIntrinsic("%Object.defineProperty%", true); + var hasToStringTag = require_shams2()(); + var hasOwn = require_hasown(); + var $TypeError = require_type8(); + var toStringTag = hasToStringTag ? Symbol.toStringTag : null; + module2.exports = function setToStringTag(object, value) { + var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force; + var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if (typeof overrideIfSet !== "undefined" && typeof overrideIfSet !== "boolean" || typeof nonConfigurable !== "undefined" && typeof nonConfigurable !== "boolean") { + throw new $TypeError("if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans"); + } + if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) { + if ($defineProperty) { + $defineProperty(object, toStringTag, { + configurable: !nonConfigurable, + enumerable: false, + value, + writable: false + }); + } else { + object[toStringTag] = value; + } + } + }; + } +}); + +// node_modules/form-data/lib/populate.js +var require_populate = __commonJS({ + "node_modules/form-data/lib/populate.js"(exports2, module2) { + "use strict"; + module2.exports = function(dst, src) { + Object.keys(src).forEach(function(prop) { + dst[prop] = dst[prop] || src[prop]; + }); + return dst; + }; + } +}); + +// node_modules/form-data/lib/form_data.js +var require_form_data = __commonJS({ + "node_modules/form-data/lib/form_data.js"(exports2, module2) { + "use strict"; + var CombinedStream = require_combined_stream(); + var util = __require("util"); + var path2 = __require("path"); + var http2 = __require("http"); + var https = __require("https"); + var parseUrl = __require("url").parse; + var fs = __require("fs"); + var Stream = __require("stream").Stream; + var crypto2 = __require("crypto"); + var mime = require_mime_types(); + var asynckit = require_asynckit(); + var setToStringTag = require_es_set_tostringtag(); + var hasOwn = require_hasown(); + var populate = require_populate(); + function FormData2(options) { + if (!(this instanceof FormData2)) { + return new FormData2(options); + } + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + CombinedStream.call(this); + options = options || {}; + for (var option in options) { + this[option] = options[option]; + } + } + util.inherits(FormData2, CombinedStream); + FormData2.LINE_BREAK = "\r\n"; + FormData2.DEFAULT_CONTENT_TYPE = "application/octet-stream"; + FormData2.prototype.append = function(field, value, options) { + options = options || {}; + if (typeof options === "string") { + options = { filename: options }; + } + var append = CombinedStream.prototype.append.bind(this); + if (typeof value === "number" || value == null) { + value = String(value); + } + if (Array.isArray(value)) { + this._error(new Error("Arrays are not supported.")); + return; + } + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + append(header); + append(value); + append(footer); + this._trackLength(header, value, options); + }; + FormData2.prototype._trackLength = function(header, value, options) { + var valueLength = 0; + if (options.knownLength != null) { + valueLength += Number(options.knownLength); + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === "string") { + valueLength = Buffer.byteLength(value); + } + this._valueLength += valueLength; + this._overheadLength += Buffer.byteLength(header) + FormData2.LINE_BREAK.length; + if (!value || !value.path && !(value.readable && hasOwn(value, "httpVersion")) && !(value instanceof Stream)) { + return; + } + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } + }; + FormData2.prototype._lengthRetriever = function(value, callback) { + if (hasOwn(value, "fd")) { + if (value.end != void 0 && value.end != Infinity && value.start != void 0) { + callback(null, value.end + 1 - (value.start ? value.start : 0)); + } else { + fs.stat(value.path, function(err2, stat) { + if (err2) { + callback(err2); + return; + } + var fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + } else if (hasOwn(value, "httpVersion")) { + callback(null, Number(value.headers["content-length"])); + } else if (hasOwn(value, "httpModule")) { + value.on("response", function(response) { + value.pause(); + callback(null, Number(response.headers["content-length"])); + }); + value.resume(); + } else { + callback("Unknown stream"); + } + }; + FormData2.prototype._multiPartHeader = function(field, value, options) { + if (typeof options.header === "string") { + return options.header; + } + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + var contents = ""; + var headers = { + // add custom disposition as third element or keep it two elements if not + "Content-Disposition": ["form-data", 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + "Content-Type": [].concat(contentType || []) + }; + if (typeof options.header === "object") { + populate(headers, options.header); + } + var header; + for (var prop in headers) { + if (hasOwn(headers, prop)) { + header = headers[prop]; + if (header == null) { + continue; + } + if (!Array.isArray(header)) { + header = [header]; + } + if (header.length) { + contents += prop + ": " + header.join("; ") + FormData2.LINE_BREAK; + } + } + } + return "--" + this.getBoundary() + FormData2.LINE_BREAK + contents + FormData2.LINE_BREAK; + }; + FormData2.prototype._getContentDisposition = function(value, options) { + var filename; + if (typeof options.filepath === "string") { + filename = path2.normalize(options.filepath).replace(/\\/g, "/"); + } else if (options.filename || value && (value.name || value.path)) { + filename = path2.basename(options.filename || value && (value.name || value.path)); + } else if (value && value.readable && hasOwn(value, "httpVersion")) { + filename = path2.basename(value.client._httpMessage.path || ""); + } + if (filename) { + return 'filename="' + filename + '"'; + } + }; + FormData2.prototype._getContentType = function(value, options) { + var contentType = options.contentType; + if (!contentType && value && value.name) { + contentType = mime.lookup(value.name); + } + if (!contentType && value && value.path) { + contentType = mime.lookup(value.path); + } + if (!contentType && value && value.readable && hasOwn(value, "httpVersion")) { + contentType = value.headers["content-type"]; + } + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + if (!contentType && value && typeof value === "object") { + contentType = FormData2.DEFAULT_CONTENT_TYPE; + } + return contentType; + }; + FormData2.prototype._multiPartFooter = function() { + return function(next) { + var footer = FormData2.LINE_BREAK; + var lastPart = this._streams.length === 0; + if (lastPart) { + footer += this._lastBoundary(); + } + next(footer); + }.bind(this); + }; + FormData2.prototype._lastBoundary = function() { + return "--" + this.getBoundary() + "--" + FormData2.LINE_BREAK; + }; + FormData2.prototype.getHeaders = function(userHeaders) { + var header; + var formHeaders = { + "content-type": "multipart/form-data; boundary=" + this.getBoundary() + }; + for (header in userHeaders) { + if (hasOwn(userHeaders, header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + return formHeaders; + }; + FormData2.prototype.setBoundary = function(boundary) { + if (typeof boundary !== "string") { + throw new TypeError("FormData boundary must be a string"); + } + this._boundary = boundary; + }; + FormData2.prototype.getBoundary = function() { + if (!this._boundary) { + this._generateBoundary(); + } + return this._boundary; + }; + FormData2.prototype.getBuffer = function() { + var dataBuffer = new Buffer.alloc(0); + var boundary = this.getBoundary(); + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== "function") { + if (Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]); + } else { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]); + } + if (typeof this._streams[i] !== "string" || this._streams[i].substring(2, boundary.length + 2) !== boundary) { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData2.LINE_BREAK)]); + } + } + } + return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]); + }; + FormData2.prototype._generateBoundary = function() { + this._boundary = "--------------------------" + crypto2.randomBytes(12).toString("hex"); + }; + FormData2.prototype.getLengthSync = function() { + var knownLength = this._overheadLength + this._valueLength; + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + if (!this.hasKnownLength()) { + this._error(new Error("Cannot calculate proper length in synchronous way.")); + } + return knownLength; + }; + FormData2.prototype.hasKnownLength = function() { + var hasKnownLength = true; + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + return hasKnownLength; + }; + FormData2.prototype.getLength = function(cb) { + var knownLength = this._overheadLength + this._valueLength; + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err2, values) { + if (err2) { + cb(err2); + return; + } + values.forEach(function(length) { + knownLength += length; + }); + cb(null, knownLength); + }); + }; + FormData2.prototype.submit = function(params, cb) { + var request; + var options; + var defaults = { method: "post" }; + if (typeof params === "string") { + params = parseUrl(params); + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + } else { + options = populate(params, defaults); + if (!options.port) { + options.port = options.protocol === "https:" ? 443 : 80; + } + } + options.headers = this.getHeaders(params.headers); + if (options.protocol === "https:") { + request = https.request(options); + } else { + request = http2.request(options); + } + this.getLength(function(err2, length) { + if (err2 && err2 !== "Unknown stream") { + this._error(err2); + return; + } + if (length) { + request.setHeader("Content-Length", length); + } + this.pipe(request); + if (cb) { + var onResponse; + var callback = function(error, responce) { + request.removeListener("error", callback); + request.removeListener("response", onResponse); + return cb.call(this, error, responce); + }; + onResponse = callback.bind(this, null); + request.on("error", callback); + request.on("response", onResponse); + } + }.bind(this)); + return request; + }; + FormData2.prototype._error = function(err2) { + if (!this.error) { + this.error = err2; + this.pause(); + this.emit("error", err2); + } + }; + FormData2.prototype.toString = function() { + return "[object FormData]"; + }; + setToStringTag(FormData2.prototype, "FormData"); + module2.exports = FormData2; + } +}); + +// node_modules/proxy-from-env/index.js +var require_proxy_from_env = __commonJS({ + "node_modules/proxy-from-env/index.js"(exports2) { + "use strict"; + var parseUrl = __require("url").parse; + var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443 + }; + var stringEndsWith = String.prototype.endsWith || function(s) { + return s.length <= this.length && this.indexOf(s, this.length - s.length) !== -1; + }; + function getProxyForUrl(url) { + var parsedUrl = typeof url === "string" ? parseUrl(url) : url || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== "string" || !hostname || typeof proto !== "string") { + return ""; + } + proto = proto.split(":", 1)[0]; + hostname = hostname.replace(/:\d*$/, ""); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ""; + } + var proxy = getEnv("npm_config_" + proto + "_proxy") || getEnv(proto + "_proxy") || getEnv("npm_config_proxy") || getEnv("all_proxy"); + if (proxy && proxy.indexOf("://") === -1) { + proxy = proto + "://" + proxy; + } + return proxy; + } + function shouldProxy(hostname, port) { + var NO_PROXY = (getEnv("npm_config_no_proxy") || getEnv("no_proxy")).toLowerCase(); + if (!NO_PROXY) { + return true; + } + if (NO_PROXY === "*") { + return false; + } + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; + } + if (!/^[.*]/.test(parsedProxyHostname)) { + return hostname !== parsedProxyHostname; + } + if (parsedProxyHostname.charAt(0) === "*") { + parsedProxyHostname = parsedProxyHostname.slice(1); + } + return !stringEndsWith.call(hostname, parsedProxyHostname); + }); + } + function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ""; + } + exports2.getProxyForUrl = getProxyForUrl; + } +}); + +// node_modules/follow-redirects/debug.js +var require_debug = __commonJS({ + "node_modules/follow-redirects/debug.js"(exports2, module2) { + var debug; + module2.exports = function() { + if (!debug) { + try { + debug = require_src()("follow-redirects"); + } catch (error) { + } + if (typeof debug !== "function") { + debug = function() { + }; + } + } + debug.apply(null, arguments); + }; + } +}); + +// node_modules/follow-redirects/index.js +var require_follow_redirects = __commonJS({ + "node_modules/follow-redirects/index.js"(exports2, module2) { + var url = __require("url"); + var URL2 = url.URL; + var http2 = __require("http"); + var https = __require("https"); + var Writable = __require("stream").Writable; + var assert = __require("assert"); + var debug = require_debug(); + (function detectUnsupportedEnvironment() { + var looksLikeNode = typeof process !== "undefined"; + var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined"; + var looksLikeV8 = isFunction(Error.captureStackTrace); + if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) { + console.warn("The follow-redirects package should be excluded from browser builds."); + } + })(); + var useNativeURL = false; + try { + assert(new URL2("")); + } catch (error) { + useNativeURL = error.code === "ERR_INVALID_URL"; + } + var preservedUrlFields = [ + "auth", + "host", + "hostname", + "href", + "path", + "pathname", + "port", + "protocol", + "query", + "search", + "hash" + ]; + var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; + var eventHandlers = /* @__PURE__ */ Object.create(null); + events.forEach(function(event) { + eventHandlers[event] = function(arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; + }); + var InvalidUrlError = createErrorType( + "ERR_INVALID_URL", + "Invalid URL", + TypeError + ); + var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" + ); + var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded", + RedirectionError + ); + var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" + ); + var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" + ); + var destroy = Writable.prototype.destroy || noop; + function RedirectableRequest(options, responseCallback) { + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + if (responseCallback) { + this.on("response", responseCallback); + } + var self2 = this; + this._onNativeResponse = function(response) { + try { + self2._processResponse(response); + } catch (cause) { + self2.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause })); + } + }; + this._performRequest(); + } + RedirectableRequest.prototype = Object.create(Writable.prototype); + RedirectableRequest.prototype.abort = function() { + destroyRequest(this._currentRequest); + this._currentRequest.abort(); + this.emit("abort"); + }; + RedirectableRequest.prototype.destroy = function(error) { + destroyRequest(this._currentRequest, error); + destroy.call(this, error); + return this; + }; + RedirectableRequest.prototype.write = function(data, encoding, callback) { + if (this._ending) { + throw new WriteAfterEndError(); + } + if (!isString(data) && !isBuffer(data)) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data, encoding }); + this._currentRequest.write(data, encoding, callback); + } else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } + }; + RedirectableRequest.prototype.end = function(data, encoding, callback) { + if (isFunction(data)) { + callback = data; + data = encoding = null; + } else if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } else { + var self2 = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function() { + self2._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } + }; + RedirectableRequest.prototype.setHeader = function(name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); + }; + RedirectableRequest.prototype.removeHeader = function(name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); + }; + RedirectableRequest.prototype.setTimeout = function(msecs, callback) { + var self2 = this; + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } + function startTimer(socket) { + if (self2._timeout) { + clearTimeout(self2._timeout); + } + self2._timeout = setTimeout(function() { + self2.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } + function clearTimer() { + if (self2._timeout) { + clearTimeout(self2._timeout); + self2._timeout = null; + } + self2.removeListener("abort", clearTimer); + self2.removeListener("error", clearTimer); + self2.removeListener("response", clearTimer); + self2.removeListener("close", clearTimer); + if (callback) { + self2.removeListener("timeout", callback); + } + if (!self2.socket) { + self2._currentRequest.removeListener("socket", startTimer); + } + } + if (callback) { + this.on("timeout", callback); + } + if (this.socket) { + startTimer(this.socket); + } else { + this._currentRequest.once("socket", startTimer); + } + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); + this.on("close", clearTimer); + return this; + }; + [ + "flushHeaders", + "getHeader", + "setNoDelay", + "setSocketKeepAlive" + ].forEach(function(method) { + RedirectableRequest.prototype[method] = function(a, b) { + return this._currentRequest[method](a, b); + }; + }); + ["aborted", "connection", "socket"].forEach(function(property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function() { + return this._currentRequest[property]; + } + }); + }); + RedirectableRequest.prototype._sanitizeOptions = function(options) { + if (!options.headers) { + options.headers = {}; + } + if (options.host) { + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } + }; + RedirectableRequest.prototype._performRequest = function() { + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + throw new TypeError("Unsupported protocol " + protocol); + } + if (this._options.agents) { + var scheme = protocol.slice(0, -1); + this._options.agent = this._options.agents[scheme]; + } + var request = this._currentRequest = nativeProtocol.request(this._options, this._onNativeResponse); + request._redirectable = this; + for (var event of events) { + request.on(event, eventHandlers[event]); + } + this._currentUrl = /^\//.test(this._options.path) ? url.format(this._options) : ( + // When making a request to a proxy, […] + // a client MUST send the target URI in absolute-form […]. + this._options.path + ); + if (this._isRedirect) { + var i = 0; + var self2 = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + if (request === self2._currentRequest) { + if (error) { + self2.emit("error", error); + } else if (i < buffers.length) { + var buffer = buffers[i++]; + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } else if (self2._ended) { + request.end(); + } + } + })(); + } + }; + RedirectableRequest.prototype._processResponse = function(response) { + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode + }); + } + var location2 = response.headers.location; + if (!location2 || this._options.followRedirects === false || statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + this._requestBodyBuffers = []; + return; + } + destroyRequest(this._currentRequest); + response.destroy(); + if (++this._redirectCount > this._options.maxRedirects) { + throw new TooManyRedirectsError(); + } + var requestHeaders; + var beforeRedirect = this._options.beforeRedirect; + if (beforeRedirect) { + requestHeaders = Object.assign({ + // The Host header was set by nativeProtocol.request + Host: response.req.getHeader("host") + }, this._options.headers); + } + var method = this._options.method; + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + statusCode === 303 && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + var currentUrlParts = parseUrl(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location2) ? this._currentUrl : url.format(Object.assign(currentUrlParts, { host: currentHost })); + var redirectUrl = resolveUrl(location2, currentUrl); + debug("redirecting to", redirectUrl.href); + this._isRedirect = true; + spreadUrlObject(redirectUrl, this._options); + if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) { + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); + } + if (isFunction(beforeRedirect)) { + var responseDetails = { + headers: response.headers, + statusCode + }; + var requestDetails = { + url: currentUrl, + method, + headers: requestHeaders + }; + beforeRedirect(this._options, responseDetails, requestDetails); + this._sanitizeOptions(this._options); + } + this._performRequest(); + }; + function wrap(protocols) { + var exports3 = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024 + }; + var nativeProtocols = {}; + Object.keys(protocols).forEach(function(scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports3[scheme] = Object.create(nativeProtocol); + function request(input, options, callback) { + if (isURL(input)) { + input = spreadUrlObject(input); + } else if (isString(input)) { + input = spreadUrlObject(parseUrl(input)); + } else { + callback = options; + options = validateUrl(input); + input = { protocol }; + } + if (isFunction(options)) { + callback = options; + options = null; + } + options = Object.assign({ + maxRedirects: exports3.maxRedirects, + maxBodyLength: exports3.maxBodyLength + }, input, options); + options.nativeProtocols = nativeProtocols; + if (!isString(options.host) && !isString(options.hostname)) { + options.hostname = "::1"; + } + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true } + }); + }); + return exports3; + } + function noop() { + } + function parseUrl(input) { + var parsed; + if (useNativeURL) { + parsed = new URL2(input); + } else { + parsed = validateUrl(url.parse(input)); + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + } + return parsed; + } + function resolveUrl(relative, base) { + return useNativeURL ? new URL2(relative, base) : parseUrl(url.resolve(base, relative)); + } + function validateUrl(input) { + if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { + throw new InvalidUrlError({ input: input.href || input }); + } + if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { + throw new InvalidUrlError({ input: input.href || input }); + } + return input; + } + function spreadUrlObject(urlObject, target) { + var spread = target || {}; + for (var key of preservedUrlFields) { + spread[key] = urlObject[key]; + } + if (spread.hostname.startsWith("[")) { + spread.hostname = spread.hostname.slice(1, -1); + } + if (spread.port !== "") { + spread.port = Number(spread.port); + } + spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; + return spread; + } + function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; + } + } + return lastValue === null || typeof lastValue === "undefined" ? void 0 : String(lastValue).trim(); + } + function createErrorType(code, message, baseClass) { + function CustomError(properties) { + if (isFunction(Error.captureStackTrace)) { + Error.captureStackTrace(this, this.constructor); + } + Object.assign(this, properties || {}); + this.code = code; + this.message = this.cause ? message + ": " + this.cause.message : message; + } + CustomError.prototype = new (baseClass || Error)(); + Object.defineProperties(CustomError.prototype, { + constructor: { + value: CustomError, + enumerable: false + }, + name: { + value: "Error [" + code + "]", + enumerable: false + } + }); + return CustomError; + } + function destroyRequest(request, error) { + for (var event of events) { + request.removeListener(event, eventHandlers[event]); + } + request.on("error", noop); + request.destroy(error); + } + function isSubdomain(subdomain, domain) { + assert(isString(subdomain) && isString(domain)); + var dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); + } + function isString(value) { + return typeof value === "string" || value instanceof String; + } + function isFunction(value) { + return typeof value === "function"; + } + function isBuffer(value) { + return typeof value === "object" && "length" in value; + } + function isURL(value) { + return URL2 && value instanceof URL2; + } + module2.exports = wrap({ http: http2, https }); + module2.exports.wrap = wrap; + } +}); + +// node_modules/axios/dist/node/axios.cjs +var require_axios = __commonJS({ + "node_modules/axios/dist/node/axios.cjs"(exports2, module2) { + "use strict"; + var FormData$1 = require_form_data(); + var crypto2 = __require("crypto"); + var url = __require("url"); + var proxyFromEnv = require_proxy_from_env(); + var http2 = __require("http"); + var https = __require("https"); + var http22 = __require("http2"); + var util = __require("util"); + var followRedirects = require_follow_redirects(); + var zlib = __require("zlib"); + var stream = __require("stream"); + var events = __require("events"); + function _interopDefaultLegacy(e) { + return e && typeof e === "object" && "default" in e ? e : { "default": e }; + } + var FormData__default = /* @__PURE__ */ _interopDefaultLegacy(FormData$1); + var crypto__default = /* @__PURE__ */ _interopDefaultLegacy(crypto2); + var url__default = /* @__PURE__ */ _interopDefaultLegacy(url); + var proxyFromEnv__default = /* @__PURE__ */ _interopDefaultLegacy(proxyFromEnv); + var http__default = /* @__PURE__ */ _interopDefaultLegacy(http2); + var https__default = /* @__PURE__ */ _interopDefaultLegacy(https); + var http2__default = /* @__PURE__ */ _interopDefaultLegacy(http22); + var util__default = /* @__PURE__ */ _interopDefaultLegacy(util); + var followRedirects__default = /* @__PURE__ */ _interopDefaultLegacy(followRedirects); + var zlib__default = /* @__PURE__ */ _interopDefaultLegacy(zlib); + var stream__default = /* @__PURE__ */ _interopDefaultLegacy(stream); + function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; + } + var { toString } = Object.prototype; + var { getPrototypeOf } = Object; + var { iterator, toStringTag } = Symbol; + var kindOf = /* @__PURE__ */ ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); + })(/* @__PURE__ */ Object.create(null)); + var kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; + }; + var typeOfTest = (type) => (thing) => typeof thing === type; + var { isArray } = Array; + var isUndefined = typeOfTest("undefined"); + function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); + } + var isArrayBuffer = kindOfTest("ArrayBuffer"); + function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; + } + var isString = typeOfTest("string"); + var isFunction$1 = typeOfTest("function"); + var isNumber = typeOfTest("number"); + var isObject = (thing) => thing !== null && typeof thing === "object"; + var isBoolean = (thing) => thing === true || thing === false; + var isPlainObject = (val) => { + if (kindOf(val) !== "object") { + return false; + } + const prototype2 = getPrototypeOf(val); + return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(toStringTag in val) && !(iterator in val); + }; + var isEmptyObject = (val) => { + if (!isObject(val) || isBuffer(val)) { + return false; + } + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + return false; + } + }; + var isDate = kindOfTest("Date"); + var isFile = kindOfTest("File"); + var isBlob = kindOfTest("Blob"); + var isFileList = kindOfTest("FileList"); + var isStream = (val) => isObject(val) && isFunction$1(val.pipe); + var isFormData = (thing) => { + let kind; + return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction$1(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance + kind === "object" && isFunction$1(thing.toString) && thing.toString() === "[object FormData]")); + }; + var isURLSearchParams = kindOfTest("URLSearchParams"); + var [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest); + var trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); + function forEach(obj, fn, { allOwnKeys = false } = {}) { + if (obj === null || typeof obj === "undefined") { + return; + } + let i; + let l; + if (typeof obj !== "object") { + obj = [obj]; + } + if (isArray(obj)) { + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + if (isBuffer(obj)) { + return; + } + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } + } + function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; + } + var _global = (() => { + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; + })(); + var isContextDefined = (context) => !isUndefined(context) && context !== _global; + function merge() { + const { caseless, skipUndefined } = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; + } + var extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction$1(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true + }); + } + }, { allOwnKeys }); + return a; + }; + var stripBOM = (content) => { + if (content.charCodeAt(0) === 65279) { + content = content.slice(1); + } + return content; + }; + var inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, "constructor", { + value: constructor, + writable: true, + enumerable: false, + configurable: true + }); + Object.defineProperty(constructor, "super", { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); + }; + var toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + destObj = destObj || {}; + if (sourceObj == null) return destObj; + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + return destObj; + }; + var endsWith = (str, searchString, position) => { + str = String(str); + if (position === void 0 || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; + var toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; + }; + var isTypedArray = /* @__PURE__ */ ((TypedArray) => { + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; + })(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); + var forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + const _iterator = generator.call(obj); + let result; + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } + }; + var matchAll = (regExp, str) => { + let matches; + const arr = []; + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + return arr; + }; + var isHTMLForm = kindOfTest("HTMLFormElement"); + var toCamelCase = (str) => { + return str.toLowerCase().replace( + /[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); + }; + var hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype); + var isRegExp = kindOfTest("RegExp"); + var reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + Object.defineProperties(obj, reducedDescriptors); + }; + var freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + if (isFunction$1(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { + return false; + } + const value = obj[name]; + if (!isFunction$1(value)) return; + descriptor.enumerable = false; + if ("writable" in descriptor) { + descriptor.writable = false; + return; + } + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); + }; + var toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + const define2 = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + isArray(arrayOrString) ? define2(arrayOrString) : define2(String(arrayOrString).split(delimiter)); + return obj; + }; + var noop = () => { + }; + var toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite(value = +value) ? value : defaultValue; + }; + function isSpecCompliantForm(thing) { + return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === "FormData" && thing[iterator]); + } + var toJSONObject = (obj) => { + const stack = new Array(10); + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + if (isBuffer(source)) { + return source; + } + if (!("toJSON" in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + stack[i] = void 0; + return target; + } + } + return source; + }; + return visit(obj, 0); + }; + var isAsyncFn = kindOfTest("AsyncFunction"); + var isThenable = (thing) => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); + var _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + return postMessageSupported ? ((token, callbacks) => { + _global.addEventListener("message", ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, false); + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, "*"); + }; + })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); + })( + typeof setImmediate === "function", + isFunction$1(_global.postMessage) + ); + var asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate; + var isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); + var utils$1 = { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction: isFunction$1, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, + // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable + }; + var AxiosError = class _AxiosError extends Error { + static from(error, code, config2, request, response, customProps) { + const axiosError = new _AxiosError(error.message, code || error.code, config2, request, response); + axiosError.cause = error; + axiosError.name = error.name; + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config2, request, response) { + super(message); + this.name = "AxiosError"; + this.isAxiosError = true; + code && (this.code = code); + config2 && (this.config = config2); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils$1.toJSONObject(this.config), + code: this.code, + status: this.status + }; + } + }; + AxiosError.ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + AxiosError.ERR_BAD_OPTION = "ERR_BAD_OPTION"; + AxiosError.ECONNABORTED = "ECONNABORTED"; + AxiosError.ETIMEDOUT = "ETIMEDOUT"; + AxiosError.ERR_NETWORK = "ERR_NETWORK"; + AxiosError.ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + AxiosError.ERR_DEPRECATED = "ERR_DEPRECATED"; + AxiosError.ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + AxiosError.ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + AxiosError.ERR_CANCELED = "ERR_CANCELED"; + AxiosError.ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + AxiosError.ERR_INVALID_URL = "ERR_INVALID_URL"; + var AxiosError$1 = AxiosError; + function isVisitable(thing) { + return utils$1.isPlainObject(thing) || utils$1.isArray(thing); + } + function removeBrackets(key) { + return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; + } + function renderKey(path2, key, dots) { + if (!path2) return key; + return path2.concat(key).map(function each(token, i) { + token = removeBrackets(token); + return !dots && i ? "[" + token + "]" : token; + }).join(dots ? "." : ""); + } + function isFlatArray(arr) { + return utils$1.isArray(arr) && !arr.some(isVisitable); + } + var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); + }); + function toFormData(obj, formData, options) { + if (!utils$1.isObject(obj)) { + throw new TypeError("target must be an object"); + } + formData = formData || new (FormData__default["default"] || FormData)(); + options = utils$1.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + return !utils$1.isUndefined(source[option]); + }); + const metaTokens = options.metaTokens; + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== "undefined" && Blob; + const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); + if (!utils$1.isFunction(visitor)) { + throw new TypeError("visitor must be a function"); + } + function convertValue(value) { + if (value === null) return ""; + if (utils$1.isDate(value)) { + return value.toISOString(); + } + if (utils$1.isBoolean(value)) { + return value.toString(); + } + if (!useBlob && utils$1.isBlob(value)) { + throw new AxiosError$1("Blob is not supported. Use a Buffer instead."); + } + if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { + return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); + } + return value; + } + function defaultVisitor(value, key, path2) { + let arr = value; + if (value && !path2 && typeof value === "object") { + if (utils$1.endsWith(key, "{}")) { + key = metaTokens ? key : key.slice(0, -2); + value = JSON.stringify(value); + } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { + key = removeBrackets(key); + arr.forEach(function each(el, index) { + !(utils$1.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]", + convertValue(el) + ); + }); + return false; + } + } + if (isVisitable(value)) { + return true; + } + formData.append(renderKey(path2, key, dots), convertValue(value)); + return false; + } + const stack = []; + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + function build(value, path2) { + if (utils$1.isUndefined(value)) return; + if (stack.indexOf(value) !== -1) { + throw Error("Circular reference detected in " + path2.join(".")); + } + stack.push(value); + utils$1.forEach(value, function each(el, key) { + const result = !(utils$1.isUndefined(el) || el === null) && visitor.call( + formData, + el, + utils$1.isString(key) ? key.trim() : key, + path2, + exposedHelpers + ); + if (result === true) { + build(el, path2 ? path2.concat(key) : [key]); + } + }); + stack.pop(); + } + if (!utils$1.isObject(obj)) { + throw new TypeError("data must be an object"); + } + build(obj); + return formData; + } + function encode$1(str) { + const charMap = { + "!": "%21", + "'": "%27", + "(": "%28", + ")": "%29", + "~": "%7E", + "%20": "+", + "%00": "\0" + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); + } + function AxiosURLSearchParams(params, options) { + this._pairs = []; + params && toFormData(params, this, options); + } + var prototype = AxiosURLSearchParams.prototype; + prototype.append = function append(name, value) { + this._pairs.push([name, value]); + }; + prototype.toString = function toString2(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode$1); + } : encode$1; + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + "=" + _encode(pair[1]); + }, "").join("&"); + }; + function encode(val) { + return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+"); + } + function buildURL(url2, params, options) { + if (!params) { + return url2; + } + const _encode = options && options.encode || encode; + const _options = utils$1.isFunction(options) ? { + serialize: options + } : options; + const serializeFn = _options && _options.serialize; + let serializedParams; + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, _options).toString(_encode); + } + if (serializedParams) { + const hashmarkIndex = url2.indexOf("#"); + if (hashmarkIndex !== -1) { + url2 = url2.slice(0, hashmarkIndex); + } + url2 += (url2.indexOf("?") === -1 ? "?" : "&") + serializedParams; + } + return url2; + } + var InterceptorManager = class { + constructor() { + this.handlers = []; + } + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils$1.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } + }; + var InterceptorManager$1 = InterceptorManager; + var transitionalDefaults = { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false + }; + var URLSearchParams2 = url__default["default"].URLSearchParams; + var ALPHA = "abcdefghijklmnopqrstuvwxyz"; + var DIGIT = "0123456789"; + var ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT + }; + var generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ""; + const { length } = alphabet; + const randomValues = new Uint32Array(size); + crypto__default["default"].randomFillSync(randomValues); + for (let i = 0; i < size; i++) { + str += alphabet[randomValues[i] % length]; + } + return str; + }; + var platform$1 = { + isNode: true, + classes: { + URLSearchParams: URLSearchParams2, + FormData: FormData__default["default"], + Blob: typeof Blob !== "undefined" && Blob || null + }, + ALPHABET, + generateString, + protocols: ["http", "https", "file", "data"] + }; + var hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; + var _navigator = typeof navigator === "object" && navigator || void 0; + var hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0); + var hasStandardBrowserWebWorkerEnv = (() => { + return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; + })(); + var origin = hasBrowserEnv && window.location.href || "http://localhost"; + var utils = /* @__PURE__ */ Object.freeze({ + __proto__: null, + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv, + navigator: _navigator, + origin + }); + var platform = { + ...utils, + ...platform$1 + }; + function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), { + visitor: function(value, key, path2, helpers) { + if (platform.isNode && utils$1.isBuffer(value)) { + this.append(key, value.toString("base64")); + return false; + } + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options + }); + } + function parsePropPath(name) { + return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === "[]" ? "" : match[1] || match[0]; + }); + } + function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; + } + function formDataToJSON(formData) { + function buildPath(path2, value, target, index) { + let name = path2[index++]; + if (name === "__proto__") return true; + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path2.length; + name = !name && utils$1.isArray(target) ? target.length : name; + if (isLast) { + if (utils$1.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + return !isNumericKey; + } + if (!target[name] || !utils$1.isObject(target[name])) { + target[name] = []; + } + const result = buildPath(path2, value, target[name], index); + if (result && utils$1.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + return !isNumericKey; + } + if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { + const obj = {}; + utils$1.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + return obj; + } + return null; + } + function stringifySafely(rawValue, parser, encoder) { + if (utils$1.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils$1.trim(rawValue); + } catch (e) { + if (e.name !== "SyntaxError") { + throw e; + } + } + } + return (encoder || JSON.stringify)(rawValue); + } + var defaults = { + transitional: transitionalDefaults, + adapter: ["xhr", "http", "fetch"], + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ""; + const hasJSONContentType = contentType.indexOf("application/json") > -1; + const isObjectPayload = utils$1.isObject(data); + if (isObjectPayload && utils$1.isHTMLForm(data)) { + data = new FormData(data); + } + const isFormData2 = utils$1.isFormData(data); + if (isFormData2) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { + return data; + } + if (utils$1.isArrayBufferView(data)) { + return data.buffer; + } + if (utils$1.isURLSearchParams(data)) { + headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); + return data.toString(); + } + let isFileList2; + if (isObjectPayload) { + if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { + const _FormData = this.env && this.env.FormData; + return toFormData( + isFileList2 ? { "files[]": data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + if (isObjectPayload || hasJSONContentType) { + headers.setContentType("application/json", false); + return stringifySafely(data); + } + return data; + }], + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === "json"; + if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { + return data; + } + if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === "SyntaxError") { + throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + return data; + }], + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + xsrfCookieName: "XSRF-TOKEN", + xsrfHeaderName: "X-XSRF-TOKEN", + maxContentLength: -1, + maxBodyLength: -1, + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + headers: { + common: { + "Accept": "application/json, text/plain, */*", + "Content-Type": void 0 + } + } + }; + utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { + defaults.headers[method] = {}; + }); + var defaults$1 = defaults; + var ignoreDuplicateOf = utils$1.toObjectSet([ + "age", + "authorization", + "content-length", + "content-type", + "etag", + "expires", + "from", + "host", + "if-modified-since", + "if-unmodified-since", + "last-modified", + "location", + "max-forwards", + "proxy-authorization", + "referer", + "retry-after", + "user-agent" + ]); + var parseHeaders = (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { + i = line.indexOf(":"); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + if (!key || parsed[key] && ignoreDuplicateOf[key]) { + return; + } + if (key === "set-cookie") { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; + } + }); + return parsed; + }; + var $internals = Symbol("internals"); + function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); + } + function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + return utils$1.isArray(value) ? value.map(normalizeValue) : String(value); + } + function parseTokens(str) { + const tokens = /* @__PURE__ */ Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + while (match = tokensRE.exec(str)) { + tokens[match[1]] = match[2]; + } + return tokens; + } + var isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils$1.isFunction(filter)) { + return filter.call(this, value, header); + } + if (isHeaderNameFilter) { + value = header; + } + if (!utils$1.isString(value)) return; + if (utils$1.isString(filter)) { + return value.indexOf(filter) !== -1; + } + if (utils$1.isRegExp(filter)) { + return filter.test(value); + } + } + function formatHeader(header) { + return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); + } + function buildAccessors(obj, header) { + const accessorName = utils$1.toCamelCase(" " + header); + ["get", "set", "has"].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); + } + var AxiosHeaders = class { + constructor(headers) { + headers && this.set(headers); + } + set(header, valueOrRewrite, rewrite) { + const self2 = this; + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + if (!lHeader) { + throw new Error("header name must be a non-empty string"); + } + const key = utils$1.findKey(self2, lHeader); + if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { + self2[key || _header] = normalizeValue(_value); + } + } + const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + if (utils$1.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { + let obj = {}, dest, key; + for (const entry of header) { + if (!utils$1.isArray(entry)) { + throw TypeError("Object iterator must return a key-value pair"); + } + obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; + } + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + return this; + } + get(header, parser) { + header = normalizeHeader(header); + if (header) { + const key = utils$1.findKey(this, header); + if (key) { + const value = this[key]; + if (!parser) { + return value; + } + if (parser === true) { + return parseTokens(value); + } + if (utils$1.isFunction(parser)) { + return parser.call(this, value, key); + } + if (utils$1.isRegExp(parser)) { + return parser.exec(value); + } + throw new TypeError("parser must be boolean|regexp|function"); + } + } + } + has(header, matcher) { + header = normalizeHeader(header); + if (header) { + const key = utils$1.findKey(this, header); + return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + return false; + } + delete(header, matcher) { + const self2 = this; + let deleted = false; + function deleteHeader(_header) { + _header = normalizeHeader(_header); + if (_header) { + const key = utils$1.findKey(self2, _header); + if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { + delete self2[key]; + deleted = true; + } + } + } + if (utils$1.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + return deleted; + } + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + return deleted; + } + normalize(format) { + const self2 = this; + const headers = {}; + utils$1.forEach(this, (value, header) => { + const key = utils$1.findKey(headers, header); + if (key) { + self2[key] = normalizeValue(value); + delete self2[header]; + return; + } + const normalized = format ? formatHeader(header) : String(header).trim(); + if (normalized !== header) { + delete self2[header]; + } + self2[normalized] = normalizeValue(value); + headers[normalized] = true; + }); + return this; + } + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + toJSON(asStrings) { + const obj = /* @__PURE__ */ Object.create(null); + utils$1.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); + }); + return obj; + } + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); + } + getSetCookie() { + return this.get("set-cookie") || []; + } + get [Symbol.toStringTag]() { + return "AxiosHeaders"; + } + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + static concat(first, ...targets) { + const computed = new this(first); + targets.forEach((target) => computed.set(target)); + return computed; + } + static accessor(header) { + const internals = this[$internals] = this[$internals] = { + accessors: {} + }; + const accessors = internals.accessors; + const prototype2 = this.prototype; + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + if (!accessors[lHeader]) { + buildAccessors(prototype2, _header); + accessors[lHeader] = true; + } + } + utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + return this; + } + }; + AxiosHeaders.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]); + utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + }; + }); + utils$1.freezeMethods(AxiosHeaders); + var AxiosHeaders$1 = AxiosHeaders; + function transformData(fns, response) { + const config2 = this || defaults$1; + const context = response || config2; + const headers = AxiosHeaders$1.from(context.headers); + let data = context.data; + utils$1.forEach(fns, function transform(fn) { + data = fn.call(config2, data, headers.normalize(), response ? response.status : void 0); + }); + headers.normalize(); + return data; + } + function isCancel(value) { + return !!(value && value.__CANCEL__); + } + var CanceledError = class extends AxiosError$1 { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config2, request) { + super(message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config2, request); + this.name = "CanceledError"; + this.__CANCEL__ = true; + } + }; + var CanceledError$1 = CanceledError; + function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError$1( + "Request failed with status code " + response.status, + [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } + } + function isAbsoluteURL(url2) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2); + } + function combineURLs(baseURL, relativeURL) { + return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL; + } + function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; + } + var VERSION = "1.13.4"; + function parseProtocol(url2) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url2); + return match && match[1] || ""; + } + var DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + function fromDataURI(uri, asBlob, options) { + const _Blob = options && options.Blob || platform.classes.Blob; + const protocol = parseProtocol(uri); + if (asBlob === void 0 && _Blob) { + asBlob = true; + } + if (protocol === "data") { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + const match = DATA_URL_PATTERN.exec(uri); + if (!match) { + throw new AxiosError$1("Invalid URL", AxiosError$1.ERR_INVALID_URL); + } + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? "base64" : "utf8"); + if (asBlob) { + if (!_Blob) { + throw new AxiosError$1("Blob is not supported", AxiosError$1.ERR_NOT_SUPPORT); + } + return new _Blob([buffer], { type: mime }); + } + return buffer; + } + throw new AxiosError$1("Unsupported protocol " + protocol, AxiosError$1.ERR_NOT_SUPPORT); + } + var kInternals = Symbol("internals"); + var AxiosTransformStream = class extends stream__default["default"].Transform { + constructor(options) { + options = utils$1.toFlatObject(options, { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15 + }, null, (prop, source) => { + return !utils$1.isUndefined(source[prop]); + }); + super({ + readableHighWaterMark: options.chunkSize + }); + const internals = this[kInternals] = { + timeWindow: options.timeWindow, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null + }; + this.on("newListener", (event) => { + if (event === "progress") { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + } + _read(size) { + const internals = this[kInternals]; + if (internals.onReadCallback) { + internals.onReadCallback(); + } + return super._read(size); + } + _transform(chunk, encoding, callback) { + const internals = this[kInternals]; + const maxRate = internals.maxRate; + const readableHighWaterMark = this.readableHighWaterMark; + const timeWindow = internals.timeWindow; + const divider = 1e3 / timeWindow; + const bytesThreshold = maxRate / divider; + const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; + const pushChunk = (_chunk, _callback) => { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + internals.isCaptured && this.emit("progress", internals.bytesSeen); + if (this.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + }; + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + if (maxRate) { + const now = Date.now(); + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + bytesLeft = bytesThreshold - internals.bytes; + } + if (maxRate) { + if (bytesLeft <= 0) { + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + pushChunk(_chunk, chunkRemainder ? () => { + process.nextTick(_callback, null, chunkRemainder); + } : _callback); + }; + transformChunk(chunk, function transformNextChunk(err2, _chunk) { + if (err2) { + return callback(err2); + } + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } + }; + var AxiosTransformStream$1 = AxiosTransformStream; + var { asyncIterator } = Symbol; + var readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream(); + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer(); + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } + }; + var readBlob$1 = readBlob; + var BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + "-_"; + var textEncoder = typeof TextEncoder === "function" ? new TextEncoder() : new util__default["default"].TextEncoder(); + var CRLF = "\r\n"; + var CRLF_BYTES = textEncoder.encode(CRLF); + var CRLF_BYTES_COUNT = 2; + var FormDataPart = class { + constructor(name, value) { + const { escapeName } = this.constructor; + const isStringValue = utils$1.isString(value); + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${!isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ""}${CRLF}`; + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`; + } + this.headers = textEncoder.encode(headers + CRLF); + this.contentLength = isStringValue ? value.byteLength : value.size; + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + this.name = name; + this.value = value; + } + async *encode() { + yield this.headers; + const { value } = this; + if (utils$1.isTypedArray(value)) { + yield value; + } else { + yield* readBlob$1(value); + } + yield CRLF_BYTES; + } + static escapeName(name) { + return String(name).replace(/[\r\n"]/g, (match) => ({ + "\r": "%0D", + "\n": "%0A", + '"': "%22" + })[match]); + } + }; + var formDataToStream = (form, headersHandler, options) => { + const { + tag = "form-data-boundary", + size = 25, + boundary = tag + "-" + platform.generateString(size, BOUNDARY_ALPHABET) + } = options || {}; + if (!utils$1.isFormData(form)) { + throw TypeError("FormData instance required"); + } + if (boundary.length < 1 || boundary.length > 70) { + throw Error("boundary must be 10-70 characters long"); + } + const boundaryBytes = textEncoder.encode("--" + boundary + CRLF); + const footerBytes = textEncoder.encode("--" + boundary + "--" + CRLF); + let contentLength = footerBytes.byteLength; + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + contentLength += boundaryBytes.byteLength * parts.length; + contentLength = utils$1.toFiniteNumber(contentLength); + const computedHeaders = { + "Content-Type": `multipart/form-data; boundary=${boundary}` + }; + if (Number.isFinite(contentLength)) { + computedHeaders["Content-Length"] = contentLength; + } + headersHandler && headersHandler(computedHeaders); + return stream.Readable.from(async function* () { + for (const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + yield footerBytes; + }()); + }; + var formDataToStream$1 = formDataToStream; + var ZlibHeaderTransformStream = class extends stream__default["default"].Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + if (chunk[0] !== 120) { + const header = Buffer.alloc(2); + header[0] = 120; + header[1] = 156; + this.push(header, encoding); + } + } + this.__transform(chunk, encoding, callback); + } + }; + var ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream; + var callbackify = (fn, reducer) => { + return utils$1.isAsyncFn(fn) ? function(...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err2) { + cb(err2); + } + }, cb); + } : fn; + }; + var callbackify$1 = callbackify; + function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + min = min !== void 0 ? min : 1e3; + return function push(chunkLength) { + const now = Date.now(); + const startedAt = timestamps[tail]; + if (!firstSampleTS) { + firstSampleTS = now; + } + bytes[head] = chunkLength; + timestamps[head] = now; + let i = tail; + let bytesCount = 0; + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + head = (head + 1) % samplesCount; + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + if (now - firstSampleTS < min) { + return; + } + const passed = startedAt && now - startedAt; + return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; + }; + } + function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1e3 / freq; + let lastArgs; + let timer; + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + const flush = () => lastArgs && invoke(lastArgs); + return [throttled, flush]; + } + var progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : void 0; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange2 = loaded <= total; + bytesNotified = loaded; + const data = { + loaded, + total, + progress: total ? loaded / total : void 0, + bytes: progressBytes, + rate: rate ? rate : void 0, + estimated: rate && total && inRange2 ? (total - loaded) / rate : void 0, + event: e, + lengthComputable: total != null, + [isDownloadStream ? "download" : "upload"]: true + }; + listener(data); + }, freq); + }; + var progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + return [(loaded) => throttled[0]({ + lengthComputable, + total, + loaded + }), throttled[1]]; + }; + var asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); + function estimateDataURLDecodedBytes(url2) { + if (!url2 || typeof url2 !== "string") return 0; + if (!url2.startsWith("data:")) return 0; + const comma = url2.indexOf(","); + if (comma < 0) return 0; + const meta = url2.slice(5, comma); + const body = url2.slice(comma + 1); + const isBase64 = /;base64/i.test(meta); + if (isBase64) { + let effectiveLen = body.length; + const len = body.length; + for (let i = 0; i < len; i++) { + if (body.charCodeAt(i) === 37 && i + 2 < len) { + const a = body.charCodeAt(i + 1); + const b = body.charCodeAt(i + 2); + const isHex2 = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102); + if (isHex2) { + effectiveLen -= 2; + i += 2; + } + } + } + let pad = 0; + let idx = len - 1; + const tailIsPct3D = (j) => j >= 2 && body.charCodeAt(j - 2) === 37 && // '%' + body.charCodeAt(j - 1) === 51 && // '3' + (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); + if (idx >= 0) { + if (body.charCodeAt(idx) === 61) { + pad++; + idx--; + } else if (tailIsPct3D(idx)) { + pad++; + idx -= 3; + } + } + if (pad === 1 && idx >= 0) { + if (body.charCodeAt(idx) === 61) { + pad++; + } else if (tailIsPct3D(idx)) { + pad++; + } + } + const groups = Math.floor(effectiveLen / 4); + const bytes = groups * 3 - (pad || 0); + return bytes > 0 ? bytes : 0; + } + return Buffer.byteLength(body, "utf8"); + } + var zlibOptions = { + flush: zlib__default["default"].constants.Z_SYNC_FLUSH, + finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH + }; + var brotliOptions = { + flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH + }; + var isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress); + var { http: httpFollow, https: httpsFollow } = followRedirects__default["default"]; + var isHttps = /https:?/; + var supportedProtocols = platform.protocols.map((protocol) => { + return protocol + ":"; + }); + var flushOnFinish = (stream2, [throttled, flush]) => { + stream2.on("end", flush).on("error", flush); + return throttled; + }; + var Http2Sessions = class { + constructor() { + this.sessions = /* @__PURE__ */ Object.create(null); + } + getSession(authority, options) { + options = Object.assign({ + sessionTimeout: 1e3 + }, options); + let authoritySessions = this.sessions[authority]; + if (authoritySessions) { + let len = authoritySessions.length; + for (let i = 0; i < len; i++) { + const [sessionHandle, sessionOptions] = authoritySessions[i]; + if (!sessionHandle.destroyed && !sessionHandle.closed && util__default["default"].isDeepStrictEqual(sessionOptions, options)) { + return sessionHandle; + } + } + } + const session = http2__default["default"].connect(authority, options); + let removed; + const removeSession = () => { + if (removed) { + return; + } + removed = true; + let entries = authoritySessions, len = entries.length, i = len; + while (i--) { + if (entries[i][0] === session) { + if (len === 1) { + delete this.sessions[authority]; + } else { + entries.splice(i, 1); + } + return; + } + } + }; + const originalRequestFn = session.request; + const { sessionTimeout } = options; + if (sessionTimeout != null) { + let timer; + let streamsCount = 0; + session.request = function() { + const stream2 = originalRequestFn.apply(this, arguments); + streamsCount++; + if (timer) { + clearTimeout(timer); + timer = null; + } + stream2.once("close", () => { + if (!--streamsCount) { + timer = setTimeout(() => { + timer = null; + removeSession(); + }, sessionTimeout); + } + }); + return stream2; + }; + } + session.once("close", removeSession); + let entry = [ + session, + options + ]; + authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; + return session; + } + }; + var http2Sessions = new Http2Sessions(); + function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } + } + function setProxy(options, configProxy, location2) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = proxyFromEnv__default["default"].getProxyForUrl(location2); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + if (proxy.username) { + proxy.auth = (proxy.username || "") + ":" + (proxy.password || ""); + } + if (proxy.auth) { + const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); + if (validProxyAuth) { + proxy.auth = (proxy.auth.username || "") + ":" + (proxy.auth.password || ""); + } else if (typeof proxy.auth === "object") { + throw new AxiosError$1("Invalid proxy authorization", AxiosError$1.ERR_BAD_OPTION, { proxy }); + } + const base64 = Buffer.from(proxy.auth, "utf8").toString("base64"); + options.headers["Proxy-Authorization"] = "Basic " + base64; + } + options.headers.host = options.hostname + (options.port ? ":" + options.port : ""); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + options.host = proxyHost; + options.port = proxy.port; + options.path = location2; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(":") ? proxy.protocol : `${proxy.protocol}:`; + } + } + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; + } + var isHttpAdapterSupported = typeof process !== "undefined" && utils$1.kindOf(process) === "process"; + var wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + }; + const _resolve = (value) => { + done(value); + resolve(value); + }; + const _reject = (reason) => { + done(reason, true); + reject(reason); + }; + asyncExecutor(_resolve, _reject, (onDoneHandler) => onDone = onDoneHandler).catch(_reject); + }); + }; + var resolveFamily = ({ address, family }) => { + if (!utils$1.isString(address)) { + throw TypeError("address must be a string"); + } + return { + address, + family: family || (address.indexOf(".") < 0 ? 6 : 4) + }; + }; + var buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : { address, family }); + var http2Transport = { + request(options, cb) { + const authority = options.protocol + "//" + options.hostname + ":" + (options.port || (options.protocol === "https:" ? 443 : 80)); + const { http2Options, headers } = options; + const session = http2Sessions.getSession(authority, http2Options); + const { + HTTP2_HEADER_SCHEME, + HTTP2_HEADER_METHOD, + HTTP2_HEADER_PATH, + HTTP2_HEADER_STATUS + } = http2__default["default"].constants; + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(":", ""), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path + }; + utils$1.forEach(headers, (header, name) => { + name.charAt(0) !== ":" && (http2Headers[name] = header); + }); + const req = session.request(http2Headers); + req.once("response", (responseHeaders) => { + const response = req; + responseHeaders = Object.assign({}, responseHeaders); + const status = responseHeaders[HTTP2_HEADER_STATUS]; + delete responseHeaders[HTTP2_HEADER_STATUS]; + response.headers = responseHeaders; + response.statusCode = +status; + cb(response); + }); + return req; + } + }; + var httpAdapter = isHttpAdapterSupported && function httpAdapter2(config2) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let { data, lookup, family, httpVersion = 1, http2Options } = config2; + const { responseType, responseEncoding } = config2; + const method = config2.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + httpVersion = +httpVersion; + if (Number.isNaN(httpVersion)) { + throw TypeError(`Invalid protocol version: '${config2.httpVersion}' is not a number`); + } + if (httpVersion !== 1 && httpVersion !== 2) { + throw TypeError(`Unsupported protocol version '${httpVersion}'`); + } + const isHttp2 = httpVersion === 2; + if (lookup) { + const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]); + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err2, arg0, arg1) => { + if (err2) { + return cb(err2); + } + const addresses = utils$1.isArray(arg0) ? arg0.map((addr) => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; + opt.all ? cb(err2, addresses) : cb(err2, addresses[0].address, addresses[0].family); + }); + }; + } + const abortEmitter = new events.EventEmitter(); + function abort(reason) { + try { + abortEmitter.emit("abort", !reason || reason.type ? new CanceledError$1(null, config2, req) : reason); + } catch (err2) { + console.warn("emit error", err2); + } + } + abortEmitter.once("abort", reject); + const onFinished = () => { + if (config2.cancelToken) { + config2.cancelToken.unsubscribe(abort); + } + if (config2.signal) { + config2.signal.removeEventListener("abort", abort); + } + abortEmitter.removeAllListeners(); + }; + if (config2.cancelToken || config2.signal) { + config2.cancelToken && config2.cancelToken.subscribe(abort); + if (config2.signal) { + config2.signal.aborted ? abort() : config2.signal.addEventListener("abort", abort); + } + } + onDone((response, isRejected) => { + isDone = true; + if (isRejected) { + rejected = true; + onFinished(); + return; + } + const { data: data2 } = response; + if (data2 instanceof stream__default["default"].Readable || data2 instanceof stream__default["default"].Duplex) { + const offListeners = stream__default["default"].finished(data2, () => { + offListeners(); + onFinished(); + }); + } else { + onFinished(); + } + }); + const fullPath = buildFullPath(config2.baseURL, config2.url, config2.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : void 0); + const protocol = parsed.protocol || supportedProtocols[0]; + if (protocol === "data:") { + if (config2.maxContentLength > -1) { + const dataUrl = String(config2.url || fullPath || ""); + const estimated = estimateDataURLDecodedBytes(dataUrl); + if (estimated > config2.maxContentLength) { + return reject(new AxiosError$1( + "maxContentLength size of " + config2.maxContentLength + " exceeded", + AxiosError$1.ERR_BAD_RESPONSE, + config2 + )); + } + } + let convertedData; + if (method !== "GET") { + return settle(resolve, reject, { + status: 405, + statusText: "method not allowed", + headers: {}, + config: config2 + }); + } + try { + convertedData = fromDataURI(config2.url, responseType === "blob", { + Blob: config2.env && config2.env.Blob + }); + } catch (err2) { + throw AxiosError$1.from(err2, AxiosError$1.ERR_BAD_REQUEST, config2); + } + if (responseType === "text") { + convertedData = convertedData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === "utf8") { + convertedData = utils$1.stripBOM(convertedData); + } + } else if (responseType === "stream") { + convertedData = stream__default["default"].Readable.from(convertedData); + } + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: "OK", + headers: new AxiosHeaders$1(), + config: config2 + }); + } + if (supportedProtocols.indexOf(protocol) === -1) { + return reject(new AxiosError$1( + "Unsupported protocol " + protocol, + AxiosError$1.ERR_BAD_REQUEST, + config2 + )); + } + const headers = AxiosHeaders$1.from(config2.headers).normalize(); + headers.set("User-Agent", "axios/" + VERSION, false); + const { onUploadProgress, onDownloadProgress } = config2; + const maxRate = config2.maxRate; + let maxUploadRate = void 0; + let maxDownloadRate = void 0; + if (utils$1.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + data = formDataToStream$1(data, (formHeaders) => { + headers.set(formHeaders); + }, { + tag: `axios-${VERSION}-boundary`, + boundary: userBoundary && userBoundary[1] || void 0 + }); + } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + if (!headers.hasContentLength()) { + try { + const knownLength = await util__default["default"].promisify(data.getLength).call(data); + Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); + } catch (e) { + } + } + } else if (utils$1.isBlob(data) || utils$1.isFile(data)) { + data.size && headers.setContentType(data.type || "application/octet-stream"); + headers.setContentLength(data.size || 0); + data = stream__default["default"].Readable.from(readBlob$1(data)); + } else if (data && !utils$1.isStream(data)) { + if (Buffer.isBuffer(data)) ; + else if (utils$1.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils$1.isString(data)) { + data = Buffer.from(data, "utf-8"); + } else { + return reject(new AxiosError$1( + "Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream", + AxiosError$1.ERR_BAD_REQUEST, + config2 + )); + } + headers.setContentLength(data.length, false); + if (config2.maxBodyLength > -1 && data.length > config2.maxBodyLength) { + return reject(new AxiosError$1( + "Request body larger than maxBodyLength limit", + AxiosError$1.ERR_BAD_REQUEST, + config2 + )); + } + } + const contentLength = utils$1.toFiniteNumber(headers.getContentLength()); + if (utils$1.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils$1.isStream(data)) { + data = stream__default["default"].Readable.from(data, { objectMode: false }); + } + data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({ + maxRate: utils$1.toFiniteNumber(maxUploadRate) + })], utils$1.noop); + onUploadProgress && data.on("progress", flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + )); + } + let auth = void 0; + if (config2.auth) { + const username = config2.auth.username || ""; + const password = config2.auth.password || ""; + auth = username + ":" + password; + } + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ":" + urlPassword; + } + auth && headers.delete("authorization"); + let path2; + try { + path2 = buildURL( + parsed.pathname + parsed.search, + config2.params, + config2.paramsSerializer + ).replace(/^\?/, ""); + } catch (err2) { + const customErr = new Error(err2.message); + customErr.config = config2; + customErr.url = config2.url; + customErr.exists = true; + return reject(customErr); + } + headers.set( + "Accept-Encoding", + "gzip, compress, deflate" + (isBrotliSupported ? ", br" : ""), + false + ); + const options = { + path: path2, + method, + headers: headers.toJSON(), + agents: { http: config2.httpAgent, https: config2.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {}, + http2Options + }; + !utils$1.isUndefined(lookup) && (options.lookup = lookup); + if (config2.socketPath) { + options.socketPath = config2.socketPath; + } else { + options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname; + options.port = parsed.port; + setProxy(options, config2.proxy, protocol + "//" + parsed.hostname + (parsed.port ? ":" + parsed.port : "") + options.path); + } + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config2.httpsAgent : config2.httpAgent; + if (isHttp2) { + transport = http2Transport; + } else { + if (config2.transport) { + transport = config2.transport; + } else if (config2.maxRedirects === 0) { + transport = isHttpsRequest ? https__default["default"] : http__default["default"]; + } else { + if (config2.maxRedirects) { + options.maxRedirects = config2.maxRedirects; + } + if (config2.beforeRedirect) { + options.beforeRedirects.config = config2.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + } + if (config2.maxBodyLength > -1) { + options.maxBodyLength = config2.maxBodyLength; + } else { + options.maxBodyLength = Infinity; + } + if (config2.insecureHTTPParser) { + options.insecureHTTPParser = config2.insecureHTTPParser; + } + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + const streams = [res]; + const responseLength = utils$1.toFiniteNumber(res.headers["content-length"]); + if (onDownloadProgress || maxDownloadRate) { + const transformStream = new AxiosTransformStream$1({ + maxRate: utils$1.toFiniteNumber(maxDownloadRate) + }); + onDownloadProgress && transformStream.on("progress", flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + )); + streams.push(transformStream); + } + let responseStream = res; + const lastRequest = res.req || req; + if (config2.decompress !== false && res.headers["content-encoding"]) { + if (method === "HEAD" || res.statusCode === 204) { + delete res.headers["content-encoding"]; + } + switch ((res.headers["content-encoding"] || "").toLowerCase()) { + /*eslint default-case:0*/ + case "gzip": + case "x-gzip": + case "compress": + case "x-compress": + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + delete res.headers["content-encoding"]; + break; + case "deflate": + streams.push(new ZlibHeaderTransformStream$1()); + streams.push(zlib__default["default"].createUnzip(zlibOptions)); + delete res.headers["content-encoding"]; + break; + case "br": + if (isBrotliSupported) { + streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions)); + delete res.headers["content-encoding"]; + } + } + } + responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0]; + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders$1(res.headers), + config: config2, + request: lastRequest + }; + if (responseType === "stream") { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + responseStream.on("data", function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + if (config2.maxContentLength > -1 && totalResponseBytes > config2.maxContentLength) { + rejected = true; + responseStream.destroy(); + abort(new AxiosError$1( + "maxContentLength size of " + config2.maxContentLength + " exceeded", + AxiosError$1.ERR_BAD_RESPONSE, + config2, + lastRequest + )); + } + }); + responseStream.on("aborted", function handlerStreamAborted() { + if (rejected) { + return; + } + const err2 = new AxiosError$1( + "stream has been aborted", + AxiosError$1.ERR_BAD_RESPONSE, + config2, + lastRequest + ); + responseStream.destroy(err2); + reject(err2); + }); + responseStream.on("error", function handleStreamError(err2) { + if (req.destroyed) return; + reject(AxiosError$1.from(err2, null, config2, lastRequest)); + }); + responseStream.on("end", function handleStreamEnd() { + try { + let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== "arraybuffer") { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === "utf8") { + responseData = utils$1.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err2) { + return reject(AxiosError$1.from(err2, null, config2, response.request, response)); + } + settle(resolve, reject, response); + }); + } + abortEmitter.once("abort", (err2) => { + if (!responseStream.destroyed) { + responseStream.emit("error", err2); + responseStream.destroy(); + } + }); + }); + abortEmitter.once("abort", (err2) => { + if (req.close) { + req.close(); + } else { + req.destroy(err2); + } + }); + req.on("error", function handleRequestError(err2) { + reject(AxiosError$1.from(err2, null, config2, req)); + }); + req.on("socket", function handleRequestSocket(socket) { + socket.setKeepAlive(true, 1e3 * 60); + }); + if (config2.timeout) { + const timeout = parseInt(config2.timeout, 10); + if (Number.isNaN(timeout)) { + abort(new AxiosError$1( + "error trying to parse `config.timeout` to int", + AxiosError$1.ERR_BAD_OPTION_VALUE, + config2, + req + )); + return; + } + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config2.timeout ? "timeout of " + config2.timeout + "ms exceeded" : "timeout exceeded"; + const transitional = config2.transitional || transitionalDefaults; + if (config2.timeoutErrorMessage) { + timeoutErrorMessage = config2.timeoutErrorMessage; + } + abort(new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config2, + req + )); + }); + } else { + req.setTimeout(0); + } + if (utils$1.isStream(data)) { + let ended = false; + let errored = false; + data.on("end", () => { + ended = true; + }); + data.once("error", (err2) => { + errored = true; + req.destroy(err2); + }); + data.on("close", () => { + if (!ended && !errored) { + abort(new CanceledError$1("Request stream has been aborted", config2, req)); + } + }); + data.pipe(req); + } else { + data && req.write(data); + req.end(); + } + }); + }; + var isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url2) => { + url2 = new URL(url2, platform.origin); + return origin2.protocol === url2.protocol && origin2.host === url2.host && (isMSIE || origin2.port === url2.port); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) : () => true; + var cookies = platform.hasStandardBrowserEnv ? ( + // Standard browser envs support document.cookie + { + write(name, value, expires, path2, domain, secure, sameSite) { + if (typeof document === "undefined") return; + const cookie = [`${name}=${encodeURIComponent(value)}`]; + if (utils$1.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils$1.isString(path2)) { + cookie.push(`path=${path2}`); + } + if (utils$1.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push("secure"); + } + if (utils$1.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + document.cookie = cookie.join("; "); + }, + read(name) { + if (typeof document === "undefined") return null; + const match = document.cookie.match(new RegExp("(?:^|; )" + name + "=([^;]*)")); + return match ? decodeURIComponent(match[1]) : null; + }, + remove(name) { + this.write(name, "", Date.now() - 864e5, "/"); + } + } + ) : ( + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() { + }, + read() { + return null; + }, + remove() { + } + } + ); + var headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing; + function mergeConfig(config1, config2) { + config2 = config2 || {}; + const config3 = {}; + function getMergedValue(target, source, prop, caseless) { + if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { + return utils$1.merge.call({ caseless }, target, source); + } else if (utils$1.isPlainObject(source)) { + return utils$1.merge({}, source); + } else if (utils$1.isArray(source)) { + return source.slice(); + } + return source; + } + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(void 0, a, prop, caseless); + } + } + function valueFromConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(void 0, b); + } + } + function defaultToConfig2(a, b) { + if (!utils$1.isUndefined(b)) { + return getMergedValue(void 0, b); + } else if (!utils$1.isUndefined(a)) { + return getMergedValue(void 0, a); + } + } + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(void 0, a); + } + } + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) + }; + utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + const merge2 = mergeMap[prop] || mergeDeepProperties; + const configValue = merge2(config1[prop], config2[prop], prop); + utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config3[prop] = configValue); + }); + return config3; + } + var resolveConfig = (config2) => { + const newConfig = mergeConfig({}, config2); + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + newConfig.headers = headers = AxiosHeaders$1.from(headers); + newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config2.params, config2.paramsSerializer); + if (auth) { + headers.set( + "Authorization", + "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : "")) + ); + } + if (utils$1.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(void 0); + } else if (utils$1.isFunction(data.getHeaders)) { + const formHeaders = data.getHeaders(); + const allowedHeaders = ["content-type", "content-length"]; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + return newConfig; + }; + var isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; + var xhrAdapter = isXHRAdapterSupported && function(config2) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config2); + let requestData = _config.data; + const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + function done() { + flushUpload && flushUpload(); + flushDownload && flushDownload(); + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + _config.signal && _config.signal.removeEventListener("abort", onCanceled); + } + let request = new XMLHttpRequest(); + request.open(_config.method.toUpperCase(), _config.url, true); + request.timeout = _config.timeout; + function onloadend() { + if (!request) { + return; + } + const responseHeaders = AxiosHeaders$1.from( + "getAllResponseHeaders" in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config2, + request + }; + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err2) { + reject(err2); + done(); + }, response); + request = null; + } + if ("onloadend" in request) { + request.onloadend = onloadend; + } else { + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) { + return; + } + setTimeout(onloadend); + }; + } + request.onabort = function handleAbort() { + if (!request) { + return; + } + reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config2, request)); + request = null; + }; + request.onerror = function handleError(event) { + const msg = event && event.message ? event.message : "Network Error"; + const err2 = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config2, request); + err2.event = event || null; + reject(err2); + request = null; + }; + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded"; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject(new AxiosError$1( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED, + config2, + request + )); + request = null; + }; + requestData === void 0 && requestHeaders.setContentType(null); + if ("setRequestHeader" in request) { + utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + if (!utils$1.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + if (responseType && responseType !== "json") { + request.responseType = _config.responseType; + } + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener("progress", downloadThrottled); + } + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + request.upload.addEventListener("progress", uploadThrottled); + request.upload.addEventListener("loadend", flushUpload); + } + if (_config.cancelToken || _config.signal) { + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError$1(null, config2, request) : cancel); + request.abort(); + request = null; + }; + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled); + } + } + const protocol = parseProtocol(_config.url); + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config2)); + return; + } + request.send(requestData || null); + }); + }; + var composeSignals = (signals, timeout) => { + const { length } = signals = signals ? signals.filter(Boolean) : []; + if (timeout || length) { + let controller = new AbortController(); + let aborted; + const onabort = function(reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err2 = reason instanceof Error ? reason : this.reason; + controller.abort(err2 instanceof AxiosError$1 ? err2 : new CanceledError$1(err2 instanceof Error ? err2.message : err2)); + } + }; + let timer = timeout && setTimeout(() => { + timer = null; + onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); + }, timeout); + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal2) => { + signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort); + }); + signals = null; + } + }; + signals.forEach((signal2) => signal2.addEventListener("abort", onabort)); + const { signal } = controller; + signal.unsubscribe = () => utils$1.asap(unsubscribe); + return signal; + } + }; + var composeSignals$1 = composeSignals; + var streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + let pos = 0; + let end; + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } + }; + var readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } + }; + var readStream = async function* (stream2) { + if (stream2[Symbol.asyncIterator]) { + yield* stream2; + return; + } + const reader = stream2.getReader(); + try { + for (; ; ) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } + }; + var trackStream = (stream2, chunkSize, onProgress, onFinish) => { + const iterator2 = readBytes(stream2, chunkSize); + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + return new ReadableStream({ + async pull(controller) { + try { + const { done: done2, value } = await iterator2.next(); + if (done2) { + _onFinish(); + controller.close(); + return; + } + let len = value.byteLength; + if (onProgress) { + let loadedBytes = bytes += len; + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err2) { + _onFinish(err2); + throw err2; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator2.return(); + } + }, { + highWaterMark: 2 + }); + }; + var DEFAULT_CHUNK_SIZE = 64 * 1024; + var { isFunction } = utils$1; + var globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response + }))(utils$1.global); + var { + ReadableStream: ReadableStream$1, + TextEncoder: TextEncoder$1 + } = utils$1.global; + var test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } + }; + var factory = (env) => { + env = utils$1.merge.call({ + skipUndefined: true + }, globalFetchAPI, env); + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === "function"; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + if (!isFetchSupported) { + return false; + } + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); + const encodeText = isFetchSupported && (typeof TextEncoder$1 === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder$1()) : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { + let duplexAccessed = false; + const hasContentType = new Request(platform.origin, { + body: new ReadableStream$1(), + method: "POST", + get duplex() { + duplexAccessed = true; + return "half"; + } + }).headers.has("Content-Type"); + return duplexAccessed && !hasContentType; + }); + const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body)); + const resolvers = { + stream: supportsResponseStream && ((res) => res.body) + }; + isFetchSupported && (() => { + ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => { + !resolvers[type] && (resolvers[type] = (res, config2) => { + let method = res && res[type]; + if (method) { + return method.call(res); + } + throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config2); + }); + }); + })(); + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + if (utils$1.isBlob(body)) { + return body.size; + } + if (utils$1.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: "POST", + body + }); + return (await _request.arrayBuffer()).byteLength; + } + if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { + return body.byteLength; + } + if (utils$1.isURLSearchParams(body)) { + body = body + ""; + } + if (utils$1.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + const resolveBodyLength = async (headers, body) => { + const length = utils$1.toFiniteNumber(headers.getContentLength()); + return length == null ? getBodyLength(body) : length; + }; + return async (config2) => { + let { + url: url2, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = "same-origin", + fetchOptions + } = resolveConfig(config2); + let _fetch = envFetch || fetch; + responseType = responseType ? (responseType + "").toLowerCase() : "text"; + let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout); + let request = null; + const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { + composedSignal.unsubscribe(); + }); + let requestContentLength; + try { + if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { + let _request = new Request(url2, { + method: "POST", + body: data, + duplex: "half" + }); + let contentTypeHeader; + if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) { + headers.setContentType(contentTypeHeader); + } + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + if (!utils$1.isString(withCredentials)) { + withCredentials = withCredentials ? "include" : "omit"; + } + const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype; + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: "half", + credentials: isCredentialsSupported ? withCredentials : void 0 + }; + request = isRequestSupported && new Request(url2, resolvedOptions); + let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url2, resolvedOptions)); + const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response"); + if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { + const options = {}; + ["status", "statusText", "headers"].forEach((prop) => { + options[prop] = response[prop]; + }); + const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length")); + const [onProgress, flush] = onDownloadProgress && progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + ) || []; + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + responseType = responseType || "text"; + let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config2); + !isStreamResponse && unsubscribe && unsubscribe(); + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders$1.from(response.headers), + status: response.status, + statusText: response.statusText, + config: config2, + request + }); + }); + } catch (err2) { + unsubscribe && unsubscribe(); + if (err2 && err2.name === "TypeError" && /Load failed|fetch/i.test(err2.message)) { + throw Object.assign( + new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config2, request), + { + cause: err2.cause || err2 + } + ); + } + throw AxiosError$1.from(err2, err2 && err2.code, config2, request); + } + }; + }; + var seedCache = /* @__PURE__ */ new Map(); + var getFetch = (config2) => { + let env = config2 && config2.env || {}; + const { fetch: fetch2, Request, Response } = env; + const seeds = [ + Request, + Response, + fetch2 + ]; + let len = seeds.length, i = len, seed, target, map = seedCache; + while (i--) { + seed = seeds[i]; + target = map.get(seed); + target === void 0 && map.set(seed, target = i ? /* @__PURE__ */ new Map() : factory(env)); + map = target; + } + return target; + }; + getFetch(); + var knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: getFetch + } + }; + utils$1.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, "name", { value }); + } catch (e) { + } + Object.defineProperty(fn, "adapterName", { value }); + } + }); + var renderReason = (reason) => `- ${reason}`; + var isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; + function getAdapter(adapters2, config2) { + adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; + const { length } = adapters2; + let nameOrAdapter; + let adapter; + const rejectedReasons = {}; + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters2[i]; + let id; + adapter = nameOrAdapter; + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + if (adapter === void 0) { + throw new AxiosError$1(`Unknown adapter '${id}'`); + } + } + if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config2)))) { + break; + } + rejectedReasons[id || "#" + i] = adapter; + } + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build") + ); + let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; + throw new AxiosError$1( + `There is no suitable adapter to dispatch the request ` + s, + "ERR_NOT_SUPPORT" + ); + } + return adapter; + } + var adapters = { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter, + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters + }; + function throwIfCancellationRequested(config2) { + if (config2.cancelToken) { + config2.cancelToken.throwIfRequested(); + } + if (config2.signal && config2.signal.aborted) { + throw new CanceledError$1(null, config2); + } + } + function dispatchRequest(config2) { + throwIfCancellationRequested(config2); + config2.headers = AxiosHeaders$1.from(config2.headers); + config2.data = transformData.call( + config2, + config2.transformRequest + ); + if (["post", "put", "patch"].indexOf(config2.method) !== -1) { + config2.headers.setContentType("application/x-www-form-urlencoded", false); + } + const adapter = adapters.getAdapter(config2.adapter || defaults$1.adapter, config2); + return adapter(config2).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config2); + response.data = transformData.call( + config2, + config2.transformResponse, + response + ); + response.headers = AxiosHeaders$1.from(response.headers); + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config2); + if (reason && reason.response) { + reason.response.data = transformData.call( + config2, + config2.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders$1.from(reason.response.headers); + } + } + return Promise.reject(reason); + }); + } + var validators$1 = {}; + ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => { + validators$1[type] = function validator2(thing) { + return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type; + }; + }); + var deprecatedWarnings = {}; + validators$1.transitional = function transitional(validator2, version, message) { + function formatMessage(opt, desc) { + return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); + } + return (value, opt, opts) => { + if (validator2 === false) { + throw new AxiosError$1( + formatMessage(opt, " has been removed" + (version ? " in " + version : "")), + AxiosError$1.ERR_DEPRECATED + ); + } + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + console.warn( + formatMessage( + opt, + " has been deprecated since v" + version + " and will be removed in the near future" + ) + ); + } + return validator2 ? validator2(value, opt, opts) : true; + }; + }; + validators$1.spelling = function spelling(correctSpelling) { + return (value, opt) => { + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; + }; + function assertOptions(options, schema, allowUnknown) { + if (typeof options !== "object") { + throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator2 = schema[opt]; + if (validator2) { + const value = options[opt]; + const result = value === void 0 || validator2(value, opt, options); + if (result !== true) { + throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION); + } + } + } + var validator = { + assertOptions, + validators: validators$1 + }; + var validators = validator.validators; + var Axios = class { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager$1(), + response: new InterceptorManager$1() + }; + } + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config2) { + try { + return await this._request(configOrUrl, config2); + } catch (err2) { + if (err2 instanceof Error) { + let dummy = {}; + Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : ""; + try { + if (!err2.stack) { + err2.stack = stack; + } else if (stack && !String(err2.stack).endsWith(stack.replace(/^.+\n.+\n/, ""))) { + err2.stack += "\n" + stack; + } + } catch (e) { + } + } + throw err2; + } + } + _request(configOrUrl, config2) { + if (typeof configOrUrl === "string") { + config2 = config2 || {}; + config2.url = configOrUrl; + } else { + config2 = configOrUrl || {}; + } + config2 = mergeConfig(this.defaults, config2); + const { transitional, paramsSerializer, headers } = config2; + if (transitional !== void 0) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + if (paramsSerializer != null) { + if (utils$1.isFunction(paramsSerializer)) { + config2.paramsSerializer = { + serialize: paramsSerializer + }; + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + if (config2.allowAbsoluteUrls !== void 0) ; + else if (this.defaults.allowAbsoluteUrls !== void 0) { + config2.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config2.allowAbsoluteUrls = true; + } + validator.assertOptions(config2, { + baseUrl: validators.spelling("baseURL"), + withXsrfToken: validators.spelling("withXSRFToken") + }, true); + config2.method = (config2.method || this.defaults.method || "get").toLowerCase(); + let contextHeaders = headers && utils$1.merge( + headers.common, + headers[config2.method] + ); + headers && utils$1.forEach( + ["delete", "get", "head", "post", "put", "patch", "common"], + (method) => { + delete headers[method]; + } + ); + config2.headers = AxiosHeaders$1.concat(contextHeaders, headers); + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config2) === false) { + return; + } + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + let promise; + let i = 0; + let len; + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), void 0]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + promise = Promise.resolve(config2); + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + return promise; + } + len = requestInterceptorChain.length; + let newConfig = config2; + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + i = 0; + len = responseInterceptorChain.length; + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + return promise; + } + getUri(config2) { + config2 = mergeConfig(this.defaults, config2); + const fullPath = buildFullPath(config2.baseURL, config2.url, config2.allowAbsoluteUrls); + return buildURL(fullPath, config2.params, config2.paramsSerializer); + } + }; + utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { + Axios.prototype[method] = function(url2, config2) { + return this.request(mergeConfig(config2 || {}, { + method, + url: url2, + data: (config2 || {}).data + })); + }; + }); + utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { + function generateHTTPMethod(isForm) { + return function httpMethod(url2, data, config2) { + return this.request(mergeConfig(config2 || {}, { + method, + headers: isForm ? { + "Content-Type": "multipart/form-data" + } : {}, + url: url2, + data + })); + }; + } + Axios.prototype[method] = generateHTTPMethod(); + Axios.prototype[method + "Form"] = generateHTTPMethod(true); + }); + var Axios$1 = Axios; + var CancelToken = class _CancelToken { + constructor(executor) { + if (typeof executor !== "function") { + throw new TypeError("executor must be a function."); + } + let resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + const token = this; + this.promise.then((cancel) => { + if (!token._listeners) return; + let i = token._listeners.length; + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + this.promise.then = (onfulfilled) => { + let _resolve; + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + return promise; + }; + executor(function cancel(message, config2, request) { + if (token.reason) { + return; + } + token.reason = new CanceledError$1(message, config2, request); + resolvePromise(token.reason); + }); + } + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + /** + * Subscribe to the cancel signal + */ + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + /** + * Unsubscribe from the cancel signal + */ + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + toAbortSignal() { + const controller = new AbortController(); + const abort = (err2) => { + controller.abort(err2); + }; + this.subscribe(abort); + controller.signal.unsubscribe = () => this.unsubscribe(abort); + return controller.signal; + } + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new _CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } + }; + var CancelToken$1 = CancelToken; + function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; + } + function isAxiosError(payload) { + return utils$1.isObject(payload) && payload.isAxiosError === true; + } + var HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526 + }; + Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; + }); + var HttpStatusCode$1 = HttpStatusCode; + function createInstance(defaultConfig) { + const context = new Axios$1(defaultConfig); + const instance = bind(Axios$1.prototype.request, context); + utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true }); + utils$1.extend(instance, context, null, { allOwnKeys: true }); + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + return instance; + } + var axios = createInstance(defaults$1); + axios.Axios = Axios$1; + axios.CanceledError = CanceledError$1; + axios.CancelToken = CancelToken$1; + axios.isCancel = isCancel; + axios.VERSION = VERSION; + axios.toFormData = toFormData; + axios.AxiosError = AxiosError$1; + axios.Cancel = axios.CanceledError; + axios.all = function all(promises) { + return Promise.all(promises); + }; + axios.spread = spread; + axios.isAxiosError = isAxiosError; + axios.mergeConfig = mergeConfig; + axios.AxiosHeaders = AxiosHeaders$1; + axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); + axios.getAdapter = adapters.getAdapter; + axios.HttpStatusCode = HttpStatusCode$1; + axios.default = axios; + module2.exports = axios; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/http-client/axios-client.js +var require_axios_client = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/http-client/axios-client.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.create = exports2.axiosClient = void 0; + var _axios = _interopRequireDefault(require_axios()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + var axiosClient = exports2.axiosClient = _axios.default; + var create = exports2.create = _axios.default.create; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/http-client/index.js +var require_http_client = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/http-client/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + httpClient: true, + create: true + }; + exports2.httpClient = exports2.create = void 0; + var _types = require_types6(); + Object.keys(_types).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _types[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); + }); + var httpClient; + var create; + if (true) { + axiosModule = require_axios_client(); + exports2.httpClient = httpClient = axiosModule.axiosClient; + exports2.create = create = axiosModule.create; + } else { + fetchModule = null; + exports2.httpClient = httpClient = fetchModule.fetchClient; + exports2.create = create = fetchModule.create; + } + var axiosModule; + var fetchModule; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/stellartoml/index.js +var require_stellartoml = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/stellartoml/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.STELLAR_TOML_MAX_SIZE = exports2.Resolver = exports2.Api = void 0; + var _toml = _interopRequireDefault(require_toml()); + var _httpClient = require_http_client(); + var _config = require_config2(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var STELLAR_TOML_MAX_SIZE = exports2.STELLAR_TOML_MAX_SIZE = 100 * 1024; + var CancelToken = _httpClient.httpClient.CancelToken; + var Resolver = exports2.Resolver = function() { + function Resolver2() { + _classCallCheck(this, Resolver2); + } + return _createClass(Resolver2, null, [{ + key: "resolve", + value: function() { + var _resolve = _asyncToGenerator(_regenerator().m(function _callee(domain) { + var _opts$allowedRedirect; + var opts, allowHttp, timeout, protocol, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + opts = _args.length > 1 && _args[1] !== void 0 ? _args[1] : {}; + allowHttp = typeof opts.allowHttp === "undefined" ? _config.Config.isAllowHttp() : opts.allowHttp; + timeout = typeof opts.timeout === "undefined" ? _config.Config.getTimeout() : opts.timeout; + protocol = allowHttp ? "http" : "https"; + return _context.a(2, _httpClient.httpClient.get("".concat(protocol, "://").concat(domain, "/.well-known/stellar.toml"), { + maxRedirects: (_opts$allowedRedirect = opts.allowedRedirects) !== null && _opts$allowedRedirect !== void 0 ? _opts$allowedRedirect : 0, + maxContentLength: STELLAR_TOML_MAX_SIZE, + cancelToken: timeout ? new CancelToken(function(cancel) { + return setTimeout(function() { + return cancel("timeout of ".concat(timeout, "ms exceeded")); + }, timeout); + }) : void 0, + timeout + }).then(function(response) { + try { + var tomlObject = _toml.default.parse(response.data); + return Promise.resolve(tomlObject); + } catch (e) { + return Promise.reject(new Error("stellar.toml is invalid - Parsing error on line ".concat(e.line, ", column ").concat(e.column, ": ").concat(e.message))); + } + }).catch(function(err2) { + if (err2.message.match(/^maxContentLength size/)) { + throw new Error("stellar.toml file exceeds allowed size of ".concat(STELLAR_TOML_MAX_SIZE)); + } else { + throw err2; + } + })); + } + }, _callee); + })); + function resolve(_x) { + return _resolve.apply(this, arguments); + } + return resolve; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/js-xdr/lib/xdr.js +var require_xdr = __commonJS({ + "node_modules/@stellar/js-xdr/lib/xdr.js"(exports2, module2) { + (function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports2 === "object" && typeof module2 === "object") + module2.exports = factory(); + else if (typeof define === "function" && define.amd) + define([], factory); + else if (typeof exports2 === "object") + exports2["XDR"] = factory(); + else + root["XDR"] = factory(); + })(exports2, () => { + return ( + /******/ + (() => { + var __webpack_modules__ = { + /***/ + "./src/array.js": ( + /*!**********************!*\ + !*** ./src/array.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Array: () => ( + /* binding */ + Array2 + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Array2 extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrCompositeType { + constructor(childType, length) { + super(); + this._childType = childType; + this._length = length; + } + /** + * @inheritDoc + */ + read(reader) { + const result = new global.Array(this._length); + for (let i = 0; i < this._length; i++) { + result[i] = this._childType.read(reader); + } + return result; + } + /** + * @inheritDoc + */ + write(value, writer) { + if (!global.Array.isArray(value)) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError(`value is not array`); + if (value.length !== this._length) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError(`got array of size ${value.length}, expected ${this._length}`); + for (const child of value) { + this._childType.write(child, writer); + } + } + /** + * @inheritDoc + */ + isValid(value) { + if (!(value instanceof global.Array) || value.length !== this._length) { + return false; + } + for (const child of value) { + if (!this._childType.isValid(child)) return false; + } + return true; + } + } + } + ), + /***/ + "./src/bigint-encoder.js": ( + /*!*******************************!*\ + !*** ./src/bigint-encoder.js ***! + \*******************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + calculateBigIntBoundaries: () => ( + /* binding */ + calculateBigIntBoundaries + ), + /* harmony export */ + encodeBigIntFromBits: () => ( + /* binding */ + encodeBigIntFromBits + ), + /* harmony export */ + formatIntName: () => ( + /* binding */ + formatIntName + ), + /* harmony export */ + sliceBigInt: () => ( + /* binding */ + sliceBigInt + ) + /* harmony export */ + }); + function encodeBigIntFromBits(parts, size, unsigned) { + if (!(parts instanceof Array)) { + parts = [parts]; + } else if (parts.length && parts[0] instanceof Array) { + parts = parts[0]; + } + const total = parts.length; + const sliceSize = size / total; + switch (sliceSize) { + case 32: + case 64: + case 128: + case 256: + break; + default: + throw new RangeError(`expected slices to fit in 32/64/128/256 bits, got ${parts}`); + } + try { + for (let i = 0; i < parts.length; i++) { + if (typeof parts[i] !== "bigint") { + parts[i] = BigInt(parts[i].valueOf()); + } + } + } catch (e) { + throw new TypeError(`expected bigint-like values, got: ${parts} (${e})`); + } + if (unsigned && parts.length === 1 && parts[0] < 0n) { + throw new RangeError(`expected a positive value, got: ${parts}`); + } + let result = BigInt.asUintN(sliceSize, parts[0]); + for (let i = 1; i < parts.length; i++) { + result |= BigInt.asUintN(sliceSize, parts[i]) << BigInt(i * sliceSize); + } + if (!unsigned) { + result = BigInt.asIntN(size, result); + } + const [min, max] = calculateBigIntBoundaries(size, unsigned); + if (result >= min && result <= max) { + return result; + } + throw new TypeError(`bigint values [${parts}] for ${formatIntName(size, unsigned)} out of range [${min}, ${max}]: ${result}`); + } + function sliceBigInt(value, iSize, sliceSize) { + if (typeof value !== "bigint") { + throw new TypeError(`Expected bigint 'value', got ${typeof value}`); + } + const total = iSize / sliceSize; + if (total === 1) { + return [value]; + } + if (sliceSize < 32 || sliceSize > 128 || total !== 2 && total !== 4 && total !== 8) { + throw new TypeError(`invalid bigint (${value}) and slice size (${iSize} -> ${sliceSize}) combination`); + } + const shift = BigInt(sliceSize); + const result = new Array(total); + for (let i = 0; i < total; i++) { + result[i] = BigInt.asIntN(sliceSize, value); + value >>= shift; + } + return result; + } + function formatIntName(precision, unsigned) { + return `${unsigned ? "u" : "i"}${precision}`; + } + function calculateBigIntBoundaries(size, unsigned) { + if (unsigned) { + return [0n, (1n << BigInt(size)) - 1n]; + } + const boundary = 1n << BigInt(size - 1); + return [0n - boundary, boundary - 1n]; + } + } + ), + /***/ + "./src/bool.js": ( + /*!*********************!*\ + !*** ./src/bool.js ***! + \*********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Bool: () => ( + /* binding */ + Bool + ) + /* harmony export */ + }); + var _int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./int */ + "./src/int.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Bool extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrPrimitiveType { + /** + * @inheritDoc + */ + static read(reader) { + const value = _int__WEBPACK_IMPORTED_MODULE_0__.Int.read(reader); + switch (value) { + case 0: + return false; + case 1: + return true; + default: + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrReaderError(`got ${value} when trying to read a bool`); + } + } + /** + * @inheritDoc + */ + static write(value, writer) { + const intVal = value ? 1 : 0; + _int__WEBPACK_IMPORTED_MODULE_0__.Int.write(intVal, writer); + } + /** + * @inheritDoc + */ + static isValid(value) { + return typeof value === "boolean"; + } + } + } + ), + /***/ + "./src/browser.js": ( + /*!************************!*\ + !*** ./src/browser.js ***! + \************************/ + /***/ + (module3, __unused_webpack_exports, __webpack_require__3) => { + const exports3 = __webpack_require__3( + /*! ./index */ + "./src/index.js" + ); + module3.exports = exports3; + } + ), + /***/ + "./src/config.js": ( + /*!***********************!*\ + !*** ./src/config.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Reference: () => ( + /* reexport safe */ + _reference__WEBPACK_IMPORTED_MODULE_1__.Reference + ), + /* harmony export */ + config: () => ( + /* binding */ + config2 + ) + /* harmony export */ + }); + var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./types */ + "./src/types.js" + ); + var _reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./reference */ + "./src/reference.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class SimpleReference extends _reference__WEBPACK_IMPORTED_MODULE_1__.Reference { + constructor(name) { + super(); + this.name = name; + } + resolve(context) { + const defn = context.definitions[this.name]; + return defn.resolve(context); + } + } + class ArrayReference extends _reference__WEBPACK_IMPORTED_MODULE_1__.Reference { + constructor(childReference, length, variable = false) { + super(); + this.childReference = childReference; + this.length = length; + this.variable = variable; + } + resolve(context) { + let resolvedChild = this.childReference; + let length = this.length; + if (resolvedChild instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + resolvedChild = resolvedChild.resolve(context); + } + if (length instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + length = length.resolve(context); + } + if (this.variable) { + return new _types__WEBPACK_IMPORTED_MODULE_0__.VarArray(resolvedChild, length); + } + return new _types__WEBPACK_IMPORTED_MODULE_0__.Array(resolvedChild, length); + } + } + class OptionReference extends _reference__WEBPACK_IMPORTED_MODULE_1__.Reference { + constructor(childReference) { + super(); + this.childReference = childReference; + this.name = childReference.name; + } + resolve(context) { + let resolvedChild = this.childReference; + if (resolvedChild instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + resolvedChild = resolvedChild.resolve(context); + } + return new _types__WEBPACK_IMPORTED_MODULE_0__.Option(resolvedChild); + } + } + class SizedReference extends _reference__WEBPACK_IMPORTED_MODULE_1__.Reference { + constructor(sizedType, length) { + super(); + this.sizedType = sizedType; + this.length = length; + } + resolve(context) { + let length = this.length; + if (length instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + length = length.resolve(context); + } + return new this.sizedType(length); + } + } + class Definition { + constructor(constructor, name, cfg) { + this.constructor = constructor; + this.name = name; + this.config = cfg; + } + // resolve calls the constructor of this definition with the provided context + // and this definitions config values. The definitions constructor should + // populate the final type on `context.results`, and may refer to other + // definitions through `context.definitions` + resolve(context) { + if (this.name in context.results) { + return context.results[this.name]; + } + return this.constructor(context, this.name, this.config); + } + } + function createTypedef(context, typeName, value) { + if (value instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + value = value.resolve(context); + } + context.results[typeName] = value; + return value; + } + function createConst(context, name, value) { + context.results[name] = value; + return value; + } + class TypeBuilder { + constructor(destination) { + this._destination = destination; + this._definitions = {}; + } + enum(name, members) { + const result = new Definition(_types__WEBPACK_IMPORTED_MODULE_0__.Enum.create, name, members); + this.define(name, result); + } + struct(name, members) { + const result = new Definition(_types__WEBPACK_IMPORTED_MODULE_0__.Struct.create, name, members); + this.define(name, result); + } + union(name, cfg) { + const result = new Definition(_types__WEBPACK_IMPORTED_MODULE_0__.Union.create, name, cfg); + this.define(name, result); + } + typedef(name, cfg) { + const result = new Definition(createTypedef, name, cfg); + this.define(name, result); + } + const(name, cfg) { + const result = new Definition(createConst, name, cfg); + this.define(name, result); + } + void() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Void; + } + bool() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Bool; + } + int() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Int; + } + hyper() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Hyper; + } + uint() { + return _types__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt; + } + uhyper() { + return _types__WEBPACK_IMPORTED_MODULE_0__.UnsignedHyper; + } + float() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Float; + } + double() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Double; + } + quadruple() { + return _types__WEBPACK_IMPORTED_MODULE_0__.Quadruple; + } + string(length) { + return new SizedReference(_types__WEBPACK_IMPORTED_MODULE_0__.String, length); + } + opaque(length) { + return new SizedReference(_types__WEBPACK_IMPORTED_MODULE_0__.Opaque, length); + } + varOpaque(length) { + return new SizedReference(_types__WEBPACK_IMPORTED_MODULE_0__.VarOpaque, length); + } + array(childType, length) { + return new ArrayReference(childType, length); + } + varArray(childType, maxLength) { + return new ArrayReference(childType, maxLength, true); + } + option(childType) { + return new OptionReference(childType); + } + define(name, definition) { + if (this._destination[name] === void 0) { + this._definitions[name] = definition; + } else { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrDefinitionError(`${name} is already defined`); + } + } + lookup(name) { + return new SimpleReference(name); + } + resolve() { + for (const defn of Object.values(this._definitions)) { + defn.resolve({ + definitions: this._definitions, + results: this._destination + }); + } + } + } + function config2(fn, types = {}) { + if (fn) { + const builder = new TypeBuilder(types); + fn(builder); + builder.resolve(); + } + return types; + } + } + ), + /***/ + "./src/double.js": ( + /*!***********************!*\ + !*** ./src/double.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Double: () => ( + /* binding */ + Double + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Double extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /** + * @inheritDoc + */ + static read(reader) { + return reader.readDoubleBE(); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (typeof value !== "number") throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("not a number"); + writer.writeDoubleBE(value); + } + /** + * @inheritDoc + */ + static isValid(value) { + return typeof value === "number"; + } + } + } + ), + /***/ + "./src/enum.js": ( + /*!*********************!*\ + !*** ./src/enum.js ***! + \*********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Enum: () => ( + /* binding */ + Enum + ) + /* harmony export */ + }); + var _int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./int */ + "./src/int.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Enum extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrPrimitiveType { + constructor(name, value) { + super(); + this.name = name; + this.value = value; + } + /** + * @inheritDoc + */ + static read(reader) { + const intVal = _int__WEBPACK_IMPORTED_MODULE_0__.Int.read(reader); + const res = this._byValue[intVal]; + if (res === void 0) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrReaderError(`unknown ${this.enumName} member for value ${intVal}`); + return res; + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (!this.isValid(value)) { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`${value} has enum name ${value?.enumName}, not ${this.enumName}: ${JSON.stringify(value)}`); + } + _int__WEBPACK_IMPORTED_MODULE_0__.Int.write(value.value, writer); + } + /** + * @inheritDoc + */ + static isValid(value) { + return value?.constructor?.enumName === this.enumName || (0, _xdr_type__WEBPACK_IMPORTED_MODULE_1__.isSerializableIsh)(value, this); + } + static members() { + return this._members; + } + static values() { + return Object.values(this._members); + } + static fromName(name) { + const result = this._members[name]; + if (!result) throw new TypeError(`${name} is not a member of ${this.enumName}`); + return result; + } + static fromValue(value) { + const result = this._byValue[value]; + if (result === void 0) throw new TypeError(`${value} is not a value of any member of ${this.enumName}`); + return result; + } + static create(context, name, members) { + const ChildEnum = class extends Enum { + }; + ChildEnum.enumName = name; + context.results[name] = ChildEnum; + ChildEnum._members = {}; + ChildEnum._byValue = {}; + for (const [key, value] of Object.entries(members)) { + const inst = new ChildEnum(key, value); + ChildEnum._members[key] = inst; + ChildEnum._byValue[value] = inst; + ChildEnum[key] = () => inst; + } + return ChildEnum; + } + } + } + ), + /***/ + "./src/errors.js": ( + /*!***********************!*\ + !*** ./src/errors.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + XdrDefinitionError: () => ( + /* binding */ + XdrDefinitionError + ), + /* harmony export */ + XdrNotImplementedDefinitionError: () => ( + /* binding */ + XdrNotImplementedDefinitionError + ), + /* harmony export */ + XdrReaderError: () => ( + /* binding */ + XdrReaderError + ), + /* harmony export */ + XdrWriterError: () => ( + /* binding */ + XdrWriterError + ) + /* harmony export */ + }); + class XdrWriterError extends TypeError { + constructor(message) { + super(`XDR Write Error: ${message}`); + } + } + class XdrReaderError extends TypeError { + constructor(message) { + super(`XDR Read Error: ${message}`); + } + } + class XdrDefinitionError extends TypeError { + constructor(message) { + super(`XDR Type Definition Error: ${message}`); + } + } + class XdrNotImplementedDefinitionError extends XdrDefinitionError { + constructor() { + super(`method not implemented, it should be overloaded in the descendant class.`); + } + } + } + ), + /***/ + "./src/float.js": ( + /*!**********************!*\ + !*** ./src/float.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Float: () => ( + /* binding */ + Float + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Float extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /** + * @inheritDoc + */ + static read(reader) { + return reader.readFloatBE(); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (typeof value !== "number") throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("not a number"); + writer.writeFloatBE(value); + } + /** + * @inheritDoc + */ + static isValid(value) { + return typeof value === "number"; + } + } + } + ), + /***/ + "./src/hyper.js": ( + /*!**********************!*\ + !*** ./src/hyper.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Hyper: () => ( + /* binding */ + Hyper + ) + /* harmony export */ + }); + var _large_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./large-int */ + "./src/large-int.js" + ); + class Hyper extends _large_int__WEBPACK_IMPORTED_MODULE_0__.LargeInt { + /** + * @param {Array} parts - Slices to encode + */ + constructor(...args) { + super(args); + } + get low() { + return Number(this._value & 0xffffffffn) << 0; + } + get high() { + return Number(this._value >> 32n) >> 0; + } + get size() { + return 64; + } + get unsigned() { + return false; + } + /** + * Create Hyper instance from two [high][low] i32 values + * @param {Number} low - Low part of i64 number + * @param {Number} high - High part of i64 number + * @return {LargeInt} + */ + static fromBits(low, high) { + return new this(low, high); + } + } + Hyper.defineIntBoundaries(); + } + ), + /***/ + "./src/index.js": ( + /*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Array: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Array + ), + /* harmony export */ + Bool: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Bool + ), + /* harmony export */ + Double: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Double + ), + /* harmony export */ + Enum: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Enum + ), + /* harmony export */ + Float: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Float + ), + /* harmony export */ + Hyper: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Hyper + ), + /* harmony export */ + Int: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Int + ), + /* harmony export */ + LargeInt: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.LargeInt + ), + /* harmony export */ + Opaque: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Opaque + ), + /* harmony export */ + Option: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Option + ), + /* harmony export */ + Quadruple: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Quadruple + ), + /* harmony export */ + Reference: () => ( + /* reexport safe */ + _config__WEBPACK_IMPORTED_MODULE_1__.Reference + ), + /* harmony export */ + String: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.String + ), + /* harmony export */ + Struct: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Struct + ), + /* harmony export */ + Union: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Union + ), + /* harmony export */ + UnsignedHyper: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.UnsignedHyper + ), + /* harmony export */ + UnsignedInt: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt + ), + /* harmony export */ + VarArray: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.VarArray + ), + /* harmony export */ + VarOpaque: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.VarOpaque + ), + /* harmony export */ + Void: () => ( + /* reexport safe */ + _types__WEBPACK_IMPORTED_MODULE_0__.Void + ), + /* harmony export */ + XdrReader: () => ( + /* reexport safe */ + _serialization_xdr_reader__WEBPACK_IMPORTED_MODULE_2__.XdrReader + ), + /* harmony export */ + XdrWriter: () => ( + /* reexport safe */ + _serialization_xdr_writer__WEBPACK_IMPORTED_MODULE_3__.XdrWriter + ), + /* harmony export */ + config: () => ( + /* reexport safe */ + _config__WEBPACK_IMPORTED_MODULE_1__.config + ) + /* harmony export */ + }); + var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./types */ + "./src/types.js" + ); + var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./config */ + "./src/config.js" + ); + var _serialization_xdr_reader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./serialization/xdr-reader */ + "./src/serialization/xdr-reader.js" + ); + var _serialization_xdr_writer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3( + /*! ./serialization/xdr-writer */ + "./src/serialization/xdr-writer.js" + ); + } + ), + /***/ + "./src/int.js": ( + /*!********************!*\ + !*** ./src/int.js ***! + \********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Int: () => ( + /* binding */ + Int + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + const MAX_VALUE = 2147483647; + const MIN_VALUE = -2147483648; + class Int extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /** + * @inheritDoc + */ + static read(reader) { + return reader.readInt32BE(); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (typeof value !== "number") throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("not a number"); + if ((value | 0) !== value) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("invalid i32 value"); + writer.writeInt32BE(value); + } + /** + * @inheritDoc + */ + static isValid(value) { + if (typeof value !== "number" || (value | 0) !== value) { + return false; + } + return value >= MIN_VALUE && value <= MAX_VALUE; + } + } + Int.MAX_VALUE = MAX_VALUE; + Int.MIN_VALUE = -MIN_VALUE; + } + ), + /***/ + "./src/large-int.js": ( + /*!**************************!*\ + !*** ./src/large-int.js ***! + \**************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + LargeInt: () => ( + /* binding */ + LargeInt + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _bigint_encoder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./bigint-encoder */ + "./src/bigint-encoder.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class LargeInt extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /** + * @param {Array} parts - Slices to encode + */ + constructor(args) { + super(); + this._value = (0, _bigint_encoder__WEBPACK_IMPORTED_MODULE_1__.encodeBigIntFromBits)(args, this.size, this.unsigned); + } + /** + * Signed/unsigned representation + * @type {Boolean} + * @abstract + */ + get unsigned() { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrNotImplementedDefinitionError(); + } + /** + * Size of the integer in bits + * @type {Number} + * @abstract + */ + get size() { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrNotImplementedDefinitionError(); + } + /** + * Slice integer to parts with smaller bit size + * @param {32|64|128} sliceSize - Size of each part in bits + * @return {BigInt[]} + */ + slice(sliceSize) { + return (0, _bigint_encoder__WEBPACK_IMPORTED_MODULE_1__.sliceBigInt)(this._value, this.size, sliceSize); + } + toString() { + return this._value.toString(); + } + toJSON() { + return { + _value: this._value.toString() + }; + } + toBigInt() { + return BigInt(this._value); + } + /** + * @inheritDoc + */ + static read(reader) { + const { + size + } = this.prototype; + if (size === 64) return new this(reader.readBigUInt64BE()); + return new this(...Array.from({ + length: size / 64 + }, () => reader.readBigUInt64BE()).reverse()); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (value instanceof this) { + value = value._value; + } else if (typeof value !== "bigint" || value > this.MAX_VALUE || value < this.MIN_VALUE) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`${value} is not a ${this.name}`); + const { + unsigned, + size + } = this.prototype; + if (size === 64) { + if (unsigned) { + writer.writeBigUInt64BE(value); + } else { + writer.writeBigInt64BE(value); + } + } else { + for (const part of (0, _bigint_encoder__WEBPACK_IMPORTED_MODULE_1__.sliceBigInt)(value, size, 64).reverse()) { + if (unsigned) { + writer.writeBigUInt64BE(part); + } else { + writer.writeBigInt64BE(part); + } + } + } + } + /** + * @inheritDoc + */ + static isValid(value) { + return typeof value === "bigint" || value instanceof this; + } + /** + * Create instance from string + * @param {String} string - Numeric representation + * @return {LargeInt} + */ + static fromString(string) { + return new this(string); + } + static MAX_VALUE = 0n; + static MIN_VALUE = 0n; + /** + * @internal + * @return {void} + */ + static defineIntBoundaries() { + const [min, max] = (0, _bigint_encoder__WEBPACK_IMPORTED_MODULE_1__.calculateBigIntBoundaries)(this.prototype.size, this.prototype.unsigned); + this.MIN_VALUE = min; + this.MAX_VALUE = max; + } + } + } + ), + /***/ + "./src/opaque.js": ( + /*!***********************!*\ + !*** ./src/opaque.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Opaque: () => ( + /* binding */ + Opaque + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Opaque extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrCompositeType { + constructor(length) { + super(); + this._length = length; + } + /** + * @inheritDoc + */ + read(reader) { + return reader.read(this._length); + } + /** + * @inheritDoc + */ + write(value, writer) { + const { + length + } = value; + if (length !== this._length) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError(`got ${value.length} bytes, expected ${this._length}`); + writer.write(value, length); + } + /** + * @inheritDoc + */ + isValid(value) { + return Buffer.isBuffer(value) && value.length === this._length; + } + } + } + ), + /***/ + "./src/option.js": ( + /*!***********************!*\ + !*** ./src/option.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Option: () => ( + /* binding */ + Option + ) + /* harmony export */ + }); + var _bool__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./bool */ + "./src/bool.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + class Option extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrPrimitiveType { + constructor(childType) { + super(); + this._childType = childType; + } + /** + * @inheritDoc + */ + read(reader) { + if (_bool__WEBPACK_IMPORTED_MODULE_0__.Bool.read(reader)) { + return this._childType.read(reader); + } + return void 0; + } + /** + * @inheritDoc + */ + write(value, writer) { + const isPresent = value !== null && value !== void 0; + _bool__WEBPACK_IMPORTED_MODULE_0__.Bool.write(isPresent, writer); + if (isPresent) { + this._childType.write(value, writer); + } + } + /** + * @inheritDoc + */ + isValid(value) { + if (value === null || value === void 0) { + return true; + } + return this._childType.isValid(value); + } + } + } + ), + /***/ + "./src/quadruple.js": ( + /*!**************************!*\ + !*** ./src/quadruple.js ***! + \**************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Quadruple: () => ( + /* binding */ + Quadruple + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Quadruple extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + static read() { + throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrDefinitionError("quadruple not supported"); + } + static write() { + throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrDefinitionError("quadruple not supported"); + } + static isValid() { + return false; + } + } + } + ), + /***/ + "./src/reference.js": ( + /*!**************************!*\ + !*** ./src/reference.js ***! + \**************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Reference: () => ( + /* binding */ + Reference + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Reference extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /* jshint unused: false */ + resolve() { + throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrDefinitionError('"resolve" method should be implemented in the descendant class'); + } + } + } + ), + /***/ + "./src/serialization/xdr-reader.js": ( + /*!*****************************************!*\ + !*** ./src/serialization/xdr-reader.js ***! + \*****************************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + XdrReader: () => ( + /* binding */ + XdrReader + ) + /* harmony export */ + }); + var _errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ../errors */ + "./src/errors.js" + ); + class XdrReader { + /** + * @constructor + * @param {Buffer} source - Buffer containing serialized data + */ + constructor(source) { + if (!Buffer.isBuffer(source)) { + if (source instanceof Array || Array.isArray(source) || ArrayBuffer.isView(source)) { + source = Buffer.from(source); + } else { + throw new _errors__WEBPACK_IMPORTED_MODULE_0__.XdrReaderError(`source invalid: ${source}`); + } + } + this._buffer = source; + this._length = source.length; + this._index = 0; + } + /** + * @type {Buffer} + * @private + * @readonly + */ + _buffer; + /** + * @type {Number} + * @private + * @readonly + */ + _length; + /** + * @type {Number} + * @private + * @readonly + */ + _index; + /** + * Check if the reader reached the end of the input buffer + * @return {Boolean} + */ + get eof() { + return this._index === this._length; + } + /** + * Advance reader position, check padding and overflow + * @param {Number} size - Bytes to read + * @return {Number} Position to read from + * @private + */ + advance(size) { + const from = this._index; + this._index += size; + if (this._length < this._index) throw new _errors__WEBPACK_IMPORTED_MODULE_0__.XdrReaderError("attempt to read outside the boundary of the buffer"); + const padding = 4 - (size % 4 || 4); + if (padding > 0) { + for (let i = 0; i < padding; i++) if (this._buffer[this._index + i] !== 0) + throw new _errors__WEBPACK_IMPORTED_MODULE_0__.XdrReaderError("invalid padding"); + this._index += padding; + } + return from; + } + /** + * Reset reader position + * @return {void} + */ + rewind() { + this._index = 0; + } + /** + * Read byte array from the buffer + * @param {Number} size - Bytes to read + * @return {Buffer} - Sliced portion of the underlying buffer + */ + read(size) { + const from = this.advance(size); + return this._buffer.subarray(from, from + size); + } + /** + * Read i32 from buffer + * @return {Number} + */ + readInt32BE() { + return this._buffer.readInt32BE(this.advance(4)); + } + /** + * Read u32 from buffer + * @return {Number} + */ + readUInt32BE() { + return this._buffer.readUInt32BE(this.advance(4)); + } + /** + * Read i64 from buffer + * @return {BigInt} + */ + readBigInt64BE() { + return this._buffer.readBigInt64BE(this.advance(8)); + } + /** + * Read u64 from buffer + * @return {BigInt} + */ + readBigUInt64BE() { + return this._buffer.readBigUInt64BE(this.advance(8)); + } + /** + * Read float from buffer + * @return {Number} + */ + readFloatBE() { + return this._buffer.readFloatBE(this.advance(4)); + } + /** + * Read double from buffer + * @return {Number} + */ + readDoubleBE() { + return this._buffer.readDoubleBE(this.advance(8)); + } + /** + * Ensure that input buffer has been consumed in full, otherwise it's a type mismatch + * @return {void} + * @throws {XdrReaderError} + */ + ensureInputConsumed() { + if (this._index !== this._length) throw new _errors__WEBPACK_IMPORTED_MODULE_0__.XdrReaderError(`invalid XDR contract typecast - source buffer not entirely consumed`); + } + } + } + ), + /***/ + "./src/serialization/xdr-writer.js": ( + /*!*****************************************!*\ + !*** ./src/serialization/xdr-writer.js ***! + \*****************************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + XdrWriter: () => ( + /* binding */ + XdrWriter + ) + /* harmony export */ + }); + const BUFFER_CHUNK = 8192; + class XdrWriter { + /** + * @param {Buffer|Number} [buffer] - Optional destination buffer + */ + constructor(buffer) { + if (typeof buffer === "number") { + buffer = Buffer.allocUnsafe(buffer); + } else if (!(buffer instanceof Buffer)) { + buffer = Buffer.allocUnsafe(BUFFER_CHUNK); + } + this._buffer = buffer; + this._length = buffer.length; + } + /** + * @type {Buffer} + * @private + * @readonly + */ + _buffer; + /** + * @type {Number} + * @private + * @readonly + */ + _length; + /** + * @type {Number} + * @private + * @readonly + */ + _index = 0; + /** + * Advance writer position, write padding if needed, auto-resize the buffer + * @param {Number} size - Bytes to write + * @return {Number} Position to read from + * @private + */ + alloc(size) { + const from = this._index; + this._index += size; + if (this._length < this._index) { + this.resize(this._index); + } + return from; + } + /** + * Increase size of the underlying buffer + * @param {Number} minRequiredSize - Minimum required buffer size + * @return {void} + * @private + */ + resize(minRequiredSize) { + const newLength = Math.ceil(minRequiredSize / BUFFER_CHUNK) * BUFFER_CHUNK; + const newBuffer = Buffer.allocUnsafe(newLength); + this._buffer.copy(newBuffer, 0, 0, this._length); + this._buffer = newBuffer; + this._length = newLength; + } + /** + * Return XDR-serialized value + * @return {Buffer} + */ + finalize() { + return this._buffer.subarray(0, this._index); + } + /** + * Return XDR-serialized value as byte array + * @return {Number[]} + */ + toArray() { + return [...this.finalize()]; + } + /** + * Write byte array from the buffer + * @param {Buffer|String} value - Bytes/string to write + * @param {Number} size - Size in bytes + * @return {XdrReader} - XdrReader wrapper on top of a subarray + */ + write(value, size) { + if (typeof value === "string") { + const offset = this.alloc(size); + this._buffer.write(value, offset, "utf8"); + } else { + if (!(value instanceof Buffer)) { + value = Buffer.from(value); + } + const offset = this.alloc(size); + value.copy(this._buffer, offset, 0, size); + } + const padding = 4 - (size % 4 || 4); + if (padding > 0) { + const offset = this.alloc(padding); + this._buffer.fill(0, offset, this._index); + } + } + /** + * Write i32 from buffer + * @param {Number} value - Value to serialize + * @return {void} + */ + writeInt32BE(value) { + const offset = this.alloc(4); + this._buffer.writeInt32BE(value, offset); + } + /** + * Write u32 from buffer + * @param {Number} value - Value to serialize + * @return {void} + */ + writeUInt32BE(value) { + const offset = this.alloc(4); + this._buffer.writeUInt32BE(value, offset); + } + /** + * Write i64 from buffer + * @param {BigInt} value - Value to serialize + * @return {void} + */ + writeBigInt64BE(value) { + const offset = this.alloc(8); + this._buffer.writeBigInt64BE(value, offset); + } + /** + * Write u64 from buffer + * @param {BigInt} value - Value to serialize + * @return {void} + */ + writeBigUInt64BE(value) { + const offset = this.alloc(8); + this._buffer.writeBigUInt64BE(value, offset); + } + /** + * Write float from buffer + * @param {Number} value - Value to serialize + * @return {void} + */ + writeFloatBE(value) { + const offset = this.alloc(4); + this._buffer.writeFloatBE(value, offset); + } + /** + * Write double from buffer + * @param {Number} value - Value to serialize + * @return {void} + */ + writeDoubleBE(value) { + const offset = this.alloc(8); + this._buffer.writeDoubleBE(value, offset); + } + static bufferChunkSize = BUFFER_CHUNK; + } + } + ), + /***/ + "./src/string.js": ( + /*!***********************!*\ + !*** ./src/string.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + String: () => ( + /* binding */ + String2 + ) + /* harmony export */ + }); + var _unsigned_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./unsigned-int */ + "./src/unsigned-int.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class String2 extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrCompositeType { + constructor(maxLength = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.MAX_VALUE) { + super(); + this._maxLength = maxLength; + } + /** + * @inheritDoc + */ + read(reader) { + const size = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.read(reader); + if (size > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrReaderError(`saw ${size} length String, max allowed is ${this._maxLength}`); + return reader.read(size); + } + readString(reader) { + return this.read(reader).toString("utf8"); + } + /** + * @inheritDoc + */ + write(value, writer) { + const size = typeof value === "string" ? Buffer.byteLength(value, "utf8") : value.length; + if (size > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`got ${value.length} bytes, max allowed is ${this._maxLength}`); + _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.write(size, writer); + writer.write(value, size); + } + /** + * @inheritDoc + */ + isValid(value) { + if (typeof value === "string") { + return Buffer.byteLength(value, "utf8") <= this._maxLength; + } + if (value instanceof Array || Buffer.isBuffer(value)) { + return value.length <= this._maxLength; + } + return false; + } + } + } + ), + /***/ + "./src/struct.js": ( + /*!***********************!*\ + !*** ./src/struct.js ***! + \***********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Struct: () => ( + /* binding */ + Struct + ) + /* harmony export */ + }); + var _reference__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./reference */ + "./src/reference.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Struct extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrCompositeType { + constructor(attributes) { + super(); + this._attributes = attributes || {}; + } + /** + * @inheritDoc + */ + static read(reader) { + const attributes = {}; + for (const [fieldName, type] of this._fields) { + attributes[fieldName] = type.read(reader); + } + return new this(attributes); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (!this.isValid(value)) { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`${value} has struct name ${value?.constructor?.structName}, not ${this.structName}: ${JSON.stringify(value)}`); + } + for (const [fieldName, type] of this._fields) { + const attribute = value._attributes[fieldName]; + type.write(attribute, writer); + } + } + /** + * @inheritDoc + */ + static isValid(value) { + return value?.constructor?.structName === this.structName || (0, _xdr_type__WEBPACK_IMPORTED_MODULE_1__.isSerializableIsh)(value, this); + } + static create(context, name, fields) { + const ChildStruct = class extends Struct { + }; + ChildStruct.structName = name; + context.results[name] = ChildStruct; + const mappedFields = new Array(fields.length); + for (let i = 0; i < fields.length; i++) { + const fieldDescriptor = fields[i]; + const fieldName = fieldDescriptor[0]; + let field = fieldDescriptor[1]; + if (field instanceof _reference__WEBPACK_IMPORTED_MODULE_0__.Reference) { + field = field.resolve(context); + } + mappedFields[i] = [fieldName, field]; + ChildStruct.prototype[fieldName] = createAccessorMethod(fieldName); + } + ChildStruct._fields = mappedFields; + return ChildStruct; + } + } + function createAccessorMethod(name) { + return function readOrWriteAttribute(value) { + if (value !== void 0) { + this._attributes[name] = value; + } + return this._attributes[name]; + }; + } + } + ), + /***/ + "./src/types.js": ( + /*!**********************!*\ + !*** ./src/types.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Array: () => ( + /* reexport safe */ + _array__WEBPACK_IMPORTED_MODULE_12__.Array + ), + /* harmony export */ + Bool: () => ( + /* reexport safe */ + _bool__WEBPACK_IMPORTED_MODULE_8__.Bool + ), + /* harmony export */ + Double: () => ( + /* reexport safe */ + _double__WEBPACK_IMPORTED_MODULE_6__.Double + ), + /* harmony export */ + Enum: () => ( + /* reexport safe */ + _enum__WEBPACK_IMPORTED_MODULE_16__.Enum + ), + /* harmony export */ + Float: () => ( + /* reexport safe */ + _float__WEBPACK_IMPORTED_MODULE_5__.Float + ), + /* harmony export */ + Hyper: () => ( + /* reexport safe */ + _hyper__WEBPACK_IMPORTED_MODULE_1__.Hyper + ), + /* harmony export */ + Int: () => ( + /* reexport safe */ + _int__WEBPACK_IMPORTED_MODULE_0__.Int + ), + /* harmony export */ + LargeInt: () => ( + /* reexport safe */ + _large_int__WEBPACK_IMPORTED_MODULE_4__.LargeInt + ), + /* harmony export */ + Opaque: () => ( + /* reexport safe */ + _opaque__WEBPACK_IMPORTED_MODULE_10__.Opaque + ), + /* harmony export */ + Option: () => ( + /* reexport safe */ + _option__WEBPACK_IMPORTED_MODULE_14__.Option + ), + /* harmony export */ + Quadruple: () => ( + /* reexport safe */ + _quadruple__WEBPACK_IMPORTED_MODULE_7__.Quadruple + ), + /* harmony export */ + String: () => ( + /* reexport safe */ + _string__WEBPACK_IMPORTED_MODULE_9__.String + ), + /* harmony export */ + Struct: () => ( + /* reexport safe */ + _struct__WEBPACK_IMPORTED_MODULE_17__.Struct + ), + /* harmony export */ + Union: () => ( + /* reexport safe */ + _union__WEBPACK_IMPORTED_MODULE_18__.Union + ), + /* harmony export */ + UnsignedHyper: () => ( + /* reexport safe */ + _unsigned_hyper__WEBPACK_IMPORTED_MODULE_3__.UnsignedHyper + ), + /* harmony export */ + UnsignedInt: () => ( + /* reexport safe */ + _unsigned_int__WEBPACK_IMPORTED_MODULE_2__.UnsignedInt + ), + /* harmony export */ + VarArray: () => ( + /* reexport safe */ + _var_array__WEBPACK_IMPORTED_MODULE_13__.VarArray + ), + /* harmony export */ + VarOpaque: () => ( + /* reexport safe */ + _var_opaque__WEBPACK_IMPORTED_MODULE_11__.VarOpaque + ), + /* harmony export */ + Void: () => ( + /* reexport safe */ + _void__WEBPACK_IMPORTED_MODULE_15__.Void + ) + /* harmony export */ + }); + var _int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./int */ + "./src/int.js" + ); + var _hyper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./hyper */ + "./src/hyper.js" + ); + var _unsigned_int__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./unsigned-int */ + "./src/unsigned-int.js" + ); + var _unsigned_hyper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3( + /*! ./unsigned-hyper */ + "./src/unsigned-hyper.js" + ); + var _large_int__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__3( + /*! ./large-int */ + "./src/large-int.js" + ); + var _float__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__3( + /*! ./float */ + "./src/float.js" + ); + var _double__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__3( + /*! ./double */ + "./src/double.js" + ); + var _quadruple__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__3( + /*! ./quadruple */ + "./src/quadruple.js" + ); + var _bool__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__3( + /*! ./bool */ + "./src/bool.js" + ); + var _string__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__3( + /*! ./string */ + "./src/string.js" + ); + var _opaque__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__3( + /*! ./opaque */ + "./src/opaque.js" + ); + var _var_opaque__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__3( + /*! ./var-opaque */ + "./src/var-opaque.js" + ); + var _array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__3( + /*! ./array */ + "./src/array.js" + ); + var _var_array__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__3( + /*! ./var-array */ + "./src/var-array.js" + ); + var _option__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__3( + /*! ./option */ + "./src/option.js" + ); + var _void__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__3( + /*! ./void */ + "./src/void.js" + ); + var _enum__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__3( + /*! ./enum */ + "./src/enum.js" + ); + var _struct__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__3( + /*! ./struct */ + "./src/struct.js" + ); + var _union__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__3( + /*! ./union */ + "./src/union.js" + ); + } + ), + /***/ + "./src/union.js": ( + /*!**********************!*\ + !*** ./src/union.js ***! + \**********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Union: () => ( + /* binding */ + Union + ) + /* harmony export */ + }); + var _void__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./void */ + "./src/void.js" + ); + var _reference__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./reference */ + "./src/reference.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Union extends _xdr_type__WEBPACK_IMPORTED_MODULE_2__.XdrCompositeType { + constructor(aSwitch, value) { + super(); + this.set(aSwitch, value); + } + set(aSwitch, value) { + if (typeof aSwitch === "string") { + aSwitch = this.constructor._switchOn.fromName(aSwitch); + } + this._switch = aSwitch; + const arm = this.constructor.armForSwitch(this._switch); + this._arm = arm; + this._armType = arm === _void__WEBPACK_IMPORTED_MODULE_0__.Void ? _void__WEBPACK_IMPORTED_MODULE_0__.Void : this.constructor._arms[arm]; + this._value = value; + } + get(armName = this._arm) { + if (this._arm !== _void__WEBPACK_IMPORTED_MODULE_0__.Void && this._arm !== armName) throw new TypeError(`${armName} not set`); + return this._value; + } + switch() { + return this._switch; + } + arm() { + return this._arm; + } + armType() { + return this._armType; + } + value() { + return this._value; + } + static armForSwitch(aSwitch) { + const member = this._switches.get(aSwitch); + if (member !== void 0) { + return member; + } + if (this._defaultArm) { + return this._defaultArm; + } + throw new TypeError(`Bad union switch: ${aSwitch}`); + } + static armTypeForArm(arm) { + if (arm === _void__WEBPACK_IMPORTED_MODULE_0__.Void) { + return _void__WEBPACK_IMPORTED_MODULE_0__.Void; + } + return this._arms[arm]; + } + /** + * @inheritDoc + */ + static read(reader) { + const aSwitch = this._switchOn.read(reader); + const arm = this.armForSwitch(aSwitch); + const armType = arm === _void__WEBPACK_IMPORTED_MODULE_0__.Void ? _void__WEBPACK_IMPORTED_MODULE_0__.Void : this._arms[arm]; + let value; + if (armType !== void 0) { + value = armType.read(reader); + } else { + value = arm.read(reader); + } + return new this(aSwitch, value); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (!this.isValid(value)) { + throw new _errors__WEBPACK_IMPORTED_MODULE_3__.XdrWriterError(`${value} has union name ${value?.unionName}, not ${this.unionName}: ${JSON.stringify(value)}`); + } + this._switchOn.write(value.switch(), writer); + value.armType().write(value.value(), writer); + } + /** + * @inheritDoc + */ + static isValid(value) { + return value?.constructor?.unionName === this.unionName || (0, _xdr_type__WEBPACK_IMPORTED_MODULE_2__.isSerializableIsh)(value, this); + } + static create(context, name, config2) { + const ChildUnion = class extends Union { + }; + ChildUnion.unionName = name; + context.results[name] = ChildUnion; + if (config2.switchOn instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + ChildUnion._switchOn = config2.switchOn.resolve(context); + } else { + ChildUnion._switchOn = config2.switchOn; + } + ChildUnion._switches = /* @__PURE__ */ new Map(); + ChildUnion._arms = {}; + let defaultArm = config2.defaultArm; + if (defaultArm instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference) { + defaultArm = defaultArm.resolve(context); + } + ChildUnion._defaultArm = defaultArm; + for (const [aSwitch, armName] of config2.switches) { + const key = typeof aSwitch === "string" ? ChildUnion._switchOn.fromName(aSwitch) : aSwitch; + ChildUnion._switches.set(key, armName); + } + if (ChildUnion._switchOn.values !== void 0) { + for (const aSwitch of ChildUnion._switchOn.values()) { + ChildUnion[aSwitch.name] = function ctr(value) { + return new ChildUnion(aSwitch, value); + }; + ChildUnion.prototype[aSwitch.name] = function set(value) { + return this.set(aSwitch, value); + }; + } + } + if (config2.arms) { + for (const [armsName, value] of Object.entries(config2.arms)) { + ChildUnion._arms[armsName] = value instanceof _reference__WEBPACK_IMPORTED_MODULE_1__.Reference ? value.resolve(context) : value; + if (value !== _void__WEBPACK_IMPORTED_MODULE_0__.Void) { + ChildUnion.prototype[armsName] = function get() { + return this.get(armsName); + }; + } + } + } + return ChildUnion; + } + } + } + ), + /***/ + "./src/unsigned-hyper.js": ( + /*!*******************************!*\ + !*** ./src/unsigned-hyper.js ***! + \*******************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + UnsignedHyper: () => ( + /* binding */ + UnsignedHyper + ) + /* harmony export */ + }); + var _large_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./large-int */ + "./src/large-int.js" + ); + class UnsignedHyper extends _large_int__WEBPACK_IMPORTED_MODULE_0__.LargeInt { + /** + * @param {Array} parts - Slices to encode + */ + constructor(...args) { + super(args); + } + get low() { + return Number(this._value & 0xffffffffn) << 0; + } + get high() { + return Number(this._value >> 32n) >> 0; + } + get size() { + return 64; + } + get unsigned() { + return true; + } + /** + * Create UnsignedHyper instance from two [high][low] i32 values + * @param {Number} low - Low part of u64 number + * @param {Number} high - High part of u64 number + * @return {UnsignedHyper} + */ + static fromBits(low, high) { + return new this(low, high); + } + } + UnsignedHyper.defineIntBoundaries(); + } + ), + /***/ + "./src/unsigned-int.js": ( + /*!*****************************!*\ + !*** ./src/unsigned-int.js ***! + \*****************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + UnsignedInt: () => ( + /* binding */ + UnsignedInt + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + const MAX_VALUE = 4294967295; + const MIN_VALUE = 0; + class UnsignedInt extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /** + * @inheritDoc + */ + static read(reader) { + return reader.readUInt32BE(); + } + /** + * @inheritDoc + */ + static write(value, writer) { + if (typeof value !== "number" || !(value >= MIN_VALUE && value <= MAX_VALUE) || value % 1 !== 0) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("invalid u32 value"); + writer.writeUInt32BE(value); + } + /** + * @inheritDoc + */ + static isValid(value) { + if (typeof value !== "number" || value % 1 !== 0) { + return false; + } + return value >= MIN_VALUE && value <= MAX_VALUE; + } + } + UnsignedInt.MAX_VALUE = MAX_VALUE; + UnsignedInt.MIN_VALUE = MIN_VALUE; + } + ), + /***/ + "./src/var-array.js": ( + /*!**************************!*\ + !*** ./src/var-array.js ***! + \**************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + VarArray: () => ( + /* binding */ + VarArray + ) + /* harmony export */ + }); + var _unsigned_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./unsigned-int */ + "./src/unsigned-int.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class VarArray extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrCompositeType { + constructor(childType, maxLength = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.MAX_VALUE) { + super(); + this._childType = childType; + this._maxLength = maxLength; + } + /** + * @inheritDoc + */ + read(reader) { + const length = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.read(reader); + if (length > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrReaderError(`saw ${length} length VarArray, max allowed is ${this._maxLength}`); + const result = new Array(length); + for (let i = 0; i < length; i++) { + result[i] = this._childType.read(reader); + } + return result; + } + /** + * @inheritDoc + */ + write(value, writer) { + if (!(value instanceof Array)) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`value is not array`); + if (value.length > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`got array of size ${value.length}, max allowed is ${this._maxLength}`); + _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.write(value.length, writer); + for (const child of value) { + this._childType.write(child, writer); + } + } + /** + * @inheritDoc + */ + isValid(value) { + if (!(value instanceof Array) || value.length > this._maxLength) { + return false; + } + for (const child of value) { + if (!this._childType.isValid(child)) return false; + } + return true; + } + } + } + ), + /***/ + "./src/var-opaque.js": ( + /*!***************************!*\ + !*** ./src/var-opaque.js ***! + \***************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + VarOpaque: () => ( + /* binding */ + VarOpaque + ) + /* harmony export */ + }); + var _unsigned_int__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./unsigned-int */ + "./src/unsigned-int.js" + ); + var _xdr_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class VarOpaque extends _xdr_type__WEBPACK_IMPORTED_MODULE_1__.XdrCompositeType { + constructor(maxLength = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.MAX_VALUE) { + super(); + this._maxLength = maxLength; + } + /** + * @inheritDoc + */ + read(reader) { + const size = _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.read(reader); + if (size > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrReaderError(`saw ${size} length VarOpaque, max allowed is ${this._maxLength}`); + return reader.read(size); + } + /** + * @inheritDoc + */ + write(value, writer) { + const { + length + } = value; + if (value.length > this._maxLength) throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrWriterError(`got ${value.length} bytes, max allowed is ${this._maxLength}`); + _unsigned_int__WEBPACK_IMPORTED_MODULE_0__.UnsignedInt.write(length, writer); + writer.write(value, length); + } + /** + * @inheritDoc + */ + isValid(value) { + return Buffer.isBuffer(value) && value.length <= this._maxLength; + } + } + } + ), + /***/ + "./src/void.js": ( + /*!*********************!*\ + !*** ./src/void.js ***! + \*********************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + Void: () => ( + /* binding */ + Void + ) + /* harmony export */ + }); + var _xdr_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./xdr-type */ + "./src/xdr-type.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class Void extends _xdr_type__WEBPACK_IMPORTED_MODULE_0__.XdrPrimitiveType { + /* jshint unused: false */ + static read() { + return void 0; + } + static write(value) { + if (value !== void 0) throw new _errors__WEBPACK_IMPORTED_MODULE_1__.XdrWriterError("trying to write value to a void slot"); + } + static isValid(value) { + return value === void 0; + } + } + } + ), + /***/ + "./src/xdr-type.js": ( + /*!*************************!*\ + !*** ./src/xdr-type.js ***! + \*************************/ + /***/ + (__unused_webpack_module, __webpack_exports__2, __webpack_require__3) => { + "use strict"; + __webpack_require__3.r(__webpack_exports__2); + __webpack_require__3.d(__webpack_exports__2, { + /* harmony export */ + XdrCompositeType: () => ( + /* binding */ + XdrCompositeType + ), + /* harmony export */ + XdrPrimitiveType: () => ( + /* binding */ + XdrPrimitiveType + ), + /* harmony export */ + hasConstructor: () => ( + /* binding */ + hasConstructor + ), + /* harmony export */ + isSerializableIsh: () => ( + /* binding */ + isSerializableIsh + ) + /* harmony export */ + }); + var _serialization_xdr_reader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__3( + /*! ./serialization/xdr-reader */ + "./src/serialization/xdr-reader.js" + ); + var _serialization_xdr_writer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__3( + /*! ./serialization/xdr-writer */ + "./src/serialization/xdr-writer.js" + ); + var _errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__3( + /*! ./errors */ + "./src/errors.js" + ); + class XdrType { + /** + * Encode value to XDR format + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {String|Buffer} + */ + toXDR(format = "raw") { + if (!this.write) return this.constructor.toXDR(this, format); + const writer = new _serialization_xdr_writer__WEBPACK_IMPORTED_MODULE_1__.XdrWriter(); + this.write(this, writer); + return encodeResult(writer.finalize(), format); + } + /** + * Decode XDR-encoded value + * @param {Buffer|String} input - XDR-encoded input data + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {this} + */ + fromXDR(input, format = "raw") { + if (!this.read) return this.constructor.fromXDR(input, format); + const reader = new _serialization_xdr_reader__WEBPACK_IMPORTED_MODULE_0__.XdrReader(decodeInput(input, format)); + const result = this.read(reader); + reader.ensureInputConsumed(); + return result; + } + /** + * Check whether input contains a valid XDR-encoded value + * @param {Buffer|String} input - XDR-encoded input data + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {Boolean} + */ + validateXDR(input, format = "raw") { + try { + this.fromXDR(input, format); + return true; + } catch (e) { + return false; + } + } + /** + * Encode value to XDR format + * @param {this} value - Value to serialize + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {Buffer} + */ + static toXDR(value, format = "raw") { + const writer = new _serialization_xdr_writer__WEBPACK_IMPORTED_MODULE_1__.XdrWriter(); + this.write(value, writer); + return encodeResult(writer.finalize(), format); + } + /** + * Decode XDR-encoded value + * @param {Buffer|String} input - XDR-encoded input data + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {this} + */ + static fromXDR(input, format = "raw") { + const reader = new _serialization_xdr_reader__WEBPACK_IMPORTED_MODULE_0__.XdrReader(decodeInput(input, format)); + const result = this.read(reader); + reader.ensureInputConsumed(); + return result; + } + /** + * Check whether input contains a valid XDR-encoded value + * @param {Buffer|String} input - XDR-encoded input data + * @param {XdrEncodingFormat} [format] - Encoding format (one of "raw", "hex", "base64") + * @return {Boolean} + */ + static validateXDR(input, format = "raw") { + try { + this.fromXDR(input, format); + return true; + } catch (e) { + return false; + } + } + } + class XdrPrimitiveType extends XdrType { + /** + * Read value from the XDR-serialized input + * @param {XdrReader} reader - XdrReader instance + * @return {this} + * @abstract + */ + // eslint-disable-next-line no-unused-vars + static read(reader) { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrNotImplementedDefinitionError(); + } + /** + * Write XDR value to the buffer + * @param {this} value - Value to write + * @param {XdrWriter} writer - XdrWriter instance + * @return {void} + * @abstract + */ + // eslint-disable-next-line no-unused-vars + static write(value, writer) { + throw new _errors__WEBPACK_IMPORTED_MODULE_2__.XdrNotImplementedDefinitionError(); + } + /** + * Check whether XDR primitive value is valid + * @param {this} value - Value to check + * @return {Boolean} + * @abstract + */ + // eslint-disable-next-line no-unused-vars + static isValid(value) { + return false; + } + } + class XdrCompositeType extends XdrType { + // Every descendant should implement two methods: read(reader) and write(value, writer) + /** + * Check whether XDR primitive value is valid + * @param {this} value - Value to check + * @return {Boolean} + * @abstract + */ + // eslint-disable-next-line no-unused-vars + isValid(value) { + return false; + } + } + class InvalidXdrEncodingFormatError extends TypeError { + constructor(format) { + super(`Invalid format ${format}, must be one of "raw", "hex", "base64"`); + } + } + function encodeResult(buffer, format) { + switch (format) { + case "raw": + return buffer; + case "hex": + return buffer.toString("hex"); + case "base64": + return buffer.toString("base64"); + default: + throw new InvalidXdrEncodingFormatError(format); + } + } + function decodeInput(input, format) { + switch (format) { + case "raw": + return input; + case "hex": + return Buffer.from(input, "hex"); + case "base64": + return Buffer.from(input, "base64"); + default: + throw new InvalidXdrEncodingFormatError(format); + } + } + function isSerializableIsh(value, subtype) { + return value !== void 0 && value !== null && // prereqs, otherwise `getPrototypeOf` pops + (value instanceof subtype || // quickest check + // Do an initial constructor check (anywhere is fine so that children of + // `subtype` still work), then + hasConstructor(value, subtype) && // ensure it has read/write methods, then + typeof value.constructor.read === "function" && typeof value.constructor.write === "function" && // ensure XdrType is in the prototype chain + hasConstructor(value, "XdrType")); + } + function hasConstructor(instance, subtype) { + do { + const ctor = instance.constructor; + if (ctor.name === subtype) { + return true; + } + } while (instance = Object.getPrototypeOf(instance)); + return false; + } + } + ) + /******/ + }; + var __webpack_module_cache__ = {}; + function __webpack_require__2(moduleId) { + var cachedModule = __webpack_module_cache__[moduleId]; + if (cachedModule !== void 0) { + return cachedModule.exports; + } + var module3 = __webpack_module_cache__[moduleId] = { + /******/ + // no module.id needed + /******/ + // no module.loaded needed + /******/ + exports: {} + /******/ + }; + __webpack_modules__[moduleId](module3, module3.exports, __webpack_require__2); + return module3.exports; + } + (() => { + __webpack_require__2.d = (exports3, definition) => { + for (var key in definition) { + if (__webpack_require__2.o(definition, key) && !__webpack_require__2.o(exports3, key)) { + Object.defineProperty(exports3, key, { enumerable: true, get: definition[key] }); + } + } + }; + })(); + (() => { + __webpack_require__2.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); + })(); + (() => { + __webpack_require__2.r = (exports3) => { + if (typeof Symbol !== "undefined" && Symbol.toStringTag) { + Object.defineProperty(exports3, Symbol.toStringTag, { value: "Module" }); + } + Object.defineProperty(exports3, "__esModule", { value: true }); + }; + })(); + var __webpack_exports__ = __webpack_require__2("./src/browser.js"); + return __webpack_exports__; + })() + ); + }); + } +}); + +// node_modules/@stellar/stellar-base/lib/generated/curr_generated.js +var require_curr_generated = __commonJS({ + "node_modules/@stellar/stellar-base/lib/generated/curr_generated.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2["default"] = void 0; + var XDR = _interopRequireWildcard(require_xdr()); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, "default": e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t in e2) "default" !== _t && {}.hasOwnProperty.call(e2, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e2[_t]); + return f; + })(e, t); + } + var types = XDR.config(function(xdr) { + var SCSYMBOL_LIMIT = 32; + var SC_SPEC_DOC_LIMIT = 1024; + xdr.typedef("Value", xdr.varOpaque()); + xdr.struct("ScpBallot", [["counter", xdr.lookup("Uint32")], ["value", xdr.lookup("Value")]]); + xdr["enum"]("ScpStatementType", { + scpStPrepare: 0, + scpStConfirm: 1, + scpStExternalize: 2, + scpStNominate: 3 + }); + xdr.struct("ScpNomination", [["quorumSetHash", xdr.lookup("Hash")], ["votes", xdr.varArray(xdr.lookup("Value"), 2147483647)], ["accepted", xdr.varArray(xdr.lookup("Value"), 2147483647)]]); + xdr.struct("ScpStatementPrepare", [["quorumSetHash", xdr.lookup("Hash")], ["ballot", xdr.lookup("ScpBallot")], ["prepared", xdr.option(xdr.lookup("ScpBallot"))], ["preparedPrime", xdr.option(xdr.lookup("ScpBallot"))], ["nC", xdr.lookup("Uint32")], ["nH", xdr.lookup("Uint32")]]); + xdr.struct("ScpStatementConfirm", [["ballot", xdr.lookup("ScpBallot")], ["nPrepared", xdr.lookup("Uint32")], ["nCommit", xdr.lookup("Uint32")], ["nH", xdr.lookup("Uint32")], ["quorumSetHash", xdr.lookup("Hash")]]); + xdr.struct("ScpStatementExternalize", [["commit", xdr.lookup("ScpBallot")], ["nH", xdr.lookup("Uint32")], ["commitQuorumSetHash", xdr.lookup("Hash")]]); + xdr.union("ScpStatementPledges", { + switchOn: xdr.lookup("ScpStatementType"), + switchName: "type", + switches: [["scpStPrepare", "prepare"], ["scpStConfirm", "confirm"], ["scpStExternalize", "externalize"], ["scpStNominate", "nominate"]], + arms: { + prepare: xdr.lookup("ScpStatementPrepare"), + confirm: xdr.lookup("ScpStatementConfirm"), + externalize: xdr.lookup("ScpStatementExternalize"), + nominate: xdr.lookup("ScpNomination") + } + }); + xdr.struct("ScpStatement", [["nodeId", xdr.lookup("NodeId")], ["slotIndex", xdr.lookup("Uint64")], ["pledges", xdr.lookup("ScpStatementPledges")]]); + xdr.struct("ScpEnvelope", [["statement", xdr.lookup("ScpStatement")], ["signature", xdr.lookup("Signature")]]); + xdr.struct("ScpQuorumSet", [["threshold", xdr.lookup("Uint32")], ["validators", xdr.varArray(xdr.lookup("NodeId"), 2147483647)], ["innerSets", xdr.varArray(xdr.lookup("ScpQuorumSet"), 2147483647)]]); + xdr.typedef("Thresholds", xdr.opaque(4)); + xdr.typedef("String32", xdr.string(32)); + xdr.typedef("String64", xdr.string(64)); + xdr.typedef("SequenceNumber", xdr.lookup("Int64")); + xdr.typedef("DataValue", xdr.varOpaque(64)); + xdr.typedef("AssetCode4", xdr.opaque(4)); + xdr.typedef("AssetCode12", xdr.opaque(12)); + xdr["enum"]("AssetType", { + assetTypeNative: 0, + assetTypeCreditAlphanum4: 1, + assetTypeCreditAlphanum12: 2, + assetTypePoolShare: 3 + }); + xdr.union("AssetCode", { + switchOn: xdr.lookup("AssetType"), + switchName: "type", + switches: [["assetTypeCreditAlphanum4", "assetCode4"], ["assetTypeCreditAlphanum12", "assetCode12"]], + arms: { + assetCode4: xdr.lookup("AssetCode4"), + assetCode12: xdr.lookup("AssetCode12") + } + }); + xdr.struct("AlphaNum4", [["assetCode", xdr.lookup("AssetCode4")], ["issuer", xdr.lookup("AccountId")]]); + xdr.struct("AlphaNum12", [["assetCode", xdr.lookup("AssetCode12")], ["issuer", xdr.lookup("AccountId")]]); + xdr.union("Asset", { + switchOn: xdr.lookup("AssetType"), + switchName: "type", + switches: [["assetTypeNative", xdr["void"]()], ["assetTypeCreditAlphanum4", "alphaNum4"], ["assetTypeCreditAlphanum12", "alphaNum12"]], + arms: { + alphaNum4: xdr.lookup("AlphaNum4"), + alphaNum12: xdr.lookup("AlphaNum12") + } + }); + xdr.struct("Price", [["n", xdr.lookup("Int32")], ["d", xdr.lookup("Int32")]]); + xdr.struct("Liabilities", [["buying", xdr.lookup("Int64")], ["selling", xdr.lookup("Int64")]]); + xdr["enum"]("ThresholdIndices", { + thresholdMasterWeight: 0, + thresholdLow: 1, + thresholdMed: 2, + thresholdHigh: 3 + }); + xdr["enum"]("LedgerEntryType", { + account: 0, + trustline: 1, + offer: 2, + data: 3, + claimableBalance: 4, + liquidityPool: 5, + contractData: 6, + contractCode: 7, + configSetting: 8, + ttl: 9 + }); + xdr.struct("Signer", [["key", xdr.lookup("SignerKey")], ["weight", xdr.lookup("Uint32")]]); + xdr["enum"]("AccountFlags", { + authRequiredFlag: 1, + authRevocableFlag: 2, + authImmutableFlag: 4, + authClawbackEnabledFlag: 8 + }); + xdr["const"]("MASK_ACCOUNT_FLAGS", 7); + xdr["const"]("MASK_ACCOUNT_FLAGS_V17", 15); + xdr["const"]("MAX_SIGNERS", 20); + xdr.typedef("SponsorshipDescriptor", xdr.option(xdr.lookup("AccountId"))); + xdr.struct("AccountEntryExtensionV3", [["ext", xdr.lookup("ExtensionPoint")], ["seqLedger", xdr.lookup("Uint32")], ["seqTime", xdr.lookup("TimePoint")]]); + xdr.union("AccountEntryExtensionV2Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [3, "v3"]], + arms: { + v3: xdr.lookup("AccountEntryExtensionV3") + } + }); + xdr.struct("AccountEntryExtensionV2", [["numSponsored", xdr.lookup("Uint32")], ["numSponsoring", xdr.lookup("Uint32")], ["signerSponsoringIDs", xdr.varArray(xdr.lookup("SponsorshipDescriptor"), xdr.lookup("MAX_SIGNERS"))], ["ext", xdr.lookup("AccountEntryExtensionV2Ext")]]); + xdr.union("AccountEntryExtensionV1Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [2, "v2"]], + arms: { + v2: xdr.lookup("AccountEntryExtensionV2") + } + }); + xdr.struct("AccountEntryExtensionV1", [["liabilities", xdr.lookup("Liabilities")], ["ext", xdr.lookup("AccountEntryExtensionV1Ext")]]); + xdr.union("AccountEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("AccountEntryExtensionV1") + } + }); + xdr.struct("AccountEntry", [["accountId", xdr.lookup("AccountId")], ["balance", xdr.lookup("Int64")], ["seqNum", xdr.lookup("SequenceNumber")], ["numSubEntries", xdr.lookup("Uint32")], ["inflationDest", xdr.option(xdr.lookup("AccountId"))], ["flags", xdr.lookup("Uint32")], ["homeDomain", xdr.lookup("String32")], ["thresholds", xdr.lookup("Thresholds")], ["signers", xdr.varArray(xdr.lookup("Signer"), xdr.lookup("MAX_SIGNERS"))], ["ext", xdr.lookup("AccountEntryExt")]]); + xdr["enum"]("TrustLineFlags", { + authorizedFlag: 1, + authorizedToMaintainLiabilitiesFlag: 2, + trustlineClawbackEnabledFlag: 4 + }); + xdr["const"]("MASK_TRUSTLINE_FLAGS", 1); + xdr["const"]("MASK_TRUSTLINE_FLAGS_V13", 3); + xdr["const"]("MASK_TRUSTLINE_FLAGS_V17", 7); + xdr["enum"]("LiquidityPoolType", { + liquidityPoolConstantProduct: 0 + }); + xdr.union("TrustLineAsset", { + switchOn: xdr.lookup("AssetType"), + switchName: "type", + switches: [["assetTypeNative", xdr["void"]()], ["assetTypeCreditAlphanum4", "alphaNum4"], ["assetTypeCreditAlphanum12", "alphaNum12"], ["assetTypePoolShare", "liquidityPoolId"]], + arms: { + alphaNum4: xdr.lookup("AlphaNum4"), + alphaNum12: xdr.lookup("AlphaNum12"), + liquidityPoolId: xdr.lookup("PoolId") + } + }); + xdr.union("TrustLineEntryExtensionV2Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("TrustLineEntryExtensionV2", [["liquidityPoolUseCount", xdr.lookup("Int32")], ["ext", xdr.lookup("TrustLineEntryExtensionV2Ext")]]); + xdr.union("TrustLineEntryV1Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [2, "v2"]], + arms: { + v2: xdr.lookup("TrustLineEntryExtensionV2") + } + }); + xdr.struct("TrustLineEntryV1", [["liabilities", xdr.lookup("Liabilities")], ["ext", xdr.lookup("TrustLineEntryV1Ext")]]); + xdr.union("TrustLineEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("TrustLineEntryV1") + } + }); + xdr.struct("TrustLineEntry", [["accountId", xdr.lookup("AccountId")], ["asset", xdr.lookup("TrustLineAsset")], ["balance", xdr.lookup("Int64")], ["limit", xdr.lookup("Int64")], ["flags", xdr.lookup("Uint32")], ["ext", xdr.lookup("TrustLineEntryExt")]]); + xdr["enum"]("OfferEntryFlags", { + passiveFlag: 1 + }); + xdr["const"]("MASK_OFFERENTRY_FLAGS", 1); + xdr.union("OfferEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("OfferEntry", [["sellerId", xdr.lookup("AccountId")], ["offerId", xdr.lookup("Int64")], ["selling", xdr.lookup("Asset")], ["buying", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")], ["price", xdr.lookup("Price")], ["flags", xdr.lookup("Uint32")], ["ext", xdr.lookup("OfferEntryExt")]]); + xdr.union("DataEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("DataEntry", [["accountId", xdr.lookup("AccountId")], ["dataName", xdr.lookup("String64")], ["dataValue", xdr.lookup("DataValue")], ["ext", xdr.lookup("DataEntryExt")]]); + xdr["enum"]("ClaimPredicateType", { + claimPredicateUnconditional: 0, + claimPredicateAnd: 1, + claimPredicateOr: 2, + claimPredicateNot: 3, + claimPredicateBeforeAbsoluteTime: 4, + claimPredicateBeforeRelativeTime: 5 + }); + xdr.union("ClaimPredicate", { + switchOn: xdr.lookup("ClaimPredicateType"), + switchName: "type", + switches: [["claimPredicateUnconditional", xdr["void"]()], ["claimPredicateAnd", "andPredicates"], ["claimPredicateOr", "orPredicates"], ["claimPredicateNot", "notPredicate"], ["claimPredicateBeforeAbsoluteTime", "absBefore"], ["claimPredicateBeforeRelativeTime", "relBefore"]], + arms: { + andPredicates: xdr.varArray(xdr.lookup("ClaimPredicate"), 2), + orPredicates: xdr.varArray(xdr.lookup("ClaimPredicate"), 2), + notPredicate: xdr.option(xdr.lookup("ClaimPredicate")), + absBefore: xdr.lookup("Int64"), + relBefore: xdr.lookup("Int64") + } + }); + xdr["enum"]("ClaimantType", { + claimantTypeV0: 0 + }); + xdr.struct("ClaimantV0", [["destination", xdr.lookup("AccountId")], ["predicate", xdr.lookup("ClaimPredicate")]]); + xdr.union("Claimant", { + switchOn: xdr.lookup("ClaimantType"), + switchName: "type", + switches: [["claimantTypeV0", "v0"]], + arms: { + v0: xdr.lookup("ClaimantV0") + } + }); + xdr["enum"]("ClaimableBalanceFlags", { + claimableBalanceClawbackEnabledFlag: 1 + }); + xdr["const"]("MASK_CLAIMABLE_BALANCE_FLAGS", 1); + xdr.union("ClaimableBalanceEntryExtensionV1Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("ClaimableBalanceEntryExtensionV1", [["ext", xdr.lookup("ClaimableBalanceEntryExtensionV1Ext")], ["flags", xdr.lookup("Uint32")]]); + xdr.union("ClaimableBalanceEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("ClaimableBalanceEntryExtensionV1") + } + }); + xdr.struct("ClaimableBalanceEntry", [["balanceId", xdr.lookup("ClaimableBalanceId")], ["claimants", xdr.varArray(xdr.lookup("Claimant"), 10)], ["asset", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")], ["ext", xdr.lookup("ClaimableBalanceEntryExt")]]); + xdr.struct("LiquidityPoolConstantProductParameters", [["assetA", xdr.lookup("Asset")], ["assetB", xdr.lookup("Asset")], ["fee", xdr.lookup("Int32")]]); + xdr.struct("LiquidityPoolEntryConstantProduct", [["params", xdr.lookup("LiquidityPoolConstantProductParameters")], ["reserveA", xdr.lookup("Int64")], ["reserveB", xdr.lookup("Int64")], ["totalPoolShares", xdr.lookup("Int64")], ["poolSharesTrustLineCount", xdr.lookup("Int64")]]); + xdr.union("LiquidityPoolEntryBody", { + switchOn: xdr.lookup("LiquidityPoolType"), + switchName: "type", + switches: [["liquidityPoolConstantProduct", "constantProduct"]], + arms: { + constantProduct: xdr.lookup("LiquidityPoolEntryConstantProduct") + } + }); + xdr.struct("LiquidityPoolEntry", [["liquidityPoolId", xdr.lookup("PoolId")], ["body", xdr.lookup("LiquidityPoolEntryBody")]]); + xdr["enum"]("ContractDataDurability", { + temporary: 0, + persistent: 1 + }); + xdr.struct("ContractDataEntry", [["ext", xdr.lookup("ExtensionPoint")], ["contract", xdr.lookup("ScAddress")], ["key", xdr.lookup("ScVal")], ["durability", xdr.lookup("ContractDataDurability")], ["val", xdr.lookup("ScVal")]]); + xdr.struct("ContractCodeCostInputs", [["ext", xdr.lookup("ExtensionPoint")], ["nInstructions", xdr.lookup("Uint32")], ["nFunctions", xdr.lookup("Uint32")], ["nGlobals", xdr.lookup("Uint32")], ["nTableEntries", xdr.lookup("Uint32")], ["nTypes", xdr.lookup("Uint32")], ["nDataSegments", xdr.lookup("Uint32")], ["nElemSegments", xdr.lookup("Uint32")], ["nImports", xdr.lookup("Uint32")], ["nExports", xdr.lookup("Uint32")], ["nDataSegmentBytes", xdr.lookup("Uint32")]]); + xdr.struct("ContractCodeEntryV1", [["ext", xdr.lookup("ExtensionPoint")], ["costInputs", xdr.lookup("ContractCodeCostInputs")]]); + xdr.union("ContractCodeEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("ContractCodeEntryV1") + } + }); + xdr.struct("ContractCodeEntry", [["ext", xdr.lookup("ContractCodeEntryExt")], ["hash", xdr.lookup("Hash")], ["code", xdr.varOpaque()]]); + xdr.struct("TtlEntry", [["keyHash", xdr.lookup("Hash")], ["liveUntilLedgerSeq", xdr.lookup("Uint32")]]); + xdr.union("LedgerEntryExtensionV1Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("LedgerEntryExtensionV1", [["sponsoringId", xdr.lookup("SponsorshipDescriptor")], ["ext", xdr.lookup("LedgerEntryExtensionV1Ext")]]); + xdr.union("LedgerEntryData", { + switchOn: xdr.lookup("LedgerEntryType"), + switchName: "type", + switches: [["account", "account"], ["trustline", "trustLine"], ["offer", "offer"], ["data", "data"], ["claimableBalance", "claimableBalance"], ["liquidityPool", "liquidityPool"], ["contractData", "contractData"], ["contractCode", "contractCode"], ["configSetting", "configSetting"], ["ttl", "ttl"]], + arms: { + account: xdr.lookup("AccountEntry"), + trustLine: xdr.lookup("TrustLineEntry"), + offer: xdr.lookup("OfferEntry"), + data: xdr.lookup("DataEntry"), + claimableBalance: xdr.lookup("ClaimableBalanceEntry"), + liquidityPool: xdr.lookup("LiquidityPoolEntry"), + contractData: xdr.lookup("ContractDataEntry"), + contractCode: xdr.lookup("ContractCodeEntry"), + configSetting: xdr.lookup("ConfigSettingEntry"), + ttl: xdr.lookup("TtlEntry") + } + }); + xdr.union("LedgerEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("LedgerEntryExtensionV1") + } + }); + xdr.struct("LedgerEntry", [["lastModifiedLedgerSeq", xdr.lookup("Uint32")], ["data", xdr.lookup("LedgerEntryData")], ["ext", xdr.lookup("LedgerEntryExt")]]); + xdr.struct("LedgerKeyAccount", [["accountId", xdr.lookup("AccountId")]]); + xdr.struct("LedgerKeyTrustLine", [["accountId", xdr.lookup("AccountId")], ["asset", xdr.lookup("TrustLineAsset")]]); + xdr.struct("LedgerKeyOffer", [["sellerId", xdr.lookup("AccountId")], ["offerId", xdr.lookup("Int64")]]); + xdr.struct("LedgerKeyData", [["accountId", xdr.lookup("AccountId")], ["dataName", xdr.lookup("String64")]]); + xdr.struct("LedgerKeyClaimableBalance", [["balanceId", xdr.lookup("ClaimableBalanceId")]]); + xdr.struct("LedgerKeyLiquidityPool", [["liquidityPoolId", xdr.lookup("PoolId")]]); + xdr.struct("LedgerKeyContractData", [["contract", xdr.lookup("ScAddress")], ["key", xdr.lookup("ScVal")], ["durability", xdr.lookup("ContractDataDurability")]]); + xdr.struct("LedgerKeyContractCode", [["hash", xdr.lookup("Hash")]]); + xdr.struct("LedgerKeyConfigSetting", [["configSettingId", xdr.lookup("ConfigSettingId")]]); + xdr.struct("LedgerKeyTtl", [["keyHash", xdr.lookup("Hash")]]); + xdr.union("LedgerKey", { + switchOn: xdr.lookup("LedgerEntryType"), + switchName: "type", + switches: [["account", "account"], ["trustline", "trustLine"], ["offer", "offer"], ["data", "data"], ["claimableBalance", "claimableBalance"], ["liquidityPool", "liquidityPool"], ["contractData", "contractData"], ["contractCode", "contractCode"], ["configSetting", "configSetting"], ["ttl", "ttl"]], + arms: { + account: xdr.lookup("LedgerKeyAccount"), + trustLine: xdr.lookup("LedgerKeyTrustLine"), + offer: xdr.lookup("LedgerKeyOffer"), + data: xdr.lookup("LedgerKeyData"), + claimableBalance: xdr.lookup("LedgerKeyClaimableBalance"), + liquidityPool: xdr.lookup("LedgerKeyLiquidityPool"), + contractData: xdr.lookup("LedgerKeyContractData"), + contractCode: xdr.lookup("LedgerKeyContractCode"), + configSetting: xdr.lookup("LedgerKeyConfigSetting"), + ttl: xdr.lookup("LedgerKeyTtl") + } + }); + xdr["enum"]("EnvelopeType", { + envelopeTypeTxV0: 0, + envelopeTypeScp: 1, + envelopeTypeTx: 2, + envelopeTypeAuth: 3, + envelopeTypeScpvalue: 4, + envelopeTypeTxFeeBump: 5, + envelopeTypeOpId: 6, + envelopeTypePoolRevokeOpId: 7, + envelopeTypeContractId: 8, + envelopeTypeSorobanAuthorization: 9 + }); + xdr["enum"]("BucketListType", { + live: 0, + hotArchive: 1 + }); + xdr["enum"]("BucketEntryType", { + metaentry: -1, + liveentry: 0, + deadentry: 1, + initentry: 2 + }); + xdr["enum"]("HotArchiveBucketEntryType", { + hotArchiveMetaentry: -1, + hotArchiveArchived: 0, + hotArchiveLive: 1 + }); + xdr.union("BucketMetadataExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "bucketListType"]], + arms: { + bucketListType: xdr.lookup("BucketListType") + } + }); + xdr.struct("BucketMetadata", [["ledgerVersion", xdr.lookup("Uint32")], ["ext", xdr.lookup("BucketMetadataExt")]]); + xdr.union("BucketEntry", { + switchOn: xdr.lookup("BucketEntryType"), + switchName: "type", + switches: [["liveentry", "liveEntry"], ["initentry", "liveEntry"], ["deadentry", "deadEntry"], ["metaentry", "metaEntry"]], + arms: { + liveEntry: xdr.lookup("LedgerEntry"), + deadEntry: xdr.lookup("LedgerKey"), + metaEntry: xdr.lookup("BucketMetadata") + } + }); + xdr.union("HotArchiveBucketEntry", { + switchOn: xdr.lookup("HotArchiveBucketEntryType"), + switchName: "type", + switches: [["hotArchiveArchived", "archivedEntry"], ["hotArchiveLive", "key"], ["hotArchiveMetaentry", "metaEntry"]], + arms: { + archivedEntry: xdr.lookup("LedgerEntry"), + key: xdr.lookup("LedgerKey"), + metaEntry: xdr.lookup("BucketMetadata") + } + }); + xdr.typedef("UpgradeType", xdr.varOpaque(128)); + xdr["enum"]("StellarValueType", { + stellarValueBasic: 0, + stellarValueSigned: 1 + }); + xdr.struct("LedgerCloseValueSignature", [["nodeId", xdr.lookup("NodeId")], ["signature", xdr.lookup("Signature")]]); + xdr.union("StellarValueExt", { + switchOn: xdr.lookup("StellarValueType"), + switchName: "v", + switches: [["stellarValueBasic", xdr["void"]()], ["stellarValueSigned", "lcValueSignature"]], + arms: { + lcValueSignature: xdr.lookup("LedgerCloseValueSignature") + } + }); + xdr.struct("StellarValue", [["txSetHash", xdr.lookup("Hash")], ["closeTime", xdr.lookup("TimePoint")], ["upgrades", xdr.varArray(xdr.lookup("UpgradeType"), 6)], ["ext", xdr.lookup("StellarValueExt")]]); + xdr["const"]("MASK_LEDGER_HEADER_FLAGS", 7); + xdr["enum"]("LedgerHeaderFlags", { + disableLiquidityPoolTradingFlag: 1, + disableLiquidityPoolDepositFlag: 2, + disableLiquidityPoolWithdrawalFlag: 4 + }); + xdr.union("LedgerHeaderExtensionV1Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("LedgerHeaderExtensionV1", [["flags", xdr.lookup("Uint32")], ["ext", xdr.lookup("LedgerHeaderExtensionV1Ext")]]); + xdr.union("LedgerHeaderExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("LedgerHeaderExtensionV1") + } + }); + xdr.struct("LedgerHeader", [["ledgerVersion", xdr.lookup("Uint32")], ["previousLedgerHash", xdr.lookup("Hash")], ["scpValue", xdr.lookup("StellarValue")], ["txSetResultHash", xdr.lookup("Hash")], ["bucketListHash", xdr.lookup("Hash")], ["ledgerSeq", xdr.lookup("Uint32")], ["totalCoins", xdr.lookup("Int64")], ["feePool", xdr.lookup("Int64")], ["inflationSeq", xdr.lookup("Uint32")], ["idPool", xdr.lookup("Uint64")], ["baseFee", xdr.lookup("Uint32")], ["baseReserve", xdr.lookup("Uint32")], ["maxTxSetSize", xdr.lookup("Uint32")], ["skipList", xdr.array(xdr.lookup("Hash"), 4)], ["ext", xdr.lookup("LedgerHeaderExt")]]); + xdr["enum"]("LedgerUpgradeType", { + ledgerUpgradeVersion: 1, + ledgerUpgradeBaseFee: 2, + ledgerUpgradeMaxTxSetSize: 3, + ledgerUpgradeBaseReserve: 4, + ledgerUpgradeFlags: 5, + ledgerUpgradeConfig: 6, + ledgerUpgradeMaxSorobanTxSetSize: 7 + }); + xdr.struct("ConfigUpgradeSetKey", [["contractId", xdr.lookup("ContractId")], ["contentHash", xdr.lookup("Hash")]]); + xdr.union("LedgerUpgrade", { + switchOn: xdr.lookup("LedgerUpgradeType"), + switchName: "type", + switches: [["ledgerUpgradeVersion", "newLedgerVersion"], ["ledgerUpgradeBaseFee", "newBaseFee"], ["ledgerUpgradeMaxTxSetSize", "newMaxTxSetSize"], ["ledgerUpgradeBaseReserve", "newBaseReserve"], ["ledgerUpgradeFlags", "newFlags"], ["ledgerUpgradeConfig", "newConfig"], ["ledgerUpgradeMaxSorobanTxSetSize", "newMaxSorobanTxSetSize"]], + arms: { + newLedgerVersion: xdr.lookup("Uint32"), + newBaseFee: xdr.lookup("Uint32"), + newMaxTxSetSize: xdr.lookup("Uint32"), + newBaseReserve: xdr.lookup("Uint32"), + newFlags: xdr.lookup("Uint32"), + newConfig: xdr.lookup("ConfigUpgradeSetKey"), + newMaxSorobanTxSetSize: xdr.lookup("Uint32") + } + }); + xdr.struct("ConfigUpgradeSet", [["updatedEntry", xdr.varArray(xdr.lookup("ConfigSettingEntry"), 2147483647)]]); + xdr["enum"]("TxSetComponentType", { + txsetCompTxsMaybeDiscountedFee: 0 + }); + xdr.typedef("DependentTxCluster", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)); + xdr.typedef("ParallelTxExecutionStage", xdr.varArray(xdr.lookup("DependentTxCluster"), 2147483647)); + xdr.struct("ParallelTxsComponent", [["baseFee", xdr.option(xdr.lookup("Int64"))], ["executionStages", xdr.varArray(xdr.lookup("ParallelTxExecutionStage"), 2147483647)]]); + xdr.struct("TxSetComponentTxsMaybeDiscountedFee", [["baseFee", xdr.option(xdr.lookup("Int64"))], ["txes", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)]]); + xdr.union("TxSetComponent", { + switchOn: xdr.lookup("TxSetComponentType"), + switchName: "type", + switches: [["txsetCompTxsMaybeDiscountedFee", "txsMaybeDiscountedFee"]], + arms: { + txsMaybeDiscountedFee: xdr.lookup("TxSetComponentTxsMaybeDiscountedFee") + } + }); + xdr.union("TransactionPhase", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, "v0Components"], [1, "parallelTxsComponent"]], + arms: { + v0Components: xdr.varArray(xdr.lookup("TxSetComponent"), 2147483647), + parallelTxsComponent: xdr.lookup("ParallelTxsComponent") + } + }); + xdr.struct("TransactionSet", [["previousLedgerHash", xdr.lookup("Hash")], ["txes", xdr.varArray(xdr.lookup("TransactionEnvelope"), 2147483647)]]); + xdr.struct("TransactionSetV1", [["previousLedgerHash", xdr.lookup("Hash")], ["phases", xdr.varArray(xdr.lookup("TransactionPhase"), 2147483647)]]); + xdr.union("GeneralizedTransactionSet", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[1, "v1TxSet"]], + arms: { + v1TxSet: xdr.lookup("TransactionSetV1") + } + }); + xdr.struct("TransactionResultPair", [["transactionHash", xdr.lookup("Hash")], ["result", xdr.lookup("TransactionResult")]]); + xdr.struct("TransactionResultSet", [["results", xdr.varArray(xdr.lookup("TransactionResultPair"), 2147483647)]]); + xdr.union("TransactionHistoryEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "generalizedTxSet"]], + arms: { + generalizedTxSet: xdr.lookup("GeneralizedTransactionSet") + } + }); + xdr.struct("TransactionHistoryEntry", [["ledgerSeq", xdr.lookup("Uint32")], ["txSet", xdr.lookup("TransactionSet")], ["ext", xdr.lookup("TransactionHistoryEntryExt")]]); + xdr.union("TransactionHistoryResultEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("TransactionHistoryResultEntry", [["ledgerSeq", xdr.lookup("Uint32")], ["txResultSet", xdr.lookup("TransactionResultSet")], ["ext", xdr.lookup("TransactionHistoryResultEntryExt")]]); + xdr.union("LedgerHeaderHistoryEntryExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("LedgerHeaderHistoryEntry", [["hash", xdr.lookup("Hash")], ["header", xdr.lookup("LedgerHeader")], ["ext", xdr.lookup("LedgerHeaderHistoryEntryExt")]]); + xdr.struct("LedgerScpMessages", [["ledgerSeq", xdr.lookup("Uint32")], ["messages", xdr.varArray(xdr.lookup("ScpEnvelope"), 2147483647)]]); + xdr.struct("ScpHistoryEntryV0", [["quorumSets", xdr.varArray(xdr.lookup("ScpQuorumSet"), 2147483647)], ["ledgerMessages", xdr.lookup("LedgerScpMessages")]]); + xdr.union("ScpHistoryEntry", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, "v0"]], + arms: { + v0: xdr.lookup("ScpHistoryEntryV0") + } + }); + xdr["enum"]("LedgerEntryChangeType", { + ledgerEntryCreated: 0, + ledgerEntryUpdated: 1, + ledgerEntryRemoved: 2, + ledgerEntryState: 3, + ledgerEntryRestored: 4 + }); + xdr.union("LedgerEntryChange", { + switchOn: xdr.lookup("LedgerEntryChangeType"), + switchName: "type", + switches: [["ledgerEntryCreated", "created"], ["ledgerEntryUpdated", "updated"], ["ledgerEntryRemoved", "removed"], ["ledgerEntryState", "state"], ["ledgerEntryRestored", "restored"]], + arms: { + created: xdr.lookup("LedgerEntry"), + updated: xdr.lookup("LedgerEntry"), + removed: xdr.lookup("LedgerKey"), + state: xdr.lookup("LedgerEntry"), + restored: xdr.lookup("LedgerEntry") + } + }); + xdr.typedef("LedgerEntryChanges", xdr.varArray(xdr.lookup("LedgerEntryChange"), 2147483647)); + xdr.struct("OperationMeta", [["changes", xdr.lookup("LedgerEntryChanges")]]); + xdr.struct("TransactionMetaV1", [["txChanges", xdr.lookup("LedgerEntryChanges")], ["operations", xdr.varArray(xdr.lookup("OperationMeta"), 2147483647)]]); + xdr.struct("TransactionMetaV2", [["txChangesBefore", xdr.lookup("LedgerEntryChanges")], ["operations", xdr.varArray(xdr.lookup("OperationMeta"), 2147483647)], ["txChangesAfter", xdr.lookup("LedgerEntryChanges")]]); + xdr["enum"]("ContractEventType", { + system: 0, + contract: 1, + diagnostic: 2 + }); + xdr.struct("ContractEventV0", [["topics", xdr.varArray(xdr.lookup("ScVal"), 2147483647)], ["data", xdr.lookup("ScVal")]]); + xdr.union("ContractEventBody", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, "v0"]], + arms: { + v0: xdr.lookup("ContractEventV0") + } + }); + xdr.struct("ContractEvent", [["ext", xdr.lookup("ExtensionPoint")], ["contractId", xdr.option(xdr.lookup("ContractId"))], ["type", xdr.lookup("ContractEventType")], ["body", xdr.lookup("ContractEventBody")]]); + xdr.struct("DiagnosticEvent", [["inSuccessfulContractCall", xdr.bool()], ["event", xdr.lookup("ContractEvent")]]); + xdr.struct("SorobanTransactionMetaExtV1", [["ext", xdr.lookup("ExtensionPoint")], ["totalNonRefundableResourceFeeCharged", xdr.lookup("Int64")], ["totalRefundableResourceFeeCharged", xdr.lookup("Int64")], ["rentFeeCharged", xdr.lookup("Int64")]]); + xdr.union("SorobanTransactionMetaExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("SorobanTransactionMetaExtV1") + } + }); + xdr.struct("SorobanTransactionMeta", [["ext", xdr.lookup("SorobanTransactionMetaExt")], ["events", xdr.varArray(xdr.lookup("ContractEvent"), 2147483647)], ["returnValue", xdr.lookup("ScVal")], ["diagnosticEvents", xdr.varArray(xdr.lookup("DiagnosticEvent"), 2147483647)]]); + xdr.struct("TransactionMetaV3", [["ext", xdr.lookup("ExtensionPoint")], ["txChangesBefore", xdr.lookup("LedgerEntryChanges")], ["operations", xdr.varArray(xdr.lookup("OperationMeta"), 2147483647)], ["txChangesAfter", xdr.lookup("LedgerEntryChanges")], ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMeta"))]]); + xdr.struct("OperationMetaV2", [["ext", xdr.lookup("ExtensionPoint")], ["changes", xdr.lookup("LedgerEntryChanges")], ["events", xdr.varArray(xdr.lookup("ContractEvent"), 2147483647)]]); + xdr.struct("SorobanTransactionMetaV2", [["ext", xdr.lookup("SorobanTransactionMetaExt")], ["returnValue", xdr.option(xdr.lookup("ScVal"))]]); + xdr["enum"]("TransactionEventStage", { + transactionEventStageBeforeAllTxes: 0, + transactionEventStageAfterTx: 1, + transactionEventStageAfterAllTxes: 2 + }); + xdr.struct("TransactionEvent", [["stage", xdr.lookup("TransactionEventStage")], ["event", xdr.lookup("ContractEvent")]]); + xdr.struct("TransactionMetaV4", [["ext", xdr.lookup("ExtensionPoint")], ["txChangesBefore", xdr.lookup("LedgerEntryChanges")], ["operations", xdr.varArray(xdr.lookup("OperationMetaV2"), 2147483647)], ["txChangesAfter", xdr.lookup("LedgerEntryChanges")], ["sorobanMeta", xdr.option(xdr.lookup("SorobanTransactionMetaV2"))], ["events", xdr.varArray(xdr.lookup("TransactionEvent"), 2147483647)], ["diagnosticEvents", xdr.varArray(xdr.lookup("DiagnosticEvent"), 2147483647)]]); + xdr.struct("InvokeHostFunctionSuccessPreImage", [["returnValue", xdr.lookup("ScVal")], ["events", xdr.varArray(xdr.lookup("ContractEvent"), 2147483647)]]); + xdr.union("TransactionMeta", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, "operations"], [1, "v1"], [2, "v2"], [3, "v3"], [4, "v4"]], + arms: { + operations: xdr.varArray(xdr.lookup("OperationMeta"), 2147483647), + v1: xdr.lookup("TransactionMetaV1"), + v2: xdr.lookup("TransactionMetaV2"), + v3: xdr.lookup("TransactionMetaV3"), + v4: xdr.lookup("TransactionMetaV4") + } + }); + xdr.struct("TransactionResultMeta", [["result", xdr.lookup("TransactionResultPair")], ["feeProcessing", xdr.lookup("LedgerEntryChanges")], ["txApplyProcessing", xdr.lookup("TransactionMeta")]]); + xdr.struct("TransactionResultMetaV1", [["ext", xdr.lookup("ExtensionPoint")], ["result", xdr.lookup("TransactionResultPair")], ["feeProcessing", xdr.lookup("LedgerEntryChanges")], ["txApplyProcessing", xdr.lookup("TransactionMeta")], ["postTxApplyFeeProcessing", xdr.lookup("LedgerEntryChanges")]]); + xdr.struct("UpgradeEntryMeta", [["upgrade", xdr.lookup("LedgerUpgrade")], ["changes", xdr.lookup("LedgerEntryChanges")]]); + xdr.struct("LedgerCloseMetaV0", [["ledgerHeader", xdr.lookup("LedgerHeaderHistoryEntry")], ["txSet", xdr.lookup("TransactionSet")], ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMeta"), 2147483647)], ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)]]); + xdr.struct("LedgerCloseMetaExtV1", [["ext", xdr.lookup("ExtensionPoint")], ["sorobanFeeWrite1Kb", xdr.lookup("Int64")]]); + xdr.union("LedgerCloseMetaExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "v1"]], + arms: { + v1: xdr.lookup("LedgerCloseMetaExtV1") + } + }); + xdr.struct("LedgerCloseMetaV1", [["ext", xdr.lookup("LedgerCloseMetaExt")], ["ledgerHeader", xdr.lookup("LedgerHeaderHistoryEntry")], ["txSet", xdr.lookup("GeneralizedTransactionSet")], ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMeta"), 2147483647)], ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], ["unused", xdr.varArray(xdr.lookup("LedgerEntry"), 2147483647)]]); + xdr.struct("LedgerCloseMetaV2", [["ext", xdr.lookup("LedgerCloseMetaExt")], ["ledgerHeader", xdr.lookup("LedgerHeaderHistoryEntry")], ["txSet", xdr.lookup("GeneralizedTransactionSet")], ["txProcessing", xdr.varArray(xdr.lookup("TransactionResultMetaV1"), 2147483647)], ["upgradesProcessing", xdr.varArray(xdr.lookup("UpgradeEntryMeta"), 2147483647)], ["scpInfo", xdr.varArray(xdr.lookup("ScpHistoryEntry"), 2147483647)], ["totalByteSizeOfLiveSorobanState", xdr.lookup("Uint64")], ["evictedKeys", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)]]); + xdr.union("LedgerCloseMeta", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, "v0"], [1, "v1"], [2, "v2"]], + arms: { + v0: xdr.lookup("LedgerCloseMetaV0"), + v1: xdr.lookup("LedgerCloseMetaV1"), + v2: xdr.lookup("LedgerCloseMetaV2") + } + }); + xdr["enum"]("ErrorCode", { + errMisc: 0, + errData: 1, + errConf: 2, + errAuth: 3, + errLoad: 4 + }); + xdr.struct("Error", [["code", xdr.lookup("ErrorCode")], ["msg", xdr.string(100)]]); + xdr.struct("SendMore", [["numMessages", xdr.lookup("Uint32")]]); + xdr.struct("SendMoreExtended", [["numMessages", xdr.lookup("Uint32")], ["numBytes", xdr.lookup("Uint32")]]); + xdr.struct("AuthCert", [["pubkey", xdr.lookup("Curve25519Public")], ["expiration", xdr.lookup("Uint64")], ["sig", xdr.lookup("Signature")]]); + xdr.struct("Hello", [["ledgerVersion", xdr.lookup("Uint32")], ["overlayVersion", xdr.lookup("Uint32")], ["overlayMinVersion", xdr.lookup("Uint32")], ["networkId", xdr.lookup("Hash")], ["versionStr", xdr.string(100)], ["listeningPort", xdr["int"]()], ["peerId", xdr.lookup("NodeId")], ["cert", xdr.lookup("AuthCert")], ["nonce", xdr.lookup("Uint256")]]); + xdr["const"]("AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED", 200); + xdr.struct("Auth", [["flags", xdr["int"]()]]); + xdr["enum"]("IpAddrType", { + iPv4: 0, + iPv6: 1 + }); + xdr.union("PeerAddressIp", { + switchOn: xdr.lookup("IpAddrType"), + switchName: "type", + switches: [["iPv4", "ipv4"], ["iPv6", "ipv6"]], + arms: { + ipv4: xdr.opaque(4), + ipv6: xdr.opaque(16) + } + }); + xdr.struct("PeerAddress", [["ip", xdr.lookup("PeerAddressIp")], ["port", xdr.lookup("Uint32")], ["numFailures", xdr.lookup("Uint32")]]); + xdr["enum"]("MessageType", { + errorMsg: 0, + auth: 2, + dontHave: 3, + peers: 5, + getTxSet: 6, + txSet: 7, + generalizedTxSet: 17, + transaction: 8, + getScpQuorumset: 9, + scpQuorumset: 10, + scpMessage: 11, + getScpState: 12, + hello: 13, + sendMore: 16, + sendMoreExtended: 20, + floodAdvert: 18, + floodDemand: 19, + timeSlicedSurveyRequest: 21, + timeSlicedSurveyResponse: 22, + timeSlicedSurveyStartCollecting: 23, + timeSlicedSurveyStopCollecting: 24 + }); + xdr.struct("DontHave", [["type", xdr.lookup("MessageType")], ["reqHash", xdr.lookup("Uint256")]]); + xdr["enum"]("SurveyMessageCommandType", { + timeSlicedSurveyTopology: 1 + }); + xdr["enum"]("SurveyMessageResponseType", { + surveyTopologyResponseV2: 2 + }); + xdr.struct("TimeSlicedSurveyStartCollectingMessage", [["surveyorId", xdr.lookup("NodeId")], ["nonce", xdr.lookup("Uint32")], ["ledgerNum", xdr.lookup("Uint32")]]); + xdr.struct("SignedTimeSlicedSurveyStartCollectingMessage", [["signature", xdr.lookup("Signature")], ["startCollecting", xdr.lookup("TimeSlicedSurveyStartCollectingMessage")]]); + xdr.struct("TimeSlicedSurveyStopCollectingMessage", [["surveyorId", xdr.lookup("NodeId")], ["nonce", xdr.lookup("Uint32")], ["ledgerNum", xdr.lookup("Uint32")]]); + xdr.struct("SignedTimeSlicedSurveyStopCollectingMessage", [["signature", xdr.lookup("Signature")], ["stopCollecting", xdr.lookup("TimeSlicedSurveyStopCollectingMessage")]]); + xdr.struct("SurveyRequestMessage", [["surveyorPeerId", xdr.lookup("NodeId")], ["surveyedPeerId", xdr.lookup("NodeId")], ["ledgerNum", xdr.lookup("Uint32")], ["encryptionKey", xdr.lookup("Curve25519Public")], ["commandType", xdr.lookup("SurveyMessageCommandType")]]); + xdr.struct("TimeSlicedSurveyRequestMessage", [["request", xdr.lookup("SurveyRequestMessage")], ["nonce", xdr.lookup("Uint32")], ["inboundPeersIndex", xdr.lookup("Uint32")], ["outboundPeersIndex", xdr.lookup("Uint32")]]); + xdr.struct("SignedTimeSlicedSurveyRequestMessage", [["requestSignature", xdr.lookup("Signature")], ["request", xdr.lookup("TimeSlicedSurveyRequestMessage")]]); + xdr.typedef("EncryptedBody", xdr.varOpaque(64e3)); + xdr.struct("SurveyResponseMessage", [["surveyorPeerId", xdr.lookup("NodeId")], ["surveyedPeerId", xdr.lookup("NodeId")], ["ledgerNum", xdr.lookup("Uint32")], ["commandType", xdr.lookup("SurveyMessageCommandType")], ["encryptedBody", xdr.lookup("EncryptedBody")]]); + xdr.struct("TimeSlicedSurveyResponseMessage", [["response", xdr.lookup("SurveyResponseMessage")], ["nonce", xdr.lookup("Uint32")]]); + xdr.struct("SignedTimeSlicedSurveyResponseMessage", [["responseSignature", xdr.lookup("Signature")], ["response", xdr.lookup("TimeSlicedSurveyResponseMessage")]]); + xdr.struct("PeerStats", [["id", xdr.lookup("NodeId")], ["versionStr", xdr.string(100)], ["messagesRead", xdr.lookup("Uint64")], ["messagesWritten", xdr.lookup("Uint64")], ["bytesRead", xdr.lookup("Uint64")], ["bytesWritten", xdr.lookup("Uint64")], ["secondsConnected", xdr.lookup("Uint64")], ["uniqueFloodBytesRecv", xdr.lookup("Uint64")], ["duplicateFloodBytesRecv", xdr.lookup("Uint64")], ["uniqueFetchBytesRecv", xdr.lookup("Uint64")], ["duplicateFetchBytesRecv", xdr.lookup("Uint64")], ["uniqueFloodMessageRecv", xdr.lookup("Uint64")], ["duplicateFloodMessageRecv", xdr.lookup("Uint64")], ["uniqueFetchMessageRecv", xdr.lookup("Uint64")], ["duplicateFetchMessageRecv", xdr.lookup("Uint64")]]); + xdr.struct("TimeSlicedNodeData", [["addedAuthenticatedPeers", xdr.lookup("Uint32")], ["droppedAuthenticatedPeers", xdr.lookup("Uint32")], ["totalInboundPeerCount", xdr.lookup("Uint32")], ["totalOutboundPeerCount", xdr.lookup("Uint32")], ["p75ScpFirstToSelfLatencyMs", xdr.lookup("Uint32")], ["p75ScpSelfToOtherLatencyMs", xdr.lookup("Uint32")], ["lostSyncCount", xdr.lookup("Uint32")], ["isValidator", xdr.bool()], ["maxInboundPeerCount", xdr.lookup("Uint32")], ["maxOutboundPeerCount", xdr.lookup("Uint32")]]); + xdr.struct("TimeSlicedPeerData", [["peerStats", xdr.lookup("PeerStats")], ["averageLatencyMs", xdr.lookup("Uint32")]]); + xdr.typedef("TimeSlicedPeerDataList", xdr.varArray(xdr.lookup("TimeSlicedPeerData"), 25)); + xdr.struct("TopologyResponseBodyV2", [["inboundPeers", xdr.lookup("TimeSlicedPeerDataList")], ["outboundPeers", xdr.lookup("TimeSlicedPeerDataList")], ["nodeData", xdr.lookup("TimeSlicedNodeData")]]); + xdr.union("SurveyResponseBody", { + switchOn: xdr.lookup("SurveyMessageResponseType"), + switchName: "type", + switches: [["surveyTopologyResponseV2", "topologyResponseBodyV2"]], + arms: { + topologyResponseBodyV2: xdr.lookup("TopologyResponseBodyV2") + } + }); + xdr["const"]("TX_ADVERT_VECTOR_MAX_SIZE", 1e3); + xdr.typedef("TxAdvertVector", xdr.varArray(xdr.lookup("Hash"), xdr.lookup("TX_ADVERT_VECTOR_MAX_SIZE"))); + xdr.struct("FloodAdvert", [["txHashes", xdr.lookup("TxAdvertVector")]]); + xdr["const"]("TX_DEMAND_VECTOR_MAX_SIZE", 1e3); + xdr.typedef("TxDemandVector", xdr.varArray(xdr.lookup("Hash"), xdr.lookup("TX_DEMAND_VECTOR_MAX_SIZE"))); + xdr.struct("FloodDemand", [["txHashes", xdr.lookup("TxDemandVector")]]); + xdr.union("StellarMessage", { + switchOn: xdr.lookup("MessageType"), + switchName: "type", + switches: [["errorMsg", "error"], ["hello", "hello"], ["auth", "auth"], ["dontHave", "dontHave"], ["peers", "peers"], ["getTxSet", "txSetHash"], ["txSet", "txSet"], ["generalizedTxSet", "generalizedTxSet"], ["transaction", "transaction"], ["timeSlicedSurveyRequest", "signedTimeSlicedSurveyRequestMessage"], ["timeSlicedSurveyResponse", "signedTimeSlicedSurveyResponseMessage"], ["timeSlicedSurveyStartCollecting", "signedTimeSlicedSurveyStartCollectingMessage"], ["timeSlicedSurveyStopCollecting", "signedTimeSlicedSurveyStopCollectingMessage"], ["getScpQuorumset", "qSetHash"], ["scpQuorumset", "qSet"], ["scpMessage", "envelope"], ["getScpState", "getScpLedgerSeq"], ["sendMore", "sendMoreMessage"], ["sendMoreExtended", "sendMoreExtendedMessage"], ["floodAdvert", "floodAdvert"], ["floodDemand", "floodDemand"]], + arms: { + error: xdr.lookup("Error"), + hello: xdr.lookup("Hello"), + auth: xdr.lookup("Auth"), + dontHave: xdr.lookup("DontHave"), + peers: xdr.varArray(xdr.lookup("PeerAddress"), 100), + txSetHash: xdr.lookup("Uint256"), + txSet: xdr.lookup("TransactionSet"), + generalizedTxSet: xdr.lookup("GeneralizedTransactionSet"), + transaction: xdr.lookup("TransactionEnvelope"), + signedTimeSlicedSurveyRequestMessage: xdr.lookup("SignedTimeSlicedSurveyRequestMessage"), + signedTimeSlicedSurveyResponseMessage: xdr.lookup("SignedTimeSlicedSurveyResponseMessage"), + signedTimeSlicedSurveyStartCollectingMessage: xdr.lookup("SignedTimeSlicedSurveyStartCollectingMessage"), + signedTimeSlicedSurveyStopCollectingMessage: xdr.lookup("SignedTimeSlicedSurveyStopCollectingMessage"), + qSetHash: xdr.lookup("Uint256"), + qSet: xdr.lookup("ScpQuorumSet"), + envelope: xdr.lookup("ScpEnvelope"), + getScpLedgerSeq: xdr.lookup("Uint32"), + sendMoreMessage: xdr.lookup("SendMore"), + sendMoreExtendedMessage: xdr.lookup("SendMoreExtended"), + floodAdvert: xdr.lookup("FloodAdvert"), + floodDemand: xdr.lookup("FloodDemand") + } + }); + xdr.struct("AuthenticatedMessageV0", [["sequence", xdr.lookup("Uint64")], ["message", xdr.lookup("StellarMessage")], ["mac", xdr.lookup("HmacSha256Mac")]]); + xdr.union("AuthenticatedMessage", { + switchOn: xdr.lookup("Uint32"), + switchName: "v", + switches: [[0, "v0"]], + arms: { + v0: xdr.lookup("AuthenticatedMessageV0") + } + }); + xdr["const"]("MAX_OPS_PER_TX", 100); + xdr.union("LiquidityPoolParameters", { + switchOn: xdr.lookup("LiquidityPoolType"), + switchName: "type", + switches: [["liquidityPoolConstantProduct", "constantProduct"]], + arms: { + constantProduct: xdr.lookup("LiquidityPoolConstantProductParameters") + } + }); + xdr.struct("MuxedAccountMed25519", [["id", xdr.lookup("Uint64")], ["ed25519", xdr.lookup("Uint256")]]); + xdr.union("MuxedAccount", { + switchOn: xdr.lookup("CryptoKeyType"), + switchName: "type", + switches: [["keyTypeEd25519", "ed25519"], ["keyTypeMuxedEd25519", "med25519"]], + arms: { + ed25519: xdr.lookup("Uint256"), + med25519: xdr.lookup("MuxedAccountMed25519") + } + }); + xdr.struct("DecoratedSignature", [["hint", xdr.lookup("SignatureHint")], ["signature", xdr.lookup("Signature")]]); + xdr["enum"]("OperationType", { + createAccount: 0, + payment: 1, + pathPaymentStrictReceive: 2, + manageSellOffer: 3, + createPassiveSellOffer: 4, + setOptions: 5, + changeTrust: 6, + allowTrust: 7, + accountMerge: 8, + inflation: 9, + manageData: 10, + bumpSequence: 11, + manageBuyOffer: 12, + pathPaymentStrictSend: 13, + createClaimableBalance: 14, + claimClaimableBalance: 15, + beginSponsoringFutureReserves: 16, + endSponsoringFutureReserves: 17, + revokeSponsorship: 18, + clawback: 19, + clawbackClaimableBalance: 20, + setTrustLineFlags: 21, + liquidityPoolDeposit: 22, + liquidityPoolWithdraw: 23, + invokeHostFunction: 24, + extendFootprintTtl: 25, + restoreFootprint: 26 + }); + xdr.struct("CreateAccountOp", [["destination", xdr.lookup("AccountId")], ["startingBalance", xdr.lookup("Int64")]]); + xdr.struct("PaymentOp", [["destination", xdr.lookup("MuxedAccount")], ["asset", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")]]); + xdr.struct("PathPaymentStrictReceiveOp", [["sendAsset", xdr.lookup("Asset")], ["sendMax", xdr.lookup("Int64")], ["destination", xdr.lookup("MuxedAccount")], ["destAsset", xdr.lookup("Asset")], ["destAmount", xdr.lookup("Int64")], ["path", xdr.varArray(xdr.lookup("Asset"), 5)]]); + xdr.struct("PathPaymentStrictSendOp", [["sendAsset", xdr.lookup("Asset")], ["sendAmount", xdr.lookup("Int64")], ["destination", xdr.lookup("MuxedAccount")], ["destAsset", xdr.lookup("Asset")], ["destMin", xdr.lookup("Int64")], ["path", xdr.varArray(xdr.lookup("Asset"), 5)]]); + xdr.struct("ManageSellOfferOp", [["selling", xdr.lookup("Asset")], ["buying", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")], ["price", xdr.lookup("Price")], ["offerId", xdr.lookup("Int64")]]); + xdr.struct("ManageBuyOfferOp", [["selling", xdr.lookup("Asset")], ["buying", xdr.lookup("Asset")], ["buyAmount", xdr.lookup("Int64")], ["price", xdr.lookup("Price")], ["offerId", xdr.lookup("Int64")]]); + xdr.struct("CreatePassiveSellOfferOp", [["selling", xdr.lookup("Asset")], ["buying", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")], ["price", xdr.lookup("Price")]]); + xdr.struct("SetOptionsOp", [["inflationDest", xdr.option(xdr.lookup("AccountId"))], ["clearFlags", xdr.option(xdr.lookup("Uint32"))], ["setFlags", xdr.option(xdr.lookup("Uint32"))], ["masterWeight", xdr.option(xdr.lookup("Uint32"))], ["lowThreshold", xdr.option(xdr.lookup("Uint32"))], ["medThreshold", xdr.option(xdr.lookup("Uint32"))], ["highThreshold", xdr.option(xdr.lookup("Uint32"))], ["homeDomain", xdr.option(xdr.lookup("String32"))], ["signer", xdr.option(xdr.lookup("Signer"))]]); + xdr.union("ChangeTrustAsset", { + switchOn: xdr.lookup("AssetType"), + switchName: "type", + switches: [["assetTypeNative", xdr["void"]()], ["assetTypeCreditAlphanum4", "alphaNum4"], ["assetTypeCreditAlphanum12", "alphaNum12"], ["assetTypePoolShare", "liquidityPool"]], + arms: { + alphaNum4: xdr.lookup("AlphaNum4"), + alphaNum12: xdr.lookup("AlphaNum12"), + liquidityPool: xdr.lookup("LiquidityPoolParameters") + } + }); + xdr.struct("ChangeTrustOp", [["line", xdr.lookup("ChangeTrustAsset")], ["limit", xdr.lookup("Int64")]]); + xdr.struct("AllowTrustOp", [["trustor", xdr.lookup("AccountId")], ["asset", xdr.lookup("AssetCode")], ["authorize", xdr.lookup("Uint32")]]); + xdr.struct("ManageDataOp", [["dataName", xdr.lookup("String64")], ["dataValue", xdr.option(xdr.lookup("DataValue"))]]); + xdr.struct("BumpSequenceOp", [["bumpTo", xdr.lookup("SequenceNumber")]]); + xdr.struct("CreateClaimableBalanceOp", [["asset", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")], ["claimants", xdr.varArray(xdr.lookup("Claimant"), 10)]]); + xdr.struct("ClaimClaimableBalanceOp", [["balanceId", xdr.lookup("ClaimableBalanceId")]]); + xdr.struct("BeginSponsoringFutureReservesOp", [["sponsoredId", xdr.lookup("AccountId")]]); + xdr["enum"]("RevokeSponsorshipType", { + revokeSponsorshipLedgerEntry: 0, + revokeSponsorshipSigner: 1 + }); + xdr.struct("RevokeSponsorshipOpSigner", [["accountId", xdr.lookup("AccountId")], ["signerKey", xdr.lookup("SignerKey")]]); + xdr.union("RevokeSponsorshipOp", { + switchOn: xdr.lookup("RevokeSponsorshipType"), + switchName: "type", + switches: [["revokeSponsorshipLedgerEntry", "ledgerKey"], ["revokeSponsorshipSigner", "signer"]], + arms: { + ledgerKey: xdr.lookup("LedgerKey"), + signer: xdr.lookup("RevokeSponsorshipOpSigner") + } + }); + xdr.struct("ClawbackOp", [["asset", xdr.lookup("Asset")], ["from", xdr.lookup("MuxedAccount")], ["amount", xdr.lookup("Int64")]]); + xdr.struct("ClawbackClaimableBalanceOp", [["balanceId", xdr.lookup("ClaimableBalanceId")]]); + xdr.struct("SetTrustLineFlagsOp", [["trustor", xdr.lookup("AccountId")], ["asset", xdr.lookup("Asset")], ["clearFlags", xdr.lookup("Uint32")], ["setFlags", xdr.lookup("Uint32")]]); + xdr["const"]("LIQUIDITY_POOL_FEE_V18", 30); + xdr.struct("LiquidityPoolDepositOp", [["liquidityPoolId", xdr.lookup("PoolId")], ["maxAmountA", xdr.lookup("Int64")], ["maxAmountB", xdr.lookup("Int64")], ["minPrice", xdr.lookup("Price")], ["maxPrice", xdr.lookup("Price")]]); + xdr.struct("LiquidityPoolWithdrawOp", [["liquidityPoolId", xdr.lookup("PoolId")], ["amount", xdr.lookup("Int64")], ["minAmountA", xdr.lookup("Int64")], ["minAmountB", xdr.lookup("Int64")]]); + xdr["enum"]("HostFunctionType", { + hostFunctionTypeInvokeContract: 0, + hostFunctionTypeCreateContract: 1, + hostFunctionTypeUploadContractWasm: 2, + hostFunctionTypeCreateContractV2: 3 + }); + xdr["enum"]("ContractIdPreimageType", { + contractIdPreimageFromAddress: 0, + contractIdPreimageFromAsset: 1 + }); + xdr.struct("ContractIdPreimageFromAddress", [["address", xdr.lookup("ScAddress")], ["salt", xdr.lookup("Uint256")]]); + xdr.union("ContractIdPreimage", { + switchOn: xdr.lookup("ContractIdPreimageType"), + switchName: "type", + switches: [["contractIdPreimageFromAddress", "fromAddress"], ["contractIdPreimageFromAsset", "fromAsset"]], + arms: { + fromAddress: xdr.lookup("ContractIdPreimageFromAddress"), + fromAsset: xdr.lookup("Asset") + } + }); + xdr.struct("CreateContractArgs", [["contractIdPreimage", xdr.lookup("ContractIdPreimage")], ["executable", xdr.lookup("ContractExecutable")]]); + xdr.struct("CreateContractArgsV2", [["contractIdPreimage", xdr.lookup("ContractIdPreimage")], ["executable", xdr.lookup("ContractExecutable")], ["constructorArgs", xdr.varArray(xdr.lookup("ScVal"), 2147483647)]]); + xdr.struct("InvokeContractArgs", [["contractAddress", xdr.lookup("ScAddress")], ["functionName", xdr.lookup("ScSymbol")], ["args", xdr.varArray(xdr.lookup("ScVal"), 2147483647)]]); + xdr.union("HostFunction", { + switchOn: xdr.lookup("HostFunctionType"), + switchName: "type", + switches: [["hostFunctionTypeInvokeContract", "invokeContract"], ["hostFunctionTypeCreateContract", "createContract"], ["hostFunctionTypeUploadContractWasm", "wasm"], ["hostFunctionTypeCreateContractV2", "createContractV2"]], + arms: { + invokeContract: xdr.lookup("InvokeContractArgs"), + createContract: xdr.lookup("CreateContractArgs"), + wasm: xdr.varOpaque(), + createContractV2: xdr.lookup("CreateContractArgsV2") + } + }); + xdr["enum"]("SorobanAuthorizedFunctionType", { + sorobanAuthorizedFunctionTypeContractFn: 0, + sorobanAuthorizedFunctionTypeCreateContractHostFn: 1, + sorobanAuthorizedFunctionTypeCreateContractV2HostFn: 2 + }); + xdr.union("SorobanAuthorizedFunction", { + switchOn: xdr.lookup("SorobanAuthorizedFunctionType"), + switchName: "type", + switches: [["sorobanAuthorizedFunctionTypeContractFn", "contractFn"], ["sorobanAuthorizedFunctionTypeCreateContractHostFn", "createContractHostFn"], ["sorobanAuthorizedFunctionTypeCreateContractV2HostFn", "createContractV2HostFn"]], + arms: { + contractFn: xdr.lookup("InvokeContractArgs"), + createContractHostFn: xdr.lookup("CreateContractArgs"), + createContractV2HostFn: xdr.lookup("CreateContractArgsV2") + } + }); + xdr.struct("SorobanAuthorizedInvocation", [["function", xdr.lookup("SorobanAuthorizedFunction")], ["subInvocations", xdr.varArray(xdr.lookup("SorobanAuthorizedInvocation"), 2147483647)]]); + xdr.struct("SorobanAddressCredentials", [["address", xdr.lookup("ScAddress")], ["nonce", xdr.lookup("Int64")], ["signatureExpirationLedger", xdr.lookup("Uint32")], ["signature", xdr.lookup("ScVal")]]); + xdr["enum"]("SorobanCredentialsType", { + sorobanCredentialsSourceAccount: 0, + sorobanCredentialsAddress: 1 + }); + xdr.union("SorobanCredentials", { + switchOn: xdr.lookup("SorobanCredentialsType"), + switchName: "type", + switches: [["sorobanCredentialsSourceAccount", xdr["void"]()], ["sorobanCredentialsAddress", "address"]], + arms: { + address: xdr.lookup("SorobanAddressCredentials") + } + }); + xdr.struct("SorobanAuthorizationEntry", [["credentials", xdr.lookup("SorobanCredentials")], ["rootInvocation", xdr.lookup("SorobanAuthorizedInvocation")]]); + xdr.typedef("SorobanAuthorizationEntries", xdr.varArray(xdr.lookup("SorobanAuthorizationEntry"), 2147483647)); + xdr.struct("InvokeHostFunctionOp", [["hostFunction", xdr.lookup("HostFunction")], ["auth", xdr.varArray(xdr.lookup("SorobanAuthorizationEntry"), 2147483647)]]); + xdr.struct("ExtendFootprintTtlOp", [["ext", xdr.lookup("ExtensionPoint")], ["extendTo", xdr.lookup("Uint32")]]); + xdr.struct("RestoreFootprintOp", [["ext", xdr.lookup("ExtensionPoint")]]); + xdr.union("OperationBody", { + switchOn: xdr.lookup("OperationType"), + switchName: "type", + switches: [["createAccount", "createAccountOp"], ["payment", "paymentOp"], ["pathPaymentStrictReceive", "pathPaymentStrictReceiveOp"], ["manageSellOffer", "manageSellOfferOp"], ["createPassiveSellOffer", "createPassiveSellOfferOp"], ["setOptions", "setOptionsOp"], ["changeTrust", "changeTrustOp"], ["allowTrust", "allowTrustOp"], ["accountMerge", "destination"], ["inflation", xdr["void"]()], ["manageData", "manageDataOp"], ["bumpSequence", "bumpSequenceOp"], ["manageBuyOffer", "manageBuyOfferOp"], ["pathPaymentStrictSend", "pathPaymentStrictSendOp"], ["createClaimableBalance", "createClaimableBalanceOp"], ["claimClaimableBalance", "claimClaimableBalanceOp"], ["beginSponsoringFutureReserves", "beginSponsoringFutureReservesOp"], ["endSponsoringFutureReserves", xdr["void"]()], ["revokeSponsorship", "revokeSponsorshipOp"], ["clawback", "clawbackOp"], ["clawbackClaimableBalance", "clawbackClaimableBalanceOp"], ["setTrustLineFlags", "setTrustLineFlagsOp"], ["liquidityPoolDeposit", "liquidityPoolDepositOp"], ["liquidityPoolWithdraw", "liquidityPoolWithdrawOp"], ["invokeHostFunction", "invokeHostFunctionOp"], ["extendFootprintTtl", "extendFootprintTtlOp"], ["restoreFootprint", "restoreFootprintOp"]], + arms: { + createAccountOp: xdr.lookup("CreateAccountOp"), + paymentOp: xdr.lookup("PaymentOp"), + pathPaymentStrictReceiveOp: xdr.lookup("PathPaymentStrictReceiveOp"), + manageSellOfferOp: xdr.lookup("ManageSellOfferOp"), + createPassiveSellOfferOp: xdr.lookup("CreatePassiveSellOfferOp"), + setOptionsOp: xdr.lookup("SetOptionsOp"), + changeTrustOp: xdr.lookup("ChangeTrustOp"), + allowTrustOp: xdr.lookup("AllowTrustOp"), + destination: xdr.lookup("MuxedAccount"), + manageDataOp: xdr.lookup("ManageDataOp"), + bumpSequenceOp: xdr.lookup("BumpSequenceOp"), + manageBuyOfferOp: xdr.lookup("ManageBuyOfferOp"), + pathPaymentStrictSendOp: xdr.lookup("PathPaymentStrictSendOp"), + createClaimableBalanceOp: xdr.lookup("CreateClaimableBalanceOp"), + claimClaimableBalanceOp: xdr.lookup("ClaimClaimableBalanceOp"), + beginSponsoringFutureReservesOp: xdr.lookup("BeginSponsoringFutureReservesOp"), + revokeSponsorshipOp: xdr.lookup("RevokeSponsorshipOp"), + clawbackOp: xdr.lookup("ClawbackOp"), + clawbackClaimableBalanceOp: xdr.lookup("ClawbackClaimableBalanceOp"), + setTrustLineFlagsOp: xdr.lookup("SetTrustLineFlagsOp"), + liquidityPoolDepositOp: xdr.lookup("LiquidityPoolDepositOp"), + liquidityPoolWithdrawOp: xdr.lookup("LiquidityPoolWithdrawOp"), + invokeHostFunctionOp: xdr.lookup("InvokeHostFunctionOp"), + extendFootprintTtlOp: xdr.lookup("ExtendFootprintTtlOp"), + restoreFootprintOp: xdr.lookup("RestoreFootprintOp") + } + }); + xdr.struct("Operation", [["sourceAccount", xdr.option(xdr.lookup("MuxedAccount"))], ["body", xdr.lookup("OperationBody")]]); + xdr.struct("HashIdPreimageOperationId", [["sourceAccount", xdr.lookup("AccountId")], ["seqNum", xdr.lookup("SequenceNumber")], ["opNum", xdr.lookup("Uint32")]]); + xdr.struct("HashIdPreimageRevokeId", [["sourceAccount", xdr.lookup("AccountId")], ["seqNum", xdr.lookup("SequenceNumber")], ["opNum", xdr.lookup("Uint32")], ["liquidityPoolId", xdr.lookup("PoolId")], ["asset", xdr.lookup("Asset")]]); + xdr.struct("HashIdPreimageContractId", [["networkId", xdr.lookup("Hash")], ["contractIdPreimage", xdr.lookup("ContractIdPreimage")]]); + xdr.struct("HashIdPreimageSorobanAuthorization", [["networkId", xdr.lookup("Hash")], ["nonce", xdr.lookup("Int64")], ["signatureExpirationLedger", xdr.lookup("Uint32")], ["invocation", xdr.lookup("SorobanAuthorizedInvocation")]]); + xdr.union("HashIdPreimage", { + switchOn: xdr.lookup("EnvelopeType"), + switchName: "type", + switches: [["envelopeTypeOpId", "operationId"], ["envelopeTypePoolRevokeOpId", "revokeId"], ["envelopeTypeContractId", "contractId"], ["envelopeTypeSorobanAuthorization", "sorobanAuthorization"]], + arms: { + operationId: xdr.lookup("HashIdPreimageOperationId"), + revokeId: xdr.lookup("HashIdPreimageRevokeId"), + contractId: xdr.lookup("HashIdPreimageContractId"), + sorobanAuthorization: xdr.lookup("HashIdPreimageSorobanAuthorization") + } + }); + xdr["enum"]("MemoType", { + memoNone: 0, + memoText: 1, + memoId: 2, + memoHash: 3, + memoReturn: 4 + }); + xdr.union("Memo", { + switchOn: xdr.lookup("MemoType"), + switchName: "type", + switches: [["memoNone", xdr["void"]()], ["memoText", "text"], ["memoId", "id"], ["memoHash", "hash"], ["memoReturn", "retHash"]], + arms: { + text: xdr.string(28), + id: xdr.lookup("Uint64"), + hash: xdr.lookup("Hash"), + retHash: xdr.lookup("Hash") + } + }); + xdr.struct("TimeBounds", [["minTime", xdr.lookup("TimePoint")], ["maxTime", xdr.lookup("TimePoint")]]); + xdr.struct("LedgerBounds", [["minLedger", xdr.lookup("Uint32")], ["maxLedger", xdr.lookup("Uint32")]]); + xdr.struct("PreconditionsV2", [["timeBounds", xdr.option(xdr.lookup("TimeBounds"))], ["ledgerBounds", xdr.option(xdr.lookup("LedgerBounds"))], ["minSeqNum", xdr.option(xdr.lookup("SequenceNumber"))], ["minSeqAge", xdr.lookup("Duration")], ["minSeqLedgerGap", xdr.lookup("Uint32")], ["extraSigners", xdr.varArray(xdr.lookup("SignerKey"), 2)]]); + xdr["enum"]("PreconditionType", { + precondNone: 0, + precondTime: 1, + precondV2: 2 + }); + xdr.union("Preconditions", { + switchOn: xdr.lookup("PreconditionType"), + switchName: "type", + switches: [["precondNone", xdr["void"]()], ["precondTime", "timeBounds"], ["precondV2", "v2"]], + arms: { + timeBounds: xdr.lookup("TimeBounds"), + v2: xdr.lookup("PreconditionsV2") + } + }); + xdr.struct("LedgerFootprint", [["readOnly", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)], ["readWrite", xdr.varArray(xdr.lookup("LedgerKey"), 2147483647)]]); + xdr.struct("SorobanResources", [["footprint", xdr.lookup("LedgerFootprint")], ["instructions", xdr.lookup("Uint32")], ["diskReadBytes", xdr.lookup("Uint32")], ["writeBytes", xdr.lookup("Uint32")]]); + xdr.struct("SorobanResourcesExtV0", [["archivedSorobanEntries", xdr.varArray(xdr.lookup("Uint32"), 2147483647)]]); + xdr.union("SorobanTransactionDataExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "resourceExt"]], + arms: { + resourceExt: xdr.lookup("SorobanResourcesExtV0") + } + }); + xdr.struct("SorobanTransactionData", [["ext", xdr.lookup("SorobanTransactionDataExt")], ["resources", xdr.lookup("SorobanResources")], ["resourceFee", xdr.lookup("Int64")]]); + xdr.union("TransactionV0Ext", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("TransactionV0", [["sourceAccountEd25519", xdr.lookup("Uint256")], ["fee", xdr.lookup("Uint32")], ["seqNum", xdr.lookup("SequenceNumber")], ["timeBounds", xdr.option(xdr.lookup("TimeBounds"))], ["memo", xdr.lookup("Memo")], ["operations", xdr.varArray(xdr.lookup("Operation"), xdr.lookup("MAX_OPS_PER_TX"))], ["ext", xdr.lookup("TransactionV0Ext")]]); + xdr.struct("TransactionV0Envelope", [["tx", xdr.lookup("TransactionV0")], ["signatures", xdr.varArray(xdr.lookup("DecoratedSignature"), 20)]]); + xdr.union("TransactionExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()], [1, "sorobanData"]], + arms: { + sorobanData: xdr.lookup("SorobanTransactionData") + } + }); + xdr.struct("Transaction", [["sourceAccount", xdr.lookup("MuxedAccount")], ["fee", xdr.lookup("Uint32")], ["seqNum", xdr.lookup("SequenceNumber")], ["cond", xdr.lookup("Preconditions")], ["memo", xdr.lookup("Memo")], ["operations", xdr.varArray(xdr.lookup("Operation"), xdr.lookup("MAX_OPS_PER_TX"))], ["ext", xdr.lookup("TransactionExt")]]); + xdr.struct("TransactionV1Envelope", [["tx", xdr.lookup("Transaction")], ["signatures", xdr.varArray(xdr.lookup("DecoratedSignature"), 20)]]); + xdr.union("FeeBumpTransactionInnerTx", { + switchOn: xdr.lookup("EnvelopeType"), + switchName: "type", + switches: [["envelopeTypeTx", "v1"]], + arms: { + v1: xdr.lookup("TransactionV1Envelope") + } + }); + xdr.union("FeeBumpTransactionExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("FeeBumpTransaction", [["feeSource", xdr.lookup("MuxedAccount")], ["fee", xdr.lookup("Int64")], ["innerTx", xdr.lookup("FeeBumpTransactionInnerTx")], ["ext", xdr.lookup("FeeBumpTransactionExt")]]); + xdr.struct("FeeBumpTransactionEnvelope", [["tx", xdr.lookup("FeeBumpTransaction")], ["signatures", xdr.varArray(xdr.lookup("DecoratedSignature"), 20)]]); + xdr.union("TransactionEnvelope", { + switchOn: xdr.lookup("EnvelopeType"), + switchName: "type", + switches: [["envelopeTypeTxV0", "v0"], ["envelopeTypeTx", "v1"], ["envelopeTypeTxFeeBump", "feeBump"]], + arms: { + v0: xdr.lookup("TransactionV0Envelope"), + v1: xdr.lookup("TransactionV1Envelope"), + feeBump: xdr.lookup("FeeBumpTransactionEnvelope") + } + }); + xdr.union("TransactionSignaturePayloadTaggedTransaction", { + switchOn: xdr.lookup("EnvelopeType"), + switchName: "type", + switches: [["envelopeTypeTx", "tx"], ["envelopeTypeTxFeeBump", "feeBump"]], + arms: { + tx: xdr.lookup("Transaction"), + feeBump: xdr.lookup("FeeBumpTransaction") + } + }); + xdr.struct("TransactionSignaturePayload", [["networkId", xdr.lookup("Hash")], ["taggedTransaction", xdr.lookup("TransactionSignaturePayloadTaggedTransaction")]]); + xdr["enum"]("ClaimAtomType", { + claimAtomTypeV0: 0, + claimAtomTypeOrderBook: 1, + claimAtomTypeLiquidityPool: 2 + }); + xdr.struct("ClaimOfferAtomV0", [["sellerEd25519", xdr.lookup("Uint256")], ["offerId", xdr.lookup("Int64")], ["assetSold", xdr.lookup("Asset")], ["amountSold", xdr.lookup("Int64")], ["assetBought", xdr.lookup("Asset")], ["amountBought", xdr.lookup("Int64")]]); + xdr.struct("ClaimOfferAtom", [["sellerId", xdr.lookup("AccountId")], ["offerId", xdr.lookup("Int64")], ["assetSold", xdr.lookup("Asset")], ["amountSold", xdr.lookup("Int64")], ["assetBought", xdr.lookup("Asset")], ["amountBought", xdr.lookup("Int64")]]); + xdr.struct("ClaimLiquidityAtom", [["liquidityPoolId", xdr.lookup("PoolId")], ["assetSold", xdr.lookup("Asset")], ["amountSold", xdr.lookup("Int64")], ["assetBought", xdr.lookup("Asset")], ["amountBought", xdr.lookup("Int64")]]); + xdr.union("ClaimAtom", { + switchOn: xdr.lookup("ClaimAtomType"), + switchName: "type", + switches: [["claimAtomTypeV0", "v0"], ["claimAtomTypeOrderBook", "orderBook"], ["claimAtomTypeLiquidityPool", "liquidityPool"]], + arms: { + v0: xdr.lookup("ClaimOfferAtomV0"), + orderBook: xdr.lookup("ClaimOfferAtom"), + liquidityPool: xdr.lookup("ClaimLiquidityAtom") + } + }); + xdr["enum"]("CreateAccountResultCode", { + createAccountSuccess: 0, + createAccountMalformed: -1, + createAccountUnderfunded: -2, + createAccountLowReserve: -3, + createAccountAlreadyExist: -4 + }); + xdr.union("CreateAccountResult", { + switchOn: xdr.lookup("CreateAccountResultCode"), + switchName: "code", + switches: [["createAccountSuccess", xdr["void"]()], ["createAccountMalformed", xdr["void"]()], ["createAccountUnderfunded", xdr["void"]()], ["createAccountLowReserve", xdr["void"]()], ["createAccountAlreadyExist", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("PaymentResultCode", { + paymentSuccess: 0, + paymentMalformed: -1, + paymentUnderfunded: -2, + paymentSrcNoTrust: -3, + paymentSrcNotAuthorized: -4, + paymentNoDestination: -5, + paymentNoTrust: -6, + paymentNotAuthorized: -7, + paymentLineFull: -8, + paymentNoIssuer: -9 + }); + xdr.union("PaymentResult", { + switchOn: xdr.lookup("PaymentResultCode"), + switchName: "code", + switches: [["paymentSuccess", xdr["void"]()], ["paymentMalformed", xdr["void"]()], ["paymentUnderfunded", xdr["void"]()], ["paymentSrcNoTrust", xdr["void"]()], ["paymentSrcNotAuthorized", xdr["void"]()], ["paymentNoDestination", xdr["void"]()], ["paymentNoTrust", xdr["void"]()], ["paymentNotAuthorized", xdr["void"]()], ["paymentLineFull", xdr["void"]()], ["paymentNoIssuer", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("PathPaymentStrictReceiveResultCode", { + pathPaymentStrictReceiveSuccess: 0, + pathPaymentStrictReceiveMalformed: -1, + pathPaymentStrictReceiveUnderfunded: -2, + pathPaymentStrictReceiveSrcNoTrust: -3, + pathPaymentStrictReceiveSrcNotAuthorized: -4, + pathPaymentStrictReceiveNoDestination: -5, + pathPaymentStrictReceiveNoTrust: -6, + pathPaymentStrictReceiveNotAuthorized: -7, + pathPaymentStrictReceiveLineFull: -8, + pathPaymentStrictReceiveNoIssuer: -9, + pathPaymentStrictReceiveTooFewOffers: -10, + pathPaymentStrictReceiveOfferCrossSelf: -11, + pathPaymentStrictReceiveOverSendmax: -12 + }); + xdr.struct("SimplePaymentResult", [["destination", xdr.lookup("AccountId")], ["asset", xdr.lookup("Asset")], ["amount", xdr.lookup("Int64")]]); + xdr.struct("PathPaymentStrictReceiveResultSuccess", [["offers", xdr.varArray(xdr.lookup("ClaimAtom"), 2147483647)], ["last", xdr.lookup("SimplePaymentResult")]]); + xdr.union("PathPaymentStrictReceiveResult", { + switchOn: xdr.lookup("PathPaymentStrictReceiveResultCode"), + switchName: "code", + switches: [["pathPaymentStrictReceiveSuccess", "success"], ["pathPaymentStrictReceiveMalformed", xdr["void"]()], ["pathPaymentStrictReceiveUnderfunded", xdr["void"]()], ["pathPaymentStrictReceiveSrcNoTrust", xdr["void"]()], ["pathPaymentStrictReceiveSrcNotAuthorized", xdr["void"]()], ["pathPaymentStrictReceiveNoDestination", xdr["void"]()], ["pathPaymentStrictReceiveNoTrust", xdr["void"]()], ["pathPaymentStrictReceiveNotAuthorized", xdr["void"]()], ["pathPaymentStrictReceiveLineFull", xdr["void"]()], ["pathPaymentStrictReceiveNoIssuer", "noIssuer"], ["pathPaymentStrictReceiveTooFewOffers", xdr["void"]()], ["pathPaymentStrictReceiveOfferCrossSelf", xdr["void"]()], ["pathPaymentStrictReceiveOverSendmax", xdr["void"]()]], + arms: { + success: xdr.lookup("PathPaymentStrictReceiveResultSuccess"), + noIssuer: xdr.lookup("Asset") + } + }); + xdr["enum"]("PathPaymentStrictSendResultCode", { + pathPaymentStrictSendSuccess: 0, + pathPaymentStrictSendMalformed: -1, + pathPaymentStrictSendUnderfunded: -2, + pathPaymentStrictSendSrcNoTrust: -3, + pathPaymentStrictSendSrcNotAuthorized: -4, + pathPaymentStrictSendNoDestination: -5, + pathPaymentStrictSendNoTrust: -6, + pathPaymentStrictSendNotAuthorized: -7, + pathPaymentStrictSendLineFull: -8, + pathPaymentStrictSendNoIssuer: -9, + pathPaymentStrictSendTooFewOffers: -10, + pathPaymentStrictSendOfferCrossSelf: -11, + pathPaymentStrictSendUnderDestmin: -12 + }); + xdr.struct("PathPaymentStrictSendResultSuccess", [["offers", xdr.varArray(xdr.lookup("ClaimAtom"), 2147483647)], ["last", xdr.lookup("SimplePaymentResult")]]); + xdr.union("PathPaymentStrictSendResult", { + switchOn: xdr.lookup("PathPaymentStrictSendResultCode"), + switchName: "code", + switches: [["pathPaymentStrictSendSuccess", "success"], ["pathPaymentStrictSendMalformed", xdr["void"]()], ["pathPaymentStrictSendUnderfunded", xdr["void"]()], ["pathPaymentStrictSendSrcNoTrust", xdr["void"]()], ["pathPaymentStrictSendSrcNotAuthorized", xdr["void"]()], ["pathPaymentStrictSendNoDestination", xdr["void"]()], ["pathPaymentStrictSendNoTrust", xdr["void"]()], ["pathPaymentStrictSendNotAuthorized", xdr["void"]()], ["pathPaymentStrictSendLineFull", xdr["void"]()], ["pathPaymentStrictSendNoIssuer", "noIssuer"], ["pathPaymentStrictSendTooFewOffers", xdr["void"]()], ["pathPaymentStrictSendOfferCrossSelf", xdr["void"]()], ["pathPaymentStrictSendUnderDestmin", xdr["void"]()]], + arms: { + success: xdr.lookup("PathPaymentStrictSendResultSuccess"), + noIssuer: xdr.lookup("Asset") + } + }); + xdr["enum"]("ManageSellOfferResultCode", { + manageSellOfferSuccess: 0, + manageSellOfferMalformed: -1, + manageSellOfferSellNoTrust: -2, + manageSellOfferBuyNoTrust: -3, + manageSellOfferSellNotAuthorized: -4, + manageSellOfferBuyNotAuthorized: -5, + manageSellOfferLineFull: -6, + manageSellOfferUnderfunded: -7, + manageSellOfferCrossSelf: -8, + manageSellOfferSellNoIssuer: -9, + manageSellOfferBuyNoIssuer: -10, + manageSellOfferNotFound: -11, + manageSellOfferLowReserve: -12 + }); + xdr["enum"]("ManageOfferEffect", { + manageOfferCreated: 0, + manageOfferUpdated: 1, + manageOfferDeleted: 2 + }); + xdr.union("ManageOfferSuccessResultOffer", { + switchOn: xdr.lookup("ManageOfferEffect"), + switchName: "effect", + switches: [["manageOfferCreated", "offer"], ["manageOfferUpdated", "offer"], ["manageOfferDeleted", xdr["void"]()]], + arms: { + offer: xdr.lookup("OfferEntry") + } + }); + xdr.struct("ManageOfferSuccessResult", [["offersClaimed", xdr.varArray(xdr.lookup("ClaimAtom"), 2147483647)], ["offer", xdr.lookup("ManageOfferSuccessResultOffer")]]); + xdr.union("ManageSellOfferResult", { + switchOn: xdr.lookup("ManageSellOfferResultCode"), + switchName: "code", + switches: [["manageSellOfferSuccess", "success"], ["manageSellOfferMalformed", xdr["void"]()], ["manageSellOfferSellNoTrust", xdr["void"]()], ["manageSellOfferBuyNoTrust", xdr["void"]()], ["manageSellOfferSellNotAuthorized", xdr["void"]()], ["manageSellOfferBuyNotAuthorized", xdr["void"]()], ["manageSellOfferLineFull", xdr["void"]()], ["manageSellOfferUnderfunded", xdr["void"]()], ["manageSellOfferCrossSelf", xdr["void"]()], ["manageSellOfferSellNoIssuer", xdr["void"]()], ["manageSellOfferBuyNoIssuer", xdr["void"]()], ["manageSellOfferNotFound", xdr["void"]()], ["manageSellOfferLowReserve", xdr["void"]()]], + arms: { + success: xdr.lookup("ManageOfferSuccessResult") + } + }); + xdr["enum"]("ManageBuyOfferResultCode", { + manageBuyOfferSuccess: 0, + manageBuyOfferMalformed: -1, + manageBuyOfferSellNoTrust: -2, + manageBuyOfferBuyNoTrust: -3, + manageBuyOfferSellNotAuthorized: -4, + manageBuyOfferBuyNotAuthorized: -5, + manageBuyOfferLineFull: -6, + manageBuyOfferUnderfunded: -7, + manageBuyOfferCrossSelf: -8, + manageBuyOfferSellNoIssuer: -9, + manageBuyOfferBuyNoIssuer: -10, + manageBuyOfferNotFound: -11, + manageBuyOfferLowReserve: -12 + }); + xdr.union("ManageBuyOfferResult", { + switchOn: xdr.lookup("ManageBuyOfferResultCode"), + switchName: "code", + switches: [["manageBuyOfferSuccess", "success"], ["manageBuyOfferMalformed", xdr["void"]()], ["manageBuyOfferSellNoTrust", xdr["void"]()], ["manageBuyOfferBuyNoTrust", xdr["void"]()], ["manageBuyOfferSellNotAuthorized", xdr["void"]()], ["manageBuyOfferBuyNotAuthorized", xdr["void"]()], ["manageBuyOfferLineFull", xdr["void"]()], ["manageBuyOfferUnderfunded", xdr["void"]()], ["manageBuyOfferCrossSelf", xdr["void"]()], ["manageBuyOfferSellNoIssuer", xdr["void"]()], ["manageBuyOfferBuyNoIssuer", xdr["void"]()], ["manageBuyOfferNotFound", xdr["void"]()], ["manageBuyOfferLowReserve", xdr["void"]()]], + arms: { + success: xdr.lookup("ManageOfferSuccessResult") + } + }); + xdr["enum"]("SetOptionsResultCode", { + setOptionsSuccess: 0, + setOptionsLowReserve: -1, + setOptionsTooManySigners: -2, + setOptionsBadFlags: -3, + setOptionsInvalidInflation: -4, + setOptionsCantChange: -5, + setOptionsUnknownFlag: -6, + setOptionsThresholdOutOfRange: -7, + setOptionsBadSigner: -8, + setOptionsInvalidHomeDomain: -9, + setOptionsAuthRevocableRequired: -10 + }); + xdr.union("SetOptionsResult", { + switchOn: xdr.lookup("SetOptionsResultCode"), + switchName: "code", + switches: [["setOptionsSuccess", xdr["void"]()], ["setOptionsLowReserve", xdr["void"]()], ["setOptionsTooManySigners", xdr["void"]()], ["setOptionsBadFlags", xdr["void"]()], ["setOptionsInvalidInflation", xdr["void"]()], ["setOptionsCantChange", xdr["void"]()], ["setOptionsUnknownFlag", xdr["void"]()], ["setOptionsThresholdOutOfRange", xdr["void"]()], ["setOptionsBadSigner", xdr["void"]()], ["setOptionsInvalidHomeDomain", xdr["void"]()], ["setOptionsAuthRevocableRequired", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("ChangeTrustResultCode", { + changeTrustSuccess: 0, + changeTrustMalformed: -1, + changeTrustNoIssuer: -2, + changeTrustInvalidLimit: -3, + changeTrustLowReserve: -4, + changeTrustSelfNotAllowed: -5, + changeTrustTrustLineMissing: -6, + changeTrustCannotDelete: -7, + changeTrustNotAuthMaintainLiabilities: -8 + }); + xdr.union("ChangeTrustResult", { + switchOn: xdr.lookup("ChangeTrustResultCode"), + switchName: "code", + switches: [["changeTrustSuccess", xdr["void"]()], ["changeTrustMalformed", xdr["void"]()], ["changeTrustNoIssuer", xdr["void"]()], ["changeTrustInvalidLimit", xdr["void"]()], ["changeTrustLowReserve", xdr["void"]()], ["changeTrustSelfNotAllowed", xdr["void"]()], ["changeTrustTrustLineMissing", xdr["void"]()], ["changeTrustCannotDelete", xdr["void"]()], ["changeTrustNotAuthMaintainLiabilities", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("AllowTrustResultCode", { + allowTrustSuccess: 0, + allowTrustMalformed: -1, + allowTrustNoTrustLine: -2, + allowTrustTrustNotRequired: -3, + allowTrustCantRevoke: -4, + allowTrustSelfNotAllowed: -5, + allowTrustLowReserve: -6 + }); + xdr.union("AllowTrustResult", { + switchOn: xdr.lookup("AllowTrustResultCode"), + switchName: "code", + switches: [["allowTrustSuccess", xdr["void"]()], ["allowTrustMalformed", xdr["void"]()], ["allowTrustNoTrustLine", xdr["void"]()], ["allowTrustTrustNotRequired", xdr["void"]()], ["allowTrustCantRevoke", xdr["void"]()], ["allowTrustSelfNotAllowed", xdr["void"]()], ["allowTrustLowReserve", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("AccountMergeResultCode", { + accountMergeSuccess: 0, + accountMergeMalformed: -1, + accountMergeNoAccount: -2, + accountMergeImmutableSet: -3, + accountMergeHasSubEntries: -4, + accountMergeSeqnumTooFar: -5, + accountMergeDestFull: -6, + accountMergeIsSponsor: -7 + }); + xdr.union("AccountMergeResult", { + switchOn: xdr.lookup("AccountMergeResultCode"), + switchName: "code", + switches: [["accountMergeSuccess", "sourceAccountBalance"], ["accountMergeMalformed", xdr["void"]()], ["accountMergeNoAccount", xdr["void"]()], ["accountMergeImmutableSet", xdr["void"]()], ["accountMergeHasSubEntries", xdr["void"]()], ["accountMergeSeqnumTooFar", xdr["void"]()], ["accountMergeDestFull", xdr["void"]()], ["accountMergeIsSponsor", xdr["void"]()]], + arms: { + sourceAccountBalance: xdr.lookup("Int64") + } + }); + xdr["enum"]("InflationResultCode", { + inflationSuccess: 0, + inflationNotTime: -1 + }); + xdr.struct("InflationPayout", [["destination", xdr.lookup("AccountId")], ["amount", xdr.lookup("Int64")]]); + xdr.union("InflationResult", { + switchOn: xdr.lookup("InflationResultCode"), + switchName: "code", + switches: [["inflationSuccess", "payouts"], ["inflationNotTime", xdr["void"]()]], + arms: { + payouts: xdr.varArray(xdr.lookup("InflationPayout"), 2147483647) + } + }); + xdr["enum"]("ManageDataResultCode", { + manageDataSuccess: 0, + manageDataNotSupportedYet: -1, + manageDataNameNotFound: -2, + manageDataLowReserve: -3, + manageDataInvalidName: -4 + }); + xdr.union("ManageDataResult", { + switchOn: xdr.lookup("ManageDataResultCode"), + switchName: "code", + switches: [["manageDataSuccess", xdr["void"]()], ["manageDataNotSupportedYet", xdr["void"]()], ["manageDataNameNotFound", xdr["void"]()], ["manageDataLowReserve", xdr["void"]()], ["manageDataInvalidName", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("BumpSequenceResultCode", { + bumpSequenceSuccess: 0, + bumpSequenceBadSeq: -1 + }); + xdr.union("BumpSequenceResult", { + switchOn: xdr.lookup("BumpSequenceResultCode"), + switchName: "code", + switches: [["bumpSequenceSuccess", xdr["void"]()], ["bumpSequenceBadSeq", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("CreateClaimableBalanceResultCode", { + createClaimableBalanceSuccess: 0, + createClaimableBalanceMalformed: -1, + createClaimableBalanceLowReserve: -2, + createClaimableBalanceNoTrust: -3, + createClaimableBalanceNotAuthorized: -4, + createClaimableBalanceUnderfunded: -5 + }); + xdr.union("CreateClaimableBalanceResult", { + switchOn: xdr.lookup("CreateClaimableBalanceResultCode"), + switchName: "code", + switches: [["createClaimableBalanceSuccess", "balanceId"], ["createClaimableBalanceMalformed", xdr["void"]()], ["createClaimableBalanceLowReserve", xdr["void"]()], ["createClaimableBalanceNoTrust", xdr["void"]()], ["createClaimableBalanceNotAuthorized", xdr["void"]()], ["createClaimableBalanceUnderfunded", xdr["void"]()]], + arms: { + balanceId: xdr.lookup("ClaimableBalanceId") + } + }); + xdr["enum"]("ClaimClaimableBalanceResultCode", { + claimClaimableBalanceSuccess: 0, + claimClaimableBalanceDoesNotExist: -1, + claimClaimableBalanceCannotClaim: -2, + claimClaimableBalanceLineFull: -3, + claimClaimableBalanceNoTrust: -4, + claimClaimableBalanceNotAuthorized: -5 + }); + xdr.union("ClaimClaimableBalanceResult", { + switchOn: xdr.lookup("ClaimClaimableBalanceResultCode"), + switchName: "code", + switches: [["claimClaimableBalanceSuccess", xdr["void"]()], ["claimClaimableBalanceDoesNotExist", xdr["void"]()], ["claimClaimableBalanceCannotClaim", xdr["void"]()], ["claimClaimableBalanceLineFull", xdr["void"]()], ["claimClaimableBalanceNoTrust", xdr["void"]()], ["claimClaimableBalanceNotAuthorized", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("BeginSponsoringFutureReservesResultCode", { + beginSponsoringFutureReservesSuccess: 0, + beginSponsoringFutureReservesMalformed: -1, + beginSponsoringFutureReservesAlreadySponsored: -2, + beginSponsoringFutureReservesRecursive: -3 + }); + xdr.union("BeginSponsoringFutureReservesResult", { + switchOn: xdr.lookup("BeginSponsoringFutureReservesResultCode"), + switchName: "code", + switches: [["beginSponsoringFutureReservesSuccess", xdr["void"]()], ["beginSponsoringFutureReservesMalformed", xdr["void"]()], ["beginSponsoringFutureReservesAlreadySponsored", xdr["void"]()], ["beginSponsoringFutureReservesRecursive", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("EndSponsoringFutureReservesResultCode", { + endSponsoringFutureReservesSuccess: 0, + endSponsoringFutureReservesNotSponsored: -1 + }); + xdr.union("EndSponsoringFutureReservesResult", { + switchOn: xdr.lookup("EndSponsoringFutureReservesResultCode"), + switchName: "code", + switches: [["endSponsoringFutureReservesSuccess", xdr["void"]()], ["endSponsoringFutureReservesNotSponsored", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("RevokeSponsorshipResultCode", { + revokeSponsorshipSuccess: 0, + revokeSponsorshipDoesNotExist: -1, + revokeSponsorshipNotSponsor: -2, + revokeSponsorshipLowReserve: -3, + revokeSponsorshipOnlyTransferable: -4, + revokeSponsorshipMalformed: -5 + }); + xdr.union("RevokeSponsorshipResult", { + switchOn: xdr.lookup("RevokeSponsorshipResultCode"), + switchName: "code", + switches: [["revokeSponsorshipSuccess", xdr["void"]()], ["revokeSponsorshipDoesNotExist", xdr["void"]()], ["revokeSponsorshipNotSponsor", xdr["void"]()], ["revokeSponsorshipLowReserve", xdr["void"]()], ["revokeSponsorshipOnlyTransferable", xdr["void"]()], ["revokeSponsorshipMalformed", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("ClawbackResultCode", { + clawbackSuccess: 0, + clawbackMalformed: -1, + clawbackNotClawbackEnabled: -2, + clawbackNoTrust: -3, + clawbackUnderfunded: -4 + }); + xdr.union("ClawbackResult", { + switchOn: xdr.lookup("ClawbackResultCode"), + switchName: "code", + switches: [["clawbackSuccess", xdr["void"]()], ["clawbackMalformed", xdr["void"]()], ["clawbackNotClawbackEnabled", xdr["void"]()], ["clawbackNoTrust", xdr["void"]()], ["clawbackUnderfunded", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("ClawbackClaimableBalanceResultCode", { + clawbackClaimableBalanceSuccess: 0, + clawbackClaimableBalanceDoesNotExist: -1, + clawbackClaimableBalanceNotIssuer: -2, + clawbackClaimableBalanceNotClawbackEnabled: -3 + }); + xdr.union("ClawbackClaimableBalanceResult", { + switchOn: xdr.lookup("ClawbackClaimableBalanceResultCode"), + switchName: "code", + switches: [["clawbackClaimableBalanceSuccess", xdr["void"]()], ["clawbackClaimableBalanceDoesNotExist", xdr["void"]()], ["clawbackClaimableBalanceNotIssuer", xdr["void"]()], ["clawbackClaimableBalanceNotClawbackEnabled", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("SetTrustLineFlagsResultCode", { + setTrustLineFlagsSuccess: 0, + setTrustLineFlagsMalformed: -1, + setTrustLineFlagsNoTrustLine: -2, + setTrustLineFlagsCantRevoke: -3, + setTrustLineFlagsInvalidState: -4, + setTrustLineFlagsLowReserve: -5 + }); + xdr.union("SetTrustLineFlagsResult", { + switchOn: xdr.lookup("SetTrustLineFlagsResultCode"), + switchName: "code", + switches: [["setTrustLineFlagsSuccess", xdr["void"]()], ["setTrustLineFlagsMalformed", xdr["void"]()], ["setTrustLineFlagsNoTrustLine", xdr["void"]()], ["setTrustLineFlagsCantRevoke", xdr["void"]()], ["setTrustLineFlagsInvalidState", xdr["void"]()], ["setTrustLineFlagsLowReserve", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("LiquidityPoolDepositResultCode", { + liquidityPoolDepositSuccess: 0, + liquidityPoolDepositMalformed: -1, + liquidityPoolDepositNoTrust: -2, + liquidityPoolDepositNotAuthorized: -3, + liquidityPoolDepositUnderfunded: -4, + liquidityPoolDepositLineFull: -5, + liquidityPoolDepositBadPrice: -6, + liquidityPoolDepositPoolFull: -7 + }); + xdr.union("LiquidityPoolDepositResult", { + switchOn: xdr.lookup("LiquidityPoolDepositResultCode"), + switchName: "code", + switches: [["liquidityPoolDepositSuccess", xdr["void"]()], ["liquidityPoolDepositMalformed", xdr["void"]()], ["liquidityPoolDepositNoTrust", xdr["void"]()], ["liquidityPoolDepositNotAuthorized", xdr["void"]()], ["liquidityPoolDepositUnderfunded", xdr["void"]()], ["liquidityPoolDepositLineFull", xdr["void"]()], ["liquidityPoolDepositBadPrice", xdr["void"]()], ["liquidityPoolDepositPoolFull", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("LiquidityPoolWithdrawResultCode", { + liquidityPoolWithdrawSuccess: 0, + liquidityPoolWithdrawMalformed: -1, + liquidityPoolWithdrawNoTrust: -2, + liquidityPoolWithdrawUnderfunded: -3, + liquidityPoolWithdrawLineFull: -4, + liquidityPoolWithdrawUnderMinimum: -5 + }); + xdr.union("LiquidityPoolWithdrawResult", { + switchOn: xdr.lookup("LiquidityPoolWithdrawResultCode"), + switchName: "code", + switches: [["liquidityPoolWithdrawSuccess", xdr["void"]()], ["liquidityPoolWithdrawMalformed", xdr["void"]()], ["liquidityPoolWithdrawNoTrust", xdr["void"]()], ["liquidityPoolWithdrawUnderfunded", xdr["void"]()], ["liquidityPoolWithdrawLineFull", xdr["void"]()], ["liquidityPoolWithdrawUnderMinimum", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("InvokeHostFunctionResultCode", { + invokeHostFunctionSuccess: 0, + invokeHostFunctionMalformed: -1, + invokeHostFunctionTrapped: -2, + invokeHostFunctionResourceLimitExceeded: -3, + invokeHostFunctionEntryArchived: -4, + invokeHostFunctionInsufficientRefundableFee: -5 + }); + xdr.union("InvokeHostFunctionResult", { + switchOn: xdr.lookup("InvokeHostFunctionResultCode"), + switchName: "code", + switches: [["invokeHostFunctionSuccess", "success"], ["invokeHostFunctionMalformed", xdr["void"]()], ["invokeHostFunctionTrapped", xdr["void"]()], ["invokeHostFunctionResourceLimitExceeded", xdr["void"]()], ["invokeHostFunctionEntryArchived", xdr["void"]()], ["invokeHostFunctionInsufficientRefundableFee", xdr["void"]()]], + arms: { + success: xdr.lookup("Hash") + } + }); + xdr["enum"]("ExtendFootprintTtlResultCode", { + extendFootprintTtlSuccess: 0, + extendFootprintTtlMalformed: -1, + extendFootprintTtlResourceLimitExceeded: -2, + extendFootprintTtlInsufficientRefundableFee: -3 + }); + xdr.union("ExtendFootprintTtlResult", { + switchOn: xdr.lookup("ExtendFootprintTtlResultCode"), + switchName: "code", + switches: [["extendFootprintTtlSuccess", xdr["void"]()], ["extendFootprintTtlMalformed", xdr["void"]()], ["extendFootprintTtlResourceLimitExceeded", xdr["void"]()], ["extendFootprintTtlInsufficientRefundableFee", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("RestoreFootprintResultCode", { + restoreFootprintSuccess: 0, + restoreFootprintMalformed: -1, + restoreFootprintResourceLimitExceeded: -2, + restoreFootprintInsufficientRefundableFee: -3 + }); + xdr.union("RestoreFootprintResult", { + switchOn: xdr.lookup("RestoreFootprintResultCode"), + switchName: "code", + switches: [["restoreFootprintSuccess", xdr["void"]()], ["restoreFootprintMalformed", xdr["void"]()], ["restoreFootprintResourceLimitExceeded", xdr["void"]()], ["restoreFootprintInsufficientRefundableFee", xdr["void"]()]], + arms: {} + }); + xdr["enum"]("OperationResultCode", { + opInner: 0, + opBadAuth: -1, + opNoAccount: -2, + opNotSupported: -3, + opTooManySubentries: -4, + opExceededWorkLimit: -5, + opTooManySponsoring: -6 + }); + xdr.union("OperationResultTr", { + switchOn: xdr.lookup("OperationType"), + switchName: "type", + switches: [["createAccount", "createAccountResult"], ["payment", "paymentResult"], ["pathPaymentStrictReceive", "pathPaymentStrictReceiveResult"], ["manageSellOffer", "manageSellOfferResult"], ["createPassiveSellOffer", "createPassiveSellOfferResult"], ["setOptions", "setOptionsResult"], ["changeTrust", "changeTrustResult"], ["allowTrust", "allowTrustResult"], ["accountMerge", "accountMergeResult"], ["inflation", "inflationResult"], ["manageData", "manageDataResult"], ["bumpSequence", "bumpSeqResult"], ["manageBuyOffer", "manageBuyOfferResult"], ["pathPaymentStrictSend", "pathPaymentStrictSendResult"], ["createClaimableBalance", "createClaimableBalanceResult"], ["claimClaimableBalance", "claimClaimableBalanceResult"], ["beginSponsoringFutureReserves", "beginSponsoringFutureReservesResult"], ["endSponsoringFutureReserves", "endSponsoringFutureReservesResult"], ["revokeSponsorship", "revokeSponsorshipResult"], ["clawback", "clawbackResult"], ["clawbackClaimableBalance", "clawbackClaimableBalanceResult"], ["setTrustLineFlags", "setTrustLineFlagsResult"], ["liquidityPoolDeposit", "liquidityPoolDepositResult"], ["liquidityPoolWithdraw", "liquidityPoolWithdrawResult"], ["invokeHostFunction", "invokeHostFunctionResult"], ["extendFootprintTtl", "extendFootprintTtlResult"], ["restoreFootprint", "restoreFootprintResult"]], + arms: { + createAccountResult: xdr.lookup("CreateAccountResult"), + paymentResult: xdr.lookup("PaymentResult"), + pathPaymentStrictReceiveResult: xdr.lookup("PathPaymentStrictReceiveResult"), + manageSellOfferResult: xdr.lookup("ManageSellOfferResult"), + createPassiveSellOfferResult: xdr.lookup("ManageSellOfferResult"), + setOptionsResult: xdr.lookup("SetOptionsResult"), + changeTrustResult: xdr.lookup("ChangeTrustResult"), + allowTrustResult: xdr.lookup("AllowTrustResult"), + accountMergeResult: xdr.lookup("AccountMergeResult"), + inflationResult: xdr.lookup("InflationResult"), + manageDataResult: xdr.lookup("ManageDataResult"), + bumpSeqResult: xdr.lookup("BumpSequenceResult"), + manageBuyOfferResult: xdr.lookup("ManageBuyOfferResult"), + pathPaymentStrictSendResult: xdr.lookup("PathPaymentStrictSendResult"), + createClaimableBalanceResult: xdr.lookup("CreateClaimableBalanceResult"), + claimClaimableBalanceResult: xdr.lookup("ClaimClaimableBalanceResult"), + beginSponsoringFutureReservesResult: xdr.lookup("BeginSponsoringFutureReservesResult"), + endSponsoringFutureReservesResult: xdr.lookup("EndSponsoringFutureReservesResult"), + revokeSponsorshipResult: xdr.lookup("RevokeSponsorshipResult"), + clawbackResult: xdr.lookup("ClawbackResult"), + clawbackClaimableBalanceResult: xdr.lookup("ClawbackClaimableBalanceResult"), + setTrustLineFlagsResult: xdr.lookup("SetTrustLineFlagsResult"), + liquidityPoolDepositResult: xdr.lookup("LiquidityPoolDepositResult"), + liquidityPoolWithdrawResult: xdr.lookup("LiquidityPoolWithdrawResult"), + invokeHostFunctionResult: xdr.lookup("InvokeHostFunctionResult"), + extendFootprintTtlResult: xdr.lookup("ExtendFootprintTtlResult"), + restoreFootprintResult: xdr.lookup("RestoreFootprintResult") + } + }); + xdr.union("OperationResult", { + switchOn: xdr.lookup("OperationResultCode"), + switchName: "code", + switches: [["opInner", "tr"], ["opBadAuth", xdr["void"]()], ["opNoAccount", xdr["void"]()], ["opNotSupported", xdr["void"]()], ["opTooManySubentries", xdr["void"]()], ["opExceededWorkLimit", xdr["void"]()], ["opTooManySponsoring", xdr["void"]()]], + arms: { + tr: xdr.lookup("OperationResultTr") + } + }); + xdr["enum"]("TransactionResultCode", { + txFeeBumpInnerSuccess: 1, + txSuccess: 0, + txFailed: -1, + txTooEarly: -2, + txTooLate: -3, + txMissingOperation: -4, + txBadSeq: -5, + txBadAuth: -6, + txInsufficientBalance: -7, + txNoAccount: -8, + txInsufficientFee: -9, + txBadAuthExtra: -10, + txInternalError: -11, + txNotSupported: -12, + txFeeBumpInnerFailed: -13, + txBadSponsorship: -14, + txBadMinSeqAgeOrGap: -15, + txMalformed: -16, + txSorobanInvalid: -17 + }); + xdr.union("InnerTransactionResultResult", { + switchOn: xdr.lookup("TransactionResultCode"), + switchName: "code", + switches: [["txSuccess", "results"], ["txFailed", "results"], ["txTooEarly", xdr["void"]()], ["txTooLate", xdr["void"]()], ["txMissingOperation", xdr["void"]()], ["txBadSeq", xdr["void"]()], ["txBadAuth", xdr["void"]()], ["txInsufficientBalance", xdr["void"]()], ["txNoAccount", xdr["void"]()], ["txInsufficientFee", xdr["void"]()], ["txBadAuthExtra", xdr["void"]()], ["txInternalError", xdr["void"]()], ["txNotSupported", xdr["void"]()], ["txBadSponsorship", xdr["void"]()], ["txBadMinSeqAgeOrGap", xdr["void"]()], ["txMalformed", xdr["void"]()], ["txSorobanInvalid", xdr["void"]()]], + arms: { + results: xdr.varArray(xdr.lookup("OperationResult"), 2147483647) + } + }); + xdr.union("InnerTransactionResultExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("InnerTransactionResult", [["feeCharged", xdr.lookup("Int64")], ["result", xdr.lookup("InnerTransactionResultResult")], ["ext", xdr.lookup("InnerTransactionResultExt")]]); + xdr.struct("InnerTransactionResultPair", [["transactionHash", xdr.lookup("Hash")], ["result", xdr.lookup("InnerTransactionResult")]]); + xdr.union("TransactionResultResult", { + switchOn: xdr.lookup("TransactionResultCode"), + switchName: "code", + switches: [["txFeeBumpInnerSuccess", "innerResultPair"], ["txFeeBumpInnerFailed", "innerResultPair"], ["txSuccess", "results"], ["txFailed", "results"], ["txTooEarly", xdr["void"]()], ["txTooLate", xdr["void"]()], ["txMissingOperation", xdr["void"]()], ["txBadSeq", xdr["void"]()], ["txBadAuth", xdr["void"]()], ["txInsufficientBalance", xdr["void"]()], ["txNoAccount", xdr["void"]()], ["txInsufficientFee", xdr["void"]()], ["txBadAuthExtra", xdr["void"]()], ["txInternalError", xdr["void"]()], ["txNotSupported", xdr["void"]()], ["txBadSponsorship", xdr["void"]()], ["txBadMinSeqAgeOrGap", xdr["void"]()], ["txMalformed", xdr["void"]()], ["txSorobanInvalid", xdr["void"]()]], + arms: { + innerResultPair: xdr.lookup("InnerTransactionResultPair"), + results: xdr.varArray(xdr.lookup("OperationResult"), 2147483647) + } + }); + xdr.union("TransactionResultExt", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr.struct("TransactionResult", [["feeCharged", xdr.lookup("Int64")], ["result", xdr.lookup("TransactionResultResult")], ["ext", xdr.lookup("TransactionResultExt")]]); + xdr.typedef("Hash", xdr.opaque(32)); + xdr.typedef("Uint256", xdr.opaque(32)); + xdr.typedef("Uint32", xdr.uint()); + xdr.typedef("Int32", xdr["int"]()); + xdr.typedef("Uint64", xdr.uhyper()); + xdr.typedef("Int64", xdr.hyper()); + xdr.typedef("TimePoint", xdr.lookup("Uint64")); + xdr.typedef("Duration", xdr.lookup("Uint64")); + xdr.union("ExtensionPoint", { + switchOn: xdr["int"](), + switchName: "v", + switches: [[0, xdr["void"]()]], + arms: {} + }); + xdr["enum"]("CryptoKeyType", { + keyTypeEd25519: 0, + keyTypePreAuthTx: 1, + keyTypeHashX: 2, + keyTypeEd25519SignedPayload: 3, + keyTypeMuxedEd25519: 256 + }); + xdr["enum"]("PublicKeyType", { + publicKeyTypeEd25519: 0 + }); + xdr["enum"]("SignerKeyType", { + signerKeyTypeEd25519: 0, + signerKeyTypePreAuthTx: 1, + signerKeyTypeHashX: 2, + signerKeyTypeEd25519SignedPayload: 3 + }); + xdr.union("PublicKey", { + switchOn: xdr.lookup("PublicKeyType"), + switchName: "type", + switches: [["publicKeyTypeEd25519", "ed25519"]], + arms: { + ed25519: xdr.lookup("Uint256") + } + }); + xdr.struct("SignerKeyEd25519SignedPayload", [["ed25519", xdr.lookup("Uint256")], ["payload", xdr.varOpaque(64)]]); + xdr.union("SignerKey", { + switchOn: xdr.lookup("SignerKeyType"), + switchName: "type", + switches: [["signerKeyTypeEd25519", "ed25519"], ["signerKeyTypePreAuthTx", "preAuthTx"], ["signerKeyTypeHashX", "hashX"], ["signerKeyTypeEd25519SignedPayload", "ed25519SignedPayload"]], + arms: { + ed25519: xdr.lookup("Uint256"), + preAuthTx: xdr.lookup("Uint256"), + hashX: xdr.lookup("Uint256"), + ed25519SignedPayload: xdr.lookup("SignerKeyEd25519SignedPayload") + } + }); + xdr.typedef("Signature", xdr.varOpaque(64)); + xdr.typedef("SignatureHint", xdr.opaque(4)); + xdr.typedef("NodeId", xdr.lookup("PublicKey")); + xdr.typedef("AccountId", xdr.lookup("PublicKey")); + xdr.typedef("ContractId", xdr.lookup("Hash")); + xdr.struct("Curve25519Secret", [["key", xdr.opaque(32)]]); + xdr.struct("Curve25519Public", [["key", xdr.opaque(32)]]); + xdr.struct("HmacSha256Key", [["key", xdr.opaque(32)]]); + xdr.struct("HmacSha256Mac", [["mac", xdr.opaque(32)]]); + xdr.struct("ShortHashSeed", [["seed", xdr.opaque(16)]]); + xdr["enum"]("BinaryFuseFilterType", { + binaryFuseFilter8Bit: 0, + binaryFuseFilter16Bit: 1, + binaryFuseFilter32Bit: 2 + }); + xdr.struct("SerializedBinaryFuseFilter", [["type", xdr.lookup("BinaryFuseFilterType")], ["inputHashSeed", xdr.lookup("ShortHashSeed")], ["filterSeed", xdr.lookup("ShortHashSeed")], ["segmentLength", xdr.lookup("Uint32")], ["segementLengthMask", xdr.lookup("Uint32")], ["segmentCount", xdr.lookup("Uint32")], ["segmentCountLength", xdr.lookup("Uint32")], ["fingerprintLength", xdr.lookup("Uint32")], ["fingerprints", xdr.varOpaque()]]); + xdr.typedef("PoolId", xdr.lookup("Hash")); + xdr["enum"]("ClaimableBalanceIdType", { + claimableBalanceIdTypeV0: 0 + }); + xdr.union("ClaimableBalanceId", { + switchOn: xdr.lookup("ClaimableBalanceIdType"), + switchName: "type", + switches: [["claimableBalanceIdTypeV0", "v0"]], + arms: { + v0: xdr.lookup("Hash") + } + }); + xdr["enum"]("ScValType", { + scvBool: 0, + scvVoid: 1, + scvError: 2, + scvU32: 3, + scvI32: 4, + scvU64: 5, + scvI64: 6, + scvTimepoint: 7, + scvDuration: 8, + scvU128: 9, + scvI128: 10, + scvU256: 11, + scvI256: 12, + scvBytes: 13, + scvString: 14, + scvSymbol: 15, + scvVec: 16, + scvMap: 17, + scvAddress: 18, + scvContractInstance: 19, + scvLedgerKeyContractInstance: 20, + scvLedgerKeyNonce: 21 + }); + xdr["enum"]("ScErrorType", { + sceContract: 0, + sceWasmVm: 1, + sceContext: 2, + sceStorage: 3, + sceObject: 4, + sceCrypto: 5, + sceEvents: 6, + sceBudget: 7, + sceValue: 8, + sceAuth: 9 + }); + xdr["enum"]("ScErrorCode", { + scecArithDomain: 0, + scecIndexBounds: 1, + scecInvalidInput: 2, + scecMissingValue: 3, + scecExistingValue: 4, + scecExceededLimit: 5, + scecInvalidAction: 6, + scecInternalError: 7, + scecUnexpectedType: 8, + scecUnexpectedSize: 9 + }); + xdr.union("ScError", { + switchOn: xdr.lookup("ScErrorType"), + switchName: "type", + switches: [["sceContract", "contractCode"], ["sceWasmVm", "code"], ["sceContext", "code"], ["sceStorage", "code"], ["sceObject", "code"], ["sceCrypto", "code"], ["sceEvents", "code"], ["sceBudget", "code"], ["sceValue", "code"], ["sceAuth", "code"]], + arms: { + contractCode: xdr.lookup("Uint32"), + code: xdr.lookup("ScErrorCode") + } + }); + xdr.struct("UInt128Parts", [["hi", xdr.lookup("Uint64")], ["lo", xdr.lookup("Uint64")]]); + xdr.struct("Int128Parts", [["hi", xdr.lookup("Int64")], ["lo", xdr.lookup("Uint64")]]); + xdr.struct("UInt256Parts", [["hiHi", xdr.lookup("Uint64")], ["hiLo", xdr.lookup("Uint64")], ["loHi", xdr.lookup("Uint64")], ["loLo", xdr.lookup("Uint64")]]); + xdr.struct("Int256Parts", [["hiHi", xdr.lookup("Int64")], ["hiLo", xdr.lookup("Uint64")], ["loHi", xdr.lookup("Uint64")], ["loLo", xdr.lookup("Uint64")]]); + xdr["enum"]("ContractExecutableType", { + contractExecutableWasm: 0, + contractExecutableStellarAsset: 1 + }); + xdr.union("ContractExecutable", { + switchOn: xdr.lookup("ContractExecutableType"), + switchName: "type", + switches: [["contractExecutableWasm", "wasmHash"], ["contractExecutableStellarAsset", xdr["void"]()]], + arms: { + wasmHash: xdr.lookup("Hash") + } + }); + xdr["enum"]("ScAddressType", { + scAddressTypeAccount: 0, + scAddressTypeContract: 1, + scAddressTypeMuxedAccount: 2, + scAddressTypeClaimableBalance: 3, + scAddressTypeLiquidityPool: 4 + }); + xdr.struct("MuxedEd25519Account", [["id", xdr.lookup("Uint64")], ["ed25519", xdr.lookup("Uint256")]]); + xdr.union("ScAddress", { + switchOn: xdr.lookup("ScAddressType"), + switchName: "type", + switches: [["scAddressTypeAccount", "accountId"], ["scAddressTypeContract", "contractId"], ["scAddressTypeMuxedAccount", "muxedAccount"], ["scAddressTypeClaimableBalance", "claimableBalanceId"], ["scAddressTypeLiquidityPool", "liquidityPoolId"]], + arms: { + accountId: xdr.lookup("AccountId"), + contractId: xdr.lookup("ContractId"), + muxedAccount: xdr.lookup("MuxedEd25519Account"), + claimableBalanceId: xdr.lookup("ClaimableBalanceId"), + liquidityPoolId: xdr.lookup("PoolId") + } + }); + xdr["const"]("SCSYMBOL_LIMIT", 32); + xdr.typedef("ScVec", xdr.varArray(xdr.lookup("ScVal"), 2147483647)); + xdr.typedef("ScMap", xdr.varArray(xdr.lookup("ScMapEntry"), 2147483647)); + xdr.typedef("ScBytes", xdr.varOpaque()); + xdr.typedef("ScString", xdr.string()); + xdr.typedef("ScSymbol", xdr.string(SCSYMBOL_LIMIT)); + xdr.struct("ScNonceKey", [["nonce", xdr.lookup("Int64")]]); + xdr.struct("ScContractInstance", [["executable", xdr.lookup("ContractExecutable")], ["storage", xdr.option(xdr.lookup("ScMap"))]]); + xdr.union("ScVal", { + switchOn: xdr.lookup("ScValType"), + switchName: "type", + switches: [["scvBool", "b"], ["scvVoid", xdr["void"]()], ["scvError", "error"], ["scvU32", "u32"], ["scvI32", "i32"], ["scvU64", "u64"], ["scvI64", "i64"], ["scvTimepoint", "timepoint"], ["scvDuration", "duration"], ["scvU128", "u128"], ["scvI128", "i128"], ["scvU256", "u256"], ["scvI256", "i256"], ["scvBytes", "bytes"], ["scvString", "str"], ["scvSymbol", "sym"], ["scvVec", "vec"], ["scvMap", "map"], ["scvAddress", "address"], ["scvContractInstance", "instance"], ["scvLedgerKeyContractInstance", xdr["void"]()], ["scvLedgerKeyNonce", "nonceKey"]], + arms: { + b: xdr.bool(), + error: xdr.lookup("ScError"), + u32: xdr.lookup("Uint32"), + i32: xdr.lookup("Int32"), + u64: xdr.lookup("Uint64"), + i64: xdr.lookup("Int64"), + timepoint: xdr.lookup("TimePoint"), + duration: xdr.lookup("Duration"), + u128: xdr.lookup("UInt128Parts"), + i128: xdr.lookup("Int128Parts"), + u256: xdr.lookup("UInt256Parts"), + i256: xdr.lookup("Int256Parts"), + bytes: xdr.lookup("ScBytes"), + str: xdr.lookup("ScString"), + sym: xdr.lookup("ScSymbol"), + vec: xdr.option(xdr.lookup("ScVec")), + map: xdr.option(xdr.lookup("ScMap")), + address: xdr.lookup("ScAddress"), + instance: xdr.lookup("ScContractInstance"), + nonceKey: xdr.lookup("ScNonceKey") + } + }); + xdr.struct("ScMapEntry", [["key", xdr.lookup("ScVal")], ["val", xdr.lookup("ScVal")]]); + xdr["enum"]("ScEnvMetaKind", { + scEnvMetaKindInterfaceVersion: 0 + }); + xdr.struct("ScEnvMetaEntryInterfaceVersion", [["protocol", xdr.lookup("Uint32")], ["preRelease", xdr.lookup("Uint32")]]); + xdr.union("ScEnvMetaEntry", { + switchOn: xdr.lookup("ScEnvMetaKind"), + switchName: "kind", + switches: [["scEnvMetaKindInterfaceVersion", "interfaceVersion"]], + arms: { + interfaceVersion: xdr.lookup("ScEnvMetaEntryInterfaceVersion") + } + }); + xdr.struct("ScMetaV0", [["key", xdr.string()], ["val", xdr.string()]]); + xdr["enum"]("ScMetaKind", { + scMetaV0: 0 + }); + xdr.union("ScMetaEntry", { + switchOn: xdr.lookup("ScMetaKind"), + switchName: "kind", + switches: [["scMetaV0", "v0"]], + arms: { + v0: xdr.lookup("ScMetaV0") + } + }); + xdr["const"]("SC_SPEC_DOC_LIMIT", 1024); + xdr["enum"]("ScSpecType", { + scSpecTypeVal: 0, + scSpecTypeBool: 1, + scSpecTypeVoid: 2, + scSpecTypeError: 3, + scSpecTypeU32: 4, + scSpecTypeI32: 5, + scSpecTypeU64: 6, + scSpecTypeI64: 7, + scSpecTypeTimepoint: 8, + scSpecTypeDuration: 9, + scSpecTypeU128: 10, + scSpecTypeI128: 11, + scSpecTypeU256: 12, + scSpecTypeI256: 13, + scSpecTypeBytes: 14, + scSpecTypeString: 16, + scSpecTypeSymbol: 17, + scSpecTypeAddress: 19, + scSpecTypeMuxedAddress: 20, + scSpecTypeOption: 1e3, + scSpecTypeResult: 1001, + scSpecTypeVec: 1002, + scSpecTypeMap: 1004, + scSpecTypeTuple: 1005, + scSpecTypeBytesN: 1006, + scSpecTypeUdt: 2e3 + }); + xdr.struct("ScSpecTypeOption", [["valueType", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecTypeResult", [["okType", xdr.lookup("ScSpecTypeDef")], ["errorType", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecTypeVec", [["elementType", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecTypeMap", [["keyType", xdr.lookup("ScSpecTypeDef")], ["valueType", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecTypeTuple", [["valueTypes", xdr.varArray(xdr.lookup("ScSpecTypeDef"), 12)]]); + xdr.struct("ScSpecTypeBytesN", [["n", xdr.lookup("Uint32")]]); + xdr.struct("ScSpecTypeUdt", [["name", xdr.string(60)]]); + xdr.union("ScSpecTypeDef", { + switchOn: xdr.lookup("ScSpecType"), + switchName: "type", + switches: [["scSpecTypeVal", xdr["void"]()], ["scSpecTypeBool", xdr["void"]()], ["scSpecTypeVoid", xdr["void"]()], ["scSpecTypeError", xdr["void"]()], ["scSpecTypeU32", xdr["void"]()], ["scSpecTypeI32", xdr["void"]()], ["scSpecTypeU64", xdr["void"]()], ["scSpecTypeI64", xdr["void"]()], ["scSpecTypeTimepoint", xdr["void"]()], ["scSpecTypeDuration", xdr["void"]()], ["scSpecTypeU128", xdr["void"]()], ["scSpecTypeI128", xdr["void"]()], ["scSpecTypeU256", xdr["void"]()], ["scSpecTypeI256", xdr["void"]()], ["scSpecTypeBytes", xdr["void"]()], ["scSpecTypeString", xdr["void"]()], ["scSpecTypeSymbol", xdr["void"]()], ["scSpecTypeAddress", xdr["void"]()], ["scSpecTypeMuxedAddress", xdr["void"]()], ["scSpecTypeOption", "option"], ["scSpecTypeResult", "result"], ["scSpecTypeVec", "vec"], ["scSpecTypeMap", "map"], ["scSpecTypeTuple", "tuple"], ["scSpecTypeBytesN", "bytesN"], ["scSpecTypeUdt", "udt"]], + arms: { + option: xdr.lookup("ScSpecTypeOption"), + result: xdr.lookup("ScSpecTypeResult"), + vec: xdr.lookup("ScSpecTypeVec"), + map: xdr.lookup("ScSpecTypeMap"), + tuple: xdr.lookup("ScSpecTypeTuple"), + bytesN: xdr.lookup("ScSpecTypeBytesN"), + udt: xdr.lookup("ScSpecTypeUdt") + } + }); + xdr.struct("ScSpecUdtStructFieldV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(30)], ["type", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecUdtStructV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["lib", xdr.string(80)], ["name", xdr.string(60)], ["fields", xdr.varArray(xdr.lookup("ScSpecUdtStructFieldV0"), 40)]]); + xdr.struct("ScSpecUdtUnionCaseVoidV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(60)]]); + xdr.struct("ScSpecUdtUnionCaseTupleV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(60)], ["type", xdr.varArray(xdr.lookup("ScSpecTypeDef"), 12)]]); + xdr["enum"]("ScSpecUdtUnionCaseV0Kind", { + scSpecUdtUnionCaseVoidV0: 0, + scSpecUdtUnionCaseTupleV0: 1 + }); + xdr.union("ScSpecUdtUnionCaseV0", { + switchOn: xdr.lookup("ScSpecUdtUnionCaseV0Kind"), + switchName: "kind", + switches: [["scSpecUdtUnionCaseVoidV0", "voidCase"], ["scSpecUdtUnionCaseTupleV0", "tupleCase"]], + arms: { + voidCase: xdr.lookup("ScSpecUdtUnionCaseVoidV0"), + tupleCase: xdr.lookup("ScSpecUdtUnionCaseTupleV0") + } + }); + xdr.struct("ScSpecUdtUnionV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["lib", xdr.string(80)], ["name", xdr.string(60)], ["cases", xdr.varArray(xdr.lookup("ScSpecUdtUnionCaseV0"), 50)]]); + xdr.struct("ScSpecUdtEnumCaseV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(60)], ["value", xdr.lookup("Uint32")]]); + xdr.struct("ScSpecUdtEnumV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["lib", xdr.string(80)], ["name", xdr.string(60)], ["cases", xdr.varArray(xdr.lookup("ScSpecUdtEnumCaseV0"), 50)]]); + xdr.struct("ScSpecUdtErrorEnumCaseV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(60)], ["value", xdr.lookup("Uint32")]]); + xdr.struct("ScSpecUdtErrorEnumV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["lib", xdr.string(80)], ["name", xdr.string(60)], ["cases", xdr.varArray(xdr.lookup("ScSpecUdtErrorEnumCaseV0"), 50)]]); + xdr.struct("ScSpecFunctionInputV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(30)], ["type", xdr.lookup("ScSpecTypeDef")]]); + xdr.struct("ScSpecFunctionV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.lookup("ScSymbol")], ["inputs", xdr.varArray(xdr.lookup("ScSpecFunctionInputV0"), 10)], ["outputs", xdr.varArray(xdr.lookup("ScSpecTypeDef"), 1)]]); + xdr["enum"]("ScSpecEventParamLocationV0", { + scSpecEventParamLocationData: 0, + scSpecEventParamLocationTopicList: 1 + }); + xdr.struct("ScSpecEventParamV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["name", xdr.string(30)], ["type", xdr.lookup("ScSpecTypeDef")], ["location", xdr.lookup("ScSpecEventParamLocationV0")]]); + xdr["enum"]("ScSpecEventDataFormat", { + scSpecEventDataFormatSingleValue: 0, + scSpecEventDataFormatVec: 1, + scSpecEventDataFormatMap: 2 + }); + xdr.struct("ScSpecEventV0", [["doc", xdr.string(SC_SPEC_DOC_LIMIT)], ["lib", xdr.string(80)], ["name", xdr.lookup("ScSymbol")], ["prefixTopics", xdr.varArray(xdr.lookup("ScSymbol"), 2)], ["params", xdr.varArray(xdr.lookup("ScSpecEventParamV0"), 50)], ["dataFormat", xdr.lookup("ScSpecEventDataFormat")]]); + xdr["enum"]("ScSpecEntryKind", { + scSpecEntryFunctionV0: 0, + scSpecEntryUdtStructV0: 1, + scSpecEntryUdtUnionV0: 2, + scSpecEntryUdtEnumV0: 3, + scSpecEntryUdtErrorEnumV0: 4, + scSpecEntryEventV0: 5 + }); + xdr.union("ScSpecEntry", { + switchOn: xdr.lookup("ScSpecEntryKind"), + switchName: "kind", + switches: [["scSpecEntryFunctionV0", "functionV0"], ["scSpecEntryUdtStructV0", "udtStructV0"], ["scSpecEntryUdtUnionV0", "udtUnionV0"], ["scSpecEntryUdtEnumV0", "udtEnumV0"], ["scSpecEntryUdtErrorEnumV0", "udtErrorEnumV0"], ["scSpecEntryEventV0", "eventV0"]], + arms: { + functionV0: xdr.lookup("ScSpecFunctionV0"), + udtStructV0: xdr.lookup("ScSpecUdtStructV0"), + udtUnionV0: xdr.lookup("ScSpecUdtUnionV0"), + udtEnumV0: xdr.lookup("ScSpecUdtEnumV0"), + udtErrorEnumV0: xdr.lookup("ScSpecUdtErrorEnumV0"), + eventV0: xdr.lookup("ScSpecEventV0") + } + }); + xdr.struct("ConfigSettingContractExecutionLanesV0", [["ledgerMaxTxCount", xdr.lookup("Uint32")]]); + xdr.struct("ConfigSettingContractComputeV0", [["ledgerMaxInstructions", xdr.lookup("Int64")], ["txMaxInstructions", xdr.lookup("Int64")], ["feeRatePerInstructionsIncrement", xdr.lookup("Int64")], ["txMemoryLimit", xdr.lookup("Uint32")]]); + xdr.struct("ConfigSettingContractParallelComputeV0", [["ledgerMaxDependentTxClusters", xdr.lookup("Uint32")]]); + xdr.struct("ConfigSettingContractLedgerCostV0", [["ledgerMaxDiskReadEntries", xdr.lookup("Uint32")], ["ledgerMaxDiskReadBytes", xdr.lookup("Uint32")], ["ledgerMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["ledgerMaxWriteBytes", xdr.lookup("Uint32")], ["txMaxDiskReadEntries", xdr.lookup("Uint32")], ["txMaxDiskReadBytes", xdr.lookup("Uint32")], ["txMaxWriteLedgerEntries", xdr.lookup("Uint32")], ["txMaxWriteBytes", xdr.lookup("Uint32")], ["feeDiskReadLedgerEntry", xdr.lookup("Int64")], ["feeWriteLedgerEntry", xdr.lookup("Int64")], ["feeDiskRead1Kb", xdr.lookup("Int64")], ["sorobanStateTargetSizeBytes", xdr.lookup("Int64")], ["rentFee1KbSorobanStateSizeLow", xdr.lookup("Int64")], ["rentFee1KbSorobanStateSizeHigh", xdr.lookup("Int64")], ["sorobanStateRentFeeGrowthFactor", xdr.lookup("Uint32")]]); + xdr.struct("ConfigSettingContractLedgerCostExtV0", [["txMaxFootprintEntries", xdr.lookup("Uint32")], ["feeWrite1Kb", xdr.lookup("Int64")]]); + xdr.struct("ConfigSettingContractHistoricalDataV0", [["feeHistorical1Kb", xdr.lookup("Int64")]]); + xdr.struct("ConfigSettingContractEventsV0", [["txMaxContractEventsSizeBytes", xdr.lookup("Uint32")], ["feeContractEvents1Kb", xdr.lookup("Int64")]]); + xdr.struct("ConfigSettingContractBandwidthV0", [["ledgerMaxTxsSizeBytes", xdr.lookup("Uint32")], ["txMaxSizeBytes", xdr.lookup("Uint32")], ["feeTxSize1Kb", xdr.lookup("Int64")]]); + xdr["enum"]("ContractCostType", { + wasmInsnExec: 0, + memAlloc: 1, + memCpy: 2, + memCmp: 3, + dispatchHostFunction: 4, + visitObject: 5, + valSer: 6, + valDeser: 7, + computeSha256Hash: 8, + computeEd25519PubKey: 9, + verifyEd25519Sig: 10, + vmInstantiation: 11, + vmCachedInstantiation: 12, + invokeVmFunction: 13, + computeKeccak256Hash: 14, + decodeEcdsaCurve256Sig: 15, + recoverEcdsaSecp256k1Key: 16, + int256AddSub: 17, + int256Mul: 18, + int256Div: 19, + int256Pow: 20, + int256Shift: 21, + chaCha20DrawBytes: 22, + parseWasmInstructions: 23, + parseWasmFunctions: 24, + parseWasmGlobals: 25, + parseWasmTableEntries: 26, + parseWasmTypes: 27, + parseWasmDataSegments: 28, + parseWasmElemSegments: 29, + parseWasmImports: 30, + parseWasmExports: 31, + parseWasmDataSegmentBytes: 32, + instantiateWasmInstructions: 33, + instantiateWasmFunctions: 34, + instantiateWasmGlobals: 35, + instantiateWasmTableEntries: 36, + instantiateWasmTypes: 37, + instantiateWasmDataSegments: 38, + instantiateWasmElemSegments: 39, + instantiateWasmImports: 40, + instantiateWasmExports: 41, + instantiateWasmDataSegmentBytes: 42, + sec1DecodePointUncompressed: 43, + verifyEcdsaSecp256r1Sig: 44, + bls12381EncodeFp: 45, + bls12381DecodeFp: 46, + bls12381G1CheckPointOnCurve: 47, + bls12381G1CheckPointInSubgroup: 48, + bls12381G2CheckPointOnCurve: 49, + bls12381G2CheckPointInSubgroup: 50, + bls12381G1ProjectiveToAffine: 51, + bls12381G2ProjectiveToAffine: 52, + bls12381G1Add: 53, + bls12381G1Mul: 54, + bls12381G1Msm: 55, + bls12381MapFpToG1: 56, + bls12381HashToG1: 57, + bls12381G2Add: 58, + bls12381G2Mul: 59, + bls12381G2Msm: 60, + bls12381MapFp2ToG2: 61, + bls12381HashToG2: 62, + bls12381Pairing: 63, + bls12381FrFromU256: 64, + bls12381FrToU256: 65, + bls12381FrAddSub: 66, + bls12381FrMul: 67, + bls12381FrPow: 68, + bls12381FrInv: 69 + }); + xdr.struct("ContractCostParamEntry", [["ext", xdr.lookup("ExtensionPoint")], ["constTerm", xdr.lookup("Int64")], ["linearTerm", xdr.lookup("Int64")]]); + xdr.struct("StateArchivalSettings", [["maxEntryTtl", xdr.lookup("Uint32")], ["minTemporaryTtl", xdr.lookup("Uint32")], ["minPersistentTtl", xdr.lookup("Uint32")], ["persistentRentRateDenominator", xdr.lookup("Int64")], ["tempRentRateDenominator", xdr.lookup("Int64")], ["maxEntriesToArchive", xdr.lookup("Uint32")], ["liveSorobanStateSizeWindowSampleSize", xdr.lookup("Uint32")], ["liveSorobanStateSizeWindowSamplePeriod", xdr.lookup("Uint32")], ["evictionScanSize", xdr.lookup("Uint32")], ["startingEvictionScanLevel", xdr.lookup("Uint32")]]); + xdr.struct("EvictionIterator", [["bucketListLevel", xdr.lookup("Uint32")], ["isCurrBucket", xdr.bool()], ["bucketFileOffset", xdr.lookup("Uint64")]]); + xdr.struct("ConfigSettingScpTiming", [["ledgerTargetCloseTimeMilliseconds", xdr.lookup("Uint32")], ["nominationTimeoutInitialMilliseconds", xdr.lookup("Uint32")], ["nominationTimeoutIncrementMilliseconds", xdr.lookup("Uint32")], ["ballotTimeoutInitialMilliseconds", xdr.lookup("Uint32")], ["ballotTimeoutIncrementMilliseconds", xdr.lookup("Uint32")]]); + xdr["const"]("CONTRACT_COST_COUNT_LIMIT", 1024); + xdr.typedef("ContractCostParams", xdr.varArray(xdr.lookup("ContractCostParamEntry"), xdr.lookup("CONTRACT_COST_COUNT_LIMIT"))); + xdr["enum"]("ConfigSettingId", { + configSettingContractMaxSizeBytes: 0, + configSettingContractComputeV0: 1, + configSettingContractLedgerCostV0: 2, + configSettingContractHistoricalDataV0: 3, + configSettingContractEventsV0: 4, + configSettingContractBandwidthV0: 5, + configSettingContractCostParamsCpuInstructions: 6, + configSettingContractCostParamsMemoryBytes: 7, + configSettingContractDataKeySizeBytes: 8, + configSettingContractDataEntrySizeBytes: 9, + configSettingStateArchival: 10, + configSettingContractExecutionLanes: 11, + configSettingLiveSorobanStateSizeWindow: 12, + configSettingEvictionIterator: 13, + configSettingContractParallelComputeV0: 14, + configSettingContractLedgerCostExtV0: 15, + configSettingScpTiming: 16 + }); + xdr.union("ConfigSettingEntry", { + switchOn: xdr.lookup("ConfigSettingId"), + switchName: "configSettingId", + switches: [["configSettingContractMaxSizeBytes", "contractMaxSizeBytes"], ["configSettingContractComputeV0", "contractCompute"], ["configSettingContractLedgerCostV0", "contractLedgerCost"], ["configSettingContractHistoricalDataV0", "contractHistoricalData"], ["configSettingContractEventsV0", "contractEvents"], ["configSettingContractBandwidthV0", "contractBandwidth"], ["configSettingContractCostParamsCpuInstructions", "contractCostParamsCpuInsns"], ["configSettingContractCostParamsMemoryBytes", "contractCostParamsMemBytes"], ["configSettingContractDataKeySizeBytes", "contractDataKeySizeBytes"], ["configSettingContractDataEntrySizeBytes", "contractDataEntrySizeBytes"], ["configSettingStateArchival", "stateArchivalSettings"], ["configSettingContractExecutionLanes", "contractExecutionLanes"], ["configSettingLiveSorobanStateSizeWindow", "liveSorobanStateSizeWindow"], ["configSettingEvictionIterator", "evictionIterator"], ["configSettingContractParallelComputeV0", "contractParallelCompute"], ["configSettingContractLedgerCostExtV0", "contractLedgerCostExt"], ["configSettingScpTiming", "contractScpTiming"]], + arms: { + contractMaxSizeBytes: xdr.lookup("Uint32"), + contractCompute: xdr.lookup("ConfigSettingContractComputeV0"), + contractLedgerCost: xdr.lookup("ConfigSettingContractLedgerCostV0"), + contractHistoricalData: xdr.lookup("ConfigSettingContractHistoricalDataV0"), + contractEvents: xdr.lookup("ConfigSettingContractEventsV0"), + contractBandwidth: xdr.lookup("ConfigSettingContractBandwidthV0"), + contractCostParamsCpuInsns: xdr.lookup("ContractCostParams"), + contractCostParamsMemBytes: xdr.lookup("ContractCostParams"), + contractDataKeySizeBytes: xdr.lookup("Uint32"), + contractDataEntrySizeBytes: xdr.lookup("Uint32"), + stateArchivalSettings: xdr.lookup("StateArchivalSettings"), + contractExecutionLanes: xdr.lookup("ConfigSettingContractExecutionLanesV0"), + liveSorobanStateSizeWindow: xdr.varArray(xdr.lookup("Uint64"), 2147483647), + evictionIterator: xdr.lookup("EvictionIterator"), + contractParallelCompute: xdr.lookup("ConfigSettingContractParallelComputeV0"), + contractLedgerCostExt: xdr.lookup("ConfigSettingContractLedgerCostExtV0"), + contractScpTiming: xdr.lookup("ConfigSettingScpTiming") + } + }); + xdr.struct("LedgerCloseMetaBatch", [["startSequence", xdr.lookup("Uint32")], ["endSequence", xdr.lookup("Uint32")], ["ledgerCloseMeta", xdr.varArray(xdr.lookup("LedgerCloseMeta"), 2147483647)]]); + }); + var _default = exports2["default"] = types; + } +}); + +// node_modules/@stellar/stellar-base/lib/xdr.js +var require_xdr2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/xdr.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2["default"] = void 0; + var _curr_generated = _interopRequireDefault(require_curr_generated()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var _default = exports2["default"] = _curr_generated["default"]; + } +}); + +// node_modules/@stellar/stellar-base/lib/jsxdr.js +var require_jsxdr = __commonJS({ + "node_modules/@stellar/stellar-base/lib/jsxdr.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2["default"] = void 0; + var _jsXdr = require_xdr(); + var cereal = { + XdrWriter: _jsXdr.XdrWriter, + XdrReader: _jsXdr.XdrReader + }; + var _default = exports2["default"] = cereal; + } +}); + +// node_modules/isarray/index.js +var require_isarray = __commonJS({ + "node_modules/isarray/index.js"(exports2, module2) { + var toString = {}.toString; + module2.exports = Array.isArray || function(arr) { + return toString.call(arr) == "[object Array]"; + }; + } +}); + +// node_modules/call-bound/index.js +var require_call_bound = __commonJS({ + "node_modules/call-bound/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var callBindBasic = require_call_bind_apply_helpers(); + var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]); + module2.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = ( + /** @type {(this: unknown, ...args: unknown[]) => unknown} */ + GetIntrinsic(name, !!allowMissing) + ); + if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { + return callBindBasic( + /** @type {const} */ + [intrinsic] + ); + } + return intrinsic; + }; + } +}); + +// node_modules/is-callable/index.js +var require_is_callable = __commonJS({ + "node_modules/is-callable/index.js"(exports2, module2) { + "use strict"; + var fnToStr = Function.prototype.toString; + var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply; + var badArrayLike; + var isCallableMarker; + if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") { + try { + badArrayLike = Object.defineProperty({}, "length", { + get: function() { + throw isCallableMarker; + } + }); + isCallableMarker = {}; + reflectApply(function() { + throw 42; + }, null, badArrayLike); + } catch (_) { + if (_ !== isCallableMarker) { + reflectApply = null; + } + } + } else { + reflectApply = null; + } + var constructorRegex = /^\s*class\b/; + var isES6ClassFn = function isES6ClassFunction(value) { + try { + var fnStr = fnToStr.call(value); + return constructorRegex.test(fnStr); + } catch (e) { + return false; + } + }; + var tryFunctionObject = function tryFunctionToStr(value) { + try { + if (isES6ClassFn(value)) { + return false; + } + fnToStr.call(value); + return true; + } catch (e) { + return false; + } + }; + var toStr = Object.prototype.toString; + var objectClass = "[object Object]"; + var fnClass = "[object Function]"; + var genClass = "[object GeneratorFunction]"; + var ddaClass = "[object HTMLAllCollection]"; + var ddaClass2 = "[object HTML document.all class]"; + var ddaClass3 = "[object HTMLCollection]"; + var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag; + var isIE68 = !(0 in [,]); + var isDDA = function isDocumentDotAll() { + return false; + }; + if (typeof document === "object") { + all = document.all; + if (toStr.call(all) === toStr.call(document.all)) { + isDDA = function isDocumentDotAll(value) { + if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) { + try { + var str = toStr.call(value); + return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null; + } catch (e) { + } + } + return false; + }; + } + } + var all; + module2.exports = reflectApply ? function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + try { + reflectApply(value, null, badArrayLike); + } catch (e) { + if (e !== isCallableMarker) { + return false; + } + } + return !isES6ClassFn(value) && tryFunctionObject(value); + } : function isCallable(value) { + if (isDDA(value)) { + return true; + } + if (!value) { + return false; + } + if (typeof value !== "function" && typeof value !== "object") { + return false; + } + if (hasToStringTag) { + return tryFunctionObject(value); + } + if (isES6ClassFn(value)) { + return false; + } + var strClass = toStr.call(value); + if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) { + return false; + } + return tryFunctionObject(value); + }; + } +}); + +// node_modules/for-each/index.js +var require_for_each = __commonJS({ + "node_modules/for-each/index.js"(exports2, module2) { + "use strict"; + var isCallable = require_is_callable(); + var toStr = Object.prototype.toString; + var hasOwnProperty = Object.prototype.hasOwnProperty; + var forEachArray = function forEachArray2(array, iterator, receiver) { + for (var i = 0, len = array.length; i < len; i++) { + if (hasOwnProperty.call(array, i)) { + if (receiver == null) { + iterator(array[i], i, array); + } else { + iterator.call(receiver, array[i], i, array); + } + } + } + }; + var forEachString = function forEachString2(string, iterator, receiver) { + for (var i = 0, len = string.length; i < len; i++) { + if (receiver == null) { + iterator(string.charAt(i), i, string); + } else { + iterator.call(receiver, string.charAt(i), i, string); + } + } + }; + var forEachObject = function forEachObject2(object, iterator, receiver) { + for (var k in object) { + if (hasOwnProperty.call(object, k)) { + if (receiver == null) { + iterator(object[k], k, object); + } else { + iterator.call(receiver, object[k], k, object); + } + } + } + }; + function isArray(x) { + return toStr.call(x) === "[object Array]"; + } + module2.exports = function forEach(list, iterator, thisArg) { + if (!isCallable(iterator)) { + throw new TypeError("iterator must be a function"); + } + var receiver; + if (arguments.length >= 3) { + receiver = thisArg; + } + if (isArray(list)) { + forEachArray(list, iterator, receiver); + } else if (typeof list === "string") { + forEachString(list, iterator, receiver); + } else { + forEachObject(list, iterator, receiver); + } + }; + } +}); + +// node_modules/possible-typed-array-names/index.js +var require_possible_typed_array_names = __commonJS({ + "node_modules/possible-typed-array-names/index.js"(exports2, module2) { + "use strict"; + module2.exports = [ + "Float16Array", + "Float32Array", + "Float64Array", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "BigInt64Array", + "BigUint64Array" + ]; + } +}); + +// node_modules/available-typed-arrays/index.js +var require_available_typed_arrays = __commonJS({ + "node_modules/available-typed-arrays/index.js"(exports2, module2) { + "use strict"; + var possibleNames = require_possible_typed_array_names(); + var g = typeof globalThis === "undefined" ? global : globalThis; + module2.exports = function availableTypedArrays() { + var out = []; + for (var i = 0; i < possibleNames.length; i++) { + if (typeof g[possibleNames[i]] === "function") { + out[out.length] = possibleNames[i]; + } + } + return out; + }; + } +}); + +// node_modules/define-data-property/index.js +var require_define_data_property = __commonJS({ + "node_modules/define-data-property/index.js"(exports2, module2) { + "use strict"; + var $defineProperty = require_es_define_property(); + var $SyntaxError = require_syntax2(); + var $TypeError = require_type8(); + var gopd = require_gopd(); + module2.exports = function defineDataProperty(obj, property, value) { + if (!obj || typeof obj !== "object" && typeof obj !== "function") { + throw new $TypeError("`obj` must be an object or a function`"); + } + if (typeof property !== "string" && typeof property !== "symbol") { + throw new $TypeError("`property` must be a string or a symbol`"); + } + if (arguments.length > 3 && typeof arguments[3] !== "boolean" && arguments[3] !== null) { + throw new $TypeError("`nonEnumerable`, if provided, must be a boolean or null"); + } + if (arguments.length > 4 && typeof arguments[4] !== "boolean" && arguments[4] !== null) { + throw new $TypeError("`nonWritable`, if provided, must be a boolean or null"); + } + if (arguments.length > 5 && typeof arguments[5] !== "boolean" && arguments[5] !== null) { + throw new $TypeError("`nonConfigurable`, if provided, must be a boolean or null"); + } + if (arguments.length > 6 && typeof arguments[6] !== "boolean") { + throw new $TypeError("`loose`, if provided, must be a boolean"); + } + var nonEnumerable = arguments.length > 3 ? arguments[3] : null; + var nonWritable = arguments.length > 4 ? arguments[4] : null; + var nonConfigurable = arguments.length > 5 ? arguments[5] : null; + var loose = arguments.length > 6 ? arguments[6] : false; + var desc = !!gopd && gopd(obj, property); + if ($defineProperty) { + $defineProperty(obj, property, { + configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, + enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, + value, + writable: nonWritable === null && desc ? desc.writable : !nonWritable + }); + } else if (loose || !nonEnumerable && !nonWritable && !nonConfigurable) { + obj[property] = value; + } else { + throw new $SyntaxError("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable."); + } + }; + } +}); + +// node_modules/has-property-descriptors/index.js +var require_has_property_descriptors = __commonJS({ + "node_modules/has-property-descriptors/index.js"(exports2, module2) { + "use strict"; + var $defineProperty = require_es_define_property(); + var hasPropertyDescriptors = function hasPropertyDescriptors2() { + return !!$defineProperty; + }; + hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { + if (!$defineProperty) { + return null; + } + try { + return $defineProperty([], "length", { value: 1 }).length !== 1; + } catch (e) { + return true; + } + }; + module2.exports = hasPropertyDescriptors; + } +}); + +// node_modules/set-function-length/index.js +var require_set_function_length = __commonJS({ + "node_modules/set-function-length/index.js"(exports2, module2) { + "use strict"; + var GetIntrinsic = require_get_intrinsic(); + var define2 = require_define_data_property(); + var hasDescriptors = require_has_property_descriptors()(); + var gOPD = require_gopd(); + var $TypeError = require_type8(); + var $floor = GetIntrinsic("%Math.floor%"); + module2.exports = function setFunctionLength(fn, length) { + if (typeof fn !== "function") { + throw new $TypeError("`fn` is not a function"); + } + if (typeof length !== "number" || length < 0 || length > 4294967295 || $floor(length) !== length) { + throw new $TypeError("`length` must be a positive 32-bit integer"); + } + var loose = arguments.length > 2 && !!arguments[2]; + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ("length" in fn && gOPD) { + var desc = gOPD(fn, "length"); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; + } + if (desc && !desc.writable) { + functionLengthIsWritable = false; + } + } + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define2( + /** @type {Parameters[0]} */ + fn, + "length", + length, + true, + true + ); + } else { + define2( + /** @type {Parameters[0]} */ + fn, + "length", + length + ); + } + } + return fn; + }; + } +}); + +// node_modules/call-bind-apply-helpers/applyBind.js +var require_applyBind = __commonJS({ + "node_modules/call-bind-apply-helpers/applyBind.js"(exports2, module2) { + "use strict"; + var bind = require_function_bind(); + var $apply = require_functionApply(); + var actualApply = require_actualApply(); + module2.exports = function applyBind() { + return actualApply(bind, $apply, arguments); + }; + } +}); + +// node_modules/call-bind/index.js +var require_call_bind = __commonJS({ + "node_modules/call-bind/index.js"(exports2, module2) { + "use strict"; + var setFunctionLength = require_set_function_length(); + var $defineProperty = require_es_define_property(); + var callBindBasic = require_call_bind_apply_helpers(); + var applyBind = require_applyBind(); + module2.exports = function callBind(originalFunction) { + var func = callBindBasic(arguments); + var adjustedLength = originalFunction.length - (arguments.length - 1); + return setFunctionLength( + func, + 1 + (adjustedLength > 0 ? adjustedLength : 0), + true + ); + }; + if ($defineProperty) { + $defineProperty(module2.exports, "apply", { value: applyBind }); + } else { + module2.exports.apply = applyBind; + } + } +}); + +// node_modules/which-typed-array/index.js +var require_which_typed_array = __commonJS({ + "node_modules/which-typed-array/index.js"(exports2, module2) { + "use strict"; + var forEach = require_for_each(); + var availableTypedArrays = require_available_typed_arrays(); + var callBind = require_call_bind(); + var callBound = require_call_bound(); + var gOPD = require_gopd(); + var getProto = require_get_proto(); + var $toString = callBound("Object.prototype.toString"); + var hasToStringTag = require_shams2()(); + var g = typeof globalThis === "undefined" ? global : globalThis; + var typedArrays = availableTypedArrays(); + var $slice = callBound("String.prototype.slice"); + var $indexOf = callBound("Array.prototype.indexOf", true) || function indexOf(array, value) { + for (var i = 0; i < array.length; i += 1) { + if (array[i] === value) { + return i; + } + } + return -1; + }; + var cache = { __proto__: null }; + if (hasToStringTag && gOPD && getProto) { + forEach(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + if (Symbol.toStringTag in arr && getProto) { + var proto = getProto(arr); + var descriptor = gOPD(proto, Symbol.toStringTag); + if (!descriptor && proto) { + var superProto = getProto(proto); + descriptor = gOPD(superProto, Symbol.toStringTag); + } + if (descriptor && descriptor.get) { + var bound = callBind(descriptor.get); + cache[ + /** @type {`$${import('.').TypedArrayName}`} */ + "$" + typedArray + ] = bound; + } + } + }); + } else { + forEach(typedArrays, function(typedArray) { + var arr = new g[typedArray](); + var fn = arr.slice || arr.set; + if (fn) { + var bound = ( + /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ + // @ts-expect-error TODO FIXME + callBind(fn) + ); + cache[ + /** @type {`$${import('.').TypedArrayName}`} */ + "$" + typedArray + ] = bound; + } + }); + } + var tryTypedArrays = function tryAllTypedArrays(value) { + var found = false; + forEach( + /** @type {Record<`\$${import('.').TypedArrayName}`, Getter>} */ + cache, + /** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */ + function(getter, typedArray) { + if (!found) { + try { + if ("$" + getter(value) === typedArray) { + found = /** @type {import('.').TypedArrayName} */ + $slice(typedArray, 1); + } + } catch (e) { + } + } + } + ); + return found; + }; + var trySlices = function tryAllSlices(value) { + var found = false; + forEach( + /** @type {Record<`\$${import('.').TypedArrayName}`, Getter>} */ + cache, + /** @type {(getter: Getter, name: `\$${import('.').TypedArrayName}`) => void} */ + function(getter, name) { + if (!found) { + try { + getter(value); + found = /** @type {import('.').TypedArrayName} */ + $slice(name, 1); + } catch (e) { + } + } + } + ); + return found; + }; + module2.exports = function whichTypedArray(value) { + if (!value || typeof value !== "object") { + return false; + } + if (!hasToStringTag) { + var tag = $slice($toString(value), 8, -1); + if ($indexOf(typedArrays, tag) > -1) { + return tag; + } + if (tag !== "Object") { + return false; + } + return trySlices(value); + } + if (!gOPD) { + return null; + } + return tryTypedArrays(value); + }; + } +}); + +// node_modules/is-typed-array/index.js +var require_is_typed_array = __commonJS({ + "node_modules/is-typed-array/index.js"(exports2, module2) { + "use strict"; + var whichTypedArray = require_which_typed_array(); + module2.exports = function isTypedArray(value) { + return !!whichTypedArray(value); + }; + } +}); + +// node_modules/typed-array-buffer/index.js +var require_typed_array_buffer = __commonJS({ + "node_modules/typed-array-buffer/index.js"(exports2, module2) { + "use strict"; + var $TypeError = require_type8(); + var callBound = require_call_bound(); + var $typedArrayBuffer = callBound("TypedArray.prototype.buffer", true); + var isTypedArray = require_is_typed_array(); + module2.exports = $typedArrayBuffer || function typedArrayBuffer(x) { + if (!isTypedArray(x)) { + throw new $TypeError("Not a Typed Array"); + } + return x.buffer; + }; + } +}); + +// node_modules/to-buffer/index.js +var require_to_buffer = __commonJS({ + "node_modules/to-buffer/index.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var isArray = require_isarray(); + var typedArrayBuffer = require_typed_array_buffer(); + var isView = ArrayBuffer.isView || function isView2(obj) { + try { + typedArrayBuffer(obj); + return true; + } catch (e) { + return false; + } + }; + var useUint8Array = typeof Uint8Array !== "undefined"; + var useArrayBuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined"; + var useFromArrayBuffer = useArrayBuffer && (Buffer2.prototype instanceof Uint8Array || Buffer2.TYPED_ARRAY_SUPPORT); + module2.exports = function toBuffer(data, encoding) { + if (Buffer2.isBuffer(data)) { + if (data.constructor && !("isBuffer" in data)) { + return Buffer2.from(data); + } + return data; + } + if (typeof data === "string") { + return Buffer2.from(data, encoding); + } + if (useArrayBuffer && isView(data)) { + if (data.byteLength === 0) { + return Buffer2.alloc(0); + } + if (useFromArrayBuffer) { + var res = Buffer2.from(data.buffer, data.byteOffset, data.byteLength); + if (res.byteLength === data.byteLength) { + return res; + } + } + var uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + var result = Buffer2.from(uint8); + if (result.length === data.byteLength) { + return result; + } + } + if (useUint8Array && data instanceof Uint8Array) { + return Buffer2.from(data); + } + var isArr = isArray(data); + if (isArr) { + for (var i = 0; i < data.length; i += 1) { + var x = data[i]; + if (typeof x !== "number" || x < 0 || x > 255 || ~~x !== x) { + throw new RangeError("Array items must be numbers in the range 0-255."); + } + } + } + if (isArr || Buffer2.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === "function" && data.constructor.isBuffer(data)) { + return Buffer2.from(data); + } + throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.'); + }; + } +}); + +// node_modules/sha.js/hash.js +var require_hash5 = __commonJS({ + "node_modules/sha.js/hash.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var toBuffer = require_to_buffer(); + function Hash3(blockSize, finalSize) { + this._block = Buffer2.alloc(blockSize); + this._finalSize = finalSize; + this._blockSize = blockSize; + this._len = 0; + } + Hash3.prototype.update = function(data, enc) { + data = toBuffer(data, enc || "utf8"); + var block = this._block; + var blockSize = this._blockSize; + var length = data.length; + var accum = this._len; + for (var offset = 0; offset < length; ) { + var assigned = accum % blockSize; + var remainder = Math.min(length - offset, blockSize - assigned); + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i]; + } + accum += remainder; + offset += remainder; + if (accum % blockSize === 0) { + this._update(block); + } + } + this._len += length; + return this; + }; + Hash3.prototype.digest = function(enc) { + var rem = this._len % this._blockSize; + this._block[rem] = 128; + this._block.fill(0, rem + 1); + if (rem >= this._finalSize) { + this._update(this._block); + this._block.fill(0); + } + var bits = this._len * 8; + if (bits <= 4294967295) { + this._block.writeUInt32BE(bits, this._blockSize - 4); + } else { + var lowBits = (bits & 4294967295) >>> 0; + var highBits = (bits - lowBits) / 4294967296; + this._block.writeUInt32BE(highBits, this._blockSize - 8); + this._block.writeUInt32BE(lowBits, this._blockSize - 4); + } + this._update(this._block); + var hash = this._hash(); + return enc ? hash.toString(enc) : hash; + }; + Hash3.prototype._update = function() { + throw new Error("_update must be implemented by subclass"); + }; + module2.exports = Hash3; + } +}); + +// node_modules/sha.js/sha.js +var require_sha3 = __commonJS({ + "node_modules/sha.js/sha.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var K = [ + 1518500249, + 1859775393, + 2400959708 | 0, + 3395469782 | 0 + ]; + var W = new Array(80); + function Sha() { + this.init(); + this._w = W; + Hash3.call(this, 64, 56); + } + inherits(Sha, Hash3); + Sha.prototype.init = function() { + this._a = 1732584193; + this._b = 4023233417; + this._c = 2562383102; + this._d = 271733878; + this._e = 3285377520; + return this; + }; + function rotl5(num) { + return num << 5 | num >>> 27; + } + function rotl30(num) { + return num << 30 | num >>> 2; + } + function ft(s, b, c, d) { + if (s === 0) { + return b & c | ~b & d; + } + if (s === 2) { + return b & c | b & d | c & d; + } + return b ^ c ^ d; + } + Sha.prototype._update = function(M) { + var w = this._w; + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + for (var i = 0; i < 16; ++i) { + w[i] = M.readInt32BE(i * 4); + } + for (; i < 80; ++i) { + w[i] = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]; + } + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s] | 0; + e = d; + d = c; + c = rotl30(b); + b = a; + a = t; + } + this._a = a + this._a | 0; + this._b = b + this._b | 0; + this._c = c + this._c | 0; + this._d = d + this._d | 0; + this._e = e + this._e | 0; + }; + Sha.prototype._hash = function() { + var H = Buffer2.allocUnsafe(20); + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + return H; + }; + module2.exports = Sha; + } +}); + +// node_modules/sha.js/sha1.js +var require_sha1 = __commonJS({ + "node_modules/sha.js/sha1.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var K = [ + 1518500249, + 1859775393, + 2400959708 | 0, + 3395469782 | 0 + ]; + var W = new Array(80); + function Sha1() { + this.init(); + this._w = W; + Hash3.call(this, 64, 56); + } + inherits(Sha1, Hash3); + Sha1.prototype.init = function() { + this._a = 1732584193; + this._b = 4023233417; + this._c = 2562383102; + this._d = 271733878; + this._e = 3285377520; + return this; + }; + function rotl1(num) { + return num << 1 | num >>> 31; + } + function rotl5(num) { + return num << 5 | num >>> 27; + } + function rotl30(num) { + return num << 30 | num >>> 2; + } + function ft(s, b, c, d) { + if (s === 0) { + return b & c | ~b & d; + } + if (s === 2) { + return b & c | b & d | c & d; + } + return b ^ c ^ d; + } + Sha1.prototype._update = function(M) { + var w = this._w; + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + for (var i = 0; i < 16; ++i) { + w[i] = M.readInt32BE(i * 4); + } + for (; i < 80; ++i) { + w[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]); + } + for (var j = 0; j < 80; ++j) { + var s = ~~(j / 20); + var t = rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s] | 0; + e = d; + d = c; + c = rotl30(b); + b = a; + a = t; + } + this._a = a + this._a | 0; + this._b = b + this._b | 0; + this._c = c + this._c | 0; + this._d = d + this._d | 0; + this._e = e + this._e | 0; + }; + Sha1.prototype._hash = function() { + var H = Buffer2.allocUnsafe(20); + H.writeInt32BE(this._a | 0, 0); + H.writeInt32BE(this._b | 0, 4); + H.writeInt32BE(this._c | 0, 8); + H.writeInt32BE(this._d | 0, 12); + H.writeInt32BE(this._e | 0, 16); + return H; + }; + module2.exports = Sha1; + } +}); + +// node_modules/sha.js/sha256.js +var require_sha2563 = __commonJS({ + "node_modules/sha.js/sha256.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var K = [ + 1116352408, + 1899447441, + 3049323471, + 3921009573, + 961987163, + 1508970993, + 2453635748, + 2870763221, + 3624381080, + 310598401, + 607225278, + 1426881987, + 1925078388, + 2162078206, + 2614888103, + 3248222580, + 3835390401, + 4022224774, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + 2554220882, + 2821834349, + 2952996808, + 3210313671, + 3336571891, + 3584528711, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + 2177026350, + 2456956037, + 2730485921, + 2820302411, + 3259730800, + 3345764771, + 3516065817, + 3600352804, + 4094571909, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + 2227730452, + 2361852424, + 2428436474, + 2756734187, + 3204031479, + 3329325298 + ]; + var W = new Array(64); + function Sha256() { + this.init(); + this._w = W; + Hash3.call(this, 64, 56); + } + inherits(Sha256, Hash3); + Sha256.prototype.init = function() { + this._a = 1779033703; + this._b = 3144134277; + this._c = 1013904242; + this._d = 2773480762; + this._e = 1359893119; + this._f = 2600822924; + this._g = 528734635; + this._h = 1541459225; + return this; + }; + function ch(x, y, z) { + return z ^ x & (y ^ z); + } + function maj(x, y, z) { + return x & y | z & (x | y); + } + function sigma0(x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10); + } + function sigma1(x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7); + } + function gamma0(x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3; + } + function gamma1(x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10; + } + Sha256.prototype._update = function(M) { + var w = this._w; + var a = this._a | 0; + var b = this._b | 0; + var c = this._c | 0; + var d = this._d | 0; + var e = this._e | 0; + var f = this._f | 0; + var g = this._g | 0; + var h = this._h | 0; + for (var i = 0; i < 16; ++i) { + w[i] = M.readInt32BE(i * 4); + } + for (; i < 64; ++i) { + w[i] = gamma1(w[i - 2]) + w[i - 7] + gamma0(w[i - 15]) + w[i - 16] | 0; + } + for (var j = 0; j < 64; ++j) { + var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + w[j] | 0; + var T2 = sigma0(a) + maj(a, b, c) | 0; + h = g; + g = f; + f = e; + e = d + T1 | 0; + d = c; + c = b; + b = a; + a = T1 + T2 | 0; + } + this._a = a + this._a | 0; + this._b = b + this._b | 0; + this._c = c + this._c | 0; + this._d = d + this._d | 0; + this._e = e + this._e | 0; + this._f = f + this._f | 0; + this._g = g + this._g | 0; + this._h = h + this._h | 0; + }; + Sha256.prototype._hash = function() { + var H = Buffer2.allocUnsafe(32); + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + H.writeInt32BE(this._h, 28); + return H; + }; + module2.exports = Sha256; + } +}); + +// node_modules/sha.js/sha224.js +var require_sha224 = __commonJS({ + "node_modules/sha.js/sha224.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var Sha256 = require_sha2563(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var W = new Array(64); + function Sha224() { + this.init(); + this._w = W; + Hash3.call(this, 64, 56); + } + inherits(Sha224, Sha256); + Sha224.prototype.init = function() { + this._a = 3238371032; + this._b = 914150663; + this._c = 812702999; + this._d = 4144912697; + this._e = 4290775857; + this._f = 1750603025; + this._g = 1694076839; + this._h = 3204075428; + return this; + }; + Sha224.prototype._hash = function() { + var H = Buffer2.allocUnsafe(28); + H.writeInt32BE(this._a, 0); + H.writeInt32BE(this._b, 4); + H.writeInt32BE(this._c, 8); + H.writeInt32BE(this._d, 12); + H.writeInt32BE(this._e, 16); + H.writeInt32BE(this._f, 20); + H.writeInt32BE(this._g, 24); + return H; + }; + module2.exports = Sha224; + } +}); + +// node_modules/sha.js/sha512.js +var require_sha5122 = __commonJS({ + "node_modules/sha.js/sha512.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var K = [ + 1116352408, + 3609767458, + 1899447441, + 602891725, + 3049323471, + 3964484399, + 3921009573, + 2173295548, + 961987163, + 4081628472, + 1508970993, + 3053834265, + 2453635748, + 2937671579, + 2870763221, + 3664609560, + 3624381080, + 2734883394, + 310598401, + 1164996542, + 607225278, + 1323610764, + 1426881987, + 3590304994, + 1925078388, + 4068182383, + 2162078206, + 991336113, + 2614888103, + 633803317, + 3248222580, + 3479774868, + 3835390401, + 2666613458, + 4022224774, + 944711139, + 264347078, + 2341262773, + 604807628, + 2007800933, + 770255983, + 1495990901, + 1249150122, + 1856431235, + 1555081692, + 3175218132, + 1996064986, + 2198950837, + 2554220882, + 3999719339, + 2821834349, + 766784016, + 2952996808, + 2566594879, + 3210313671, + 3203337956, + 3336571891, + 1034457026, + 3584528711, + 2466948901, + 113926993, + 3758326383, + 338241895, + 168717936, + 666307205, + 1188179964, + 773529912, + 1546045734, + 1294757372, + 1522805485, + 1396182291, + 2643833823, + 1695183700, + 2343527390, + 1986661051, + 1014477480, + 2177026350, + 1206759142, + 2456956037, + 344077627, + 2730485921, + 1290863460, + 2820302411, + 3158454273, + 3259730800, + 3505952657, + 3345764771, + 106217008, + 3516065817, + 3606008344, + 3600352804, + 1432725776, + 4094571909, + 1467031594, + 275423344, + 851169720, + 430227734, + 3100823752, + 506948616, + 1363258195, + 659060556, + 3750685593, + 883997877, + 3785050280, + 958139571, + 3318307427, + 1322822218, + 3812723403, + 1537002063, + 2003034995, + 1747873779, + 3602036899, + 1955562222, + 1575990012, + 2024104815, + 1125592928, + 2227730452, + 2716904306, + 2361852424, + 442776044, + 2428436474, + 593698344, + 2756734187, + 3733110249, + 3204031479, + 2999351573, + 3329325298, + 3815920427, + 3391569614, + 3928383900, + 3515267271, + 566280711, + 3940187606, + 3454069534, + 4118630271, + 4000239992, + 116418474, + 1914138554, + 174292421, + 2731055270, + 289380356, + 3203993006, + 460393269, + 320620315, + 685471733, + 587496836, + 852142971, + 1086792851, + 1017036298, + 365543100, + 1126000580, + 2618297676, + 1288033470, + 3409855158, + 1501505948, + 4234509866, + 1607167915, + 987167468, + 1816402316, + 1246189591 + ]; + var W = new Array(160); + function Sha512() { + this.init(); + this._w = W; + Hash3.call(this, 128, 112); + } + inherits(Sha512, Hash3); + Sha512.prototype.init = function() { + this._ah = 1779033703; + this._bh = 3144134277; + this._ch = 1013904242; + this._dh = 2773480762; + this._eh = 1359893119; + this._fh = 2600822924; + this._gh = 528734635; + this._hh = 1541459225; + this._al = 4089235720; + this._bl = 2227873595; + this._cl = 4271175723; + this._dl = 1595750129; + this._el = 2917565137; + this._fl = 725511199; + this._gl = 4215389547; + this._hl = 327033209; + return this; + }; + function Ch(x, y, z) { + return z ^ x & (y ^ z); + } + function maj(x, y, z) { + return x & y | z & (x | y); + } + function sigma0(x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25); + } + function sigma1(x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23); + } + function Gamma0(x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7; + } + function Gamma0l(x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25); + } + function Gamma1(x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6; + } + function Gamma1l(x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26); + } + function getCarry(a, b) { + return a >>> 0 < b >>> 0 ? 1 : 0; + } + Sha512.prototype._update = function(M) { + var w = this._w; + var ah = this._ah | 0; + var bh = this._bh | 0; + var ch = this._ch | 0; + var dh = this._dh | 0; + var eh = this._eh | 0; + var fh = this._fh | 0; + var gh = this._gh | 0; + var hh = this._hh | 0; + var al = this._al | 0; + var bl = this._bl | 0; + var cl = this._cl | 0; + var dl = this._dl | 0; + var el = this._el | 0; + var fl = this._fl | 0; + var gl = this._gl | 0; + var hl = this._hl | 0; + for (var i = 0; i < 32; i += 2) { + w[i] = M.readInt32BE(i * 4); + w[i + 1] = M.readInt32BE(i * 4 + 4); + } + for (; i < 160; i += 2) { + var xh = w[i - 15 * 2]; + var xl = w[i - 15 * 2 + 1]; + var gamma0 = Gamma0(xh, xl); + var gamma0l = Gamma0l(xl, xh); + xh = w[i - 2 * 2]; + xl = w[i - 2 * 2 + 1]; + var gamma1 = Gamma1(xh, xl); + var gamma1l = Gamma1l(xl, xh); + var Wi7h = w[i - 7 * 2]; + var Wi7l = w[i - 7 * 2 + 1]; + var Wi16h = w[i - 16 * 2]; + var Wi16l = w[i - 16 * 2 + 1]; + var Wil = gamma0l + Wi7l | 0; + var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0; + Wil = Wil + gamma1l | 0; + Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0; + Wil = Wil + Wi16l | 0; + Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0; + w[i] = Wih; + w[i + 1] = Wil; + } + for (var j = 0; j < 160; j += 2) { + Wih = w[j]; + Wil = w[j + 1]; + var majh = maj(ah, bh, ch); + var majl = maj(al, bl, cl); + var sigma0h = sigma0(ah, al); + var sigma0l = sigma0(al, ah); + var sigma1h = sigma1(eh, el); + var sigma1l = sigma1(el, eh); + var Kih = K[j]; + var Kil = K[j + 1]; + var chh = Ch(eh, fh, gh); + var chl = Ch(el, fl, gl); + var t1l = hl + sigma1l | 0; + var t1h = hh + sigma1h + getCarry(t1l, hl) | 0; + t1l = t1l + chl | 0; + t1h = t1h + chh + getCarry(t1l, chl) | 0; + t1l = t1l + Kil | 0; + t1h = t1h + Kih + getCarry(t1l, Kil) | 0; + t1l = t1l + Wil | 0; + t1h = t1h + Wih + getCarry(t1l, Wil) | 0; + var t2l = sigma0l + majl | 0; + var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0; + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = dl + t1l | 0; + eh = dh + t1h + getCarry(el, dl) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = t1l + t2l | 0; + ah = t1h + t2h + getCarry(al, t1l) | 0; + } + this._al = this._al + al | 0; + this._bl = this._bl + bl | 0; + this._cl = this._cl + cl | 0; + this._dl = this._dl + dl | 0; + this._el = this._el + el | 0; + this._fl = this._fl + fl | 0; + this._gl = this._gl + gl | 0; + this._hl = this._hl + hl | 0; + this._ah = this._ah + ah + getCarry(this._al, al) | 0; + this._bh = this._bh + bh + getCarry(this._bl, bl) | 0; + this._ch = this._ch + ch + getCarry(this._cl, cl) | 0; + this._dh = this._dh + dh + getCarry(this._dl, dl) | 0; + this._eh = this._eh + eh + getCarry(this._el, el) | 0; + this._fh = this._fh + fh + getCarry(this._fl, fl) | 0; + this._gh = this._gh + gh + getCarry(this._gl, gl) | 0; + this._hh = this._hh + hh + getCarry(this._hl, hl) | 0; + }; + Sha512.prototype._hash = function() { + var H = Buffer2.allocUnsafe(64); + function writeInt64BE(h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + writeInt64BE(this._gh, this._gl, 48); + writeInt64BE(this._hh, this._hl, 56); + return H; + }; + module2.exports = Sha512; + } +}); + +// node_modules/sha.js/sha384.js +var require_sha384 = __commonJS({ + "node_modules/sha.js/sha384.js"(exports2, module2) { + "use strict"; + var inherits = require_inherits(); + var SHA512 = require_sha5122(); + var Hash3 = require_hash5(); + var Buffer2 = require_safe_buffer().Buffer; + var W = new Array(160); + function Sha384() { + this.init(); + this._w = W; + Hash3.call(this, 128, 112); + } + inherits(Sha384, SHA512); + Sha384.prototype.init = function() { + this._ah = 3418070365; + this._bh = 1654270250; + this._ch = 2438529370; + this._dh = 355462360; + this._eh = 1731405415; + this._fh = 2394180231; + this._gh = 3675008525; + this._hh = 1203062813; + this._al = 3238371032; + this._bl = 914150663; + this._cl = 812702999; + this._dl = 4144912697; + this._el = 4290775857; + this._fl = 1750603025; + this._gl = 1694076839; + this._hl = 3204075428; + return this; + }; + Sha384.prototype._hash = function() { + var H = Buffer2.allocUnsafe(48); + function writeInt64BE(h, l, offset) { + H.writeInt32BE(h, offset); + H.writeInt32BE(l, offset + 4); + } + writeInt64BE(this._ah, this._al, 0); + writeInt64BE(this._bh, this._bl, 8); + writeInt64BE(this._ch, this._cl, 16); + writeInt64BE(this._dh, this._dl, 24); + writeInt64BE(this._eh, this._el, 32); + writeInt64BE(this._fh, this._fl, 40); + return H; + }; + module2.exports = Sha384; + } +}); + +// node_modules/sha.js/index.js +var require_sha4 = __commonJS({ + "node_modules/sha.js/index.js"(exports2, module2) { + "use strict"; + module2.exports = function SHA(algorithm) { + var alg = algorithm.toLowerCase(); + var Algorithm = module2.exports[alg]; + if (!Algorithm) { + throw new Error(alg + " is not supported (we accept pull requests)"); + } + return new Algorithm(); + }; + module2.exports.sha = require_sha3(); + module2.exports.sha1 = require_sha1(); + module2.exports.sha224 = require_sha224(); + module2.exports.sha256 = require_sha2563(); + module2.exports.sha384 = require_sha384(); + module2.exports.sha512 = require_sha5122(); + } +}); + +// node_modules/@stellar/stellar-base/lib/hashing.js +var require_hashing = __commonJS({ + "node_modules/@stellar/stellar-base/lib/hashing.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.hash = hash; + var _sha = require_sha4(); + function hash(data) { + var hasher = new _sha.sha256(); + hasher.update(data, "utf8"); + return hasher.digest(); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/signing.js +var require_signing = __commonJS({ + "node_modules/@stellar/stellar-base/lib/signing.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.generate = generate; + exports2.sign = sign; + exports2.verify = verify; + var _ed = require_ed25519(); + function generate(secretKey) { + return Buffer.from(_ed.ed25519.getPublicKey(secretKey)); + } + function sign(data, secretKey) { + return Buffer.from(_ed.ed25519.sign(Buffer.from(data), secretKey)); + } + function verify(data, signature, publicKey) { + return _ed.ed25519.verify(Buffer.from(signature), Buffer.from(data), Buffer.from(publicKey), { + zip215: false + }); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/util/util.js +var require_util5 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/util/util.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.trimEnd = void 0; + var trimEnd = exports2.trimEnd = function trimEnd2(input, _char) { + var isNumber = typeof input === "number"; + var str = String(input); + while (str.endsWith(_char)) { + str = str.slice(0, -1); + } + return isNumber ? Number(str) : str; + }; + } +}); + +// node_modules/base32.js/base32.js +var require_base322 = __commonJS({ + "node_modules/base32.js/base32.js"(exports2) { + "use strict"; + var charmap = function(alphabet, mappings) { + mappings || (mappings = {}); + alphabet.split("").forEach(function(c, i) { + if (!(c in mappings)) mappings[c] = i; + }); + return mappings; + }; + var rfc4648 = { + alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", + charmap: { + 0: 14, + 1: 8 + } + }; + rfc4648.charmap = charmap(rfc4648.alphabet, rfc4648.charmap); + var crockford = { + alphabet: "0123456789ABCDEFGHJKMNPQRSTVWXYZ", + charmap: { + O: 0, + I: 1, + L: 1 + } + }; + crockford.charmap = charmap(crockford.alphabet, crockford.charmap); + var base32hex = { + alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV", + charmap: {} + }; + base32hex.charmap = charmap(base32hex.alphabet, base32hex.charmap); + function Decoder(options) { + this.buf = []; + this.shift = 8; + this.carry = 0; + if (options) { + switch (options.type) { + case "rfc4648": + this.charmap = exports2.rfc4648.charmap; + break; + case "crockford": + this.charmap = exports2.crockford.charmap; + break; + case "base32hex": + this.charmap = exports2.base32hex.charmap; + break; + default: + throw new Error("invalid type"); + } + if (options.charmap) this.charmap = options.charmap; + } + } + Decoder.prototype.charmap = rfc4648.charmap; + Decoder.prototype.write = function(str) { + var charmap2 = this.charmap; + var buf = this.buf; + var shift = this.shift; + var carry = this.carry; + str.toUpperCase().split("").forEach(function(char) { + if (char == "=") return; + var symbol = charmap2[char] & 255; + shift -= 5; + if (shift > 0) { + carry |= symbol << shift; + } else if (shift < 0) { + buf.push(carry | symbol >> -shift); + shift += 8; + carry = symbol << shift & 255; + } else { + buf.push(carry | symbol); + shift = 8; + carry = 0; + } + }); + this.shift = shift; + this.carry = carry; + return this; + }; + Decoder.prototype.finalize = function(str) { + if (str) { + this.write(str); + } + if (this.shift !== 8 && this.carry !== 0) { + this.buf.push(this.carry); + this.shift = 8; + this.carry = 0; + } + return this.buf; + }; + function Encoder(options) { + this.buf = ""; + this.shift = 3; + this.carry = 0; + if (options) { + switch (options.type) { + case "rfc4648": + this.alphabet = exports2.rfc4648.alphabet; + break; + case "crockford": + this.alphabet = exports2.crockford.alphabet; + break; + case "base32hex": + this.alphabet = exports2.base32hex.alphabet; + break; + default: + throw new Error("invalid type"); + } + if (options.alphabet) this.alphabet = options.alphabet; + else if (options.lc) this.alphabet = this.alphabet.toLowerCase(); + } + } + Encoder.prototype.alphabet = rfc4648.alphabet; + Encoder.prototype.write = function(buf) { + var shift = this.shift; + var carry = this.carry; + var symbol; + var byte; + var i; + for (i = 0; i < buf.length; i++) { + byte = buf[i]; + symbol = carry | byte >> shift; + this.buf += this.alphabet[symbol & 31]; + if (shift > 5) { + shift -= 5; + symbol = byte >> shift; + this.buf += this.alphabet[symbol & 31]; + } + shift = 5 - shift; + carry = byte << shift; + shift = 8 - shift; + } + this.shift = shift; + this.carry = carry; + return this; + }; + Encoder.prototype.finalize = function(buf) { + if (buf) { + this.write(buf); + } + if (this.shift !== 3) { + this.buf += this.alphabet[this.carry & 31]; + this.shift = 3; + this.carry = 0; + } + return this.buf; + }; + exports2.encode = function(buf, options) { + return new Encoder(options).finalize(buf); + }; + exports2.decode = function(str, options) { + return new Decoder(options).finalize(str); + }; + exports2.Decoder = Decoder; + exports2.Encoder = Encoder; + exports2.charmap = charmap; + exports2.crockford = crockford; + exports2.rfc4648 = rfc4648; + exports2.base32hex = base32hex; + } +}); + +// node_modules/base32.js/index.js +var require_base323 = __commonJS({ + "node_modules/base32.js/index.js"(exports2, module2) { + "use strict"; + var base32 = require_base322(); + var finalizeDecode = base32.Decoder.prototype.finalize; + base32.Decoder.prototype.finalize = function(buf) { + var bytes = finalizeDecode.call(this, buf); + return new Buffer(bytes); + }; + module2.exports = base32; + } +}); + +// node_modules/@stellar/stellar-base/lib/util/checksum.js +var require_checksum = __commonJS({ + "node_modules/@stellar/stellar-base/lib/util/checksum.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.verifyChecksum = verifyChecksum; + function verifyChecksum(expected, actual) { + if (expected.length !== actual.length) { + return false; + } + if (expected.length === 0) { + return true; + } + for (var i = 0; i < expected.length; i += 1) { + if (expected[i] !== actual[i]) { + return false; + } + } + return true; + } + } +}); + +// node_modules/@stellar/stellar-base/lib/strkey.js +var require_strkey = __commonJS({ + "node_modules/@stellar/stellar-base/lib/strkey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StrKey = void 0; + exports2.decodeCheck = decodeCheck; + exports2.encodeCheck = encodeCheck; + var _base = _interopRequireDefault(require_base323()); + var _checksum = require_checksum(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var versionBytes = { + ed25519PublicKey: 6 << 3, + // G (when encoded in base32) + ed25519SecretSeed: 18 << 3, + // S + med25519PublicKey: 12 << 3, + // M + preAuthTx: 19 << 3, + // T + sha256Hash: 23 << 3, + // X + signedPayload: 15 << 3, + // P + contract: 2 << 3, + // C + liquidityPool: 11 << 3, + // L + claimableBalance: 1 << 3 + // B + }; + var strkeyTypes = { + G: "ed25519PublicKey", + S: "ed25519SecretSeed", + M: "med25519PublicKey", + T: "preAuthTx", + X: "sha256Hash", + P: "signedPayload", + C: "contract", + L: "liquidityPool", + B: "claimableBalance" + }; + var StrKey = exports2.StrKey = /* @__PURE__ */ function() { + function StrKey2() { + _classCallCheck(this, StrKey2); + } + return _createClass(StrKey2, null, [{ + key: "encodeEd25519PublicKey", + value: ( + /** + * Encodes `data` to strkey ed25519 public key. + * + * @param {Buffer} data raw data to encode + * @returns {string} "G..." representation of the key + */ + function encodeEd25519PublicKey(data) { + return encodeCheck("ed25519PublicKey", data); + } + ) + /** + * Decodes strkey ed25519 public key to raw data. + * + * If the parameter is a muxed account key ("M..."), this will only encode it + * as a basic Ed25519 key (as if in "G..." format). + * + * @param {string} data "G..." (or "M...") key representation to decode + * @returns {Buffer} raw key + */ + }, { + key: "decodeEd25519PublicKey", + value: function decodeEd25519PublicKey(data) { + return decodeCheck("ed25519PublicKey", data); + } + /** + * Returns true if the given Stellar public key is a valid ed25519 public key. + * @param {string} publicKey public key to check + * @returns {boolean} + */ + }, { + key: "isValidEd25519PublicKey", + value: function isValidEd25519PublicKey(publicKey) { + return isValid("ed25519PublicKey", publicKey); + } + /** + * Encodes data to strkey ed25519 seed. + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeEd25519SecretSeed", + value: function encodeEd25519SecretSeed(data) { + return encodeCheck("ed25519SecretSeed", data); + } + /** + * Decodes strkey ed25519 seed to raw data. + * @param {string} address data to decode + * @returns {Buffer} + */ + }, { + key: "decodeEd25519SecretSeed", + value: function decodeEd25519SecretSeed(address) { + return decodeCheck("ed25519SecretSeed", address); + } + /** + * Returns true if the given Stellar secret key is a valid ed25519 secret seed. + * @param {string} seed seed to check + * @returns {boolean} + */ + }, { + key: "isValidEd25519SecretSeed", + value: function isValidEd25519SecretSeed(seed) { + return isValid("ed25519SecretSeed", seed); + } + /** + * Encodes data to strkey med25519 public key. + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeMed25519PublicKey", + value: function encodeMed25519PublicKey(data) { + return encodeCheck("med25519PublicKey", data); + } + /** + * Decodes strkey med25519 public key to raw data. + * @param {string} address data to decode + * @returns {Buffer} + */ + }, { + key: "decodeMed25519PublicKey", + value: function decodeMed25519PublicKey(address) { + return decodeCheck("med25519PublicKey", address); + } + /** + * Returns true if the given Stellar public key is a valid med25519 public key. + * @param {string} publicKey public key to check + * @returns {boolean} + */ + }, { + key: "isValidMed25519PublicKey", + value: function isValidMed25519PublicKey(publicKey) { + return isValid("med25519PublicKey", publicKey); + } + /** + * Encodes data to strkey preAuthTx. + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodePreAuthTx", + value: function encodePreAuthTx(data) { + return encodeCheck("preAuthTx", data); + } + /** + * Decodes strkey PreAuthTx to raw data. + * @param {string} address data to decode + * @returns {Buffer} + */ + }, { + key: "decodePreAuthTx", + value: function decodePreAuthTx(address) { + return decodeCheck("preAuthTx", address); + } + /** + * Encodes data to strkey sha256 hash. + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeSha256Hash", + value: function encodeSha256Hash(data) { + return encodeCheck("sha256Hash", data); + } + /** + * Decodes strkey sha256 hash to raw data. + * @param {string} address data to decode + * @returns {Buffer} + */ + }, { + key: "decodeSha256Hash", + value: function decodeSha256Hash(address) { + return decodeCheck("sha256Hash", address); + } + /** + * Encodes raw data to strkey signed payload (P...). + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeSignedPayload", + value: function encodeSignedPayload(data) { + return encodeCheck("signedPayload", data); + } + /** + * Decodes strkey signed payload (P...) to raw data. + * @param {string} address address to decode + * @returns {Buffer} + */ + }, { + key: "decodeSignedPayload", + value: function decodeSignedPayload(address) { + return decodeCheck("signedPayload", address); + } + /** + * Checks validity of alleged signed payload (P...) strkey address. + * @param {string} address signer key to check + * @returns {boolean} + */ + }, { + key: "isValidSignedPayload", + value: function isValidSignedPayload(address) { + return isValid("signedPayload", address); + } + /** + * Encodes raw data to strkey contract (C...). + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeContract", + value: function encodeContract(data) { + return encodeCheck("contract", data); + } + /** + * Decodes strkey contract (C...) to raw data. + * @param {string} address address to decode + * @returns {Buffer} + */ + }, { + key: "decodeContract", + value: function decodeContract(address) { + return decodeCheck("contract", address); + } + /** + * Checks validity of alleged contract (C...) strkey address. + * @param {string} address signer key to check + * @returns {boolean} + */ + }, { + key: "isValidContract", + value: function isValidContract(address) { + return isValid("contract", address); + } + /** + * Encodes raw data to strkey claimable balance (B...). + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeClaimableBalance", + value: function encodeClaimableBalance(data) { + return encodeCheck("claimableBalance", data); + } + /** + * Decodes strkey contract (B...) to raw data. + * @param {string} address balance to decode + * @returns {Buffer} + */ + }, { + key: "decodeClaimableBalance", + value: function decodeClaimableBalance(address) { + return decodeCheck("claimableBalance", address); + } + /** + * Checks validity of alleged claimable balance (B...) strkey address. + * @param {string} address balance to check + * @returns {boolean} + */ + }, { + key: "isValidClaimableBalance", + value: function isValidClaimableBalance(address) { + return isValid("claimableBalance", address); + } + /** + * Encodes raw data to strkey liquidity pool (L...). + * @param {Buffer} data data to encode + * @returns {string} + */ + }, { + key: "encodeLiquidityPool", + value: function encodeLiquidityPool(data) { + return encodeCheck("liquidityPool", data); + } + /** + * Decodes strkey liquidity pool (L...) to raw data. + * @param {string} address address to decode + * @returns {Buffer} + */ + }, { + key: "decodeLiquidityPool", + value: function decodeLiquidityPool(address) { + return decodeCheck("liquidityPool", address); + } + /** + * Checks validity of alleged liquidity pool (L...) strkey address. + * @param {string} address pool to check + * @returns {boolean} + */ + }, { + key: "isValidLiquidityPool", + value: function isValidLiquidityPool(address) { + return isValid("liquidityPool", address); + } + }, { + key: "getVersionByteForPrefix", + value: function getVersionByteForPrefix(address) { + return strkeyTypes[address[0]]; + } + }]); + }(); + _defineProperty(StrKey, "types", strkeyTypes); + function isValid(versionByteName, encoded) { + if (typeof encoded !== "string") { + return false; + } + switch (versionByteName) { + case "ed25519PublicKey": + // falls through + case "ed25519SecretSeed": + // falls through + case "preAuthTx": + // falls through + case "sha256Hash": + // falls through + case "contract": + // falls through + case "liquidityPool": + if (encoded.length !== 56) { + return false; + } + break; + case "claimableBalance": + if (encoded.length !== 58) { + return false; + } + break; + case "med25519PublicKey": + if (encoded.length !== 69) { + return false; + } + break; + case "signedPayload": + if (encoded.length < 56 || encoded.length > 165) { + return false; + } + break; + default: + return false; + } + var decoded = ""; + try { + decoded = decodeCheck(versionByteName, encoded); + } catch (err2) { + return false; + } + switch (versionByteName) { + case "ed25519PublicKey": + // falls through + case "ed25519SecretSeed": + // falls through + case "preAuthTx": + // falls through + case "sha256Hash": + // falls through + case "contract": + case "liquidityPool": + return decoded.length === 32; + case "claimableBalance": + return decoded.length === 32 + 1; + // +1 byte for discriminant + case "med25519PublicKey": + return decoded.length === 40; + // +8 bytes for the ID + case "signedPayload": + return ( + // 32 for the signer, +4 for the payload size, then either +4 for the + // min or +64 for the max payload + decoded.length >= 32 + 4 + 4 && decoded.length <= 32 + 4 + 64 + ); + default: + return false; + } + } + function decodeCheck(versionByteName, encoded) { + if (typeof encoded !== "string") { + throw new TypeError("encoded argument must be of type String"); + } + var decoded = _base["default"].decode(encoded); + var versionByte = decoded[0]; + var payload = decoded.slice(0, -2); + var data = payload.slice(1); + var checksum = decoded.slice(-2); + if (encoded !== _base["default"].encode(decoded)) { + throw new Error("invalid encoded string"); + } + var expectedVersion = versionBytes[versionByteName]; + if (expectedVersion === void 0) { + throw new Error("".concat(versionByteName, " is not a valid version byte name. ") + "Expected one of ".concat(Object.keys(versionBytes).join(", "))); + } + if (versionByte !== expectedVersion) { + throw new Error("invalid version byte. expected ".concat(expectedVersion, ", got ").concat(versionByte)); + } + var expectedChecksum = calculateChecksum(payload); + if (!(0, _checksum.verifyChecksum)(expectedChecksum, checksum)) { + throw new Error("invalid checksum"); + } + return Buffer.from(data); + } + function encodeCheck(versionByteName, data) { + if (data === null || data === void 0) { + throw new Error("cannot encode null data"); + } + var versionByte = versionBytes[versionByteName]; + if (versionByte === void 0) { + throw new Error("".concat(versionByteName, " is not a valid version byte name. ") + "Expected one of ".concat(Object.keys(versionBytes).join(", "))); + } + data = Buffer.from(data); + var versionBuffer = Buffer.from([versionByte]); + var payload = Buffer.concat([versionBuffer, data]); + var checksum = Buffer.from(calculateChecksum(payload)); + var unencoded = Buffer.concat([payload, checksum]); + return _base["default"].encode(unencoded); + } + function calculateChecksum(payload) { + var crcTable = [0, 4129, 8258, 12387, 16516, 20645, 24774, 28903, 33032, 37161, 41290, 45419, 49548, 53677, 57806, 61935, 4657, 528, 12915, 8786, 21173, 17044, 29431, 25302, 37689, 33560, 45947, 41818, 54205, 50076, 62463, 58334, 9314, 13379, 1056, 5121, 25830, 29895, 17572, 21637, 42346, 46411, 34088, 38153, 58862, 62927, 50604, 54669, 13907, 9842, 5649, 1584, 30423, 26358, 22165, 18100, 46939, 42874, 38681, 34616, 63455, 59390, 55197, 51132, 18628, 22757, 26758, 30887, 2112, 6241, 10242, 14371, 51660, 55789, 59790, 63919, 35144, 39273, 43274, 47403, 23285, 19156, 31415, 27286, 6769, 2640, 14899, 10770, 56317, 52188, 64447, 60318, 39801, 35672, 47931, 43802, 27814, 31879, 19684, 23749, 11298, 15363, 3168, 7233, 60846, 64911, 52716, 56781, 44330, 48395, 36200, 40265, 32407, 28342, 24277, 20212, 15891, 11826, 7761, 3696, 65439, 61374, 57309, 53244, 48923, 44858, 40793, 36728, 37256, 33193, 45514, 41451, 53516, 49453, 61774, 57711, 4224, 161, 12482, 8419, 20484, 16421, 28742, 24679, 33721, 37784, 41979, 46042, 49981, 54044, 58239, 62302, 689, 4752, 8947, 13010, 16949, 21012, 25207, 29270, 46570, 42443, 38312, 34185, 62830, 58703, 54572, 50445, 13538, 9411, 5280, 1153, 29798, 25671, 21540, 17413, 42971, 47098, 34713, 38840, 59231, 63358, 50973, 55100, 9939, 14066, 1681, 5808, 26199, 30326, 17941, 22068, 55628, 51565, 63758, 59695, 39368, 35305, 47498, 43435, 22596, 18533, 30726, 26663, 6336, 2273, 14466, 10403, 52093, 56156, 60223, 64286, 35833, 39896, 43963, 48026, 19061, 23124, 27191, 31254, 2801, 6864, 10931, 14994, 64814, 60687, 56684, 52557, 48554, 44427, 40424, 36297, 31782, 27655, 23652, 19525, 15522, 11395, 7392, 3265, 61215, 65342, 53085, 57212, 44955, 49082, 36825, 40952, 28183, 32310, 20053, 24180, 11923, 16050, 3793, 7920]; + var crc16 = 0; + for (var i = 0; i < payload.length; i += 1) { + var _byte = payload[i]; + var lookupIndex = crc16 >> 8 ^ _byte; + crc16 = crc16 << 8 ^ crcTable[lookupIndex]; + crc16 &= 65535; + } + var checksum = new Uint8Array(2); + checksum[0] = crc16 & 255; + checksum[1] = crc16 >> 8 & 255; + return checksum; + } + } +}); + +// node_modules/@stellar/stellar-base/lib/keypair.js +var require_keypair = __commonJS({ + "node_modules/@stellar/stellar-base/lib/keypair.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Keypair = void 0; + var _ed = require_ed25519(); + var _signing = require_signing(); + var _strkey = require_strkey(); + var _hashing = require_hashing(); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Keypair = exports2.Keypair = /* @__PURE__ */ function() { + function Keypair2(keys) { + _classCallCheck(this, Keypair2); + if (keys.type !== "ed25519") { + throw new Error("Invalid keys type"); + } + this.type = keys.type; + if (keys.secretKey) { + keys.secretKey = Buffer.from(keys.secretKey); + if (keys.secretKey.length !== 32) { + throw new Error("secretKey length is invalid"); + } + this._secretSeed = keys.secretKey; + this._publicKey = (0, _signing.generate)(keys.secretKey); + this._secretKey = keys.secretKey; + if (keys.publicKey && !this._publicKey.equals(Buffer.from(keys.publicKey))) { + throw new Error("secretKey does not match publicKey"); + } + } else { + this._publicKey = Buffer.from(keys.publicKey); + if (this._publicKey.length !== 32) { + throw new Error("publicKey length is invalid"); + } + } + } + return _createClass(Keypair2, [{ + key: "xdrAccountId", + value: function xdrAccountId() { + return new _xdr["default"].AccountId.publicKeyTypeEd25519(this._publicKey); + } + }, { + key: "xdrPublicKey", + value: function xdrPublicKey() { + return new _xdr["default"].PublicKey.publicKeyTypeEd25519(this._publicKey); + } + /** + * Creates a {@link xdr.MuxedAccount} object from the public key. + * + * You will get a different type of muxed account depending on whether or not + * you pass an ID. + * + * @param {string} [id] - stringified integer indicating the underlying muxed + * ID of the new account object + * + * @return {xdr.MuxedAccount} + */ + }, { + key: "xdrMuxedAccount", + value: function xdrMuxedAccount(id) { + if (typeof id !== "undefined") { + if (typeof id !== "string") { + throw new TypeError("expected string for ID, got ".concat(_typeof(id))); + } + return _xdr["default"].MuxedAccount.keyTypeMuxedEd25519(new _xdr["default"].MuxedAccountMed25519({ + id: _xdr["default"].Uint64.fromString(id), + ed25519: this._publicKey + })); + } + return new _xdr["default"].MuxedAccount.keyTypeEd25519(this._publicKey); + } + /** + * Returns raw public key + * @returns {Buffer} + */ + }, { + key: "rawPublicKey", + value: function rawPublicKey() { + return this._publicKey; + } + }, { + key: "signatureHint", + value: function signatureHint() { + var a = this.xdrAccountId().toXDR(); + return a.slice(a.length - 4); + } + /** + * Returns public key associated with this `Keypair` object. + * @returns {string} + */ + }, { + key: "publicKey", + value: function publicKey() { + return _strkey.StrKey.encodeEd25519PublicKey(this._publicKey); + } + /** + * Returns secret key associated with this `Keypair` object + * @returns {string} + */ + }, { + key: "secret", + value: function secret() { + if (!this._secretSeed) { + throw new Error("no secret key available"); + } + if (this.type === "ed25519") { + return _strkey.StrKey.encodeEd25519SecretSeed(this._secretSeed); + } + throw new Error("Invalid Keypair type"); + } + /** + * Returns raw secret key. + * @returns {Buffer} + */ + }, { + key: "rawSecretKey", + value: function rawSecretKey() { + return this._secretSeed; + } + /** + * Returns `true` if this `Keypair` object contains secret key and can sign. + * @returns {boolean} + */ + }, { + key: "canSign", + value: function canSign() { + return !!this._secretKey; + } + /** + * Signs data. + * @param {Buffer} data Data to sign + * @returns {Buffer} + */ + }, { + key: "sign", + value: function sign(data) { + if (!this.canSign()) { + throw new Error("cannot sign: no secret key available"); + } + return (0, _signing.sign)(data, this._secretKey); + } + /** + * Verifies if `signature` for `data` is valid. + * @param {Buffer} data Signed data + * @param {Buffer} signature Signature + * @returns {boolean} + */ + }, { + key: "verify", + value: function verify(data, signature) { + return (0, _signing.verify)(data, signature, this._publicKey); + } + /** + * Returns the decorated signature (hint+sig) for arbitrary data. + * + * @param {Buffer} data arbitrary data to sign + * @return {xdr.DecoratedSignature} the raw signature structure which can be + * added directly to a transaction envelope + * + * @see TransactionBase.addDecoratedSignature + */ + }, { + key: "signDecorated", + value: function signDecorated(data) { + var signature = this.sign(data); + var hint = this.signatureHint(); + return new _xdr["default"].DecoratedSignature({ + hint, + signature + }); + } + /** + * Returns the raw decorated signature (hint+sig) for a signed payload signer. + * + * The hint is defined as the last 4 bytes of the signer key XORed with last + * 4 bytes of the payload (zero-left-padded if necessary). + * + * @param {Buffer} data data to both sign and treat as the payload + * @return {xdr.DecoratedSignature} + * + * @see https://github.com/stellar/stellar-protocol/blob/master/core/cap-0040.md#signature-hint + * @see TransactionBase.addDecoratedSignature + */ + }, { + key: "signPayloadDecorated", + value: function signPayloadDecorated(data) { + var signature = this.sign(data); + var keyHint = this.signatureHint(); + var hint = Buffer.from(data.slice(-4)); + if (hint.length < 4) { + hint = Buffer.concat([hint, Buffer.alloc(4 - data.length, 0)]); + } + return new _xdr["default"].DecoratedSignature({ + hint: hint.map(function(_byte, i) { + return _byte ^ keyHint[i]; + }), + signature + }); + } + }], [{ + key: "fromSecret", + value: function fromSecret(secret) { + var rawSecret = _strkey.StrKey.decodeEd25519SecretSeed(secret); + return this.fromRawEd25519Seed(rawSecret); + } + /** + * Creates a new `Keypair` object from ed25519 secret key seed raw bytes. + * + * @param {Buffer} rawSeed Raw 32-byte ed25519 secret key seed + * @returns {Keypair} + */ + }, { + key: "fromRawEd25519Seed", + value: function fromRawEd25519Seed(rawSeed) { + return new this({ + type: "ed25519", + secretKey: rawSeed + }); + } + /** + * Returns `Keypair` object representing network master key. + * @param {string} networkPassphrase passphrase of the target stellar network (e.g. "Public Global Stellar Network ; September 2015"). + * @returns {Keypair} + */ + }, { + key: "master", + value: function master(networkPassphrase) { + if (!networkPassphrase) { + throw new Error("No network selected. Please pass a network argument, e.g. `Keypair.master(Networks.PUBLIC)`."); + } + return this.fromRawEd25519Seed((0, _hashing.hash)(networkPassphrase)); + } + /** + * Creates a new `Keypair` object from public key. + * @param {string} publicKey public key (ex. `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`) + * @returns {Keypair} + */ + }, { + key: "fromPublicKey", + value: function fromPublicKey(publicKey) { + publicKey = _strkey.StrKey.decodeEd25519PublicKey(publicKey); + if (publicKey.length !== 32) { + throw new Error("Invalid Stellar public key"); + } + return new this({ + type: "ed25519", + publicKey + }); + } + /** + * Create a random `Keypair` object. + * @returns {Keypair} + */ + }, { + key: "random", + value: function random() { + var secret = _ed.ed25519.utils.randomPrivateKey(); + return this.fromRawEd25519Seed(secret); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/asset.js +var require_asset = __commonJS({ + "node_modules/@stellar/stellar-base/lib/asset.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Asset = void 0; + var _util = require_util5(); + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + var _hashing = require_hashing(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Asset = exports2.Asset = /* @__PURE__ */ function() { + function Asset2(code, issuer) { + _classCallCheck(this, Asset2); + if (!/^[a-zA-Z0-9]{1,12}$/.test(code)) { + throw new Error("Asset code is invalid (maximum alphanumeric, 12 characters at max)"); + } + if (String(code).toLowerCase() !== "xlm" && !issuer) { + throw new Error("Issuer cannot be null"); + } + if (issuer && !_strkey.StrKey.isValidEd25519PublicKey(issuer)) { + throw new Error("Issuer is invalid"); + } + if (String(code).toLowerCase() === "xlm") { + this.code = "XLM"; + } else { + this.code = code; + } + this.issuer = issuer; + } + return _createClass(Asset2, [{ + key: "toXDRObject", + value: ( + /** + * Returns the xdr.Asset object for this asset. + * @returns {xdr.Asset} XDR asset object + */ + function toXDRObject() { + return this._toXDRObject(_xdr["default"].Asset); + } + ) + /** + * Returns the xdr.ChangeTrustAsset object for this asset. + * @returns {xdr.ChangeTrustAsset} XDR asset object + */ + }, { + key: "toChangeTrustXDRObject", + value: function toChangeTrustXDRObject() { + return this._toXDRObject(_xdr["default"].ChangeTrustAsset); + } + /** + * Returns the xdr.TrustLineAsset object for this asset. + * @returns {xdr.TrustLineAsset} XDR asset object + */ + }, { + key: "toTrustLineXDRObject", + value: function toTrustLineXDRObject() { + return this._toXDRObject(_xdr["default"].TrustLineAsset); + } + /** + * Returns the would-be contract ID (`C...` format) for this asset on a given + * network. + * + * @param {string} networkPassphrase indicates which network the contract + * ID should refer to, since every network will have a unique ID for the + * same contract (see {@link Networks} for options) + * + * @returns {string} the strkey-encoded (`C...`) contract ID for this asset + * + * @warning This makes no guarantee that this contract actually *exists*. + */ + }, { + key: "contractId", + value: function contractId(networkPassphrase) { + var networkId = (0, _hashing.hash)(Buffer.from(networkPassphrase)); + var preimage = _xdr["default"].HashIdPreimage.envelopeTypeContractId(new _xdr["default"].HashIdPreimageContractId({ + networkId, + contractIdPreimage: _xdr["default"].ContractIdPreimage.contractIdPreimageFromAsset(this.toXDRObject()) + })); + return _strkey.StrKey.encodeContract((0, _hashing.hash)(preimage.toXDR())); + } + /** + * Returns the xdr object for this asset. + * @param {xdr.Asset | xdr.ChangeTrustAsset} xdrAsset - The asset xdr object. + * @returns {xdr.Asset | xdr.ChangeTrustAsset | xdr.TrustLineAsset} XDR Asset object + */ + }, { + key: "_toXDRObject", + value: function _toXDRObject() { + var xdrAsset = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : _xdr["default"].Asset; + if (this.isNative()) { + return xdrAsset.assetTypeNative(); + } + var xdrType; + var xdrTypeString; + if (this.code.length <= 4) { + xdrType = _xdr["default"].AlphaNum4; + xdrTypeString = "assetTypeCreditAlphanum4"; + } else { + xdrType = _xdr["default"].AlphaNum12; + xdrTypeString = "assetTypeCreditAlphanum12"; + } + var padLength = this.code.length <= 4 ? 4 : 12; + var paddedCode = this.code.padEnd(padLength, "\0"); + var assetType = new xdrType({ + assetCode: paddedCode, + issuer: _keypair.Keypair.fromPublicKey(this.issuer).xdrAccountId() + }); + return new xdrAsset(xdrTypeString, assetType); + } + /** + * @returns {string} Asset code + */ + }, { + key: "getCode", + value: function getCode() { + if (this.code === void 0) { + return void 0; + } + return String(this.code); + } + /** + * @returns {string} Asset issuer + */ + }, { + key: "getIssuer", + value: function getIssuer() { + if (this.issuer === void 0) { + return void 0; + } + return String(this.issuer); + } + /** + * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/) + * @returns {string} Asset type. Can be one of following types: + * + * - `native`, + * - `credit_alphanum4`, + * - `credit_alphanum12`, or + * - `unknown` as the error case (which should never occur) + */ + }, { + key: "getAssetType", + value: function getAssetType() { + switch (this.getRawAssetType().value) { + case _xdr["default"].AssetType.assetTypeNative().value: + return "native"; + case _xdr["default"].AssetType.assetTypeCreditAlphanum4().value: + return "credit_alphanum4"; + case _xdr["default"].AssetType.assetTypeCreditAlphanum12().value: + return "credit_alphanum12"; + default: + return "unknown"; + } + } + /** + * @returns {xdr.AssetType} the raw XDR representation of the asset type + */ + }, { + key: "getRawAssetType", + value: function getRawAssetType() { + if (this.isNative()) { + return _xdr["default"].AssetType.assetTypeNative(); + } + if (this.code.length <= 4) { + return _xdr["default"].AssetType.assetTypeCreditAlphanum4(); + } + return _xdr["default"].AssetType.assetTypeCreditAlphanum12(); + } + /** + * @returns {boolean} true if this asset object is the native asset. + */ + }, { + key: "isNative", + value: function isNative() { + return !this.issuer; + } + /** + * @param {Asset} asset Asset to compare + * @returns {boolean} true if this asset equals the given asset. + */ + }, { + key: "equals", + value: function equals(asset) { + return this.code === asset.getCode() && this.issuer === asset.getIssuer(); + } + }, { + key: "toString", + value: function toString() { + if (this.isNative()) { + return "native"; + } + return "".concat(this.getCode(), ":").concat(this.getIssuer()); + } + /** + * Compares two assets according to the criteria: + * + * 1. First compare the type (native < alphanum4 < alphanum12). + * 2. If the types are equal, compare the assets codes. + * 3. If the asset codes are equal, compare the issuers. + * + * @param {Asset} assetA - the first asset + * @param {Asset} assetB - the second asset + * @returns {number} `-1` if assetA < assetB, `0` if assetA == assetB, `1` if assetA > assetB. + * + * @static + * @memberof Asset + */ + }], [{ + key: "native", + value: function _native() { + return new Asset2("XLM"); + } + /** + * Returns an asset object from its XDR object representation. + * @param {xdr.Asset} assetXdr - The asset xdr object. + * @returns {Asset} + */ + }, { + key: "fromOperation", + value: function fromOperation(assetXdr) { + var anum; + var code; + var issuer; + switch (assetXdr["switch"]()) { + case _xdr["default"].AssetType.assetTypeNative(): + return this["native"](); + case _xdr["default"].AssetType.assetTypeCreditAlphanum4(): + anum = assetXdr.alphaNum4(); + /* falls through */ + case _xdr["default"].AssetType.assetTypeCreditAlphanum12(): + anum = anum || assetXdr.alphaNum12(); + issuer = _strkey.StrKey.encodeEd25519PublicKey(anum.issuer().ed25519()); + code = (0, _util.trimEnd)(anum.assetCode(), "\0"); + return new this(code, issuer); + default: + throw new Error("Invalid asset type: ".concat(assetXdr["switch"]().name)); + } + } + }, { + key: "compare", + value: function compare2(assetA, assetB) { + if (!assetA || !(assetA instanceof Asset2)) { + throw new Error("assetA is invalid"); + } + if (!assetB || !(assetB instanceof Asset2)) { + throw new Error("assetB is invalid"); + } + if (assetA.equals(assetB)) { + return 0; + } + var xdrAtype = assetA.getRawAssetType().value; + var xdrBtype = assetB.getRawAssetType().value; + if (xdrAtype !== xdrBtype) { + return xdrAtype < xdrBtype ? -1 : 1; + } + var result = asciiCompare(assetA.getCode(), assetB.getCode()); + if (result !== 0) { + return result; + } + return asciiCompare(assetA.getIssuer(), assetB.getIssuer()); + } + }]); + }(); + function asciiCompare(a, b) { + return Buffer.compare(Buffer.from(a, "ascii"), Buffer.from(b, "ascii")); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/get_liquidity_pool_id.js +var require_get_liquidity_pool_id = __commonJS({ + "node_modules/@stellar/stellar-base/lib/get_liquidity_pool_id.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LiquidityPoolFeeV18 = void 0; + exports2.getLiquidityPoolId = getLiquidityPoolId; + var _xdr = _interopRequireDefault(require_xdr2()); + var _asset = require_asset(); + var _hashing = require_hashing(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var LiquidityPoolFeeV18 = exports2.LiquidityPoolFeeV18 = 30; + function getLiquidityPoolId(liquidityPoolType) { + var liquidityPoolParameters = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (liquidityPoolType !== "constant_product") { + throw new Error("liquidityPoolType is invalid"); + } + var assetA = liquidityPoolParameters.assetA, assetB = liquidityPoolParameters.assetB, fee = liquidityPoolParameters.fee; + if (!assetA || !(assetA instanceof _asset.Asset)) { + throw new Error("assetA is invalid"); + } + if (!assetB || !(assetB instanceof _asset.Asset)) { + throw new Error("assetB is invalid"); + } + if (!fee || fee !== LiquidityPoolFeeV18) { + throw new Error("fee is invalid"); + } + if (_asset.Asset.compare(assetA, assetB) !== -1) { + throw new Error("Assets are not in lexicographic order"); + } + var lpTypeData = _xdr["default"].LiquidityPoolType.liquidityPoolConstantProduct().toXDR(); + var lpParamsData = new _xdr["default"].LiquidityPoolConstantProductParameters({ + assetA: assetA.toXDRObject(), + assetB: assetB.toXDRObject(), + fee + }).toXDR(); + var payload = Buffer.concat([lpTypeData, lpParamsData]); + return (0, _hashing.hash)(payload); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/transaction_base.js +var require_transaction_base = __commonJS({ + "node_modules/@stellar/stellar-base/lib/transaction_base.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransactionBase = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _hashing = require_hashing(); + var _keypair = require_keypair(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var TransactionBase = exports2.TransactionBase = /* @__PURE__ */ function() { + function TransactionBase2(tx, signatures, fee, networkPassphrase) { + _classCallCheck(this, TransactionBase2); + if (typeof networkPassphrase !== "string") { + throw new Error("Invalid passphrase provided to Transaction: expected a string but got a ".concat(_typeof(networkPassphrase))); + } + this._networkPassphrase = networkPassphrase; + this._tx = tx; + this._signatures = signatures; + this._fee = fee; + } + return _createClass(TransactionBase2, [{ + key: "signatures", + get: function get() { + return this._signatures; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + }, { + key: "tx", + get: function get() { + return this._tx; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {string} + * @readonly + */ + }, { + key: "fee", + get: function get() { + return this._fee; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {string} + * @readonly + */ + }, { + key: "networkPassphrase", + get: function get() { + return this._networkPassphrase; + }, + set: function set(networkPassphrase) { + this._networkPassphrase = networkPassphrase; + } + /** + * Signs the transaction with the given {@link Keypair}. + * @param {...Keypair} keypairs Keypairs of signers + * @returns {void} + */ + }, { + key: "sign", + value: function sign() { + var _this = this; + var txHash = this.hash(); + for (var _len = arguments.length, keypairs = new Array(_len), _key = 0; _key < _len; _key++) { + keypairs[_key] = arguments[_key]; + } + keypairs.forEach(function(kp) { + var sig = kp.signDecorated(txHash); + _this.signatures.push(sig); + }); + } + /** + * Signs a transaction with the given {@link Keypair}. Useful if someone sends + * you a transaction XDR for you to sign and return (see + * [addSignature](#addSignature) for more information). + * + * When you get a transaction XDR to sign.... + * - Instantiate a `Transaction` object with the XDR + * - Use {@link Keypair} to generate a keypair object for your Stellar seed. + * - Run `getKeypairSignature` with that keypair + * - Send back the signature along with your publicKey (not your secret seed!) + * + * Example: + * ```javascript + * // `transactionXDR` is a string from the person generating the transaction + * const transaction = new Transaction(transactionXDR, networkPassphrase); + * const keypair = Keypair.fromSecret(myStellarSeed); + * return transaction.getKeypairSignature(keypair); + * ``` + * + * @param {Keypair} keypair Keypair of signer + * @returns {string} Signature string + */ + }, { + key: "getKeypairSignature", + value: function getKeypairSignature(keypair) { + return keypair.sign(this.hash()).toString("base64"); + } + /** + * Add a signature to the transaction. Useful when a party wants to pre-sign + * a transaction but doesn't want to give access to their secret keys. + * This will also verify whether the signature is valid. + * + * Here's how you would use this feature to solicit multiple signatures. + * - Use `TransactionBuilder` to build a new transaction. + * - Make sure to set a long enough timeout on that transaction to give your + * signers enough time to sign! + * - Once you build the transaction, use `transaction.toXDR()` to get the + * base64-encoded XDR string. + * - _Warning!_ Once you've built this transaction, don't submit any other + * transactions onto your account! Doing so will invalidate this pre-compiled + * transaction! + * - Send this XDR string to your other parties. They can use the instructions + * for [getKeypairSignature](#getKeypairSignature) to sign the transaction. + * - They should send you back their `publicKey` and the `signature` string + * from [getKeypairSignature](#getKeypairSignature), both of which you pass to + * this function. + * + * @param {string} publicKey The public key of the signer + * @param {string} signature The base64 value of the signature XDR + * @returns {void} + */ + }, { + key: "addSignature", + value: function addSignature() { + var publicKey = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; + var signature = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; + if (!signature || typeof signature !== "string") { + throw new Error("Invalid signature"); + } + if (!publicKey || typeof publicKey !== "string") { + throw new Error("Invalid publicKey"); + } + var keypair; + var hint; + var signatureBuffer = Buffer.from(signature, "base64"); + try { + keypair = _keypair.Keypair.fromPublicKey(publicKey); + hint = keypair.signatureHint(); + } catch (e) { + throw new Error("Invalid publicKey"); + } + if (!keypair.verify(this.hash(), signatureBuffer)) { + throw new Error("Invalid signature"); + } + this.signatures.push(new _xdr["default"].DecoratedSignature({ + hint, + signature: signatureBuffer + })); + } + /** + * Add a decorated signature directly to the transaction envelope. + * + * @param {xdr.DecoratedSignature} signature raw signature to add + * @returns {void} + * + * @see Keypair.signDecorated + * @see Keypair.signPayloadDecorated + */ + }, { + key: "addDecoratedSignature", + value: function addDecoratedSignature(signature) { + this.signatures.push(signature); + } + /** + * Add `hashX` signer preimage as signature. + * @param {Buffer|String} preimage Preimage of hash used as signer + * @returns {void} + */ + }, { + key: "signHashX", + value: function signHashX(preimage) { + if (typeof preimage === "string") { + preimage = Buffer.from(preimage, "hex"); + } + if (preimage.length > 64) { + throw new Error("preimage cannnot be longer than 64 bytes"); + } + var signature = preimage; + var hashX = (0, _hashing.hash)(preimage); + var hint = hashX.slice(hashX.length - 4); + this.signatures.push(new _xdr["default"].DecoratedSignature({ + hint, + signature + })); + } + /** + * Returns a hash for this transaction, suitable for signing. + * @returns {Buffer} + */ + }, { + key: "hash", + value: function hash() { + return (0, _hashing.hash)(this.signatureBase()); + } + }, { + key: "signatureBase", + value: function signatureBase() { + throw new Error("Implement in subclass"); + } + }, { + key: "toEnvelope", + value: function toEnvelope() { + throw new Error("Implement in subclass"); + } + /** + * Get the transaction envelope as a base64-encoded string + * @returns {string} XDR string + */ + }, { + key: "toXDR", + value: function toXDR() { + return this.toEnvelope().toXDR().toString("base64"); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/util/bignumber.js +var require_bignumber2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/util/bignumber.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2["default"] = void 0; + var _bignumber = _interopRequireDefault(require_bignumber()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var BigNumber = _bignumber["default"].clone(); + BigNumber.DEBUG = true; + var _default = exports2["default"] = BigNumber; + } +}); + +// node_modules/@stellar/stellar-base/lib/util/continued_fraction.js +var require_continued_fraction = __commonJS({ + "node_modules/@stellar/stellar-base/lib/util/continued_fraction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.best_r = best_r; + var _bignumber = _interopRequireDefault(require_bignumber2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + var MAX_INT = (1 << 31 >>> 0) - 1; + function best_r(rawNumber) { + var number = new _bignumber["default"](rawNumber); + var a; + var f; + var fractions = [[new _bignumber["default"](0), new _bignumber["default"](1)], [new _bignumber["default"](1), new _bignumber["default"](0)]]; + var i = 2; + while (true) { + if (number.gt(MAX_INT)) { + break; + } + a = number.integerValue(_bignumber["default"].ROUND_FLOOR); + f = number.minus(a); + var h = a.times(fractions[i - 1][0]).plus(fractions[i - 2][0]); + var k = a.times(fractions[i - 1][1]).plus(fractions[i - 2][1]); + if (h.gt(MAX_INT) || k.gt(MAX_INT)) { + break; + } + fractions.push([h, k]); + if (f.eq(0)) { + break; + } + number = new _bignumber["default"](1).div(f); + i += 1; + } + var _fractions = _slicedToArray(fractions[fractions.length - 1], 2), n = _fractions[0], d = _fractions[1]; + if (n.isZero() || d.isZero()) { + throw new Error("Couldn't find approximation"); + } + return [n.toNumber(), d.toNumber()]; + } + } +}); + +// node_modules/@stellar/stellar-base/lib/liquidity_pool_asset.js +var require_liquidity_pool_asset = __commonJS({ + "node_modules/@stellar/stellar-base/lib/liquidity_pool_asset.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LiquidityPoolAsset = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _asset = require_asset(); + var _get_liquidity_pool_id = require_get_liquidity_pool_id(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var LiquidityPoolAsset = exports2.LiquidityPoolAsset = /* @__PURE__ */ function() { + function LiquidityPoolAsset2(assetA, assetB, fee) { + _classCallCheck(this, LiquidityPoolAsset2); + if (!assetA || !(assetA instanceof _asset.Asset)) { + throw new Error("assetA is invalid"); + } + if (!assetB || !(assetB instanceof _asset.Asset)) { + throw new Error("assetB is invalid"); + } + if (_asset.Asset.compare(assetA, assetB) !== -1) { + throw new Error("Assets are not in lexicographic order"); + } + if (!fee || fee !== _get_liquidity_pool_id.LiquidityPoolFeeV18) { + throw new Error("fee is invalid"); + } + this.assetA = assetA; + this.assetB = assetB; + this.fee = fee; + } + return _createClass(LiquidityPoolAsset2, [{ + key: "toXDRObject", + value: ( + /** + * Returns the `xdr.ChangeTrustAsset` object for this liquidity pool asset. + * + * Note: To convert from an {@link Asset `Asset`} to `xdr.ChangeTrustAsset` + * please refer to the + * {@link Asset.toChangeTrustXDRObject `Asset.toChangeTrustXDRObject`} method. + * + * @returns {xdr.ChangeTrustAsset} XDR ChangeTrustAsset object. + */ + function toXDRObject() { + var lpConstantProductParamsXdr = new _xdr["default"].LiquidityPoolConstantProductParameters({ + assetA: this.assetA.toXDRObject(), + assetB: this.assetB.toXDRObject(), + fee: this.fee + }); + var lpParamsXdr = new _xdr["default"].LiquidityPoolParameters("liquidityPoolConstantProduct", lpConstantProductParamsXdr); + return new _xdr["default"].ChangeTrustAsset("assetTypePoolShare", lpParamsXdr); + } + ) + /** + * @returns {LiquidityPoolParameters} Liquidity pool parameters. + */ + }, { + key: "getLiquidityPoolParameters", + value: function getLiquidityPoolParameters() { + return _objectSpread(_objectSpread({}, this), {}, { + assetA: this.assetA, + assetB: this.assetB, + fee: this.fee + }); + } + /** + * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/) + * @returns {AssetType.liquidityPoolShares} asset type. Can only be `liquidity_pool_shares`. + */ + }, { + key: "getAssetType", + value: function getAssetType() { + return "liquidity_pool_shares"; + } + /** + * @param {LiquidityPoolAsset} other the LiquidityPoolAsset to compare + * @returns {boolean} `true` if this asset equals the given asset. + */ + }, { + key: "equals", + value: function equals(other) { + return this.assetA.equals(other.assetA) && this.assetB.equals(other.assetB) && this.fee === other.fee; + } + }, { + key: "toString", + value: function toString() { + var poolId = (0, _get_liquidity_pool_id.getLiquidityPoolId)("constant_product", this.getLiquidityPoolParameters()).toString("hex"); + return "liquidity_pool:".concat(poolId); + } + }], [{ + key: "fromOperation", + value: function fromOperation(ctAssetXdr) { + var assetType = ctAssetXdr["switch"](); + if (assetType === _xdr["default"].AssetType.assetTypePoolShare()) { + var liquidityPoolParameters = ctAssetXdr.liquidityPool().constantProduct(); + return new this(_asset.Asset.fromOperation(liquidityPoolParameters.assetA()), _asset.Asset.fromOperation(liquidityPoolParameters.assetB()), liquidityPoolParameters.fee()); + } + throw new Error("Invalid asset type: ".concat(assetType.name)); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/claimant.js +var require_claimant = __commonJS({ + "node_modules/@stellar/stellar-base/lib/claimant.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Claimant = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Claimant = exports2.Claimant = /* @__PURE__ */ function() { + function Claimant2(destination, predicate) { + _classCallCheck(this, Claimant2); + if (destination && !_strkey.StrKey.isValidEd25519PublicKey(destination)) { + throw new Error("Destination is invalid"); + } + this._destination = destination; + if (!predicate) { + this._predicate = _xdr["default"].ClaimPredicate.claimPredicateUnconditional(); + } else if (predicate instanceof _xdr["default"].ClaimPredicate) { + this._predicate = predicate; + } else { + throw new Error("Predicate should be an xdr.ClaimPredicate"); + } + } + return _createClass(Claimant2, [{ + key: "toXDRObject", + value: ( + /** + * Returns the xdr object for this claimant. + * @returns {xdr.Claimant} XDR Claimant object + */ + function toXDRObject() { + var claimant = new _xdr["default"].ClaimantV0({ + destination: _keypair.Keypair.fromPublicKey(this._destination).xdrAccountId(), + predicate: this._predicate + }); + return _xdr["default"].Claimant.claimantTypeV0(claimant); + } + ) + /** + * @type {string} + * @readonly + */ + }, { + key: "destination", + get: function get() { + return this._destination; + }, + set: function set(value) { + throw new Error("Claimant is immutable"); + } + /** + * @type {xdr.ClaimPredicate} + * @readonly + */ + }, { + key: "predicate", + get: function get() { + return this._predicate; + }, + set: function set(value) { + throw new Error("Claimant is immutable"); + } + }], [{ + key: "predicateUnconditional", + value: function predicateUnconditional() { + return _xdr["default"].ClaimPredicate.claimPredicateUnconditional(); + } + /** + * Returns an `and` claim predicate + * @param {xdr.ClaimPredicate} left an xdr.ClaimPredicate + * @param {xdr.ClaimPredicate} right an xdr.ClaimPredicate + * @Return {xdr.ClaimPredicate} + */ + }, { + key: "predicateAnd", + value: function predicateAnd(left, right) { + if (!(left instanceof _xdr["default"].ClaimPredicate)) { + throw new Error("left Predicate should be an xdr.ClaimPredicate"); + } + if (!(right instanceof _xdr["default"].ClaimPredicate)) { + throw new Error("right Predicate should be an xdr.ClaimPredicate"); + } + return _xdr["default"].ClaimPredicate.claimPredicateAnd([left, right]); + } + /** + * Returns an `or` claim predicate + * @param {xdr.ClaimPredicate} left an xdr.ClaimPredicate + * @param {xdr.ClaimPredicate} right an xdr.ClaimPredicate + * @Return {xdr.ClaimPredicate} + */ + }, { + key: "predicateOr", + value: function predicateOr(left, right) { + if (!(left instanceof _xdr["default"].ClaimPredicate)) { + throw new Error("left Predicate should be an xdr.ClaimPredicate"); + } + if (!(right instanceof _xdr["default"].ClaimPredicate)) { + throw new Error("right Predicate should be an xdr.ClaimPredicate"); + } + return _xdr["default"].ClaimPredicate.claimPredicateOr([left, right]); + } + /** + * Returns a `not` claim predicate + * @param {xdr.ClaimPredicate} predicate an xdr.ClaimPredicate + * @Return {xdr.ClaimPredicate} + */ + }, { + key: "predicateNot", + value: function predicateNot(predicate) { + if (!(predicate instanceof _xdr["default"].ClaimPredicate)) { + throw new Error("right Predicate should be an xdr.ClaimPredicate"); + } + return _xdr["default"].ClaimPredicate.claimPredicateNot(predicate); + } + /** + * Returns a `BeforeAbsoluteTime` claim predicate + * + * This predicate will be fulfilled if the closing time of the ledger that + * includes the CreateClaimableBalance operation is less than this (absolute) + * Unix timestamp (expressed in seconds). + * + * @param {string} absBefore Unix epoch (in seconds) as a string + * @Return {xdr.ClaimPredicate} + */ + }, { + key: "predicateBeforeAbsoluteTime", + value: function predicateBeforeAbsoluteTime(absBefore) { + return _xdr["default"].ClaimPredicate.claimPredicateBeforeAbsoluteTime(_xdr["default"].Int64.fromString(absBefore)); + } + /** + * Returns a `BeforeRelativeTime` claim predicate + * + * This predicate will be fulfilled if the closing time of the ledger that + * includes the CreateClaimableBalance operation plus this relative time delta + * (in seconds) is less than the current time. + * + * @param {strings} seconds seconds since closeTime of the ledger in which the ClaimableBalanceEntry was created (as string) + * @Return {xdr.ClaimPredicate} + */ + }, { + key: "predicateBeforeRelativeTime", + value: function predicateBeforeRelativeTime(seconds) { + return _xdr["default"].ClaimPredicate.claimPredicateBeforeRelativeTime(_xdr["default"].Int64.fromString(seconds)); + } + /** + * Returns a claimant object from its XDR object representation. + * @param {xdr.Claimant} claimantXdr - The claimant xdr object. + * @returns {Claimant} + */ + }, { + key: "fromXDR", + value: function fromXDR(claimantXdr) { + var value; + switch (claimantXdr["switch"]()) { + case _xdr["default"].ClaimantType.claimantTypeV0(): + value = claimantXdr.v0(); + return new this(_strkey.StrKey.encodeEd25519PublicKey(value.destination().ed25519()), value.predicate()); + default: + throw new Error("Invalid claimant type: ".concat(claimantXdr["switch"]().name)); + } + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/liquidity_pool_id.js +var require_liquidity_pool_id = __commonJS({ + "node_modules/@stellar/stellar-base/lib/liquidity_pool_id.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LiquidityPoolId = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var LiquidityPoolId = exports2.LiquidityPoolId = /* @__PURE__ */ function() { + function LiquidityPoolId2(liquidityPoolId) { + _classCallCheck(this, LiquidityPoolId2); + if (!liquidityPoolId) { + throw new Error("liquidityPoolId cannot be empty"); + } + if (!/^[a-f0-9]{64}$/.test(liquidityPoolId)) { + throw new Error("Liquidity pool ID is not a valid hash"); + } + this.liquidityPoolId = liquidityPoolId; + } + return _createClass(LiquidityPoolId2, [{ + key: "toXDRObject", + value: ( + /** + * Returns the `xdr.TrustLineAsset` object for this liquidity pool ID. + * + * Note: To convert from {@link Asset `Asset`} to `xdr.TrustLineAsset` please + * refer to the + * {@link Asset.toTrustLineXDRObject `Asset.toTrustLineXDRObject`} method. + * + * @returns {xdr.TrustLineAsset} XDR LiquidityPoolId object + */ + function toXDRObject() { + var xdrPoolId = _xdr["default"].PoolId.fromXDR(this.liquidityPoolId, "hex"); + return new _xdr["default"].TrustLineAsset("assetTypePoolShare", xdrPoolId); + } + ) + /** + * @returns {string} Liquidity pool ID. + */ + }, { + key: "getLiquidityPoolId", + value: function getLiquidityPoolId() { + return String(this.liquidityPoolId); + } + /** + * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/) + * @returns {AssetType.liquidityPoolShares} asset type. Can only be `liquidity_pool_shares`. + */ + }, { + key: "getAssetType", + value: function getAssetType() { + return "liquidity_pool_shares"; + } + /** + * @param {LiquidityPoolId} asset LiquidityPoolId to compare. + * @returns {boolean} `true` if this asset equals the given asset. + */ + }, { + key: "equals", + value: function equals(asset) { + return this.liquidityPoolId === asset.getLiquidityPoolId(); + } + }, { + key: "toString", + value: function toString() { + return "liquidity_pool:".concat(this.liquidityPoolId); + } + }], [{ + key: "fromOperation", + value: function fromOperation(tlAssetXdr) { + var assetType = tlAssetXdr["switch"](); + if (assetType === _xdr["default"].AssetType.assetTypePoolShare()) { + var liquidityPoolId = tlAssetXdr.liquidityPoolId().toString("hex"); + return new this(liquidityPoolId); + } + throw new Error("Invalid asset type: ".concat(assetType.name)); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/manage_sell_offer.js +var require_manage_sell_offer = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/manage_sell_offer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.manageSellOffer = manageSellOffer; + var _jsXdr = require_xdr(); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function manageSellOffer(opts) { + var attributes = {}; + attributes.selling = opts.selling.toXDRObject(); + attributes.buying = opts.buying.toXDRObject(); + if (!this.isValidAmount(opts.amount, true)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + attributes.amount = this._toXDRAmount(opts.amount); + if (opts.price === void 0) { + throw new TypeError("price argument is required"); + } + attributes.price = this._toXDRPrice(opts.price); + if (opts.offerId !== void 0) { + opts.offerId = opts.offerId.toString(); + } else { + opts.offerId = "0"; + } + attributes.offerId = _jsXdr.Hyper.fromString(opts.offerId); + var manageSellOfferOp = new _xdr["default"].ManageSellOfferOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.manageSellOffer(manageSellOfferOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/create_passive_sell_offer.js +var require_create_passive_sell_offer = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/create_passive_sell_offer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createPassiveSellOffer = createPassiveSellOffer; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function createPassiveSellOffer(opts) { + var attributes = {}; + attributes.selling = opts.selling.toXDRObject(); + attributes.buying = opts.buying.toXDRObject(); + if (!this.isValidAmount(opts.amount)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + attributes.amount = this._toXDRAmount(opts.amount); + if (opts.price === void 0) { + throw new TypeError("price argument is required"); + } + attributes.price = this._toXDRPrice(opts.price); + var createPassiveSellOfferOp = new _xdr["default"].CreatePassiveSellOfferOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.createPassiveSellOffer(createPassiveSellOfferOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/util/decode_encode_muxed_account.js +var require_decode_encode_muxed_account = __commonJS({ + "node_modules/@stellar/stellar-base/lib/util/decode_encode_muxed_account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.decodeAddressToMuxedAccount = decodeAddressToMuxedAccount; + exports2.encodeMuxedAccount = encodeMuxedAccount; + exports2.encodeMuxedAccountToAddress = encodeMuxedAccountToAddress; + exports2.extractBaseAddress = extractBaseAddress; + var _xdr = _interopRequireDefault(require_xdr2()); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function decodeAddressToMuxedAccount(address) { + if (_strkey.StrKey.isValidMed25519PublicKey(address)) { + return _decodeAddressFullyToMuxedAccount(address); + } + return _xdr["default"].MuxedAccount.keyTypeEd25519(_strkey.StrKey.decodeEd25519PublicKey(address)); + } + function encodeMuxedAccountToAddress(muxedAccount) { + if (muxedAccount["switch"]().value === _xdr["default"].CryptoKeyType.keyTypeMuxedEd25519().value) { + return _encodeMuxedAccountFullyToAddress(muxedAccount); + } + return _strkey.StrKey.encodeEd25519PublicKey(muxedAccount.ed25519()); + } + function encodeMuxedAccount(address, id) { + if (!_strkey.StrKey.isValidEd25519PublicKey(address)) { + throw new Error("address should be a Stellar account ID (G...)"); + } + if (typeof id !== "string") { + throw new Error("id should be a string representing a number (uint64)"); + } + return _xdr["default"].MuxedAccount.keyTypeMuxedEd25519(new _xdr["default"].MuxedAccountMed25519({ + id: _xdr["default"].Uint64.fromString(id), + ed25519: _strkey.StrKey.decodeEd25519PublicKey(address) + })); + } + function extractBaseAddress(address) { + if (_strkey.StrKey.isValidEd25519PublicKey(address)) { + return address; + } + if (!_strkey.StrKey.isValidMed25519PublicKey(address)) { + throw new TypeError("expected muxed account (M...), got ".concat(address)); + } + var muxedAccount = decodeAddressToMuxedAccount(address); + return _strkey.StrKey.encodeEd25519PublicKey(muxedAccount.med25519().ed25519()); + } + function _decodeAddressFullyToMuxedAccount(address) { + var rawBytes = _strkey.StrKey.decodeMed25519PublicKey(address); + return _xdr["default"].MuxedAccount.keyTypeMuxedEd25519(new _xdr["default"].MuxedAccountMed25519({ + id: _xdr["default"].Uint64.fromXDR(rawBytes.subarray(-8)), + ed25519: rawBytes.subarray(0, -8) + })); + } + function _encodeMuxedAccountFullyToAddress(muxedAccount) { + if (muxedAccount["switch"]() === _xdr["default"].CryptoKeyType.keyTypeEd25519()) { + return encodeMuxedAccountToAddress(muxedAccount); + } + var muxed = muxedAccount.med25519(); + return _strkey.StrKey.encodeMed25519PublicKey(Buffer.concat([muxed.ed25519(), muxed.id().toXDR("raw")])); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/account_merge.js +var require_account_merge = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/account_merge.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.accountMerge = accountMerge; + var _xdr = _interopRequireDefault(require_xdr2()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function accountMerge(opts) { + var opAttributes = {}; + try { + opAttributes.body = _xdr["default"].OperationBody.accountMerge((0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination)); + } catch (e) { + throw new Error("destination is invalid"); + } + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/allow_trust.js +var require_allow_trust = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/allow_trust.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.allowTrust = allowTrust; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function allowTrust(opts) { + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.trustor)) { + throw new Error("trustor is invalid"); + } + var attributes = {}; + attributes.trustor = _keypair.Keypair.fromPublicKey(opts.trustor).xdrAccountId(); + if (opts.assetCode.length <= 4) { + var code = opts.assetCode.padEnd(4, "\0"); + attributes.asset = _xdr["default"].AssetCode.assetTypeCreditAlphanum4(code); + } else if (opts.assetCode.length <= 12) { + var _code = opts.assetCode.padEnd(12, "\0"); + attributes.asset = _xdr["default"].AssetCode.assetTypeCreditAlphanum12(_code); + } else { + throw new Error("Asset code must be 12 characters at max."); + } + if (typeof opts.authorize === "boolean") { + if (opts.authorize) { + attributes.authorize = _xdr["default"].TrustLineFlags.authorizedFlag().value; + } else { + attributes.authorize = 0; + } + } else { + attributes.authorize = opts.authorize; + } + var allowTrustOp = new _xdr["default"].AllowTrustOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.allowTrust(allowTrustOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/bump_sequence.js +var require_bump_sequence = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/bump_sequence.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.bumpSequence = bumpSequence; + var _jsXdr = require_xdr(); + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function bumpSequence(opts) { + var attributes = {}; + if (typeof opts.bumpTo !== "string") { + throw new Error("bumpTo must be a string"); + } + try { + new _bignumber["default"](opts.bumpTo); + } catch (e) { + throw new Error("bumpTo must be a stringified number"); + } + attributes.bumpTo = _jsXdr.Hyper.fromString(opts.bumpTo); + var bumpSequenceOp = new _xdr["default"].BumpSequenceOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.bumpSequence(bumpSequenceOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/change_trust.js +var require_change_trust = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/change_trust.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.changeTrust = changeTrust; + var _jsXdr = require_xdr(); + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _xdr = _interopRequireDefault(require_xdr2()); + var _asset = require_asset(); + var _liquidity_pool_asset = require_liquidity_pool_asset(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var MAX_INT64 = "9223372036854775807"; + function changeTrust(opts) { + var attributes = {}; + if (opts.asset instanceof _asset.Asset) { + attributes.line = opts.asset.toChangeTrustXDRObject(); + } else if (opts.asset instanceof _liquidity_pool_asset.LiquidityPoolAsset) { + attributes.line = opts.asset.toXDRObject(); + } else { + throw new TypeError("asset must be Asset or LiquidityPoolAsset"); + } + if (opts.limit !== void 0 && !this.isValidAmount(opts.limit, true)) { + throw new TypeError(this.constructAmountRequirementsError("limit")); + } + if (opts.limit) { + attributes.limit = this._toXDRAmount(opts.limit); + } else { + attributes.limit = _jsXdr.Hyper.fromString(new _bignumber["default"](MAX_INT64).toString()); + } + if (opts.source) { + attributes.source = opts.source.masterKeypair; + } + var changeTrustOP = new _xdr["default"].ChangeTrustOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.changeTrust(changeTrustOP); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/create_account.js +var require_create_account = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/create_account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createAccount = createAccount; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function createAccount(opts) { + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.destination)) { + throw new Error("destination is invalid"); + } + if (!this.isValidAmount(opts.startingBalance, true)) { + throw new TypeError(this.constructAmountRequirementsError("startingBalance")); + } + var attributes = {}; + attributes.destination = _keypair.Keypair.fromPublicKey(opts.destination).xdrAccountId(); + attributes.startingBalance = this._toXDRAmount(opts.startingBalance); + var createAccountOp = new _xdr["default"].CreateAccountOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.createAccount(createAccountOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/create_claimable_balance.js +var require_create_claimable_balance = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/create_claimable_balance.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createClaimableBalance = createClaimableBalance; + var _xdr = _interopRequireDefault(require_xdr2()); + var _asset = require_asset(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function createClaimableBalance(opts) { + if (!(opts.asset instanceof _asset.Asset)) { + throw new Error("must provide an asset for create claimable balance operation"); + } + if (!this.isValidAmount(opts.amount)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + if (!Array.isArray(opts.claimants) || opts.claimants.length === 0) { + throw new Error("must provide at least one claimant"); + } + var attributes = {}; + attributes.asset = opts.asset.toXDRObject(); + attributes.amount = this._toXDRAmount(opts.amount); + attributes.claimants = Object.values(opts.claimants).map(function(c) { + return c.toXDRObject(); + }); + var createClaimableBalanceOp = new _xdr["default"].CreateClaimableBalanceOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.createClaimableBalance(createClaimableBalanceOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/claim_claimable_balance.js +var require_claim_claimable_balance = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/claim_claimable_balance.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.claimClaimableBalance = claimClaimableBalance; + exports2.validateClaimableBalanceId = validateClaimableBalanceId; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function claimClaimableBalance() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + validateClaimableBalanceId(opts.balanceId); + var attributes = {}; + attributes.balanceId = _xdr["default"].ClaimableBalanceId.fromXDR(opts.balanceId, "hex"); + var claimClaimableBalanceOp = new _xdr["default"].ClaimClaimableBalanceOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.claimClaimableBalance(claimClaimableBalanceOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function validateClaimableBalanceId(balanceId) { + if (typeof balanceId !== "string" || balanceId.length !== 8 + 64) { + throw new Error("must provide a valid claimable balance id"); + } + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/clawback_claimable_balance.js +var require_clawback_claimable_balance = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/clawback_claimable_balance.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.clawbackClaimableBalance = clawbackClaimableBalance; + var _xdr = _interopRequireDefault(require_xdr2()); + var _claim_claimable_balance = require_claim_claimable_balance(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function clawbackClaimableBalance() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + (0, _claim_claimable_balance.validateClaimableBalanceId)(opts.balanceId); + var attributes = { + balanceId: _xdr["default"].ClaimableBalanceId.fromXDR(opts.balanceId, "hex") + }; + var opAttributes = { + body: _xdr["default"].OperationBody.clawbackClaimableBalance(new _xdr["default"].ClawbackClaimableBalanceOp(attributes)) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/inflation.js +var require_inflation = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/inflation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.inflation = inflation; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function inflation() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.inflation(); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/manage_data.js +var require_manage_data = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/manage_data.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.manageData = manageData; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function manageData(opts) { + var attributes = {}; + if (!(typeof opts.name === "string" && opts.name.length <= 64)) { + throw new Error("name must be a string, up to 64 characters"); + } + attributes.dataName = opts.name; + if (typeof opts.value !== "string" && !Buffer.isBuffer(opts.value) && opts.value !== null) { + throw new Error("value must be a string, Buffer or null"); + } + if (typeof opts.value === "string") { + attributes.dataValue = Buffer.from(opts.value); + } else { + attributes.dataValue = opts.value; + } + if (attributes.dataValue !== null && attributes.dataValue.length > 64) { + throw new Error("value cannot be longer that 64 bytes"); + } + var manageDataOp = new _xdr["default"].ManageDataOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.manageData(manageDataOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/manage_buy_offer.js +var require_manage_buy_offer = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/manage_buy_offer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.manageBuyOffer = manageBuyOffer; + var _jsXdr = require_xdr(); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function manageBuyOffer(opts) { + var attributes = {}; + attributes.selling = opts.selling.toXDRObject(); + attributes.buying = opts.buying.toXDRObject(); + if (!this.isValidAmount(opts.buyAmount, true)) { + throw new TypeError(this.constructAmountRequirementsError("buyAmount")); + } + attributes.buyAmount = this._toXDRAmount(opts.buyAmount); + if (opts.price === void 0) { + throw new TypeError("price argument is required"); + } + attributes.price = this._toXDRPrice(opts.price); + if (opts.offerId !== void 0) { + opts.offerId = opts.offerId.toString(); + } else { + opts.offerId = "0"; + } + attributes.offerId = _jsXdr.Hyper.fromString(opts.offerId); + var manageBuyOfferOp = new _xdr["default"].ManageBuyOfferOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.manageBuyOffer(manageBuyOfferOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_receive.js +var require_path_payment_strict_receive = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_receive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.pathPaymentStrictReceive = pathPaymentStrictReceive; + var _xdr = _interopRequireDefault(require_xdr2()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function pathPaymentStrictReceive(opts) { + switch (true) { + case !opts.sendAsset: + throw new Error("Must specify a send asset"); + case !this.isValidAmount(opts.sendMax): + throw new TypeError(this.constructAmountRequirementsError("sendMax")); + case !opts.destAsset: + throw new Error("Must provide a destAsset for a payment operation"); + case !this.isValidAmount(opts.destAmount): + throw new TypeError(this.constructAmountRequirementsError("destAmount")); + default: + break; + } + var attributes = {}; + attributes.sendAsset = opts.sendAsset.toXDRObject(); + attributes.sendMax = this._toXDRAmount(opts.sendMax); + try { + attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination); + } catch (e) { + throw new Error("destination is invalid"); + } + attributes.destAsset = opts.destAsset.toXDRObject(); + attributes.destAmount = this._toXDRAmount(opts.destAmount); + var path2 = opts.path ? opts.path : []; + attributes.path = path2.map(function(x) { + return x.toXDRObject(); + }); + var payment = new _xdr["default"].PathPaymentStrictReceiveOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.pathPaymentStrictReceive(payment); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_send.js +var require_path_payment_strict_send = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_send.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.pathPaymentStrictSend = pathPaymentStrictSend; + var _xdr = _interopRequireDefault(require_xdr2()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function pathPaymentStrictSend(opts) { + switch (true) { + case !opts.sendAsset: + throw new Error("Must specify a send asset"); + case !this.isValidAmount(opts.sendAmount): + throw new TypeError(this.constructAmountRequirementsError("sendAmount")); + case !opts.destAsset: + throw new Error("Must provide a destAsset for a payment operation"); + case !this.isValidAmount(opts.destMin): + throw new TypeError(this.constructAmountRequirementsError("destMin")); + default: + break; + } + var attributes = {}; + attributes.sendAsset = opts.sendAsset.toXDRObject(); + attributes.sendAmount = this._toXDRAmount(opts.sendAmount); + try { + attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination); + } catch (e) { + throw new Error("destination is invalid"); + } + attributes.destAsset = opts.destAsset.toXDRObject(); + attributes.destMin = this._toXDRAmount(opts.destMin); + var path2 = opts.path ? opts.path : []; + attributes.path = path2.map(function(x) { + return x.toXDRObject(); + }); + var payment = new _xdr["default"].PathPaymentStrictSendOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.pathPaymentStrictSend(payment); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/payment.js +var require_payment2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/payment.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.payment = payment; + var _xdr = _interopRequireDefault(require_xdr2()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function payment(opts) { + if (!opts.asset) { + throw new Error("Must provide an asset for a payment operation"); + } + if (!this.isValidAmount(opts.amount)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + var attributes = {}; + try { + attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination); + } catch (e) { + throw new Error("destination is invalid"); + } + attributes.asset = opts.asset.toXDRObject(); + attributes.amount = this._toXDRAmount(opts.amount); + var paymentOp = new _xdr["default"].PaymentOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.payment(paymentOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/set_options.js +var require_set_options = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/set_options.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.setOptions = setOptions; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function weightCheckFunction(value, name) { + if (value >= 0 && value <= 255) { + return true; + } + throw new Error("".concat(name, " value must be between 0 and 255")); + } + function setOptions(opts) { + var attributes = {}; + if (opts.inflationDest) { + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.inflationDest)) { + throw new Error("inflationDest is invalid"); + } + attributes.inflationDest = _keypair.Keypair.fromPublicKey(opts.inflationDest).xdrAccountId(); + } + attributes.clearFlags = this._checkUnsignedIntValue("clearFlags", opts.clearFlags); + attributes.setFlags = this._checkUnsignedIntValue("setFlags", opts.setFlags); + attributes.masterWeight = this._checkUnsignedIntValue("masterWeight", opts.masterWeight, weightCheckFunction); + attributes.lowThreshold = this._checkUnsignedIntValue("lowThreshold", opts.lowThreshold, weightCheckFunction); + attributes.medThreshold = this._checkUnsignedIntValue("medThreshold", opts.medThreshold, weightCheckFunction); + attributes.highThreshold = this._checkUnsignedIntValue("highThreshold", opts.highThreshold, weightCheckFunction); + if (opts.homeDomain !== void 0 && typeof opts.homeDomain !== "string") { + throw new TypeError("homeDomain argument must be of type String"); + } + attributes.homeDomain = opts.homeDomain; + if (opts.signer) { + var weight = this._checkUnsignedIntValue("signer.weight", opts.signer.weight, weightCheckFunction); + var key; + var setValues = 0; + if (opts.signer.ed25519PublicKey) { + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.signer.ed25519PublicKey)) { + throw new Error("signer.ed25519PublicKey is invalid."); + } + var rawKey = _strkey.StrKey.decodeEd25519PublicKey(opts.signer.ed25519PublicKey); + key = new _xdr["default"].SignerKey.signerKeyTypeEd25519(rawKey); + setValues += 1; + } + if (opts.signer.preAuthTx) { + if (typeof opts.signer.preAuthTx === "string") { + opts.signer.preAuthTx = Buffer.from(opts.signer.preAuthTx, "hex"); + } + if (!(Buffer.isBuffer(opts.signer.preAuthTx) && opts.signer.preAuthTx.length === 32)) { + throw new Error("signer.preAuthTx must be 32 bytes Buffer."); + } + key = new _xdr["default"].SignerKey.signerKeyTypePreAuthTx(opts.signer.preAuthTx); + setValues += 1; + } + if (opts.signer.sha256Hash) { + if (typeof opts.signer.sha256Hash === "string") { + opts.signer.sha256Hash = Buffer.from(opts.signer.sha256Hash, "hex"); + } + if (!(Buffer.isBuffer(opts.signer.sha256Hash) && opts.signer.sha256Hash.length === 32)) { + throw new Error("signer.sha256Hash must be 32 bytes Buffer."); + } + key = new _xdr["default"].SignerKey.signerKeyTypeHashX(opts.signer.sha256Hash); + setValues += 1; + } + if (opts.signer.ed25519SignedPayload) { + if (!_strkey.StrKey.isValidSignedPayload(opts.signer.ed25519SignedPayload)) { + throw new Error("signer.ed25519SignedPayload is invalid."); + } + var _rawKey = _strkey.StrKey.decodeSignedPayload(opts.signer.ed25519SignedPayload); + var signedPayloadXdr = _xdr["default"].SignerKeyEd25519SignedPayload.fromXDR(_rawKey); + key = _xdr["default"].SignerKey.signerKeyTypeEd25519SignedPayload(signedPayloadXdr); + setValues += 1; + } + if (setValues !== 1) { + throw new Error("Signer object must contain exactly one of signer.ed25519PublicKey, signer.sha256Hash, signer.preAuthTx."); + } + attributes.signer = new _xdr["default"].Signer({ + key, + weight + }); + } + var setOptionsOp = new _xdr["default"].SetOptionsOp(attributes); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.setOptions(setOptionsOp); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/begin_sponsoring_future_reserves.js +var require_begin_sponsoring_future_reserves = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/begin_sponsoring_future_reserves.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.beginSponsoringFutureReserves = beginSponsoringFutureReserves; + var _xdr = _interopRequireDefault(require_xdr2()); + var _strkey = require_strkey(); + var _keypair = require_keypair(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function beginSponsoringFutureReserves() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.sponsoredId)) { + throw new Error("sponsoredId is invalid"); + } + var op = new _xdr["default"].BeginSponsoringFutureReservesOp({ + sponsoredId: _keypair.Keypair.fromPublicKey(opts.sponsoredId).xdrAccountId() + }); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.beginSponsoringFutureReserves(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/end_sponsoring_future_reserves.js +var require_end_sponsoring_future_reserves = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/end_sponsoring_future_reserves.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.endSponsoringFutureReserves = endSponsoringFutureReserves; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function endSponsoringFutureReserves() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.endSponsoringFutureReserves(); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/revoke_sponsorship.js +var require_revoke_sponsorship = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/revoke_sponsorship.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.revokeAccountSponsorship = revokeAccountSponsorship; + exports2.revokeClaimableBalanceSponsorship = revokeClaimableBalanceSponsorship; + exports2.revokeDataSponsorship = revokeDataSponsorship; + exports2.revokeLiquidityPoolSponsorship = revokeLiquidityPoolSponsorship; + exports2.revokeOfferSponsorship = revokeOfferSponsorship; + exports2.revokeSignerSponsorship = revokeSignerSponsorship; + exports2.revokeTrustlineSponsorship = revokeTrustlineSponsorship; + var _xdr = _interopRequireDefault(require_xdr2()); + var _strkey = require_strkey(); + var _keypair = require_keypair(); + var _asset = require_asset(); + var _liquidity_pool_id = require_liquidity_pool_id(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function revokeAccountSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) { + throw new Error("account is invalid"); + } + var ledgerKey = _xdr["default"].LedgerKey.account(new _xdr["default"].LedgerKeyAccount({ + accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId() + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeTrustlineSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) { + throw new Error("account is invalid"); + } + var asset; + if (opts.asset instanceof _asset.Asset) { + asset = opts.asset.toTrustLineXDRObject(); + } else if (opts.asset instanceof _liquidity_pool_id.LiquidityPoolId) { + asset = opts.asset.toXDRObject(); + } else { + throw new TypeError("asset must be an Asset or LiquidityPoolId"); + } + var ledgerKey = _xdr["default"].LedgerKey.trustline(new _xdr["default"].LedgerKeyTrustLine({ + accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(), + asset + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeOfferSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.seller)) { + throw new Error("seller is invalid"); + } + if (typeof opts.offerId !== "string") { + throw new Error("offerId is invalid"); + } + var ledgerKey = _xdr["default"].LedgerKey.offer(new _xdr["default"].LedgerKeyOffer({ + sellerId: _keypair.Keypair.fromPublicKey(opts.seller).xdrAccountId(), + offerId: _xdr["default"].Int64.fromString(opts.offerId) + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeDataSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) { + throw new Error("account is invalid"); + } + if (typeof opts.name !== "string" || opts.name.length > 64) { + throw new Error("name must be a string, up to 64 characters"); + } + var ledgerKey = _xdr["default"].LedgerKey.data(new _xdr["default"].LedgerKeyData({ + accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(), + dataName: opts.name + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeClaimableBalanceSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (typeof opts.balanceId !== "string") { + throw new Error("balanceId is invalid"); + } + var ledgerKey = _xdr["default"].LedgerKey.claimableBalance(new _xdr["default"].LedgerKeyClaimableBalance({ + balanceId: _xdr["default"].ClaimableBalanceId.fromXDR(opts.balanceId, "hex") + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeLiquidityPoolSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (typeof opts.liquidityPoolId !== "string") { + throw new Error("liquidityPoolId is invalid"); + } + var ledgerKey = _xdr["default"].LedgerKey.liquidityPool(new _xdr["default"].LedgerKeyLiquidityPool({ + liquidityPoolId: _xdr["default"].PoolId.fromXDR(opts.liquidityPoolId, "hex") + })); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey); + var opAttributes = { + body: _xdr["default"].OperationBody.revokeSponsorship(op) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function revokeSignerSponsorship() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) { + throw new Error("account is invalid"); + } + var key; + if (opts.signer.ed25519PublicKey) { + if (!_strkey.StrKey.isValidEd25519PublicKey(opts.signer.ed25519PublicKey)) { + throw new Error("signer.ed25519PublicKey is invalid."); + } + var rawKey = _strkey.StrKey.decodeEd25519PublicKey(opts.signer.ed25519PublicKey); + key = new _xdr["default"].SignerKey.signerKeyTypeEd25519(rawKey); + } else if (opts.signer.preAuthTx) { + var buffer; + if (typeof opts.signer.preAuthTx === "string") { + buffer = Buffer.from(opts.signer.preAuthTx, "hex"); + } else { + buffer = opts.signer.preAuthTx; + } + if (!(Buffer.isBuffer(buffer) && buffer.length === 32)) { + throw new Error("signer.preAuthTx must be 32 bytes Buffer."); + } + key = new _xdr["default"].SignerKey.signerKeyTypePreAuthTx(buffer); + } else if (opts.signer.sha256Hash) { + var _buffer; + if (typeof opts.signer.sha256Hash === "string") { + _buffer = Buffer.from(opts.signer.sha256Hash, "hex"); + } else { + _buffer = opts.signer.sha256Hash; + } + if (!(Buffer.isBuffer(_buffer) && _buffer.length === 32)) { + throw new Error("signer.sha256Hash must be 32 bytes Buffer."); + } + key = new _xdr["default"].SignerKey.signerKeyTypeHashX(_buffer); + } else { + throw new Error("signer is invalid"); + } + var signer = new _xdr["default"].RevokeSponsorshipOpSigner({ + accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(), + signerKey: key + }); + var op = _xdr["default"].RevokeSponsorshipOp.revokeSponsorshipSigner(signer); + var opAttributes = {}; + opAttributes.body = _xdr["default"].OperationBody.revokeSponsorship(op); + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/clawback.js +var require_clawback2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/clawback.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.clawback = clawback; + var _xdr = _interopRequireDefault(require_xdr2()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function clawback(opts) { + var attributes = {}; + if (!this.isValidAmount(opts.amount)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + attributes.amount = this._toXDRAmount(opts.amount); + attributes.asset = opts.asset.toXDRObject(); + try { + attributes.from = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.from); + } catch (e) { + throw new Error("from address is invalid"); + } + var opAttributes = { + body: _xdr["default"].OperationBody.clawback(new _xdr["default"].ClawbackOp(attributes)) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/set_trustline_flags.js +var require_set_trustline_flags = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/set_trustline_flags.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.setTrustLineFlags = setTrustLineFlags; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function setTrustLineFlags() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var attributes = {}; + if (_typeof(opts.flags) !== "object" || Object.keys(opts.flags).length === 0) { + throw new Error("opts.flags must be a map of boolean flags to modify"); + } + var mapping = { + authorized: _xdr["default"].TrustLineFlags.authorizedFlag(), + authorizedToMaintainLiabilities: _xdr["default"].TrustLineFlags.authorizedToMaintainLiabilitiesFlag(), + clawbackEnabled: _xdr["default"].TrustLineFlags.trustlineClawbackEnabledFlag() + }; + var clearFlag = 0; + var setFlag = 0; + Object.keys(opts.flags).forEach(function(flagName) { + if (!Object.prototype.hasOwnProperty.call(mapping, flagName)) { + throw new Error("unsupported flag name specified: ".concat(flagName)); + } + var flagValue = opts.flags[flagName]; + var bit = mapping[flagName].value; + if (flagValue === true) { + setFlag |= bit; + } else if (flagValue === false) { + clearFlag |= bit; + } + }); + attributes.trustor = _keypair.Keypair.fromPublicKey(opts.trustor).xdrAccountId(); + attributes.asset = opts.asset.toXDRObject(); + attributes.clearFlags = clearFlag; + attributes.setFlags = setFlag; + var opAttributes = { + body: _xdr["default"].OperationBody.setTrustLineFlags(new _xdr["default"].SetTrustLineFlagsOp(attributes)) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_deposit.js +var require_liquidity_pool_deposit = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_deposit.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.liquidityPoolDeposit = liquidityPoolDeposit; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function liquidityPoolDeposit() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var liquidityPoolId = opts.liquidityPoolId, maxAmountA = opts.maxAmountA, maxAmountB = opts.maxAmountB, minPrice = opts.minPrice, maxPrice = opts.maxPrice; + var attributes = {}; + if (!liquidityPoolId) { + throw new TypeError("liquidityPoolId argument is required"); + } + attributes.liquidityPoolId = _xdr["default"].PoolId.fromXDR(liquidityPoolId, "hex"); + if (!this.isValidAmount(maxAmountA, true)) { + throw new TypeError(this.constructAmountRequirementsError("maxAmountA")); + } + attributes.maxAmountA = this._toXDRAmount(maxAmountA); + if (!this.isValidAmount(maxAmountB, true)) { + throw new TypeError(this.constructAmountRequirementsError("maxAmountB")); + } + attributes.maxAmountB = this._toXDRAmount(maxAmountB); + if (minPrice === void 0) { + throw new TypeError("minPrice argument is required"); + } + attributes.minPrice = this._toXDRPrice(minPrice); + if (maxPrice === void 0) { + throw new TypeError("maxPrice argument is required"); + } + attributes.maxPrice = this._toXDRPrice(maxPrice); + var liquidityPoolDepositOp = new _xdr["default"].LiquidityPoolDepositOp(attributes); + var opAttributes = { + body: _xdr["default"].OperationBody.liquidityPoolDeposit(liquidityPoolDepositOp) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_withdraw.js +var require_liquidity_pool_withdraw = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_withdraw.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.liquidityPoolWithdraw = liquidityPoolWithdraw; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function liquidityPoolWithdraw() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var attributes = {}; + if (!opts.liquidityPoolId) { + throw new TypeError("liquidityPoolId argument is required"); + } + attributes.liquidityPoolId = _xdr["default"].PoolId.fromXDR(opts.liquidityPoolId, "hex"); + if (!this.isValidAmount(opts.amount)) { + throw new TypeError(this.constructAmountRequirementsError("amount")); + } + attributes.amount = this._toXDRAmount(opts.amount); + if (!this.isValidAmount(opts.minAmountA, true)) { + throw new TypeError(this.constructAmountRequirementsError("minAmountA")); + } + attributes.minAmountA = this._toXDRAmount(opts.minAmountA); + if (!this.isValidAmount(opts.minAmountB, true)) { + throw new TypeError(this.constructAmountRequirementsError("minAmountB")); + } + attributes.minAmountB = this._toXDRAmount(opts.minAmountB); + var liquidityPoolWithdrawOp = new _xdr["default"].LiquidityPoolWithdrawOp(attributes); + var opAttributes = { + body: _xdr["default"].OperationBody.liquidityPoolWithdraw(liquidityPoolWithdrawOp) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/address.js +var require_address2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/address.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Address = void 0; + var _strkey = require_strkey(); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Address3 = exports2.Address = /* @__PURE__ */ function() { + function Address4(address) { + _classCallCheck(this, Address4); + if (_strkey.StrKey.isValidEd25519PublicKey(address)) { + this._type = "account"; + this._key = _strkey.StrKey.decodeEd25519PublicKey(address); + } else if (_strkey.StrKey.isValidContract(address)) { + this._type = "contract"; + this._key = _strkey.StrKey.decodeContract(address); + } else if (_strkey.StrKey.isValidMed25519PublicKey(address)) { + this._type = "muxedAccount"; + this._key = _strkey.StrKey.decodeMed25519PublicKey(address); + } else if (_strkey.StrKey.isValidClaimableBalance(address)) { + this._type = "claimableBalance"; + this._key = _strkey.StrKey.decodeClaimableBalance(address); + } else if (_strkey.StrKey.isValidLiquidityPool(address)) { + this._type = "liquidityPool"; + this._key = _strkey.StrKey.decodeLiquidityPool(address); + } else { + throw new Error("Unsupported address type: ".concat(address)); + } + } + return _createClass(Address4, [{ + key: "toString", + value: ( + /** + * Serialize an address to string. + * + * @returns {string} + */ + function toString() { + switch (this._type) { + case "account": + return _strkey.StrKey.encodeEd25519PublicKey(this._key); + case "contract": + return _strkey.StrKey.encodeContract(this._key); + case "claimableBalance": + return _strkey.StrKey.encodeClaimableBalance(this._key); + case "liquidityPool": + return _strkey.StrKey.encodeLiquidityPool(this._key); + case "muxedAccount": + return _strkey.StrKey.encodeMed25519PublicKey(this._key); + default: + throw new Error("Unsupported address type"); + } + } + ) + /** + * Convert this Address to an xdr.ScVal type. + * + * @returns {xdr.ScVal} + */ + }, { + key: "toScVal", + value: function toScVal() { + return _xdr["default"].ScVal.scvAddress(this.toScAddress()); + } + /** + * Convert this Address to an xdr.ScAddress type. + * + * @returns {xdr.ScAddress} + */ + }, { + key: "toScAddress", + value: function toScAddress() { + switch (this._type) { + case "account": + return _xdr["default"].ScAddress.scAddressTypeAccount(_xdr["default"].PublicKey.publicKeyTypeEd25519(this._key)); + case "contract": + return _xdr["default"].ScAddress.scAddressTypeContract(this._key); + case "liquidityPool": + return _xdr["default"].ScAddress.scAddressTypeLiquidityPool(this._key); + case "claimableBalance": + return _xdr["default"].ScAddress.scAddressTypeClaimableBalance(new _xdr["default"].ClaimableBalanceId( + "claimableBalanceIdTypeV".concat(this._key.at(0)), + // future-proof for cb v1 + this._key.subarray(1) + )); + case "muxedAccount": + return _xdr["default"].ScAddress.scAddressTypeMuxedAccount(new _xdr["default"].MuxedEd25519Account({ + ed25519: this._key.subarray(0, 32), + id: _xdr["default"].Uint64.fromXDR(this._key.subarray(32, 40), "raw") + })); + default: + throw new Error("Unsupported address type: ".concat(this._type)); + } + } + /** + * Return the raw public key bytes for this address. + * + * @returns {Buffer} + */ + }, { + key: "toBuffer", + value: function toBuffer() { + return this._key; + } + }], [{ + key: "fromString", + value: function fromString(address) { + return new Address4(address); + } + /** + * Creates a new account Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an address to parse. + * @returns {Address} + */ + }, { + key: "account", + value: function account(buffer) { + return new Address4(_strkey.StrKey.encodeEd25519PublicKey(buffer)); + } + /** + * Creates a new contract Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an address to parse. + * @returns {Address} + */ + }, { + key: "contract", + value: function contract(buffer) { + return new Address4(_strkey.StrKey.encodeContract(buffer)); + } + /** + * Creates a new claimable balance Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of a claimable balance ID to parse. + * @returns {Address} + */ + }, { + key: "claimableBalance", + value: function claimableBalance(buffer) { + return new Address4(_strkey.StrKey.encodeClaimableBalance(buffer)); + } + /** + * Creates a new liquidity pool Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an LP ID to parse. + * @returns {Address} + */ + }, { + key: "liquidityPool", + value: function liquidityPool(buffer) { + return new Address4(_strkey.StrKey.encodeLiquidityPool(buffer)); + } + /** + * Creates a new muxed account Address object from a buffer of raw bytes. + * + * @param {Buffer} buffer - The bytes of an address to parse. + * @returns {Address} + */ + }, { + key: "muxedAccount", + value: function muxedAccount(buffer) { + return new Address4(_strkey.StrKey.encodeMed25519PublicKey(buffer)); + } + /** + * Convert this from an xdr.ScVal type. + * + * @param {xdr.ScVal} scVal - The xdr.ScVal type to parse + * @returns {Address} + */ + }, { + key: "fromScVal", + value: function fromScVal(scVal) { + return Address4.fromScAddress(scVal.address()); + } + /** + * Convert this from an xdr.ScAddress type + * + * @param {xdr.ScAddress} scAddress - The xdr.ScAddress type to parse + * @returns {Address} + */ + }, { + key: "fromScAddress", + value: function fromScAddress(scAddress) { + switch (scAddress["switch"]().value) { + case _xdr["default"].ScAddressType.scAddressTypeAccount().value: + return Address4.account(scAddress.accountId().ed25519()); + case _xdr["default"].ScAddressType.scAddressTypeContract().value: + return Address4.contract(scAddress.contractId()); + case _xdr["default"].ScAddressType.scAddressTypeMuxedAccount().value: { + var raw = Buffer.concat([scAddress.muxedAccount().ed25519(), scAddress.muxedAccount().id().toXDR("raw")]); + return Address4.muxedAccount(raw); + } + case _xdr["default"].ScAddressType.scAddressTypeClaimableBalance().value: { + var cbi = scAddress.claimableBalanceId(); + return Address4.claimableBalance(Buffer.concat([Buffer.from([cbi["switch"]().value]), cbi.v0()])); + } + case _xdr["default"].ScAddressType.scAddressTypeLiquidityPool().value: + return Address4.liquidityPool(scAddress.liquidityPoolId()); + default: + throw new Error("Unsupported address type: ".concat(scAddress["switch"]().name)); + } + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/invoke_host_function.js +var require_invoke_host_function = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/invoke_host_function.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createCustomContract = createCustomContract; + exports2.createStellarAssetContract = createStellarAssetContract; + exports2.invokeContractFunction = invokeContractFunction; + exports2.invokeHostFunction = invokeHostFunction; + exports2.uploadContractWasm = uploadContractWasm; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _address = require_address2(); + var _asset = require_asset(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function invokeHostFunction(opts) { + if (!opts.func) { + throw new TypeError("host function invocation ('func') required (got ".concat(JSON.stringify(opts), ")")); + } + if (opts.func["switch"]().value === _xdr["default"].HostFunctionType.hostFunctionTypeInvokeContract().value) { + opts.func.invokeContract().args().forEach(function(arg) { + var scv; + try { + scv = _address.Address.fromScVal(arg); + } catch (_unused) { + return; + } + switch (scv._type) { + case "claimableBalance": + case "liquidityPool": + throw new TypeError("claimable balances and liquidity pools cannot be arguments to invokeHostFunction"); + default: + } + }); + } + var invokeHostFunctionOp = new _xdr["default"].InvokeHostFunctionOp({ + hostFunction: opts.func, + auth: opts.auth || [] + }); + var opAttributes = { + body: _xdr["default"].OperationBody.invokeHostFunction(invokeHostFunctionOp) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + function invokeContractFunction(opts) { + var c = new _address.Address(opts.contract); + if (c._type !== "contract") { + throw new TypeError("expected contract strkey instance, got ".concat(c)); + } + return this.invokeHostFunction({ + source: opts.source, + auth: opts.auth, + func: _xdr["default"].HostFunction.hostFunctionTypeInvokeContract(new _xdr["default"].InvokeContractArgs({ + contractAddress: c.toScAddress(), + functionName: opts["function"], + args: opts.args + })) + }); + } + function createCustomContract(opts) { + var _opts$constructorArgs; + var salt = Buffer.from(opts.salt || getSalty()); + if (!opts.wasmHash || opts.wasmHash.length !== 32) { + throw new TypeError("expected hash(contract WASM) in 'opts.wasmHash', got ".concat(opts.wasmHash)); + } + if (salt.length !== 32) { + throw new TypeError("expected 32-byte salt in 'opts.salt', got ".concat(opts.wasmHash)); + } + return this.invokeHostFunction({ + source: opts.source, + auth: opts.auth, + func: _xdr["default"].HostFunction.hostFunctionTypeCreateContractV2(new _xdr["default"].CreateContractArgsV2({ + executable: _xdr["default"].ContractExecutable.contractExecutableWasm(Buffer.from(opts.wasmHash)), + contractIdPreimage: _xdr["default"].ContractIdPreimage.contractIdPreimageFromAddress(new _xdr["default"].ContractIdPreimageFromAddress({ + address: opts.address.toScAddress(), + salt + })), + constructorArgs: (_opts$constructorArgs = opts.constructorArgs) !== null && _opts$constructorArgs !== void 0 ? _opts$constructorArgs : [] + })) + }); + } + function createStellarAssetContract(opts) { + var asset = opts.asset; + if (typeof asset === "string") { + var _asset$split = asset.split(":"), _asset$split2 = _slicedToArray(_asset$split, 2), code = _asset$split2[0], issuer = _asset$split2[1]; + asset = new _asset.Asset(code, issuer); + } + if (!(asset instanceof _asset.Asset)) { + throw new TypeError("expected Asset in 'opts.asset', got ".concat(asset)); + } + return this.invokeHostFunction({ + source: opts.source, + auth: opts.auth, + func: _xdr["default"].HostFunction.hostFunctionTypeCreateContract(new _xdr["default"].CreateContractArgs({ + executable: _xdr["default"].ContractExecutable.contractExecutableStellarAsset(), + contractIdPreimage: _xdr["default"].ContractIdPreimage.contractIdPreimageFromAsset(asset.toXDRObject()) + })) + }); + } + function uploadContractWasm(opts) { + return this.invokeHostFunction({ + source: opts.source, + auth: opts.auth, + func: _xdr["default"].HostFunction.hostFunctionTypeUploadContractWasm( + Buffer.from(opts.wasm) + // coalesce so we can drop `Buffer` someday + ) + }); + } + function getSalty() { + return _keypair.Keypair.random().xdrPublicKey().value(); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/extend_footprint_ttl.js +var require_extend_footprint_ttl = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/extend_footprint_ttl.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.extendFootprintTtl = extendFootprintTtl; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function extendFootprintTtl(opts) { + var _opts$extendTo; + if (((_opts$extendTo = opts.extendTo) !== null && _opts$extendTo !== void 0 ? _opts$extendTo : -1) <= 0) { + throw new RangeError("extendTo has to be positive"); + } + var extendFootprintOp = new _xdr["default"].ExtendFootprintTtlOp({ + ext: new _xdr["default"].ExtensionPoint(0), + extendTo: opts.extendTo + }); + var opAttributes = { + body: _xdr["default"].OperationBody.extendFootprintTtl(extendFootprintOp) + }; + this.setSourceAccount(opAttributes, opts); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/restore_footprint.js +var require_restore_footprint = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/restore_footprint.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.restoreFootprint = restoreFootprint; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function restoreFootprint() { + var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var op = new _xdr["default"].RestoreFootprintOp({ + ext: new _xdr["default"].ExtensionPoint(0) + }); + var opAttributes = { + body: _xdr["default"].OperationBody.restoreFootprint(op) + }; + this.setSourceAccount(opAttributes, opts !== null && opts !== void 0 ? opts : {}); + return new _xdr["default"].Operation(opAttributes); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/operations/index.js +var require_operations = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operations/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + Object.defineProperty(exports2, "accountMerge", { + enumerable: true, + get: function get() { + return _account_merge.accountMerge; + } + }); + Object.defineProperty(exports2, "allowTrust", { + enumerable: true, + get: function get() { + return _allow_trust.allowTrust; + } + }); + Object.defineProperty(exports2, "beginSponsoringFutureReserves", { + enumerable: true, + get: function get() { + return _begin_sponsoring_future_reserves.beginSponsoringFutureReserves; + } + }); + Object.defineProperty(exports2, "bumpSequence", { + enumerable: true, + get: function get() { + return _bump_sequence.bumpSequence; + } + }); + Object.defineProperty(exports2, "changeTrust", { + enumerable: true, + get: function get() { + return _change_trust.changeTrust; + } + }); + Object.defineProperty(exports2, "claimClaimableBalance", { + enumerable: true, + get: function get() { + return _claim_claimable_balance.claimClaimableBalance; + } + }); + Object.defineProperty(exports2, "clawback", { + enumerable: true, + get: function get() { + return _clawback.clawback; + } + }); + Object.defineProperty(exports2, "clawbackClaimableBalance", { + enumerable: true, + get: function get() { + return _clawback_claimable_balance.clawbackClaimableBalance; + } + }); + Object.defineProperty(exports2, "createAccount", { + enumerable: true, + get: function get() { + return _create_account.createAccount; + } + }); + Object.defineProperty(exports2, "createClaimableBalance", { + enumerable: true, + get: function get() { + return _create_claimable_balance.createClaimableBalance; + } + }); + Object.defineProperty(exports2, "createCustomContract", { + enumerable: true, + get: function get() { + return _invoke_host_function.createCustomContract; + } + }); + Object.defineProperty(exports2, "createPassiveSellOffer", { + enumerable: true, + get: function get() { + return _create_passive_sell_offer.createPassiveSellOffer; + } + }); + Object.defineProperty(exports2, "createStellarAssetContract", { + enumerable: true, + get: function get() { + return _invoke_host_function.createStellarAssetContract; + } + }); + Object.defineProperty(exports2, "endSponsoringFutureReserves", { + enumerable: true, + get: function get() { + return _end_sponsoring_future_reserves.endSponsoringFutureReserves; + } + }); + Object.defineProperty(exports2, "extendFootprintTtl", { + enumerable: true, + get: function get() { + return _extend_footprint_ttl.extendFootprintTtl; + } + }); + Object.defineProperty(exports2, "inflation", { + enumerable: true, + get: function get() { + return _inflation.inflation; + } + }); + Object.defineProperty(exports2, "invokeContractFunction", { + enumerable: true, + get: function get() { + return _invoke_host_function.invokeContractFunction; + } + }); + Object.defineProperty(exports2, "invokeHostFunction", { + enumerable: true, + get: function get() { + return _invoke_host_function.invokeHostFunction; + } + }); + Object.defineProperty(exports2, "liquidityPoolDeposit", { + enumerable: true, + get: function get() { + return _liquidity_pool_deposit.liquidityPoolDeposit; + } + }); + Object.defineProperty(exports2, "liquidityPoolWithdraw", { + enumerable: true, + get: function get() { + return _liquidity_pool_withdraw.liquidityPoolWithdraw; + } + }); + Object.defineProperty(exports2, "manageBuyOffer", { + enumerable: true, + get: function get() { + return _manage_buy_offer.manageBuyOffer; + } + }); + Object.defineProperty(exports2, "manageData", { + enumerable: true, + get: function get() { + return _manage_data.manageData; + } + }); + Object.defineProperty(exports2, "manageSellOffer", { + enumerable: true, + get: function get() { + return _manage_sell_offer.manageSellOffer; + } + }); + Object.defineProperty(exports2, "pathPaymentStrictReceive", { + enumerable: true, + get: function get() { + return _path_payment_strict_receive.pathPaymentStrictReceive; + } + }); + Object.defineProperty(exports2, "pathPaymentStrictSend", { + enumerable: true, + get: function get() { + return _path_payment_strict_send.pathPaymentStrictSend; + } + }); + Object.defineProperty(exports2, "payment", { + enumerable: true, + get: function get() { + return _payment.payment; + } + }); + Object.defineProperty(exports2, "restoreFootprint", { + enumerable: true, + get: function get() { + return _restore_footprint.restoreFootprint; + } + }); + Object.defineProperty(exports2, "revokeAccountSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeAccountSponsorship; + } + }); + Object.defineProperty(exports2, "revokeClaimableBalanceSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeClaimableBalanceSponsorship; + } + }); + Object.defineProperty(exports2, "revokeDataSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeDataSponsorship; + } + }); + Object.defineProperty(exports2, "revokeLiquidityPoolSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeLiquidityPoolSponsorship; + } + }); + Object.defineProperty(exports2, "revokeOfferSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeOfferSponsorship; + } + }); + Object.defineProperty(exports2, "revokeSignerSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeSignerSponsorship; + } + }); + Object.defineProperty(exports2, "revokeTrustlineSponsorship", { + enumerable: true, + get: function get() { + return _revoke_sponsorship.revokeTrustlineSponsorship; + } + }); + Object.defineProperty(exports2, "setOptions", { + enumerable: true, + get: function get() { + return _set_options.setOptions; + } + }); + Object.defineProperty(exports2, "setTrustLineFlags", { + enumerable: true, + get: function get() { + return _set_trustline_flags.setTrustLineFlags; + } + }); + Object.defineProperty(exports2, "uploadContractWasm", { + enumerable: true, + get: function get() { + return _invoke_host_function.uploadContractWasm; + } + }); + var _manage_sell_offer = require_manage_sell_offer(); + var _create_passive_sell_offer = require_create_passive_sell_offer(); + var _account_merge = require_account_merge(); + var _allow_trust = require_allow_trust(); + var _bump_sequence = require_bump_sequence(); + var _change_trust = require_change_trust(); + var _create_account = require_create_account(); + var _create_claimable_balance = require_create_claimable_balance(); + var _claim_claimable_balance = require_claim_claimable_balance(); + var _clawback_claimable_balance = require_clawback_claimable_balance(); + var _inflation = require_inflation(); + var _manage_data = require_manage_data(); + var _manage_buy_offer = require_manage_buy_offer(); + var _path_payment_strict_receive = require_path_payment_strict_receive(); + var _path_payment_strict_send = require_path_payment_strict_send(); + var _payment = require_payment2(); + var _set_options = require_set_options(); + var _begin_sponsoring_future_reserves = require_begin_sponsoring_future_reserves(); + var _end_sponsoring_future_reserves = require_end_sponsoring_future_reserves(); + var _revoke_sponsorship = require_revoke_sponsorship(); + var _clawback = require_clawback2(); + var _set_trustline_flags = require_set_trustline_flags(); + var _liquidity_pool_deposit = require_liquidity_pool_deposit(); + var _liquidity_pool_withdraw = require_liquidity_pool_withdraw(); + var _invoke_host_function = require_invoke_host_function(); + var _extend_footprint_ttl = require_extend_footprint_ttl(); + var _restore_footprint = require_restore_footprint(); + } +}); + +// node_modules/@stellar/stellar-base/lib/operation.js +var require_operation = __commonJS({ + "node_modules/@stellar/stellar-base/lib/operation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Operation = exports2.AuthRevocableFlag = exports2.AuthRequiredFlag = exports2.AuthImmutableFlag = exports2.AuthClawbackEnabledFlag = void 0; + var _jsXdr = require_xdr(); + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _util = require_util5(); + var _continued_fraction = require_continued_fraction(); + var _asset = require_asset(); + var _liquidity_pool_asset = require_liquidity_pool_asset(); + var _claimant = require_claimant(); + var _strkey = require_strkey(); + var _liquidity_pool_id = require_liquidity_pool_id(); + var _xdr = _interopRequireDefault(require_xdr2()); + var ops = _interopRequireWildcard(require_operations()); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, "default": e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t in e2) "default" !== _t && {}.hasOwnProperty.call(e2, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e2[_t]); + return f; + })(e, t); + } + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var ONE = 1e7; + var MAX_INT64 = "9223372036854775807"; + var AuthRequiredFlag = exports2.AuthRequiredFlag = 1 << 0; + var AuthRevocableFlag = exports2.AuthRevocableFlag = 1 << 1; + var AuthImmutableFlag = exports2.AuthImmutableFlag = 1 << 2; + var AuthClawbackEnabledFlag = exports2.AuthClawbackEnabledFlag = 1 << 3; + var Operation = exports2.Operation = /* @__PURE__ */ function() { + function Operation2() { + _classCallCheck(this, Operation2); + } + return _createClass(Operation2, null, [{ + key: "setSourceAccount", + value: function setSourceAccount(opAttributes, opts) { + if (opts.source) { + try { + opAttributes.sourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.source); + } catch (e) { + throw new Error("Source address is invalid"); + } + } + } + /** + * Deconstructs the raw XDR operation object into the structured object that + * was used to create the operation (i.e. the `opts` parameter to most ops). + * + * @param {xdr.Operation} operation - An XDR Operation. + * @return {Operation} + */ + }, { + key: "fromXDRObject", + value: function fromXDRObject(operation) { + var result = {}; + if (operation.sourceAccount()) { + result.source = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(operation.sourceAccount()); + } + var attrs = operation.body().value(); + var operationName = operation.body()["switch"]().name; + switch (operationName) { + case "createAccount": { + result.type = "createAccount"; + result.destination = accountIdtoAddress(attrs.destination()); + result.startingBalance = this._fromXDRAmount(attrs.startingBalance()); + break; + } + case "payment": { + result.type = "payment"; + result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination()); + result.asset = _asset.Asset.fromOperation(attrs.asset()); + result.amount = this._fromXDRAmount(attrs.amount()); + break; + } + case "pathPaymentStrictReceive": { + result.type = "pathPaymentStrictReceive"; + result.sendAsset = _asset.Asset.fromOperation(attrs.sendAsset()); + result.sendMax = this._fromXDRAmount(attrs.sendMax()); + result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination()); + result.destAsset = _asset.Asset.fromOperation(attrs.destAsset()); + result.destAmount = this._fromXDRAmount(attrs.destAmount()); + result.path = []; + var path2 = attrs.path(); + Object.keys(path2).forEach(function(pathKey) { + result.path.push(_asset.Asset.fromOperation(path2[pathKey])); + }); + break; + } + case "pathPaymentStrictSend": { + result.type = "pathPaymentStrictSend"; + result.sendAsset = _asset.Asset.fromOperation(attrs.sendAsset()); + result.sendAmount = this._fromXDRAmount(attrs.sendAmount()); + result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination()); + result.destAsset = _asset.Asset.fromOperation(attrs.destAsset()); + result.destMin = this._fromXDRAmount(attrs.destMin()); + result.path = []; + var _path = attrs.path(); + Object.keys(_path).forEach(function(pathKey) { + result.path.push(_asset.Asset.fromOperation(_path[pathKey])); + }); + break; + } + case "changeTrust": { + result.type = "changeTrust"; + switch (attrs.line()["switch"]()) { + case _xdr["default"].AssetType.assetTypePoolShare(): + result.line = _liquidity_pool_asset.LiquidityPoolAsset.fromOperation(attrs.line()); + break; + default: + result.line = _asset.Asset.fromOperation(attrs.line()); + break; + } + result.limit = this._fromXDRAmount(attrs.limit()); + break; + } + case "allowTrust": { + result.type = "allowTrust"; + result.trustor = accountIdtoAddress(attrs.trustor()); + result.assetCode = attrs.asset().value().toString(); + result.assetCode = (0, _util.trimEnd)(result.assetCode, "\0"); + result.authorize = attrs.authorize(); + break; + } + case "setOptions": { + result.type = "setOptions"; + if (attrs.inflationDest()) { + result.inflationDest = accountIdtoAddress(attrs.inflationDest()); + } + result.clearFlags = attrs.clearFlags(); + result.setFlags = attrs.setFlags(); + result.masterWeight = attrs.masterWeight(); + result.lowThreshold = attrs.lowThreshold(); + result.medThreshold = attrs.medThreshold(); + result.highThreshold = attrs.highThreshold(); + result.homeDomain = attrs.homeDomain() !== void 0 ? attrs.homeDomain().toString("ascii") : void 0; + if (attrs.signer()) { + var signer = {}; + var arm = attrs.signer().key().arm(); + if (arm === "ed25519") { + signer.ed25519PublicKey = accountIdtoAddress(attrs.signer().key()); + } else if (arm === "preAuthTx") { + signer.preAuthTx = attrs.signer().key().preAuthTx(); + } else if (arm === "hashX") { + signer.sha256Hash = attrs.signer().key().hashX(); + } else if (arm === "ed25519SignedPayload") { + var signedPayload = attrs.signer().key().ed25519SignedPayload(); + signer.ed25519SignedPayload = _strkey.StrKey.encodeSignedPayload(signedPayload.toXDR()); + } + signer.weight = attrs.signer().weight(); + result.signer = signer; + } + break; + } + // the next case intentionally falls through! + case "manageOffer": + case "manageSellOffer": { + result.type = "manageSellOffer"; + result.selling = _asset.Asset.fromOperation(attrs.selling()); + result.buying = _asset.Asset.fromOperation(attrs.buying()); + result.amount = this._fromXDRAmount(attrs.amount()); + result.price = this._fromXDRPrice(attrs.price()); + result.offerId = attrs.offerId().toString(); + break; + } + case "manageBuyOffer": { + result.type = "manageBuyOffer"; + result.selling = _asset.Asset.fromOperation(attrs.selling()); + result.buying = _asset.Asset.fromOperation(attrs.buying()); + result.buyAmount = this._fromXDRAmount(attrs.buyAmount()); + result.price = this._fromXDRPrice(attrs.price()); + result.offerId = attrs.offerId().toString(); + break; + } + // the next case intentionally falls through! + case "createPassiveOffer": + case "createPassiveSellOffer": { + result.type = "createPassiveSellOffer"; + result.selling = _asset.Asset.fromOperation(attrs.selling()); + result.buying = _asset.Asset.fromOperation(attrs.buying()); + result.amount = this._fromXDRAmount(attrs.amount()); + result.price = this._fromXDRPrice(attrs.price()); + break; + } + case "accountMerge": { + result.type = "accountMerge"; + result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs); + break; + } + case "manageData": { + result.type = "manageData"; + result.name = attrs.dataName().toString("ascii"); + result.value = attrs.dataValue(); + break; + } + case "inflation": { + result.type = "inflation"; + break; + } + case "bumpSequence": { + result.type = "bumpSequence"; + result.bumpTo = attrs.bumpTo().toString(); + break; + } + case "createClaimableBalance": { + result.type = "createClaimableBalance"; + result.asset = _asset.Asset.fromOperation(attrs.asset()); + result.amount = this._fromXDRAmount(attrs.amount()); + result.claimants = []; + attrs.claimants().forEach(function(claimant) { + result.claimants.push(_claimant.Claimant.fromXDR(claimant)); + }); + break; + } + case "claimClaimableBalance": { + result.type = "claimClaimableBalance"; + result.balanceId = attrs.toXDR("hex"); + break; + } + case "beginSponsoringFutureReserves": { + result.type = "beginSponsoringFutureReserves"; + result.sponsoredId = accountIdtoAddress(attrs.sponsoredId()); + break; + } + case "endSponsoringFutureReserves": { + result.type = "endSponsoringFutureReserves"; + break; + } + case "revokeSponsorship": { + extractRevokeSponshipDetails(attrs, result); + break; + } + case "clawback": { + result.type = "clawback"; + result.amount = this._fromXDRAmount(attrs.amount()); + result.from = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.from()); + result.asset = _asset.Asset.fromOperation(attrs.asset()); + break; + } + case "clawbackClaimableBalance": { + result.type = "clawbackClaimableBalance"; + result.balanceId = attrs.toXDR("hex"); + break; + } + case "setTrustLineFlags": { + result.type = "setTrustLineFlags"; + result.asset = _asset.Asset.fromOperation(attrs.asset()); + result.trustor = accountIdtoAddress(attrs.trustor()); + var clears = attrs.clearFlags(); + var sets = attrs.setFlags(); + var mapping = { + authorized: _xdr["default"].TrustLineFlags.authorizedFlag(), + authorizedToMaintainLiabilities: _xdr["default"].TrustLineFlags.authorizedToMaintainLiabilitiesFlag(), + clawbackEnabled: _xdr["default"].TrustLineFlags.trustlineClawbackEnabledFlag() + }; + var getFlagValue = function getFlagValue2(key) { + var bit = mapping[key].value; + if (sets & bit) { + return true; + } + if (clears & bit) { + return false; + } + return void 0; + }; + result.flags = {}; + Object.keys(mapping).forEach(function(flagName) { + result.flags[flagName] = getFlagValue(flagName); + }); + break; + } + case "liquidityPoolDeposit": { + result.type = "liquidityPoolDeposit"; + result.liquidityPoolId = attrs.liquidityPoolId().toString("hex"); + result.maxAmountA = this._fromXDRAmount(attrs.maxAmountA()); + result.maxAmountB = this._fromXDRAmount(attrs.maxAmountB()); + result.minPrice = this._fromXDRPrice(attrs.minPrice()); + result.maxPrice = this._fromXDRPrice(attrs.maxPrice()); + break; + } + case "liquidityPoolWithdraw": { + result.type = "liquidityPoolWithdraw"; + result.liquidityPoolId = attrs.liquidityPoolId().toString("hex"); + result.amount = this._fromXDRAmount(attrs.amount()); + result.minAmountA = this._fromXDRAmount(attrs.minAmountA()); + result.minAmountB = this._fromXDRAmount(attrs.minAmountB()); + break; + } + case "invokeHostFunction": { + var _attrs$auth; + result.type = "invokeHostFunction"; + result.func = attrs.hostFunction(); + result.auth = (_attrs$auth = attrs.auth()) !== null && _attrs$auth !== void 0 ? _attrs$auth : []; + break; + } + case "extendFootprintTtl": { + result.type = "extendFootprintTtl"; + result.extendTo = attrs.extendTo(); + break; + } + case "restoreFootprint": { + result.type = "restoreFootprint"; + break; + } + default: { + throw new Error("Unknown operation: ".concat(operationName)); + } + } + return result; + } + /** + * Validates that a given amount is possible for a Stellar asset. + * + * Specifically, this means that the amount is well, a valid number, but also + * that it is within the int64 range and has no more than 7 decimal levels of + * precision. + * + * Note that while smart contracts allow larger amounts, this is oriented + * towards validating the standard Stellar operations. + * + * @param {string} value the amount to validate + * @param {boolean} allowZero optionally, whether or not zero is valid (default: no) + * + * @returns {boolean} + */ + }, { + key: "isValidAmount", + value: function isValidAmount(value) { + var allowZero = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; + if (typeof value !== "string") { + return false; + } + var amount; + try { + amount = new _bignumber["default"](value); + } catch (e) { + return false; + } + if ( + // == 0 + !allowZero && amount.isZero() || // < 0 + amount.isNegative() || // > Max value + amount.times(ONE).gt(new _bignumber["default"](MAX_INT64).toString()) || // Decimal places (max 7) + amount.decimalPlaces() > 7 || // NaN or Infinity + amount.isNaN() || !amount.isFinite() + ) { + return false; + } + return true; + } + }, { + key: "constructAmountRequirementsError", + value: function constructAmountRequirementsError(arg) { + return "".concat(arg, " argument must be of type String, represent a positive number and have at most 7 digits after the decimal"); + } + /** + * Returns value converted to uint32 value or undefined. + * If `value` is not `Number`, `String` or `Undefined` then throws an error. + * Used in {@link Operation.setOptions}. + * @private + * @param {string} name Name of the property (used in error message only) + * @param {*} value Value to check + * @param {function(value, name)} isValidFunction Function to check other constraints (the argument will be a `Number`) + * @returns {undefined|Number} + */ + }, { + key: "_checkUnsignedIntValue", + value: function _checkUnsignedIntValue(name, value) { + var isValidFunction = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null; + if (typeof value === "undefined") { + return void 0; + } + if (typeof value === "string") { + value = parseFloat(value); + } + switch (true) { + case (typeof value !== "number" || !Number.isFinite(value) || value % 1 !== 0): + throw new Error("".concat(name, " value is invalid")); + case value < 0: + throw new Error("".concat(name, " value must be unsigned")); + case (!isValidFunction || isValidFunction && isValidFunction(value, name)): + return value; + default: + throw new Error("".concat(name, " value is invalid")); + } + } + /** + * @private + * @param {string|BigNumber} value Value + * @returns {Hyper} XDR amount + */ + }, { + key: "_toXDRAmount", + value: function _toXDRAmount(value) { + var amount = new _bignumber["default"](value).times(ONE); + return _jsXdr.Hyper.fromString(amount.toString()); + } + /** + * @private + * @param {string|BigNumber} value XDR amount + * @returns {BigNumber} Number + */ + }, { + key: "_fromXDRAmount", + value: function _fromXDRAmount(value) { + return new _bignumber["default"](value).div(ONE).toFixed(7); + } + /** + * @private + * @param {object} price Price object + * @param {function} price.n numerator function that returns a value + * @param {function} price.d denominator function that returns a value + * @returns {BigNumber} Big string + */ + }, { + key: "_fromXDRPrice", + value: function _fromXDRPrice(price) { + var n = new _bignumber["default"](price.n()); + return n.div(new _bignumber["default"](price.d())).toString(); + } + /** + * @private + * @param {object} price Price object + * @param {function} price.n numerator function that returns a value + * @param {function} price.d denominator function that returns a value + * @returns {object} XDR price object + */ + }, { + key: "_toXDRPrice", + value: function _toXDRPrice(price) { + var xdrObject; + if (price.n && price.d) { + xdrObject = new _xdr["default"].Price(price); + } else { + var approx = (0, _continued_fraction.best_r)(price); + xdrObject = new _xdr["default"].Price({ + n: parseInt(approx[0], 10), + d: parseInt(approx[1], 10) + }); + } + if (xdrObject.n() < 0 || xdrObject.d() < 0) { + throw new Error("price must be positive"); + } + return xdrObject; + } + }]); + }(); + function extractRevokeSponshipDetails(attrs, result) { + switch (attrs["switch"]().name) { + case "revokeSponsorshipLedgerEntry": { + var ledgerKey = attrs.ledgerKey(); + switch (ledgerKey["switch"]().name) { + case _xdr["default"].LedgerEntryType.account().name: { + result.type = "revokeAccountSponsorship"; + result.account = accountIdtoAddress(ledgerKey.account().accountId()); + break; + } + case _xdr["default"].LedgerEntryType.trustline().name: { + result.type = "revokeTrustlineSponsorship"; + result.account = accountIdtoAddress(ledgerKey.trustLine().accountId()); + var xdrAsset = ledgerKey.trustLine().asset(); + switch (xdrAsset["switch"]()) { + case _xdr["default"].AssetType.assetTypePoolShare(): + result.asset = _liquidity_pool_id.LiquidityPoolId.fromOperation(xdrAsset); + break; + default: + result.asset = _asset.Asset.fromOperation(xdrAsset); + break; + } + break; + } + case _xdr["default"].LedgerEntryType.offer().name: { + result.type = "revokeOfferSponsorship"; + result.seller = accountIdtoAddress(ledgerKey.offer().sellerId()); + result.offerId = ledgerKey.offer().offerId().toString(); + break; + } + case _xdr["default"].LedgerEntryType.data().name: { + result.type = "revokeDataSponsorship"; + result.account = accountIdtoAddress(ledgerKey.data().accountId()); + result.name = ledgerKey.data().dataName().toString("ascii"); + break; + } + case _xdr["default"].LedgerEntryType.claimableBalance().name: { + result.type = "revokeClaimableBalanceSponsorship"; + result.balanceId = ledgerKey.claimableBalance().balanceId().toXDR("hex"); + break; + } + case _xdr["default"].LedgerEntryType.liquidityPool().name: { + result.type = "revokeLiquidityPoolSponsorship"; + result.liquidityPoolId = ledgerKey.liquidityPool().liquidityPoolId().toString("hex"); + break; + } + default: { + throw new Error("Unknown ledgerKey: ".concat(attrs["switch"]().name)); + } + } + break; + } + case "revokeSponsorshipSigner": { + result.type = "revokeSignerSponsorship"; + result.account = accountIdtoAddress(attrs.signer().accountId()); + result.signer = convertXDRSignerKeyToObject(attrs.signer().signerKey()); + break; + } + default: { + throw new Error("Unknown revokeSponsorship: ".concat(attrs["switch"]().name)); + } + } + } + function convertXDRSignerKeyToObject(signerKey) { + var attrs = {}; + switch (signerKey["switch"]().name) { + case _xdr["default"].SignerKeyType.signerKeyTypeEd25519().name: { + attrs.ed25519PublicKey = _strkey.StrKey.encodeEd25519PublicKey(signerKey.ed25519()); + break; + } + case _xdr["default"].SignerKeyType.signerKeyTypePreAuthTx().name: { + attrs.preAuthTx = signerKey.preAuthTx().toString("hex"); + break; + } + case _xdr["default"].SignerKeyType.signerKeyTypeHashX().name: { + attrs.sha256Hash = signerKey.hashX().toString("hex"); + break; + } + default: { + throw new Error("Unknown signerKey: ".concat(signerKey["switch"]().name)); + } + } + return attrs; + } + function accountIdtoAddress(accountId) { + return _strkey.StrKey.encodeEd25519PublicKey(accountId.ed25519()); + } + Operation.accountMerge = ops.accountMerge; + Operation.allowTrust = ops.allowTrust; + Operation.bumpSequence = ops.bumpSequence; + Operation.changeTrust = ops.changeTrust; + Operation.createAccount = ops.createAccount; + Operation.createClaimableBalance = ops.createClaimableBalance; + Operation.claimClaimableBalance = ops.claimClaimableBalance; + Operation.clawbackClaimableBalance = ops.clawbackClaimableBalance; + Operation.createPassiveSellOffer = ops.createPassiveSellOffer; + Operation.inflation = ops.inflation; + Operation.manageData = ops.manageData; + Operation.manageSellOffer = ops.manageSellOffer; + Operation.manageBuyOffer = ops.manageBuyOffer; + Operation.pathPaymentStrictReceive = ops.pathPaymentStrictReceive; + Operation.pathPaymentStrictSend = ops.pathPaymentStrictSend; + Operation.payment = ops.payment; + Operation.setOptions = ops.setOptions; + Operation.beginSponsoringFutureReserves = ops.beginSponsoringFutureReserves; + Operation.endSponsoringFutureReserves = ops.endSponsoringFutureReserves; + Operation.revokeAccountSponsorship = ops.revokeAccountSponsorship; + Operation.revokeTrustlineSponsorship = ops.revokeTrustlineSponsorship; + Operation.revokeOfferSponsorship = ops.revokeOfferSponsorship; + Operation.revokeDataSponsorship = ops.revokeDataSponsorship; + Operation.revokeClaimableBalanceSponsorship = ops.revokeClaimableBalanceSponsorship; + Operation.revokeLiquidityPoolSponsorship = ops.revokeLiquidityPoolSponsorship; + Operation.revokeSignerSponsorship = ops.revokeSignerSponsorship; + Operation.clawback = ops.clawback; + Operation.setTrustLineFlags = ops.setTrustLineFlags; + Operation.liquidityPoolDeposit = ops.liquidityPoolDeposit; + Operation.liquidityPoolWithdraw = ops.liquidityPoolWithdraw; + Operation.invokeHostFunction = ops.invokeHostFunction; + Operation.extendFootprintTtl = ops.extendFootprintTtl; + Operation.restoreFootprint = ops.restoreFootprint; + Operation.createStellarAssetContract = ops.createStellarAssetContract; + Operation.invokeContractFunction = ops.invokeContractFunction; + Operation.createCustomContract = ops.createCustomContract; + Operation.uploadContractWasm = ops.uploadContractWasm; + } +}); + +// node_modules/@stellar/stellar-base/lib/memo.js +var require_memo = __commonJS({ + "node_modules/@stellar/stellar-base/lib/memo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MemoText = exports2.MemoReturn = exports2.MemoNone = exports2.MemoID = exports2.MemoHash = exports2.Memo = void 0; + var _jsXdr = require_xdr(); + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var MemoNone = exports2.MemoNone = "none"; + var MemoID = exports2.MemoID = "id"; + var MemoText = exports2.MemoText = "text"; + var MemoHash = exports2.MemoHash = "hash"; + var MemoReturn = exports2.MemoReturn = "return"; + var Memo = exports2.Memo = /* @__PURE__ */ function() { + function Memo2(type) { + var value = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null; + _classCallCheck(this, Memo2); + this._type = type; + this._value = value; + switch (this._type) { + case MemoNone: + break; + case MemoID: + Memo2._validateIdValue(value); + break; + case MemoText: + Memo2._validateTextValue(value); + break; + case MemoHash: + case MemoReturn: + Memo2._validateHashValue(value); + if (typeof value === "string") { + this._value = Buffer.from(value, "hex"); + } + break; + default: + throw new Error("Invalid memo type"); + } + } + return _createClass(Memo2, [{ + key: "type", + get: function get() { + return this._type; + }, + set: function set(type) { + throw new Error("Memo is immutable"); + } + /** + * Contains memo value: + * * `null` for `MemoNone`, + * * `string` for `MemoID`, + * * `Buffer` for `MemoText` after decoding using `fromXDRObject`, original value otherwise, + * * `Buffer` for `MemoHash`, `MemoReturn`. + */ + }, { + key: "value", + get: function get() { + switch (this._type) { + case MemoNone: + return null; + case MemoID: + case MemoText: + return this._value; + case MemoHash: + case MemoReturn: + return Buffer.from(this._value); + default: + throw new Error("Invalid memo type"); + } + }, + set: function set(value) { + throw new Error("Memo is immutable"); + } + }, { + key: "toXDRObject", + value: ( + /** + * Returns XDR memo object. + * @returns {xdr.Memo} + */ + function toXDRObject() { + switch (this._type) { + case MemoNone: + return _xdr["default"].Memo.memoNone(); + case MemoID: + return _xdr["default"].Memo.memoId(_jsXdr.UnsignedHyper.fromString(this._value)); + case MemoText: + return _xdr["default"].Memo.memoText(this._value); + case MemoHash: + return _xdr["default"].Memo.memoHash(this._value); + case MemoReturn: + return _xdr["default"].Memo.memoReturn(this._value); + default: + return null; + } + } + ) + /** + * Returns {@link Memo} from XDR memo object. + * @param {xdr.Memo} object XDR memo object + * @returns {Memo} + */ + }], [{ + key: "_validateIdValue", + value: function _validateIdValue(value) { + var error = new Error("Expects a int64 as a string. Got ".concat(value)); + if (typeof value !== "string") { + throw error; + } + var number; + try { + number = new _bignumber["default"](value); + } catch (e) { + throw error; + } + if (!number.isFinite()) { + throw error; + } + if (number.isNaN()) { + throw error; + } + } + }, { + key: "_validateTextValue", + value: function _validateTextValue(value) { + if (!_xdr["default"].Memo.armTypeForArm("text").isValid(value)) { + throw new Error("Expects string, array or buffer, max 28 bytes"); + } + } + }, { + key: "_validateHashValue", + value: function _validateHashValue(value) { + var error = new Error("Expects a 32 byte hash value or hex encoded string. Got ".concat(value)); + if (value === null || typeof value === "undefined") { + throw error; + } + var valueBuffer; + if (typeof value === "string") { + if (!/^[0-9A-Fa-f]{64}$/g.test(value)) { + throw error; + } + valueBuffer = Buffer.from(value, "hex"); + } else if (Buffer.isBuffer(value)) { + valueBuffer = Buffer.from(value); + } else { + throw error; + } + if (!valueBuffer.length || valueBuffer.length !== 32) { + throw error; + } + } + /** + * Returns an empty memo (`MemoNone`). + * @returns {Memo} + */ + }, { + key: "none", + value: function none() { + return new Memo2(MemoNone); + } + /** + * Creates and returns a `MemoText` memo. + * @param {string} text - memo text + * @returns {Memo} + */ + }, { + key: "text", + value: function text(_text) { + return new Memo2(MemoText, _text); + } + /** + * Creates and returns a `MemoID` memo. + * @param {string} id - 64-bit number represented as a string + * @returns {Memo} + */ + }, { + key: "id", + value: function id(_id) { + return new Memo2(MemoID, _id); + } + /** + * Creates and returns a `MemoHash` memo. + * @param {array|string} hash - 32 byte hash or hex encoded string + * @returns {Memo} + */ + }, { + key: "hash", + value: function hash(_hash) { + return new Memo2(MemoHash, _hash); + } + /** + * Creates and returns a `MemoReturn` memo. + * @param {array|string} hash - 32 byte hash or hex encoded string + * @returns {Memo} + */ + }, { + key: "return", + value: function _return(hash) { + return new Memo2(MemoReturn, hash); + } + }, { + key: "fromXDRObject", + value: function fromXDRObject(object) { + switch (object.arm()) { + case "id": + return Memo2.id(object.value().toString()); + case "text": + return Memo2.text(object.value()); + case "hash": + return Memo2.hash(object.value()); + case "retHash": + return Memo2["return"](object.value()); + default: + break; + } + if (typeof object.value() === "undefined") { + return Memo2.none(); + } + throw new Error("Unknown type"); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/transaction.js +var require_transaction5 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/transaction.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Transaction = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _hashing = require_hashing(); + var _strkey = require_strkey(); + var _operation = require_operation(); + var _memo = require_memo(); + var _transaction_base = require_transaction_base(); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var Transaction = exports2.Transaction = /* @__PURE__ */ function(_TransactionBase) { + function Transaction2(envelope, networkPassphrase) { + var _this; + _classCallCheck(this, Transaction2); + if (typeof envelope === "string") { + var buffer = Buffer.from(envelope, "base64"); + envelope = _xdr["default"].TransactionEnvelope.fromXDR(buffer); + } + var envelopeType = envelope["switch"](); + if (!(envelopeType === _xdr["default"].EnvelopeType.envelopeTypeTxV0() || envelopeType === _xdr["default"].EnvelopeType.envelopeTypeTx())) { + throw new Error("Invalid TransactionEnvelope: expected an envelopeTypeTxV0 or envelopeTypeTx but received an ".concat(envelopeType.name, ".")); + } + var txEnvelope = envelope.value(); + var tx = txEnvelope.tx(); + var fee = tx.fee().toString(); + var signatures = (txEnvelope.signatures() || []).slice(); + _this = _callSuper(this, Transaction2, [tx, signatures, fee, networkPassphrase]); + _this._envelopeType = envelopeType; + _this._memo = tx.memo(); + _this._sequence = tx.seqNum().toString(); + switch (_this._envelopeType) { + case _xdr["default"].EnvelopeType.envelopeTypeTxV0(): + _this._source = _strkey.StrKey.encodeEd25519PublicKey(_this.tx.sourceAccountEd25519()); + break; + default: + _this._source = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(_this.tx.sourceAccount()); + break; + } + var cond = null; + var timeBounds = null; + switch (_this._envelopeType) { + case _xdr["default"].EnvelopeType.envelopeTypeTxV0(): + timeBounds = tx.timeBounds(); + break; + case _xdr["default"].EnvelopeType.envelopeTypeTx(): + switch (tx.cond()["switch"]()) { + case _xdr["default"].PreconditionType.precondTime(): + timeBounds = tx.cond().timeBounds(); + break; + case _xdr["default"].PreconditionType.precondV2(): + cond = tx.cond().v2(); + timeBounds = cond.timeBounds(); + break; + default: + break; + } + break; + default: + break; + } + if (timeBounds) { + _this._timeBounds = { + minTime: timeBounds.minTime().toString(), + maxTime: timeBounds.maxTime().toString() + }; + } + if (cond) { + var ledgerBounds = cond.ledgerBounds(); + if (ledgerBounds) { + _this._ledgerBounds = { + minLedger: ledgerBounds.minLedger(), + maxLedger: ledgerBounds.maxLedger() + }; + } + var minSeq = cond.minSeqNum(); + if (minSeq) { + _this._minAccountSequence = minSeq.toString(); + } + _this._minAccountSequenceAge = cond.minSeqAge(); + _this._minAccountSequenceLedgerGap = cond.minSeqLedgerGap(); + _this._extraSigners = cond.extraSigners(); + } + var operations = tx.operations() || []; + _this._operations = operations.map(function(op) { + return _operation.Operation.fromXDRObject(op); + }); + return _this; + } + _inherits(Transaction2, _TransactionBase); + return _createClass(Transaction2, [{ + key: "timeBounds", + get: function get() { + return this._timeBounds; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {object} + * @property {number} minLedger - smallest ledger bound (uint32) + * @property {number} maxLedger - largest ledger bound (or 0 for inf) + * @readonly + */ + }, { + key: "ledgerBounds", + get: function get() { + return this._ledgerBounds; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * 64 bit account sequence + * @readonly + * @type {string} + */ + }, { + key: "minAccountSequence", + get: function get() { + return this._minAccountSequence; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * 64 bit number of seconds + * @type {number} + * @readonly + */ + }, { + key: "minAccountSequenceAge", + get: function get() { + return this._minAccountSequenceAge; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * 32 bit number of ledgers + * @type {number} + * @readonly + */ + }, { + key: "minAccountSequenceLedgerGap", + get: function get() { + return this._minAccountSequenceLedgerGap; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * array of extra signers ({@link StrKey}s) + * @type {string[]} + * @readonly + */ + }, { + key: "extraSigners", + get: function get() { + return this._extraSigners; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {string} + * @readonly + */ + }, { + key: "sequence", + get: function get() { + return this._sequence; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {string} + * @readonly + */ + }, { + key: "source", + get: function get() { + return this._source; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {Array.} + * @readonly + */ + }, { + key: "operations", + get: function get() { + return this._operations; + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * @type {string} + * @readonly + */ + }, { + key: "memo", + get: function get() { + return _memo.Memo.fromXDRObject(this._memo); + }, + set: function set(value) { + throw new Error("Transaction is immutable"); + } + /** + * Returns the "signature base" of this transaction, which is the value + * that, when hashed, should be signed to create a signature that + * validators on the Stellar Network will accept. + * + * It is composed of a 4 prefix bytes followed by the xdr-encoded form + * of this transaction. + * @returns {Buffer} + */ + }, { + key: "signatureBase", + value: function signatureBase() { + var tx = this.tx; + if (this._envelopeType === _xdr["default"].EnvelopeType.envelopeTypeTxV0()) { + tx = _xdr["default"].Transaction.fromXDR(Buffer.concat([ + // TransactionV0 is a transaction with the AccountID discriminant + // stripped off, we need to put it back to build a valid transaction + // which we can use to build a TransactionSignaturePayloadTaggedTransaction + _xdr["default"].PublicKeyType.publicKeyTypeEd25519().toXDR(), + tx.toXDR() + ])); + } + var taggedTransaction = new _xdr["default"].TransactionSignaturePayloadTaggedTransaction.envelopeTypeTx(tx); + var txSignature = new _xdr["default"].TransactionSignaturePayload({ + networkId: _xdr["default"].Hash.fromXDR((0, _hashing.hash)(this.networkPassphrase)), + taggedTransaction + }); + return txSignature.toXDR(); + } + /** + * To envelope returns a xdr.TransactionEnvelope which can be submitted to the network. + * @returns {xdr.TransactionEnvelope} + */ + }, { + key: "toEnvelope", + value: function toEnvelope() { + var rawTx = this.tx.toXDR(); + var signatures = this.signatures.slice(); + var envelope; + switch (this._envelopeType) { + case _xdr["default"].EnvelopeType.envelopeTypeTxV0(): + envelope = new _xdr["default"].TransactionEnvelope.envelopeTypeTxV0(new _xdr["default"].TransactionV0Envelope({ + tx: _xdr["default"].TransactionV0.fromXDR(rawTx), + // make a copy of tx + signatures + })); + break; + case _xdr["default"].EnvelopeType.envelopeTypeTx(): + envelope = new _xdr["default"].TransactionEnvelope.envelopeTypeTx(new _xdr["default"].TransactionV1Envelope({ + tx: _xdr["default"].Transaction.fromXDR(rawTx), + // make a copy of tx + signatures + })); + break; + default: + throw new Error("Invalid TransactionEnvelope: expected an envelopeTypeTxV0 or envelopeTypeTx but received an ".concat(this._envelopeType.name, ".")); + } + return envelope; + } + /** + * Calculate the claimable balance ID for an operation within the transaction. + * + * @param {integer} opIndex the index of the CreateClaimableBalance op + * @returns {string} a hex string representing the claimable balance ID + * + * @throws {RangeError} for invalid `opIndex` value + * @throws {TypeError} if op at `opIndex` is not `CreateClaimableBalance` + * @throws for general XDR un/marshalling failures + * + * @see https://github.com/stellar/go/blob/d712346e61e288d450b0c08038c158f8848cc3e4/txnbuild/transaction.go#L392-L435 + * + */ + }, { + key: "getClaimableBalanceId", + value: function getClaimableBalanceId(opIndex) { + if (!Number.isInteger(opIndex) || opIndex < 0 || opIndex >= this.operations.length) { + throw new RangeError("invalid operation index"); + } + var op = this.operations[opIndex]; + try { + op = _operation.Operation.createClaimableBalance(op); + } catch (err2) { + throw new TypeError("expected createClaimableBalance, got ".concat(op.type, ": ").concat(err2)); + } + var account = _strkey.StrKey.decodeEd25519PublicKey((0, _decode_encode_muxed_account.extractBaseAddress)(this.source)); + var operationId = _xdr["default"].HashIdPreimage.envelopeTypeOpId(new _xdr["default"].HashIdPreimageOperationId({ + sourceAccount: _xdr["default"].AccountId.publicKeyTypeEd25519(account), + seqNum: _xdr["default"].SequenceNumber.fromString(this.sequence), + opNum: opIndex + })); + var opIdHash = (0, _hashing.hash)(operationId.toXDR("raw")); + var balanceId = _xdr["default"].ClaimableBalanceId.claimableBalanceIdTypeV0(opIdHash); + return balanceId.toXDR("hex"); + } + }]); + }(_transaction_base.TransactionBase); + } +}); + +// node_modules/@stellar/stellar-base/lib/fee_bump_transaction.js +var require_fee_bump_transaction = __commonJS({ + "node_modules/@stellar/stellar-base/lib/fee_bump_transaction.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.FeeBumpTransaction = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _hashing = require_hashing(); + var _transaction = require_transaction5(); + var _transaction_base = require_transaction_base(); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var FeeBumpTransaction = exports2.FeeBumpTransaction = /* @__PURE__ */ function(_TransactionBase) { + function FeeBumpTransaction2(envelope, networkPassphrase) { + var _this; + _classCallCheck(this, FeeBumpTransaction2); + if (typeof envelope === "string") { + var buffer = Buffer.from(envelope, "base64"); + envelope = _xdr["default"].TransactionEnvelope.fromXDR(buffer); + } + var envelopeType = envelope["switch"](); + if (envelopeType !== _xdr["default"].EnvelopeType.envelopeTypeTxFeeBump()) { + throw new Error("Invalid TransactionEnvelope: expected an envelopeTypeTxFeeBump but received an ".concat(envelopeType.name, ".")); + } + var txEnvelope = envelope.value(); + var tx = txEnvelope.tx(); + var fee = tx.fee().toString(); + var signatures = (txEnvelope.signatures() || []).slice(); + _this = _callSuper(this, FeeBumpTransaction2, [tx, signatures, fee, networkPassphrase]); + var innerTxEnvelope = _xdr["default"].TransactionEnvelope.envelopeTypeTx(tx.innerTx().v1()); + _this._feeSource = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(_this.tx.feeSource()); + _this._innerTransaction = new _transaction.Transaction(innerTxEnvelope, networkPassphrase); + return _this; + } + _inherits(FeeBumpTransaction2, _TransactionBase); + return _createClass(FeeBumpTransaction2, [{ + key: "innerTransaction", + get: function get() { + return this._innerTransaction; + } + /** + * @type {Operation[]} + * @readonly + */ + }, { + key: "operations", + get: function get() { + return this._innerTransaction.operations; + } + /** + * @type {string} + * @readonly + */ + }, { + key: "feeSource", + get: function get() { + return this._feeSource; + } + /** + * Returns the "signature base" of this transaction, which is the value + * that, when hashed, should be signed to create a signature that + * validators on the Stellar Network will accept. + * + * It is composed of a 4 prefix bytes followed by the xdr-encoded form + * of this transaction. + * @returns {Buffer} + */ + }, { + key: "signatureBase", + value: function signatureBase() { + var taggedTransaction = new _xdr["default"].TransactionSignaturePayloadTaggedTransaction.envelopeTypeTxFeeBump(this.tx); + var txSignature = new _xdr["default"].TransactionSignaturePayload({ + networkId: _xdr["default"].Hash.fromXDR((0, _hashing.hash)(this.networkPassphrase)), + taggedTransaction + }); + return txSignature.toXDR(); + } + /** + * To envelope returns a xdr.TransactionEnvelope which can be submitted to the network. + * @returns {xdr.TransactionEnvelope} + */ + }, { + key: "toEnvelope", + value: function toEnvelope() { + var envelope = new _xdr["default"].FeeBumpTransactionEnvelope({ + tx: _xdr["default"].FeeBumpTransaction.fromXDR(this.tx.toXDR()), + // make a copy of the tx + signatures: this.signatures.slice() + // make a copy of the signatures + }); + return new _xdr["default"].TransactionEnvelope.envelopeTypeTxFeeBump(envelope); + } + }]); + }(_transaction_base.TransactionBase); + } +}); + +// node_modules/@stellar/stellar-base/lib/account.js +var require_account = __commonJS({ + "node_modules/@stellar/stellar-base/lib/account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Account = void 0; + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Account = exports2.Account = /* @__PURE__ */ function() { + function Account2(accountId, sequence) { + _classCallCheck(this, Account2); + if (_strkey.StrKey.isValidMed25519PublicKey(accountId)) { + throw new Error("accountId is an M-address; use MuxedAccount instead"); + } + if (!_strkey.StrKey.isValidEd25519PublicKey(accountId)) { + throw new Error("accountId is invalid"); + } + if (!(typeof sequence === "string")) { + throw new Error("sequence must be of type string"); + } + this._accountId = accountId; + this.sequence = new _bignumber["default"](sequence); + } + return _createClass(Account2, [{ + key: "accountId", + value: function accountId() { + return this._accountId; + } + /** + * @returns {string} sequence number for the account as a string + */ + }, { + key: "sequenceNumber", + value: function sequenceNumber() { + return this.sequence.toString(); + } + /** + * Increments sequence number in this object by one. + * @returns {void} + */ + }, { + key: "incrementSequenceNumber", + value: function incrementSequenceNumber() { + this.sequence = this.sequence.plus(1); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/muxed_account.js +var require_muxed_account = __commonJS({ + "node_modules/@stellar/stellar-base/lib/muxed_account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MuxedAccount = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _account = require_account(); + var _strkey = require_strkey(); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var MuxedAccount = exports2.MuxedAccount = /* @__PURE__ */ function() { + function MuxedAccount2(baseAccount, id) { + _classCallCheck(this, MuxedAccount2); + var accountId = baseAccount.accountId(); + if (!_strkey.StrKey.isValidEd25519PublicKey(accountId)) { + throw new Error("accountId is invalid"); + } + this.account = baseAccount; + this._muxedXdr = (0, _decode_encode_muxed_account.encodeMuxedAccount)(accountId, id); + this._mAddress = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(this._muxedXdr); + this._id = id; + } + return _createClass(MuxedAccount2, [{ + key: "baseAccount", + value: ( + /** + * @return {Account} the underlying account object shared among all muxed + * accounts with this Stellar address + */ + function baseAccount() { + return this.account; + } + ) + /** + * @return {string} the M-address representing this account's (G-address, ID) + */ + }, { + key: "accountId", + value: function accountId() { + return this._mAddress; + } + }, { + key: "id", + value: function id() { + return this._id; + } + }, { + key: "setId", + value: function setId(id) { + if (typeof id !== "string") { + throw new Error("id should be a string representing a number (uint64)"); + } + this._muxedXdr.med25519().id(_xdr["default"].Uint64.fromString(id)); + this._mAddress = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(this._muxedXdr); + this._id = id; + return this; + } + /** + * Accesses the underlying account's sequence number. + * @return {string} strigified sequence number for the underlying account + */ + }, { + key: "sequenceNumber", + value: function sequenceNumber() { + return this.account.sequenceNumber(); + } + /** + * Increments the underlying account's sequence number by one. + * @return {void} + */ + }, { + key: "incrementSequenceNumber", + value: function incrementSequenceNumber() { + return this.account.incrementSequenceNumber(); + } + /** + * @return {xdr.MuxedAccount} the XDR object representing this muxed account's + * G-address and uint64 ID + */ + }, { + key: "toXDRObject", + value: function toXDRObject() { + return this._muxedXdr; + } + }, { + key: "equals", + value: function equals(otherMuxedAccount) { + return this.accountId() === otherMuxedAccount.accountId(); + } + }], [{ + key: "fromAddress", + value: function fromAddress(mAddress, sequenceNum) { + var muxedAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(mAddress); + var gAddress = (0, _decode_encode_muxed_account.extractBaseAddress)(mAddress); + var id = muxedAccount.med25519().id().toString(); + return new MuxedAccount2(new _account.Account(gAddress, sequenceNum), id); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/sorobandata_builder.js +var require_sorobandata_builder = __commonJS({ + "node_modules/@stellar/stellar-base/lib/sorobandata_builder.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SorobanDataBuilder = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var SorobanDataBuilder = exports2.SorobanDataBuilder = /* @__PURE__ */ function() { + function SorobanDataBuilder2(sorobanData) { + _classCallCheck(this, SorobanDataBuilder2); + _defineProperty(this, "_data", void 0); + var data; + if (!sorobanData) { + data = new _xdr["default"].SorobanTransactionData({ + resources: new _xdr["default"].SorobanResources({ + footprint: new _xdr["default"].LedgerFootprint({ + readOnly: [], + readWrite: [] + }), + instructions: 0, + diskReadBytes: 0, + writeBytes: 0 + }), + ext: new _xdr["default"].SorobanTransactionDataExt(0), + resourceFee: new _xdr["default"].Int64(0) + }); + } else if (typeof sorobanData === "string" || ArrayBuffer.isView(sorobanData)) { + data = SorobanDataBuilder2.fromXDR(sorobanData); + } else { + data = SorobanDataBuilder2.fromXDR(sorobanData.toXDR()); + } + this._data = data; + } + return _createClass(SorobanDataBuilder2, [{ + key: "setResourceFee", + value: ( + /** + * Sets the resource fee portion of the Soroban data. + * @param {number | bigint | string} fee the resource fee to set (int64) + * @returns {SorobanDataBuilder} + */ + function setResourceFee(fee) { + this._data.resourceFee(new _xdr["default"].Int64(fee)); + return this; + } + ) + /** + * Sets up the resource metrics. + * + * You should almost NEVER need this, as its often generated / provided to you + * by transaction simulation/preflight from a Soroban RPC server. + * + * @param {number} cpuInstrs number of CPU instructions + * @param {number} diskReadBytes number of bytes being read from disk + * @param {number} writeBytes number of bytes being written to disk/memory + * + * @returns {SorobanDataBuilder} + */ + }, { + key: "setResources", + value: function setResources(cpuInstrs, diskReadBytes, writeBytes) { + this._data.resources().instructions(cpuInstrs); + this._data.resources().diskReadBytes(diskReadBytes); + this._data.resources().writeBytes(writeBytes); + return this; + } + /** + * Appends the given ledger keys to the existing storage access footprint. + * @param {xdr.LedgerKey[]} readOnly read-only keys to add + * @param {xdr.LedgerKey[]} readWrite read-write keys to add + * @returns {SorobanDataBuilder} this builder instance + */ + }, { + key: "appendFootprint", + value: function appendFootprint(readOnly, readWrite) { + return this.setFootprint(this.getReadOnly().concat(readOnly), this.getReadWrite().concat(readWrite)); + } + /** + * Sets the storage access footprint to be a certain set of ledger keys. + * + * You can also set each field explicitly via + * {@link SorobanDataBuilder.setReadOnly} and + * {@link SorobanDataBuilder.setReadWrite} or add to the existing footprint + * via {@link SorobanDataBuilder.appendFootprint}. + * + * Passing `null|undefined` to either parameter will IGNORE the existing + * values. If you want to clear them, pass `[]`, instead. + * + * @param {xdr.LedgerKey[]|null} [readOnly] the set of ledger keys to set in + * the read-only portion of the transaction's `sorobanData`, or `null | + * undefined` to keep the existing keys + * @param {xdr.LedgerKey[]|null} [readWrite] the set of ledger keys to set in + * the read-write portion of the transaction's `sorobanData`, or `null | + * undefined` to keep the existing keys + * @returns {SorobanDataBuilder} this builder instance + */ + }, { + key: "setFootprint", + value: function setFootprint(readOnly, readWrite) { + if (readOnly !== null) { + this.setReadOnly(readOnly); + } + if (readWrite !== null) { + this.setReadWrite(readWrite); + } + return this; + } + /** + * @param {xdr.LedgerKey[]} readOnly read-only keys in the access footprint + * @returns {SorobanDataBuilder} + */ + }, { + key: "setReadOnly", + value: function setReadOnly(readOnly) { + this._data.resources().footprint().readOnly(readOnly !== null && readOnly !== void 0 ? readOnly : []); + return this; + } + /** + * @param {xdr.LedgerKey[]} readWrite read-write keys in the access footprint + * @returns {SorobanDataBuilder} + */ + }, { + key: "setReadWrite", + value: function setReadWrite(readWrite) { + this._data.resources().footprint().readWrite(readWrite !== null && readWrite !== void 0 ? readWrite : []); + return this; + } + /** + * @returns {xdr.SorobanTransactionData} a copy of the final data structure + */ + }, { + key: "build", + value: function build() { + return _xdr["default"].SorobanTransactionData.fromXDR(this._data.toXDR()); + } + // + // getters follow + // + /** @returns {xdr.LedgerKey[]} the read-only storage access pattern */ + }, { + key: "getReadOnly", + value: function getReadOnly() { + return this.getFootprint().readOnly(); + } + /** @returns {xdr.LedgerKey[]} the read-write storage access pattern */ + }, { + key: "getReadWrite", + value: function getReadWrite() { + return this.getFootprint().readWrite(); + } + /** @returns {xdr.LedgerFootprint} the storage access pattern */ + }, { + key: "getFootprint", + value: function getFootprint() { + return this._data.resources().footprint(); + } + }], [{ + key: "fromXDR", + value: function fromXDR(data) { + return _xdr["default"].SorobanTransactionData.fromXDR(data, typeof data === "string" ? "base64" : "raw"); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/signerkey.js +var require_signerkey = __commonJS({ + "node_modules/@stellar/stellar-base/lib/signerkey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SignerKey = void 0; + var _xdr = _interopRequireDefault(require_xdr2()); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var SignerKey = exports2.SignerKey = /* @__PURE__ */ function() { + function SignerKey2() { + _classCallCheck(this, SignerKey2); + } + return _createClass(SignerKey2, null, [{ + key: "decodeAddress", + value: ( + /** + * Decodes a StrKey address into an xdr.SignerKey instance. + * + * Only ED25519 public keys (G...), pre-auth transactions (T...), hashes + * (H...), and signed payloads (P...) can be signer keys. + * + * @param {string} address a StrKey-encoded signer address + * @returns {xdr.SignerKey} + */ + function decodeAddress(address) { + var signerKeyMap = { + ed25519PublicKey: _xdr["default"].SignerKey.signerKeyTypeEd25519, + preAuthTx: _xdr["default"].SignerKey.signerKeyTypePreAuthTx, + sha256Hash: _xdr["default"].SignerKey.signerKeyTypeHashX, + signedPayload: _xdr["default"].SignerKey.signerKeyTypeEd25519SignedPayload + }; + var vb = _strkey.StrKey.getVersionByteForPrefix(address); + var encoder = signerKeyMap[vb]; + if (!encoder) { + throw new Error("invalid signer key type (".concat(vb, ")")); + } + var raw = (0, _strkey.decodeCheck)(vb, address); + switch (vb) { + case "signedPayload": + return encoder(new _xdr["default"].SignerKeyEd25519SignedPayload({ + ed25519: raw.slice(0, 32), + payload: raw.slice(32 + 4) + })); + case "ed25519PublicKey": + // falls through + case "preAuthTx": + // falls through + case "sha256Hash": + // falls through + default: + return encoder(raw); + } + } + ) + /** + * Encodes a signer key into its StrKey equivalent. + * + * @param {xdr.SignerKey} signerKey the signer + * @returns {string} the StrKey representation of the signer + */ + }, { + key: "encodeSignerKey", + value: function encodeSignerKey(signerKey) { + var strkeyType; + var raw; + switch (signerKey["switch"]()) { + case _xdr["default"].SignerKeyType.signerKeyTypeEd25519(): + strkeyType = "ed25519PublicKey"; + raw = signerKey.value(); + break; + case _xdr["default"].SignerKeyType.signerKeyTypePreAuthTx(): + strkeyType = "preAuthTx"; + raw = signerKey.value(); + break; + case _xdr["default"].SignerKeyType.signerKeyTypeHashX(): + strkeyType = "sha256Hash"; + raw = signerKey.value(); + break; + case _xdr["default"].SignerKeyType.signerKeyTypeEd25519SignedPayload(): + strkeyType = "signedPayload"; + raw = signerKey.ed25519SignedPayload().toXDR("raw"); + break; + default: + throw new Error("invalid SignerKey (type: ".concat(signerKey["switch"](), ")")); + } + return (0, _strkey.encodeCheck)(strkeyType, raw); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/transaction_builder.js +var require_transaction_builder = __commonJS({ + "node_modules/@stellar/stellar-base/lib/transaction_builder.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransactionBuilder = exports2.TimeoutInfinite = exports2.BASE_FEE = void 0; + exports2.isValidDate = isValidDate; + var _jsXdr = require_xdr(); + var _bignumber = _interopRequireDefault(require_bignumber2()); + var _xdr = _interopRequireDefault(require_xdr2()); + var _account = require_account(); + var _muxed_account = require_muxed_account(); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + var _transaction = require_transaction5(); + var _fee_bump_transaction = require_fee_bump_transaction(); + var _sorobandata_builder = require_sorobandata_builder(); + var _strkey = require_strkey(); + var _signerkey = require_signerkey(); + var _memo = require_memo(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var BASE_FEE = exports2.BASE_FEE = "100"; + var TimeoutInfinite = exports2.TimeoutInfinite = 0; + var TransactionBuilder = exports2.TransactionBuilder = /* @__PURE__ */ function() { + function TransactionBuilder2(sourceAccount) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + _classCallCheck(this, TransactionBuilder2); + if (!sourceAccount) { + throw new Error("must specify source account for the transaction"); + } + if (opts.fee === void 0) { + throw new Error("must specify fee for the transaction (in stroops)"); + } + this.source = sourceAccount; + this.operations = []; + this.baseFee = opts.fee; + this.timebounds = opts.timebounds ? _objectSpread({}, opts.timebounds) : null; + this.ledgerbounds = opts.ledgerbounds ? _objectSpread({}, opts.ledgerbounds) : null; + this.minAccountSequence = opts.minAccountSequence || null; + this.minAccountSequenceAge = opts.minAccountSequenceAge || null; + this.minAccountSequenceLedgerGap = opts.minAccountSequenceLedgerGap || null; + this.extraSigners = opts.extraSigners ? _toConsumableArray(opts.extraSigners) : null; + this.memo = opts.memo || _memo.Memo.none(); + this.networkPassphrase = opts.networkPassphrase || null; + this.sorobanData = opts.sorobanData ? new _sorobandata_builder.SorobanDataBuilder(opts.sorobanData).build() : null; + } + return _createClass(TransactionBuilder2, [{ + key: "addOperation", + value: ( + /** + * Adds an operation to the transaction. + * + * @param {xdr.Operation} operation The xdr operation object, use {@link + * Operation} static methods. + * + * @returns {TransactionBuilder} + */ + function addOperation(operation) { + this.operations.push(operation); + return this; + } + ) + /** + * Adds an operation to the transaction at a specific index. + * + * @param {xdr.Operation} operation - The xdr operation object to add, use {@link Operation} static methods. + * @param {number} index - The index at which to insert the operation. + * + * @returns {TransactionBuilder} - The TransactionBuilder instance for method chaining. + */ + }, { + key: "addOperationAt", + value: function addOperationAt(operation, index) { + this.operations.splice(index, 0, operation); + return this; + } + /** + * Removes the operations from the builder (useful when cloning). + * @returns {TransactionBuilder} this builder instance + */ + }, { + key: "clearOperations", + value: function clearOperations() { + this.operations = []; + return this; + } + /** + * Removes the operation at the specified index from the transaction. + * + * @param {number} index - The index of the operation to remove. + * + * @returns {TransactionBuilder} The TransactionBuilder instance for method chaining. + */ + }, { + key: "clearOperationAt", + value: function clearOperationAt(index) { + this.operations.splice(index, 1); + return this; + } + /** + * Adds a memo to the transaction. + * @param {Memo} memo {@link Memo} object + * @returns {TransactionBuilder} + */ + }, { + key: "addMemo", + value: function addMemo(memo) { + this.memo = memo; + return this; + } + /** + * Sets a timeout precondition on the transaction. + * + * Because of the distributed nature of the Stellar network it is possible + * that the status of your transaction will be determined after a long time + * if the network is highly congested. If you want to be sure to receive the + * status of the transaction within a given period you should set the {@link + * TimeBounds} with `maxTime` on the transaction (this is what `setTimeout` + * does internally; if there's `minTime` set but no `maxTime` it will be + * added). + * + * A call to `TransactionBuilder.setTimeout` is **required** if Transaction + * does not have `max_time` set. If you don't want to set timeout, use + * `{@link TimeoutInfinite}`. In general you should set `{@link + * TimeoutInfinite}` only in smart contracts. + * + * Please note that Horizon may still return 504 Gateway Timeout + * error, even for short timeouts. In such case you need to resubmit the same + * transaction again without making any changes to receive a status. This + * method is using the machine system time (UTC), make sure it is set + * correctly. + * + * @param {number} timeoutSeconds Number of seconds the transaction is good. + * Can't be negative. If the value is {@link TimeoutInfinite}, the + * transaction is good indefinitely. + * + * @returns {TransactionBuilder} + * + * @see {@link TimeoutInfinite} + * @see https://developers.stellar.org/docs/tutorials/handling-errors/ + */ + }, { + key: "setTimeout", + value: function setTimeout2(timeoutSeconds) { + if (this.timebounds !== null && this.timebounds.maxTime > 0) { + throw new Error("TimeBounds.max_time has been already set - setting timeout would overwrite it."); + } + if (timeoutSeconds < 0) { + throw new Error("timeout cannot be negative"); + } + if (timeoutSeconds > 0) { + var timeoutTimestamp = Math.floor(Date.now() / 1e3) + timeoutSeconds; + if (this.timebounds === null) { + this.timebounds = { + minTime: 0, + maxTime: timeoutTimestamp + }; + } else { + this.timebounds = { + minTime: this.timebounds.minTime, + maxTime: timeoutTimestamp + }; + } + } else { + this.timebounds = { + minTime: 0, + maxTime: 0 + }; + } + return this; + } + /** + * If you want to prepare a transaction which will become valid at some point + * in the future, or be invalid after some time, you can set a timebounds + * precondition. Internally this will set the `minTime`, and `maxTime` + * preconditions. Conflicts with `setTimeout`, so use one or the other. + * + * @param {Date|number} minEpochOrDate Either a JS Date object, or a number + * of UNIX epoch seconds. The transaction is valid after this timestamp. + * Can't be negative. If the value is `0`, the transaction is valid + * immediately. + * @param {Date|number} maxEpochOrDate Either a JS Date object, or a number + * of UNIX epoch seconds. The transaction is valid until this timestamp. + * Can't be negative. If the value is `0`, the transaction is valid + * indefinitely. + * + * @returns {TransactionBuilder} + */ + }, { + key: "setTimebounds", + value: function setTimebounds(minEpochOrDate, maxEpochOrDate) { + if (typeof minEpochOrDate === "number") { + minEpochOrDate = new Date(minEpochOrDate * 1e3); + } + if (typeof maxEpochOrDate === "number") { + maxEpochOrDate = new Date(maxEpochOrDate * 1e3); + } + if (this.timebounds !== null) { + throw new Error("TimeBounds has been already set - setting timebounds would overwrite it."); + } + var minTime = Math.floor(minEpochOrDate.valueOf() / 1e3); + var maxTime = Math.floor(maxEpochOrDate.valueOf() / 1e3); + if (minTime < 0) { + throw new Error("min_time cannot be negative"); + } + if (maxTime < 0) { + throw new Error("max_time cannot be negative"); + } + if (maxTime > 0 && minTime > maxTime) { + throw new Error("min_time cannot be greater than max_time"); + } + this.timebounds = { + minTime, + maxTime + }; + return this; + } + /** + * If you want to prepare a transaction which will only be valid within some + * range of ledgers, you can set a ledgerbounds precondition. + * Internally this will set the `minLedger` and `maxLedger` preconditions. + * + * @param {number} minLedger The minimum ledger this transaction is valid at + * or after. Cannot be negative. If the value is `0` (the default), the + * transaction is valid immediately. + * + * @param {number} maxLedger The maximum ledger this transaction is valid + * before. Cannot be negative. If the value is `0`, the transaction is + * valid indefinitely. + * + * @returns {TransactionBuilder} + */ + }, { + key: "setLedgerbounds", + value: function setLedgerbounds(minLedger, maxLedger) { + if (this.ledgerbounds !== null) { + throw new Error("LedgerBounds has been already set - setting ledgerbounds would overwrite it."); + } + if (minLedger < 0) { + throw new Error("min_ledger cannot be negative"); + } + if (maxLedger < 0) { + throw new Error("max_ledger cannot be negative"); + } + if (maxLedger > 0 && minLedger > maxLedger) { + throw new Error("min_ledger cannot be greater than max_ledger"); + } + this.ledgerbounds = { + minLedger, + maxLedger + }; + return this; + } + /** + * If you want to prepare a transaction which will be valid only while the + * account sequence number is + * + * minAccountSequence <= sourceAccountSequence < tx.seqNum + * + * Note that after execution the account's sequence number is always raised to + * `tx.seqNum`. Internally this will set the `minAccountSequence` + * precondition. + * + * @param {string} minAccountSequence The minimum source account sequence + * number this transaction is valid for. If the value is `0` (the + * default), the transaction is valid when `sourceAccount's sequence + * number == tx.seqNum- 1`. + * + * @returns {TransactionBuilder} + */ + }, { + key: "setMinAccountSequence", + value: function setMinAccountSequence(minAccountSequence) { + if (this.minAccountSequence !== null) { + throw new Error("min_account_sequence has been already set - setting min_account_sequence would overwrite it."); + } + this.minAccountSequence = minAccountSequence; + return this; + } + /** + * For the transaction to be valid, the current ledger time must be at least + * `minAccountSequenceAge` greater than sourceAccount's `sequenceTime`. + * Internally this will set the `minAccountSequenceAge` precondition. + * + * @param {number} durationInSeconds The minimum amount of time between + * source account sequence time and the ledger time when this transaction + * will become valid. If the value is `0`, the transaction is unrestricted + * by the account sequence age. Cannot be negative. + * + * @returns {TransactionBuilder} + */ + }, { + key: "setMinAccountSequenceAge", + value: function setMinAccountSequenceAge(durationInSeconds) { + if (typeof durationInSeconds !== "number") { + throw new Error("min_account_sequence_age must be a number"); + } + if (this.minAccountSequenceAge !== null) { + throw new Error("min_account_sequence_age has been already set - setting min_account_sequence_age would overwrite it."); + } + if (durationInSeconds < 0) { + throw new Error("min_account_sequence_age cannot be negative"); + } + this.minAccountSequenceAge = durationInSeconds; + return this; + } + /** + * For the transaction to be valid, the current ledger number must be at least + * `minAccountSequenceLedgerGap` greater than sourceAccount's ledger sequence. + * Internally this will set the `minAccountSequenceLedgerGap` precondition. + * + * @param {number} gap The minimum number of ledgers between source account + * sequence and the ledger number when this transaction will become valid. + * If the value is `0`, the transaction is unrestricted by the account + * sequence ledger. Cannot be negative. + * + * @returns {TransactionBuilder} + */ + }, { + key: "setMinAccountSequenceLedgerGap", + value: function setMinAccountSequenceLedgerGap(gap) { + if (this.minAccountSequenceLedgerGap !== null) { + throw new Error("min_account_sequence_ledger_gap has been already set - setting min_account_sequence_ledger_gap would overwrite it."); + } + if (gap < 0) { + throw new Error("min_account_sequence_ledger_gap cannot be negative"); + } + this.minAccountSequenceLedgerGap = gap; + return this; + } + /** + * For the transaction to be valid, there must be a signature corresponding to + * every Signer in this array, even if the signature is not otherwise required + * by the sourceAccount or operations. Internally this will set the + * `extraSigners` precondition. + * + * @param {string[]} extraSigners required extra signers (as {@link StrKey}s) + * + * @returns {TransactionBuilder} + */ + }, { + key: "setExtraSigners", + value: function setExtraSigners(extraSigners) { + if (!Array.isArray(extraSigners)) { + throw new Error("extra_signers must be an array of strings."); + } + if (this.extraSigners !== null) { + throw new Error("extra_signers has been already set - setting extra_signers would overwrite it."); + } + if (extraSigners.length > 2) { + throw new Error("extra_signers cannot be longer than 2 elements."); + } + this.extraSigners = _toConsumableArray(extraSigners); + return this; + } + /** + * Set network nassphrase for the Transaction that will be built. + * + * @param {string} networkPassphrase passphrase of the target Stellar + * network (e.g. "Public Global Stellar Network ; September 2015"). + * + * @returns {TransactionBuilder} + */ + }, { + key: "setNetworkPassphrase", + value: function setNetworkPassphrase(networkPassphrase) { + this.networkPassphrase = networkPassphrase; + return this; + } + /** + * Sets the transaction's internal Soroban transaction data (resources, + * footprint, etc.). + * + * For non-contract(non-Soroban) transactions, this setting has no effect. In + * the case of Soroban transactions, this is either an instance of + * {@link xdr.SorobanTransactionData} or a base64-encoded string of said + * structure. This is usually obtained from the simulation response based on a + * transaction with a Soroban operation (e.g. + * {@link Operation.invokeHostFunction}, providing necessary resource + * and storage footprint estimations for contract invocation. + * + * @param {xdr.SorobanTransactionData | string} sorobanData the + * {@link xdr.SorobanTransactionData} as a raw xdr object or a base64 + * string to be decoded + * + * @returns {TransactionBuilder} + * @see {SorobanDataBuilder} + */ + }, { + key: "setSorobanData", + value: function setSorobanData(sorobanData) { + this.sorobanData = new _sorobandata_builder.SorobanDataBuilder(sorobanData).build(); + return this; + } + /** + * This will build the transaction. + * It will also increment the source account's sequence number by 1. + * @returns {Transaction} This method will return the built {@link Transaction}. + */ + }, { + key: "build", + value: function build() { + var sequenceNumber = new _bignumber["default"](this.source.sequenceNumber()).plus(1); + var fee = new _bignumber["default"](this.baseFee).times(this.operations.length).toNumber(); + var attrs = { + fee, + seqNum: _xdr["default"].SequenceNumber.fromString(sequenceNumber.toString()), + memo: this.memo ? this.memo.toXDRObject() : null + }; + if (this.timebounds === null || typeof this.timebounds.minTime === "undefined" || typeof this.timebounds.maxTime === "undefined") { + throw new Error("TimeBounds has to be set or you must call setTimeout(TimeoutInfinite)."); + } + if (isValidDate(this.timebounds.minTime)) { + this.timebounds.minTime = this.timebounds.minTime.getTime() / 1e3; + } + if (isValidDate(this.timebounds.maxTime)) { + this.timebounds.maxTime = this.timebounds.maxTime.getTime() / 1e3; + } + this.timebounds.minTime = _jsXdr.UnsignedHyper.fromString(this.timebounds.minTime.toString()); + this.timebounds.maxTime = _jsXdr.UnsignedHyper.fromString(this.timebounds.maxTime.toString()); + var timeBounds = new _xdr["default"].TimeBounds(this.timebounds); + if (this.hasV2Preconditions()) { + var ledgerBounds = null; + if (this.ledgerbounds !== null) { + ledgerBounds = new _xdr["default"].LedgerBounds(this.ledgerbounds); + } + var minSeqNum = this.minAccountSequence || "0"; + minSeqNum = _xdr["default"].SequenceNumber.fromString(minSeqNum); + var minSeqAge = _jsXdr.UnsignedHyper.fromString(this.minAccountSequenceAge !== null ? this.minAccountSequenceAge.toString() : "0"); + var minSeqLedgerGap = this.minAccountSequenceLedgerGap || 0; + var extraSigners = this.extraSigners !== null ? this.extraSigners.map(_signerkey.SignerKey.decodeAddress) : []; + attrs.cond = _xdr["default"].Preconditions.precondV2(new _xdr["default"].PreconditionsV2({ + timeBounds, + ledgerBounds, + minSeqNum, + minSeqAge, + minSeqLedgerGap, + extraSigners + })); + } else { + attrs.cond = _xdr["default"].Preconditions.precondTime(timeBounds); + } + attrs.sourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(this.source.accountId()); + if (this.sorobanData) { + attrs.ext = new _xdr["default"].TransactionExt(1, this.sorobanData); + } else { + attrs.ext = new _xdr["default"].TransactionExt(0, _xdr["default"].Void); + } + var xtx = new _xdr["default"].Transaction(attrs); + xtx.operations(this.operations); + var txEnvelope = new _xdr["default"].TransactionEnvelope.envelopeTypeTx(new _xdr["default"].TransactionV1Envelope({ + tx: xtx + })); + var tx = new _transaction.Transaction(txEnvelope, this.networkPassphrase); + this.source.incrementSequenceNumber(); + return tx; + } + }, { + key: "hasV2Preconditions", + value: function hasV2Preconditions() { + return this.ledgerbounds !== null || this.minAccountSequence !== null || this.minAccountSequenceAge !== null || this.minAccountSequenceLedgerGap !== null || this.extraSigners !== null && this.extraSigners.length > 0; + } + /** + * Builds a {@link FeeBumpTransaction}, enabling you to resubmit an existing + * transaction with a higher fee. + * + * @param {Keypair|string} feeSource - account paying for the transaction, + * in the form of either a Keypair (only the public key is used) or + * an account ID (in G... or M... form, but refer to `withMuxing`) + * @param {string} baseFee - max fee willing to pay per operation + * in inner transaction (**in stroops**) + * @param {Transaction} innerTx - {@link Transaction} to be bumped by + * the fee bump transaction + * @param {string} networkPassphrase - passphrase of the target + * Stellar network (e.g. "Public Global Stellar Network ; September 2015", + * see {@link Networks}) + * + * @todo Alongside the next major version bump, this type signature can be + * changed to be less awkward: accept a MuxedAccount as the `feeSource` + * rather than a keypair or string. + * + * @note Your fee-bump amount should be >= 10x the original fee. + * @see https://developers.stellar.org/docs/glossary/fee-bumps/#replace-by-fee + * + * @returns {FeeBumpTransaction} + */ + }], [{ + key: "cloneFrom", + value: function cloneFrom(tx) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + if (!(tx instanceof _transaction.Transaction)) { + throw new TypeError("expected a 'Transaction', got: ".concat(tx)); + } + var sequenceNum = (BigInt(tx.sequence) - 1n).toString(); + var source; + if (_strkey.StrKey.isValidMed25519PublicKey(tx.source)) { + source = _muxed_account.MuxedAccount.fromAddress(tx.source, sequenceNum); + } else if (_strkey.StrKey.isValidEd25519PublicKey(tx.source)) { + source = new _account.Account(tx.source, sequenceNum); + } else { + throw new TypeError("unsupported tx source account: ".concat(tx.source)); + } + var unscaledFee = parseInt(tx.fee, 10) / tx.operations.length; + var builder = new TransactionBuilder2(source, _objectSpread({ + fee: (unscaledFee || BASE_FEE).toString(), + memo: tx.memo, + networkPassphrase: tx.networkPassphrase, + timebounds: tx.timeBounds, + ledgerbounds: tx.ledgerBounds, + minAccountSequence: tx.minAccountSequence, + minAccountSequenceAge: tx.minAccountSequenceAge, + minAccountSequenceLedgerGap: tx.minAccountSequenceLedgerGap, + extraSigners: tx.extraSigners + }, opts)); + tx._tx.operations().forEach(function(op) { + return builder.addOperation(op); + }); + return builder; + } + }, { + key: "buildFeeBumpTransaction", + value: function buildFeeBumpTransaction(feeSource, baseFee, innerTx, networkPassphrase) { + var innerOps = innerTx.operations.length; + var minBaseFee = new _bignumber["default"](BASE_FEE); + var innerInclusionFee = new _bignumber["default"](innerTx.fee).div(innerOps); + var resourceFee = new _bignumber["default"](0); + var env = innerTx.toEnvelope(); + switch (env["switch"]().value) { + case _xdr["default"].EnvelopeType.envelopeTypeTx().value: { + var _sorobanData$resource; + var sorobanData = env.v1().tx().ext().value(); + resourceFee = new _bignumber["default"]((_sorobanData$resource = sorobanData === null || sorobanData === void 0 ? void 0 : sorobanData.resourceFee()) !== null && _sorobanData$resource !== void 0 ? _sorobanData$resource : 0); + innerInclusionFee = _bignumber["default"].max(minBaseFee, innerInclusionFee.minus(resourceFee)); + break; + } + default: + break; + } + var base = new _bignumber["default"](baseFee); + if (base.lt(innerInclusionFee)) { + throw new Error("Invalid baseFee, it should be at least ".concat(innerInclusionFee, " stroops.")); + } + if (base.lt(minBaseFee)) { + throw new Error("Invalid baseFee, it should be at least ".concat(minBaseFee, " stroops.")); + } + var innerTxEnvelope = innerTx.toEnvelope(); + if (innerTxEnvelope["switch"]() === _xdr["default"].EnvelopeType.envelopeTypeTxV0()) { + var v0Tx = innerTxEnvelope.v0().tx(); + var v1Tx = new _xdr["default"].Transaction({ + sourceAccount: new _xdr["default"].MuxedAccount.keyTypeEd25519(v0Tx.sourceAccountEd25519()), + fee: v0Tx.fee(), + seqNum: v0Tx.seqNum(), + cond: _xdr["default"].Preconditions.precondTime(v0Tx.timeBounds()), + memo: v0Tx.memo(), + operations: v0Tx.operations(), + ext: new _xdr["default"].TransactionExt(0) + }); + innerTxEnvelope = new _xdr["default"].TransactionEnvelope.envelopeTypeTx(new _xdr["default"].TransactionV1Envelope({ + tx: v1Tx, + signatures: innerTxEnvelope.v0().signatures() + })); + } + var feeSourceAccount; + if (typeof feeSource === "string") { + feeSourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(feeSource); + } else { + feeSourceAccount = feeSource.xdrMuxedAccount(); + } + var tx = new _xdr["default"].FeeBumpTransaction({ + feeSource: feeSourceAccount, + fee: _xdr["default"].Int64.fromString(base.times(innerOps + 1).plus(resourceFee).toString()), + innerTx: _xdr["default"].FeeBumpTransactionInnerTx.envelopeTypeTx(innerTxEnvelope.v1()), + ext: new _xdr["default"].FeeBumpTransactionExt(0) + }); + var feeBumpTxEnvelope = new _xdr["default"].FeeBumpTransactionEnvelope({ + tx, + signatures: [] + }); + var envelope = new _xdr["default"].TransactionEnvelope.envelopeTypeTxFeeBump(feeBumpTxEnvelope); + return new _fee_bump_transaction.FeeBumpTransaction(envelope, networkPassphrase); + } + /** + * Build a {@link Transaction} or {@link FeeBumpTransaction} from an + * xdr.TransactionEnvelope. + * + * @param {string|xdr.TransactionEnvelope} envelope - The transaction envelope + * object or base64 encoded string. + * @param {string} networkPassphrase - The network passphrase of the target + * Stellar network (e.g. "Public Global Stellar Network ; September + * 2015"), see {@link Networks}. + * + * @returns {Transaction|FeeBumpTransaction} + */ + }, { + key: "fromXDR", + value: function fromXDR(envelope, networkPassphrase) { + if (typeof envelope === "string") { + envelope = _xdr["default"].TransactionEnvelope.fromXDR(envelope, "base64"); + } + if (envelope["switch"]() === _xdr["default"].EnvelopeType.envelopeTypeTxFeeBump()) { + return new _fee_bump_transaction.FeeBumpTransaction(envelope, networkPassphrase); + } + return new _transaction.Transaction(envelope, networkPassphrase); + } + }]); + }(); + function isValidDate(d) { + return d instanceof Date && !isNaN(d); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/network.js +var require_network3 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/network.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Networks = void 0; + var Networks = exports2.Networks = { + PUBLIC: "Public Global Stellar Network ; September 2015", + TESTNET: "Test SDF Network ; September 2015", + FUTURENET: "Test SDF Future Network ; October 2022", + SANDBOX: "Local Sandbox Stellar Network ; September 2022", + STANDALONE: "Standalone Network ; February 2017" + }; + } +}); + +// node_modules/@stellar/stellar-base/lib/soroban.js +var require_soroban = __commonJS({ + "node_modules/@stellar/stellar-base/lib/soroban.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Soroban = void 0; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _toArray(r) { + return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Soroban = exports2.Soroban = /* @__PURE__ */ function() { + function Soroban2() { + _classCallCheck(this, Soroban2); + } + return _createClass(Soroban2, null, [{ + key: "formatTokenAmount", + value: ( + /** + * Given a whole number smart contract amount of a token and an amount of + * decimal places (if the token has any), it returns a "display" value. + * + * All arithmetic inside the contract is performed on integers to avoid + * potential precision and consistency issues of floating-point. + * + * @param {string} amount the token amount you want to display + * @param {number} decimals specify how many decimal places a token has + * + * @returns {string} the display value + * @throws {TypeError} if the given amount has a decimal point already + * @example + * formatTokenAmount("123000", 4) === "12.3"; + * formatTokenAmount("123000", 3) === "123.0"; + * formatTokenAmount("123", 3) === "0.123"; + */ + function formatTokenAmount(amount, decimals) { + if (amount.includes(".")) { + throw new TypeError("No decimals are allowed"); + } + var formatted = amount; + if (decimals > 0) { + if (decimals > formatted.length) { + formatted = ["0", formatted.toString().padStart(decimals, "0")].join("."); + } else { + formatted = [formatted.slice(0, -decimals), formatted.slice(-decimals)].join("."); + } + } + return formatted.replace(/(\.\d*?)0+$/, "$1").replace(/\.$/, ".0").replace(/^\./, "0."); + } + ) + /** + * Parse a token amount to use it on smart contract + * + * This function takes the display value and its decimals (if the token has + * any) and returns a string that'll be used within the smart contract. + * + * @param {string} value the token amount you want to use it on smart + * contract which you've been displaying in a UI + * @param {number} decimals the number of decimal places expected in the + * display value (different than the "actual" number, because suffix zeroes + * might not be present) + * + * @returns {string} the whole number token amount represented by the display + * value with the decimal places shifted over + * + * @example + * const displayValueAmount = "123.4560" + * const parsedAmtForSmartContract = parseTokenAmount(displayValueAmount, 5); + * parsedAmtForSmartContract === "12345600" + */ + }, { + key: "parseTokenAmount", + value: function parseTokenAmount(value, decimals) { + var _fraction$padEnd; + var _value$split$slice = value.split(".").slice(), _value$split$slice2 = _toArray(_value$split$slice), whole = _value$split$slice2[0], fraction = _value$split$slice2[1], rest = _arrayLikeToArray(_value$split$slice2).slice(2); + if (rest.length) { + throw new Error("Invalid decimal value: ".concat(value)); + } + var shifted = BigInt(whole + ((_fraction$padEnd = fraction === null || fraction === void 0 ? void 0 : fraction.padEnd(decimals, "0")) !== null && _fraction$padEnd !== void 0 ? _fraction$padEnd : "0".repeat(decimals))); + return shifted.toString(); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/contract.js +var require_contract = __commonJS({ + "node_modules/@stellar/stellar-base/lib/contract.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Contract = void 0; + var _address = require_address2(); + var _operation = require_operation(); + var _xdr = _interopRequireDefault(require_xdr2()); + var _strkey = require_strkey(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Contract = exports2.Contract = /* @__PURE__ */ function() { + function Contract2(contractId) { + _classCallCheck(this, Contract2); + try { + this._id = _strkey.StrKey.decodeContract(contractId); + } catch (_) { + throw new Error("Invalid contract ID: ".concat(contractId)); + } + } + return _createClass(Contract2, [{ + key: "contractId", + value: function contractId() { + return _strkey.StrKey.encodeContract(this._id); + } + /** @returns {string} the ID as a strkey (C...) */ + }, { + key: "toString", + value: function toString() { + return this.contractId(); + } + /** @returns {Address} the wrapped address of this contract */ + }, { + key: "address", + value: function address() { + return _address.Address.contract(this._id); + } + /** + * Returns an operation that will invoke this contract call. + * + * @param {string} method name of the method to call + * @param {...xdr.ScVal} params arguments to pass to the function call + * + * @returns {xdr.Operation} an InvokeHostFunctionOp operation to call the + * contract with the given method and parameters + * + * @see Operation.invokeHostFunction + * @see Operation.invokeContractFunction + * @see Operation.createCustomContract + * @see Operation.createStellarAssetContract + * @see Operation.uploadContractWasm + */ + }, { + key: "call", + value: function call(method) { + for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + params[_key - 1] = arguments[_key]; + } + return _operation.Operation.invokeContractFunction({ + contract: this.address().toString(), + "function": method, + args: params + }); + } + /** + * Returns the read-only footprint entries necessary for any invocations to + * this contract, for convenience when manually adding it to your + * transaction's overall footprint or doing bump/restore operations. + * + * @returns {xdr.LedgerKey} the ledger key for the deployed contract instance + */ + }, { + key: "getFootprint", + value: function getFootprint() { + return _xdr["default"].LedgerKey.contractData(new _xdr["default"].LedgerKeyContractData({ + contract: this.address().toScAddress(), + key: _xdr["default"].ScVal.scvLedgerKeyContractInstance(), + durability: _xdr["default"].ContractDataDurability.persistent() + })); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/uint128.js +var require_uint128 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/uint128.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Uint128 = void 0; + var _jsXdr = require_xdr(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var Uint128 = exports2.Uint128 = /* @__PURE__ */ function(_LargeInt) { + function Uint1282() { + _classCallCheck(this, Uint1282); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _callSuper(this, Uint1282, [args]); + } + _inherits(Uint1282, _LargeInt); + return _createClass(Uint1282, [{ + key: "unsigned", + get: function get() { + return true; + } + }, { + key: "size", + get: function get() { + return 128; + } + }]); + }(_jsXdr.LargeInt); + Uint128.defineIntBoundaries(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/uint256.js +var require_uint256 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/uint256.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Uint256 = void 0; + var _jsXdr = require_xdr(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var Uint256 = exports2.Uint256 = /* @__PURE__ */ function(_LargeInt) { + function Uint2562() { + _classCallCheck(this, Uint2562); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _callSuper(this, Uint2562, [args]); + } + _inherits(Uint2562, _LargeInt); + return _createClass(Uint2562, [{ + key: "unsigned", + get: function get() { + return true; + } + }, { + key: "size", + get: function get() { + return 256; + } + }]); + }(_jsXdr.LargeInt); + Uint256.defineIntBoundaries(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/int128.js +var require_int128 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/int128.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Int128 = void 0; + var _jsXdr = require_xdr(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var Int128 = exports2.Int128 = /* @__PURE__ */ function(_LargeInt) { + function Int1282() { + _classCallCheck(this, Int1282); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _callSuper(this, Int1282, [args]); + } + _inherits(Int1282, _LargeInt); + return _createClass(Int1282, [{ + key: "unsigned", + get: function get() { + return false; + } + }, { + key: "size", + get: function get() { + return 128; + } + }]); + }(_jsXdr.LargeInt); + Int128.defineIntBoundaries(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/int256.js +var require_int256 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/int256.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Int256 = void 0; + var _jsXdr = require_xdr(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var Int256 = exports2.Int256 = /* @__PURE__ */ function(_LargeInt) { + function Int2562() { + _classCallCheck(this, Int2562); + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + return _callSuper(this, Int2562, [args]); + } + _inherits(Int2562, _LargeInt); + return _createClass(Int2562, [{ + key: "unsigned", + get: function get() { + return false; + } + }, { + key: "size", + get: function get() { + return 256; + } + }]); + }(_jsXdr.LargeInt); + Int256.defineIntBoundaries(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/xdr_large_int.js +var require_xdr_large_int = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/xdr_large_int.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.XdrLargeInt = void 0; + var _jsXdr = require_xdr(); + var _uint = require_uint128(); + var _uint2 = require_uint256(); + var _int = require_int128(); + var _int2 = require_int256(); + var _xdr = _interopRequireDefault(require_xdr2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var XdrLargeInt = exports2.XdrLargeInt = /* @__PURE__ */ function() { + function XdrLargeInt2(type, values) { + _classCallCheck(this, XdrLargeInt2); + _defineProperty(this, "int", void 0); + _defineProperty(this, "type", void 0); + if (!(values instanceof Array)) { + values = [values]; + } + values = values.map(function(i) { + if (typeof i === "bigint") { + return i; + } + if (typeof i.toBigInt === "function") { + return i.toBigInt(); + } + return BigInt(i); + }); + switch (type) { + case "i64": + this["int"] = new _jsXdr.Hyper(values); + break; + case "i128": + this["int"] = new _int.Int128(values); + break; + case "i256": + this["int"] = new _int2.Int256(values); + break; + case "u64": + case "timepoint": + case "duration": + this["int"] = new _jsXdr.UnsignedHyper(values); + break; + case "u128": + this["int"] = new _uint.Uint128(values); + break; + case "u256": + this["int"] = new _uint2.Uint256(values); + break; + default: + throw TypeError("invalid type: ".concat(type)); + } + this.type = type; + } + return _createClass(XdrLargeInt2, [{ + key: "toNumber", + value: function toNumber() { + var bi = this["int"].toBigInt(); + if (bi > Number.MAX_SAFE_INTEGER || bi < Number.MIN_SAFE_INTEGER) { + throw RangeError("value ".concat(bi, " not in range for Number ") + "[".concat(Number.MAX_SAFE_INTEGER, ", ").concat(Number.MIN_SAFE_INTEGER, "]")); + } + return Number(bi); + } + /** @returns {bigint} */ + }, { + key: "toBigInt", + value: function toBigInt() { + return this["int"].toBigInt(); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = I64` */ + }, { + key: "toI64", + value: function toI64() { + this._sizeCheck(64); + var v = this.toBigInt(); + if (BigInt.asIntN(64, v) !== v) { + throw RangeError("value too large for i64: ".concat(v)); + } + return _xdr["default"].ScVal.scvI64(new _xdr["default"].Int64(v)); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = U64` */ + }, { + key: "toU64", + value: function toU64() { + this._sizeCheck(64); + return _xdr["default"].ScVal.scvU64( + new _xdr["default"].Uint64(BigInt.asUintN(64, this.toBigInt())) + // reiterpret as unsigned + ); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = Timepoint` */ + }, { + key: "toTimepoint", + value: function toTimepoint() { + this._sizeCheck(64); + return _xdr["default"].ScVal.scvTimepoint( + new _xdr["default"].Uint64(BigInt.asUintN(64, this.toBigInt())) + // reiterpret as unsigned + ); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = Duration` */ + }, { + key: "toDuration", + value: function toDuration() { + this._sizeCheck(64); + return _xdr["default"].ScVal.scvDuration( + new _xdr["default"].Uint64(BigInt.asUintN(64, this.toBigInt())) + // reiterpret as unsigned + ); + } + /** + * @returns {xdr.ScVal} the integer encoded with `ScValType = I128` + * @throws {RangeError} if the value cannot fit in 128 bits + */ + }, { + key: "toI128", + value: function toI128() { + this._sizeCheck(128); + var v = this["int"].toBigInt(); + var hi64 = BigInt.asIntN(64, v >> 64n); + var lo64 = BigInt.asUintN(64, v); + return _xdr["default"].ScVal.scvI128(new _xdr["default"].Int128Parts({ + hi: new _xdr["default"].Int64(hi64), + lo: new _xdr["default"].Uint64(lo64) + })); + } + /** + * @returns {xdr.ScVal} the integer encoded with `ScValType = U128` + * @throws {RangeError} if the value cannot fit in 128 bits + */ + }, { + key: "toU128", + value: function toU128() { + this._sizeCheck(128); + var v = this["int"].toBigInt(); + return _xdr["default"].ScVal.scvU128(new _xdr["default"].UInt128Parts({ + hi: new _xdr["default"].Uint64(BigInt.asUintN(64, v >> 64n)), + lo: new _xdr["default"].Uint64(BigInt.asUintN(64, v)) + })); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = I256` */ + }, { + key: "toI256", + value: function toI256() { + var v = this["int"].toBigInt(); + var hiHi64 = BigInt.asIntN(64, v >> 192n); + var hiLo64 = BigInt.asUintN(64, v >> 128n); + var loHi64 = BigInt.asUintN(64, v >> 64n); + var loLo64 = BigInt.asUintN(64, v); + return _xdr["default"].ScVal.scvI256(new _xdr["default"].Int256Parts({ + hiHi: new _xdr["default"].Int64(hiHi64), + hiLo: new _xdr["default"].Uint64(hiLo64), + loHi: new _xdr["default"].Uint64(loHi64), + loLo: new _xdr["default"].Uint64(loLo64) + })); + } + /** @returns {xdr.ScVal} the integer encoded with `ScValType = U256` */ + }, { + key: "toU256", + value: function toU256() { + var v = this["int"].toBigInt(); + var hiHi64 = BigInt.asUintN(64, v >> 192n); + var hiLo64 = BigInt.asUintN(64, v >> 128n); + var loHi64 = BigInt.asUintN(64, v >> 64n); + var loLo64 = BigInt.asUintN(64, v); + return _xdr["default"].ScVal.scvU256(new _xdr["default"].UInt256Parts({ + hiHi: new _xdr["default"].Uint64(hiHi64), + hiLo: new _xdr["default"].Uint64(hiLo64), + loHi: new _xdr["default"].Uint64(loHi64), + loLo: new _xdr["default"].Uint64(loLo64) + })); + } + /** @returns {xdr.ScVal} the smallest interpretation of the stored value */ + }, { + key: "toScVal", + value: function toScVal() { + switch (this.type) { + case "i64": + return this.toI64(); + case "i128": + return this.toI128(); + case "i256": + return this.toI256(); + case "u64": + return this.toU64(); + case "u128": + return this.toU128(); + case "u256": + return this.toU256(); + case "timepoint": + return this.toTimepoint(); + case "duration": + return this.toDuration(); + default: + throw TypeError("invalid type: ".concat(this.type)); + } + } + }, { + key: "valueOf", + value: function valueOf() { + return this["int"].valueOf(); + } + }, { + key: "toString", + value: function toString() { + return this["int"].toString(); + } + }, { + key: "toJSON", + value: function toJSON() { + return { + value: this.toBigInt().toString(), + type: this.type + }; + } + }, { + key: "_sizeCheck", + value: function _sizeCheck(bits) { + if (this["int"].size > bits) { + throw RangeError("value too large for ".concat(bits, " bits (").concat(this.type, ")")); + } + } + }], [{ + key: "isType", + value: function isType(type) { + switch (type) { + case "i64": + case "i128": + case "i256": + case "u64": + case "u128": + case "u256": + case "timepoint": + case "duration": + return true; + default: + return false; + } + } + /** + * Convert the raw `ScValType` string (e.g. 'scvI128', generated by the XDR) + * to a type description for {@link XdrLargeInt} construction (e.g. 'i128') + * + * @param {string} scvType the `xdr.ScValType` as a string + * @returns {string} a suitable equivalent type to construct this object + */ + }, { + key: "getType", + value: function getType(scvType) { + return scvType.slice(3).toLowerCase(); + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/sc_int.js +var require_sc_int = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/sc_int.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ScInt = void 0; + var _xdr_large_int = require_xdr_large_int(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var ScInt = exports2.ScInt = /* @__PURE__ */ function(_XdrLargeInt) { + function ScInt2(value, opts) { + var _opts$type; + _classCallCheck(this, ScInt2); + var signed = value < 0; + var type = (_opts$type = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type !== void 0 ? _opts$type : ""; + if (type.startsWith("u") && signed) { + throw TypeError("specified type ".concat(opts.type, " yet negative (").concat(value, ")")); + } + if (type === "") { + type = signed ? "i" : "u"; + var bitlen = nearestBigIntSize(value); + switch (bitlen) { + case 64: + case 128: + case 256: + type += bitlen.toString(); + break; + default: + throw RangeError("expected 64/128/256 bits for input (".concat(value, "), got ").concat(bitlen)); + } + } + return _callSuper(this, ScInt2, [type, value]); + } + _inherits(ScInt2, _XdrLargeInt); + return _createClass(ScInt2); + }(_xdr_large_int.XdrLargeInt); + function nearestBigIntSize(bigI) { + var _find; + var bitlen = bigI.toString(2).length; + return (_find = [64, 128, 256].find(function(len) { + return bitlen <= len; + })) !== null && _find !== void 0 ? _find : bitlen; + } + } +}); + +// node_modules/@stellar/stellar-base/lib/numbers/index.js +var require_numbers = __commonJS({ + "node_modules/@stellar/stellar-base/lib/numbers/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + Object.defineProperty(exports2, "Int128", { + enumerable: true, + get: function get() { + return _int.Int128; + } + }); + Object.defineProperty(exports2, "Int256", { + enumerable: true, + get: function get() { + return _int2.Int256; + } + }); + Object.defineProperty(exports2, "ScInt", { + enumerable: true, + get: function get() { + return _sc_int.ScInt; + } + }); + Object.defineProperty(exports2, "Uint128", { + enumerable: true, + get: function get() { + return _uint.Uint128; + } + }); + Object.defineProperty(exports2, "Uint256", { + enumerable: true, + get: function get() { + return _uint2.Uint256; + } + }); + Object.defineProperty(exports2, "XdrLargeInt", { + enumerable: true, + get: function get() { + return _xdr_large_int.XdrLargeInt; + } + }); + exports2.scValToBigInt = scValToBigInt; + var _xdr_large_int = require_xdr_large_int(); + var _uint = require_uint128(); + var _uint2 = require_uint256(); + var _int = require_int128(); + var _int2 = require_int256(); + var _sc_int = require_sc_int(); + function scValToBigInt(scv) { + var scIntType = _xdr_large_int.XdrLargeInt.getType(scv["switch"]().name); + switch (scv["switch"]().name) { + case "scvU32": + case "scvI32": + return BigInt(scv.value()); + case "scvU64": + case "scvI64": + case "scvTimepoint": + case "scvDuration": + return new _xdr_large_int.XdrLargeInt(scIntType, scv.value()).toBigInt(); + case "scvU128": + case "scvI128": + return new _xdr_large_int.XdrLargeInt(scIntType, [scv.value().lo(), scv.value().hi()]).toBigInt(); + case "scvU256": + case "scvI256": + return new _xdr_large_int.XdrLargeInt(scIntType, [scv.value().loLo(), scv.value().loHi(), scv.value().hiLo(), scv.value().hiHi()]).toBigInt(); + default: + throw TypeError("expected integer type, got ".concat(scv["switch"]())); + } + } + } +}); + +// node_modules/@stellar/stellar-base/lib/scval.js +var require_scval = __commonJS({ + "node_modules/@stellar/stellar-base/lib/scval.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.nativeToScVal = nativeToScVal; + exports2.scValToNative = scValToNative; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _address = require_address2(); + var _contract = require_contract(); + var _index = require_numbers(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function nativeToScVal(val) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + switch (_typeof(val)) { + case "object": { + var _val$constructor$name, _val$constructor; + if (val === null) { + return _xdr["default"].ScVal.scvVoid(); + } + if (val instanceof _xdr["default"].ScVal) { + return val; + } + if (val instanceof _address.Address) { + return val.toScVal(); + } + if (val instanceof _keypair.Keypair) { + return nativeToScVal(val.publicKey(), { + type: "address" + }); + } + if (val instanceof _contract.Contract) { + return val.address().toScVal(); + } + if (val instanceof Uint8Array || Buffer.isBuffer(val)) { + var _opts$type; + var copy = Uint8Array.from(val); + switch ((_opts$type = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type !== void 0 ? _opts$type : "bytes") { + case "bytes": + return _xdr["default"].ScVal.scvBytes(copy); + case "symbol": + return _xdr["default"].ScVal.scvSymbol(copy); + case "string": + return _xdr["default"].ScVal.scvString(copy); + default: + throw new TypeError("invalid type (".concat(opts.type, ") specified for bytes-like value")); + } + } + if (Array.isArray(val)) { + return _xdr["default"].ScVal.scvVec(val.map(function(v, idx) { + if (Array.isArray(opts.type)) { + return nativeToScVal( + v, + // only include a `{ type: ... }` if it's present (safer than + // `{type: undefined}`) + _objectSpread({}, opts.type.length > idx && { + type: opts.type[idx] + }) + ); + } + return nativeToScVal(v, opts); + })); + } + if (((_val$constructor$name = (_val$constructor = val.constructor) === null || _val$constructor === void 0 ? void 0 : _val$constructor.name) !== null && _val$constructor$name !== void 0 ? _val$constructor$name : "") !== "Object") { + var _val$constructor2; + throw new TypeError("cannot interpret ".concat((_val$constructor2 = val.constructor) === null || _val$constructor2 === void 0 ? void 0 : _val$constructor2.name, " value as ScVal (").concat(JSON.stringify(val), ")")); + } + return _xdr["default"].ScVal.scvMap(Object.entries(val).sort(function(_ref, _ref2) { + var _ref3 = _slicedToArray(_ref, 1), key1 = _ref3[0]; + var _ref4 = _slicedToArray(_ref2, 1), key2 = _ref4[0]; + return key1.localeCompare(key2); + }).map(function(_ref5) { + var _k, _opts$type2; + var _ref6 = _slicedToArray(_ref5, 2), k = _ref6[0], v = _ref6[1]; + var _ref7 = (_k = ((_opts$type2 = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type2 !== void 0 ? _opts$type2 : {})[k]) !== null && _k !== void 0 ? _k : [null, null], _ref8 = _slicedToArray(_ref7, 2), keyType = _ref8[0], valType = _ref8[1]; + var keyOpts = keyType ? { + type: keyType + } : {}; + var valOpts = valType ? { + type: valType + } : {}; + return new _xdr["default"].ScMapEntry({ + key: nativeToScVal(k, keyOpts), + val: nativeToScVal(v, valOpts) + }); + })); + } + case "number": + case "bigint": + switch (opts === null || opts === void 0 ? void 0 : opts.type) { + case "u32": + return _xdr["default"].ScVal.scvU32(val); + case "i32": + return _xdr["default"].ScVal.scvI32(val); + default: + break; + } + return new _index.ScInt(val, { + type: opts === null || opts === void 0 ? void 0 : opts.type + }).toScVal(); + case "string": { + var _opts$type3; + var optType = (_opts$type3 = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type3 !== void 0 ? _opts$type3 : "string"; + switch (optType) { + case "string": + return _xdr["default"].ScVal.scvString(val); + case "symbol": + return _xdr["default"].ScVal.scvSymbol(val); + case "address": + return new _address.Address(val).toScVal(); + case "u32": + return _xdr["default"].ScVal.scvU32(parseInt(val, 10)); + case "i32": + return _xdr["default"].ScVal.scvI32(parseInt(val, 10)); + default: + if (_index.XdrLargeInt.isType(optType)) { + return new _index.XdrLargeInt(optType, val).toScVal(); + } + throw new TypeError("invalid type (".concat(opts.type, ") specified for string value")); + } + } + case "boolean": + return _xdr["default"].ScVal.scvBool(val); + case "undefined": + return _xdr["default"].ScVal.scvVoid(); + case "function": + return nativeToScVal(val()); + default: + throw new TypeError("failed to convert typeof ".concat(_typeof(val), " (").concat(val, ")")); + } + } + function scValToNative(scv) { + var _scv$vec, _scv$map; + switch (scv["switch"]().value) { + case _xdr["default"].ScValType.scvVoid().value: + return null; + // these can be converted to bigints directly + case _xdr["default"].ScValType.scvU64().value: + case _xdr["default"].ScValType.scvI64().value: + return scv.value().toBigInt(); + // these can be parsed by internal abstractions note that this can also + // handle the above two cases, but it's not as efficient (another + // type-check, parsing, etc.) + case _xdr["default"].ScValType.scvU128().value: + case _xdr["default"].ScValType.scvI128().value: + case _xdr["default"].ScValType.scvU256().value: + case _xdr["default"].ScValType.scvI256().value: + return (0, _index.scValToBigInt)(scv); + case _xdr["default"].ScValType.scvVec().value: + return ((_scv$vec = scv.vec()) !== null && _scv$vec !== void 0 ? _scv$vec : []).map(scValToNative); + case _xdr["default"].ScValType.scvAddress().value: + return _address.Address.fromScVal(scv).toString(); + case _xdr["default"].ScValType.scvMap().value: + return Object.fromEntries(((_scv$map = scv.map()) !== null && _scv$map !== void 0 ? _scv$map : []).map(function(entry) { + return [scValToNative(entry.key()), scValToNative(entry.val())]; + })); + // these return the primitive type directly + case _xdr["default"].ScValType.scvBool().value: + case _xdr["default"].ScValType.scvU32().value: + case _xdr["default"].ScValType.scvI32().value: + case _xdr["default"].ScValType.scvBytes().value: + return scv.value(); + // Symbols are limited to [a-zA-Z0-9_]+, so we can safely make ascii strings + // + // Strings, however, are "presented" as strings and we treat them as such + // (in other words, string = bytes with a hint that it's text). If the user + // encoded non-printable bytes in their string value, that's on them. + // + // Note that we assume a utf8 encoding (ascii-compatible). For other + // encodings, you should probably use bytes anyway. If it cannot be decoded, + // the raw bytes are returned. + case _xdr["default"].ScValType.scvSymbol().value: + case _xdr["default"].ScValType.scvString().value: { + var v = scv.value(); + if (Buffer.isBuffer(v) || ArrayBuffer.isView(v)) { + try { + return new TextDecoder().decode(v); + } catch (e) { + return new Uint8Array(v.buffer); + } + } + return v; + } + // these can be converted to bigint + case _xdr["default"].ScValType.scvTimepoint().value: + case _xdr["default"].ScValType.scvDuration().value: + return new _xdr["default"].Uint64(scv.value()).toBigInt(); + case _xdr["default"].ScValType.scvError().value: + switch (scv.error()["switch"]().value) { + // Distinguish errors from the user contract. + case _xdr["default"].ScErrorType.sceContract().value: + return { + type: "contract", + code: scv.error().contractCode() + }; + default: { + var err2 = scv.error(); + return { + type: "system", + code: err2.code().value, + value: err2.code().name + }; + } + } + // in the fallthrough case, just return the underlying value directly + default: + return scv.value(); + } + } + _xdr["default"].scvSortedMap = function(items) { + var sorted = Array.from(items).sort(function(a, b) { + var nativeA = scValToNative(a.key()); + var nativeB = scValToNative(b.key()); + switch (_typeof(nativeA)) { + case "number": + case "bigint": + return nativeA < nativeB ? -1 : 1; + default: + return nativeA.toString().localeCompare(nativeB.toString()); + } + }); + return _xdr["default"].ScVal.scvMap(sorted); + }; + } +}); + +// node_modules/@stellar/stellar-base/lib/events.js +var require_events2 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/events.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.humanizeEvents = humanizeEvents; + var _strkey = require_strkey(); + var _scval = require_scval(); + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function humanizeEvents(events) { + return events.map(function(e) { + if (e.inSuccessfulContractCall) { + return extractEvent(e.event()); + } + return extractEvent(e); + }); + } + function extractEvent(event) { + return _objectSpread(_objectSpread({}, typeof event.contractId === "function" && event.contractId() != null && { + contractId: _strkey.StrKey.encodeContract(event.contractId()) + }), {}, { + type: event.type().name, + topics: event.body().value().topics().map(function(t) { + return (0, _scval.scValToNative)(t); + }), + data: (0, _scval.scValToNative)(event.body().value().data()) + }); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/auth.js +var require_auth = __commonJS({ + "node_modules/@stellar/stellar-base/lib/auth.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.authorizeEntry = authorizeEntry; + exports2.authorizeInvocation = authorizeInvocation; + var _xdr = _interopRequireDefault(require_xdr2()); + var _keypair = require_keypair(); + var _strkey = require_strkey(); + var _network = require_network3(); + var _hashing = require_hashing(); + var _address = require_address2(); + var _scval = require_scval(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3["return"]) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function authorizeEntry(_x, _x2, _x3) { + return _authorizeEntry.apply(this, arguments); + } + function _authorizeEntry() { + _authorizeEntry = _asyncToGenerator(/* @__PURE__ */ _regenerator().m(function _callee(entry, signer, validUntilLedgerSeq) { + var networkPassphrase, clone, addrAuth, networkId, preimage, payload, signature, publicKey, sigResult, sigScVal, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + networkPassphrase = _args.length > 3 && _args[3] !== void 0 ? _args[3] : _network.Networks.FUTURENET; + if (!(entry.credentials()["switch"]().value !== _xdr["default"].SorobanCredentialsType.sorobanCredentialsAddress().value)) { + _context.n = 1; + break; + } + return _context.a(2, entry); + case 1: + clone = _xdr["default"].SorobanAuthorizationEntry.fromXDR(entry.toXDR()); + addrAuth = clone.credentials().address(); + addrAuth.signatureExpirationLedger(validUntilLedgerSeq); + networkId = (0, _hashing.hash)(Buffer.from(networkPassphrase)); + preimage = _xdr["default"].HashIdPreimage.envelopeTypeSorobanAuthorization(new _xdr["default"].HashIdPreimageSorobanAuthorization({ + networkId, + nonce: addrAuth.nonce(), + invocation: clone.rootInvocation(), + signatureExpirationLedger: addrAuth.signatureExpirationLedger() + })); + payload = (0, _hashing.hash)(preimage.toXDR()); + if (!(typeof signer === "function")) { + _context.n = 3; + break; + } + _context.n = 2; + return signer(preimage); + case 2: + sigResult = _context.v; + if (sigResult !== null && sigResult !== void 0 && sigResult.signature) { + signature = Buffer.from(sigResult.signature); + publicKey = sigResult.publicKey; + } else { + signature = Buffer.from(sigResult); + publicKey = _address.Address.fromScAddress(addrAuth.address()).toString(); + } + _context.n = 4; + break; + case 3: + signature = Buffer.from(signer.sign(payload)); + publicKey = signer.publicKey(); + case 4: + if (_keypair.Keypair.fromPublicKey(publicKey).verify(payload, signature)) { + _context.n = 5; + break; + } + throw new Error("signature doesn't match payload"); + case 5: + sigScVal = (0, _scval.nativeToScVal)({ + public_key: _strkey.StrKey.decodeEd25519PublicKey(publicKey), + signature + }, { + type: { + public_key: ["symbol", null], + signature: ["symbol", null] + } + }); + addrAuth.signature(_xdr["default"].ScVal.scvVec([sigScVal])); + return _context.a(2, clone); + } + }, _callee); + })); + return _authorizeEntry.apply(this, arguments); + } + function authorizeInvocation(signer, validUntilLedgerSeq, invocation) { + var publicKey = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ""; + var networkPassphrase = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : _network.Networks.FUTURENET; + var kp = _keypair.Keypair.random().rawPublicKey(); + var nonce = new _xdr["default"].Int64(bytesToInt64(kp)); + var pk = publicKey || signer.publicKey(); + if (!pk) { + throw new Error("authorizeInvocation requires publicKey parameter"); + } + var entry = new _xdr["default"].SorobanAuthorizationEntry({ + rootInvocation: invocation, + credentials: _xdr["default"].SorobanCredentials.sorobanCredentialsAddress(new _xdr["default"].SorobanAddressCredentials({ + address: new _address.Address(pk).toScAddress(), + nonce, + signatureExpirationLedger: 0, + // replaced + signature: _xdr["default"].ScVal.scvVec([]) + // replaced + })) + }); + return authorizeEntry(entry, signer, validUntilLedgerSeq, networkPassphrase); + } + function bytesToInt64(bytes) { + return bytes.subarray(0, 8).reduce(function(accum, b) { + return accum << 8 | b; + }, 0); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/invocation.js +var require_invocation = __commonJS({ + "node_modules/@stellar/stellar-base/lib/invocation.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.buildInvocationTree = buildInvocationTree; + exports2.walkInvocationTree = walkInvocationTree; + var _asset = require_asset(); + var _address = require_address2(); + var _scval = require_scval(); + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function buildInvocationTree(root) { + var fn = root["function"](); + var output = {}; + var inner = fn.value(); + switch (fn["switch"]().value) { + // sorobanAuthorizedFunctionTypeContractFn + case 0: + output.type = "execute"; + output.args = { + source: _address.Address.fromScAddress(inner.contractAddress()).toString(), + "function": inner.functionName(), + args: inner.args().map(function(arg) { + return (0, _scval.scValToNative)(arg); + }) + }; + break; + // sorobanAuthorizedFunctionTypeCreateContractHostFn + // sorobanAuthorizedFunctionTypeCreateContractV2HostFn + case 1: + // fallthrough: just no ctor args in V1 + case 2: { + var createV2 = fn["switch"]().value === 2; + output.type = "create"; + output.args = {}; + var _ref = [inner.executable(), inner.contractIdPreimage()], exec = _ref[0], preimage = _ref[1]; + if (!!exec["switch"]().value !== !!preimage["switch"]().value) { + throw new Error("creation function appears invalid: ".concat(JSON.stringify(inner), " (should be wasm+address or token+asset)")); + } + switch (exec["switch"]().value) { + // contractExecutableWasm + case 0: { + var details = preimage.fromAddress(); + output.args.type = "wasm"; + output.args.wasm = _objectSpread({ + salt: details.salt().toString("hex"), + hash: exec.wasmHash().toString("hex"), + address: _address.Address.fromScAddress(details.address()).toString() + }, createV2 && { + constructorArgs: inner.constructorArgs().map(function(arg) { + return (0, _scval.scValToNative)(arg); + }) + }); + break; + } + // contractExecutableStellarAsset + case 1: + output.args.type = "sac"; + output.args.asset = _asset.Asset.fromOperation(preimage.fromAsset()).toString(); + break; + default: + throw new Error("unknown creation type: ".concat(JSON.stringify(exec))); + } + break; + } + default: + throw new Error("unknown invocation type (".concat(fn["switch"](), "): ").concat(JSON.stringify(fn))); + } + output.invocations = root.subInvocations().map(function(i) { + return buildInvocationTree(i); + }); + return output; + } + function walkInvocationTree(root, callback) { + walkHelper(root, 1, callback); + } + function walkHelper(node, depth, callback, parent) { + if (callback(node, depth, parent) === false) { + return; + } + node.subInvocations().forEach(function(i) { + return walkHelper(i, depth + 1, callback, node); + }); + } + } +}); + +// node_modules/@stellar/stellar-base/lib/index.js +var require_lib20 = __commonJS({ + "node_modules/@stellar/stellar-base/lib/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + xdr: true, + cereal: true, + hash: true, + sign: true, + verify: true, + getLiquidityPoolId: true, + LiquidityPoolFeeV18: true, + Keypair: true, + UnsignedHyper: true, + Hyper: true, + TransactionBase: true, + Transaction: true, + FeeBumpTransaction: true, + TransactionBuilder: true, + TimeoutInfinite: true, + BASE_FEE: true, + Asset: true, + LiquidityPoolAsset: true, + LiquidityPoolId: true, + Operation: true, + AuthRequiredFlag: true, + AuthRevocableFlag: true, + AuthImmutableFlag: true, + AuthClawbackEnabledFlag: true, + Account: true, + MuxedAccount: true, + Claimant: true, + Networks: true, + StrKey: true, + SignerKey: true, + Soroban: true, + decodeAddressToMuxedAccount: true, + encodeMuxedAccountToAddress: true, + extractBaseAddress: true, + encodeMuxedAccount: true, + Contract: true, + Address: true + }; + Object.defineProperty(exports2, "Account", { + enumerable: true, + get: function get() { + return _account.Account; + } + }); + Object.defineProperty(exports2, "Address", { + enumerable: true, + get: function get() { + return _address.Address; + } + }); + Object.defineProperty(exports2, "Asset", { + enumerable: true, + get: function get() { + return _asset.Asset; + } + }); + Object.defineProperty(exports2, "AuthClawbackEnabledFlag", { + enumerable: true, + get: function get() { + return _operation.AuthClawbackEnabledFlag; + } + }); + Object.defineProperty(exports2, "AuthImmutableFlag", { + enumerable: true, + get: function get() { + return _operation.AuthImmutableFlag; + } + }); + Object.defineProperty(exports2, "AuthRequiredFlag", { + enumerable: true, + get: function get() { + return _operation.AuthRequiredFlag; + } + }); + Object.defineProperty(exports2, "AuthRevocableFlag", { + enumerable: true, + get: function get() { + return _operation.AuthRevocableFlag; + } + }); + Object.defineProperty(exports2, "BASE_FEE", { + enumerable: true, + get: function get() { + return _transaction_builder.BASE_FEE; + } + }); + Object.defineProperty(exports2, "Claimant", { + enumerable: true, + get: function get() { + return _claimant.Claimant; + } + }); + Object.defineProperty(exports2, "Contract", { + enumerable: true, + get: function get() { + return _contract.Contract; + } + }); + Object.defineProperty(exports2, "FeeBumpTransaction", { + enumerable: true, + get: function get() { + return _fee_bump_transaction.FeeBumpTransaction; + } + }); + Object.defineProperty(exports2, "Hyper", { + enumerable: true, + get: function get() { + return _jsXdr.Hyper; + } + }); + Object.defineProperty(exports2, "Keypair", { + enumerable: true, + get: function get() { + return _keypair.Keypair; + } + }); + Object.defineProperty(exports2, "LiquidityPoolAsset", { + enumerable: true, + get: function get() { + return _liquidity_pool_asset.LiquidityPoolAsset; + } + }); + Object.defineProperty(exports2, "LiquidityPoolFeeV18", { + enumerable: true, + get: function get() { + return _get_liquidity_pool_id.LiquidityPoolFeeV18; + } + }); + Object.defineProperty(exports2, "LiquidityPoolId", { + enumerable: true, + get: function get() { + return _liquidity_pool_id.LiquidityPoolId; + } + }); + Object.defineProperty(exports2, "MuxedAccount", { + enumerable: true, + get: function get() { + return _muxed_account.MuxedAccount; + } + }); + Object.defineProperty(exports2, "Networks", { + enumerable: true, + get: function get() { + return _network.Networks; + } + }); + Object.defineProperty(exports2, "Operation", { + enumerable: true, + get: function get() { + return _operation.Operation; + } + }); + Object.defineProperty(exports2, "SignerKey", { + enumerable: true, + get: function get() { + return _signerkey.SignerKey; + } + }); + Object.defineProperty(exports2, "Soroban", { + enumerable: true, + get: function get() { + return _soroban.Soroban; + } + }); + Object.defineProperty(exports2, "StrKey", { + enumerable: true, + get: function get() { + return _strkey.StrKey; + } + }); + Object.defineProperty(exports2, "TimeoutInfinite", { + enumerable: true, + get: function get() { + return _transaction_builder.TimeoutInfinite; + } + }); + Object.defineProperty(exports2, "Transaction", { + enumerable: true, + get: function get() { + return _transaction.Transaction; + } + }); + Object.defineProperty(exports2, "TransactionBase", { + enumerable: true, + get: function get() { + return _transaction_base.TransactionBase; + } + }); + Object.defineProperty(exports2, "TransactionBuilder", { + enumerable: true, + get: function get() { + return _transaction_builder.TransactionBuilder; + } + }); + Object.defineProperty(exports2, "UnsignedHyper", { + enumerable: true, + get: function get() { + return _jsXdr.UnsignedHyper; + } + }); + Object.defineProperty(exports2, "cereal", { + enumerable: true, + get: function get() { + return _jsxdr["default"]; + } + }); + Object.defineProperty(exports2, "decodeAddressToMuxedAccount", { + enumerable: true, + get: function get() { + return _decode_encode_muxed_account.decodeAddressToMuxedAccount; + } + }); + exports2["default"] = void 0; + Object.defineProperty(exports2, "encodeMuxedAccount", { + enumerable: true, + get: function get() { + return _decode_encode_muxed_account.encodeMuxedAccount; + } + }); + Object.defineProperty(exports2, "encodeMuxedAccountToAddress", { + enumerable: true, + get: function get() { + return _decode_encode_muxed_account.encodeMuxedAccountToAddress; + } + }); + Object.defineProperty(exports2, "extractBaseAddress", { + enumerable: true, + get: function get() { + return _decode_encode_muxed_account.extractBaseAddress; + } + }); + Object.defineProperty(exports2, "getLiquidityPoolId", { + enumerable: true, + get: function get() { + return _get_liquidity_pool_id.getLiquidityPoolId; + } + }); + Object.defineProperty(exports2, "hash", { + enumerable: true, + get: function get() { + return _hashing.hash; + } + }); + Object.defineProperty(exports2, "sign", { + enumerable: true, + get: function get() { + return _signing.sign; + } + }); + Object.defineProperty(exports2, "verify", { + enumerable: true, + get: function get() { + return _signing.verify; + } + }); + Object.defineProperty(exports2, "xdr", { + enumerable: true, + get: function get() { + return _xdr["default"]; + } + }); + var _xdr = _interopRequireDefault(require_xdr2()); + var _jsxdr = _interopRequireDefault(require_jsxdr()); + var _hashing = require_hashing(); + var _signing = require_signing(); + var _get_liquidity_pool_id = require_get_liquidity_pool_id(); + var _keypair = require_keypair(); + var _jsXdr = require_xdr(); + var _transaction_base = require_transaction_base(); + var _transaction = require_transaction5(); + var _fee_bump_transaction = require_fee_bump_transaction(); + var _transaction_builder = require_transaction_builder(); + var _asset = require_asset(); + var _liquidity_pool_asset = require_liquidity_pool_asset(); + var _liquidity_pool_id = require_liquidity_pool_id(); + var _operation = require_operation(); + var _memo = require_memo(); + Object.keys(_memo).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _memo[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _memo[key]; + } + }); + }); + var _account = require_account(); + var _muxed_account = require_muxed_account(); + var _claimant = require_claimant(); + var _network = require_network3(); + var _strkey = require_strkey(); + var _signerkey = require_signerkey(); + var _soroban = require_soroban(); + var _decode_encode_muxed_account = require_decode_encode_muxed_account(); + var _contract = require_contract(); + var _address = require_address2(); + var _numbers = require_numbers(); + Object.keys(_numbers).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _numbers[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _numbers[key]; + } + }); + }); + var _scval = require_scval(); + Object.keys(_scval).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _scval[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _scval[key]; + } + }); + }); + var _events = require_events2(); + Object.keys(_events).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _events[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _events[key]; + } + }); + }); + var _sorobandata_builder = require_sorobandata_builder(); + Object.keys(_sorobandata_builder).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _sorobandata_builder[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _sorobandata_builder[key]; + } + }); + }); + var _auth = require_auth(); + Object.keys(_auth).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _auth[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _auth[key]; + } + }); + }); + var _invocation = require_invocation(); + Object.keys(_invocation).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _invocation[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _invocation[key]; + } + }); + }); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { "default": e }; + } + var _default = exports2["default"] = module2.exports; + } +}); + +// node_modules/urijs/src/punycode.js +var require_punycode = __commonJS({ + "node_modules/urijs/src/punycode.js"(exports2, module2) { + (function(root) { + var freeExports = typeof exports2 == "object" && exports2 && !exports2.nodeType && exports2; + var freeModule = typeof module2 == "object" && module2 && !module2.nodeType && module2; + var freeGlobal = typeof global == "object" && global; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) { + root = freeGlobal; + } + var punycode, maxInt = 2147483647, base = 36, tMin = 1, tMax = 26, skew = 38, damp = 700, initialBias = 72, initialN = 128, delimiter = "-", regexPunycode = /^xn--/, regexNonASCII = /[^\x20-\x7E]/, regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, errors = { + "overflow": "Overflow: input needs wider integers to process", + "not-basic": "Illegal input >= 0x80 (not a basic code point)", + "invalid-input": "Invalid input" + }, baseMinusTMin = base - tMin, floor = Math.floor, stringFromCharCode = String.fromCharCode, key; + function error(type) { + throw new RangeError(errors[type]); + } + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + function mapDomain(string, fn) { + var parts = string.split("@"); + var result = ""; + if (parts.length > 1) { + result = parts[0] + "@"; + string = parts[1]; + } + string = string.replace(regexSeparators, "."); + var labels = string.split("."); + var encoded = map(labels, fn).join("."); + return result + encoded; + } + function ucs2decode(string) { + var output = [], counter = 0, length = string.length, value, extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 55296 && value <= 56319 && counter < length) { + extra = string.charCodeAt(counter++); + if ((extra & 64512) == 56320) { + output.push(((value & 1023) << 10) + (extra & 1023) + 65536); + } else { + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + function ucs2encode(array) { + return map(array, function(value) { + var output = ""; + if (value > 65535) { + value -= 65536; + output += stringFromCharCode(value >>> 10 & 1023 | 55296); + value = 56320 | value & 1023; + } + output += stringFromCharCode(value); + return output; + }).join(""); + } + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + function digitToBasic(digit, flag) { + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + function decode(input) { + var output = [], inputLength = input.length, out, i = 0, n = initialN, bias = initialBias, basic, j, index, oldi, w, k, digit, t, baseMinusT; + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + for (j = 0; j < basic; ++j) { + if (input.charCodeAt(j) >= 128) { + error("not-basic"); + } + output.push(input.charCodeAt(j)); + } + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; ) { + for (oldi = i, w = 1, k = base; ; k += base) { + if (index >= inputLength) { + error("invalid-input"); + } + digit = basicToDigit(input.charCodeAt(index++)); + if (digit >= base || digit > floor((maxInt - i) / w)) { + error("overflow"); + } + i += digit * w; + t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (digit < t) { + break; + } + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error("overflow"); + } + w *= baseMinusT; + } + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + if (floor(i / out) > maxInt - n) { + error("overflow"); + } + n += floor(i / out); + i %= out; + output.splice(i++, 0, n); + } + return ucs2encode(output); + } + function encode(input) { + var n, delta, handledCPCount, basicLength, bias, j, m, q, k, t, currentValue, output = [], inputLength, handledCPCountPlusOne, baseMinusT, qMinusT; + input = ucs2decode(input); + inputLength = input.length; + n = initialN; + delta = 0; + bias = initialBias; + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 128) { + output.push(stringFromCharCode(currentValue)); + } + } + handledCPCount = basicLength = output.length; + if (basicLength) { + output.push(delimiter); + } + while (handledCPCount < inputLength) { + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error("overflow"); + } + delta += (m - n) * handledCPCountPlusOne; + n = m; + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < n && ++delta > maxInt) { + error("overflow"); + } + if (currentValue == n) { + for (q = delta, k = base; ; k += base) { + t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + ++delta; + ++n; + } + return output.join(""); + } + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; + }); + } + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) ? "xn--" + encode(string) : string; + }); + } + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + "version": "1.3.2", + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + "ucs2": { + "decode": ucs2decode, + "encode": ucs2encode + }, + "decode": decode, + "encode": encode, + "toASCII": toASCII, + "toUnicode": toUnicode + }; + if (typeof define == "function" && typeof define.amd == "object" && define.amd) { + define("punycode", function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module2.exports == freeExports) { + freeModule.exports = punycode; + } else { + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + root.punycode = punycode; + } + })(exports2); + } +}); + +// node_modules/urijs/src/IPv6.js +var require_IPv6 = __commonJS({ + "node_modules/urijs/src/IPv6.js"(exports2, module2) { + (function(root, factory) { + "use strict"; + if (typeof module2 === "object" && module2.exports) { + module2.exports = factory(); + } else if (typeof define === "function" && define.amd) { + define(factory); + } else { + root.IPv6 = factory(root); + } + })(exports2, function(root) { + "use strict"; + var _IPv6 = root && root.IPv6; + function bestPresentation(address) { + var _address = address.toLowerCase(); + var segments = _address.split(":"); + var length = segments.length; + var total = 8; + if (segments[0] === "" && segments[1] === "" && segments[2] === "") { + segments.shift(); + segments.shift(); + } else if (segments[0] === "" && segments[1] === "") { + segments.shift(); + } else if (segments[length - 1] === "" && segments[length - 2] === "") { + segments.pop(); + } + length = segments.length; + if (segments[length - 1].indexOf(".") !== -1) { + total = 7; + } + var pos; + for (pos = 0; pos < length; pos++) { + if (segments[pos] === "") { + break; + } + } + if (pos < total) { + segments.splice(pos, 1, "0000"); + while (segments.length < total) { + segments.splice(pos, 0, "0000"); + } + } + var _segments; + for (var i = 0; i < total; i++) { + _segments = segments[i].split(""); + for (var j = 0; j < 3; j++) { + if (_segments[0] === "0" && _segments.length > 1) { + _segments.splice(0, 1); + } else { + break; + } + } + segments[i] = _segments.join(""); + } + var best = -1; + var _best = 0; + var _current = 0; + var current = -1; + var inzeroes = false; + for (i = 0; i < total; i++) { + if (inzeroes) { + if (segments[i] === "0") { + _current += 1; + } else { + inzeroes = false; + if (_current > _best) { + best = current; + _best = _current; + } + } + } else { + if (segments[i] === "0") { + inzeroes = true; + current = i; + _current = 1; + } + } + } + if (_current > _best) { + best = current; + _best = _current; + } + if (_best > 1) { + segments.splice(best, _best, ""); + } + length = segments.length; + var result = ""; + if (segments[0] === "") { + result = ":"; + } + for (i = 0; i < length; i++) { + result += segments[i]; + if (i === length - 1) { + break; + } + result += ":"; + } + if (segments[length - 1] === "") { + result += ":"; + } + return result; + } + function noConflict() { + if (root.IPv6 === this) { + root.IPv6 = _IPv6; + } + return this; + } + return { + best: bestPresentation, + noConflict + }; + }); + } +}); + +// node_modules/urijs/src/SecondLevelDomains.js +var require_SecondLevelDomains = __commonJS({ + "node_modules/urijs/src/SecondLevelDomains.js"(exports2, module2) { + (function(root, factory) { + "use strict"; + if (typeof module2 === "object" && module2.exports) { + module2.exports = factory(); + } else if (typeof define === "function" && define.amd) { + define(factory); + } else { + root.SecondLevelDomains = factory(root); + } + })(exports2, function(root) { + "use strict"; + var _SecondLevelDomains = root && root.SecondLevelDomains; + var SLD = { + // list of known Second Level Domains + // converted list of SLDs from https://github.com/gavingmiller/second-level-domains + // ---- + // publicsuffix.org is more current and actually used by a couple of browsers internally. + // downside is it also contains domains like "dyndns.org" - which is fine for the security + // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js + // ---- + list: { + "ac": " com gov mil net org ", + "ae": " ac co gov mil name net org pro sch ", + "af": " com edu gov net org ", + "al": " com edu gov mil net org ", + "ao": " co ed gv it og pb ", + "ar": " com edu gob gov int mil net org tur ", + "at": " ac co gv or ", + "au": " asn com csiro edu gov id net org ", + "ba": " co com edu gov mil net org rs unbi unmo unsa untz unze ", + "bb": " biz co com edu gov info net org store tv ", + "bh": " biz cc com edu gov info net org ", + "bn": " com edu gov net org ", + "bo": " com edu gob gov int mil net org tv ", + "br": " adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ", + "bs": " com edu gov net org ", + "bz": " du et om ov rg ", + "ca": " ab bc mb nb nf nl ns nt nu on pe qc sk yk ", + "ck": " biz co edu gen gov info net org ", + "cn": " ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ", + "co": " com edu gov mil net nom org ", + "cr": " ac c co ed fi go or sa ", + "cy": " ac biz com ekloges gov ltd name net org parliament press pro tm ", + "do": " art com edu gob gov mil net org sld web ", + "dz": " art asso com edu gov net org pol ", + "ec": " com edu fin gov info med mil net org pro ", + "eg": " com edu eun gov mil name net org sci ", + "er": " com edu gov ind mil net org rochest w ", + "es": " com edu gob nom org ", + "et": " biz com edu gov info name net org ", + "fj": " ac biz com info mil name net org pro ", + "fk": " ac co gov net nom org ", + "fr": " asso com f gouv nom prd presse tm ", + "gg": " co net org ", + "gh": " com edu gov mil org ", + "gn": " ac com gov net org ", + "gr": " com edu gov mil net org ", + "gt": " com edu gob ind mil net org ", + "gu": " com edu gov net org ", + "hk": " com edu gov idv net org ", + "hu": " 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ", + "id": " ac co go mil net or sch web ", + "il": " ac co gov idf k12 muni net org ", + "in": " ac co edu ernet firm gen gov i ind mil net nic org res ", + "iq": " com edu gov i mil net org ", + "ir": " ac co dnssec gov i id net org sch ", + "it": " edu gov ", + "je": " co net org ", + "jo": " com edu gov mil name net org sch ", + "jp": " ac ad co ed go gr lg ne or ", + "ke": " ac co go info me mobi ne or sc ", + "kh": " com edu gov mil net org per ", + "ki": " biz com de edu gov info mob net org tel ", + "km": " asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ", + "kn": " edu gov net org ", + "kr": " ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ", + "kw": " com edu gov net org ", + "ky": " com edu gov net org ", + "kz": " com edu gov mil net org ", + "lb": " com edu gov net org ", + "lk": " assn com edu gov grp hotel int ltd net ngo org sch soc web ", + "lr": " com edu gov net org ", + "lv": " asn com conf edu gov id mil net org ", + "ly": " com edu gov id med net org plc sch ", + "ma": " ac co gov m net org press ", + "mc": " asso tm ", + "me": " ac co edu gov its net org priv ", + "mg": " com edu gov mil nom org prd tm ", + "mk": " com edu gov inf name net org pro ", + "ml": " com edu gov net org presse ", + "mn": " edu gov org ", + "mo": " com edu gov net org ", + "mt": " com edu gov net org ", + "mv": " aero biz com coop edu gov info int mil museum name net org pro ", + "mw": " ac co com coop edu gov int museum net org ", + "mx": " com edu gob net org ", + "my": " com edu gov mil name net org sch ", + "nf": " arts com firm info net other per rec store web ", + "ng": " biz com edu gov mil mobi name net org sch ", + "ni": " ac co com edu gob mil net nom org ", + "np": " com edu gov mil net org ", + "nr": " biz com edu gov info net org ", + "om": " ac biz co com edu gov med mil museum net org pro sch ", + "pe": " com edu gob mil net nom org sld ", + "ph": " com edu gov i mil net ngo org ", + "pk": " biz com edu fam gob gok gon gop gos gov net org web ", + "pl": " art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ", + "pr": " ac biz com edu est gov info isla name net org pro prof ", + "ps": " com edu gov net org plo sec ", + "pw": " belau co ed go ne or ", + "ro": " arts com firm info nom nt org rec store tm www ", + "rs": " ac co edu gov in org ", + "sb": " com edu gov net org ", + "sc": " com edu gov net org ", + "sh": " co com edu gov net nom org ", + "sl": " com edu gov net org ", + "st": " co com consulado edu embaixada gov mil net org principe saotome store ", + "sv": " com edu gob org red ", + "sz": " ac co org ", + "tr": " av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ", + "tt": " aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ", + "tw": " club com ebiz edu game gov idv mil net org ", + "mu": " ac co com gov net or org ", + "mz": " ac co edu gov org ", + "na": " co com ", + "nz": " ac co cri geek gen govt health iwi maori mil net org parliament school ", + "pa": " abo ac com edu gob ing med net nom org sld ", + "pt": " com edu gov int net nome org publ ", + "py": " com edu gov mil net org ", + "qa": " com edu gov mil net org ", + "re": " asso com nom ", + "ru": " ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ", + "rw": " ac co com edu gouv gov int mil net ", + "sa": " com edu gov med net org pub sch ", + "sd": " com edu gov info med net org tv ", + "se": " a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ", + "sg": " com edu gov idn net org per ", + "sn": " art com edu gouv org perso univ ", + "sy": " com edu gov mil net news org ", + "th": " ac co go in mi net or ", + "tj": " ac biz co com edu go gov info int mil name net nic org test web ", + "tn": " agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ", + "tz": " ac co go ne or ", + "ua": " biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ", + "ug": " ac co go ne or org sc ", + "uk": " ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ", + "us": " dni fed isa kids nsn ", + "uy": " com edu gub mil net org ", + "ve": " co com edu gob info mil net org web ", + "vi": " co com k12 net org ", + "vn": " ac biz com edu gov health info int name net org pro ", + "ye": " co com gov ltd me net org plc ", + "yu": " ac co edu gov org ", + "za": " ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ", + "zm": " ac co com edu gov net org sch ", + // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains + "com": "ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ", + "net": "gb jp se uk ", + "org": "ae", + "de": "com " + }, + // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost + // in both performance and memory footprint. No initialization required. + // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4 + // Following methods use lastIndexOf() rather than array.split() in order + // to avoid any memory allocations. + has: function(domain) { + var tldOffset = domain.lastIndexOf("."); + if (tldOffset <= 0 || tldOffset >= domain.length - 1) { + return false; + } + var sldOffset = domain.lastIndexOf(".", tldOffset - 1); + if (sldOffset <= 0 || sldOffset >= tldOffset - 1) { + return false; + } + var sldList = SLD.list[domain.slice(tldOffset + 1)]; + if (!sldList) { + return false; + } + return sldList.indexOf(" " + domain.slice(sldOffset + 1, tldOffset) + " ") >= 0; + }, + is: function(domain) { + var tldOffset = domain.lastIndexOf("."); + if (tldOffset <= 0 || tldOffset >= domain.length - 1) { + return false; + } + var sldOffset = domain.lastIndexOf(".", tldOffset - 1); + if (sldOffset >= 0) { + return false; + } + var sldList = SLD.list[domain.slice(tldOffset + 1)]; + if (!sldList) { + return false; + } + return sldList.indexOf(" " + domain.slice(0, tldOffset) + " ") >= 0; + }, + get: function(domain) { + var tldOffset = domain.lastIndexOf("."); + if (tldOffset <= 0 || tldOffset >= domain.length - 1) { + return null; + } + var sldOffset = domain.lastIndexOf(".", tldOffset - 1); + if (sldOffset <= 0 || sldOffset >= tldOffset - 1) { + return null; + } + var sldList = SLD.list[domain.slice(tldOffset + 1)]; + if (!sldList) { + return null; + } + if (sldList.indexOf(" " + domain.slice(sldOffset + 1, tldOffset) + " ") < 0) { + return null; + } + return domain.slice(sldOffset + 1); + }, + noConflict: function() { + if (root.SecondLevelDomains === this) { + root.SecondLevelDomains = _SecondLevelDomains; + } + return this; + } + }; + return SLD; + }); + } +}); + +// node_modules/urijs/src/URI.js +var require_URI = __commonJS({ + "node_modules/urijs/src/URI.js"(exports2, module2) { + (function(root, factory) { + "use strict"; + if (typeof module2 === "object" && module2.exports) { + module2.exports = factory(require_punycode(), require_IPv6(), require_SecondLevelDomains()); + } else if (typeof define === "function" && define.amd) { + define(["./punycode", "./IPv6", "./SecondLevelDomains"], factory); + } else { + root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root); + } + })(exports2, function(punycode, IPv6, SLD, root) { + "use strict"; + var _URI = root && root.URI; + function URI(url, base) { + var _urlSupplied = arguments.length >= 1; + var _baseSupplied = arguments.length >= 2; + if (!(this instanceof URI)) { + if (_urlSupplied) { + if (_baseSupplied) { + return new URI(url, base); + } + return new URI(url); + } + return new URI(); + } + if (url === void 0) { + if (_urlSupplied) { + throw new TypeError("undefined is not a valid argument for URI"); + } + if (typeof location !== "undefined") { + url = location.href + ""; + } else { + url = ""; + } + } + if (url === null) { + if (_urlSupplied) { + throw new TypeError("null is not a valid argument for URI"); + } + } + this.href(url); + if (base !== void 0) { + return this.absoluteTo(base); + } + return this; + } + function isInteger(value) { + return /^[0-9]+$/.test(value); + } + URI.version = "1.19.11"; + var p = URI.prototype; + var hasOwn = Object.prototype.hasOwnProperty; + function escapeRegEx(string) { + return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); + } + function getType(value) { + if (value === void 0) { + return "Undefined"; + } + return String(Object.prototype.toString.call(value)).slice(8, -1); + } + function isArray(obj) { + return getType(obj) === "Array"; + } + function filterArrayValues(data, value) { + var lookup = {}; + var i, length; + if (getType(value) === "RegExp") { + lookup = null; + } else if (isArray(value)) { + for (i = 0, length = value.length; i < length; i++) { + lookup[value[i]] = true; + } + } else { + lookup[value] = true; + } + for (i = 0, length = data.length; i < length; i++) { + var _match = lookup && lookup[data[i]] !== void 0 || !lookup && value.test(data[i]); + if (_match) { + data.splice(i, 1); + length--; + i--; + } + } + return data; + } + function arrayContains(list, value) { + var i, length; + if (isArray(value)) { + for (i = 0, length = value.length; i < length; i++) { + if (!arrayContains(list, value[i])) { + return false; + } + } + return true; + } + var _type = getType(value); + for (i = 0, length = list.length; i < length; i++) { + if (_type === "RegExp") { + if (typeof list[i] === "string" && list[i].match(value)) { + return true; + } + } else if (list[i] === value) { + return true; + } + } + return false; + } + function arraysEqual(one, two) { + if (!isArray(one) || !isArray(two)) { + return false; + } + if (one.length !== two.length) { + return false; + } + one.sort(); + two.sort(); + for (var i = 0, l = one.length; i < l; i++) { + if (one[i] !== two[i]) { + return false; + } + } + return true; + } + function trimSlashes(text) { + var trim_expression = /^\/+|\/+$/g; + return text.replace(trim_expression, ""); + } + URI._parts = function() { + return { + protocol: null, + username: null, + password: null, + hostname: null, + urn: null, + port: null, + path: null, + query: null, + fragment: null, + // state + preventInvalidHostname: URI.preventInvalidHostname, + duplicateQueryParameters: URI.duplicateQueryParameters, + escapeQuerySpace: URI.escapeQuerySpace + }; + }; + URI.preventInvalidHostname = false; + URI.duplicateQueryParameters = false; + URI.escapeQuerySpace = true; + URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i; + URI.idn_expression = /[^a-z0-9\._-]/i; + URI.punycode_expression = /(xn--)/i; + URI.ip4_expression = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; + URI.ip6_expression = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; + URI.find_uri_expression = /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig; + URI.findUri = { + // valid "scheme://" or "www." + start: /\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi, + // everything up to the next whitespace + end: /[\s\r\n]|$/, + // trim trailing punctuation captured by end RegExp + trim: /[`!()\[\]{};:'".,<>?«»“”„‘’]+$/, + // balanced parens inclusion (), [], {}, <> + parens: /(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g + }; + URI.leading_whitespace_expression = /^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/; + URI.ascii_tab_whitespace = /[\u0009\u000A\u000D]+/g; + URI.defaultPorts = { + http: "80", + https: "443", + ftp: "21", + gopher: "70", + ws: "80", + wss: "443" + }; + URI.hostProtocols = [ + "http", + "https" + ]; + URI.invalid_hostname_characters = /[^a-zA-Z0-9\.\-:_]/; + URI.domAttributes = { + "a": "href", + "blockquote": "cite", + "link": "href", + "base": "href", + "script": "src", + "form": "action", + "img": "src", + "area": "href", + "iframe": "src", + "embed": "src", + "source": "src", + "track": "src", + "input": "src", + // but only if type="image" + "audio": "src", + "video": "src" + }; + URI.getDomAttribute = function(node) { + if (!node || !node.nodeName) { + return void 0; + } + var nodeName = node.nodeName.toLowerCase(); + if (nodeName === "input" && node.type !== "image") { + return void 0; + } + return URI.domAttributes[nodeName]; + }; + function escapeForDumbFirefox36(value) { + return escape(value); + } + function strictEncodeURIComponent(string) { + return encodeURIComponent(string).replace(/[!'()*]/g, escapeForDumbFirefox36).replace(/\*/g, "%2A"); + } + URI.encode = strictEncodeURIComponent; + URI.decode = decodeURIComponent; + URI.iso8859 = function() { + URI.encode = escape; + URI.decode = unescape; + }; + URI.unicode = function() { + URI.encode = strictEncodeURIComponent; + URI.decode = decodeURIComponent; + }; + URI.characters = { + pathname: { + encode: { + // RFC3986 2.1: For consistency, URI producers and normalizers should + // use uppercase hexadecimal digits for all percent-encodings. + expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig, + map: { + // -._~!'()* + "%24": "$", + "%26": "&", + "%2B": "+", + "%2C": ",", + "%3B": ";", + "%3D": "=", + "%3A": ":", + "%40": "@" + } + }, + decode: { + expression: /[\/\?#]/g, + map: { + "/": "%2F", + "?": "%3F", + "#": "%23" + } + } + }, + reserved: { + encode: { + // RFC3986 2.1: For consistency, URI producers and normalizers should + // use uppercase hexadecimal digits for all percent-encodings. + expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig, + map: { + // gen-delims + "%3A": ":", + "%2F": "/", + "%3F": "?", + "%23": "#", + "%5B": "[", + "%5D": "]", + "%40": "@", + // sub-delims + "%21": "!", + "%24": "$", + "%26": "&", + "%27": "'", + "%28": "(", + "%29": ")", + "%2A": "*", + "%2B": "+", + "%2C": ",", + "%3B": ";", + "%3D": "=" + } + } + }, + urnpath: { + // The characters under `encode` are the characters called out by RFC 2141 as being acceptable + // for usage in a URN. RFC2141 also calls out "-", ".", and "_" as acceptable characters, but + // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also + // note that the colon character is not featured in the encoding map; this is because URI.js + // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it + // should not appear unencoded in a segment itself. + // See also the note above about RFC3986 and capitalalized hex digits. + encode: { + expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig, + map: { + "%21": "!", + "%24": "$", + "%27": "'", + "%28": "(", + "%29": ")", + "%2A": "*", + "%2B": "+", + "%2C": ",", + "%3B": ";", + "%3D": "=", + "%40": "@" + } + }, + // These characters are the characters called out by RFC2141 as "reserved" characters that + // should never appear in a URN, plus the colon character (see note above). + decode: { + expression: /[\/\?#:]/g, + map: { + "/": "%2F", + "?": "%3F", + "#": "%23", + ":": "%3A" + } + } + } + }; + URI.encodeQuery = function(string, escapeQuerySpace) { + var escaped = URI.encode(string + ""); + if (escapeQuerySpace === void 0) { + escapeQuerySpace = URI.escapeQuerySpace; + } + return escapeQuerySpace ? escaped.replace(/%20/g, "+") : escaped; + }; + URI.decodeQuery = function(string, escapeQuerySpace) { + string += ""; + if (escapeQuerySpace === void 0) { + escapeQuerySpace = URI.escapeQuerySpace; + } + try { + return URI.decode(escapeQuerySpace ? string.replace(/\+/g, "%20") : string); + } catch (e) { + return string; + } + }; + var _parts = { "encode": "encode", "decode": "decode" }; + var _part; + var generateAccessor = function(_group, _part2) { + return function(string) { + try { + return URI[_part2](string + "").replace(URI.characters[_group][_part2].expression, function(c) { + return URI.characters[_group][_part2].map[c]; + }); + } catch (e) { + return string; + } + }; + }; + for (_part in _parts) { + URI[_part + "PathSegment"] = generateAccessor("pathname", _parts[_part]); + URI[_part + "UrnPathSegment"] = generateAccessor("urnpath", _parts[_part]); + } + var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) { + return function(string) { + var actualCodingFunc; + if (!_innerCodingFuncName) { + actualCodingFunc = URI[_codingFuncName]; + } else { + actualCodingFunc = function(string2) { + return URI[_codingFuncName](URI[_innerCodingFuncName](string2)); + }; + } + var segments = (string + "").split(_sep); + for (var i = 0, length = segments.length; i < length; i++) { + segments[i] = actualCodingFunc(segments[i]); + } + return segments.join(_sep); + }; + }; + URI.decodePath = generateSegmentedPathFunction("/", "decodePathSegment"); + URI.decodeUrnPath = generateSegmentedPathFunction(":", "decodeUrnPathSegment"); + URI.recodePath = generateSegmentedPathFunction("/", "encodePathSegment", "decode"); + URI.recodeUrnPath = generateSegmentedPathFunction(":", "encodeUrnPathSegment", "decode"); + URI.encodeReserved = generateAccessor("reserved", "encode"); + URI.parse = function(string, parts) { + var pos; + if (!parts) { + parts = { + preventInvalidHostname: URI.preventInvalidHostname + }; + } + string = string.replace(URI.leading_whitespace_expression, ""); + string = string.replace(URI.ascii_tab_whitespace, ""); + pos = string.indexOf("#"); + if (pos > -1) { + parts.fragment = string.substring(pos + 1) || null; + string = string.substring(0, pos); + } + pos = string.indexOf("?"); + if (pos > -1) { + parts.query = string.substring(pos + 1) || null; + string = string.substring(0, pos); + } + string = string.replace(/^(https?|ftp|wss?)?:+[/\\]*/i, "$1://"); + string = string.replace(/^[/\\]{2,}/i, "//"); + if (string.substring(0, 2) === "//") { + parts.protocol = null; + string = string.substring(2); + string = URI.parseAuthority(string, parts); + } else { + pos = string.indexOf(":"); + if (pos > -1) { + parts.protocol = string.substring(0, pos) || null; + if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) { + parts.protocol = void 0; + } else if (string.substring(pos + 1, pos + 3).replace(/\\/g, "/") === "//") { + string = string.substring(pos + 3); + string = URI.parseAuthority(string, parts); + } else { + string = string.substring(pos + 1); + parts.urn = true; + } + } + } + parts.path = string; + return parts; + }; + URI.parseHost = function(string, parts) { + if (!string) { + string = ""; + } + string = string.replace(/\\/g, "/"); + var pos = string.indexOf("/"); + var bracketPos; + var t; + if (pos === -1) { + pos = string.length; + } + if (string.charAt(0) === "[") { + bracketPos = string.indexOf("]"); + parts.hostname = string.substring(1, bracketPos) || null; + parts.port = string.substring(bracketPos + 2, pos) || null; + if (parts.port === "/") { + parts.port = null; + } + } else { + var firstColon = string.indexOf(":"); + var firstSlash = string.indexOf("/"); + var nextColon = string.indexOf(":", firstColon + 1); + if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) { + parts.hostname = string.substring(0, pos) || null; + parts.port = null; + } else { + t = string.substring(0, pos).split(":"); + parts.hostname = t[0] || null; + parts.port = t[1] || null; + } + } + if (parts.hostname && string.substring(pos).charAt(0) !== "/") { + pos++; + string = "/" + string; + } + if (parts.preventInvalidHostname) { + URI.ensureValidHostname(parts.hostname, parts.protocol); + } + if (parts.port) { + URI.ensureValidPort(parts.port); + } + return string.substring(pos) || "/"; + }; + URI.parseAuthority = function(string, parts) { + string = URI.parseUserinfo(string, parts); + return URI.parseHost(string, parts); + }; + URI.parseUserinfo = function(string, parts) { + var _string = string; + var firstBackSlash = string.indexOf("\\"); + if (firstBackSlash !== -1) { + string = string.replace(/\\/g, "/"); + } + var firstSlash = string.indexOf("/"); + var pos = string.lastIndexOf("@", firstSlash > -1 ? firstSlash : string.length - 1); + var t; + if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) { + t = string.substring(0, pos).split(":"); + parts.username = t[0] ? URI.decode(t[0]) : null; + t.shift(); + parts.password = t[0] ? URI.decode(t.join(":")) : null; + string = _string.substring(pos + 1); + } else { + parts.username = null; + parts.password = null; + } + return string; + }; + URI.parseQuery = function(string, escapeQuerySpace) { + if (!string) { + return {}; + } + string = string.replace(/&+/g, "&").replace(/^\?*&*|&+$/g, ""); + if (!string) { + return {}; + } + var items = {}; + var splits = string.split("&"); + var length = splits.length; + var v, name, value; + for (var i = 0; i < length; i++) { + v = splits[i].split("="); + name = URI.decodeQuery(v.shift(), escapeQuerySpace); + value = v.length ? URI.decodeQuery(v.join("="), escapeQuerySpace) : null; + if (name === "__proto__") { + continue; + } else if (hasOwn.call(items, name)) { + if (typeof items[name] === "string" || items[name] === null) { + items[name] = [items[name]]; + } + items[name].push(value); + } else { + items[name] = value; + } + } + return items; + }; + URI.build = function(parts) { + var t = ""; + var requireAbsolutePath = false; + if (parts.protocol) { + t += parts.protocol + ":"; + } + if (!parts.urn && (t || parts.hostname)) { + t += "//"; + requireAbsolutePath = true; + } + t += URI.buildAuthority(parts) || ""; + if (typeof parts.path === "string") { + if (parts.path.charAt(0) !== "/" && requireAbsolutePath) { + t += "/"; + } + t += parts.path; + } + if (typeof parts.query === "string" && parts.query) { + t += "?" + parts.query; + } + if (typeof parts.fragment === "string" && parts.fragment) { + t += "#" + parts.fragment; + } + return t; + }; + URI.buildHost = function(parts) { + var t = ""; + if (!parts.hostname) { + return ""; + } else if (URI.ip6_expression.test(parts.hostname)) { + t += "[" + parts.hostname + "]"; + } else { + t += parts.hostname; + } + if (parts.port) { + t += ":" + parts.port; + } + return t; + }; + URI.buildAuthority = function(parts) { + return URI.buildUserinfo(parts) + URI.buildHost(parts); + }; + URI.buildUserinfo = function(parts) { + var t = ""; + if (parts.username) { + t += URI.encode(parts.username); + } + if (parts.password) { + t += ":" + URI.encode(parts.password); + } + if (t) { + t += "@"; + } + return t; + }; + URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) { + var t = ""; + var unique, key, i, length; + for (key in data) { + if (key === "__proto__") { + continue; + } else if (hasOwn.call(data, key)) { + if (isArray(data[key])) { + unique = {}; + for (i = 0, length = data[key].length; i < length; i++) { + if (data[key][i] !== void 0 && unique[data[key][i] + ""] === void 0) { + t += "&" + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace); + if (duplicateQueryParameters !== true) { + unique[data[key][i] + ""] = true; + } + } + } + } else if (data[key] !== void 0) { + t += "&" + URI.buildQueryParameter(key, data[key], escapeQuerySpace); + } + } + } + return t.substring(1); + }; + URI.buildQueryParameter = function(name, value, escapeQuerySpace) { + return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? "=" + URI.encodeQuery(value, escapeQuerySpace) : ""); + }; + URI.addQuery = function(data, name, value) { + if (typeof name === "object") { + for (var key in name) { + if (hasOwn.call(name, key)) { + URI.addQuery(data, key, name[key]); + } + } + } else if (typeof name === "string") { + if (data[name] === void 0) { + data[name] = value; + return; + } else if (typeof data[name] === "string") { + data[name] = [data[name]]; + } + if (!isArray(value)) { + value = [value]; + } + data[name] = (data[name] || []).concat(value); + } else { + throw new TypeError("URI.addQuery() accepts an object, string as the name parameter"); + } + }; + URI.setQuery = function(data, name, value) { + if (typeof name === "object") { + for (var key in name) { + if (hasOwn.call(name, key)) { + URI.setQuery(data, key, name[key]); + } + } + } else if (typeof name === "string") { + data[name] = value === void 0 ? null : value; + } else { + throw new TypeError("URI.setQuery() accepts an object, string as the name parameter"); + } + }; + URI.removeQuery = function(data, name, value) { + var i, length, key; + if (isArray(name)) { + for (i = 0, length = name.length; i < length; i++) { + data[name[i]] = void 0; + } + } else if (getType(name) === "RegExp") { + for (key in data) { + if (name.test(key)) { + data[key] = void 0; + } + } + } else if (typeof name === "object") { + for (key in name) { + if (hasOwn.call(name, key)) { + URI.removeQuery(data, key, name[key]); + } + } + } else if (typeof name === "string") { + if (value !== void 0) { + if (getType(value) === "RegExp") { + if (!isArray(data[name]) && value.test(data[name])) { + data[name] = void 0; + } else { + data[name] = filterArrayValues(data[name], value); + } + } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) { + data[name] = void 0; + } else if (isArray(data[name])) { + data[name] = filterArrayValues(data[name], value); + } + } else { + data[name] = void 0; + } + } else { + throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter"); + } + }; + URI.hasQuery = function(data, name, value, withinArray) { + switch (getType(name)) { + case "String": + break; + case "RegExp": + for (var key in data) { + if (hasOwn.call(data, key)) { + if (name.test(key) && (value === void 0 || URI.hasQuery(data, key, value))) { + return true; + } + } + } + return false; + case "Object": + for (var _key in name) { + if (hasOwn.call(name, _key)) { + if (!URI.hasQuery(data, _key, name[_key])) { + return false; + } + } + } + return true; + default: + throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter"); + } + switch (getType(value)) { + case "Undefined": + return name in data; + // data[name] !== undefined; + case "Boolean": + var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]); + return value === _booly; + case "Function": + return !!value(data[name], name, data); + case "Array": + if (!isArray(data[name])) { + return false; + } + var op = withinArray ? arrayContains : arraysEqual; + return op(data[name], value); + case "RegExp": + if (!isArray(data[name])) { + return Boolean(data[name] && data[name].match(value)); + } + if (!withinArray) { + return false; + } + return arrayContains(data[name], value); + case "Number": + value = String(value); + /* falls through */ + case "String": + if (!isArray(data[name])) { + return data[name] === value; + } + if (!withinArray) { + return false; + } + return arrayContains(data[name], value); + default: + throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter"); + } + }; + URI.joinPaths = function() { + var input = []; + var segments = []; + var nonEmptySegments = 0; + for (var i = 0; i < arguments.length; i++) { + var url = new URI(arguments[i]); + input.push(url); + var _segments = url.segment(); + for (var s = 0; s < _segments.length; s++) { + if (typeof _segments[s] === "string") { + segments.push(_segments[s]); + } + if (_segments[s]) { + nonEmptySegments++; + } + } + } + if (!segments.length || !nonEmptySegments) { + return new URI(""); + } + var uri = new URI("").segment(segments); + if (input[0].path() === "" || input[0].path().slice(0, 1) === "/") { + uri.path("/" + uri.path()); + } + return uri.normalize(); + }; + URI.commonPath = function(one, two) { + var length = Math.min(one.length, two.length); + var pos; + for (pos = 0; pos < length; pos++) { + if (one.charAt(pos) !== two.charAt(pos)) { + pos--; + break; + } + } + if (pos < 1) { + return one.charAt(0) === two.charAt(0) && one.charAt(0) === "/" ? "/" : ""; + } + if (one.charAt(pos) !== "/" || two.charAt(pos) !== "/") { + pos = one.substring(0, pos).lastIndexOf("/"); + } + return one.substring(0, pos + 1); + }; + URI.withinString = function(string, callback, options) { + options || (options = {}); + var _start = options.start || URI.findUri.start; + var _end = options.end || URI.findUri.end; + var _trim = options.trim || URI.findUri.trim; + var _parens = options.parens || URI.findUri.parens; + var _attributeOpen = /[a-z0-9-]=["']?$/i; + _start.lastIndex = 0; + while (true) { + var match = _start.exec(string); + if (!match) { + break; + } + var start = match.index; + if (options.ignoreHtml) { + var attributeOpen = string.slice(Math.max(start - 3, 0), start); + if (attributeOpen && _attributeOpen.test(attributeOpen)) { + continue; + } + } + var end = start + string.slice(start).search(_end); + var slice = string.slice(start, end); + var parensEnd = -1; + while (true) { + var parensMatch = _parens.exec(slice); + if (!parensMatch) { + break; + } + var parensMatchEnd = parensMatch.index + parensMatch[0].length; + parensEnd = Math.max(parensEnd, parensMatchEnd); + } + if (parensEnd > -1) { + slice = slice.slice(0, parensEnd) + slice.slice(parensEnd).replace(_trim, ""); + } else { + slice = slice.replace(_trim, ""); + } + if (slice.length <= match[0].length) { + continue; + } + if (options.ignore && options.ignore.test(slice)) { + continue; + } + end = start + slice.length; + var result = callback(slice, start, end, string); + if (result === void 0) { + _start.lastIndex = end; + continue; + } + result = String(result); + string = string.slice(0, start) + result + string.slice(end); + _start.lastIndex = start + result.length; + } + _start.lastIndex = 0; + return string; + }; + URI.ensureValidHostname = function(v, protocol) { + var hasHostname = !!v; + var hasProtocol = !!protocol; + var rejectEmptyHostname = false; + if (hasProtocol) { + rejectEmptyHostname = arrayContains(URI.hostProtocols, protocol); + } + if (rejectEmptyHostname && !hasHostname) { + throw new TypeError("Hostname cannot be empty, if protocol is " + protocol); + } else if (v && v.match(URI.invalid_hostname_characters)) { + if (!punycode) { + throw new TypeError('Hostname "' + v + '" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available'); + } + if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) { + throw new TypeError('Hostname "' + v + '" contains characters other than [A-Z0-9.-:_]'); + } + } + }; + URI.ensureValidPort = function(v) { + if (!v) { + return; + } + var port = Number(v); + if (isInteger(port) && port > 0 && port < 65536) { + return; + } + throw new TypeError('Port "' + v + '" is not a valid port'); + }; + URI.noConflict = function(removeAll) { + if (removeAll) { + var unconflicted = { + URI: this.noConflict() + }; + if (root.URITemplate && typeof root.URITemplate.noConflict === "function") { + unconflicted.URITemplate = root.URITemplate.noConflict(); + } + if (root.IPv6 && typeof root.IPv6.noConflict === "function") { + unconflicted.IPv6 = root.IPv6.noConflict(); + } + if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === "function") { + unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict(); + } + return unconflicted; + } else if (root.URI === this) { + root.URI = _URI; + } + return this; + }; + p.build = function(deferBuild) { + if (deferBuild === true) { + this._deferred_build = true; + } else if (deferBuild === void 0 || this._deferred_build) { + this._string = URI.build(this._parts); + this._deferred_build = false; + } + return this; + }; + p.clone = function() { + return new URI(this); + }; + p.valueOf = p.toString = function() { + return this.build(false)._string; + }; + function generateSimpleAccessor(_part2) { + return function(v, build) { + if (v === void 0) { + return this._parts[_part2] || ""; + } else { + this._parts[_part2] = v || null; + this.build(!build); + return this; + } + }; + } + function generatePrefixAccessor(_part2, _key) { + return function(v, build) { + if (v === void 0) { + return this._parts[_part2] || ""; + } else { + if (v !== null) { + v = v + ""; + if (v.charAt(0) === _key) { + v = v.substring(1); + } + } + this._parts[_part2] = v; + this.build(!build); + return this; + } + }; + } + p.protocol = generateSimpleAccessor("protocol"); + p.username = generateSimpleAccessor("username"); + p.password = generateSimpleAccessor("password"); + p.hostname = generateSimpleAccessor("hostname"); + p.port = generateSimpleAccessor("port"); + p.query = generatePrefixAccessor("query", "?"); + p.fragment = generatePrefixAccessor("fragment", "#"); + p.search = function(v, build) { + var t = this.query(v, build); + return typeof t === "string" && t.length ? "?" + t : t; + }; + p.hash = function(v, build) { + var t = this.fragment(v, build); + return typeof t === "string" && t.length ? "#" + t : t; + }; + p.pathname = function(v, build) { + if (v === void 0 || v === true) { + var res = this._parts.path || (this._parts.hostname ? "/" : ""); + return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res; + } else { + if (this._parts.urn) { + this._parts.path = v ? URI.recodeUrnPath(v) : ""; + } else { + this._parts.path = v ? URI.recodePath(v) : "/"; + } + this.build(!build); + return this; + } + }; + p.path = p.pathname; + p.href = function(href, build) { + var key; + if (href === void 0) { + return this.toString(); + } + this._string = ""; + this._parts = URI._parts(); + var _URI2 = href instanceof URI; + var _object = typeof href === "object" && (href.hostname || href.path || href.pathname); + if (href.nodeName) { + var attribute = URI.getDomAttribute(href); + href = href[attribute] || ""; + _object = false; + } + if (!_URI2 && _object && href.pathname !== void 0) { + href = href.toString(); + } + if (typeof href === "string" || href instanceof String) { + this._parts = URI.parse(String(href), this._parts); + } else if (_URI2 || _object) { + var src = _URI2 ? href._parts : href; + for (key in src) { + if (key === "query") { + continue; + } + if (hasOwn.call(this._parts, key)) { + this._parts[key] = src[key]; + } + } + if (src.query) { + this.query(src.query, false); + } + } else { + throw new TypeError("invalid input"); + } + this.build(!build); + return this; + }; + p.is = function(what) { + var ip = false; + var ip4 = false; + var ip6 = false; + var name = false; + var sld = false; + var idn = false; + var punycode2 = false; + var relative = !this._parts.urn; + if (this._parts.hostname) { + relative = false; + ip4 = URI.ip4_expression.test(this._parts.hostname); + ip6 = URI.ip6_expression.test(this._parts.hostname); + ip = ip4 || ip6; + name = !ip; + sld = name && SLD && SLD.has(this._parts.hostname); + idn = name && URI.idn_expression.test(this._parts.hostname); + punycode2 = name && URI.punycode_expression.test(this._parts.hostname); + } + switch (what.toLowerCase()) { + case "relative": + return relative; + case "absolute": + return !relative; + // hostname identification + case "domain": + case "name": + return name; + case "sld": + return sld; + case "ip": + return ip; + case "ip4": + case "ipv4": + case "inet4": + return ip4; + case "ip6": + case "ipv6": + case "inet6": + return ip6; + case "idn": + return idn; + case "url": + return !this._parts.urn; + case "urn": + return !!this._parts.urn; + case "punycode": + return punycode2; + } + return null; + }; + var _protocol = p.protocol; + var _port = p.port; + var _hostname = p.hostname; + p.protocol = function(v, build) { + if (v) { + v = v.replace(/:(\/\/)?$/, ""); + if (!v.match(URI.protocol_expression)) { + throw new TypeError('Protocol "' + v + `" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`); + } + } + return _protocol.call(this, v, build); + }; + p.scheme = p.protocol; + p.port = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v !== void 0) { + if (v === 0) { + v = null; + } + if (v) { + v += ""; + if (v.charAt(0) === ":") { + v = v.substring(1); + } + URI.ensureValidPort(v); + } + } + return _port.call(this, v, build); + }; + p.hostname = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v !== void 0) { + var x = { preventInvalidHostname: this._parts.preventInvalidHostname }; + var res = URI.parseHost(v, x); + if (res !== "/") { + throw new TypeError('Hostname "' + v + '" contains characters other than [A-Z0-9.-]'); + } + v = x.hostname; + if (this._parts.preventInvalidHostname) { + URI.ensureValidHostname(v, this._parts.protocol); + } + } + return _hostname.call(this, v, build); + }; + p.origin = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0) { + var protocol = this.protocol(); + var authority = this.authority(); + if (!authority) { + return ""; + } + return (protocol ? protocol + "://" : "") + this.authority(); + } else { + var origin = URI(v); + this.protocol(origin.protocol()).authority(origin.authority()).build(!build); + return this; + } + }; + p.host = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0) { + return this._parts.hostname ? URI.buildHost(this._parts) : ""; + } else { + var res = URI.parseHost(v, this._parts); + if (res !== "/") { + throw new TypeError('Hostname "' + v + '" contains characters other than [A-Z0-9.-]'); + } + this.build(!build); + return this; + } + }; + p.authority = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0) { + return this._parts.hostname ? URI.buildAuthority(this._parts) : ""; + } else { + var res = URI.parseAuthority(v, this._parts); + if (res !== "/") { + throw new TypeError('Hostname "' + v + '" contains characters other than [A-Z0-9.-]'); + } + this.build(!build); + return this; + } + }; + p.userinfo = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0) { + var t = URI.buildUserinfo(this._parts); + return t ? t.substring(0, t.length - 1) : t; + } else { + if (v[v.length - 1] !== "@") { + v += "@"; + } + URI.parseUserinfo(v, this._parts); + this.build(!build); + return this; + } + }; + p.resource = function(v, build) { + var parts; + if (v === void 0) { + return this.path() + this.search() + this.hash(); + } + parts = URI.parse(v); + this._parts.path = parts.path; + this._parts.query = parts.query; + this._parts.fragment = parts.fragment; + this.build(!build); + return this; + }; + p.subdomain = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0) { + if (!this._parts.hostname || this.is("IP")) { + return ""; + } + var end = this._parts.hostname.length - this.domain().length - 1; + return this._parts.hostname.substring(0, end) || ""; + } else { + var e = this._parts.hostname.length - this.domain().length; + var sub = this._parts.hostname.substring(0, e); + var replace = new RegExp("^" + escapeRegEx(sub)); + if (v && v.charAt(v.length - 1) !== ".") { + v += "."; + } + if (v.indexOf(":") !== -1) { + throw new TypeError("Domains cannot contain colons"); + } + if (v) { + URI.ensureValidHostname(v, this._parts.protocol); + } + this._parts.hostname = this._parts.hostname.replace(replace, v); + this.build(!build); + return this; + } + }; + p.domain = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (typeof v === "boolean") { + build = v; + v = void 0; + } + if (v === void 0) { + if (!this._parts.hostname || this.is("IP")) { + return ""; + } + var t = this._parts.hostname.match(/\./g); + if (t && t.length < 2) { + return this._parts.hostname; + } + var end = this._parts.hostname.length - this.tld(build).length - 1; + end = this._parts.hostname.lastIndexOf(".", end - 1) + 1; + return this._parts.hostname.substring(end) || ""; + } else { + if (!v) { + throw new TypeError("cannot set domain empty"); + } + if (v.indexOf(":") !== -1) { + throw new TypeError("Domains cannot contain colons"); + } + URI.ensureValidHostname(v, this._parts.protocol); + if (!this._parts.hostname || this.is("IP")) { + this._parts.hostname = v; + } else { + var replace = new RegExp(escapeRegEx(this.domain()) + "$"); + this._parts.hostname = this._parts.hostname.replace(replace, v); + } + this.build(!build); + return this; + } + }; + p.tld = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (typeof v === "boolean") { + build = v; + v = void 0; + } + if (v === void 0) { + if (!this._parts.hostname || this.is("IP")) { + return ""; + } + var pos = this._parts.hostname.lastIndexOf("."); + var tld = this._parts.hostname.substring(pos + 1); + if (build !== true && SLD && SLD.list[tld.toLowerCase()]) { + return SLD.get(this._parts.hostname) || tld; + } + return tld; + } else { + var replace; + if (!v) { + throw new TypeError("cannot set TLD empty"); + } else if (v.match(/[^a-zA-Z0-9-]/)) { + if (SLD && SLD.is(v)) { + replace = new RegExp(escapeRegEx(this.tld()) + "$"); + this._parts.hostname = this._parts.hostname.replace(replace, v); + } else { + throw new TypeError('TLD "' + v + '" contains characters other than [A-Z0-9]'); + } + } else if (!this._parts.hostname || this.is("IP")) { + throw new ReferenceError("cannot set TLD on non-domain host"); + } else { + replace = new RegExp(escapeRegEx(this.tld()) + "$"); + this._parts.hostname = this._parts.hostname.replace(replace, v); + } + this.build(!build); + return this; + } + }; + p.directory = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0 || v === true) { + if (!this._parts.path && !this._parts.hostname) { + return ""; + } + if (this._parts.path === "/") { + return "/"; + } + var end = this._parts.path.length - this.filename().length - 1; + var res = this._parts.path.substring(0, end) || (this._parts.hostname ? "/" : ""); + return v ? URI.decodePath(res) : res; + } else { + var e = this._parts.path.length - this.filename().length; + var directory = this._parts.path.substring(0, e); + var replace = new RegExp("^" + escapeRegEx(directory)); + if (!this.is("relative")) { + if (!v) { + v = "/"; + } + if (v.charAt(0) !== "/") { + v = "/" + v; + } + } + if (v && v.charAt(v.length - 1) !== "/") { + v += "/"; + } + v = URI.recodePath(v); + this._parts.path = this._parts.path.replace(replace, v); + this.build(!build); + return this; + } + }; + p.filename = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (typeof v !== "string") { + if (!this._parts.path || this._parts.path === "/") { + return ""; + } + var pos = this._parts.path.lastIndexOf("/"); + var res = this._parts.path.substring(pos + 1); + return v ? URI.decodePathSegment(res) : res; + } else { + var mutatedDirectory = false; + if (v.charAt(0) === "/") { + v = v.substring(1); + } + if (v.match(/\.?\//)) { + mutatedDirectory = true; + } + var replace = new RegExp(escapeRegEx(this.filename()) + "$"); + v = URI.recodePath(v); + this._parts.path = this._parts.path.replace(replace, v); + if (mutatedDirectory) { + this.normalizePath(build); + } else { + this.build(!build); + } + return this; + } + }; + p.suffix = function(v, build) { + if (this._parts.urn) { + return v === void 0 ? "" : this; + } + if (v === void 0 || v === true) { + if (!this._parts.path || this._parts.path === "/") { + return ""; + } + var filename = this.filename(); + var pos = filename.lastIndexOf("."); + var s, res; + if (pos === -1) { + return ""; + } + s = filename.substring(pos + 1); + res = /^[a-z0-9%]+$/i.test(s) ? s : ""; + return v ? URI.decodePathSegment(res) : res; + } else { + if (v.charAt(0) === ".") { + v = v.substring(1); + } + var suffix = this.suffix(); + var replace; + if (!suffix) { + if (!v) { + return this; + } + this._parts.path += "." + URI.recodePath(v); + } else if (!v) { + replace = new RegExp(escapeRegEx("." + suffix) + "$"); + } else { + replace = new RegExp(escapeRegEx(suffix) + "$"); + } + if (replace) { + v = URI.recodePath(v); + this._parts.path = this._parts.path.replace(replace, v); + } + this.build(!build); + return this; + } + }; + p.segment = function(segment, v, build) { + var separator = this._parts.urn ? ":" : "/"; + var path2 = this.path(); + var absolute = path2.substring(0, 1) === "/"; + var segments = path2.split(separator); + if (segment !== void 0 && typeof segment !== "number") { + build = v; + v = segment; + segment = void 0; + } + if (segment !== void 0 && typeof segment !== "number") { + throw new Error('Bad segment "' + segment + '", must be 0-based integer'); + } + if (absolute) { + segments.shift(); + } + if (segment < 0) { + segment = Math.max(segments.length + segment, 0); + } + if (v === void 0) { + return segment === void 0 ? segments : segments[segment]; + } else if (segment === null || segments[segment] === void 0) { + if (isArray(v)) { + segments = []; + for (var i = 0, l = v.length; i < l; i++) { + if (!v[i].length && (!segments.length || !segments[segments.length - 1].length)) { + continue; + } + if (segments.length && !segments[segments.length - 1].length) { + segments.pop(); + } + segments.push(trimSlashes(v[i])); + } + } else if (v || typeof v === "string") { + v = trimSlashes(v); + if (segments[segments.length - 1] === "") { + segments[segments.length - 1] = v; + } else { + segments.push(v); + } + } + } else { + if (v) { + segments[segment] = trimSlashes(v); + } else { + segments.splice(segment, 1); + } + } + if (absolute) { + segments.unshift(""); + } + return this.path(segments.join(separator), build); + }; + p.segmentCoded = function(segment, v, build) { + var segments, i, l; + if (typeof segment !== "number") { + build = v; + v = segment; + segment = void 0; + } + if (v === void 0) { + segments = this.segment(segment, v, build); + if (!isArray(segments)) { + segments = segments !== void 0 ? URI.decode(segments) : void 0; + } else { + for (i = 0, l = segments.length; i < l; i++) { + segments[i] = URI.decode(segments[i]); + } + } + return segments; + } + if (!isArray(v)) { + v = typeof v === "string" || v instanceof String ? URI.encode(v) : v; + } else { + for (i = 0, l = v.length; i < l; i++) { + v[i] = URI.encode(v[i]); + } + } + return this.segment(segment, v, build); + }; + var q = p.query; + p.query = function(v, build) { + if (v === true) { + return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + } else if (typeof v === "function") { + var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + var result = v.call(this, data); + this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace); + this.build(!build); + return this; + } else if (v !== void 0 && typeof v !== "string") { + this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace); + this.build(!build); + return this; + } else { + return q.call(this, v, build); + } + }; + p.setQuery = function(name, value, build) { + var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + if (typeof name === "string" || name instanceof String) { + data[name] = value !== void 0 ? value : null; + } else if (typeof name === "object") { + for (var key in name) { + if (hasOwn.call(name, key)) { + data[key] = name[key]; + } + } + } else { + throw new TypeError("URI.addQuery() accepts an object, string as the name parameter"); + } + this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace); + if (typeof name !== "string") { + build = value; + } + this.build(!build); + return this; + }; + p.addQuery = function(name, value, build) { + var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + URI.addQuery(data, name, value === void 0 ? null : value); + this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace); + if (typeof name !== "string") { + build = value; + } + this.build(!build); + return this; + }; + p.removeQuery = function(name, value, build) { + var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + URI.removeQuery(data, name, value); + this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace); + if (typeof name !== "string") { + build = value; + } + this.build(!build); + return this; + }; + p.hasQuery = function(name, value, withinArray) { + var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace); + return URI.hasQuery(data, name, value, withinArray); + }; + p.setSearch = p.setQuery; + p.addSearch = p.addQuery; + p.removeSearch = p.removeQuery; + p.hasSearch = p.hasQuery; + p.normalize = function() { + if (this._parts.urn) { + return this.normalizeProtocol(false).normalizePath(false).normalizeQuery(false).normalizeFragment(false).build(); + } + return this.normalizeProtocol(false).normalizeHostname(false).normalizePort(false).normalizePath(false).normalizeQuery(false).normalizeFragment(false).build(); + }; + p.normalizeProtocol = function(build) { + if (typeof this._parts.protocol === "string") { + this._parts.protocol = this._parts.protocol.toLowerCase(); + this.build(!build); + } + return this; + }; + p.normalizeHostname = function(build) { + if (this._parts.hostname) { + if (this.is("IDN") && punycode) { + this._parts.hostname = punycode.toASCII(this._parts.hostname); + } else if (this.is("IPv6") && IPv6) { + this._parts.hostname = IPv6.best(this._parts.hostname); + } + this._parts.hostname = this._parts.hostname.toLowerCase(); + this.build(!build); + } + return this; + }; + p.normalizePort = function(build) { + if (typeof this._parts.protocol === "string" && this._parts.port === URI.defaultPorts[this._parts.protocol]) { + this._parts.port = null; + this.build(!build); + } + return this; + }; + p.normalizePath = function(build) { + var _path = this._parts.path; + if (!_path) { + return this; + } + if (this._parts.urn) { + this._parts.path = URI.recodeUrnPath(this._parts.path); + this.build(!build); + return this; + } + if (this._parts.path === "/") { + return this; + } + _path = URI.recodePath(_path); + var _was_relative; + var _leadingParents = ""; + var _parent, _pos; + if (_path.charAt(0) !== "/") { + _was_relative = true; + _path = "/" + _path; + } + if (_path.slice(-3) === "/.." || _path.slice(-2) === "/.") { + _path += "/"; + } + _path = _path.replace(/(\/(\.\/)+)|(\/\.$)/g, "/").replace(/\/{2,}/g, "/"); + if (_was_relative) { + _leadingParents = _path.substring(1).match(/^(\.\.\/)+/) || ""; + if (_leadingParents) { + _leadingParents = _leadingParents[0]; + } + } + while (true) { + _parent = _path.search(/\/\.\.(\/|$)/); + if (_parent === -1) { + break; + } else if (_parent === 0) { + _path = _path.substring(3); + continue; + } + _pos = _path.substring(0, _parent).lastIndexOf("/"); + if (_pos === -1) { + _pos = _parent; + } + _path = _path.substring(0, _pos) + _path.substring(_parent + 3); + } + if (_was_relative && this.is("relative")) { + _path = _leadingParents + _path.substring(1); + } + this._parts.path = _path; + this.build(!build); + return this; + }; + p.normalizePathname = p.normalizePath; + p.normalizeQuery = function(build) { + if (typeof this._parts.query === "string") { + if (!this._parts.query.length) { + this._parts.query = null; + } else { + this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace)); + } + this.build(!build); + } + return this; + }; + p.normalizeFragment = function(build) { + if (!this._parts.fragment) { + this._parts.fragment = null; + this.build(!build); + } + return this; + }; + p.normalizeSearch = p.normalizeQuery; + p.normalizeHash = p.normalizeFragment; + p.iso8859 = function() { + var e = URI.encode; + var d = URI.decode; + URI.encode = escape; + URI.decode = decodeURIComponent; + try { + this.normalize(); + } finally { + URI.encode = e; + URI.decode = d; + } + return this; + }; + p.unicode = function() { + var e = URI.encode; + var d = URI.decode; + URI.encode = strictEncodeURIComponent; + URI.decode = unescape; + try { + this.normalize(); + } finally { + URI.encode = e; + URI.decode = d; + } + return this; + }; + p.readable = function() { + var uri = this.clone(); + uri.username("").password("").normalize(); + var t = ""; + if (uri._parts.protocol) { + t += uri._parts.protocol + "://"; + } + if (uri._parts.hostname) { + if (uri.is("punycode") && punycode) { + t += punycode.toUnicode(uri._parts.hostname); + if (uri._parts.port) { + t += ":" + uri._parts.port; + } + } else { + t += uri.host(); + } + } + if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== "/") { + t += "/"; + } + t += uri.path(true); + if (uri._parts.query) { + var q2 = ""; + for (var i = 0, qp = uri._parts.query.split("&"), l = qp.length; i < l; i++) { + var kv = (qp[i] || "").split("="); + q2 += "&" + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace).replace(/&/g, "%26"); + if (kv[1] !== void 0) { + q2 += "=" + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace).replace(/&/g, "%26"); + } + } + t += "?" + q2.substring(1); + } + t += URI.decodeQuery(uri.hash(), true); + return t; + }; + p.absoluteTo = function(base) { + var resolved = this.clone(); + var properties = ["protocol", "username", "password", "hostname", "port"]; + var basedir, i, p2; + if (this._parts.urn) { + throw new Error("URNs do not have any generally defined hierarchical components"); + } + if (!(base instanceof URI)) { + base = new URI(base); + } + if (resolved._parts.protocol) { + return resolved; + } else { + resolved._parts.protocol = base._parts.protocol; + } + if (this._parts.hostname) { + return resolved; + } + for (i = 0; p2 = properties[i]; i++) { + resolved._parts[p2] = base._parts[p2]; + } + if (!resolved._parts.path) { + resolved._parts.path = base._parts.path; + if (!resolved._parts.query) { + resolved._parts.query = base._parts.query; + } + } else { + if (resolved._parts.path.substring(-2) === "..") { + resolved._parts.path += "/"; + } + if (resolved.path().charAt(0) !== "/") { + basedir = base.directory(); + basedir = basedir ? basedir : base.path().indexOf("/") === 0 ? "/" : ""; + resolved._parts.path = (basedir ? basedir + "/" : "") + resolved._parts.path; + resolved.normalizePath(); + } + } + resolved.build(); + return resolved; + }; + p.relativeTo = function(base) { + var relative = this.clone().normalize(); + var relativeParts, baseParts, common, relativePath, basePath; + if (relative._parts.urn) { + throw new Error("URNs do not have any generally defined hierarchical components"); + } + base = new URI(base).normalize(); + relativeParts = relative._parts; + baseParts = base._parts; + relativePath = relative.path(); + basePath = base.path(); + if (relativePath.charAt(0) !== "/") { + throw new Error("URI is already relative"); + } + if (basePath.charAt(0) !== "/") { + throw new Error("Cannot calculate a URI relative to another relative URI"); + } + if (relativeParts.protocol === baseParts.protocol) { + relativeParts.protocol = null; + } + if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) { + return relative.build(); + } + if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) { + return relative.build(); + } + if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) { + relativeParts.hostname = null; + relativeParts.port = null; + } else { + return relative.build(); + } + if (relativePath === basePath) { + relativeParts.path = ""; + return relative.build(); + } + common = URI.commonPath(relativePath, basePath); + if (!common) { + return relative.build(); + } + var parents = baseParts.path.substring(common.length).replace(/[^\/]*$/, "").replace(/.*?\//g, "../"); + relativeParts.path = parents + relativeParts.path.substring(common.length) || "./"; + return relative.build(); + }; + p.equals = function(uri) { + var one = this.clone(); + var two = new URI(uri); + var one_map = {}; + var two_map = {}; + var checked = {}; + var one_query, two_query, key; + one.normalize(); + two.normalize(); + if (one.toString() === two.toString()) { + return true; + } + one_query = one.query(); + two_query = two.query(); + one.query(""); + two.query(""); + if (one.toString() !== two.toString()) { + return false; + } + if (one_query.length !== two_query.length) { + return false; + } + one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace); + two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace); + for (key in one_map) { + if (hasOwn.call(one_map, key)) { + if (!isArray(one_map[key])) { + if (one_map[key] !== two_map[key]) { + return false; + } + } else if (!arraysEqual(one_map[key], two_map[key])) { + return false; + } + checked[key] = true; + } + } + for (key in two_map) { + if (hasOwn.call(two_map, key)) { + if (!checked[key]) { + return false; + } + } + } + return true; + }; + p.preventInvalidHostname = function(v) { + this._parts.preventInvalidHostname = !!v; + return this; + }; + p.duplicateQueryParameters = function(v) { + this._parts.duplicateQueryParameters = !!v; + return this; + }; + p.escapeQuerySpace = function(v) { + this._parts.escapeQuerySpace = !!v; + return this; + }; + return URI; + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/federation/server.js +var require_server = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/federation/server.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.FederationServer = exports2.FEDERATION_RESPONSE_MAX_SIZE = void 0; + var _stellarBase = require_lib20(); + var _urijs = _interopRequireDefault(require_URI()); + var _config = require_config2(); + var _errors = require_errors11(); + var _stellartoml = require_stellartoml(); + var _httpClient = require_http_client(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var FEDERATION_RESPONSE_MAX_SIZE = exports2.FEDERATION_RESPONSE_MAX_SIZE = 100 * 1024; + var FederationServer = exports2.FederationServer = function() { + function FederationServer2(serverURL, domain) { + var opts = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; + _classCallCheck(this, FederationServer2); + this.serverURL = (0, _urijs.default)(serverURL); + this.domain = domain; + var allowHttp = typeof opts.allowHttp === "undefined" ? _config.Config.isAllowHttp() : opts.allowHttp; + this.timeout = typeof opts.timeout === "undefined" ? _config.Config.getTimeout() : opts.timeout; + if (this.serverURL.protocol() !== "https" && !allowHttp) { + throw new Error("Cannot connect to insecure federation server"); + } + } + return _createClass(FederationServer2, [{ + key: "resolveAddress", + value: function() { + var _resolveAddress = _asyncToGenerator(_regenerator().m(function _callee(address) { + var stellarAddress, url; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + stellarAddress = address; + if (!(address.indexOf("*") < 0)) { + _context.n = 2; + break; + } + if (this.domain) { + _context.n = 1; + break; + } + return _context.a(2, Promise.reject(new Error("Unknown domain. Make sure `address` contains a domain (ex. `bob*stellar.org`) or pass `domain` parameter when instantiating the server object."))); + case 1: + stellarAddress = "".concat(address, "*").concat(this.domain); + case 2: + url = this.serverURL.query({ + type: "name", + q: stellarAddress + }); + return _context.a(2, this._sendRequest(url)); + } + }, _callee, this); + })); + function resolveAddress(_x) { + return _resolveAddress.apply(this, arguments); + } + return resolveAddress; + }() + }, { + key: "resolveAccountId", + value: function() { + var _resolveAccountId = _asyncToGenerator(_regenerator().m(function _callee2(accountId) { + var url; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + url = this.serverURL.query({ + type: "id", + q: accountId + }); + return _context2.a(2, this._sendRequest(url)); + } + }, _callee2, this); + })); + function resolveAccountId(_x2) { + return _resolveAccountId.apply(this, arguments); + } + return resolveAccountId; + }() + }, { + key: "resolveTransactionId", + value: function() { + var _resolveTransactionId = _asyncToGenerator(_regenerator().m(function _callee3(transactionId) { + var url; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + url = this.serverURL.query({ + type: "txid", + q: transactionId + }); + return _context3.a(2, this._sendRequest(url)); + } + }, _callee3, this); + })); + function resolveTransactionId(_x3) { + return _resolveTransactionId.apply(this, arguments); + } + return resolveTransactionId; + }() + }, { + key: "_sendRequest", + value: function() { + var _sendRequest2 = _asyncToGenerator(_regenerator().m(function _callee4(url) { + var timeout; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.n) { + case 0: + timeout = this.timeout; + return _context4.a(2, _httpClient.httpClient.get(url.toString(), { + maxContentLength: FEDERATION_RESPONSE_MAX_SIZE, + timeout + }).then(function(response) { + if (typeof response.data.memo !== "undefined" && typeof response.data.memo !== "string") { + throw new Error("memo value should be of type string"); + } + return response.data; + }).catch(function(response) { + if (response instanceof Error) { + if (response.message.match(/^maxContentLength size/)) { + throw new Error("federation response exceeds allowed size of ".concat(FEDERATION_RESPONSE_MAX_SIZE)); + } else { + return Promise.reject(response); + } + } else { + return Promise.reject(new _errors.BadResponseError("Server query failed. Server responded: ".concat(response.status, " ").concat(response.statusText), response.data)); + } + })); + } + }, _callee4, this); + })); + function _sendRequest(_x4) { + return _sendRequest2.apply(this, arguments); + } + return _sendRequest; + }() + }], [{ + key: "resolve", + value: function() { + var _resolve = _asyncToGenerator(_regenerator().m(function _callee5(value) { + var opts, addressParts, _addressParts, domain, federationServer, _args5 = arguments; + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + opts = _args5.length > 1 && _args5[1] !== void 0 ? _args5[1] : {}; + if (!(value.indexOf("*") < 0)) { + _context5.n = 2; + break; + } + if (_stellarBase.StrKey.isValidEd25519PublicKey(value)) { + _context5.n = 1; + break; + } + return _context5.a(2, Promise.reject(new Error("Invalid Account ID"))); + case 1: + return _context5.a(2, Promise.resolve({ + account_id: value + })); + case 2: + addressParts = value.split("*"); + _addressParts = _slicedToArray(addressParts, 2), domain = _addressParts[1]; + if (!(addressParts.length !== 2 || !domain)) { + _context5.n = 3; + break; + } + return _context5.a(2, Promise.reject(new Error("Invalid Stellar address"))); + case 3: + _context5.n = 4; + return FederationServer2.createForDomain(domain, opts); + case 4: + federationServer = _context5.v; + return _context5.a(2, federationServer.resolveAddress(value)); + } + }, _callee5); + })); + function resolve(_x5) { + return _resolve.apply(this, arguments); + } + return resolve; + }() + }, { + key: "createForDomain", + value: function() { + var _createForDomain = _asyncToGenerator(_regenerator().m(function _callee6(domain) { + var opts, tomlObject, _args6 = arguments; + return _regenerator().w(function(_context6) { + while (1) switch (_context6.n) { + case 0: + opts = _args6.length > 1 && _args6[1] !== void 0 ? _args6[1] : {}; + _context6.n = 1; + return _stellartoml.Resolver.resolve(domain, opts); + case 1: + tomlObject = _context6.v; + if (tomlObject.FEDERATION_SERVER) { + _context6.n = 2; + break; + } + return _context6.a(2, Promise.reject(new Error("stellar.toml does not contain FEDERATION_SERVER field"))); + case 2: + return _context6.a(2, new FederationServer2(tomlObject.FEDERATION_SERVER, domain, opts)); + } + }, _callee6); + })); + function createForDomain(_x6) { + return _createForDomain.apply(this, arguments); + } + return createForDomain; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/federation/api.js +var require_api2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/federation/api.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Api = void 0; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/federation/index.js +var require_federation = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/federation/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + Server: true, + FEDERATION_RESPONSE_MAX_SIZE: true + }; + Object.defineProperty(exports2, "FEDERATION_RESPONSE_MAX_SIZE", { + enumerable: true, + get: function get() { + return _server.FEDERATION_RESPONSE_MAX_SIZE; + } + }); + Object.defineProperty(exports2, "Server", { + enumerable: true, + get: function get() { + return _server.FederationServer; + } + }); + var _server = require_server(); + var _api = require_api2(); + Object.keys(_api).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _api[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _api[key]; + } + }); + }); + } +}); + +// node_modules/randombytes/index.js +var require_randombytes = __commonJS({ + "node_modules/randombytes/index.js"(exports2, module2) { + module2.exports = __require("crypto").randomBytes; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/webauth/errors.js +var require_errors12 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/webauth/errors.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.InvalidChallengeError = void 0; + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t2) { + if (null === t2 || !_isNativeFunction(t2)) return t2; + if ("function" != typeof t2) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t2)) return r.get(t2); + r.set(t2, Wrapper); + } + function Wrapper() { + return _construct(t2, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t2); + }, _wrapNativeSuper(t); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + var InvalidChallengeError = exports2.InvalidChallengeError = function(_Error) { + function InvalidChallengeError2(message) { + var _this; + _classCallCheck(this, InvalidChallengeError2); + var trueProto = (this instanceof InvalidChallengeError2 ? this.constructor : void 0).prototype; + _this = _callSuper(this, InvalidChallengeError2, [message]); + _this.__proto__ = trueProto; + _this.constructor = InvalidChallengeError2; + _this.name = "InvalidChallengeError"; + return _this; + } + _inherits(InvalidChallengeError2, _Error); + return _createClass(InvalidChallengeError2); + }(_wrapNativeSuper(Error)); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/webauth/utils.js +var require_utils26 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/webauth/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.buildChallengeTx = buildChallengeTx; + exports2.gatherTxSigners = gatherTxSigners; + exports2.readChallengeTx = readChallengeTx; + exports2.verifyChallengeTxSigners = verifyChallengeTxSigners; + exports2.verifyChallengeTxThreshold = verifyChallengeTxThreshold; + exports2.verifyTxSignedBy = verifyTxSignedBy; + var _randombytes = _interopRequireDefault(require_randombytes()); + var _stellarBase = require_lib20(); + var _utils = require_utils25(); + var _errors = require_errors12(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { + t && (r = t); + var _n = 0, F = function F2() { + }; + return { s: F, n: function n() { + return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; + }, e: function e2(r2) { + throw r2; + }, f: F }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, a = true, u = false; + return { s: function s() { + t = t.call(r); + }, n: function n() { + var r2 = t.next(); + return a = r2.done, r2; + }, e: function e2(r2) { + u = true, o = r2; + }, f: function f() { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _toArray(r) { + return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function buildChallengeTx(serverKeypair, clientAccountID, homeDomain) { + var timeout = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 300; + var networkPassphrase = arguments.length > 4 ? arguments[4] : void 0; + var webAuthDomain = arguments.length > 5 ? arguments[5] : void 0; + var memo = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : null; + var clientDomain = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : null; + var clientSigningKey = arguments.length > 8 && arguments[8] !== void 0 ? arguments[8] : null; + if (clientAccountID.startsWith("M") && memo) { + throw Error("memo cannot be used if clientAccountID is a muxed account"); + } + var account = new _stellarBase.Account(serverKeypair.publicKey(), "-1"); + var now = Math.floor(Date.now() / 1e3); + var value = (0, _randombytes.default)(48).toString("base64"); + var builder = new _stellarBase.TransactionBuilder(account, { + fee: _stellarBase.BASE_FEE, + networkPassphrase, + timebounds: { + minTime: now, + maxTime: now + timeout + } + }).addOperation(_stellarBase.Operation.manageData({ + name: "".concat(homeDomain, " auth"), + value, + source: clientAccountID + })).addOperation(_stellarBase.Operation.manageData({ + name: "web_auth_domain", + value: webAuthDomain, + source: account.accountId() + })); + if (clientDomain) { + if (!clientSigningKey) { + throw Error("clientSigningKey is required if clientDomain is provided"); + } + builder.addOperation(_stellarBase.Operation.manageData({ + name: "client_domain", + value: clientDomain, + source: clientSigningKey + })); + } + if (memo) { + builder.addMemo(_stellarBase.Memo.id(memo)); + } + var transaction = builder.build(); + transaction.sign(serverKeypair); + return transaction.toEnvelope().toXDR("base64").toString(); + } + function readChallengeTx(challengeTx, serverAccountID, networkPassphrase, homeDomains, webAuthDomain) { + var _transaction$timeBoun; + if (serverAccountID.startsWith("M")) { + throw Error("Invalid serverAccountID: multiplexed accounts are not supported."); + } + var transaction; + try { + transaction = new _stellarBase.Transaction(challengeTx, networkPassphrase); + } catch (_unused) { + try { + transaction = new _stellarBase.FeeBumpTransaction(challengeTx, networkPassphrase); + } catch (_unused2) { + throw new _errors.InvalidChallengeError("Invalid challenge: unable to deserialize challengeTx transaction string"); + } + throw new _errors.InvalidChallengeError("Invalid challenge: expected a Transaction but received a FeeBumpTransaction"); + } + var sequence = Number.parseInt(transaction.sequence, 10); + if (sequence !== 0) { + throw new _errors.InvalidChallengeError("The transaction sequence number should be zero"); + } + if (transaction.source !== serverAccountID) { + throw new _errors.InvalidChallengeError("The transaction source account is not equal to the server's account"); + } + if (transaction.operations.length < 1) { + throw new _errors.InvalidChallengeError("The transaction should contain at least one operation"); + } + var _transaction$operatio = _toArray(transaction.operations), operation = _transaction$operatio[0], subsequentOperations = _transaction$operatio.slice(1); + if (!operation.source) { + throw new _errors.InvalidChallengeError("The transaction's operation should contain a source account"); + } + var clientAccountID = operation.source; + var memo = null; + if (transaction.memo.type !== _stellarBase.MemoNone) { + if (clientAccountID.startsWith("M")) { + throw new _errors.InvalidChallengeError("The transaction has a memo but the client account ID is a muxed account"); + } + if (transaction.memo.type !== _stellarBase.MemoID) { + throw new _errors.InvalidChallengeError("The transaction's memo must be of type `id`"); + } + memo = transaction.memo.value; + } + if (operation.type !== "manageData") { + throw new _errors.InvalidChallengeError("The transaction's operation type should be 'manageData'"); + } + if (transaction.timeBounds && Number.parseInt((_transaction$timeBoun = transaction.timeBounds) === null || _transaction$timeBoun === void 0 ? void 0 : _transaction$timeBoun.maxTime, 10) === _stellarBase.TimeoutInfinite) { + throw new _errors.InvalidChallengeError("The transaction requires non-infinite timebounds"); + } + if (!_utils.Utils.validateTimebounds(transaction, 60 * 5)) { + throw new _errors.InvalidChallengeError("The transaction has expired"); + } + if (operation.value === void 0) { + throw new _errors.InvalidChallengeError("The transaction's operation values should not be null"); + } + if (!operation.value) { + throw new _errors.InvalidChallengeError("The transaction's operation value should not be null"); + } + if (Buffer.from(operation.value.toString(), "base64").length !== 48) { + throw new _errors.InvalidChallengeError("The transaction's operation value should be a 64 bytes base64 random string"); + } + if (!homeDomains) { + throw new _errors.InvalidChallengeError("Invalid homeDomains: a home domain must be provided for verification"); + } + var matchedHomeDomain; + if (typeof homeDomains === "string") { + if ("".concat(homeDomains, " auth") === operation.name) { + matchedHomeDomain = homeDomains; + } + } else if (Array.isArray(homeDomains)) { + matchedHomeDomain = homeDomains.find(function(domain) { + return "".concat(domain, " auth") === operation.name; + }); + } else { + throw new _errors.InvalidChallengeError("Invalid homeDomains: homeDomains type is ".concat(_typeof(homeDomains), " but should be a string or an array")); + } + if (!matchedHomeDomain) { + throw new _errors.InvalidChallengeError("Invalid homeDomains: the transaction's operation key name does not match the expected home domain"); + } + var _iterator = _createForOfIteratorHelper(subsequentOperations), _step; + try { + for (_iterator.s(); !(_step = _iterator.n()).done; ) { + var op = _step.value; + if (op.type !== "manageData") { + throw new _errors.InvalidChallengeError("The transaction has operations that are not of type 'manageData'"); + } + if (op.source !== serverAccountID && op.name !== "client_domain") { + throw new _errors.InvalidChallengeError("The transaction has operations that are unrecognized"); + } + if (op.name === "web_auth_domain") { + if (op.value === void 0) { + throw new _errors.InvalidChallengeError("'web_auth_domain' operation value should not be null"); + } + if (op.value.compare(Buffer.from(webAuthDomain))) { + throw new _errors.InvalidChallengeError("'web_auth_domain' operation value does not match ".concat(webAuthDomain)); + } + } + } + } catch (err2) { + _iterator.e(err2); + } finally { + _iterator.f(); + } + if (!verifyTxSignedBy(transaction, serverAccountID)) { + throw new _errors.InvalidChallengeError("Transaction not signed by server: '".concat(serverAccountID, "'")); + } + return { + tx: transaction, + clientAccountID, + matchedHomeDomain, + memo + }; + } + function verifyChallengeTxThreshold(challengeTx, serverAccountID, networkPassphrase, threshold, signerSummary, homeDomains, webAuthDomain) { + var signers = signerSummary.map(function(signer) { + return signer.key; + }); + var signersFound = verifyChallengeTxSigners(challengeTx, serverAccountID, networkPassphrase, signers, homeDomains, webAuthDomain); + var weight = 0; + var _loop = function _loop2() { + var _signerSummary$find; + var signer = _signersFound[_i]; + var sigWeight = ((_signerSummary$find = signerSummary.find(function(s) { + return s.key === signer; + })) === null || _signerSummary$find === void 0 ? void 0 : _signerSummary$find.weight) || 0; + weight += sigWeight; + }; + for (var _i = 0, _signersFound = signersFound; _i < _signersFound.length; _i++) { + _loop(); + } + if (weight < threshold) { + throw new _errors.InvalidChallengeError("signers with weight ".concat(weight, " do not meet threshold ").concat(threshold, '"')); + } + return signersFound; + } + function verifyChallengeTxSigners(challengeTx, serverAccountID, networkPassphrase, signers, homeDomains, webAuthDomain) { + var _readChallengeTx = readChallengeTx(challengeTx, serverAccountID, networkPassphrase, homeDomains, webAuthDomain), tx = _readChallengeTx.tx; + var serverKP; + try { + serverKP = _stellarBase.Keypair.fromPublicKey(serverAccountID); + } catch (err2) { + throw new Error("Couldn't infer keypair from the provided 'serverAccountID': ".concat(err2.message)); + } + var clientSigners = /* @__PURE__ */ new Set(); + var _iterator2 = _createForOfIteratorHelper(signers), _step2; + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) { + var _signer = _step2.value; + if (_signer === serverKP.publicKey()) { + continue; + } + if (_signer.charAt(0) !== "G") { + continue; + } + clientSigners.add(_signer); + } + } catch (err2) { + _iterator2.e(err2); + } finally { + _iterator2.f(); + } + if (clientSigners.size === 0) { + throw new _errors.InvalidChallengeError("No verifiable client signers provided, at least one G... address must be provided"); + } + var clientSigningKey; + var _iterator3 = _createForOfIteratorHelper(tx.operations), _step3; + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done; ) { + var op = _step3.value; + if (op.type === "manageData" && op.name === "client_domain") { + if (clientSigningKey) { + throw new _errors.InvalidChallengeError("Found more than one client_domain operation"); + } + clientSigningKey = op.source; + } + } + } catch (err2) { + _iterator3.e(err2); + } finally { + _iterator3.f(); + } + var allSigners = [serverKP.publicKey()].concat(_toConsumableArray(Array.from(clientSigners))); + if (clientSigningKey) { + allSigners.push(clientSigningKey); + } + var signersFound = gatherTxSigners(tx, allSigners); + var serverSignatureFound = false; + var clientSigningKeySignatureFound = false; + for (var _i2 = 0, _signersFound2 = signersFound; _i2 < _signersFound2.length; _i2++) { + var signer = _signersFound2[_i2]; + if (signer === serverKP.publicKey()) { + serverSignatureFound = true; + } + if (signer === clientSigningKey) { + clientSigningKeySignatureFound = true; + } + } + if (!serverSignatureFound) { + throw new _errors.InvalidChallengeError("Transaction not signed by server: '".concat(serverKP.publicKey(), "'")); + } + if (clientSigningKey && !clientSigningKeySignatureFound) { + throw new _errors.InvalidChallengeError("Transaction not signed by the source account of the 'client_domain' ManageData operation"); + } + if (signersFound.length === 1) { + throw new _errors.InvalidChallengeError("None of the given signers match the transaction signatures"); + } + if (signersFound.length !== tx.signatures.length) { + throw new _errors.InvalidChallengeError("Transaction has unrecognized signatures"); + } + signersFound.splice(signersFound.indexOf(serverKP.publicKey()), 1); + if (clientSigningKey) { + signersFound.splice(signersFound.indexOf(clientSigningKey), 1); + } + return signersFound; + } + function verifyTxSignedBy(transaction, accountID) { + return gatherTxSigners(transaction, [accountID]).length !== 0; + } + function gatherTxSigners(transaction, signers) { + var hashedSignatureBase = transaction.hash(); + var txSignatures = _toConsumableArray(transaction.signatures); + var signersFound = /* @__PURE__ */ new Set(); + var _iterator4 = _createForOfIteratorHelper(signers), _step4; + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done; ) { + var signer = _step4.value; + if (txSignatures.length === 0) { + break; + } + var keypair = void 0; + try { + keypair = _stellarBase.Keypair.fromPublicKey(signer); + } catch (err2) { + throw new _errors.InvalidChallengeError("Signer is not a valid address: ".concat(err2.message)); + } + for (var i = 0; i < txSignatures.length; i++) { + var decSig = txSignatures[i]; + if (!decSig.hint().equals(keypair.signatureHint())) { + continue; + } + if (keypair.verify(hashedSignatureBase, decSig.signature())) { + signersFound.add(signer); + txSignatures.splice(i, 1); + break; + } + } + } + } catch (err2) { + _iterator4.e(err2); + } finally { + _iterator4.f(); + } + return Array.from(signersFound); + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/webauth/index.js +var require_webauth = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/webauth/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + InvalidChallengeError: true + }; + Object.defineProperty(exports2, "InvalidChallengeError", { + enumerable: true, + get: function get() { + return _errors.InvalidChallengeError; + } + }); + var _utils = require_utils26(); + Object.keys(_utils).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _utils[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _utils[key]; + } + }); + }); + var _errors = require_errors12(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/friendbot/index.js +var require_friendbot = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/friendbot/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Api = void 0; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/horizon_api.js +var require_horizon_api = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/horizon_api.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.HorizonApi = void 0; + var HorizonApi; + (function(_HorizonApi) { + var LiquidityPoolType = function(LiquidityPoolType2) { + LiquidityPoolType2["constantProduct"] = "constant_product"; + return LiquidityPoolType2; + }({}); + _HorizonApi.LiquidityPoolType = LiquidityPoolType; + var OperationResponseType = function(OperationResponseType2) { + OperationResponseType2["createAccount"] = "create_account"; + OperationResponseType2["payment"] = "payment"; + OperationResponseType2["pathPayment"] = "path_payment_strict_receive"; + OperationResponseType2["createPassiveOffer"] = "create_passive_sell_offer"; + OperationResponseType2["manageOffer"] = "manage_sell_offer"; + OperationResponseType2["setOptions"] = "set_options"; + OperationResponseType2["changeTrust"] = "change_trust"; + OperationResponseType2["allowTrust"] = "allow_trust"; + OperationResponseType2["accountMerge"] = "account_merge"; + OperationResponseType2["inflation"] = "inflation"; + OperationResponseType2["manageData"] = "manage_data"; + OperationResponseType2["bumpSequence"] = "bump_sequence"; + OperationResponseType2["manageBuyOffer"] = "manage_buy_offer"; + OperationResponseType2["pathPaymentStrictSend"] = "path_payment_strict_send"; + OperationResponseType2["createClaimableBalance"] = "create_claimable_balance"; + OperationResponseType2["claimClaimableBalance"] = "claim_claimable_balance"; + OperationResponseType2["beginSponsoringFutureReserves"] = "begin_sponsoring_future_reserves"; + OperationResponseType2["endSponsoringFutureReserves"] = "end_sponsoring_future_reserves"; + OperationResponseType2["revokeSponsorship"] = "revoke_sponsorship"; + OperationResponseType2["clawback"] = "clawback"; + OperationResponseType2["clawbackClaimableBalance"] = "clawback_claimable_balance"; + OperationResponseType2["setTrustLineFlags"] = "set_trust_line_flags"; + OperationResponseType2["liquidityPoolDeposit"] = "liquidity_pool_deposit"; + OperationResponseType2["liquidityPoolWithdraw"] = "liquidity_pool_withdraw"; + OperationResponseType2["invokeHostFunction"] = "invoke_host_function"; + OperationResponseType2["bumpFootprintExpiration"] = "bump_footprint_expiration"; + OperationResponseType2["restoreFootprint"] = "restore_footprint"; + return OperationResponseType2; + }({}); + _HorizonApi.OperationResponseType = OperationResponseType; + var OperationResponseTypeI = function(OperationResponseTypeI2) { + OperationResponseTypeI2[OperationResponseTypeI2["createAccount"] = 0] = "createAccount"; + OperationResponseTypeI2[OperationResponseTypeI2["payment"] = 1] = "payment"; + OperationResponseTypeI2[OperationResponseTypeI2["pathPayment"] = 2] = "pathPayment"; + OperationResponseTypeI2[OperationResponseTypeI2["createPassiveOffer"] = 3] = "createPassiveOffer"; + OperationResponseTypeI2[OperationResponseTypeI2["manageOffer"] = 4] = "manageOffer"; + OperationResponseTypeI2[OperationResponseTypeI2["setOptions"] = 5] = "setOptions"; + OperationResponseTypeI2[OperationResponseTypeI2["changeTrust"] = 6] = "changeTrust"; + OperationResponseTypeI2[OperationResponseTypeI2["allowTrust"] = 7] = "allowTrust"; + OperationResponseTypeI2[OperationResponseTypeI2["accountMerge"] = 8] = "accountMerge"; + OperationResponseTypeI2[OperationResponseTypeI2["inflation"] = 9] = "inflation"; + OperationResponseTypeI2[OperationResponseTypeI2["manageData"] = 10] = "manageData"; + OperationResponseTypeI2[OperationResponseTypeI2["bumpSequence"] = 11] = "bumpSequence"; + OperationResponseTypeI2[OperationResponseTypeI2["manageBuyOffer"] = 12] = "manageBuyOffer"; + OperationResponseTypeI2[OperationResponseTypeI2["pathPaymentStrictSend"] = 13] = "pathPaymentStrictSend"; + OperationResponseTypeI2[OperationResponseTypeI2["createClaimableBalance"] = 14] = "createClaimableBalance"; + OperationResponseTypeI2[OperationResponseTypeI2["claimClaimableBalance"] = 15] = "claimClaimableBalance"; + OperationResponseTypeI2[OperationResponseTypeI2["beginSponsoringFutureReserves"] = 16] = "beginSponsoringFutureReserves"; + OperationResponseTypeI2[OperationResponseTypeI2["endSponsoringFutureReserves"] = 17] = "endSponsoringFutureReserves"; + OperationResponseTypeI2[OperationResponseTypeI2["revokeSponsorship"] = 18] = "revokeSponsorship"; + OperationResponseTypeI2[OperationResponseTypeI2["clawback"] = 19] = "clawback"; + OperationResponseTypeI2[OperationResponseTypeI2["clawbackClaimableBalance"] = 20] = "clawbackClaimableBalance"; + OperationResponseTypeI2[OperationResponseTypeI2["setTrustLineFlags"] = 21] = "setTrustLineFlags"; + OperationResponseTypeI2[OperationResponseTypeI2["liquidityPoolDeposit"] = 22] = "liquidityPoolDeposit"; + OperationResponseTypeI2[OperationResponseTypeI2["liquidityPoolWithdraw"] = 23] = "liquidityPoolWithdraw"; + OperationResponseTypeI2[OperationResponseTypeI2["invokeHostFunction"] = 24] = "invokeHostFunction"; + OperationResponseTypeI2[OperationResponseTypeI2["bumpFootprintExpiration"] = 25] = "bumpFootprintExpiration"; + OperationResponseTypeI2[OperationResponseTypeI2["restoreFootprint"] = 26] = "restoreFootprint"; + return OperationResponseTypeI2; + }({}); + _HorizonApi.OperationResponseTypeI = OperationResponseTypeI; + var TransactionFailedResultCodes = function(TransactionFailedResultCodes2) { + TransactionFailedResultCodes2["TX_FAILED"] = "tx_failed"; + TransactionFailedResultCodes2["TX_BAD_SEQ"] = "tx_bad_seq"; + TransactionFailedResultCodes2["TX_BAD_AUTH"] = "tx_bad_auth"; + TransactionFailedResultCodes2["TX_BAD_AUTH_EXTRA"] = "tx_bad_auth_extra"; + TransactionFailedResultCodes2["TX_FEE_BUMP_INNER_SUCCESS"] = "tx_fee_bump_inner_success"; + TransactionFailedResultCodes2["TX_FEE_BUMP_INNER_FAILED"] = "tx_fee_bump_inner_failed"; + TransactionFailedResultCodes2["TX_NOT_SUPPORTED"] = "tx_not_supported"; + TransactionFailedResultCodes2["TX_SUCCESS"] = "tx_success"; + TransactionFailedResultCodes2["TX_TOO_EARLY"] = "tx_too_early"; + TransactionFailedResultCodes2["TX_TOO_LATE"] = "tx_too_late"; + TransactionFailedResultCodes2["TX_MISSING_OPERATION"] = "tx_missing_operation"; + TransactionFailedResultCodes2["TX_INSUFFICIENT_BALANCE"] = "tx_insufficient_balance"; + TransactionFailedResultCodes2["TX_NO_SOURCE_ACCOUNT"] = "tx_no_source_account"; + TransactionFailedResultCodes2["TX_INSUFFICIENT_FEE"] = "tx_insufficient_fee"; + TransactionFailedResultCodes2["TX_INTERNAL_ERROR"] = "tx_internal_error"; + return TransactionFailedResultCodes2; + }({}); + _HorizonApi.TransactionFailedResultCodes = TransactionFailedResultCodes; + })(HorizonApi || (exports2.HorizonApi = HorizonApi = {})); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/types/effects.js +var require_effects = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/types/effects.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EffectType = void 0; + var EffectType = exports2.EffectType = function(EffectType2) { + EffectType2[EffectType2["account_created"] = 0] = "account_created"; + EffectType2[EffectType2["account_removed"] = 1] = "account_removed"; + EffectType2[EffectType2["account_credited"] = 2] = "account_credited"; + EffectType2[EffectType2["account_debited"] = 3] = "account_debited"; + EffectType2[EffectType2["account_thresholds_updated"] = 4] = "account_thresholds_updated"; + EffectType2[EffectType2["account_home_domain_updated"] = 5] = "account_home_domain_updated"; + EffectType2[EffectType2["account_flags_updated"] = 6] = "account_flags_updated"; + EffectType2[EffectType2["account_inflation_destination_updated"] = 7] = "account_inflation_destination_updated"; + EffectType2[EffectType2["signer_created"] = 10] = "signer_created"; + EffectType2[EffectType2["signer_removed"] = 11] = "signer_removed"; + EffectType2[EffectType2["signer_updated"] = 12] = "signer_updated"; + EffectType2[EffectType2["trustline_created"] = 20] = "trustline_created"; + EffectType2[EffectType2["trustline_removed"] = 21] = "trustline_removed"; + EffectType2[EffectType2["trustline_updated"] = 22] = "trustline_updated"; + EffectType2[EffectType2["trustline_authorized"] = 23] = "trustline_authorized"; + EffectType2[EffectType2["trustline_deauthorized"] = 24] = "trustline_deauthorized"; + EffectType2[EffectType2["trustline_authorized_to_maintain_liabilities"] = 25] = "trustline_authorized_to_maintain_liabilities"; + EffectType2[EffectType2["trustline_flags_updated"] = 26] = "trustline_flags_updated"; + EffectType2[EffectType2["offer_created"] = 30] = "offer_created"; + EffectType2[EffectType2["offer_removed"] = 31] = "offer_removed"; + EffectType2[EffectType2["offer_updated"] = 32] = "offer_updated"; + EffectType2[EffectType2["trade"] = 33] = "trade"; + EffectType2[EffectType2["data_created"] = 40] = "data_created"; + EffectType2[EffectType2["data_removed"] = 41] = "data_removed"; + EffectType2[EffectType2["data_updated"] = 42] = "data_updated"; + EffectType2[EffectType2["sequence_bumped"] = 43] = "sequence_bumped"; + EffectType2[EffectType2["claimable_balance_created"] = 50] = "claimable_balance_created"; + EffectType2[EffectType2["claimable_balance_claimant_created"] = 51] = "claimable_balance_claimant_created"; + EffectType2[EffectType2["claimable_balance_claimed"] = 52] = "claimable_balance_claimed"; + EffectType2[EffectType2["account_sponsorship_created"] = 60] = "account_sponsorship_created"; + EffectType2[EffectType2["account_sponsorship_updated"] = 61] = "account_sponsorship_updated"; + EffectType2[EffectType2["account_sponsorship_removed"] = 62] = "account_sponsorship_removed"; + EffectType2[EffectType2["trustline_sponsorship_created"] = 63] = "trustline_sponsorship_created"; + EffectType2[EffectType2["trustline_sponsorship_updated"] = 64] = "trustline_sponsorship_updated"; + EffectType2[EffectType2["trustline_sponsorship_removed"] = 65] = "trustline_sponsorship_removed"; + EffectType2[EffectType2["data_sponsorship_created"] = 66] = "data_sponsorship_created"; + EffectType2[EffectType2["data_sponsorship_updated"] = 67] = "data_sponsorship_updated"; + EffectType2[EffectType2["data_sponsorship_removed"] = 68] = "data_sponsorship_removed"; + EffectType2[EffectType2["claimable_balance_sponsorship_created"] = 69] = "claimable_balance_sponsorship_created"; + EffectType2[EffectType2["claimable_balance_sponsorship_updated"] = 70] = "claimable_balance_sponsorship_updated"; + EffectType2[EffectType2["claimable_balance_sponsorship_removed"] = 71] = "claimable_balance_sponsorship_removed"; + EffectType2[EffectType2["signer_sponsorship_created"] = 72] = "signer_sponsorship_created"; + EffectType2[EffectType2["signer_sponsorship_updated"] = 73] = "signer_sponsorship_updated"; + EffectType2[EffectType2["signer_sponsorship_removed"] = 74] = "signer_sponsorship_removed"; + EffectType2[EffectType2["claimable_balance_clawed_back"] = 80] = "claimable_balance_clawed_back"; + EffectType2[EffectType2["liquidity_pool_deposited"] = 90] = "liquidity_pool_deposited"; + EffectType2[EffectType2["liquidity_pool_withdrew"] = 91] = "liquidity_pool_withdrew"; + EffectType2[EffectType2["liquidity_pool_trade"] = 92] = "liquidity_pool_trade"; + EffectType2[EffectType2["liquidity_pool_created"] = 93] = "liquidity_pool_created"; + EffectType2[EffectType2["liquidity_pool_removed"] = 94] = "liquidity_pool_removed"; + EffectType2[EffectType2["liquidity_pool_revoked"] = 95] = "liquidity_pool_revoked"; + EffectType2[EffectType2["contract_credited"] = 96] = "contract_credited"; + EffectType2[EffectType2["contract_debited"] = 97] = "contract_debited"; + return EffectType2; + }({}); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/server_api.js +var require_server_api = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/server_api.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ServerApi = void 0; + var _horizon_api = require_horizon_api(); + var Effects = _interopRequireWildcard(require_effects()); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, default: e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t in e2) "default" !== _t && {}.hasOwnProperty.call(e2, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e2[_t]); + return f; + })(e, t); + } + var ServerApi; + (function(_ServerApi) { + var EffectType = _ServerApi.EffectType = Effects.EffectType; + var TradeType = function(TradeType2) { + TradeType2["all"] = "all"; + TradeType2["liquidityPools"] = "liquidity_pool"; + TradeType2["orderbook"] = "orderbook"; + return TradeType2; + }({}); + _ServerApi.TradeType = TradeType; + var OperationResponseType = _horizon_api.HorizonApi.OperationResponseType; + var OperationResponseTypeI = _horizon_api.HorizonApi.OperationResponseTypeI; + })(ServerApi || (exports2.ServerApi = ServerApi = {})); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/account_response.js +var require_account_response = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/account_response.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AccountResponse = void 0; + var _stellarBase = require_lib20(); + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var AccountResponse = exports2.AccountResponse = function() { + function AccountResponse2(response) { + var _this = this; + _classCallCheck(this, AccountResponse2); + this._baseAccount = new _stellarBase.Account(response.account_id, response.sequence); + Object.entries(response).forEach(function(_ref) { + var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1]; + _this[key] = value; + }); + } + return _createClass(AccountResponse2, [{ + key: "accountId", + value: function accountId() { + return this._baseAccount.accountId(); + } + }, { + key: "sequenceNumber", + value: function sequenceNumber() { + return this._baseAccount.sequenceNumber(); + } + }, { + key: "incrementSequenceNumber", + value: function incrementSequenceNumber() { + this._baseAccount.incrementSequenceNumber(); + this.sequence = this._baseAccount.sequenceNumber(); + } + }]); + }(); + } +}); + +// node_modules/urijs/src/URITemplate.js +var require_URITemplate = __commonJS({ + "node_modules/urijs/src/URITemplate.js"(exports2, module2) { + (function(root, factory) { + "use strict"; + if (typeof module2 === "object" && module2.exports) { + module2.exports = factory(require_URI()); + } else if (typeof define === "function" && define.amd) { + define(["./URI"], factory); + } else { + root.URITemplate = factory(root.URI, root); + } + })(exports2, function(URI, root) { + "use strict"; + var _URITemplate = root && root.URITemplate; + var hasOwn = Object.prototype.hasOwnProperty; + function URITemplate(expression) { + if (URITemplate._cache[expression]) { + return URITemplate._cache[expression]; + } + if (!(this instanceof URITemplate)) { + return new URITemplate(expression); + } + this.expression = expression; + URITemplate._cache[expression] = this; + return this; + } + function Data(data) { + this.data = data; + this.cache = {}; + } + var p = URITemplate.prototype; + var operators = { + // Simple string expansion + "": { + prefix: "", + separator: ",", + named: false, + empty_name_separator: false, + encode: "encode" + }, + // Reserved character strings + "+": { + prefix: "", + separator: ",", + named: false, + empty_name_separator: false, + encode: "encodeReserved" + }, + // Fragment identifiers prefixed by '#' + "#": { + prefix: "#", + separator: ",", + named: false, + empty_name_separator: false, + encode: "encodeReserved" + }, + // Name labels or extensions prefixed by '.' + ".": { + prefix: ".", + separator: ".", + named: false, + empty_name_separator: false, + encode: "encode" + }, + // Path segments prefixed by '/' + "/": { + prefix: "/", + separator: "/", + named: false, + empty_name_separator: false, + encode: "encode" + }, + // Path parameter name or name=value pairs prefixed by ';' + ";": { + prefix: ";", + separator: ";", + named: true, + empty_name_separator: false, + encode: "encode" + }, + // Query component beginning with '?' and consisting + // of name=value pairs separated by '&'; an + "?": { + prefix: "?", + separator: "&", + named: true, + empty_name_separator: true, + encode: "encode" + }, + // Continuation of query-style &name=value pairs + // within a literal query component. + "&": { + prefix: "&", + separator: "&", + named: true, + empty_name_separator: true, + encode: "encode" + } + // The operator characters equals ("="), comma (","), exclamation ("!"), + // at sign ("@"), and pipe ("|") are reserved for future extensions. + }; + URITemplate._cache = {}; + URITemplate.EXPRESSION_PATTERN = /\{([^a-zA-Z0-9%_]?)([^\}]+)(\}|$)/g; + URITemplate.VARIABLE_PATTERN = /^([^*:.](?:\.?[^*:.])*)((\*)|:(\d+))?$/; + URITemplate.VARIABLE_NAME_PATTERN = /[^a-zA-Z0-9%_.]/; + URITemplate.LITERAL_PATTERN = /[<>{}"`^| \\]/; + URITemplate.expand = function(expression, data, opts) { + var options = operators[expression.operator]; + var type = options.named ? "Named" : "Unnamed"; + var variables = expression.variables; + var buffer = []; + var d, variable, i; + for (i = 0; variable = variables[i]; i++) { + d = data.get(variable.name); + if (d.type === 0 && opts && opts.strict) { + throw new Error('Missing expansion value for variable "' + variable.name + '"'); + } + if (!d.val.length) { + if (d.type) { + buffer.push(""); + } + continue; + } + if (d.type > 1 && variable.maxlength) { + throw new Error('Invalid expression: Prefix modifier not applicable to variable "' + variable.name + '"'); + } + buffer.push(URITemplate["expand" + type]( + d, + options, + variable.explode, + variable.explode && options.separator || ",", + variable.maxlength, + variable.name + )); + } + if (buffer.length) { + return options.prefix + buffer.join(options.separator); + } else { + return ""; + } + }; + URITemplate.expandNamed = function(d, options, explode, separator, length, name) { + var result = ""; + var encode = options.encode; + var empty_name_separator = options.empty_name_separator; + var _encode = !d[encode].length; + var _name = d.type === 2 ? "" : URI[encode](name); + var _value, i, l; + for (i = 0, l = d.val.length; i < l; i++) { + if (length) { + _value = URI[encode](d.val[i][1].substring(0, length)); + if (d.type === 2) { + _name = URI[encode](d.val[i][0].substring(0, length)); + } + } else if (_encode) { + _value = URI[encode](d.val[i][1]); + if (d.type === 2) { + _name = URI[encode](d.val[i][0]); + d[encode].push([_name, _value]); + } else { + d[encode].push([void 0, _value]); + } + } else { + _value = d[encode][i][1]; + if (d.type === 2) { + _name = d[encode][i][0]; + } + } + if (result) { + result += separator; + } + if (!explode) { + if (!i) { + result += URI[encode](name) + (empty_name_separator || _value ? "=" : ""); + } + if (d.type === 2) { + result += _name + ","; + } + result += _value; + } else { + result += _name + (empty_name_separator || _value ? "=" : "") + _value; + } + } + return result; + }; + URITemplate.expandUnnamed = function(d, options, explode, separator, length) { + var result = ""; + var encode = options.encode; + var empty_name_separator = options.empty_name_separator; + var _encode = !d[encode].length; + var _name, _value, i, l; + for (i = 0, l = d.val.length; i < l; i++) { + if (length) { + _value = URI[encode](d.val[i][1].substring(0, length)); + } else if (_encode) { + _value = URI[encode](d.val[i][1]); + d[encode].push([ + d.type === 2 ? URI[encode](d.val[i][0]) : void 0, + _value + ]); + } else { + _value = d[encode][i][1]; + } + if (result) { + result += separator; + } + if (d.type === 2) { + if (length) { + _name = URI[encode](d.val[i][0].substring(0, length)); + } else { + _name = d[encode][i][0]; + } + result += _name; + if (explode) { + result += empty_name_separator || _value ? "=" : ""; + } else { + result += ","; + } + } + result += _value; + } + return result; + }; + URITemplate.noConflict = function() { + if (root.URITemplate === URITemplate) { + root.URITemplate = _URITemplate; + } + return URITemplate; + }; + p.expand = function(data, opts) { + var result = ""; + if (!this.parts || !this.parts.length) { + this.parse(); + } + if (!(data instanceof Data)) { + data = new Data(data); + } + for (var i = 0, l = this.parts.length; i < l; i++) { + result += typeof this.parts[i] === "string" ? this.parts[i] : URITemplate.expand(this.parts[i], data, opts); + } + return result; + }; + p.parse = function() { + var expression = this.expression; + var ePattern = URITemplate.EXPRESSION_PATTERN; + var vPattern = URITemplate.VARIABLE_PATTERN; + var nPattern = URITemplate.VARIABLE_NAME_PATTERN; + var lPattern = URITemplate.LITERAL_PATTERN; + var parts = []; + var pos = 0; + var variables, eMatch, vMatch; + var checkLiteral = function(literal) { + if (literal.match(lPattern)) { + throw new Error('Invalid Literal "' + literal + '"'); + } + return literal; + }; + ePattern.lastIndex = 0; + while (true) { + eMatch = ePattern.exec(expression); + if (eMatch === null) { + parts.push(checkLiteral(expression.substring(pos))); + break; + } else { + parts.push(checkLiteral(expression.substring(pos, eMatch.index))); + pos = eMatch.index + eMatch[0].length; + } + if (!operators[eMatch[1]]) { + throw new Error('Unknown Operator "' + eMatch[1] + '" in "' + eMatch[0] + '"'); + } else if (!eMatch[3]) { + throw new Error('Unclosed Expression "' + eMatch[0] + '"'); + } + variables = eMatch[2].split(","); + for (var i = 0, l = variables.length; i < l; i++) { + vMatch = variables[i].match(vPattern); + if (vMatch === null) { + throw new Error('Invalid Variable "' + variables[i] + '" in "' + eMatch[0] + '"'); + } else if (vMatch[1].match(nPattern)) { + throw new Error('Invalid Variable Name "' + vMatch[1] + '" in "' + eMatch[0] + '"'); + } + variables[i] = { + name: vMatch[1], + explode: !!vMatch[3], + maxlength: vMatch[4] && parseInt(vMatch[4], 10) + }; + } + if (!variables.length) { + throw new Error('Expression Missing Variable(s) "' + eMatch[0] + '"'); + } + parts.push({ + expression: eMatch[0], + operator: eMatch[1], + variables + }); + } + if (!parts.length) { + parts.push(checkLiteral(expression)); + } + this.parts = parts; + return this; + }; + Data.prototype.get = function(key) { + var data = this.data; + var d = { + // type of data 0: undefined/null, 1: string, 2: object, 3: array + type: 0, + // original values (except undefined/null) + val: [], + // cache for encoded values (only for non-maxlength expansion) + encode: [], + encodeReserved: [] + }; + var i, l, value; + if (this.cache[key] !== void 0) { + return this.cache[key]; + } + this.cache[key] = d; + if (String(Object.prototype.toString.call(data)) === "[object Function]") { + value = data(key); + } else if (String(Object.prototype.toString.call(data[key])) === "[object Function]") { + value = data[key](key); + } else { + value = data[key]; + } + if (value === void 0 || value === null) { + return d; + } else if (String(Object.prototype.toString.call(value)) === "[object Array]") { + for (i = 0, l = value.length; i < l; i++) { + if (value[i] !== void 0 && value[i] !== null) { + d.val.push([void 0, String(value[i])]); + } + } + if (d.val.length) { + d.type = 3; + } + } else if (String(Object.prototype.toString.call(value)) === "[object Object]") { + for (i in value) { + if (hasOwn.call(value, i) && value[i] !== void 0 && value[i] !== null) { + d.val.push([i, String(value[i])]); + } + } + if (d.val.length) { + d.type = 2; + } + } else { + d.type = 1; + d.val.push([void 0, String(value)]); + } + return d; + }; + URI.expand = function(expression, data) { + var template = new URITemplate(expression); + var expansion = template.expand(data); + return new URI(expansion); + }; + return URITemplate; + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/horizon_axios_client.js +var require_horizon_axios_client = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/horizon_axios_client.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = exports2.SERVER_TIME_MAP = exports2.AxiosClient = void 0; + exports2.getCurrentServerTime = getCurrentServerTime; + exports2.version = void 0; + var _urijs = _interopRequireDefault(require_URI()); + var _httpClient = require_http_client(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + var version = exports2.version = "14.2.0"; + var SERVER_TIME_MAP = exports2.SERVER_TIME_MAP = {}; + var AxiosClient = exports2.AxiosClient = (0, _httpClient.create)({ + headers: { + "X-Client-Name": "js-stellar-sdk", + "X-Client-Version": version + } + }); + function toSeconds(ms) { + return Math.floor(ms / 1e3); + } + AxiosClient.interceptors.response.use(function(response) { + var hostname = (0, _urijs.default)(response.config.url).hostname(); + var serverTime = 0; + if (response.headers instanceof Headers) { + var dateHeader = response.headers.get("date"); + if (dateHeader) { + serverTime = toSeconds(Date.parse(dateHeader)); + } + } else if (_typeof(response.headers) === "object" && "date" in response.headers) { + var headers = response.headers; + if (typeof headers.date === "string") { + serverTime = toSeconds(Date.parse(headers.date)); + } + } + var localTimeRecorded = toSeconds((/* @__PURE__ */ new Date()).getTime()); + if (!Number.isNaN(serverTime)) { + SERVER_TIME_MAP[hostname] = { + serverTime, + localTimeRecorded + }; + } + return response; + }); + var _default = exports2.default = AxiosClient; + function getCurrentServerTime(hostname) { + var entry = SERVER_TIME_MAP[hostname]; + if (!entry || !entry.localTimeRecorded || !entry.serverTime) { + return null; + } + var serverTime = entry.serverTime, localTimeRecorded = entry.localTimeRecorded; + var currentTime = toSeconds((/* @__PURE__ */ new Date()).getTime()); + if (currentTime - localTimeRecorded > 60 * 5) { + return null; + } + return currentTime - localTimeRecorded + serverTime; + } + } +}); + +// node_modules/eventsource/lib/eventsource.js +var require_eventsource = __commonJS({ + "node_modules/eventsource/lib/eventsource.js"(exports2, module2) { + var parse = __require("url").parse; + var events = __require("events"); + var https = __require("https"); + var http2 = __require("http"); + var util = __require("util"); + var httpsOptions = [ + "pfx", + "key", + "passphrase", + "cert", + "ca", + "ciphers", + "rejectUnauthorized", + "secureProtocol", + "servername", + "checkServerIdentity" + ]; + var bom = [239, 187, 191]; + var colon = 58; + var space = 32; + var lineFeed = 10; + var carriageReturn = 13; + var maxBufferAheadAllocation = 1024 * 256; + var reUnsafeHeader = /^(cookie|authorization)$/i; + function hasBom(buf) { + return bom.every(function(charCode, index) { + return buf[index] === charCode; + }); + } + function EventSource(url, eventSourceInitDict) { + var readyState = EventSource.CONNECTING; + var headers = eventSourceInitDict && eventSourceInitDict.headers; + var hasNewOrigin = false; + Object.defineProperty(this, "readyState", { + get: function() { + return readyState; + } + }); + Object.defineProperty(this, "url", { + get: function() { + return url; + } + }); + var self2 = this; + self2.reconnectInterval = 1e3; + self2.connectionInProgress = false; + function onConnectionClosed(message) { + if (readyState === EventSource.CLOSED) return; + readyState = EventSource.CONNECTING; + _emit("error", new Event("error", { message })); + if (reconnectUrl) { + url = reconnectUrl; + reconnectUrl = null; + hasNewOrigin = false; + } + setTimeout(function() { + if (readyState !== EventSource.CONNECTING || self2.connectionInProgress) { + return; + } + self2.connectionInProgress = true; + connect(); + }, self2.reconnectInterval); + } + var req; + var lastEventId = ""; + if (headers && headers["Last-Event-ID"]) { + lastEventId = headers["Last-Event-ID"]; + delete headers["Last-Event-ID"]; + } + var discardTrailingNewline = false; + var data = ""; + var eventName = ""; + var reconnectUrl = null; + function connect() { + var options = parse(url); + var isSecure = options.protocol === "https:"; + options.headers = { "Cache-Control": "no-cache", "Accept": "text/event-stream" }; + if (lastEventId) options.headers["Last-Event-ID"] = lastEventId; + if (headers) { + var reqHeaders = hasNewOrigin ? removeUnsafeHeaders(headers) : headers; + for (var i in reqHeaders) { + var header = reqHeaders[i]; + if (header) { + options.headers[i] = header; + } + } + } + options.rejectUnauthorized = !(eventSourceInitDict && !eventSourceInitDict.rejectUnauthorized); + if (eventSourceInitDict && eventSourceInitDict.createConnection !== void 0) { + options.createConnection = eventSourceInitDict.createConnection; + } + var useProxy = eventSourceInitDict && eventSourceInitDict.proxy; + if (useProxy) { + var proxy = parse(eventSourceInitDict.proxy); + isSecure = proxy.protocol === "https:"; + options.protocol = isSecure ? "https:" : "http:"; + options.path = url; + options.headers.Host = options.host; + options.hostname = proxy.hostname; + options.host = proxy.host; + options.port = proxy.port; + } + if (eventSourceInitDict && eventSourceInitDict.https) { + for (var optName in eventSourceInitDict.https) { + if (httpsOptions.indexOf(optName) === -1) { + continue; + } + var option = eventSourceInitDict.https[optName]; + if (option !== void 0) { + options[optName] = option; + } + } + } + if (eventSourceInitDict && eventSourceInitDict.withCredentials !== void 0) { + options.withCredentials = eventSourceInitDict.withCredentials; + } + req = (isSecure ? https : http2).request(options, function(res) { + self2.connectionInProgress = false; + if (res.statusCode === 500 || res.statusCode === 502 || res.statusCode === 503 || res.statusCode === 504) { + _emit("error", new Event("error", { status: res.statusCode, message: res.statusMessage })); + onConnectionClosed(); + return; + } + if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307) { + var location2 = res.headers.location; + if (!location2) { + _emit("error", new Event("error", { status: res.statusCode, message: res.statusMessage })); + return; + } + var prevOrigin = new URL(url).origin; + var nextOrigin = new URL(location2).origin; + hasNewOrigin = prevOrigin !== nextOrigin; + if (res.statusCode === 307) reconnectUrl = url; + url = location2; + process.nextTick(connect); + return; + } + if (res.statusCode !== 200) { + _emit("error", new Event("error", { status: res.statusCode, message: res.statusMessage })); + return self2.close(); + } + readyState = EventSource.OPEN; + res.on("close", function() { + res.removeAllListeners("close"); + res.removeAllListeners("end"); + onConnectionClosed(); + }); + res.on("end", function() { + res.removeAllListeners("close"); + res.removeAllListeners("end"); + onConnectionClosed(); + }); + _emit("open", new Event("open")); + var buf; + var newBuffer; + var startingPos = 0; + var startingFieldLength = -1; + var newBufferSize = 0; + var bytesUsed = 0; + res.on("data", function(chunk) { + if (!buf) { + buf = chunk; + if (hasBom(buf)) { + buf = buf.slice(bom.length); + } + bytesUsed = buf.length; + } else { + if (chunk.length > buf.length - bytesUsed) { + newBufferSize = buf.length * 2 + chunk.length; + if (newBufferSize > maxBufferAheadAllocation) { + newBufferSize = buf.length + chunk.length + maxBufferAheadAllocation; + } + newBuffer = Buffer.alloc(newBufferSize); + buf.copy(newBuffer, 0, 0, bytesUsed); + buf = newBuffer; + } + chunk.copy(buf, bytesUsed); + bytesUsed += chunk.length; + } + var pos = 0; + var length = bytesUsed; + while (pos < length) { + if (discardTrailingNewline) { + if (buf[pos] === lineFeed) { + ++pos; + } + discardTrailingNewline = false; + } + var lineLength = -1; + var fieldLength = startingFieldLength; + var c; + for (var i2 = startingPos; lineLength < 0 && i2 < length; ++i2) { + c = buf[i2]; + if (c === colon) { + if (fieldLength < 0) { + fieldLength = i2 - pos; + } + } else if (c === carriageReturn) { + discardTrailingNewline = true; + lineLength = i2 - pos; + } else if (c === lineFeed) { + lineLength = i2 - pos; + } + } + if (lineLength < 0) { + startingPos = length - pos; + startingFieldLength = fieldLength; + break; + } else { + startingPos = 0; + startingFieldLength = -1; + } + parseEventStreamLine(buf, pos, fieldLength, lineLength); + pos += lineLength + 1; + } + if (pos === length) { + buf = void 0; + bytesUsed = 0; + } else if (pos > 0) { + buf = buf.slice(pos, bytesUsed); + bytesUsed = buf.length; + } + }); + }); + req.on("error", function(err2) { + self2.connectionInProgress = false; + onConnectionClosed(err2.message); + }); + if (req.setNoDelay) req.setNoDelay(true); + req.end(); + } + connect(); + function _emit() { + if (self2.listeners(arguments[0]).length > 0) { + self2.emit.apply(self2, arguments); + } + } + this._close = function() { + if (readyState === EventSource.CLOSED) return; + readyState = EventSource.CLOSED; + if (req.abort) req.abort(); + if (req.xhr && req.xhr.abort) req.xhr.abort(); + }; + function parseEventStreamLine(buf, pos, fieldLength, lineLength) { + if (lineLength === 0) { + if (data.length > 0) { + var type = eventName || "message"; + _emit(type, new MessageEvent(type, { + data: data.slice(0, -1), + // remove trailing newline + lastEventId, + origin: new URL(url).origin + })); + data = ""; + } + eventName = void 0; + } else if (fieldLength > 0) { + var noValue = fieldLength < 0; + var step = 0; + var field = buf.slice(pos, pos + (noValue ? lineLength : fieldLength)).toString(); + if (noValue) { + step = lineLength; + } else if (buf[pos + fieldLength + 1] !== space) { + step = fieldLength + 1; + } else { + step = fieldLength + 2; + } + pos += step; + var valueLength = lineLength - step; + var value = buf.slice(pos, pos + valueLength).toString(); + if (field === "data") { + data += value + "\n"; + } else if (field === "event") { + eventName = value; + } else if (field === "id") { + lastEventId = value; + } else if (field === "retry") { + var retry = parseInt(value, 10); + if (!Number.isNaN(retry)) { + self2.reconnectInterval = retry; + } + } + } + } + } + module2.exports = EventSource; + util.inherits(EventSource, events.EventEmitter); + EventSource.prototype.constructor = EventSource; + ["open", "error", "message"].forEach(function(method) { + Object.defineProperty(EventSource.prototype, "on" + method, { + /** + * Returns the current listener + * + * @return {Mixed} the set function or undefined + * @api private + */ + get: function get() { + var listener = this.listeners(method)[0]; + return listener ? listener._listener ? listener._listener : listener : void 0; + }, + /** + * Start listening for events + * + * @param {Function} listener the listener + * @return {Mixed} the set function or undefined + * @api private + */ + set: function set(listener) { + this.removeAllListeners(method); + this.addEventListener(method, listener); + } + }); + }); + Object.defineProperty(EventSource, "CONNECTING", { enumerable: true, value: 0 }); + Object.defineProperty(EventSource, "OPEN", { enumerable: true, value: 1 }); + Object.defineProperty(EventSource, "CLOSED", { enumerable: true, value: 2 }); + EventSource.prototype.CONNECTING = 0; + EventSource.prototype.OPEN = 1; + EventSource.prototype.CLOSED = 2; + EventSource.prototype.close = function() { + this._close(); + }; + EventSource.prototype.addEventListener = function addEventListener(type, listener) { + if (typeof listener === "function") { + listener._listener = listener; + this.on(type, listener); + } + }; + EventSource.prototype.dispatchEvent = function dispatchEvent(event) { + if (!event.type) { + throw new Error("UNSPECIFIED_EVENT_TYPE_ERR"); + } + this.emit(event.type, event.detail); + }; + EventSource.prototype.removeEventListener = function removeEventListener(type, listener) { + if (typeof listener === "function") { + listener._listener = void 0; + this.removeListener(type, listener); + } + }; + function Event(type, optionalProperties) { + Object.defineProperty(this, "type", { writable: false, value: type, enumerable: true }); + if (optionalProperties) { + for (var f in optionalProperties) { + if (optionalProperties.hasOwnProperty(f)) { + Object.defineProperty(this, f, { writable: false, value: optionalProperties[f], enumerable: true }); + } + } + } + } + function MessageEvent(type, eventInitDict) { + Object.defineProperty(this, "type", { writable: false, value: type, enumerable: true }); + for (var f in eventInitDict) { + if (eventInitDict.hasOwnProperty(f)) { + Object.defineProperty(this, f, { writable: false, value: eventInitDict[f], enumerable: true }); + } + } + } + function removeUnsafeHeaders(headers) { + var safe = {}; + for (var key in headers) { + if (reUnsafeHeader.test(key)) { + continue; + } + safe[key] = headers[key]; + } + return safe; + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js +var require_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CallBuilder = void 0; + var _urijs = _interopRequireDefault(require_URI()); + var _URITemplate = _interopRequireDefault(require_URITemplate()); + var _errors = require_errors11(); + var _horizon_axios_client = require_horizon_axios_client(); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var JOINABLE = ["transaction"]; + var anyGlobal = global; + var EventSource; + if (true) { + EventSource = (_ref = (_anyGlobal$EventSourc = anyGlobal.EventSource) !== null && _anyGlobal$EventSourc !== void 0 ? _anyGlobal$EventSourc : (_anyGlobal$window = anyGlobal.window) === null || _anyGlobal$window === void 0 ? void 0 : _anyGlobal$window.EventSource) !== null && _ref !== void 0 ? _ref : require_eventsource(); + } + var _ref; + var _anyGlobal$EventSourc; + var _anyGlobal$window; + var CallBuilder = exports2.CallBuilder = function() { + function CallBuilder2(serverUrl) { + var neighborRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ""; + _classCallCheck(this, CallBuilder2); + this.url = serverUrl.clone(); + this.filter = []; + this.originalSegments = this.url.segment() || []; + this.neighborRoot = neighborRoot; + } + return _createClass(CallBuilder2, [{ + key: "call", + value: function call() { + var _this = this; + this.checkFilter(); + return this._sendNormalRequest(this.url).then(function(r) { + return _this._parseResponse(r); + }); + } + }, { + key: "stream", + value: function stream() { + var _this2 = this; + var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (EventSource === void 0) { + throw new Error("Streaming requires eventsource to be enabled. If you need this functionality, compile with USE_EVENTSOURCE=true."); + } + this.checkFilter(); + this.url.setQuery("X-Client-Name", "js-stellar-sdk"); + this.url.setQuery("X-Client-Version", _horizon_axios_client.version); + var es; + var timeout; + var createTimeout = function createTimeout2() { + timeout = setTimeout(function() { + var _es; + (_es = es) === null || _es === void 0 || _es.close(); + es = _createEventSource(); + }, options.reconnectTimeout || 15 * 1e3); + }; + var _createEventSource = function createEventSource() { + try { + es = new EventSource(_this2.url.toString()); + } catch (err2) { + if (options.onerror) { + options.onerror(err2); + } + } + createTimeout(); + if (!es) { + return es; + } + var closed = false; + var onClose = function onClose2() { + if (closed) { + return; + } + clearTimeout(timeout); + es.close(); + _createEventSource(); + closed = true; + }; + var onMessage = function onMessage2(message) { + if (message.type === "close") { + onClose(); + return; + } + var result = message.data ? _this2._parseRecord(JSON.parse(message.data)) : message; + if (result.paging_token) { + _this2.url.setQuery("cursor", result.paging_token); + } + clearTimeout(timeout); + createTimeout(); + if (typeof options.onmessage !== "undefined") { + options.onmessage(result); + } + }; + var onError = function onError2(error) { + if (options.onerror) { + options.onerror(error); + } + }; + if (es.addEventListener) { + es.addEventListener("message", onMessage.bind(_this2)); + es.addEventListener("error", onError.bind(_this2)); + es.addEventListener("close", onClose.bind(_this2)); + } else { + es.onmessage = onMessage.bind(_this2); + es.onerror = onError.bind(_this2); + } + return es; + }; + _createEventSource(); + return function() { + var _es2; + clearTimeout(timeout); + (_es2 = es) === null || _es2 === void 0 || _es2.close(); + }; + } + }, { + key: "cursor", + value: function cursor(_cursor) { + this.url.setQuery("cursor", _cursor); + return this; + } + }, { + key: "limit", + value: function limit(recordsNumber) { + this.url.setQuery("limit", recordsNumber.toString()); + return this; + } + }, { + key: "order", + value: function order(direction) { + this.url.setQuery("order", direction); + return this; + } + }, { + key: "join", + value: function join(include) { + this.url.setQuery("join", include); + return this; + } + }, { + key: "forEndpoint", + value: function forEndpoint(endpoint, param) { + if (this.neighborRoot === "") { + throw new Error("Invalid usage: neighborRoot not set in constructor"); + } + this.filter.push([endpoint, param, this.neighborRoot]); + return this; + } + }, { + key: "checkFilter", + value: function checkFilter() { + if (this.filter.length >= 2) { + throw new _errors.BadRequestError("Too many filters specified", this.filter); + } + if (this.filter.length === 1) { + var newSegment = this.originalSegments.concat(this.filter[0]); + this.url.segment(newSegment); + } + } + }, { + key: "_requestFnForLink", + value: function _requestFnForLink(link) { + var _this3 = this; + return _asyncToGenerator(_regenerator().m(function _callee() { + var opts, uri, template, r, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + opts = _args.length > 0 && _args[0] !== void 0 ? _args[0] : {}; + if (link.templated) { + template = (0, _URITemplate.default)(link.href); + uri = (0, _urijs.default)(template.expand(opts)); + } else { + uri = (0, _urijs.default)(link.href); + } + _context.n = 1; + return _this3._sendNormalRequest(uri); + case 1: + r = _context.v; + return _context.a(2, _this3._parseResponse(r)); + } + }, _callee); + })); + } + }, { + key: "_parseRecord", + value: function _parseRecord(json) { + var _this4 = this; + if (!json._links) { + return json; + } + Object.keys(json._links).forEach(function(key) { + var n = json._links[key]; + var included = false; + if (typeof json[key] !== "undefined") { + json["".concat(key, "_attr")] = json[key]; + included = true; + } + if (included && JOINABLE.indexOf(key) >= 0) { + var record = _this4._parseRecord(json[key]); + json[key] = _asyncToGenerator(_regenerator().m(function _callee2() { + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + return _context2.a(2, record); + } + }, _callee2); + })); + } else { + json[key] = _this4._requestFnForLink(n); + } + }); + return json; + } + }, { + key: "_sendNormalRequest", + value: function() { + var _sendNormalRequest2 = _asyncToGenerator(_regenerator().m(function _callee3(initialUrl) { + var url; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + url = initialUrl; + if (url.authority() === "") { + url = url.authority(this.url.authority()); + } + if (url.protocol() === "") { + url = url.protocol(this.url.protocol()); + } + return _context3.a(2, _horizon_axios_client.AxiosClient.get(url.toString()).then(function(response) { + return response.data; + }).catch(this._handleNetworkError)); + } + }, _callee3, this); + })); + function _sendNormalRequest(_x) { + return _sendNormalRequest2.apply(this, arguments); + } + return _sendNormalRequest; + }() + }, { + key: "_parseResponse", + value: function _parseResponse(json) { + if (json._embedded && json._embedded.records) { + return this._toCollectionPage(json); + } + return this._parseRecord(json); + } + }, { + key: "_toCollectionPage", + value: function _toCollectionPage(json) { + var _this5 = this; + for (var i = 0; i < json._embedded.records.length; i += 1) { + json._embedded.records[i] = this._parseRecord(json._embedded.records[i]); + } + return { + records: json._embedded.records, + next: function() { + var _next2 = _asyncToGenerator(_regenerator().m(function _callee4() { + var r; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.n) { + case 0: + _context4.n = 1; + return _this5._sendNormalRequest((0, _urijs.default)(json._links.next.href)); + case 1: + r = _context4.v; + return _context4.a(2, _this5._toCollectionPage(r)); + } + }, _callee4); + })); + function next() { + return _next2.apply(this, arguments); + } + return next; + }(), + prev: function() { + var _prev = _asyncToGenerator(_regenerator().m(function _callee5() { + var r; + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + _context5.n = 1; + return _this5._sendNormalRequest((0, _urijs.default)(json._links.prev.href)); + case 1: + r = _context5.v; + return _context5.a(2, _this5._toCollectionPage(r)); + } + }, _callee5); + })); + function prev() { + return _prev.apply(this, arguments); + } + return prev; + }() + }; + } + }, { + key: "_handleNetworkError", + value: function() { + var _handleNetworkError2 = _asyncToGenerator(_regenerator().m(function _callee6(error) { + var _error$response$statu, _error$response$statu2; + var _t; + return _regenerator().w(function(_context6) { + while (1) switch (_context6.n) { + case 0: + if (!(error.response && error.response.status)) { + _context6.n = 4; + break; + } + _t = error.response.status; + _context6.n = _t === 404 ? 1 : 2; + break; + case 1: + return _context6.a(2, Promise.reject(new _errors.NotFoundError((_error$response$statu = error.response.statusText) !== null && _error$response$statu !== void 0 ? _error$response$statu : "Not Found", error.response.data))); + case 2: + return _context6.a(2, Promise.reject(new _errors.NetworkError((_error$response$statu2 = error.response.statusText) !== null && _error$response$statu2 !== void 0 ? _error$response$statu2 : "Unknown", error.response.data))); + case 3: + _context6.n = 5; + break; + case 4: + return _context6.a(2, Promise.reject(new Error(error.message))); + case 5: + return _context6.a(2); + } + }, _callee6); + })); + function _handleNetworkError(_x2) { + return _handleNetworkError2.apply(this, arguments); + } + return _handleNetworkError; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/account_call_builder.js +var require_account_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/account_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AccountCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var AccountCallBuilder = exports2.AccountCallBuilder = function(_CallBuilder) { + function AccountCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, AccountCallBuilder2); + _this = _callSuper(this, AccountCallBuilder2, [serverUrl]); + _this.url.segment("accounts"); + return _this; + } + _inherits(AccountCallBuilder2, _CallBuilder); + return _createClass(AccountCallBuilder2, [{ + key: "accountId", + value: function accountId(id) { + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([id]); + return builder; + } + }, { + key: "forSigner", + value: function forSigner(id) { + this.url.setQuery("signer", id); + return this; + } + }, { + key: "forAsset", + value: function forAsset(asset) { + this.url.setQuery("asset", "".concat(asset)); + return this; + } + }, { + key: "sponsor", + value: function sponsor(id) { + this.url.setQuery("sponsor", id); + return this; + } + }, { + key: "forLiquidityPool", + value: function forLiquidityPool(id) { + this.url.setQuery("liquidity_pool", id); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/assets_call_builder.js +var require_assets_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/assets_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AssetsCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var AssetsCallBuilder = exports2.AssetsCallBuilder = function(_CallBuilder) { + function AssetsCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, AssetsCallBuilder2); + _this = _callSuper(this, AssetsCallBuilder2, [serverUrl]); + _this.url.segment("assets"); + return _this; + } + _inherits(AssetsCallBuilder2, _CallBuilder); + return _createClass(AssetsCallBuilder2, [{ + key: "forCode", + value: function forCode(value) { + this.url.setQuery("asset_code", value); + return this; + } + }, { + key: "forIssuer", + value: function forIssuer(value) { + this.url.setQuery("asset_issuer", value); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/claimable_balances_call_builder.js +var require_claimable_balances_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/claimable_balances_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ClaimableBalanceCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var ClaimableBalanceCallBuilder = exports2.ClaimableBalanceCallBuilder = function(_CallBuilder) { + function ClaimableBalanceCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, ClaimableBalanceCallBuilder2); + _this = _callSuper(this, ClaimableBalanceCallBuilder2, [serverUrl]); + _this.url.segment("claimable_balances"); + return _this; + } + _inherits(ClaimableBalanceCallBuilder2, _CallBuilder); + return _createClass(ClaimableBalanceCallBuilder2, [{ + key: "claimableBalance", + value: function claimableBalance(claimableBalanceId) { + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([claimableBalanceId]); + return builder; + } + }, { + key: "sponsor", + value: function sponsor(_sponsor) { + this.url.setQuery("sponsor", _sponsor); + return this; + } + }, { + key: "claimant", + value: function claimant(_claimant) { + this.url.setQuery("claimant", _claimant); + return this; + } + }, { + key: "asset", + value: function asset(_asset) { + this.url.setQuery("asset", _asset.toString()); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/effect_call_builder.js +var require_effect_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/effect_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EffectCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var EffectCallBuilder = exports2.EffectCallBuilder = function(_CallBuilder) { + function EffectCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, EffectCallBuilder2); + _this = _callSuper(this, EffectCallBuilder2, [serverUrl, "effects"]); + _this.url.segment("effects"); + return _this; + } + _inherits(EffectCallBuilder2, _CallBuilder); + return _createClass(EffectCallBuilder2, [{ + key: "forAccount", + value: function forAccount(accountId) { + return this.forEndpoint("accounts", accountId); + } + }, { + key: "forLedger", + value: function forLedger(sequence) { + return this.forEndpoint("ledgers", sequence.toString()); + } + }, { + key: "forTransaction", + value: function forTransaction(transactionId) { + return this.forEndpoint("transactions", transactionId); + } + }, { + key: "forOperation", + value: function forOperation(operationId) { + return this.forEndpoint("operations", operationId); + } + }, { + key: "forLiquidityPool", + value: function forLiquidityPool(poolId) { + return this.forEndpoint("liquidity_pools", poolId); + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/friendbot_builder.js +var require_friendbot_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/friendbot_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.FriendbotBuilder = void 0; + var _call_builder = require_call_builder(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var FriendbotBuilder = exports2.FriendbotBuilder = function(_CallBuilder) { + function FriendbotBuilder2(serverUrl, address) { + var _this; + _classCallCheck(this, FriendbotBuilder2); + _this = _callSuper(this, FriendbotBuilder2, [serverUrl]); + _this.url.segment("friendbot"); + _this.url.setQuery("addr", address); + return _this; + } + _inherits(FriendbotBuilder2, _CallBuilder); + return _createClass(FriendbotBuilder2); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/ledger_call_builder.js +var require_ledger_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/ledger_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LedgerCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var LedgerCallBuilder = exports2.LedgerCallBuilder = function(_CallBuilder) { + function LedgerCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, LedgerCallBuilder2); + _this = _callSuper(this, LedgerCallBuilder2, [serverUrl]); + _this.url.segment("ledgers"); + return _this; + } + _inherits(LedgerCallBuilder2, _CallBuilder); + return _createClass(LedgerCallBuilder2, [{ + key: "ledger", + value: function ledger(sequence) { + this.filter.push(["ledgers", sequence.toString()]); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/liquidity_pool_call_builder.js +var require_liquidity_pool_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/liquidity_pool_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.LiquidityPoolCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var LiquidityPoolCallBuilder = exports2.LiquidityPoolCallBuilder = function(_CallBuilder) { + function LiquidityPoolCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, LiquidityPoolCallBuilder2); + _this = _callSuper(this, LiquidityPoolCallBuilder2, [serverUrl]); + _this.url.segment("liquidity_pools"); + return _this; + } + _inherits(LiquidityPoolCallBuilder2, _CallBuilder); + return _createClass(LiquidityPoolCallBuilder2, [{ + key: "forAssets", + value: function forAssets() { + for (var _len = arguments.length, assets = new Array(_len), _key = 0; _key < _len; _key++) { + assets[_key] = arguments[_key]; + } + var assetList = assets.map(function(asset) { + return asset.toString(); + }).join(","); + this.url.setQuery("reserves", assetList); + return this; + } + }, { + key: "forAccount", + value: function forAccount(id) { + this.url.setQuery("account", id); + return this; + } + }, { + key: "liquidityPoolId", + value: function liquidityPoolId(id) { + if (!id.match(/[a-fA-F0-9]{64}/)) { + throw new TypeError("".concat(id, " does not look like a liquidity pool ID")); + } + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([id.toLowerCase()]); + return builder; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/offer_call_builder.js +var require_offer_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/offer_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.OfferCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var OfferCallBuilder = exports2.OfferCallBuilder = function(_CallBuilder) { + function OfferCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, OfferCallBuilder2); + _this = _callSuper(this, OfferCallBuilder2, [serverUrl, "offers"]); + _this.url.segment("offers"); + return _this; + } + _inherits(OfferCallBuilder2, _CallBuilder); + return _createClass(OfferCallBuilder2, [{ + key: "offer", + value: function offer(offerId) { + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([offerId]); + return builder; + } + }, { + key: "forAccount", + value: function forAccount(id) { + return this.forEndpoint("accounts", id); + } + }, { + key: "buying", + value: function buying(asset) { + if (!asset.isNative()) { + this.url.setQuery("buying_asset_type", asset.getAssetType()); + this.url.setQuery("buying_asset_code", asset.getCode()); + this.url.setQuery("buying_asset_issuer", asset.getIssuer()); + } else { + this.url.setQuery("buying_asset_type", "native"); + } + return this; + } + }, { + key: "selling", + value: function selling(asset) { + if (!asset.isNative()) { + this.url.setQuery("selling_asset_type", asset.getAssetType()); + this.url.setQuery("selling_asset_code", asset.getCode()); + this.url.setQuery("selling_asset_issuer", asset.getIssuer()); + } else { + this.url.setQuery("selling_asset_type", "native"); + } + return this; + } + }, { + key: "sponsor", + value: function sponsor(id) { + this.url.setQuery("sponsor", id); + return this; + } + }, { + key: "seller", + value: function seller(_seller) { + this.url.setQuery("seller", _seller); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/operation_call_builder.js +var require_operation_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/operation_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.OperationCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var OperationCallBuilder = exports2.OperationCallBuilder = function(_CallBuilder) { + function OperationCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, OperationCallBuilder2); + _this = _callSuper(this, OperationCallBuilder2, [serverUrl, "operations"]); + _this.url.segment("operations"); + return _this; + } + _inherits(OperationCallBuilder2, _CallBuilder); + return _createClass(OperationCallBuilder2, [{ + key: "operation", + value: function operation(operationId) { + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([operationId]); + return builder; + } + }, { + key: "forAccount", + value: function forAccount(accountId) { + return this.forEndpoint("accounts", accountId); + } + }, { + key: "forClaimableBalance", + value: function forClaimableBalance(claimableBalanceId) { + return this.forEndpoint("claimable_balances", claimableBalanceId); + } + }, { + key: "forLedger", + value: function forLedger(sequence) { + return this.forEndpoint("ledgers", sequence.toString()); + } + }, { + key: "forTransaction", + value: function forTransaction(transactionId) { + return this.forEndpoint("transactions", transactionId); + } + }, { + key: "forLiquidityPool", + value: function forLiquidityPool(poolId) { + return this.forEndpoint("liquidity_pools", poolId); + } + }, { + key: "includeFailed", + value: function includeFailed(value) { + this.url.setQuery("include_failed", value.toString()); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/orderbook_call_builder.js +var require_orderbook_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/orderbook_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.OrderbookCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var OrderbookCallBuilder = exports2.OrderbookCallBuilder = function(_CallBuilder) { + function OrderbookCallBuilder2(serverUrl, selling, buying) { + var _this; + _classCallCheck(this, OrderbookCallBuilder2); + _this = _callSuper(this, OrderbookCallBuilder2, [serverUrl]); + _this.url.segment("order_book"); + if (!selling.isNative()) { + _this.url.setQuery("selling_asset_type", selling.getAssetType()); + _this.url.setQuery("selling_asset_code", selling.getCode()); + _this.url.setQuery("selling_asset_issuer", selling.getIssuer()); + } else { + _this.url.setQuery("selling_asset_type", "native"); + } + if (!buying.isNative()) { + _this.url.setQuery("buying_asset_type", buying.getAssetType()); + _this.url.setQuery("buying_asset_code", buying.getCode()); + _this.url.setQuery("buying_asset_issuer", buying.getIssuer()); + } else { + _this.url.setQuery("buying_asset_type", "native"); + } + return _this; + } + _inherits(OrderbookCallBuilder2, _CallBuilder); + return _createClass(OrderbookCallBuilder2); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/payment_call_builder.js +var require_payment_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/payment_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PaymentCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var PaymentCallBuilder = exports2.PaymentCallBuilder = function(_CallBuilder) { + function PaymentCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, PaymentCallBuilder2); + _this = _callSuper(this, PaymentCallBuilder2, [serverUrl, "payments"]); + _this.url.segment("payments"); + return _this; + } + _inherits(PaymentCallBuilder2, _CallBuilder); + return _createClass(PaymentCallBuilder2, [{ + key: "forAccount", + value: function forAccount(accountId) { + return this.forEndpoint("accounts", accountId); + } + }, { + key: "forLedger", + value: function forLedger(sequence) { + return this.forEndpoint("ledgers", sequence.toString()); + } + }, { + key: "forTransaction", + value: function forTransaction(transactionId) { + return this.forEndpoint("transactions", transactionId); + } + }, { + key: "includeFailed", + value: function includeFailed(value) { + this.url.setQuery("include_failed", value.toString()); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/strict_receive_path_call_builder.js +var require_strict_receive_path_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/strict_receive_path_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StrictReceivePathCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var StrictReceivePathCallBuilder = exports2.StrictReceivePathCallBuilder = function(_CallBuilder) { + function StrictReceivePathCallBuilder2(serverUrl, source, destinationAsset, destinationAmount) { + var _this; + _classCallCheck(this, StrictReceivePathCallBuilder2); + _this = _callSuper(this, StrictReceivePathCallBuilder2, [serverUrl]); + _this.url.segment("paths/strict-receive"); + if (typeof source === "string") { + _this.url.setQuery("source_account", source); + } else { + var assets = source.map(function(asset) { + if (asset.isNative()) { + return "native"; + } + return "".concat(asset.getCode(), ":").concat(asset.getIssuer()); + }).join(","); + _this.url.setQuery("source_assets", assets); + } + _this.url.setQuery("destination_amount", destinationAmount); + if (!destinationAsset.isNative()) { + _this.url.setQuery("destination_asset_type", destinationAsset.getAssetType()); + _this.url.setQuery("destination_asset_code", destinationAsset.getCode()); + _this.url.setQuery("destination_asset_issuer", destinationAsset.getIssuer()); + } else { + _this.url.setQuery("destination_asset_type", "native"); + } + return _this; + } + _inherits(StrictReceivePathCallBuilder2, _CallBuilder); + return _createClass(StrictReceivePathCallBuilder2); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/strict_send_path_call_builder.js +var require_strict_send_path_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/strict_send_path_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StrictSendPathCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var StrictSendPathCallBuilder = exports2.StrictSendPathCallBuilder = function(_CallBuilder) { + function StrictSendPathCallBuilder2(serverUrl, sourceAsset, sourceAmount, destination) { + var _this; + _classCallCheck(this, StrictSendPathCallBuilder2); + _this = _callSuper(this, StrictSendPathCallBuilder2, [serverUrl]); + _this.url.segment("paths/strict-send"); + if (sourceAsset.isNative()) { + _this.url.setQuery("source_asset_type", "native"); + } else { + _this.url.setQuery("source_asset_type", sourceAsset.getAssetType()); + _this.url.setQuery("source_asset_code", sourceAsset.getCode()); + _this.url.setQuery("source_asset_issuer", sourceAsset.getIssuer()); + } + _this.url.setQuery("source_amount", sourceAmount); + if (typeof destination === "string") { + _this.url.setQuery("destination_account", destination); + } else { + var assets = destination.map(function(asset) { + if (asset.isNative()) { + return "native"; + } + return "".concat(asset.getCode(), ":").concat(asset.getIssuer()); + }).join(","); + _this.url.setQuery("destination_assets", assets); + } + return _this; + } + _inherits(StrictSendPathCallBuilder2, _CallBuilder); + return _createClass(StrictSendPathCallBuilder2); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/trade_aggregation_call_builder.js +var require_trade_aggregation_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/trade_aggregation_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TradeAggregationCallBuilder = void 0; + var _call_builder = require_call_builder(); + var _errors = require_errors11(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var allowedResolutions = [6e4, 3e5, 9e5, 36e5, 864e5, 6048e5]; + var TradeAggregationCallBuilder = exports2.TradeAggregationCallBuilder = function(_CallBuilder) { + function TradeAggregationCallBuilder2(serverUrl, base, counter, start_time, end_time, resolution, offset) { + var _this; + _classCallCheck(this, TradeAggregationCallBuilder2); + _this = _callSuper(this, TradeAggregationCallBuilder2, [serverUrl]); + _this.url.segment("trade_aggregations"); + if (!base.isNative()) { + _this.url.setQuery("base_asset_type", base.getAssetType()); + _this.url.setQuery("base_asset_code", base.getCode()); + _this.url.setQuery("base_asset_issuer", base.getIssuer()); + } else { + _this.url.setQuery("base_asset_type", "native"); + } + if (!counter.isNative()) { + _this.url.setQuery("counter_asset_type", counter.getAssetType()); + _this.url.setQuery("counter_asset_code", counter.getCode()); + _this.url.setQuery("counter_asset_issuer", counter.getIssuer()); + } else { + _this.url.setQuery("counter_asset_type", "native"); + } + if (typeof start_time !== "number" || typeof end_time !== "number") { + throw new _errors.BadRequestError("Invalid time bounds", [start_time, end_time]); + } else { + _this.url.setQuery("start_time", start_time.toString()); + _this.url.setQuery("end_time", end_time.toString()); + } + if (!_this.isValidResolution(resolution)) { + throw new _errors.BadRequestError("Invalid resolution", resolution); + } else { + _this.url.setQuery("resolution", resolution.toString()); + } + if (!_this.isValidOffset(offset, resolution)) { + throw new _errors.BadRequestError("Invalid offset", offset); + } else { + _this.url.setQuery("offset", offset.toString()); + } + return _this; + } + _inherits(TradeAggregationCallBuilder2, _CallBuilder); + return _createClass(TradeAggregationCallBuilder2, [{ + key: "isValidResolution", + value: function isValidResolution(resolution) { + return allowedResolutions.some(function(allowed) { + return allowed === resolution; + }); + } + }, { + key: "isValidOffset", + value: function isValidOffset(offset, resolution) { + var hour = 36e5; + return !(offset > resolution || offset >= 24 * hour || offset % hour !== 0); + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/trades_call_builder.js +var require_trades_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/trades_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TradesCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var TradesCallBuilder = exports2.TradesCallBuilder = function(_CallBuilder) { + function TradesCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, TradesCallBuilder2); + _this = _callSuper(this, TradesCallBuilder2, [serverUrl, "trades"]); + _this.url.segment("trades"); + return _this; + } + _inherits(TradesCallBuilder2, _CallBuilder); + return _createClass(TradesCallBuilder2, [{ + key: "forAssetPair", + value: function forAssetPair(base, counter) { + if (!base.isNative()) { + this.url.setQuery("base_asset_type", base.getAssetType()); + this.url.setQuery("base_asset_code", base.getCode()); + this.url.setQuery("base_asset_issuer", base.getIssuer()); + } else { + this.url.setQuery("base_asset_type", "native"); + } + if (!counter.isNative()) { + this.url.setQuery("counter_asset_type", counter.getAssetType()); + this.url.setQuery("counter_asset_code", counter.getCode()); + this.url.setQuery("counter_asset_issuer", counter.getIssuer()); + } else { + this.url.setQuery("counter_asset_type", "native"); + } + return this; + } + }, { + key: "forOffer", + value: function forOffer(offerId) { + this.url.setQuery("offer_id", offerId); + return this; + } + }, { + key: "forType", + value: function forType(tradeType) { + this.url.setQuery("trade_type", tradeType); + return this; + } + }, { + key: "forAccount", + value: function forAccount(accountId) { + return this.forEndpoint("accounts", accountId); + } + }, { + key: "forLiquidityPool", + value: function forLiquidityPool(liquidityPoolId) { + return this.forEndpoint("liquidity_pools", liquidityPoolId); + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/transaction_call_builder.js +var require_transaction_call_builder = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/transaction_call_builder.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransactionCallBuilder = void 0; + var _call_builder = require_call_builder(); + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + var TransactionCallBuilder = exports2.TransactionCallBuilder = function(_CallBuilder) { + function TransactionCallBuilder2(serverUrl) { + var _this; + _classCallCheck(this, TransactionCallBuilder2); + _this = _callSuper(this, TransactionCallBuilder2, [serverUrl, "transactions"]); + _this.url.segment("transactions"); + return _this; + } + _inherits(TransactionCallBuilder2, _CallBuilder); + return _createClass(TransactionCallBuilder2, [{ + key: "transaction", + value: function transaction(transactionId) { + var builder = new _call_builder.CallBuilder(this.url.clone()); + builder.filter.push([transactionId]); + return builder; + } + }, { + key: "forAccount", + value: function forAccount(accountId) { + return this.forEndpoint("accounts", accountId); + } + }, { + key: "forClaimableBalance", + value: function forClaimableBalance(claimableBalanceId) { + return this.forEndpoint("claimable_balances", claimableBalanceId); + } + }, { + key: "forLedger", + value: function forLedger(sequence) { + return this.forEndpoint("ledgers", sequence.toString()); + } + }, { + key: "forLiquidityPool", + value: function forLiquidityPool(poolId) { + return this.forEndpoint("liquidity_pools", poolId); + } + }, { + key: "includeFailed", + value: function includeFailed(value) { + this.url.setQuery("include_failed", value.toString()); + return this; + } + }]); + }(_call_builder.CallBuilder); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/server.js +var require_server2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/server.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SUBMIT_TRANSACTION_TIMEOUT = exports2.HorizonServer = void 0; + var _bignumber = _interopRequireDefault(require_bignumber()); + var _stellarBase = require_lib20(); + var _urijs = _interopRequireDefault(require_URI()); + var _call_builder = require_call_builder(); + var _config = require_config2(); + var _errors = require_errors11(); + var _account_call_builder = require_account_call_builder(); + var _account_response = require_account_response(); + var _assets_call_builder = require_assets_call_builder(); + var _claimable_balances_call_builder = require_claimable_balances_call_builder(); + var _effect_call_builder = require_effect_call_builder(); + var _friendbot_builder = require_friendbot_builder(); + var _ledger_call_builder = require_ledger_call_builder(); + var _liquidity_pool_call_builder = require_liquidity_pool_call_builder(); + var _offer_call_builder = require_offer_call_builder(); + var _operation_call_builder = require_operation_call_builder(); + var _orderbook_call_builder = require_orderbook_call_builder(); + var _payment_call_builder = require_payment_call_builder(); + var _strict_receive_path_call_builder = require_strict_receive_path_call_builder(); + var _strict_send_path_call_builder = require_strict_send_path_call_builder(); + var _trade_aggregation_call_builder = require_trade_aggregation_call_builder(); + var _trades_call_builder = require_trades_call_builder(); + var _transaction_call_builder = require_transaction_call_builder(); + var _horizon_axios_client = _interopRequireWildcard(require_horizon_axios_client()); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, default: e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t3 in e2) "default" !== _t3 && {}.hasOwnProperty.call(e2, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e2[_t3]); + return f; + })(e, t); + } + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var SUBMIT_TRANSACTION_TIMEOUT = exports2.SUBMIT_TRANSACTION_TIMEOUT = 60 * 1e3; + var STROOPS_IN_LUMEN = 1e7; + var ACCOUNT_REQUIRES_MEMO = "MQ=="; + function getAmountInLumens(amt) { + return new _bignumber.default(amt).div(STROOPS_IN_LUMEN).toString(); + } + var HorizonServer = exports2.HorizonServer = function() { + function HorizonServer2(serverURL) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + _classCallCheck(this, HorizonServer2); + this.serverURL = (0, _urijs.default)(serverURL); + var allowHttp = typeof opts.allowHttp === "undefined" ? _config.Config.isAllowHttp() : opts.allowHttp; + var customHeaders = {}; + if (opts.appName) { + customHeaders["X-App-Name"] = opts.appName; + } + if (opts.appVersion) { + customHeaders["X-App-Version"] = opts.appVersion; + } + if (opts.authToken) { + customHeaders["X-Auth-Token"] = opts.authToken; + } + if (opts.headers) { + Object.assign(customHeaders, opts.headers); + } + if (Object.keys(customHeaders).length > 0) { + _horizon_axios_client.default.interceptors.request.use(function(config2) { + config2.headers = config2.headers || {}; + config2.headers = Object.assign(config2.headers, customHeaders); + return config2; + }); + } + if (this.serverURL.protocol() !== "https" && !allowHttp) { + throw new Error("Cannot connect to insecure horizon server"); + } + } + return _createClass(HorizonServer2, [{ + key: "fetchTimebounds", + value: function() { + var _fetchTimebounds = _asyncToGenerator(_regenerator().m(function _callee(seconds) { + var _isRetry, currentTime, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + _isRetry = _args.length > 1 && _args[1] !== void 0 ? _args[1] : false; + currentTime = (0, _horizon_axios_client.getCurrentServerTime)(this.serverURL.hostname()); + if (!currentTime) { + _context.n = 1; + break; + } + return _context.a(2, { + minTime: 0, + maxTime: currentTime + seconds + }); + case 1: + if (!_isRetry) { + _context.n = 2; + break; + } + return _context.a(2, { + minTime: 0, + maxTime: Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3) + seconds + }); + case 2: + _context.n = 3; + return _horizon_axios_client.default.get((0, _urijs.default)(this.serverURL).toString()); + case 3: + return _context.a(2, this.fetchTimebounds(seconds, true)); + } + }, _callee, this); + })); + function fetchTimebounds(_x) { + return _fetchTimebounds.apply(this, arguments); + } + return fetchTimebounds; + }() + }, { + key: "fetchBaseFee", + value: function() { + var _fetchBaseFee = _asyncToGenerator(_regenerator().m(function _callee2() { + var response; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + _context2.n = 1; + return this.feeStats(); + case 1: + response = _context2.v; + return _context2.a(2, parseInt(response.last_ledger_base_fee, 10) || 100); + } + }, _callee2, this); + })); + function fetchBaseFee() { + return _fetchBaseFee.apply(this, arguments); + } + return fetchBaseFee; + }() + }, { + key: "feeStats", + value: function() { + var _feeStats = _asyncToGenerator(_regenerator().m(function _callee3() { + var cb; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + cb = new _call_builder.CallBuilder((0, _urijs.default)(this.serverURL)); + cb.filter.push(["fee_stats"]); + return _context3.a(2, cb.call()); + } + }, _callee3, this); + })); + function feeStats() { + return _feeStats.apply(this, arguments); + } + return feeStats; + }() + }, { + key: "root", + value: function() { + var _root = _asyncToGenerator(_regenerator().m(function _callee4() { + var cb; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.n) { + case 0: + cb = new _call_builder.CallBuilder((0, _urijs.default)(this.serverURL)); + return _context4.a(2, cb.call()); + } + }, _callee4, this); + })); + function root() { + return _root.apply(this, arguments); + } + return root; + }() + }, { + key: "submitTransaction", + value: function() { + var _submitTransaction = _asyncToGenerator(_regenerator().m(function _callee5(transaction) { + var opts, tx, _args5 = arguments; + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + opts = _args5.length > 1 && _args5[1] !== void 0 ? _args5[1] : { + skipMemoRequiredCheck: false + }; + if (opts.skipMemoRequiredCheck) { + _context5.n = 1; + break; + } + _context5.n = 1; + return this.checkMemoRequired(transaction); + case 1: + tx = encodeURIComponent(transaction.toEnvelope().toXDR().toString("base64")); + return _context5.a(2, _horizon_axios_client.default.post((0, _urijs.default)(this.serverURL).segment("transactions").toString(), "tx=".concat(tx), { + timeout: SUBMIT_TRANSACTION_TIMEOUT, + headers: { + "Content-Type": "application/x-www-form-urlencoded" + } + }).then(function(response) { + if (!response.data.result_xdr) { + return response.data; + } + var responseXDR = _stellarBase.xdr.TransactionResult.fromXDR(response.data.result_xdr, "base64"); + var results = responseXDR.result().value(); + var offerResults; + var hasManageOffer; + if (results.length) { + offerResults = results.map(function(result, i) { + if (result.value().switch().name !== "manageBuyOffer" && result.value().switch().name !== "manageSellOffer") { + return null; + } + hasManageOffer = true; + var amountBought = new _bignumber.default(0); + var amountSold = new _bignumber.default(0); + var offerSuccess = result.value().value().success(); + var offersClaimed = offerSuccess.offersClaimed().map(function(offerClaimedAtom) { + var offerClaimed = offerClaimedAtom.value(); + var sellerId = ""; + switch (offerClaimedAtom.switch()) { + case _stellarBase.xdr.ClaimAtomType.claimAtomTypeV0(): + sellerId = _stellarBase.StrKey.encodeEd25519PublicKey(offerClaimed.sellerEd25519()); + break; + case _stellarBase.xdr.ClaimAtomType.claimAtomTypeOrderBook(): + sellerId = _stellarBase.StrKey.encodeEd25519PublicKey(offerClaimed.sellerId().ed25519()); + break; + default: + throw new Error("Invalid offer result type: ".concat(offerClaimedAtom.switch())); + } + var claimedOfferAmountBought = new _bignumber.default(offerClaimed.amountBought().toString()); + var claimedOfferAmountSold = new _bignumber.default(offerClaimed.amountSold().toString()); + amountBought = amountBought.plus(claimedOfferAmountSold); + amountSold = amountSold.plus(claimedOfferAmountBought); + var sold = _stellarBase.Asset.fromOperation(offerClaimed.assetSold()); + var bought = _stellarBase.Asset.fromOperation(offerClaimed.assetBought()); + var assetSold = { + type: sold.getAssetType(), + assetCode: sold.getCode(), + issuer: sold.getIssuer() + }; + var assetBought = { + type: bought.getAssetType(), + assetCode: bought.getCode(), + issuer: bought.getIssuer() + }; + return { + sellerId, + offerId: offerClaimed.offerId().toString(), + assetSold, + amountSold: getAmountInLumens(claimedOfferAmountSold), + assetBought, + amountBought: getAmountInLumens(claimedOfferAmountBought) + }; + }); + var effect = offerSuccess.offer().switch().name; + var currentOffer; + if (typeof offerSuccess.offer().value === "function" && offerSuccess.offer().value()) { + var offerXDR = offerSuccess.offer().value(); + currentOffer = { + offerId: offerXDR.offerId().toString(), + selling: {}, + buying: {}, + amount: getAmountInLumens(offerXDR.amount().toString()), + price: { + n: offerXDR.price().n(), + d: offerXDR.price().d() + } + }; + var selling = _stellarBase.Asset.fromOperation(offerXDR.selling()); + currentOffer.selling = { + type: selling.getAssetType(), + assetCode: selling.getCode(), + issuer: selling.getIssuer() + }; + var buying = _stellarBase.Asset.fromOperation(offerXDR.buying()); + currentOffer.buying = { + type: buying.getAssetType(), + assetCode: buying.getCode(), + issuer: buying.getIssuer() + }; + } + return { + offersClaimed, + effect, + operationIndex: i, + currentOffer, + amountBought: getAmountInLumens(amountBought), + amountSold: getAmountInLumens(amountSold), + isFullyOpen: !offersClaimed.length && effect !== "manageOfferDeleted", + wasPartiallyFilled: !!offersClaimed.length && effect !== "manageOfferDeleted", + wasImmediatelyFilled: !!offersClaimed.length && effect === "manageOfferDeleted", + wasImmediatelyDeleted: !offersClaimed.length && effect === "manageOfferDeleted" + }; + }).filter(function(result) { + return !!result; + }); + } + return _objectSpread(_objectSpread({}, response.data), {}, { + offerResults: hasManageOffer ? offerResults : void 0 + }); + }).catch(function(response) { + if (response instanceof Error) { + return Promise.reject(response); + } + return Promise.reject(new _errors.BadResponseError("Transaction submission failed. Server responded: ".concat(response.status, " ").concat(response.statusText), response.data)); + })); + } + }, _callee5, this); + })); + function submitTransaction(_x2) { + return _submitTransaction.apply(this, arguments); + } + return submitTransaction; + }() + }, { + key: "submitAsyncTransaction", + value: function() { + var _submitAsyncTransaction = _asyncToGenerator(_regenerator().m(function _callee6(transaction) { + var opts, tx, _args6 = arguments; + return _regenerator().w(function(_context6) { + while (1) switch (_context6.n) { + case 0: + opts = _args6.length > 1 && _args6[1] !== void 0 ? _args6[1] : { + skipMemoRequiredCheck: false + }; + if (opts.skipMemoRequiredCheck) { + _context6.n = 1; + break; + } + _context6.n = 1; + return this.checkMemoRequired(transaction); + case 1: + tx = encodeURIComponent(transaction.toEnvelope().toXDR().toString("base64")); + return _context6.a(2, _horizon_axios_client.default.post((0, _urijs.default)(this.serverURL).segment("transactions_async").toString(), "tx=".concat(tx), { + headers: { + "Content-Type": "application/x-www-form-urlencoded" + } + }).then(function(response) { + return response.data; + }).catch(function(response) { + if (response instanceof Error) { + return Promise.reject(response); + } + return Promise.reject(new _errors.BadResponseError("Transaction submission failed. Server responded: ".concat(response.status, " ").concat(response.statusText), response.data)); + })); + } + }, _callee6, this); + })); + function submitAsyncTransaction(_x3) { + return _submitAsyncTransaction.apply(this, arguments); + } + return submitAsyncTransaction; + }() + }, { + key: "accounts", + value: function accounts() { + return new _account_call_builder.AccountCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "claimableBalances", + value: function claimableBalances() { + return new _claimable_balances_call_builder.ClaimableBalanceCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "ledgers", + value: function ledgers() { + return new _ledger_call_builder.LedgerCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "transactions", + value: function transactions() { + return new _transaction_call_builder.TransactionCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "offers", + value: function offers() { + return new _offer_call_builder.OfferCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "orderbook", + value: function orderbook(selling, buying) { + return new _orderbook_call_builder.OrderbookCallBuilder((0, _urijs.default)(this.serverURL), selling, buying); + } + }, { + key: "trades", + value: function trades() { + return new _trades_call_builder.TradesCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "operations", + value: function operations() { + return new _operation_call_builder.OperationCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "liquidityPools", + value: function liquidityPools() { + return new _liquidity_pool_call_builder.LiquidityPoolCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "strictReceivePaths", + value: function strictReceivePaths(source, destinationAsset, destinationAmount) { + return new _strict_receive_path_call_builder.StrictReceivePathCallBuilder((0, _urijs.default)(this.serverURL), source, destinationAsset, destinationAmount); + } + }, { + key: "strictSendPaths", + value: function strictSendPaths(sourceAsset, sourceAmount, destination) { + return new _strict_send_path_call_builder.StrictSendPathCallBuilder((0, _urijs.default)(this.serverURL), sourceAsset, sourceAmount, destination); + } + }, { + key: "payments", + value: function payments() { + return new _payment_call_builder.PaymentCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "effects", + value: function effects() { + return new _effect_call_builder.EffectCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "friendbot", + value: function friendbot(address) { + return new _friendbot_builder.FriendbotBuilder((0, _urijs.default)(this.serverURL), address); + } + }, { + key: "assets", + value: function assets() { + return new _assets_call_builder.AssetsCallBuilder((0, _urijs.default)(this.serverURL)); + } + }, { + key: "loadAccount", + value: function() { + var _loadAccount = _asyncToGenerator(_regenerator().m(function _callee7(accountId) { + var res; + return _regenerator().w(function(_context7) { + while (1) switch (_context7.n) { + case 0: + _context7.n = 1; + return this.accounts().accountId(accountId).call(); + case 1: + res = _context7.v; + return _context7.a(2, new _account_response.AccountResponse(res)); + } + }, _callee7, this); + })); + function loadAccount(_x4) { + return _loadAccount.apply(this, arguments); + } + return loadAccount; + }() + }, { + key: "tradeAggregation", + value: function tradeAggregation(base, counter, start_time, end_time, resolution, offset) { + return new _trade_aggregation_call_builder.TradeAggregationCallBuilder((0, _urijs.default)(this.serverURL), base, counter, start_time, end_time, resolution, offset); + } + }, { + key: "checkMemoRequired", + value: function() { + var _checkMemoRequired = _asyncToGenerator(_regenerator().m(function _callee8(transaction) { + var destinations, i, operation, destination, account, _t, _t2; + return _regenerator().w(function(_context8) { + while (1) switch (_context8.p = _context8.n) { + case 0: + if (transaction instanceof _stellarBase.FeeBumpTransaction) { + transaction = transaction.innerTransaction; + } + if (!(transaction.memo.type !== "none")) { + _context8.n = 1; + break; + } + return _context8.a(2); + case 1: + destinations = /* @__PURE__ */ new Set(); + i = 0; + case 2: + if (!(i < transaction.operations.length)) { + _context8.n = 14; + break; + } + operation = transaction.operations[i]; + _t = operation.type; + _context8.n = _t === "payment" ? 3 : _t === "pathPaymentStrictReceive" ? 3 : _t === "pathPaymentStrictSend" ? 3 : _t === "accountMerge" ? 3 : 4; + break; + case 3: + return _context8.a(3, 5); + case 4: + return _context8.a(3, 13); + case 5: + destination = operation.destination; + if (!destinations.has(destination)) { + _context8.n = 6; + break; + } + return _context8.a(3, 13); + case 6: + destinations.add(destination); + if (!destination.startsWith("M")) { + _context8.n = 7; + break; + } + return _context8.a(3, 13); + case 7: + _context8.p = 7; + _context8.n = 8; + return this.loadAccount(destination); + case 8: + account = _context8.v; + if (!(account.data_attr["config.memo_required"] === ACCOUNT_REQUIRES_MEMO)) { + _context8.n = 9; + break; + } + throw new _errors.AccountRequiresMemoError("account requires memo", destination, i); + case 9: + _context8.n = 13; + break; + case 10: + _context8.p = 10; + _t2 = _context8.v; + if (!(_t2 instanceof _errors.AccountRequiresMemoError)) { + _context8.n = 11; + break; + } + throw _t2; + case 11: + if (_t2 instanceof _errors.NotFoundError) { + _context8.n = 12; + break; + } + throw _t2; + case 12: + return _context8.a(3, 13); + case 13: + i += 1; + _context8.n = 2; + break; + case 14: + return _context8.a(2); + } + }, _callee8, this, [[7, 10]]); + })); + function checkMemoRequired(_x5) { + return _checkMemoRequired.apply(this, arguments); + } + return checkMemoRequired; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/horizon/index.js +var require_horizon = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/horizon/index.js"(exports2, module2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + Server: true, + AxiosClient: true, + SERVER_TIME_MAP: true, + getCurrentServerTime: true + }; + Object.defineProperty(exports2, "AxiosClient", { + enumerable: true, + get: function get() { + return _horizon_axios_client.default; + } + }); + Object.defineProperty(exports2, "SERVER_TIME_MAP", { + enumerable: true, + get: function get() { + return _horizon_axios_client.SERVER_TIME_MAP; + } + }); + Object.defineProperty(exports2, "Server", { + enumerable: true, + get: function get() { + return _server.HorizonServer; + } + }); + exports2.default = void 0; + Object.defineProperty(exports2, "getCurrentServerTime", { + enumerable: true, + get: function get() { + return _horizon_axios_client.getCurrentServerTime; + } + }); + var _horizon_api = require_horizon_api(); + Object.keys(_horizon_api).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _horizon_api[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _horizon_api[key]; + } + }); + }); + var _server_api = require_server_api(); + Object.keys(_server_api).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _server_api[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _server_api[key]; + } + }); + }); + var _account_response = require_account_response(); + Object.keys(_account_response).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _account_response[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _account_response[key]; + } + }); + }); + var _server = require_server2(); + var _horizon_axios_client = _interopRequireWildcard(require_horizon_axios_client()); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, default: e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t in e2) "default" !== _t && {}.hasOwnProperty.call(e2, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e2[_t]); + return f; + })(e, t); + } + var _default = exports2.default = module2.exports; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/api.js +var require_api3 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/api.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Api = void 0; + var Api; + (function(_Api) { + var GetTransactionStatus = function(GetTransactionStatus2) { + GetTransactionStatus2["SUCCESS"] = "SUCCESS"; + GetTransactionStatus2["NOT_FOUND"] = "NOT_FOUND"; + GetTransactionStatus2["FAILED"] = "FAILED"; + return GetTransactionStatus2; + }({}); + _Api.GetTransactionStatus = GetTransactionStatus; + function isSimulationError(sim) { + return "error" in sim; + } + _Api.isSimulationError = isSimulationError; + function isSimulationSuccess(sim) { + return "transactionData" in sim; + } + _Api.isSimulationSuccess = isSimulationSuccess; + function isSimulationRestore(sim) { + return isSimulationSuccess(sim) && "restorePreamble" in sim && !!sim.restorePreamble.transactionData; + } + _Api.isSimulationRestore = isSimulationRestore; + function isSimulationRaw(sim) { + return !sim._parsed; + } + _Api.isSimulationRaw = isSimulationRaw; + })(Api || (exports2.Api = Api = {})); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/axios.js +var require_axios2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/axios.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.version = exports2.default = exports2.AxiosClient = void 0; + var _httpClient = require_http_client(); + var version = exports2.version = "14.2.0"; + var AxiosClient = exports2.AxiosClient = (0, _httpClient.create)({ + headers: { + "X-Client-Name": "js-soroban-client", + "X-Client-Version": version + } + }); + var _default = exports2.default = AxiosClient; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/jsonrpc.js +var require_jsonrpc = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/jsonrpc.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.postObject = postObject; + var _axios = _interopRequireDefault(require_axios2()); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function hasOwnProperty(obj, prop) { + return obj.hasOwnProperty(prop); + } + function postObject(_x, _x2) { + return _postObject.apply(this, arguments); + } + function _postObject() { + _postObject = _asyncToGenerator(_regenerator().m(function _callee(url, method) { + var param, response, _response$data, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + param = _args.length > 2 && _args[2] !== void 0 ? _args[2] : null; + _context.n = 1; + return _axios.default.post(url, { + jsonrpc: "2.0", + id: 1, + method, + params: param + }); + case 1: + response = _context.v; + if (!hasOwnProperty(response.data, "error")) { + _context.n = 2; + break; + } + throw response.data.error; + case 2: + return _context.a(2, (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.result); + case 3: + return _context.a(2); + } + }, _callee); + })); + return _postObject.apply(this, arguments); + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/parsers.js +var require_parsers = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/parsers.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseRawEvents = parseRawEvents; + exports2.parseRawLedgerEntries = parseRawLedgerEntries; + exports2.parseRawSendTransaction = parseRawSendTransaction; + exports2.parseRawSimulation = parseRawSimulation; + exports2.parseRawTransactions = parseRawTransactions; + exports2.parseTransactionInfo = parseTransactionInfo; + var _stellarBase = require_lib20(); + var _api = require_api3(); + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function parseRawSendTransaction(raw) { + var errorResultXdr = raw.errorResultXdr, diagnosticEventsXdr = raw.diagnosticEventsXdr; + delete raw.errorResultXdr; + delete raw.diagnosticEventsXdr; + if (errorResultXdr) { + return _objectSpread(_objectSpread(_objectSpread({}, raw), diagnosticEventsXdr !== void 0 && diagnosticEventsXdr.length > 0 && { + diagnosticEvents: diagnosticEventsXdr.map(function(evt) { + return _stellarBase.xdr.DiagnosticEvent.fromXDR(evt, "base64"); + }) + }), {}, { + errorResult: _stellarBase.xdr.TransactionResult.fromXDR(errorResultXdr, "base64") + }); + } + return _objectSpread({}, raw); + } + function parseTransactionInfo(raw) { + var _raw$events$contractE, _raw$events, _raw$events$transacti, _raw$events2; + var meta = _stellarBase.xdr.TransactionMeta.fromXDR(raw.resultMetaXdr, "base64"); + var info = { + ledger: raw.ledger, + createdAt: raw.createdAt, + applicationOrder: raw.applicationOrder, + feeBump: raw.feeBump, + envelopeXdr: _stellarBase.xdr.TransactionEnvelope.fromXDR(raw.envelopeXdr, "base64"), + resultXdr: _stellarBase.xdr.TransactionResult.fromXDR(raw.resultXdr, "base64"), + resultMetaXdr: meta, + events: { + contractEventsXdr: ((_raw$events$contractE = (_raw$events = raw.events) === null || _raw$events === void 0 ? void 0 : _raw$events.contractEventsXdr) !== null && _raw$events$contractE !== void 0 ? _raw$events$contractE : []).map(function(lst) { + return lst.map(function(e) { + return _stellarBase.xdr.ContractEvent.fromXDR(e, "base64"); + }); + }), + transactionEventsXdr: ((_raw$events$transacti = (_raw$events2 = raw.events) === null || _raw$events2 === void 0 ? void 0 : _raw$events2.transactionEventsXdr) !== null && _raw$events$transacti !== void 0 ? _raw$events$transacti : []).map(function(e) { + return _stellarBase.xdr.TransactionEvent.fromXDR(e, "base64"); + }) + } + }; + switch (meta.switch()) { + case 3: + case 4: + var metaV = meta.value(); + if (metaV.sorobanMeta() !== null) { + var _metaV$sorobanMeta$re, _metaV$sorobanMeta; + info.returnValue = (_metaV$sorobanMeta$re = (_metaV$sorobanMeta = metaV.sorobanMeta()) === null || _metaV$sorobanMeta === void 0 ? void 0 : _metaV$sorobanMeta.returnValue()) !== null && _metaV$sorobanMeta$re !== void 0 ? _metaV$sorobanMeta$re : void 0; + } + } + if (raw.diagnosticEventsXdr) { + info.diagnosticEventsXdr = raw.diagnosticEventsXdr.map(function(e) { + return _stellarBase.xdr.DiagnosticEvent.fromXDR(e, "base64"); + }); + } + return info; + } + function parseRawTransactions(r) { + return _objectSpread({ + status: r.status, + txHash: r.txHash + }, parseTransactionInfo(r)); + } + function parseRawEvents(raw) { + var _raw$events3; + return { + latestLedger: raw.latestLedger, + oldestLedger: raw.oldestLedger, + latestLedgerCloseTime: raw.latestLedgerCloseTime, + oldestLedgerCloseTime: raw.oldestLedgerCloseTime, + cursor: raw.cursor, + events: ((_raw$events3 = raw.events) !== null && _raw$events3 !== void 0 ? _raw$events3 : []).map(function(evt) { + var clone = _objectSpread({}, evt); + delete clone.contractId; + return _objectSpread(_objectSpread(_objectSpread({}, clone), evt.contractId !== "" && { + contractId: new _stellarBase.Contract(evt.contractId) + }), {}, { + topic: evt.topic.map(function(topic) { + return _stellarBase.xdr.ScVal.fromXDR(topic, "base64"); + }), + value: _stellarBase.xdr.ScVal.fromXDR(evt.value, "base64") + }); + }) + }; + } + function parseRawLedgerEntries(raw) { + var _raw$entries; + return { + latestLedger: raw.latestLedger, + entries: ((_raw$entries = raw.entries) !== null && _raw$entries !== void 0 ? _raw$entries : []).map(function(rawEntry) { + if (!rawEntry.key || !rawEntry.xdr) { + throw new TypeError("invalid ledger entry: ".concat(JSON.stringify(rawEntry))); + } + return _objectSpread({ + lastModifiedLedgerSeq: rawEntry.lastModifiedLedgerSeq, + key: _stellarBase.xdr.LedgerKey.fromXDR(rawEntry.key, "base64"), + val: _stellarBase.xdr.LedgerEntryData.fromXDR(rawEntry.xdr, "base64") + }, rawEntry.liveUntilLedgerSeq !== void 0 && { + liveUntilLedgerSeq: rawEntry.liveUntilLedgerSeq + }); + }) + }; + } + function parseSuccessful(sim, partial) { + var _sim$results$length, _sim$results, _sim$stateChanges$len, _sim$stateChanges, _sim$stateChanges2; + var success = _objectSpread(_objectSpread(_objectSpread({}, partial), {}, { + transactionData: new _stellarBase.SorobanDataBuilder(sim.transactionData), + minResourceFee: sim.minResourceFee + }, ((_sim$results$length = (_sim$results = sim.results) === null || _sim$results === void 0 ? void 0 : _sim$results.length) !== null && _sim$results$length !== void 0 ? _sim$results$length : 0 > 0) && { + result: sim.results.map(function(row) { + var _row$auth; + return { + auth: ((_row$auth = row.auth) !== null && _row$auth !== void 0 ? _row$auth : []).map(function(entry) { + return _stellarBase.xdr.SorobanAuthorizationEntry.fromXDR(entry, "base64"); + }), + retval: row.xdr ? _stellarBase.xdr.ScVal.fromXDR(row.xdr, "base64") : _stellarBase.xdr.ScVal.scvVoid() + }; + })[0] + }), ((_sim$stateChanges$len = (_sim$stateChanges = sim.stateChanges) === null || _sim$stateChanges === void 0 ? void 0 : _sim$stateChanges.length) !== null && _sim$stateChanges$len !== void 0 ? _sim$stateChanges$len : 0 > 0) && { + stateChanges: (_sim$stateChanges2 = sim.stateChanges) === null || _sim$stateChanges2 === void 0 ? void 0 : _sim$stateChanges2.map(function(entryChange) { + return { + type: entryChange.type, + key: _stellarBase.xdr.LedgerKey.fromXDR(entryChange.key, "base64"), + before: entryChange.before ? _stellarBase.xdr.LedgerEntry.fromXDR(entryChange.before, "base64") : null, + after: entryChange.after ? _stellarBase.xdr.LedgerEntry.fromXDR(entryChange.after, "base64") : null + }; + }) + }); + if (!sim.restorePreamble || sim.restorePreamble.transactionData === "") { + return success; + } + return _objectSpread(_objectSpread({}, success), {}, { + restorePreamble: { + minResourceFee: sim.restorePreamble.minResourceFee, + transactionData: new _stellarBase.SorobanDataBuilder(sim.restorePreamble.transactionData) + } + }); + } + function parseRawSimulation(sim) { + var _sim$events$map, _sim$events; + var looksRaw = _api.Api.isSimulationRaw(sim); + if (!looksRaw) { + return sim; + } + var base = { + _parsed: true, + id: sim.id, + latestLedger: sim.latestLedger, + events: (_sim$events$map = (_sim$events = sim.events) === null || _sim$events === void 0 ? void 0 : _sim$events.map(function(evt) { + return _stellarBase.xdr.DiagnosticEvent.fromXDR(evt, "base64"); + })) !== null && _sim$events$map !== void 0 ? _sim$events$map : [] + }; + if (typeof sim.error === "string") { + return _objectSpread(_objectSpread({}, base), {}, { + error: sim.error + }); + } + return parseSuccessful(sim, base); + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/transaction.js +var require_transaction6 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.assembleTransaction = assembleTransaction; + var _stellarBase = require_lib20(); + var _api = require_api3(); + var _parsers = require_parsers(); + function isSorobanTransaction(tx) { + if (tx.operations.length !== 1) { + return false; + } + switch (tx.operations[0].type) { + case "invokeHostFunction": + case "extendFootprintTtl": + case "restoreFootprint": + return true; + default: + return false; + } + } + function assembleTransaction(raw, simulation) { + if ("innerTransaction" in raw) { + return assembleTransaction(raw.innerTransaction, simulation); + } + if (!isSorobanTransaction(raw)) { + throw new TypeError("unsupported transaction: must contain exactly one invokeHostFunction, extendFootprintTtl, or restoreFootprint operation"); + } + var success = (0, _parsers.parseRawSimulation)(simulation); + if (!_api.Api.isSimulationSuccess(success)) { + throw new Error("simulation incorrect: ".concat(JSON.stringify(success))); + } + var classicFeeNum = parseInt(raw.fee) || 0; + var minResourceFeeNum = parseInt(success.minResourceFee) || 0; + var txnBuilder = _stellarBase.TransactionBuilder.cloneFrom(raw, { + fee: (classicFeeNum + minResourceFeeNum).toString(), + sorobanData: success.transactionData.build(), + networkPassphrase: raw.networkPassphrase + }); + if (raw.operations[0].type === "invokeHostFunction") { + var _invokeOp$auth; + txnBuilder.clearOperations(); + var invokeOp = raw.operations[0]; + var existingAuth = (_invokeOp$auth = invokeOp.auth) !== null && _invokeOp$auth !== void 0 ? _invokeOp$auth : []; + txnBuilder.addOperation(_stellarBase.Operation.invokeHostFunction({ + source: invokeOp.source, + func: invokeOp.func, + auth: existingAuth.length > 0 ? existingAuth : success.result.auth + })); + } + return txnBuilder; + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/server.js +var require_server3 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/server.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SUBMIT_TRANSACTION_TIMEOUT = exports2.RpcServer = exports2.LinearSleepStrategy = exports2.Durability = exports2.BasicSleepStrategy = void 0; + var _urijs = _interopRequireDefault(require_URI()); + var _stellarBase = require_lib20(); + var _axios = _interopRequireDefault(require_axios2()); + var jsonrpc = _interopRequireWildcard(require_jsonrpc()); + var _api = require_api3(); + var _transaction = require_transaction6(); + var _parsers = require_parsers(); + var _utils = require_utils25(); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, default: e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t9 in e2) "default" !== _t9 && {}.hasOwnProperty.call(e2, _t9) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t9)) && (i.get || i.set) ? o(f, _t9, i) : f[_t9] = e2[_t9]); + return f; + })(e, t); + } + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var SUBMIT_TRANSACTION_TIMEOUT = exports2.SUBMIT_TRANSACTION_TIMEOUT = 60 * 1e3; + var Durability = exports2.Durability = function(Durability2) { + Durability2["Temporary"] = "temporary"; + Durability2["Persistent"] = "persistent"; + return Durability2; + }({}); + var DEFAULT_GET_TRANSACTION_TIMEOUT = 30; + var BasicSleepStrategy = exports2.BasicSleepStrategy = function BasicSleepStrategy2(_iter) { + return 1e3; + }; + var LinearSleepStrategy = exports2.LinearSleepStrategy = function LinearSleepStrategy2(iter) { + return 1e3 * iter; + }; + function findCreatedAccountSequenceInTransactionMeta(meta) { + var _operations$flatMap$f; + var operations = []; + switch (meta.switch()) { + case 0: + operations = meta.operations(); + break; + case 1: + case 2: + case 3: + case 4: + operations = meta.value().operations(); + break; + default: + throw new Error("Unexpected transaction meta switch value"); + } + var sequenceNumber = (_operations$flatMap$f = operations.flatMap(function(op) { + return op.changes(); + }).find(function(c) { + return c.switch() === _stellarBase.xdr.LedgerEntryChangeType.ledgerEntryCreated() && c.created().data().switch() === _stellarBase.xdr.LedgerEntryType.account(); + })) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.created()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.data()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.account()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.seqNum()) === null || _operations$flatMap$f === void 0 ? void 0 : _operations$flatMap$f.toString(); + if (sequenceNumber) { + return sequenceNumber; + } + throw new Error("No account created in transaction"); + } + var RpcServer = exports2.RpcServer = function() { + function RpcServer2(serverURL) { + var opts = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + _classCallCheck(this, RpcServer2); + this.serverURL = (0, _urijs.default)(serverURL); + if (opts.headers && Object.keys(opts.headers).length !== 0) { + _axios.default.interceptors.request.use(function(config2) { + config2.headers = Object.assign(config2.headers, opts.headers); + return config2; + }); + } + if (this.serverURL.protocol() !== "https" && !opts.allowHttp) { + throw new Error("Cannot connect to insecure Soroban RPC server if `allowHttp` isn't set"); + } + } + return _createClass(RpcServer2, [{ + key: "getAccount", + value: function() { + var _getAccount = _asyncToGenerator(_regenerator().m(function _callee(address) { + var entry; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + _context.n = 1; + return this.getAccountEntry(address); + case 1: + entry = _context.v; + return _context.a(2, new _stellarBase.Account(address, entry.seqNum().toString())); + } + }, _callee, this); + })); + function getAccount(_x) { + return _getAccount.apply(this, arguments); + } + return getAccount; + }() + }, { + key: "getAccountEntry", + value: function() { + var _getAccountEntry = _asyncToGenerator(_regenerator().m(function _callee2(address) { + var ledgerKey, resp, _t; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.p = _context2.n) { + case 0: + ledgerKey = _stellarBase.xdr.LedgerKey.account(new _stellarBase.xdr.LedgerKeyAccount({ + accountId: _stellarBase.Keypair.fromPublicKey(address).xdrPublicKey() + })); + _context2.p = 1; + _context2.n = 2; + return this.getLedgerEntry(ledgerKey); + case 2: + resp = _context2.v; + return _context2.a(2, resp.val.account()); + case 3: + _context2.p = 3; + _t = _context2.v; + throw new Error("Account not found: ".concat(address)); + case 4: + return _context2.a(2); + } + }, _callee2, this, [[1, 3]]); + })); + function getAccountEntry(_x2) { + return _getAccountEntry.apply(this, arguments); + } + return getAccountEntry; + }() + }, { + key: "getTrustline", + value: function() { + var _getTrustline = _asyncToGenerator(_regenerator().m(function _callee3(account, asset) { + var trustlineLedgerKey, entry, _t2; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + trustlineLedgerKey = _stellarBase.xdr.LedgerKey.trustline(new _stellarBase.xdr.LedgerKeyTrustLine({ + accountId: _stellarBase.Keypair.fromPublicKey(account).xdrAccountId(), + asset: asset.toTrustLineXDRObject() + })); + _context3.p = 1; + _context3.n = 2; + return this.getLedgerEntry(trustlineLedgerKey); + case 2: + entry = _context3.v; + return _context3.a(2, entry.val.trustLine()); + case 3: + _context3.p = 3; + _t2 = _context3.v; + throw new Error("Trustline for ".concat(asset.getCode(), ":").concat(asset.getIssuer(), " not found for ").concat(account)); + case 4: + return _context3.a(2); + } + }, _callee3, this, [[1, 3]]); + })); + function getTrustline(_x3, _x4) { + return _getTrustline.apply(this, arguments); + } + return getTrustline; + }() + }, { + key: "getClaimableBalance", + value: function() { + var _getClaimableBalance = _asyncToGenerator(_regenerator().m(function _callee4(id) { + var balanceId, buffer, v, trustlineLedgerKey, entry, _t3; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.p = _context4.n) { + case 0: + if (!_stellarBase.StrKey.isValidClaimableBalance(id)) { + _context4.n = 1; + break; + } + buffer = _stellarBase.StrKey.decodeClaimableBalance(id); + v = Buffer.concat([Buffer.from("\0\0\0"), buffer.subarray(0, 1)]); + balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(Buffer.concat([v, buffer.subarray(1)])); + _context4.n = 4; + break; + case 1: + if (!id.match(/[a-f0-9]{72}/i)) { + _context4.n = 2; + break; + } + balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(id, "hex"); + _context4.n = 4; + break; + case 2: + if (!id.match(/[a-f0-9]{64}/i)) { + _context4.n = 3; + break; + } + balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(id.padStart(72, "0"), "hex"); + _context4.n = 4; + break; + case 3: + throw new TypeError("expected 72-char hex ID or strkey, not ".concat(id)); + case 4: + trustlineLedgerKey = _stellarBase.xdr.LedgerKey.claimableBalance(new _stellarBase.xdr.LedgerKeyClaimableBalance({ + balanceId + })); + _context4.p = 5; + _context4.n = 6; + return this.getLedgerEntry(trustlineLedgerKey); + case 6: + entry = _context4.v; + return _context4.a(2, entry.val.claimableBalance()); + case 7: + _context4.p = 7; + _t3 = _context4.v; + throw new Error("Claimable balance ".concat(id, " not found")); + case 8: + return _context4.a(2); + } + }, _callee4, this, [[5, 7]]); + })); + function getClaimableBalance(_x5) { + return _getClaimableBalance.apply(this, arguments); + } + return getClaimableBalance; + }() + }, { + key: "getHealth", + value: function() { + var _getHealth = _asyncToGenerator(_regenerator().m(function _callee5() { + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + return _context5.a(2, jsonrpc.postObject(this.serverURL.toString(), "getHealth")); + } + }, _callee5, this); + })); + function getHealth() { + return _getHealth.apply(this, arguments); + } + return getHealth; + }() + }, { + key: "getContractData", + value: function() { + var _getContractData = _asyncToGenerator(_regenerator().m(function _callee6(contract, key) { + var durability, scAddress, xdrDurability, contractKey, _args6 = arguments, _t4, _t5; + return _regenerator().w(function(_context6) { + while (1) switch (_context6.p = _context6.n) { + case 0: + durability = _args6.length > 2 && _args6[2] !== void 0 ? _args6[2] : Durability.Persistent; + if (!(typeof contract === "string")) { + _context6.n = 1; + break; + } + scAddress = new _stellarBase.Contract(contract).address().toScAddress(); + _context6.n = 4; + break; + case 1: + if (!(contract instanceof _stellarBase.Address)) { + _context6.n = 2; + break; + } + scAddress = contract.toScAddress(); + _context6.n = 4; + break; + case 2: + if (!(contract instanceof _stellarBase.Contract)) { + _context6.n = 3; + break; + } + scAddress = contract.address().toScAddress(); + _context6.n = 4; + break; + case 3: + throw new TypeError("unknown contract type: ".concat(contract)); + case 4: + _t4 = durability; + _context6.n = _t4 === Durability.Temporary ? 5 : _t4 === Durability.Persistent ? 6 : 7; + break; + case 5: + xdrDurability = _stellarBase.xdr.ContractDataDurability.temporary(); + return _context6.a(3, 8); + case 6: + xdrDurability = _stellarBase.xdr.ContractDataDurability.persistent(); + return _context6.a(3, 8); + case 7: + throw new TypeError("invalid durability: ".concat(durability)); + case 8: + contractKey = _stellarBase.xdr.LedgerKey.contractData(new _stellarBase.xdr.LedgerKeyContractData({ + key, + contract: scAddress, + durability: xdrDurability + })); + _context6.p = 9; + _context6.n = 10; + return this.getLedgerEntry(contractKey); + case 10: + return _context6.a(2, _context6.v); + case 11: + _context6.p = 11; + _t5 = _context6.v; + throw { + code: 404, + message: "Contract data not found for ".concat(_stellarBase.Address.fromScAddress(scAddress).toString(), " with key ").concat(key.toXDR("base64"), " and durability: ").concat(durability) + }; + case 12: + return _context6.a(2); + } + }, _callee6, this, [[9, 11]]); + })); + function getContractData(_x6, _x7) { + return _getContractData.apply(this, arguments); + } + return getContractData; + }() + }, { + key: "getContractWasmByContractId", + value: function() { + var _getContractWasmByContractId = _asyncToGenerator(_regenerator().m(function _callee7(contractId) { + var _response$entries$; + var contractLedgerKey, response, wasmHash; + return _regenerator().w(function(_context7) { + while (1) switch (_context7.n) { + case 0: + contractLedgerKey = new _stellarBase.Contract(contractId).getFootprint(); + _context7.n = 1; + return this.getLedgerEntries(contractLedgerKey); + case 1: + response = _context7.v; + if (!(!response.entries.length || !((_response$entries$ = response.entries[0]) !== null && _response$entries$ !== void 0 && _response$entries$.val))) { + _context7.n = 2; + break; + } + return _context7.a(2, Promise.reject({ + code: 404, + message: "Could not obtain contract hash from server" + })); + case 2: + wasmHash = response.entries[0].val.contractData().val().instance().executable().wasmHash(); + return _context7.a(2, this.getContractWasmByHash(wasmHash)); + } + }, _callee7, this); + })); + function getContractWasmByContractId(_x8) { + return _getContractWasmByContractId.apply(this, arguments); + } + return getContractWasmByContractId; + }() + }, { + key: "getContractWasmByHash", + value: function() { + var _getContractWasmByHash = _asyncToGenerator(_regenerator().m(function _callee8(wasmHash) { + var _responseWasm$entries; + var format, wasmHashBuffer, ledgerKeyWasmHash, responseWasm, wasmBuffer, _args8 = arguments; + return _regenerator().w(function(_context8) { + while (1) switch (_context8.n) { + case 0: + format = _args8.length > 1 && _args8[1] !== void 0 ? _args8[1] : void 0; + wasmHashBuffer = typeof wasmHash === "string" ? Buffer.from(wasmHash, format) : wasmHash; + ledgerKeyWasmHash = _stellarBase.xdr.LedgerKey.contractCode(new _stellarBase.xdr.LedgerKeyContractCode({ + hash: wasmHashBuffer + })); + _context8.n = 1; + return this.getLedgerEntries(ledgerKeyWasmHash); + case 1: + responseWasm = _context8.v; + if (!(!responseWasm.entries.length || !((_responseWasm$entries = responseWasm.entries[0]) !== null && _responseWasm$entries !== void 0 && _responseWasm$entries.val))) { + _context8.n = 2; + break; + } + return _context8.a(2, Promise.reject({ + code: 404, + message: "Could not obtain contract wasm from server" + })); + case 2: + wasmBuffer = responseWasm.entries[0].val.contractCode().code(); + return _context8.a(2, wasmBuffer); + } + }, _callee8, this); + })); + function getContractWasmByHash(_x9) { + return _getContractWasmByHash.apply(this, arguments); + } + return getContractWasmByHash; + }() + }, { + key: "getLedgerEntries", + value: function getLedgerEntries() { + return this._getLedgerEntries.apply(this, arguments).then(_parsers.parseRawLedgerEntries); + } + }, { + key: "_getLedgerEntries", + value: function _getLedgerEntries() { + for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) { + keys[_key] = arguments[_key]; + } + return jsonrpc.postObject(this.serverURL.toString(), "getLedgerEntries", { + keys: keys.map(function(k) { + return k.toXDR("base64"); + }) + }); + } + }, { + key: "getLedgerEntry", + value: function() { + var _getLedgerEntry = _asyncToGenerator(_regenerator().m(function _callee9(key) { + var results; + return _regenerator().w(function(_context9) { + while (1) switch (_context9.n) { + case 0: + _context9.n = 1; + return this._getLedgerEntries(key).then(_parsers.parseRawLedgerEntries); + case 1: + results = _context9.v; + if (!(results.entries.length !== 1)) { + _context9.n = 2; + break; + } + throw new Error("failed to find an entry for key ".concat(key.toXDR("base64"))); + case 2: + return _context9.a(2, results.entries[0]); + } + }, _callee9, this); + })); + function getLedgerEntry(_x0) { + return _getLedgerEntry.apply(this, arguments); + } + return getLedgerEntry; + }() + }, { + key: "pollTransaction", + value: function() { + var _pollTransaction = _asyncToGenerator(_regenerator().m(function _callee0(hash, opts) { + var _opts$attempts, _opts$attempts2; + var maxAttempts, foundInfo, attempt, _opts$sleepStrategy; + return _regenerator().w(function(_context0) { + while (1) switch (_context0.n) { + case 0: + maxAttempts = ((_opts$attempts = opts === null || opts === void 0 ? void 0 : opts.attempts) !== null && _opts$attempts !== void 0 ? _opts$attempts : 0) < 1 ? DEFAULT_GET_TRANSACTION_TIMEOUT : (_opts$attempts2 = opts === null || opts === void 0 ? void 0 : opts.attempts) !== null && _opts$attempts2 !== void 0 ? _opts$attempts2 : DEFAULT_GET_TRANSACTION_TIMEOUT; + attempt = 1; + case 1: + if (!(attempt < maxAttempts)) { + _context0.n = 5; + break; + } + _context0.n = 2; + return this.getTransaction(hash); + case 2: + foundInfo = _context0.v; + if (!(foundInfo.status !== _api.Api.GetTransactionStatus.NOT_FOUND)) { + _context0.n = 3; + break; + } + return _context0.a(2, foundInfo); + case 3: + _context0.n = 4; + return _utils.Utils.sleep(((_opts$sleepStrategy = opts === null || opts === void 0 ? void 0 : opts.sleepStrategy) !== null && _opts$sleepStrategy !== void 0 ? _opts$sleepStrategy : BasicSleepStrategy)(attempt)); + case 4: + attempt++; + _context0.n = 1; + break; + case 5: + return _context0.a(2, foundInfo); + } + }, _callee0, this); + })); + function pollTransaction(_x1, _x10) { + return _pollTransaction.apply(this, arguments); + } + return pollTransaction; + }() + }, { + key: "getTransaction", + value: function() { + var _getTransaction2 = _asyncToGenerator(_regenerator().m(function _callee1(hash) { + return _regenerator().w(function(_context1) { + while (1) switch (_context1.n) { + case 0: + return _context1.a(2, this._getTransaction(hash).then(function(raw) { + var foundInfo = {}; + if (raw.status !== _api.Api.GetTransactionStatus.NOT_FOUND) { + Object.assign(foundInfo, (0, _parsers.parseTransactionInfo)(raw)); + } + var result = _objectSpread({ + status: raw.status, + txHash: hash, + latestLedger: raw.latestLedger, + latestLedgerCloseTime: raw.latestLedgerCloseTime, + oldestLedger: raw.oldestLedger, + oldestLedgerCloseTime: raw.oldestLedgerCloseTime + }, foundInfo); + return result; + })); + } + }, _callee1, this); + })); + function getTransaction(_x11) { + return _getTransaction2.apply(this, arguments); + } + return getTransaction; + }() + }, { + key: "_getTransaction", + value: function() { + var _getTransaction3 = _asyncToGenerator(_regenerator().m(function _callee10(hash) { + return _regenerator().w(function(_context10) { + while (1) switch (_context10.n) { + case 0: + return _context10.a(2, jsonrpc.postObject(this.serverURL.toString(), "getTransaction", { + hash + })); + } + }, _callee10, this); + })); + function _getTransaction(_x12) { + return _getTransaction3.apply(this, arguments); + } + return _getTransaction; + }() + }, { + key: "getTransactions", + value: function() { + var _getTransactions2 = _asyncToGenerator(_regenerator().m(function _callee11(request) { + return _regenerator().w(function(_context11) { + while (1) switch (_context11.n) { + case 0: + return _context11.a(2, this._getTransactions(request).then(function(raw) { + var result = { + transactions: (raw.transactions || []).map(_parsers.parseRawTransactions), + latestLedger: raw.latestLedger, + latestLedgerCloseTimestamp: raw.latestLedgerCloseTimestamp, + oldestLedger: raw.oldestLedger, + oldestLedgerCloseTimestamp: raw.oldestLedgerCloseTimestamp, + cursor: raw.cursor + }; + return result; + })); + } + }, _callee11, this); + })); + function getTransactions(_x13) { + return _getTransactions2.apply(this, arguments); + } + return getTransactions; + }() + }, { + key: "_getTransactions", + value: function() { + var _getTransactions3 = _asyncToGenerator(_regenerator().m(function _callee12(request) { + return _regenerator().w(function(_context12) { + while (1) switch (_context12.n) { + case 0: + return _context12.a(2, jsonrpc.postObject(this.serverURL.toString(), "getTransactions", request)); + } + }, _callee12, this); + })); + function _getTransactions(_x14) { + return _getTransactions3.apply(this, arguments); + } + return _getTransactions; + }() + }, { + key: "getEvents", + value: function() { + var _getEvents2 = _asyncToGenerator(_regenerator().m(function _callee13(request) { + return _regenerator().w(function(_context13) { + while (1) switch (_context13.n) { + case 0: + return _context13.a(2, this._getEvents(request).then(_parsers.parseRawEvents)); + } + }, _callee13, this); + })); + function getEvents(_x15) { + return _getEvents2.apply(this, arguments); + } + return getEvents; + }() + }, { + key: "_getEvents", + value: function() { + var _getEvents3 = _asyncToGenerator(_regenerator().m(function _callee14(request) { + var _request$filters; + return _regenerator().w(function(_context14) { + while (1) switch (_context14.n) { + case 0: + return _context14.a(2, jsonrpc.postObject(this.serverURL.toString(), "getEvents", _objectSpread(_objectSpread({ + filters: (_request$filters = request.filters) !== null && _request$filters !== void 0 ? _request$filters : [], + pagination: _objectSpread(_objectSpread({}, request.cursor && { + cursor: request.cursor + }), request.limit && { + limit: request.limit + }) + }, request.startLedger && { + startLedger: request.startLedger + }), request.endLedger && { + endLedger: request.endLedger + }))); + } + }, _callee14, this); + })); + function _getEvents(_x16) { + return _getEvents3.apply(this, arguments); + } + return _getEvents; + }() + }, { + key: "getNetwork", + value: function() { + var _getNetwork = _asyncToGenerator(_regenerator().m(function _callee15() { + return _regenerator().w(function(_context15) { + while (1) switch (_context15.n) { + case 0: + return _context15.a(2, jsonrpc.postObject(this.serverURL.toString(), "getNetwork")); + } + }, _callee15, this); + })); + function getNetwork() { + return _getNetwork.apply(this, arguments); + } + return getNetwork; + }() + }, { + key: "getLatestLedger", + value: function() { + var _getLatestLedger = _asyncToGenerator(_regenerator().m(function _callee16() { + return _regenerator().w(function(_context16) { + while (1) switch (_context16.n) { + case 0: + return _context16.a(2, jsonrpc.postObject(this.serverURL.toString(), "getLatestLedger")); + } + }, _callee16, this); + })); + function getLatestLedger() { + return _getLatestLedger.apply(this, arguments); + } + return getLatestLedger; + }() + }, { + key: "simulateTransaction", + value: function() { + var _simulateTransaction2 = _asyncToGenerator(_regenerator().m(function _callee17(tx, addlResources, authMode) { + return _regenerator().w(function(_context17) { + while (1) switch (_context17.n) { + case 0: + return _context17.a(2, this._simulateTransaction(tx, addlResources, authMode).then(_parsers.parseRawSimulation)); + } + }, _callee17, this); + })); + function simulateTransaction(_x17, _x18, _x19) { + return _simulateTransaction2.apply(this, arguments); + } + return simulateTransaction; + }() + }, { + key: "_simulateTransaction", + value: function() { + var _simulateTransaction3 = _asyncToGenerator(_regenerator().m(function _callee18(transaction, addlResources, authMode) { + return _regenerator().w(function(_context18) { + while (1) switch (_context18.n) { + case 0: + return _context18.a(2, jsonrpc.postObject(this.serverURL.toString(), "simulateTransaction", _objectSpread({ + transaction: transaction.toXDR(), + authMode + }, addlResources !== void 0 && { + resourceConfig: { + instructionLeeway: addlResources.cpuInstructions + } + }))); + } + }, _callee18, this); + })); + function _simulateTransaction(_x20, _x21, _x22) { + return _simulateTransaction3.apply(this, arguments); + } + return _simulateTransaction; + }() + }, { + key: "prepareTransaction", + value: function() { + var _prepareTransaction = _asyncToGenerator(_regenerator().m(function _callee19(tx) { + var simResponse; + return _regenerator().w(function(_context19) { + while (1) switch (_context19.n) { + case 0: + _context19.n = 1; + return this.simulateTransaction(tx); + case 1: + simResponse = _context19.v; + if (!_api.Api.isSimulationError(simResponse)) { + _context19.n = 2; + break; + } + throw new Error(simResponse.error); + case 2: + return _context19.a(2, (0, _transaction.assembleTransaction)(tx, simResponse).build()); + } + }, _callee19, this); + })); + function prepareTransaction(_x23) { + return _prepareTransaction.apply(this, arguments); + } + return prepareTransaction; + }() + }, { + key: "sendTransaction", + value: function() { + var _sendTransaction2 = _asyncToGenerator(_regenerator().m(function _callee20(transaction) { + return _regenerator().w(function(_context20) { + while (1) switch (_context20.n) { + case 0: + return _context20.a(2, this._sendTransaction(transaction).then(_parsers.parseRawSendTransaction)); + } + }, _callee20, this); + })); + function sendTransaction(_x24) { + return _sendTransaction2.apply(this, arguments); + } + return sendTransaction; + }() + }, { + key: "_sendTransaction", + value: function() { + var _sendTransaction3 = _asyncToGenerator(_regenerator().m(function _callee21(transaction) { + return _regenerator().w(function(_context21) { + while (1) switch (_context21.n) { + case 0: + return _context21.a(2, jsonrpc.postObject(this.serverURL.toString(), "sendTransaction", { + transaction: transaction.toXDR() + })); + } + }, _callee21, this); + })); + function _sendTransaction(_x25) { + return _sendTransaction3.apply(this, arguments); + } + return _sendTransaction; + }() + }, { + key: "requestAirdrop", + value: function() { + var _requestAirdrop = _asyncToGenerator(_regenerator().m(function _callee22(address, friendbotUrl) { + var account, response, meta, txMeta, sequence, _error$response, _error$response$detai, _t6, _t7; + return _regenerator().w(function(_context22) { + while (1) switch (_context22.p = _context22.n) { + case 0: + account = typeof address === "string" ? address : address.accountId(); + _t6 = friendbotUrl; + if (_t6) { + _context22.n = 2; + break; + } + _context22.n = 1; + return this.getNetwork(); + case 1: + _t6 = _context22.v.friendbotUrl; + case 2: + friendbotUrl = _t6; + if (friendbotUrl) { + _context22.n = 3; + break; + } + throw new Error("No friendbot URL configured for current network"); + case 3: + _context22.p = 3; + _context22.n = 4; + return _axios.default.post("".concat(friendbotUrl, "?addr=").concat(encodeURIComponent(account))); + case 4: + response = _context22.v; + if (response.data.result_meta_xdr) { + _context22.n = 7; + break; + } + _context22.n = 5; + return this.getTransaction(response.data.hash); + case 5: + txMeta = _context22.v; + if (!(txMeta.status !== _api.Api.GetTransactionStatus.SUCCESS)) { + _context22.n = 6; + break; + } + throw new Error("Funding account ".concat(address, " failed")); + case 6: + meta = txMeta.resultMetaXdr; + _context22.n = 8; + break; + case 7: + meta = _stellarBase.xdr.TransactionMeta.fromXDR(response.data.result_meta_xdr, "base64"); + case 8: + sequence = findCreatedAccountSequenceInTransactionMeta(meta); + return _context22.a(2, new _stellarBase.Account(account, sequence)); + case 9: + _context22.p = 9; + _t7 = _context22.v; + if (!(((_error$response = _t7.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 400)) { + _context22.n = 10; + break; + } + if (!((_error$response$detai = _t7.response.detail) !== null && _error$response$detai !== void 0 && _error$response$detai.includes("createAccountAlreadyExist"))) { + _context22.n = 10; + break; + } + return _context22.a(2, this.getAccount(account)); + case 10: + throw _t7; + case 11: + return _context22.a(2); + } + }, _callee22, this, [[3, 9]]); + })); + function requestAirdrop(_x26, _x27) { + return _requestAirdrop.apply(this, arguments); + } + return requestAirdrop; + }() + }, { + key: "getFeeStats", + value: function() { + var _getFeeStats = _asyncToGenerator(_regenerator().m(function _callee23() { + return _regenerator().w(function(_context23) { + while (1) switch (_context23.n) { + case 0: + return _context23.a(2, jsonrpc.postObject(this.serverURL.toString(), "getFeeStats")); + } + }, _callee23, this); + })); + function getFeeStats() { + return _getFeeStats.apply(this, arguments); + } + return getFeeStats; + }() + }, { + key: "getVersionInfo", + value: function() { + var _getVersionInfo = _asyncToGenerator(_regenerator().m(function _callee24() { + return _regenerator().w(function(_context24) { + while (1) switch (_context24.n) { + case 0: + return _context24.a(2, jsonrpc.postObject(this.serverURL.toString(), "getVersionInfo")); + } + }, _callee24, this); + })); + function getVersionInfo() { + return _getVersionInfo.apply(this, arguments); + } + return getVersionInfo; + }() + }, { + key: "getSACBalance", + value: function() { + var _getSACBalance = _asyncToGenerator(_regenerator().m(function _callee25(address, sac, networkPassphrase) { + var addressString, passphrase, sacId, key, ledgerKey, response, _response$entries$2, lastModifiedLedgerSeq, liveUntilLedgerSeq, val, entry, _t8; + return _regenerator().w(function(_context25) { + while (1) switch (_context25.n) { + case 0: + addressString = address instanceof _stellarBase.Address ? address.toString() : address; + if (_stellarBase.StrKey.isValidContract(addressString)) { + _context25.n = 1; + break; + } + throw new TypeError("expected contract ID, got ".concat(addressString)); + case 1: + if (!(networkPassphrase !== null && networkPassphrase !== void 0)) { + _context25.n = 2; + break; + } + _t8 = networkPassphrase; + _context25.n = 4; + break; + case 2: + _context25.n = 3; + return this.getNetwork().then(function(n) { + return n.passphrase; + }); + case 3: + _t8 = _context25.v; + case 4: + passphrase = _t8; + sacId = sac.contractId(passphrase); + key = (0, _stellarBase.nativeToScVal)(["Balance", addressString], { + type: ["symbol", "address"] + }); + ledgerKey = _stellarBase.xdr.LedgerKey.contractData(new _stellarBase.xdr.LedgerKeyContractData({ + contract: new _stellarBase.Address(sacId).toScAddress(), + durability: _stellarBase.xdr.ContractDataDurability.persistent(), + key + })); + _context25.n = 5; + return this.getLedgerEntries(ledgerKey); + case 5: + response = _context25.v; + if (!(response.entries.length === 0)) { + _context25.n = 6; + break; + } + return _context25.a(2, { + latestLedger: response.latestLedger + }); + case 6: + _response$entries$2 = response.entries[0], lastModifiedLedgerSeq = _response$entries$2.lastModifiedLedgerSeq, liveUntilLedgerSeq = _response$entries$2.liveUntilLedgerSeq, val = _response$entries$2.val; + if (!(val.switch().value !== _stellarBase.xdr.LedgerEntryType.contractData().value)) { + _context25.n = 7; + break; + } + return _context25.a(2, { + latestLedger: response.latestLedger + }); + case 7: + entry = (0, _stellarBase.scValToNative)(val.contractData().val()); + return _context25.a(2, { + latestLedger: response.latestLedger, + balanceEntry: { + liveUntilLedgerSeq, + lastModifiedLedgerSeq, + amount: entry.amount.toString(), + authorized: entry.authorized, + clawback: entry.clawback + } + }); + } + }, _callee25, this); + })); + function getSACBalance(_x28, _x29, _x30) { + return _getSACBalance.apply(this, arguments); + } + return getSACBalance; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/rpc/index.js +var require_rpc2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/rpc/index.js"(exports2, module2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + Server: true, + BasicSleepStrategy: true, + LinearSleepStrategy: true, + Durability: true, + AxiosClient: true, + parseRawSimulation: true, + parseRawEvents: true + }; + Object.defineProperty(exports2, "AxiosClient", { + enumerable: true, + get: function get() { + return _axios.default; + } + }); + Object.defineProperty(exports2, "BasicSleepStrategy", { + enumerable: true, + get: function get() { + return _server.BasicSleepStrategy; + } + }); + Object.defineProperty(exports2, "Durability", { + enumerable: true, + get: function get() { + return _server.Durability; + } + }); + Object.defineProperty(exports2, "LinearSleepStrategy", { + enumerable: true, + get: function get() { + return _server.LinearSleepStrategy; + } + }); + Object.defineProperty(exports2, "Server", { + enumerable: true, + get: function get() { + return _server.RpcServer; + } + }); + exports2.default = void 0; + Object.defineProperty(exports2, "parseRawEvents", { + enumerable: true, + get: function get() { + return _parsers.parseRawEvents; + } + }); + Object.defineProperty(exports2, "parseRawSimulation", { + enumerable: true, + get: function get() { + return _parsers.parseRawSimulation; + } + }); + var _api = require_api3(); + Object.keys(_api).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _api[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _api[key]; + } + }); + }); + var _server = require_server3(); + var _axios = _interopRequireDefault(require_axios2()); + var _parsers = require_parsers(); + var _transaction = require_transaction6(); + Object.keys(_transaction).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _transaction[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _transaction[key]; + } + }); + }); + function _interopRequireDefault(e) { + return e && e.__esModule ? e : { default: e }; + } + var _default = exports2.default = module2.exports; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/rust_result.js +var require_rust_result = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/rust_result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Ok = exports2.Err = void 0; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var Ok = exports2.Ok = function() { + function Ok2(value) { + _classCallCheck(this, Ok2); + this.value = value; + } + return _createClass(Ok2, [{ + key: "unwrapErr", + value: function unwrapErr() { + throw new Error("No error"); + } + }, { + key: "unwrap", + value: function unwrap() { + return this.value; + } + }, { + key: "isOk", + value: function isOk() { + return true; + } + }, { + key: "isErr", + value: function isErr() { + return false; + } + }]); + }(); + var Err = exports2.Err = function() { + function Err2(error) { + _classCallCheck(this, Err2); + this.error = error; + } + return _createClass(Err2, [{ + key: "unwrapErr", + value: function unwrapErr() { + return this.error; + } + }, { + key: "unwrap", + value: function unwrap() { + throw new Error(this.error.message); + } + }, { + key: "isOk", + value: function isOk() { + return false; + } + }, { + key: "isErr", + value: function isErr() { + return true; + } + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/types.js +var require_types7 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.NULL_ACCOUNT = exports2.DEFAULT_TIMEOUT = void 0; + var _stellarBase = require_lib20(); + var DEFAULT_TIMEOUT = exports2.DEFAULT_TIMEOUT = 5 * 60; + var NULL_ACCOUNT = exports2.NULL_ACCOUNT = "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF"; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/utils.js +var require_utils27 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.contractErrorPattern = void 0; + exports2.getAccount = getAccount; + exports2.implementsToString = implementsToString; + exports2.processSpecEntryStream = processSpecEntryStream; + exports2.specFromWasm = specFromWasm; + exports2.withExponentialBackoff = withExponentialBackoff; + var _stellarBase = require_lib20(); + var _types = require_types7(); + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function withExponentialBackoff(_x, _x2, _x3) { + return _withExponentialBackoff.apply(this, arguments); + } + function _withExponentialBackoff() { + _withExponentialBackoff = _asyncToGenerator(_regenerator().m(function _callee(fn, keepWaitingIf, timeoutInSeconds) { + var exponentialFactor, verbose, attempts, count, waitUntil, waitTime, totalWaitTime, _args = arguments, _t, _t2; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + exponentialFactor = _args.length > 3 && _args[3] !== void 0 ? _args[3] : 1.5; + verbose = _args.length > 4 && _args[4] !== void 0 ? _args[4] : false; + attempts = []; + count = 0; + _t = attempts; + _context.n = 1; + return fn(); + case 1: + _t.push.call(_t, _context.v); + if (keepWaitingIf(attempts[attempts.length - 1])) { + _context.n = 2; + break; + } + return _context.a(2, attempts); + case 2: + waitUntil = new Date(Date.now() + timeoutInSeconds * 1e3).valueOf(); + waitTime = 1e3; + totalWaitTime = waitTime; + case 3: + if (!(Date.now() < waitUntil && keepWaitingIf(attempts[attempts.length - 1]))) { + _context.n = 6; + break; + } + count += 1; + if (verbose) { + console.info("Waiting ".concat(waitTime, "ms before trying again (bringing the total wait time to ").concat(totalWaitTime, "ms so far, of total ").concat(timeoutInSeconds * 1e3, "ms)")); + } + _context.n = 4; + return new Promise(function(res) { + return setTimeout(res, waitTime); + }); + case 4: + waitTime *= exponentialFactor; + if (new Date(Date.now() + waitTime).valueOf() > waitUntil) { + waitTime = waitUntil - Date.now(); + if (verbose) { + console.info("was gonna wait too long; new waitTime: ".concat(waitTime, "ms")); + } + } + totalWaitTime = waitTime + totalWaitTime; + _t2 = attempts; + _context.n = 5; + return fn(attempts[attempts.length - 1]); + case 5: + _t2.push.call(_t2, _context.v); + if (verbose && keepWaitingIf(attempts[attempts.length - 1])) { + console.info("".concat(count, ". Called ").concat(fn, "; ").concat(attempts.length, " prev attempts. Most recent: ").concat(JSON.stringify(attempts[attempts.length - 1], null, 2))); + } + _context.n = 3; + break; + case 6: + return _context.a(2, attempts); + } + }, _callee); + })); + return _withExponentialBackoff.apply(this, arguments); + } + var contractErrorPattern = exports2.contractErrorPattern = /Error\(Contract, #(\d+)\)/; + function implementsToString(obj) { + return _typeof(obj) === "object" && obj !== null && "toString" in obj; + } + function specFromWasm(_x4) { + return _specFromWasm.apply(this, arguments); + } + function _specFromWasm() { + _specFromWasm = _asyncToGenerator(_regenerator().m(function _callee2(wasm) { + var xdrSections, wasmModule, customData, _t3; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.p = _context2.n) { + case 0: + _context2.p = 0; + _context2.n = 1; + return WebAssembly.compile(wasm); + case 1: + wasmModule = _context2.v; + xdrSections = WebAssembly.Module.customSections(wasmModule, "contractspecv0"); + _context2.n = 3; + break; + case 2: + _context2.p = 2; + _t3 = _context2.v; + customData = parseWasmCustomSections(wasm); + xdrSections = customData.get("contractspecv0"); + case 3: + if (!(!xdrSections || xdrSections.length === 0)) { + _context2.n = 4; + break; + } + throw new Error("Could not obtain contract spec from wasm"); + case 4: + return _context2.a(2, Buffer.from(xdrSections[0])); + } + }, _callee2, null, [[0, 2]]); + })); + return _specFromWasm.apply(this, arguments); + } + function parseWasmCustomSections(buffer) { + var sections = /* @__PURE__ */ new Map(); + var arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength); + var offset = 0; + var read = function read2(length) { + if (offset + length > buffer.byteLength) throw new Error("Buffer overflow"); + var bytes = new Uint8Array(arrayBuffer, offset, length); + offset += length; + return bytes; + }; + if (_toConsumableArray(read(4)).join() !== "0,97,115,109") throw new Error("Invalid WASM magic"); + if (_toConsumableArray(read(4)).join() !== "1,0,0,0") throw new Error("Invalid WASM version"); + while (offset < buffer.byteLength) { + var sectionId = read(1)[0]; + var sectionLength = readVarUint32(); + var start = offset; + if (sectionId === 0) { + var nameLen = readVarUint32(); + if (nameLen === 0 || offset + nameLen > start + sectionLength) continue; + var nameBytes = read(nameLen); + var payload = read(sectionLength - (offset - start)); + try { + var name = new TextDecoder("utf-8", { + fatal: true + }).decode(nameBytes); + if (payload.length > 0) { + sections.set(name, (sections.get(name) || []).concat(payload)); + } + } catch (_unused) { + } + } else { + offset += sectionLength; + } + } + function readVarUint32() { + var value = 0, shift = 0; + while (true) { + var byte = read(1)[0]; + value |= (byte & 127) << shift; + if ((byte & 128) === 0) break; + if ((shift += 7) >= 32) throw new Error("Invalid WASM value"); + } + return value >>> 0; + } + return sections; + } + function processSpecEntryStream(buffer) { + var reader = new _stellarBase.cereal.XdrReader(buffer); + var res = []; + while (!reader.eof) { + res.push(_stellarBase.xdr.ScSpecEntry.read(reader)); + } + return res; + } + function getAccount(_x5, _x6) { + return _getAccount.apply(this, arguments); + } + function _getAccount() { + _getAccount = _asyncToGenerator(_regenerator().m(function _callee3(options, server) { + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + return _context3.a(2, options.publicKey ? server.getAccount(options.publicKey) : new _stellarBase.Account(_types.NULL_ACCOUNT, "0")); + } + }, _callee3); + })); + return _getAccount.apply(this, arguments); + } + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/sent_transaction.js +var require_sent_transaction = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/sent_transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Watcher = exports2.SentTransaction = void 0; + var _rpc = require_rpc2(); + var _api = require_api3(); + var _utils = require_utils27(); + var _types = require_types7(); + var _SentTransaction; + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t2) { + if (null === t2 || !_isNativeFunction(t2)) return t2; + if ("function" != typeof t2) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t2)) return r.get(t2); + r.set(t2, Wrapper); + } + function Wrapper() { + return _construct(t2, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t2); + }, _wrapNativeSuper(t); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var SentTransaction = exports2.SentTransaction = function() { + function SentTransaction2(assembled) { + var _this = this, _this$assembled$optio2; + _classCallCheck(this, SentTransaction2); + _defineProperty(this, "send", function() { + var _ref = _asyncToGenerator(_regenerator().m(function _callee2(watcher) { + var _this$assembled$optio; + var hash, timeoutInSeconds; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + _context2.n = 1; + return _this.server.sendTransaction(_this.assembled.signed); + case 1: + _this.sendTransactionResponse = _context2.v; + if (!(_this.sendTransactionResponse.status !== "PENDING")) { + _context2.n = 2; + break; + } + throw new SentTransaction2.Errors.SendFailed("Sending the transaction to the network failed!\n".concat(JSON.stringify(_this.sendTransactionResponse, null, 2))); + case 2: + if (watcher !== null && watcher !== void 0 && watcher.onSubmitted) watcher.onSubmitted(_this.sendTransactionResponse); + hash = _this.sendTransactionResponse.hash; + timeoutInSeconds = (_this$assembled$optio = _this.assembled.options.timeoutInSeconds) !== null && _this$assembled$optio !== void 0 ? _this$assembled$optio : _types.DEFAULT_TIMEOUT; + _context2.n = 3; + return (0, _utils.withExponentialBackoff)(_asyncToGenerator(_regenerator().m(function _callee() { + var tx; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + _context.n = 1; + return _this.server.getTransaction(hash); + case 1: + tx = _context.v; + if (watcher !== null && watcher !== void 0 && watcher.onProgress) watcher.onProgress(tx); + return _context.a(2, tx); + } + }, _callee); + })), function(resp) { + return resp.status === _api.Api.GetTransactionStatus.NOT_FOUND; + }, timeoutInSeconds); + case 3: + _this.getTransactionResponseAll = _context2.v; + _this.getTransactionResponse = _this.getTransactionResponseAll[_this.getTransactionResponseAll.length - 1]; + if (!(_this.getTransactionResponse.status === _api.Api.GetTransactionStatus.NOT_FOUND)) { + _context2.n = 4; + break; + } + throw new SentTransaction2.Errors.TransactionStillPending("Waited ".concat(timeoutInSeconds, " seconds for transaction to complete, but it did not. ") + "Returning anyway. Check the transaction status manually. " + "Sent transaction: ".concat(JSON.stringify(_this.sendTransactionResponse, null, 2), "\n") + "All attempts to get the result: ".concat(JSON.stringify(_this.getTransactionResponseAll, null, 2))); + case 4: + return _context2.a(2, _this); + } + }, _callee2); + })); + return function(_x) { + return _ref.apply(this, arguments); + }; + }()); + this.assembled = assembled; + this.server = new _rpc.Server(this.assembled.options.rpcUrl, { + allowHttp: (_this$assembled$optio2 = this.assembled.options.allowHttp) !== null && _this$assembled$optio2 !== void 0 ? _this$assembled$optio2 : false + }); + } + return _createClass(SentTransaction2, [{ + key: "result", + get: function get() { + if ("getTransactionResponse" in this && this.getTransactionResponse) { + if ("returnValue" in this.getTransactionResponse) { + return this.assembled.options.parseResultXdr(this.getTransactionResponse.returnValue); + } + throw new Error("Transaction failed! Cannot parse result."); + } + if (this.sendTransactionResponse) { + var _this$sendTransaction; + var errorResult = (_this$sendTransaction = this.sendTransactionResponse.errorResult) === null || _this$sendTransaction === void 0 ? void 0 : _this$sendTransaction.result(); + if (errorResult) { + throw new SentTransaction2.Errors.SendFailed("Transaction simulation looked correct, but attempting to send the transaction failed. Check `simulation` and `sendTransactionResponseAll` to troubleshoot. Decoded `sendTransactionResponse.errorResultXdr`: ".concat(errorResult)); + } + throw new SentTransaction2.Errors.SendResultOnly("Transaction was sent to the network, but not yet awaited. No result to show. Await transaction completion with `getTransaction(sendTransactionResponse.hash)`"); + } + throw new Error("Sending transaction failed: ".concat(JSON.stringify(this.assembled.signed))); + } + }]); + }(); + _SentTransaction = SentTransaction; + _defineProperty(SentTransaction, "Errors", { + SendFailed: function(_Error) { + function SendFailedError() { + _classCallCheck(this, SendFailedError); + return _callSuper(this, SendFailedError, arguments); + } + _inherits(SendFailedError, _Error); + return _createClass(SendFailedError); + }(_wrapNativeSuper(Error)), + SendResultOnly: function(_Error2) { + function SendResultOnlyError() { + _classCallCheck(this, SendResultOnlyError); + return _callSuper(this, SendResultOnlyError, arguments); + } + _inherits(SendResultOnlyError, _Error2); + return _createClass(SendResultOnlyError); + }(_wrapNativeSuper(Error)), + TransactionStillPending: function(_Error3) { + function TransactionStillPendingError() { + _classCallCheck(this, TransactionStillPendingError); + return _callSuper(this, TransactionStillPendingError, arguments); + } + _inherits(TransactionStillPendingError, _Error3); + return _createClass(TransactionStillPendingError); + }(_wrapNativeSuper(Error)) + }); + _defineProperty(SentTransaction, "init", function() { + var _ref3 = _asyncToGenerator(_regenerator().m(function _callee3(assembled, watcher) { + var tx, sent; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + tx = new _SentTransaction(assembled); + _context3.n = 1; + return tx.send(watcher); + case 1: + sent = _context3.v; + return _context3.a(2, sent); + } + }, _callee3); + })); + return function(_x2, _x3) { + return _ref3.apply(this, arguments); + }; + }()); + var Watcher = exports2.Watcher = _createClass(function Watcher2() { + _classCallCheck(this, Watcher2); + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/assembled_transaction.js +var require_assembled_transaction = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/assembled_transaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.AssembledTransaction = void 0; + var _stellarBase = require_lib20(); + var _rpc = require_rpc2(); + var _api = require_api3(); + var _transaction = require_transaction6(); + var _rust_result = require_rust_result(); + var _utils = require_utils27(); + var _types = require_types7(); + var _sent_transaction = require_sent_transaction(); + function _callSuper(t, o, e) { + return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); + } + function _possibleConstructorReturn(t, e) { + if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; + if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); + return _assertThisInitialized(t); + } + function _assertThisInitialized(e) { + if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return e; + } + function _inherits(t, e) { + if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); + t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: true, configurable: true } }), Object.defineProperty(t, "prototype", { writable: false }), e && _setPrototypeOf(t, e); + } + function _wrapNativeSuper(t) { + var r = "function" == typeof Map ? /* @__PURE__ */ new Map() : void 0; + return _wrapNativeSuper = function _wrapNativeSuper2(t2) { + if (null === t2 || !_isNativeFunction(t2)) return t2; + if ("function" != typeof t2) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(t2)) return r.get(t2); + r.set(t2, Wrapper); + } + function Wrapper() { + return _construct(t2, arguments, _getPrototypeOf(this).constructor); + } + return Wrapper.prototype = Object.create(t2.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }), _setPrototypeOf(Wrapper, t2); + }, _wrapNativeSuper(t); + } + function _construct(t, e, r) { + if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); + var o = [null]; + o.push.apply(o, e); + var p = new (t.bind.apply(t, o))(); + return r && _setPrototypeOf(p, r.prototype), p; + } + function _isNativeReflectConstruct() { + try { + var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() { + })); + } catch (t2) { + } + return (_isNativeReflectConstruct = function _isNativeReflectConstruct2() { + return !!t; + })(); + } + function _isNativeFunction(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]"); + } catch (n) { + return "function" == typeof t; + } + } + function _setPrototypeOf(t, e) { + return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t2, e2) { + return t2.__proto__ = e2, t2; + }, _setPrototypeOf(t, e); + } + function _getPrototypeOf(t) { + return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(t2) { + return t2.__proto__ || Object.getPrototypeOf(t2); + }, _getPrototypeOf(t); + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _regeneratorValues(e) { + if (null != e) { + var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; + if (t) return t.call(e); + if ("function" == typeof e.next) return e; + if (!isNaN(e.length)) return { next: function next() { + return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; + } }; + } + throw new TypeError(_typeof(e) + " is not iterable"); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function _createForOfIteratorHelper(r, e) { + var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (!t) { + if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { + t && (r = t); + var _n = 0, F = function F2() { + }; + return { s: F, n: function n() { + return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; + }, e: function e2(r2) { + throw r2; + }, f: F }; + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + var o, a = true, u = false; + return { s: function s() { + t = t.call(r); + }, n: function n() { + var r2 = t.next(); + return a = r2.done, r2; + }, e: function e2(r2) { + u = true, o = r2; + }, f: function f() { + try { + a || null == t.return || t.return(); + } finally { + if (u) throw o; + } + } }; + } + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function _toConsumableArray(r) { + return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); + } + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _iterableToArray(r) { + if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); + } + function _arrayWithoutHoles(r) { + if (Array.isArray(r)) return _arrayLikeToArray(r); + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + var AssembledTransaction = exports2.AssembledTransaction = function() { + function AssembledTransaction2(options) { + var _this = this, _this$options$simulat, _this$options$allowHt; + _classCallCheck(this, AssembledTransaction2); + _defineProperty(this, "simulate", _asyncToGenerator(_regenerator().m(function _callee() { + var _ref2, restore, account, result, _this$options$fee, _this$options$args, _this$options$timeout, contract, _args = arguments; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + _ref2 = _args.length > 0 && _args[0] !== void 0 ? _args[0] : {}, restore = _ref2.restore; + if (_this.built) { + _context.n = 2; + break; + } + if (_this.raw) { + _context.n = 1; + break; + } + throw new Error("Transaction has not yet been assembled; call `AssembledTransaction.build` first."); + case 1: + _this.built = _this.raw.build(); + case 2: + restore = restore !== null && restore !== void 0 ? restore : _this.options.restore; + delete _this.simulationResult; + delete _this.simulationTransactionData; + _context.n = 3; + return _this.server.simulateTransaction(_this.built); + case 3: + _this.simulation = _context.v; + if (!(restore && _api.Api.isSimulationRestore(_this.simulation))) { + _context.n = 8; + break; + } + _context.n = 4; + return (0, _utils.getAccount)(_this.options, _this.server); + case 4: + account = _context.v; + _context.n = 5; + return _this.restoreFootprint(_this.simulation.restorePreamble, account); + case 5: + result = _context.v; + if (!(result.status === _api.Api.GetTransactionStatus.SUCCESS)) { + _context.n = 7; + break; + } + contract = new _stellarBase.Contract(_this.options.contractId); + _this.raw = new _stellarBase.TransactionBuilder(account, { + fee: (_this$options$fee = _this.options.fee) !== null && _this$options$fee !== void 0 ? _this$options$fee : _stellarBase.BASE_FEE, + networkPassphrase: _this.options.networkPassphrase + }).addOperation(contract.call.apply(contract, [_this.options.method].concat(_toConsumableArray((_this$options$args = _this.options.args) !== null && _this$options$args !== void 0 ? _this$options$args : [])))).setTimeout((_this$options$timeout = _this.options.timeoutInSeconds) !== null && _this$options$timeout !== void 0 ? _this$options$timeout : _types.DEFAULT_TIMEOUT); + _context.n = 6; + return _this.simulate(); + case 6: + return _context.a(2, _this); + case 7: + throw new AssembledTransaction2.Errors.RestorationFailure("Automatic restore failed! You set 'restore: true' but the attempted restore did not work. Result:\n".concat(JSON.stringify(result))); + case 8: + if (_api.Api.isSimulationSuccess(_this.simulation)) { + _this.built = (0, _transaction.assembleTransaction)(_this.built, _this.simulation).build(); + } + return _context.a(2, _this); + } + }, _callee); + }))); + _defineProperty(this, "sign", _asyncToGenerator(_regenerator().m(function _callee2() { + var _this$options$timeout2; + var _ref4, _ref4$force, force, _ref4$signTransaction, signTransaction, sigsNeeded, timeoutInSeconds, signOpts, _yield$signTransactio, signature, error, _args2 = arguments; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + _ref4 = _args2.length > 0 && _args2[0] !== void 0 ? _args2[0] : {}, _ref4$force = _ref4.force, force = _ref4$force === void 0 ? false : _ref4$force, _ref4$signTransaction = _ref4.signTransaction, signTransaction = _ref4$signTransaction === void 0 ? _this.options.signTransaction : _ref4$signTransaction; + if (_this.built) { + _context2.n = 1; + break; + } + throw new Error("Transaction has not yet been simulated"); + case 1: + if (!(!force && _this.isReadCall)) { + _context2.n = 2; + break; + } + throw new AssembledTransaction2.Errors.NoSignatureNeeded("This is a read call. It requires no signature or sending. Use `force: true` to sign and send anyway."); + case 2: + if (signTransaction) { + _context2.n = 3; + break; + } + throw new AssembledTransaction2.Errors.NoSigner("You must provide a signTransaction function, either when calling `signAndSend` or when initializing your Client"); + case 3: + sigsNeeded = _this.needsNonInvokerSigningBy().filter(function(id) { + return !id.startsWith("C"); + }); + if (!sigsNeeded.length) { + _context2.n = 4; + break; + } + throw new AssembledTransaction2.Errors.NeedsMoreSignatures("Transaction requires signatures from ".concat(sigsNeeded, ". ") + "See `needsNonInvokerSigningBy` for details."); + case 4: + timeoutInSeconds = (_this$options$timeout2 = _this.options.timeoutInSeconds) !== null && _this$options$timeout2 !== void 0 ? _this$options$timeout2 : _types.DEFAULT_TIMEOUT; + _this.built = _stellarBase.TransactionBuilder.cloneFrom(_this.built, { + fee: _this.built.fee, + timebounds: void 0, + sorobanData: _this.simulationData.transactionData + }).setTimeout(timeoutInSeconds).build(); + signOpts = { + networkPassphrase: _this.options.networkPassphrase + }; + if (_this.options.address) signOpts.address = _this.options.address; + if (_this.options.submit !== void 0) signOpts.submit = _this.options.submit; + if (_this.options.submitUrl) signOpts.submitUrl = _this.options.submitUrl; + _context2.n = 5; + return signTransaction(_this.built.toXDR(), signOpts); + case 5: + _yield$signTransactio = _context2.v; + signature = _yield$signTransactio.signedTxXdr; + error = _yield$signTransactio.error; + _this.handleWalletError(error); + _this.signed = _stellarBase.TransactionBuilder.fromXDR(signature, _this.options.networkPassphrase); + case 6: + return _context2.a(2); + } + }, _callee2); + }))); + _defineProperty(this, "signAndSend", _asyncToGenerator(_regenerator().m(function _callee3() { + var _ref6, _ref6$force, force, _ref6$signTransaction, signTransaction, watcher, originalSubmit, _args3 = arguments; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.p = _context3.n) { + case 0: + _ref6 = _args3.length > 0 && _args3[0] !== void 0 ? _args3[0] : {}, _ref6$force = _ref6.force, force = _ref6$force === void 0 ? false : _ref6$force, _ref6$signTransaction = _ref6.signTransaction, signTransaction = _ref6$signTransaction === void 0 ? _this.options.signTransaction : _ref6$signTransaction, watcher = _ref6.watcher; + if (_this.signed) { + _context3.n = 3; + break; + } + originalSubmit = _this.options.submit; + if (_this.options.submit) { + _this.options.submit = false; + } + _context3.p = 1; + _context3.n = 2; + return _this.sign({ + force, + signTransaction + }); + case 2: + _context3.p = 2; + _this.options.submit = originalSubmit; + return _context3.f(2); + case 3: + return _context3.a(2, _this.send(watcher)); + } + }, _callee3, null, [[1, , 2, 3]]); + }))); + _defineProperty(this, "needsNonInvokerSigningBy", function() { + var _rawInvokeHostFunctio; + var _ref7 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref7$includeAlreadyS = _ref7.includeAlreadySigned, includeAlreadySigned = _ref7$includeAlreadyS === void 0 ? false : _ref7$includeAlreadyS; + if (!_this.built) { + throw new Error("Transaction has not yet been simulated"); + } + if (!("operations" in _this.built)) { + throw new Error("Unexpected Transaction type; no operations: ".concat(JSON.stringify(_this.built))); + } + var rawInvokeHostFunctionOp = _this.built.operations[0]; + return _toConsumableArray(new Set(((_rawInvokeHostFunctio = rawInvokeHostFunctionOp.auth) !== null && _rawInvokeHostFunctio !== void 0 ? _rawInvokeHostFunctio : []).filter(function(entry) { + return entry.credentials().switch() === _stellarBase.xdr.SorobanCredentialsType.sorobanCredentialsAddress() && (includeAlreadySigned || entry.credentials().address().signature().switch().name === "scvVoid"); + }).map(function(entry) { + return _stellarBase.Address.fromScAddress(entry.credentials().address().address()).toString(); + }))); + }); + _defineProperty(this, "signAuthEntries", _asyncToGenerator(_regenerator().m(function _callee6() { + var _rawInvokeHostFunctio2; + var _ref9, _ref9$expiration, expiration, _ref9$signAuthEntry, signAuthEntry, _ref9$address, address, _ref9$authorizeEntry, authorizeEntry, needsNonInvokerSigningBy, rawInvokeHostFunctionOp, authEntries, _iterator, _step, _loop, _ret, _args7 = arguments, _t5; + return _regenerator().w(function(_context7) { + while (1) switch (_context7.p = _context7.n) { + case 0: + _ref9 = _args7.length > 0 && _args7[0] !== void 0 ? _args7[0] : {}, _ref9$expiration = _ref9.expiration, expiration = _ref9$expiration === void 0 ? _asyncToGenerator(_regenerator().m(function _callee4() { + var _t; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.n) { + case 0: + _context4.n = 1; + return _this.server.getLatestLedger(); + case 1: + _t = _context4.v.sequence; + return _context4.a(2, _t + 100); + } + }, _callee4); + }))() : _ref9$expiration, _ref9$signAuthEntry = _ref9.signAuthEntry, signAuthEntry = _ref9$signAuthEntry === void 0 ? _this.options.signAuthEntry : _ref9$signAuthEntry, _ref9$address = _ref9.address, address = _ref9$address === void 0 ? _this.options.publicKey : _ref9$address, _ref9$authorizeEntry = _ref9.authorizeEntry, authorizeEntry = _ref9$authorizeEntry === void 0 ? _stellarBase.authorizeEntry : _ref9$authorizeEntry; + if (_this.built) { + _context7.n = 1; + break; + } + throw new Error("Transaction has not yet been assembled or simulated"); + case 1: + if (!(authorizeEntry === _stellarBase.authorizeEntry)) { + _context7.n = 4; + break; + } + needsNonInvokerSigningBy = _this.needsNonInvokerSigningBy(); + if (!(needsNonInvokerSigningBy.length === 0)) { + _context7.n = 2; + break; + } + throw new AssembledTransaction2.Errors.NoUnsignedNonInvokerAuthEntries("No unsigned non-invoker auth entries; maybe you already signed?"); + case 2: + if (!(needsNonInvokerSigningBy.indexOf(address !== null && address !== void 0 ? address : "") === -1)) { + _context7.n = 3; + break; + } + throw new AssembledTransaction2.Errors.NoSignatureNeeded('No auth entries for public key "'.concat(address, '"')); + case 3: + if (signAuthEntry) { + _context7.n = 4; + break; + } + throw new AssembledTransaction2.Errors.NoSigner("You must provide `signAuthEntry` or a custom `authorizeEntry`"); + case 4: + rawInvokeHostFunctionOp = _this.built.operations[0]; + authEntries = (_rawInvokeHostFunctio2 = rawInvokeHostFunctionOp.auth) !== null && _rawInvokeHostFunctio2 !== void 0 ? _rawInvokeHostFunctio2 : []; + _iterator = _createForOfIteratorHelper(authEntries.entries()); + _context7.p = 5; + _loop = _regenerator().m(function _loop2() { + var _step$value, i, entry, credentials, authEntryAddress, sign, _t2, _t3, _t4; + return _regenerator().w(function(_context6) { + while (1) switch (_context6.n) { + case 0: + _step$value = _slicedToArray(_step.value, 2), i = _step$value[0], entry = _step$value[1]; + credentials = _stellarBase.xdr.SorobanCredentials.fromXDR(entry.credentials().toXDR()); + if (!(credentials.switch() !== _stellarBase.xdr.SorobanCredentialsType.sorobanCredentialsAddress())) { + _context6.n = 1; + break; + } + return _context6.a(2, 0); + case 1: + authEntryAddress = _stellarBase.Address.fromScAddress(credentials.address().address()).toString(); + if (!(authEntryAddress !== address)) { + _context6.n = 2; + break; + } + return _context6.a(2, 0); + case 2: + sign = signAuthEntry !== null && signAuthEntry !== void 0 ? signAuthEntry : Promise.resolve; + _t2 = authorizeEntry; + _t3 = entry; + _t4 = function() { + var _ref1 = _asyncToGenerator(_regenerator().m(function _callee5(preimage) { + var _yield$sign, signedAuthEntry, error; + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + _context5.n = 1; + return sign(preimage.toXDR("base64"), { + address + }); + case 1: + _yield$sign = _context5.v; + signedAuthEntry = _yield$sign.signedAuthEntry; + error = _yield$sign.error; + _this.handleWalletError(error); + return _context5.a(2, Buffer.from(signedAuthEntry, "base64")); + } + }, _callee5); + })); + return function(_x) { + return _ref1.apply(this, arguments); + }; + }(); + _context6.n = 3; + return expiration; + case 3: + _context6.n = 4; + return _t2(_t3, _t4, _context6.v, _this.options.networkPassphrase); + case 4: + authEntries[i] = _context6.v; + case 5: + return _context6.a(2); + } + }, _loop2); + }); + _iterator.s(); + case 6: + if ((_step = _iterator.n()).done) { + _context7.n = 9; + break; + } + return _context7.d(_regeneratorValues(_loop()), 7); + case 7: + _ret = _context7.v; + if (!(_ret === 0)) { + _context7.n = 8; + break; + } + return _context7.a(3, 8); + case 8: + _context7.n = 6; + break; + case 9: + _context7.n = 11; + break; + case 10: + _context7.p = 10; + _t5 = _context7.v; + _iterator.e(_t5); + case 11: + _context7.p = 11; + _iterator.f(); + return _context7.f(11); + case 12: + return _context7.a(2); + } + }, _callee6, null, [[5, 10, 11, 12]]); + }))); + this.options = options; + this.options.simulate = (_this$options$simulat = this.options.simulate) !== null && _this$options$simulat !== void 0 ? _this$options$simulat : true; + this.server = new _rpc.Server(this.options.rpcUrl, { + allowHttp: (_this$options$allowHt = this.options.allowHttp) !== null && _this$options$allowHt !== void 0 ? _this$options$allowHt : false + }); + } + return _createClass(AssembledTransaction2, [{ + key: "toJSON", + value: function toJSON() { + var _this$built; + return JSON.stringify({ + method: this.options.method, + tx: (_this$built = this.built) === null || _this$built === void 0 ? void 0 : _this$built.toXDR(), + simulationResult: { + auth: this.simulationData.result.auth.map(function(a) { + return a.toXDR("base64"); + }), + retval: this.simulationData.result.retval.toXDR("base64") + }, + simulationTransactionData: this.simulationData.transactionData.toXDR("base64") + }); + } + }, { + key: "toXDR", + value: function toXDR() { + var _this$built2; + if (!this.built) throw new Error("Transaction has not yet been simulated; call `AssembledTransaction.simulate` first."); + return (_this$built2 = this.built) === null || _this$built2 === void 0 ? void 0 : _this$built2.toEnvelope().toXDR("base64"); + } + }, { + key: "handleWalletError", + value: function handleWalletError(error) { + if (!error) return; + var message = error.message, code = error.code; + var fullMessage = "".concat(message).concat(error.ext ? " (".concat(error.ext.join(", "), ")") : ""); + switch (code) { + case -1: + throw new AssembledTransaction2.Errors.InternalWalletError(fullMessage); + case -2: + throw new AssembledTransaction2.Errors.ExternalServiceError(fullMessage); + case -3: + throw new AssembledTransaction2.Errors.InvalidClientRequest(fullMessage); + case -4: + throw new AssembledTransaction2.Errors.UserRejected(fullMessage); + default: + throw new Error("Unhandled error: ".concat(fullMessage)); + } + } + }, { + key: "simulationData", + get: function get() { + var _simulation$result; + if (this.simulationResult && this.simulationTransactionData) { + return { + result: this.simulationResult, + transactionData: this.simulationTransactionData + }; + } + var simulation = this.simulation; + if (!simulation) { + throw new AssembledTransaction2.Errors.NotYetSimulated("Transaction has not yet been simulated"); + } + if (_api.Api.isSimulationError(simulation)) { + throw new AssembledTransaction2.Errors.SimulationFailed('Transaction simulation failed: "'.concat(simulation.error, '"')); + } + if (_api.Api.isSimulationRestore(simulation)) { + throw new AssembledTransaction2.Errors.ExpiredState("You need to restore some contract state before you can invoke this method.\nYou can set `restore` to true in the method options in order to automatically restore the contract state when needed."); + } + this.simulationResult = (_simulation$result = simulation.result) !== null && _simulation$result !== void 0 ? _simulation$result : { + auth: [], + retval: _stellarBase.xdr.ScVal.scvVoid() + }; + this.simulationTransactionData = simulation.transactionData.build(); + return { + result: this.simulationResult, + transactionData: this.simulationTransactionData + }; + } + }, { + key: "result", + get: function get() { + try { + if (!this.simulationData.result) { + throw new Error("No simulation result!"); + } + return this.options.parseResultXdr(this.simulationData.result.retval); + } catch (e) { + if (!(0, _utils.implementsToString)(e)) throw e; + var err2 = this.parseError(e.toString()); + if (err2) return err2; + throw e; + } + } + }, { + key: "parseError", + value: function parseError(errorMessage) { + if (!this.options.errorTypes) return void 0; + var match = errorMessage.match(_utils.contractErrorPattern); + if (!match) return void 0; + var i = parseInt(match[1], 10); + var err2 = this.options.errorTypes[i]; + if (!err2) return void 0; + return new _rust_result.Err(err2); + } + }, { + key: "send", + value: function() { + var _send = _asyncToGenerator(_regenerator().m(function _callee7(watcher) { + var sent; + return _regenerator().w(function(_context8) { + while (1) switch (_context8.n) { + case 0: + if (this.signed) { + _context8.n = 1; + break; + } + throw new Error("The transaction has not yet been signed. Run `sign` first, or use `signAndSend` instead."); + case 1: + _context8.n = 2; + return _sent_transaction.SentTransaction.init(this, watcher); + case 2: + sent = _context8.v; + return _context8.a(2, sent); + } + }, _callee7, this); + })); + function send(_x2) { + return _send.apply(this, arguments); + } + return send; + }() + }, { + key: "isReadCall", + get: function get() { + var authsCount = this.simulationData.result.auth.length; + var writeLength = this.simulationData.transactionData.resources().footprint().readWrite().length; + return authsCount === 0 && writeLength === 0; + } + }, { + key: "restoreFootprint", + value: function() { + var _restoreFootprint = _asyncToGenerator(_regenerator().m(function _callee8(restorePreamble, account) { + var restoreTx, sentTransaction, _t6; + return _regenerator().w(function(_context9) { + while (1) switch (_context9.n) { + case 0: + if (this.options.signTransaction) { + _context9.n = 1; + break; + } + throw new Error("For automatic restore to work you must provide a signTransaction function when initializing your Client"); + case 1: + if (!(account !== null && account !== void 0)) { + _context9.n = 2; + break; + } + _t6 = account; + _context9.n = 4; + break; + case 2: + _context9.n = 3; + return (0, _utils.getAccount)(this.options, this.server); + case 3: + _t6 = _context9.v; + case 4: + account = _t6; + _context9.n = 5; + return AssembledTransaction2.buildFootprintRestoreTransaction(_objectSpread({}, this.options), restorePreamble.transactionData, account, restorePreamble.minResourceFee); + case 5: + restoreTx = _context9.v; + _context9.n = 6; + return restoreTx.signAndSend(); + case 6: + sentTransaction = _context9.v; + if (sentTransaction.getTransactionResponse) { + _context9.n = 7; + break; + } + throw new AssembledTransaction2.Errors.RestorationFailure("The attempt at automatic restore failed. \n".concat(JSON.stringify(sentTransaction))); + case 7: + return _context9.a(2, sentTransaction.getTransactionResponse); + } + }, _callee8, this); + })); + function restoreFootprint(_x3, _x4) { + return _restoreFootprint.apply(this, arguments); + } + return restoreFootprint; + }() + }], [{ + key: "fromJSON", + value: function fromJSON(options, _ref10) { + var tx = _ref10.tx, simulationResult = _ref10.simulationResult, simulationTransactionData = _ref10.simulationTransactionData; + var txn = new AssembledTransaction2(options); + txn.built = _stellarBase.TransactionBuilder.fromXDR(tx, options.networkPassphrase); + txn.simulationResult = { + auth: simulationResult.auth.map(function(a) { + return _stellarBase.xdr.SorobanAuthorizationEntry.fromXDR(a, "base64"); + }), + retval: _stellarBase.xdr.ScVal.fromXDR(simulationResult.retval, "base64") + }; + txn.simulationTransactionData = _stellarBase.xdr.SorobanTransactionData.fromXDR(simulationTransactionData, "base64"); + return txn; + } + }, { + key: "fromXDR", + value: function fromXDR(options, encodedXDR, spec) { + var _operation$func; + var envelope = _stellarBase.xdr.TransactionEnvelope.fromXDR(encodedXDR, "base64"); + var built = _stellarBase.TransactionBuilder.fromXDR(envelope, options.networkPassphrase); + var operation = built.operations[0]; + if (!(operation !== null && operation !== void 0 && (_operation$func = operation.func) !== null && _operation$func !== void 0 && _operation$func.value) || typeof operation.func.value !== "function") { + throw new Error("Could not extract the method from the transaction envelope."); + } + var invokeContractArgs = operation.func.value(); + if (!(invokeContractArgs !== null && invokeContractArgs !== void 0 && invokeContractArgs.functionName)) { + throw new Error("Could not extract the method name from the transaction envelope."); + } + var method = invokeContractArgs.functionName().toString("utf-8"); + var txn = new AssembledTransaction2(_objectSpread(_objectSpread({}, options), {}, { + method, + parseResultXdr: function parseResultXdr(result) { + return spec.funcResToNative(method, result); + } + })); + txn.built = built; + return txn; + } + }, { + key: "build", + value: function build(options) { + var _options$args; + var contract = new _stellarBase.Contract(options.contractId); + return AssembledTransaction2.buildWithOp(contract.call.apply(contract, [options.method].concat(_toConsumableArray((_options$args = options.args) !== null && _options$args !== void 0 ? _options$args : []))), options); + } + }, { + key: "buildWithOp", + value: function() { + var _buildWithOp = _asyncToGenerator(_regenerator().m(function _callee9(operation, options) { + var _options$fee, _options$timeoutInSec; + var tx, account; + return _regenerator().w(function(_context0) { + while (1) switch (_context0.n) { + case 0: + tx = new AssembledTransaction2(options); + _context0.n = 1; + return (0, _utils.getAccount)(options, tx.server); + case 1: + account = _context0.v; + tx.raw = new _stellarBase.TransactionBuilder(account, { + fee: (_options$fee = options.fee) !== null && _options$fee !== void 0 ? _options$fee : _stellarBase.BASE_FEE, + networkPassphrase: options.networkPassphrase + }).setTimeout((_options$timeoutInSec = options.timeoutInSeconds) !== null && _options$timeoutInSec !== void 0 ? _options$timeoutInSec : _types.DEFAULT_TIMEOUT).addOperation(operation); + if (!options.simulate) { + _context0.n = 2; + break; + } + _context0.n = 2; + return tx.simulate(); + case 2: + return _context0.a(2, tx); + } + }, _callee9); + })); + function buildWithOp(_x5, _x6) { + return _buildWithOp.apply(this, arguments); + } + return buildWithOp; + }() + }, { + key: "buildFootprintRestoreTransaction", + value: function() { + var _buildFootprintRestoreTransaction = _asyncToGenerator(_regenerator().m(function _callee0(options, sorobanData, account, fee) { + var _options$timeoutInSec2; + var tx; + return _regenerator().w(function(_context1) { + while (1) switch (_context1.n) { + case 0: + tx = new AssembledTransaction2(options); + tx.raw = new _stellarBase.TransactionBuilder(account, { + fee, + networkPassphrase: options.networkPassphrase + }).setSorobanData(sorobanData instanceof _stellarBase.SorobanDataBuilder ? sorobanData.build() : sorobanData).addOperation(_stellarBase.Operation.restoreFootprint({})).setTimeout((_options$timeoutInSec2 = options.timeoutInSeconds) !== null && _options$timeoutInSec2 !== void 0 ? _options$timeoutInSec2 : _types.DEFAULT_TIMEOUT); + _context1.n = 1; + return tx.simulate({ + restore: false + }); + case 1: + return _context1.a(2, tx); + } + }, _callee0); + })); + function buildFootprintRestoreTransaction(_x7, _x8, _x9, _x0) { + return _buildFootprintRestoreTransaction.apply(this, arguments); + } + return buildFootprintRestoreTransaction; + }() + }]); + }(); + _defineProperty(AssembledTransaction, "Errors", { + ExpiredState: function(_Error) { + function ExpiredStateError() { + _classCallCheck(this, ExpiredStateError); + return _callSuper(this, ExpiredStateError, arguments); + } + _inherits(ExpiredStateError, _Error); + return _createClass(ExpiredStateError); + }(_wrapNativeSuper(Error)), + RestorationFailure: function(_Error2) { + function RestoreFailureError() { + _classCallCheck(this, RestoreFailureError); + return _callSuper(this, RestoreFailureError, arguments); + } + _inherits(RestoreFailureError, _Error2); + return _createClass(RestoreFailureError); + }(_wrapNativeSuper(Error)), + NeedsMoreSignatures: function(_Error3) { + function NeedsMoreSignaturesError() { + _classCallCheck(this, NeedsMoreSignaturesError); + return _callSuper(this, NeedsMoreSignaturesError, arguments); + } + _inherits(NeedsMoreSignaturesError, _Error3); + return _createClass(NeedsMoreSignaturesError); + }(_wrapNativeSuper(Error)), + NoSignatureNeeded: function(_Error4) { + function NoSignatureNeededError() { + _classCallCheck(this, NoSignatureNeededError); + return _callSuper(this, NoSignatureNeededError, arguments); + } + _inherits(NoSignatureNeededError, _Error4); + return _createClass(NoSignatureNeededError); + }(_wrapNativeSuper(Error)), + NoUnsignedNonInvokerAuthEntries: function(_Error5) { + function NoUnsignedNonInvokerAuthEntriesError() { + _classCallCheck(this, NoUnsignedNonInvokerAuthEntriesError); + return _callSuper(this, NoUnsignedNonInvokerAuthEntriesError, arguments); + } + _inherits(NoUnsignedNonInvokerAuthEntriesError, _Error5); + return _createClass(NoUnsignedNonInvokerAuthEntriesError); + }(_wrapNativeSuper(Error)), + NoSigner: function(_Error6) { + function NoSignerError() { + _classCallCheck(this, NoSignerError); + return _callSuper(this, NoSignerError, arguments); + } + _inherits(NoSignerError, _Error6); + return _createClass(NoSignerError); + }(_wrapNativeSuper(Error)), + NotYetSimulated: function(_Error7) { + function NotYetSimulatedError() { + _classCallCheck(this, NotYetSimulatedError); + return _callSuper(this, NotYetSimulatedError, arguments); + } + _inherits(NotYetSimulatedError, _Error7); + return _createClass(NotYetSimulatedError); + }(_wrapNativeSuper(Error)), + FakeAccount: function(_Error8) { + function FakeAccountError() { + _classCallCheck(this, FakeAccountError); + return _callSuper(this, FakeAccountError, arguments); + } + _inherits(FakeAccountError, _Error8); + return _createClass(FakeAccountError); + }(_wrapNativeSuper(Error)), + SimulationFailed: function(_Error9) { + function SimulationFailedError() { + _classCallCheck(this, SimulationFailedError); + return _callSuper(this, SimulationFailedError, arguments); + } + _inherits(SimulationFailedError, _Error9); + return _createClass(SimulationFailedError); + }(_wrapNativeSuper(Error)), + InternalWalletError: function(_Error0) { + function InternalWalletError() { + _classCallCheck(this, InternalWalletError); + return _callSuper(this, InternalWalletError, arguments); + } + _inherits(InternalWalletError, _Error0); + return _createClass(InternalWalletError); + }(_wrapNativeSuper(Error)), + ExternalServiceError: function(_Error1) { + function ExternalServiceError() { + _classCallCheck(this, ExternalServiceError); + return _callSuper(this, ExternalServiceError, arguments); + } + _inherits(ExternalServiceError, _Error1); + return _createClass(ExternalServiceError); + }(_wrapNativeSuper(Error)), + InvalidClientRequest: function(_Error10) { + function InvalidClientRequestError() { + _classCallCheck(this, InvalidClientRequestError); + return _callSuper(this, InvalidClientRequestError, arguments); + } + _inherits(InvalidClientRequestError, _Error10); + return _createClass(InvalidClientRequestError); + }(_wrapNativeSuper(Error)), + UserRejected: function(_Error11) { + function UserRejectedError() { + _classCallCheck(this, UserRejectedError); + return _callSuper(this, UserRejectedError, arguments); + } + _inherits(UserRejectedError, _Error11); + return _createClass(UserRejectedError); + }(_wrapNativeSuper(Error)) + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/basic_node_signer.js +var require_basic_node_signer = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/basic_node_signer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.basicNodeSigner = void 0; + var _stellarBase = require_lib20(); + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + var basicNodeSigner = exports2.basicNodeSigner = function basicNodeSigner2(keypair, networkPassphrase) { + return { + signTransaction: function() { + var _signTransaction = _asyncToGenerator(_regenerator().m(function _callee(xdr, opts) { + var t; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + t = _stellarBase.TransactionBuilder.fromXDR(xdr, (opts === null || opts === void 0 ? void 0 : opts.networkPassphrase) || networkPassphrase); + t.sign(keypair); + return _context.a(2, { + signedTxXdr: t.toXDR(), + signerAddress: keypair.publicKey() + }); + } + }, _callee); + })); + function signTransaction(_x, _x2) { + return _signTransaction.apply(this, arguments); + } + return signTransaction; + }(), + signAuthEntry: function() { + var _signAuthEntry = _asyncToGenerator(_regenerator().m(function _callee2(authEntry) { + var signedAuthEntry; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + signedAuthEntry = keypair.sign((0, _stellarBase.hash)(Buffer.from(authEntry, "base64"))).toString("base64"); + return _context2.a(2, { + signedAuthEntry, + signerAddress: keypair.publicKey() + }); + } + }, _callee2); + })); + function signAuthEntry(_x3) { + return _signAuthEntry.apply(this, arguments); + } + return signAuthEntry; + }() + }; + }; + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/spec.js +var require_spec = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/spec.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Spec = void 0; + var _stellarBase = require_lib20(); + var _rust_result = require_rust_result(); + var _utils = require_utils27(); + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function _slicedToArray(r, e) { + return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); + } + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + function _unsupportedIterableToArray(r, a) { + if (r) { + if ("string" == typeof r) return _arrayLikeToArray(r, a); + var t = {}.toString.call(r).slice(8, -1); + return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; + } + } + function _arrayLikeToArray(r, a) { + (null == a || a > r.length) && (a = r.length); + for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; + return n; + } + function _iterableToArrayLimit(r, l) { + var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; + if (null != t) { + var e, n, i, u, a = [], f = true, o = false; + try { + if (i = (t = t.call(r)).next, 0 === l) { + if (Object(t) !== t) return; + f = false; + } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true) ; + } catch (r2) { + o = true, n = r2; + } finally { + try { + if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; + } finally { + if (o) throw n; + } + } + return a; + } + } + function _arrayWithHoles(r) { + if (Array.isArray(r)) return r; + } + function enumToJsonSchema(udt) { + var description = udt.doc().toString(); + var cases = udt.cases(); + var oneOf = []; + cases.forEach(function(aCase) { + var title = aCase.name().toString(); + var desc = aCase.doc().toString(); + oneOf.push({ + description: desc, + title, + enum: [aCase.value()], + type: "number" + }); + }); + var res = { + oneOf + }; + if (description.length > 0) { + res.description = description; + } + return res; + } + function isNumeric(field) { + return /^\d+$/.test(field.name().toString()); + } + function readObj(args, input) { + var inputName = input.name().toString(); + var entry = Object.entries(args).find(function(_ref) { + var _ref2 = _slicedToArray(_ref, 1), name = _ref2[0]; + return name === inputName; + }); + if (!entry) { + throw new Error("Missing field ".concat(inputName)); + } + return entry[1]; + } + function findCase(name) { + return function matches(entry) { + switch (entry.switch().value) { + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value: { + var tuple = entry.tupleCase(); + return tuple.name().toString() === name; + } + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0().value: { + var voidCase = entry.voidCase(); + return voidCase.name().toString() === name; + } + default: + return false; + } + }; + } + function stringToScVal(str, ty) { + switch (ty.value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeString().value: + return _stellarBase.xdr.ScVal.scvString(str); + case _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value: + return _stellarBase.xdr.ScVal.scvSymbol(str); + case _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value: + return _stellarBase.Address.fromString(str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value: + return new _stellarBase.XdrLargeInt("u64", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value: + return new _stellarBase.XdrLargeInt("i64", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value: + return new _stellarBase.XdrLargeInt("u128", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value: + return new _stellarBase.XdrLargeInt("i128", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value: + return new _stellarBase.XdrLargeInt("u256", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value: + return new _stellarBase.XdrLargeInt("i256", str).toScVal(); + case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value: + return _stellarBase.xdr.ScVal.scvBytes(Buffer.from(str, "base64")); + default: + throw new TypeError("invalid type ".concat(ty.name, " specified for string value")); + } + } + var PRIMITIVE_DEFINITONS = { + U32: { + type: "integer", + minimum: 0, + maximum: 4294967295 + }, + I32: { + type: "integer", + minimum: -2147483648, + maximum: 2147483647 + }, + U64: { + type: "string", + pattern: "^([1-9][0-9]*|0)$", + minLength: 1, + maxLength: 20 + }, + I64: { + type: "string", + pattern: "^(-?[1-9][0-9]*|0)$", + minLength: 1, + maxLength: 21 + }, + U128: { + type: "string", + pattern: "^([1-9][0-9]*|0)$", + minLength: 1, + maxLength: 39 + }, + I128: { + type: "string", + pattern: "^(-?[1-9][0-9]*|0)$", + minLength: 1, + maxLength: 40 + }, + U256: { + type: "string", + pattern: "^([1-9][0-9]*|0)$", + minLength: 1, + maxLength: 78 + }, + I256: { + type: "string", + pattern: "^(-?[1-9][0-9]*|0)$", + minLength: 1, + maxLength: 79 + }, + Address: { + type: "string", + format: "address", + description: "Address can be a public key or contract id" + }, + ScString: { + type: "string", + description: "ScString is a string" + }, + ScSymbol: { + type: "string", + description: "ScSymbol is a string" + }, + DataUrl: { + type: "string", + pattern: "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$" + } + }; + function typeRef(typeDef) { + var t = typeDef.switch(); + var value = t.value; + var ref; + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeVal().value: { + ref = "Val"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeBool().value: { + return { + type: "boolean" + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value: { + return { + type: "null" + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeError().value: { + ref = "Error"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeU32().value: { + ref = "U32"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeI32().value: { + ref = "I32"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value: { + ref = "U64"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value: { + ref = "I64"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeTimepoint().value: { + throw new Error("Timepoint type not supported"); + ref = "Timepoint"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeDuration().value: { + throw new Error("Duration not supported"); + ref = "Duration"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value: { + ref = "U128"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value: { + ref = "I128"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value: { + ref = "U256"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value: { + ref = "I256"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value: { + ref = "DataUrl"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeString().value: { + ref = "ScString"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value: { + ref = "ScSymbol"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value: { + ref = "Address"; + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeOption().value: { + var opt = typeDef.option(); + return typeRef(opt.valueType()); + } + case _stellarBase.xdr.ScSpecType.scSpecTypeResult().value: { + break; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeVec().value: { + var arr = typeDef.vec(); + var reference = typeRef(arr.elementType()); + return { + type: "array", + items: reference + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeMap().value: { + var map = typeDef.map(); + var items = [typeRef(map.keyType()), typeRef(map.valueType())]; + return { + type: "array", + items: { + type: "array", + items, + minItems: 2, + maxItems: 2 + } + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value: { + var tuple = typeDef.tuple(); + var minItems = tuple.valueTypes().length; + var maxItems = minItems; + var _items = tuple.valueTypes().map(typeRef); + return { + type: "array", + items: _items, + minItems, + maxItems + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value: { + var _arr = typeDef.bytesN(); + return { + $ref: "#/definitions/DataUrl", + maxLength: _arr.n() + }; + } + case _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value: { + var udt = typeDef.udt(); + ref = udt.name().toString(); + break; + } + } + return { + $ref: "#/definitions/".concat(ref) + }; + } + function isRequired(typeDef) { + return typeDef.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeOption().value; + } + function argsAndRequired(input) { + var properties = {}; + var required = []; + input.forEach(function(arg) { + var aType = arg.type(); + var name = arg.name().toString(); + properties[name] = typeRef(aType); + if (isRequired(aType)) { + required.push(name); + } + }); + var res = { + properties + }; + if (required.length > 0) { + res.required = required; + } + return res; + } + function structToJsonSchema(udt) { + var fields = udt.fields(); + if (fields.some(isNumeric)) { + if (!fields.every(isNumeric)) { + throw new Error("mixed numeric and non-numeric field names are not allowed"); + } + var items = fields.map(function(_, i) { + return typeRef(fields[i].type()); + }); + return { + type: "array", + items, + minItems: fields.length, + maxItems: fields.length + }; + } + var description = udt.doc().toString(); + var _argsAndRequired = argsAndRequired(fields), properties = _argsAndRequired.properties, required = _argsAndRequired.required; + properties.additionalProperties = false; + return { + description, + properties, + required, + type: "object" + }; + } + function functionToJsonSchema(func) { + var _argsAndRequired2 = argsAndRequired(func.inputs()), properties = _argsAndRequired2.properties, required = _argsAndRequired2.required; + var args = { + additionalProperties: false, + properties, + type: "object" + }; + if ((required === null || required === void 0 ? void 0 : required.length) > 0) { + args.required = required; + } + var input = { + properties: { + args + } + }; + var outputs = func.outputs(); + var output = outputs.length > 0 ? typeRef(outputs[0]) : typeRef(_stellarBase.xdr.ScSpecTypeDef.scSpecTypeVoid()); + var description = func.doc().toString(); + if (description.length > 0) { + input.description = description; + } + input.additionalProperties = false; + output.additionalProperties = false; + return { + input, + output + }; + } + function unionToJsonSchema(udt) { + var description = udt.doc().toString(); + var cases = udt.cases(); + var oneOf = []; + cases.forEach(function(aCase) { + switch (aCase.switch().value) { + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0().value: { + var c = aCase.voidCase(); + var title = c.name().toString(); + oneOf.push({ + type: "object", + title, + properties: { + tag: title + }, + additionalProperties: false, + required: ["tag"] + }); + break; + } + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value: { + var _c = aCase.tupleCase(); + var _title = _c.name().toString(); + oneOf.push({ + type: "object", + title: _title, + properties: { + tag: _title, + values: { + type: "array", + items: _c.type().map(typeRef) + } + }, + required: ["tag", "values"], + additionalProperties: false + }); + } + } + }); + var res = { + oneOf + }; + if (description.length > 0) { + res.description = description; + } + return res; + } + var Spec = exports2.Spec = function() { + function Spec2(entries) { + _classCallCheck(this, Spec2); + _defineProperty(this, "entries", []); + if (Buffer.isBuffer(entries)) { + this.entries = (0, _utils.processSpecEntryStream)(entries); + } else if (typeof entries === "string") { + this.entries = (0, _utils.processSpecEntryStream)(Buffer.from(entries, "base64")); + } else { + if (entries.length === 0) { + throw new Error("Contract spec must have at least one entry"); + } + var entry = entries[0]; + if (typeof entry === "string") { + this.entries = entries.map(function(s) { + return _stellarBase.xdr.ScSpecEntry.fromXDR(s, "base64"); + }); + } else { + this.entries = entries; + } + } + } + return _createClass(Spec2, [{ + key: "funcs", + value: function funcs() { + return this.entries.filter(function(entry) { + return entry.switch().value === _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value; + }).map(function(entry) { + return entry.functionV0(); + }); + } + }, { + key: "getFunc", + value: function getFunc(name) { + var entry = this.findEntry(name); + if (entry.switch().value !== _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value) { + throw new Error("".concat(name, " is not a function")); + } + return entry.functionV0(); + } + }, { + key: "funcArgsToScVals", + value: function funcArgsToScVals(name, args) { + var _this = this; + var fn = this.getFunc(name); + return fn.inputs().map(function(input) { + return _this.nativeToScVal(readObj(args, input), input.type()); + }); + } + }, { + key: "funcResToNative", + value: function funcResToNative(name, val_or_base64) { + var val = typeof val_or_base64 === "string" ? _stellarBase.xdr.ScVal.fromXDR(val_or_base64, "base64") : val_or_base64; + var func = this.getFunc(name); + var outputs = func.outputs(); + if (outputs.length === 0) { + var type = val.switch(); + if (type.value !== _stellarBase.xdr.ScValType.scvVoid().value) { + throw new Error("Expected void, got ".concat(type.name)); + } + return null; + } + if (outputs.length > 1) { + throw new Error("Multiple outputs not supported"); + } + var output = outputs[0]; + if (output.switch().value === _stellarBase.xdr.ScSpecType.scSpecTypeResult().value) { + return new _rust_result.Ok(this.scValToNative(val, output.result().okType())); + } + return this.scValToNative(val, output); + } + }, { + key: "findEntry", + value: function findEntry(name) { + var entry = this.entries.find(function(e) { + return e.value().name().toString() === name; + }); + if (!entry) { + throw new Error("no such entry: ".concat(name)); + } + return entry; + } + }, { + key: "nativeToScVal", + value: function nativeToScVal(val, ty) { + var _this2 = this; + var t = ty.switch(); + var value = t.value; + if (t.value === _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value) { + var udt = ty.udt(); + return this.nativeToUdt(val, udt.name().toString()); + } + if (value === _stellarBase.xdr.ScSpecType.scSpecTypeOption().value) { + var opt = ty.option(); + if (val === void 0) { + return _stellarBase.xdr.ScVal.scvVoid(); + } + return this.nativeToScVal(val, opt.valueType()); + } + switch (_typeof(val)) { + case "object": { + var _val$constructor$name, _val$constructor; + if (val === null) { + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value: + return _stellarBase.xdr.ScVal.scvVoid(); + default: + throw new TypeError("Type ".concat(ty, " was not void, but value was null")); + } + } + if (val instanceof _stellarBase.xdr.ScVal) { + return val; + } + if (val instanceof _stellarBase.Address) { + if (ty.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value) { + throw new TypeError("Type ".concat(ty, " was not address, but value was Address")); + } + return val.toScVal(); + } + if (val instanceof _stellarBase.Contract) { + if (ty.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value) { + throw new TypeError("Type ".concat(ty, " was not address, but value was Address")); + } + return val.address().toScVal(); + } + if (val instanceof Uint8Array || Buffer.isBuffer(val)) { + var copy = Uint8Array.from(val); + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value: { + var bytesN = ty.bytesN(); + if (copy.length !== bytesN.n()) { + throw new TypeError("expected ".concat(bytesN.n(), " bytes, but got ").concat(copy.length)); + } + return _stellarBase.xdr.ScVal.scvBytes(copy); + } + case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value: + return _stellarBase.xdr.ScVal.scvBytes(copy); + default: + throw new TypeError("invalid type (".concat(ty, ") specified for Bytes and BytesN")); + } + } + if (Array.isArray(val)) { + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeVec().value: { + var vec = ty.vec(); + var elementType = vec.elementType(); + return _stellarBase.xdr.ScVal.scvVec(val.map(function(v2) { + return _this2.nativeToScVal(v2, elementType); + })); + } + case _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value: { + var tup = ty.tuple(); + var valTypes = tup.valueTypes(); + if (val.length !== valTypes.length) { + throw new TypeError("Tuple expects ".concat(valTypes.length, " values, but ").concat(val.length, " were provided")); + } + return _stellarBase.xdr.ScVal.scvVec(val.map(function(v2, i) { + return _this2.nativeToScVal(v2, valTypes[i]); + })); + } + case _stellarBase.xdr.ScSpecType.scSpecTypeMap().value: { + var map = ty.map(); + var keyType = map.keyType(); + var valueType = map.valueType(); + return _stellarBase.xdr.ScVal.scvMap(val.map(function(entry) { + var key2 = _this2.nativeToScVal(entry[0], keyType); + var mapVal = _this2.nativeToScVal(entry[1], valueType); + return new _stellarBase.xdr.ScMapEntry({ + key: key2, + val: mapVal + }); + })); + } + default: + throw new TypeError("Type ".concat(ty, " was not vec, but value was Array")); + } + } + if (val.constructor === Map) { + if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeMap().value) { + throw new TypeError("Type ".concat(ty, " was not map, but value was Map")); + } + var scMap = ty.map(); + var _map = val; + var entries = []; + var values = _map.entries(); + var res = values.next(); + while (!res.done) { + var _res$value = _slicedToArray(res.value, 2), k = _res$value[0], v = _res$value[1]; + var key = this.nativeToScVal(k, scMap.keyType()); + var mapval = this.nativeToScVal(v, scMap.valueType()); + entries.push(new _stellarBase.xdr.ScMapEntry({ + key, + val: mapval + })); + res = values.next(); + } + return _stellarBase.xdr.ScVal.scvMap(entries); + } + if (((_val$constructor$name = (_val$constructor = val.constructor) === null || _val$constructor === void 0 ? void 0 : _val$constructor.name) !== null && _val$constructor$name !== void 0 ? _val$constructor$name : "") !== "Object") { + var _val$constructor2; + throw new TypeError("cannot interpret ".concat((_val$constructor2 = val.constructor) === null || _val$constructor2 === void 0 ? void 0 : _val$constructor2.name, " value as ScVal (").concat(JSON.stringify(val), ")")); + } + throw new TypeError("Received object ".concat(val, " did not match the provided type ").concat(ty)); + } + case "number": + case "bigint": { + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeU32().value: + return _stellarBase.xdr.ScVal.scvU32(val); + case _stellarBase.xdr.ScSpecType.scSpecTypeI32().value: + return _stellarBase.xdr.ScVal.scvI32(val); + case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value: { + var intType = t.name.substring(10).toLowerCase(); + return new _stellarBase.XdrLargeInt(intType, val).toScVal(); + } + default: + throw new TypeError("invalid type (".concat(ty, ") specified for integer")); + } + } + case "string": + return stringToScVal(val, t); + case "boolean": { + if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeBool().value) { + throw TypeError("Type ".concat(ty, " was not bool, but value was bool")); + } + return _stellarBase.xdr.ScVal.scvBool(val); + } + case "undefined": { + if (!ty) { + return _stellarBase.xdr.ScVal.scvVoid(); + } + switch (value) { + case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value: + case _stellarBase.xdr.ScSpecType.scSpecTypeOption().value: + return _stellarBase.xdr.ScVal.scvVoid(); + default: + throw new TypeError("Type ".concat(ty, " was not void, but value was undefined")); + } + } + case "function": + return this.nativeToScVal(val(), ty); + default: + throw new TypeError("failed to convert typeof ".concat(_typeof(val), " (").concat(val, ")")); + } + } + }, { + key: "nativeToUdt", + value: function nativeToUdt(val, name) { + var entry = this.findEntry(name); + switch (entry.switch()) { + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0(): + if (typeof val !== "number") { + throw new TypeError("expected number for enum ".concat(name, ", but got ").concat(_typeof(val))); + } + return this.nativeToEnum(val, entry.udtEnumV0()); + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0(): + return this.nativeToStruct(val, entry.udtStructV0()); + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0(): + return this.nativeToUnion(val, entry.udtUnionV0()); + default: + throw new Error("failed to parse udt ".concat(name)); + } + } + }, { + key: "nativeToUnion", + value: function nativeToUnion(val, union_) { + var _this3 = this; + var entryName = val.tag; + var caseFound = union_.cases().find(function(entry) { + var caseN = entry.value().name().toString(); + return caseN === entryName; + }); + if (!caseFound) { + throw new TypeError("no such enum entry: ".concat(entryName, " in ").concat(union_)); + } + var key = _stellarBase.xdr.ScVal.scvSymbol(entryName); + switch (caseFound.switch()) { + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0(): { + return _stellarBase.xdr.ScVal.scvVec([key]); + } + case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0(): { + var types = caseFound.tupleCase().type(); + if (Array.isArray(val.values)) { + if (val.values.length !== types.length) { + throw new TypeError("union ".concat(union_, " expects ").concat(types.length, " values, but got ").concat(val.values.length)); + } + var scvals = val.values.map(function(v, i) { + return _this3.nativeToScVal(v, types[i]); + }); + scvals.unshift(key); + return _stellarBase.xdr.ScVal.scvVec(scvals); + } + throw new Error("failed to parse union case ".concat(caseFound, " with ").concat(val)); + } + default: + throw new Error("failed to parse union ".concat(union_, " with ").concat(val)); + } + } + }, { + key: "nativeToStruct", + value: function nativeToStruct(val, struct) { + var _this4 = this; + var fields = struct.fields(); + if (fields.some(isNumeric)) { + if (!fields.every(isNumeric)) { + throw new Error("mixed numeric and non-numeric field names are not allowed"); + } + return _stellarBase.xdr.ScVal.scvVec(fields.map(function(_, i) { + return _this4.nativeToScVal(val[i], fields[i].type()); + })); + } + return _stellarBase.xdr.ScVal.scvMap(fields.map(function(field) { + var name = field.name().toString(); + return new _stellarBase.xdr.ScMapEntry({ + key: _this4.nativeToScVal(name, _stellarBase.xdr.ScSpecTypeDef.scSpecTypeSymbol()), + val: _this4.nativeToScVal(val[name], field.type()) + }); + })); + } + }, { + key: "nativeToEnum", + value: function nativeToEnum(val, enum_) { + if (enum_.cases().some(function(entry) { + return entry.value() === val; + })) { + return _stellarBase.xdr.ScVal.scvU32(val); + } + throw new TypeError("no such enum entry: ".concat(val, " in ").concat(enum_)); + } + }, { + key: "scValStrToNative", + value: function scValStrToNative(scv, typeDef) { + return this.scValToNative(_stellarBase.xdr.ScVal.fromXDR(scv, "base64"), typeDef); + } + }, { + key: "scValToNative", + value: function scValToNative(scv, typeDef) { + var _this5 = this; + var t = typeDef.switch(); + var value = t.value; + if (value === _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value) { + return this.scValUdtToNative(scv, typeDef.udt()); + } + switch (scv.switch().value) { + case _stellarBase.xdr.ScValType.scvVoid().value: + return void 0; + case _stellarBase.xdr.ScValType.scvU64().value: + case _stellarBase.xdr.ScValType.scvI64().value: + case _stellarBase.xdr.ScValType.scvU128().value: + case _stellarBase.xdr.ScValType.scvI128().value: + case _stellarBase.xdr.ScValType.scvU256().value: + case _stellarBase.xdr.ScValType.scvI256().value: + return (0, _stellarBase.scValToBigInt)(scv); + case _stellarBase.xdr.ScValType.scvVec().value: { + if (value === _stellarBase.xdr.ScSpecType.scSpecTypeVec().value) { + var _scv$vec; + var vec = typeDef.vec(); + return ((_scv$vec = scv.vec()) !== null && _scv$vec !== void 0 ? _scv$vec : []).map(function(elm) { + return _this5.scValToNative(elm, vec.elementType()); + }); + } + if (value === _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value) { + var _scv$vec2; + var tuple = typeDef.tuple(); + var valTypes = tuple.valueTypes(); + return ((_scv$vec2 = scv.vec()) !== null && _scv$vec2 !== void 0 ? _scv$vec2 : []).map(function(elm, i) { + return _this5.scValToNative(elm, valTypes[i]); + }); + } + throw new TypeError("Type ".concat(typeDef, " was not vec, but ").concat(scv, " is")); + } + case _stellarBase.xdr.ScValType.scvAddress().value: + return _stellarBase.Address.fromScVal(scv).toString(); + case _stellarBase.xdr.ScValType.scvMap().value: { + var _scv$map; + var map = (_scv$map = scv.map()) !== null && _scv$map !== void 0 ? _scv$map : []; + if (value === _stellarBase.xdr.ScSpecType.scSpecTypeMap().value) { + var typed = typeDef.map(); + var keyType = typed.keyType(); + var valueType = typed.valueType(); + var res = map.map(function(entry) { + return [_this5.scValToNative(entry.key(), keyType), _this5.scValToNative(entry.val(), valueType)]; + }); + return res; + } + throw new TypeError("ScSpecType ".concat(t.name, " was not map, but ").concat(JSON.stringify(scv, null, 2), " is")); + } + case _stellarBase.xdr.ScValType.scvBool().value: + case _stellarBase.xdr.ScValType.scvU32().value: + case _stellarBase.xdr.ScValType.scvI32().value: + case _stellarBase.xdr.ScValType.scvBytes().value: + return scv.value(); + case _stellarBase.xdr.ScValType.scvString().value: + case _stellarBase.xdr.ScValType.scvSymbol().value: { + var _scv$value; + if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeString().value && value !== _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value) { + throw new Error("ScSpecType ".concat(t.name, " was not string or symbol, but ").concat(JSON.stringify(scv, null, 2), " is")); + } + return (_scv$value = scv.value()) === null || _scv$value === void 0 ? void 0 : _scv$value.toString(); + } + case _stellarBase.xdr.ScValType.scvTimepoint().value: + case _stellarBase.xdr.ScValType.scvDuration().value: + return (0, _stellarBase.scValToBigInt)(_stellarBase.xdr.ScVal.scvU64(scv.u64())); + default: + throw new TypeError("failed to convert ".concat(JSON.stringify(scv, null, 2), " to native type from type ").concat(t.name)); + } + } + }, { + key: "scValUdtToNative", + value: function scValUdtToNative(scv, udt) { + var entry = this.findEntry(udt.name().toString()); + switch (entry.switch()) { + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0(): + return this.enumToNative(scv); + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0(): + return this.structToNative(scv, entry.udtStructV0()); + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0(): + return this.unionToNative(scv, entry.udtUnionV0()); + default: + throw new Error("failed to parse udt ".concat(udt.name().toString(), ": ").concat(entry)); + } + } + }, { + key: "unionToNative", + value: function unionToNative(val, udt) { + var _this6 = this; + var vec = val.vec(); + if (!vec) { + throw new Error("".concat(JSON.stringify(val, null, 2), " is not a vec")); + } + if (vec.length === 0 && udt.cases.length !== 0) { + throw new Error("".concat(val, " has length 0, but the there are at least one case in the union")); + } + var name = vec[0].sym().toString(); + if (vec[0].switch().value !== _stellarBase.xdr.ScValType.scvSymbol().value) { + throw new Error("{vec[0]} is not a symbol"); + } + var entry = udt.cases().find(findCase(name)); + if (!entry) { + throw new Error("failed to find entry ".concat(name, " in union {udt.name().toString()}")); + } + var res = { + tag: name + }; + if (entry.switch().value === _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value) { + var tuple = entry.tupleCase(); + var ty = tuple.type(); + var values = ty.map(function(e, i) { + return _this6.scValToNative(vec[i + 1], e); + }); + res.values = values; + } + return res; + } + }, { + key: "structToNative", + value: function structToNative(val, udt) { + var _this7 = this, _val$map; + var res = {}; + var fields = udt.fields(); + if (fields.some(isNumeric)) { + var _val$vec; + var r = (_val$vec = val.vec()) === null || _val$vec === void 0 ? void 0 : _val$vec.map(function(entry, i) { + return _this7.scValToNative(entry, fields[i].type()); + }); + return r; + } + (_val$map = val.map()) === null || _val$map === void 0 || _val$map.forEach(function(entry, i) { + var field = fields[i]; + res[field.name().toString()] = _this7.scValToNative(entry.val(), field.type()); + }); + return res; + } + }, { + key: "enumToNative", + value: function enumToNative(scv) { + if (scv.switch().value !== _stellarBase.xdr.ScValType.scvU32().value) { + throw new Error("Enum must have a u32 value"); + } + var num = scv.u32(); + return num; + } + }, { + key: "errorCases", + value: function errorCases() { + return this.entries.filter(function(entry) { + return entry.switch().value === _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtErrorEnumV0().value; + }).flatMap(function(entry) { + return entry.value().cases(); + }); + } + }, { + key: "jsonSchema", + value: function jsonSchema(funcName) { + var definitions = {}; + this.entries.forEach(function(entry) { + switch (entry.switch().value) { + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0().value: { + var udt = entry.udtEnumV0(); + definitions[udt.name().toString()] = enumToJsonSchema(udt); + break; + } + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0().value: { + var _udt = entry.udtStructV0(); + definitions[_udt.name().toString()] = structToJsonSchema(_udt); + break; + } + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0().value: { + var _udt2 = entry.udtUnionV0(); + definitions[_udt2.name().toString()] = unionToJsonSchema(_udt2); + break; + } + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value: { + var fn = entry.functionV0(); + var fnName = fn.name().toString(); + var _functionToJsonSchema = functionToJsonSchema(fn), input = _functionToJsonSchema.input; + definitions[fnName] = input; + break; + } + case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtErrorEnumV0().value: { + } + } + }); + var res = { + $schema: "http://json-schema.org/draft-07/schema#", + definitions: _objectSpread(_objectSpread({}, PRIMITIVE_DEFINITONS), definitions) + }; + if (funcName) { + res.$ref = "#/definitions/".concat(funcName); + } + return res; + } + }], [{ + key: "fromWasm", + value: function() { + var _fromWasm = _asyncToGenerator(_regenerator().m(function _callee(wasm) { + var spec; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + _context.n = 1; + return (0, _utils.specFromWasm)(wasm); + case 1: + spec = _context.v; + return _context.a(2, new Spec2(spec)); + } + }, _callee); + })); + function fromWasm(_x) { + return _fromWasm.apply(this, arguments); + } + return fromWasm; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/client.js +var require_client4 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/client.js"(exports2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Client = void 0; + var _stellarBase = require_lib20(); + var _spec = require_spec(); + var _rpc = require_rpc2(); + var _assembled_transaction = require_assembled_transaction(); + var _excluded = ["method"]; + var _excluded2 = ["wasmHash", "salt", "format", "fee", "timeoutInSeconds", "simulate"]; + function _regenerator() { + var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; + function i(r2, n2, o2, i2) { + var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype); + return _regeneratorDefine2(u2, "_invoke", function(r3, n3, o3) { + var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t2, r4) { + return i3 = t2, c3 = 0, u3 = e, G.n = r4, a; + } }; + function d(r4, n4) { + for (c3 = r4, u3 = n4, t = 0; !y && f2 && !o4 && t < p.length; t++) { + var o4, i4 = p[t], d2 = G.p, l = i4[2]; + r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0)); + } + if (o4 || r4 > 1) return a; + throw y = true, n4; + } + return function(o4, p2, l) { + if (f2 > 1) throw TypeError("Generator is already running"); + for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t = c3 < 2 ? e : u3) || !y; ) { + i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3); + try { + if (f2 = 2, i3) { + if (c3 || (o4 = "next"), t = i3[o4]) { + if (!(t = t.call(i3, u3))) throw TypeError("iterator result is not an object"); + if (!t.done) return t; + u3 = t.value, c3 < 2 && (c3 = 0); + } else 1 === c3 && (t = i3.return) && t.call(i3), c3 < 2 && (u3 = TypeError("The iterator does not provide a '" + o4 + "' method"), c3 = 1); + i3 = e; + } else if ((t = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break; + } catch (t2) { + i3 = e, c3 = 1, u3 = t2; + } finally { + f2 = 1; + } + } + return { value: t, done: y }; + }; + }(r2, o2, i2), true), u2; + } + var a = {}; + function Generator() { + } + function GeneratorFunction() { + } + function GeneratorFunctionPrototype() { + } + t = Object.getPrototypeOf; + var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function() { + return this; + }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); + function f(e2) { + return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, "GeneratorFunction")), e2.prototype = Object.create(u), e2; + } + return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function() { + return this; + }), _regeneratorDefine2(u, "toString", function() { + return "[object Generator]"; + }), (_regenerator = function _regenerator2() { + return { w: i, m: f }; + })(); + } + function _regeneratorDefine2(e, r, n, t) { + var i = Object.defineProperty; + try { + i({}, "", {}); + } catch (e2) { + i = 0; + } + _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t2) { + function o(r3, n3) { + _regeneratorDefine2(e2, r3, function(e3) { + return this._invoke(r3, n3, e3); + }); + } + r2 ? i ? i(e2, r2, { value: n2, enumerable: !t2, configurable: !t2, writable: !t2 }) : e2[r2] = n2 : (o("next", 0), o("throw", 1), o("return", 2)); + }, _regeneratorDefine2(e, r, n, t); + } + function ownKeys(e, r) { + var t = Object.keys(e); + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e); + r && (o = o.filter(function(r2) { + return Object.getOwnPropertyDescriptor(e, r2).enumerable; + })), t.push.apply(t, o); + } + return t; + } + function _objectSpread(e) { + for (var r = 1; r < arguments.length; r++) { + var t = null != arguments[r] ? arguments[r] : {}; + r % 2 ? ownKeys(Object(t), true).forEach(function(r2) { + _defineProperty(e, r2, t[r2]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) { + Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2)); + }); + } + return e; + } + function _objectWithoutProperties(e, t) { + if (null == e) return {}; + var o, r, i = _objectWithoutPropertiesLoose(e, t); + if (Object.getOwnPropertySymbols) { + var n = Object.getOwnPropertySymbols(e); + for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); + } + return i; + } + function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; + } + function _classCallCheck(a, n) { + if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); + } + function _defineProperties(e, r) { + for (var t = 0; t < r.length; t++) { + var o = r[t]; + o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); + } + } + function _createClass(e, r, t) { + return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: false }), e; + } + function _defineProperty(e, r, t) { + return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; + } + function _toPropertyKey(t) { + var i = _toPrimitive(t, "string"); + return "symbol" == _typeof(i) ? i : i + ""; + } + function _toPrimitive(t, r) { + if ("object" != _typeof(t) || !t) return t; + var e = t[Symbol.toPrimitive]; + if (void 0 !== e) { + var i = e.call(t, r || "default"); + if ("object" != _typeof(i)) return i; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return ("string" === r ? String : Number)(t); + } + function asyncGeneratorStep(n, t, e, r, o, a, c) { + try { + var i = n[a](c), u = i.value; + } catch (n2) { + return void e(n2); + } + i.done ? t(u) : Promise.resolve(u).then(r, o); + } + function _asyncToGenerator(n) { + return function() { + var t = this, e = arguments; + return new Promise(function(r, o) { + var a = n.apply(t, e); + function _next(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "next", n2); + } + function _throw(n2) { + asyncGeneratorStep(a, r, o, _next, _throw, "throw", n2); + } + _next(void 0); + }); + }; + } + var CONSTRUCTOR_FUNC = "__constructor"; + function specFromWasmHash(_x, _x2) { + return _specFromWasmHash.apply(this, arguments); + } + function _specFromWasmHash() { + _specFromWasmHash = _asyncToGenerator(_regenerator().m(function _callee5(wasmHash, options) { + var format, rpcUrl, allowHttp, serverOpts, server, wasm, _args5 = arguments; + return _regenerator().w(function(_context5) { + while (1) switch (_context5.n) { + case 0: + format = _args5.length > 2 && _args5[2] !== void 0 ? _args5[2] : "hex"; + if (!(!options || !options.rpcUrl)) { + _context5.n = 1; + break; + } + throw new TypeError("options must contain rpcUrl"); + case 1: + rpcUrl = options.rpcUrl, allowHttp = options.allowHttp; + serverOpts = { + allowHttp + }; + server = new _rpc.Server(rpcUrl, serverOpts); + _context5.n = 2; + return server.getContractWasmByHash(wasmHash, format); + case 2: + wasm = _context5.v; + return _context5.a(2, _spec.Spec.fromWasm(wasm)); + } + }, _callee5); + })); + return _specFromWasmHash.apply(this, arguments); + } + var Client = exports2.Client = function() { + function Client2(spec, options) { + var _this = this; + _classCallCheck(this, Client2); + _defineProperty(this, "txFromJSON", function(json) { + var _JSON$parse = JSON.parse(json), method = _JSON$parse.method, tx = _objectWithoutProperties(_JSON$parse, _excluded); + return _assembled_transaction.AssembledTransaction.fromJSON(_objectSpread(_objectSpread({}, _this.options), {}, { + method, + parseResultXdr: function parseResultXdr(result) { + return _this.spec.funcResToNative(method, result); + } + }), tx); + }); + _defineProperty(this, "txFromXDR", function(xdrBase64) { + return _assembled_transaction.AssembledTransaction.fromXDR(_this.options, xdrBase64, _this.spec); + }); + this.spec = spec; + this.options = options; + this.spec.funcs().forEach(function(xdrFn) { + var method = xdrFn.name().toString(); + if (method === CONSTRUCTOR_FUNC) { + return; + } + var assembleTransaction = function assembleTransaction2(args, methodOptions) { + return _assembled_transaction.AssembledTransaction.build(_objectSpread(_objectSpread(_objectSpread({ + method, + args: args && spec.funcArgsToScVals(method, args) + }, options), methodOptions), {}, { + errorTypes: spec.errorCases().reduce(function(acc, curr) { + return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, curr.value(), { + message: curr.doc().toString() + })); + }, {}), + parseResultXdr: function parseResultXdr(result) { + return spec.funcResToNative(method, result); + } + })); + }; + _this[method] = spec.getFunc(method).inputs().length === 0 ? function(opts) { + return assembleTransaction(void 0, opts); + } : assembleTransaction; + }); + } + return _createClass(Client2, null, [{ + key: "deploy", + value: function() { + var _deploy = _asyncToGenerator(_regenerator().m(function _callee(args, options) { + var wasmHash, salt, format, fee, timeoutInSeconds, simulate, clientOptions, spec, operation; + return _regenerator().w(function(_context) { + while (1) switch (_context.n) { + case 0: + wasmHash = options.wasmHash, salt = options.salt, format = options.format, fee = options.fee, timeoutInSeconds = options.timeoutInSeconds, simulate = options.simulate, clientOptions = _objectWithoutProperties(options, _excluded2); + _context.n = 1; + return specFromWasmHash(wasmHash, clientOptions, format); + case 1: + spec = _context.v; + operation = _stellarBase.Operation.createCustomContract({ + address: new _stellarBase.Address(options.address || options.publicKey), + wasmHash: typeof wasmHash === "string" ? Buffer.from(wasmHash, format !== null && format !== void 0 ? format : "hex") : wasmHash, + salt, + constructorArgs: args ? spec.funcArgsToScVals(CONSTRUCTOR_FUNC, args) : [] + }); + return _context.a(2, _assembled_transaction.AssembledTransaction.buildWithOp(operation, _objectSpread(_objectSpread({ + fee, + timeoutInSeconds, + simulate + }, clientOptions), {}, { + contractId: "ignored", + method: CONSTRUCTOR_FUNC, + parseResultXdr: function parseResultXdr(result) { + return new Client2(spec, _objectSpread(_objectSpread({}, clientOptions), {}, { + contractId: _stellarBase.Address.fromScVal(result).toString() + })); + } + }))); + } + }, _callee); + })); + function deploy(_x3, _x4) { + return _deploy.apply(this, arguments); + } + return deploy; + }() + }, { + key: "fromWasmHash", + value: function() { + var _fromWasmHash = _asyncToGenerator(_regenerator().m(function _callee2(wasmHash, options) { + var format, rpcUrl, allowHttp, serverOpts, server, wasm, _args2 = arguments; + return _regenerator().w(function(_context2) { + while (1) switch (_context2.n) { + case 0: + format = _args2.length > 2 && _args2[2] !== void 0 ? _args2[2] : "hex"; + if (!(!options || !options.rpcUrl)) { + _context2.n = 1; + break; + } + throw new TypeError("options must contain rpcUrl"); + case 1: + rpcUrl = options.rpcUrl, allowHttp = options.allowHttp; + serverOpts = { + allowHttp + }; + server = new _rpc.Server(rpcUrl, serverOpts); + _context2.n = 2; + return server.getContractWasmByHash(wasmHash, format); + case 2: + wasm = _context2.v; + return _context2.a(2, Client2.fromWasm(wasm, options)); + } + }, _callee2); + })); + function fromWasmHash(_x5, _x6) { + return _fromWasmHash.apply(this, arguments); + } + return fromWasmHash; + }() + }, { + key: "fromWasm", + value: function() { + var _fromWasm = _asyncToGenerator(_regenerator().m(function _callee3(wasm, options) { + var spec; + return _regenerator().w(function(_context3) { + while (1) switch (_context3.n) { + case 0: + _context3.n = 1; + return _spec.Spec.fromWasm(wasm); + case 1: + spec = _context3.v; + return _context3.a(2, new Client2(spec, options)); + } + }, _callee3); + })); + function fromWasm(_x7, _x8) { + return _fromWasm.apply(this, arguments); + } + return fromWasm; + }() + }, { + key: "from", + value: function() { + var _from = _asyncToGenerator(_regenerator().m(function _callee4(options) { + var rpcUrl, contractId, allowHttp, serverOpts, server, wasm; + return _regenerator().w(function(_context4) { + while (1) switch (_context4.n) { + case 0: + if (!(!options || !options.rpcUrl || !options.contractId)) { + _context4.n = 1; + break; + } + throw new TypeError("options must contain rpcUrl and contractId"); + case 1: + rpcUrl = options.rpcUrl, contractId = options.contractId, allowHttp = options.allowHttp; + serverOpts = { + allowHttp + }; + server = new _rpc.Server(rpcUrl, serverOpts); + _context4.n = 2; + return server.getContractWasmByContractId(contractId); + case 2: + wasm = _context4.v; + return _context4.a(2, Client2.fromWasm(wasm, options)); + } + }, _callee4); + })); + function from(_x9) { + return _from.apply(this, arguments); + } + return from; + }() + }]); + }(); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/contract/index.js +var require_contract2 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/contract/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _assembled_transaction = require_assembled_transaction(); + Object.keys(_assembled_transaction).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _assembled_transaction[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _assembled_transaction[key]; + } + }); + }); + var _basic_node_signer = require_basic_node_signer(); + Object.keys(_basic_node_signer).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _basic_node_signer[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _basic_node_signer[key]; + } + }); + }); + var _client = require_client4(); + Object.keys(_client).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _client[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _client[key]; + } + }); + }); + var _rust_result = require_rust_result(); + Object.keys(_rust_result).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _rust_result[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _rust_result[key]; + } + }); + }); + var _sent_transaction = require_sent_transaction(); + Object.keys(_sent_transaction).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _sent_transaction[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _sent_transaction[key]; + } + }); + }); + var _spec = require_spec(); + Object.keys(_spec).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _spec[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _spec[key]; + } + }); + }); + var _types = require_types7(); + Object.keys(_types).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (key in exports2 && exports2[key] === _types[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _types[key]; + } + }); + }); + } +}); + +// node_modules/@stellar/stellar-sdk/lib/index.js +var require_lib21 = __commonJS({ + "node_modules/@stellar/stellar-sdk/lib/index.js"(exports2, module2) { + "use strict"; + function _typeof(o) { + "@babel/helpers - typeof"; + return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) { + return typeof o2; + } : function(o2) { + return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2; + }, _typeof(o); + } + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _exportNames = { + Config: true, + Utils: true, + StellarToml: true, + Federation: true, + WebAuth: true, + Friendbot: true, + Horizon: true, + rpc: true, + contract: true + }; + Object.defineProperty(exports2, "Config", { + enumerable: true, + get: function get() { + return _config.Config; + } + }); + exports2.StellarToml = exports2.Horizon = exports2.Friendbot = exports2.Federation = void 0; + Object.defineProperty(exports2, "Utils", { + enumerable: true, + get: function get() { + return _utils.Utils; + } + }); + exports2.rpc = exports2.default = exports2.contract = exports2.WebAuth = void 0; + var _errors = require_errors11(); + Object.keys(_errors).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _errors[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _errors[key]; + } + }); + }); + var _config = require_config2(); + var _utils = require_utils25(); + var _StellarToml = _interopRequireWildcard(require_stellartoml()); + exports2.StellarToml = _StellarToml; + var _Federation = _interopRequireWildcard(require_federation()); + exports2.Federation = _Federation; + var _WebAuth = _interopRequireWildcard(require_webauth()); + exports2.WebAuth = _WebAuth; + var _Friendbot = _interopRequireWildcard(require_friendbot()); + exports2.Friendbot = _Friendbot; + var _Horizon = _interopRequireWildcard(require_horizon()); + exports2.Horizon = _Horizon; + var _rpc = _interopRequireWildcard(require_rpc2()); + exports2.rpc = _rpc; + var _contract = _interopRequireWildcard(require_contract2()); + exports2.contract = _contract; + var _stellarBase = require_lib20(); + Object.keys(_stellarBase).forEach(function(key) { + if (key === "default" || key === "__esModule") return; + if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; + if (key in exports2 && exports2[key] === _stellarBase[key]) return; + Object.defineProperty(exports2, key, { + enumerable: true, + get: function get() { + return _stellarBase[key]; + } + }); + }); + function _interopRequireWildcard(e, t) { + if ("function" == typeof WeakMap) var r = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(); + return (_interopRequireWildcard = function _interopRequireWildcard2(e2, t2) { + if (!t2 && e2 && e2.__esModule) return e2; + var o, i, f = { __proto__: null, default: e2 }; + if (null === e2 || "object" != _typeof(e2) && "function" != typeof e2) return f; + if (o = t2 ? n : r) { + if (o.has(e2)) return o.get(e2); + o.set(e2, f); + } + for (var _t in e2) "default" !== _t && {}.hasOwnProperty.call(e2, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e2, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e2[_t]); + return f; + })(e, t); + } + var _default = exports2.default = module2.exports; + if (typeof global.__USE_AXIOS__ === "undefined") { + global.__USE_AXIOS__ = true; + } + if (typeof global.__USE_EVENTSOURCE__ === "undefined") { + global.__USE_EVENTSOURCE__ = false; + } + } +}); + +// node_modules/@trezor/blockchain-link-utils/lib/stellar.js +var require_stellar = __commonJS({ + "node_modules/@trezor/blockchain-link-utils/lib/stellar.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isValidAddress = exports2.isValidAssetCode = exports2.getTokenMetadata = exports2.buildRemoveTrustlineTransaction = exports2.buildAddTrustlineTransaction = exports2.buildSendTransaction = exports2.transformTransaction = exports2.BASE_INFO = exports2.toStroops = exports2.STELLAR_DECIMALS = void 0; + var stellar_sdk_1 = require_lib21(); + var env_utils_1 = require_lib4(); + var bigNumber_1 = require_bigNumber(); + exports2.STELLAR_DECIMALS = 7; + var toStroops = (value) => { + const multiplier = new bigNumber_1.BigNumber(10).pow(exports2.STELLAR_DECIMALS); + const amount = new bigNumber_1.BigNumber(value).times(multiplier); + return amount; + }; + exports2.toStroops = toStroops; + exports2.BASE_INFO = { + BASE_RESERVE: (0, exports2.toStroops)("0.5"), + MINIMUM_RESERVE: (0, exports2.toStroops)("1") + }; + var isoToTimestamp = (isoDate) => { + const timestamp = Date.parse(isoDate); + if (isNaN(timestamp)) { + throw new Error("Invalid ISO date string"); + } + return Math.floor(timestamp / 1e3); + }; + var convertMemo = (memo) => { + switch (memo.type) { + case "text": + case "id": + return memo.value?.toString(); + case "hash": + case "return": + return memo.value?.toString("hex"); + default: + return void 0; + } + }; + var transformTransaction = (rawTx, descriptor, tokenDetailByMint) => { + const parsedTx = new stellar_sdk_1.Transaction(rawTx.envelope_xdr, stellar_sdk_1.Networks.PUBLIC); + const baseTx = { + type: "unknown", + txid: rawTx.hash, + amount: "0", + fee: rawTx.fee_charged.toString(), + blockTime: isoToTimestamp(rawTx.created_at), + blockHeight: rawTx.ledger_attr, + targets: [], + tokens: [], + internalTransfers: [], + feeRate: void 0, + details: { + vin: [], + vout: [], + size: 0, + totalInput: "0", + totalOutput: "0" + }, + stellarSpecific: { + memo: convertMemo(parsedTx.memo), + feeSource: (0, stellar_sdk_1.extractBaseAddress)(rawTx.source_account) + } + }; + if (!rawTx.successful) { + return { + ...baseTx, + type: "failed" + }; + } + if (parsedTx.operations.length !== 1) { + return baseTx; + } + const rawOp = parsedTx.operations[0]; + const opSource = rawOp.source || rawTx.source_account; + const fromAddress = (0, stellar_sdk_1.extractBaseAddress)(opSource); + let toAddress; + let nativeAmount; + let isTokenTransfer = false; + let tokenInfo; + switch (rawOp.type) { + case "createAccount": + toAddress = (0, stellar_sdk_1.extractBaseAddress)(rawOp.destination); + nativeAmount = (0, exports2.toStroops)(rawOp.startingBalance).toString(); + break; + case "payment": + toAddress = (0, stellar_sdk_1.extractBaseAddress)(rawOp.destination); + if (rawOp.asset.isNative()) { + nativeAmount = (0, exports2.toStroops)(rawOp.amount).toString(); + } else { + isTokenTransfer = true; + tokenInfo = { + assetCode: rawOp.asset.getCode(), + assetIssuer: rawOp.asset.getIssuer(), + amount: (0, exports2.toStroops)(rawOp.amount).toString() + }; + nativeAmount = "0"; + } + break; + case "changeTrust": { + if (rawOp.line.getAssetType() !== "credit_alphanum4" && rawOp.line.getAssetType() !== "credit_alphanum12") { + return baseTx; + } + if (descriptor !== fromAddress) { + return baseTx; + } + const line = rawOp.line; + const assetCode = line.getCode(); + const isRemoval = new bigNumber_1.BigNumber(rawOp.limit).isZero(); + return { + ...baseTx, + type: "self", + stellarSpecific: { + ...baseTx.stellarSpecific, + operationType: "changeTrust", + changeTrust: { + assetCode, + isRemoval + } + } + }; + } + default: + return baseTx; + } + if (!toAddress) { + return baseTx; + } + const isFrom = descriptor === fromAddress; + const isTo = descriptor === toAddress; + if (!descriptor || !isFrom && !isTo) { + return baseTx; + } + const type = isFrom ? "sent" : "recv"; + if (isTokenTransfer && tokenInfo) { + const { + assetCode, + assetIssuer, + amount: tokenAmount + } = tokenInfo; + const contract = `${assetCode}-${assetIssuer}`; + return { + ...baseTx, + type, + amount: "0", + tokens: [{ + type, + standard: "STELLAR-CLASSIC", + from: fromAddress, + to: toAddress, + contract, + name: tokenDetailByMint[contract]?.name || assetCode, + symbol: assetCode, + decimals: exports2.STELLAR_DECIMALS, + amount: tokenAmount + }] + }; + } + if (nativeAmount) { + return { + ...baseTx, + type, + amount: nativeAmount, + targets: [{ + n: 0, + addresses: [toAddress], + isAddress: true, + amount: nativeAmount + }], + details: { + vin: [{ + n: 0, + addresses: [fromAddress], + isAddress: true, + value: nativeAmount + }], + vout: [{ + n: 0, + addresses: [toAddress], + isAddress: true, + value: nativeAmount + }], + size: 0, + totalInput: nativeAmount, + totalOutput: nativeAmount + } + }; + } + return baseTx; + }; + exports2.transformTransaction = transformTransaction; + var createTransactionBuilder = ({ + descriptor, + sequence, + fee, + isTestnet = false + }) => { + const source = new stellar_sdk_1.Account(descriptor, sequence); + return new stellar_sdk_1.TransactionBuilder(source, { + fee, + networkPassphrase: isTestnet ? stellar_sdk_1.Networks.TESTNET : stellar_sdk_1.Networks.PUBLIC + }).setTimebounds(0, 0); + }; + var buildTrustlineTransaction = ({ + descriptor, + sequence, + fee, + asset, + limit, + isTestnet + }) => { + const txBuilder = createTransactionBuilder({ + descriptor, + sequence, + fee, + isTestnet + }); + txBuilder.addOperation(stellar_sdk_1.Operation.changeTrust({ + asset: new stellar_sdk_1.Asset(asset.code, asset.issuer), + limit + })); + return txBuilder.build(); + }; + var buildSendTransaction = ({ + descriptor, + sequence, + fee, + destinationActivated, + destination, + amount, + asset, + destinationTag, + isTestnet + }) => { + const txBuilder = createTransactionBuilder({ + descriptor, + sequence, + fee, + isTestnet + }); + if (destinationTag) { + txBuilder.addMemo(stellar_sdk_1.Memo.text(destinationTag)); + } + if (destinationActivated) { + txBuilder.addOperation(stellar_sdk_1.Operation.payment({ + destination, + amount, + asset: new stellar_sdk_1.Asset(asset.code || "XLM", asset.issuer) + })); + } else { + txBuilder.addOperation(stellar_sdk_1.Operation.createAccount({ + destination, + startingBalance: amount + })); + } + return txBuilder.build(); + }; + exports2.buildSendTransaction = buildSendTransaction; + var buildAddTrustlineTransaction = ({ + descriptor, + sequence, + fee, + asset, + isTestnet + }) => buildTrustlineTransaction({ + descriptor, + sequence, + fee, + asset, + isTestnet + }); + exports2.buildAddTrustlineTransaction = buildAddTrustlineTransaction; + var buildRemoveTrustlineTransaction = ({ + descriptor, + sequence, + fee, + asset, + isTestnet + }) => buildTrustlineTransaction({ + descriptor, + sequence, + fee, + asset, + limit: "0", + isTestnet + }); + exports2.buildRemoveTrustlineTransaction = buildRemoveTrustlineTransaction; + var getTokenMetadata = async () => { + const env = (0, env_utils_1.isCodesignBuild)() ? "stable" : "develop"; + const response = await fetch(`https://data.trezor.io/suite/definitions/${env}/stellar.advanced.coin.definitions.v1.json`); + if (!response.ok) { + throw Error(`Failed to fetch token metadata: ${response.statusText}`); + } + const data = await response.json(); + return data; + }; + exports2.getTokenMetadata = getTokenMetadata; + var isValidAssetCode = (code) => /^[a-zA-Z0-9]{1,12}$/.test(code); + exports2.isValidAssetCode = isValidAssetCode; + var isValidAddress = (address) => stellar_sdk_1.StrKey.isValidEd25519PublicKey(address); + exports2.isValidAddress = isValidAddress; + } +}); + +// node_modules/@trezor/blockchain-link/lib/workers/stellar/index.js +var require_stellar2 = __commonJS({ + "node_modules/@trezor/blockchain-link/lib/workers/stellar/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.default = Stellar; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var stellar_sdk_1 = require_lib21(); + var constants_1 = require_constants8(); + var errors_1 = require_errors7(); + var utils = tslib_1.__importStar(require_stellar()); + var env_utils_1 = require_lib4(); + var utils_1 = require_lib(); + var baseWorker_1 = require_baseWorker(); + var fetchLatestLedger = async (api) => { + const latestLedgerInfo = await api.ledgers().order("desc").limit(1).call(); + if (latestLedgerInfo.records.length === 0) { + throw new errors_1.CustomError("worker_invalid_horizon_response"); + } + return latestLedgerInfo.records[0]; + }; + var getInfo = async (request, isTestnet) => { + const api = await request.connect(); + const horizonServerInfo = await api.root(); + const { + sequence: blockHeight, + hash: blockHash, + base_reserve_in_stroops: baseReserveInStroops + } = await fetchLatestLedger(api); + utils.BASE_INFO.BASE_RESERVE = new utils_1.BigNumber(baseReserveInStroops); + utils.BASE_INFO.MINIMUM_RESERVE = utils.BASE_INFO.BASE_RESERVE.times(2); + const serverInfo = { + url: api.serverURL.toString(), + name: "Stellar", + shortcut: isTestnet ? "txlm" : "xlm", + network: isTestnet ? "txlm" : "xlm", + testnet: isTestnet, + version: horizonServerInfo.horizon_version, + decimals: utils.STELLAR_DECIMALS, + blockHeight, + blockHash + }; + return { + type: constants_1.RESPONSES.GET_INFO, + payload: { + ...serverInfo + } + }; + }; + var getAccountInfo = async (request) => { + const { + payload + } = request; + const account = { + descriptor: payload.descriptor, + balance: "0", + availableBalance: "0", + empty: true, + history: { + total: -1, + unconfirmed: 0, + transactions: void 0 + }, + misc: { + stellarSequence: "0", + reserve: utils.BASE_INFO.MINIMUM_RESERVE.toString() + } + }; + const api = await request.connect(); + let info; + try { + info = await api.accounts().accountId(payload.descriptor).call(); + } catch { + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account + }; + } + const reserve = utils.BASE_INFO.MINIMUM_RESERVE.plus(utils.BASE_INFO.BASE_RESERVE.times(info.subentry_count)); + account.misc = { + stellarSequence: info.sequence, + reserve: reserve.toString() + }; + const nativeTokenBalance = info.balances.find((balance) => balance.asset_type === "native"); + if (!nativeTokenBalance) { + throw new errors_1.CustomError("stellar_missing_native_balance"); + } + const sellingLiabilities = utils.toStroops(nativeTokenBalance.selling_liabilities); + account.balance = utils.toStroops(nativeTokenBalance.balance).toString(); + account.availableBalance = new utils_1.BigNumber(account.balance).minus(reserve).minus(sellingLiabilities).minus(utils.BASE_INFO.BASE_RESERVE.times(info.num_sponsoring)).plus(utils.BASE_INFO.BASE_RESERVE.times(info.num_sponsored)).toString(); + const tokenMetadata = await request.getTokenMetadata(); + account.tokens = info.balances.filter((balanceInfo) => balanceInfo.asset_type === "credit_alphanum4" || balanceInfo.asset_type === "credit_alphanum12").map((balanceInfo) => { + const contract = `${balanceInfo.asset_code}-${balanceInfo.asset_issuer}`; + const balance = utils.toStroops(balanceInfo.balance); + return { + standard: "STELLAR-CLASSIC", + contract, + balance: balance.toString(), + name: tokenMetadata[contract]?.name || balanceInfo.asset_code, + symbol: tokenMetadata[contract]?.symbol || balanceInfo.asset_code, + decimals: utils.STELLAR_DECIMALS + }; + }); + account.empty = false; + if (payload.details !== "txs") { + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: account + }; + } + const requestBuilder = await api.transactions().forAccount(payload.descriptor).includeFailed(true).limit(payload.pageSize || 20).order("desc"); + if (payload.page && payload.page !== 1 && payload.pageCursor) { + requestBuilder.cursor(payload.pageCursor); + } + const transactions = await requestBuilder.call(); + const cursor = transactions.records[transactions.records.length - 1]?.paging_token; + account.history.transactions = transactions.records.map((record) => utils.transformTransaction(record, payload.descriptor, tokenMetadata)); + return { + type: constants_1.RESPONSES.GET_ACCOUNT_INFO, + payload: { + ...account, + stellarCursor: cursor + } + }; + }; + var estimateFee = async (request) => { + const api = await request.connect(); + const feeStats = await api.feeStats(); + const stroops = feeStats.fee_charged.p70; + const payload = request.payload && Array.isArray(request.payload.blocks) ? request.payload.blocks.map(() => ({ + feePerUnit: stroops + })) : [{ + feePerUnit: stroops + }]; + return { + type: constants_1.RESPONSES.ESTIMATE_FEE, + payload + }; + }; + var BLOCK_SUBSCRIBE_INTERVAL_MS = 1e3 * 15; + var subscribeBlock = async ({ + state, + connect, + post + }) => { + if (state.getSubscription("block")) return { + subscribed: true + }; + const api = await connect(); + const fetchBlock = async () => { + const { + sequence: blockHeight, + hash: blockHash + } = await fetchLatestLedger(api); + post({ + id: -1, + type: constants_1.RESPONSES.NOTIFICATION, + payload: { + type: "block", + payload: { + blockHeight, + blockHash + } + } + }); + }; + fetchBlock(); + const interval = setInterval(fetchBlock, BLOCK_SUBSCRIBE_INTERVAL_MS); + state.addSubscription("block", interval); + return { + subscribed: true + }; + }; + var unsubscribeBlock = ({ + state + }) => { + if (!state.getSubscription("block")) return { + subscribed: false + }; + const interval = state.getSubscription("block"); + clearInterval(interval); + state.removeSubscription("block"); + return { + subscribed: false + }; + }; + var subscribe = async (request) => { + let response; + switch (request.payload.type) { + case "block": + response = await subscribeBlock(request); + break; + case "accounts": + case "addresses": + response = { + subscribed: false + }; + break; + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + return { + type: constants_1.RESPONSES.SUBSCRIBE, + payload: response + }; + }; + var unsubscribe = (request) => { + let response; + switch (request.payload.type) { + case "block": + response = unsubscribeBlock(request); + break; + case "accounts": + case "addresses": + response = { + subscribed: false + }; + break; + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + return { + type: constants_1.RESPONSES.UNSUBSCRIBE, + payload: response + }; + }; + var pushTransaction = async ({ + connect, + payload + }) => { + const api = await connect(); + const base64EncodedTx = Buffer.from(payload.hex, "hex").toString("base64"); + const parsedTx = new stellar_sdk_1.Transaction(base64EncodedTx, stellar_sdk_1.Networks.PUBLIC); + try { + const resp = await api.submitTransaction(parsedTx, { + skipMemoRequiredCheck: true + }); + return { + type: constants_1.RESPONSES.PUSH_TRANSACTION, + payload: resp.hash + }; + } catch (e) { + const txResultCode = e?.response?.data?.extras?.result_codes?.transaction || "unknown"; + const opResultCode = e?.response?.data?.extras?.result_codes?.operations?.[0] || "unknown"; + throw new Error(`transaction result code: ${txResultCode}, operation result code: ${opResultCode}`); + } + }; + var onRequest = (request, isTestnet) => { + switch (request.type) { + case constants_1.MESSAGES.GET_INFO: + return getInfo(request, isTestnet); + case constants_1.MESSAGES.GET_ACCOUNT_INFO: + return getAccountInfo(request); + case constants_1.MESSAGES.ESTIMATE_FEE: + return estimateFee(request); + case constants_1.MESSAGES.PUSH_TRANSACTION: + return pushTransaction(request); + case constants_1.MESSAGES.SUBSCRIBE: + return subscribe(request); + case constants_1.MESSAGES.UNSUBSCRIBE: + return unsubscribe(request); + default: + throw new errors_1.CustomError("worker_unknown_request", `+${request.type}`); + } + }; + var StellarWorker = class extends baseWorker_1.BaseWorker { + lazyTokens = (0, utils_1.createLazy)(() => utils.getTokenMetadata()); + isTestnet = false; + isConnected(api) { + return !!api; + } + async tryConnect(url) { + const api = new stellar_sdk_1.Horizon.Server(url, { + headers: { + ...(0, env_utils_1.isDesktop)() || (0, env_utils_1.isNative)() ? { + "User-Agent": `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}` + } : {} + } + }); + if ((await api.root()).network_passphrase == stellar_sdk_1.Networks.TESTNET) { + this.isTestnet = true; + } + return api; + } + disconnect() { + if (!this.api) { + return; + } + unsubscribeBlock({ + state: this.state, + connect: () => this.connect(), + post: (data) => this.post(data), + getTokenMetadata: this.lazyTokens.getOrInit + }); + this.api = void 0; + } + async messageHandler(event) { + try { + if (await super.messageHandler(event)) return true; + const request = { + ...event.data, + connect: () => this.connect(), + post: (data) => this.post(data), + state: this.state, + getTokenMetadata: this.lazyTokens.getOrInit + }; + const response = await onRequest(request, this.isTestnet); + this.post({ + id: event.data.id, + ...response + }); + } catch (error) { + this.errorResponse(event.data.id, error); + } + } + }; + function Stellar() { + return new StellarWorker(); + } + if (baseWorker_1.CONTEXT === "worker") { + const module3 = new StellarWorker(); + onmessage = module3.messageHandler.bind(module3); + } + } +}); + +// node_modules/@trezor/connect/lib/workers/workers.js +var require_workers = __commonJS({ + "node_modules/@trezor/connect/lib/workers/workers.js"(exports2) { + "use strict"; + var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { + enumerable: true, + get: function() { + return m[k]; + } + }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { + enumerable: true, + value: v + }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod3) { + if (mod3 && mod3.__esModule) return mod3; + var result = {}; + if (mod3 != null) { + for (var k = ownKeys(mod3), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod3, k[i]); + } + __setModuleDefault(result, mod3); + return result; + }; + }(); + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StellarWorker = exports2.SolanaWorker = exports2.ElectrumWorker = exports2.BlockfrostWorker = exports2.RippleWorker = exports2.BlockbookWorker = void 0; + var BlockbookWorker = () => Promise.resolve().then(() => __importStar2(require_blockbook2())).then((w) => w.default()); + exports2.BlockbookWorker = BlockbookWorker; + var RippleWorker = () => Promise.resolve().then(() => __importStar2(require_ripple2())).then((w) => w.default()); + exports2.RippleWorker = RippleWorker; + var BlockfrostWorker = () => Promise.resolve().then(() => __importStar2(require_blockfrost2())).then((w) => w.default()); + exports2.BlockfrostWorker = BlockfrostWorker; + var ElectrumWorker = () => Promise.resolve().then(() => __importStar2(require_electrum2())).then((w) => w.default()); + exports2.ElectrumWorker = ElectrumWorker; + var SolanaWorker = () => Promise.resolve().then(() => __importStar2(require_solana3())).then((w) => w.default()); + exports2.SolanaWorker = SolanaWorker; + var StellarWorker = () => Promise.resolve().then(() => __importStar2(require_stellar2())).then((w) => w.default()); + exports2.StellarWorker = StellarWorker; + } +}); + +// node_modules/@trezor/connect/lib/backend/Blockchain.js +var require_Blockchain = __commonJS({ + "node_modules/@trezor/connect/lib/backend/Blockchain.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Blockchain = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var blockchain_link_1 = tslib_1.__importDefault(require_lib13()); + var constants_1 = require_constants(); + var events_1 = require_events(); + var workers_1 = require_workers(); + var getWorker = (type) => { + switch (type) { + case "blockbook": + return workers_1.BlockbookWorker; + case "ripple": + return workers_1.RippleWorker; + case "blockfrost": + return workers_1.BlockfrostWorker; + case "electrum": + return workers_1.ElectrumWorker; + case "solana": + return workers_1.SolanaWorker; + case "stellar": + return workers_1.StellarWorker; + default: + return null; + } + }; + var getNormalizedTrezorShortcut = (shortcut) => { + if (shortcut === "tXRP") { + return "XRP"; + } + return shortcut; + }; + var Blockchain = class { + link; + serverInfo; + identity; + coinInfo; + postMessage; + onDisconnected; + initPromise; + constructor(options) { + this.identity = options.identity; + this.coinInfo = options.coinInfo; + this.postMessage = options.postMessage; + this.onDisconnected = options.onDisconnected; + const { + blockchainLink + } = options.coinInfo; + if (!blockchainLink) { + throw constants_1.ERRORS.TypedError("Backend_NotSupported"); + } + const worker = getWorker(blockchainLink.type); + if (!worker) { + throw constants_1.ERRORS.TypedError("Backend_WorkerMissing", `BlockchainLink worker not found ${blockchainLink.type}`); + } + const server = blockchainLink.url; + this.link = new blockchain_link_1.default({ + name: this.coinInfo.shortcut, + worker, + server, + debug: options.debug, + proxy: options.proxy, + ...this.coinInfo.type === "ethereum" ? { + throttleBlockEvent: 10 * 1e3 + } : {}, + ...["ripple", "stellar"].includes(blockchainLink.type) ? { + throttleBlockEvent: 60 * 1e3 + } : {} + }); + } + onBackendDisconnected(pendingSubscriptions = false) { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, { + coin: this.coinInfo, + identity: this.identity, + error: constants_1.ERRORS.ERROR_CODES.Backend_Disconnected, + code: "Backend_Disconnected" + })); + this.onDisconnected?.(!!pendingSubscriptions); + } + async initLink() { + let info; + try { + await this.link.connect(); + info = await this.link.getInfo(); + } catch (error) { + throw constants_1.ERRORS.TypedError("Backend_Error", error.message); + } + this.serverInfo = info; + const trezorNetworkShortcut = getNormalizedTrezorShortcut(this.coinInfo.shortcut); + const backendNetworkShortcut = this.serverInfo.network; + if (backendNetworkShortcut.toLowerCase() !== trezorNetworkShortcut.toLowerCase()) { + throw constants_1.ERRORS.TypedError("Backend_Invalid"); + } + this.link.on("disconnected", () => { + const pendingSubscriptions = this.link.listenerCount("block") || this.link.listenerCount("notification") || this.link.listenerCount("fiatRates"); + this.link.dispose(); + this.onBackendDisconnected(!!pendingSubscriptions); + }); + return info; + } + init() { + if (!this.initPromise) { + this.initPromise = this.initLink().then((info) => { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.CONNECT, { + coin: this.coinInfo, + identity: this.identity, + ...info + })); + this.initPromise = Promise.resolve(info); + return info; + }).catch((error) => { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, { + coin: this.coinInfo, + identity: this.identity, + error: error.message, + code: error.code + })); + this.initPromise = Promise.reject(error); + this.link.dispose(); + return this.initPromise; + }); + } + return this.initPromise; + } + getTransactions(txs) { + return Promise.all(txs.map((id) => this.link.getTransaction(id))); + } + getTransactionHexes(txids) { + return Promise.all(txids.map((id) => this.link.getTransactionHex(id))); + } + getCurrentFiatRates(params) { + return this.link.getCurrentFiatRates(params); + } + getFiatRatesForTimestamps(params) { + return this.link.getFiatRatesForTimestamps(params); + } + getAccountBalanceHistory(params) { + return this.link.getAccountBalanceHistory(params); + } + getNetworkInfo() { + return this.link.getInfo(); + } + getAccountInfo(request) { + return this.link.getAccountInfo(request); + } + getAccountUtxo(descriptor) { + return this.link.getAccountUtxo(descriptor); + } + rpcCall(params) { + return this.link.rpcCall(params); + } + estimateFee(request) { + return this.link.estimateFee(request); + } + subscribeBlocks() { + if (this.link.listenerCount("block") === 0) { + this.link.on("block", (block) => { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.BLOCK, { + coin: this.coinInfo, + ...block + })); + }); + } + return this.link.subscribe({ + type: "block" + }); + } + subscribeAccounts(accounts) { + if (this.link.listenerCount("notification") === 0) { + this.link.on("notification", (notification) => { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.NOTIFICATION, { + coin: this.coinInfo, + notification + })); + }); + } + return this.link.subscribe({ + type: "accounts", + accounts + }); + } + subscribeFiatRates(_currency) { + if (this.link.listenerCount("fiatRates") === 0) { + this.link.on("fiatRates", ({ + rates + }) => { + this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.FIAT_RATES_UPDATE, { + coin: this.coinInfo, + rates + })); + }); + } + return this.link.subscribe({ + type: "fiatRates" + }); + } + unsubscribeBlocks() { + this.link.removeAllListeners("block"); + return this.link.unsubscribe({ + type: "block" + }); + } + unsubscribeAccounts(accounts) { + return this.link.unsubscribe({ + type: "accounts", + accounts + }); + } + unsubscribeFiatRates() { + this.link.removeAllListeners("fiatRates"); + return this.link.unsubscribe({ + type: "fiatRates" + }); + } + async unsubscribeAll() { + this.link.removeAllListeners("notification"); + await this.unsubscribeFiatRates(); + return this.unsubscribeBlocks(); + } + pushTransaction(tx) { + const data = typeof tx === "string" ? { + hex: tx + } : tx; + return this.link.pushTransaction(data); + } + disconnect() { + this.link.removeAllListeners(); + this.link.disconnect().then(() => this.link.dispose()); + this.onBackendDisconnected(); + } + }; + exports2.Blockchain = Blockchain; + } +}); + +// node_modules/@trezor/connect-common/files/coins-eth.json +var require_coins_eth = __commonJS({ + "node_modules/@trezor/connect-common/files/coins-eth.json"(exports2, module2) { + module2.exports = { + eth: [ + { + blockchain_link: { + type: "blockbook", + url: ["https://eth.trezor.io"] + }, + chain: "eth", + chain_id: 1, + blocktime_seconds: 12, + coingecko_id: "ethereum", + is_testnet: false, + label: "ETH", + name: "Ethereum", + shortcut: "ETH", + slip44: 60, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://op.trezor.io"] + }, + chain: "op", + chain_id: 10, + blocktime_seconds: 2, + coingecko_id: "optimistic-ethereum", + is_testnet: false, + label: "ETH", + name: "Optimism", + shortcut: "OP", + slip44: 614, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://avax.trezor.io"] + }, + chain: "avax", + chain_id: 43114, + blocktime_seconds: 2, + coingecko_id: "avalanche", + is_testnet: false, + label: "AVAX", + name: "Avalanche C-Chain", + shortcut: "AVAX", + slip44: 9e3, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://bsc.trezor.io"] + }, + chain: "bsc", + chain_id: 56, + blocktime_seconds: 0.75, + coingecko_id: "binance-smart-chain", + is_testnet: false, + label: "BNB", + name: "BNB Smart Chain", + shortcut: "BSC", + slip44: 714, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://etc.trezor.io"] + }, + chain: "etc", + chain_id: 61, + blocktime_seconds: 14, + coingecko_id: "ethereum-classic", + is_testnet: false, + label: "ETC", + name: "Ethereum Classic", + shortcut: "ETC", + slip44: 61, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://pol.trezor.io"] + }, + chain: "pol", + chain_id: 137, + blocktime_seconds: 2, + coingecko_id: "polygon-pos", + is_testnet: false, + label: "POL", + name: "Polygon", + shortcut: "POL", + slip44: 966, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://base.trezor.io"] + }, + chain: "base", + chain_id: 8453, + blocktime_seconds: 2, + coingecko_id: "base", + is_testnet: false, + label: "ETH", + name: "Base", + shortcut: "BASE", + slip44: 8453, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://hoodi.trezor.io"] + }, + chain: "hod", + chain_id: 560048, + blocktime_seconds: 12, + is_testnet: true, + label: "tHOD", + name: "Hoodi", + shortcut: "tHOD", + slip44: 1, + support: { + T1B1: "1.11.3", + T2B1: "2.6.4", + T2T1: "2.5.4", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://arb.trezor.io"] + }, + chain: "arb", + chain_id: 42161, + blocktime_seconds: 0.25, + coingecko_id: "arbitrum-one", + is_testnet: false, + label: "ETH", + name: "Arbitrum One", + shortcut: "ARB", + slip44: 9001, + support: { + T1B1: "1.9.4", + T2B1: "2.6.1", + T2T1: "2.3.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "blockbook", + url: ["https://sepolia.trezor.io"] + }, + chain: "sep", + chain_id: 11155111, + blocktime_seconds: 12, + is_testnet: true, + label: "tSEP", + name: "Sepolia", + shortcut: "tSEP", + slip44: 1, + support: { + T1B1: "1.11.3", + T2B1: "2.6.4", + T2T1: "2.5.4", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + } + ] + }; + } +}); + +// node_modules/@trezor/connect-common/files/coins.json +var require_coins = __commonJS({ + "node_modules/@trezor/connect-common/files/coins.json"(exports2, module2) { + module2.exports = { + bitcoin: [ + { + address_type: 0, + address_type_p2sh: 5, + bech32_prefix: "bc", + blockchain_link: { + type: "blockbook", + url: ["https://btc.trezor.io"] + }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Bitcoin", + coin_name: "Bitcoin", + coin_shortcut: "BTC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 70, High: 200, Low: 10, Normal: 140 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 2e6, + min_address_length: 27, + minfee_kb: 100, + name: "Bitcoin", + overwintered: false, + segwit: true, + shortcut: "BTC", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 0, + support: { + T1B1: "1.5.2", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 44728019, + xpub_magic_multisig_segwit_p2sh: 43365439, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: "bcrt", + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Regtest", + coin_name: "Regtest", + coin_shortcut: "REGTEST", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 1e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Regtest", + overwintered: false, + segwit: true, + shortcut: "REGTEST", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.8.2", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 39277699, + xpub_magic_multisig_segwit_p2sh: 37915119, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: "tb", + blockchain_link: { type: "blockbook", url: ["https://tbtc4.trezor.io"] }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Testnet", + coin_name: "Testnet", + coin_shortcut: "TEST", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 1e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Testnet", + overwintered: false, + segwit: true, + shortcut: "TEST", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.5.2", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 39277699, + xpub_magic_multisig_segwit_p2sh: 37915119, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 53, + address_type_p2sh: 55, + bech32_prefix: "acm", + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Actinium", + coin_name: "Actinium", + coin_shortcut: "ACM", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "28d77872e23714562f49a1be792c276623c1bbe3fdcf21b6035cfde78b00b824", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 32e10, + min_address_length: 27, + minfee_kb: 1e5, + name: "Actinium", + overwintered: false, + segwit: true, + shortcut: "ACM", + signed_message_header: "Actinium Signed Message:\n", + slip44: 228, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.10", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 55, + address_type_p2sh: 16, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Axe", + coin_name: "Axe", + coin_shortcut: "AXE", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 5460, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000c33631ca6f2f61368991ce2dc03306b5bb50bf7cede5cfbba6db38e52e6", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 21e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "Axe", + overwintered: false, + segwit: false, + shortcut: "AXE", + signed_message_header: "DarkCoin Signed Message:\n", + slip44: 4242, + support: { + T1B1: "1.7.3", + T2B1: "2.6.1", + T2T1: "2.0.11", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 50221816, + xpub_magic: 50221772, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 0, + address_type_p2sh: 5, + bech32_prefix: null, + blockchain_link: { + type: "blockbook", + url: ["https://bch.trezor.io"] + }, + blocktime_seconds: 600, + cashaddr_prefix: "bitcoincash", + coin_label: "Bitcoin Cash", + coin_name: "Bcash", + coin_shortcut: "BCH", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1 }, + dust_limit: 546, + extra_data: false, + force_bip143: true, + fork_id: 0, + hash_genesis_block: "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 14e6, + min_address_length: 27, + minfee_kb: 1e3, + name: "Bitcoin Cash", + overwintered: false, + segwit: false, + shortcut: "BCH", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 145, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: "bchtest", + coin_label: "Bitcoin Cash Testnet", + coin_name: "Bcash Testnet", + coin_shortcut: "TBCH", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: true, + fork_id: 0, + hash_genesis_block: "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 1e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Bitcoin Cash Testnet", + overwintered: false, + segwit: false, + shortcut: "TBCH", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 38, + address_type_p2sh: 23, + bech32_prefix: "btg", + blockchain_link: { + type: "blockbook", + url: [ + "https://btg1.trezor.io", + "https://btg2.trezor.io", + "https://btg3.trezor.io", + "https://btg4.trezor.io", + "https://btg5.trezor.io" + ] + }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Bitcoin Gold", + coin_name: "Bgold", + coin_shortcut: "BTG", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 30 }, + dust_limit: 546, + extra_data: false, + force_bip143: true, + fork_id: 79, + hash_genesis_block: "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 38e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Bitcoin Gold", + overwintered: false, + segwit: true, + shortcut: "BTG", + signed_message_header: "Bitcoin Gold Signed Message:\n", + slip44: 156, + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: "tbtg", + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Bitcoin Gold Testnet", + coin_name: "Bgold Testnet", + coin_shortcut: "TBTG", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 70, High: 200, Low: 10, Normal: 140 }, + dust_limit: 546, + extra_data: false, + force_bip143: true, + fork_id: 79, + hash_genesis_block: "00000000e0781ebe24b91eedc293adfea2f557b53ec379e78959de3853e6f9f6", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 5e5, + min_address_length: 27, + minfee_kb: 1e3, + name: "Bitcoin Gold Testnet", + overwintered: false, + segwit: true, + shortcut: "TBTG", + signed_message_header: "Bitcoin Gold Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.7.1", + T2B1: false, + T2T1: "2.0.8", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 4901, + address_type_p2sh: 5039, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Bitcoin Private", + coin_name: "Bprivate", + coin_shortcut: "BTCP", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: 42, + hash_genesis_block: "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + is_testnet: false, + max_address_length: 95, + maxfee_kb: 32e9, + min_address_length: 35, + minfee_kb: 1e3, + name: "Bitcoin Private", + overwintered: false, + segwit: false, + shortcut: "BTCP", + signed_message_header: "BitcoinPrivate Signed Message:\n", + slip44: 183, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 3, + address_type_p2sh: 125, + bech32_prefix: "btx", + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Bitcore", + coin_name: "Bitcore", + coin_shortcut: "BTX", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Low: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 14e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "Bitcore", + overwintered: false, + segwit: true, + shortcut: "BTX", + signed_message_header: "BitCore Signed Message:\n", + slip44: 160, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 28, + address_type_p2sh: 30, + bech32_prefix: "cpu", + blockchain_link: { type: "blockbook", url: ["https://blockbook.cpuchain.org"] }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "CPUchain", + coin_name: "CPUchain", + coin_shortcut: "CPU", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 20 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000024d8766043ea0e1c9ad42e7ea4b5fdb459887bd80b8f9756f3d87e128f12", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 87e11, + min_address_length: 27, + minfee_kb: 1e3, + name: "CPUchain", + overwintered: false, + segwit: true, + shortcut: "CPU", + signed_message_header: "CPUchain Signed Message:\n", + slip44: 363, + support: { + T1B1: "1.8.3", + T2B1: "2.6.1", + T2T1: "2.1.4", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 95495, + address_type_p2sh: 95473, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Crown", + coin_name: "Crown", + coin_shortcut: "CRW", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da", + is_testnet: false, + max_address_length: 40, + maxfee_kb: 52e9, + min_address_length: 36, + minfee_kb: 1e3, + name: "Crown", + overwintered: false, + segwit: false, + shortcut: "CRW", + signed_message_header: "Crown Signed Message:\n", + slip44: 72, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 76, + address_type_p2sh: 16, + bech32_prefix: null, + blockchain_link: { + type: "blockbook", + url: [ + "https://dash1.trezor.io", + "https://dash2.trezor.io", + "https://dash3.trezor.io", + "https://dash4.trezor.io", + "https://dash5.trezor.io" + ] + }, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Dash", + coin_name: "Dash", + coin_shortcut: "DASH", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 5460, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 45e6, + min_address_length: 27, + minfee_kb: 1e3, + name: "Dash", + overwintered: false, + segwit: false, + shortcut: "DASH", + signed_message_header: "DarkCoin Signed Message:\n", + slip44: 5, + support: { + T1B1: "1.5.2", + T2B1: false, + T2T1: "2.0.5", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 50221816, + xpub_magic: 50221772, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 140, + address_type_p2sh: 19, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Dash Testnet", + coin_name: "Dash Testnet", + coin_shortcut: "tDASH", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 5460, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 1e5, + min_address_length: 27, + minfee_kb: 1e4, + name: "Dash Testnet", + overwintered: false, + segwit: false, + shortcut: "tDASH", + signed_message_header: "DarkCoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.8", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 1855, + address_type_p2sh: 1818, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 300, + cashaddr_prefix: null, + coin_label: "Decred", + coin_name: "Decred", + coin_shortcut: "DCR", + curve_name: "secp256k1_decred", + decimals: 8, + decred: true, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "298e5cc3d985bfe7f81dc135f360abe089edd4396b86d2de66b0cef42b21d980", + is_testnet: false, + max_address_length: 35, + maxfee_kb: 22e7, + min_address_length: 35, + minfee_kb: 1e4, + name: "Decred", + overwintered: false, + segwit: false, + shortcut: "DCR", + signed_message_header: "Decred Signed Message:\n", + slip44: 42, + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.8", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 50177256, + xpub_magic: 50178342, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 3873, + address_type_p2sh: 3836, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 120, + cashaddr_prefix: null, + coin_label: "Decred Testnet", + coin_name: "Decred Testnet", + coin_shortcut: "TDCR", + curve_name: "secp256k1_decred", + decimals: 8, + decred: true, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "a649dce53918caf422e9c711c858837e08d626ecfcd198969b24f7b634a49bac", + is_testnet: true, + max_address_length: 35, + maxfee_kb: 1e7, + min_address_length: 35, + minfee_kb: 1e3, + name: "Decred Testnet", + overwintered: false, + segwit: false, + shortcut: "TDCR", + signed_message_header: "Decred Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.8", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 70615959, + xpub_magic: 70617041, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 30, + address_type_p2sh: 63, + bech32_prefix: "dgb", + blockchain_link: { + type: "blockbook", + url: ["https://dgb1.trezor.io", "https://dgb2.trezor.io"] + }, + blocktime_seconds: 15, + cashaddr_prefix: null, + coin_label: "DigiByte", + coin_name: "DigiByte", + coin_shortcut: "DGB", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 30 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 13e10, + min_address_length: 27, + minfee_kb: 1e3, + name: "DigiByte", + overwintered: false, + segwit: true, + shortcut: "DGB", + signed_message_header: "DigiByte Signed Message:\n", + slip44: 20, + support: { + T1B1: "1.6.3", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 30, + address_type_p2sh: 22, + bech32_prefix: null, + blockchain_link: { + type: "blockbook", + url: ["https://doge.trezor.io"] + }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Dogecoin", + coin_name: "Dogecoin", + coin_shortcut: "DOGE", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 1e6, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 12e11, + min_address_length: 27, + minfee_kb: 1e5, + name: "Dogecoin", + overwintered: false, + segwit: false, + shortcut: "DOGE", + signed_message_header: "Dogecoin Signed Message:\n", + slip44: 3, + support: { + T1B1: "1.5.2", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 49988504, + xpub_magic: 49990397, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 235, + address_type_p2sh: 75, + bech32_prefix: "ert", + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Elements", + coin_name: "Elements", + coin_shortcut: "ELEMENTS", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "209577bda6bf4b5804bd46f8621580dd6d4e8bfa2d190e1c50e932492baca07d", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 1e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Elements", + overwintered: false, + segwit: true, + shortcut: "ELEMENTS", + signed_message_header: "Bitcoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.8.3", + T2B1: "2.6.1", + T2T1: "2.1.4", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 14, + address_type_p2sh: 5, + bech32_prefix: "fc", + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Feathercoin", + coin_name: "Feathercoin", + coin_shortcut: "FTC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 54600, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 39e10, + min_address_length: 27, + minfee_kb: 1e3, + name: "Feathercoin", + overwintered: false, + segwit: true, + shortcut: "FTC", + signed_message_header: "Feathercoin Signed Message:\n", + slip44: 8, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76077806, + xpub_magic: 76069926, + xpub_magic_multisig_segwit_native: 76069926, + xpub_magic_multisig_segwit_p2sh: 76069926, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 82, + address_type_p2sh: 7, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Firo", + coin_name: "Firo", + coin_shortcut: "FIRO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 10, High: 200, Low: 1, Normal: 100 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 64e7, + min_address_length: 27, + minfee_kb: 0, + name: "Firo", + overwintered: false, + segwit: false, + shortcut: "FIRO", + signed_message_header: "Zcoin Signed Message:\n", + slip44: 136, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 65, + address_type_p2sh: 178, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Firo Testnet", + coin_name: "Firo Testnet", + coin_shortcut: "tFIRO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 10, High: 200, Low: 1, Normal: 100 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642", + is_testnet: true, + max_address_length: 35, + maxfee_kb: 1e6, + min_address_length: 27, + minfee_kb: 0, + name: "Firo Testnet", + overwintered: false, + segwit: false, + shortcut: "tFIRO", + signed_message_header: "Zcoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 35, + address_type_p2sh: 94, + bech32_prefix: "flo", + blockchain_link: null, + blocktime_seconds: 40, + cashaddr_prefix: null, + coin_label: "Flo", + coin_name: "Florincoin", + coin_shortcut: "FLO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 78e9, + min_address_length: 27, + minfee_kb: 1e5, + name: "Flo", + overwintered: false, + segwit: true, + shortcut: "FLO", + signed_message_header: "Florincoin Signed Message:\n", + slip44: 216, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.11", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 15264107, + xpub_magic: 1526049, + xpub_magic_multisig_segwit_native: 1526049, + xpub_magic_multisig_segwit_p2sh: 1526049, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 28471030 + }, + { + address_type: 36, + address_type_p2sh: 16, + bech32_prefix: "fc", + blockchain_link: { type: "blockbook", url: ["https://explorer.fujicoin.org"] }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Fujicoin", + coin_name: "Fujicoin", + coin_shortcut: "FJC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 2e4, High: 1e5, Low: 1e4, Normal: 5e4 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 35e12, + min_address_length: 27, + minfee_kb: 1e7, + name: "Fujicoin", + overwintered: false, + segwit: true, + shortcut: "FJC", + signed_message_header: "FujiCoin Signed Message:\n", + slip44: 75, + support: { + T1B1: "1.6.1", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 44728019, + xpub_magic_multisig_segwit_p2sh: 43365439, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 36, + address_type_p2sh: 5, + bech32_prefix: "grs", + blockchain_link: { + type: "blockbook", + url: ["https://blockbook.groestlcoin.org"] + }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Groestlcoin", + coin_name: "Groestlcoin", + coin_shortcut: "GRS", + curve_name: "secp256k1_groestl", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 16e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "Groestlcoin", + overwintered: false, + segwit: true, + shortcut: "GRS", + signed_message_header: "GroestlCoin Signed Message:\n", + slip44: 17, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: "tgrs", + blockchain_link: { + type: "blockbook", + url: ["https://blockbook-test.groestlcoin.org"] + }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Groestlcoin Testnet", + coin_name: "Groestlcoin Testnet", + coin_shortcut: "tGRS", + curve_name: "secp256k1_groestl", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000000ffbb50fc9898cdd36ec163e6ba23230164c0052a28876255b7dcf2cd36", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 1e5, + min_address_length: 27, + minfee_kb: 1e3, + name: "Groestlcoin Testnet", + overwintered: false, + segwit: true, + shortcut: "tGRS", + signed_message_header: "GroestlCoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: true, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 60, + address_type_p2sh: 85, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Komodo", + coin_name: "Komodo", + coin_shortcut: "KMD", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 48e8, + min_address_length: 27, + minfee_kb: 1e3, + name: "Komodo", + overwintered: true, + segwit: false, + shortcut: "KMD", + signed_message_header: "Komodo Signed Message:\n", + slip44: 141, + support: { + T1B1: "1.8.0", + T2B1: "2.6.1", + T2T1: "2.0.11", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 6198, + address_type_p2sh: 6203, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Koto", + coin_name: "Koto", + coin_shortcut: "KOTO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "6d424c350729ae633275d51dc3496e16cd1b1d195c164da00f39c499a2e9959e", + is_testnet: false, + max_address_length: 95, + maxfee_kb: 1e6, + min_address_length: 35, + minfee_kb: 1e3, + name: "Koto", + overwintered: true, + segwit: false, + shortcut: "KOTO", + signed_message_header: "Koto Signed Message:\n", + slip44: 510, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 48, + address_type_p2sh: 50, + bech32_prefix: "ltc", + blockchain_link: { + type: "blockbook", + url: ["https://ltc.trezor.io"] + }, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Litecoin", + coin_name: "Litecoin", + coin_shortcut: "LTC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 67e6, + min_address_length: 27, + minfee_kb: 1e3, + name: "Litecoin", + overwintered: false, + segwit: true, + shortcut: "LTC", + signed_message_header: "Litecoin Signed Message:\n", + slip44: 2, + support: { + T1B1: "1.5.2", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 27106558, + xpub_magic: 27108450, + xpub_magic_multisig_segwit_native: 27108450, + xpub_magic_multisig_segwit_p2sh: 27108450, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 28471030 + }, + { + address_type: 111, + address_type_p2sh: 58, + bech32_prefix: "tltc", + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Litecoin Testnet", + coin_name: "Litecoin Testnet", + coin_shortcut: "tLTC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 54600, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 4e7, + min_address_length: 27, + minfee_kb: 1e3, + name: "Litecoin Testnet", + overwintered: false, + segwit: true, + shortcut: "tLTC", + signed_message_header: "Litecoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 50, + address_type_p2sh: 55, + bech32_prefix: "mona", + blockchain_link: { + type: "blockbook", + url: ["https://blockbook.electrum-mona.org"] + }, + blocktime_seconds: 90, + cashaddr_prefix: null, + coin_label: "Monacoin", + coin_name: "Monacoin", + coin_shortcut: "MONA", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 54600, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 21e8, + min_address_length: 27, + minfee_kb: 1e5, + name: "Monacoin", + overwintered: false, + segwit: true, + shortcut: "MONA", + signed_message_header: "Monacoin Signed Message:\n", + slip44: 22, + support: { + T1B1: "1.6.0", + T2B1: "2.6.1", + T2T1: "2.0.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 52, + address_type_p2sh: 5, + bech32_prefix: null, + blockchain_link: { + type: "blockbook", + url: ["https://nmc1.trezor.io", "https://nmc2.trezor.io"] + }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Namecoin", + coin_name: "Namecoin", + coin_shortcut: "NMC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 2940, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 87e8, + min_address_length: 27, + minfee_kb: 1e5, + name: "Namecoin", + overwintered: false, + segwit: false, + shortcut: "NMC", + signed_message_header: "Namecoin Signed Message:\n", + slip44: 7, + support: { + T1B1: "1.5.2", + T2B1: false, + T2T1: "2.0.5", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 55, + address_type_p2sh: 117, + bech32_prefix: "pc", + blockchain_link: { type: "blockbook", url: ["https://blockbook.peercoin.net"] }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Peercoin", + coin_name: "Peercoin", + coin_shortcut: "PPC", + curve_name: "secp256k1", + decimals: 6, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 1e4, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000000032fe677166d54963b62a4677d8957e87c508eaa4fd7eb1c880cd27e3", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 13e9, + min_address_length: 27, + minfee_kb: 1e4, + name: "Peercoin", + overwintered: false, + segwit: true, + shortcut: "PPC", + signed_message_header: "Peercoin Signed Message:\n", + slip44: 6, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.9", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: true, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: "tpc", + blockchain_link: { type: "blockbook", url: ["https://tblockbook.peercoin.net"] }, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "Peercoin Testnet", + coin_name: "Peercoin Testnet", + coin_shortcut: "tPPC", + curve_name: "secp256k1", + decimals: 6, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 1e4, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000001f757bb737f6596503e17cd17b0658ce630cc727c0cca81aec47c9f06", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 2e6, + min_address_length: 27, + minfee_kb: 1e4, + name: "Peercoin Testnet", + overwintered: false, + segwit: true, + shortcut: "tPPC", + signed_message_header: "Peercoin Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.9", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: true, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 23, + address_type_p2sh: 83, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Primecoin", + coin_name: "Primecoin", + coin_shortcut: "XPM", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "963d17ba4dc753138078a2f56afb3af9674e2546822badff26837db9a0152106", + is_testnet: false, + max_address_length: 35, + maxfee_kb: 89e9, + min_address_length: 26, + minfee_kb: 1e3, + name: "Primecoin", + overwintered: false, + segwit: false, + shortcut: "XPM", + signed_message_header: "Primecoin Signed Message:\n", + slip44: 24, + support: { + T1B1: "1.8.0", + T2B1: "2.6.1", + T2T1: "2.0.11", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 58, + address_type_p2sh: 50, + bech32_prefix: "qc", + blockchain_link: null, + blocktime_seconds: 128, + cashaddr_prefix: null, + coin_label: "Qtum", + coin_name: "Qtum", + coin_shortcut: "QTUM", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 500, High: 2e3, Low: 410, Normal: 600 }, + dust_limit: 218400, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000075aef83cf2853580f8ae8ce6f8c3096cfa21d98334d6e3f95e5582ed986c", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 1e9, + min_address_length: 27, + minfee_kb: 4e5, + name: "Qtum", + overwintered: false, + segwit: true, + shortcut: "QTUM", + signed_message_header: "Qtum Signed Message:\n", + slip44: 2301, + support: { + T1B1: "1.8.1", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 120, + address_type_p2sh: 110, + bech32_prefix: "tq", + blockchain_link: null, + blocktime_seconds: 128, + cashaddr_prefix: null, + coin_label: "Qtum Testnet", + coin_name: "Qtum Testnet", + coin_shortcut: "tQTUM", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 500, High: 2e3, Low: 410, Normal: 600 }, + dust_limit: 218400, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000e803ee215c0684ca0d2f9220594d3f828617972aad66feb2ba51f5e14222", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 4e7, + min_address_length: 27, + minfee_kb: 4e5, + name: "Qtum Testnet", + overwintered: false, + segwit: true, + shortcut: "tQTUM", + signed_message_header: "Qtum Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.8.1", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: 70617039, + xpub_magic_multisig_segwit_p2sh: 70617039, + xpub_magic_segwit_native: 73342198, + xpub_magic_segwit_p2sh: 71979618 + }, + { + address_type: 60, + address_type_p2sh: 122, + bech32_prefix: null, + blockchain_link: { type: "blockbook", url: ["https://blockbook.ravencoin.org"] }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Ravencoin", + coin_name: "Ravencoin", + coin_shortcut: "RVN", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Low: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000006b444bc2f2ffe627be9d9e7e7a0730000870ef6eb6da46c8eae389df90", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 17e10, + min_address_length: 27, + minfee_kb: 1e3, + name: "Ravencoin", + overwintered: false, + segwit: false, + shortcut: "RVN", + signed_message_header: "Raven Signed Message:\n", + slip44: 175, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.10", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 111, + address_type_p2sh: 196, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Ravencoin Testnet", + coin_name: "Ravencoin Testnet", + coin_shortcut: "tRVN", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Low: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000000ecfc5e6324a079542221d00e10362bdc894d56500c414060eea8a3ad5a", + is_testnet: true, + max_address_length: 34, + maxfee_kb: 17e10, + min_address_length: 27, + minfee_kb: 1e3, + name: "Ravencoin Testnet", + overwintered: false, + segwit: false, + shortcut: "tRVN", + signed_message_header: "Raven Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.10.0", + T2B1: "2.6.1", + T2T1: "2.4.0", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 25, + address_type_p2sh: 105, + bech32_prefix: null, + blockchain_link: { type: "blockbook", url: ["https://blockbook.ritocoin.org"] }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Ritocoin", + coin_name: "Ritocoin", + coin_shortcut: "RITO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Low: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000075e344bdf1c0e433f453764b1830a7aa19b2a5213e707502a22b779c1b", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 39e12, + min_address_length: 27, + minfee_kb: 1e3, + name: "Ritocoin", + overwintered: false, + segwit: false, + shortcut: "RITO", + signed_message_header: "Rito Signed Message:\n", + slip44: 19169, + support: { + T1B1: "1.8.2", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 87326380, + xpub_magic: 87353290, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 63, + address_type_p2sh: 18, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 55, + cashaddr_prefix: null, + coin_label: "SmartCash", + coin_name: "SmartCash", + coin_shortcut: "SMART", + curve_name: "secp256k1_smart", + decimals: 8, + decred: false, + default_fee_b: { Economy: 10, High: 200, Low: 1, Normal: 100 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000007acc6970b812948d14ea5a0a13db0fdd07d5047c7e69101fa8b361e05a4", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 78e10, + min_address_length: 27, + minfee_kb: 0, + name: "SmartCash", + overwintered: false, + segwit: false, + shortcut: "SMART", + signed_message_header: "SmartCash Signed Message:\n", + slip44: 224, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 65, + address_type_p2sh: 21, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 55, + cashaddr_prefix: null, + coin_label: "SmartCash Testnet", + coin_name: "SmartCash Testnet", + coin_shortcut: "tSMART", + curve_name: "secp256k1_smart", + decimals: 8, + decred: false, + default_fee_b: { Economy: 10, High: 200, Low: 1, Normal: 100 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000027235b5679bcd28c90d03d4bf1a9ba4c07c4efcc1c87d6c68cce25e6e5d", + is_testnet: true, + max_address_length: 35, + maxfee_kb: 1e6, + min_address_length: 27, + minfee_kb: 0, + name: "SmartCash Testnet", + overwintered: false, + segwit: false, + shortcut: "tSMART", + signed_message_header: "SmartCash Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 76, + address_type_p2sh: 16, + bech32_prefix: "xc", + blockchain_link: null, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Stakenet", + coin_name: "Stakenet", + coin_shortcut: "XSN", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 70, High: 200, Low: 10, Normal: 140 }, + dust_limit: 1e3, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000c822abdbb23e28f79a49d29b41429737c6c7e15df40d1b1f1b35907ae34", + is_testnet: false, + max_address_length: 47, + maxfee_kb: 11e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "Stakenet", + overwintered: false, + segwit: true, + shortcut: "XSN", + signed_message_header: "DarkCoin Signed Message:\n", + slip44: 199, + support: { + T1B1: "1.8.0", + T2B1: "2.6.1", + T2T1: "2.0.11", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 63, + address_type_p2sh: 5, + bech32_prefix: "sys", + blockchain_link: { type: "blockbook", url: ["https://blockbook.syscoin.org"] }, + blocktime_seconds: 60, + cashaddr_prefix: null, + coin_label: "Syscoin", + coin_name: "Syscoin", + coin_shortcut: "SYS", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 700, High: 2e3, Low: 100, Normal: 1400 }, + dust_limit: 1820, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000022642db0346b6e01c2a397471f4f12e65d4f4251ec96c1f85367a61a7ab", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 42e9, + min_address_length: 27, + minfee_kb: 1e4, + name: "Syscoin", + overwintered: false, + segwit: true, + shortcut: "SYS", + signed_message_header: "Syscoin Signed Message:\n", + slip44: 57, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 130, + address_type_p2sh: 30, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 30, + cashaddr_prefix: null, + coin_label: "Unobtanium", + coin_name: "Unobtanium", + coin_shortcut: "UNO", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 50, High: 160, Low: 10, Normal: 100 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 53e6, + min_address_length: 27, + minfee_kb: 1e3, + name: "Unobtanium", + overwintered: false, + segwit: false, + shortcut: "UNO", + signed_message_header: "Unobtanium Signed Message:\n", + slip44: 92, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.6", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 70, + address_type_p2sh: 50, + bech32_prefix: "vips", + blockchain_link: { + type: "blockbook", + url: ["https://vips.blockbook.japanesecoin-pool.work"] + }, + blocktime_seconds: 120, + cashaddr_prefix: null, + coin_label: "VIPSTARCOIN", + coin_name: "VIPSTARCOIN", + coin_shortcut: "VIPS", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 500, High: 2e3, Low: 410, Normal: 600 }, + dust_limit: 218400, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "0000d068e1d30f79fb64446137106be9c6ee69a6a722295c131506b1ee09b77c", + is_testnet: false, + max_address_length: 36, + maxfee_kb: 14e13, + min_address_length: 27, + minfee_kb: 4e5, + name: "VIPSTARCOIN", + overwintered: false, + segwit: true, + shortcut: "VIPS", + signed_message_header: "VIPSTARCOIN Signed Message:\n", + slip44: 1919, + support: { + T1B1: "1.8.2", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 30, + address_type_p2sh: 33, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 30, + cashaddr_prefix: null, + coin_label: "Verge", + coin_name: "Verge", + coin_shortcut: "XVG", + curve_name: "secp256k1", + decimals: 6, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 1e4, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00000fc63692467faeb20cdb3b53200dc601d75bdfa1001463304cc790d77278", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 55e10, + min_address_length: 27, + minfee_kb: 1e6, + name: "Verge", + overwintered: false, + segwit: false, + shortcut: "XVG", + signed_message_header: "Name: Dogecoin Dark\n", + slip44: 77, + support: { + T1B1: "1.9.3", + T2B1: "2.6.1", + T2T1: "2.3.3", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: true, + xprv_magic: 35729707, + xpub_magic: 36513075, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 71, + address_type_p2sh: 5, + bech32_prefix: "vtc", + blockchain_link: { + type: "blockbook", + url: [ + "https://vtc1.trezor.io", + "https://vtc2.trezor.io", + "https://vtc3.trezor.io", + "https://vtc4.trezor.io", + "https://vtc5.trezor.io" + ] + }, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Vertcoin", + coin_name: "Vertcoin", + coin_shortcut: "VTC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 1e3 }, + dust_limit: 54600, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 13e9, + min_address_length: 27, + minfee_kb: 1e5, + name: "Vertcoin", + overwintered: false, + segwit: true, + shortcut: "VTC", + signed_message_header: "Vertcoin Signed Message:\n", + slip44: 28, + support: { + T1B1: "1.6.1", + T2B1: false, + T2T1: "2.0.5", + T3B1: false, + T3T1: false, + T3W1: false + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 71, + address_type_p2sh: 33, + bech32_prefix: "via", + blockchain_link: null, + blocktime_seconds: 24, + cashaddr_prefix: null, + coin_label: "Viacoin", + coin_name: "Viacoin", + coin_shortcut: "VIA", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 7e3, High: 2e4, Low: 1e3, Normal: 14e3 }, + dust_limit: 54600, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 14e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "Viacoin", + overwintered: false, + segwit: true, + shortcut: "VIA", + signed_message_header: "Viacoin Signed Message:\n", + slip44: 14, + support: { + T1B1: "1.6.2", + T2B1: "2.6.1", + T2T1: "2.0.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: 76067358, + xpub_magic_multisig_segwit_p2sh: 76067358, + xpub_magic_segwit_native: 78792518, + xpub_magic_segwit_p2sh: 77429938 + }, + { + address_type: 142, + address_type_p2sh: 145, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 120, + cashaddr_prefix: null, + coin_label: "ZCore", + coin_name: "ZCore", + coin_shortcut: "ZCR", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "695b79c8c234b45b2eeb4722f33373e471c9b686ff78efeb39da95f824a9f81b", + is_testnet: false, + max_address_length: 95, + maxfee_kb: 17e10, + min_address_length: 34, + minfee_kb: 1e3, + name: "ZCore", + overwintered: false, + segwit: false, + shortcut: "ZCR", + signed_message_header: "DarkNet Signed Message:\n", + slip44: 428, + support: { + T1B1: "1.8.4", + T2B1: "2.6.1", + T2T1: "2.1.7", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 78791432, + xpub_magic: 78792518, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 7352, + address_type_p2sh: 7357, + bech32_prefix: null, + blockchain_link: { + type: "blockbook", + url: ["https://zec.trezor.io"] + }, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Zcash", + coin_name: "Zcash", + coin_shortcut: "ZEC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", + is_testnet: false, + max_address_length: 95, + maxfee_kb: 51e6, + min_address_length: 35, + minfee_kb: 1e3, + name: "Zcash", + overwintered: true, + segwit: false, + shortcut: "ZEC", + signed_message_header: "Zcash Signed Message:\n", + slip44: 133, + support: { + T1B1: "1.8.1", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 7461, + address_type_p2sh: 7354, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 150, + cashaddr_prefix: null, + coin_label: "Zcash Testnet", + coin_name: "Zcash Testnet", + coin_shortcut: "TAZ", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Normal: 10 }, + dust_limit: 546, + extra_data: true, + force_bip143: false, + fork_id: null, + hash_genesis_block: "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", + is_testnet: true, + max_address_length: 95, + maxfee_kb: 1e7, + min_address_length: 35, + minfee_kb: 1e3, + name: "Zcash Testnet", + overwintered: true, + segwit: false, + shortcut: "TAZ", + signed_message_header: "Zcash Signed Message:\n", + slip44: 1, + support: { + T1B1: "1.8.1", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 70615956, + xpub_magic: 70617039, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + }, + { + address_type: 61, + address_type_p2sh: 123, + bech32_prefix: null, + blockchain_link: null, + blocktime_seconds: 600, + cashaddr_prefix: null, + coin_label: "xRhodium", + coin_name: "Brhodium", + coin_shortcut: "XRC", + curve_name: "secp256k1", + decimals: 8, + decred: false, + default_fee_b: { Economy: 70, High: 200, Low: 10, Normal: 140 }, + dust_limit: 546, + extra_data: false, + force_bip143: false, + fork_id: null, + hash_genesis_block: "baff5bfd9dc43fb672d003ec20fd21428f9282ca46bfa1730d73e1f2c75f5fdd", + is_testnet: false, + max_address_length: 34, + maxfee_kb: 1e9, + min_address_length: 27, + minfee_kb: 1e3, + name: "xRhodium", + overwintered: false, + segwit: false, + shortcut: "XRC", + signed_message_header: "BitCoin Rhodium Signed Message:\n", + slip44: 10291, + support: { + T1B1: "1.8.2", + T2B1: "2.6.1", + T2T1: "2.1.1", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + }, + taproot: false, + timestamp: false, + xprv_magic: 76066276, + xpub_magic: 76067358, + xpub_magic_multisig_segwit_native: null, + xpub_magic_multisig_segwit_p2sh: null, + xpub_magic_segwit_native: null, + xpub_magic_segwit_p2sh: null + } + ], + misc: [ + { + blockchain_link: { + type: "blockfrost", + url: ["wss://ada.trezor.io"] + }, + curve: "ed25519", + decimals: 6, + is_testnet: false, + name: "Cardano", + shortcut: "ADA", + slip44: 1815, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: null, + curve: "secp256k1", + decimals: 8, + is_testnet: false, + name: "Binance Chain", + shortcut: "BNB", + slip44: 714, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.1.5", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { type: "solana", url: ["https://dsol1.trezor.io"] }, + curve: "ed25519", + decimals: 9, + is_testnet: false, + name: "Solana Devnet", + shortcut: "DSOL", + slip44: 501, + support: { + T1B1: false, + T2B1: "2.6.4", + T2T1: "2.6.4", + T3B1: "2.8.1", + T3T1: "2.6.4", + T3W1: "2.6.4" + } + }, + { + blockchain_link: null, + curve: "secp256k1", + decimals: 4, + is_testnet: false, + name: "EOS", + shortcut: "EOS", + slip44: 194, + support: { + T1B1: false, + T2B1: false, + T2T1: "2.1.1", + T3B1: false, + T3T1: false, + T3W1: false + } + }, + { + blockchain_link: null, + curve: "secp256k1", + decimals: 8, + is_testnet: false, + name: "MaidSafeCoin", + shortcut: "MAID", + slip44: 0, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.10", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: null, + curve: "secp256k1", + decimals: 2, + is_testnet: false, + name: "Omni", + shortcut: "OMNI", + slip44: 0, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.10", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "solana", + url: [ + "https://sol1.trezor.io", + "https://sol2.trezor.io", + "https://sol3.trezor.io", + "https://sol4.trezor.io" + ] + }, + curve: "ed25519", + decimals: 9, + is_testnet: false, + name: "Solana", + shortcut: "SOL", + slip44: 501, + support: { + T1B1: false, + T2B1: "2.6.4", + T2T1: "2.6.4", + T3B1: "2.8.1", + T3T1: "2.6.4", + T3W1: "2.6.4" + } + }, + { + blockchain_link: { type: "blockfrost", url: ["wss://tada1.trezor.io"] }, + curve: "ed25519", + decimals: 6, + is_testnet: false, + name: "Cardano Preview Testnet", + shortcut: "tADA", + slip44: 1815, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { type: "ripple", url: ["wss://txrp1.trezor.io"] }, + curve: "secp256k1", + decimals: 6, + is_testnet: false, + name: "Ripple Testnet", + shortcut: "tXRP", + slip44: 1, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: null, + curve: "secp256k1", + decimals: 2, + is_testnet: false, + name: "Tether", + shortcut: "USDT", + slip44: 0, + support: { + T1B1: "1.7.2", + T2B1: "2.6.1", + T2T1: "2.0.10", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "stellar", + url: ["https://horizon.stellar.org"] + }, + curve: "ed25519", + decimals: 7, + is_testnet: false, + name: "Stellar", + shortcut: "XLM", + slip44: 148, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "stellar", + url: ["https://horizon-testnet.stellar.org"] + }, + curve: "ed25519", + decimals: 7, + is_testnet: false, + name: "Stellar Testnet", + shortcut: "tXLM", + slip44: 148, + support: { + T1B1: "1.7.1", + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: null, + curve: "ed25519", + decimals: 12, + is_testnet: false, + name: "Monero", + shortcut: "XMR", + slip44: 128, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: { + type: "ripple", + url: [ + "wss://xrp1.trezor.io", + "wss://xrp2.trezor.io", + "wss://xrplcluster.com", + "wss://xrpl.ws", + "wss://s2.ripple.com" + ] + }, + curve: "secp256k1", + decimals: 6, + is_testnet: false, + name: "Ripple", + shortcut: "XRP", + slip44: 144, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + }, + { + blockchain_link: null, + curve: "ed25519", + decimals: 6, + is_testnet: false, + name: "Tezos", + shortcut: "XTZ", + slip44: 1729, + support: { + T1B1: false, + T2B1: "2.6.1", + T2T1: "2.0.8", + T3B1: "2.8.1", + T3T1: "2.6.1", + T3W1: "2.6.1" + } + } + ], + nem: [ + { + blockchain_link: null, + divisibility: 6, + is_testnet: false, + mosaic: "xem", + name: "NEM", + namespace: "nem", + shortcut: "XEM", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "XEM" + }, + { + blockchain_link: null, + divisibility: 6, + fee: 10, + is_testnet: false, + levy: "MosaicLevy_Percentile", + levy_mosaic: "coin", + levy_namespace: "dim", + mosaic: "coin", + name: "DIMCOIN", + namespace: "dim", + networks: [104], + shortcut: "DIM", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "DIM" + }, + { + blockchain_link: null, + divisibility: 6, + is_testnet: false, + mosaic: "token", + name: "DIM TOKEN", + namespace: "dim", + networks: [104], + shortcut: "DIMTOK", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "DIMTOK" + }, + { + blockchain_link: null, + divisibility: 0, + is_testnet: false, + mosaic: "breeze-token", + name: "Breeze Token", + namespace: "breeze", + networks: [104], + shortcut: "BREEZE", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "BREEZE" + }, + { + blockchain_link: null, + divisibility: 0, + is_testnet: false, + mosaic: "heart", + name: "PacNEM Game Credits", + namespace: "pacnem", + networks: [104], + shortcut: "PAC:HRT", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "PAC:HRT" + }, + { + blockchain_link: null, + divisibility: 6, + fee: 100, + is_testnet: false, + levy: "MosaicLevy_Percentile", + levy_mosaic: "xem", + levy_namespace: "nem", + mosaic: "cheese", + name: "PacNEM Score Tokens", + namespace: "pacnem", + networks: [104], + shortcut: "PAC:CHS", + support: { + T1B1: "1.6.2", + T2B1: false, + T2T1: "2.0.7", + T3B1: false, + T3T1: false, + T3W1: false + }, + ticker: "PAC:CHS" + } + ] + }; + } +}); + +// node_modules/@trezor/protobuf/messages.json +var require_messages4 = __commonJS({ + "node_modules/@trezor/protobuf/messages.json"(exports2, module2) { + module2.exports = { + nested: { + InputScriptType: { + values: { + SPENDADDRESS: 0, + SPENDMULTISIG: 1, + EXTERNAL: 2, + SPENDWITNESS: 3, + SPENDP2SHWITNESS: 4, + SPENDTAPROOT: 5 + } + }, + OutputScriptType: { + values: { + PAYTOADDRESS: 0, + PAYTOSCRIPTHASH: 1, + PAYTOMULTISIG: 2, + PAYTOOPRETURN: 3, + PAYTOWITNESS: 4, + PAYTOP2SHWITNESS: 5, + PAYTOTAPROOT: 6 + } + }, + DecredStakingSpendType: { + values: { + SSGen: 0, + SSRTX: 1 + } + }, + AmountUnit: { + values: { + BITCOIN: 0, + MILLIBITCOIN: 1, + MICROBITCOIN: 2, + SATOSHI: 3 + } + }, + MultisigPubkeysOrder: { + values: { + PRESERVED: 0, + LEXICOGRAPHIC: 1 + } + }, + MultisigRedeemScriptType: { + fields: { + pubkeys: { + rule: "repeated", + type: "HDNodePathType", + id: 1 + }, + signatures: { + rule: "repeated", + type: "bytes", + id: 2 + }, + m: { + rule: "required", + type: "uint32", + id: 3 + }, + nodes: { + rule: "repeated", + type: "HDNodeType", + id: 4 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 5, + options: { + packed: false + } + }, + pubkeys_order: { + type: "MultisigPubkeysOrder", + id: 6, + options: { + default: "PRESERVED" + } + } + }, + nested: { + HDNodePathType: { + fields: { + node: { + rule: "required", + type: "HDNodeType", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + } + } + } + } + }, + GetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + ecdsa_curve_name: { + type: "string", + id: 2 + }, + show_display: { + type: "bool", + id: 3 + }, + coin_name: { + type: "string", + id: 4, + options: { + default: "Bitcoin" + } + }, + script_type: { + type: "InputScriptType", + id: 5, + options: { + default: "SPENDADDRESS" + } + }, + ignore_xpub_magic: { + type: "bool", + id: 6 + } + } + }, + PublicKey: { + fields: { + node: { + rule: "required", + type: "HDNodeType", + id: 1 + }, + xpub: { + rule: "required", + type: "string", + id: 2 + }, + root_fingerprint: { + type: "uint32", + id: 3 + }, + descriptor: { + type: "string", + id: 4 + } + } + }, + GetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + coin_name: { + type: "string", + id: 2, + options: { + default: "Bitcoin" + } + }, + show_display: { + type: "bool", + id: 3 + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 4 + }, + script_type: { + type: "InputScriptType", + id: 5, + options: { + default: "SPENDADDRESS" + } + }, + ignore_xpub_magic: { + type: "bool", + id: 6 + }, + chunkify: { + type: "bool", + id: 7 + } + } + }, + Address: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + GetOwnershipId: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + coin_name: { + type: "string", + id: 2, + options: { + default: "Bitcoin" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 3 + }, + script_type: { + type: "InputScriptType", + id: 4, + options: { + default: "SPENDADDRESS" + } + } + } + }, + OwnershipId: { + fields: { + ownership_id: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + SignMessage: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + message: { + rule: "required", + type: "bytes", + id: 2 + }, + coin_name: { + type: "string", + id: 3, + options: { + default: "Bitcoin" + } + }, + script_type: { + type: "InputScriptType", + id: 4, + options: { + default: "SPENDADDRESS" + } + }, + no_script_type: { + type: "bool", + id: 5 + }, + chunkify: { + type: "bool", + id: 6 + } + } + }, + MessageSignature: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + VerifyMessage: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + }, + message: { + rule: "required", + type: "bytes", + id: 3 + }, + coin_name: { + type: "string", + id: 4, + options: { + default: "Bitcoin" + } + }, + chunkify: { + type: "bool", + id: 5 + } + } + }, + SignTx: { + fields: { + outputs_count: { + rule: "required", + type: "uint32", + id: 1 + }, + inputs_count: { + rule: "required", + type: "uint32", + id: 2 + }, + coin_name: { + type: "string", + id: 3, + options: { + default: "Bitcoin" + } + }, + version: { + type: "uint32", + id: 4, + options: { + default: 1 + } + }, + lock_time: { + type: "uint32", + id: 5, + options: { + default: 0 + } + }, + expiry: { + type: "uint32", + id: 6 + }, + overwintered: { + type: "bool", + id: 7 + }, + version_group_id: { + type: "uint32", + id: 8 + }, + timestamp: { + type: "uint32", + id: 9 + }, + branch_id: { + type: "uint32", + id: 10 + }, + amount_unit: { + type: "AmountUnit", + id: 11, + options: { + default: "BITCOIN" + } + }, + decred_staking_ticket: { + type: "bool", + id: 12, + options: { + default: false + } + }, + serialize: { + type: "bool", + id: 13, + options: { + default: true + } + }, + coinjoin_request: { + type: "CoinJoinRequest", + id: 14 + }, + chunkify: { + type: "bool", + id: 15 + } + }, + nested: { + CoinJoinRequest: { + fields: { + fee_rate: { + rule: "required", + type: "uint32", + id: 1 + }, + no_fee_threshold: { + rule: "required", + type: "uint64", + id: 2 + }, + min_registrable_amount: { + rule: "required", + type: "uint64", + id: 3 + }, + mask_public_key: { + type: "bytes", + id: 4 + }, + signature: { + type: "bytes", + id: 5 + } + } + } + } + }, + TxRequest: { + fields: { + request_type: { + type: "RequestType", + id: 1 + }, + details: { + type: "TxRequestDetailsType", + id: 2 + }, + serialized: { + type: "TxRequestSerializedType", + id: 3 + } + }, + nested: { + RequestType: { + values: { + TXINPUT: 0, + TXOUTPUT: 1, + TXMETA: 2, + TXFINISHED: 3, + TXEXTRADATA: 4, + TXORIGINPUT: 5, + TXORIGOUTPUT: 6, + TXPAYMENTREQ: 7 + } + }, + TxRequestDetailsType: { + fields: { + request_index: { + type: "uint32", + id: 1 + }, + tx_hash: { + type: "bytes", + id: 2 + }, + extra_data_len: { + type: "uint32", + id: 3 + }, + extra_data_offset: { + type: "uint32", + id: 4 + } + } + }, + TxRequestSerializedType: { + fields: { + signature_index: { + type: "uint32", + id: 1 + }, + signature: { + type: "bytes", + id: 2 + }, + serialized_tx: { + type: "bytes", + id: 3 + } + } + } + } + }, + TxAck: { + fields: { + tx: { + type: "TransactionType", + id: 1 + } + }, + nested: { + TransactionType: { + fields: { + version: { + type: "uint32", + id: 1 + }, + inputs: { + rule: "repeated", + type: "TxInputType", + id: 2 + }, + bin_outputs: { + rule: "repeated", + type: "TxOutputBinType", + id: 3 + }, + lock_time: { + type: "uint32", + id: 4 + }, + outputs: { + rule: "repeated", + type: "TxOutputType", + id: 5 + }, + inputs_cnt: { + type: "uint32", + id: 6 + }, + outputs_cnt: { + type: "uint32", + id: 7 + }, + extra_data: { + type: "bytes", + id: 8 + }, + extra_data_len: { + type: "uint32", + id: 9 + }, + expiry: { + type: "uint32", + id: 10 + }, + overwintered: { + type: "bool", + id: 11 + }, + version_group_id: { + type: "uint32", + id: 12 + }, + timestamp: { + type: "uint32", + id: 13 + }, + branch_id: { + type: "uint32", + id: 14 + } + }, + nested: { + TxInputType: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + prev_hash: { + rule: "required", + type: "bytes", + id: 2 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 3 + }, + script_sig: { + type: "bytes", + id: 4 + }, + sequence: { + type: "uint32", + id: 5, + options: { + default: 4294967295 + } + }, + script_type: { + type: "InputScriptType", + id: 6, + options: { + default: "SPENDADDRESS" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 7 + }, + amount: { + type: "uint64", + id: 8 + }, + decred_tree: { + type: "uint32", + id: 9 + }, + witness: { + type: "bytes", + id: 13 + }, + ownership_proof: { + type: "bytes", + id: 14 + }, + commitment_data: { + type: "bytes", + id: 15 + }, + orig_hash: { + type: "bytes", + id: 16 + }, + orig_index: { + type: "uint32", + id: 17 + }, + decred_staking_spend: { + type: "DecredStakingSpendType", + id: 18 + }, + script_pubkey: { + type: "bytes", + id: 19 + }, + coinjoin_flags: { + type: "uint32", + id: 20, + options: { + default: 0 + } + } + } + }, + TxOutputBinType: { + fields: { + amount: { + rule: "required", + type: "uint64", + id: 1 + }, + script_pubkey: { + rule: "required", + type: "bytes", + id: 2 + }, + decred_script_version: { + type: "uint32", + id: 3 + } + } + }, + TxOutputType: { + fields: { + address: { + type: "string", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + amount: { + rule: "required", + type: "uint64", + id: 3 + }, + script_type: { + type: "OutputScriptType", + id: 4, + options: { + default: "PAYTOADDRESS" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 5 + }, + op_return_data: { + type: "bytes", + id: 6 + }, + orig_hash: { + type: "bytes", + id: 10 + }, + orig_index: { + type: "uint32", + id: 11 + }, + payment_req_index: { + type: "uint32", + id: 12 + } + } + } + } + } + } + }, + TxInput: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + prev_hash: { + rule: "required", + type: "bytes", + id: 2 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 3 + }, + script_sig: { + type: "bytes", + id: 4 + }, + sequence: { + type: "uint32", + id: 5, + options: { + default: 4294967295 + } + }, + script_type: { + type: "InputScriptType", + id: 6, + options: { + default: "SPENDADDRESS" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 7 + }, + amount: { + rule: "required", + type: "uint64", + id: 8 + }, + decred_tree: { + type: "uint32", + id: 9 + }, + witness: { + type: "bytes", + id: 13 + }, + ownership_proof: { + type: "bytes", + id: 14 + }, + commitment_data: { + type: "bytes", + id: 15 + }, + orig_hash: { + type: "bytes", + id: 16 + }, + orig_index: { + type: "uint32", + id: 17 + }, + decred_staking_spend: { + type: "DecredStakingSpendType", + id: 18 + }, + script_pubkey: { + type: "bytes", + id: 19 + }, + coinjoin_flags: { + type: "uint32", + id: 20, + options: { + default: 0 + } + } + } + }, + TxOutput: { + fields: { + address: { + type: "string", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + amount: { + rule: "required", + type: "uint64", + id: 3 + }, + script_type: { + type: "OutputScriptType", + id: 4, + options: { + default: "PAYTOADDRESS" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 5 + }, + op_return_data: { + type: "bytes", + id: 6 + }, + orig_hash: { + type: "bytes", + id: 10 + }, + orig_index: { + type: "uint32", + id: 11 + }, + payment_req_index: { + type: "uint32", + id: 12 + } + } + }, + PrevTx: { + fields: { + version: { + rule: "required", + type: "uint32", + id: 1 + }, + lock_time: { + rule: "required", + type: "uint32", + id: 4 + }, + inputs_count: { + rule: "required", + type: "uint32", + id: 6 + }, + outputs_count: { + rule: "required", + type: "uint32", + id: 7 + }, + extra_data_len: { + type: "uint32", + id: 9, + options: { + default: 0 + } + }, + expiry: { + type: "uint32", + id: 10 + }, + version_group_id: { + type: "uint32", + id: 12 + }, + timestamp: { + type: "uint32", + id: 13 + }, + branch_id: { + type: "uint32", + id: 14 + } + } + }, + PrevInput: { + fields: { + prev_hash: { + rule: "required", + type: "bytes", + id: 2 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 3 + }, + script_sig: { + rule: "required", + type: "bytes", + id: 4 + }, + sequence: { + rule: "required", + type: "uint32", + id: 5 + }, + decred_tree: { + type: "uint32", + id: 9 + } + } + }, + PrevOutput: { + fields: { + amount: { + rule: "required", + type: "uint64", + id: 1 + }, + script_pubkey: { + rule: "required", + type: "bytes", + id: 2 + }, + decred_script_version: { + type: "uint32", + id: 3 + } + } + }, + TxAckInput: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "TxAckInputWrapper", + id: 1 + } + }, + nested: { + TxAckInputWrapper: { + fields: { + input: { + rule: "required", + type: "TxInput", + id: 2 + } + } + } + } + }, + TxAckOutput: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "TxAckOutputWrapper", + id: 1 + } + }, + nested: { + TxAckOutputWrapper: { + fields: { + output: { + rule: "required", + type: "TxOutput", + id: 5 + } + } + } + } + }, + TxAckPrevMeta: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "PrevTx", + id: 1 + } + } + }, + TxAckPrevInput: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "TxAckPrevInputWrapper", + id: 1 + } + }, + nested: { + TxAckPrevInputWrapper: { + fields: { + input: { + rule: "required", + type: "PrevInput", + id: 2 + } + } + } + } + }, + TxAckPrevOutput: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "TxAckPrevOutputWrapper", + id: 1 + } + }, + nested: { + TxAckPrevOutputWrapper: { + fields: { + output: { + rule: "required", + type: "PrevOutput", + id: 3 + } + } + } + } + }, + TxAckPrevExtraData: { + options: { + "(wire_type)": 22 + }, + fields: { + tx: { + rule: "required", + type: "TxAckPrevExtraDataWrapper", + id: 1 + } + }, + nested: { + TxAckPrevExtraDataWrapper: { + fields: { + extra_data_chunk: { + rule: "required", + type: "bytes", + id: 8 + } + } + } + } + }, + GetOwnershipProof: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + coin_name: { + type: "string", + id: 2, + options: { + default: "Bitcoin" + } + }, + script_type: { + type: "InputScriptType", + id: 3, + options: { + default: "SPENDWITNESS" + } + }, + multisig: { + type: "MultisigRedeemScriptType", + id: 4 + }, + user_confirmation: { + type: "bool", + id: 5, + options: { + default: false + } + }, + ownership_ids: { + rule: "repeated", + type: "bytes", + id: 6 + }, + commitment_data: { + type: "bytes", + id: 7, + options: { + default: "" + } + } + } + }, + OwnershipProof: { + fields: { + ownership_proof: { + rule: "required", + type: "bytes", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + AuthorizeCoinJoin: { + fields: { + coordinator: { + rule: "required", + type: "string", + id: 1 + }, + max_rounds: { + rule: "required", + type: "uint64", + id: 2 + }, + max_coordinator_fee_rate: { + rule: "required", + type: "uint32", + id: 3 + }, + max_fee_per_kvbyte: { + rule: "required", + type: "uint32", + id: 4 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 5, + options: { + packed: false + } + }, + coin_name: { + type: "string", + id: 6, + options: { + default: "Bitcoin" + } + }, + script_type: { + type: "InputScriptType", + id: 7, + options: { + default: "SPENDADDRESS" + } + }, + amount_unit: { + type: "AmountUnit", + id: 8, + options: { + default: "BITCOIN" + } + } + } + }, + BleUnpair: { + fields: { + all: { + type: "bool", + id: 1 + }, + addr: { + type: "bytes", + id: 2 + } + } + }, + FirmwareErase: { + fields: { + length: { + type: "uint32", + id: 1 + } + } + }, + FirmwareRequest: { + fields: { + offset: { + rule: "required", + type: "uint32", + id: 1 + }, + length: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + FirmwareUpload: { + fields: { + payload: { + rule: "required", + type: "bytes", + id: 1 + }, + hash: { + type: "bytes", + id: 2 + } + } + }, + ProdTestT1: { + fields: { + payload: { + type: "bytes", + id: 1 + } + } + }, + CardanoDerivationType: { + values: { + LEDGER: 0, + ICARUS: 1, + ICARUS_TREZOR: 2 + } + }, + CardanoAddressType: { + values: { + BASE: 0, + BASE_SCRIPT_KEY: 1, + BASE_KEY_SCRIPT: 2, + BASE_SCRIPT_SCRIPT: 3, + POINTER: 4, + POINTER_SCRIPT: 5, + ENTERPRISE: 6, + ENTERPRISE_SCRIPT: 7, + BYRON: 8, + REWARD: 14, + REWARD_SCRIPT: 15 + } + }, + CardanoNativeScriptType: { + values: { + PUB_KEY: 0, + ALL: 1, + ANY: 2, + N_OF_K: 3, + INVALID_BEFORE: 4, + INVALID_HEREAFTER: 5 + } + }, + CardanoNativeScriptHashDisplayFormat: { + values: { + HIDE: 0, + BECH32: 1, + POLICY_ID: 2 + } + }, + CardanoTxOutputSerializationFormat: { + values: { + ARRAY_LEGACY: 0, + MAP_BABBAGE: 1 + } + }, + CardanoCertificateType: { + values: { + STAKE_REGISTRATION: 0, + STAKE_DEREGISTRATION: 1, + STAKE_DELEGATION: 2, + STAKE_POOL_REGISTRATION: 3, + STAKE_REGISTRATION_CONWAY: 7, + STAKE_DEREGISTRATION_CONWAY: 8, + VOTE_DELEGATION: 9 + } + }, + CardanoDRepType: { + values: { + KEY_HASH: 0, + SCRIPT_HASH: 1, + ABSTAIN: 2, + NO_CONFIDENCE: 3 + } + }, + CardanoPoolRelayType: { + values: { + SINGLE_HOST_IP: 0, + SINGLE_HOST_NAME: 1, + MULTIPLE_HOST_NAME: 2 + } + }, + CardanoTxAuxiliaryDataSupplementType: { + values: { + NONE: 0, + CVOTE_REGISTRATION_SIGNATURE: 1 + } + }, + CardanoCVoteRegistrationFormat: { + values: { + CIP15: 0, + CIP36: 1 + } + }, + CardanoTxSigningMode: { + values: { + ORDINARY_TRANSACTION: 0, + POOL_REGISTRATION_AS_OWNER: 1, + MULTISIG_TRANSACTION: 2, + PLUTUS_TRANSACTION: 3 + } + }, + CardanoTxWitnessType: { + values: { + BYRON_WITNESS: 0, + SHELLEY_WITNESS: 1 + } + }, + CardanoBlockchainPointerType: { + fields: { + block_index: { + rule: "required", + type: "uint32", + id: 1 + }, + tx_index: { + rule: "required", + type: "uint32", + id: 2 + }, + certificate_index: { + rule: "required", + type: "uint32", + id: 3 + } + } + }, + CardanoNativeScript: { + fields: { + type: { + rule: "required", + type: "CardanoNativeScriptType", + id: 1 + }, + scripts: { + rule: "repeated", + type: "CardanoNativeScript", + id: 2 + }, + key_hash: { + type: "bytes", + id: 3 + }, + key_path: { + rule: "repeated", + type: "uint32", + id: 4, + options: { + packed: false + } + }, + required_signatures_count: { + type: "uint32", + id: 5 + }, + invalid_before: { + type: "uint64", + id: 6 + }, + invalid_hereafter: { + type: "uint64", + id: 7 + } + } + }, + CardanoGetNativeScriptHash: { + fields: { + script: { + rule: "required", + type: "CardanoNativeScript", + id: 1 + }, + display_format: { + rule: "required", + type: "CardanoNativeScriptHashDisplayFormat", + id: 2 + }, + derivation_type: { + rule: "required", + type: "CardanoDerivationType", + id: 3 + } + } + }, + CardanoNativeScriptHash: { + fields: { + script_hash: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + CardanoAddressParametersType: { + fields: { + address_type: { + rule: "required", + type: "CardanoAddressType", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + address_n_staking: { + rule: "repeated", + type: "uint32", + id: 3, + options: { + packed: false + } + }, + staking_key_hash: { + type: "bytes", + id: 4 + }, + certificate_pointer: { + type: "CardanoBlockchainPointerType", + id: 5 + }, + script_payment_hash: { + type: "bytes", + id: 6 + }, + script_staking_hash: { + type: "bytes", + id: 7 + } + } + }, + CardanoGetAddress: { + fields: { + show_display: { + type: "bool", + id: 2, + options: { + default: false + } + }, + protocol_magic: { + rule: "required", + type: "uint32", + id: 3 + }, + network_id: { + rule: "required", + type: "uint32", + id: 4 + }, + address_parameters: { + rule: "required", + type: "CardanoAddressParametersType", + id: 5 + }, + derivation_type: { + rule: "required", + type: "CardanoDerivationType", + id: 6 + }, + chunkify: { + type: "bool", + id: 7 + } + } + }, + CardanoAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + CardanoGetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + derivation_type: { + rule: "required", + type: "CardanoDerivationType", + id: 3 + } + } + }, + CardanoPublicKey: { + fields: { + xpub: { + rule: "required", + type: "string", + id: 1 + }, + node: { + rule: "required", + type: "HDNodeType", + id: 2 + } + } + }, + CardanoSignTxInit: { + fields: { + signing_mode: { + rule: "required", + type: "CardanoTxSigningMode", + id: 1 + }, + protocol_magic: { + rule: "required", + type: "uint32", + id: 2 + }, + network_id: { + rule: "required", + type: "uint32", + id: 3 + }, + inputs_count: { + rule: "required", + type: "uint32", + id: 4 + }, + outputs_count: { + rule: "required", + type: "uint32", + id: 5 + }, + fee: { + rule: "required", + type: "uint64", + id: 6 + }, + ttl: { + type: "uint64", + id: 7 + }, + certificates_count: { + rule: "required", + type: "uint32", + id: 8 + }, + withdrawals_count: { + rule: "required", + type: "uint32", + id: 9 + }, + has_auxiliary_data: { + rule: "required", + type: "bool", + id: 10 + }, + validity_interval_start: { + type: "uint64", + id: 11 + }, + witness_requests_count: { + rule: "required", + type: "uint32", + id: 12 + }, + minting_asset_groups_count: { + rule: "required", + type: "uint32", + id: 13 + }, + derivation_type: { + rule: "required", + type: "CardanoDerivationType", + id: 14 + }, + include_network_id: { + type: "bool", + id: 15, + options: { + default: false + } + }, + script_data_hash: { + type: "bytes", + id: 16 + }, + collateral_inputs_count: { + rule: "required", + type: "uint32", + id: 17 + }, + required_signers_count: { + rule: "required", + type: "uint32", + id: 18 + }, + has_collateral_return: { + type: "bool", + id: 19, + options: { + default: false + } + }, + total_collateral: { + type: "uint64", + id: 20 + }, + reference_inputs_count: { + type: "uint32", + id: 21, + options: { + default: 0 + } + }, + chunkify: { + type: "bool", + id: 22 + }, + tag_cbor_sets: { + type: "bool", + id: 23, + options: { + default: false + } + }, + payment_req: { + type: "PaymentRequest", + id: 24 + } + } + }, + CardanoTxInput: { + fields: { + prev_hash: { + rule: "required", + type: "bytes", + id: 1 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoTxOutput: { + fields: { + address: { + type: "string", + id: 1 + }, + address_parameters: { + type: "CardanoAddressParametersType", + id: 2 + }, + amount: { + rule: "required", + type: "uint64", + id: 3 + }, + asset_groups_count: { + rule: "required", + type: "uint32", + id: 4 + }, + datum_hash: { + type: "bytes", + id: 5 + }, + format: { + type: "CardanoTxOutputSerializationFormat", + id: 6, + options: { + default: "ARRAY_LEGACY" + } + }, + inline_datum_size: { + type: "uint32", + id: 7, + options: { + default: 0 + } + }, + reference_script_size: { + type: "uint32", + id: 8, + options: { + default: 0 + } + } + } + }, + CardanoAssetGroup: { + fields: { + policy_id: { + rule: "required", + type: "bytes", + id: 1 + }, + tokens_count: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoToken: { + fields: { + asset_name_bytes: { + rule: "required", + type: "bytes", + id: 1 + }, + amount: { + type: "uint64", + id: 2 + }, + mint_amount: { + type: "sint64", + id: 3 + } + } + }, + CardanoTxInlineDatumChunk: { + fields: { + data: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + CardanoTxReferenceScriptChunk: { + fields: { + data: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + CardanoPoolOwner: { + fields: { + staking_key_path: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + staking_key_hash: { + type: "bytes", + id: 2 + } + } + }, + CardanoPoolRelayParameters: { + fields: { + type: { + rule: "required", + type: "CardanoPoolRelayType", + id: 1 + }, + ipv4_address: { + type: "bytes", + id: 2 + }, + ipv6_address: { + type: "bytes", + id: 3 + }, + host_name: { + type: "string", + id: 4 + }, + port: { + type: "uint32", + id: 5 + } + } + }, + CardanoPoolMetadataType: { + fields: { + url: { + rule: "required", + type: "string", + id: 1 + }, + hash: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + CardanoPoolParametersType: { + fields: { + pool_id: { + rule: "required", + type: "bytes", + id: 1 + }, + vrf_key_hash: { + rule: "required", + type: "bytes", + id: 2 + }, + pledge: { + rule: "required", + type: "uint64", + id: 3 + }, + cost: { + rule: "required", + type: "uint64", + id: 4 + }, + margin_numerator: { + rule: "required", + type: "uint64", + id: 5 + }, + margin_denominator: { + rule: "required", + type: "uint64", + id: 6 + }, + reward_account: { + rule: "required", + type: "string", + id: 7 + }, + metadata: { + type: "CardanoPoolMetadataType", + id: 10 + }, + owners_count: { + rule: "required", + type: "uint32", + id: 11 + }, + relays_count: { + rule: "required", + type: "uint32", + id: 12 + } + } + }, + CardanoDRep: { + fields: { + type: { + rule: "required", + type: "CardanoDRepType", + id: 1 + }, + key_hash: { + type: "bytes", + id: 2 + }, + script_hash: { + type: "bytes", + id: 3 + } + } + }, + CardanoTxCertificate: { + fields: { + type: { + rule: "required", + type: "CardanoCertificateType", + id: 1 + }, + path: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + pool: { + type: "bytes", + id: 3 + }, + pool_parameters: { + type: "CardanoPoolParametersType", + id: 4 + }, + script_hash: { + type: "bytes", + id: 5 + }, + key_hash: { + type: "bytes", + id: 6 + }, + deposit: { + type: "uint64", + id: 7 + }, + drep: { + type: "CardanoDRep", + id: 8 + } + } + }, + CardanoTxWithdrawal: { + fields: { + path: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + amount: { + rule: "required", + type: "uint64", + id: 2 + }, + script_hash: { + type: "bytes", + id: 3 + }, + key_hash: { + type: "bytes", + id: 4 + } + } + }, + CardanoCVoteRegistrationDelegation: { + fields: { + vote_public_key: { + rule: "required", + type: "bytes", + id: 1 + }, + weight: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoCVoteRegistrationParametersType: { + fields: { + vote_public_key: { + type: "bytes", + id: 1 + }, + staking_path: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + payment_address_parameters: { + type: "CardanoAddressParametersType", + id: 3 + }, + nonce: { + rule: "required", + type: "uint64", + id: 4 + }, + format: { + type: "CardanoCVoteRegistrationFormat", + id: 5, + options: { + default: "CIP15" + } + }, + delegations: { + rule: "repeated", + type: "CardanoCVoteRegistrationDelegation", + id: 6 + }, + voting_purpose: { + type: "uint64", + id: 7 + }, + payment_address: { + type: "string", + id: 8 + } + } + }, + CardanoTxAuxiliaryData: { + fields: { + cvote_registration_parameters: { + type: "CardanoCVoteRegistrationParametersType", + id: 1 + }, + hash: { + type: "bytes", + id: 2 + } + } + }, + CardanoTxMint: { + fields: { + asset_groups_count: { + rule: "required", + type: "uint32", + id: 1 + } + } + }, + CardanoTxCollateralInput: { + fields: { + prev_hash: { + rule: "required", + type: "bytes", + id: 1 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoTxRequiredSigner: { + fields: { + key_hash: { + type: "bytes", + id: 1 + }, + key_path: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + } + } + }, + CardanoTxReferenceInput: { + fields: { + prev_hash: { + rule: "required", + type: "bytes", + id: 1 + }, + prev_index: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoTxItemAck: { + fields: {} + }, + CardanoTxAuxiliaryDataSupplement: { + fields: { + type: { + rule: "required", + type: "CardanoTxAuxiliaryDataSupplementType", + id: 1 + }, + auxiliary_data_hash: { + type: "bytes", + id: 2 + }, + cvote_registration_signature: { + type: "bytes", + id: 3 + } + } + }, + CardanoTxWitnessRequest: { + fields: { + path: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + } + } + }, + CardanoTxWitnessResponse: { + fields: { + type: { + rule: "required", + type: "CardanoTxWitnessType", + id: 1 + }, + pub_key: { + rule: "required", + type: "bytes", + id: 2 + }, + signature: { + rule: "required", + type: "bytes", + id: 3 + }, + chain_code: { + type: "bytes", + id: 4 + } + } + }, + CardanoTxHostAck: { + fields: {} + }, + CardanoTxBodyHash: { + fields: { + tx_hash: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + CardanoSignTxFinished: { + fields: {} + }, + CardanoSignMessageInit: { + fields: { + protocol_magic: { + type: "uint32", + id: 1 + }, + network_id: { + type: "uint32", + id: 2 + }, + signing_path: { + rule: "repeated", + type: "uint32", + id: 3, + options: { + packed: false + } + }, + payload_size: { + rule: "required", + type: "uint32", + id: 4 + }, + prefer_hex_display: { + rule: "required", + type: "bool", + id: 5 + }, + address_parameters: { + type: "CardanoAddressParametersType", + id: 6 + }, + derivation_type: { + rule: "required", + type: "CardanoDerivationType", + id: 7 + } + } + }, + CardanoMessageDataRequest: { + fields: { + length: { + rule: "required", + type: "uint32", + id: 1 + }, + offset: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + CardanoMessageDataResponse: { + fields: { + data: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + CardanoMessageSignature: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 1 + }, + address: { + rule: "required", + type: "bytes", + id: 2 + }, + pub_key: { + rule: "required", + type: "bytes", + id: 3 + } + } + }, + Success: { + fields: { + message: { + type: "string", + id: 1, + options: { + default: "" + } + } + } + }, + Failure: { + fields: { + code: { + type: "FailureType", + id: 1 + }, + message: { + type: "string", + id: 2 + } + }, + nested: { + FailureType: { + values: { + Failure_UnexpectedMessage: 1, + Failure_ButtonExpected: 2, + Failure_DataError: 3, + Failure_ActionCancelled: 4, + Failure_PinExpected: 5, + Failure_PinCancelled: 6, + Failure_PinInvalid: 7, + Failure_InvalidSignature: 8, + Failure_ProcessError: 9, + Failure_NotEnoughFunds: 10, + Failure_NotInitialized: 11, + Failure_PinMismatch: 12, + Failure_WipeCodeMismatch: 13, + Failure_InvalidSession: 14, + Failure_Busy: 15, + Failure_ThpUnallocatedSession: 16, + Failure_InvalidProtocol: 17, + Failure_BufferError: 18, + Failure_FirmwareError: 99 + } + } + } + }, + ButtonRequest: { + fields: { + code: { + type: "ButtonRequestType", + id: 1 + }, + pages: { + type: "uint32", + id: 2 + }, + name: { + type: "string", + id: 4 + } + }, + nested: { + ButtonRequestType: { + values: { + ButtonRequest_Other: 1, + ButtonRequest_FeeOverThreshold: 2, + ButtonRequest_ConfirmOutput: 3, + ButtonRequest_ResetDevice: 4, + ButtonRequest_ConfirmWord: 5, + ButtonRequest_WipeDevice: 6, + ButtonRequest_ProtectCall: 7, + ButtonRequest_SignTx: 8, + ButtonRequest_FirmwareCheck: 9, + ButtonRequest_Address: 10, + ButtonRequest_PublicKey: 11, + ButtonRequest_MnemonicWordCount: 12, + ButtonRequest_MnemonicInput: 13, + _Deprecated_ButtonRequest_PassphraseType: 14, + ButtonRequest_UnknownDerivationPath: 15, + ButtonRequest_RecoveryHomepage: 16, + ButtonRequest_Success: 17, + ButtonRequest_Warning: 18, + ButtonRequest_PassphraseEntry: 19, + ButtonRequest_PinEntry: 20 + } + } + } + }, + ButtonAck: { + fields: {} + }, + PinMatrixRequest: { + fields: { + type: { + type: "PinMatrixRequestType", + id: 1 + } + }, + nested: { + PinMatrixRequestType: { + values: { + PinMatrixRequestType_Current: 1, + PinMatrixRequestType_NewFirst: 2, + PinMatrixRequestType_NewSecond: 3, + PinMatrixRequestType_WipeCodeFirst: 4, + PinMatrixRequestType_WipeCodeSecond: 5 + } + } + } + }, + PinMatrixAck: { + fields: { + pin: { + rule: "required", + type: "string", + id: 1 + } + } + }, + PassphraseRequest: { + fields: { + _on_device: { + type: "bool", + id: 1 + } + } + }, + PassphraseAck: { + fields: { + passphrase: { + type: "string", + id: 1 + }, + _state: { + type: "bytes", + id: 2 + }, + on_device: { + type: "bool", + id: 3 + } + } + }, + Deprecated_PassphraseStateRequest: { + fields: { + state: { + type: "bytes", + id: 1 + } + } + }, + Deprecated_PassphraseStateAck: { + fields: {} + }, + HDNodeType: { + fields: { + depth: { + rule: "required", + type: "uint32", + id: 1 + }, + fingerprint: { + rule: "required", + type: "uint32", + id: 2 + }, + child_num: { + rule: "required", + type: "uint32", + id: 3 + }, + chain_code: { + rule: "required", + type: "bytes", + id: 4 + }, + private_key: { + type: "bytes", + id: 5 + }, + public_key: { + rule: "required", + type: "bytes", + id: 6 + } + } + }, + PaymentRequest: { + fields: { + nonce: { + type: "bytes", + id: 1 + }, + recipient_name: { + rule: "required", + type: "string", + id: 2 + }, + memos: { + rule: "repeated", + type: "PaymentRequestMemo", + id: 3 + }, + amount: { + type: "bytes", + id: 6 + }, + signature: { + rule: "required", + type: "bytes", + id: 5 + } + }, + nested: { + PaymentRequestMemo: { + fields: { + text_memo: { + type: "TextMemo", + id: 1 + }, + refund_memo: { + type: "RefundMemo", + id: 2 + }, + coin_purchase_memo: { + type: "CoinPurchaseMemo", + id: 3 + }, + text_details_memo: { + type: "TextDetailsMemo", + id: 4 + } + } + }, + TextMemo: { + fields: { + text: { + rule: "required", + type: "string", + id: 1 + } + } + }, + TextDetailsMemo: { + fields: { + title: { + rule: "required", + type: "string", + id: 1 + }, + text: { + rule: "required", + type: "string", + id: 2 + } + } + }, + RefundMemo: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + mac: { + rule: "required", + type: "bytes", + id: 3 + } + } + }, + CoinPurchaseMemo: { + fields: { + coin_type: { + rule: "required", + type: "uint32", + id: 1 + }, + amount: { + rule: "required", + type: "string", + id: 2 + }, + address: { + rule: "required", + type: "string", + id: 3 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 4, + options: { + packed: false + } + }, + mac: { + rule: "required", + type: "bytes", + id: 5 + } + } + } + } + }, + CipherKeyValue: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + key: { + rule: "required", + type: "string", + id: 2 + }, + value: { + rule: "required", + type: "bytes", + id: 3 + }, + encrypt: { + type: "bool", + id: 4 + }, + ask_on_encrypt: { + type: "bool", + id: 5 + }, + ask_on_decrypt: { + type: "bool", + id: 6 + }, + iv: { + type: "bytes", + id: 7 + } + } + }, + CipheredKeyValue: { + fields: { + value: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + IdentityType: { + fields: { + proto: { + type: "string", + id: 1 + }, + user: { + type: "string", + id: 2 + }, + host: { + type: "string", + id: 3 + }, + port: { + type: "string", + id: 4 + }, + path: { + type: "string", + id: 5 + }, + index: { + type: "uint32", + id: 6, + options: { + default: 0 + } + } + } + }, + SignIdentity: { + fields: { + identity: { + rule: "required", + type: "IdentityType", + id: 1 + }, + challenge_hidden: { + type: "bytes", + id: 2, + options: { + default: "" + } + }, + challenge_visual: { + type: "string", + id: 3, + options: { + default: "" + } + }, + ecdsa_curve_name: { + type: "string", + id: 4 + } + } + }, + SignedIdentity: { + fields: { + address: { + type: "string", + id: 1 + }, + public_key: { + rule: "required", + type: "bytes", + id: 2 + }, + signature: { + rule: "required", + type: "bytes", + id: 3 + } + } + }, + GetECDHSessionKey: { + fields: { + identity: { + rule: "required", + type: "IdentityType", + id: 1 + }, + peer_public_key: { + rule: "required", + type: "bytes", + id: 2 + }, + ecdsa_curve_name: { + type: "string", + id: 3 + } + } + }, + ECDHSessionKey: { + fields: { + session_key: { + rule: "required", + type: "bytes", + id: 1 + }, + public_key: { + type: "bytes", + id: 2 + } + } + }, + PaymentNotification: { + fields: { + payment_req: { + type: "PaymentRequest", + id: 1 + } + } + }, + DebugLinkDecision: { + fields: { + button: { + type: "DebugButton", + id: 1 + }, + swipe: { + type: "DebugSwipeDirection", + id: 2 + }, + input: { + type: "string", + id: 3 + }, + x: { + type: "uint32", + id: 4 + }, + y: { + type: "uint32", + id: 5 + }, + wait: { + type: "bool", + id: 6 + }, + hold_ms: { + type: "uint32", + id: 7 + }, + physical_button: { + type: "DebugPhysicalButton", + id: 8 + }, + touch_event_type: { + type: "DebugTouchEventType", + id: 9 + } + }, + nested: { + DebugSwipeDirection: { + values: { + UP: 0, + DOWN: 1, + LEFT: 2, + RIGHT: 3 + } + }, + DebugButton: { + values: { + NO: 0, + YES: 1, + INFO: 2 + } + }, + DebugPhysicalButton: { + values: { + LEFT_BTN: 0, + MIDDLE_BTN: 1, + RIGHT_BTN: 2 + } + }, + DebugTouchEventType: { + values: { + TOUCH_FULL_CLICK: 0, + TOUCH_START: 1, + TOUCH_END: 2 + } + } + } + }, + DebugLinkLayout: { + fields: { + tokens: { + rule: "repeated", + type: "string", + id: 1 + } + } + }, + DebugLinkReseedRandom: { + fields: { + value: { + type: "uint32", + id: 1 + } + } + }, + DebugLinkRecordScreen: { + fields: { + target_directory: { + type: "string", + id: 1 + }, + refresh_index: { + type: "uint32", + id: 2, + options: { + default: 0 + } + } + } + }, + DebugLinkGetState: { + fields: { + wait_word_list: { + type: "bool", + id: 1 + }, + wait_word_pos: { + type: "bool", + id: 2 + }, + wait_layout: { + type: "DebugWaitType", + id: 3, + options: { + default: "IMMEDIATE" + } + }, + return_empty_state: { + type: "bool", + id: 4, + options: { + default: false + } + } + }, + nested: { + DebugWaitType: { + values: { + IMMEDIATE: 0, + NEXT_LAYOUT: 1, + CURRENT_LAYOUT: 2 + } + } + } + }, + DebugLinkState: { + fields: { + layout: { + type: "bytes", + id: 1 + }, + pin: { + type: "string", + id: 2 + }, + matrix: { + type: "string", + id: 3 + }, + mnemonic_secret: { + type: "bytes", + id: 4 + }, + node: { + type: "HDNodeType", + id: 5 + }, + passphrase_protection: { + type: "bool", + id: 6 + }, + reset_word: { + type: "string", + id: 7 + }, + reset_entropy: { + type: "bytes", + id: 8 + }, + recovery_fake_word: { + type: "string", + id: 9 + }, + recovery_word_pos: { + type: "uint32", + id: 10 + }, + reset_word_pos: { + type: "uint32", + id: 11 + }, + mnemonic_type: { + type: "BackupType", + id: 12 + }, + tokens: { + rule: "repeated", + type: "string", + id: 13 + } + } + }, + DebugLinkGetPairingInfo: { + fields: { + channel_id: { + type: "bytes", + id: 1 + }, + handshake_hash: { + type: "bytes", + id: 2 + }, + nfc_secret_host: { + type: "bytes", + id: 3 + } + } + }, + DebugLinkPairingInfo: { + fields: { + channel_id: { + type: "bytes", + id: 1 + }, + handshake_hash: { + type: "bytes", + id: 2 + }, + code_entry_code: { + type: "uint32", + id: 3 + }, + code_qr_code: { + type: "bytes", + id: 4 + }, + nfc_secret_trezor: { + type: "bytes", + id: 5 + } + } + }, + DebugLinkStop: { + fields: {} + }, + DebugLinkLog: { + fields: { + level: { + type: "uint32", + id: 1 + }, + bucket: { + type: "string", + id: 2 + }, + text: { + type: "string", + id: 3 + } + } + }, + DebugLinkMemoryRead: { + fields: { + address: { + type: "uint32", + id: 1 + }, + length: { + type: "uint32", + id: 2 + } + } + }, + DebugLinkMemory: { + fields: { + memory: { + type: "bytes", + id: 1 + } + } + }, + DebugLinkMemoryWrite: { + fields: { + address: { + type: "uint32", + id: 1 + }, + memory: { + type: "bytes", + id: 2 + }, + flash: { + type: "bool", + id: 3 + } + } + }, + DebugLinkFlashErase: { + fields: { + sector: { + type: "uint32", + id: 1 + } + } + }, + DebugLinkEraseSdCard: { + fields: { + format: { + type: "bool", + id: 1 + } + } + }, + DebugLinkWatchLayout: { + fields: { + watch: { + type: "bool", + id: 1 + } + } + }, + DebugLinkResetDebugEvents: { + fields: {} + }, + DebugLinkOptigaSetSecMax: { + fields: {} + }, + DebugLinkGetGcInfo: { + fields: {} + }, + DebugLinkGcInfo: { + fields: { + items: { + rule: "repeated", + type: "DebugLinkGcInfoItem", + id: 1 + } + }, + nested: { + DebugLinkGcInfoItem: { + fields: { + name: { + rule: "required", + type: "string", + id: 1 + }, + value: { + rule: "required", + type: "uint64", + id: 2 + } + } + } + } + }, + DefinitionType: { + values: { + ETHEREUM_NETWORK: 0, + ETHEREUM_TOKEN: 1, + SOLANA_TOKEN: 2 + } + }, + EthereumNetworkInfo: { + fields: { + chain_id: { + rule: "required", + type: "uint64", + id: 1 + }, + symbol: { + rule: "required", + type: "string", + id: 2 + }, + slip44: { + rule: "required", + type: "uint32", + id: 3 + }, + name: { + rule: "required", + type: "string", + id: 4 + } + } + }, + EthereumTokenInfo: { + fields: { + address: { + rule: "required", + type: "bytes", + id: 1 + }, + chain_id: { + rule: "required", + type: "uint64", + id: 2 + }, + symbol: { + rule: "required", + type: "string", + id: 3 + }, + decimals: { + rule: "required", + type: "uint32", + id: 4 + }, + name: { + rule: "required", + type: "string", + id: 5 + } + } + }, + SolanaTokenInfo: { + fields: { + mint: { + rule: "required", + type: "bytes", + id: 1 + }, + symbol: { + rule: "required", + type: "string", + id: 2 + }, + name: { + rule: "required", + type: "string", + id: 3 + } + } + }, + EosGetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + EosPublicKey: { + fields: { + wif_public_key: { + rule: "required", + type: "string", + id: 1 + }, + raw_public_key: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + EosSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + chain_id: { + rule: "required", + type: "bytes", + id: 2 + }, + header: { + rule: "required", + type: "EosTxHeader", + id: 3 + }, + num_actions: { + rule: "required", + type: "uint32", + id: 4 + }, + chunkify: { + type: "bool", + id: 5 + } + }, + nested: { + EosTxHeader: { + fields: { + expiration: { + rule: "required", + type: "uint32", + id: 1 + }, + ref_block_num: { + rule: "required", + type: "uint32", + id: 2 + }, + ref_block_prefix: { + rule: "required", + type: "uint32", + id: 3 + }, + max_net_usage_words: { + rule: "required", + type: "uint32", + id: 4 + }, + max_cpu_usage_ms: { + rule: "required", + type: "uint32", + id: 5 + }, + delay_sec: { + rule: "required", + type: "uint32", + id: 6 + } + } + } + } + }, + EosTxActionRequest: { + fields: { + data_size: { + type: "uint32", + id: 1 + } + } + }, + EosTxActionAck: { + fields: { + common: { + rule: "required", + type: "EosActionCommon", + id: 1 + }, + transfer: { + type: "EosActionTransfer", + id: 2 + }, + delegate: { + type: "EosActionDelegate", + id: 3 + }, + undelegate: { + type: "EosActionUndelegate", + id: 4 + }, + refund: { + type: "EosActionRefund", + id: 5 + }, + buy_ram: { + type: "EosActionBuyRam", + id: 6 + }, + buy_ram_bytes: { + type: "EosActionBuyRamBytes", + id: 7 + }, + sell_ram: { + type: "EosActionSellRam", + id: 8 + }, + vote_producer: { + type: "EosActionVoteProducer", + id: 9 + }, + update_auth: { + type: "EosActionUpdateAuth", + id: 10 + }, + delete_auth: { + type: "EosActionDeleteAuth", + id: 11 + }, + link_auth: { + type: "EosActionLinkAuth", + id: 12 + }, + unlink_auth: { + type: "EosActionUnlinkAuth", + id: 13 + }, + new_account: { + type: "EosActionNewAccount", + id: 14 + }, + unknown: { + type: "EosActionUnknown", + id: 15 + } + }, + nested: { + EosAsset: { + fields: { + amount: { + rule: "required", + type: "sint64", + id: 1 + }, + symbol: { + rule: "required", + type: "uint64", + id: 2 + } + } + }, + EosPermissionLevel: { + fields: { + actor: { + rule: "required", + type: "uint64", + id: 1 + }, + permission: { + rule: "required", + type: "uint64", + id: 2 + } + } + }, + EosAuthorizationKey: { + fields: { + type: { + rule: "required", + type: "uint32", + id: 1 + }, + key: { + type: "bytes", + id: 2 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 3, + options: { + packed: false + } + }, + weight: { + rule: "required", + type: "uint32", + id: 4 + } + } + }, + EosAuthorizationAccount: { + fields: { + account: { + rule: "required", + type: "EosPermissionLevel", + id: 1 + }, + weight: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + EosAuthorizationWait: { + fields: { + wait_sec: { + rule: "required", + type: "uint32", + id: 1 + }, + weight: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + EosAuthorization: { + fields: { + threshold: { + rule: "required", + type: "uint32", + id: 1 + }, + keys: { + rule: "repeated", + type: "EosAuthorizationKey", + id: 2 + }, + accounts: { + rule: "repeated", + type: "EosAuthorizationAccount", + id: 3 + }, + waits: { + rule: "repeated", + type: "EosAuthorizationWait", + id: 4 + } + } + }, + EosActionCommon: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + name: { + rule: "required", + type: "uint64", + id: 2 + }, + authorization: { + rule: "repeated", + type: "EosPermissionLevel", + id: 3 + } + } + }, + EosActionTransfer: { + fields: { + sender: { + rule: "required", + type: "uint64", + id: 1 + }, + receiver: { + rule: "required", + type: "uint64", + id: 2 + }, + quantity: { + rule: "required", + type: "EosAsset", + id: 3 + }, + memo: { + rule: "required", + type: "string", + id: 4 + } + } + }, + EosActionDelegate: { + fields: { + sender: { + rule: "required", + type: "uint64", + id: 1 + }, + receiver: { + rule: "required", + type: "uint64", + id: 2 + }, + net_quantity: { + rule: "required", + type: "EosAsset", + id: 3 + }, + cpu_quantity: { + rule: "required", + type: "EosAsset", + id: 4 + }, + transfer: { + rule: "required", + type: "bool", + id: 5 + } + } + }, + EosActionUndelegate: { + fields: { + sender: { + rule: "required", + type: "uint64", + id: 1 + }, + receiver: { + rule: "required", + type: "uint64", + id: 2 + }, + net_quantity: { + rule: "required", + type: "EosAsset", + id: 3 + }, + cpu_quantity: { + rule: "required", + type: "EosAsset", + id: 4 + } + } + }, + EosActionRefund: { + fields: { + owner: { + rule: "required", + type: "uint64", + id: 1 + } + } + }, + EosActionBuyRam: { + fields: { + payer: { + rule: "required", + type: "uint64", + id: 1 + }, + receiver: { + rule: "required", + type: "uint64", + id: 2 + }, + quantity: { + rule: "required", + type: "EosAsset", + id: 3 + } + } + }, + EosActionBuyRamBytes: { + fields: { + payer: { + rule: "required", + type: "uint64", + id: 1 + }, + receiver: { + rule: "required", + type: "uint64", + id: 2 + }, + bytes: { + rule: "required", + type: "uint32", + id: 3 + } + } + }, + EosActionSellRam: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + bytes: { + rule: "required", + type: "uint64", + id: 2 + } + } + }, + EosActionVoteProducer: { + fields: { + voter: { + rule: "required", + type: "uint64", + id: 1 + }, + proxy: { + rule: "required", + type: "uint64", + id: 2 + }, + producers: { + rule: "repeated", + type: "uint64", + id: 3, + options: { + packed: false + } + } + } + }, + EosActionUpdateAuth: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + permission: { + rule: "required", + type: "uint64", + id: 2 + }, + parent: { + rule: "required", + type: "uint64", + id: 3 + }, + auth: { + rule: "required", + type: "EosAuthorization", + id: 4 + } + } + }, + EosActionDeleteAuth: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + permission: { + rule: "required", + type: "uint64", + id: 2 + } + } + }, + EosActionLinkAuth: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + code: { + rule: "required", + type: "uint64", + id: 2 + }, + type: { + rule: "required", + type: "uint64", + id: 3 + }, + requirement: { + rule: "required", + type: "uint64", + id: 4 + } + } + }, + EosActionUnlinkAuth: { + fields: { + account: { + rule: "required", + type: "uint64", + id: 1 + }, + code: { + rule: "required", + type: "uint64", + id: 2 + }, + type: { + rule: "required", + type: "uint64", + id: 3 + } + } + }, + EosActionNewAccount: { + fields: { + creator: { + rule: "required", + type: "uint64", + id: 1 + }, + name: { + rule: "required", + type: "uint64", + id: 2 + }, + owner: { + rule: "required", + type: "EosAuthorization", + id: 3 + }, + active: { + rule: "required", + type: "EosAuthorization", + id: 4 + } + } + }, + EosActionUnknown: { + fields: { + data_size: { + rule: "required", + type: "uint32", + id: 1 + }, + data_chunk: { + rule: "required", + type: "bytes", + id: 2 + } + } + } + } + }, + EosSignedTx: { + fields: { + signature: { + rule: "required", + type: "string", + id: 1 + } + } + }, + EthereumSignTypedData: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + primary_type: { + rule: "required", + type: "string", + id: 2 + }, + metamask_v4_compat: { + type: "bool", + id: 3, + options: { + default: true + } + }, + definitions: { + type: "EthereumDefinitions", + id: 4 + }, + show_message_hash: { + type: "bytes", + id: 5 + } + } + }, + EthereumTypedDataStructRequest: { + fields: { + name: { + rule: "required", + type: "string", + id: 1 + } + } + }, + EthereumTypedDataStructAck: { + fields: { + members: { + rule: "repeated", + type: "EthereumStructMember", + id: 1 + } + }, + nested: { + EthereumStructMember: { + fields: { + type: { + rule: "required", + type: "EthereumFieldType", + id: 1 + }, + name: { + rule: "required", + type: "string", + id: 2 + } + } + }, + EthereumFieldType: { + fields: { + data_type: { + rule: "required", + type: "EthereumDataType", + id: 1 + }, + size: { + type: "uint32", + id: 2 + }, + entry_type: { + type: "EthereumFieldType", + id: 3 + }, + struct_name: { + type: "string", + id: 4 + } + } + }, + EthereumDataType: { + values: { + UINT: 1, + INT: 2, + BYTES: 3, + STRING: 4, + BOOL: 5, + ADDRESS: 6, + ARRAY: 7, + STRUCT: 8 + } + } + } + }, + EthereumTypedDataValueRequest: { + fields: { + member_path: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + } + } + }, + EthereumTypedDataValueAck: { + fields: { + value: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + EthereumGetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + } + } + }, + EthereumPublicKey: { + fields: { + node: { + rule: "required", + type: "HDNodeType", + id: 1 + }, + xpub: { + rule: "required", + type: "string", + id: 2 + } + } + }, + EthereumGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + encoded_network: { + type: "bytes", + id: 3 + }, + chunkify: { + type: "bool", + id: 4 + } + } + }, + EthereumAddress: { + fields: { + _old_address: { + type: "bytes", + id: 1 + }, + address: { + type: "string", + id: 2 + }, + mac: { + type: "bytes", + id: 3 + } + } + }, + EthereumSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + nonce: { + type: "bytes", + id: 2, + options: { + default: "" + } + }, + gas_price: { + rule: "required", + type: "bytes", + id: 3 + }, + gas_limit: { + rule: "required", + type: "bytes", + id: 4 + }, + to: { + type: "string", + id: 11, + options: { + default: "" + } + }, + value: { + type: "bytes", + id: 6, + options: { + default: "" + } + }, + data_initial_chunk: { + type: "bytes", + id: 7, + options: { + default: "" + } + }, + data_length: { + type: "uint32", + id: 8, + options: { + default: 0 + } + }, + chain_id: { + rule: "required", + type: "uint64", + id: 9 + }, + tx_type: { + type: "uint32", + id: 10 + }, + definitions: { + type: "EthereumDefinitions", + id: 12 + }, + chunkify: { + type: "bool", + id: 13 + }, + payment_req: { + type: "PaymentRequest", + id: 14 + } + } + }, + EthereumSignTxEIP1559: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + nonce: { + rule: "required", + type: "bytes", + id: 2 + }, + max_gas_fee: { + rule: "required", + type: "bytes", + id: 3 + }, + max_priority_fee: { + rule: "required", + type: "bytes", + id: 4 + }, + gas_limit: { + rule: "required", + type: "bytes", + id: 5 + }, + to: { + type: "string", + id: 6, + options: { + default: "" + } + }, + value: { + rule: "required", + type: "bytes", + id: 7 + }, + data_initial_chunk: { + type: "bytes", + id: 8, + options: { + default: "" + } + }, + data_length: { + rule: "required", + type: "uint32", + id: 9 + }, + chain_id: { + rule: "required", + type: "uint64", + id: 10 + }, + access_list: { + rule: "repeated", + type: "EthereumAccessList", + id: 11 + }, + definitions: { + type: "EthereumDefinitions", + id: 12 + }, + chunkify: { + type: "bool", + id: 13 + }, + payment_req: { + type: "PaymentRequest", + id: 14 + } + }, + nested: { + EthereumAccessList: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + storage_keys: { + rule: "repeated", + type: "bytes", + id: 2 + } + } + } + } + }, + EthereumTxRequest: { + fields: { + data_length: { + type: "uint32", + id: 1 + }, + signature_v: { + type: "uint32", + id: 2 + }, + signature_r: { + type: "bytes", + id: 3 + }, + signature_s: { + type: "bytes", + id: 4 + } + } + }, + EthereumTxAck: { + fields: { + data_chunk: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + EthereumSignMessage: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + message: { + rule: "required", + type: "bytes", + id: 2 + }, + encoded_network: { + type: "bytes", + id: 3 + }, + chunkify: { + type: "bool", + id: 4 + } + } + }, + EthereumMessageSignature: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 2 + }, + address: { + rule: "required", + type: "string", + id: 3 + } + } + }, + EthereumVerifyMessage: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 2 + }, + message: { + rule: "required", + type: "bytes", + id: 3 + }, + address: { + rule: "required", + type: "string", + id: 4 + }, + chunkify: { + type: "bool", + id: 5 + } + } + }, + EthereumSignTypedHash: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + domain_separator_hash: { + rule: "required", + type: "bytes", + id: 2 + }, + message_hash: { + type: "bytes", + id: 3 + }, + encoded_network: { + type: "bytes", + id: 4 + } + } + }, + EthereumTypedDataSignature: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 1 + }, + address: { + rule: "required", + type: "string", + id: 2 + } + } + }, + EthereumDefinitions: { + fields: { + encoded_network: { + type: "bytes", + id: 1 + }, + encoded_token: { + type: "bytes", + id: 2 + } + } + }, + EvoluGetNode: { + fields: { + proof_of_delegated_identity: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + EvoluNode: { + fields: { + data: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + EvoluSignRegistrationRequest: { + fields: { + challenge_from_server: { + rule: "required", + type: "bytes", + id: 1 + }, + size_to_acquire: { + rule: "required", + type: "uint32", + id: 2 + }, + proof_of_delegated_identity: { + rule: "required", + type: "bytes", + id: 3 + } + } + }, + EvoluRegistrationRequest: { + fields: { + certificate_chain: { + rule: "repeated", + type: "bytes", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + EvoluGetDelegatedIdentityKey: { + fields: { + thp_credential: { + type: "bytes", + id: 1 + }, + host_static_public_key: { + type: "bytes", + id: 2 + } + } + }, + EvoluDelegatedIdentityKey: { + fields: { + private_key: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + BackupType: { + values: { + Bip39: 0, + Slip39_Basic: 1, + Slip39_Advanced: 2, + Slip39_Single_Extendable: 3, + Slip39_Basic_Extendable: 4, + Slip39_Advanced_Extendable: 5 + } + }, + SafetyCheckLevel: { + values: { + Strict: 0, + PromptAlways: 1, + PromptTemporarily: 2 + } + }, + DisplayRotation: { + values: { + North: 0, + East: 90, + South: 180, + West: 270 + } + }, + HomescreenFormat: { + values: { + Toif: 1, + Jpeg: 2, + ToiG: 3 + } + }, + Initialize: { + fields: { + session_id: { + type: "bytes", + id: 1 + }, + _skip_passphrase: { + type: "bool", + id: 2 + }, + derive_cardano: { + type: "bool", + id: 3 + } + } + }, + GetFeatures: { + fields: {} + }, + Features: { + fields: { + vendor: { + type: "string", + id: 1 + }, + major_version: { + rule: "required", + type: "uint32", + id: 2 + }, + minor_version: { + rule: "required", + type: "uint32", + id: 3 + }, + patch_version: { + rule: "required", + type: "uint32", + id: 4 + }, + bootloader_mode: { + type: "bool", + id: 5 + }, + device_id: { + type: "string", + id: 6 + }, + pin_protection: { + type: "bool", + id: 7 + }, + passphrase_protection: { + type: "bool", + id: 8 + }, + language: { + type: "string", + id: 9 + }, + label: { + type: "string", + id: 10 + }, + initialized: { + type: "bool", + id: 12 + }, + revision: { + type: "bytes", + id: 13 + }, + bootloader_hash: { + type: "bytes", + id: 14 + }, + imported: { + type: "bool", + id: 15 + }, + unlocked: { + type: "bool", + id: 16 + }, + _passphrase_cached: { + type: "bool", + id: 17 + }, + firmware_present: { + type: "bool", + id: 18 + }, + backup_availability: { + type: "BackupAvailability", + id: 19 + }, + flags: { + type: "uint32", + id: 20 + }, + model: { + type: "string", + id: 21 + }, + fw_major: { + type: "uint32", + id: 22 + }, + fw_minor: { + type: "uint32", + id: 23 + }, + fw_patch: { + type: "uint32", + id: 24 + }, + fw_vendor: { + type: "string", + id: 25 + }, + unfinished_backup: { + type: "bool", + id: 27 + }, + no_backup: { + type: "bool", + id: 28 + }, + recovery_status: { + type: "RecoveryStatus", + id: 29 + }, + capabilities: { + rule: "repeated", + type: "Capability", + id: 30, + options: { + packed: false + } + }, + backup_type: { + type: "BackupType", + id: 31 + }, + sd_card_present: { + type: "bool", + id: 32 + }, + sd_protection: { + type: "bool", + id: 33 + }, + wipe_code_protection: { + type: "bool", + id: 34 + }, + session_id: { + type: "bytes", + id: 35 + }, + passphrase_always_on_device: { + type: "bool", + id: 36 + }, + safety_checks: { + type: "SafetyCheckLevel", + id: 37 + }, + auto_lock_delay_ms: { + type: "uint32", + id: 38 + }, + display_rotation: { + type: "DisplayRotation", + id: 39 + }, + experimental_features: { + type: "bool", + id: 40 + }, + busy: { + type: "bool", + id: 41 + }, + homescreen_format: { + type: "HomescreenFormat", + id: 42 + }, + hide_passphrase_from_host: { + type: "bool", + id: 43 + }, + internal_model: { + type: "string", + id: 44 + }, + unit_color: { + type: "uint32", + id: 45 + }, + unit_btconly: { + type: "bool", + id: 46 + }, + homescreen_width: { + type: "uint32", + id: 47 + }, + homescreen_height: { + type: "uint32", + id: 48 + }, + bootloader_locked: { + type: "bool", + id: 49 + }, + language_version_matches: { + type: "bool", + id: 50, + options: { + default: true + } + }, + unit_packaging: { + type: "uint32", + id: 51 + }, + haptic_feedback: { + type: "bool", + id: 52 + }, + recovery_type: { + type: "RecoveryType", + id: 53 + }, + optiga_sec: { + type: "uint32", + id: 54 + }, + soc: { + type: "uint32", + id: 55 + }, + firmware_corrupted: { + type: "bool", + id: 56 + }, + auto_lock_delay_battery_ms: { + type: "uint32", + id: 57 + }, + led: { + type: "bool", + id: 58 + }, + usb_connected: { + type: "bool", + id: 59 + }, + wireless_connected: { + type: "bool", + id: 60 + } + }, + nested: { + BackupAvailability: { + values: { + NotAvailable: 0, + Required: 1, + Available: 2 + } + }, + RecoveryStatus: { + values: { + Nothing: 0, + Recovery: 1, + Backup: 2 + } + }, + Capability: { + values: { + Capability_Bitcoin: 1, + Capability_Bitcoin_like: 2, + Capability_Binance: 3, + Capability_Cardano: 4, + Capability_Crypto: 5, + Capability_EOS: 6, + Capability_Ethereum: 7, + Capability_Lisk: 8, + Capability_Monero: 9, + Capability_NEM: 10, + Capability_Ripple: 11, + Capability_Stellar: 12, + Capability_Tezos: 13, + Capability_U2F: 14, + Capability_Shamir: 15, + Capability_ShamirGroups: 16, + Capability_PassphraseEntry: 17, + Capability_Solana: 18, + Capability_Translations: 19, + Capability_Brightness: 20, + Capability_Haptic: 21, + Capability_BLE: 22, + Capability_NFC: 23 + } + } + } + }, + LockDevice: { + fields: {} + }, + SetBusy: { + fields: { + expiry_ms: { + type: "uint32", + id: 1 + } + } + }, + EndSession: { + fields: {} + }, + ApplySettings: { + fields: { + language: { + type: "string", + id: 1 + }, + label: { + type: "string", + id: 2 + }, + use_passphrase: { + type: "bool", + id: 3 + }, + homescreen: { + type: "bytes", + id: 4 + }, + _passphrase_source: { + type: "uint32", + id: 5 + }, + auto_lock_delay_ms: { + type: "uint32", + id: 6 + }, + display_rotation: { + type: "DisplayRotation", + id: 7 + }, + passphrase_always_on_device: { + type: "bool", + id: 8 + }, + safety_checks: { + type: "SafetyCheckLevel", + id: 9 + }, + experimental_features: { + type: "bool", + id: 10 + }, + hide_passphrase_from_host: { + type: "bool", + id: 11 + }, + haptic_feedback: { + type: "bool", + id: 13 + }, + homescreen_length: { + type: "uint32", + id: 14 + }, + auto_lock_delay_battery_ms: { + type: "uint32", + id: 15 + } + } + }, + ChangeLanguage: { + fields: { + data_length: { + rule: "required", + type: "uint32", + id: 1 + }, + show_display: { + type: "bool", + id: 2 + } + } + }, + DataChunkRequest: { + fields: { + data_length: { + rule: "required", + type: "uint32", + id: 1 + }, + data_offset: { + rule: "required", + type: "uint32", + id: 2 + } + } + }, + DataChunkAck: { + fields: { + data_chunk: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ApplyFlags: { + fields: { + flags: { + rule: "required", + type: "uint32", + id: 1 + } + } + }, + ChangePin: { + fields: { + remove: { + type: "bool", + id: 1 + } + } + }, + ChangeWipeCode: { + fields: { + remove: { + type: "bool", + id: 1 + } + } + }, + SdProtect: { + fields: { + operation: { + rule: "required", + type: "SdProtectOperationType", + id: 1 + } + }, + nested: { + SdProtectOperationType: { + values: { + DISABLE: 0, + ENABLE: 1, + REFRESH: 2 + } + } + } + }, + Ping: { + fields: { + message: { + type: "string", + id: 1, + options: { + default: "" + } + }, + button_protection: { + type: "bool", + id: 2 + } + } + }, + Cancel: { + fields: {} + }, + GetEntropy: { + fields: { + size: { + rule: "required", + type: "uint32", + id: 1 + } + } + }, + Entropy: { + fields: { + entropy: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + GetFirmwareHash: { + fields: { + challenge: { + type: "bytes", + id: 1 + } + } + }, + FirmwareHash: { + fields: { + hash: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + AuthenticateDevice: { + fields: { + challenge: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + AuthenticityProof: { + fields: { + optiga_certificates: { + rule: "repeated", + type: "bytes", + id: 1 + }, + optiga_signature: { + rule: "required", + type: "bytes", + id: 2 + }, + tropic_certificates: { + rule: "repeated", + type: "bytes", + id: 3 + }, + tropic_signature: { + type: "bytes", + id: 4 + } + } + }, + WipeDevice: { + fields: {} + }, + LoadDevice: { + fields: { + mnemonics: { + rule: "repeated", + type: "string", + id: 1 + }, + pin: { + type: "string", + id: 3 + }, + passphrase_protection: { + type: "bool", + id: 4 + }, + language: { + type: "string", + id: 5 + }, + label: { + type: "string", + id: 6 + }, + skip_checksum: { + type: "bool", + id: 7 + }, + u2f_counter: { + type: "uint32", + id: 8 + }, + needs_backup: { + type: "bool", + id: 9 + }, + no_backup: { + type: "bool", + id: 10 + } + } + }, + ResetDevice: { + fields: { + strength: { + type: "uint32", + id: 2, + options: { + default: 256 + } + }, + passphrase_protection: { + type: "bool", + id: 3 + }, + pin_protection: { + type: "bool", + id: 4 + }, + language: { + type: "string", + id: 5 + }, + label: { + type: "string", + id: 6 + }, + u2f_counter: { + type: "uint32", + id: 7 + }, + skip_backup: { + type: "bool", + id: 8 + }, + no_backup: { + type: "bool", + id: 9 + }, + backup_type: { + type: "BackupType", + id: 10, + options: { + default: "Bip39" + } + }, + entropy_check: { + type: "bool", + id: 11 + } + } + }, + BackupDevice: { + fields: { + group_threshold: { + type: "uint32", + id: 1 + }, + groups: { + rule: "repeated", + type: "Slip39Group", + id: 2 + } + }, + nested: { + Slip39Group: { + fields: { + member_threshold: { + rule: "required", + type: "uint32", + id: 1 + }, + member_count: { + rule: "required", + type: "uint32", + id: 2 + } + } + } + } + }, + EntropyRequest: { + fields: { + entropy_commitment: { + type: "bytes", + id: 1 + }, + prev_entropy: { + type: "bytes", + id: 2 + } + } + }, + EntropyAck: { + fields: { + entropy: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + EntropyCheckReady: { + fields: {} + }, + EntropyCheckContinue: { + fields: { + finish: { + type: "bool", + id: 1, + options: { + default: false + } + } + } + }, + RecoveryDevice: { + fields: { + word_count: { + type: "uint32", + id: 1 + }, + passphrase_protection: { + type: "bool", + id: 2 + }, + pin_protection: { + type: "bool", + id: 3 + }, + language: { + type: "string", + id: 4 + }, + label: { + type: "string", + id: 5 + }, + enforce_wordlist: { + type: "bool", + id: 6 + }, + input_method: { + type: "RecoveryDeviceInputMethod", + id: 8 + }, + u2f_counter: { + type: "uint32", + id: 9 + }, + type: { + type: "RecoveryType", + id: 10, + options: { + default: "NormalRecovery" + } + } + }, + nested: { + RecoveryDeviceInputMethod: { + values: { + ScrambledWords: 0, + Matrix: 1 + } + } + } + }, + RecoveryType: { + values: { + NormalRecovery: 0, + DryRun: 1, + UnlockRepeatedBackup: 2 + } + }, + WordRequest: { + fields: { + type: { + rule: "required", + type: "WordRequestType", + id: 1 + } + }, + nested: { + WordRequestType: { + values: { + WordRequestType_Plain: 0, + WordRequestType_Matrix9: 1, + WordRequestType_Matrix6: 2 + } + } + } + }, + WordAck: { + fields: { + word: { + rule: "required", + type: "string", + id: 1 + } + } + }, + SetU2FCounter: { + fields: { + u2f_counter: { + rule: "required", + type: "uint32", + id: 1 + } + } + }, + GetNextU2FCounter: { + fields: {} + }, + NextU2FCounter: { + fields: { + u2f_counter: { + rule: "required", + type: "uint32", + id: 1 + } + } + }, + DoPreauthorized: { + fields: {} + }, + PreauthorizedRequest: { + fields: {} + }, + CancelAuthorization: { + fields: {} + }, + RebootToBootloader: { + fields: { + boot_command: { + type: "BootCommand", + id: 1, + options: { + default: "STOP_AND_WAIT" + } + }, + firmware_header: { + type: "bytes", + id: 2 + }, + language_data_length: { + type: "uint32", + id: 3, + options: { + default: 0 + } + } + }, + nested: { + BootCommand: { + values: { + STOP_AND_WAIT: 0, + INSTALL_UPGRADE: 1 + } + } + } + }, + GetNonce: { + fields: {} + }, + Nonce: { + fields: { + nonce: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + UnlockPath: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + UnlockedPathRequest: { + fields: { + mac: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + ShowDeviceTutorial: { + fields: {} + }, + UnlockBootloader: { + fields: {} + }, + SetBrightness: { + fields: { + value: { + type: "uint32", + id: 1 + } + } + }, + GetSerialNumber: { + fields: {} + }, + SerialNumber: { + fields: { + serial_number: { + rule: "required", + type: "string", + id: 1 + } + } + }, + MoneroNetworkType: { + values: { + MAINNET: 0, + TESTNET: 1, + STAGENET: 2, + FAKECHAIN: 3 + } + }, + MoneroTransactionSourceEntry: { + fields: { + outputs: { + rule: "repeated", + type: "MoneroOutputEntry", + id: 1 + }, + real_output: { + type: "uint64", + id: 2 + }, + real_out_tx_key: { + type: "bytes", + id: 3 + }, + real_out_additional_tx_keys: { + rule: "repeated", + type: "bytes", + id: 4 + }, + real_output_in_tx_index: { + type: "uint64", + id: 5 + }, + amount: { + type: "uint64", + id: 6 + }, + rct: { + type: "bool", + id: 7 + }, + mask: { + type: "bytes", + id: 8 + }, + multisig_kLRki: { + type: "MoneroMultisigKLRki", + id: 9 + }, + subaddr_minor: { + type: "uint32", + id: 10 + } + }, + nested: { + MoneroOutputEntry: { + fields: { + idx: { + type: "uint64", + id: 1 + }, + key: { + type: "MoneroRctKeyPublic", + id: 2 + } + }, + nested: { + MoneroRctKeyPublic: { + fields: { + dest: { + rule: "required", + type: "bytes", + id: 1 + }, + commitment: { + rule: "required", + type: "bytes", + id: 2 + } + } + } + } + }, + MoneroMultisigKLRki: { + fields: { + K: { + type: "bytes", + id: 1 + }, + L: { + type: "bytes", + id: 2 + }, + R: { + type: "bytes", + id: 3 + }, + ki: { + type: "bytes", + id: 4 + } + } + } + } + }, + MoneroTransactionDestinationEntry: { + fields: { + amount: { + type: "uint64", + id: 1 + }, + addr: { + type: "MoneroAccountPublicAddress", + id: 2 + }, + is_subaddress: { + type: "bool", + id: 3 + }, + original: { + type: "bytes", + id: 4 + }, + is_integrated: { + type: "bool", + id: 5 + } + }, + nested: { + MoneroAccountPublicAddress: { + fields: { + spend_public_key: { + type: "bytes", + id: 1 + }, + view_public_key: { + type: "bytes", + id: 2 + } + } + } + } + }, + MoneroTransactionRsigData: { + fields: { + rsig_type: { + type: "uint32", + id: 1 + }, + offload_type: { + type: "uint32", + id: 2 + }, + grouping: { + rule: "repeated", + type: "uint64", + id: 3, + options: { + packed: false + } + }, + mask: { + type: "bytes", + id: 4 + }, + rsig: { + type: "bytes", + id: 5 + }, + rsig_parts: { + rule: "repeated", + type: "bytes", + id: 6 + }, + bp_version: { + type: "uint32", + id: 7 + } + } + }, + MoneroGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + network_type: { + type: "MoneroNetworkType", + id: 3, + options: { + default: "MAINNET" + } + }, + account: { + type: "uint32", + id: 4 + }, + minor: { + type: "uint32", + id: 5 + }, + payment_id: { + type: "bytes", + id: 6 + }, + chunkify: { + type: "bool", + id: 7 + } + } + }, + MoneroAddress: { + fields: { + address: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + MoneroGetWatchKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network_type: { + type: "MoneroNetworkType", + id: 2, + options: { + default: "MAINNET" + } + } + } + }, + MoneroWatchKey: { + fields: { + watch_key: { + rule: "required", + type: "bytes", + id: 1 + }, + address: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + MoneroTransactionInitRequest: { + fields: { + version: { + type: "uint32", + id: 1 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + network_type: { + type: "MoneroNetworkType", + id: 3, + options: { + default: "MAINNET" + } + }, + tsx_data: { + type: "MoneroTransactionData", + id: 4 + } + }, + nested: { + MoneroTransactionData: { + fields: { + version: { + type: "uint32", + id: 1 + }, + payment_id: { + type: "bytes", + id: 2 + }, + unlock_time: { + type: "uint64", + id: 3 + }, + outputs: { + rule: "repeated", + type: "MoneroTransactionDestinationEntry", + id: 4 + }, + change_dts: { + type: "MoneroTransactionDestinationEntry", + id: 5 + }, + num_inputs: { + type: "uint32", + id: 6 + }, + mixin: { + type: "uint32", + id: 7 + }, + fee: { + type: "uint64", + id: 8 + }, + account: { + type: "uint32", + id: 9 + }, + minor_indices: { + rule: "repeated", + type: "uint32", + id: 10, + options: { + packed: false + } + }, + rsig_data: { + type: "MoneroTransactionRsigData", + id: 11 + }, + integrated_indices: { + rule: "repeated", + type: "uint32", + id: 12, + options: { + packed: false + } + }, + client_version: { + type: "uint32", + id: 13 + }, + hard_fork: { + type: "uint32", + id: 14 + }, + monero_version: { + type: "bytes", + id: 15 + }, + chunkify: { + type: "bool", + id: 16 + } + } + } + } + }, + MoneroTransactionInitAck: { + fields: { + hmacs: { + rule: "repeated", + type: "bytes", + id: 1 + }, + rsig_data: { + type: "MoneroTransactionRsigData", + id: 2 + } + } + }, + MoneroTransactionSetInputRequest: { + fields: { + src_entr: { + type: "MoneroTransactionSourceEntry", + id: 1 + } + } + }, + MoneroTransactionSetInputAck: { + fields: { + vini: { + type: "bytes", + id: 1 + }, + vini_hmac: { + type: "bytes", + id: 2 + }, + pseudo_out: { + type: "bytes", + id: 3 + }, + pseudo_out_hmac: { + type: "bytes", + id: 4 + }, + pseudo_out_alpha: { + type: "bytes", + id: 5 + }, + spend_key: { + type: "bytes", + id: 6 + } + } + }, + MoneroTransactionInputViniRequest: { + fields: { + src_entr: { + type: "MoneroTransactionSourceEntry", + id: 1 + }, + vini: { + type: "bytes", + id: 2 + }, + vini_hmac: { + type: "bytes", + id: 3 + }, + pseudo_out: { + type: "bytes", + id: 4 + }, + pseudo_out_hmac: { + type: "bytes", + id: 5 + }, + orig_idx: { + type: "uint32", + id: 6 + } + } + }, + MoneroTransactionInputViniAck: { + fields: {} + }, + MoneroTransactionAllInputsSetRequest: { + fields: {} + }, + MoneroTransactionAllInputsSetAck: { + fields: { + rsig_data: { + type: "MoneroTransactionRsigData", + id: 1 + } + } + }, + MoneroTransactionSetOutputRequest: { + fields: { + dst_entr: { + type: "MoneroTransactionDestinationEntry", + id: 1 + }, + dst_entr_hmac: { + type: "bytes", + id: 2 + }, + rsig_data: { + type: "MoneroTransactionRsigData", + id: 3 + }, + is_offloaded_bp: { + type: "bool", + id: 4 + } + } + }, + MoneroTransactionSetOutputAck: { + fields: { + tx_out: { + type: "bytes", + id: 1 + }, + vouti_hmac: { + type: "bytes", + id: 2 + }, + rsig_data: { + type: "MoneroTransactionRsigData", + id: 3 + }, + out_pk: { + type: "bytes", + id: 4 + }, + ecdh_info: { + type: "bytes", + id: 5 + } + } + }, + MoneroTransactionAllOutSetRequest: { + fields: { + rsig_data: { + type: "MoneroTransactionRsigData", + id: 1 + } + } + }, + MoneroTransactionAllOutSetAck: { + fields: { + extra: { + type: "bytes", + id: 1 + }, + tx_prefix_hash: { + type: "bytes", + id: 2 + }, + rv: { + type: "MoneroRingCtSig", + id: 4 + }, + full_message_hash: { + type: "bytes", + id: 5 + } + }, + nested: { + MoneroRingCtSig: { + fields: { + txn_fee: { + type: "uint64", + id: 1 + }, + message: { + type: "bytes", + id: 2 + }, + rv_type: { + type: "uint32", + id: 3 + } + } + } + } + }, + MoneroTransactionSignInputRequest: { + fields: { + src_entr: { + type: "MoneroTransactionSourceEntry", + id: 1 + }, + vini: { + type: "bytes", + id: 2 + }, + vini_hmac: { + type: "bytes", + id: 3 + }, + pseudo_out: { + type: "bytes", + id: 4 + }, + pseudo_out_hmac: { + type: "bytes", + id: 5 + }, + pseudo_out_alpha: { + type: "bytes", + id: 6 + }, + spend_key: { + type: "bytes", + id: 7 + }, + orig_idx: { + type: "uint32", + id: 8 + } + } + }, + MoneroTransactionSignInputAck: { + fields: { + signature: { + type: "bytes", + id: 1 + }, + pseudo_out: { + type: "bytes", + id: 2 + } + } + }, + MoneroTransactionFinalRequest: { + fields: {} + }, + MoneroTransactionFinalAck: { + fields: { + cout_key: { + type: "bytes", + id: 1 + }, + salt: { + type: "bytes", + id: 2 + }, + rand_mult: { + type: "bytes", + id: 3 + }, + tx_enc_keys: { + type: "bytes", + id: 4 + }, + opening_key: { + type: "bytes", + id: 5 + } + } + }, + MoneroKeyImageExportInitRequest: { + fields: { + num: { + rule: "required", + type: "uint64", + id: 1 + }, + hash: { + rule: "required", + type: "bytes", + id: 2 + }, + address_n: { + rule: "repeated", + type: "uint32", + id: 3, + options: { + packed: false + } + }, + network_type: { + type: "MoneroNetworkType", + id: 4, + options: { + default: "MAINNET" + } + }, + subs: { + rule: "repeated", + type: "MoneroSubAddressIndicesList", + id: 5 + } + }, + nested: { + MoneroSubAddressIndicesList: { + fields: { + account: { + rule: "required", + type: "uint32", + id: 1 + }, + minor_indices: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + } + } + } + } + }, + MoneroKeyImageExportInitAck: { + fields: {} + }, + MoneroKeyImageSyncStepRequest: { + fields: { + tdis: { + rule: "repeated", + type: "MoneroTransferDetails", + id: 1 + } + }, + nested: { + MoneroTransferDetails: { + fields: { + out_key: { + rule: "required", + type: "bytes", + id: 1 + }, + tx_pub_key: { + rule: "required", + type: "bytes", + id: 2 + }, + additional_tx_pub_keys: { + rule: "repeated", + type: "bytes", + id: 3 + }, + internal_output_index: { + rule: "required", + type: "uint64", + id: 4 + }, + sub_addr_major: { + type: "uint32", + id: 5 + }, + sub_addr_minor: { + type: "uint32", + id: 6 + } + } + } + } + }, + MoneroKeyImageSyncStepAck: { + fields: { + kis: { + rule: "repeated", + type: "MoneroExportedKeyImage", + id: 1 + } + }, + nested: { + MoneroExportedKeyImage: { + fields: { + iv: { + type: "bytes", + id: 1 + }, + blob: { + type: "bytes", + id: 3 + } + } + } + } + }, + MoneroKeyImageSyncFinalRequest: { + fields: {} + }, + MoneroKeyImageSyncFinalAck: { + fields: { + enc_key: { + type: "bytes", + id: 1 + } + } + }, + MoneroGetTxKeyRequest: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network_type: { + type: "MoneroNetworkType", + id: 2, + options: { + default: "MAINNET" + } + }, + salt1: { + rule: "required", + type: "bytes", + id: 3 + }, + salt2: { + rule: "required", + type: "bytes", + id: 4 + }, + tx_enc_keys: { + rule: "required", + type: "bytes", + id: 5 + }, + tx_prefix_hash: { + rule: "required", + type: "bytes", + id: 6 + }, + reason: { + type: "uint32", + id: 7 + }, + view_public_key: { + type: "bytes", + id: 8 + } + } + }, + MoneroGetTxKeyAck: { + fields: { + salt: { + type: "bytes", + id: 1 + }, + tx_keys: { + type: "bytes", + id: 2 + }, + tx_derivations: { + type: "bytes", + id: 3 + } + } + }, + MoneroLiveRefreshStartRequest: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network_type: { + type: "MoneroNetworkType", + id: 2, + options: { + default: "MAINNET" + } + } + } + }, + MoneroLiveRefreshStartAck: { + fields: {} + }, + MoneroLiveRefreshStepRequest: { + fields: { + out_key: { + rule: "required", + type: "bytes", + id: 1 + }, + recv_deriv: { + rule: "required", + type: "bytes", + id: 2 + }, + real_out_idx: { + rule: "required", + type: "uint64", + id: 3 + }, + sub_addr_major: { + rule: "required", + type: "uint32", + id: 4 + }, + sub_addr_minor: { + rule: "required", + type: "uint32", + id: 5 + } + } + }, + MoneroLiveRefreshStepAck: { + fields: { + salt: { + type: "bytes", + id: 1 + }, + key_image: { + type: "bytes", + id: 2 + } + } + }, + MoneroLiveRefreshFinalRequest: { + fields: {} + }, + MoneroLiveRefreshFinalAck: { + fields: {} + }, + DebugMoneroDiagRequest: { + fields: { + ins: { + type: "uint64", + id: 1 + }, + p1: { + type: "uint64", + id: 2 + }, + p2: { + type: "uint64", + id: 3 + }, + pd: { + rule: "repeated", + type: "uint64", + id: 4, + options: { + packed: false + } + }, + data1: { + type: "bytes", + id: 5 + }, + data2: { + type: "bytes", + id: 6 + } + } + }, + DebugMoneroDiagAck: { + fields: { + ins: { + type: "uint64", + id: 1 + }, + p1: { + type: "uint64", + id: 2 + }, + p2: { + type: "uint64", + id: 3 + }, + pd: { + rule: "repeated", + type: "uint64", + id: 4, + options: { + packed: false + } + }, + data1: { + type: "bytes", + id: 5 + }, + data2: { + type: "bytes", + id: 6 + } + } + }, + NEMGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network: { + type: "uint32", + id: 2, + options: { + default: 104 + } + }, + show_display: { + type: "bool", + id: 3 + }, + chunkify: { + type: "bool", + id: 4 + } + } + }, + NEMAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + } + } + }, + NEMSignTx: { + fields: { + transaction: { + rule: "required", + type: "NEMTransactionCommon", + id: 1 + }, + multisig: { + type: "NEMTransactionCommon", + id: 2 + }, + transfer: { + type: "NEMTransfer", + id: 3 + }, + cosigning: { + type: "bool", + id: 4 + }, + provision_namespace: { + type: "NEMProvisionNamespace", + id: 5 + }, + mosaic_creation: { + type: "NEMMosaicCreation", + id: 6 + }, + supply_change: { + type: "NEMMosaicSupplyChange", + id: 7 + }, + aggregate_modification: { + type: "NEMAggregateModification", + id: 8 + }, + importance_transfer: { + type: "NEMImportanceTransfer", + id: 9 + }, + chunkify: { + type: "bool", + id: 10 + } + }, + nested: { + NEMTransactionCommon: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network: { + type: "uint32", + id: 2, + options: { + default: 104 + } + }, + timestamp: { + rule: "required", + type: "uint32", + id: 3 + }, + fee: { + rule: "required", + type: "uint64", + id: 4 + }, + deadline: { + rule: "required", + type: "uint32", + id: 5 + }, + signer: { + type: "bytes", + id: 6 + } + } + }, + NEMTransfer: { + fields: { + recipient: { + rule: "required", + type: "string", + id: 1 + }, + amount: { + rule: "required", + type: "uint64", + id: 2 + }, + payload: { + type: "bytes", + id: 3 + }, + public_key: { + type: "bytes", + id: 4 + }, + mosaics: { + rule: "repeated", + type: "NEMMosaic", + id: 5 + } + }, + nested: { + NEMMosaic: { + fields: { + namespace: { + rule: "required", + type: "string", + id: 1 + }, + mosaic: { + rule: "required", + type: "string", + id: 2 + }, + quantity: { + rule: "required", + type: "uint64", + id: 3 + } + } + } + } + }, + NEMProvisionNamespace: { + fields: { + namespace: { + rule: "required", + type: "string", + id: 1 + }, + parent: { + type: "string", + id: 2 + }, + sink: { + rule: "required", + type: "string", + id: 3 + }, + fee: { + rule: "required", + type: "uint64", + id: 4 + } + } + }, + NEMMosaicCreation: { + fields: { + definition: { + rule: "required", + type: "NEMMosaicDefinition", + id: 1 + }, + sink: { + rule: "required", + type: "string", + id: 2 + }, + fee: { + rule: "required", + type: "uint64", + id: 3 + } + }, + nested: { + NEMMosaicDefinition: { + fields: { + name: { + type: "string", + id: 1 + }, + ticker: { + type: "string", + id: 2 + }, + namespace: { + rule: "required", + type: "string", + id: 3 + }, + mosaic: { + rule: "required", + type: "string", + id: 4 + }, + divisibility: { + type: "uint32", + id: 5 + }, + levy: { + type: "NEMMosaicLevy", + id: 6 + }, + fee: { + type: "uint64", + id: 7 + }, + levy_address: { + type: "string", + id: 8 + }, + levy_namespace: { + type: "string", + id: 9 + }, + levy_mosaic: { + type: "string", + id: 10 + }, + supply: { + type: "uint64", + id: 11 + }, + mutable_supply: { + type: "bool", + id: 12 + }, + transferable: { + type: "bool", + id: 13 + }, + description: { + rule: "required", + type: "string", + id: 14 + }, + networks: { + rule: "repeated", + type: "uint32", + id: 15, + options: { + packed: false + } + } + }, + nested: { + NEMMosaicLevy: { + values: { + MosaicLevy_Absolute: 1, + MosaicLevy_Percentile: 2 + } + } + } + } + } + }, + NEMMosaicSupplyChange: { + fields: { + namespace: { + rule: "required", + type: "string", + id: 1 + }, + mosaic: { + rule: "required", + type: "string", + id: 2 + }, + type: { + rule: "required", + type: "NEMSupplyChangeType", + id: 3 + }, + delta: { + rule: "required", + type: "uint64", + id: 4 + } + }, + nested: { + NEMSupplyChangeType: { + values: { + SupplyChange_Increase: 1, + SupplyChange_Decrease: 2 + } + } + } + }, + NEMAggregateModification: { + fields: { + modifications: { + rule: "repeated", + type: "NEMCosignatoryModification", + id: 1 + }, + relative_change: { + type: "sint32", + id: 2 + } + }, + nested: { + NEMCosignatoryModification: { + fields: { + type: { + rule: "required", + type: "NEMModificationType", + id: 1 + }, + public_key: { + rule: "required", + type: "bytes", + id: 2 + } + }, + nested: { + NEMModificationType: { + values: { + CosignatoryModification_Add: 1, + CosignatoryModification_Delete: 2 + } + } + } + } + } + }, + NEMImportanceTransfer: { + fields: { + mode: { + rule: "required", + type: "NEMImportanceTransferMode", + id: 1 + }, + public_key: { + rule: "required", + type: "bytes", + id: 2 + } + }, + nested: { + NEMImportanceTransferMode: { + values: { + ImportanceTransfer_Activate: 1, + ImportanceTransfer_Deactivate: 2 + } + } + } + } + } + }, + NEMSignedTx: { + fields: { + data: { + rule: "required", + type: "bytes", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + NEMDecryptMessage: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + network: { + type: "uint32", + id: 2 + }, + public_key: { + type: "bytes", + id: 3 + }, + payload: { + type: "bytes", + id: 4 + } + } + }, + NEMDecryptedMessage: { + fields: { + payload: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + RippleGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + RippleAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + RippleSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + fee: { + rule: "required", + type: "uint64", + id: 2 + }, + flags: { + type: "uint32", + id: 3, + options: { + default: 0 + } + }, + sequence: { + rule: "required", + type: "uint32", + id: 4 + }, + last_ledger_sequence: { + type: "uint32", + id: 5 + }, + payment: { + rule: "required", + type: "RipplePayment", + id: 6 + }, + chunkify: { + type: "bool", + id: 7 + }, + payment_req: { + type: "PaymentRequest", + id: 8 + } + }, + nested: { + RipplePayment: { + fields: { + amount: { + rule: "required", + type: "uint64", + id: 1 + }, + destination: { + rule: "required", + type: "string", + id: 2 + }, + destination_tag: { + type: "uint32", + id: 3 + } + } + } + } + }, + RippleSignedTx: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 1 + }, + serialized_tx: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + SolanaGetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + } + } + }, + SolanaPublicKey: { + fields: { + public_key: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + SolanaGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + SolanaAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + SolanaTxTokenAccountInfo: { + fields: { + base_address: { + rule: "required", + type: "string", + id: 1 + }, + token_program: { + rule: "required", + type: "string", + id: 2 + }, + token_mint: { + rule: "required", + type: "string", + id: 3 + }, + token_account: { + rule: "required", + type: "string", + id: 4 + } + } + }, + SolanaTxAdditionalInfo: { + fields: { + token_accounts_infos: { + rule: "repeated", + type: "SolanaTxTokenAccountInfo", + id: 1 + }, + encoded_token: { + type: "bytes", + id: 2 + } + } + }, + SolanaSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + serialized_tx: { + rule: "required", + type: "bytes", + id: 2 + }, + additional_info: { + type: "SolanaTxAdditionalInfo", + id: 3 + }, + payment_req: { + type: "PaymentRequest", + id: 4 + } + } + }, + SolanaTxSignature: { + fields: { + signature: { + rule: "required", + type: "bytes", + id: 1 + } + } + }, + StellarAssetType: { + values: { + NATIVE: 0, + ALPHANUM4: 1, + ALPHANUM12: 2 + } + }, + StellarAsset: { + fields: { + type: { + rule: "required", + type: "StellarAssetType", + id: 1 + }, + code: { + type: "string", + id: 2 + }, + issuer: { + type: "string", + id: 3 + } + } + }, + StellarGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + StellarAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + StellarSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 2, + options: { + packed: false + } + }, + network_passphrase: { + rule: "required", + type: "string", + id: 3 + }, + source_account: { + rule: "required", + type: "string", + id: 4 + }, + fee: { + rule: "required", + type: "uint32", + id: 5 + }, + sequence_number: { + rule: "required", + type: "uint64", + id: 6 + }, + timebounds_start: { + rule: "required", + type: "uint32", + id: 8 + }, + timebounds_end: { + rule: "required", + type: "uint32", + id: 9 + }, + memo_type: { + rule: "required", + type: "StellarMemoType", + id: 10 + }, + memo_text: { + type: "string", + id: 11 + }, + memo_id: { + type: "uint64", + id: 12 + }, + memo_hash: { + type: "bytes", + id: 13 + }, + num_operations: { + rule: "required", + type: "uint32", + id: 14 + }, + payment_req: { + type: "PaymentRequest", + id: 15 + } + }, + nested: { + StellarMemoType: { + values: { + NONE: 0, + TEXT: 1, + ID: 2, + HASH: 3, + RETURN: 4 + } + } + } + }, + StellarTxOpRequest: { + fields: {} + }, + StellarPaymentOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + destination_account: { + rule: "required", + type: "string", + id: 2 + }, + asset: { + rule: "required", + type: "StellarAsset", + id: 3 + }, + amount: { + rule: "required", + type: "sint64", + id: 4 + } + } + }, + StellarCreateAccountOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + new_account: { + rule: "required", + type: "string", + id: 2 + }, + starting_balance: { + rule: "required", + type: "sint64", + id: 3 + } + } + }, + StellarPathPaymentStrictReceiveOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + send_asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + send_max: { + rule: "required", + type: "sint64", + id: 3 + }, + destination_account: { + rule: "required", + type: "string", + id: 4 + }, + destination_asset: { + rule: "required", + type: "StellarAsset", + id: 5 + }, + destination_amount: { + rule: "required", + type: "sint64", + id: 6 + }, + paths: { + rule: "repeated", + type: "StellarAsset", + id: 7 + } + } + }, + StellarPathPaymentStrictSendOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + send_asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + send_amount: { + rule: "required", + type: "sint64", + id: 3 + }, + destination_account: { + rule: "required", + type: "string", + id: 4 + }, + destination_asset: { + rule: "required", + type: "StellarAsset", + id: 5 + }, + destination_min: { + rule: "required", + type: "sint64", + id: 6 + }, + paths: { + rule: "repeated", + type: "StellarAsset", + id: 7 + } + } + }, + StellarManageSellOfferOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + selling_asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + buying_asset: { + rule: "required", + type: "StellarAsset", + id: 3 + }, + amount: { + rule: "required", + type: "sint64", + id: 4 + }, + price_n: { + rule: "required", + type: "uint32", + id: 5 + }, + price_d: { + rule: "required", + type: "uint32", + id: 6 + }, + offer_id: { + rule: "required", + type: "uint64", + id: 7 + } + } + }, + StellarManageBuyOfferOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + selling_asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + buying_asset: { + rule: "required", + type: "StellarAsset", + id: 3 + }, + amount: { + rule: "required", + type: "sint64", + id: 4 + }, + price_n: { + rule: "required", + type: "uint32", + id: 5 + }, + price_d: { + rule: "required", + type: "uint32", + id: 6 + }, + offer_id: { + rule: "required", + type: "uint64", + id: 7 + } + } + }, + StellarCreatePassiveSellOfferOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + selling_asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + buying_asset: { + rule: "required", + type: "StellarAsset", + id: 3 + }, + amount: { + rule: "required", + type: "sint64", + id: 4 + }, + price_n: { + rule: "required", + type: "uint32", + id: 5 + }, + price_d: { + rule: "required", + type: "uint32", + id: 6 + } + } + }, + StellarSetOptionsOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + inflation_destination_account: { + type: "string", + id: 2 + }, + clear_flags: { + type: "uint32", + id: 3 + }, + set_flags: { + type: "uint32", + id: 4 + }, + master_weight: { + type: "uint32", + id: 5 + }, + low_threshold: { + type: "uint32", + id: 6 + }, + medium_threshold: { + type: "uint32", + id: 7 + }, + high_threshold: { + type: "uint32", + id: 8 + }, + home_domain: { + type: "string", + id: 9 + }, + signer_type: { + type: "StellarSignerType", + id: 10 + }, + signer_key: { + type: "bytes", + id: 11 + }, + signer_weight: { + type: "uint32", + id: 12 + } + }, + nested: { + StellarSignerType: { + values: { + ACCOUNT: 0, + PRE_AUTH: 1, + HASH: 2 + } + } + } + }, + StellarChangeTrustOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + asset: { + rule: "required", + type: "StellarAsset", + id: 2 + }, + limit: { + rule: "required", + type: "uint64", + id: 3 + } + } + }, + StellarAllowTrustOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + trusted_account: { + rule: "required", + type: "string", + id: 2 + }, + asset_type: { + rule: "required", + type: "StellarAssetType", + id: 3 + }, + asset_code: { + type: "string", + id: 4 + }, + is_authorized: { + rule: "required", + type: "bool", + id: 5 + } + } + }, + StellarAccountMergeOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + destination_account: { + rule: "required", + type: "string", + id: 2 + } + } + }, + StellarManageDataOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + key: { + rule: "required", + type: "string", + id: 2 + }, + value: { + type: "bytes", + id: 3 + } + } + }, + StellarBumpSequenceOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + bump_to: { + rule: "required", + type: "uint64", + id: 2 + } + } + }, + StellarClaimClaimableBalanceOp: { + fields: { + source_account: { + type: "string", + id: 1 + }, + balance_id: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + StellarSignedTx: { + fields: { + public_key: { + rule: "required", + type: "bytes", + id: 1 + }, + signature: { + rule: "required", + type: "bytes", + id: 2 + } + } + }, + TezosGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + TezosAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + TezosGetPublicKey: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + TezosPublicKey: { + fields: { + public_key: { + rule: "required", + type: "string", + id: 1 + } + } + }, + TezosSignTx: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + branch: { + rule: "required", + type: "bytes", + id: 2 + }, + reveal: { + type: "TezosRevealOp", + id: 3 + }, + transaction: { + type: "TezosTransactionOp", + id: 4 + }, + origination: { + type: "TezosOriginationOp", + id: 5 + }, + delegation: { + type: "TezosDelegationOp", + id: 6 + }, + proposal: { + type: "TezosProposalOp", + id: 7 + }, + ballot: { + type: "TezosBallotOp", + id: 8 + }, + chunkify: { + type: "bool", + id: 9 + } + }, + nested: { + TezosContractID: { + fields: { + tag: { + rule: "required", + type: "TezosContractType", + id: 1 + }, + hash: { + rule: "required", + type: "bytes", + id: 2 + } + }, + nested: { + TezosContractType: { + values: { + Implicit: 0, + Originated: 1 + } + } + } + }, + TezosRevealOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 7 + }, + fee: { + rule: "required", + type: "uint64", + id: 2 + }, + counter: { + rule: "required", + type: "uint64", + id: 3 + }, + gas_limit: { + rule: "required", + type: "uint64", + id: 4 + }, + storage_limit: { + rule: "required", + type: "uint64", + id: 5 + }, + public_key: { + rule: "required", + type: "bytes", + id: 6 + } + } + }, + TezosTransactionOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 9 + }, + fee: { + rule: "required", + type: "uint64", + id: 2 + }, + counter: { + rule: "required", + type: "uint64", + id: 3 + }, + gas_limit: { + rule: "required", + type: "uint64", + id: 4 + }, + storage_limit: { + rule: "required", + type: "uint64", + id: 5 + }, + amount: { + rule: "required", + type: "uint64", + id: 6 + }, + destination: { + rule: "required", + type: "TezosContractID", + id: 7 + }, + parameters: { + type: "bytes", + id: 8 + }, + parameters_manager: { + type: "TezosParametersManager", + id: 10 + } + }, + nested: { + TezosParametersManager: { + fields: { + set_delegate: { + type: "bytes", + id: 1 + }, + cancel_delegate: { + type: "bool", + id: 2 + }, + transfer: { + type: "TezosManagerTransfer", + id: 3 + } + }, + nested: { + TezosManagerTransfer: { + fields: { + destination: { + rule: "required", + type: "TezosContractID", + id: 1 + }, + amount: { + rule: "required", + type: "uint64", + id: 2 + } + } + } + } + } + } + }, + TezosOriginationOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 12 + }, + fee: { + rule: "required", + type: "uint64", + id: 2 + }, + counter: { + rule: "required", + type: "uint64", + id: 3 + }, + gas_limit: { + rule: "required", + type: "uint64", + id: 4 + }, + storage_limit: { + rule: "required", + type: "uint64", + id: 5 + }, + manager_pubkey: { + type: "bytes", + id: 6 + }, + balance: { + rule: "required", + type: "uint64", + id: 7 + }, + spendable: { + type: "bool", + id: 8 + }, + delegatable: { + type: "bool", + id: 9 + }, + delegate: { + type: "bytes", + id: 10 + }, + script: { + rule: "required", + type: "bytes", + id: 11 + } + } + }, + TezosDelegationOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 7 + }, + fee: { + rule: "required", + type: "uint64", + id: 2 + }, + counter: { + rule: "required", + type: "uint64", + id: 3 + }, + gas_limit: { + rule: "required", + type: "uint64", + id: 4 + }, + storage_limit: { + rule: "required", + type: "uint64", + id: 5 + }, + delegate: { + rule: "required", + type: "bytes", + id: 6 + } + } + }, + TezosProposalOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 1 + }, + period: { + rule: "required", + type: "uint64", + id: 2 + }, + proposals: { + rule: "repeated", + type: "bytes", + id: 4 + } + } + }, + TezosBallotOp: { + fields: { + source: { + rule: "required", + type: "bytes", + id: 1 + }, + period: { + rule: "required", + type: "uint64", + id: 2 + }, + proposal: { + rule: "required", + type: "bytes", + id: 3 + }, + ballot: { + rule: "required", + type: "TezosBallotType", + id: 4 + } + }, + nested: { + TezosBallotType: { + values: { + Yay: 0, + Nay: 1, + Pass: 2 + } + } + } + } + } + }, + TezosSignedTx: { + fields: { + signature: { + rule: "required", + type: "string", + id: 1 + }, + sig_op_contents: { + rule: "required", + type: "bytes", + id: 2 + }, + operation_hash: { + rule: "required", + type: "string", + id: 3 + } + } + }, + TronGetAddress: { + fields: { + address_n: { + rule: "repeated", + type: "uint32", + id: 1, + options: { + packed: false + } + }, + show_display: { + type: "bool", + id: 2 + }, + chunkify: { + type: "bool", + id: 3 + } + } + }, + TronAddress: { + fields: { + address: { + rule: "required", + type: "string", + id: 1 + }, + mac: { + type: "bytes", + id: 2 + } + } + }, + MessageType: { + options: { + "(has_bitcoin_only_values)": true, + "(wire_enum)": true + }, + values: { + Initialize: 0, + Ping: 1, + Success: 2, + Failure: 3, + ChangePin: 4, + WipeDevice: 5, + GetEntropy: 9, + Entropy: 10, + LoadDevice: 13, + ResetDevice: 14, + SetBusy: 16, + Features: 17, + PinMatrixRequest: 18, + PinMatrixAck: 19, + Cancel: 20, + LockDevice: 24, + ApplySettings: 25, + ButtonRequest: 26, + ButtonAck: 27, + ApplyFlags: 28, + GetNonce: 31, + Nonce: 33, + BackupDevice: 34, + EntropyRequest: 35, + EntropyAck: 36, + PaymentRequest: 37, + EntropyCheckReady: 994, + EntropyCheckContinue: 995, + PassphraseRequest: 41, + PassphraseAck: 42, + RecoveryDevice: 45, + WordRequest: 46, + WordAck: 47, + GetFeatures: 55, + SdProtect: 79, + ChangeWipeCode: 82, + EndSession: 83, + DoPreauthorized: 84, + PreauthorizedRequest: 85, + CancelAuthorization: 86, + RebootToBootloader: 87, + GetFirmwareHash: 88, + FirmwareHash: 89, + UnlockPath: 93, + UnlockedPathRequest: 94, + ShowDeviceTutorial: 95, + UnlockBootloader: 96, + AuthenticateDevice: 97, + AuthenticityProof: 98, + ChangeLanguage: 990, + DataChunkRequest: 991, + DataChunkAck: 992, + SetBrightness: 993, + GetSerialNumber: 996, + SerialNumber: 997, + SetU2FCounter: 63, + GetNextU2FCounter: 80, + NextU2FCounter: 81, + Deprecated_PassphraseStateRequest: 77, + Deprecated_PassphraseStateAck: 78, + FirmwareErase: 6, + FirmwareUpload: 7, + FirmwareRequest: 8, + ProdTestT1: 32, + BleUnpair: 8001, + GetPublicKey: 11, + PublicKey: 12, + SignTx: 15, + TxRequest: 21, + TxAck: 22, + GetAddress: 29, + Address: 30, + SignMessage: 38, + VerifyMessage: 39, + MessageSignature: 40, + GetOwnershipId: 43, + OwnershipId: 44, + GetOwnershipProof: 49, + OwnershipProof: 50, + AuthorizeCoinJoin: 51, + CipherKeyValue: 23, + CipheredKeyValue: 48, + SignIdentity: 53, + SignedIdentity: 54, + GetECDHSessionKey: 61, + ECDHSessionKey: 62, + PaymentNotification: 52, + DebugLinkDecision: 100, + DebugLinkGetState: 101, + DebugLinkState: 102, + DebugLinkStop: 103, + DebugLinkLog: 104, + DebugLinkMemoryRead: 110, + DebugLinkMemory: 111, + DebugLinkMemoryWrite: 112, + DebugLinkFlashErase: 113, + DebugLinkLayout: 9001, + DebugLinkReseedRandom: 9002, + DebugLinkRecordScreen: 9003, + DebugLinkEraseSdCard: 9005, + DebugLinkWatchLayout: 9006, + DebugLinkResetDebugEvents: 9007, + DebugLinkOptigaSetSecMax: 9008, + DebugLinkGetGcInfo: 9009, + DebugLinkGcInfo: 9010, + DebugLinkGetPairingInfo: 9011, + DebugLinkPairingInfo: 9012, + EthereumGetPublicKey: 450, + EthereumPublicKey: 451, + EthereumGetAddress: 56, + EthereumAddress: 57, + EthereumSignTx: 58, + EthereumSignTxEIP1559: 452, + EthereumTxRequest: 59, + EthereumTxAck: 60, + EthereumSignMessage: 64, + EthereumVerifyMessage: 65, + EthereumMessageSignature: 66, + EthereumSignTypedData: 464, + EthereumTypedDataStructRequest: 465, + EthereumTypedDataStructAck: 466, + EthereumTypedDataValueRequest: 467, + EthereumTypedDataValueAck: 468, + EthereumTypedDataSignature: 469, + EthereumSignTypedHash: 470, + NEMGetAddress: 67, + NEMAddress: 68, + NEMSignTx: 69, + NEMSignedTx: 70, + NEMDecryptMessage: 75, + NEMDecryptedMessage: 76, + TezosGetAddress: 150, + TezosAddress: 151, + TezosSignTx: 152, + TezosSignedTx: 153, + TezosGetPublicKey: 154, + TezosPublicKey: 155, + StellarSignTx: 202, + StellarTxOpRequest: 203, + StellarGetAddress: 207, + StellarAddress: 208, + StellarCreateAccountOp: 210, + StellarPaymentOp: 211, + StellarPathPaymentStrictReceiveOp: 212, + StellarManageSellOfferOp: 213, + StellarCreatePassiveSellOfferOp: 214, + StellarSetOptionsOp: 215, + StellarChangeTrustOp: 216, + StellarAllowTrustOp: 217, + StellarAccountMergeOp: 218, + StellarManageDataOp: 220, + StellarBumpSequenceOp: 221, + StellarManageBuyOfferOp: 222, + StellarPathPaymentStrictSendOp: 223, + StellarClaimClaimableBalanceOp: 225, + StellarSignedTx: 230, + CardanoGetPublicKey: 305, + CardanoPublicKey: 306, + CardanoGetAddress: 307, + CardanoAddress: 308, + CardanoTxItemAck: 313, + CardanoTxAuxiliaryDataSupplement: 314, + CardanoTxWitnessRequest: 315, + CardanoTxWitnessResponse: 316, + CardanoTxHostAck: 317, + CardanoTxBodyHash: 318, + CardanoSignTxFinished: 319, + CardanoSignTxInit: 320, + CardanoTxInput: 321, + CardanoTxOutput: 322, + CardanoAssetGroup: 323, + CardanoToken: 324, + CardanoTxCertificate: 325, + CardanoTxWithdrawal: 326, + CardanoTxAuxiliaryData: 327, + CardanoPoolOwner: 328, + CardanoPoolRelayParameters: 329, + CardanoGetNativeScriptHash: 330, + CardanoNativeScriptHash: 331, + CardanoTxMint: 332, + CardanoTxCollateralInput: 333, + CardanoTxRequiredSigner: 334, + CardanoTxInlineDatumChunk: 335, + CardanoTxReferenceScriptChunk: 336, + CardanoTxReferenceInput: 337, + CardanoSignMessageInit: 338, + CardanoMessageDataRequest: 339, + CardanoMessageDataResponse: 340, + CardanoMessageSignature: 341, + RippleGetAddress: 400, + RippleAddress: 401, + RippleSignTx: 402, + RippleSignedTx: 403, + MoneroTransactionInitRequest: 501, + MoneroTransactionInitAck: 502, + MoneroTransactionSetInputRequest: 503, + MoneroTransactionSetInputAck: 504, + MoneroTransactionInputViniRequest: 507, + MoneroTransactionInputViniAck: 508, + MoneroTransactionAllInputsSetRequest: 509, + MoneroTransactionAllInputsSetAck: 510, + MoneroTransactionSetOutputRequest: 511, + MoneroTransactionSetOutputAck: 512, + MoneroTransactionAllOutSetRequest: 513, + MoneroTransactionAllOutSetAck: 514, + MoneroTransactionSignInputRequest: 515, + MoneroTransactionSignInputAck: 516, + MoneroTransactionFinalRequest: 517, + MoneroTransactionFinalAck: 518, + MoneroKeyImageExportInitRequest: 530, + MoneroKeyImageExportInitAck: 531, + MoneroKeyImageSyncStepRequest: 532, + MoneroKeyImageSyncStepAck: 533, + MoneroKeyImageSyncFinalRequest: 534, + MoneroKeyImageSyncFinalAck: 535, + MoneroGetAddress: 540, + MoneroAddress: 541, + MoneroGetWatchKey: 542, + MoneroWatchKey: 543, + DebugMoneroDiagRequest: 546, + DebugMoneroDiagAck: 547, + MoneroGetTxKeyRequest: 550, + MoneroGetTxKeyAck: 551, + MoneroLiveRefreshStartRequest: 552, + MoneroLiveRefreshStartAck: 553, + MoneroLiveRefreshStepRequest: 554, + MoneroLiveRefreshStepAck: 555, + MoneroLiveRefreshFinalRequest: 556, + MoneroLiveRefreshFinalAck: 557, + EosGetPublicKey: 600, + EosPublicKey: 601, + EosSignTx: 602, + EosTxActionRequest: 603, + EosTxActionAck: 604, + EosSignedTx: 605, + SolanaGetPublicKey: 900, + SolanaPublicKey: 901, + SolanaGetAddress: 902, + SolanaAddress: 903, + SolanaSignTx: 904, + SolanaTxSignature: 905, + EvoluGetNode: 2100, + EvoluNode: 2101, + EvoluSignRegistrationRequest: 2102, + EvoluRegistrationRequest: 2103, + EvoluGetDelegatedIdentityKey: 2104, + EvoluDelegatedIdentityKey: 2105, + TronGetAddress: 2200, + TronAddress: 2201 + } + } + } + }; + } +}); + +// node_modules/@trezor/device-utils/lib/modeUtils.js +var require_modeUtils = __commonJS({ + "node_modules/@trezor/device-utils/lib/modeUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isDeviceInBootloaderMode = void 0; + var isDeviceInBootloaderMode = (device) => !!device?.features?.bootloader_mode; + exports2.isDeviceInBootloaderMode = isDeviceInBootloaderMode; + } +}); + +// node_modules/@trezor/device-utils/lib/types.js +var require_types8 = __commonJS({ + "node_modules/@trezor/device-utils/lib/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.FirmwareType = void 0; + var FirmwareType; + (function(FirmwareType2) { + FirmwareType2["BitcoinOnly"] = "bitcoin-only"; + FirmwareType2["Universal"] = "universal"; + })(FirmwareType || (exports2.FirmwareType = FirmwareType = {})); + } +}); + +// node_modules/@trezor/device-utils/lib/firmwareUtils.js +var require_firmwareUtils = __commonJS({ + "node_modules/@trezor/device-utils/lib/firmwareUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isBitcoinOnlyDevice = exports2.hasBitcoinOnlyFirmware = exports2.getFirmwareVersion = exports2.getFirmwareVersionArray = exports2.getFirmwareRevision = exports2.getFirmwareSource = void 0; + var modeUtils_1 = require_modeUtils(); + var types_1 = require_types8(); + var getFirmwareSource = (device) => { + if (device?.mode === "bootloader") { + return "NA - bootloader"; + } + if (device?.authenticityChecks?.firmwareRevision?.success && device?.authenticityChecks?.firmwareHash?.success) { + return "official"; + } + return "unknown"; + }; + exports2.getFirmwareSource = getFirmwareSource; + var getFirmwareRevision = (device) => device?.features?.revision || ""; + exports2.getFirmwareRevision = getFirmwareRevision; + var getFirmwareVersionArray = (device) => { + if (!device?.features) { + return null; + } + const { + features + } = device; + if ((0, modeUtils_1.isDeviceInBootloaderMode)(device)) { + return features.fw_major ? [features.fw_major, features.fw_minor, features.fw_patch] : null; + } + return [features.major_version, features.minor_version, features.patch_version]; + }; + exports2.getFirmwareVersionArray = getFirmwareVersionArray; + var getFirmwareVersion = (device) => { + if (!device?.features) { + return ""; + } + const { + features + } = device; + if ((0, modeUtils_1.isDeviceInBootloaderMode)(device)) { + return features.fw_major ? `${features.fw_major}.${features.fw_minor}.${features.fw_patch}` : ""; + } + return `${features.major_version}.${features.minor_version}.${features.patch_version}`; + }; + exports2.getFirmwareVersion = getFirmwareVersion; + var hasBitcoinOnlyFirmware = (device) => device?.firmwareType === types_1.FirmwareType.BitcoinOnly; + exports2.hasBitcoinOnlyFirmware = hasBitcoinOnlyFirmware; + var isBitcoinOnlyDevice = (device) => !!device?.features?.unit_btconly && device?.firmwareType !== types_1.FirmwareType.Universal; + exports2.isBitcoinOnlyDevice = isBitcoinOnlyDevice; + } +}); + +// node_modules/@trezor/device-utils/lib/bootloaderUtils.js +var require_bootloaderUtils = __commonJS({ + "node_modules/@trezor/device-utils/lib/bootloaderUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getBootloaderVersion = exports2.getBootloaderHash = void 0; + var modeUtils_1 = require_modeUtils(); + var getBootloaderHash = (device) => device?.features?.bootloader_hash || ""; + exports2.getBootloaderHash = getBootloaderHash; + var getBootloaderVersion = (device) => { + if (!device?.features) { + return ""; + } + const { + features + } = device; + if ((0, modeUtils_1.isDeviceInBootloaderMode)(device) && features.major_version) { + return `${features.major_version}.${features.minor_version}.${features.patch_version}`; + } + return ""; + }; + exports2.getBootloaderVersion = getBootloaderVersion; + } +}); + +// node_modules/@trezor/device-utils/lib/deviceModelInternal.js +var require_deviceModelInternal = __commonJS({ + "node_modules/@trezor/device-utils/lib/deviceModelInternal.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceModelInternal = void 0; + var DeviceModelInternal; + (function(DeviceModelInternal2) { + DeviceModelInternal2["T1B1"] = "T1B1"; + DeviceModelInternal2["T2T1"] = "T2T1"; + DeviceModelInternal2["T2B1"] = "T2B1"; + DeviceModelInternal2["T3B1"] = "T3B1"; + DeviceModelInternal2["T3T1"] = "T3T1"; + DeviceModelInternal2["T3W1"] = "T3W1"; + DeviceModelInternal2["UNKNOWN"] = "UNKNOWN"; + })(DeviceModelInternal || (exports2.DeviceModelInternal = DeviceModelInternal = {})); + } +}); + +// node_modules/@trezor/device-utils/lib/deviceModelInternalUtils.js +var require_deviceModelInternalUtils = __commonJS({ + "node_modules/@trezor/device-utils/lib/deviceModelInternalUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getNarrowedDeviceModelInternal = void 0; + var deviceModelInternal_1 = require_deviceModelInternal(); + var getNarrowedDeviceModelInternal = (model) => model === deviceModelInternal_1.DeviceModelInternal.T2B1 ? deviceModelInternal_1.DeviceModelInternal.T3B1 : model; + exports2.getNarrowedDeviceModelInternal = getNarrowedDeviceModelInternal; + } +}); + +// node_modules/@trezor/device-utils/lib/models.js +var require_models2 = __commonJS({ + "node_modules/@trezor/device-utils/lib/models.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.models = void 0; + var safe3Model = { + name: "Trezor Safe 3", + colors: { + "1": "Cosmic Black", + "2": "Stellar Silver", + "3": "Solar Gold", + "4": "Galactic Rose", + "5": "Bitcoin Orange" + } + }; + exports2.models = { + UNKNOWN: { + name: "Unknown", + colors: safe3Model.colors + }, + T1B1: { + name: "Trezor Model One", + colors: {} + }, + T2T1: { + name: "Trezor Model T", + colors: {} + }, + T2B1: safe3Model, + T3B1: safe3Model, + T3T1: { + name: "Trezor Safe 5", + colors: { + "1": "Black Graphite", + "2": "Violet Ore", + "3": "Green Beryl", + "4": "Bitcoin Orange", + "5": "Freedom Edition" + } + }, + T3W1: { + name: "Trezor Safe 7", + colors: { + "1": "Charcoal Black", + "2": "Obsidian Green", + "3": "Bitcoin Orange" + }, + frontColors: { + "1": "1", + "2": "2", + "3": "1" + } + } + }; + } +}); + +// node_modules/@trezor/device-utils/lib/deviceColorUtils.js +var require_deviceColorUtils = __commonJS({ + "node_modules/@trezor/device-utils/lib/deviceColorUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getDeviceColorVariant = exports2.normalizeDeviceColorVariant = void 0; + var normalizeDeviceColorVariant = (colorVariant) => colorVariant || 1; + exports2.normalizeDeviceColorVariant = normalizeDeviceColorVariant; + var getDeviceColorVariant = (device) => (0, exports2.normalizeDeviceColorVariant)(device?.features?.unit_color ?? device?.thp?.properties?.model_variant); + exports2.getDeviceColorVariant = getDeviceColorVariant; + } +}); + +// node_modules/@trezor/device-utils/lib/index.js +var require_lib22 = __commonJS({ + "node_modules/@trezor/device-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_firmwareUtils(), exports2); + tslib_1.__exportStar(require_bootloaderUtils(), exports2); + tslib_1.__exportStar(require_modeUtils(), exports2); + tslib_1.__exportStar(require_types8(), exports2); + tslib_1.__exportStar(require_deviceModelInternal(), exports2); + tslib_1.__exportStar(require_deviceModelInternalUtils(), exports2); + tslib_1.__exportStar(require_models2(), exports2); + tslib_1.__exportStar(require_deviceColorUtils(), exports2); + } +}); + +// node_modules/@trezor/connect/lib/utils/assetUtils.js +var require_assetUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/assetUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.tryLocalAssetRequire = exports2.firmwareReleaseConfigAssets = exports2.getReleaseAsset = exports2.getReleasesAssetByDeviceModelAndFirmwareType = exports2.HttpRequestError = void 0; + var connect_common_1 = require_lib5(); + var device_utils_1 = require_lib22(); + var utils_1 = require_lib(); + var HttpRequestError = class extends Error { + response; + constructor(response) { + const message = `${response.status} while fetching ${response.url}`; + super(message); + this.response = response; + } + }; + exports2.HttpRequestError = HttpRequestError; + var getReleasesAssetByDeviceModelAndFirmwareType = (deviceModel, firmwareType) => { + const firmwareTypeInFileName = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? "bitcoinonly" : "universal"; + const availableReleasesRecord = connect_common_1.firmwareAssets?.[deviceModel.toLowerCase()]?.[firmwareTypeInFileName] ?? {}; + return Object.values(availableReleasesRecord).sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1); + }; + exports2.getReleasesAssetByDeviceModelAndFirmwareType = getReleasesAssetByDeviceModelAndFirmwareType; + var getReleaseAsset = (deviceModel, version, firmwareType) => { + const firmwareTypeInFileName = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? "bitcoinonly" : "universal"; + const fileName = `${deviceModel.toLowerCase()}-${version.join(".")}-${firmwareTypeInFileName}`; + const deviceModelLower = deviceModel.toLowerCase(); + const asset = connect_common_1.firmwareAssets?.[deviceModelLower]?.[firmwareTypeInFileName]?.[fileName]; + return asset; + }; + exports2.getReleaseAsset = getReleaseAsset; + exports2.firmwareReleaseConfigAssets = require_releases_v1(); + var tryLocalAssetRequire = (url) => { + const fileUrl = url.split("?")[0]; + switch (fileUrl) { + case "./data/coins.json": + return require_coins(); + case "./data/coins-eth.json": + return require_coins_eth(); + case "./data/messages/messages.json": + return require_messages4(); + } + return null; + }; + exports2.tryLocalAssetRequire = tryLocalAssetRequire; + } +}); + +// node_modules/@trezor/connect/lib/utils/assets-browser.js +var require_assets_browser = __commonJS({ + "node_modules/@trezor/connect/lib/utils/assets-browser.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.httpRequest = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var cross_fetch_1 = tslib_1.__importDefault(require_node_ponyfill()); + var assetUtils_1 = require_assetUtils(); + var httpRequest = async (url, type = "text", options) => { + const init = { + ...options, + credentials: "same-origin" + }; + const response = await (0, cross_fetch_1.default)(url, init); + if (response.ok) { + if (type === "json") { + const txt = await response.text(); + return JSON.parse(txt); + } + if (type === "binary") { + return response.arrayBuffer(); + } + return response.text(); + } + throw new assetUtils_1.HttpRequestError(response); + }; + exports2.httpRequest = httpRequest; + } +}); + +// node_modules/@trezor/connect/lib/utils/assets.js +var require_assets = __commonJS({ + "node_modules/@trezor/connect/lib/utils/assets.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.httpRequest = httpRequest; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var cross_fetch_1 = tslib_1.__importDefault(require_node_ponyfill()); + var fs_1 = __require("fs"); + var assetUtils_1 = require_assetUtils(); + var assets_browser_1 = require_assets_browser(); + if (global && typeof global.fetch !== "function") { + global.fetch = cross_fetch_1.default; + } + function httpRequest(url, type, options) { + const asset = options?.skipLocalForceDownload ? null : (0, assetUtils_1.tryLocalAssetRequire)(url); + if (!asset) { + return /^https?/.test(url) ? (0, assets_browser_1.httpRequest)(url, type, options) : fs_1.promises.readFile(url); + } + return asset; + } + } +}); + +// node_modules/@trezor/connect/lib/utils/firmwareUtils.js +var require_firmwareUtils2 = __commonJS({ + "node_modules/@trezor/connect/lib/utils/firmwareUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isFirmwareCacheUsedForSelectedSource = exports2.getFirmwareType = exports2.getFirmwareMode = exports2.buildIntermediaryFirmwareFileName = exports2.buildLocalFirmwareFileName = exports2.buildLocalReleaseName = exports2.findBestCompatibleRelease = exports2.isStrictFeatures = void 0; + var device_utils_1 = require_lib22(); + var utils_1 = require_lib(); + var DataManager_1 = require_DataManager(); + var isStrictFeatures = (extFeatures) => [1, 2].includes(extFeatures.major_version) && (extFeatures.firmware_present === false || extFeatures.bootloader_mode == null || extFeatures.bootloader_mode === true); + exports2.isStrictFeatures = isStrictFeatures; + var findBestCompatibleRelease = (availableFirmwares, currentVesion, checkProperty) => { + if (!availableFirmwares || availableFirmwares.length === 0) { + return; + } + const currentFirmwareVersion = currentVesion.firmwareVersion; + const currentBootloaderVersion = currentVesion.bootloaderVersion; + let versionToCompare = currentFirmwareVersion; + if (checkProperty === "min_bootloader_version" && currentBootloaderVersion) { + versionToCompare = currentBootloaderVersion; + } else if (checkProperty === "min_bootloader_version" && currentFirmwareVersion) { + const currentRelease = availableFirmwares.find((fw) => utils_1.versionUtils.isEqual(currentFirmwareVersion, fw.version)); + if (!currentRelease?.bootloader_version) { + return; + } + } + if (!versionToCompare) { + return; + } + const sortedFirmwares = availableFirmwares.sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1); + const compatibleFirmware = sortedFirmwares.find((fw) => utils_1.versionUtils.isNewerOrEqual(versionToCompare, fw[checkProperty])); + return compatibleFirmware; + }; + exports2.findBestCompatibleRelease = findBestCompatibleRelease; + var buildLocalFileBaseName = (firmwareType, deviceModel, version) => { + const firmwareSuffix = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? "-bitcoinonly" : ""; + const model = deviceModel.toLowerCase(); + const versionString = version.join("."); + return `trezor-${model}-${versionString}${firmwareSuffix}`; + }; + var buildLocalReleaseName = (firmwareType, deviceModel, version) => `${buildLocalFileBaseName(firmwareType, deviceModel, version)}.json`; + exports2.buildLocalReleaseName = buildLocalReleaseName; + var buildLocalFirmwareFileName = (firmwareType, deviceModel, version) => `${buildLocalFileBaseName(firmwareType, deviceModel, version)}.bin`; + exports2.buildLocalFirmwareFileName = buildLocalFirmwareFileName; + var buildIntermediaryFirmwareFileName = (internalModel, version) => `trezor-${internalModel.toLowerCase()}-inter-v${version}.bin`; + exports2.buildIntermediaryFirmwareFileName = buildIntermediaryFirmwareFileName; + var getFirmwareMode = (features) => { + if (features.bootloader_mode) return "bootloader"; + if (!features.initialized) return "initialize"; + if (features.no_backup) return "seedless"; + return "normal"; + }; + exports2.getFirmwareMode = getFirmwareMode; + var getFirmwareType = (features) => { + let type = device_utils_1.FirmwareType.Universal; + if (features.fw_vendor === "Trezor Bitcoin-only") { + type = device_utils_1.FirmwareType.BitcoinOnly; + } else if (features.fw_vendor === "Trezor") { + type = device_utils_1.FirmwareType.Universal; + } else if ((0, exports2.getFirmwareMode)(features) !== "bootloader") { + type = features.capabilities && features.capabilities.length > 0 && !features.capabilities.includes("Capability_Bitcoin_like") ? device_utils_1.FirmwareType.BitcoinOnly : device_utils_1.FirmwareType.Universal; + } else if ((0, exports2.getFirmwareMode)(features) === "bootloader" && features.unit_btconly) { + type = device_utils_1.FirmwareType.BitcoinOnly; + } + return type; + }; + exports2.getFirmwareType = getFirmwareType; + var isFirmwareCacheUsedForSelectedSource = () => DataManager_1.DataManager.getSettings("firmwareUpdateSource") === "production"; + exports2.isFirmwareCacheUsedForSelectedSource = isFirmwareCacheUsedForSelectedSource; + } +}); + +// node_modules/@trezor/connect/lib/data/firmwareInfo.js +var require_firmwareInfo = __commonJS({ + "node_modules/@trezor/connect/lib/data/firmwareInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getFirmwareLocation = exports2.getFirmwareStatus = exports2.getFirmwareReleaseConfigInfo = exports2.getReleaseInfo = exports2.getCurrentVersion = exports2.getLanguage = exports2.initializeFirmwareConfig = exports2.createRemoteFirmwareConfig = exports2.createLocalFirmwareConfig = exports2.getReleaseByVersion = exports2.getReleaseConfig = exports2.getOnlineReleaseByVersion = exports2.getBundledRelease = exports2.getOnlineFirmwareBaseUrl = void 0; + var device_utils_1 = require_lib22(); + var utils_1 = require_lib(); + var DataManager_1 = require_DataManager(); + var assetUtils_1 = require_assetUtils(); + var assets_1 = require_assets(); + var firmwareUtils_1 = require_firmwareUtils2(); + var RELEASES_URL_REMOTE_BASE = { + BASE_URL: "https://data.trezor.io", + MIDDLE_PATH: "firmware" + }; + var UNSIGNED_URL_REMOTE_BASE = { + BASE_URL: "https://data.trezor.io", + MIDDLE_PATH: "dev/firmware/releases/unsigned" + }; + var UNSIGNED_STABLE_URL_REMOTE_BASE = { + BASE_URL: "https://data.trezor.io", + MIDDLE_PATH: "dev/firmware/releases/unsigned-stable" + }; + var SIGNED_URL_REMOTE_BASE = { + BASE_URL: "https://suite.corp.sldev.cz", + MIDDLE_PATH: "firmware/signed" + }; + var SIGNED_LOCALHOST = { + BASE_URL: "http://localhost:3000", + MIDDLE_PATH: "firmware/signed" + }; + var UNSIGNED_LOCALHOST = { + BASE_URL: "http://localhost:3000", + MIDDLE_PATH: "firmware/unsigned" + }; + var FIRMWARE_REMOTE_BASE_URLS = { + production: RELEASES_URL_REMOTE_BASE, + "test-unsigned": UNSIGNED_URL_REMOTE_BASE, + "test-unsigned-stable": UNSIGNED_STABLE_URL_REMOTE_BASE, + "test-signed": SIGNED_URL_REMOTE_BASE, + "localhost-unsigned": UNSIGNED_LOCALHOST, + "localhost-signed": SIGNED_LOCALHOST + }; + var getOnlineFirmwareBaseUrl = () => { + const firmwareUpdateSource = DataManager_1.DataManager.getSettings("firmwareUpdateSource"); + if (!firmwareUpdateSource) { + return { + ...FIRMWARE_REMOTE_BASE_URLS["production"], + env: "production" + }; + } + return { + ...FIRMWARE_REMOTE_BASE_URLS[firmwareUpdateSource], + env: firmwareUpdateSource + }; + }; + exports2.getOnlineFirmwareBaseUrl = getOnlineFirmwareBaseUrl; + var getBundledFirmwareVersion = (deviceModel, firmwareType) => { + const localFirmwareReleaseConfig = DataManager_1.DataManager.getLocalFirmwareReleaseConfig(); + const modelReleases = localFirmwareReleaseConfig.releases[deviceModel]; + const bundledRelease = modelReleases?.[firmwareType]; + if (!bundledRelease) { + return; + } + const bundledVersion = bundledRelease.releasePath.match(/(\d+\.\d+\.\d+)/); + if (!bundledVersion) { + throw new Error("Fimrware bundled version was not found."); + } + return bundledVersion[0]; + }; + var getBundledRelease = (deviceModel, firmwareType) => { + const version = getBundledFirmwareVersion(deviceModel, firmwareType); + if (!version) { + return; + } + const versionArray = utils_1.versionUtils.tryParse(version); + if (!versionArray) { + throw new Error("There was error parsing bundled release."); + } + return (0, assetUtils_1.getReleaseAsset)(deviceModel, versionArray, firmwareType); + }; + exports2.getBundledRelease = getBundledRelease; + var getOnlineReleaseByPath = async (releasePath) => { + const onlineFirmwareBaseUrl = (0, exports2.getOnlineFirmwareBaseUrl)(); + const url = `${onlineFirmwareBaseUrl.BASE_URL}/${releasePath}`; + const response = await (0, assets_1.httpRequest)(url, "json", { + signal: AbortSignal.timeout(1e4), + skipLocalForceDownload: true + }); + return response; + }; + var getOnlineReleasePath = (deviceModel, firmwareVersion, firmwareType) => { + const onlineFirmwareBaseUrl = (0, exports2.getOnlineFirmwareBaseUrl)(); + const firmwareTypeFileString = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? "bitcoinonly" : "universal"; + const relaseJsonFilename = `${deviceModel.toLowerCase()}-${firmwareVersion.join(".")}-${firmwareTypeFileString}.json`; + const origin = `${onlineFirmwareBaseUrl.MIDDLE_PATH}/${deviceModel.toLowerCase()}/${firmwareTypeFileString}`; + const releasePath = `${origin}/${relaseJsonFilename}`; + return releasePath; + }; + var getOnlineReleaseByVersion = async (deviceModel, firmwareVersion, firmwareType) => { + const releasePath = getOnlineReleasePath(deviceModel, firmwareVersion, firmwareType); + const onlineRelease = await getOnlineReleaseByPath(releasePath); + if (!onlineRelease || !utils_1.versionUtils.isEqual(onlineRelease.version, firmwareVersion)) { + return; + } + return onlineRelease; + }; + exports2.getOnlineReleaseByVersion = getOnlineReleaseByVersion; + var getReleaseConfig = (features, firmwareType) => { + const { + internal_model + } = features; + if (internal_model === device_utils_1.DeviceModelInternal.UNKNOWN) { + return void 0; + } + const firmwareReleaseConfig = DataManager_1.DataManager.getFirmwareReleaseConfig(); + if (!firmwareReleaseConfig) { + throw new Error("Firmware release config not loaded."); + } + const deviceMessageRelease = firmwareReleaseConfig[internal_model]; + if (!deviceMessageRelease) { + return; + } + return deviceMessageRelease[firmwareType]; + }; + exports2.getReleaseConfig = getReleaseConfig; + var getReleaseByVersion = async (features, firmwareVersion, firmwareType) => { + const deviceModel = features.internal_model; + const tryGetRelease = async (getter) => { + try { + return await getter(); + } catch { + return; + } + }; + const releaseFromConfig = (0, exports2.getReleaseConfig)(features, firmwareType)?.release; + if (releaseFromConfig && utils_1.versionUtils.isEqual(firmwareVersion, releaseFromConfig.version)) { + return releaseFromConfig; + } + const releaseName = (0, firmwareUtils_1.buildLocalReleaseName)(firmwareType, deviceModel, firmwareVersion); + const { + firmwareDir, + firmwareList + } = DataManager_1.DataManager.getLocalFirmwares(); + if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && firmwareList.includes(releaseName)) { + const localReleasePath = `${firmwareDir}${releaseName}`; + const localReleaseBuffer = await (0, assets_1.httpRequest)(localReleasePath, "json"); + return JSON.parse(localReleaseBuffer.toString()); + } + const release = await tryGetRelease(() => (0, assetUtils_1.getReleaseAsset)(deviceModel, firmwareVersion, firmwareType)) || await tryGetRelease(() => (0, exports2.getOnlineReleaseByVersion)(deviceModel, firmwareVersion, firmwareType)); + if (release && utils_1.versionUtils.isEqual(release.version, firmwareVersion)) { + return release; + } + return; + }; + exports2.getReleaseByVersion = getReleaseByVersion; + var createLocalFirmwareConfig = (baseConfig) => { + const releaseEntries = Object.entries(baseConfig.releases).map(([deviceModel, modelReleases]) => { + const modelKey = deviceModel; + if (modelKey === device_utils_1.DeviceModelInternal.UNKNOWN) return null; + const { + "bitcoin-only": bitcoinOnlyConfig, + universal: universalConfig + } = modelReleases ?? {}; + if (!bitcoinOnlyConfig?.releasePath || !universalConfig?.releasePath) return null; + const btcOnlyRelease = (0, exports2.getBundledRelease)(modelKey, device_utils_1.FirmwareType.BitcoinOnly); + const universalRelease = (0, exports2.getBundledRelease)(modelKey, device_utils_1.FirmwareType.Universal); + if (!btcOnlyRelease || !universalRelease) return null; + const releases = { + [device_utils_1.FirmwareType.BitcoinOnly]: { + ...bitcoinOnlyConfig, + release: btcOnlyRelease + }, + [device_utils_1.FirmwareType.Universal]: { + ...universalConfig, + release: universalRelease + } + }; + return [modelKey, releases]; + }).filter((entry) => entry !== null); + return Object.fromEntries(releaseEntries); + }; + exports2.createLocalFirmwareConfig = createLocalFirmwareConfig; + var createRemoteFirmwareConfig = async (config2) => { + const releaseEntryPromises = Object.entries(config2.releases).map(async ([deviceModel, modelReleases]) => { + const modelKey = deviceModel; + if (modelKey === device_utils_1.DeviceModelInternal.UNKNOWN) return null; + const { + "bitcoin-only": bitcoinOnlyConfig, + universal: universalConfig + } = modelReleases ?? {}; + if (!bitcoinOnlyConfig?.releasePath || !universalConfig?.releasePath) return null; + const [bitcoinOnlyRelease, universalRelease] = await Promise.all([getOnlineReleaseByPath(bitcoinOnlyConfig.releasePath), getOnlineReleaseByPath(universalConfig.releasePath)]); + if (!universalRelease || !bitcoinOnlyRelease) return null; + const releases = { + [device_utils_1.FirmwareType.BitcoinOnly]: { + ...bitcoinOnlyConfig, + release: bitcoinOnlyRelease + }, + [device_utils_1.FirmwareType.Universal]: { + ...universalConfig, + release: universalRelease + } + }; + return [modelKey, releases]; + }); + const validEntries = (await Promise.all(releaseEntryPromises)).filter((entry) => entry !== null); + return Object.fromEntries(validEntries); + }; + exports2.createRemoteFirmwareConfig = createRemoteFirmwareConfig; + var initializeFirmwareConfig = async (config2, isRemote) => { + if (isRemote) { + try { + const remoteReleases = await (0, exports2.createRemoteFirmwareConfig)(config2); + return { + releases: remoteReleases, + intermediaries: config2.intermediaries + }; + } catch { + } + } + const localFirmwareReleaseConfig = DataManager_1.DataManager.getLocalFirmwareReleaseConfig(); + const localReleases = (0, exports2.createLocalFirmwareConfig)(localFirmwareReleaseConfig); + return { + releases: localReleases, + intermediaries: localFirmwareReleaseConfig.intermediaries + }; + }; + exports2.initializeFirmwareConfig = initializeFirmwareConfig; + var getLanguage = (languageBinPath) => { + const baseUrl = (0, exports2.getOnlineFirmwareBaseUrl)(); + const url = `${baseUrl.BASE_URL}/${languageBinPath}`; + return (0, assets_1.httpRequest)(url, "binary"); + }; + exports2.getLanguage = getLanguage; + var getCurrentVersion = (features) => { + if (!(0, firmwareUtils_1.isStrictFeatures)(features)) { + throw new Error("Features of unexpected shape provided."); + } + const { + bootloader_mode, + major_version, + minor_version, + patch_version, + fw_major, + fw_minor, + fw_patch + } = features; + const fw_version = [fw_major, fw_minor, fw_patch]; + const version = [major_version, minor_version, patch_version]; + const bootloaderVersion = bootloader_mode ? version : null; + const fwVersion = bootloader_mode ? fw_version : version; + return { + bootloaderVersion, + firmwareVersion: fwVersion.includes(null) ? null : fwVersion + }; + }; + exports2.getCurrentVersion = getCurrentVersion; + var getIntermediaryMessageRelease = (features) => { + const config2 = DataManager_1.DataManager.getFirmwareIntermediaryReleaseConfig(); + if (!config2) { + throw new Error("Firmware release config not loaded."); + } + const deviceIntermediaryReleases = config2[features.internal_model]; + if (!deviceIntermediaryReleases || deviceIntermediaryReleases.length === 0) { + return; + } + const { + bootloaderVersion, + firmwareVersion + } = (0, exports2.getCurrentVersion)(features); + const currentVersion = features.bootloader_mode ? bootloaderVersion : firmwareVersion; + const minVersionKey = features.bootloader_mode ? "min_bootloader_version" : "min_firmware_version"; + if (!currentVersion) { + return void 0; + } + return deviceIntermediaryReleases.find((release) => utils_1.versionUtils.isNewer(release[minVersionKey], currentVersion)); + }; + var getIsBitcoinOnlyAvailable = (features) => { + const { + internal_model + } = features; + if (internal_model === device_utils_1.DeviceModelInternal.UNKNOWN) { + return false; + } + const firmwareReleaseConfig = DataManager_1.DataManager.getFirmwareReleaseConfig(); + if (!firmwareReleaseConfig) { + throw new Error("Firmware release config not loaded."); + } + const deviceMessageRelease = firmwareReleaseConfig[internal_model]; + return !!deviceMessageRelease && !!deviceMessageRelease[device_utils_1.FirmwareType.BitcoinOnly]; + }; + var isValidConditionalRelease = (release) => !!(release.version && release.min_firmware_version && release.min_bootloader_version); + var calculateShouldOfferRelease = (rolloutProbability, deviceId) => { + if (rolloutProbability < 0 || rolloutProbability > 100) { + throw new Error("Probability must be between 0 and 100."); + } + if (deviceId === null) { + return rolloutProbability > 0; + } else { + const deterministicValueToCompare = (0, utils_1.getIntegerInRangeFromString)(deviceId, 101); + return deterministicValueToCompare < rolloutProbability; + } + }; + var getChangelog = (releases, features) => { + if (features.bootloader_mode) { + if (features.firmware_present && features.major_version === 1) { + return null; + } + if (features.firmware_present && features.major_version === 2) { + return releases.filter((r) => utils_1.versionUtils.isNewer(r.version, [features.fw_major, features.fw_minor, features.fw_patch])); + } + return releases; + } + return releases.filter((r) => utils_1.versionUtils.isNewer(r.version, [features.major_version, features.minor_version, features.patch_version])); + }; + var isRequired = (changelog) => { + if (!changelog || !changelog.length) return null; + return changelog.some((item) => item.required); + }; + var getReleaseInfo = ({ + features, + release, + conditions, + intermediary, + firmwareType, + isBitcoinOnlyAvailable, + releasesOfDevice + }) => { + if (!(0, firmwareUtils_1.isStrictFeatures)(features)) { + throw new Error("Features of unexpected shape provided."); + } + if (!isValidConditionalRelease(release)) { + throw new Error(`Release object in unexpected shape.`); + } + const { + min_firmware_version, + min_bootloader_version + } = release; + const changelog = getChangelog(releasesOfDevice, features); + let isNewer = false; + let requiresIntermediary = false; + if (features.bootloader_mode && release.bootloader_version) { + const { + bootloaderVersion, + firmwareVersion + } = (0, exports2.getCurrentVersion)(features); + if (utils_1.versionUtils.isVersionArray(firmwareVersion)) { + isNewer = utils_1.versionUtils.isNewer(release.version, firmwareVersion); + requiresIntermediary = utils_1.versionUtils.isNewer(min_firmware_version, firmwareVersion); + } else if (utils_1.versionUtils.isVersionArray(bootloaderVersion)) { + isNewer = utils_1.versionUtils.isNewer(release.bootloader_version, bootloaderVersion); + requiresIntermediary = utils_1.versionUtils.isNewer(min_bootloader_version, bootloaderVersion); + } else { + throw new Error("Version is not version array."); + } + } else { + const { + firmwareVersion + } = (0, exports2.getCurrentVersion)(features); + if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) { + throw new Error("Firmware version is not version array."); + } + isNewer = utils_1.versionUtils.isNewer(release.version, firmwareVersion); + requiresIntermediary = utils_1.versionUtils.isNewer(min_firmware_version, firmwareVersion); + } + const { + rollout_probability + } = conditions; + const shouldBeOffered = calculateShouldOfferRelease(rollout_probability, features.device_id); + if (requiresIntermediary && intermediary) { + isNewer = true; + } + return { + firmwareType, + isBitcoinOnlyAvailable, + releaseConditions: { + ...conditions, + shouldBeOffered + }, + release, + intermediary: requiresIntermediary ? intermediary : void 0, + isRequired: isRequired(changelog), + isNewer, + translations: release.translations + }; + }; + exports2.getReleaseInfo = getReleaseInfo; + var getFirmwareReleaseConfigInfo = (features, firmwareType) => { + const deviceMessageRelease = (0, exports2.getReleaseConfig)(features, firmwareType); + if (!deviceMessageRelease?.release) { + return; + } + const { + release, + conditions, + firmware_type + } = deviceMessageRelease; + const currentVersion = (0, exports2.getCurrentVersion)(features); + const inBootloaderMode = features.bootloader_mode && !!currentVersion.bootloaderVersion; + const versionContext = inBootloaderMode ? { + version: currentVersion.bootloaderVersion, + minVersionKey: "min_bootloader_version" + } : { + version: currentVersion.firmwareVersion, + minVersionKey: "min_firmware_version" + }; + const isCompatible = versionContext.version && utils_1.versionUtils.isNewerOrEqual(versionContext.version, release[versionContext.minVersionKey]); + const releasesOfDevice = (0, assetUtils_1.getReleasesAssetByDeviceModelAndFirmwareType)(features.internal_model, firmwareType); + let suitableRelease = release; + if (!isCompatible) { + const alternativeRelease = (0, firmwareUtils_1.findBestCompatibleRelease)(releasesOfDevice, currentVersion, versionContext.minVersionKey); + if (alternativeRelease) { + suitableRelease = alternativeRelease; + } + } + const intermediary = getIntermediaryMessageRelease(features); + const finalTargetRelease = intermediary ? release : suitableRelease; + return (0, exports2.getReleaseInfo)({ + isBitcoinOnlyAvailable: getIsBitcoinOnlyAvailable(features), + features, + release: finalTargetRelease, + conditions, + intermediary, + firmwareType: firmware_type, + releasesOfDevice + }); + }; + exports2.getFirmwareReleaseConfigInfo = getFirmwareReleaseConfigInfo; + var getFirmwareStatus = (features, firmwareType) => { + if (features.firmware_present === false) { + return "none"; + } + if (features.major_version === 1 && features.bootloader_mode) { + return "unknown"; + } + const releaseInfo = (0, exports2.getFirmwareReleaseConfigInfo)(features, firmwareType); + if (!releaseInfo) return "custom"; + if (releaseInfo.isRequired) return "required"; + if (releaseInfo.isNewer) return "outdated"; + return "valid"; + }; + exports2.getFirmwareStatus = getFirmwareStatus; + var getFirmwareLocation = ({ + firmwareVersion, + remotePath, + deviceModel, + firmwareType, + intermediaryVersion + }) => { + const firmwareName = intermediaryVersion ? (0, firmwareUtils_1.buildIntermediaryFirmwareFileName)(deviceModel, intermediaryVersion) : (0, firmwareUtils_1.buildLocalFirmwareFileName)(firmwareType, deviceModel, firmwareVersion); + const versionString = firmwareVersion.join("."); + const bundledBaseUrl = (0, utils_1.removeTrailingSlashes)(DataManager_1.DataManager.getSettings("binFilesBaseUrl")); + const isRealBundled = !bundledBaseUrl.includes("data.trezor.io"); + const bundledVersion = getBundledFirmwareVersion(deviceModel, firmwareType); + const isIntermediary = bundledBaseUrl && intermediaryVersion; + const isMatchingBundledVersion = bundledBaseUrl && isRealBundled && bundledVersion === versionString; + if (isIntermediary || isMatchingBundledVersion) { + return { + baseUrl: bundledBaseUrl, + path: `firmware/${deviceModel.toLowerCase()}/${firmwareName}` + }; + } + const { + firmwareDir, + firmwareList + } = DataManager_1.DataManager.getLocalFirmwares(); + if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && firmwareList.includes(firmwareName)) { + return { + baseUrl: firmwareDir, + path: firmwareName + }; + } + const onlineBaseUrl = (0, exports2.getOnlineFirmwareBaseUrl)(); + return { + baseUrl: onlineBaseUrl.BASE_URL, + path: remotePath + }; + }; + exports2.getFirmwareLocation = getFirmwareLocation; + } +}); + +// node_modules/jws/lib/data-stream.js +var require_data_stream = __commonJS({ + "node_modules/jws/lib/data-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var Stream = __require("stream"); + var util = __require("util"); + function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + if (!data) { + this.buffer = Buffer2.alloc(0); + return this; + } + if (typeof data.pipe === "function") { + this.buffer = Buffer2.alloc(0); + data.pipe(this); + return this; + } + if (data.length || typeof data === "object") { + this.buffer = data; + this.writable = false; + process.nextTick(function() { + this.emit("end", data); + this.readable = false; + this.emit("close"); + }.bind(this)); + return this; + } + throw new TypeError("Unexpected data type (" + typeof data + ")"); + } + util.inherits(DataStream, Stream); + DataStream.prototype.write = function write(data) { + this.buffer = Buffer2.concat([this.buffer, Buffer2.from(data)]); + this.emit("data", data); + }; + DataStream.prototype.end = function end(data) { + if (data) + this.write(data); + this.emit("end", data); + this.emit("close"); + this.writable = false; + this.readable = false; + }; + module2.exports = DataStream; + } +}); + +// node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +var require_param_bytes_for_alg = __commonJS({ + "node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports2, module2) { + "use strict"; + function getParamSize(keySize) { + var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; + } + var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) + }; + function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + throw new Error('Unknown algorithm "' + alg + '"'); + } + module2.exports = getParamBytesForAlg; + } +}); + +// node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +var require_ecdsa_sig_formatter = __commonJS({ + "node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js"(exports2, module2) { + "use strict"; + var Buffer2 = require_safe_buffer().Buffer; + var getParamBytesForAlg = require_param_bytes_for_alg(); + var MAX_OCTET = 128; + var CLASS_UNIVERSAL = 0; + var PRIMITIVE_BIT = 32; + var TAG_SEQ = 16; + var TAG_INT = 2; + var ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6; + var ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6; + function base64Url(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function signatureAsBuffer(signature) { + if (Buffer2.isBuffer(signature)) { + return signature; + } else if ("string" === typeof signature) { + return Buffer2.from(signature, "base64"); + } + throw new TypeError("ECDSA signature must be a Base64 string or a Buffer"); + } + function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var maxEncodedParamLength = paramBytes + 1; + var inputLength = signature.length; + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + var rLength = signature[offset++]; + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var rOffset = offset; + offset += rLength; + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + var sLength = signature[offset++]; + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + var sOffset = offset; + offset += sLength; + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + var rPadding = paramBytes - rLength, sPadding = paramBytes - sLength; + var dst = Buffer2.allocUnsafe(rPadding + rLength + sPadding + sLength); + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + offset = paramBytes; + for (var o = offset; offset < o + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + dst = dst.toString("base64"); + dst = base64Url(dst); + return dst; + } + function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + return padding; + } + function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + var shortLength = rsBytes < MAX_OCTET; + var dst = Buffer2.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + dst[offset++] = rsBytes; + } else { + dst[offset++] = MAX_OCTET | 1; + dst[offset++] = rsBytes & 255; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + return dst; + } + module2.exports = { + derToJose, + joseToDer + }; + } +}); + +// node_modules/buffer-equal-constant-time/index.js +var require_buffer_equal_constant_time = __commonJS({ + "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) { + "use strict"; + var Buffer2 = __require("buffer").Buffer; + var SlowBuffer = __require("buffer").SlowBuffer; + module2.exports = bufferEq; + function bufferEq(a, b) { + if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) { + return false; + } + if (a.length !== b.length) { + return false; + } + var c = 0; + for (var i = 0; i < a.length; i++) { + c |= a[i] ^ b[i]; + } + return c === 0; + } + bufferEq.install = function() { + Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { + return bufferEq(this, that); + }; + }; + var origBufEqual = Buffer2.prototype.equal; + var origSlowBufEqual = SlowBuffer.prototype.equal; + bufferEq.restore = function() { + Buffer2.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; + }; + } +}); + +// node_modules/jwa/index.js +var require_jwa = __commonJS({ + "node_modules/jwa/index.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var crypto2 = __require("crypto"); + var formatEcdsa = require_ecdsa_sig_formatter(); + var util = __require("util"); + var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".'; + var MSG_INVALID_SECRET = "secret must be a string or buffer"; + var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer"; + var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object"; + var supportsKeyObjects = typeof crypto2.createPublicKey === "function"; + if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += " or a KeyObject"; + MSG_INVALID_SECRET += "or a KeyObject"; + } + function checkIsPublicKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.type !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.asymmetricKeyType !== "string") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + } + function checkIsPrivateKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return; + } + if (typeof key === "object") { + return; + } + throw typeError(MSG_INVALID_SIGNER_KEY); + } + function checkIsSecretKey(key) { + if (Buffer2.isBuffer(key)) { + return; + } + if (typeof key === "string") { + return key; + } + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key !== "object") { + throw typeError(MSG_INVALID_SECRET); + } + if (key.type !== "secret") { + throw typeError(MSG_INVALID_SECRET); + } + if (typeof key.export !== "function") { + throw typeError(MSG_INVALID_SECRET); + } + } + function fromBase642(base64) { + return base64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function toBase642(base64url) { + base64url = base64url.toString(); + var padding = 4 - base64url.length % 4; + if (padding !== 4) { + for (var i = 0; i < padding; ++i) { + base64url += "="; + } + } + return base64url.replace(/\-/g, "+").replace(/_/g, "/"); + } + function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util.format.bind(util, template).apply(null, args); + return new TypeError(errMsg); + } + function bufferOrString(obj) { + return Buffer2.isBuffer(obj) || typeof obj === "string"; + } + function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; + } + function createHmacSigner(bits) { + return function sign(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto2.createHmac("sha" + bits, secret); + var sig = (hmac.update(thing), hmac.digest("base64")); + return fromBase642(sig); + }; + } + var bufferEqual; + var timingSafeEqual = "timingSafeEqual" in crypto2 ? function timingSafeEqual2(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + return crypto2.timingSafeEqual(a, b); + } : function timingSafeEqual2(a, b) { + if (!bufferEqual) { + bufferEqual = require_buffer_equal_constant_time(); + } + return bufferEqual(a, b); + }; + function createHmacVerifier(bits) { + return function verify(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer2.from(signature), Buffer2.from(computedSig)); + }; + } + function createKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign(privateKey, "base64")); + return fromBase642(sig); + }; + } + function createKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase642(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, "base64"); + }; + } + function createPSSKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto2.createSign("RSA-SHA" + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, "base64")); + return fromBase642(sig); + }; + } + function createPSSKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase642(signature); + var verifier = crypto2.createVerify("RSA-SHA" + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto2.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto2.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, "base64"); + }; + } + function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return function sign() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, "ES" + bits); + return signature; + }; + } + function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return function verify(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, "ES" + bits).toString("base64"); + var result = inner(thing, signature, publicKey); + return result; + }; + } + function createNoneSigner() { + return function sign() { + return ""; + }; + } + function createNoneVerifier() { + return function verify(thing, signature) { + return signature === ""; + }; + } + module2.exports = function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner + }; + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier + }; + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits) + }; + }; + } +}); + +// node_modules/jws/lib/tostring.js +var require_tostring = __commonJS({ + "node_modules/jws/lib/tostring.js"(exports2, module2) { + var Buffer2 = __require("buffer").Buffer; + module2.exports = function toString(obj) { + if (typeof obj === "string") + return obj; + if (typeof obj === "number" || Buffer2.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); + }; + } +}); + +// node_modules/jws/lib/sign-stream.js +var require_sign_stream = __commonJS({ + "node_modules/jws/lib/sign-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + function base64url(string, encoding) { + return Buffer2.from(string, encoding).toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); + } + function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || "utf8"; + var encodedHeader = base64url(toString(header), "binary"); + var encodedPayload = base64url(toString(payload), encoding); + return util.format("%s.%s", encodedHeader, encodedPayload); + } + function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util.format("%s.%s", securedInput, signature); + } + function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once("close", function() { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + this.payload.once("close", function() { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); + } + util.inherits(SignStream, Stream); + SignStream.prototype.sign = function sign() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit("done", signature); + this.emit("data", signature); + this.emit("end"); + this.readable = false; + return signature; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + SignStream.sign = jwsSign; + module2.exports = SignStream; + } +}); + +// node_modules/jws/lib/verify-stream.js +var require_verify_stream = __commonJS({ + "node_modules/jws/lib/verify-stream.js"(exports2, module2) { + var Buffer2 = require_safe_buffer().Buffer; + var DataStream = require_data_stream(); + var jwa = require_jwa(); + var Stream = __require("stream"); + var toString = require_tostring(); + var util = __require("util"); + var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + function isObject(thing) { + return Object.prototype.toString.call(thing) === "[object Object]"; + } + function safeJsonParse(thing) { + if (isObject(thing)) + return thing; + try { + return JSON.parse(thing); + } catch (e) { + return void 0; + } + } + function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split(".", 1)[0]; + return safeJsonParse(Buffer2.from(encodedHeader, "base64").toString("binary")); + } + function securedInputFromJWS(jwsSig) { + return jwsSig.split(".", 2).join("."); + } + function signatureFromJWS(jwsSig) { + return jwsSig.split(".")[2]; + } + function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || "utf8"; + var payload = jwsSig.split(".")[1]; + return Buffer2.from(payload, "base64").toString(encoding); + } + function isValidJws(string) { + return JWS_REGEX.test(string) && !!headerFromJWS(string); + } + function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err2 = new Error("Missing algorithm parameter for jws.verify"); + err2.code = "MISSING_ALGORITHM"; + throw err2; + } + jwsSig = toString(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); + } + function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString(jwsSig); + if (!isValidJws(jwsSig)) + return null; + var header = headerFromJWS(jwsSig); + if (!header) + return null; + var payload = payloadFromJWS(jwsSig); + if (header.typ === "JWT" || opts.json) + payload = JSON.parse(payload, opts.encoding); + return { + header, + payload, + signature: signatureFromJWS(jwsSig) + }; + } + function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError("secret must be a string or buffer or a KeyObject"); + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once("close", function() { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + this.signature.once("close", function() { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); + } + util.inherits(VerifyStream, Stream); + VerifyStream.prototype.verify = function verify() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit("done", valid, obj); + this.emit("data", valid); + this.emit("end"); + this.readable = false; + return valid; + } catch (e) { + this.readable = false; + this.emit("error", e); + this.emit("close"); + } + }; + VerifyStream.decode = jwsDecode; + VerifyStream.isValid = isValidJws; + VerifyStream.verify = jwsVerify; + module2.exports = VerifyStream; + } +}); + +// node_modules/jws/index.js +var require_jws2 = __commonJS({ + "node_modules/jws/index.js"(exports2) { + var SignStream = require_sign_stream(); + var VerifyStream = require_verify_stream(); + var ALGORITHMS = [ + "HS256", + "HS384", + "HS512", + "RS256", + "RS384", + "RS512", + "PS256", + "PS384", + "PS512", + "ES256", + "ES384", + "ES512" + ]; + exports2.ALGORITHMS = ALGORITHMS; + exports2.sign = SignStream.sign; + exports2.verify = VerifyStream.verify; + exports2.decode = VerifyStream.decode; + exports2.isValid = VerifyStream.isValid; + exports2.createSign = function createSign(opts) { + return new SignStream(opts); + }; + exports2.createVerify = function createVerify(opts) { + return new VerifyStream(opts); + }; + } +}); + +// node_modules/@trezor/connect/lib/utils/firmwareReleaseConfigUtils.js +var require_firmwareReleaseConfigUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/firmwareReleaseConfigUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getOnlyLocalFirmwareReleaseConfig = exports2.getFirmwareReleaseConfig = void 0; + var jws_1 = require_jws2(); + var env_utils_1 = require_lib4(); + var assetUtils_1 = require_assetUtils(); + var firmwareInfo_1 = require_firmwareInfo(); + var JWS_CONFIG = { + SIGN_ALGORITHM: "ES256", + VERSION: 1, + REMOTE_FILENAME: "releases.v1.json", + REQUEST_TIMEOUT_MS: 5e3 + }; + var fetchRemoteJws = async () => { + const { + BASE_URL, + MIDDLE_PATH, + env + } = (0, firmwareInfo_1.getOnlineFirmwareBaseUrl)(); + const path2 = `${MIDDLE_PATH}/${env === "production" ? "config/" : ""}${JWS_CONFIG.REMOTE_FILENAME}`; + const remoteReleasesUrl = new URL(path2, BASE_URL); + try { + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort("Request timed out"), JWS_CONFIG.REQUEST_TIMEOUT_MS); + const response = await fetch(remoteReleasesUrl.toString(), { + signal: controller.signal + }); + clearTimeout(timeoutId); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + const data = await response.json(); + if (typeof data.jws !== "string") { + throw new Error('Invalid response format: "jws" property missing or not a string.'); + } + return { + jws: data.jws, + env + }; + } catch (error) { + throw new Error(`Failed to fetch remote JWS: ${error instanceof Error ? error.message : String(error)}`); + } + }; + var verifyAndDecodeJws = (jws, publicKey) => { + const decoded = (0, jws_1.decode)(jws); + if (!decoded || !decoded.payload || !decoded.header) { + throw new Error("Invalid JWS structure."); + } + const parsedPayload = JSON.parse(decoded.payload); + if (decoded.header.alg !== JWS_CONFIG.SIGN_ALGORITHM) { + throw new Error("Invalid JWS algorithm"); + } + if (parsedPayload.version !== JWS_CONFIG.VERSION) { + throw new Error("Config version mismatch."); + } + if (!(0, jws_1.verify)(jws, JWS_CONFIG.SIGN_ALGORITHM, publicKey)) { + throw new Error("JWS signature is invalid."); + } + return parsedPayload; + }; + var getFirmwareReleaseConfig = async () => { + try { + const { + jws, + env + } = await fetchRemoteJws(); + const useProductionKey = ["test-signed", "production"].includes(env); + const publicKey = (0, env_utils_1.getFirmwareReleaseJwsPublicKey)(useProductionKey); + const remoteConfig = verifyAndDecodeJws(jws, publicKey); + if (remoteConfig.sequence > assetUtils_1.firmwareReleaseConfigAssets.sequence) { + return { + config: remoteConfig, + isRemote: true + }; + } + } catch { + } + return { + config: assetUtils_1.firmwareReleaseConfigAssets, + isRemote: false + }; + }; + exports2.getFirmwareReleaseConfig = getFirmwareReleaseConfig; + var getOnlyLocalFirmwareReleaseConfig = () => ({ + config: assetUtils_1.firmwareReleaseConfigAssets, + isRemote: false + }); + exports2.getOnlyLocalFirmwareReleaseConfig = getOnlyLocalFirmwareReleaseConfig; + } +}); + +// node_modules/@trezor/connect/lib/data/DataManager.js +var require_DataManager = __commonJS({ + "node_modules/@trezor/connect/lib/data/DataManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DataManager = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var coins_eth_json_1 = tslib_1.__importDefault(require_coins_eth()); + var coins_json_1 = tslib_1.__importDefault(require_coins()); + var messages_json_1 = tslib_1.__importDefault(require_messages4()); + var coinInfo_1 = require_coinInfo(); + var firmwareInfo_1 = require_firmwareInfo(); + var firmwareReleaseConfigUtils_1 = require_firmwareReleaseConfigUtils(); + var DataManager = class { + static assets = {}; + static settings; + static messages = messages_json_1.default; + static localFirmwares = { + firmwareDir: "", + firmwareList: [] + }; + static firmwareReleasesConfig = {}; + static firmwareIntermediaryReleasesConfig; + static localFirmwareReleaseConfig; + static async load(settings, withAssets = true, onlyLocalFirmwareConfig = false) { + this.settings = settings; + if (!withAssets) return; + const assetsMap = { + coins: coins_json_1.default, + coinsEth: coins_eth_json_1.default + }; + Object.assign(this.assets, assetsMap); + (0, coinInfo_1.parseCoinsJson)({ + ...this.assets.coins, + ...this.assets.coinsEth + }); + this.prepareLocalFirmwareReleaseData(); + await this.loadFirmwareRelaseConfig(onlyLocalFirmwareConfig); + } + static prepareLocalFirmwareReleaseData() { + const { + config: config2 + } = (0, firmwareReleaseConfigUtils_1.getOnlyLocalFirmwareReleaseConfig)(); + this.setLocalFirmwareReleaseConfig(config2); + } + static async loadFirmwareRelaseConfig(onlyLocal) { + let firmwareRelaseConfig; + if (onlyLocal) { + firmwareRelaseConfig = { + config: this.getLocalFirmwareReleaseConfig(), + isRemote: false + }; + } else { + firmwareRelaseConfig = await (0, firmwareReleaseConfigUtils_1.getFirmwareReleaseConfig)(); + } + const { + config: config2, + isRemote + } = firmwareRelaseConfig; + const firmwareconfig = await (0, firmwareInfo_1.initializeFirmwareConfig)(config2, isRemote); + this.setFirmwareReleaseConfig(firmwareconfig.releases); + this.setFirmwareIntermediaryReleaseConfig(firmwareconfig.intermediaries); + } + static getProtobufMessages() { + return this.messages; + } + static getSettings(key) { + if (!this.settings) return null; + if (typeof key === "string") { + return this.settings[key]; + } + return this.settings; + } + static setLocalFirmwares(firmwares) { + this.localFirmwares = firmwares; + } + static getLocalFirmwares() { + return this.localFirmwares; + } + static setLocalFirmwareReleaseConfig(localFirmwareReleaseConfig) { + this.localFirmwareReleaseConfig = localFirmwareReleaseConfig; + } + static getLocalFirmwareReleaseConfig() { + return this.localFirmwareReleaseConfig; + } + static setFirmwareReleaseConfig(releaseConfig) { + this.firmwareReleasesConfig = releaseConfig; + } + static getFirmwareReleaseConfig() { + return this.firmwareReleasesConfig; + } + static setFirmwareIntermediaryReleaseConfig(intermediariesConfig) { + this.firmwareIntermediaryReleasesConfig = intermediariesConfig; + } + static getFirmwareIntermediaryReleaseConfig() { + return this.firmwareIntermediaryReleasesConfig; + } + }; + exports2.DataManager = DataManager; + } +}); + +// node_modules/@trezor/connect/lib/backend/BackendManager.js +var require_BackendManager = __commonJS({ + "node_modules/@trezor/connect/lib/backend/BackendManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BackendManager = void 0; + var constants_1 = require_constants(); + var Blockchain_1 = require_Blockchain(); + var DataManager_1 = require_DataManager(); + var events_1 = require_events(); + var DEFAULT_IDENTITY = "default"; + var BackendManager = class { + instances = {}; + reconnect = {}; + custom = {}; + preferred = {}; + get(shortcut, identity = DEFAULT_IDENTITY) { + return this.instances[`${shortcut}/${identity}`] ?? null; + } + async getOrConnect({ + coinInfo, + postMessage, + identity + }) { + const coinIdentity = `${coinInfo.shortcut}/${identity ?? DEFAULT_IDENTITY}`; + let backend = this.instances[coinIdentity]; + if (!backend) { + backend = new Blockchain_1.Blockchain({ + coinInfo: this.patchCoinInfo(coinInfo), + identity, + debug: DataManager_1.DataManager.getSettings("debug"), + proxy: DataManager_1.DataManager.getSettings("proxy"), + postMessage, + onDisconnected: (pendingSubscriptions) => { + const reconnectAttempts = pendingSubscriptions ? 0 : void 0; + this.onDisconnect({ + coinInfo, + postMessage, + identity + }, reconnectAttempts); + } + }); + this.setInstance(coinIdentity, backend); + } + const reconnect = this.clearReconnect(coinIdentity); + try { + const info = await backend.init(); + this.setPreferred(coinInfo.shortcut, info.url); + return backend; + } catch (error) { + this.onDisconnect({ + coinInfo, + postMessage, + identity + }, reconnect?.attempts); + throw error; + } + } + dispose() { + Object.keys(this.reconnect).filter(this.getReconnectFilter()).forEach(this.clearReconnect, this); + Object.values(this.instances).forEach((i) => i.disconnect()); + } + reconnectAll(coin) { + const backends = Object.values(this.instances).filter((backend) => !coin || coin.shortcut === backend.coinInfo.shortcut); + backends.forEach((i) => i.disconnect()); + return Promise.all(backends.map(this.getOrConnect, this)); + } + isSupported(coinInfo) { + const info = this.custom[coinInfo.shortcut] || coinInfo.blockchainLink; + if (!info) { + throw constants_1.ERRORS.TypedError("Backend_NotSupported"); + } + } + setCustom(shortcut, blockchainLink) { + this.setPreferred(shortcut, void 0); + if (blockchainLink) { + this.custom[shortcut] = blockchainLink; + } else { + delete this.custom[shortcut]; + } + } + setInstance(coinIdentity, instance) { + if (!instance) delete this.instances[coinIdentity]; + else this.instances[coinIdentity] = instance; + } + setPreferred(shortcut, url) { + if (!url) delete this.preferred[shortcut]; + else this.preferred[shortcut] = url; + } + onDisconnect({ + coinInfo, + postMessage, + identity + }, reconnectAttempt) { + const coinIdentity = `${coinInfo.shortcut}/${identity ?? DEFAULT_IDENTITY}`; + this.setInstance(coinIdentity, void 0); + if (reconnectAttempt === void 0 || reconnectAttempt === 4) { + this.setPreferred(coinInfo.shortcut, void 0); + } + if (reconnectAttempt === void 0) { + return; + } + const timeout = Math.min(2500 * reconnectAttempt, 2e4); + const time = Date.now() + timeout; + const handle = setTimeout(() => { + this.getOrConnect({ + coinInfo, + postMessage, + identity + }).catch(() => { + }); + }, timeout); + clearTimeout(this.reconnect[coinIdentity]?.handle); + this.reconnect[coinIdentity] = { + attempts: reconnectAttempt + 1, + handle + }; + postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.RECONNECTING, { + coin: coinInfo, + identity, + time + })); + } + clearReconnect(coinIdentity) { + const reconnect = this.reconnect[coinIdentity]; + clearTimeout(reconnect?.handle); + delete this.reconnect[coinIdentity]; + return reconnect; + } + patchCoinInfo(coinInfo) { + const custom = this.custom[coinInfo.shortcut]; + const preferred = this.preferred[coinInfo.shortcut]; + const url = preferred ? [preferred] : custom?.url ?? coinInfo.blockchainLink?.url; + return { + ...coinInfo, + blockchainLink: { + ...coinInfo.blockchainLink, + ...custom, + url + } + }; + } + getReconnectFilter(coinInfo) { + return (key) => !coinInfo || key.startsWith(`${coinInfo.shortcut}/`); + } + }; + exports2.BackendManager = BackendManager; + } +}); + +// node_modules/@trezor/connect/lib/backend/BlockchainLink.js +var require_BlockchainLink = __commonJS({ + "node_modules/@trezor/connect/lib/backend/BlockchainLink.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.dispose = exports2.reconnectAllBackends = exports2.initBlockchain = exports2.isBackendSupported = exports2.setCustomBackend = exports2.findBackend = exports2.Blockchain = void 0; + var BackendManager_1 = require_BackendManager(); + var Blockchain_1 = require_Blockchain(); + Object.defineProperty(exports2, "Blockchain", { + enumerable: true, + get: function() { + return Blockchain_1.Blockchain; + } + }); + var backends = new BackendManager_1.BackendManager(); + var findBackend = (coin, identity) => backends.get(coin, identity); + exports2.findBackend = findBackend; + var setCustomBackend = (coinInfo, blockchainLink) => backends.setCustom(coinInfo.shortcut, blockchainLink?.url.length ? blockchainLink : coinInfo.blockchainLink); + exports2.setCustomBackend = setCustomBackend; + var isBackendSupported = (coinInfo) => backends.isSupported(coinInfo); + exports2.isBackendSupported = isBackendSupported; + var initBlockchain = (coinInfo, postMessage, identity) => backends.getOrConnect({ + coinInfo, + identity, + postMessage + }); + exports2.initBlockchain = initBlockchain; + var reconnectAllBackends = (coinInfo) => backends.reconnectAll(coinInfo); + exports2.reconnectAllBackends = reconnectAllBackends; + var dispose = () => backends.dispose(); + exports2.dispose = dispose; + } +}); + +// node_modules/@trezor/connect/lib/types/api/index.js +var require_api4 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect/lib/types/account.js +var require_account2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/account.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect/lib/types/fees.js +var require_fees = __commonJS({ + "node_modules/@trezor/connect/lib/types/fees.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SelectFeeLevel = exports2.FeeLevel = exports2.FeeInfo = void 0; + var schema_utils_1 = require_lib2(); + exports2.FeeInfo = schema_utils_1.Type.Object({ + blockTime: schema_utils_1.Type.Number(), + minFee: schema_utils_1.Type.Number(), + maxFee: schema_utils_1.Type.Number(), + minPriorityFee: schema_utils_1.Type.Number(), + dustLimit: schema_utils_1.Type.Number() + }); + exports2.FeeLevel = schema_utils_1.Type.Object({ + label: schema_utils_1.Type.Union([schema_utils_1.Type.Literal("high"), schema_utils_1.Type.Literal("normal"), schema_utils_1.Type.Literal("economy"), schema_utils_1.Type.Literal("low"), schema_utils_1.Type.Literal("custom")]), + blocks: schema_utils_1.Type.Number(), + feePerUnit: schema_utils_1.Type.String(), + feePerTx: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + feeLimit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + baseFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + maxFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + maxPriorityFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.SelectFeeLevel = schema_utils_1.Type.Union([schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Literal("0"), + feePerByte: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + blocks: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + disabled: schema_utils_1.Type.Literal(true) + }), schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.String(), + feePerByte: schema_utils_1.Type.String(), + blocks: schema_utils_1.Type.Number(), + minutes: schema_utils_1.Type.Number(), + total: schema_utils_1.Type.String() + })]); + } +}); + +// node_modules/@trezor/connect/lib/types/coinInfo.js +var require_coinInfo2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/coinInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CoinInfo = exports2.MiscNetworkInfo = exports2.EthereumNetworkInfoDefinitionValues = exports2.EthereumNetworkInfo = exports2.BitcoinNetworkInfo = exports2.BlockchainLink = exports2.CoinSupport = exports2.CoinObj = exports2.Network = exports2.Bip32 = void 0; + var device_utils_1 = require_lib22(); + var schema_utils_1 = require_lib2(); + var fees_1 = require_fees(); + exports2.Bip32 = schema_utils_1.Type.Object({ + public: schema_utils_1.Type.Number(), + private: schema_utils_1.Type.Number() + }); + exports2.Network = schema_utils_1.Type.Object({ + messagePrefix: schema_utils_1.Type.String(), + bech32: schema_utils_1.Type.String(), + bip32: exports2.Bip32, + pubKeyHash: schema_utils_1.Type.Number(), + scriptHash: schema_utils_1.Type.Number(), + wif: schema_utils_1.Type.Number(), + forkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }); + exports2.CoinObj = schema_utils_1.Type.Object({ + coin: schema_utils_1.Type.String(), + identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CoinSupport = schema_utils_1.Type.Composite([schema_utils_1.Type.Object({ + connect: schema_utils_1.Type.Boolean() + }), schema_utils_1.Type.Record(schema_utils_1.Type.KeyOfEnum(device_utils_1.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Literal(false)]))]); + exports2.BlockchainLink = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.String(), + url: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }); + var Common = schema_utils_1.Type.Object({ + label: schema_utils_1.Type.String(), + name: schema_utils_1.Type.String(), + shortcut: schema_utils_1.Type.String(), + slip44: schema_utils_1.Type.Number(), + support: exports2.CoinSupport, + decimals: schema_utils_1.Type.Number(), + blockchainLink: schema_utils_1.Type.Optional(exports2.BlockchainLink), + blockTime: schema_utils_1.Type.Number(), + minFee: schema_utils_1.Type.Number(), + maxFee: schema_utils_1.Type.Number(), + minPriorityFee: schema_utils_1.Type.Number(), + defaultFees: schema_utils_1.Type.Array(fees_1.FeeLevel) + }); + exports2.BitcoinNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("bitcoin"), + cashAddrPrefix: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + curveName: schema_utils_1.Type.String(), + dustLimit: schema_utils_1.Type.Number(), + forceBip143: schema_utils_1.Type.Boolean(), + hashGenesisBlock: schema_utils_1.Type.String(), + maxAddressLength: schema_utils_1.Type.Number(), + maxFeeSatoshiKb: schema_utils_1.Type.Number(), + minAddressLength: schema_utils_1.Type.Number(), + minFeeSatoshiKb: schema_utils_1.Type.Number(), + segwit: schema_utils_1.Type.Boolean(), + xPubMagic: schema_utils_1.Type.Number(), + xPubMagicSegwitNative: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + xPubMagicSegwit: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + taproot: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + network: exports2.Network, + isBitcoin: schema_utils_1.Type.Boolean() + })]); + exports2.EthereumNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("ethereum"), + chainId: schema_utils_1.Type.Number(), + network: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()) + })]); + exports2.EthereumNetworkInfoDefinitionValues = schema_utils_1.Type.Omit(exports2.EthereumNetworkInfo, ["minFee", "maxFee", "defaultFees", "minPriorityFee", "blockTime"]); + exports2.MiscNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Union([schema_utils_1.Type.Literal("misc"), schema_utils_1.Type.Literal("nem")]), + curve: schema_utils_1.Type.String(), + network: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()) + })]); + exports2.CoinInfo = schema_utils_1.Type.Union([exports2.BitcoinNetworkInfo, exports2.EthereumNetworkInfo, exports2.MiscNetworkInfo]); + } +}); + +// node_modules/@trezor/connect/lib/types/device.js +var require_device3 = __commonJS({ + "node_modules/@trezor/connect/lib/types/device.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.asProofOfDelegatedIdentity = exports2.asBluetoothDeviceId = exports2.asDeviceUniquePath = void 0; + var asDeviceUniquePath = (id) => id; + exports2.asDeviceUniquePath = asDeviceUniquePath; + var asBluetoothDeviceId = (id) => id; + exports2.asBluetoothDeviceId = asBluetoothDeviceId; + var asProofOfDelegatedIdentity = (value) => value; + exports2.asProofOfDelegatedIdentity = asProofOfDelegatedIdentity; + } +}); + +// node_modules/@trezor/connect/lib/types/firmware.js +var require_firmware2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/firmware.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect/lib/types/settings.js +var require_settings2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/settings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/cardano/index.js +var require_cardano2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/cardano/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CardanoSignedMessage = exports2.CardanoMessageHeaders = exports2.CardanoMessageUnprotectedHeaders = exports2.CardanoMessageProtectedHeaders = exports2.CardanoSignMessage = exports2.CardanoSignedTxData = exports2.CardanoAuxiliaryDataSupplement = exports2.CardanoSignedTxWitness = exports2.CardanoSignTransactionExtended = exports2.CardanoSignTransaction = exports2.CardanoAuxiliaryData = exports2.CardanoCVoteRegistrationParameters = exports2.CardanoCVoteRegistrationDelegation = exports2.CardanoReferenceInput = exports2.CardanoRequiredSigner = exports2.CardanoCollateralInput = exports2.CardanoMint = exports2.CardanoWithdrawal = exports2.CardanoCertificate = exports2.CardanoDRep = exports2.CardanoPoolParameters = exports2.CardanoPoolMargin = exports2.CardanoPoolMetadata = exports2.CardanoPoolRelay = exports2.CardanoPoolOwner = exports2.CardanoOutput = exports2.CardanoAssetGroup = exports2.CardanoToken = exports2.CardanoInput = exports2.CardanoGetPublicKey = exports2.CardanoNativeScriptHash = exports2.CardanoGetNativeScriptHash = exports2.CardanoNativeScript = exports2.CardanoGetAddress = exports2.CardanoAddressParameters = exports2.CardanoCertificatePointer = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.CardanoCertificatePointer = schema_utils_1.Type.Object({ + blockIndex: schema_utils_1.Type.Number(), + txIndex: schema_utils_1.Type.Number(), + certificateIndex: schema_utils_1.Type.Number() + }); + exports2.CardanoAddressParameters = schema_utils_1.Type.Object({ + addressType: constants_1.PROTO.EnumCardanoAddressType, + path: schema_utils_1.Type.Optional(params_1.DerivationPath), + stakingPath: schema_utils_1.Type.Optional(params_1.DerivationPath), + stakingKeyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + certificatePointer: schema_utils_1.Type.Optional(exports2.CardanoCertificatePointer), + paymentScriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + stakingScriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoGetAddress = schema_utils_1.Type.Object({ + addressParameters: exports2.CardanoAddressParameters, + protocolMagic: schema_utils_1.Type.Number(), + networkId: schema_utils_1.Type.Number(), + address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.CardanoNativeScript = schema_utils_1.Type.Recursive((This) => schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoNativeScriptType, + scripts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(This)), + keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + keyPath: schema_utils_1.Type.Optional(params_1.DerivationPath), + requiredSignaturesCount: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + invalidBefore: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + invalidHereafter: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + })); + exports2.CardanoGetNativeScriptHash = schema_utils_1.Type.Object({ + script: exports2.CardanoNativeScript, + displayFormat: constants_1.PROTO.EnumCardanoNativeScriptHashDisplayFormat, + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType) + }); + exports2.CardanoNativeScriptHash = schema_utils_1.Type.Object({ + scriptHash: schema_utils_1.Type.String() + }); + exports2.CardanoGetPublicKey = schema_utils_1.Type.Intersect([params_1.GetPublicKey, schema_utils_1.Type.Object({ + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType) + })]); + exports2.CardanoInput = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Optional(params_1.DerivationPath), + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }); + exports2.CardanoToken = schema_utils_1.Type.Object({ + assetNameBytes: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + mintAmount: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoAssetGroup = schema_utils_1.Type.Object({ + policyId: schema_utils_1.Type.String(), + tokenAmounts: schema_utils_1.Type.Array(exports2.CardanoToken) + }); + exports2.CardanoOutput = schema_utils_1.Type.Intersect([schema_utils_1.Type.Union([schema_utils_1.Type.Object({ + addressParameters: exports2.CardanoAddressParameters + }), schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String() + })]), schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.String(), + tokenBundle: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoAssetGroup)), + datumHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + format: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoTxOutputSerializationFormat), + inlineDatum: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + referenceScript: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + })]); + exports2.CardanoPoolOwner = schema_utils_1.Type.Object({ + stakingKeyPath: schema_utils_1.Type.Optional(params_1.DerivationPath), + stakingKeyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoPoolRelay = schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoPoolRelayType, + ipv4Address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ipv6Address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + port: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + hostName: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoPoolMetadata = schema_utils_1.Type.Object({ + url: schema_utils_1.Type.String(), + hash: schema_utils_1.Type.String() + }); + exports2.CardanoPoolMargin = schema_utils_1.Type.Object({ + numerator: schema_utils_1.Type.String(), + denominator: schema_utils_1.Type.String() + }); + exports2.CardanoPoolParameters = schema_utils_1.Type.Object({ + poolId: schema_utils_1.Type.String(), + vrfKeyHash: schema_utils_1.Type.String(), + pledge: schema_utils_1.Type.String(), + cost: schema_utils_1.Type.String(), + margin: exports2.CardanoPoolMargin, + rewardAccount: schema_utils_1.Type.String(), + owners: schema_utils_1.Type.Array(exports2.CardanoPoolOwner, { + minItems: 1 + }), + relays: schema_utils_1.Type.Array(exports2.CardanoPoolRelay), + metadata: schema_utils_1.Type.Optional(exports2.CardanoPoolMetadata) + }); + exports2.CardanoDRep = schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoDRepType, + keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoCertificate = schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoCertificateType, + path: schema_utils_1.Type.Optional(params_1.DerivationPath), + pool: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + poolParameters: schema_utils_1.Type.Optional(exports2.CardanoPoolParameters), + scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + deposit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + dRep: schema_utils_1.Type.Optional(exports2.CardanoDRep) + }); + exports2.CardanoWithdrawal = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Optional(params_1.DerivationPath), + amount: schema_utils_1.Type.String(), + scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoMint = schema_utils_1.Type.Array(exports2.CardanoAssetGroup); + exports2.CardanoCollateralInput = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Optional(params_1.DerivationPath), + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }); + exports2.CardanoRequiredSigner = schema_utils_1.Type.Object({ + keyPath: schema_utils_1.Type.Optional(params_1.DerivationPath), + keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoReferenceInput = schema_utils_1.Type.Object({ + prev_hash: schema_utils_1.Type.String(), + prev_index: schema_utils_1.Type.Number() + }); + exports2.CardanoCVoteRegistrationDelegation = schema_utils_1.Type.Object({ + votePublicKey: schema_utils_1.Type.String(), + weight: schema_utils_1.Type.Number() + }); + exports2.CardanoCVoteRegistrationParameters = schema_utils_1.Type.Object({ + votePublicKey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + stakingPath: params_1.DerivationPath, + paymentAddressParameters: schema_utils_1.Type.Optional(exports2.CardanoAddressParameters), + nonce: schema_utils_1.Type.String(), + format: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoCVoteRegistrationFormat), + delegations: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoCVoteRegistrationDelegation)), + votingPurpose: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + paymentAddress: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoAuxiliaryData = schema_utils_1.Type.Object({ + hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + cVoteRegistrationParameters: schema_utils_1.Type.Optional(exports2.CardanoCVoteRegistrationParameters) + }); + exports2.CardanoSignTransaction = schema_utils_1.Type.Object({ + inputs: schema_utils_1.Type.Array(exports2.CardanoInput), + outputs: schema_utils_1.Type.Array(exports2.CardanoOutput), + fee: schema_utils_1.Type.Uint(), + ttl: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + certificates: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoCertificate)), + withdrawals: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoWithdrawal)), + validityIntervalStart: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + auxiliaryData: schema_utils_1.Type.Optional(exports2.CardanoAuxiliaryData), + mint: schema_utils_1.Type.Optional(exports2.CardanoMint), + scriptDataHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + collateralInputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoCollateralInput)), + requiredSigners: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoRequiredSigner)), + collateralReturn: schema_utils_1.Type.Optional(exports2.CardanoOutput), + totalCollateral: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + referenceInputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.CardanoReferenceInput)), + additionalWitnessRequests: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(params_1.DerivationPath)), + protocolMagic: schema_utils_1.Type.Number(), + networkId: schema_utils_1.Type.Number(), + signingMode: constants_1.PROTO.EnumCardanoTxSigningMode, + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType), + includeNetworkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + tagCborSets: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.CardanoSignTransactionExtended = schema_utils_1.Type.Intersect([exports2.CardanoSignTransaction, schema_utils_1.Type.Object({ + unsignedTx: schema_utils_1.Type.Object({ + body: schema_utils_1.Type.String(), + hash: schema_utils_1.Type.String() + }), + testnet: schema_utils_1.Type.Boolean() + })]); + exports2.CardanoSignedTxWitness = schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoTxWitnessType, + pubKey: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String(), + chainCode: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoAuxiliaryDataSupplement = schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumCardanoTxAuxiliaryDataSupplementType, + auxiliaryDataHash: schema_utils_1.Type.String(), + cVoteRegistrationSignature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.CardanoSignedTxData = schema_utils_1.Type.Object({ + hash: schema_utils_1.Type.String(), + witnesses: schema_utils_1.Type.Array(exports2.CardanoSignedTxWitness), + auxiliaryDataSupplement: schema_utils_1.Type.Optional(exports2.CardanoAuxiliaryDataSupplement) + }); + exports2.CardanoSignMessage = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + payload: schema_utils_1.Type.String(), + preferHexDisplay: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + networkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + protocolMagic: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + addressParameters: schema_utils_1.Type.Optional(exports2.CardanoAddressParameters), + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType) + }); + exports2.CardanoMessageProtectedHeaders = schema_utils_1.Type.Object({ + 1: schema_utils_1.Type.Literal(constants_1.CARDANO.ALGORITHM_IDS.EdDSA), + address: schema_utils_1.Type.String() + }); + exports2.CardanoMessageUnprotectedHeaders = schema_utils_1.Type.Object({ + hashed: schema_utils_1.Type.Boolean(), + version: schema_utils_1.Type.Number() + }); + exports2.CardanoMessageHeaders = schema_utils_1.Type.Object({ + protected: exports2.CardanoMessageProtectedHeaders, + unprotected: exports2.CardanoMessageUnprotectedHeaders + }); + exports2.CardanoSignedMessage = schema_utils_1.Type.Object({ + headers: exports2.CardanoMessageHeaders, + payload: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String(), + pubKey: schema_utils_1.Type.String(), + coseSignature: schema_utils_1.Type.String(), + coseKey: schema_utils_1.Type.String() + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/bitcoin/index.js +var require_bitcoin2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/bitcoin/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.VerifyMessage = exports2.SignMessage = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.SignMessage = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + message: schema_utils_1.Type.String(), + hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + no_script_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.VerifyMessage = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String(), + message: schema_utils_1.Type.String(), + coin: schema_utils_1.Type.String(), + hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/eos/index.js +var require_eos = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/eos/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EosSignTransaction = exports2.EosSDKTransaction = exports2.EosTxAction = exports2.EosTxActionCommon = exports2.EosAuthorization = exports2.EosTxHeader = exports2.EosPublicKey = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.EosPublicKey = schema_utils_1.Type.Object({ + wifPublicKey: schema_utils_1.Type.String(), + rawPublicKey: schema_utils_1.Type.String(), + path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + serializedPath: schema_utils_1.Type.String() + }); + exports2.EosTxHeader = schema_utils_1.Type.Object({ + expiration: schema_utils_1.Type.Union([schema_utils_1.Type.Uint(), schema_utils_1.Type.String()]), + refBlockNum: schema_utils_1.Type.Number(), + refBlockPrefix: schema_utils_1.Type.Number(), + maxNetUsageWords: schema_utils_1.Type.Number(), + maxCpuUsageMs: schema_utils_1.Type.Number(), + delaySec: schema_utils_1.Type.Number() + }); + exports2.EosAuthorization = schema_utils_1.Type.Object({ + threshold: schema_utils_1.Type.Number(), + keys: schema_utils_1.Type.Array(constants_1.PROTO.EosAuthorizationKey), + accounts: schema_utils_1.Type.Array(schema_utils_1.Type.Object({ + permission: constants_1.PROTO.EosPermissionLevel, + weight: schema_utils_1.Type.Number() + })), + waits: schema_utils_1.Type.Array(constants_1.PROTO.EosAuthorizationWait) + }); + exports2.EosTxActionCommon = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + authorization: schema_utils_1.Type.Array(constants_1.PROTO.EosPermissionLevel) + }); + exports2.EosTxAction = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("transfer"), + data: schema_utils_1.Type.Object({ + from: schema_utils_1.Type.String(), + to: schema_utils_1.Type.String(), + quantity: schema_utils_1.Type.String(), + memo: schema_utils_1.Type.String() + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("delegatebw"), + data: schema_utils_1.Type.Object({ + from: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + stake_net_quantity: schema_utils_1.Type.String(), + stake_cpu_quantity: schema_utils_1.Type.String(), + transfer: schema_utils_1.Type.Boolean() + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("undelegatebw"), + data: schema_utils_1.Type.Object({ + from: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + unstake_net_quantity: schema_utils_1.Type.String(), + unstake_cpu_quantity: schema_utils_1.Type.String() + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("buyram"), + data: schema_utils_1.Type.Object({ + payer: schema_utils_1.Type.String(), + receiver: schema_utils_1.Type.String(), + quant: schema_utils_1.Type.String() + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("buyrambytes"), + data: constants_1.PROTO.EosActionBuyRamBytes + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("sellram"), + data: constants_1.PROTO.EosActionSellRam + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("voteproducer"), + data: schema_utils_1.Type.Object({ + voter: schema_utils_1.Type.String(), + proxy: schema_utils_1.Type.String(), + producers: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("refund"), + data: constants_1.PROTO.EosActionRefund + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("updateauth"), + data: schema_utils_1.Type.Object({ + account: schema_utils_1.Type.String(), + permission: schema_utils_1.Type.String(), + parent: schema_utils_1.Type.String(), + auth: exports2.EosAuthorization + }) + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("deleteauth"), + data: constants_1.PROTO.EosActionDeleteAuth + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("linkauth"), + data: constants_1.PROTO.EosActionLinkAuth + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("unlinkauth"), + data: constants_1.PROTO.EosActionUnlinkAuth + })]), schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Literal("newaccount"), + data: schema_utils_1.Type.Object({ + creator: schema_utils_1.Type.String(), + name: schema_utils_1.Type.String(), + owner: exports2.EosAuthorization, + active: exports2.EosAuthorization + }) + })])]); + exports2.EosSDKTransaction = schema_utils_1.Type.Object({ + chainId: schema_utils_1.Type.String(), + header: exports2.EosTxHeader, + actions: schema_utils_1.Type.Array(schema_utils_1.Type.Union([exports2.EosTxAction, schema_utils_1.Type.Intersect([exports2.EosTxActionCommon, schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String(), + data: schema_utils_1.Type.String() + })])])) + }); + exports2.EosSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + transaction: exports2.EosSDKTransaction, + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/ripple/index.js +var require_ripple3 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/ripple/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.RippleSignedTx = exports2.RippleSignTransaction = exports2.RippleTransaction = exports2.RipplePayment = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.RipplePayment = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.String(), + destination: schema_utils_1.Type.String(), + destinationTag: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }); + exports2.RippleTransaction = schema_utils_1.Type.Object({ + fee: schema_utils_1.Type.String(), + flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + sequence: schema_utils_1.Type.Number(), + maxLedgerVersion: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment: exports2.RipplePayment + }); + exports2.RippleSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + transaction: exports2.RippleTransaction, + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.RippleSignedTx = schema_utils_1.Type.Object({ + serializedTx: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/ethereum/index.js +var require_ethereum = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/ethereum/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EthereumVerifyMessage = exports2.EthereumSignTypedHash = exports2.EthereumSignTypedData = exports2.EthereumSignTypedDataMessage = exports2.EthereumSignTypedDataTypes = exports2.EthereumSignedTx = exports2.EthereumSignTransaction = exports2.EthereumTransactionEIP1559 = exports2.EthereumAccessList = exports2.EthereumTransaction = exports2.EthereumSignMessage = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.EthereumSignMessage = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + message: schema_utils_1.Type.String(), + hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.EthereumTransaction = schema_utils_1.Type.Object({ + to: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + value: schema_utils_1.Type.String(), + gasPrice: schema_utils_1.Type.String(), + gasLimit: schema_utils_1.Type.String(), + maxFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + maxPriorityFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + nonce: schema_utils_1.Type.String(), + data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chainId: schema_utils_1.Type.Number(), + txType: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + payment_req: schema_utils_1.Type.Optional(constants_1.PROTO.PaymentRequest) + }); + exports2.EthereumAccessList = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + storageKeys: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }); + exports2.EthereumTransactionEIP1559 = schema_utils_1.Type.Object({ + to: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]), + value: schema_utils_1.Type.String(), + gasLimit: schema_utils_1.Type.String(), + gasPrice: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + nonce: schema_utils_1.Type.String(), + data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chainId: schema_utils_1.Type.Number(), + maxFeePerGas: schema_utils_1.Type.String(), + maxPriorityFeePerGas: schema_utils_1.Type.String(), + accessList: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.EthereumAccessList)), + payment_req: schema_utils_1.Type.Optional(constants_1.PROTO.PaymentRequest) + }); + exports2.EthereumSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + transaction: schema_utils_1.Type.Union([exports2.EthereumTransaction, exports2.EthereumTransactionEIP1559]), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.EthereumSignedTx = schema_utils_1.Type.Object({ + v: schema_utils_1.Type.String(), + r: schema_utils_1.Type.String(), + s: schema_utils_1.Type.String(), + serializedTx: schema_utils_1.Type.String() + }); + var EthereumSignTypedDataTypeProperty = schema_utils_1.Type.Object({ + name: schema_utils_1.Type.String(), + type: schema_utils_1.Type.String() + }); + exports2.EthereumSignTypedDataTypes = schema_utils_1.Type.Object({ + EIP712Domain: schema_utils_1.Type.Array(EthereumSignTypedDataTypeProperty) + }, { + additionalProperties: schema_utils_1.Type.Array(EthereumSignTypedDataTypeProperty) + }); + exports2.EthereumSignTypedDataMessage = schema_utils_1.Type.Object({ + types: exports2.EthereumSignTypedDataTypes, + primaryType: schema_utils_1.Type.String(), + domain: schema_utils_1.Type.Object({ + name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chainId: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.BigInt(), schema_utils_1.Type.String()])), + verifyingContract: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + salt: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.ArrayBuffer(), schema_utils_1.Type.String()])) + }), + message: schema_utils_1.Type.Object({}, { + additionalProperties: schema_utils_1.Type.Any() + }) + }); + exports2.EthereumSignTypedData = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + data: exports2.EthereumSignTypedDataMessage, + metamask_v4_compat: schema_utils_1.Type.Boolean(), + domain_separator_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.EthereumSignTypedHash = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + data: exports2.EthereumSignTypedDataMessage, + metamask_v4_compat: schema_utils_1.Type.Boolean(), + domain_separator_hash: schema_utils_1.Type.String(), + message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.EthereumVerifyMessage = schema_utils_1.Type.Object({ + address: schema_utils_1.Type.String(), + message: schema_utils_1.Type.String(), + hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + signature: schema_utils_1.Type.String() + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/monero/index.js +var require_monero = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/monero/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MoneroSignedTransaction = exports2.MoneroRingCtSig = exports2.MoneroSignTransaction = exports2.MoneroTransactionData = exports2.MoneroTransactionRsigData = exports2.MoneroTransactionDestinationEntry = exports2.MoneroAccountPublicAddress = exports2.MoneroTransactionSourceEntry = exports2.MoneroMultisigKLRki = exports2.MoneroOutputEntry = exports2.MoneroKeyImageSyncResult = exports2.MoneroExportedKeyImage = exports2.MoneroKeyImageSync = exports2.MoneroSubAddressIndicesList = exports2.MoneroTransferDetails = exports2.MoneroWatchKey = exports2.MoneroGetWatchKey = exports2.MoneroGetAddress = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.MoneroGetAddress = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType), + account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + paymentId: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroGetAddress" + }); + exports2.MoneroGetWatchKey = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType) + }, { + $id: "MoneroGetWatchKey" + }); + exports2.MoneroWatchKey = schema_utils_1.Type.Object({ + watch_key: schema_utils_1.Type.String(), + address: schema_utils_1.Type.String() + }, { + $id: "MoneroWatchKey" + }); + exports2.MoneroTransferDetails = schema_utils_1.Type.Object({ + out_key: schema_utils_1.Type.String(), + tx_pub_key: schema_utils_1.Type.String(), + additional_tx_pub_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Array(schema_utils_1.Type.String()), schema_utils_1.Type.String()])), + internal_output_index: schema_utils_1.Type.Number(), + sub_addr_major: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + sub_addr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroTransferDetails" + }); + exports2.MoneroSubAddressIndicesList = schema_utils_1.Type.Object({ + account: schema_utils_1.Type.Number(), + minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()) + }, { + $id: "MoneroSubAddressIndicesList" + }); + exports2.MoneroKeyImageSync = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType), + subs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.MoneroSubAddressIndicesList)), + tdis: schema_utils_1.Type.Array(exports2.MoneroTransferDetails) + }, { + $id: "MoneroKeyImageSync" + }); + exports2.MoneroExportedKeyImage = schema_utils_1.Type.Object({ + iv: schema_utils_1.Type.String(), + key_image: schema_utils_1.Type.String() + }, { + $id: "MoneroExportedKeyImage" + }); + exports2.MoneroKeyImageSyncResult = schema_utils_1.Type.Object({ + key_images: schema_utils_1.Type.Array(exports2.MoneroExportedKeyImage), + signature: schema_utils_1.Type.String() + }, { + $id: "MoneroKeyImageSyncResult" + }); + exports2.MoneroOutputEntry = schema_utils_1.Type.Object({ + idx: schema_utils_1.Type.Number(), + key: schema_utils_1.Type.Object({ + dest: schema_utils_1.Type.String(), + commitment: schema_utils_1.Type.String() + }) + }, { + $id: "MoneroOutputEntry" + }); + exports2.MoneroMultisigKLRki = schema_utils_1.Type.Object({ + K: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + L: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + R: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + ki: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }, { + $id: "MoneroMultisigKLRki" + }); + exports2.MoneroTransactionSourceEntry = schema_utils_1.Type.Object({ + outputs: schema_utils_1.Type.Array(exports2.MoneroOutputEntry), + real_output: schema_utils_1.Type.Number(), + real_out_tx_key: schema_utils_1.Type.String(), + real_out_additional_tx_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + real_output_in_tx_index: schema_utils_1.Type.Number(), + amount: schema_utils_1.Type.Number(), + rct: schema_utils_1.Type.Boolean(), + mask: schema_utils_1.Type.String(), + subaddr_minor: schema_utils_1.Type.Number(), + multisig_kLRki: schema_utils_1.Type.Optional(exports2.MoneroMultisigKLRki) + }, { + $id: "MoneroTransactionSourceEntry" + }); + exports2.MoneroAccountPublicAddress = schema_utils_1.Type.Object({ + spend_public_key: schema_utils_1.Type.String(), + view_public_key: schema_utils_1.Type.String() + }); + exports2.MoneroTransactionDestinationEntry = schema_utils_1.Type.Object({ + amount: schema_utils_1.Type.Number(), + addr: exports2.MoneroAccountPublicAddress, + is_subaddress: schema_utils_1.Type.Boolean(), + original: schema_utils_1.Type.String(), + is_integrated: schema_utils_1.Type.Boolean() + }, { + $id: "MoneroTransactionDestinationEntry" + }); + exports2.MoneroTransactionRsigData = schema_utils_1.Type.Object({ + rsig_type: schema_utils_1.Type.Number(), + offload_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + grouping: schema_utils_1.Type.Array(schema_utils_1.Type.Number()), + mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rsig_parts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String())), + bp_version: schema_utils_1.Type.Number() + }, { + $id: "MoneroTransactionRsigData" + }); + exports2.MoneroTransactionData = schema_utils_1.Type.Object({ + version: schema_utils_1.Type.Number(), + payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + unlock_time: schema_utils_1.Type.Number(), + outputs: schema_utils_1.Type.Array(exports2.MoneroTransactionDestinationEntry), + change_dts: schema_utils_1.Type.Optional(exports2.MoneroTransactionDestinationEntry), + num_inputs: schema_utils_1.Type.Number(), + mixin: schema_utils_1.Type.Number(), + fee: schema_utils_1.Type.Number(), + account: schema_utils_1.Type.Number(), + rsig_data: exports2.MoneroTransactionRsigData, + minor_indices: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + integrated_indices: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + client_version: schema_utils_1.Type.Number(), + hard_fork: schema_utils_1.Type.Number(), + monero_version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }, { + $id: "MoneroTransactionData" + }); + exports2.MoneroSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + networkType: constants_1.PROTO.EnumMoneroNetworkType, + tsx_data: exports2.MoneroTransactionData, + inputs: schema_utils_1.Type.Array(exports2.MoneroTransactionSourceEntry) + }, { + $id: "MoneroSignTransaction" + }); + exports2.MoneroRingCtSig = schema_utils_1.Type.Object({ + txn_fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rv_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }, { + $id: "MoneroRingCtSig" + }); + exports2.MoneroSignedTransaction = schema_utils_1.Type.Object({ + signatures: schema_utils_1.Type.Array(schema_utils_1.Type.String()), + tx_prefix_hash: schema_utils_1.Type.String(), + rv: exports2.MoneroRingCtSig, + cout_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + rand_mult: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + tx_enc_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + opening_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + pseudo_outs: schema_utils_1.Type.Array(schema_utils_1.Type.String()) + }, { + $id: "MoneroSignedTransaction" + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/solana/index.js +var require_solana4 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/solana/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.SolanaComposedTransaction = exports2.SolanaComposeTransaction = exports2.SolanaProgramName = exports2.SolanaSignedTransaction = exports2.SolanaSignTransaction = exports2.SolanaTxAdditionalInfo = exports2.SolanaTxTokenAccountInfo = exports2.SolanaPublicKey = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.SolanaPublicKey = schema_utils_1.Type.Intersect([params_1.PublicKey, schema_utils_1.Type.Object({ + publicKey: schema_utils_1.Type.String(), + publicKeyBase58: schema_utils_1.Type.String() + })]); + exports2.SolanaTxTokenAccountInfo = schema_utils_1.Type.Object({ + baseAddress: schema_utils_1.Type.String(), + tokenProgram: schema_utils_1.Type.String(), + tokenMint: schema_utils_1.Type.String(), + tokenAccount: schema_utils_1.Type.String(), + symbol: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.SolanaTxAdditionalInfo = schema_utils_1.Type.Object({ + tokenAccountsInfos: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.SolanaTxTokenAccountInfo, { + minItems: 1 + })), + isDevnet: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.SolanaSignTransaction = schema_utils_1.Type.Object({ + path: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())]), + serializedTx: schema_utils_1.Type.String(), + additionalInfo: schema_utils_1.Type.Optional(exports2.SolanaTxAdditionalInfo), + serialize: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + exports2.SolanaSignedTransaction = schema_utils_1.Type.Object({ + signature: schema_utils_1.Type.String(), + serializedTx: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.SolanaProgramName = schema_utils_1.Type.Union([schema_utils_1.Type.Literal("spl-token"), schema_utils_1.Type.Literal("spl-token-2022")]); + var SolanaComposeTransactionCommon = { + fromAddress: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.String(), + blockHash: schema_utils_1.Type.String(), + lastValidBlockHeight: schema_utils_1.Type.Number(), + priorityFees: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({ + computeUnitPrice: schema_utils_1.Type.String(), + computeUnitLimit: schema_utils_1.Type.String() + })), + token: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({ + mint: schema_utils_1.Type.String(), + program: exports2.SolanaProgramName, + decimals: schema_utils_1.Type.Number(), + accounts: schema_utils_1.Type.Array(schema_utils_1.Type.Object({ + publicKey: schema_utils_1.Type.String(), + balance: schema_utils_1.Type.String() + })) + })), + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }; + var SolanaComposeSerializedTransaction = schema_utils_1.Type.Object({ + ...SolanaComposeTransactionCommon, + toAddress: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + serializedTx: schema_utils_1.Type.String() + }); + var SolanaComposeTransactionRaw = schema_utils_1.Type.Object({ + ...SolanaComposeTransactionCommon, + toAddress: schema_utils_1.Type.String(), + serializedTx: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()) + }); + exports2.SolanaComposeTransaction = schema_utils_1.Type.Union([SolanaComposeSerializedTransaction, SolanaComposeTransactionRaw]); + exports2.SolanaComposedTransaction = schema_utils_1.Type.Object({ + serializedTx: schema_utils_1.Type.String(), + additionalInfo: schema_utils_1.Type.Object({ + newAccountProgramName: schema_utils_1.Type.Optional(exports2.SolanaProgramName), + tokenAccountInfo: schema_utils_1.Type.Optional(exports2.SolanaTxTokenAccountInfo) + }) + }); + } +}); + +// node_modules/@trezor/connect/lib/types/api/stellar/index.js +var require_stellar3 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/stellar/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.StellarOperationMessage = exports2.StellarSignedTx = exports2.StellarSignTransaction = exports2.StellarTransaction = exports2.StellarOperation = exports2.StellarClaimClaimableBalanceOperation = exports2.StellarInflationOperation = exports2.StellarBumpSequenceOperation = exports2.StellarManageDataOperation = exports2.StellarAccountMergeOperation = exports2.StellarAllowTrustOperation = exports2.StellarChangeTrustOperation = exports2.StellarSetOptionsOperation = exports2.StellarManageBuyOfferOperation = exports2.StellarManageSellOfferOperation = exports2.StellarPassiveSellOfferOperation = exports2.StellarPathPaymentStrictSendOperation = exports2.StellarPathPaymentStrictReceiveOperation = exports2.StellarPaymentOperation = exports2.StellarCreateAccountOperation = exports2.StellarAsset = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.StellarAsset = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Union([constants_1.PROTO.EnumStellarAssetType, schema_utils_1.Type.KeyOfEnum(constants_1.PROTO.StellarAssetType)]), + code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + issuer: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.StellarCreateAccountOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("createAccount"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + destination: schema_utils_1.Type.String(), + startingBalance: schema_utils_1.Type.String() + }); + exports2.StellarPaymentOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("payment"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + destination: schema_utils_1.Type.String(), + asset: exports2.StellarAsset, + amount: schema_utils_1.Type.String() + }); + exports2.StellarPathPaymentStrictReceiveOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("pathPaymentStrictReceive"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + sendAsset: exports2.StellarAsset, + sendMax: schema_utils_1.Type.Uint(), + destination: schema_utils_1.Type.String(), + destAsset: exports2.StellarAsset, + destAmount: schema_utils_1.Type.Uint(), + path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.StellarAsset)) + }); + exports2.StellarPathPaymentStrictSendOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("pathPaymentStrictSend"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + sendAsset: exports2.StellarAsset, + sendAmount: schema_utils_1.Type.Uint(), + destination: schema_utils_1.Type.String(), + destAsset: exports2.StellarAsset, + destMin: schema_utils_1.Type.Uint(), + path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports2.StellarAsset)) + }); + exports2.StellarPassiveSellOfferOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("createPassiveSellOffer"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + buying: exports2.StellarAsset, + selling: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + price: schema_utils_1.Type.Object({ + n: schema_utils_1.Type.Number(), + d: schema_utils_1.Type.Number() + }) + }); + exports2.StellarManageSellOfferOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("manageSellOffer"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + buying: exports2.StellarAsset, + selling: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + offerId: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + price: schema_utils_1.Type.Object({ + n: schema_utils_1.Type.Number(), + d: schema_utils_1.Type.Number() + }) + }); + exports2.StellarManageBuyOfferOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("manageBuyOffer"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + buying: exports2.StellarAsset, + selling: exports2.StellarAsset, + amount: schema_utils_1.Type.Uint(), + offerId: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + price: schema_utils_1.Type.Object({ + n: schema_utils_1.Type.Number(), + d: schema_utils_1.Type.Number() + }) + }); + exports2.StellarSetOptionsOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("setOptions"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + signer: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumStellarSignerType, + key: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]), + weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + })), + inflationDest: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + clearFlags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + setFlags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + masterWeight: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + lowThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + medThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + highThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + homeDomain: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.StellarChangeTrustOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("changeTrust"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + line: exports2.StellarAsset, + limit: schema_utils_1.Type.String() + }); + exports2.StellarAllowTrustOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("allowTrust"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + trustor: schema_utils_1.Type.String(), + assetCode: schema_utils_1.Type.String(), + assetType: constants_1.PROTO.EnumStellarAssetType, + authorize: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Undefined()])) + }); + exports2.StellarAccountMergeOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("accountMerge"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + destination: schema_utils_1.Type.String() + }); + exports2.StellarManageDataOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("manageData"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + name: schema_utils_1.Type.String(), + value: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()])) + }); + exports2.StellarBumpSequenceOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("bumpSequence"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + bumpTo: schema_utils_1.Type.Uint() + }); + exports2.StellarInflationOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("inflation"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + exports2.StellarClaimClaimableBalanceOperation = schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("claimClaimableBalance"), + source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + balanceId: schema_utils_1.Type.String() + }); + exports2.StellarOperation = schema_utils_1.Type.Union([exports2.StellarCreateAccountOperation, exports2.StellarPaymentOperation, exports2.StellarPathPaymentStrictReceiveOperation, exports2.StellarPathPaymentStrictSendOperation, exports2.StellarPassiveSellOfferOperation, exports2.StellarManageSellOfferOperation, exports2.StellarManageBuyOfferOperation, exports2.StellarSetOptionsOperation, exports2.StellarChangeTrustOperation, exports2.StellarAllowTrustOperation, exports2.StellarAccountMergeOperation, exports2.StellarInflationOperation, exports2.StellarManageDataOperation, exports2.StellarBumpSequenceOperation, exports2.StellarClaimClaimableBalanceOperation]); + exports2.StellarTransaction = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Number(), + sequence: schema_utils_1.Type.Uint(), + timebounds: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({ + minTime: schema_utils_1.Type.Number(), + maxTime: schema_utils_1.Type.Number() + })), + memo: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({ + type: constants_1.PROTO.EnumStellarMemoType, + id: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()), + text: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()])) + })), + operations: schema_utils_1.Type.Array(exports2.StellarOperation) + }); + exports2.StellarSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + networkPassphrase: schema_utils_1.Type.String(), + transaction: exports2.StellarTransaction + }); + exports2.StellarSignedTx = schema_utils_1.Type.Object({ + publicKey: schema_utils_1.Type.String(), + signature: schema_utils_1.Type.String() + }); + exports2.StellarOperationMessage = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarCreateAccountOp") + }), constants_1.PROTO.StellarCreateAccountOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarPaymentOp") + }), constants_1.PROTO.StellarPaymentOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarPathPaymentStrictReceiveOp") + }), constants_1.PROTO.StellarPathPaymentStrictReceiveOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarPathPaymentStrictSendOp") + }), constants_1.PROTO.StellarPathPaymentStrictSendOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarManageSellOfferOp") + }), constants_1.PROTO.StellarManageSellOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarManageBuyOfferOp") + }), constants_1.PROTO.StellarManageBuyOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarCreatePassiveSellOfferOp") + }), constants_1.PROTO.StellarCreatePassiveSellOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarSetOptionsOp") + }), constants_1.PROTO.StellarSetOptionsOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarChangeTrustOp") + }), constants_1.PROTO.StellarChangeTrustOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarAllowTrustOp") + }), constants_1.PROTO.StellarAllowTrustOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarAccountMergeOp") + }), constants_1.PROTO.StellarAccountMergeOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarManageDataOp") + }), constants_1.PROTO.StellarManageDataOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarBumpSequenceOp") + }), constants_1.PROTO.StellarBumpSequenceOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({ + type: schema_utils_1.Type.Literal("StellarClaimClaimableBalanceOp") + }), constants_1.PROTO.StellarClaimClaimableBalanceOp])]); + } +}); + +// node_modules/@trezor/connect/lib/types/api/tezos/index.js +var require_tezos = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/tezos/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TezosSignTransaction = exports2.TezosOperation = exports2.TezosDelegationOperation = exports2.TezosOriginationOperation = exports2.TezosTransactionOperation = exports2.TezosParametersManager = exports2.TezosManagerTransfer = exports2.TezosRevealOperation = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.TezosRevealOperation = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Number(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + public_key: schema_utils_1.Type.String() + }); + exports2.TezosManagerTransfer = schema_utils_1.Type.Object({ + destination: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.Number() + }); + exports2.TezosParametersManager = schema_utils_1.Type.Object({ + set_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + cancel_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + transfer: schema_utils_1.Type.Optional(exports2.TezosManagerTransfer) + }); + exports2.TezosTransactionOperation = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + destination: schema_utils_1.Type.String(), + amount: schema_utils_1.Type.Number(), + counter: schema_utils_1.Type.Number(), + fee: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number(), + parameters: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())), + parameters_manager: schema_utils_1.Type.Optional(exports2.TezosParametersManager) + }); + exports2.TezosOriginationOperation = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + balance: schema_utils_1.Type.Number(), + delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + script: params_1.DerivationPath, + fee: schema_utils_1.Type.Number(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number() + }); + exports2.TezosDelegationOperation = schema_utils_1.Type.Object({ + source: schema_utils_1.Type.String(), + delegate: schema_utils_1.Type.String(), + fee: schema_utils_1.Type.Number(), + counter: schema_utils_1.Type.Number(), + gas_limit: schema_utils_1.Type.Number(), + storage_limit: schema_utils_1.Type.Number() + }); + exports2.TezosOperation = schema_utils_1.Type.Object({ + reveal: schema_utils_1.Type.Optional(exports2.TezosRevealOperation), + transaction: schema_utils_1.Type.Optional(exports2.TezosTransactionOperation), + origination: schema_utils_1.Type.Optional(exports2.TezosOriginationOperation), + delegation: schema_utils_1.Type.Optional(exports2.TezosDelegationOperation) + }); + exports2.TezosSignTransaction = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + branch: schema_utils_1.Type.String(), + operation: exports2.TezosOperation, + chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/types/index.js +var require_types9 = __commonJS({ + "node_modules/@trezor/connect/lib/types/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ThpPairingMethod = exports2.FirmwareType = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_api4(), exports2); + tslib_1.__exportStar(require_account2(), exports2); + tslib_1.__exportStar(require_coinInfo2(), exports2); + tslib_1.__exportStar(require_device3(), exports2); + tslib_1.__exportStar(require_fees(), exports2); + tslib_1.__exportStar(require_firmware2(), exports2); + tslib_1.__exportStar(require_params(), exports2); + tslib_1.__exportStar(require_settings2(), exports2); + tslib_1.__exportStar(require_cardano2(), exports2); + tslib_1.__exportStar(require_bitcoin2(), exports2); + tslib_1.__exportStar(require_eos(), exports2); + tslib_1.__exportStar(require_ripple3(), exports2); + tslib_1.__exportStar(require_ethereum(), exports2); + tslib_1.__exportStar(require_monero(), exports2); + tslib_1.__exportStar(require_solana4(), exports2); + tslib_1.__exportStar(require_stellar3(), exports2); + tslib_1.__exportStar(require_tezos(), exports2); + var device_utils_1 = require_lib22(); + Object.defineProperty(exports2, "FirmwareType", { + enumerable: true, + get: function() { + return device_utils_1.FirmwareType; + } + }); + var messages_1 = require_messages2(); + Object.defineProperty(exports2, "ThpPairingMethod", { + enumerable: true, + get: function() { + return messages_1.ThpPairingMethod; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainDisconnect.js +var require_blockchainDisconnect = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainDisconnect.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var types_1 = require_types9(); + var BlockchainDisconnect = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(types_1.CoinObj, payload); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity: payload.identity + }; + } + get info() { + return ""; + } + run() { + const backend = (0, BlockchainLink_1.findBackend)(this.params.coinInfo.shortcut, this.params.identity); + backend?.disconnect(); + return Promise.resolve({ + disconnected: true + }); + } + }; + exports2.default = BlockchainDisconnect; + } +}); + +// node_modules/@trezor/type-utils/lib/array.js +var require_array3 = __commonJS({ + "node_modules/@trezor/type-utils/lib/array.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/type-utils/lib/branded.js +var require_branded = __commonJS({ + "node_modules/@trezor/type-utils/lib/branded.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BrandedArity2 = exports2.Branded = void 0; + var Branded = class { + __type; + }; + exports2.Branded = Branded; + var BrandedArity2 = class { + __type1; + __type2; + }; + exports2.BrandedArity2 = BrandedArity2; + } +}); + +// node_modules/@trezor/type-utils/lib/exhaustive.js +var require_exhaustive = __commonJS({ + "node_modules/@trezor/type-utils/lib/exhaustive.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.exhaustive = void 0; + var UnreachableCaseError = class extends Error { + constructor(val, message) { + super(`${message}: [${JSON.stringify(val)}]`); + } + }; + var exhaustive = (unhandledCase, message = "Unreachable case") => { + throw new UnreachableCaseError(unhandledCase, message); + }; + exports2.exhaustive = exhaustive; + } +}); + +// node_modules/@trezor/type-utils/lib/object.js +var require_object4 = __commonJS({ + "node_modules/@trezor/type-utils/lib/object.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/type-utils/lib/overloads.js +var require_overloads = __commonJS({ + "node_modules/@trezor/type-utils/lib/overloads.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/type-utils/lib/result.js +var require_result3 = __commonJS({ + "node_modules/@trezor/type-utils/lib/result.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.err = void 0; + exports2.ok = ok; + function ok(value = void 0) { + return { + ok: true, + value + }; + } + var err2 = (error) => ({ + ok: false, + error + }); + exports2.err = err2; + } +}); + +// node_modules/@trezor/type-utils/lib/timeout.js +var require_timeout = __commonJS({ + "node_modules/@trezor/type-utils/lib/timeout.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/type-utils/lib/utils.js +var require_utils28 = __commonJS({ + "node_modules/@trezor/type-utils/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/type-utils/lib/index.js +var require_lib23 = __commonJS({ + "node_modules/@trezor/type-utils/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_array3(), exports2); + tslib_1.__exportStar(require_branded(), exports2); + tslib_1.__exportStar(require_exhaustive(), exports2); + tslib_1.__exportStar(require_object4(), exports2); + tslib_1.__exportStar(require_overloads(), exports2); + tslib_1.__exportStar(require_result3(), exports2); + tslib_1.__exportStar(require_timeout(), exports2); + tslib_1.__exportStar(require_utils28(), exports2); + } +}); + +// node_modules/@trezor/connect/lib/backend/fees/MiscFeeLevels.js +var require_MiscFeeLevels = __commonJS({ + "node_modules/@trezor/connect/lib/backend/fees/MiscFeeLevels.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.MiscFeeLevels = void 0; + var bigNumber_1 = require_bigNumber(); + var cloneObject_1 = require_cloneObject(); + var MiscFeeLevels = class { + coinInfo; + levels; + wasFetchedSuccessfully = false; + constructor(coinInfo) { + this.coinInfo = coinInfo; + this.levels = (0, cloneObject_1.cloneObject)(coinInfo.defaultFees); + } + async load(blockchain, request) { + try { + const [response] = await blockchain.estimateFee(request); + const fee = new bigNumber_1.BigNumber(response.feePerUnit).toNumber(); + const feePerUnit = Math.min(this.coinInfo.maxFee, Math.max(this.coinInfo.minFee, fee)).toString(); + this.levels[0] = { + ...this.levels[0], + ...response, + feePerUnit + }; + this.wasFetchedSuccessfully = true; + } catch { + } + return this.levels; + } + }; + exports2.MiscFeeLevels = MiscFeeLevels; + } +}); + +// node_modules/@trezor/connect/lib/backend/fees/BitcoinFeeLevels.js +var require_BitcoinFeeLevels = __commonJS({ + "node_modules/@trezor/connect/lib/backend/fees/BitcoinFeeLevels.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.BitcoinFeeLevels = void 0; + var bigNumber_1 = require_bigNumber(); + var MiscFeeLevels_1 = require_MiscFeeLevels(); + var defaultFeeLevels_1 = require_defaultFeeLevels(); + var BitcoinFeeLevels = class extends MiscFeeLevels_1.MiscFeeLevels { + coinInfo; + longTermFeeRate; + constructor(coinInfo) { + super(coinInfo); + this.coinInfo = coinInfo; + this.longTermFeeRate = defaultFeeLevels_1.DEFAULT_BITCOIN_LONGTERM_FEE_RATE; + } + async load(blockchain) { + try { + const { + minFee, + maxFee + } = this.coinInfo; + const blocks = this.levels.map((level) => level.blocks).filter((b) => b > 0); + const response = await blockchain.estimateFee({ + blocks + }); + response.forEach(({ + feePerUnit: feePerKB + }, index) => { + const feePerB = new bigNumber_1.BigNumber(feePerKB).div(1e3).toNumber(); + if (isNaN(feePerB) || feePerB < 0) return; + const trimmedFeePerUnit = Math.min(maxFee, Math.max(minFee, feePerB)); + this.levels[index].feePerUnit = trimmedFeePerUnit.toString(); + }); + this.wasFetchedSuccessfully = true; + } catch { + } + return this.levels; + } + updateBitcoinCustomFee(feePerUnit) { + this.levels = this.levels.filter((l) => l.label !== "custom"); + this.levels.push({ + label: "custom", + feePerUnit, + blocks: -1 + }); + } + }; + exports2.BitcoinFeeLevels = BitcoinFeeLevels; + } +}); + +// node_modules/@trezor/connect/lib/backend/fees/EthereumFeeLevels.js +var require_EthereumFeeLevels = __commonJS({ + "node_modules/@trezor/connect/lib/backend/fees/EthereumFeeLevels.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EthereumFeeLevels = void 0; + var bigNumber_1 = require_bigNumber(); + var MiscFeeLevels_1 = require_MiscFeeLevels(); + var EthereumFeeLevels = class extends MiscFeeLevels_1.MiscFeeLevels { + coinInfo; + constructor(coinInfo) { + super(coinInfo); + this.coinInfo = coinInfo; + } + async load(blockchain, request) { + try { + const [response] = await blockchain.estimateFee(request); + const { + eip1559 + } = response; + const maxFeeInWei = new bigNumber_1.BigNumber(this.coinInfo.maxFee).multipliedBy("1e+9").toNumber(); + const minFeeInWei = new bigNumber_1.BigNumber(this.coinInfo.minFee).multipliedBy("1e+9").toNumber(); + const feeInWei = new bigNumber_1.BigNumber(response.feePerUnit).toNumber(); + const feePerUnit = Math.min(maxFeeInWei, Math.max(minFeeInWei, feeInWei)).toString(); + if (eip1559?.baseFeePerGas) { + const minMaxPriorityFeePerGas = new bigNumber_1.BigNumber(this.coinInfo.minPriorityFee).multipliedBy("1e+9").toNumber(); + const levels = ["low", "medium", "high"].map((levelKey) => { + const level = eip1559[levelKey]; + const label = levelKey === "medium" ? "normal" : levelKey; + if (!level?.maxFeePerGas || !level?.maxPriorityFeePerGas) { + return null; + } + const maxFeePerGas = bigNumber_1.BigNumber.max(this.coinInfo.minFee, level.maxFeePerGas, minMaxPriorityFeePerGas).toString(); + const maxPriorityFeePerGas = bigNumber_1.BigNumber.max(minMaxPriorityFeePerGas, bigNumber_1.BigNumber.min(maxFeePerGas, level.maxPriorityFeePerGas)).toString(); + return { + label, + feePerUnit, + feeLimit: response.feeLimit, + blocks: Math.ceil(Math.max(1, (level?.maxWaitTimeEstimate || 0) / 1e3 / this.coinInfo.blockTime)), + baseFeePerGas: eip1559.baseFeePerGas, + maxFeePerGas, + maxPriorityFeePerGas + }; + }); + this.levels = levels.filter((level) => level); + } else { + this.levels[0] = { + ...this.levels[0], + ...response, + feePerUnit + }; + } + this.wasFetchedSuccessfully = true; + } catch { + } + return this.levels; + } + }; + exports2.EthereumFeeLevels = EthereumFeeLevels; + } +}); + +// node_modules/@trezor/connect/lib/backend/fees/index.js +var require_fees2 = __commonJS({ + "node_modules/@trezor/connect/lib/backend/fees/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getOrInitBitcoinFeeLevels = exports2.getOrInitFeeLevels = void 0; + var type_utils_1 = require_lib23(); + var BitcoinFeeLevels_1 = require_BitcoinFeeLevels(); + var EthereumFeeLevels_1 = require_EthereumFeeLevels(); + var MiscFeeLevels_1 = require_MiscFeeLevels(); + var instancesPerCoin = {}; + var feeLevelsPerTypeFactory = (coinInfo) => { + const { + type + } = coinInfo; + switch (type) { + case "bitcoin": + return new BitcoinFeeLevels_1.BitcoinFeeLevels(coinInfo); + case "ethereum": + return new EthereumFeeLevels_1.EthereumFeeLevels(coinInfo); + case "misc": + case "nem": + return new MiscFeeLevels_1.MiscFeeLevels(coinInfo); + default: + return (0, type_utils_1.exhaustive)(type); + } + }; + var getOrInitFeeLevels = (coinInfo) => { + const { + shortcut + } = coinInfo; + if (!Object.prototype.hasOwnProperty.call(instancesPerCoin, shortcut)) { + instancesPerCoin[shortcut] = feeLevelsPerTypeFactory(coinInfo); + } + return instancesPerCoin[shortcut]; + }; + exports2.getOrInitFeeLevels = getOrInitFeeLevels; + var getOrInitBitcoinFeeLevels = (coinInfo) => (0, exports2.getOrInitFeeLevels)(coinInfo); + exports2.getOrInitBitcoinFeeLevels = getOrInitBitcoinFeeLevels; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainEstimateFee.js +var require_blockchainEstimateFee = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainEstimateFee.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var fees_1 = require_fees2(); + var coinInfo_1 = require_coinInfo(); + var BlockchainEstimateFee = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "request", + type: "object" + }]); + const { + request, + identity + } = payload; + if (request) { + (0, paramsValidator_1.validateParams)(request, [{ + name: "blocks", + type: "array" + }, { + name: "specific", + type: "object" + }, { + name: "feeLevels", + type: "string" + }]); + if (request.specific) { + (0, paramsValidator_1.validateParams)(request.specific, [{ + name: "conservative", + type: "boolean" + }, { + name: "data", + type: "string" + }, { + name: "from", + type: "string" + }, { + name: "to", + type: "string" + }, { + name: "txsize", + type: "number" + }, { + name: "newAccountProgramName", + type: "string" + }]); + } + } + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity, + request + }; + } + async run() { + const { + coinInfo, + identity, + request + } = this.params; + const feeInfo = { + blockTime: coinInfo.blockTime, + minFee: coinInfo.minFee, + maxFee: coinInfo.maxFee, + minPriorityFee: coinInfo.minPriorityFee, + dustLimit: coinInfo.type === "bitcoin" ? coinInfo.dustLimit : void 0, + levels: [] + }; + if (request?.feeLevels) { + const feeLevelsInstance = (0, fees_1.getOrInitFeeLevels)(coinInfo); + if (request.feeLevels === "smart") { + const backend = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity); + await feeLevelsInstance.load(backend, request); + } + feeInfo.levels = feeLevelsInstance.levels; + } else { + const backend = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity); + feeInfo.levels = await backend.estimateFee(request || {}); + } + return feeInfo; + } + }; + exports2.default = BlockchainEstimateFee; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainGetAccountBalanceHistory.js +var require_blockchainGetAccountBalanceHistory = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainGetAccountBalanceHistory.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainGetAccountBalanceHistory = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "descriptor", + type: "string", + required: true + }, { + name: "from", + type: "number" + }, { + name: "to", + type: "number" + }, { + name: "groupBy", + type: "number" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity: payload.identity, + request: { + descriptor: payload.descriptor, + from: payload.from, + to: payload.to, + groupBy: payload.groupBy + } + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.getAccountBalanceHistory(this.params.request); + } + }; + exports2.default = BlockchainGetAccountBalanceHistory; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainGetCurrentFiatRates.js +var require_blockchainGetCurrentFiatRates = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainGetCurrentFiatRates.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainGetCurrentFiatRates = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "currencies", + type: "array", + required: false + }, { + name: "token", + type: "string" + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + currencies: payload.currencies, + token: payload.token, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.getCurrentFiatRates({ + currencies: this.params.currencies, + token: this.params.token + }); + } + }; + exports2.default = BlockchainGetCurrentFiatRates; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainGetInfo.js +var require_blockchainGetInfo = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainGetInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainGetInfo = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.getNetworkInfo(); + } + }; + exports2.default = BlockchainGetInfo; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainEvmRpcCall.js +var require_blockchainEvmRpcCall = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainEvmRpcCall.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var BlockchainEvmRpcCall = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "from", + type: "string" + }, { + name: "to", + type: "string", + required: true + }, { + name: "data", + type: "string", + required: true + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity: payload.identity, + request: { + from: payload.from, + to: payload.to, + data: payload.data + } + }; + } + get info() { + return "Blockchain Evm Rpc Call"; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + const response = await backend.rpcCall(this.params.request); + return response; + } + }; + exports2.default = BlockchainEvmRpcCall; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainGetFiatRatesForTimestamps.js +var require_blockchainGetFiatRatesForTimestamps = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainGetFiatRatesForTimestamps.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainGetFiatRatesForTimestamps = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "currencies", + type: "array", + required: false + }, { + name: "timestamps", + type: "array", + required: true + }, { + name: "token", + type: "string" + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + currencies: payload.currencies, + timestamps: payload.timestamps, + token: payload.token, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.getFiatRatesForTimestamps({ + currencies: this.params.currencies, + timestamps: this.params.timestamps, + token: this.params.token + }); + } + }; + exports2.default = BlockchainGetFiatRatesForTimestamps; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainGetTransactions.js +var require_blockchainGetTransactions = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainGetTransactions.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainGetTransactions = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "txs", + type: "array", + required: true + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + txs: payload.txs, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.getTransactions(this.params.txs); + } + }; + exports2.default = BlockchainGetTransactions; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainSetCustomBackend.js +var require_blockchainSetCustomBackend = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainSetCustomBackend.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainSetCustomBackend = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "blockchainLink", + type: "object" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.setCustomBackend)(coinInfo, payload.blockchainLink); + this.params = { + coinInfo + }; + } + get info() { + return ""; + } + async run() { + await (0, BlockchainLink_1.reconnectAllBackends)(this.params.coinInfo); + return true; + } + }; + exports2.default = BlockchainSetCustomBackend; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainSubscribe.js +var require_blockchainSubscribe = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainSubscribe.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainSubscribe = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "accounts", + type: "array", + allowEmpty: true + }, { + name: "blocks", + type: "boolean" + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + if (payload.accounts) { + payload.accounts.forEach((account) => { + (0, paramsValidator_1.validateParams)(account, [{ + name: "descriptor", + type: "string", + required: true + }]); + }); + } + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + accounts: payload.accounts, + blocks: payload.blocks ?? true, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + const { + blocks, + accounts + } = this.params; + let result = { + subscribed: false + }; + if (blocks) result = await backend.subscribeBlocks(); + if (accounts) result = await backend.subscribeAccounts(accounts); + return result; + } + }; + exports2.default = BlockchainSubscribe; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainSubscribeFiatRates.js +var require_blockchainSubscribeFiatRates = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainSubscribeFiatRates.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainSubscribeFiatRates = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "currency", + type: "string", + required: false + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + currency: payload.currency, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.subscribeFiatRates(this.params.currency); + } + }; + exports2.default = BlockchainSubscribeFiatRates; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainUnsubscribe.js +var require_blockchainUnsubscribe = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainUnsubscribe.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainUnsubscribe = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "accounts", + type: "array", + allowEmpty: true + }, { + name: "blocks", + type: "boolean" + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + if (payload.accounts) { + payload.accounts.forEach((account) => { + (0, paramsValidator_1.validateParams)(account, [{ + name: "descriptor", + type: "string", + required: true + }]); + }); + } + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + accounts: payload.accounts, + coinInfo, + identity: payload.identity, + blocks: payload.blocks ?? false + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + const { + accounts + } = this.params; + if (this.params.blocks) { + return backend.unsubscribeBlocks(); + } + if (accounts) { + return backend.unsubscribeAccounts(accounts); + } + return backend.unsubscribeAll(); + } + }; + exports2.default = BlockchainUnsubscribe; + } +}); + +// node_modules/@trezor/connect/lib/api/blockchainUnsubscribeFiatRates.js +var require_blockchainUnsubscribeFiatRates = __commonJS({ + "node_modules/@trezor/connect/lib/api/blockchainUnsubscribeFiatRates.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var coinInfo_1 = require_coinInfo(); + var BlockchainUnsubscribeFiatRates = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.params = { + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + return backend.unsubscribeFiatRates(); + } + }; + exports2.default = BlockchainUnsubscribeFiatRates; + } +}); + +// node_modules/@trezor/connect/lib/types/api/changeLanguage.js +var require_changeLanguage = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/changeLanguage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ChangeLanguage = void 0; + var schema_utils_1 = require_lib2(); + exports2.ChangeLanguage = schema_utils_1.Type.Union([schema_utils_1.Type.Object({ + binary: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + language: schema_utils_1.Type.String(), + baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }), schema_utils_1.Type.Object({ + binary: schema_utils_1.Type.ArrayBuffer(), + language: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()) + })]); + } +}); + +// node_modules/@trezor/connect/lib/api/changeLanguage.js +var require_changeLanguage2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/changeLanguage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var changeLanguage_1 = require_changeLanguage(); + var ChangeLanguage = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.useEmptyPassphrase = true; + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useDeviceState = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(changeLanguage_1.ChangeLanguage, payload); + this.params = payload; + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "confirm", + label: "Proceed" + }, + label: "Do you want to change language?" + }; + } + run() { + const { + language, + binary + } = this.params; + if (binary) { + return this.device.changeLanguage({ + binary + }); + } else { + return this.device.changeLanguage({ + language + }); + } + } + }; + exports2.default = ChangeLanguage; + } +}); + +// node_modules/@trezor/connect/lib/api/changePin.js +var require_changePin = __commonJS({ + "node_modules/@trezor/connect/lib/api/changePin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var ChangePin = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.ChangePin, payload); + this.params = { + remove: payload.remove + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("ChangePin", "Success", this.params); + return response.message; + } + }; + exports2.default = ChangePin; + } +}); + +// node_modules/@trezor/connect/lib/api/changeWipeCode.js +var require_changeWipeCode = __commonJS({ + "node_modules/@trezor/connect/lib/api/changeWipeCode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var ChangeWipeCode = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useDeviceState = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "remove", + type: "boolean" + }]); + this.params = { + remove: payload.remove + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("ChangeWipeCode", "Success", this.params); + return response.message; + } + }; + exports2.default = ChangeWipeCode; + } +}); + +// node_modules/@trezor/connect/lib/types/api/cipherKeyValue.js +var require_cipherKeyValue = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/cipherKeyValue.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CipherKeyValue = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.CipherKeyValue = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + key: schema_utils_1.Type.String(), + value: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]), + encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + askOnEncrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + askOnDecrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + iv: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()])) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/cipherKeyValue.js +var require_cipherKeyValue2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/cipherKeyValue.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var cipherKeyValue_1 = require_cipherKeyValue(); + var params_1 = require_params(); + var pathUtils_1 = require_pathUtils(); + var CipherKeyValue = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read", "write"]; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + this.useEmptyPassphrase = typeof payload.useEmptyPassphrase === "boolean" ? payload.useEmptyPassphrase : true; + (0, schema_utils_1.Assert)((0, params_1.Bundle)(cipherKeyValue_1.CipherKeyValue), payload); + this.params = payload.bundle.map((batch) => ({ + address_n: (0, pathUtils_1.validatePath)(batch.path), + key: batch.key, + value: batch.value instanceof Buffer ? batch.value.toString("hex") : batch.value, + encrypt: batch.encrypt, + ask_on_encrypt: batch.askOnEncrypt, + ask_on_decrypt: batch.askOnDecrypt, + iv: batch.iv instanceof Buffer ? batch.iv.toString("hex") : batch.iv + })); + } + get info() { + return "Cipher key value"; + } + async run() { + const responses = []; + const cmd = this.device.getCommands(); + for (let i = 0; i < this.params.length; i++) { + const response = await cmd.typedCall("CipherKeyValue", "CipheredKeyValue", this.params[i]); + responses.push(response.message); + if (this.hasBundle) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress: i, + response + })); + } + } + return this.hasBundle ? responses : responses[0]; + } + }; + exports2.default = CipherKeyValue; + } +}); + +// node_modules/@trezor/connect/lib/api/evoluGetNode.js +var require_evoluGetNode = __commonJS({ + "node_modules/@trezor/connect/lib/api/evoluGetNode.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var EvoluGetNode = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluGetNode, payload); + this.params = { + proof_of_delegated_identity: payload.proof_of_delegated_identity + }; + } + get info() { + return "Evolu get node"; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("EvoluGetNode", "EvoluNode", this.params); + return response.message; + } + }; + exports2.default = EvoluGetNode; + } +}); + +// node_modules/@trezor/connect/lib/api/evoluSignRegistrationRequest.js +var require_evoluSignRegistrationRequest = __commonJS({ + "node_modules/@trezor/connect/lib/api/evoluSignRegistrationRequest.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var EvoluSignRegistrationRequest = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluSignRegistrationRequest, payload); + this.params = { + challenge_from_server: payload.challenge_from_server, + size_to_acquire: payload.size_to_acquire, + proof_of_delegated_identity: payload.proof_of_delegated_identity + }; + } + get info() { + return "Evolu sign registration request"; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("EvoluSignRegistrationRequest", "EvoluRegistrationRequest", this.params); + return response.message; + } + }; + exports2.default = EvoluSignRegistrationRequest; + } +}); + +// node_modules/@trezor/connect/lib/api/evoluGetDelegatedIdentityKey.js +var require_evoluGetDelegatedIdentityKey = __commonJS({ + "node_modules/@trezor/connect/lib/api/evoluGetDelegatedIdentityKey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var protocol_1 = require_lib6(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var EvoluGetDelegatedIdentityKey = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluGetDelegatedIdentityKey, payload); + if (payload.thp !== void 0) { + const staticKey = Buffer.from(payload.thp.staticHostKey, "hex"); + const hostStaticKeys = protocol_1.thp.getCurve25519KeyPair(staticKey); + this.params = { + thp_credential: payload.thp.credential, + host_static_public_key: hostStaticKeys.publicKey.toString("hex") + }; + } else { + this.params = {}; + } + } + get info() { + return "Evolu get delegated identity key"; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("EvoluGetDelegatedIdentityKey", "EvoluDelegatedIdentityKey", this.params); + return response.message; + } + }; + exports2.default = EvoluGetDelegatedIdentityKey; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/createPendingTx.js +var require_createPendingTx = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/createPendingTx.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createPendingTransaction = void 0; + var bigNumber_1 = require_bigNumber(); + var pathUtils_1 = require_pathUtils(); + var createPendingTransaction = (tx, { + addresses, + inputs, + outputs + }) => { + const valueOut = outputs.reduce((sum, out) => (0, bigNumber_1.BigNumber)(sum).plus(out.amount), new bigNumber_1.BigNumber("0")); + const valueIn = inputs.reduce((sum, ins) => (0, bigNumber_1.BigNumber)(sum).plus(ins.amount), new bigNumber_1.BigNumber("0")); + const allAddresses = addresses.unused.concat(addresses.used, addresses.change); + const findAddress = ({ + address_n + }) => { + const path2 = address_n ? (0, pathUtils_1.getSerializedPath)(address_n) : void 0; + return allAddresses.filter((address) => address.path === path2).map((address) => address.address); + }; + return { + txid: tx.getId(), + hex: tx.toHex(), + blockHeight: 0, + blockTime: Math.floor(Date.now() / 1e3), + confirmations: 0, + vsize: tx.virtualSize(), + size: tx.weight(), + value: valueOut.toString(), + valueIn: valueIn.toString(), + fees: valueIn.minus(valueOut).toString(), + vin: inputs.map((ins, n) => ({ + n, + txid: ins.prev_hash, + vout: ins.prev_index, + isAddress: true, + addresses: findAddress(ins), + value: ins.amount.toString(), + sequence: ins.sequence + })), + vout: outputs.map((out, n) => { + let transformedAddresses = []; + if (out.address) { + transformedAddresses = [out.address]; + } else if ("op_return_data" in out) { + transformedAddresses = [`OP_RETURN (${Buffer.from(out.op_return_data, "hex").toString("ascii")})`]; + } else { + transformedAddresses = findAddress(out); + } + return { + n, + isAddress: out.script_type !== "PAYTOOPRETURN", + addresses: transformedAddresses, + value: out.amount.toString() + }; + }) + }; + }; + exports2.createPendingTransaction = createPendingTransaction; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/enhanceSignTx.js +var require_enhanceSignTx = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/enhanceSignTx.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.enhanceSignTx = void 0; + var BlockchainLink_1 = require_BlockchainLink(); + var enhanceSignTx = (options, coinInfo) => { + if (coinInfo.shortcut === "ZEC" || coinInfo.shortcut === "TAZ") { + if (typeof options.overwintered !== "boolean") { + options.overwintered = true; + } + if (typeof options.version !== "number") { + options.version = 5; + } + if (typeof options.version_group_id !== "number") { + options.version_group_id = 648488714; + } + if (typeof options.branch_id !== "number") { + const backend = (0, BlockchainLink_1.findBackend)(coinInfo.shortcut); + if (backend && backend.serverInfo?.consensusBranchId) { + options.branch_id = backend.serverInfo.consensusBranchId; + } else { + options.branch_id = 3268858036; + } + } + } + if (coinInfo.shortcut === "KMD") { + if (typeof options.overwintered !== "boolean") { + options.overwintered = true; + } + if (typeof options.version !== "number") { + options.version = 4; + } + if (typeof options.version_group_id !== "number") { + options.version_group_id = 2301567109; + } + if (typeof options.branch_id !== "number") { + options.branch_id = 1991772603; + } + } + if (coinInfo.shortcut === "KOTO") { + if (typeof options.overwintered !== "boolean") { + options.overwintered = true; + } + if (typeof options.version !== "number") { + options.version = 4; + } + if (typeof options.version_group_id !== "number") { + options.version_group_id = 2301567109; + } + if (typeof options.branch_id !== "number") { + options.branch_id = 733220448; + } + } + if (coinInfo.shortcut === "PPC" || coinInfo.shortcut === "tPPC") { + if (typeof options.timestamp !== "number") { + options.timestamp = Math.round((/* @__PURE__ */ new Date()).getTime() / 1e3); + } + } + return options; + }; + exports2.enhanceSignTx = enhanceSignTx; + } +}); + +// node_modules/@trezor/connect/lib/utils/hdnodeUtils.js +var require_hdnodeUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/hdnodeUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.convertMultisigPubKey = exports2.xpubToHDNodeType = exports2.convertXpub = void 0; + exports2.xpubDerive = xpubDerive; + var utxo_lib_1 = require_lib18(); + var constants_1 = require_constants(); + var pubNode2bjsNode = (node, network) => { + const chainCode = Buffer.from(node.chain_code, "hex"); + const publicKey = Buffer.from(node.public_key, "hex"); + const res = utxo_lib_1.bip32.fromPublicKey(publicKey, chainCode, network); + res.__DEPTH = node.depth; + res.__INDEX = node.child_num; + res.__PARENT_FINGERPRINT = node.fingerprint; + return res; + }; + var convertXpub = (xpub, originalNetwork, requestedNetwork) => { + const node = utxo_lib_1.bip32.fromBase58(xpub, originalNetwork); + if (requestedNetwork) { + node.network = requestedNetwork; + } + return node.toBase58(); + }; + exports2.convertXpub = convertXpub; + var pubKey2bjsNode = (key, network) => { + const keyNode = key.node; + const bjsNode = pubNode2bjsNode(keyNode, network); + const bjsXpub = bjsNode.toBase58(); + const keyXpub = (0, exports2.convertXpub)(key.xpub, network); + if (bjsXpub !== keyXpub) { + throw constants_1.ERRORS.TypedError("Runtime", `pubKey2bjsNode: Invalid public key transmission detected. Key: ${bjsXpub}, Received: ${keyXpub}`); + } + return bjsNode; + }; + var checkDerivation = (parBjsNode, childBjsNode, suffix) => { + const derivedChildBjsNode = parBjsNode.derive(suffix); + const derivedXpub = derivedChildBjsNode.toBase58(); + const compXpub = childBjsNode.toBase58(); + if (derivedXpub !== compXpub) { + throw constants_1.ERRORS.TypedError("Runtime", `checkDerivation: Invalid child cross-check public key. Derived: ${derivedXpub}, Received: ${compXpub}`); + } + }; + function xpubDerive(xpub, childXPub, suffix, network, _requestedNetwork) { + const resNode = pubKey2bjsNode(xpub, network); + const childNode = pubKey2bjsNode(childXPub, network); + checkDerivation(resNode, childNode, suffix); + return xpub; + } + var xpubToHDNodeType = (xpub, network) => { + const hd = utxo_lib_1.bip32.fromBase58(xpub, network); + return { + depth: hd.depth, + child_num: hd.index, + fingerprint: hd.parentFingerprint, + public_key: hd.publicKey.toString("hex"), + chain_code: hd.chainCode.toString("hex") + }; + }; + exports2.xpubToHDNodeType = xpubToHDNodeType; + var convertMultisigPubKey = (network, utxo) => { + if ("multisig" in utxo && utxo.multisig?.pubkeys) { + utxo.multisig.pubkeys.forEach((pk) => { + if (typeof pk.node === "string") { + pk.node = (0, exports2.xpubToHDNodeType)(pk.node, network); + } + }); + } + return utxo; + }; + exports2.convertMultisigPubKey = convertMultisigPubKey; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/inputs.js +var require_inputs = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/inputs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.inputToTrezor = exports2.enhanceTrezorInputs = exports2.validateTrezorInputs = void 0; + var hdnodeUtils_1 = require_hdnodeUtils(); + var pathUtils_1 = require_pathUtils(); + var paramsValidator_1 = require_paramsValidator(); + var validateTrezorInputs = (inputs, coinInfo) => inputs.map((i) => (0, pathUtils_1.fixPath)(i)).map((i) => (0, hdnodeUtils_1.convertMultisigPubKey)(coinInfo.network, i)).map((input) => { + const useAmount = input.script_type === "EXTERNAL" || (0, pathUtils_1.isSegwitPath)(input.address_n); + (0, paramsValidator_1.validateParams)(input, [{ + name: "prev_hash", + type: "string", + required: true + }, { + name: "prev_index", + type: "number", + required: true + }, { + name: "amount", + type: "uint", + required: useAmount + }, { + name: "script_type", + type: "string" + }, { + name: "sequence", + type: "number" + }, { + name: "multisig", + type: "object" + }, { + name: "coinjoin_flags", + type: "number" + }]); + if (input.script_type === "EXTERNAL") { + (0, paramsValidator_1.validateParams)(input, [{ + name: "script_pubkey", + type: "string", + required: true + }, { + name: "commitment_data", + type: "string" + }, { + name: "ownership_proof", + type: "string" + }, { + name: "script_sig", + type: "string" + }, { + name: "witness", + type: "string" + }]); + } else { + (0, pathUtils_1.validatePath)(input.address_n); + } + return input; + }); + exports2.validateTrezorInputs = validateTrezorInputs; + var enhanceTrezorInputs = (inputs, rawTxs) => { + inputs.forEach((input) => { + if (!input.amount) { + console.warn("TrezorConnect.signTransaction deprecation: missing input amount."); + const refTx = rawTxs.find((t) => t.getId() === input.prev_hash); + if (refTx && refTx.outs[input.prev_index]) { + input.amount = refTx.outs[input.prev_index].value; + } + } + }); + }; + exports2.enhanceTrezorInputs = enhanceTrezorInputs; + var inputToTrezor = (input, sequence = 4294967295) => { + const address_n = (0, pathUtils_1.getHDPath)(input.path); + return { + address_n, + prev_index: input.vout, + prev_hash: input.txid, + script_type: (0, pathUtils_1.getScriptType)(address_n), + amount: input.amount, + sequence + }; + }; + exports2.inputToTrezor = inputToTrezor; + } +}); + +// node_modules/@trezor/connect/lib/utils/addressUtils.js +var require_addressUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/addressUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isValidAddress = void 0; + var utxo_lib_1 = require_lib18(); + var isValidBase58Address = (address, network) => { + try { + const decoded = utxo_lib_1.address.fromBase58Check(address, network); + if (decoded.version !== network.pubKeyHash && decoded.version !== network.scriptHash) { + return false; + } + } catch { + return false; + } + return true; + }; + var isValidBech32Address = (address, network) => { + try { + const decoded = utxo_lib_1.address.fromBech32(address); + if (decoded.prefix !== network.bech32) { + return false; + } + } catch { + return false; + } + return true; + }; + var isValidAddress = (address, coinInfo) => isValidBase58Address(address, coinInfo.network) || isValidBech32Address(address, coinInfo.network); + exports2.isValidAddress = isValidAddress; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/outputs.js +var require_outputs = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/outputs.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.outputToTrezor = exports2.validateHDOutput = exports2.validateTrezorOutputs = void 0; + var constants_1 = require_constants(); + var addressUtils_1 = require_addressUtils(); + var hdnodeUtils_1 = require_hdnodeUtils(); + var pathUtils_1 = require_pathUtils(); + var paramsValidator_1 = require_paramsValidator(); + var validateTrezorOutputs = (outputs, coinInfo) => { + const trezorOutputs = outputs.map((o) => (0, pathUtils_1.fixPath)(o)).map((o) => (0, hdnodeUtils_1.convertMultisigPubKey)(coinInfo.network, o)); + trezorOutputs.forEach((output) => { + (0, paramsValidator_1.validateParams)(output, [{ + name: "address_n", + type: "array" + }, { + name: "address", + type: "string" + }, { + name: "amount", + type: "uint" + }, { + name: "op_return_data", + type: "string" + }, { + name: "multisig", + type: "object" + }]); + if (Object.prototype.hasOwnProperty.call(output, "address_n") && Object.prototype.hasOwnProperty.call(output, "address")) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "Cannot use address and address_n in one output"); + } + if (output.address_n && !output.script_type) { + output.script_type = (0, pathUtils_1.getOutputScriptType)(output.address_n); + } + if ("address" in output && typeof output.address === "string" && !(0, addressUtils_1.isValidAddress)(output.address, coinInfo)) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", `Invalid ${coinInfo.label} output address ${output.address}`); + } + }); + return trezorOutputs; + }; + exports2.validateTrezorOutputs = validateTrezorOutputs; + var validateHDOutput = (output, coinInfo) => { + const validateAddress = (address) => { + if (!address || !(0, addressUtils_1.isValidAddress)(address, coinInfo)) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", `Invalid ${coinInfo.label} output address format`); + } + }; + switch (output.type) { + case "opreturn": + (0, paramsValidator_1.validateParams)(output, [{ + name: "dataHex", + type: "string" + }]); + return { + type: "opreturn", + dataHex: output.dataHex + }; + case "send-max": + (0, paramsValidator_1.validateParams)(output, [{ + name: "address", + type: "string", + required: true + }]); + validateAddress(output.address); + return { + type: "send-max", + address: output.address + }; + case "payment-noaddress": + (0, paramsValidator_1.validateParams)(output, [{ + name: "amount", + type: "uint", + required: true + }]); + return { + type: "payment-noaddress", + amount: output.amount + }; + case "send-max-noaddress": + return { + type: "send-max-noaddress" + }; + default: + (0, paramsValidator_1.validateParams)(output, [{ + name: "amount", + type: "uint", + required: true + }, { + name: "address", + type: "string", + required: true + }]); + validateAddress(output.address); + return { + type: "payment", + address: output.address, + amount: output.amount + }; + } + }; + exports2.validateHDOutput = validateHDOutput; + var outputToTrezor = (output) => { + if (output.type === "opreturn") { + return { + amount: "0", + op_return_data: output.dataHex, + script_type: "PAYTOOPRETURN" + }; + } + if (output.type === "change") { + const address_n = (0, pathUtils_1.getHDPath)(output.path); + return { + address_n, + amount: output.amount, + script_type: (0, pathUtils_1.getOutputScriptType)(address_n) + }; + } + return { + address: output.address, + amount: output.amount, + script_type: "PAYTOADDRESS" + }; + }; + exports2.outputToTrezor = outputToTrezor; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/refTx.js +var require_refTx = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/refTx.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateReferencedTransactions = exports2.transformReferencedTransactions = exports2.transformReferencedTransaction = exports2.transformOrigTransactions = exports2.parseTransactionHexes = exports2.getOrigTransactions = exports2.getReferencedTransactions = exports2.requireReferencedTransactions = void 0; + var schema_utils_1 = require_lib2(); + var utils_1 = require_lib(); + var utxo_lib_1 = require_lib18(); + var constants_1 = require_constants(); + var errors_1 = require_errors(); + var pathUtils_1 = require_pathUtils(); + var requireReferencedTransactions = (inputs, options = {}, coinInfo) => { + if (coinInfo?.shortcut === "ZEC" || coinInfo?.shortcut === "TAZ") { + return !(options.version && options.version >= 5); + } + const inputTypes = ["SPENDTAPROOT", "EXTERNAL"]; + return !!inputs.find((input) => !inputTypes.find((t) => t === input.script_type)); + }; + exports2.requireReferencedTransactions = requireReferencedTransactions; + var getReferencedTransactions = (inputs) => { + const result = []; + inputs.forEach((input) => { + if (input.prev_hash && !result.includes(input.prev_hash)) { + result.push(input.prev_hash); + } + }); + return result; + }; + exports2.getReferencedTransactions = getReferencedTransactions; + var getOrigTransactions = (inputs, outputs) => { + const result = []; + inputs.forEach((input) => { + if (input.orig_hash && !result.includes(input.orig_hash)) { + result.push(input.orig_hash); + } + }); + outputs.forEach((output) => { + if (output.orig_hash && !result.includes(output.orig_hash)) { + result.push(output.orig_hash); + } + }); + return result; + }; + exports2.getOrigTransactions = getOrigTransactions; + var parseTransactionHexes = (network) => (hexes2) => hexes2.map((hex) => utxo_lib_1.Transaction.fromHex(hex, { + network + })); + exports2.parseTransactionHexes = parseTransactionHexes; + var enhanceTransaction = (refTx, srcTx) => { + const extraData = srcTx.getExtraData(); + if (extraData) { + refTx.extra_data = extraData.toString("hex"); + } + const specific = srcTx.getSpecificData(); + if (specific) { + if (specific.type === "zcash" && specific.versionGroupId && refTx.version >= 3) { + refTx.version_group_id = specific.versionGroupId; + } + if (specific.type === "dash" && srcTx.type && srcTx.version >= 3) { + refTx.version |= srcTx.type << 16; + } + } + return refTx; + }; + var parseOutputScript = (output, network) => { + try { + const address = utxo_lib_1.address.fromOutputScript(output, network); + return { + type: "address", + address + }; + } catch { + try { + const { + data + } = utxo_lib_1.payments.embed({ + output + }, { + validate: true + }); + return { + type: "data", + data + }; + } catch { + return { + type: "unknown" + }; + } + } + }; + var transformOrigTransaction = (tx, coinInfo, currentInputs, addresses) => { + const inputsMap = (input, i) => { + const prev_hash = utils_1.bufferUtils.reverseBuffer(input.hash).toString("hex"); + const currentInput = currentInputs.find((inp) => inp.prev_hash === prev_hash && inp.prev_index === input.index); + if (!currentInput?.address_n) { + throw (0, errors_1.TypedError)("Method_InvalidParameter", `transformOrigTransactions: invalid input at ${tx.getId()} [${i}]`); + } + return { + address_n: currentInput.address_n, + prev_hash, + prev_index: input.index, + script_sig: input.script.toString("hex"), + sequence: input.sequence, + script_type: (0, pathUtils_1.getScriptType)(currentInput.address_n), + multisig: void 0, + amount: currentInput.amount, + decred_tree: void 0, + witness: tx.getWitness(i)?.toString("hex"), + ownership_proof: void 0, + commitment_data: void 0 + }; + }; + const outputsMap = (output, i) => { + const parsed = parseOutputScript(output.script, coinInfo.network); + switch (parsed.type) { + case "data": { + const op_return_data = parsed.data?.shift()?.toString("hex"); + if (typeof op_return_data !== "string") { + throw (0, errors_1.TypedError)("Method_InvalidParameter", `transformOrigTransactions: invalid op_return_data at ${tx.getId()} [${i}]`); + } + return { + script_type: "PAYTOOPRETURN", + amount: "0", + op_return_data + }; + } + case "address": { + const { + address + } = parsed; + const changeAddress = addresses.change.find((addr) => addr.address === address); + const address_n = changeAddress && (0, pathUtils_1.getHDPath)(changeAddress.path); + const amount = output.value.toString(); + return address_n ? { + address_n, + amount, + script_type: (0, pathUtils_1.getOutputScriptType)(address_n) + } : { + address, + amount, + script_type: "PAYTOADDRESS" + }; + } + case "unknown": + default: + throw (0, errors_1.TypedError)("Method_InvalidParameter", `transformOrigTransactions: invalid output at ${tx.getId()} [${i}]`); + } + }; + const refTx = { + version: tx.version, + hash: tx.getId(), + inputs: tx.ins.map(inputsMap), + outputs: tx.outs.map(outputsMap), + lock_time: tx.locktime, + timestamp: tx.timestamp, + expiry: tx.expiry + }; + return enhanceTransaction(refTx, tx); + }; + var transformOrigTransactions = (txs, coinInfo, currentInputs, addresses) => txs.map((tx) => transformOrigTransaction(tx, coinInfo, currentInputs, addresses)); + exports2.transformOrigTransactions = transformOrigTransactions; + var transformReferencedTransaction = (tx) => { + const inputsMap = (input) => ({ + prev_index: input.index, + sequence: input.sequence, + prev_hash: utils_1.bufferUtils.reverseBuffer(input.hash).toString("hex"), + script_sig: input.script.toString("hex") + }); + const binOutputsMap = (output) => ({ + amount: output.value.toString(), + script_pubkey: output.script.toString("hex") + }); + const refTx = { + version: tx.version, + hash: tx.getId(), + inputs: tx.ins.map(inputsMap), + bin_outputs: tx.outs.map(binOutputsMap), + lock_time: tx.locktime, + timestamp: tx.timestamp, + expiry: tx.expiry + }; + return enhanceTransaction(refTx, tx); + }; + exports2.transformReferencedTransaction = transformReferencedTransaction; + var transformReferencedTransactions = (txs) => txs.map(exports2.transformReferencedTransaction); + exports2.transformReferencedTransactions = transformReferencedTransactions; + var validateReferencedTransactions = ({ + transactions, + inputs, + outputs, + addresses, + coinInfo + }) => { + if (!Array.isArray(transactions) || transactions.length === 0) return; + const refTxs = (0, exports2.requireReferencedTransactions)(inputs) ? (0, exports2.getReferencedTransactions)(inputs) : []; + const origTxs = (0, exports2.getOrigTransactions)(inputs, outputs); + const transformedTxs = transactions.map((tx) => { + if ("details" in tx) { + if (!tx.hex) throw (0, errors_1.TypedError)("Method_InvalidParameter", `refTx: hex for ${tx.txid} not provided`); + const srcTx = utxo_lib_1.Transaction.fromHex(tx.hex, { + network: coinInfo.network + }); + if (origTxs.includes(tx.txid)) { + if (!addresses) throw (0, errors_1.TypedError)("Method_InvalidParameter", `refTx: addresses for ${tx.txid} not provided`); + return transformOrigTransaction(srcTx, coinInfo, inputs, addresses); + } + return (0, exports2.transformReferencedTransaction)(srcTx); + } + (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({ + hash: schema_utils_1.Type.String(), + version: schema_utils_1.Type.Number(), + lock_time: schema_utils_1.Type.Number(), + extra_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()), + version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()) + }), tx); + if (origTxs.includes(tx.hash)) { + (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({ + inputs: schema_utils_1.Type.Array(constants_1.PROTO.TxInput, { + minItems: 1 + }), + outputs: schema_utils_1.Type.Array(constants_1.PROTO.TxOutputType, { + minItems: 1 + }) + }), tx); + return tx; + } + (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({ + inputs: schema_utils_1.Type.Array(constants_1.PROTO.PrevInput, { + minItems: 1 + }), + bin_outputs: schema_utils_1.Type.Array(constants_1.PROTO.TxOutputBinType, { + minItems: 1 + }) + }), tx); + return { + hash: tx.hash, + version: tx.version, + extra_data: tx.extra_data, + lock_time: tx.lock_time, + timestamp: tx.timestamp, + version_group_id: tx.version_group_id, + expiry: tx.expiry, + inputs: tx.inputs.map((input) => ({ + prev_hash: input.prev_hash, + prev_index: input.prev_index, + script_sig: input.script_sig, + sequence: input.sequence, + decred_tree: input.decred_tree + })), + bin_outputs: tx.bin_outputs.map((output) => ({ + amount: output.amount, + script_pubkey: output.script_pubkey, + decred_script_version: output.decred_script_version + })) + }; + }); + refTxs.concat(origTxs).forEach((hash) => { + if (!transformedTxs.find((tx) => tx.hash === hash)) { + throw (0, errors_1.TypedError)("Method_InvalidParameter", `refTx: ${hash} not provided`); + } + }); + return transformedTxs; + }; + exports2.validateReferencedTransactions = validateReferencedTransactions; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/signtx.js +var require_signtx = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/signtx.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.signTx = void 0; + var constants_1 = require_constants(); + var requestPrevTxInfo = ({ + typedCall, + txRequest: { + request_type, + details + }, + refTxs + }) => { + const { + tx_hash + } = details; + if (!tx_hash) { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: unknown details.tx_hash"); + } + const tx = refTxs[tx_hash.toLowerCase()]; + if (!tx) { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`); + } + if (request_type === "TXINPUT") { + if (!tx.bin_outputs) throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown TXINPUT: ${tx_hash}`); + return typedCall("TxAckPrevInput", "TxRequest", { + tx: { + input: tx.inputs[details.request_index] + } + }); + } + if (request_type === "TXOUTPUT") { + if (!tx.bin_outputs) throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown TXOUTPUT: ${tx_hash}`); + return typedCall("TxAckPrevOutput", "TxRequest", { + tx: { + output: tx.bin_outputs[details.request_index] + } + }); + } + if (request_type === "TXORIGINPUT") { + if (!tx.outputs) throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown TXORIGINPUT: ${tx_hash}`); + return typedCall("TxAckInput", "TxRequest", { + tx: { + input: tx.inputs[details.request_index] + } + }); + } + if (request_type === "TXORIGOUTPUT") { + if (!tx.outputs) throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown TXORIGOUTPUT: ${tx_hash}`); + return typedCall("TxAckOutput", "TxRequest", { + tx: { + output: tx.outputs[details.request_index] + } + }); + } + if (request_type === "TXEXTRADATA") { + if (typeof details.extra_data_len !== "number") { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: Missing extra_data_len"); + } + if (typeof details.extra_data_offset !== "number") { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: Missing extra_data_offset"); + } + if (typeof tx.extra_data !== "string") { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: No extra data for transaction ${tx.hash}`); + } + const data = tx.extra_data; + const dataLen = details.extra_data_len; + const dataOffset = details.extra_data_offset; + const extra_data_chunk = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2); + return typedCall("TxAckPrevExtraData", "TxRequest", { + tx: { + extra_data_chunk + } + }); + } + if (request_type === "TXMETA") { + const data = tx.extra_data; + const meta = { + version: tx.version, + lock_time: tx.lock_time, + inputs_count: tx.inputs.length, + outputs_count: tx.outputs ? tx.outputs.length : tx.bin_outputs.length, + timestamp: tx.timestamp, + version_group_id: tx.version_group_id, + expiry: tx.expiry, + branch_id: tx.branch_id, + extra_data_len: data ? data.length / 2 : void 0 + }; + return typedCall("TxAckPrevMeta", "TxRequest", { + tx: meta + }); + } + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Unknown request type: ${request_type}`); + }; + var requestSignedTxInfo = ({ + typedCall, + txRequest: { + request_type, + details + }, + inputs, + outputs, + paymentRequests + }) => { + if (request_type === "TXINPUT") { + return typedCall("TxAckInput", "TxRequest", { + tx: { + input: inputs[details.request_index] + } + }); + } + if (request_type === "TXOUTPUT") { + return typedCall("TxAckOutput", "TxRequest", { + tx: { + output: outputs[details.request_index] + } + }); + } + if (request_type === "TXPAYMENTREQ") { + const req = paymentRequests[details.request_index]; + if (!req) { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown payment request at ${details.request_index}`); + } + return typedCall("PaymentRequest", "TxRequest", { + nonce: req.nonce, + recipient_name: req.recipient_name, + memos: req.memos, + amount: req.amount, + signature: req.signature + }); + } + if (request_type === "TXMETA") { + throw constants_1.ERRORS.TypedError("Runtime", "requestSignedTxInfo: Cannot read TXMETA from signed transaction"); + } + if (request_type === "TXEXTRADATA") { + throw constants_1.ERRORS.TypedError("Runtime", "requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction"); + } + throw constants_1.ERRORS.TypedError("Runtime", `requestSignedTxInfo: Unknown request type: ${request_type}`); + }; + var requestTxAck = (props) => { + const { + tx_hash + } = props.txRequest.details; + if (tx_hash) { + return requestPrevTxInfo(props); + } + return requestSignedTxInfo(props); + }; + var saveTxSignatures = (txRequest, serializedTx, signatures) => { + const { + signature_index, + signature, + serialized_tx + } = txRequest; + if (serialized_tx) { + serializedTx.push(serialized_tx); + } + if (typeof signature_index === "number") { + if (!signature) { + throw constants_1.ERRORS.TypedError("Runtime", "saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature."); + } + signatures[signature_index] = signature; + } + }; + var processTxRequest = async (props) => { + const { + txRequest, + serializedTx, + signatures + } = props; + if (txRequest.serialized) saveTxSignatures(txRequest.serialized, serializedTx, signatures); + if (txRequest.request_type === "TXFINISHED") { + return Promise.resolve({ + signatures, + serializedTx: serializedTx.join("") + }); + } + const { + message + } = await requestTxAck(props); + return processTxRequest({ + ...props, + txRequest: message + }); + }; + var signTx = async ({ + typedCall, + inputs, + outputs, + paymentRequests, + refTxs, + options, + coinInfo + }) => { + const { + message + } = await typedCall("SignTx", "TxRequest", { + ...options, + version: options.version === void 0 && coinInfo.isBitcoin ? 1 : options.version, + inputs_count: inputs.length, + outputs_count: outputs.length, + coin_name: coinInfo.name + }); + return processTxRequest({ + typedCall, + txRequest: message, + refTxs: refTxs.reduce((record, tx) => ({ + ...record, + [tx.hash.toLowerCase()]: tx + }), {}), + inputs, + outputs, + paymentRequests: paymentRequests || [], + serializedTx: [], + signatures: [] + }); + }; + exports2.signTx = signTx; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/signtxLegacy.js +var require_signtxLegacy = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/signtxLegacy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.signTxLegacy = void 0; + var constants_1 = require_constants(); + var requestPrevTxInfo = ({ + txRequest: { + request_type, + details + }, + refTxs + }) => { + const { + tx_hash + } = details; + if (!tx_hash) { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: unknown details.tx_hash"); + } + const tx = refTxs[tx_hash.toLowerCase()]; + if (!tx) { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`); + } + if (!tx.bin_outputs) { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: bin_outputs not set tx: ${tx_hash}`); + } + if (request_type === "TXINPUT") { + return { + inputs: [tx.inputs[details.request_index]] + }; + } + if (request_type === "TXOUTPUT") { + return { + bin_outputs: [tx.bin_outputs[details.request_index]] + }; + } + if (request_type === "TXEXTRADATA") { + if (typeof details.extra_data_len !== "number") { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: Missing extra_data_len"); + } + if (typeof details.extra_data_offset !== "number") { + throw constants_1.ERRORS.TypedError("Runtime", "requestPrevTxInfo: Missing extra_data_offset"); + } + if (typeof tx.extra_data !== "string") { + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: No extra data for transaction ${tx.hash}`); + } + const data = tx.extra_data; + const dataLen = details.extra_data_len; + const dataOffset = details.extra_data_offset; + const extra_data = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2); + return { + extra_data + }; + } + if (request_type === "TXMETA") { + const data = tx.extra_data; + const meta = { + version: tx.version, + lock_time: tx.lock_time, + inputs_cnt: tx.inputs.length, + outputs_cnt: tx.bin_outputs.length, + timestamp: tx.timestamp, + version_group_id: tx.version_group_id, + expiry: tx.expiry, + branch_id: tx.branch_id + }; + if (typeof data === "string" && data.length !== 0) { + return { + ...meta, + extra_data_len: data.length / 2 + }; + } + return meta; + } + throw constants_1.ERRORS.TypedError("Runtime", `requestPrevTxInfo: Unknown request type: ${request_type}`); + }; + var requestSignedTxInfo = ({ + txRequest: { + request_type, + details + }, + inputs, + outputs + }) => { + if (request_type === "TXINPUT") { + return { + inputs: [inputs[details.request_index]] + }; + } + if (request_type === "TXOUTPUT") { + return { + outputs: [outputs[details.request_index]] + }; + } + if (request_type === "TXMETA") { + throw constants_1.ERRORS.TypedError("Runtime", "requestSignedTxInfo: Cannot read TXMETA from signed transaction"); + } + if (request_type === "TXEXTRADATA") { + throw constants_1.ERRORS.TypedError("Runtime", "requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction"); + } + throw constants_1.ERRORS.TypedError("Runtime", `requestSignedTxInfo: Unknown request type: ${request_type}`); + }; + var requestTxAck = (props) => { + const { + tx_hash + } = props.txRequest.details; + if (tx_hash) { + return requestPrevTxInfo(props); + } + return requestSignedTxInfo(props); + }; + var saveTxSignatures = (txRequest, serializedTx, signatures) => { + if (!txRequest) return; + const { + signature_index, + signature, + serialized_tx + } = txRequest; + if (serialized_tx) { + serializedTx.push(serialized_tx); + } + if (typeof signature_index === "number") { + if (!signature) { + throw constants_1.ERRORS.TypedError("Runtime", "saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature."); + } + signatures[signature_index] = signature; + } + }; + var processTxRequest = async (props) => { + const { + typedCall, + txRequest, + serializedTx, + signatures + } = props; + if (txRequest.serialized) saveTxSignatures(txRequest.serialized, serializedTx, signatures); + if (txRequest.request_type === "TXFINISHED") { + return Promise.resolve({ + signatures, + serializedTx: serializedTx.join("") + }); + } + const txAck = requestTxAck(props); + const { + message + } = await typedCall("TxAck", "TxRequest", { + tx: txAck + }); + return processTxRequest({ + ...props, + txRequest: message + }); + }; + var signTxLegacy = async ({ + typedCall, + inputs, + outputs, + refTxs, + options, + coinInfo + }) => { + const { + message + } = await typedCall("SignTx", "TxRequest", { + ...options, + version: options.version === void 0 && coinInfo.isBitcoin ? 1 : options.version, + inputs_count: inputs.length, + outputs_count: outputs.length, + coin_name: coinInfo.name + }); + return processTxRequest({ + typedCall, + txRequest: message, + refTxs: refTxs.reduce((record, tx) => ({ + ...record, + [tx.hash.toLowerCase()]: tx + }), {}), + inputs, + outputs, + paymentRequests: [], + serializedTx: [], + signatures: [] + }); + }; + exports2.signTxLegacy = signTxLegacy; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/signtxVerify.js +var require_signtxVerify = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/signtxVerify.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.verifyTx = exports2.deriveOutputScript = void 0; + var utxo_lib_1 = require_lib18(); + var constants_1 = require_constants(); + var derivePubKeyHash = async (getHDNode, address_n, network) => { + if (address_n.length === 5) { + const response2 = await getHDNode(address_n.slice(0, 4)); + const node = utxo_lib_1.bip32.fromBase58(response2.xpub, network); + return node.derive(address_n[address_n.length - 1]); + } + const response = await getHDNode(address_n); + return utxo_lib_1.bip32.fromBase58(response.xpub, network); + }; + var deriveOutputScript = async (getHDNode, output, network) => { + if ("multisig" in output) return; + if ("op_return_data" in output) { + return utxo_lib_1.payments.embed({ + data: [Buffer.from(output.op_return_data, "hex")] + }).output; + } + if (output.address) { + return utxo_lib_1.address.toOutputScript(output.address, network); + } + if (!output.address_n) { + throw constants_1.ERRORS.TypedError("Runtime", "deriveOutputScript: Neither address or address_n is set"); + } + const node = await derivePubKeyHash(getHDNode, output.address_n, network); + const payment = { + hash: node.identifier, + network + }; + if (output.script_type === "PAYTOADDRESS") { + return utxo_lib_1.payments.p2pkh(payment).output; + } + if (output.script_type === "PAYTOSCRIPTHASH") { + return utxo_lib_1.payments.p2sh(payment).output; + } + if (output.script_type === "PAYTOP2SHWITNESS") { + return utxo_lib_1.payments.p2sh({ + redeem: utxo_lib_1.payments.p2wpkh(payment) + }).output; + } + if (output.script_type === "PAYTOWITNESS") { + return utxo_lib_1.payments.p2wpkh(payment).output; + } + if (output.script_type === "PAYTOTAPROOT") { + return utxo_lib_1.payments.p2tr({ + pubkey: node.publicKey, + network + }).output; + } + if (output.script_type === "PAYTOMULTISIG") { + throw constants_1.ERRORS.TypedError("Runtime", `deriveOutputScript: script_type PAYTOMULTISIG not expected without multisig defined`); + } + throw constants_1.ERRORS.TypedError("Runtime", `deriveOutputScript: Unknown script type ${output.script_type}`); + }; + exports2.deriveOutputScript = deriveOutputScript; + var verifyTx = (serializedTx, params) => { + const { + inputs, + outputs, + outputScripts, + network + } = params; + const bitcoinTx = utxo_lib_1.Transaction.fromHex(serializedTx, { + network + }); + if (inputs.length !== bitcoinTx.ins.length) { + throw constants_1.ERRORS.TypedError("Runtime", "verifyTx: Signed transaction inputs invalid length"); + } + if (outputs.length !== bitcoinTx.outs.length) { + throw constants_1.ERRORS.TypedError("Runtime", "verifyTx: Signed transaction outputs invalid length"); + } + outputs.forEach((output, i) => { + if (output.amount) { + if (output.amount.toString() !== bitcoinTx.outs[i].value) { + throw constants_1.ERRORS.TypedError("Runtime", `verifyTx: Wrong output amount at output ${i}. Requested: ${output.amount}, signed: ${bitcoinTx.outs[i].value}`); + } + } + }); + for (let i = 0; i < outputs.length; i++) { + const scriptB = bitcoinTx.outs[i].script; + const scriptA = outputScripts[i]; + if (scriptA && scriptA.compare(scriptB) !== 0) { + throw constants_1.ERRORS.TypedError("Runtime", `verifyTx: Output ${i} scripts differ`); + } + } + return bitcoinTx; + }; + exports2.verifyTx = verifyTx; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/TransactionComposer.js +var require_TransactionComposer = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/TransactionComposer.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransactionComposer = void 0; + var bigNumber_1 = require_bigNumber(); + var utxo_lib_1 = require_lib18(); + var fees_1 = require_fees2(); + var TransactionComposer = class { + account; + utxos; + outputs; + coinInfo; + blockHeight = 0; + baseFee; + sortingStrategy; + feeLevels; + composed = {}; + constructor(options) { + this.account = options.account; + this.outputs = options.outputs; + this.coinInfo = options.coinInfo; + this.blockHeight = 0; + this.baseFee = options.baseFee || 0; + this.sortingStrategy = options.sortingStrategy; + this.feeLevels = (0, fees_1.getOrInitBitcoinFeeLevels)(options.coinInfo); + const { + addresses + } = options.account; + const allAddresses = !addresses ? [] : addresses.used.concat(addresses.unused).concat(addresses.change).map((a) => a.address); + this.utxos = options.utxos.flatMap((u) => { + if (!u.required && new bigNumber_1.BigNumber(u.amount).lte(this.coinInfo.dustLimit)) return []; + return { + ...u, + coinbase: typeof u.coinbase === "boolean" ? u.coinbase : false, + own: allAddresses.indexOf(u.address) >= 0 + }; + }); + } + async init(blockchain) { + const { + blockHeight + } = await blockchain.getNetworkInfo(); + this.blockHeight = blockHeight; + if (!this.feeLevels.wasFetchedSuccessfully) { + await this.feeLevels.load(blockchain); + } + } + composeAllFeeLevels() { + const { + levels + } = this.feeLevels; + if (this.utxos.length < 1) return false; + this.composed = {}; + let atLeastOneValid = false; + levels.forEach((level) => { + if (level.feePerUnit !== "0") { + const tx = this.compose(level.feePerUnit); + if (tx.type === "final") { + atLeastOneValid = true; + } + this.composed[level.label] = tx; + } + }); + if (!atLeastOneValid) { + const lastLevel = levels[levels.length - 1]; + let lastFee = new bigNumber_1.BigNumber(lastLevel.feePerUnit); + while (lastFee.gt(this.coinInfo.minFee) && this.composed.custom === void 0) { + lastFee = lastFee.minus(1); + const tx = this.compose(lastFee.toString()); + if (tx.type === "final") { + this.feeLevels.updateBitcoinCustomFee(lastFee.toString()); + this.composed.custom = tx; + return true; + } + } + return false; + } + return true; + } + composeCustomFee(fee) { + const tx = this.compose(fee); + this.composed.custom = tx; + if (tx.type === "final") { + this.feeLevels.updateBitcoinCustomFee(tx.feePerByte); + } else { + this.feeLevels.updateBitcoinCustomFee(fee); + } + } + getFeeLevelList() { + const list = []; + const { + levels + } = this.feeLevels; + levels.forEach((level) => { + const tx = this.composed[level.label]; + if (tx && tx.type === "final") { + list.push({ + name: level.label, + fee: tx.fee, + feePerByte: level.feePerUnit, + blocks: level.blocks, + minutes: level.blocks * this.coinInfo.blockTime, + total: tx.totalSpent + }); + } else { + list.push({ + name: level.label, + fee: "0", + disabled: true + }); + } + }); + return list; + } + compose(feeRate) { + const { + account, + coinInfo, + baseFee + } = this; + const { + addresses + } = account; + if (!addresses) return { + type: "error", + error: "ADDRESSES-NOT-SET" + }; + const changeAddress = addresses.change.find((a) => !a.transfers) || addresses.change[addresses.change.length - 1]; + return (0, utxo_lib_1.composeTx)({ + txType: account.type, + utxos: this.utxos, + outputs: this.outputs, + feeRate, + longTermFeeRate: this.feeLevels.longTermFeeRate, + sortingStrategy: this.sortingStrategy, + network: coinInfo.network, + changeAddress, + dustThreshold: coinInfo.dustLimit, + baseFee + }); + } + dispose() { + } + }; + exports2.TransactionComposer = TransactionComposer; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/index.js +var require_bitcoin3 = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_createPendingTx(), exports2); + tslib_1.__exportStar(require_enhanceSignTx(), exports2); + tslib_1.__exportStar(require_inputs(), exports2); + tslib_1.__exportStar(require_outputs(), exports2); + tslib_1.__exportStar(require_refTx(), exports2); + tslib_1.__exportStar(require_signtx(), exports2); + tslib_1.__exportStar(require_signtxLegacy(), exports2); + tslib_1.__exportStar(require_signtxVerify(), exports2); + tslib_1.__exportStar(require_TransactionComposer(), exports2); + } +}); + +// node_modules/@trezor/connect/lib/utils/accountUtils.js +var require_accountUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/accountUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isUtxoBased = exports2.getPublicKeyLabel = exports2.getAccountLabel = exports2.getAccountAddressN = void 0; + var pathUtils_1 = require_pathUtils(); + var constants_1 = require_constants(); + var coinInfo_1 = require_coinInfo(); + var getAccountAddressN = (coinInfo, accountIndex, bip44) => { + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + const index = typeof accountIndex === "number" ? accountIndex : 0; + const options = { + purpose: 44, + coinType: coinInfo.slip44, + ...bip44 + }; + if (coinInfo.type === "bitcoin") { + return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index)]; + } + if (coinInfo.shortcut === "ADA" || coinInfo.shortcut === "tADA") { + return [(0, pathUtils_1.toHardened)(1852), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index)]; + } + if (coinInfo.type === "ethereum") { + return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(0), 0, index]; + } + if (coinInfo.shortcut === "tXRP") { + return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(144), (0, pathUtils_1.toHardened)(index), 0, 0]; + } + return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index), 0, 0]; + }; + exports2.getAccountAddressN = getAccountAddressN; + var getAccountLabel = (path2, coinInfo) => { + if (coinInfo.type === "bitcoin") { + const accountType = (0, pathUtils_1.fromHardened)(path2[0]); + const account2 = (0, pathUtils_1.fromHardened)(path2[2]); + let prefix = ""; + if (accountType === 48) { + prefix = "multisig"; + } else if (accountType === 49 && coinInfo.segwit) { + prefix = "segwit"; + } else if (accountType === 44 && coinInfo.segwit) { + prefix = "legacy"; + } + return `${prefix} account #${account2 + 1}`; + } + const account = (0, pathUtils_1.fromHardened)(path2[4]); + return `account #${account + 1}`; + }; + exports2.getAccountLabel = getAccountLabel; + var getPublicKeyLabel = (path2, coinInfo) => { + let hasSegwit = false; + let coinLabel = "Unknown coin"; + if (coinInfo) { + coinLabel = coinInfo.label; + hasSegwit = coinInfo.segwit; + } else { + coinLabel = (0, coinInfo_1.getCoinName)(path2); + } + const p1 = (0, pathUtils_1.fromHardened)(path2[0]); + let account = path2.length >= 3 ? (0, pathUtils_1.fromHardened)(path2[2]) : -1; + let realAccountId = account + 1; + let prefix = "Export public key"; + let accountType = ""; + if (p1 === 45342) { + const p2 = (0, pathUtils_1.fromHardened)(path2[1]); + account = (0, pathUtils_1.fromHardened)(path2[3]); + realAccountId = account + 1; + prefix = "Export Copay ID of"; + if (p2 === 48) { + accountType = "multisig"; + } else if (p2 === 44) { + accountType = "legacy"; + } + } else if (p1 === 48) { + accountType = `${coinLabel} multisig`; + } else if (p1 === 44 && hasSegwit) { + accountType = `${coinLabel} legacy`; + } else if (p1 === 84 && hasSegwit) { + accountType = `${coinLabel} native segwit`; + } else { + accountType = coinLabel; + } + if (realAccountId > 0) { + return `${prefix} of ${accountType} account #${realAccountId}`; + } + return prefix; + }; + exports2.getPublicKeyLabel = getPublicKeyLabel; + var isUtxoBased = (coinInfo) => coinInfo.type === "bitcoin" || coinInfo.shortcut === "ADA" || coinInfo.shortcut === "tADA"; + exports2.isUtxoBased = isUtxoBased; + } +}); + +// node_modules/@trezor/connect/lib/utils/formatUtils.js +var require_formatUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/formatUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.deepTransform = exports2.hexToText = exports2.messageToHex = exports2.isHexString = exports2.addHexPrefix = exports2.stripHexPrefix = exports2.hasHexPrefix = exports2.formatTime = exports2.formatAmount = void 0; + var bigNumber_1 = require_bigNumber(); + var formatAmount = (n, coinInfo) => `${new bigNumber_1.BigNumber(n).div(10 ** coinInfo.decimals).toString(10)} ${coinInfo.shortcut}`; + exports2.formatAmount = formatAmount; + var formatTime = (n) => { + if (!n || n <= 0) return "No time estimate"; + const hours = Math.floor(n / 60); + const minutes = n % 60; + let res = ""; + if (hours !== 0) { + res += `${hours} hour`; + if (hours > 1) { + res += "s"; + } + res += " "; + } + if (minutes !== 0) { + res += `${minutes} minutes`; + } + return res; + }; + exports2.formatTime = formatTime; + var hasHexPrefix = (str) => str.slice(0, 2).toLowerCase() === "0x"; + exports2.hasHexPrefix = hasHexPrefix; + var stripHexPrefix = (str) => (0, exports2.hasHexPrefix)(str) ? str.slice(2) : str; + exports2.stripHexPrefix = stripHexPrefix; + var addHexPrefix = (str) => str !== void 0 && !(0, exports2.hasHexPrefix)(str) ? `0x${str}` : str; + exports2.addHexPrefix = addHexPrefix; + var isHexString = (value, length) => { + if (typeof value !== "string" || !value.match(/^(0x|0X)?[0-9A-Fa-f]*$/)) { + return false; + } + if (length && value.length !== 2 + 2 * length) { + return false; + } + return true; + }; + exports2.isHexString = isHexString; + var messageToHex = (message) => { + let buffer; + if ((0, exports2.isHexString)(message)) { + let clean2 = (0, exports2.stripHexPrefix)(message); + if (clean2.length % 2 !== 0) { + clean2 = `0${clean2}`; + } + buffer = Buffer.from(clean2, "hex"); + } else { + buffer = Buffer.from(message); + } + return buffer.toString("hex"); + }; + exports2.messageToHex = messageToHex; + var hexToText = (hex) => { + const clean2 = (0, exports2.messageToHex)(hex); + const text = Buffer.from(clean2, "hex").toString("utf8"); + if (/[\uFFFD]/.test(text)) return hex; + return text; + }; + exports2.hexToText = hexToText; + var deepTransform = (transform) => { + const recursion = (value) => { + if (typeof value === "string") { + return transform(value); + } + if (Array.isArray(value)) { + return value.map(recursion); + } + if (value && typeof value === "object") { + return Object.entries(value).reduce((obj, [k, v]) => ({ + ...obj, + [k]: recursion(v) + }), {}); + } + return value; + }; + return recursion; + }; + exports2.deepTransform = deepTransform; + } +}); + +// node_modules/@trezor/connect/lib/api/common/Discovery.js +var require_Discovery = __commonJS({ + "node_modules/@trezor/connect/lib/api/common/Discovery.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Discovery = void 0; + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var accountUtils_1 = require_accountUtils(); + var formatUtils_1 = require_formatUtils(); + var Discovery = class extends utils_1.TypedEmitter { + types = []; + typeIndex; + accounts; + coinInfo; + blockchain; + getDescriptor; + index; + interrupted; + completed; + constructor(options) { + super(); + this.accounts = []; + this.index = 0; + this.typeIndex = 0; + this.interrupted = false; + this.completed = false; + this.blockchain = options.blockchain; + this.coinInfo = options.blockchain.coinInfo; + this.getDescriptor = options.getDescriptor; + const { + coinInfo + } = this; + if (coinInfo.type === "bitcoin") { + const getDescriptor = (purpose, index) => (0, accountUtils_1.getAccountAddressN)(coinInfo, index, { + purpose + }); + if (coinInfo.xPubMagicSegwitNative) { + this.types.push({ + type: "p2wpkh", + getPath: getDescriptor.bind(this, 84) + }); + } + if (coinInfo.taproot) { + this.types.push({ + type: "p2tr", + getPath: getDescriptor.bind(this, 86) + }); + } + if (coinInfo.xPubMagicSegwit) { + this.types.push({ + type: "p2sh", + getPath: getDescriptor.bind(this, 49) + }); + } + this.types.push({ + type: "p2pkh", + getPath: getDescriptor.bind(this, 44) + }); + } else { + this.types.push({ + type: "p2pkh", + getPath: accountUtils_1.getAccountAddressN.bind(this, coinInfo) + }); + } + } + async start(details) { + const limit = 10; + this.interrupted = false; + while (!this.completed && !this.interrupted) { + const accountType = this.types[this.typeIndex]; + const label = `Account #${this.index + 1}`; + const overTheLimit = this.index >= limit; + const path2 = accountType.getPath(this.index); + const descriptor = await this.getDescriptor(path2); + if (!descriptor) { + throw constants_1.ERRORS.TypedError("Runtime", "Discovery: descriptor not found"); + } + if (this.interrupted) return; + const account = { + ...descriptor, + type: accountType.type, + label + }; + this.accounts = this.accounts.filter((a) => a.descriptor !== account.descriptor); + if (!overTheLimit) { + this.accounts.push(account); + this.emit("progress", this.accounts); + } + const info = await this.blockchain.getAccountInfo({ + descriptor: account.descriptor, + details + }); + if (this.interrupted) return; + this.accounts = this.accounts.filter((a) => a.descriptor !== account.descriptor); + if (!overTheLimit || overTheLimit && !info.empty) { + const balance = (0, formatUtils_1.formatAmount)(info.availableBalance, this.coinInfo); + this.accounts.push({ + ...account, + empty: info.empty, + balance, + addresses: info.addresses + }); + this.emit("progress", this.accounts); + } + if (info.empty) { + if (this.typeIndex + 1 < this.types.length) { + this.typeIndex++; + this.index = 0; + } else { + this.emit("complete"); + this.completed = true; + } + } else { + this.index++; + } + } + } + stop() { + this.interrupted = !this.completed; + } + dispose() { + this.accounts = []; + } + }; + exports2.Discovery = Discovery; + } +}); + +// node_modules/@trezor/connect/lib/api/composeTransaction.js +var require_composeTransaction = __commonJS({ + "node_modules/@trezor/connect/lib/api/composeTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var bigNumber_1 = require_bigNumber(); + var promiseAllSequence_1 = require_promiseAllSequence(); + var resolveAfter_1 = require_resolveAfter(); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var utxo_1 = require_utxo(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var bitcoin_1 = require_bitcoin3(); + var Discovery_1 = require_Discovery(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var formatUtils_1 = require_formatUtils(); + var pathUtils = tslib_1.__importStar(require_pathUtils()); + var ComposeTransaction = class extends AbstractMethod_1.AbstractMethod { + discovery; + init() { + this.requiredPermissions = ["read", "write"]; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "outputs", + type: "array", + required: true + }, { + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "push", + type: "boolean" + }, { + name: "account", + type: "object" + }, { + name: "feeLevels", + type: "array" + }, { + name: "baseFee", + type: "number" + }, { + name: "floorBaseFee", + type: "boolean" + }, { + name: "sequence", + type: "number" + }, { + name: "skipPermutation", + type: "boolean" + }, { + name: "sortingStrategy", + type: "string" + }]); + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + const outputs = []; + let total = new bigNumber_1.BigNumber(0); + payload.outputs.forEach((out) => { + const output = (0, bitcoin_1.validateHDOutput)(out, coinInfo); + if ("amount" in output && typeof output.amount === "string") { + total = total.plus(output.amount); + } + outputs.push(output); + }); + this.useDevice = !payload.account && !payload.feeLevels; + this.useUi = this.useDevice; + this.params = { + outputs, + coinInfo, + identity: payload.identity, + account: payload.account, + feeLevels: payload.feeLevels, + baseFee: payload.baseFee, + floorBaseFee: payload.floorBaseFee, + sequence: payload.sequence, + sortingStrategy: payload.skipPermutation === true ? "none" : payload.sortingStrategy, + push: typeof payload.push === "boolean" ? payload.push : false, + total + }; + if (this.params.push) { + this.requiredPermissions.push("push_tx"); + } + } + get info() { + const sendMax = this.params?.outputs.find((o) => o.type === "send-max") !== void 0; + if (sendMax) { + return "Send maximum amount"; + } + return `Send ${(0, formatUtils_1.formatAmount)(this.params.total.toString(), this.params.coinInfo)}`; + } + getBlockchain() { + return (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + } + async precompose(account, feeLevels) { + const { + coinInfo, + outputs, + baseFee, + sortingStrategy + } = this.params; + const address_n = pathUtils.validatePath(account.path); + const composer = new bitcoin_1.TransactionComposer({ + account: { + type: pathUtils.getAccountType(address_n), + label: "Account", + descriptor: account.path, + address_n, + addresses: account.addresses + }, + utxos: account.utxo, + coinInfo, + outputs, + baseFee, + sortingStrategy: sortingStrategy ?? utxo_1.DEFAULT_SORTING_STRATEGY + }); + const blockchain = await this.getBlockchain(); + await composer.init(blockchain); + return feeLevels.map((level) => { + composer.composeCustomFee(level.feePerUnit); + const tx = { + ...composer.composed.custom + }; + if (tx.type === "final") { + return { + ...tx, + inputs: tx.inputs.map((inp) => (0, bitcoin_1.inputToTrezor)(inp, this.params.sequence)), + outputs: tx.outputs.map(bitcoin_1.outputToTrezor) + }; + } + if (tx.type === "nonfinal") { + return { + ...tx, + inputs: tx.inputs.map((inp) => (0, bitcoin_1.inputToTrezor)(inp, this.params.sequence)) + }; + } + return tx; + }); + } + async run() { + if (this.params.account && this.params.feeLevels) { + return this.precompose(this.params.account, this.params.feeLevels); + } + const { + account, + utxo + } = await this.selectAccount(); + const response = await this.selectFee(account, utxo); + if (!this.discovery) { + throw constants_1.ERRORS.TypedError("Runtime", "ComposeTransaction: selectFee response received after dispose"); + } + if (typeof response === "string") { + return this.run(); + } + return response; + } + async selectAccount() { + const { + coinInfo + } = this.params; + const blockchain = await this.getBlockchain(); + const dfd = this.createUiPromise(events_1.UI.RECEIVE_ACCOUNT); + if (this.discovery && this.discovery.completed) { + const { + discovery: discovery2 + } = this; + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "end", + coinInfo, + accountTypes: discovery2.types.map((t) => t.type), + accounts: discovery2.accounts + })); + const uiResp2 = await dfd.promise; + const account2 = discovery2.accounts[uiResp2.payload]; + const utxo2 = await blockchain.getAccountUtxo(account2.descriptor); + return { + account: account2, + utxo: utxo2 + }; + } + const discovery = this.discovery || new Discovery_1.Discovery({ + blockchain, + getDescriptor: (path2) => this.device.getCommands().getAccountDescriptor(this.params.coinInfo, path2) + }); + this.discovery = discovery; + discovery.on("progress", (accounts) => { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "progress", + coinInfo, + accounts + })); + }); + discovery.on("complete", () => { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "end", + coinInfo + })); + }); + discovery.start("tokens").catch((error) => { + dfd.reject(error); + }); + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "start", + accountTypes: discovery.types.map((t) => t.type), + coinInfo + })); + const uiResp = await dfd.promise; + discovery.removeAllListeners(); + discovery.stop(); + if (!discovery.completed) { + await (0, resolveAfter_1.resolveAfter)(501); + } + const account = discovery.accounts[uiResp.payload]; + this.params.coinInfo = (0, coinInfo_1.fixCoinInfoNetwork)(this.params.coinInfo, account.address_n); + const utxo = await blockchain.getAccountUtxo(account.descriptor); + return { + account, + utxo + }; + } + async selectFee(account, utxos) { + const { + coinInfo, + outputs, + sortingStrategy, + skipPermutation + } = this.params; + const blockchain = await this.getBlockchain(); + const composer = new bitcoin_1.TransactionComposer({ + account, + utxos, + coinInfo, + outputs, + sortingStrategy: skipPermutation === true ? "none" : sortingStrategy ?? utxo_1.DEFAULT_SORTING_STRATEGY + }); + await composer.init(blockchain); + const hasFunds = composer.composeAllFeeLevels(); + if (!hasFunds) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.INSUFFICIENT_FUNDS)); + await (0, resolveAfter_1.resolveAfter)(2e3); + return "change-account"; + } + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_FEE, { + feeLevels: composer.getFeeLevelList(), + coinInfo: this.params.coinInfo + })); + return this._selectFeeUiResponse(composer); + } + async _selectFeeUiResponse(composer) { + const resp = await this.createUiPromise(events_1.UI.RECEIVE_FEE).promise; + switch (resp.payload.type) { + case "compose-custom": + composer.composeCustomFee(resp.payload.value); + this.postMessage((0, events_1.createUiMessage)(events_1.UI.UPDATE_CUSTOM_FEE, { + feeLevels: composer.getFeeLevelList(), + coinInfo: this.params.coinInfo + })); + return this._selectFeeUiResponse(composer); + case "send": + return this._sign(composer.composed[resp.payload.value]); + default: + return "change-account"; + } + } + async _sign(tx) { + const { + device, + params + } = this; + if (tx.type !== "final") throw constants_1.ERRORS.TypedError("Runtime", "ComposeTransaction: Trying to sign unfinished tx"); + const { + coinInfo + } = params; + const options = (0, bitcoin_1.enhanceSignTx)({}, coinInfo); + const inputs = tx.inputs.map((inp) => (0, bitcoin_1.inputToTrezor)(inp, params.sequence)); + const outputs = tx.outputs.map(bitcoin_1.outputToTrezor); + let refTxs = []; + const requiredRefTxs = (0, bitcoin_1.requireReferencedTransactions)(inputs, options, coinInfo); + const refTxsIds = (0, bitcoin_1.getReferencedTransactions)(inputs); + if (requiredRefTxs && refTxsIds.length > 0) { + refTxs = await this.getBlockchain().then((blockchain) => blockchain.getTransactionHexes(refTxsIds)).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then(bitcoin_1.transformReferencedTransactions); + } + const getHDNode = (address_n) => device.getCommands().getHDNode({ + address_n + }, { + coinInfo: params.coinInfo + }); + const outputScripts = await (0, promiseAllSequence_1.promiseAllSequence)(outputs.map((output) => () => (0, bitcoin_1.deriveOutputScript)(getHDNode, output, coinInfo.network))); + const signTxMethod = !device.unavailableCapabilities.replaceTransaction ? bitcoin_1.signTx : bitcoin_1.signTxLegacy; + const cmd = device.getCommands(); + const response = await signTxMethod({ + typedCall: cmd.typedCall, + inputs, + outputs, + refTxs, + options, + coinInfo + }); + (0, bitcoin_1.verifyTx)(response.serializedTx, { + inputs, + outputs, + outputScripts, + network: coinInfo.network + }); + if (params.push) { + const blockchain = await this.getBlockchain(); + const txid = await blockchain.pushTransaction(response.serializedTx); + return { + ...response, + txid + }; + } + return response; + } + dispose() { + const { + discovery + } = this; + if (discovery) { + discovery.stop(); + discovery.removeAllListeners(); + this.discovery = void 0; + } + } + }; + exports2.default = ComposeTransaction; + } +}); + +// node_modules/@trezor/connect/lib/types/api/discoverAccounts.js +var require_discoverAccounts = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/discoverAccounts.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.CARDANO_DERIVATIONS = exports2.ACCOUNT_TYPES = void 0; + var constants_1 = require_constants(); + exports2.ACCOUNT_TYPES = [{ + symbol: "btc", + type: "normal", + path: "m/84'/0'/i'" + }, { + symbol: "btc", + type: "taproot", + path: "m/86'/0'/i'" + }, { + symbol: "btc", + type: "segwit", + path: "m/49'/0'/i'" + }, { + symbol: "btc", + type: "legacy", + path: "m/44'/0'/i'" + }, { + symbol: "test", + type: "normal", + path: "m/84'/1'/i'" + }, { + symbol: "test", + type: "taproot", + path: "m/86'/1'/i'" + }, { + symbol: "test", + type: "segwit", + path: "m/49'/1'/i'" + }, { + symbol: "test", + type: "legacy", + path: "m/44'/1'/i'" + }, { + symbol: "regtest", + type: "normal", + path: "m/84'/1'/i'" + }, { + symbol: "regtest", + type: "taproot", + path: "m/86'/1'/i'" + }, { + symbol: "regtest", + type: "segwit", + path: "m/49'/1'/i'" + }, { + symbol: "regtest", + type: "legacy", + path: "m/44'/1'/i'" + }, { + symbol: "eth", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "eth", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "eth", + type: "legacy", + path: "m/44'/60'/0'/i" + }, { + symbol: "tsep", + type: "normal", + path: "m/44'/1'/0'/0/i" + }, { + symbol: "thod", + type: "normal", + path: "m/44'/1'/0'/0/i" + }, { + symbol: "pol", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "pol", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "bsc", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "bsc", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "arb", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "arb", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "base", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "base", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "op", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "op", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "avax", + type: "normal", + path: "m/44'/60'/0'/0/i" + }, { + symbol: "avax", + type: "ledger", + path: "m/44'/60'/i'/0/0" + }, { + symbol: "sol", + type: "normal", + path: "m/44'/501'/i'/0'" + }, { + symbol: "sol", + type: "ledger", + path: "m/44'/501'/i'" + }, { + symbol: "dsol", + type: "normal", + path: "m/44'/501'/i'/0'" + }, { + symbol: "ada", + type: "normal", + path: "m/1852'/1815'/i'" + }, { + symbol: "ada", + type: "legacy", + path: "m/1852'/1815'/i'" + }, { + symbol: "ada", + type: "ledger", + path: "m/1852'/1815'/i'" + }, { + symbol: "tada", + type: "normal", + path: "m/1852'/1815'/i'" + }, { + symbol: "tada", + type: "legacy", + path: "m/1852'/1815'/i'" + }, { + symbol: "tada", + type: "ledger", + path: "m/1852'/1815'/i'" + }, { + symbol: "etc", + type: "normal", + path: "m/44'/61'/0'/0/i" + }, { + symbol: "xrp", + type: "normal", + path: "m/44'/144'/i'/0/0" + }, { + symbol: "txrp", + type: "normal", + path: "m/44'/144'/i'/0/0" + }, { + symbol: "ltc", + type: "normal", + path: "m/84'/2'/i'" + }, { + symbol: "ltc", + type: "segwit", + path: "m/49'/2'/i'" + }, { + symbol: "ltc", + type: "legacy", + path: "m/44'/2'/i'" + }, { + symbol: "bch", + type: "normal", + path: "m/44'/145'/i'" + }, { + symbol: "doge", + type: "normal", + path: "m/44'/3'/i'" + }, { + symbol: "zec", + type: "normal", + path: "m/44'/133'/i'" + }, { + symbol: "xlm", + type: "normal", + path: "m/44'/148'/i'" + }, { + symbol: "txlm", + type: "normal", + path: "m/44'/148'/i'" + }]; + exports2.CARDANO_DERIVATIONS = { + normal: constants_1.PROTO.CardanoDerivationType.ICARUS, + legacy: constants_1.PROTO.CardanoDerivationType.ICARUS_TREZOR, + ledger: constants_1.PROTO.CardanoDerivationType.LEDGER + }; + } +}); + +// node_modules/@trezor/connect/lib/api/discoverAccounts.js +var require_discoverAccounts2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/discoverAccounts.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var utils_1 = require_lib(); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var discoverAccounts_1 = require_discoverAccounts(); + var accountUtils_1 = require_accountUtils(); + var pathUtils_1 = require_pathUtils(); + var ACCOUNT_LIMIT = 10; + var TXS_PER_PAGE = 25; + var DETAILS = "txs"; + var isCardano = (account) => account.symbol === "ada" || account.symbol === "tada"; + var isCardanoRequest = (request) => isCardano(request.account); + var isEvmLedger = (account, coinInfo) => coinInfo.type === "ethereum" && account.type === "ledger"; + var getAccountTypeKey = ({ + symbol, + type + }) => `${symbol}-${type}`; + var substituteBip43Path = (path2, index) => path2.replace("i", String(index)); + var DiscoverAccounts = class extends AbstractMethod_1.AbstractMethod { + disposed = false; + init() { + this.requiredPermissions = ["read"]; + this.useDevice = true; + this.useDeviceState = true; + this.useUi = false; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coins", + type: "array", + required: true, + allowEmpty: true + }]); + this.params = payload.coins.flatMap((coin) => { + (0, paramsValidator_1.validateParams)(coin, [{ + name: "symbol", + type: "string", + required: true + }, { + name: "known", + type: "array", + allowEmpty: true + }, { + name: "knownOnly", + type: "boolean" + }, { + name: "identity", + type: "string" + }, { + name: "details", + type: "string" + }, { + name: "pageSize", + type: "number" + }]); + const { + symbol, + known: knownAccs, + knownOnly, + ...rest + } = coin; + const coinInfo = (0, coinInfo_1.getCoinInfo)(symbol); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + const firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE); + const symbolAccounts = discoverAccounts_1.ACCOUNT_TYPES.filter((a) => a.symbol === symbol); + knownAccs?.forEach((account) => { + (0, paramsValidator_1.validateParams)(account, [{ + name: "type", + type: "string", + required: true + }, { + name: "skip", + type: "number" + }]); + if (!symbolAccounts.some((a) => a.type === account.type)) { + throw new Error(`Unknown account type: ${symbol}/${account.type}`); + } + }); + return symbolAccounts.map((account) => [account, knownAccs?.find((t) => t.type === account.type)]).filter(([_, known]) => known ? typeof known.skip === "number" : !knownOnly).map(([account, known]) => ({ + pageSize: isCardano(account) ? 8 : TXS_PER_PAGE, + details: DETAILS, + coinInfo, + firmwareRange, + skip: known?.skip ?? 0, + account, + ...rest, + offset: isEvmLedger(account, coinInfo) ? 1 : 0, + derivation: isCardano(account) ? discoverAccounts_1.CARDANO_DERIVATIONS[account.type] : void 0 + })); + }); + } + progress = {}; + updateProgress(account, done, last = false) { + const progress = last ? 1 : done / Math.max(ACCOUNT_LIMIT, done + 1); + const key = getAccountTypeKey(account); + this.progress[key] = progress; + } + sendProgress(response) { + const progress = Object.values(this.progress).reduce((sum, typeProgress) => sum + typeProgress, 0) / (Object.keys(this.progress).length || 1); + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: 100, + progress: 100 * progress, + response + })); + } + async run() { + const [unsupported, supported] = this.filterUnsupportedAccounts(this.params); + unsupported.forEach(({ + account: { + path: bip43, + ...rest + }, + error, + coinInfo, + skip, + offset + }) => { + const path2 = substituteBip43Path(bip43, skip + offset); + const backendType = coinInfo.blockchainLink?.type; + this.sendProgress({ + ...rest, + index: skip, + failed: true, + error, + path: path2, + backendType + }); + }); + const [cardanoAccounts, otherAccounts] = (0, utils_1.arrayPartition)(supported, isCardanoRequest); + const [_, filteredCardanoAccounts] = await this.filterCardanoDerivations(cardanoAccounts); + const accounts = [...otherAccounts, ...filteredCardanoAccounts]; + accounts.forEach(({ + account, + skip + }) => this.updateProgress(account, skip)); + const counts = await Promise.all(accounts.map((account) => this.discoverAccount(account))); + const nonempty = counts.reduce((sum, acc) => sum + acc.nonempty, 0); + const failed = counts.filter((acc) => acc.error).length; + const empty = counts.length - failed; + return { + empty, + nonempty, + failed + }; + } + filterUnsupportedAccounts(accounts) { + const version = this.device.getVersion(); + const model = this.device.features?.internal_model; + if (!version || !model) return [[], accounts]; + return (0, utils_1.arrayPartition)(accounts.map((item) => { + const { + min, + max + } = item.firmwareRange[model]; + let error; + if (min === "0") { + error = events_1.UI.FIRMWARE_NOT_SUPPORTED; + } else if (!utils_1.versionUtils.isNewerOrEqual(version, min)) { + error = events_1.UI.FIRMWARE_OLD; + } else if (max !== "0" && utils_1.versionUtils.isNewer(version, max)) { + error = events_1.UI.FIRMWARE_NOT_COMPATIBLE; + } + return error ? { + ...item, + error + } : item; + }), (item) => "error" in item); + } + async filterCardanoDerivations(accounts) { + const legacyRequest = accounts.find((a) => a.account.type === "legacy"); + const ledgerRequest = accounts.find((a) => a.account.type === "ledger"); + const filterableRequest = legacyRequest ?? ledgerRequest; + const getDescriptor = (derivation) => filterableRequest && this.getDescriptor(filterableRequest.coinInfo, filterableRequest.account.path, discoverAccounts_1.CARDANO_DERIVATIONS[derivation], 0).then(({ + descriptor + }) => descriptor); + const normalDescriptor = await getDescriptor("normal"); + const omitLegacy = legacyRequest && await getDescriptor("legacy") === normalDescriptor; + const omitLedger = ledgerRequest && (!legacyRequest || omitLegacy) && await getDescriptor("ledger") === normalDescriptor; + return (0, utils_1.arrayPartition)(accounts.map((item) => item.account.type === "legacy" && omitLegacy || item.account.type === "ledger" && omitLedger ? { + ...item, + error: "ignored cardano derivation" + } : item), (item) => "error" in item); + } + descriptorLock = (0, utils_1.getSynchronize)(); + descriptorCache = {}; + async getDescriptor(coinInfo, bip43PathTemplate, derivationType, index) { + const path2 = substituteBip43Path(bip43PathTemplate, index); + const { + address_n: _, + ...descriptorRest + } = await this.descriptorLock(async () => { + const key = `${path2}-${derivationType}`; + if (!this.descriptorCache[key]) { + const address_n = (0, pathUtils_1.validatePath)(path2, 3); + this.descriptorCache[key] = await this.device.getCommands().getAccountDescriptor(coinInfo, address_n, derivationType); + } + return this.descriptorCache[key]; + }); + return { + path: path2, + ...descriptorRest + }; + } + async discoverAccount(request) { + const { + details, + identity, + pageSize, + coinInfo, + derivation, + offset, + skip + } = request; + const { + path: bip43, + ...accountKey + } = request.account; + const backendType = coinInfo.blockchainLink?.type; + const utxoRequired = (0, accountUtils_1.isUtxoBased)(coinInfo) && details && details !== "basic"; + let index = skip; + let blockchain; + try { + blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity); + } catch (err2) { + const path2 = substituteBip43Path(bip43, offset + index); + this.updateProgress(accountKey, index + 1, true); + const error = err2.message; + this.sendProgress({ + ...accountKey, + index, + failed: true, + error, + path: path2, + backendType + }); + return { + nonempty: 0, + error + }; + } + let descPromise = this.getDescriptor(coinInfo, bip43, derivation, offset + index); + descPromise.catch(() => { + }); + while (true) { + try { + const { + descriptor, + ...descRest + } = await descPromise; + descPromise = this.getDescriptor(coinInfo, bip43, derivation, offset + index + 1); + descPromise.catch(() => { + }); + const info = await blockchain.getAccountInfo({ + descriptor, + details, + pageSize + }); + const utxo = !utxoRequired ? void 0 : info.empty ? [] : await blockchain.getAccountUtxo(descriptor); + this.updateProgress(accountKey, index + 1, info.empty); + this.sendProgress({ + ...info, + descriptor, + ...descRest, + utxo, + ...accountKey, + index, + backendType, + failed: false + }); + if (info.empty) { + await descPromise.catch(() => { + }); + return { + nonempty: index - skip + }; + } + } catch (err2) { + const path2 = substituteBip43Path(bip43, offset + index); + const { + message: error, + code + } = err2; + const failed = true; + this.updateProgress(accountKey, index + 1, true); + this.sendProgress({ + ...accountKey, + index, + failed, + error, + code, + path: path2, + backendType + }); + return { + nonempty: index - skip, + error + }; + } + index++; + } + } + dispose() { + this.disposed = true; + } + }; + exports2.default = DiscoverAccounts; + } +}); + +// node_modules/@trezor/connect/lib/types/api/getAccountDescriptor.js +var require_getAccountDescriptor = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/getAccountDescriptor.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.GetAccountDescriptorParams = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.GetAccountDescriptorParams = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + coin: schema_utils_1.Type.String(), + derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType), + suppressBackupWarning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/getAccountDescriptor.js +var require_getAccountDescriptor2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getAccountDescriptor.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var paramsValidator_1 = require_paramsValidator(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var getAccountDescriptor_1 = require_getAccountDescriptor(); + var accountUtils_1 = require_accountUtils(); + var pathUtils_1 = require_pathUtils(); + var GetAccountDescriptor = class extends AbstractMethod_1.AbstractMethod { + disposed = false; + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.useDevice = true; + this.useUi = true; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + (0, schema_utils_1.Assert)((0, types_1.Bundle)(getAccountDescriptor_1.GetAccountDescriptorParams), payload); + this.params = payload.bundle.map((batch) => { + const coinInfo = (0, coinInfo_1.getCoinInfo)(batch.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + const address_n = (0, pathUtils_1.validatePath)(batch.path, 3); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + return { + ...batch, + address_n, + coinInfo + }; + }); + this.noBackupConfirmationMode = this.params.every((batch) => batch.suppressBackupWarning) ? "popup-only" : "always"; + } + get info() { + return "Export account descriptor"; + } + get confirmation() { + const keys = {}; + this.params.forEach((b) => { + if (!keys[b.coinInfo.label]) { + keys[b.coinInfo.label] = { + coinInfo: b.coinInfo, + values: [] + }; + } + keys[b.coinInfo.label].values.push(b.address_n); + }); + const str = []; + Object.keys(keys).forEach((k, _i, _a) => { + const details = keys[k]; + details.values.forEach((acc) => { + str.push(k); + str.push(" "); + if (typeof acc === "string") { + str.push(acc); + } else { + str.push((0, accountUtils_1.getAccountLabel)(acc, details.coinInfo)); + } + }); + }); + return { + view: "export-account-info", + label: `Export descriptor for: ${str.join("")}` + }; + } + checkFirmwareRange() { + const invalid = []; + for (let i = 0; i < this.params.length; i++) { + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, this.params[i].coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE); + const exception = super.checkFirmwareRange(); + if (exception) { + invalid.push({ + index: i, + exception, + coin: this.params[i].coin + }); + } + } + if (invalid.length > 0) { + throw constants_1.ERRORS.TypedError("Method_Discovery_BundleException", JSON.stringify(invalid)); + } + return void 0; + } + async run() { + const responses = []; + const sendProgress = (progress, response, error) => { + if (!this.hasBundle || this.disposed) return; + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress, + response, + error + })); + }; + for (let i = 0; i < this.params.length; i++) { + const request = this.params[i]; + if (this.disposed) break; + try { + const { + descriptor, + address_n, + legacyXpub + } = await this.device.getCommands().getAccountDescriptor(request.coinInfo, request.address_n, request.derivationType); + const response = { + descriptor, + path: (0, pathUtils_1.getSerializedPath)(address_n), + legacyXpub + }; + sendProgress(i, response); + responses.push(response); + } catch (error) { + if (this.hasBundle) { + responses.push(null); + sendProgress(i, null, error.message); + continue; + } else { + throw error; + } + } + } + if (this.disposed) return new Promise(() => []); + return this.hasBundle ? responses : responses[0]; + } + dispose() { + this.disposed = true; + } + }; + exports2.default = GetAccountDescriptor; + } +}); + +// node_modules/@trezor/connect/lib/api/getAccountInfo.js +var require_getAccountInfo2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getAccountInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var resolveAfter_1 = require_resolveAfter(); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var Discovery_1 = require_Discovery(); + var paramsValidator_1 = require_paramsValidator(); + var accountUtils_1 = require_accountUtils(); + var pathUtils_1 = require_pathUtils(); + var GetAccountInfo = class extends AbstractMethod_1.AbstractMethod { + disposed = false; + hasBundle; + discovery; + init() { + this.requiredPermissions = ["read"]; + this.useDevice = true; + this.useUi = true; + let willUseDevice = false; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "bundle", + type: "array" + }]); + this.params = payload.bundle.map((batch) => { + (0, paramsValidator_1.validateParams)(batch, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "descriptor", + type: "string" + }, { + name: "path", + type: "string" + }, { + name: "details", + type: "string" + }, { + name: "tokens", + type: "string" + }, { + name: "page", + type: "number" + }, { + name: "pageSize", + type: "number" + }, { + name: "from", + type: "number" + }, { + name: "to", + type: "number" + }, { + name: "contractFilter", + type: "string" + }, { + name: "gap", + type: "number" + }, { + name: "marker", + type: "object" + }, { + name: "defaultAccountType", + type: "string" + }, { + name: "derivationType", + type: "number" + }, { + name: "suppressBackupWarning", + type: "boolean" + }]); + const coinInfo = (0, coinInfo_1.getCoinInfo)(batch.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + let address_n = []; + if (batch.path) { + address_n = (0, pathUtils_1.validatePath)(batch.path, 3); + willUseDevice = typeof batch.descriptor !== "string"; + } + if (!batch.path && !batch.descriptor) { + if (payload.bundle.length > 1) { + throw Error("Discovery for multiple coins in not supported"); + } + willUseDevice = true; + } + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + return { + ...batch, + address_n, + coinInfo + }; + }); + this.useDevice = willUseDevice; + this.useDeviceState = willUseDevice; + this.useUi = willUseDevice; + this.noBackupConfirmationMode = this.params.every((batch) => batch.suppressBackupWarning) ? "popup-only" : "always"; + } + get info() { + return "Export account info"; + } + get confirmation() { + if (this.params.length === 1 && !this.params[0].path && !this.params[0].descriptor) { + return { + view: "export-account-info", + label: `Export info for ${this.params[0].coinInfo.label} account of your selection`, + customConfirmButton: { + label: "Proceed to account selection", + className: "not-empty-css" + } + }; + } else { + const keys = {}; + this.params.forEach((b) => { + if (!keys[b.coinInfo.label]) { + keys[b.coinInfo.label] = { + coinInfo: b.coinInfo, + values: [] + }; + } + keys[b.coinInfo.label].values.push(b.descriptor || b.address_n); + }); + const str = []; + Object.keys(keys).forEach((k, _i, _a) => { + const details = keys[k]; + details.values.forEach((acc) => { + str.push(k); + str.push(" "); + if (typeof acc === "string") { + str.push(acc); + } else { + str.push((0, accountUtils_1.getAccountLabel)(acc, details.coinInfo)); + } + }); + }); + return { + view: "export-account-info", + label: `Export info for: ${str.join("")}` + }; + } + } + checkFirmwareRange() { + if (this.params.length === 1) { + return super.checkFirmwareRange(); + } + const invalid = []; + for (let i = 0; i < this.params.length; i++) { + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, this.params[i].coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE); + const exception = super.checkFirmwareRange(); + if (exception) { + invalid.push({ + index: i, + exception, + coin: this.params[i].coin + }); + } + } + if (invalid.length > 0) { + throw constants_1.ERRORS.TypedError("Method_Discovery_BundleException", JSON.stringify(invalid)); + } + } + async run() { + if (this.params.length === 1 && !this.params[0].path && !this.params[0].descriptor) { + return this.discover(this.params[0]); + } + const responses = []; + const sendProgress = (progress, response, error) => { + if (!this.hasBundle || this.device?.getCurrentSession().isDisposed()) return; + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress, + response, + error + })); + }; + for (let i = 0; i < this.params.length; i++) { + const request = this.params[i]; + const { + address_n + } = request; + let { + descriptor + } = request; + let legacyXpub; + let descriptorChecksum; + if (this.disposed) break; + if (address_n && typeof descriptor !== "string") { + try { + const accountDescriptor = await this.device.getCommands().getAccountDescriptor(request.coinInfo, address_n, request.derivationType); + if (accountDescriptor) { + descriptor = accountDescriptor.descriptor; + legacyXpub = accountDescriptor.legacyXpub; + descriptorChecksum = accountDescriptor.descriptorChecksum; + } + } catch (error) { + if (this.hasBundle) { + responses.push(null); + sendProgress(i, null, error.message); + continue; + } else { + throw error; + } + } + } + if (this.disposed) break; + try { + if (typeof descriptor !== "string") { + throw constants_1.ERRORS.TypedError("Runtime", "GetAccountInfo: descriptor not found"); + } + const blockchain = await (0, BlockchainLink_1.initBlockchain)(request.coinInfo, this.postMessage, request.identity); + if (this.disposed) break; + const info = await blockchain.getAccountInfo({ + descriptor, + details: request.details, + tokens: request.tokens, + page: request.page, + pageSize: request.pageSize, + pageCursor: request.pageCursor, + from: request.from, + to: request.to, + contractFilter: request.contractFilter, + gap: request.gap, + marker: request.marker, + tokenAccountsPubKeys: request.tokenAccountsPubKeys + }); + if (this.disposed) break; + let utxo; + if ((0, accountUtils_1.isUtxoBased)(request.coinInfo) && typeof request.details === "string" && request.details !== "basic") { + utxo = await blockchain.getAccountUtxo(descriptor); + } + if (this.disposed) break; + const account = { + path: request.path, + ...info, + descriptor, + legacyXpub, + utxo, + descriptorChecksum + }; + responses.push(account); + sendProgress(i, account); + } catch (error) { + if (this.hasBundle) { + responses.push(null); + sendProgress(i, null, error.message); + continue; + } else { + throw error; + } + } + } + if (this.disposed) return new Promise(() => []); + return this.hasBundle ? responses : responses[0]; + } + async discover(request) { + const { + coinInfo, + identity, + defaultAccountType, + derivationType + } = request; + const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity); + const dfd = this.createUiPromise(events_1.UI.RECEIVE_ACCOUNT); + const discovery = new Discovery_1.Discovery({ + blockchain, + getDescriptor: (path2) => this.device.getCommands().getAccountDescriptor(coinInfo, path2, derivationType) + }); + discovery.on("progress", (accounts) => { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "progress", + coinInfo, + accounts + })); + }); + discovery.on("complete", () => { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "end", + coinInfo + })); + }); + discovery.start().catch((error) => { + dfd.reject(error); + }); + this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, { + type: "start", + accountTypes: discovery.types.map((t) => t.type), + defaultAccountType, + coinInfo + })); + const uiResp = await dfd.promise; + discovery.stop(); + const account = discovery.accounts[uiResp.payload]; + if (!discovery.completed) { + await (0, resolveAfter_1.resolveAfter)(501); + } + const info = await blockchain.getAccountInfo({ + descriptor: account.descriptor, + details: request.details, + tokens: request.tokens, + page: request.page, + pageSize: request.pageSize, + pageCursor: request.pageCursor, + from: request.from, + to: request.to, + contractFilter: request.contractFilter, + gap: request.gap, + marker: request.marker + }); + let utxo; + if ((0, accountUtils_1.isUtxoBased)(coinInfo) && typeof request.details === "string" && request.details !== "basic") { + utxo = await blockchain.getAccountUtxo(account.descriptor); + } + return { + path: (0, pathUtils_1.getSerializedPath)(account.address_n), + ...info, + utxo + }; + } + dispose() { + this.disposed = true; + const { + discovery + } = this; + if (discovery) { + discovery.removeAllListeners(); + discovery.stop(); + } + } + }; + exports2.default = GetAccountInfo; + } +}); + +// node_modules/@trezor/connect/lib/types/api/getAddress.js +var require_getAddress = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/getAddress.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.GetAddress = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.GetAddress = schema_utils_1.Type.Composite([params_1.GetAddress, schema_utils_1.Type.Object({ + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + crossChain: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType), + scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType), + unlockPath: schema_utils_1.Type.Optional(constants_1.PROTO.UnlockPath) + })]); + } +}); + +// node_modules/@trezor/connect/lib/api/getAddress.js +var require_getAddress2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getAddress.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var paramsValidator_1 = require_paramsValidator(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var getAddress_1 = require_getAddress(); + var pathUtils_1 = require_pathUtils(); + var GetAddress = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + progress = 0; + init() { + this.noBackupConfirmationMode = "always"; + this.requiredPermissions = ["read"]; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + payload?.bundle.forEach((bundleElement) => { + if (bundleElement.multisig && bundleElement.multisig?.signatures === void 0) { + bundleElement.multisig.signatures = Array(bundleElement.multisig?.pubkeys.length).fill(""); + } + }); + (0, schema_utils_1.Assert)((0, types_1.Bundle)(getAddress_1.GetAddress), payload); + this.params = payload.bundle.map((batch) => { + const path2 = (0, pathUtils_1.validatePath)(batch.path, 1); + let coinInfo; + if (batch.coin) { + coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin); + } + if (coinInfo && !batch.crossChain) { + (0, paramsValidator_1.validateCoinPath)(path2, coinInfo); + } else if (!coinInfo) { + coinInfo = (0, coinInfo_1.getBitcoinNetwork)(path2); + } + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } else if (coinInfo) { + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + } + coinInfo = (0, coinInfo_1.fixCoinInfoNetwork)(coinInfo, path2); + return { + address_n: path2, + address: batch.address, + show_display: typeof batch.showOnTrezor === "boolean" ? batch.showOnTrezor : true, + multisig: batch.multisig, + script_type: batch.scriptType, + coinInfo, + unlockPath: batch.unlockPath, + chunkify: typeof batch.chunkify === "boolean" ? batch.chunkify : false + }; + }); + const useEventListener = payload.useEventListener && this.params.length === 1 && typeof this.params[0].address === "string" && this.params[0].show_display; + this.useUi = !useEventListener; + } + get info() { + if (this.params.length === 1) { + return (0, pathUtils_1.getLabel)("Export #NETWORK address", this.params[0].coinInfo); + } + const requestedNetworks = this.params.map((b) => b.coinInfo); + const uniqNetworks = (0, coinInfo_1.getUniqueNetworks)(requestedNetworks); + if (uniqNetworks.length === 1 && uniqNetworks[0]) { + return (0, pathUtils_1.getLabel)("Export multiple #NETWORK addresses", uniqNetworks[0]); + } + return "Export multiple addresses"; + } + getButtonRequestData(code) { + if (code === "ButtonRequest_Address") { + return { + type: "address", + serializedPath: (0, pathUtils_1.getSerializedPath)(this.params[this.progress].address_n), + address: this.params[this.progress].address || "not-set" + }; + } + } + get confirmation() { + return !this.useUi ? void 0 : { + view: "export-address", + label: this.info + }; + } + async _call({ + address_n, + show_display, + multisig, + script_type, + coinInfo, + unlockPath, + chunkify + }) { + const cmd = this.device.getCommands(); + if (unlockPath) { + await cmd.unlockPath(unlockPath); + } + const response = await cmd.getAddress({ + address_n, + show_display, + multisig, + script_type, + chunkify + }, coinInfo); + return { + path: address_n, + serializedPath: (0, pathUtils_1.getSerializedPath)(address_n), + address: response.address, + mac: response.mac + }; + } + async run() { + const responses = []; + for (let i = 0; i < this.params.length; i++) { + const batch = this.params[i]; + if (batch.show_display) { + const silent = await this._call({ + ...batch, + show_display: false + }); + if (typeof batch.address === "string") { + if (batch.address !== silent.address) { + throw constants_1.ERRORS.TypedError("Method_AddressNotMatch"); + } + } else { + batch.address = silent.address; + } + } + const response = await this._call(batch); + responses.push(response); + if (this.hasBundle) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress: i, + response + })); + } + this.progress++; + } + return this.hasBundle ? responses : responses[0]; + } + }; + exports2.default = GetAddress; + } +}); + +// node_modules/@trezor/connect/lib/api/getCoinInfo.js +var require_getCoinInfo = __commonJS({ + "node_modules/@trezor/connect/lib/api/getCoinInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var types_1 = require_types9(); + var GetCoinInfo = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useDevice = false; + this.useUi = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(types_1.CoinObj, payload); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + this.params = { + coinInfo + }; + } + run() { + return Promise.resolve(this.params.coinInfo); + } + }; + exports2.default = GetCoinInfo; + } +}); + +// node_modules/@trezor/connect/lib/api/getDeviceState.js +var require_getDeviceState = __commonJS({ + "node_modules/@trezor/connect/lib/api/getDeviceState.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var GetDeviceState = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + } + run() { + const state = this.device.getState(); + if (!state?.staticSessionId) { + throw constants_1.ERRORS.TypedError("Runtime", "Device state not set"); + } + return Promise.resolve({ + state: state.staticSessionId, + _state: state + }); + } + }; + exports2.default = GetDeviceState; + } +}); + +// node_modules/@trezor/connect/lib/api/getFeatures.js +var require_getFeatures = __commonJS({ + "node_modules/@trezor/connect/lib/api/getFeatures.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var GetFeatures = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useUi = false; + this.allowDeviceMode = [...this.allowDeviceMode, events_1.UI.INITIALIZE, events_1.UI.BOOTLOADER]; + this.useDeviceState = false; + this.skipFirmwareCheck = true; + this.skipFinalReload = true; + } + run() { + return Promise.resolve(this.device.features); + } + }; + exports2.default = GetFeatures; + } +}); + +// node_modules/@trezor/connect/lib/api/getFirmwareHash.js +var require_getFirmwareHash = __commonJS({ + "node_modules/@trezor/connect/lib/api/getFirmwareHash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var GetFirmwareHash = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.useEmptyPassphrase = true; + this.useDeviceState = false; + this.allowDeviceMode = [events_1.UI.INITIALIZE]; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.GetFirmwareHash, payload); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + this.params = { + challenge: payload.challenge + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("GetFirmwareHash", "FirmwareHash", this.params); + return response.message; + } + }; + exports2.default = GetFirmwareHash; + } +}); + +// node_modules/@trezor/connect/lib/api/getNonce.js +var require_getNonce = __commonJS({ + "node_modules/@trezor/connect/lib/api/getNonce.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var GetNonce = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDeviceState = false; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("GetNonce", "Nonce"); + return response.message; + } + }; + exports2.default = GetNonce; + } +}); + +// node_modules/@trezor/connect/lib/types/api/getOwnershipId.js +var require_getOwnershipId = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/getOwnershipId.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.GetOwnershipId = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.GetOwnershipId = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType), + scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/getOwnershipId.js +var require_getOwnershipId2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getOwnershipId.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var paramsValidator_1 = require_paramsValidator(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var getOwnershipId_1 = require_getOwnershipId(); + var pathUtils_1 = require_pathUtils(); + var GetOwnershipId = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + (0, schema_utils_1.Assert)((0, types_1.Bundle)(getOwnershipId_1.GetOwnershipId), payload); + this.params = payload.bundle.map((batch) => { + const address_n = (0, pathUtils_1.validatePath)(batch.path, 1); + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin || address_n); + const script_type = batch.scriptType || (0, pathUtils_1.getScriptType)(address_n); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + return { + address_n, + coin_name: coinInfo ? coinInfo.name : void 0, + multisig: batch.multisig, + script_type + }; + }); + } + get info() { + return "Export ownership id"; + } + get confirmation() { + return { + view: "export-address", + label: this.params.length > 1 ? "Export multiple ownership proof ids" : this.info + }; + } + async run() { + const responses = []; + const cmd = this.device.getCommands(); + for (let i = 0; i < this.params.length; i++) { + const batch = this.params[i]; + const { + message + } = await cmd.typedCall("GetOwnershipId", "OwnershipId", batch); + responses.push({ + ...message, + path: batch.address_n, + serializedPath: (0, pathUtils_1.getSerializedPath)(batch.address_n) + }); + if (this.hasBundle) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress: i, + response: message + })); + } + } + return this.hasBundle ? responses : responses[0]; + } + }; + exports2.default = GetOwnershipId; + } +}); + +// node_modules/@trezor/connect/lib/types/api/getOwnershipProof.js +var require_getOwnershipProof = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/getOwnershipProof.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.GetOwnershipProof = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.GetOwnershipProof = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType), + scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType), + userConfirmation: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + ownershipIds: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String(), { + minItems: 1 + })), + commitmentData: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/getOwnershipProof.js +var require_getOwnershipProof2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getOwnershipProof.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var paramsValidator_1 = require_paramsValidator(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var getOwnershipProof_1 = require_getOwnershipProof(); + var pathUtils_1 = require_pathUtils(); + var GetOwnershipProof = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + (0, schema_utils_1.Assert)((0, types_1.Bundle)(getOwnershipProof_1.GetOwnershipProof), payload); + this.params = payload.bundle.map((batch) => { + const address_n = (0, pathUtils_1.validatePath)(batch.path, 1); + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin || address_n); + const script_type = batch.scriptType || (0, pathUtils_1.getScriptType)(address_n); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + if (batch.preauthorized) { + this.preauthorized = batch.preauthorized; + } + return { + address_n, + coin_name: coinInfo ? coinInfo.name : void 0, + multisig: batch.multisig, + script_type, + user_confirmation: batch.userConfirmation, + ownership_ids: batch.ownershipIds, + commitment_data: batch.commitmentData + }; + }); + } + get info() { + return "Export ownership proof"; + } + get confirmation() { + return { + view: "export-address", + label: this.params.length > 1 ? "Export multiple ownership proofs" : this.info + }; + } + async run() { + const responses = []; + const cmd = this.device.getCommands(); + for (let i = 0; i < this.params.length; i++) { + const batch = this.params[i]; + if (this.preauthorized) { + await cmd.preauthorize(true); + } + const { + message + } = await cmd.typedCall("GetOwnershipProof", "OwnershipProof", batch); + responses.push({ + ...message, + path: batch.address_n, + serializedPath: (0, pathUtils_1.getSerializedPath)(batch.address_n) + }); + if (this.hasBundle) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress: i, + response: message + })); + } + } + return this.hasBundle ? responses : responses[0]; + } + }; + exports2.default = GetOwnershipProof; + } +}); + +// node_modules/@trezor/connect/lib/types/api/getPublicKey.js +var require_getPublicKey = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/getPublicKey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.HDNodeResponse = exports2.GetPublicKey = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var params_1 = require_params(); + exports2.GetPublicKey = schema_utils_1.Type.Intersect([params_1.GetPublicKey, schema_utils_1.Type.Object({ + coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String({ + description: "determines network definition specified in coins.json file. Coin shortcut, name or label can be used. If coin is not set API will try to get network definition from path.", + default: "btc" + })), + crossChain: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType), + ignoreXpubMagic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()), + ecdsaCurveName: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + unlockPath: schema_utils_1.Type.Optional(constants_1.PROTO.UnlockPath) + })]); + exports2.HDNodeResponse = schema_utils_1.Type.Intersect([params_1.PublicKey, schema_utils_1.Type.Object({ + childNum: schema_utils_1.Type.Number(), + xpub: schema_utils_1.Type.String(), + xpubSegwit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + descriptorChecksum: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + chainCode: schema_utils_1.Type.String(), + fingerprint: schema_utils_1.Type.Number(), + depth: schema_utils_1.Type.Number(), + descriptor: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + })]); + } +}); + +// node_modules/@trezor/connect/lib/api/getPublicKey.js +var require_getPublicKey2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/getPublicKey.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var paramsValidator_1 = require_paramsValidator(); + var getPublicKey_1 = require_getPublicKey(); + var accountUtils_1 = require_accountUtils(); + var pathUtils_1 = require_pathUtils(); + var GetPublicKey = class extends AbstractMethod_1.AbstractMethod { + hasBundle; + init() { + this.requiredPermissions = ["read"]; + this.hasBundle = !!this.payload.bundle; + const payload = !this.payload.bundle ? { + ...this.payload, + bundle: [this.payload] + } : this.payload; + (0, schema_utils_1.Assert)((0, types_1.Bundle)(getPublicKey_1.GetPublicKey), payload); + this.params = payload.bundle.map((batch) => { + let coinInfo; + if (batch.coin) { + coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin); + } + const address_n = (0, pathUtils_1.validatePath)(batch.path, coinInfo ? 3 : 0); + if (coinInfo && !batch.crossChain) { + (0, paramsValidator_1.validateCoinPath)(address_n, coinInfo); + } else if (!coinInfo) { + coinInfo = (0, coinInfo_1.getBitcoinNetwork)(address_n); + } + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + return { + address_n, + coin_name: coinInfo?.name, + show_display: batch.showOnTrezor, + script_type: batch.scriptType, + ignore_xpub_magic: batch.ignoreXpubMagic, + ecdsa_curve_name: batch.ecdsaCurveName, + coinInfo, + unlockPath: batch.unlockPath, + suppress_backup_warning: batch.suppressBackupWarning + }; + }); + this.noBackupConfirmationMode = this.params.every((batch) => batch.suppressBackupWarning || !batch.show_display) ? "popup-only" : "always"; + } + get info() { + return "Export public key"; + } + get confirmation() { + return { + view: "export-xpub", + label: this.params.length > 1 ? "Export multiple public keys" : (0, accountUtils_1.getPublicKeyLabel)(this.params[0].address_n, this.params[0].coinInfo) + }; + } + async run() { + const responses = []; + const cmd = this.device.getCommands(); + for (let i = 0; i < this.params.length; i++) { + const { + coinInfo, + unlockPath, + ...batch + } = this.params[i]; + const coinInfoFallback = coinInfo ?? (0, coinInfo_1.getBitcoinNetwork)("btc"); + const response = await cmd.getHDNode(batch, { + coinInfo: coinInfoFallback, + unlockPath + }); + responses.push(response); + if (this.hasBundle) { + this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, { + total: this.params.length, + progress: i, + response + })); + } + } + return this.hasBundle ? responses : responses[0]; + } + }; + exports2.default = GetPublicKey; + } +}); + +// node_modules/@trezor/connect/lib/api/getSettings.js +var require_getSettings = __commonJS({ + "node_modules/@trezor/connect/lib/api/getSettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var DataManager_1 = require_DataManager(); + var GetSettings = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useDevice = false; + this.useUi = false; + } + run() { + return Promise.resolve(DataManager_1.DataManager.getSettings()); + } + }; + exports2.default = GetSettings; + } +}); + +// node_modules/@trezor/connect/lib/types/api/pushTransaction.js +var require_pushTransaction2 = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/pushTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.PushTransaction = void 0; + var schema_utils_1 = require_lib2(); + exports2.PushTransaction = schema_utils_1.Type.Object({ + tx: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Object({ + hex: schema_utils_1.Type.String(), + disableAlternativeRPC: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()) + })]), + coin: schema_utils_1.Type.String(), + identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/pushTransaction.js +var require_pushTransaction3 = __commonJS({ + "node_modules/@trezor/connect/lib/api/pushTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var BlockchainLink_1 = require_BlockchainLink(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var coinInfo_1 = require_coinInfo(); + var pushTransaction_1 = require_pushTransaction2(); + var PushTransaction = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["push_tx"]; + this.useUi = false; + this.useDevice = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(pushTransaction_1.PushTransaction, payload); + const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + if (coinInfo.type === "bitcoin" && (typeof payload.tx !== "string" || !/^[0-9A-Fa-f]*$/.test(payload.tx))) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "Transaction must be hexadecimal"); + } + this.params = { + tx: payload.tx, + coinInfo, + identity: payload.identity + }; + } + async run() { + const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity); + const txid = await backend.pushTransaction(this.params.tx); + return { + txid + }; + } + }; + exports2.default = PushTransaction; + } +}); + +// node_modules/@trezor/connect/lib/types/api/recoveryDevice.js +var require_recoveryDevice = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/recoveryDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.RecoveryDevice = void 0; + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + exports2.RecoveryDevice = schema_utils_1.Type.Composite([constants_1.PROTO.RecoveryDevice, schema_utils_1.Type.Object({ + word_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Literal(12), schema_utils_1.Type.Literal(18), schema_utils_1.Type.Literal(24)])) + })]); + } +}); + +// node_modules/@trezor/connect/lib/api/recoveryDevice.js +var require_recoveryDevice2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/recoveryDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var recoveryDevice_1 = require_recoveryDevice(); + var RecoveryDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useEmptyPassphrase = true; + const { + payload + } = this; + (0, schema_utils_1.Assert)(recoveryDevice_1.RecoveryDevice, payload); + this.params = { + word_count: payload.word_count, + passphrase_protection: payload.passphrase_protection, + pin_protection: payload.pin_protection, + language: payload.language, + label: payload.label, + enforce_wordlist: payload.enforce_wordlist, + input_method: payload.input_method, + type: payload.type, + u2f_counter: payload.u2f_counter + }; + this.allowDeviceMode = [...this.allowDeviceMode, events_1.UI.INITIALIZE]; + this.useDeviceState = false; + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "confirm", + label: "Proceed" + }, + label: "Do you want to recover device from seed?" + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("RecoveryDevice", "Success", this.params); + return response.message; + } + get info() { + return "Recover device"; + } + }; + exports2.default = RecoveryDevice; + } +}); + +// node_modules/@trezor/connect/lib/types/api/requestLogin.js +var require_requestLogin = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/requestLogin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.RequestLoginSchema = exports2.LoginChallenge = void 0; + var schema_utils_1 = require_lib2(); + exports2.LoginChallenge = schema_utils_1.Type.Object({ + challengeHidden: schema_utils_1.Type.String(), + challengeVisual: schema_utils_1.Type.String(), + origin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()), + asyncChallenge: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()), + callback: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()) + }); + exports2.RequestLoginSchema = schema_utils_1.Type.Union([exports2.LoginChallenge]); + } +}); + +// node_modules/@trezor/connect/lib/api/requestLogin.js +var require_requestLogin2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/requestLogin.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var DataManager_1 = require_DataManager(); + var requestLogin_1 = require_requestLogin(); + var RequestLogin = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["read", "write"]; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + this.useEmptyPassphrase = true; + const { + payload + } = this; + (0, schema_utils_1.Assert)(requestLogin_1.RequestLoginSchema, payload); + const identity = {}; + const settings = DataManager_1.DataManager.getSettings(); + let origin; + if (settings.trustedHost && payload.origin) { + origin = payload.origin; + } else if (settings.origin) { + origin = settings.origin; + } + if (origin) { + const [proto, host, port] = origin.split(":"); + identity.proto = proto; + identity.host = host.substring(2); + if (port) { + identity.port = port; + } + identity.index = 0; + } + this.params = { + identity, + challenge_hidden: payload.challengeHidden || "", + challenge_visual: payload.challengeVisual || "" + }; + } + get info() { + return "Login"; + } + async run() { + const cmd = this.device.getCommands(); + const { + message + } = await cmd.typedCall("SignIdentity", "SignedIdentity", this.params); + return { + address: message.address, + publicKey: message.public_key, + signature: message.signature + }; + } + }; + exports2.default = RequestLogin; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/verifyEntropy.js +var require_verifyEntropy = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/verifyEntropy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.verifyEntropy = exports2.generateEntropy = void 0; + var crypto_1 = require_cryptoNode(); + var hmac_1 = require_hmac(); + var sha256_1 = require_sha2562(); + var utils_1 = require_utils9(); + var bip39_1 = require_bip392(); + var crypto_utils_1 = require_lib11(); + var utxo_lib_1 = require_lib18(); + var constants_1 = require_constants(); + var generateEntropy = (len) => { + try { + return Buffer.from((0, utils_1.randomBytes)(len)); + } catch { + throw new Error("generateEntropy: Environment does not support crypto random"); + } + }; + exports2.generateEntropy = generateEntropy; + var BASE_ITERATION_COUNT = 1e4; + var ROUND_COUNT = 4; + var roundFunction = async (i, passphrase, e, salt, r) => { + const data = Buffer.concat([Buffer.from([i]), passphrase]); + const iterations = Math.floor((BASE_ITERATION_COUNT << e) / ROUND_COUNT); + const { + subtle + } = crypto_1.crypto; + const key = await subtle.importKey("raw", data, "PBKDF2", false, ["deriveBits"]); + const bits = await subtle.deriveBits({ + name: "PBKDF2", + hash: "SHA-256", + salt: Buffer.concat([salt, r]), + iterations + }, key, r.length * 8); + return Buffer.from(bits); + }; + var xor = (a, b) => { + if (a.length !== b.length) { + throw new Error("Buffers must be of equal length to XOR."); + } + const result = Buffer.alloc(a.length); + for (let i = 0; i < a.length; i++) { + result[i] = a[i] ^ b[i]; + } + return result; + }; + var entropyToSeedSlip39 = async (encryptedSecret) => { + const iterationExponent = 1; + const passphrase = Buffer.from("", "utf-8"); + const salt = Buffer.alloc(0); + const half = Math.floor(encryptedSecret.length / 2); + let l = encryptedSecret.subarray(0, half); + let r = encryptedSecret.subarray(half); + for (let round = ROUND_COUNT - 1; round >= 0; round--) { + const f = await roundFunction(round, passphrase, iterationExponent, salt, r); + const rr = xor(l, f); + l = r; + r = rr; + } + return Buffer.concat([r, l]); + }; + var getEntropy = (trezorEntropy, hostEntropy, strength) => { + const data = Buffer.concat([Buffer.from(trezorEntropy, "hex"), Buffer.from(hostEntropy, "hex")]); + const entropy = (0, sha256_1.sha256)(data); + return Buffer.from(entropy.subarray(0, Math.floor(strength / 8))); + }; + var computeSeed = (type, secret) => { + const BackupType = constants_1.PROTO.Enum_BackupType; + if (type && [BackupType.Slip39_Basic, BackupType.Slip39_Advanced, BackupType.Slip39_Single_Extendable, BackupType.Slip39_Basic_Extendable, BackupType.Slip39_Advanced_Extendable].includes(type)) { + return entropyToSeedSlip39(secret); + } + return (0, bip39_1.mnemonicToSeed)((0, bip39_1.entropyToMnemonic)(secret, [...crypto_utils_1.bip39])).then((seed) => Buffer.from(seed)); + }; + var verifyCommitment = (entropy, commitment) => { + const hmacDigest = (0, hmac_1.hmac)(sha256_1.sha256, Buffer.from(entropy, "hex"), Buffer.alloc(0)); + if (!Buffer.from(hmacDigest).equals(Buffer.from(commitment, "hex"))) { + throw new Error("Invalid entropy commitment"); + } + }; + var verifyEntropy = async ({ + type, + strength, + trezorEntropy, + hostEntropy, + commitment, + xpubs + }) => { + try { + if (!trezorEntropy || !commitment || !strength || Object.keys(xpubs).length < 1) { + throw new Error("Missing verifyEntropy data"); + } + verifyCommitment(trezorEntropy, commitment); + const secret = getEntropy(trezorEntropy, hostEntropy, strength); + const seed = await computeSeed(type, secret); + const node = utxo_lib_1.bip32.fromSeed(seed); + Object.keys(xpubs).forEach((path2) => { + const pubKey = node.derivePath(path2); + const xpub = pubKey.neutered().toBase58(); + if (xpub !== xpubs[path2]) { + throw new Error("verifyEntropy xpub mismatch"); + } + }); + return { + success: true + }; + } catch (error) { + return { + success: false, + error: error.message + }; + } + }; + exports2.verifyEntropy = verifyEntropy; + } +}); + +// node_modules/@trezor/connect/lib/api/resetDevice.js +var require_resetDevice = __commonJS({ + "node_modules/@trezor/connect/lib/api/resetDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var utils_1 = require_lib(); + var verifyEntropy_1 = require_verifyEntropy(); + var constants_1 = require_constants(); + var errors_1 = require_errors(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var pathUtils_1 = require_pathUtils(); + var ResetDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.useDeviceState = false; + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(constants_1.PROTO.ResetDevice, payload); + this.params = { + strength: payload.strength || 256, + passphrase_protection: payload.passphrase_protection, + pin_protection: payload.pin_protection, + language: payload.language, + label: payload.label, + u2f_counter: payload.u2f_counter || Math.floor(Date.now() / 1e3), + skip_backup: payload.skip_backup, + no_backup: payload.no_backup, + backup_type: payload.backup_type, + entropy_check: typeof payload.entropy_check === "boolean" ? payload.entropy_check : true + }; + } + get info() { + return "Setup device"; + } + get confirmation() { + return { + view: "device-management", + label: "Do you really you want to create a new wallet?" + }; + } + async resetDeviceWorkflow() { + const cmd = this.device.getCommands(); + const entropy = (0, verifyEntropy_1.generateEntropy)(32).toString("hex"); + await cmd.typedCall("ResetDevice", "EntropyRequest", this.params); + await cmd.typedCall("EntropyAck", "Success", { + entropy + }); + } + async entropyCheckWorkflow() { + const cmd = this.device.getCommands(); + const paths = ["m/84'/0'/0'", "m/44'/60'/0'"]; + const handleErr = (error) => { + throw error instanceof errors_1.TransportError ? error : constants_1.ERRORS.TypedError("Failure_EntropyCheck", error.message); + }; + let entropy = (0, verifyEntropy_1.generateEntropy)(32).toString("hex"); + let commitment = await cmd.typedCall("ResetDevice", "EntropyRequest", this.params).then((response) => response.message.entropy_commitment); + await cmd.typedCall("EntropyAck", "EntropyCheckReady", { + entropy + }); + const tries = (0, utils_1.getRandomInt)(1, 5); + for (let i = 0; i < tries; i++) { + const xpubs = {}; + for (const path2 of paths) { + const pubKey = await cmd.getPublicKey({ + address_n: (0, pathUtils_1.validatePath)(path2) + }).catch(handleErr); + xpubs[path2] = pubKey.xpub; + } + const { + prev_entropy, + entropy_commitment + } = await cmd.typedCall("EntropyCheckContinue", "EntropyRequest", {}).then((response) => response.message).catch(handleErr); + const res = await (0, verifyEntropy_1.verifyEntropy)({ + type: this.params.backup_type, + strength: this.params.strength, + commitment, + hostEntropy: entropy, + trezorEntropy: prev_entropy, + xpubs + }); + if (res.error) { + await this.device.getCurrentSession().cancelCall(); + throw constants_1.ERRORS.TypedError("Failure_EntropyCheck", res.error); + } + entropy = (0, verifyEntropy_1.generateEntropy)(32).toString("hex"); + commitment = entropy_commitment; + await cmd.typedCall("EntropyAck", "EntropyCheckReady", { + entropy + }).catch(handleErr); + } + await cmd.typedCall("EntropyCheckContinue", "Success", { + finish: true + }); + } + async run() { + if (this.params.entropy_check && this.device.unavailableCapabilities["entropyCheck"]) { + this.params.entropy_check = false; + } + if (this.params.entropy_check) { + await this.entropyCheckWorkflow(); + } else { + await this.resetDeviceWorkflow(); + } + return { + message: "Success" + }; + } + }; + exports2.default = ResetDevice; + } +}); + +// node_modules/@trezor/connect/lib/api/loadDevice.js +var require_loadDevice = __commonJS({ + "node_modules/@trezor/connect/lib/api/loadDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var LoadDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE]; + this.useDeviceState = false; + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.LoadDevice, payload); + this.params = { + mnemonics: payload.mnemonics, + pin: payload.pin, + passphrase_protection: payload.passphrase_protection, + language: payload.language, + label: payload.label, + skip_checksum: payload.skip_checksum, + u2f_counter: payload.u2f_counter, + needs_backup: payload.needs_backup, + no_backup: payload.no_backup + }; + } + get info() { + return "Load seed and related internal settings."; + } + get confirmation() { + return { + view: "device-management", + label: "Do you really you want to load device?" + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("LoadDevice", "Success", this.params); + return response.message; + } + }; + exports2.default = LoadDevice; + } +}); + +// node_modules/@trezor/connect/lib/api/setBrightness.js +var require_setBrightness = __commonJS({ + "node_modules/@trezor/connect/lib/api/setBrightness.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var SetBrightness = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + this.useDeviceState = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SetBrightness, payload); + this.params = { + value: payload.value + }; + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("SetBrightness", "Success", this.params); + return response.message; + } + }; + exports2.default = SetBrightness; + } +}); + +// node_modules/@trezor/connect/lib/api/setBusy.js +var require_setBusy = __commonJS({ + "node_modules/@trezor/connect/lib/api/setBusy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var SetBusy = class extends AbstractMethod_1.AbstractMethod { + init() { + this.useDeviceState = false; + this.requiredPermissions = ["management"]; + this.skipFinalReload = false; + const { + payload + } = this; + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SetBusy, payload); + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, void 0, this.firmwareRange); + this.params = { + expiry_ms: payload.expiry_ms + }; + } + async run() { + const cmd = this.device.getCommands(); + const { + message + } = await cmd.typedCall("SetBusy", "Success", this.params); + if (this.keepSession && !!this.params.expiry_ms) { + this.device.features.busy = true; + this.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CHANGED, this.device.toMessageObject())); + } + return message; + } + }; + exports2.default = SetBusy; + } +}); + +// node_modules/@trezor/connect/lib/api/setProxy.js +var require_setProxy = __commonJS({ + "node_modules/@trezor/connect/lib/api/setProxy.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var BlockchainLink_1 = require_BlockchainLink(); + var DataManager_1 = require_DataManager(); + var SetProxy = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = []; + this.useDevice = false; + this.useUi = false; + (0, paramsValidator_1.validateParams)(this.payload, []); + } + async run() { + const { + proxy + } = DataManager_1.DataManager.getSettings(); + const isChanged = proxy !== this.payload.proxy; + if (isChanged) { + DataManager_1.DataManager.getSettings().proxy = this.payload.proxy; + await (0, BlockchainLink_1.reconnectAllBackends)(); + } + return { + message: "Success" + }; + } + }; + exports2.default = SetProxy; + } +}); + +// node_modules/@trezor/connect/lib/api/signMessage.js +var require_signMessage = __commonJS({ + "node_modules/@trezor/connect/lib/api/signMessage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var types_1 = require_types9(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var formatUtils_1 = require_formatUtils(); + var pathUtils_1 = require_pathUtils(); + var SignMessage = class extends AbstractMethod_1.AbstractMethod { + coinInfo; + init() { + this.requiredPermissions = ["read", "write"]; + const { + payload + } = this; + (0, schema_utils_1.Assert)(types_1.SignMessage, payload); + const path2 = (0, pathUtils_1.validatePath)(payload.path); + if (payload.coin) { + this.coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin); + (0, paramsValidator_1.validateCoinPath)(path2, this.coinInfo); + } else { + this.coinInfo = (0, coinInfo_1.getBitcoinNetwork)(path2); + } + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(payload.no_script_type ? "signMessageNoScriptType" : this.name, this.coinInfo, this.firmwareRange); + const messageHex = payload.hex ? (0, formatUtils_1.messageToHex)(payload.message) : Buffer.from(payload.message, "utf8").toString("hex"); + const scriptType = (0, pathUtils_1.getScriptType)(path2); + this.params = { + address_n: path2, + message: messageHex, + coin_name: this.coinInfo ? this.coinInfo.name : void 0, + script_type: scriptType && scriptType !== "SPENDMULTISIG" ? scriptType : "SPENDADDRESS", + no_script_type: payload.no_script_type + }; + } + get info() { + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin ?? this.params.address_n); + return (0, pathUtils_1.getLabel)("Sign #NETWORK message", coinInfo); + } + getButtonRequestData(code, name) { + if (code === "ButtonRequest_Other" && name === "sign_message") { + return { + type: "message", + serializedPath: (0, pathUtils_1.getSerializedPath)(this.params.address_n), + coin: this.coinInfo?.shortcut ?? "BTC", + message: this.payload.hex ? (0, formatUtils_1.hexToText)(this.payload.message) : this.payload.message + }; + } + } + async run() { + const cmd = this.device.getCommands(); + const { + message + } = await cmd.typedCall("SignMessage", "MessageSignature", this.params); + const signatureBuffer = Buffer.from(message.signature, "hex"); + message.signature = signatureBuffer.toString("base64"); + return message; + } + }; + exports2.default = SignMessage; + } +}); + +// node_modules/@trezor/utxo-lib/lib/txWeightCalculator.js +var require_txWeightCalculator = __commonJS({ + "node_modules/@trezor/utxo-lib/lib/txWeightCalculator.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TxWeightCalculator = void 0; + var coinselectUtils_1 = require_coinselectUtils(); + var _TXSIZE_HEADER = 4; + var _TXSIZE_FOOTER = 4; + var _TXSIZE_SEGWIT_OVERHEAD = 2; + var _TXSIZE_INPUT = 40; + var _TXSIZE_OUTPUT = 8; + var _TXSIZE_PUBKEY = 33; + var _TXSIZE_DER_SIGNATURE = 72; + var _TXSIZE_SCHNORR_SIGNATURE = 64; + var _TXSIZE_MULTISIGSCRIPT = 3; + var _TXSIZE_WITNESSPKHASH = 22; + var _TXSIZE_WITNESSSCRIPT = 34; + var SCRIPT_TYPES = { + p2pkh: "SPENDADDRESS", + p2sh: "SPENDP2SHWITNESS", + p2tr: "SPENDTAPROOT", + p2wpkh: "SPENDWITNESS" + }; + var SEGWIT_INPUT_SCRIPT_TYPES = ["SPENDP2SHWITNESS", "SPENDWITNESS", "SPENDTAPROOT"]; + var NONSEGWIT_INPUT_SCRIPT_TYPES = ["SPENDADDRESS", "SPENDMULTISIG"]; + function getVarIntSize(length) { + if (length < 253) return 1; + if (length < 65536) return 3; + return 5; + } + function getOpPushSize(length) { + if (length < 76) return 1; + if (length < 256) return 2; + if (length < 65536) return 3; + return 5; + } + var TxWeightCalculator = class { + inputs_count = 0; + outputs_count = 0; + counter = 4 * (_TXSIZE_HEADER + _TXSIZE_FOOTER); + segwit_inputs_count = 0; + inputs = []; + addInputByKey(type) { + this.addInput({ + script_type: SCRIPT_TYPES[type] + }); + } + addInput(input) { + this.inputs_count += 1; + let input_script_size = 0; + if (input.multisig) { + if (input.script_type === "SPENDTAPROOT") { + throw new Error("Multisig not supported for Taproot yet"); + } + const n = input.multisig.nodes ? input.multisig.nodes.length : input.multisig.pubkeys.length; + let multisig_script_size = _TXSIZE_MULTISIGSCRIPT + n * (1 + _TXSIZE_PUBKEY); + if (SEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) { + multisig_script_size += getVarIntSize(multisig_script_size); + } else { + multisig_script_size += getOpPushSize(multisig_script_size); + input_script_size = 1 + input.multisig.m * (1 + _TXSIZE_DER_SIGNATURE) + multisig_script_size; + } + } else if (input.script_type === "SPENDTAPROOT") { + input_script_size = 1 + _TXSIZE_SCHNORR_SIGNATURE; + } else { + input_script_size = 1 + _TXSIZE_DER_SIGNATURE + 1 + _TXSIZE_PUBKEY; + } + this.counter += 4 * _TXSIZE_INPUT; + if (NONSEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) { + input_script_size += getVarIntSize(input_script_size); + this.counter += 4 * input_script_size; + } else if (SEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) { + this.segwit_inputs_count += 1; + if (input.script_type === "SPENDP2SHWITNESS") { + if (input.multisig) { + this.counter += 4 * (2 + _TXSIZE_WITNESSSCRIPT); + } else { + this.counter += 4 * (2 + _TXSIZE_WITNESSPKHASH); + } + } else { + this.counter += 4; + } + this.counter += 1 + input_script_size; + } else if (input.script_type === "EXTERNAL") { + const witness_size = 0; + const script_sig_size = 0; + if (input.ownership_proof) { + } else { + } + if (witness_size > 1) { + this.segwit_inputs_count += 1; + } + this.counter += 4 * (getVarIntSize(script_sig_size) + script_sig_size); + this.counter += witness_size; + } else { + throw new Error("unknown input script_type"); + } + this.inputs.push({ + length: input_script_size + }); + } + addOutputByKey(key) { + this.addOutput({ + length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[key] + }); + } + addOutput(script) { + this.outputs_count += 1; + const script_size = getVarIntSize(script.length) + script.length; + this.counter += 4 * (_TXSIZE_OUTPUT + script_size); + } + getTotal() { + let total = this.counter; + total += 4 * getVarIntSize(this.inputs_count); + total += 4 * getVarIntSize(this.outputs_count); + if (this.segwit_inputs_count) { + total += _TXSIZE_SEGWIT_OVERHEAD; + total += this.inputs_count - this.segwit_inputs_count; + } + return total; + } + getVirtualBytes() { + return Math.ceil(this.getTotal() / 4); + } + }; + exports2.TxWeightCalculator = TxWeightCalculator; + } +}); + +// node_modules/@trezor/connect/lib/api/bitcoin/transactionBytes.js +var require_transactionBytes = __commonJS({ + "node_modules/@trezor/connect/lib/api/bitcoin/transactionBytes.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getTransactionVbytes = void 0; + exports2.mapOutputScriptToKey = mapOutputScriptToKey; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var baddress = tslib_1.__importStar(require_address()); + var txWeightCalculator_1 = require_txWeightCalculator(); + var pathUtils_1 = require_pathUtils(); + function mapOutputScriptToKey(script_type) { + switch (script_type) { + case "PAYTOADDRESS": + return "p2pkh"; + case "PAYTOSCRIPTHASH": + return "p2sh"; + case "PAYTOWITNESS": + return "p2wpkh"; + case "PAYTOP2SHWITNESS": + return "p2sh"; + case "PAYTOTAPROOT": + return "p2tr"; + default: + return void 0; + } + } + var getTransactionVbytes = (inputs, outputs, coinInfo) => { + const calc = new txWeightCalculator_1.TxWeightCalculator(); + let cannotProcess = false; + inputs.forEach((input) => { + const script_type = input.script_type ?? (0, pathUtils_1.getScriptType)(input.address_n); + if (script_type && !input.witness) { + calc.addInput({ + script_type, + multisig: input.multisig, + ownership_proof: input.ownership_proof + }); + } else { + cannotProcess = true; + } + }); + outputs.forEach((out) => { + if (out.script_type === "PAYTOOPRETURN") { + if (!out.op_return_data) { + cannotProcess = true; + return; + } + calc.addOutput({ + length: 2 + out.op_return_data.length / 2 + }); + return; + } else if (out.address) { + calc.addOutput({ + length: baddress.toOutputScript(out.address, coinInfo.network).length + }); + return; + } else if (out.address_n || out.script_type) { + const script_type = out.script_type ?? (0, pathUtils_1.getOutputScriptType)(out.address_n); + if (script_type) { + const script_key = mapOutputScriptToKey(script_type); + if (script_key) { + calc.addOutputByKey(script_key); + return; + } + } + } + cannotProcess = true; + }); + if (cannotProcess) { + return void 0; + } + return calc.getVirtualBytes(); + }; + exports2.getTransactionVbytes = getTransactionVbytes; + } +}); + +// node_modules/@trezor/connect/lib/api/signTransaction.js +var require_signTransaction = __commonJS({ + "node_modules/@trezor/connect/lib/api/signTransaction.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var bigNumber_1 = require_bigNumber(); + var promiseAllSequence_1 = require_promiseAllSequence(); + var constants_1 = require_constants(); + var bitcoin_1 = require_bitcoin3(); + var BlockchainLink_1 = require_BlockchainLink(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var pathUtils_1 = require_pathUtils(); + var transactionBytes_1 = require_transactionBytes(); + var SignTransaction = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["read", "write"]; + const { + payload + } = this; + (0, paramsValidator_1.validateParams)(payload, [{ + name: "coin", + type: "string", + required: true + }, { + name: "identity", + type: "string" + }, { + name: "inputs", + type: "array", + required: true + }, { + name: "outputs", + type: "array", + required: true + }, { + name: "paymentRequests", + type: "array", + allowEmpty: true + }, { + name: "coinjoinRequest", + type: "object" + }, { + name: "refTxs", + type: "array", + allowEmpty: true + }, { + name: "account", + type: "object" + }, { + name: "locktime", + type: "number" + }, { + name: "timestamp", + type: "number" + }, { + name: "version", + type: "number" + }, { + name: "expiry", + type: "number" + }, { + name: "overwintered", + type: "boolean" + }, { + name: "versionGroupId", + type: "number" + }, { + name: "branchId", + type: "number" + }, { + name: "decredStakingTicket", + type: "boolean" + }, { + name: "push", + type: "boolean" + }, { + name: "preauthorized", + type: "boolean" + }, { + name: "amountUnit", + type: ["number", "string"] + }, { + name: "unlockPath", + type: "object" + }, { + name: "serialize", + type: "boolean" + }, { + name: "chunkify", + type: "boolean" + }]); + if (payload.unlockPath) { + (0, paramsValidator_1.validateParams)(payload.unlockPath, [{ + name: "address_n", + required: true, + type: "array" + }, { + name: "mac", + required: true, + type: "string" + }]); + } + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + this.preauthorized = payload.preauthorized; + const inputs = (0, bitcoin_1.validateTrezorInputs)(payload.inputs, coinInfo); + const outputs = (0, bitcoin_1.validateTrezorOutputs)(payload.outputs, coinInfo); + if (payload.paymentRequests && payload.paymentRequests.length > 0) { + outputs.forEach((output) => { + output.payment_req_index = 0; + }); + } + if (payload.refTxs && payload.account?.transactions) { + console.warn("two sources of referential transactions were passed. payload.refTxs have precedence"); + } + const refTxs = (0, bitcoin_1.validateReferencedTransactions)({ + transactions: payload.refTxs || payload.account?.transactions, + inputs, + outputs, + coinInfo, + addresses: payload.account?.addresses + }); + const outputsWithAmount = outputs.filter((output) => typeof output.amount === "string" && !Object.prototype.hasOwnProperty.call(output, "op_return_data")); + if (outputsWithAmount.length > 0) { + const total = outputsWithAmount.reduce((bn, output) => bn.plus(typeof output.amount === "string" ? output.amount : "0"), new bigNumber_1.BigNumber(0)); + if (total.lt(coinInfo.dustLimit)) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "Total amount is below dust limit."); + } + } + const paymentRequests = payload.paymentRequests?.map((p) => { + if (typeof p.amount === "number") { + const buffer = Buffer.allocUnsafe(8); + buffer.writeBigInt64LE(BigInt(p.amount), 0); + return { + ...p, + amount: buffer.toString("hex") + }; + } + return { + ...p, + amount: p.amount + }; + }) ?? []; + this.params = { + inputs, + outputs, + paymentRequests, + refTxs, + addresses: payload.account ? payload.account.addresses : void 0, + options: { + lock_time: payload.locktime, + timestamp: payload.timestamp, + version: payload.version, + expiry: payload.expiry, + overwintered: payload.overwintered, + version_group_id: payload.versionGroupId, + branch_id: payload.branchId, + decred_staking_ticket: payload.decredStakingTicket, + amount_unit: payload.amountUnit, + serialize: payload.serialize, + coinjoin_request: payload.coinjoinRequest, + chunkify: typeof payload.chunkify === "boolean" ? payload.chunkify : false + }, + coinInfo, + identity: payload.identity, + push: typeof payload.push === "boolean" ? payload.push : false, + unlockPath: payload.unlockPath + }; + this.params.options = (0, bitcoin_1.enhanceSignTx)(this.params.options, coinInfo); + if (this.params.push) { + this.requiredPermissions.push("push_tx"); + } + } + get info() { + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin); + return (0, pathUtils_1.getLabel)("Sign #NETWORK transaction", coinInfo); + } + async payloadToPrecomposed() { + try { + const { + inputs, + outputs, + coinInfo + } = this.params; + const refTxs = this.params.refTxs ?? await this.fetchRefTxs(false); + const inputsTotal = inputs.reduce((bn, input) => { + if (typeof input.amount === "string") { + return bn.plus(input.amount); + } else { + const refTx = refTxs.find((tx) => tx.hash === input.prev_hash); + const refOutput = refTx?.outputs?.[input.prev_index] ?? refTx?.bin_outputs?.[input.prev_index]; + if (refOutput) return bn.plus(refOutput.amount); + } + return bn; + }, new bigNumber_1.BigNumber(0)); + const outputsTotal = outputs.reduce((bn, output) => bn.plus(typeof output.amount === "string" ? output.amount : "0"), new bigNumber_1.BigNumber(0)); + const bytes = (0, transactionBytes_1.getTransactionVbytes)(inputs, outputs, coinInfo); + if (!bytes) throw constants_1.ERRORS.TypedError("Runtime", "Transaction bytes not calculated"); + const fee = inputsTotal.minus(outputsTotal); + if (fee.lte(0)) { + throw constants_1.ERRORS.TypedError("Runtime", "Computed fee is non-positive"); + } + const feePerByte = fee.dividedBy(bytes); + return { + type: "final", + inputs, + outputs, + outputsPermutation: Array.from({ + length: outputs.length + }, (_, i) => i), + totalSpent: inputsTotal.toString(), + fee: fee.toString(), + feePerByte: feePerByte.toString(), + bytes + }; + } catch (e) { + console.error("Error in payloadToPrecomposed", e); + return void 0; + } + } + async fetchAddresses(blockchain) { + const { + device, + params: { + inputs, + coinInfo + } + } = this; + const accountPath = inputs.find((i) => i.address_n); + if (!accountPath || !accountPath.address_n) { + throw constants_1.ERRORS.TypedError("Runtime", "Account not found"); + } + const address_n = accountPath.address_n.slice(0, 3); + const node = await device.getCommands().getHDNode({ + address_n + }, { + coinInfo + }); + const account = await blockchain.getAccountInfo({ + descriptor: node.xpubSegwit || node.xpub, + details: "tokens" + }); + return account.addresses; + } + async fetchRefTxs(useLegacySignProcess) { + const { + params: { + inputs, + outputs, + options, + coinInfo, + identity, + addresses + } + } = this; + const requiredRefTxs = (0, bitcoin_1.requireReferencedTransactions)(inputs, options, coinInfo); + const refTxsIds = requiredRefTxs ? (0, bitcoin_1.getReferencedTransactions)(inputs) : []; + const origTxsIds = !useLegacySignProcess ? (0, bitcoin_1.getOrigTransactions)(inputs, outputs) : []; + if (!refTxsIds.length && !origTxsIds.length) { + return []; + } + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity); + const refTxs = !refTxsIds.length ? [] : await blockchain.getTransactionHexes(refTxsIds).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then((rawTxs) => { + (0, bitcoin_1.enhanceTrezorInputs)(this.params.inputs, rawTxs); + return (0, bitcoin_1.transformReferencedTransactions)(rawTxs); + }); + const origTxs = !origTxsIds.length ? [] : await blockchain.getTransactionHexes(origTxsIds).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then(async (rawOrigTxs) => { + const accountAddresses = addresses ?? await this.fetchAddresses(blockchain); + if (!accountAddresses) return []; + return (0, bitcoin_1.transformOrigTransactions)(rawOrigTxs, coinInfo, inputs, accountAddresses); + }); + return refTxs.concat(origTxs); + } + async run() { + const { + device, + params + } = this; + const { + inputs, + outputs, + coinInfo + } = params; + const useLegacySignProcess = !!device.unavailableCapabilities.replaceTransaction; + const refTxs = params.refTxs ?? await this.fetchRefTxs(useLegacySignProcess); + let outputScripts = []; + if (params.options.serialize !== false) { + const getHDNode = (address_n) => device.getCommands().getHDNode({ + address_n + }, { + coinInfo, + unlockPath: params.unlockPath + }); + outputScripts = await (0, promiseAllSequence_1.promiseAllSequence)(outputs.map((output) => () => (0, bitcoin_1.deriveOutputScript)(getHDNode, output, coinInfo.network))); + } + if (this.preauthorized) { + await device.getCommands().preauthorize(true); + } else if (params.unlockPath) { + await device.getCommands().unlockPath(params.unlockPath); + } + const signTxMethod = !useLegacySignProcess ? bitcoin_1.signTx : bitcoin_1.signTxLegacy; + const response = await signTxMethod({ + ...params, + refTxs, + typedCall: device.getCommands().typedCall + }); + if (!response.serializedTx) { + return response; + } + let bitcoinTx; + if (params.options.decred_staking_ticket) { + } else { + bitcoinTx = (0, bitcoin_1.verifyTx)(response.serializedTx, { + inputs, + outputs, + outputScripts, + network: coinInfo.network + }); + if (bitcoinTx.hasWitnesses()) { + response.witnesses = bitcoinTx.ins.map((_, i) => bitcoinTx?.getWitness(i)?.toString("hex")); + } + } + if (bitcoinTx && params.addresses) { + response.signedTransaction = (0, bitcoin_1.createPendingTransaction)(bitcoinTx, { + addresses: params.addresses, + inputs, + outputs + }); + } + if (params.push) { + (0, BlockchainLink_1.isBackendSupported)(coinInfo); + const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, params.identity); + const txid = await blockchain.pushTransaction(response.serializedTx); + return { + ...response, + txid + }; + } + return response; + } + }; + exports2.default = SignTransaction; + } +}); + +// node_modules/@trezor/connect/lib/types/api/unlockPath.js +var require_unlockPath = __commonJS({ + "node_modules/@trezor/connect/lib/types/api/unlockPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.UnlockPathParams = void 0; + var schema_utils_1 = require_lib2(); + var params_1 = require_params(); + exports2.UnlockPathParams = schema_utils_1.Type.Object({ + path: params_1.DerivationPath, + mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()) + }); + } +}); + +// node_modules/@trezor/connect/lib/api/unlockPath.js +var require_unlockPath2 = __commonJS({ + "node_modules/@trezor/connect/lib/api/unlockPath.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var AbstractMethod_1 = require_AbstractMethod(); + var pathUtils_1 = require_pathUtils(); + var paramsValidator_1 = require_paramsValidator(); + var unlockPath_1 = require_unlockPath(); + var UnlockPath = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["read"]; + this.skipFinalReload = true; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, void 0, this.firmwareRange); + const { + payload + } = this; + (0, schema_utils_1.Assert)(unlockPath_1.UnlockPathParams, payload); + const path2 = (0, pathUtils_1.validatePath)(payload.path, 1); + this.params = { + address_n: path2, + mac: payload.mac + }; + } + async run() { + const cmd = this.device.getCommands(); + const { + message + } = await cmd.unlockPath(this.params); + return { + address_n: this.params.address_n, + mac: message.mac + }; + } + }; + exports2.default = UnlockPath; + } +}); + +// node_modules/@trezor/connect/lib/device/thp/thpCall.js +var require_thpCall = __commonJS({ + "node_modules/@trezor/connect/lib/device/thp/thpCall.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.abortThpWorkflow = exports2.thpCall = void 0; + var errors_1 = require_errors(); + var events_1 = require_events(); + var thpCall = async (device, name, data) => { + const thpState = device.getThpState(); + if (!thpState) { + throw (0, errors_1.TypedError)("Device_ThpStateMissing"); + } + const result = await device.getCurrentSession().call(name, data); + if (!result.success) { + throw result.error; + } + thpState.setCancelablePromise(false); + if (result.payload.type === "ButtonRequest") { + thpState.setCancelablePromise(true); + if (result.payload.message.code === "ButtonRequest_PassphraseEntry") { + device.emit(events_1.DEVICE.PASSPHRASE_ON_DEVICE); + } else { + device.emit(events_1.DEVICE.BUTTON, { + device, + payload: result.payload.message + }); + } + return (0, exports2.thpCall)(device, "ButtonAck", {}); + } + if (result.payload.type === "Failure") { + const { + code, + message + } = result.payload.message; + throw (0, errors_1.TypedError)(code || "Failure_UnknownCode", message); + } + if (result.payload.type === "ThpError") { + const { + code, + message + } = result.payload.message; + throw (0, errors_1.TypedError)(code, message); + } + return result.payload; + }; + exports2.thpCall = thpCall; + var abortThpWorkflow = async (device) => { + const thpState = device.getThpState(); + if (!thpState || !device.currentRun) { + return Promise.resolve(); + } + if (thpState.pairingTagPromise) { + await thpState.pairingTagPromise.abort(); + await device.getCurrentSession().cancelCall(); + thpState.resetState(); + } else if (thpState.cancelablePromise) { + thpState.sync("send", "Cancel"); + await device.getCurrentSession().send("Cancel", {}); + await device.currentRun; + } + }; + exports2.abortThpWorkflow = abortThpWorkflow; + } +}); + +// node_modules/@trezor/connect/lib/device/thp/handshake.js +var require_handshake = __commonJS({ + "node_modules/@trezor/connect/lib/device/thp/handshake.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.thpHandshake = exports2.createThpChannel = void 0; + var crypto_1 = __require("crypto"); + var protobuf_1 = require_lib3(); + var protocol_1 = require_lib6(); + var thpCall_1 = require_thpCall(); + var constants_1 = require_constants(); + var DataManager_1 = require_DataManager(); + var getPairingMethods = (deviceMethods, settingsMethods) => deviceMethods?.flatMap((dm) => { + const value = protocol_1.thp.getThpPairingMethod(dm); + const isRequested = settingsMethods && settingsMethods.find((sm) => value === protocol_1.thp.getThpPairingMethod(sm)); + return isRequested ? value : []; + }); + var createThpChannel = async (device) => { + const thpState = device.getThpState(); + if (!thpState) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + thpState.setChannel(protocol_1.thp.constants.THP_DEFAULT_CHANNEL); + const nonce = (0, crypto_1.randomBytes)(8); + const createChannel = await (0, thpCall_1.thpCall)(device, "ThpCreateChannelRequest", { + nonce + }); + const { + properties, + ...resp + } = createChannel.message; + if (nonce.compare(resp.nonce) !== 0) { + throw new Error("Nonce not meet" + nonce.toString("hex") + " " + resp.nonce.toString("hex")); + } + const settings = DataManager_1.DataManager.getSettings("thp"); + const pairingMethods = getPairingMethods(properties.pairing_methods, settings?.pairingMethods); + if (!pairingMethods?.length) { + throw constants_1.ERRORS.TypedError("Device_ThpPairingMethodsException"); + } + thpState.setThpProperties(properties); + thpState.setChannel(resp.channel); + thpState.updateHandshakeCredentials({ + pairingMethods, + handshakeHash: resp.handshakeHash + }); + }; + exports2.createThpChannel = createThpChannel; + var thpHandshake = async (device, unlockPin = false) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const settings = DataManager_1.DataManager.getSettings("thp"); + const staticKey = settings?.staticKey ? Buffer.from(settings.staticKey, "hex") : (0, crypto_1.randomBytes)(32); + const hostStaticKeys = protocol_1.thp.getCurve25519KeyPair(staticKey); + const knownCredentials = (settings?.knownCredentials || []).sort((cre) => cre.autoconnect ? -1 : 1); + const tryToUnlock = unlockPin ? 1 : 0; + const hostEphemeralKeys = protocol_1.thp.getCurve25519KeyPair((0, crypto_1.randomBytes)(32)); + const handshakeInit = await (0, thpCall_1.thpCall)(device, "ThpHandshakeInitRequest", { + key: hostEphemeralKeys.publicKey, + tryToUnlock + }); + const { + trezorEncryptedStaticPubkey + } = handshakeInit.message; + const handshakeCredentials = protocol_1.thp.handleHandshakeInit({ + handshakeInitResponse: handshakeInit.message, + thpState, + hostStaticKeys, + hostEphemeralKeys, + knownCredentials, + tryToUnlock, + protobufEncoder: (name, data) => (0, protobuf_1.encodeMessage)(device.transport.getMessages(), name, data) + }); + const { + hostKey, + trezorKey, + hostEncryptedStaticPubkey + } = handshakeCredentials; + thpState.updateHandshakeCredentials({ + trezorEncryptedStaticPubkey, + hostEncryptedStaticPubkey, + handshakeHash: handshakeCredentials.handshakeHash, + trezorKey, + hostKey, + staticKey, + hostStaticPublicKey: hostStaticKeys.publicKey + }); + thpState.setPairingCredentials(handshakeCredentials.allCredentials); + const handshakeCompletion = await (0, thpCall_1.thpCall)(device, "ThpHandshakeCompletionRequest", { + hostPubkey: hostEncryptedStaticPubkey, + encryptedPayload: handshakeCredentials.encryptedPayload + }); + if (!handshakeCompletion.message.state && handshakeCredentials.credentials) { + thpState.removePairingCredential(handshakeCredentials.credentials); + const { + credential + } = handshakeCredentials.credentials; + const index = settings?.knownCredentials?.findIndex((c) => c.credential === credential) ?? -1; + if (index >= 0) { + settings?.knownCredentials?.splice(index, 1); + } + } + thpState.setIsPaired(handshakeCompletion.message.state !== 0); + thpState.setPhase("pairing"); + if (thpState.isAutoconnectPaired || handshakeCompletion.message.state === 2) { + await (0, thpCall_1.thpCall)(device, "ThpEndRequest", {}); + thpState.setPhase("paired"); + } + }; + exports2.thpHandshake = thpHandshake; + } +}); + +// node_modules/@trezor/connect/lib/device/thp/pairing.js +var require_pairing2 = __commonJS({ + "node_modules/@trezor/connect/lib/device/thp/pairing.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.thpPairing = exports2.thpPairingEnd = exports2.getThpCredentials = void 0; + var crypto_1 = __require("crypto"); + var protocol_1 = require_lib6(); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var DataManager_1 = require_DataManager(); + var events_1 = require_events(); + var thpCall_1 = require_thpCall(); + var processQrCodeTag = async (device, value) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const tagSha = (0, crypto_1.createHash)("sha256").update(thpState.handshakeCredentials.handshakeHash).update(Buffer.from(value, "hex")).digest("hex"); + const qrCodeSecret = await (0, thpCall_1.thpCall)(device, "ThpQrCodeTag", { + tag: tagSha + }); + protocol_1.thp.validateQrCodeTag(thpState.handshakeCredentials, value, qrCodeSecret.message.secret); + return qrCodeSecret; + }; + var processNfcTag = async (device, value) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + if (!thpState?.nfcSecret) { + throw new Error("missing nfcSecret"); + } + const tagSha = (0, crypto_1.createHash)("sha256").update(Buffer.from([protocol_1.thp.ThpPairingMethod.NFC])).update(thpState.handshakeCredentials.handshakeHash).update(Buffer.from(value, "hex")).digest("hex"); + const nfcTagTrezor = await (0, thpCall_1.thpCall)(device, "ThpNfcTagHost", { + tag: tagSha + }); + protocol_1.thp.validateNfcTag(thpState.handshakeCredentials, nfcTagTrezor.message.tag, thpState.nfcSecret); + return nfcTagTrezor; + }; + var processCodeEntry = async (device, value) => { + if (value.length !== 6) { + throw constants_1.ERRORS.TypedError("Device_ThpPairingTagInvalid"); + } + const codeValue = Buffer.from(value, "ascii"); + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const hostKeys = protocol_1.thp.getCpaceHostKeys(codeValue, thpState.handshakeCredentials.handshakeHash); + const tag = protocol_1.thp.getSharedSecret(thpState.handshakeCredentials.trezorCpacePublicKey, hostKeys.privateKey).toString("hex"); + const codeEntrySecret = await (0, thpCall_1.thpCall)(device, "ThpCodeEntryCpaceHostTag", { + tag, + cpace_host_public_key: hostKeys.publicKey.toString("hex") + }); + protocol_1.thp.validateCodeEntryTag(thpState.handshakeCredentials, value, codeEntrySecret.message.secret); + return codeEntrySecret; + }; + var processThpPairingResponse = (device, payload) => { + if ("selectedMethod" in payload) { + const selectedMethod2 = protocol_1.thp.getThpPairingMethod(payload.selectedMethod); + device.getThpState()?.setPairingMethod(selectedMethod2); + return (0, thpCall_1.thpCall)(device, "ThpSelectMethod", { + selected_pairing_method: selectedMethod2 + }); + } + const selectedMethod = device.getThpState()?.pairingMethod; + if (selectedMethod === protocol_1.ThpPairingMethod.QrCode) { + return processQrCodeTag(device, payload.tag); + } + if (selectedMethod === protocol_1.ThpPairingMethod.NFC) { + return processNfcTag(device, payload.tag); + } + if (selectedMethod === protocol_1.ThpPairingMethod.CodeEntry) { + return processCodeEntry(device, payload.tag); + } + throw constants_1.ERRORS.TypedError("Device_ThpPairingMethodsException"); + }; + var waitForPairingCancel = (device) => { + const readAbort = new AbortController(); + device.getThpState()?.setExpectedResponses([4]); + const readCancel = device.getCurrentSession().receive({ + signal: readAbort.signal + }); + return { + readAbort, + readCancel + }; + }; + var waitForPairingTag = async (device) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + if (thpState.pairingMethod === void 0) { + throw constants_1.ERRORS.TypedError("Device_ThpPairingMethodsException"); + } + const dfd = (0, utils_1.createDeferred)(); + const { + readAbort, + readCancel + } = waitForPairingCancel(device); + const cancelResult = readCancel.then((readResult) => { + if (readResult.success) { + let error; + if (readResult.payload.type === "Failure" && readResult.payload.message.message) { + error = readResult.payload.message.message; + } else { + error = `Pairing tag cancelled (${readResult.payload.type})`; + } + dfd.resolve({ + error + }); + } + }).catch(() => { + }); + thpState.setPairingTagPromise({ + abort: async () => { + readAbort.abort(); + await cancelResult; + } + }); + const payload = { + availableMethods: thpState.handshakeCredentials.pairingMethods, + selectedMethod: thpState.pairingMethod, + nfcData: thpState.nfcData?.toString("hex") + }; + device.prompt(events_1.DEVICE.THP_PAIRING, { + payload + }).then((response) => { + if (response.success) { + dfd.resolve(response.payload); + } else { + (0, thpCall_1.abortThpWorkflow)(device).then(() => { + dfd.resolve({ + error: response.error.message + }); + }); + } + }); + const pairingResponse = await dfd.promise; + readAbort.abort(); + await readCancel; + thpState.setPairingTagPromise(void 0); + if ("error" in pairingResponse) { + throw new Error(pairingResponse.error); + } + await new Promise((resolve) => setTimeout(resolve, 500)); + return processThpPairingResponse(device, pairingResponse).catch((e) => { + if (e.code === "Failure_FirmwareError") { + throw constants_1.ERRORS.TypedError("Device_ThpPairingTagInvalid", e.message); + } + throw constants_1.ERRORS.TypedError(e.code, e.message); + }); + }; + var getThpCredentials = async (device, autoconnect = false) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const credentials = await (0, thpCall_1.thpCall)(device, "ThpCredentialRequest", { + autoconnect, + host_static_public_key: thpState.handshakeCredentials.hostStaticPublicKey.toString("hex"), + credential: thpState.pairingCredentials[0]?.credential + }); + return { + ...credentials.message, + autoconnect + }; + }; + exports2.getThpCredentials = getThpCredentials; + var thpPairingEnd = (device) => { + device.getThpState()?.setPhase("paired"); + return (0, thpCall_1.thpCall)(device, "ThpEndRequest", {}); + }; + exports2.thpPairingEnd = thpPairingEnd; + var thpPairing = async (device) => { + const thpState = device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + if (thpState.isPaired && thpState.pairingMethod !== protocol_1.thp.ThpPairingMethod.SkipPairing) { + if (!thpState.isAutoconnectPaired) { + await (0, exports2.getThpCredentials)(device, false); + } + return (0, exports2.thpPairingEnd)(device); + } + const [selected_pairing_method] = thpState.handshakeCredentials.pairingMethods; + thpState.setPairingMethod(selected_pairing_method); + const settings = DataManager_1.DataManager.getSettings("thp"); + await (0, thpCall_1.thpCall)(device, "ThpPairingRequest", { + host_name: settings?.hostName || "Unknown hostName", + app_name: settings?.appName || "Unknown appName" + }); + const selectMethod = await (0, thpCall_1.thpCall)(device, "ThpSelectMethod", { + selected_pairing_method + }); + if (selectMethod.type === "ThpEndResponse") { + thpState.setIsPaired(true); + device.getThpState()?.setPhase("paired"); + return; + } + if (selectMethod.type === "ThpCodeEntryCommitment") { + const codeEntryChallenge = (0, crypto_1.randomBytes)(32); + const handshakeCommitment = Buffer.from(selectMethod.message.commitment, "hex"); + thpState.updateHandshakeCredentials({ + handshakeCommitment, + codeEntryChallenge + }); + const codeEntryCpace = await (0, thpCall_1.thpCall)(device, "ThpCodeEntryChallenge", { + challenge: codeEntryChallenge.toString("hex") + }); + thpState.updateHandshakeCredentials({ + trezorCpacePublicKey: Buffer.from(codeEntryCpace.message.cpace_trezor_public_key, "hex") + }); + await waitForPairingTag(device); + } + if (selectMethod.type === "ThpPairingPreparationsFinished") { + if (thpState.pairingMethod === protocol_1.thp.ThpPairingMethod.NFC) { + thpState.setNfcSecret((0, crypto_1.randomBytes)(16)); + } + await waitForPairingTag(device); + } + const credentials = await (0, exports2.getThpCredentials)(device, false); + device.emit(events_1.DEVICE.THP_CREDENTIALS_CHANGED, { + credentials, + staticKey: thpState.handshakeCredentials.staticKey.toString("hex") + }); + const settings1 = DataManager_1.DataManager.getSettings("thp"); + if (settings1) { + settings1.knownCredentials?.push(credentials); + settings1.staticKey = thpState.handshakeCredentials.staticKey.toString("hex"); + } + thpState.setPairingCredentials([credentials]); + thpState.setIsPaired(true); + await (0, exports2.thpPairingEnd)(device); + }; + exports2.thpPairing = thpPairing; + } +}); + +// node_modules/@trezor/connect/lib/device/thp/session.js +var require_session = __commonJS({ + "node_modules/@trezor/connect/lib/device/thp/session.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createThpSession = void 0; + var thpCall_1 = require_thpCall(); + var createThpSession = async (device, deriveCardano) => { + let passphrase; + if (device.features.passphrase_protection === false) { + passphrase = { + passphrase: "" + }; + } else { + passphrase = await device.prompt("passphrase", {}).then((promptRes) => { + if (!promptRes.success) { + return { + passphrase: "" + }; + } + return promptRes.payload.passphraseOnDevice ? { + on_device: true + } : { + passphrase: promptRes.payload.value.normalize("NFKD") + }; + }); + } + await (0, thpCall_1.thpCall)(device, "ThpCreateNewSession", { + ...passphrase, + derive_cardano: deriveCardano + }); + return 0; + }; + exports2.createThpSession = createThpSession; + } +}); + +// node_modules/@trezor/connect/lib/device/thp/index.js +var require_thp2 = __commonJS({ + "node_modules/@trezor/connect/lib/device/thp/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getThpChannel = exports2.createThpSession = exports2.getThpCredentials = exports2.abortThpWorkflow = void 0; + var device_1 = require_device2(); + var handshake_1 = require_handshake(); + var pairing_1 = require_pairing2(); + var thpCall_1 = require_thpCall(); + Object.defineProperty(exports2, "abortThpWorkflow", { + enumerable: true, + get: function() { + return thpCall_1.abortThpWorkflow; + } + }); + var pairing_2 = require_pairing2(); + Object.defineProperty(exports2, "getThpCredentials", { + enumerable: true, + get: function() { + return pairing_2.getThpCredentials; + } + }); + var session_1 = require_session(); + Object.defineProperty(exports2, "createThpSession", { + enumerable: true, + get: function() { + return session_1.createThpSession; + } + }); + var getThpChannel = async (device, withInteraction) => { + const thpState = device.getThpState(); + if (!thpState) return; + try { + if (thpState.phase === "handshake") { + await (0, handshake_1.createThpChannel)(device); + try { + await (0, handshake_1.thpHandshake)(device); + } catch (error) { + const isPinLocked = error.code === "ThpDeviceLocked"; + const isTransportBusy = error.message === "ThpTransportBusy"; + if (!isPinLocked && !isTransportBusy) throw error; + thpState.resetState(); + if (isPinLocked && !withInteraction) return "pin-locked"; + if (isPinLocked) { + device.emit(device_1.DEVICE.BUTTON, { + device, + payload: { + code: "ButtonRequest_PinEntry" + } + }); + } + await (0, handshake_1.createThpChannel)(device); + await (0, handshake_1.thpHandshake)(device, isPinLocked); + } + } + if (thpState.phase === "pairing" && withInteraction) { + await (0, pairing_1.thpPairing)(device); + } + if (thpState.phase !== "paired") { + return "thp-locked"; + } + } catch (error) { + thpState.resetState(); + throw error; + } + }; + exports2.getThpChannel = getThpChannel; + } +}); + +// node_modules/@trezor/connect/lib/api/thpGetCredentials.js +var require_thpGetCredentials = __commonJS({ + "node_modules/@trezor/connect/lib/api/thpGetCredentials.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var DataManager_1 = require_DataManager(); + var thp_1 = require_thp2(); + var events_1 = require_events(); + var ThpGetCredentials = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = true; + } + async run() { + const thpState = this.device.getThpState(); + if (!thpState?.handshakeCredentials) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const credentials = await (0, thp_1.getThpCredentials)(this.device, true); + thpState.setPairingCredentials([credentials]); + DataManager_1.DataManager.getSettings("thp")?.knownCredentials?.push(credentials); + this.device.emit(events_1.DEVICE.THP_CREDENTIALS_CHANGED, { + credentials, + staticKey: thpState.handshakeCredentials.staticKey.toString("hex") + }); + return credentials; + } + }; + exports2.default = ThpGetCredentials; + } +}); + +// node_modules/@trezor/connect/lib/api/thpRemoveCredentials.js +var require_thpRemoveCredentials = __commonJS({ + "node_modules/@trezor/connect/lib/api/thpRemoveCredentials.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var DataManager_1 = require_DataManager(); + var events_1 = require_events(); + var ThpRemoveCredentials = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS]; + this.requiredPermissions = ["management"]; + this.useDeviceState = false; + this.skipFinalReload = true; + } + run() { + const thpState = this.device.getThpState(); + if (!thpState) { + throw constants_1.ERRORS.TypedError("Device_ThpStateMissing"); + } + const knownCredentials = DataManager_1.DataManager.getSettings("thp")?.knownCredentials; + if (knownCredentials) { + const toRemoveCredentials = (this.payload.credentials || thpState.pairingCredentials).map((c) => c.credential); + const index = knownCredentials.findIndex(({ + credential + }) => toRemoveCredentials.includes(credential)); + if (index >= 0) { + knownCredentials.splice(index, 1); + } + } + thpState.resetState(); + return Promise.resolve({ + message: "Success" + }); + } + }; + exports2.default = ThpRemoveCredentials; + } +}); + +// node_modules/@trezor/connect/lib/api/verifyMessage.js +var require_verifyMessage = __commonJS({ + "node_modules/@trezor/connect/lib/api/verifyMessage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var schema_utils_1 = require_lib2(); + var constants_1 = require_constants(); + var AbstractMethod_1 = require_AbstractMethod(); + var paramsValidator_1 = require_paramsValidator(); + var coinInfo_1 = require_coinInfo(); + var types_1 = require_types9(); + var formatUtils_1 = require_formatUtils(); + var pathUtils_1 = require_pathUtils(); + var VerifyMessage = class extends AbstractMethod_1.AbstractMethod { + init() { + this.requiredPermissions = ["read", "write"]; + const { + payload + } = this; + (0, schema_utils_1.Assert)(types_1.VerifyMessage, payload); + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin); + if (!coinInfo) { + throw constants_1.ERRORS.TypedError("Method_UnknownCoin"); + } else { + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange); + } + const messageHex = payload.hex ? (0, formatUtils_1.messageToHex)(payload.message) : Buffer.from(payload.message, "utf8").toString("hex"); + const signatureHex = Buffer.from(payload.signature, "base64").toString("hex"); + this.params = { + address: payload.address, + signature: signatureHex, + message: messageHex, + coin_name: coinInfo.name + }; + } + get info() { + const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin); + if (!coinInfo) { + return "Verify message"; + } + return (0, pathUtils_1.getLabel)("Verify #NETWORK message", coinInfo); + } + async run() { + const cmd = this.device.getCommands(); + const response = await cmd.typedCall("VerifyMessage", "Success", this.params); + return response.message; + } + }; + exports2.default = VerifyMessage; + } +}); + +// node_modules/@trezor/connect/lib/api/wipeDevice.js +var require_wipeDevice = __commonJS({ + "node_modules/@trezor/connect/lib/api/wipeDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var AbstractMethod_1 = require_AbstractMethod(); + var events_1 = require_events(); + var paramsValidator_1 = require_paramsValidator(); + var WipeDevice = class extends AbstractMethod_1.AbstractMethod { + init() { + this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS, events_1.UI.BOOTLOADER]; + this.useDeviceState = false; + this.requiredPermissions = ["management"]; + this.skipFinalReload = this.payload.skipFinalReload ?? false; + this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange); + } + get confirmation() { + return { + view: "device-management", + customConfirmButton: { + className: "wipe", + label: `Wipe` + }, + label: "Are you sure you want to wipe your device?" + }; + } + get info() { + return "Wipe device"; + } + async run() { + const cmd = this.device.getCommands(); + if (this.device.isBootloader()) { + this.device.emit(events_1.DEVICE.BUTTON, { + device: this.device, + payload: { + code: "ButtonRequest_WipeDevice" + } + }); + } + const response = await cmd.typedCall("WipeDevice", "Success"); + const thpState = this.device.getThpState(); + if (thpState) { + thpState.resetState(); + } + return response.message; + } + }; + exports2.default = WipeDevice; + } +}); + +// node_modules/@trezor/connect/lib/api/index.js +var require_api5 = __commonJS({ + "node_modules/@trezor/connect/lib/api/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.setProxy = exports2.setBusy = exports2.setBrightness = exports2.loadDevice = exports2.resetDevice = exports2.requestLogin = exports2.recoveryDevice = exports2.pushTransaction = exports2.getSettings = exports2.getPublicKey = exports2.getOwnershipProof = exports2.getOwnershipId = exports2.getNonce = exports2.getFirmwareHash = exports2.getFeatures = exports2.getDeviceState = exports2.getCoinInfo = exports2.getAddress = exports2.getAccountInfo = exports2.getAccountDescriptor = exports2.discoverAccounts = exports2.composeTransaction = exports2.evoluGetDelegatedIdentityKey = exports2.evoluSignRegistrationRequest = exports2.evoluGetNode = exports2.cipherKeyValue = exports2.changeWipeCode = exports2.changePin = exports2.changeLanguage = exports2.blockchainUnsubscribeFiatRates = exports2.blockchainUnsubscribe = exports2.blockchainSubscribeFiatRates = exports2.blockchainSubscribe = exports2.blockchainSetCustomBackend = exports2.blockchainGetTransactions = exports2.blockchainGetFiatRatesForTimestamps = exports2.blockchainEvmRpcCall = exports2.blockchainGetInfo = exports2.blockchainGetCurrentFiatRates = exports2.blockchainGetAccountBalanceHistory = exports2.blockchainEstimateFee = exports2.blockchainDisconnect = exports2.bleUnpair = exports2.backupDevice = exports2.showDeviceTutorial = exports2.cancelCoinjoinAuthorization = exports2.authorizeCoinjoin = exports2.authenticateDevice = exports2.applySettings = exports2.applyFlags = void 0; + exports2.wipeDevice = exports2.verifyMessage = exports2.thpRemoveCredentials = exports2.thpGetCredentials = exports2.unlockPath = exports2.signTransaction = exports2.signMessage = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var applyFlags_1 = require_applyFlags(); + Object.defineProperty(exports2, "applyFlags", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(applyFlags_1).default; + } + }); + var applySettings_1 = require_applySettings2(); + Object.defineProperty(exports2, "applySettings", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(applySettings_1).default; + } + }); + var authenticateDevice_1 = require_authenticateDevice2(); + Object.defineProperty(exports2, "authenticateDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(authenticateDevice_1).default; + } + }); + var authorizeCoinjoin_1 = require_authorizeCoinjoin2(); + Object.defineProperty(exports2, "authorizeCoinjoin", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(authorizeCoinjoin_1).default; + } + }); + var cancelCoinjoinAuthorization_1 = require_cancelCoinjoinAuthorization2(); + Object.defineProperty(exports2, "cancelCoinjoinAuthorization", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(cancelCoinjoinAuthorization_1).default; + } + }); + var showDeviceTutorial_1 = require_showDeviceTutorial(); + Object.defineProperty(exports2, "showDeviceTutorial", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(showDeviceTutorial_1).default; + } + }); + var backupDevice_1 = require_backupDevice(); + Object.defineProperty(exports2, "backupDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(backupDevice_1).default; + } + }); + var bleUnpair_1 = require_bleUnpair(); + Object.defineProperty(exports2, "bleUnpair", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(bleUnpair_1).default; + } + }); + var blockchainDisconnect_1 = require_blockchainDisconnect(); + Object.defineProperty(exports2, "blockchainDisconnect", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainDisconnect_1).default; + } + }); + var blockchainEstimateFee_1 = require_blockchainEstimateFee(); + Object.defineProperty(exports2, "blockchainEstimateFee", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainEstimateFee_1).default; + } + }); + var blockchainGetAccountBalanceHistory_1 = require_blockchainGetAccountBalanceHistory(); + Object.defineProperty(exports2, "blockchainGetAccountBalanceHistory", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainGetAccountBalanceHistory_1).default; + } + }); + var blockchainGetCurrentFiatRates_1 = require_blockchainGetCurrentFiatRates(); + Object.defineProperty(exports2, "blockchainGetCurrentFiatRates", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainGetCurrentFiatRates_1).default; + } + }); + var blockchainGetInfo_1 = require_blockchainGetInfo(); + Object.defineProperty(exports2, "blockchainGetInfo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainGetInfo_1).default; + } + }); + var blockchainEvmRpcCall_1 = require_blockchainEvmRpcCall(); + Object.defineProperty(exports2, "blockchainEvmRpcCall", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainEvmRpcCall_1).default; + } + }); + var blockchainGetFiatRatesForTimestamps_1 = require_blockchainGetFiatRatesForTimestamps(); + Object.defineProperty(exports2, "blockchainGetFiatRatesForTimestamps", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainGetFiatRatesForTimestamps_1).default; + } + }); + var blockchainGetTransactions_1 = require_blockchainGetTransactions(); + Object.defineProperty(exports2, "blockchainGetTransactions", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainGetTransactions_1).default; + } + }); + var blockchainSetCustomBackend_1 = require_blockchainSetCustomBackend(); + Object.defineProperty(exports2, "blockchainSetCustomBackend", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainSetCustomBackend_1).default; + } + }); + var blockchainSubscribe_1 = require_blockchainSubscribe(); + Object.defineProperty(exports2, "blockchainSubscribe", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainSubscribe_1).default; + } + }); + var blockchainSubscribeFiatRates_1 = require_blockchainSubscribeFiatRates(); + Object.defineProperty(exports2, "blockchainSubscribeFiatRates", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainSubscribeFiatRates_1).default; + } + }); + var blockchainUnsubscribe_1 = require_blockchainUnsubscribe(); + Object.defineProperty(exports2, "blockchainUnsubscribe", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainUnsubscribe_1).default; + } + }); + var blockchainUnsubscribeFiatRates_1 = require_blockchainUnsubscribeFiatRates(); + Object.defineProperty(exports2, "blockchainUnsubscribeFiatRates", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(blockchainUnsubscribeFiatRates_1).default; + } + }); + var changeLanguage_1 = require_changeLanguage2(); + Object.defineProperty(exports2, "changeLanguage", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(changeLanguage_1).default; + } + }); + var changePin_1 = require_changePin(); + Object.defineProperty(exports2, "changePin", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(changePin_1).default; + } + }); + var changeWipeCode_1 = require_changeWipeCode(); + Object.defineProperty(exports2, "changeWipeCode", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(changeWipeCode_1).default; + } + }); + var cipherKeyValue_1 = require_cipherKeyValue2(); + Object.defineProperty(exports2, "cipherKeyValue", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(cipherKeyValue_1).default; + } + }); + var evoluGetNode_1 = require_evoluGetNode(); + Object.defineProperty(exports2, "evoluGetNode", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(evoluGetNode_1).default; + } + }); + var evoluSignRegistrationRequest_1 = require_evoluSignRegistrationRequest(); + Object.defineProperty(exports2, "evoluSignRegistrationRequest", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(evoluSignRegistrationRequest_1).default; + } + }); + var evoluGetDelegatedIdentityKey_1 = require_evoluGetDelegatedIdentityKey(); + Object.defineProperty(exports2, "evoluGetDelegatedIdentityKey", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(evoluGetDelegatedIdentityKey_1).default; + } + }); + var composeTransaction_1 = require_composeTransaction(); + Object.defineProperty(exports2, "composeTransaction", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(composeTransaction_1).default; + } + }); + var discoverAccounts_1 = require_discoverAccounts2(); + Object.defineProperty(exports2, "discoverAccounts", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(discoverAccounts_1).default; + } + }); + var getAccountDescriptor_1 = require_getAccountDescriptor2(); + Object.defineProperty(exports2, "getAccountDescriptor", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAccountDescriptor_1).default; + } + }); + var getAccountInfo_1 = require_getAccountInfo2(); + Object.defineProperty(exports2, "getAccountInfo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAccountInfo_1).default; + } + }); + var getAddress_1 = require_getAddress2(); + Object.defineProperty(exports2, "getAddress", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getAddress_1).default; + } + }); + var getCoinInfo_1 = require_getCoinInfo(); + Object.defineProperty(exports2, "getCoinInfo", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getCoinInfo_1).default; + } + }); + var getDeviceState_1 = require_getDeviceState(); + Object.defineProperty(exports2, "getDeviceState", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getDeviceState_1).default; + } + }); + var getFeatures_1 = require_getFeatures(); + Object.defineProperty(exports2, "getFeatures", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getFeatures_1).default; + } + }); + var getFirmwareHash_1 = require_getFirmwareHash(); + Object.defineProperty(exports2, "getFirmwareHash", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getFirmwareHash_1).default; + } + }); + var getNonce_1 = require_getNonce(); + Object.defineProperty(exports2, "getNonce", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getNonce_1).default; + } + }); + var getOwnershipId_1 = require_getOwnershipId2(); + Object.defineProperty(exports2, "getOwnershipId", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getOwnershipId_1).default; + } + }); + var getOwnershipProof_1 = require_getOwnershipProof2(); + Object.defineProperty(exports2, "getOwnershipProof", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getOwnershipProof_1).default; + } + }); + var getPublicKey_1 = require_getPublicKey2(); + Object.defineProperty(exports2, "getPublicKey", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getPublicKey_1).default; + } + }); + var getSettings_1 = require_getSettings(); + Object.defineProperty(exports2, "getSettings", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(getSettings_1).default; + } + }); + var pushTransaction_1 = require_pushTransaction3(); + Object.defineProperty(exports2, "pushTransaction", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(pushTransaction_1).default; + } + }); + var recoveryDevice_1 = require_recoveryDevice2(); + Object.defineProperty(exports2, "recoveryDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(recoveryDevice_1).default; + } + }); + var requestLogin_1 = require_requestLogin2(); + Object.defineProperty(exports2, "requestLogin", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(requestLogin_1).default; + } + }); + var resetDevice_1 = require_resetDevice(); + Object.defineProperty(exports2, "resetDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(resetDevice_1).default; + } + }); + var loadDevice_1 = require_loadDevice(); + Object.defineProperty(exports2, "loadDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(loadDevice_1).default; + } + }); + var setBrightness_1 = require_setBrightness(); + Object.defineProperty(exports2, "setBrightness", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(setBrightness_1).default; + } + }); + var setBusy_1 = require_setBusy(); + Object.defineProperty(exports2, "setBusy", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(setBusy_1).default; + } + }); + var setProxy_1 = require_setProxy(); + Object.defineProperty(exports2, "setProxy", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(setProxy_1).default; + } + }); + var signMessage_1 = require_signMessage(); + Object.defineProperty(exports2, "signMessage", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(signMessage_1).default; + } + }); + var signTransaction_1 = require_signTransaction(); + Object.defineProperty(exports2, "signTransaction", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(signTransaction_1).default; + } + }); + var unlockPath_1 = require_unlockPath2(); + Object.defineProperty(exports2, "unlockPath", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(unlockPath_1).default; + } + }); + var thpGetCredentials_1 = require_thpGetCredentials(); + Object.defineProperty(exports2, "thpGetCredentials", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(thpGetCredentials_1).default; + } + }); + var thpRemoveCredentials_1 = require_thpRemoveCredentials(); + Object.defineProperty(exports2, "thpRemoveCredentials", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(thpRemoveCredentials_1).default; + } + }); + var verifyMessage_1 = require_verifyMessage(); + Object.defineProperty(exports2, "verifyMessage", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(verifyMessage_1).default; + } + }); + var wipeDevice_1 = require_wipeDevice(); + Object.defineProperty(exports2, "wipeDevice", { + enumerable: true, + get: function() { + return tslib_1.__importDefault(wipeDevice_1).default; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/core/method.js +var require_method2 = __commonJS({ + "node_modules/@trezor/connect/lib/core/method.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getMethod = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var Methods = tslib_1.__importStar(require_api5()); + var errors_1 = require_errors(); + var network_1 = require_network(); + var getMethodModule = (method) => network_1.MODULES.find((module3) => method.startsWith(module3)); + var getMethod = async (message) => { + const { + method + } = message.payload; + if (typeof method !== "string") { + throw (0, errors_1.TypedError)("Method_InvalidParameter", "Message method is not set"); + } + const methodModule = getMethodModule(method); + const methods = methodModule ? await Promise.resolve(`${`../api/${methodModule}/api/index.js`}`).then((s) => tslib_1.__importStar(__require(s))) : Methods; + const MethodConstructor = methods[method]; + if (MethodConstructor) { + return new MethodConstructor(message); + } + throw (0, errors_1.TypedError)("Method_InvalidParameter", `Method ${method} not found`); + }; + exports2.getMethod = getMethod; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/parseFirmwareHeaders.js +var require_parseFirmwareHeaders = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/parseFirmwareHeaders.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseFirmwareHeaders = void 0; + var parseFirmwareHeaders = (buff) => { + const vendorHeader = buff.subarray(0, 4).toString("utf8"); + let trezorImageHeader = ""; + let restbuff; + if (vendorHeader === "TRZV") { + const vendorHeaderLength = buff.readUInt32LE(4); + trezorImageHeader = buff.subarray(vendorHeaderLength, vendorHeaderLength + 4).toString("utf8"); + restbuff = buff.subarray(vendorHeaderLength + 4); + } else if (vendorHeader === "TRZR") { + restbuff = buff.subarray(256 + 4); + trezorImageHeader = buff.subarray(256, 256 + 4).toString("utf8"); + } else { + restbuff = buff.subarray(4); + trezorImageHeader = buff.subarray(0, 4).toString("utf8"); + } + if (trezorImageHeader !== "TRZF") { + throw new Error(`unexpected header ${vendorHeader}`); + } + const version_major = restbuff.readInt8(12); + const version_minor = restbuff.readInt8(13); + const version_patch = restbuff.readInt8(14); + const version = [version_major, version_minor, version_patch]; + return { + version + }; + }; + exports2.parseFirmwareHeaders = parseFirmwareHeaders; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/getBinary.js +var require_getBinary = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/getBinary.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getBinaryOptional = exports2.getBinary = void 0; + var utils_1 = require_lib(); + var parseFirmwareHeaders_1 = require_parseFirmwareHeaders(); + var constants_1 = require_constants(); + var assets_1 = require_assets(); + var MIN_FIRMWARE_SIZE_BYTES = 200; + var getBinary = async ({ + baseUrl, + path: path2, + release + }) => { + const sanitizedBaseUrl = (0, utils_1.removeTrailingSlashes)(baseUrl); + const url = `${sanitizedBaseUrl}/${path2}`; + const binaryArrayBuffer = await (0, assets_1.httpRequest)(url, "binary"); + if (binaryArrayBuffer.byteLength < MIN_FIRMWARE_SIZE_BYTES) { + throw constants_1.ERRORS.TypedError("Runtime", "Firmware binary is too small"); + } + const firmwareBuffer = Buffer.from(binaryArrayBuffer); + const { + version: binaryVersion + } = (0, parseFirmwareHeaders_1.parseFirmwareHeaders)(firmwareBuffer); + return { + binary: binaryArrayBuffer, + binaryVersion, + release + }; + }; + exports2.getBinary = getBinary; + var getBinaryOptional = async (params) => { + try { + return await (0, exports2.getBinary)(params); + } catch { + return null; + } + }; + exports2.getBinaryOptional = getBinaryOptional; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/modifyFirmware.js +var require_modifyFirmware = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/modifyFirmware.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.stripFwHeaders = exports2.shouldStripFwHeaders = void 0; + var utils_1 = require_lib(); + var shouldStripFwHeaders = (features) => { + if (features.major_version === 2) return false; + return utils_1.versionUtils.isNewerOrEqual([features.major_version, features.minor_version, features.patch_version], [1, 8, 0]); + }; + exports2.shouldStripFwHeaders = shouldStripFwHeaders; + var stripFwHeaders = (fw) => { + const fwView = new Uint8Array(fw); + if (String.fromCharCode(...Array.from(fwView.slice(0, 4))) === "TRZR" && String.fromCharCode(...Array.from(fwView.slice(256, 260))) === "TRZF") { + return fw.slice(256); + } + return fw; + }; + exports2.stripFwHeaders = stripFwHeaders; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/uploadFirmware.js +var require_uploadFirmware = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/uploadFirmware.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.uploadFirmware = void 0; + var transport_1 = require_lib10(); + var constants_1 = require_constants(); + var events_1 = require_events(); + var postConfirmationMessage = (device, updateFlowType) => { + const freshInstall = device.features.firmware_present === false; + if (freshInstall || updateFlowType === "reboot_and_upgrade") return; + device.emit(events_1.DEVICE.BUTTON, { + device, + payload: { + code: "ButtonRequest_FirmwareUpdate" + } + }); + }; + var postProgressMessage = (device, progress, postMessage) => { + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, { + device: device.toMessageObject(), + operation: "flashing", + progress + })); + }; + var FIRMWARE_ERASE_TIMEOUT_MILLISECONDS = 15e3; + var uploadFirmware = async ({ + typedCall, + postMessage, + device, + firmwareUploadRequest: { + payload + }, + updateFlowType + }) => { + if (device.features.major_version === 1) { + postConfirmationMessage(device, updateFlowType); + const timeoutId = setTimeout(() => { + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS_UNEXPECTED_DELAY, {})); + }, FIRMWARE_ERASE_TIMEOUT_MILLISECONDS); + await typedCall("FirmwareErase", "Success", {}); + clearTimeout(timeoutId); + postProgressMessage(device, 0, postMessage); + let i = 0; + const progressTimer = setInterval(() => { + i++; + postProgressMessage(device, Math.min(i * 2, 99), postMessage); + }, 300); + const message = await typedCall("FirmwareUpload", "Success", { + payload + }).finally(() => { + clearInterval(progressTimer); + }); + postProgressMessage(device, 100, postMessage); + return message; + } + if (device.features.major_version === 2) { + postConfirmationMessage(device, updateFlowType); + const length = payload.byteLength; + let progress = 0; + let response = await typedCall("FirmwareErase", ["FirmwareRequest", "Success"], { + length + }); + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, { + device: device.toMessageObject(), + operation: "start-flashing", + progress + })); + while (response.type !== "Success") { + const start = response.message.offset; + const end = response.message.offset + response.message.length; + const chunk = payload.slice(start, end); + const progressStart = Math.round(start / length * 100); + const progressEnd = Math.round(end / length * 100); + const progressDiff = progressEnd - progressStart; + device.transport.on(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS, (p) => { + const newProgress = progressStart + Math.floor(progressDiff * p); + if (start > 0 && newProgress > progress) { + progress = newProgress; + postProgressMessage(device, progress, postMessage); + } + }); + if (start > 0) { + postProgressMessage(device, progressStart, postMessage); + } + response = await typedCall("FirmwareUpload", ["FirmwareRequest", "Success"], { + payload: chunk + }).finally(() => { + device.transport.removeAllListeners(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS); + }); + } + postProgressMessage(device, 100, postMessage); + return response.message; + } + throw constants_1.ERRORS.TypedError("Runtime", "uploadFirmware: unknown major_version"); + }; + exports2.uploadFirmware = uploadFirmware; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/calculateFirmwareHash.js +var require_calculateFirmwareHash = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/calculateFirmwareHash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.calculateFirmwareHash = void 0; + var blakejs_1 = require_blakejs(); + var device_utils_1 = require_lib22(); + var utils_1 = require_lib(); + var SIZE_T1B1 = (7 * 128 + 64) * 1024; + var SIZE_T2T1 = 13 * 128 * 1024; + var SIZE_T2B1 = 13 * 128 * 1024; + var SIZE_T3B1 = 208 * 8 * 1024; + var SIZE_T3T1 = 208 * 8 * 1024; + var SIZE_T3W1 = 417 * 8 * 1024; + var firmwareSizeMap = { + [device_utils_1.DeviceModelInternal.T1B1]: SIZE_T1B1, + [device_utils_1.DeviceModelInternal.T2T1]: SIZE_T2T1, + [device_utils_1.DeviceModelInternal.T2B1]: SIZE_T2B1, + [device_utils_1.DeviceModelInternal.T3B1]: SIZE_T3B1, + [device_utils_1.DeviceModelInternal.T3T1]: SIZE_T3T1, + [device_utils_1.DeviceModelInternal.T3W1]: SIZE_T3W1 + }; + var getSizeForModel = ({ + internal_model, + firmwareVersion + }) => { + const size = firmwareSizeMap[internal_model] ?? SIZE_T1B1; + if (firmwareVersion !== void 0 && internal_model === device_utils_1.DeviceModelInternal.T3W1 && utils_1.versionUtils.isEqual(firmwareVersion, [2, 9, 3])) { + return size - 16 * 1024; + } + return size; + }; + var calculateFirmwareHash = ({ + internal_model, + firmwareVersion, + fw, + key + }) => { + const size = getSizeForModel({ + internal_model, + firmwareVersion + }); + const padding = size - fw.byteLength; + if (padding < 0) { + throw new Error("Firmware too big"); + } + const data = new Uint8Array(new ArrayBuffer(size)); + data.set(new Uint8Array(fw)); + if (padding > 0) { + const zeroBytes = Buffer.alloc(padding); + zeroBytes.fill(Buffer.from("ff", "hex")); + data.set(zeroBytes, fw.byteLength); + } + return { + hash: key && key.length > 0 ? (0, blakejs_1.blake2sHex)(data, key) : (0, blakejs_1.blake2sHex)(data), + challenge: key ? key.toString("hex") : "" + }; + }; + exports2.calculateFirmwareHash = calculateFirmwareHash; + } +}); + +// node_modules/@trezor/connect/lib/api/firmware/index.js +var require_firmware3 = __commonJS({ + "node_modules/@trezor/connect/lib/api/firmware/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseFirmwareHeaders = exports2.calculateFirmwareHash = exports2.uploadFirmware = exports2.stripFwHeaders = exports2.shouldStripFwHeaders = exports2.getBinaryOptional = exports2.getBinary = void 0; + var getBinary_1 = require_getBinary(); + Object.defineProperty(exports2, "getBinary", { + enumerable: true, + get: function() { + return getBinary_1.getBinary; + } + }); + Object.defineProperty(exports2, "getBinaryOptional", { + enumerable: true, + get: function() { + return getBinary_1.getBinaryOptional; + } + }); + var modifyFirmware_1 = require_modifyFirmware(); + Object.defineProperty(exports2, "shouldStripFwHeaders", { + enumerable: true, + get: function() { + return modifyFirmware_1.shouldStripFwHeaders; + } + }); + Object.defineProperty(exports2, "stripFwHeaders", { + enumerable: true, + get: function() { + return modifyFirmware_1.stripFwHeaders; + } + }); + var uploadFirmware_1 = require_uploadFirmware(); + Object.defineProperty(exports2, "uploadFirmware", { + enumerable: true, + get: function() { + return uploadFirmware_1.uploadFirmware; + } + }); + var calculateFirmwareHash_1 = require_calculateFirmwareHash(); + Object.defineProperty(exports2, "calculateFirmwareHash", { + enumerable: true, + get: function() { + return calculateFirmwareHash_1.calculateFirmwareHash; + } + }); + var parseFirmwareHeaders_1 = require_parseFirmwareHeaders(); + Object.defineProperty(exports2, "parseFirmwareHeaders", { + enumerable: true, + get: function() { + return parseFirmwareHeaders_1.parseFirmwareHeaders; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/core/onCallFirmwareUpdate.js +var require_onCallFirmwareUpdate = __commonJS({ + "node_modules/@trezor/connect/lib/core/onCallFirmwareUpdate.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.onCallFirmwareUpdate = void 0; + var utils_1 = require_lib(); + var versionUtils_1 = require_versionUtils(); + var firmware_1 = require_firmware3(); + var constants_1 = require_constants(); + var firmwareInfo_1 = require_firmwareInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var firmwareUtils_1 = require_firmwareUtils2(); + var waitForReconnectedDevice = async ({ + bootloader, + method, + intermediary + }, { + deviceList, + device, + registerEvents, + postMessage, + log: log2, + abortSignal, + uiPromises + }) => { + const target = intermediary || !bootloader ? "normal" : "bootloader"; + let i = 0; + if (method !== "auto") { + log2.debug("onCallFirmwareUpdate", "waiting for device to disconnect"); + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, { + device: device.toMessageObject(), + disconnected: false, + method, + target, + i + })); + await new Promise((resolve) => { + deviceList.once("device-disconnect", resolve); + }); + } + log2.debug("onCallFirmwareUpdate", `waiting for device to reconnect in ${bootloader ? "bootloader" : "normal"} mode`); + let reconnectedDevice; + let thpPairingError = false; + do { + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, { + device: device.toMessageObject(), + disconnected: true, + method, + target, + i + })); + await (0, utils_1.resolveAfter)(2e3); + try { + reconnectedDevice = deviceList.getOnlyDevice(); + } catch { + } + if (reconnectedDevice && !reconnectedDevice.features) { + log2.debug("onCallFirmwareUpdate", "we were unable to read device.features on the first interaction after seeing it, retrying..."); + let runFn; + if (reconnectedDevice.getThpState()?.properties) { + const uiPromise = uiPromises.create(events_1.UI.RECEIVE_CONFIRMATION, reconnectedDevice); + postMessage((0, events_1.createUiMessage)(events_1.UI.REQUEST_CONFIRMATION, { + view: thpPairingError ? "thp-pairing-failed" : "thp-pairing-start" + })); + const uiResp = await uiPromise.promise; + if (!uiResp.payload) { + throw constants_1.ERRORS.TypedError("Method_PermissionsNotGranted"); + } + runFn = () => Promise.resolve(); + } + try { + registerEvents(reconnectedDevice); + await reconnectedDevice.run(runFn, { + skipFirmwareChecks: true, + skipLanguageChecks: true + }); + } catch (error) { + uiPromises.rejectAll(error); + if (error.code === "Device_ThpPairingTagInvalid") { + thpPairingError = true; + } + } + } + i++; + log2.debug("onCallFirmwareUpdate", "...still waiting for device to reconnect", i); + } while (!abortSignal.aborted && (!reconnectedDevice?.features || bootloader === !reconnectedDevice.features.bootloader_mode || intermediary && !(0, versionUtils_1.isNewer)([reconnectedDevice.features.major_version, reconnectedDevice.features.minor_version, reconnectedDevice.features.patch_version], [device.features.major_version, device.features.minor_version, device.features.patch_version]))); + if (!reconnectedDevice) { + throw constants_1.ERRORS.TypedError("Method_Interrupted"); + } + registerEvents(reconnectedDevice); + await reconnectedDevice.currentRun; + if (!reconnectedDevice.isUsedHere()) { + await reconnectedDevice.acquire(); + } + return reconnectedDevice; + }; + var waitForBluetoothReboot = ({ + device, + target, + postMessage + }) => new Promise((resolve) => { + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, { + device: device.toMessageObject(), + disconnected: false, + method: "auto", + target, + i: 0 + })); + const handler = () => { + const deviceIsReady = target === "bootloader" && device.features?.bootloader_mode || target === "normal" && device.getThpState()?.properties; + if (deviceIsReady) { + device.lifecycle.off("device-changed", handler); + resolve(); + } + }; + device.lifecycle.on("device-changed", handler); + }); + var getInstallationParams = (device, params) => { + const btcOnly = params.btcOnly ?? device.firmwareType === types_1.FirmwareType.BitcoinOnly; + if (!device.features.bootloader_mode) { + const version = params.binary ? (0, firmware_1.parseFirmwareHeaders)(Buffer.from(params.binary)).version : void 0; + const isUpdatingToNewerVersion = !version ? device.firmwareReleaseConfigInfo?.isNewer : (0, versionUtils_1.isNewer)(version, [device.features.major_version, device.features.minor_version, device.features.patch_version]); + const isUpdatingToEqualFirmwareType = device.firmwareType === types_1.FirmwareType.BitcoinOnly === btcOnly; + const upgrade = device.atLeast("2.6.3") && isUpdatingToNewerVersion && isUpdatingToEqualFirmwareType; + const manual = !device.atLeast(["1.10.0", "2.6.0"]) && !upgrade; + const getUpdateFlowType = () => { + if (manual) return "manual"; + return upgrade ? "reboot_and_upgrade" : "reboot_and_wait"; + }; + return { + manual, + upgrade, + updateFlowType: getUpdateFlowType(), + btcOnly + }; + } else { + return { + manual: false, + upgrade: false, + updateFlowType: "unknown_flow", + btcOnly + }; + } + }; + var getFwHeader = (binary) => Buffer.from(binary.slice(0, 6e3)).toString("hex"); + var getBinaryHelper = async ({ + device, + params, + firmwareType, + isIntermediary, + log: log2 + }) => { + if (params.binary) { + return Promise.resolve({ + binary: params.binary, + binaryVersion: (0, firmware_1.parseFirmwareHeaders)(Buffer.from(params.binary)).version, + release: void 0 + }); + } + if (!device.firmwareReleaseConfigInfo) { + throw constants_1.ERRORS.TypedError("Runtime", "device.firmwareReleaseConfigInfo is not set"); + } + const deviceModel = device.features?.internal_model; + const { + release: { + version + }, + intermediary + } = device.firmwareReleaseConfigInfo; + log2.debug("onCallFirmwareUpdate loading binary", "isIntermediary", isIntermediary, "version", version, "firmwareType", firmwareType, "deviceModel", deviceModel); + const release = await (0, firmwareInfo_1.getReleaseByVersion)(device.features, version, firmwareType); + if (!release) { + throw new Error("Missing Firmware release for device"); + } + const { + baseUrl, + path: path2 + } = (0, firmwareInfo_1.getFirmwareLocation)({ + firmwareVersion: version, + remotePath: release.url, + deviceModel, + firmwareType, + intermediaryVersion: isIntermediary && intermediary ? intermediary.version : void 0 + }); + return (0, firmware_1.getBinary)({ + baseUrl, + path: path2, + release + }); + }; + var onCallFirmwareUpdate = async ({ + params, + context + }) => { + const { + deviceList, + registerEvents, + postMessage, + initDevice, + log: log2 + } = context; + log2.debug("onCallFirmwareUpdate with params: ", params); + const firmwareType = params.btcOnly ? types_1.FirmwareType.BitcoinOnly : types_1.FirmwareType.Universal; + const device = await initDevice(params?.device?.path); + if (!device.features) { + throw constants_1.ERRORS.TypedError("Device_NotFound", "Device missing features"); + } + if (deviceList.getDeviceCount() > 1) { + throw constants_1.ERRORS.TypedError("Device_MultipleNotSupported", "Firmware update allowed with only 1 device connected"); + } + log2.debug("onCallFirmwareUpdate", "device", device); + registerEvents(device); + const { + manual, + upgrade, + updateFlowType, + btcOnly + } = getInstallationParams(device, params); + log2.debug("onCallFirmwareUpdate", "installation params", { + manual, + upgrade, + updateFlowType, + btcOnly + }); + const intermediary = !params.binary && device?.firmwareReleaseConfigInfo?.intermediary; + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, { + device: device.toMessageObject(), + operation: "downloading", + progress: 0 + })); + let intermediaryBinaryInfo; + let finalBinaryInfo; + const fwFetchPromises = []; + if (intermediary) { + fwFetchPromises.push(getBinaryHelper({ + device, + params, + firmwareType, + isIntermediary: true, + log: log2 + })); + } + fwFetchPromises.push(getBinaryHelper({ + device, + params, + firmwareType, + isIntermediary: false, + log: log2 + })); + const [firstResult, finalResult] = await Promise.all(fwFetchPromises); + if (intermediary) { + intermediaryBinaryInfo = firstResult; + finalBinaryInfo = finalResult; + } else { + finalBinaryInfo = firstResult; + } + const firstBinaryInfo = intermediary ? intermediaryBinaryInfo : finalBinaryInfo; + if (!firstBinaryInfo) { + throw new Error("Missing binary, something went wrong."); + } + postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, { + device: device.toMessageObject(), + operation: "downloading", + progress: 100 + })); + if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && finalBinaryInfo.release) { + const message = (0, events_1.createUiMessage)(events_1.UI.FIRMWARE_DOWNLOADED, { + binary: finalBinaryInfo.binary, + binaryVersion: finalBinaryInfo.binaryVersion, + releaseVersion: finalBinaryInfo.release?.version, + firmwareType, + release: finalBinaryInfo.release, + internalModel: device.features.internal_model + }); + postMessage(message); + } + const deviceInitiallyConnectedInBootloader = device.features.bootloader_mode; + let reconnectedDevice = device; + if (deviceInitiallyConnectedInBootloader) { + log2.warn("onCallFirmwareUpdate", "device is already in bootloader mode."); + await device.acquire(); + } else if (manual) { + reconnectedDevice = await waitForReconnectedDevice({ + bootloader: true, + method: "manual" + }, { + ...context, + device + }); + } else { + const rebootParams = upgrade ? { + boot_command: constants_1.PROTO.BootCommand.INSTALL_UPGRADE, + firmware_header: getFwHeader(firstBinaryInfo.binary) + } : {}; + await device.acquire(); + const disconnectedPromise = new Promise((resolve) => { + deviceList.once("device-disconnect", resolve); + }); + await device.getCommands().typedCall("RebootToBootloader", "Success", rebootParams); + log2.info("onCallFirmwareUpdate", "waiting for disconnected event after rebootToBootloader..."); + if (device.descriptor.apiType === "bluetooth") { + await device.release(); + await waitForBluetoothReboot({ + device, + target: "bootloader", + postMessage + }); + } else { + await disconnectedPromise; + if (device.features.major_version === 1) { + await (0, utils_1.resolveAfter)(2e3); + } + } + reconnectedDevice = await waitForReconnectedDevice({ + bootloader: true, + method: "auto" + }, { + ...context, + device + }); + } + const bootloaderVersion = reconnectedDevice.getVersion(); + await reconnectedDevice.initialize(false); + let stripped = (0, firmware_1.stripFwHeaders)(firstBinaryInfo.binary); + const payload = !intermediary && (0, firmware_1.shouldStripFwHeaders)(device.features) ? stripped : firstBinaryInfo.binary; + await (0, firmware_1.uploadFirmware)({ + typedCall: reconnectedDevice.getCommands().typedCall, + postMessage, + device: reconnectedDevice, + firmwareUploadRequest: { + payload + }, + updateFlowType + }); + log2.info("onCallFirmwareUpdate", "firmware uploaded"); + if (intermediary) { + log2.info("onCallFirmwareUpdate", "...but it was the intermediary firmware, so one more go"); + reconnectedDevice = await waitForReconnectedDevice({ + bootloader: true, + method: "manual", + intermediary: true + }, { + ...context, + device: reconnectedDevice + }); + stripped = (0, firmware_1.stripFwHeaders)(finalBinaryInfo.binary); + await reconnectedDevice.initialize(false); + await (0, firmware_1.uploadFirmware)({ + typedCall: reconnectedDevice.getCommands().typedCall, + postMessage, + device: reconnectedDevice, + firmwareUploadRequest: { + payload: stripped + }, + updateFlowType + }); + } + let method = "wait"; + if (device.descriptor.apiType === "bluetooth") { + await waitForBluetoothReboot({ + device, + target: "normal", + postMessage + }); + method = "auto"; + } + reconnectedDevice = await waitForReconnectedDevice({ + bootloader: false, + method + }, { + ...context, + device: reconnectedDevice + }); + const installedVersion = reconnectedDevice.getVersion(); + if (!bootloaderVersion || !installedVersion) { + throw constants_1.ERRORS.TypedError("Runtime", "reconnectedDevice.installedVersion is not set"); + } + const { + binaryVersion, + release + } = finalBinaryInfo; + const assertBinaryVersion = (0, versionUtils_1.isEqual)(installedVersion, binaryVersion); + const assertReleaseVersion = release?.version ? (0, versionUtils_1.isEqual)(installedVersion, release?.version) : true; + await reconnectedDevice.release(); + log2.info("onCallFirmwareUpdate", `firmware updated to version ${installedVersion}`); + return { + versionCheck: assertBinaryVersion && assertReleaseVersion, + bootloaderVersion, + installedVersion, + binaryVersion, + releaseVersion: release?.version + }; + }; + exports2.onCallFirmwareUpdate = onCallFirmwareUpdate; + } +}); + +// node_modules/@trezor/analytics/lib/utils.js +var require_utils29 = __commonJS({ + "node_modules/@trezor/analytics/lib/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.reportEvent = exports2.getUrl = exports2.encodeDataToQueryString = exports2.getRandomId = exports2.getTrackingRandomId = void 0; + var utils_1 = require_lib(); + var getTrackingRandomId = () => (0, utils_1.getWeakRandomId)(10); + exports2.getTrackingRandomId = getTrackingRandomId; + var getRandomId = () => (0, utils_1.getWeakRandomId)(10); + exports2.getRandomId = getRandomId; + var encodeDataToQueryString = (instanceId, sessionId, commitId, version, event) => { + const { + type, + timestamp + } = event; + const params = new URLSearchParams({ + c_v: version, + c_type: type || "", + c_commit: commitId, + c_instance_id: instanceId, + c_session_id: sessionId, + c_timestamp: timestamp || Date.now().toString(), + c_message_id: (0, exports2.getRandomId)() + }); + if (event.payload) { + Object.entries(event.payload).forEach(([key, value]) => params.append(key, value?.toString() ?? "")); + } + return params.toString(); + }; + exports2.encodeDataToQueryString = encodeDataToQueryString; + var getUrl = (app, isDev, environment) => { + let base = `https://data.trezor.io/${app}/log`; + if (environment) { + base = `${base}/${environment}`; + } + if (isDev) { + return `${base}/develop.log`; + } + return `${base}/stable.log`; + }; + exports2.getUrl = getUrl; + var reportEventError = (type, retry, err2) => { + let errorMessage = err2?.error?.message || err2?.message; + if (typeof errorMessage !== "string") { + errorMessage = "Unknown error."; + } + if (errorMessage.includes("Failed to fetch")) { + errorMessage = "Failed to analytics fetch."; + } + const reportedMessage = `Analytics report failed. Reporting '${type}' ${retry ? "again" : "was unsuccessful"}. ${errorMessage}`; + console.error(reportedMessage); + }; + var reportEvent = async ({ + type, + url, + options, + retry + }) => { + try { + const response = await fetch(url, options); + if (!response.ok) { + console.error(`Analytics response not ok. Response status: ${response.status}.`); + } + } catch (err2) { + reportEventError(type, retry, err2); + if (retry) { + setTimeout(() => (0, exports2.reportEvent)({ + type, + url, + options, + retry: false + }), 1e3); + } + } + }; + exports2.reportEvent = reportEvent; + } +}); + +// node_modules/@trezor/analytics/lib/analytics.js +var require_analytics = __commonJS({ + "node_modules/@trezor/analytics/lib/analytics.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Analytics = void 0; + var utils_1 = require_utils29(); + var Analytics = class { + enabled; + useQueue = false; + queue = new Array(); + version; + app; + instanceId; + sessionId; + commitId; + url; + callbacks; + constructor({ + version, + app, + useQueue = false + }) { + this.version = version; + this.app = app; + this.useQueue = useQueue; + } + init = (enabled, options) => { + this.enabled = enabled; + this.instanceId = options.instanceId || (0, utils_1.getRandomId)(); + this.sessionId = options.sessionId || (0, utils_1.getRandomId)(); + this.commitId = options.commitId; + this.url = (0, utils_1.getUrl)(this.app, options.isDev, options.environment); + this.callbacks = options.callbacks; + if (this.enabled !== void 0) { + this.flushQueue(); + } + }; + enable = () => { + this.enabled = true; + this.callbacks?.onEnable?.(); + this.flushQueue(); + }; + flushQueue = () => { + if (this.useQueue) { + this.useQueue = false; + this.queue.map((data) => this.report(data)); + this.queue = []; + } + }; + disable = () => { + this.enabled = false; + this.callbacks?.onDisable?.(); + if (this.useQueue) { + this.useQueue = false; + this.queue = []; + } + }; + isEnabled = () => !!this.enabled; + report = (data, config2) => { + if (!data.timestamp) { + data.timestamp = Date.now().toString(); + } + const isMissingFields = !this.url || !this.instanceId || !this.sessionId || !this.commitId || !this.version; + if (!this.useQueue && isMissingFields) { + const listOfMissingFields = `${!this.url ? "url, " : ""}${!this.instanceId ? "instanceId, " : ""}${!this.sessionId ? "sessionId, " : ""}${!this.commitId ? "commitId, " : ""}${!this.version ? "version, " : ""}`; + console.error(`Unable to report ${data.type}. Analytics is not initialized! Missing: ${listOfMissingFields}`); + return; + } + const { + anonymize, + force + } = config2 ?? {}; + if (this.useQueue && this.enabled === void 0 && !force) { + this.queue.push(data); + } + if (!this.enabled && !force || isMissingFields) { + return; + } + const qs = (0, utils_1.encodeDataToQueryString)(anonymize ? (0, utils_1.getRandomId)() : this.instanceId, anonymize ? (0, utils_1.getRandomId)() : this.sessionId, this.commitId, this.version, data); + (0, utils_1.reportEvent)({ + type: data.type, + url: `${this.url}?${qs}`, + options: { + method: "GET", + keepalive: true + }, + retry: true + }); + }; + }; + exports2.Analytics = Analytics; + } +}); + +// node_modules/@trezor/analytics/lib/types.js +var require_types10 = __commonJS({ + "node_modules/@trezor/analytics/lib/types.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/analytics/lib/index.js +var require_lib24 = __commonJS({ + "node_modules/@trezor/analytics/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getTrackingRandomId = exports2.getRandomId = exports2.Analytics = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var analytics_1 = require_analytics(); + Object.defineProperty(exports2, "Analytics", { + enumerable: true, + get: function() { + return analytics_1.Analytics; + } + }); + tslib_1.__exportStar(require_types10(), exports2); + var utils_1 = require_utils29(); + Object.defineProperty(exports2, "getRandomId", { + enumerable: true, + get: function() { + return utils_1.getRandomId; + } + }); + Object.defineProperty(exports2, "getTrackingRandomId", { + enumerable: true, + get: function() { + return utils_1.getTrackingRandomId; + } + }); + } +}); + +// node_modules/@trezor/connect-analytics/lib/types/events.js +var require_events3 = __commonJS({ + "node_modules/@trezor/connect-analytics/lib/types/events.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + } +}); + +// node_modules/@trezor/connect-analytics/lib/constants.js +var require_constants16 = __commonJS({ + "node_modules/@trezor/connect-analytics/lib/constants.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.EventType = void 0; + var EventType; + (function(EventType2) { + EventType2["AppReady"] = "app/ready"; + EventType2["AppInfo"] = "app/info"; + EventType2["ViewChange"] = "view/change"; + EventType2["ViewChangeError"] = "view/change-error"; + EventType2["SettingsTracking"] = "settings/tracking"; + EventType2["SettingsPermissions"] = "settings/permissions"; + EventType2["WalletType"] = "wallet/type"; + EventType2["DeviceSelected"] = "device/selected"; + })(EventType || (exports2.EventType = EventType = {})); + } +}); + +// node_modules/@trezor/connect-analytics/lib/index.js +var require_lib25 = __commonJS({ + "node_modules/@trezor/connect-analytics/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getRandomId = exports2.analytics = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var analytics_1 = require_lib24(); + Object.defineProperty(exports2, "getRandomId", { + enumerable: true, + get: function() { + return analytics_1.getRandomId; + } + }); + var analytics = new analytics_1.Analytics({ + version: process.env.VERSION, + app: "connect", + useQueue: true + }); + exports2.analytics = analytics; + tslib_1.__exportStar(require_events3(), exports2); + tslib_1.__exportStar(require_constants16(), exports2); + } +}); + +// node_modules/@trezor/connect/lib/data/analyticsInfo.js +var require_analyticsInfo = __commonJS({ + "node_modules/@trezor/connect/lib/data/analyticsInfo.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.enhanceMessageWithAnalytics = void 0; + var connect_analytics_1 = require_lib25(); + var events_1 = require_events(); + var enhanceMessageWithAnalytics = (message, data) => { + switch (message.type) { + case events_1.UI_REQUEST.REQUEST_CONFIRMATION: { + const { + device + } = data; + return { + ...message, + payload: { + ...message.payload, + analytics: { + type: connect_analytics_1.EventType.DeviceSelected, + payload: { + mode: device?.mode || "", + pinProtection: device?.features?.pin_protection || "", + passphraseProtection: device?.features?.passphrase_protection || "", + backupType: device?.features?.backup_type || "Bip39", + language: device?.features?.language || "", + model: device?.features?.internal_model || "", + vendor: device?.features?.vendor || "", + firmwareRevision: device?.features?.revision || "", + firmwareType: device?.firmwareType || "", + bootloaderHash: device?.features?.bootloader_hash || "" + } + } + } + }; + } + default: + return message; + } + }; + exports2.enhanceMessageWithAnalytics = enhanceMessageWithAnalytics; + } +}); + +// node_modules/@trezor/connect/lib/data/thpSettings.js +var require_thpSettings = __commonJS({ + "node_modules/@trezor/connect/lib/data/thpSettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseThpSettings = void 0; + var parseThpSettings = ({ + manifest, + thp + }) => { + const settings = { + pairingMethods: [] + }; + if (Array.isArray(thp?.pairingMethods)) { + settings.pairingMethods = thp.pairingMethods; + } else { + settings.pairingMethods = ["CodeEntry"]; + } + if (typeof thp?.hostName === "string") { + settings.hostName = thp.hostName; + } + if (typeof thp?.appName === "string") { + settings.appName = thp.appName; + } else if (typeof manifest?.appName === "string") { + settings.appName = manifest?.appName; + } + if (typeof thp?.staticKey === "string") { + settings.staticKey = thp.staticKey; + } + if (Array.isArray(thp?.knownCredentials)) { + settings.knownCredentials = thp.knownCredentials.flatMap((k) => { + if (k && typeof k === "object" && typeof k.credential === "string" && typeof k.trezor_static_public_key === "string") { + return k; + } + return []; + }); + } + return settings; + }; + exports2.parseThpSettings = parseThpSettings; + } +}); + +// node_modules/@trezor/connect/lib/data/version.js +var require_version = __commonJS({ + "node_modules/@trezor/connect/lib/data/version.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DEEPLINK_VERSION = exports2.CONTENT_SCRIPT_VERSION = exports2.DEFAULT_DOMAIN = exports2.DEFAULT_DOMAIN_MAJOR_VER = exports2.VERSION = void 0; + exports2.VERSION = "9.7.1"; + var versionN = exports2.VERSION.split(".").map((s) => parseInt(s, 10)); + var isBeta = exports2.VERSION.includes("beta"); + exports2.DEFAULT_DOMAIN_MAJOR_VER = `https://connect.trezor.io/${versionN[0]}/`; + exports2.DEFAULT_DOMAIN = isBeta ? `https://connect.trezor.io/${exports2.VERSION}/` : exports2.DEFAULT_DOMAIN_MAJOR_VER; + exports2.CONTENT_SCRIPT_VERSION = 1; + exports2.DEEPLINK_VERSION = 1; + } +}); + +// node_modules/@trezor/connect/lib/data/connectSettings.js +var require_connectSettings = __commonJS({ + "node_modules/@trezor/connect/lib/data/connectSettings.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseConnectSettings = exports2.corsValidator = exports2.parseLocalFirmwares = exports2.DEFAULT_PRIORITY = void 0; + var thpSettings_1 = require_thpSettings(); + var version_1 = require_version(); + exports2.DEFAULT_PRIORITY = 2; + var initialSettings = { + configSrc: "./data/config.json", + version: version_1.VERSION, + debug: false, + priority: exports2.DEFAULT_PRIORITY, + trustedHost: true, + connectSrc: version_1.DEFAULT_DOMAIN, + iframeSrc: `${version_1.DEFAULT_DOMAIN}iframe.html`, + popup: false, + popupSrc: `${version_1.DEFAULT_DOMAIN}popup.html`, + webusbSrc: `${version_1.DEFAULT_DOMAIN}webusb.html`, + transports: void 0, + pendingTransportEvent: true, + env: "node", + lazyLoad: false, + timestamp: (/* @__PURE__ */ new Date()).getTime(), + interactionTimeout: 1200, + sharedLogger: true, + deeplinkUrl: `${version_1.DEFAULT_DOMAIN}deeplink/${version_1.DEEPLINK_VERSION}/`, + transportReconnect: true + }; + var parseManifest = (manifest) => { + if (!manifest) return; + if (typeof manifest.email !== "string") return; + if (typeof manifest.appUrl !== "string") return; + if (typeof manifest.appName !== "undefined" && typeof manifest.appName !== "string") return; + if (typeof manifest.appIcon !== "undefined" && typeof manifest.appIcon !== "string") return; + return { + email: manifest.email, + appUrl: manifest.appUrl, + appName: manifest.appName, + appIcon: manifest.appIcon + }; + }; + var parseLocalFirmwares = (localFirmwares) => { + if (!localFirmwares) return; + if (typeof localFirmwares.firmwareDir !== "string") return; + if (!Array.isArray(localFirmwares.firmwareList)) return; + return { + firmwareDir: localFirmwares.firmwareDir, + firmwareList: localFirmwares.firmwareList + }; + }; + exports2.parseLocalFirmwares = parseLocalFirmwares; + var corsValidator = (url) => { + if (typeof url !== "string") return; + if (url === "../") return url; + if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*trezor\.io\//)) return url; + if (url.match(/^https?:\/\/localhost:[58][0-9]{3}\//)) return url; + if (url.match(/^https:\/\/([A-Za-z0-9\-_]+\.)*sldev\.cz\//)) return url; + if (url.match(/^https?:\/\/([A-Za-z0-9\-_]+\.)*trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad\.onion\//)) return url; + }; + exports2.corsValidator = corsValidator; + var parseConnectSettings = (input = {}) => { + const settings = { + ...initialSettings + }; + if ("debug" in input) { + if (typeof input.debug === "boolean") { + settings.debug = input.debug; + } else if (typeof input.debug === "string") { + settings.debug = input.debug === "true"; + } + } + if (input.trustedHost === false) { + settings.trustedHost = input.trustedHost; + } + if (typeof input.connectSrc === "string") { + settings.connectSrc = (0, exports2.corsValidator)(input.connectSrc); + } else if (settings.trustedHost) { + settings.connectSrc = input.connectSrc; + } + const src = settings.connectSrc || version_1.DEFAULT_DOMAIN; + settings.iframeSrc = `${src}iframe.html`; + settings.popupSrc = `${src}popup.html`; + settings.webusbSrc = `${src}webusb.html`; + if (typeof input.transportReconnect === "boolean") { + settings.transportReconnect = input.transportReconnect; + } + if (typeof input.localFirmwares === "object") { + settings.localFirmwares = (0, exports2.parseLocalFirmwares)(input.localFirmwares); + } + if (typeof input.firmwareUpdateSource === "string") { + settings.firmwareUpdateSource = input.firmwareUpdateSource; + } + if (Array.isArray(input.transports)) { + settings.transports = input.transports; + } + if (typeof input.popup === "boolean") { + settings.popup = input.popup; + } + if (typeof input.lazyLoad === "boolean") { + settings.lazyLoad = input.lazyLoad; + } + if (typeof input.pendingTransportEvent === "boolean") { + settings.pendingTransportEvent = input.pendingTransportEvent; + } + if (typeof input.extension === "string") { + settings.extension = input.extension; + } + if (typeof input.env === "string") { + settings.env = input.env; + } + if (typeof input.timestamp === "number") { + settings.timestamp = input.timestamp; + } + if (typeof input.interactionTimeout === "number") { + settings.interactionTimeout = input.interactionTimeout; + } + if (typeof input.manifest === "object") { + settings.manifest = parseManifest(input.manifest); + } + if (typeof input.sharedLogger === "boolean") { + settings.sharedLogger = input.sharedLogger; + } + if (typeof input.coreMode === "string" && ["auto", "popup", "iframe", "suite-desktop", "suite-web"].includes(input.coreMode)) { + settings.coreMode = input.coreMode; + } + if (typeof input._extendWebextensionLifetime === "boolean") { + settings._extendWebextensionLifetime = input._extendWebextensionLifetime; + } + if (typeof input.binFilesBaseUrl === "string") { + settings.binFilesBaseUrl = input.binFilesBaseUrl; + } + if (typeof input.enableFirmwareHashCheck === "boolean") { + settings.enableFirmwareHashCheck = Boolean(input.enableFirmwareHashCheck); + } + if (typeof input.firmwareHashCheckTimeouts === "object" && input.firmwareHashCheckTimeouts !== null) { + settings.firmwareHashCheckTimeouts = input.firmwareHashCheckTimeouts; + } + if (typeof input.npmVersion === "string") { + settings.npmVersion = input.npmVersion; + } + settings.thp = (0, thpSettings_1.parseThpSettings)(input); + return settings; + }; + exports2.parseConnectSettings = parseConnectSettings; + } +}); + +// node_modules/@trezor/connect/lib/device/resolveDescriptorForTaproot.js +var require_resolveDescriptorForTaproot = __commonJS({ + "node_modules/@trezor/connect/lib/device/resolveDescriptorForTaproot.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.resolveDescriptorForTaproot = void 0; + var utils_1 = require_lib(); + var resolveDescriptorForTaproot = ({ + response, + publicKey + }) => { + if (publicKey.descriptor !== null && publicKey.descriptor !== void 0) { + const [xpub, checksum] = publicKey.descriptor.split("#"); + const correctedXpub = (0, utils_1.convertTaprootXpub)({ + xpub, + direction: "h-to-apostrophe" + }); + if (correctedXpub !== null) { + return { + xpub: correctedXpub, + checksum + }; + } + } + const fingerprint = Number(publicKey.root_fingerprint || 0).toString(16).padStart(8, "0"); + const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`; + return { + xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`, + checksum: void 0 + }; + }; + exports2.resolveDescriptorForTaproot = resolveDescriptorForTaproot; + } +}); + +// node_modules/@trezor/connect/lib/device/DeviceCommands.js +var require_DeviceCommands = __commonJS({ + "node_modules/@trezor/connect/lib/device/DeviceCommands.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceCommands = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var constants_1 = require_constants(); + var coinInfo_1 = require_coinInfo(); + var resolveDescriptorForTaproot_1 = require_resolveDescriptorForTaproot(); + var hdnodeUtils = tslib_1.__importStar(require_hdnodeUtils()); + var pathUtils_1 = require_pathUtils(); + var DeviceCommands = (deviceTypedCall) => { + const typedCall = deviceTypedCall.typedCall.bind(deviceTypedCall); + const unlockPath = (params) => typedCall("UnlockPath", "UnlockedPathRequest", params); + const getPublicKey = async (params, unlock) => { + if (unlock) { + await unlockPath(unlock); + } + const response = await typedCall("GetPublicKey", "PublicKey", { + address_n: params.address_n, + coin_name: params.coin_name || "Bitcoin", + script_type: params.script_type, + show_display: params.show_display, + ignore_xpub_magic: params.ignore_xpub_magic, + ecdsa_curve_name: params.ecdsa_curve_name + }); + return response.message; + }; + const getHDNode = async (params, options) => { + const path2 = params.address_n; + const { + coinInfo, + unlockPath: unlock + } = options; + const validation = typeof options.validation === "boolean" ? options.validation : true; + let network = null; + if (!params.script_type) { + params.script_type = (0, pathUtils_1.getScriptType)(path2); + } + if (params.script_type === "SPENDP2SHWITNESS") { + network = (0, coinInfo_1.getSegwitNetwork)(coinInfo); + } else if (params.script_type === "SPENDWITNESS") { + network = (0, coinInfo_1.getBech32Network)(coinInfo); + } + if (!network) { + network = coinInfo.network; + } + if (!params.coin_name) { + params.coin_name = coinInfo.name; + } + let publicKey; + if (params.show_display || !validation) { + publicKey = await getPublicKey(params, unlock); + } else { + const suffix = 0; + const childPath = path2.concat([suffix]); + const resKey = await getPublicKey(params, unlock); + const childKey = await getPublicKey({ + ...params, + address_n: childPath + }, unlock); + publicKey = hdnodeUtils.xpubDerive(resKey, childKey, suffix, network, coinInfo.network); + } + const response = { + path: path2, + serializedPath: (0, pathUtils_1.getSerializedPath)(path2), + childNum: publicKey.node.child_num, + xpub: publicKey.xpub, + chainCode: publicKey.node.chain_code, + publicKey: publicKey.node.public_key, + fingerprint: publicKey.node.fingerprint, + depth: publicKey.node.depth, + descriptor: publicKey.descriptor + }; + if (network !== coinInfo.network) { + response.xpubSegwit = response.xpub; + response.xpub = hdnodeUtils.convertXpub(publicKey.xpub, network, coinInfo.network); + } + if ((0, pathUtils_1.isTaprootPath)(path2)) { + const { + checksum, + xpub: xpubSegwit + } = (0, resolveDescriptorForTaproot_1.resolveDescriptorForTaproot)({ + response, + publicKey + }); + response.xpubSegwit = xpubSegwit; + response.descriptorChecksum = checksum; + } + return response; + }; + const getAddress = async ({ + address_n, + show_display, + multisig, + script_type, + chunkify + }, coinInfo) => { + if (!script_type) { + script_type = (0, pathUtils_1.getScriptType)(address_n); + if (script_type === "SPENDMULTISIG" && !multisig) { + script_type = "SPENDADDRESS"; + } + } + if (multisig && multisig.pubkeys) { + multisig.pubkeys.forEach((pk) => { + if (typeof pk.node === "string") { + pk.node = hdnodeUtils.xpubToHDNodeType(pk.node, coinInfo.network); + } + }); + } + const response = await typedCall("GetAddress", "Address", { + address_n, + coin_name: coinInfo.name, + show_display, + multisig, + script_type: script_type || "SPENDADDRESS", + chunkify + }); + return response.message; + }; + const ethereumGetAddress = async (params) => { + const response = await typedCall("EthereumGetAddress", "EthereumAddress", params); + return response.message; + }; + const ethereumGetPublicKey = async ({ + address_n, + show_display + }) => { + const suffix = 0; + const childPath = address_n.concat([suffix]); + const resKey = await typedCall("EthereumGetPublicKey", "EthereumPublicKey", { + address_n, + show_display + }); + const childKey = await typedCall("EthereumGetPublicKey", "EthereumPublicKey", { + address_n: childPath, + show_display: false + }); + return hdnodeUtils.xpubDerive(resKey.message, childKey.message, suffix); + }; + const preauthorize = async (throwError) => { + try { + await typedCall("DoPreauthorized", "PreauthorizedRequest", {}); + return true; + } catch (error) { + if (throwError) throw error; + return false; + } + }; + const getAccountDescriptor = async (coinInfo, address_n, derivationType = constants_1.PROTO.CardanoDerivationType.ICARUS_TREZOR) => { + if (coinInfo.type === "bitcoin") { + const resp = await getHDNode({ + address_n + }, { + coinInfo, + validation: false + }); + return { + descriptor: resp.xpubSegwit || resp.xpub, + legacyXpub: resp.xpub, + address_n, + descriptorChecksum: resp.descriptorChecksum + }; + } + if (coinInfo.type === "ethereum") { + const { + message + } = await typedCall("EthereumGetAddress", "EthereumAddress", { + address_n + }); + return { + descriptor: message.address, + address_n + }; + } + if (coinInfo.shortcut === "ADA" || coinInfo.shortcut === "tADA") { + const { + message + } = await typedCall("CardanoGetPublicKey", "CardanoPublicKey", { + address_n, + derivation_type: derivationType + }); + return { + descriptor: message.xpub, + address_n + }; + } + if (coinInfo.shortcut === "XRP" || coinInfo.shortcut === "tXRP") { + const { + message + } = await typedCall("RippleGetAddress", "RippleAddress", { + address_n + }); + return { + descriptor: message.address, + address_n + }; + } + if (coinInfo.shortcut === "SOL" || coinInfo.shortcut === "DSOL") { + const { + message + } = await typedCall("SolanaGetAddress", "SolanaAddress", { + address_n + }); + return { + descriptor: message.address, + address_n + }; + } + if (coinInfo.shortcut === "XLM" || coinInfo.shortcut === "tXLM") { + const { + message + } = await typedCall("StellarGetAddress", "StellarAddress", { + address_n + }); + return { + descriptor: message.address, + address_n + }; + } + throw constants_1.ERRORS.TypedError("Runtime", "DeviceCommands.getAccountDescriptor: unsupported coinInfo.type"); + }; + return { + unlockPath, + getPublicKey, + getAddress, + ethereumGetPublicKey, + ethereumGetAddress, + getHDNode, + preauthorize, + getAccountDescriptor, + typedCall + }; + }; + exports2.DeviceCommands = DeviceCommands; + } +}); + +// node_modules/@trezor/transport/lib/errors-groups.js +var require_errors_groups = __commonJS({ + "node_modules/@trezor/transport/lib/errors-groups.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.isErrorWithoutDeviceInteraction = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var ERRORS = tslib_1.__importStar(require_errors5()); + var ERRORS_WITHOUT_DEVICE_INTERACTION = [ERRORS.HTTP_ERROR, ERRORS.OTHER_CALL_IN_PROGRESS, ERRORS.WRONG_ENVIRONMENT, ERRORS.NATIVE_INTERFACE_NOT_AVAILABLE, ERRORS.ALREADY_LISTENING, ERRORS.SESSION_BACKGROUND_TIMEOUT, ERRORS.SESSION_NOT_FOUND, ERRORS.SESSION_WRONG_PREVIOUS]; + var isErrorWithoutDeviceInteraction = (error) => ERRORS_WITHOUT_DEVICE_INTERACTION.includes(error); + exports2.isErrorWithoutDeviceInteraction = isErrorWithoutDeviceInteraction; + } +}); + +// node_modules/@trezor/connect/lib/utils/debug.js +var require_debug2 = __commonJS({ + "node_modules/@trezor/connect/lib/utils/debug.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.getLog = exports2.enableLogByPrefix = exports2.enableLog = exports2.setLogWriter = exports2.initLog = void 0; + var utils_1 = require_lib(); + var green = "#bada55"; + var blue = "#20abd8"; + var orange = "#f4a744"; + var yellow = "#fbd948"; + var colors = { + "@trezor/connect": `color: ${blue}; background: #000;`, + "@trezor/connect-web": `color: ${blue}; background: #000;`, + "@trezor/connect-webextension": `color: ${blue}; background: #000;`, + IFrame: `color: ${orange}; background: #000;`, + Core: `color: ${orange}; background: #000;`, + DeviceList: `color: ${green}; background: #000;`, + Device: `color: ${green}; background: #000;`, + DeviceCommands: `color: ${green}; background: #000;`, + "@trezor/transport": `color: ${green}; background: #000;`, + InteractionTimeout: `color: ${green}; background: #000;`, + "@trezor/connect-popup": `color: ${yellow}; background: #000;` + }; + var logsManager = new utils_1.LogsManager({ + colors + }); + exports2.initLog = logsManager.initLog.bind(logsManager); + exports2.setLogWriter = logsManager.setLogWriter.bind(logsManager); + exports2.enableLog = logsManager.enableLog.bind(logsManager); + exports2.enableLogByPrefix = logsManager.enableLogByPrefix.bind(logsManager); + exports2.getLog = logsManager.getLog.bind(logsManager); + } +}); + +// node_modules/@trezor/connect/lib/device/DeviceCurrentSession.js +var require_DeviceCurrentSession = __commonJS({ + "node_modules/@trezor/connect/lib/device/DeviceCurrentSession.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceCurrentSession = void 0; + var protobuf_1 = require_lib3(); + var schema_utils_1 = require_lib2(); + var transport_1 = require_lib10(); + var errors_groups_1 = require_errors_groups(); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var events_1 = require_events(); + var debug_1 = require_debug2(); + var blacklist = { + PassphraseAck: ["passphrase"], + CipheredKeyValue: ["value"], + GetPublicKey: ["address_n"], + PublicKey: ["node", "xpub"], + DecryptedMessage: ["message", "address"], + Features: true + }; + var allowedCallsBeforeInitialize = ["Cancel", "Initialize", "GetFeatures", "GetFirmwareHash", "ChangeLanguage", "DataChunkAck", "RebootToBootloader", "FirmwareErase", "FirmwareUpload", "RecoveryDevice"]; + var filterForLog = (type, msg) => blacklist[type] === true ? "(redacted...)" : (blacklist[type] ?? []).reduce((prev, cur) => ({ + ...prev, + [cur]: "(redacted...)" + }), msg); + var logger = (0, debug_1.initLog)("DeviceCommands"); + var isExpectedResponse = (response, expected) => (Array.isArray(expected) ? expected : expected.split("|")).includes(response.type); + var success = (payload) => ({ + success: true, + payload + }); + var error = (error2) => ({ + success: false, + error: error2 + }); + var nestedError = (cause) => error(constants_1.ERRORS.nestError(cause)); + var fail = (msg) => error((0, errors_groups_1.isErrorWithoutDeviceInteraction)(msg) ? new constants_1.ERRORS.TransportError(msg) : new Error(msg)); + var DeviceCurrentSession = class { + device; + transport; + session; + disposed; + callPromise; + abortController; + constructor(device, transport, session) { + this.device = device; + this.transport = transport; + this.session = session; + transport.deviceEvents.once(device.transportPath, (e) => { + if (!this.disposed) { + this.disposed = constants_1.ERRORS.TypedError(e.type === transport_1.TRANSPORT.DEVICE_DISCONNECTED ? "Device_Disconnected" : "Device_UsedElsewhere"); + this.abortController?.abort(this.disposed); + } + }); + } + isDisposed() { + return !!this.disposed; + } + async typedCall(type, expectedType, msg = {}) { + const deviceSessionId = this.device.getThpState()?.sessionId || this.device?.features?.session_id; + if (!allowedCallsBeforeInitialize.includes(type) && !deviceSessionId) { + console.error("Runtime", `typedCall: Device not initialized when calling ${type}. call Initialize first`); + } + (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.MessageType.properties[type], msg); + this.abortController = new AbortController(); + const { + signal + } = this.abortController; + const abortPromise = new Promise((resolve) => signal.addEventListener("abort", () => resolve(signal.reason))); + const callPromise = this.callLoop(type, msg, abortPromise); + this.callPromise = callPromise; + const response = await callPromise; + this.callPromise = void 0; + this.abortController = void 0; + if (!response.success) throw response.error; + const { + payload + } = response; + const receivedType = payload.type; + if (isExpectedResponse(payload, expectedType)) { + return payload; + } else { + await (0, utils_1.scheduleAction)((abort) => this.transport.receive({ + session: this.session, + protocol: this.device.protocol, + thpState: this.device.getThpState(), + signal: abort + }), { + timeout: 500 + }).catch(() => { + }); + throw constants_1.ERRORS.TypedError("Runtime", `assertType: Response of unexpected type: ${receivedType}. Should be ${expectedType}`); + } + } + needCancelWorkaround() { + return this.transport.name === "BridgeTransport" && !utils_1.versionUtils.isNewer(this.transport.version, "2.0.28"); + } + async callLoop(type, msg, abortPromise) { + let [name, data] = [type, msg]; + let pinUnlocked = false; + while (true) { + const timeout = this.device.possibleT1 && name === "GetFeatures" ? 3e3 : void 0; + const callPromise = this.call(name, data, { + timeout + }); + const [abortedDuringCall, response] = await Promise.race([callPromise.then((res2) => [false, res2]), abortPromise.then((res2) => [true, nestedError(res2)])]); + if (name === "ButtonAck" && abortedDuringCall && !this.disposed) { + if (this.needCancelWorkaround()) { + try { + await (0, utils_1.resolveAfter)(1); + await this.device.acquire(); + await this.device.getCurrentSession().cancelCall(); + await this.device.release(); + } catch { + } + } else { + this.device.getThpState()?.sync("send", "Cancel"); + await this.send("Cancel", {}); + } + } + await callPromise; + if (this.disposed) return nestedError(this.disposed); + if (!response.success) return response; + const res = response.payload; + switch (res.type) { + case "Failure": { + const { + code, + message + } = res.message; + if (name === "GetFeatures" && code === "Failure_UnexpectedMessage") { + [name, data] = ["Initialize", {}]; + break; + } + const err2 = message || code === "Failure_FirmwareError" && "Firmware installation failed" || code === "Failure_ActionCancelled" && "Action cancelled by user" || "Failure_UnknownMessage"; + return error(new constants_1.ERRORS.TrezorError(code || "Failure_UnknownCode", err2)); + } + case "ButtonRequest": { + if (res.message.code === "ButtonRequest_PassphraseEntry") { + this.device.emit(events_1.DEVICE.PASSPHRASE_ON_DEVICE); + } else { + this.device.emit(events_1.DEVICE.BUTTON, { + device: this.device, + payload: res.message + }); + } + [name, data] = ["ButtonAck", {}]; + break; + } + case "PinMatrixRequest": { + const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.PIN, { + type: res.message.type + }), abortPromise.then(nestedError)]); + if (!promptRes.success) { + const cancelRes = await this.call("Cancel", {}); + return cancelRes.success ? promptRes : cancelRes; + } + pinUnlocked = true; + [name, data] = ["PinMatrixAck", { + pin: promptRes.payload + }]; + break; + } + case "PassphraseRequest": { + const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.PASSPHRASE, {}), abortPromise.then(nestedError)]); + if (!promptRes.success) { + const cancelRes = await this.call("Cancel", {}); + return cancelRes.success ? promptRes : cancelRes; + } + const payload = promptRes.payload.passphraseOnDevice ? { + on_device: true + } : { + passphrase: promptRes.payload.value.normalize("NFKD") + }; + [name, data] = ["PassphraseAck", payload]; + break; + } + case "WordRequest": { + const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.WORD, { + type: res.message.type + }), abortPromise.then(nestedError)]); + if (!promptRes.success) { + const cancelRes = await this.call("Cancel", {}); + return cancelRes.success ? promptRes : cancelRes; + } + [name, data] = ["WordAck", { + word: promptRes.payload + }]; + break; + } + default: { + if (!this.disposed && pinUnlocked && !this.device.features.unlocked) { + await this.device.getFeatures().catch(() => { + }); + } + return success(res); + } + } + } + } + async call(name, data, options = {}) { + if (this.disposed) return Promise.resolve(nestedError(this.disposed)); + logger.debug("Sending", name, filterForLog(name, data)); + const result = await this.transport.call({ + name, + data, + session: this.session, + protocol: this.device.protocol, + thpState: this.device.getThpState(), + ...options + }); + if (result.success) { + const { + type, + message + } = result.payload; + logger.debug("Received", type, filterForLog(type, message)); + } else { + logger.warn("Received transport error", result.error, result.message); + } + return result.success ? success(result.payload) : fail(result.message || result.error); + } + async send(name, data, options = {}) { + if (this.disposed) return Promise.resolve(nestedError(this.disposed)); + const result = await this.transport.send({ + name, + data, + session: this.session, + protocol: this.device.protocol, + thpState: this.device.getThpState(), + ...options + }); + return result.success ? success(result.payload) : fail(result.message || result.error); + } + async receive(options = {}) { + if (this.disposed) return Promise.resolve(nestedError(this.disposed)); + const result = await this.transport.receive({ + session: this.session, + protocol: this.device.protocol, + thpState: this.device.getThpState(), + ...options + }); + return result.success ? success(result.payload) : fail(result.message || result.error); + } + cancelCall() { + return this.call("Cancel", {}); + } + async abort(reason) { + this.abortController?.abort(reason); + await this.callPromise; + this.disposed = reason; + } + }; + exports2.DeviceCurrentSession = DeviceCurrentSession; + } +}); + +// node_modules/@trezor/connect/lib/device/calculateRevisionForDevice.js +var require_calculateRevisionForDevice = __commonJS({ + "node_modules/@trezor/connect/lib/device/calculateRevisionForDevice.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.calculateRevisionForDevice = void 0; + var versionUtils_1 = require_versionUtils(); + var calculateRevisionForDevice = ({ + commitRevision, + version + }) => { + if ((0, versionUtils_1.isNewer)(version, "2.4.0")) { + return commitRevision; + } + if ((0, versionUtils_1.isNewer)(version, "2.2.0")) { + return commitRevision.slice(0, 9); + } + if ((0, versionUtils_1.isNewer)(version, "2.1.8")) { + return commitRevision; + } + if ((0, versionUtils_1.isNewer)(version, "2.0.0")) { + return commitRevision.slice(0, 8); + } + return commitRevision; + }; + exports2.calculateRevisionForDevice = calculateRevisionForDevice; + } +}); + +// node_modules/@trezor/connect/lib/device/checkFirmwareRevision.js +var require_checkFirmwareRevision = __commonJS({ + "node_modules/@trezor/connect/lib/device/checkFirmwareRevision.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.checkFirmwareRevision = void 0; + var utils_1 = require_lib(); + var calculateRevisionForDevice_1 = require_calculateRevisionForDevice(); + var firmwareInfo_1 = require_firmwareInfo(); + var assetUtils_1 = require_assetUtils(); + var isNotFoundError = (e) => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404; + var isNodeJSOfflineError = (e) => ["FetchError", "AbortError"].includes(e.name); + var isReactNativeOfflineError = (e) => e.name === "TypeError" && e.message.includes("Network request failed"); + var isAbortControllerTimeout = (e) => e.message.includes("Aborted") || e.name === "AbortError" || e.name === "TimeoutError" && e.message.includes("signal timed out"); + var isOfflineError = (e) => { + if (!(e instanceof Error)) return false; + return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e); + }; + var failFirmwareRevisionCheck = (error, errorPayload) => ({ + success: false, + error, + ...errorPayload ? { + errorPayload + } : null + }); + var doRevisionsMatch = ({ + deviceRevision, + expectedCommitRevision, + firmwareVersion + }) => { + if (deviceRevision === null) { + return false; + } + const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({ + commitRevision: expectedCommitRevision, + version: firmwareVersion + }); + return adjustedExpected === deviceRevision; + }; + var checkFirmwareRevision = async ({ + firmwareVersion, + internalModel, + deviceRevision, + expectedRevision, + firmwareType + }) => { + if (expectedRevision === void 0) { + if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) { + return failFirmwareRevisionCheck("firmware-version-unknown"); + } + try { + const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType); + if (onlineRelease?.firmware_revision === void 0) { + return failFirmwareRevisionCheck("firmware-version-unknown"); + } + if (!doRevisionsMatch({ + deviceRevision, + expectedCommitRevision: onlineRelease.firmware_revision, + firmwareVersion + })) { + return failFirmwareRevisionCheck("revision-mismatch"); + } + return { + success: true + }; + } catch (e) { + if (isNotFoundError(e)) return failFirmwareRevisionCheck("firmware-version-unknown"); + return isOfflineError(e) ? failFirmwareRevisionCheck("cannot-perform-check-offline") : failFirmwareRevisionCheck("other-error", (0, utils_1.serializeError)(e)); + } + } + if (!doRevisionsMatch({ + deviceRevision, + expectedCommitRevision: expectedRevision, + firmwareVersion + })) { + return failFirmwareRevisionCheck("revision-mismatch"); + } + return { + success: true + }; + }; + exports2.checkFirmwareRevision = checkFirmwareRevision; + } +}); + +// node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHash.js +var require_checkFirmwareHash = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHash.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.checkFirmwareHash = void 0; + var crypto_1 = __require("crypto"); + var utils_1 = require_lib(); + var firmware_1 = require_firmware3(); + var DataManager_1 = require_DataManager(); + var firmwareInfo_1 = require_firmwareInfo(); + var firmwareUtils_1 = require_firmwareUtils2(); + var createFailResult = (error, errorPayload) => ({ + success: false, + error, + errorPayload + }); + var checkFirmwareHash = async ({ + device, + logger + }) => { + const enabled = DataManager_1.DataManager.getSettings("enableFirmwareHashCheck"); + if (!enabled) return createFailResult("check-skipped"); + const firmwareVersion = device.getVersion(); + if (firmwareVersion === void 0 || !device.features || device.features.bootloader_mode) { + return null; + } + const firmwareType = (0, firmwareUtils_1.getFirmwareType)(device.features); + const release = await (0, firmwareInfo_1.getReleaseByVersion)(device.features, firmwareVersion, firmwareType); + if (!release) return createFailResult("unknown-release"); + const firmwareLocation = (0, firmwareInfo_1.getFirmwareLocation)({ + firmwareVersion, + remotePath: release.url, + deviceModel: device.features.internal_model, + firmwareType: (0, firmwareUtils_1.getFirmwareType)(device.features) + }); + const { + baseUrl, + path: path2 + } = firmwareLocation; + const timeoutThresholdsPerModel = DataManager_1.DataManager.getSettings("firmwareHashCheckTimeouts"); + if (firmwareVersion === void 0 || !device.features || device.features.bootloader_mode) { + return null; + } + const checkSupported = !device.unavailableCapabilities.getFirmwareHash; + if (!checkSupported) return createFailResult("check-unsupported"); + const firmwareBinary = await (0, firmware_1.getBinaryOptional)({ + baseUrl, + path: path2, + release + }); + if (firmwareBinary === null) { + return createFailResult("check-unsupported"); + } + if (firmwareBinary.binary.byteLength < 200) { + logger.warn(`Firmware binary for hash check suspiciously small (< 200 b)`); + return createFailResult("check-unsupported"); + } + const strippedBinary = (0, firmware_1.stripFwHeaders)(firmwareBinary.binary); + const { + hash: expectedHash, + challenge + } = (0, firmware_1.calculateFirmwareHash)({ + internal_model: device.features.internal_model, + firmwareVersion, + fw: strippedBinary, + key: (0, crypto_1.randomBytes)(32) + }); + try { + const ts = performance.now(); + const deviceResponse = await device.getCurrentSession().typedCall("GetFirmwareHash", "FirmwareHash", { + challenge + }); + if (!deviceResponse?.message?.hash) { + return createFailResult("other-error", "Device response is missing hash"); + } + if (deviceResponse.message.hash !== expectedHash) { + return createFailResult("hash-mismatch"); + } + const duration = performance.now() - ts; + logger.debug("GetFirmwareHash time", duration); + const timeoutThreshold = timeoutThresholdsPerModel?.[device.features.internal_model]; + if (timeoutThreshold !== void 0 && duration > timeoutThreshold) { + return createFailResult("takes-too-long"); + } + return { + success: true + }; + } catch (errorPayload) { + return createFailResult("other-error", (0, utils_1.serializeError)(errorPayload)); + } + }; + exports2.checkFirmwareHash = checkFirmwareHash; + } +}); + +// node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHashWithRetries.js +var require_checkFirmwareHashWithRetries = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHashWithRetries.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.checkFirmwareHashWithRetries = void 0; + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var checkFirmwareHash_1 = require_checkFirmwareHash(); + var PROBE_CHECK_TIME_RETRIES = 4; + var probeCheckTime = async (context) => { + for (let i = 0; i < PROBE_CHECK_TIME_RETRIES; i++) { + const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context); + if (result !== null && (result.success || result.error !== "takes-too-long")) { + context.device.setAuthenticityChecks(result); + return; + } + } + }; + var checkFirmwareHashWithRetries = async (context) => { + const lastResult = context.device.getAuthenticityChecks().firmwareHash; + const notDoneYet = lastResult === null; + const attemptsDone = lastResult?.attemptCount ?? 0; + if (attemptsDone >= constants_1.FIRMWARE.HASH_CHECK_MAX_ATTEMPTS) return; + const wasError = lastResult !== null && !lastResult.success; + const wasErrorRetriable = wasError && (0, utils_1.isArrayMember)(lastResult.error, constants_1.FIRMWARE.HASH_CHECK_RETRIABLE_ERRORS); + const lastErrorPayload = wasError ? lastResult?.errorPayload : null; + if (notDoneYet || wasErrorRetriable) { + const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context); + context.device.setAuthenticityChecks(result); + if (result === null) return; + result.attemptCount = attemptsDone + 1; + if (!result.success && result.error === "takes-too-long") { + await probeCheckTime(context); + } + if (result.success && lastErrorPayload) { + result.warningPayload = { + lastErrorPayload + }; + } + } + }; + exports2.checkFirmwareHashWithRetries = checkFirmwareHashWithRetries; + } +}); + +// node_modules/@trezor/connect/lib/device/workflow/handshake.js +var require_handshake2 = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/handshake.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.handshakeCancel = void 0; + var protocol_1 = require_lib6(); + var transport_1 = require_lib10(); + var utils_1 = require_lib(); + var errors_1 = require_errors(); + var CANCEL_TIMEOUT = 1e3; + var ATTEMPTS_LIMIT = 10; + var isLegacyBridge = (transport) => transport.name === "BridgeTransport" && !utils_1.versionUtils.isNewerOrEqual(transport.version, "3.0.0"); + var handshakeCancel = async ({ + device, + logger, + signal + }) => { + if (device.features || device.getThpState()?.properties) { + return; + } + const timeout = device.possibleT1 ? CANCEL_TIMEOUT : void 0; + logger?.debug("handshake Cancel start"); + const send = await device.getCurrentSession().send("Cancel", {}, { + signal, + timeout + }); + if (!send.success) { + logger?.debug(`handshake Cancel send error ${send.error}`); + return; + } + logger?.debug("handshake Cancel sent"); + for (let attempt = 0; attempt < ATTEMPTS_LIMIT; ++attempt) { + logger?.debug(`handshake Cancel read attempt ${attempt}`); + const result = await device.getCurrentSession().receive({ + signal, + timeout + }); + if (!result.success && result.error.message === transport_1.TRANSPORT_ERROR.ABORTED_BY_TIMEOUT) { + if (isLegacyBridge(device.transport)) { + await (0, utils_1.resolveAfter)(501); + } + await device.acquire(); + } + if (!result.success && result.error.message !== protocol_1.PROTOCOL_MALFORMED) { + logger?.debug(`handshake Cancel read error: ${result.error}`); + return; + } else if (result.success) { + logger?.debug(`handshake Cancel read success: ${result.payload.type}`); + if (result.payload.type === "Failure" && result.payload.message.code === "Failure_InvalidProtocol") { + logger?.debug(`handshake Cancel protocol v2 detected`); + await device.setupThp(); + } + if (result.payload.type === "Failure" && result.payload.message.code === "Failure_Busy") { + throw (0, errors_1.TypedError)(result.payload.message.code, result.payload.message.message); + } + return; + } + } + logger?.debug(`handshake Cancel attempts limit reached`); + }; + exports2.handshakeCancel = handshakeCancel; + } +}); + +// node_modules/@trezor/connect/lib/utils/deviceFeaturesUtils.js +var require_deviceFeaturesUtils = __commonJS({ + "node_modules/@trezor/connect/lib/utils/deviceFeaturesUtils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.ensureInternalModelFeature = exports2.parseRevision = exports2.getUnavailableCapabilities = exports2.parseCapabilities = void 0; + var device_utils_1 = require_lib22(); + var utils_1 = require_lib(); + var config_1 = require_config(); + var DEFAULT_CAPABILITIES_T1 = ["Capability_Bitcoin", "Capability_Bitcoin_like", "Capability_Crypto", "Capability_Ethereum", "Capability_NEM", "Capability_Stellar", "Capability_U2F"]; + var DEFAULT_CAPABILITIES_TT = ["Capability_Bitcoin", "Capability_Bitcoin_like", "Capability_Binance", "Capability_Cardano", "Capability_Crypto", "Capability_EOS", "Capability_Ethereum", "Capability_Monero", "Capability_NEM", "Capability_Ripple", "Capability_Stellar", "Capability_Tezos", "Capability_U2F"]; + var parseCapabilities = (features) => { + if (!features || features.firmware_present === false) return []; + if (!features.capabilities || !features.capabilities.length) { + return features.major_version === 1 ? DEFAULT_CAPABILITIES_T1 : DEFAULT_CAPABILITIES_TT; + } + return features.capabilities; + }; + exports2.parseCapabilities = parseCapabilities; + var getUnavailableCapabilities = (features, coins) => { + const { + capabilities + } = features; + const list = {}; + if (!capabilities) return list; + const fw = [features.major_version, features.minor_version, features.patch_version].join("."); + const key = features.internal_model; + const supported = coins.filter((info) => { + if (!info.support || info.support[key] === false) { + const shortcut = info.shortcut.toLowerCase(); + const occurrences = coins.filter((coin) => shortcut == coin.shortcut.toLowerCase()); + const allUnsupported = occurrences.every((info2) => !info2.support || info2.support[key] === false); + if (allUnsupported) { + list[shortcut] = "no-support"; + } + return false; + } + return true; + }); + const unavailable = supported.filter((info) => { + if (info.type === "bitcoin") { + if (info.name === "Bitcoin" || info.name === "Testnet" || info.name === "Regtest") { + return !capabilities.includes("Capability_Bitcoin"); + } + return !capabilities.includes("Capability_Bitcoin_like"); + } + if (info.type === "ethereum") { + return !capabilities.includes("Capability_Ethereum"); + } + if (info.type === "nem") { + return !capabilities.includes("Capability_NEM"); + } + if (info.shortcut === "BNB" && info.type === "misc") { + return !capabilities.includes("Capability_Binance"); + } + if (info.shortcut === "ADA" || info.shortcut === "tADA") { + return !capabilities.includes("Capability_Cardano"); + } + if (info.shortcut === "XRP" || info.shortcut === "tXRP") { + return !capabilities.includes("Capability_Ripple"); + } + if (info.shortcut === "XLM" || info.shortcut === "tXLM") { + return !capabilities.includes("Capability_Stellar"); + } + if (info.shortcut === "SOL" || info.shortcut === "DSOL") { + return !capabilities.includes("Capability_Solana"); + } + return !(0, utils_1.isArrayMember)(`Capability_${info.name}`, capabilities); + }); + unavailable.forEach((info) => { + list[info.shortcut.toLowerCase()] = "no-capability"; + }); + supported.filter((info) => !unavailable.includes(info)).forEach((info) => { + const supportVersion = info.support[key]; + if (typeof supportVersion === "string" && utils_1.versionUtils.isNewer(supportVersion, fw)) { + list[info.shortcut.toLowerCase()] = "update-required"; + unavailable.push(info); + } + }); + config_1.config.supportedFirmware.forEach((s) => { + if (!s.capabilities) return; + const min = s.min ? s.min[key] : null; + const max = s.max ? s.max[key] : null; + if (min && (min === "0" || utils_1.versionUtils.isNewer(min, fw))) { + const value = min === "0" ? "no-support" : "update-required"; + s.capabilities.forEach((m) => { + list[m] = value; + }); + } + if (max && !utils_1.versionUtils.isNewerOrEqual(max, fw)) { + s.capabilities.forEach((m) => { + list[m] = "trezor-connect-outdated"; + }); + } + }); + return list; + }; + exports2.getUnavailableCapabilities = getUnavailableCapabilities; + var parseRevision = (features) => { + const { + revision + } = features; + if (!revision) return null; + if (/^(?=.*[a-f])([a-f0-9]*)$/gi.test(revision)) return revision; + const revisionUtf8 = Buffer.from(revision, "hex").toString("utf-8"); + return /^([a-f0-9])*$/gi.test(revisionUtf8) ? revisionUtf8 : revision; + }; + exports2.parseRevision = parseRevision; + var ensureInternalModelFeature = (model) => { + switch (model.toUpperCase()) { + case "T": + return device_utils_1.DeviceModelInternal.T2T1; + case "1": + return device_utils_1.DeviceModelInternal.T1B1; + default: + return device_utils_1.DeviceModelInternal.UNKNOWN; + } + }; + exports2.ensureInternalModelFeature = ensureInternalModelFeature; + } +}); + +// node_modules/@trezor/connect/lib/device/Device.js +var require_Device = __commonJS({ + "node_modules/@trezor/connect/lib/device/Device.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.Device = void 0; + var device_utils_1 = require_lib22(); + var protocol_1 = require_lib6(); + var transport_1 = require_lib10(); + var utils_1 = require_lib(); + var DeviceCommands_1 = require_DeviceCommands(); + var constants_1 = require_constants(); + var DeviceCurrentSession_1 = require_DeviceCurrentSession(); + var checkFirmwareRevision_1 = require_checkFirmwareRevision(); + var thp_1 = require_thp2(); + var checkFirmwareHashWithRetries_1 = require_checkFirmwareHashWithRetries(); + var coinInfo_1 = require_coinInfo(); + var firmwareInfo_1 = require_firmwareInfo(); + var events_1 = require_events(); + var types_1 = require_types9(); + var handshake_1 = require_handshake2(); + var assetUtils_1 = require_assetUtils(); + var debug_1 = require_debug2(); + var deviceFeaturesUtils_1 = require_deviceFeaturesUtils(); + var firmwareUtils_1 = require_firmwareUtils2(); + var _log = (0, debug_1.initLog)("Device"); + var Device = class extends utils_1.TypedEmitter { + transport; + thp; + descriptor; + sessionAcquired; + _protocol; + get protocol() { + return this._protocol; + } + getThpState() { + return this.thp; + } + unreadableError; + _firmwareStatus; + get firmwareStatus() { + return this._firmwareStatus; + } + _currentRelease; + get currentRelease() { + return this._currentRelease; + } + _firmwareReleaseConfigInfo; + get firmwareReleaseConfigInfo() { + return this._firmwareReleaseConfigInfo; + } + _features; + get features() { + return this._features; + } + wasUsedElsewhere = false; + acquirePromise; + releasePromise; + runAbort; + runPromise; + keepTransportSession = false; + currentSession; + instance = 0; + state = []; + stateStorage = void 0; + busy; + _unavailableCapabilities = {}; + get unavailableCapabilities() { + return this._unavailableCapabilities; + } + _firmwareType; + get firmwareType() { + return this._firmwareType; + } + get possibleHIDdevice() { + return this.descriptor.type === 0 || this.descriptor.type === 2; + } + get possibleT1() { + return (this.descriptor.type ?? 0) <= 2; + } + name = "Trezor"; + color; + availableTranslations = {}; + authenticityChecks = { + firmwareRevision: null, + firmwareHash: null + }; + uniquePath; + lifecycle = new utils_1.TypedEmitter(); + sessionDfd; + constructor({ + id, + transport, + descriptor + }) { + super(); + this._protocol = protocol_1.v1; + this.uniquePath = id; + this.transport = transport; + this.descriptor = { + id: descriptor.id, + apiType: descriptor.apiType, + type: descriptor.type, + path: descriptor.path + }; + this.sessionAcquired = null; + transport.on(transport_1.TRANSPORT.STOPPED, this.onTransportStopped); + transport.deviceEvents.on(this.descriptor.path, this.onTransportDeviceEvent); + } + get transportPath() { + return this.descriptor.path; + } + onTransportStopped = () => this.disconnect(); + onTransportDeviceEvent = (event) => { + switch (event.type) { + case transport_1.TRANSPORT.DEVICE_SESSION_CHANGED: + return this.updateDescriptor(event.descriptor); + case transport_1.TRANSPORT.DEVICE_REQUEST_RELEASE: + return this.usedElsewhere(); + case transport_1.TRANSPORT.DEVICE_DISCONNECTED: { + return this.disconnect(); + } + } + }; + getSessionChangePromise() { + if (!this.sessionDfd) { + this.sessionDfd = (0, utils_1.createDeferred)(); + this.sessionDfd.promise.catch(() => { + }).finally(() => { + this.sessionDfd = void 0; + }); + } + return this.sessionDfd.promise; + } + async waitAndCompareSession(response, sessionPromise) { + if (response.success) { + try { + if (await sessionPromise !== response.payload) { + return { + success: false, + error: transport_1.TRANSPORT_ERROR.SESSION_WRONG_PREVIOUS + }; + } + } catch { + return { + success: false, + error: transport_1.TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION + }; + } + } + return response; + } + acquire() { + const sessionPromise = this.getSessionChangePromise(); + const previous = this.transport.getDescriptor(this.descriptor.path)?.session ?? null; + this.acquirePromise = this.transport.acquire({ + input: { + path: this.descriptor.path, + previous + } + }).then((result) => this.waitAndCompareSession(result, sessionPromise)).then((result) => { + if (result.success) { + this.wasUsedElsewhere = false; + this.sessionAcquired = result.payload; + this.currentSession = new DeviceCurrentSession_1.DeviceCurrentSession(this, this.transport, this.sessionAcquired); + return result; + } else { + throw new Error(result.error); + } + }).finally(() => { + this.acquirePromise = void 0; + }); + return this.acquirePromise; + } + reset() { + _log.info(`Resetting Features and ThpState`); + this._features = void 0; + this._protocol = protocol_1.v1; + this.thp?.resetState(); + this.thp = void 0; + } + setBusy(value) { + this.busy = value; + } + release() { + if (!this.sessionAcquired || this.keepTransportSession || this.releasePromise) { + return; + } + const sessionPromise = this.getSessionChangePromise(); + this.releasePromise = this.transport.release({ + session: this.sessionAcquired, + path: this.descriptor.path + }).then((result) => this.waitAndCompareSession(result, sessionPromise)).then((result) => { + if (result.success) { + this.sessionAcquired = null; + } + return result; + }).finally(() => { + this.releasePromise = void 0; + }); + return this.releasePromise; + } + async setupThp() { + _log.info("Setup THP device"); + this._protocol = protocol_1.v2; + if (this.transport.name === "BridgeTransport" && !utils_1.versionUtils.isNewerOrEqual(this.transport.version, "3.0.0")) { + this.unreadableError = "THP incompatible with bridge " + this.transport.version; + } else { + try { + await this.transport.loadMessages("thp", protocol_1.thp.getProtobufDefinitions); + this.thp = new protocol_1.thp.ThpState(); + } catch (error) { + this.unreadableError = error.message; + } + } + } + async handshake() { + if (this.isUsedElsewhere()) { + return true; + } + try { + await this.run(); + } catch (error) { + _log.warn(`device.run error.message: ${error.message}, code: ${error.code}`); + if (error.code === "Device_NotFound" || error.code === "Device_Disconnected" || error.message === transport_1.TRANSPORT_ERROR.DEVICE_NOT_FOUND || error.message === transport_1.TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION || error.message === transport_1.TRANSPORT_ERROR.HTTP_ERROR) { + return false; + } + if (this.possibleHIDdevice && error.message === transport_1.TRANSPORT_ERROR.INTERFACE_UNABLE_TO_OPEN_DEVICE || error.message === transport_1.TRANSPORT_ERROR.LIBUSB_ERROR_ACCESS) { + this.unreadableError = error.message; + } + } + return true; + } + async updateDescriptor(descriptor) { + this.sessionDfd?.resolve(descriptor.session); + await Promise.all([this.acquirePromise, this.releasePromise]); + if (descriptor.session && descriptor.session !== this.sessionAcquired) { + this.usedElsewhere(); + } + if (!descriptor.session) { + this.keepTransportSession = false; + } + this.lifecycle.emit(events_1.DEVICE.CHANGED); + } + run(fn, options = {}) { + if (this.runPromise) { + _log.warn("Previous call is still running"); + throw constants_1.ERRORS.TypedError("Device_CallInProgress"); + } + const wasUnacquired = this.isUnacquired(); + this.runAbort = new AbortController(); + const { + signal + } = this.runAbort; + this.runPromise = Promise.race([this._runInner(fn, options, signal), new Promise((_, reject) => { + signal.addEventListener("abort", () => reject(signal.reason)); + })]).catch(async (err2) => { + this.keepTransportSession = false; + await this.acquirePromise; + await this.release(); + throw err2; + }).finally(() => { + this.runAbort = void 0; + this.runPromise = void 0; + }).then(() => { + if (wasUnacquired && !this.isUnacquired()) { + this.lifecycle.emit(events_1.DEVICE.CONNECT); + } + }); + return this.runPromise; + } + async interrupt(reason) { + await (0, thp_1.abortThpWorkflow)(this); + await this.currentSession?.abort(reason); + this.runAbort?.abort(reason); + await this.currentRun; + } + get currentRun() { + return this.runPromise?.catch(() => { + }); + } + usedElsewhere() { + this.wasUsedElsewhere = true; + if (!this.sessionAcquired) { + return; + } + this.transport.releaseDevice(this.sessionAcquired); + this.sessionAcquired = null; + _log.debug("interruptionFromOutside"); + this.runAbort?.abort(constants_1.ERRORS.TypedError("Device_UsedElsewhere")); + } + async _runInner(fn, options, abortSignal) { + if (this.releasePromise) { + await this.releasePromise; + } + const acquireNeeded = !this.isUsedHere() || this.currentSession?.isDisposed(); + if (acquireNeeded) { + await this.acquire(); + } + if (abortSignal.aborted) throw abortSignal.reason; + const { + staticSessionId, + deriveCardano + } = this.getState() || {}; + if (acquireNeeded || !staticSessionId || !deriveCardano && options.useCardanoDerivation) { + try { + await (0, handshake_1.handshakeCancel)({ + device: this, + logger: _log, + signal: abortSignal + }); + if (this.protocol.name === "v2") { + const withInteraction = !!fn; + this.busy = await (0, thp_1.getThpChannel)(this, withInteraction); + if (!this.busy) { + await this.getFeatures(); + } + } else if (fn) { + await this.initialize(!!options.useCardanoDerivation); + } else { + await this.getFeatures(); + } + } catch (error) { + _log.warn("Device._runInner error: ", error.message); + if (error.code === "Failure_Busy") { + this.busy = "busy"; + } + if (error.code === "ThpDeviceLocked") { + this.busy = "pin-locked"; + } + if (error.code === "Device_ThpPairingTagInvalid") { + return Promise.reject(error); + } + return Promise.reject(constants_1.ERRORS.TypedError("Device_InitializeFailed", `Initialize failed: ${error.message}${error.code ? `, code: ${error.code}` : ""}`)); + } + } + if (!options.skipFirmwareChecks) { + await (0, checkFirmwareHashWithRetries_1.checkFirmwareHashWithRetries)({ + device: this, + logger: _log + }); + await this.checkFirmwareRevisionWithRetries(); + } + if (!options.skipLanguageChecks && this.features?.language && !this.features.language_version_matches && this.atLeast("2.7.0")) { + _log.info("language version mismatch. silently updating..."); + try { + await this.changeLanguage({ + language: this.features.language + }); + } catch (err2) { + _log.error("change language failed silently", err2); + } + } + if (options.keepSession) { + this.keepTransportSession = true; + } + if (fn) { + await fn(); + if (!options.skipFinalReload) { + await this.getFeatures(); + } + } + if (!this.keepTransportSession && typeof options.keepSession !== "boolean" || options.keepSession === false) { + this.keepTransportSession = false; + await this.release(); + } + } + getCurrentSession() { + if (!this.currentSession) { + throw constants_1.ERRORS.TypedError("Runtime", `Device: commands not defined`); + } + return this.currentSession; + } + getCommands() { + return (0, DeviceCommands_1.DeviceCommands)(this.getCurrentSession()); + } + setInstance(instance = 0) { + if (this.instance !== instance) { + if (this.keepTransportSession) { + this.sessionAcquired = null; + this.keepTransportSession = false; + } + } + this.instance = instance; + } + getInstance() { + return this.instance; + } + getState() { + return this.state[this.instance]; + } + setState(state) { + if (!state) { + delete this.state[this.instance]; + } else { + const prevState = this.state[this.instance]; + const newState = { + ...prevState, + ...state + }; + this.state[this.instance] = newState; + this.stateStorage?.saveState(this, newState); + } + } + async initialize(useCardanoDerivation) { + let payload; + if (this.features) { + const { + sessionId, + deriveCardano + } = this.getState() || {}; + payload = { + derive_cardano: deriveCardano || useCardanoDerivation + }; + if (sessionId) { + payload.session_id = sessionId; + } + } + const { + message + } = await this.getCurrentSession().typedCall("Initialize", "Features", payload); + this._updateFeatures(message); + this._updateCurrentRelease(message); + this.setState({ + deriveCardano: payload?.derive_cardano + }); + } + initStorage(storage) { + this.stateStorage = storage; + this.setState(storage.loadState(this)); + } + async getFeatures() { + const { + message + } = await this.getCurrentSession().typedCall("GetFeatures", "Features", {}); + this._updateFeatures(message); + this._updateCurrentRelease(message); + } + getAuthenticityChecks() { + return this.authenticityChecks; + } + setAuthenticityChecks(firmwareHash) { + this.authenticityChecks.firmwareHash = firmwareHash; + } + async checkFirmwareRevisionWithRetries() { + const lastResult = this.authenticityChecks.firmwareRevision; + const notDoneYet = lastResult === null; + const wasError = lastResult !== null && !lastResult.success; + const wasErrorRetriable = wasError && (0, utils_1.isArrayMember)(lastResult.error, constants_1.FIRMWARE.REVISION_CHECK_RETRIABLE_ERRORS); + if (notDoneYet || wasErrorRetriable) { + await this.checkFirmwareRevision(); + } + } + async checkFirmwareRevision() { + const firmwareVersion = this.getVersion(); + if (!firmwareVersion || !this.features || !this.firmwareType) { + return; + } + if (this.features && this.features.bootloader_mode === true) { + return; + } + const release = (0, assetUtils_1.getReleaseAsset)(this.features.internal_model, firmwareVersion, this.firmwareType); + const result = await (0, checkFirmwareRevision_1.checkFirmwareRevision)({ + internalModel: this.features.internal_model, + deviceRevision: this.features.revision, + firmwareVersion, + expectedRevision: release?.firmware_revision, + firmwareType: this.firmwareType + }); + this.authenticityChecks = { + ...this.authenticityChecks, + firmwareRevision: result + }; + } + async changeLanguage({ + language, + binary + }) { + if (language === "en-US") { + return this._uploadTranslationData(null); + } + if (binary) { + return this._uploadTranslationData(binary); + } + const version = this.getVersion(); + if (!version) { + throw constants_1.ERRORS.TypedError("Runtime", "changeLanguage: device version unknown"); + } + if (!this.firmwareType) { + throw constants_1.ERRORS.TypedError("Runtime", "changeLanguage: firmware type unknown"); + } + if (!this._currentRelease) { + throw constants_1.ERRORS.TypedError("Runtime", "changeLanguage: release not found"); + } + const languageBinPath = this._currentRelease.translations[language]; + const downloadedBinary = await (0, firmwareInfo_1.getLanguage)(languageBinPath); + if (!downloadedBinary) { + throw constants_1.ERRORS.TypedError("Runtime", "changeLanguage: translation not found"); + } + let dataToSend; + if (Buffer.isBuffer(downloadedBinary)) { + dataToSend = new Uint8Array(downloadedBinary).buffer; + } else { + dataToSend = downloadedBinary; + } + return this._uploadTranslationData(dataToSend); + } + async _uploadTranslationData(payload) { + if (payload === null) { + const response2 = await this.getCurrentSession().typedCall("ChangeLanguage", ["Success"], { + data_length: 0 + }); + return response2.message; + } + const length = payload.byteLength; + let response = await this.getCurrentSession().typedCall("ChangeLanguage", ["DataChunkRequest", "Success"], { + data_length: length + }); + while (response.type !== "Success") { + const start = response.message.data_offset; + const end = response.message.data_offset + response.message.data_length; + const chunk = payload.slice(start, end); + response = await this.getCurrentSession().typedCall("DataChunkAck", ["DataChunkRequest", "Success"], { + data_chunk: Buffer.from(chunk).toString("hex") + }); + } + return response.message; + } + async _updateCurrentRelease(feat) { + const { + firmwareVersion + } = (0, firmwareInfo_1.getCurrentVersion)(feat); + const newFirmwareType = (0, firmwareUtils_1.getFirmwareType)(feat); + if (!firmwareVersion) { + return; + } + if (this._currentRelease && newFirmwareType === this.firmwareType && utils_1.versionUtils.isEqual(this._currentRelease.version, firmwareVersion)) { + return; + } + const release = await (0, firmwareInfo_1.getReleaseByVersion)(feat, firmwareVersion, newFirmwareType); + this._currentRelease = release; + this.availableTranslations = this._currentRelease?.translations ?? {}; + } + _updateFeatures(feat) { + const capabilities = (0, deviceFeaturesUtils_1.parseCapabilities)(feat); + feat.capabilities = capabilities; + if (this.features && this.features.session_id && !feat.session_id) { + feat.session_id = this.features.session_id; + } + feat.unlocked = feat.unlocked ?? true; + const revision = (0, deviceFeaturesUtils_1.parseRevision)(feat); + feat.revision = revision; + if (!feat.model && feat.major_version === 1) { + feat.model = "1"; + } + if (!feat.internal_model || !device_utils_1.DeviceModelInternal[feat.internal_model]) { + feat.internal_model = (0, deviceFeaturesUtils_1.ensureInternalModelFeature)(feat.model); + } + const version = this.getVersion(); + const newVersion = [feat.major_version, feat.minor_version, feat.patch_version]; + if (!version || !utils_1.versionUtils.isEqual(version, newVersion)) { + if (version) { + this.emit(events_1.DEVICE.FIRMWARE_VERSION_CHANGED, { + oldVersion: version, + newVersion, + device: this.toMessageObject() + }); + } + this._unavailableCapabilities = (0, deviceFeaturesUtils_1.getUnavailableCapabilities)(feat, (0, coinInfo_1.getAllNetworks)()); + this._firmwareStatus = (0, firmwareInfo_1.getFirmwareStatus)(feat, (0, firmwareUtils_1.getFirmwareType)(feat)); + this._firmwareReleaseConfigInfo = (0, firmwareInfo_1.getFirmwareReleaseConfigInfo)(feat, (0, firmwareUtils_1.getFirmwareType)(feat)); + this._currentRelease = (0, assetUtils_1.getReleaseAsset)(feat.internal_model, newVersion, (0, firmwareUtils_1.getFirmwareType)(feat)); + this.availableTranslations = this._currentRelease?.translations ?? {}; + } + this._features = feat; + this._firmwareType = (0, firmwareUtils_1.getFirmwareType)(feat); + const deviceInfo = device_utils_1.models[feat.internal_model] ?? { + name: `Unknown ${feat.internal_model}`, + colors: {} + }; + this.name = deviceInfo.name; + this.busy = void 0; + if (feat?.unit_color) { + const deviceUnitColor = feat.unit_color.toString(); + if (deviceUnitColor in deviceInfo.colors) { + this.color = deviceInfo.colors[deviceUnitColor]; + } + } + } + updateFeature(key, value) { + if (this._features) { + this._features = { + ...this._features, + [key]: value + }; + this.lifecycle.emit(events_1.DEVICE.CHANGED); + } + } + prompt(type, args) { + return new Promise((callback) => { + if (!this.listenerCount(type)) { + const payload = { + success: false, + error: new Error(`${type} callback not configured`) + }; + callback(payload); + } else { + this.emit(type, { + callback, + ...args + }); + } + }); + } + isUnacquired() { + return this.features === void 0; + } + isUnreadable() { + return !!this.unreadableError; + } + disconnect() { + _log.debug("Disconnect cleanup"); + this.transport.off(transport_1.TRANSPORT.STOPPED, this.onTransportStopped); + this.transport.deviceEvents.off(this.descriptor.path, this.onTransportDeviceEvent); + this.removeAllListeners(); + this.sessionDfd?.reject(new Error()); + if (this.sessionAcquired) { + this.transport.releaseSync(this.sessionAcquired); + this.sessionAcquired = null; + } + this.lifecycle.emit(events_1.DEVICE.DISCONNECT); + return this.interrupt(constants_1.ERRORS.TypedError("Device_Disconnected")); + } + isBootloader() { + return this.features && !!this.features.bootloader_mode; + } + isInitialized() { + return this.features && !!this.features.initialized; + } + isSeedless() { + return this.features && !!this.features.no_backup; + } + getVersion() { + if (!this.features) return; + return [this.features.major_version, this.features.minor_version, this.features.patch_version]; + } + atLeast(versions) { + const version = this.getVersion(); + if (!this.features || !version) return false; + const modelVersion = typeof versions === "string" ? versions : versions[this.features.major_version - 1]; + return utils_1.versionUtils.isNewerOrEqual(version, modelVersion); + } + isUsed() { + return !!this.transport.getDescriptor(this.descriptor.path)?.session; + } + isUsedHere() { + return !!this.sessionAcquired; + } + isUsedElsewhere() { + return this.isUsed() && !this.isUsedHere(); + } + getUniquePath() { + return this.uniquePath; + } + isT1() { + return this.features ? this.features.major_version === 1 : false; + } + hasUnexpectedMode(allow, require2) { + if (this.features) { + if (this.isBootloader() && !allow.includes(events_1.UI.BOOTLOADER)) { + return events_1.UI.BOOTLOADER; + } + if (!this.isInitialized() && !allow.includes(events_1.UI.INITIALIZE)) { + return events_1.UI.INITIALIZE; + } + if (this.isSeedless() && !allow.includes(events_1.UI.SEEDLESS)) { + return events_1.UI.SEEDLESS; + } + if (!this.isBootloader() && require2.includes(events_1.UI.BOOTLOADER)) { + return events_1.UI.NOT_IN_BOOTLOADER; + } + } + return null; + } + getStatus() { + if (this.isUsedElsewhere()) return "occupied"; + if (this.wasUsedElsewhere) return "used"; + if (this.busy) return this.busy; + return "available"; + } + getDeviceThp() { + const state = this.thp?.serialize(); + return state ? { + properties: state.properties, + credentials: state.credentials, + channel: state.channel + } : void 0; + } + toMessageObject() { + const { + name, + uniquePath: path2, + descriptor + } = this; + const { + apiType, + id + } = descriptor; + const base = { + path: path2, + name, + descriptor: { + apiType, + id + } + }; + const bluetoothProps = this.descriptor.id && this.descriptor.apiType === "bluetooth" ? { + id: (0, types_1.asBluetoothDeviceId)(this.descriptor.id) + } : void 0; + if (this.unreadableError) { + return { + ...base, + type: "unreadable", + error: this.unreadableError, + label: "Unreadable device", + hid: this.possibleHIDdevice + }; + } + if (this.isUnacquired()) { + const sessionOwner = this.transport.getDescriptor(this.descriptor.path)?.sessionOwner; + return { + ...base, + type: "unacquired", + label: "Unacquired device", + name: this.name, + transportSessionOwner: this.sessionAcquired ? void 0 : sessionOwner, + bluetoothProps, + thp: this.getDeviceThp(), + status: this.busy ? this.busy : void 0 + }; + } + const defaultLabel = "My Trezor"; + const label = this.features.label === "" || !this.features.label ? defaultLabel : this.features.label; + return { + ...base, + type: "acquired", + id: this.features.device_id, + label, + _state: this.getState(), + state: this.getState()?.staticSessionId, + status: this.getStatus(), + mode: (0, firmwareUtils_1.getFirmwareMode)(this.features), + color: this.color, + firmware: this.firmwareStatus, + firmwareReleaseConfigInfo: this.firmwareReleaseConfigInfo, + firmwareType: this.firmwareType, + features: this.features, + unavailableCapabilities: this.unavailableCapabilities, + availableTranslations: this.availableTranslations, + authenticityChecks: this.authenticityChecks, + bluetoothProps, + thp: this.getDeviceThp() + }; + } + }; + exports2.Device = Device; + } +}); + +// node_modules/@trezor/connect/lib/device/TransportList.js +var require_TransportList = __commonJS({ + "node_modules/@trezor/connect/lib/device/TransportList.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createTransportList = void 0; + var transport_1 = require_lib10(); + var constants_1 = require_constants(); + var tryGetTransport = (transports, name) => transports.find((t) => t.name === name); + var getOrCreateTransport = (transports, transportType, params) => { + if (transportType === "BridgeTransport") { + const existing = transports.filter((t) => t.name === transportType); + return existing.length ? existing : [new transport_1.BridgeTransport({ + ...params, + port: 21328 + }), new transport_1.BridgeTransport(params)]; + } + if (typeof transportType === "string") { + const existing = tryGetTransport(transports, transportType); + if (existing) return existing; + switch (transportType) { + case "WebUsbTransport": + return new transport_1.WebUsbTransport(params); + case "NodeUsbTransport": + return new transport_1.NodeUsbTransport(params); + case "UdpTransport": + return new transport_1.UdpTransport(params); + } + } else if (typeof transportType === "function" && "prototype" in transportType) { + const transportInstance = new transportType(params); + if ((0, transport_1.isTransportInstance)(transportInstance)) { + return tryGetTransport(transports, transportInstance.name) ?? transportInstance; + } + } else if ((0, transport_1.isTransportInstance)(transportType)) { + const existing = tryGetTransport(transports, transportType.name); + if (existing) { + return existing; + } + if (!transportType.getMessage()) { + transportType.updateMessages(params.messages); + } + return transportType; + } + throw constants_1.ERRORS.TypedError("Runtime", `DeviceList.init: transports[] of unexpected type: ${transportType}`); + }; + var createTransports = (existing, transports = [], params) => { + const transportTypes = transports?.length ? transports : ["BridgeTransport"]; + return transportTypes.flatMap((type) => getOrCreateTransport(existing, type, params)); + }; + var createTransportList = (params) => (existing, transports) => createTransports(existing, transports, params); + exports2.createTransportList = createTransportList; + } +}); + +// node_modules/@trezor/connect/lib/device/TransportManager.js +var require_TransportManager = __commonJS({ + "node_modules/@trezor/connect/lib/device/TransportManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.TransportManager = void 0; + var transport_1 = require_lib10(); + var utils_1 = require_lib(); + var createOverrideLock = () => { + let promise; + let sequence = 0; + let abort; + let message; + const override = async (abortMessage, action) => { + message = abortMessage; + const seq = ++sequence; + while (promise) { + abort?.abort(new Error(abortMessage)); + await promise.catch(() => { + }); + } + if (seq !== sequence) return Promise.reject(new Error(message)); + abort = new AbortController(); + promise = action(abort.signal).finally(() => { + abort = void 0; + promise = void 0; + }); + return promise; + }; + const getPending = () => promise; + return { + override, + getPending + }; + }; + var TransportManager = class extends utils_1.TypedEmitter { + lock = createOverrideLock(); + transports = []; + activeTransport; + transportReconnect = false; + upgradeTimeout; + startTransport; + constructor(startTransport) { + super(); + this.startTransport = startTransport; + } + pending() { + return this.lock.getPending(); + } + get() { + return this.activeTransport; + } + init({ + transports, + transportReconnect = false, + pendingTransportEvent = false + }) { + this.transports = transports; + this.transportReconnect = transportReconnect; + return this.lock.override("New init", (signal) => this.createInitPromise(pendingTransportEvent, signal)); + } + dispose() { + this.removeAllListeners(); + return this.lock.override("Disposing", () => { + const { + activeTransport + } = this; + if (activeTransport) { + clearTimeout(this.upgradeTimeout); + delete this.activeTransport; + activeTransport.stop(); + } + return Promise.resolve(); + }); + } + async selectTransport([transport, ...rest], signal) { + if (signal.aborted) throw new Error(signal.reason); + if (transport === this.activeTransport) return transport; + const result = await transport.init({ + signal + }); + if (result.success) return transport; + else if (rest.length) return this.selectTransport(rest, signal); + else throw new Error(result.error); + } + scheduleUpgradeCheck(pendingTransportEvent) { + clearTimeout(this.upgradeTimeout); + this.upgradeTimeout = setTimeout(async () => { + if (!this.activeTransport || this.activeTransport === this.transports[0]) return; + for (const t of this.transports) { + if (t === this.activeTransport) break; + if (await t.ping()) { + this.lock.override("Upgrading", (signal) => this.createInitPromise(pendingTransportEvent, signal)).catch(() => { + }); + return; + } + } + this.scheduleUpgradeCheck(pendingTransportEvent); + }, 1e3); + } + async createInitPromise(pendingTransportEvent, abortSignal) { + try { + const { + transports, + activeTransport + } = this; + const transport = transports.length ? await this.selectTransport(transports, abortSignal) : void 0; + if (activeTransport !== transport) { + if (activeTransport) { + clearTimeout(this.upgradeTimeout); + delete this.activeTransport; + activeTransport.stop(); + } + if (transport) { + try { + await this.startTransport(transport, pendingTransportEvent, abortSignal); + } catch (err2) { + transport.stop(); + throw err2; + } + transport.on(transport_1.TRANSPORT.ERROR, (error) => { + this.emit(transport_1.TRANSPORT.ERROR, error); + clearTimeout(this.upgradeTimeout); + this.lock.override("Transport error", async (signal) => { + delete this.activeTransport; + transport.stop(); + if (this.transportReconnect) { + await (0, utils_1.resolveAfter)(1e3, signal); + await this.createInitPromise(pendingTransportEvent, signal); + } + }).catch(() => { + }); + }); + this.activeTransport = transport; + this.emit(transport_1.TRANSPORT.START, transport); + } else { + this.emit(transport_1.TRANSPORT.ERROR, "Transport disabled"); + } + } + if (transport && transport !== transports[0]) { + this.scheduleUpgradeCheck(pendingTransportEvent); + } + } catch (error) { + this.emit(transport_1.TRANSPORT.ERROR, error?.message); + if (this.transportReconnect && !abortSignal.aborted) { + this.lock.override("Reconnecting", async (signal) => { + await (0, utils_1.resolveAfter)(1e3, signal); + await this.createInitPromise(pendingTransportEvent, signal); + }).catch(() => { + }); + } + } + } + }; + exports2.TransportManager = TransportManager; + } +}); + +// node_modules/@trezor/connect/lib/device/workflow/trezorPushNotification.js +var require_trezorPushNotification = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/trezorPushNotification.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.trezorPushNotificationHandler = void 0; + var protocol_1 = require_lib6(); + var utils_1 = require_lib(); + var device_1 = require_device2(); + var thp_1 = require_thp2(); + var setupDeviceMode = async (device, mode) => { + if (mode === protocol_1.TrezorPushNotificationMode.BootloaderMode && !device.features) { + device.setBusy("rebooting"); + await device.acquire(); + await device.getFeatures(); + await device.release(); + } + if (mode === protocol_1.TrezorPushNotificationMode.NormalMode && (!device.features || !device.getThpState())) { + device.setBusy("rebooting"); + await device.setupThp(); + await device.acquire(); + await (0, utils_1.resolveAfter)(1e3); + await (0, thp_1.getThpChannel)(device, false); + if (device.getThpState()?.phase === "paired") { + await device.getFeatures(); + } else { + device.setBusy("thp-locked"); + device.lifecycle.emit(device_1.DEVICE.CHANGED); + } + await device.release(); + } + }; + var trezorPushNotificationHandler = async ({ + device, + message + }) => { + const decodedResult = protocol_1.tpn.decode(message); + if (!decodedResult.success) return; + const decoded = decodedResult.payload; + device.lifecycle.emit(device_1.DEVICE.TREZOR_PUSH_NOTIFICATION, decoded); + const { + type, + mode + } = decoded; + const modeChanged = mode === protocol_1.TrezorPushNotificationMode.BootloaderMode && (device.getThpState()?.properties || device.features && !device.features.bootloader_mode) || mode === protocol_1.TrezorPushNotificationMode.NormalMode && device.features?.bootloader_mode; + if (modeChanged) { + device.reset(); + device.setBusy(mode === protocol_1.TrezorPushNotificationMode.BootloaderMode ? "bootloader-locked" : "rebooting"); + device.lifecycle.emit(device_1.DEVICE.CHANGED); + } + switch (type) { + case protocol_1.TrezorPushNotificationType.SETTING_CHANGE: + case protocol_1.TrezorPushNotificationType.PIN_CHANGE: + case protocol_1.TrezorPushNotificationType.NOTIFY_POWER_STATUS_CHANGE: + if (!device.isUsed()) { + await device.acquire(); + await device.getFeatures(); + await device.release(); + } + break; + case protocol_1.TrezorPushNotificationType.LOCK: + device.setBusy(mode === protocol_1.TrezorPushNotificationMode.BootloaderMode ? "bootloader-locked" : "hard-locked"); + device.lifecycle.emit(device_1.DEVICE.CHANGED); + break; + case protocol_1.TrezorPushNotificationType.UNLOCK: + await setupDeviceMode(device, decoded.mode); + break; + case protocol_1.TrezorPushNotificationType.SOFTLOCK: + device.setBusy("pin-locked"); + device.lifecycle.emit(device_1.DEVICE.CHANGED); + break; + case protocol_1.TrezorPushNotificationType.SOFTUNLOCK: + device.setBusy(device.features ? void 0 : "thp-locked"); + device.lifecycle.emit(device_1.DEVICE.CHANGED); + break; + default: + break; + } + }; + exports2.trezorPushNotificationHandler = trezorPushNotificationHandler; + } +}); + +// node_modules/@trezor/connect/lib/device/DeviceList.js +var require_DeviceList = __commonJS({ + "node_modules/@trezor/connect/lib/device/DeviceList.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.DeviceList = exports2.assertDeviceListConnected = void 0; + var transport_1 = require_lib10(); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var events_1 = require_events(); + var Device_1 = require_Device(); + var types_1 = require_types9(); + var TransportList_1 = require_TransportList(); + var TransportManager_1 = require_TransportManager(); + var debug_1 = require_debug2(); + var trezorPushNotification_1 = require_trezorPushNotification(); + var createAuthPenaltyManager = (priority) => { + const penalizedDevices = {}; + const get = () => 100 * priority + Object.keys(penalizedDevices).reduce((penalty, key) => Math.max(penalty, penalizedDevices[key]), 0); + const add2 = (device) => { + if (!device.isInitialized() || device.isBootloader() || !device.features.device_id) return; + const deviceID = device.features.device_id; + const penalty = penalizedDevices[deviceID] ? penalizedDevices[deviceID] + 500 : 2e3; + penalizedDevices[deviceID] = Math.min(penalty, 5e3); + }; + const remove = (device) => { + if (!device.isInitialized() || device.isBootloader() || !device.features.device_id) return; + const deviceID = device.features.device_id; + delete penalizedDevices[deviceID]; + }; + const clear = () => Object.keys(penalizedDevices).forEach((key) => delete penalizedDevices[key]); + return { + get, + add: add2, + remove, + clear + }; + }; + var getTransportInfo = (transport) => ({ + apiType: transport.apiType, + type: transport.name, + version: transport.version, + outdated: transport.isOutdated + }); + var assertDeviceListConnected = (deviceList) => { + if (!deviceList.isConnected()) { + throw constants_1.ERRORS.TypedError("Transport_Missing"); + } + }; + exports2.assertDeviceListConnected = assertDeviceListConnected; + var DeviceList = class extends utils_1.TypedEmitter { + transportManagers = {}; + transports = []; + devices = []; + deviceCounter = Date.now(); + handshakeLock; + authPenaltyManager; + updateTransports; + getConnectedTransports() { + return Object.values(this.transportManagers).map((manager) => manager.get()).filter(utils_1.isNotUndefined); + } + isConnected() { + return !!this.getConnectedTransports().length; + } + pendingConnection() { + const pending = Object.values(this.transportManagers).map((manager) => manager.pending()).filter(utils_1.isNotUndefined); + if (pending.length) return Promise.all(pending).then(() => { + }); + } + getActiveTransports() { + return this.getConnectedTransports().map(getTransportInfo); + } + constructor({ + messages, + priority, + debug, + manifest + }) { + super(); + const transportLogger = (0, debug_1.initLog)("@trezor/transport", debug); + this.handshakeLock = (0, utils_1.getSynchronize)(); + this.authPenaltyManager = createAuthPenaltyManager(priority); + this.updateTransports = (0, TransportList_1.createTransportList)({ + messages, + logger: transportLogger, + id: manifest?.appName || manifest?.appUrl || "unknown app" + }); + } + async onDeviceConnected(descriptor, transport) { + const id = (this.deviceCounter++).toString(16).slice(-8); + const device = new Device_1.Device({ + id: (0, types_1.asDeviceUniquePath)(id), + transport, + descriptor + }); + const penalty = this.authPenaltyManager.get(); + const stillConnected = await this.handshakeLock(() => (0, utils_1.resolveAfter)(penalty && penalty + 501).then(() => device.handshake())); + if (!stillConnected) { + return; + } + if (descriptor.id && descriptor.apiType === "bluetooth") { + transport.subscribe({ + path: device.descriptor.id, + channels: ["battery-level", "trezor-push-notification"] + }); + } + this.devices.push(device); + device.lifecycle.on(events_1.DEVICE.CONNECT, () => this.emit(events_1.DEVICE.CONNECT, device)); + device.lifecycle.on(events_1.DEVICE.CHANGED, () => this.emit(events_1.DEVICE.CHANGED, device)); + device.lifecycle.on(events_1.DEVICE.CONNECT_UNACQUIRED, () => this.emit(events_1.DEVICE.CONNECT_UNACQUIRED, device)); + device.lifecycle.on(events_1.DEVICE.TREZOR_PUSH_NOTIFICATION, (payload) => { + this.emit(events_1.DEVICE.TREZOR_PUSH_NOTIFICATION, { + device, + ...payload + }); + }); + device.lifecycle.on(events_1.DEVICE.DISCONNECT, () => { + device.lifecycle.removeAllListeners(); + this.authPenaltyManager.remove(device); + const index = this.devices.indexOf(device); + if (index >= 0) this.devices.splice(index, 1); + this.emit(events_1.DEVICE.DISCONNECT, device); + }); + this.emit(device.isUnacquired() ? events_1.DEVICE.CONNECT_UNACQUIRED : events_1.DEVICE.CONNECT, device); + } + onPushNotification(event) { + const device = this.devices.find((d) => d.descriptor.id === event.id); + if (device) { + (0, trezorPushNotification_1.trezorPushNotificationHandler)({ + device, + message: event.data + }); + } + } + onBatteryLevel(event) { + const device = this.devices.find((d) => d.descriptor.id === event.id); + device?.updateFeature("soc", event.data[0]); + } + getOrCreateTransportManager(apiType) { + if (!this.transportManagers[apiType]) { + const manager = new TransportManager_1.TransportManager(this.initializeTransport.bind(this)); + manager.on(transport_1.TRANSPORT.START, (transport) => this.emit(transport_1.TRANSPORT.START, getTransportInfo(transport))); + manager.on(transport_1.TRANSPORT.ERROR, (error) => this.emit(transport_1.TRANSPORT.ERROR, { + apiType, + error + })); + this.transportManagers[apiType] = manager; + } + return this.transportManagers[apiType]; + } + async init({ + transports, + transportReconnect, + pendingTransportEvent + } = {}) { + this.transports = this.updateTransports(this.transports, transports); + const promises = this.transports.map((t) => t.apiType).concat((0, utils_1.typedObjectKeys)(this.transportManagers)).filter(utils_1.arrayDistinct).map((apiType) => this.getOrCreateTransportManager(apiType).init({ + transports: this.transports.filter((t) => t.apiType === apiType), + transportReconnect, + pendingTransportEvent + })); + await Promise.all(promises); + } + async initializeTransport(transport, pendingTransportEvent, signal) { + transport.on(transport_1.TRANSPORT.DEVICE_CONNECTED, (d) => this.onDeviceConnected(d, transport)); + transport.on(transport_1.TRANSPORT.TREZOR_PUSH_NOTIFICATION, this.onPushNotification.bind(this)); + transport.on(transport_1.TRANSPORT.BATTERY_LEVEL, this.onBatteryLevel.bind(this)); + const enumerateResult = await transport.enumerate({ + signal + }); + if (!enumerateResult.success) { + throw new Error(enumerateResult.error); + } + const descriptors = enumerateResult.payload; + transport.handleDescriptorsChange(descriptors); + transport.listen(); + if (pendingTransportEvent && descriptors.length) { + await this.waitForDevices(transport, signal); + } + } + waitForDevices(transport, signal) { + const { + promise, + reject, + resolve + } = (0, utils_1.createDeferred)(); + const onAbort = () => reject(signal.reason); + signal.addEventListener("abort", onAbort); + const onError = (error) => reject(new Error(error)); + transport.once(transport_1.TRANSPORT.ERROR, onError); + const autoResolveTransportEventTimeout = setTimeout(resolve, 1e4); + this.handshakeLock(resolve); + return promise.finally(() => { + transport.off(transport_1.TRANSPORT.ERROR, onError); + signal.removeEventListener("abort", onAbort); + clearTimeout(autoResolveTransportEventTimeout); + }); + } + getDeviceCount() { + return this.devices.length; + } + getPrioritizedDevices() { + return [...this.devices].sort((a, b) => (a.descriptor.apiType === "bluetooth" ? 1 : 0) - (b.descriptor.apiType === "bluetooth" ? 1 : 0)); + } + getAllDevices() { + return this.getPrioritizedDevices(); + } + getOnlyDevice() { + return this.devices.length === 1 ? this.devices[0] : void 0; + } + getDeviceByPath(path2) { + return this.getPrioritizedDevices().find((d) => d.getUniquePath() === path2); + } + getDeviceByStaticState(state) { + const deviceId = state.split("@")[1].split(":")[0]; + return this.getPrioritizedDevices().find((d) => d.features?.device_id === deviceId); + } + async dispose() { + this.removeAllListeners(); + const promises = Object.values(this.transportManagers).map((manager) => manager.dispose()); + await Promise.all(promises); + } + async enumerate() { + const promises = this.getConnectedTransports().map(async (transport) => { + const res = await transport.enumerate(); + if (res.success) { + transport.handleDescriptorsChange(res.payload); + } + }); + await Promise.all(promises); + } + addAuthPenalty(device) { + return this.authPenaltyManager.add(device); + } + removeAuthPenalty(device) { + return this.authPenaltyManager.remove(device); + } + }; + exports2.DeviceList = DeviceList; + } +}); + +// node_modules/@trezor/connect/lib/device/StateStorage.js +var require_StateStorage = __commonJS({ + "node_modules/@trezor/connect/lib/device/StateStorage.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.WebextensionStateStorage = void 0; + var connect_common_1 = require_lib5(); + var WebextensionStateStorage = class { + origin; + constructor(origin) { + this.origin = origin; + } + loadState(device) { + if (!device.getState()?.sessionId) { + const { + preferredDevice + } = connect_common_1.storage.loadForOrigin(this.origin) || {}; + if (preferredDevice?.internalState && preferredDevice?.internalStateExpiration && preferredDevice.internalStateExpiration > (/* @__PURE__ */ new Date()).getTime()) { + return { + sessionId: preferredDevice.internalState + }; + } + } + return void 0; + } + saveState(device, state) { + const expirationDelay = Math.max(1e3 * 60 * 15, device.features.auto_lock_delay_ms ?? 0); + connect_common_1.storage.saveForOrigin((store) => ({ + ...store, + preferredDevice: store.preferredDevice ? { + ...store.preferredDevice, + state: state.staticSessionId, + internalState: state.sessionId, + internalStateExpiration: Date.now() + expirationDelay + } : void 0 + }), this.origin); + } + }; + exports2.WebextensionStateStorage = WebextensionStateStorage; + } +}); + +// node_modules/@trezor/connect/lib/device/workflow/validateState.js +var require_validateState = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/validateState.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateState = void 0; + var constants_1 = require_constants(); + var DataManager_1 = require_DataManager(); + var events_1 = require_events(); + var pathUtils_1 = require_pathUtils(); + var thp_1 = require_thp2(); + var getStaticSessionId = (device) => device.getCurrentSession().typedCall("GetAddress", "Address", { + address_n: [(0, pathUtils_1.toHardened)(44), (0, pathUtils_1.toHardened)(1), (0, pathUtils_1.toHardened)(0), 0, 0], + coin_name: "Testnet", + script_type: "SPENDADDRESS" + }).then(({ + message + }) => `${message.address}@${device.features.device_id}:${device.getInstance()}`); + var preauthorizeState = ({ + device, + method + }) => { + if (!device.features.unlocked && method.preauthorized) { + return device.getCommands().preauthorize(false); + } + }; + var isUnexpectedState = (expected, current) => expected && current && expected.split(":")[0] !== current.split(":")[0]; + var getState = async (context) => { + const { + device + } = context; + if (!device.features) return; + if (await preauthorizeState(context)) { + return; + } + const expectedState = device.getState()?.staticSessionId; + const uniqueState = await getStaticSessionId(device); + if (device.features.session_id) { + device.setState({ + sessionId: device.features.session_id + }); + } + if (isUnexpectedState(expectedState, uniqueState)) { + return uniqueState; + } + if (!expectedState || expectedState !== uniqueState) { + device.setState({ + staticSessionId: uniqueState + }); + } + }; + var MAX_PIN_TRIES = 3; + var getInvalidDeviceState = async (context) => { + for (let i = 0; i < MAX_PIN_TRIES - 1; ++i) { + try { + return await getState(context); + } catch (error) { + if (error.message.includes("PIN invalid")) { + context.method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PIN, { + device: context.device.toMessageObject() + })); + } else { + throw error; + } + } + } + return getState(context).catch((error) => { + if (error.message.includes("PIN invalid")) { + context.method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PIN_ATTEMPTS_DEPLETED, { + device: context.device.toMessageObject() + })); + } + throw error; + }); + }; + var getInvalidThpDeviceState = async (context) => { + const { + device, + method + } = context; + const currentState = device.getState(); + const expectedState = currentState?.staticSessionId; + const expectedSessionId = currentState?.sessionId ? Buffer.from(currentState.sessionId, "hex") : void 0; + if (await preauthorizeState(context)) { + return; + } + let uniqueState; + const thpState = device.getThpState(); + if (expectedSessionId) { + thpState.setSessionId(expectedSessionId); + uniqueState = await getStaticSessionId(device).catch((e) => { + switch (e.code) { + case "Failure_PinCancelled": + throw e; + case "Failure_InvalidSession": + default: + return void 0; + } + }); + if (isUnexpectedState(expectedState, uniqueState)) { + uniqueState = void 0; + } + if (!uniqueState) { + device.setState({ + sessionId: void 0, + deriveCardano: void 0 + }); + thpState?.setSessionId(Buffer.alloc(1)); + } + } + if (!uniqueState || !currentState?.deriveCardano && method.useCardanoDerivation) { + const newSessionId = thpState.createNewSessionId(); + await (0, thp_1.createThpSession)(device, method.useCardanoDerivation); + uniqueState = await getStaticSessionId(device); + device.setState({ + sessionId: newSessionId.toString("hex"), + deriveCardano: method.useCardanoDerivation + }); + } + if (isUnexpectedState(expectedState, uniqueState)) { + return uniqueState; + } + if (!expectedState) { + device.setState({ + staticSessionId: uniqueState }); - Object.defineProperty(this, "name", { - enumerable: true, - configurable: true, - writable: true, - value: "BaseError" + } + }; + var validateState = async (context) => { + const { + device, + method + } = context; + if (!method.useDeviceState) { + return; + } + const validate = device.protocol.name === "v2" ? getInvalidThpDeviceState : getInvalidDeviceState; + const isDeviceUnlocked = device.features.unlocked; + const isUsingPopup = DataManager_1.DataManager.getSettings("popup"); + try { + let invalidDeviceState = await validate(context); + if (isUsingPopup) { + while (invalidDeviceState) { + const uiPromise = method.createUiPromise(events_1.UI.INVALID_PASSPHRASE_ACTION, device); + method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PASSPHRASE, { + device: device.toMessageObject() + })); + const uiResp = await uiPromise.promise; + if (uiResp.payload) { + device.setState({ + sessionId: void 0 + }); + await device.initialize(method.useCardanoDerivation); + invalidDeviceState = await validate(context); + } else { + device.setState({ + staticSessionId: invalidDeviceState + }); + break; + } + } + } else if (invalidDeviceState) { + throw constants_1.ERRORS.TypedError("Device_InvalidState"); + } + } catch (error) { + device.setState({ + sessionId: void 0 }); - this.details = details; - this.docsPath = docsPath; - this.metaMessages = args.metaMessages; - this.name = args.name ?? this.name; - this.shortMessage = shortMessage; - this.version = version; + return Promise.reject(error); } - walk(fn) { - return walk(this, fn); + if (!isDeviceUnlocked && device.features.unlocked) { + method.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CHANGED, device.toMessageObject())); } }; + exports2.validateState = validateState; } }); -// node_modules/viem/_esm/utils/unit/formatUnits.js -function formatUnits(value, decimals) { - let display = value.toString(); - const negative = display.startsWith("-"); - if (negative) - display = display.slice(1); - display = display.padStart(decimals, "0"); - let [integer, fraction] = [ - display.slice(0, display.length - decimals), - display.slice(display.length - decimals) - ]; - fraction = fraction.replace(/(0+)$/, ""); - return `${negative ? "-" : ""}${integer || "0"}${fraction ? `.${fraction}` : ""}`; -} -var init_formatUnits = __esm({ - "node_modules/viem/_esm/utils/unit/formatUnits.js"() { +// node_modules/@trezor/connect/lib/device/workflow/index.js +var require_workflow = __commonJS({ + "node_modules/@trezor/connect/lib/device/workflow/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.validateState = void 0; + var validateState_1 = require_validateState(); + Object.defineProperty(exports2, "validateState", { + enumerable: true, + get: function() { + return validateState_1.validateState; + } + }); } }); -// node_modules/viem/_esm/constants/abis.js -var universalResolverErrors, universalResolverResolveAbi, universalResolverReverseAbi, erc20Abi; -var init_abis = __esm({ - "node_modules/viem/_esm/constants/abis.js"() { - universalResolverErrors = [ - { - inputs: [], - name: "ResolverNotFound", - type: "error" - }, - { - inputs: [], - name: "ResolverWildcardNotSupported", - type: "error" - }, - { - inputs: [], - name: "ResolverNotContract", - type: "error" - }, - { - inputs: [ - { - name: "returnData", - type: "bytes" +// node_modules/@trezor/connect/lib/utils/interactionTimeout.js +var require_interactionTimeout = __commonJS({ + "node_modules/@trezor/connect/lib/utils/interactionTimeout.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.InteractionTimeout = void 0; + var debug_1 = require_debug2(); + var _log = (0, debug_1.initLog)("InteractionTimeout"); + var InteractionTimeout = class { + timeout = null; + seconds = 0; + constructor(seconds) { + if (seconds) { + this.seconds = seconds; + } + } + start(cancelFn, seconds) { + const time = seconds || this.seconds; + if (time < 1) { + return; + } + this.stop(); + _log.debug(`starting interaction timeout for ${time} seconds`); + this.timeout = setTimeout(() => { + _log.debug("interaction timed out"); + cancelFn(); + }, 1e3 * time); + } + stop() { + if (this.timeout) { + _log.debug("clearing interaction timeout"); + clearTimeout(this.timeout); + } + } + }; + exports2.InteractionTimeout = InteractionTimeout; + } +}); + +// node_modules/@trezor/connect/lib/utils/popupPromiseManager.js +var require_popupPromiseManager = __commonJS({ + "node_modules/@trezor/connect/lib/utils/popupPromiseManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createPopupPromiseManager = void 0; + var utils_1 = require_lib(); + var createPopupPromiseManager = () => { + let _popupPromise; + const ensure = () => _popupPromise ?? (_popupPromise = (0, utils_1.createDeferred)()); + const wait = () => ensure().promise; + const resolve = () => ensure().resolve(); + const isWaiting = () => !!_popupPromise; + const reject = (error) => { + _popupPromise?.reject(error); + _popupPromise = void 0; + }; + const clear = () => { + _popupPromise = void 0; + }; + return { + wait, + isWaiting, + clear, + resolve, + reject + }; + }; + exports2.createPopupPromiseManager = createPopupPromiseManager; + } +}); + +// node_modules/@trezor/connect/lib/utils/uiPromiseManager.js +var require_uiPromiseManager = __commonJS({ + "node_modules/@trezor/connect/lib/utils/uiPromiseManager.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.createUiPromiseManager = void 0; + var utils_1 = require_lib(); + var events_1 = require_events(); + var createUiPromiseManager = (interactionTimeout) => { + let _uiPromises = []; + const exists = (type) => _uiPromises.some((p) => p.id === type); + const create = (promiseEvent, device) => { + const uiPromise = { + ...(0, utils_1.createDeferred)(promiseEvent), + device + }; + const existing = _uiPromises.findIndex((p) => p.id === promiseEvent); + if (existing >= 0) { + console.warn(`UiPromise '${promiseEvent}' already exists.`); + _uiPromises.splice(existing, 1); + } + _uiPromises.push(uiPromise); + interactionTimeout(); + return uiPromise; + }; + const resolve = (event) => { + const uiPromise = _uiPromises.find((p) => p.id === event.type); + if (!uiPromise) return false; + uiPromise.resolve(event); + _uiPromises = _uiPromises.filter((p) => p !== uiPromise); + return true; + }; + const rejectAll = (error) => { + _uiPromises.forEach((p) => p.reject(error)); + _uiPromises = []; + }; + const disconnected = (devicePath) => { + const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, (p) => p.device?.getUniquePath() === devicePath && p.id === events_1.DEVICE.DISCONNECT); + toResolve.forEach((p) => p.resolve({ + type: events_1.DEVICE.DISCONNECT + })); + _uiPromises = toKeep; + return !!toResolve.length || toKeep.some((p) => p.device?.getUniquePath() === devicePath); + }; + const get = (type) => { + const uiPromise = _uiPromises.find((p) => p.id === type); + return uiPromise?.promise ?? Promise.reject(new Error(`UiPromise ${type} doesn't exist`)); + }; + const clear = () => { + _uiPromises = []; + }; + return { + exists, + create, + resolve, + rejectAll, + disconnected, + get, + clear + }; + }; + exports2.createUiPromiseManager = createUiPromiseManager; + } +}); + +// node_modules/@trezor/connect/lib/core/index.js +var require_core2 = __commonJS({ + "node_modules/@trezor/connect/lib/core/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.initCoreState = exports2.Core = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var events_1 = tslib_1.__importDefault(__require("events")); + var connect_common_1 = require_lib5(); + var transport_1 = require_lib10(); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var method_1 = require_method2(); + var onCallFirmwareUpdate_1 = require_onCallFirmwareUpdate(); + var BlockchainLink_1 = require_BlockchainLink(); + var DataManager_1 = require_DataManager(); + var analyticsInfo_1 = require_analyticsInfo(); + var connectSettings_1 = require_connectSettings(); + var DeviceList_1 = require_DeviceList(); + var StateStorage_1 = require_StateStorage(); + var workflows = tslib_1.__importStar(require_workflow()); + var events_2 = require_events(); + var debug_1 = require_debug2(); + var interactionTimeout_1 = require_interactionTimeout(); + var popupPromiseManager_1 = require_popupPromiseManager(); + var uiPromiseManager_1 = require_uiPromiseManager(); + var _log = (0, debug_1.initLog)("Core"); + var waitForPopup = ({ + popupPromise, + sendCoreMessage + }) => { + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_UI_WINDOW)); + return popupPromise.wait(); + }; + var startInteractionTimeout = (context) => context.interactionTimeout.start(() => { + onPopupClosed(context, "Interaction timeout"); + }); + var initDevice = async (context, methodCallDevice) => { + const { + uiPromises, + deviceList, + sendCoreMessage + } = context; + (0, DeviceList_1.assertDeviceListConnected)(deviceList); + const isWebUsb = deviceList.getActiveTransports().some((t) => t.type === "WebUsbTransport"); + let device; + let showDeviceSelection = isWebUsb; + const isUsingPopup = DataManager_1.DataManager.getSettings("popup"); + const origin = DataManager_1.DataManager.getSettings("origin"); + const useCoreInPopup = DataManager_1.DataManager.getSettings("useCoreInPopup"); + const { + preferredDevice + } = connect_common_1.storage.load().origin[origin] || {}; + const preferredDeviceInList = preferredDevice?.state && deviceList.getDeviceByStaticState(preferredDevice.state); + if (methodCallDevice?.state?.staticSessionId) { + device = deviceList.getDeviceByStaticState(methodCallDevice.state.staticSessionId); + } + if (!device && methodCallDevice?.path) { + device = deviceList.getDeviceByPath(methodCallDevice.path); + } + if (preferredDevice && !device) { + if (preferredDeviceInList) { + device = preferredDeviceInList; + } else { + connect_common_1.storage.save((store) => { + store.origin[origin] = { + ...store.origin[origin], + preferredDevice: void 0 + }; + return store; + }); + } + } + if (device) { + showDeviceSelection = device.isUnreadable() || device.isUnacquired() && !!isUsingPopup; + } else { + const onlyDevice = deviceList.getOnlyDevice(); + if (onlyDevice && (!isWebUsb || !isUsingPopup)) { + device = onlyDevice; + showDeviceSelection = device.isUnreadable() || device.isUnacquired() || !!useCoreInPopup; + } else { + showDeviceSelection = true; + } + } + if (showDeviceSelection) { + uiPromises.create(events_2.UI.RECEIVE_DEVICE); + await waitForPopup(context); + (0, DeviceList_1.assertDeviceListConnected)(deviceList); + const onlyDevice = deviceList.getOnlyDevice(); + if (onlyDevice && !onlyDevice.isUnreadable() && !onlyDevice.isUnacquired() && !isWebUsb && !useCoreInPopup) { + device = onlyDevice; + } else { + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.SELECT_DEVICE, { + webusb: isWebUsb, + devices: deviceList.getAllDevices().map((d) => d.toMessageObject()) + })); + if (uiPromises.exists(events_2.UI.RECEIVE_DEVICE)) { + const { + payload + } = await uiPromises.get(events_2.UI.RECEIVE_DEVICE); + if (payload.remember) { + const { + label, + path: path2, + state + } = payload.device; + connect_common_1.storage.save((store) => { + store.origin[origin] = { + ...store.origin[origin], + preferredDevice: { + label, + path: path2, + state + } + }; + return store; + }); + } + device = deviceList.getDeviceByPath(payload.device.path); } - ], - name: "ResolverError", - type: "error" - }, - { - inputs: [ - { - components: [ - { - name: "status", - type: "uint16" - }, - { - name: "message", - type: "string" - } - ], - name: "errors", - type: "tuple[]" + } + } else if (uiPromises.exists(events_2.UI.RECEIVE_DEVICE)) { + await uiPromises.get(events_2.UI.RECEIVE_DEVICE); + } + if (!device) { + throw constants_1.ERRORS.TypedError("Device_NotFound"); + } + return device; + }; + var inner = async (context, method, device) => { + const { + uiPromises, + sendCoreMessage + } = context; + const trustedHost = DataManager_1.DataManager.getSettings("trustedHost"); + const isUsingPopup = DataManager_1.DataManager.getSettings("popup") ?? false; + const firmwareException = method.checkFirmwareRange(); + if (firmwareException) { + if (isUsingPopup) { + if (firmwareException === events_2.UI.FIRMWARE_NOT_COMPATIBLE) { + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.FIRMWARE_NOT_COMPATIBLE, device.toMessageObject())); + const uiResp = await uiPromise.promise; + if (!uiResp.payload) { + throw constants_1.ERRORS.TypedError("Method_PermissionsNotGranted"); + } + } else { + await waitForPopup(context); + sendCoreMessage((0, events_2.createUiMessage)(firmwareException, device.toMessageObject())); + await uiPromises.create(events_2.DEVICE.DISCONNECT, device).promise; + return Promise.reject(constants_1.ERRORS.TypedError("Method_Cancel")); } - ], - name: "HttpError", - type: "error" + } else { + return Promise.reject(constants_1.ERRORS.TypedError("Device_FwException", firmwareException)); + } } - ]; - universalResolverResolveAbi = [ - ...universalResolverErrors, - { - name: "resolve", - type: "function", - stateMutability: "view", - inputs: [ - { name: "name", type: "bytes" }, - { name: "data", type: "bytes" } - ], - outputs: [ - { name: "", type: "bytes" }, - { name: "address", type: "address" } - ] - }, - { - name: "resolve", - type: "function", - stateMutability: "view", - inputs: [ - { name: "name", type: "bytes" }, - { name: "data", type: "bytes" }, - { name: "gateways", type: "string[]" } - ], - outputs: [ - { name: "", type: "bytes" }, - { name: "address", type: "address" } - ] + const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode); + if (unexpectedMode) { + if (isUsingPopup) { + await waitForPopup(context); + sendCoreMessage((0, events_2.createUiMessage)(unexpectedMode, device.toMessageObject())); + await uiPromises.create(events_2.DEVICE.DISCONNECT, device).promise; + return Promise.reject(constants_1.ERRORS.TypedError("Device_ModeException", unexpectedMode)); + } + return Promise.reject(constants_1.ERRORS.TypedError("Device_ModeException", unexpectedMode)); } - ]; - universalResolverReverseAbi = [ - ...universalResolverErrors, - { - name: "reverse", - type: "function", - stateMutability: "view", - inputs: [{ type: "bytes", name: "reverseName" }], - outputs: [ - { type: "string", name: "resolvedName" }, - { type: "address", name: "resolvedAddress" }, - { type: "address", name: "reverseResolver" }, - { type: "address", name: "resolver" } - ] - }, - { - name: "reverse", - type: "function", - stateMutability: "view", - inputs: [ - { type: "bytes", name: "reverseName" }, - { type: "string[]", name: "gateways" } - ], - outputs: [ - { type: "string", name: "resolvedName" }, - { type: "address", name: "resolvedAddress" }, - { type: "address", name: "reverseResolver" }, - { type: "address", name: "resolver" } - ] + method.checkDeviceCapability(); + method.checkPermissions({ + origin: DataManager_1.DataManager.getSettings("origin") + }); + if (!trustedHost && method.requiredPermissions.length > 0) { + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PERMISSION, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PERMISSION, { + permissions: method.requiredPermissions, + device: device.toMessageObject() + })); + const { + granted, + remember + } = await uiPromise.promise.then(({ + payload + }) => payload); + if (granted) { + method.savePermissions(!remember, { + origin: DataManager_1.DataManager.getSettings("origin") + }); + } else { + return Promise.reject(constants_1.ERRORS.TypedError("Method_PermissionsNotGranted")); + } } - ]; - erc20Abi = [ - { - type: "event", - name: "Approval", - inputs: [ - { - indexed: true, - name: "owner", - type: "address" - }, - { - indexed: true, - name: "spender", - type: "address" - }, - { - indexed: false, - name: "value", - type: "uint256" - } - ] - }, - { - type: "event", - name: "Transfer", - inputs: [ - { - indexed: true, - name: "from", - type: "address" - }, - { - indexed: true, - name: "to", - type: "address" - }, - { - indexed: false, - name: "value", - type: "uint256" + const deviceNeedsBackup = device.features.backup_availability === "Required"; + if (deviceNeedsBackup) { + if (method.noBackupConfirmationMode === "always" || method.noBackupConfirmationMode === "popup-only" && isUsingPopup) { + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device); + sendCoreMessage((0, analyticsInfo_1.enhanceMessageWithAnalytics)((0, events_2.createUiMessage)(events_2.UI.REQUEST_CONFIRMATION, { + view: "no-backup" + }), { + device: device.toMessageObject() + })); + const permitted = await uiPromise.promise.then(({ + payload + }) => payload); + if (!permitted) { + return Promise.reject(constants_1.ERRORS.TypedError("Method_PermissionsNotGranted")); } - ] - }, - { - type: "function", - name: "allowance", - stateMutability: "view", - inputs: [ - { - name: "owner", - type: "address" - }, - { - name: "spender", - type: "address" + } + await waitForPopup(context); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.DEVICE_NEEDS_BACKUP, device.toMessageObject())); + } + if (device.firmwareStatus === "outdated") { + await waitForPopup(context); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.FIRMWARE_OUTDATED, device.toMessageObject())); + } + if (!trustedHost) { + const requestConfirmation = method.confirmation; + if (requestConfirmation) { + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device); + sendCoreMessage((0, analyticsInfo_1.enhanceMessageWithAnalytics)((0, events_2.createUiMessage)(events_2.UI.REQUEST_CONFIRMATION, requestConfirmation), { + device: device.toMessageObject() + })); + const confirmed = await uiPromise.promise.then(({ + payload + }) => payload); + if (!confirmed) { + return Promise.reject(constants_1.ERRORS.TypedError("Method_Cancel")); } - ], - outputs: [ - { - type: "uint256" + } + } + const workflowCtx = { + device, + method, + signal: context.signal + }; + await workflows.validateState(workflowCtx); + if (method.useUi) { + await waitForPopup(context); + } else { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); + } + try { + const response = await method.run(); + return (0, events_2.createResponseMessage)(method.responseID, true, response, device); + } catch (error) { + return Promise.reject(error); + } + }; + var onCall = async (context, message) => { + if (!message.id || !message.payload || message.type !== events_2.IFRAME.CALL) { + throw constants_1.ERRORS.TypedError("Method_InvalidParameter", "onCall: message.id or message.payload is missing"); + } + const { + uiPromises, + callMethods, + methodSynchronize, + resolveWaitForFirstMethod, + sendCoreMessage + } = context; + const responseID = message.id; + let method; + try { + method = await methodSynchronize(async () => { + _log.debug("loading method..."); + const method2 = await (0, method_1.getMethod)(message); + _log.debug("method selected", method2.name); + method2.postMessage = sendCoreMessage; + method2.createUiPromise = uiPromises.create; + method2.init(); + await method2.initAsync?.(); + return method2; + }); + resolveWaitForFirstMethod(); + callMethods.push(method); + } catch (error) { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); + sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, { + error + })); + return Promise.resolve(); + } + if (method.payload.__info) { + const response = method.getMethodInfo(); + if (method.payload.__precomposed) { + response.precomposed = await method.payloadToPrecomposed(); + } + sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, true, response)); + return Promise.resolve(); + } + if (!method.useDevice) { + try { + if (method.useUi) { + await waitForPopup(context); + } else { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); } - ] - }, - { - type: "function", - name: "approve", - stateMutability: "nonpayable", - inputs: [ - { - name: "spender", - type: "address" - }, - { - name: "amount", - type: "uint256" + const response = await method.run(); + sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, true, response)); + } catch (error) { + sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, false, { + error + })); + } + return Promise.resolve(); + } + if (method.isManagementRestricted({ + origin: DataManager_1.DataManager.getSettings("origin") + })) { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); + sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, { + error: constants_1.ERRORS.TypedError("Method_NotAllowed") + })); + return Promise.resolve(); + } + return await onCallDevice(context, message, method); + }; + var onCallDevice = async (context, message, method) => { + const { + deviceList, + callMethods, + sendCoreMessage + } = context; + const responseID = message.id; + const { + origin, + env, + useCoreInPopup, + transports + } = DataManager_1.DataManager.getSettings(); + if (!deviceList.isConnected() && !deviceList.pendingConnection()) { + deviceList.init({ + transports + }); + } + await deviceList.pendingConnection(); + const shouldRetry = ["web", "webextension"].includes(env); + let tempDevice; + while (!tempDevice) { + try { + tempDevice = await initDevice(context, message.payload.device); + } catch (error) { + if (error.code === "Transport_Missing") { + await waitForPopup(context); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.TRANSPORT)); + if (deviceList.pendingConnection() && shouldRetry) { + while (deviceList.pendingConnection()) { + await deviceList.pendingConnection(); + } + continue; + } + } else { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); } - ], - outputs: [ - { - type: "bool" + sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, { + error + })); + throw error; + } + } + const device = tempDevice; + method.setDevice(device); + const previousCall = callMethods.filter((call) => call && call !== method && call.device?.getUniquePath() === method.device.getUniquePath()); + if (previousCall.length > 0 && method.overridePreviousCall) { + previousCall.forEach((call) => { + call.overridden = true; + }); + const overrideError = constants_1.ERRORS.TypedError("Method_Override"); + await device.interrupt(overrideError); + if (method.overridden) { + sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, false, { + error: overrideError + })); + throw overrideError; + } + } else if (device.currentRun) { + if (device.isUnacquired()) { + await device.currentRun; + } else { + sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, { + error: constants_1.ERRORS.TypedError("Device_CallInProgress") + })); + throw constants_1.ERRORS.TypedError("Device_CallInProgress"); + } + } + device.setInstance(message.payload.device?.instance); + if (method.hasExpectedDeviceState) { + device.setState(method.deviceState); + } + registerDeviceEvents(context, method)(device); + if (useCoreInPopup && env === "webextension" && origin) { + device.initStorage(new StateStorage_1.WebextensionStateStorage(origin)); + } + let messageResponse; + try { + const innerAction = () => inner(context, method, device).then((response) => { + messageResponse = response; + }); + await device.run(innerAction, { + keepSession: method.keepSession, + skipFinalReload: method.skipFinalReload, + useCardanoDerivation: method.useCardanoDerivation + }); + } catch (error) { + if (error.cause) { + _log.debug("device.run error caught, caused by:", error.cause); + } + if (error.code === "Device_Disconnected") { + deviceList.addAuthPenalty(device); + } + if (method) { + if (deviceList.isConnected() && error.message === transport_1.TRANSPORT_ERROR.SESSION_WRONG_PREVIOUS) { + await deviceList.enumerate(); } - ] - }, - { - type: "function", - name: "balanceOf", - stateMutability: "view", - inputs: [ - { - name: "account", - type: "address" + messageResponse = (0, events_2.createResponseMessage)(method.responseID, false, { + error + }); + } + } finally { + if (method.keepSession && method.deviceState && method.deviceState.sessionId !== device.getState()?.sessionId) { + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CHANGED, device.toMessageObject())); + } + const response = messageResponse; + if (response) { + device.eventNames().forEach((e) => device.removeAllListeners(e)); + if (useCoreInPopup) { + sendCoreMessage(response); } - ], - outputs: [ - { - type: "uint256" + closePopup(context); + cleanup(context); + if (method) { + method.dispose(); } - ] - }, - { - type: "function", - name: "decimals", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "uint8" + if (response.success) { + deviceList.removeAuthPenalty(device); } - ] - }, - { - type: "function", - name: "name", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "string" + if (!useCoreInPopup) { + sendCoreMessage(response); } - ] - }, - { - type: "function", - name: "symbol", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "string" + } + } + }; + var cleanup = ({ + uiPromises, + popupPromise, + interactionTimeout + }) => { + popupPromise.clear(); + uiPromises.clear(); + interactionTimeout.stop(); + _log.debug("Cleanup..."); + }; + var closePopup = ({ + popupPromise, + sendCoreMessage + }) => { + if (popupPromise.isWaiting()) { + sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST)); + } + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.CLOSE_UI_WINDOW)); + }; + var onDeviceButtonHandler = (device, context, method) => async ({ + payload: request + }) => { + const { + sendCoreMessage + } = context; + const addressRequest = request.code === "ButtonRequest_Address"; + if (!addressRequest || addressRequest && method?.useUi) { + await waitForPopup(context); + } + const data = typeof method?.getButtonRequestData === "function" && request.code ? method?.getButtonRequestData(request.code, request.name) : void 0; + startInteractionTimeout(context); + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.BUTTON, { + ...request, + device: device.toMessageObject() + })); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_BUTTON, { + ...request, + device: device.toMessageObject(), + data + })); + if (addressRequest && !method?.useUi) { + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.ADDRESS_VALIDATION, data)); + } + }; + var onDevicePinHandler = (device, context) => async ({ + type, + callback + }) => { + const { + uiPromises, + sendCoreMessage + } = context; + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PIN, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PIN, { + device: device.toMessageObject(), + type + })); + try { + const uiResp = await uiPromise.promise; + if (uiResp.payload == null) { + callback({ + success: false, + error: new Error(`${events_2.UI.RECEIVE_PIN} missing payload`) + }); + } else { + callback({ + success: true, + payload: uiResp.payload + }); + } + } catch (error) { + callback({ + success: false, + error + }); + } + }; + var onDeviceWordHandler = (device, context) => async ({ + type, + callback + }) => { + const { + uiPromises, + sendCoreMessage + } = context; + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_WORD, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_WORD, { + device: device.toMessageObject(), + type + })); + try { + const uiResp = await uiPromise.promise; + if (uiResp.payload == null) { + callback({ + success: false, + error: new Error(`${events_2.UI.RECEIVE_WORD} missing payload`) + }); + } else { + callback({ + success: true, + payload: uiResp.payload + }); + } + } catch (error) { + callback({ + success: false, + error + }); + } + }; + var onDevicePassphraseHandler = (device, context) => async ({ + callback + }) => { + const { + uiPromises, + sendCoreMessage + } = context; + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PASSPHRASE, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PASSPHRASE, { + device: device.toMessageObject() + })); + try { + const uiResp = await uiPromise.promise; + if (uiResp.payload == null) { + callback({ + success: false, + error: new Error(`${events_2.UI.RECEIVE_PASSPHRASE} missing payload`) + }); + } else { + callback({ + success: true, + payload: uiResp.payload + }); + } + } catch (error) { + callback({ + success: false, + error + }); + } + }; + var onEmptyPassphraseHandler = () => ({ + callback + }) => { + callback({ + success: true, + payload: { + value: "" + } + }); + }; + var onThpPairingHandler = (device, context) => async ({ + callback, + payload + }) => { + const { + uiPromises, + sendCoreMessage + } = context; + await waitForPopup(context); + const uiPromise = uiPromises.create(events_2.UI.RECEIVE_THP_PAIRING_TAG, device); + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_THP_PAIRING, { + device: device.toMessageObject(), + ...payload + })); + try { + const uiResp = await uiPromise.promise; + if (uiResp.payload == null) { + callback({ + success: false, + error: new Error(`${events_2.UI.RECEIVE_THP_PAIRING_TAG} missing payload`) + }); + } else { + callback({ + success: true, + payload: uiResp.payload + }); + } + } catch (error) { + callback({ + success: false, + error + }); + } + }; + var onThpCredentialsChangedHandler = (device, context) => (payload) => { + const { + sendCoreMessage + } = context; + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.THP_CREDENTIALS_CHANGED, { + device: device.toMessageObject(), + ...payload + })); + }; + var registerDeviceEvents = (context, method) => (device) => { + device.removeAllListeners(); + device.on(events_2.DEVICE.BUTTON, onDeviceButtonHandler(device, context, method)); + device.on(events_2.DEVICE.PIN, onDevicePinHandler(device, context)); + device.on(events_2.DEVICE.WORD, onDeviceWordHandler(device, context)); + device.on(events_2.DEVICE.PASSPHRASE, (method?.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler)(device, context)); + device.on(events_2.DEVICE.PASSPHRASE_ON_DEVICE, () => { + context.sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PASSPHRASE_ON_DEVICE, { + device: device.toMessageObject() + })); + }); + device.on(events_2.DEVICE.FIRMWARE_VERSION_CHANGED, (payload) => { + context.sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.FIRMWARE_VERSION_CHANGED, payload)); + }); + device.on(events_2.DEVICE.THP_PAIRING, onThpPairingHandler(device, context)); + device.on(events_2.DEVICE.THP_CREDENTIALS_CHANGED, onThpCredentialsChangedHandler(device, context)); + }; + var onPopupClosed = (context, customErrorMessage) => { + const { + uiPromises, + popupPromise, + deviceList, + callMethods, + resetWaitForFirstMethod, + sendCoreMessage + } = context; + const error = customErrorMessage ? constants_1.ERRORS.TypedError("Method_Cancel", customErrorMessage) : constants_1.ERRORS.TypedError("Method_Interrupted"); + if (deviceList.isConnected() && deviceList.getDeviceCount() > 0) { + deviceList.getAllDevices().forEach((d) => { + if (d.isUsedHere()) { + d.interrupt(error); + } else { + const success = uiPromises.resolve({ + type: events_2.DEVICE.DISCONNECT, + payload: void 0 + }); + if (!success) { + callMethods.forEach((m) => { + sendCoreMessage((0, events_2.createResponseMessage)(m.responseID, false, { + error + })); + }); + callMethods.splice(0, callMethods.length); + resetWaitForFirstMethod(); + } } - ] - }, - { - type: "function", - name: "totalSupply", - stateMutability: "view", - inputs: [], - outputs: [ - { - type: "uint256" + }); + } else { + uiPromises.rejectAll(error); + popupPromise.reject(error); + } + cleanup(context); + }; + var handleDeviceSelectionChanges = (context, interruptDevice) => { + const { + uiPromises, + deviceList, + sendCoreMessage + } = context; + const promiseExists = uiPromises.exists(events_2.UI.RECEIVE_DEVICE); + if (promiseExists && deviceList.isConnected()) { + const onlyDevice = deviceList.getOnlyDevice(); + const isWebUsb = deviceList.getActiveTransports().some((t) => t.type === "WebUsbTransport"); + if (onlyDevice && !isWebUsb) { + uiPromises.resolve({ + type: events_2.UI.RECEIVE_DEVICE, + payload: { + device: onlyDevice.toMessageObject() + } + }); + } else { + sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.SELECT_DEVICE, { + webusb: isWebUsb, + devices: deviceList.getAllDevices().map((d) => d.toMessageObject()) + })); + } + } + if (interruptDevice) { + const { + path: path2 + } = interruptDevice; + const shouldClosePopup = uiPromises.disconnected(path2); + if (shouldClosePopup) { + closePopup(context); + cleanup(context); + } + } + }; + var initDeviceList = (context) => { + const { + deviceList, + sendCoreMessage + } = context; + deviceList.on(events_2.DEVICE.CONNECT, (device) => { + handleDeviceSelectionChanges(context); + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CONNECT, device.toMessageObject())); + }); + deviceList.on(events_2.DEVICE.CONNECT_UNACQUIRED, (device) => { + handleDeviceSelectionChanges(context); + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CONNECT_UNACQUIRED, device.toMessageObject())); + }); + deviceList.on(events_2.DEVICE.DISCONNECT, (device) => { + handleDeviceSelectionChanges(context); + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.DISCONNECT, device.toMessageObject())); + }); + deviceList.on(events_2.DEVICE.CHANGED, (device) => { + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CHANGED, device.toMessageObject())); + }); + deviceList.on(events_2.DEVICE.TREZOR_PUSH_NOTIFICATION, (payload) => { + sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.TREZOR_PUSH_NOTIFICATION, { + device: payload.device.toMessageObject(), + mode: payload.mode, + type: payload.type + })); + }); + deviceList.on(transport_1.TRANSPORT.START, (transport) => sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.START, transport))); + deviceList.on(transport_1.TRANSPORT.ERROR, (error) => { + _log.warn("TRANSPORT.ERROR", error.error); + sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, error)); + }); + }; + var Core = class extends events_1.default { + abortController = new AbortController(); + callMethods = []; + popupPromise = (0, popupPromiseManager_1.createPopupPromiseManager)(); + methodSynchronize = (0, utils_1.getSynchronize)(); + uiPromises = (0, uiPromiseManager_1.createUiPromiseManager)(() => startInteractionTimeout(this.getCoreContext())); + waitForFirstMethod = (0, utils_1.createDeferred)(); + _interactionTimeout; + get interactionTimeout() { + return this._interactionTimeout ?? (0, utils_1.throwError)("Core not initialized: interactionTimeout"); + } + _deviceList; + get deviceList() { + return this._deviceList ?? (0, utils_1.throwError)("Core not initialized: deviceList"); + } + sendCoreMessage(message) { + if (message.event === events_2.RESPONSE_EVENT) { + const index = this.callMethods.findIndex((call) => call && call.responseID === message.id); + if (index >= 0) { + this.callMethods.splice(index, 1); + if (this.callMethods.length === 0) { + this.waitForFirstMethod = (0, utils_1.createDeferred)(); + } } - ] - }, - { - type: "function", - name: "transfer", - stateMutability: "nonpayable", - inputs: [ - { - name: "recipient", - type: "address" + } + this.emit(events_2.CORE_EVENT, message); + } + getCoreContext() { + return { + signal: this.abortController.signal, + uiPromises: this.uiPromises, + popupPromise: this.popupPromise, + interactionTimeout: this.interactionTimeout, + deviceList: this.deviceList, + callMethods: this.callMethods, + methodSynchronize: this.methodSynchronize, + sendCoreMessage: this.sendCoreMessage.bind(this), + resetWaitForFirstMethod: () => { + this.waitForFirstMethod = (0, utils_1.createDeferred)(); }, - { - name: "amount", - type: "uint256" + resolveWaitForFirstMethod: () => { + this.waitForFirstMethod.resolve(); } - ], - outputs: [ - { - type: "bool" + }; + } + handleMessage(message) { + _log.debug("handleMessage", message.type); + switch (message.type) { + case events_2.POPUP.HANDSHAKE: + this.popupPromise.resolve(); + break; + case events_2.POPUP.CLOSED: + this.popupPromise.clear(); + onPopupClosed(this.getCoreContext(), message.payload ? message.payload.error : null); + break; + case transport_1.TRANSPORT.DISABLE_WEBUSB: { + const settings = DataManager_1.DataManager.getSettings(); + const transports = settings.transports?.filter((t) => t !== "WebUsbTransport"); + if (transports && !transports.includes("BridgeTransport")) { + transports.unshift("BridgeTransport"); + } + settings.transports = transports; + resetTransports(this.getCoreContext()); + break; } - ] - }, - { - type: "function", - name: "transferFrom", - stateMutability: "nonpayable", - inputs: [ - { - name: "sender", - type: "address" - }, - { - name: "recipient", - type: "address" - }, - { - name: "amount", - type: "uint256" + case transport_1.TRANSPORT.SET_TRANSPORTS: + DataManager_1.DataManager.getSettings().transports = message.payload.transports; + resetTransports(this.getCoreContext()); + break; + case transport_1.TRANSPORT.REQUEST_DEVICE: + if (this.deviceList.isConnected()) { + this.deviceList.enumerate(); + } + break; + case transport_1.TRANSPORT.GET_INFO: + this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, true, this.getActiveTransports())); + break; + case events_2.UI.RECEIVE_DEVICE: + case events_2.UI.RECEIVE_CONFIRMATION: + case events_2.UI.RECEIVE_PERMISSION: + case events_2.UI.RECEIVE_PIN: + case events_2.UI.RECEIVE_PASSPHRASE: + case events_2.UI.INVALID_PASSPHRASE_ACTION: + case events_2.UI.RECEIVE_THP_PAIRING_TAG: + case events_2.UI.RECEIVE_ACCOUNT: + case events_2.UI.RECEIVE_FEE: + case events_2.UI.RECEIVE_WORD: + case events_2.UI.LOGIN_CHALLENGE_RESPONSE: + this.uiPromises.resolve(message); + break; + case events_2.UI.RECEIVE_FIRMWARE: { + const localFirmwares = message.payload && (0, connectSettings_1.parseLocalFirmwares)(message.payload); + if (localFirmwares) { + DataManager_1.DataManager.setLocalFirmwares(localFirmwares); + } + break; } - ], - outputs: [ - { - type: "bool" + case events_2.IFRAME.CALL: + if (message.payload.method === "firmwareUpdate") { + (0, DeviceList_1.assertDeviceListConnected)(this.deviceList); + const coreContext = this.getCoreContext(); + (0, onCallFirmwareUpdate_1.onCallFirmwareUpdate)({ + params: message.payload, + context: { + deviceList: this.deviceList, + postMessage: this.sendCoreMessage.bind(this), + initDevice: (path2) => initDevice(coreContext, { + path: path2 + }), + log: _log, + abortSignal: this.abortController.signal, + registerEvents: registerDeviceEvents(coreContext), + uiPromises: coreContext.uiPromises + } + }).then((payload) => { + this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, true, payload)); + }).catch((error) => { + this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, false, { + error + })); + _log.error("onCallFirmwareUpdate", error); + }); + } else { + onCall(this.getCoreContext(), message).catch((error) => { + _log.error("onCall", error); + }); + } + } + } + dispose() { + (0, BlockchainLink_1.dispose)(); + this.removeAllListeners(); + this.abortController.abort(); + this.deviceList.dispose(); + } + async getCurrentMethod() { + await this.waitForFirstMethod.promise; + return await this.methodSynchronize(() => this.callMethods[0]); + } + getActiveTransports() { + if (this.deviceList.isConnected()) { + return this.deviceList.getActiveTransports(); + } + } + enumerate() { + if (this.deviceList.isConnected()) { + this.deviceList.enumerate(); + } + } + async init(settings, onCoreEvent, logWriterFactory) { + if (logWriterFactory) { + (0, debug_1.setLogWriter)(logWriterFactory); + } + const throttlePromise = (0, utils_1.createDeferred)(); + throttlePromise.promise.catch(() => { + }); + const onCoreEventThrottled = (message) => throttlePromise.promise.then(() => onCoreEvent(message)); + try { + await DataManager_1.DataManager.load(settings); + const localFirmwares = settings.localFirmwares && (0, connectSettings_1.parseLocalFirmwares)(settings.localFirmwares); + if (localFirmwares) { + DataManager_1.DataManager.setLocalFirmwares(localFirmwares); } - ] + const { + debug, + priority, + manifest + } = DataManager_1.DataManager.getSettings(); + const messages = DataManager_1.DataManager.getProtobufMessages(); + (0, debug_1.enableLog)(debug); + this._interactionTimeout = new interactionTimeout_1.InteractionTimeout(settings.popup ? settings.interactionTimeout : 0); + this._deviceList = new DeviceList_1.DeviceList({ + debug, + messages, + priority, + manifest + }); + initDeviceList(this.getCoreContext()); + this.on(events_2.CORE_EVENT, onCoreEventThrottled); + } catch (error) { + _log.error("init", error); + throttlePromise.reject(error); + throw error; + } + const { + transports, + pendingTransportEvent, + transportReconnect, + coreMode + } = DataManager_1.DataManager.getSettings(); + try { + this.deviceList.init({ + transports, + pendingTransportEvent, + transportReconnect + }); + } catch (error) { + this.sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, { + error + })); + throttlePromise.reject(error); + throw error; + } + if (!transportReconnect || coreMode === "auto") { + await this.deviceList.pendingConnection(); + } + this.on(events_2.CORE_EVENT, onCoreEvent); + this.off(events_2.CORE_EVENT, onCoreEventThrottled); + setTimeout(throttlePromise.resolve, 0); + } + }; + exports2.Core = Core; + var resetTransports = async ({ + deviceList, + sendCoreMessage + }) => { + const { + transports, + pendingTransportEvent, + transportReconnect + } = DataManager_1.DataManager.getSettings(); + try { + await deviceList.init({ + transports, + pendingTransportEvent, + transportReconnect + }); + } catch (error) { + sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, { + error + })); + } + }; + var initCore = async (...params) => { + const core = new Core(); + await core.init(...params); + return core; + }; + var disposeCore = (core) => { + core.dispose(); + }; + var initCoreState = () => (0, utils_1.createLazy)(initCore, disposeCore); + exports2.initCoreState = initCoreState; + } +}); + +// node_modules/@trezor/connect/lib/factory.js +var require_factory = __commonJS({ + "node_modules/@trezor/connect/lib/factory.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.factory = exports2.connectCallableMethods = void 0; + var events_1 = require_events(); + exports2.connectCallableMethods = ["applyFlags", "applySettings", "authenticateDevice", "authorizeCoinjoin", "backupDevice", "bleUnpair", "blockchainDisconnect", "blockchainEstimateFee", "blockchainEvmRpcCall", "blockchainGetAccountBalanceHistory", "blockchainGetCurrentFiatRates", "blockchainGetFiatRatesForTimestamps", "blockchainGetInfo", "blockchainGetTransactions", "blockchainSetCustomBackend", "blockchainSubscribe", "blockchainSubscribeFiatRates", "blockchainUnsubscribe", "blockchainUnsubscribeFiatRates", "cancelCoinjoinAuthorization", "cardanoComposeTransaction", "cardanoGetAddress", "cardanoGetNativeScriptHash", "cardanoGetPublicKey", "cardanoSignMessage", "cardanoSignTransaction", "changeLanguage", "changePin", "changeWipeCode", "cipherKeyValue", "composeTransaction", "discoverAccounts", "eosGetPublicKey", "eosSignTransaction", "ethereumGetAddress", "ethereumGetPublicKey", "ethereumSignMessage", "ethereumSignTransaction", "ethereumSignTypedData", "ethereumVerifyMessage", "evoluGetDelegatedIdentityKey", "evoluGetNode", "evoluSignRegistrationRequest", "firmwareUpdate", "getAccountDescriptor", "getAccountInfo", "getAddress", "getCoinInfo", "getDeviceState", "getFeatures", "getFirmwareHash", "getNonce", "getOwnershipId", "getOwnershipProof", "getPublicKey", "getSettings", "loadDevice", "moneroGetAddress", "moneroGetWatchKey", "moneroKeyImageSync", "moneroSignTransaction", "nemGetAddress", "nemSignTransaction", "pushTransaction", "recoveryDevice", "requestLogin", "resetDevice", "rippleGetAddress", "rippleSignTransaction", "setBrightness", "setBusy", "setProxy", "showDeviceTutorial", "signMessage", "signTransaction", "solanaComposeTransaction", "solanaGetAddress", "solanaGetPublicKey", "solanaSignTransaction", "stellarGetAddress", "stellarSignTransaction", "tezosGetAddress", "tezosGetPublicKey", "tezosSignTransaction", "thpGetCredentials", "thpRemoveCredentials", "unlockPath", "verifyMessage", "wipeDevice"]; + var factory = ({ + eventEmitter, + manifest, + init, + call, + setTransports, + uiResponse, + cancel, + dispose + }, extraMethods = {}) => { + const callableMethods = Object.fromEntries(exports2.connectCallableMethods.map((method) => [method, (params) => call({ + ...params, + method, + useEventListener: method.toLowerCase().endsWith("getaddress") ? eventEmitter.listenerCount(events_1.UI.ADDRESS_VALIDATION) > 0 : void 0 + })])); + return { + manifest, + init, + setTransports, + on: (type, fn) => { + eventEmitter.on(type, fn); + }, + off: (type, fn) => { + eventEmitter.removeListener(type, fn); + }, + removeAllListeners: (type) => { + if (typeof type === "string") { + eventEmitter.removeAllListeners(type); + } else { + eventEmitter.removeAllListeners(); + } + }, + uiResponse, + call, + dispose, + cancel, + ...callableMethods, + ...extraMethods + }; + }; + exports2.factory = factory; + } +}); + +// node_modules/@trezor/connect/lib/exports.js +var require_exports = __commonJS({ + "node_modules/@trezor/connect/lib/exports.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.parseConnectSettings = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + tslib_1.__exportStar(require_constants(), exports2); + tslib_1.__exportStar(require_events(), exports2); + tslib_1.__exportStar(require_types9(), exports2); + var connectSettings_1 = require_connectSettings(); + Object.defineProperty(exports2, "parseConnectSettings", { + enumerable: true, + get: function() { + return connectSettings_1.parseConnectSettings; + } + }); + } +}); + +// node_modules/@trezor/connect/lib/index.js +var require_lib26 = __commonJS({ + "node_modules/@trezor/connect/lib/index.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + exports2.eventEmitter = void 0; + var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); + var events_1 = tslib_1.__importDefault(__require("events")); + var utils_1 = require_lib(); + var constants_1 = require_constants(); + var core_1 = require_core2(); + var connectSettings_1 = require_connectSettings(); + var events_2 = require_events(); + var factory_1 = require_factory(); + var debug_1 = require_debug2(); + exports2.eventEmitter = new events_1.default(); + var _log = (0, debug_1.initLog)("@trezor/connect"); + var _settings = (0, connectSettings_1.parseConnectSettings)(); + var coreManager = (0, core_1.initCoreState)(); + var messagePromises = (0, utils_1.createDeferredManager)({ + initialId: 1 + }); + var manifest = (data) => { + _settings = (0, connectSettings_1.parseConnectSettings)({ + ..._settings, + manifest: data + }); + }; + var dispose = () => { + exports2.eventEmitter.removeAllListeners(); + _settings = (0, connectSettings_1.parseConnectSettings)(); + coreManager.dispose(); + }; + var onCoreEvent = (message) => { + const { + event, + type, + payload + } = message; + if (type === events_2.UI.REQUEST_UI_WINDOW) { + coreManager.get()?.handleMessage({ + type: events_2.POPUP.HANDSHAKE + }); + return; + } + if (type === events_2.POPUP.CANCEL_POPUP_REQUEST) return; + _log.debug("handleMessage", message.type); + switch (event) { + case events_2.RESPONSE_EVENT: { + const { + id = 0, + success, + device + } = message; + const resolved = messagePromises.resolve(id, { + id, + success, + payload, + device + }); + if (!resolved) _log.warn(`Unknown message id ${id}`); + break; + } + case events_2.DEVICE_EVENT: + exports2.eventEmitter.emit(event, message); + exports2.eventEmitter.emit(type, payload); + break; + case events_2.TRANSPORT_EVENT: + exports2.eventEmitter.emit(event, message); + exports2.eventEmitter.emit(type, payload); + break; + case events_2.BLOCKCHAIN_EVENT: + exports2.eventEmitter.emit(event, message); + exports2.eventEmitter.emit(type, payload); + break; + case events_2.UI_EVENT: + exports2.eventEmitter.emit(event, message); + exports2.eventEmitter.emit(type, payload); + break; + default: + _log.warn("Undefined message", event, message); + } + }; + var initSettings = (settings = {}) => { + _settings = (0, connectSettings_1.parseConnectSettings)({ + ..._settings, + ...settings, + popup: false + }); + if (!_settings.manifest) { + throw constants_1.ERRORS.TypedError("Init_ManifestMissing"); + } + if (!_settings.transports?.length) { + _settings.transports = ["BridgeTransport"]; + } + }; + var init = async (settings = {}) => { + if (coreManager.get() || coreManager.getPending()) { + throw constants_1.ERRORS.TypedError("Init_AlreadyInitialized"); + } + initSettings(settings); + if (!_settings.lazyLoad) { + await coreManager.getOrInit(_settings, onCoreEvent); + } + }; + var initCore = () => { + initSettings({ + lazyLoad: false + }); + return coreManager.getOrInit(_settings, onCoreEvent); + }; + var call = async (params) => { + let core; + try { + core = coreManager.get() ?? await coreManager.getPending() ?? await initCore(); + } catch (error) { + return (0, events_2.createErrorMessage)(error); + } + try { + const { + promiseId, + promise + } = messagePromises.create(); + core.handleMessage({ + type: events_2.IFRAME.CALL, + payload: params, + id: promiseId + }); + const response = await promise; + return response ?? (0, events_2.createErrorMessage)(constants_1.ERRORS.TypedError("Method_NoResponse")); + } catch (error) { + _log.error("call", error); + return (0, events_2.createErrorMessage)(error); + } + }; + var setTransports = (payload) => { + const core = coreManager.get(); + if (!core) { + throw constants_1.ERRORS.TypedError("Init_NotInitialized"); + } + core.handleMessage({ + type: events_2.TRANSPORT.SET_TRANSPORTS, + payload + }); + }; + var uiResponse = (response) => { + const core = coreManager.get(); + if (!core) { + throw constants_1.ERRORS.TypedError("Init_NotInitialized"); } - ]; + core.handleMessage(response); + }; + var cancel = (error) => { + const core = coreManager.get(); + if (!core) { + throw constants_1.ERRORS.TypedError("Runtime", "postMessage: _core not found"); + } + core.handleMessage({ + type: events_2.POPUP.CLOSED, + payload: error ? { + error + } : null + }); + }; + var TrezorConnect4 = (0, factory_1.factory)({ + eventEmitter: exports2.eventEmitter, + manifest, + init, + call, + setTransports, + uiResponse, + cancel, + dispose + }, {}); + exports2.default = TrezorConnect4; + tslib_1.__exportStar(require_exports(), exports2); } }); -// src/constants/config.ts -var config = { - DEFAULT_BLOCK_CONFIRMATIONS: 2 +// src/types/networkTypes.ts +var networkTypes = { + mainnet: "mainnet", + testnet: "testnet", + localhost: "localhost" +}; + +// src/utils/createViemChain.ts +import { defineChain } from "viem"; +function createViemChain(chainDefinition) { + return defineChain({ + id: chainDefinition.id, + name: chainDefinition.name, + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: chainDefinition.rpcUrls } + }, + blockExplorers: chainDefinition.blockExplorer ? { + default: { + name: chainDefinition.blockExplorer.name, + url: chainDefinition.blockExplorer.url + } + } : void 0, + testnet: chainDefinition.isTestnet + }); +} + +// src/utils/getEnvVar.ts +import process2 from "process"; + +// src/utils/log.ts +var networkColors = { + ethereum: "\x1B[30m", + // grey + arbitrum: "\x1B[34m", + // blue + polygon: "\x1B[35m", + // magenta + avalanche: "\x1B[31m", + // red + base: "\x1B[36m", + // cyan + ethereumSepolia: "\x1B[30m", + // grey + arbitrumSepolia: "\x1B[34m", + // blue + optimismSepolia: "\x1B[31m", + // red + polygonAmoy: "\x1B[35m", + // magenta + avalancheFuji: "\x1B[31m", + // red + baseSepolia: "\x1B[36m", + // cyan + hardhat: "\x1B[32m", + // green + localhost: "\x1B[32m" + // green }; +var reset = "\x1B[0m"; +function log(message, functionName, networkName) { + const greenFill = "\x1B[32m"; + const network = networkName ? `\x1B[35m[${networkName}]${reset}` : ""; + console.log(`${network}${greenFill}[${functionName}]${reset}`, message); +} +function warn(message, functionName) { + const yellowFill = "\x1B[33m"; + console.log(`${yellowFill}[${functionName}]${reset}`, message); +} +function err(message, functionName, networkName) { + const redFill = "\x1B[31m"; + const network = networkName ? `${networkColors[networkName]}[${networkName}]${reset}` : ""; + console.log( + `${network}${redFill}[${functionName}] ERROR:${reset}`, + message + ); +} +var log_default = log; + +// src/utils/formatting.ts +function shorten(address) { + return `${address.slice(0, 6)}...${address.slice(-4)}`; +} +function formatGas(gasAmountWei) { + return gasAmountWei.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} // src/networks/getNetworkEnvKey.ts function getNetworkEnvKey(networkName) { @@ -453,63 +225752,648 @@ function camelCaseToCapsSnakeCase(camelCaseString) { return camelCaseString.replace(/([a-z0-9])([A-Z])/g, "$1_$2").toUpperCase(); } -// src/networks/networkTypes.ts -var networkTypes = { - mainnet: "mainnet", - testnet: "testnet", - localhost: "localhost" +// src/utils/getEnvVar.ts +function getEnvVar(key, defaultValue) { + const value = process2.env[key]; + if (value === void 0 || value === "") { + if (defaultValue !== void 0) return defaultValue; + warn(`Missing env variable: ${key}`, "getEnvVar"); + return ""; + } + return value; +} +function createEnvAddressGetter(config2) { + function getEnvAddress(prefix, networkName) { + const searchKey = networkName ? `${config2.prefixes[prefix]}_${getNetworkEnvKey(networkName)}` : config2.prefixes[prefix]; + const value = getEnvVar(searchKey); + const friendlyName = `${String(prefix)}(${shorten(value)})`; + return [value, friendlyName]; + } + return { getEnvAddress }; +} + +// src/utils/getTrezorDeployEnabled.ts +var getTrezorDeployEnabled = () => getEnvVar("TREZOR_DEPLOY_ENABLED", "false") === "true"; + +// src/utils/createWalletGetter.ts +var baseAccountTypePrefixes = { + proxyDeployer: "PROXY_DEPLOYER", + deployer: "DEPLOYER" +}; +function createWalletGetter(config2) { + function getWallet2(chainType, accountType, walletType) { + const prefix = config2.accountTypePrefixes[accountType]; + if (!prefix) { + throw new Error(`Unknown account type: ${String(accountType)}`); + } + const walletKey = walletType === "privateKey" ? "PRIVATE_KEY" : "ADDRESS"; + const envKey = `${chainType.toUpperCase()}_${prefix}_${walletKey}`; + const walletValue = process.env[envKey]; + if (!walletValue) { + warn(`Missing env variable: ${envKey}`, "getWallet"); + } + return walletValue; + } + return { getWallet: getWallet2 }; +} +var { getWallet } = createWalletGetter({ + accountTypePrefixes: baseAccountTypePrefixes +}); + +// src/utils/ethersSignerCallContract.ts +var ethersSignerCallContract = async (hre, contract, abi, functionName, ...functionArgs) => { + const [ethersSigner] = await hre.ethers.getSigners(); + const ethersContract = new hre.ethers.Contract(contract, abi, ethersSigner); + const unsignedTx = await ethersContract[functionName].populateTransaction(...functionArgs); + log( + `Size: ${(unsignedTx.data.length - 2) / 2}, Input data: ${unsignedTx.data}, Address: ${unsignedTx.to}`, + functionName, + hre.network.name + ); + return (await ethersSigner.sendTransaction(unsignedTx)).hash; +}; + +// src/utils/compileContracts.ts +import { execSync } from "child_process"; +function compileContracts({ quiet = true, force = false }) { + const packageManager = process.env["PACKAGE_MANAGER"] || "yarn"; + const command = `${packageManager} compile`; + const args = []; + if (quiet) args.push("--quiet"); + if (force) args.push("--force"); + execSync(`${command} ${args.join(" ")}`, { stdio: "inherit" }); +} + +// src/utils/localhostViemChain.ts +import { defineChain as defineChain2 } from "viem"; +var localhostViemChain = defineChain2({ + id: Number(process.env.LOCALHOST_FORK_CHAIN_ID), + name: "localhost", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: [process.env.LOCALHOST_RPC_URL ?? "http://127.0.0.1:8545"] } + }, + testnet: true +}); +var hardhatViemChain = defineChain2({ + id: Number(process.env.HARDHAT_CHAIN_ID), + name: "hardhat", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth" + }, + rpcUrls: { + default: { http: [process.env.HARDHAT_RPC_URL ?? "http://127.0.0.1:8545"] } + }, + testnet: true +}); + +// src/utils/extractProxyAdminAddress.ts +import { ethers } from "ethers"; +function extractProxyAdminAddress(receipt) { + const adminChangedTopic = ethers.id("AdminChanged(address,address)"); + const adminChangedLog = receipt.logs.find((log2) => log2.topics[0] === adminChangedTopic); + if (!adminChangedLog) throw new Error("AdminChanged(address,address) log not found"); + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const [, newAdmin] = abiCoder.decode(["address", "address"], adminChangedLog.data); + return newAdmin; +} + +// src/utils/createEnvUpdater.ts +import { existsSync, readFileSync, writeFileSync } from "fs"; +import path from "path"; +function createEnvUpdater(config2) { + function updateEnvVariable(key, newValue, envFileName) { + const filePath = path.join(config2.basePath, `.env.${envFileName}`); + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + const envContents = readFileSync(filePath, "utf8"); + let lines = envContents.split(/\r?\n/); + const keyExists = lines.some((line) => line.startsWith(`${key}=`)); + if (!keyExists) { + log_default( + `Key ${key} not found in .env file. Adding to ${filePath}`, + "updateEnvVariable" + ); + lines.push(`${key}=${newValue}`); + } else { + lines = lines.map((line) => { + const [currentKey] = line.split("="); + if (currentKey === key) { + return `${key}=${newValue}`; + } + return line; + }); + } + writeFileSync(filePath, lines.join("\n")); + process.env[key] = newValue; + } + function updateEnvAddress(prefix, newValue, envFileName, networkPostfix) { + const searchKey = networkPostfix ? `${config2.prefixes[prefix]}_${getNetworkEnvKey(networkPostfix)}` : String(config2.prefixes[prefix]); + updateEnvVariable(searchKey, newValue, envFileName); + } + return { updateEnvVariable, updateEnvAddress }; +} + +// src/utils/getActualGasData.ts +async function getActualGasData(publicClient) { + const block = await publicClient.getBlock(); + const isEIP1559 = !!block.baseFeePerGas; + let gasPrice = 0n; + let maxPriorityFeePerGas = 0n; + try { + if (isEIP1559) { + const { maxFeePerGas } = await publicClient.estimateFeesPerGas(); + gasPrice = maxFeePerGas; + maxPriorityFeePerGas = await publicClient.estimateMaxPriorityFeePerGas(); + } else { + gasPrice = await publicClient.getGasPrice(); + } + } catch (error) { + console.error("Error getting actual gas data:", error); + return { + gasPrice: "0", + maxFeePerGas: "0", + maxPriorityFeePerGas: "0" + }; + } + const gasDataLegacy = { + gasPrice: gasPrice.toString() + }; + const gasDataEIP1559 = { + maxFeePerGas: gasPrice.toString(), + maxPriorityFeePerGas: maxPriorityFeePerGas.toString() + }; + const gasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy; + return gasData; +} + +// src/utils/getViemClients.ts +import { + createPublicClient, + createTestClient, + createWalletClient, + fallback, + http, + nonceManager, + publicActions, + walletActions +} from "viem"; +import { privateKeyToAccount } from "viem/accounts"; + +// src/constants/conceroNetworks.ts +import mainnetChains from "@concero/concero-networks/output/chains.mainnet.json"; +import testnetChains from "@concero/concero-networks/output/chains.testnet.json"; +var mainnetProxyDeployerPK = getWallet("mainnet", "proxyDeployer", "privateKey"); +var testnetProxyDeployerPK = getWallet("testnet", "proxyDeployer", "privateKey"); +var mainnetDeployerPK = getWallet("mainnet", "deployer", "privateKey"); +var testnetDeployerPK = getWallet("testnet", "deployer", "privateKey"); +var testnetAccounts = [testnetDeployerPK, testnetProxyDeployerPK]; +function createExtendedNetworks(chains, networkType, accounts) { + const validAccounts = accounts.filter((acc) => !!acc); + return Object.fromEntries( + Object.values(chains).map((chain) => { + const chainDefinition = { + id: parseInt(chain.id), + name: chain.name, + rpcUrls: chain.rpcUrls, + isTestnet: chain.isTestnet ?? false, + ...chain.blockExplorers?.[0] && { + blockExplorer: { + name: chain.blockExplorers[0].name, + url: chain.blockExplorers[0].url + } + } + }; + const viemChain = createViemChain(chainDefinition); + return [ + chain.name, + { + name: chain.name, + chainId: parseInt(chain.id), + type: networkType, + url: chain.rpcUrls[0] || "", + rpcUrls: chain.rpcUrls, + saveDeployments: false, + accounts: validAccounts, + chainSelector: BigInt(chain.chainSelector), + confirmations: 1, + viemChain + } + ]; + }) + ); +} +var testnetNetworks = createExtendedNetworks( + testnetChains, + networkTypes.testnet, + testnetAccounts +); +var mainnetNetworks = createExtendedNetworks( + mainnetChains, + networkTypes.mainnet, + [mainnetDeployerPK, mainnetProxyDeployerPK] +); +var conceroNetworks = { + ...testnetNetworks, + ...mainnetNetworks }; -// node_modules/viem/_esm/errors/unit.js -init_base(); -var InvalidDecimalNumberError = class extends BaseError { - constructor({ value }) { - super(`Number \`${value}\` is not a valid decimal number.`, { - name: "InvalidDecimalNumberError" +// src/utils/getViemClients.ts +function getClients(viemChain, url, account = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`)) { + const publicClient = createPublicClient({ + transport: http(url), + chain: viemChain + }); + const walletClient = createWalletClient({ + transport: http(url), + chain: viemChain, + account + }); + return { walletClient, publicClient, account }; +} +function getTestClient(account) { + const testClient = createTestClient({ + chain: localhostViemChain, + mode: "hardhat", + transport: http(), + account + }).extend(publicActions).extend(walletActions); + return testClient; +} +function getFallbackClients(chain, account) { + if (!account) { + switch (chain.type) { + case "mainnet": + account = privateKeyToAccount(`0x${process.env.MAINNET_DEPLOYER_PRIVATE_KEY}`); + break; + case "testnet": + account = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`, { + nonceManager + }); + break; + case "localhost": + account = privateKeyToAccount(`0x${process.env.LOCALHOST_DEPLOYER_PRIVATE_KEY}`); + break; + default: + throw new Error(`Unsupported chain type: ${chain.type}`); + } + } + const { viemChain, name } = chain; + if (!conceroNetworks[name].rpcUrls.length) { + throw new Error(`No URLs configured for chain: ${name}`); + } + const transport = fallback( + conceroNetworks[name].rpcUrls.map((url) => http(url)), + { + retryCount: 3 + } + ); + const publicClient = createPublicClient({ transport, chain: viemChain }); + const walletClient = createWalletClient({ + transport, + chain: viemChain, + account + }); + return { walletClient, publicClient, account }; +} +function getViemAccount(chainType, accountType) { + const privateKey = `0x${getWallet(chainType, accountType, "privateKey")}`; + return privateKeyToAccount(privateKey, { + nonceManager + }); +} +function createViemAccountGetter(config2) { + function getViemAccount2(chainType, accountType) { + const privateKey = `0x${config2.getWallet(chainType, accountType, "privateKey")}`; + return privateKeyToAccount(privateKey, { + nonceManager }); } + return { getViemAccount: getViemAccount2 }; +} + +// src/utils/getGasParameters.ts +var NETWORK_MINIMUMS = { + polygon: { + minTipCap: BigInt(3e10), + // 30 gwei + minBaseFee: BigInt(3e10) + // 30 gwei + } + // Add other networks as needed +}; +async function getGasParameters(chain, priorityMultiplier = 1, maxFeeMultiplier = 1) { + const { publicClient } = getFallbackClients(chain); + try { + const block = await publicClient.getBlock(); + const baseFee = block.baseFeePerGas ?? BigInt(0); + const networkMinimums = getNetworkMinimums(chain); + const suggestedPriorityFee = await getSuggestedPriorityFee(publicClient, chain); + const calculatedPriorityFee = calculatePriorityFee( + suggestedPriorityFee, + priorityMultiplier + ); + const priorityFee = calculatedPriorityFee > networkMinimums.minTipCap ? calculatedPriorityFee : networkMinimums.minTipCap; + const calculatedMaxFee = calculateMaxFee(baseFee, priorityFee, maxFeeMultiplier); + const minRequiredMaxFee = networkMinimums.minBaseFee + priorityFee; + const maxFeePerGas = calculatedMaxFee > minRequiredMaxFee ? calculatedMaxFee : minRequiredMaxFee; + return { + maxFeePerGas, + maxPriorityFeePerGas: priorityFee + }; + } catch (error) { + const networkMinimums = getNetworkMinimums(chain); + const gasPrice = await publicClient.getGasPrice(); + const priorityFee = networkMinimums.minTipCap; + return { + maxFeePerGas: gasPrice > networkMinimums.minBaseFee + priorityFee ? gasPrice : networkMinimums.minBaseFee + priorityFee, + maxPriorityFeePerGas: priorityFee + }; + } +} +function getNetworkMinimums(chain) { + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + if (isPolygon) { + return NETWORK_MINIMUMS.polygon; + } + return { + minTipCap: BigInt(15e8), + // 1.5 gwei + minBaseFee: BigInt(1e9) + // 1 gwei + }; +} +async function getSuggestedPriorityFee(publicClient, chain) { + try { + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + const blocksToAnalyze = isPolygon ? 5 : 10; + const blocks = await Promise.all( + Array.from( + { length: blocksToAnalyze }, + (_, i) => publicClient.getBlock({ blockNumber: BigInt(-1 - i) }) + ) + ); + const priorityFees = blocks.map((block) => block.baseFeePerGas ?? BigInt(0)).sort((a, b) => a < b ? -1 : 1); + const index = isPolygon ? Math.floor(priorityFees.length * 0.75) : Math.floor(priorityFees.length * 0.5); + return priorityFees[index]; + } catch { + return getNetworkMinimums(chain).minTipCap; + } +} +function calculatePriorityFee(basePriorityFee, multiplier) { + return BigInt(Math.ceil(Number(basePriorityFee) * multiplier)); +} +function calculateMaxFee(baseFee, priorityFee, multiplier) { + return BigInt(Math.ceil(Number(baseFee) * multiplier)) + priorityFee; +} + +// src/constants/config.ts +var config = { + DEFAULT_BLOCK_CONFIRMATIONS: 2 }; -// node_modules/viem/_esm/utils/unit/parseUnits.js -function parseUnits(value, decimals) { - if (!/^(-?)([0-9]*)\.?([0-9]*)$/.test(value)) - throw new InvalidDecimalNumberError({ value }); - let [integer, fraction = "0"] = value.split("."); - const negative = integer.startsWith("-"); - if (negative) - integer = integer.slice(1); - fraction = fraction.replace(/(0+)$/, ""); - if (decimals === 0) { - if (Math.round(Number(`.${fraction}`)) === 1) - integer = `${BigInt(integer) + 1n}`; - fraction = ""; - } else if (fraction.length > decimals) { - const [left, unit, right] = [ - fraction.slice(0, decimals - 1), - fraction.slice(decimals - 1, decimals), - fraction.slice(decimals) - ]; - const rounded = Math.round(Number(`${unit}.${right}`)); - if (rounded > 9) - fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, "0"); - else - fraction = `${left}${rounded}`; - if (fraction.length > decimals) { - fraction = fraction.slice(1); - integer = `${BigInt(integer) + 1n}`; - } - fraction = fraction.slice(0, decimals); +// src/trezor/getTrezorAddress.ts +var import_connect3 = __toESM(require_lib26()); + +// src/trezor/initTrezorOnce.ts +var import_connect = __toESM(require_lib26()); +var isTrezorInitialized = false; +async function initTrezorOnce() { + if (isTrezorInitialized) return; + await import_connect.default.init({ + manifest: { + email: "nikita@concero.io", + appUrl: "https://concero.io", + appName: "concero" + } + }); + isTrezorInitialized = true; +} + +// src/trezor/trezorSendTx.ts +var import_connect2 = __toESM(require_lib26()); +import { isHex, serializeTransaction, toHex as toHex2 } from "viem"; +var defaultTrezorPath = "m/44'/60'/0'/0/0"; +function normalizeHex(hex, name) { + if (!hex.startsWith("0x")) hex = `0x${hex}`; + if (!isHex(hex)) throw new Error(`${name} must be 0x-prefixed hex`); + return hex; +} +function yParityFromV(v) { + if (v === 0n || v === 1n) return Number(v); + if (v === 27n || v === 28n) return Number(v - 27n); + return Number((v - 35n) % 2n); +} +async function trezorSendTx(viemParams, txParams, trezorPrams = { + path: defaultTrezorPath, + showFromAddressOnTrezor: false, + forceLegacy: false +}) { + await initTrezorOnce(); + const { publicClient } = viemParams; + const { to = null, value = 0n, data = "0x" } = txParams; + const { path: path2, forceLegacy } = trezorPrams; + const chainId = publicClient.chain?.id ?? await publicClient.getChainId(); + const from = await getTrezorAddress(path2); + log(`Deploy from ${from}`, "trezorSendTx"); + const normData = normalizeHex(data, "data"); + const nonce = txParams.nonce ?? await publicClient.getTransactionCount({ + address: from, + blockTag: "pending" + }); + const gas = txParams.gas ?? await publicClient.estimateGas({ + account: from, + to: to ?? void 0, + value, + data: normData === "0x" ? void 0 : normData + }); + let gasPrice = txParams.gasPrice; + let maxFeePerGas = txParams.maxFeePerGas; + let maxPriorityFeePerGas = txParams.maxPriorityFeePerGas; + if (!forceLegacy && gasPrice == null && (maxFeePerGas == null || maxPriorityFeePerGas == null)) { + try { + const fees = await publicClient.estimateFeesPerGas(); + if ("maxFeePerGas" in fees && "maxPriorityFeePerGas" in fees) { + maxFeePerGas = fees.maxFeePerGas; + maxPriorityFeePerGas = fees.maxPriorityFeePerGas; + } else if ("gasPrice" in fees) { + gasPrice = fees.gasPrice; + } + } catch (e) { + log(`EIP-1559 not supported for ${chainId}, using legacy gas price`, "trezorSendTx"); + } + } + const useEip1559 = !forceLegacy && maxFeePerGas != null && maxPriorityFeePerGas != null; + if (!useEip1559 && gasPrice == null) { + gasPrice = await publicClient.getGasPrice(); + } + const txForTrezor = { + to, + value: toHex2(value), + data: normData, + chainId, + nonce: toHex2(nonce), + gasLimit: toHex2(gas) + }; + if (useEip1559) { + txForTrezor.maxFeePerGas = toHex2(maxFeePerGas); + txForTrezor.maxPriorityFeePerGas = toHex2(maxPriorityFeePerGas); + } else { + txForTrezor.gasPrice = toHex2(gasPrice); + } + const signRes = await import_connect2.default.ethereumSignTransaction({ + path: path2, + transaction: txForTrezor + }); + if (!signRes.success) throw new Error(signRes.payload.error); + const r = normalizeHex(signRes.payload.r, "r"); + const s = normalizeHex(signRes.payload.s, "s"); + const vBig = BigInt(signRes.payload.v); + const txSerializable = { + chainId, + nonce, + gas, + to: to ?? void 0, + value, + data: normData + }; + if (useEip1559) { + txSerializable.maxFeePerGas = maxFeePerGas; + txSerializable.maxPriorityFeePerGas = maxPriorityFeePerGas; + const serializedTransaction = serializeTransaction(txSerializable, { + r, + s, + yParity: yParityFromV(vBig) + }); + return await publicClient.sendRawTransaction({ serializedTransaction }); } else { - fraction = fraction.padEnd(decimals, "0"); + txSerializable.gasPrice = gasPrice; + const serializedTransaction = serializeTransaction(txSerializable, { + r, + s, + v: vBig + }); + return await publicClient.sendRawTransaction({ serializedTransaction }); } - return BigInt(`${negative ? "-" : ""}${integer}${fraction}`); } -// node_modules/viem/_esm/index.js -init_abis(); -init_formatUnits(); +// src/trezor/getTrezorAddress.ts +var getTrezorAddress = async (path2 = defaultTrezorPath) => { + await initTrezorOnce(); + const addrRes = await import_connect3.default.ethereumGetAddress({ + path: path2, + showOnTrezor: false + }); + if (!addrRes.success) throw new Error(addrRes.payload.error); + return addrRes.payload.address; +}; + +// src/trezor/trezorDeployContract.ts +import { encodeDeployData } from "viem"; +async function trezorDeployContract(viemParams, deployParams, trezorParams) { + const { publicClient } = viemParams; + const { abi, bytecode, args, value = 0n, ...overrides } = deployParams; + const data = encodeDeployData({ abi, bytecode, args }); + const hash = await trezorSendTx( + { publicClient }, + { data, value, ...overrides }, + trezorParams + ); + const receipt = await publicClient.waitForTransactionReceipt({ hash }); + if (!receipt.contractAddress) + throw new Error("No contractAddress in receipt"); + return { hash, contractAddress: receipt.contractAddress }; +} + +// src/trezor/trezorWriteContract.ts +import { encodeFunctionData } from "viem"; +async function trezorWriteContract(viemParams, writeContractParams, trezorParams) { + const { + address, + abi, + functionName, + args, + value = 0n, + ...overrides + } = writeContractParams; + const data = encodeFunctionData({ abi, functionName, args }); + return trezorSendTx( + viemParams, + { + to: address, + data, + value, + ...overrides + }, + trezorParams + ); +} + +// src/deploy/GenericDeploy.ts +var genericDeploy = async ({ hre, contractName, txParams }, ...contractConstructorArgs) => { + const [deployer] = await hre.ethers.getSigners(); + const chain = conceroNetworks[hre.network.name]; + const isTrezorDeployEnabled = getTrezorDeployEnabled(); + log(`isTrezorDeployEnabled: ${isTrezorDeployEnabled}`, "genericDeploy"); + const contractFactory = await hre.ethers.getContractFactory(contractName, { + libraries: txParams?.libraries + }); + const deployOverrides = txParams?.gasLimit ? { gasLimit: txParams.gasLimit } : {}; + let deploymentAddress; + let receipt; + if (isTrezorDeployEnabled) { + const { publicClient } = getFallbackClients(chain); + const tx = await trezorDeployContract( + { publicClient }, + { + args: contractConstructorArgs, + abi: hre.artifacts.readArtifactSync(contractName).abi, + bytecode: contractFactory.bytecode, + gas: deployOverrides.gasLimit + } + ); + deploymentAddress = tx.contractAddress; + receipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash }); + if (receipt.status !== "success") throw new Error(`Deploy transaction reverted ${tx.hash}`); + } else { + log(`Deploy ${contractName} from address: ${await deployer.getAddress()}`, "genericDeploy", chain.name); + const contract = await contractFactory.deploy(...contractConstructorArgs, deployOverrides); + receipt = await contract.deploymentTransaction()?.wait(); + deploymentAddress = await contract.getAddress(); + } + if (hre.tenderly) { + try { + await hre.tenderly.verify({ + name: contractName, + address: deploymentAddress + }); + } catch (e) { + console.error(JSON.stringify(e)); + } + } + log(`Deployed at: ${deploymentAddress}`, `deploy ${contractName}`, chain.name); + return { + address: deploymentAddress, + chainName: chain.name, + chainType: chain.type, + chainId: chain.chainId, + receipt + }; +}; // src/tokens/TokenSender.ts +import { + erc20Abi, + formatUnits, + parseUnits +} from "viem"; var TokenSender = class { walletClient; publicClient; @@ -564,105 +226448,260 @@ var TokenSender = class { return txHash; } }; - -// src/deploy/getActualGasData.ts -async function getActualGasData(publicClient) { - const block = await publicClient.getBlock(); - const isEIP1559 = !!block.baseFeePerGas; - let gasPrice = 0n; - let maxPriorityFeePerGas = 0n; - try { - if (isEIP1559) { - const { maxFeePerGas } = await publicClient.estimateFeesPerGas(); - gasPrice = maxFeePerGas; - maxPriorityFeePerGas = await publicClient.estimateMaxPriorityFeePerGas(); - } else { - gasPrice = await publicClient.getGasPrice(); - } - } catch (error) { - console.error("Error getting actual gas data:", error); - return { - gasPrice: "0", - maxFeePerGas: "0", - maxPriorityFeePerGas: "0" - }; - } - const gasDataLegacy = { - gasPrice: gasPrice.toString() - }; - const gasDataEIP1559 = { - maxFeePerGas: gasPrice.toString(), - maxPriorityFeePerGas: maxPriorityFeePerGas.toString() - }; - const gasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy; - return gasData; -} - -// src/deploy/hardhatDeployWrapper.ts -async function hardhatDeployWrapper(contractName, { - hre, - args, - publicClient, - proxy = false, - gasLimit, - log = false, - libraries, - skipIfAlreadyDeployed = false -}) { - let actualDeployer; - if (proxy) { - const { proxyDeployer } = await hre.getNamedAccounts(); - actualDeployer = proxyDeployer; - } else { - const { deployer } = await hre.getNamedAccounts(); - actualDeployer = deployer; - } - const { deploy } = hre.deployments; - const nonce = await publicClient.getTransactionCount({ - address: actualDeployer - }); - const gasData = await getActualGasData(publicClient); - const waitConfirmations = hre.network.name.startsWith("ethereum") ? 1 : 3; - if (log) { - console.log( - `\x1B[34m[hardhatDeployWrapper]\x1B[0m\x1B[35m[args]\x1B[0m`, - { - from: actualDeployer, - args, - nonce, - gasLimit: gasLimit ? gasLimit : "auto", - gasData, - waitConfirmations - } - ); - } - let deployment; - try { - console.log("Starting deployment of:", contractName); - deployment = await deploy(contractName, { - from: actualDeployer, - args, - log: true, - autoMine: true, - nonce, - waitConfirmations, - ...gasLimit ? { gasLimit } : {}, - ...gasData, - ...libraries ? { libraries } : {}, - skipIfAlreadyDeployed - }); - } catch (error) { - console.error("Error deploying contract:", error); - throw error; - } - return deployment; -} export { TokenSender, + baseAccountTypePrefixes, + compileContracts, + conceroNetworks, config, + createEnvAddressGetter, + createEnvUpdater, + createViemAccountGetter, + createViemChain, + createWalletGetter, + defaultTrezorPath, + err, + ethersSignerCallContract, + extractProxyAdminAddress, + formatGas, + genericDeploy, + getActualGasData, + getClients, + getEnvVar, + getFallbackClients, + getGasParameters, getNetworkEnvKey, getNetworkKey, - hardhatDeployWrapper, - networkTypes + getTestClient, + getTrezorAddress, + getTrezorDeployEnabled, + getViemAccount, + getWallet, + localhostViemChain, + log, + mainnetNetworks, + networkTypes, + shorten, + testnetNetworks, + trezorDeployContract, + trezorSendTx, + trezorWriteContract, + warn }; +/*! Bundled license information: + +tslib/tslib.es6.js: + (*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** *) + +long/umd/index.js: + (** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + *) + +@noble/hashes/utils.js: + (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/utils.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/modular.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/curve.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/edwards.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/montgomery.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/oprf.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/ed25519.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/hashes/utils.js: + (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@scure/base/lib/index.js: + (*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/utils.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/modular.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/curve.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/weierstrass.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/_shortw_utils.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/secp256k1.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/edwards.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/abstract/montgomery.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@noble/curves/ed25519.js: + (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *) + +@scure/bip32/lib/index.js: + (*! scure-bip32 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) *) + +@scure/bip39/index.js: + (*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) *) + +cashaddrjs/src/validation.js: + (** + * @license + * https://github.com/ealmansi/cashaddrjs + * Copyright (c) 2017-2020 Emilio Almansi + * Distributed under the MIT software license, see the accompanying + * file LICENSE or http://www.opensource.org/licenses/mit-license.php. + *) + +cashaddrjs/src/base32.js: + (** + * @license + * https://github.com/ealmansi/cashaddrjs + * Copyright (c) 2017-2020 Emilio Almansi + * Distributed under the MIT software license, see the accompanying + * file LICENSE or http://www.opensource.org/licenses/mit-license.php. + *) + +cashaddrjs/src/cashaddr.js: + (** + * @license + * https://github.com/ealmansi/cashaddrjs + * Copyright (c) 2017-2020 Emilio Almansi + * Distributed under the MIT software license, see the accompanying + * file LICENSE or http://www.opensource.org/licenses/mit-license.php. + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +mime-db/index.js: + (*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + *) + +mime-types/index.js: + (*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + *) + +axios/dist/node/axios.cjs: + (*! Axios v1.13.4 Copyright (c) 2026 Matt Zabriskie and contributors *) + +@stellar/stellar-base/lib/auth.js: + (*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE *) + +urijs/src/punycode.js: + (*! https://mths.be/punycode v1.4.0 by @mathias *) + +urijs/src/IPv6.js: + (*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + *) + +urijs/src/SecondLevelDomains.js: + (*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + *) + +urijs/src/URI.js: + (*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + *) + +urijs/src/URITemplate.js: + (*! + * URI.js - Mutating URLs + * URI Template Support - http://tools.ietf.org/html/rfc6570 + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + *) +*/ //# sourceMappingURL=index.esm.js.map diff --git a/dist/index.esm.js.map b/dist/index.esm.js.map index bbe00e2..8248752 100644 --- a/dist/index.esm.js.map +++ b/dist/index.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../node_modules/viem/errors/version.ts", "../node_modules/viem/errors/base.ts", "../node_modules/viem/utils/unit/formatUnits.ts", "../node_modules/viem/constants/abis.ts", "../src/constants/config.ts", "../src/networks/getNetworkEnvKey.ts", "../src/networks/networkTypes.ts", "../node_modules/viem/errors/unit.ts", "../node_modules/viem/utils/unit/parseUnits.ts", "../node_modules/viem/index.ts", "../src/tokens/TokenSender.ts", "../src/deploy/getActualGasData.ts", "../src/deploy/hardhatDeployWrapper.ts"], - "sourcesContent": ["export const version = '2.24.2'\n", "import { version } from './version.js'\n\ntype ErrorConfig = {\n getDocsUrl?: ((args: BaseErrorParameters) => string | undefined) | undefined\n version?: string | undefined\n}\n\nlet errorConfig: ErrorConfig = {\n getDocsUrl: ({\n docsBaseUrl,\n docsPath = '',\n docsSlug,\n }: BaseErrorParameters) =>\n docsPath\n ? `${docsBaseUrl ?? 'https://viem.sh'}${docsPath}${\n docsSlug ? `#${docsSlug}` : ''\n }`\n : undefined,\n version: `viem@${version}`,\n}\n\nexport function setErrorConfig(config: ErrorConfig) {\n errorConfig = config\n}\n\ntype BaseErrorParameters = {\n cause?: BaseError | Error | undefined\n details?: string | undefined\n docsBaseUrl?: string | undefined\n docsPath?: string | undefined\n docsSlug?: string | undefined\n metaMessages?: string[] | undefined\n name?: string | undefined\n}\n\nexport type BaseErrorType = BaseError & { name: 'BaseError' }\nexport class BaseError extends Error {\n details: string\n docsPath?: string | undefined\n metaMessages?: string[] | undefined\n shortMessage: string\n version: string\n\n override name = 'BaseError'\n\n constructor(shortMessage: string, args: BaseErrorParameters = {}) {\n const details = (() => {\n if (args.cause instanceof BaseError) return args.cause.details\n if (args.cause?.message) return args.cause.message\n return args.details!\n })()\n const docsPath = (() => {\n if (args.cause instanceof BaseError)\n return args.cause.docsPath || args.docsPath\n return args.docsPath\n })()\n const docsUrl = errorConfig.getDocsUrl?.({ ...args, docsPath })\n\n const message = [\n shortMessage || 'An error occurred.',\n '',\n ...(args.metaMessages ? [...args.metaMessages, ''] : []),\n ...(docsUrl ? [`Docs: ${docsUrl}`] : []),\n ...(details ? [`Details: ${details}`] : []),\n ...(errorConfig.version ? [`Version: ${errorConfig.version}`] : []),\n ].join('\\n')\n\n super(message, args.cause ? { cause: args.cause } : undefined)\n\n this.details = details\n this.docsPath = docsPath\n this.metaMessages = args.metaMessages\n this.name = args.name ?? this.name\n this.shortMessage = shortMessage\n this.version = version\n }\n\n walk(): Error\n walk(fn: (err: unknown) => boolean): Error | null\n walk(fn?: any): any {\n return walk(this, fn)\n }\n}\n\nfunction walk(\n err: unknown,\n fn?: ((err: unknown) => boolean) | undefined,\n): unknown {\n if (fn?.(err)) return err\n if (\n err &&\n typeof err === 'object' &&\n 'cause' in err &&\n err.cause !== undefined\n )\n return walk(err.cause, fn)\n return fn ? null : err\n}\n", "import type { ErrorType } from '../../errors/utils.js'\n\nexport type FormatUnitsErrorType = ErrorType\n\n/**\n * Divides a number by a given exponent of base 10 (10exponent), and formats it into a string representation of the number..\n *\n * - Docs: https://viem.sh/docs/utilities/formatUnits\n *\n * @example\n * import { formatUnits } from 'viem'\n *\n * formatUnits(420000000000n, 9)\n * // '420'\n */\nexport function formatUnits(value: bigint, decimals: number) {\n let display = value.toString()\n\n const negative = display.startsWith('-')\n if (negative) display = display.slice(1)\n\n display = display.padStart(decimals, '0')\n\n let [integer, fraction] = [\n display.slice(0, display.length - decimals),\n display.slice(display.length - decimals),\n ]\n fraction = fraction.replace(/(0+)$/, '')\n return `${negative ? '-' : ''}${integer || '0'}${\n fraction ? `.${fraction}` : ''\n }`\n}\n", "/* [Multicall3](https://github.com/mds1/multicall) */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n {\n name: 'target',\n type: 'address',\n },\n {\n name: 'allowFailure',\n type: 'bool',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n ],\n name: 'calls',\n type: 'tuple[]',\n },\n ],\n name: 'aggregate3',\n outputs: [\n {\n components: [\n {\n name: 'success',\n type: 'bool',\n },\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'returnData',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n\nconst universalResolverErrors = [\n {\n inputs: [],\n name: 'ResolverNotFound',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverWildcardNotSupported',\n type: 'error',\n },\n {\n inputs: [],\n name: 'ResolverNotContract',\n type: 'error',\n },\n {\n inputs: [\n {\n name: 'returnData',\n type: 'bytes',\n },\n ],\n name: 'ResolverError',\n type: 'error',\n },\n {\n inputs: [\n {\n components: [\n {\n name: 'status',\n type: 'uint16',\n },\n {\n name: 'message',\n type: 'string',\n },\n ],\n name: 'errors',\n type: 'tuple[]',\n },\n ],\n name: 'HttpError',\n type: 'error',\n },\n] as const\n\nexport const universalResolverResolveAbi = [\n ...universalResolverErrors,\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n {\n name: 'resolve',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes' },\n { name: 'data', type: 'bytes' },\n { name: 'gateways', type: 'string[]' },\n ],\n outputs: [\n { name: '', type: 'bytes' },\n { name: 'address', type: 'address' },\n ],\n },\n] as const\n\nexport const universalResolverReverseAbi = [\n ...universalResolverErrors,\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ type: 'bytes', name: 'reverseName' }],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n {\n name: 'reverse',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { type: 'bytes', name: 'reverseName' },\n { type: 'string[]', name: 'gateways' },\n ],\n outputs: [\n { type: 'string', name: 'resolvedName' },\n { type: 'address', name: 'resolvedAddress' },\n { type: 'address', name: 'reverseResolver' },\n { type: 'address', name: 'resolver' },\n ],\n },\n] as const\n\nexport const textResolverAbi = [\n {\n name: 'text',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'key', type: 'string' },\n ],\n outputs: [{ name: '', type: 'string' }],\n },\n] as const\n\nexport const addressResolverAbi = [\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'name', type: 'bytes32' }],\n outputs: [{ name: '', type: 'address' }],\n },\n {\n name: 'addr',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'name', type: 'bytes32' },\n { name: 'coinType', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bytes' }],\n },\n] as const\n\n// ERC-1271\n// isValidSignature(bytes32 hash, bytes signature) \u2192 bytes4 magicValue\n/** @internal */\nexport const smartAccountAbi = [\n {\n name: 'isValidSignature',\n type: 'function',\n stateMutability: 'view',\n inputs: [\n { name: 'hash', type: 'bytes32' },\n { name: 'signature', type: 'bytes' },\n ],\n outputs: [{ name: '', type: 'bytes4' }],\n },\n] as const\n\n// ERC-6492 - universal deployless signature validator contract\n// constructor(address _signer, bytes32 _hash, bytes _signature) \u2192 bytes4 returnValue\n// returnValue is either 0x1 (valid) or 0x0 (invalid)\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n name: 'isValidSig',\n },\n] as const\n\n/** [ERC-20 Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-20) */\nexport const erc20Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/**\n * [bytes32-flavored ERC-20](https://docs.makerdao.com/smart-contract-modules/mkr-module#4.-gotchas-potential-source-of-user-error)\n * for tokens (ie. Maker) that use bytes32 instead of string.\n */\nexport const erc20Abi_bytes32 = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'allowance',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'decimals',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint8',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'bytes32',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transfer',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n] as const\n\n/** [ERC-721 Non-Fungible Token Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-721) */\nexport const erc721Abi = [\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'event',\n name: 'ApprovalForAll',\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'operator',\n type: 'address',\n },\n {\n indexed: false,\n name: 'approved',\n type: 'bool',\n },\n ],\n },\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: true,\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'approve',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'balanceOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'getApproved',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'isApprovedForAll',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'operator',\n type: 'address',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n },\n {\n type: 'function',\n name: 'name',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'ownerOf',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'safeTransferFrom',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'id',\n type: 'uint256',\n },\n {\n name: 'data',\n type: 'bytes',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'setApprovalForAll',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'operator',\n type: 'address',\n },\n {\n name: 'approved',\n type: 'bool',\n },\n ],\n outputs: [],\n },\n {\n type: 'function',\n name: 'symbol',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenByIndex',\n stateMutability: 'view',\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'index',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'tokenURI',\n stateMutability: 'view',\n inputs: [\n {\n name: 'tokenId',\n type: 'uint256',\n },\n ],\n outputs: [\n {\n type: 'string',\n },\n ],\n },\n {\n type: 'function',\n name: 'totalSupply',\n stateMutability: 'view',\n inputs: [],\n outputs: [\n {\n type: 'uint256',\n },\n ],\n },\n {\n type: 'function',\n name: 'transferFrom',\n stateMutability: 'payable',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'recipient',\n type: 'address',\n },\n {\n name: 'tokeId',\n type: 'uint256',\n },\n ],\n outputs: [],\n },\n] as const\n\n/** [ERC-4626 Tokenized Vaults Standard](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626) */\nexport const erc4626Abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: true,\n name: 'spender',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Approval',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Deposit',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'from',\n type: 'address',\n },\n {\n indexed: true,\n name: 'to',\n type: 'address',\n },\n {\n indexed: false,\n name: 'value',\n type: 'uint256',\n },\n ],\n name: 'Transfer',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n name: 'sender',\n type: 'address',\n },\n {\n indexed: true,\n name: 'receiver',\n type: 'address',\n },\n {\n indexed: true,\n name: 'owner',\n type: 'address',\n },\n {\n indexed: false,\n name: 'assets',\n type: 'uint256',\n },\n {\n indexed: false,\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'Withdraw',\n type: 'event',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n {\n name: 'spender',\n type: 'address',\n },\n ],\n name: 'allowance',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'spender',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'approve',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'asset',\n outputs: [\n {\n name: 'assetTokenAddress',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'account',\n type: 'address',\n },\n ],\n name: 'balanceOf',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'convertToAssets',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'convertToShares',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'deposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxDeposit',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'caller',\n type: 'address',\n },\n ],\n name: 'maxMint',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxRedeem',\n outputs: [\n {\n name: 'maxShares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'maxWithdraw',\n outputs: [\n {\n name: 'maxAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n ],\n name: 'mint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewDeposit',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewMint',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n name: 'previewRedeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n name: 'previewWithdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'redeem',\n outputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalAssets',\n outputs: [\n {\n name: 'totalManagedAssets',\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'totalSupply',\n outputs: [\n {\n type: 'uint256',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transfer',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'from',\n type: 'address',\n },\n {\n name: 'to',\n type: 'address',\n },\n {\n name: 'amount',\n type: 'uint256',\n },\n ],\n name: 'transferFrom',\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n name: 'assets',\n type: 'uint256',\n },\n {\n name: 'receiver',\n type: 'address',\n },\n {\n name: 'owner',\n type: 'address',\n },\n ],\n name: 'withdraw',\n outputs: [\n {\n name: 'shares',\n type: 'uint256',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n] as const\n", "export const config = {\n DEFAULT_BLOCK_CONFIRMATIONS: 2,\n};\n", "/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkEnvKey(networkName: string): string {\n if (!networkName) {\n throw new Error('Network name must be provided');\n }\n return camelCaseToCapsSnakeCase(networkName);\n}\n\n/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkKey(NETWORK_NAME: string): string {\n if (!NETWORK_NAME) {\n throw new Error('Network name must be provided');\n }\n return capsSnakeCaseToCamelCase(NETWORK_NAME);\n}\n\n/**\n * Converts a string from CAPS_SNAKE_CASE to camelCase\n *\n * @param snakeCaseString The string in CAPS_SNAKE_CASE format\n * @returns The string converted to camelCase format\n */\nexport function capsSnakeCaseToCamelCase(snakeCaseString: string): string {\n if (!snakeCaseString) {\n throw new Error('String must be provided');\n }\n\n return snakeCaseString\n .toLowerCase()\n .replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n}\n\n/**\n * Converts a string from camelCase to CAPS_SNAKE_CASE\n *\n * @param camelCaseString The string in camelCase format\n * @returns The string converted to CAPS_SNAKE_CASE format\n */\nexport function camelCaseToCapsSnakeCase(camelCaseString: string): string {\n if (!camelCaseString) {\n throw new Error('String must be provided');\n }\n\n return camelCaseString.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n}\n\nexport function getNetworkName(networkEnvKey: string): string {\n if (!networkEnvKey) {\n throw new Error('Network name must be provided');\n }\n\n return networkEnvKey\n .toLowerCase()\n .split('_')\n .map((word, index) =>\n index === 0 ? word : word[0].toUpperCase() + word.slice(1)\n )\n .join('');\n}\n", "import { type NetworkType } from './types';\n\nexport const networkTypes: Record = {\n mainnet: 'mainnet',\n testnet: 'testnet',\n localhost: 'localhost',\n};\n", "import { BaseError } from './base.js'\n\nexport type InvalidDecimalNumberErrorType = InvalidDecimalNumberError & {\n name: 'InvalidDecimalNumberError'\n}\nexport class InvalidDecimalNumberError extends BaseError {\n constructor({ value }: { value: string }) {\n super(`Number \\`${value}\\` is not a valid decimal number.`, {\n name: 'InvalidDecimalNumberError',\n })\n }\n}\n", "import { InvalidDecimalNumberError } from '../../errors/unit.js'\nimport type { ErrorType } from '../../errors/utils.js'\n\nexport type ParseUnitsErrorType = ErrorType\n\n/**\n * Multiplies a string representation of a number by a given exponent of base 10 (10exponent).\n *\n * - Docs: https://viem.sh/docs/utilities/parseUnits\n *\n * @example\n * import { parseUnits } from 'viem'\n *\n * parseUnits('420', 9)\n * // 420000000000n\n */\nexport function parseUnits(value: string, decimals: number) {\n if (!/^(-?)([0-9]*)\\.?([0-9]*)$/.test(value))\n throw new InvalidDecimalNumberError({ value })\n\n let [integer, fraction = '0'] = value.split('.')\n\n const negative = integer.startsWith('-')\n if (negative) integer = integer.slice(1)\n\n // trim trailing zeros.\n fraction = fraction.replace(/(0+)$/, '')\n\n // round off if the fraction is larger than the number of decimals.\n if (decimals === 0) {\n if (Math.round(Number(`.${fraction}`)) === 1)\n integer = `${BigInt(integer) + 1n}`\n fraction = ''\n } else if (fraction.length > decimals) {\n const [left, unit, right] = [\n fraction.slice(0, decimals - 1),\n fraction.slice(decimals - 1, decimals),\n fraction.slice(decimals),\n ]\n\n const rounded = Math.round(Number(`${unit}.${right}`))\n if (rounded > 9)\n fraction = `${BigInt(left) + BigInt(1)}0`.padStart(left.length + 1, '0')\n else fraction = `${left}${rounded}`\n\n if (fraction.length > decimals) {\n fraction = fraction.slice(1)\n integer = `${BigInt(integer) + 1n}`\n }\n\n fraction = fraction.slice(0, decimals)\n } else {\n fraction = fraction.padEnd(decimals, '0')\n }\n\n return BigInt(`${negative ? '-' : ''}${integer}${fraction}`)\n}\n", "// biome-ignore lint/performance/noBarrelFile: entrypoint module\nexport {\n type Abi,\n type AbiFunction,\n type AbiParameter,\n type AbiEvent,\n type AbiStateMutability,\n type AbiParameterKind,\n type AbiParameterToPrimitiveType,\n type Address,\n type Narrow,\n type ParseAbi,\n type ParseAbiItem,\n type ParseAbiParameter,\n type ParseAbiParameters,\n type ResolvedRegister,\n type TypedData,\n type TypedDataDomain,\n type TypedDataParameter,\n CircularReferenceError,\n InvalidAbiParameterError,\n InvalidAbiParametersError,\n InvalidAbiItemError,\n InvalidAbiTypeParameterError,\n InvalidFunctionModifierError,\n InvalidModifierError,\n InvalidParameterError,\n InvalidParenthesisError,\n InvalidSignatureError,\n InvalidStructSignatureError,\n SolidityProtectedKeywordError,\n UnknownTypeError,\n UnknownSignatureError,\n parseAbi,\n parseAbiItem,\n parseAbiParameter,\n parseAbiParameters,\n} from 'abitype'\nexport type {\n BlockOverrides,\n Rpc as RpcBlockOverrides,\n} from 'ox/BlockOverrides'\n\nexport {\n getContract,\n type GetContractErrorType,\n type GetContractParameters,\n type GetContractReturnType,\n} from './actions/getContract.js'\nexport {\n type GetContractEventsErrorType,\n type GetContractEventsParameters,\n type GetContractEventsReturnType,\n} from './actions/public/getContractEvents.js'\nexport {\n type GetEip712DomainErrorType,\n type GetEip712DomainParameters,\n type GetEip712DomainReturnType,\n} from './actions/public/getEip712Domain.js'\nexport {\n type AddChainErrorType,\n type AddChainParameters,\n} from './actions/wallet/addChain.js'\nexport {\n type CallErrorType,\n type CallParameters,\n type CallReturnType,\n} from './actions/public/call.js'\nexport type {\n CreateAccessListParameters,\n CreateAccessListReturnType,\n CreateAccessListErrorType,\n} from './actions/public/createAccessList.js'\nexport type {\n CreateBlockFilterErrorType,\n CreateBlockFilterReturnType,\n} from './actions/public/createBlockFilter.js'\nexport type {\n CreateContractEventFilterErrorType,\n CreateContractEventFilterParameters,\n CreateContractEventFilterReturnType,\n} from './actions/public/createContractEventFilter.js'\nexport type {\n CreateEventFilterErrorType,\n CreateEventFilterParameters,\n CreateEventFilterReturnType,\n} from './actions/public/createEventFilter.js'\nexport type {\n CreatePendingTransactionFilterErrorType,\n CreatePendingTransactionFilterReturnType,\n} from './actions/public/createPendingTransactionFilter.js'\nexport type {\n DeployContractErrorType,\n DeployContractParameters,\n DeployContractReturnType,\n} from './actions/wallet/deployContract.js'\nexport type {\n DropTransactionErrorType,\n DropTransactionParameters,\n} from './actions/test/dropTransaction.js'\nexport type {\n DumpStateErrorType,\n DumpStateReturnType,\n} from './actions/test/dumpState.js'\nexport type {\n GetAutomineErrorType,\n GetAutomineReturnType,\n} from './actions/test/getAutomine.js'\nexport type {\n EstimateContractGasErrorType,\n EstimateContractGasParameters,\n EstimateContractGasReturnType,\n} from './actions/public/estimateContractGas.js'\nexport type {\n EstimateGasErrorType,\n EstimateGasParameters,\n EstimateGasReturnType,\n} from './actions/public/estimateGas.js'\nexport type {\n EstimateFeesPerGasErrorType,\n EstimateFeesPerGasParameters,\n EstimateFeesPerGasReturnType,\n} from './actions/public/estimateFeesPerGas.js'\nexport type {\n EstimateMaxPriorityFeePerGasErrorType,\n EstimateMaxPriorityFeePerGasParameters,\n EstimateMaxPriorityFeePerGasReturnType,\n} from './actions/public/estimateMaxPriorityFeePerGas.js'\nexport type {\n GetAddressesErrorType,\n GetAddressesReturnType,\n} from './actions/wallet/getAddresses.js'\nexport type {\n GetBalanceErrorType,\n GetBalanceParameters,\n GetBalanceReturnType,\n} from './actions/public/getBalance.js'\nexport type {\n GetBlobBaseFeeErrorType,\n GetBlobBaseFeeReturnType,\n} from './actions/public/getBlobBaseFee.js'\nexport type {\n GetBlockNumberErrorType,\n GetBlockNumberParameters,\n GetBlockNumberReturnType,\n} from './actions/public/getBlockNumber.js'\nexport type {\n GetBlockErrorType,\n GetBlockParameters,\n GetBlockReturnType,\n} from './actions/public/getBlock.js'\nexport type {\n GetBlockTransactionCountErrorType,\n GetBlockTransactionCountParameters,\n GetBlockTransactionCountReturnType,\n} from './actions/public/getBlockTransactionCount.js'\nexport type {\n /** @deprecated Use `GetCodeErrorType` instead */\n GetCodeErrorType as GetBytecodeErrorType,\n /** @deprecated Use `GetCodeParameters` instead */\n GetCodeParameters as GetBytecodeParameters,\n /** @deprecated Use `GetCodeReturnType` instead */\n GetCodeReturnType as GetBytecodeReturnType,\n GetCodeErrorType,\n GetCodeParameters,\n GetCodeReturnType,\n} from './actions/public/getCode.js'\nexport type {\n GetChainIdErrorType,\n GetChainIdReturnType,\n} from './actions/public/getChainId.js'\nexport type {\n GetEnsAddressErrorType,\n GetEnsAddressParameters,\n GetEnsAddressReturnType,\n} from './actions/ens/getEnsAddress.js'\nexport type {\n GetEnsAvatarErrorType,\n GetEnsAvatarParameters,\n GetEnsAvatarReturnType,\n} from './actions/ens/getEnsAvatar.js'\nexport type {\n GetEnsNameErrorType,\n GetEnsNameParameters,\n GetEnsNameReturnType,\n} from './actions/ens/getEnsName.js'\nexport type {\n GetEnsResolverErrorType,\n GetEnsResolverParameters,\n GetEnsResolverReturnType,\n} from './actions/ens/getEnsResolver.js'\nexport type {\n GetEnsTextErrorType,\n GetEnsTextParameters,\n GetEnsTextReturnType,\n} from './actions/ens/getEnsText.js'\nexport type {\n GetFeeHistoryErrorType,\n GetFeeHistoryParameters,\n GetFeeHistoryReturnType,\n} from './actions/public/getFeeHistory.js'\nexport type {\n GetFilterChangesErrorType,\n GetFilterChangesParameters,\n GetFilterChangesReturnType,\n} from './actions/public/getFilterChanges.js'\nexport type {\n GetFilterLogsErrorType,\n GetFilterLogsParameters,\n GetFilterLogsReturnType,\n} from './actions/public/getFilterLogs.js'\nexport type {\n GetGasPriceErrorType,\n GetGasPriceReturnType,\n} from './actions/public/getGasPrice.js'\nexport type {\n GetLogsErrorType,\n GetLogsParameters,\n GetLogsReturnType,\n} from './actions/public/getLogs.js'\nexport type {\n GetPermissionsErrorType,\n GetPermissionsReturnType,\n} from './actions/wallet/getPermissions.js'\nexport type {\n GetProofErrorType,\n GetProofParameters,\n GetProofReturnType,\n} from './actions/public/getProof.js'\nexport type {\n GetStorageAtErrorType,\n GetStorageAtParameters,\n GetStorageAtReturnType,\n} from './actions/public/getStorageAt.js'\nexport type {\n GetTransactionConfirmationsErrorType,\n GetTransactionConfirmationsParameters,\n GetTransactionConfirmationsReturnType,\n} from './actions/public/getTransactionConfirmations.js'\nexport type {\n GetTransactionCountErrorType,\n GetTransactionCountParameters,\n GetTransactionCountReturnType,\n} from './actions/public/getTransactionCount.js'\nexport type {\n GetTransactionErrorType,\n GetTransactionParameters,\n GetTransactionReturnType,\n} from './actions/public/getTransaction.js'\nexport type {\n GetTransactionReceiptErrorType,\n GetTransactionReceiptParameters,\n GetTransactionReceiptReturnType,\n} from './actions/public/getTransactionReceipt.js'\nexport type {\n ImpersonateAccountErrorType,\n ImpersonateAccountParameters,\n} from './actions/test/impersonateAccount.js'\nexport type {\n IncreaseTimeErrorType,\n IncreaseTimeParameters,\n} from './actions/test/increaseTime.js'\nexport type {\n LoadStateErrorType,\n LoadStateParameters,\n LoadStateReturnType,\n} from './actions/test/loadState.js'\nexport type { MineErrorType, MineParameters } from './actions/test/mine.js'\nexport type {\n MulticallErrorType,\n MulticallParameters,\n MulticallReturnType,\n} from './actions/public/multicall.js'\nexport type { SnapshotErrorType } from './actions/test/snapshot.js'\nexport type {\n SimulateBlocksParameters,\n SimulateBlocksReturnType,\n SimulateBlocksErrorType,\n} from './actions/public/simulateBlocks.js'\nexport type {\n SimulateCallsParameters,\n SimulateCallsReturnType,\n SimulateCallsErrorType,\n} from './actions/public/simulateCalls.js'\nexport type {\n GetMutabilityAwareValue,\n SimulateContractParameters,\n SimulateContractReturnType,\n SimulateContractErrorType,\n} from './actions/public/simulateContract.js'\nexport type {\n OnBlock,\n OnBlockParameter,\n WatchBlocksErrorType,\n WatchBlocksParameters,\n WatchBlocksReturnType,\n} from './actions/public/watchBlocks.js'\nexport type {\n OnBlockNumberFn,\n OnBlockNumberParameter,\n WatchBlockNumberErrorType,\n WatchBlockNumberParameters,\n WatchBlockNumberReturnType,\n} from './actions/public/watchBlockNumber.js'\nexport type {\n WatchEventOnLogsFn,\n WatchEventOnLogsParameter,\n WatchEventErrorType,\n WatchEventParameters,\n WatchEventReturnType,\n} from './actions/public/watchEvent.js'\nexport type {\n OnTransactionsFn,\n OnTransactionsParameter,\n WatchPendingTransactionsErrorType,\n WatchPendingTransactionsParameters,\n WatchPendingTransactionsReturnType,\n} from './actions/public/watchPendingTransactions.js'\nexport type {\n ReadContractErrorType,\n ReadContractParameters,\n ReadContractReturnType,\n} from './actions/public/readContract.js'\nexport type {\n ReplacementReason,\n ReplacementReturnType,\n WaitForTransactionReceiptErrorType,\n WaitForTransactionReceiptParameters,\n WaitForTransactionReceiptReturnType,\n} from './actions/public/waitForTransactionReceipt.js'\nexport type {\n RequestAddressesErrorType,\n RequestAddressesReturnType,\n} from './actions/wallet/requestAddresses.js'\nexport type {\n RequestPermissionsErrorType,\n RequestPermissionsReturnType,\n RequestPermissionsParameters,\n} from './actions/wallet/requestPermissions.js'\nexport type {\n GetTxpoolContentErrorType,\n GetTxpoolContentReturnType,\n} from './actions/test/getTxpoolContent.js'\nexport type {\n GetTxpoolStatusErrorType,\n GetTxpoolStatusReturnType,\n} from './actions/test/getTxpoolStatus.js'\nexport type {\n InspectTxpoolErrorType,\n InspectTxpoolReturnType,\n} from './actions/test/inspectTxpool.js'\nexport type { RemoveBlockTimestampIntervalErrorType } from './actions/test/removeBlockTimestampInterval.js'\nexport type { ResetErrorType, ResetParameters } from './actions/test/reset.js'\nexport type {\n RevertErrorType,\n RevertParameters,\n} from './actions/test/revert.js'\nexport type {\n SendRawTransactionErrorType,\n SendRawTransactionParameters,\n SendRawTransactionReturnType,\n} from './actions/wallet/sendRawTransaction.js'\nexport type {\n SendTransactionErrorType,\n SendTransactionParameters,\n SendTransactionRequest,\n SendTransactionReturnType,\n} from './actions/wallet/sendTransaction.js'\nexport type {\n SignTransactionErrorType,\n SignTransactionParameters,\n SignTransactionReturnType,\n} from './actions/wallet/signTransaction.js'\nexport type {\n PrepareTransactionRequestErrorType,\n PrepareTransactionRequestParameters,\n PrepareTransactionRequestParameterType,\n PrepareTransactionRequestRequest,\n PrepareTransactionRequestReturnType,\n} from './actions/wallet/prepareTransactionRequest.js'\nexport type {\n SendUnsignedTransactionErrorType,\n SendUnsignedTransactionParameters,\n SendUnsignedTransactionReturnType,\n} from './actions/test/sendUnsignedTransaction.js'\nexport type { SetAutomineErrorType } from './actions/test/setAutomine.js'\nexport type {\n SetBalanceErrorType,\n SetBalanceParameters,\n} from './actions/test/setBalance.js'\nexport type {\n SetBlockGasLimitErrorType,\n SetBlockGasLimitParameters,\n} from './actions/test/setBlockGasLimit.js'\nexport type {\n SetBlockTimestampIntervalErrorType,\n SetBlockTimestampIntervalParameters,\n} from './actions/test/setBlockTimestampInterval.js'\nexport type {\n SetCodeErrorType,\n SetCodeParameters,\n} from './actions/test/setCode.js'\nexport type {\n SetCoinbaseErrorType,\n SetCoinbaseParameters,\n} from './actions/test/setCoinbase.js'\nexport type {\n SetIntervalMiningErrorType,\n SetIntervalMiningParameters,\n} from './actions/test/setIntervalMining.js'\nexport type { SetLoggingEnabledErrorType } from './actions/test/setLoggingEnabled.js'\nexport type {\n SetMinGasPriceErrorType,\n SetMinGasPriceParameters,\n} from './actions/test/setMinGasPrice.js'\nexport type {\n SetNextBlockBaseFeePerGasErrorType,\n SetNextBlockBaseFeePerGasParameters,\n} from './actions/test/setNextBlockBaseFeePerGas.js'\nexport type {\n SetNextBlockTimestampErrorType,\n SetNextBlockTimestampParameters,\n} from './actions/test/setNextBlockTimestamp.js'\nexport type {\n SetNonceErrorType,\n SetNonceParameters,\n} from './actions/test/setNonce.js'\nexport type { SetRpcUrlErrorType } from './actions/test/setRpcUrl.js'\nexport type {\n SetStorageAtErrorType,\n SetStorageAtParameters,\n} from './actions/test/setStorageAt.js'\nexport type {\n SignMessageErrorType,\n SignMessageParameters,\n SignMessageReturnType,\n} from './actions/wallet/signMessage.js'\nexport type {\n SignTypedDataErrorType,\n SignTypedDataParameters,\n SignTypedDataReturnType,\n} from './actions/wallet/signTypedData.js'\nexport type {\n StopImpersonatingAccountErrorType,\n StopImpersonatingAccountParameters,\n} from './actions/test/stopImpersonatingAccount.js'\nexport type {\n SwitchChainErrorType,\n SwitchChainParameters,\n} from './actions/wallet/switchChain.js'\nexport type {\n UninstallFilterErrorType,\n UninstallFilterParameters,\n UninstallFilterReturnType,\n} from './actions/public/uninstallFilter.js'\nexport type {\n WatchAssetErrorType,\n WatchAssetParameters,\n WatchAssetReturnType,\n} from './actions/wallet/watchAsset.js'\nexport type {\n VerifyHashErrorType as VerifyHashActionErrorType,\n VerifyHashParameters as VerifyHashActionParameters,\n VerifyHashReturnType as VerifyHashActionReturnType,\n} from './actions/public/verifyHash.js'\nexport type {\n VerifyTypedDataErrorType as VerifyTypedDataActionErrorType,\n VerifyTypedDataParameters as VerifyTypedDataActionParameters,\n VerifyTypedDataReturnType as VerifyTypedDataActionReturnType,\n} from './actions/public/verifyTypedData.js'\nexport type {\n VerifyMessageErrorType as VerifyMessageActionErrorType,\n VerifyMessageParameters as VerifyMessageActionParameters,\n VerifyMessageReturnType as VerifyMessageActionReturnType,\n} from './actions/public/verifyMessage.js'\nexport type {\n WatchContractEventOnLogsFn,\n WatchContractEventOnLogsParameter,\n WatchContractEventErrorType,\n WatchContractEventParameters,\n WatchContractEventReturnType,\n} from './actions/public/watchContractEvent.js'\nexport type {\n WriteContractErrorType,\n WriteContractParameters,\n WriteContractReturnType,\n} from './actions/wallet/writeContract.js'\nexport type { Call, Calls } from './types/calls.js'\nexport type {\n Chain,\n ChainConfig,\n ChainContract,\n ChainEstimateFeesPerGasFn,\n ChainFees,\n ChainFeesFnParameters,\n ChainFormatter,\n ChainEstimateFeesPerGasFnParameters,\n ChainMaxPriorityFeePerGasFn,\n DeriveChain,\n GetChainParameter,\n ChainFormatters,\n ChainSerializers,\n ExtractChainFormatterExclude,\n ExtractChainFormatterParameters,\n ExtractChainFormatterReturnType,\n} from './types/chain.js'\nexport type { GetTransactionRequestKzgParameter, Kzg } from './types/kzg.js'\nexport {\n type Client,\n type ClientConfig,\n type CreateClientErrorType,\n type MulticallBatchOptions,\n createClient,\n rpcSchema,\n} from './clients/createClient.js'\nexport {\n type CustomTransport,\n type CustomTransportConfig,\n type CustomTransportErrorType,\n custom,\n} from './clients/transports/custom.js'\nexport {\n type FallbackTransport,\n type FallbackTransportConfig,\n type FallbackTransportErrorType,\n fallback,\n shouldThrow,\n} from './clients/transports/fallback.js'\nexport {\n type HttpTransport,\n type HttpTransportConfig,\n type HttpTransportErrorType,\n http,\n} from './clients/transports/http.js'\nexport {\n type PublicClient,\n type PublicClientConfig,\n type CreatePublicClientErrorType,\n createPublicClient,\n} from './clients/createPublicClient.js'\nexport {\n type TestClient,\n type TestClientConfig,\n type CreateTestClientErrorType,\n createTestClient,\n} from './clients/createTestClient.js'\nexport {\n type PublicActions,\n publicActions,\n} from './clients/decorators/public.js'\nexport {\n type TestActions,\n testActions,\n} from './clients/decorators/test.js'\nexport {\n type WalletActions,\n walletActions,\n} from './clients/decorators/wallet.js'\nexport {\n type Transport,\n type TransportConfig,\n type CreateTransportErrorType,\n createTransport,\n} from './clients/transports/createTransport.js'\nexport {\n type WalletClient,\n type WalletClientConfig,\n type CreateWalletClientErrorType,\n createWalletClient,\n} from './clients/createWalletClient.js'\nexport {\n type WebSocketTransport,\n type WebSocketTransportConfig,\n type WebSocketTransportErrorType,\n webSocket,\n} from './clients/transports/webSocket.js'\nexport {\n multicall3Abi,\n erc20Abi,\n erc20Abi_bytes32,\n erc721Abi,\n erc4626Abi,\n universalSignatureValidatorAbi,\n} from './constants/abis.js'\nexport { ethAddress, zeroAddress } from './constants/address.js'\nexport {\n deploylessCallViaBytecodeBytecode,\n deploylessCallViaFactoryBytecode,\n universalSignatureValidatorByteCode,\n} from './constants/contracts.js'\nexport { etherUnits, gweiUnits, weiUnits } from './constants/unit.js'\nexport {\n maxInt8,\n maxInt16,\n maxInt24,\n maxInt32,\n maxInt40,\n maxInt48,\n maxInt56,\n maxInt64,\n maxInt72,\n maxInt80,\n maxInt88,\n maxInt96,\n maxInt104,\n maxInt112,\n maxInt120,\n maxInt128,\n maxInt136,\n maxInt144,\n maxInt152,\n maxInt160,\n maxInt168,\n maxInt176,\n maxInt184,\n maxInt192,\n maxInt200,\n maxInt208,\n maxInt216,\n maxInt224,\n maxInt232,\n maxInt240,\n maxInt248,\n maxInt256,\n maxUint8,\n maxUint16,\n maxUint24,\n maxUint32,\n maxUint40,\n maxUint48,\n maxUint56,\n maxUint64,\n maxUint72,\n maxUint80,\n maxUint88,\n maxUint96,\n maxUint104,\n maxUint112,\n maxUint120,\n maxUint128,\n maxUint136,\n maxUint144,\n maxUint152,\n maxUint160,\n maxUint168,\n maxUint176,\n maxUint184,\n maxUint192,\n maxUint200,\n maxUint208,\n maxUint216,\n maxUint224,\n maxUint232,\n maxUint240,\n maxUint248,\n maxUint256,\n minInt8,\n minInt16,\n minInt24,\n minInt32,\n minInt40,\n minInt48,\n minInt56,\n minInt64,\n minInt72,\n minInt80,\n minInt88,\n minInt96,\n minInt104,\n minInt112,\n minInt120,\n minInt128,\n minInt136,\n minInt144,\n minInt152,\n minInt160,\n minInt168,\n minInt176,\n minInt184,\n minInt192,\n minInt200,\n minInt208,\n minInt216,\n minInt224,\n minInt232,\n minInt240,\n minInt248,\n minInt256,\n} from './constants/number.js'\nexport { zeroHash } from './constants/bytes.js'\nexport { presignMessagePrefix } from './constants/strings.js'\nexport {\n AbiConstructorNotFoundError,\n type AbiConstructorNotFoundErrorType,\n AbiConstructorParamsNotFoundError,\n type AbiConstructorParamsNotFoundErrorType,\n AbiDecodingDataSizeInvalidError,\n type AbiDecodingDataSizeInvalidErrorType,\n AbiDecodingDataSizeTooSmallError,\n type AbiDecodingDataSizeTooSmallErrorType,\n AbiDecodingZeroDataError,\n type AbiDecodingZeroDataErrorType,\n AbiEncodingArrayLengthMismatchError,\n type AbiEncodingArrayLengthMismatchErrorType,\n AbiEncodingLengthMismatchError,\n type AbiEncodingLengthMismatchErrorType,\n AbiEncodingBytesSizeMismatchError,\n type AbiEncodingBytesSizeMismatchErrorType,\n AbiErrorInputsNotFoundError,\n type AbiErrorInputsNotFoundErrorType,\n AbiErrorNotFoundError,\n type AbiErrorNotFoundErrorType,\n AbiErrorSignatureNotFoundError,\n type AbiErrorSignatureNotFoundErrorType,\n AbiEventNotFoundError,\n type AbiEventNotFoundErrorType,\n AbiEventSignatureEmptyTopicsError,\n type AbiEventSignatureEmptyTopicsErrorType,\n AbiEventSignatureNotFoundError,\n type AbiEventSignatureNotFoundErrorType,\n AbiFunctionNotFoundError,\n type AbiFunctionNotFoundErrorType,\n AbiFunctionOutputsNotFoundError,\n type AbiFunctionOutputsNotFoundErrorType,\n AbiFunctionSignatureNotFoundError,\n type AbiFunctionSignatureNotFoundErrorType,\n BytesSizeMismatchError,\n type BytesSizeMismatchErrorType,\n DecodeLogDataMismatch,\n type DecodeLogDataMismatchErrorType,\n DecodeLogTopicsMismatch,\n type DecodeLogTopicsMismatchErrorType,\n InvalidAbiDecodingTypeError,\n type InvalidAbiDecodingTypeErrorType,\n InvalidAbiEncodingTypeError,\n type InvalidAbiEncodingTypeErrorType,\n InvalidArrayError,\n type InvalidArrayErrorType,\n InvalidDefinitionTypeError,\n type InvalidDefinitionTypeErrorType,\n UnsupportedPackedAbiType,\n type UnsupportedPackedAbiTypeErrorType,\n} from './errors/abi.js'\nexport { BaseError, type BaseErrorType, setErrorConfig } from './errors/base.js'\nexport {\n BlockNotFoundError,\n type BlockNotFoundErrorType,\n} from './errors/block.js'\nexport {\n CallExecutionError,\n type CallExecutionErrorType,\n ContractFunctionExecutionError,\n type ContractFunctionExecutionErrorType,\n ContractFunctionRevertedError,\n type ContractFunctionRevertedErrorType,\n ContractFunctionZeroDataError,\n type ContractFunctionZeroDataErrorType,\n RawContractError,\n type RawContractErrorType,\n CounterfactualDeploymentFailedError,\n type CounterfactualDeploymentFailedErrorType,\n} from './errors/contract.js'\nexport {\n BaseFeeScalarError,\n type BaseFeeScalarErrorType,\n Eip1559FeesNotSupportedError,\n type Eip1559FeesNotSupportedErrorType,\n MaxFeePerGasTooLowError,\n type MaxFeePerGasTooLowErrorType,\n} from './errors/fee.js'\nexport {\n ChainDisconnectedError,\n type ChainDisconnectedErrorType,\n InternalRpcError,\n type InternalRpcErrorType,\n InvalidInputRpcError,\n type InvalidInputRpcErrorType,\n InvalidParamsRpcError,\n type InvalidParamsRpcErrorType,\n InvalidRequestRpcError,\n type InvalidRequestRpcErrorType,\n JsonRpcVersionUnsupportedError,\n type JsonRpcVersionUnsupportedErrorType,\n LimitExceededRpcError,\n type LimitExceededRpcErrorType,\n MethodNotFoundRpcError,\n type MethodNotFoundRpcErrorType,\n MethodNotSupportedRpcError,\n type MethodNotSupportedRpcErrorType,\n ParseRpcError,\n type ParseRpcErrorType,\n ProviderDisconnectedError,\n type ProviderDisconnectedErrorType,\n ProviderRpcError,\n type ProviderRpcErrorCode,\n type ProviderRpcErrorType,\n ResourceNotFoundRpcError,\n type ResourceNotFoundRpcErrorType,\n ResourceUnavailableRpcError,\n type ResourceUnavailableRpcErrorType,\n RpcError,\n type RpcErrorType,\n type RpcErrorCode,\n SwitchChainError,\n TransactionRejectedRpcError,\n type TransactionRejectedRpcErrorType,\n UnauthorizedProviderError,\n type UnauthorizedProviderErrorType,\n UnknownRpcError,\n type UnknownRpcErrorType,\n UnsupportedProviderMethodError,\n type UnsupportedProviderMethodErrorType,\n UserRejectedRequestError,\n type UserRejectedRequestErrorType,\n} from './errors/rpc.js'\nexport {\n ChainDoesNotSupportContract,\n type ChainDoesNotSupportContractErrorType,\n ChainMismatchError,\n type ChainMismatchErrorType,\n ChainNotFoundError,\n type ChainNotFoundErrorType,\n ClientChainNotConfiguredError,\n type ClientChainNotConfiguredErrorType,\n InvalidChainIdError,\n type InvalidChainIdErrorType,\n} from './errors/chain.js'\nexport {\n InvalidBytesBooleanError,\n type InvalidBytesBooleanErrorType,\n IntegerOutOfRangeError,\n type IntegerOutOfRangeErrorType,\n InvalidHexBooleanError,\n type InvalidHexBooleanErrorType,\n InvalidHexValueError,\n type InvalidHexValueErrorType,\n SizeOverflowError,\n type SizeOverflowErrorType,\n} from './errors/encoding.js'\nexport {\n type EnsAvatarInvalidMetadataError,\n EnsAvatarUriResolutionError,\n type EnsAvatarInvalidMetadataErrorType,\n EnsAvatarInvalidNftUriError,\n type EnsAvatarInvalidNftUriErrorType,\n EnsAvatarUnsupportedNamespaceError,\n type EnsAvatarUnsupportedNamespaceErrorType,\n type EnsAvatarUriResolutionErrorType,\n} from './errors/ens.js'\nexport {\n type InvalidDecimalNumberErrorType,\n InvalidDecimalNumberError,\n} from './errors/unit.js'\nexport {\n EstimateGasExecutionError,\n type EstimateGasExecutionErrorType,\n} from './errors/estimateGas.js'\nexport {\n ExecutionRevertedError,\n type ExecutionRevertedErrorType,\n FeeCapTooHighError,\n type FeeCapTooHighErrorType,\n FeeCapTooLowError,\n type FeeCapTooLowErrorType,\n InsufficientFundsError,\n type InsufficientFundsErrorType,\n IntrinsicGasTooHighError,\n type IntrinsicGasTooHighErrorType,\n IntrinsicGasTooLowError,\n type IntrinsicGasTooLowErrorType,\n NonceMaxValueError,\n type NonceMaxValueErrorType,\n NonceTooHighError,\n type NonceTooHighErrorType,\n NonceTooLowError,\n type NonceTooLowErrorType,\n TipAboveFeeCapError,\n type TipAboveFeeCapErrorType,\n TransactionTypeNotSupportedError,\n type TransactionTypeNotSupportedErrorType,\n UnknownNodeError,\n type UnknownNodeErrorType,\n} from './errors/node.js'\nexport {\n FilterTypeNotSupportedError,\n type FilterTypeNotSupportedErrorType,\n} from './errors/log.js'\nexport {\n HttpRequestError,\n type HttpRequestErrorType,\n RpcRequestError,\n type RpcRequestErrorType,\n TimeoutError,\n type TimeoutErrorType,\n SocketClosedError,\n type SocketClosedErrorType,\n WebSocketRequestError,\n type WebSocketRequestErrorType,\n} from './errors/request.js'\nexport {\n InvalidAddressError,\n type InvalidAddressErrorType,\n} from './errors/address.js'\nexport {\n FeeConflictError,\n type FeeConflictErrorType,\n InvalidLegacyVError,\n type InvalidLegacyVErrorType,\n InvalidSerializableTransactionError,\n type InvalidSerializableTransactionErrorType,\n InvalidSerializedTransactionError,\n type InvalidSerializedTransactionErrorType,\n InvalidSerializedTransactionTypeError,\n type InvalidSerializedTransactionTypeErrorType,\n InvalidStorageKeySizeError,\n type InvalidStorageKeySizeErrorType,\n TransactionExecutionError,\n type TransactionExecutionErrorType,\n TransactionNotFoundError,\n type TransactionNotFoundErrorType,\n TransactionReceiptNotFoundError,\n type TransactionReceiptNotFoundErrorType,\n WaitForTransactionReceiptTimeoutError,\n type WaitForTransactionReceiptTimeoutErrorType,\n} from './errors/transaction.js'\nexport {\n SizeExceedsPaddingSizeError,\n type SizeExceedsPaddingSizeErrorType,\n SliceOffsetOutOfBoundsError,\n type SliceOffsetOutOfBoundsErrorType,\n} from './errors/data.js'\nexport {\n UrlRequiredError,\n type UrlRequiredErrorType,\n} from './errors/transport.js'\nexport {\n AccountStateConflictError,\n type AccountStateConflictErrorType,\n StateAssignmentConflictError,\n type StateAssignmentConflictErrorType,\n} from './errors/stateOverride.js'\nexport {\n InvalidDomainError,\n type InvalidDomainErrorType,\n InvalidPrimaryTypeError,\n type InvalidPrimaryTypeErrorType,\n InvalidStructTypeError,\n type InvalidStructTypeErrorType,\n} from './errors/typedData.js'\nexport type {\n AbiEventParameterToPrimitiveType,\n AbiEventParametersToPrimitiveTypes,\n AbiEventTopicToPrimitiveType,\n AbiItem,\n AbiItemArgs,\n AbiItemName,\n ContractConstructorArgs,\n ContractEventArgsFromTopics,\n EventDefinition,\n ExtractAbiFunctionForArgs,\n ExtractAbiItem,\n ExtractAbiItemForArgs,\n ExtractAbiItemNames,\n ContractErrorArgs,\n ContractErrorName,\n ContractEventArgs,\n ContractEventName,\n ContractFunctionParameters,\n ContractFunctionReturnType,\n ContractFunctionArgs,\n ContractFunctionName,\n GetEventArgs,\n GetValue,\n LogTopicType,\n MaybeAbiEventName,\n MaybeExtractEventArgsFromAbi,\n UnionWiden,\n Widen,\n} from './types/contract.js'\nexport type {\n AccessList,\n Transaction,\n TransactionBase,\n TransactionEIP1559,\n TransactionEIP2930,\n TransactionEIP4844,\n TransactionEIP7702,\n TransactionLegacy,\n TransactionReceipt,\n TransactionRequest,\n TransactionRequestBase,\n TransactionRequestEIP1559,\n TransactionRequestEIP2930,\n TransactionRequestEIP4844,\n TransactionRequestEIP7702,\n TransactionRequestGeneric,\n TransactionRequestLegacy,\n TransactionSerializable,\n TransactionSerializableBase,\n TransactionSerializableEIP1559,\n TransactionSerializableEIP2930,\n TransactionSerializableEIP4844,\n TransactionSerializableEIP7702,\n TransactionSerializableGeneric,\n TransactionSerializableLegacy,\n TransactionSerialized,\n TransactionSerializedEIP1559,\n TransactionSerializedEIP2930,\n TransactionSerializedEIP4844,\n TransactionSerializedEIP7702,\n TransactionSerializedGeneric,\n TransactionSerializedLegacy,\n TransactionType,\n} from './types/transaction.js'\nexport type {\n Assign,\n Branded,\n Evaluate,\n IsNarrowable,\n IsUndefined,\n IsUnion,\n LooseOmit,\n MaybePartial,\n MaybePromise,\n MaybeRequired,\n Mutable,\n NoInfer,\n NoUndefined,\n Omit,\n Or,\n PartialBy,\n RequiredBy,\n Some,\n UnionEvaluate,\n UnionLooseOmit,\n ValueOf,\n Prettify,\n ExactPartial,\n ExactRequired,\n IsNever,\n OneOf,\n UnionOmit,\n UnionPartialBy,\n UnionPick,\n UnionRequiredBy,\n UnionToTuple,\n} from './types/utils.js'\nexport type {\n Account,\n AccountSource,\n CustomSource,\n HDAccount,\n HDOptions,\n JsonRpcAccount,\n LocalAccount,\n PrivateKeyAccount,\n} from './accounts/types.js'\nexport type { AssetGateway, AssetGatewayUrls } from './types/ens.js'\nexport type {\n Block,\n BlockIdentifier,\n BlockNumber,\n BlockTag,\n Uncle,\n} from './types/block.js'\nexport type {\n ByteArray,\n Hash,\n Hex,\n LogTopic,\n Signature,\n CompactSignature,\n SignableMessage,\n} from './types/misc.js'\nexport type {\n AddEthereumChainParameter,\n BundlerRpcSchema,\n DebugBundlerRpcSchema,\n EIP1193EventMap,\n EIP1193Events,\n EIP1193Parameters,\n EIP1193Provider,\n EIP1193RequestFn,\n EIP1474Methods,\n ProviderRpcErrorType as EIP1193ProviderRpcErrorType,\n ProviderConnectInfo,\n ProviderMessage,\n PublicRpcSchema,\n PaymasterRpcSchema,\n NetworkSync,\n RpcSchema,\n RpcSchemaOverride,\n TestRpcSchema,\n WalletCapabilities,\n WalletCapabilitiesRecord,\n WalletCallReceipt,\n WalletGetCallsStatusReturnType,\n WalletGrantPermissionsParameters,\n WalletGrantPermissionsReturnType,\n WalletSendCallsParameters,\n WalletPermissionCaveat,\n WalletPermission,\n WalletRpcSchema,\n WatchAssetParams,\n} from './types/eip1193.js'\nexport { ProviderRpcError as EIP1193ProviderRpcError } from './types/eip1193.js'\nexport type { BlobSidecar, BlobSidecars } from './types/eip4844.js'\nexport type {\n FeeHistory,\n FeeValues,\n FeeValuesEIP1559,\n FeeValuesEIP4844,\n FeeValuesLegacy,\n FeeValuesType,\n} from './types/fee.js'\nexport type { Filter, FilterType } from './types/filter.js'\nexport type { TypedDataDefinition } from './types/typedData.js'\nexport type { GetTransportConfig, GetPollOptions } from './types/transport.js'\nexport type { Log } from './types/log.js'\nexport type {\n MulticallContracts,\n MulticallResponse,\n MulticallResults,\n} from './types/multicall.js'\nexport type {\n ParseAccount,\n DeriveAccount,\n HDKey,\n} from './types/account.js'\nexport type {\n Authorization,\n AuthorizationList,\n SerializedAuthorization,\n SerializedAuthorizationList,\n SignedAuthorization,\n SignedAuthorizationList,\n} from './types/authorization.js'\nexport type {\n Index,\n Quantity,\n RpcAuthorization,\n RpcAuthorizationList,\n RpcBlock,\n RpcBlockIdentifier,\n RpcBlockNumber,\n RpcFeeHistory,\n RpcFeeValues,\n RpcLog,\n RpcTransaction,\n RpcTransactionReceipt,\n RpcTransactionRequest,\n RpcUncle,\n Status,\n RpcProof,\n RpcAccountStateOverride,\n RpcStateOverride,\n RpcStateMapping,\n} from './types/rpc.js'\nexport type { Withdrawal } from './types/withdrawal.js'\nexport type {\n StateMapping,\n StateOverride,\n} from './types/stateOverride.js'\nexport { labelhash, type LabelhashErrorType } from './utils/ens/labelhash.js'\nexport { namehash, type NamehashErrorType } from './utils/ens/namehash.js'\nexport {\n type FormattedBlock,\n defineBlock,\n type DefineBlockErrorType,\n formatBlock,\n type FormatBlockErrorType,\n} from './utils/formatters/block.js'\nexport { formatLog, type FormatLogErrorType } from './utils/formatters/log.js'\nexport {\n type DecodeAbiParametersErrorType,\n type DecodeAbiParametersReturnType,\n decodeAbiParameters,\n} from './utils/abi/decodeAbiParameters.js'\nexport {\n type DecodeDeployDataErrorType,\n type DecodeDeployDataParameters,\n type DecodeDeployDataReturnType,\n decodeDeployData,\n} from './utils/abi/decodeDeployData.js'\nexport {\n type DecodeErrorResultErrorType,\n type DecodeErrorResultParameters,\n type DecodeErrorResultReturnType,\n decodeErrorResult,\n} from './utils/abi/decodeErrorResult.js'\nexport {\n type DecodeEventLogErrorType,\n type DecodeEventLogParameters,\n type DecodeEventLogReturnType,\n decodeEventLog,\n} from './utils/abi/decodeEventLog.js'\nexport {\n type DecodeFunctionDataErrorType,\n type DecodeFunctionDataParameters,\n type DecodeFunctionDataReturnType,\n decodeFunctionData,\n} from './utils/abi/decodeFunctionData.js'\nexport {\n type DecodeFunctionResultErrorType,\n type DecodeFunctionResultParameters,\n type DecodeFunctionResultReturnType,\n decodeFunctionResult,\n} from './utils/abi/decodeFunctionResult.js'\nexport {\n type EncodeAbiParametersErrorType,\n type EncodeAbiParametersReturnType,\n encodeAbiParameters,\n} from './utils/abi/encodeAbiParameters.js'\nexport {\n type EncodeDeployDataErrorType,\n type EncodeDeployDataParameters,\n type EncodeDeployDataReturnType,\n encodeDeployData,\n} from './utils/abi/encodeDeployData.js'\nexport {\n type EncodeErrorResultErrorType,\n type EncodeErrorResultParameters,\n type EncodeErrorResultReturnType,\n encodeErrorResult,\n} from './utils/abi/encodeErrorResult.js'\nexport {\n type EncodeEventTopicsErrorType,\n type EncodeEventTopicsParameters,\n type EncodeEventTopicsReturnType,\n encodeEventTopics,\n} from './utils/abi/encodeEventTopics.js'\nexport {\n type EncodeFunctionDataErrorType,\n type EncodeFunctionDataParameters,\n type EncodeFunctionDataReturnType,\n encodeFunctionData,\n} from './utils/abi/encodeFunctionData.js'\nexport {\n type PrepareEncodeFunctionDataErrorType,\n type PrepareEncodeFunctionDataParameters,\n type PrepareEncodeFunctionDataReturnType,\n prepareEncodeFunctionData,\n} from './utils/abi/prepareEncodeFunctionData.js'\nexport {\n type EncodeFunctionResultErrorType,\n type EncodeFunctionResultParameters,\n type EncodeFunctionResultReturnType,\n encodeFunctionResult,\n} from './utils/abi/encodeFunctionResult.js'\nexport {\n type ParseEventLogsErrorType,\n type ParseEventLogsParameters,\n type ParseEventLogsReturnType,\n parseEventLogs,\n} from './utils/abi/parseEventLogs.js'\nexport {\n type FormattedTransaction,\n defineTransaction,\n type DefineTransactionErrorType,\n formatTransaction,\n type FormatTransactionErrorType,\n transactionType,\n} from './utils/formatters/transaction.js'\nexport {\n type FormattedTransactionReceipt,\n defineTransactionReceipt,\n type DefineTransactionReceiptErrorType,\n formatTransactionReceipt,\n type FormatTransactionReceiptErrorType,\n} from './utils/formatters/transactionReceipt.js'\nexport {\n type FormattedTransactionRequest,\n defineTransactionRequest,\n type DefineTransactionRequestErrorType,\n formatTransactionRequest,\n type FormatTransactionRequestErrorType,\n rpcTransactionType,\n} from './utils/formatters/transactionRequest.js'\nexport {\n type GetAbiItemErrorType,\n type GetAbiItemParameters,\n type GetAbiItemReturnType,\n getAbiItem,\n} from './utils/abi/getAbiItem.js'\nexport {\n type GetContractAddressOptions,\n type GetCreate2AddressOptions,\n type GetCreate2AddressErrorType,\n type GetCreateAddressOptions,\n type GetCreateAddressErrorType,\n getContractAddress,\n getCreate2Address,\n getCreateAddress,\n} from './utils/address/getContractAddress.js'\nexport {\n type GetSerializedTransactionType,\n type GetSerializedTransactionTypeErrorType,\n getSerializedTransactionType,\n} from './utils/transaction/getSerializedTransactionType.js'\nexport {\n type GetTransactionType,\n type GetTransactionTypeErrorType,\n getTransactionType,\n} from './utils/transaction/getTransactionType.js'\nexport {\n type HashDomainErrorType,\n type HashStructErrorType,\n type HashTypedDataErrorType,\n type HashTypedDataParameters,\n type HashTypedDataReturnType,\n hashDomain,\n hashStruct,\n hashTypedData,\n} from './utils/signature/hashTypedData.js'\nexport {\n type CompactSignatureToSignatureErrorType,\n compactSignatureToSignature,\n} from './utils/signature/compactSignatureToSignature.js'\nexport {\n /** @deprecated Use `ParseCompactSignatureErrorType`. */\n type ParseCompactSignatureErrorType as HexToCompactSignatureErrorType,\n /** @deprecated Use `parseCompactSignature`. */\n parseCompactSignature as hexToCompactSignature,\n type ParseCompactSignatureErrorType,\n parseCompactSignature,\n} from './utils/signature/parseCompactSignature.js'\nexport {\n /** @deprecated Use `ParseSignatureErrorType`. */\n type ParseSignatureErrorType as HexToSignatureErrorType,\n /** @deprecated Use `parseSignature`. */\n parseSignature as hexToSignature,\n type ParseSignatureErrorType,\n parseSignature,\n} from './utils/signature/parseSignature.js'\nexport {\n type RecoverAddressErrorType,\n type RecoverAddressParameters,\n type RecoverAddressReturnType,\n recoverAddress,\n} from './utils/signature/recoverAddress.js'\nexport {\n type RecoverMessageAddressErrorType,\n type RecoverMessageAddressParameters,\n type RecoverMessageAddressReturnType,\n recoverMessageAddress,\n} from './utils/signature/recoverMessageAddress.js'\nexport {\n type RecoverPublicKeyErrorType,\n type RecoverPublicKeyParameters,\n type RecoverPublicKeyReturnType,\n recoverPublicKey,\n} from './utils/signature/recoverPublicKey.js'\nexport {\n type RecoverTransactionAddressErrorType,\n type RecoverTransactionAddressParameters,\n type RecoverTransactionAddressReturnType,\n recoverTransactionAddress,\n} from './utils/signature/recoverTransactionAddress.js'\nexport {\n type RecoverTypedDataAddressErrorType,\n type RecoverTypedDataAddressParameters,\n type RecoverTypedDataAddressReturnType,\n recoverTypedDataAddress,\n} from './utils/signature/recoverTypedDataAddress.js'\nexport {\n type SignatureToCompactSignatureErrorType,\n signatureToCompactSignature,\n} from './utils/signature/signatureToCompactSignature.js'\nexport {\n /** @deprecated Use `SignatureToHexErrorType` instead. */\n type SerializeCompactSignatureErrorType as CompactSignatureToHexErrorType,\n /** @deprecated Use `serializeCompactSignature` instead. */\n serializeCompactSignature as compactSignatureToHex,\n type SerializeCompactSignatureErrorType,\n serializeCompactSignature,\n} from './utils/signature/serializeCompactSignature.js'\nexport {\n /** @deprecated Use `SignatureToHexErrorType` instead. */\n type SerializeSignatureErrorType as SignatureToHexErrorType,\n /** @deprecated Use `serializeSignature` instead. */\n serializeSignature as signatureToHex,\n type SerializeSignatureParameters,\n type SerializeSignatureReturnType,\n type SerializeSignatureErrorType,\n serializeSignature,\n} from './utils/signature/serializeSignature.js'\nexport {\n bytesToRlp,\n type BytesToRlpErrorType,\n hexToRlp,\n type HexToRlpErrorType,\n toRlp,\n type ToRlpErrorType,\n type ToRlpReturnType,\n} from './utils/encoding/toRlp.js'\nexport {\n type VerifyHashErrorType,\n type VerifyHashParameters,\n type VerifyHashReturnType,\n verifyHash,\n} from './utils/signature/verifyHash.js'\nexport {\n type VerifyMessageErrorType,\n type VerifyMessageParameters,\n type VerifyMessageReturnType,\n verifyMessage,\n} from './utils/signature/verifyMessage.js'\nexport {\n type VerifyTypedDataErrorType,\n type VerifyTypedDataParameters,\n type VerifyTypedDataReturnType,\n verifyTypedData,\n} from './utils/signature/verifyTypedData.js'\nexport {\n type ParseErc6492SignatureErrorType,\n type ParseErc6492SignatureParameters,\n type ParseErc6492SignatureReturnType,\n parseErc6492Signature,\n} from './utils/signature/parseErc6492Signature.js'\nexport {\n type IsErc6492SignatureErrorType,\n type IsErc6492SignatureParameters,\n type IsErc6492SignatureReturnType,\n isErc6492Signature,\n} from './utils/signature/isErc6492Signature.js'\nexport {\n type SerializeErc6492SignatureErrorType,\n type SerializeErc6492SignatureParameters,\n type SerializeErc6492SignatureReturnType,\n serializeErc6492Signature,\n} from './utils/signature/serializeErc6492Signature.js'\nexport {\n type AssertRequestErrorType,\n assertRequest,\n} from './utils/transaction/assertRequest.js'\nexport {\n type AssertTransactionEIP1559ErrorType,\n assertTransactionEIP1559,\n type AssertTransactionEIP2930ErrorType,\n assertTransactionEIP2930,\n type AssertTransactionLegacyErrorType,\n assertTransactionLegacy,\n} from './utils/transaction/assertTransaction.js'\nexport {\n type BoolToBytesErrorType,\n type BoolToBytesOpts,\n boolToBytes,\n type HexToBytesErrorType,\n type HexToBytesOpts,\n hexToBytes,\n type NumberToBytesErrorType,\n numberToBytes,\n type StringToBytesErrorType,\n type StringToBytesOpts,\n stringToBytes,\n type ToBytesErrorType,\n type ToBytesParameters,\n toBytes,\n} from './utils/encoding/toBytes.js'\nexport {\n type BoolToHexErrorType,\n type BoolToHexOpts,\n boolToHex,\n type BytesToHexErrorType,\n type BytesToHexOpts,\n bytesToHex,\n type NumberToHexErrorType,\n type NumberToHexOpts,\n numberToHex,\n type StringToHexErrorType,\n type StringToHexOpts,\n stringToHex,\n type ToHexErrorType,\n type ToHexParameters,\n toHex,\n} from './utils/encoding/toHex.js'\nexport {\n type BytesToBigIntErrorType,\n type BytesToBigIntOpts,\n bytesToBigInt,\n type BytesToBoolErrorType,\n type BytesToBoolOpts,\n bytesToBool,\n type BytesToNumberErrorType,\n type BytesToNumberOpts,\n bytesToNumber,\n type BytesToStringErrorType,\n type BytesToStringOpts,\n bytesToString,\n type FromBytesErrorType,\n type FromBytesParameters,\n fromBytes,\n} from './utils/encoding/fromBytes.js'\nexport {\n type CcipRequestParameters,\n type CcipRequestErrorType,\n ccipRequest,\n /** @deprecated Use `ccipRequest`. */\n ccipRequest as ccipFetch,\n type OffchainLookupErrorType,\n offchainLookup,\n offchainLookupAbiItem,\n offchainLookupSignature,\n} from './utils/ccip.js'\nexport {\n type BlobsToCommitmentsErrorType,\n type BlobsToCommitmentsParameters,\n type BlobsToCommitmentsReturnType,\n blobsToCommitments,\n} from './utils/blob/blobsToCommitments.js'\nexport {\n type CommitmentToVersionedHashErrorType,\n type CommitmentToVersionedHashParameters,\n type CommitmentToVersionedHashReturnType,\n commitmentToVersionedHash,\n} from './utils/blob/commitmentToVersionedHash.js'\nexport {\n type CommitmentsToVersionedHashesErrorType,\n type CommitmentsToVersionedHashesParameters,\n type CommitmentsToVersionedHashesReturnType,\n commitmentsToVersionedHashes,\n} from './utils/blob/commitmentsToVersionedHashes.js'\nexport {\n type SidecarsToVersionedHashesErrorType,\n type SidecarsToVersionedHashesParameters,\n type SidecarsToVersionedHashesReturnType,\n sidecarsToVersionedHashes,\n} from './utils/blob/sidecarsToVersionedHashes.js'\nexport {\n type blobsToProofsErrorType,\n type blobsToProofsParameters,\n type blobsToProofsReturnType,\n blobsToProofs,\n} from './utils/blob/blobsToProofs.js'\nexport {\n type FromBlobsErrorType,\n type FromBlobsParameters,\n type FromBlobsReturnType,\n fromBlobs,\n} from './utils/blob/fromBlobs.js'\nexport {\n type ToBlobSidecarsErrorType,\n type ToBlobSidecarsParameters,\n type ToBlobSidecarsReturnType,\n toBlobSidecars,\n} from './utils/blob/toBlobSidecars.js'\nexport {\n type ToBlobsErrorType,\n type ToBlobsParameters,\n type ToBlobsReturnType,\n toBlobs,\n} from './utils/blob/toBlobs.js'\nexport {\n type DefineKzgErrorType,\n type DefineKzgParameters,\n type DefineKzgReturnType,\n defineKzg,\n} from './utils/kzg/defineKzg.js'\nexport {\n type SetupKzgErrorType,\n type SetupKzgParameters,\n type SetupKzgReturnType,\n setupKzg,\n} from './utils/kzg/setupKzg.js'\nexport {\n type ConcatBytesErrorType,\n type ConcatErrorType,\n type ConcatHexErrorType,\n type ConcatReturnType,\n concat,\n concatBytes,\n concatHex,\n} from './utils/data/concat.js'\nexport {\n type AssertCurrentChainErrorType,\n type AssertCurrentChainParameters,\n assertCurrentChain,\n} from './utils/chain/assertCurrentChain.js'\nexport { defineChain } from './utils/chain/defineChain.js'\nexport {\n type ExtractChainErrorType,\n type ExtractChainParameters,\n type ExtractChainReturnType,\n extractChain,\n} from './utils/chain/extractChain.js'\nexport {\n type GetChainContractAddressErrorType,\n getChainContractAddress,\n} from './utils/chain/getChainContractAddress.js'\nexport {\n type EncodePackedErrorType,\n encodePacked,\n} from './utils/abi/encodePacked.js'\nexport {\n type WithRetryErrorType,\n withRetry,\n} from './utils/promise/withRetry.js'\nexport {\n type WithTimeoutErrorType,\n withTimeout,\n} from './utils/promise/withTimeout.js'\nexport {\n type FormatEtherErrorType,\n formatEther,\n} from './utils/unit/formatEther.js'\nexport {\n type FormatGweiErrorType,\n formatGwei,\n} from './utils/unit/formatGwei.js'\nexport {\n type FormatUnitsErrorType,\n formatUnits,\n} from './utils/unit/formatUnits.js'\nexport {\n type FromHexErrorType,\n fromHex,\n type HexToBigIntErrorType,\n hexToBigInt,\n type HexToBoolErrorType,\n hexToBool,\n type HexToNumberErrorType,\n hexToNumber,\n type HexToStringErrorType,\n hexToString,\n} from './utils/encoding/fromHex.js'\nexport {\n type FromRlpErrorType,\n type FromRlpReturnType,\n fromRlp,\n} from './utils/encoding/fromRlp.js'\nexport {\n type ChecksumAddressErrorType,\n type GetAddressErrorType,\n checksumAddress,\n getAddress,\n} from './utils/address/getAddress.js'\nexport {\n type GetContractErrorReturnType,\n getContractError,\n} from './utils/errors/getContractError.js'\nexport {\n type ToEventSelectorErrorType,\n toEventSelector,\n /** @deprecated use `ToEventSelectorErrorType`. */\n type ToEventSelectorErrorType as GetEventSelectorErrorType,\n /** @deprecated use `toEventSelector`. */\n toEventSelector as getEventSelector,\n} from './utils/hash/toEventSelector.js'\nexport {\n type ToFunctionSelectorErrorType,\n toFunctionSelector,\n /** @deprecated use `ToFunctionSelectorErrorType`. */\n type ToFunctionSelectorErrorType as GetFunctionSelectorErrorType,\n /** @deprecated use `toFunctionSelector`. */\n toFunctionSelector as getFunctionSelector,\n} from './utils/hash/toFunctionSelector.js'\nexport {\n type ToEventSignatureErrorType,\n toEventSignature,\n /** @deprecated use `ToEventSignatureErrorType`. */\n type ToEventSignatureErrorType as GetEventSignatureErrorType,\n /** @deprecated use `toEventSignature`. */\n toEventSignature as getEventSignature,\n} from './utils/hash/toEventSignature.js'\nexport {\n type ToFunctionSignatureErrorType,\n toFunctionSignature,\n /** @deprecated use `ToFunctionSignatureErrorType`. */\n type ToFunctionSignatureErrorType as GetFunctionSignatureErrorType,\n /** @deprecated use `toFunctionSignature`. */\n toFunctionSignature as getFunctionSignature,\n} from './utils/hash/toFunctionSignature.js'\nexport {\n type ToEventHashErrorType,\n toEventHash,\n} from './utils/hash/toEventHash.js'\nexport {\n type ToFunctionHashErrorType,\n toFunctionHash,\n} from './utils/hash/toFunctionHash.js'\nexport {\n type HashMessageErrorType,\n hashMessage,\n} from './utils/signature/hashMessage.js'\nexport {\n type ToPrefixedMessageErrorType,\n toPrefixedMessage,\n} from './utils/signature/toPrefixedMessage.js'\nexport {\n type IsAddressOptions,\n type IsAddressErrorType,\n isAddress,\n} from './utils/address/isAddress.js'\nexport {\n type IsAddressEqualReturnType,\n type IsAddressEqualErrorType,\n isAddressEqual,\n} from './utils/address/isAddressEqual.js'\nexport { type IsBytesErrorType, isBytes } from './utils/data/isBytes.js'\nexport { type IsHashErrorType, isHash } from './utils/hash/isHash.js'\nexport { type IsHexErrorType, isHex } from './utils/data/isHex.js'\nexport {\n type Keccak256Hash,\n type Keccak256ErrorType,\n keccak256,\n} from './utils/hash/keccak256.js'\nexport {\n type Sha256Hash,\n type Sha256ErrorType,\n sha256,\n} from './utils/hash/sha256.js'\nexport {\n type Ripemd160Hash,\n type Ripemd160ErrorType,\n ripemd160,\n} from './utils/hash/ripemd160.js'\nexport {\n type PadBytesErrorType,\n type PadErrorType,\n type PadHexErrorType,\n type PadReturnType,\n pad,\n padBytes,\n padHex,\n} from './utils/data/pad.js'\nexport {\n type ParseEtherErrorType,\n parseEther,\n} from './utils/unit/parseEther.js'\nexport { type ParseGweiErrorType, parseGwei } from './utils/unit/parseGwei.js'\nexport {\n type ParseTransactionErrorType,\n type ParseTransactionReturnType,\n parseTransaction,\n} from './utils/transaction/parseTransaction.js'\nexport {\n type ParseUnitsErrorType,\n parseUnits,\n} from './utils/unit/parseUnits.js'\nexport {\n type SerializeAccessListErrorType,\n serializeAccessList,\n} from './utils/transaction/serializeAccessList.js'\nexport {\n serializeTransaction,\n type SerializeTransactionErrorType,\n type SerializedTransactionReturnType,\n type SerializeTransactionFn,\n} from './utils/transaction/serializeTransaction.js'\nexport { type SizeErrorType, size } from './utils/data/size.js'\nexport {\n type SliceBytesErrorType,\n type SliceErrorType,\n type SliceHexErrorType,\n slice,\n sliceBytes,\n sliceHex,\n} from './utils/data/slice.js'\nexport { type StringifyErrorType, stringify } from './utils/stringify.js'\nexport {\n type TrimErrorType,\n type TrimReturnType,\n trim,\n} from './utils/data/trim.js'\nexport {\n type DomainSeparatorErrorType,\n type GetTypesForEIP712DomainErrorType,\n type SerializeTypedDataErrorType,\n type ValidateTypedDataErrorType,\n serializeTypedData,\n validateTypedData,\n domainSeparator,\n getTypesForEIP712Domain,\n} from './utils/typedData.js'\nexport {\n type CreateNonceManagerParameters,\n type NonceManager,\n type NonceManagerSource,\n createNonceManager,\n nonceManager,\n} from './utils/nonceManager.js'\nexport type {\n RpcEstimateUserOperationGasReturnType,\n RpcGetUserOperationByHashReturnType,\n RpcUserOperation,\n RpcUserOperationReceipt,\n RpcUserOperationRequest,\n} from './account-abstraction/types/rpc.js'\n", "import {\n\tAddress,\n\terc20Abi,\n\tformatUnits,\n\tHash,\n\tparseUnits,\n\tPublicClient,\n\tWalletClient,\n} from 'viem';\n\nexport class TokenSender {\n\tprivate walletClient: WalletClient;\n\tprivate publicClient: PublicClient;\n\n\tconstructor(walletClient: WalletClient, publicClient: PublicClient) {\n\t\tthis.walletClient = walletClient;\n\t\tthis.publicClient = publicClient;\n\t}\n\n\tpublic async sendToken(\n\t\ttokenAddress: Address,\n\t\tamount: string,\n\t\trecipient: Address\n\t): Promise {\n\t\tconst [tokenDecimals, tokenSymbol, tokenBalance] = await Promise.all([\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'decimals',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'symbol',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\targs: [this.walletClient.account?.address!],\n\t\t\t}),\n\t\t]);\n\n\t\tconsole.log(\n\t\t\t`Current ${tokenSymbol} balance ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t);\n\n\t\tif (parseUnits(amount, tokenDecimals) > tokenBalance) {\n\t\t\tthrow new Error(\n\t\t\t\t`Insufficient balance. Required: ${amount}, available: ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t\t);\n\t\t}\n\n\t\tconst txHash = await this.walletClient.writeContract({\n\t\t\taddress: tokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: 'transfer',\n\t\t\targs: [recipient, parseUnits(amount, tokenDecimals)],\n\t\t\tchain: this.walletClient.chain,\n\t\t\taccount: this.walletClient.account!,\n\t\t});\n\n\t\tconst { status } = await this.publicClient.waitForTransactionReceipt({\n\t\t\thash: txHash,\n\t\t});\n\n\t\tif (status !== 'success') {\n\t\t\tthrow new Error(`Error sending token. Hash: ${txHash}`);\n\t\t}\n\n\t\tconsole.log(`Token successfully sent. Hash: ${txHash}`);\n\n\t\treturn txHash;\n\t}\n}\n", "import { PublicClient } from 'viem';\n\ntype GasData = {\n\tgasPrice?: string;\n\tmaxFeePerGas?: string;\n\tmaxPriorityFeePerGas?: string;\n};\n\nexport async function getActualGasData(\n\tpublicClient: PublicClient\n): Promise {\n\tconst block = await publicClient.getBlock();\n\n\tconst isEIP1559 = !!block.baseFeePerGas;\n\n\tlet gasPrice = 0n;\n\tlet maxPriorityFeePerGas = 0n;\n\ttry {\n\t\tif (isEIP1559) {\n\t\t\tconst { maxFeePerGas } = await publicClient.estimateFeesPerGas();\n\t\t\tgasPrice = maxFeePerGas;\n\t\t\tmaxPriorityFeePerGas =\n\t\t\t\tawait publicClient.estimateMaxPriorityFeePerGas();\n\t\t} else {\n\t\t\tgasPrice = await publicClient.getGasPrice();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Error getting actual gas data:', error);\n\t\treturn {\n\t\t\tgasPrice: '0',\n\t\t\tmaxFeePerGas: '0',\n\t\t\tmaxPriorityFeePerGas: '0',\n\t\t};\n\t}\n\n\tconst gasDataLegacy = {\n\t\tgasPrice: gasPrice.toString(),\n\t};\n\n\tconst gasDataEIP1559 = {\n\t\tmaxFeePerGas: gasPrice.toString(),\n\t\tmaxPriorityFeePerGas: maxPriorityFeePerGas.toString(),\n\t};\n\n\tconst gasData: GasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy;\n\n\treturn gasData;\n}\n", "import { Deployment } from 'hardhat-deploy/types';\nimport { HardhatRuntimeEnvironment } from 'hardhat/types';\nimport { PublicClient } from 'viem';\nimport { getActualGasData } from './getActualGasData';\n\ntype HardhatDeployWrapperArgs = {\n\thre: HardhatRuntimeEnvironment;\n\targs: any[];\n\tpublicClient: PublicClient;\n\tproxy?: boolean;\n\tgasLimit?: number;\n\tlog?: boolean;\n\tlibraries?: {\n\t\t[key: string]: `0x${string}`;\n\t};\n\tskipIfAlreadyDeployed: boolean;\n};\n\nexport async function hardhatDeployWrapper(\n\tcontractName: string,\n\t{\n\t\thre,\n\t\targs,\n\t\tpublicClient,\n\t\tproxy = false,\n\t\tgasLimit,\n\t\tlog = false,\n\t\tlibraries,\n\t\tskipIfAlreadyDeployed = false,\n\t}: HardhatDeployWrapperArgs\n): Promise {\n\tlet actualDeployer;\n\n\tif (proxy) {\n\t\tconst { proxyDeployer } = await hre.getNamedAccounts();\n\t\tactualDeployer = proxyDeployer;\n\t} else {\n\t\tconst { deployer } = await hre.getNamedAccounts();\n\t\tactualDeployer = deployer;\n\t}\n\n\tconst { deploy } = hre.deployments;\n\n\tconst nonce = await publicClient.getTransactionCount({\n\t\taddress: actualDeployer as `0x${string}`,\n\t});\n\n\tconst gasData = await getActualGasData(publicClient);\n\tconst waitConfirmations = hre.network.name.startsWith('ethereum') ? 1 : 3;\n\n\tif (log) {\n\t\tconsole.log(\n\t\t\t`\\x1b[34m[hardhatDeployWrapper]\\x1b[0m\\x1b[35m[args]\\x1b[0m`,\n\t\t\t{\n\t\t\t\tfrom: actualDeployer,\n\t\t\t\targs,\n\t\t\t\tnonce,\n\t\t\t\tgasLimit: gasLimit ? gasLimit : 'auto',\n\t\t\t\tgasData,\n\t\t\t\twaitConfirmations,\n\t\t\t}\n\t\t);\n\t}\n\n\tlet deployment: Deployment;\n\ttry {\n\t\tconsole.log('Starting deployment of:', contractName);\n\t\tdeployment = await deploy(contractName, {\n\t\t\tfrom: actualDeployer,\n\t\t\targs: args,\n\t\t\tlog: true,\n\t\t\tautoMine: true,\n\t\t\tnonce,\n\t\t\twaitConfirmations,\n\t\t\t...(gasLimit ? { gasLimit } : {}),\n\t\t\t...gasData,\n\t\t\t...(libraries ? { libraries } : {}),\n\t\t\tskipIfAlreadyDeployed,\n\t\t});\n\t} catch (error) {\n\t\tconsole.error('Error deploying contract:', error);\n\t\tthrow error;\n\t}\n\n\treturn deployment;\n}\n"], - "mappings": "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", - "names": [] + "sources": ["../node_modules/tslib/tslib.es6.js", "../node_modules/@trezor/utils/lib/bufferUtils.js", "../node_modules/@trezor/utils/lib/enumUtils.js", "../node_modules/@trezor/utils/lib/throwError.js", "../node_modules/@trezor/utils/lib/versionUtils.js", "../node_modules/@trezor/utils/lib/xssFilters.js", "../node_modules/@trezor/utils/lib/addDashesToSpaces.js", "../node_modules/@trezor/utils/lib/arrayDistinct.js", "../node_modules/@trezor/utils/lib/arrayPartition.js", "../node_modules/@trezor/utils/lib/arrayShuffle.js", "../node_modules/@trezor/utils/lib/arrayToDictionary.js", "../node_modules/@trezor/utils/lib/asciiUtils.js", "../node_modules/bignumber.js/bignumber.js", "../node_modules/@trezor/utils/lib/bigNumber.js", "../node_modules/@trezor/utils/lib/bytesToHumanReadable.js", "../node_modules/@trezor/utils/lib/cache.js", "../node_modules/@trezor/utils/lib/capitalizeFirstLetter.js", "../node_modules/@trezor/utils/lib/cloneObject.js", "../node_modules/@trezor/utils/lib/comparison.js", "../node_modules/@trezor/utils/lib/convertTaprootXpub.js", "../node_modules/@trezor/utils/lib/countBytesInString.js", "../node_modules/@trezor/utils/lib/createCooldown.js", "../node_modules/@trezor/utils/lib/createDeferred.js", "../node_modules/@trezor/utils/lib/createDeferredManager.js", "../node_modules/@trezor/utils/lib/createLazy.js", "../node_modules/@trezor/utils/lib/extractUrlsFromText.js", "../node_modules/@trezor/utils/lib/getLocaleSeparators.js", "../node_modules/@trezor/utils/lib/getRandomInt.js", "../node_modules/@trezor/utils/lib/getMutex.js", "../node_modules/@trezor/utils/lib/getSynchronize.js", "../node_modules/@trezor/utils/lib/getWeakRandomId.js", "../node_modules/@trezor/utils/lib/getWeakRandomInt.js", "../node_modules/@trezor/utils/lib/getWeakRandomNumberInRange.js", "../node_modules/@trezor/utils/lib/hexToRgba.js", "../node_modules/@trezor/utils/lib/hexToRgbaArray.js", "../node_modules/@trezor/utils/lib/isApproximatelyEqual.js", "../node_modules/@trezor/utils/lib/isArrayMember.js", "../node_modules/@trezor/utils/lib/isFullPath.js", "../node_modules/@trezor/utils/lib/isHex.js", "../node_modules/@trezor/utils/lib/isNotUndefined.js", "../node_modules/@trezor/utils/lib/isUrl.js", "../node_modules/@trezor/utils/lib/isWhitelistedHost.js", "../node_modules/@trezor/utils/lib/logs.js", "../node_modules/@trezor/utils/lib/logsManager.js", "../node_modules/@trezor/utils/lib/mergeDeepObject.js", "../node_modules/@trezor/utils/lib/objectPartition.js", "../node_modules/@trezor/utils/lib/parseElectrumUrl.js", "../node_modules/@trezor/utils/lib/parseHostname.js", "../node_modules/@trezor/utils/lib/promiseAllSequence.js", "../node_modules/@trezor/utils/lib/redactUserPath.js", "../node_modules/@trezor/utils/lib/resolveAfter.js", "../node_modules/@trezor/utils/lib/scheduleAction.js", "../node_modules/@trezor/utils/lib/serializeError.js", "../node_modules/@trezor/utils/lib/splitStringEveryNCharacters.js", "../node_modules/@trezor/utils/lib/throttler.js", "../node_modules/@trezor/utils/lib/topologicalSort.js", "../node_modules/@trezor/utils/lib/typedObject.js", "../node_modules/@trezor/utils/lib/typedEventEmitter.js", "../node_modules/@trezor/utils/lib/urlToOnion.js", "../node_modules/@trezor/utils/lib/zip.js", "../node_modules/@trezor/utils/lib/removeTrailingSlashes.js", "../node_modules/@trezor/utils/lib/getIntegerInRangeFromString.js", "../node_modules/@trezor/utils/lib/safeBigIntStringify.js", "../node_modules/@trezor/utils/lib/union.js", "../node_modules/@trezor/utils/lib/isInt.js", "../node_modules/@trezor/utils/lib/number.js", "../node_modules/@trezor/utils/lib/sanitizeFilename.js", "../node_modules/@trezor/utils/lib/index.js", "../node_modules/@trezor/connect/lib/constants/errors.js", "../node_modules/@trezor/connect/lib/constants/network.js", "../node_modules/@trezor/connect/lib/constants/cardano.js", "../node_modules/@sinclair/typebox/build/cjs/type/guard/value.js", "../node_modules/@sinclair/typebox/build/cjs/type/clone/value.js", "../node_modules/@sinclair/typebox/build/cjs/type/clone/type.js", "../node_modules/@sinclair/typebox/build/cjs/type/clone/index.js", "../node_modules/@sinclair/typebox/build/cjs/value/guard/guard.js", "../node_modules/@sinclair/typebox/build/cjs/value/guard/index.js", "../node_modules/@sinclair/typebox/build/cjs/system/policy.js", "../node_modules/@sinclair/typebox/build/cjs/type/create/immutable.js", "../node_modules/@sinclair/typebox/build/cjs/type/create/type.js", "../node_modules/@sinclair/typebox/build/cjs/type/create/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/error/error.js", "../node_modules/@sinclair/typebox/build/cjs/type/error/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.js", "../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.js", "../node_modules/@sinclair/typebox/build/cjs/type/guard/type.js", "../node_modules/@sinclair/typebox/build/cjs/type/guard/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.js", "../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.js", "../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/registry/format.js", "../node_modules/@sinclair/typebox/build/cjs/type/registry/type.js", "../node_modules/@sinclair/typebox/build/cjs/type/registry/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/sets/set.js", "../node_modules/@sinclair/typebox/build/cjs/type/sets/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/any/any.js", "../node_modules/@sinclair/typebox/build/cjs/type/any/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/array/array.js", "../node_modules/@sinclair/typebox/build/cjs/type/array/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.js", "../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/discard/discard.js", "../node_modules/@sinclair/typebox/build/cjs/type/discard/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/never/never.js", "../node_modules/@sinclair/typebox/build/cjs/type/never/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.js", "../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/function/function.js", "../node_modules/@sinclair/typebox/build/cjs/type/function/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/union/union-create.js", "../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.js", "../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.js", "../node_modules/@sinclair/typebox/build/cjs/type/union/union.js", "../node_modules/@sinclair/typebox/build/cjs/type/union/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.js", "../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.js", "../node_modules/@sinclair/typebox/build/cjs/type/literal/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.js", "../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.js", "../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/number/number.js", "../node_modules/@sinclair/typebox/build/cjs/type/number/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/string/string.js", "../node_modules/@sinclair/typebox/build/cjs/type/string/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.js", "../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.js", "../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.js", "../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.js", "../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/object/object.js", "../node_modules/@sinclair/typebox/build/cjs/type/object/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.js", "../node_modules/@sinclair/typebox/build/cjs/type/promise/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.js", "../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.js", "../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.js", "../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.js", "../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/optional/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-create.js", "../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.js", "../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.js", "../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.js", "../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.js", "../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.js", "../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.js", "../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.js", "../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.js", "../node_modules/@sinclair/typebox/build/cjs/type/composite/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/date/date.js", "../node_modules/@sinclair/typebox/build/cjs/type/date/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/null/null.js", "../node_modules/@sinclair/typebox/build/cjs/type/null/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.js", "../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.js", "../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.js", "../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.js", "../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/const/const.js", "../node_modules/@sinclair/typebox/build/cjs/type/const/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.js", "../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/deref/deref.js", "../node_modules/@sinclair/typebox/build/cjs/type/deref/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.js", "../node_modules/@sinclair/typebox/build/cjs/type/enum/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.js", "../node_modules/@sinclair/typebox/build/cjs/type/extends/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.js", "../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.js", "../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.js", "../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.js", "../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/extract/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.js", "../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.js", "../node_modules/@sinclair/typebox/build/cjs/type/integer/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.js", "../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/not/not.js", "../node_modules/@sinclair/typebox/build/cjs/type/not/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.js", "../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/omit/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.js", "../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.js", "../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/partial/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.js", "../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.js", "../node_modules/@sinclair/typebox/build/cjs/type/pick/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.js", "../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/record/record.js", "../node_modules/@sinclair/typebox/build/cjs/type/record/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.js", "../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.js", "../node_modules/@sinclair/typebox/build/cjs/type/ref/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.js", "../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/required/required.js", "../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.js", "../node_modules/@sinclair/typebox/build/cjs/type/required/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.js", "../node_modules/@sinclair/typebox/build/cjs/type/rest/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.js", "../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.js", "../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.js", "../node_modules/@sinclair/typebox/build/cjs/type/schema/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/static/static.js", "../node_modules/@sinclair/typebox/build/cjs/type/static/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/strict/strict.js", "../node_modules/@sinclair/typebox/build/cjs/type/strict/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.js", "../node_modules/@sinclair/typebox/build/cjs/type/transform/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.js", "../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/void/void.js", "../node_modules/@sinclair/typebox/build/cjs/type/void/index.js", "../node_modules/@sinclair/typebox/build/cjs/type/type/json.js", "../node_modules/@sinclair/typebox/build/cjs/type/type/type.js", "../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.js", "../node_modules/@sinclair/typebox/build/cjs/type/type/index.js", "../node_modules/@sinclair/typebox/build/cjs/index.js", "../node_modules/@sinclair/typebox/build/cjs/system/system.js", "../node_modules/@sinclair/typebox/build/cjs/system/index.js", "../node_modules/@sinclair/typebox/build/cjs/errors/function.js", "../node_modules/@sinclair/typebox/build/cjs/value/deref/deref.js", "../node_modules/@sinclair/typebox/build/cjs/value/deref/index.js", "../node_modules/@sinclair/typebox/build/cjs/value/hash/hash.js", "../node_modules/@sinclair/typebox/build/cjs/value/hash/index.js", "../node_modules/@sinclair/typebox/build/cjs/value/check/check.js", "../node_modules/@sinclair/typebox/build/cjs/value/check/index.js", "../node_modules/@sinclair/typebox/build/cjs/errors/errors.js", "../node_modules/@sinclair/typebox/build/cjs/errors/index.js", "../node_modules/ts-mixer/dist/cjs/util.js", "../node_modules/ts-mixer/dist/cjs/proxy.js", "../node_modules/ts-mixer/dist/cjs/settings.js", "../node_modules/ts-mixer/dist/cjs/mixin-tracking.js", "../node_modules/ts-mixer/dist/cjs/decorator.js", "../node_modules/ts-mixer/dist/cjs/mixins.js", "../node_modules/ts-mixer/dist/cjs/index.js", "../node_modules/@trezor/schema-utils/src/custom-types/array-buffer.ts", "../node_modules/@trezor/schema-utils/src/custom-types/buffer.ts", "../node_modules/@trezor/schema-utils/src/custom-types/keyof-enum.ts", "../node_modules/@trezor/schema-utils/src/custom-types/uint.ts", "../node_modules/@trezor/schema-utils/src/custom-types/index.ts", "../node_modules/@trezor/schema-utils/src/errors.ts", "../node_modules/@trezor/schema-utils/src/utils.ts", "../node_modules/@trezor/schema-utils/src/index.ts", "../node_modules/@trezor/connect/lib/constants/nem.js", "../node_modules/@trezor/connect/lib/constants/firmware.js", "../node_modules/@trezor/connect/lib/constants/utxo.js", "../node_modules/long/umd/index.js", "../node_modules/@protobufjs/aspromise/index.js", "../node_modules/@protobufjs/base64/index.js", "../node_modules/@protobufjs/eventemitter/index.js", "../node_modules/@protobufjs/float/index.js", "../node_modules/@protobufjs/inquire/index.js", "../node_modules/@protobufjs/utf8/index.js", "../node_modules/@protobufjs/pool/index.js", "../node_modules/protobufjs/src/util/longbits.js", "../node_modules/protobufjs/src/util/minimal.js", "../node_modules/protobufjs/src/writer.js", "../node_modules/protobufjs/src/writer_buffer.js", "../node_modules/protobufjs/src/reader.js", "../node_modules/protobufjs/src/reader_buffer.js", "../node_modules/protobufjs/src/rpc/service.js", "../node_modules/protobufjs/src/rpc.js", "../node_modules/protobufjs/src/roots.js", "../node_modules/protobufjs/src/index-minimal.js", "../node_modules/@protobufjs/codegen/index.js", "../node_modules/@protobufjs/fetch/index.js", "../node_modules/@protobufjs/path/index.js", "../node_modules/protobufjs/src/types.js", "../node_modules/protobufjs/src/field.js", "../node_modules/protobufjs/src/oneof.js", "../node_modules/protobufjs/src/namespace.js", "../node_modules/protobufjs/src/mapfield.js", "../node_modules/protobufjs/src/method.js", "../node_modules/protobufjs/src/service.js", "../node_modules/protobufjs/src/message.js", "../node_modules/protobufjs/src/decoder.js", "../node_modules/protobufjs/src/verifier.js", "../node_modules/protobufjs/src/converter.js", "../node_modules/protobufjs/src/wrappers.js", "../node_modules/protobufjs/src/type.js", "../node_modules/protobufjs/src/root.js", "../node_modules/protobufjs/src/util.js", "../node_modules/protobufjs/src/object.js", "../node_modules/protobufjs/src/enum.js", "../node_modules/protobufjs/src/encoder.js", "../node_modules/protobufjs/src/index-light.js", "../node_modules/protobufjs/light.js", "../node_modules/@trezor/protobuf/lib/utils.js", "../node_modules/@trezor/protobuf/lib/decode.js", "../node_modules/@trezor/protobuf/lib/encode.js", "../node_modules/@trezor/protobuf/lib/messages.js", "../node_modules/@trezor/protobuf/lib/load-definitions.js", "../node_modules/@trezor/protobuf/lib/messages-schema.js", "../node_modules/@trezor/protobuf/lib/index.js", "../node_modules/@trezor/connect/lib/constants/index.js", "../node_modules/@trezor/connect-common/lib/storage.js", "../node_modules/@trezor/connect-common/lib/messageChannel/abstract.js", "../node_modules/@trezor/connect-common/lib/messageChannel/window-window.js", "../node_modules/@trezor/connect-common/lib/messageChannel/serviceworker-window.js", "../node_modules/@trezor/connect-common/lib/messageChannel/window-serviceworker.js", "../node_modules/ua-parser-js/src/main/ua-parser.js", "../node_modules/@trezor/env-utils/lib/jws.js", "../node_modules/@trezor/env-utils/lib/envUtils.js", "../node_modules/@trezor/env-utils/lib/resolveStaticPath.js", "../node_modules/@trezor/env-utils/lib/index.js", "../node_modules/@trezor/connect-common/lib/systemInfo.js", "../node_modules/@trezor/connect-common/files/firmware/release/releases.v1.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.4-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.10.5-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.11.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.12.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.8.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/bitcoinonly/t1b1-1.9.4-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.10.5-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.11.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.12.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.13.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.3.6-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.4.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.5.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.6.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.7.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.8.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t1b1/universal/t1b1-1.9.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.6.4-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.7.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.10-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.7-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.8.9-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.6.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.7.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.10-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.8.9-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2b1/universal/t2b1-2.9.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.5-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.6-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.7-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.1.8-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.4-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.5-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.3.6-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.4.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.5.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.6.4-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.7.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.10-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.7-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.8-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.8.9-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.10-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.5-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.6-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.8-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.0.9-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.5-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.6-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.1.8-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.5-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.3.6-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.4.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.5.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.6.4-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.7.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.10-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.8-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.8.9-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t2t1/universal/t2t1-2.9.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.10-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.7-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.8.9-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.10-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.8.9-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3b1/universal/t3b1-2.9.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.7.2-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.0-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.10-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.7-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.8.9-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.7.2-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.0-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.10-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.3-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.7-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.8.9-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3t1/universal/t3t1-2.9.1-universal.json", "../node_modules/@trezor/connect-common/files/firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json", "../node_modules/@trezor/connect-common/files/firmware/t3w1/universal/t3w1-2.9.3-universal.json", "../node_modules/@trezor/connect-common/lib/map-releases.js", "../node_modules/@trezor/connect-common/lib/index.js", "../node_modules/@trezor/transport/lib/errors.js", "../node_modules/@trezor/transport/lib/constants.js", "../node_modules/@trezor/transport/lib/utils/result.js", "../node_modules/@trezor/transport/lib/transports/abstract.js", "../node_modules/@trezor/protocol/lib/errors.js", "../node_modules/@trezor/protocol/lib/protocol-v1/constants.js", "../node_modules/@trezor/protocol/lib/protocol-v1/decode.js", "../node_modules/@trezor/protocol/lib/protocol-v1/encode.js", "../node_modules/@trezor/protocol/lib/protocol-v1/index.js", "../node_modules/@trezor/protocol/lib/protocol-v2/constants.js", "../node_modules/@trezor/protocol/lib/protocol-thp/constants.js", "../node_modules/@trezor/protocol/lib/protocol-v2/encode.js", "../node_modules/@trezor/protocol/lib/protocol-v2/decode.js", "../node_modules/@trezor/protocol/lib/protocol-v2/index.js", "../node_modules/@trezor/protocol/lib/protocol-bridge/constants.js", "../node_modules/@trezor/protocol/lib/protocol-bridge/decode.js", "../node_modules/@trezor/protocol/lib/protocol-bridge/encode.js", "../node_modules/@trezor/protocol/lib/protocol-bridge/index.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/aesgcm.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/crc32.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/index.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/curve25519.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/tools.js", "../node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufDefinitions.js", "../node_modules/@trezor/protocol/lib/protocol-thp/messages/messageTypes.js", "../node_modules/@trezor/protocol/lib/protocol-thp/messages/protobufTypes.js", "../node_modules/@trezor/protocol/lib/protocol-thp/messages/index.js", "../node_modules/@trezor/protocol/lib/protocol-thp/crypto/pairing.js", "../node_modules/@trezor/protocol/lib/protocol-thp/utils.js", "../node_modules/@trezor/protocol/lib/protocol-thp/decode.js", "../node_modules/@trezor/protocol/lib/protocol-thp/encode.js", "../node_modules/@trezor/protocol/lib/protocol-thp/ThpState.js", "../node_modules/@trezor/protocol/lib/protocol-thp/index.js", "../node_modules/@trezor/protocol/lib/protocol-trzd/decode.js", "../node_modules/@trezor/protocol/lib/protocol-trzd/index.js", "../node_modules/@trezor/protocol/lib/protocol-tpn/constants.js", "../node_modules/@trezor/protocol/lib/protocol-tpn/decode.js", "../node_modules/@trezor/protocol/lib/protocol-tpn/index.js", "../node_modules/@trezor/protocol/lib/types.js", "../node_modules/@trezor/protocol/lib/index.js", "../node_modules/@trezor/transport/lib/types/apiCall.js", "../node_modules/@trezor/transport/lib/types/index.js", "../node_modules/@trezor/transport/lib/sessions/background.js", "../node_modules/@trezor/transport/lib/sessions/client.js", "../node_modules/@trezor/transport/lib/utils/readWithExpectedHeaders.js", "../node_modules/@trezor/transport/lib/utils/receive.js", "../node_modules/@trezor/transport/lib/thp/receive.js", "../node_modules/@trezor/transport/lib/utils/send.js", "../node_modules/@trezor/transport/lib/thp/send.js", "../node_modules/@trezor/transport/lib/thp/call.js", "../node_modules/@trezor/transport/lib/thp/index.js", "../node_modules/@trezor/transport/lib/transports/abstractApi.js", "../node_modules/@trezor/transport/lib/api/abstract.js", "../node_modules/@trezor/transport/lib/api/usb.js", "../node_modules/@trezor/transport/lib/utils/applyBridgeApiCallHeaders.js", "../node_modules/@trezor/transport/lib/pinger/pingCommon.js", "../node_modules/@trezor/transport/lib/pinger/ping.js", "../node_modules/webidl-conversions/lib/index.js", "../node_modules/whatwg-url/lib/utils.js", "../node_modules/tr46/lib/mappingTable.json", "../node_modules/tr46/index.js", "../node_modules/whatwg-url/lib/url-state-machine.js", "../node_modules/whatwg-url/lib/URL-impl.js", "../node_modules/whatwg-url/lib/URL.js", "../node_modules/whatwg-url/lib/public-api.js", "../../../../../node_modules/safer-buffer/safer.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/lib/bom-handling.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/internal.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf32.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf16.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/utf7.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp936.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp949.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/cp950.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/dbcs-data.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/encodings/index.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/lib/streams.js", "../../../../../node_modules/encoding/node_modules/iconv-lite/lib/index.js", "../../../../../node_modules/encoding/lib/encoding.js", "../node_modules/node-fetch/lib/index.js", "../node_modules/cross-fetch/dist/node-ponyfill.js", "../node_modules/@trezor/transport/lib/utils/bridgeApiCall.js", "../node_modules/@trezor/transport/lib/utils/bridgeProtocolMessage.js", "../node_modules/@trezor/transport/lib/utils/bridgeApiResult.js", "../node_modules/@trezor/transport/lib/transports/bridge.js", "../node_modules/@trezor/transport/lib/utils/resultEmpty.js", "../node_modules/@trezor/transport/lib/transports/webusb.js", "../node_modules/node-gyp-build/node-gyp-build.js", "../node_modules/node-gyp-build/index.js", "../node_modules/usb/tsc/usb/bindings.ts", "../node_modules/usb/tsc/usb/endpoint.ts", "../node_modules/usb/tsc/usb/interface.ts", "../node_modules/usb/tsc/usb/capability.ts", "../node_modules/usb/tsc/usb/device.ts", "../node_modules/usb/tsc/usb/index.ts", "../node_modules/usb/tsc/webusb/webusb-device.ts", "../node_modules/usb/tsc/webusb/index.ts", "../node_modules/usb/dist/usb/descriptors.js", "../node_modules/usb/tsc/index.ts", "../node_modules/@trezor/transport/lib/transports/nodeusb.js", "../node_modules/@trezor/transport/lib/utils/readMessageBuffer.js", "../node_modules/@trezor/transport/lib/api/udp.js", "../node_modules/@trezor/transport/lib/transports/udp.js", "../node_modules/@trezor/transport/lib/index.js", "../node_modules/@trezor/connect/lib/data/config.js", "../node_modules/@trezor/connect/lib/events/ui-request.js", "../node_modules/@trezor/connect/lib/events/ui-response.js", "../node_modules/@trezor/connect/lib/events/blockchain.js", "../node_modules/@trezor/connect/lib/events/call.js", "../node_modules/@trezor/connect/lib/events/core.js", "../node_modules/@trezor/connect/lib/events/device.js", "../node_modules/@trezor/connect/lib/events/iframe.js", "../node_modules/@trezor/connect/lib/events/popup.js", "../node_modules/@trezor/connect/lib/data/udevInfo.js", "../node_modules/@trezor/connect/lib/events/transport.js", "../node_modules/@trezor/connect/lib/events/ui-promise.js", "../node_modules/@trezor/connect/lib/events/webextension.js", "../node_modules/@trezor/connect/lib/events/index.js", "../node_modules/@trezor/connect/lib/utils/urlUtils.js", "../node_modules/@trezor/connect/lib/core/AbstractMethod.js", "../node_modules/@trezor/connect/lib/api/applyFlags.js", "../node_modules/@trezor/connect/lib/types/api/applySettings.js", "../node_modules/@trezor/connect/lib/api/applySettings.js", "../node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/src/utils.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/src/_md.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/src/_u64.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/hashes/src/sha2.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/utils.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/modular.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/curve.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/edwards.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/hash-to-curve.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/montgomery.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/abstract/oprf.ts", "../node_modules/@trezor/device-authenticity/node_modules/@noble/curves/src/ed25519.ts", "../node_modules/@trezor/crypto-utils/lib/bip39.js", "../node_modules/@trezor/crypto-utils/lib/getSubtleCrypto.js", "../node_modules/@trezor/crypto-utils/lib/index.js", "../node_modules/@trezor/device-authenticity/lib/utils.js", "../node_modules/@trezor/device-authenticity/lib/x509certificate.js", "../node_modules/@trezor/device-authenticity/lib/verifyAuthenticityProof.js", "../node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfig.js", "../node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityBlacklistConfigTypes.js", "../node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfig.js", "../node_modules/@trezor/device-authenticity/lib/config/deviceAuthenticityConfigTypes.js", "../node_modules/@trezor/device-authenticity/lib/index.js", "../node_modules/@trezor/connect/lib/utils/pathUtils.js", "../node_modules/@trezor/connect/lib/api/common/paramsValidator.js", "../node_modules/@trezor/connect/lib/types/api/authenticateDevice.js", "../node_modules/@trezor/connect/lib/api/authenticateDevice.js", "../node_modules/@trezor/connect/lib/data/defaultFeeLevels.js", "../node_modules/@trezor/connect/lib/data/coinInfo.js", "../node_modules/@trezor/connect/lib/types/params.js", "../node_modules/@trezor/connect/lib/types/api/authorizeCoinjoin.js", "../node_modules/@trezor/connect/lib/api/authorizeCoinjoin.js", "../node_modules/@trezor/connect/lib/types/api/cancelCoinjoinAuthorization.js", "../node_modules/@trezor/connect/lib/api/cancelCoinjoinAuthorization.js", "../node_modules/@trezor/connect/lib/api/showDeviceTutorial.js", "../node_modules/@trezor/connect/lib/api/backupDevice.js", "../node_modules/@trezor/connect/lib/api/bleUnpair.js", "../node_modules/@trezor/blockchain-link-types/lib/constants/messages.js", "../node_modules/@trezor/blockchain-link-types/lib/constants/responses.js", "../node_modules/@trezor/blockchain-link-types/lib/constants/index.js", "../node_modules/@trezor/blockchain-link-types/lib/constants/errors.js", "../node_modules/@trezor/blockchain-link/lib/index.js", "../node_modules/@trezor/blockchain-link-utils/lib/utils.js", "../node_modules/@trezor/blockchain-link-utils/lib/blockbook.js", "../node_modules/smart-buffer/src/utils.ts", "../node_modules/smart-buffer/src/smartbuffer.ts", "../node_modules/socks/src/common/constants.ts", "../node_modules/socks/src/common/util.ts", "../node_modules/ip-address/src/common.ts", "../node_modules/ip-address/src/v4/constants.ts", "../node_modules/ip-address/src/address-error.ts", "../node_modules/ip-address/src/ipv4.ts", "../node_modules/ip-address/src/v6/constants.ts", "../node_modules/ip-address/src/v6/helpers.ts", "../node_modules/ip-address/src/v6/regular-expressions.ts", "../node_modules/ip-address/src/ipv6.ts", "../node_modules/ip-address/src/ip-address.ts", "../node_modules/socks/src/common/helpers.ts", "../node_modules/socks/src/common/receivebuffer.ts", "../node_modules/socks/src/client/socksclient.ts", "../node_modules/socks/src/index.ts", "../node_modules/socks-proxy-agent/node_modules/agent-base/src/helpers.ts", "../node_modules/socks-proxy-agent/node_modules/agent-base/src/index.ts", "../node_modules/ms/index.js", "../node_modules/debug/src/common.js", "../node_modules/debug/src/browser.js", "../node_modules/has-flag/index.js", "../node_modules/supports-color/index.js", "../node_modules/debug/src/node.js", "../node_modules/debug/src/index.js", "../node_modules/socks-proxy-agent/src/index.ts", "../node_modules/@trezor/blockchain-link/lib/workers/state.js", "../node_modules/@trezor/blockchain-link/lib/workers/utils.js", "../node_modules/@trezor/blockchain-link/lib/workers/baseWorker.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/constants.js", "../node_modules/bufferutil/fallback.js", "../node_modules/bufferutil/index.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/buffer-util.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/limiter.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/permessage-deflate.js", "../node_modules/utf-8-validate/fallback.js", "../node_modules/utf-8-validate/index.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/validation.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/receiver.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/sender.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/event-target.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/extension.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/stream.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/subprotocol.js", "../node_modules/@trezor/websocket-client/node_modules/ws/lib/websocket-server.js", "../node_modules/@trezor/websocket-client/node_modules/ws/index.js", "../node_modules/@trezor/websocket-client/lib/client.js", "../node_modules/@trezor/websocket-client/lib/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/baseWebsocket.js", "../node_modules/@trezor/blockchain-link/lib/workers/blockbook/websocket.js", "../node_modules/@trezor/blockchain-link/lib/workers/blockbook/index.js", "../node_modules/xrpl/node_modules/eventemitter3/index.js", "../node_modules/xrpl/src/errors.ts", "../node_modules/xrpl/src/models/common/index.ts", "../node_modules/xrpl/src/models/ledger/AccountRoot.ts", "../node_modules/@noble/hashes/src/cryptoNode.ts", "../node_modules/@noble/hashes/src/utils.ts", "../node_modules/@xrplf/isomorphic/src/utils/shared.ts", "../node_modules/@xrplf/isomorphic/src/utils/index.ts", "../node_modules/@scure/base/index.ts", "../node_modules/@xrplf/isomorphic/src/internal/normalizeInput.ts", "../node_modules/@xrplf/isomorphic/src/internal/wrapCryptoCreateHash.ts", "../node_modules/@xrplf/isomorphic/src/sha256/index.ts", "../node_modules/ripple-address-codec/src/utils.ts", "../node_modules/ripple-address-codec/src/xrp-codec.ts", "../node_modules/ripple-address-codec/src/index.ts", "../node_modules/ripple-binary-codec/dist/enums/definitions.json", "../node_modules/ripple-binary-codec/src/enums/bytes.ts", "../node_modules/ripple-binary-codec/src/serdes/binary-serializer.ts", "../node_modules/ripple-binary-codec/src/types/serialized-type.ts", "../node_modules/ripple-binary-codec/src/enums/constants.ts", "../node_modules/ripple-binary-codec/src/enums/field.ts", "../node_modules/ripple-binary-codec/src/enums/xrpl-definitions-base.ts", "../node_modules/ripple-binary-codec/src/enums/index.ts", "../node_modules/ripple-binary-codec/src/utils.ts", "../node_modules/ripple-binary-codec/src/types/hash.ts", "../node_modules/ripple-binary-codec/src/types/hash-160.ts", "../node_modules/ripple-binary-codec/src/types/account-id.ts", "../node_modules/ripple-binary-codec/src/serdes/binary-parser.ts", "../node_modules/ripple-binary-codec/src/types/currency.ts", "../node_modules/ripple-binary-codec/src/types/hash-192.ts", "../node_modules/ripple-binary-codec/src/types/amount.ts", "../node_modules/ripple-binary-codec/src/types/blob.ts", "../node_modules/ripple-binary-codec/src/types/hash-128.ts", "../node_modules/ripple-binary-codec/src/types/hash-256.ts", "../node_modules/ripple-binary-codec/src/types/issue.ts", "../node_modules/ripple-binary-codec/src/types/st-number.ts", "../node_modules/ripple-binary-codec/src/types/path-set.ts", "../node_modules/ripple-binary-codec/src/types/uint.ts", "../node_modules/ripple-binary-codec/src/types/uint-64.ts", "../node_modules/ripple-binary-codec/src/types/st-object.ts", "../node_modules/ripple-binary-codec/src/types/st-array.ts", "../node_modules/ripple-binary-codec/src/types/uint-16.ts", "../node_modules/ripple-binary-codec/src/types/uint-32.ts", "../node_modules/ripple-binary-codec/src/types/uint-8.ts", "../node_modules/ripple-binary-codec/src/types/vector-256.ts", "../node_modules/ripple-binary-codec/src/types/xchain-bridge.ts", "../node_modules/ripple-binary-codec/src/types/index.ts", "../node_modules/ripple-binary-codec/src/hash-prefixes.ts", "../node_modules/@xrplf/isomorphic/src/sha512/index.ts", "../node_modules/ripple-binary-codec/src/hashes.ts", "../node_modules/ripple-binary-codec/src/binary.ts", "../node_modules/ripple-binary-codec/src/shamap.ts", "../node_modules/ripple-binary-codec/src/ledger-hashes.ts", "../node_modules/ripple-binary-codec/src/quality.ts", "../node_modules/ripple-binary-codec/src/coretypes.ts", "../node_modules/ripple-binary-codec/src/enums/xrpl-definitions.ts", "../node_modules/ripple-binary-codec/src/index.ts", "../node_modules/xrpl/src/models/utils/index.ts", "../node_modules/xrpl/src/models/transactions/common.ts", "../node_modules/xrpl/src/models/transactions/accountSet.ts", "../node_modules/xrpl/src/models/transactions/AMMClawback.ts", "../node_modules/xrpl/src/models/transactions/AMMDeposit.ts", "../node_modules/xrpl/src/models/transactions/AMMWithdraw.ts", "../node_modules/xrpl/src/models/transactions/batch.ts", "../node_modules/xrpl/src/models/transactions/MPTokenAuthorize.ts", "../node_modules/fast-json-stable-stringify/index.js", "../node_modules/xrpl/src/models/utils/mptokenMetadata.ts", "../node_modules/xrpl/src/models/transactions/MPTokenIssuanceCreate.ts", "../node_modules/xrpl/src/models/transactions/MPTokenIssuanceSet.ts", "../node_modules/xrpl/src/models/transactions/NFTokenCreateOffer.ts", "../node_modules/xrpl/src/models/transactions/NFTokenMint.ts", "../node_modules/xrpl/src/models/transactions/offerCreate.ts", "../node_modules/xrpl/src/models/transactions/payment.ts", "../node_modules/xrpl/src/models/transactions/paymentChannelClaim.ts", "../node_modules/xrpl/src/models/transactions/trustSet.ts", "../node_modules/xrpl/src/models/transactions/vaultCreate.ts", "../node_modules/xrpl/src/models/transactions/XChainModifyBridge.ts", "../node_modules/xrpl/src/models/utils/flags.ts", "../node_modules/@xrplf/isomorphic/src/ripemd160/index.ts", "../node_modules/@noble/hashes/src/_md.ts", "../node_modules/@noble/hashes/src/_u64.ts", "../node_modules/@noble/hashes/src/sha2.ts", "../node_modules/@noble/hashes/src/hmac.ts", "../node_modules/@noble/curves/src/utils.ts", "../node_modules/@noble/curves/src/abstract/modular.ts", "../node_modules/@noble/curves/src/abstract/curve.ts", "../node_modules/@noble/curves/src/abstract/weierstrass.ts", "../node_modules/@noble/curves/src/_shortw_utils.ts", "../node_modules/@noble/curves/src/abstract/hash-to-curve.ts", "../node_modules/@noble/curves/src/secp256k1.ts", "../node_modules/@noble/curves/src/abstract/utils.ts", "../node_modules/ripple-keypairs/src/utils/Sha512.ts", "../node_modules/ripple-keypairs/src/signing-schemes/secp256k1/utils.ts", "../node_modules/ripple-keypairs/src/utils/assert.ts", "../node_modules/ripple-keypairs/src/utils/getAlgorithmFromKey.ts", "../node_modules/ripple-keypairs/src/signing-schemes/secp256k1/index.ts", "../node_modules/@noble/curves/src/abstract/edwards.ts", "../node_modules/@noble/curves/src/abstract/montgomery.ts", "../node_modules/@noble/curves/src/ed25519.ts", "../node_modules/ripple-keypairs/src/signing-schemes/ed25519/index.ts", "../node_modules/ripple-keypairs/src/index.ts", "../node_modules/xrpl/src/utils/derive.ts", "../node_modules/xrpl/src/utils/collections.ts", "../node_modules/xrpl/src/utils/xrpConversion.ts", "../node_modules/xrpl/src/utils/getBalanceChanges.ts", "../node_modules/xrpl/src/models/transactions/metadata.ts", "../node_modules/xrpl/src/utils/getNFTokenID.ts", "../node_modules/xrpl/src/utils/getXChainClaimID.ts", "../node_modules/xrpl/src/utils/hashes/HashPrefix.ts", "../node_modules/xrpl/src/utils/hashes/sha512Half.ts", "../node_modules/xrpl/src/utils/hashes/SHAMap/node.ts", "../node_modules/xrpl/src/utils/hashes/SHAMap/LeafNode.ts", "../node_modules/xrpl/src/utils/hashes/SHAMap/InnerNode.ts", "../node_modules/xrpl/src/utils/hashes/SHAMap/index.ts", "../node_modules/xrpl/src/utils/hashes/hashLedger.ts", "../node_modules/xrpl/src/utils/hashes/ledgerSpaces.ts", "../node_modules/xrpl/src/utils/hashes/index.ts", "../node_modules/xrpl/src/utils/parseNFTokenID.ts", "../node_modules/xrpl/src/utils/quality.ts", "../node_modules/xrpl/src/utils/signPaymentChannelClaim.ts", "../node_modules/xrpl/src/utils/stringConversion.ts", "../node_modules/xrpl/src/utils/timeConversion.ts", "../node_modules/xrpl/src/utils/verifyPaymentChannelClaim.ts", "../node_modules/xrpl/src/utils/index.ts", "../node_modules/xrpl/src/sugar/submit.ts", "../node_modules/xrpl/src/sugar/utils.ts", "../node_modules/xrpl/src/sugar/index.ts", "../node_modules/xrpl/src/sugar/getFeeXrp.ts", "../node_modules/xrpl/src/sugar/autofill.ts", "../node_modules/xrpl/src/sugar/balances.ts", "../node_modules/xrpl/src/models/ledger/Offer.ts", "../node_modules/xrpl/src/sugar/getOrderbook.ts", "../node_modules/@noble/hashes/src/legacy.ts", "../node_modules/@scure/bip32/index.ts", "../node_modules/@noble/hashes/src/pbkdf2.ts", "../node_modules/@scure/bip39/index.js", "../node_modules/@scure/bip39/wordlists/english.js", "../node_modules/xrpl/src/ECDSA.ts", "../node_modules/xrpl/src/models/transactions/accountDelete.ts", "../node_modules/xrpl/src/models/transactions/AMMBid.ts", "../node_modules/xrpl/src/models/transactions/AMMCreate.ts", "../node_modules/xrpl/src/models/transactions/AMMDelete.ts", "../node_modules/xrpl/src/models/transactions/AMMVote.ts", "../node_modules/xrpl/src/models/transactions/checkCancel.ts", "../node_modules/xrpl/src/models/transactions/checkCash.ts", "../node_modules/xrpl/src/models/transactions/checkCreate.ts", "../node_modules/xrpl/src/models/transactions/clawback.ts", "../node_modules/xrpl/src/models/transactions/CredentialAccept.ts", "../node_modules/xrpl/src/models/transactions/CredentialCreate.ts", "../node_modules/xrpl/src/models/transactions/CredentialDelete.ts", "../node_modules/xrpl/src/models/transactions/delegateSet.ts", "../node_modules/xrpl/src/models/transactions/depositPreauth.ts", "../node_modules/xrpl/src/models/transactions/DIDDelete.ts", "../node_modules/xrpl/src/models/transactions/DIDSet.ts", "../node_modules/xrpl/src/models/transactions/escrowCancel.ts", "../node_modules/xrpl/src/models/transactions/escrowCreate.ts", "../node_modules/xrpl/src/models/transactions/escrowFinish.ts", "../node_modules/xrpl/src/models/transactions/MPTokenIssuanceDestroy.ts", "../node_modules/xrpl/src/models/transactions/NFTokenAcceptOffer.ts", "../node_modules/xrpl/src/models/transactions/NFTokenBurn.ts", "../node_modules/xrpl/src/models/transactions/NFTokenCancelOffer.ts", "../node_modules/xrpl/src/models/transactions/NFTokenModify.ts", "../node_modules/xrpl/src/models/transactions/offerCancel.ts", "../node_modules/xrpl/src/models/transactions/oracleDelete.ts", "../node_modules/xrpl/src/models/transactions/oracleSet.ts", "../node_modules/xrpl/src/models/transactions/paymentChannelCreate.ts", "../node_modules/xrpl/src/models/transactions/paymentChannelFund.ts", "../node_modules/xrpl/src/models/transactions/permissionedDomainDelete.ts", "../node_modules/xrpl/src/models/transactions/permissionedDomainSet.ts", "../node_modules/xrpl/src/models/transactions/setRegularKey.ts", "../node_modules/xrpl/src/models/transactions/signerListSet.ts", "../node_modules/xrpl/src/models/transactions/ticketCreate.ts", "../node_modules/xrpl/src/models/transactions/vaultClawback.ts", "../node_modules/xrpl/src/models/transactions/vaultDelete.ts", "../node_modules/xrpl/src/models/transactions/vaultDeposit.ts", "../node_modules/xrpl/src/models/transactions/vaultSet.ts", "../node_modules/xrpl/src/models/transactions/vaultWithdraw.ts", "../node_modules/xrpl/src/models/transactions/XChainAccountCreateCommit.ts", "../node_modules/xrpl/src/models/transactions/XChainAddAccountCreateAttestation.ts", "../node_modules/xrpl/src/models/transactions/XChainAddClaimAttestation.ts", "../node_modules/xrpl/src/models/transactions/XChainClaim.ts", "../node_modules/xrpl/src/models/transactions/XChainCommit.ts", "../node_modules/xrpl/src/models/transactions/XChainCreateBridge.ts", "../node_modules/xrpl/src/models/transactions/XChainCreateClaimID.ts", "../node_modules/xrpl/src/models/transactions/transaction.ts", "../node_modules/xrpl/src/models/transactions/enableAmendment.ts", "../node_modules/xrpl/src/models/transactions/index.ts", "../node_modules/xrpl/dist/npm/Wallet/rfc1751Words.json", "../node_modules/xrpl/src/Wallet/rfc1751.ts", "../node_modules/xrpl/src/Wallet/utils.ts", "../node_modules/xrpl/src/Wallet/signer.ts", "../node_modules/xrpl/src/Wallet/index.ts", "../node_modules/xrpl/src/Wallet/defaultFaucets.ts", "../node_modules/xrpl/src/Wallet/fundWallet.ts", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/constants.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/buffer-util.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/limiter.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/permessage-deflate.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/validation.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/receiver.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/sender.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/event-target.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/extension.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/stream.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/subprotocol.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/lib/websocket-server.js", "../node_modules/@xrplf/isomorphic/node_modules/ws/index.js", "../node_modules/@xrplf/isomorphic/src/ws/index.ts", "../node_modules/xrpl/src/client/ConnectionManager.ts", "../node_modules/xrpl/src/client/ExponentialBackoff.ts", "../node_modules/xrpl/src/client/RequestManager.ts", "../node_modules/xrpl/src/client/connection.ts", "../node_modules/xrpl/src/client/partialPayment.ts", "../node_modules/xrpl/src/client/index.ts", "../node_modules/xrpl/src/models/ledger/Amendments.ts", "../node_modules/xrpl/src/models/ledger/FeeSettings.ts", "../node_modules/xrpl/src/models/ledger/NegativeUNL.ts", "../node_modules/xrpl/src/models/ledger/RippleState.ts", "../node_modules/xrpl/src/models/ledger/SignerList.ts", "../node_modules/xrpl/src/models/ledger/Vault.ts", "../node_modules/xrpl/src/models/ledger/index.ts", "../node_modules/xrpl/dist/npm/models/methods/index.js", "../node_modules/xrpl/src/models/index.ts", "../node_modules/@xrplf/secret-numbers/src/utils/index.ts", "../node_modules/@xrplf/secret-numbers/src/schema/Account.ts", "../node_modules/@xrplf/secret-numbers/src/index.ts", "../node_modules/xrpl/src/Wallet/walletFromSecretNumbers.ts", "../node_modules/xrpl/src/Wallet/batchSigner.ts", "../node_modules/xrpl/src/index.ts", "../node_modules/@trezor/blockchain-link-utils/lib/ripple.js", "../node_modules/@trezor/blockchain-link/lib/workers/ripple/index.js", "../node_modules/@trezor/blockchain-link-utils/lib/blockfrost.js", "../node_modules/@trezor/blockchain-link/lib/workers/blockfrost/websocket.js", "../node_modules/@trezor/blockchain-link/lib/workers/blockfrost/index.js", "../node_modules/@trezor/utxo-lib/node_modules/bech32/dist/index.js", "../node_modules/base-x/src/cjs/index.cjs", "../node_modules/bs58/src/cjs/index.cjs", "../node_modules/@noble/hashes/src/sha256.ts", "../node_modules/bs58check/src/cjs/base.cjs", "../node_modules/bs58check/src/cjs/index.cjs", "../node_modules/cashaddrjs/src/validation.js", "../node_modules/cashaddrjs/src/base32.js", "../node_modules/big-integer/BigInteger.js", "../node_modules/cashaddrjs/src/convertBits.js", "../node_modules/cashaddrjs/src/cashaddr.js", "../node_modules/@trezor/utxo-lib/lib/bchUtils.js", "../node_modules/readable-stream/lib/internal/streams/stream.js", "../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../node_modules/readable-stream/lib/internal/streams/destroy.js", "../node_modules/readable-stream/errors.js", "../node_modules/readable-stream/lib/internal/streams/state.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/inherits/inherits.js", "../node_modules/util-deprecate/node.js", "../node_modules/readable-stream/lib/_stream_writable.js", "../node_modules/readable-stream/lib/_stream_duplex.js", "../node_modules/safe-buffer/index.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../node_modules/readable-stream/lib/internal/streams/from.js", "../node_modules/readable-stream/lib/_stream_readable.js", "../node_modules/readable-stream/lib/_stream_transform.js", "../node_modules/readable-stream/lib/_stream_passthrough.js", "../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../node_modules/readable-stream/readable.js", "../node_modules/blake-hash/lib/api/blake.js", "../node_modules/blake-hash/lib/api/index.js", "../node_modules/blake-hash/bindings.js", "../node_modules/blake-hash/lib/blake.js", "../node_modules/blake-hash/lib/blake256.js", "../node_modules/blake-hash/lib/blake224.js", "../node_modules/blake-hash/lib/blake512.js", "../node_modules/blake-hash/lib/blake384.js", "../node_modules/blake-hash/lib/index.js", "../node_modules/blake-hash/js.js", "../node_modules/blake-hash/index.js", "../node_modules/create-hmac/index.js", "../node_modules/@trezor/utxo-lib/lib/crypto.js", "../node_modules/typeforce/native.js", "../node_modules/typeforce/errors.js", "../node_modules/typeforce/extra.js", "../node_modules/typeforce/index.js", "../node_modules/@trezor/utxo-lib/lib/types/typeforce.js", "../node_modules/@trezor/utxo-lib/lib/networks.js", "../node_modules/@trezor/utxo-lib/lib/bs58check.js", "../node_modules/bip66/src/cjs/index.cjs", "../node_modules/bitcoin-ops/index.json", "../node_modules/pushdata-bitcoin/index.js", "../node_modules/file-uri-to-path/index.js", "../node_modules/bindings/bindings.js", "../node_modules/tiny-secp256k1/native.js", "../node_modules/bn.js/lib/bn.js", "../node_modules/elliptic/package.json", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/tiny-secp256k1/rfc6979.js", "../node_modules/tiny-secp256k1/js.js", "../node_modules/tiny-secp256k1/index.js", "../node_modules/@trezor/utxo-lib/lib/script/ops.js", "../node_modules/@trezor/utxo-lib/lib/script/scriptNumber.js", "../node_modules/@trezor/utxo-lib/lib/types/coinselect.js", "../node_modules/@trezor/utxo-lib/lib/types/compose.js", "../node_modules/@trezor/utxo-lib/lib/types/payments.js", "../node_modules/@trezor/utxo-lib/lib/types/index.js", "../node_modules/@trezor/utxo-lib/lib/script/scriptSignature.js", "../node_modules/@trezor/utxo-lib/lib/script/index.js", "../node_modules/@trezor/utxo-lib/lib/payments/lazy.js", "../node_modules/@trezor/utxo-lib/lib/payments/embed.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2ms.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2pk.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2pkh.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2sh.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2tr.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2wpkh.js", "../node_modules/@trezor/utxo-lib/lib/payments/p2wsh.js", "../node_modules/@trezor/utxo-lib/lib/payments/sstxchange.js", "../node_modules/@trezor/utxo-lib/node_modules/bn.js/lib/bn.js", "../node_modules/int64-buffer/int64-buffer.js", "../node_modules/uint8array-tools/src/mjs/index.js", "../node_modules/varuint-bitcoin/src/cjs/index.cjs", "../node_modules/@trezor/utxo-lib/lib/bufferutils.js", "../node_modules/@trezor/utxo-lib/lib/payments/sstxcommitment.js", "../node_modules/@trezor/utxo-lib/lib/payments/sstxpkh.js", "../node_modules/@trezor/utxo-lib/lib/payments/sstxsh.js", "../node_modules/@trezor/utxo-lib/lib/payments/index.js", "../node_modules/@trezor/utxo-lib/lib/address.js", "../node_modules/wif/src/cjs/index.cjs", "../node_modules/@trezor/utxo-lib/lib/bip32.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/coinselectUtils.js", "../node_modules/@trezor/utxo-lib/lib/compose/request.js", "../node_modules/@trezor/utxo-lib/lib/compose/sorting/convertOutput.js", "../node_modules/@trezor/utxo-lib/lib/compose/sorting/bip69SortingStrategy.js", "../node_modules/@trezor/utxo-lib/lib/compose/sorting/noneSortingStrategy.js", "../node_modules/@trezor/utxo-lib/lib/compose/sorting/randomSortingStrategy.js", "../node_modules/@trezor/utxo-lib/lib/compose/transaction.js", "../node_modules/@trezor/utxo-lib/lib/compose/result.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/inputs/accumulative.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/inputs/branchAndBound.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/outputs/split.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/tryconfirmed.js", "../node_modules/@trezor/utxo-lib/lib/coinselect/index.js", "../node_modules/@trezor/utxo-lib/lib/compose/index.js", "../node_modules/@trezor/utxo-lib/lib/derivation.js", "../node_modules/@trezor/utxo-lib/lib/discovery.js", "../node_modules/@trezor/utxo-lib/lib/transaction/base.js", "../node_modules/@trezor/utxo-lib/lib/transaction/bitcoin.js", "../node_modules/@trezor/utxo-lib/lib/transaction/dash.js", "../node_modules/@trezor/utxo-lib/lib/transaction/decred.js", "../node_modules/@trezor/utxo-lib/lib/transaction/peercoin.js", "../node_modules/blakejs/util.js", "../node_modules/blakejs/blake2b.js", "../node_modules/blakejs/blake2s.js", "../node_modules/blakejs/index.js", "../node_modules/@trezor/utxo-lib/lib/transaction/zcash.js", "../node_modules/@trezor/utxo-lib/lib/transaction/index.js", "../node_modules/@trezor/utxo-lib/lib/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/client/json-rpc.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/client/batching.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/client/electrum.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/client/caching.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transform.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/addressManager.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/discovery.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/transaction.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/utils/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/blockListener.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/txListener.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/listeners/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/estimateFee.js", "../node_modules/@mobily/ts-belt/dist/cjs/pipe.js", "../node_modules/@mobily/ts-belt/dist/cjs/flow.js", "../node_modules/@mobily/ts-belt/dist/cjs/Function/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Array/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Result/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Guards/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Option/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/String/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Dict/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Bool/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/Number/index.js", "../node_modules/@mobily/ts-belt/dist/cjs/index.js", "../node_modules/@trezor/blockchain-link-utils/lib/solana.js", "../node_modules/@trezor/blockchain-link-utils/lib/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountBalanceHistory.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountInfo.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getAccountUtxo.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getBlockHash.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getInfo.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/getTransaction.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/pushTransaction.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/methods/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/base.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tcp.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tls.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/tor.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/sockets/index.js", "../node_modules/@trezor/blockchain-link/lib/workers/electrum/index.js", "../node_modules/@solana/errors/src/codes.ts", "../node_modules/@solana/errors/src/context.ts", "../node_modules/@solana/errors/src/messages.ts", "../node_modules/@solana/errors/src/message-formatter.ts", "../node_modules/@solana/errors/src/error.ts", "../node_modules/@solana/errors/src/stack-trace.ts", "../node_modules/@solana/errors/src/rpc-enum-errors.ts", "../node_modules/@solana/errors/src/instruction-error.ts", "../node_modules/@solana/errors/src/transaction-error.ts", "../node_modules/@solana/errors/src/json-rpc-error.ts", "../node_modules/@solana/codecs-core/src/bytes.ts", "../node_modules/@solana/codecs-core/src/codec.ts", "../node_modules/@solana/codecs-core/src/combine-codec.ts", "../node_modules/@solana/codecs-core/src/add-codec-sentinel.ts", "../node_modules/@solana/codecs-core/src/assertions.ts", "../node_modules/@solana/codecs-core/src/add-codec-size-prefix.ts", "../node_modules/@solana/codecs-core/src/fix-codec-size.ts", "../node_modules/@solana/codecs-core/src/offset-codec.ts", "../node_modules/@solana/codecs-core/src/resize-codec.ts", "../node_modules/@solana/codecs-core/src/pad-codec.ts", "../node_modules/@solana/codecs-core/src/reverse-codec.ts", "../node_modules/@solana/codecs-core/src/transform-codec.ts", "../node_modules/@solana/codecs-strings/src/assertions.ts", "../node_modules/@solana/codecs-strings/src/baseX.ts", "../node_modules/@solana/codecs-strings/src/base10.ts", "../node_modules/@solana/codecs-strings/src/base16.ts", "../node_modules/@solana/codecs-strings/src/base58.ts", "../node_modules/@solana/codecs-strings/src/baseX-reslice.ts", "../node_modules/@solana/codecs-strings/src/base64.ts", "../node_modules/@solana/codecs-strings/src/null-characters.ts", "../node_modules/@solana/text-encoding-impl/src/index.node.ts", "../node_modules/@solana/codecs-strings/src/utf8.ts", "../node_modules/@solana/accounts/src/account.ts", "../node_modules/@solana/accounts/src/decode-account.ts", "../node_modules/@solana/accounts/src/parse-account.ts", "../node_modules/@solana/accounts/src/fetch-account.ts", "../node_modules/@solana/accounts/src/maybe-account.ts", "../node_modules/@solana/assertions/src/crypto.ts", "../node_modules/@solana/assertions/src/subtle-crypto.ts", "../node_modules/@solana/addresses/src/address.ts", "../node_modules/@solana/addresses/src/vendor/noble/ed25519.ts", "../node_modules/@solana/addresses/src/curve-internal.ts", "../node_modules/@solana/addresses/src/curve.ts", "../node_modules/@solana/addresses/src/program-derived-address.ts", "../node_modules/@solana/addresses/src/public-key.ts", "../node_modules/@solana/codecs-numbers/src/assertions.ts", "../node_modules/@solana/codecs-numbers/src/common.ts", "../node_modules/@solana/codecs-numbers/src/utils.ts", "../node_modules/@solana/codecs-numbers/src/f32.ts", "../node_modules/@solana/codecs-numbers/src/f64.ts", "../node_modules/@solana/codecs-numbers/src/i128.ts", "../node_modules/@solana/codecs-numbers/src/i16.ts", "../node_modules/@solana/codecs-numbers/src/i32.ts", "../node_modules/@solana/codecs-numbers/src/i64.ts", "../node_modules/@solana/codecs-numbers/src/i8.ts", "../node_modules/@solana/codecs-numbers/src/short-u16.ts", "../node_modules/@solana/codecs-numbers/src/u128.ts", "../node_modules/@solana/codecs-numbers/src/u16.ts", "../node_modules/@solana/codecs-numbers/src/u32.ts", "../node_modules/@solana/codecs-numbers/src/u64.ts", "../node_modules/@solana/codecs-numbers/src/u8.ts", "../node_modules/@solana/codecs-data-structures/src/assertions.ts", "../node_modules/@solana/codecs-data-structures/src/utils.ts", "../node_modules/@solana/codecs-data-structures/src/array.ts", "../node_modules/@solana/codecs-data-structures/src/bit-array.ts", "../node_modules/@solana/codecs-data-structures/src/boolean.ts", "../node_modules/@solana/codecs-data-structures/src/bytes.ts", "../node_modules/@solana/codecs-strings/src/base16.ts", "../node_modules/@solana/codecs-data-structures/src/constant.ts", "../node_modules/@solana/codecs-data-structures/src/tuple.ts", "../node_modules/@solana/codecs-data-structures/src/union.ts", "../node_modules/@solana/codecs-data-structures/src/discriminated-union.ts", "../node_modules/@solana/codecs-data-structures/src/enum-helpers.ts", "../node_modules/@solana/codecs-data-structures/src/enum.ts", "../node_modules/@solana/codecs-data-structures/src/hidden-prefix.ts", "../node_modules/@solana/codecs-data-structures/src/hidden-suffix.ts", "../node_modules/@solana/codecs-data-structures/src/literal-union.ts", "../node_modules/@solana/codecs-data-structures/src/map.ts", "../node_modules/@solana/codecs-data-structures/src/unit.ts", "../node_modules/@solana/codecs-data-structures/src/nullable.ts", "../node_modules/@solana/codecs-data-structures/src/set.ts", "../node_modules/@solana/codecs-data-structures/src/struct.ts", "../node_modules/@solana/options/src/option.ts", "../node_modules/@solana/options/src/unwrap-option.ts", "../node_modules/@solana/options/src/option-codec.ts", "../node_modules/@solana/options/src/unwrap-option-recursively.ts", "../node_modules/@solana/codecs/dist/index.node.cjs", "../node_modules/@solana/functional/src/pipe.ts", "../node_modules/@solana/instructions/src/instruction.ts", "../node_modules/@solana/instructions/src/roles.ts", "../node_modules/@solana/keys/src/algorithm.ts", "../node_modules/@solana/keys/src/private-key.ts", "../node_modules/@solana/keys/src/public-key.ts", "../node_modules/@solana/keys/src/signatures.ts", "../node_modules/@solana/keys/src/key-pair.ts", "../node_modules/@solana/programs/src/program-error.ts", "../node_modules/@solana/rpc-spec-types/src/parse-json-with-bigints.ts", "../node_modules/@solana/rpc-spec-types/src/rpc-message.ts", "../node_modules/@solana/rpc-spec-types/src/stringify-json-with-bigints.ts", "../node_modules/@solana/rpc-spec/src/rpc.ts", "../node_modules/@solana/rpc-spec/src/rpc-api.ts", "../node_modules/@solana/rpc-spec/src/rpc-transport.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-bigint-downcast-internal.ts", "../node_modules/@solana/rpc-transformers/src/tree-traversal.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-bigint-downcast.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-default-commitment-internal.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-default-commitment.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-integer-overflow-internal.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-integer-overflow.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer-options-object-position-config.ts", "../node_modules/@solana/rpc-transformers/src/request-transformer.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer-bigint-upcast-internal.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer-bigint-upcast.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer-result.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer-throw-solana-error.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer.ts", "../node_modules/@solana/rpc-transformers/src/response-transformer-allowed-numeric-values.ts", "../node_modules/@solana/rpc-api/src/index.ts", "../node_modules/@solana/rpc-transport-http/src/http-transport-headers.ts", "../node_modules/@solana/rpc-transport-http/src/http-transport.ts", "../node_modules/@solana/rpc-transport-http/src/is-solana-request.ts", "../node_modules/@solana/rpc-transport-http/src/http-transport-for-solana-rpc.ts", "../node_modules/@solana/fast-stable-stringify/src/index.ts", "../node_modules/@solana/rpc/src/rpc-integer-overflow-error.ts", "../node_modules/@solana/rpc/src/rpc-default-config.ts", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/rpc/src/rpc-request-coalescer.ts", "../node_modules/@solana/rpc/src/rpc-request-deduplication.ts", "../node_modules/@solana/rpc/src/rpc-transport.ts", "../node_modules/@solana/rpc/src/rpc.ts", "../node_modules/@solana/rpc-parsed-types/dist/index.node.cjs", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/subscribable/src/async-iterable.ts", "../node_modules/@solana/subscribable/src/data-publisher.ts", "../node_modules/@solana/subscribable/src/demultiplex.ts", "../node_modules/@solana/promises/src/race.ts", "../node_modules/@solana/promises/src/abortable.ts", "../node_modules/@solana/rpc-subscriptions-spec/src/rpc-subscriptions.ts", "../node_modules/@solana/rpc-subscriptions-spec/src/rpc-subscriptions-api.ts", "../node_modules/@solana/rpc-subscriptions-spec/src/rpc-subscriptions-channel.ts", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/rpc-subscriptions-spec/src/rpc-subscriptions-pubsub-plan.ts", "../node_modules/@solana/rpc-subscriptions-api/src/index.ts", "../node_modules/ws/lib/constants.js", "../node_modules/ws/lib/buffer-util.js", "../node_modules/ws/lib/limiter.js", "../node_modules/ws/lib/permessage-deflate.js", "../node_modules/ws/lib/validation.js", "../node_modules/ws/lib/receiver.js", "../node_modules/ws/lib/sender.js", "../node_modules/ws/lib/event-target.js", "../node_modules/ws/lib/extension.js", "../node_modules/ws/lib/websocket.js", "../node_modules/ws/lib/stream.js", "../node_modules/ws/lib/subprotocol.js", "../node_modules/ws/lib/websocket-server.js", "../node_modules/ws/index.js", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/ws-impl/src/index.node.ts", "../node_modules/@solana/rpc-subscriptions-channel-websocket/src/websocket-channel.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-integer-overflow-error.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-default-config.ts", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-autopinger.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-channel-pool-internal.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-channel-pool.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-json.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-json-bigint.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-channel.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-coalescer.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions-transport.ts", "../node_modules/@solana/rpc-subscriptions/src/rpc-subscriptions.ts", "../node_modules/@solana/rpc-types/src/blockhash.ts", "../node_modules/@solana/rpc-types/src/cluster-url.ts", "../node_modules/@solana/rpc-types/src/commitment.ts", "../node_modules/@solana/rpc-types/src/lamports.ts", "../node_modules/@solana/rpc-types/src/stringified-bigint.ts", "../node_modules/@solana/rpc-types/src/stringified-number.ts", "../node_modules/@solana/rpc-types/src/unix-timestamp.ts", "../node_modules/@solana/transaction-messages/src/blockhash.ts", "../node_modules/@solana/codecs-strings/src/assertions.ts", "../node_modules/@solana/codecs-strings/src/baseX.ts", "../node_modules/@solana/codecs-strings/src/base58.ts", "../node_modules/@solana/transaction-messages/src/codecs/address-table-lookup.ts", "../node_modules/@solana/transaction-messages/src/codecs/header.ts", "../node_modules/@solana/transaction-messages/src/codecs/instruction.ts", "../node_modules/@solana/transaction-messages/src/codecs/transaction-version.ts", "../node_modules/@solana/transaction-messages/src/codecs/message.ts", "../node_modules/@solana/transaction-messages/src/compile/accounts.ts", "../node_modules/@solana/transaction-messages/src/compile/address-table-lookups.ts", "../node_modules/@solana/transaction-messages/src/compile/header.ts", "../node_modules/@solana/transaction-messages/src/compile/instructions.ts", "../node_modules/@solana/transaction-messages/src/compile/lifetime-token.ts", "../node_modules/@solana/transaction-messages/src/compile/static-accounts.ts", "../node_modules/@solana/transaction-messages/src/compile/message.ts", "../node_modules/@solana/transaction-messages/src/compress-transaction-message.ts", "../node_modules/@solana/transaction-messages/src/create-transaction-message.ts", "../node_modules/@solana/transaction-messages/src/durable-nonce-instruction.ts", "../node_modules/@solana/transaction-messages/src/durable-nonce.ts", "../node_modules/@solana/transaction-messages/src/fee-payer.ts", "../node_modules/@solana/transaction-messages/src/instructions.ts", "../node_modules/@solana/transaction-messages/src/decompile-message.ts", "../node_modules/@solana/transaction-messages/src/deprecated.ts", "../node_modules/@solana/transactions/src/codecs/signatures-encoder.ts", "../node_modules/@solana/transactions/src/codecs/transaction-codec.ts", "../node_modules/@solana/transactions/src/compile-transaction.ts", "../node_modules/@solana/transactions/src/signatures.ts", "../node_modules/@solana/transactions/src/wire-transaction.ts", "../node_modules/@solana/transactions/src/transaction-size.ts", "../node_modules/@solana/transactions/src/transaction-message-size.ts", "../node_modules/@solana/transactions/src/deprecated.ts", "../node_modules/@solana/signers/src/deduplicate-signers.ts", "../node_modules/@solana/signers/src/transaction-modifying-signer.ts", "../node_modules/@solana/signers/src/transaction-partial-signer.ts", "../node_modules/@solana/signers/src/transaction-sending-signer.ts", "../node_modules/@solana/signers/src/transaction-signer.ts", "../node_modules/@solana/signers/src/account-signer-meta.ts", "../node_modules/@solana/signers/src/add-signers.ts", "../node_modules/@solana/signers/src/fee-payer-signer.ts", "../node_modules/@solana/signers/src/message-partial-signer.ts", "../node_modules/@solana/signers/src/keypair-signer.ts", "../node_modules/@solana/signers/src/message-modifying-signer.ts", "../node_modules/@solana/signers/src/message-signer.ts", "../node_modules/@solana/signers/src/noop-signer.ts", "../node_modules/@solana/signers/src/transaction-with-single-sending-signer.ts", "../node_modules/@solana/signers/src/sign-transaction.ts", "../node_modules/@solana/text-encoding-impl/src/index.node.ts", "../node_modules/@solana/signers/src/signable-message.ts", "../node_modules/@solana/event-target-impl/src/index.node.ts", "../node_modules/@solana/transaction-confirmation/src/confirmation-strategy-blockheight.ts", "../node_modules/@solana/transaction-confirmation/src/confirmation-strategy-nonce.ts", "../node_modules/@solana/transaction-confirmation/src/confirmation-strategy-recent-signature.ts", "../node_modules/@solana/transaction-confirmation/src/confirmation-strategy-timeout.ts", "../node_modules/@solana/transaction-confirmation/src/confirmation-strategy-racer.ts", "../node_modules/@solana/transaction-confirmation/src/waiters.ts", "../node_modules/@solana/kit/src/airdrop-internal.ts", "../node_modules/@solana/kit/src/airdrop.ts", "../node_modules/@solana/kit/src/compute-limit-internal.ts", "../node_modules/@solana/kit/src/compute-limit.ts", "../node_modules/@solana/kit/src/fetch-lookup-tables.ts", "../node_modules/@solana/kit/src/decompile-transaction-message-fetching-lookup-tables.ts", "../node_modules/@solana/kit/src/send-transaction-internal.ts", "../node_modules/@solana/kit/src/send-and-confirm-durable-nonce-transaction.ts", "../node_modules/@solana/kit/src/send-and-confirm-transaction.ts", "../node_modules/@solana/kit/src/send-transaction-without-confirming.ts", "../node_modules/@solana-program/token/src/generated/accounts/mint.ts", "../node_modules/@solana-program/token/src/generated/accounts/multisig.ts", "../node_modules/@solana-program/token/src/generated/types/accountState.ts", "../node_modules/@solana-program/token/src/generated/types/authorityType.ts", "../node_modules/@solana-program/token/src/generated/accounts/token.ts", "../node_modules/@solana-program/token/src/generated/programs/associatedToken.ts", "../node_modules/@solana-program/token/src/generated/programs/token.ts", "../node_modules/@solana-program/token/src/generated/errors/associatedToken.ts", "../node_modules/@solana-program/token/src/generated/errors/token.ts", "../node_modules/@solana-program/token/src/generated/shared/index.ts", "../node_modules/@solana-program/token/src/generated/instructions/amountToUiAmount.ts", "../node_modules/@solana-program/token/src/generated/instructions/approve.ts", "../node_modules/@solana-program/token/src/generated/instructions/approveChecked.ts", "../node_modules/@solana-program/token/src/generated/instructions/burn.ts", "../node_modules/@solana-program/token/src/generated/instructions/burnChecked.ts", "../node_modules/@solana-program/token/src/generated/instructions/closeAccount.ts", "../node_modules/@solana-program/token/src/generated/pdas/associatedToken.ts", "../node_modules/@solana-program/token/src/generated/instructions/createAssociatedToken.ts", "../node_modules/@solana-program/token/src/generated/instructions/createAssociatedTokenIdempotent.ts", "../node_modules/@solana-program/token/src/generated/instructions/freezeAccount.ts", "../node_modules/@solana-program/token/src/generated/instructions/getAccountDataSize.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeAccount.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeAccount2.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeAccount3.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeImmutableOwner.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeMint.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeMint2.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeMultisig.ts", "../node_modules/@solana-program/token/src/generated/instructions/initializeMultisig2.ts", "../node_modules/@solana-program/token/src/generated/instructions/mintTo.ts", "../node_modules/@solana-program/token/src/generated/instructions/mintToChecked.ts", "../node_modules/@solana-program/token/src/generated/instructions/recoverNestedAssociatedToken.ts", "../node_modules/@solana-program/token/src/generated/instructions/revoke.ts", "../node_modules/@solana-program/token/src/generated/instructions/setAuthority.ts", "../node_modules/@solana-program/token/src/generated/instructions/syncNative.ts", "../node_modules/@solana-program/token/src/generated/instructions/thawAccount.ts", "../node_modules/@solana-program/token/src/generated/instructions/transfer.ts", "../node_modules/@solana-program/token/src/generated/instructions/transferChecked.ts", "../node_modules/@solana-program/token/src/generated/instructions/uiAmountToAmount.ts", "../node_modules/@solana/sysvars/src/sysvar.ts", "../node_modules/@solana/sysvars/src/clock.ts", "../node_modules/@solana/sysvars/src/epoch-rewards.ts", "../node_modules/@solana/sysvars/src/epoch-schedule.ts", "../node_modules/@solana/sysvars/src/last-restart-slot.ts", "../node_modules/@solana/sysvars/src/recent-blockhashes.ts", "../node_modules/@solana/sysvars/src/rent.ts", "../node_modules/@solana/sysvars/src/slot-hashes.ts", "../node_modules/@solana/sysvars/src/slot-history.ts", "../node_modules/@solana/sysvars/src/stake-history.ts", "../node_modules/@solana-program/token-2022/src/generated/types/accountState.ts", "../node_modules/@solana-program/token-2022/src/generated/types/authorityType.ts", "../node_modules/@solana-program/token-2022/src/generated/types/decryptableBalance.ts", "../node_modules/@solana-program/token-2022/src/generated/types/encryptedBalance.ts", "../node_modules/@solana-program/token-2022/src/generated/types/extension.ts", "../node_modules/@solana-program/token-2022/src/generated/types/extensionType.ts", "../node_modules/@solana-program/token-2022/src/generated/types/tokenMetadataField.ts", "../node_modules/@solana-program/token-2022/src/generated/types/transferFee.ts", "../node_modules/@solana-program/token-2022/src/generated/accounts/mint.ts", "../node_modules/@solana-program/token-2022/src/generated/accounts/multisig.ts", "../node_modules/@solana-program/token-2022/src/generated/accounts/token.ts", "../node_modules/@solana-program/token-2022/src/generated/programs/associatedToken.ts", "../node_modules/@solana-program/token-2022/src/generated/programs/token2022.ts", "../node_modules/@solana-program/token-2022/src/generated/errors/associatedToken.ts", "../node_modules/@solana-program/token-2022/src/generated/errors/token2022.ts", "../node_modules/@solana-program/token-2022/src/generated/shared/index.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/amountToUiAmount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/applyConfidentialPendingBalance.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/approve.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/approveChecked.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/approveConfidentialTransferAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/burn.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/burnChecked.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/closeAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/confidentialDeposit.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/confidentialTransfer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/confidentialTransferWithFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/confidentialWithdraw.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/configureConfidentialTransferAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/pdas/associatedToken.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/createAssociatedToken.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/createAssociatedTokenIdempotent.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/createNativeMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/disableConfidentialCredits.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/disableCpiGuard.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/disableHarvestToMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/disableMemoTransfers.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/disableNonConfidentialCredits.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/emitTokenMetadata.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/emptyConfidentialTransferAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/enableConfidentialCredits.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/enableCpiGuard.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/enableHarvestToMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/enableMemoTransfers.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/enableNonConfidentialCredits.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/freezeAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/getAccountDataSize.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/harvestWithheldTokensToMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/harvestWithheldTokensToMintForConfidentialTransferFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeAccount2.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeAccount3.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeConfidentialTransferFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeConfidentialTransferMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeDefaultAccountState.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeGroupMemberPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeGroupPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeImmutableOwner.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeInterestBearingMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMetadataPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMint2.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMintCloseAuthority.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMultisig.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeMultisig2.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeNonTransferableMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializePausableConfig.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializePermanentDelegate.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeScaledUiAmountMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeTokenGroup.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeTokenGroupMember.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeTokenMetadata.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeTransferFeeConfig.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/initializeTransferHook.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/mintTo.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/mintToChecked.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/pause.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/reallocate.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/recoverNestedAssociatedToken.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/removeTokenMetadataKey.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/resume.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/revoke.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/setAuthority.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/setTransferFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/syncNative.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/thawAccount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/transfer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/transferChecked.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/transferCheckedWithFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/uiAmountToAmount.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateConfidentialTransferMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateDefaultAccountState.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateGroupMemberPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateGroupPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateMetadataPointer.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateMultiplierScaledUiMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateRateInterestBearingMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateTokenGroupMaxSize.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateTokenGroupUpdateAuthority.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateTokenMetadataField.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateTokenMetadataUpdateAuthority.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/updateTransferHook.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/withdrawExcessLamports.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/withdrawWithheldTokensFromAccounts.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/withdrawWithheldTokensFromAccountsForConfidentialTransferFee.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/withdrawWithheldTokensFromMint.ts", "../node_modules/@solana-program/token-2022/src/generated/instructions/withdrawWithheldTokensFromMintForConfidentialTransferFee.ts", "../node_modules/@solana-program/token-2022/src/amountToUiAmount.ts", "../node_modules/@solana-program/token-2022/src/getInitializeInstructionsForExtensions.ts", "../node_modules/@solana-program/token-2022/src/getTokenSize.ts", "../node_modules/@solana-program/token-2022/src/getMintSize.ts", "../node_modules/@solana-program/compute-budget/src/generated/programs/computeBudget.ts", "../node_modules/@solana-program/compute-budget/src/generated/instructions/requestHeapFrame.ts", "../node_modules/@solana-program/compute-budget/src/generated/instructions/requestUnits.ts", "../node_modules/@solana-program/compute-budget/src/generated/instructions/setComputeUnitLimit.ts", "../node_modules/@solana-program/compute-budget/src/generated/instructions/setComputeUnitPrice.ts", "../node_modules/@solana-program/compute-budget/src/generated/instructions/setLoadedAccountsDataSizeLimit.ts", "../node_modules/@solana-program/compute-budget/src/constants.ts", "../node_modules/@solana-program/compute-budget/src/internal.ts", "../node_modules/@solana-program/compute-budget/src/setComputeLimit.ts", "../node_modules/@solana-program/compute-budget/src/estimateAndSetComputeLimit.ts", "../node_modules/@solana-program/compute-budget/src/internalMoveToKit.ts", "../node_modules/@solana-program/compute-budget/src/estimateComputeLimitInternal.ts", "../node_modules/@solana-program/compute-budget/src/estimateComputeLimit.ts", "../node_modules/@solana-program/compute-budget/src/setComputePrice.ts", "../node_modules/@trezor/blockchain-link/lib/workers/solana/utils/fee.js", "../node_modules/@trezor/blockchain-link/lib/workers/solana/utils/getThrottledTransport.js", "../node_modules/@solana-program/stake/src/generated/types/authorized.ts", "../node_modules/@solana-program/stake/src/generated/types/delegation.ts", "../node_modules/@solana-program/stake/src/generated/types/lockup.ts", "../node_modules/@solana-program/stake/src/generated/types/meta.ts", "../node_modules/@solana-program/stake/src/generated/types/stake.ts", "../node_modules/@solana-program/stake/src/generated/types/stakeAuthorize.ts", "../node_modules/@solana-program/stake/src/generated/types/stakeFlags.ts", "../node_modules/@solana-program/stake/src/generated/types/stakeState.ts", "../node_modules/@solana-program/stake/src/generated/types/stakeStateV2.ts", "../node_modules/@solana-program/stake/src/generated/accounts/stakeStateAccount.ts", "../node_modules/@solana-program/stake/src/generated/programs/stake.ts", "../node_modules/@solana-program/stake/src/generated/errors/stake.ts", "../node_modules/@solana-program/stake/src/generated/shared/index.ts", "../node_modules/@solana-program/stake/src/generated/instructions/authorize.ts", "../node_modules/@solana-program/stake/src/generated/instructions/authorizeChecked.ts", "../node_modules/@solana-program/stake/src/generated/instructions/authorizeCheckedWithSeed.ts", "../node_modules/@solana-program/stake/src/generated/instructions/authorizeWithSeed.ts", "../node_modules/@solana-program/stake/src/generated/instructions/deactivate.ts", "../node_modules/@solana-program/stake/src/generated/instructions/deactivateDelinquent.ts", "../node_modules/@solana-program/stake/src/generated/instructions/delegateStake.ts", "../node_modules/@solana-program/stake/src/generated/instructions/getMinimumDelegation.ts", "../node_modules/@solana-program/stake/src/generated/instructions/initialize.ts", "../node_modules/@solana-program/stake/src/generated/instructions/initializeChecked.ts", "../node_modules/@solana-program/stake/src/generated/instructions/merge.ts", "../node_modules/@solana-program/stake/src/generated/instructions/moveLamports.ts", "../node_modules/@solana-program/stake/src/generated/instructions/moveStake.ts", "../node_modules/@solana-program/stake/src/generated/instructions/setLockup.ts", "../node_modules/@solana-program/stake/src/generated/instructions/setLockupChecked.ts", "../node_modules/@solana-program/stake/src/generated/instructions/split.ts", "../node_modules/@solana-program/stake/src/generated/instructions/withdraw.ts", "../node_modules/@trezor/blockchain-link-types/lib/solana.js", "../node_modules/@trezor/blockchain-link/lib/workers/solana/utils/stakingAccounts.js", "../node_modules/@trezor/blockchain-link/lib/workers/solana/index.js", "../node_modules/@stellar/stellar-sdk/lib/errors/network.js", "../node_modules/@stellar/stellar-sdk/lib/errors/not_found.js", "../node_modules/@stellar/stellar-sdk/lib/errors/bad_request.js", "../node_modules/@stellar/stellar-sdk/lib/errors/bad_response.js", "../node_modules/@stellar/stellar-sdk/lib/errors/account_requires_memo.js", "../node_modules/@stellar/stellar-sdk/lib/errors/index.js", "../node_modules/@stellar/stellar-sdk/lib/config.js", "../node_modules/@stellar/stellar-sdk/lib/utils.js", "../node_modules/toml/lib/parser.js", "../node_modules/toml/lib/compiler.js", "../node_modules/toml/index.js", "../node_modules/@stellar/stellar-sdk/lib/http-client/types.js", "../node_modules/delayed-stream/lib/delayed_stream.js", "../node_modules/combined-stream/lib/combined_stream.js", "../node_modules/mime-db/db.json", "../node_modules/mime-db/index.js", "../node_modules/mime-types/index.js", "../node_modules/asynckit/lib/defer.js", "../node_modules/asynckit/lib/async.js", "../node_modules/asynckit/lib/abort.js", "../node_modules/asynckit/lib/iterate.js", "../node_modules/asynckit/lib/state.js", "../node_modules/asynckit/lib/terminator.js", "../node_modules/asynckit/parallel.js", "../node_modules/asynckit/serialOrdered.js", "../node_modules/asynckit/serial.js", "../node_modules/asynckit/index.js", "../node_modules/es-object-atoms/index.js", "../node_modules/es-errors/index.js", "../node_modules/es-errors/eval.js", "../node_modules/es-errors/range.js", "../node_modules/es-errors/ref.js", "../node_modules/es-errors/syntax.js", "../node_modules/es-errors/type.js", "../node_modules/es-errors/uri.js", "../node_modules/math-intrinsics/abs.js", "../node_modules/math-intrinsics/floor.js", "../node_modules/math-intrinsics/max.js", "../node_modules/math-intrinsics/min.js", "../node_modules/math-intrinsics/pow.js", "../node_modules/math-intrinsics/round.js", "../node_modules/math-intrinsics/isNaN.js", "../node_modules/math-intrinsics/sign.js", "../node_modules/gopd/gOPD.js", "../node_modules/gopd/index.js", "../node_modules/es-define-property/index.js", "../node_modules/has-symbols/shams.js", "../node_modules/has-symbols/index.js", "../node_modules/get-proto/Reflect.getPrototypeOf.js", "../node_modules/get-proto/Object.getPrototypeOf.js", "../node_modules/function-bind/implementation.js", "../node_modules/function-bind/index.js", "../node_modules/call-bind-apply-helpers/functionCall.js", "../node_modules/call-bind-apply-helpers/functionApply.js", "../node_modules/call-bind-apply-helpers/reflectApply.js", "../node_modules/call-bind-apply-helpers/actualApply.js", "../node_modules/call-bind-apply-helpers/index.js", "../node_modules/dunder-proto/get.js", "../node_modules/get-proto/index.js", "../node_modules/hasown/index.js", "../node_modules/get-intrinsic/index.js", "../node_modules/has-tostringtag/shams.js", "../node_modules/es-set-tostringtag/index.js", "../node_modules/form-data/lib/populate.js", "../node_modules/form-data/lib/form_data.js", "../node_modules/proxy-from-env/index.js", "../node_modules/follow-redirects/debug.js", "../node_modules/follow-redirects/index.js", "../node_modules/axios/lib/helpers/bind.js", "../node_modules/axios/lib/utils.js", "../node_modules/axios/lib/core/AxiosError.js", "../node_modules/axios/lib/helpers/toFormData.js", "../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../node_modules/axios/lib/helpers/buildURL.js", "../node_modules/axios/lib/core/InterceptorManager.js", "../node_modules/axios/lib/defaults/transitional.js", "../node_modules/axios/lib/platform/node/classes/URLSearchParams.js", "../node_modules/axios/lib/platform/node/index.js", "../node_modules/axios/lib/platform/common/utils.js", "../node_modules/axios/lib/platform/index.js", "../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../node_modules/axios/lib/helpers/formDataToJSON.js", "../node_modules/axios/lib/defaults/index.js", "../node_modules/axios/lib/helpers/parseHeaders.js", "../node_modules/axios/lib/core/AxiosHeaders.js", "../node_modules/axios/lib/core/transformData.js", "../node_modules/axios/lib/cancel/isCancel.js", "../node_modules/axios/lib/cancel/CanceledError.js", "../node_modules/axios/lib/core/settle.js", "../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../node_modules/axios/lib/helpers/combineURLs.js", "../node_modules/axios/lib/core/buildFullPath.js", "../node_modules/axios/lib/env/data.js", "../node_modules/axios/lib/helpers/parseProtocol.js", "../node_modules/axios/lib/helpers/fromDataURI.js", "../node_modules/axios/lib/helpers/AxiosTransformStream.js", "../node_modules/axios/lib/helpers/readBlob.js", "../node_modules/axios/lib/helpers/formDataToStream.js", "../node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js", "../node_modules/axios/lib/helpers/callbackify.js", "../node_modules/axios/lib/helpers/speedometer.js", "../node_modules/axios/lib/helpers/throttle.js", "../node_modules/axios/lib/helpers/progressEventReducer.js", "../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js", "../node_modules/axios/lib/adapters/http.js", "../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../node_modules/axios/lib/helpers/cookies.js", "../node_modules/axios/lib/core/mergeConfig.js", "../node_modules/axios/lib/helpers/resolveConfig.js", "../node_modules/axios/lib/adapters/xhr.js", "../node_modules/axios/lib/helpers/composeSignals.js", "../node_modules/axios/lib/helpers/trackStream.js", "../node_modules/axios/lib/adapters/fetch.js", "../node_modules/axios/lib/adapters/adapters.js", "../node_modules/axios/lib/core/dispatchRequest.js", "../node_modules/axios/lib/helpers/validator.js", "../node_modules/axios/lib/core/Axios.js", "../node_modules/axios/lib/cancel/CancelToken.js", "../node_modules/axios/lib/helpers/spread.js", "../node_modules/axios/lib/helpers/isAxiosError.js", "../node_modules/axios/lib/helpers/HttpStatusCode.js", "../node_modules/axios/lib/axios.js", "../node_modules/@stellar/stellar-sdk/lib/http-client/axios-client.js", "../node_modules/@stellar/stellar-sdk/lib/http-client/index.js", "../node_modules/@stellar/stellar-sdk/lib/stellartoml/index.js", "webpack://XDR/webpack/universalModuleDefinition", "webpack://XDR/src/array.js", "webpack://XDR/src/bigint-encoder.js", "webpack://XDR/src/bool.js", "webpack://XDR/src/browser.js", "webpack://XDR/src/config.js", "webpack://XDR/src/double.js", "webpack://XDR/src/enum.js", "webpack://XDR/src/errors.js", "webpack://XDR/src/float.js", "webpack://XDR/src/hyper.js", "webpack://XDR/src/index.js", "webpack://XDR/src/int.js", "webpack://XDR/src/large-int.js", "webpack://XDR/src/opaque.js", "webpack://XDR/src/option.js", "webpack://XDR/src/quadruple.js", "webpack://XDR/src/reference.js", "webpack://XDR/src/serialization/xdr-reader.js", "webpack://XDR/src/serialization/xdr-writer.js", "webpack://XDR/src/string.js", "webpack://XDR/src/struct.js", "webpack://XDR/src/types.js", "webpack://XDR/src/union.js", "webpack://XDR/src/unsigned-hyper.js", "webpack://XDR/src/unsigned-int.js", "webpack://XDR/src/var-array.js", "webpack://XDR/src/var-opaque.js", "webpack://XDR/src/void.js", "webpack://XDR/src/xdr-type.js", "webpack://XDR/webpack/bootstrap", "webpack://XDR/webpack/runtime/define%20property%20getters", "webpack://XDR/webpack/runtime/hasOwnProperty%20shorthand", "webpack://XDR/webpack/runtime/make%20namespace%20object", "webpack://XDR/webpack/before-startup", "webpack://XDR/webpack/startup", "webpack://XDR/webpack/after-startup", "../node_modules/@stellar/stellar-base/lib/generated/curr_generated.js", "../node_modules/@stellar/stellar-base/lib/xdr.js", "../node_modules/@stellar/stellar-base/lib/jsxdr.js", "../node_modules/isarray/index.js", "../node_modules/call-bound/index.js", "../node_modules/is-callable/index.js", "../node_modules/for-each/index.js", "../node_modules/possible-typed-array-names/index.js", "../node_modules/available-typed-arrays/index.js", "../node_modules/define-data-property/index.js", "../node_modules/has-property-descriptors/index.js", "../node_modules/set-function-length/index.js", "../node_modules/call-bind-apply-helpers/applyBind.js", "../node_modules/call-bind/index.js", "../node_modules/which-typed-array/index.js", "../node_modules/is-typed-array/index.js", "../node_modules/typed-array-buffer/index.js", "../node_modules/to-buffer/index.js", "../node_modules/sha.js/hash.js", "../node_modules/sha.js/sha.js", "../node_modules/sha.js/sha1.js", "../node_modules/sha.js/sha256.js", "../node_modules/sha.js/sha224.js", "../node_modules/sha.js/sha512.js", "../node_modules/sha.js/sha384.js", "../node_modules/sha.js/index.js", "../node_modules/@stellar/stellar-base/lib/hashing.js", "../node_modules/@stellar/stellar-base/lib/signing.js", "../node_modules/@stellar/stellar-base/lib/util/util.js", "../node_modules/base32.js/base32.js", "../node_modules/base32.js/index.js", "../node_modules/@stellar/stellar-base/lib/util/checksum.js", "../node_modules/@stellar/stellar-base/lib/strkey.js", "../node_modules/@stellar/stellar-base/lib/keypair.js", "../node_modules/@stellar/stellar-base/lib/asset.js", "../node_modules/@stellar/stellar-base/lib/get_liquidity_pool_id.js", "../node_modules/@stellar/stellar-base/lib/transaction_base.js", "../node_modules/@stellar/stellar-base/lib/util/bignumber.js", "../node_modules/@stellar/stellar-base/lib/util/continued_fraction.js", "../node_modules/@stellar/stellar-base/lib/liquidity_pool_asset.js", "../node_modules/@stellar/stellar-base/lib/claimant.js", "../node_modules/@stellar/stellar-base/lib/liquidity_pool_id.js", "../node_modules/@stellar/stellar-base/lib/operations/manage_sell_offer.js", "../node_modules/@stellar/stellar-base/lib/operations/create_passive_sell_offer.js", "../node_modules/@stellar/stellar-base/lib/util/decode_encode_muxed_account.js", "../node_modules/@stellar/stellar-base/lib/operations/account_merge.js", "../node_modules/@stellar/stellar-base/lib/operations/allow_trust.js", "../node_modules/@stellar/stellar-base/lib/operations/bump_sequence.js", "../node_modules/@stellar/stellar-base/lib/operations/change_trust.js", "../node_modules/@stellar/stellar-base/lib/operations/create_account.js", "../node_modules/@stellar/stellar-base/lib/operations/create_claimable_balance.js", "../node_modules/@stellar/stellar-base/lib/operations/claim_claimable_balance.js", "../node_modules/@stellar/stellar-base/lib/operations/clawback_claimable_balance.js", "../node_modules/@stellar/stellar-base/lib/operations/inflation.js", "../node_modules/@stellar/stellar-base/lib/operations/manage_data.js", "../node_modules/@stellar/stellar-base/lib/operations/manage_buy_offer.js", "../node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_receive.js", "../node_modules/@stellar/stellar-base/lib/operations/path_payment_strict_send.js", "../node_modules/@stellar/stellar-base/lib/operations/payment.js", "../node_modules/@stellar/stellar-base/lib/operations/set_options.js", "../node_modules/@stellar/stellar-base/lib/operations/begin_sponsoring_future_reserves.js", "../node_modules/@stellar/stellar-base/lib/operations/end_sponsoring_future_reserves.js", "../node_modules/@stellar/stellar-base/lib/operations/revoke_sponsorship.js", "../node_modules/@stellar/stellar-base/lib/operations/clawback.js", "../node_modules/@stellar/stellar-base/lib/operations/set_trustline_flags.js", "../node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_deposit.js", "../node_modules/@stellar/stellar-base/lib/operations/liquidity_pool_withdraw.js", "../node_modules/@stellar/stellar-base/lib/address.js", "../node_modules/@stellar/stellar-base/lib/operations/invoke_host_function.js", "../node_modules/@stellar/stellar-base/lib/operations/extend_footprint_ttl.js", "../node_modules/@stellar/stellar-base/lib/operations/restore_footprint.js", "../node_modules/@stellar/stellar-base/lib/operations/index.js", "../node_modules/@stellar/stellar-base/lib/operation.js", "../node_modules/@stellar/stellar-base/lib/memo.js", "../node_modules/@stellar/stellar-base/lib/transaction.js", "../node_modules/@stellar/stellar-base/lib/fee_bump_transaction.js", "../node_modules/@stellar/stellar-base/lib/account.js", "../node_modules/@stellar/stellar-base/lib/muxed_account.js", "../node_modules/@stellar/stellar-base/lib/sorobandata_builder.js", "../node_modules/@stellar/stellar-base/lib/signerkey.js", "../node_modules/@stellar/stellar-base/lib/transaction_builder.js", "../node_modules/@stellar/stellar-base/lib/network.js", "../node_modules/@stellar/stellar-base/lib/soroban.js", "../node_modules/@stellar/stellar-base/lib/contract.js", "../node_modules/@stellar/stellar-base/lib/numbers/uint128.js", "../node_modules/@stellar/stellar-base/lib/numbers/uint256.js", "../node_modules/@stellar/stellar-base/lib/numbers/int128.js", "../node_modules/@stellar/stellar-base/lib/numbers/int256.js", "../node_modules/@stellar/stellar-base/lib/numbers/xdr_large_int.js", "../node_modules/@stellar/stellar-base/lib/numbers/sc_int.js", "../node_modules/@stellar/stellar-base/lib/numbers/index.js", "../node_modules/@stellar/stellar-base/lib/scval.js", "../node_modules/@stellar/stellar-base/lib/events.js", "../node_modules/@stellar/stellar-base/lib/auth.js", "../node_modules/@stellar/stellar-base/lib/invocation.js", "../node_modules/@stellar/stellar-base/lib/index.js", "../node_modules/urijs/src/punycode.js", "../node_modules/urijs/src/IPv6.js", "../node_modules/urijs/src/SecondLevelDomains.js", "../node_modules/urijs/src/URI.js", "../node_modules/@stellar/stellar-sdk/lib/federation/server.js", "../node_modules/@stellar/stellar-sdk/lib/federation/api.js", "../node_modules/@stellar/stellar-sdk/lib/federation/index.js", "../node_modules/randombytes/index.js", "../node_modules/@stellar/stellar-sdk/lib/webauth/errors.js", "../node_modules/@stellar/stellar-sdk/lib/webauth/utils.js", "../node_modules/@stellar/stellar-sdk/lib/webauth/index.js", "../node_modules/@stellar/stellar-sdk/lib/friendbot/index.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/horizon_api.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/types/effects.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/server_api.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/account_response.js", "../node_modules/urijs/src/URITemplate.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/horizon_axios_client.js", "../node_modules/eventsource/lib/eventsource.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/account_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/assets_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/claimable_balances_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/effect_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/friendbot_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/ledger_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/liquidity_pool_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/offer_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/operation_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/orderbook_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/payment_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/strict_receive_path_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/strict_send_path_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/trade_aggregation_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/trades_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/transaction_call_builder.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/server.js", "../node_modules/@stellar/stellar-sdk/lib/horizon/index.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/api.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/axios.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/jsonrpc.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/parsers.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/transaction.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/server.js", "../node_modules/@stellar/stellar-sdk/lib/rpc/index.js", "../node_modules/@stellar/stellar-sdk/lib/contract/rust_result.js", "../node_modules/@stellar/stellar-sdk/lib/contract/types.js", "../node_modules/@stellar/stellar-sdk/lib/contract/utils.js", "../node_modules/@stellar/stellar-sdk/lib/contract/sent_transaction.js", "../node_modules/@stellar/stellar-sdk/lib/contract/assembled_transaction.js", "../node_modules/@stellar/stellar-sdk/lib/contract/basic_node_signer.js", "../node_modules/@stellar/stellar-sdk/lib/contract/spec.js", "../node_modules/@stellar/stellar-sdk/lib/contract/client.js", "../node_modules/@stellar/stellar-sdk/lib/contract/index.js", "../node_modules/@stellar/stellar-sdk/lib/index.js", "../node_modules/@trezor/blockchain-link-utils/lib/stellar.js", "../node_modules/@trezor/blockchain-link/lib/workers/stellar/index.js", "../node_modules/@trezor/connect/lib/workers/workers.js", "../node_modules/@trezor/connect/lib/backend/Blockchain.js", "../node_modules/@trezor/connect-common/files/coins-eth.json", "../node_modules/@trezor/connect-common/files/coins.json", "../node_modules/@trezor/protobuf/messages.json", "../node_modules/@trezor/device-utils/lib/modeUtils.js", "../node_modules/@trezor/device-utils/lib/types.js", "../node_modules/@trezor/device-utils/lib/firmwareUtils.js", "../node_modules/@trezor/device-utils/lib/bootloaderUtils.js", "../node_modules/@trezor/device-utils/lib/deviceModelInternal.js", "../node_modules/@trezor/device-utils/lib/deviceModelInternalUtils.js", "../node_modules/@trezor/device-utils/lib/models.js", "../node_modules/@trezor/device-utils/lib/deviceColorUtils.js", "../node_modules/@trezor/device-utils/lib/index.js", "../node_modules/@trezor/connect/lib/utils/assetUtils.js", "../node_modules/@trezor/connect/lib/utils/assets-browser.js", "../node_modules/@trezor/connect/lib/utils/assets.js", "../node_modules/@trezor/connect/lib/utils/firmwareUtils.js", "../node_modules/@trezor/connect/lib/data/firmwareInfo.js", "../node_modules/jws/lib/data-stream.js", "../node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js", "../node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js", "../node_modules/buffer-equal-constant-time/index.js", "../node_modules/jwa/index.js", "../node_modules/jws/lib/tostring.js", "../node_modules/jws/lib/sign-stream.js", "../node_modules/jws/lib/verify-stream.js", "../node_modules/jws/index.js", "../node_modules/@trezor/connect/lib/utils/firmwareReleaseConfigUtils.js", "../node_modules/@trezor/connect/lib/data/DataManager.js", "../node_modules/@trezor/connect/lib/backend/BackendManager.js", "../node_modules/@trezor/connect/lib/backend/BlockchainLink.js", "../node_modules/@trezor/connect/lib/types/api/index.js", "../node_modules/@trezor/connect/lib/types/account.js", "../node_modules/@trezor/connect/lib/types/fees.js", "../node_modules/@trezor/connect/lib/types/coinInfo.js", "../node_modules/@trezor/connect/lib/types/device.js", "../node_modules/@trezor/connect/lib/types/firmware.js", "../node_modules/@trezor/connect/lib/types/settings.js", "../node_modules/@trezor/connect/lib/types/api/cardano/index.js", "../node_modules/@trezor/connect/lib/types/api/bitcoin/index.js", "../node_modules/@trezor/connect/lib/types/api/eos/index.js", "../node_modules/@trezor/connect/lib/types/api/ripple/index.js", "../node_modules/@trezor/connect/lib/types/api/ethereum/index.js", "../node_modules/@trezor/connect/lib/types/api/monero/index.js", "../node_modules/@trezor/connect/lib/types/api/solana/index.js", "../node_modules/@trezor/connect/lib/types/api/stellar/index.js", "../node_modules/@trezor/connect/lib/types/api/tezos/index.js", "../node_modules/@trezor/connect/lib/types/index.js", "../node_modules/@trezor/connect/lib/api/blockchainDisconnect.js", "../node_modules/@trezor/type-utils/lib/array.js", "../node_modules/@trezor/type-utils/lib/branded.js", "../node_modules/@trezor/type-utils/lib/exhaustive.js", "../node_modules/@trezor/type-utils/lib/object.js", "../node_modules/@trezor/type-utils/lib/overloads.js", "../node_modules/@trezor/type-utils/lib/result.js", "../node_modules/@trezor/type-utils/lib/timeout.js", "../node_modules/@trezor/type-utils/lib/utils.js", "../node_modules/@trezor/type-utils/lib/index.js", "../node_modules/@trezor/connect/lib/backend/fees/MiscFeeLevels.js", "../node_modules/@trezor/connect/lib/backend/fees/BitcoinFeeLevels.js", "../node_modules/@trezor/connect/lib/backend/fees/EthereumFeeLevels.js", "../node_modules/@trezor/connect/lib/backend/fees/index.js", "../node_modules/@trezor/connect/lib/api/blockchainEstimateFee.js", "../node_modules/@trezor/connect/lib/api/blockchainGetAccountBalanceHistory.js", "../node_modules/@trezor/connect/lib/api/blockchainGetCurrentFiatRates.js", "../node_modules/@trezor/connect/lib/api/blockchainGetInfo.js", "../node_modules/@trezor/connect/lib/api/blockchainEvmRpcCall.js", "../node_modules/@trezor/connect/lib/api/blockchainGetFiatRatesForTimestamps.js", "../node_modules/@trezor/connect/lib/api/blockchainGetTransactions.js", "../node_modules/@trezor/connect/lib/api/blockchainSetCustomBackend.js", "../node_modules/@trezor/connect/lib/api/blockchainSubscribe.js", "../node_modules/@trezor/connect/lib/api/blockchainSubscribeFiatRates.js", "../node_modules/@trezor/connect/lib/api/blockchainUnsubscribe.js", "../node_modules/@trezor/connect/lib/api/blockchainUnsubscribeFiatRates.js", "../node_modules/@trezor/connect/lib/types/api/changeLanguage.js", "../node_modules/@trezor/connect/lib/api/changeLanguage.js", "../node_modules/@trezor/connect/lib/api/changePin.js", "../node_modules/@trezor/connect/lib/api/changeWipeCode.js", "../node_modules/@trezor/connect/lib/types/api/cipherKeyValue.js", "../node_modules/@trezor/connect/lib/api/cipherKeyValue.js", "../node_modules/@trezor/connect/lib/api/evoluGetNode.js", "../node_modules/@trezor/connect/lib/api/evoluSignRegistrationRequest.js", "../node_modules/@trezor/connect/lib/api/evoluGetDelegatedIdentityKey.js", "../node_modules/@trezor/connect/lib/api/bitcoin/createPendingTx.js", "../node_modules/@trezor/connect/lib/api/bitcoin/enhanceSignTx.js", "../node_modules/@trezor/connect/lib/utils/hdnodeUtils.js", "../node_modules/@trezor/connect/lib/api/bitcoin/inputs.js", "../node_modules/@trezor/connect/lib/utils/addressUtils.js", "../node_modules/@trezor/connect/lib/api/bitcoin/outputs.js", "../node_modules/@trezor/connect/lib/api/bitcoin/refTx.js", "../node_modules/@trezor/connect/lib/api/bitcoin/signtx.js", "../node_modules/@trezor/connect/lib/api/bitcoin/signtxLegacy.js", "../node_modules/@trezor/connect/lib/api/bitcoin/signtxVerify.js", "../node_modules/@trezor/connect/lib/api/bitcoin/TransactionComposer.js", "../node_modules/@trezor/connect/lib/api/bitcoin/index.js", "../node_modules/@trezor/connect/lib/utils/accountUtils.js", "../node_modules/@trezor/connect/lib/utils/formatUtils.js", "../node_modules/@trezor/connect/lib/api/common/Discovery.js", "../node_modules/@trezor/connect/lib/api/composeTransaction.js", "../node_modules/@trezor/connect/lib/types/api/discoverAccounts.js", "../node_modules/@trezor/connect/lib/api/discoverAccounts.js", "../node_modules/@trezor/connect/lib/types/api/getAccountDescriptor.js", "../node_modules/@trezor/connect/lib/api/getAccountDescriptor.js", "../node_modules/@trezor/connect/lib/api/getAccountInfo.js", "../node_modules/@trezor/connect/lib/types/api/getAddress.js", "../node_modules/@trezor/connect/lib/api/getAddress.js", "../node_modules/@trezor/connect/lib/api/getCoinInfo.js", "../node_modules/@trezor/connect/lib/api/getDeviceState.js", "../node_modules/@trezor/connect/lib/api/getFeatures.js", "../node_modules/@trezor/connect/lib/api/getFirmwareHash.js", "../node_modules/@trezor/connect/lib/api/getNonce.js", "../node_modules/@trezor/connect/lib/types/api/getOwnershipId.js", "../node_modules/@trezor/connect/lib/api/getOwnershipId.js", "../node_modules/@trezor/connect/lib/types/api/getOwnershipProof.js", "../node_modules/@trezor/connect/lib/api/getOwnershipProof.js", "../node_modules/@trezor/connect/lib/types/api/getPublicKey.js", "../node_modules/@trezor/connect/lib/api/getPublicKey.js", "../node_modules/@trezor/connect/lib/api/getSettings.js", "../node_modules/@trezor/connect/lib/types/api/pushTransaction.js", "../node_modules/@trezor/connect/lib/api/pushTransaction.js", "../node_modules/@trezor/connect/lib/types/api/recoveryDevice.js", "../node_modules/@trezor/connect/lib/api/recoveryDevice.js", "../node_modules/@trezor/connect/lib/types/api/requestLogin.js", "../node_modules/@trezor/connect/lib/api/requestLogin.js", "../node_modules/@trezor/connect/lib/api/firmware/verifyEntropy.js", "../node_modules/@trezor/connect/lib/api/resetDevice.js", "../node_modules/@trezor/connect/lib/api/loadDevice.js", "../node_modules/@trezor/connect/lib/api/setBrightness.js", "../node_modules/@trezor/connect/lib/api/setBusy.js", "../node_modules/@trezor/connect/lib/api/setProxy.js", "../node_modules/@trezor/connect/lib/api/signMessage.js", "../node_modules/@trezor/utxo-lib/lib/txWeightCalculator.js", "../node_modules/@trezor/connect/lib/api/bitcoin/transactionBytes.js", "../node_modules/@trezor/connect/lib/api/signTransaction.js", "../node_modules/@trezor/connect/lib/types/api/unlockPath.js", "../node_modules/@trezor/connect/lib/api/unlockPath.js", "../node_modules/@trezor/connect/lib/device/thp/thpCall.js", "../node_modules/@trezor/connect/lib/device/thp/handshake.js", "../node_modules/@trezor/connect/lib/device/thp/pairing.js", "../node_modules/@trezor/connect/lib/device/thp/session.js", "../node_modules/@trezor/connect/lib/device/thp/index.js", "../node_modules/@trezor/connect/lib/api/thpGetCredentials.js", "../node_modules/@trezor/connect/lib/api/thpRemoveCredentials.js", "../node_modules/@trezor/connect/lib/api/verifyMessage.js", "../node_modules/@trezor/connect/lib/api/wipeDevice.js", "../node_modules/@trezor/connect/lib/api/index.js", "../node_modules/@trezor/connect/lib/core/method.js", "../node_modules/@trezor/connect/lib/api/firmware/parseFirmwareHeaders.js", "../node_modules/@trezor/connect/lib/api/firmware/getBinary.js", "../node_modules/@trezor/connect/lib/api/firmware/modifyFirmware.js", "../node_modules/@trezor/connect/lib/api/firmware/uploadFirmware.js", "../node_modules/@trezor/connect/lib/api/firmware/calculateFirmwareHash.js", "../node_modules/@trezor/connect/lib/api/firmware/index.js", "../node_modules/@trezor/connect/lib/core/onCallFirmwareUpdate.js", "../node_modules/@trezor/analytics/lib/utils.js", "../node_modules/@trezor/analytics/lib/analytics.js", "../node_modules/@trezor/analytics/lib/types.js", "../node_modules/@trezor/analytics/lib/index.js", "../node_modules/@trezor/connect-analytics/lib/types/events.js", "../node_modules/@trezor/connect-analytics/lib/constants.js", "../node_modules/@trezor/connect-analytics/lib/index.js", "../node_modules/@trezor/connect/lib/data/analyticsInfo.js", "../node_modules/@trezor/connect/lib/data/thpSettings.js", "../node_modules/@trezor/connect/lib/data/version.js", "../node_modules/@trezor/connect/lib/data/connectSettings.js", "../node_modules/@trezor/connect/lib/device/resolveDescriptorForTaproot.js", "../node_modules/@trezor/connect/lib/device/DeviceCommands.js", "../node_modules/@trezor/transport/lib/errors-groups.js", "../node_modules/@trezor/connect/lib/utils/debug.js", "../node_modules/@trezor/connect/lib/device/DeviceCurrentSession.js", "../node_modules/@trezor/connect/lib/device/calculateRevisionForDevice.js", "../node_modules/@trezor/connect/lib/device/checkFirmwareRevision.js", "../node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHash.js", "../node_modules/@trezor/connect/lib/device/workflow/checkFirmwareHashWithRetries.js", "../node_modules/@trezor/connect/lib/device/workflow/handshake.js", "../node_modules/@trezor/connect/lib/utils/deviceFeaturesUtils.js", "../node_modules/@trezor/connect/lib/device/Device.js", "../node_modules/@trezor/connect/lib/device/TransportList.js", "../node_modules/@trezor/connect/lib/device/TransportManager.js", "../node_modules/@trezor/connect/lib/device/workflow/trezorPushNotification.js", "../node_modules/@trezor/connect/lib/device/DeviceList.js", "../node_modules/@trezor/connect/lib/device/StateStorage.js", "../node_modules/@trezor/connect/lib/device/workflow/validateState.js", "../node_modules/@trezor/connect/lib/device/workflow/index.js", "../node_modules/@trezor/connect/lib/utils/interactionTimeout.js", "../node_modules/@trezor/connect/lib/utils/popupPromiseManager.js", "../node_modules/@trezor/connect/lib/utils/uiPromiseManager.js", "../node_modules/@trezor/connect/lib/core/index.js", "../node_modules/@trezor/connect/lib/factory.js", "../node_modules/@trezor/connect/lib/exports.js", "../node_modules/@trezor/connect/lib/index.js", "../src/types/networkTypes.ts", "../src/utils/createViemChain.ts", "../src/utils/getEnvVar.ts", "../src/utils/log.ts", "../src/utils/formatting.ts", "../src/networks/getNetworkEnvKey.ts", "../src/utils/getTrezorDeployEnabled.ts", "../src/utils/createWalletGetter.ts", "../src/utils/ethersSignerCallContract.ts", "../src/utils/compileContracts.ts", "../src/utils/localhostViemChain.ts", "../src/utils/extractProxyAdminAddress.ts", "../src/utils/createEnvUpdater.ts", "../src/utils/getActualGasData.ts", "../src/utils/getViemClients.ts", "../src/constants/conceroNetworks.ts", "../src/utils/getGasParameters.ts", "../src/constants/config.ts", "../src/trezor/getTrezorAddress.ts", "../src/trezor/initTrezorOnce.ts", "../src/trezor/trezorSendTx.ts", "../src/trezor/trezorDeployContract.ts", "../src/trezor/trezorWriteContract.ts", "../src/deploy/GenericDeploy.ts", "../src/tokens/TokenSender.ts"], + "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getChunkSize = exports.reverseBuffer = void 0;\nconst reverseBuffer = src => {\n if (src.length < 1) return src;\n const buffer = Buffer.alloc(src.length);\n let j = buffer.length - 1;\n for (let i = 0; i < buffer.length / 2; i++) {\n buffer[i] = src[j];\n buffer[j] = src[i];\n j--;\n }\n return buffer;\n};\nexports.reverseBuffer = reverseBuffer;\nconst getChunkSize = n => {\n const buf = Buffer.allocUnsafe(1);\n buf.writeUInt8(n);\n return buf;\n};\nexports.getChunkSize = getChunkSize;\n//# sourceMappingURL=bufferUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getKeyByValue = getKeyByValue;\nexports.getValueByKey = getValueByKey;\nfunction getKeyByValue(obj, value) {\n return obj && Object.keys(obj).find(x => obj[x] === value);\n}\nfunction getValueByKey(obj, enumKey) {\n const key = obj && Object.keys(obj).find(x => x === enumKey);\n return key && obj[key];\n}\n//# sourceMappingURL=enumUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.throwError = void 0;\nconst throwError = reason => {\n throw new Error(reason);\n};\nexports.throwError = throwError;\n//# sourceMappingURL=throwError.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.normalizeVersion = exports.isNewerOrEqual = exports.isEqual = exports.isNewer = exports.tryParse = exports.isVersionArray = void 0;\nconst throwError_1 = require(\"./throwError\");\nconst isVersionArray = arr => Array.isArray(arr) && arr.length === 3 && arr.every(number => typeof number === 'number' && number >= 0);\nexports.isVersionArray = isVersionArray;\nconst tryParse = version => version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)([+-].*)?$/)?.slice(1, 4).map(n => Number(n));\nexports.tryParse = tryParse;\nconst validateArray = version => (0, exports.isVersionArray)(version) ? version : null;\nconst ensureArray = version => (typeof version === 'string' ? (0, exports.tryParse)(version) : validateArray(version)) ?? (0, throwError_1.throwError)(`version string is in wrong format: ${version}`);\nconst compare = ([majorX, minorX, patchX], [majorY, minorY, patchY]) => majorX - majorY || minorX - minorY || patchX - patchY;\nconst isNewer = (versionX, versionY) => compare(ensureArray(versionX), ensureArray(versionY)) > 0;\nexports.isNewer = isNewer;\nconst isEqual = (versionX, versionY) => compare(ensureArray(versionX), ensureArray(versionY)) === 0;\nexports.isEqual = isEqual;\nconst isNewerOrEqual = (versionX, versionY) => compare(ensureArray(versionX), ensureArray(versionY)) >= 0;\nexports.isNewerOrEqual = isNewerOrEqual;\nconst normalizeVersion = version => version.replace(/\\b0+(\\d)/g, '$1');\nexports.normalizeVersion = normalizeVersion;\n//# sourceMappingURL=versionUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.inDoubleQuotes = exports.inSingleQuotes = exports.inHTML = void 0;\nconst LT = / value.replace(LT, '<');\nexports.inHTML = inHTML;\nconst inSingleQuotes = value => value.replace(SQUOT, ''');\nexports.inSingleQuotes = inSingleQuotes;\nconst inDoubleQuotes = value => value.replace(QUOT, '"');\nexports.inDoubleQuotes = inDoubleQuotes;\n//# sourceMappingURL=xssFilters.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addDashesToSpaces = void 0;\nconst addDashesToSpaces = inputString => inputString.replace(/\\s+/g, '-');\nexports.addDashesToSpaces = addDashesToSpaces;\n//# sourceMappingURL=addDashesToSpaces.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayDistinct = void 0;\nconst arrayDistinct = (item, index, self) => self.indexOf(item) === index;\nexports.arrayDistinct = arrayDistinct;\n//# sourceMappingURL=arrayDistinct.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayPartition = void 0;\nconst arrayPartition = (array, condition) => array.reduce(([pass, fail], elem) => condition(elem) ? [[...pass, elem], fail] : [pass, [...fail, elem]], [[], []]);\nexports.arrayPartition = arrayPartition;\n//# sourceMappingURL=arrayPartition.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayShuffle = void 0;\nconst arrayShuffle = (array, {\n randomInt\n}) => {\n const shuffled = array.slice();\n for (let i = shuffled.length - 1; i > 0; i--) {\n const j = randomInt(0, i + 1);\n [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];\n }\n return shuffled;\n};\nexports.arrayShuffle = arrayShuffle;\n//# sourceMappingURL=arrayShuffle.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayToDictionary = void 0;\nconst validateKey = key => {\n if (['string', 'number'].includes(typeof key)) {\n return true;\n }\n return false;\n};\nconst arrayToDictionary = (array, getKey, multiple) => multiple ? array.reduce((prev, cur) => {\n const key = getKey(cur);\n if (validateKey(key)) {\n return {\n ...prev,\n [key]: [...(prev[key] ?? []), cur]\n };\n }\n return prev;\n}, {}) : array.reduce((prev, cur) => {\n const key = getKey(cur);\n if (validateKey(key)) {\n return {\n ...prev,\n [key]: cur\n };\n }\n return prev;\n}, {});\nexports.arrayToDictionary = arrayToDictionary;\n//# sourceMappingURL=arrayToDictionary.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAscii = isAscii;\nexports.getNonAsciiChars = getNonAsciiChars;\nconst ASCII_RANGE = '[^\\x20-\\x7E]';\nconst nonAsciiPattern = new RegExp(ASCII_RANGE);\nconst nonAsciiPatternGlobal = new RegExp(ASCII_RANGE, 'g');\nfunction isAscii(value) {\n if (!value) return true;\n return !nonAsciiPattern.test(value);\n}\nfunction getNonAsciiChars(value) {\n if (!value) return null;\n return value.match(nonAsciiPatternGlobal);\n}\n//# sourceMappingURL=asciiUtils.js.map", ";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.3.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2025 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // The index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return \u00B10 if x is \u00B10 or y is \u00B1Infinity, or return \u00B1Infinity as y is \u00B10.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne + (id === 2 && e > ne);\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on \u00B1Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and \u00B1Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, \u00B1Infinity, \u00B10 or \u00B11, or n is \u00B1Infinity, NaN or \u00B10.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to \u00B1Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to \u00B1Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to \u00B10: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = \u00B1Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return \u00B10, else return \u00B1Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, \u00B1Infinity or \u00B10?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return \u00B10 if either is \u00B10.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return \u00B1Infinity if either \u00B1Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BigNumber = void 0;\nconst tslib_1 = require(\"tslib\");\nconst bignumber_js_1 = tslib_1.__importDefault(require(\"bignumber.js\"));\nexports.BigNumber = bignumber_js_1.default.clone({\n EXPONENTIAL_AT: 1e9\n});\n//# sourceMappingURL=bigNumber.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bytesToHumanReadable = void 0;\nconst units = ['B', 'KB', 'MB', 'GB', 'TB'];\nconst bytesToHumanReadable = bytes => {\n let size = Math.abs(bytes);\n let i = 0;\n while (size >= 1024 || i >= units.length) {\n size /= 1024;\n i++;\n }\n return `${size.toFixed(1)} ${units[i]}`;\n};\nexports.bytesToHumanReadable = bytesToHumanReadable;\n//# sourceMappingURL=bytesToHumanReadable.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Cache = void 0;\nclass Cache {\n store;\n constructor() {\n this.store = new Map();\n }\n set(key, value, ttl) {\n this.store.set(key, {\n value,\n ttl: Date.now() + ttl\n });\n }\n get(key) {\n const entry = this.store.get(key);\n if (!entry) return;\n if (entry.ttl < Date.now()) {\n this.store.delete(key);\n return;\n }\n return entry.value;\n }\n delete(key) {\n this.store.delete(key);\n }\n}\nexports.Cache = Cache;\n//# sourceMappingURL=cache.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.capitalizeFirstLetter = void 0;\nconst capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);\nexports.capitalizeFirstLetter = capitalizeFirstLetter;\n//# sourceMappingURL=capitalizeFirstLetter.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.cloneObject = void 0;\nconst cloneObject = (obj, seen = new WeakMap()) => {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n if (obj instanceof ArrayBuffer) {\n return obj.slice(0);\n }\n if (ArrayBuffer.isView(obj)) {\n const TypedArrayConstructor = obj.constructor;\n return new TypedArrayConstructor(obj);\n }\n const clone = Array.isArray(obj) ? [] : {};\n seen.set(obj, clone);\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n if (typeof value === 'function' || typeof value === 'symbol') {\n continue;\n }\n clone[key] = (0, exports.cloneObject)(value, seen);\n }\n }\n return clone;\n};\nexports.cloneObject = cloneObject;\n//# sourceMappingURL=cloneObject.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isChanged = exports.deepEqual = void 0;\nconst deepEqual = (a, b) => {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (a === null || b === null) return false;\n if (typeof a !== 'object') return false;\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n if (Array.isArray(a)) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!(0, exports.deepEqual)(a[i], b[i])) return false;\n }\n return true;\n }\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (!(0, exports.deepEqual)(a[key], b[key])) return false;\n }\n return true;\n};\nexports.deepEqual = deepEqual;\nconst isChanged = (prev, current, filter) => {\n if (prev === current) return false;\n if (!prev || !current) return true;\n const prevType = Object.prototype.toString.call(prev);\n const currentType = Object.prototype.toString.call(current);\n if (prevType !== currentType) return true;\n if (currentType === '[object Array]') {\n if (prev.length !== current.length) return true;\n for (let i = 0; i < current.length; i++) {\n if ((0, exports.isChanged)(prev[i], current[i], filter)) return true;\n }\n } else if (currentType === '[object Object]') {\n const prevKeys = Object.keys(prev);\n const currentKeys = Object.keys(current);\n if (prevKeys.length !== currentKeys.length) return true;\n const prevDifference = prevKeys.find(k => currentKeys.indexOf(k) < 0);\n if (prevDifference) return true;\n for (let i = 0; i < currentKeys.length; i++) {\n const key = currentKeys[i];\n if (filter && Object.prototype.hasOwnProperty.call(filter, key) && prev[key] && current[key]) {\n const prevFiltered = {};\n const currentFiltered = {};\n for (let i2 = 0; i2 < filter[key].length; i2++) {\n const field = filter[key][i2];\n prevFiltered[field] = prev[key][field];\n currentFiltered[field] = current[key][field];\n }\n if ((0, exports.isChanged)(prevFiltered, currentFiltered)) return true;\n } else if ((0, exports.isChanged)(prev[key], current[key])) {\n return true;\n }\n }\n } else if (prev !== current) {\n return true;\n }\n return false;\n};\nexports.isChanged = isChanged;\n//# sourceMappingURL=comparison.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertTaprootXpub = void 0;\nconst convertTaprootXpub = ({\n xpub,\n direction\n}) => {\n const find = direction === 'h-to-apostrophe' ? 'h' : \"'\";\n const replace = direction === 'h-to-apostrophe' ? \"'\" : 'h';\n const openingSquareBracketSplit = xpub.split('[');\n if (openingSquareBracketSplit.length === 2) {\n const [beforeOpeningBracket, afterOpeningBracket] = openingSquareBracketSplit;\n const closingSquareBracketSplit = afterOpeningBracket.split(']');\n if (closingSquareBracketSplit.length === 2) {\n const [path, afterClosingBracket] = closingSquareBracketSplit;\n const correctedPath = path.replace(new RegExp(find, 'g'), replace);\n return `${beforeOpeningBracket}[${correctedPath}]${afterClosingBracket}`;\n }\n }\n return null;\n};\nexports.convertTaprootXpub = convertTaprootXpub;\n//# sourceMappingURL=convertTaprootXpub.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.countBytesInString = void 0;\nconst countBytesInString = input => encodeURI(input).split(/%..|./).length - 1;\nexports.countBytesInString = countBytesInString;\n//# sourceMappingURL=countBytesInString.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createCooldown = void 0;\nconst createCooldown = cooldownMs => {\n let last = 0;\n return () => {\n const now = Date.now();\n if (now - last >= cooldownMs) {\n last = now;\n return true;\n }\n return false;\n };\n};\nexports.createCooldown = createCooldown;\n//# sourceMappingURL=createCooldown.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createDeferred = void 0;\nconst createDeferred = id => {\n let localResolve = () => {};\n let localReject = () => {};\n const promise = new Promise((resolve, reject) => {\n localResolve = resolve;\n localReject = reject;\n });\n return {\n id,\n resolve: localResolve,\n reject: localReject,\n promise\n };\n};\nexports.createDeferred = createDeferred;\n//# sourceMappingURL=createDeferred.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createDeferredManager = void 0;\nconst createDeferred_1 = require(\"./createDeferred\");\nconst createDeferredManager = options => {\n const {\n initialId = 0,\n timeout: defaultTimeout = 0,\n onTimeout\n } = options ?? {};\n const promises = [];\n let ID = initialId;\n let timeoutHandle;\n const length = () => promises.length;\n const nextId = () => ID;\n const replanTimeout = () => {\n const now = Date.now();\n const nearestDeadline = promises.reduce((prev, {\n deadline\n }) => (prev && deadline ? Math.min : Math.max)(prev, deadline), 0);\n if (timeoutHandle) clearTimeout(timeoutHandle);\n timeoutHandle = nearestDeadline ? setTimeout(timeoutCallback, Math.max(nearestDeadline - now, 0)) : undefined;\n };\n const timeoutCallback = () => {\n const now = Date.now();\n promises.filter(promise => promise.deadline && promise.deadline <= now).forEach(promise => {\n onTimeout?.(promise.id);\n promise.deadline = 0;\n });\n replanTimeout();\n };\n const create = (timeout = defaultTimeout) => {\n const promiseId = ID++;\n const deferred = (0, createDeferred_1.createDeferred)(promiseId);\n const deadline = timeout && Date.now() + timeout;\n promises.push({\n ...deferred,\n deadline\n });\n if (timeout) replanTimeout();\n return {\n promiseId,\n promise: deferred.promise\n };\n };\n const extract = promiseId => {\n const index = promises.findIndex(({\n id\n }) => id === promiseId);\n const [promise] = index >= 0 ? promises.splice(index, 1) : [undefined];\n if (promise?.deadline) replanTimeout();\n return promise;\n };\n const resolve = (promiseId, value) => {\n const promise = extract(promiseId);\n promise?.resolve(value);\n return !!promise;\n };\n const reject = (promiseId, error) => {\n const promise = extract(promiseId);\n promise?.reject(error);\n return !!promise;\n };\n const rejectAll = error => {\n promises.forEach(promise => promise.reject(error));\n const deleted = promises.splice(0, promises.length);\n if (deleted.length) replanTimeout();\n };\n return {\n length,\n nextId,\n create,\n resolve,\n reject,\n rejectAll\n };\n};\nexports.createDeferredManager = createDeferredManager;\n//# sourceMappingURL=createDeferredManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createLazy = void 0;\nconst createDeferred_1 = require(\"./createDeferred\");\nconst createLazy = (initLazy, disposeLazy) => {\n let value;\n let valuePromise;\n const get = () => value;\n const getPending = () => valuePromise?.promise;\n const dispose = () => {\n if (valuePromise) {\n valuePromise.reject(new Error('Disposed during initialization'));\n valuePromise = undefined;\n }\n if (value !== undefined) {\n disposeLazy?.(value);\n value = undefined;\n }\n };\n const getOrInit = (...args) => {\n if (value !== undefined) return Promise.resolve(value);\n if (!valuePromise) {\n const deferred = (0, createDeferred_1.createDeferred)();\n valuePromise = deferred;\n initLazy(...args).then(val => {\n value = val;\n valuePromise = undefined;\n deferred.resolve(val);\n }).catch(err => {\n valuePromise = undefined;\n deferred.reject(err);\n });\n }\n return valuePromise.promise;\n };\n return {\n get,\n getPending,\n getOrInit,\n dispose\n };\n};\nexports.createLazy = createLazy;\n//# sourceMappingURL=createLazy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.extractUrlsFromText = void 0;\nconst URL_REGEX = /\\b(?:https?:\\/\\/|www\\.)[a-zA-Z0-9-._~:/?#[\\]@!$&'()*+,;=%]+\\b|(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}(?=\\b|\\s|$|\\])/gi;\nconst extractUrlsFromText = text => {\n const urls = [];\n const textParts = [];\n let lastIndex = 0;\n const matches = [...text.matchAll(URL_REGEX)];\n matches.forEach(match => {\n const url = match[0];\n const index = match.index !== undefined ? match.index : -1;\n if (lastIndex < index) {\n textParts.push(text.slice(lastIndex, index));\n }\n urls.push(url);\n lastIndex = index + url.length;\n });\n if (lastIndex < text.length) {\n textParts.push(text.slice(lastIndex));\n }\n if (textParts.length === 0 && urls.length > 0) {\n textParts.push('');\n }\n return {\n textParts,\n urls\n };\n};\nexports.extractUrlsFromText = extractUrlsFromText;\n//# sourceMappingURL=extractUrlsFromText.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLocaleSeparators = void 0;\nconst getLocaleSeparators = locale => {\n const numberFormat = new Intl.NumberFormat(locale);\n const parts = numberFormat.formatToParts(10000.1);\n const decimalSeparator = parts.find(({\n type\n }) => type === 'decimal')?.value;\n const thousandsSeparator = parts.find(({\n type\n }) => type === 'group')?.value;\n return {\n decimalSeparator,\n thousandsSeparator\n };\n};\nexports.getLocaleSeparators = getLocaleSeparators;\n//# sourceMappingURL=getLocaleSeparators.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRandomInt = void 0;\nconst crypto_1 = require(\"crypto\");\nconst getRandomInt = (min, max) => {\n if (!Number.isSafeInteger(min)) {\n throw new RangeError(`The \"min\" argument must be a safe integer. Received type ${typeof min} (${min})`);\n }\n if (!Number.isSafeInteger(max)) {\n throw new RangeError(`The \"max\" argument must be a safe integer. Received type ${typeof max} (${max})`);\n }\n if (min >= max) {\n throw new RangeError(`The value of \"max\" is out of range. It must be greater than the value of \"min\" (${min}). Received ${max}`);\n }\n const MAX_RANGE_32_BITS = 0xffffffff + 1;\n const range = max - min;\n if (range > MAX_RANGE_32_BITS) {\n throw new RangeError(`This function only provide 32 bits of entropy, therefore range cannot be more then 2^32.`);\n }\n const getRandomValues = typeof window !== 'undefined' ? array => window.crypto.getRandomValues(array) : array => (0, crypto_1.getRandomValues)(array);\n const array = new Uint32Array(1);\n const maxRange = MAX_RANGE_32_BITS - MAX_RANGE_32_BITS % range;\n let randomValue;\n do {\n getRandomValues(array);\n randomValue = array[0];\n } while (randomValue >= maxRange);\n return min + randomValue % range;\n};\nexports.getRandomInt = getRandomInt;\n//# sourceMappingURL=getRandomInt.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMutex = void 0;\nconst getMutex = () => {\n const DEFAULT_ID = Symbol();\n const locks = {};\n return async (lockId = DEFAULT_ID) => {\n while (locks[lockId]) {\n await locks[lockId];\n }\n let resolve = () => {};\n locks[lockId] = new Promise(res => {\n resolve = res;\n }).finally(() => {\n delete locks[lockId];\n });\n return resolve;\n };\n};\nexports.getMutex = getMutex;\n//# sourceMappingURL=getMutex.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSynchronize = void 0;\nconst getMutex_1 = require(\"./getMutex\");\nconst getSynchronize = mutex => {\n const lock = mutex ?? (0, getMutex_1.getMutex)();\n return (action, lockId) => lock(lockId).then(unlock => Promise.resolve().then(action).finally(unlock));\n};\nexports.getSynchronize = getSynchronize;\n//# sourceMappingURL=getSynchronize.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getWeakRandomId = void 0;\nconst getWeakRandomId = length => {\n let id = '';\n const list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (let i = 0; i < length; i++) {\n id += list.charAt(Math.floor(Math.random() * list.length));\n }\n return id;\n};\nexports.getWeakRandomId = getWeakRandomId;\n//# sourceMappingURL=getWeakRandomId.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getWeakRandomInt = void 0;\nconst getWeakRandomInt = (min, max) => {\n if (min >= max) {\n throw new RangeError(`The value of \"max\" is out of range. It must be greater than the value of \"min\" (${min}). Received ${max}`);\n }\n return Math.floor(Math.random() * (max - min) + min);\n};\nexports.getWeakRandomInt = getWeakRandomInt;\n//# sourceMappingURL=getWeakRandomInt.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getWeakRandomNumberInRange = void 0;\nconst getWeakRandomNumberInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;\nexports.getWeakRandomNumberInRange = getWeakRandomNumberInRange;\n//# sourceMappingURL=getWeakRandomNumberInRange.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hexToRgba = hexToRgba;\nfunction hexToRgba(hex, alpha) {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n if (alpha && alpha > 0) {\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n }\n return `rgb(${r}, ${g}, ${b})`;\n}\n//# sourceMappingURL=hexToRgba.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hexToRgbaArray = void 0;\nconst hexToRgbaArray = hex => {\n const norm = hex.replace('#', '');\n const full = norm.length === 6 ? norm + 'FF' : norm;\n return [parseInt(full.slice(0, 2), 16) / 255, parseInt(full.slice(2, 4), 16) / 255, parseInt(full.slice(4, 6), 16) / 255, parseInt(full.slice(6, 8), 16) / 255];\n};\nexports.hexToRgbaArray = hexToRgbaArray;\n//# sourceMappingURL=hexToRgbaArray.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isApproximatelyEqual = void 0;\nconst bigNumber_1 = require(\"./bigNumber\");\nconst isApproximatelyEqual = (value1, value2, relativeTolerance) => {\n value1 = new bigNumber_1.BigNumber(value1);\n value2 = new bigNumber_1.BigNumber(value2);\n relativeTolerance = new bigNumber_1.BigNumber(relativeTolerance);\n if (value1.eq(0)) return value1.eq(value2);\n const relativeDifference = value2.minus(value1).abs().dividedBy(value1);\n return relativeDifference.lte(relativeTolerance);\n};\nexports.isApproximatelyEqual = isApproximatelyEqual;\n//# sourceMappingURL=isApproximatelyEqual.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isArrayMember = void 0;\nconst isArrayMember = (value, arr) => arr.some(v => v === value);\nexports.isArrayMember = isArrayMember;\n//# sourceMappingURL=isArrayMember.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFullPath = void 0;\nconst isFullPath = path => {\n const fullPathPattern = /^(\\/|([a-zA-Z]:\\\\))/;\n return fullPathPattern.test(path);\n};\nexports.isFullPath = isFullPath;\n//# sourceMappingURL=isFullPath.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isHex = void 0;\nconst isHex = str => {\n const regExp = /^(0x|0X)?[0-9A-Fa-f]+$/g;\n return regExp.test(str);\n};\nexports.isHex = isHex;\n//# sourceMappingURL=isHex.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isNotUndefined = void 0;\nconst isNotUndefined = item => typeof item !== 'undefined';\nexports.isNotUndefined = isNotUndefined;\n//# sourceMappingURL=isNotUndefined.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isUrlWithQuery = exports.isUrl = void 0;\nconst URL_REGEXP = /^(http|ws)s?:\\/\\/[a-z0-9]([a-z0-9.-]+)?(:[0-9]{1,5})?(\\/[a-z0-9-_]+)*\\/?$/i;\nconst URL_WITH_QUERY_REGEXP = /^(http|ws)s?:\\/\\/[a-z0-9]([a-z0-9.-]+)?(:[0-9]{1,5})?(\\/[a-z0-9-_]+)*\\/?(\\?[a-z0-9-_]+=[a-z0-9-_]+(&[a-z0-9-_]+=[a-z0-9-_]+)*)?$/i;\nconst isUrl = value => URL_REGEXP.test(value);\nexports.isUrl = isUrl;\nconst isUrlWithQuery = value => URL_WITH_QUERY_REGEXP.test(value);\nexports.isUrlWithQuery = isUrlWithQuery;\n//# sourceMappingURL=isUrl.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isWhitelistedHost = void 0;\nconst isWhitelistedHost = (hostname, whitelist = ['127.0.0.1', 'localhost']) => {\n if (typeof hostname !== 'string') {\n return false;\n }\n if (hostname.trim() === '') {\n return false;\n }\n return whitelist.some(whitelistedUrl => whitelistedUrl === hostname || hostname.endsWith(`.${whitelistedUrl}`));\n};\nexports.isWhitelistedHost = isWhitelistedHost;\n//# sourceMappingURL=isWhitelistedHost.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Log = void 0;\nclass Log {\n prefix;\n enabled;\n css = '';\n messages;\n logWriter;\n MAX_ENTRIES = 100;\n constructor(prefix, enabled, logWriter) {\n this.prefix = prefix;\n this.enabled = enabled;\n this.messages = [];\n if (logWriter) {\n this.logWriter = logWriter;\n }\n }\n setColors(colors) {\n this.css = typeof window !== 'undefined' && colors[this.prefix] ? colors[this.prefix] : '';\n }\n addMessage({\n level,\n prefix,\n timestamp\n }, ...args) {\n const message = {\n level,\n prefix,\n css: this.css,\n message: args,\n timestamp: timestamp || Date.now()\n };\n this.messages.push(message);\n if (this.logWriter) {\n try {\n this.logWriter.add(message);\n } catch (err) {\n console.error('There was an error adding log message', err, message);\n }\n }\n if (this.messages.length > this.MAX_ENTRIES) {\n this.messages.shift();\n }\n }\n setWriter(logWriter) {\n this.logWriter = logWriter;\n }\n log(...args) {\n this.addMessage({\n level: 'log',\n prefix: this.prefix\n }, ...args);\n if (this.enabled) {\n console.log(`%c${this.prefix}`, this.css, ...args);\n }\n }\n error(...args) {\n this.addMessage({\n level: 'error',\n prefix: this.prefix\n }, ...args);\n if (this.enabled) {\n console.error(`%c${this.prefix}`, this.css, ...args);\n }\n }\n info(...args) {\n this.addMessage({\n level: 'info',\n prefix: this.prefix\n }, ...args);\n if (this.enabled) {\n console.info(`%c${this.prefix}`, this.css, ...args);\n }\n }\n warn(...args) {\n this.addMessage({\n level: 'warn',\n prefix: this.prefix\n }, ...args);\n if (this.enabled) {\n console.warn(`%c${this.prefix}`, this.css, ...args);\n }\n }\n debug(...args) {\n this.addMessage({\n level: 'debug',\n prefix: this.prefix\n }, ...args);\n if (this.enabled) {\n if (this.css) {\n console.log(`%c${this.prefix}`, this.css, ...args);\n } else {\n console.log(this.prefix, ...args);\n }\n }\n }\n getLog() {\n return this.messages;\n }\n}\nexports.Log = Log;\n//# sourceMappingURL=logs.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LogsManager = void 0;\nconst logs_1 = require(\"./logs\");\nclass LogsManager {\n logs = {};\n writer;\n colors = {};\n constructor({\n colors\n }) {\n this.colors = colors;\n }\n initLog(prefix, enabled, logWriter) {\n const instanceWriter = logWriter || this.writer;\n const instance = new logs_1.Log(prefix, !!enabled, instanceWriter);\n if (this.colors) {\n instance.setColors(this.colors);\n }\n this.logs[prefix] = instance;\n return instance;\n }\n setLogWriter(logWriterFactory) {\n Object.keys(this.logs).forEach(key => {\n this.writer = logWriterFactory();\n if (this.writer) {\n this.logs[key].setWriter(this.writer);\n const {\n messages\n } = this.logs[key];\n messages.forEach(message => {\n this.writer?.add(message);\n });\n }\n });\n }\n enableLog(enabled) {\n Object.keys(this.logs).forEach(key => {\n this.logs[key].enabled = !!enabled;\n });\n }\n enableLogByPrefix(prefix, enabled) {\n if (this.logs[prefix]) {\n this.logs[prefix].enabled = enabled;\n }\n }\n getLog() {\n let logs = [];\n Object.keys(this.logs).forEach(key => {\n logs = logs.concat(this.logs[key].messages);\n });\n logs.sort((a, b) => a.timestamp - b.timestamp);\n return logs;\n }\n}\nexports.LogsManager = LogsManager;\n//# sourceMappingURL=logsManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mergeDeepObject = void 0;\nconst isObject = obj => {\n if (typeof obj === 'object' && obj !== null) {\n if (typeof Object.getPrototypeOf === 'function') {\n const prototype = Object.getPrototypeOf(obj);\n return prototype === Object.prototype || prototype === null;\n }\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n return false;\n};\nconst mergeValuesWithPath = (target, value, [key, ...rest]) => {\n if (key === undefined) {\n return mergeValues(target, value);\n } else if (!isObject(target)) {\n return {\n [key]: mergeValuesWithPath({}, value, rest)\n };\n } else {\n return {\n ...target,\n [key]: mergeValuesWithPath(target[key], value, rest)\n };\n }\n};\nconst mergeValues = (target, value) => {\n if (Array.isArray(target) && Array.isArray(value)) {\n return exports.mergeDeepObject.options.mergeArrays ? Array.from(new Set(target.concat(value))) : value;\n } else if (isObject(target) && isObject(value)) {\n return (0, exports.mergeDeepObject)(target, value);\n } else {\n return value;\n }\n};\nconst mergeDeepObject = (...objects) => objects.reduce((result, current) => {\n if (Array.isArray(current)) {\n throw new TypeError('Arguments provided to ts-deepmerge must be objects, not arrays.');\n }\n Object.keys(current).forEach(key => {\n if (['__proto__', 'constructor', 'prototype'].includes(key)) {\n return;\n }\n if (exports.mergeDeepObject.options.dotNotation) {\n const [first, ...rest] = key.split('.');\n result[first] = mergeValuesWithPath(result[first], current[key], rest);\n } else {\n result[key] = mergeValues(result[key], current[key]);\n }\n });\n return result;\n}, {});\nexports.mergeDeepObject = mergeDeepObject;\nconst defaultOptions = {\n mergeArrays: true,\n dotNotation: false\n};\nexports.mergeDeepObject.options = defaultOptions;\nexports.mergeDeepObject.withOptions = (options, ...objects) => {\n exports.mergeDeepObject.options = {\n ...defaultOptions,\n ...options\n };\n const result = (0, exports.mergeDeepObject)(...objects);\n exports.mergeDeepObject.options = defaultOptions;\n return result;\n};\n//# sourceMappingURL=mergeDeepObject.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.objectPartition = void 0;\nconst objectPartition = (obj, keys) => keys.reduce(([included, excluded], key) => {\n const {\n [key]: value,\n ...rest\n } = excluded;\n return typeof value !== 'undefined' ? [{\n ...included,\n [key]: value\n }, rest] : [included, excluded];\n}, [{}, obj]);\nexports.objectPartition = objectPartition;\n//# sourceMappingURL=objectPartition.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseElectrumUrl = void 0;\nconst ELECTRUM_URL_REGEX = /^(?:([a-zA-Z0-9.-]+)|\\[([a-f0-9:]+)\\]):([0-9]{1,5}):([ts])$/;\nconst parseElectrumUrl = url => {\n const match = url.match(ELECTRUM_URL_REGEX);\n if (!match) return undefined;\n return {\n host: match[1] ?? match[2],\n port: Number.parseInt(match[3], 10),\n protocol: match[4]\n };\n};\nexports.parseElectrumUrl = parseElectrumUrl;\n//# sourceMappingURL=parseElectrumUrl.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseHostname = void 0;\nconst HOSTNAME_REGEX = /^([a-z0-9.+-]+:\\/\\/)?([a-z0-9.-]+)([:/][^:/]+)*\\/?$/i;\nconst parseHostname = url => url.match(HOSTNAME_REGEX)?.[2]?.toLowerCase();\nexports.parseHostname = parseHostname;\n//# sourceMappingURL=parseHostname.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.promiseAllSequence = void 0;\nconst promiseAllSequence = async actions => {\n const results = [];\n for (let i = 0; i < actions.length; ++i) {\n const result = await actions[i]();\n results.push(result);\n }\n return results;\n};\nexports.promiseAllSequence = promiseAllSequence;\n//# sourceMappingURL=promiseAllSequence.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.redactUserPathFromString = exports.startOfUserPathRegex = void 0;\nexports.startOfUserPathRegex = /([/\\\\][Uu]sers[/\\\\]{1,4})([^\"^'^[^\\]^/^\\\\]*)/g;\nconst redactUserPathFromString = text => text.replace(exports.startOfUserPathRegex, '$1[*]');\nexports.redactUserPathFromString = redactUserPathFromString;\n//# sourceMappingURL=redactUserPath.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resolveAfter = void 0;\nconst createDeferred_1 = require(\"./createDeferred\");\nconst resolveAfter = (msec, signal, value) => {\n const {\n promise,\n reject,\n resolve\n } = (0, createDeferred_1.createDeferred)();\n const timeout = setTimeout(resolve, msec, value);\n const onAbort = () => reject(signal?.reason);\n signal?.addEventListener('abort', onAbort);\n if (signal?.aborted) onAbort();\n return promise.finally(() => {\n clearTimeout(timeout);\n signal?.removeEventListener('abort', onAbort);\n });\n};\nexports.resolveAfter = resolveAfter;\n//# sourceMappingURL=resolveAfter.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.scheduleAction = exports.ScheduleActionDeadlineError = exports.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE = exports.ScheduleActionTimeoutError = exports.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE = exports.RejectWhenAbortedError = exports.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE = void 0;\nexports.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE = 'Aborted by signal';\nclass RejectWhenAbortedError extends Error {\n constructor() {\n super(exports.SCHEDULE_ACTION_ABORTED_ERROR_MESSAGE);\n }\n}\nexports.RejectWhenAbortedError = RejectWhenAbortedError;\nconst isArray = attempts => Array.isArray(attempts);\nconst resolveAfterMs = (ms, clear) => new Promise((resolve, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n if (ms === undefined) return resolve();\n let timeout;\n const onClear = () => {\n clearTimeout(timeout);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n timeout = setTimeout(() => {\n clear.removeEventListener('abort', onClear);\n resolve();\n }, ms);\n clear.addEventListener('abort', onClear);\n});\nconst rejectAfterMs = (ms, reason, clear) => new Promise((_, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n let timeout;\n const onClear = () => {\n clearTimeout(timeout);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n timeout = setTimeout(() => {\n clear.removeEventListener('abort', onClear);\n reject(reason);\n }, ms);\n clear.addEventListener('abort', onClear);\n});\nconst maybeRejectAfterMs = (ms, reason, clear) => ms === undefined ? [] : [rejectAfterMs(ms, reason, clear)];\nconst rejectWhenAborted = (signal, clear) => new Promise((_, reject) => {\n const errorSignal = new RejectWhenAbortedError();\n if (clear.aborted) return reject(errorSignal);\n if (signal?.aborted) return reject(errorSignal);\n const onAbort = () => reject(errorSignal);\n signal?.addEventListener('abort', onAbort);\n const onClear = () => {\n signal?.removeEventListener('abort', onAbort);\n clear.removeEventListener('abort', onClear);\n reject(errorSignal);\n };\n clear.addEventListener('abort', onClear);\n});\nconst resolveAction = async (action, clear) => {\n const aborter = new AbortController();\n if (clear.aborted) aborter.abort();\n const onClear = () => {\n clear.removeEventListener('abort', onClear);\n aborter.abort();\n };\n clear.addEventListener('abort', onClear);\n try {\n return await new Promise(resolve => resolve(action(aborter.signal)));\n } finally {\n if (!clear.aborted) clear.removeEventListener('abort', onClear);\n }\n};\nconst attemptLoop = async (attempts, attempt, failure, clear) => {\n for (let a = 0; a < attempts - 1; a++) {\n if (clear.aborted) break;\n const aborter = new AbortController();\n const onClear = () => aborter.abort();\n clear.addEventListener('abort', onClear);\n try {\n return await attempt(a, aborter.signal);\n } catch (error) {\n onClear();\n await failure(a, error);\n } finally {\n clear.removeEventListener('abort', onClear);\n }\n }\n return clear.aborted ? Promise.reject(new RejectWhenAbortedError()) : attempt(attempts - 1, clear);\n};\nexports.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE = 'Aborted by timeout';\nclass ScheduleActionTimeoutError extends Error {\n constructor() {\n super(exports.SCHEDULE_ACTION_TIMEOUT_ERROR_MESSAGE);\n }\n}\nexports.ScheduleActionTimeoutError = ScheduleActionTimeoutError;\nexports.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE = 'Aborted by deadline';\nclass ScheduleActionDeadlineError extends Error {\n constructor() {\n super(exports.SCHEDULE_ACTION_DEADLINE_ERROR_MESSAGE);\n }\n}\nexports.ScheduleActionDeadlineError = ScheduleActionDeadlineError;\nconst scheduleAction = async (action, params) => {\n const {\n signal,\n delay,\n attempts,\n timeout,\n deadline,\n gap,\n attemptFailureHandler\n } = params;\n const deadlineMs = deadline && deadline - Date.now();\n const attemptCount = isArray(attempts) ? attempts.length : attempts ?? (deadline ? Infinity : 1);\n const clearAborter = new AbortController();\n const clear = clearAborter.signal;\n const getParams = isArray(attempts) ? attempt => attempts[attempt] : () => ({\n timeout,\n gap\n });\n const errorDeadline = new ScheduleActionDeadlineError();\n const errorTimeout = new ScheduleActionTimeoutError();\n const graceful = params.graceful && signal;\n const actionAborter = new AbortController();\n if (graceful) {\n if (signal.aborted) {\n actionAborter.abort();\n } else {\n const onAbort = () => {\n signal.removeEventListener('abort', onAbort);\n clear.removeEventListener('abort', onAbort);\n actionAborter.abort();\n };\n signal.addEventListener('abort', onAbort);\n clear.addEventListener('abort', onAbort);\n }\n }\n try {\n return await Promise.race([...(graceful ? [] : [rejectWhenAborted(signal, clear)]), ...maybeRejectAfterMs(deadlineMs, errorDeadline, clear), resolveAfterMs(delay, clear).then(() => attemptLoop(attemptCount, (attempt, abort) => Promise.race([...maybeRejectAfterMs(getParams(attempt).timeout, errorTimeout, clear), resolveAction(action, abort)]), (attempt, error) => {\n const errorHandlerResult = attemptFailureHandler?.(error);\n return errorHandlerResult ? Promise.reject(errorHandlerResult) : resolveAfterMs(getParams(attempt).gap ?? 0, clear);\n }, graceful ? actionAborter.signal : clear))]);\n } finally {\n clearAborter.abort();\n }\n};\nexports.scheduleAction = scheduleAction;\n//# sourceMappingURL=scheduleAction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.serializeError = void 0;\nconst serializeError = error => {\n if (error instanceof Error) {\n return JSON.stringify({\n message: error.toString(),\n stackTrace: error.stack\n });\n }\n if (typeof error === 'object') {\n return JSON.stringify(error);\n }\n return `${error}`;\n};\nexports.serializeError = serializeError;\n//# sourceMappingURL=serializeError.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.splitStringEveryNCharacters = splitStringEveryNCharacters;\nfunction splitStringEveryNCharacters(value, n) {\n if (n === 0) {\n return [];\n }\n const regex = new RegExp(`.{1,${n}}`, 'g');\n return value.match(regex) ?? [];\n}\n//# sourceMappingURL=splitStringEveryNCharacters.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Throttler = void 0;\nclass Throttler {\n delay;\n intervals;\n callbacks;\n constructor(delay) {\n this.delay = delay;\n this.intervals = {};\n this.callbacks = {};\n }\n throttle(id, callback) {\n if (this.intervals[id]) {\n this.callbacks[id] = callback;\n } else {\n callback();\n this.intervals[id] = setInterval(() => this.tick(id), this.delay);\n }\n }\n tick(id) {\n if (this.callbacks[id]) {\n this.callbacks[id]();\n delete this.callbacks[id];\n } else {\n this.cancel(id);\n }\n }\n cancel(id) {\n clearInterval(this.intervals[id]);\n delete this.intervals[id];\n delete this.callbacks[id];\n }\n dispose() {\n Object.keys(this.intervals).forEach(this.cancel, this);\n }\n}\nexports.Throttler = Throttler;\n//# sourceMappingURL=throttler.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.topologicalSort = void 0;\nconst arrayPartition_1 = require(\"./arrayPartition\");\nconst topologicalSort = (elements, precedes, tie) => {\n const result = [];\n const filterRoots = verts => (0, arrayPartition_1.arrayPartition)(verts, succ => !verts.some(pred => precedes(pred, succ)));\n let elem = elements;\n while (elem.length) {\n const [roots, rest] = filterRoots(elem);\n if (!roots.length) throw new Error('Cycle detected');\n result.push(...(tie ? roots.sort(tie) : roots));\n elem = rest;\n }\n return result;\n};\nexports.topologicalSort = topologicalSort;\n//# sourceMappingURL=topologicalSort.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.typedObjectValues = exports.typedObjectKeys = exports.typedObjectEntries = void 0;\nexports.typedObjectFromEntries = typedObjectFromEntries;\nconst typedObjectEntries = obj => Object.entries(obj);\nexports.typedObjectEntries = typedObjectEntries;\nfunction typedObjectFromEntries(entries) {\n return Object.fromEntries(entries);\n}\nconst typedObjectKeys = obj => Object.keys(obj);\nexports.typedObjectKeys = typedObjectKeys;\nconst typedObjectValues = obj => Object.values(obj);\nexports.typedObjectValues = typedObjectValues;\n//# sourceMappingURL=typedObject.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TypedEmitter = void 0;\nconst events_1 = require(\"events\");\nclass TypedEmitter extends events_1.EventEmitter {\n listenerCount(eventName) {\n return super.listenerCount(eventName);\n }\n}\nexports.TypedEmitter = TypedEmitter;\n//# sourceMappingURL=typedEventEmitter.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.urlToOnion = void 0;\nconst urlToOnion = (url, onionDomains) => {\n const [, protocol, subdomain, domain, rest] = url.match(/^(http|ws)s?:\\/\\/([^:/]+\\.)?([^/.]+\\.[^/.]+)(\\/.*)?$/i) ?? [];\n if (!domain || !onionDomains[domain]) return;\n return `${protocol}://${subdomain ?? ''}${onionDomains[domain]}${rest ?? ''}`;\n};\nexports.urlToOnion = urlToOnion;\n//# sourceMappingURL=urlToOnion.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createZip = void 0;\nconst createZip = buffers => {\n const fileEntries = [];\n const centralDirectory = [];\n let offset = 0;\n buffers.forEach(({\n name,\n content\n }) => {\n const fileData = content;\n const fileHeader = new Uint8Array(30 + name.length);\n const localFileHeader = new DataView(fileHeader.buffer);\n localFileHeader.setUint32(0, 0x04034b50, true);\n localFileHeader.setUint16(4, 0x0, true);\n localFileHeader.setUint16(6, 0x0, true);\n localFileHeader.setUint16(8, 0x0, true);\n localFileHeader.setUint16(10, 0x0, true);\n localFileHeader.setUint16(12, 0x0, true);\n localFileHeader.setUint32(14, 0, true);\n localFileHeader.setUint32(18, fileData.byteLength, true);\n localFileHeader.setUint32(22, fileData.byteLength, true);\n localFileHeader.setUint16(26, name.length, true);\n fileHeader.set(new TextEncoder().encode(name), 30);\n fileEntries.push(fileHeader, fileData);\n const centralHeader = new Uint8Array(46 + name.length);\n const centralView = new DataView(centralHeader.buffer);\n centralView.setUint32(0, 0x02014b50, true);\n centralView.setUint16(4, 0x0, true);\n centralView.setUint16(6, 0x0, true);\n centralView.setUint16(8, 0x0, true);\n centralView.setUint16(10, 0x0, true);\n centralView.setUint16(12, 0x0, true);\n centralView.setUint16(14, 0x0, true);\n centralView.setUint32(16, 0, true);\n centralView.setUint32(20, fileData.byteLength, true);\n centralView.setUint32(24, fileData.byteLength, true);\n centralView.setUint16(28, name.length, true);\n centralView.setUint32(42, offset, true);\n centralHeader.set(new TextEncoder().encode(name), 46);\n centralDirectory.push(centralHeader);\n offset += fileHeader.length + fileData.byteLength;\n });\n const eocd = new Uint8Array(22);\n const eocdView = new DataView(eocd.buffer);\n eocdView.setUint32(0, 0x06054b50, true);\n eocdView.setUint16(8, centralDirectory.length, true);\n eocdView.setUint16(10, centralDirectory.length, true);\n eocdView.setUint32(12, centralDirectory.reduce((sum, cd) => sum + cd.byteLength, 0), true);\n eocdView.setUint32(16, offset, true);\n return new Blob([...fileEntries, ...centralDirectory, eocd], {\n type: 'application/zip'\n });\n};\nexports.createZip = createZip;\n//# sourceMappingURL=zip.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeTrailingSlashes = void 0;\nconst removeTrailingSlashes = input => {\n if (!input) {\n return input || '';\n }\n let i = input.length;\n while (i > 0 && input[i - 1] === '/') {\n i--;\n }\n return input.substring(0, i);\n};\nexports.removeTrailingSlashes = removeTrailingSlashes;\n//# sourceMappingURL=removeTrailingSlashes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getIntegerInRangeFromString = void 0;\nconst getIntegerInRangeFromString = (input, max) => {\n let hash = 0;\n if (input.length === 0) {\n return 0;\n }\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash |= 0;\n }\n return Math.abs(hash % max);\n};\nexports.getIntegerInRangeFromString = getIntegerInRangeFromString;\n//# sourceMappingURL=getIntegerInRangeFromString.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.safeBigIntStringify = void 0;\nconst safeBigIntStringify = v => JSON.stringify(v, (_k, val) => typeof val === 'bigint' ? val.toString() : val);\nexports.safeBigIntStringify = safeBigIntStringify;\n//# sourceMappingURL=safeBigIntStringify.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.union = union;\nfunction union(data) {\n return [...new Set(data)];\n}\n//# sourceMappingURL=union.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isInt = isInt;\nfunction isInt(value) {\n return Number.isInteger(value);\n}\n//# sourceMappingURL=isInt.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roundTo = roundTo;\nfunction roundTo(value, precision = 2) {\n const x = 10 ** precision;\n return Math.round(value * x) / x;\n}\n//# sourceMappingURL=number.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitizeFilename = void 0;\nconst MAX_FILENAME_LENGTH = 250;\nconst sanitizeFilename = (filename, replacement = '_') => {\n if (!filename || filename.trim().length === 0) {\n return undefined;\n }\n const illegalRe = /[<>:\"\\/\\\\|?*\\x00-\\x1F]/g;\n let safeName = filename.replace(illegalRe, replacement);\n if (safeName.length > MAX_FILENAME_LENGTH) {\n safeName = safeName.substring(0, MAX_FILENAME_LENGTH);\n }\n safeName = safeName.replace(/[. ]+$/, '');\n const reservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;\n if (reservedRe.test(safeName)) {\n safeName = `${safeName}${replacement}`;\n }\n return safeName || undefined;\n};\nexports.sanitizeFilename = sanitizeFilename;\n//# sourceMappingURL=sanitizeFilename.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isApproximatelyEqual = exports.hexToRgbaArray = exports.hexToRgba = exports.xssFilters = exports.versionUtils = exports.enumUtils = exports.bufferUtils = void 0;\nconst tslib_1 = require(\"tslib\");\nexports.bufferUtils = tslib_1.__importStar(require(\"./bufferUtils\"));\nexports.enumUtils = tslib_1.__importStar(require(\"./enumUtils\"));\nexports.versionUtils = tslib_1.__importStar(require(\"./versionUtils\"));\nexports.xssFilters = tslib_1.__importStar(require(\"./xssFilters\"));\ntslib_1.__exportStar(require(\"./addDashesToSpaces\"), exports);\ntslib_1.__exportStar(require(\"./arrayDistinct\"), exports);\ntslib_1.__exportStar(require(\"./arrayPartition\"), exports);\ntslib_1.__exportStar(require(\"./arrayShuffle\"), exports);\ntslib_1.__exportStar(require(\"./arrayToDictionary\"), exports);\ntslib_1.__exportStar(require(\"./asciiUtils\"), exports);\ntslib_1.__exportStar(require(\"./bigNumber\"), exports);\ntslib_1.__exportStar(require(\"./bytesToHumanReadable\"), exports);\ntslib_1.__exportStar(require(\"./cache\"), exports);\ntslib_1.__exportStar(require(\"./capitalizeFirstLetter\"), exports);\ntslib_1.__exportStar(require(\"./cloneObject\"), exports);\ntslib_1.__exportStar(require(\"./comparison\"), exports);\ntslib_1.__exportStar(require(\"./convertTaprootXpub\"), exports);\ntslib_1.__exportStar(require(\"./countBytesInString\"), exports);\ntslib_1.__exportStar(require(\"./createCooldown\"), exports);\ntslib_1.__exportStar(require(\"./createDeferred\"), exports);\ntslib_1.__exportStar(require(\"./createDeferredManager\"), exports);\ntslib_1.__exportStar(require(\"./createLazy\"), exports);\ntslib_1.__exportStar(require(\"./extractUrlsFromText\"), exports);\ntslib_1.__exportStar(require(\"./getLocaleSeparators\"), exports);\ntslib_1.__exportStar(require(\"./getRandomInt\"), exports);\ntslib_1.__exportStar(require(\"./getSynchronize\"), exports);\ntslib_1.__exportStar(require(\"./getWeakRandomId\"), exports);\ntslib_1.__exportStar(require(\"./getWeakRandomInt\"), exports);\ntslib_1.__exportStar(require(\"./getWeakRandomNumberInRange\"), exports);\nvar hexToRgba_1 = require(\"./hexToRgba\");\nObject.defineProperty(exports, \"hexToRgba\", {\n enumerable: true,\n get: function () {\n return hexToRgba_1.hexToRgba;\n }\n});\nvar hexToRgbaArray_1 = require(\"./hexToRgbaArray\");\nObject.defineProperty(exports, \"hexToRgbaArray\", {\n enumerable: true,\n get: function () {\n return hexToRgbaArray_1.hexToRgbaArray;\n }\n});\nvar isApproximatelyEqual_1 = require(\"./isApproximatelyEqual\");\nObject.defineProperty(exports, \"isApproximatelyEqual\", {\n enumerable: true,\n get: function () {\n return isApproximatelyEqual_1.isApproximatelyEqual;\n }\n});\ntslib_1.__exportStar(require(\"./isArrayMember\"), exports);\ntslib_1.__exportStar(require(\"./isFullPath\"), exports);\ntslib_1.__exportStar(require(\"./isHex\"), exports);\ntslib_1.__exportStar(require(\"./isNotUndefined\"), exports);\ntslib_1.__exportStar(require(\"./isUrl\"), exports);\ntslib_1.__exportStar(require(\"./isWhitelistedHost\"), exports);\ntslib_1.__exportStar(require(\"./logs\"), exports);\ntslib_1.__exportStar(require(\"./logsManager\"), exports);\ntslib_1.__exportStar(require(\"./mergeDeepObject\"), exports);\ntslib_1.__exportStar(require(\"./objectPartition\"), exports);\ntslib_1.__exportStar(require(\"./parseElectrumUrl\"), exports);\ntslib_1.__exportStar(require(\"./parseHostname\"), exports);\ntslib_1.__exportStar(require(\"./promiseAllSequence\"), exports);\ntslib_1.__exportStar(require(\"./redactUserPath\"), exports);\ntslib_1.__exportStar(require(\"./resolveAfter\"), exports);\ntslib_1.__exportStar(require(\"./scheduleAction\"), exports);\ntslib_1.__exportStar(require(\"./serializeError\"), exports);\ntslib_1.__exportStar(require(\"./splitStringEveryNCharacters\"), exports);\ntslib_1.__exportStar(require(\"./throttler\"), exports);\ntslib_1.__exportStar(require(\"./throwError\"), exports);\ntslib_1.__exportStar(require(\"./topologicalSort\"), exports);\ntslib_1.__exportStar(require(\"./typedObject\"), exports);\ntslib_1.__exportStar(require(\"./typedEventEmitter\"), exports);\ntslib_1.__exportStar(require(\"./urlToOnion\"), exports);\ntslib_1.__exportStar(require(\"./zip\"), exports);\ntslib_1.__exportStar(require(\"./removeTrailingSlashes\"), exports);\ntslib_1.__exportStar(require(\"./getIntegerInRangeFromString\"), exports);\ntslib_1.__exportStar(require(\"./safeBigIntStringify\"), exports);\ntslib_1.__exportStar(require(\"./union\"), exports);\ntslib_1.__exportStar(require(\"./isInt\"), exports);\ntslib_1.__exportStar(require(\"./number\"), exports);\ntslib_1.__exportStar(require(\"./sanitizeFilename\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LIBUSB_ERROR_MESSAGE = exports.serializeError = exports.TypedError = exports.TransportError = exports.nestError = exports.TrezorError = exports.ERROR_CODES = void 0;\nexports.ERROR_CODES = {\n Init_NotInitialized: 'TrezorConnect not initialized',\n Init_AlreadyInitialized: 'TrezorConnect has been already initialized',\n Init_IframeBlocked: 'Iframe blocked',\n Init_IframeTimeout: 'Iframe timeout',\n Init_ManifestMissing: 'Manifest not set. Read more at https://github.com/trezor/trezor-suite/blob/develop/docs/packages/connect/index.md',\n Popup_ConnectionMissing: 'Unable to establish connection with iframe',\n Desktop_ConnectionMissing: 'Unable to establish connection with Suite',\n Transport_Missing: 'Transport is missing',\n Method_InvalidPackage: 'This package is not suitable to work with browser. Use @trezor/connect-web package instead',\n Method_InvalidParameter: '',\n Method_NotAllowed: 'Method not allowed for this configuration',\n Method_PermissionsNotGranted: 'Permissions not granted',\n Method_Cancel: 'Canceled',\n Method_Interrupted: 'Popup closed',\n Method_UnknownCoin: 'Coin not found',\n Method_AddressNotMatch: 'Addresses do not match',\n Method_Discovery_BundleException: '',\n Method_Override: 'override',\n Method_NoResponse: 'Call resolved without response',\n Method_Unsupported: 'Unsupported method',\n Backend_NotSupported: 'BlockchainLink settings not found in coins.json',\n Backend_WorkerMissing: '',\n Backend_Disconnected: 'Backend disconnected',\n Backend_Invalid: 'Invalid backend',\n Backend_Error: '',\n Runtime: '',\n Device_NotFound: 'Device not found',\n Device_InitializeFailed: '',\n Device_FwException: '',\n Device_ModeException: '',\n Device_Disconnected: 'Device disconnected',\n Device_UsedElsewhere: 'Device is used in another window',\n Device_InvalidState: 'Passphrase is incorrect',\n Device_CallInProgress: 'Device call in progress',\n Device_MultipleNotSupported: 'Multiple devices are not supported',\n Device_MissingCapability: 'Device is missing capability',\n Device_MissingCapabilityBtcOnly: 'Device is missing capability (BTC only)',\n Device_ThpPairingTagInvalid: 'Pairing tag mismatch',\n Device_ThpStateMissing: 'ThpState missing',\n Device_ThpPairingMethodsException: 'No common pairing methods',\n Failure_UnknownCode: 'Unknown error',\n Failure_EntropyCheck: '',\n Deeplink_VersionMismatch: 'Not compatible with current version of the app',\n Browser_LocalNetworkPermissionMissing: 'Local network permission is missing. Please allow local network access in browser settings.'\n};\nclass TrezorError extends Error {\n code;\n message;\n constructor(code, message, options) {\n super(message, options);\n this.code = code;\n this.message = message;\n }\n toString() {\n return `${this.name} (code: ${this.code}): ${this.message}`;\n }\n}\nexports.TrezorError = TrezorError;\nconst nestError = cause => cause instanceof TrezorError ? new TrezorError(cause.code, cause.message, {\n cause\n}) : new Error(cause.message, {\n cause\n});\nexports.nestError = nestError;\nclass TransportError extends Error {}\nexports.TransportError = TransportError;\nconst TypedError = (id, message) => new TrezorError(id, message || exports.ERROR_CODES[id] || id);\nexports.TypedError = TypedError;\nconst serializeError = payload => {\n const error = payload?.error instanceof Error ? payload.error : payload;\n return error instanceof Error ? {\n error: error.message,\n code: 'code' in error ? error.code : 'Failure_UnknownCode'\n } : {\n ...payload\n };\n};\nexports.serializeError = serializeError;\nexports.LIBUSB_ERROR_MESSAGE = 'LIBUSB_ERROR';\n//# sourceMappingURL=errors.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MODULES = exports.TYPES = void 0;\nexports.TYPES = {\n bitcoin: 'Bitcoin',\n ethereum: 'Ethereum',\n eos: 'Eos',\n nem: 'NEM',\n stellar: 'Stellar',\n cardano: 'Cardano',\n ripple: 'Ripple',\n tezos: 'Tezos',\n binance: 'Binance',\n solana: 'Solana'\n};\nexports.MODULES = ['cardano', 'eos', 'ethereum', 'monero', 'nem', 'ripple', 'solana', 'stellar', 'tezos'];\n//# sourceMappingURL=network.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ALGORITHM_IDS = exports.NETWORK_IDS = exports.PROTOCOL_MAGICS = void 0;\nvar PROTOCOL_MAGICS;\n(function (PROTOCOL_MAGICS) {\n PROTOCOL_MAGICS[PROTOCOL_MAGICS[\"mainnet\"] = 764824073] = \"mainnet\";\n PROTOCOL_MAGICS[PROTOCOL_MAGICS[\"testnet_preprod\"] = 1] = \"testnet_preprod\";\n PROTOCOL_MAGICS[PROTOCOL_MAGICS[\"testnet_preview\"] = 2] = \"testnet_preview\";\n PROTOCOL_MAGICS[PROTOCOL_MAGICS[\"testnet_legacy\"] = 1097911063] = \"testnet_legacy\";\n})(PROTOCOL_MAGICS || (exports.PROTOCOL_MAGICS = PROTOCOL_MAGICS = {}));\nvar NETWORK_IDS;\n(function (NETWORK_IDS) {\n NETWORK_IDS[NETWORK_IDS[\"mainnet\"] = 1] = \"mainnet\";\n NETWORK_IDS[NETWORK_IDS[\"testnet\"] = 0] = \"testnet\";\n})(NETWORK_IDS || (exports.NETWORK_IDS = NETWORK_IDS = {}));\nvar ALGORITHM_IDS;\n(function (ALGORITHM_IDS) {\n ALGORITHM_IDS[ALGORITHM_IDS[\"EdDSA\"] = -8] = \"EdDSA\";\n})(ALGORITHM_IDS || (exports.ALGORITHM_IDS = ALGORITHM_IDS = {}));\n//# sourceMappingURL=cardano.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HasPropertyKey = HasPropertyKey;\nexports.IsAsyncIterator = IsAsyncIterator;\nexports.IsArray = IsArray;\nexports.IsBigInt = IsBigInt;\nexports.IsBoolean = IsBoolean;\nexports.IsDate = IsDate;\nexports.IsFunction = IsFunction;\nexports.IsIterator = IsIterator;\nexports.IsNull = IsNull;\nexports.IsNumber = IsNumber;\nexports.IsObject = IsObject;\nexports.IsRegExp = IsRegExp;\nexports.IsString = IsString;\nexports.IsSymbol = IsSymbol;\nexports.IsUint8Array = IsUint8Array;\nexports.IsUndefined = IsUndefined;\n// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nfunction HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nfunction IsAsyncIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an array */\nfunction IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nfunction IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is a boolean */\nfunction IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is a Date object */\nfunction IsDate(value) {\n return value instanceof globalThis.Date;\n}\n/** Returns true if this value is a function */\nfunction IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is an iterator */\nfunction IsIterator(value) {\n return IsObject(value) && !IsArray(value) && !IsUint8Array(value) && Symbol.iterator in value;\n}\n/** Returns true if this value is null */\nfunction IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is number */\nfunction IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an object */\nfunction IsObject(value) {\n return typeof value === 'object' && value !== null;\n}\n/** Returns true if this value is RegExp */\nfunction IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is string */\nfunction IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is symbol */\nfunction IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a Uint8Array */\nfunction IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if this value is undefined */\nfunction IsUndefined(value) {\n return value === undefined;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Clone = Clone;\nconst ValueGuard = require(\"../guard/value\");\nfunction ArrayType(value) {\n return value.map((value) => Visit(value));\n}\nfunction DateType(value) {\n return new Date(value.getTime());\n}\nfunction Uint8ArrayType(value) {\n return new Uint8Array(value);\n}\nfunction RegExpType(value) {\n return new RegExp(value.source, value.flags);\n}\nfunction ObjectType(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Visit(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Visit(value[key]);\n }\n return result;\n}\n// prettier-ignore\nfunction Visit(value) {\n return (ValueGuard.IsArray(value) ? ArrayType(value) :\n ValueGuard.IsDate(value) ? DateType(value) :\n ValueGuard.IsUint8Array(value) ? Uint8ArrayType(value) :\n ValueGuard.IsRegExp(value) ? RegExpType(value) :\n ValueGuard.IsObject(value) ? ObjectType(value) :\n value);\n}\n/** Clones a value */\nfunction Clone(value) {\n return Visit(value);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CloneRest = CloneRest;\nexports.CloneType = CloneType;\nconst value_1 = require(\"./value\");\n/** Clones a Rest */\nfunction CloneRest(schemas) {\n return schemas.map((schema) => CloneType(schema));\n}\n/** Clones a Type */\nfunction CloneType(schema, options) {\n return options === undefined ? (0, value_1.Clone)(schema) : (0, value_1.Clone)({ ...options, ...schema });\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./type\"), exports);\n__exportStar(require(\"./value\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IsAsyncIterator = IsAsyncIterator;\nexports.IsIterator = IsIterator;\nexports.IsStandardObject = IsStandardObject;\nexports.IsInstanceObject = IsInstanceObject;\nexports.IsPromise = IsPromise;\nexports.IsDate = IsDate;\nexports.IsMap = IsMap;\nexports.IsSet = IsSet;\nexports.IsRegExp = IsRegExp;\nexports.IsTypedArray = IsTypedArray;\nexports.IsInt8Array = IsInt8Array;\nexports.IsUint8Array = IsUint8Array;\nexports.IsUint8ClampedArray = IsUint8ClampedArray;\nexports.IsInt16Array = IsInt16Array;\nexports.IsUint16Array = IsUint16Array;\nexports.IsInt32Array = IsInt32Array;\nexports.IsUint32Array = IsUint32Array;\nexports.IsFloat32Array = IsFloat32Array;\nexports.IsFloat64Array = IsFloat64Array;\nexports.IsBigInt64Array = IsBigInt64Array;\nexports.IsBigUint64Array = IsBigUint64Array;\nexports.HasPropertyKey = HasPropertyKey;\nexports.IsObject = IsObject;\nexports.IsArray = IsArray;\nexports.IsUndefined = IsUndefined;\nexports.IsNull = IsNull;\nexports.IsBoolean = IsBoolean;\nexports.IsNumber = IsNumber;\nexports.IsInteger = IsInteger;\nexports.IsBigInt = IsBigInt;\nexports.IsString = IsString;\nexports.IsFunction = IsFunction;\nexports.IsSymbol = IsSymbol;\nexports.IsValueType = IsValueType;\n// --------------------------------------------------------------------------\n// Iterators\n// --------------------------------------------------------------------------\n/** Returns true if this value is an async iterator */\nfunction IsAsyncIterator(value) {\n return IsObject(value) && Symbol.asyncIterator in value;\n}\n/** Returns true if this value is an iterator */\nfunction IsIterator(value) {\n return IsObject(value) && Symbol.iterator in value;\n}\n// --------------------------------------------------------------------------\n// Object Instances\n// --------------------------------------------------------------------------\n/** Returns true if this value is not an instance of a class */\nfunction IsStandardObject(value) {\n return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n/** Returns true if this value is an instance of a class */\nfunction IsInstanceObject(value) {\n return IsObject(value) && !IsArray(value) && IsFunction(value.constructor) && value.constructor.name !== 'Object';\n}\n// --------------------------------------------------------------------------\n// JavaScript\n// --------------------------------------------------------------------------\n/** Returns true if this value is a Promise */\nfunction IsPromise(value) {\n return value instanceof Promise;\n}\n/** Returns true if this value is a Date */\nfunction IsDate(value) {\n return value instanceof Date && Number.isFinite(value.getTime());\n}\n/** Returns true if this value is an instance of Map */\nfunction IsMap(value) {\n return value instanceof globalThis.Map;\n}\n/** Returns true if this value is an instance of Set */\nfunction IsSet(value) {\n return value instanceof globalThis.Set;\n}\n/** Returns true if this value is RegExp */\nfunction IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n/** Returns true if this value is a typed array */\nfunction IsTypedArray(value) {\n return ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nfunction IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nfunction IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nfunction IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nfunction IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nfunction IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nfunction IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nfunction IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nfunction IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nfunction IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nfunction IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nfunction IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// --------------------------------------------------------------------------\n// PropertyKey\n// --------------------------------------------------------------------------\n/** Returns true if this value has this property key */\nfunction HasPropertyKey(value, key) {\n return key in value;\n}\n// --------------------------------------------------------------------------\n// Standard\n// --------------------------------------------------------------------------\n/** Returns true of this value is an object type */\nfunction IsObject(value) {\n return value !== null && typeof value === 'object';\n}\n/** Returns true if this value is an array, but not a typed array */\nfunction IsArray(value) {\n return Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n/** Returns true if this value is an undefined */\nfunction IsUndefined(value) {\n return value === undefined;\n}\n/** Returns true if this value is an null */\nfunction IsNull(value) {\n return value === null;\n}\n/** Returns true if this value is an boolean */\nfunction IsBoolean(value) {\n return typeof value === 'boolean';\n}\n/** Returns true if this value is an number */\nfunction IsNumber(value) {\n return typeof value === 'number';\n}\n/** Returns true if this value is an integer */\nfunction IsInteger(value) {\n return Number.isInteger(value);\n}\n/** Returns true if this value is bigint */\nfunction IsBigInt(value) {\n return typeof value === 'bigint';\n}\n/** Returns true if this value is string */\nfunction IsString(value) {\n return typeof value === 'string';\n}\n/** Returns true if this value is a function */\nfunction IsFunction(value) {\n return typeof value === 'function';\n}\n/** Returns true if this value is a symbol */\nfunction IsSymbol(value) {\n return typeof value === 'symbol';\n}\n/** Returns true if this value is a value type such as number, string, boolean */\nfunction IsValueType(value) {\n // prettier-ignore\n return (IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsUndefined(value));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./guard\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeSystemPolicy = void 0;\nconst index_1 = require(\"../value/guard/index\");\nvar TypeSystemPolicy;\n(function (TypeSystemPolicy) {\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Instancing\n // ------------------------------------------------------------------\n /**\n * Configures the instantiation behavior of TypeBox types. The `default` option assigns raw JavaScript\n * references for embedded types, which may cause side effects if type properties are explicitly updated\n * outside the TypeBox type builder. The `clone` option creates copies of any shared types upon creation,\n * preventing unintended side effects. The `freeze` option applies `Object.freeze()` to the type, making\n * it fully readonly and immutable. Implementations should use `default` whenever possible, as it is the\n * fastest way to instantiate types. The default setting is `default`.\n */\n TypeSystemPolicy.InstanceMode = 'default';\n // ------------------------------------------------------------------\n // TypeSystemPolicy: Checking\n // ------------------------------------------------------------------\n /** Sets whether TypeBox should assert optional properties using the TypeScript `exactOptionalPropertyTypes` assertion policy. The default is `false` */\n TypeSystemPolicy.ExactOptionalPropertyTypes = false;\n /** Sets whether arrays should be treated as a kind of objects. The default is `false` */\n TypeSystemPolicy.AllowArrayObject = false;\n /** Sets whether `NaN` or `Infinity` should be treated as valid numeric values. The default is `false` */\n TypeSystemPolicy.AllowNaN = false;\n /** Sets whether `null` should validate for void types. The default is `false` */\n TypeSystemPolicy.AllowNullVoid = false;\n /** Checks this value using the ExactOptionalPropertyTypes policy */\n function IsExactOptionalProperty(value, key) {\n return TypeSystemPolicy.ExactOptionalPropertyTypes ? key in value : value[key] !== undefined;\n }\n TypeSystemPolicy.IsExactOptionalProperty = IsExactOptionalProperty;\n /** Checks this value using the AllowArrayObjects policy */\n function IsObjectLike(value) {\n const isObject = (0, index_1.IsObject)(value);\n return TypeSystemPolicy.AllowArrayObject ? isObject : isObject && !(0, index_1.IsArray)(value);\n }\n TypeSystemPolicy.IsObjectLike = IsObjectLike;\n /** Checks this value as a record using the AllowArrayObjects policy */\n function IsRecordLike(value) {\n return IsObjectLike(value) && !(value instanceof Date) && !(value instanceof Uint8Array);\n }\n TypeSystemPolicy.IsRecordLike = IsRecordLike;\n /** Checks this value using the AllowNaN policy */\n function IsNumberLike(value) {\n return TypeSystemPolicy.AllowNaN ? (0, index_1.IsNumber)(value) : Number.isFinite(value);\n }\n TypeSystemPolicy.IsNumberLike = IsNumberLike;\n /** Checks this value using the AllowVoidNull policy */\n function IsVoidLike(value) {\n const isUndefined = (0, index_1.IsUndefined)(value);\n return TypeSystemPolicy.AllowNullVoid ? isUndefined || value === null : isUndefined;\n }\n TypeSystemPolicy.IsVoidLike = IsVoidLike;\n})(TypeSystemPolicy || (exports.TypeSystemPolicy = TypeSystemPolicy = {}));\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Immutable = Immutable;\nconst ValueGuard = require(\"../guard/value\");\nfunction ImmutableArray(value) {\n return globalThis.Object.freeze(value).map((value) => Immutable(value));\n}\nfunction ImmutableDate(value) {\n return value;\n}\nfunction ImmutableUint8Array(value) {\n return value;\n}\nfunction ImmutableRegExp(value) {\n return value;\n}\nfunction ImmutableObject(value) {\n const result = {};\n for (const key of Object.getOwnPropertyNames(value)) {\n result[key] = Immutable(value[key]);\n }\n for (const key of Object.getOwnPropertySymbols(value)) {\n result[key] = Immutable(value[key]);\n }\n return globalThis.Object.freeze(result);\n}\n/** Specialized deep immutable value. Applies freeze recursively to the given value */\n// prettier-ignore\nfunction Immutable(value) {\n return (ValueGuard.IsArray(value) ? ImmutableArray(value) :\n ValueGuard.IsDate(value) ? ImmutableDate(value) :\n ValueGuard.IsUint8Array(value) ? ImmutableUint8Array(value) :\n ValueGuard.IsRegExp(value) ? ImmutableRegExp(value) :\n ValueGuard.IsObject(value) ? ImmutableObject(value) :\n value);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateType = CreateType;\nconst policy_1 = require(\"../../system/policy\");\nconst immutable_1 = require(\"./immutable\");\nconst value_1 = require(\"../clone/value\");\n/** Creates TypeBox schematics using the configured InstanceMode */\nfunction CreateType(schema, options) {\n const result = options !== undefined ? { ...options, ...schema } : schema;\n switch (policy_1.TypeSystemPolicy.InstanceMode) {\n case 'freeze':\n return (0, immutable_1.Immutable)(result);\n case 'clone':\n return (0, value_1.Clone)(result);\n default:\n return result;\n }\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./type\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeBoxError = void 0;\n/** The base Error type thrown for all TypeBox exceptions */\nclass TypeBoxError extends Error {\n constructor(message) {\n super(message);\n }\n}\nexports.TypeBoxError = TypeBoxError;\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./error\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kind = exports.Hint = exports.OptionalKind = exports.ReadonlyKind = exports.TransformKind = void 0;\n/** Symbol key applied to transform types */\nexports.TransformKind = Symbol.for('TypeBox.Transform');\n/** Symbol key applied to readonly types */\nexports.ReadonlyKind = Symbol.for('TypeBox.Readonly');\n/** Symbol key applied to optional types */\nexports.OptionalKind = Symbol.for('TypeBox.Optional');\n/** Symbol key applied to types */\nexports.Hint = Symbol.for('TypeBox.Hint');\n/** Symbol key applied to types */\nexports.Kind = Symbol.for('TypeBox.Kind');\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./symbols\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IsReadonly = IsReadonly;\nexports.IsOptional = IsOptional;\nexports.IsAny = IsAny;\nexports.IsArray = IsArray;\nexports.IsAsyncIterator = IsAsyncIterator;\nexports.IsBigInt = IsBigInt;\nexports.IsBoolean = IsBoolean;\nexports.IsConstructor = IsConstructor;\nexports.IsDate = IsDate;\nexports.IsFunction = IsFunction;\nexports.IsInteger = IsInteger;\nexports.IsProperties = IsProperties;\nexports.IsIntersect = IsIntersect;\nexports.IsIterator = IsIterator;\nexports.IsKindOf = IsKindOf;\nexports.IsLiteralString = IsLiteralString;\nexports.IsLiteralNumber = IsLiteralNumber;\nexports.IsLiteralBoolean = IsLiteralBoolean;\nexports.IsLiteral = IsLiteral;\nexports.IsMappedKey = IsMappedKey;\nexports.IsMappedResult = IsMappedResult;\nexports.IsNever = IsNever;\nexports.IsNot = IsNot;\nexports.IsNull = IsNull;\nexports.IsNumber = IsNumber;\nexports.IsObject = IsObject;\nexports.IsPromise = IsPromise;\nexports.IsRecord = IsRecord;\nexports.IsRecursive = IsRecursive;\nexports.IsRef = IsRef;\nexports.IsRegExp = IsRegExp;\nexports.IsString = IsString;\nexports.IsSymbol = IsSymbol;\nexports.IsTemplateLiteral = IsTemplateLiteral;\nexports.IsThis = IsThis;\nexports.IsTransform = IsTransform;\nexports.IsTuple = IsTuple;\nexports.IsUndefined = IsUndefined;\nexports.IsUnion = IsUnion;\nexports.IsUint8Array = IsUint8Array;\nexports.IsUnknown = IsUnknown;\nexports.IsUnsafe = IsUnsafe;\nexports.IsVoid = IsVoid;\nexports.IsKind = IsKind;\nexports.IsSchema = IsSchema;\nconst ValueGuard = require(\"./value\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Kind-Only]` Returns true if this value has a Readonly symbol */\nfunction IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[index_1.ReadonlyKind] === 'Readonly';\n}\n/** `[Kind-Only]` Returns true if this value has a Optional symbol */\nfunction IsOptional(value) {\n return ValueGuard.IsObject(value) && value[index_1.OptionalKind] === 'Optional';\n}\n/** `[Kind-Only]` Returns true if the given value is TAny */\nfunction IsAny(value) {\n return IsKindOf(value, 'Any');\n}\n/** `[Kind-Only]` Returns true if the given value is TArray */\nfunction IsArray(value) {\n return IsKindOf(value, 'Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TAsyncIterator */\nfunction IsAsyncIterator(value) {\n return IsKindOf(value, 'AsyncIterator');\n}\n/** `[Kind-Only]` Returns true if the given value is TBigInt */\nfunction IsBigInt(value) {\n return IsKindOf(value, 'BigInt');\n}\n/** `[Kind-Only]` Returns true if the given value is TBoolean */\nfunction IsBoolean(value) {\n return IsKindOf(value, 'Boolean');\n}\n/** `[Kind-Only]` Returns true if the given value is TConstructor */\nfunction IsConstructor(value) {\n return IsKindOf(value, 'Constructor');\n}\n/** `[Kind-Only]` Returns true if the given value is TDate */\nfunction IsDate(value) {\n return IsKindOf(value, 'Date');\n}\n/** `[Kind-Only]` Returns true if the given value is TFunction */\nfunction IsFunction(value) {\n return IsKindOf(value, 'Function');\n}\n/** `[Kind-Only]` Returns true if the given value is TInteger */\nfunction IsInteger(value) {\n return IsKindOf(value, 'Integer');\n}\n/** `[Kind-Only]` Returns true if the given schema is TProperties */\nfunction IsProperties(value) {\n return ValueGuard.IsObject(value);\n}\n/** `[Kind-Only]` Returns true if the given value is TIntersect */\nfunction IsIntersect(value) {\n return IsKindOf(value, 'Intersect');\n}\n/** `[Kind-Only]` Returns true if the given value is TIterator */\nfunction IsIterator(value) {\n return IsKindOf(value, 'Iterator');\n}\n/** `[Kind-Only]` Returns true if the given value is a TKind with the given name. */\nfunction IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && index_1.Kind in value && value[index_1.Kind] === kind;\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nfunction IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nfunction IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nfunction IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** `[Kind-Only]` Returns true if the given value is TLiteral */\nfunction IsLiteral(value) {\n return IsKindOf(value, 'Literal');\n}\n/** `[Kind-Only]` Returns true if the given value is a TMappedKey */\nfunction IsMappedKey(value) {\n return IsKindOf(value, 'MappedKey');\n}\n/** `[Kind-Only]` Returns true if the given value is TMappedResult */\nfunction IsMappedResult(value) {\n return IsKindOf(value, 'MappedResult');\n}\n/** `[Kind-Only]` Returns true if the given value is TNever */\nfunction IsNever(value) {\n return IsKindOf(value, 'Never');\n}\n/** `[Kind-Only]` Returns true if the given value is TNot */\nfunction IsNot(value) {\n return IsKindOf(value, 'Not');\n}\n/** `[Kind-Only]` Returns true if the given value is TNull */\nfunction IsNull(value) {\n return IsKindOf(value, 'Null');\n}\n/** `[Kind-Only]` Returns true if the given value is TNumber */\nfunction IsNumber(value) {\n return IsKindOf(value, 'Number');\n}\n/** `[Kind-Only]` Returns true if the given value is TObject */\nfunction IsObject(value) {\n return IsKindOf(value, 'Object');\n}\n/** `[Kind-Only]` Returns true if the given value is TPromise */\nfunction IsPromise(value) {\n return IsKindOf(value, 'Promise');\n}\n/** `[Kind-Only]` Returns true if the given value is TRecord */\nfunction IsRecord(value) {\n return IsKindOf(value, 'Record');\n}\n/** `[Kind-Only]` Returns true if this value is TRecursive */\nfunction IsRecursive(value) {\n return ValueGuard.IsObject(value) && index_1.Hint in value && value[index_1.Hint] === 'Recursive';\n}\n/** `[Kind-Only]` Returns true if the given value is TRef */\nfunction IsRef(value) {\n return IsKindOf(value, 'Ref');\n}\n/** `[Kind-Only]` Returns true if the given value is TRegExp */\nfunction IsRegExp(value) {\n return IsKindOf(value, 'RegExp');\n}\n/** `[Kind-Only]` Returns true if the given value is TString */\nfunction IsString(value) {\n return IsKindOf(value, 'String');\n}\n/** `[Kind-Only]` Returns true if the given value is TSymbol */\nfunction IsSymbol(value) {\n return IsKindOf(value, 'Symbol');\n}\n/** `[Kind-Only]` Returns true if the given value is TTemplateLiteral */\nfunction IsTemplateLiteral(value) {\n return IsKindOf(value, 'TemplateLiteral');\n}\n/** `[Kind-Only]` Returns true if the given value is TThis */\nfunction IsThis(value) {\n return IsKindOf(value, 'This');\n}\n/** `[Kind-Only]` Returns true of this value is TTransform */\nfunction IsTransform(value) {\n return ValueGuard.IsObject(value) && index_1.TransformKind in value;\n}\n/** `[Kind-Only]` Returns true if the given value is TTuple */\nfunction IsTuple(value) {\n return IsKindOf(value, 'Tuple');\n}\n/** `[Kind-Only]` Returns true if the given value is TUndefined */\nfunction IsUndefined(value) {\n return IsKindOf(value, 'Undefined');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnion */\nfunction IsUnion(value) {\n return IsKindOf(value, 'Union');\n}\n/** `[Kind-Only]` Returns true if the given value is TUint8Array */\nfunction IsUint8Array(value) {\n return IsKindOf(value, 'Uint8Array');\n}\n/** `[Kind-Only]` Returns true if the given value is TUnknown */\nfunction IsUnknown(value) {\n return IsKindOf(value, 'Unknown');\n}\n/** `[Kind-Only]` Returns true if the given value is a raw TUnsafe */\nfunction IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** `[Kind-Only]` Returns true if the given value is TVoid */\nfunction IsVoid(value) {\n return IsKindOf(value, 'Void');\n}\n/** `[Kind-Only]` Returns true if the given value is TKind */\nfunction IsKind(value) {\n return ValueGuard.IsObject(value) && index_1.Kind in value && ValueGuard.IsString(value[index_1.Kind]);\n}\n/** `[Kind-Only]` Returns true if the given value is TSchema */\nfunction IsSchema(value) {\n // prettier-ignore\n return (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeGuardUnknownTypeError = void 0;\nexports.IsReadonly = IsReadonly;\nexports.IsOptional = IsOptional;\nexports.IsAny = IsAny;\nexports.IsArray = IsArray;\nexports.IsAsyncIterator = IsAsyncIterator;\nexports.IsBigInt = IsBigInt;\nexports.IsBoolean = IsBoolean;\nexports.IsConstructor = IsConstructor;\nexports.IsDate = IsDate;\nexports.IsFunction = IsFunction;\nexports.IsInteger = IsInteger;\nexports.IsProperties = IsProperties;\nexports.IsIntersect = IsIntersect;\nexports.IsIterator = IsIterator;\nexports.IsKindOf = IsKindOf;\nexports.IsLiteralString = IsLiteralString;\nexports.IsLiteralNumber = IsLiteralNumber;\nexports.IsLiteralBoolean = IsLiteralBoolean;\nexports.IsLiteral = IsLiteral;\nexports.IsLiteralValue = IsLiteralValue;\nexports.IsMappedKey = IsMappedKey;\nexports.IsMappedResult = IsMappedResult;\nexports.IsNever = IsNever;\nexports.IsNot = IsNot;\nexports.IsNull = IsNull;\nexports.IsNumber = IsNumber;\nexports.IsObject = IsObject;\nexports.IsPromise = IsPromise;\nexports.IsRecord = IsRecord;\nexports.IsRecursive = IsRecursive;\nexports.IsRef = IsRef;\nexports.IsRegExp = IsRegExp;\nexports.IsString = IsString;\nexports.IsSymbol = IsSymbol;\nexports.IsTemplateLiteral = IsTemplateLiteral;\nexports.IsThis = IsThis;\nexports.IsTransform = IsTransform;\nexports.IsTuple = IsTuple;\nexports.IsUndefined = IsUndefined;\nexports.IsUnionLiteral = IsUnionLiteral;\nexports.IsUnion = IsUnion;\nexports.IsUint8Array = IsUint8Array;\nexports.IsUnknown = IsUnknown;\nexports.IsUnsafe = IsUnsafe;\nexports.IsVoid = IsVoid;\nexports.IsKind = IsKind;\nexports.IsSchema = IsSchema;\nconst ValueGuard = require(\"./value\");\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../error/index\");\nclass TypeGuardUnknownTypeError extends index_2.TypeBoxError {\n}\nexports.TypeGuardUnknownTypeError = TypeGuardUnknownTypeError;\nconst KnownTypes = [\n 'Any',\n 'Array',\n 'AsyncIterator',\n 'BigInt',\n 'Boolean',\n 'Constructor',\n 'Date',\n 'Enum',\n 'Function',\n 'Integer',\n 'Intersect',\n 'Iterator',\n 'Literal',\n 'MappedKey',\n 'MappedResult',\n 'Not',\n 'Null',\n 'Number',\n 'Object',\n 'Promise',\n 'Record',\n 'Ref',\n 'RegExp',\n 'String',\n 'Symbol',\n 'TemplateLiteral',\n 'This',\n 'Tuple',\n 'Undefined',\n 'Union',\n 'Uint8Array',\n 'Unknown',\n 'Void',\n];\nfunction IsPattern(value) {\n try {\n new RegExp(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction IsControlCharacterFree(value) {\n if (!ValueGuard.IsString(value))\n return false;\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n if ((code >= 7 && code <= 13) || code === 27 || code === 127) {\n return false;\n }\n }\n return true;\n}\nfunction IsAdditionalProperties(value) {\n return IsOptionalBoolean(value) || IsSchema(value);\n}\nfunction IsOptionalBigInt(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBigInt(value);\n}\nfunction IsOptionalNumber(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsNumber(value);\n}\nfunction IsOptionalBoolean(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsBoolean(value);\n}\nfunction IsOptionalString(value) {\n return ValueGuard.IsUndefined(value) || ValueGuard.IsString(value);\n}\nfunction IsOptionalPattern(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value) && IsPattern(value));\n}\nfunction IsOptionalFormat(value) {\n return ValueGuard.IsUndefined(value) || (ValueGuard.IsString(value) && IsControlCharacterFree(value));\n}\nfunction IsOptionalSchema(value) {\n return ValueGuard.IsUndefined(value) || IsSchema(value);\n}\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\n/** Returns true if this value has a Readonly symbol */\nfunction IsReadonly(value) {\n return ValueGuard.IsObject(value) && value[index_1.ReadonlyKind] === 'Readonly';\n}\n/** Returns true if this value has a Optional symbol */\nfunction IsOptional(value) {\n return ValueGuard.IsObject(value) && value[index_1.OptionalKind] === 'Optional';\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n/** Returns true if the given value is TAny */\nfunction IsAny(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Any') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TArray */\nfunction IsArray(value) {\n return (IsKindOf(value, 'Array') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items) &&\n IsOptionalNumber(value.minItems) &&\n IsOptionalNumber(value.maxItems) &&\n IsOptionalBoolean(value.uniqueItems) &&\n IsOptionalSchema(value.contains) &&\n IsOptionalNumber(value.minContains) &&\n IsOptionalNumber(value.maxContains));\n}\n/** Returns true if the given value is TAsyncIterator */\nfunction IsAsyncIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'AsyncIterator') &&\n value.type === 'AsyncIterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is TBigInt */\nfunction IsBigInt(value) {\n // prettier-ignore\n return (IsKindOf(value, 'BigInt') &&\n value.type === 'bigint' &&\n IsOptionalString(value.$id) &&\n IsOptionalBigInt(value.exclusiveMaximum) &&\n IsOptionalBigInt(value.exclusiveMinimum) &&\n IsOptionalBigInt(value.maximum) &&\n IsOptionalBigInt(value.minimum) &&\n IsOptionalBigInt(value.multipleOf));\n}\n/** Returns true if the given value is TBoolean */\nfunction IsBoolean(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Boolean') &&\n value.type === 'boolean' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TConstructor */\nfunction IsConstructor(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Constructor') &&\n value.type === 'Constructor' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TDate */\nfunction IsDate(value) {\n return (IsKindOf(value, 'Date') &&\n value.type === 'Date' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximumTimestamp) &&\n IsOptionalNumber(value.exclusiveMinimumTimestamp) &&\n IsOptionalNumber(value.maximumTimestamp) &&\n IsOptionalNumber(value.minimumTimestamp) &&\n IsOptionalNumber(value.multipleOfTimestamp));\n}\n/** Returns true if the given value is TFunction */\nfunction IsFunction(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Function') &&\n value.type === 'Function' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsArray(value.parameters) &&\n value.parameters.every(schema => IsSchema(schema)) &&\n IsSchema(value.returns));\n}\n/** Returns true if the given value is TInteger */\nfunction IsInteger(value) {\n return (IsKindOf(value, 'Integer') &&\n value.type === 'integer' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given schema is TProperties */\nfunction IsProperties(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value) &&\n Object.entries(value).every(([key, schema]) => IsControlCharacterFree(key) && IsSchema(schema)));\n}\n/** Returns true if the given value is TIntersect */\nfunction IsIntersect(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Intersect') &&\n (ValueGuard.IsString(value.type) && value.type !== 'object' ? false : true) &&\n ValueGuard.IsArray(value.allOf) &&\n value.allOf.every(schema => IsSchema(schema) && !IsTransform(schema)) &&\n IsOptionalString(value.type) &&\n (IsOptionalBoolean(value.unevaluatedProperties) || IsOptionalSchema(value.unevaluatedProperties)) &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TIterator */\nfunction IsIterator(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Iterator') &&\n value.type === 'Iterator' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.items));\n}\n/** Returns true if the given value is a TKind with the given name. */\nfunction IsKindOf(value, kind) {\n return ValueGuard.IsObject(value) && index_1.Kind in value && value[index_1.Kind] === kind;\n}\n/** Returns true if the given value is TLiteral */\nfunction IsLiteralString(value) {\n return IsLiteral(value) && ValueGuard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral */\nfunction IsLiteralNumber(value) {\n return IsLiteral(value) && ValueGuard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral */\nfunction IsLiteralBoolean(value) {\n return IsLiteral(value) && ValueGuard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral */\nfunction IsLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Literal') &&\n IsOptionalString(value.$id) && IsLiteralValue(value.const));\n}\n/** Returns true if the given value is a TLiteralValue */\nfunction IsLiteralValue(value) {\n return ValueGuard.IsBoolean(value) || ValueGuard.IsNumber(value) || ValueGuard.IsString(value);\n}\n/** Returns true if the given value is a TMappedKey */\nfunction IsMappedKey(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedKey') &&\n ValueGuard.IsArray(value.keys) &&\n value.keys.every(key => ValueGuard.IsNumber(key) || ValueGuard.IsString(key)));\n}\n/** Returns true if the given value is TMappedResult */\nfunction IsMappedResult(value) {\n // prettier-ignore\n return (IsKindOf(value, 'MappedResult') &&\n IsProperties(value.properties));\n}\n/** Returns true if the given value is TNever */\nfunction IsNever(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Never') &&\n ValueGuard.IsObject(value.not) &&\n Object.getOwnPropertyNames(value.not).length === 0);\n}\n/** Returns true if the given value is TNot */\nfunction IsNot(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Not') &&\n IsSchema(value.not));\n}\n/** Returns true if the given value is TNull */\nfunction IsNull(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Null') &&\n value.type === 'null' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TNumber */\nfunction IsNumber(value) {\n return (IsKindOf(value, 'Number') &&\n value.type === 'number' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.exclusiveMaximum) &&\n IsOptionalNumber(value.exclusiveMinimum) &&\n IsOptionalNumber(value.maximum) &&\n IsOptionalNumber(value.minimum) &&\n IsOptionalNumber(value.multipleOf));\n}\n/** Returns true if the given value is TObject */\nfunction IsObject(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Object') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsProperties(value.properties) &&\n IsAdditionalProperties(value.additionalProperties) &&\n IsOptionalNumber(value.minProperties) &&\n IsOptionalNumber(value.maxProperties));\n}\n/** Returns true if the given value is TPromise */\nfunction IsPromise(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Promise') &&\n value.type === 'Promise' &&\n IsOptionalString(value.$id) &&\n IsSchema(value.item));\n}\n/** Returns true if the given value is TRecord */\nfunction IsRecord(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Record') &&\n value.type === 'object' &&\n IsOptionalString(value.$id) &&\n IsAdditionalProperties(value.additionalProperties) &&\n ValueGuard.IsObject(value.patternProperties) &&\n ((schema) => {\n const keys = Object.getOwnPropertyNames(schema.patternProperties);\n return (keys.length === 1 &&\n IsPattern(keys[0]) &&\n ValueGuard.IsObject(schema.patternProperties) &&\n IsSchema(schema.patternProperties[keys[0]]));\n })(value));\n}\n/** Returns true if this value is TRecursive */\nfunction IsRecursive(value) {\n return ValueGuard.IsObject(value) && index_1.Hint in value && value[index_1.Hint] === 'Recursive';\n}\n/** Returns true if the given value is TRef */\nfunction IsRef(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Ref') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true if the given value is TRegExp */\nfunction IsRegExp(value) {\n // prettier-ignore\n return (IsKindOf(value, 'RegExp') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.source) &&\n ValueGuard.IsString(value.flags) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalNumber(value.minLength));\n}\n/** Returns true if the given value is TString */\nfunction IsString(value) {\n // prettier-ignore\n return (IsKindOf(value, 'String') &&\n value.type === 'string' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minLength) &&\n IsOptionalNumber(value.maxLength) &&\n IsOptionalPattern(value.pattern) &&\n IsOptionalFormat(value.format));\n}\n/** Returns true if the given value is TSymbol */\nfunction IsSymbol(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Symbol') &&\n value.type === 'symbol' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TTemplateLiteral */\nfunction IsTemplateLiteral(value) {\n // prettier-ignore\n return (IsKindOf(value, 'TemplateLiteral') &&\n value.type === 'string' &&\n ValueGuard.IsString(value.pattern) &&\n value.pattern[0] === '^' &&\n value.pattern[value.pattern.length - 1] === '$');\n}\n/** Returns true if the given value is TThis */\nfunction IsThis(value) {\n // prettier-ignore\n return (IsKindOf(value, 'This') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsString(value.$ref));\n}\n/** Returns true of this value is TTransform */\nfunction IsTransform(value) {\n return ValueGuard.IsObject(value) && index_1.TransformKind in value;\n}\n/** Returns true if the given value is TTuple */\nfunction IsTuple(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Tuple') &&\n value.type === 'array' &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsNumber(value.minItems) &&\n ValueGuard.IsNumber(value.maxItems) &&\n value.minItems === value.maxItems &&\n (( // empty\n ValueGuard.IsUndefined(value.items) &&\n ValueGuard.IsUndefined(value.additionalItems) &&\n value.minItems === 0) || (ValueGuard.IsArray(value.items) &&\n value.items.every(schema => IsSchema(schema)))));\n}\n/** Returns true if the given value is TUndefined */\nfunction IsUndefined(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Undefined') &&\n value.type === 'undefined' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TUnion[]> */\nfunction IsUnionLiteral(value) {\n return IsUnion(value) && value.anyOf.every((schema) => IsLiteralString(schema) || IsLiteralNumber(schema));\n}\n/** Returns true if the given value is TUnion */\nfunction IsUnion(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Union') &&\n IsOptionalString(value.$id) &&\n ValueGuard.IsObject(value) &&\n ValueGuard.IsArray(value.anyOf) &&\n value.anyOf.every(schema => IsSchema(schema)));\n}\n/** Returns true if the given value is TUint8Array */\nfunction IsUint8Array(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Uint8Array') &&\n value.type === 'Uint8Array' &&\n IsOptionalString(value.$id) &&\n IsOptionalNumber(value.minByteLength) &&\n IsOptionalNumber(value.maxByteLength));\n}\n/** Returns true if the given value is TUnknown */\nfunction IsUnknown(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Unknown') &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is a raw TUnsafe */\nfunction IsUnsafe(value) {\n return IsKindOf(value, 'Unsafe');\n}\n/** Returns true if the given value is TVoid */\nfunction IsVoid(value) {\n // prettier-ignore\n return (IsKindOf(value, 'Void') &&\n value.type === 'void' &&\n IsOptionalString(value.$id));\n}\n/** Returns true if the given value is TKind */\nfunction IsKind(value) {\n return ValueGuard.IsObject(value) && index_1.Kind in value && ValueGuard.IsString(value[index_1.Kind]) && !KnownTypes.includes(value[index_1.Kind]);\n}\n/** Returns true if the given value is TSchema */\nfunction IsSchema(value) {\n // prettier-ignore\n return (ValueGuard.IsObject(value)) && (IsAny(value) ||\n IsArray(value) ||\n IsBoolean(value) ||\n IsBigInt(value) ||\n IsAsyncIterator(value) ||\n IsConstructor(value) ||\n IsDate(value) ||\n IsFunction(value) ||\n IsInteger(value) ||\n IsIntersect(value) ||\n IsIterator(value) ||\n IsLiteral(value) ||\n IsMappedKey(value) ||\n IsMappedResult(value) ||\n IsNever(value) ||\n IsNot(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsObject(value) ||\n IsPromise(value) ||\n IsRecord(value) ||\n IsRef(value) ||\n IsRegExp(value) ||\n IsString(value) ||\n IsSymbol(value) ||\n IsTemplateLiteral(value) ||\n IsThis(value) ||\n IsTuple(value) ||\n IsUndefined(value) ||\n IsUnion(value) ||\n IsUint8Array(value) ||\n IsUnknown(value) ||\n IsUnsafe(value) ||\n IsVoid(value) ||\n IsKind(value));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueGuard = exports.TypeGuard = exports.KindGuard = void 0;\nexports.KindGuard = require(\"./kind\");\nexports.TypeGuard = require(\"./type\");\nexports.ValueGuard = require(\"./value\");\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Increment = Increment;\n/** Increments the given string value + 1 */\nfunction Increment(T) {\n return (parseInt(T) + 1).toString();\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./helpers\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PatternNeverExact = exports.PatternStringExact = exports.PatternNumberExact = exports.PatternBooleanExact = exports.PatternNever = exports.PatternString = exports.PatternNumber = exports.PatternBoolean = void 0;\nexports.PatternBoolean = '(true|false)';\nexports.PatternNumber = '(0|[1-9][0-9]*)';\nexports.PatternString = '(.*)';\nexports.PatternNever = '(?!.*)';\nexports.PatternBooleanExact = `^${exports.PatternBoolean}$`;\nexports.PatternNumberExact = `^${exports.PatternNumber}$`;\nexports.PatternStringExact = `^${exports.PatternString}$`;\nexports.PatternNeverExact = `^${exports.PatternNever}$`;\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./patterns\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Entries = Entries;\nexports.Clear = Clear;\nexports.Delete = Delete;\nexports.Has = Has;\nexports.Set = Set;\nexports.Get = Get;\n/** A registry for user defined string formats */\nconst map = new Map();\n/** Returns the entries in this registry */\nfunction Entries() {\n return new Map(map);\n}\n/** Clears all user defined string formats */\nfunction Clear() {\n return map.clear();\n}\n/** Deletes a registered format */\nfunction Delete(format) {\n return map.delete(format);\n}\n/** Returns true if the user defined string format exists */\nfunction Has(format) {\n return map.has(format);\n}\n/** Sets a validation function for a user defined string format */\nfunction Set(format, func) {\n map.set(format, func);\n}\n/** Gets a validation function for a user defined string format */\nfunction Get(format) {\n return map.get(format);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Entries = Entries;\nexports.Clear = Clear;\nexports.Delete = Delete;\nexports.Has = Has;\nexports.Set = Set;\nexports.Get = Get;\n/** A registry for user defined types */\nconst map = new Map();\n/** Returns the entries in this registry */\nfunction Entries() {\n return new Map(map);\n}\n/** Clears all user defined types */\nfunction Clear() {\n return map.clear();\n}\n/** Deletes a registered type */\nfunction Delete(kind) {\n return map.delete(kind);\n}\n/** Returns true if this registry contains this kind */\nfunction Has(kind) {\n return map.has(kind);\n}\n/** Sets a validation function for a user defined type */\nfunction Set(kind, func) {\n map.set(kind, func);\n}\n/** Gets a custom validation function for a user defined type */\nfunction Get(kind) {\n return map.get(kind);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeRegistry = exports.FormatRegistry = void 0;\nexports.FormatRegistry = require(\"./format\");\nexports.TypeRegistry = require(\"./type\");\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SetIncludes = SetIncludes;\nexports.SetIsSubset = SetIsSubset;\nexports.SetDistinct = SetDistinct;\nexports.SetIntersect = SetIntersect;\nexports.SetUnion = SetUnion;\nexports.SetComplement = SetComplement;\nexports.SetIntersectMany = SetIntersectMany;\nexports.SetUnionMany = SetUnionMany;\n/** Returns true if element right is in the set of left */\n// prettier-ignore\nfunction SetIncludes(T, S) {\n return T.includes(S);\n}\n/** Returns true if left is a subset of right */\nfunction SetIsSubset(T, S) {\n return T.every((L) => SetIncludes(S, L));\n}\n/** Returns a distinct set of elements */\nfunction SetDistinct(T) {\n return [...new Set(T)];\n}\n/** Returns the Intersect of the given sets */\nfunction SetIntersect(T, S) {\n return T.filter((L) => S.includes(L));\n}\n/** Returns the Union of the given sets */\nfunction SetUnion(T, S) {\n return [...T, ...S];\n}\n/** Returns the Complement by omitting elements in T that are in S */\n// prettier-ignore\nfunction SetComplement(T, S) {\n return T.filter(L => !S.includes(L));\n}\n// prettier-ignore\nfunction SetIntersectManyResolve(T, Init) {\n return T.reduce((Acc, L) => {\n return SetIntersect(Acc, L);\n }, Init);\n}\n// prettier-ignore\nfunction SetIntersectMany(T) {\n return (T.length === 1\n ? T[0]\n // Use left to initialize the accumulator for resolve\n : T.length > 1\n ? SetIntersectManyResolve(T.slice(1), T[0])\n : []);\n}\n/** Returns the Union of multiple sets */\nfunction SetUnionMany(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...L);\n return Acc;\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./set\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Any = Any;\nconst index_1 = require(\"../create/index\");\nconst index_2 = require(\"../symbols/index\");\n/** `[Json]` Creates an Any type */\nfunction Any(options) {\n return (0, index_1.CreateType)({ [index_2.Kind]: 'Any' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./any\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Array = Array;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates an Array type */\nfunction Array(items, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Array', type: 'array', items }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./array\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AsyncIterator = AsyncIterator;\nconst index_1 = require(\"../symbols/index\");\nconst type_1 = require(\"../create/type\");\n/** `[JavaScript]` Creates a AsyncIterator type */\nfunction AsyncIterator(items, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'AsyncIterator', type: 'AsyncIterator', items }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./async-iterator\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Discard = Discard;\nfunction DiscardKey(value, key) {\n const { [key]: _, ...rest } = value;\n return rest;\n}\n/** Discards property keys from the given value. This function returns a shallow Clone. */\nfunction Discard(value, keys) {\n return keys.reduce((acc, key) => DiscardKey(acc, key), value);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./discard\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Never = Never;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Never type */\nfunction Never(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Never', not: {} }, options);\n}\n", "\"use strict\";\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n\n__exportStar(require(\"./never\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MappedKey = MappedKey;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n// prettier-ignore\nfunction MappedKey(T) {\n return (0, type_1.CreateType)({\n [index_1.Kind]: 'MappedKey',\n keys: T\n });\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MappedResult = MappedResult;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n// prettier-ignore\nfunction MappedResult(properties) {\n return (0, type_1.CreateType)({\n [index_1.Kind]: 'MappedResult',\n properties\n });\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Constructor = Constructor;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Constructor type */\nfunction Constructor(parameters, returns, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Constructor', type: 'Constructor', parameters, returns }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./constructor\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Function = Function;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Function type */\nfunction Function(parameters, returns, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Function', type: 'Function', parameters, returns }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./function\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnionCreate = UnionCreate;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\nfunction UnionCreate(T, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Union', anyOf: T }, options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnionEvaluated = UnionEvaluated;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../discard/index\");\nconst index_3 = require(\"../never/index\");\nconst index_4 = require(\"../optional/index\");\nconst union_create_1 = require(\"./union-create\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction IsUnionOptional(T) {\n return T.some(L => (0, kind_1.IsOptional)(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => (0, kind_1.IsOptional)(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return ((0, index_2.Discard)(T, [index_1.OptionalKind]));\n}\n// prettier-ignore\nfunction ResolveUnion(T, options) {\n return (IsUnionOptional(T)\n ? (0, index_4.Optional)((0, union_create_1.UnionCreate)(RemoveOptionalFromRest(T), options))\n : (0, union_create_1.UnionCreate)(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Union type */\nfunction UnionEvaluated(T, options) {\n // prettier-ignore\n return (T.length === 0 ? (0, index_3.Never)(options) :\n T.length === 1 ? (0, type_1.CreateType)(T[0], options) :\n ResolveUnion(T, options));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst index_1 = require(\"../symbols/index\");\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Union = Union;\nconst index_1 = require(\"../never/index\");\nconst type_1 = require(\"../create/type\");\nconst union_create_1 = require(\"./union-create\");\n/** `[Json]` Creates a Union type */\nfunction Union(T, options) {\n // prettier-ignore\n return (T.length === 0 ? (0, index_1.Never)(options) :\n T.length === 1 ? (0, type_1.CreateType)(T[0], options) :\n (0, union_create_1.UnionCreate)(T, options));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./union-evaluated\"), exports);\n__exportStar(require(\"./union-type\"), exports);\n__exportStar(require(\"./union\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralParserError = void 0;\nexports.TemplateLiteralParse = TemplateLiteralParse;\nexports.TemplateLiteralParseExact = TemplateLiteralParseExact;\nconst index_1 = require(\"../error/index\");\n// ------------------------------------------------------------------\n// TemplateLiteralParserError\n// ------------------------------------------------------------------\nclass TemplateLiteralParserError extends index_1.TypeBoxError {\n}\nexports.TemplateLiteralParserError = TemplateLiteralParserError;\n// -------------------------------------------------------------------\n// Unescape\n//\n// Unescape for these control characters specifically. Note that this\n// function is only called on non union group content, and where we\n// still want to allow the user to embed control characters in that\n// content. For review.\n// -------------------------------------------------------------------\n// prettier-ignore\nfunction Unescape(pattern) {\n return pattern\n .replace(/\\\\\\$/g, '$')\n .replace(/\\\\\\*/g, '*')\n .replace(/\\\\\\^/g, '^')\n .replace(/\\\\\\|/g, '|')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')');\n}\n// -------------------------------------------------------------------\n// Control Characters\n// -------------------------------------------------------------------\nfunction IsNonEscaped(pattern, index, char) {\n return pattern[index] === char && pattern.charCodeAt(index - 1) !== 92;\n}\nfunction IsOpenParen(pattern, index) {\n return IsNonEscaped(pattern, index, '(');\n}\nfunction IsCloseParen(pattern, index) {\n return IsNonEscaped(pattern, index, ')');\n}\nfunction IsSeparator(pattern, index) {\n return IsNonEscaped(pattern, index, '|');\n}\n// -------------------------------------------------------------------\n// Control Groups\n// -------------------------------------------------------------------\nfunction IsGroup(pattern) {\n if (!(IsOpenParen(pattern, 0) && IsCloseParen(pattern, pattern.length - 1)))\n return false;\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (count === 0 && index !== pattern.length - 1)\n return false;\n }\n return true;\n}\n// prettier-ignore\nfunction InGroup(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\n// prettier-ignore\nfunction IsPrecedenceOr(pattern) {\n let count = 0;\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0)\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction IsPrecedenceAnd(pattern) {\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n return true;\n }\n return false;\n}\n// prettier-ignore\nfunction Or(pattern) {\n let [count, start] = [0, 0];\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index))\n count += 1;\n if (IsCloseParen(pattern, index))\n count -= 1;\n if (IsSeparator(pattern, index) && count === 0) {\n const range = pattern.slice(start, index);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n start = index + 1;\n }\n }\n const range = pattern.slice(start);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n if (expressions.length === 0)\n return { type: 'const', const: '' };\n if (expressions.length === 1)\n return expressions[0];\n return { type: 'or', expr: expressions };\n}\n// prettier-ignore\nfunction And(pattern) {\n function Group(value, index) {\n if (!IsOpenParen(value, index))\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Index must point to open parens`);\n let count = 0;\n for (let scan = index; scan < value.length; scan++) {\n if (IsOpenParen(value, scan))\n count += 1;\n if (IsCloseParen(value, scan))\n count -= 1;\n if (count === 0)\n return [index, scan];\n }\n throw new TemplateLiteralParserError(`TemplateLiteralParser: Unclosed group parens in expression`);\n }\n function Range(pattern, index) {\n for (let scan = index; scan < pattern.length; scan++) {\n if (IsOpenParen(pattern, scan))\n return [index, scan];\n }\n return [index, pattern.length];\n }\n const expressions = [];\n for (let index = 0; index < pattern.length; index++) {\n if (IsOpenParen(pattern, index)) {\n const [start, end] = Group(pattern, index);\n const range = pattern.slice(start, end + 1);\n expressions.push(TemplateLiteralParse(range));\n index = end;\n }\n else {\n const [start, end] = Range(pattern, index);\n const range = pattern.slice(start, end);\n if (range.length > 0)\n expressions.push(TemplateLiteralParse(range));\n index = end - 1;\n }\n }\n return ((expressions.length === 0) ? { type: 'const', const: '' } :\n (expressions.length === 1) ? expressions[0] :\n { type: 'and', expr: expressions });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParse\n// ------------------------------------------------------------------\n/** Parses a pattern and returns an expression tree */\nfunction TemplateLiteralParse(pattern) {\n // prettier-ignore\n return (IsGroup(pattern) ? TemplateLiteralParse(InGroup(pattern)) :\n IsPrecedenceOr(pattern) ? Or(pattern) :\n IsPrecedenceAnd(pattern) ? And(pattern) :\n { type: 'const', const: Unescape(pattern) });\n}\n// ------------------------------------------------------------------\n// TemplateLiteralParseExact\n// ------------------------------------------------------------------\n/** Parses a pattern and strips forward and trailing ^ and $ */\nfunction TemplateLiteralParseExact(pattern) {\n return TemplateLiteralParse(pattern.slice(1, pattern.length - 1));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralFiniteError = void 0;\nexports.IsTemplateLiteralExpressionFinite = IsTemplateLiteralExpressionFinite;\nexports.IsTemplateLiteralFinite = IsTemplateLiteralFinite;\nconst parse_1 = require(\"./parse\");\nconst index_1 = require(\"../error/index\");\n// ------------------------------------------------------------------\n// TemplateLiteralFiniteError\n// ------------------------------------------------------------------\nclass TemplateLiteralFiniteError extends index_1.TypeBoxError {\n}\nexports.TemplateLiteralFiniteError = TemplateLiteralFiniteError;\n// ------------------------------------------------------------------\n// IsTemplateLiteralFiniteCheck\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsNumberExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === '0' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === '[1-9][0-9]*');\n}\n// prettier-ignore\nfunction IsBooleanExpression(expression) {\n return (expression.type === 'or' &&\n expression.expr.length === 2 &&\n expression.expr[0].type === 'const' &&\n expression.expr[0].const === 'true' &&\n expression.expr[1].type === 'const' &&\n expression.expr[1].const === 'false');\n}\n// prettier-ignore\nfunction IsStringExpression(expression) {\n return expression.type === 'const' && expression.const === '.*';\n}\n// ------------------------------------------------------------------\n// IsTemplateLiteralExpressionFinite\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsTemplateLiteralExpressionFinite(expression) {\n return (IsNumberExpression(expression) || IsStringExpression(expression) ? false :\n IsBooleanExpression(expression) ? true :\n (expression.type === 'and') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'or') ? expression.expr.every((expr) => IsTemplateLiteralExpressionFinite(expr)) :\n (expression.type === 'const') ? true :\n (() => { throw new TemplateLiteralFiniteError(`Unknown expression type`); })());\n}\n/** Returns true if this TemplateLiteral resolves to a finite set of values */\nfunction IsTemplateLiteralFinite(schema) {\n const expression = (0, parse_1.TemplateLiteralParseExact)(schema.pattern);\n return IsTemplateLiteralExpressionFinite(expression);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralGenerateError = void 0;\nexports.TemplateLiteralExpressionGenerate = TemplateLiteralExpressionGenerate;\nexports.TemplateLiteralGenerate = TemplateLiteralGenerate;\nconst finite_1 = require(\"./finite\");\nconst parse_1 = require(\"./parse\");\nconst index_1 = require(\"../error/index\");\n// ------------------------------------------------------------------\n// TemplateLiteralGenerateError\n// ------------------------------------------------------------------\nclass TemplateLiteralGenerateError extends index_1.TypeBoxError {\n}\nexports.TemplateLiteralGenerateError = TemplateLiteralGenerateError;\n// ------------------------------------------------------------------\n// TemplateLiteralExpressionGenerate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* GenerateReduce(buffer) {\n if (buffer.length === 1)\n return yield* buffer[0];\n for (const left of buffer[0]) {\n for (const right of GenerateReduce(buffer.slice(1))) {\n yield `${left}${right}`;\n }\n }\n}\n// prettier-ignore\nfunction* GenerateAnd(expression) {\n return yield* GenerateReduce(expression.expr.map((expr) => [...TemplateLiteralExpressionGenerate(expr)]));\n}\n// prettier-ignore\nfunction* GenerateOr(expression) {\n for (const expr of expression.expr)\n yield* TemplateLiteralExpressionGenerate(expr);\n}\n// prettier-ignore\nfunction* GenerateConst(expression) {\n return yield expression.const;\n}\nfunction* TemplateLiteralExpressionGenerate(expression) {\n return expression.type === 'and'\n ? yield* GenerateAnd(expression)\n : expression.type === 'or'\n ? yield* GenerateOr(expression)\n : expression.type === 'const'\n ? yield* GenerateConst(expression)\n : (() => {\n throw new TemplateLiteralGenerateError('Unknown expression');\n })();\n}\n/** Generates a tuple of strings from the given TemplateLiteral. Returns an empty tuple if infinite. */\nfunction TemplateLiteralGenerate(schema) {\n const expression = (0, parse_1.TemplateLiteralParseExact)(schema.pattern);\n // prettier-ignore\n return ((0, finite_1.IsTemplateLiteralExpressionFinite)(expression)\n ? [...TemplateLiteralExpressionGenerate(expression)]\n : []);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Literal = Literal;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Literal type */\nfunction Literal(value, options) {\n return (0, type_1.CreateType)({\n [index_1.Kind]: 'Literal',\n const: value,\n type: typeof value,\n }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./literal\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Boolean = Boolean;\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../create/index\");\n/** `[Json]` Creates a Boolean type */\nfunction Boolean(options) {\n return (0, index_2.CreateType)({ [index_1.Kind]: 'Boolean', type: 'boolean' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./boolean\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BigInt = BigInt;\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../create/index\");\n/** `[JavaScript]` Creates a BigInt type */\nfunction BigInt(options) {\n return (0, index_2.CreateType)({ [index_1.Kind]: 'BigInt', type: 'bigint' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./bigint\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Number = Number;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Number type */\nfunction Number(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Number', type: 'number' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./number\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.String = String;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a String type */\nfunction String(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'String', type: 'string' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./string\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralSyntax = TemplateLiteralSyntax;\nconst index_1 = require(\"../literal/index\");\nconst index_2 = require(\"../boolean/index\");\nconst index_3 = require(\"../bigint/index\");\nconst index_4 = require(\"../number/index\");\nconst index_5 = require(\"../string/index\");\nconst index_6 = require(\"../union/index\");\nconst index_7 = require(\"../never/index\");\n// ------------------------------------------------------------------\n// SyntaxParsers\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction* FromUnion(syntax) {\n const trim = syntax.trim().replace(/\"|'/g, '');\n return (trim === 'boolean' ? yield (0, index_2.Boolean)() :\n trim === 'number' ? yield (0, index_4.Number)() :\n trim === 'bigint' ? yield (0, index_3.BigInt)() :\n trim === 'string' ? yield (0, index_5.String)() :\n yield (() => {\n const literals = trim.split('|').map((literal) => (0, index_1.Literal)(literal.trim()));\n return (literals.length === 0 ? (0, index_7.Never)() :\n literals.length === 1 ? literals[0] :\n (0, index_6.UnionEvaluated)(literals));\n })());\n}\n// prettier-ignore\nfunction* FromTerminal(syntax) {\n if (syntax[1] !== '{') {\n const L = (0, index_1.Literal)('$');\n const R = FromSyntax(syntax.slice(1));\n return yield* [L, ...R];\n }\n for (let i = 2; i < syntax.length; i++) {\n if (syntax[i] === '}') {\n const L = FromUnion(syntax.slice(2, i));\n const R = FromSyntax(syntax.slice(i + 1));\n return yield* [...L, ...R];\n }\n }\n yield (0, index_1.Literal)(syntax);\n}\n// prettier-ignore\nfunction* FromSyntax(syntax) {\n for (let i = 0; i < syntax.length; i++) {\n if (syntax[i] === '$') {\n const L = (0, index_1.Literal)(syntax.slice(0, i));\n const R = FromTerminal(syntax.slice(i));\n return yield* [L, ...R];\n }\n }\n yield (0, index_1.Literal)(syntax);\n}\n/** Parses TemplateLiteralSyntax and returns a tuple of TemplateLiteralKinds */\nfunction TemplateLiteralSyntax(syntax) {\n return [...FromSyntax(syntax)];\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralPatternError = void 0;\nexports.TemplateLiteralPattern = TemplateLiteralPattern;\nconst index_1 = require(\"../patterns/index\");\nconst index_2 = require(\"../symbols/index\");\nconst index_3 = require(\"../error/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// ------------------------------------------------------------------\n// TemplateLiteralPatternError\n// ------------------------------------------------------------------\nclass TemplateLiteralPatternError extends index_3.TypeBoxError {\n}\nexports.TemplateLiteralPatternError = TemplateLiteralPatternError;\n// ------------------------------------------------------------------\n// TemplateLiteralPattern\n// ------------------------------------------------------------------\nfunction Escape(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n// prettier-ignore\nfunction Visit(schema, acc) {\n return ((0, kind_1.IsTemplateLiteral)(schema) ? schema.pattern.slice(1, schema.pattern.length - 1) :\n (0, kind_1.IsUnion)(schema) ? `(${schema.anyOf.map((schema) => Visit(schema, acc)).join('|')})` :\n (0, kind_1.IsNumber)(schema) ? `${acc}${index_1.PatternNumber}` :\n (0, kind_1.IsInteger)(schema) ? `${acc}${index_1.PatternNumber}` :\n (0, kind_1.IsBigInt)(schema) ? `${acc}${index_1.PatternNumber}` :\n (0, kind_1.IsString)(schema) ? `${acc}${index_1.PatternString}` :\n (0, kind_1.IsLiteral)(schema) ? `${acc}${Escape(schema.const.toString())}` :\n (0, kind_1.IsBoolean)(schema) ? `${acc}${index_1.PatternBoolean}` :\n (() => { throw new TemplateLiteralPatternError(`Unexpected Kind '${schema[index_2.Kind]}'`); })());\n}\nfunction TemplateLiteralPattern(kinds) {\n return `^${kinds.map((schema) => Visit(schema, '')).join('')}\\$`;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralToUnion = TemplateLiteralToUnion;\nconst index_1 = require(\"../union/index\");\nconst index_2 = require(\"../literal/index\");\nconst generate_1 = require(\"./generate\");\n/** Returns a Union from the given TemplateLiteral */\nfunction TemplateLiteralToUnion(schema) {\n const R = (0, generate_1.TemplateLiteralGenerate)(schema);\n const L = R.map((S) => (0, index_2.Literal)(S));\n return (0, index_1.UnionEvaluated)(L);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteral = TemplateLiteral;\nconst type_1 = require(\"../create/type\");\nconst syntax_1 = require(\"./syntax\");\nconst pattern_1 = require(\"./pattern\");\nconst value_1 = require(\"../guard/value\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a TemplateLiteral type */\n// prettier-ignore\nfunction TemplateLiteral(unresolved, options) {\n const pattern = (0, value_1.IsString)(unresolved)\n ? (0, pattern_1.TemplateLiteralPattern)((0, syntax_1.TemplateLiteralSyntax)(unresolved))\n : (0, pattern_1.TemplateLiteralPattern)(unresolved);\n return (0, type_1.CreateType)({ [index_1.Kind]: 'TemplateLiteral', type: 'string', pattern }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./finite\"), exports);\n__exportStar(require(\"./generate\"), exports);\n__exportStar(require(\"./syntax\"), exports);\n__exportStar(require(\"./parse\"), exports);\n__exportStar(require(\"./pattern\"), exports);\n__exportStar(require(\"./union\"), exports);\n__exportStar(require(\"./template-literal\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IndexPropertyKeys = IndexPropertyKeys;\nconst index_1 = require(\"../template-literal/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromTemplateLiteral(T) {\n const R = (0, index_1.TemplateLiteralGenerate)(T);\n return R.map(S => S.toString());\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...IndexPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromLiteral(T) {\n return ([T.toString()] // TS 5.4 observes TLiteralValue as not having a toString()\n );\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema */\n// prettier-ignore\nfunction IndexPropertyKeys(T) {\n return [...new Set(((0, kind_1.IsTemplateLiteral)(T) ? FromTemplateLiteral(T) :\n (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) :\n (0, kind_1.IsLiteral)(T) ? FromLiteral(T.const) :\n (0, kind_1.IsNumber)(T) ? ['[number]'] :\n (0, kind_1.IsInteger)(T) ? ['[number]'] :\n []))];\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IndexFromMappedResult = IndexFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst indexed_property_keys_1 = require(\"./indexed-property-keys\");\nconst index_2 = require(\"./index\");\n// prettier-ignore\nfunction FromProperties(T, P, options) {\n const Acc = {};\n for (const K2 of Object.getOwnPropertyNames(P)) {\n Acc[K2] = (0, index_2.Index)(T, (0, indexed_property_keys_1.IndexPropertyKeys)(P[K2]), options);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(T, R, options) {\n return FromProperties(T, R.properties, options);\n}\n// prettier-ignore\nfunction IndexFromMappedResult(T, R, options) {\n const P = FromMappedResult(T, R, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IndexFromPropertyKey = IndexFromPropertyKey;\nexports.IndexFromPropertyKeys = IndexFromPropertyKeys;\nexports.Index = Index;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../never/index\");\nconst index_2 = require(\"../intersect/index\");\nconst index_3 = require(\"../union/index\");\nconst indexed_property_keys_1 = require(\"./indexed-property-keys\");\nconst indexed_from_mapped_key_1 = require(\"./indexed-from-mapped-key\");\nconst indexed_from_mapped_result_1 = require(\"./indexed-from-mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromRest(T, K) {\n return T.map(L => IndexFromPropertyKey(L, K));\n}\n// prettier-ignore\nfunction FromIntersectRest(T) {\n return T.filter(L => !(0, kind_1.IsNever)(L));\n}\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return ((0, index_2.IntersectEvaluated)(FromIntersectRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromUnionRest(T) {\n return (T.some(L => (0, kind_1.IsNever)(L))\n ? []\n : T);\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return ((0, index_3.UnionEvaluated)(FromUnionRest(FromRest(T, K))));\n}\n// prettier-ignore\nfunction FromTuple(T, K) {\n return (K in T ? T[K] :\n K === '[number]' ? (0, index_3.UnionEvaluated)(T) :\n (0, index_1.Never)());\n}\n// prettier-ignore\nfunction FromArray(T, K) {\n return (K === '[number]'\n ? T\n : (0, index_1.Never)());\n}\n// prettier-ignore\nfunction FromProperty(T, K) {\n return (K in T ? T[K] : (0, index_1.Never)());\n}\n// prettier-ignore\nfunction IndexFromPropertyKey(T, K) {\n return ((0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf, K) :\n (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf, K) :\n (0, kind_1.IsTuple)(T) ? FromTuple(T.items ?? [], K) :\n (0, kind_1.IsArray)(T) ? FromArray(T.items, K) :\n (0, kind_1.IsObject)(T) ? FromProperty(T.properties, K) :\n (0, index_1.Never)());\n}\n// prettier-ignore\nfunction IndexFromPropertyKeys(T, K) {\n return K.map(L => IndexFromPropertyKey(T, L));\n}\n// prettier-ignore\nfunction FromSchema(T, K) {\n return ((0, index_3.UnionEvaluated)(IndexFromPropertyKeys(T, K)));\n}\n/** `[Json]` Returns an Indexed property type for the given keys */\nfunction Index(T, K, options) {\n // mapped-types\n if ((0, kind_1.IsMappedResult)(K))\n return (0, indexed_from_mapped_result_1.IndexFromMappedResult)(T, K, options);\n if ((0, kind_1.IsMappedKey)(K))\n return (0, indexed_from_mapped_key_1.IndexFromMappedKey)(T, K, options);\n // prettier-ignore\n return (0, type_1.CreateType)((0, kind_1.IsSchema)(K)\n ? FromSchema(T, (0, indexed_property_keys_1.IndexPropertyKeys)(K))\n : FromSchema(T, K), options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IndexFromMappedKey = IndexFromMappedKey;\nconst indexed_1 = require(\"./indexed\");\nconst index_1 = require(\"../mapped/index\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction MappedIndexPropertyKey(T, K, options) {\n return { [K]: (0, indexed_1.Index)(T, [K], (0, value_1.Clone)(options)) };\n}\n// prettier-ignore\nfunction MappedIndexPropertyKeys(T, K, options) {\n return K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIndexPropertyKey(T, L, options) };\n }, {});\n}\n// prettier-ignore\nfunction MappedIndexProperties(T, K, options) {\n return MappedIndexPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nfunction IndexFromMappedKey(T, K, options) {\n const P = MappedIndexProperties(T, K, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./indexed-from-mapped-key\"), exports);\n__exportStar(require(\"./indexed-from-mapped-result\"), exports);\n__exportStar(require(\"./indexed-property-keys\"), exports);\n__exportStar(require(\"./indexed\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Iterator = Iterator;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates an Iterator type */\nfunction Iterator(items, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Iterator', type: 'Iterator', items }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./iterator\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Object = void 0;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\nfunction RequiredKeys(properties) {\n const keys = [];\n for (let key in properties) {\n if (!(0, kind_1.IsOptional)(properties[key]))\n keys.push(key);\n }\n return keys;\n}\n/** `[Json]` Creates an Object type */\nfunction _Object(properties, options) {\n const required = RequiredKeys(properties);\n const schematic = required.length > 0 ? { [index_1.Kind]: 'Object', type: 'object', properties, required } : { [index_1.Kind]: 'Object', type: 'object', properties };\n return (0, type_1.CreateType)(schematic, options);\n}\n/** `[Json]` Creates an Object type */\nexports.Object = _Object;\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./object\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Promise = Promise;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Promise type */\nfunction Promise(item, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Promise', type: 'Promise', item }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./promise\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Readonly = Readonly;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../discard/index\");\nconst readonly_from_mapped_result_1 = require(\"./readonly-from-mapped-result\");\nconst kind_1 = require(\"../guard/kind\");\nfunction RemoveReadonly(schema) {\n return (0, type_1.CreateType)((0, index_2.Discard)(schema, [index_1.ReadonlyKind]));\n}\nfunction AddReadonly(schema) {\n return (0, type_1.CreateType)({ ...schema, [index_1.ReadonlyKind]: 'Readonly' });\n}\n// prettier-ignore\nfunction ReadonlyWithFlag(schema, F) {\n return (F === false\n ? RemoveReadonly(schema)\n : AddReadonly(schema));\n}\n/** `[Json]` Creates a Readonly property */\nfunction Readonly(schema, enable) {\n const F = enable ?? true;\n return (0, kind_1.IsMappedResult)(schema) ? (0, readonly_from_mapped_result_1.ReadonlyFromMappedResult)(schema, F) : ReadonlyWithFlag(schema, F);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadonlyFromMappedResult = ReadonlyFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst readonly_1 = require(\"./readonly\");\n// prettier-ignore\nfunction FromProperties(K, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = (0, readonly_1.Readonly)(K[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nfunction ReadonlyFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./readonly-from-mapped-result\"), exports);\n__exportStar(require(\"./readonly\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tuple = Tuple;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Tuple type */\nfunction Tuple(items, options) {\n // prettier-ignore\n return (0, type_1.CreateType)(items.length > 0 ?\n { [index_1.Kind]: 'Tuple', type: 'array', items, additionalItems: false, minItems: items.length, maxItems: items.length } :\n { [index_1.Kind]: 'Tuple', type: 'array', minItems: items.length, maxItems: items.length }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./tuple\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MappedFunctionReturnType = MappedFunctionReturnType;\nexports.Mapped = Mapped;\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../discard/index\");\n// evaluation types\nconst index_3 = require(\"../array/index\");\nconst index_4 = require(\"../async-iterator/index\");\nconst index_5 = require(\"../constructor/index\");\nconst index_6 = require(\"../function/index\");\nconst index_7 = require(\"../indexed/index\");\nconst index_8 = require(\"../intersect/index\");\nconst index_9 = require(\"../iterator/index\");\nconst index_10 = require(\"../literal/index\");\nconst index_11 = require(\"../object/index\");\nconst index_12 = require(\"../optional/index\");\nconst index_13 = require(\"../promise/index\");\nconst index_14 = require(\"../readonly/index\");\nconst index_15 = require(\"../tuple/index\");\nconst index_16 = require(\"../union/index\");\n// operator\nconst index_17 = require(\"../sets/index\");\n// mapping types\nconst mapped_result_1 = require(\"./mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromMappedResult(K, P) {\n return (K in P\n ? FromSchemaType(K, P[K])\n : (0, mapped_result_1.MappedResult)(P));\n}\n// prettier-ignore\nfunction MappedKeyToKnownMappedResultProperties(K) {\n return { [K]: (0, index_10.Literal)(K) };\n}\n// prettier-ignore\nfunction MappedKeyToUnknownMappedResultProperties(P) {\n const Acc = {};\n for (const L of P)\n Acc[L] = (0, index_10.Literal)(L);\n return Acc;\n}\n// prettier-ignore\nfunction MappedKeyToMappedResultProperties(K, P) {\n return ((0, index_17.SetIncludes)(P, K)\n ? MappedKeyToKnownMappedResultProperties(K)\n : MappedKeyToUnknownMappedResultProperties(P));\n}\n// prettier-ignore\nfunction FromMappedKey(K, P) {\n const R = MappedKeyToMappedResultProperties(K, P);\n return FromMappedResult(K, R);\n}\n// prettier-ignore\nfunction FromRest(K, T) {\n return T.map(L => FromSchemaType(K, L));\n}\n// prettier-ignore\nfunction FromProperties(K, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(T))\n Acc[K2] = FromSchemaType(K, T[K2]);\n return Acc;\n}\n// prettier-ignore\nfunction FromSchemaType(K, T) {\n // required to retain user defined options for mapped type\n const options = { ...T };\n return (\n // unevaluated modifier types\n (0, kind_1.IsOptional)(T) ? (0, index_12.Optional)(FromSchemaType(K, (0, index_2.Discard)(T, [index_1.OptionalKind]))) :\n (0, kind_1.IsReadonly)(T) ? (0, index_14.Readonly)(FromSchemaType(K, (0, index_2.Discard)(T, [index_1.ReadonlyKind]))) :\n // unevaluated mapped types\n (0, kind_1.IsMappedResult)(T) ? FromMappedResult(K, T.properties) :\n (0, kind_1.IsMappedKey)(T) ? FromMappedKey(K, T.keys) :\n // unevaluated types\n (0, kind_1.IsConstructor)(T) ? (0, index_5.Constructor)(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n (0, kind_1.IsFunction)(T) ? (0, index_6.Function)(FromRest(K, T.parameters), FromSchemaType(K, T.returns), options) :\n (0, kind_1.IsAsyncIterator)(T) ? (0, index_4.AsyncIterator)(FromSchemaType(K, T.items), options) :\n (0, kind_1.IsIterator)(T) ? (0, index_9.Iterator)(FromSchemaType(K, T.items), options) :\n (0, kind_1.IsIntersect)(T) ? (0, index_8.Intersect)(FromRest(K, T.allOf), options) :\n (0, kind_1.IsUnion)(T) ? (0, index_16.Union)(FromRest(K, T.anyOf), options) :\n (0, kind_1.IsTuple)(T) ? (0, index_15.Tuple)(FromRest(K, T.items ?? []), options) :\n (0, kind_1.IsObject)(T) ? (0, index_11.Object)(FromProperties(K, T.properties), options) :\n (0, kind_1.IsArray)(T) ? (0, index_3.Array)(FromSchemaType(K, T.items), options) :\n (0, kind_1.IsPromise)(T) ? (0, index_13.Promise)(FromSchemaType(K, T.item), options) :\n T);\n}\n// prettier-ignore\nfunction MappedFunctionReturnType(K, T) {\n const Acc = {};\n for (const L of K)\n Acc[L] = FromSchemaType(L, T);\n return Acc;\n}\n/** `[Json]` Creates a Mapped object type */\nfunction Mapped(key, map, options) {\n const K = (0, kind_1.IsSchema)(key) ? (0, index_7.IndexPropertyKeys)(key) : key;\n const RT = map({ [index_1.Kind]: 'MappedKey', keys: K });\n const R = MappedFunctionReturnType(K, RT);\n return (0, index_11.Object)(R, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./mapped-key\"), exports);\n__exportStar(require(\"./mapped-result\"), exports);\n__exportStar(require(\"./mapped\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Optional = Optional;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\nconst index_2 = require(\"../discard/index\");\nconst optional_from_mapped_result_1 = require(\"./optional-from-mapped-result\");\nconst kind_1 = require(\"../guard/kind\");\nfunction RemoveOptional(schema) {\n return (0, type_1.CreateType)((0, index_2.Discard)(schema, [index_1.OptionalKind]));\n}\nfunction AddOptional(schema) {\n return (0, type_1.CreateType)({ ...schema, [index_1.OptionalKind]: 'Optional' });\n}\n// prettier-ignore\nfunction OptionalWithFlag(schema, F) {\n return (F === false\n ? RemoveOptional(schema)\n : AddOptional(schema));\n}\n/** `[Json]` Creates a Optional property */\nfunction Optional(schema, enable) {\n const F = enable ?? true;\n return (0, kind_1.IsMappedResult)(schema) ? (0, optional_from_mapped_result_1.OptionalFromMappedResult)(schema, F) : OptionalWithFlag(schema, F);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OptionalFromMappedResult = OptionalFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst optional_1 = require(\"./optional\");\n// prettier-ignore\nfunction FromProperties(P, F) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, optional_1.Optional)(P[K2], F);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, F) {\n return FromProperties(R.properties, F);\n}\n// prettier-ignore\nfunction OptionalFromMappedResult(R, F) {\n const P = FromMappedResult(R, F);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./optional-from-mapped-result\"), exports);\n__exportStar(require(\"./optional\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IntersectCreate = IntersectCreate;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// ------------------------------------------------------------------\n// IntersectCreate\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntersectCreate(T, options = {}) {\n const allObjects = T.every((schema) => (0, kind_1.IsObject)(schema));\n const clonedUnevaluatedProperties = (0, kind_1.IsSchema)(options.unevaluatedProperties)\n ? { unevaluatedProperties: options.unevaluatedProperties }\n : {};\n return (0, type_1.CreateType)((options.unevaluatedProperties === false || (0, kind_1.IsSchema)(options.unevaluatedProperties) || allObjects\n ? { ...clonedUnevaluatedProperties, [index_1.Kind]: 'Intersect', type: 'object', allOf: T }\n : { ...clonedUnevaluatedProperties, [index_1.Kind]: 'Intersect', allOf: T }), options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IntersectEvaluated = IntersectEvaluated;\nconst index_1 = require(\"../symbols/index\");\nconst type_1 = require(\"../create/type\");\nconst index_2 = require(\"../discard/index\");\nconst index_3 = require(\"../never/index\");\nconst index_4 = require(\"../optional/index\");\nconst intersect_create_1 = require(\"./intersect-create\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction IsIntersectOptional(T) {\n return T.every(L => (0, kind_1.IsOptional)(L));\n}\n// prettier-ignore\nfunction RemoveOptionalFromType(T) {\n return ((0, index_2.Discard)(T, [index_1.OptionalKind]));\n}\n// prettier-ignore\nfunction RemoveOptionalFromRest(T) {\n return T.map(L => (0, kind_1.IsOptional)(L) ? RemoveOptionalFromType(L) : L);\n}\n// prettier-ignore\nfunction ResolveIntersect(T, options) {\n return (IsIntersectOptional(T)\n ? (0, index_4.Optional)((0, intersect_create_1.IntersectCreate)(RemoveOptionalFromRest(T), options))\n : (0, intersect_create_1.IntersectCreate)(RemoveOptionalFromRest(T), options));\n}\n/** `[Json]` Creates an evaluated Intersect type */\nfunction IntersectEvaluated(T, options = {}) {\n if (T.length === 0)\n return (0, index_3.Never)(options);\n if (T.length === 1)\n return (0, type_1.CreateType)(T[0], options);\n if (T.some((schema) => (0, kind_1.IsTransform)(schema)))\n throw new Error('Cannot intersect transform types');\n return ResolveIntersect(T, options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst index_1 = require(\"../symbols/index\");\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Intersect = Intersect;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../never/index\");\nconst intersect_create_1 = require(\"./intersect-create\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n/** `[Json]` Creates an evaluated Intersect type */\nfunction Intersect(T, options) {\n if (T.length === 0)\n return (0, index_1.Never)(options);\n if (T.length === 1)\n return (0, type_1.CreateType)(T[0], options);\n if (T.some((schema) => (0, kind_1.IsTransform)(schema)))\n throw new Error('Cannot intersect transform types');\n return (0, intersect_create_1.IntersectCreate)(T, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./intersect-evaluated\"), exports);\n__exportStar(require(\"./intersect-type\"), exports);\n__exportStar(require(\"./intersect\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Awaited = Awaited;\nconst index_1 = require(\"../intersect/index\");\nconst index_2 = require(\"../union/index\");\nconst type_1 = require(\"../create/type\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => AwaitedResolve(L));\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n return (0, index_1.Intersect)(FromRest(T));\n}\n// prettier-ignore\nfunction FromUnion(T) {\n return (0, index_2.Union)(FromRest(T));\n}\n// prettier-ignore\nfunction FromPromise(T) {\n return AwaitedResolve(T);\n}\n// ----------------------------------------------------------------\n// AwaitedResolve\n// ----------------------------------------------------------------\n// prettier-ignore\nfunction AwaitedResolve(T) {\n return ((0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf) :\n (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) :\n (0, kind_1.IsPromise)(T) ? FromPromise(T.item) :\n T);\n}\n/** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\nfunction Awaited(T, options) {\n return (0, type_1.CreateType)(AwaitedResolve(T), options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./awaited\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyOfPropertyKeys = KeyOfPropertyKeys;\nexports.KeyOfPattern = KeyOfPattern;\nconst index_1 = require(\"../sets/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromRest(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(KeyOfPropertyKeys(L));\n return Acc;\n}\n// prettier-ignore\nfunction FromIntersect(T) {\n const C = FromRest(T);\n const R = (0, index_1.SetUnionMany)(C);\n return R;\n}\n// prettier-ignore\nfunction FromUnion(T) {\n const C = FromRest(T);\n const R = (0, index_1.SetIntersectMany)(C);\n return R;\n}\n// prettier-ignore\nfunction FromTuple(T) {\n return T.map((_, I) => I.toString());\n}\n// prettier-ignore\nfunction FromArray(_) {\n return (['[number]']);\n}\n// prettier-ignore\nfunction FromProperties(T) {\n return (globalThis.Object.getOwnPropertyNames(T));\n}\n// ------------------------------------------------------------------\n// FromPatternProperties\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPatternProperties(patternProperties) {\n if (!includePatternProperties)\n return [];\n const patternPropertyKeys = globalThis.Object.getOwnPropertyNames(patternProperties);\n return patternPropertyKeys.map(key => {\n return (key[0] === '^' && key[key.length - 1] === '$')\n ? key.slice(1, key.length - 1)\n : key;\n });\n}\n/** Returns a tuple of PropertyKeys derived from the given TSchema. */\n// prettier-ignore\nfunction KeyOfPropertyKeys(T) {\n return ((0, kind_1.IsIntersect)(T) ? FromIntersect(T.allOf) :\n (0, kind_1.IsUnion)(T) ? FromUnion(T.anyOf) :\n (0, kind_1.IsTuple)(T) ? FromTuple(T.items ?? []) :\n (0, kind_1.IsArray)(T) ? FromArray(T.items) :\n (0, kind_1.IsObject)(T) ? FromProperties(T.properties) :\n (0, kind_1.IsRecord)(T) ? FromPatternProperties(T.patternProperties) :\n []);\n}\n// ----------------------------------------------------------------\n// KeyOfPattern\n// ----------------------------------------------------------------\nlet includePatternProperties = false;\n/** Returns a regular expression pattern derived from the given TSchema */\nfunction KeyOfPattern(schema) {\n includePatternProperties = true;\n const keys = KeyOfPropertyKeys(schema);\n includePatternProperties = false;\n const pattern = keys.map((key) => `(${key})`);\n return `^(${pattern.join('|')})$`;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyOfPropertyKeysToRest = KeyOfPropertyKeysToRest;\nexports.KeyOf = KeyOf;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../literal/index\");\nconst index_2 = require(\"../number/index\");\nconst keyof_property_keys_1 = require(\"./keyof-property-keys\");\nconst index_3 = require(\"../union/index\");\nconst keyof_from_mapped_result_1 = require(\"./keyof-from-mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction KeyOfPropertyKeysToRest(T) {\n return T.map(L => L === '[number]' ? (0, index_2.Number)() : (0, index_1.Literal)(L));\n}\n/** `[Json]` Creates a KeyOf type */\nfunction KeyOf(T, options) {\n if ((0, kind_1.IsMappedResult)(T)) {\n return (0, keyof_from_mapped_result_1.KeyOfFromMappedResult)(T, options);\n }\n else {\n const K = (0, keyof_property_keys_1.KeyOfPropertyKeys)(T);\n const S = KeyOfPropertyKeysToRest(K);\n const U = (0, index_3.UnionEvaluated)(S);\n return (0, type_1.CreateType)(U, options);\n }\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyOfFromMappedResult = KeyOfFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst keyof_1 = require(\"./keyof\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = (0, keyof_1.KeyOf)(K[K2], (0, value_1.Clone)(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nfunction KeyOfFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KeyOfPropertyEntries = KeyOfPropertyEntries;\nconst indexed_1 = require(\"../indexed/indexed\");\nconst keyof_property_keys_1 = require(\"./keyof-property-keys\");\n/**\n * `[Utility]` Resolves an array of keys and schemas from the given schema. This method is faster\n * than obtaining the keys and resolving each individually via indexing. This method was written\n * accellerate Intersect and Union encoding.\n */\nfunction KeyOfPropertyEntries(schema) {\n const keys = (0, keyof_property_keys_1.KeyOfPropertyKeys)(schema);\n const schemas = (0, indexed_1.IndexFromPropertyKeys)(schema, keys);\n return keys.map((_, index) => [keys[index], schemas[index]]);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./keyof-from-mapped-result\"), exports);\n__exportStar(require(\"./keyof-property-entries\"), exports);\n__exportStar(require(\"./keyof-property-keys\"), exports);\n__exportStar(require(\"./keyof\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Composite = Composite;\nconst index_1 = require(\"../intersect/index\");\nconst index_2 = require(\"../indexed/index\");\nconst index_3 = require(\"../keyof/index\");\nconst index_4 = require(\"../object/index\");\nconst index_5 = require(\"../sets/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction CompositeKeys(T) {\n const Acc = [];\n for (const L of T)\n Acc.push(...(0, index_3.KeyOfPropertyKeys)(L));\n return (0, index_5.SetDistinct)(Acc);\n}\n// prettier-ignore\nfunction FilterNever(T) {\n return T.filter(L => !(0, kind_1.IsNever)(L));\n}\n// prettier-ignore\nfunction CompositeProperty(T, K) {\n const Acc = [];\n for (const L of T)\n Acc.push(...(0, index_2.IndexFromPropertyKeys)(L, [K]));\n return FilterNever(Acc);\n}\n// prettier-ignore\nfunction CompositeProperties(T, K) {\n const Acc = {};\n for (const L of K) {\n Acc[L] = (0, index_1.IntersectEvaluated)(CompositeProperty(T, L));\n }\n return Acc;\n}\n// prettier-ignore\nfunction Composite(T, options) {\n const K = CompositeKeys(T);\n const P = CompositeProperties(T, K);\n const R = (0, index_4.Object)(P, options);\n return R;\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./composite\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Date = Date;\nconst index_1 = require(\"../symbols/index\");\nconst type_1 = require(\"../create/type\");\n/** `[JavaScript]` Creates a Date type */\nfunction Date(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Date', type: 'Date' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./date\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Null = Null;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Null type */\nfunction Null(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Null', type: 'null' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./null\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Symbol = Symbol;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Symbol type */\nfunction Symbol(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Symbol', type: 'symbol' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./symbol\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Undefined = Undefined;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Undefined type */\nfunction Undefined(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Undefined', type: 'undefined' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./undefined\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Uint8Array = Uint8Array;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Uint8Array type */\nfunction Uint8Array(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Uint8Array', type: 'Uint8Array' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./uint8array\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Unknown = Unknown;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates an Unknown type */\nfunction Unknown(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Unknown' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./unknown\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Const = Const;\nconst index_1 = require(\"../any/index\");\nconst index_2 = require(\"../bigint/index\");\nconst index_3 = require(\"../date/index\");\nconst index_4 = require(\"../function/index\");\nconst index_5 = require(\"../literal/index\");\nconst index_6 = require(\"../null/index\");\nconst index_7 = require(\"../object/index\");\nconst index_8 = require(\"../symbol/index\");\nconst index_9 = require(\"../tuple/index\");\nconst index_10 = require(\"../readonly/index\");\nconst index_11 = require(\"../undefined/index\");\nconst index_12 = require(\"../uint8array/index\");\nconst index_13 = require(\"../unknown/index\");\nconst index_14 = require(\"../create/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nconst value_1 = require(\"../guard/value\");\n// prettier-ignore\nfunction FromArray(T) {\n return T.map(L => FromValue(L, false));\n}\n// prettier-ignore\nfunction FromProperties(value) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(value))\n Acc[K] = (0, index_10.Readonly)(FromValue(value[K], false));\n return Acc;\n}\nfunction ConditionalReadonly(T, root) {\n return (root === true ? T : (0, index_10.Readonly)(T));\n}\n// prettier-ignore\nfunction FromValue(value, root) {\n return ((0, value_1.IsAsyncIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) :\n (0, value_1.IsIterator)(value) ? ConditionalReadonly((0, index_1.Any)(), root) :\n (0, value_1.IsArray)(value) ? (0, index_10.Readonly)((0, index_9.Tuple)(FromArray(value))) :\n (0, value_1.IsUint8Array)(value) ? (0, index_12.Uint8Array)() :\n (0, value_1.IsDate)(value) ? (0, index_3.Date)() :\n (0, value_1.IsObject)(value) ? ConditionalReadonly((0, index_7.Object)(FromProperties(value)), root) :\n (0, value_1.IsFunction)(value) ? ConditionalReadonly((0, index_4.Function)([], (0, index_13.Unknown)()), root) :\n (0, value_1.IsUndefined)(value) ? (0, index_11.Undefined)() :\n (0, value_1.IsNull)(value) ? (0, index_6.Null)() :\n (0, value_1.IsSymbol)(value) ? (0, index_8.Symbol)() :\n (0, value_1.IsBigInt)(value) ? (0, index_2.BigInt)() :\n (0, value_1.IsNumber)(value) ? (0, index_5.Literal)(value) :\n (0, value_1.IsBoolean)(value) ? (0, index_5.Literal)(value) :\n (0, value_1.IsString)(value) ? (0, index_5.Literal)(value) :\n (0, index_7.Object)({}));\n}\n/** `[JavaScript]` Creates a readonly const type from the given value. */\nfunction Const(T, options) {\n return (0, index_14.CreateType)(FromValue(T, true), options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./const\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConstructorParameters = ConstructorParameters;\nconst index_1 = require(\"../tuple/index\");\n/** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\nfunction ConstructorParameters(schema, options) {\n return (0, index_1.Tuple)(schema.parameters, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./constructor-parameters\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Deref = Deref;\nconst type_1 = require(\"../clone/type\");\nconst index_1 = require(\"../discard/index\");\nconst value_1 = require(\"../guard/value\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\nfunction FromRest(schema, references) {\n return schema.map((schema) => Deref(schema, references));\n}\n// prettier-ignore\nfunction FromProperties(properties, references) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(properties)) {\n Acc[K] = Deref(properties[K], references);\n }\n return Acc;\n}\n// prettier-ignore\nfunction FromConstructor(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromFunction(schema, references) {\n schema.parameters = FromRest(schema.parameters, references);\n schema.returns = Deref(schema.returns, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIntersect(schema, references) {\n schema.allOf = FromRest(schema.allOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromUnion(schema, references) {\n schema.anyOf = FromRest(schema.anyOf, references);\n return schema;\n}\n// prettier-ignore\nfunction FromTuple(schema, references) {\n if ((0, value_1.IsUndefined)(schema.items))\n return schema;\n schema.items = FromRest(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromArray(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromObject(schema, references) {\n schema.properties = FromProperties(schema.properties, references);\n return schema;\n}\n// prettier-ignore\nfunction FromPromise(schema, references) {\n schema.item = Deref(schema.item, references);\n return schema;\n}\n// prettier-ignore\nfunction FromAsyncIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromIterator(schema, references) {\n schema.items = Deref(schema.items, references);\n return schema;\n}\n// prettier-ignore\nfunction FromRef(schema, references) {\n const target = references.find(remote => remote.$id === schema.$ref);\n if (target === undefined)\n throw Error(`Unable to dereference schema with $id ${schema.$ref}`);\n const discard = (0, index_1.Discard)(target, ['$id']);\n return Deref(discard, references);\n}\n// prettier-ignore\nfunction DerefResolve(schema, references) {\n return ((0, kind_1.IsConstructor)(schema) ? FromConstructor(schema, references) :\n (0, kind_1.IsFunction)(schema) ? FromFunction(schema, references) :\n (0, kind_1.IsIntersect)(schema) ? FromIntersect(schema, references) :\n (0, kind_1.IsUnion)(schema) ? FromUnion(schema, references) :\n (0, kind_1.IsTuple)(schema) ? FromTuple(schema, references) :\n (0, kind_1.IsArray)(schema) ? FromArray(schema, references) :\n (0, kind_1.IsObject)(schema) ? FromObject(schema, references) :\n (0, kind_1.IsPromise)(schema) ? FromPromise(schema, references) :\n (0, kind_1.IsAsyncIterator)(schema) ? FromAsyncIterator(schema, references) :\n (0, kind_1.IsIterator)(schema) ? FromIterator(schema, references) :\n (0, kind_1.IsRef)(schema) ? FromRef(schema, references) :\n schema);\n}\n// ------------------------------------------------------------------\n// TDeref\n// ------------------------------------------------------------------\n/** `[Json]` Creates a dereferenced type */\nfunction Deref(schema, references) {\n return DerefResolve((0, type_1.CloneType)(schema), (0, type_1.CloneRest)(references));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./deref\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enum = Enum;\nconst index_1 = require(\"../literal/index\");\nconst index_2 = require(\"../symbols/index\");\nconst index_3 = require(\"../union/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nconst value_1 = require(\"../guard/value\");\n/** `[Json]` Creates a Enum type */\nfunction Enum(item, options) {\n if ((0, value_1.IsUndefined)(item))\n throw new Error('Enum undefined or empty');\n const values1 = globalThis.Object.getOwnPropertyNames(item)\n .filter((key) => isNaN(key))\n .map((key) => item[key]);\n const values2 = [...new Set(values1)];\n const anyOf = values2.map((value) => (0, index_1.Literal)(value));\n return (0, index_3.Union)(anyOf, { ...options, [index_2.Hint]: 'Enum' });\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./enum\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtendsResult = exports.ExtendsResolverError = void 0;\nexports.ExtendsCheck = ExtendsCheck;\nconst index_1 = require(\"../any/index\");\nconst index_2 = require(\"../function/index\");\nconst index_3 = require(\"../number/index\");\nconst index_4 = require(\"../string/index\");\nconst index_5 = require(\"../unknown/index\");\nconst index_6 = require(\"../template-literal/index\");\nconst index_7 = require(\"../patterns/index\");\nconst index_8 = require(\"../symbols/index\");\nconst index_9 = require(\"../error/index\");\nconst index_10 = require(\"../guard/index\");\nclass ExtendsResolverError extends index_9.TypeBoxError {\n}\nexports.ExtendsResolverError = ExtendsResolverError;\nvar ExtendsResult;\n(function (ExtendsResult) {\n ExtendsResult[ExtendsResult[\"Union\"] = 0] = \"Union\";\n ExtendsResult[ExtendsResult[\"True\"] = 1] = \"True\";\n ExtendsResult[ExtendsResult[\"False\"] = 2] = \"False\";\n})(ExtendsResult || (exports.ExtendsResult = ExtendsResult = {}));\n// ------------------------------------------------------------------\n// IntoBooleanResult\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IntoBooleanResult(result) {\n return result === ExtendsResult.False ? result : ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Throw(message) {\n throw new ExtendsResolverError(message);\n}\n// ------------------------------------------------------------------\n// StructuralRight\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsStructuralRight(right) {\n return (index_10.TypeGuard.IsNever(right) ||\n index_10.TypeGuard.IsIntersect(right) ||\n index_10.TypeGuard.IsUnion(right) ||\n index_10.TypeGuard.IsUnknown(right) ||\n index_10.TypeGuard.IsAny(right));\n}\n// prettier-ignore\nfunction StructuralRight(left, right) {\n return (index_10.TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n index_10.TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n Throw('StructuralRight'));\n}\n// ------------------------------------------------------------------\n// Any\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAnyRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromAny(left, right) {\n return (index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n (index_10.TypeGuard.IsUnion(right) && right.anyOf.some((schema) => index_10.TypeGuard.IsAny(schema) || index_10.TypeGuard.IsUnknown(schema))) ? ExtendsResult.True :\n index_10.TypeGuard.IsUnion(right) ? ExtendsResult.Union :\n index_10.TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n index_10.TypeGuard.IsAny(right) ? ExtendsResult.True :\n ExtendsResult.Union);\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromArrayRight(left, right) {\n return (index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union :\n index_10.TypeGuard.IsNever(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromArray(left, right) {\n return (index_10.TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n !index_10.TypeGuard.IsArray(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// AsyncIterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromAsyncIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !index_10.TypeGuard.IsAsyncIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBigInt(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsBigInt(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromBooleanRight(left, right) {\n return (index_10.TypeGuard.IsLiteralBoolean(left) ? ExtendsResult.True :\n index_10.TypeGuard.IsBoolean(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromBoolean(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsBoolean(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromConstructor(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !index_10.TypeGuard.IsConstructor(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromDate(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsDate(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromFunction(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !index_10.TypeGuard.IsFunction(right) ? ExtendsResult.False :\n left.parameters.length > right.parameters.length ? ExtendsResult.False :\n (!left.parameters.every((schema, index) => IntoBooleanResult(Visit(right.parameters[index], schema)) === ExtendsResult.True)) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.returns, right.returns)));\n}\n// ------------------------------------------------------------------\n// Integer\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntegerRight(left, right) {\n return (index_10.TypeGuard.IsLiteral(left) && index_10.ValueGuard.IsNumber(left.const) ? ExtendsResult.True :\n index_10.TypeGuard.IsNumber(left) || index_10.TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromInteger(left, right) {\n return (index_10.TypeGuard.IsInteger(right) || index_10.TypeGuard.IsNumber(right) ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Intersect\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIntersectRight(left, right) {\n return right.allOf.every((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromIntersect(left, right) {\n return left.allOf.some((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Iterator\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromIterator(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n !index_10.TypeGuard.IsIterator(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.items, right.items)));\n}\n// ------------------------------------------------------------------\n// Literal\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromLiteral(left, right) {\n return (index_10.TypeGuard.IsLiteral(right) && right.const === left.const ? ExtendsResult.True :\n IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsString(right) ? FromStringRight(left, right) :\n index_10.TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n index_10.TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n index_10.TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Never\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNeverRight(left, right) {\n return ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromNever(left, right) {\n return ExtendsResult.True;\n}\n// ------------------------------------------------------------------\n// Not\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction UnwrapTNot(schema) {\n let [current, depth] = [schema, 0];\n while (true) {\n if (!index_10.TypeGuard.IsNot(current))\n break;\n current = current.not;\n depth += 1;\n }\n return depth % 2 === 0 ? current : (0, index_5.Unknown)();\n}\n// prettier-ignore\nfunction FromNot(left, right) {\n // TypeScript has no concept of negated types, and attempts to correctly check the negated\n // type at runtime would put TypeBox at odds with TypeScripts ability to statically infer\n // the type. Instead we unwrap to either unknown or T and continue evaluating.\n // prettier-ignore\n return (index_10.TypeGuard.IsNot(left) ? Visit(UnwrapTNot(left), right) :\n index_10.TypeGuard.IsNot(right) ? Visit(left, UnwrapTNot(right)) :\n Throw('Invalid fallthrough for Not'));\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNull(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsNull(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromNumberRight(left, right) {\n return (index_10.TypeGuard.IsLiteralNumber(left) ? ExtendsResult.True :\n index_10.TypeGuard.IsNumber(left) || index_10.TypeGuard.IsInteger(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromNumber(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsInteger(right) || index_10.TypeGuard.IsNumber(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsObjectPropertyCount(schema, count) {\n return Object.getOwnPropertyNames(schema.properties).length === count;\n}\n// prettier-ignore\nfunction IsObjectStringLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectSymbolLike(schema) {\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'description' in schema.properties && index_10.TypeGuard.IsUnion(schema.properties.description) && schema.properties.description.anyOf.length === 2 && ((index_10.TypeGuard.IsString(schema.properties.description.anyOf[0]) &&\n index_10.TypeGuard.IsUndefined(schema.properties.description.anyOf[1])) || (index_10.TypeGuard.IsString(schema.properties.description.anyOf[1]) &&\n index_10.TypeGuard.IsUndefined(schema.properties.description.anyOf[0]))));\n}\n// prettier-ignore\nfunction IsObjectNumberLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBooleanLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectBigIntLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectDateLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectUint8ArrayLike(schema) {\n return IsObjectArrayLike(schema);\n}\n// prettier-ignore\nfunction IsObjectFunctionLike(schema) {\n const length = (0, index_3.Number)();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectConstructorLike(schema) {\n return IsObjectPropertyCount(schema, 0);\n}\n// prettier-ignore\nfunction IsObjectArrayLike(schema) {\n const length = (0, index_3.Number)();\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'length' in schema.properties && IntoBooleanResult(Visit(schema.properties['length'], length)) === ExtendsResult.True);\n}\n// prettier-ignore\nfunction IsObjectPromiseLike(schema) {\n const then = (0, index_2.Function)([(0, index_1.Any)()], (0, index_1.Any)());\n return IsObjectPropertyCount(schema, 0) || (IsObjectPropertyCount(schema, 1) && 'then' in schema.properties && IntoBooleanResult(Visit(schema.properties['then'], then)) === ExtendsResult.True);\n}\n// ------------------------------------------------------------------\n// Property\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction Property(left, right) {\n return (Visit(left, right) === ExtendsResult.False ? ExtendsResult.False :\n index_10.TypeGuard.IsOptional(left) && !index_10.TypeGuard.IsOptional(right) ? ExtendsResult.False :\n ExtendsResult.True);\n}\n// prettier-ignore\nfunction FromObjectRight(left, right) {\n return (index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union : (index_10.TypeGuard.IsNever(left) ||\n (index_10.TypeGuard.IsLiteralString(left) && IsObjectStringLike(right)) ||\n (index_10.TypeGuard.IsLiteralNumber(left) && IsObjectNumberLike(right)) ||\n (index_10.TypeGuard.IsLiteralBoolean(left) && IsObjectBooleanLike(right)) ||\n (index_10.TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (index_10.TypeGuard.IsBigInt(left) && IsObjectBigIntLike(right)) ||\n (index_10.TypeGuard.IsString(left) && IsObjectStringLike(right)) ||\n (index_10.TypeGuard.IsSymbol(left) && IsObjectSymbolLike(right)) ||\n (index_10.TypeGuard.IsNumber(left) && IsObjectNumberLike(right)) ||\n (index_10.TypeGuard.IsInteger(left) && IsObjectNumberLike(right)) ||\n (index_10.TypeGuard.IsBoolean(left) && IsObjectBooleanLike(right)) ||\n (index_10.TypeGuard.IsUint8Array(left) && IsObjectUint8ArrayLike(right)) ||\n (index_10.TypeGuard.IsDate(left) && IsObjectDateLike(right)) ||\n (index_10.TypeGuard.IsConstructor(left) && IsObjectConstructorLike(right)) ||\n (index_10.TypeGuard.IsFunction(left) && IsObjectFunctionLike(right))) ? ExtendsResult.True :\n (index_10.TypeGuard.IsRecord(left) && index_10.TypeGuard.IsString(RecordKey(left))) ? (() => {\n // When expressing a Record with literal key values, the Record is converted into a Object with\n // the Hint assigned as `Record`. This is used to invert the extends logic.\n return right[index_8.Hint] === 'Record' ? ExtendsResult.True : ExtendsResult.False;\n })() :\n (index_10.TypeGuard.IsRecord(left) && index_10.TypeGuard.IsNumber(RecordKey(left))) ? (() => {\n return IsObjectPropertyCount(right, 0) ? ExtendsResult.True : ExtendsResult.False;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromObject(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n !index_10.TypeGuard.IsObject(right) ? ExtendsResult.False :\n (() => {\n for (const key of Object.getOwnPropertyNames(right.properties)) {\n if (!(key in left.properties) && !index_10.TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.False;\n }\n if (index_10.TypeGuard.IsOptional(right.properties[key])) {\n return ExtendsResult.True;\n }\n if (Property(left.properties[key], right.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })());\n}\n// ------------------------------------------------------------------\n// Promise\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromPromise(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) && IsObjectPromiseLike(right) ? ExtendsResult.True :\n !index_10.TypeGuard.IsPromise(right) ? ExtendsResult.False :\n IntoBooleanResult(Visit(left.item, right.item)));\n}\n// ------------------------------------------------------------------\n// Record\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordKey(schema) {\n return (index_7.PatternNumberExact in schema.patternProperties ? (0, index_3.Number)() :\n index_7.PatternStringExact in schema.patternProperties ? (0, index_4.String)() :\n Throw('Unknown record key pattern'));\n}\n// prettier-ignore\nfunction RecordValue(schema) {\n return (index_7.PatternNumberExact in schema.patternProperties ? schema.patternProperties[index_7.PatternNumberExact] :\n index_7.PatternStringExact in schema.patternProperties ? schema.patternProperties[index_7.PatternStringExact] :\n Throw('Unable to get record value schema'));\n}\n// prettier-ignore\nfunction FromRecordRight(left, right) {\n const [Key, Value] = [RecordKey(right), RecordValue(right)];\n return ((index_10.TypeGuard.IsLiteralString(left) && index_10.TypeGuard.IsNumber(Key) && IntoBooleanResult(Visit(left, Value)) === ExtendsResult.True) ? ExtendsResult.True :\n index_10.TypeGuard.IsUint8Array(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n index_10.TypeGuard.IsString(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n index_10.TypeGuard.IsArray(left) && index_10.TypeGuard.IsNumber(Key) ? Visit(left, Value) :\n index_10.TypeGuard.IsObject(left) ? (() => {\n for (const key of Object.getOwnPropertyNames(left.properties)) {\n if (Property(Value, left.properties[key]) === ExtendsResult.False) {\n return ExtendsResult.False;\n }\n }\n return ExtendsResult.True;\n })() :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromRecord(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n !index_10.TypeGuard.IsRecord(right) ? ExtendsResult.False :\n Visit(RecordValue(left), RecordValue(right)));\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromRegExp(left, right) {\n // Note: RegExp types evaluate as strings, not RegExp objects.\n // Here we remap either into string and continue evaluating.\n const L = index_10.TypeGuard.IsRegExp(left) ? (0, index_4.String)() : left;\n const R = index_10.TypeGuard.IsRegExp(right) ? (0, index_4.String)() : right;\n return Visit(L, R);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromStringRight(left, right) {\n return (index_10.TypeGuard.IsLiteral(left) && index_10.ValueGuard.IsString(left.const) ? ExtendsResult.True :\n index_10.TypeGuard.IsString(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromString(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsString(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromSymbol(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsSymbol(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// TemplateLiteral\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromTemplateLiteral(left, right) {\n // TemplateLiteral types are resolved to either unions for finite expressions or string\n // for infinite expressions. Here we call to TemplateLiteralResolver to resolve for\n // either type and continue evaluating.\n return (index_10.TypeGuard.IsTemplateLiteral(left) ? Visit((0, index_6.TemplateLiteralToUnion)(left), right) :\n index_10.TypeGuard.IsTemplateLiteral(right) ? Visit(left, (0, index_6.TemplateLiteralToUnion)(right)) :\n Throw('Invalid fallthrough for TemplateLiteral'));\n}\n// ------------------------------------------------------------------\n// Tuple\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction IsArrayOfTuple(left, right) {\n return (index_10.TypeGuard.IsArray(right) &&\n left.items !== undefined &&\n left.items.every((schema) => Visit(schema, right.items) === ExtendsResult.True));\n}\n// prettier-ignore\nfunction FromTupleRight(left, right) {\n return (index_10.TypeGuard.IsNever(left) ? ExtendsResult.True :\n index_10.TypeGuard.IsUnknown(left) ? ExtendsResult.False :\n index_10.TypeGuard.IsAny(left) ? ExtendsResult.Union :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromTuple(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) && IsObjectArrayLike(right) ? ExtendsResult.True :\n index_10.TypeGuard.IsArray(right) && IsArrayOfTuple(left, right) ? ExtendsResult.True :\n !index_10.TypeGuard.IsTuple(right) ? ExtendsResult.False :\n (index_10.ValueGuard.IsUndefined(left.items) && !index_10.ValueGuard.IsUndefined(right.items)) || (!index_10.ValueGuard.IsUndefined(left.items) && index_10.ValueGuard.IsUndefined(right.items)) ? ExtendsResult.False :\n (index_10.ValueGuard.IsUndefined(left.items) && !index_10.ValueGuard.IsUndefined(right.items)) ? ExtendsResult.True :\n left.items.every((schema, index) => Visit(schema, right.items[index]) === ExtendsResult.True) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Uint8Array\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUint8Array(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsUint8Array(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUndefined(left, right) {\n return (IsStructuralRight(right) ? StructuralRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsRecord(right) ? FromRecordRight(left, right) :\n index_10.TypeGuard.IsVoid(right) ? FromVoidRight(left, right) :\n index_10.TypeGuard.IsUndefined(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Union\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnionRight(left, right) {\n return right.anyOf.some((schema) => Visit(left, schema) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// prettier-ignore\nfunction FromUnion(left, right) {\n return left.anyOf.every((schema) => Visit(schema, right) === ExtendsResult.True)\n ? ExtendsResult.True\n : ExtendsResult.False;\n}\n// ------------------------------------------------------------------\n// Unknown\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromUnknownRight(left, right) {\n return ExtendsResult.True;\n}\n// prettier-ignore\nfunction FromUnknown(left, right) {\n return (index_10.TypeGuard.IsNever(right) ? FromNeverRight(left, right) :\n index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n index_10.TypeGuard.IsString(right) ? FromStringRight(left, right) :\n index_10.TypeGuard.IsNumber(right) ? FromNumberRight(left, right) :\n index_10.TypeGuard.IsInteger(right) ? FromIntegerRight(left, right) :\n index_10.TypeGuard.IsBoolean(right) ? FromBooleanRight(left, right) :\n index_10.TypeGuard.IsArray(right) ? FromArrayRight(left, right) :\n index_10.TypeGuard.IsTuple(right) ? FromTupleRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsUnknown(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// ------------------------------------------------------------------\n// Void\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromVoidRight(left, right) {\n return (index_10.TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n index_10.TypeGuard.IsUndefined(left) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction FromVoid(left, right) {\n return (index_10.TypeGuard.IsIntersect(right) ? FromIntersectRight(left, right) :\n index_10.TypeGuard.IsUnion(right) ? FromUnionRight(left, right) :\n index_10.TypeGuard.IsUnknown(right) ? FromUnknownRight(left, right) :\n index_10.TypeGuard.IsAny(right) ? FromAnyRight(left, right) :\n index_10.TypeGuard.IsObject(right) ? FromObjectRight(left, right) :\n index_10.TypeGuard.IsVoid(right) ? ExtendsResult.True :\n ExtendsResult.False);\n}\n// prettier-ignore\nfunction Visit(left, right) {\n return (\n // resolvable\n (index_10.TypeGuard.IsTemplateLiteral(left) || index_10.TypeGuard.IsTemplateLiteral(right)) ? FromTemplateLiteral(left, right) :\n (index_10.TypeGuard.IsRegExp(left) || index_10.TypeGuard.IsRegExp(right)) ? FromRegExp(left, right) :\n (index_10.TypeGuard.IsNot(left) || index_10.TypeGuard.IsNot(right)) ? FromNot(left, right) :\n // standard\n index_10.TypeGuard.IsAny(left) ? FromAny(left, right) :\n index_10.TypeGuard.IsArray(left) ? FromArray(left, right) :\n index_10.TypeGuard.IsBigInt(left) ? FromBigInt(left, right) :\n index_10.TypeGuard.IsBoolean(left) ? FromBoolean(left, right) :\n index_10.TypeGuard.IsAsyncIterator(left) ? FromAsyncIterator(left, right) :\n index_10.TypeGuard.IsConstructor(left) ? FromConstructor(left, right) :\n index_10.TypeGuard.IsDate(left) ? FromDate(left, right) :\n index_10.TypeGuard.IsFunction(left) ? FromFunction(left, right) :\n index_10.TypeGuard.IsInteger(left) ? FromInteger(left, right) :\n index_10.TypeGuard.IsIntersect(left) ? FromIntersect(left, right) :\n index_10.TypeGuard.IsIterator(left) ? FromIterator(left, right) :\n index_10.TypeGuard.IsLiteral(left) ? FromLiteral(left, right) :\n index_10.TypeGuard.IsNever(left) ? FromNever(left, right) :\n index_10.TypeGuard.IsNull(left) ? FromNull(left, right) :\n index_10.TypeGuard.IsNumber(left) ? FromNumber(left, right) :\n index_10.TypeGuard.IsObject(left) ? FromObject(left, right) :\n index_10.TypeGuard.IsRecord(left) ? FromRecord(left, right) :\n index_10.TypeGuard.IsString(left) ? FromString(left, right) :\n index_10.TypeGuard.IsSymbol(left) ? FromSymbol(left, right) :\n index_10.TypeGuard.IsTuple(left) ? FromTuple(left, right) :\n index_10.TypeGuard.IsPromise(left) ? FromPromise(left, right) :\n index_10.TypeGuard.IsUint8Array(left) ? FromUint8Array(left, right) :\n index_10.TypeGuard.IsUndefined(left) ? FromUndefined(left, right) :\n index_10.TypeGuard.IsUnion(left) ? FromUnion(left, right) :\n index_10.TypeGuard.IsUnknown(left) ? FromUnknown(left, right) :\n index_10.TypeGuard.IsVoid(left) ? FromVoid(left, right) :\n Throw(`Unknown left type operand '${left[index_8.Kind]}'`));\n}\nfunction ExtendsCheck(left, right) {\n return Visit(left, right);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtendsFromMappedResult = ExtendsFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst extends_1 = require(\"./extends\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromProperties(P, Right, True, False, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, extends_1.Extends)(P[K2], Right, True, False, (0, value_1.Clone)(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(Left, Right, True, False, options) {\n return FromProperties(Left.properties, Right, True, False, options);\n}\n// prettier-ignore\nfunction ExtendsFromMappedResult(Left, Right, True, False, options) {\n const P = FromMappedResult(Left, Right, True, False, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Extends = Extends;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../union/index\");\nconst extends_check_1 = require(\"./extends-check\");\nconst extends_from_mapped_key_1 = require(\"./extends-from-mapped-key\");\nconst extends_from_mapped_result_1 = require(\"./extends-from-mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction ExtendsResolve(left, right, trueType, falseType) {\n const R = (0, extends_check_1.ExtendsCheck)(left, right);\n return (R === extends_check_1.ExtendsResult.Union ? (0, index_1.Union)([trueType, falseType]) :\n R === extends_check_1.ExtendsResult.True ? trueType :\n falseType);\n}\n/** `[Json]` Creates a Conditional type */\nfunction Extends(L, R, T, F, options) {\n // prettier-ignore\n return ((0, kind_1.IsMappedResult)(L) ? (0, extends_from_mapped_result_1.ExtendsFromMappedResult)(L, R, T, F, options) :\n (0, kind_1.IsMappedKey)(L) ? (0, type_1.CreateType)((0, extends_from_mapped_key_1.ExtendsFromMappedKey)(L, R, T, F, options)) :\n (0, type_1.CreateType)(ExtendsResolve(L, R, T, F), options));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtendsFromMappedKey = ExtendsFromMappedKey;\nconst index_1 = require(\"../mapped/index\");\nconst index_2 = require(\"../literal/index\");\nconst extends_1 = require(\"./extends\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromPropertyKey(K, U, L, R, options) {\n return {\n [K]: (0, extends_1.Extends)((0, index_2.Literal)(K), U, L, R, (0, value_1.Clone)(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(K, U, L, R, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(K, U, L, R, options) {\n return FromPropertyKeys(K.keys, U, L, R, options);\n}\n// prettier-ignore\nfunction ExtendsFromMappedKey(T, U, L, R, options) {\n const P = FromMappedKey(T, U, L, R, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtendsUndefinedCheck = ExtendsUndefinedCheck;\nconst index_1 = require(\"../symbols/index\");\n/** Fast undefined check used for properties of type undefined */\nfunction Intersect(schema) {\n return schema.allOf.every((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Union(schema) {\n return schema.anyOf.some((schema) => ExtendsUndefinedCheck(schema));\n}\nfunction Not(schema) {\n return !ExtendsUndefinedCheck(schema.not);\n}\n/** Fast undefined check used for properties of type undefined */\n// prettier-ignore\nfunction ExtendsUndefinedCheck(schema) {\n return (schema[index_1.Kind] === 'Intersect' ? Intersect(schema) :\n schema[index_1.Kind] === 'Union' ? Union(schema) :\n schema[index_1.Kind] === 'Not' ? Not(schema) :\n schema[index_1.Kind] === 'Undefined' ? true :\n false);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./extends-check\"), exports);\n__exportStar(require(\"./extends-from-mapped-key\"), exports);\n__exportStar(require(\"./extends-from-mapped-result\"), exports);\n__exportStar(require(\"./extends-undefined\"), exports);\n__exportStar(require(\"./extends\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExcludeFromTemplateLiteral = ExcludeFromTemplateLiteral;\nconst exclude_1 = require(\"./exclude\");\nconst index_1 = require(\"../template-literal/index\");\nfunction ExcludeFromTemplateLiteral(L, R) {\n return (0, exclude_1.Exclude)((0, index_1.TemplateLiteralToUnion)(L), R);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Exclude = Exclude;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../union/index\");\nconst index_2 = require(\"../never/index\");\nconst index_3 = require(\"../extends/index\");\nconst exclude_from_mapped_result_1 = require(\"./exclude-from-mapped-result\");\nconst exclude_from_template_literal_1 = require(\"./exclude-from-template-literal\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\nfunction ExcludeRest(L, R) {\n const excluded = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) === index_3.ExtendsResult.False);\n return excluded.length === 1 ? excluded[0] : (0, index_1.Union)(excluded);\n}\n/** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\nfunction Exclude(L, R, options = {}) {\n // overloads\n if ((0, kind_1.IsTemplateLiteral)(L))\n return (0, type_1.CreateType)((0, exclude_from_template_literal_1.ExcludeFromTemplateLiteral)(L, R), options);\n if ((0, kind_1.IsMappedResult)(L))\n return (0, type_1.CreateType)((0, exclude_from_mapped_result_1.ExcludeFromMappedResult)(L, R), options);\n // prettier-ignore\n return (0, type_1.CreateType)((0, kind_1.IsUnion)(L) ? ExcludeRest(L.anyOf, R) :\n (0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? (0, index_2.Never)() : L, options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExcludeFromMappedResult = ExcludeFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst exclude_1 = require(\"./exclude\");\n// prettier-ignore\nfunction FromProperties(P, U) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, exclude_1.Exclude)(P[K2], U);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nfunction ExcludeFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./exclude-from-mapped-result\"), exports);\n__exportStar(require(\"./exclude-from-template-literal\"), exports);\n__exportStar(require(\"./exclude\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtractFromTemplateLiteral = ExtractFromTemplateLiteral;\nconst extract_1 = require(\"./extract\");\nconst index_1 = require(\"../template-literal/index\");\nfunction ExtractFromTemplateLiteral(L, R) {\n return (0, extract_1.Extract)((0, index_1.TemplateLiteralToUnion)(L), R);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Extract = Extract;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../union/index\");\nconst index_2 = require(\"../never/index\");\nconst index_3 = require(\"../extends/index\");\nconst extract_from_mapped_result_1 = require(\"./extract-from-mapped-result\");\nconst extract_from_template_literal_1 = require(\"./extract-from-template-literal\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\nfunction ExtractRest(L, R) {\n const extracted = L.filter((inner) => (0, index_3.ExtendsCheck)(inner, R) !== index_3.ExtendsResult.False);\n return extracted.length === 1 ? extracted[0] : (0, index_1.Union)(extracted);\n}\n/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\nfunction Extract(L, R, options) {\n // overloads\n if ((0, kind_1.IsTemplateLiteral)(L))\n return (0, type_1.CreateType)((0, extract_from_template_literal_1.ExtractFromTemplateLiteral)(L, R), options);\n if ((0, kind_1.IsMappedResult)(L))\n return (0, type_1.CreateType)((0, extract_from_mapped_result_1.ExtractFromMappedResult)(L, R), options);\n // prettier-ignore\n return (0, type_1.CreateType)((0, kind_1.IsUnion)(L) ? ExtractRest(L.anyOf, R) :\n (0, index_3.ExtendsCheck)(L, R) !== index_3.ExtendsResult.False ? L : (0, index_2.Never)(), options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtractFromMappedResult = ExtractFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst extract_1 = require(\"./extract\");\n// prettier-ignore\nfunction FromProperties(P, T) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, extract_1.Extract)(P[K2], T);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, T) {\n return FromProperties(R.properties, T);\n}\n// prettier-ignore\nfunction ExtractFromMappedResult(R, T) {\n const P = FromMappedResult(R, T);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./extract-from-mapped-result\"), exports);\n__exportStar(require(\"./extract-from-template-literal\"), exports);\n__exportStar(require(\"./extract\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InstanceType = InstanceType;\nconst type_1 = require(\"../create/type\");\n/** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\nfunction InstanceType(schema, options) {\n return (0, type_1.CreateType)(schema.returns, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./instance-type\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Integer = Integer;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates an Integer type */\nfunction Integer(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Integer', type: 'integer' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./integer\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IntrinsicFromMappedKey = IntrinsicFromMappedKey;\nconst index_1 = require(\"../mapped/index\");\nconst intrinsic_1 = require(\"./intrinsic\");\nconst index_2 = require(\"../literal/index\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction MappedIntrinsicPropertyKey(K, M, options) {\n return {\n [K]: (0, intrinsic_1.Intrinsic)((0, index_2.Literal)(K), M, (0, value_1.Clone)(options))\n };\n}\n// prettier-ignore\nfunction MappedIntrinsicPropertyKeys(K, M, options) {\n const result = K.reduce((Acc, L) => {\n return { ...Acc, ...MappedIntrinsicPropertyKey(L, M, options) };\n }, {});\n return result;\n}\n// prettier-ignore\nfunction MappedIntrinsicProperties(T, M, options) {\n return MappedIntrinsicPropertyKeys(T['keys'], M, options);\n}\n// prettier-ignore\nfunction IntrinsicFromMappedKey(T, M, options) {\n const P = MappedIntrinsicProperties(T, M, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Intrinsic = Intrinsic;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../template-literal/index\");\nconst intrinsic_from_mapped_key_1 = require(\"./intrinsic-from-mapped-key\");\nconst index_2 = require(\"../literal/index\");\nconst index_3 = require(\"../union/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// ------------------------------------------------------------------\n// Apply\n// ------------------------------------------------------------------\nfunction ApplyUncapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toLowerCase(), rest].join('');\n}\nfunction ApplyCapitalize(value) {\n const [first, rest] = [value.slice(0, 1), value.slice(1)];\n return [first.toUpperCase(), rest].join('');\n}\nfunction ApplyUppercase(value) {\n return value.toUpperCase();\n}\nfunction ApplyLowercase(value) {\n return value.toLowerCase();\n}\nfunction FromTemplateLiteral(schema, mode, options) {\n // note: template literals require special runtime handling as they are encoded in string patterns.\n // This diverges from the mapped type which would otherwise map on the template literal kind.\n const expression = (0, index_1.TemplateLiteralParseExact)(schema.pattern);\n const finite = (0, index_1.IsTemplateLiteralExpressionFinite)(expression);\n if (!finite)\n return { ...schema, pattern: FromLiteralValue(schema.pattern, mode) };\n const strings = [...(0, index_1.TemplateLiteralExpressionGenerate)(expression)];\n const literals = strings.map((value) => (0, index_2.Literal)(value));\n const mapped = FromRest(literals, mode);\n const union = (0, index_3.Union)(mapped);\n return (0, index_1.TemplateLiteral)([union], options);\n}\n// prettier-ignore\nfunction FromLiteralValue(value, mode) {\n return (typeof value === 'string' ? (mode === 'Uncapitalize' ? ApplyUncapitalize(value) :\n mode === 'Capitalize' ? ApplyCapitalize(value) :\n mode === 'Uppercase' ? ApplyUppercase(value) :\n mode === 'Lowercase' ? ApplyLowercase(value) :\n value) : value.toString());\n}\n// prettier-ignore\nfunction FromRest(T, M) {\n return T.map(L => Intrinsic(L, M));\n}\n/** Applies an intrinsic string manipulation to the given type. */\nfunction Intrinsic(schema, mode, options = {}) {\n // prettier-ignore\n return (\n // Intrinsic-Mapped-Inference\n (0, kind_1.IsMappedKey)(schema) ? (0, intrinsic_from_mapped_key_1.IntrinsicFromMappedKey)(schema, mode, options) :\n // Standard-Inference\n (0, kind_1.IsTemplateLiteral)(schema) ? FromTemplateLiteral(schema, mode, options) :\n (0, kind_1.IsUnion)(schema) ? (0, index_3.Union)(FromRest(schema.anyOf, mode), options) :\n (0, kind_1.IsLiteral)(schema) ? (0, index_2.Literal)(FromLiteralValue(schema.const, mode), options) :\n // Default Type\n (0, type_1.CreateType)(schema, options));\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Capitalize = Capitalize;\nconst intrinsic_1 = require(\"./intrinsic\");\n/** `[Json]` Intrinsic function to Capitalize LiteralString types */\nfunction Capitalize(T, options = {}) {\n return (0, intrinsic_1.Intrinsic)(T, 'Capitalize', options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Lowercase = Lowercase;\nconst intrinsic_1 = require(\"./intrinsic\");\n/** `[Json]` Intrinsic function to Lowercase LiteralString types */\nfunction Lowercase(T, options = {}) {\n return (0, intrinsic_1.Intrinsic)(T, 'Lowercase', options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Uncapitalize = Uncapitalize;\nconst intrinsic_1 = require(\"./intrinsic\");\n/** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\nfunction Uncapitalize(T, options = {}) {\n return (0, intrinsic_1.Intrinsic)(T, 'Uncapitalize', options);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Uppercase = Uppercase;\nconst intrinsic_1 = require(\"./intrinsic\");\n/** `[Json]` Intrinsic function to Uppercase LiteralString types */\nfunction Uppercase(T, options = {}) {\n return (0, intrinsic_1.Intrinsic)(T, 'Uppercase', options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./capitalize\"), exports);\n__exportStar(require(\"./intrinsic-from-mapped-key\"), exports);\n__exportStar(require(\"./intrinsic\"), exports);\n__exportStar(require(\"./lowercase\"), exports);\n__exportStar(require(\"./uncapitalize\"), exports);\n__exportStar(require(\"./uppercase\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Not = Not;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Not type */\nfunction Not(not, options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Not', not }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./not\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OmitFromMappedResult = OmitFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst omit_1 = require(\"./omit\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, omit_1.Omit)(P[K2], K, (0, value_1.Clone)(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nfunction OmitFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Omit = Omit;\nconst type_1 = require(\"../create/type\");\nconst discard_1 = require(\"../discard/discard\");\nconst index_1 = require(\"../intersect/index\");\nconst index_2 = require(\"../union/index\");\nconst index_3 = require(\"../object/index\");\nconst index_4 = require(\"../indexed/index\");\nconst omit_from_mapped_key_1 = require(\"./omit-from-mapped-key\");\nconst omit_from_mapped_result_1 = require(\"./omit-from-mapped-result\");\nconst symbols_1 = require(\"../symbols/symbols\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromIntersect(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => OmitResolve(T, K));\n}\n// ------------------------------------------------------------------\n// FromProperty\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction FromProperty(T, K) {\n const { [K]: _, ...R } = T;\n return R;\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n return K.reduce((T, K2) => FromProperty(T, K2), T);\n}\n// prettier-ignore\nfunction FromObject(T, K) {\n const options = (0, discard_1.Discard)(T, [symbols_1.TransformKind, '$id', 'required', 'properties']);\n const properties = FromProperties(T['properties'], K);\n return (0, index_3.Object)(properties, options);\n}\n// ------------------------------------------------------------------\n// OmitResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction OmitResolve(T, K) {\n return ((0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromIntersect(T.allOf, K)) :\n (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromUnion(T.anyOf, K)) :\n (0, kind_1.IsObject)(T) ? FromObject(T, K) :\n (0, index_3.Object)({}));\n}\nfunction Omit(T, K, options) {\n // mapped\n if ((0, kind_1.IsMappedKey)(K))\n return (0, omit_from_mapped_key_1.OmitFromMappedKey)(T, K, options);\n if ((0, kind_1.IsMappedResult)(T))\n return (0, omit_from_mapped_result_1.OmitFromMappedResult)(T, K, options);\n // non-mapped\n const I = (0, kind_1.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;\n // special: mapping types require overridable options\n return (0, type_1.CreateType)({ ...OmitResolve(T, I), ...options });\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OmitFromMappedKey = OmitFromMappedKey;\nconst index_1 = require(\"../mapped/index\");\nconst omit_1 = require(\"./omit\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: (0, omit_1.Omit)(T, [K], (0, value_1.Clone)(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nfunction OmitFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./omit-from-mapped-key\"), exports);\n__exportStar(require(\"./omit-from-mapped-result\"), exports);\n__exportStar(require(\"./omit\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Parameters = Parameters;\nconst index_1 = require(\"../tuple/index\");\n/** `[JavaScript]` Extracts the Parameters from the given Function type */\nfunction Parameters(schema, options) {\n return (0, index_1.Tuple)(schema.parameters, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./parameters\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Partial = Partial;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../optional/index\");\nconst index_2 = require(\"../object/index\");\nconst index_3 = require(\"../intersect/index\");\nconst index_4 = require(\"../union/index\");\nconst index_5 = require(\"../discard/index\");\nconst index_6 = require(\"../symbols/index\");\nconst partial_from_mapped_result_1 = require(\"./partial-from-mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => PartialResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = (0, index_1.Optional)(T[K]);\n return Acc;\n}\n// prettier-ignore\nfunction FromObject(T) {\n const options = (0, index_5.Discard)(T, [index_6.TransformKind, '$id', 'required', 'properties']);\n const properties = FromProperties(T['properties']);\n return (0, index_2.Object)(properties, options);\n}\n// ------------------------------------------------------------------\n// PartialResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PartialResolve(T) {\n return ((0, kind_1.IsIntersect)(T) ? (0, index_3.Intersect)(FromRest(T.allOf)) :\n (0, kind_1.IsUnion)(T) ? (0, index_4.Union)(FromRest(T.anyOf)) :\n (0, kind_1.IsObject)(T) ? FromObject(T) :\n (0, index_2.Object)({}));\n}\n/** `[Json]` Constructs a type where all properties are optional */\nfunction Partial(T, options) {\n if ((0, kind_1.IsMappedResult)(T)) {\n return (0, partial_from_mapped_result_1.PartialFromMappedResult)(T, options);\n }\n else {\n // special: mapping types require overridable options\n return (0, type_1.CreateType)({ ...PartialResolve(T), ...options });\n }\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PartialFromMappedResult = PartialFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst partial_1 = require(\"./partial\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromProperties(K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(K))\n Acc[K2] = (0, partial_1.Partial)(K[K2], (0, value_1.Clone)(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nfunction PartialFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./partial-from-mapped-result\"), exports);\n__exportStar(require(\"./partial\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PickFromMappedResult = PickFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst pick_1 = require(\"./pick\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromProperties(P, K, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, pick_1.Pick)(P[K2], K, (0, value_1.Clone)(options));\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, K, options) {\n return FromProperties(R.properties, K, options);\n}\n// prettier-ignore\nfunction PickFromMappedResult(R, K, options) {\n const P = FromMappedResult(R, K, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pick = Pick;\nconst type_1 = require(\"../create/type\");\nconst discard_1 = require(\"../discard/discard\");\nconst index_1 = require(\"../intersect/index\");\nconst index_2 = require(\"../union/index\");\nconst index_3 = require(\"../object/index\");\nconst index_4 = require(\"../indexed/index\");\nconst pick_from_mapped_key_1 = require(\"./pick-from-mapped-key\");\nconst pick_from_mapped_result_1 = require(\"./pick-from-mapped-result\");\nconst symbols_1 = require(\"../symbols/symbols\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\nfunction FromIntersect(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromUnion(T, K) {\n return T.map((T) => PickResolve(T, K));\n}\n// prettier-ignore\nfunction FromProperties(T, K) {\n const Acc = {};\n for (const K2 of K)\n if (K2 in T)\n Acc[K2] = T[K2];\n return Acc;\n}\n// prettier-ignore\nfunction FromObject(T, K) {\n const options = (0, discard_1.Discard)(T, [symbols_1.TransformKind, '$id', 'required', 'properties']);\n const properties = FromProperties(T['properties'], K);\n return (0, index_3.Object)(properties, options);\n}\n// ------------------------------------------------------------------\n// PickResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction PickResolve(T, K) {\n return ((0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromIntersect(T.allOf, K)) :\n (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromUnion(T.anyOf, K)) :\n (0, kind_1.IsObject)(T) ? FromObject(T, K) :\n (0, index_3.Object)({}));\n}\nfunction Pick(T, K, options) {\n // mapped\n if ((0, kind_1.IsMappedKey)(K))\n return (0, pick_from_mapped_key_1.PickFromMappedKey)(T, K, options);\n if ((0, kind_1.IsMappedResult)(T))\n return (0, pick_from_mapped_result_1.PickFromMappedResult)(T, K, options);\n // non-mapped\n const I = (0, kind_1.IsSchema)(K) ? (0, index_4.IndexPropertyKeys)(K) : K;\n // special: mapping types require overridable options\n return (0, type_1.CreateType)({ ...PickResolve(T, I), ...options });\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PickFromMappedKey = PickFromMappedKey;\nconst index_1 = require(\"../mapped/index\");\nconst pick_1 = require(\"./pick\");\nconst value_1 = require(\"../clone/value\");\n// prettier-ignore\nfunction FromPropertyKey(T, K, options) {\n return {\n [K]: (0, pick_1.Pick)(T, [K], (0, value_1.Clone)(options))\n };\n}\n// prettier-ignore\nfunction FromPropertyKeys(T, K, options) {\n return K.reduce((Acc, LK) => {\n return { ...Acc, ...FromPropertyKey(T, LK, options) };\n }, {});\n}\n// prettier-ignore\nfunction FromMappedKey(T, K, options) {\n return FromPropertyKeys(T, K.keys, options);\n}\n// prettier-ignore\nfunction PickFromMappedKey(T, K, options) {\n const P = FromMappedKey(T, K, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./pick-from-mapped-key\"), exports);\n__exportStar(require(\"./pick-from-mapped-result\"), exports);\n__exportStar(require(\"./pick\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadonlyOptional = ReadonlyOptional;\nconst index_1 = require(\"../readonly/index\");\nconst index_2 = require(\"../optional/index\");\n/** `[Json]` Creates a Readonly and Optional property */\nfunction ReadonlyOptional(schema) {\n return (0, index_1.Readonly)((0, index_2.Optional)(schema));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./readonly-optional\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Record = Record;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../object/index\");\nconst index_2 = require(\"../never/index\");\nconst index_3 = require(\"../union/index\");\nconst index_4 = require(\"../template-literal/index\");\nconst index_5 = require(\"../patterns/index\");\nconst index_6 = require(\"../indexed/index\");\nconst index_7 = require(\"../symbols/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nconst value_1 = require(\"../guard/value\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// ------------------------------------------------------------------\n// RecordCreateFromPattern\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromPattern(pattern, T, options) {\n return (0, type_1.CreateType)({\n [index_7.Kind]: 'Record',\n type: 'object',\n patternProperties: { [pattern]: T }\n }, options);\n}\n// ------------------------------------------------------------------\n// RecordCreateFromKeys\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RecordCreateFromKeys(K, T, options) {\n const Acc = {};\n for (const K2 of K)\n Acc[K2] = T;\n return (0, index_1.Object)(Acc, { ...options, [index_7.Hint]: 'Record' });\n}\n// prettier-ignore\nfunction FromTemplateLiteralKey(K, T, options) {\n return ((0, index_4.IsTemplateLiteralFinite)(K)\n ? RecordCreateFromKeys((0, index_6.IndexPropertyKeys)(K), T, options)\n : RecordCreateFromPattern(K.pattern, T, options));\n}\n// prettier-ignore\nfunction FromUnionKey(K, T, options) {\n return RecordCreateFromKeys((0, index_6.IndexPropertyKeys)((0, index_3.Union)(K)), T, options);\n}\n// prettier-ignore\nfunction FromLiteralKey(K, T, options) {\n return RecordCreateFromKeys([K.toString()], T, options);\n}\n// prettier-ignore\nfunction FromRegExpKey(K, T, options) {\n return RecordCreateFromPattern(K.source, T, options);\n}\n// prettier-ignore\nfunction FromStringKey(K, T, options) {\n const pattern = (0, value_1.IsUndefined)(K.pattern) ? index_5.PatternStringExact : K.pattern;\n return RecordCreateFromPattern(pattern, T, options);\n}\n// prettier-ignore\nfunction FromAnyKey(K, T, options) {\n return RecordCreateFromPattern(index_5.PatternStringExact, T, options);\n}\n// prettier-ignore\nfunction FromNeverKey(K, T, options) {\n return RecordCreateFromPattern(index_5.PatternNeverExact, T, options);\n}\n// prettier-ignore\nfunction FromIntegerKey(_, T, options) {\n return RecordCreateFromPattern(index_5.PatternNumberExact, T, options);\n}\n// prettier-ignore\nfunction FromNumberKey(_, T, options) {\n return RecordCreateFromPattern(index_5.PatternNumberExact, T, options);\n}\n// ------------------------------------------------------------------\n// TRecordOrObject\n// ------------------------------------------------------------------\n/** `[Json]` Creates a Record type */\nfunction Record(K, T, options = {}) {\n // prettier-ignore\n return ((0, kind_1.IsUnion)(K) ? FromUnionKey(K.anyOf, T, options) :\n (0, kind_1.IsTemplateLiteral)(K) ? FromTemplateLiteralKey(K, T, options) :\n (0, kind_1.IsLiteral)(K) ? FromLiteralKey(K.const, T, options) :\n (0, kind_1.IsInteger)(K) ? FromIntegerKey(K, T, options) :\n (0, kind_1.IsNumber)(K) ? FromNumberKey(K, T, options) :\n (0, kind_1.IsRegExp)(K) ? FromRegExpKey(K, T, options) :\n (0, kind_1.IsString)(K) ? FromStringKey(K, T, options) :\n (0, kind_1.IsAny)(K) ? FromAnyKey(K, T, options) :\n (0, kind_1.IsNever)(K) ? FromNeverKey(K, T, options) :\n (0, index_2.Never)(options));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./record\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Recursive = Recursive;\nconst type_1 = require(\"../clone/type\");\nconst type_2 = require(\"../create/type\");\nconst value_1 = require(\"../guard/value\");\nconst index_1 = require(\"../symbols/index\");\n// Auto Tracked For Recursive Types without ID's\nlet Ordinal = 0;\n/** `[Json]` Creates a Recursive type */\nfunction Recursive(callback, options = {}) {\n if ((0, value_1.IsUndefined)(options.$id))\n options.$id = `T${Ordinal++}`;\n const thisType = (0, type_1.CloneType)(callback({ [index_1.Kind]: 'This', $ref: `${options.$id}` }));\n thisType.$id = options.$id;\n // prettier-ignore\n return (0, type_2.CreateType)({ [index_1.Hint]: 'Recursive', ...thisType }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./recursive\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ref = Ref;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nconst value_1 = require(\"../guard/value\");\n/** `[Json]` Creates a Ref type. */\nfunction Ref(unresolved, options) {\n if ((0, value_1.IsString)(unresolved))\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Ref', $ref: unresolved }, options);\n if ((0, value_1.IsUndefined)(unresolved.$id))\n throw new Error('Reference target type must specify an $id');\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Ref', $ref: unresolved.$id }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./ref\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegExp = RegExp;\nconst type_1 = require(\"../create/type\");\nconst value_1 = require(\"../guard/value\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a RegExp type */\nfunction RegExp(unresolved, options) {\n const expr = (0, value_1.IsString)(unresolved) ? new globalThis.RegExp(unresolved) : unresolved;\n return (0, type_1.CreateType)({ [index_1.Kind]: 'RegExp', type: 'RegExp', source: expr.source, flags: expr.flags }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./regexp\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Required = Required;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../intersect/index\");\nconst index_2 = require(\"../union/index\");\nconst index_3 = require(\"../object/index\");\nconst index_4 = require(\"../symbols/index\");\nconst index_5 = require(\"../discard/index\");\nconst required_from_mapped_result_1 = require(\"./required-from-mapped-result\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction FromRest(T) {\n return T.map(L => RequiredResolve(L));\n}\n// prettier-ignore\nfunction FromProperties(T) {\n const Acc = {};\n for (const K of globalThis.Object.getOwnPropertyNames(T))\n Acc[K] = (0, index_5.Discard)(T[K], [index_4.OptionalKind]);\n return Acc;\n}\n// prettier-ignore\nfunction FromObject(T) {\n const options = (0, index_5.Discard)(T, [index_4.TransformKind, '$id', 'required', 'properties']);\n const properties = FromProperties(T['properties']);\n return (0, index_3.Object)(properties, options);\n}\n// ------------------------------------------------------------------\n// RequiredResolve\n// ------------------------------------------------------------------\n// prettier-ignore\nfunction RequiredResolve(T) {\n return ((0, kind_1.IsIntersect)(T) ? (0, index_1.Intersect)(FromRest(T.allOf)) :\n (0, kind_1.IsUnion)(T) ? (0, index_2.Union)(FromRest(T.anyOf)) :\n (0, kind_1.IsObject)(T) ? FromObject(T) :\n (0, index_3.Object)({}));\n}\n/** `[Json]` Constructs a type where all properties are required */\nfunction Required(T, options) {\n if ((0, kind_1.IsMappedResult)(T)) {\n return (0, required_from_mapped_result_1.RequiredFromMappedResult)(T, options);\n }\n else {\n // special: mapping types require overridable options\n return (0, type_1.CreateType)({ ...RequiredResolve(T), ...options });\n }\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequiredFromMappedResult = RequiredFromMappedResult;\nconst index_1 = require(\"../mapped/index\");\nconst required_1 = require(\"./required\");\n// prettier-ignore\nfunction FromProperties(P, options) {\n const Acc = {};\n for (const K2 of globalThis.Object.getOwnPropertyNames(P))\n Acc[K2] = (0, required_1.Required)(P[K2], options);\n return Acc;\n}\n// prettier-ignore\nfunction FromMappedResult(R, options) {\n return FromProperties(R.properties, options);\n}\n// prettier-ignore\nfunction RequiredFromMappedResult(R, options) {\n const P = FromMappedResult(R, options);\n return (0, index_1.MappedResult)(P);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./required-from-mapped-result\"), exports);\n__exportStar(require(\"./required\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rest = Rest;\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// prettier-ignore\nfunction RestResolve(T) {\n return ((0, kind_1.IsIntersect)(T) ? T.allOf :\n (0, kind_1.IsUnion)(T) ? T.anyOf :\n (0, kind_1.IsTuple)(T) ? T.items ?? [] :\n []);\n}\n/** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\nfunction Rest(T) {\n return RestResolve(T);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./rest\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReturnType = ReturnType;\nconst type_1 = require(\"../create/type\");\n/** `[JavaScript]` Extracts the ReturnType from the given Function type */\nfunction ReturnType(schema, options) {\n return (0, type_1.CreateType)(schema.returns, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./return-type\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst index_1 = require(\"../symbols/index\");\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./anyschema\"), exports);\n__exportStar(require(\"./schema\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./static\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Strict = Strict;\n/**\n * @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended\n * to use the JSON parse/stringify to remove compositing symbols if needed. This\n * is how Strict works internally.\n *\n * ```typescript\n * JSON.parse(JSON.stringify(Type.String()))\n * ```\n */\nfunction Strict(schema) {\n return JSON.parse(JSON.stringify(schema));\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./strict\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransformEncodeBuilder = exports.TransformDecodeBuilder = void 0;\nexports.Transform = Transform;\nconst index_1 = require(\"../symbols/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst kind_1 = require(\"../guard/kind\");\n// ------------------------------------------------------------------\n// TransformBuilders\n// ------------------------------------------------------------------\nclass TransformDecodeBuilder {\n constructor(schema) {\n this.schema = schema;\n }\n Decode(decode) {\n return new TransformEncodeBuilder(this.schema, decode);\n }\n}\nexports.TransformDecodeBuilder = TransformDecodeBuilder;\n// prettier-ignore\nclass TransformEncodeBuilder {\n constructor(schema, decode) {\n this.schema = schema;\n this.decode = decode;\n }\n EncodeTransform(encode, schema) {\n const Encode = (value) => schema[index_1.TransformKind].Encode(encode(value));\n const Decode = (value) => this.decode(schema[index_1.TransformKind].Decode(value));\n const Codec = { Encode: Encode, Decode: Decode };\n return { ...schema, [index_1.TransformKind]: Codec };\n }\n EncodeSchema(encode, schema) {\n const Codec = { Decode: this.decode, Encode: encode };\n return { ...schema, [index_1.TransformKind]: Codec };\n }\n Encode(encode) {\n return ((0, kind_1.IsTransform)(this.schema) ? this.EncodeTransform(encode, this.schema) : this.EncodeSchema(encode, this.schema));\n }\n}\nexports.TransformEncodeBuilder = TransformEncodeBuilder;\n/** `[Json]` Creates a Transform type */\nfunction Transform(schema) {\n return new TransformDecodeBuilder(schema);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./transform\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Unsafe = Unsafe;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\nfunction Unsafe(options = {}) {\n return (0, type_1.CreateType)({ [index_1.Kind]: options[index_1.Kind] ?? 'Unsafe' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./unsafe\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Void = Void;\nconst type_1 = require(\"../create/type\");\nconst index_1 = require(\"../symbols/index\");\n/** `[JavaScript]` Creates a Void type */\nfunction Void(options) {\n return (0, type_1.CreateType)({ [index_1.Kind]: 'Void', type: 'void' }, options);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./void\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JsonTypeBuilder = void 0;\nconst index_1 = require(\"../any/index\");\nconst index_2 = require(\"../array/index\");\nconst index_3 = require(\"../boolean/index\");\nconst index_4 = require(\"../composite/index\");\nconst index_5 = require(\"../const/index\");\nconst index_6 = require(\"../deref/index\");\nconst index_7 = require(\"../enum/index\");\nconst index_8 = require(\"../exclude/index\");\nconst index_9 = require(\"../extends/index\");\nconst index_10 = require(\"../extract/index\");\nconst index_11 = require(\"../indexed/index\");\nconst index_12 = require(\"../integer/index\");\nconst index_13 = require(\"../intersect/index\");\nconst index_14 = require(\"../intrinsic/index\");\nconst index_15 = require(\"../keyof/index\");\nconst index_16 = require(\"../literal/index\");\nconst index_17 = require(\"../mapped/index\");\nconst index_18 = require(\"../never/index\");\nconst index_19 = require(\"../not/index\");\nconst index_20 = require(\"../null/index\");\nconst index_21 = require(\"../number/index\");\nconst index_22 = require(\"../object/index\");\nconst index_23 = require(\"../omit/index\");\nconst index_24 = require(\"../optional/index\");\nconst index_25 = require(\"../partial/index\");\nconst index_26 = require(\"../pick/index\");\nconst index_27 = require(\"../readonly/index\");\nconst index_28 = require(\"../readonly-optional/index\");\nconst index_29 = require(\"../record/index\");\nconst index_30 = require(\"../recursive/index\");\nconst index_31 = require(\"../ref/index\");\nconst index_32 = require(\"../required/index\");\nconst index_33 = require(\"../rest/index\");\nconst index_34 = require(\"../strict/index\");\nconst index_35 = require(\"../string/index\");\nconst index_36 = require(\"../template-literal/index\");\nconst index_37 = require(\"../transform/index\");\nconst index_38 = require(\"../tuple/index\");\nconst index_39 = require(\"../union/index\");\nconst index_40 = require(\"../unknown/index\");\nconst index_41 = require(\"../unsafe/index\");\n/** Json Type Builder with Static Resolution for TypeScript */\nclass JsonTypeBuilder {\n // ------------------------------------------------------------------------\n // Strict\n // ------------------------------------------------------------------------\n /**\n * @deprecated `[Json]` Omits compositing symbols from this schema. It is recommended\n * to use the JSON parse/stringify to remove compositing symbols if needed. This\n * is how Strict works internally.\n *\n * ```typescript\n * JSON.parse(JSON.stringify(Type.String()))\n * ```\n */\n Strict(schema) {\n return (0, index_34.Strict)(schema);\n }\n // ------------------------------------------------------------------------\n // Modifiers\n // ------------------------------------------------------------------------\n /** `[Json]` Creates a Readonly and Optional property */\n ReadonlyOptional(schema) {\n return (0, index_28.ReadonlyOptional)(schema);\n }\n /** `[Json]` Creates a Readonly property */\n Readonly(schema, enable) {\n return (0, index_27.Readonly)(schema, enable ?? true);\n }\n /** `[Json]` Creates a Optional property */\n Optional(schema, enable) {\n return (0, index_24.Optional)(schema, enable ?? true);\n }\n // ------------------------------------------------------------------------\n // Types\n // ------------------------------------------------------------------------\n /** `[Json]` Creates an Any type */\n Any(options) {\n return (0, index_1.Any)(options);\n }\n /** `[Json]` Creates an Array type */\n Array(schema, options) {\n return (0, index_2.Array)(schema, options);\n }\n /** `[Json]` Creates a Boolean type */\n Boolean(options) {\n return (0, index_3.Boolean)(options);\n }\n /** `[Json]` Intrinsic function to Capitalize LiteralString types */\n Capitalize(schema, options) {\n return (0, index_14.Capitalize)(schema, options);\n }\n /** `[Json]` Creates a Composite object type */\n Composite(schemas, options) {\n return (0, index_4.Composite)(schemas, options); // (error) TS 5.4.0-dev - review TComposite implementation\n }\n /** `[JavaScript]` Creates a readonly const type from the given value. */\n Const(value, options) {\n return (0, index_5.Const)(value, options);\n }\n /** `[Json]` Creates a dereferenced type */\n Deref(schema, references) {\n return (0, index_6.Deref)(schema, references);\n }\n /** `[Json]` Creates a Enum type */\n Enum(item, options) {\n return (0, index_7.Enum)(item, options);\n }\n /** `[Json]` Constructs a type by excluding from unionType all union members that are assignable to excludedMembers */\n Exclude(unionType, excludedMembers, options) {\n return (0, index_8.Exclude)(unionType, excludedMembers, options);\n }\n /** `[Json]` Creates a Conditional type */\n Extends(L, R, T, F, options) {\n return (0, index_9.Extends)(L, R, T, F, options);\n }\n /** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */\n Extract(type, union, options) {\n return (0, index_10.Extract)(type, union, options);\n }\n /** `[Json]` Returns an Indexed property type for the given keys */\n Index(schema, unresolved, options) {\n return (0, index_11.Index)(schema, unresolved, options);\n }\n /** `[Json]` Creates an Integer type */\n Integer(options) {\n return (0, index_12.Integer)(options);\n }\n /** `[Json]` Creates an Intersect type */\n Intersect(T, options) {\n return (0, index_13.Intersect)(T, options);\n }\n /** `[Json]` Creates a KeyOf type */\n KeyOf(schema, options) {\n return (0, index_15.KeyOf)(schema, options);\n }\n /** `[Json]` Creates a Literal type */\n Literal(value, options) {\n return (0, index_16.Literal)(value, options);\n }\n /** `[Json]` Intrinsic function to Lowercase LiteralString types */\n Lowercase(schema, options) {\n return (0, index_14.Lowercase)(schema, options);\n }\n /** `[Json]` Creates a Mapped object type */\n Mapped(key, map, options) {\n return (0, index_17.Mapped)(key, map, options);\n }\n /** `[Json]` Creates a Never type */\n Never(options) {\n return (0, index_18.Never)(options);\n }\n /** `[Json]` Creates a Not type */\n Not(schema, options) {\n return (0, index_19.Not)(schema, options);\n }\n /** `[Json]` Creates a Null type */\n Null(options) {\n return (0, index_20.Null)(options);\n }\n /** `[Json]` Creates a Number type */\n Number(options) {\n return (0, index_21.Number)(options);\n }\n /** `[Json]` Creates an Object type */\n Object(properties, options) {\n return (0, index_22.Object)(properties, options);\n }\n /** `[Json]` Constructs a type whose keys are omitted from the given type */\n Omit(schema, unresolved, options) {\n return (0, index_23.Omit)(schema, unresolved, options);\n }\n /** `[Json]` Constructs a type where all properties are optional */\n Partial(schema, options) {\n return (0, index_25.Partial)(schema, options);\n }\n /** `[Json]` Constructs a type whose keys are picked from the given type */\n Pick(schema, unresolved, options) {\n return (0, index_26.Pick)(schema, unresolved, options);\n }\n /** `[Json]` Creates a Record type */\n Record(key, schema, options) {\n return (0, index_29.Record)(key, schema, options);\n }\n /** `[Json]` Creates a Recursive type */\n Recursive(callback, options) {\n return (0, index_30.Recursive)(callback, options);\n }\n /** `[Json]` Creates a Ref type. */\n Ref(unresolved, options) {\n return (0, index_31.Ref)(unresolved, options);\n }\n /** `[Json]` Constructs a type where all properties are required */\n Required(schema, options) {\n return (0, index_32.Required)(schema, options);\n }\n /** `[Json]` Extracts interior Rest elements from Tuple, Intersect and Union types */\n Rest(schema) {\n return (0, index_33.Rest)(schema);\n }\n /** `[Json]` Creates a String type */\n String(options) {\n return (0, index_35.String)(options);\n }\n /** `[Json]` Creates a TemplateLiteral type */\n TemplateLiteral(unresolved, options) {\n return (0, index_36.TemplateLiteral)(unresolved, options);\n }\n /** `[Json]` Creates a Transform type */\n Transform(schema) {\n return (0, index_37.Transform)(schema);\n }\n /** `[Json]` Creates a Tuple type */\n Tuple(items, options) {\n return (0, index_38.Tuple)(items, options);\n }\n /** `[Json]` Intrinsic function to Uncapitalize LiteralString types */\n Uncapitalize(schema, options) {\n return (0, index_14.Uncapitalize)(schema, options);\n }\n /** `[Json]` Creates a Union type */\n Union(schemas, options) {\n return (0, index_39.Union)(schemas, options);\n }\n /** `[Json]` Creates an Unknown type */\n Unknown(options) {\n return (0, index_40.Unknown)(options);\n }\n /** `[Json]` Creates a Unsafe type that will infers as the generic argument T */\n Unsafe(options) {\n return (0, index_41.Unsafe)(options);\n }\n /** `[Json]` Intrinsic function to Uppercase LiteralString types */\n Uppercase(schema, options) {\n return (0, index_14.Uppercase)(schema, options);\n }\n}\nexports.JsonTypeBuilder = JsonTypeBuilder;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.String = exports.ReturnType = exports.Rest = exports.Required = exports.RegExp = exports.Ref = exports.Recursive = exports.Record = exports.ReadonlyOptional = exports.Readonly = exports.Promise = exports.Pick = exports.Partial = exports.Parameters = exports.Optional = exports.Omit = exports.Object = exports.Number = exports.Null = exports.Not = exports.Never = exports.Mapped = exports.Literal = exports.KeyOf = exports.Iterator = exports.Uppercase = exports.Lowercase = exports.Uncapitalize = exports.Capitalize = exports.Intersect = exports.Integer = exports.InstanceType = exports.Index = exports.Function = exports.Extract = exports.Extends = exports.Exclude = exports.Enum = exports.Deref = exports.Date = exports.ConstructorParameters = exports.Constructor = exports.Const = exports.Composite = exports.Boolean = exports.BigInt = exports.Awaited = exports.AsyncIterator = exports.Array = exports.Any = void 0;\nexports.Void = exports.Unsafe = exports.Unknown = exports.Union = exports.Undefined = exports.Uint8Array = exports.Tuple = exports.Transform = exports.TemplateLiteral = exports.Symbol = exports.Strict = void 0;\n// ------------------------------------------------------------------\n// Type: Module\n// ------------------------------------------------------------------\nvar index_1 = require(\"../any/index\");\nObject.defineProperty(exports, \"Any\", { enumerable: true, get: function () { return index_1.Any; } });\nvar index_2 = require(\"../array/index\");\nObject.defineProperty(exports, \"Array\", { enumerable: true, get: function () { return index_2.Array; } });\nvar index_3 = require(\"../async-iterator/index\");\nObject.defineProperty(exports, \"AsyncIterator\", { enumerable: true, get: function () { return index_3.AsyncIterator; } });\nvar index_4 = require(\"../awaited/index\");\nObject.defineProperty(exports, \"Awaited\", { enumerable: true, get: function () { return index_4.Awaited; } });\nvar index_5 = require(\"../bigint/index\");\nObject.defineProperty(exports, \"BigInt\", { enumerable: true, get: function () { return index_5.BigInt; } });\nvar index_6 = require(\"../boolean/index\");\nObject.defineProperty(exports, \"Boolean\", { enumerable: true, get: function () { return index_6.Boolean; } });\nvar index_7 = require(\"../composite/index\");\nObject.defineProperty(exports, \"Composite\", { enumerable: true, get: function () { return index_7.Composite; } });\nvar index_8 = require(\"../const/index\");\nObject.defineProperty(exports, \"Const\", { enumerable: true, get: function () { return index_8.Const; } });\nvar index_9 = require(\"../constructor/index\");\nObject.defineProperty(exports, \"Constructor\", { enumerable: true, get: function () { return index_9.Constructor; } });\nvar index_10 = require(\"../constructor-parameters/index\");\nObject.defineProperty(exports, \"ConstructorParameters\", { enumerable: true, get: function () { return index_10.ConstructorParameters; } });\nvar index_11 = require(\"../date/index\");\nObject.defineProperty(exports, \"Date\", { enumerable: true, get: function () { return index_11.Date; } });\nvar index_12 = require(\"../deref/index\");\nObject.defineProperty(exports, \"Deref\", { enumerable: true, get: function () { return index_12.Deref; } });\nvar index_13 = require(\"../enum/index\");\nObject.defineProperty(exports, \"Enum\", { enumerable: true, get: function () { return index_13.Enum; } });\nvar index_14 = require(\"../exclude/index\");\nObject.defineProperty(exports, \"Exclude\", { enumerable: true, get: function () { return index_14.Exclude; } });\nvar index_15 = require(\"../extends/index\");\nObject.defineProperty(exports, \"Extends\", { enumerable: true, get: function () { return index_15.Extends; } });\nvar index_16 = require(\"../extract/index\");\nObject.defineProperty(exports, \"Extract\", { enumerable: true, get: function () { return index_16.Extract; } });\nvar index_17 = require(\"../function/index\");\nObject.defineProperty(exports, \"Function\", { enumerable: true, get: function () { return index_17.Function; } });\nvar index_18 = require(\"../indexed/index\");\nObject.defineProperty(exports, \"Index\", { enumerable: true, get: function () { return index_18.Index; } });\nvar index_19 = require(\"../instance-type/index\");\nObject.defineProperty(exports, \"InstanceType\", { enumerable: true, get: function () { return index_19.InstanceType; } });\nvar index_20 = require(\"../integer/index\");\nObject.defineProperty(exports, \"Integer\", { enumerable: true, get: function () { return index_20.Integer; } });\nvar index_21 = require(\"../intersect/index\");\nObject.defineProperty(exports, \"Intersect\", { enumerable: true, get: function () { return index_21.Intersect; } });\nvar index_22 = require(\"../intrinsic/index\");\nObject.defineProperty(exports, \"Capitalize\", { enumerable: true, get: function () { return index_22.Capitalize; } });\nObject.defineProperty(exports, \"Uncapitalize\", { enumerable: true, get: function () { return index_22.Uncapitalize; } });\nObject.defineProperty(exports, \"Lowercase\", { enumerable: true, get: function () { return index_22.Lowercase; } });\nObject.defineProperty(exports, \"Uppercase\", { enumerable: true, get: function () { return index_22.Uppercase; } });\nvar index_23 = require(\"../iterator/index\");\nObject.defineProperty(exports, \"Iterator\", { enumerable: true, get: function () { return index_23.Iterator; } });\nvar index_24 = require(\"../keyof/index\");\nObject.defineProperty(exports, \"KeyOf\", { enumerable: true, get: function () { return index_24.KeyOf; } });\nvar index_25 = require(\"../literal/index\");\nObject.defineProperty(exports, \"Literal\", { enumerable: true, get: function () { return index_25.Literal; } });\nvar index_26 = require(\"../mapped/index\");\nObject.defineProperty(exports, \"Mapped\", { enumerable: true, get: function () { return index_26.Mapped; } });\nvar index_27 = require(\"../never/index\");\nObject.defineProperty(exports, \"Never\", { enumerable: true, get: function () { return index_27.Never; } });\nvar index_28 = require(\"../not/index\");\nObject.defineProperty(exports, \"Not\", { enumerable: true, get: function () { return index_28.Not; } });\nvar index_29 = require(\"../null/index\");\nObject.defineProperty(exports, \"Null\", { enumerable: true, get: function () { return index_29.Null; } });\nvar index_30 = require(\"../number/index\");\nObject.defineProperty(exports, \"Number\", { enumerable: true, get: function () { return index_30.Number; } });\nvar index_31 = require(\"../object/index\");\nObject.defineProperty(exports, \"Object\", { enumerable: true, get: function () { return index_31.Object; } });\nvar index_32 = require(\"../omit/index\");\nObject.defineProperty(exports, \"Omit\", { enumerable: true, get: function () { return index_32.Omit; } });\nvar index_33 = require(\"../optional/index\");\nObject.defineProperty(exports, \"Optional\", { enumerable: true, get: function () { return index_33.Optional; } });\nvar index_34 = require(\"../parameters/index\");\nObject.defineProperty(exports, \"Parameters\", { enumerable: true, get: function () { return index_34.Parameters; } });\nvar index_35 = require(\"../partial/index\");\nObject.defineProperty(exports, \"Partial\", { enumerable: true, get: function () { return index_35.Partial; } });\nvar index_36 = require(\"../pick/index\");\nObject.defineProperty(exports, \"Pick\", { enumerable: true, get: function () { return index_36.Pick; } });\nvar index_37 = require(\"../promise/index\");\nObject.defineProperty(exports, \"Promise\", { enumerable: true, get: function () { return index_37.Promise; } });\nvar index_38 = require(\"../readonly/index\");\nObject.defineProperty(exports, \"Readonly\", { enumerable: true, get: function () { return index_38.Readonly; } });\nvar index_39 = require(\"../readonly-optional/index\");\nObject.defineProperty(exports, \"ReadonlyOptional\", { enumerable: true, get: function () { return index_39.ReadonlyOptional; } });\nvar index_40 = require(\"../record/index\");\nObject.defineProperty(exports, \"Record\", { enumerable: true, get: function () { return index_40.Record; } });\nvar index_41 = require(\"../recursive/index\");\nObject.defineProperty(exports, \"Recursive\", { enumerable: true, get: function () { return index_41.Recursive; } });\nvar index_42 = require(\"../ref/index\");\nObject.defineProperty(exports, \"Ref\", { enumerable: true, get: function () { return index_42.Ref; } });\nvar index_43 = require(\"../regexp/index\");\nObject.defineProperty(exports, \"RegExp\", { enumerable: true, get: function () { return index_43.RegExp; } });\nvar index_44 = require(\"../required/index\");\nObject.defineProperty(exports, \"Required\", { enumerable: true, get: function () { return index_44.Required; } });\nvar index_45 = require(\"../rest/index\");\nObject.defineProperty(exports, \"Rest\", { enumerable: true, get: function () { return index_45.Rest; } });\nvar index_46 = require(\"../return-type/index\");\nObject.defineProperty(exports, \"ReturnType\", { enumerable: true, get: function () { return index_46.ReturnType; } });\nvar index_47 = require(\"../string/index\");\nObject.defineProperty(exports, \"String\", { enumerable: true, get: function () { return index_47.String; } });\nvar index_48 = require(\"../strict/index\");\nObject.defineProperty(exports, \"Strict\", { enumerable: true, get: function () { return index_48.Strict; } });\nvar index_49 = require(\"../symbol/index\");\nObject.defineProperty(exports, \"Symbol\", { enumerable: true, get: function () { return index_49.Symbol; } });\nvar index_50 = require(\"../template-literal/index\");\nObject.defineProperty(exports, \"TemplateLiteral\", { enumerable: true, get: function () { return index_50.TemplateLiteral; } });\nvar index_51 = require(\"../transform/index\");\nObject.defineProperty(exports, \"Transform\", { enumerable: true, get: function () { return index_51.Transform; } });\nvar index_52 = require(\"../tuple/index\");\nObject.defineProperty(exports, \"Tuple\", { enumerable: true, get: function () { return index_52.Tuple; } });\nvar index_53 = require(\"../uint8array/index\");\nObject.defineProperty(exports, \"Uint8Array\", { enumerable: true, get: function () { return index_53.Uint8Array; } });\nvar index_54 = require(\"../undefined/index\");\nObject.defineProperty(exports, \"Undefined\", { enumerable: true, get: function () { return index_54.Undefined; } });\nvar index_55 = require(\"../union/index\");\nObject.defineProperty(exports, \"Union\", { enumerable: true, get: function () { return index_55.Union; } });\nvar index_56 = require(\"../unknown/index\");\nObject.defineProperty(exports, \"Unknown\", { enumerable: true, get: function () { return index_56.Unknown; } });\nvar index_57 = require(\"../unsafe/index\");\nObject.defineProperty(exports, \"Unsafe\", { enumerable: true, get: function () { return index_57.Unsafe; } });\nvar index_58 = require(\"../void/index\");\nObject.defineProperty(exports, \"Void\", { enumerable: true, get: function () { return index_58.Void; } });\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JavaScriptTypeBuilder = void 0;\nconst json_1 = require(\"./json\");\nconst index_1 = require(\"../async-iterator/index\");\nconst index_2 = require(\"../awaited/index\");\nconst index_3 = require(\"../bigint/index\");\nconst index_4 = require(\"../constructor/index\");\nconst index_5 = require(\"../constructor-parameters/index\");\nconst index_6 = require(\"../date/index\");\nconst index_7 = require(\"../function/index\");\nconst index_8 = require(\"../instance-type/index\");\nconst index_9 = require(\"../iterator/index\");\nconst index_10 = require(\"../parameters/index\");\nconst index_11 = require(\"../promise/index\");\nconst index_12 = require(\"../regexp/index\");\nconst index_13 = require(\"../return-type/index\");\nconst index_14 = require(\"../symbol/index\");\nconst index_15 = require(\"../uint8array/index\");\nconst index_16 = require(\"../undefined/index\");\nconst index_17 = require(\"../void/index\");\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nclass JavaScriptTypeBuilder extends json_1.JsonTypeBuilder {\n /** `[JavaScript]` Creates a AsyncIterator type */\n AsyncIterator(items, options) {\n return (0, index_1.AsyncIterator)(items, options);\n }\n /** `[JavaScript]` Constructs a type by recursively unwrapping Promise types */\n Awaited(schema, options) {\n return (0, index_2.Awaited)(schema, options);\n }\n /** `[JavaScript]` Creates a BigInt type */\n BigInt(options) {\n return (0, index_3.BigInt)(options);\n }\n /** `[JavaScript]` Extracts the ConstructorParameters from the given Constructor type */\n ConstructorParameters(schema, options) {\n return (0, index_5.ConstructorParameters)(schema, options);\n }\n /** `[JavaScript]` Creates a Constructor type */\n Constructor(parameters, returns, options) {\n return (0, index_4.Constructor)(parameters, returns, options);\n }\n /** `[JavaScript]` Creates a Date type */\n Date(options = {}) {\n return (0, index_6.Date)(options);\n }\n /** `[JavaScript]` Creates a Function type */\n Function(parameters, returns, options) {\n return (0, index_7.Function)(parameters, returns, options);\n }\n /** `[JavaScript]` Extracts the InstanceType from the given Constructor type */\n InstanceType(schema, options) {\n return (0, index_8.InstanceType)(schema, options);\n }\n /** `[JavaScript]` Creates an Iterator type */\n Iterator(items, options) {\n return (0, index_9.Iterator)(items, options);\n }\n /** `[JavaScript]` Extracts the Parameters from the given Function type */\n Parameters(schema, options) {\n return (0, index_10.Parameters)(schema, options);\n }\n /** `[JavaScript]` Creates a Promise type */\n Promise(item, options) {\n return (0, index_11.Promise)(item, options);\n }\n /** `[JavaScript]` Creates a RegExp type */\n RegExp(unresolved, options) {\n return (0, index_12.RegExp)(unresolved, options);\n }\n /** `[JavaScript]` Extracts the ReturnType from the given Function type */\n ReturnType(schema, options) {\n return (0, index_13.ReturnType)(schema, options);\n }\n /** `[JavaScript]` Creates a Symbol type */\n Symbol(options) {\n return (0, index_14.Symbol)(options);\n }\n /** `[JavaScript]` Creates a Undefined type */\n Undefined(options) {\n return (0, index_16.Undefined)(options);\n }\n /** `[JavaScript]` Creates a Uint8Array type */\n Uint8Array(options) {\n return (0, index_15.Uint8Array)(options);\n }\n /** `[JavaScript]` Creates a Void type */\n Void(options) {\n return (0, index_17.Void)(options);\n }\n}\nexports.JavaScriptTypeBuilder = JavaScriptTypeBuilder;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Type = exports.JavaScriptTypeBuilder = exports.JsonTypeBuilder = void 0;\n// ------------------------------------------------------------------\n// JsonTypeBuilder\n// ------------------------------------------------------------------\nvar json_1 = require(\"./json\");\nObject.defineProperty(exports, \"JsonTypeBuilder\", { enumerable: true, get: function () { return json_1.JsonTypeBuilder; } });\n// ------------------------------------------------------------------\n// JavaScriptTypeBuilder\n// ------------------------------------------------------------------\nconst TypeBuilder = require(\"./type\");\nconst javascript_1 = require(\"./javascript\");\nObject.defineProperty(exports, \"JavaScriptTypeBuilder\", { enumerable: true, get: function () { return javascript_1.JavaScriptTypeBuilder; } });\n/** JavaScript Type Builder with Static Resolution for TypeScript */\nconst Type = TypeBuilder;\nexports.Type = Type;\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\n__exportStar(require(\"./type/clone/index\"), exports);\n__exportStar(require(\"./type/create/index\"), exports);\n__exportStar(require(\"./type/error/index\"), exports);\n__exportStar(require(\"./type/guard/index\"), exports);\n__exportStar(require(\"./type/helpers/index\"), exports);\n__exportStar(require(\"./type/patterns/index\"), exports);\n__exportStar(require(\"./type/registry/index\"), exports);\n__exportStar(require(\"./type/sets/index\"), exports);\n__exportStar(require(\"./type/symbols/index\"), exports);\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\n__exportStar(require(\"./type/any/index\"), exports);\n__exportStar(require(\"./type/array/index\"), exports);\n__exportStar(require(\"./type/async-iterator/index\"), exports);\n__exportStar(require(\"./type/awaited/index\"), exports);\n__exportStar(require(\"./type/bigint/index\"), exports);\n__exportStar(require(\"./type/boolean/index\"), exports);\n__exportStar(require(\"./type/composite/index\"), exports);\n__exportStar(require(\"./type/const/index\"), exports);\n__exportStar(require(\"./type/constructor/index\"), exports);\n__exportStar(require(\"./type/constructor-parameters/index\"), exports);\n__exportStar(require(\"./type/date/index\"), exports);\n__exportStar(require(\"./type/deref/index\"), exports);\n__exportStar(require(\"./type/enum/index\"), exports);\n__exportStar(require(\"./type/exclude/index\"), exports);\n__exportStar(require(\"./type/extends/index\"), exports);\n__exportStar(require(\"./type/extract/index\"), exports);\n__exportStar(require(\"./type/function/index\"), exports);\n__exportStar(require(\"./type/indexed/index\"), exports);\n__exportStar(require(\"./type/instance-type/index\"), exports);\n__exportStar(require(\"./type/integer/index\"), exports);\n__exportStar(require(\"./type/intersect/index\"), exports);\n__exportStar(require(\"./type/iterator/index\"), exports);\n__exportStar(require(\"./type/intrinsic/index\"), exports);\n__exportStar(require(\"./type/keyof/index\"), exports);\n__exportStar(require(\"./type/literal/index\"), exports);\n__exportStar(require(\"./type/mapped/index\"), exports);\n__exportStar(require(\"./type/never/index\"), exports);\n__exportStar(require(\"./type/not/index\"), exports);\n__exportStar(require(\"./type/null/index\"), exports);\n__exportStar(require(\"./type/number/index\"), exports);\n__exportStar(require(\"./type/object/index\"), exports);\n__exportStar(require(\"./type/omit/index\"), exports);\n__exportStar(require(\"./type/optional/index\"), exports);\n__exportStar(require(\"./type/parameters/index\"), exports);\n__exportStar(require(\"./type/partial/index\"), exports);\n__exportStar(require(\"./type/pick/index\"), exports);\n__exportStar(require(\"./type/promise/index\"), exports);\n__exportStar(require(\"./type/readonly/index\"), exports);\n__exportStar(require(\"./type/readonly-optional/index\"), exports);\n__exportStar(require(\"./type/record/index\"), exports);\n__exportStar(require(\"./type/recursive/index\"), exports);\n__exportStar(require(\"./type/ref/index\"), exports);\n__exportStar(require(\"./type/regexp/index\"), exports);\n__exportStar(require(\"./type/required/index\"), exports);\n__exportStar(require(\"./type/rest/index\"), exports);\n__exportStar(require(\"./type/return-type/index\"), exports);\n__exportStar(require(\"./type/schema/index\"), exports);\n__exportStar(require(\"./type/static/index\"), exports);\n__exportStar(require(\"./type/strict/index\"), exports);\n__exportStar(require(\"./type/string/index\"), exports);\n__exportStar(require(\"./type/symbol/index\"), exports);\n__exportStar(require(\"./type/template-literal/index\"), exports);\n__exportStar(require(\"./type/transform/index\"), exports);\n__exportStar(require(\"./type/tuple/index\"), exports);\n__exportStar(require(\"./type/uint8array/index\"), exports);\n__exportStar(require(\"./type/undefined/index\"), exports);\n__exportStar(require(\"./type/union/index\"), exports);\n__exportStar(require(\"./type/unknown/index\"), exports);\n__exportStar(require(\"./type/unsafe/index\"), exports);\n__exportStar(require(\"./type/void/index\"), exports);\n// ------------------------------------------------------------------\n// Type.*\n// ------------------------------------------------------------------\n__exportStar(require(\"./type/type/index\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeSystem = exports.TypeSystemDuplicateFormat = exports.TypeSystemDuplicateTypeKind = void 0;\nconst index_1 = require(\"../type/registry/index\");\nconst index_2 = require(\"../type/unsafe/index\");\nconst index_3 = require(\"../type/symbols/index\");\nconst index_4 = require(\"../type/error/index\");\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nclass TypeSystemDuplicateTypeKind extends index_4.TypeBoxError {\n constructor(kind) {\n super(`Duplicate type kind '${kind}' detected`);\n }\n}\nexports.TypeSystemDuplicateTypeKind = TypeSystemDuplicateTypeKind;\nclass TypeSystemDuplicateFormat extends index_4.TypeBoxError {\n constructor(kind) {\n super(`Duplicate string format '${kind}' detected`);\n }\n}\nexports.TypeSystemDuplicateFormat = TypeSystemDuplicateFormat;\n/** Creates user defined types and formats and provides overrides for value checking behaviours */\nvar TypeSystem;\n(function (TypeSystem) {\n /** Creates a new type */\n function Type(kind, check) {\n if (index_1.TypeRegistry.Has(kind))\n throw new TypeSystemDuplicateTypeKind(kind);\n index_1.TypeRegistry.Set(kind, check);\n return (options = {}) => (0, index_2.Unsafe)({ ...options, [index_3.Kind]: kind });\n }\n TypeSystem.Type = Type;\n /** Creates a new string format */\n function Format(format, check) {\n if (index_1.FormatRegistry.Has(format))\n throw new TypeSystemDuplicateFormat(format);\n index_1.FormatRegistry.Set(format, check);\n return format;\n }\n TypeSystem.Format = Format;\n})(TypeSystem || (exports.TypeSystem = TypeSystem = {}));\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./policy\"), exports);\n__exportStar(require(\"./system\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultErrorFunction = DefaultErrorFunction;\nexports.SetErrorFunction = SetErrorFunction;\nexports.GetErrorFunction = GetErrorFunction;\nconst index_1 = require(\"../type/symbols/index\");\nconst errors_1 = require(\"./errors\");\n/** Creates an error message using en-US as the default locale */\nfunction DefaultErrorFunction(error) {\n switch (error.errorType) {\n case errors_1.ValueErrorType.ArrayContains:\n return 'Expected array to contain at least one matching value';\n case errors_1.ValueErrorType.ArrayMaxContains:\n return `Expected array to contain no more than ${error.schema.maxContains} matching values`;\n case errors_1.ValueErrorType.ArrayMinContains:\n return `Expected array to contain at least ${error.schema.minContains} matching values`;\n case errors_1.ValueErrorType.ArrayMaxItems:\n return `Expected array length to be less or equal to ${error.schema.maxItems}`;\n case errors_1.ValueErrorType.ArrayMinItems:\n return `Expected array length to be greater or equal to ${error.schema.minItems}`;\n case errors_1.ValueErrorType.ArrayUniqueItems:\n return 'Expected array elements to be unique';\n case errors_1.ValueErrorType.Array:\n return 'Expected array';\n case errors_1.ValueErrorType.AsyncIterator:\n return 'Expected AsyncIterator';\n case errors_1.ValueErrorType.BigIntExclusiveMaximum:\n return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;\n case errors_1.ValueErrorType.BigIntExclusiveMinimum:\n return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;\n case errors_1.ValueErrorType.BigIntMaximum:\n return `Expected bigint to be less or equal to ${error.schema.maximum}`;\n case errors_1.ValueErrorType.BigIntMinimum:\n return `Expected bigint to be greater or equal to ${error.schema.minimum}`;\n case errors_1.ValueErrorType.BigIntMultipleOf:\n return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;\n case errors_1.ValueErrorType.BigInt:\n return 'Expected bigint';\n case errors_1.ValueErrorType.Boolean:\n return 'Expected boolean';\n case errors_1.ValueErrorType.DateExclusiveMinimumTimestamp:\n return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;\n case errors_1.ValueErrorType.DateExclusiveMaximumTimestamp:\n return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;\n case errors_1.ValueErrorType.DateMinimumTimestamp:\n return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;\n case errors_1.ValueErrorType.DateMaximumTimestamp:\n return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;\n case errors_1.ValueErrorType.DateMultipleOfTimestamp:\n return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;\n case errors_1.ValueErrorType.Date:\n return 'Expected Date';\n case errors_1.ValueErrorType.Function:\n return 'Expected function';\n case errors_1.ValueErrorType.IntegerExclusiveMaximum:\n return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;\n case errors_1.ValueErrorType.IntegerExclusiveMinimum:\n return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;\n case errors_1.ValueErrorType.IntegerMaximum:\n return `Expected integer to be less or equal to ${error.schema.maximum}`;\n case errors_1.ValueErrorType.IntegerMinimum:\n return `Expected integer to be greater or equal to ${error.schema.minimum}`;\n case errors_1.ValueErrorType.IntegerMultipleOf:\n return `Expected integer to be a multiple of ${error.schema.multipleOf}`;\n case errors_1.ValueErrorType.Integer:\n return 'Expected integer';\n case errors_1.ValueErrorType.IntersectUnevaluatedProperties:\n return 'Unexpected property';\n case errors_1.ValueErrorType.Intersect:\n return 'Expected all values to match';\n case errors_1.ValueErrorType.Iterator:\n return 'Expected Iterator';\n case errors_1.ValueErrorType.Literal:\n return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;\n case errors_1.ValueErrorType.Never:\n return 'Never';\n case errors_1.ValueErrorType.Not:\n return 'Value should not match';\n case errors_1.ValueErrorType.Null:\n return 'Expected null';\n case errors_1.ValueErrorType.NumberExclusiveMaximum:\n return `Expected number to be less than ${error.schema.exclusiveMaximum}`;\n case errors_1.ValueErrorType.NumberExclusiveMinimum:\n return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;\n case errors_1.ValueErrorType.NumberMaximum:\n return `Expected number to be less or equal to ${error.schema.maximum}`;\n case errors_1.ValueErrorType.NumberMinimum:\n return `Expected number to be greater or equal to ${error.schema.minimum}`;\n case errors_1.ValueErrorType.NumberMultipleOf:\n return `Expected number to be a multiple of ${error.schema.multipleOf}`;\n case errors_1.ValueErrorType.Number:\n return 'Expected number';\n case errors_1.ValueErrorType.Object:\n return 'Expected object';\n case errors_1.ValueErrorType.ObjectAdditionalProperties:\n return 'Unexpected property';\n case errors_1.ValueErrorType.ObjectMaxProperties:\n return `Expected object to have no more than ${error.schema.maxProperties} properties`;\n case errors_1.ValueErrorType.ObjectMinProperties:\n return `Expected object to have at least ${error.schema.minProperties} properties`;\n case errors_1.ValueErrorType.ObjectRequiredProperty:\n return 'Expected required property';\n case errors_1.ValueErrorType.Promise:\n return 'Expected Promise';\n case errors_1.ValueErrorType.RegExp:\n return 'Expected string to match regular expression';\n case errors_1.ValueErrorType.StringFormatUnknown:\n return `Unknown format '${error.schema.format}'`;\n case errors_1.ValueErrorType.StringFormat:\n return `Expected string to match '${error.schema.format}' format`;\n case errors_1.ValueErrorType.StringMaxLength:\n return `Expected string length less or equal to ${error.schema.maxLength}`;\n case errors_1.ValueErrorType.StringMinLength:\n return `Expected string length greater or equal to ${error.schema.minLength}`;\n case errors_1.ValueErrorType.StringPattern:\n return `Expected string to match '${error.schema.pattern}'`;\n case errors_1.ValueErrorType.String:\n return 'Expected string';\n case errors_1.ValueErrorType.Symbol:\n return 'Expected symbol';\n case errors_1.ValueErrorType.TupleLength:\n return `Expected tuple to have ${error.schema.maxItems || 0} elements`;\n case errors_1.ValueErrorType.Tuple:\n return 'Expected tuple';\n case errors_1.ValueErrorType.Uint8ArrayMaxByteLength:\n return `Expected byte length less or equal to ${error.schema.maxByteLength}`;\n case errors_1.ValueErrorType.Uint8ArrayMinByteLength:\n return `Expected byte length greater or equal to ${error.schema.minByteLength}`;\n case errors_1.ValueErrorType.Uint8Array:\n return 'Expected Uint8Array';\n case errors_1.ValueErrorType.Undefined:\n return 'Expected undefined';\n case errors_1.ValueErrorType.Union:\n return 'Expected union value';\n case errors_1.ValueErrorType.Void:\n return 'Expected void';\n case errors_1.ValueErrorType.Kind:\n return `Expected kind '${error.schema[index_1.Kind]}'`;\n default:\n return 'Unknown error type';\n }\n}\n/** Manages error message providers */\nlet errorFunction = DefaultErrorFunction;\n/** Sets the error function used to generate error messages. */\nfunction SetErrorFunction(callback) {\n errorFunction = callback;\n}\n/** Gets the error function used to generate error messages */\nfunction GetErrorFunction() {\n return errorFunction;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDereferenceError = void 0;\nexports.Pushref = Pushref;\nexports.Deref = Deref;\nconst index_1 = require(\"../../type/error/index\");\nconst index_2 = require(\"../../type/symbols/index\");\nconst guard_1 = require(\"../guard/guard\");\nclass TypeDereferenceError extends index_1.TypeBoxError {\n constructor(schema) {\n super(`Unable to dereference schema with $id '${schema.$ref}'`);\n this.schema = schema;\n }\n}\nexports.TypeDereferenceError = TypeDereferenceError;\nfunction Resolve(schema, references) {\n const target = references.find((target) => target.$id === schema.$ref);\n if (target === undefined)\n throw new TypeDereferenceError(schema);\n return Deref(target, references);\n}\n/** `[Internal]` Pushes a schema onto references if the schema has an $id and does not exist on references */\nfunction Pushref(schema, references) {\n if (!(0, guard_1.IsString)(schema.$id) || references.some((target) => target.$id === schema.$id))\n return references;\n references.push(schema);\n return references;\n}\n/** `[Internal]` Dereferences a schema from the references array or throws if not found */\nfunction Deref(schema, references) {\n // prettier-ignore\n return (schema[index_2.Kind] === 'This' || schema[index_2.Kind] === 'Ref')\n ? Resolve(schema, references)\n : schema;\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./deref\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueHashError = void 0;\nexports.Hash = Hash;\nconst index_1 = require(\"../guard/index\");\nconst index_2 = require(\"../../type/error/index\");\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nclass ValueHashError extends index_2.TypeBoxError {\n constructor(value) {\n super(`Unable to hash value`);\n this.value = value;\n }\n}\nexports.ValueHashError = ValueHashError;\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Undefined\"] = 0] = \"Undefined\";\n ByteMarker[ByteMarker[\"Null\"] = 1] = \"Null\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Number\"] = 3] = \"Number\";\n ByteMarker[ByteMarker[\"String\"] = 4] = \"String\";\n ByteMarker[ByteMarker[\"Object\"] = 5] = \"Object\";\n ByteMarker[ByteMarker[\"Array\"] = 6] = \"Array\";\n ByteMarker[ByteMarker[\"Date\"] = 7] = \"Date\";\n ByteMarker[ByteMarker[\"Uint8Array\"] = 8] = \"Uint8Array\";\n ByteMarker[ByteMarker[\"Symbol\"] = 9] = \"Symbol\";\n ByteMarker[ByteMarker[\"BigInt\"] = 10] = \"BigInt\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('18446744073709551616' /* 2 ^ 64 */)];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// NumberToBytes\n// ------------------------------------------------------------------\nfunction* NumberToBytes(value) {\n const byteCount = value === 0 ? 1 : Math.ceil(Math.floor(Math.log2(value) + 1) / 8);\n for (let i = 0; i < byteCount; i++) {\n yield (value >> (8 * (byteCount - 1 - i))) & 0xff;\n }\n}\n// ------------------------------------------------------------------\n// Hashing Functions\n// ------------------------------------------------------------------\nfunction ArrayType(value) {\n FNV1A64(ByteMarker.Array);\n for (const item of value) {\n Visit(item);\n }\n}\nfunction BooleanType(value) {\n FNV1A64(ByteMarker.Boolean);\n FNV1A64(value ? 1 : 0);\n}\nfunction BigIntType(value) {\n FNV1A64(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction DateType(value) {\n FNV1A64(ByteMarker.Date);\n Visit(value.getTime());\n}\nfunction NullType(value) {\n FNV1A64(ByteMarker.Null);\n}\nfunction NumberType(value) {\n FNV1A64(ByteMarker.Number);\n F64In.setFloat64(0, value);\n for (const byte of F64Out) {\n FNV1A64(byte);\n }\n}\nfunction ObjectType(value) {\n FNV1A64(ByteMarker.Object);\n for (const key of globalThis.Object.getOwnPropertyNames(value).sort()) {\n Visit(key);\n Visit(value[key]);\n }\n}\nfunction StringType(value) {\n FNV1A64(ByteMarker.String);\n for (let i = 0; i < value.length; i++) {\n for (const byte of NumberToBytes(value.charCodeAt(i))) {\n FNV1A64(byte);\n }\n }\n}\nfunction SymbolType(value) {\n FNV1A64(ByteMarker.Symbol);\n Visit(value.description);\n}\nfunction Uint8ArrayType(value) {\n FNV1A64(ByteMarker.Uint8Array);\n for (let i = 0; i < value.length; i++) {\n FNV1A64(value[i]);\n }\n}\nfunction UndefinedType(value) {\n return FNV1A64(ByteMarker.Undefined);\n}\nfunction Visit(value) {\n if ((0, index_1.IsArray)(value))\n return ArrayType(value);\n if ((0, index_1.IsBoolean)(value))\n return BooleanType(value);\n if ((0, index_1.IsBigInt)(value))\n return BigIntType(value);\n if ((0, index_1.IsDate)(value))\n return DateType(value);\n if ((0, index_1.IsNull)(value))\n return NullType(value);\n if ((0, index_1.IsNumber)(value))\n return NumberType(value);\n if ((0, index_1.IsObject)(value))\n return ObjectType(value);\n if ((0, index_1.IsString)(value))\n return StringType(value);\n if ((0, index_1.IsSymbol)(value))\n return SymbolType(value);\n if ((0, index_1.IsUint8Array)(value))\n return Uint8ArrayType(value);\n if ((0, index_1.IsUndefined)(value))\n return UndefinedType(value);\n throw new ValueHashError(value);\n}\nfunction FNV1A64(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Creates a FNV1A-64 non cryptographic hash of the given value */\nfunction Hash(value) {\n Accumulator = BigInt('14695981039346656037');\n Visit(value);\n return Accumulator;\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./hash\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueCheckUnknownTypeError = void 0;\nexports.Check = Check;\nconst index_1 = require(\"../../system/index\");\nconst index_2 = require(\"../deref/index\");\nconst index_3 = require(\"../hash/index\");\nconst index_4 = require(\"../../type/symbols/index\");\nconst index_5 = require(\"../../type/keyof/index\");\nconst index_6 = require(\"../../type/extends/index\");\nconst index_7 = require(\"../../type/registry/index\");\nconst index_8 = require(\"../../type/error/index\");\nconst index_9 = require(\"../../type/never/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\nconst index_10 = require(\"../guard/index\");\n// ------------------------------------------------------------------\n// TypeGuard\n// ------------------------------------------------------------------\nconst type_1 = require(\"../../type/guard/type\");\n// ------------------------------------------------------------------\n// Errors\n// ------------------------------------------------------------------\nclass ValueCheckUnknownTypeError extends index_8.TypeBoxError {\n constructor(schema) {\n super(`Unknown type`);\n this.schema = schema;\n }\n}\nexports.ValueCheckUnknownTypeError = ValueCheckUnknownTypeError;\n// ------------------------------------------------------------------\n// TypeGuards\n// ------------------------------------------------------------------\nfunction IsAnyOrUnknown(schema) {\n return schema[index_4.Kind] === 'Any' || schema[index_4.Kind] === 'Unknown';\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromAny(schema, references, value) {\n return true;\n}\nfunction FromArray(schema, references, value) {\n if (!(0, index_10.IsArray)(value))\n return false;\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n return false;\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n return false;\n }\n if (!value.every((value) => Visit(schema.items, references, value))) {\n return false;\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = (0, index_3.Hash)(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n return false;\n }\n // contains\n if (!(IsDefined(schema.contains) || (0, index_10.IsNumber)(schema.minContains) || (0, index_10.IsNumber)(schema.maxContains))) {\n return true; // exit\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : (0, index_9.Never)();\n const containsCount = value.reduce((acc, value) => (Visit(containsSchema, references, value) ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n return false;\n }\n if ((0, index_10.IsNumber)(schema.minContains) && containsCount < schema.minContains) {\n return false;\n }\n if ((0, index_10.IsNumber)(schema.maxContains) && containsCount > schema.maxContains) {\n return false;\n }\n return true;\n}\nfunction FromAsyncIterator(schema, references, value) {\n return (0, index_10.IsAsyncIterator)(value);\n}\nfunction FromBigInt(schema, references, value) {\n if (!(0, index_10.IsBigInt)(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n return false;\n }\n return true;\n}\nfunction FromBoolean(schema, references, value) {\n return (0, index_10.IsBoolean)(value);\n}\nfunction FromConstructor(schema, references, value) {\n return Visit(schema.returns, references, value.prototype);\n}\nfunction FromDate(schema, references, value) {\n if (!(0, index_10.IsDate)(value))\n return false;\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n return false;\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n return false;\n }\n return true;\n}\nfunction FromFunction(schema, references, value) {\n return (0, index_10.IsFunction)(value);\n}\nfunction FromInteger(schema, references, value) {\n if (!(0, index_10.IsInteger)(value)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromIntersect(schema, references, value) {\n const check1 = schema.allOf.every((schema) => Visit(schema, references, value));\n if (schema.unevaluatedProperties === false) {\n const keyPattern = new RegExp((0, index_5.KeyOfPattern)(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyPattern.test(key));\n return check1 && check2;\n }\n else if ((0, type_1.IsSchema)(schema.unevaluatedProperties)) {\n const keyCheck = new RegExp((0, index_5.KeyOfPattern)(schema));\n const check2 = Object.getOwnPropertyNames(value).every((key) => keyCheck.test(key) || Visit(schema.unevaluatedProperties, references, value[key]));\n return check1 && check2;\n }\n else {\n return check1;\n }\n}\nfunction FromIterator(schema, references, value) {\n return (0, index_10.IsIterator)(value);\n}\nfunction FromLiteral(schema, references, value) {\n return value === schema.const;\n}\nfunction FromNever(schema, references, value) {\n return false;\n}\nfunction FromNot(schema, references, value) {\n return !Visit(schema.not, references, value);\n}\nfunction FromNull(schema, references, value) {\n return (0, index_10.IsNull)(value);\n}\nfunction FromNumber(schema, references, value) {\n if (!index_1.TypeSystemPolicy.IsNumberLike(value))\n return false;\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n return false;\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n return false;\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n return false;\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n return false;\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n return false;\n }\n return true;\n}\nfunction FromObject(schema, references, value) {\n if (!index_1.TypeSystemPolicy.IsObjectLike(value))\n return false;\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n if (!Visit(property, references, value[knownKey])) {\n return false;\n }\n if (((0, index_6.ExtendsUndefinedCheck)(property) || IsAnyOrUnknown(property)) && !(knownKey in value)) {\n return false;\n }\n }\n else {\n if (index_1.TypeSystemPolicy.IsExactOptionalProperty(value, knownKey) && !Visit(property, references, value[knownKey])) {\n return false;\n }\n }\n }\n if (schema.additionalProperties === false) {\n const valueKeys = Object.getOwnPropertyNames(value);\n // optimization: value is valid if schemaKey length matches the valueKey length\n if (schema.required && schema.required.length === knownKeys.length && valueKeys.length === knownKeys.length) {\n return true;\n }\n else {\n return valueKeys.every((valueKey) => knownKeys.includes(valueKey));\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n const valueKeys = Object.getOwnPropertyNames(value);\n return valueKeys.every((key) => knownKeys.includes(key) || Visit(schema.additionalProperties, references, value[key]));\n }\n else {\n return true;\n }\n}\nfunction FromPromise(schema, references, value) {\n return (0, index_10.IsPromise)(value);\n}\nfunction FromRecord(schema, references, value) {\n if (!index_1.TypeSystemPolicy.IsRecordLike(value)) {\n return false;\n }\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n return false;\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n return false;\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n // prettier-ignore\n const check1 = Object.entries(value).every(([key, value]) => {\n return (regex.test(key)) ? Visit(patternSchema, references, value) : true;\n });\n // prettier-ignore\n const check2 = typeof schema.additionalProperties === 'object' ? Object.entries(value).every(([key, value]) => {\n return (!regex.test(key)) ? Visit(schema.additionalProperties, references, value) : true;\n }) : true;\n const check3 = schema.additionalProperties === false\n ? Object.getOwnPropertyNames(value).every((key) => {\n return regex.test(key);\n })\n : true;\n return check1 && check2 && check3;\n}\nfunction FromRef(schema, references, value) {\n return Visit((0, index_2.Deref)(schema, references), references, value);\n}\nfunction FromRegExp(schema, references, value) {\n const regex = new RegExp(schema.source, schema.flags);\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n return regex.test(value);\n}\nfunction FromString(schema, references, value) {\n if (!(0, index_10.IsString)(value)) {\n return false;\n }\n if (IsDefined(schema.minLength)) {\n if (!(value.length >= schema.minLength))\n return false;\n }\n if (IsDefined(schema.maxLength)) {\n if (!(value.length <= schema.maxLength))\n return false;\n }\n if (IsDefined(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value))\n return false;\n }\n if (IsDefined(schema.format)) {\n if (!index_7.FormatRegistry.Has(schema.format))\n return false;\n const func = index_7.FormatRegistry.Get(schema.format);\n return func(value);\n }\n return true;\n}\nfunction FromSymbol(schema, references, value) {\n return (0, index_10.IsSymbol)(value);\n}\nfunction FromTemplateLiteral(schema, references, value) {\n return (0, index_10.IsString)(value) && new RegExp(schema.pattern).test(value);\n}\nfunction FromThis(schema, references, value) {\n return Visit((0, index_2.Deref)(schema, references), references, value);\n}\nfunction FromTuple(schema, references, value) {\n if (!(0, index_10.IsArray)(value)) {\n return false;\n }\n if (schema.items === undefined && !(value.length === 0)) {\n return false;\n }\n if (!(value.length === schema.maxItems)) {\n return false;\n }\n if (!schema.items) {\n return true;\n }\n for (let i = 0; i < schema.items.length; i++) {\n if (!Visit(schema.items[i], references, value[i]))\n return false;\n }\n return true;\n}\nfunction FromUndefined(schema, references, value) {\n return (0, index_10.IsUndefined)(value);\n}\nfunction FromUnion(schema, references, value) {\n return schema.anyOf.some((inner) => Visit(inner, references, value));\n}\nfunction FromUint8Array(schema, references, value) {\n if (!(0, index_10.IsUint8Array)(value)) {\n return false;\n }\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n return false;\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n return false;\n }\n return true;\n}\nfunction FromUnknown(schema, references, value) {\n return true;\n}\nfunction FromVoid(schema, references, value) {\n return index_1.TypeSystemPolicy.IsVoidLike(value);\n}\nfunction FromKind(schema, references, value) {\n if (!index_7.TypeRegistry.Has(schema[index_4.Kind]))\n return false;\n const func = index_7.TypeRegistry.Get(schema[index_4.Kind]);\n return func(schema, value);\n}\nfunction Visit(schema, references, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[index_4.Kind]) {\n case 'Any':\n return FromAny(schema_, references_, value);\n case 'Array':\n return FromArray(schema_, references_, value);\n case 'AsyncIterator':\n return FromAsyncIterator(schema_, references_, value);\n case 'BigInt':\n return FromBigInt(schema_, references_, value);\n case 'Boolean':\n return FromBoolean(schema_, references_, value);\n case 'Constructor':\n return FromConstructor(schema_, references_, value);\n case 'Date':\n return FromDate(schema_, references_, value);\n case 'Function':\n return FromFunction(schema_, references_, value);\n case 'Integer':\n return FromInteger(schema_, references_, value);\n case 'Intersect':\n return FromIntersect(schema_, references_, value);\n case 'Iterator':\n return FromIterator(schema_, references_, value);\n case 'Literal':\n return FromLiteral(schema_, references_, value);\n case 'Never':\n return FromNever(schema_, references_, value);\n case 'Not':\n return FromNot(schema_, references_, value);\n case 'Null':\n return FromNull(schema_, references_, value);\n case 'Number':\n return FromNumber(schema_, references_, value);\n case 'Object':\n return FromObject(schema_, references_, value);\n case 'Promise':\n return FromPromise(schema_, references_, value);\n case 'Record':\n return FromRecord(schema_, references_, value);\n case 'Ref':\n return FromRef(schema_, references_, value);\n case 'RegExp':\n return FromRegExp(schema_, references_, value);\n case 'String':\n return FromString(schema_, references_, value);\n case 'Symbol':\n return FromSymbol(schema_, references_, value);\n case 'TemplateLiteral':\n return FromTemplateLiteral(schema_, references_, value);\n case 'This':\n return FromThis(schema_, references_, value);\n case 'Tuple':\n return FromTuple(schema_, references_, value);\n case 'Undefined':\n return FromUndefined(schema_, references_, value);\n case 'Union':\n return FromUnion(schema_, references_, value);\n case 'Uint8Array':\n return FromUint8Array(schema_, references_, value);\n case 'Unknown':\n return FromUnknown(schema_, references_, value);\n case 'Void':\n return FromVoid(schema_, references_, value);\n default:\n if (!index_7.TypeRegistry.Has(schema_[index_4.Kind]))\n throw new ValueCheckUnknownTypeError(schema_);\n return FromKind(schema_, references_, value);\n }\n}\n/** Returns true if the value matches the given type. */\nfunction Check(...args) {\n return args.length === 3 ? Visit(args[0], args[1], args[2]) : Visit(args[0], [], args[1]);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./check\"), exports);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueErrorIterator = exports.ValueErrorsUnknownTypeError = exports.ValueErrorType = void 0;\nexports.Errors = Errors;\nconst index_1 = require(\"../system/index\");\nconst index_2 = require(\"../type/keyof/index\");\nconst index_3 = require(\"../type/registry/index\");\nconst extends_undefined_1 = require(\"../type/extends/extends-undefined\");\nconst function_1 = require(\"./function\");\nconst index_4 = require(\"../type/error/index\");\nconst index_5 = require(\"../value/deref/index\");\nconst index_6 = require(\"../value/hash/index\");\nconst index_7 = require(\"../value/check/index\");\nconst index_8 = require(\"../type/symbols/index\");\nconst index_9 = require(\"../type/never/index\");\n// ------------------------------------------------------------------\n// ValueGuard\n// ------------------------------------------------------------------\n// prettier-ignore\nconst index_10 = require(\"../value/guard/index\");\n// ------------------------------------------------------------------\n// ValueErrorType\n// ------------------------------------------------------------------\nvar ValueErrorType;\n(function (ValueErrorType) {\n ValueErrorType[ValueErrorType[\"ArrayContains\"] = 0] = \"ArrayContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxContains\"] = 1] = \"ArrayMaxContains\";\n ValueErrorType[ValueErrorType[\"ArrayMaxItems\"] = 2] = \"ArrayMaxItems\";\n ValueErrorType[ValueErrorType[\"ArrayMinContains\"] = 3] = \"ArrayMinContains\";\n ValueErrorType[ValueErrorType[\"ArrayMinItems\"] = 4] = \"ArrayMinItems\";\n ValueErrorType[ValueErrorType[\"ArrayUniqueItems\"] = 5] = \"ArrayUniqueItems\";\n ValueErrorType[ValueErrorType[\"Array\"] = 6] = \"Array\";\n ValueErrorType[ValueErrorType[\"AsyncIterator\"] = 7] = \"AsyncIterator\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMaximum\"] = 8] = \"BigIntExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntExclusiveMinimum\"] = 9] = \"BigIntExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMaximum\"] = 10] = \"BigIntMaximum\";\n ValueErrorType[ValueErrorType[\"BigIntMinimum\"] = 11] = \"BigIntMinimum\";\n ValueErrorType[ValueErrorType[\"BigIntMultipleOf\"] = 12] = \"BigIntMultipleOf\";\n ValueErrorType[ValueErrorType[\"BigInt\"] = 13] = \"BigInt\";\n ValueErrorType[ValueErrorType[\"Boolean\"] = 14] = \"Boolean\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMaximumTimestamp\"] = 15] = \"DateExclusiveMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateExclusiveMinimumTimestamp\"] = 16] = \"DateExclusiveMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMaximumTimestamp\"] = 17] = \"DateMaximumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMinimumTimestamp\"] = 18] = \"DateMinimumTimestamp\";\n ValueErrorType[ValueErrorType[\"DateMultipleOfTimestamp\"] = 19] = \"DateMultipleOfTimestamp\";\n ValueErrorType[ValueErrorType[\"Date\"] = 20] = \"Date\";\n ValueErrorType[ValueErrorType[\"Function\"] = 21] = \"Function\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMaximum\"] = 22] = \"IntegerExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerExclusiveMinimum\"] = 23] = \"IntegerExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMaximum\"] = 24] = \"IntegerMaximum\";\n ValueErrorType[ValueErrorType[\"IntegerMinimum\"] = 25] = \"IntegerMinimum\";\n ValueErrorType[ValueErrorType[\"IntegerMultipleOf\"] = 26] = \"IntegerMultipleOf\";\n ValueErrorType[ValueErrorType[\"Integer\"] = 27] = \"Integer\";\n ValueErrorType[ValueErrorType[\"IntersectUnevaluatedProperties\"] = 28] = \"IntersectUnevaluatedProperties\";\n ValueErrorType[ValueErrorType[\"Intersect\"] = 29] = \"Intersect\";\n ValueErrorType[ValueErrorType[\"Iterator\"] = 30] = \"Iterator\";\n ValueErrorType[ValueErrorType[\"Kind\"] = 31] = \"Kind\";\n ValueErrorType[ValueErrorType[\"Literal\"] = 32] = \"Literal\";\n ValueErrorType[ValueErrorType[\"Never\"] = 33] = \"Never\";\n ValueErrorType[ValueErrorType[\"Not\"] = 34] = \"Not\";\n ValueErrorType[ValueErrorType[\"Null\"] = 35] = \"Null\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMaximum\"] = 36] = \"NumberExclusiveMaximum\";\n ValueErrorType[ValueErrorType[\"NumberExclusiveMinimum\"] = 37] = \"NumberExclusiveMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMaximum\"] = 38] = \"NumberMaximum\";\n ValueErrorType[ValueErrorType[\"NumberMinimum\"] = 39] = \"NumberMinimum\";\n ValueErrorType[ValueErrorType[\"NumberMultipleOf\"] = 40] = \"NumberMultipleOf\";\n ValueErrorType[ValueErrorType[\"Number\"] = 41] = \"Number\";\n ValueErrorType[ValueErrorType[\"ObjectAdditionalProperties\"] = 42] = \"ObjectAdditionalProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMaxProperties\"] = 43] = \"ObjectMaxProperties\";\n ValueErrorType[ValueErrorType[\"ObjectMinProperties\"] = 44] = \"ObjectMinProperties\";\n ValueErrorType[ValueErrorType[\"ObjectRequiredProperty\"] = 45] = \"ObjectRequiredProperty\";\n ValueErrorType[ValueErrorType[\"Object\"] = 46] = \"Object\";\n ValueErrorType[ValueErrorType[\"Promise\"] = 47] = \"Promise\";\n ValueErrorType[ValueErrorType[\"RegExp\"] = 48] = \"RegExp\";\n ValueErrorType[ValueErrorType[\"StringFormatUnknown\"] = 49] = \"StringFormatUnknown\";\n ValueErrorType[ValueErrorType[\"StringFormat\"] = 50] = \"StringFormat\";\n ValueErrorType[ValueErrorType[\"StringMaxLength\"] = 51] = \"StringMaxLength\";\n ValueErrorType[ValueErrorType[\"StringMinLength\"] = 52] = \"StringMinLength\";\n ValueErrorType[ValueErrorType[\"StringPattern\"] = 53] = \"StringPattern\";\n ValueErrorType[ValueErrorType[\"String\"] = 54] = \"String\";\n ValueErrorType[ValueErrorType[\"Symbol\"] = 55] = \"Symbol\";\n ValueErrorType[ValueErrorType[\"TupleLength\"] = 56] = \"TupleLength\";\n ValueErrorType[ValueErrorType[\"Tuple\"] = 57] = \"Tuple\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMaxByteLength\"] = 58] = \"Uint8ArrayMaxByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8ArrayMinByteLength\"] = 59] = \"Uint8ArrayMinByteLength\";\n ValueErrorType[ValueErrorType[\"Uint8Array\"] = 60] = \"Uint8Array\";\n ValueErrorType[ValueErrorType[\"Undefined\"] = 61] = \"Undefined\";\n ValueErrorType[ValueErrorType[\"Union\"] = 62] = \"Union\";\n ValueErrorType[ValueErrorType[\"Void\"] = 63] = \"Void\";\n})(ValueErrorType || (exports.ValueErrorType = ValueErrorType = {}));\n// ------------------------------------------------------------------\n// ValueErrors\n// ------------------------------------------------------------------\nclass ValueErrorsUnknownTypeError extends index_4.TypeBoxError {\n constructor(schema) {\n super('Unknown type');\n this.schema = schema;\n }\n}\nexports.ValueErrorsUnknownTypeError = ValueErrorsUnknownTypeError;\n// ------------------------------------------------------------------\n// EscapeKey\n// ------------------------------------------------------------------\nfunction EscapeKey(key) {\n return key.replace(/~/g, '~0').replace(/\\//g, '~1'); // RFC6901 Path\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nfunction IsDefined(value) {\n return value !== undefined;\n}\n// ------------------------------------------------------------------\n// ValueErrorIterator\n// ------------------------------------------------------------------\nclass ValueErrorIterator {\n constructor(iterator) {\n this.iterator = iterator;\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n /** Returns the first value error or undefined if no errors */\n First() {\n const next = this.iterator.next();\n return next.done ? undefined : next.value;\n }\n}\nexports.ValueErrorIterator = ValueErrorIterator;\n// --------------------------------------------------------------------------\n// Create\n// --------------------------------------------------------------------------\nfunction Create(errorType, schema, path, value, errors = []) {\n return {\n type: errorType,\n schema,\n path,\n value,\n message: (0, function_1.GetErrorFunction)()({ errorType, path, schema, value, errors }),\n errors,\n };\n}\n// --------------------------------------------------------------------------\n// Types\n// --------------------------------------------------------------------------\nfunction* FromAny(schema, references, path, value) { }\nfunction* FromArray(schema, references, path, value) {\n if (!(0, index_10.IsArray)(value)) {\n return yield Create(ValueErrorType.Array, schema, path, value);\n }\n if (IsDefined(schema.minItems) && !(value.length >= schema.minItems)) {\n yield Create(ValueErrorType.ArrayMinItems, schema, path, value);\n }\n if (IsDefined(schema.maxItems) && !(value.length <= schema.maxItems)) {\n yield Create(ValueErrorType.ArrayMaxItems, schema, path, value);\n }\n for (let i = 0; i < value.length; i++) {\n yield* Visit(schema.items, references, `${path}/${i}`, value[i]);\n }\n // prettier-ignore\n if (schema.uniqueItems === true && !((function () { const set = new Set(); for (const element of value) {\n const hashed = (0, index_6.Hash)(element);\n if (set.has(hashed)) {\n return false;\n }\n else {\n set.add(hashed);\n }\n } return true; })())) {\n yield Create(ValueErrorType.ArrayUniqueItems, schema, path, value);\n }\n // contains\n if (!(IsDefined(schema.contains) || IsDefined(schema.minContains) || IsDefined(schema.maxContains))) {\n return;\n }\n const containsSchema = IsDefined(schema.contains) ? schema.contains : (0, index_9.Never)();\n const containsCount = value.reduce((acc, value, index) => (Visit(containsSchema, references, `${path}${index}`, value).next().done === true ? acc + 1 : acc), 0);\n if (containsCount === 0) {\n yield Create(ValueErrorType.ArrayContains, schema, path, value);\n }\n if ((0, index_10.IsNumber)(schema.minContains) && containsCount < schema.minContains) {\n yield Create(ValueErrorType.ArrayMinContains, schema, path, value);\n }\n if ((0, index_10.IsNumber)(schema.maxContains) && containsCount > schema.maxContains) {\n yield Create(ValueErrorType.ArrayMaxContains, schema, path, value);\n }\n}\nfunction* FromAsyncIterator(schema, references, path, value) {\n if (!(0, index_10.IsAsyncIterator)(value))\n yield Create(ValueErrorType.AsyncIterator, schema, path, value);\n}\nfunction* FromBigInt(schema, references, path, value) {\n if (!(0, index_10.IsBigInt)(value))\n return yield Create(ValueErrorType.BigInt, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.BigIntExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.BigIntExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.BigIntMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.BigIntMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === BigInt(0))) {\n yield Create(ValueErrorType.BigIntMultipleOf, schema, path, value);\n }\n}\nfunction* FromBoolean(schema, references, path, value) {\n if (!(0, index_10.IsBoolean)(value))\n yield Create(ValueErrorType.Boolean, schema, path, value);\n}\nfunction* FromConstructor(schema, references, path, value) {\n yield* Visit(schema.returns, references, path, value.prototype);\n}\nfunction* FromDate(schema, references, path, value) {\n if (!(0, index_10.IsDate)(value))\n return yield Create(ValueErrorType.Date, schema, path, value);\n if (IsDefined(schema.exclusiveMaximumTimestamp) && !(value.getTime() < schema.exclusiveMaximumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimumTimestamp) && !(value.getTime() > schema.exclusiveMinimumTimestamp)) {\n yield Create(ValueErrorType.DateExclusiveMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.maximumTimestamp) && !(value.getTime() <= schema.maximumTimestamp)) {\n yield Create(ValueErrorType.DateMaximumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.minimumTimestamp) && !(value.getTime() >= schema.minimumTimestamp)) {\n yield Create(ValueErrorType.DateMinimumTimestamp, schema, path, value);\n }\n if (IsDefined(schema.multipleOfTimestamp) && !(value.getTime() % schema.multipleOfTimestamp === 0)) {\n yield Create(ValueErrorType.DateMultipleOfTimestamp, schema, path, value);\n }\n}\nfunction* FromFunction(schema, references, path, value) {\n if (!(0, index_10.IsFunction)(value))\n yield Create(ValueErrorType.Function, schema, path, value);\n}\nfunction* FromInteger(schema, references, path, value) {\n if (!(0, index_10.IsInteger)(value))\n return yield Create(ValueErrorType.Integer, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.IntegerExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.IntegerExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.IntegerMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.IntegerMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.IntegerMultipleOf, schema, path, value);\n }\n}\nfunction* FromIntersect(schema, references, path, value) {\n let hasError = false;\n for (const inner of schema.allOf) {\n for (const error of Visit(inner, references, path, value)) {\n hasError = true;\n yield error;\n }\n }\n if (hasError) {\n return yield Create(ValueErrorType.Intersect, schema, path, value);\n }\n if (schema.unevaluatedProperties === false) {\n const keyCheck = new RegExp((0, index_2.KeyOfPattern)(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n yield Create(ValueErrorType.IntersectUnevaluatedProperties, schema, `${path}/${valueKey}`, value);\n }\n }\n }\n if (typeof schema.unevaluatedProperties === 'object') {\n const keyCheck = new RegExp((0, index_2.KeyOfPattern)(schema));\n for (const valueKey of Object.getOwnPropertyNames(value)) {\n if (!keyCheck.test(valueKey)) {\n const next = Visit(schema.unevaluatedProperties, references, `${path}/${valueKey}`, value[valueKey]).next();\n if (!next.done)\n yield next.value; // yield interior\n }\n }\n }\n}\nfunction* FromIterator(schema, references, path, value) {\n if (!(0, index_10.IsIterator)(value))\n yield Create(ValueErrorType.Iterator, schema, path, value);\n}\nfunction* FromLiteral(schema, references, path, value) {\n if (!(value === schema.const))\n yield Create(ValueErrorType.Literal, schema, path, value);\n}\nfunction* FromNever(schema, references, path, value) {\n yield Create(ValueErrorType.Never, schema, path, value);\n}\nfunction* FromNot(schema, references, path, value) {\n if (Visit(schema.not, references, path, value).next().done === true)\n yield Create(ValueErrorType.Not, schema, path, value);\n}\nfunction* FromNull(schema, references, path, value) {\n if (!(0, index_10.IsNull)(value))\n yield Create(ValueErrorType.Null, schema, path, value);\n}\nfunction* FromNumber(schema, references, path, value) {\n if (!index_1.TypeSystemPolicy.IsNumberLike(value))\n return yield Create(ValueErrorType.Number, schema, path, value);\n if (IsDefined(schema.exclusiveMaximum) && !(value < schema.exclusiveMaximum)) {\n yield Create(ValueErrorType.NumberExclusiveMaximum, schema, path, value);\n }\n if (IsDefined(schema.exclusiveMinimum) && !(value > schema.exclusiveMinimum)) {\n yield Create(ValueErrorType.NumberExclusiveMinimum, schema, path, value);\n }\n if (IsDefined(schema.maximum) && !(value <= schema.maximum)) {\n yield Create(ValueErrorType.NumberMaximum, schema, path, value);\n }\n if (IsDefined(schema.minimum) && !(value >= schema.minimum)) {\n yield Create(ValueErrorType.NumberMinimum, schema, path, value);\n }\n if (IsDefined(schema.multipleOf) && !(value % schema.multipleOf === 0)) {\n yield Create(ValueErrorType.NumberMultipleOf, schema, path, value);\n }\n}\nfunction* FromObject(schema, references, path, value) {\n if (!index_1.TypeSystemPolicy.IsObjectLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const requiredKeys = Array.isArray(schema.required) ? schema.required : [];\n const knownKeys = Object.getOwnPropertyNames(schema.properties);\n const unknownKeys = Object.getOwnPropertyNames(value);\n for (const requiredKey of requiredKeys) {\n if (unknownKeys.includes(requiredKey))\n continue;\n yield Create(ValueErrorType.ObjectRequiredProperty, schema.properties[requiredKey], `${path}/${EscapeKey(requiredKey)}`, undefined);\n }\n if (schema.additionalProperties === false) {\n for (const valueKey of unknownKeys) {\n if (!knownKeys.includes(valueKey)) {\n yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const valueKey of unknownKeys) {\n if (knownKeys.includes(valueKey))\n continue;\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(valueKey)}`, value[valueKey]);\n }\n }\n for (const knownKey of knownKeys) {\n const property = schema.properties[knownKey];\n if (schema.required && schema.required.includes(knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n if ((0, extends_undefined_1.ExtendsUndefinedCheck)(schema) && !(knownKey in value)) {\n yield Create(ValueErrorType.ObjectRequiredProperty, property, `${path}/${EscapeKey(knownKey)}`, undefined);\n }\n }\n else {\n if (index_1.TypeSystemPolicy.IsExactOptionalProperty(value, knownKey)) {\n yield* Visit(property, references, `${path}/${EscapeKey(knownKey)}`, value[knownKey]);\n }\n }\n }\n}\nfunction* FromPromise(schema, references, path, value) {\n if (!(0, index_10.IsPromise)(value))\n yield Create(ValueErrorType.Promise, schema, path, value);\n}\nfunction* FromRecord(schema, references, path, value) {\n if (!index_1.TypeSystemPolicy.IsRecordLike(value))\n return yield Create(ValueErrorType.Object, schema, path, value);\n if (IsDefined(schema.minProperties) && !(Object.getOwnPropertyNames(value).length >= schema.minProperties)) {\n yield Create(ValueErrorType.ObjectMinProperties, schema, path, value);\n }\n if (IsDefined(schema.maxProperties) && !(Object.getOwnPropertyNames(value).length <= schema.maxProperties)) {\n yield Create(ValueErrorType.ObjectMaxProperties, schema, path, value);\n }\n const [patternKey, patternSchema] = Object.entries(schema.patternProperties)[0];\n const regex = new RegExp(patternKey);\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n yield* Visit(patternSchema, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n if (typeof schema.additionalProperties === 'object') {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (!regex.test(propertyKey))\n yield* Visit(schema.additionalProperties, references, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n if (schema.additionalProperties === false) {\n for (const [propertyKey, propertyValue] of Object.entries(value)) {\n if (regex.test(propertyKey))\n continue;\n return yield Create(ValueErrorType.ObjectAdditionalProperties, schema, `${path}/${EscapeKey(propertyKey)}`, propertyValue);\n }\n }\n}\nfunction* FromRef(schema, references, path, value) {\n yield* Visit((0, index_5.Deref)(schema, references), references, path, value);\n}\nfunction* FromRegExp(schema, references, path, value) {\n if (!(0, index_10.IsString)(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n const regex = new RegExp(schema.source, schema.flags);\n if (!regex.test(value)) {\n return yield Create(ValueErrorType.RegExp, schema, path, value);\n }\n}\nfunction* FromString(schema, references, path, value) {\n if (!(0, index_10.IsString)(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n if (IsDefined(schema.minLength) && !(value.length >= schema.minLength)) {\n yield Create(ValueErrorType.StringMinLength, schema, path, value);\n }\n if (IsDefined(schema.maxLength) && !(value.length <= schema.maxLength)) {\n yield Create(ValueErrorType.StringMaxLength, schema, path, value);\n }\n if ((0, index_10.IsString)(schema.pattern)) {\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n }\n if ((0, index_10.IsString)(schema.format)) {\n if (!index_3.FormatRegistry.Has(schema.format)) {\n yield Create(ValueErrorType.StringFormatUnknown, schema, path, value);\n }\n else {\n const format = index_3.FormatRegistry.Get(schema.format);\n if (!format(value)) {\n yield Create(ValueErrorType.StringFormat, schema, path, value);\n }\n }\n }\n}\nfunction* FromSymbol(schema, references, path, value) {\n if (!(0, index_10.IsSymbol)(value))\n yield Create(ValueErrorType.Symbol, schema, path, value);\n}\nfunction* FromTemplateLiteral(schema, references, path, value) {\n if (!(0, index_10.IsString)(value))\n return yield Create(ValueErrorType.String, schema, path, value);\n const regex = new RegExp(schema.pattern);\n if (!regex.test(value)) {\n yield Create(ValueErrorType.StringPattern, schema, path, value);\n }\n}\nfunction* FromThis(schema, references, path, value) {\n yield* Visit((0, index_5.Deref)(schema, references), references, path, value);\n}\nfunction* FromTuple(schema, references, path, value) {\n if (!(0, index_10.IsArray)(value))\n return yield Create(ValueErrorType.Tuple, schema, path, value);\n if (schema.items === undefined && !(value.length === 0)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!(value.length === schema.maxItems)) {\n return yield Create(ValueErrorType.TupleLength, schema, path, value);\n }\n if (!schema.items) {\n return;\n }\n for (let i = 0; i < schema.items.length; i++) {\n yield* Visit(schema.items[i], references, `${path}/${i}`, value[i]);\n }\n}\nfunction* FromUndefined(schema, references, path, value) {\n if (!(0, index_10.IsUndefined)(value))\n yield Create(ValueErrorType.Undefined, schema, path, value);\n}\nfunction* FromUnion(schema, references, path, value) {\n if ((0, index_7.Check)(schema, references, value))\n return;\n const errors = schema.anyOf.map((variant) => new ValueErrorIterator(Visit(variant, references, path, value)));\n yield Create(ValueErrorType.Union, schema, path, value, errors);\n}\nfunction* FromUint8Array(schema, references, path, value) {\n if (!(0, index_10.IsUint8Array)(value))\n return yield Create(ValueErrorType.Uint8Array, schema, path, value);\n if (IsDefined(schema.maxByteLength) && !(value.length <= schema.maxByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMaxByteLength, schema, path, value);\n }\n if (IsDefined(schema.minByteLength) && !(value.length >= schema.minByteLength)) {\n yield Create(ValueErrorType.Uint8ArrayMinByteLength, schema, path, value);\n }\n}\nfunction* FromUnknown(schema, references, path, value) { }\nfunction* FromVoid(schema, references, path, value) {\n if (!index_1.TypeSystemPolicy.IsVoidLike(value))\n yield Create(ValueErrorType.Void, schema, path, value);\n}\nfunction* FromKind(schema, references, path, value) {\n const check = index_3.TypeRegistry.Get(schema[index_8.Kind]);\n if (!check(schema, value))\n yield Create(ValueErrorType.Kind, schema, path, value);\n}\nfunction* Visit(schema, references, path, value) {\n const references_ = IsDefined(schema.$id) ? [...references, schema] : references;\n const schema_ = schema;\n switch (schema_[index_8.Kind]) {\n case 'Any':\n return yield* FromAny(schema_, references_, path, value);\n case 'Array':\n return yield* FromArray(schema_, references_, path, value);\n case 'AsyncIterator':\n return yield* FromAsyncIterator(schema_, references_, path, value);\n case 'BigInt':\n return yield* FromBigInt(schema_, references_, path, value);\n case 'Boolean':\n return yield* FromBoolean(schema_, references_, path, value);\n case 'Constructor':\n return yield* FromConstructor(schema_, references_, path, value);\n case 'Date':\n return yield* FromDate(schema_, references_, path, value);\n case 'Function':\n return yield* FromFunction(schema_, references_, path, value);\n case 'Integer':\n return yield* FromInteger(schema_, references_, path, value);\n case 'Intersect':\n return yield* FromIntersect(schema_, references_, path, value);\n case 'Iterator':\n return yield* FromIterator(schema_, references_, path, value);\n case 'Literal':\n return yield* FromLiteral(schema_, references_, path, value);\n case 'Never':\n return yield* FromNever(schema_, references_, path, value);\n case 'Not':\n return yield* FromNot(schema_, references_, path, value);\n case 'Null':\n return yield* FromNull(schema_, references_, path, value);\n case 'Number':\n return yield* FromNumber(schema_, references_, path, value);\n case 'Object':\n return yield* FromObject(schema_, references_, path, value);\n case 'Promise':\n return yield* FromPromise(schema_, references_, path, value);\n case 'Record':\n return yield* FromRecord(schema_, references_, path, value);\n case 'Ref':\n return yield* FromRef(schema_, references_, path, value);\n case 'RegExp':\n return yield* FromRegExp(schema_, references_, path, value);\n case 'String':\n return yield* FromString(schema_, references_, path, value);\n case 'Symbol':\n return yield* FromSymbol(schema_, references_, path, value);\n case 'TemplateLiteral':\n return yield* FromTemplateLiteral(schema_, references_, path, value);\n case 'This':\n return yield* FromThis(schema_, references_, path, value);\n case 'Tuple':\n return yield* FromTuple(schema_, references_, path, value);\n case 'Undefined':\n return yield* FromUndefined(schema_, references_, path, value);\n case 'Union':\n return yield* FromUnion(schema_, references_, path, value);\n case 'Uint8Array':\n return yield* FromUint8Array(schema_, references_, path, value);\n case 'Unknown':\n return yield* FromUnknown(schema_, references_, path, value);\n case 'Void':\n return yield* FromVoid(schema_, references_, path, value);\n default:\n if (!index_3.TypeRegistry.Has(schema_[index_8.Kind]))\n throw new ValueErrorsUnknownTypeError(schema);\n return yield* FromKind(schema_, references_, path, value);\n }\n}\n/** Returns an iterator for each error in this value. */\nfunction Errors(...args) {\n const iterator = args.length === 3 ? Visit(args[0], args[1], '', args[2]) : Visit(args[0], [], '', args[1]);\n return new ValueErrorIterator(iterator);\n}\n", "\"use strict\";\n\nvar __createBinding = (this && this.__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}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./errors\"), exports);\n__exportStar(require(\"./function\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatten = exports.unique = exports.hardMixProtos = exports.nearestCommonProto = exports.protoChain = exports.copyProps = void 0;\n/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well. Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n const props = Object.getOwnPropertyDescriptors(src);\n for (let prop of exclude)\n delete props[prop];\n Object.defineProperties(dest, props);\n};\nexports.copyProps = copyProps;\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object. The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return currentChain;\n return (0, exports.protoChain)(proto, [...currentChain, proto]);\n};\nexports.protoChain = protoChain;\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains. For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n if (objs.length === 0)\n return undefined;\n let commonProto = undefined;\n const protoChains = objs.map(obj => (0, exports.protoChain)(obj));\n while (protoChains.every(protoChain => protoChain.length > 0)) {\n const protos = protoChains.map(protoChain => protoChain.pop());\n const potentialCommonProto = protos[0];\n if (protos.every(proto => proto === potentialCommonProto))\n commonProto = potentialCommonProto;\n else\n break;\n }\n return commonProto;\n};\nexports.nearestCommonProto = nearestCommonProto;\n/**\n * Creates a new prototype object that is a mixture of the given prototypes. The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object. Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible. However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result. See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n var _a;\n const base = (_a = (0, exports.nearestCommonProto)(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n const mixedProto = Object.create(base);\n // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times. We init the\n // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n // when they will already be accessible via prototype access.\n const visitedProtos = (0, exports.protoChain)(base);\n for (let prototype of ingredients) {\n let protos = (0, exports.protoChain)(prototype);\n // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n for (let i = protos.length - 1; i >= 0; i--) {\n let newProto = protos[i];\n if (visitedProtos.indexOf(newProto) === -1) {\n (0, exports.copyProps)(mixedProto, newProto, ['constructor', ...exclude]);\n visitedProtos.push(newProto);\n }\n }\n }\n mixedProto.constructor = constructor;\n return mixedProto;\n};\nexports.hardMixProtos = hardMixProtos;\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\nexports.unique = unique;\nconst flatten = (arr) => arr.length === 0\n ? []\n : arr.length === 1\n ? arr[0]\n : arr.reduce((a1, a2) => [...a1, ...a2]);\nexports.flatten = flatten;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.softMixProtos = exports.proxyMix = exports.getIngredientWithProp = void 0;\nconst util_1 = require(\"./util\");\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n const protoChains = ingredients.map(ingredient => (0, util_1.protoChain)(ingredient));\n // since we search breadth-first, we need to keep track of our depth in the prototype chains\n let protoDepth = 0;\n // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n // prototype chains has an object at this depth\n let protosAreLeftToSearch = true;\n while (protosAreLeftToSearch) {\n // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n protosAreLeftToSearch = false;\n // scan through the ingredients right to left\n for (let i = ingredients.length - 1; i >= 0; i--) {\n const searchTarget = protoChains[i][protoDepth];\n if (searchTarget !== undefined && searchTarget !== null) {\n // if we find something, this is proof that this horizontal slice potentially more objects to search\n protosAreLeftToSearch = true;\n // eureka, we found it\n if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n return protoChains[i][0];\n }\n }\n }\n protoDepth++;\n }\n return undefined;\n};\nexports.getIngredientWithProp = getIngredientWithProp;\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy. The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain. Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n getPrototypeOf() {\n return prototype;\n },\n setPrototypeOf() {\n throw Error('Cannot set prototype of Proxies created by ts-mixer');\n },\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor((0, exports.getIngredientWithProp)(prop, ingredients) || {}, prop);\n },\n defineProperty() {\n throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n },\n has(_, prop) {\n return (0, exports.getIngredientWithProp)(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n },\n get(_, prop) {\n return ((0, exports.getIngredientWithProp)(prop, ingredients) || prototype)[prop];\n },\n set(_, prop, val) {\n const ingredientWithProp = (0, exports.getIngredientWithProp)(prop, ingredients);\n if (ingredientWithProp === undefined)\n throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n ingredientWithProp[prop] = val;\n return true;\n },\n deleteProperty() {\n throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n },\n ownKeys() {\n return ingredients\n .map(Object.getOwnPropertyNames)\n .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n },\n});\nexports.proxyMix = proxyMix;\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes. The mixing is achieved by\n * proxying all property access to the ingredients. This is not ES5 compatible and less performant. However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => (0, exports.proxyMix)([...ingredients, { constructor }]);\nexports.softMixProtos = softMixProtos;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.settings = void 0;\nexports.settings = {\n initFunction: null,\n staticsStrategy: 'copy',\n prototypeStrategy: 'copy',\n decoratorInheritance: 'deep',\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasMixin = exports.registerMixins = exports.getMixinsForClass = void 0;\nconst util_1 = require(\"./util\");\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nexports.getMixinsForClass = getMixinsForClass;\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nexports.registerMixins = registerMixins;\nconst hasMixin = (instance, mixin) => {\n if (instance instanceof mixin)\n return true;\n const constructor = instance.constructor;\n const visited = new Set();\n let frontier = new Set();\n frontier.add(constructor);\n while (frontier.size > 0) {\n // check if the frontier has the mixin we're looking for. if not, we can say we visited every item in the frontier\n if (frontier.has(mixin))\n return true;\n frontier.forEach((item) => visited.add(item));\n // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n const newFrontier = new Set();\n frontier.forEach((item) => {\n var _a;\n const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : (0, util_1.protoChain)(item.prototype)\n .map((proto) => proto.constructor)\n .filter((item) => item !== null);\n if (itemConstituents)\n itemConstituents.forEach((constituent) => {\n if (!visited.has(constituent) && !frontier.has(constituent))\n newFrontier.add(constituent);\n });\n });\n // we have a new frontier, now search again\n frontier = newFrontier;\n }\n // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n return false;\n};\nexports.hasMixin = hasMixin;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorate = exports.getDecoratorsForClass = exports.directDecoratorSearch = exports.deepDecoratorSearch = void 0;\nconst util_1 = require(\"./util\");\nconst mixin_tracking_1 = require(\"./mixin-tracking\");\nconst mergeObjectsOfDecorators = (o1, o2) => {\n var _a, _b;\n const allKeys = (0, util_1.unique)([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n const mergedObject = {};\n for (let key of allKeys)\n mergedObject[key] = (0, util_1.unique)([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n var _a, _b, _c, _d;\n return ({\n property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n });\n};\nconst mergeDecorators = (d1, d2) => {\n var _a, _b, _c, _d, _e, _f;\n return ({\n class: (0, util_1.unique)([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n var _a;\n const allClasses = new Set();\n const frontier = new Set([...classes]);\n while (frontier.size > 0) {\n for (let clazz of frontier) {\n const protoChainClasses = (0, util_1.protoChain)(clazz.prototype).map(proto => proto.constructor);\n const mixinClasses = (_a = (0, mixin_tracking_1.getMixinsForClass)(clazz)) !== null && _a !== void 0 ? _a : [];\n const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n for (let newClass of newClasses)\n frontier.add(newClass);\n allClasses.add(clazz);\n frontier.delete(clazz);\n }\n }\n return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n const decoratorsForClassChain = findAllConstituentClasses(...classes)\n .map(clazz => decorators.get(clazz))\n .filter(decorators => !!decorators);\n if (decoratorsForClassChain.length == 0)\n return {};\n if (decoratorsForClassChain.length == 1)\n return decoratorsForClassChain[0];\n return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nexports.deepDecoratorSearch = deepDecoratorSearch;\nconst directDecoratorSearch = (...classes) => {\n const classDecorators = classes.map(clazz => (0, exports.getDecoratorsForClass)(clazz));\n if (classDecorators.length === 0)\n return {};\n if (classDecorators.length === 1)\n return classDecorators[0];\n return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nexports.directDecoratorSearch = directDecoratorSearch;\nconst getDecoratorsForClass = (clazz) => {\n let decoratorsForClass = decorators.get(clazz);\n if (!decoratorsForClass) {\n decoratorsForClass = {};\n decorators.set(clazz, decoratorsForClass);\n }\n return decoratorsForClass;\n};\nexports.getDecoratorsForClass = getDecoratorsForClass;\nconst decorateClass = (decorator) => ((clazz) => {\n const decoratorsForClass = (0, exports.getDecoratorsForClass)(clazz);\n let classDecorators = decoratorsForClass.class;\n if (!classDecorators) {\n classDecorators = [];\n decoratorsForClass.class = classDecorators;\n }\n classDecorators.push(decorator);\n return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n var _a, _b, _c;\n const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n const decoratorsForClass = (0, exports.getDecoratorsForClass)(clazz);\n const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n decoratorsForTargetType[decoratorType] = decoratorsForType;\n let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n decoratorsForType[key] = decoratorsForKey;\n // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n decoratorsForKey.push(decorator);\n // @ts-ignore\n return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n if (args.length === 1)\n return decorateClass(decorator)(args[0]);\n return decorateMember(decorator)(...args);\n});\nexports.decorate = decorate;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mix = exports.Mixin = void 0;\nconst proxy_1 = require(\"./proxy\");\nconst settings_1 = require(\"./settings\");\nconst util_1 = require(\"./util\");\nconst decorator_1 = require(\"./decorator\");\nconst mixin_tracking_1 = require(\"./mixin-tracking\");\nfunction Mixin(...constructors) {\n var _a, _b, _c;\n const prototypes = constructors.map(constructor => constructor.prototype);\n // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n // attach it to the mixed class prototype. The reason we do this is because we want the init functions to mix\n // similarly to constructors -- not methods, which simply override each other.\n const initFunctionName = settings_1.settings.initFunction;\n if (initFunctionName !== null) {\n const initFunctions = prototypes\n .map(proto => proto[initFunctionName])\n .filter(func => typeof func === 'function');\n const combinedInitFunction = function (...args) {\n for (let initFunction of initFunctions)\n initFunction.apply(this, args);\n };\n const extraProto = { [initFunctionName]: combinedInitFunction };\n prototypes.push(extraProto);\n }\n function MixedClass(...args) {\n for (const constructor of constructors)\n // @ts-ignore: potentially abstract class\n (0, util_1.copyProps)(this, new constructor(...args));\n if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n this[initFunctionName].apply(this, args);\n }\n MixedClass.prototype = settings_1.settings.prototypeStrategy === 'copy'\n ? (0, util_1.hardMixProtos)(prototypes, MixedClass)\n : (0, proxy_1.softMixProtos)(prototypes, MixedClass);\n Object.setPrototypeOf(MixedClass, settings_1.settings.staticsStrategy === 'copy'\n ? (0, util_1.hardMixProtos)(constructors, null, ['prototype'])\n : (0, proxy_1.proxyMix)(constructors, Function.prototype));\n let DecoratedMixedClass = MixedClass;\n if (settings_1.settings.decoratorInheritance !== 'none') {\n const classDecorators = settings_1.settings.decoratorInheritance === 'deep'\n ? (0, decorator_1.deepDecoratorSearch)(...constructors)\n : (0, decorator_1.directDecoratorSearch)(...constructors);\n for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n const result = decorator(DecoratedMixedClass);\n if (result) {\n DecoratedMixedClass = result;\n }\n }\n applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n }\n (0, mixin_tracking_1.registerMixins)(DecoratedMixedClass, constructors);\n return DecoratedMixedClass;\n}\nexports.Mixin = Mixin;\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n const propDecorators = propAndMethodDecorators.property;\n const methodDecorators = propAndMethodDecorators.method;\n if (propDecorators)\n for (let key in propDecorators)\n for (let decorator of propDecorators[key])\n decorator(target, key);\n if (methodDecorators)\n for (let key in methodDecorators)\n for (let decorator of methodDecorators[key])\n decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function. You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n // @ts-ignore\n const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n Object.defineProperty(mixedClass, 'name', {\n value: decoratedClass.name,\n writable: false,\n });\n return mixedClass;\n};\nexports.mix = mix;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasMixin = exports.decorate = exports.settings = exports.mix = exports.Mixin = void 0;\nvar mixins_1 = require(\"./mixins\");\nObject.defineProperty(exports, \"Mixin\", { enumerable: true, get: function () { return mixins_1.Mixin; } });\nObject.defineProperty(exports, \"mix\", { enumerable: true, get: function () { return mixins_1.mix; } });\nvar settings_1 = require(\"./settings\");\nObject.defineProperty(exports, \"settings\", { enumerable: true, get: function () { return settings_1.settings; } });\nvar decorator_1 = require(\"./decorator\");\nObject.defineProperty(exports, \"decorate\", { enumerable: true, get: function () { return decorator_1.decorate; } });\nvar mixin_tracking_1 = require(\"./mixin-tracking\");\nObject.defineProperty(exports, \"hasMixin\", { enumerable: true, get: function () { return mixin_tracking_1.hasMixin; } });\n", null, null, null, null, null, null, null, null, "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EnumTxVersion = exports.TxVersion = exports.EnumTxType = exports.TxType = exports.EnumNetworks = exports.Networks = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nvar Networks;\n(function (Networks) {\n Networks[Networks[\"mainnet\"] = 104] = \"mainnet\";\n Networks[Networks[\"testnet\"] = 152] = \"testnet\";\n Networks[Networks[\"mijin\"] = 96] = \"mijin\";\n})(Networks || (exports.Networks = Networks = {}));\nexports.EnumNetworks = schema_utils_1.Type.Enum(Networks);\nvar TxType;\n(function (TxType) {\n TxType[TxType[\"TRANSFER\"] = 257] = \"TRANSFER\";\n TxType[TxType[\"COSIGNING\"] = 258] = \"COSIGNING\";\n TxType[TxType[\"IMPORTANCE_TRANSFER\"] = 2049] = \"IMPORTANCE_TRANSFER\";\n TxType[TxType[\"AGGREGATE_MODIFICATION\"] = 4097] = \"AGGREGATE_MODIFICATION\";\n TxType[TxType[\"MULTISIG_SIGNATURE\"] = 4098] = \"MULTISIG_SIGNATURE\";\n TxType[TxType[\"MULTISIG\"] = 4100] = \"MULTISIG\";\n TxType[TxType[\"PROVISION_NAMESPACE\"] = 8193] = \"PROVISION_NAMESPACE\";\n TxType[TxType[\"MOSAIC_CREATION\"] = 16385] = \"MOSAIC_CREATION\";\n TxType[TxType[\"SUPPLY_CHANGE\"] = 16386] = \"SUPPLY_CHANGE\";\n})(TxType || (exports.TxType = TxType = {}));\nexports.EnumTxType = schema_utils_1.Type.Enum(TxType);\nvar TxVersion;\n(function (TxVersion) {\n TxVersion[TxVersion[\"mainnet\"] = 1744830464] = \"mainnet\";\n TxVersion[TxVersion[\"testnet\"] = -1744830464] = \"testnet\";\n TxVersion[TxVersion[\"mijin\"] = 1610612736] = \"mijin\";\n})(TxVersion || (exports.TxVersion = TxVersion = {}));\nexports.EnumTxVersion = schema_utils_1.Type.Enum(TxVersion);\n//# sourceMappingURL=nem.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.REVISION_CHECK_RETRIABLE_ERRORS = exports.HASH_CHECK_RETRIABLE_ERRORS = exports.HASH_CHECK_MAX_ATTEMPTS = void 0;\nexports.HASH_CHECK_MAX_ATTEMPTS = 3;\nexports.HASH_CHECK_RETRIABLE_ERRORS = ['other-error'];\nexports.REVISION_CHECK_RETRIABLE_ERRORS = ['cannot-perform-check-offline', 'other-error'];\n//# sourceMappingURL=firmware.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEFAULT_SORTING_STRATEGY = void 0;\nexports.DEFAULT_SORTING_STRATEGY = 'random';\n//# sourceMappingURL=utxo.js.map", "// GENERATED FILE. DO NOT EDIT.\nvar Long = (function(exports) {\n \"use strict\";\n \n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = void 0;\n \n /**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n // WebAssembly optimizations to do native i64 multiplication and divide\n var wasm = null;\n \n try {\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;\n } catch (e) {// no wasm support :(\n }\n /**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\n \n \n function Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n \n this.high = high | 0;\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n \n this.unsigned = !!unsigned;\n } // The internal representation of a long is the two given signed, 32-bit values.\n // We use 32-bit pieces because these are the size of integers on which\n // Javascript performs bit-operations. For operations like addition and\n // multiplication, we split each number into 16 bit pieces, which can easily be\n // multiplied within Javascript's floating-point representation without overflow\n // or change in sign.\n //\n // In the algorithms below, we frequently reduce the negative case to the\n // positive case by negating the input(s) and then post-processing the result.\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n // a positive number, it overflows back into a negative). Not handling this\n // case would often result in infinite recursion.\n //\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n // methods on which they depend.\n \n /**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\n \n \n Long.prototype.__isLong__;\n Object.defineProperty(Long.prototype, \"__isLong__\", {\n value: true\n });\n /**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\n \n function isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n }\n /**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\n \n \n function ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n }\n /**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\n \n \n Long.isLong = isLong;\n /**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\n \n var INT_CACHE = {};\n /**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\n \n var UINT_CACHE = {};\n /**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n \n if (unsigned) {\n value >>>= 0;\n \n if (cache = 0 <= value && value < 256) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n \n obj = fromBits(value, 0, true);\n if (cache) UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n \n if (cache = -128 <= value && value < 128) {\n cachedObj = INT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n \n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache) INT_CACHE[value] = obj;\n return obj;\n }\n }\n /**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromInt = fromInt;\n /**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromNumber(value, unsigned) {\n if (isNaN(value)) return unsigned ? UZERO : ZERO;\n \n if (unsigned) {\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n }\n \n if (value < 0) return fromNumber(-value, unsigned).neg();\n return fromBits(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned);\n }\n /**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromNumber = fromNumber;\n /**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n }\n /**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromBits = fromBits;\n /**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\n \n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n \n /**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\n \n function fromString(str, unsigned, radix) {\n if (str.length === 0) throw Error('empty string');\n \n if (typeof unsigned === 'number') {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n \n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\") return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError('radix');\n var p;\n if ((p = str.indexOf('-')) > 0) throw Error('interior hyphen');else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n } // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n \n var radixToPower = fromNumber(pow_dbl(radix, 8));\n var result = ZERO;\n \n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n \n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n \n result.unsigned = unsigned;\n return result;\n }\n /**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromString = fromString;\n /**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromValue(val, unsigned) {\n if (typeof val === 'number') return fromNumber(val, unsigned);\n if (typeof val === 'string') return fromString(val, unsigned); // Throws for non-objects, converts non-instanceof Long:\n \n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n }\n /**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\n \n \n Long.fromValue = fromValue; // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n // no runtime penalty for these.\n \n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_16_DBL = 1 << 16;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_24_DBL = 1 << 24;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n /**\n * @type {!Long}\n * @const\n * @inner\n */\n \n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n /**\n * @type {!Long}\n * @inner\n */\n \n var ZERO = fromInt(0);\n /**\n * Signed zero.\n * @type {!Long}\n */\n \n Long.ZERO = ZERO;\n /**\n * @type {!Long}\n * @inner\n */\n \n var UZERO = fromInt(0, true);\n /**\n * Unsigned zero.\n * @type {!Long}\n */\n \n Long.UZERO = UZERO;\n /**\n * @type {!Long}\n * @inner\n */\n \n var ONE = fromInt(1);\n /**\n * Signed one.\n * @type {!Long}\n */\n \n Long.ONE = ONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var UONE = fromInt(1, true);\n /**\n * Unsigned one.\n * @type {!Long}\n */\n \n Long.UONE = UONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var NEG_ONE = fromInt(-1);\n /**\n * Signed negative one.\n * @type {!Long}\n */\n \n Long.NEG_ONE = NEG_ONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n /**\n * Maximum signed value.\n * @type {!Long}\n */\n \n Long.MAX_VALUE = MAX_VALUE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n /**\n * Maximum unsigned value.\n * @type {!Long}\n */\n \n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n /**\n * Minimum signed value.\n * @type {!Long}\n */\n \n Long.MIN_VALUE = MIN_VALUE;\n /**\n * @alias Long.prototype\n * @inner\n */\n \n var LongPrototype = Long.prototype;\n /**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\n \n LongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n };\n /**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\n \n \n LongPrototype.toNumber = function toNumber() {\n if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n };\n /**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\n \n \n LongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError('radix');\n if (this.isZero()) return '0';\n \n if (this.isNegative()) {\n // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else return '-' + this.neg().toString(radix);\n } // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n \n \n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = '';\n \n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero()) return digits + result;else {\n while (digits.length < 6) digits = '0' + digits;\n \n result = '' + digits + result;\n }\n }\n };\n /**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\n \n \n LongPrototype.getHighBits = function getHighBits() {\n return this.high;\n };\n /**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\n \n \n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n };\n /**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\n \n \n LongPrototype.getLowBits = function getLowBits() {\n return this.low;\n };\n /**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\n \n \n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n };\n /**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\n \n \n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative()) // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n \n for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break;\n \n return this.high != 0 ? bit + 33 : bit + 1;\n };\n /**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n };\n /**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\n \n \n LongPrototype.eqz = LongPrototype.isZero;\n /**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\n \n LongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n };\n /**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n };\n /**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n };\n /**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n };\n /**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.equals = function equals(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false;\n return this.high === other.high && this.low === other.low;\n };\n /**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.eq = LongPrototype.equals;\n /**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.notEquals = function notEquals(other) {\n return !this.eq(\n /* validates */\n other);\n };\n /**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.neq = LongPrototype.notEquals;\n /**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.ne = LongPrototype.notEquals;\n /**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.lessThan = function lessThan(other) {\n return this.comp(\n /* validates */\n other) < 0;\n };\n /**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.lt = LongPrototype.lessThan;\n /**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(\n /* validates */\n other) <= 0;\n };\n /**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.lte = LongPrototype.lessThanOrEqual;\n /**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.le = LongPrototype.lessThanOrEqual;\n /**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(\n /* validates */\n other) > 0;\n };\n /**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.gt = LongPrototype.greaterThan;\n /**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(\n /* validates */\n other) >= 0;\n };\n /**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\n /**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.ge = LongPrototype.greaterThanOrEqual;\n /**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n \n LongPrototype.compare = function compare(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.eq(other)) return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) return -1;\n if (!thisNeg && otherNeg) return 1; // At this point the sign bits are the same\n \n if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; // Both are positive if at least one is unsigned\n \n return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1;\n };\n /**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n \n \n LongPrototype.comp = LongPrototype.compare;\n /**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\n \n LongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n return this.not().add(ONE);\n };\n /**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\n \n \n LongPrototype.neg = LongPrototype.negate;\n /**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\n \n LongPrototype.add = function add(addend) {\n if (!isLong(addend)) addend = fromValue(addend); // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n \n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xFFFF;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xFFFF;\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);\n };\n /**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n \n \n LongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n };\n /**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n \n \n LongPrototype.sub = LongPrototype.subtract;\n /**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n \n LongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero()) return this;\n if (!isLong(multiplier)) multiplier = fromValue(multiplier); // use wasm support if present\n \n if (wasm) {\n var low = wasm[\"mul\"](this.low, this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n \n if (this.isNegative()) {\n if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());else return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); // If both longs are small, use float multiplication\n \n \n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n \n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xFFFF;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xFFFF;\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);\n };\n /**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n \n \n LongPrototype.mul = LongPrototype.multiply;\n /**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n \n LongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n if (divisor.isZero()) throw Error('division by zero'); // use wasm support if present\n \n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (!this.unsigned && this.high === -0x80000000 && divisor.low === -1 && divisor.high === -1) {\n // be consistent with non-wasm code path\n return this;\n }\n \n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(this.low, this.high, divisor.low, divisor.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n \n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE)) return ONE;else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n \n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n \n if (this.isNegative()) {\n if (divisor.isNegative()) return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n \n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned) divisor = divisor.toUnsigned();\n if (divisor.gt(this)) return UZERO;\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n } // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n \n \n rem = this;\n \n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n \n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n \n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n } // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n \n \n if (approxRes.isZero()) approxRes = ONE;\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n \n return res;\n };\n /**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n \n \n LongPrototype.div = LongPrototype.divide;\n /**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n LongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor); // use wasm support if present\n \n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(this.low, this.high, divisor.low, divisor.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n return this.sub(this.div(divisor).mul(divisor));\n };\n /**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n \n LongPrototype.mod = LongPrototype.modulo;\n /**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n LongPrototype.rem = LongPrototype.modulo;\n /**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\n \n LongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n };\n /**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n };\n /**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.clz = LongPrototype.countLeadingZeros;\n /**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\n \n LongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n };\n /**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.ctz = LongPrototype.countTrailingZeros;\n /**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n LongPrototype.and = function and(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n };\n /**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n \n LongPrototype.or = function or(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n };\n /**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n \n LongPrototype.xor = function xor(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n };\n /**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;else if (numBits < 32) return fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned);else return fromBits(0, this.low << numBits - 32, this.unsigned);\n };\n /**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shl = LongPrototype.shiftLeft;\n /**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;else if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned);else return fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned);\n };\n /**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shr = LongPrototype.shiftRight;\n /**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned);\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> numBits - 32, 0, this.unsigned);\n };\n /**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\n /**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n /**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n LongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n \n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(this.low << numBits | this.high >>> b, this.high << numBits | this.low >>> b, this.unsigned);\n }\n \n numBits -= 32;\n b = 32 - numBits;\n return fromBits(this.high << numBits | this.low >>> b, this.low << numBits | this.high >>> b, this.unsigned);\n };\n /**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n \n LongPrototype.rotl = LongPrototype.rotateLeft;\n /**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n LongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n \n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(this.high << b | this.low >>> numBits, this.low << b | this.high >>> numBits, this.unsigned);\n }\n \n numBits -= 32;\n b = 32 - numBits;\n return fromBits(this.low << b | this.high >>> numBits, this.high << b | this.low >>> numBits, this.unsigned);\n };\n /**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n \n LongPrototype.rotr = LongPrototype.rotateRight;\n /**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\n \n LongPrototype.toSigned = function toSigned() {\n if (!this.unsigned) return this;\n return fromBits(this.low, this.high, false);\n };\n /**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\n \n \n LongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned) return this;\n return fromBits(this.low, this.high, true);\n };\n /**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.} Byte representation\n */\n \n \n LongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n };\n /**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Little endian byte representation\n */\n \n \n LongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [lo & 0xff, lo >>> 8 & 0xff, lo >>> 16 & 0xff, lo >>> 24, hi & 0xff, hi >>> 8 & 0xff, hi >>> 16 & 0xff, hi >>> 24];\n };\n /**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Big endian byte representation\n */\n \n \n LongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [hi >>> 24, hi >>> 16 & 0xff, hi >>> 8 & 0xff, hi & 0xff, lo >>> 24, lo >>> 16 & 0xff, lo >>> 8 & 0xff, lo & 0xff];\n };\n /**\n * Creates a Long from its byte representation.\n * @param {!Array.} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\n };\n /**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, unsigned);\n };\n /**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], unsigned);\n };\n \n var _default = Long;\n exports.default = _default;\n return \"default\" in exports ? exports.default : exports;\n})({});\nif (typeof define === 'function' && define.amd) define([], function() { return Long; });\nelse if (typeof module === 'object' && typeof exports === 'object') module.exports = Long;\n", "\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n", "\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n", "\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n", "\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n", "\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n", "\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n", "\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(\"./util\");\n\nvar s = [\n \"double\", // 0\n \"float\", // 1\n \"int32\", // 2\n \"uint32\", // 3\n \"sint32\", // 4\n \"fixed32\", // 5\n \"sfixed32\", // 6\n \"int64\", // 7\n \"uint64\", // 8\n \"sint64\", // 9\n \"fixed64\", // 10\n \"sfixed64\", // 11\n \"bool\", // 12\n \"string\", // 13\n \"bytes\" // 14\n];\n\nfunction bake(values, offset) {\n var i = 0, o = {};\n offset |= 0;\n while (i < values.length) o[s[i + offset]] = values[i++];\n return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2,\n /* bytes */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n /* double */ 0,\n /* float */ 0,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 0,\n /* sfixed32 */ 0,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 0,\n /* sfixed64 */ 0,\n /* bool */ false,\n /* string */ \"\",\n /* bytes */ util.emptyArray,\n /* message */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0\n]);\n", "\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n if (util.isObject(rule)) {\n comment = extend;\n options = rule;\n rule = extend = undefined;\n } else if (util.isObject(extend)) {\n comment = options;\n options = extend;\n extend = undefined;\n }\n\n ReflectionObject.call(this, name, options);\n\n if (!util.isInteger(id) || id < 0)\n throw TypeError(\"id must be a non-negative integer\");\n\n if (!util.isString(type))\n throw TypeError(\"type must be a string\");\n\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n throw TypeError(\"rule must be a string rule\");\n\n if (extend !== undefined && !util.isString(extend))\n throw TypeError(\"extend must be a string\");\n\n /**\n * Field rule, if any.\n * @type {string|undefined}\n */\n if (rule === \"proto3_optional\") {\n rule = \"optional\";\n }\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n /**\n * Field type.\n * @type {string}\n */\n this.type = type; // toJSON\n\n /**\n * Unique field id.\n * @type {number}\n */\n this.id = id; // toJSON, marker\n\n /**\n * Extended type if different from parent.\n * @type {string|undefined}\n */\n this.extend = extend || undefined; // toJSON\n\n /**\n * Whether this field is required.\n * @type {boolean}\n */\n this.required = rule === \"required\";\n\n /**\n * Whether this field is optional.\n * @type {boolean}\n */\n this.optional = !this.required;\n\n /**\n * Whether this field is repeated.\n * @type {boolean}\n */\n this.repeated = rule === \"repeated\";\n\n /**\n * Whether this field is a map or not.\n * @type {boolean}\n */\n this.map = false;\n\n /**\n * Message this field belongs to.\n * @type {Type|null}\n */\n this.message = null;\n\n /**\n * OneOf this field belongs to, if any,\n * @type {OneOf|null}\n */\n this.partOf = null;\n\n /**\n * The field type's default value.\n * @type {*}\n */\n this.typeDefault = null;\n\n /**\n * The field's default value on prototypes.\n * @type {*}\n */\n this.defaultValue = null;\n\n /**\n * Whether this field's value should be treated as a long.\n * @type {boolean}\n */\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n /**\n * Whether this field's value is a buffer.\n * @type {boolean}\n */\n this.bytes = type === \"bytes\";\n\n /**\n * Resolved type if not a basic type.\n * @type {Type|Enum|null}\n */\n this.resolvedType = null;\n\n /**\n * Sister-field within the extended type if a declaring extension field.\n * @type {Field|null}\n */\n this.extensionField = null;\n\n /**\n * Sister-field within the declaring namespace if an extended field.\n * @type {Field|null}\n */\n this.declaringField = null;\n\n /**\n * Internally remembers whether this field is packed.\n * @type {boolean|null}\n * @private\n */\n this._packed = null;\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n get: function() {\n // defaults to packed=true if not explicity set to false\n if (this._packed === null)\n this._packed = this.getOption(\"packed\") !== false;\n return this._packed;\n }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (name === \"packed\") // clear cached before setting\n this._packed = null;\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n if (this.resolved)\n return this;\n\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n if (this.resolvedType instanceof Type)\n this.typeDefault = null;\n else // instanceof Enum\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n } else if (this.options && this.options.proto3_optional) {\n // proto3 scalar value marked optional; should default to null\n this.typeDefault = null;\n }\n\n // use explicitly set default value if present\n if (this.options && this.options[\"default\"] != null) {\n this.typeDefault = this.options[\"default\"];\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n this.typeDefault = this.resolvedType.values[this.typeDefault];\n }\n\n // remove unnecessary options\n if (this.options) {\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n delete this.options.packed;\n if (!Object.keys(this.options).length)\n this.options = undefined;\n }\n\n // convert to internal data type if necesssary\n if (this.long) {\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n /* istanbul ignore else */\n if (Object.freeze)\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\n var buf;\n if (util.base64.test(this.typeDefault))\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n else\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n this.typeDefault = buf;\n }\n\n // take special care of maps and repeated fields\n if (this.map)\n this.defaultValue = util.emptyObject;\n else if (this.repeated)\n this.defaultValue = util.emptyArray;\n else\n this.defaultValue = this.typeDefault;\n\n // ensure proper value on prototype\n if (this.parent instanceof Type)\n this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n // submessage: decorate the submessage and use its name as the type\n if (typeof fieldType === \"function\")\n fieldType = util.decorateType(fieldType).name;\n\n // enum reference: create a reflected copy of the enum and keep reuseing it\n else if (fieldType && typeof fieldType === \"object\")\n fieldType = util.decorateEnum(fieldType).name;\n\n return function fieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message\n * @variation 2\n */\n// like Field.d but without a default value\n\n// Sets up cyclic dependencies (called in index-light)\nField._configure = function configure(Type_) {\n Type = Type_;\n};\n", "\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.} [fieldNames] Field names\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n if (!Array.isArray(fieldNames)) {\n options = fieldNames;\n fieldNames = undefined;\n }\n ReflectionObject.call(this, name, options);\n\n /* istanbul ignore if */\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n throw TypeError(\"fieldNames must be an Array\");\n\n /**\n * Field names that belong to this oneof.\n * @type {string[]}\n */\n this.oneof = fieldNames || []; // toJSON, marker\n\n /**\n * Fields that belong to this oneof as an array for iteration.\n * @type {Field[]}\n * @readonly\n */\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.} oneof Oneof field names\n * @property {Object.} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"oneof\" , this.oneof,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n if (oneof.parent)\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\n if (!oneof.fieldsArray[i].parent)\n oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n if (field.parent && field.parent !== this.parent)\n field.parent.remove(field);\n this.oneof.push(field.name);\n this.fieldsArray.push(field);\n field.partOf = this; // field.parent remains null\n addFieldsToParent(this);\n return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n var index = this.fieldsArray.indexOf(field);\n\n /* istanbul ignore if */\n if (index < 0)\n throw Error(field + \" is not a member of \" + this);\n\n this.fieldsArray.splice(index, 1);\n index = this.oneof.indexOf(field.name);\n\n /* istanbul ignore else */\n if (index > -1) // theoretical\n this.oneof.splice(index, 1);\n\n field.partOf = null;\n return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n ReflectionObject.prototype.onAdd.call(this, parent);\n var self = this;\n // Collect present fields\n for (var i = 0; i < this.oneof.length; ++i) {\n var field = parent.get(this.oneof[i]);\n if (field && !field.partOf) {\n field.partOf = self;\n self.fieldsArray.push(field);\n }\n }\n // Add not yet present fields\n addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\n if ((field = this.fieldsArray[i]).parent)\n field.parent.remove(field);\n ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n var fieldNames = new Array(arguments.length),\n index = 0;\n while (index < arguments.length)\n fieldNames[index] = arguments[index++];\n return function oneOfDecorator(prototype, oneofName) {\n util.decorateType(prototype.constructor)\n .add(new OneOf(oneofName, fieldNames));\n Object.defineProperty(prototype, oneofName, {\n get: util.oneOfGetter(fieldNames),\n set: util.oneOfSetter(fieldNames)\n });\n };\n};\n", "\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\"),\n OneOf = require(\"./oneof\");\n\nvar Type, // cyclic\n Service,\n Enum;\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n if (!(array && array.length))\n return undefined;\n var obj = {};\n for (var i = 0; i < array.length; ++i)\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\n return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\n return true;\n return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (reserved[i] === name)\n return true;\n return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n ReflectionObject.call(this, name, options);\n\n /**\n * Nested objects by name.\n * @type {Object.|undefined}\n */\n this.nested = undefined; // toJSON\n\n /**\n * Cached nested objects as an array.\n * @type {ReflectionObject[]|null}\n * @private\n */\n this._nestedArray = null;\n}\n\nfunction clearCache(namespace) {\n namespace._nestedArray = null;\n return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n get: function() {\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.} [options] Namespace options\n * @property {Object.} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf}\n */\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n return util.toObject([\n \"options\" , this.options,\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\n ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n var ns = this;\n /* istanbul ignore else */\n if (nestedJson) {\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n nested = nestedJson[names[i]];\n ns.add( // most to least likely\n ( nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : nested.id !== undefined\n ? Field.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n }\n return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n return this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n if (this.nested && this.nested[name] instanceof Enum)\n return this.nested[name].values;\n throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace))\n throw TypeError(\"object must be a valid nested object\");\n\n if (!this.nested)\n this.nested = {};\n else {\n var prev = this.get(object.name);\n if (prev) {\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n // replace plain namespace but keep existing nested elements and options\n var nested = prev.nestedArray;\n for (var i = 0; i < nested.length; ++i)\n object.add(nested[i]);\n this.remove(prev);\n if (!this.nested)\n this.nested = {};\n object.setOptions(prev.options, true);\n\n } else\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n }\n }\n this.nested[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n if (!(object instanceof ReflectionObject))\n throw TypeError(\"object must be a ReflectionObject\");\n if (object.parent !== this)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.nested[object.name];\n if (!Object.keys(this.nested).length)\n this.nested = undefined;\n\n object.onRemove(this);\n return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n if (util.isString(path))\n path = path.split(\".\");\n else if (!Array.isArray(path))\n throw TypeError(\"illegal path\");\n if (path && path.length && path[0] === \"\")\n throw Error(\"path must be relative\");\n\n var ptr = this;\n while (path.length > 0) {\n var part = path.shift();\n if (ptr.nested && ptr.nested[part]) {\n ptr = ptr.nested[part];\n if (!(ptr instanceof Namespace))\n throw Error(\"path conflicts with non-namespace objects\");\n } else\n ptr.add(ptr = new Namespace(part));\n }\n if (json)\n ptr.addJSON(json);\n return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n var nested = this.nestedArray, i = 0;\n while (i < nested.length)\n if (nested[i] instanceof Namespace)\n nested[i++].resolveAll();\n else\n nested[i++].resolve();\n return this.resolve();\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n\n /* istanbul ignore next */\n if (typeof filterTypes === \"boolean\") {\n parentAlreadyChecked = filterTypes;\n filterTypes = undefined;\n } else if (filterTypes && !Array.isArray(filterTypes))\n filterTypes = [ filterTypes ];\n\n if (util.isString(path) && path.length) {\n if (path === \".\")\n return this.root;\n path = path.split(\".\");\n } else if (!path.length)\n return this;\n\n // Start at root if path is absolute\n if (path[0] === \"\")\n return this.root.lookup(path.slice(1), filterTypes);\n\n // Test if the first part matches any nested object, and if so, traverse if path contains more\n var found = this.get(path[0]);\n if (found) {\n if (path.length === 1) {\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\n return found;\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\n return found;\n\n // Otherwise try each nested namespace\n } else\n for (var i = 0; i < this.nestedArray.length; ++i)\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\n return found;\n\n // If there hasn't been a match, try again at the parent\n if (this.parent === null || parentAlreadyChecked)\n return null;\n return this.parent.lookup(path, filterTypes);\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n var found = this.lookup(path, [ Type ]);\n if (!found)\n throw Error(\"no such type: \" + path);\n return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n var found = this.lookup(path, [ Enum ]);\n if (!found)\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n var found = this.lookup(path, [ Type, Enum ]);\n if (!found)\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n var found = this.lookup(path, [ Service ]);\n if (!found)\n throw Error(\"no such Service '\" + path + \"' in \" + this);\n return found;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nNamespace._configure = function(Type_, Service_, Enum_) {\n Type = Type_;\n Service = Service_;\n Enum = Enum_;\n};\n", "\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(\"./field\");\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n /* istanbul ignore if */\n if (!util.isString(keyType))\n throw TypeError(\"keyType must be a string\");\n\n /**\n * Key type.\n * @type {string}\n */\n this.keyType = keyType; // toJSON, marker\n\n /**\n * Resolved key type if not a basic type.\n * @type {ReflectionObject|null}\n */\n this.resolvedKeyType = null;\n\n // Overrides Field#map\n this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"keyType\" , this.keyType,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n if (types.mapKey[this.keyType] === undefined)\n throw Error(\"invalid key type: \" + this.keyType);\n\n return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n // submessage value: decorate the submessage and use its name as the type\n if (typeof fieldValueType === \"function\")\n fieldValueType = util.decorateType(fieldValueType).name;\n\n // enum reference value: create a reflected copy of the enum and keep reuseing it\n else if (fieldValueType && typeof fieldValueType === \"object\")\n fieldValueType = util.decorateEnum(fieldValueType).name;\n\n return function mapFieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n };\n};\n", "\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(\"./util\");\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this method\n * @param {Object.} [parsedOptions] Declared options, properly parsed into an object\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\n\n /* istanbul ignore next */\n if (util.isObject(requestStream)) {\n options = requestStream;\n requestStream = responseStream = undefined;\n } else if (util.isObject(responseStream)) {\n options = responseStream;\n responseStream = undefined;\n }\n\n /* istanbul ignore if */\n if (!(type === undefined || util.isString(type)))\n throw TypeError(\"type must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(requestType))\n throw TypeError(\"requestType must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(responseType))\n throw TypeError(\"responseType must be a string\");\n\n ReflectionObject.call(this, name, options);\n\n /**\n * Method type.\n * @type {string}\n */\n this.type = type || \"rpc\"; // toJSON\n\n /**\n * Request type.\n * @type {string}\n */\n this.requestType = requestType; // toJSON, marker\n\n /**\n * Whether requests are streamed or not.\n * @type {boolean|undefined}\n */\n this.requestStream = requestStream ? true : undefined; // toJSON\n\n /**\n * Response type.\n * @type {string}\n */\n this.responseType = responseType; // toJSON\n\n /**\n * Whether responses are streamed or not.\n * @type {boolean|undefined}\n */\n this.responseStream = responseStream ? true : undefined; // toJSON\n\n /**\n * Resolved request type.\n * @type {Type|null}\n */\n this.resolvedRequestType = null;\n\n /**\n * Resolved response type.\n * @type {Type|null}\n */\n this.resolvedResponseType = null;\n\n /**\n * Comment for this method\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Options properly parsed into an object\n */\n this.parsedOptions = parsedOptions;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.} [options] Method options\n * @property {string} comment Method comments\n * @property {Object.} [parsedOptions] Method options properly parsed into an object\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n \"requestType\" , this.requestType,\n \"requestStream\" , this.requestStream,\n \"responseType\" , this.responseType,\n \"responseStream\" , this.responseStream,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined,\n \"parsedOptions\" , this.parsedOptions,\n ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n /* istanbul ignore if */\n if (this.resolved)\n return this;\n\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n", "\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(\"./method\"),\n util = require(\"./util\"),\n rpc = require(\"./rpc\");\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Service methods.\n * @type {Object.}\n */\n this.methods = {}; // toJSON, marker\n\n /**\n * Cached methods as an array.\n * @type {Method[]|null}\n * @private\n */\n this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n var service = new Service(name, json.options);\n /* istanbul ignore else */\n if (json.methods)\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n if (json.nested)\n service.addJSON(json.nested);\n service.comment = json.comment;\n return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n get: function() {\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n }\n});\n\nfunction clearCache(service) {\n service._methodsArray = null;\n return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n return this.methods[name]\n || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n var methods = this.methodsArray;\n for (var i = 0; i < methods.length; ++i)\n methods[i].resolve();\n return Namespace.prototype.resolve.call(this);\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n /* istanbul ignore if */\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Method) {\n this.methods[object.name] = object;\n object.parent = this;\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n if (object instanceof Method) {\n\n /* istanbul ignore if */\n if (this.methods[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.methods[object.name];\n object.parent = null;\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n m: method,\n q: method.resolvedRequestType.ctor,\n s: method.resolvedResponseType.ctor\n });\n }\n return rpcService;\n};\n", "\"use strict\";\nmodule.exports = Message;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties} [properties] Properties to set\n * @template T extends object = object\n */\nfunction Message(properties) {\n // not used internally\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.create = function create(properties) {\n return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encode = function encode(message, writer) {\n return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decode = function decode(reader) {\n return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object\n * @returns {T} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.fromObject = function fromObject(object) {\n return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @template T extends Message\n * @this Constructor\n */\nMessage.toObject = function toObject(message, options) {\n return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/", "\"use strict\";\nmodule.exports = decoder;\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nfunction missing(field) {\n return \"missing required '\" + field.name + \"'\";\n}\n\n/**\n * Generates a decoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction decoder(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"r\", \"l\"], mtype.name + \"$decode\")\n (\"if(!(r instanceof Reader))\")\n (\"r=Reader.create(r)\")\n (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k,value\" : \"\"))\n (\"while(r.pos>>3){\");\n\n var i = 0;\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n ref = \"m\" + util.safeProp(field.name); gen\n (\"case %i: {\", field.id);\n\n // Map fields\n if (field.map) { gen\n (\"if(%s===util.emptyObject)\", ref)\n (\"%s={}\", ref)\n (\"var c2 = r.uint32()+r.pos\");\n\n if (types.defaults[field.keyType] !== undefined) gen\n (\"k=%j\", types.defaults[field.keyType]);\n else gen\n (\"k=null\");\n\n if (types.defaults[type] !== undefined) gen\n (\"value=%j\", types.defaults[type]);\n else gen\n (\"value=null\");\n\n gen\n (\"while(r.pos>>3){\")\n (\"case 1: k=r.%s(); break\", field.keyType)\n (\"case 2:\");\n\n if (types.basic[type] === undefined) gen\n (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\n else gen\n (\"value=r.%s()\", type);\n\n gen\n (\"break\")\n (\"default:\")\n (\"r.skipType(tag2&7)\")\n (\"break\")\n (\"}\")\n (\"}\");\n\n if (types.long[field.keyType] !== undefined) gen\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\n else gen\n (\"%s[k]=value\", ref);\n\n // Repeated fields\n } else if (field.repeated) { gen\n\n (\"if(!(%s&&%s.length))\", ref, ref)\n (\"%s=[]\", ref);\n\n // Packable (always check for forward and backward compatiblity)\n if (types.packed[type] !== undefined) gen\n (\"if((t&7)===2){\")\n (\"var c2=r.uint32()+r.pos\")\n (\"while(r.pos>>0\", prop, prop);\n break;\n case \"int32\":\n case \"sint32\":\n case \"sfixed32\": gen\n (\"m%s=d%s|0\", prop, prop);\n break;\n case \"uint64\":\n isUnsigned = true;\n // eslint-disable-next-line no-fallthrough\n case \"int64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(util.Long)\")\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\n (\"m%s=parseInt(d%s,10)\", prop, prop)\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\n (\"m%s=d%s\", prop, prop)\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n break;\n case \"bytes\": gen\n (\"if(typeof d%s===\\\"string\\\")\", prop)\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n (\"else if(d%s.length >= 0)\", prop)\n (\"m%s=d%s\", prop, prop);\n break;\n case \"string\": gen\n (\"m%s=String(d%s)\", prop, prop);\n break;\n case \"bool\": gen\n (\"m%s=Boolean(d%s)\", prop, prop);\n break;\n /* default: gen\n (\"m%s=d%s\", prop, prop);\n break; */\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray;\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n (\"if(d instanceof this.ctor)\")\n (\"return d\");\n if (!fields.length) return gen\n (\"return new this.ctor\");\n gen\n (\"var m=new this.ctor\");\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n prop = util.safeProp(field.name);\n\n // Map fields\n if (field.map) { gen\n (\"if(d%s){\", prop)\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s={}\", prop)\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n break;\n case \"bytes\": gen\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n break;\n default: gen\n (\"d%s=m%s\", prop, prop);\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n if (!fields.length)\n return util.codegen()(\"return {}\");\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n (\"if(!o)\")\n (\"o={}\")\n (\"var d={}\");\n\n var repeatedFields = [],\n mapFields = [],\n normalFields = [],\n i = 0;\n for (; i < fields.length; ++i)\n if (!fields[i].partOf)\n ( fields[i].resolve().repeated ? repeatedFields\n : fields[i].map ? mapFields\n : normalFields).push(fields[i]);\n\n if (repeatedFields.length) { gen\n (\"if(o.arrays||o.defaults){\");\n for (i = 0; i < repeatedFields.length; ++i) gen\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n gen\n (\"}\");\n }\n\n if (mapFields.length) { gen\n (\"if(o.objects||o.defaults){\");\n for (i = 0; i < mapFields.length; ++i) gen\n (\"d%s={}\", util.safeProp(mapFields[i].name));\n gen\n (\"}\");\n }\n\n if (normalFields.length) { gen\n (\"if(o.defaults){\");\n for (i = 0; i < normalFields.length; ++i) {\n var field = normalFields[i],\n prop = util.safeProp(field.name);\n if (field.resolvedType instanceof Enum) gen\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n else if (field.long) gen\n (\"if(util.Long){\")\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n (\"}else\")\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n else if (field.bytes) {\n var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\n gen\n (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\n (\"else{\")\n (\"d%s=%s\", prop, arrayDefault)\n (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\n (\"}\");\n } else gen\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n } gen\n (\"}\");\n }\n var hasKs2 = false;\n for (i = 0; i < fields.length; ++i) {\n var field = fields[i],\n index = mtype._fieldsArray.indexOf(field),\n prop = util.safeProp(field.name);\n if (field.map) {\n if (!hasKs2) { hasKs2 = true; gen\n (\"var ks2\");\n } gen\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n (\"d%s={}\", prop)\n (\"for(var j=0;j}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(\"./message\");\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n fromObject: function(object) {\n\n // unwrap value type if mapped\n if (object && object[\"@type\"]) {\n // Only use fully qualified type name after the last '/'\n var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type) {\n // type_url does not accept leading \".\"\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\n object[\"@type\"].slice(1) : object[\"@type\"];\n // type_url prefix is optional, but path seperator is required\n if (type_url.indexOf(\"/\") === -1) {\n type_url = \"/\" + type_url;\n }\n return this.create({\n type_url: type_url,\n value: type.encode(type.fromObject(object)).finish()\n });\n }\n }\n\n return this.fromObject(object);\n },\n\n toObject: function(message, options) {\n\n // Default prefix\n var googleApi = \"type.googleapis.com/\";\n var prefix = \"\";\n var name = \"\";\n\n // decode value if requested and unmapped\n if (options && options.json && message.type_url && message.value) {\n // Only use fully qualified type name after the last '/'\n name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n // Separate the prefix used\n prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type)\n message = type.decode(message.value);\n }\n\n // wrap value if unmapped\n if (!(message instanceof this.ctor) && message instanceof Message) {\n var object = message.$type.toObject(message, options);\n var messageName = message.$type.fullName[0] === \".\" ?\n message.$type.fullName.slice(1) : message.$type.fullName;\n // Default to type.googleapis.com prefix if no prefix is used\n if (prefix === \"\") {\n prefix = googleApi;\n }\n name = prefix + messageName;\n object[\"@type\"] = name;\n return object;\n }\n\n return this.toObject(message, options);\n }\n};\n", "\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n Service = require(\"./service\"),\n Message = require(\"./message\"),\n Reader = require(\"./reader\"),\n Writer = require(\"./writer\"),\n util = require(\"./util\"),\n encoder = require(\"./encoder\"),\n decoder = require(\"./decoder\"),\n verifier = require(\"./verifier\"),\n converter = require(\"./converter\"),\n wrappers = require(\"./wrappers\");\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.} [options] Declared options\n */\nfunction Type(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Message fields.\n * @type {Object.}\n */\n this.fields = {}; // toJSON, marker\n\n /**\n * Oneofs declared within this namespace, if any.\n * @type {Object.}\n */\n this.oneofs = undefined; // toJSON\n\n /**\n * Extension ranges, if any.\n * @type {number[][]}\n */\n this.extensions = undefined; // toJSON\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n /*?\n * Whether this type is a legacy group.\n * @type {boolean|undefined}\n */\n this.group = undefined; // toJSON\n\n /**\n * Cached fields by id.\n * @type {Object.|null}\n * @private\n */\n this._fieldsById = null;\n\n /**\n * Cached fields as an array.\n * @type {Field[]|null}\n * @private\n */\n this._fieldsArray = null;\n\n /**\n * Cached oneofs as an array.\n * @type {OneOf[]|null}\n * @private\n */\n this._oneofsArray = null;\n\n /**\n * Cached constructor.\n * @type {Constructor<{}>}\n * @private\n */\n this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n /**\n * Message fields by id.\n * @name Type#fieldsById\n * @type {Object.}\n * @readonly\n */\n fieldsById: {\n get: function() {\n\n /* istanbul ignore if */\n if (this._fieldsById)\n return this._fieldsById;\n\n this._fieldsById = {};\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n var field = this.fields[names[i]],\n id = field.id;\n\n /* istanbul ignore if */\n if (this._fieldsById[id])\n throw Error(\"duplicate id \" + id + \" in \" + this);\n\n this._fieldsById[id] = field;\n }\n return this._fieldsById;\n }\n },\n\n /**\n * Fields of this message as an array for iteration.\n * @name Type#fieldsArray\n * @type {Field[]}\n * @readonly\n */\n fieldsArray: {\n get: function() {\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n }\n },\n\n /**\n * Oneofs of this message as an array for iteration.\n * @name Type#oneofsArray\n * @type {OneOf[]}\n * @readonly\n */\n oneofsArray: {\n get: function() {\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n }\n },\n\n /**\n * The registered constructor, if any registered, otherwise a generic constructor.\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n * @name Type#ctor\n * @type {Constructor<{}>}\n */\n ctor: {\n get: function() {\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\n },\n set: function(ctor) {\n\n // Ensure proper prototype\n var prototype = ctor.prototype;\n if (!(prototype instanceof Message)) {\n (ctor.prototype = new Message()).constructor = ctor;\n util.merge(ctor.prototype, prototype);\n }\n\n // Classes and messages reference their reflected type\n ctor.$type = ctor.prototype.$type = this;\n\n // Mix in static methods\n util.merge(ctor, Message, true);\n\n this._ctor = ctor;\n\n // Messages have non-enumerable default values on their prototype\n var i = 0;\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\n this._fieldsArray[i].resolve(); // ensures a proper value\n\n // Messages have non-enumerable getters and setters for each virtual oneof field\n var ctorProperties = {};\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n ctorProperties[this._oneofsArray[i].resolve().name] = {\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\n };\n if (i)\n Object.defineProperties(ctor.prototype, ctorProperties);\n }\n }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"p\"], mtype.name);\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n if ((field = mtype._fieldsArray[i]).map) gen\n (\"this%s={}\", util.safeProp(field.name));\n else if (field.repeated) gen\n (\"this%s=[]\", util.safeProp(field.name));\n return gen\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\n * @property {Object.} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {Array.} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n var type = new Type(name, json.options);\n type.extensions = json.extensions;\n type.reserved = json.reserved;\n var names = Object.keys(json.fields),\n i = 0;\n for (; i < names.length; ++i)\n type.add(\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\n ? MapField.fromJSON\n : Field.fromJSON )(names[i], json.fields[names[i]])\n );\n if (json.oneofs)\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n if (json.nested)\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n var nested = json.nested[names[i]];\n type.add( // most to least likely\n ( nested.id !== undefined\n ? Field.fromJSON\n : nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n if (json.extensions && json.extensions.length)\n type.extensions = json.extensions;\n if (json.reserved && json.reserved.length)\n type.reserved = json.reserved;\n if (json.group)\n type.group = true;\n if (json.comment)\n type.comment = json.comment;\n return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"group\" , this.group || undefined,\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n var fields = this.fieldsArray, i = 0;\n while (i < fields.length)\n fields[i++].resolve();\n var oneofs = this.oneofsArray; i = 0;\n while (i < oneofs.length)\n oneofs[i++].resolve();\n return Namespace.prototype.resolveAll.call(this);\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n return this.fields[name]\n || this.oneofs && this.oneofs[name]\n || this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Field && object.extend === undefined) {\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n // The root object takes care of adding distinct sister-fields to the respective extended\n // type instead.\n\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\n if (this.isReservedId(object.id))\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\n if (this.isReservedName(object.name))\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n if (object.parent)\n object.parent.remove(object);\n this.fields[object.name] = object;\n object.message = this;\n object.onAdd(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n if (!this.oneofs)\n this.oneofs = {};\n this.oneofs[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n if (object instanceof Field && object.extend === undefined) {\n // See Type#add for the reason why extension fields are excluded here.\n\n /* istanbul ignore if */\n if (!this.fields || this.fields[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.fields[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n\n /* istanbul ignore if */\n if (!this.oneofs || this.oneofs[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.oneofs[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n // multiple times (V8, soft-deopt prototype-check).\n\n var fullName = this.fullName,\n types = [];\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n types.push(this._fieldsArray[i].resolve().resolvedType);\n\n // Replace setup methods with type-specific generated functions\n this.encode = encoder(this)({\n Writer : Writer,\n types : types,\n util : util\n });\n this.decode = decoder(this)({\n Reader : Reader,\n types : types,\n util : util\n });\n this.verify = verifier(this)({\n types : types,\n util : util\n });\n this.fromObject = converter.fromObject(this)({\n types : types,\n util : util\n });\n this.toObject = converter.toObject(this)({\n types : types,\n util : util\n });\n\n // Inject custom wrappers for common types\n var wrapper = wrappers[fullName];\n if (wrapper) {\n var originalThis = Object.create(this);\n // if (wrapper.fromObject) {\n originalThis.fromObject = this.fromObject;\n this.fromObject = wrapper.fromObject.bind(originalThis);\n // }\n // if (wrapper.toObject) {\n originalThis.toObject = this.toObject;\n this.toObject = wrapper.toObject.bind(originalThis);\n // }\n }\n\n return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof Reader))\n reader = Reader.create(reader);\n return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor} target Target constructor\n * @returns {undefined}\n * @template T extends Message\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator} Decorator function\n * @template T extends Message\n */\nType.d = function decorateType(typeName) {\n return function typeDecorator(target) {\n util.decorateType(target, typeName);\n };\n};\n", "\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field = require(\"./field\"),\n Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n util = require(\"./util\");\n\nvar Type, // cyclic\n parse, // might be excluded\n common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.} [options] Top level options\n */\nfunction Root(options) {\n Namespace.call(this, \"\", options);\n\n /**\n * Deferred extension fields.\n * @type {Field[]}\n */\n this.deferred = [];\n\n /**\n * Resolved file names of loaded files.\n * @type {string[]}\n */\n this.files = [];\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Nameespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n if (!root)\n root = new Root();\n if (json.options)\n root.setOptions(json.options);\n return root.addJSON(json.nested);\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n/**\n * Fetch content from file path or url\n * This method exists so you can override it with your own logic.\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.fetch = util.fetch;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = undefined;\n }\n var self = this;\n if (!callback)\n return util.asPromise(load, self, filename, options);\n\n var sync = callback === SYNC; // undocumented\n\n // Finishes loading by calling the callback (exactly once)\n function finish(err, root) {\n /* istanbul ignore if */\n if (!callback)\n return;\n if (sync)\n throw err;\n var cb = callback;\n callback = null;\n cb(err, root);\n }\n\n // Bundled definition existence checking\n function getBundledFileName(filename) {\n var idx = filename.lastIndexOf(\"google/protobuf/\");\n if (idx > -1) {\n var altname = filename.substring(idx);\n if (altname in common) return altname;\n }\n return null;\n }\n\n // Processes a single file\n function process(filename, source) {\n try {\n if (util.isString(source) && source.charAt(0) === \"{\")\n source = JSON.parse(source);\n if (!util.isString(source))\n self.setOptions(source.options).addJSON(source.nested);\n else {\n parse.filename = filename;\n var parsed = parse(source, self, options),\n resolved,\n i = 0;\n if (parsed.imports)\n for (; i < parsed.imports.length; ++i)\n if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\n fetch(resolved);\n if (parsed.weakImports)\n for (i = 0; i < parsed.weakImports.length; ++i)\n if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\n fetch(resolved, true);\n }\n } catch (err) {\n finish(err);\n }\n if (!sync && !queued)\n finish(null, self); // only once anyway\n }\n\n // Fetches a single file\n function fetch(filename, weak) {\n filename = getBundledFileName(filename) || filename;\n\n // Skip if already loaded / attempted\n if (self.files.indexOf(filename) > -1)\n return;\n self.files.push(filename);\n\n // Shortcut bundled definitions\n if (filename in common) {\n if (sync)\n process(filename, common[filename]);\n else {\n ++queued;\n setTimeout(function() {\n --queued;\n process(filename, common[filename]);\n });\n }\n return;\n }\n\n // Otherwise fetch from disk or network\n if (sync) {\n var source;\n try {\n source = util.fs.readFileSync(filename).toString(\"utf8\");\n } catch (err) {\n if (!weak)\n finish(err);\n return;\n }\n process(filename, source);\n } else {\n ++queued;\n self.fetch(filename, function(err, source) {\n --queued;\n /* istanbul ignore if */\n if (!callback)\n return; // terminated meanwhile\n if (err) {\n /* istanbul ignore else */\n if (!weak)\n finish(err);\n else if (!queued) // can't be covered reliably\n finish(null, self);\n return;\n }\n process(filename, source);\n });\n }\n }\n var queued = 0;\n\n // Assembling the root namespace doesn't require working type\n // references anymore, so we can load everything in parallel\n if (util.isString(filename))\n filename = [ filename ];\n for (var i = 0, resolved; i < filename.length; ++i)\n if (resolved = self.resolvePath(\"\", filename[i]))\n fetch(resolved);\n\n if (sync)\n return self;\n if (!queued)\n finish(null, self);\n return undefined;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n if (!util.isNode)\n throw Error(\"not supported\");\n return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n if (this.deferred.length)\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n }).join(\", \"));\n return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n var extendedType = field.parent.lookup(field.extend);\n if (extendedType) {\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n //do not allow to extend same field twice to prevent the error\n if (extendedType.get(sisterField.name)) {\n return true;\n }\n sisterField.declaringField = field;\n field.extensionField = sisterField;\n extendedType.add(sisterField);\n return true;\n }\n return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n if (object instanceof Field) {\n\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n if (!tryHandleExtension(this, object))\n this.deferred.push(object);\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n if (object instanceof Type) // Try to handle any deferred extensions\n for (var i = 0; i < this.deferred.length;)\n if (tryHandleExtension(this, this.deferred[i]))\n this.deferred.splice(i, 1);\n else\n ++i;\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n this._handleAdd(object._nestedArray[j]);\n if (exposeRe.test(object.name))\n object.parent[object.name] = object; // expose namespace as property of its parent\n }\n\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\n // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n if (object instanceof Field) {\n\n if (/* an extension field */ object.extend !== undefined) {\n if (/* already handled */ object.extensionField) { // remove its sister field\n object.extensionField.parent.remove(object.extensionField);\n object.extensionField = null;\n } else { // cancel the extension\n var index = this.deferred.indexOf(object);\n /* istanbul ignore else */\n if (index > -1)\n this.deferred.splice(index, 1);\n }\n }\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose enum values\n\n } else if (object instanceof Namespace) {\n\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n this._handleRemove(object._nestedArray[i]);\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose namespaces\n\n }\n};\n\n// Sets up cyclic dependencies (called in index-light)\nRoot._configure = function(Type_, parse_, common_) {\n Type = Type_;\n parse = parse_;\n common = common_;\n};\n", "\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(\"./util/minimal\");\n\nvar roots = require(\"./roots\");\n\nvar Type, // cyclic\n Enum;\n\nutil.codegen = require(\"@protobufjs/codegen\");\nutil.fetch = require(\"@protobufjs/fetch\");\nutil.path = require(\"@protobufjs/path\");\n\n/**\n * Node's fs module if available.\n * @type {Object.}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n if (object) {\n var keys = Object.keys(object),\n array = new Array(keys.length),\n index = 0;\n while (index < keys.length)\n array[index] = object[keys[index++]];\n return array;\n }\n return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.} Converted object\n */\nutil.toObject = function toObject(array) {\n var object = {},\n index = 0;\n while (index < array.length) {\n var key = array[index++],\n val = array[index++];\n if (val !== undefined)\n object[key] = val;\n }\n return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n safePropQuoteRe = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n return str.substring(0, 1)\n + str.substring(1)\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n /* istanbul ignore if */\n if (ctor.$type) {\n if (typeName && ctor.$type.name !== typeName) {\n util.decorateRoot.remove(ctor.$type);\n ctor.$type.name = typeName;\n util.decorateRoot.add(ctor.$type);\n }\n return ctor.$type;\n }\n\n /* istanbul ignore next */\n if (!Type)\n Type = require(\"./type\");\n\n var type = new Type(typeName || ctor.name);\n util.decorateRoot.add(type);\n type.ctor = ctor; // sets up .encode, .decode etc.\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n /* istanbul ignore if */\n if (object.$type)\n return object.$type;\n\n /* istanbul ignore next */\n if (!Enum)\n Enum = require(\"./enum\");\n\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n util.decorateRoot.add(enm);\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n return enm;\n};\n\n\n/**\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\n * @param {Object.} dst Destination object\n * @param {string} path dot '.' delimited path of the property to set\n * @param {Object} value the value to set\n * @returns {Object.} Destination object\n */\nutil.setProperty = function setProperty(dst, path, value) {\n function setProp(dst, path, value) {\n var part = path.shift();\n if (part === \"__proto__\" || part === \"prototype\") {\n return dst;\n }\n if (path.length > 0) {\n dst[part] = setProp(dst[part] || {}, path, value);\n } else {\n var prevValue = dst[part];\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n dst[part] = value;\n }\n return dst;\n }\n\n if (typeof dst !== \"object\")\n throw TypeError(\"dst must be an object\");\n if (!path)\n throw TypeError(\"path must be specified\");\n\n path = path.split(\".\");\n return setProp(dst, path, value);\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n get: function() {\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\n }\n});\n", "\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nvar util = require(\"./util\");\n\nvar Root; // cyclic\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (options && !util.isObject(options))\n throw TypeError(\"options must be an object\");\n\n /**\n * Options.\n * @type {Object.|undefined}\n */\n this.options = options; // toJSON\n\n /**\n * Parsed Options.\n * @type {Array.>|undefined}\n */\n this.parsedOptions = null;\n\n /**\n * Unique name within its namespace.\n * @type {string}\n */\n this.name = name;\n\n /**\n * Parent namespace.\n * @type {Namespace|null}\n */\n this.parent = null;\n\n /**\n * Whether already resolved or not.\n * @type {boolean}\n */\n this.resolved = false;\n\n /**\n * Comment text, if any.\n * @type {string|null}\n */\n this.comment = null;\n\n /**\n * Defining file name.\n * @type {string|null}\n */\n this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n /**\n * Reference to the root namespace.\n * @name ReflectionObject#root\n * @type {Root}\n * @readonly\n */\n root: {\n get: function() {\n var ptr = this;\n while (ptr.parent !== null)\n ptr = ptr.parent;\n return ptr;\n }\n },\n\n /**\n * Full name including leading dot.\n * @name ReflectionObject#fullName\n * @type {string}\n * @readonly\n */\n fullName: {\n get: function() {\n var path = [ this.name ],\n ptr = this.parent;\n while (ptr) {\n path.unshift(ptr.name);\n ptr = ptr.parent;\n }\n return path.join(\".\");\n }\n }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n if (this.parent && this.parent !== parent)\n this.parent.remove(this);\n this.parent = parent;\n this.resolved = false;\n var root = parent.root;\n if (root instanceof Root)\n root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n var root = parent.root;\n if (root instanceof Root)\n root._handleRemove(this);\n this.parent = null;\n this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n if (this.root instanceof Root)\n this.resolved = true; // only if part of a root\n return this;\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n if (this.options)\n return this.options[name];\n return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (!ifNotSet || !this.options || this.options[name] === undefined)\n (this.options || (this.options = {}))[name] = value;\n return this;\n};\n\n/**\n * Sets a parsed option.\n * @param {string} name parsed Option name\n * @param {*} value Option value\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\n if (!this.parsedOptions) {\n this.parsedOptions = [];\n }\n var parsedOptions = this.parsedOptions;\n if (propName) {\n // If setting a sub property of an option then try to merge it\n // with an existing option\n var opt = parsedOptions.find(function (opt) {\n return Object.prototype.hasOwnProperty.call(opt, name);\n });\n if (opt) {\n // If we found an existing option - just merge the property value\n var newValue = opt[name];\n util.setProperty(newValue, propName, value);\n } else {\n // otherwise, create a new option, set it's property and add it to the list\n opt = {};\n opt[name] = util.setProperty({}, propName, value);\n parsedOptions.push(opt);\n }\n } else {\n // Always create a new option when setting the value of the option itself\n var newOpt = {};\n newOpt[name] = value;\n parsedOptions.push(newOpt);\n }\n return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n if (options)\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n this.setOption(keys[i], options[keys[i]], ifNotSet);\n return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n var className = this.constructor.className,\n fullName = this.fullName;\n if (fullName.length)\n return className + \" \" + fullName;\n return className;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nReflectionObject._configure = function(Root_) {\n Root = Root_;\n};\n", "\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(\"./namespace\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.} [values] Enum values as an object, by name\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.} [comments] The value comments for this enum\n * @param {Object.>|undefined} [valuesOptions] The value options for this enum\n */\nfunction Enum(name, values, options, comment, comments, valuesOptions) {\n ReflectionObject.call(this, name, options);\n\n if (values && typeof values !== \"object\")\n throw TypeError(\"values must be an object\");\n\n /**\n * Enum values by id.\n * @type {Object.}\n */\n this.valuesById = {};\n\n /**\n * Enum values by name.\n * @type {Object.}\n */\n this.values = Object.create(this.valuesById); // toJSON, marker\n\n /**\n * Enum comment text.\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Value comment texts, if any.\n * @type {Object.}\n */\n this.comments = comments || {};\n\n /**\n * Values options, if any\n * @type {Object>|undefined}\n */\n this.valuesOptions = valuesOptions;\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n // compatible enum. This is used by pbts to write actual enum definitions that work for\n // static and reflection code alike instead of emitting generic object definitions.\n\n if (values)\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n if (typeof values[keys[i]] === \"number\") // use forward entries only\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.} values Enum values\n * @property {Object.} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n enm.reserved = json.reserved;\n return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"valuesOptions\" , this.valuesOptions,\n \"values\" , this.values,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"comment\" , keepComments ? this.comment : undefined,\n \"comments\" , keepComments ? this.comments : undefined\n ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @param {Object.|undefined} [options] Options, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment, options) {\n // utilized by the parser but not by .fromJSON\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (!util.isInteger(id))\n throw TypeError(\"id must be an integer\");\n\n if (this.values[name] !== undefined)\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n if (this.isReservedId(id))\n throw Error(\"id \" + id + \" is reserved in \" + this);\n\n if (this.isReservedName(name))\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n if (this.valuesById[id] !== undefined) {\n if (!(this.options && this.options.allow_alias))\n throw Error(\"duplicate id \" + id + \" in \" + this);\n this.values[name] = id;\n } else\n this.valuesById[this.values[name] = id] = name;\n\n if (options) {\n if (this.valuesOptions === undefined)\n this.valuesOptions = {};\n this.valuesOptions[name] = options || null;\n }\n\n this.comments[name] = comment || null;\n return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n var val = this.values[name];\n if (val == null)\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n delete this.valuesById[val];\n delete this.values[name];\n delete this.comments[name];\n if (this.valuesOptions)\n delete this.valuesOptions[name];\n\n return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n", "\"use strict\";\nmodule.exports = encoder;\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Generates a partial message type encoder.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genTypePartial(gen, field, fieldIndex, ref) {\n return field.resolvedType.group\n ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n (\"if(!w)\")\n (\"w=Writer.create()\");\n\n var i, ref;\n\n // \"when a message is serialized its known fields should be written sequentially by field number\"\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n index = mtype._fieldsArray.indexOf(field),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n wireType = types.basic[type];\n ref = \"m\" + util.safeProp(field.name);\n\n // Map fields\n if (field.map) {\n gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n if (wireType === undefined) gen\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n else gen\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n gen\n (\"}\")\n (\"}\");\n\n // Repeated fields\n } else if (field.repeated) { gen\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n // Packed repeated\n if (field.packed && types.packed[type] !== undefined) { gen\n\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n (\"for(var i=0;i<%s.length;++i)\", ref)\n (\"w.%s(%s[i])\", type, ref)\n (\"w.ldelim()\");\n\n // Non-packed\n } else { gen\n\n (\"for(var i=0;i<%s.length;++i)\", ref);\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref + \"[i]\");\n else gen\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n } gen\n (\"}\");\n\n // Non-repeated\n } else {\n if (field.optional) gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\n\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref);\n else gen\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n }\n }\n\n return gen\n (\"return w\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n", "\"use strict\";\nvar protobuf = module.exports = require(\"./index-minimal\");\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n if (typeof root === \"function\") {\n callback = root;\n root = new protobuf.Root();\n } else if (!root)\n root = new protobuf.Root();\n return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n if (!root)\n root = new protobuf.Root();\n return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder = require(\"./encoder\");\nprotobuf.decoder = require(\"./decoder\");\nprotobuf.verifier = require(\"./verifier\");\nprotobuf.converter = require(\"./converter\");\n\n// Reflection\nprotobuf.ReflectionObject = require(\"./object\");\nprotobuf.Namespace = require(\"./namespace\");\nprotobuf.Root = require(\"./root\");\nprotobuf.Enum = require(\"./enum\");\nprotobuf.Type = require(\"./type\");\nprotobuf.Field = require(\"./field\");\nprotobuf.OneOf = require(\"./oneof\");\nprotobuf.MapField = require(\"./mapfield\");\nprotobuf.Service = require(\"./service\");\nprotobuf.Method = require(\"./method\");\n\n// Runtime\nprotobuf.Message = require(\"./message\");\nprotobuf.wrappers = require(\"./wrappers\");\n\n// Utility\nprotobuf.types = require(\"./types\");\nprotobuf.util = require(\"./util\");\n\n// Set up possibly cyclic reflection dependencies\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n", "// light library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-light\");", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createMessageFromType = exports.createMessageFromName = exports.isPrimitiveField = void 0;\nexports.parseConfigure = parseConfigure;\nconst tslib_1 = require(\"tslib\");\nconst protobuf = tslib_1.__importStar(require(\"protobufjs/light\"));\nconst primitiveTypes = ['bool', 'string', 'bytes', 'int32', 'int64', 'uint32', 'uint64', 'sint32', 'sint64', 'fixed32', 'fixed64', 'sfixed32', 'sfixed64', 'double', 'float'];\nconst isPrimitiveField = field => primitiveTypes.includes(field);\nexports.isPrimitiveField = isPrimitiveField;\nfunction parseConfigure(data) {\n if (typeof data === 'string') {\n return protobuf.Root.fromJSON(JSON.parse(data));\n }\n return protobuf.Root.fromJSON(data);\n}\nconst createMessageFromName = (messages, name) => {\n const Message = messages.lookupType(name);\n const messageTypes = messages.lookupEnum('MessageType');\n let messageTypeId = messageTypes.values[name];\n if (typeof messageTypeId !== 'number' && Message.options) {\n messageTypeId = Message.options['(wire_type)'];\n }\n return {\n Message,\n messageType: messageTypeId ?? name\n };\n};\nexports.createMessageFromName = createMessageFromName;\nconst createMessageFromType = (messages, messageType) => {\n if (typeof messageType === 'string') {\n const Message = messages.lookupType(messageType);\n return {\n Message,\n messageName: messageType\n };\n }\n const messageTypes = messages.lookupEnum('MessageType');\n const messageName = messageTypes.valuesById[messageType];\n const Message = messages.lookupType(messageName);\n return {\n Message,\n messageName\n };\n};\nexports.createMessageFromType = createMessageFromType;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decodeMessage = exports.decode = void 0;\nconst utils_1 = require(\"./utils\");\nconst transform = (field, value) => {\n if ((0, utils_1.isPrimitiveField)(field.type)) {\n if (field.optional && typeof value === 'undefined') {\n return null;\n }\n if (field.type === 'bytes') {\n return Buffer.from(value).toString('hex');\n }\n if (field.long) {\n if (Number.isSafeInteger(value.toNumber())) {\n return value.toNumber();\n }\n return value.toString();\n }\n return value;\n }\n if ('valuesById' in field.resolvedType) {\n return field.resolvedType.valuesById[value];\n }\n if (field.resolvedType.fields) {\n return messageToJSON(value, field.resolvedType.fields);\n }\n throw new Error(`transport: decode: case not handled: ${field}`);\n};\nfunction messageToJSON(MessageParam, fields) {\n if (!MessageParam) {\n return {};\n }\n const {\n ...message\n } = MessageParam;\n const res = {};\n Object.keys(fields).forEach(key => {\n const field = fields[key];\n const value = message[key];\n if (field.repeated) {\n res[key] = value.map(v => transform(field, v));\n } else {\n res[key] = transform(field, value);\n }\n });\n return res;\n}\nconst decode = (MessageParam, data) => {\n const decoded = MessageParam.decode(new Uint8Array(data));\n return messageToJSON(decoded, decoded.$type.fields);\n};\nexports.decode = decode;\nconst decodeMessage = (messages, messageType, data) => {\n const {\n Message,\n messageName\n } = (0, utils_1.createMessageFromType)(messages, messageType);\n const message = (0, exports.decode)(Message, data);\n return {\n type: messageName,\n message\n };\n};\nexports.decodeMessage = decodeMessage;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encodeMessage = exports.encode = void 0;\nconst light_1 = require(\"protobufjs/light\");\nconst utils_1 = require(\"./utils\");\nconst transform = (fieldType, value) => {\n if (fieldType === 'bytes') {\n if (typeof value === 'string' && !value) return value;\n return Buffer.from(value, 'hex');\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n throw new RangeError('field value is not within safe integer range');\n }\n if (fieldType === 'string' && typeof value === 'string') {\n value = value.replace(/[\u2019\u2018]/g, \"'\");\n }\n return value;\n};\nfunction patch(Message, payload) {\n const patched = {};\n if (!Message.fields) {\n return patched;\n }\n Object.keys(Message.fields).forEach(key => {\n const field = Message.fields[key];\n const value = payload[key];\n if (typeof value === 'undefined') {\n return;\n }\n if ((0, utils_1.isPrimitiveField)(field.type)) {\n if (field.repeated) {\n patched[key] = value.map(v => transform(field.type, v));\n } else {\n patched[key] = transform(field.type, value);\n }\n return;\n }\n if (field.repeated) {\n const fieldType = Message.lookupTypeOrEnum(field.type);\n if (fieldType instanceof light_1.Enum) {\n patched[key] = value;\n } else {\n patched[key] = value.map(v => patch(fieldType, v));\n }\n } else if (typeof value === 'object' && value !== null) {\n const RefMessage = Message.lookupType(field.type);\n patched[key] = patch(RefMessage, value);\n } else if (typeof value === 'number') {\n const RefMessage = Message.lookupEnum(field.type);\n patched[key] = RefMessage.values[value];\n } else {\n patched[key] = value;\n }\n });\n return patched;\n}\nconst encode = (Message, data) => {\n const payload = patch(Message, data);\n const message = Message.fromObject(payload);\n const bytes = Message.encode(message).finish();\n return Buffer.from(bytes);\n};\nexports.encode = encode;\nconst encodeMessage = (messages, messageName, data) => {\n const {\n Message,\n messageType\n } = (0, utils_1.createMessageFromName)(messages, messageName);\n const message = (0, exports.encode)(Message, data);\n return {\n messageType,\n message\n };\n};\nexports.encodeMessage = encodeMessage;\n//# sourceMappingURL=encode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TezosBallotType = exports.TezosContractType = exports.StellarSignerType = exports.StellarMemoType = exports.StellarAssetType = exports.NEMImportanceTransferMode = exports.NEMModificationType = exports.NEMSupplyChangeType = exports.NEMMosaicLevy = exports.MoneroNetworkType = exports.BootCommand = exports.Enum_WordRequestType = exports.SdProtectOperationType = exports.Enum_RecoveryType = exports.RecoveryDeviceInputMethod = exports.Enum_Capability = exports.Enum_RecoveryStatus = exports.Enum_BackupAvailability = exports.Enum_HomescreenFormat = exports.Enum_DisplayRotation = exports.Enum_SafetyCheckLevel = exports.Enum_BackupType = exports.EthereumDataType = exports.DefinitionType = exports.DebugWaitType = exports.DebugTouchEventType = exports.DebugPhysicalButton = exports.DebugButton = exports.Enum_PinMatrixRequestType = exports.Enum_ButtonRequestType = exports.Enum_FailureType = exports.CardanoTxWitnessType = exports.CardanoTxSigningMode = exports.CardanoCVoteRegistrationFormat = exports.CardanoTxAuxiliaryDataSupplementType = exports.CardanoPoolRelayType = exports.CardanoDRepType = exports.CardanoCertificateType = exports.CardanoTxOutputSerializationFormat = exports.CardanoNativeScriptHashDisplayFormat = exports.CardanoNativeScriptType = exports.CardanoAddressType = exports.CardanoDerivationType = exports.Enum_RequestType = exports.MultisigPubkeysOrder = exports.AmountUnit = exports.DecredStakingSpendType = exports.Enum_OutputScriptType = exports.Enum_InputScriptType = exports.DeviceModelInternal = void 0;\nvar DeviceModelInternal;\n(function (DeviceModelInternal) {\n DeviceModelInternal[\"T1B1\"] = \"T1B1\";\n DeviceModelInternal[\"T2T1\"] = \"T2T1\";\n DeviceModelInternal[\"T2B1\"] = \"T2B1\";\n DeviceModelInternal[\"T3B1\"] = \"T3B1\";\n DeviceModelInternal[\"T3T1\"] = \"T3T1\";\n DeviceModelInternal[\"T3W1\"] = \"T3W1\";\n DeviceModelInternal[\"UNKNOWN\"] = \"UNKNOWN\";\n})(DeviceModelInternal || (exports.DeviceModelInternal = DeviceModelInternal = {}));\nvar Enum_InputScriptType;\n(function (Enum_InputScriptType) {\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDADDRESS\"] = 0] = \"SPENDADDRESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDMULTISIG\"] = 1] = \"SPENDMULTISIG\";\n Enum_InputScriptType[Enum_InputScriptType[\"EXTERNAL\"] = 2] = \"EXTERNAL\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDWITNESS\"] = 3] = \"SPENDWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDP2SHWITNESS\"] = 4] = \"SPENDP2SHWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDTAPROOT\"] = 5] = \"SPENDTAPROOT\";\n})(Enum_InputScriptType || (exports.Enum_InputScriptType = Enum_InputScriptType = {}));\nvar Enum_OutputScriptType;\n(function (Enum_OutputScriptType) {\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOADDRESS\"] = 0] = \"PAYTOADDRESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOSCRIPTHASH\"] = 1] = \"PAYTOSCRIPTHASH\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOMULTISIG\"] = 2] = \"PAYTOMULTISIG\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOOPRETURN\"] = 3] = \"PAYTOOPRETURN\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOWITNESS\"] = 4] = \"PAYTOWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOP2SHWITNESS\"] = 5] = \"PAYTOP2SHWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOTAPROOT\"] = 6] = \"PAYTOTAPROOT\";\n})(Enum_OutputScriptType || (exports.Enum_OutputScriptType = Enum_OutputScriptType = {}));\nvar DecredStakingSpendType;\n(function (DecredStakingSpendType) {\n DecredStakingSpendType[DecredStakingSpendType[\"SSGen\"] = 0] = \"SSGen\";\n DecredStakingSpendType[DecredStakingSpendType[\"SSRTX\"] = 1] = \"SSRTX\";\n})(DecredStakingSpendType || (exports.DecredStakingSpendType = DecredStakingSpendType = {}));\nvar AmountUnit;\n(function (AmountUnit) {\n AmountUnit[AmountUnit[\"BITCOIN\"] = 0] = \"BITCOIN\";\n AmountUnit[AmountUnit[\"MILLIBITCOIN\"] = 1] = \"MILLIBITCOIN\";\n AmountUnit[AmountUnit[\"MICROBITCOIN\"] = 2] = \"MICROBITCOIN\";\n AmountUnit[AmountUnit[\"SATOSHI\"] = 3] = \"SATOSHI\";\n})(AmountUnit || (exports.AmountUnit = AmountUnit = {}));\nvar MultisigPubkeysOrder;\n(function (MultisigPubkeysOrder) {\n MultisigPubkeysOrder[MultisigPubkeysOrder[\"PRESERVED\"] = 0] = \"PRESERVED\";\n MultisigPubkeysOrder[MultisigPubkeysOrder[\"LEXICOGRAPHIC\"] = 1] = \"LEXICOGRAPHIC\";\n})(MultisigPubkeysOrder || (exports.MultisigPubkeysOrder = MultisigPubkeysOrder = {}));\nvar Enum_RequestType;\n(function (Enum_RequestType) {\n Enum_RequestType[Enum_RequestType[\"TXINPUT\"] = 0] = \"TXINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXOUTPUT\"] = 1] = \"TXOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXMETA\"] = 2] = \"TXMETA\";\n Enum_RequestType[Enum_RequestType[\"TXFINISHED\"] = 3] = \"TXFINISHED\";\n Enum_RequestType[Enum_RequestType[\"TXEXTRADATA\"] = 4] = \"TXEXTRADATA\";\n Enum_RequestType[Enum_RequestType[\"TXORIGINPUT\"] = 5] = \"TXORIGINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXORIGOUTPUT\"] = 6] = \"TXORIGOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXPAYMENTREQ\"] = 7] = \"TXPAYMENTREQ\";\n})(Enum_RequestType || (exports.Enum_RequestType = Enum_RequestType = {}));\nvar CardanoDerivationType;\n(function (CardanoDerivationType) {\n CardanoDerivationType[CardanoDerivationType[\"LEDGER\"] = 0] = \"LEDGER\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS\"] = 1] = \"ICARUS\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS_TREZOR\"] = 2] = \"ICARUS_TREZOR\";\n})(CardanoDerivationType || (exports.CardanoDerivationType = CardanoDerivationType = {}));\nvar CardanoAddressType;\n(function (CardanoAddressType) {\n CardanoAddressType[CardanoAddressType[\"BASE\"] = 0] = \"BASE\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_KEY\"] = 1] = \"BASE_SCRIPT_KEY\";\n CardanoAddressType[CardanoAddressType[\"BASE_KEY_SCRIPT\"] = 2] = \"BASE_KEY_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_SCRIPT\"] = 3] = \"BASE_SCRIPT_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"POINTER\"] = 4] = \"POINTER\";\n CardanoAddressType[CardanoAddressType[\"POINTER_SCRIPT\"] = 5] = \"POINTER_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE\"] = 6] = \"ENTERPRISE\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE_SCRIPT\"] = 7] = \"ENTERPRISE_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BYRON\"] = 8] = \"BYRON\";\n CardanoAddressType[CardanoAddressType[\"REWARD\"] = 14] = \"REWARD\";\n CardanoAddressType[CardanoAddressType[\"REWARD_SCRIPT\"] = 15] = \"REWARD_SCRIPT\";\n})(CardanoAddressType || (exports.CardanoAddressType = CardanoAddressType = {}));\nvar CardanoNativeScriptType;\n(function (CardanoNativeScriptType) {\n CardanoNativeScriptType[CardanoNativeScriptType[\"PUB_KEY\"] = 0] = \"PUB_KEY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ALL\"] = 1] = \"ALL\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ANY\"] = 2] = \"ANY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"N_OF_K\"] = 3] = \"N_OF_K\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_BEFORE\"] = 4] = \"INVALID_BEFORE\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_HEREAFTER\"] = 5] = \"INVALID_HEREAFTER\";\n})(CardanoNativeScriptType || (exports.CardanoNativeScriptType = CardanoNativeScriptType = {}));\nvar CardanoNativeScriptHashDisplayFormat;\n(function (CardanoNativeScriptHashDisplayFormat) {\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"HIDE\"] = 0] = \"HIDE\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"BECH32\"] = 1] = \"BECH32\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"POLICY_ID\"] = 2] = \"POLICY_ID\";\n})(CardanoNativeScriptHashDisplayFormat || (exports.CardanoNativeScriptHashDisplayFormat = CardanoNativeScriptHashDisplayFormat = {}));\nvar CardanoTxOutputSerializationFormat;\n(function (CardanoTxOutputSerializationFormat) {\n CardanoTxOutputSerializationFormat[CardanoTxOutputSerializationFormat[\"ARRAY_LEGACY\"] = 0] = \"ARRAY_LEGACY\";\n CardanoTxOutputSerializationFormat[CardanoTxOutputSerializationFormat[\"MAP_BABBAGE\"] = 1] = \"MAP_BABBAGE\";\n})(CardanoTxOutputSerializationFormat || (exports.CardanoTxOutputSerializationFormat = CardanoTxOutputSerializationFormat = {}));\nvar CardanoCertificateType;\n(function (CardanoCertificateType) {\n CardanoCertificateType[CardanoCertificateType[\"STAKE_REGISTRATION\"] = 0] = \"STAKE_REGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DEREGISTRATION\"] = 1] = \"STAKE_DEREGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DELEGATION\"] = 2] = \"STAKE_DELEGATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_POOL_REGISTRATION\"] = 3] = \"STAKE_POOL_REGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_REGISTRATION_CONWAY\"] = 7] = \"STAKE_REGISTRATION_CONWAY\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DEREGISTRATION_CONWAY\"] = 8] = \"STAKE_DEREGISTRATION_CONWAY\";\n CardanoCertificateType[CardanoCertificateType[\"VOTE_DELEGATION\"] = 9] = \"VOTE_DELEGATION\";\n})(CardanoCertificateType || (exports.CardanoCertificateType = CardanoCertificateType = {}));\nvar CardanoDRepType;\n(function (CardanoDRepType) {\n CardanoDRepType[CardanoDRepType[\"KEY_HASH\"] = 0] = \"KEY_HASH\";\n CardanoDRepType[CardanoDRepType[\"SCRIPT_HASH\"] = 1] = \"SCRIPT_HASH\";\n CardanoDRepType[CardanoDRepType[\"ABSTAIN\"] = 2] = \"ABSTAIN\";\n CardanoDRepType[CardanoDRepType[\"NO_CONFIDENCE\"] = 3] = \"NO_CONFIDENCE\";\n})(CardanoDRepType || (exports.CardanoDRepType = CardanoDRepType = {}));\nvar CardanoPoolRelayType;\n(function (CardanoPoolRelayType) {\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_IP\"] = 0] = \"SINGLE_HOST_IP\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_NAME\"] = 1] = \"SINGLE_HOST_NAME\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"MULTIPLE_HOST_NAME\"] = 2] = \"MULTIPLE_HOST_NAME\";\n})(CardanoPoolRelayType || (exports.CardanoPoolRelayType = CardanoPoolRelayType = {}));\nvar CardanoTxAuxiliaryDataSupplementType;\n(function (CardanoTxAuxiliaryDataSupplementType) {\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"NONE\"] = 0] = \"NONE\";\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"CVOTE_REGISTRATION_SIGNATURE\"] = 1] = \"CVOTE_REGISTRATION_SIGNATURE\";\n})(CardanoTxAuxiliaryDataSupplementType || (exports.CardanoTxAuxiliaryDataSupplementType = CardanoTxAuxiliaryDataSupplementType = {}));\nvar CardanoCVoteRegistrationFormat;\n(function (CardanoCVoteRegistrationFormat) {\n CardanoCVoteRegistrationFormat[CardanoCVoteRegistrationFormat[\"CIP15\"] = 0] = \"CIP15\";\n CardanoCVoteRegistrationFormat[CardanoCVoteRegistrationFormat[\"CIP36\"] = 1] = \"CIP36\";\n})(CardanoCVoteRegistrationFormat || (exports.CardanoCVoteRegistrationFormat = CardanoCVoteRegistrationFormat = {}));\nvar CardanoTxSigningMode;\n(function (CardanoTxSigningMode) {\n CardanoTxSigningMode[CardanoTxSigningMode[\"ORDINARY_TRANSACTION\"] = 0] = \"ORDINARY_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"POOL_REGISTRATION_AS_OWNER\"] = 1] = \"POOL_REGISTRATION_AS_OWNER\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"MULTISIG_TRANSACTION\"] = 2] = \"MULTISIG_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"PLUTUS_TRANSACTION\"] = 3] = \"PLUTUS_TRANSACTION\";\n})(CardanoTxSigningMode || (exports.CardanoTxSigningMode = CardanoTxSigningMode = {}));\nvar CardanoTxWitnessType;\n(function (CardanoTxWitnessType) {\n CardanoTxWitnessType[CardanoTxWitnessType[\"BYRON_WITNESS\"] = 0] = \"BYRON_WITNESS\";\n CardanoTxWitnessType[CardanoTxWitnessType[\"SHELLEY_WITNESS\"] = 1] = \"SHELLEY_WITNESS\";\n})(CardanoTxWitnessType || (exports.CardanoTxWitnessType = CardanoTxWitnessType = {}));\nvar Enum_FailureType;\n(function (Enum_FailureType) {\n Enum_FailureType[Enum_FailureType[\"Failure_UnexpectedMessage\"] = 1] = \"Failure_UnexpectedMessage\";\n Enum_FailureType[Enum_FailureType[\"Failure_ButtonExpected\"] = 2] = \"Failure_ButtonExpected\";\n Enum_FailureType[Enum_FailureType[\"Failure_DataError\"] = 3] = \"Failure_DataError\";\n Enum_FailureType[Enum_FailureType[\"Failure_ActionCancelled\"] = 4] = \"Failure_ActionCancelled\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinExpected\"] = 5] = \"Failure_PinExpected\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinCancelled\"] = 6] = \"Failure_PinCancelled\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinInvalid\"] = 7] = \"Failure_PinInvalid\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidSignature\"] = 8] = \"Failure_InvalidSignature\";\n Enum_FailureType[Enum_FailureType[\"Failure_ProcessError\"] = 9] = \"Failure_ProcessError\";\n Enum_FailureType[Enum_FailureType[\"Failure_NotEnoughFunds\"] = 10] = \"Failure_NotEnoughFunds\";\n Enum_FailureType[Enum_FailureType[\"Failure_NotInitialized\"] = 11] = \"Failure_NotInitialized\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinMismatch\"] = 12] = \"Failure_PinMismatch\";\n Enum_FailureType[Enum_FailureType[\"Failure_WipeCodeMismatch\"] = 13] = \"Failure_WipeCodeMismatch\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidSession\"] = 14] = \"Failure_InvalidSession\";\n Enum_FailureType[Enum_FailureType[\"Failure_Busy\"] = 15] = \"Failure_Busy\";\n Enum_FailureType[Enum_FailureType[\"Failure_ThpUnallocatedSession\"] = 16] = \"Failure_ThpUnallocatedSession\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidProtocol\"] = 17] = \"Failure_InvalidProtocol\";\n Enum_FailureType[Enum_FailureType[\"Failure_BufferError\"] = 18] = \"Failure_BufferError\";\n Enum_FailureType[Enum_FailureType[\"Failure_FirmwareError\"] = 99] = \"Failure_FirmwareError\";\n})(Enum_FailureType || (exports.Enum_FailureType = Enum_FailureType = {}));\nvar Enum_ButtonRequestType;\n(function (Enum_ButtonRequestType) {\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Other\"] = 1] = \"ButtonRequest_Other\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FeeOverThreshold\"] = 2] = \"ButtonRequest_FeeOverThreshold\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmOutput\"] = 3] = \"ButtonRequest_ConfirmOutput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ResetDevice\"] = 4] = \"ButtonRequest_ResetDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmWord\"] = 5] = \"ButtonRequest_ConfirmWord\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_WipeDevice\"] = 6] = \"ButtonRequest_WipeDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ProtectCall\"] = 7] = \"ButtonRequest_ProtectCall\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_SignTx\"] = 8] = \"ButtonRequest_SignTx\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FirmwareCheck\"] = 9] = \"ButtonRequest_FirmwareCheck\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Address\"] = 10] = \"ButtonRequest_Address\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PublicKey\"] = 11] = \"ButtonRequest_PublicKey\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicWordCount\"] = 12] = \"ButtonRequest_MnemonicWordCount\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicInput\"] = 13] = \"ButtonRequest_MnemonicInput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"_Deprecated_ButtonRequest_PassphraseType\"] = 14] = \"_Deprecated_ButtonRequest_PassphraseType\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_UnknownDerivationPath\"] = 15] = \"ButtonRequest_UnknownDerivationPath\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_RecoveryHomepage\"] = 16] = \"ButtonRequest_RecoveryHomepage\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Success\"] = 17] = \"ButtonRequest_Success\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Warning\"] = 18] = \"ButtonRequest_Warning\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PassphraseEntry\"] = 19] = \"ButtonRequest_PassphraseEntry\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PinEntry\"] = 20] = \"ButtonRequest_PinEntry\";\n})(Enum_ButtonRequestType || (exports.Enum_ButtonRequestType = Enum_ButtonRequestType = {}));\nvar Enum_PinMatrixRequestType;\n(function (Enum_PinMatrixRequestType) {\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_Current\"] = 1] = \"PinMatrixRequestType_Current\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewFirst\"] = 2] = \"PinMatrixRequestType_NewFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewSecond\"] = 3] = \"PinMatrixRequestType_NewSecond\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeFirst\"] = 4] = \"PinMatrixRequestType_WipeCodeFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeSecond\"] = 5] = \"PinMatrixRequestType_WipeCodeSecond\";\n})(Enum_PinMatrixRequestType || (exports.Enum_PinMatrixRequestType = Enum_PinMatrixRequestType = {}));\nvar DebugButton;\n(function (DebugButton) {\n DebugButton[DebugButton[\"NO\"] = 0] = \"NO\";\n DebugButton[DebugButton[\"YES\"] = 1] = \"YES\";\n DebugButton[DebugButton[\"INFO\"] = 2] = \"INFO\";\n})(DebugButton || (exports.DebugButton = DebugButton = {}));\nvar DebugPhysicalButton;\n(function (DebugPhysicalButton) {\n DebugPhysicalButton[DebugPhysicalButton[\"LEFT_BTN\"] = 0] = \"LEFT_BTN\";\n DebugPhysicalButton[DebugPhysicalButton[\"MIDDLE_BTN\"] = 1] = \"MIDDLE_BTN\";\n DebugPhysicalButton[DebugPhysicalButton[\"RIGHT_BTN\"] = 2] = \"RIGHT_BTN\";\n})(DebugPhysicalButton || (exports.DebugPhysicalButton = DebugPhysicalButton = {}));\nvar DebugTouchEventType;\n(function (DebugTouchEventType) {\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_FULL_CLICK\"] = 0] = \"TOUCH_FULL_CLICK\";\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_START\"] = 1] = \"TOUCH_START\";\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_END\"] = 2] = \"TOUCH_END\";\n})(DebugTouchEventType || (exports.DebugTouchEventType = DebugTouchEventType = {}));\nvar DebugWaitType;\n(function (DebugWaitType) {\n DebugWaitType[DebugWaitType[\"IMMEDIATE\"] = 0] = \"IMMEDIATE\";\n DebugWaitType[DebugWaitType[\"NEXT_LAYOUT\"] = 1] = \"NEXT_LAYOUT\";\n DebugWaitType[DebugWaitType[\"CURRENT_LAYOUT\"] = 2] = \"CURRENT_LAYOUT\";\n})(DebugWaitType || (exports.DebugWaitType = DebugWaitType = {}));\nvar DefinitionType;\n(function (DefinitionType) {\n DefinitionType[DefinitionType[\"ETHEREUM_NETWORK\"] = 0] = \"ETHEREUM_NETWORK\";\n DefinitionType[DefinitionType[\"ETHEREUM_TOKEN\"] = 1] = \"ETHEREUM_TOKEN\";\n DefinitionType[DefinitionType[\"SOLANA_TOKEN\"] = 2] = \"SOLANA_TOKEN\";\n})(DefinitionType || (exports.DefinitionType = DefinitionType = {}));\nvar EthereumDataType;\n(function (EthereumDataType) {\n EthereumDataType[EthereumDataType[\"UINT\"] = 1] = \"UINT\";\n EthereumDataType[EthereumDataType[\"INT\"] = 2] = \"INT\";\n EthereumDataType[EthereumDataType[\"BYTES\"] = 3] = \"BYTES\";\n EthereumDataType[EthereumDataType[\"STRING\"] = 4] = \"STRING\";\n EthereumDataType[EthereumDataType[\"BOOL\"] = 5] = \"BOOL\";\n EthereumDataType[EthereumDataType[\"ADDRESS\"] = 6] = \"ADDRESS\";\n EthereumDataType[EthereumDataType[\"ARRAY\"] = 7] = \"ARRAY\";\n EthereumDataType[EthereumDataType[\"STRUCT\"] = 8] = \"STRUCT\";\n})(EthereumDataType || (exports.EthereumDataType = EthereumDataType = {}));\nvar Enum_BackupType;\n(function (Enum_BackupType) {\n Enum_BackupType[Enum_BackupType[\"Bip39\"] = 0] = \"Bip39\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Basic\"] = 1] = \"Slip39_Basic\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Advanced\"] = 2] = \"Slip39_Advanced\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Single_Extendable\"] = 3] = \"Slip39_Single_Extendable\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Basic_Extendable\"] = 4] = \"Slip39_Basic_Extendable\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Advanced_Extendable\"] = 5] = \"Slip39_Advanced_Extendable\";\n})(Enum_BackupType || (exports.Enum_BackupType = Enum_BackupType = {}));\nvar Enum_SafetyCheckLevel;\n(function (Enum_SafetyCheckLevel) {\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"Strict\"] = 0] = \"Strict\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptAlways\"] = 1] = \"PromptAlways\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptTemporarily\"] = 2] = \"PromptTemporarily\";\n})(Enum_SafetyCheckLevel || (exports.Enum_SafetyCheckLevel = Enum_SafetyCheckLevel = {}));\nvar Enum_DisplayRotation;\n(function (Enum_DisplayRotation) {\n Enum_DisplayRotation[Enum_DisplayRotation[\"North\"] = 0] = \"North\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"East\"] = 90] = \"East\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"South\"] = 180] = \"South\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"West\"] = 270] = \"West\";\n})(Enum_DisplayRotation || (exports.Enum_DisplayRotation = Enum_DisplayRotation = {}));\nvar Enum_HomescreenFormat;\n(function (Enum_HomescreenFormat) {\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"Toif\"] = 1] = \"Toif\";\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"Jpeg\"] = 2] = \"Jpeg\";\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"ToiG\"] = 3] = \"ToiG\";\n})(Enum_HomescreenFormat || (exports.Enum_HomescreenFormat = Enum_HomescreenFormat = {}));\nvar Enum_BackupAvailability;\n(function (Enum_BackupAvailability) {\n Enum_BackupAvailability[Enum_BackupAvailability[\"NotAvailable\"] = 0] = \"NotAvailable\";\n Enum_BackupAvailability[Enum_BackupAvailability[\"Required\"] = 1] = \"Required\";\n Enum_BackupAvailability[Enum_BackupAvailability[\"Available\"] = 2] = \"Available\";\n})(Enum_BackupAvailability || (exports.Enum_BackupAvailability = Enum_BackupAvailability = {}));\nvar Enum_RecoveryStatus;\n(function (Enum_RecoveryStatus) {\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Nothing\"] = 0] = \"Nothing\";\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Recovery\"] = 1] = \"Recovery\";\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Backup\"] = 2] = \"Backup\";\n})(Enum_RecoveryStatus || (exports.Enum_RecoveryStatus = Enum_RecoveryStatus = {}));\nvar Enum_Capability;\n(function (Enum_Capability) {\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin\"] = 1] = \"Capability_Bitcoin\";\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin_like\"] = 2] = \"Capability_Bitcoin_like\";\n Enum_Capability[Enum_Capability[\"Capability_Binance\"] = 3] = \"Capability_Binance\";\n Enum_Capability[Enum_Capability[\"Capability_Cardano\"] = 4] = \"Capability_Cardano\";\n Enum_Capability[Enum_Capability[\"Capability_Crypto\"] = 5] = \"Capability_Crypto\";\n Enum_Capability[Enum_Capability[\"Capability_EOS\"] = 6] = \"Capability_EOS\";\n Enum_Capability[Enum_Capability[\"Capability_Ethereum\"] = 7] = \"Capability_Ethereum\";\n Enum_Capability[Enum_Capability[\"Capability_Lisk\"] = 8] = \"Capability_Lisk\";\n Enum_Capability[Enum_Capability[\"Capability_Monero\"] = 9] = \"Capability_Monero\";\n Enum_Capability[Enum_Capability[\"Capability_NEM\"] = 10] = \"Capability_NEM\";\n Enum_Capability[Enum_Capability[\"Capability_Ripple\"] = 11] = \"Capability_Ripple\";\n Enum_Capability[Enum_Capability[\"Capability_Stellar\"] = 12] = \"Capability_Stellar\";\n Enum_Capability[Enum_Capability[\"Capability_Tezos\"] = 13] = \"Capability_Tezos\";\n Enum_Capability[Enum_Capability[\"Capability_U2F\"] = 14] = \"Capability_U2F\";\n Enum_Capability[Enum_Capability[\"Capability_Shamir\"] = 15] = \"Capability_Shamir\";\n Enum_Capability[Enum_Capability[\"Capability_ShamirGroups\"] = 16] = \"Capability_ShamirGroups\";\n Enum_Capability[Enum_Capability[\"Capability_PassphraseEntry\"] = 17] = \"Capability_PassphraseEntry\";\n Enum_Capability[Enum_Capability[\"Capability_Solana\"] = 18] = \"Capability_Solana\";\n Enum_Capability[Enum_Capability[\"Capability_Translations\"] = 19] = \"Capability_Translations\";\n Enum_Capability[Enum_Capability[\"Capability_Brightness\"] = 20] = \"Capability_Brightness\";\n Enum_Capability[Enum_Capability[\"Capability_Haptic\"] = 21] = \"Capability_Haptic\";\n Enum_Capability[Enum_Capability[\"Capability_BLE\"] = 22] = \"Capability_BLE\";\n Enum_Capability[Enum_Capability[\"Capability_NFC\"] = 23] = \"Capability_NFC\";\n})(Enum_Capability || (exports.Enum_Capability = Enum_Capability = {}));\nvar RecoveryDeviceInputMethod;\n(function (RecoveryDeviceInputMethod) {\n RecoveryDeviceInputMethod[RecoveryDeviceInputMethod[\"ScrambledWords\"] = 0] = \"ScrambledWords\";\n RecoveryDeviceInputMethod[RecoveryDeviceInputMethod[\"Matrix\"] = 1] = \"Matrix\";\n})(RecoveryDeviceInputMethod || (exports.RecoveryDeviceInputMethod = RecoveryDeviceInputMethod = {}));\nvar Enum_RecoveryType;\n(function (Enum_RecoveryType) {\n Enum_RecoveryType[Enum_RecoveryType[\"NormalRecovery\"] = 0] = \"NormalRecovery\";\n Enum_RecoveryType[Enum_RecoveryType[\"DryRun\"] = 1] = \"DryRun\";\n Enum_RecoveryType[Enum_RecoveryType[\"UnlockRepeatedBackup\"] = 2] = \"UnlockRepeatedBackup\";\n})(Enum_RecoveryType || (exports.Enum_RecoveryType = Enum_RecoveryType = {}));\nvar SdProtectOperationType;\n(function (SdProtectOperationType) {\n SdProtectOperationType[SdProtectOperationType[\"DISABLE\"] = 0] = \"DISABLE\";\n SdProtectOperationType[SdProtectOperationType[\"ENABLE\"] = 1] = \"ENABLE\";\n SdProtectOperationType[SdProtectOperationType[\"REFRESH\"] = 2] = \"REFRESH\";\n})(SdProtectOperationType || (exports.SdProtectOperationType = SdProtectOperationType = {}));\nvar Enum_WordRequestType;\n(function (Enum_WordRequestType) {\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Plain\"] = 0] = \"WordRequestType_Plain\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix9\"] = 1] = \"WordRequestType_Matrix9\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix6\"] = 2] = \"WordRequestType_Matrix6\";\n})(Enum_WordRequestType || (exports.Enum_WordRequestType = Enum_WordRequestType = {}));\nvar BootCommand;\n(function (BootCommand) {\n BootCommand[BootCommand[\"STOP_AND_WAIT\"] = 0] = \"STOP_AND_WAIT\";\n BootCommand[BootCommand[\"INSTALL_UPGRADE\"] = 1] = \"INSTALL_UPGRADE\";\n})(BootCommand || (exports.BootCommand = BootCommand = {}));\nvar MoneroNetworkType;\n(function (MoneroNetworkType) {\n MoneroNetworkType[MoneroNetworkType[\"MAINNET\"] = 0] = \"MAINNET\";\n MoneroNetworkType[MoneroNetworkType[\"TESTNET\"] = 1] = \"TESTNET\";\n MoneroNetworkType[MoneroNetworkType[\"STAGENET\"] = 2] = \"STAGENET\";\n MoneroNetworkType[MoneroNetworkType[\"FAKECHAIN\"] = 3] = \"FAKECHAIN\";\n})(MoneroNetworkType || (exports.MoneroNetworkType = MoneroNetworkType = {}));\nvar NEMMosaicLevy;\n(function (NEMMosaicLevy) {\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Absolute\"] = 1] = \"MosaicLevy_Absolute\";\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Percentile\"] = 2] = \"MosaicLevy_Percentile\";\n})(NEMMosaicLevy || (exports.NEMMosaicLevy = NEMMosaicLevy = {}));\nvar NEMSupplyChangeType;\n(function (NEMSupplyChangeType) {\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Increase\"] = 1] = \"SupplyChange_Increase\";\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Decrease\"] = 2] = \"SupplyChange_Decrease\";\n})(NEMSupplyChangeType || (exports.NEMSupplyChangeType = NEMSupplyChangeType = {}));\nvar NEMModificationType;\n(function (NEMModificationType) {\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Add\"] = 1] = \"CosignatoryModification_Add\";\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Delete\"] = 2] = \"CosignatoryModification_Delete\";\n})(NEMModificationType || (exports.NEMModificationType = NEMModificationType = {}));\nvar NEMImportanceTransferMode;\n(function (NEMImportanceTransferMode) {\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Activate\"] = 1] = \"ImportanceTransfer_Activate\";\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Deactivate\"] = 2] = \"ImportanceTransfer_Deactivate\";\n})(NEMImportanceTransferMode || (exports.NEMImportanceTransferMode = NEMImportanceTransferMode = {}));\nvar StellarAssetType;\n(function (StellarAssetType) {\n StellarAssetType[StellarAssetType[\"NATIVE\"] = 0] = \"NATIVE\";\n StellarAssetType[StellarAssetType[\"ALPHANUM4\"] = 1] = \"ALPHANUM4\";\n StellarAssetType[StellarAssetType[\"ALPHANUM12\"] = 2] = \"ALPHANUM12\";\n})(StellarAssetType || (exports.StellarAssetType = StellarAssetType = {}));\nvar StellarMemoType;\n(function (StellarMemoType) {\n StellarMemoType[StellarMemoType[\"NONE\"] = 0] = \"NONE\";\n StellarMemoType[StellarMemoType[\"TEXT\"] = 1] = \"TEXT\";\n StellarMemoType[StellarMemoType[\"ID\"] = 2] = \"ID\";\n StellarMemoType[StellarMemoType[\"HASH\"] = 3] = \"HASH\";\n StellarMemoType[StellarMemoType[\"RETURN\"] = 4] = \"RETURN\";\n})(StellarMemoType || (exports.StellarMemoType = StellarMemoType = {}));\nvar StellarSignerType;\n(function (StellarSignerType) {\n StellarSignerType[StellarSignerType[\"ACCOUNT\"] = 0] = \"ACCOUNT\";\n StellarSignerType[StellarSignerType[\"PRE_AUTH\"] = 1] = \"PRE_AUTH\";\n StellarSignerType[StellarSignerType[\"HASH\"] = 2] = \"HASH\";\n})(StellarSignerType || (exports.StellarSignerType = StellarSignerType = {}));\nvar TezosContractType;\n(function (TezosContractType) {\n TezosContractType[TezosContractType[\"Implicit\"] = 0] = \"Implicit\";\n TezosContractType[TezosContractType[\"Originated\"] = 1] = \"Originated\";\n})(TezosContractType || (exports.TezosContractType = TezosContractType = {}));\nvar TezosBallotType;\n(function (TezosBallotType) {\n TezosBallotType[TezosBallotType[\"Yay\"] = 0] = \"Yay\";\n TezosBallotType[TezosBallotType[\"Nay\"] = 1] = \"Nay\";\n TezosBallotType[TezosBallotType[\"Pass\"] = 2] = \"Pass\";\n})(TezosBallotType || (exports.TezosBallotType = TezosBallotType = {}));\n//# sourceMappingURL=messages.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadDefinitions = void 0;\nconst loadDefinitions = async (messages, packageName, packageLoader) => {\n try {\n const pkg = messages.lookup(packageName);\n if (pkg) {\n return;\n }\n } catch {}\n let enumType;\n try {\n enumType = messages.lookupEnum('MessageType');\n } catch {}\n const packageMessages = await packageLoader();\n const pkg = messages.define(packageName, packageMessages);\n let packageEnumType;\n try {\n packageEnumType = pkg.lookupEnum('MessageType');\n } catch {}\n if (enumType && packageEnumType) {\n try {\n Object.keys(packageEnumType.values).forEach(key => {\n enumType.add(key, packageEnumType.values[key]);\n });\n pkg.remove(packageEnumType);\n } catch (e) {\n messages.remove(pkg);\n throw e;\n }\n }\n};\nexports.loadDefinitions = loadDefinitions;\n//# sourceMappingURL=load-definitions.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrevOutput = exports.PrevInput = exports.PrevTx = exports.TxOutput = exports.TxOutputType = exports.ChangeOutputScriptType = exports.TxOutputBinType = exports.TxInput = exports.TxInputType = exports.InternalInputScriptType = exports.TxRequest = exports.TxRequestSerializedType = exports.TxRequestDetailsType = exports.RequestType = exports.EnumEnum_RequestType = exports.Enum_RequestType = exports.SignTx = exports.CoinJoinRequest = exports.VerifyMessage = exports.MessageSignature = exports.SignMessage = exports.OwnershipId = exports.GetOwnershipId = exports.Address = exports.GetAddress = exports.PublicKey = exports.GetPublicKey = exports.MultisigRedeemScriptType = exports.HDNodePathType = exports.HDNodeType = exports.EnumMultisigPubkeysOrder = exports.MultisigPubkeysOrder = exports.EnumAmountUnit = exports.AmountUnit = exports.PaymentRequest = exports.PaymentRequestMemo = exports.TextDetailsMemo = exports.CoinPurchaseMemo = exports.RefundMemo = exports.TextMemo = exports.EnumDecredStakingSpendType = exports.DecredStakingSpendType = exports.OutputScriptType = exports.EnumEnum_OutputScriptType = exports.Enum_OutputScriptType = exports.InputScriptType = exports.EnumEnum_InputScriptType = exports.Enum_InputScriptType = exports.EnumDeviceModelInternal = exports.DeviceModelInternal = void 0;\nexports.CardanoAddressParametersType = exports.CardanoNativeScriptHash = exports.CardanoGetNativeScriptHash = exports.CardanoNativeScript = exports.CardanoBlockchainPointerType = exports.EnumCardanoTxWitnessType = exports.CardanoTxWitnessType = exports.EnumCardanoTxSigningMode = exports.CardanoTxSigningMode = exports.EnumCardanoCVoteRegistrationFormat = exports.CardanoCVoteRegistrationFormat = exports.EnumCardanoTxAuxiliaryDataSupplementType = exports.CardanoTxAuxiliaryDataSupplementType = exports.EnumCardanoPoolRelayType = exports.CardanoPoolRelayType = exports.EnumCardanoDRepType = exports.CardanoDRepType = exports.EnumCardanoCertificateType = exports.CardanoCertificateType = exports.EnumCardanoTxOutputSerializationFormat = exports.CardanoTxOutputSerializationFormat = exports.EnumCardanoNativeScriptHashDisplayFormat = exports.CardanoNativeScriptHashDisplayFormat = exports.EnumCardanoNativeScriptType = exports.CardanoNativeScriptType = exports.EnumCardanoAddressType = exports.CardanoAddressType = exports.EnumCardanoDerivationType = exports.CardanoDerivationType = exports.ProdTestT1 = exports.FirmwareUpload = exports.FirmwareRequest = exports.FirmwareErase = exports.BleUnpair = exports.AuthorizeCoinJoin = exports.OwnershipProof = exports.GetOwnershipProof = exports.TxAckPrevExtraData = exports.TxAckPrevExtraDataWrapper = exports.TxAckPrevOutput = exports.TxAckPrevOutputWrapper = exports.TxAckPrevInput = exports.TxAckPrevInputWrapper = exports.TxAckPrevMeta = exports.TxAckOutput = exports.TxAckOutputWrapper = exports.TxAckInput = exports.TxAckInputWrapper = exports.TxAck = exports.TxAckResponse = void 0;\nexports.PinMatrixRequest = exports.PinMatrixRequestType = exports.EnumEnum_PinMatrixRequestType = exports.Enum_PinMatrixRequestType = exports.ButtonAck = exports.ButtonRequest = exports.ButtonRequestType = exports.EnumEnum_ButtonRequestType = exports.Enum_ButtonRequestType = exports.Failure = exports.FailureType = exports.EnumEnum_FailureType = exports.Enum_FailureType = exports.Success = exports.CardanoMessageSignature = exports.CardanoMessageDataResponse = exports.CardanoMessageDataRequest = exports.CardanoSignMessageInit = exports.CardanoSignTxFinished = exports.CardanoTxBodyHash = exports.CardanoTxHostAck = exports.CardanoTxWitnessResponse = exports.CardanoTxWitnessRequest = exports.CardanoTxAuxiliaryDataSupplement = exports.CardanoTxItemAck = exports.CardanoTxReferenceInput = exports.CardanoTxRequiredSigner = exports.CardanoTxCollateralInput = exports.CardanoTxMint = exports.CardanoTxAuxiliaryData = exports.CardanoCVoteRegistrationParametersType = exports.CardanoCVoteRegistrationDelegation = exports.CardanoTxWithdrawal = exports.CardanoTxCertificate = exports.CardanoDRep = exports.CardanoPoolParametersType = exports.CardanoPoolMetadataType = exports.CardanoPoolRelayParameters = exports.CardanoPoolOwner = exports.CardanoTxReferenceScriptChunk = exports.CardanoTxInlineDatumChunk = exports.CardanoToken = exports.CardanoAssetGroup = exports.CardanoTxOutput = exports.CardanoTxInput = exports.CardanoSignTxInit = exports.CardanoPublicKey = exports.CardanoGetPublicKey = exports.CardanoAddress = exports.CardanoGetAddress = void 0;\nexports.EosActionBuyRam = exports.EosActionRefund = exports.EosActionUndelegate = exports.EosActionDelegate = exports.EosActionTransfer = exports.EosActionCommon = exports.EosAuthorization = exports.EosAuthorizationWait = exports.EosAuthorizationAccount = exports.EosAuthorizationKey = exports.EosPermissionLevel = exports.EosAsset = exports.EosTxActionRequest = exports.EosSignTx = exports.EosTxHeader = exports.EosPublicKey = exports.EosGetPublicKey = exports.SolanaTokenInfo = exports.EthereumTokenInfo = exports.EthereumNetworkInfo = exports.EnumDefinitionType = exports.DefinitionType = exports.DebugLinkGcInfo = exports.DebugLinkGcInfoItem = exports.DebugLinkGetGcInfo = exports.DebugLinkOptigaSetSecMax = exports.DebugLinkResetDebugEvents = exports.DebugLinkPairingInfo = exports.DebugLinkGetPairingInfo = exports.EnumDebugWaitType = exports.DebugWaitType = exports.EnumDebugTouchEventType = exports.DebugTouchEventType = exports.EnumDebugPhysicalButton = exports.DebugPhysicalButton = exports.EnumDebugButton = exports.DebugButton = exports.PaymentNotification = exports.ECDHSessionKey = exports.GetECDHSessionKey = exports.SignedIdentity = exports.SignIdentity = exports.IdentityType = exports.CipheredKeyValue = exports.CipherKeyValue = exports.Deprecated_PassphraseStateAck = exports.Deprecated_PassphraseStateRequest = exports.PassphraseAck = exports.PassphraseRequest = exports.PinMatrixAck = void 0;\nexports.DisplayRotation = exports.EnumEnum_DisplayRotation = exports.Enum_DisplayRotation = exports.SafetyCheckLevel = exports.EnumEnum_SafetyCheckLevel = exports.Enum_SafetyCheckLevel = exports.BackupType = exports.EnumEnum_BackupType = exports.Enum_BackupType = exports.EvoluDelegatedIdentityKey = exports.EvoluGetDelegatedIdentityKey = exports.EvoluRegistrationRequest = exports.EvoluSignRegistrationRequest = exports.EvoluNode = exports.EvoluGetNode = exports.EthereumTypedDataSignature = exports.EthereumSignTypedHash = exports.EthereumVerifyMessage = exports.EthereumMessageSignature = exports.EthereumSignMessage = exports.EthereumTxAck = exports.EthereumTxRequest = exports.EthereumSignTxEIP1559 = exports.EthereumAccessList = exports.EthereumSignTx = exports.EthereumAddress = exports.EthereumGetAddress = exports.EthereumPublicKey = exports.EthereumGetPublicKey = exports.EthereumTypedDataValueAck = exports.EthereumTypedDataValueRequest = exports.EthereumTypedDataStructAck = exports.EthereumStructMember = exports.EthereumFieldType = exports.EnumEthereumDataType = exports.EthereumDataType = exports.EthereumTypedDataStructRequest = exports.EthereumSignTypedData = exports.EthereumDefinitions = exports.EosSignedTx = exports.EosTxActionAck = exports.EosActionUnknown = exports.EosActionNewAccount = exports.EosActionUnlinkAuth = exports.EosActionLinkAuth = exports.EosActionDeleteAuth = exports.EosActionUpdateAuth = exports.EosActionVoteProducer = exports.EosActionSellRam = exports.EosActionBuyRamBytes = void 0;\nexports.EntropyCheckReady = exports.EntropyAck = exports.EntropyRequest = exports.BackupDevice = exports.Slip39Group = exports.ResetDevice = exports.LoadDevice = exports.WipeDevice = exports.AuthenticityProof = exports.AuthenticateDevice = exports.FirmwareHash = exports.GetFirmwareHash = exports.Entropy = exports.GetEntropy = exports.Cancel = exports.Ping = exports.SdProtect = exports.EnumSdProtectOperationType = exports.SdProtectOperationType = exports.ChangeWipeCode = exports.ChangePin = exports.ApplyFlags = exports.DataChunkAck = exports.DataChunkRequest = exports.ChangeLanguage = exports.ApplySettings = exports.EndSession = exports.SetBusy = exports.LockDevice = exports.Features = exports.RecoveryDevice = exports.RecoveryType = exports.EnumEnum_RecoveryType = exports.Enum_RecoveryType = exports.EnumRecoveryDeviceInputMethod = exports.RecoveryDeviceInputMethod = exports.Capability = exports.EnumEnum_Capability = exports.Enum_Capability = exports.RecoveryStatus = exports.EnumEnum_RecoveryStatus = exports.Enum_RecoveryStatus = exports.BackupAvailability = exports.EnumEnum_BackupAvailability = exports.Enum_BackupAvailability = exports.GetFeatures = exports.Initialize = exports.HomescreenFormat = exports.EnumEnum_HomescreenFormat = exports.Enum_HomescreenFormat = void 0;\nexports.MoneroRingCtSig = exports.MoneroTransactionAllOutSetRequest = exports.MoneroTransactionSetOutputAck = exports.MoneroTransactionSetOutputRequest = exports.MoneroTransactionAllInputsSetAck = exports.MoneroTransactionAllInputsSetRequest = exports.MoneroTransactionInputViniAck = exports.MoneroTransactionInputViniRequest = exports.MoneroTransactionSetInputAck = exports.MoneroTransactionSetInputRequest = exports.MoneroTransactionInitAck = exports.MoneroTransactionInitRequest = exports.MoneroTransactionData = exports.MoneroWatchKey = exports.MoneroGetWatchKey = exports.MoneroAddress = exports.MoneroGetAddress = exports.MoneroTransactionRsigData = exports.MoneroTransactionDestinationEntry = exports.MoneroAccountPublicAddress = exports.MoneroTransactionSourceEntry = exports.MoneroMultisigKLRki = exports.MoneroOutputEntry = exports.MoneroRctKeyPublic = exports.EnumMoneroNetworkType = exports.MoneroNetworkType = exports.SerialNumber = exports.GetSerialNumber = exports.SetBrightness = exports.UnlockBootloader = exports.ShowDeviceTutorial = exports.UnlockedPathRequest = exports.UnlockPath = exports.Nonce = exports.GetNonce = exports.RebootToBootloader = exports.EnumBootCommand = exports.BootCommand = exports.CancelAuthorization = exports.PreauthorizedRequest = exports.DoPreauthorized = exports.NextU2FCounter = exports.GetNextU2FCounter = exports.SetU2FCounter = exports.WordAck = exports.WordRequest = exports.WordRequestType = exports.EnumEnum_WordRequestType = exports.Enum_WordRequestType = exports.EntropyCheckContinue = void 0;\nexports.RippleAddress = exports.RippleGetAddress = exports.NEMDecryptedMessage = exports.NEMDecryptMessage = exports.NEMSignedTx = exports.NEMSignTx = exports.NEMImportanceTransfer = exports.EnumNEMImportanceTransferMode = exports.NEMImportanceTransferMode = exports.NEMAggregateModification = exports.NEMCosignatoryModification = exports.EnumNEMModificationType = exports.NEMModificationType = exports.NEMMosaicSupplyChange = exports.EnumNEMSupplyChangeType = exports.NEMSupplyChangeType = exports.NEMMosaicCreation = exports.NEMMosaicDefinition = exports.EnumNEMMosaicLevy = exports.NEMMosaicLevy = exports.NEMProvisionNamespace = exports.NEMTransfer = exports.NEMMosaic = exports.NEMTransactionCommon = exports.NEMAddress = exports.NEMGetAddress = exports.DebugMoneroDiagAck = exports.DebugMoneroDiagRequest = exports.MoneroLiveRefreshFinalAck = exports.MoneroLiveRefreshFinalRequest = exports.MoneroLiveRefreshStepAck = exports.MoneroLiveRefreshStepRequest = exports.MoneroLiveRefreshStartAck = exports.MoneroLiveRefreshStartRequest = exports.MoneroGetTxKeyAck = exports.MoneroGetTxKeyRequest = exports.MoneroKeyImageSyncFinalAck = exports.MoneroKeyImageSyncFinalRequest = exports.MoneroKeyImageSyncStepAck = exports.MoneroExportedKeyImage = exports.MoneroKeyImageSyncStepRequest = exports.MoneroTransferDetails = exports.MoneroKeyImageExportInitAck = exports.MoneroKeyImageExportInitRequest = exports.MoneroSubAddressIndicesList = exports.MoneroTransactionFinalAck = exports.MoneroTransactionFinalRequest = exports.MoneroTransactionSignInputAck = exports.MoneroTransactionSignInputRequest = exports.MoneroTransactionAllOutSetAck = void 0;\nexports.TezosDelegationOp = exports.TezosOriginationOp = exports.TezosTransactionOp = exports.TezosParametersManager = exports.TezosManagerTransfer = exports.TezosRevealOp = exports.TezosContractID = exports.EnumTezosContractType = exports.TezosContractType = exports.TezosPublicKey = exports.TezosGetPublicKey = exports.TezosAddress = exports.TezosGetAddress = exports.StellarSignedTx = exports.StellarClaimClaimableBalanceOp = exports.StellarBumpSequenceOp = exports.StellarManageDataOp = exports.StellarAccountMergeOp = exports.StellarAllowTrustOp = exports.StellarChangeTrustOp = exports.StellarSetOptionsOp = exports.EnumStellarSignerType = exports.StellarSignerType = exports.StellarCreatePassiveSellOfferOp = exports.StellarManageBuyOfferOp = exports.StellarManageSellOfferOp = exports.StellarPathPaymentStrictSendOp = exports.StellarPathPaymentStrictReceiveOp = exports.StellarCreateAccountOp = exports.StellarPaymentOp = exports.StellarTxOpRequest = exports.StellarSignTx = exports.EnumStellarMemoType = exports.StellarMemoType = exports.StellarAddress = exports.StellarGetAddress = exports.StellarAsset = exports.EnumStellarAssetType = exports.StellarAssetType = exports.SolanaTxSignature = exports.SolanaSignTx = exports.SolanaTxAdditionalInfo = exports.SolanaTxTokenAccountInfo = exports.SolanaAddress = exports.SolanaGetAddress = exports.SolanaPublicKey = exports.SolanaGetPublicKey = exports.RippleSignedTx = exports.RippleSignTx = exports.RipplePayment = void 0;\nexports.MessageType = exports.TronAddress = exports.TronGetAddress = exports.TezosSignedTx = exports.TezosSignTx = exports.TezosBallotOp = exports.EnumTezosBallotType = exports.TezosBallotType = exports.TezosProposalOp = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nvar DeviceModelInternal;\n(function (DeviceModelInternal) {\n DeviceModelInternal[\"T1B1\"] = \"T1B1\";\n DeviceModelInternal[\"T2T1\"] = \"T2T1\";\n DeviceModelInternal[\"T2B1\"] = \"T2B1\";\n DeviceModelInternal[\"T3B1\"] = \"T3B1\";\n DeviceModelInternal[\"T3T1\"] = \"T3T1\";\n DeviceModelInternal[\"T3W1\"] = \"T3W1\";\n DeviceModelInternal[\"UNKNOWN\"] = \"UNKNOWN\";\n})(DeviceModelInternal || (exports.DeviceModelInternal = DeviceModelInternal = {}));\nexports.EnumDeviceModelInternal = schema_utils_1.Type.Enum(DeviceModelInternal);\nvar Enum_InputScriptType;\n(function (Enum_InputScriptType) {\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDADDRESS\"] = 0] = \"SPENDADDRESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDMULTISIG\"] = 1] = \"SPENDMULTISIG\";\n Enum_InputScriptType[Enum_InputScriptType[\"EXTERNAL\"] = 2] = \"EXTERNAL\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDWITNESS\"] = 3] = \"SPENDWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDP2SHWITNESS\"] = 4] = \"SPENDP2SHWITNESS\";\n Enum_InputScriptType[Enum_InputScriptType[\"SPENDTAPROOT\"] = 5] = \"SPENDTAPROOT\";\n})(Enum_InputScriptType || (exports.Enum_InputScriptType = Enum_InputScriptType = {}));\nexports.EnumEnum_InputScriptType = schema_utils_1.Type.Enum(Enum_InputScriptType);\nexports.InputScriptType = schema_utils_1.Type.KeyOfEnum(Enum_InputScriptType, {\n $id: 'InputScriptType'\n});\nvar Enum_OutputScriptType;\n(function (Enum_OutputScriptType) {\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOADDRESS\"] = 0] = \"PAYTOADDRESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOSCRIPTHASH\"] = 1] = \"PAYTOSCRIPTHASH\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOMULTISIG\"] = 2] = \"PAYTOMULTISIG\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOOPRETURN\"] = 3] = \"PAYTOOPRETURN\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOWITNESS\"] = 4] = \"PAYTOWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOP2SHWITNESS\"] = 5] = \"PAYTOP2SHWITNESS\";\n Enum_OutputScriptType[Enum_OutputScriptType[\"PAYTOTAPROOT\"] = 6] = \"PAYTOTAPROOT\";\n})(Enum_OutputScriptType || (exports.Enum_OutputScriptType = Enum_OutputScriptType = {}));\nexports.EnumEnum_OutputScriptType = schema_utils_1.Type.Enum(Enum_OutputScriptType);\nexports.OutputScriptType = schema_utils_1.Type.KeyOfEnum(Enum_OutputScriptType, {\n $id: 'OutputScriptType'\n});\nvar DecredStakingSpendType;\n(function (DecredStakingSpendType) {\n DecredStakingSpendType[DecredStakingSpendType[\"SSGen\"] = 0] = \"SSGen\";\n DecredStakingSpendType[DecredStakingSpendType[\"SSRTX\"] = 1] = \"SSRTX\";\n})(DecredStakingSpendType || (exports.DecredStakingSpendType = DecredStakingSpendType = {}));\nexports.EnumDecredStakingSpendType = schema_utils_1.Type.Enum(DecredStakingSpendType);\nexports.TextMemo = schema_utils_1.Type.Object({\n text: schema_utils_1.Type.String()\n}, {\n $id: 'TextMemo'\n});\nexports.RefundMemo = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n mac: schema_utils_1.Type.String()\n}, {\n $id: 'RefundMemo'\n});\nexports.CoinPurchaseMemo = schema_utils_1.Type.Object({\n coin_type: schema_utils_1.Type.Number(),\n amount: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String(),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n mac: schema_utils_1.Type.String()\n}, {\n $id: 'CoinPurchaseMemo'\n});\nexports.TextDetailsMemo = schema_utils_1.Type.Object({\n title: schema_utils_1.Type.String(),\n text: schema_utils_1.Type.String()\n}, {\n $id: 'TextDetailsMemo'\n});\nexports.PaymentRequestMemo = schema_utils_1.Type.Object({\n text_memo: schema_utils_1.Type.Optional(exports.TextMemo),\n refund_memo: schema_utils_1.Type.Optional(exports.RefundMemo),\n coin_purchase_memo: schema_utils_1.Type.Optional(exports.CoinPurchaseMemo),\n text_details_memo: schema_utils_1.Type.Optional(exports.TextDetailsMemo)\n}, {\n $id: 'PaymentRequestMemo'\n});\nexports.PaymentRequest = schema_utils_1.Type.Object({\n nonce: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n recipient_name: schema_utils_1.Type.String(),\n memos: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.PaymentRequestMemo)),\n amount: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'PaymentRequest'\n});\nvar AmountUnit;\n(function (AmountUnit) {\n AmountUnit[AmountUnit[\"BITCOIN\"] = 0] = \"BITCOIN\";\n AmountUnit[AmountUnit[\"MILLIBITCOIN\"] = 1] = \"MILLIBITCOIN\";\n AmountUnit[AmountUnit[\"MICROBITCOIN\"] = 2] = \"MICROBITCOIN\";\n AmountUnit[AmountUnit[\"SATOSHI\"] = 3] = \"SATOSHI\";\n})(AmountUnit || (exports.AmountUnit = AmountUnit = {}));\nexports.EnumAmountUnit = schema_utils_1.Type.Enum(AmountUnit);\nvar MultisigPubkeysOrder;\n(function (MultisigPubkeysOrder) {\n MultisigPubkeysOrder[MultisigPubkeysOrder[\"PRESERVED\"] = 0] = \"PRESERVED\";\n MultisigPubkeysOrder[MultisigPubkeysOrder[\"LEXICOGRAPHIC\"] = 1] = \"LEXICOGRAPHIC\";\n})(MultisigPubkeysOrder || (exports.MultisigPubkeysOrder = MultisigPubkeysOrder = {}));\nexports.EnumMultisigPubkeysOrder = schema_utils_1.Type.Enum(MultisigPubkeysOrder);\nexports.HDNodeType = schema_utils_1.Type.Object({\n depth: schema_utils_1.Type.Number(),\n fingerprint: schema_utils_1.Type.Number(),\n child_num: schema_utils_1.Type.Number(),\n chain_code: schema_utils_1.Type.String(),\n private_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n public_key: schema_utils_1.Type.String()\n}, {\n $id: 'HDNodeType'\n});\nexports.HDNodePathType = schema_utils_1.Type.Object({\n node: schema_utils_1.Type.Union([exports.HDNodeType, schema_utils_1.Type.String()]),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number())\n}, {\n $id: 'HDNodePathType'\n});\nexports.MultisigRedeemScriptType = schema_utils_1.Type.Object({\n pubkeys: schema_utils_1.Type.Array(exports.HDNodePathType),\n signatures: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n m: schema_utils_1.Type.Number(),\n nodes: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.HDNodeType)),\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n pubkeys_order: schema_utils_1.Type.Optional(exports.EnumMultisigPubkeysOrder)\n}, {\n $id: 'MultisigRedeemScriptType'\n});\nexports.GetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType),\n ignore_xpub_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'GetPublicKey'\n});\nexports.PublicKey = schema_utils_1.Type.Object({\n node: exports.HDNodeType,\n xpub: schema_utils_1.Type.String(),\n root_fingerprint: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n descriptor: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'PublicKey'\n});\nexports.GetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType),\n ignore_xpub_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'GetAddress'\n});\nexports.Address = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'Address'\n});\nexports.GetOwnershipId = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType)\n}, {\n $id: 'GetOwnershipId'\n});\nexports.OwnershipId = schema_utils_1.Type.Object({\n ownership_id: schema_utils_1.Type.String()\n}, {\n $id: 'OwnershipId'\n});\nexports.SignMessage = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n message: schema_utils_1.Type.String(),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType),\n no_script_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'SignMessage'\n});\nexports.MessageSignature = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'MessageSignature'\n});\nexports.VerifyMessage = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String(),\n message: schema_utils_1.Type.String(),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'VerifyMessage'\n});\nexports.CoinJoinRequest = schema_utils_1.Type.Object({\n fee_rate: schema_utils_1.Type.Number(),\n no_fee_threshold: schema_utils_1.Type.Number(),\n min_registrable_amount: schema_utils_1.Type.Number(),\n mask_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CoinJoinRequest'\n});\nexports.SignTx = schema_utils_1.Type.Object({\n outputs_count: schema_utils_1.Type.Number(),\n inputs_count: schema_utils_1.Type.Number(),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n lock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n overwintered: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n amount_unit: schema_utils_1.Type.Optional(exports.EnumAmountUnit),\n decred_staking_ticket: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n serialize: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n coinjoin_request: schema_utils_1.Type.Optional(exports.CoinJoinRequest),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'SignTx'\n});\nvar Enum_RequestType;\n(function (Enum_RequestType) {\n Enum_RequestType[Enum_RequestType[\"TXINPUT\"] = 0] = \"TXINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXOUTPUT\"] = 1] = \"TXOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXMETA\"] = 2] = \"TXMETA\";\n Enum_RequestType[Enum_RequestType[\"TXFINISHED\"] = 3] = \"TXFINISHED\";\n Enum_RequestType[Enum_RequestType[\"TXEXTRADATA\"] = 4] = \"TXEXTRADATA\";\n Enum_RequestType[Enum_RequestType[\"TXORIGINPUT\"] = 5] = \"TXORIGINPUT\";\n Enum_RequestType[Enum_RequestType[\"TXORIGOUTPUT\"] = 6] = \"TXORIGOUTPUT\";\n Enum_RequestType[Enum_RequestType[\"TXPAYMENTREQ\"] = 7] = \"TXPAYMENTREQ\";\n})(Enum_RequestType || (exports.Enum_RequestType = Enum_RequestType = {}));\nexports.EnumEnum_RequestType = schema_utils_1.Type.Enum(Enum_RequestType);\nexports.RequestType = schema_utils_1.Type.KeyOfEnum(Enum_RequestType, {\n $id: 'RequestType'\n});\nexports.TxRequestDetailsType = schema_utils_1.Type.Object({\n request_index: schema_utils_1.Type.Number(),\n tx_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n extra_data_offset: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'TxRequestDetailsType'\n});\nexports.TxRequestSerializedType = schema_utils_1.Type.Object({\n signature_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n serialized_tx: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'TxRequestSerializedType'\n});\nexports.TxRequest = schema_utils_1.Type.Object({\n request_type: exports.RequestType,\n details: exports.TxRequestDetailsType,\n serialized: schema_utils_1.Type.Optional(exports.TxRequestSerializedType)\n}, {\n $id: 'TxRequest'\n});\nexports.InternalInputScriptType = schema_utils_1.Type.Exclude(exports.InputScriptType, schema_utils_1.Type.Literal('EXTERNAL'), {\n $id: 'InternalInputScriptType'\n});\nconst CommonTxInputType = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number(),\n amount: schema_utils_1.Type.Uint(),\n sequence: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n decred_tree: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n decred_staking_spend: schema_utils_1.Type.Optional(exports.EnumDecredStakingSpendType),\n script_pubkey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n coinjoin_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n script_sig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n witness: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ownership_proof: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n commitment_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CommonTxInputType'\n});\nexports.TxInputType = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([CommonTxInputType, schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n script_type: schema_utils_1.Type.Optional(exports.InternalInputScriptType)\n})]), schema_utils_1.Type.Intersect([CommonTxInputType, schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n script_type: schema_utils_1.Type.Literal('EXTERNAL'),\n script_pubkey: schema_utils_1.Type.String()\n})])], {\n $id: 'TxInputType'\n});\nexports.TxInput = (0, schema_utils_1.CloneType)(exports.TxInputType, {\n $id: 'TxInput'\n});\nexports.TxOutputBinType = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Uint(),\n script_pubkey: schema_utils_1.Type.String(),\n decred_script_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'TxOutputBinType'\n});\nexports.ChangeOutputScriptType = schema_utils_1.Type.Exclude(exports.OutputScriptType, schema_utils_1.Type.Literal('PAYTOOPRETURN'), {\n $id: 'ChangeOutputScriptType'\n});\nexports.TxOutputType = schema_utils_1.Type.Union([schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n script_type: schema_utils_1.Type.Literal('PAYTOADDRESS'),\n amount: schema_utils_1.Type.Uint(),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}), schema_utils_1.Type.Object({\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n script_type: schema_utils_1.Type.Optional(exports.ChangeOutputScriptType),\n amount: schema_utils_1.Type.Uint(),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}), schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n script_type: schema_utils_1.Type.Optional(exports.ChangeOutputScriptType),\n amount: schema_utils_1.Type.Uint(),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}), schema_utils_1.Type.Object({\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n amount: schema_utils_1.Type.Union([schema_utils_1.Type.Literal('0'), schema_utils_1.Type.Literal(0)]),\n op_return_data: schema_utils_1.Type.String(),\n script_type: schema_utils_1.Type.Literal('PAYTOOPRETURN'),\n orig_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_req_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n})], {\n $id: 'TxOutputType'\n});\nexports.TxOutput = (0, schema_utils_1.CloneType)(exports.TxOutputType, {\n $id: 'TxOutput'\n});\nexports.PrevTx = schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Number(),\n lock_time: schema_utils_1.Type.Number(),\n inputs_count: schema_utils_1.Type.Number(),\n outputs_count: schema_utils_1.Type.Number(),\n extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'PrevTx'\n});\nexports.PrevInput = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number(),\n script_sig: schema_utils_1.Type.String(),\n sequence: schema_utils_1.Type.Number(),\n decred_tree: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'PrevInput'\n});\nexports.PrevOutput = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Uint(),\n script_pubkey: schema_utils_1.Type.String(),\n decred_script_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'PrevOutput'\n});\nexports.TxAckResponse = schema_utils_1.Type.Union([schema_utils_1.Type.Object({\n inputs: schema_utils_1.Type.Array(schema_utils_1.Type.Union([exports.TxInputType, exports.PrevInput]))\n}), schema_utils_1.Type.Object({\n bin_outputs: schema_utils_1.Type.Array(exports.TxOutputBinType)\n}), schema_utils_1.Type.Object({\n outputs: schema_utils_1.Type.Array(exports.TxOutputType)\n}), schema_utils_1.Type.Object({\n extra_data: schema_utils_1.Type.String()\n}), schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n lock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n inputs_cnt: schema_utils_1.Type.Number(),\n outputs_cnt: schema_utils_1.Type.Number(),\n extra_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n extra_data_len: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n expiry: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n branch_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n})], {\n $id: 'TxAckResponse'\n});\nexports.TxAck = schema_utils_1.Type.Object({\n tx: exports.TxAckResponse\n}, {\n $id: 'TxAck'\n});\nexports.TxAckInputWrapper = schema_utils_1.Type.Object({\n input: exports.TxInput\n}, {\n $id: 'TxAckInputWrapper'\n});\nexports.TxAckInput = schema_utils_1.Type.Object({\n tx: exports.TxAckInputWrapper\n}, {\n $id: 'TxAckInput'\n});\nexports.TxAckOutputWrapper = schema_utils_1.Type.Object({\n output: exports.TxOutput\n}, {\n $id: 'TxAckOutputWrapper'\n});\nexports.TxAckOutput = schema_utils_1.Type.Object({\n tx: exports.TxAckOutputWrapper\n}, {\n $id: 'TxAckOutput'\n});\nexports.TxAckPrevMeta = schema_utils_1.Type.Object({\n tx: exports.PrevTx\n}, {\n $id: 'TxAckPrevMeta'\n});\nexports.TxAckPrevInputWrapper = schema_utils_1.Type.Object({\n input: exports.PrevInput\n}, {\n $id: 'TxAckPrevInputWrapper'\n});\nexports.TxAckPrevInput = schema_utils_1.Type.Object({\n tx: exports.TxAckPrevInputWrapper\n}, {\n $id: 'TxAckPrevInput'\n});\nexports.TxAckPrevOutputWrapper = schema_utils_1.Type.Object({\n output: exports.PrevOutput\n}, {\n $id: 'TxAckPrevOutputWrapper'\n});\nexports.TxAckPrevOutput = schema_utils_1.Type.Object({\n tx: exports.TxAckPrevOutputWrapper\n}, {\n $id: 'TxAckPrevOutput'\n});\nexports.TxAckPrevExtraDataWrapper = schema_utils_1.Type.Object({\n extra_data_chunk: schema_utils_1.Type.String()\n}, {\n $id: 'TxAckPrevExtraDataWrapper'\n});\nexports.TxAckPrevExtraData = schema_utils_1.Type.Object({\n tx: exports.TxAckPrevExtraDataWrapper\n}, {\n $id: 'TxAckPrevExtraData'\n});\nexports.GetOwnershipProof = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType),\n multisig: schema_utils_1.Type.Optional(exports.MultisigRedeemScriptType),\n user_confirmation: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n ownership_ids: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String())),\n commitment_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'GetOwnershipProof'\n});\nexports.OwnershipProof = schema_utils_1.Type.Object({\n ownership_proof: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'OwnershipProof'\n});\nexports.AuthorizeCoinJoin = schema_utils_1.Type.Object({\n coordinator: schema_utils_1.Type.String(),\n max_rounds: schema_utils_1.Type.Number(),\n max_coordinator_fee_rate: schema_utils_1.Type.Number(),\n max_fee_per_kvbyte: schema_utils_1.Type.Number(),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n coin_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_type: schema_utils_1.Type.Optional(exports.InputScriptType),\n amount_unit: schema_utils_1.Type.Optional(exports.EnumAmountUnit)\n}, {\n $id: 'AuthorizeCoinJoin'\n});\nexports.BleUnpair = schema_utils_1.Type.Object({\n all: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n addr: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'BleUnpair'\n});\nexports.FirmwareErase = schema_utils_1.Type.Object({\n length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'FirmwareErase'\n});\nexports.FirmwareRequest = schema_utils_1.Type.Object({\n offset: schema_utils_1.Type.Number(),\n length: schema_utils_1.Type.Number()\n}, {\n $id: 'FirmwareRequest'\n});\nexports.FirmwareUpload = schema_utils_1.Type.Object({\n payload: schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.ArrayBuffer()]),\n hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'FirmwareUpload'\n});\nexports.ProdTestT1 = schema_utils_1.Type.Object({\n payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'ProdTestT1'\n});\nvar CardanoDerivationType;\n(function (CardanoDerivationType) {\n CardanoDerivationType[CardanoDerivationType[\"LEDGER\"] = 0] = \"LEDGER\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS\"] = 1] = \"ICARUS\";\n CardanoDerivationType[CardanoDerivationType[\"ICARUS_TREZOR\"] = 2] = \"ICARUS_TREZOR\";\n})(CardanoDerivationType || (exports.CardanoDerivationType = CardanoDerivationType = {}));\nexports.EnumCardanoDerivationType = schema_utils_1.Type.Enum(CardanoDerivationType);\nvar CardanoAddressType;\n(function (CardanoAddressType) {\n CardanoAddressType[CardanoAddressType[\"BASE\"] = 0] = \"BASE\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_KEY\"] = 1] = \"BASE_SCRIPT_KEY\";\n CardanoAddressType[CardanoAddressType[\"BASE_KEY_SCRIPT\"] = 2] = \"BASE_KEY_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BASE_SCRIPT_SCRIPT\"] = 3] = \"BASE_SCRIPT_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"POINTER\"] = 4] = \"POINTER\";\n CardanoAddressType[CardanoAddressType[\"POINTER_SCRIPT\"] = 5] = \"POINTER_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE\"] = 6] = \"ENTERPRISE\";\n CardanoAddressType[CardanoAddressType[\"ENTERPRISE_SCRIPT\"] = 7] = \"ENTERPRISE_SCRIPT\";\n CardanoAddressType[CardanoAddressType[\"BYRON\"] = 8] = \"BYRON\";\n CardanoAddressType[CardanoAddressType[\"REWARD\"] = 14] = \"REWARD\";\n CardanoAddressType[CardanoAddressType[\"REWARD_SCRIPT\"] = 15] = \"REWARD_SCRIPT\";\n})(CardanoAddressType || (exports.CardanoAddressType = CardanoAddressType = {}));\nexports.EnumCardanoAddressType = schema_utils_1.Type.Enum(CardanoAddressType);\nvar CardanoNativeScriptType;\n(function (CardanoNativeScriptType) {\n CardanoNativeScriptType[CardanoNativeScriptType[\"PUB_KEY\"] = 0] = \"PUB_KEY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ALL\"] = 1] = \"ALL\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"ANY\"] = 2] = \"ANY\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"N_OF_K\"] = 3] = \"N_OF_K\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_BEFORE\"] = 4] = \"INVALID_BEFORE\";\n CardanoNativeScriptType[CardanoNativeScriptType[\"INVALID_HEREAFTER\"] = 5] = \"INVALID_HEREAFTER\";\n})(CardanoNativeScriptType || (exports.CardanoNativeScriptType = CardanoNativeScriptType = {}));\nexports.EnumCardanoNativeScriptType = schema_utils_1.Type.Enum(CardanoNativeScriptType);\nvar CardanoNativeScriptHashDisplayFormat;\n(function (CardanoNativeScriptHashDisplayFormat) {\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"HIDE\"] = 0] = \"HIDE\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"BECH32\"] = 1] = \"BECH32\";\n CardanoNativeScriptHashDisplayFormat[CardanoNativeScriptHashDisplayFormat[\"POLICY_ID\"] = 2] = \"POLICY_ID\";\n})(CardanoNativeScriptHashDisplayFormat || (exports.CardanoNativeScriptHashDisplayFormat = CardanoNativeScriptHashDisplayFormat = {}));\nexports.EnumCardanoNativeScriptHashDisplayFormat = schema_utils_1.Type.Enum(CardanoNativeScriptHashDisplayFormat);\nvar CardanoTxOutputSerializationFormat;\n(function (CardanoTxOutputSerializationFormat) {\n CardanoTxOutputSerializationFormat[CardanoTxOutputSerializationFormat[\"ARRAY_LEGACY\"] = 0] = \"ARRAY_LEGACY\";\n CardanoTxOutputSerializationFormat[CardanoTxOutputSerializationFormat[\"MAP_BABBAGE\"] = 1] = \"MAP_BABBAGE\";\n})(CardanoTxOutputSerializationFormat || (exports.CardanoTxOutputSerializationFormat = CardanoTxOutputSerializationFormat = {}));\nexports.EnumCardanoTxOutputSerializationFormat = schema_utils_1.Type.Enum(CardanoTxOutputSerializationFormat);\nvar CardanoCertificateType;\n(function (CardanoCertificateType) {\n CardanoCertificateType[CardanoCertificateType[\"STAKE_REGISTRATION\"] = 0] = \"STAKE_REGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DEREGISTRATION\"] = 1] = \"STAKE_DEREGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DELEGATION\"] = 2] = \"STAKE_DELEGATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_POOL_REGISTRATION\"] = 3] = \"STAKE_POOL_REGISTRATION\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_REGISTRATION_CONWAY\"] = 7] = \"STAKE_REGISTRATION_CONWAY\";\n CardanoCertificateType[CardanoCertificateType[\"STAKE_DEREGISTRATION_CONWAY\"] = 8] = \"STAKE_DEREGISTRATION_CONWAY\";\n CardanoCertificateType[CardanoCertificateType[\"VOTE_DELEGATION\"] = 9] = \"VOTE_DELEGATION\";\n})(CardanoCertificateType || (exports.CardanoCertificateType = CardanoCertificateType = {}));\nexports.EnumCardanoCertificateType = schema_utils_1.Type.Enum(CardanoCertificateType);\nvar CardanoDRepType;\n(function (CardanoDRepType) {\n CardanoDRepType[CardanoDRepType[\"KEY_HASH\"] = 0] = \"KEY_HASH\";\n CardanoDRepType[CardanoDRepType[\"SCRIPT_HASH\"] = 1] = \"SCRIPT_HASH\";\n CardanoDRepType[CardanoDRepType[\"ABSTAIN\"] = 2] = \"ABSTAIN\";\n CardanoDRepType[CardanoDRepType[\"NO_CONFIDENCE\"] = 3] = \"NO_CONFIDENCE\";\n})(CardanoDRepType || (exports.CardanoDRepType = CardanoDRepType = {}));\nexports.EnumCardanoDRepType = schema_utils_1.Type.Enum(CardanoDRepType);\nvar CardanoPoolRelayType;\n(function (CardanoPoolRelayType) {\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_IP\"] = 0] = \"SINGLE_HOST_IP\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"SINGLE_HOST_NAME\"] = 1] = \"SINGLE_HOST_NAME\";\n CardanoPoolRelayType[CardanoPoolRelayType[\"MULTIPLE_HOST_NAME\"] = 2] = \"MULTIPLE_HOST_NAME\";\n})(CardanoPoolRelayType || (exports.CardanoPoolRelayType = CardanoPoolRelayType = {}));\nexports.EnumCardanoPoolRelayType = schema_utils_1.Type.Enum(CardanoPoolRelayType);\nvar CardanoTxAuxiliaryDataSupplementType;\n(function (CardanoTxAuxiliaryDataSupplementType) {\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"NONE\"] = 0] = \"NONE\";\n CardanoTxAuxiliaryDataSupplementType[CardanoTxAuxiliaryDataSupplementType[\"CVOTE_REGISTRATION_SIGNATURE\"] = 1] = \"CVOTE_REGISTRATION_SIGNATURE\";\n})(CardanoTxAuxiliaryDataSupplementType || (exports.CardanoTxAuxiliaryDataSupplementType = CardanoTxAuxiliaryDataSupplementType = {}));\nexports.EnumCardanoTxAuxiliaryDataSupplementType = schema_utils_1.Type.Enum(CardanoTxAuxiliaryDataSupplementType);\nvar CardanoCVoteRegistrationFormat;\n(function (CardanoCVoteRegistrationFormat) {\n CardanoCVoteRegistrationFormat[CardanoCVoteRegistrationFormat[\"CIP15\"] = 0] = \"CIP15\";\n CardanoCVoteRegistrationFormat[CardanoCVoteRegistrationFormat[\"CIP36\"] = 1] = \"CIP36\";\n})(CardanoCVoteRegistrationFormat || (exports.CardanoCVoteRegistrationFormat = CardanoCVoteRegistrationFormat = {}));\nexports.EnumCardanoCVoteRegistrationFormat = schema_utils_1.Type.Enum(CardanoCVoteRegistrationFormat);\nvar CardanoTxSigningMode;\n(function (CardanoTxSigningMode) {\n CardanoTxSigningMode[CardanoTxSigningMode[\"ORDINARY_TRANSACTION\"] = 0] = \"ORDINARY_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"POOL_REGISTRATION_AS_OWNER\"] = 1] = \"POOL_REGISTRATION_AS_OWNER\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"MULTISIG_TRANSACTION\"] = 2] = \"MULTISIG_TRANSACTION\";\n CardanoTxSigningMode[CardanoTxSigningMode[\"PLUTUS_TRANSACTION\"] = 3] = \"PLUTUS_TRANSACTION\";\n})(CardanoTxSigningMode || (exports.CardanoTxSigningMode = CardanoTxSigningMode = {}));\nexports.EnumCardanoTxSigningMode = schema_utils_1.Type.Enum(CardanoTxSigningMode);\nvar CardanoTxWitnessType;\n(function (CardanoTxWitnessType) {\n CardanoTxWitnessType[CardanoTxWitnessType[\"BYRON_WITNESS\"] = 0] = \"BYRON_WITNESS\";\n CardanoTxWitnessType[CardanoTxWitnessType[\"SHELLEY_WITNESS\"] = 1] = \"SHELLEY_WITNESS\";\n})(CardanoTxWitnessType || (exports.CardanoTxWitnessType = CardanoTxWitnessType = {}));\nexports.EnumCardanoTxWitnessType = schema_utils_1.Type.Enum(CardanoTxWitnessType);\nexports.CardanoBlockchainPointerType = schema_utils_1.Type.Object({\n block_index: schema_utils_1.Type.Number(),\n tx_index: schema_utils_1.Type.Number(),\n certificate_index: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoBlockchainPointerType'\n});\nexports.CardanoNativeScript = schema_utils_1.Type.Recursive(This => schema_utils_1.Type.Object({\n type: exports.EnumCardanoNativeScriptType,\n scripts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(This)),\n key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n required_signatures_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n invalid_before: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n invalid_hereafter: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint())\n}), {\n $id: 'CardanoNativeScript'\n});\nexports.CardanoGetNativeScriptHash = schema_utils_1.Type.Object({\n script: exports.CardanoNativeScript,\n display_format: exports.EnumCardanoNativeScriptHashDisplayFormat,\n derivation_type: exports.EnumCardanoDerivationType\n}, {\n $id: 'CardanoGetNativeScriptHash'\n});\nexports.CardanoNativeScriptHash = schema_utils_1.Type.Object({\n script_hash: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoNativeScriptHash'\n});\nexports.CardanoAddressParametersType = schema_utils_1.Type.Object({\n address_type: exports.EnumCardanoAddressType,\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n address_n_staking: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n staking_key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n certificate_pointer: schema_utils_1.Type.Optional(exports.CardanoBlockchainPointerType),\n script_payment_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_staking_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoAddressParametersType'\n});\nexports.CardanoGetAddress = schema_utils_1.Type.Object({\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n protocol_magic: schema_utils_1.Type.Number(),\n network_id: schema_utils_1.Type.Number(),\n address_parameters: exports.CardanoAddressParametersType,\n derivation_type: exports.EnumCardanoDerivationType,\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'CardanoGetAddress'\n});\nexports.CardanoAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoAddress'\n});\nexports.CardanoGetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n derivation_type: exports.EnumCardanoDerivationType\n}, {\n $id: 'CardanoGetPublicKey'\n});\nexports.CardanoPublicKey = schema_utils_1.Type.Object({\n xpub: schema_utils_1.Type.String(),\n node: exports.HDNodeType\n}, {\n $id: 'CardanoPublicKey'\n});\nexports.CardanoSignTxInit = schema_utils_1.Type.Object({\n signing_mode: exports.EnumCardanoTxSigningMode,\n protocol_magic: schema_utils_1.Type.Number(),\n network_id: schema_utils_1.Type.Number(),\n inputs_count: schema_utils_1.Type.Number(),\n outputs_count: schema_utils_1.Type.Number(),\n fee: schema_utils_1.Type.Uint(),\n ttl: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n certificates_count: schema_utils_1.Type.Number(),\n withdrawals_count: schema_utils_1.Type.Number(),\n has_auxiliary_data: schema_utils_1.Type.Boolean(),\n validity_interval_start: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n witness_requests_count: schema_utils_1.Type.Number(),\n minting_asset_groups_count: schema_utils_1.Type.Number(),\n derivation_type: exports.EnumCardanoDerivationType,\n include_network_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n script_data_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n collateral_inputs_count: schema_utils_1.Type.Number(),\n required_signers_count: schema_utils_1.Type.Number(),\n has_collateral_return: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n total_collateral: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n reference_inputs_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n tag_cbor_sets: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'CardanoSignTxInit'\n});\nexports.CardanoTxInput = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoTxInput'\n});\nexports.CardanoTxOutput = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n address_parameters: schema_utils_1.Type.Optional(exports.CardanoAddressParametersType),\n amount: schema_utils_1.Type.Uint(),\n asset_groups_count: schema_utils_1.Type.Number(),\n datum_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n format: schema_utils_1.Type.Optional(exports.EnumCardanoTxOutputSerializationFormat),\n inline_datum_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n reference_script_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'CardanoTxOutput'\n});\nexports.CardanoAssetGroup = schema_utils_1.Type.Object({\n policy_id: schema_utils_1.Type.String(),\n tokens_count: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoAssetGroup'\n});\nexports.CardanoToken = schema_utils_1.Type.Object({\n asset_name_bytes: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n mint_amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint({\n allowNegative: true\n }))\n}, {\n $id: 'CardanoToken'\n});\nexports.CardanoTxInlineDatumChunk = schema_utils_1.Type.Object({\n data: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoTxInlineDatumChunk'\n});\nexports.CardanoTxReferenceScriptChunk = schema_utils_1.Type.Object({\n data: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoTxReferenceScriptChunk'\n});\nexports.CardanoPoolOwner = schema_utils_1.Type.Object({\n staking_key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n staking_key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoPoolOwner'\n});\nexports.CardanoPoolRelayParameters = schema_utils_1.Type.Object({\n type: exports.EnumCardanoPoolRelayType,\n ipv4_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ipv6_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n host_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n port: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'CardanoPoolRelayParameters'\n});\nexports.CardanoPoolMetadataType = schema_utils_1.Type.Object({\n url: schema_utils_1.Type.String(),\n hash: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoPoolMetadataType'\n});\nexports.CardanoPoolParametersType = schema_utils_1.Type.Object({\n pool_id: schema_utils_1.Type.String(),\n vrf_key_hash: schema_utils_1.Type.String(),\n pledge: schema_utils_1.Type.Uint(),\n cost: schema_utils_1.Type.Uint(),\n margin_numerator: schema_utils_1.Type.Uint(),\n margin_denominator: schema_utils_1.Type.Uint(),\n reward_account: schema_utils_1.Type.String(),\n metadata: schema_utils_1.Type.Optional(exports.CardanoPoolMetadataType),\n owners_count: schema_utils_1.Type.Number(),\n relays_count: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoPoolParametersType'\n});\nexports.CardanoDRep = schema_utils_1.Type.Object({\n type: exports.EnumCardanoDRepType,\n key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoDRep'\n});\nexports.CardanoTxCertificate = schema_utils_1.Type.Object({\n type: exports.EnumCardanoCertificateType,\n path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n pool: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pool_parameters: schema_utils_1.Type.Optional(exports.CardanoPoolParametersType),\n script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n deposit: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n drep: schema_utils_1.Type.Optional(exports.CardanoDRep)\n}, {\n $id: 'CardanoTxCertificate'\n});\nexports.CardanoTxWithdrawal = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n amount: schema_utils_1.Type.Uint(),\n script_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoTxWithdrawal'\n});\nexports.CardanoCVoteRegistrationDelegation = schema_utils_1.Type.Object({\n vote_public_key: schema_utils_1.Type.String(),\n weight: schema_utils_1.Type.Uint()\n}, {\n $id: 'CardanoCVoteRegistrationDelegation'\n});\nexports.CardanoCVoteRegistrationParametersType = schema_utils_1.Type.Object({\n vote_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n staking_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n payment_address_parameters: schema_utils_1.Type.Optional(exports.CardanoAddressParametersType),\n nonce: schema_utils_1.Type.Uint(),\n format: schema_utils_1.Type.Optional(exports.EnumCardanoCVoteRegistrationFormat),\n delegations: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoCVoteRegistrationDelegation)),\n voting_purpose: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n payment_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoCVoteRegistrationParametersType'\n});\nexports.CardanoTxAuxiliaryData = schema_utils_1.Type.Object({\n cvote_registration_parameters: schema_utils_1.Type.Optional(exports.CardanoCVoteRegistrationParametersType),\n hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoTxAuxiliaryData'\n});\nexports.CardanoTxMint = schema_utils_1.Type.Object({\n asset_groups_count: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoTxMint'\n});\nexports.CardanoTxCollateralInput = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoTxCollateralInput'\n});\nexports.CardanoTxRequiredSigner = schema_utils_1.Type.Object({\n key_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key_path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number()))\n}, {\n $id: 'CardanoTxRequiredSigner'\n});\nexports.CardanoTxReferenceInput = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoTxReferenceInput'\n});\nexports.CardanoTxItemAck = schema_utils_1.Type.Object({}, {\n $id: 'CardanoTxItemAck'\n});\nexports.CardanoTxAuxiliaryDataSupplement = schema_utils_1.Type.Object({\n type: exports.EnumCardanoTxAuxiliaryDataSupplementType,\n auxiliary_data_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n cvote_registration_signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoTxAuxiliaryDataSupplement'\n});\nexports.CardanoTxWitnessRequest = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Array(schema_utils_1.Type.Number())\n}, {\n $id: 'CardanoTxWitnessRequest'\n});\nexports.CardanoTxWitnessResponse = schema_utils_1.Type.Object({\n type: exports.EnumCardanoTxWitnessType,\n pub_key: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String(),\n chain_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CardanoTxWitnessResponse'\n});\nexports.CardanoTxHostAck = schema_utils_1.Type.Object({}, {\n $id: 'CardanoTxHostAck'\n});\nexports.CardanoTxBodyHash = schema_utils_1.Type.Object({\n tx_hash: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoTxBodyHash'\n});\nexports.CardanoSignTxFinished = schema_utils_1.Type.Object({}, {\n $id: 'CardanoSignTxFinished'\n});\nexports.CardanoSignMessageInit = schema_utils_1.Type.Object({\n protocol_magic: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n network_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n signing_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n payload_size: schema_utils_1.Type.Number(),\n prefer_hex_display: schema_utils_1.Type.Boolean(),\n address_parameters: schema_utils_1.Type.Optional(exports.CardanoAddressParametersType),\n derivation_type: exports.EnumCardanoDerivationType\n}, {\n $id: 'CardanoSignMessageInit'\n});\nexports.CardanoMessageDataRequest = schema_utils_1.Type.Object({\n length: schema_utils_1.Type.Number(),\n offset: schema_utils_1.Type.Number()\n}, {\n $id: 'CardanoMessageDataRequest'\n});\nexports.CardanoMessageDataResponse = schema_utils_1.Type.Object({\n data: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoMessageDataResponse'\n});\nexports.CardanoMessageSignature = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String(),\n pub_key: schema_utils_1.Type.String()\n}, {\n $id: 'CardanoMessageSignature'\n});\nexports.Success = schema_utils_1.Type.Object({\n message: schema_utils_1.Type.String()\n}, {\n $id: 'Success'\n});\nvar Enum_FailureType;\n(function (Enum_FailureType) {\n Enum_FailureType[Enum_FailureType[\"Failure_UnexpectedMessage\"] = 1] = \"Failure_UnexpectedMessage\";\n Enum_FailureType[Enum_FailureType[\"Failure_ButtonExpected\"] = 2] = \"Failure_ButtonExpected\";\n Enum_FailureType[Enum_FailureType[\"Failure_DataError\"] = 3] = \"Failure_DataError\";\n Enum_FailureType[Enum_FailureType[\"Failure_ActionCancelled\"] = 4] = \"Failure_ActionCancelled\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinExpected\"] = 5] = \"Failure_PinExpected\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinCancelled\"] = 6] = \"Failure_PinCancelled\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinInvalid\"] = 7] = \"Failure_PinInvalid\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidSignature\"] = 8] = \"Failure_InvalidSignature\";\n Enum_FailureType[Enum_FailureType[\"Failure_ProcessError\"] = 9] = \"Failure_ProcessError\";\n Enum_FailureType[Enum_FailureType[\"Failure_NotEnoughFunds\"] = 10] = \"Failure_NotEnoughFunds\";\n Enum_FailureType[Enum_FailureType[\"Failure_NotInitialized\"] = 11] = \"Failure_NotInitialized\";\n Enum_FailureType[Enum_FailureType[\"Failure_PinMismatch\"] = 12] = \"Failure_PinMismatch\";\n Enum_FailureType[Enum_FailureType[\"Failure_WipeCodeMismatch\"] = 13] = \"Failure_WipeCodeMismatch\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidSession\"] = 14] = \"Failure_InvalidSession\";\n Enum_FailureType[Enum_FailureType[\"Failure_Busy\"] = 15] = \"Failure_Busy\";\n Enum_FailureType[Enum_FailureType[\"Failure_ThpUnallocatedSession\"] = 16] = \"Failure_ThpUnallocatedSession\";\n Enum_FailureType[Enum_FailureType[\"Failure_InvalidProtocol\"] = 17] = \"Failure_InvalidProtocol\";\n Enum_FailureType[Enum_FailureType[\"Failure_BufferError\"] = 18] = \"Failure_BufferError\";\n Enum_FailureType[Enum_FailureType[\"Failure_FirmwareError\"] = 99] = \"Failure_FirmwareError\";\n})(Enum_FailureType || (exports.Enum_FailureType = Enum_FailureType = {}));\nexports.EnumEnum_FailureType = schema_utils_1.Type.Enum(Enum_FailureType);\nexports.FailureType = schema_utils_1.Type.KeyOfEnum(Enum_FailureType, {\n $id: 'FailureType'\n});\nexports.Failure = schema_utils_1.Type.Object({\n code: schema_utils_1.Type.Optional(exports.FailureType),\n message: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'Failure'\n});\nvar Enum_ButtonRequestType;\n(function (Enum_ButtonRequestType) {\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Other\"] = 1] = \"ButtonRequest_Other\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FeeOverThreshold\"] = 2] = \"ButtonRequest_FeeOverThreshold\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmOutput\"] = 3] = \"ButtonRequest_ConfirmOutput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ResetDevice\"] = 4] = \"ButtonRequest_ResetDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ConfirmWord\"] = 5] = \"ButtonRequest_ConfirmWord\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_WipeDevice\"] = 6] = \"ButtonRequest_WipeDevice\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_ProtectCall\"] = 7] = \"ButtonRequest_ProtectCall\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_SignTx\"] = 8] = \"ButtonRequest_SignTx\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_FirmwareCheck\"] = 9] = \"ButtonRequest_FirmwareCheck\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Address\"] = 10] = \"ButtonRequest_Address\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PublicKey\"] = 11] = \"ButtonRequest_PublicKey\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicWordCount\"] = 12] = \"ButtonRequest_MnemonicWordCount\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_MnemonicInput\"] = 13] = \"ButtonRequest_MnemonicInput\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"_Deprecated_ButtonRequest_PassphraseType\"] = 14] = \"_Deprecated_ButtonRequest_PassphraseType\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_UnknownDerivationPath\"] = 15] = \"ButtonRequest_UnknownDerivationPath\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_RecoveryHomepage\"] = 16] = \"ButtonRequest_RecoveryHomepage\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Success\"] = 17] = \"ButtonRequest_Success\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_Warning\"] = 18] = \"ButtonRequest_Warning\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PassphraseEntry\"] = 19] = \"ButtonRequest_PassphraseEntry\";\n Enum_ButtonRequestType[Enum_ButtonRequestType[\"ButtonRequest_PinEntry\"] = 20] = \"ButtonRequest_PinEntry\";\n})(Enum_ButtonRequestType || (exports.Enum_ButtonRequestType = Enum_ButtonRequestType = {}));\nexports.EnumEnum_ButtonRequestType = schema_utils_1.Type.Enum(Enum_ButtonRequestType);\nexports.ButtonRequestType = schema_utils_1.Type.KeyOfEnum(Enum_ButtonRequestType, {\n $id: 'ButtonRequestType'\n});\nexports.ButtonRequest = schema_utils_1.Type.Object({\n code: schema_utils_1.Type.Optional(exports.ButtonRequestType),\n pages: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n name: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'ButtonRequest'\n});\nexports.ButtonAck = schema_utils_1.Type.Object({}, {\n $id: 'ButtonAck'\n});\nvar Enum_PinMatrixRequestType;\n(function (Enum_PinMatrixRequestType) {\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_Current\"] = 1] = \"PinMatrixRequestType_Current\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewFirst\"] = 2] = \"PinMatrixRequestType_NewFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_NewSecond\"] = 3] = \"PinMatrixRequestType_NewSecond\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeFirst\"] = 4] = \"PinMatrixRequestType_WipeCodeFirst\";\n Enum_PinMatrixRequestType[Enum_PinMatrixRequestType[\"PinMatrixRequestType_WipeCodeSecond\"] = 5] = \"PinMatrixRequestType_WipeCodeSecond\";\n})(Enum_PinMatrixRequestType || (exports.Enum_PinMatrixRequestType = Enum_PinMatrixRequestType = {}));\nexports.EnumEnum_PinMatrixRequestType = schema_utils_1.Type.Enum(Enum_PinMatrixRequestType);\nexports.PinMatrixRequestType = schema_utils_1.Type.KeyOfEnum(Enum_PinMatrixRequestType, {\n $id: 'PinMatrixRequestType'\n});\nexports.PinMatrixRequest = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Optional(exports.PinMatrixRequestType)\n}, {\n $id: 'PinMatrixRequest'\n});\nexports.PinMatrixAck = schema_utils_1.Type.Object({\n pin: schema_utils_1.Type.String()\n}, {\n $id: 'PinMatrixAck'\n});\nexports.PassphraseRequest = schema_utils_1.Type.Object({\n _on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'PassphraseRequest'\n});\nexports.PassphraseAck = schema_utils_1.Type.Object({\n passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n _state: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'PassphraseAck'\n});\nexports.Deprecated_PassphraseStateRequest = schema_utils_1.Type.Object({\n state: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'Deprecated_PassphraseStateRequest'\n});\nexports.Deprecated_PassphraseStateAck = schema_utils_1.Type.Object({}, {\n $id: 'Deprecated_PassphraseStateAck'\n});\nexports.CipherKeyValue = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n key: schema_utils_1.Type.String(),\n value: schema_utils_1.Type.String(),\n encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n ask_on_encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n ask_on_decrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n iv: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'CipherKeyValue'\n});\nexports.CipheredKeyValue = schema_utils_1.Type.Object({\n value: schema_utils_1.Type.String()\n}, {\n $id: 'CipheredKeyValue'\n});\nexports.IdentityType = schema_utils_1.Type.Object({\n proto: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n user: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n host: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n port: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n path: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'IdentityType'\n});\nexports.SignIdentity = schema_utils_1.Type.Object({\n identity: exports.IdentityType,\n challenge_hidden: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n challenge_visual: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'SignIdentity'\n});\nexports.SignedIdentity = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n public_key: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'SignedIdentity'\n});\nexports.GetECDHSessionKey = schema_utils_1.Type.Object({\n identity: exports.IdentityType,\n peer_public_key: schema_utils_1.Type.String(),\n ecdsa_curve_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'GetECDHSessionKey'\n});\nexports.ECDHSessionKey = schema_utils_1.Type.Object({\n session_key: schema_utils_1.Type.String(),\n public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'ECDHSessionKey'\n});\nexports.PaymentNotification = schema_utils_1.Type.Object({\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'PaymentNotification'\n});\nvar DebugButton;\n(function (DebugButton) {\n DebugButton[DebugButton[\"NO\"] = 0] = \"NO\";\n DebugButton[DebugButton[\"YES\"] = 1] = \"YES\";\n DebugButton[DebugButton[\"INFO\"] = 2] = \"INFO\";\n})(DebugButton || (exports.DebugButton = DebugButton = {}));\nexports.EnumDebugButton = schema_utils_1.Type.Enum(DebugButton);\nvar DebugPhysicalButton;\n(function (DebugPhysicalButton) {\n DebugPhysicalButton[DebugPhysicalButton[\"LEFT_BTN\"] = 0] = \"LEFT_BTN\";\n DebugPhysicalButton[DebugPhysicalButton[\"MIDDLE_BTN\"] = 1] = \"MIDDLE_BTN\";\n DebugPhysicalButton[DebugPhysicalButton[\"RIGHT_BTN\"] = 2] = \"RIGHT_BTN\";\n})(DebugPhysicalButton || (exports.DebugPhysicalButton = DebugPhysicalButton = {}));\nexports.EnumDebugPhysicalButton = schema_utils_1.Type.Enum(DebugPhysicalButton);\nvar DebugTouchEventType;\n(function (DebugTouchEventType) {\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_FULL_CLICK\"] = 0] = \"TOUCH_FULL_CLICK\";\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_START\"] = 1] = \"TOUCH_START\";\n DebugTouchEventType[DebugTouchEventType[\"TOUCH_END\"] = 2] = \"TOUCH_END\";\n})(DebugTouchEventType || (exports.DebugTouchEventType = DebugTouchEventType = {}));\nexports.EnumDebugTouchEventType = schema_utils_1.Type.Enum(DebugTouchEventType);\nvar DebugWaitType;\n(function (DebugWaitType) {\n DebugWaitType[DebugWaitType[\"IMMEDIATE\"] = 0] = \"IMMEDIATE\";\n DebugWaitType[DebugWaitType[\"NEXT_LAYOUT\"] = 1] = \"NEXT_LAYOUT\";\n DebugWaitType[DebugWaitType[\"CURRENT_LAYOUT\"] = 2] = \"CURRENT_LAYOUT\";\n})(DebugWaitType || (exports.DebugWaitType = DebugWaitType = {}));\nexports.EnumDebugWaitType = schema_utils_1.Type.Enum(DebugWaitType);\nexports.DebugLinkGetPairingInfo = schema_utils_1.Type.Object({\n channel_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n handshake_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n nfc_secret_host: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'DebugLinkGetPairingInfo'\n});\nexports.DebugLinkPairingInfo = schema_utils_1.Type.Object({\n channel_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n handshake_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n code_entry_code: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n code_qr_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n nfc_secret_trezor: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'DebugLinkPairingInfo'\n});\nexports.DebugLinkResetDebugEvents = schema_utils_1.Type.Object({}, {\n $id: 'DebugLinkResetDebugEvents'\n});\nexports.DebugLinkOptigaSetSecMax = schema_utils_1.Type.Object({}, {\n $id: 'DebugLinkOptigaSetSecMax'\n});\nexports.DebugLinkGetGcInfo = schema_utils_1.Type.Object({}, {\n $id: 'DebugLinkGetGcInfo'\n});\nexports.DebugLinkGcInfoItem = schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String(),\n value: schema_utils_1.Type.Number()\n}, {\n $id: 'DebugLinkGcInfoItem'\n});\nexports.DebugLinkGcInfo = schema_utils_1.Type.Object({\n items: schema_utils_1.Type.Array(exports.DebugLinkGcInfoItem)\n}, {\n $id: 'DebugLinkGcInfo'\n});\nvar DefinitionType;\n(function (DefinitionType) {\n DefinitionType[DefinitionType[\"ETHEREUM_NETWORK\"] = 0] = \"ETHEREUM_NETWORK\";\n DefinitionType[DefinitionType[\"ETHEREUM_TOKEN\"] = 1] = \"ETHEREUM_TOKEN\";\n DefinitionType[DefinitionType[\"SOLANA_TOKEN\"] = 2] = \"SOLANA_TOKEN\";\n})(DefinitionType || (exports.DefinitionType = DefinitionType = {}));\nexports.EnumDefinitionType = schema_utils_1.Type.Enum(DefinitionType);\nexports.EthereumNetworkInfo = schema_utils_1.Type.Object({\n chain_id: schema_utils_1.Type.Number(),\n symbol: schema_utils_1.Type.String(),\n slip44: schema_utils_1.Type.Number(),\n name: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumNetworkInfo'\n});\nexports.EthereumTokenInfo = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n chain_id: schema_utils_1.Type.Number(),\n symbol: schema_utils_1.Type.String(),\n decimals: schema_utils_1.Type.Number(),\n name: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumTokenInfo'\n});\nexports.SolanaTokenInfo = schema_utils_1.Type.Object({\n mint: schema_utils_1.Type.String(),\n symbol: schema_utils_1.Type.String(),\n name: schema_utils_1.Type.String()\n}, {\n $id: 'SolanaTokenInfo'\n});\nexports.EosGetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EosGetPublicKey'\n});\nexports.EosPublicKey = schema_utils_1.Type.Object({\n wif_public_key: schema_utils_1.Type.String(),\n raw_public_key: schema_utils_1.Type.String()\n}, {\n $id: 'EosPublicKey'\n});\nexports.EosTxHeader = schema_utils_1.Type.Object({\n expiration: schema_utils_1.Type.Number(),\n ref_block_num: schema_utils_1.Type.Number(),\n ref_block_prefix: schema_utils_1.Type.Number(),\n max_net_usage_words: schema_utils_1.Type.Number(),\n max_cpu_usage_ms: schema_utils_1.Type.Number(),\n delay_sec: schema_utils_1.Type.Number()\n}, {\n $id: 'EosTxHeader'\n});\nexports.EosSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n chain_id: schema_utils_1.Type.String(),\n header: exports.EosTxHeader,\n num_actions: schema_utils_1.Type.Number(),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EosSignTx'\n});\nexports.EosTxActionRequest = schema_utils_1.Type.Object({\n data_size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'EosTxActionRequest'\n});\nexports.EosAsset = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Uint(),\n symbol: schema_utils_1.Type.String()\n}, {\n $id: 'EosAsset'\n});\nexports.EosPermissionLevel = schema_utils_1.Type.Object({\n actor: schema_utils_1.Type.String(),\n permission: schema_utils_1.Type.String()\n}, {\n $id: 'EosPermissionLevel'\n});\nexports.EosAuthorizationKey = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n key: schema_utils_1.Type.String(),\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n weight: schema_utils_1.Type.Number()\n}, {\n $id: 'EosAuthorizationKey'\n});\nexports.EosAuthorizationAccount = schema_utils_1.Type.Object({\n account: exports.EosPermissionLevel,\n weight: schema_utils_1.Type.Number()\n}, {\n $id: 'EosAuthorizationAccount'\n});\nexports.EosAuthorizationWait = schema_utils_1.Type.Object({\n wait_sec: schema_utils_1.Type.Number(),\n weight: schema_utils_1.Type.Number()\n}, {\n $id: 'EosAuthorizationWait'\n});\nexports.EosAuthorization = schema_utils_1.Type.Object({\n threshold: schema_utils_1.Type.Number(),\n keys: schema_utils_1.Type.Array(exports.EosAuthorizationKey),\n accounts: schema_utils_1.Type.Array(exports.EosAuthorizationAccount),\n waits: schema_utils_1.Type.Array(exports.EosAuthorizationWait)\n}, {\n $id: 'EosAuthorization'\n});\nexports.EosActionCommon = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n name: schema_utils_1.Type.String(),\n authorization: schema_utils_1.Type.Array(exports.EosPermissionLevel)\n}, {\n $id: 'EosActionCommon'\n});\nexports.EosActionTransfer = schema_utils_1.Type.Object({\n sender: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n quantity: exports.EosAsset,\n memo: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionTransfer'\n});\nexports.EosActionDelegate = schema_utils_1.Type.Object({\n sender: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n net_quantity: exports.EosAsset,\n cpu_quantity: exports.EosAsset,\n transfer: schema_utils_1.Type.Boolean()\n}, {\n $id: 'EosActionDelegate'\n});\nexports.EosActionUndelegate = schema_utils_1.Type.Object({\n sender: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n net_quantity: exports.EosAsset,\n cpu_quantity: exports.EosAsset\n}, {\n $id: 'EosActionUndelegate'\n});\nexports.EosActionRefund = schema_utils_1.Type.Object({\n owner: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionRefund'\n});\nexports.EosActionBuyRam = schema_utils_1.Type.Object({\n payer: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n quantity: exports.EosAsset\n}, {\n $id: 'EosActionBuyRam'\n});\nexports.EosActionBuyRamBytes = schema_utils_1.Type.Object({\n payer: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n bytes: schema_utils_1.Type.Number()\n}, {\n $id: 'EosActionBuyRamBytes'\n});\nexports.EosActionSellRam = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n bytes: schema_utils_1.Type.Number()\n}, {\n $id: 'EosActionSellRam'\n});\nexports.EosActionVoteProducer = schema_utils_1.Type.Object({\n voter: schema_utils_1.Type.String(),\n proxy: schema_utils_1.Type.String(),\n producers: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n}, {\n $id: 'EosActionVoteProducer'\n});\nexports.EosActionUpdateAuth = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n permission: schema_utils_1.Type.String(),\n parent: schema_utils_1.Type.String(),\n auth: exports.EosAuthorization\n}, {\n $id: 'EosActionUpdateAuth'\n});\nexports.EosActionDeleteAuth = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n permission: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionDeleteAuth'\n});\nexports.EosActionLinkAuth = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n code: schema_utils_1.Type.String(),\n type: schema_utils_1.Type.String(),\n requirement: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionLinkAuth'\n});\nexports.EosActionUnlinkAuth = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n code: schema_utils_1.Type.String(),\n type: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionUnlinkAuth'\n});\nexports.EosActionNewAccount = schema_utils_1.Type.Object({\n creator: schema_utils_1.Type.String(),\n name: schema_utils_1.Type.String(),\n owner: exports.EosAuthorization,\n active: exports.EosAuthorization\n}, {\n $id: 'EosActionNewAccount'\n});\nexports.EosActionUnknown = schema_utils_1.Type.Object({\n data_size: schema_utils_1.Type.Number(),\n data_chunk: schema_utils_1.Type.String()\n}, {\n $id: 'EosActionUnknown'\n});\nexports.EosTxActionAck = schema_utils_1.Type.Object({\n common: exports.EosActionCommon,\n transfer: schema_utils_1.Type.Optional(exports.EosActionTransfer),\n delegate: schema_utils_1.Type.Optional(exports.EosActionDelegate),\n undelegate: schema_utils_1.Type.Optional(exports.EosActionUndelegate),\n refund: schema_utils_1.Type.Optional(exports.EosActionRefund),\n buy_ram: schema_utils_1.Type.Optional(exports.EosActionBuyRam),\n buy_ram_bytes: schema_utils_1.Type.Optional(exports.EosActionBuyRamBytes),\n sell_ram: schema_utils_1.Type.Optional(exports.EosActionSellRam),\n vote_producer: schema_utils_1.Type.Optional(exports.EosActionVoteProducer),\n update_auth: schema_utils_1.Type.Optional(exports.EosActionUpdateAuth),\n delete_auth: schema_utils_1.Type.Optional(exports.EosActionDeleteAuth),\n link_auth: schema_utils_1.Type.Optional(exports.EosActionLinkAuth),\n unlink_auth: schema_utils_1.Type.Optional(exports.EosActionUnlinkAuth),\n new_account: schema_utils_1.Type.Optional(exports.EosActionNewAccount),\n unknown: schema_utils_1.Type.Optional(exports.EosActionUnknown)\n}, {\n $id: 'EosTxActionAck'\n});\nexports.EosSignedTx = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'EosSignedTx'\n});\nexports.EthereumDefinitions = schema_utils_1.Type.Object({\n encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()),\n encoded_token: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer())\n}, {\n $id: 'EthereumDefinitions'\n});\nexports.EthereumSignTypedData = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n primary_type: schema_utils_1.Type.String(),\n metamask_v4_compat: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n definitions: schema_utils_1.Type.Optional(exports.EthereumDefinitions),\n show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'EthereumSignTypedData'\n});\nexports.EthereumTypedDataStructRequest = schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumTypedDataStructRequest'\n});\nvar EthereumDataType;\n(function (EthereumDataType) {\n EthereumDataType[EthereumDataType[\"UINT\"] = 1] = \"UINT\";\n EthereumDataType[EthereumDataType[\"INT\"] = 2] = \"INT\";\n EthereumDataType[EthereumDataType[\"BYTES\"] = 3] = \"BYTES\";\n EthereumDataType[EthereumDataType[\"STRING\"] = 4] = \"STRING\";\n EthereumDataType[EthereumDataType[\"BOOL\"] = 5] = \"BOOL\";\n EthereumDataType[EthereumDataType[\"ADDRESS\"] = 6] = \"ADDRESS\";\n EthereumDataType[EthereumDataType[\"ARRAY\"] = 7] = \"ARRAY\";\n EthereumDataType[EthereumDataType[\"STRUCT\"] = 8] = \"STRUCT\";\n})(EthereumDataType || (exports.EthereumDataType = EthereumDataType = {}));\nexports.EnumEthereumDataType = schema_utils_1.Type.Enum(EthereumDataType);\nexports.EthereumFieldType = schema_utils_1.Type.Recursive(This => schema_utils_1.Type.Object({\n data_type: exports.EnumEthereumDataType,\n size: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n entry_type: schema_utils_1.Type.Optional(This),\n struct_name: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}), {\n $id: 'EthereumFieldType'\n});\nexports.EthereumStructMember = schema_utils_1.Type.Object({\n type: exports.EthereumFieldType,\n name: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumStructMember'\n});\nexports.EthereumTypedDataStructAck = schema_utils_1.Type.Object({\n members: schema_utils_1.Type.Array(exports.EthereumStructMember)\n}, {\n $id: 'EthereumTypedDataStructAck'\n});\nexports.EthereumTypedDataValueRequest = schema_utils_1.Type.Object({\n member_path: schema_utils_1.Type.Array(schema_utils_1.Type.Number())\n}, {\n $id: 'EthereumTypedDataValueRequest'\n});\nexports.EthereumTypedDataValueAck = schema_utils_1.Type.Object({\n value: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumTypedDataValueAck'\n});\nexports.EthereumGetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EthereumGetPublicKey'\n});\nexports.EthereumPublicKey = schema_utils_1.Type.Object({\n node: exports.HDNodeType,\n xpub: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumPublicKey'\n});\nexports.EthereumGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EthereumGetAddress'\n});\nexports.EthereumAddress = schema_utils_1.Type.Object({\n _old_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'EthereumAddress'\n});\nexports.EthereumSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n nonce: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n gas_price: schema_utils_1.Type.String(),\n gas_limit: schema_utils_1.Type.String(),\n to: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n value: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n data_initial_chunk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n chain_id: schema_utils_1.Type.Number(),\n tx_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n definitions: schema_utils_1.Type.Optional(exports.EthereumDefinitions),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'EthereumSignTx'\n});\nexports.EthereumAccessList = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n storage_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n}, {\n $id: 'EthereumAccessList'\n});\nexports.EthereumSignTxEIP1559 = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n nonce: schema_utils_1.Type.String(),\n max_gas_fee: schema_utils_1.Type.String(),\n max_priority_fee: schema_utils_1.Type.String(),\n gas_limit: schema_utils_1.Type.String(),\n to: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n value: schema_utils_1.Type.String(),\n data_initial_chunk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n data_length: schema_utils_1.Type.Number(),\n chain_id: schema_utils_1.Type.Number(),\n access_list: schema_utils_1.Type.Array(exports.EthereumAccessList),\n definitions: schema_utils_1.Type.Optional(exports.EthereumDefinitions),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'EthereumSignTxEIP1559'\n});\nexports.EthereumTxRequest = schema_utils_1.Type.Object({\n data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n signature_v: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n signature_r: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n signature_s: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'EthereumTxRequest'\n});\nexports.EthereumTxAck = schema_utils_1.Type.Object({\n data_chunk: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumTxAck'\n});\nexports.EthereumSignMessage = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n message: schema_utils_1.Type.String(),\n encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EthereumSignMessage'\n});\nexports.EthereumMessageSignature = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumMessageSignature'\n});\nexports.EthereumVerifyMessage = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n message: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String(),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EthereumVerifyMessage'\n});\nexports.EthereumSignTypedHash = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n domain_separator_hash: schema_utils_1.Type.String(),\n message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n encoded_network: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer())\n}, {\n $id: 'EthereumSignTypedHash'\n});\nexports.EthereumTypedDataSignature = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String()\n}, {\n $id: 'EthereumTypedDataSignature'\n});\nexports.EvoluGetNode = schema_utils_1.Type.Object({\n proof_of_delegated_identity: schema_utils_1.Type.String()\n}, {\n $id: 'EvoluGetNode'\n});\nexports.EvoluNode = schema_utils_1.Type.Object({\n data: schema_utils_1.Type.String()\n}, {\n $id: 'EvoluNode'\n});\nexports.EvoluSignRegistrationRequest = schema_utils_1.Type.Object({\n challenge_from_server: schema_utils_1.Type.String(),\n size_to_acquire: schema_utils_1.Type.Number(),\n proof_of_delegated_identity: schema_utils_1.Type.String()\n}, {\n $id: 'EvoluSignRegistrationRequest'\n});\nexports.EvoluRegistrationRequest = schema_utils_1.Type.Object({\n certificate_chain: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'EvoluRegistrationRequest'\n});\nexports.EvoluGetDelegatedIdentityKey = schema_utils_1.Type.Object({\n thp_credential: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n host_static_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'EvoluGetDelegatedIdentityKey'\n});\nexports.EvoluDelegatedIdentityKey = schema_utils_1.Type.Object({\n private_key: schema_utils_1.Type.String()\n}, {\n $id: 'EvoluDelegatedIdentityKey'\n});\nvar Enum_BackupType;\n(function (Enum_BackupType) {\n Enum_BackupType[Enum_BackupType[\"Bip39\"] = 0] = \"Bip39\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Basic\"] = 1] = \"Slip39_Basic\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Advanced\"] = 2] = \"Slip39_Advanced\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Single_Extendable\"] = 3] = \"Slip39_Single_Extendable\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Basic_Extendable\"] = 4] = \"Slip39_Basic_Extendable\";\n Enum_BackupType[Enum_BackupType[\"Slip39_Advanced_Extendable\"] = 5] = \"Slip39_Advanced_Extendable\";\n})(Enum_BackupType || (exports.Enum_BackupType = Enum_BackupType = {}));\nexports.EnumEnum_BackupType = schema_utils_1.Type.Enum(Enum_BackupType);\nexports.BackupType = schema_utils_1.Type.KeyOfEnum(Enum_BackupType, {\n $id: 'BackupType'\n});\nvar Enum_SafetyCheckLevel;\n(function (Enum_SafetyCheckLevel) {\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"Strict\"] = 0] = \"Strict\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptAlways\"] = 1] = \"PromptAlways\";\n Enum_SafetyCheckLevel[Enum_SafetyCheckLevel[\"PromptTemporarily\"] = 2] = \"PromptTemporarily\";\n})(Enum_SafetyCheckLevel || (exports.Enum_SafetyCheckLevel = Enum_SafetyCheckLevel = {}));\nexports.EnumEnum_SafetyCheckLevel = schema_utils_1.Type.Enum(Enum_SafetyCheckLevel);\nexports.SafetyCheckLevel = schema_utils_1.Type.KeyOfEnum(Enum_SafetyCheckLevel, {\n $id: 'SafetyCheckLevel'\n});\nvar Enum_DisplayRotation;\n(function (Enum_DisplayRotation) {\n Enum_DisplayRotation[Enum_DisplayRotation[\"North\"] = 0] = \"North\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"East\"] = 90] = \"East\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"South\"] = 180] = \"South\";\n Enum_DisplayRotation[Enum_DisplayRotation[\"West\"] = 270] = \"West\";\n})(Enum_DisplayRotation || (exports.Enum_DisplayRotation = Enum_DisplayRotation = {}));\nexports.EnumEnum_DisplayRotation = schema_utils_1.Type.Enum(Enum_DisplayRotation);\nexports.DisplayRotation = schema_utils_1.Type.KeyOfEnum(Enum_DisplayRotation, {\n $id: 'DisplayRotation'\n});\nvar Enum_HomescreenFormat;\n(function (Enum_HomescreenFormat) {\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"Toif\"] = 1] = \"Toif\";\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"Jpeg\"] = 2] = \"Jpeg\";\n Enum_HomescreenFormat[Enum_HomescreenFormat[\"ToiG\"] = 3] = \"ToiG\";\n})(Enum_HomescreenFormat || (exports.Enum_HomescreenFormat = Enum_HomescreenFormat = {}));\nexports.EnumEnum_HomescreenFormat = schema_utils_1.Type.Enum(Enum_HomescreenFormat);\nexports.HomescreenFormat = schema_utils_1.Type.KeyOfEnum(Enum_HomescreenFormat, {\n $id: 'HomescreenFormat'\n});\nexports.Initialize = schema_utils_1.Type.Object({\n session_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n _skip_passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n derive_cardano: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'Initialize'\n});\nexports.GetFeatures = schema_utils_1.Type.Object({}, {\n $id: 'GetFeatures'\n});\nvar Enum_BackupAvailability;\n(function (Enum_BackupAvailability) {\n Enum_BackupAvailability[Enum_BackupAvailability[\"NotAvailable\"] = 0] = \"NotAvailable\";\n Enum_BackupAvailability[Enum_BackupAvailability[\"Required\"] = 1] = \"Required\";\n Enum_BackupAvailability[Enum_BackupAvailability[\"Available\"] = 2] = \"Available\";\n})(Enum_BackupAvailability || (exports.Enum_BackupAvailability = Enum_BackupAvailability = {}));\nexports.EnumEnum_BackupAvailability = schema_utils_1.Type.Enum(Enum_BackupAvailability);\nexports.BackupAvailability = schema_utils_1.Type.KeyOfEnum(Enum_BackupAvailability, {\n $id: 'BackupAvailability'\n});\nvar Enum_RecoveryStatus;\n(function (Enum_RecoveryStatus) {\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Nothing\"] = 0] = \"Nothing\";\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Recovery\"] = 1] = \"Recovery\";\n Enum_RecoveryStatus[Enum_RecoveryStatus[\"Backup\"] = 2] = \"Backup\";\n})(Enum_RecoveryStatus || (exports.Enum_RecoveryStatus = Enum_RecoveryStatus = {}));\nexports.EnumEnum_RecoveryStatus = schema_utils_1.Type.Enum(Enum_RecoveryStatus);\nexports.RecoveryStatus = schema_utils_1.Type.KeyOfEnum(Enum_RecoveryStatus, {\n $id: 'RecoveryStatus'\n});\nvar Enum_Capability;\n(function (Enum_Capability) {\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin\"] = 1] = \"Capability_Bitcoin\";\n Enum_Capability[Enum_Capability[\"Capability_Bitcoin_like\"] = 2] = \"Capability_Bitcoin_like\";\n Enum_Capability[Enum_Capability[\"Capability_Binance\"] = 3] = \"Capability_Binance\";\n Enum_Capability[Enum_Capability[\"Capability_Cardano\"] = 4] = \"Capability_Cardano\";\n Enum_Capability[Enum_Capability[\"Capability_Crypto\"] = 5] = \"Capability_Crypto\";\n Enum_Capability[Enum_Capability[\"Capability_EOS\"] = 6] = \"Capability_EOS\";\n Enum_Capability[Enum_Capability[\"Capability_Ethereum\"] = 7] = \"Capability_Ethereum\";\n Enum_Capability[Enum_Capability[\"Capability_Lisk\"] = 8] = \"Capability_Lisk\";\n Enum_Capability[Enum_Capability[\"Capability_Monero\"] = 9] = \"Capability_Monero\";\n Enum_Capability[Enum_Capability[\"Capability_NEM\"] = 10] = \"Capability_NEM\";\n Enum_Capability[Enum_Capability[\"Capability_Ripple\"] = 11] = \"Capability_Ripple\";\n Enum_Capability[Enum_Capability[\"Capability_Stellar\"] = 12] = \"Capability_Stellar\";\n Enum_Capability[Enum_Capability[\"Capability_Tezos\"] = 13] = \"Capability_Tezos\";\n Enum_Capability[Enum_Capability[\"Capability_U2F\"] = 14] = \"Capability_U2F\";\n Enum_Capability[Enum_Capability[\"Capability_Shamir\"] = 15] = \"Capability_Shamir\";\n Enum_Capability[Enum_Capability[\"Capability_ShamirGroups\"] = 16] = \"Capability_ShamirGroups\";\n Enum_Capability[Enum_Capability[\"Capability_PassphraseEntry\"] = 17] = \"Capability_PassphraseEntry\";\n Enum_Capability[Enum_Capability[\"Capability_Solana\"] = 18] = \"Capability_Solana\";\n Enum_Capability[Enum_Capability[\"Capability_Translations\"] = 19] = \"Capability_Translations\";\n Enum_Capability[Enum_Capability[\"Capability_Brightness\"] = 20] = \"Capability_Brightness\";\n Enum_Capability[Enum_Capability[\"Capability_Haptic\"] = 21] = \"Capability_Haptic\";\n Enum_Capability[Enum_Capability[\"Capability_BLE\"] = 22] = \"Capability_BLE\";\n Enum_Capability[Enum_Capability[\"Capability_NFC\"] = 23] = \"Capability_NFC\";\n})(Enum_Capability || (exports.Enum_Capability = Enum_Capability = {}));\nexports.EnumEnum_Capability = schema_utils_1.Type.Enum(Enum_Capability);\nexports.Capability = schema_utils_1.Type.KeyOfEnum(Enum_Capability, {\n $id: 'Capability'\n});\nvar RecoveryDeviceInputMethod;\n(function (RecoveryDeviceInputMethod) {\n RecoveryDeviceInputMethod[RecoveryDeviceInputMethod[\"ScrambledWords\"] = 0] = \"ScrambledWords\";\n RecoveryDeviceInputMethod[RecoveryDeviceInputMethod[\"Matrix\"] = 1] = \"Matrix\";\n})(RecoveryDeviceInputMethod || (exports.RecoveryDeviceInputMethod = RecoveryDeviceInputMethod = {}));\nexports.EnumRecoveryDeviceInputMethod = schema_utils_1.Type.Enum(RecoveryDeviceInputMethod);\nvar Enum_RecoveryType;\n(function (Enum_RecoveryType) {\n Enum_RecoveryType[Enum_RecoveryType[\"NormalRecovery\"] = 0] = \"NormalRecovery\";\n Enum_RecoveryType[Enum_RecoveryType[\"DryRun\"] = 1] = \"DryRun\";\n Enum_RecoveryType[Enum_RecoveryType[\"UnlockRepeatedBackup\"] = 2] = \"UnlockRepeatedBackup\";\n})(Enum_RecoveryType || (exports.Enum_RecoveryType = Enum_RecoveryType = {}));\nexports.EnumEnum_RecoveryType = schema_utils_1.Type.Enum(Enum_RecoveryType);\nexports.RecoveryType = schema_utils_1.Type.KeyOfEnum(Enum_RecoveryType, {\n $id: 'RecoveryType'\n});\nexports.RecoveryDevice = schema_utils_1.Type.Object({\n word_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n pin_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n enforce_wordlist: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n input_method: schema_utils_1.Type.Optional(exports.EnumRecoveryDeviceInputMethod),\n u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n type: schema_utils_1.Type.Optional(exports.RecoveryType)\n}, {\n $id: 'RecoveryDevice'\n});\nexports.Features = schema_utils_1.Type.Object({\n vendor: schema_utils_1.Type.String(),\n major_version: schema_utils_1.Type.Number(),\n minor_version: schema_utils_1.Type.Number(),\n patch_version: schema_utils_1.Type.Number(),\n bootloader_mode: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n device_id: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n pin_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n passphrase_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n language: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n label: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n initialized: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n revision: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n bootloader_hash: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n imported: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n unlocked: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n _passphrase_cached: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n firmware_present: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n backup_availability: schema_utils_1.Type.Union([exports.BackupAvailability, schema_utils_1.Type.Null()]),\n flags: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]),\n model: schema_utils_1.Type.String(),\n fw_major: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]),\n fw_minor: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]),\n fw_patch: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]),\n fw_vendor: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n unfinished_backup: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n no_backup: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n recovery_status: schema_utils_1.Type.Union([exports.RecoveryStatus, schema_utils_1.Type.Null()]),\n capabilities: schema_utils_1.Type.Array(exports.Capability),\n backup_type: schema_utils_1.Type.Union([exports.BackupType, schema_utils_1.Type.Null()]),\n sd_card_present: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n sd_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n wipe_code_protection: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n session_id: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n passphrase_always_on_device: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n safety_checks: schema_utils_1.Type.Union([exports.SafetyCheckLevel, schema_utils_1.Type.Null()]),\n auto_lock_delay_ms: schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.Null()]),\n display_rotation: schema_utils_1.Type.Union([exports.DisplayRotation, schema_utils_1.Type.Null()]),\n experimental_features: schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Null()]),\n busy: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n homescreen_format: schema_utils_1.Type.Optional(exports.HomescreenFormat),\n hide_passphrase_from_host: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n internal_model: exports.EnumDeviceModelInternal,\n unit_color: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n unit_btconly: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n homescreen_width: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n homescreen_height: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n bootloader_locked: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n language_version_matches: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n unit_packaging: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n haptic_feedback: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n recovery_type: schema_utils_1.Type.Optional(exports.RecoveryType),\n optiga_sec: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n soc: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n firmware_corrupted: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n auto_lock_delay_battery_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n led: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n usb_connected: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n wireless_connected: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'Features'\n});\nexports.LockDevice = schema_utils_1.Type.Object({}, {\n $id: 'LockDevice'\n});\nexports.SetBusy = schema_utils_1.Type.Object({\n expiry_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'SetBusy'\n});\nexports.EndSession = schema_utils_1.Type.Object({}, {\n $id: 'EndSession'\n});\nexports.ApplySettings = schema_utils_1.Type.Object({\n language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n use_passphrase: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n homescreen: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n _passphrase_source: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n auto_lock_delay_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n display_rotation: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([exports.DisplayRotation, exports.EnumEnum_DisplayRotation])),\n passphrase_always_on_device: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n safety_checks: schema_utils_1.Type.Optional(exports.SafetyCheckLevel),\n experimental_features: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n hide_passphrase_from_host: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n haptic_feedback: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n homescreen_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n auto_lock_delay_battery_ms: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'ApplySettings'\n});\nexports.ChangeLanguage = schema_utils_1.Type.Object({\n data_length: schema_utils_1.Type.Number(),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'ChangeLanguage'\n});\nexports.DataChunkRequest = schema_utils_1.Type.Object({\n data_length: schema_utils_1.Type.Number(),\n data_offset: schema_utils_1.Type.Number()\n}, {\n $id: 'DataChunkRequest'\n});\nexports.DataChunkAck = schema_utils_1.Type.Object({\n data_chunk: schema_utils_1.Type.String()\n}, {\n $id: 'DataChunkAck'\n});\nexports.ApplyFlags = schema_utils_1.Type.Object({\n flags: schema_utils_1.Type.Number()\n}, {\n $id: 'ApplyFlags'\n});\nexports.ChangePin = schema_utils_1.Type.Object({\n remove: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'ChangePin'\n});\nexports.ChangeWipeCode = schema_utils_1.Type.Object({\n remove: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'ChangeWipeCode'\n});\nvar SdProtectOperationType;\n(function (SdProtectOperationType) {\n SdProtectOperationType[SdProtectOperationType[\"DISABLE\"] = 0] = \"DISABLE\";\n SdProtectOperationType[SdProtectOperationType[\"ENABLE\"] = 1] = \"ENABLE\";\n SdProtectOperationType[SdProtectOperationType[\"REFRESH\"] = 2] = \"REFRESH\";\n})(SdProtectOperationType || (exports.SdProtectOperationType = SdProtectOperationType = {}));\nexports.EnumSdProtectOperationType = schema_utils_1.Type.Enum(SdProtectOperationType);\nexports.SdProtect = schema_utils_1.Type.Object({\n operation: exports.EnumSdProtectOperationType\n}, {\n $id: 'SdProtect'\n});\nexports.Ping = schema_utils_1.Type.Object({\n message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n button_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'Ping'\n});\nexports.Cancel = schema_utils_1.Type.Object({}, {\n $id: 'Cancel'\n});\nexports.GetEntropy = schema_utils_1.Type.Object({\n size: schema_utils_1.Type.Number()\n}, {\n $id: 'GetEntropy'\n});\nexports.Entropy = schema_utils_1.Type.Object({\n entropy: schema_utils_1.Type.String()\n}, {\n $id: 'Entropy'\n});\nexports.GetFirmwareHash = schema_utils_1.Type.Object({\n challenge: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'GetFirmwareHash'\n});\nexports.FirmwareHash = schema_utils_1.Type.Object({\n hash: schema_utils_1.Type.String()\n}, {\n $id: 'FirmwareHash'\n});\nexports.AuthenticateDevice = schema_utils_1.Type.Object({\n challenge: schema_utils_1.Type.String()\n}, {\n $id: 'AuthenticateDevice'\n});\nexports.AuthenticityProof = schema_utils_1.Type.Object({\n optiga_certificates: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n optiga_signature: schema_utils_1.Type.String(),\n tropic_certificates: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n tropic_signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'AuthenticityProof'\n});\nexports.WipeDevice = schema_utils_1.Type.Object({}, {\n $id: 'WipeDevice'\n});\nexports.LoadDevice = schema_utils_1.Type.Object({\n mnemonics: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n pin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n skip_checksum: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n needs_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n no_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'LoadDevice'\n});\nexports.ResetDevice = schema_utils_1.Type.Object({\n strength: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n passphrase_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n pin_protection: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n language: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n label: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n u2f_counter: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n skip_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n no_backup: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n backup_type: schema_utils_1.Type.Optional(exports.EnumEnum_BackupType),\n entropy_check: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'ResetDevice'\n});\nexports.Slip39Group = schema_utils_1.Type.Object({\n member_threshold: schema_utils_1.Type.Number(),\n member_count: schema_utils_1.Type.Number()\n}, {\n $id: 'Slip39Group'\n});\nexports.BackupDevice = schema_utils_1.Type.Object({\n group_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n groups: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.Slip39Group))\n}, {\n $id: 'BackupDevice'\n});\nexports.EntropyRequest = schema_utils_1.Type.Object({\n entropy_commitment: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n prev_entropy: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'EntropyRequest'\n});\nexports.EntropyAck = schema_utils_1.Type.Object({\n entropy: schema_utils_1.Type.String()\n}, {\n $id: 'EntropyAck'\n});\nexports.EntropyCheckReady = schema_utils_1.Type.Object({}, {\n $id: 'EntropyCheckReady'\n});\nexports.EntropyCheckContinue = schema_utils_1.Type.Object({\n finish: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'EntropyCheckContinue'\n});\nvar Enum_WordRequestType;\n(function (Enum_WordRequestType) {\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Plain\"] = 0] = \"WordRequestType_Plain\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix9\"] = 1] = \"WordRequestType_Matrix9\";\n Enum_WordRequestType[Enum_WordRequestType[\"WordRequestType_Matrix6\"] = 2] = \"WordRequestType_Matrix6\";\n})(Enum_WordRequestType || (exports.Enum_WordRequestType = Enum_WordRequestType = {}));\nexports.EnumEnum_WordRequestType = schema_utils_1.Type.Enum(Enum_WordRequestType);\nexports.WordRequestType = schema_utils_1.Type.KeyOfEnum(Enum_WordRequestType, {\n $id: 'WordRequestType'\n});\nexports.WordRequest = schema_utils_1.Type.Object({\n type: exports.WordRequestType\n}, {\n $id: 'WordRequest'\n});\nexports.WordAck = schema_utils_1.Type.Object({\n word: schema_utils_1.Type.String()\n}, {\n $id: 'WordAck'\n});\nexports.SetU2FCounter = schema_utils_1.Type.Object({\n u2f_counter: schema_utils_1.Type.Number()\n}, {\n $id: 'SetU2FCounter'\n});\nexports.GetNextU2FCounter = schema_utils_1.Type.Object({}, {\n $id: 'GetNextU2FCounter'\n});\nexports.NextU2FCounter = schema_utils_1.Type.Object({\n u2f_counter: schema_utils_1.Type.Number()\n}, {\n $id: 'NextU2FCounter'\n});\nexports.DoPreauthorized = schema_utils_1.Type.Object({}, {\n $id: 'DoPreauthorized'\n});\nexports.PreauthorizedRequest = schema_utils_1.Type.Object({}, {\n $id: 'PreauthorizedRequest'\n});\nexports.CancelAuthorization = schema_utils_1.Type.Object({}, {\n $id: 'CancelAuthorization'\n});\nvar BootCommand;\n(function (BootCommand) {\n BootCommand[BootCommand[\"STOP_AND_WAIT\"] = 0] = \"STOP_AND_WAIT\";\n BootCommand[BootCommand[\"INSTALL_UPGRADE\"] = 1] = \"INSTALL_UPGRADE\";\n})(BootCommand || (exports.BootCommand = BootCommand = {}));\nexports.EnumBootCommand = schema_utils_1.Type.Enum(BootCommand);\nexports.RebootToBootloader = schema_utils_1.Type.Object({\n boot_command: schema_utils_1.Type.Optional(exports.EnumBootCommand),\n firmware_header: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n language_data_length: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'RebootToBootloader'\n});\nexports.GetNonce = schema_utils_1.Type.Object({}, {\n $id: 'GetNonce'\n});\nexports.Nonce = schema_utils_1.Type.Object({\n nonce: schema_utils_1.Type.String()\n}, {\n $id: 'Nonce'\n});\nexports.UnlockPath = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'UnlockPath'\n});\nexports.UnlockedPathRequest = schema_utils_1.Type.Object({\n mac: schema_utils_1.Type.String()\n}, {\n $id: 'UnlockedPathRequest'\n});\nexports.ShowDeviceTutorial = schema_utils_1.Type.Object({}, {\n $id: 'ShowDeviceTutorial'\n});\nexports.UnlockBootloader = schema_utils_1.Type.Object({}, {\n $id: 'UnlockBootloader'\n});\nexports.SetBrightness = schema_utils_1.Type.Object({\n value: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'SetBrightness'\n});\nexports.GetSerialNumber = schema_utils_1.Type.Object({}, {\n $id: 'GetSerialNumber'\n});\nexports.SerialNumber = schema_utils_1.Type.Object({\n serial_number: schema_utils_1.Type.String()\n}, {\n $id: 'SerialNumber'\n});\nvar MoneroNetworkType;\n(function (MoneroNetworkType) {\n MoneroNetworkType[MoneroNetworkType[\"MAINNET\"] = 0] = \"MAINNET\";\n MoneroNetworkType[MoneroNetworkType[\"TESTNET\"] = 1] = \"TESTNET\";\n MoneroNetworkType[MoneroNetworkType[\"STAGENET\"] = 2] = \"STAGENET\";\n MoneroNetworkType[MoneroNetworkType[\"FAKECHAIN\"] = 3] = \"FAKECHAIN\";\n})(MoneroNetworkType || (exports.MoneroNetworkType = MoneroNetworkType = {}));\nexports.EnumMoneroNetworkType = schema_utils_1.Type.Enum(MoneroNetworkType);\nexports.MoneroRctKeyPublic = schema_utils_1.Type.Object({\n dest: schema_utils_1.Type.String(),\n commitment: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroRctKeyPublic'\n});\nexports.MoneroOutputEntry = schema_utils_1.Type.Object({\n idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n key: schema_utils_1.Type.Optional(exports.MoneroRctKeyPublic)\n}, {\n $id: 'MoneroOutputEntry'\n});\nexports.MoneroMultisigKLRki = schema_utils_1.Type.Object({\n K: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n L: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n R: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ki: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroMultisigKLRki'\n});\nexports.MoneroTransactionSourceEntry = schema_utils_1.Type.Object({\n outputs: schema_utils_1.Type.Array(exports.MoneroOutputEntry),\n real_output: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n real_out_tx_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n real_out_additional_tx_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n real_output_in_tx_index: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n rct: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n multisig_kLRki: schema_utils_1.Type.Optional(exports.MoneroMultisigKLRki),\n subaddr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransactionSourceEntry'\n});\nexports.MoneroAccountPublicAddress = schema_utils_1.Type.Object({\n spend_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n view_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroAccountPublicAddress'\n});\nexports.MoneroTransactionDestinationEntry = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n addr: schema_utils_1.Type.Optional(exports.MoneroAccountPublicAddress),\n is_subaddress: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n original: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n is_integrated: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroTransactionDestinationEntry'\n});\nexports.MoneroTransactionRsigData = schema_utils_1.Type.Object({\n rsig_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n offload_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n grouping: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig_parts: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n bp_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransactionRsigData'\n});\nexports.MoneroGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType),\n account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroGetAddress'\n});\nexports.MoneroAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroAddress'\n});\nexports.MoneroGetWatchKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType)\n}, {\n $id: 'MoneroGetWatchKey'\n});\nexports.MoneroWatchKey = schema_utils_1.Type.Object({\n watch_key: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroWatchKey'\n});\nexports.MoneroTransactionData = schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n unlock_time: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n outputs: schema_utils_1.Type.Array(exports.MoneroTransactionDestinationEntry),\n change_dts: schema_utils_1.Type.Optional(exports.MoneroTransactionDestinationEntry),\n num_inputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n mixin: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData),\n integrated_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n client_version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n hard_fork: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n monero_version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroTransactionData'\n});\nexports.MoneroTransactionInitRequest = schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType),\n tsx_data: schema_utils_1.Type.Optional(exports.MoneroTransactionData)\n}, {\n $id: 'MoneroTransactionInitRequest'\n});\nexports.MoneroTransactionInitAck = schema_utils_1.Type.Object({\n hmacs: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData)\n}, {\n $id: 'MoneroTransactionInitAck'\n});\nexports.MoneroTransactionSetInputRequest = schema_utils_1.Type.Object({\n src_entr: schema_utils_1.Type.Optional(exports.MoneroTransactionSourceEntry)\n}, {\n $id: 'MoneroTransactionSetInputRequest'\n});\nexports.MoneroTransactionSetInputAck = schema_utils_1.Type.Object({\n vini: schema_utils_1.Type.String(),\n vini_hmac: schema_utils_1.Type.String(),\n pseudo_out: schema_utils_1.Type.String(),\n pseudo_out_hmac: schema_utils_1.Type.String(),\n pseudo_out_alpha: schema_utils_1.Type.String(),\n spend_key: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroTransactionSetInputAck'\n});\nexports.MoneroTransactionInputViniRequest = schema_utils_1.Type.Object({\n src_entr: schema_utils_1.Type.Optional(exports.MoneroTransactionSourceEntry),\n vini: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n vini_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransactionInputViniRequest'\n});\nexports.MoneroTransactionInputViniAck = schema_utils_1.Type.Object({}, {\n $id: 'MoneroTransactionInputViniAck'\n});\nexports.MoneroTransactionAllInputsSetRequest = schema_utils_1.Type.Object({}, {\n $id: 'MoneroTransactionAllInputsSetRequest'\n});\nexports.MoneroTransactionAllInputsSetAck = schema_utils_1.Type.Object({\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData)\n}, {\n $id: 'MoneroTransactionAllInputsSetAck'\n});\nexports.MoneroTransactionSetOutputRequest = schema_utils_1.Type.Object({\n dst_entr: schema_utils_1.Type.Optional(exports.MoneroTransactionDestinationEntry),\n dst_entr_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData),\n is_offloaded_bp: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroTransactionSetOutputRequest'\n});\nexports.MoneroTransactionSetOutputAck = schema_utils_1.Type.Object({\n tx_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n vouti_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData),\n out_pk: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ecdh_info: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroTransactionSetOutputAck'\n});\nexports.MoneroTransactionAllOutSetRequest = schema_utils_1.Type.Object({\n rsig_data: schema_utils_1.Type.Optional(exports.MoneroTransactionRsigData)\n}, {\n $id: 'MoneroTransactionAllOutSetRequest'\n});\nexports.MoneroRingCtSig = schema_utils_1.Type.Object({\n txn_fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rv_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroRingCtSig'\n});\nexports.MoneroTransactionAllOutSetAck = schema_utils_1.Type.Object({\n extra: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n tx_prefix_hash: schema_utils_1.Type.String(),\n rv: exports.MoneroRingCtSig,\n full_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroTransactionAllOutSetAck'\n});\nexports.MoneroTransactionSignInputRequest = schema_utils_1.Type.Object({\n src_entr: schema_utils_1.Type.Optional(exports.MoneroTransactionSourceEntry),\n vini: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n vini_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out_hmac: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out_alpha: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n spend_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n orig_idx: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransactionSignInputRequest'\n});\nexports.MoneroTransactionSignInputAck = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_out: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroTransactionSignInputAck'\n});\nexports.MoneroTransactionFinalRequest = schema_utils_1.Type.Object({}, {\n $id: 'MoneroTransactionFinalRequest'\n});\nexports.MoneroTransactionFinalAck = schema_utils_1.Type.Object({\n cout_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rand_mult: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n tx_enc_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n opening_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroTransactionFinalAck'\n});\nexports.MoneroSubAddressIndicesList = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.Number(),\n minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroSubAddressIndicesList'\n});\nexports.MoneroKeyImageExportInitRequest = schema_utils_1.Type.Object({\n num: schema_utils_1.Type.Number(),\n hash: schema_utils_1.Type.Uint8Array(),\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType),\n subs: schema_utils_1.Type.Array(exports.MoneroSubAddressIndicesList)\n}, {\n $id: 'MoneroKeyImageExportInitRequest'\n});\nexports.MoneroKeyImageExportInitAck = schema_utils_1.Type.Object({}, {\n $id: 'MoneroKeyImageExportInitAck'\n});\nexports.MoneroTransferDetails = schema_utils_1.Type.Object({\n out_key: schema_utils_1.Type.Uint8Array(),\n tx_pub_key: schema_utils_1.Type.Uint8Array(),\n additional_tx_pub_keys: schema_utils_1.Type.Array(schema_utils_1.Type.Uint8Array()),\n internal_output_index: schema_utils_1.Type.Number(),\n sub_addr_major: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n sub_addr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransferDetails'\n});\nexports.MoneroKeyImageSyncStepRequest = schema_utils_1.Type.Object({\n tdis: schema_utils_1.Type.Array(exports.MoneroTransferDetails)\n}, {\n $id: 'MoneroKeyImageSyncStepRequest'\n});\nexports.MoneroExportedKeyImage = schema_utils_1.Type.Object({\n iv: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n blob: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroExportedKeyImage'\n});\nexports.MoneroKeyImageSyncStepAck = schema_utils_1.Type.Object({\n kis: schema_utils_1.Type.Array(exports.MoneroExportedKeyImage)\n}, {\n $id: 'MoneroKeyImageSyncStepAck'\n});\nexports.MoneroKeyImageSyncFinalRequest = schema_utils_1.Type.Object({}, {\n $id: 'MoneroKeyImageSyncFinalRequest'\n});\nexports.MoneroKeyImageSyncFinalAck = schema_utils_1.Type.Object({\n enc_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroKeyImageSyncFinalAck'\n});\nexports.MoneroGetTxKeyRequest = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType),\n salt1: schema_utils_1.Type.String(),\n salt2: schema_utils_1.Type.String(),\n tx_enc_keys: schema_utils_1.Type.String(),\n tx_prefix_hash: schema_utils_1.Type.String(),\n reason: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n view_public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroGetTxKeyRequest'\n});\nexports.MoneroGetTxKeyAck = schema_utils_1.Type.Object({\n salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n tx_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n tx_derivations: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroGetTxKeyAck'\n});\nexports.MoneroLiveRefreshStartRequest = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_type: schema_utils_1.Type.Optional(exports.EnumMoneroNetworkType)\n}, {\n $id: 'MoneroLiveRefreshStartRequest'\n});\nexports.MoneroLiveRefreshStartAck = schema_utils_1.Type.Object({}, {\n $id: 'MoneroLiveRefreshStartAck'\n});\nexports.MoneroLiveRefreshStepRequest = schema_utils_1.Type.Object({\n out_key: schema_utils_1.Type.String(),\n recv_deriv: schema_utils_1.Type.String(),\n real_out_idx: schema_utils_1.Type.Number(),\n sub_addr_major: schema_utils_1.Type.Number(),\n sub_addr_minor: schema_utils_1.Type.Number()\n}, {\n $id: 'MoneroLiveRefreshStepRequest'\n});\nexports.MoneroLiveRefreshStepAck = schema_utils_1.Type.Object({\n salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key_image: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroLiveRefreshStepAck'\n});\nexports.MoneroLiveRefreshFinalRequest = schema_utils_1.Type.Object({}, {\n $id: 'MoneroLiveRefreshFinalRequest'\n});\nexports.MoneroLiveRefreshFinalAck = schema_utils_1.Type.Object({}, {\n $id: 'MoneroLiveRefreshFinalAck'\n});\nexports.DebugMoneroDiagRequest = schema_utils_1.Type.Object({\n ins: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n p1: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n p2: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n pd: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n data1: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n data2: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'DebugMoneroDiagRequest'\n});\nexports.DebugMoneroDiagAck = schema_utils_1.Type.Object({\n ins: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n p1: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n p2: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n pd: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n data1: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n data2: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'DebugMoneroDiagAck'\n});\nexports.NEMGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'NEMGetAddress'\n});\nexports.NEMAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String()\n}, {\n $id: 'NEMAddress'\n});\nexports.NEMTransactionCommon = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n timestamp: schema_utils_1.Type.Number(),\n fee: schema_utils_1.Type.Uint(),\n deadline: schema_utils_1.Type.Number(),\n signer: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'NEMTransactionCommon'\n});\nexports.NEMMosaic = schema_utils_1.Type.Object({\n namespace: schema_utils_1.Type.String(),\n mosaic: schema_utils_1.Type.String(),\n quantity: schema_utils_1.Type.Number()\n}, {\n $id: 'NEMMosaic'\n});\nexports.NEMTransfer = schema_utils_1.Type.Object({\n recipient: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.Uint(),\n payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n mosaics: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.NEMMosaic))\n}, {\n $id: 'NEMTransfer'\n});\nexports.NEMProvisionNamespace = schema_utils_1.Type.Object({\n namespace: schema_utils_1.Type.String(),\n parent: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n sink: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Uint()\n}, {\n $id: 'NEMProvisionNamespace'\n});\nvar NEMMosaicLevy;\n(function (NEMMosaicLevy) {\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Absolute\"] = 1] = \"MosaicLevy_Absolute\";\n NEMMosaicLevy[NEMMosaicLevy[\"MosaicLevy_Percentile\"] = 2] = \"MosaicLevy_Percentile\";\n})(NEMMosaicLevy || (exports.NEMMosaicLevy = NEMMosaicLevy = {}));\nexports.EnumNEMMosaicLevy = schema_utils_1.Type.Enum(NEMMosaicLevy);\nexports.NEMMosaicDefinition = schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ticker: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n namespace: schema_utils_1.Type.String(),\n mosaic: schema_utils_1.Type.String(),\n divisibility: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n levy: schema_utils_1.Type.Optional(exports.EnumNEMMosaicLevy),\n fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n levy_address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n levy_namespace: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n levy_mosaic: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n supply: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n mutable_supply: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n transferable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n description: schema_utils_1.Type.String(),\n networks: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number()))\n}, {\n $id: 'NEMMosaicDefinition'\n});\nexports.NEMMosaicCreation = schema_utils_1.Type.Object({\n definition: exports.NEMMosaicDefinition,\n sink: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Uint()\n}, {\n $id: 'NEMMosaicCreation'\n});\nvar NEMSupplyChangeType;\n(function (NEMSupplyChangeType) {\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Increase\"] = 1] = \"SupplyChange_Increase\";\n NEMSupplyChangeType[NEMSupplyChangeType[\"SupplyChange_Decrease\"] = 2] = \"SupplyChange_Decrease\";\n})(NEMSupplyChangeType || (exports.NEMSupplyChangeType = NEMSupplyChangeType = {}));\nexports.EnumNEMSupplyChangeType = schema_utils_1.Type.Enum(NEMSupplyChangeType);\nexports.NEMMosaicSupplyChange = schema_utils_1.Type.Object({\n namespace: schema_utils_1.Type.String(),\n mosaic: schema_utils_1.Type.String(),\n type: exports.EnumNEMSupplyChangeType,\n delta: schema_utils_1.Type.Number()\n}, {\n $id: 'NEMMosaicSupplyChange'\n});\nvar NEMModificationType;\n(function (NEMModificationType) {\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Add\"] = 1] = \"CosignatoryModification_Add\";\n NEMModificationType[NEMModificationType[\"CosignatoryModification_Delete\"] = 2] = \"CosignatoryModification_Delete\";\n})(NEMModificationType || (exports.NEMModificationType = NEMModificationType = {}));\nexports.EnumNEMModificationType = schema_utils_1.Type.Enum(NEMModificationType);\nexports.NEMCosignatoryModification = schema_utils_1.Type.Object({\n type: exports.EnumNEMModificationType,\n public_key: schema_utils_1.Type.String()\n}, {\n $id: 'NEMCosignatoryModification'\n});\nexports.NEMAggregateModification = schema_utils_1.Type.Object({\n modifications: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.NEMCosignatoryModification)),\n relative_change: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'NEMAggregateModification'\n});\nvar NEMImportanceTransferMode;\n(function (NEMImportanceTransferMode) {\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Activate\"] = 1] = \"ImportanceTransfer_Activate\";\n NEMImportanceTransferMode[NEMImportanceTransferMode[\"ImportanceTransfer_Deactivate\"] = 2] = \"ImportanceTransfer_Deactivate\";\n})(NEMImportanceTransferMode || (exports.NEMImportanceTransferMode = NEMImportanceTransferMode = {}));\nexports.EnumNEMImportanceTransferMode = schema_utils_1.Type.Enum(NEMImportanceTransferMode);\nexports.NEMImportanceTransfer = schema_utils_1.Type.Object({\n mode: exports.EnumNEMImportanceTransferMode,\n public_key: schema_utils_1.Type.String()\n}, {\n $id: 'NEMImportanceTransfer'\n});\nexports.NEMSignTx = schema_utils_1.Type.Object({\n transaction: exports.NEMTransactionCommon,\n multisig: schema_utils_1.Type.Optional(exports.NEMTransactionCommon),\n transfer: schema_utils_1.Type.Optional(exports.NEMTransfer),\n cosigning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n provision_namespace: schema_utils_1.Type.Optional(exports.NEMProvisionNamespace),\n mosaic_creation: schema_utils_1.Type.Optional(exports.NEMMosaicCreation),\n supply_change: schema_utils_1.Type.Optional(exports.NEMMosaicSupplyChange),\n aggregate_modification: schema_utils_1.Type.Optional(exports.NEMAggregateModification),\n importance_transfer: schema_utils_1.Type.Optional(exports.NEMImportanceTransfer),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'NEMSignTx'\n});\nexports.NEMSignedTx = schema_utils_1.Type.Object({\n data: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'NEMSignedTx'\n});\nexports.NEMDecryptMessage = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n public_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n payload: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'NEMDecryptMessage'\n});\nexports.NEMDecryptedMessage = schema_utils_1.Type.Object({\n payload: schema_utils_1.Type.String()\n}, {\n $id: 'NEMDecryptedMessage'\n});\nexports.RippleGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'RippleGetAddress'\n});\nexports.RippleAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'RippleAddress'\n});\nexports.RipplePayment = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Uint(),\n destination: schema_utils_1.Type.String(),\n destination_tag: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'RipplePayment'\n});\nexports.RippleSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n fee: schema_utils_1.Type.Uint(),\n flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n sequence: schema_utils_1.Type.Number(),\n last_ledger_sequence: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment: exports.RipplePayment,\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'RippleSignTx'\n});\nexports.RippleSignedTx = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n serialized_tx: schema_utils_1.Type.String()\n}, {\n $id: 'RippleSignedTx'\n});\nexports.SolanaGetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'SolanaGetPublicKey'\n});\nexports.SolanaPublicKey = schema_utils_1.Type.Object({\n public_key: schema_utils_1.Type.String()\n}, {\n $id: 'SolanaPublicKey'\n});\nexports.SolanaGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'SolanaGetAddress'\n});\nexports.SolanaAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'SolanaAddress'\n});\nexports.SolanaTxTokenAccountInfo = schema_utils_1.Type.Object({\n base_address: schema_utils_1.Type.String(),\n token_program: schema_utils_1.Type.String(),\n token_mint: schema_utils_1.Type.String(),\n token_account: schema_utils_1.Type.String()\n}, {\n $id: 'SolanaTxTokenAccountInfo'\n});\nexports.SolanaTxAdditionalInfo = schema_utils_1.Type.Object({\n token_accounts_infos: schema_utils_1.Type.Array(exports.SolanaTxTokenAccountInfo),\n encoded_token: schema_utils_1.Type.Optional(schema_utils_1.Type.ArrayBuffer())\n}, {\n $id: 'SolanaTxAdditionalInfo'\n});\nexports.SolanaSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n serialized_tx: schema_utils_1.Type.String(),\n additional_info: schema_utils_1.Type.Optional(exports.SolanaTxAdditionalInfo),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'SolanaSignTx'\n});\nexports.SolanaTxSignature = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'SolanaTxSignature'\n});\nvar StellarAssetType;\n(function (StellarAssetType) {\n StellarAssetType[StellarAssetType[\"NATIVE\"] = 0] = \"NATIVE\";\n StellarAssetType[StellarAssetType[\"ALPHANUM4\"] = 1] = \"ALPHANUM4\";\n StellarAssetType[StellarAssetType[\"ALPHANUM12\"] = 2] = \"ALPHANUM12\";\n})(StellarAssetType || (exports.StellarAssetType = StellarAssetType = {}));\nexports.EnumStellarAssetType = schema_utils_1.Type.Enum(StellarAssetType);\nexports.StellarAsset = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Union([schema_utils_1.Type.Literal(0), schema_utils_1.Type.Literal(1), schema_utils_1.Type.Literal(2), schema_utils_1.Type.Literal('NATIVE'), schema_utils_1.Type.Literal('ALPHANUM4'), schema_utils_1.Type.Literal('ALPHANUM12')]),\n code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n issuer: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'StellarAsset'\n});\nexports.StellarGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'StellarGetAddress'\n});\nexports.StellarAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'StellarAddress'\n});\nvar StellarMemoType;\n(function (StellarMemoType) {\n StellarMemoType[StellarMemoType[\"NONE\"] = 0] = \"NONE\";\n StellarMemoType[StellarMemoType[\"TEXT\"] = 1] = \"TEXT\";\n StellarMemoType[StellarMemoType[\"ID\"] = 2] = \"ID\";\n StellarMemoType[StellarMemoType[\"HASH\"] = 3] = \"HASH\";\n StellarMemoType[StellarMemoType[\"RETURN\"] = 4] = \"RETURN\";\n})(StellarMemoType || (exports.StellarMemoType = StellarMemoType = {}));\nexports.EnumStellarMemoType = schema_utils_1.Type.Enum(StellarMemoType);\nexports.StellarSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n network_passphrase: schema_utils_1.Type.String(),\n source_account: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Uint(),\n sequence_number: schema_utils_1.Type.Uint(),\n timebounds_start: schema_utils_1.Type.Number(),\n timebounds_end: schema_utils_1.Type.Number(),\n memo_type: exports.EnumStellarMemoType,\n memo_text: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n memo_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n memo_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()])),\n num_operations: schema_utils_1.Type.Number(),\n payment_req: schema_utils_1.Type.Optional(exports.PaymentRequest)\n}, {\n $id: 'StellarSignTx'\n});\nexports.StellarTxOpRequest = schema_utils_1.Type.Object({}, {\n $id: 'StellarTxOpRequest'\n});\nexports.StellarPaymentOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n destination_account: schema_utils_1.Type.String(),\n asset: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarPaymentOp'\n});\nexports.StellarCreateAccountOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n new_account: schema_utils_1.Type.String(),\n starting_balance: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarCreateAccountOp'\n});\nexports.StellarPathPaymentStrictReceiveOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n send_asset: exports.StellarAsset,\n send_max: schema_utils_1.Type.Uint(),\n destination_account: schema_utils_1.Type.String(),\n destination_asset: exports.StellarAsset,\n destination_amount: schema_utils_1.Type.Uint(),\n paths: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.StellarAsset))\n}, {\n $id: 'StellarPathPaymentStrictReceiveOp'\n});\nexports.StellarPathPaymentStrictSendOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n send_asset: exports.StellarAsset,\n send_amount: schema_utils_1.Type.Uint(),\n destination_account: schema_utils_1.Type.String(),\n destination_asset: exports.StellarAsset,\n destination_min: schema_utils_1.Type.Uint(),\n paths: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.StellarAsset))\n}, {\n $id: 'StellarPathPaymentStrictSendOp'\n});\nexports.StellarManageSellOfferOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n selling_asset: exports.StellarAsset,\n buying_asset: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n price_n: schema_utils_1.Type.Number(),\n price_d: schema_utils_1.Type.Number(),\n offer_id: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarManageSellOfferOp'\n});\nexports.StellarManageBuyOfferOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n selling_asset: exports.StellarAsset,\n buying_asset: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n price_n: schema_utils_1.Type.Number(),\n price_d: schema_utils_1.Type.Number(),\n offer_id: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarManageBuyOfferOp'\n});\nexports.StellarCreatePassiveSellOfferOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n selling_asset: exports.StellarAsset,\n buying_asset: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n price_n: schema_utils_1.Type.Number(),\n price_d: schema_utils_1.Type.Number()\n}, {\n $id: 'StellarCreatePassiveSellOfferOp'\n});\nvar StellarSignerType;\n(function (StellarSignerType) {\n StellarSignerType[StellarSignerType[\"ACCOUNT\"] = 0] = \"ACCOUNT\";\n StellarSignerType[StellarSignerType[\"PRE_AUTH\"] = 1] = \"PRE_AUTH\";\n StellarSignerType[StellarSignerType[\"HASH\"] = 2] = \"HASH\";\n})(StellarSignerType || (exports.StellarSignerType = StellarSignerType = {}));\nexports.EnumStellarSignerType = schema_utils_1.Type.Enum(StellarSignerType);\nexports.StellarSetOptionsOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n inflation_destination_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n clear_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n set_flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n master_weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n low_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n medium_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n high_threshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n home_domain: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n signer_type: schema_utils_1.Type.Optional(exports.EnumStellarSignerType),\n signer_key: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()])),\n signer_weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'StellarSetOptionsOp'\n});\nexports.StellarChangeTrustOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n asset: exports.StellarAsset,\n limit: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarChangeTrustOp'\n});\nexports.StellarAllowTrustOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n trusted_account: schema_utils_1.Type.String(),\n asset_type: exports.EnumStellarAssetType,\n asset_code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n is_authorized: schema_utils_1.Type.Boolean()\n}, {\n $id: 'StellarAllowTrustOp'\n});\nexports.StellarAccountMergeOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n destination_account: schema_utils_1.Type.String()\n}, {\n $id: 'StellarAccountMergeOp'\n});\nexports.StellarManageDataOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n key: schema_utils_1.Type.String(),\n value: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Buffer(), schema_utils_1.Type.String()]))\n}, {\n $id: 'StellarManageDataOp'\n});\nexports.StellarBumpSequenceOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n bump_to: schema_utils_1.Type.Uint()\n}, {\n $id: 'StellarBumpSequenceOp'\n});\nexports.StellarClaimClaimableBalanceOp = schema_utils_1.Type.Object({\n source_account: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n balance_id: schema_utils_1.Type.String()\n}, {\n $id: 'StellarClaimClaimableBalanceOp'\n});\nexports.StellarSignedTx = schema_utils_1.Type.Object({\n public_key: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'StellarSignedTx'\n});\nexports.TezosGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'TezosGetAddress'\n});\nexports.TezosAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'TezosAddress'\n});\nexports.TezosGetPublicKey = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'TezosGetPublicKey'\n});\nexports.TezosPublicKey = schema_utils_1.Type.Object({\n public_key: schema_utils_1.Type.String()\n}, {\n $id: 'TezosPublicKey'\n});\nvar TezosContractType;\n(function (TezosContractType) {\n TezosContractType[TezosContractType[\"Implicit\"] = 0] = \"Implicit\";\n TezosContractType[TezosContractType[\"Originated\"] = 1] = \"Originated\";\n})(TezosContractType || (exports.TezosContractType = TezosContractType = {}));\nexports.EnumTezosContractType = schema_utils_1.Type.Enum(TezosContractType);\nexports.TezosContractID = schema_utils_1.Type.Object({\n tag: schema_utils_1.Type.Number(),\n hash: schema_utils_1.Type.Uint8Array()\n}, {\n $id: 'TezosContractID'\n});\nexports.TezosRevealOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.Uint8Array(),\n fee: schema_utils_1.Type.Uint(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n public_key: schema_utils_1.Type.Uint8Array()\n}, {\n $id: 'TezosRevealOp'\n});\nexports.TezosManagerTransfer = schema_utils_1.Type.Object({\n destination: exports.TezosContractID,\n amount: schema_utils_1.Type.Uint()\n}, {\n $id: 'TezosManagerTransfer'\n});\nexports.TezosParametersManager = schema_utils_1.Type.Object({\n set_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint8Array()),\n cancel_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n transfer: schema_utils_1.Type.Optional(exports.TezosManagerTransfer)\n}, {\n $id: 'TezosParametersManager'\n});\nexports.TezosTransactionOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.Uint8Array(),\n fee: schema_utils_1.Type.Uint(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n amount: schema_utils_1.Type.Uint(),\n destination: exports.TezosContractID,\n parameters: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n parameters_manager: schema_utils_1.Type.Optional(exports.TezosParametersManager)\n}, {\n $id: 'TezosTransactionOp'\n});\nexports.TezosOriginationOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.Uint8Array(),\n fee: schema_utils_1.Type.Uint(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n manager_pubkey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n balance: schema_utils_1.Type.Number(),\n spendable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n delegatable: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint8Array()),\n script: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())])\n}, {\n $id: 'TezosOriginationOp'\n});\nexports.TezosDelegationOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.Uint8Array(),\n fee: schema_utils_1.Type.Uint(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n delegate: schema_utils_1.Type.Uint8Array()\n}, {\n $id: 'TezosDelegationOp'\n});\nexports.TezosProposalOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n period: schema_utils_1.Type.Number(),\n proposals: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n}, {\n $id: 'TezosProposalOp'\n});\nvar TezosBallotType;\n(function (TezosBallotType) {\n TezosBallotType[TezosBallotType[\"Yay\"] = 0] = \"Yay\";\n TezosBallotType[TezosBallotType[\"Nay\"] = 1] = \"Nay\";\n TezosBallotType[TezosBallotType[\"Pass\"] = 2] = \"Pass\";\n})(TezosBallotType || (exports.TezosBallotType = TezosBallotType = {}));\nexports.EnumTezosBallotType = schema_utils_1.Type.Enum(TezosBallotType);\nexports.TezosBallotOp = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n period: schema_utils_1.Type.Number(),\n proposal: schema_utils_1.Type.String(),\n ballot: exports.EnumTezosBallotType\n}, {\n $id: 'TezosBallotOp'\n});\nexports.TezosSignTx = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n branch: schema_utils_1.Type.Uint8Array(),\n reveal: schema_utils_1.Type.Optional(exports.TezosRevealOp),\n transaction: schema_utils_1.Type.Optional(exports.TezosTransactionOp),\n origination: schema_utils_1.Type.Optional(exports.TezosOriginationOp),\n delegation: schema_utils_1.Type.Optional(exports.TezosDelegationOp),\n proposal: schema_utils_1.Type.Optional(exports.TezosProposalOp),\n ballot: schema_utils_1.Type.Optional(exports.TezosBallotOp),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'TezosSignTx'\n});\nexports.TezosSignedTx = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n sig_op_contents: schema_utils_1.Type.String(),\n operation_hash: schema_utils_1.Type.String()\n}, {\n $id: 'TezosSignedTx'\n});\nexports.TronGetAddress = schema_utils_1.Type.Object({\n address_n: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n show_display: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'TronGetAddress'\n});\nexports.TronAddress = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'TronAddress'\n});\nexports.MessageType = schema_utils_1.Type.Object({\n TextMemo: exports.TextMemo,\n RefundMemo: exports.RefundMemo,\n CoinPurchaseMemo: exports.CoinPurchaseMemo,\n TextDetailsMemo: exports.TextDetailsMemo,\n PaymentRequestMemo: exports.PaymentRequestMemo,\n PaymentRequest: exports.PaymentRequest,\n HDNodeType: exports.HDNodeType,\n HDNodePathType: exports.HDNodePathType,\n MultisigRedeemScriptType: exports.MultisigRedeemScriptType,\n GetPublicKey: exports.GetPublicKey,\n PublicKey: exports.PublicKey,\n GetAddress: exports.GetAddress,\n Address: exports.Address,\n GetOwnershipId: exports.GetOwnershipId,\n OwnershipId: exports.OwnershipId,\n SignMessage: exports.SignMessage,\n MessageSignature: exports.MessageSignature,\n VerifyMessage: exports.VerifyMessage,\n CoinJoinRequest: exports.CoinJoinRequest,\n SignTx: exports.SignTx,\n TxRequestDetailsType: exports.TxRequestDetailsType,\n TxRequestSerializedType: exports.TxRequestSerializedType,\n TxRequest: exports.TxRequest,\n TxInputType: exports.TxInputType,\n TxOutputBinType: exports.TxOutputBinType,\n TxOutputType: exports.TxOutputType,\n PrevTx: exports.PrevTx,\n PrevInput: exports.PrevInput,\n PrevOutput: exports.PrevOutput,\n TxAck: exports.TxAck,\n TxAckInputWrapper: exports.TxAckInputWrapper,\n TxAckInput: exports.TxAckInput,\n TxAckOutputWrapper: exports.TxAckOutputWrapper,\n TxAckOutput: exports.TxAckOutput,\n TxAckPrevMeta: exports.TxAckPrevMeta,\n TxAckPrevInputWrapper: exports.TxAckPrevInputWrapper,\n TxAckPrevInput: exports.TxAckPrevInput,\n TxAckPrevOutputWrapper: exports.TxAckPrevOutputWrapper,\n TxAckPrevOutput: exports.TxAckPrevOutput,\n TxAckPrevExtraDataWrapper: exports.TxAckPrevExtraDataWrapper,\n TxAckPrevExtraData: exports.TxAckPrevExtraData,\n GetOwnershipProof: exports.GetOwnershipProof,\n OwnershipProof: exports.OwnershipProof,\n AuthorizeCoinJoin: exports.AuthorizeCoinJoin,\n BleUnpair: exports.BleUnpair,\n FirmwareErase: exports.FirmwareErase,\n FirmwareRequest: exports.FirmwareRequest,\n FirmwareUpload: exports.FirmwareUpload,\n ProdTestT1: exports.ProdTestT1,\n CardanoBlockchainPointerType: exports.CardanoBlockchainPointerType,\n CardanoNativeScript: exports.CardanoNativeScript,\n CardanoGetNativeScriptHash: exports.CardanoGetNativeScriptHash,\n CardanoNativeScriptHash: exports.CardanoNativeScriptHash,\n CardanoAddressParametersType: exports.CardanoAddressParametersType,\n CardanoGetAddress: exports.CardanoGetAddress,\n CardanoAddress: exports.CardanoAddress,\n CardanoGetPublicKey: exports.CardanoGetPublicKey,\n CardanoPublicKey: exports.CardanoPublicKey,\n CardanoSignTxInit: exports.CardanoSignTxInit,\n CardanoTxInput: exports.CardanoTxInput,\n CardanoTxOutput: exports.CardanoTxOutput,\n CardanoAssetGroup: exports.CardanoAssetGroup,\n CardanoToken: exports.CardanoToken,\n CardanoTxInlineDatumChunk: exports.CardanoTxInlineDatumChunk,\n CardanoTxReferenceScriptChunk: exports.CardanoTxReferenceScriptChunk,\n CardanoPoolOwner: exports.CardanoPoolOwner,\n CardanoPoolRelayParameters: exports.CardanoPoolRelayParameters,\n CardanoPoolMetadataType: exports.CardanoPoolMetadataType,\n CardanoPoolParametersType: exports.CardanoPoolParametersType,\n CardanoDRep: exports.CardanoDRep,\n CardanoTxCertificate: exports.CardanoTxCertificate,\n CardanoTxWithdrawal: exports.CardanoTxWithdrawal,\n CardanoCVoteRegistrationDelegation: exports.CardanoCVoteRegistrationDelegation,\n CardanoCVoteRegistrationParametersType: exports.CardanoCVoteRegistrationParametersType,\n CardanoTxAuxiliaryData: exports.CardanoTxAuxiliaryData,\n CardanoTxMint: exports.CardanoTxMint,\n CardanoTxCollateralInput: exports.CardanoTxCollateralInput,\n CardanoTxRequiredSigner: exports.CardanoTxRequiredSigner,\n CardanoTxReferenceInput: exports.CardanoTxReferenceInput,\n CardanoTxItemAck: exports.CardanoTxItemAck,\n CardanoTxAuxiliaryDataSupplement: exports.CardanoTxAuxiliaryDataSupplement,\n CardanoTxWitnessRequest: exports.CardanoTxWitnessRequest,\n CardanoTxWitnessResponse: exports.CardanoTxWitnessResponse,\n CardanoTxHostAck: exports.CardanoTxHostAck,\n CardanoTxBodyHash: exports.CardanoTxBodyHash,\n CardanoSignTxFinished: exports.CardanoSignTxFinished,\n CardanoSignMessageInit: exports.CardanoSignMessageInit,\n CardanoMessageDataRequest: exports.CardanoMessageDataRequest,\n CardanoMessageDataResponse: exports.CardanoMessageDataResponse,\n CardanoMessageSignature: exports.CardanoMessageSignature,\n Success: exports.Success,\n Failure: exports.Failure,\n ButtonRequest: exports.ButtonRequest,\n ButtonAck: exports.ButtonAck,\n PinMatrixRequest: exports.PinMatrixRequest,\n PinMatrixAck: exports.PinMatrixAck,\n PassphraseRequest: exports.PassphraseRequest,\n PassphraseAck: exports.PassphraseAck,\n Deprecated_PassphraseStateRequest: exports.Deprecated_PassphraseStateRequest,\n Deprecated_PassphraseStateAck: exports.Deprecated_PassphraseStateAck,\n CipherKeyValue: exports.CipherKeyValue,\n CipheredKeyValue: exports.CipheredKeyValue,\n IdentityType: exports.IdentityType,\n SignIdentity: exports.SignIdentity,\n SignedIdentity: exports.SignedIdentity,\n GetECDHSessionKey: exports.GetECDHSessionKey,\n ECDHSessionKey: exports.ECDHSessionKey,\n PaymentNotification: exports.PaymentNotification,\n DebugLinkGetPairingInfo: exports.DebugLinkGetPairingInfo,\n DebugLinkPairingInfo: exports.DebugLinkPairingInfo,\n DebugLinkResetDebugEvents: exports.DebugLinkResetDebugEvents,\n DebugLinkOptigaSetSecMax: exports.DebugLinkOptigaSetSecMax,\n DebugLinkGetGcInfo: exports.DebugLinkGetGcInfo,\n DebugLinkGcInfoItem: exports.DebugLinkGcInfoItem,\n DebugLinkGcInfo: exports.DebugLinkGcInfo,\n EthereumNetworkInfo: exports.EthereumNetworkInfo,\n EthereumTokenInfo: exports.EthereumTokenInfo,\n SolanaTokenInfo: exports.SolanaTokenInfo,\n EosGetPublicKey: exports.EosGetPublicKey,\n EosPublicKey: exports.EosPublicKey,\n EosTxHeader: exports.EosTxHeader,\n EosSignTx: exports.EosSignTx,\n EosTxActionRequest: exports.EosTxActionRequest,\n EosAsset: exports.EosAsset,\n EosPermissionLevel: exports.EosPermissionLevel,\n EosAuthorizationKey: exports.EosAuthorizationKey,\n EosAuthorizationAccount: exports.EosAuthorizationAccount,\n EosAuthorizationWait: exports.EosAuthorizationWait,\n EosAuthorization: exports.EosAuthorization,\n EosActionCommon: exports.EosActionCommon,\n EosActionTransfer: exports.EosActionTransfer,\n EosActionDelegate: exports.EosActionDelegate,\n EosActionUndelegate: exports.EosActionUndelegate,\n EosActionRefund: exports.EosActionRefund,\n EosActionBuyRam: exports.EosActionBuyRam,\n EosActionBuyRamBytes: exports.EosActionBuyRamBytes,\n EosActionSellRam: exports.EosActionSellRam,\n EosActionVoteProducer: exports.EosActionVoteProducer,\n EosActionUpdateAuth: exports.EosActionUpdateAuth,\n EosActionDeleteAuth: exports.EosActionDeleteAuth,\n EosActionLinkAuth: exports.EosActionLinkAuth,\n EosActionUnlinkAuth: exports.EosActionUnlinkAuth,\n EosActionNewAccount: exports.EosActionNewAccount,\n EosActionUnknown: exports.EosActionUnknown,\n EosTxActionAck: exports.EosTxActionAck,\n EosSignedTx: exports.EosSignedTx,\n EthereumDefinitions: exports.EthereumDefinitions,\n EthereumSignTypedData: exports.EthereumSignTypedData,\n EthereumTypedDataStructRequest: exports.EthereumTypedDataStructRequest,\n EthereumFieldType: exports.EthereumFieldType,\n EthereumStructMember: exports.EthereumStructMember,\n EthereumTypedDataStructAck: exports.EthereumTypedDataStructAck,\n EthereumTypedDataValueRequest: exports.EthereumTypedDataValueRequest,\n EthereumTypedDataValueAck: exports.EthereumTypedDataValueAck,\n EthereumGetPublicKey: exports.EthereumGetPublicKey,\n EthereumPublicKey: exports.EthereumPublicKey,\n EthereumGetAddress: exports.EthereumGetAddress,\n EthereumAddress: exports.EthereumAddress,\n EthereumSignTx: exports.EthereumSignTx,\n EthereumAccessList: exports.EthereumAccessList,\n EthereumSignTxEIP1559: exports.EthereumSignTxEIP1559,\n EthereumTxRequest: exports.EthereumTxRequest,\n EthereumTxAck: exports.EthereumTxAck,\n EthereumSignMessage: exports.EthereumSignMessage,\n EthereumMessageSignature: exports.EthereumMessageSignature,\n EthereumVerifyMessage: exports.EthereumVerifyMessage,\n EthereumSignTypedHash: exports.EthereumSignTypedHash,\n EthereumTypedDataSignature: exports.EthereumTypedDataSignature,\n EvoluGetNode: exports.EvoluGetNode,\n EvoluNode: exports.EvoluNode,\n EvoluSignRegistrationRequest: exports.EvoluSignRegistrationRequest,\n EvoluRegistrationRequest: exports.EvoluRegistrationRequest,\n EvoluGetDelegatedIdentityKey: exports.EvoluGetDelegatedIdentityKey,\n EvoluDelegatedIdentityKey: exports.EvoluDelegatedIdentityKey,\n Initialize: exports.Initialize,\n GetFeatures: exports.GetFeatures,\n RecoveryDevice: exports.RecoveryDevice,\n Features: exports.Features,\n LockDevice: exports.LockDevice,\n SetBusy: exports.SetBusy,\n EndSession: exports.EndSession,\n ApplySettings: exports.ApplySettings,\n ChangeLanguage: exports.ChangeLanguage,\n DataChunkRequest: exports.DataChunkRequest,\n DataChunkAck: exports.DataChunkAck,\n ApplyFlags: exports.ApplyFlags,\n ChangePin: exports.ChangePin,\n ChangeWipeCode: exports.ChangeWipeCode,\n SdProtect: exports.SdProtect,\n Ping: exports.Ping,\n Cancel: exports.Cancel,\n GetEntropy: exports.GetEntropy,\n Entropy: exports.Entropy,\n GetFirmwareHash: exports.GetFirmwareHash,\n FirmwareHash: exports.FirmwareHash,\n AuthenticateDevice: exports.AuthenticateDevice,\n AuthenticityProof: exports.AuthenticityProof,\n WipeDevice: exports.WipeDevice,\n LoadDevice: exports.LoadDevice,\n ResetDevice: exports.ResetDevice,\n Slip39Group: exports.Slip39Group,\n BackupDevice: exports.BackupDevice,\n EntropyRequest: exports.EntropyRequest,\n EntropyAck: exports.EntropyAck,\n EntropyCheckReady: exports.EntropyCheckReady,\n EntropyCheckContinue: exports.EntropyCheckContinue,\n WordRequest: exports.WordRequest,\n WordAck: exports.WordAck,\n SetU2FCounter: exports.SetU2FCounter,\n GetNextU2FCounter: exports.GetNextU2FCounter,\n NextU2FCounter: exports.NextU2FCounter,\n DoPreauthorized: exports.DoPreauthorized,\n PreauthorizedRequest: exports.PreauthorizedRequest,\n CancelAuthorization: exports.CancelAuthorization,\n RebootToBootloader: exports.RebootToBootloader,\n GetNonce: exports.GetNonce,\n Nonce: exports.Nonce,\n UnlockPath: exports.UnlockPath,\n UnlockedPathRequest: exports.UnlockedPathRequest,\n ShowDeviceTutorial: exports.ShowDeviceTutorial,\n UnlockBootloader: exports.UnlockBootloader,\n SetBrightness: exports.SetBrightness,\n GetSerialNumber: exports.GetSerialNumber,\n SerialNumber: exports.SerialNumber,\n MoneroRctKeyPublic: exports.MoneroRctKeyPublic,\n MoneroOutputEntry: exports.MoneroOutputEntry,\n MoneroMultisigKLRki: exports.MoneroMultisigKLRki,\n MoneroTransactionSourceEntry: exports.MoneroTransactionSourceEntry,\n MoneroAccountPublicAddress: exports.MoneroAccountPublicAddress,\n MoneroTransactionDestinationEntry: exports.MoneroTransactionDestinationEntry,\n MoneroTransactionRsigData: exports.MoneroTransactionRsigData,\n MoneroGetAddress: exports.MoneroGetAddress,\n MoneroAddress: exports.MoneroAddress,\n MoneroGetWatchKey: exports.MoneroGetWatchKey,\n MoneroWatchKey: exports.MoneroWatchKey,\n MoneroTransactionData: exports.MoneroTransactionData,\n MoneroTransactionInitRequest: exports.MoneroTransactionInitRequest,\n MoneroTransactionInitAck: exports.MoneroTransactionInitAck,\n MoneroTransactionSetInputRequest: exports.MoneroTransactionSetInputRequest,\n MoneroTransactionSetInputAck: exports.MoneroTransactionSetInputAck,\n MoneroTransactionInputViniRequest: exports.MoneroTransactionInputViniRequest,\n MoneroTransactionInputViniAck: exports.MoneroTransactionInputViniAck,\n MoneroTransactionAllInputsSetRequest: exports.MoneroTransactionAllInputsSetRequest,\n MoneroTransactionAllInputsSetAck: exports.MoneroTransactionAllInputsSetAck,\n MoneroTransactionSetOutputRequest: exports.MoneroTransactionSetOutputRequest,\n MoneroTransactionSetOutputAck: exports.MoneroTransactionSetOutputAck,\n MoneroTransactionAllOutSetRequest: exports.MoneroTransactionAllOutSetRequest,\n MoneroRingCtSig: exports.MoneroRingCtSig,\n MoneroTransactionAllOutSetAck: exports.MoneroTransactionAllOutSetAck,\n MoneroTransactionSignInputRequest: exports.MoneroTransactionSignInputRequest,\n MoneroTransactionSignInputAck: exports.MoneroTransactionSignInputAck,\n MoneroTransactionFinalRequest: exports.MoneroTransactionFinalRequest,\n MoneroTransactionFinalAck: exports.MoneroTransactionFinalAck,\n MoneroSubAddressIndicesList: exports.MoneroSubAddressIndicesList,\n MoneroKeyImageExportInitRequest: exports.MoneroKeyImageExportInitRequest,\n MoneroKeyImageExportInitAck: exports.MoneroKeyImageExportInitAck,\n MoneroTransferDetails: exports.MoneroTransferDetails,\n MoneroKeyImageSyncStepRequest: exports.MoneroKeyImageSyncStepRequest,\n MoneroExportedKeyImage: exports.MoneroExportedKeyImage,\n MoneroKeyImageSyncStepAck: exports.MoneroKeyImageSyncStepAck,\n MoneroKeyImageSyncFinalRequest: exports.MoneroKeyImageSyncFinalRequest,\n MoneroKeyImageSyncFinalAck: exports.MoneroKeyImageSyncFinalAck,\n MoneroGetTxKeyRequest: exports.MoneroGetTxKeyRequest,\n MoneroGetTxKeyAck: exports.MoneroGetTxKeyAck,\n MoneroLiveRefreshStartRequest: exports.MoneroLiveRefreshStartRequest,\n MoneroLiveRefreshStartAck: exports.MoneroLiveRefreshStartAck,\n MoneroLiveRefreshStepRequest: exports.MoneroLiveRefreshStepRequest,\n MoneroLiveRefreshStepAck: exports.MoneroLiveRefreshStepAck,\n MoneroLiveRefreshFinalRequest: exports.MoneroLiveRefreshFinalRequest,\n MoneroLiveRefreshFinalAck: exports.MoneroLiveRefreshFinalAck,\n DebugMoneroDiagRequest: exports.DebugMoneroDiagRequest,\n DebugMoneroDiagAck: exports.DebugMoneroDiagAck,\n NEMGetAddress: exports.NEMGetAddress,\n NEMAddress: exports.NEMAddress,\n NEMTransactionCommon: exports.NEMTransactionCommon,\n NEMMosaic: exports.NEMMosaic,\n NEMTransfer: exports.NEMTransfer,\n NEMProvisionNamespace: exports.NEMProvisionNamespace,\n NEMMosaicDefinition: exports.NEMMosaicDefinition,\n NEMMosaicCreation: exports.NEMMosaicCreation,\n NEMMosaicSupplyChange: exports.NEMMosaicSupplyChange,\n NEMCosignatoryModification: exports.NEMCosignatoryModification,\n NEMAggregateModification: exports.NEMAggregateModification,\n NEMImportanceTransfer: exports.NEMImportanceTransfer,\n NEMSignTx: exports.NEMSignTx,\n NEMSignedTx: exports.NEMSignedTx,\n NEMDecryptMessage: exports.NEMDecryptMessage,\n NEMDecryptedMessage: exports.NEMDecryptedMessage,\n RippleGetAddress: exports.RippleGetAddress,\n RippleAddress: exports.RippleAddress,\n RipplePayment: exports.RipplePayment,\n RippleSignTx: exports.RippleSignTx,\n RippleSignedTx: exports.RippleSignedTx,\n SolanaGetPublicKey: exports.SolanaGetPublicKey,\n SolanaPublicKey: exports.SolanaPublicKey,\n SolanaGetAddress: exports.SolanaGetAddress,\n SolanaAddress: exports.SolanaAddress,\n SolanaTxTokenAccountInfo: exports.SolanaTxTokenAccountInfo,\n SolanaTxAdditionalInfo: exports.SolanaTxAdditionalInfo,\n SolanaSignTx: exports.SolanaSignTx,\n SolanaTxSignature: exports.SolanaTxSignature,\n StellarAsset: exports.StellarAsset,\n StellarGetAddress: exports.StellarGetAddress,\n StellarAddress: exports.StellarAddress,\n StellarSignTx: exports.StellarSignTx,\n StellarTxOpRequest: exports.StellarTxOpRequest,\n StellarPaymentOp: exports.StellarPaymentOp,\n StellarCreateAccountOp: exports.StellarCreateAccountOp,\n StellarPathPaymentStrictReceiveOp: exports.StellarPathPaymentStrictReceiveOp,\n StellarPathPaymentStrictSendOp: exports.StellarPathPaymentStrictSendOp,\n StellarManageSellOfferOp: exports.StellarManageSellOfferOp,\n StellarManageBuyOfferOp: exports.StellarManageBuyOfferOp,\n StellarCreatePassiveSellOfferOp: exports.StellarCreatePassiveSellOfferOp,\n StellarSetOptionsOp: exports.StellarSetOptionsOp,\n StellarChangeTrustOp: exports.StellarChangeTrustOp,\n StellarAllowTrustOp: exports.StellarAllowTrustOp,\n StellarAccountMergeOp: exports.StellarAccountMergeOp,\n StellarManageDataOp: exports.StellarManageDataOp,\n StellarBumpSequenceOp: exports.StellarBumpSequenceOp,\n StellarClaimClaimableBalanceOp: exports.StellarClaimClaimableBalanceOp,\n StellarSignedTx: exports.StellarSignedTx,\n TezosGetAddress: exports.TezosGetAddress,\n TezosAddress: exports.TezosAddress,\n TezosGetPublicKey: exports.TezosGetPublicKey,\n TezosPublicKey: exports.TezosPublicKey,\n TezosContractID: exports.TezosContractID,\n TezosRevealOp: exports.TezosRevealOp,\n TezosManagerTransfer: exports.TezosManagerTransfer,\n TezosParametersManager: exports.TezosParametersManager,\n TezosTransactionOp: exports.TezosTransactionOp,\n TezosOriginationOp: exports.TezosOriginationOp,\n TezosDelegationOp: exports.TezosDelegationOp,\n TezosProposalOp: exports.TezosProposalOp,\n TezosBallotOp: exports.TezosBallotOp,\n TezosSignTx: exports.TezosSignTx,\n TezosSignedTx: exports.TezosSignedTx,\n TronGetAddress: exports.TronGetAddress,\n TronAddress: exports.TronAddress\n}, {\n $id: 'MessageType'\n});\n//# sourceMappingURL=messages-schema.js.map", "\"use strict\";\n\nvar _a;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MessagesSchema = exports.loadDefinitions = exports.Messages = exports.encodeMessage = exports.decodeMessage = exports.parseConfigure = void 0;\nconst tslib_1 = require(\"tslib\");\nconst long_1 = tslib_1.__importDefault(require(\"long\"));\nconst protobuf = tslib_1.__importStar(require(\"protobufjs/light\"));\nconst decode_1 = require(\"./decode\");\nconst encode_1 = require(\"./encode\");\nconst utils_1 = require(\"./utils\");\n_a = (() => {\n protobuf.util.Long = long_1.default;\n protobuf.configure();\n return {\n parseConfigure: utils_1.parseConfigure,\n decodeMessage: decode_1.decodeMessage,\n encodeMessage: encode_1.encodeMessage\n };\n})(), exports.parseConfigure = _a.parseConfigure, exports.decodeMessage = _a.decodeMessage, exports.encodeMessage = _a.encodeMessage;\nexports.Messages = tslib_1.__importStar(require(\"./messages\"));\nvar load_definitions_1 = require(\"./load-definitions\");\nObject.defineProperty(exports, \"loadDefinitions\", {\n enumerable: true,\n get: function () {\n return load_definitions_1.loadDefinitions;\n }\n});\nexports.MessagesSchema = tslib_1.__importStar(require(\"./messages-schema\"));\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PROTO = exports.DEFAULT_SORTING_STRATEGY = exports.FIRMWARE = exports.NEM = exports.CARDANO = exports.NETWORK = exports.ERRORS = void 0;\nconst tslib_1 = require(\"tslib\");\nexports.ERRORS = tslib_1.__importStar(require(\"./errors\"));\nexports.NETWORK = tslib_1.__importStar(require(\"./network\"));\nexports.CARDANO = tslib_1.__importStar(require(\"./cardano\"));\nexports.NEM = tslib_1.__importStar(require(\"./nem\"));\nexports.FIRMWARE = tslib_1.__importStar(require(\"./firmware\"));\nvar utxo_1 = require(\"./utxo\");\nObject.defineProperty(exports, \"DEFAULT_SORTING_STRATEGY\", {\n enumerable: true,\n get: function () {\n return utxo_1.DEFAULT_SORTING_STRATEGY;\n }\n});\nvar protobuf_1 = require(\"@trezor/protobuf\");\nObject.defineProperty(exports, \"PROTO\", {\n enumerable: true,\n get: function () {\n return protobuf_1.MessagesSchema;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.storage = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst storageVersion = 2;\nconst storageName = `storage_v${storageVersion}`;\nconst getEmptyState = () => ({\n origin: {}\n});\nlet memoryStorage = getEmptyState();\nconst getPermanentStorage = () => {\n const ls = localStorage.getItem(storageName);\n return ls ? JSON.parse(ls) : getEmptyState();\n};\nclass Storage extends utils_1.TypedEmitter {\n save(getNewState, temporary = false) {\n if (temporary || !global.window) {\n memoryStorage = getNewState(memoryStorage);\n return;\n }\n try {\n const newState = getNewState(getPermanentStorage());\n localStorage.setItem(storageName, JSON.stringify(newState));\n this.emit('changed', newState);\n } catch {\n console.warn('long term storage not available');\n memoryStorage = getNewState(memoryStorage);\n }\n }\n saveForOrigin(getNewState, origin, temporary = false) {\n this.save(state => ({\n ...state,\n origin: {\n ...state.origin,\n [origin]: getNewState(state.origin?.[origin] || {})\n }\n }), temporary);\n }\n load(temporary = false) {\n if (temporary || !global?.window?.localStorage) {\n return memoryStorage;\n }\n try {\n return getPermanentStorage();\n } catch {\n console.warn('long term storage not available');\n return memoryStorage;\n }\n }\n loadForOrigin(origin, temporary = false) {\n const state = this.load(temporary);\n return state.origin?.[origin] || {};\n }\n}\nconst storage = new Storage();\nexports.storage = storage;\n//# sourceMappingURL=storage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractMessageChannel = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nclass AbstractMessageChannel extends utils_1.TypedEmitter {\n messagePromises = {};\n messagesQueue = [];\n messageID = 0;\n isConnected = false;\n handshakeMaxRetries = 5;\n handshakeRetryInterval = 2000;\n handshakeFinished;\n lazyHandshake;\n legacyMode;\n logger;\n sendFn;\n channel;\n constructor({\n sendFn,\n channel,\n logger,\n lazyHandshake = false,\n legacyMode = false\n }) {\n super();\n this.channel = channel;\n this.sendFn = sendFn;\n this.lazyHandshake = lazyHandshake;\n this.legacyMode = legacyMode;\n this.logger = logger;\n }\n init() {\n if (!this.handshakeFinished) {\n this.handshakeFinished = (0, utils_1.createDeferred)();\n if (this.legacyMode) {\n setTimeout(() => {\n this.handshakeFinished?.resolve();\n }, 500);\n }\n if (!this.lazyHandshake) {\n this.handshakeWithPeer();\n }\n }\n return this.handshakeFinished.promise;\n }\n handshakeWithPeer() {\n this.logger?.log(this.channel.here, 'handshake');\n return (0, utils_1.scheduleAction)(async () => {\n this.postMessage({\n type: 'channel-handshake-request',\n data: {\n success: true,\n payload: undefined\n }\n }, {\n usePromise: false,\n useQueue: false\n });\n await this.handshakeFinished?.promise;\n }, {\n attempts: this.handshakeMaxRetries,\n timeout: this.handshakeRetryInterval\n }).then(() => {\n this.logger?.log(this.channel.here, 'handshake confirmed');\n this.messagesQueue.forEach(message => {\n message.channel = this.channel;\n this.sendFn(message);\n });\n this.messagesQueue = [];\n }).catch(() => {\n this.handshakeFinished?.reject(new Error('handshake failed'));\n this.handshakeFinished = undefined;\n });\n }\n onMessage(_message) {\n let message = _message;\n if (this.legacyMode && message.type === undefined && 'data' in message && typeof message.data === 'object' && message.data !== null && 'type' in message.data && typeof message.data.type === 'string') {\n message = message.data;\n }\n const {\n channel,\n id,\n type,\n ...data\n } = message;\n if (!this.legacyMode) {\n if (!channel?.peer || channel.peer !== this.channel.here) {\n return;\n }\n if (!channel?.here || this.channel.peer !== channel.here) {\n return;\n }\n }\n if (type === 'channel-handshake-request') {\n this.postMessage({\n type: 'channel-handshake-confirm',\n data: {\n success: true,\n payload: undefined\n }\n }, {\n usePromise: false,\n useQueue: false\n });\n if (this.lazyHandshake) {\n this.handshakeWithPeer();\n }\n return;\n }\n if (type === 'channel-handshake-confirm') {\n this.handshakeFinished?.resolve(undefined);\n return;\n }\n if (this.messagePromises[id]) {\n this.messagePromises[id].resolve({\n id,\n ...data\n });\n delete this.messagePromises[id];\n }\n const messagePromisesLength = Object.keys(this.messagePromises).length;\n if (messagePromisesLength > 5) {\n this.logger?.warn(`too many message promises (${messagePromisesLength}). this feels unexpected!`);\n }\n this.emit('message', message);\n }\n postMessage(message, {\n usePromise = true,\n useQueue = true\n } = {}) {\n message.channel = this.channel;\n if (!usePromise) {\n try {\n this.sendFn(message);\n } catch {\n if (useQueue) {\n this.messagesQueue.push(message);\n }\n }\n return;\n }\n this.messageID++;\n message.id = this.messageID;\n this.messagePromises[message.id] = (0, utils_1.createDeferred)();\n try {\n this.sendFn(message);\n } catch {\n if (useQueue) {\n this.messagesQueue.push(message);\n }\n }\n return this.messagePromises[message.id].promise;\n }\n resolveMessagePromises(resolvePayload) {\n Object.keys(this.messagePromises).forEach(id => this.messagePromises[id].resolve({\n id,\n payload: resolvePayload\n }));\n }\n clear() {\n this.handshakeFinished = undefined;\n }\n}\nexports.AbstractMessageChannel = AbstractMessageChannel;\n//# sourceMappingURL=abstract.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WindowWindowChannel = void 0;\nconst abstract_1 = require(\"./abstract\");\nclass WindowWindowChannel extends abstract_1.AbstractMessageChannel {\n _windowHere;\n _listener;\n constructor({\n windowHere,\n windowPeer,\n channel,\n logger,\n origin,\n legacyMode\n }) {\n super({\n channel,\n sendFn: message => {\n windowPeer()?.postMessage(message, origin);\n },\n logger,\n legacyMode\n });\n this._listener = this.listener.bind(this);\n this._windowHere = windowHere;\n this.connect();\n }\n listener(event) {\n const message = {\n ...event.data,\n success: true,\n origin: event.origin,\n payload: event.data.payload || {},\n channel: event.data.channel || {\n peer: this.channel.here,\n here: this.channel.peer\n }\n };\n this.onMessage(message);\n }\n connect() {\n this._windowHere.addEventListener('message', this._listener);\n this.isConnected = true;\n }\n disconnect() {\n if (!this.isConnected) return;\n this._windowHere.removeEventListener('message', this._listener);\n this.isConnected = false;\n }\n}\nexports.WindowWindowChannel = WindowWindowChannel;\n//# sourceMappingURL=window-window.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ServiceWorkerWindowChannel = void 0;\nconst abstract_1 = require(\"./abstract\");\nclass ServiceWorkerWindowChannel extends abstract_1.AbstractMessageChannel {\n port;\n name;\n allowSelfOrigin;\n currentId;\n constructor({\n name,\n channel,\n logger,\n lazyHandshake,\n legacyMode,\n allowSelfOrigin = false,\n currentId\n }) {\n super({\n channel,\n sendFn: message => {\n if (!this.port) throw new Error('port not assigned');\n this.port.postMessage(message);\n },\n logger,\n lazyHandshake,\n legacyMode\n });\n this.name = name;\n this.allowSelfOrigin = allowSelfOrigin;\n this.currentId = currentId;\n this.connect();\n }\n connect() {\n chrome.runtime.onConnect.addListener(port => {\n if (port.name !== this.name) return;\n if (this.currentId?.() && this.currentId?.() !== port.sender?.tab?.id) return;\n this.port = port;\n this.port.onMessage.addListener((message, {\n sender\n }) => {\n if (!sender) {\n this.logger?.error('service-worker-window', 'no sender');\n return;\n }\n const {\n origin\n } = sender;\n const whitelist = ['https://connect.trezor.io', 'https://staging-connect.trezor.io', 'https://suite.corp.sldev.cz', 'https://dev.suite.sldev.cz', 'http://localhost:8088', 'https://suite.trezor.io', 'https://staging-suite.trezor.io', 'http://localhost:8000'];\n const webextensionId = chrome?.runtime?.id;\n if (webextensionId) {\n whitelist.push(`chrome-extension://${webextensionId}`);\n }\n const webextensionUrl = chrome?.runtime?.getURL('');\n if (webextensionUrl) {\n whitelist.push(webextensionUrl.slice(0, -1));\n }\n if (!origin) {\n this.logger?.error('connect-webextension/messageChannel/extensionPort/onMessage', 'no origin');\n return;\n }\n if (!whitelist.includes(origin)) {\n this.logger?.error('connect-webextension/messageChannel/extensionPort/onMessage', 'origin not whitelisted', origin);\n return;\n }\n if (origin === self.origin && !this.allowSelfOrigin) {\n return;\n }\n this.onMessage(message);\n });\n });\n this.isConnected = true;\n }\n disconnect() {\n if (!this.isConnected) return;\n this.port?.disconnect();\n this.clear();\n this.isConnected = false;\n }\n}\nexports.ServiceWorkerWindowChannel = ServiceWorkerWindowChannel;\n//# sourceMappingURL=serviceworker-window.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WindowServiceWorkerChannel = void 0;\nconst abstract_1 = require(\"./abstract\");\nclass WindowServiceWorkerChannel extends abstract_1.AbstractMessageChannel {\n port;\n constructor({\n name,\n channel\n }) {\n super({\n channel,\n sendFn: message => {\n if (!this.port) throw new Error('port not assigned');\n this.port.postMessage(message);\n }\n });\n const port = chrome.runtime.connect({\n name\n });\n this.port = port;\n this.connect();\n }\n connect() {\n this.port?.onMessage.addListener(message => {\n if (message.channel.here === this.channel.here) return;\n this.onMessage(message);\n });\n this.isConnected = true;\n }\n disconnect() {\n if (!this.isConnected) return;\n this.port?.disconnect();\n this.isConnected = false;\n }\n}\nexports.WindowServiceWorkerChannel = WindowServiceWorkerChannel;\n//# sourceMappingURL=window-serviceworker.js.map", "/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.8\n Copyright \u00A9 2012-2025 Faisal Salman \n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 3 */ \n/* globals window */\n\n(function (window, undefined) {\n\n 'use strict';\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.8',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n TYPEOF = {\n FUNCTION : 'function',\n OBJECT : 'object',\n STRING : 'string',\n UNDEFINED : 'undefined'\n },\n\n // properties\n BROWSER = 'browser',\n CPU = 'cpu',\n DEVICE = 'device',\n ENGINE = 'engine',\n OS = 'os',\n RESULT = 'result',\n\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH = 'sec-ch-ua',\n CH_FULL_VER_LIST= CH + '-full-version-list',\n CH_ARCH = CH + '-arch',\n CH_BITNESS = CH + '-' + BITNESS,\n CH_FORM_FACTORS = CH + '-form-factors',\n CH_MOBILE = CH + '-' + MOBILE,\n CH_MODEL = CH + '-' + MODEL,\n CH_PLATFORM = CH + '-' + PLATFORM,\n CH_PLATFORM_VER = CH_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== TYPEOF.UNDEFINED,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === TYPEOF.STRING;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n var propName = arr[i];\n if (typeof propName == TYPEOF.OBJECT && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n str = strip(/^\\s\\s*/, String(str));\n return typeof len === TYPEOF.UNDEFINED ? str : str.substring(0, len);\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === TYPEOF.OBJECT && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == TYPEOF.FUNCTION) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length >= 3) {\n // Check whether q[1] FUNCTION or REGEX\n if (typeof q[1] === TYPEOF.FUNCTION && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === TYPEOF.OBJECT && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon/HiBrowser\n /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\\/v?([-\\w\\.]+)/i,\n // Atlas/Rekonq/Puffin/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(brave)(?: chrome)?\\/([\\d\\.]+)/i, // Brave\n /(heytap|ovi|115|surf|qwant)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(qwant)(?:ios|mobile)\\/([\\d\\.]+)/i, // Qwant\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n / mms\\/([\\w\\.]+)$/i // Opera Neon\n ], [VERSION, [NAME, OPERA+' Neon']], [\n / opt\\/([\\w\\.]+)$/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq|steam(?= (clie|tenf|gameo)))/i // LieBao Browser/Rekonq/Steam\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(bing)(?:web|sapphire)\\/([\\w\\.]+)/i, // Bing\n /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /(?:musical_ly|trill)(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n /(zalo(?:app)?)[\\/\\sa-z]*([\\w\\.-]+)/i // Zalo \n ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+(?= .+rv\\:.+gecko\\/\\d+)|[0-4][\\w\\.]+(?!.+compatible))/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i,\n /((ppc|powerpc)(64)?)( mac|;|\\))/i, // PowerPC\n /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i // Alpha\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n /mc680.0/i\n ], [[ARCHITECTURE, '68k']], [\n /winnt.+\\[axp/i\n ], [[ARCHITECTURE, 'alpha']]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)[\\/\\);]/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\b(?:ios|apple\\w+)\\/.+[\\(\\/](ipad)/i, // iPad\n /\\b(ipad)[\\d,]*[;\\] ].+(mac |i(pad)?)os/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei) ?([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][\\dc][adnt]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b(?:xiao)?((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n // Xiaomi Redmi / POCO / Black Shark / Qin\n /oid[^\\)]+; (redmi[\\-_ ]?(?:note|k)?[\\w_ ]+|m?[12]\\d[01]\\d\\w{3,6}|poco[\\w ]+|(shark )?\\w{3}-[ah]0|qin ?[1-3](s\\+|ultra| pro)?)( bui|; wv|\\))/i,\n // Xiaomi Mi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\\d{0,2}\\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\\))/i,\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-l]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \n\n // Vivo\n /; vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /\\b(?:lg)?([vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*?))( bui|\\)|;|\\/)/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /(?:blackberry|\\(bb10;) (\\w+)/i\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i,\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i, // OPPO\n /(hisense) ([ehv][\\w ]+)\\)/i, // Hisense\n /droid[^;]+; (philips)[_ ]([sv-x][\\d]{3,4}[xz]?)/i // Philips\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /(philips)[\\w ]+tv/i, // Philips\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i, // Retroid Pocket\n /(valve).+(steam deck)/i,\n /droid.+; ((shield|rgcube|gr0006))( bui|\\))/i // Nvidia Portable/Anbernic/Logitech\n ], [[VENDOR, strMapper, { 'Nvidia': 'Shield', 'Anbernic': 'RGCUBE', 'Logitech': 'GR0006' }], MODEL, [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) ([\\w ]+) os\\d/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid.+; ([\\w- ]+) (4k|android|smart|google)[- ]?tv/i // Unidentifiable SmartTV\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew|; hmsc).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links|dillo)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links/Dillo\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\\/ ]([\\w\\.]+)/i,\n /\\btvos ?([\\w\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile[;\\w ]*|tablet|tv|[^\\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\\w\\.]+)\\).+gecko\\//i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [CPU, [ARCHITECTURE]],\n [DEVICE, [TYPE, MODEL, VENDOR]],\n [ENGINE, [NAME, VERSION]],\n [OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [BROWSER, [VERSION, MAJOR]],\n [ENGINE, [VERSION]],\n [OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [BROWSER, / ?browser$/i],\n [OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [BROWSER, [NAME, VERSION]],\n [CPU, [ARCHITECTURE]],\n [DEVICE, [VENDOR, MODEL]],\n [ENGINE, [NAME, VERSION]],\n [OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != TYPEOF.UNDEFINED) break;\n } else if (strToCheck == TYPEOF.UNDEFINED && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== TYPEOF.UNDEFINED) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || TYPEOF.UNDEFINED;\n };\n }\n\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString,\n withClientHints : IData.prototype.withClientHints,\n withFeatureCheck : IData.prototype.withFeatureCheck\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH])],\n [FULLVERLIST, itemListToArray(uach[CH_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_MOBILE])],\n [MODEL, stripQuotes(uach[CH_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== TYPEOF.UNDEFINED) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n return this;\n }\n\n UAItem.prototype.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n UAItem.prototype.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n UAItem.prototype.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n UAItem.prototype.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == TYPEOF.FUNCTION) {\n this.set(NAME, 'Brave');\n }\n break;\n case DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== TYPEOF.UNDEFINED && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(BROWSER, detect(BROWSER))\n .set(CPU, detect(CPU))\n .set(DEVICE, detect(DEVICE))\n .set(ENGINE, detect(ENGINE))\n .set(OS, detect(OS));\n }\n }\n return this;\n };\n\n UAItem.prototype.parseUA = function () {\n if (this.itemType != RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n switch (this.itemType) {\n case BROWSER:\n this.set(MAJOR, majorize(this.get(VERSION)));\n break;\n case OS:\n if (this.get(NAME) == 'iOS' && this.get(VERSION) == '18.6') {\n // Based on the assumption that iOS version is tightly coupled with Safari version\n var realVersion = /\\) Version\\/([\\d\\.]+)/.exec(this.ua); // Get Safari version\n if (realVersion && parseInt(realVersion[1].substring(0,2), 10) >= 26) {\n this.set(VERSION, realVersion[1]); // Set as iOS version\n }\n }\n break;\n }\n return this;\n };\n\n UAItem.prototype.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n\n switch (this.itemType) {\n case BROWSER:\n case ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i=0; i= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(BROWSER, parse(BROWSER))\n .set(CPU, parse(CPU))\n .set(DEVICE, parse(DEVICE))\n .set(ENGINE, parse(ENGINE))\n .set(OS, parse(OS));\n }\n return this;\n };\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === TYPEOF.OBJECT) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === TYPEOF.OBJECT) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === TYPEOF.STRING && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n if (headers) {\n if (typeof headers.append === TYPEOF.FUNCTION) {\n // Convert Headers object into a plain object\n var kv = {};\n headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });\n headers = kv;\n } else {\n // Normalize headers field name into lowercase\n var normalized = {};\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n normalized[String(header).toLowerCase()] = headers[header];\n }\n }\n headers = normalized;\n }\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === TYPEOF.STRING ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(BROWSER, this.getBrowser())\n .set(CPU, this.getCPU())\n .set(DEVICE, this.getDevice())\n .set(ENGINE, this.getEngine())\n .set(OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(BROWSER)],\n ['getCPU', createItemFunc(CPU)],\n ['getDevice', createItemFunc(DEVICE)],\n ['getEngine', createItemFunc(ENGINE)],\n ['getOS', createItemFunc(OS)],\n ['getResult', createItemFunc(RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua)) userAgent = trim(ua, UA_MAX_LENGTH);\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof exports !== TYPEOF.UNDEFINED) {\n // nodejs env\n if (typeof module !== TYPEOF.UNDEFINED && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof define === TYPEOF.FUNCTION && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (isWindow) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = isWindow && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.firmwareConfigPublicKey = exports.publicKey = void 0;\nexports.publicKey = {\n dev: `-----BEGIN PUBLIC KEY-----\nMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEbSUHJlr17+NywPS/w+xMkp3dSD8eWXSuAfFKwonZPe5fL63kISipJC+eJP7Mad0WxgyJoiMsZCV6BZPK2jIFdg==\n-----END PUBLIC KEY-----`,\n codesign: `-----BEGIN PUBLIC KEY-----\nMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAES7MbBzU/v5BsljkTM8Mz0Jsk+Nn5n2wH\\no2/+MUI3TgCVdTbEHhn3HXaY7GJ6TLyWqxn+pIDY9wUUAyUqOStTUQ==\n-----END PUBLIC KEY-----`\n};\nexports.firmwareConfigPublicKey = {\n dev: `\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEKjWdvv8SJm/UN2lXoEXl3ID35b/\nhsz3etxANvUgLQ4r0eEhqVUEL5l+dRMgEv4Ycvr3UEcMkSFRPoA8ktxX1A==\n-----END PUBLIC KEY-----\n`,\n codesign: `\n-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfEsFXNi5sdMxwiOYh4oRGorCM2RO\nIEsfw3m+vWBrLb/r/GYWUVkVXWsZukLwPRZ8asP+7Ifd2ap7GZ2iQzWKCA==\n-----END PUBLIC KEY-----\n`\n};\n//# sourceMappingURL=jws.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.envUtils = exports.getFirmwareReleaseJwsPublicKey = exports.getJWSPublicKey = exports.getEnvironment = exports.isNative = exports.isDesktop = exports.isWeb = void 0;\nconst ua_parser_js_1 = require(\"ua-parser-js\");\nconst jws_1 = require(\"./jws\");\nconst isWeb = () => process.env.SUITE_TYPE === 'web';\nexports.isWeb = isWeb;\nconst isDesktop = () => process.env.SUITE_TYPE === 'desktop';\nexports.isDesktop = isDesktop;\nconst isNative = () => false;\nexports.isNative = isNative;\nconst getEnvironment = () => {\n if ((0, exports.isWeb)()) return 'web';\n return 'desktop';\n};\nexports.getEnvironment = getEnvironment;\nlet userAgentParser;\nconst getUserAgent = () => window.navigator.userAgent;\nconst getUserAgentParser = () => {\n if (!userAgentParser) {\n const ua = getUserAgent();\n userAgentParser = new ua_parser_js_1.UAParser(ua);\n }\n return userAgentParser;\n};\nconst isAndroid = () => /Android/.test(getUserAgent());\nconst isChromeOs = () => /CrOS/.test(getUserAgent());\nconst getBrowserVersion = () => getUserAgentParser().getBrowser().version || '';\nconst getCommitHash = () => process.env.COMMITHASH || '';\nconst getOsVersion = async () => {\n const {\n version\n } = await getUserAgentParser().getOS().withClientHints();\n return version ?? '';\n};\nconst getCpuArch = async () => {\n const {\n architecture\n } = await getUserAgentParser().getCPU().withClientHints();\n return architecture ?? '';\n};\nconst getSuiteVersion = () => process.env.VERSION || '';\nconst getBrowserName = () => {\n const browserName = getUserAgentParser().getBrowser().name?.replace(' ', '');\n return browserName?.toLowerCase() || '';\n};\nconst isFirefox = () => getBrowserName() === 'firefox';\nconst getPlatform = () => window.navigator.platform;\nconst getPlatformLanguages = () => window.navigator.languages;\nconst getScreenWidth = () => window.screen.width;\nconst getScreenHeight = () => window.screen.height;\nconst getWindowWidth = () => window.innerWidth;\nconst getWindowHeight = () => window.innerHeight;\nconst getLocationOrigin = () => window.location.origin;\nconst getLocationHostname = () => window.location.hostname;\nconst getProcessPlatform = () => typeof process !== 'undefined' ? process.platform : '';\nconst isMacOs = () => {\n if (getProcessPlatform() === 'darwin') return true;\n if (typeof window === 'undefined') return false;\n return getPlatform().toLowerCase().startsWith('mac');\n};\nconst isWindows = () => {\n if (getProcessPlatform() === 'win32') return true;\n if (typeof window === 'undefined') return false;\n return getPlatform().toLowerCase().startsWith('win');\n};\nconst isIOs = () => ['iPhone', 'iPad', 'iPod'].includes(getPlatform());\nconst isLinux = () => {\n if (getProcessPlatform() === 'linux') return true;\n if (typeof window === 'undefined') return false;\n if (isAndroid() || isChromeOs()) return false;\n return getPlatform().toLowerCase().startsWith('linux');\n};\nconst isCodesignBuild = () => process.env.IS_CODESIGN_BUILD === 'true';\nconst getOsName = () => {\n if (isWindows()) return 'windows';\n if (isMacOs()) return 'macos';\n if (isAndroid()) return 'android';\n if (isChromeOs()) return 'chromeos';\n if (isLinux()) return 'linux';\n if (isIOs()) return 'ios';\n return '';\n};\nconst getOsNameWeb = () => getUserAgentParser().getOS().name?.replaceAll(' ', '');\nconst getOsFamily = () => {\n const osName = getUserAgentParser().getOS().name?.toLowerCase().replaceAll(' ', '');\n if (osName === 'windows') {\n return 'Windows';\n }\n if (osName === 'macos') {\n return 'MacOS';\n }\n return 'Linux';\n};\nconst getDeviceType = () => getUserAgentParser().getDevice().type;\nconst getJWSPublicKey = () => isCodesignBuild() ? jws_1.publicKey.codesign : jws_1.publicKey.dev;\nexports.getJWSPublicKey = getJWSPublicKey;\nconst getFirmwareReleaseJwsPublicKey = useCodeSignKey => useCodeSignKey ? jws_1.firmwareConfigPublicKey.codesign : jws_1.firmwareConfigPublicKey.dev;\nexports.getFirmwareReleaseJwsPublicKey = getFirmwareReleaseJwsPublicKey;\nexports.envUtils = {\n isWeb: exports.isWeb,\n isDesktop: exports.isDesktop,\n isNative: exports.isNative,\n getEnvironment: exports.getEnvironment,\n getUserAgent,\n isAndroid,\n isChromeOs,\n getOsVersion,\n getCpuArch,\n getBrowserName,\n getBrowserVersion,\n getCommitHash,\n getDeviceType,\n getSuiteVersion,\n isFirefox,\n getPlatform,\n getPlatformLanguages,\n getScreenWidth,\n getScreenHeight,\n getWindowWidth,\n getWindowHeight,\n getLocationOrigin,\n getLocationHostname,\n getProcessPlatform,\n isMacOs,\n isWindows,\n isIOs,\n isLinux,\n isCodesignBuild,\n getOsName,\n getOsNameWeb,\n getOsFamily,\n getJWSPublicKey: exports.getJWSPublicKey,\n getFirmwareReleaseJwsPublicKey: exports.getFirmwareReleaseJwsPublicKey\n};\n//# sourceMappingURL=envUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resolveConnectPath = exports.resolveStaticPath = void 0;\nconst getEnvAssetPrefix = () => typeof process !== 'undefined' ? process.env?.ASSET_PREFIX : undefined;\nconst getDefaultPrefix = () => getEnvAssetPrefix() ?? '';\nconst resolveStaticPath = (path, pathPrefix = getDefaultPrefix()) => `${pathPrefix}/static/${path.replace(/^\\/+/, '')}`;\nexports.resolveStaticPath = resolveStaticPath;\nconst resolveConnectPath = (path, pathPrefix = getDefaultPrefix()) => `${pathPrefix}/${path.replace(/^\\/+/, '')}`;\nexports.resolveConnectPath = resolveConnectPath;\n//# sourceMappingURL=resolveStaticPath.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resolveConnectPath = exports.resolveStaticPath = exports.getFirmwareReleaseJwsPublicKey = exports.getJWSPublicKey = exports.getOsFamily = exports.getOsNameWeb = exports.getOsName = exports.isCodesignBuild = exports.isLinux = exports.isIOs = exports.isWindows = exports.isMacOs = exports.getProcessPlatform = exports.getLocationHostname = exports.getLocationOrigin = exports.getWindowHeight = exports.getWindowWidth = exports.getScreenHeight = exports.getScreenWidth = exports.getPlatformLanguages = exports.getPlatform = exports.isFirefox = exports.getSuiteVersion = exports.getCpuArch = exports.getOsVersion = exports.getDeviceType = exports.getCommitHash = exports.getBrowserName = exports.getBrowserVersion = exports.isChromeOs = exports.isAndroid = exports.getUserAgent = exports.getEnvironment = exports.isNative = exports.isDesktop = exports.isWeb = void 0;\nconst envUtils_1 = require(\"./envUtils\");\nexports.isWeb = envUtils_1.envUtils.isWeb, exports.isDesktop = envUtils_1.envUtils.isDesktop, exports.isNative = envUtils_1.envUtils.isNative, exports.getEnvironment = envUtils_1.envUtils.getEnvironment, exports.getUserAgent = envUtils_1.envUtils.getUserAgent, exports.isAndroid = envUtils_1.envUtils.isAndroid, exports.isChromeOs = envUtils_1.envUtils.isChromeOs, exports.getBrowserVersion = envUtils_1.envUtils.getBrowserVersion, exports.getBrowserName = envUtils_1.envUtils.getBrowserName, exports.getCommitHash = envUtils_1.envUtils.getCommitHash, exports.getDeviceType = envUtils_1.envUtils.getDeviceType, exports.getOsVersion = envUtils_1.envUtils.getOsVersion, exports.getCpuArch = envUtils_1.envUtils.getCpuArch, exports.getSuiteVersion = envUtils_1.envUtils.getSuiteVersion, exports.isFirefox = envUtils_1.envUtils.isFirefox, exports.getPlatform = envUtils_1.envUtils.getPlatform, exports.getPlatformLanguages = envUtils_1.envUtils.getPlatformLanguages, exports.getScreenWidth = envUtils_1.envUtils.getScreenWidth, exports.getScreenHeight = envUtils_1.envUtils.getScreenHeight, exports.getWindowWidth = envUtils_1.envUtils.getWindowWidth, exports.getWindowHeight = envUtils_1.envUtils.getWindowHeight, exports.getLocationOrigin = envUtils_1.envUtils.getLocationOrigin, exports.getLocationHostname = envUtils_1.envUtils.getLocationHostname, exports.getProcessPlatform = envUtils_1.envUtils.getProcessPlatform, exports.isMacOs = envUtils_1.envUtils.isMacOs, exports.isWindows = envUtils_1.envUtils.isWindows, exports.isIOs = envUtils_1.envUtils.isIOs, exports.isLinux = envUtils_1.envUtils.isLinux, exports.isCodesignBuild = envUtils_1.envUtils.isCodesignBuild, exports.getOsName = envUtils_1.envUtils.getOsName, exports.getOsNameWeb = envUtils_1.envUtils.getOsNameWeb, exports.getOsFamily = envUtils_1.envUtils.getOsFamily, exports.getJWSPublicKey = envUtils_1.envUtils.getJWSPublicKey, exports.getFirmwareReleaseJwsPublicKey = envUtils_1.envUtils.getFirmwareReleaseJwsPublicKey;\nvar resolveStaticPath_1 = require(\"./resolveStaticPath\");\nObject.defineProperty(exports, \"resolveStaticPath\", {\n enumerable: true,\n get: function () {\n return resolveStaticPath_1.resolveStaticPath;\n }\n});\nObject.defineProperty(exports, \"resolveConnectPath\", {\n enumerable: true,\n get: function () {\n return resolveStaticPath_1.resolveConnectPath;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSystemInfo = exports.getInstallerPackage = void 0;\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst getInstallerPackage = () => {\n const agent = (0, env_utils_1.getUserAgent)();\n switch ((0, env_utils_1.getOsFamily)()) {\n case 'MacOS':\n return 'mac';\n case 'Windows':\n {\n const arch = agent.match(/(Win64|WOW64)/) ? '64' : '32';\n return `win${arch}`;\n }\n case 'Linux':\n {\n const isRpm = agent.match(/CentOS|Fedora|Mandriva|Mageia|Red Hat|Scientific|SUSE/) ? 'rpm' : 'deb';\n const is64x = agent.match(/Linux i[3456]86/) ? '32' : '64';\n return `${isRpm}${is64x}`;\n }\n default:\n }\n};\nexports.getInstallerPackage = getInstallerPackage;\nconst getSystemInfo = supportedBrowsers => {\n const browserName = (0, env_utils_1.getBrowserName)();\n const browserVersion = (0, env_utils_1.getBrowserVersion)();\n const supportedBrowser = browserName ? supportedBrowsers[browserName.toLowerCase()] : undefined;\n const outdatedBrowser = supportedBrowser ? supportedBrowser.version > parseInt(browserVersion, 10) : false;\n const mobile = (0, env_utils_1.getDeviceType)() === 'mobile';\n const supportedMobile = mobile ? 'usb' in navigator : true;\n const supported = !!(supportedBrowser && !outdatedBrowser && supportedMobile);\n return {\n os: {\n family: (0, env_utils_1.getOsFamily)(),\n mobile\n },\n browser: {\n supported,\n outdated: outdatedBrowser\n }\n };\n};\nexports.getSystemInfo = getSystemInfo;\n//# sourceMappingURL=systemInfo.js.map", "{\n \"version\": 1,\n \"timestamp\": \"2025-10-14T10:53:22Z\",\n \"sequence\": 4,\n \"releases\": {\n \"T1B1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t1b1/universal/t1b1-1.13.1-universal.json\"\n }\n },\n \"T2B1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t2b1/universal/t2b1-2.9.1-universal.json\"\n }\n },\n \"T2T1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t2t1/universal/t2t1-2.9.1-universal.json\"\n }\n },\n \"T3B1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3b1/universal/t3b1-2.9.1-universal.json\"\n }\n },\n \"T3T1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.9.0\",\n \"min_suite_native_version\": \"25.9.0\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3t1/universal/t3t1-2.9.1-universal.json\"\n }\n },\n \"T3W1\": {\n \"bitcoin-only\": {\n \"firmware_type\": \"bitcoin-only\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.10.2\",\n \"min_suite_native_version\": \"25.10.2\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json\"\n },\n \"universal\": {\n \"firmware_type\": \"universal\",\n \"conditions\": {\n \"environment\": {\n \"min_suite_version\": \"25.10.2\",\n \"min_suite_native_version\": \"25.10.2\"\n },\n \"rollout_probability\": 100\n },\n \"releasePath\": \"firmware/t3w1/universal/t3w1-2.9.3-universal.json\"\n }\n }\n },\n \"intermediaries\": {\n \"T1B1\": [\n {\n \"min_firmware_version\": [1, 6, 2],\n \"min_bootloader_version\": [1, 8, 0],\n \"version\": 1\n },\n {\n \"min_firmware_version\": [1, 12, 0],\n \"min_bootloader_version\": [1, 12, 0],\n \"version\": 2\n },\n {\n \"min_firmware_version\": [1, 12, 1],\n \"min_bootloader_version\": [1, 12, 1],\n \"version\": 3\n }\n ]\n }\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"f4424ece1ccb7fc0d6cad00ff840fac287a34f07\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.0-bitcoinonly.bin\",\n \"fingerprint\": \"20a4068c34ff6dd7d8c510350409376cf7ea744ba668fdcf16da8f1d81fed289\",\n \"changelog\": \"* Bootloader 1.10.0.\\n* Allow decreasing the output value in RBF transactions.\\n* Support long PIN of up to 50 digits.\\n* Display nLockTime in human-readable form.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"3204fd682429eed23a82b748c05ae569c7f4481f\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.1-bitcoinonly.bin\",\n \"fingerprint\": \"74227362016a8763c4d5f5b06eeb7eabe5fbd7ed05798b586cc7f4bfef50d7fe\",\n \"changelog\": \"* Safety checks setting in T1.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"24bb4016388fca4b998285b95dcd408f4ed0bff6\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.2-bitcoinonly.bin\",\n \"fingerprint\": \"e597b6aef5a2e817f532d27b8501f99f189e432a887877bdd3498cd3a0afc431\",\n \"changelog\": \"* Security improvements.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"9276b1702361f70e094286e2f89e919d8a230d5c\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.3-bitcoinonly.bin\",\n \"fingerprint\": \"d1143d2cba9c7dba4d57703d2b7da87859d8668472ffc651177ead6b94e89117\",\n \"changelog\": \"* Small code improvements\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 4],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"595b14254c1abb2be3f69e42c7932f1eca8cf1b1\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.4-bitcoinonly.bin\",\n \"fingerprint\": \"30d858b022e218f27854f071d568e5a696c937f1316d83b93aadcd178f3b0a38\",\n \"changelog\": \"* Support Taproot.\\n* Show address confirmation in SignMessage.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 5],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"3f12742669bd782cac374a1750d517f4fd88c43b\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.5-bitcoinonly.bin\",\n \"fingerprint\": \"1d319f643fe2ba5c247b178c7f73b989ab4e43d914a60468566ee7cc5bb9dde0\",\n \"changelog\": \"* Small code improvements.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 11, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"85a26d2c9593bcdf858c2d718d79951ca927a0c3\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.11.1-bitcoinonly.bin\",\n \"fingerprint\": \"8e17b95b5d302f203de3a8fe27959efd25e3d5140ac9b5e60412f1b3f624995d\",\n \"changelog\": \"* Support Electrum signatures in VerifyMessage.\\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 11, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 11, 0],\n \"firmware_revision\": \"0d87b55ba4fed7eecc72bf2a94ee473830b095e9\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.11.2-bitcoinonly.bin\",\n \"fingerprint\": \"7e51546f4411ecf44688c681ada72a18495fd08e91f3a0429ab91bc4415b362a\",\n \"changelog\": \"* Show the fee rate on the signing confirmation screen. \\n* Show thousands separator when displaying large amounts \\n* Fix potential security issues in recovery workflow. \\n* Fix key extraction vulnerability in Cothority Collective Signing (CoSi). \\n* Fix nonce bias in CoSi signing.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 12, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"1eb0eb9d91b092e571aac63db4ebff2a07fd8a1f\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.12.1-bitcoinonly.bin\",\n \"fingerprint\": \"985fb6a8c87f7547fb810f6c4a8331ebf19c677445810358778eb21eca78a181\",\n \"changelog\": \"* Fee rate shown when replacing transaction.\\n* Ledger Live legacy derivation path m/44'/coin_type'/0'/account is now supported.\\n* SLIP-0019 proofs of ownership for native SegWit implemented.\\n* SLIP-0025 coinjoin accounts implemented for testing purposes.\\n* Bech32 addresses now not converting to uppercase in QR code to increase compatibility.\\n* Decimals of fee rate extended to 2 digits.\\n* Only \\\"sat\\\" displayed instead of \\\"sat BTC\\\".\\n* Bootloader 1.12.1. included.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 13, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"592590cf66a9b62dfeee7e4d2afb6e01005e5b2c\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.13.0-bitcoinonly.bin\",\n \"fingerprint\": \"253042fb209c78e02482c645b16cc9894c19124e9c9c0c1051b3c68b6e7c700b\",\n \"changelog\": \"* Multisig-related changes.\\n* Reworked PIN processing.\\n* Allow showing XPUB using a QR code.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 13, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.13.1-bitcoinonly.bin\",\n \"fingerprint\": \"f27095f2e08278a209567e254b9921f6e34b28a9c0fc702a268f210e23057c27\",\n \"changelog\": \"*\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 8, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"df0963ec48f01f3d07ffca556e21ff0070cab099\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.8.3-bitcoinonly.bin\",\n \"fingerprint\": \"13d6089cb935f453eaddbfe193e0ab37924a7aa66f684355a4fe5c660c18247a\",\n \"changelog\": \"* Small code improvements\"\n}\n", "{\n \"required\": true,\n \"version\": [1, 9, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"0b7a8449f8dd003fc415262b05102d113247d3de\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.0-bitcoinonly.bin\",\n \"fingerprint\": \"93a670dd20d044bf76cfce6eecd2a85918acdebe616229dbb31250fd03a33870\",\n \"changelog\": \"* Introduce Wipe Code\\n* Introduce passphrase cache\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"c6b2580cd245ee924507f45e9675f857a3d78768\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.1-bitcoinonly.bin\",\n \"fingerprint\": \"ee743e3bd1e424ceb45a1d877a5422e7af449706f636c459cdd8bb0d4796cba5\",\n \"changelog\": \"* Refactor Bitcoin signing\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"cde8f31ec2ddcb7d35e36edbcf8a71dda983a9ea\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.2-bitcoinonly.bin\",\n \"fingerprint\": \"2762c0ff78c96e23d1d348330e0a3cdf45d83c8fc8c2d48853b7cb602ddc19bb\",\n \"changelog\": \"* Adds support for multiple change outputs in outgoing transactions.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"0d5f00668fb3d1c093ff3c879311a91d3a7175c8\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.3-bitcoinonly.bin\",\n \"fingerprint\": \"76f899d60ffd9685713cb420d017565c05c43aadaf0e62b645a50a8db69afef6\",\n \"changelog\": \"* Improves the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\\n* Fixes smaller issues in the user interface.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 4],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.4-bitcoinonly.bin\",\n \"fingerprint\": \"3f73dfbcfc48f66c8814f6562524d81888230e0acd1c19b52b6e8772c6c67e7f\",\n \"changelog\": \"* Replacement transaction signing for replace-by-fee.\\n* Support for Output Descriptors export.\\n* Show Ypub/Zpub correctly for multisig GetAddress.\\n* Show amounts in mBTC, uBTC and sat denominations.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"f4424ece1ccb7fc0d6cad00ff840fac287a34f07\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.0.bin\",\n \"fingerprint\": \"595ba3e8e887cba185e03098f9538e18164f72f9fc82445e691abcd03e5cf0a4\",\n \"changelog\": \"* Bootloader 1.10.0.\\n* Allow decreasing the output value in RBF transactions.\\n* Support long PIN of up to 50 digits.\\n* Display nLockTime in human-readable form.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"3204fd682429eed23a82b748c05ae569c7f4481f\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.1.bin\",\n \"fingerprint\": \"36400becf1cdddec22b8150d56ff59eef76d37fef60dc465a6f82b4858903886\",\n \"changelog\": \"* Safety checks setting in T1.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"24bb4016388fca4b998285b95dcd408f4ed0bff6\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.2.bin\",\n \"fingerprint\": \"99707b90a504f7e402f26c3d59cbbdacbc52754cebcce79cc47be528fc889338\",\n \"changelog\": \"* Security improvements.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"9276b1702361f70e094286e2f89e919d8a230d5c\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.3.bin\",\n \"fingerprint\": \"bf0cc936a9afbf0a4ae7b727a2817fb69fba432d7230a0ff7b79b4a73b845197\",\n \"changelog\": \"* Remove Lisk.\\n* Re-enabled Firo support.\\n* Stricter protobuf field handling in Stellar.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 4],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"595b14254c1abb2be3f69e42c7932f1eca8cf1b1\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.4.bin\",\n \"fingerprint\": \"74dfdfb9addb9d90fedb2c88794b7236af521d21ef0096f9080c25b597c8af86\",\n \"changelog\": \"* Support Taproot.\\n* Show address confirmation in SignMessage.\\n* Support for Ethereum EIP-1559 transactions.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 10, 5],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"3f12742669bd782cac374a1750d517f4fd88c43b\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.10.5.bin\",\n \"fingerprint\": \"7619fcc73c43ca8a3e6aad3dc3eb6551fed05bb218340efe01a02bb96e9f346b\",\n \"changelog\": \"* Support for blindly signing EIP-712 data.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 11, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 10, 0],\n \"firmware_revision\": \"85a26d2c9593bcdf858c2d718d79951ca927a0c3\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.11.1.bin\",\n \"fingerprint\": \"f7c60d0b8c2853afd576867c6562aba5ea52bdc2ce34d0dbb8751f52867c3665\",\n \"changelog\": \"* Support Electrum signatures in VerifyMessage.\\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\\n* Zcash v5 transaction format.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 11, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 11, 0],\n \"firmware_revision\": \"0d87b55ba4fed7eecc72bf2a94ee473830b095e9\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.11.2.bin\",\n \"fingerprint\": \"d8b55b68dfe8a8449ce7391e841073ef5d29349638d85b750508bbef5d2de5ec\",\n \"changelog\": \"* Show the fee rate on the signing confirmation screen. \\n* Show thousands separator when displaying large amounts \\n* Fix potential security issues in recovery workflow. \\n* Fix key extraction vulnerability in Cothority Collective Signing (CoSi). \\n* Fix nonce bias in CoSi signing.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 12, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"1eb0eb9d91b092e571aac63db4ebff2a07fd8a1f\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.12.1.bin\",\n \"fingerprint\": \"3c694191f5b66a65cb5bb209adbf113cb40209e644b77162ba996bb7ee8f382b\",\n \"changelog\": \"* Fee rate shown when replacing transaction.\\n* Ledger Live legacy derivation path m/44'/coin_type'/0'/account is now supported.\\n* SLIP-0019 proofs of ownership for native SegWit implemented.\\n* SLIP-0025 coinjoin accounts implemented for testing purposes.\\n* Bech32 addresses now not converting to uppercase in QR code to increase compatibility.\\n* Decimals of fee rate extended to 2 digits.\\n* Only \\\"sat\\\" displayed instead of \\\"sat BTC\\\".\\n* Bootloader 1.12.1. included.\\n* Stellar addresses now shown in full + as a QR code.\\n* Ethereum fees now wrapped to the next line when needed.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 13, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"592590cf66a9b62dfeee7e4d2afb6e01005e5b2c\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.13.0.bin\",\n \"fingerprint\": \"356433bd9de6cb564bf7778fc5de73c56197459523358f267e9235af9e1ce46d\",\n \"changelog\": \"* Multisig-related changes.\\n* Reworked PIN processing.\\n* Allow showing XPUB using a QR code.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 13, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 12, 0],\n \"min_firmware_version\": [1, 12, 0],\n \"bootloader_version\": [1, 12, 1],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.13.1.bin\",\n \"fingerprint\": \"f588657818ccf99b0046ede3f87eeaf17a0e6e6f1b7853344e18b846ca835328\",\n \"changelog\": \"* Clear sign ETH staking transactions on Everstake pool.\\n* Use\u00A0GWei\u00A0when formatting large ETH amounts.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 3, 6],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"36b9d80120348700264bba518a533d4f82d79cbd\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.3.6.bin\",\n \"fingerprint\": \"03b559a758961b2bfd4443e6c36c10025268cf033ecd376fdd7a79ff658bf511\",\n \"changelog\": \"* Enable advanced transactions such as ones with REPLACE-BY-FEE and CHECKLOCKTIMEVERIFY\\n* Fix message signing for altcoins\\n* Message verification now shows address\\n* Enable GPG signing support\\n* Enable Ed25519 curve (for SSH and GPG)\\n* Use separate deterministic hierarchy for NIST256P1 and Ed25519 curves\\n* Users using SSH already need to regenerate their keys using the new firmware!!!\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 4, 0],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"e0e190b3dc29bcb0f6ab9699c439fe7bfbcde370\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.4.0.bin\",\n \"fingerprint\": \"5764715dbcf8ed88bc0ae1c2f715277f22b67f26c15e1f7543b2b44913b5c255\",\n \"changelog\": \"* U2F support\\n* Ethereum support\\n* GPG decryption support\\n* Zcash support\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 4, 1],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"ae37ea8a9a2ab96e60714451a7a9502e0ef1ffc9\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.4.1.bin\",\n \"fingerprint\": \"92636493f76f352213e681bbc26eb3a8844f7b8a3044214b65c3c2c10a0f788c\",\n \"changelog\": \"* Support for Zcash JoinSplit transactions\\n* Enable device lock after 10 minutes of inactivity\\n* Enable device lock by pressing left button for 2 seconds\\n* Confirm dialog for U2F counter change\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 4, 2],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"14399f100e862608c24a7e214e9ce971c4d32457\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.4.2.bin\",\n \"fingerprint\": \"a4b39f01bd134d01d7534821445bf779dbe6c25f0fcf7c7cb285a79b17f25e0a\",\n \"changelog\": \"* New Matrix-based recovery method\\n* Minor Ethereum fixes (including EIP-155 replay protection)\\n* Minor USB, U2F and GPG fixes\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 5, 0],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"6b74139b4530a4687b4a317b8b08f4329704efc4\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.5.0.bin\",\n \"fingerprint\": \"c4eddafd29b580d8482cda68e61bdcf1740d77520ef3a603758646bbffe957ea\",\n \"changelog\": \"* Enable Segwit for Testnet and Litecoin\\n* Enable ERC-20 tokens for Ethereum chains\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 5, 1],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"f0d2e7a37142a6d4c7f7e45a6e4427e53123d614\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.5.1.bin\",\n \"fingerprint\": \"1c1fa9802cbd6a947a4f3e78f209d3efe49eb4abbacb101bbc3a0a709c742707\",\n \"changelog\": \"* Wipe storage after 16 wrong PIN attempts\\n* Enable Segwit for Bitcoin\\n* Bcash aka Bitcoin Cash support\\n* Message signing/verification for Ethereum and Segwit\\n* Make address dialog nicer (switch text/QR via button)\\n* Use checksum for Ethereum addresses\\n* Add more ERC-20 tokens, handle unrecognized ERC-20 tokens\\n* Allow \\\"dry run\\\" recovery procedure\\n* Allow separated backup procedure\"\n}\n", "{\n \"required\": true,\n \"version\": [1, 5, 2],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"e4cc08775fc9c204f295442f930326eb7877f2d4\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.5.2.bin\",\n \"fingerprint\": \"99f71379dec893fbe109832a1150f338660be686fe6b4903ff10ff751ba4e448\",\n \"changelog\": \"* clean memory on start\\n* fix storage import from older versions\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 6, 0],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"firmware_revision\": \"723cf295a72ce07b96047901bb8c2e461a2488f8\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.6.0.bin\",\n \"fingerprint\": \"e40f6ce12724c2d24234a7752953b88fd9ec28b3ec72c0dbfa280095a67a06ca\",\n \"changelog\": \"* Native SegWit (Bech32) address support\\n* Show recognized BIP44/BIP49 paths in GetAddress dialog\\n* NEM support\\n* Expanse and UBIQ chains support\\n* Bitcoin Gold, DigiByte, Monacoin support\\n* Ed25519 collective signatures (CoSi) support\"\n}\n", "{\n \"required\": true,\n \"version\": [1, 6, 1],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"bootloader_version\": [1, 4, 0],\n \"firmware_revision\": \"9588e8f2736b60916f51e470deb18f55112a6ebc\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.6.1.bin\",\n \"fingerprint\": \"83c3190a94e524ac83a1704eb584a2ab53f8a65a893b1ab52e7135812857c807\",\n \"changelog\": \"* Use fixed-width font for addresses\\n* Lots of under-the-hood improvements\\n* Fixed issue with write-protection settings\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 6, 2],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"bootloader_version\": [1, 5, 0],\n \"firmware_revision\": \"c9113fd3f5fcd78e9e560dbac75ed5aae359eb2d\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.6.2.bin\",\n \"fingerprint\": \"d31304f793854e343df6ccf1804f7e2abf48ddcd82a379ca2d3711d54127e138\",\n \"changelog\": \"* Add possibility to set custom auto-lock delay\\n* Bitcoin Cash cashaddr support\\n* Zcash Overwinter hardfork support\\n* Support for new coins:\\n - Decred, Bitcoin Private, Fujicoin, Groestlcoin, Vertcoin, Viacoin, Zcoin\\n* Support for new Ethereum networks:\\n - EOS Classic, Ethereum Social, Ellaism, Callisto, EtherGem, Wanchain\\n* Support for 500+ new Ethereum tokens\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 6, 3],\n \"min_bridge_version\": [1, 1, 5],\n \"min_bootloader_version\": [1, 0, 0],\n \"min_firmware_version\": [1, 0, 0],\n \"bootloader_version\": [1, 5, 1],\n \"firmware_revision\": \"ef86786ff750351ec454c7bae33b4966cfa862d7\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.6.3.bin\",\n \"fingerprint\": \"e8dbb4b7fe8384afd4c99790277c2f2f366a1a0f3957aa3545c75371a99a8fcc\",\n \"changelog\": \"* Implement RSKIP-60 Ethereum checksum encoding\\n* Add support for new Ethereum networks (ESN, AKA, ETHO, MUSI, PIRL, ATH, GO)\\n* Add support for new 80 Ethereum tokens\\n* Improve MPU configuration\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 7, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 6, 0],\n \"firmware_revision\": \"83f1906cad648c560cd560577317046606398630\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.7.1.bin\",\n \"fingerprint\": \"1c303c50bb45d3f35da9e962d8405d0b8e89cc45e122496a48fce3995fa71d48\",\n \"changelog\": \"* Switch from HID to WebUSB\\n* Add support for Stellar\\n* Add support for Lisk\\n* Add support for Zcash Sapling hardfork\\n* Implement seedless setup\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 7, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 6, 0],\n \"firmware_revision\": \"0b26c529ec49daf584f322f3ef959c79694c8cf5\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.7.2.bin\",\n \"fingerprint\": \"4d5c7ac191dba315b2433af27c187925fb713d06984cc6f566231d809dd8d370\",\n \"changelog\": \"* Add support for OMNI layer: OMNI/MAID/USDT\\n* U2F fixes\\n* Don't ask for PIN if it has been just set\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 7, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 6, 1],\n \"firmware_revision\": \"f641e798f91a15c3b09e8dc6a163195dd56f86d2\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.7.3.bin\",\n \"fingerprint\": \"10acc6aa4f24aff36627473b98c23dc4f6d0220d33bc1e09cb572f02410ffdaf\",\n \"changelog\": \"* Fix USB issue on some Windows 10 installations\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 8, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"964a622bb512aa85cfcc3e451fc70729cc15bb4f\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.8.0.bin\",\n \"fingerprint\": \"d65f0c07a6a9c53d8b5287798eb53154b33f9e87cd38a3701970e3d0a750a659\",\n \"changelog\": \"* Security improvements\\n* Upgraded to new storage format\\n* Stellar and NEM fixes\\n* New coins: ATS, KMD, XPM, XSN, ZCL\\n* New ETH tokens\"\n}\n", "{\n \"required\": true,\n \"version\": [1, 8, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"0a6a5f85729e663fbeae5ce9e5745918ff6f9d5d\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.8.1.bin\",\n \"fingerprint\": \"019e849c1eb285a03a92bbad6d18a328af3b4dc6999722ebb47677b403a4cd16\",\n \"changelog\": \"* Fix fault when using the device with no PIN* Fix OMNI transactions parsing\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 8, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"3c19e3167d69902305a27f10e43abb5fc7a0254d\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.8.2.bin\",\n \"fingerprint\": \"909742eddcffdc72ca854557962ecad90e97585770f514170abe7a691b0c6eb1\",\n \"changelog\": \"* Security improvements\\n* Fix display of non-divisible OMNI amounts\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 8, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"df0963ec48f01f3d07ffca556e21ff0070cab099\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.8.3.bin\",\n \"fingerprint\": \"496aecfab867504b2283a9f057a0b2fd9d17970a22c81f6ad74232e7b914ce68\",\n \"changelog\": \"* Small code improvements\"\n}\n", "{\n \"required\": true,\n \"version\": [1, 9, 0],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"0b7a8449f8dd003fc415262b05102d113247d3de\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.0.bin\",\n \"fingerprint\": \"1f40d1e68f9d182888b5b60da5209eff047ec68fcc96a5c9b61b0e55dd07d458\",\n \"changelog\": \"* Introduce Wipe Code\\n* Introduce passphrase cache\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 1],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"c6b2580cd245ee924507f45e9675f857a3d78768\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.1.bin\",\n \"fingerprint\": \"30cde253c46d4fc705f98634a35d06a494cf2a36824622a9c6a573e07f14292d\",\n \"changelog\": \"* Refactor Bitcoin signing\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 2],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"cde8f31ec2ddcb7d35e36edbcf8a71dda983a9ea\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.2.bin\",\n \"fingerprint\": \"45b83acd1330ddfd5567edbae5ff8028df1c48a493f01d47cc5499ee0be9b991\",\n \"changelog\": \"* Reintroduces the ability to spend pre-Overwinter (2018) funds on Zcash-like coins.\\n* Adds support for multiple change outputs in outgoing transactions.\\n* Adds a security check to prevent potential issues with paths used in altcoin transactions.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 3],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"0d5f00668fb3d1c093ff3c879311a91d3a7175c8\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.3.bin\",\n \"fingerprint\": \"2589f456559f813d1149be1022e62f2d48fbe28f4d02de933bd888d91035cace\",\n \"changelog\": \"* Improves the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\\n* Adds support for Verge (XVG).\\n* Drops support for Metaverse (ETP), GINcoin (GIN), Pesetacoin (PTC), and Zel (ZEL).\\n* Re-enables spending coins from Bitcoin paths (fixing some compatibility issues with Bitcoin Cash wallets).\\n* Fixes smaller issues in the user interface.\"\n}\n", "{\n \"required\": false,\n \"version\": [1, 9, 4],\n \"min_bridge_version\": [2, 0, 25],\n \"min_bootloader_version\": [1, 5, 0],\n \"min_firmware_version\": [1, 6, 2],\n \"bootloader_version\": [1, 8, 0],\n \"firmware_revision\": \"ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3\",\n \"translations\": {},\n \"url\": \"firmware/t1b1/trezor-t1b1-1.9.4.bin\",\n \"fingerprint\": \"867017bd784cc4e9ce6f0875c61ea86f89b19380d54045c34608b85472998000\",\n \"changelog\": \"* Replacement transaction signing for replace-by-fee.\\n* Support for Output Descriptors export.\\n* Show Ypub/Zpub correctly for multisig GetAddress.\\n* Show amounts in mBTC, uBTC and sat denominations.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"2c7cc6e0255dee2339b445b5551eaffb88dbd1b4\",\n \"translations\": {},\n \"url\": \"firmware/t2b1/trezor-t2b1-2.6.3-bitcoinonly.bin\",\n \"fingerprint\": \"6aecc9d9fd137a661f38ce36713aa0889b77ec4d35d91c68e01bda225cda2850\",\n \"changelog\": \"* QR Code for Extended Public Keys (XPUBs). \\n* The new bootloader version 2.1.4 is now included for enhanced system performance and security. \\n* The screen will now automatically turn off when the device is locked, helping to extend the life of the OLED display and save energy.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"42e9ed0e09033d474dee1a560fe5870646fa440e\",\n \"translations\": {},\n \"url\": \"firmware/t2b1/trezor-t2b1-2.6.4-bitcoinonly.bin\",\n \"fingerprint\": \"013d595fc621c12324afd90721c6a37d055d853f6af54d5432e27e6a425656dd\",\n \"changelog\": \"* Resolved an issue related to the invalid encoding of signatures from the Optiga chip.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"45e8a842a31e62a6d43d7f6ccac62a45e1198ef0\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.0.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.7.0.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.7.0.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.0.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.7.0-bitcoinonly.bin\",\n \"fingerprint\": \"bb91489a4790b3668e2f5d574a729a0f43009510550fecb5e04c0937d355b2cf\",\n \"changelog\": \"* Add translations capability. \\n* Add loader to homescreen when locking the device. \\n* Allow for going back to previous word in recovery process. \\n* Display descriptors for BTC Taproot public keys. \\n* Add missing semicolon character to the passphrase entry.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.7.2-bitcoinonly.bin\",\n \"fingerprint\": \"5b6e312430de9db6ad3a843e1ba311f8cff9c6a691c20c0e69b711451a729f40\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"dd4671a5104952ef505d28d1f9e94d1484b4607a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.0.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.0.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.0.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.0.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.0.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.0.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.0-bitcoinonly.bin\",\n \"fingerprint\": \"ae088439d44fc8643b8de28e0d7a8720cd3dbb247619f2742604bbe884542558\",\n \"changelog\": \"* Removed CoSi functionality. \\n* Increased Optiga read timeout to avoid spurious RSODs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.10-bitcoinonly.bin\",\n \"fingerprint\": \"5bd50bbcf6435f97b6dc46f96ad11235965cd8a78619c573c3c0aca6822e9ed2\",\n \"changelog\": \"* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Allow firmware upgrade even if language change failed.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.7-bitcoinonly.bin\",\n \"fingerprint\": \"6381f8a373f9f91a3cf4000a762b8dbf553d11a4a6d433c8863b2fa9eecfd9f1\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Included new version of bootloader (2.1.8).\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.9-bitcoinonly.bin\",\n \"fingerprint\": \"bde9c5ef485548746150e07a9c5081c25f2bdf127707a41f3c487ca83a6c0667\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* New UI for confirming long messages.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.9.1-bitcoinonly.bin\",\n \"fingerprint\": \"4021f750b194d4663c9dbc79048b6cf0acca3abe05eca4a27db563cb579d1829\",\n \"changelog\": \"* Make space between value and unit non-breakable.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"2c7cc6e0255dee2339b445b5551eaffb88dbd1b4\",\n \"translations\": {},\n \"url\": \"firmware/t2b1/trezor-t2b1-2.6.3.bin\",\n \"fingerprint\": \"1aea81cf4a823951540a041ae52d1950efade73531f7640c85805f8950f11a38\",\n \"changelog\": \"* QR Code for Extended Public Keys (XPUBs). \\n* The new bootloader version 2.1.4 is now included for enhanced system performance and security. \\n* The screen will now automatically turn off when the device is locked, helping to extend the life of the OLED display and save energy.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"42e9ed0e09033d474dee1a560fe5870646fa440e\",\n \"translations\": {},\n \"url\": \"firmware/t2b1/trezor-t2b1-2.6.4.bin\",\n \"fingerprint\": \"5ac16cb5002aa607908be376378a7fd1a1bc18f7b05e7a047cb1365840cc93ef\",\n \"changelog\": \"* Trezor Safe 3 now supports Solana, expanding the range of cryptocurrencies it can securely manage. [Universal fw only] \\n* Ethereum fees are now uniformly presented in Gwei, enhancing clarity and consistency for users. [Universal fw only] \\n* Issue with missing address confirmation screens is now fixed. [Universal fw only] \\n* Resolved an issue related to the invalid encoding of signatures from the Optiga chip.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"45e8a842a31e62a6d43d7f6ccac62a45e1198ef0\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.0.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.7.0.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.7.0.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.0.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.7.0.bin\",\n \"fingerprint\": \"522eb5db073c0f039f7164360668e75a43399d0b4e40edfd06f77f4401cd98aa\",\n \"changelog\": \"* Add translations capability. \\n* Add loader to homescreen when locking the device. \\n* Allow for going back to previous word in recovery process. \\n* Clear sign ETH staking transactions on Everstake pool. [Universal fw only] \\n* Display descriptors for BTC Taproot public keys. \\n* Multiple Solana instructions improved. [Universal fw only] \\n* Add missing semicolon character to the passphrase entry.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.7.2.bin\",\n \"fingerprint\": \"d072560f34782faf5537aa08a48c4e24671d4c60e9c291a00bfbf12cbc425666\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares. \\n* Added support for Cardano Conway certificates [Universal fw only].\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"dd4671a5104952ef505d28d1f9e94d1484b4607a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.0.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.0.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.0.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.0.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.0.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.0.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.0.bin\",\n \"fingerprint\": \"cf3ce230a69a681199f74cf6ac8c6c431f8fa7e0d0183437f93c5cc029fbd155\",\n \"changelog\": \"* Removed CoSi functionality. \\n* Increased Optiga read timeout to avoid spurious RSODs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.10.bin\",\n \"fingerprint\": \"db555520689b1af7c18cb20fc2631fbf07ce4f7dd735c7e64ab279e1ad03a33a\",\n \"changelog\": \"* Solana: rent fee calculation [#4933]\\n* Solana: loadable token definitions [#3541]\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Fixed Solana staking dialog title.\\n* Updated EIP-1559 fee-related labels.\\n* Allow firmware upgrade even if language change failed.\\n* Solana: fees calculation is now exact [#4965]\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.7.bin\",\n \"fingerprint\": \"554c6586df79e1281dd377bfb99d7b2594dbac66d749837c6a78b9c5e0751098\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\\n* Included new version of bootloader (2.1.8).\\n* Fix ETH account number detection.\\n* New EVM call contract flow UI.\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t2b1/translation-T2B1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.8.9.bin\",\n \"fingerprint\": \"f6e03b48ab163f302bb886da197b6a0e7b390efdc5815b419535c5dee5cac1f7\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* New UI for confirming long messages.\\n* Solana staking confirmation dialogs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 1],\n \"min_firmware_version\": [2, 6, 1],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2b1/translation-T2B1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t2b1/translation-T2B1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t2b1/translation-T2B1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t2b1/translation-T2B1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t2b1/translation-T2B1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t2b1/trezor-t2b1-2.9.1.bin\",\n \"fingerprint\": \"a3f4b7dd49aa7b22533bdff20b83ff07fbf4946794df0b1b830397d4cf3983e4\",\n \"changelog\": \"* Add support for signing arbitrary messages in Cardano.\\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\\n* Improved Stellar transaction signing interface for a more streamlined user experience.\\n* Implement multi-item menus for Solana staking.\\n* Make space between value and unit non-breakable.\\n* Fixed Solana signature failure.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 5],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 1, 0],\n \"firmware_revision\": \"df0963ec48f01f3d07ffca556e21ff0070cab099\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.5-bitcoinonly.bin\",\n \"fingerprint\": \"9de90d9f8ca12506f3b9a4cbe7616294144d965d67daa3a03bfe6c0b74a44843\",\n \"changelog\": \"* Fix UI for Shamir with 33 words\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 6],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"629fa58d396e732f230866ebe733d268370d7879\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.6-bitcoinonly.bin\",\n \"fingerprint\": \"4e7f0f95d71631159b9e873f36a812c93a10eca1fad5f38c78ae7fbe4c1f6ed4\",\n \"changelog\": \"* Small code improvements.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"2cabc8b40ce237ee8a7e1926b6269040519d447a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.7-bitcoinonly.bin\",\n \"fingerprint\": \"fd92ac173a2cf93cc07ced3287e07800ed10466dc38c0c7240d9b20c689dd1d1\",\n \"changelog\": \"* Super Shamir (with Groups)\\n* Fix low memory issue\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 8],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"8eb6ce08995514c67d175b7197feeadeccc48ff0\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.8-bitcoinonly.bin\",\n \"fingerprint\": \"ec752e9fa99a29979497e093b32bdb2b592783e2b48c87d8f6f0c18c73cd3022\",\n \"changelog\": \"* Show XPUBs in GetAddress for multisig\\n* Security improvements\"\n}\n", "{\n \"required\": true,\n \"version\": [2, 3, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0b7a8449f8dd003fc415262b05102d113247d3de\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.0-bitcoinonly.bin\",\n \"fingerprint\": \"bddc0fd3b52fd32d94b776048f62b3d03dcb6ab90140e482a042a2863093115f\",\n \"changelog\": \"* Introduce Wipe code\\n* Introduce SD card protection\\n* Introduce passphrase cache\\n* Security fixes\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"c6b2580cd245ee924507f45e9675f857a3d78768\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.1-bitcoinonly.bin\",\n \"fingerprint\": \"41795ec196f74c5d6acecc09047a5eacf1dfca47b0aeaa8442a69568efe20ddb\",\n \"changelog\": \"* Refactor Bitcoin signing\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"63ebb8ccb56fc17a72eef91db36a37ff3176519d\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.2-bitcoinonly.bin\",\n \"fingerprint\": \"389cb54fb6fc75489b788ad669ce51f41d47a67af54b8745a0dfe48da38a777f\",\n \"changelog\": \"* Introduces 'Autolock' feature, which automatically locks the device to enforce the PIN entry after a certain period.\\n* Fixes compatibility issues with Casa and GreenAddress.\\n* Adds support for multiple change outputs in outgoing transactions.\\n* Improves some interface elements.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0d5f00668fb3d1c093ff3c879311a91d3a7175c8\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.3-bitcoinonly.bin\",\n \"fingerprint\": \"dda77cd7893a5f413f8fc4b2f44d1d43ed4b26e8ced5e6e578cc6b302c1a2310\",\n \"changelog\": \"* Advances the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\\n* Introduces a hard limit on transaction fees to prevent accidentally paying extra hefty fees (the limit can be manually disabled).\\n* Fixes smaller issues with the user interface, customization, and more.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"50854b9210f7674262c1541272a8c7fd1767b7a9\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.4-bitcoinonly.bin\",\n \"fingerprint\": \"085acbba98163284ef86dea637f9442b924e80fea245f5ebb60d5aab3be2b7b6\",\n \"changelog\": \"* Small code improvements.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 5],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.5-bitcoinonly.bin\",\n \"fingerprint\": \"53e7ee5bfc75cfa6412d8de5461b1ea8d9b7e10970ce7cadae9cbb1e17bbb77d\",\n \"changelog\": \"* Replacement transaction signing for replace-by-fee and PayJoin.\\n* Support for Output Descriptors export.\\n* Paginated display for signing/verifying long messages.\\n* Show Ypub/Zpub correctly for multisig GetAddress.\\n* Show amounts in mBTC, uBTC and sat denominations.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 6],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"b19cbf67c6c7c38513947b703df6d4409c59bc98\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.6-bitcoinonly.bin\",\n \"fingerprint\": \"e2cab40bb4c6ae65417b80ad564b905796038a0f5e6d0f50cead257fdd3a9c2d\",\n \"changelog\": \"* Add compatibility paths for Unchained Capital\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"ea3596ad89a7993ad7b9d62798de94325ad1717a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.0-bitcoinonly.bin\",\n \"fingerprint\": \"89c91287ab7a9cd3ec246b6822a0d04b7d40401abef706cccafbb7b98bd6a3d7\",\n \"changelog\": \"* Locking the device by holding finger on the homescreen.\\n* Support PIN of unlimited length.\\n* Allow decreasing the output value in RBF transactions.\\n* Reduce memory fragmentation.\\n* Improve wording when showing multisig XPUBs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"24bb4016388fca4b998285b95dcd408f4ed0bff6\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.1-bitcoinonly.bin\",\n \"fingerprint\": \"fce4503fcadb68dc72144a562ec0a59e7c8d083e403e01bfc4c584161d79f596\",\n \"changelog\": \"* Security and major perfomance improvements.\\n* Fix red screen on shutdown.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"9276b1702361f70e094286e2f89e919d8a230d5c\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.2-bitcoinonly.bin\",\n \"fingerprint\": \"60fee3c9775d8ccf71099f6f7d277463efd128414cfb9be45656b1a26eeb7301\",\n \"changelog\": \"* Memory optimization of BTC signing.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"595b14254c1abb2be3f69e42c7932f1eca8cf1b1\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.3-bitcoinonly.bin\",\n \"fingerprint\": \"1744efccabd479526392b281b7e0fc7aa2b4ecb454007dff7ca8c1f8171fad90\",\n \"changelog\": \"* Support Taproot.\\n* Show address confirmation in SignMessage.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"85a26d2c9593bcdf858c2d718d79951ca927a0c3\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.1-bitcoinonly.bin\",\n \"fingerprint\": \"db5d7b211532f717a32fe0b1bd3e3df6ad5464079a896a7f7492ab6e9e030bb5\",\n \"changelog\": \"* Support Electrum signatures in VerifyMessage.\\n* Bitcoin bech32 addresses QR codes have bigger pixels which are easier to scan.\\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0d87b55ba4fed7eecc72bf2a94ee473830b095e9\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.2-bitcoinonly.bin\",\n \"fingerprint\": \"76aa25f9602cfb03cd3e07a82ac09226344eb355355aec216295e43b675eedf7\",\n \"changelog\": \"* Show the fee rate on the signing confirmation screen. \\n* Show thousands separator when displaying large amounts.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"2f03ace311584988d5aeab58fd1acf24ef54711a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.3-bitcoinonly.bin\",\n \"fingerprint\": \"c094c84ba958129885fa725ee6ddb781b580fd2c7851e83aef9054ba4a10526c\",\n \"changelog\": \"* Add SLIP-0025 CoinJoin accounts. \\n* Show red error header when Trezor doesn't see USB data connection. \\n* Show fee rate when replacing transaction. \\n* Optimize the signing of BTC transactions. \\n* Extend decimals of fee rate to 2 digits. \\n* Display only \u201Csat\u201D instead of \u201Csat BTC\u201D.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 0],\n \"firmware_revision\": \"88e1f8c7a5c7615723664c64b0a25adc0c409dee\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.0-bitcoinonly.bin\",\n \"fingerprint\": \"54f084dab4be1e64dc2cb970a6de87969407e4d6c48d79acdcf5d374ec0f29d6\",\n \"changelog\": \" Show source account path in BTC signing. \\n* Ability to reboot the device into bootloader mode directly, without needing to unplug the device. \\n* Support for Ledger Live legacy derivation path \\\"m/44'/coin_type'/0'/account\\\". \\n* Redesigned UI. \\n* Homescreen now supports full-screen images.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"2c7cc6e0255dee2339b445b5551eaffb88dbd1b4\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.3-bitcoinonly.bin\",\n \"fingerprint\": \"1765518ca4025d4d46362d07128bb38413831511a2aff0dee1b05e6e58ff5317\",\n \"changelog\": \"* QR Code for Extended Public Keys (XPUBs). \\n* Adjusted buttons for multipage content scrolling, providing a more intuitive and user-friendly experience. \\n* The new bootloader version 2.1.4 is now included for enhanced system performance and security.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"42e9ed0e09033d474dee1a560fe5870646fa440e\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.4-bitcoinonly.bin\",\n \"fingerprint\": \"e78da8a00354dd1223da081600f881b71bd297dd565e7a2c0a9880e52575d127\",\n \"changelog\": \"* The display of spaced addresses has been refined, offering a more user-friendly and visually optimized experience. \\n* Boot-up logo display has been optimized, contributing to a smoother and more visually appealing device startup.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"45e8a842a31e62a6d43d7f6ccac62a45e1198ef0\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.0.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.7.0.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.7.0.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.0.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.7.0-bitcoinonly.bin\",\n \"fingerprint\": \"c94f07150a6f0bb2862d4c31c6059862aab14f0073dea581118eef51a983bc30\",\n \"changelog\": \"* Add translations capability. \\n* Allow for going back to previous word in recovery process. \\n* Display descriptors for BTC Taproot public keys. \\n* Fixed blank display delay on startup when display orientation is set to other than north.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.7.2-bitcoinonly.bin\",\n \"fingerprint\": \"cba515383705ec6420c54dd1ffdb33ea7ce4bb04bc6d992c2923880daa53d3e1\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"632b9561559b7ab6824bb7eeac072874e07b7b82\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.1.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.1.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.1.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.1.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.1.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.1.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.1-bitcoinonly.bin\",\n \"fingerprint\": \"38ab127fcf4263a18a3b07593301fdd2c6a1a96360b62c131adb849b5d18fae3\",\n \"changelog\": \"* Fixed displaying of a progress indicator for the formatting operation.\\n* Improve precision of PIN validation countdown.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.10-bitcoinonly.bin\",\n \"fingerprint\": \"c280cfbe83b261ef30c64eb58f55538b3cceee01ba7d8f57d6e8cbf92527066b\",\n \"changelog\": \"* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Fixed upgrade confirmation text overflow.\\n* Allow firmware upgrade even if language change failed.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.7-bitcoinonly.bin\",\n \"fingerprint\": \"7bdf5de0c00c5d15c06d526a5b0d22cfd8343eb3e7aa01ee3c4ed60dd063bbf1\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Included new version of bootloader (2.1.8).\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 8],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"592590cf66a9b62dfeee7e4d2afb6e01005e5b2c\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.8.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.8.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.8.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.8.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.8.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.8.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.8-bitcoinonly.bin\",\n \"fingerprint\": \"81928bbb5bc855f46a2ccb210173f9676b69d153a513bfa0101abfc063f7aef5\",\n \"changelog\": \"* Fix \\\"PIN attempts exceeded\\\" screen\\n* Fixed a bug resulting in restarting the recovery flow when inputting 33-word mnemonic\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.9-bitcoinonly.bin\",\n \"fingerprint\": \"e5878fa067df9d1256cdcd86f10869930d85e090c39f807c23f8845472e8d995\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* New UI for confirming long messages.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.9.1-bitcoinonly.bin\",\n \"fingerprint\": \"77b53ba1e381fcf8ce0868e8d158484e57ef22de1389b60df0a287199b92c14f\",\n \"changelog\": \"* Limit swipe detection to the component's bounds.\\n* Make space between value and unit non-breakable.\\n* Do not hide the shown PIN until the touch is released.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 0, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 2],\n \"firmware_revision\": \"5c3a5d4577b568d90bfa3528d0243d74848d994f\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.10.bin\",\n \"fingerprint\": \"fcaa6ee206c2c121eb2d45d065d66f0879f14be45c244d4acf908be1de22275e\",\n \"changelog\": \"* Fix Monero payment ID computation\\n* Fix issue with touch screen and flickering\\n* Add support for OMNI layer: OMNI/MAID/USDT\\n* Add support for new coins: BTX, CPC, GAME, RVN\\n* Add support for new Ethereum tokens\"\n}\n", "{\n \"required\": true,\n \"version\": [2, 0, 5],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 0],\n \"firmware_revision\": \"8852fb54820032f4f287414aa250df981d25445f\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.5.bin\",\n \"fingerprint\": \"851172eab96c07bf9efb43771cb0fd14dc0320a68de047132c7bd787a1ad64e9\",\n \"changelog\": \"* First public release\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 0, 6],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 0],\n \"firmware_revision\": \"886888b7750402d9a9e12bd990e75c0a8dc6cc86\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.6.bin\",\n \"fingerprint\": \"4eccabf2fd7e121ed0da657c064a65c5694402497e60ea2ac2dcf1e118db9cc6\",\n \"changelog\": \"* Fix layout for Ethereum transactions\\n* Fix public key generation for SSH and GPG\\n* Add special characters to passphrase keyboard\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 0, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 0],\n \"firmware_revision\": \"5c621800110a791c84865b6b381908e8c2f15283\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.7.bin\",\n \"fingerprint\": \"f3a42e640e526fba6574fafa520fc7d97ef9f557d24da24d9a2ea4176a4c4164\",\n \"changelog\": \"* Bitcoin Cash cashaddr support\\n* Zcash Overwinter hardfork support\\n* NEM support\\n* Lisk support\\n* Show warning on home screen if PIN is not set\\n* Support for new coins:\\n - Bitcoin Private, Fujicoin, Vertcoin, Viacoin, Zcoin\\n* Support for new Ethereum networks:\\n - EOS Classic, Ethereum Social, Ellaism, Callisto, EtherGem, Wanchain\\n* Support for 500+ new Ethereum tokens\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 0, 8],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 0],\n \"firmware_revision\": \"939a93221941df8d454569a674f6fb082bf1d423\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.8.bin\",\n \"fingerprint\": \"642b6215bda981f8eacafee34dbee5cdeee7d47d49f605bbe2828a8d9b79813d\",\n \"changelog\": \"* Monero support\\n* Cardano support\\n* Stellar support\\n* Ripple support\\n* Tezos support\\n* Decred support\\n* Groestlcoin support\\n* Zencash support\\n* Zcash sapling hardfork support\\n* Implemented seedless setup\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 0, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 0],\n \"firmware_revision\": \"7c2e9ed5a51dc00dec9d195878c5ad57016b4889\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.0.9.bin\",\n \"fingerprint\": \"87be93d6966e7a9eff78dc7b434d1a138ec8d1ee0300882d16f90b606f3a806b\",\n \"changelog\": \"* Small Monero and Segwit bugfixes\"\n}\n", "{\n \"required\": true,\n \"version\": [2, 1, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"bootloader_version\": [2, 0, 3],\n \"firmware_revision\": \"3f0e3a334e03f49ff819d14cbbec00194c586c27\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.0.bin\",\n \"fingerprint\": \"bb5b0308807b45d41d1e2ab66a468152997ad69a01099789d8a35e464cde999f\",\n \"changelog\": \"* Security improvements\\n* Upgraded to new storage format\\n* Ripple, Stellar, Cardano and NEM fixes\\n* New coins: ATS, AXE, FLO, GIN, KMD, NIX,\\n PIVX, REOSC, XPM, XSN, ZCL\\n* New ETH tokens\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 5],\n \"firmware_revision\": \"7af1d5859458e87efd6957885566aed890a9f781\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.1.bin\",\n \"fingerprint\": \"1b3166a878658fcd2ff82c7ac9a2587da544fd105f678cc7b4d41cba5a8d4c01\",\n \"changelog\": \"* Hotfix for touchscreen freeze\\n* Don't rotate the screen via swipe gesture\\n* Set screen rotation via user setting\\n* More strict path validations\\n* Display non-zero locktime values\\n* EOS support\\n* Monero UI fixes\\n* Speed and memory optimizations\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 1, 0],\n \"firmware_revision\": \"6a1a02ca3c595067ed02a78f2d6c36eb58eaa9ed\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.4.bin\",\n \"fingerprint\": \"820611a92605b1ccc612b9bf8550617aec6962bd2484fcb6ae4792bc498654e4\",\n \"changelog\": \"* Shamir Backup with Recovery persistence\\n* Touchscreen freeze fix\\n* Fix display of non-divisible OMNI amounts\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 5],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 1, 0],\n \"firmware_revision\": \"df0963ec48f01f3d07ffca556e21ff0070cab099\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.5.bin\",\n \"fingerprint\": \"40e4bfaf3c5ec77872c1aaaac085aafcc443f60279ca2bb38d29c669233fdf62\",\n \"changelog\": \"* Fix for sluggish U2F authentication when using Shamir\\n* Fix UI for Shamir with 33 words\\n* Fix Wanchain signing\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 6],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"629fa58d396e732f230866ebe733d268370d7879\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.6.bin\",\n \"fingerprint\": \"e2032ad84108a85d4014d477b955b9181a1a56e6f222ef21bb7d47b503a02f0b\",\n \"changelog\": \"* Super Shamir (with Groups)\\n* FIDO2 support with credential management\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"2cabc8b40ce237ee8a7e1926b6269040519d447a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.7.bin\",\n \"fingerprint\": \"acf1b4c6fec3624a8fc53f9130ff53d690c3fa1c134bd4ca3e58ee7b5a0441d8\",\n \"changelog\": \"* Super Shamir (with Groups)\\n* FIDO2 support with credential management\\n* Fix low memory issue\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 1, 8],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"8eb6ce08995514c67d175b7197feeadeccc48ff0\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.1.8.bin\",\n \"fingerprint\": \"8a5fa12132651b6e33344fd025d0d90885f5cc1c342427ebcea4f0ae98b50d8c\",\n \"changelog\": \"* Support Tezos 005-BABYLON hardfork\\n* Show XPUBs in GetAddress for multisig\\n* Security improvements\"\n}\n", "{\n \"required\": true,\n \"version\": [2, 3, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0b7a8449f8dd003fc415262b05102d113247d3de\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.0.bin\",\n \"fingerprint\": \"212929f63fe1393e2ff57e06537a38cff281e3cfb3a4e17235079e2f08871e6c\",\n \"changelog\": \"* Introduce Wipe code\\n* Introduce SD card protection\\n* Introduce passphrase cache\\n* U2F UX improvements\\n* Security fixes\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"c6b2580cd245ee924507f45e9675f857a3d78768\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.1.bin\",\n \"fingerprint\": \"37178a5ec24e34f8a0599aebcadaf206af3ebadef2fc596665d617dd3e05a5db\",\n \"changelog\": \"* Refactor Bitcoin signing\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"63ebb8ccb56fc17a72eef91db36a37ff3176519d\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.2.bin\",\n \"fingerprint\": \"f5ccdca0cbe163ecb93df726da72b69abb93f70d24d295db00b3ca2738216160\",\n \"changelog\": \"* Introduces 'Autolock' feature, which automatically locks the device to enforce the PIN entry after a certain period.\\n* Updates the Cardano support to enable staking and other Shelley updates.\\n* Reintroduces the ability to spend pre-Overwinter (2018) funds on Zcash-like coins.\\n* Fixes compatibility issues with Casa and GreenAddress.\\n* Adds support for multiple change outputs in outgoing transactions.\\n* Improves some interface elements.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0d5f00668fb3d1c093ff3c879311a91d3a7175c8\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.3.bin\",\n \"fingerprint\": \"46326222f8afcb82e1cd07867bc3bf8836f4e9d0f367e23b58d1e9bc32cd032e\",\n \"changelog\": \"* Advances the Passphrase feature by showing the entered passphrase on the Trezor screen before opening the wallet.\\n* Adds support for Verge (XVG).\\n* Drops support for Metaverse (ETP), GINcoin (GIN), Pesetacoin (PTC), and Zel (ZEL).\\n* Introduces a hard limit on transaction fees to prevent accidentally paying extra hefty fees (the limit can be manually disabled).\\n* Resolves the problems with generating the Crown addresses.\\n* Re-enables spending altcoins from Bitcoin paths (fixing some compatibility issues with Bitcoin Cash wallets).\\n* Fixes smaller issues with the user interface, customization, and more.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"50854b9210f7674262c1541272a8c7fd1767b7a9\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.4.bin\",\n \"fingerprint\": \"58b51a6587993965979a744f8fcd5c4761f11ce4bec6b059a5d56bd0987d6658\",\n \"changelog\": \"* This firmware only contains the changes needed after the latest Monero update (HF13) by introducing support for the CLSAG transactions.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 5],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"ffa96205fb5e22b43e7b08a3dbc3cdeee0931de3\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.5.bin\",\n \"fingerprint\": \"c0a6cacfed5c7a691314919c22307c29fbe9522071a9a28669769c014762d386\",\n \"changelog\": \"* Replacement transaction signing for replace-by-fee and PayJoin.\\n* Support for Output Descriptors export.\\n* Paginated display for signing/verifying long messages.\\n* Show Ypub/Zpub correctly for multisig GetAddress.\\n* Show amounts in mBTC, uBTC and sat denominations.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 3, 6],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"b19cbf67c6c7c38513947b703df6d4409c59bc98\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.3.6.bin\",\n \"fingerprint\": \"0efa3ba6135caea7693d145d60441eeb46283fe0b8b1fd59a04af33a638ad237\",\n \"changelog\": \"* Add compatibility paths for Unchained Capital\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"ea3596ad89a7993ad7b9d62798de94325ad1717a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.0.bin\",\n \"fingerprint\": \"d90265ee6d7d499c7d938b5322f71f27042da8a6fdaed54c224d31b65e868def\",\n \"changelog\": \"* Locking the device by holding finger on the homescreen.\\n* Support PIN of unlimited length.\\n* Allow decreasing the output value in RBF transactions.\\n* Reduce memory fragmentation.\\n* Update FIDO icons.\\n* Improve wording when showing multisig XPUBs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"24bb4016388fca4b998285b95dcd408f4ed0bff6\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.1.bin\",\n \"fingerprint\": \"84bc47bb197b3ae7bfb096f03d4a528ccf6c9ef4dfee0aac4022971e4ec91d68\",\n \"changelog\": \"* Security and major perfomance improvements.\\n* Cardano fixes.\\n* Fix red screen on shutdown.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"9276b1702361f70e094286e2f89e919d8a230d5c\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.2.bin\",\n \"fingerprint\": \"54ccf155510b5292bd17ed748409d0d135112e24e62eb74184639460beecb213\",\n \"changelog\": \"* Support for Ethereum EIP1559 transactions.\\n* Re-enabled Firo support.\\n* Memory optimization of BTC signing and CBOR decoding.\\n* Support for large Cardano transactions.\\n* Remove Lisk.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 4, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"595b14254c1abb2be3f69e42c7932f1eca8cf1b1\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.4.3.bin\",\n \"fingerprint\": \"a07f69d8d2065006a79c6b5636bd046496dbcb3820b41f1d604d8a4605ca4056\",\n \"changelog\": \"* Support Taproot.\\n* Show address confirmation in SignMessage.\\n* Support for advanced Cardano transactions and different derivations for compatibility.\\n* Ethereum support for EIP712 (signing typed data).\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"85a26d2c9593bcdf858c2d718d79951ca927a0c3\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.1.bin\",\n \"fingerprint\": \"782d4934897018cac779eebb0d7c66e21da7789b9cd35e1f99f097bdfd9b7d33\",\n \"changelog\": \"* Support Electrum signatures in VerifyMessage.\\n* Support Cardano Alonzo-era transactions (Plutus).\\n* Bitcoin bech32 addresses QR codes have bigger pixels which are easier to scan.\\n* EIP-1559 transaction correctly show final Hold to Confirm screen.\\n* Trezor will refuse to sign UTXOs that do not match the provided derivation path (e.g., transactions belonging to a different wallet, or synthetic transaction inputs).\\n* Zcash v5 transaction format.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"0d87b55ba4fed7eecc72bf2a94ee473830b095e9\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.2.bin\",\n \"fingerprint\": \"659b1b698546fa63f24200e148b6f9a7044df31d11a0a5ec7c044f2dd83f4a27\",\n \"changelog\": \"* Add support for Monero HF15 features. \\n* Show the fee rate on the signing confirmation screen. \\n* Support for Cardano Babbage era transaction items \\n* Add \\\"Show All\\\"/\\\"Show Simple\\\" choice to Cardano transaction signing \\n* Show thousands separator when displaying large amounts. \\n* Fix Decred transaction weight calculation.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 5, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"firmware_revision\": \"2f03ace311584988d5aeab58fd1acf24ef54711a\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.5.3.bin\",\n \"fingerprint\": \"4f57dca1abc1a60d82c4fef7c96e86d784fc7a1e5e3da724dd2ae4d14c6350bf\",\n \"changelog\": \"* Add SLIP-0025 CoinJoin accounts. \\n* Show red error header when Trezor doesn't see USB data connection. \\n* Add support for Zcash unified addresses. \\n* Show fee rate when replacing transaction. \\n* Optimize the signing of BTC transactions. \\n* Support for Cardano CIP-36 governance registration format. \\n* Extend decimals of fee rate to 2 digits. \\n* Display only \u201Csat\u201D instead of \u201Csat BTC\u201D. \\n* Fix sending XMR transaction to an integrated address. \\n* Fix XMR primary address display.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 0],\n \"firmware_revision\": \"88e1f8c7a5c7615723664c64b0a25adc0c409dee\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.0.bin\",\n \"fingerprint\": \"050526db604b9acceef2a5a8561bc99ecbe337909283ebb927b556d8e9b13872\",\n \"changelog\": \"* Show source account path in BTC signing. \\n* Address confirmation screen added to EIP712 signing flow. \\n* Ability to reboot the device into bootloader mode directly, without needing to unplug the device. \\n* Support for Ledger Live legacy derivation path \\\"m/44'/coin_type'/0'/account\\\". \\n* Redesigned UI. \\n* Homescreen now supports full-screen images. \\n* Force basic attestation in FIDO2 for google.com.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"2c7cc6e0255dee2339b445b5551eaffb88dbd1b4\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.3.bin\",\n \"fingerprint\": \"9ff0874f2ce3579a7502747578cef65c824097d906e7150b0142f6b9aa395a43\",\n \"changelog\": \"* QR Code for Extended Public Keys (XPUBs). \\n* Adjusted buttons for multipage content scrolling, providing a more intuitive and user-friendly experience. \\n* The new bootloader version 2.1.4 is now included for enhanced system performance and security.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 6, 4],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"42e9ed0e09033d474dee1a560fe5870646fa440e\",\n \"translations\": {},\n \"url\": \"firmware/t2t1/trezor-t2t1-2.6.4.bin\",\n \"fingerprint\": \"441faa92156e8ae0b8247f9434c3ec8cf6ffd872f16fc593b22c4460dfd93913\",\n \"changelog\": \"* Trezor Model T now supports Solana, expanding the range of cryptocurrencies it can securely manage. [Universal fw only] \\n* Ethereum fees are now uniformly presented in Gwei, enhancing clarity and consistency for users. [Universal fw only] \\n* The display of spaced addresses has been refined, offering a more user-friendly and visually optimized experience. \\n* Boot-up logo display has been optimized, contributing to a smoother and more visually appealing device startup.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"45e8a842a31e62a6d43d7f6ccac62a45e1198ef0\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.0.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.7.0.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.7.0.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.0.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.7.0.bin\",\n \"fingerprint\": \"53a645218792e413ad06c27320b7d1adc944b690ce831301bbf11c30352d3278\",\n \"changelog\": \"* Add translations capability. \\n* Allow for going back to previous word in recovery process. \\n* Clear sign ETH staking transactions on Everstake pool. [Universal fw only] \\n* Display descriptors for BTC Taproot public keys. \\n* Fixed blank display delay on startup when display orientation is set to other than north. \\n* Multiple Solana instructions improved. [Universal fw only]\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 4],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.7.2.bin\",\n \"fingerprint\": \"d64fcf47a8ead6edf0329583e312136d1548d30990c29cfaa2ce7c67197babcc\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares. \\n* Added support for Cardano Conway certificates [Universal fw only].\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"632b9561559b7ab6824bb7eeac072874e07b7b82\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.1.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.1.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.1.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.1.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.1.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.1.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.1.bin\",\n \"fingerprint\": \"d3af84a212d32785449ca6575e3cf2a641920b353a82dec9f059083ea5d4b149\",\n \"changelog\": \"* Fixed displaying of a progress indicator for the formatting operation.\\n* Improve precision of PIN validation countdown.\\n* Solana: Improved support for AToken Create operation.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.10.bin\",\n \"fingerprint\": \"91feae69ada0f98b72f19191f1d1e083b579c26079f7e6fcd751fae0902ec72f\",\n \"changelog\": \"* Add Nostr support (in debug mode only!).\\n* Solana: rent fee calculation [#4933]\\n* Solana: loadable token definitions [#3541]\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Fixed upgrade confirmation text overflow.\\n* Fixed Solana staking dialog fonts.\\n* Updated EIP-1559 fee-related labels.\\n* Allow firmware upgrade even if language change failed.\\n* Solana: fees calculation is now exact [#4965]\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.7.bin\",\n \"fingerprint\": \"7f7bae53913c3a339f22adddb16db70b11bcf908af1c7a5986bae09af9d4ab62\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\\n* Included new version of bootloader (2.1.8).\\n* Fix ETH account number detection.\\n* New EVM call contract flow UI.\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 8],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"592590cf66a9b62dfeee7e4d2afb6e01005e5b2c\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.8.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.8.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.8.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.8.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.8.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.8.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.8.bin\",\n \"fingerprint\": \"f4888bed3e75205464910f3956d1f3ad19bb73e093b31c9141a66226a7081990\",\n \"changelog\": \"* Fix \\\"PIN attempts exceeded\\\" screen\\n* Fixed a bug resulting in restarting the recovery flow when inputting 33-word mnemonic\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t2t1/translation-T2T1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.8.9.bin\",\n \"fingerprint\": \"ec61dba50be195f1cbb78688a0b92fb293c23150b68f5dab3b44420a106fca17\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* Account info for ETH transactions.\\n* New UI for confirming long messages.\\n* Solana staking confirmation dialogs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 0, 0],\n \"min_firmware_version\": [2, 0, 8],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t2t1/translation-T2T1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t2t1/translation-T2T1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t2t1/translation-T2T1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t2t1/translation-T2T1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t2t1/translation-T2T1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t2t1/trezor-t2t1-2.9.1.bin\",\n \"fingerprint\": \"aaa616c14904cf6eb940497d7fd5da8735ab0d0ecdebd3f6ced49fff0ce278a0\",\n \"changelog\": \"* Add support for signing arbitrary messages in Cardano.\\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\\n* Improved Stellar transaction signing interface for a more streamlined user experience.\\n* Limit swipe detection to the component's bounds.\\n* Make space between value and unit non-breakable.\\n* Do not hide the shown PIN until the touch is released.\\n* Fixed Solana signature failure.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.10-bitcoinonly.bin\",\n \"fingerprint\": \"5a0aa661b61d056f72b83bf0d5c7eb4ddc84d6370fb977be794b145e49e8ff3f\",\n \"changelog\": \"* Upgrade bundled bootloader to 2.1.10.\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Allow firmware upgrade even if language change failed.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"7f373ae71eca855dd41b4a0fdcc7cadaa13a8281\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.3.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.3.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.3.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.3.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.3.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.3.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.3-bitcoinonly.bin\",\n \"fingerprint\": \"070a61b2a8653e4f9857810b6610d0a15f76ba627c7b6e5654a6de9a1c529049\",\n \"changelog\": \"* Fix persistent word when going to previous word during recovery process.\\n* Fix display orientation south.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.7-bitcoinonly.bin\",\n \"fingerprint\": \"4737a6e12d0ebff19fec3aceb212adff57bbcea7a44f8208caf91cc656382d94\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Included new version of bootloader (2.1.8).\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.9-bitcoinonly.bin\",\n \"fingerprint\": \"d3905f15221f7b2733e5496986ceb1a3b39f390c4439e2d3cc89d5f3b7423278\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* New UI for confirming long messages.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.9.1-bitcoinonly.bin\",\n \"fingerprint\": \"7588c0d41586268562837b8b302b8a4825fbec24ef94921e55ce820ff6dc2da6\",\n \"changelog\": \"* Make space between value and unit non-breakable.\\n* Fix crash on first boot.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.10.bin\",\n \"fingerprint\": \"ad763b0193bf2814bdb9807b51226e1c7639693e912e9334db3f446091943369\",\n \"changelog\": \"* Upgrade bundled bootloader to 2.1.10.\\n* Add Nostr support (in debug mode only!).\\n* Solana: rent fee calculation [#4933]\\n* Solana: loadable token definitions [#3541]\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Fixed Solana staking dialog title.\\n* Updated EIP-1559 fee-related labels.\\n* Allow firmware upgrade even if language change failed.\\n* Solana: fees calculation is now exact [#4965]\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"7f373ae71eca855dd41b4a0fdcc7cadaa13a8281\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.3.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.3.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.3.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.3.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.3.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.3.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.3.bin\",\n \"fingerprint\": \"b659bdc5ddce208d46ce649fc7a8995ae49541c7c41a88ddaac5dfc038ffb5de\",\n \"changelog\": \"* Renamed MATIC to POL, following a network upgrade.\\n* Fix persistent word when going to previous word during recovery process.\\n* Fix display orientation south.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.7.bin\",\n \"fingerprint\": \"1dd5ec22c2609beb6d17a97bf9b4f42a18af1c12db2446d29a945f4ece8727f6\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\\n* Included new version of bootloader (2.1.8).\\n* Fix ETH account number detection.\\n* New EVM call contract flow UI.\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t3b1/translation-T3B1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.8.9.bin\",\n \"fingerprint\": \"5b3a639c5b6423d87f4c0a3855dc4be8ad7e5be6d6b1b33f93ab1a54f3f36a91\",\n \"changelog\": \"* Ability to cancel recovery on word count selection screen.\\n* New UI for confirming long messages.\\n* Solana staking confirmation dialogs.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 7],\n \"min_firmware_version\": [2, 8, 3],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3b1/translation-T3B1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t3b1/translation-T3B1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t3b1/translation-T3B1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t3b1/translation-T3B1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t3b1/translation-T3B1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t3b1/trezor-t3b1-2.9.1.bin\",\n \"fingerprint\": \"8a52e82d21a151cfa542b5ca0e265e9b4997f481365ff1b2bb047b45fac3a167\",\n \"changelog\": \"* Add support for signing arbitrary messages in Cardano.\\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\\n* Improved Stellar transaction signing interface for a more streamlined user experience.\\n* Implement multi-item menus for Solana staking.\\n* Make space between value and unit non-breakable.\\n* Fixed Solana signature failure.\\n* Fix crash on first boot.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.7.2-bitcoinonly.bin\",\n \"fingerprint\": \"246cca86b0a8cfcac6b7e6b3fcf55f543a8a9c9fd1f8ff88cd0de00640cb25eb\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"dd4671a5104952ef505d28d1f9e94d1484b4607a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.0.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.0.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.0.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.0.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.0-bitcoinonly.bin\",\n \"fingerprint\": \"3dc847cc396fe83f5a324242097a4cf97fc64acf90516efcfcf23b6d3103a992\",\n \"changelog\": \"* Added tutorial flow. \\n* Added Animated device label on homescreen/lockscreen. \\n* Added word counter during wallet creation. \\n* Improved change homescreen flow. \\n* Improved swipe behavior and animations. \\n* Increased Optiga read timeout to avoid spurious RSODs. \\n* Fixed swipe back from address QR code screen. \\n* Fixed device authenticity check. \\n* Removed CoSi functionality.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"632b9561559b7ab6824bb7eeac072874e07b7b82\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.1.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.1.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.1.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.1.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.1-bitcoinonly.bin\",\n \"fingerprint\": \"6b17de0c89c9a7876687d6b9c44673f4aca7f8819237a755090848a3829bc36b\",\n \"changelog\": \"* Added PIN keyboard animation.\\n* Added menu entry animation.\\n* Added screen brightness settings.\\n* Screen transitions and animations were improved and are now more smooth.\\n* Improved precision of PIN validation countdown.\\n* Improved instruction screens during multi-share recovery process.\\n* New UI of firmware update.\\n* Improved share words swiping animation during wallet creation.\\n* Fixed title sometimes not fitting into result screen.\\n* Improved touch layer precision.\\n* Fixed \u201CMore info\u201D screen during multi-share backup creation.\\n* Fixed title sometimes not fitting into result screen.\\n* Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes now.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.10-bitcoinonly.bin\",\n \"fingerprint\": \"11d3f68d08f3f95c04dd526826f81eb7918df85928cfcef73beeae3132342bf0\",\n \"changelog\": \"* Visual cues to distinguish unlocked state on Homescreen.\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Allow firmware upgrade even if language change failed.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"7f373ae71eca855dd41b4a0fdcc7cadaa13a8281\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.3.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.3.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.3.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.3.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.3.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.3.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.3-bitcoinonly.bin\",\n \"fingerprint\": \"9eaf99a9420d2a3b9377102eb06b938f5a1886ecb06cccde7fd3cb7a39e1abd7\",\n \"changelog\": \"* Added reassuring screen when entering empty passphrase on device.\\n* Fix persistent word when going to previous word during recovery process.\\n* Added missing info about remaining shares in super-shamir recovery.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 9],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.7-bitcoinonly.bin\",\n \"fingerprint\": \"2f58de2b7c2c29b6a2f14909ad0941e4aa9dd6d3e1416ab66c512a743b5385a9\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Included new version of bootloader (2.1.9).\\n* Fix XPUB confirmed success screen title.\\n* Fix incorrect navigation in handy menu while signing BTC message.\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.9-bitcoinonly.bin\",\n \"fingerprint\": \"ac995c394f7a7b3ea4cbd9c04977621d6d2fbef30bba856f707f585f34866ac4\",\n \"changelog\": \"* Ability to cancel recovery flow on word count selection screen.\\n* New UI for confirming long messages.\\n* Changed \\\"swipe to continue\\\" to \\\"tap to continue\\\". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.9.1-bitcoinonly.bin\",\n \"fingerprint\": \"f19a88717e8eb7eb75ead0be5b5a0f1a129e2827658e587310fe285826138b2d\",\n \"changelog\": \"* Limit swipe detection to the component's bounds.\\n* Make space between value and unit non-breakable.\\n* Do not hide the shown PIN until the touch is released.\\n* Fix incomplete disabling of haptics.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 7, 2],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"da75d8f4b67410b40a9cfd2954d183d81dd6e8e8\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.7.2.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.7.2.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.7.2.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.7.2.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.7.2.bin\",\n \"fingerprint\": \"4daa5fd3c4c92ee0d76855997dde09a7ee25f4165b118c521ab10957c5fc92b0\",\n \"changelog\": \"* Introducing repeated backups. \\n* Multi-share backups can now have any number of shares. \\n* Added support for Cardano Conway certificates [Universal fw only].\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 0],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"dd4671a5104952ef505d28d1f9e94d1484b4607a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.0.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.0.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.0.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.0.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.0.bin\",\n \"fingerprint\": \"bd199ce0934769aca5c3a91f71fd48e533d88c8cf087b76ac49db415fa08c286\",\n \"changelog\": \"* Added tutorial flow. \\n* Added Animated device label on homescreen/lockscreen. \\n* Added word counter during wallet creation. \\n* Improved change homescreen flow. \\n* Improved swipe behavior and animations. \\n* Increased Optiga read timeout to avoid spurious RSODs. \\n* Fixed swipe back from address QR code screen. \\n* Fixed device authenticity check. \\n* Removed CoSi functionality.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 6],\n \"firmware_revision\": \"632b9561559b7ab6824bb7eeac072874e07b7b82\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.1.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.1.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.1.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.1.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.1.bin\",\n \"fingerprint\": \"6a064df4a928e1264d682a34cc014fc9272f312e0f8a8270ff88d6f1408fe68b\",\n \"changelog\": \"* Added PIN keyboard animation.\\n* Added menu entry animation.\\n* Added screen brightness settings.\\n* Screen transitions and animations were improved and are now more smooth.\\n* Improved precision of PIN validation countdown.\\n* Improved instruction screens during multi-share recovery process.\\n* New UI of firmware update.\\n* Improved share words swiping animation during wallet creation.\\n* Solana: Improved support for AToken Create operation.\\n* Fixed title sometimes not fitting into result screen.\\n* Improved touch layer precision.\\n* Fixed \u201CMore info\u201D screen during multi-share backup creation.\\n* Fixed title sometimes not fitting into result screen.\\n* Adjusted detection of swipes: vertical swipes are preferred over horizontal swipes now.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 10],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"2a65d18200580005dc419b9569ed97fae440806a\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.10.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.10.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.10.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.10.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.10.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.10.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.10.bin\",\n \"fingerprint\": \"f6f50b4a419b041a59620ef681047c27af0902798e0227397c532dd70736694a\",\n \"changelog\": \"* Add Nostr support (in debug mode only!).\\n* Visual cues to distinguish unlocked state on Homescreen.\\n* Solana: rent fee calculation [#4933]\\n* Solana: loadable token definitions [#3541]\\n* Replaced \\\"next page\\\" icon with \\\"...\\\" ellipsis when confirming long message.\\n* Updated EIP-1559 fee-related labels.\\n* Allow firmware upgrade even if language change failed.\\n* Solana: fees calculation is now exact [#4965]\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 8],\n \"firmware_revision\": \"7f373ae71eca855dd41b4a0fdcc7cadaa13a8281\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.3.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.3.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.3.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.3.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.3.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.3.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.3.bin\",\n \"fingerprint\": \"0de51126c17cc0ac623800638dc851c0abd5b787cad5f3aa5843ea2c4cf8248a\",\n \"changelog\": \"* Added reassuring screen when entering empty passphrase on device.\\n* Improved ETH send and staking flow.\\n* Redesigned FIDO2 UI.\\n* Renamed MATIC to POL, following a network upgrade.\\n* Fix persistent word when going to previous word during recovery process.\\n* Added missing info about remaining shares in super-shamir recovery.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 7],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 9],\n \"firmware_revision\": \"8a254aa8eae82f99630df63f40e4d290066a3efc\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.7.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.7.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.7.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.7.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.7.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.7.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.7.bin\",\n \"fingerprint\": \"be15ee1f4b7891dc965512455f8d17067ff54a7047e28ed06cec8d56529ab2ef\",\n \"changelog\": \"* Show last typed PIN number for short period of time.\\n* Multisig-related changes.\\n* Simplify UI of Cardano transactions initiated by Trezor Suite.\\n* Included new version of bootloader (2.1.9).\\n* Fix ETH account number detection.\\n* Show account info in ETH send/stake flow.\\n* Fix XPUB confirmed success screen title.\\n* New EVM call contract flow UI.\\n* Fix incorrect navigation in handy menu while signing BTC message.\\n* Fix translation of the 'Enable labeling' screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 8, 9],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"fad9682201cf9289bba2adb66e6e07ed1cf78936\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.8.9.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.8.9.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.8.9.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.8.9.bin\",\n \"it-IT\": \"firmware/translations/t3t1/translation-T3T1-it-IT-2.8.9.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.8.9.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.8.9.bin\",\n \"fingerprint\": \"3a0228ae58bfd65ba341b33a34138d0d70a9a16f5d2db387f9ee2659d797dedf\",\n \"changelog\": \"* Ability to cancel recovery flow on word count selection screen.\\n* New UI for confirming long messages.\\n* Solana staking confirmation dialogs.\\n* Changed \\\"swipe to continue\\\" to \\\"tap to continue\\\". Screens still respond to swipe-up, but the preferred interaction method is now tapping the lower part of the screen.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 1],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 6],\n \"min_firmware_version\": [2, 7, 2],\n \"bootloader_version\": [2, 1, 10],\n \"firmware_revision\": \"acd56d0113a547e9b5983510b0ce9de079e30e05\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3t1/translation-T3T1-cs-CZ-2.9.1.bin\",\n \"de-DE\": \"firmware/translations/t3t1/translation-T3T1-de-DE-2.9.1.bin\",\n \"es-ES\": \"firmware/translations/t3t1/translation-T3T1-es-ES-2.9.1.bin\",\n \"fr-FR\": \"firmware/translations/t3t1/translation-T3T1-fr-FR-2.9.1.bin\",\n \"pt-BR\": \"firmware/translations/t3t1/translation-T3T1-pt-BR-2.9.1.bin\"\n },\n \"url\": \"firmware/t3t1/trezor-t3t1-2.9.1.bin\",\n \"fingerprint\": \"2db8a9aace0557a348237c0a2d2fb44249714d7e2002f253ed06446701f7658a\",\n \"changelog\": \"* Add support for signing arbitrary messages in Cardano.\\n* Provider contract address in ETH approve.\\n* Add support for displaying the message hash when signing Ethereum EIP-712 typed data.\\n* Allow using Ethereum mainnet addresses on all non-Ethereum networks.\\n* Improved Stellar transaction signing interface for a more streamlined user experience.\\n* Limit swipe detection to the component's bounds.\\n* Make space between value and unit non-breakable.\\n* Do not hide the shown PIN until the touch is released.\\n* Fixed Solana signature failure.\\n* Fix incomplete disabling of haptics.\\n* Other small improvements and bug fixes.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 13],\n \"min_firmware_version\": [2, 9, 3],\n \"bootloader_version\": [2, 1, 14],\n \"firmware_revision\": \"0bd923c78990d8d58f82fe18660e57399aafc0f1\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3w1/translation-T3W1-cs-CZ-2.9.3.bin\",\n \"de-DE\": \"firmware/translations/t3w1/translation-T3W1-de-DE-2.9.3.bin\",\n \"es-ES\": \"firmware/translations/t3w1/translation-T3W1-es-ES-2.9.3.bin\",\n \"fr-FR\": \"firmware/translations/t3w1/translation-T3W1-fr-FR-2.9.3.bin\",\n \"pt-BR\": \"firmware/translations/t3w1/translation-T3W1-pt-BR-2.9.3.bin\"\n },\n \"url\": \"firmware/t3w1/trezor-t3w1-2.9.3-bitcoinonly.bin\",\n \"fingerprint\": \"f5875ebd0521f60f09cf4a82775aa1f024538b7f88bcbf3984af62c557bed21a\",\n \"changelog\": \"* Public release of TS7 firmware.\"\n}\n", "{\n \"required\": false,\n \"version\": [2, 9, 3],\n \"min_bridge_version\": [2, 0, 7],\n \"min_bootloader_version\": [2, 1, 13],\n \"min_firmware_version\": [2, 9, 3],\n \"bootloader_version\": [2, 1, 14],\n \"firmware_revision\": \"0bd923c78990d8d58f82fe18660e57399aafc0f1\",\n \"translations\": {\n \"cs-CZ\": \"firmware/translations/t3w1/translation-T3W1-cs-CZ-2.9.3.bin\",\n \"de-DE\": \"firmware/translations/t3w1/translation-T3W1-de-DE-2.9.3.bin\",\n \"es-ES\": \"firmware/translations/t3w1/translation-T3W1-es-ES-2.9.3.bin\",\n \"fr-FR\": \"firmware/translations/t3w1/translation-T3W1-fr-FR-2.9.3.bin\",\n \"pt-BR\": \"firmware/translations/t3w1/translation-T3W1-pt-BR-2.9.3.bin\"\n },\n \"url\": \"firmware/t3w1/trezor-t3w1-2.9.3.bin\",\n \"fingerprint\": \"7069b1bc408b4d250cc4409e7a1bcdceb10c458b8c2b5e6b70ec32432c41d9b2\",\n \"changelog\": \"* Public release of TS7 firmware.\"\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.firmwareAssets = void 0;\nexports.firmwareAssets = {\n release: {\n 'releases.v1': require('../files/firmware/release/releases.v1.json')\n },\n t1b1: {\n bitcoinonly: {\n 't1b1-1.10.0-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.0-bitcoinonly.json'),\n 't1b1-1.10.1-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.1-bitcoinonly.json'),\n 't1b1-1.10.2-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.2-bitcoinonly.json'),\n 't1b1-1.10.3-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.3-bitcoinonly.json'),\n 't1b1-1.10.4-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.4-bitcoinonly.json'),\n 't1b1-1.10.5-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.10.5-bitcoinonly.json'),\n 't1b1-1.11.1-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.11.1-bitcoinonly.json'),\n 't1b1-1.11.2-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.11.2-bitcoinonly.json'),\n 't1b1-1.12.1-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.12.1-bitcoinonly.json'),\n 't1b1-1.13.0-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.13.0-bitcoinonly.json'),\n 't1b1-1.13.1-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.13.1-bitcoinonly.json'),\n 't1b1-1.8.3-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.8.3-bitcoinonly.json'),\n 't1b1-1.9.0-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.9.0-bitcoinonly.json'),\n 't1b1-1.9.1-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.9.1-bitcoinonly.json'),\n 't1b1-1.9.2-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.9.2-bitcoinonly.json'),\n 't1b1-1.9.3-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.9.3-bitcoinonly.json'),\n 't1b1-1.9.4-bitcoinonly': require('../files/firmware/t1b1/bitcoinonly/t1b1-1.9.4-bitcoinonly.json')\n },\n universal: {\n 't1b1-1.10.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.0-universal.json'),\n 't1b1-1.10.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.1-universal.json'),\n 't1b1-1.10.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.2-universal.json'),\n 't1b1-1.10.3-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.3-universal.json'),\n 't1b1-1.10.4-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.4-universal.json'),\n 't1b1-1.10.5-universal': require('../files/firmware/t1b1/universal/t1b1-1.10.5-universal.json'),\n 't1b1-1.11.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.11.1-universal.json'),\n 't1b1-1.11.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.11.2-universal.json'),\n 't1b1-1.12.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.12.1-universal.json'),\n 't1b1-1.13.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.13.0-universal.json'),\n 't1b1-1.13.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.13.1-universal.json'),\n 't1b1-1.3.6-universal': require('../files/firmware/t1b1/universal/t1b1-1.3.6-universal.json'),\n 't1b1-1.4.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.4.0-universal.json'),\n 't1b1-1.4.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.4.1-universal.json'),\n 't1b1-1.4.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.4.2-universal.json'),\n 't1b1-1.5.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.5.0-universal.json'),\n 't1b1-1.5.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.5.1-universal.json'),\n 't1b1-1.5.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.5.2-universal.json'),\n 't1b1-1.6.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.6.0-universal.json'),\n 't1b1-1.6.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.6.1-universal.json'),\n 't1b1-1.6.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.6.2-universal.json'),\n 't1b1-1.6.3-universal': require('../files/firmware/t1b1/universal/t1b1-1.6.3-universal.json'),\n 't1b1-1.7.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.7.1-universal.json'),\n 't1b1-1.7.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.7.2-universal.json'),\n 't1b1-1.7.3-universal': require('../files/firmware/t1b1/universal/t1b1-1.7.3-universal.json'),\n 't1b1-1.8.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.8.0-universal.json'),\n 't1b1-1.8.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.8.1-universal.json'),\n 't1b1-1.8.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.8.2-universal.json'),\n 't1b1-1.8.3-universal': require('../files/firmware/t1b1/universal/t1b1-1.8.3-universal.json'),\n 't1b1-1.9.0-universal': require('../files/firmware/t1b1/universal/t1b1-1.9.0-universal.json'),\n 't1b1-1.9.1-universal': require('../files/firmware/t1b1/universal/t1b1-1.9.1-universal.json'),\n 't1b1-1.9.2-universal': require('../files/firmware/t1b1/universal/t1b1-1.9.2-universal.json'),\n 't1b1-1.9.3-universal': require('../files/firmware/t1b1/universal/t1b1-1.9.3-universal.json'),\n 't1b1-1.9.4-universal': require('../files/firmware/t1b1/universal/t1b1-1.9.4-universal.json')\n }\n },\n t2b1: {\n bitcoinonly: {\n 't2b1-2.6.3-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.6.3-bitcoinonly.json'),\n 't2b1-2.6.4-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.6.4-bitcoinonly.json'),\n 't2b1-2.7.0-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.7.0-bitcoinonly.json'),\n 't2b1-2.7.2-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.7.2-bitcoinonly.json'),\n 't2b1-2.8.0-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.8.0-bitcoinonly.json'),\n 't2b1-2.8.10-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.8.10-bitcoinonly.json'),\n 't2b1-2.8.7-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.8.7-bitcoinonly.json'),\n 't2b1-2.8.9-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.8.9-bitcoinonly.json'),\n 't2b1-2.9.1-bitcoinonly': require('../files/firmware/t2b1/bitcoinonly/t2b1-2.9.1-bitcoinonly.json')\n },\n universal: {\n 't2b1-2.6.3-universal': require('../files/firmware/t2b1/universal/t2b1-2.6.3-universal.json'),\n 't2b1-2.6.4-universal': require('../files/firmware/t2b1/universal/t2b1-2.6.4-universal.json'),\n 't2b1-2.7.0-universal': require('../files/firmware/t2b1/universal/t2b1-2.7.0-universal.json'),\n 't2b1-2.7.2-universal': require('../files/firmware/t2b1/universal/t2b1-2.7.2-universal.json'),\n 't2b1-2.8.0-universal': require('../files/firmware/t2b1/universal/t2b1-2.8.0-universal.json'),\n 't2b1-2.8.10-universal': require('../files/firmware/t2b1/universal/t2b1-2.8.10-universal.json'),\n 't2b1-2.8.7-universal': require('../files/firmware/t2b1/universal/t2b1-2.8.7-universal.json'),\n 't2b1-2.8.9-universal': require('../files/firmware/t2b1/universal/t2b1-2.8.9-universal.json'),\n 't2b1-2.9.1-universal': require('../files/firmware/t2b1/universal/t2b1-2.9.1-universal.json')\n }\n },\n t2t1: {\n bitcoinonly: {\n 't2t1-2.1.5-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.1.5-bitcoinonly.json'),\n 't2t1-2.1.6-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.1.6-bitcoinonly.json'),\n 't2t1-2.1.7-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.1.7-bitcoinonly.json'),\n 't2t1-2.1.8-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.1.8-bitcoinonly.json'),\n 't2t1-2.3.0-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.0-bitcoinonly.json'),\n 't2t1-2.3.1-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.1-bitcoinonly.json'),\n 't2t1-2.3.2-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.2-bitcoinonly.json'),\n 't2t1-2.3.3-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.3-bitcoinonly.json'),\n 't2t1-2.3.4-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.4-bitcoinonly.json'),\n 't2t1-2.3.5-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.5-bitcoinonly.json'),\n 't2t1-2.3.6-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.3.6-bitcoinonly.json'),\n 't2t1-2.4.0-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.4.0-bitcoinonly.json'),\n 't2t1-2.4.1-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.4.1-bitcoinonly.json'),\n 't2t1-2.4.2-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.4.2-bitcoinonly.json'),\n 't2t1-2.4.3-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.4.3-bitcoinonly.json'),\n 't2t1-2.5.1-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.5.1-bitcoinonly.json'),\n 't2t1-2.5.2-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.5.2-bitcoinonly.json'),\n 't2t1-2.5.3-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.5.3-bitcoinonly.json'),\n 't2t1-2.6.0-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.6.0-bitcoinonly.json'),\n 't2t1-2.6.3-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.6.3-bitcoinonly.json'),\n 't2t1-2.6.4-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.6.4-bitcoinonly.json'),\n 't2t1-2.7.0-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.7.0-bitcoinonly.json'),\n 't2t1-2.7.2-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.7.2-bitcoinonly.json'),\n 't2t1-2.8.1-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.8.1-bitcoinonly.json'),\n 't2t1-2.8.10-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.8.10-bitcoinonly.json'),\n 't2t1-2.8.7-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.8.7-bitcoinonly.json'),\n 't2t1-2.8.8-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.8.8-bitcoinonly.json'),\n 't2t1-2.8.9-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.8.9-bitcoinonly.json'),\n 't2t1-2.9.1-bitcoinonly': require('../files/firmware/t2t1/bitcoinonly/t2t1-2.9.1-bitcoinonly.json')\n },\n universal: {\n 't2t1-2.0.10-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.10-universal.json'),\n 't2t1-2.0.5-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.5-universal.json'),\n 't2t1-2.0.6-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.6-universal.json'),\n 't2t1-2.0.7-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.7-universal.json'),\n 't2t1-2.0.8-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.8-universal.json'),\n 't2t1-2.0.9-universal': require('../files/firmware/t2t1/universal/t2t1-2.0.9-universal.json'),\n 't2t1-2.1.0-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.0-universal.json'),\n 't2t1-2.1.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.1-universal.json'),\n 't2t1-2.1.4-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.4-universal.json'),\n 't2t1-2.1.5-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.5-universal.json'),\n 't2t1-2.1.6-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.6-universal.json'),\n 't2t1-2.1.7-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.7-universal.json'),\n 't2t1-2.1.8-universal': require('../files/firmware/t2t1/universal/t2t1-2.1.8-universal.json'),\n 't2t1-2.3.0-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.0-universal.json'),\n 't2t1-2.3.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.1-universal.json'),\n 't2t1-2.3.2-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.2-universal.json'),\n 't2t1-2.3.3-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.3-universal.json'),\n 't2t1-2.3.4-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.4-universal.json'),\n 't2t1-2.3.5-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.5-universal.json'),\n 't2t1-2.3.6-universal': require('../files/firmware/t2t1/universal/t2t1-2.3.6-universal.json'),\n 't2t1-2.4.0-universal': require('../files/firmware/t2t1/universal/t2t1-2.4.0-universal.json'),\n 't2t1-2.4.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.4.1-universal.json'),\n 't2t1-2.4.2-universal': require('../files/firmware/t2t1/universal/t2t1-2.4.2-universal.json'),\n 't2t1-2.4.3-universal': require('../files/firmware/t2t1/universal/t2t1-2.4.3-universal.json'),\n 't2t1-2.5.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.5.1-universal.json'),\n 't2t1-2.5.2-universal': require('../files/firmware/t2t1/universal/t2t1-2.5.2-universal.json'),\n 't2t1-2.5.3-universal': require('../files/firmware/t2t1/universal/t2t1-2.5.3-universal.json'),\n 't2t1-2.6.0-universal': require('../files/firmware/t2t1/universal/t2t1-2.6.0-universal.json'),\n 't2t1-2.6.3-universal': require('../files/firmware/t2t1/universal/t2t1-2.6.3-universal.json'),\n 't2t1-2.6.4-universal': require('../files/firmware/t2t1/universal/t2t1-2.6.4-universal.json'),\n 't2t1-2.7.0-universal': require('../files/firmware/t2t1/universal/t2t1-2.7.0-universal.json'),\n 't2t1-2.7.2-universal': require('../files/firmware/t2t1/universal/t2t1-2.7.2-universal.json'),\n 't2t1-2.8.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.8.1-universal.json'),\n 't2t1-2.8.10-universal': require('../files/firmware/t2t1/universal/t2t1-2.8.10-universal.json'),\n 't2t1-2.8.7-universal': require('../files/firmware/t2t1/universal/t2t1-2.8.7-universal.json'),\n 't2t1-2.8.8-universal': require('../files/firmware/t2t1/universal/t2t1-2.8.8-universal.json'),\n 't2t1-2.8.9-universal': require('../files/firmware/t2t1/universal/t2t1-2.8.9-universal.json'),\n 't2t1-2.9.1-universal': require('../files/firmware/t2t1/universal/t2t1-2.9.1-universal.json')\n }\n },\n t3b1: {\n bitcoinonly: {\n 't3b1-2.8.10-bitcoinonly': require('../files/firmware/t3b1/bitcoinonly/t3b1-2.8.10-bitcoinonly.json'),\n 't3b1-2.8.3-bitcoinonly': require('../files/firmware/t3b1/bitcoinonly/t3b1-2.8.3-bitcoinonly.json'),\n 't3b1-2.8.7-bitcoinonly': require('../files/firmware/t3b1/bitcoinonly/t3b1-2.8.7-bitcoinonly.json'),\n 't3b1-2.8.9-bitcoinonly': require('../files/firmware/t3b1/bitcoinonly/t3b1-2.8.9-bitcoinonly.json'),\n 't3b1-2.9.1-bitcoinonly': require('../files/firmware/t3b1/bitcoinonly/t3b1-2.9.1-bitcoinonly.json')\n },\n universal: {\n 't3b1-2.8.10-universal': require('../files/firmware/t3b1/universal/t3b1-2.8.10-universal.json'),\n 't3b1-2.8.3-universal': require('../files/firmware/t3b1/universal/t3b1-2.8.3-universal.json'),\n 't3b1-2.8.7-universal': require('../files/firmware/t3b1/universal/t3b1-2.8.7-universal.json'),\n 't3b1-2.8.9-universal': require('../files/firmware/t3b1/universal/t3b1-2.8.9-universal.json'),\n 't3b1-2.9.1-universal': require('../files/firmware/t3b1/universal/t3b1-2.9.1-universal.json')\n }\n },\n t3t1: {\n bitcoinonly: {\n 't3t1-2.7.2-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.7.2-bitcoinonly.json'),\n 't3t1-2.8.0-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.0-bitcoinonly.json'),\n 't3t1-2.8.1-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.1-bitcoinonly.json'),\n 't3t1-2.8.10-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.10-bitcoinonly.json'),\n 't3t1-2.8.3-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.3-bitcoinonly.json'),\n 't3t1-2.8.7-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.7-bitcoinonly.json'),\n 't3t1-2.8.9-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.8.9-bitcoinonly.json'),\n 't3t1-2.9.1-bitcoinonly': require('../files/firmware/t3t1/bitcoinonly/t3t1-2.9.1-bitcoinonly.json')\n },\n universal: {\n 't3t1-2.7.2-universal': require('../files/firmware/t3t1/universal/t3t1-2.7.2-universal.json'),\n 't3t1-2.8.0-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.0-universal.json'),\n 't3t1-2.8.1-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.1-universal.json'),\n 't3t1-2.8.10-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.10-universal.json'),\n 't3t1-2.8.3-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.3-universal.json'),\n 't3t1-2.8.7-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.7-universal.json'),\n 't3t1-2.8.9-universal': require('../files/firmware/t3t1/universal/t3t1-2.8.9-universal.json'),\n 't3t1-2.9.1-universal': require('../files/firmware/t3t1/universal/t3t1-2.9.1-universal.json')\n }\n },\n t3w1: {\n bitcoinonly: {\n 't3w1-2.9.3-bitcoinonly': require('../files/firmware/t3w1/bitcoinonly/t3w1-2.9.3-bitcoinonly.json')\n },\n universal: {\n 't3w1-2.9.3-universal': require('../files/firmware/t3w1/universal/t3w1-2.9.3-universal.json')\n }\n }\n};\n//# sourceMappingURL=map-releases.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./storage\"), exports);\ntslib_1.__exportStar(require(\"./messageChannel/abstract\"), exports);\ntslib_1.__exportStar(require(\"./messageChannel/window-window\"), exports);\ntslib_1.__exportStar(require(\"./messageChannel/serviceworker-window\"), exports);\ntslib_1.__exportStar(require(\"./messageChannel/window-serviceworker\"), exports);\ntslib_1.__exportStar(require(\"./systemInfo\"), exports);\ntslib_1.__exportStar(require(\"./map-releases\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.THP_STATE_MISSING = exports.LIBUSB_ERROR_ACCESS = exports.ABORTED_BY_TIMEOUT = exports.ABORTED_BY_SIGNAL = exports.UNEXPECTED_ERROR = exports.API_DISCONNECTED = exports.HTTP_ERROR = exports.OTHER_CALL_IN_PROGRESS = exports.DEVICE_DISCONNECTED_DURING_ACTION = exports.WRONG_ENVIRONMENT = exports.WRONG_RESULT_TYPE = exports.NATIVE_INTERFACE_NOT_AVAILABLE = exports.ALREADY_LISTENING = exports.SESSION_BACKGROUND_TIMEOUT = exports.SESSION_NOT_FOUND = exports.SESSION_WRONG_PREVIOUS = exports.DEVICE_UNREADABLE = exports.DEVICE_NOT_FOUND = exports.INTERFACE_DATA_TRANSFER = exports.INTERFACE_UNABLE_TO_CLOSE_DEVICE = exports.INTERFACE_UNABLE_TO_OPEN_DEVICE = void 0;\nexports.INTERFACE_UNABLE_TO_OPEN_DEVICE = 'Unable to open device';\nexports.INTERFACE_UNABLE_TO_CLOSE_DEVICE = 'Unable to close device';\nexports.INTERFACE_DATA_TRANSFER = 'A transfer error has occurred.';\nexports.DEVICE_NOT_FOUND = 'device not found';\nexports.DEVICE_UNREADABLE = 'Device unreadable';\nexports.SESSION_WRONG_PREVIOUS = 'wrong previous session';\nexports.SESSION_NOT_FOUND = 'session not found';\nexports.SESSION_BACKGROUND_TIMEOUT = 'sessions background did not respond';\nexports.ALREADY_LISTENING = 'already listening';\nexports.NATIVE_INTERFACE_NOT_AVAILABLE = 'interface not available';\nexports.WRONG_RESULT_TYPE = 'Wrong result type.';\nexports.WRONG_ENVIRONMENT = 'This transport can not be used in this environment';\nexports.DEVICE_DISCONNECTED_DURING_ACTION = 'device disconnected during action';\nexports.OTHER_CALL_IN_PROGRESS = 'other call in progress';\nexports.HTTP_ERROR = 'Network request failed';\nexports.API_DISCONNECTED = 'Api disconnected';\nexports.UNEXPECTED_ERROR = 'unexpected error';\nexports.ABORTED_BY_SIGNAL = 'Aborted by signal';\nexports.ABORTED_BY_TIMEOUT = 'Aborted by timeout';\nexports.LIBUSB_ERROR_ACCESS = 'LIBUSB_ERROR_ACCESS';\nexports.THP_STATE_MISSING = 'ThpStateMissing';\n//# sourceMappingURL=errors.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEVICE_TYPE = exports.TRANSPORT = exports.ACTION_TIMEOUT = exports.TREZOR_USB_DESCRIPTORS = exports.WEBUSB_BOOTLOADER_PRODUCT = exports.T1_HID_PRODUCT = exports.T1_HID_VENDOR = exports.DEBUGLINK_ENDPOINT_ID = exports.DEBUGLINK_INTERFACE_ID = exports.ENDPOINT_ID = exports.INTERFACE_ID = exports.CONFIGURATION_ID = void 0;\nexports.CONFIGURATION_ID = 1;\nexports.INTERFACE_ID = 0;\nexports.ENDPOINT_ID = 1;\nexports.DEBUGLINK_INTERFACE_ID = 1;\nexports.DEBUGLINK_ENDPOINT_ID = 2;\nexports.T1_HID_VENDOR = 0x534c;\nexports.T1_HID_PRODUCT = 0x0001;\nconst WEBUSB_FIRMWARE_PRODUCT = 0x53c1;\nexports.WEBUSB_BOOTLOADER_PRODUCT = 0x53c0;\nexports.TREZOR_USB_DESCRIPTORS = [{\n vendorId: 0x534c,\n productId: exports.T1_HID_PRODUCT\n}, {\n vendorId: 0x1209,\n productId: exports.WEBUSB_BOOTLOADER_PRODUCT\n}, {\n vendorId: 0x1209,\n productId: WEBUSB_FIRMWARE_PRODUCT\n}];\nexports.ACTION_TIMEOUT = 10000;\nexports.TRANSPORT = {\n START: 'transport-start',\n ERROR: 'transport-error',\n STOPPED: 'transport-stopped',\n DEVICE_CONNECTED: 'transport-device_connected',\n DEVICE_DISCONNECTED: 'transport-device_disconnected',\n DEVICE_SESSION_CHANGED: 'transport-device_session_changed',\n DEVICE_REQUEST_RELEASE: 'transport-device_request_release',\n SEND_MESSAGE_PROGRESS: 'transport-send_message_progress',\n TREZOR_PUSH_NOTIFICATION: 'trezor-push-notification',\n BATTERY_LEVEL: 'battery-level',\n DISABLE_WEBUSB: 'transport-disable_webusb',\n REQUEST_DEVICE: 'transport-request_device',\n GET_INFO: 'transport-get_info',\n SET_TRANSPORTS: 'transport-set_transports'\n};\nvar DEVICE_TYPE;\n(function (DEVICE_TYPE) {\n DEVICE_TYPE[DEVICE_TYPE[\"TypeT1Hid\"] = 0] = \"TypeT1Hid\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeT1Webusb\"] = 1] = \"TypeT1Webusb\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeT1WebusbBoot\"] = 2] = \"TypeT1WebusbBoot\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeT2\"] = 3] = \"TypeT2\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeT2Boot\"] = 4] = \"TypeT2Boot\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeEmulator\"] = 5] = \"TypeEmulator\";\n DEVICE_TYPE[DEVICE_TYPE[\"TypeBluetooth\"] = 6] = \"TypeBluetooth\";\n})(DEVICE_TYPE || (exports.DEVICE_TYPE = DEVICE_TYPE = {}));\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unknownError = exports.error = exports.success = void 0;\nconst errors_1 = require(\"../errors\");\nconst success = payload => ({\n success: true,\n payload\n});\nexports.success = success;\nconst error = ({\n error,\n message\n}) => ({\n success: false,\n error,\n message\n});\nexports.error = error;\nconst unknownError = (err, expectedErrors = []) => {\n const expectedErr = expectedErrors.find(eE => eE === err.message);\n if (expectedErr) {\n return (0, exports.error)({\n error: expectedErr\n });\n }\n return {\n success: false,\n error: errors_1.UNEXPECTED_ERROR,\n message: err.message\n };\n};\nexports.unknownError = unknownError;\n//# sourceMappingURL=result.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractTransport = exports.isTransportInstance = void 0;\nconst tslib_1 = require(\"tslib\");\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst result_1 = require(\"../utils/result\");\nconst isTransportInstance = transport => {\n const requiredMethods = ['init', 'enumerate', 'listen', 'acquire', 'release', 'send', 'receive', 'call'];\n if (transport && typeof transport === 'object') {\n return !requiredMethods.some(m => typeof transport[m] !== 'function');\n }\n return false;\n};\nexports.isTransportInstance = isTransportInstance;\nconst getKey = ({\n path,\n product\n}) => `${path}${product}`;\nclass AbstractTransport extends utils_1.TypedEmitter {\n isOutdated = false;\n version = '';\n stopped = true;\n listening = false;\n messages;\n descriptors;\n abortController;\n logger;\n id;\n deviceEvents;\n constructor({\n messages,\n logger,\n id\n }) {\n super();\n this.descriptors = [];\n this.messages = (0, protobuf_1.parseConfigure)(messages);\n this.abortController = new AbortController();\n this.logger = logger;\n this.id = id;\n this.deviceEvents = new utils_1.TypedEmitter();\n }\n get apiType() {\n return 'usb';\n }\n ping(_params) {\n return Promise.resolve(false);\n }\n subscribe(_params) {\n return Promise.reject(new Error(`${this.name} does not support the 'subscribe' method.`));\n }\n stop() {\n this.emit(constants_1.TRANSPORT.STOPPED);\n this.removeAllListeners();\n this.deviceEvents.removeAllListeners();\n this.stopped = true;\n this.listening = false;\n this.abortController.abort();\n this.abortController = new AbortController();\n this.descriptors = [];\n }\n handleDescriptorsChange(nextDescriptors) {\n if (this.stopped) {\n return;\n }\n const oldDescriptors = new Map(this.descriptors.map(d => [getKey(d), d]));\n const newDescriptors = new Map(nextDescriptors.map(d => [getKey(d), d]));\n this.descriptors.filter(d => !newDescriptors.has(getKey(d))).forEach(descriptor => this.deviceEvents.emit(descriptor.path, {\n type: constants_1.TRANSPORT.DEVICE_DISCONNECTED\n }));\n nextDescriptors.forEach(descriptor => {\n const prevDescriptor = oldDescriptors.get(getKey(descriptor));\n if (!prevDescriptor) {\n this.emit(constants_1.TRANSPORT.DEVICE_CONNECTED, descriptor);\n } else if (prevDescriptor.session !== descriptor.session) {\n this.deviceEvents.emit(descriptor.path, {\n type: constants_1.TRANSPORT.DEVICE_SESSION_CHANGED,\n descriptor\n });\n }\n });\n this.descriptors = nextDescriptors;\n }\n getDescriptor(path) {\n return this.descriptors.find(d => d.path === path);\n }\n getMessage(message = 'GetFeatures') {\n return !!this.messages.get(message);\n }\n getMessages() {\n return this.messages;\n }\n updateMessages(messages) {\n this.messages = (0, protobuf_1.parseConfigure)(messages);\n }\n loadMessages(packageName, packageLoader) {\n return (0, protobuf_1.loadDefinitions)(this.messages, packageName, packageLoader);\n }\n success(payload) {\n return (0, result_1.success)(payload);\n }\n error(payload) {\n return (0, result_1.error)(payload);\n }\n unknownError = (err, expectedErrors = []) => {\n this.logger?.error(this.name, 'unexpected error: ', err);\n return (0, result_1.unknownError)(typeof err !== 'string' ? err : new Error(err), expectedErrors);\n };\n mergeAbort(signal) {\n if (!signal) {\n return {\n signal: this.abortController.signal,\n clear: () => {}\n };\n }\n const controller = new AbortController();\n const onAbort = () => controller.abort();\n signal.addEventListener('abort', onAbort);\n if (signal.aborted) controller.abort(signal.reason);\n this.abortController.signal.addEventListener('abort', onAbort);\n const clear = () => {\n signal.removeEventListener('abort', onAbort);\n this.abortController.signal.removeEventListener('abort', onAbort);\n };\n return {\n signal: controller.signal,\n clear\n };\n }\n scheduleAction = (action, params, errors = []) => {\n const {\n signal,\n clear\n } = this.mergeAbort(params?.signal);\n return (0, utils_1.scheduleAction)(action, {\n timeout: constants_1.ACTION_TIMEOUT,\n ...params,\n signal\n }).catch(err => (0, result_1.unknownError)(err, [ERRORS.ABORTED_BY_TIMEOUT, ERRORS.ABORTED_BY_SIGNAL, ...errors])).finally(clear);\n };\n}\nexports.AbstractTransport = AbstractTransport;\n//# sourceMappingURL=abstract.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PROTOCOL_MISSMATCH_VERSION = exports.PROTOCOL_MALFORMED = void 0;\nexports.PROTOCOL_MALFORMED = 'Malformed protocol format';\nexports.PROTOCOL_MISSMATCH_VERSION = 'Protocol missmatch version';\n//# sourceMappingURL=errors.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HEADER_SIZE = exports.MESSAGE_HEADER_BYTE = exports.MESSAGE_MAGIC_HEADER_BYTE = void 0;\nexports.MESSAGE_MAGIC_HEADER_BYTE = 63;\nexports.MESSAGE_HEADER_BYTE = 0x23;\nexports.HEADER_SIZE = 1 + 1 + 1 + 2 + 4;\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = void 0;\nconst errors_1 = require(\"../errors\");\nconst constants_1 = require(\"./constants\");\nconst readHeaderChunked = buffer => {\n const magic = buffer.readUInt8();\n const sharp1 = buffer.readUInt8(1);\n const sharp2 = buffer.readUInt8(2);\n const messageType = buffer.readUInt16BE(3);\n const length = buffer.readUInt32BE(5);\n return {\n magic,\n sharp1,\n sharp2,\n messageType,\n length\n };\n};\nconst decode = bytes => {\n if (bytes.byteLength === 0) {\n console.error('protocol-v1: decode: received empty buffer');\n }\n if (bytes.byteLength < constants_1.HEADER_SIZE) {\n throw new Error(errors_1.PROTOCOL_MALFORMED);\n }\n const {\n magic,\n sharp1,\n sharp2,\n messageType,\n length\n } = readHeaderChunked(bytes);\n if (magic !== constants_1.MESSAGE_MAGIC_HEADER_BYTE || sharp1 !== constants_1.MESSAGE_HEADER_BYTE || sharp2 !== constants_1.MESSAGE_HEADER_BYTE) {\n throw new Error(errors_1.PROTOCOL_MALFORMED);\n }\n return {\n header: bytes.subarray(0, 3),\n length,\n messageType,\n payload: bytes.subarray(constants_1.HEADER_SIZE)\n };\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = exports.getHeaders = void 0;\nconst constants_1 = require(\"./constants\");\nconst getHeaders = () => {\n const header = Buffer.alloc(3);\n header.writeUInt8(constants_1.MESSAGE_MAGIC_HEADER_BYTE, 0);\n header.writeUInt8(constants_1.MESSAGE_HEADER_BYTE, 1);\n header.writeUInt8(constants_1.MESSAGE_HEADER_BYTE, 2);\n const chunkHeader = Buffer.alloc(1);\n chunkHeader.writeUInt8(constants_1.MESSAGE_MAGIC_HEADER_BYTE);\n return [header, chunkHeader];\n};\nexports.getHeaders = getHeaders;\nconst encode = (data, options) => {\n const {\n messageType\n } = options;\n if (typeof messageType === 'string') {\n throw new Error(`Unsupported message type ${messageType}`);\n }\n const fullSize = constants_1.HEADER_SIZE + data.length;\n const encodedBuffer = Buffer.alloc(fullSize);\n const [header] = (0, exports.getHeaders)(data);\n header.copy(encodedBuffer);\n encodedBuffer.writeUInt16BE(messageType, 3);\n encodedBuffer.writeUInt32BE(data.length, 5);\n data.copy(encodedBuffer, constants_1.HEADER_SIZE);\n return encodedBuffer;\n};\nexports.encode = encode;\n//# sourceMappingURL=encode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.name = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\ntslib_1.__exportStar(require(\"./encode\"), exports);\nexports.name = 'v1';\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MESSAGE_TYPE = exports.MESSAGE_LEN_SIZE = exports.HEADER_SIZE = void 0;\nexports.HEADER_SIZE = 1 + 2;\nexports.MESSAGE_LEN_SIZE = 2;\nexports.MESSAGE_TYPE = 'TrezorHostProtocolMessage';\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TAG_LENGTH = exports.CRC_LENGTH = exports.THP_DEFAULT_CHANNEL = exports.THP_CONTINUATION_PACKET = exports.THP_CONTROL_BYTE_DECRYPTED = exports.THP_CONTROL_BYTE_ENCRYPTED = exports.THP_READ_ACK_HEADER_BYTE = exports.THP_ERROR_HEADER_BYTE = exports.THP_HANDSHAKE_COMPLETION_RESPONSE = exports.THP_HANDSHAKE_COMPLETION_REQUEST = exports.THP_HANDSHAKE_INIT_RESPONSE = exports.THP_HANDSHAKE_INIT_REQUEST = exports.THP_CREATE_CHANNEL_RESPONSE = exports.THP_CREATE_CHANNEL_REQUEST = void 0;\nexports.THP_CREATE_CHANNEL_REQUEST = 0x40;\nexports.THP_CREATE_CHANNEL_RESPONSE = 0x41;\nexports.THP_HANDSHAKE_INIT_REQUEST = 0x00;\nexports.THP_HANDSHAKE_INIT_RESPONSE = 0x01;\nexports.THP_HANDSHAKE_COMPLETION_REQUEST = 0x02;\nexports.THP_HANDSHAKE_COMPLETION_RESPONSE = 0x03;\nexports.THP_ERROR_HEADER_BYTE = 0x42;\nexports.THP_READ_ACK_HEADER_BYTE = 0x20;\nexports.THP_CONTROL_BYTE_ENCRYPTED = 0x04;\nexports.THP_CONTROL_BYTE_DECRYPTED = 0x05;\nexports.THP_CONTINUATION_PACKET = 0x80;\nexports.THP_DEFAULT_CHANNEL = Buffer.from([0xff, 0xff]);\nexports.CRC_LENGTH = 4;\nexports.TAG_LENGTH = 16;\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = exports.getHeaders = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst constants_1 = require(\"./constants\");\nconst constants_2 = require(\"../protocol-thp/constants\");\nconst getChunkHeader = data => {\n if (data.byteLength < constants_1.HEADER_SIZE) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n const channel = data.subarray(1, constants_1.HEADER_SIZE);\n const header = Buffer.concat([Buffer.from([constants_2.THP_CONTINUATION_PACKET]), channel]);\n return header;\n};\nconst getHeaders = data => {\n const chunkHeader = getChunkHeader(data);\n return [data.subarray(0, constants_1.HEADER_SIZE), chunkHeader];\n};\nexports.getHeaders = getHeaders;\nconst encode = (data, options) => {\n if (options.messageType === constants_1.MESSAGE_TYPE) {\n if (!options.header || options.header.byteLength !== constants_1.HEADER_SIZE) {\n throw new Error(`${options.messageType} unexpected header ${options.header?.toString('hex')}`);\n }\n const length = Buffer.alloc(constants_1.MESSAGE_LEN_SIZE);\n length.writeUInt16BE(data.length);\n return Buffer.concat([options.header, length, data]);\n }\n throw new Error(`Use protocol-thp.encode for messageType ${options.messageType}`);\n};\nexports.encode = encode;\n//# sourceMappingURL=encode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst constants_1 = require(\"./constants\");\nconst encode_1 = require(\"./encode\");\nconst decode = bytes => {\n const buffer = Buffer.from(bytes);\n if (buffer.byteLength < constants_1.HEADER_SIZE + constants_1.MESSAGE_LEN_SIZE) {\n throw new Error(ERRORS.PROTOCOL_MALFORMED);\n }\n const [header, chunkHeader] = (0, encode_1.getHeaders)(buffer);\n return {\n header,\n chunkHeader,\n length: buffer.readUint16BE(constants_1.HEADER_SIZE),\n messageType: constants_1.MESSAGE_TYPE,\n payload: buffer.subarray(constants_1.HEADER_SIZE + constants_1.MESSAGE_LEN_SIZE)\n };\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.name = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\ntslib_1.__exportStar(require(\"./encode\"), exports);\nexports.name = 'v2';\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HEADER_SIZE = void 0;\nexports.HEADER_SIZE = 2 + 4;\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = void 0;\nconst constants_1 = require(\"./constants\");\nconst errors_1 = require(\"../errors\");\nconst readHeader = buffer => {\n const messageType = buffer.readUInt16BE();\n const length = buffer.readUInt32BE(2);\n return {\n messageType,\n length\n };\n};\nconst decode = bytes => {\n if (bytes.byteLength < constants_1.HEADER_SIZE) {\n throw new Error(errors_1.PROTOCOL_MALFORMED);\n }\n const {\n messageType,\n length\n } = readHeader(bytes);\n return {\n header: Buffer.alloc(0),\n messageType,\n length,\n payload: bytes.subarray(constants_1.HEADER_SIZE)\n };\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = exports.getHeaders = void 0;\nconst constants_1 = require(\"./constants\");\nconst getHeaders = () => [Buffer.alloc(0), Buffer.alloc(0)];\nexports.getHeaders = getHeaders;\nconst encode = (data, options) => {\n const {\n messageType\n } = options;\n if (typeof messageType === 'string') {\n throw new Error(`Unsupported message type ${messageType}`);\n }\n const encodedBuffer = Buffer.alloc(constants_1.HEADER_SIZE + data.length);\n encodedBuffer.writeUInt16BE(messageType);\n encodedBuffer.writeUInt32BE(data.length, 2);\n data.copy(encodedBuffer, constants_1.HEADER_SIZE);\n return encodedBuffer;\n};\nexports.encode = encode;\n//# sourceMappingURL=encode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.name = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\ntslib_1.__exportStar(require(\"./encode\"), exports);\nexports.name = 'bridge';\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.aesgcm = void 0;\nconst tslib_1 = require(\"tslib\");\nconst crypto = tslib_1.__importStar(require(\"crypto\"));\nconst aesgcm = (key, iv) => {\n const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);\n const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);\n return {\n auth: authData => {\n cipher.setAAD(authData);\n decipher.setAAD(authData);\n },\n encrypt: plainText => {\n const encrypted = cipher.update(plainText);\n return Buffer.concat([encrypted, cipher.final()]);\n },\n decrypt: (cipherText, authTag) => {\n decipher.setAuthTag(authTag);\n const decrypted = decipher.update(cipherText);\n return Buffer.concat([decrypted, decipher.final()]);\n },\n finish: () => cipher.getAuthTag()\n };\n};\nexports.aesgcm = aesgcm;\n//# sourceMappingURL=aesgcm.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crc32 = void 0;\nconst getCrcTable = () => new Int32Array([0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d]);\nconst crc32 = buf => {\n if (!Buffer.isBuffer(buf)) {\n throw new Error('Invalid crc input');\n }\n const table = getCrcTable();\n let crc = -1;\n for (let i = 0; i < buf.length; i++) {\n crc = table[(crc ^ buf[i]) & 0xff] ^ crc >>> 8;\n }\n const buffer = Buffer.alloc(4);\n buffer.writeInt32BE(crc ^ -1, 0);\n return buffer;\n};\nexports.crc32 = crc32;\n//# sourceMappingURL=crc32.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crc32 = exports.aesgcm = void 0;\nvar aesgcm_1 = require(\"./aesgcm\");\nObject.defineProperty(exports, \"aesgcm\", {\n enumerable: true,\n get: function () {\n return aesgcm_1.aesgcm;\n }\n});\nvar crc32_1 = require(\"./crc32\");\nObject.defineProperty(exports, \"crc32\", {\n enumerable: true,\n get: function () {\n return crc32_1.crc32;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCurve25519KeyPair = void 0;\nexports.curve25519 = curve25519;\nexports.elligator2 = elligator2;\nlet constants;\nconst getConstants = () => {\n if (constants) {\n return constants;\n }\n if (typeof BigInt === 'undefined') {\n throw new Error('curve25519: BigInt not supported');\n }\n const p = 2n ** 255n - 19n;\n const J = 486662n;\n const c3 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\n const c4 = (p - 5n) / 8n;\n const a24 = (J + 2n) / 4n;\n const ctx = {\n p,\n J,\n c3,\n c4,\n a24\n };\n constants = ctx;\n return ctx;\n};\nfunction littleEndianBytesToBigInt(bytes) {\n let result = 0n;\n for (let i = 0; i < bytes.length; i++) {\n result += BigInt(bytes[i]) << 8n * BigInt(i);\n }\n return result;\n}\nfunction bigintToLittleEndianBytes(value, length = 32) {\n const byteArray = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n byteArray[i] = Number(value & 0xffn);\n value >>= 8n;\n }\n return byteArray;\n}\nfunction pow(base, exp, mod) {\n let result = 1n;\n base = base % mod;\n while (exp > 0) {\n if (exp % 2n === 1n) {\n result = result * base % mod;\n }\n exp = exp >> 1n;\n base = base * base % mod;\n }\n return result;\n}\nfunction decodeScalar(scalar) {\n if (scalar.length !== 32) {\n throw new Error('Invalid length of scalar');\n }\n const array = new Uint8Array(scalar);\n array[0] &= 248;\n array[31] &= 127;\n array[31] |= 64;\n return littleEndianBytesToBigInt(array);\n}\nfunction decodeCoordinate(coordinate) {\n if (coordinate.length !== 32) {\n throw new Error('Invalid length of coordinate');\n }\n const array = new Uint8Array(coordinate);\n array[array.length - 1] &= 0x7f;\n return littleEndianBytesToBigInt(array);\n}\nfunction encodeCoordinate(coordinate) {\n return bigintToLittleEndianBytes(coordinate);\n}\nfunction conditionalSwap(a, b, condition) {\n return condition ? [b, a] : [a, b];\n}\nfunction ladderOperation({\n p,\n a24\n}, x1, x2, z2, x3, z3) {\n const a = (x2 + z2) % p;\n const aa = a * a % p;\n const b = (x2 - z2 + p) % p;\n const bb = b * b % p;\n const e = (aa - bb + p) % p;\n const c = (x3 + z3) % p;\n const d = (x3 - z3 + p) % p;\n const da = d * a % p;\n const cb = c * b % p;\n const t0 = (da + cb) % p;\n const x5 = t0 * t0 % p;\n const t1 = (da - cb + p) % p;\n const t2 = t1 * t1 % p;\n const z5 = x1 * t2 % p;\n const x4 = aa * bb % p;\n const t3 = a24 * e % p;\n const t4 = (bb + t3) % p;\n const z4 = e * t4 % p;\n return [x4, z4, x5, z5];\n}\nfunction curve25519(privateKey, publicKey) {\n const ctx = getConstants();\n const {\n p\n } = ctx;\n const k = decodeScalar(privateKey);\n const u = decodeCoordinate(publicKey) % p;\n const x1 = u;\n let x2 = 1n;\n let z2 = 0n;\n let x3 = u;\n let z3 = 1n;\n let swap = 0;\n for (let i = 255; i >= 0; i--) {\n const bit = Number(k >> BigInt(i) & 1n);\n swap ^= bit;\n [x2, x3] = conditionalSwap(x2, x3, Boolean(swap));\n [z2, z3] = conditionalSwap(z2, z3, Boolean(swap));\n swap = bit;\n [x2, z2, x3, z3] = ladderOperation(ctx, x1, x2, z2, x3, z3);\n }\n [x2, x3] = conditionalSwap(x2, x3, Boolean(swap));\n [z2, z3] = conditionalSwap(z2, z3, Boolean(swap));\n const x = pow(z2, p - 2n, p) * x2 % p;\n return Buffer.from(encodeCoordinate(x));\n}\nfunction conditionalMove(first, second, condition) {\n return condition ? second : first;\n}\nfunction elligator2(point) {\n const ctx = getConstants();\n const {\n p,\n J,\n c4,\n c3\n } = ctx;\n const u = decodeCoordinate(point) % p;\n let tv1 = u * u % p;\n tv1 = 2n * tv1 % p;\n const xd = (tv1 + 1n) % p;\n const x1n = (-J + p) % p;\n let tv2 = xd * xd % p;\n const gxd = tv2 * xd % p;\n let gx1 = J * tv1 % p;\n gx1 = gx1 * x1n % p;\n gx1 = (gx1 + tv2) % p;\n gx1 = gx1 * x1n % p;\n let tv3 = gxd * gxd % p;\n tv2 = tv3 * tv3 % p;\n tv3 = tv3 * gxd % p;\n tv3 = tv3 * gx1 % p;\n tv2 = tv2 * tv3 % p;\n let y11 = pow(tv2, c4, p);\n y11 = y11 * tv3 % p;\n const y12 = y11 * c3 % p;\n tv2 = y11 * y11 % p;\n tv2 = tv2 * gxd % p;\n const e1 = tv2 == gx1;\n const y1 = conditionalMove(y12, y11, e1);\n const x2n = x1n * tv1 % p;\n tv2 = y1 * y1 % p;\n tv2 = tv2 * gxd % p;\n const e3 = tv2 == gx1;\n const xn = conditionalMove(x2n, x1n, e3);\n const x = xn * pow(xd, p - 2n, p) % p;\n return encodeCoordinate(x);\n}\nconst getCurve25519KeyPair = randomBytes => {\n const randomPriv = Buffer.from(randomBytes);\n randomPriv[0] &= 248;\n randomPriv[31] &= 127;\n randomPriv[31] |= 64;\n const basepoint = Buffer.alloc(32).fill(0);\n basepoint[0] = 0x09;\n return {\n publicKey: curve25519(randomPriv, basepoint),\n privateKey: randomPriv\n };\n};\nexports.getCurve25519KeyPair = getCurve25519KeyPair;\n//# sourceMappingURL=curve25519.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.littleEndianBytesToBigInt = exports.bigEndianBytesToBigInt = exports.getIvFromNonce = exports.hashOfTwo = exports.hkdf = exports.sha256 = exports.hmacSHA256 = void 0;\nconst tslib_1 = require(\"tslib\");\nconst crypto = tslib_1.__importStar(require(\"crypto\"));\nconst hmacSHA256 = (key, data) => crypto.createHmac('sha256', key).update(data).digest();\nexports.hmacSHA256 = hmacSHA256;\nconst sha256 = buffer => crypto.createHash('sha256').update(buffer).digest();\nexports.sha256 = sha256;\nconst hkdf = (chainingKey, input) => {\n const tempKey = (0, exports.hmacSHA256)(chainingKey, input);\n const output1 = (0, exports.hmacSHA256)(tempKey, Buffer.from([0x01]));\n const ctxOutput2 = crypto.createHmac('sha256', tempKey).update(output1);\n ctxOutput2.update(Buffer.from([0x02]));\n const output2 = ctxOutput2.digest();\n return [output1, output2];\n};\nexports.hkdf = hkdf;\nconst hashOfTwo = (hash1, hash2) => crypto.createHash('sha256').update(hash1).update(hash2).digest();\nexports.hashOfTwo = hashOfTwo;\nconst getIvFromNonce = nonce => {\n const iv = new Uint8Array(12);\n const nonceBytes = new Uint8Array(8);\n for (let i = 0; i < 8; i++) {\n nonceBytes[7 - i] = nonce & 0xff;\n nonce = nonce >> 8;\n }\n iv.set(nonceBytes, 4);\n return Buffer.from(iv);\n};\nexports.getIvFromNonce = getIvFromNonce;\nconst bigEndianBytesToBigInt = bytes => {\n const result = [];\n const {\n length\n } = bytes;\n for (let i = 0; i < length; i++) {\n result.push(BigInt(bytes[i] * 256 ** (length - (1 + i))));\n }\n return result.reduce((prev, curr) => prev + curr, BigInt(0));\n};\nexports.bigEndianBytesToBigInt = bigEndianBytesToBigInt;\nconst littleEndianBytesToBigInt = bytes => {\n let result = 0n;\n for (let i = 0; i < bytes.length; i++) {\n result += BigInt(bytes[i]) << 8n * BigInt(i);\n }\n return result;\n};\nexports.littleEndianBytesToBigInt = littleEndianBytesToBigInt;\n//# sourceMappingURL=tools.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getProtobufDefinitions = void 0;\nconst getProtobufDefinitions = () => ({\n ThpPairingMethod: {\n values: {\n SkipPairing: 1,\n CodeEntry: 2,\n QrCode: 3,\n NFC: 4\n }\n },\n ThpDeviceProperties: {\n fields: {\n internal_model: {\n rule: 'required',\n type: 'string',\n id: 1\n },\n model_variant: {\n type: 'uint32',\n id: 2,\n options: {\n default: 0\n }\n },\n protocol_version_major: {\n rule: 'required',\n type: 'uint32',\n id: 3\n },\n protocol_version_minor: {\n rule: 'required',\n type: 'uint32',\n id: 4\n },\n pairing_methods: {\n rule: 'repeated',\n type: 'ThpPairingMethod',\n id: 5,\n options: {\n packed: false\n }\n }\n }\n },\n ThpHandshakeCompletionReqNoisePayload: {\n fields: {\n host_pairing_credential: {\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpCreateNewSession: {\n fields: {\n passphrase: {\n type: 'string',\n id: 1\n },\n on_device: {\n type: 'bool',\n id: 2,\n options: {\n default: false\n }\n },\n derive_cardano: {\n type: 'bool',\n id: 3,\n options: {\n default: false\n }\n }\n }\n },\n ThpPairingRequest: {\n fields: {\n host_name: {\n rule: 'required',\n type: 'string',\n id: 1\n },\n app_name: {\n rule: 'required',\n type: 'string',\n id: 2\n }\n }\n },\n ThpPairingRequestApproved: {\n fields: {}\n },\n ThpSelectMethod: {\n fields: {\n selected_pairing_method: {\n rule: 'required',\n type: 'ThpPairingMethod',\n id: 1\n }\n }\n },\n ThpPairingPreparationsFinished: {\n fields: {}\n },\n ThpCodeEntryCommitment: {\n fields: {\n commitment: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpCodeEntryChallenge: {\n fields: {\n challenge: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpCodeEntryCpaceTrezor: {\n fields: {\n cpace_trezor_public_key: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpCodeEntryCpaceHostTag: {\n fields: {\n cpace_host_public_key: {\n rule: 'required',\n type: 'bytes',\n id: 1\n },\n tag: {\n rule: 'required',\n type: 'bytes',\n id: 2\n }\n }\n },\n ThpCodeEntrySecret: {\n fields: {\n secret: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpQrCodeTag: {\n fields: {\n tag: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpQrCodeSecret: {\n fields: {\n secret: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpNfcTagHost: {\n fields: {\n tag: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpNfcTagTrezor: {\n fields: {\n tag: {\n rule: 'required',\n type: 'bytes',\n id: 1\n }\n }\n },\n ThpCredentialRequest: {\n fields: {\n host_static_public_key: {\n rule: 'required',\n type: 'bytes',\n id: 1\n },\n autoconnect: {\n type: 'bool',\n id: 2,\n options: {\n default: false\n }\n },\n credential: {\n type: 'bytes',\n id: 3\n }\n }\n },\n ThpCredentialResponse: {\n fields: {\n trezor_static_public_key: {\n rule: 'required',\n type: 'bytes',\n id: 1\n },\n credential: {\n rule: 'required',\n type: 'bytes',\n id: 2\n }\n }\n },\n ThpEndRequest: {\n fields: {}\n },\n ThpEndResponse: {\n fields: {}\n },\n MessageType: {\n options: {\n '(has_bitcoin_only_values)': true,\n '(wire_enum)': true\n },\n values: {\n ThpCreateNewSession: 1000,\n ThpCredentialRequest: 1016,\n ThpCredentialResponse: 1017,\n ThpPairingRequest: 1008,\n ThpPairingRequestApproved: 1009,\n ThpSelectMethod: 1010,\n ThpPairingPreparationsFinished: 1011,\n ThpEndRequest: 1018,\n ThpEndResponse: 1019,\n ThpCodeEntryCommitment: 1024,\n ThpCodeEntryChallenge: 1025,\n ThpCodeEntryCpaceTrezor: 1026,\n ThpCodeEntryCpaceHostTag: 1027,\n ThpCodeEntrySecret: 1028,\n ThpQrCodeTag: 1032,\n ThpQrCodeSecret: 1033,\n ThpNfcTagHost: 1040,\n ThpNfcTagTrezor: 1041\n }\n }\n});\nexports.getProtobufDefinitions = getProtobufDefinitions;\n//# sourceMappingURL=protobufDefinitions.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=messageTypes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ThpPairingMethod = void 0;\nvar ThpPairingMethod;\n(function (ThpPairingMethod) {\n ThpPairingMethod[ThpPairingMethod[\"SkipPairing\"] = 1] = \"SkipPairing\";\n ThpPairingMethod[ThpPairingMethod[\"CodeEntry\"] = 2] = \"CodeEntry\";\n ThpPairingMethod[ThpPairingMethod[\"QrCode\"] = 3] = \"QrCode\";\n ThpPairingMethod[ThpPairingMethod[\"NFC\"] = 4] = \"NFC\";\n})(ThpPairingMethod || (exports.ThpPairingMethod = ThpPairingMethod = {}));\n//# sourceMappingURL=protobufTypes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getProtobufDefinitions = void 0;\nconst tslib_1 = require(\"tslib\");\nvar protobufDefinitions_1 = require(\"./protobufDefinitions\");\nObject.defineProperty(exports, \"getProtobufDefinitions\", {\n enumerable: true,\n get: function () {\n return protobufDefinitions_1.getProtobufDefinitions;\n }\n});\ntslib_1.__exportStar(require(\"./messageTypes\"), exports);\ntslib_1.__exportStar(require(\"./protobufTypes\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateNfcTag = exports.validateQrCodeTag = exports.validateCodeEntryTag = exports.getSharedSecret = exports.getCpaceHostKeys = exports.handleHandshakeInit = exports.getTrezorState = exports.findKnownPairingCredentials = exports.getHandshakeHash = void 0;\nconst crypto_1 = require(\"crypto\");\nconst aesgcm_1 = require(\"./aesgcm\");\nconst curve25519_1 = require(\"./curve25519\");\nconst tools_1 = require(\"./tools\");\nconst messages_1 = require(\"../messages\");\nconst getProtocolName = () => Buffer.concat([Buffer.from('Noise_XX_25519_AESGCM_SHA256'), Buffer.alloc(4).fill(0)]);\nconst getHandshakeHash = deviceProperties => (0, tools_1.hashOfTwo)(getProtocolName(), deviceProperties);\nexports.getHandshakeHash = getHandshakeHash;\nconst findKnownPairingCredentials = (knownCredentials, trezorMaskedStaticPubkey, trezorEphemeralPubkey) => knownCredentials.filter(c => {\n try {\n const trezorStaticPubkey = Buffer.from(c.trezor_static_public_key, 'hex');\n const h = (0, tools_1.hashOfTwo)(trezorStaticPubkey, trezorEphemeralPubkey);\n return trezorMaskedStaticPubkey.compare((0, curve25519_1.curve25519)(h, trezorStaticPubkey)) === 0;\n } catch {}\n});\nexports.findKnownPairingCredentials = findKnownPairingCredentials;\nconst getTrezorState = (credentials, payload) => {\n const aes = (0, aesgcm_1.aesgcm)(credentials.trezorKey, Buffer.alloc(12));\n aes.auth(Buffer.alloc(0));\n const trezorState = aes.decrypt(payload.subarray(0, 1), payload.subarray(1, 17));\n return trezorState.readUint8();\n};\nexports.getTrezorState = getTrezorState;\nconst handleHandshakeInit = ({\n handshakeInitResponse,\n thpState,\n knownCredentials,\n hostStaticKeys,\n hostEphemeralKeys,\n tryToUnlock,\n protobufEncoder\n}) => {\n if (!thpState.handshakeCredentials) {\n throw new Error('ThpStateMissing');\n }\n const {\n trezorEphemeralPubkey,\n trezorEncryptedStaticPubkey,\n tag\n } = handshakeInitResponse;\n const {\n sendNonce,\n recvNonce\n } = thpState;\n const {\n handshakeHash\n } = thpState.handshakeCredentials;\n const iv0 = (0, tools_1.getIvFromNonce)(sendNonce);\n const iv1 = (0, tools_1.getIvFromNonce)(recvNonce);\n let h, point, aes;\n h = handshakeHash;\n h = (0, tools_1.hashOfTwo)(h, hostEphemeralKeys.publicKey);\n h = (0, tools_1.hashOfTwo)(h, Buffer.from([tryToUnlock]));\n h = (0, tools_1.hashOfTwo)(h, trezorEphemeralPubkey);\n point = (0, curve25519_1.curve25519)(hostEphemeralKeys.privateKey, trezorEphemeralPubkey);\n let [ck, k] = (0, tools_1.hkdf)(getProtocolName(), point);\n aes = (0, aesgcm_1.aesgcm)(k, iv0);\n aes.auth(h);\n const trezorStaticPubkey = trezorEncryptedStaticPubkey.subarray(0, 32);\n const trezorStaticPubkeyTag = trezorEncryptedStaticPubkey.subarray(32, 32 + 16);\n const trezorMaskedStaticPubkey = aes.decrypt(trezorStaticPubkey, trezorStaticPubkeyTag);\n h = (0, tools_1.hashOfTwo)(h, trezorEncryptedStaticPubkey);\n point = (0, curve25519_1.curve25519)(hostEphemeralKeys.privateKey, trezorMaskedStaticPubkey);\n [ck, k] = (0, tools_1.hkdf)(ck, point);\n aes = (0, aesgcm_1.aesgcm)(k, iv0);\n aes.auth(h);\n aes.decrypt(Buffer.alloc(0), tag);\n h = (0, tools_1.hashOfTwo)(h, tag);\n const allCredentials = (0, exports.findKnownPairingCredentials)(knownCredentials, trezorMaskedStaticPubkey, trezorEphemeralPubkey);\n const credentials = allCredentials.length ? allCredentials[0] : undefined;\n aes = (0, aesgcm_1.aesgcm)(k, iv1);\n aes.auth(h);\n const hostEncryptedStaticPubkey = Buffer.concat([aes.encrypt(hostStaticKeys.publicKey), aes.finish()]);\n h = (0, tools_1.hashOfTwo)(h, hostEncryptedStaticPubkey);\n point = (0, curve25519_1.curve25519)(hostStaticKeys.privateKey, trezorEphemeralPubkey);\n [ck, k] = (0, tools_1.hkdf)(ck, point);\n const {\n message\n } = protobufEncoder('ThpHandshakeCompletionReqNoisePayload', {\n host_pairing_credential: credentials?.credential\n });\n aes = (0, aesgcm_1.aesgcm)(k, iv0);\n aes.auth(h);\n const encryptedPayload = Buffer.concat([aes.encrypt(message), aes.finish()]);\n h = (0, tools_1.hashOfTwo)(h, encryptedPayload);\n const [hostKey, trezorKey] = (0, tools_1.hkdf)(ck, Buffer.alloc(0));\n return {\n trezorMaskedStaticPubkey,\n trezorEncryptedStaticPubkey,\n hostEncryptedStaticPubkey,\n hostKey,\n trezorKey,\n handshakeHash: h,\n credentials,\n allCredentials,\n encryptedPayload\n };\n};\nexports.handleHandshakeInit = handleHandshakeInit;\nconst getCpaceHostKeys = (code, handshakeHash) => {\n const shaCtx = (0, crypto_1.createHash)('sha512');\n shaCtx.update(Buffer.from([0x08, 0x43, 0x50, 0x61, 0x63, 0x65, 0x32, 0x35, 0x35, 0x06]));\n shaCtx.update(code);\n shaCtx.update(Buffer.concat([Buffer.from([0x6f]), Buffer.alloc(111).fill(0), Buffer.from([0x20])]));\n shaCtx.update(handshakeHash);\n shaCtx.update(Buffer.from([0x00]));\n const sha = shaCtx.digest().subarray(0, 32);\n const generator = (0, curve25519_1.elligator2)(sha);\n const privateKey = (0, crypto_1.randomBytes)(32);\n const publicKey = (0, curve25519_1.curve25519)(privateKey, generator);\n return {\n privateKey,\n publicKey\n };\n};\nexports.getCpaceHostKeys = getCpaceHostKeys;\nconst getSharedSecret = (publicKey, privateKey) => {\n const sharedSecret = (0, curve25519_1.curve25519)(privateKey, publicKey);\n return (0, tools_1.sha256)(Buffer.from(sharedSecret));\n};\nexports.getSharedSecret = getSharedSecret;\nconst validateCodeEntryTag = (credentials, value, secret) => {\n const sha = (0, crypto_1.createHash)('sha256').update(Buffer.from(secret, 'hex')).digest();\n const {\n handshakeHash,\n handshakeCommitment,\n codeEntryChallenge\n } = credentials;\n if (sha.compare(handshakeCommitment) !== 0) {\n throw new Error(`HP5: commitment mismatch ${handshakeCommitment.toString('hex')} != ${sha.toString('hex')}`);\n }\n const shaCtx = (0, crypto_1.createHash)('sha256');\n shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.CodeEntry]));\n shaCtx.update(handshakeHash);\n shaCtx.update(Buffer.from(secret, 'hex'));\n shaCtx.update(codeEntryChallenge);\n const calculatedValue = (0, tools_1.bigEndianBytesToBigInt)(shaCtx.digest()) % 1000000n;\n if (calculatedValue !== BigInt(value)) {\n throw new Error(`HP5: code mismatch ${value} != ${calculatedValue.toString()}`);\n }\n};\nexports.validateCodeEntryTag = validateCodeEntryTag;\nconst validateQrCodeTag = ({\n handshakeHash\n}, value, secret) => {\n const shaCtx = (0, crypto_1.createHash)('sha256');\n shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.QrCode]));\n shaCtx.update(handshakeHash);\n shaCtx.update(Buffer.from(secret, 'hex'));\n const calculatedValue = shaCtx.digest().subarray(0, 16);\n const expectedValue = Buffer.from(value, 'hex').subarray(0, 16);\n if (calculatedValue.compare(expectedValue) !== 0) {\n throw new Error(`HP6: code mismatch ${calculatedValue.toString('hex')} != ${expectedValue.toString('hex')}`);\n }\n};\nexports.validateQrCodeTag = validateQrCodeTag;\nconst validateNfcTag = ({\n handshakeHash\n}, value, secret) => {\n const shaCtx = (0, crypto_1.createHash)('sha256');\n shaCtx.update(Buffer.from([messages_1.ThpPairingMethod.NFC]));\n shaCtx.update(handshakeHash);\n shaCtx.update(secret);\n const calculatedValue = shaCtx.digest().subarray(0, 16);\n const expectedValue = Buffer.from(value, 'hex').subarray(0, 16);\n if (calculatedValue.compare(expectedValue) !== 0) {\n throw new Error(`HP7: code mismatch ${calculatedValue.toString('hex')} != ${expectedValue.toString('hex')}`);\n }\n};\nexports.validateNfcTag = validateNfcTag;\n//# sourceMappingURL=pairing.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getThpPairingMethod = exports.isThpMessageName = exports.isExpectedResponse = exports.getExpectedHeaders = exports.getExpectedResponses = exports.isAckExpected = exports.readThpHeader = exports.getControlBit = exports.clearControlBit = exports.addSequenceBit = exports.addAckBit = void 0;\nconst constants_1 = require(\"./constants\");\nconst messages_1 = require(\"./messages\");\nconst addAckBit = (magic, ackBit) => {\n const result = Buffer.alloc(1);\n result.writeInt8(magic | ackBit << 3);\n return result;\n};\nexports.addAckBit = addAckBit;\nconst addSequenceBit = (magic, seqBit) => {\n const result = Buffer.alloc(1);\n result.writeInt8(magic | seqBit << 4);\n return result;\n};\nexports.addSequenceBit = addSequenceBit;\nconst clearControlBit = magic => magic & ~(1 << 3) & ~(1 << 4);\nexports.clearControlBit = clearControlBit;\nconst getControlBit = magic => {\n const ackBit = (magic & 1 << 3) === 0 ? 0 : 1;\n const sequenceBit = (magic & 1 << 4) === 0 ? 0 : 1;\n return {\n ackBit,\n sequenceBit\n };\n};\nexports.getControlBit = getControlBit;\nconst readThpHeader = bytes => {\n const magic = bytes.readUInt8();\n const {\n ackBit,\n sequenceBit\n } = (0, exports.getControlBit)(magic);\n const channel = bytes.subarray(1, 3);\n return {\n magic: (0, exports.clearControlBit)(magic),\n ackBit,\n sequenceBit,\n channel\n };\n};\nexports.readThpHeader = readThpHeader;\nconst isAckExpected = bytesOrMagic => {\n const isCreateChannelMessage = magic => [constants_1.THP_CREATE_CHANNEL_REQUEST, constants_1.THP_CREATE_CHANNEL_RESPONSE].includes(magic);\n if (Array.isArray(bytesOrMagic)) {\n return !bytesOrMagic.find(n => isCreateChannelMessage(n));\n }\n return !isCreateChannelMessage(bytesOrMagic.readUInt8());\n};\nexports.isAckExpected = isAckExpected;\nconst getExpectedResponses = bytes => {\n const {\n magic\n } = (0, exports.readThpHeader)(bytes);\n if (magic === constants_1.THP_CREATE_CHANNEL_REQUEST) {\n return [constants_1.THP_CREATE_CHANNEL_RESPONSE];\n }\n if (magic === constants_1.THP_HANDSHAKE_INIT_REQUEST) {\n return [constants_1.THP_HANDSHAKE_INIT_RESPONSE, constants_1.THP_CONTINUATION_PACKET];\n }\n if (magic === constants_1.THP_HANDSHAKE_COMPLETION_REQUEST) {\n return [constants_1.THP_HANDSHAKE_COMPLETION_RESPONSE, constants_1.THP_CONTINUATION_PACKET];\n }\n if (magic === constants_1.THP_CONTROL_BYTE_ENCRYPTED) {\n return [constants_1.THP_CONTROL_BYTE_ENCRYPTED, constants_1.THP_CONTINUATION_PACKET];\n }\n if (magic === constants_1.THP_CONTROL_BYTE_DECRYPTED) {\n return [constants_1.THP_CONTROL_BYTE_DECRYPTED, constants_1.THP_CONTINUATION_PACKET];\n }\n return [];\n};\nexports.getExpectedResponses = getExpectedResponses;\nconst getExpectedHeaders = state => [...state.expectedResponses, constants_1.THP_ERROR_HEADER_BYTE].map(resp => {\n switch (resp) {\n case constants_1.THP_CONTINUATION_PACKET:\n return Buffer.from([resp]);\n case constants_1.THP_READ_ACK_HEADER_BYTE:\n return (0, exports.addAckBit)(resp, state.sendAckBit);\n default:\n return (0, exports.addSequenceBit)(resp, state.recvBit);\n }\n}).map(magic => Buffer.concat([magic, state.channel]));\nexports.getExpectedHeaders = getExpectedHeaders;\nconst isExpectedResponse = (bytes, state) => {\n if (bytes.length < 3) {\n return false;\n }\n const header = (0, exports.readThpHeader)(bytes);\n if (header.channel.compare(state.channel) !== 0) {\n return false;\n }\n const {\n magic\n } = header;\n if (magic === constants_1.THP_ERROR_HEADER_BYTE) {\n return true;\n }\n const {\n expectedResponses\n } = state;\n for (let i = 0; i < expectedResponses.length; i++) {\n if (magic === expectedResponses[i]) {\n if (magic !== constants_1.THP_CONTINUATION_PACKET && (header.sequenceBit !== state?.recvBit || header.ackBit !== state?.recvAckBit)) {\n console.warn('Unexpected control bit');\n return false;\n }\n return true;\n }\n }\n return false;\n};\nexports.isExpectedResponse = isExpectedResponse;\nconst isThpMessageName = name => ['ThpCreateChannelRequest', 'ThpHandshakeInitRequest', 'ThpHandshakeCompletionRequest', 'ThpReadAck'].includes(name);\nexports.isThpMessageName = isThpMessageName;\nconst getThpPairingMethod = dm => typeof dm === 'string' ? messages_1.ThpPairingMethod[dm] : dm;\nexports.getThpPairingMethod = getThpPairingMethod;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = exports.decodeSendAck = void 0;\nconst constants_1 = require(\"./constants\");\nconst crypto_1 = require(\"./crypto\");\nconst crc32_1 = require(\"./crypto/crc32\");\nconst pairing_1 = require(\"./crypto/pairing\");\nconst tools_1 = require(\"./crypto/tools\");\nconst utils_1 = require(\"./utils\");\nconst decipherMessage = (key, recvNonce, payload, tag) => {\n const aes = (0, crypto_1.aesgcm)(key, (0, tools_1.getIvFromNonce)(recvNonce));\n aes.auth(Buffer.alloc(0));\n const trezorMaskedStaticPubkey = aes.decrypt(payload, tag);\n return trezorMaskedStaticPubkey.subarray(1);\n};\nconst createChannelResponse = ({\n payload\n}, protobufDecoder) => {\n const nonce = payload.subarray(0, 8);\n const channel = payload.subarray(8, 10);\n const props = payload.subarray(10, payload.length - constants_1.CRC_LENGTH);\n const properties = protobufDecoder('ThpDeviceProperties', props).message;\n const handshakeHash = (0, pairing_1.getHandshakeHash)(props);\n return {\n type: 'ThpCreateChannelResponse',\n message: {\n nonce,\n channel,\n properties,\n handshakeHash\n }\n };\n};\nconst readHandshakeInitResponse = ({\n payload\n}) => {\n const trezorEphemeralPubkey = payload.subarray(0, 32);\n const trezorEncryptedStaticPubkey = payload.subarray(32, 32 + 48);\n const tag = payload.subarray(32 + 48, 32 + 48 + constants_1.TAG_LENGTH);\n return {\n type: 'ThpHandshakeInitResponse',\n message: {\n trezorEphemeralPubkey,\n trezorEncryptedStaticPubkey,\n tag\n }\n };\n};\nconst readHandshakeCompletionResponse = ({\n payload,\n thpState\n}) => {\n const state = (0, pairing_1.getTrezorState)(thpState.handshakeCredentials, payload);\n return {\n type: 'ThpHandshakeCompletionResponse',\n message: {\n state\n }\n };\n};\nconst readProtobufMessage = ({\n payload,\n thpState\n}, protobufDecoder) => {\n const tagPos = payload.length - constants_1.TAG_LENGTH - constants_1.CRC_LENGTH;\n const cipheredMessage = payload.subarray(0, tagPos);\n const tag = payload.subarray(tagPos, payload.length - constants_1.CRC_LENGTH);\n const decipheredMessage = decipherMessage(thpState.handshakeCredentials.trezorKey, thpState.recvNonce, cipheredMessage, tag);\n const messageType = decipheredMessage.readUInt16BE(0);\n const messagePayload = decipheredMessage.subarray(2);\n return protobufDecoder(messageType, messagePayload);\n};\nconst decodeReadAck = () => ({\n type: 'ThpAck',\n message: {}\n});\nconst decodeThpError = payload => {\n const [errorType] = payload;\n const error = (() => {\n switch (errorType) {\n case 0x01:\n return 'ThpTransportBusy';\n case 0x02:\n return 'ThpUnallocatedChannel';\n case 0x03:\n return 'ThpDecryptionFailed';\n case 0x05:\n return 'ThpDeviceLocked';\n default:\n return 'ThpUnknownError';\n }\n })();\n const message = {\n code: error,\n message: error ?? `Unknown ThpError ${errorType}`\n };\n return {\n type: 'ThpError',\n message\n };\n};\nconst validateCrc = decodedMessage => {\n const payloadLen = decodedMessage.length - constants_1.CRC_LENGTH;\n const length = Buffer.alloc(2);\n length.writeUInt16BE(decodedMessage.length);\n const expectedCrc = (0, crc32_1.crc32)(Buffer.concat([decodedMessage.header, length, decodedMessage.payload.subarray(0, payloadLen)]));\n const crc = decodedMessage.payload.subarray(payloadLen, decodedMessage.length);\n if (expectedCrc.compare(crc) !== 0) {\n throw new Error(`Invalid CRC. expected: ${expectedCrc.toString('hex')} received: ${crc.toString('hex')}`);\n }\n};\nconst decodeSendAck = decodedMessage => {\n validateCrc(decodedMessage);\n const {\n magic\n } = (0, utils_1.readThpHeader)(decodedMessage.header);\n if (magic === constants_1.THP_ERROR_HEADER_BYTE) {\n return decodeThpError(decodedMessage.payload);\n }\n if (magic === constants_1.THP_READ_ACK_HEADER_BYTE) {\n return decodeReadAck();\n }\n};\nexports.decodeSendAck = decodeSendAck;\nconst decode = (decodedMessage, protobufDecoder, thpState) => {\n if (!thpState) {\n throw new Error('ThpStateMissing');\n }\n validateCrc(decodedMessage);\n const header = (0, utils_1.readThpHeader)(decodedMessage.header);\n const message = {\n ...decodedMessage,\n ...header,\n thpState\n };\n const {\n magic\n } = header;\n if (magic === constants_1.THP_ERROR_HEADER_BYTE) {\n return decodeThpError(message.payload);\n }\n if (magic === constants_1.THP_READ_ACK_HEADER_BYTE) {\n return decodeReadAck();\n }\n if (magic === constants_1.THP_CREATE_CHANNEL_RESPONSE) {\n return createChannelResponse(message, protobufDecoder);\n }\n if (magic === constants_1.THP_HANDSHAKE_INIT_RESPONSE) {\n return readHandshakeInitResponse(message);\n }\n if (magic === constants_1.THP_HANDSHAKE_COMPLETION_RESPONSE) {\n return readHandshakeCompletionResponse(message);\n }\n if (magic === constants_1.THP_CONTROL_BYTE_ENCRYPTED) {\n return readProtobufMessage(message, protobufDecoder);\n }\n if (magic === constants_1.THP_CONTROL_BYTE_DECRYPTED) {\n return readProtobufMessage(message, protobufDecoder);\n }\n throw new Error('Unknown message type: ' + magic);\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = exports.encodeAck = exports.encodeProtobufMessage = exports.encodePayload = void 0;\nconst constants_1 = require(\"./constants\");\nconst crypto_1 = require(\"./crypto\");\nconst tools_1 = require(\"./crypto/tools\");\nconst utils_1 = require(\"./utils\");\nconst cipherMessage = (key, sendNonce, handshakeHash, payload) => {\n const aes = (0, crypto_1.aesgcm)(key, (0, tools_1.getIvFromNonce)(sendNonce));\n aes.auth(handshakeHash);\n const encryptedPayload = aes.encrypt(payload);\n const encryptedPayloadTag = aes.finish();\n return Buffer.concat([encryptedPayload, encryptedPayloadTag]);\n};\nconst getBytesFromField = (data, fieldName) => {\n const value = data[fieldName];\n if (typeof value === 'string') {\n return Buffer.from(value, 'hex');\n }\n if (typeof value === 'number') {\n return Buffer.from([value]);\n }\n if (Buffer.isBuffer(value)) {\n return value;\n }\n};\nconst createChannelRequestPayload = data => {\n const nonce = getBytesFromField(data, 'nonce');\n if (!nonce) {\n throw new Error('Missing nonce field');\n }\n return nonce;\n};\nconst handshakeInitRequestPayload = (data, _thpState) => {\n const key = getBytesFromField(data, 'key');\n if (!key) {\n throw new Error('ThpHandshakeInitRequest missing key field');\n }\n const tryToUnlock = getBytesFromField(data, 'tryToUnlock') ?? Buffer.from([0]);\n return Buffer.concat([key, tryToUnlock]);\n};\nconst handshakeCompletionRequestPayload = data => {\n const hostPubkey = getBytesFromField(data, 'hostPubkey');\n if (!hostPubkey) {\n throw new Error('ThpHandshakeCompletionRequest missing hostPubkey field');\n }\n const encryptedPayload = getBytesFromField(data, 'encryptedPayload');\n if (!encryptedPayload) {\n throw new Error('ThpHandshakeCompletionRequest missing encryptedPayload field');\n }\n return Buffer.concat([hostPubkey, encryptedPayload]);\n};\nconst encodePayload = (name, data, thpState) => {\n if (name === 'ThpCreateChannelRequest') {\n return createChannelRequestPayload(data);\n }\n if (name === 'ThpHandshakeInitRequest') {\n return handshakeInitRequestPayload(data, thpState);\n }\n if (name === 'ThpHandshakeCompletionRequest') {\n return handshakeCompletionRequestPayload(data);\n }\n return Buffer.alloc(0);\n};\nexports.encodePayload = encodePayload;\nconst createChannelRequest = (data, channel) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + constants_1.CRC_LENGTH);\n const magic = Buffer.from([constants_1.THP_CREATE_CHANNEL_REQUEST]);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = (0, crypto_1.crc32)(message);\n return Buffer.concat([message, crc]);\n};\nconst handshakeInitRequest = (data, channel) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + constants_1.CRC_LENGTH);\n const magic = Buffer.from([constants_1.THP_HANDSHAKE_INIT_REQUEST]);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = (0, crypto_1.crc32)(message);\n return Buffer.concat([message, crc]);\n};\nconst handshakeCompletionRequest = (data, channel, sendBit) => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(data.length + constants_1.CRC_LENGTH);\n const magic = (0, utils_1.addSequenceBit)(constants_1.THP_HANDSHAKE_COMPLETION_REQUEST, sendBit);\n const message = Buffer.concat([magic, channel, length, data]);\n const crc = (0, crypto_1.crc32)(message);\n return Buffer.concat([message, crc]);\n};\nconst encodeThpMessage = (messageType, data, channel, thpState) => {\n if (messageType === 'ThpCreateChannelRequest') {\n return createChannelRequest(data, channel);\n }\n if (messageType === 'ThpHandshakeInitRequest') {\n return handshakeInitRequest(data, channel);\n }\n if (messageType === 'ThpHandshakeCompletionRequest') {\n return handshakeCompletionRequest(data, channel, thpState.sendBit || 0);\n }\n throw new Error(`Unknown Thp message type ${messageType}`);\n};\nconst encodeProtobufMessage = (messageType, data, channel, thpState) => {\n if (!thpState) {\n throw new Error('ThpStateMissing');\n }\n const length = Buffer.alloc(2);\n length.writeUInt16BE(1 + 2 + data.length + constants_1.TAG_LENGTH + constants_1.CRC_LENGTH);\n const magic = (0, utils_1.addSequenceBit)(constants_1.THP_CONTROL_BYTE_ENCRYPTED, thpState.sendBit);\n const header = Buffer.concat([magic, channel]);\n const messageTypeBytes = Buffer.alloc(2);\n messageTypeBytes.writeUInt16BE(messageType);\n const cipheredMessage = cipherMessage(thpState.handshakeCredentials.hostKey, thpState.sendNonce, Buffer.alloc(0), Buffer.concat([thpState.sessionId, messageTypeBytes, data]));\n const message = Buffer.concat([header, length, cipheredMessage]);\n const crc = (0, crypto_1.crc32)(message);\n return Buffer.concat([message, crc]);\n};\nexports.encodeProtobufMessage = encodeProtobufMessage;\nconst encodeAck = state => {\n const length = Buffer.alloc(2);\n length.writeUInt16BE(constants_1.CRC_LENGTH);\n const magic = (0, utils_1.addAckBit)(constants_1.THP_READ_ACK_HEADER_BYTE, state.recvAckBit);\n const message = Buffer.concat([magic, state.channel, length]);\n const crc = (0, crypto_1.crc32)(message);\n return Buffer.concat([message, crc]);\n};\nexports.encodeAck = encodeAck;\nconst encode = options => {\n if (!options.thpState) {\n throw new Error('ThpStateMissing');\n }\n const channel = options.thpState.channel || constants_1.THP_DEFAULT_CHANNEL;\n const {\n messageName,\n data,\n protobufEncoder,\n thpState\n } = options;\n let result;\n if ((0, utils_1.isThpMessageName)(messageName)) {\n const payload = (0, exports.encodePayload)(messageName, data, thpState);\n result = encodeThpMessage(messageName, payload, channel, options.thpState);\n } else {\n const {\n messageType,\n message\n } = protobufEncoder(messageName, data);\n result = (0, exports.encodeProtobufMessage)(messageType, message, channel, thpState);\n }\n return result;\n};\nexports.encode = encode;\n//# sourceMappingURL=encode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ThpState = void 0;\nconst messages_1 = require(\"./messages\");\nclass ThpState {\n _properties;\n _pairingCredentials = [];\n _phase = 'handshake';\n _isPaired = false;\n _pairingTagPromise;\n _cancelablePromise = false;\n _handshakeCredentials;\n _channel = Buffer.alloc(0);\n _sendBit = 0;\n _sendAckBit = 0;\n _sendNonce = 0;\n _recvBit = 0;\n _recvAckBit = 0;\n _recvNonce = 1;\n _expectedResponses = [];\n _selectedMethod;\n _nfcSecret;\n _sessionId = Buffer.alloc(1);\n _sessionIdCounter = 0;\n get pairingTagPromise() {\n return this._pairingTagPromise;\n }\n setPairingTagPromise(p) {\n this._pairingTagPromise = p;\n }\n get cancelablePromise() {\n return this._cancelablePromise;\n }\n setCancelablePromise(p) {\n this._cancelablePromise = p;\n }\n get properties() {\n return this._properties;\n }\n setThpProperties(props) {\n this._properties = props;\n }\n get phase() {\n return this._phase;\n }\n setPhase(phase) {\n this._phase = phase;\n }\n get isPaired() {\n return this._isPaired;\n }\n get isAutoconnectPaired() {\n return this._isPaired && this._pairingCredentials[0]?.autoconnect;\n }\n setIsPaired(isPaired) {\n this._isPaired = isPaired;\n }\n get pairingMethod() {\n return this._selectedMethod;\n }\n setPairingMethod(method) {\n this._selectedMethod = method;\n }\n get pairingCredentials() {\n return this._pairingCredentials;\n }\n setPairingCredentials(credentials) {\n if (credentials) {\n this._pairingCredentials.push(...credentials);\n } else {\n this._pairingCredentials = [];\n }\n }\n removePairingCredential({\n credential\n }) {\n const index = this._pairingCredentials.findIndex(c => c.credential === credential);\n if (index >= 0) this._pairingCredentials.splice(index, 1);\n }\n setNfcSecret(secret) {\n this._nfcSecret = secret;\n }\n get nfcSecret() {\n return this._nfcSecret;\n }\n get nfcData() {\n if (this._selectedMethod === messages_1.ThpPairingMethod.NFC && this._nfcSecret) {\n return Buffer.concat([this._nfcSecret, this.handshakeCredentials.handshakeHash.subarray(0, 16)]);\n }\n }\n get channel() {\n return this._channel;\n }\n setChannel(channel) {\n this._channel = channel;\n }\n get sendBit() {\n return this._sendBit;\n }\n get sendAckBit() {\n return this._sendAckBit;\n }\n get sendNonce() {\n return this._sendNonce;\n }\n get recvBit() {\n return this._recvBit;\n }\n get recvAckBit() {\n return this._recvAckBit;\n }\n get recvNonce() {\n return this._recvNonce;\n }\n updateAckBit(type) {\n if (type === 'send') {\n this._sendAckBit = this._sendAckBit > 0 ? 0 : 1;\n } else {\n this._recvAckBit = this._recvAckBit > 0 ? 0 : 1;\n }\n }\n updateSyncBit(type) {\n if (type === 'send') {\n this._sendBit = this._sendBit > 0 ? 0 : 1;\n } else {\n this._recvBit = this._recvBit > 0 ? 0 : 1;\n }\n }\n updateNonce(type) {\n if (type === 'send') {\n this._sendNonce += 1;\n } else {\n this._recvNonce += 1;\n }\n }\n sync(type, messageType) {\n const updateSyncBit = !['ThpCreateChannelRequest', 'ThpCreateChannelResponse'].includes(messageType);\n if (updateSyncBit) {\n this.updateAckBit(type);\n this.updateSyncBit(type);\n }\n const updateNonce = updateSyncBit && !['ThpHandshakeInitRequest', 'ThpHandshakeInitResponse', 'ThpHandshakeCompletionRequest', 'ThpHandshakeCompletionResponse'].includes(messageType);\n if (updateNonce) {\n this.updateNonce(type);\n }\n }\n get handshakeCredentials() {\n return this._handshakeCredentials;\n }\n updateHandshakeCredentials(newCredentials) {\n if (!this._handshakeCredentials) {\n this._handshakeCredentials = {\n pairingMethods: [],\n handshakeHash: Buffer.alloc(0),\n handshakeCommitment: Buffer.alloc(0),\n codeEntryChallenge: Buffer.alloc(0),\n trezorEncryptedStaticPubkey: Buffer.alloc(0),\n hostEncryptedStaticPubkey: Buffer.alloc(0),\n staticKey: Buffer.alloc(0),\n hostStaticPublicKey: Buffer.alloc(0),\n hostKey: Buffer.alloc(0),\n trezorKey: Buffer.alloc(0),\n trezorCpacePublicKey: Buffer.alloc(0)\n };\n }\n this._handshakeCredentials = {\n ...this._handshakeCredentials,\n ...newCredentials\n };\n }\n get sessionId() {\n return this._sessionId;\n }\n createNewSessionId() {\n this._sessionIdCounter++;\n if (this._sessionIdCounter > 255) {\n this._sessionIdCounter = 1;\n }\n const sessionId = Buffer.alloc(1);\n sessionId.writeUint8(this._sessionIdCounter, 0);\n this.setSessionId(sessionId);\n return sessionId;\n }\n setSessionId(sessionId) {\n this._sessionId = sessionId;\n }\n serialize() {\n return {\n properties: this._properties,\n channel: this.channel.toString('hex'),\n sendBit: this.sendBit,\n recvBit: this.recvBit,\n sendAckBit: this.sendAckBit,\n recvAckBit: this.recvAckBit,\n sendNonce: this.sendNonce,\n recvNonce: this.recvNonce,\n expectedResponses: this._expectedResponses.slice(0),\n credentials: this._pairingCredentials.slice(0)\n };\n }\n deserialize(json) {\n const error = new Error('ThpState.deserialize invalid state');\n if (!json || typeof json !== 'object') {\n throw error;\n }\n if (!Array.isArray(json.expectedResponses)) {\n throw error;\n }\n if (typeof json.channel !== 'string') {\n throw error;\n }\n [json.sendBit, json.recvBit, json.sendAckBit, json.recvAckBit, json.sendNonce, json.recvNonce, ...json.expectedResponses].forEach(nr => {\n if (typeof nr !== 'number') {\n throw error;\n }\n });\n this._channel = Buffer.from(json.channel, 'hex');\n this._expectedResponses = json.expectedResponses;\n this._sendBit = json.sendBit;\n this._recvBit = json.recvBit;\n this._sendAckBit = json.sendAckBit;\n this._recvAckBit = json.recvAckBit;\n this._sendNonce = json.sendNonce;\n this._recvNonce = json.recvNonce;\n }\n get expectedResponses() {\n return this._expectedResponses;\n }\n setExpectedResponses(expected) {\n this._expectedResponses = expected;\n }\n resetState() {\n this._phase = 'handshake';\n this._isPaired = false;\n this._pairingTagPromise = undefined;\n this._cancelablePromise = false;\n this._handshakeCredentials = undefined;\n this._channel = Buffer.alloc(0);\n this._sendBit = 0;\n this._sendAckBit = 0;\n this._sendNonce = 0;\n this._recvBit = 0;\n this._recvAckBit = 0;\n this._recvNonce = 1;\n this._expectedResponses = [];\n this._pairingCredentials = [];\n this._selectedMethod = undefined;\n this._nfcSecret = undefined;\n this._sessionId = Buffer.alloc(1);\n this._sessionIdCounter = 0;\n }\n toString() {\n return JSON.stringify(this.serialize());\n }\n}\nexports.ThpState = ThpState;\n//# sourceMappingURL=ThpState.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.name = exports.getThpPairingMethod = exports.getCurve25519KeyPair = exports.ThpState = exports.validateNfcTag = exports.validateQrCodeTag = exports.validateCodeEntryTag = exports.handleHandshakeInit = exports.getHandshakeHash = exports.getSharedSecret = exports.getCpaceHostKeys = exports.constants = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\ntslib_1.__exportStar(require(\"./encode\"), exports);\ntslib_1.__exportStar(require(\"./messages\"), exports);\ntslib_1.__exportStar(require(\"./utils\"), exports);\nexports.constants = tslib_1.__importStar(require(\"./constants\"));\nvar pairing_1 = require(\"./crypto/pairing\");\nObject.defineProperty(exports, \"getCpaceHostKeys\", {\n enumerable: true,\n get: function () {\n return pairing_1.getCpaceHostKeys;\n }\n});\nObject.defineProperty(exports, \"getSharedSecret\", {\n enumerable: true,\n get: function () {\n return pairing_1.getSharedSecret;\n }\n});\nObject.defineProperty(exports, \"getHandshakeHash\", {\n enumerable: true,\n get: function () {\n return pairing_1.getHandshakeHash;\n }\n});\nObject.defineProperty(exports, \"handleHandshakeInit\", {\n enumerable: true,\n get: function () {\n return pairing_1.handleHandshakeInit;\n }\n});\nObject.defineProperty(exports, \"validateCodeEntryTag\", {\n enumerable: true,\n get: function () {\n return pairing_1.validateCodeEntryTag;\n }\n});\nObject.defineProperty(exports, \"validateQrCodeTag\", {\n enumerable: true,\n get: function () {\n return pairing_1.validateQrCodeTag;\n }\n});\nObject.defineProperty(exports, \"validateNfcTag\", {\n enumerable: true,\n get: function () {\n return pairing_1.validateNfcTag;\n }\n});\nvar ThpState_1 = require(\"./ThpState\");\nObject.defineProperty(exports, \"ThpState\", {\n enumerable: true,\n get: function () {\n return ThpState_1.ThpState;\n }\n});\nvar curve25519_1 = require(\"./crypto/curve25519\");\nObject.defineProperty(exports, \"getCurve25519KeyPair\", {\n enumerable: true,\n get: function () {\n return curve25519_1.getCurve25519KeyPair;\n }\n});\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"getThpPairingMethod\", {\n enumerable: true,\n get: function () {\n return utils_1.getThpPairingMethod;\n }\n});\nexports.name = 'thp';\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = void 0;\nconst decode = bytes => {\n const byteBuffer = Buffer.from(bytes);\n const magic = byteBuffer.subarray(0, 5).toString('utf8');\n const definitionType = byteBuffer.readUInt8(5);\n const dataVersion = byteBuffer.readUInt32LE(6);\n const protobufLength = byteBuffer.readUInt16LE(10);\n const protobufPayload = byteBuffer.subarray(12, 12 + protobufLength);\n return {\n magic,\n definitionType,\n dataVersion,\n protobufLength,\n protobufPayload\n };\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TPN_VERSION = exports.MESSAGE_LENGTH = void 0;\nexports.MESSAGE_LENGTH = 3;\nexports.TPN_VERSION = 1;\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = exports.TrezorPushNotificationMode = exports.TrezorPushNotificationType = exports.Version = void 0;\nconst errors_1 = require(\"../errors\");\nconst constants_1 = require(\"./constants\");\nvar Version;\n(function (Version) {\n Version[Version[\"v1\"] = 1] = \"v1\";\n})(Version || (exports.Version = Version = {}));\nvar TrezorPushNotificationType;\n(function (TrezorPushNotificationType) {\n TrezorPushNotificationType[TrezorPushNotificationType[\"BOOT\"] = 0] = \"BOOT\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"UNLOCK\"] = 1] = \"UNLOCK\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"LOCK\"] = 2] = \"LOCK\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"DISCONNECT\"] = 3] = \"DISCONNECT\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"SETTING_CHANGE\"] = 4] = \"SETTING_CHANGE\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"SOFTLOCK\"] = 5] = \"SOFTLOCK\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"SOFTUNLOCK\"] = 6] = \"SOFTUNLOCK\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"PIN_CHANGE\"] = 7] = \"PIN_CHANGE\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"WIPE\"] = 8] = \"WIPE\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"UNPAIR\"] = 9] = \"UNPAIR\";\n TrezorPushNotificationType[TrezorPushNotificationType[\"NOTIFY_POWER_STATUS_CHANGE\"] = 10] = \"NOTIFY_POWER_STATUS_CHANGE\";\n})(TrezorPushNotificationType || (exports.TrezorPushNotificationType = TrezorPushNotificationType = {}));\nvar TrezorPushNotificationMode;\n(function (TrezorPushNotificationMode) {\n TrezorPushNotificationMode[TrezorPushNotificationMode[\"NormalMode\"] = 0] = \"NormalMode\";\n TrezorPushNotificationMode[TrezorPushNotificationMode[\"BootloaderMode\"] = 1] = \"BootloaderMode\";\n})(TrezorPushNotificationMode || (exports.TrezorPushNotificationMode = TrezorPushNotificationMode = {}));\nconst decode = message => {\n const [version, type, mode] = message;\n if (!version || version !== constants_1.TPN_VERSION) {\n return {\n success: false,\n error: errors_1.PROTOCOL_MISSMATCH_VERSION\n };\n }\n if (message.length < constants_1.MESSAGE_LENGTH || !Object.values(Version).includes(version) || !Object.values(TrezorPushNotificationType).includes(type) || !Object.values(TrezorPushNotificationMode).includes(mode)) {\n return {\n success: false,\n error: errors_1.PROTOCOL_MALFORMED\n };\n }\n return {\n success: true,\n payload: {\n type,\n mode\n }\n };\n};\nexports.decode = decode;\n//# sourceMappingURL=decode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./decode\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TrezorPushNotificationMode = exports.TrezorPushNotificationType = exports.ThpPairingMethod = void 0;\nvar messages_1 = require(\"./protocol-thp/messages\");\nObject.defineProperty(exports, \"ThpPairingMethod\", {\n enumerable: true,\n get: function () {\n return messages_1.ThpPairingMethod;\n }\n});\nvar index_1 = require(\"./protocol-tpn/index\");\nObject.defineProperty(exports, \"TrezorPushNotificationType\", {\n enumerable: true,\n get: function () {\n return index_1.TrezorPushNotificationType;\n }\n});\nObject.defineProperty(exports, \"TrezorPushNotificationMode\", {\n enumerable: true,\n get: function () {\n return index_1.TrezorPushNotificationMode;\n }\n});\n//# sourceMappingURL=types.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tpn = exports.trzd = exports.thp = exports.bridge = exports.v2 = exports.v1 = void 0;\nconst tslib_1 = require(\"tslib\");\nexports.v1 = tslib_1.__importStar(require(\"./protocol-v1\"));\nexports.v2 = tslib_1.__importStar(require(\"./protocol-v2\"));\nexports.bridge = tslib_1.__importStar(require(\"./protocol-bridge\"));\nexports.thp = tslib_1.__importStar(require(\"./protocol-thp\"));\nexports.trzd = tslib_1.__importStar(require(\"./protocol-trzd\"));\nexports.tpn = tslib_1.__importStar(require(\"./protocol-tpn\"));\ntslib_1.__exportStar(require(\"./errors\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=apiCall.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PathPublic = exports.PathInternal = exports.Session = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./apiCall\"), exports);\nconst Session = input => `${input}`;\nexports.Session = Session;\nconst PathInternal = input => input;\nexports.PathInternal = PathInternal;\nconst PathPublic = input => `${input}`;\nexports.PathPublic = PathPublic;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SessionsBackground = void 0;\nconst tslib_1 = require(\"tslib\");\nconst utils_1 = require(\"@trezor/utils\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst types_1 = require(\"../types\");\nconst lockDuration = 1000 * 4;\nclass SessionsBackground extends utils_1.TypedEmitter {\n descriptors = {};\n pathInternalPathPublicMap = {};\n locksQueue = [];\n locksTimeoutQueue = [];\n lastSessionId = 0;\n lastPathId = 0;\n async handleMessage(message) {\n let result;\n try {\n switch (message.type) {\n case 'handshake':\n result = this.handshake();\n break;\n case 'enumerateDone':\n result = await this.enumerateDone(message.payload);\n break;\n case 'acquireIntent':\n result = await this.acquireIntent(message.payload);\n break;\n case 'acquireDone':\n result = await this.acquireDone(message.payload);\n break;\n case 'getSessions':\n result = await this.getSessions();\n break;\n case 'releaseIntent':\n result = await this.releaseIntent(message.payload);\n break;\n case 'releaseDone':\n result = await this.releaseDone(message.payload);\n break;\n case 'getPathBySession':\n result = this.getPathBySession(message.payload);\n break;\n case 'dispose':\n this.dispose();\n break;\n default:\n throw new Error(ERRORS.UNEXPECTED_ERROR);\n }\n result = JSON.parse(JSON.stringify({\n ...result,\n id: message.id\n }));\n return result;\n } catch (err) {\n console.error('Session background error', err);\n return {\n ...this.error(ERRORS.UNEXPECTED_ERROR),\n id: message.type\n };\n } finally {\n if (result && result.success && result.payload) {\n if ('descriptors' in result.payload) {\n const {\n descriptors\n } = result.payload;\n this.emit('descriptors', descriptors);\n }\n if ('releaseRequest' in result.payload && result.payload.releaseRequest) {\n const {\n releaseRequest\n } = result.payload;\n this.emit('releaseRequest', releaseRequest);\n }\n }\n }\n }\n handshake() {\n return this.success(undefined);\n }\n enumerateDone(payload) {\n const disconnectedDevices = (0, utils_1.typedObjectKeys)(this.descriptors).filter(pathInternal => !payload.descriptors.find(d => d.path === pathInternal));\n disconnectedDevices.forEach(d => {\n delete this.descriptors[d];\n delete this.pathInternalPathPublicMap[d];\n });\n payload.descriptors.forEach(d => {\n if (!this.pathInternalPathPublicMap[d.path]) {\n this.pathInternalPathPublicMap[d.path] = (0, types_1.PathPublic)(`${this.lastPathId += 1}`);\n }\n if (!this.descriptors[d.path]) {\n this.descriptors[d.path] = {\n ...d,\n path: this.pathInternalPathPublicMap[d.path],\n session: null,\n apiType: d.apiType\n };\n }\n });\n return Promise.resolve(this.success({\n descriptors: Object.values(this.descriptors)\n }));\n }\n async acquireIntent(payload) {\n const pathInternal = this.getInternal(payload.path);\n if (!pathInternal) {\n return this.error(ERRORS.DEVICE_NOT_FOUND);\n }\n const previous = this.descriptors[pathInternal];\n if (!previous) {\n return this.error(ERRORS.DEVICE_NOT_FOUND);\n }\n if (payload.previous !== previous.session) {\n return this.error(ERRORS.SESSION_WRONG_PREVIOUS);\n }\n await this.waitInQueue();\n if (previous.session !== this.descriptors[pathInternal]?.session) {\n this.clearLock();\n return this.error(ERRORS.SESSION_WRONG_PREVIOUS);\n }\n this.lastSessionId++;\n const session = (0, types_1.Session)(`${this.lastSessionId}`);\n const releaseRequest = previous.session !== null ? this.descriptors[pathInternal] : undefined;\n return this.success({\n session,\n path: pathInternal,\n releaseRequest\n });\n }\n acquireDone(payload) {\n this.clearLock();\n const pathInternal = this.getInternal(payload.path);\n if (!pathInternal || !this.descriptors[pathInternal]) {\n return this.error(ERRORS.DEVICE_NOT_FOUND);\n }\n this.descriptors[pathInternal].session = (0, types_1.Session)(`${this.lastSessionId}`);\n this.descriptors[pathInternal].sessionOwner = payload.sessionOwner;\n return Promise.resolve(this.success({\n descriptors: Object.values(this.descriptors)\n }));\n }\n async releaseIntent(payload) {\n const pathResult = this.getPathBySession({\n session: payload.session\n });\n if (!pathResult.success) {\n return pathResult;\n }\n const {\n path\n } = pathResult.payload;\n await this.waitInQueue();\n return this.success({\n path\n });\n }\n releaseDone(payload) {\n this.descriptors[payload.path].session = null;\n this.descriptors[payload.path].sessionOwner = undefined;\n this.clearLock();\n return Promise.resolve(this.success({\n descriptors: Object.values(this.descriptors)\n }));\n }\n getSessions() {\n return Promise.resolve(this.success({\n descriptors: Object.values(this.descriptors)\n }));\n }\n getPathBySession({\n session\n }) {\n const path = (0, utils_1.typedObjectKeys)(this.descriptors).find(pathKey => this.descriptors[pathKey]?.session === session);\n if (!path) {\n return this.error(ERRORS.SESSION_NOT_FOUND);\n }\n return this.success({\n path\n });\n }\n startLock() {\n const dfd = (0, utils_1.createDeferred)();\n const timeout = setTimeout(() => {\n dfd.resolve(undefined);\n }, lockDuration);\n this.locksQueue.push({\n id: timeout,\n dfd\n });\n this.locksTimeoutQueue.push(timeout);\n return this.locksQueue.length - 1;\n }\n clearLock() {\n const lock = this.locksQueue[0];\n if (lock) {\n this.locksQueue[0].dfd.resolve(undefined);\n this.locksQueue.shift();\n clearTimeout(this.locksTimeoutQueue[0]);\n this.locksTimeoutQueue.shift();\n }\n }\n async waitForUnlocked(myIndex) {\n if (myIndex > 0) {\n const beforeMe = this.locksQueue.slice(0, myIndex);\n if (beforeMe.length) {\n await Promise.all(beforeMe.map(lock => lock.dfd.promise));\n }\n }\n }\n async waitInQueue() {\n const myIndex = this.startLock();\n await this.waitForUnlocked(myIndex);\n }\n success(payload) {\n return {\n success: true,\n payload\n };\n }\n error(error) {\n return {\n success: false,\n error\n };\n }\n getInternal(pathPublic) {\n return (0, utils_1.typedObjectKeys)(this.pathInternalPathPublicMap).find(internal => this.pathInternalPathPublicMap[internal] === pathPublic);\n }\n dispose() {\n this.locksQueue.forEach(lock => clearTimeout(lock.id));\n this.locksTimeoutQueue.forEach(timeout => clearTimeout(timeout));\n this.descriptors = {};\n this.lastSessionId = 0;\n this.removeAllListeners();\n }\n}\nexports.SessionsBackground = SessionsBackground;\n//# sourceMappingURL=background.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SessionsClient = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nclass SessionsClient extends utils_1.TypedEmitter {\n caller = (0, utils_1.getWeakRandomId)(3);\n id;\n background;\n constructor(background) {\n super();\n this.id = 0;\n this.background = background;\n background.on('descriptors', descriptors => this.emit('descriptors', descriptors));\n background.on('releaseRequest', descriptor => this.emit('releaseRequest', descriptor));\n }\n setBackground(background) {\n this.background.dispose();\n this.id = 0;\n this.background = background;\n background.on('descriptors', descriptors => this.emit('descriptors', descriptors));\n background.on('releaseRequest', descriptor => this.emit('releaseRequest', descriptor));\n }\n request(params) {\n return this.background.handleMessage({\n ...params,\n caller: this.caller,\n id: this.id++\n });\n }\n handshake() {\n return this.request({\n type: 'handshake'\n });\n }\n enumerateDone(payload) {\n return this.request({\n type: 'enumerateDone',\n payload\n });\n }\n acquireIntent(payload) {\n return this.request({\n type: 'acquireIntent',\n payload\n });\n }\n acquireDone(payload) {\n return this.request({\n type: 'acquireDone',\n payload\n });\n }\n releaseIntent(payload) {\n return this.request({\n type: 'releaseIntent',\n payload\n });\n }\n releaseDone(payload) {\n return this.request({\n type: 'releaseDone',\n payload\n });\n }\n getSessions() {\n return this.request({\n type: 'getSessions'\n });\n }\n getPathBySession(payload) {\n return this.request({\n type: 'getPathBySession',\n payload\n });\n }\n dispose() {\n this.removeAllListeners('descriptors');\n return this.request({\n type: 'dispose'\n });\n }\n}\nexports.SessionsClient = SessionsClient;\n//# sourceMappingURL=client.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readWithExpectedHeaders = readWithExpectedHeaders;\nconst protocol_1 = require(\"@trezor/protocol\");\nconst utils_1 = require(\"@trezor/utils\");\nconst result_1 = require(\"./result\");\nconst ATTEMPT_ERROR = 'Unexpected chunk';\nasync function readAndAssert(receiver, thpState, {\n signal,\n logger\n} = {}) {\n logger?.debug('readAndAssert start');\n const chunk = await receiver(signal);\n if (!chunk.success) {\n return chunk;\n }\n const expectedHeaders = thpState ? protocol_1.thp.getExpectedHeaders(thpState) : [];\n if (expectedHeaders.length === 0) {\n logger?.debug('readAndAssert skip');\n return chunk;\n }\n const bytes = chunk.payload;\n const expected = expectedHeaders.find(header => header.length <= bytes.length && bytes.subarray(0, header.length).compare(header) === 0);\n if (expected) {\n logger?.debug('readAndAssert done');\n return (0, result_1.success)(chunk.payload);\n }\n logger?.warn(`readAndAssert unexpected header`);\n throw new Error(ATTEMPT_ERROR);\n}\nfunction readWithExpectedHeaders(receiver, options = {}) {\n return (thpState, signal) => (0, utils_1.scheduleAction)(attemptSignal => readAndAssert(receiver, thpState, {\n ...options,\n signal: attemptSignal\n }), {\n signal: signal ?? options?.signal,\n graceful: options?.graceful,\n attempts: options?.attempts || Infinity,\n timeout: options?.timeout,\n attemptFailureHandler: error => {\n if (error.message !== ATTEMPT_ERROR) {\n options.logger?.debug(`readAndAssert attempt error ${error.message}`);\n return error;\n }\n }\n });\n}\n//# sourceMappingURL=readWithExpectedHeaders.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.receive = receive;\nexports.receiveAndParse = receiveAndParse;\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst result_1 = require(\"./result\");\nasync function receive(receiver, protocol) {\n const readResult = await receiver();\n if (!readResult.success) {\n return readResult;\n }\n const data = readResult.payload;\n const {\n length,\n messageType,\n payload,\n header\n } = protocol.decode(data);\n const result = Buffer.alloc(length);\n const [, chunkHeader] = protocol.getHeaders(Buffer.from(data));\n payload.copy(result);\n let offset = payload.length;\n while (offset < length) {\n const readResult = await receiver();\n if (!readResult.success) {\n return readResult;\n }\n const data = readResult.payload;\n const dataChunkHeader = data.subarray(0, chunkHeader.length);\n if (dataChunkHeader.compare(chunkHeader) !== 0) {\n throw new Error(`Unexpected chunkHeader ${dataChunkHeader.toString('hex')}`);\n }\n Buffer.from(data).copy(result, offset, chunkHeader.byteLength);\n offset += data.byteLength - chunkHeader.byteLength;\n }\n return (0, result_1.success)({\n messageType,\n payload: result,\n header,\n length\n });\n}\nasync function receiveAndParse(messages, receiver, protocol) {\n const readResult = await receive(receiver, protocol);\n if (!readResult.success) return readResult;\n const {\n messageType,\n payload\n } = readResult.payload;\n const message = (0, protobuf_1.decodeMessage)(messages, messageType, payload);\n return (0, result_1.success)(message);\n}\n//# sourceMappingURL=receive.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseThpMessage = exports.receiveThpMessage = void 0;\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst readWithExpectedHeaders_1 = require(\"../utils/readWithExpectedHeaders\");\nconst receive_1 = require(\"../utils/receive\");\nconst result_1 = require(\"../utils/result\");\nconst receiveThpMessage = async ({\n thpState,\n skipAck,\n apiRead,\n apiWrite,\n signal,\n graceful,\n logger\n}) => {\n if (!thpState) {\n return (0, result_1.error)({\n error: 'ThpStateMissing'\n });\n }\n logger?.debug(`receiveThpMessage start ${thpState.expectedResponses}`);\n try {\n const apiReadWithExpectedHeaders = (0, readWithExpectedHeaders_1.readWithExpectedHeaders)(apiRead, {\n signal,\n graceful,\n logger\n });\n const message = await (0, receive_1.receive)(() => apiReadWithExpectedHeaders(thpState), protocol_1.v2);\n if (!message.success) {\n return message;\n }\n const isAckExpected = protocol_1.thp.isAckExpected(thpState.expectedResponses || []);\n if (!skipAck && isAckExpected) {\n const chunk = protocol_1.thp.encodeAck(thpState);\n logger?.debug(`receiveThpMessage send ThpAck`);\n const ackResult = await apiWrite(chunk, signal);\n if (!ackResult.success) {\n return ackResult;\n }\n }\n logger?.debug(`receiveThpMessage done`);\n return message;\n } catch (err) {\n logger?.error(`receiveThpMessage error ${err.message}`);\n return (0, result_1.error)({\n error: err.code,\n message: err.message\n });\n }\n};\nexports.receiveThpMessage = receiveThpMessage;\nconst parseThpMessage = ({\n decoded,\n messages,\n thpState\n}) => {\n const message = protocol_1.thp.decode(decoded, (messageType, data) => (0, protobuf_1.decodeMessage)(messages, messageType, data), thpState);\n return message;\n};\nexports.parseThpMessage = parseThpMessage;\n//# sourceMappingURL=receive.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendChunks = exports.buildMessage = exports.createChunks = void 0;\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst createChunks = (data, chunkHeader, chunkSize) => {\n if (!chunkSize || data.byteLength <= chunkSize) {\n const buffer = Buffer.alloc(Math.max(chunkSize, data.byteLength));\n data.copy(buffer);\n return [buffer];\n }\n const chunks = [data.subarray(0, chunkSize)];\n let position = chunkSize;\n while (position < data.byteLength) {\n const sliceEnd = Math.min(position + chunkSize - chunkHeader.byteLength, data.byteLength);\n const slice = data.subarray(position, sliceEnd);\n const chunk = Buffer.concat([chunkHeader, slice]);\n chunks.push(Buffer.alloc(chunkSize).fill(chunk, 0, chunk.byteLength));\n position = sliceEnd;\n }\n return chunks;\n};\nexports.createChunks = createChunks;\nconst buildMessage = ({\n messages,\n name,\n data,\n protocol,\n thpState\n}) => {\n const protobufEncoder = (messageName, data) => {\n const {\n messageType,\n message\n } = (0, protobuf_1.encodeMessage)(messages, messageName, data);\n return protocol.encode(message, {\n messageType\n });\n };\n if (protocol.name === 'v2') {\n return protocol_1.thp.encode({\n messageName: name,\n data,\n thpState,\n protobufEncoder: (messageName, data) => (0, protobuf_1.encodeMessage)(messages, messageName, data)\n });\n }\n return protobufEncoder(name, data);\n};\nexports.buildMessage = buildMessage;\nconst sendChunks = async (chunks, apiWrite) => {\n for (let i = 0; i < chunks.length; i++) {\n const result = await apiWrite(chunks[i]);\n if (!result.success) {\n return result;\n }\n }\n return {\n success: true,\n payload: undefined\n };\n};\nexports.sendChunks = sendChunks;\n//# sourceMappingURL=send.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sendThpMessage = void 0;\nconst protocol_1 = require(\"@trezor/protocol\");\nconst utils_1 = require(\"@trezor/utils\");\nconst readWithExpectedHeaders_1 = require(\"../utils/readWithExpectedHeaders\");\nconst result_1 = require(\"../utils/result\");\nconst send_1 = require(\"../utils/send\");\nconst ATTEMPTS_LIMIT = 10;\nconst THP_ACK_DEADLINE = 30_000;\nconst sendThpMessage = async ({\n thpState,\n skipAck,\n chunks,\n apiWrite,\n apiRead,\n signal,\n graceful,\n logger\n}) => {\n if (!thpState) {\n return (0, result_1.error)({\n error: 'ThpStateMissing'\n });\n }\n const expectedResponses = protocol_1.thp.getExpectedResponses(chunks[0]);\n const isAckExpected = protocol_1.thp.isAckExpected(chunks[0]);\n if (skipAck || !isAckExpected || expectedResponses.length === 0) {\n const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite);\n if (!sendResult.success) {\n return sendResult;\n }\n thpState.setExpectedResponses(expectedResponses);\n return sendResult;\n }\n thpState.setExpectedResponses([0x20]);\n let attempt = 0;\n const apiReadWithExpectedHeaders = (0, readWithExpectedHeaders_1.readWithExpectedHeaders)(apiRead, {\n signal,\n graceful,\n logger\n });\n try {\n const result = await (0, utils_1.scheduleAction)(async attemptSignal => {\n logger?.debug(`sendThpMessage attempt ${attempt} start`);\n const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite);\n logger?.debug(`sendThpMessage success: ${sendResult.success}`);\n if (!sendResult.success) {\n return sendResult;\n }\n logger?.debug(`sendThpMessage read ThpAck`);\n return (0, utils_1.scheduleAction)(signal => apiReadWithExpectedHeaders(thpState, signal), {\n signal: attemptSignal,\n graceful,\n deadline: Date.now() + THP_ACK_DEADLINE\n });\n }, {\n signal,\n attempts: ATTEMPTS_LIMIT,\n attemptFailureHandler: error => {\n if (error.message !== 'Aborted by deadline') {\n logger?.error(`sendThpMessage error ${error.message}`);\n return error;\n }\n attempt++;\n logger?.debug(`sendThpMessage retransmission ${attempt} start`);\n }\n });\n if (!result.success) {\n return result;\n }\n const decodedResult = protocol_1.thp.decodeSendAck(protocol_1.v2.decode(result.payload));\n if (decodedResult?.type === 'ThpError') {\n const {\n code,\n message\n } = decodedResult.message;\n return (0, result_1.error)({\n error: code,\n message\n });\n }\n logger?.debug('sendThpMessage done');\n thpState.setExpectedResponses(expectedResponses);\n return (0, result_1.success)(undefined);\n } catch (err) {\n logger?.error(`sendThpMessage error ${err.message}`);\n return (0, result_1.error)({\n error: err.code,\n message: err.message\n });\n }\n};\nexports.sendThpMessage = sendThpMessage;\n//# sourceMappingURL=send.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.callThpMessage = void 0;\nconst receive_1 = require(\"./receive\");\nconst send_1 = require(\"./send\");\nconst callThpMessage = async ({\n thpState,\n chunks,\n apiWrite,\n apiRead,\n signal,\n graceful,\n logger\n}) => {\n const sendResult = await (0, send_1.sendThpMessage)({\n chunks,\n thpState,\n apiWrite,\n apiRead,\n signal,\n graceful,\n logger\n });\n if (!sendResult.success) {\n return sendResult;\n }\n const receiveResult = await (0, receive_1.receiveThpMessage)({\n thpState,\n apiWrite,\n apiRead,\n signal,\n graceful,\n logger\n });\n return receiveResult;\n};\nexports.callThpMessage = callThpMessage;\n//# sourceMappingURL=call.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.callThpMessage = exports.sendThpMessage = exports.parseThpMessage = exports.receiveThpMessage = void 0;\nvar receive_1 = require(\"./receive\");\nObject.defineProperty(exports, \"receiveThpMessage\", {\n enumerable: true,\n get: function () {\n return receive_1.receiveThpMessage;\n }\n});\nObject.defineProperty(exports, \"parseThpMessage\", {\n enumerable: true,\n get: function () {\n return receive_1.parseThpMessage;\n }\n});\nvar send_1 = require(\"./send\");\nObject.defineProperty(exports, \"sendThpMessage\", {\n enumerable: true,\n get: function () {\n return send_1.sendThpMessage;\n }\n});\nvar call_1 = require(\"./call\");\nObject.defineProperty(exports, \"callThpMessage\", {\n enumerable: true,\n get: function () {\n return call_1.callThpMessage;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractApiTransport = void 0;\nconst tslib_1 = require(\"tslib\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst abstract_1 = require(\"./abstract\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst background_1 = require(\"../sessions/background\");\nconst client_1 = require(\"../sessions/client\");\nconst thp_1 = require(\"../thp\");\nconst receive_1 = require(\"../utils/receive\");\nconst send_1 = require(\"../utils/send\");\nclass AbstractApiTransport extends abstract_1.AbstractTransport {\n sessionsClient;\n sessionsBackground;\n api;\n constructor({\n api,\n ...rest\n }) {\n super(rest);\n this.api = api;\n this.sessionsBackground = new background_1.SessionsBackground();\n this.sessionsClient = new client_1.SessionsClient(this.sessionsBackground);\n }\n get apiType() {\n return this.api.type;\n }\n init({\n signal\n } = {}) {\n return this.scheduleAction(async () => {\n this.sessionsClient.setBackground(this.sessionsBackground);\n const handshakeRes = await this.sessionsClient.handshake();\n this.stopped = !handshakeRes.success;\n return handshakeRes;\n }, {\n signal\n });\n }\n listen() {\n if (this.listening) {\n return this.error({\n error: ERRORS.ALREADY_LISTENING\n });\n }\n this.api.listen();\n this.listening = true;\n this.api.on('transport-interface-change', descriptors => {\n this.logger?.debug('new descriptors from api', descriptors);\n this.sessionsClient.enumerateDone({\n descriptors\n });\n });\n this.sessionsClient.on('descriptors', descriptors => {\n this.logger?.debug('new descriptors from background', descriptors);\n this.handleDescriptorsChange(descriptors);\n });\n this.sessionsClient.on('releaseRequest', descriptor => {\n this.deviceEvents.emit(descriptor.path, {\n type: constants_1.TRANSPORT.DEVICE_REQUEST_RELEASE\n });\n });\n return this.success(undefined);\n }\n enumerate({\n signal\n } = {}) {\n return this.scheduleAction(async signal => {\n const enumerateResult = await this.api.enumerate(signal);\n if (!enumerateResult.success) {\n return enumerateResult;\n }\n const descriptors = enumerateResult.payload;\n const enumerateDoneResponse = await this.sessionsClient.enumerateDone({\n descriptors\n });\n return this.success(enumerateDoneResponse.payload.descriptors);\n }, {\n signal\n });\n }\n acquire({\n input,\n signal\n }) {\n return this.scheduleAction(async signal => {\n const {\n path\n } = input;\n const acquireIntentResponse = await this.sessionsClient.acquireIntent(input);\n if (!acquireIntentResponse.success) {\n return this.error({\n error: acquireIntentResponse.error\n });\n }\n const reset = !!input.previous;\n const openDeviceResult = await this.api.openDevice(acquireIntentResponse.payload.path, {\n reset,\n signal,\n channel: 'read'\n });\n if (!openDeviceResult.success) {\n return openDeviceResult;\n }\n this.sessionsClient.acquireDone({\n path,\n sessionOwner: this.id\n });\n return this.success(acquireIntentResponse.payload.session);\n }, {\n signal\n }, [ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.SESSION_WRONG_PREVIOUS]);\n }\n subscribe({\n path,\n channels,\n signal\n }) {\n return this.scheduleAction(async signal => {\n const entries = await Promise.all(channels.map(async channel => {\n try {\n const res = await this.api.openDevice(path, {\n reset: false,\n signal,\n channel\n });\n return [channel, res.success];\n } catch {\n return [channel, false];\n }\n }));\n const map = Object.fromEntries(entries);\n return this.success(map);\n }, {\n signal\n });\n }\n release({\n path: _,\n session,\n signal\n }) {\n return this.scheduleAction(async () => {\n const releaseIntentResponse = await this.sessionsClient.releaseIntent({\n session\n });\n if (!releaseIntentResponse.success) {\n return this.error({\n error: releaseIntentResponse.error\n });\n }\n await this.api.closeDevice(releaseIntentResponse.payload.path, {\n channel: 'read'\n });\n await this.sessionsClient.releaseDone({\n path: releaseIntentResponse.payload.path\n });\n return this.success(null);\n }, {\n signal\n });\n }\n releaseSync(session) {\n this.sessionsClient.releaseIntent({\n session\n }).then(res => {\n if (res.success) this.api.closeDevice(res.payload.path, {\n channel: 'read'\n });\n });\n }\n call({\n session,\n name,\n data,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const handleError = error => {\n if (error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) {\n this.enumerate();\n }\n };\n const getPathBySessionResponse = await this.sessionsClient.getPathBySession({\n session\n });\n if (!getPathBySessionResponse.success) {\n if (getPathBySessionResponse.error === 'session not found') {\n return this.error({\n error: ERRORS.DEVICE_DISCONNECTED_DURING_ACTION\n });\n }\n return this.error({\n error: ERRORS.UNEXPECTED_ERROR\n });\n }\n const {\n path\n } = getPathBySessionResponse.payload;\n const protocol = customProtocol || protocol_1.v1;\n const bytes = (0, send_1.buildMessage)({\n messages: this.messages,\n name,\n data,\n protocol,\n thpState\n });\n const [, chunkHeader] = protocol.getHeaders(bytes);\n const chunks = (0, send_1.createChunks)(bytes, chunkHeader, this.api.chunkSize);\n let progress = 0;\n const apiWrite = (chunk, attemptSignal) => {\n if (chunks.length > 1) {\n progress++;\n this.emit(constants_1.TRANSPORT.SEND_MESSAGE_PROGRESS, progress / chunks.length);\n }\n return this.api.write(path, chunk, attemptSignal || signal);\n };\n const apiRead = attemptSignal => this.api.read(path, attemptSignal || signal);\n if (protocol.name === 'v2') {\n const prevNonce = thpState?.sendNonce;\n const callResult = await (0, thp_1.callThpMessage)({\n thpState,\n chunks,\n apiWrite,\n apiRead,\n signal,\n graceful: true,\n logger: this.logger\n });\n if (!callResult.success) {\n handleError(callResult.error);\n return callResult;\n }\n if (prevNonce === thpState?.sendNonce) {\n thpState?.sync('send', name);\n }\n const message = (0, thp_1.parseThpMessage)({\n messages: this.messages,\n decoded: callResult.payload,\n thpState\n });\n thpState?.sync('recv', message.type);\n return this.success(message);\n }\n const sendResult = await (0, send_1.sendChunks)(chunks, apiWrite);\n if (!sendResult.success) {\n handleError(sendResult.error);\n return sendResult;\n }\n const readResult = await (0, receive_1.receiveAndParse)(this.messages, apiRead, protocol);\n if (!readResult.success) {\n handleError(readResult.error);\n return readResult;\n }\n return readResult;\n }, {\n signal,\n graceful: true,\n timeout\n });\n }\n send({\n data,\n session,\n name,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const getPathBySessionResponse = await this.sessionsClient.getPathBySession({\n session\n });\n if (!getPathBySessionResponse.success) {\n return this.error({\n error: getPathBySessionResponse.error\n });\n }\n const {\n path\n } = getPathBySessionResponse.payload;\n const protocol = customProtocol || protocol_1.v1;\n const bytes = (0, send_1.buildMessage)({\n messages: this.messages,\n name,\n data,\n protocol,\n thpState\n });\n const [_, chunkHeader] = protocol.getHeaders(bytes);\n const chunks = (0, send_1.createChunks)(bytes, chunkHeader, this.api.chunkSize);\n let progress = 0;\n const apiWrite = chunk => {\n if (chunks.length > 1) {\n progress++;\n this.emit(constants_1.TRANSPORT.SEND_MESSAGE_PROGRESS, progress / chunks.length);\n }\n return this.api.write(path, chunk, signal);\n };\n let sendResult;\n if (protocol.name === 'v2') {\n sendResult = await (0, thp_1.sendThpMessage)({\n thpState,\n skipAck: true,\n chunks,\n apiWrite,\n apiRead: attemptSignal => this.api.read(path, attemptSignal || signal),\n signal,\n graceful: true,\n logger: this.logger\n });\n thpState?.sync('send', name);\n } else {\n sendResult = await (0, send_1.sendChunks)(chunks, apiWrite);\n }\n if (!sendResult.success) {\n if (sendResult.error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) {\n this.enumerate();\n }\n }\n return sendResult;\n }, {\n signal,\n graceful: true,\n timeout\n });\n }\n receive({\n session,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const getPathBySessionResponse = await this.sessionsClient.getPathBySession({\n session\n });\n if (!getPathBySessionResponse.success) {\n return this.error({\n error: getPathBySessionResponse.error\n });\n }\n const {\n path\n } = getPathBySessionResponse.payload;\n const apiRead = attemptSignal => this.api.read(path, attemptSignal || signal);\n const protocol = customProtocol || protocol_1.v1;\n if (protocol.name === 'v2') {\n const decoded = await (0, thp_1.receiveThpMessage)({\n thpState,\n skipAck: true,\n apiWrite: (chunk, attemptSignal) => this.api.write(path, chunk, attemptSignal || signal),\n apiRead,\n signal,\n graceful: true,\n logger: this.logger\n });\n if (!decoded.success) {\n return decoded;\n }\n const message = (0, thp_1.parseThpMessage)({\n messages: this.messages,\n decoded: decoded.payload,\n thpState\n });\n return this.success(message);\n }\n const message = await (0, receive_1.receiveAndParse)(this.messages, apiRead, protocol);\n if (!message.success) {\n if (message.error === ERRORS.DEVICE_DISCONNECTED_DURING_ACTION) {\n this.enumerate();\n }\n }\n return message;\n }, {\n signal,\n graceful: true,\n timeout\n });\n }\n releaseDevice(session) {\n return this.sessionsClient.getPathBySession({\n session\n }).then(response => {\n if (response.success) {\n return this.api.closeDevice(response.payload.path, {\n channel: 'read'\n });\n }\n return this.success(undefined);\n });\n }\n stop() {\n if (!this.stopped) {\n this.api.once('transport-interface-change', () => {\n this.logger?.debug('device connected after transport stopped, goodbye...');\n });\n }\n super.stop();\n this.api.dispose();\n }\n}\nexports.AbstractApiTransport = AbstractApiTransport;\n//# sourceMappingURL=abstractApi.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractApi = void 0;\nconst tslib_1 = require(\"tslib\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst result_1 = require(\"../utils/result\");\nclass AbstractApi extends utils_1.TypedEmitter {\n logger;\n listening = false;\n lock = {};\n type;\n constructor({\n logger,\n type\n }) {\n super();\n this.type = type;\n this.logger = logger;\n }\n success(payload) {\n return (0, result_1.success)(payload);\n }\n error(payload) {\n return (0, result_1.error)(payload);\n }\n unknownError(err, expectedErrors = []) {\n this.logger?.error('transport: abstract api: unknown error', err);\n return (0, result_1.unknownError)(err, expectedErrors);\n }\n synchronize = (0, utils_1.getSynchronize)();\n requestAccess({\n lock,\n path\n }) {\n if (!this.lock[path]) {\n this.lock[path] = {\n read: false,\n write: false\n };\n }\n if (this.lock[path].read && lock.read || this.lock[path].write && lock.write) {\n return this.error({\n error: ERRORS.OTHER_CALL_IN_PROGRESS\n });\n }\n this.lock[path] = {\n read: this.lock[path].read || lock.read,\n write: this.lock[path].write || lock.write\n };\n return this.success(undefined);\n }\n runInIsolation = async ({\n lock,\n path\n }, fn) => {\n const accessRes = this.requestAccess({\n lock,\n path\n });\n if (!accessRes.success) {\n return accessRes;\n }\n try {\n return await this.synchronize(fn);\n } catch (err) {\n this.logger?.error('transport: abstract api: runInIsolation error', err);\n return this.unknownError(err);\n } finally {\n this.lock[path] = {\n read: lock.read ? false : this.lock[path].read,\n write: lock.write ? false : this.lock[path].write\n };\n }\n };\n}\nexports.AbstractApi = AbstractApi;\n//# sourceMappingURL=abstract.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UsbApi = void 0;\nconst tslib_1 = require(\"tslib\");\nconst utils_1 = require(\"@trezor/utils\");\nconst abstract_1 = require(\"./abstract\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst types_1 = require(\"../types\");\nclass UsbApi extends abstract_1.AbstractApi {\n chunkSize = 64;\n devices = [];\n usbInterface;\n forceReadSerialOnConnect;\n abortController = new AbortController();\n debugLink;\n synchronizeCreateDevices = (0, utils_1.getSynchronize)();\n synchronizeGetDevices = (0, utils_1.getSynchronize)();\n synchronizeResetDevice = (0, utils_1.getSynchronize)();\n deviceResetMap = {};\n devicePendingTransferIn = new Map();\n constructor({\n usbInterface,\n logger,\n forceReadSerialOnConnect,\n debugLink\n }) {\n super({\n logger,\n type: 'usb'\n });\n this.usbInterface = usbInterface;\n this.forceReadSerialOnConnect = forceReadSerialOnConnect;\n this.debugLink = debugLink;\n }\n listen() {\n this.usbInterface.onconnect = async event => {\n this.logger?.debug(`usb: onconnect: ${this.formatDeviceForLog(event.device)}`);\n if (event.device.opened) {\n this.logger?.debug('usb: onconnect: device already opened, closing');\n await event.device.close();\n }\n return this.createDevices([event.device], this.abortController.signal).then(newDevices => {\n this.devices = [...this.devices, ...newDevices];\n this.emit('transport-interface-change', this.devicesToDescriptors());\n }).catch(err => {\n this.logger?.error(`usb: createDevices error: ${err.message}`);\n });\n };\n this.usbInterface.ondisconnect = event => {\n const {\n device\n } = event;\n if (!device.serialNumber) {\n this.logger?.debug(`usb: ondisconnect: device without serial number:, ${device.productName}, ${device.manufacturerName}`);\n return this.enumerate();\n }\n const index = this.devices.findIndex(d => d.path === device.serialNumber);\n if (index > -1) {\n this.devices.splice(index, 1);\n this.emit('transport-interface-change', this.devicesToDescriptors());\n } else {\n this.logger?.error('usb: device that should be removed does not exist in state');\n }\n };\n }\n formatDeviceForLog(device) {\n return JSON.stringify({\n productName: device.productName,\n manufacturerName: device.manufacturerName,\n serialNumber: device.serialNumber,\n vendorId: device.vendorId,\n productId: device.productId,\n deviceVersionMajor: device.deviceVersionMajor,\n deviceVersionMinor: device.deviceVersionMinor,\n opened: device.opened\n });\n }\n matchDeviceType(device) {\n const isBootloader = device.productId === constants_1.WEBUSB_BOOTLOADER_PRODUCT;\n if (device.deviceVersionMajor === 2) {\n if (isBootloader) {\n return constants_1.DEVICE_TYPE.TypeT2Boot;\n } else {\n return constants_1.DEVICE_TYPE.TypeT2;\n }\n } else {\n if (isBootloader) {\n return constants_1.DEVICE_TYPE.TypeT1WebusbBoot;\n } else if (device.vendorId === constants_1.T1_HID_VENDOR && device.productId === constants_1.T1_HID_PRODUCT) {\n return constants_1.DEVICE_TYPE.TypeT1Hid;\n } else {\n return constants_1.DEVICE_TYPE.TypeT1Webusb;\n }\n }\n }\n devicesToDescriptors() {\n return this.devices.map(d => ({\n path: (0, types_1.PathInternal)(d.path),\n type: this.matchDeviceType(d.device),\n product: d.device.productId,\n vendor: d.device.vendorId,\n id: d.device.serialNumber,\n apiType: this.type\n }));\n }\n abortableMethod(method, {\n signal,\n onAbort\n }) {\n if (!signal) {\n return method();\n }\n if (signal.aborted) {\n return Promise.reject(new Error(ERRORS.ABORTED_BY_SIGNAL));\n }\n const dfd = (0, utils_1.createDeferred)();\n const abortListener = async () => {\n this.logger?.debug('usb: abortableMethod onAbort start');\n try {\n await onAbort?.();\n } catch {}\n this.logger?.debug('usb: abortableMethod onAbort done');\n dfd.reject(new Error(ERRORS.ABORTED_BY_SIGNAL));\n };\n signal?.addEventListener('abort', abortListener);\n const methodPromise = method().catch(error => {\n this.logger?.debug(`usb: abortableMethod method() aborted: ${signal.aborted} ${error}`);\n if (signal.aborted) {\n return dfd.promise;\n }\n dfd.reject(error);\n throw error;\n });\n return Promise.race([methodPromise, dfd.promise]).then(r => {\n dfd.resolve(r);\n return r;\n }).finally(() => {\n signal?.removeEventListener('abort', abortListener);\n });\n }\n async enumerate(signal) {\n try {\n this.logger?.debug('usb: enumerate');\n const devices = await this.abortableMethod(() => this.synchronizeGetDevices(() => this.usbInterface.getDevices()), {\n signal\n });\n this.devices = await this.createDevices(devices, signal);\n return this.success(this.devicesToDescriptors());\n } catch (err) {\n return this.unknownError(err);\n }\n }\n getTransferIn(device) {\n let pending = this.devicePendingTransferIn.get(device);\n if (!pending) {\n pending = device.transferIn(this.debugLink ? constants_1.DEBUGLINK_ENDPOINT_ID : constants_1.ENDPOINT_ID, this.chunkSize).finally(() => this.devicePendingTransferIn.delete(device));\n this.devicePendingTransferIn.set(device, pending);\n }\n return pending;\n }\n async read(path, signal) {\n const device = this.findDevice(path);\n if (!device) {\n return this.error({\n error: ERRORS.DEVICE_NOT_FOUND\n });\n }\n try {\n this.logger?.debug('usb: device.transferIn');\n const res = await this.abortableMethod(() => this.getTransferIn(device), {\n signal,\n onAbort: () => this.resetDevice(path)\n });\n this.logger?.debug(`usb: device.transferIn done. status: ${res.status}, byteLength: ${res.data?.byteLength}.`);\n if (!res.data?.byteLength) {\n this.logger?.warn(`usb: device.transferIn error: empty data buffer`);\n return this.success(Buffer.alloc(0));\n }\n return this.success(Buffer.from(res.data.buffer));\n } catch (err) {\n this.logger?.error(`usb: device.transferIn error ${err}`);\n return this.handleReadWriteError(err);\n }\n }\n async write(path, buffer, signal) {\n const device = this.findDevice(path);\n if (!device) {\n return this.error({\n error: ERRORS.DEVICE_NOT_FOUND\n });\n }\n const newArray = new Uint8Array(this.chunkSize);\n newArray.set(new Uint8Array(buffer));\n const timeout = setTimeout(() => {\n this.logger?.debug('usb: device.transfer out take suspiciously long. timing out.');\n this.resetDevice(path).catch(() => {});\n }, 1000);\n try {\n this.logger?.debug('usb: device.transferOut');\n const result = await this.abortableMethod(() => device.transferOut(this.debugLink ? constants_1.DEBUGLINK_ENDPOINT_ID : constants_1.ENDPOINT_ID, newArray), {\n signal,\n onAbort: () => this.resetDevice(path)\n });\n this.logger?.debug(`usb: device.transferOut done.`);\n if (result.status !== 'ok') {\n this.logger?.error(`usb: device.transferOut status not ok: ${result.status}`);\n throw new Error('transfer out status not ok');\n }\n return this.success(undefined);\n } catch (err) {\n return this.handleReadWriteError(err);\n } finally {\n clearTimeout(timeout);\n }\n }\n async openDevice(path, options) {\n for (let i = 0; i < 5; i++) {\n this.logger?.debug(`usb: openDevice attempt ${i}`);\n const res = await this.openInternal(path, options);\n if (res.success || options.signal?.aborted) {\n return res;\n }\n await (0, utils_1.resolveAfter)(100 * i);\n }\n return this.openInternal(path, options);\n }\n async openInternal(path, {\n reset,\n signal\n }) {\n const device = this.findDevice(path);\n if (!device) {\n return this.error({\n error: ERRORS.DEVICE_NOT_FOUND\n });\n }\n try {\n this.logger?.debug(`usb: device.open`);\n await this.abortableMethod(() => device.open(), {\n signal\n });\n this.logger?.debug(`usb: device.open done. device: ${this.formatDeviceForLog(device)}`);\n } catch (err) {\n this.logger?.error(`usb: device.open error ${err}`);\n if (err.message.includes('LIBUSB_ERROR_ACCESS')) {\n return this.error({\n error: ERRORS.LIBUSB_ERROR_ACCESS\n });\n }\n return this.error({\n error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE,\n message: err.message\n });\n }\n if (device.configuration?.configurationValue !== constants_1.CONFIGURATION_ID) {\n try {\n this.logger?.debug(`usb: device.selectConfiguration ${constants_1.CONFIGURATION_ID}`);\n await this.abortableMethod(() => device.selectConfiguration(constants_1.CONFIGURATION_ID), {\n signal\n });\n this.logger?.debug(`usb: device.selectConfiguration done: ${constants_1.CONFIGURATION_ID}.`);\n } catch (err) {\n this.logger?.error(`usb: device.selectConfiguration error ${err}. device: ${this.formatDeviceForLog(device)}`);\n }\n }\n if (reset) {\n try {\n this.logger?.debug('usb: device.reset');\n await this.resetDevice(path);\n this.logger?.debug(`usb: device.reset done.`);\n } catch (err) {\n this.logger?.error(`usb: device.reset error ${err}. device: ${this.formatDeviceForLog(device)}`);\n }\n }\n const interfaceId = this.debugLink ? constants_1.DEBUGLINK_INTERFACE_ID : constants_1.INTERFACE_ID;\n if (!this.isInterfaceClaimed(device, interfaceId)) {\n try {\n this.logger?.debug(`usb: device.claimInterface: ${interfaceId}`);\n await this.abortableMethod(() => device.claimInterface(interfaceId), {\n signal\n });\n this.logger?.debug(`usb: device.claimInterface done: ${interfaceId}.`);\n } catch (err) {\n this.logger?.error(`usb: device.claimInterface error ${err}.`);\n return this.error({\n error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE,\n message: err.message\n });\n }\n }\n return this.success(undefined);\n }\n async closeDevice(path) {\n let device = this.findDevice(path);\n if (!device) {\n return this.error({\n error: ERRORS.DEVICE_NOT_FOUND\n });\n }\n this.logger?.debug(`usb: closeDevice. device.opened: ${device.opened}`);\n if (device.opened) {\n if (!this.debugLink) {\n try {\n await this.resetDevice(path);\n } catch (err) {\n this.logger?.error(`usb: device.reset error ${err}. device: ${this.formatDeviceForLog(device)}`);\n }\n }\n }\n device = this.findDevice(path);\n const interfaceId = this.debugLink ? constants_1.DEBUGLINK_INTERFACE_ID : constants_1.INTERFACE_ID;\n if (device?.opened && this.isInterfaceClaimed(device, interfaceId)) {\n try {\n this.logger?.debug(`usb: device.releaseInterface: ${interfaceId}`);\n await this.synchronizeResetDevice(() => device?.releaseInterface(interfaceId));\n this.logger?.debug(`usb: device.releaseInterface done: ${interfaceId}.`);\n } catch (err) {\n this.logger?.error(`usb: releaseInterface error ${err}.`);\n }\n }\n device = this.findDevice(path);\n if (device?.opened) {\n try {\n this.logger?.debug(`usb: device.close`);\n await this.synchronizeResetDevice(() => device.close());\n this.logger?.debug(`usb: device.close done.`);\n } catch (err) {\n this.logger?.debug(`usb: device.close error ${err}.`);\n return this.error({\n error: ERRORS.INTERFACE_UNABLE_TO_CLOSE_DEVICE,\n message: err.message\n });\n }\n }\n return this.success(undefined);\n }\n findDevice(path) {\n const device = this.devices.find(d => d.path === path);\n if (!device) {\n return;\n }\n return device.device;\n }\n createDevices(devices, signal) {\n return this.synchronizeCreateDevices(async () => {\n let bootloaderId = 0;\n const getPathFromUsbDevice = device => {\n const {\n serialNumber\n } = device;\n let path = serialNumber == null || serialNumber === '' ? 'bootloader' : serialNumber;\n if (path === 'bootloader') {\n this.logger?.debug('usb: device without serial number!');\n bootloaderId++;\n path += bootloaderId;\n }\n return path;\n };\n const [hidDevices, nonHidDevices] = this.filterDevices(devices);\n const loadedDevices = await Promise.all(nonHidDevices.map(async device => {\n this.logger?.debug(`usb: creating device ${this.formatDeviceForLog(device)}`);\n if (this.forceReadSerialOnConnect && !device.opened && !device.serialNumber) {\n await this.loadSerialNumber(device, signal);\n }\n const path = getPathFromUsbDevice(device);\n return {\n path,\n device\n };\n }));\n return [...loadedDevices, ...hidDevices.map(d => ({\n path: getPathFromUsbDevice(d),\n device: d\n }))];\n });\n }\n async loadSerialNumber(device, signal) {\n try {\n this.logger?.debug(`usb: loadSerialNumber`);\n await this.abortableMethod(() => device.open(), {\n signal\n });\n await this.abortableMethod(() => device.getStringDescriptor(device.device.deviceDescriptor.iSerialNumber), {\n signal\n });\n this.logger?.debug(`usb: loadSerialNumber done, serialNumber: ${device.serialNumber}`);\n await this.abortableMethod(() => device.close(), {\n signal\n });\n } catch (err) {\n this.logger?.error(`usb: loadSerialNumber error: ${err.message}`);\n throw err;\n }\n }\n async resetDevice(path) {\n const device = this.findDevice(path);\n if (!device) {\n this.logger?.debug(`usb: resetDevice: device not found`);\n return;\n }\n if (this.deviceResetMap[path]) {\n this.logger?.debug(`usb: resetDevice: device reset already running`);\n return;\n }\n this.deviceResetMap[path] = true;\n try {\n this.logger?.debug(`usb: resetDevice: device.reset`);\n await this.synchronizeResetDevice(() => device.reset());\n this.logger?.debug(`usb: resetDevice: device.reset done`);\n } catch (err) {\n this.logger?.error(`usb: resetDevice: device.reset error: ${err.message}`);\n } finally {\n delete this.deviceResetMap[path];\n }\n }\n filterDevices(devices) {\n const trezorDevices = devices.filter(dev => constants_1.TREZOR_USB_DESCRIPTORS.some(desc => dev.vendorId === desc.vendorId && dev.productId === desc.productId));\n const [hidDevices, nonHidDevices] = (0, utils_1.arrayPartition)(trezorDevices, device => device.vendorId === constants_1.T1_HID_VENDOR);\n return [hidDevices, nonHidDevices];\n }\n isInterfaceClaimed(device, interfaceId) {\n return device.configuration?.interfaces.find(i => i.interfaceNumber === interfaceId)?.claimed;\n }\n handleReadWriteError(err) {\n if (['LIBUSB_TRANSFER_ERROR', 'LIBUSB_ERROR_PIPE', 'LIBUSB_ERROR_IO', 'LIBUSB_ERROR_NO_DEVICE', 'LIBUSB_ERROR_OTHER', ERRORS.INTERFACE_DATA_TRANSFER, 'The device was disconnected.'].some(disconnectedErr => err.message.includes(disconnectedErr))) {\n return this.error({\n error: ERRORS.DEVICE_DISCONNECTED_DURING_ACTION\n });\n }\n return this.unknownError(err, [ERRORS.DEVICE_NOT_FOUND, ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.ABORTED_BY_TIMEOUT, ERRORS.ABORTED_BY_SIGNAL, ERRORS.UNEXPECTED_ERROR]);\n }\n dispose() {\n if (this.usbInterface) {\n this.usbInterface.onconnect = null;\n this.usbInterface.ondisconnect = null;\n }\n this.abortController.abort();\n }\n}\nexports.UsbApi = UsbApi;\n//# sourceMappingURL=usb.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyBridgeApiCallHeaders = applyBridgeApiCallHeaders;\nconst IS_NODE = typeof process !== 'undefined' && typeof window === 'undefined';\nfunction applyBridgeApiCallHeaders({\n headers,\n contentType,\n skipContentTypeHeader\n}) {\n if (IS_NODE) {\n headers['Origin'] = 'https://wallet.trezor.io';\n }\n if (!skipContentTypeHeader) headers['Content-Type'] = contentType;\n return headers;\n}\n//# sourceMappingURL=applyBridgeApiCallHeaders.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ping = void 0;\nconst applyBridgeApiCallHeaders_1 = require(\"../utils/applyBridgeApiCallHeaders\");\nconst ping = url => fetch(url, {\n method: 'POST',\n headers: (0, applyBridgeApiCallHeaders_1.applyBridgeApiCallHeaders)({\n headers: {},\n contentType: 'text/plain',\n skipContentTypeHeader: true\n })\n}).then(res => res.json()).then(res => typeof res?.version === 'string').catch(() => false);\nexports.ping = ping;\n//# sourceMappingURL=pingCommon.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ping = void 0;\nvar pingCommon_1 = require(\"./pingCommon\");\nObject.defineProperty(exports, \"ping\", {\n enumerable: true,\n get: function () {\n return pingCommon_1.ping;\n }\n});\n//# sourceMappingURL=ping.js.map", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n", "[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf);\n }\n\n return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n", "'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n this.iconv = iconv;\n this.bomAware = true;\n this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n this.isLE = codec.isLE;\n this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n var src = Buffer.from(str, 'ucs2');\n var dst = Buffer.alloc(src.length * 2);\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n var offset = 0;\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i);\n var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset);\n offset += 4;\n }\n else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n write32.call(dst, codepoint, offset);\n offset += 4;\n this.highSurrogate = 0;\n\n continue;\n }\n }\n\n if (isHighSurrogate)\n this.highSurrogate = code;\n else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset);\n offset += 4;\n this.highSurrogate = 0;\n }\n }\n\n if (offset < dst.length)\n dst = dst.slice(0, offset);\n\n return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate)\n return;\n\n var buf = Buffer.alloc(4);\n\n if (this.isLE)\n buf.writeUInt32LE(this.highSurrogate, 0);\n else\n buf.writeUInt32BE(this.highSurrogate, 0);\n\n this.highSurrogate = 0;\n\n return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n this.isLE = codec.isLE;\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n if (src.length === 0)\n return '';\n\n var i = 0;\n var codepoint = 0;\n var dst = Buffer.alloc(src.length + 4);\n var offset = 0;\n var isLE = this.isLE;\n var overflow = this.overflow;\n var badChar = this.badChar;\n\n if (overflow.length > 0) {\n for (; i < src.length && overflow.length < 4; i++)\n overflow.push(src[i]);\n \n if (overflow.length === 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n if (isLE) {\n codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n } else {\n codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n }\n overflow.length = 0;\n\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n }\n\n // Main loop. Should be as optimized as possible.\n for (; i < src.length - 3; i += 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n if (isLE) {\n codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n } else {\n codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n }\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n\n // Keep overflowing bytes.\n for (; i < src.length; i++) {\n overflow.push(src[i]);\n }\n\n return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n if (codepoint < 0 || codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n codepoint = badChar;\n } \n\n // Ephemeral Planes: Write high surrogate.\n if (codepoint >= 0x10000) {\n codepoint -= 0x10000;\n\n var high = 0xD800 | (codepoint >> 10);\n dst[offset++] = high & 0xff;\n dst[offset++] = high >> 8;\n\n // Low surrogate is written below.\n var codepoint = 0xDC00 | (codepoint & 0x3FF);\n }\n\n // Write BMP char or low surrogate.\n dst[offset++] = codepoint & 0xff;\n dst[offset++] = codepoint >> 8;\n\n return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n options = options || {};\n\n if (options.addBOM === undefined)\n options.addBOM = true;\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n if (!this.decoder) { \n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n\n if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE.\n var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 4) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n return 'utf-32le';\n }\n if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n return 'utf-32be';\n }\n }\n\n if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be';\n if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-32le';\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n \n if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 2) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n }\n\n if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-16le';\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n\n \"cp720\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\x80\\x81\u00E9\u00E2\\x84\u00E0\\x86\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\\x8d\\x8e\\x8f\\x90\\u0651\\u0652\u00F4\u00A4\u0640\u00FB\u00F9\u0621\u0622\u0623\u0624\u00A3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\u00B5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\\u00a0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 common decode nodes.\n var commonThirdByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n var commonFourthByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n // Fill out the tree\n var firstByteNode = this.decodeTables[0];\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n for (var j = 0x30; j <= 0x39; j++) {\n if (secondByteNode[j] === UNASSIGNED) {\n secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n } else if (secondByteNode[j] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 2\");\n }\n\n var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n for (var k = 0x81; k <= 0xFE; k++) {\n if (thirdByteNode[k] === UNASSIGNED) {\n thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n continue;\n } else if (thirdByteNode[k] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 3\");\n }\n\n var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n for (var l = 0x30; l <= 0x39; l++) {\n if (fourthByteNode[l] === UNASSIGNED)\n fourthByteNode[l] = GB18030_CODE;\n }\n }\n }\n }\n }\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n var hasValues = false;\n var subNodeEmpty = {};\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0) {\n this._setEncodeChar(uCode, mbCode);\n hasValues = true;\n } else if (uCode <= NODE_START) {\n var subNodeIdx = NODE_START - uCode;\n if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).\n var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive.\n if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n hasValues = true;\n else\n subNodeEmpty[subNodeIdx] = true;\n }\n } else if (uCode <= SEQ_START) {\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n hasValues = true;\n }\n }\n return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else if (dbcsCode < 0x1000000) {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n } else {\n newBuf[j++] = dbcsCode >>> 24;\n newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBytes = [];\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n uCode;\n\n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n uCode = this.defaultCharUnicode.charCodeAt(0);\n i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n }\n else if (uCode === GB18030_CODE) {\n if (i >= 3) {\n var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n } else {\n var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n (curByte-0x30);\n }\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode >= 0x10000) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 | (uCode >> 10);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 | (uCode & 0x3FF);\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBytes = (seqStart >= 0)\n ? Array.prototype.slice.call(buf, seqStart)\n : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBytes.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var bytesArr = this.prevBytes.slice(1);\n\n // Parse remaining as usual.\n this.prevBytes = [];\n this.nodeIdx = 0;\n if (bytesArr.length > 0)\n ret += this.write(bytesArr);\n }\n\n this.prevBytes = [];\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + ((r-l+1) >> 1);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\u1E3F\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93],\n[\"8135f437\",\"\uE7C7\"]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'\u20AC': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n ],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n var Transform = stream_module.Transform;\n\n // == Encoder stream =======================================================\n\n function IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n }\n\n IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n });\n\n IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n }\n\n\n // == Decoder stream =======================================================\n\n function IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n }\n\n IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n });\n\n IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n }\n\n return {\n IconvLiteEncoderStream: IconvLiteEncoderStream,\n IconvLiteDecoderStream: IconvLiteDecoderStream,\n };\n};\n", "\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n if (iconv.supportsStreams)\n return;\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = require(\"./streams\")(stream_module);\n\n // Not public API yet, but expose the stream classes.\n iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n // Streaming API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n iconv.enableStreamingAPI(stream_module);\n\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n iconv.encodeStream = iconv.decodeStream = function() {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n };\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "'use strict';\n\nvar iconvLite = require('iconv-lite');\n\n// Expose to the world\nmodule.exports.convert = convert;\n\n/**\n * Convert encoding of an UTF-8 string or a buffer\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convert(str, to, from) {\n from = checkEncoding(from || 'UTF-8');\n to = checkEncoding(to || 'UTF-8');\n str = str || '';\n\n var result;\n\n if (from !== 'UTF-8' && typeof str === 'string') {\n str = Buffer.from(str, 'binary');\n }\n\n if (from === to) {\n if (typeof str === 'string') {\n result = Buffer.from(str);\n } else {\n result = str;\n }\n } else {\n try {\n result = convertIconvLite(str, to, from);\n } catch (E) {\n console.error(E);\n result = str;\n }\n }\n\n if (typeof result === 'string') {\n result = Buffer.from(result, 'utf-8');\n }\n\n return result;\n}\n\n/**\n * Convert encoding of astring with iconv-lite\n *\n * @param {String|Buffer} str String to be converted\n * @param {String} to Encoding to be converted to\n * @param {String} [from='UTF-8'] Encoding to be converted from\n * @return {Buffer} Encoded string\n */\nfunction convertIconvLite(str, to, from) {\n if (to === 'UTF-8') {\n return iconvLite.decode(str, from);\n } else if (from === 'UTF-8') {\n return iconvLite.encode(str, to);\n } else {\n return iconvLite.encode(iconvLite.decode(str, from), to);\n }\n}\n\n/**\n * Converts charset name if needed\n *\n * @param {String} name Character set\n * @return {String} Character set name\n */\nfunction checkEncoding(name) {\n return (name || '')\n .toString()\n .trim()\n .replace(/^latin[\\-_]?(\\d+)$/i, 'ISO-8859-$1')\n .replace(/^win(?:dows)?[\\-_]?(\\d+)$/i, 'WINDOWS-$1')\n .replace(/^utf[\\-_]?(\\d+)$/i, 'UTF-$1')\n .replace(/^ks_c_5601\\-1987$/i, 'CP949')\n .replace(/^us[\\-_]?ascii$/i, 'ASCII')\n .toUpperCase();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n", "const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bridgeApiCall = bridgeApiCall;\nconst tslib_1 = require(\"tslib\");\nconst cross_fetch_1 = tslib_1.__importDefault(require(\"cross-fetch\"));\nconst errors_1 = require(\"@trezor/protocol/lib/errors\");\nconst result_1 = require(\"./result\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst applyBridgeApiCallHeaders_1 = require(\"./applyBridgeApiCallHeaders\");\nfunction contentType(body) {\n if (typeof body === 'string') {\n if (body === '') {\n return 'text/plain';\n }\n return 'application/octet-stream';\n }\n return 'application/json';\n}\nfunction wrapBody(body) {\n if (typeof body === 'string') {\n return body;\n }\n return JSON.stringify(body);\n}\nfunction parseResult(text) {\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\nasync function bridgeApiCall(options) {\n const fetchOptions = {\n method: options.method,\n body: wrapBody(options.body),\n credentials: 'same-origin',\n headers: {},\n signal: options.signal,\n timeout: options.timeout\n };\n fetchOptions.headers = (0, applyBridgeApiCallHeaders_1.applyBridgeApiCallHeaders)({\n headers: fetchOptions.headers,\n contentType: contentType(options.body == null ? '' : options.body),\n skipContentTypeHeader: options.skipContentTypeHeader\n });\n let res;\n try {\n res = await (0, cross_fetch_1.default)(options.url, fetchOptions);\n } catch (err) {\n return (0, result_1.error)({\n error: ERRORS.HTTP_ERROR,\n message: err.message\n });\n }\n let resParsed;\n try {\n resParsed = await res.text();\n resParsed = parseResult(resParsed);\n } catch (err) {\n return (0, result_1.error)({\n error: ERRORS.HTTP_ERROR,\n message: err.message\n });\n }\n const getErrorStr = err => {\n if (typeof err === 'string') {\n return err;\n }\n if ('message' in err) {\n return err.message;\n }\n if ('error' in err) {\n return err.error;\n }\n return err.toString();\n };\n const BRIDGE_ERROR_DEVICE_CLOSED = 'closed device';\n const BRIDGE_MALFORMED_PROTOBUF = 'malformed protobuf';\n const BRIDGE_MALFORMED_WIRE_FORMAT = 'malformed wire format';\n if (!res.ok) {\n const errStr = getErrorStr(resParsed);\n if (errStr === BRIDGE_ERROR_DEVICE_CLOSED) {\n return (0, result_1.error)({\n error: ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE\n });\n }\n if (errStr === BRIDGE_MALFORMED_PROTOBUF || errStr === errors_1.PROTOCOL_MALFORMED) {\n return (0, result_1.error)({\n error: errors_1.PROTOCOL_MALFORMED\n });\n }\n if (errStr === BRIDGE_MALFORMED_WIRE_FORMAT) {\n return (0, result_1.error)({\n error: errors_1.PROTOCOL_MALFORMED\n });\n }\n if (typeof resParsed !== 'string' && 'error' in resParsed && typeof resParsed.error === 'string') {\n return (0, result_1.error)({\n error: resParsed.error,\n message: 'message' in resParsed && typeof resParsed.message === 'string' ? resParsed.message : undefined\n });\n }\n return (0, result_1.unknownError)(new Error(errStr), Object.values(ERRORS));\n }\n return (0, result_1.success)(resParsed);\n}\n//# sourceMappingURL=bridgeApiCall.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateProtocolMessage = validateProtocolMessage;\nexports.createProtocolMessage = createProtocolMessage;\nfunction validateProtocolMessage(body, withData = true) {\n const isHex = s => /^[0-9A-Fa-f]+$/g.test(s);\n const isValidProtocol = s => s === 'v1' || s === 'v2' || s === 'bridge';\n if (typeof body === 'string') {\n if (withData && isHex(body) || !withData && !body.length) {\n return {\n data: body\n };\n }\n }\n let json;\n if (typeof body === 'object') {\n json = body;\n } else {\n try {\n json = JSON.parse(body);\n } catch {}\n }\n if (!json) {\n throw new Error('Invalid BridgeProtocolMessage body');\n }\n if (typeof json.protocol !== 'string' || !isValidProtocol(json.protocol)) {\n throw new Error('Invalid BridgeProtocolMessage protocol');\n }\n if (withData && (typeof json.data !== 'string' || !isHex(json.data))) {\n throw new Error('Invalid BridgeProtocolMessage data');\n }\n return {\n protocol: json.protocol,\n data: json.data,\n thpState: json.thpState\n };\n}\nfunction createProtocolMessage(body, protocol, thpState) {\n let data;\n if (Buffer.isBuffer(body)) {\n data = body.toString('hex');\n }\n if (typeof body === 'string') {\n data = body;\n }\n if (typeof data !== 'string') {\n data = '';\n }\n if (!protocol) {\n return data;\n }\n return JSON.stringify({\n protocol: typeof protocol === 'string' ? protocol : protocol.name,\n data,\n thpState\n });\n}\n//# sourceMappingURL=bridgeProtocolMessage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.info = info;\nexports.version = version;\nexports.devices = devices;\nexports.acquire = acquire;\nexports.call = call;\nexports.post = post;\nexports.empty = empty;\nconst tslib_1 = require(\"tslib\");\nconst bridgeProtocolMessage_1 = require(\"./bridgeProtocolMessage\");\nconst result_1 = require(\"./result\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nfunction isString(payload) {\n return typeof payload === 'string';\n}\nfunction info(res) {\n if (isString(res)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n const {\n version\n } = res;\n if (typeof version !== 'string') {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n const configured = !!res.configured;\n const protocolMessages = !!res.protocolMessages;\n return (0, result_1.success)({\n version,\n configured,\n protocolMessages\n });\n}\nfunction version(res) {\n if (!isString(res)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n return (0, result_1.success)(res.trim());\n}\nfunction devices(res) {\n if (isString(res)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n if (!(res instanceof Array)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n if (res.some(o => typeof o !== 'object' || !o || typeof o.path !== 'string' || typeof o.session !== 'string' && o.session !== null)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n return (0, result_1.success)(res.map(o => ({\n path: o.path,\n session: o.session,\n sessionOwner: o.sessionOwner,\n product: o.product,\n type: o.type,\n vendor: o.vendor,\n debug: o.debug,\n debugSession: o.debugSession,\n id: o.id,\n apiType: o.apiType || 'usb'\n })));\n}\nfunction acquire(res) {\n if (isString(res)) {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n const {\n session\n } = res;\n if (typeof session !== 'string') {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n return (0, result_1.success)(session);\n}\nfunction call(res) {\n try {\n return (0, result_1.success)((0, bridgeProtocolMessage_1.validateProtocolMessage)(res, true));\n } catch {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n}\nfunction post(res) {\n try {\n return (0, result_1.success)((0, bridgeProtocolMessage_1.validateProtocolMessage)(res, false));\n } catch {\n return (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n });\n }\n}\nfunction empty(res) {\n return res != null && JSON.stringify(res) === '{}' ? (0, result_1.error)({\n error: ERRORS.WRONG_RESULT_TYPE\n }) : (0, result_1.success)(undefined);\n}\n//# sourceMappingURL=bridgeApiResult.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BridgeTransport = void 0;\nconst tslib_1 = require(\"tslib\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst abstract_1 = require(\"./abstract\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst ping_1 = require(\"../pinger/ping\");\nconst receive_1 = require(\"../thp/receive\");\nconst bridgeApiCall_1 = require(\"../utils/bridgeApiCall\");\nconst bridgeApiResult = tslib_1.__importStar(require(\"../utils/bridgeApiResult\"));\nconst bridgeProtocolMessage_1 = require(\"../utils/bridgeProtocolMessage\");\nconst receive_2 = require(\"../utils/receive\");\nconst send_1 = require(\"../utils/send\");\nconst DEFAULT_URL = 'http://127.0.0.1';\nconst DEFAULT_PORT = 21325;\nclass BridgeTransport extends abstract_1.AbstractTransport {\n useProtocolMessages = false;\n url;\n name = 'BridgeTransport';\n constructor(params) {\n const {\n port = DEFAULT_PORT,\n ...rest\n } = params || {};\n super(rest);\n this.url = `${DEFAULT_URL}:${port}`;\n }\n ping(_ = {}) {\n return (0, ping_1.ping)(`${this.url}/`).catch(() => false);\n }\n init({\n signal\n } = {}) {\n return this.scheduleAction(async signal => {\n const response = await this.post('/', {\n signal\n });\n if (!response.success) {\n return response;\n }\n this.version = response.payload.version;\n if (!this.version.startsWith('3')) {\n this.isOutdated = true;\n }\n this.useProtocolMessages = !!response.payload.protocolMessages;\n this.stopped = false;\n return this.success(undefined);\n }, {\n signal\n });\n }\n listen() {\n if (this.listening) {\n return this.error({\n error: ERRORS.ALREADY_LISTENING\n });\n }\n this.listening = true;\n this.listenLoop();\n return this.success(undefined);\n }\n async listenLoop() {\n while (!this.stopped) {\n const response = await this.post('/listen', {\n body: this.descriptors,\n signal: this.abortController.signal\n });\n if (!response.success) {\n this.emit(constants_1.TRANSPORT.ERROR, response.error);\n } else {\n this.handleDescriptorsChange(response.payload);\n }\n }\n }\n enumerate({\n signal\n } = {}) {\n return this.scheduleAction(signal => this.post('/enumerate', {\n signal\n }), {\n signal\n });\n }\n acquire({\n input,\n signal\n }) {\n return this.scheduleAction(async signal => {\n const response = await this.post('/acquire', {\n params: `${input.path}/${input.previous ?? 'null'}`,\n signal,\n body: {\n sessionOwner: this.id\n }\n });\n return response;\n }, {\n signal\n }, [ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.SESSION_WRONG_PREVIOUS]);\n }\n release({\n path: _,\n session,\n signal\n }) {\n return this.scheduleAction(async signal => {\n const response = await this.post('/release', {\n params: session,\n signal\n });\n return response.success ? this.success(null) : response;\n }, {\n signal\n });\n }\n releaseSync(session) {\n if (typeof navigator !== 'undefined' && 'sendBeacon' in navigator) {\n navigator.sendBeacon(`${this.url}/release/${session}?beacon=1`);\n } else {\n this.post('/release', {\n params: session\n });\n }\n }\n releaseDevice() {\n return Promise.resolve(this.success(undefined));\n }\n getProtocol(customProtocol) {\n if (!this.useProtocolMessages) {\n return protocol_1.bridge;\n }\n return customProtocol || protocol_1.v1;\n }\n getRequestBody(body, protocol, thpState) {\n return (0, bridgeProtocolMessage_1.createProtocolMessage)(body, this.useProtocolMessages ? protocol : undefined, thpState?.serialize());\n }\n call({\n session,\n name,\n data,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const protocol = this.getProtocol(customProtocol);\n const bytes = (0, send_1.buildMessage)({\n messages: this.messages,\n name,\n data,\n protocol,\n thpState\n });\n const prevNonce = thpState?.sendNonce;\n const response = await this.post(`/call`, {\n params: session,\n body: this.getRequestBody(bytes, protocol, thpState),\n signal\n });\n if (!response.success) {\n return response;\n }\n const respBytes = Buffer.from(response.payload.data, 'hex');\n if (protocol.name === 'v2') {\n if (prevNonce === thpState?.sendNonce) {\n thpState?.sync('send', name);\n }\n const message = (0, receive_1.parseThpMessage)({\n decoded: protocol.decode(respBytes),\n messages: this.messages,\n thpState\n });\n thpState?.sync('recv', message.type);\n return this.success(message);\n }\n return (0, receive_2.receiveAndParse)(this.messages, () => Promise.resolve(this.success(respBytes)), protocol);\n }, {\n signal,\n timeout\n });\n }\n send({\n session,\n name,\n data,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const protocol = this.getProtocol(customProtocol);\n const bytes = (0, send_1.buildMessage)({\n messages: this.messages,\n name,\n data,\n protocol,\n thpState\n });\n const response = await this.post('/post', {\n params: session,\n body: this.getRequestBody(bytes, protocol, thpState),\n signal\n });\n if (!response.success) {\n return response;\n }\n if (protocol.name === 'v2') {\n thpState?.sync('send', name);\n }\n return this.success(undefined);\n }, {\n signal,\n timeout\n });\n }\n receive({\n session,\n protocol: customProtocol,\n thpState,\n signal,\n timeout\n }) {\n return this.scheduleAction(async signal => {\n const protocol = this.getProtocol(customProtocol);\n const response = await this.post('/read', {\n params: session,\n body: this.getRequestBody(Buffer.alloc(0), protocol, thpState),\n signal\n });\n if (!response.success) {\n return response;\n }\n const respBytes = Buffer.from(response.payload.data, 'hex');\n if (protocol.name === 'v2') {\n const message = (0, receive_1.parseThpMessage)({\n decoded: protocol.decode(respBytes),\n messages: this.messages,\n thpState\n });\n thpState?.sync('recv', message.type);\n return this.success(message);\n }\n return (0, receive_2.receiveAndParse)(this.messages, () => Promise.resolve(this.success(respBytes)), protocol);\n }, {\n signal,\n timeout\n });\n }\n async post(endpoint, options) {\n const response = await (0, bridgeApiCall_1.bridgeApiCall)({\n ...options,\n method: 'POST',\n url: `${this.url + endpoint}${options?.params ? `/${options.params}` : ''}`,\n skipContentTypeHeader: true\n });\n if (!response.success) {\n if (response.error === ERRORS.UNEXPECTED_ERROR) {\n return this.unknownError(response.error);\n }\n if (response.error === ERRORS.HTTP_ERROR) {\n return this.error({\n error: response.error\n });\n }\n switch (endpoint) {\n case '/':\n return this.unknownError(response.error);\n case '/acquire':\n return this.unknownError(response.error, [ERRORS.SESSION_WRONG_PREVIOUS, ERRORS.DEVICE_NOT_FOUND, ERRORS.INTERFACE_UNABLE_TO_OPEN_DEVICE, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.LIBUSB_ERROR_ACCESS]);\n case '/call':\n case '/read':\n case '/post':\n return this.unknownError(response.error, [ERRORS.SESSION_NOT_FOUND, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION, ERRORS.OTHER_CALL_IN_PROGRESS, ERRORS.INTERFACE_DATA_TRANSFER, protocol_1.PROTOCOL_MALFORMED]);\n case '/enumerate':\n case '/listen':\n return this.unknownError(response.error);\n case '/release':\n return this.unknownError(response.error, [ERRORS.SESSION_NOT_FOUND, ERRORS.DEVICE_DISCONNECTED_DURING_ACTION]);\n default:\n return this.error({\n error: ERRORS.WRONG_RESULT_TYPE,\n message: 'just for type safety, should never happen'\n });\n }\n }\n switch (endpoint) {\n case '/':\n return bridgeApiResult.info(response.payload);\n case '/acquire':\n return bridgeApiResult.acquire(response.payload);\n case '/read':\n case '/call':\n return bridgeApiResult.call(response.payload);\n case '/post':\n return bridgeApiResult.post(response.payload);\n case '/enumerate':\n case '/listen':\n return bridgeApiResult.devices(response.payload);\n case '/release':\n return bridgeApiResult.empty(response.payload);\n default:\n return this.error({\n error: ERRORS.WRONG_RESULT_TYPE,\n message: 'just for type safety, should never happen'\n });\n }\n }\n}\nexports.BridgeTransport = BridgeTransport;\n//# sourceMappingURL=bridge.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.emptySync = exports.empty = void 0;\nconst errors_1 = require(\"../errors\");\nconst result_1 = require(\"./result\");\nconst empty = () => Promise.resolve((0, result_1.error)({\n error: errors_1.WRONG_ENVIRONMENT\n}));\nexports.empty = empty;\nconst emptySync = () => (0, result_1.error)({\n error: errors_1.WRONG_ENVIRONMENT\n});\nexports.emptySync = emptySync;\n//# sourceMappingURL=resultEmpty.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebUsbTransport = void 0;\nconst abstract_1 = require(\"./abstract\");\nconst errors_1 = require(\"../errors\");\nconst resultEmpty_1 = require(\"../utils/resultEmpty\");\nclass WebUsbTransport extends abstract_1.AbstractTransport {\n name = 'WebUsbTransport';\n constructor(params) {\n super(params);\n console.error(errors_1.WRONG_ENVIRONMENT);\n }\n init = resultEmpty_1.empty;\n acquire = resultEmpty_1.empty;\n enumerate = resultEmpty_1.empty;\n call = resultEmpty_1.empty;\n receive = resultEmpty_1.empty;\n send = resultEmpty_1.empty;\n release = resultEmpty_1.empty;\n stop = resultEmpty_1.empty;\n releaseDevice = resultEmpty_1.empty;\n releaseSync = resultEmpty_1.emptySync;\n listen = resultEmpty_1.emptySync;\n}\nexports.WebUsbTransport = WebUsbTransport;\n//# sourceMappingURL=webusb.js.map", "var fs = require('fs')\nvar path = require('path')\nvar os = require('os')\n\n// Workaround to fix webpack's build warnings: 'the request of a dependency is an expression'\nvar runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\n\nvar vars = (process.config && process.config.variables) || {}\nvar prebuildsOnly = !!process.env.PREBUILDS_ONLY\nvar abi = process.versions.modules // TODO: support old node where this is undef\nvar runtime = isElectron() ? 'electron' : (isNwjs() ? 'node-webkit' : 'node')\n\nvar arch = process.env.npm_config_arch || os.arch()\nvar platform = process.env.npm_config_platform || os.platform()\nvar libc = process.env.LIBC || (isAlpine(platform) ? 'musl' : 'glibc')\nvar armv = process.env.ARM_VERSION || (arch === 'arm64' ? '8' : vars.arm_version) || ''\nvar uv = (process.versions.uv || '').split('.')[0]\n\nmodule.exports = load\n\nfunction load (dir) {\n return runtimeRequire(load.resolve(dir))\n}\n\nload.resolve = load.path = function (dir) {\n dir = path.resolve(dir || '.')\n\n try {\n var name = runtimeRequire(path.join(dir, 'package.json')).name.toUpperCase().replace(/-/g, '_')\n if (process.env[name + '_PREBUILD']) dir = process.env[name + '_PREBUILD']\n } catch (err) {}\n\n if (!prebuildsOnly) {\n var release = getFirst(path.join(dir, 'build/Release'), matchBuild)\n if (release) return release\n\n var debug = getFirst(path.join(dir, 'build/Debug'), matchBuild)\n if (debug) return debug\n }\n\n var prebuild = resolve(dir)\n if (prebuild) return prebuild\n\n var nearby = resolve(path.dirname(process.execPath))\n if (nearby) return nearby\n\n var target = [\n 'platform=' + platform,\n 'arch=' + arch,\n 'runtime=' + runtime,\n 'abi=' + abi,\n 'uv=' + uv,\n armv ? 'armv=' + armv : '',\n 'libc=' + libc,\n 'node=' + process.versions.node,\n process.versions.electron ? 'electron=' + process.versions.electron : '',\n typeof __webpack_require__ === 'function' ? 'webpack=true' : '' // eslint-disable-line\n ].filter(Boolean).join(' ')\n\n throw new Error('No native build was found for ' + target + '\\n loaded from: ' + dir + '\\n')\n\n function resolve (dir) {\n // Find matching \"prebuilds/-\" directory\n var tuples = readdirSync(path.join(dir, 'prebuilds')).map(parseTuple)\n var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]\n if (!tuple) return\n\n // Find most specific flavor first\n var prebuilds = path.join(dir, 'prebuilds', tuple.name)\n var parsed = readdirSync(prebuilds).map(parseTags)\n var candidates = parsed.filter(matchTags(runtime, abi))\n var winner = candidates.sort(compareTags(runtime))[0]\n if (winner) return path.join(prebuilds, winner.file)\n }\n}\n\nfunction readdirSync (dir) {\n try {\n return fs.readdirSync(dir)\n } catch (err) {\n return []\n }\n}\n\nfunction getFirst (dir, filter) {\n var files = readdirSync(dir).filter(filter)\n return files[0] && path.join(dir, files[0])\n}\n\nfunction matchBuild (name) {\n return /\\.node$/.test(name)\n}\n\nfunction parseTuple (name) {\n // Example: darwin-x64+arm64\n var arr = name.split('-')\n if (arr.length !== 2) return\n\n var platform = arr[0]\n var architectures = arr[1].split('+')\n\n if (!platform) return\n if (!architectures.length) return\n if (!architectures.every(Boolean)) return\n\n return { name, platform, architectures }\n}\n\nfunction matchTuple (platform, arch) {\n return function (tuple) {\n if (tuple == null) return false\n if (tuple.platform !== platform) return false\n return tuple.architectures.includes(arch)\n }\n}\n\nfunction compareTuples (a, b) {\n // Prefer single-arch prebuilds over multi-arch\n return a.architectures.length - b.architectures.length\n}\n\nfunction parseTags (file) {\n var arr = file.split('.')\n var extension = arr.pop()\n var tags = { file: file, specificity: 0 }\n\n if (extension !== 'node') return\n\n for (var i = 0; i < arr.length; i++) {\n var tag = arr[i]\n\n if (tag === 'node' || tag === 'electron' || tag === 'node-webkit') {\n tags.runtime = tag\n } else if (tag === 'napi') {\n tags.napi = true\n } else if (tag.slice(0, 3) === 'abi') {\n tags.abi = tag.slice(3)\n } else if (tag.slice(0, 2) === 'uv') {\n tags.uv = tag.slice(2)\n } else if (tag.slice(0, 4) === 'armv') {\n tags.armv = tag.slice(4)\n } else if (tag === 'glibc' || tag === 'musl') {\n tags.libc = tag\n } else {\n continue\n }\n\n tags.specificity++\n }\n\n return tags\n}\n\nfunction matchTags (runtime, abi) {\n return function (tags) {\n if (tags == null) return false\n if (tags.runtime && tags.runtime !== runtime && !runtimeAgnostic(tags)) return false\n if (tags.abi && tags.abi !== abi && !tags.napi) return false\n if (tags.uv && tags.uv !== uv) return false\n if (tags.armv && tags.armv !== armv) return false\n if (tags.libc && tags.libc !== libc) return false\n\n return true\n }\n}\n\nfunction runtimeAgnostic (tags) {\n return tags.runtime === 'node' && tags.napi\n}\n\nfunction compareTags (runtime) {\n // Precedence: non-agnostic runtime, abi over napi, then by specificity.\n return function (a, b) {\n if (a.runtime !== b.runtime) {\n return a.runtime === runtime ? -1 : 1\n } else if (a.abi !== b.abi) {\n return a.abi ? -1 : 1\n } else if (a.specificity !== b.specificity) {\n return a.specificity > b.specificity ? -1 : 1\n } else {\n return 0\n }\n }\n}\n\nfunction isNwjs () {\n return !!(process.versions && process.versions.nw)\n}\n\nfunction isElectron () {\n if (process.versions && process.versions.electron) return true\n if (process.env.ELECTRON_RUN_AS_NODE) return true\n return typeof window !== 'undefined' && window.process && window.process.type === 'renderer'\n}\n\nfunction isAlpine (platform) {\n return platform === 'linux' && fs.existsSync('/etc/alpine-release')\n}\n\n// Exposed for unit tests\n// TODO: move to lib\nload.parseTags = parseTags\nload.matchTags = matchTags\nload.compareTags = compareTags\nload.parseTuple = parseTuple\nload.matchTuple = matchTuple\nload.compareTuples = compareTuples\n", "const runtimeRequire = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require // eslint-disable-line\nif (typeof runtimeRequire.addon === 'function') { // if the platform supports native resolving prefer that\n module.exports = runtimeRequire.addon.bind(runtimeRequire)\n} else { // else use the runtime version here\n module.exports = require('./node-gyp-build.js')\n}\n", null, null, null, null, null, null, null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=descriptors.js.map", null, "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NodeUsbTransport = void 0;\nconst usb_1 = require(\"usb\");\nconst abstractApi_1 = require(\"./abstractApi\");\nconst usb_2 = require(\"../api/usb\");\nclass NodeUsbTransport extends abstractApi_1.AbstractApiTransport {\n name = 'NodeUsbTransport';\n constructor(params) {\n const {\n logger,\n debugLink,\n ...rest\n } = params;\n super({\n api: new usb_2.UsbApi({\n usbInterface: new usb_1.WebUSB({\n allowAllDevices: true\n }),\n logger,\n debugLink\n }),\n logger,\n ...rest\n });\n }\n}\nexports.NodeUsbTransport = NodeUsbTransport;\n//# sourceMappingURL=nodeusb.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.readMessageBuffer = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst result_1 = require(\"./result\");\nconst errors_1 = require(\"../errors\");\nconst readMessageBuffer = () => {\n const readBuffer = {};\n const readRequests = {};\n const onMessage = (path, data) => {\n if (readRequests[path]) {\n readRequests[path].resolve((0, result_1.success)(data));\n delete readRequests[path];\n } else {\n if (!readBuffer[path]) {\n readBuffer[path] = [];\n }\n readBuffer[path].push(data);\n }\n };\n const read = (path, signal) => {\n const bufferMessage = readBuffer[path]?.shift();\n if (bufferMessage) {\n return Promise.resolve((0, result_1.success)(bufferMessage));\n }\n if (readRequests[path]) {\n return readRequests[path].promise;\n }\n const dfd = (0, utils_1.createDeferred)();\n readRequests[path] = dfd;\n const abortListener = () => {\n dfd.resolve((0, result_1.error)({\n error: errors_1.ABORTED_BY_SIGNAL\n }));\n };\n signal?.addEventListener('abort', abortListener);\n return dfd.promise.finally(() => {\n signal?.removeEventListener('abort', abortListener);\n delete readRequests[path];\n });\n };\n const cancelRead = path => {\n if (readRequests[path]) {\n readRequests[path].resolve((0, result_1.error)({\n error: errors_1.INTERFACE_DATA_TRANSFER\n }));\n }\n delete readRequests[path];\n delete readBuffer[path];\n };\n return {\n onMessage,\n read,\n cancelRead\n };\n};\nexports.readMessageBuffer = readMessageBuffer;\n//# sourceMappingURL=readMessageBuffer.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UdpApi = void 0;\nconst tslib_1 = require(\"tslib\");\nconst dgram_1 = tslib_1.__importDefault(require(\"dgram\"));\nconst utils_1 = require(\"@trezor/utils\");\nconst abstract_1 = require(\"./abstract\");\nconst constants_1 = require(\"../constants\");\nconst ERRORS = tslib_1.__importStar(require(\"../errors\"));\nconst types_1 = require(\"../types\");\nconst readMessageBuffer_1 = require(\"../utils/readMessageBuffer\");\nconst PING = Buffer.from('PINGPING');\nconst PONG = Buffer.from('PONGPONG');\nclass UdpApi extends abstract_1.AbstractApi {\n chunkSize = 64;\n devices = [];\n listenAbortController = new AbortController();\n interface = dgram_1.default.createSocket({\n type: 'udp4',\n signal: this.listenAbortController.signal\n });\n debugLink;\n readBuffer;\n constructor({\n logger,\n debugLink\n }) {\n super({\n logger,\n type: 'udp'\n });\n this.debugLink = debugLink;\n this.readBuffer = (0, readMessageBuffer_1.readMessageBuffer)();\n const onMessage = (message, info) => {\n if (message.compare(PONG) === 0) {\n return;\n }\n const id = `${info.address}:${info.port}`;\n this.readBuffer.onMessage(id, message);\n this.logger?.debug('udp: globalOnMessage log:', message.toString('hex'));\n };\n this.interface.addListener('message', onMessage);\n }\n listen() {\n if (this.listening) return;\n this.listening = true;\n this.listenLoop();\n }\n async listenLoop() {\n while (this.listening) {\n await (0, utils_1.resolveAfter)(500);\n if (!this.listening) break;\n await this.enumerate(this.listenAbortController.signal);\n }\n }\n write(path, buffer, signal) {\n const [hostname, port] = path.split(':');\n return new Promise(resolve => {\n const listener = () => {\n resolve(this.error({\n error: ERRORS.ABORTED_BY_SIGNAL\n }));\n };\n signal?.addEventListener('abort', listener);\n let chunk;\n if (buffer.compare(PING) === 0) {\n chunk = buffer;\n } else {\n chunk = Buffer.alloc(this.chunkSize);\n buffer.copy(chunk);\n }\n this.interface.send(chunk, Number.parseInt(port, 10), hostname, err => {\n signal?.removeEventListener('abort', listener);\n if (signal?.aborted) {\n return;\n }\n if (err) {\n this.logger?.error(err.message);\n resolve(this.error({\n error: ERRORS.INTERFACE_DATA_TRANSFER,\n message: err.message\n }));\n }\n resolve(this.success(undefined));\n });\n });\n }\n read(path, signal) {\n return this.readBuffer.read(path, signal);\n }\n async ping(path, signal) {\n await this.write(path, PING, signal);\n if (signal?.aborted) {\n throw new Error(ERRORS.ABORTED_BY_SIGNAL);\n }\n const pinged = new Promise(resolve => {\n const onClear = () => {\n this.interface.removeListener('error', onError);\n this.interface.removeListener('message', onMessage);\n clearTimeout(timeout);\n signal?.removeEventListener('abort', onError);\n };\n const onError = () => {\n resolve(false);\n onClear();\n };\n const onMessage = (message, _info) => {\n if (message.compare(PONG) === 0) {\n resolve(true);\n onClear();\n }\n };\n signal?.addEventListener('abort', onError);\n this.interface.addListener('error', onError);\n this.interface.addListener('message', onMessage);\n const timeout = setTimeout(onError, 4000);\n });\n return pinged;\n }\n async enumerate(signal) {\n const paths = this.debugLink ? [(0, types_1.PathInternal)('127.0.0.1:21325')] : [(0, types_1.PathInternal)('127.0.0.1:21324')];\n try {\n const enumerateResult = await Promise.all(paths.map(path => this.ping(path, signal).then(pinged => pinged ? {\n path,\n type: constants_1.DEVICE_TYPE.TypeEmulator,\n product: 0,\n vendor: 0,\n id: path,\n apiType: this.type\n } : undefined))).then(res => res.filter(utils_1.isNotUndefined));\n this.handleDevicesChange(enumerateResult);\n return this.success(enumerateResult);\n } catch {\n this.handleDevicesChange([]);\n return this.error({\n error: ERRORS.ABORTED_BY_SIGNAL\n });\n }\n }\n handleDevicesChange(devices) {\n const [known, unknown] = (0, utils_1.arrayPartition)(devices, device => !!this.devices.find(d => d.path === device.path));\n const [disconnected] = (0, utils_1.arrayPartition)(this.devices, device => !devices.find(d => d.path === device.path));\n disconnected.forEach(d => this.readBuffer.cancelRead(d.path));\n if (known.length !== this.devices.length || unknown.length > 0) {\n this.devices = devices;\n if (this.listening) {\n this.emit('transport-interface-change', this.devices);\n }\n }\n }\n openDevice(_path) {\n return Promise.resolve(this.success(undefined));\n }\n closeDevice(path) {\n this.readBuffer.cancelRead(path);\n return Promise.resolve(this.success(undefined));\n }\n dispose() {\n this.interface.removeAllListeners();\n this.interface.close();\n this.listening = false;\n this.listenAbortController.abort();\n }\n}\nexports.UdpApi = UdpApi;\n//# sourceMappingURL=udp.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UdpTransport = void 0;\nconst abstractApi_1 = require(\"./abstractApi\");\nconst udp_1 = require(\"../api/udp\");\nclass UdpTransport extends abstractApi_1.AbstractApiTransport {\n name = 'UdpTransport';\n enumerateTimeout;\n constructor(params) {\n const {\n logger,\n debugLink,\n ...rest\n } = params;\n super({\n api: new udp_1.UdpApi({\n logger,\n debugLink\n }),\n logger,\n ...rest\n });\n }\n stop() {\n if (this.enumerateTimeout) {\n clearTimeout(this.enumerateTimeout);\n this.enumerateTimeout = undefined;\n }\n return super.stop();\n }\n}\nexports.UdpTransport = UdpTransport;\n//# sourceMappingURL=udp.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UdpTransport = exports.SessionsClient = exports.SessionsBackground = exports.NodeUsbTransport = exports.WebUsbTransport = exports.BridgeTransport = exports.Messages = exports.UsbApi = exports.AbstractApiTransport = exports.isTransportInstance = exports.Transport = exports.TRANSPORT = exports.TREZOR_USB_DESCRIPTORS = exports.TRANSPORT_ERROR = void 0;\nconst tslib_1 = require(\"tslib\");\nexports.TRANSPORT_ERROR = tslib_1.__importStar(require(\"./errors\"));\nvar constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"TREZOR_USB_DESCRIPTORS\", {\n enumerable: true,\n get: function () {\n return constants_1.TREZOR_USB_DESCRIPTORS;\n }\n});\nObject.defineProperty(exports, \"TRANSPORT\", {\n enumerable: true,\n get: function () {\n return constants_1.TRANSPORT;\n }\n});\nvar abstract_1 = require(\"./transports/abstract\");\nObject.defineProperty(exports, \"Transport\", {\n enumerable: true,\n get: function () {\n return abstract_1.AbstractTransport;\n }\n});\nObject.defineProperty(exports, \"isTransportInstance\", {\n enumerable: true,\n get: function () {\n return abstract_1.isTransportInstance;\n }\n});\nvar abstractApi_1 = require(\"./transports/abstractApi\");\nObject.defineProperty(exports, \"AbstractApiTransport\", {\n enumerable: true,\n get: function () {\n return abstractApi_1.AbstractApiTransport;\n }\n});\nvar usb_1 = require(\"./api/usb\");\nObject.defineProperty(exports, \"UsbApi\", {\n enumerable: true,\n get: function () {\n return usb_1.UsbApi;\n }\n});\nvar protobuf_1 = require(\"@trezor/protobuf\");\nObject.defineProperty(exports, \"Messages\", {\n enumerable: true,\n get: function () {\n return protobuf_1.Messages;\n }\n});\nvar bridge_1 = require(\"./transports/bridge\");\nObject.defineProperty(exports, \"BridgeTransport\", {\n enumerable: true,\n get: function () {\n return bridge_1.BridgeTransport;\n }\n});\nvar webusb_1 = require(\"./transports/webusb\");\nObject.defineProperty(exports, \"WebUsbTransport\", {\n enumerable: true,\n get: function () {\n return webusb_1.WebUsbTransport;\n }\n});\nvar nodeusb_1 = require(\"./transports/nodeusb\");\nObject.defineProperty(exports, \"NodeUsbTransport\", {\n enumerable: true,\n get: function () {\n return nodeusb_1.NodeUsbTransport;\n }\n});\nvar background_1 = require(\"./sessions/background\");\nObject.defineProperty(exports, \"SessionsBackground\", {\n enumerable: true,\n get: function () {\n return background_1.SessionsBackground;\n }\n});\nvar client_1 = require(\"./sessions/client\");\nObject.defineProperty(exports, \"SessionsClient\", {\n enumerable: true,\n get: function () {\n return client_1.SessionsClient;\n }\n});\nvar udp_1 = require(\"./transports/udp\");\nObject.defineProperty(exports, \"UdpTransport\", {\n enumerable: true,\n get: function () {\n return udp_1.UdpTransport;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.config = void 0;\nconst constants_1 = require(\"@trezor/transport/lib/constants\");\nexports.config = {\n webusb: constants_1.TREZOR_USB_DESCRIPTORS,\n whitelist: [{\n origin: 'chrome-extension://imloifkgjagghnncjkhggdhalmcnfklk',\n priority: 1\n }, {\n origin: 'chrome-extension://niebkpllfhmpfbffbfifagfgoamhpflf',\n priority: 1\n }, {\n origin: 'file://',\n priority: 2\n }, {\n origin: 'trezor.io',\n priority: 0\n }, {\n origin: 'sldev.cz',\n priority: 0\n }, {\n origin: 'localhost',\n priority: 0\n }, {\n origin: 'trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad.onion',\n priority: 0\n }],\n management: [{\n origin: 'trezor.io'\n }, {\n origin: 'sldev.cz'\n }, {\n origin: 'localhost'\n }],\n knownHosts: [{\n origin: 'imloifkgjagghnncjkhggdhalmcnfklk',\n label: 'Trezor Password Manager (Develop)'\n }, {\n origin: 'niebkpllfhmpfbffbfifagfgoamhpflf',\n label: 'Trezor Password Manager'\n }, {\n origin: 'mnpfhpndmjholfdlhpkjfmjkgppmodaf',\n label: 'MetaMask'\n }, {\n origin: 'webextension@metamask.io',\n label: 'MetaMask'\n }, {\n origin: 'nkbihfbeogaeaoehlefnkodbefgpgknn',\n label: 'MetaMask'\n }, {\n origin: 'bfibaipbbpipfifeecgfehbpmfhdakgo',\n label: 'Nightly DEV'\n }, {\n origin: 'fiikommddbeccaoicoejoniammnalkfa',\n label: 'Nightly'\n }, {\n origin: 'bpcdaglidgnlggelgbjfagekoapjmccp',\n label: 'Rainbow DEV'\n }, {\n origin: 'opfgelmcmbiajamepnmloijbpoleiama',\n label: 'Rainbow'\n }, {\n origin: 'acmacodkjbdgmoleebolmdjonilkdbch',\n label: 'Rabby'\n }, {\n origin: 'ehnpnhnhcickeknioaiodjmielfaoajd',\n label: 'Ambire DEV'\n }, {\n origin: 'ehgjhhccekdedpbkifaojjaefeohnoea',\n label: 'Ambire'\n }, {\n origin: 'file://',\n label: ' '\n }],\n onionDomains: {\n 'trezor.io': 'trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad.onion'\n },\n supportedBrowsers: {\n chrome: {\n version: 59,\n download: 'https://www.google.com/chrome/',\n update: 'https://support.google.com/chrome/answer/95414'\n },\n mobilechrome: {\n version: 59,\n download: 'https://www.google.com/chrome/',\n update: 'https://support.google.com/chrome/answer/95414'\n },\n chromium: {\n version: 59,\n download: 'https://www.chromium.org/',\n update: 'https://www.chromium.org/'\n },\n electron: {\n version: 0,\n download: 'https://www.electronjs.org/',\n update: 'https://www.electronjs.org/'\n },\n firefox: {\n version: 54,\n download: 'https://www.mozilla.org/en-US/firefox/new/',\n update: 'https://support.mozilla.org/en-US/kb/update-firefox-latest-version'\n },\n mobilefirefox: {\n version: 54,\n download: 'https://www.mozilla.org/en-US/firefox/new/',\n update: 'https://support.mozilla.org/en-US/kb/update-firefox-latest-version'\n },\n brave: {\n version: 59,\n download: 'https://brave.com/download/',\n update: 'https://brave.com/download/'\n },\n edge: {\n version: 79,\n download: 'https://www.microsoft.com/en-us/edge',\n update: 'https://www.microsoft.com/en-us/edge'\n },\n opera: {\n version: 95,\n download: 'https://www.opera.com/download',\n update: 'https://www.opera.com/download'\n }\n },\n supportedFirmware: [{\n coin: ['xrp', 'txrp'],\n methods: ['getAccountInfo'],\n min: {\n T1B1: '0',\n T2T1: '2.1.0'\n },\n max: undefined,\n comment: [\"Since firmware 2.1.0 there is a new protobuf field 'destination_tag' in RippleSignTx\"]\n }, {\n coin: ['bnb'],\n min: {\n T1B1: '1.9.0',\n T2T1: '2.3.0'\n },\n comment: ['There were protobuf backwards incompatible changes with introduction of 1.9.0/2.3.0 firmwares']\n }, {\n coin: ['eth', 'tsep', 'thod'],\n min: {\n T1B1: '1.8.0',\n T2T1: '2.1.0'\n },\n comment: ['There were protobuf backwards incompatible changes.']\n }, {\n coin: ['ada', 'tada'],\n min: {\n T1B1: '0',\n T2T1: '2.4.3'\n },\n comment: ['Since 2.4.3 there is initialize.derive_cardano message']\n }, {\n methods: ['rippleGetAddress', 'rippleSignTransaction'],\n min: {\n T1B1: '0',\n T2T1: '2.1.0'\n },\n comment: [\"Since firmware 2.1.0 there is a new protobuf field 'destination_tag' in RippleSignTx\"]\n }, {\n methods: ['cardanoGetAddress', 'cardanoGetPublicKey'],\n min: {\n T1B1: '0',\n T2T1: '2.4.3'\n },\n comment: ['Since 2.4.3 Cardano derivation behavior has changed']\n }, {\n methods: ['cardanoSignTransaction'],\n min: {\n T1B1: '0',\n T2T1: '2.6.0'\n },\n comment: ['Before 2.6.0 not all Cardano transactions were supported']\n }, {\n methods: ['cardanoGetNativeScriptHash'],\n min: {\n T1B1: '0',\n T2T1: '2.4.3'\n },\n comment: ['Since 2.4.3 Cardano derivation behavior has changed']\n }, {\n methods: ['tezosSignTransaction'],\n min: {\n T1B1: '0',\n T2T1: '2.1.8'\n },\n comment: ['Since 2.1.8 there are new protobuf fields in tezos transaction (Babylon fork)']\n }, {\n methods: ['stellarSignTransaction'],\n min: {\n T1B1: '1.9.0',\n T2T1: '2.3.0'\n },\n comment: ['There were protobuf backwards incompatible changes with introduction of 1.9.0/2.3.0 firmwares']\n }, {\n capabilities: ['replaceTransaction', 'amountUnit'],\n min: {\n T1B1: '1.9.4',\n T2T1: '2.3.5'\n },\n comment: ['new sign tx process since 1.9.4/2.3.5']\n }, {\n capabilities: ['decreaseOutput'],\n min: {\n T1B1: '1.10.0',\n T2T1: '2.4.0'\n },\n comment: ['allow reduce output in RBF transaction since 1.10.0/2.4.0']\n }, {\n capabilities: ['eip1559'],\n min: {\n T1B1: '1.10.4',\n T2T1: '2.4.2'\n },\n comment: ['new eth transaction pricing mechanism (EIP1559) since 1.10.4/2.4.2']\n }, {\n capabilities: ['taproot', 'signMessageNoScriptType'],\n min: {\n T1B1: '1.10.4',\n T2T1: '2.4.3'\n },\n comment: ['new btc accounts taproot since 1.10.4/2.4.3 (BTC + TEST only)', 'SignMessage with no_script_type support']\n }, {\n coin: ['dcr', 'tdcr'],\n methods: ['signTransaction'],\n min: {\n T1B1: '1.10.1',\n T2T1: '2.4.0'\n },\n comment: ['']\n }, {\n methods: ['ethereumSignTypedData'],\n min: {\n T1B1: '1.10.5',\n T2T1: '2.4.3'\n },\n comment: ['EIP-712 typed signing support added in 1.10.5/2.4.3']\n }, {\n capabilities: ['eip712-domain-only'],\n min: {\n T1B1: '1.10.6',\n T2T1: '2.4.4'\n },\n comment: ['EIP-712 domain-only signing, when primaryType=EIP712Domain']\n }, {\n capabilities: ['coinjoin'],\n methods: ['authorizeCoinjoin', 'cancelCoinjoinAuthorization', 'getOwnershipId', 'getOwnershipProof', 'setBusy', 'unlockPath'],\n min: {\n T1B1: '1.12.1',\n T2T1: '2.5.3'\n }\n }, {\n capabilities: ['tutorial'],\n methods: ['showDeviceTutorial'],\n min: {\n T1B1: '0',\n T2T1: '0',\n T3T1: '2.8.0'\n }\n }, {\n methods: ['authenticateDevice'],\n min: {\n T1B1: '0',\n T2T1: '0',\n T3T1: '2.8.0'\n }\n }, {\n capabilities: ['tropicDeviceAuthentication'],\n min: {\n T2B1: '0',\n T3B1: '0',\n T3T1: '0',\n T3W1: '2.9.3'\n }\n }, {\n capabilities: ['getFirmwareHash'],\n methods: ['getFirmwareHash'],\n min: {\n T1B1: '1.11.1',\n T2T1: '2.5.1'\n }\n }, {\n methods: ['solanaGetPublicKey', 'solanaGetAddress', 'solanaSignTransaction'],\n min: {\n T1B1: '0',\n T2T1: '2.6.4',\n T2B1: '2.6.4'\n }\n }, {\n capabilities: ['chunkify'],\n min: {\n T1B1: '0',\n T2T1: '2.6.3',\n T2B1: '2.6.3'\n },\n comment: [\"Since firmware 2.6.3 there is a new protobuf field 'chunkify' in almost all getAddress and signTx methods\"]\n }, {\n methods: ['changeLanguage'],\n min: {\n T1B1: '0',\n T2T1: '2.7.0',\n T2B1: '2.7.0'\n }\n }, {\n capabilities: ['entropyCheck'],\n min: {\n T1B1: '1.13.1',\n T2T1: '2.8.7',\n T2B1: '2.8.7',\n T3B1: '2.8.7',\n T3T1: '2.8.7'\n }\n }, {\n capabilities: ['evmApproval'],\n min: {\n T1B1: '0',\n T2T1: '2.9.0',\n T2B1: '2.9.0',\n T3B1: '2.9.0',\n T3T1: '2.9.0'\n },\n comment: ['EVM approval flow for ERC20 tokens, introduced in firmware 2.9.0']\n }, {\n capabilities: ['slip24'],\n methods: ['getNonce'],\n min: {\n T1B1: '0',\n T2T1: '2.9.1',\n T2B1: '2.9.1',\n T3B1: '2.9.1',\n T3T1: '2.9.1'\n },\n comment: ['Since firmware 2.9.1 SLIP-24 is supported']\n }, {\n methods: ['cardanoSignMessage'],\n min: {\n T1B1: '0',\n T2T1: '2.9.1',\n T2B1: '2.9.1',\n T3B1: '2.9.1',\n T3T1: '2.9.1'\n },\n comment: ['Cardano SignMessage call added in 2.9.1']\n }, {\n capabilities: ['evolu'],\n methods: ['evoluGetNode', 'evoluSignRegistrationRequest', 'evoluGetDelegatedIdentityKey'],\n min: {\n T1B1: '0',\n T2T1: '2.9.5',\n T2B1: '2.9.5',\n T3B1: '2.9.5',\n T3T1: '2.9.5'\n }\n }, {\n capabilities: ['monero'],\n methods: ['moneroGetAddress', 'moneroGetWatchKey', 'moneroKeyImageSync', 'moneroSignTransaction'],\n min: {\n T1B1: '0',\n T2T1: '2.5.3',\n T2B1: '2.5.3'\n }\n }]\n};\n//# sourceMappingURL=config.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createUiMessage = exports.UI_REQUEST = exports.UI_EVENT = void 0;\nexports.UI_EVENT = 'UI_EVENT';\nexports.UI_REQUEST = {\n TRANSPORT: 'ui-no_transport',\n BOOTLOADER: 'ui-device_bootloader_mode',\n NOT_IN_BOOTLOADER: 'ui-device_not_in_bootloader_mode',\n REQUIRE_MODE: 'ui-device_require_mode',\n INITIALIZE: 'ui-device_not_initialized',\n SEEDLESS: 'ui-device_seedless',\n FIRMWARE_OLD: 'ui-device_firmware_old',\n FIRMWARE_OUTDATED: 'ui-device_firmware_outdated',\n FIRMWARE_NOT_SUPPORTED: 'ui-device_firmware_unsupported',\n FIRMWARE_NOT_COMPATIBLE: 'ui-device_firmware_not_compatible',\n FIRMWARE_NOT_INSTALLED: 'ui-device_firmware_not_installed',\n FIRMWARE_PROGRESS: 'ui-firmware-progress',\n FIRMWARE_PROGRESS_UNEXPECTED_DELAY: 'ui-firmware-progress-unexpected-delay',\n FIRMWARE_RECONNECT: 'ui-firmware_reconnect',\n FIRMWARE_DISCONNECT: 'ui-firmware_disconnect',\n FIRMWARE_DOWNLOADED: 'ui-firmware_downloaded',\n DEVICE_NEEDS_BACKUP: 'ui-device_needs_backup',\n REQUEST_UI_WINDOW: 'ui-request_window',\n CLOSE_UI_WINDOW: 'ui-close_window',\n REQUEST_PERMISSION: 'ui-request_permission',\n REQUEST_CONFIRMATION: 'ui-request_confirmation',\n REQUEST_PIN: 'ui-request_pin',\n INVALID_PIN: 'ui-invalid_pin',\n INVALID_PIN_ATTEMPTS_DEPLETED: 'ui-invalid_pin_attempts_depleted',\n REQUEST_PASSPHRASE: 'ui-request_passphrase',\n REQUEST_PASSPHRASE_ON_DEVICE: 'ui-request_passphrase_on_device',\n INVALID_PASSPHRASE: 'ui-invalid_passphrase',\n REQUEST_THP_PAIRING: 'ui-request_thp_pairing',\n CONNECT: 'ui-connect',\n LOADING: 'ui-loading',\n SET_OPERATION: 'ui-set_operation',\n SELECT_DEVICE: 'ui-select_device',\n SELECT_ACCOUNT: 'ui-select_account',\n SELECT_FEE: 'ui-select_fee',\n UPDATE_CUSTOM_FEE: 'ui-update_custom_fee',\n INSUFFICIENT_FUNDS: 'ui-insufficient_funds',\n REQUEST_BUTTON: 'ui-button',\n REQUEST_WORD: 'ui-request_word',\n LOGIN_CHALLENGE_REQUEST: 'ui-login_challenge_request',\n BUNDLE_PROGRESS: 'ui-bundle_progress',\n ADDRESS_VALIDATION: 'ui-address_validation'\n};\nconst createUiMessage = (type, payload) => ({\n event: exports.UI_EVENT,\n type,\n payload\n});\nexports.createUiMessage = createUiMessage;\n//# sourceMappingURL=ui-request.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createUiResponse = exports.UI_RESPONSE = void 0;\nconst ui_request_1 = require(\"./ui-request\");\nexports.UI_RESPONSE = {\n RECEIVE_PERMISSION: 'ui-receive_permission',\n RECEIVE_CONFIRMATION: 'ui-receive_confirmation',\n RECEIVE_FIRMWARE: 'ui-receive_firmware',\n RECEIVE_PIN: 'ui-receive_pin',\n RECEIVE_PASSPHRASE: 'ui-receive_passphrase',\n RECEIVE_THP_PAIRING_TAG: 'ui-receive_thp_pairing_tag',\n RECEIVE_DEVICE: 'ui-receive_device',\n RECEIVE_ACCOUNT: 'ui-receive_account',\n RECEIVE_FEE: 'ui-receive_fee',\n RECEIVE_WORD: 'ui-receive_word',\n INVALID_PASSPHRASE_ACTION: 'ui-invalid_passphrase_action',\n CHANGE_SETTINGS: 'ui-change_settings',\n LOGIN_CHALLENGE_RESPONSE: 'ui-login_challenge_response'\n};\nconst createUiResponse = (type, payload) => ({\n event: ui_request_1.UI_EVENT,\n type,\n payload\n});\nexports.createUiResponse = createUiResponse;\n//# sourceMappingURL=ui-response.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createBlockchainMessage = exports.BLOCKCHAIN = exports.BLOCKCHAIN_EVENT = void 0;\nexports.BLOCKCHAIN_EVENT = 'BLOCKCHAIN_EVENT';\nexports.BLOCKCHAIN = {\n CONNECT: 'blockchain-connect',\n RECONNECTING: 'blockchain-reconnecting',\n ERROR: 'blockchain-error',\n BLOCK: 'blockchain-block',\n NOTIFICATION: 'blockchain-notification',\n FIAT_RATES_UPDATE: 'fiat-rates-update'\n};\nconst createBlockchainMessage = (type, payload) => ({\n event: exports.BLOCKCHAIN_EVENT,\n type,\n payload\n});\nexports.createBlockchainMessage = createBlockchainMessage;\n//# sourceMappingURL=blockchain.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createResponseMessage = exports.RESPONSE_EVENT = void 0;\nconst errors_1 = require(\"../constants/errors\");\nexports.RESPONSE_EVENT = 'RESPONSE_EVENT';\nconst createResponseMessage = (id, success, payload, device) => ({\n event: exports.RESPONSE_EVENT,\n type: exports.RESPONSE_EVENT,\n id,\n success,\n payload: success ? payload : (0, errors_1.serializeError)(payload),\n device: device ? {\n path: device?.getUniquePath(),\n state: device?.getState(),\n instance: device?.getInstance()\n } : undefined\n});\nexports.createResponseMessage = createResponseMessage;\n//# sourceMappingURL=call.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createErrorMessage = exports.parseMessage = exports.CORE_EVENT = void 0;\nexports.CORE_EVENT = 'CORE_EVENT';\nconst parseMessage = messageData => {\n const message = {\n event: messageData.event,\n type: messageData.type,\n payload: messageData.payload,\n device: messageData.device\n };\n if (typeof messageData.id === 'number') {\n message.id = messageData.id;\n }\n if (typeof messageData.success === 'boolean') {\n message.success = messageData.success;\n }\n return message;\n};\nexports.parseMessage = parseMessage;\nconst createErrorMessage = error => ({\n success: false,\n payload: {\n error: error.message,\n code: error.code\n }\n});\nexports.createErrorMessage = createErrorMessage;\n//# sourceMappingURL=core.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createDeviceMessage = exports.DEVICE = exports.DEVICE_EVENT = exports.TrezorPushNotificationType = exports.TrezorPushNotificationMode = void 0;\nvar protocol_tpn_1 = require(\"@trezor/protocol/lib/protocol-tpn\");\nObject.defineProperty(exports, \"TrezorPushNotificationMode\", {\n enumerable: true,\n get: function () {\n return protocol_tpn_1.TrezorPushNotificationMode;\n }\n});\nObject.defineProperty(exports, \"TrezorPushNotificationType\", {\n enumerable: true,\n get: function () {\n return protocol_tpn_1.TrezorPushNotificationType;\n }\n});\nexports.DEVICE_EVENT = 'DEVICE_EVENT';\nexports.DEVICE = {\n CONNECT: 'device-connect',\n CONNECT_UNACQUIRED: 'device-connect_unacquired',\n DISCONNECT: 'device-disconnect',\n CHANGED: 'device-changed',\n FIRMWARE_VERSION_CHANGED: 'device-firmware_version_changed',\n TREZOR_PUSH_NOTIFICATION: 'device-trezor_push_notification',\n THP_CREDENTIALS_CHANGED: 'device-thp_credentials_changed',\n BUTTON: 'button',\n PIN: 'pin',\n PASSPHRASE: 'passphrase',\n PASSPHRASE_ON_DEVICE: 'passphrase_on_device',\n WORD: 'word',\n THP_PAIRING: 'thp_pairing'\n};\nconst createDeviceMessage = (type, payload) => ({\n event: exports.DEVICE_EVENT,\n type,\n payload\n});\nexports.createDeviceMessage = createDeviceMessage;\n//# sourceMappingURL=device.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createIFrameMessage = exports.IFRAME = void 0;\nconst ui_request_1 = require(\"./ui-request\");\nexports.IFRAME = {\n BOOTSTRAP: 'iframe-bootstrap',\n LOADED: 'iframe-loaded',\n INIT: 'iframe-init',\n ERROR: 'iframe-error',\n CALL: 'iframe-call',\n LOG: 'iframe-log'\n};\nconst createIFrameMessage = (type, payload) => ({\n event: ui_request_1.UI_EVENT,\n type,\n payload\n});\nexports.createIFrameMessage = createIFrameMessage;\n//# sourceMappingURL=iframe.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createPopupMessage = exports.POPUP = void 0;\nconst ui_request_1 = require(\"./ui-request\");\nexports.POPUP = {\n BOOTSTRAP: 'popup-bootstrap',\n LOADED: 'popup-loaded',\n CORE_LOADED: 'popup-core-loaded',\n INIT: 'popup-init',\n ERROR: 'popup-error',\n EXTENSION_USB_PERMISSIONS: 'open-usb-permissions',\n HANDSHAKE: 'popup-handshake',\n CLOSED: 'popup-closed',\n CANCEL_POPUP_REQUEST: 'ui-cancel-popup-request',\n CLOSE_WINDOW: 'window.close',\n ANALYTICS_RESPONSE: 'popup-analytics-response',\n CONTENT_SCRIPT_LOADED: 'popup-content-script-loaded',\n METHOD_INFO: 'popup-method-info'\n};\nconst createPopupMessage = (type, payload) => ({\n event: ui_request_1.UI_EVENT,\n type,\n payload\n});\nexports.createPopupMessage = createPopupMessage;\n//# sourceMappingURL=popup.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.suggestUdevInstaller = void 0;\nconst info = {\n packages: [{\n name: 'RPM package',\n platform: ['rpm32', 'rpm64'],\n url: '/udev/trezor-udev-2-1.noarch.rpm'\n }, {\n name: 'DEB package',\n platform: ['deb32', 'deb64'],\n url: '/udev/trezor-udev_2_all.deb',\n preferred: true\n }]\n};\nconst suggestUdevInstaller = platform => {\n if (platform !== undefined) {\n return {\n packages: info.packages.map(it => ({\n ...it,\n preferred: it.platform.indexOf(platform) >= 0\n }))\n };\n }\n return info;\n};\nexports.suggestUdevInstaller = suggestUdevInstaller;\n//# sourceMappingURL=udevInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createTransportMessage = exports.TRANSPORT_EVENT = exports.TRANSPORT = void 0;\nconst errors_1 = require(\"../constants/errors\");\nconst udevInfo_1 = require(\"../data/udevInfo\");\nvar constants_1 = require(\"@trezor/transport/lib/constants\");\nObject.defineProperty(exports, \"TRANSPORT\", {\n enumerable: true,\n get: function () {\n return constants_1.TRANSPORT;\n }\n});\nexports.TRANSPORT_EVENT = 'TRANSPORT_EVENT';\nconst createTransportMessage = (type, payload) => ({\n event: exports.TRANSPORT_EVENT,\n type,\n payload: 'error' in payload ? (0, errors_1.serializeError)(payload) : {\n ...payload,\n udev: (0, udevInfo_1.suggestUdevInstaller)()\n }\n});\nexports.createTransportMessage = createTransportMessage;\n//# sourceMappingURL=transport.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=ui-promise.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WEBEXTENSION = void 0;\nexports.WEBEXTENSION = {\n USB_PERMISSIONS_BROADCAST: 'usb-permissions',\n USB_PERMISSIONS_INIT: 'usb-permissions-init',\n USB_PERMISSIONS_CLOSE: 'usb-permissions-close',\n USB_PERMISSIONS_FINISHED: 'usb-permissions-finished',\n CHANNEL_HANDSHAKE_CONFIRM: 'channel-handshake-confirm'\n};\n//# sourceMappingURL=webextension.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UI = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ui_request_1 = require(\"./ui-request\");\nconst ui_response_1 = require(\"./ui-response\");\ntslib_1.__exportStar(require(\"./blockchain\"), exports);\ntslib_1.__exportStar(require(\"./call\"), exports);\ntslib_1.__exportStar(require(\"./core\"), exports);\ntslib_1.__exportStar(require(\"./device\"), exports);\ntslib_1.__exportStar(require(\"./iframe\"), exports);\ntslib_1.__exportStar(require(\"./popup\"), exports);\ntslib_1.__exportStar(require(\"./transport\"), exports);\ntslib_1.__exportStar(require(\"./ui-promise\"), exports);\ntslib_1.__exportStar(require(\"./ui-request\"), exports);\ntslib_1.__exportStar(require(\"./ui-response\"), exports);\ntslib_1.__exportStar(require(\"./webextension\"), exports);\nexports.UI = {\n ...ui_request_1.UI_REQUEST,\n ...ui_response_1.UI_RESPONSE\n};\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOnionDomain = exports.getHost = exports.getOrigin = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst getOrigin = url => {\n if (typeof url !== 'string') return 'unknown';\n if (url.indexOf('file://') === 0) return 'file://';\n const [origin] = url.match(/^https?:\\/\\/[^/]+/) ?? [];\n return origin ?? 'unknown';\n};\nexports.getOrigin = getOrigin;\nconst getHost = url => {\n if (typeof url !== 'string') return;\n const [,, uri] = url.match(/^(https?):\\/\\/([^:/]+)?/i) ?? [];\n if (uri) {\n const parts = uri.split('.');\n if (parts[parts.length - 1] === 'localhost') return 'localhost';\n return parts.length > 2 ? parts.slice(parts.length - 2, parts.length).join('.') : uri;\n }\n};\nexports.getHost = getHost;\nconst getOnionDomain = (url, dict) => {\n if (Array.isArray(url)) return url.map(u => (0, utils_1.urlToOnion)(u, dict) ?? u);\n if (typeof url === 'string') return (0, utils_1.urlToOnion)(url, dict) ?? url;\n return url;\n};\nexports.getOnionDomain = getOnionDomain;\n//# sourceMappingURL=urlUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AbstractMethod = exports.DEFAULT_FIRMWARE_RANGE = void 0;\nconst connect_common_1 = require(\"@trezor/connect-common\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst config_1 = require(\"../data/config\");\nconst events_1 = require(\"../events\");\nconst urlUtils_1 = require(\"../utils/urlUtils\");\nexports.DEFAULT_FIRMWARE_RANGE = {\n UNKNOWN: {\n min: '1.0.0',\n max: '0'\n },\n T1B1: {\n min: '1.0.0',\n max: '0'\n },\n T2T1: {\n min: '2.0.0',\n max: '0'\n },\n T2B1: {\n min: '2.6.1',\n max: '0'\n },\n T3B1: {\n min: '2.8.1',\n max: '0'\n },\n T3T1: {\n min: '2.7.1',\n max: '0'\n },\n T3W1: {\n min: '2.7.1',\n max: '0'\n }\n};\nfunction validateStaticSessionId(input) {\n if (typeof input !== 'string') throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'DeviceState: invalid staticSessionId: ' + input);\n const [firstTestnetAddress, rest] = input.split('@');\n const [deviceId, instance] = rest.split(':');\n if (typeof firstTestnetAddress === 'string' && typeof deviceId === 'string' && typeof instance === 'string' && Number.parseInt(instance) >= 0) {\n return input;\n }\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'DeviceState: invalid staticSessionId: ' + input);\n}\nfunction validateDeviceState(input) {\n if (typeof input === 'string') {\n return {\n staticSessionId: validateStaticSessionId(input)\n };\n }\n if (input && typeof input === 'object') {\n const state = {};\n if ('staticSessionId' in input) {\n state.staticSessionId = validateStaticSessionId(input.staticSessionId);\n }\n if ('sessionId' in input && typeof input.sessionId === 'string') {\n state.sessionId = input.sessionId;\n }\n if ('deriveCardano' in input && typeof input.deriveCardano === 'boolean') {\n state.deriveCardano = input.deriveCardano;\n }\n return state;\n }\n return undefined;\n}\nclass AbstractMethod {\n responseID;\n device;\n params;\n deviceState;\n hasExpectedDeviceState;\n keepSession;\n skipFinalReload;\n skipFirmwareCheck;\n overridePreviousCall;\n overridden;\n name;\n payload;\n get info() {\n return '';\n }\n get confirmation() {\n return undefined;\n }\n useUi;\n useDevice;\n useDeviceState;\n preauthorized;\n useEmptyPassphrase;\n allowSeedlessDevice;\n firmwareRange;\n requiredPermissions;\n allowDeviceMode;\n requireDeviceMode;\n requiredDeviceCapabilities = [];\n network;\n useCardanoDerivation;\n noBackupConfirmationMode;\n postMessage;\n createUiPromise;\n constructor(message) {\n const {\n payload\n } = message;\n this.name = payload.method;\n this.payload = payload;\n this.responseID = message.id || 0;\n this.deviceState = validateDeviceState(payload.device?.state);\n this.hasExpectedDeviceState = payload.device ? Object.prototype.hasOwnProperty.call(payload.device, 'state') : false;\n this.keepSession = typeof payload.keepSession === 'boolean' ? payload.keepSession : false;\n this.skipFinalReload = typeof payload.skipFinalReload === 'boolean' ? payload.skipFinalReload : true;\n this.skipFirmwareCheck = false;\n this.overridePreviousCall = typeof payload.override === 'boolean' ? payload.override : false;\n this.overridden = false;\n this.useEmptyPassphrase = typeof payload.useEmptyPassphrase === 'boolean' ? payload.useEmptyPassphrase : false;\n this.allowSeedlessDevice = typeof payload.allowSeedlessDevice === 'boolean' ? payload.allowSeedlessDevice : false;\n this.allowDeviceMode = [];\n this.requireDeviceMode = [];\n if (this.allowSeedlessDevice) {\n this.allowDeviceMode = [events_1.UI.SEEDLESS];\n }\n this.network = 'bitcoin';\n (0, utils_1.typedObjectKeys)(constants_1.NETWORK.TYPES).forEach(key => {\n if (this.name.startsWith(key)) {\n this.network = key;\n }\n });\n this.firmwareRange = exports.DEFAULT_FIRMWARE_RANGE;\n this.requiredPermissions = [];\n this.useDevice = true;\n this.useDeviceState = true;\n this.useUi = true;\n this.useCardanoDerivation = typeof payload.useCardanoDerivation === 'boolean' ? payload.useCardanoDerivation : payload.method.startsWith('cardano');\n this.noBackupConfirmationMode = 'never';\n }\n setDevice(device) {\n this.device = device;\n const originalFn = this.createUiPromise;\n this.createUiPromise = (t, d) => originalFn(t, d || device);\n }\n getOriginPermissions({\n origin\n }) {\n if (!origin) {\n return [];\n }\n return connect_common_1.storage.loadForOrigin(origin)?.permissions || [];\n }\n checkPermissions({\n origin\n }) {\n const originPermissions = this.getOriginPermissions({\n origin\n });\n let notPermitted = [...this.requiredPermissions];\n if (originPermissions.length > 0) {\n notPermitted = notPermitted.filter(np => {\n const granted = originPermissions.find(p => p.type === np && p.device === this.device.features.device_id);\n return !granted;\n });\n }\n this.requiredPermissions = notPermitted;\n }\n savePermissions(temporary = false, {\n origin\n }) {\n const originPermissions = this.getOriginPermissions({\n origin\n });\n let permissionsToSave = this.requiredPermissions.map(p => ({\n type: p,\n device: this.device.features.device_id || undefined\n }));\n let emitEvent = false;\n if (this.requiredPermissions.indexOf('read') >= 0) {\n const wasAlreadyGranted = originPermissions.filter(p => p.type === 'read' && p.device === this.device.features.device_id);\n if (wasAlreadyGranted.length < 1) {\n emitEvent = true;\n }\n }\n if (originPermissions.length > 0) {\n permissionsToSave = permissionsToSave.filter(p2s => {\n const granted = originPermissions.find(p => p.type === p2s.type && p.device === p2s.device);\n return !granted;\n });\n }\n connect_common_1.storage.saveForOrigin(state => ({\n ...state,\n permissions: [...(state.permissions || []), ...permissionsToSave]\n }), origin, temporary);\n if (emitEvent) {\n this.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CONNECT, this.device.toMessageObject()));\n }\n }\n checkFirmwareRange() {\n if (this.skipFirmwareCheck) {\n return;\n }\n const {\n device\n } = this;\n if (!device.features || device.isBootloader()) return;\n if (device.isSeedless()) return;\n const range = this.firmwareRange[device.features.internal_model];\n if (device.firmwareStatus === 'none') {\n return events_1.UI.FIRMWARE_NOT_INSTALLED;\n }\n if (!range) {\n return;\n }\n if (range.min === '0') {\n return events_1.UI.FIRMWARE_NOT_SUPPORTED;\n }\n const version = device.getVersion();\n if (!version) return;\n if (this.name !== 'backupDevice' && this.name !== 'recoveryDevice' && (device.firmwareStatus === 'required' || !utils_1.versionUtils.isNewerOrEqual(version, range.min))) {\n return events_1.UI.FIRMWARE_OLD;\n }\n if (range.max !== '0' && utils_1.versionUtils.isNewer(version, range.max)) {\n return events_1.UI.FIRMWARE_NOT_COMPATIBLE;\n }\n }\n isManagementRestricted({\n popup,\n origin\n }) {\n if (popup && this.requiredPermissions.includes('management')) {\n const host = (0, urlUtils_1.getHost)(origin);\n const allowed = config_1.config.management.find(item => item.origin === host || item.origin === origin);\n return !allowed;\n }\n }\n getMethodInfo() {\n return {\n useUi: this.useUi,\n useDevice: this.useDevice,\n useDeviceState: this.useDeviceState,\n name: this.name,\n requiredPermissions: this.requiredPermissions,\n info: this.info,\n precomposed: undefined,\n confirmation: this.confirmation\n };\n }\n payloadToPrecomposed() {\n return Promise.resolve(undefined);\n }\n checkDeviceCapability() {\n const deviceHasAllRequiredCapabilities = (this.requiredDeviceCapabilities || []).every(capability => this.device.features.capabilities.includes(capability));\n if (!deviceHasAllRequiredCapabilities) {\n if (this.device.firmwareType === 'bitcoin-only') {\n throw constants_1.ERRORS.TypedError('Device_MissingCapabilityBtcOnly', `Trezor has Bitcoin-only firmware installed, which does not support this operation. Please install Universal firmware through Trezor Suite.`);\n }\n throw constants_1.ERRORS.TypedError('Device_MissingCapability', 'Device does not have capability to call this method. Make sure you have the latest firmware installed.');\n }\n }\n dispose() {}\n}\nexports.AbstractMethod = AbstractMethod;\n//# sourceMappingURL=AbstractMethod.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass ApplyFlags extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.ApplyFlags, payload);\n this.params = {\n flags: payload.flags\n };\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'confirm',\n label: 'Proceed'\n },\n label: 'Do you really want to apply flags?'\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('ApplyFlags', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = ApplyFlags;\n//# sourceMappingURL=applyFlags.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ApplySettings = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nexports.ApplySettings = schema_utils_1.Type.Composite([constants_1.PROTO.ApplySettings, schema_utils_1.Type.Object({\n passphrase_source: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n})]);\n//# sourceMappingURL=applySettings.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst applySettings_1 = require(\"../types/api/applySettings\");\nclass ApplySettings extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(applySettings_1.ApplySettings, payload);\n this.params = {\n ...payload,\n _passphrase_source: payload.passphrase_source\n };\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'confirm',\n label: 'Proceed'\n },\n label: 'Do you really want to change device settings?'\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const homescreenBytes = this.params.homescreen ? Buffer.from(this.params.homescreen, 'hex') : undefined;\n if (this.device.atLeast('2.9.0') && homescreenBytes) {\n this.params.homescreen = undefined;\n this.params.homescreen_length = homescreenBytes.length;\n }\n let response = await cmd.typedCall('ApplySettings', ['DataChunkRequest', 'Success'], this.params);\n while (response.type !== 'Success') {\n const start = response.message.data_offset;\n const end = start + response.message.data_length;\n const data_chunk = homescreenBytes?.subarray(start, end).toString('hex') || '';\n response = await cmd.typedCall('DataChunkAck', ['DataChunkRequest', 'Success'], {\n data_chunk\n });\n }\n return response.message;\n }\n}\nexports.default = ApplySettings;\n//# sourceMappingURL=applySettings.js.map", "/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number, title: string = ''): void {\n if (!Number.isSafeInteger(n) || n < 0) {\n const prefix = title && `\"${title}\" `;\n throw new Error(`${prefix}expected integer >= 0, got ${n}`);\n }\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n/** Asserts something is hash */\nexport function ahash(h: CHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash must wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out, undefined, 'digestInto() output');\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('\"digestInto() output\" expected to be of length >=' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\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 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) 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/**\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 (): Promise => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise {\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) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * Built-in doesn't validate input to be string: we do the check.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput, errorTitle = ''): Uint8Array {\n if (typeof data === 'string') return utf8ToBytes(data);\n return abytes(data, undefined, errorTitle);\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\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\ntype EmptyObj = {};\n/** Merges default options and passed options. */\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n throw new Error('options must be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\n/** Common interface for all hashes. */\nexport interface Hash {\n blockLen: number; // Bytes per block\n outputLen: number; // Bytes in output\n update(buf: Uint8Array): this;\n digestInto(buf: Uint8Array): void;\n digest(): Uint8Array;\n destroy(): void;\n _cloneInto(to?: T): T;\n clone(): T;\n}\n\n/** PseudoRandom (number) Generator */\nexport interface PRG {\n addEntropy(seed: Uint8Array): void;\n randomBytes(length: number): Uint8Array;\n clean(): void;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash constructor */\nexport type HasherCons = Opts extends undefined ? () => T : (opts?: Opts) => T;\n/** Optional hash params. */\nexport type HashInfo = {\n oid?: Uint8Array; // DER encoded OID in bytes\n};\n/** Hash function */\nexport type CHash = Hash, Opts = undefined> = {\n outputLen: number;\n blockLen: number;\n} & HashInfo &\n (Opts extends undefined\n ? {\n (msg: Uint8Array): Uint8Array;\n create(): T;\n }\n : {\n (msg: Uint8Array, opts?: Opts): Uint8Array;\n create(opts?: Opts): T;\n });\n/** XOF with output */\nexport type CHashXOF = HashXOF, Opts = undefined> = CHash;\n\n/** Creates function with outputLen, blockLen, create properties from a class constructor. */\nexport function createHasher, Opts = undefined>(\n hashCons: HasherCons,\n info: HashInfo = {}\n): CHash {\n const hashC: any = (msg: Uint8Array, opts?: Opts) => hashCons(opts).update(msg).digest();\n const tmp = hashCons(undefined);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: Opts) => hashCons(opts);\n Object.assign(hashC, info);\n return Object.freeze(hashC);\n}\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n const cr = typeof globalThis === 'object' ? (globalThis as any).crypto : null;\n if (typeof cr?.getRandomValues !== 'function')\n throw new Error('crypto.getRandomValues must be defined');\n return cr.getRandomValues(new Uint8Array(bytesLength));\n}\n\n/** Creates OID opts for NIST hashes, with prefix 06 09 60 86 48 01 65 03 04 02. */\nexport const oidNist = (suffix: number): Required => ({\n oid: Uint8Array.from([0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, suffix]),\n});\n", "/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { abytes, aexists, aoutput, clean, createView, type Hash } from './utils.ts';\n\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD> implements Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Uint8Array): this {\n aexists(this);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) 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: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) 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 view.setBigUint64(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 must be fused in single op with modulo by JIT\n if (len % 4) throw new Error('_sha2: outputLen must be aligned to 32bit');\n const outLen = len / 4;\n const state = this.get();\n if (outLen > state.length) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\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?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to as unknown as any;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n", "/**\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);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) 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}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\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(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\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: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\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", "/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://www.rfc-editor.org/rfc/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, oidNist, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\n\n/** Internal 32-byte base SHA2 hash class. */\nabstract class SHA2_32B> extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected abstract A: number;\n protected abstract B: number;\n protected abstract C: number;\n protected abstract D: number;\n protected abstract E: number;\n protected abstract F: number;\n protected abstract G: number;\n protected abstract H: number;\n\n constructor(outputLen: number) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\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 protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\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 protected process(view: DataView, offset: number): void {\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) 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 protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** Internal SHA2-256 hash class. */\nexport class _SHA256 extends SHA2_32B<_SHA256> {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n constructor() {\n super(32);\n }\n}\n\n/** Internal SHA2-224 hash class. */\nexport class _SHA224 extends SHA2_32B<_SHA224> {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\n/** Internal 64-byte base SHA2 hash class. */\nabstract class SHA2_64B> extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected abstract Ah: number;\n protected abstract Al: number;\n protected abstract Bh: number;\n protected abstract Bl: number;\n protected abstract Ch: number;\n protected abstract Cl: number;\n protected abstract Dh: number;\n protected abstract Dl: number;\n protected abstract Eh: number;\n protected abstract El: number;\n protected abstract Fh: number;\n protected abstract Fl: number;\n protected abstract Gh: number;\n protected abstract Gl: number;\n protected abstract Hh: number;\n protected abstract Hl: number;\n\n constructor(outputLen: number) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\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 protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\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 protected process(view: DataView, offset: number): void {\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 protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\n/** Internal SHA2-512 hash class. */\nexport class _SHA512 extends SHA2_64B<_SHA512> {\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor() {\n super(64);\n }\n}\n\n/** Internal SHA2-384 hash class. */\nexport class _SHA384 extends SHA2_64B<_SHA384> {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\n/** Internal SHA2-512/224 hash class. */\nexport class _SHA512_224 extends SHA2_64B<_SHA512_224> {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\n/** Internal SHA2-512/256 hash class. */\nexport class _SHA512_256 extends SHA2_64B<_SHA512_256> {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634. In JS it's the fastest: even faster than Blake3. Some info:\n *\n * - Trying 2^128 hashes would get 50% chance of collision, using birthday attack.\n * - BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n * - Each sha256 hash is executing 2^18 bit operations.\n * - Good 2024 ASICs can do 200Th/sec with 3500 watts of power, corresponding to 2^36 hashes/joule.\n */\nexport const sha256: CHash<_SHA256> = /* @__PURE__ */ createHasher(\n () => new _SHA256(),\n /* @__PURE__ */ oidNist(0x01)\n);\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash<_SHA224> = /* @__PURE__ */ createHasher(\n () => new _SHA224(),\n /* @__PURE__ */ oidNist(0x04)\n);\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash<_SHA512> = /* @__PURE__ */ createHasher(\n () => new _SHA512(),\n /* @__PURE__ */ oidNist(0x03)\n);\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash<_SHA384> = /* @__PURE__ */ createHasher(\n () => new _SHA384(),\n /* @__PURE__ */ oidNist(0x02)\n);\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash<_SHA512_256> = /* @__PURE__ */ createHasher(\n () => new _SHA512_256(),\n /* @__PURE__ */ oidNist(0x06)\n);\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash<_SHA512_224> = /* @__PURE__ */ createHasher(\n () => new _SHA512_224(),\n /* @__PURE__ */ oidNist(0x05)\n);\n", "/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abytes as abytes_,\n anumber,\n bytesToHex as bytesToHex_,\n concatBytes as concatBytes_,\n hexToBytes as hexToBytes_,\n} from '@noble/hashes/utils.js';\nexport {\n abytes,\n anumber,\n bytesToHex,\n concatBytes,\n hexToBytes,\n isBytes,\n randomBytes,\n} from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\n\nexport type CHash = {\n (message: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array) => Uint8Array;\nexport function abool(value: boolean, title: string = ''): boolean {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\" `;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n\n// Used in weierstrass, der\nfunction abignumber(n: number | bigint) {\n if (typeof n === 'bigint') {\n if (!isPosBig(n)) throw new Error('positive bigint expected, got ' + n);\n } else anumber(n);\n return n;\n}\n\nexport function asafenumber(value: number, title: string = ''): void {\n if (!Number.isSafeInteger(value)) {\n const prefix = title && `\"${title}\" `;\n throw new Error(prefix + 'expected safe integer, got type=' + typeof value);\n }\n}\n\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = abignumber(num).toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex_(copyBytes(abytes_(bytes)).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n anumber(len);\n n = abignumber(n);\n const res = hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n if (res.length !== len) throw new Error('number too large');\n return res;\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes_(numberToHexUnpadded(abignumber(n)));\n}\n\n// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes: Uint8Array): Uint8Array {\n return Uint8Array.from(bytes);\n}\n\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as `TextEncoder` for ASCII or throws.\n */\nexport function asciiToBytes(ascii: string): Uint8Array {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(\n `string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`\n );\n }\n return charCode;\n });\n}\n\n// Is positive bigint\nconst isPosBig = (n: bigint) => typeof n === 'bigint' && _0n <= n;\n\nexport function inRange(n: bigint, min: bigint, max: bigint): boolean {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\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: string, n: bigint, min: bigint, max: bigint): void {\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\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n: bigint): number {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\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: bigint, pos: number): bigint {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean): bigint {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\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: number): bigint => (_1n << BigInt(n)) - _1n;\n\n// DRBG\n\ntype Pred = (v: Uint8Array) => T | undefined;\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(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, message: Uint8Array) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n anumber(hashLen, 'hashLen');\n anumber(qByteLen, 'qByteLen');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n const u8n = (len: number): Uint8Array => new Uint8Array(len); // creates Uint8Array\n const NULL = Uint8Array.of();\n const byte0 = Uint8Array.of(0x00);\n const byte1 = Uint8Array.of(0x01);\n const _maxDrbgIters = 1000;\n\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 = (...msgs: Uint8Array[]) => hmacFn(k, concatBytes_(v, ...msgs)); // hmac(k)(v, ...values)\n const reseed = (seed: Uint8Array = NULL) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(byte0, seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(byte1, 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++ >= _maxDrbgIters) throw new Error('drbg: tried max amount of iterations');\n let len = 0;\n const out: Uint8Array[] = [];\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: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\nexport function validateObject(\n object: Record,\n fields: Record = {},\n optFields: Record = {}\n): void {\n if (!object || typeof object !== 'object') throw new Error('expected valid options object');\n type Item = keyof typeof object;\n function checkField(fieldName: Item, expectedType: string, isOpt: boolean) {\n const val = object[fieldName];\n if (isOpt && val === undefined) return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n const iter = (f: typeof fields, isOpt: boolean) =>\n Object.entries(f).forEach(([k, v]) => checkField(k, v, isOpt));\n iter(fields, false);\n iter(optFields, true);\n}\n\n/**\n * throws not implemented error\n */\nexport const notImplemented = (): never => {\n throw new Error('not implemented');\n};\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(\n fn: (arg: T, ...args: O) => R\n): (arg: T, ...args: O) => R {\n const map = new WeakMap();\n return (arg: T, ...args: O): R => {\n const val = map.get(arg);\n if (val !== undefined) return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n\nexport interface CryptoKeys {\n lengths: { seed?: number; public?: number; secret?: number };\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n getPublicKey: (secretKey: Uint8Array) => Uint8Array;\n}\n\n/** Generic interface for signatures. Has keygen, sign and verify. */\nexport interface Signer extends CryptoKeys {\n // Interfaces are fun. We cannot just add new fields without copying old ones.\n lengths: {\n seed?: number;\n public?: number;\n secret?: number;\n signRand?: number;\n signature?: number;\n };\n sign: (msg: Uint8Array, secretKey: Uint8Array) => Uint8Array;\n verify: (sig: Uint8Array, msg: Uint8Array, publicKey: Uint8Array) => boolean;\n}\n", "/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abytes,\n anumber,\n bytesToNumberBE,\n bytesToNumberLE,\n numberToBytesBE,\n numberToBytesLE,\n validateObject,\n} from '../utils.ts';\n\n// Numbers aren't used in x25519 / x448 builds\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = /* @__PURE__ */ BigInt(1), _2n = /* @__PURE__ */ BigInt(2);\n// prettier-ignore\nconst _3n = /* @__PURE__ */ BigInt(3), _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5);\n// prettier-ignore\nconst _7n = /* @__PURE__ */ BigInt(7), _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9);\nconst _16n = /* @__PURE__ */ BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n return FpPow(Field(modulo), num, power);\n}\n\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n) throw new Error('invert: expected non-zero number');\n if (modulo <= _0n) 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) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\nfunction assertIsSquare(Fp: IField, root: T, n: T): void {\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n}\n\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp: IField, n: T) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\n\nfunction sqrt5mod8(Fp: IField, n: T) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P: bigint): (Fp: IField, n: T) => T {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE));// 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp: IField, n: T) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3);// 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint): (Fp: IField, n: T) => T {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n) throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000) throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1) return sqrt3mod4;\n\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n if (Fp.is0(n)) return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1) throw new Error('Cannot find square root');\n\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t)) return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n\n // Find the smallest i >= 1 such that t^(2^i) \u2261 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M) throw new Error('Cannot find square root');\n }\n\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P \u2261 3 (mod 4)\n * 2. P \u2261 5 (mod 8)\n * 3. P \u2261 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: bigint): (Fp: IField, n: T) => T {\n // P \u2261 3 (mod 4) => \u221An = n^((P+1)/4)\n if (P % _4n === _3n) return sqrt3mod4;\n // P \u2261 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n) return sqrt5mod8;\n // P \u2261 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n) return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint): boolean =>\n (mod(num, modulo) & _1n) === _1n;\n\n/** Field is not always over prime: for example, Fp2 has ORDER(q)=p^m. */\nexport interface IField {\n ORDER: bigint;\n BYTES: number;\n BITS: number;\n isLE: boolean;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n isValidNot0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n // legendre?(num: T): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array, skipValidation?: boolean): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\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] as const;\nexport function validateField(field: IField): IField {\n const initial = {\n ORDER: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp: IField, num: T, power: bigint): T {\n if (power < _0n) throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n) return Fp.ONE;\n if (power === _1n) return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp: IField, nums: T[], passZero = false): T[] {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num)) return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num)) return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n\n// TODO: remove\nexport function FpDiv(Fp: IField, lhs: T, rhs: T | bigint): T {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) \u2261 1 if a is a square (mod p), quadratic residue\n * * (a | p) \u2261 -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) \u2261 0 if a \u2261 0 (mod p)\n */\nexport function FpLegendre(Fp: IField, n: T): -1 | 0 | 1 {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no) throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp: IField, n: T): boolean {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n\nexport type NLength = { nByteLength: number; nBitLength: number };\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number): NLength {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined) anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\ntype SqrtFn = (n: bigint) => bigint;\ntype FieldOpts = Partial<{\n isLE: boolean;\n BITS: number;\n sqrt: SqrtFn;\n allowedLengths?: readonly number[]; // for P521 (adds padding for smaller sizes)\n modFromBytes: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n}>;\nclass _Field implements IField {\n readonly ORDER: bigint;\n readonly BITS: number;\n readonly BYTES: number;\n readonly isLE: boolean;\n readonly ZERO = _0n;\n readonly ONE = _1n;\n readonly _lengths?: number[];\n private _sqrt: ReturnType | undefined; // cached sqrt\n private readonly _mod?: boolean;\n constructor(ORDER: bigint, opts: FieldOpts = {}) {\n if (ORDER <= _0n) throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength: number | undefined = undefined;\n this.isLE = false;\n if (opts != null && typeof opts === 'object') {\n if (typeof opts.BITS === 'number') _nbitLength = opts.BITS;\n if (typeof opts.sqrt === 'function') this.sqrt = opts.sqrt;\n if (typeof opts.isLE === 'boolean') this.isLE = opts.isLE;\n if (opts.allowedLengths) this._lengths = opts.allowedLengths?.slice();\n if (typeof opts.modFromBytes === 'boolean') this._mod = opts.modFromBytes;\n }\n const { nBitLength, nByteLength } = nLength(ORDER, _nbitLength);\n if (nByteLength > 2048) throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n this.ORDER = ORDER;\n this.BITS = nBitLength;\n this.BYTES = nByteLength;\n this._sqrt = undefined;\n Object.preventExtensions(this);\n }\n\n create(num: bigint) {\n return mod(num, this.ORDER);\n }\n isValid(num: bigint) {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < this.ORDER; // 0 is valid element, but it's not invertible\n }\n is0(num: bigint) {\n return num === _0n;\n }\n // is valid and invertible\n isValidNot0(num: bigint) {\n return !this.is0(num) && this.isValid(num);\n }\n isOdd(num: bigint) {\n return (num & _1n) === _1n;\n }\n neg(num: bigint) {\n return mod(-num, this.ORDER);\n }\n eql(lhs: bigint, rhs: bigint) {\n return lhs === rhs;\n }\n\n sqr(num: bigint) {\n return mod(num * num, this.ORDER);\n }\n add(lhs: bigint, rhs: bigint) {\n return mod(lhs + rhs, this.ORDER);\n }\n sub(lhs: bigint, rhs: bigint) {\n return mod(lhs - rhs, this.ORDER);\n }\n mul(lhs: bigint, rhs: bigint) {\n return mod(lhs * rhs, this.ORDER);\n }\n pow(num: bigint, power: bigint): bigint {\n return FpPow(this, num, power);\n }\n div(lhs: bigint, rhs: bigint) {\n return mod(lhs * invert(rhs, this.ORDER), this.ORDER);\n }\n\n // Same as above, but doesn't normalize\n sqrN(num: bigint) {\n return num * num;\n }\n addN(lhs: bigint, rhs: bigint) {\n return lhs + rhs;\n }\n subN(lhs: bigint, rhs: bigint) {\n return lhs - rhs;\n }\n mulN(lhs: bigint, rhs: bigint) {\n return lhs * rhs;\n }\n\n inv(num: bigint) {\n return invert(num, this.ORDER);\n }\n sqrt(num: bigint): bigint {\n // Caching _sqrt speeds up sqrt9mod16 by 5x and tonneli-shanks by 10%\n if (!this._sqrt) this._sqrt = FpSqrt(this.ORDER);\n return this._sqrt(this, num);\n }\n toBytes(num: bigint) {\n return this.isLE ? numberToBytesLE(num, this.BYTES) : numberToBytesBE(num, this.BYTES);\n }\n fromBytes(bytes: Uint8Array, skipValidation = false) {\n abytes(bytes);\n const { _lengths: allowedLengths, BYTES, isLE, ORDER, _mod: modFromBytes } = this;\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error(\n 'Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length\n );\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes) scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!this.isValid(scalar))\n throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n }\n // TODO: we don't need it here, move out to separate fn\n invertBatch(lst: bigint[]): bigint[] {\n return FpInvertBatch(this, lst);\n }\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov(a: bigint, b: bigint, condition: boolean) {\n return condition ? b : a;\n }\n}\n\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(ORDER: bigint, opts: FieldOpts = {}): Readonly {\n return new _Field(ORDER, opts);\n}\n\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\n\nexport function FpSqrtOdd(Fp: IField, elm: T): T {\n if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T): T {\n if (!Fp.isOdd) 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/**\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: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\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: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\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.Point.Fn.ORDER)\n * @param isLE interpret hash bytes as LE num\n * @returns valid private scalar\n */\nexport function mapHashToField(key: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\n abytes(key);\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", "/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, type Signer } from '../utils.ts';\nimport { Field, FpInvertBatch, validateField, type IField } from './modular.ts';\n\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { Z?: never };\n\n// We can't \"abstract out\" coordinates (X, Y, Z; and T in Edwards): argument names of constructor\n// are not accessible. See Typescript gh-56093, gh-41594.\n//\n// We have to use recursive types, so it will return actual point, not constained `CurvePoint`.\n// If, at any point, P is `any`, it will erase all types and replace it\n// with `any`, because of recursion, `any implements CurvePoint`,\n// but we lose all constrains on methods.\n\n/** Base interface for all elliptic curve Points. */\nexport interface CurvePoint> {\n /** Affine x coordinate. Different from projective / extended X coordinate. */\n x: F;\n /** Affine y coordinate. Different from projective / extended Y coordinate. */\n y: F;\n Z?: F;\n double(): P;\n negate(): P;\n add(other: P): P;\n subtract(other: P): P;\n equals(other: P): boolean;\n multiply(scalar: bigint): P;\n assertValidity(): void;\n clearCofactor(): P;\n is0(): boolean;\n isTorsionFree(): boolean;\n isSmallOrder(): boolean;\n multiplyUnsafe(scalar: bigint): P;\n /**\n * Massively speeds up `p.multiply(n)` by using precompute tables (caching). See {@link wNAF}.\n * @param isLazy calculate cache now. Default (true) ensures it's deferred to first `multiply()`\n */\n precompute(windowSize?: number, isLazy?: boolean): P;\n /** Converts point to 2D xy affine coordinates */\n toAffine(invertedZ?: F): AffinePoint;\n toBytes(): Uint8Array;\n toHex(): string;\n}\n\n/** Base interface for all elliptic curve Point constructors. */\nexport interface CurvePointCons

> {\n [Symbol.hasInstance]: (item: unknown) => boolean;\n BASE: P;\n ZERO: P;\n /** Field for basic curve math */\n Fp: IField>;\n /** Scalar field, for scalars in multiply and others */\n Fn: IField;\n /** Creates point from x, y. Does NOT validate if the point is valid. Use `.assertValidity()`. */\n fromAffine(p: AffinePoint>): P;\n fromBytes(bytes: Uint8Array): P;\n fromHex(hex: string): P;\n}\n\n// Type inference helpers: PC - PointConstructor, P - Point, Fp - Field element\n// Short names, because we use them a lot in result types:\n// * we can't do 'P = GetCurvePoint': this is default value and doesn't constrain anything\n// * we can't do 'type X = GetCurvePoint': it won't be accesible for arguments/return types\n// * `CurvePointCons

>` constraints from interface definition\n// won't propagate, if `PC extends CurvePointCons`: the P would be 'any', which is incorrect\n// * PC could be super specific with super specific P, which implements CurvePoint.\n// this means we need to do stuff like\n// `function test

, PC extends CurvePointCons

>(`\n// if we want type safety around P, otherwise PC_P will be any\n\n/** Returns Fp type from Point (P_F

== P.F) */\nexport type P_F

> = P extends CurvePoint ? F : never;\n/** Returns Fp type from PointCons (PC_F == PC.P.F) */\nexport type PC_F>> = PC['Fp']['ZERO'];\n/** Returns Point type from PointCons (PC_P == PC.P) */\nexport type PC_P>> = PC['ZERO'];\n\n// Ugly hack to get proper type inference, because in typescript fails to infer resursively.\n// The hack allows to do up to 10 chained operations without applying type erasure.\n//\n// Types which won't work:\n// * `CurvePointCons>`, will return `any` after 1 operation\n// * `CurvePointCons: WeierstrassPointCons extends CurvePointCons = false`\n// * `P extends CurvePoint, PC extends CurvePointCons

`\n// * It can't infer P from PC alone\n// * Too many relations between F, P & PC\n// * It will infer P/F if `arg: CurvePointCons`, but will fail if PC is generic\n// * It will work correctly if there is an additional argument of type P\n// * But generally, we don't want to parametrize `CurvePointCons` over `F`: it will complicate\n// types, making them un-inferable\n// prettier-ignore\nexport type PC_ANY = CurvePointCons<\n CurvePoint\n >>>>>>>>>\n>;\n\nexport interface CurveLengths {\n secretKey?: number;\n publicKey?: number;\n publicKeyUncompressed?: number;\n publicKeyHasPrefix?: boolean;\n signature?: number;\n seed?: number;\n}\n\nexport type Mapper = (i: T[]) => T[];\n\nexport function negateCt T }>(condition: boolean, item: T): T {\n const neg = item.negate();\n return condition ? neg : item;\n}\n\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ

, PC extends CurvePointCons

>(\n c: PC,\n points: P[]\n): P[] {\n const invertedZs = FpInvertBatch(\n c.Fp,\n points.map((p) => p.Z!)\n );\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\n\nfunction validateW(W: number, bits: number) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\n\n/** Internal wNAF opts for specific W and scalarBits */\ntype WOpts = {\n windows: number;\n windowSize: number;\n mask: bigint;\n maxNumber: number;\n shiftBy: bigint;\n};\n\nfunction calcWOpts(W: number, scalarBits: number): WOpts {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\n\nfunction calcOffsets(n: bigint, window: number, wOpts: WOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\n\nfunction validateMSMPoints(points: any[], c: any) {\n if (!Array.isArray(points)) throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c)) throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars: any[], field: any) {\n if (!Array.isArray(scalars)) throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s)) throw new Error('invalid scalar at index ' + i);\n });\n}\n\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\n\nfunction getW(P: any): number {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\n\nfunction assert0(n: bigint): void {\n if (n !== _0n) throw new Error('invalid wNAF');\n}\n\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / \uD835\uDC4A) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n private readonly BASE: PC_P;\n private readonly ZERO: PC_P;\n private readonly Fn: PC['Fn'];\n readonly bits: number;\n\n // Parametrized with a given Point class (not individual point)\n constructor(Point: PC, bits: number) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n\n // non-const time multiplication ladder\n _unsafeLadder(elm: PC_P, n: bigint, p: PC_P = this.ZERO): PC_P {\n let d: PC_P = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\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^(\uD835\uDC4A\u22121) * (Math.ceil(\uD835\uDC5B / \uD835\uDC4A) + 1), where:\n * - \uD835\uDC4A is the window size\n * - \uD835\uDC5B is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n private precomputeWindow(point: PC_P, W: number): PC_P[] {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points: PC_P[] = [];\n let p: PC_P = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n private wNAF(W: number, precomputes: PC_P[], n: bigint): { p: PC_P; f: PC_P } {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n)) throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n } else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n private wNAFUnsafe(\n W: number,\n precomputes: PC_P[],\n n: bigint,\n acc: PC_P = this.ZERO\n ): PC_P {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n) break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n } else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n\n private getPrecomputes(W: number, point: PC_P, transform?: Mapper>): PC_P[] {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W) as PC_P[];\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function') comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n\n cached(\n point: PC_P,\n scalar: bigint,\n transform?: Mapper>\n ): { p: PC_P; f: PC_P } {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n\n unsafe(point: PC_P, scalar: bigint, transform?: Mapper>, prev?: PC_P): PC_P {\n const W = getW(point);\n if (W === 1) return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P: PC_P, W: number): void {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n\n hasCache(elm: PC_P): boolean {\n return getW(elm) !== 1;\n }\n}\n\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe

, PC extends CurvePointCons

>(\n Point: PC,\n point: P,\n k1: bigint,\n k2: bigint\n): { p1: P; p2: P } {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) p1 = p1.add(acc);\n if (k2 & _1n) p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\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 than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger

, PC extends CurvePointCons

>(\n c: PC,\n points: P[],\n scalars: bigint[]\n): P {\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 const fieldN = c.Fn;\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength) throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12) windowSize = wbits - 3;\n else if (wbits > 4) windowSize = wbits - 2;\n else if (wbits > 0) windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0) for (let j = 0; j < windowSize; j++) sum = sum.double();\n }\n return sum as P;\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

, PC extends CurvePointCons

>(\n c: PC,\n points: P[],\n windowSize: number\n): (scalars: bigint[]) => P {\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 \u00D7 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 \u00D7 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 \u00D7 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 const fieldN = c.Fn;\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p: 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: bigint[]): P => {\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) for (let j = 0; j < windowSize; j++) 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) continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n\nexport type ValidCurveParams = {\n p: bigint;\n n: bigint;\n h: bigint;\n a: T;\n b?: T;\n d?: T;\n Gx: T;\n Gy: T;\n};\n\nfunction createField(order: bigint, field?: IField, isLE?: boolean): IField {\n if (field) {\n if (field.ORDER !== order) throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n } else {\n return Field(order, { isLE }) as unknown as IField;\n }\n}\nexport type FpFn = { Fp: IField; Fn: IField };\n\n/** Validates CURVE opts and creates fields */\nexport function createCurveFields(\n type: 'weierstrass' | 'edwards',\n CURVE: ValidCurveParams,\n curveOpts: Partial> = {},\n FpFnLE?: boolean\n): FpFn & { CURVE: ValidCurveParams } {\n if (FpFnLE === undefined) FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object') throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h'] as const) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b: 'b' | 'd' = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b] as const;\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\n\ntype KeygenFn = (\n seed?: Uint8Array,\n isCompressed?: boolean\n) => { secretKey: Uint8Array; publicKey: Uint8Array };\nexport function createKeygen(\n randomSecretKey: Function,\n getPublicKey: Signer['getPublicKey']\n): KeygenFn {\n return function keygen(seed?: Uint8Array) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n };\n}\n", "/**\n * Twisted Edwards curve. The formula is: ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2.\n * For design rationale of types / exports, see weierstrass module documentation.\n * Untwisted Edwards curves exist, but they aren't used in real-world protocols.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abool,\n abytes,\n aInRange,\n bytesToHex,\n bytesToNumberLE,\n concatBytes,\n copyBytes,\n hexToBytes,\n isBytes,\n memoized,\n notImplemented,\n validateObject,\n randomBytes as wcRandomBytes,\n type FHash,\n type Signer,\n} from '../utils.ts';\nimport {\n createCurveFields,\n createKeygen,\n normalizeZ,\n wNAF,\n type AffinePoint,\n type CurveLengths,\n type CurvePoint,\n type CurvePointCons,\n} from './curve.ts';\nimport { type IField } from './modular.ts';\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), _8n = BigInt(8);\n\n/** Instance of Extended Point with coordinates in X, Y, Z, T. */\nexport interface EdwardsPoint extends CurvePoint {\n /** extended X coordinate. Different from affine x. */\n readonly X: bigint;\n /** extended Y coordinate. Different from affine y. */\n readonly Y: bigint;\n /** extended Z coordinate */\n readonly Z: bigint;\n /** extended T coordinate */\n readonly T: bigint;\n}\n/** Static methods of Extended Point with coordinates in X, Y, Z, T. */\nexport interface EdwardsPointCons extends CurvePointCons {\n new (X: bigint, Y: bigint, Z: bigint, T: bigint): EdwardsPoint;\n CURVE(): EdwardsOpts;\n fromBytes(bytes: Uint8Array, zip215?: boolean): EdwardsPoint;\n fromHex(hex: string, zip215?: boolean): EdwardsPoint;\n}\n\n/**\n * Twisted Edwards curve options.\n *\n * * a: formula param\n * * d: formula param\n * * p: prime characteristic (order) of finite field, in which arithmetics is done\n * * n: order of prime subgroup a.k.a total amount of valid curve points\n * * h: cofactor. h*n is group order; n is subgroup order\n * * Gx: x coordinate of generator point a.k.a. base point\n * * Gy: y coordinate of generator point\n */\nexport type EdwardsOpts = Readonly<{\n p: bigint;\n n: bigint;\n h: bigint;\n a: bigint;\n d: bigint;\n Gx: bigint;\n Gy: bigint;\n}>;\n\n/**\n * Extra curve options for Twisted Edwards.\n *\n * * Fp: redefined Field over curve.p\n * * Fn: redefined Field over curve.n\n * * uvRatio: helper function for decompression, calculating \u221A(u/v)\n */\nexport type EdwardsExtraOpts = Partial<{\n Fp: IField;\n Fn: IField;\n FpFnLE: boolean;\n uvRatio: (u: bigint, v: bigint) => { isValid: boolean; value: bigint };\n}>;\n\n/**\n * EdDSA (Edwards Digital Signature algorithm) options.\n *\n * * hash: hash function used to hash secret keys and messages\n * * adjustScalarBytes: clears bits to get valid field element\n * * domain: Used for hashing\n * * mapToCurve: for hash-to-curve standard\n * * prehash: RFC 8032 pre-hashing of messages to sign() / verify()\n * * randomBytes: function generating random bytes, used for randomSecretKey\n */\nexport type EdDSAOpts = Partial<{\n adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;\n domain: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array;\n mapToCurve: (scalar: bigint[]) => AffinePoint;\n prehash: FHash;\n randomBytes: (bytesLength?: number) => Uint8Array;\n}>;\n\n/**\n * EdDSA (Edwards Digital Signature algorithm) interface.\n *\n * Allows to create and verify signatures, create public and secret keys.\n */\nexport interface EdDSA {\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n getPublicKey: (secretKey: Uint8Array) => Uint8Array;\n sign: (\n message: Uint8Array,\n secretKey: Uint8Array,\n options?: { context?: Uint8Array }\n ) => Uint8Array;\n verify: (\n sig: Uint8Array,\n message: Uint8Array,\n publicKey: Uint8Array,\n options?: { context?: Uint8Array; zip215: boolean }\n ) => boolean;\n Point: EdwardsPointCons;\n utils: {\n randomSecretKey: (seed?: Uint8Array) => Uint8Array;\n isValidSecretKey: (secretKey: Uint8Array) => boolean;\n isValidPublicKey: (publicKey: Uint8Array, zip215?: boolean) => boolean;\n\n /**\n * Converts ed public key to x public key.\n *\n * There is NO `fromMontgomery`:\n * - There are 2 valid ed25519 points for every x25519, with flipped coordinate\n * - Sometimes there are 0 valid ed25519 points, because x25519 *additionally*\n * accepts inputs on the quadratic twist, which can't be moved to ed25519\n *\n * @example\n * ```js\n * const someonesPub_ed = ed25519.getPublicKey(ed25519.utils.randomSecretKey());\n * const someonesPub = ed25519.utils.toMontgomery(someonesPub);\n * const aPriv = x25519.utils.randomSecretKey();\n * const shared = x25519.getSharedSecret(aPriv, someonesPub)\n * ```\n */\n toMontgomery: (publicKey: Uint8Array) => Uint8Array;\n /**\n * Converts ed secret key to x secret key.\n * @example\n * ```js\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomSecretKey());\n * const aPriv_ed = ed25519.utils.randomSecretKey();\n * const aPriv = ed25519.utils.toMontgomerySecret(aPriv_ed);\n * const shared = x25519.getSharedSecret(aPriv, someonesPub)\n * ```\n */\n toMontgomerySecret: (secretKey: Uint8Array) => Uint8Array;\n getExtendedPublicKey: (key: Uint8Array) => {\n head: Uint8Array;\n prefix: Uint8Array;\n scalar: bigint;\n point: EdwardsPoint;\n pointBytes: Uint8Array;\n };\n };\n lengths: CurveLengths;\n}\n\nfunction isEdValidXY(Fp: IField, CURVE: EdwardsOpts, x: bigint, y: bigint): boolean {\n const x2 = Fp.sqr(x);\n const y2 = Fp.sqr(y);\n const left = Fp.add(Fp.mul(CURVE.a, x2), y2);\n const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));\n return Fp.eql(left, right);\n}\n\nexport function edwards(params: EdwardsOpts, extraOpts: EdwardsExtraOpts = {}): EdwardsPointCons {\n const validated = createCurveFields('edwards', params, extraOpts, extraOpts.FpFnLE);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE as EdwardsOpts;\n const { h: cofactor } = CURVE;\n validateObject(extraOpts, {}, { uvRatio: 'function' });\n\n // Important:\n // There are some places where Fp.BYTES is used instead of nByteLength.\n // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n // TODO: test and find curves which behave otherwise.\n const MASK = _2n << (BigInt(Fn.BYTES * 8) - _1n);\n const modP = (n: bigint) => Fp.create(n); // Function overrides\n\n // sqrt(u/v)\n const uvRatio =\n extraOpts.uvRatio ||\n ((u: bigint, v: bigint) => {\n try {\n return { isValid: true, value: Fp.sqrt(Fp.div(u, v)) };\n } catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n\n // Validate whether the passed curve params are valid.\n // equation ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2 should work for generator point.\n if (!isEdValidXY(Fp, CURVE, CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n\n /**\n * Asserts coordinate is valid: 0 <= n < MASK.\n * Coordinates >= Fp.ORDER are allowed for zip215.\n */\n function acoord(title: string, n: bigint, banZero = false) {\n const min = banZero ? _1n : _0n;\n aInRange('coordinate ' + title, n, min, MASK);\n return n;\n }\n\n function aedpoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('EdwardsPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p: Point, iz?: bigint): AffinePoint => {\n const { X, Y, Z } = p;\n const is0 = p.is0();\n if (iz == null) iz = is0 ? _8n : (Fp.inv(Z) as bigint); // 8 was chosen arbitrarily\n const x = modP(X * iz);\n const y = modP(Y * iz);\n const zz = Fp.mul(Z, iz);\n if (is0) return { x: _0n, y: _1n };\n if (zz !== _1n) throw new Error('invZ was invalid');\n return { x, y };\n });\n const assertValidMemo = memoized((p: Point) => {\n const { a, d } = CURVE;\n if (p.is0()) throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX\u00B2 + Y\u00B2)Z\u00B2 = Z\u2074 + dX\u00B2Y\u00B2\n const { X, Y, Z, T } = p;\n const X2 = modP(X * X); // X\u00B2\n const Y2 = modP(Y * Y); // Y\u00B2\n const Z2 = modP(Z * Z); // Z\u00B2\n const Z4 = modP(Z2 * Z2); // Z\u2074\n const aX2 = modP(X2 * a); // aX\u00B2\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX\u00B2 + Y\u00B2)Z\u00B2\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z\u2074 + dX\u00B2Y\u00B2\n if (left !== right) throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT) throw new Error('bad point: equation left != right (2)');\n return true;\n });\n\n // Extended Point works in extended coordinates: (X, Y, Z, T) \u220B (x=X/Z, y=Y/Z, T=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point implements EdwardsPoint {\n // base / generator point\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n // zero / infinity / identity point\n static readonly ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n // math field\n static readonly Fp = Fp;\n // scalar field\n static readonly Fn = Fn;\n\n readonly X: bigint;\n readonly Y: bigint;\n readonly Z: bigint;\n readonly T: bigint;\n\n constructor(X: bigint, Y: bigint, Z: bigint, T: bigint) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y);\n this.Z = acoord('z', Z, true);\n this.T = acoord('t', T);\n Object.freeze(this);\n }\n\n static CURVE(): EdwardsOpts {\n return CURVE;\n }\n\n static fromAffine(p: AffinePoint): Point {\n if (p instanceof Point) throw new Error('extended point not allowed');\n const { x, y } = p || {};\n acoord('x', x);\n acoord('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n\n // Uses algo from RFC8032 5.1.3.\n static fromBytes(bytes: Uint8Array, zip215 = false): Point {\n const len = Fp.BYTES;\n const { a, d } = CURVE;\n bytes = copyBytes(abytes(bytes, len, 'point'));\n abool(zip215, 'zip215');\n const normed = copyBytes(bytes); // copy again, we'll manipulate it\n const lastByte = bytes[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = bytesToNumberLE(normed);\n\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n aInRange('point.y', y, _0n, max);\n\n // Ed25519: x\u00B2 = (y\u00B2-1)/(dy\u00B2+1) mod p. Ed448: x\u00B2 = (y\u00B2-1)/(dy\u00B2-1) mod p. Generic case:\n // ax\u00B2+y\u00B2=1+dx\u00B2y\u00B2 => y\u00B2-1=dx\u00B2y\u00B2-ax\u00B2 => y\u00B2-1=x\u00B2(dy\u00B2-a) => x\u00B2=(y\u00B2-1)/(dy\u00B2-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y\u00B2 - 1\n const v = modP(d * y2 - a); // v = d y\u00B2 + 1.\n let { isValid, value: x } = uvRatio(u, v); // \u221A(u/v)\n if (!isValid) throw new Error('bad point: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('bad point: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd) x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n\n static fromHex(hex: string, zip215 = false): Point {\n return Point.fromBytes(hexToBytes(hex), zip215);\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n precompute(windowSize: number = 8, isLazy = true) {\n wnaf.createCache(this, windowSize);\n if (!isLazy) this.multiply(_2n); // random number\n return this;\n }\n\n // Useful in fromAffine() - not for fromBytes(), which always created valid points.\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n // Compare one point to another.\n equals(other: Point): boolean {\n aedpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n\n is0(): boolean {\n return this.equals(Point.ZERO);\n }\n\n negate(): Point {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T));\n }\n\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double(): Point {\n const { a } = CURVE;\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other: Point) {\n aedpoint(other);\n const { a, d } = CURVE;\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = other;\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n subtract(other: Point): Point {\n return this.add(other.negate());\n }\n\n // Constant-time multiplication.\n multiply(scalar: bigint): Point {\n // 1 <= scalar < L\n if (!Fn.isValidNot0(scalar)) throw new Error('invalid scalar: expected 1 <= sc < curve.n');\n const { p, f } = wnaf.cached(this, scalar, (p) => normalizeZ(Point, p));\n return normalizeZ(Point, [p, f])[0];\n }\n\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n multiplyUnsafe(scalar: bigint, acc = Point.ZERO): Point {\n // 0 <= scalar < L\n if (!Fn.isValid(scalar)) throw new Error('invalid scalar: expected 0 <= sc < curve.n');\n if (scalar === _0n) return Point.ZERO;\n if (this.is0() || scalar === _1n) return this;\n return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p), acc);\n }\n\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder(): boolean {\n return this.multiplyUnsafe(cofactor).is0();\n }\n\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree(): boolean {\n return wnaf.unsafe(this, CURVE.n).is0();\n }\n\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(invertedZ?: bigint): AffinePoint {\n return toAffineMemo(this, invertedZ);\n }\n\n clearCofactor(): Point {\n if (cofactor === _1n) return this;\n return this.multiplyUnsafe(cofactor);\n }\n\n toBytes(): Uint8Array {\n const { x, y } = this.toAffine();\n // Fp.toBytes() allows non-canonical encoding of y (>= p).\n const bytes = Fp.toBytes(y);\n // Each y has 2 valid points: (x, y), (x,-y).\n // When compressing, it's enough to store y and use the last byte to encode sign of x\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0;\n return bytes;\n }\n toHex(): string {\n return bytesToHex(this.toBytes());\n }\n\n toString() {\n return ``;\n }\n }\n const wnaf = new wNAF(Point, Fn.BITS);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n\n/**\n * Base class for prime-order points like Ristretto255 and Decaf448.\n * These points eliminate cofactor issues by representing equivalence classes\n * of Edwards curve points.\n */\nexport abstract class PrimeEdwardsPoint>\n implements CurvePoint\n{\n static BASE: PrimeEdwardsPoint;\n static ZERO: PrimeEdwardsPoint;\n static Fp: IField;\n static Fn: IField;\n\n protected readonly ep: EdwardsPoint;\n\n constructor(ep: EdwardsPoint) {\n this.ep = ep;\n }\n\n // Abstract methods that must be implemented by subclasses\n abstract toBytes(): Uint8Array;\n abstract equals(other: T): boolean;\n\n // Static methods that must be implemented by subclasses\n static fromBytes(_bytes: Uint8Array): any {\n notImplemented();\n }\n\n static fromHex(_hex: string): any {\n notImplemented();\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n // Common implementations\n clearCofactor(): T {\n // no-op for prime-order groups\n return this as any;\n }\n\n assertValidity(): void {\n this.ep.assertValidity();\n }\n\n toAffine(invertedZ?: bigint): AffinePoint {\n return this.ep.toAffine(invertedZ);\n }\n\n toHex(): string {\n return bytesToHex(this.toBytes());\n }\n\n toString(): string {\n return this.toHex();\n }\n\n isTorsionFree(): boolean {\n return true;\n }\n\n isSmallOrder(): boolean {\n return false;\n }\n\n add(other: T): T {\n this.assertSame(other);\n return this.init(this.ep.add(other.ep));\n }\n\n subtract(other: T): T {\n this.assertSame(other);\n return this.init(this.ep.subtract(other.ep));\n }\n\n multiply(scalar: bigint): T {\n return this.init(this.ep.multiply(scalar));\n }\n\n multiplyUnsafe(scalar: bigint): T {\n return this.init(this.ep.multiplyUnsafe(scalar));\n }\n\n double(): T {\n return this.init(this.ep.double());\n }\n\n negate(): T {\n return this.init(this.ep.negate());\n }\n\n precompute(windowSize?: number, isLazy?: boolean): T {\n return this.init(this.ep.precompute(windowSize, isLazy));\n }\n\n // Helper methods\n abstract is0(): boolean;\n protected abstract assertSame(other: T): void;\n protected abstract init(ep: EdwardsPoint): T;\n}\n\n/**\n * Initializes EdDSA signatures over given Edwards curve.\n */\nexport function eddsa(Point: EdwardsPointCons, cHash: FHash, eddsaOpts: EdDSAOpts = {}): EdDSA {\n if (typeof cHash !== 'function') throw new Error('\"hash\" function param is required');\n validateObject(\n eddsaOpts,\n {},\n {\n adjustScalarBytes: 'function',\n randomBytes: 'function',\n domain: 'function',\n prehash: 'function',\n mapToCurve: 'function',\n }\n );\n\n const { prehash } = eddsaOpts;\n const { BASE, Fp, Fn } = Point;\n\n const randomBytes = eddsaOpts.randomBytes || wcRandomBytes;\n const adjustScalarBytes = eddsaOpts.adjustScalarBytes || ((bytes: Uint8Array) => bytes);\n const domain =\n eddsaOpts.domain ||\n ((data: Uint8Array, ctx: Uint8Array, phflag: boolean) => {\n abool(phflag, 'phflag');\n if (ctx.length || phflag) throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n\n // Little-endian SHA512 with modulo n\n function modN_LE(hash: Uint8Array): bigint {\n return Fn.create(bytesToNumberLE(hash)); // Not Fn.fromBytes: it has length limit\n }\n\n // Get the hashed private scalar per RFC8032 5.1.5\n function getPrivateScalar(key: Uint8Array) {\n const len = lengths.secretKey;\n abytes(key, lengths.secretKey, 'secretKey');\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = abytes(cHash(key), 2 * len, 'hashedSecretKey');\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n return { head, prefix, scalar };\n }\n\n /** Convenience method that creates public key from scalar. RFC8032 5.1.5 */\n function getExtendedPublicKey(secretKey: Uint8Array) {\n const { head, prefix, scalar } = getPrivateScalar(secretKey);\n const point = BASE.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toBytes();\n return { head, prefix, scalar, point, pointBytes };\n }\n\n /** Calculates EdDSA pub key. RFC8032 5.1.5. */\n function getPublicKey(secretKey: Uint8Array): Uint8Array {\n return getExtendedPublicKey(secretKey).pointBytes;\n }\n\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context: Uint8Array = Uint8Array.of(), ...msgs: Uint8Array[]) {\n const msg = concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, abytes(context, undefined, 'context'), !!prehash)));\n }\n\n /** Signs message with secret key. RFC8032 5.1.6 */\n function sign(\n msg: Uint8Array,\n secretKey: Uint8Array,\n options: { context?: Uint8Array } = {}\n ): Uint8Array {\n msg = abytes(msg, undefined, 'message');\n if (prehash) msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = BASE.multiply(r).toBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = Fn.create(r + k * scalar); // S = (r + k * s) mod L\n if (!Fn.isValid(s)) throw new Error('sign failed: invalid s'); // 0 <= s < L\n const rs = concatBytes(R, Fn.toBytes(s));\n return abytes(rs, lengths.signature, 'result');\n }\n\n // verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\n const verifyOpts: { context?: Uint8Array; zip215?: boolean } = { zip215: true };\n\n /**\n * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n * An extended group equation is checked.\n */\n function verify(\n sig: Uint8Array,\n msg: Uint8Array,\n publicKey: Uint8Array,\n options = verifyOpts\n ): boolean {\n const { context, zip215 } = options;\n const len = lengths.signature;\n sig = abytes(sig, len, 'signature');\n msg = abytes(msg, undefined, 'message');\n publicKey = abytes(publicKey, lengths.publicKey, 'publicKey');\n if (zip215 !== undefined) abool(zip215, 'zip215');\n if (prehash) msg = prehash(msg); // for ed25519ph, etc\n\n const mid = len / 2;\n const r = sig.subarray(0, mid);\n const s = bytesToNumberLE(sig.subarray(mid, len));\n let A, R, SB;\n try {\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n A = Point.fromBytes(publicKey, zip215);\n R = Point.fromBytes(r, zip215);\n SB = BASE.multiplyUnsafe(s); // 0 <= s < l is done inside\n } catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder()) return false; // zip215 allows public keys of small order\n\n const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // Extended group equation\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().is0();\n }\n\n const _size = Fp.BYTES; // 32 for ed25519, 57 for ed448\n const lengths = {\n secretKey: _size,\n publicKey: _size,\n signature: 2 * _size,\n seed: _size,\n };\n function randomSecretKey(seed = randomBytes(lengths.seed)): Uint8Array {\n return abytes(seed, lengths.seed, 'seed');\n }\n\n function isValidSecretKey(key: Uint8Array): boolean {\n return isBytes(key) && key.length === Fn.BYTES;\n }\n\n function isValidPublicKey(key: Uint8Array, zip215?: boolean): boolean {\n try {\n return !!Point.fromBytes(key, zip215);\n } catch (error) {\n return false;\n }\n }\n\n const utils = {\n getExtendedPublicKey,\n randomSecretKey,\n isValidSecretKey,\n isValidPublicKey,\n /**\n * Converts ed public key to x public key. Uses formula:\n * - ed25519:\n * - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * - ed448:\n * - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)`\n * - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))`\n */\n toMontgomery(publicKey: Uint8Array): Uint8Array {\n const { y } = Point.fromBytes(publicKey);\n const size = lengths.publicKey;\n const is25519 = size === 32;\n if (!is25519 && size !== 57) throw new Error('only defined for 25519 and 448');\n const u = is25519 ? Fp.div(_1n + y, _1n - y) : Fp.div(y - _1n, y + _1n);\n return Fp.toBytes(u);\n },\n toMontgomerySecret(secretKey: Uint8Array): Uint8Array {\n const size = lengths.secretKey;\n abytes(secretKey, size);\n const hashed = cHash(secretKey.subarray(0, size));\n return adjustScalarBytes(hashed).subarray(0, size);\n },\n };\n\n return Object.freeze({\n keygen: createKeygen(randomSecretKey, getPublicKey),\n getPublicKey,\n sign,\n verify,\n utils,\n Point,\n lengths,\n }) satisfies Signer;\n}\n", "/**\n * hash-to-curve from RFC 9380.\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * https://www.rfc-editor.org/rfc/rfc9380\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { CHash } from '../utils.ts';\nimport {\n abytes,\n asafenumber,\n asciiToBytes,\n bytesToNumberBE,\n concatBytes,\n isBytes,\n validateObject,\n} from '../utils.ts';\nimport type { AffinePoint, PC_ANY, PC_F, PC_P } from './curve.ts';\nimport { FpInvertBatch, mod, type IField } from './modular.ts';\n\nexport type AsciiOrBytes = string | Uint8Array;\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\nexport type H2COpts = {\n DST: AsciiOrBytes;\n expand: 'xmd' | 'xof';\n hash: CHash;\n p: bigint;\n m: number;\n k: number;\n};\nexport type H2CHashOpts = {\n expand: 'xmd' | 'xof';\n hash: CHash;\n};\nexport type MapToCurve = (scalar: bigint[]) => AffinePoint;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type H2CDSTOpts = { DST: AsciiOrBytes };\nexport type H2CHasherBase = {\n hashToCurve(msg: Uint8Array, options?: H2CDSTOpts): PC_P;\n hashToScalar(msg: Uint8Array, options?: H2CDSTOpts): bigint;\n deriveToCurve?(msg: Uint8Array, options?: H2CDSTOpts): PC_P;\n Point: PC;\n};\n/**\n * RFC 9380 methods, with cofactor clearing. See https://www.rfc-editor.org/rfc/rfc9380#section-3.\n *\n * * hashToCurve: `map(hash(input))`, encodes RANDOM bytes to curve (WITH hashing)\n * * encodeToCurve: `map(hash(input))`, encodes NON-UNIFORM bytes to curve (WITH hashing)\n * * mapToCurve: `map(scalars)`, encodes NON-UNIFORM scalars to curve (NO hashing)\n */\nexport type H2CHasher = H2CHasherBase & {\n encodeToCurve(msg: Uint8Array, options?: H2CDSTOpts): PC_P;\n mapToCurve: MapToCurve>;\n defaults: H2COpts & { encodeDST?: AsciiOrBytes };\n};\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n asafenumber(value);\n asafenumber(length);\n if (value < 0 || value >= 1 << (8 * length)) throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0) as number[];\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\n\n// User can always use utf8 if they want, by passing Uint8Array.\n// If string is passed, we treat it as ASCII: other formats are likely a mistake.\nfunction normDST(DST: AsciiOrBytes): Uint8Array {\n if (!isBytes(DST) && typeof DST !== 'string')\n throw new Error('DST must be Uint8Array or ascii string');\n return typeof DST === 'string' ? asciiToBytes(DST) : DST;\n}\n\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(\n msg: Uint8Array,\n DST: AsciiOrBytes,\n lenInBytes: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n asafenumber(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255) DST = H(concatBytes(asciiToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255) throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(\n msg: Uint8Array,\n DST: AsciiOrBytes,\n lenInBytes: number,\n k: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n asafenumber(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(asciiToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (\n H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest()\n );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: H2COpts): bigint[][] {\n validateObject(options, {\n p: 'bigint',\n m: 'number',\n k: 'number',\n hash: 'function',\n });\n const { p, k, m, hash, expand, DST } = options;\n asafenumber(hash.outputLen, 'valid hash');\n abytes(msg);\n asafenumber(count);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n } else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n } else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n } else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\n\ntype XY = (x: T, y: T) => { x: T; y: T };\ntype XYRatio = [T[], T[], T[], T[]]; // xn/xd, yn/yd\nexport function isogenyMap>(field: F, map: XYRatio): XY {\n // Make same order as in spec\n const coeff = map.map((i) => Array.from(i).reverse());\n return (x: T, y: T) => {\n const [xn, xd, yn, yd] = coeff.map((val) =>\n val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n );\n // 6.6.3\n // Exceptional cases of iso_map are inputs that cause the denominator of\n // either rational function to evaluate to zero; such cases MUST return\n // the identity point on E.\n const [xd_inv, yd_inv] = FpInvertBatch(field, [xd, yd], true);\n x = field.mul(xn, xd_inv); // xNum / xDen\n y = field.mul(y, field.mul(yn, yd_inv)); // y * (yNum / yDev)\n return { x, y };\n };\n}\n\nexport const _DST_scalar: Uint8Array = asciiToBytes('HashToScalar-');\n\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. See {@link H2CHasher}. */\nexport function createHasher(\n Point: PC,\n mapToCurve: MapToCurve>,\n defaults: H2COpts & { encodeDST?: AsciiOrBytes }\n): H2CHasher {\n if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n function map(num: bigint[]): PC_P {\n return Point.fromAffine(mapToCurve(num)) as PC_P;\n }\n function clear(initial: PC_P): PC_P {\n const P = initial.clearCofactor();\n if (P.equals(Point.ZERO)) return Point.ZERO as PC_P; // zero will throw in assert\n P.assertValidity();\n return P as PC_P;\n }\n\n return {\n defaults: Object.freeze(defaults),\n Point,\n\n hashToCurve(msg: Uint8Array, options?: H2CDSTOpts): PC_P {\n const opts = Object.assign({}, defaults, options);\n const u = hash_to_field(msg, 2, opts);\n const u0 = map(u[0]);\n const u1 = map(u[1]);\n return clear(u0.add(u1) as PC_P);\n },\n encodeToCurve(msg: Uint8Array, options?: H2CDSTOpts): PC_P {\n const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {};\n const opts = Object.assign({}, defaults, optsDst, options);\n const u = hash_to_field(msg, 1, opts);\n const u0 = map(u[0]);\n return clear(u0);\n },\n /** See {@link H2CHasher} */\n mapToCurve(scalars: bigint | bigint[]): PC_P {\n // Curves with m=1 accept only single scalar\n if (defaults.m === 1) {\n if (typeof scalars !== 'bigint') throw new Error('expected bigint (m=1)');\n return clear(map([scalars]));\n }\n if (!Array.isArray(scalars)) throw new Error('expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint') throw new Error('expected array of bigints');\n return clear(map(scalars));\n },\n\n // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393\n // RFC 9380, draft-irtf-cfrg-bbs-signatures-08\n hashToScalar(msg: Uint8Array, options?: H2CDSTOpts): bigint {\n // @ts-ignore\n const N = Point.Fn.ORDER;\n const opts = Object.assign({}, defaults, { p: N, m: 1, DST: _DST_scalar }, options);\n return hash_to_field(msg, 1, opts)[0][0];\n },\n };\n}\n", "/**\n * Montgomery curve methods. It's not really whole montgomery curve,\n * just bunch of very specific methods for X25519 / X448 from\n * [RFC 7748](https://www.rfc-editor.org/rfc/rfc7748)\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abytes,\n aInRange,\n bytesToNumberLE,\n copyBytes,\n numberToBytesLE,\n randomBytes,\n validateObject,\n type CryptoKeys,\n} from '../utils.ts';\nimport { createKeygen, type CurveLengths } from './curve.ts';\nimport { mod } from './modular.ts';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\n\nexport type MontgomeryOpts = {\n P: bigint; // finite field prime\n type: 'x25519' | 'x448';\n adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;\n powPminus2: (x: bigint) => bigint;\n randomBytes?: (bytesLength?: number) => Uint8Array;\n};\n\nexport type MontgomeryECDH = {\n scalarMult: (scalar: Uint8Array, u: Uint8Array) => Uint8Array;\n scalarMultBase: (scalar: Uint8Array) => Uint8Array;\n getSharedSecret: (secretKeyA: Uint8Array, publicKeyB: Uint8Array) => Uint8Array;\n getPublicKey: (secretKey: Uint8Array) => Uint8Array;\n utils: {\n randomSecretKey: () => Uint8Array;\n };\n GuBytes: Uint8Array;\n lengths: CurveLengths;\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n};\n\nfunction validateOpts(curve: MontgomeryOpts) {\n validateObject(curve, {\n adjustScalarBytes: 'function',\n powPminus2: 'function',\n });\n return Object.freeze({ ...curve } as const);\n}\n\nexport function montgomery(curveDef: MontgomeryOpts): MontgomeryECDH {\n const CURVE = validateOpts(curveDef);\n const { P, type, adjustScalarBytes, powPminus2, randomBytes: rand } = CURVE;\n const is25519 = type === 'x25519';\n if (!is25519 && type !== 'x448') throw new Error('invalid type');\n const randomBytes_ = rand || randomBytes;\n\n const montgomeryBits = is25519 ? 255 : 448;\n const fieldLen = is25519 ? 32 : 56;\n const Gu = is25519 ? BigInt(9) : BigInt(5);\n // RFC 7748 #5:\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519 and\n // (156326 - 2) / 4 = 39081 for curve448/X448\n // const a = is25519 ? 156326n : 486662n;\n const a24 = is25519 ? BigInt(121665) : BigInt(39081);\n // RFC: x25519 \"the resulting integer is of the form 2^254 plus\n // eight times a value between 0 and 2^251 - 1 (inclusive)\"\n // x448: \"2^447 plus four times a value between 0 and 2^445 - 1 (inclusive)\"\n const minScalar = is25519 ? _2n ** BigInt(254) : _2n ** BigInt(447);\n const maxAdded = is25519\n ? BigInt(8) * _2n ** BigInt(251) - _1n\n : BigInt(4) * _2n ** BigInt(445) - _1n;\n const maxScalar = minScalar + maxAdded + _1n; // (inclusive)\n const modP = (n: bigint) => mod(n, P);\n const GuBytes = encodeU(Gu);\n function encodeU(u: bigint): Uint8Array {\n return numberToBytesLE(modP(u), fieldLen);\n }\n function decodeU(u: Uint8Array): bigint {\n const _u = copyBytes(abytes(u, fieldLen, 'uCoordinate'));\n // RFC: When receiving such an array, implementations of X25519\n // (but not X448) MUST mask the most significant bit in the final byte.\n if (is25519) _u[31] &= 127; // 0b0111_1111\n // RFC: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime. The non-canonical\n // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224\n // - 1 through 2^448 - 1 for X448.\n return modP(bytesToNumberLE(_u));\n }\n function decodeScalar(scalar: Uint8Array): bigint {\n return bytesToNumberLE(adjustScalarBytes(copyBytes(abytes(scalar, fieldLen, 'scalar'))));\n }\n function scalarMult(scalar: Uint8Array, u: Uint8Array): Uint8Array {\n const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar));\n // Some public keys are useless, of low-order. Curve author doesn't think\n // it needs to be validated, but we do it nonetheless.\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n) throw new Error('invalid private or public key received');\n return encodeU(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n function scalarMultBase(scalar: Uint8Array): Uint8Array {\n return scalarMult(scalar, GuBytes);\n }\n const getPublicKey = scalarMultBase;\n const getSharedSecret = scalarMult;\n\n // cswap from RFC7748 \"example code\"\n function cswap(swap: bigint, x_2: bigint, x_3: bigint): { x_2: bigint; x_3: bigint } {\n // dummy = mask(swap) AND (x_2 XOR x_3)\n // Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n // and x_3, computed, e.g., as mask(swap) = 0 - swap.\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy\n x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy\n return { x_2, x_3 };\n }\n\n /**\n * Montgomery x-only multiplication ladder.\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u: bigint, scalar: bigint): bigint {\n aInRange('u', u, _0n, P);\n aInRange('scalar', scalar, minScalar, maxScalar);\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n swap = k_t;\n\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent\n return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))\n }\n const lengths = {\n secretKey: fieldLen,\n publicKey: fieldLen,\n seed: fieldLen,\n };\n const randomSecretKey = (seed = randomBytes_(fieldLen)) => {\n abytes(seed, lengths.seed, 'seed');\n return seed;\n };\n const utils = { randomSecretKey };\n\n return Object.freeze({\n keygen: createKeygen(randomSecretKey, getPublicKey),\n getSharedSecret,\n getPublicKey,\n scalarMult,\n scalarMultBase,\n utils,\n GuBytes: GuBytes.slice(),\n lengths,\n }) satisfies CryptoKeys;\n}\n", "/**\n * RFC 9497: Oblivious Pseudorandom Functions (OPRFs) Using Prime-Order Groups.\n * https://www.rfc-editor.org/rfc/rfc9497\n *\n\nOPRF allows to interactively create an `Output = PRF(Input, serverSecretKey)`:\n\n- Server cannot calculate Output by itself: it doesn't know Input\n- Client cannot calculate Output by itself: it doesn't know server secretKey\n- An attacker interception the communication can't restore Input/Output/serverSecretKey and can't\n link Input to some value.\n\n## Issues\n\n- Low-entropy inputs (e.g. password '123') enable brute-forced dictionary attacks by the server\n (solveable by domain separation in POPRF)\n- High-level protocol needs to be constructed on top, because OPRF is low-level\n\n## Use cases\n\n1. **Password-Authenticated Key Exchange (PAKE):** Enables secure password login (e.g., OPAQUE)\n without revealing the password to the server.\n2. **Private Set Intersection (PSI):** Allows two parties to compute the intersection of their\n private sets without revealing non-intersecting elements.\n3. **Anonymous Credential Systems:** Supports issuance of anonymous, unlinkable credentials\n (e.g., Privacy Pass) using blind OPRF evaluation.\n4. **Private Information Retrieval (PIR):** Helps users query databases without revealing which\n item they accessed.\n5. **Encrypted Search / Secure Indexing:** Enables keyword search over encrypted data while keeping\n queries private.\n6. **Spam Prevention and Rate-Limiting:** Issues anonymous tokens to prevent abuse\n (e.g., CAPTCHA bypass) without compromising user privacy.\n\n## Modes\n\n- OPRF: simple mode, client doesn't need to know server public key\n- VOPRF: verifable mode, allows client to verify that server used secret key corresponding to known public key\n- POPRF: partially oblivious mode, VOPRF + domain separation\n\nThere is also non-interactive mode (Evaluate) that supports creating Output in non-interactive mode with knowledge of secret key.\n\nFlow:\n- (once) Server generates secret and public keys, distributes public keys to clients\n - deterministically: `deriveKeyPair` or just random: `generateKeyPair`\n- Client blinds input: `blind(secretInput)`\n- Server evaluates blinded input: `blindEvaluate` generated by client, sends result to client\n- Client creates output using result of evaluation via 'finalize'\n\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abytes,\n asciiToBytes,\n bytesToNumberBE,\n bytesToNumberLE,\n concatBytes,\n numberToBytesBE,\n randomBytes,\n validateObject,\n} from '../utils.ts';\nimport { pippenger, type CurvePoint, type CurvePointCons } from './curve.ts';\nimport { _DST_scalar, type H2CDSTOpts } from './hash-to-curve.ts';\nimport { getMinHashLength, mapHashToField } from './modular.ts';\n\n// OPRF is designed to be used across network, so we default to serialized values.\nexport type PointBytes = Uint8Array;\nexport type ScalarBytes = Uint8Array;\nexport type Bytes = Uint8Array;\nexport type RNG = typeof randomBytes;\n\nexport type OPRFOpts

> = {\n name: string;\n Point: CurvePointCons

; // we don't return Point, so we need generic interface only\n // Fn: IField;\n hash(msg: Bytes): Bytes;\n hashToScalar(msg: Uint8Array, options: H2CDSTOpts): bigint;\n hashToGroup(msg: Uint8Array, options: H2CDSTOpts): P;\n};\n\nexport type OPRFKeys = { secretKey: ScalarBytes; publicKey: PointBytes };\nexport type OPRFBlind = { blind: Uint8Array; blinded: Uint8Array };\nexport type OPRFBlindEval = { evaluated: PointBytes; proof: Bytes };\nexport type OPRFBlindEvalBatch = { evaluated: PointBytes[]; proof: Bytes };\nexport type OPRFFinalizeItem = {\n input: Bytes;\n blind: ScalarBytes;\n evaluated: PointBytes;\n blinded: PointBytes;\n};\n\n/**\n * Represents a full OPRF ciphersuite implementation according to RFC 9497.\n * This object bundles the three protocol variants (OPRF, VOPRF, POPRF) for a specific\n * prime-order group and hash function combination.\n *\n * @see https://www.rfc-editor.org/rfc/rfc9497.html\n */\nexport type OPRF = {\n /**\n * The unique identifier for the ciphersuite, e.g., \"ristretto255-SHA512\".\n * This name is used for domain separation to prevent cross-protocol attacks.\n */\n readonly name: string;\n\n /**\n * The base Oblivious Pseudorandom Function (OPRF) mode (mode 0x00).\n * This is a two-party protocol between a client and a server to compute F(k, x)\n * where 'k' is the server's key and 'x' is the client's input.\n *\n * The client learns the output F(k, x) but nothing about 'k'.\n * The server learns nothing about 'x' or F(k, x).\n * This mode is NOT verifiable; the client cannot prove the server used a specific key.\n */\n readonly oprf: {\n /**\n * (Server-side) Generates a new random private/public key pair for the server.\n * @returns A new key pair.\n */\n generateKeyPair(): OPRFKeys;\n\n /**\n * (Server-side) Deterministically derives a private/public key pair from a seed.\n * @param seed A 32-byte cryptographically secure random seed.\n * @param keyInfo An optional byte string for domain separation.\n * @returns The derived key pair.\n */\n deriveKeyPair(seed: Bytes, keyInfo: Bytes): OPRFKeys;\n\n /**\n * (Client-side) The first step of the protocol. The client blinds its private input.\n * @param input The client's private input bytes.\n * @param rng An optional cryptographically secure random number generator.\n * @returns An object containing the `blind` scalar (which the client MUST keep secret)\n * and the `blinded` element (which the client sends to the server).\n */\n blind(input: Bytes, rng?: RNG): OPRFBlind;\n\n /**\n * (Server-side) The second step. The server evaluates the client's blinded element\n * using its secret key.\n * @param secretKey The server's private key.\n * @param blinded The blinded group element received from the client.\n * @returns The evaluated group element, to be sent back to the client.\n */\n blindEvaluate(secretKey: ScalarBytes, blinded: PointBytes): PointBytes;\n\n /**\n * (Client-side) The final step. The client unblinds the server's response to\n * compute the final OPRF output.\n * @param input The original private input from the `blind` step.\n * @param blind The secret scalar from the `blind` step.\n * @param evaluated The evaluated group element received from the server.\n * @returns The final OPRF output, `Hash(len(input)||input||len(unblinded)||unblinded||\"Finalize\")`.\n */\n finalize(input: Bytes, blind: ScalarBytes, evaluated: PointBytes): Bytes;\n };\n\n /**\n * The Verifiable Oblivious Pseudorandom Function (VOPRF) mode (mode 0x01).\n * This mode extends the base OPRF by providing a proof that the server used the\n * secret key corresponding to its known public key.\n */\n readonly voprf: {\n /** (Server-side) Generates a key pair for the VOPRF mode. */\n generateKeyPair(): OPRFKeys;\n /** (Server-side) Deterministically derives a key pair for the VOPRF mode. */\n deriveKeyPair(seed: Bytes, keyInfo: Bytes): OPRFKeys;\n /** (Client-side) Blinds the client's private input for the VOPRF protocol. */\n blind(input: Bytes, rng?: RNG): OPRFBlind;\n\n /**\n * (Server-side) Evaluates the client's blinded element and generates a DLEQ proof\n * of correctness.\n * @param secretKey The server's private key.\n * @param publicKey The server's public key, used in proof generation.\n * @param blinded The blinded group element received from the client.\n * @param rng An optional cryptographically secure random number generator for the proof.\n * @returns The evaluated element and a proof of correct computation.\n */\n blindEvaluate(\n secretKey: ScalarBytes,\n publicKey: PointBytes,\n blinded: PointBytes,\n rng?: RNG\n ): OPRFBlindEval;\n\n /**\n * (Server-side) An optimized batch version of `blindEvaluate`. It evaluates multiple\n * blinded elements and produces a single, constant-size proof for the entire batch,\n * amortizing the cost of proof generation.\n * @param secretKey The server's private key.\n * @param publicKey The server's public key.\n * @param blinded An array of blinded group elements from one or more clients.\n * @param rng An optional cryptographically secure random number generator for the proof.\n * @returns An array of evaluated elements and a single proof for the batch.\n */\n blindEvaluateBatch(\n secretKey: ScalarBytes,\n publicKey: PointBytes,\n blinded: PointBytes[],\n rng?: RNG\n ): OPRFBlindEvalBatch;\n\n /**\n * (Client-side) The final step. The client verifies the server's proof, and if valid,\n * unblinds the result to compute the final VOPRF output.\n * @param input The original private input.\n * @param blind The secret scalar from the `blind` step.\n * @param evaluated The evaluated element from the server.\n * @param blinded The blinded element sent to the server (needed for proof verification).\n * @param publicKey The server's public key against which the proof is verified.\n * @param proof The DLEQ proof from the server.\n * @returns The final VOPRF output.\n * @throws If the proof verification fails.\n */\n finalize(\n input: Bytes,\n blind: ScalarBytes,\n evaluated: PointBytes,\n blinded: PointBytes,\n publicKey: PointBytes,\n proof: Bytes\n ): Bytes;\n\n /**\n * (Client-side) The batch-aware version of `finalize`. It verifies a single batch proof\n * against a list of corresponding inputs and outputs.\n * @param items An array of objects, each containing the parameters for a single finalization.\n * @param publicKey The server's public key.\n * @param proof The single DLEQ proof for the entire batch.\n * @returns An array of final VOPRF outputs, one for each item in the input.\n * @throws If the proof verification fails.\n */\n finalizeBatch(items: OPRFFinalizeItem[], publicKey: PointBytes, proof: Bytes): Bytes[];\n };\n\n /**\n * A factory for the Partially Oblivious Pseudorandom Function (POPRF) mode (mode 0x02).\n * This mode extends VOPRF to include a public `info` parameter, known to both client and\n * server, which is cryptographically bound to the final output.\n * This is useful for domain separation at the application level.\n * @param info A public byte string to be mixed into the computation.\n * @returns An object with the POPRF protocol functions.\n */\n readonly poprf: (info: Bytes) => {\n /** (Server-side) Generates a key pair for the POPRF mode. */\n generateKeyPair(): OPRFKeys;\n /** (Server-side) Deterministically derives a key pair for the POPRF mode. */\n deriveKeyPair(seed: Bytes, keyInfo: Bytes): OPRFKeys;\n\n /**\n * (Client-side) Blinds the client's private input and computes the \"tweaked key\".\n * The tweaked key is a public value derived from the server's public key and the public `info`.\n * @param input The client's private input.\n * @param publicKey The server's public key.\n * @param rng An optional cryptographically secure random number generator.\n * @returns The `blind`, `blinded` element, and the `tweakedKey` which the client uses for verification.\n */\n blind(input: Bytes, publicKey: PointBytes, rng?: RNG): OPRFBlind & { tweakedKey: PointBytes };\n\n /**\n * (Server-side) Evaluates the blinded element using a key derived from its secret key and the public `info`.\n * It generates a DLEQ proof against the tweaked key.\n * @param secretKey The server's private key.\n * @param blinded The blinded element from the client.\n * @param rng An optional RNG for the proof.\n * @returns The evaluated element and a proof of correct computation.\n */\n blindEvaluate(secretKey: ScalarBytes, blinded: PointBytes, rng?: RNG): OPRFBlindEval;\n\n /**\n * (Server-side) A batch-aware version of `blindEvaluate` for the POPRF mode.\n * @param secretKey The server's private key.\n * @param blinded An array of blinded elements.\n * @param rng An optional RNG for the proof.\n * @returns An array of evaluated elements and a single proof for the batch.\n */\n blindEvaluateBatch(secretKey: ScalarBytes, blinded: PointBytes[], rng: RNG): OPRFBlindEvalBatch;\n\n /**\n * (Client-side) A batch-aware version of `finalize` for the POPRF mode.\n * It verifies the proof against the tweaked key.\n * @param items An array containing the parameters for each finalization.\n * @param proof The single DLEQ proof for the batch.\n * @param tweakedKey The tweaked key corresponding to the proof (all items must share the same `info` and `publicKey`).\n * @returns An array of final POPRF outputs.\n * @throws If proof verification fails.\n */\n finalizeBatch(items: OPRFFinalizeItem[], proof: Bytes, tweakedKey: PointBytes): Bytes[];\n\n /**\n * (Client-side) Finalizes the POPRF protocol. It verifies the server's proof against the\n * `tweakedKey` computed in the `blind` step. The final output is bound to the public `info`.\n * @param input The original private input.\n * @param blind The secret scalar.\n * @param evaluated The evaluated element from the server.\n * @param blinded The blinded element sent to the server.\n * @param proof The DLEQ proof from the server.\n * @param tweakedKey The public tweaked key computed by the client during the `blind` step.\n * @returns The final POPRF output.\n * @throws If proof verification fails.\n */\n finalize(\n input: Bytes,\n blind: ScalarBytes,\n evaluated: PointBytes,\n blinded: PointBytes,\n proof: Bytes,\n tweakedKey: PointBytes\n ): Bytes;\n\n /**\n * A non-interactive evaluation function for an entity that knows all inputs.\n * Computes the final POPRF output directly. Useful for testing or specific applications\n * where the server needs to compute the output for a known input.\n * @param secretKey The server's private key.\n * @param input The client's private input.\n * @returns The final POPRF output.\n */\n evaluate(secretKey: ScalarBytes, input: Bytes): Bytes;\n };\n};\n\n// welcome to generic hell\nexport function createORPF

>(opts: OPRFOpts

): OPRF {\n validateObject(opts, {\n name: 'string',\n hash: 'function',\n hashToScalar: 'function',\n hashToGroup: 'function',\n });\n // TODO\n // Point: 'point',\n const { name, Point, hash } = opts;\n const { Fn } = Point;\n\n const hashToGroup = (msg: Uint8Array, ctx: Uint8Array) =>\n opts.hashToGroup(msg, {\n DST: concatBytes(asciiToBytes('HashToGroup-'), ctx),\n }) as P;\n const hashToScalarPrefixed = (msg: Uint8Array, ctx: Uint8Array) =>\n opts.hashToScalar(msg, { DST: concatBytes(_DST_scalar, ctx) });\n const randomScalar = (rng: RNG = randomBytes) => {\n const t = mapHashToField(rng(getMinHashLength(Fn.ORDER)), Fn.ORDER, Fn.isLE);\n // We cannot use Fn.fromBytes here, because field\n // can have different number of bytes (like ed448)\n return Fn.isLE ? bytesToNumberLE(t) : bytesToNumberBE(t);\n };\n\n const msm = (points: P[], scalars: bigint[]) => pippenger(Point, points, scalars);\n\n const getCtx = (mode: number) =>\n concatBytes(asciiToBytes('OPRFV1-'), new Uint8Array([mode]), asciiToBytes('-' + name));\n const ctxOPRF = getCtx(0x00);\n const ctxVOPRF = getCtx(0x01);\n const ctxPOPRF = getCtx(0x02);\n\n function encode(...args: (Uint8Array | number | string)[]) {\n const res = [];\n for (const a of args) {\n if (typeof a === 'number') res.push(numberToBytesBE(a, 2));\n else if (typeof a === 'string') res.push(asciiToBytes(a));\n else {\n abytes(a);\n res.push(numberToBytesBE(a.length, 2), a);\n }\n }\n // No wipe here, since will modify actual bytes\n return concatBytes(...res);\n }\n const hashInput = (...bytes: Uint8Array[]) => hash(encode(...bytes, 'Finalize'));\n\n function getTranscripts(B: P, C: P[], D: P[], ctx: Bytes) {\n const Bm = B.toBytes();\n const seed = hash(encode(Bm, concatBytes(asciiToBytes('Seed-'), ctx)));\n const res: bigint[] = [];\n for (let i = 0; i < C.length; i++) {\n const Ci = C[i].toBytes();\n const Di = D[i].toBytes();\n const di = hashToScalarPrefixed(encode(seed, i, Ci, Di, 'Composite'), ctx);\n res.push(di);\n }\n return res;\n }\n\n function computeComposites(B: P, C: P[], D: P[], ctx: Bytes) {\n const T = getTranscripts(B, C, D, ctx);\n const M = msm(C, T);\n const Z = msm(D, T);\n return { M, Z };\n }\n\n function computeCompositesFast(k: bigint, B: P, C: P[], D: P[], ctx: Bytes): { M: P; Z: P } {\n const T = getTranscripts(B, C, D, ctx);\n const M = msm(C, T);\n const Z = M.multiply(k);\n return { M, Z };\n }\n\n function challengeTranscript(B: P, M: P, Z: P, t2: P, t3: P, ctx: Bytes) {\n const [Bm, a0, a1, a2, a3] = [B, M, Z, t2, t3].map((i) => i.toBytes());\n return hashToScalarPrefixed(encode(Bm, a0, a1, a2, a3, 'Challenge'), ctx);\n }\n\n function generateProof(ctx: Bytes, k: bigint, B: P, C: P[], D: P[], rng: RNG) {\n const { M, Z } = computeCompositesFast(k, B, C, D, ctx);\n const r = randomScalar(rng);\n const t2 = Point.BASE.multiply(r);\n const t3 = M.multiply(r);\n const c = challengeTranscript(B, M, Z, t2, t3, ctx);\n const s = Fn.sub(r, Fn.mul(c, k)); // r - c*k\n return concatBytes(...[c, s].map((i) => Fn.toBytes(i)));\n }\n\n function verifyProof(ctx: Bytes, B: P, C: P[], D: P[], proof: Bytes) {\n abytes(proof, 2 * Fn.BYTES);\n const { M, Z } = computeComposites(B, C, D, ctx);\n const [c, s] = [proof.subarray(0, Fn.BYTES), proof.subarray(Fn.BYTES)].map((f) =>\n Fn.fromBytes(f)\n );\n const t2 = Point.BASE.multiply(s).add(B.multiply(c)); // s*G + c*B\n const t3 = M.multiply(s).add(Z.multiply(c)); // s*M + c*Z\n const expectedC = challengeTranscript(B, M, Z, t2, t3, ctx);\n if (!Fn.eql(c, expectedC)) throw new Error('proof verification failed');\n }\n\n function generateKeyPair() {\n const skS = randomScalar();\n const pkS = Point.BASE.multiply(skS);\n return { secretKey: Fn.toBytes(skS), publicKey: pkS.toBytes() };\n }\n\n function deriveKeyPair(ctx: Bytes, seed: Bytes, info: Bytes) {\n const dst = concatBytes(asciiToBytes('DeriveKeyPair'), ctx);\n const msg = concatBytes(seed, encode(info), Uint8Array.of(0));\n for (let counter = 0; counter <= 255; counter++) {\n msg[msg.length - 1] = counter;\n const skS = opts.hashToScalar(msg, { DST: dst });\n if (Fn.is0(skS)) continue; // should not happen\n return { secretKey: Fn.toBytes(skS), publicKey: Point.BASE.multiply(skS).toBytes() };\n }\n throw new Error('Cannot derive key');\n }\n function blind(ctx: Bytes, input: Uint8Array, rng: RNG = randomBytes) {\n const blind = randomScalar(rng);\n const inputPoint = hashToGroup(input, ctx);\n if (inputPoint.equals(Point.ZERO)) throw new Error('Input point at infinity');\n const blinded = inputPoint.multiply(blind);\n return { blind: Fn.toBytes(blind), blinded: blinded.toBytes() };\n }\n function evaluate(ctx: Bytes, secretKey: ScalarBytes, input: Bytes) {\n const skS = Fn.fromBytes(secretKey);\n const inputPoint = hashToGroup(input, ctx);\n if (inputPoint.equals(Point.ZERO)) throw new Error('Input point at infinity');\n const unblinded = inputPoint.multiply(skS).toBytes();\n return hashInput(input, unblinded);\n }\n const oprf = {\n generateKeyPair,\n deriveKeyPair: (seed: Bytes, keyInfo: Bytes) => deriveKeyPair(ctxOPRF, seed, keyInfo),\n blind: (input: Bytes, rng: RNG = randomBytes) => blind(ctxOPRF, input, rng),\n blindEvaluate(secretKey: ScalarBytes, blindedPoint: PointBytes) {\n const skS = Fn.fromBytes(secretKey);\n const elm = Point.fromBytes(blindedPoint);\n return elm.multiply(skS).toBytes();\n },\n finalize(input: Bytes, blindBytes: ScalarBytes, evaluatedBytes: PointBytes) {\n const blind = Fn.fromBytes(blindBytes);\n const evalPoint = Point.fromBytes(evaluatedBytes);\n const unblinded = evalPoint.multiply(Fn.inv(blind)).toBytes();\n return hashInput(input, unblinded);\n },\n evaluate: (secretKey: ScalarBytes, input: Bytes) => evaluate(ctxOPRF, secretKey, input),\n };\n\n const voprf = {\n generateKeyPair,\n deriveKeyPair: (seed: Bytes, keyInfo: Bytes) => deriveKeyPair(ctxVOPRF, seed, keyInfo),\n blind: (input: Bytes, rng: RNG = randomBytes) => blind(ctxVOPRF, input, rng),\n blindEvaluateBatch(\n secretKey: ScalarBytes,\n publicKey: PointBytes,\n blinded: PointBytes[],\n rng: RNG = randomBytes\n ) {\n if (!Array.isArray(blinded)) throw new Error('expected array');\n const skS = Fn.fromBytes(secretKey);\n const pkS = Point.fromBytes(publicKey);\n const blindedPoints = blinded.map(Point.fromBytes);\n const evaluated = blindedPoints.map((i) => i.multiply(skS));\n const proof = generateProof(ctxVOPRF, skS, pkS, blindedPoints, evaluated, rng);\n return { evaluated: evaluated.map((i) => i.toBytes()), proof };\n },\n blindEvaluate(\n secretKey: ScalarBytes,\n publicKey: PointBytes,\n blinded: PointBytes,\n rng: RNG = randomBytes\n ) {\n const res = this.blindEvaluateBatch(secretKey, publicKey, [blinded], rng);\n return { evaluated: res.evaluated[0], proof: res.proof };\n },\n finalizeBatch(items: OPRFFinalizeItem[], publicKey: PointBytes, proof: Bytes) {\n if (!Array.isArray(items)) throw new Error('expected array');\n const pkS = Point.fromBytes(publicKey);\n const blindedPoints = items.map((i) => i.blinded).map(Point.fromBytes);\n const evalPoints = items.map((i) => i.evaluated).map(Point.fromBytes);\n verifyProof(ctxVOPRF, pkS, blindedPoints, evalPoints, proof);\n return items.map((i) => oprf.finalize(i.input, i.blind, i.evaluated));\n },\n finalize(\n input: Bytes,\n blind: ScalarBytes,\n evaluated: PointBytes,\n blinded: PointBytes,\n publicKey: PointBytes,\n proof: Bytes\n ) {\n return this.finalizeBatch([{ input, blind, evaluated, blinded }], publicKey, proof)[0];\n },\n evaluate: (secretKey: ScalarBytes, input: Bytes) => evaluate(ctxVOPRF, secretKey, input),\n };\n // NOTE: info is domain separation\n const poprf = (info: Bytes) => {\n const m = hashToScalarPrefixed(encode('Info', info), ctxPOPRF);\n const T = Point.BASE.multiply(m);\n return {\n generateKeyPair,\n deriveKeyPair: (seed: Bytes, keyInfo: Bytes) => deriveKeyPair(ctxPOPRF, seed, keyInfo),\n blind(input: Bytes, publicKey: PointBytes, rng: RNG = randomBytes) {\n const pkS = Point.fromBytes(publicKey);\n const tweakedKey = T.add(pkS);\n if (tweakedKey.equals(Point.ZERO)) throw new Error('tweakedKey point at infinity');\n const blind = randomScalar(rng);\n const inputPoint = hashToGroup(input, ctxPOPRF);\n if (inputPoint.equals(Point.ZERO)) throw new Error('Input point at infinity');\n const blindedPoint = inputPoint.multiply(blind);\n return {\n blind: Fn.toBytes(blind),\n blinded: blindedPoint.toBytes(),\n tweakedKey: tweakedKey.toBytes(),\n };\n },\n blindEvaluateBatch(secretKey: ScalarBytes, blinded: PointBytes[], rng: RNG = randomBytes) {\n if (!Array.isArray(blinded)) throw new Error('expected array');\n const skS = Fn.fromBytes(secretKey);\n const t = Fn.add(skS, m);\n // \"Hence, this error can be a signal for the server to replace its private key\". We throw inside,\n // should be impossible.\n const invT = Fn.inv(t);\n const blindedPoints = blinded.map(Point.fromBytes);\n const evalPoints = blindedPoints.map((i) => i.multiply(invT));\n const tweakedKey = Point.BASE.multiply(t);\n const proof = generateProof(ctxPOPRF, t, tweakedKey, evalPoints, blindedPoints, rng);\n return { evaluated: evalPoints.map((i) => i.toBytes()), proof };\n },\n blindEvaluate(secretKey: ScalarBytes, blinded: PointBytes, rng: RNG = randomBytes) {\n const res = this.blindEvaluateBatch(secretKey, [blinded], rng);\n return { evaluated: res.evaluated[0], proof: res.proof };\n },\n finalizeBatch(items: OPRFFinalizeItem[], proof: Bytes, tweakedKey: PointBytes) {\n if (!Array.isArray(items)) throw new Error('expected array');\n const evalPoints = items.map((i) => i.evaluated).map(Point.fromBytes);\n verifyProof(\n ctxPOPRF,\n Point.fromBytes(tweakedKey),\n evalPoints,\n items.map((i) => i.blinded).map(Point.fromBytes),\n proof\n );\n return items.map((i, j) => {\n const blind = Fn.fromBytes(i.blind);\n const point = evalPoints[j].multiply(Fn.inv(blind)).toBytes();\n return hashInput(i.input, info, point);\n });\n },\n finalize(\n input: Bytes,\n blind: ScalarBytes,\n evaluated: PointBytes,\n blinded: PointBytes,\n proof: Bytes,\n tweakedKey: PointBytes\n ) {\n return this.finalizeBatch([{ input, blind, evaluated, blinded }], proof, tweakedKey)[0];\n },\n evaluate(secretKey: ScalarBytes, input: Bytes) {\n const skS = Fn.fromBytes(secretKey);\n const inputPoint = hashToGroup(input, ctxPOPRF);\n if (inputPoint.equals(Point.ZERO)) throw new Error('Input point at infinity');\n const t = Fn.add(skS, m);\n const invT = Fn.inv(t);\n const unblinded = inputPoint.multiply(invT).toBytes();\n return hashInput(input, info, unblinded);\n },\n };\n };\n return Object.freeze({ name, oprf, voprf, poprf, __tests: { Fn } });\n}\n", "/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, concatBytes, hexToBytes } from '@noble/hashes/utils.js';\nimport { type AffinePoint } from './abstract/curve.ts';\nimport {\n eddsa,\n edwards,\n PrimeEdwardsPoint,\n type EdDSA,\n type EdDSAOpts,\n type EdwardsOpts,\n type EdwardsPoint,\n type EdwardsPointCons,\n} from './abstract/edwards.ts';\nimport {\n _DST_scalar,\n createHasher,\n expand_message_xmd,\n type H2CDSTOpts,\n type H2CHasher,\n type H2CHasherBase,\n} from './abstract/hash-to-curve.ts';\nimport {\n FpInvertBatch,\n FpSqrtEven,\n isNegativeLE,\n mod,\n pow2,\n type IField,\n} from './abstract/modular.ts';\nimport { montgomery, type MontgomeryECDH } from './abstract/montgomery.ts';\nimport { createORPF, type OPRF } from './abstract/oprf.ts';\nimport { asciiToBytes, bytesToNumberLE, equalBytes } from './utils.ts';\n\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\n\n// P = 2n**255n - 19n\nconst ed25519_CURVE_p = BigInt(\n '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed'\n);\n// N = 2n**252n + 27742317777372353535851937790883648493n\n// a = Fp.create(BigInt(-1))\n// d = -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))\nconst ed25519_CURVE: EdwardsOpts = /* @__PURE__ */ (() => ({\n p: ed25519_CURVE_p,\n n: BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'),\n h: _8n,\n a: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec'),\n d: BigInt('0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'),\n Gx: BigInt('0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a'),\n Gy: BigInt('0x6666666666666666666666666666666666666666666666666666666666666658'),\n}))();\n\nfunction ed25519_pow_2_252_3(x: bigint) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ed25519_CURVE_p;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\n\nfunction adjustScalarBytes(bytes: Uint8Array): Uint8Array {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n\n// \u221A(-1) aka \u221A(a) aka 2^((p-1)/4)\n// Fp.sqrt(Fp.neg(1))\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt(\n '19681161376707505956807079304988542015446066515923890162744021073123829784752'\n);\n// sqrt(u/v)\nfunction uvRatio(u: bigint, v: bigint): { isValid: boolean; value: bigint } {\n const P = ed25519_CURVE_p;\n const v3 = mod(v * v * v, P); // v\u00B3\n const v7 = mod(v3 * v3 * v, P); // v\u2077\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv\u00B3)(uv\u2077)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx\u00B2\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx\u00B2 = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx\u00B2 = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx\u00B2 = -u\u221A(-1)\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P)) x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n\nconst ed25519_Point = /* @__PURE__ */ edwards(ed25519_CURVE, { uvRatio });\nconst Fp = /* @__PURE__ */ (() => ed25519_Point.Fp)();\nconst Fn = /* @__PURE__ */ (() => ed25519_Point.Fn)();\n\nfunction ed25519_domain(data: Uint8Array, ctx: Uint8Array, phflag: boolean) {\n if (ctx.length > 255) throw new Error('Context is too big');\n return concatBytes(\n asciiToBytes('SigEd25519 no Ed25519 collisions'),\n new Uint8Array([phflag ? 1 : 0, ctx.length]),\n ctx,\n data\n );\n}\n\nfunction ed(opts: EdDSAOpts) {\n return eddsa(ed25519_Point, sha512, Object.assign({ adjustScalarBytes }, opts));\n}\n\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * ```js\n * import { ed25519 } from '@noble/curves/ed25519.js';\n * const { secretKey, publicKey } = ed25519.keygen();\n * // const publicKey = ed25519.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello noble');\n * const sig = ed25519.sign(msg, secretKey);\n * const isValid = ed25519.verify(sig, msg, pub); // ZIP215\n * // RFC8032 / FIPS 186-5\n * const isValid2 = ed25519.verify(sig, msg, pub, { zip215: false });\n * ```\n */\nexport const ed25519: EdDSA = /* @__PURE__ */ ed({});\n/** Context version of ed25519 (ctx for domain separation). See {@link ed25519} */\nexport const ed25519ctx: EdDSA = /* @__PURE__ */ ed({ domain: ed25519_domain });\n/** Prehashed version of ed25519. See {@link ed25519} */\nexport const ed25519ph: EdDSA = /* @__PURE__ */ ed({ domain: ed25519_domain, prehash: sha512 });\n\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * ```js\n * import { x25519 } from '@noble/curves/ed25519.js';\n * const alice = x25519.keygen();\n * const bob = x25519.keygen();\n * const shared = x25519.getSharedSecret(alice.secretKey, bob.publicKey);\n * ```\n */\nexport const x25519: MontgomeryECDH = /* @__PURE__ */ (() => {\n const P = ed25519_CURVE_p;\n return montgomery({\n P,\n type: 'x25519',\n powPminus2: (x: bigint): bigint => {\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n });\n})();\n\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (ed25519_CURVE_p + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n\n/**\n * RFC 9380 method `map_to_curve_elligator2_curve25519`. Experimental name: may be renamed later.\n * @private\n */\n// prettier-ignore\nexport function _map_to_curve_elligator2_curve25519(u: bigint): {\n xMn: bigint, xMd: bigint, yMn: bigint, yMd: bigint\n} {\n const ELL2_C4 = (ed25519_CURVE_p - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J);// 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd!(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\n\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u: bigint) {\n const { xMn, xMd, yMn, yMd } = _map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division\n return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; // 13. return (xn, xd, yn, yd)\n}\n\n/** Hashing to ed25519 points / field. RFC 9380 methods. */\nexport const ed25519_hasher: H2CHasher = /* @__PURE__ */ (() =>\n createHasher(\n ed25519_Point,\n (scalars: bigint[]) => map_to_curve_elligator2_edwards25519(scalars[0]),\n {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: ed25519_CURVE_p,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n }\n ))();\n\n// \u221A(-1) aka \u221A(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// \u221A(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt(\n '25063068953384623474111414158702152701244531502492656460079210482610430750235'\n);\n// 1 / \u221A(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt(\n '54469307008909316920995813868745141605393597292927456921205312896311721017578'\n);\n// 1-d\u00B2\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt(\n '1159843021668779879193775521855586647937357759715417654439879720876111806838'\n);\n// (d-1)\u00B2\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt(\n '40440834346308536858101042469323190826248399146238708352240133220865137265952'\n);\n// Calculates 1/\u221A(number)\nconst invertSqrt = (number: bigint) => uvRatio(_1n, number);\n\nconst MAX_255B = /* @__PURE__ */ BigInt(\n '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\n);\nconst bytes255ToNumberLE = (bytes: Uint8Array) => Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n\n/**\n * Computes Elligator map for Ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n * the [website](https://ristretto.group/formulas/elligator.html).\n */\nfunction calcElligatorRistrettoMap(r0: bigint): EdwardsPoint {\n const { d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P)) s_ = mod(-s_);\n if (!Ns_D_is_sq) s = s_; // 7\n if (!Ns_D_is_sq) c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519_Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n\n/**\n * Wrapper over Edwards Point for ristretto255.\n *\n * Each ed25519/EdwardsPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like EdwardsPoint,\n * but it should work in its own namespace: do not combine those two.\n * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nclass _RistrettoPoint extends PrimeEdwardsPoint<_RistrettoPoint> {\n // Do NOT change syntax: the following gymnastics is done,\n // because typescript strips comments, which makes bundlers disable tree-shaking.\n // prettier-ignore\n static BASE: _RistrettoPoint =\n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519_Point.BASE))();\n // prettier-ignore\n static ZERO: _RistrettoPoint =\n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519_Point.ZERO))();\n // prettier-ignore\n static Fp: IField =\n /* @__PURE__ */ (() => Fp)();\n // prettier-ignore\n static Fn: IField =\n /* @__PURE__ */ (() => Fn)();\n\n constructor(ep: EdwardsPoint) {\n super(ep);\n }\n\n static fromAffine(ap: AffinePoint): _RistrettoPoint {\n return new _RistrettoPoint(ed25519_Point.fromAffine(ap));\n }\n\n protected assertSame(other: _RistrettoPoint): void {\n if (!(other instanceof _RistrettoPoint)) throw new Error('RistrettoPoint expected');\n }\n\n protected init(ep: EdwardsPoint): _RistrettoPoint {\n return new _RistrettoPoint(ep);\n }\n\n static fromBytes(bytes: Uint8Array): _RistrettoPoint {\n abytes(bytes, 32);\n const { a, d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const s = bytes255ToNumberLE(bytes);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(Fp.toBytes(s), bytes) || isNegativeLE(s, P))\n throw new Error('invalid ristretto255 encoding 1');\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P)) x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error('invalid ristretto255 encoding 2');\n return new _RistrettoPoint(new ed25519_Point(x, y, _1n, t));\n }\n\n /**\n * Converts ristretto-encoded string to ristretto point.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex: string): _RistrettoPoint {\n return _RistrettoPoint.fromBytes(hexToBytes(hex));\n }\n\n /**\n * Encodes ristretto point to Uint8Array.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).\n */\n toBytes(): Uint8Array {\n let { X, Y, Z, T } = this.ep;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const u1 = mod(mod(Z + Y) * mod(Z - Y)); // 1\n const u2 = mod(X * Y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * T); // 6\n let D: bigint; // 7\n if (isNegativeLE(T * zInv, P)) {\n let _x = mod(Y * SQRT_M1);\n let _y = mod(X * SQRT_M1);\n X = _x;\n Y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n } else {\n D = D2; // 8\n }\n if (isNegativeLE(X * zInv, P)) Y = mod(-Y); // 9\n let s = mod((Z - Y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P)) s = mod(-s);\n return Fp.toBytes(s); // 11\n }\n\n /**\n * Compares two Ristretto points.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).\n */\n equals(other: _RistrettoPoint): boolean {\n this.assertSame(other);\n const { X: X1, Y: Y1 } = this.ep;\n const { X: X2, Y: Y2 } = other.ep;\n const mod = (n: bigint) => Fp.create(n);\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n\n is0(): boolean {\n return this.equals(_RistrettoPoint.ZERO);\n }\n}\n\nexport const ristretto255: {\n Point: typeof _RistrettoPoint;\n} = { Point: _RistrettoPoint };\n\n/** Hashing to ristretto255 points / field. RFC 9380 methods. */\nexport const ristretto255_hasher: H2CHasherBase = {\n Point: _RistrettoPoint,\n /**\n * Spec: https://www.rfc-editor.org/rfc/rfc9380.html#name-hashing-to-ristretto255. Caveats:\n * * There are no test vectors\n * * encodeToCurve / mapToCurve is undefined\n * * mapToCurve would be `calcElligatorRistrettoMap(scalars[0])`, not ristretto255_map!\n * * hashToScalar is undefined too, so we just use OPRF implementation\n * * We cannot re-use 'createHasher', because ristretto255_map is different algorithm/RFC\n (os2ip -> bytes255ToNumberLE)\n * * mapToCurve == calcElligatorRistrettoMap, hashToCurve == ristretto255_map\n * * hashToScalar is undefined in RFC9380 for ristretto, we are using version from OPRF here, using bytes255ToNumblerLE will create different result if we use bytes255ToNumberLE as os2ip\n * * current version is closest to spec.\n */\n hashToCurve(msg: Uint8Array, options?: H2CDSTOpts): _RistrettoPoint {\n // == 'hash_to_ristretto255'\n const DST = options?.DST || 'ristretto255_XMD:SHA-512_R255MAP_RO_';\n const xmd = expand_message_xmd(msg, DST, 64, sha512);\n // NOTE: RFC 9380 incorrectly calls this function 'ristretto255_map', in RFC 9496 map was function inside (per point)\n // That also lead to confustion that ristretto255_map is mapToCurve (it is not! it is old hashToCurve)\n return ristretto255_hasher.deriveToCurve!(xmd);\n },\n hashToScalar(msg: Uint8Array, options: H2CDSTOpts = { DST: _DST_scalar }) {\n const xmd = expand_message_xmd(msg, options.DST, 64, sha512);\n return Fn.create(bytesToNumberLE(xmd));\n },\n /**\n * HashToCurve-like construction based on RFC 9496 (Element Derivation).\n * Converts 64 uniform random bytes into a curve point.\n *\n * WARNING: This represents an older hash-to-curve construction, preceding the finalization of RFC 9380.\n * It was later reused as a component in the newer `hash_to_ristretto255` function defined in RFC 9380.\n */\n deriveToCurve(bytes: Uint8Array): _RistrettoPoint {\n // https://www.rfc-editor.org/rfc/rfc9496.html#name-element-derivation\n abytes(bytes, 64);\n const r1 = bytes255ToNumberLE(bytes.subarray(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(bytes.subarray(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new _RistrettoPoint(R1.add(R2));\n },\n};\n\n/** ristretto255 OPRF, defined in RFC 9497. */\nexport const ristretto255_oprf: OPRF = /* @__PURE__ */ (() =>\n createORPF({\n name: 'ristretto255-SHA512',\n Point: _RistrettoPoint,\n hash: sha512,\n hashToGroup: ristretto255_hasher.hashToCurve,\n hashToScalar: ristretto255_hasher.hashToScalar,\n }))();\n\n/**\n * Weird / bogus points, useful for debugging.\n * All 8 ed25519 points of 8-torsion subgroup can be generated from the point\n * T = `26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05`.\n * \u27E8T\u27E9 = { O, T, 2T, 3T, 4T, 5T, 6T, 7T }\n */\nexport const ED25519_TORSION_SUBGROUP: string[] = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bip39 = void 0;\nexports.bip39 = ['abandon', 'ability', 'able', 'about', 'above', 'absent', 'absorb', 'abstract', 'absurd', 'abuse', 'access', 'accident', 'account', 'accuse', 'achieve', 'acid', 'acoustic', 'acquire', 'across', 'act', 'action', 'actor', 'actress', 'actual', 'adapt', 'add', 'addict', 'address', 'adjust', 'admit', 'adult', 'advance', 'advice', 'aerobic', 'affair', 'afford', 'afraid', 'again', 'age', 'agent', 'agree', 'ahead', 'aim', 'air', 'airport', 'aisle', 'alarm', 'album', 'alcohol', 'alert', 'alien', 'all', 'alley', 'allow', 'almost', 'alone', 'alpha', 'already', 'also', 'alter', 'always', 'amateur', 'amazing', 'among', 'amount', 'amused', 'analyst', 'anchor', 'ancient', 'anger', 'angle', 'angry', 'animal', 'ankle', 'announce', 'annual', 'another', 'answer', 'antenna', 'antique', 'anxiety', 'any', 'apart', 'apology', 'appear', 'apple', 'approve', 'april', 'arch', 'arctic', 'area', 'arena', 'argue', 'arm', 'armed', 'armor', 'army', 'around', 'arrange', 'arrest', 'arrive', 'arrow', 'art', 'artefact', 'artist', 'artwork', 'ask', 'aspect', 'assault', 'asset', 'assist', 'assume', 'asthma', 'athlete', 'atom', 'attack', 'attend', 'attitude', 'attract', 'auction', 'audit', 'august', 'aunt', 'author', 'auto', 'autumn', 'average', 'avocado', 'avoid', 'awake', 'aware', 'away', 'awesome', 'awful', 'awkward', 'axis', 'baby', 'bachelor', 'bacon', 'badge', 'bag', 'balance', 'balcony', 'ball', 'bamboo', 'banana', 'banner', 'bar', 'barely', 'bargain', 'barrel', 'base', 'basic', 'basket', 'battle', 'beach', 'bean', 'beauty', 'because', 'become', 'beef', 'before', 'begin', 'behave', 'behind', 'believe', 'below', 'belt', 'bench', 'benefit', 'best', 'betray', 'better', 'between', 'beyond', 'bicycle', 'bid', 'bike', 'bind', 'biology', 'bird', 'birth', 'bitter', 'black', 'blade', 'blame', 'blanket', 'blast', 'bleak', 'bless', 'blind', 'blood', 'blossom', 'blouse', 'blue', 'blur', 'blush', 'board', 'boat', 'body', 'boil', 'bomb', 'bone', 'bonus', 'book', 'boost', 'border', 'boring', 'borrow', 'boss', 'bottom', 'bounce', 'box', 'boy', 'bracket', 'brain', 'brand', 'brass', 'brave', 'bread', 'breeze', 'brick', 'bridge', 'brief', 'bright', 'bring', 'brisk', 'broccoli', 'broken', 'bronze', 'broom', 'brother', 'brown', 'brush', 'bubble', 'buddy', 'budget', 'buffalo', 'build', 'bulb', 'bulk', 'bullet', 'bundle', 'bunker', 'burden', 'burger', 'burst', 'bus', 'business', 'busy', 'butter', 'buyer', 'buzz', 'cabbage', 'cabin', 'cable', 'cactus', 'cage', 'cake', 'call', 'calm', 'camera', 'camp', 'can', 'canal', 'cancel', 'candy', 'cannon', 'canoe', 'canvas', 'canyon', 'capable', 'capital', 'captain', 'car', 'carbon', 'card', 'cargo', 'carpet', 'carry', 'cart', 'case', 'cash', 'casino', 'castle', 'casual', 'cat', 'catalog', 'catch', 'category', 'cattle', 'caught', 'cause', 'caution', 'cave', 'ceiling', 'celery', 'cement', 'census', 'century', 'cereal', 'certain', 'chair', 'chalk', 'champion', 'change', 'chaos', 'chapter', 'charge', 'chase', 'chat', 'cheap', 'check', 'cheese', 'chef', 'cherry', 'chest', 'chicken', 'chief', 'child', 'chimney', 'choice', 'choose', 'chronic', 'chuckle', 'chunk', 'churn', 'cigar', 'cinnamon', 'circle', 'citizen', 'city', 'civil', 'claim', 'clap', 'clarify', 'claw', 'clay', 'clean', 'clerk', 'clever', 'click', 'client', 'cliff', 'climb', 'clinic', 'clip', 'clock', 'clog', 'close', 'cloth', 'cloud', 'clown', 'club', 'clump', 'cluster', 'clutch', 'coach', 'coast', 'coconut', 'code', 'coffee', 'coil', 'coin', 'collect', 'color', 'column', 'combine', 'come', 'comfort', 'comic', 'common', 'company', 'concert', 'conduct', 'confirm', 'congress', 'connect', 'consider', 'control', 'convince', 'cook', 'cool', 'copper', 'copy', 'coral', 'core', 'corn', 'correct', 'cost', 'cotton', 'couch', 'country', 'couple', 'course', 'cousin', 'cover', 'coyote', 'crack', 'cradle', 'craft', 'cram', 'crane', 'crash', 'crater', 'crawl', 'crazy', 'cream', 'credit', 'creek', 'crew', 'cricket', 'crime', 'crisp', 'critic', 'crop', 'cross', 'crouch', 'crowd', 'crucial', 'cruel', 'cruise', 'crumble', 'crunch', 'crush', 'cry', 'crystal', 'cube', 'culture', 'cup', 'cupboard', 'curious', 'current', 'curtain', 'curve', 'cushion', 'custom', 'cute', 'cycle', 'dad', 'damage', 'damp', 'dance', 'danger', 'daring', 'dash', 'daughter', 'dawn', 'day', 'deal', 'debate', 'debris', 'decade', 'december', 'decide', 'decline', 'decorate', 'decrease', 'deer', 'defense', 'define', 'defy', 'degree', 'delay', 'deliver', 'demand', 'demise', 'denial', 'dentist', 'deny', 'depart', 'depend', 'deposit', 'depth', 'deputy', 'derive', 'describe', 'desert', 'design', 'desk', 'despair', 'destroy', 'detail', 'detect', 'develop', 'device', 'devote', 'diagram', 'dial', 'diamond', 'diary', 'dice', 'diesel', 'diet', 'differ', 'digital', 'dignity', 'dilemma', 'dinner', 'dinosaur', 'direct', 'dirt', 'disagree', 'discover', 'disease', 'dish', 'dismiss', 'disorder', 'display', 'distance', 'divert', 'divide', 'divorce', 'dizzy', 'doctor', 'document', 'dog', 'doll', 'dolphin', 'domain', 'donate', 'donkey', 'donor', 'door', 'dose', 'double', 'dove', 'draft', 'dragon', 'drama', 'drastic', 'draw', 'dream', 'dress', 'drift', 'drill', 'drink', 'drip', 'drive', 'drop', 'drum', 'dry', 'duck', 'dumb', 'dune', 'during', 'dust', 'dutch', 'duty', 'dwarf', 'dynamic', 'eager', 'eagle', 'early', 'earn', 'earth', 'easily', 'east', 'easy', 'echo', 'ecology', 'economy', 'edge', 'edit', 'educate', 'effort', 'egg', 'eight', 'either', 'elbow', 'elder', 'electric', 'elegant', 'element', 'elephant', 'elevator', 'elite', 'else', 'embark', 'embody', 'embrace', 'emerge', 'emotion', 'employ', 'empower', 'empty', 'enable', 'enact', 'end', 'endless', 'endorse', 'enemy', 'energy', 'enforce', 'engage', 'engine', 'enhance', 'enjoy', 'enlist', 'enough', 'enrich', 'enroll', 'ensure', 'enter', 'entire', 'entry', 'envelope', 'episode', 'equal', 'equip', 'era', 'erase', 'erode', 'erosion', 'error', 'erupt', 'escape', 'essay', 'essence', 'estate', 'eternal', 'ethics', 'evidence', 'evil', 'evoke', 'evolve', 'exact', 'example', 'excess', 'exchange', 'excite', 'exclude', 'excuse', 'execute', 'exercise', 'exhaust', 'exhibit', 'exile', 'exist', 'exit', 'exotic', 'expand', 'expect', 'expire', 'explain', 'expose', 'express', 'extend', 'extra', 'eye', 'eyebrow', 'fabric', 'face', 'faculty', 'fade', 'faint', 'faith', 'fall', 'false', 'fame', 'family', 'famous', 'fan', 'fancy', 'fantasy', 'farm', 'fashion', 'fat', 'fatal', 'father', 'fatigue', 'fault', 'favorite', 'feature', 'february', 'federal', 'fee', 'feed', 'feel', 'female', 'fence', 'festival', 'fetch', 'fever', 'few', 'fiber', 'fiction', 'field', 'figure', 'file', 'film', 'filter', 'final', 'find', 'fine', 'finger', 'finish', 'fire', 'firm', 'first', 'fiscal', 'fish', 'fit', 'fitness', 'fix', 'flag', 'flame', 'flash', 'flat', 'flavor', 'flee', 'flight', 'flip', 'float', 'flock', 'floor', 'flower', 'fluid', 'flush', 'fly', 'foam', 'focus', 'fog', 'foil', 'fold', 'follow', 'food', 'foot', 'force', 'forest', 'forget', 'fork', 'fortune', 'forum', 'forward', 'fossil', 'foster', 'found', 'fox', 'fragile', 'frame', 'frequent', 'fresh', 'friend', 'fringe', 'frog', 'front', 'frost', 'frown', 'frozen', 'fruit', 'fuel', 'fun', 'funny', 'furnace', 'fury', 'future', 'gadget', 'gain', 'galaxy', 'gallery', 'game', 'gap', 'garage', 'garbage', 'garden', 'garlic', 'garment', 'gas', 'gasp', 'gate', 'gather', 'gauge', 'gaze', 'general', 'genius', 'genre', 'gentle', 'genuine', 'gesture', 'ghost', 'giant', 'gift', 'giggle', 'ginger', 'giraffe', 'girl', 'give', 'glad', 'glance', 'glare', 'glass', 'glide', 'glimpse', 'globe', 'gloom', 'glory', 'glove', 'glow', 'glue', 'goat', 'goddess', 'gold', 'good', 'goose', 'gorilla', 'gospel', 'gossip', 'govern', 'gown', 'grab', 'grace', 'grain', 'grant', 'grape', 'grass', 'gravity', 'great', 'green', 'grid', 'grief', 'grit', 'grocery', 'group', 'grow', 'grunt', 'guard', 'guess', 'guide', 'guilt', 'guitar', 'gun', 'gym', 'habit', 'hair', 'half', 'hammer', 'hamster', 'hand', 'happy', 'harbor', 'hard', 'harsh', 'harvest', 'hat', 'have', 'hawk', 'hazard', 'head', 'health', 'heart', 'heavy', 'hedgehog', 'height', 'hello', 'helmet', 'help', 'hen', 'hero', 'hidden', 'high', 'hill', 'hint', 'hip', 'hire', 'history', 'hobby', 'hockey', 'hold', 'hole', 'holiday', 'hollow', 'home', 'honey', 'hood', 'hope', 'horn', 'horror', 'horse', 'hospital', 'host', 'hotel', 'hour', 'hover', 'hub', 'huge', 'human', 'humble', 'humor', 'hundred', 'hungry', 'hunt', 'hurdle', 'hurry', 'hurt', 'husband', 'hybrid', 'ice', 'icon', 'idea', 'identify', 'idle', 'ignore', 'ill', 'illegal', 'illness', 'image', 'imitate', 'immense', 'immune', 'impact', 'impose', 'improve', 'impulse', 'inch', 'include', 'income', 'increase', 'index', 'indicate', 'indoor', 'industry', 'infant', 'inflict', 'inform', 'inhale', 'inherit', 'initial', 'inject', 'injury', 'inmate', 'inner', 'innocent', 'input', 'inquiry', 'insane', 'insect', 'inside', 'inspire', 'install', 'intact', 'interest', 'into', 'invest', 'invite', 'involve', 'iron', 'island', 'isolate', 'issue', 'item', 'ivory', 'jacket', 'jaguar', 'jar', 'jazz', 'jealous', 'jeans', 'jelly', 'jewel', 'job', 'join', 'joke', 'journey', 'joy', 'judge', 'juice', 'jump', 'jungle', 'junior', 'junk', 'just', 'kangaroo', 'keen', 'keep', 'ketchup', 'key', 'kick', 'kid', 'kidney', 'kind', 'kingdom', 'kiss', 'kit', 'kitchen', 'kite', 'kitten', 'kiwi', 'knee', 'knife', 'knock', 'know', 'lab', 'label', 'labor', 'ladder', 'lady', 'lake', 'lamp', 'language', 'laptop', 'large', 'later', 'latin', 'laugh', 'laundry', 'lava', 'law', 'lawn', 'lawsuit', 'layer', 'lazy', 'leader', 'leaf', 'learn', 'leave', 'lecture', 'left', 'leg', 'legal', 'legend', 'leisure', 'lemon', 'lend', 'length', 'lens', 'leopard', 'lesson', 'letter', 'level', 'liar', 'liberty', 'library', 'license', 'life', 'lift', 'light', 'like', 'limb', 'limit', 'link', 'lion', 'liquid', 'list', 'little', 'live', 'lizard', 'load', 'loan', 'lobster', 'local', 'lock', 'logic', 'lonely', 'long', 'loop', 'lottery', 'loud', 'lounge', 'love', 'loyal', 'lucky', 'luggage', 'lumber', 'lunar', 'lunch', 'luxury', 'lyrics', 'machine', 'mad', 'magic', 'magnet', 'maid', 'mail', 'main', 'major', 'make', 'mammal', 'man', 'manage', 'mandate', 'mango', 'mansion', 'manual', 'maple', 'marble', 'march', 'margin', 'marine', 'market', 'marriage', 'mask', 'mass', 'master', 'match', 'material', 'math', 'matrix', 'matter', 'maximum', 'maze', 'meadow', 'mean', 'measure', 'meat', 'mechanic', 'medal', 'media', 'melody', 'melt', 'member', 'memory', 'mention', 'menu', 'mercy', 'merge', 'merit', 'merry', 'mesh', 'message', 'metal', 'method', 'middle', 'midnight', 'milk', 'million', 'mimic', 'mind', 'minimum', 'minor', 'minute', 'miracle', 'mirror', 'misery', 'miss', 'mistake', 'mix', 'mixed', 'mixture', 'mobile', 'model', 'modify', 'mom', 'moment', 'monitor', 'monkey', 'monster', 'month', 'moon', 'moral', 'more', 'morning', 'mosquito', 'mother', 'motion', 'motor', 'mountain', 'mouse', 'move', 'movie', 'much', 'muffin', 'mule', 'multiply', 'muscle', 'museum', 'mushroom', 'music', 'must', 'mutual', 'myself', 'mystery', 'myth', 'naive', 'name', 'napkin', 'narrow', 'nasty', 'nation', 'nature', 'near', 'neck', 'need', 'negative', 'neglect', 'neither', 'nephew', 'nerve', 'nest', 'net', 'network', 'neutral', 'never', 'news', 'next', 'nice', 'night', 'noble', 'noise', 'nominee', 'noodle', 'normal', 'north', 'nose', 'notable', 'note', 'nothing', 'notice', 'novel', 'now', 'nuclear', 'number', 'nurse', 'nut', 'oak', 'obey', 'object', 'oblige', 'obscure', 'observe', 'obtain', 'obvious', 'occur', 'ocean', 'october', 'odor', 'off', 'offer', 'office', 'often', 'oil', 'okay', 'old', 'olive', 'olympic', 'omit', 'once', 'one', 'onion', 'online', 'only', 'open', 'opera', 'opinion', 'oppose', 'option', 'orange', 'orbit', 'orchard', 'order', 'ordinary', 'organ', 'orient', 'original', 'orphan', 'ostrich', 'other', 'outdoor', 'outer', 'output', 'outside', 'oval', 'oven', 'over', 'own', 'owner', 'oxygen', 'oyster', 'ozone', 'pact', 'paddle', 'page', 'pair', 'palace', 'palm', 'panda', 'panel', 'panic', 'panther', 'paper', 'parade', 'parent', 'park', 'parrot', 'party', 'pass', 'patch', 'path', 'patient', 'patrol', 'pattern', 'pause', 'pave', 'payment', 'peace', 'peanut', 'pear', 'peasant', 'pelican', 'pen', 'penalty', 'pencil', 'people', 'pepper', 'perfect', 'permit', 'person', 'pet', 'phone', 'photo', 'phrase', 'physical', 'piano', 'picnic', 'picture', 'piece', 'pig', 'pigeon', 'pill', 'pilot', 'pink', 'pioneer', 'pipe', 'pistol', 'pitch', 'pizza', 'place', 'planet', 'plastic', 'plate', 'play', 'please', 'pledge', 'pluck', 'plug', 'plunge', 'poem', 'poet', 'point', 'polar', 'pole', 'police', 'pond', 'pony', 'pool', 'popular', 'portion', 'position', 'possible', 'post', 'potato', 'pottery', 'poverty', 'powder', 'power', 'practice', 'praise', 'predict', 'prefer', 'prepare', 'present', 'pretty', 'prevent', 'price', 'pride', 'primary', 'print', 'priority', 'prison', 'private', 'prize', 'problem', 'process', 'produce', 'profit', 'program', 'project', 'promote', 'proof', 'property', 'prosper', 'protect', 'proud', 'provide', 'public', 'pudding', 'pull', 'pulp', 'pulse', 'pumpkin', 'punch', 'pupil', 'puppy', 'purchase', 'purity', 'purpose', 'purse', 'push', 'put', 'puzzle', 'pyramid', 'quality', 'quantum', 'quarter', 'question', 'quick', 'quit', 'quiz', 'quote', 'rabbit', 'raccoon', 'race', 'rack', 'radar', 'radio', 'rail', 'rain', 'raise', 'rally', 'ramp', 'ranch', 'random', 'range', 'rapid', 'rare', 'rate', 'rather', 'raven', 'raw', 'razor', 'ready', 'real', 'reason', 'rebel', 'rebuild', 'recall', 'receive', 'recipe', 'record', 'recycle', 'reduce', 'reflect', 'reform', 'refuse', 'region', 'regret', 'regular', 'reject', 'relax', 'release', 'relief', 'rely', 'remain', 'remember', 'remind', 'remove', 'render', 'renew', 'rent', 'reopen', 'repair', 'repeat', 'replace', 'report', 'require', 'rescue', 'resemble', 'resist', 'resource', 'response', 'result', 'retire', 'retreat', 'return', 'reunion', 'reveal', 'review', 'reward', 'rhythm', 'rib', 'ribbon', 'rice', 'rich', 'ride', 'ridge', 'rifle', 'right', 'rigid', 'ring', 'riot', 'ripple', 'risk', 'ritual', 'rival', 'river', 'road', 'roast', 'robot', 'robust', 'rocket', 'romance', 'roof', 'rookie', 'room', 'rose', 'rotate', 'rough', 'round', 'route', 'royal', 'rubber', 'rude', 'rug', 'rule', 'run', 'runway', 'rural', 'sad', 'saddle', 'sadness', 'safe', 'sail', 'salad', 'salmon', 'salon', 'salt', 'salute', 'same', 'sample', 'sand', 'satisfy', 'satoshi', 'sauce', 'sausage', 'save', 'say', 'scale', 'scan', 'scare', 'scatter', 'scene', 'scheme', 'school', 'science', 'scissors', 'scorpion', 'scout', 'scrap', 'screen', 'script', 'scrub', 'sea', 'search', 'season', 'seat', 'second', 'secret', 'section', 'security', 'seed', 'seek', 'segment', 'select', 'sell', 'seminar', 'senior', 'sense', 'sentence', 'series', 'service', 'session', 'settle', 'setup', 'seven', 'shadow', 'shaft', 'shallow', 'share', 'shed', 'shell', 'sheriff', 'shield', 'shift', 'shine', 'ship', 'shiver', 'shock', 'shoe', 'shoot', 'shop', 'short', 'shoulder', 'shove', 'shrimp', 'shrug', 'shuffle', 'shy', 'sibling', 'sick', 'side', 'siege', 'sight', 'sign', 'silent', 'silk', 'silly', 'silver', 'similar', 'simple', 'since', 'sing', 'siren', 'sister', 'situate', 'six', 'size', 'skate', 'sketch', 'ski', 'skill', 'skin', 'skirt', 'skull', 'slab', 'slam', 'sleep', 'slender', 'slice', 'slide', 'slight', 'slim', 'slogan', 'slot', 'slow', 'slush', 'small', 'smart', 'smile', 'smoke', 'smooth', 'snack', 'snake', 'snap', 'sniff', 'snow', 'soap', 'soccer', 'social', 'sock', 'soda', 'soft', 'solar', 'soldier', 'solid', 'solution', 'solve', 'someone', 'song', 'soon', 'sorry', 'sort', 'soul', 'sound', 'soup', 'source', 'south', 'space', 'spare', 'spatial', 'spawn', 'speak', 'special', 'speed', 'spell', 'spend', 'sphere', 'spice', 'spider', 'spike', 'spin', 'spirit', 'split', 'spoil', 'sponsor', 'spoon', 'sport', 'spot', 'spray', 'spread', 'spring', 'spy', 'square', 'squeeze', 'squirrel', 'stable', 'stadium', 'staff', 'stage', 'stairs', 'stamp', 'stand', 'start', 'state', 'stay', 'steak', 'steel', 'stem', 'step', 'stereo', 'stick', 'still', 'sting', 'stock', 'stomach', 'stone', 'stool', 'story', 'stove', 'strategy', 'street', 'strike', 'strong', 'struggle', 'student', 'stuff', 'stumble', 'style', 'subject', 'submit', 'subway', 'success', 'such', 'sudden', 'suffer', 'sugar', 'suggest', 'suit', 'summer', 'sun', 'sunny', 'sunset', 'super', 'supply', 'supreme', 'sure', 'surface', 'surge', 'surprise', 'surround', 'survey', 'suspect', 'sustain', 'swallow', 'swamp', 'swap', 'swarm', 'swear', 'sweet', 'swift', 'swim', 'swing', 'switch', 'sword', 'symbol', 'symptom', 'syrup', 'system', 'table', 'tackle', 'tag', 'tail', 'talent', 'talk', 'tank', 'tape', 'target', 'task', 'taste', 'tattoo', 'taxi', 'teach', 'team', 'tell', 'ten', 'tenant', 'tennis', 'tent', 'term', 'test', 'text', 'thank', 'that', 'theme', 'then', 'theory', 'there', 'they', 'thing', 'this', 'thought', 'three', 'thrive', 'throw', 'thumb', 'thunder', 'ticket', 'tide', 'tiger', 'tilt', 'timber', 'time', 'tiny', 'tip', 'tired', 'tissue', 'title', 'toast', 'tobacco', 'today', 'toddler', 'toe', 'together', 'toilet', 'token', 'tomato', 'tomorrow', 'tone', 'tongue', 'tonight', 'tool', 'tooth', 'top', 'topic', 'topple', 'torch', 'tornado', 'tortoise', 'toss', 'total', 'tourist', 'toward', 'tower', 'town', 'toy', 'track', 'trade', 'traffic', 'tragic', 'train', 'transfer', 'trap', 'trash', 'travel', 'tray', 'treat', 'tree', 'trend', 'trial', 'tribe', 'trick', 'trigger', 'trim', 'trip', 'trophy', 'trouble', 'truck', 'true', 'truly', 'trumpet', 'trust', 'truth', 'try', 'tube', 'tuition', 'tumble', 'tuna', 'tunnel', 'turkey', 'turn', 'turtle', 'twelve', 'twenty', 'twice', 'twin', 'twist', 'two', 'type', 'typical', 'ugly', 'umbrella', 'unable', 'unaware', 'uncle', 'uncover', 'under', 'undo', 'unfair', 'unfold', 'unhappy', 'uniform', 'unique', 'unit', 'universe', 'unknown', 'unlock', 'until', 'unusual', 'unveil', 'update', 'upgrade', 'uphold', 'upon', 'upper', 'upset', 'urban', 'urge', 'usage', 'use', 'used', 'useful', 'useless', 'usual', 'utility', 'vacant', 'vacuum', 'vague', 'valid', 'valley', 'valve', 'van', 'vanish', 'vapor', 'various', 'vast', 'vault', 'vehicle', 'velvet', 'vendor', 'venture', 'venue', 'verb', 'verify', 'version', 'very', 'vessel', 'veteran', 'viable', 'vibrant', 'vicious', 'victory', 'video', 'view', 'village', 'vintage', 'violin', 'virtual', 'virus', 'visa', 'visit', 'visual', 'vital', 'vivid', 'vocal', 'voice', 'void', 'volcano', 'volume', 'vote', 'voyage', 'wage', 'wagon', 'wait', 'walk', 'wall', 'walnut', 'want', 'warfare', 'warm', 'warrior', 'wash', 'wasp', 'waste', 'water', 'wave', 'way', 'wealth', 'weapon', 'wear', 'weasel', 'weather', 'web', 'wedding', 'weekend', 'weird', 'welcome', 'west', 'wet', 'whale', 'what', 'wheat', 'wheel', 'when', 'where', 'whip', 'whisper', 'wide', 'width', 'wife', 'wild', 'will', 'win', 'window', 'wine', 'wing', 'wink', 'winner', 'winter', 'wire', 'wisdom', 'wise', 'wish', 'witness', 'wolf', 'woman', 'wonder', 'wood', 'wool', 'word', 'work', 'world', 'worry', 'worth', 'wrap', 'wreck', 'wrestle', 'wrist', 'write', 'wrong', 'yard', 'year', 'yellow', 'you', 'young', 'youth', 'zebra', 'zero', 'zone', 'zoo'];\n//# sourceMappingURL=bip39.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSubtleCrypto = void 0;\nconst getSubtleCrypto = () => {\n const subtleCrypto = typeof window !== 'undefined' ? window.crypto.subtle : crypto.subtle;\n if (!subtleCrypto) {\n throw new Error('SubtleCrypto not supported');\n }\n return subtleCrypto;\n};\nexports.getSubtleCrypto = getSubtleCrypto;\n//# sourceMappingURL=getSubtleCrypto.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSubtleCrypto = exports.bip39 = void 0;\nvar bip39_1 = require(\"./bip39\");\nObject.defineProperty(exports, \"bip39\", {\n enumerable: true,\n get: function () {\n return bip39_1.bip39;\n }\n});\nvar getSubtleCrypto_1 = require(\"./getSubtleCrypto\");\nObject.defineProperty(exports, \"getSubtleCrypto\", {\n enumerable: true,\n get: function () {\n return getSubtleCrypto_1.getSubtleCrypto;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRootPubKeys = exports.getRootPubKeyBlacklist = exports.getRandomChallenge = void 0;\nconst tslib_1 = require(\"tslib\");\nconst crypto = tslib_1.__importStar(require(\"crypto\"));\nconst getRandomChallenge = () => crypto.randomBytes(32);\nexports.getRandomChallenge = getRandomChallenge;\nconst getRootPubKeyBlacklist = ({\n blacklistConfig,\n allowDebugKeys\n}) => {\n const normalBlacklist = blacklistConfig.blacklistedCaPubKeys ?? [];\n const debugBlacklist = blacklistConfig.debug?.blacklistedCaPubKeys ?? [];\n return allowDebugKeys ? normalBlacklist.concat(debugBlacklist) : normalBlacklist;\n};\nexports.getRootPubKeyBlacklist = getRootPubKeyBlacklist;\nconst getRootPubKeys = ({\n config,\n deviceModel,\n allowDebugKeys\n}) => {\n const modelConfig = config[deviceModel];\n if (modelConfig === undefined) {\n throw new Error(`Pubkeys for ${deviceModel} not found in config`);\n }\n const rootPubKeysNormalOptiga = modelConfig.rootPubKeysOptiga ?? [];\n const rootPubKeysNormalTropic = modelConfig.rootPubKeysTropic ?? [];\n const rootPubKeysDebugOptiga = modelConfig.debug?.rootPubKeysOptiga ?? [];\n const rootPubKeysDebugTropic = modelConfig.debug?.rootPubKeysTropic ?? [];\n const rootPubKeysNormal = [...rootPubKeysNormalOptiga, ...rootPubKeysNormalTropic];\n if (!allowDebugKeys) return rootPubKeysNormal;\n return [...rootPubKeysNormal, ...rootPubKeysDebugOptiga, ...rootPubKeysDebugTropic];\n};\nexports.getRootPubKeys = getRootPubKeys;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseCertificate = exports.parseName = void 0;\nconst parseOidToAlgorithmName = oid => {\n if (oid === '1.2.840.10045.4.3.2') return 'P-256';\n if (oid === '1.3.101.112') return 'Ed25519';\n return 'unknown';\n};\nconst derToAsn1 = byteArray => {\n let position = 0;\n function getTag() {\n let tag = byteArray[0] & 0x1f;\n position += 1;\n if (tag === 0x1f) {\n tag = 0;\n while (byteArray[position] >= 0x80) {\n tag = tag * 128 + byteArray[position] - 0x80;\n position += 1;\n }\n tag = tag * 128 + byteArray[position] - 0x80;\n position += 1;\n }\n return tag;\n }\n function getLength() {\n let length = 0;\n if (byteArray[position] < 0x80) {\n length = byteArray[position];\n position += 1;\n } else {\n const numberOfDigits = byteArray[position] & 0x7f;\n position += 1;\n length = 0;\n for (let i = 0; i < numberOfDigits; i++) {\n length = length * 256 + byteArray[position];\n position += 1;\n }\n }\n return length;\n }\n const cls = (byteArray[0] & 0xc0) / 64;\n const structured = (byteArray[0] & 0x20) === 0x20;\n const tag = getTag();\n if (byteArray[position] === 0x80) {\n throw new Error('Unsupported length encoding');\n }\n const length = getLength();\n const byteLength = position + length;\n const contents = byteArray.subarray(position, byteLength);\n const raw = byteArray.subarray(0, byteLength);\n return {\n cls,\n tag,\n structured,\n byteLength,\n contents,\n raw\n };\n};\nconst derToAsn1List = byteArray => {\n const result = [];\n let nextPosition = 0;\n while (nextPosition < byteArray.length) {\n const nextPiece = derToAsn1(byteArray.subarray(nextPosition));\n result.push(nextPiece);\n nextPosition += nextPiece.byteLength;\n }\n return result;\n};\nconst derBitStringValue = byteArray => ({\n unusedBits: byteArray[0],\n bytes: byteArray.subarray(1)\n});\nconst parseSignatureValue = asn1 => {\n if (asn1.cls !== 0 || asn1.tag !== 3 || asn1.structured) {\n throw new Error('Bad signature value. Not a BIT STRING.');\n }\n return {\n asn1,\n bits: derBitStringValue(asn1.contents)\n };\n};\nconst derObjectIdentifierValue = byteArray => {\n let oid = `${Math.floor(byteArray[0] / 40)}.${byteArray[0] % 40}`;\n let position = 1;\n while (position < byteArray.length) {\n let nextInteger = 0;\n while (byteArray[position] >= 0x80) {\n nextInteger = nextInteger * 0x80 + (byteArray[position] & 0x7f);\n position += 1;\n }\n nextInteger = nextInteger * 0x80 + byteArray[position];\n position += 1;\n oid += `.${nextInteger}`;\n }\n return oid;\n};\nconst parseAlgorithmIdentifier = asn1 => {\n if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) {\n throw new Error('Bad algorithm identifier. Not a SEQUENCE.');\n }\n const pieces = derToAsn1List(asn1.contents);\n if (pieces.length > 2) {\n throw new Error('Bad algorithm identifier. Contains too many child objects.');\n }\n const encodedAlgorithm = pieces[0];\n if (encodedAlgorithm.cls !== 0 || encodedAlgorithm.tag !== 6 || encodedAlgorithm.structured) {\n throw new Error('Bad algorithm identifier. Does not begin with an OBJECT IDENTIFIER.');\n }\n const algorithmOid = derObjectIdentifierValue(encodedAlgorithm.contents);\n const algorithmName = parseOidToAlgorithmName(algorithmOid);\n return {\n asn1,\n algorithmOid,\n algorithmName,\n parameters: pieces.length === 2 ? {\n asn1: pieces[1]\n } : null\n };\n};\nconst parseName = asn1 => derToAsn1List(asn1.contents).map(item => {\n const attrSet = derToAsn1(item.contents);\n return parseAlgorithmIdentifier(attrSet);\n});\nexports.parseName = parseName;\nconst parseSubjectPublicKeyInfo = asn1 => {\n if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) {\n throw new Error('Bad SPKI. Not a SEQUENCE.');\n }\n const pieces = derToAsn1List(asn1.contents);\n if (pieces.length !== 2) {\n throw new Error('Bad SubjectPublicKeyInfo. Wrong number of child objects.');\n }\n return {\n asn1,\n algorithm: parseAlgorithmIdentifier(pieces[0]),\n bits: derBitStringValue(pieces[1].contents)\n };\n};\nconst parseUtcTime = time => {\n let offset = 4;\n let yearOffset = 0;\n if (time.tag === 23) {\n offset = 2;\n yearOffset = 2000;\n }\n const utc = Buffer.from(time.contents).toString();\n const year = yearOffset + Number(utc.substring(0, offset));\n const month = Number(utc.substring(offset, offset + 2)) - 1;\n const day = Number(utc.substring(offset + 2, offset + 4));\n const hour = Number(utc.substring(offset + 4, offset + 6));\n const minute = Number(utc.substring(offset + 6, offset + 8));\n const date = new Date();\n date.setUTCFullYear(year, month, day);\n date.setUTCHours(hour, minute, 0);\n return date;\n};\nconst parseValidity = asn1 => {\n const [from, to] = derToAsn1List(asn1.contents);\n return {\n from: parseUtcTime(from),\n to: parseUtcTime(to)\n };\n};\nconst parseExtensions = data => {\n const asn1 = derToAsn1(data.contents);\n if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) {\n throw new Error(\"This can't be a Extension. Wrong data type.\");\n }\n const readBoolean = value => {\n if (!value) return false;\n if (value.cls !== 0 || value.tag !== 1 || value.contents.length !== 1 || value.structured) {\n throw new Error(\"This can't be a boolean. Wrong data type.\");\n }\n if (![0x00, 0xff].includes(value.contents[0])) {\n throw new Error('Invalid boolean value.');\n }\n return value.contents[0] === 0xff;\n };\n const readBitString = uint8Array => {\n const buffer = Buffer.from(uint8Array);\n const tag = buffer.readUInt8(0);\n if (tag !== 3) {\n throw new Error(\"This can't be a bit string. Wrong data type.\");\n }\n const length = buffer.readUInt8(1);\n const unusedBits = buffer.readUInt8(2);\n const bitStringBytes = buffer.subarray(3, 3 + length - 1);\n const bitString = bitStringBytes.reduce((str, byte) => str + byte.toString(2).padStart(8, '0'), '');\n return bitString.slice(0, bitString.length - unusedBits);\n };\n const readInteger = value => {\n if (!value) return undefined;\n if (value.cls !== 0 || value.tag !== 2 || value.contents.length !== 1 || value.structured) {\n throw new Error(\"This can't be a integer. Wrong data type.\");\n }\n return Buffer.from(value.contents).readInt8();\n };\n const extensions = [];\n derToAsn1List(asn1.contents).forEach(item => {\n const [id, ...pieces] = derToAsn1List(item.contents);\n if (id.cls !== 0 || id.tag !== 6 || id.structured) {\n throw new Error('Bad extension. Does not begin with an OBJECT IDENTIFIER.');\n }\n const algorithm = derObjectIdentifierValue(id.contents);\n const critical = pieces.length > 1 ? readBoolean(pieces[0]) : false;\n const extnValue = pieces.length > 1 ? pieces[1] : pieces[0];\n if (extnValue.cls !== 0 || extnValue.tag !== 4 || extnValue.structured) {\n throw new Error(\"This can't be a octet string. Wrong data type.\");\n }\n if (algorithm === '2.5.29.15') {\n extensions.push({\n key: 'keyUsage',\n critical,\n keyCertSign: readBitString(extnValue.contents)[5]\n });\n } else if (algorithm === '2.5.29.19') {\n const fields = derToAsn1List(derToAsn1(extnValue.contents).contents);\n const ca = fields.length > 0 && fields[0].tag === 1 ? fields[0] : undefined;\n const len = fields.length > 0 && fields[0].tag === 2 ? fields[0] : fields[1];\n extensions.push({\n key: 'basicConstraints',\n critical,\n cA: readBoolean(ca),\n pathLenConstraint: readInteger(len)\n });\n } else {\n extensions.push({\n key: algorithm,\n critical,\n ...item\n });\n }\n });\n return extensions;\n};\nconst parseTBSCertificate = asn1 => {\n if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) {\n throw new Error(\"This can't be a TBSCertificate. Wrong data type.\");\n }\n const pieces = derToAsn1List(asn1.contents);\n if (pieces.length < 7) {\n throw new Error('Bad TBS Certificate. There are fewer than the seven required children.');\n }\n return {\n asn1,\n version: pieces[0],\n serialNumber: pieces[1],\n signature: parseAlgorithmIdentifier(pieces[2]),\n issuer: pieces[3],\n validity: parseValidity(pieces[4]),\n subject: (0, exports.parseName)(pieces[5]),\n subjectPublicKeyInfo: parseSubjectPublicKeyInfo(pieces[6]),\n extensions: parseExtensions(pieces[7])\n };\n};\nconst parseCertificate = byteArray => {\n const asn1 = derToAsn1(byteArray);\n if (asn1.cls !== 0 || asn1.tag !== 16 || !asn1.structured) {\n throw new Error(\"This can't be an X.509 certificate. Wrong data type.\");\n }\n const pieces = derToAsn1List(asn1.contents);\n if (pieces.length !== 3) {\n throw new Error('Certificate contains more than the three specified children.');\n }\n return {\n asn1,\n tbsCertificate: parseTBSCertificate(pieces[0]),\n signatureAlgorithm: parseAlgorithmIdentifier(pieces[1]),\n signatureValue: parseSignatureValue(pieces[2])\n };\n};\nexports.parseCertificate = parseCertificate;\n//# sourceMappingURL=x509certificate.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.verifyAuthenticityProof = exports.verifySignatureP256 = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ed25519_js_1 = require(\"@noble/curves/ed25519.js\");\nconst crypto = tslib_1.__importStar(require(\"crypto\"));\nconst crypto_utils_1 = require(\"@trezor/crypto-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst utils_2 = require(\"./utils\");\nconst x509certificate_1 = require(\"./x509certificate\");\nconst verifySignatureP256 = async (rawKey, data, signature) => {\n const signer = crypto.createVerify('sha256');\n signer.update(Buffer.from(data));\n const SubtleCrypto = (0, crypto_utils_1.getSubtleCrypto)();\n try {\n const ecPubKey = await SubtleCrypto.importKey('raw', rawKey, {\n name: 'ECDSA',\n namedCurve: 'P-256'\n }, true, ['verify']);\n const spkiPubKey = await SubtleCrypto.exportKey('spki', ecPubKey);\n const key = `-----BEGIN PUBLIC KEY-----\\n${Buffer.from(spkiPubKey).toString('base64')}\\n-----END PUBLIC KEY-----`;\n return signer.verify({\n key\n }, Buffer.from(signature));\n } catch {\n return false;\n }\n};\nexports.verifySignatureP256 = verifySignatureP256;\nconst verifySignatureEd25519 = (rawKey, data, signature) => {\n try {\n return ed25519_js_1.ed25519.verify(signature, data, rawKey);\n } catch {\n return false;\n }\n};\nconst getVerifyFn = algorithmName => {\n if (algorithmName === 'P-256') return exports.verifySignatureP256;\n if (algorithmName === 'Ed25519') return verifySignatureEd25519;\n throw new Error(`Unsupported signature algorithm.`);\n};\nconst validateCaCertExtensions = (cert, pathLen) => {\n let hasKeyUsage,\n hasBasicConstraints = false;\n cert.tbsCertificate.extensions.forEach(ext => {\n if (ext.key === 'keyUsage') {\n if (ext.keyCertSign !== '1') {\n throw new Error(`CA keyCertSign not set`);\n }\n hasKeyUsage = true;\n } else if (ext.key === 'basicConstraints') {\n if (!ext.cA) {\n throw new Error(`CA basicConstraints.cA not set`);\n }\n if (typeof ext.pathLenConstraint != 'number') {\n throw new Error('CA basicConstraints.pathLenConstraint not set');\n }\n if (ext.pathLenConstraint < pathLen) {\n throw new Error('Issuer was not permitted to issue certificate');\n }\n hasBasicConstraints = true;\n } else if (ext.critical) {\n throw new Error(`Unknown critical extension ${ext.key} in CA certificate`);\n }\n });\n if (!hasKeyUsage || !hasBasicConstraints) {\n throw new Error(`CA missing extensions keyUsage: ${hasKeyUsage}, basicConstraints: ${hasBasicConstraints}`);\n }\n};\nconst verifyAuthenticityProof = async ({\n challenge,\n certificates,\n signature,\n deviceModel,\n allowDebugKeys,\n config,\n blacklistConfig,\n challengePrefix = 'AuthenticateDevice:',\n bufferChunks = []\n}) => {\n const allRootPubKeys = (0, utils_2.getRootPubKeys)({\n config,\n deviceModel,\n allowDebugKeys\n });\n const rootPubKeyBlacklist = (0, utils_2.getRootPubKeyBlacklist)({\n blacklistConfig,\n allowDebugKeys\n });\n const [deviceCert, caCert] = certificates.map((c, i) => {\n const cert = (0, x509certificate_1.parseCertificate)(new Uint8Array(Buffer.from(c, 'hex')));\n if (i === 0) {\n return cert;\n }\n validateCaCertExtensions(cert, i - 1);\n return cert;\n });\n const deviceCertAlgName = deviceCert.signatureAlgorithm.algorithmName;\n const caCertAlgName = caCert.signatureAlgorithm.algorithmName;\n if (deviceCertAlgName !== caCertAlgName) {\n throw new Error('Mismatched signature algorithms in device and CA certificates');\n }\n const verifySignatureFn = getVerifyFn(deviceCertAlgName);\n const caPubKey = Buffer.from(caCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes).toString('hex');\n const isCertSignedByRootPubkey = await Promise.all(allRootPubKeys.map(rootPubKey => verifySignatureFn(Buffer.from(rootPubKey, 'hex'), caCert.tbsCertificate.asn1.raw, caCert.signatureValue.bits.bytes)));\n const rootPubKeyIndex = isCertSignedByRootPubkey.findIndex(valid => !!valid);\n const rootPubKeyMatch = allRootPubKeys[rootPubKeyIndex];\n const caCertValidityFrom = caCert.tbsCertificate.validity.from.getTime();\n if (caCertValidityFrom > new Date().getTime()) {\n throw new Error(`CA validity from ${caCertValidityFrom} can't be in the future!`);\n }\n if (rootPubKeyMatch === undefined) {\n return {\n valid: false,\n caPubKey,\n error: 'ROOT_PUBKEY_NOT_FOUND'\n };\n }\n const [subject] = deviceCert.tbsCertificate.subject;\n if (!subject.parameters || subject.algorithmOid !== '2.5.4.3') {\n throw new Error('Missing certificate subject');\n }\n const subjectValue = Buffer.from(subject.parameters.asn1.contents.subarray(0, 4)).toString();\n if (subjectValue !== deviceModel) {\n return {\n valid: false,\n caPubKey,\n rootPubKey: rootPubKeyMatch,\n error: 'INVALID_DEVICE_MODEL'\n };\n }\n const isDeviceCertValid = await verifySignatureFn(Buffer.from(caCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes), deviceCert.tbsCertificate.asn1.raw, deviceCert.signatureValue.bits.bytes);\n const challengePrefixBuffer = Buffer.from(challengePrefix);\n const chunks = bufferChunks && bufferChunks.length > 0 ? [challengePrefixBuffer, ...bufferChunks] : [challengePrefixBuffer, challenge];\n const prefixedBuffer = Buffer.concat(chunks.flatMap(chunk => [utils_1.bufferUtils.getChunkSize(chunk.byteLength), chunk]));\n const isSignatureValid = await verifySignatureFn(Buffer.from(deviceCert.tbsCertificate.subjectPublicKeyInfo.bits.bytes), prefixedBuffer, Buffer.from(signature, 'hex'));\n if (isDeviceCertValid && isSignatureValid) {\n if (rootPubKeyBlacklist.includes(caPubKey)) {\n return {\n valid: false,\n caPubKey,\n rootPubKey: rootPubKeyMatch,\n error: 'CA_PUBKEY_BLACKLISTED'\n };\n }\n return {\n valid: true,\n caPubKey,\n rootPubKey: rootPubKeyMatch\n };\n }\n if (!isDeviceCertValid) {\n return {\n valid: false,\n caPubKey,\n rootPubKey: rootPubKeyMatch,\n error: 'INVALID_DEVICE_CERTIFICATE'\n };\n }\n return {\n valid: false,\n caPubKey,\n rootPubKey: rootPubKeyMatch,\n error: 'INVALID_DEVICE_SIGNATURE'\n };\n};\nexports.verifyAuthenticityProof = verifyAuthenticityProof;\n//# sourceMappingURL=verifyAuthenticityProof.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deviceAuthenticityBlacklistConfig = void 0;\nexports.deviceAuthenticityBlacklistConfig = {\n version: 1,\n blacklistedCaPubKeys: [],\n debug: {\n blacklistedCaPubKeys: []\n }\n};\n//# sourceMappingURL=deviceAuthenticityBlacklistConfig.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceAuthenticityBlacklistConfig = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst CertPubKeysBlacklist = schema_utils_1.Type.Object({\n blacklistedCaPubKeys: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n});\nexports.DeviceAuthenticityBlacklistConfig = schema_utils_1.Type.Intersect([CertPubKeysBlacklist, schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Number(),\n debug: schema_utils_1.Type.Optional(CertPubKeysBlacklist)\n})]);\n//# sourceMappingURL=deviceAuthenticityBlacklistConfigTypes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deviceAuthenticityConfig = void 0;\nexports.deviceAuthenticityConfig = {\n version: 2,\n T2B1: {\n rootPubKeysOptiga: ['04ca97480ac0d7b1e6efafe518cd433cec2bf8ab9822d76eafd34363b55d63e60380bff20acc75cde03cffcb50ab6f8ce70c878e37ebc58ff7cca0a83b16b15fa5'],\n debug: {\n rootPubKeysOptiga: ['047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a']\n }\n },\n T3B1: {\n rootPubKeysOptiga: ['045b5c3fdd01f3602092834209b86df0ca86a9faf25cac35c73bf6237d66eb21eafcec3706f1ccd5eb4cc7f2fa1751213eccb1c78389afba89a5788ff31ee46a5d'],\n debug: {\n rootPubKeysOptiga: ['047f77368dea2d4d61e989f474a56723c3212dacf8a808d8795595ef38441427c4389bc454f02089d7f08b873005e4c28d432468997871c0bf286fd3861e21e96a']\n }\n },\n T3T1: {\n rootPubKeysOptiga: ['041854b27fb1d9f65abb66828e78c9dc0ca301e66081ab0c6a4d104f9df1cd0ad5a7c75f77a8c092f55cf825d2abaf734f934c9394d5e75f75a5a06a5ee9be93ae'],\n debug: {\n rootPubKeysOptiga: ['04e48b69cd7962068d3cca3bcc6b1747ef496c1e28b5529e34ad7295215ea161dbe8fb08ae0479568f9d2cb07630cb3e52f4af0692102da5873559e45e9fa72959']\n }\n },\n T3W1: {\n rootPubKeysOptiga: ['040dde0d3e0d4da593fac6fd02a461d0e7eef238aca55c7c50b4e9ec37f3873303b6429ef1c9b78b4411a7dcbbc5dde5225979c1c2da3b073e82b1ed3f5f9825bb'],\n rootPubKeysTropic: ['59237acd17134061d655b3f8d624573ca06ce8d862f38ba4e05140ce1d3d609d'],\n debug: {\n rootPubKeysOptiga: ['04521192e173a9da4e3023f747d836563725372681eba3079c56ff11b2fc137ab189eb4155f371127651b5594f8c332fc1e9c0f3b80d4212822668b63189706578'],\n rootPubKeysTropic: []\n }\n }\n};\n//# sourceMappingURL=deviceAuthenticityConfig.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceAuthenticityConfig = void 0;\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst CertPubKeys = schema_utils_1.Type.Object({\n rootPubKeysOptiga: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n rootPubKeysTropic: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String()))\n});\nconst ModelsWithKeys = schema_utils_1.Type.Exclude(schema_utils_1.Type.KeyOfEnum(protobuf_1.MessagesSchema.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.Literal('T1B1'), schema_utils_1.Type.Literal('T2T1'), schema_utils_1.Type.Literal('UNKNOWN')]));\nconst ModelsWithoutKeys = schema_utils_1.Type.Extract(schema_utils_1.Type.KeyOfEnum(protobuf_1.MessagesSchema.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.Literal('T1B1'), schema_utils_1.Type.Literal('T2T1'), schema_utils_1.Type.Literal('UNKNOWN')]));\nconst ModelPubKeys = schema_utils_1.Type.Intersect([schema_utils_1.Type.Record(ModelsWithKeys, schema_utils_1.Type.Intersect([CertPubKeys, schema_utils_1.Type.Object({\n debug: schema_utils_1.Type.Optional(CertPubKeys)\n})])), schema_utils_1.Type.Partial(schema_utils_1.Type.Record(ModelsWithoutKeys, schema_utils_1.Type.Undefined()))]);\nexports.DeviceAuthenticityConfig = schema_utils_1.Type.Intersect([ModelPubKeys, schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Number()\n})]);\n//# sourceMappingURL=deviceAuthenticityConfigTypes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceAuthenticityConfig = exports.deviceAuthenticityConfig = exports.DeviceAuthenticityBlacklistConfig = exports.deviceAuthenticityBlacklistConfig = exports.getRandomChallenge = exports.parseCertificate = exports.parseName = exports.verifySignatureP256 = exports.verifyAuthenticityProof = void 0;\nvar verifyAuthenticityProof_1 = require(\"./verifyAuthenticityProof\");\nObject.defineProperty(exports, \"verifyAuthenticityProof\", {\n enumerable: true,\n get: function () {\n return verifyAuthenticityProof_1.verifyAuthenticityProof;\n }\n});\nObject.defineProperty(exports, \"verifySignatureP256\", {\n enumerable: true,\n get: function () {\n return verifyAuthenticityProof_1.verifySignatureP256;\n }\n});\nvar x509certificate_1 = require(\"./x509certificate\");\nObject.defineProperty(exports, \"parseName\", {\n enumerable: true,\n get: function () {\n return x509certificate_1.parseName;\n }\n});\nObject.defineProperty(exports, \"parseCertificate\", {\n enumerable: true,\n get: function () {\n return x509certificate_1.parseCertificate;\n }\n});\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"getRandomChallenge\", {\n enumerable: true,\n get: function () {\n return utils_1.getRandomChallenge;\n }\n});\nvar deviceAuthenticityBlacklistConfig_1 = require(\"./config/deviceAuthenticityBlacklistConfig\");\nObject.defineProperty(exports, \"deviceAuthenticityBlacklistConfig\", {\n enumerable: true,\n get: function () {\n return deviceAuthenticityBlacklistConfig_1.deviceAuthenticityBlacklistConfig;\n }\n});\nvar deviceAuthenticityBlacklistConfigTypes_1 = require(\"./config/deviceAuthenticityBlacklistConfigTypes\");\nObject.defineProperty(exports, \"DeviceAuthenticityBlacklistConfig\", {\n enumerable: true,\n get: function () {\n return deviceAuthenticityBlacklistConfigTypes_1.DeviceAuthenticityBlacklistConfig;\n }\n});\nvar deviceAuthenticityConfig_1 = require(\"./config/deviceAuthenticityConfig\");\nObject.defineProperty(exports, \"deviceAuthenticityConfig\", {\n enumerable: true,\n get: function () {\n return deviceAuthenticityConfig_1.deviceAuthenticityConfig;\n }\n});\nvar deviceAuthenticityConfigTypes_1 = require(\"./config/deviceAuthenticityConfigTypes\");\nObject.defineProperty(exports, \"DeviceAuthenticityConfig\", {\n enumerable: true,\n get: function () {\n return deviceAuthenticityConfigTypes_1.DeviceAuthenticityConfig;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLabel = exports.fixPath = exports.getIndexFromPath = exports.getPathFromIndex = exports.getSerializedPath = exports.validatePath = exports.getOutputScriptType = exports.getScriptType = exports.getAccountType = exports.isTaprootPath = exports.isBech32Path = exports.isSegwitPath = exports.getHDPath = exports.getSlip44ByPath = exports.fromHardened = exports.toHardened = exports.HD_HARDENED = void 0;\nconst constants_1 = require(\"../constants\");\nexports.HD_HARDENED = 0x80000000;\nconst toHardened = n => (n | exports.HD_HARDENED) >>> 0;\nexports.toHardened = toHardened;\nconst fromHardened = n => (n & ~exports.HD_HARDENED) >>> 0;\nexports.fromHardened = fromHardened;\nconst getSlip44ByPath = path => (0, exports.fromHardened)(path[1]);\nexports.getSlip44ByPath = getSlip44ByPath;\nconst PATH_NOT_VALID = constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Not a valid path');\nconst PATH_NEGATIVE_VALUES = constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Path cannot contain negative values');\nconst getHDPath = path => {\n const parts = path.toLowerCase().split('/');\n if (parts[0] !== 'm') throw PATH_NOT_VALID;\n return parts.filter(p => p !== 'm' && p !== '').map(p => {\n let hardened = false;\n if (p.endsWith(\"'\")) {\n hardened = true;\n p = p.substring(0, p.length - 1);\n }\n let n = parseInt(p, 10);\n if (Number.isNaN(n)) {\n throw PATH_NOT_VALID;\n } else if (n < 0) {\n throw PATH_NEGATIVE_VALUES;\n }\n if (hardened) {\n n = (0, exports.toHardened)(n);\n }\n return n;\n });\n};\nexports.getHDPath = getHDPath;\nconst isSegwitPath = path => Array.isArray(path) && path[0] === (0, exports.toHardened)(49);\nexports.isSegwitPath = isSegwitPath;\nconst isBech32Path = path => Array.isArray(path) && path[0] === (0, exports.toHardened)(84);\nexports.isBech32Path = isBech32Path;\nconst isTaprootPath = path => Array.isArray(path) && (path[0] === (0, exports.toHardened)(86) || path[0] === (0, exports.toHardened)(10025));\nexports.isTaprootPath = isTaprootPath;\nconst getAccountType = path => {\n if ((0, exports.isTaprootPath)(path)) return 'p2tr';\n if ((0, exports.isBech32Path)(path)) return 'p2wpkh';\n if ((0, exports.isSegwitPath)(path)) return 'p2sh';\n return 'p2pkh';\n};\nexports.getAccountType = getAccountType;\nconst getScriptType = path => {\n if (!Array.isArray(path) || path.length < 1) return undefined;\n const p1 = (0, exports.fromHardened)(path[0]);\n switch (p1) {\n case 44:\n return 'SPENDADDRESS';\n case 48:\n {\n if (path.length < 4) return undefined;\n const p3 = (0, exports.fromHardened)(path[3]);\n switch (p3) {\n case 0:\n return 'SPENDMULTISIG';\n case 1:\n return 'SPENDP2SHWITNESS';\n case 2:\n return 'SPENDWITNESS';\n default:\n return undefined;\n }\n }\n case 49:\n return 'SPENDP2SHWITNESS';\n case 84:\n return 'SPENDWITNESS';\n case 86:\n case 10025:\n return 'SPENDTAPROOT';\n default:\n return undefined;\n }\n};\nexports.getScriptType = getScriptType;\nconst getOutputScriptType = path => {\n if (!Array.isArray(path) || path.length < 1) return undefined;\n const p = (0, exports.fromHardened)(path[0]);\n switch (p) {\n case 44:\n return 'PAYTOADDRESS';\n case 48:\n {\n if (path.length < 4) return undefined;\n const p3 = (0, exports.fromHardened)(path[3]);\n switch (p3) {\n case 0:\n return 'PAYTOMULTISIG';\n case 1:\n return 'PAYTOP2SHWITNESS';\n case 2:\n return 'PAYTOWITNESS';\n default:\n return undefined;\n }\n }\n case 49:\n return 'PAYTOP2SHWITNESS';\n case 84:\n return 'PAYTOWITNESS';\n case 86:\n case 10025:\n return 'PAYTOTAPROOT';\n default:\n return undefined;\n }\n};\nexports.getOutputScriptType = getOutputScriptType;\nconst validatePath = (path, length = 0, base = false) => {\n let valid;\n if (typeof path === 'string') {\n valid = (0, exports.getHDPath)(path);\n } else if (Array.isArray(path)) {\n valid = path.map(p => {\n const n = parseInt(p, 10);\n if (Number.isNaN(n)) {\n throw PATH_NOT_VALID;\n } else if (n < 0) {\n throw PATH_NEGATIVE_VALUES;\n }\n return n;\n });\n }\n if (!valid) throw PATH_NOT_VALID;\n if (length > 0 && valid.length < length) throw PATH_NOT_VALID;\n return base ? valid.splice(0, 3) : valid;\n};\nexports.validatePath = validatePath;\nconst getSerializedPath = path => `m/${path.map(i => {\n const s = (i & ~exports.HD_HARDENED).toString();\n if (i & exports.HD_HARDENED) {\n return `${s}'`;\n }\n return s;\n}).join('/')}`;\nexports.getSerializedPath = getSerializedPath;\nconst getPathFromIndex = (bip44purpose, bip44cointype, index) => [(0, exports.toHardened)(bip44purpose), (0, exports.toHardened)(bip44cointype), (0, exports.toHardened)(index)];\nexports.getPathFromIndex = getPathFromIndex;\nconst getIndexFromPath = path => {\n if (path.length < 3) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `getIndexFromPath: invalid path length ${path.toString()}`);\n }\n return (0, exports.fromHardened)(path[2]);\n};\nexports.getIndexFromPath = getIndexFromPath;\nconst fixPath = utxo => {\n if (utxo.address_n && Array.isArray(utxo.address_n)) {\n utxo.address_n = utxo.address_n.map(i => i >>> 0);\n }\n if (utxo.address_n && typeof utxo.address_n === 'string') {\n utxo.address_n = (0, exports.getHDPath)(utxo.address_n);\n }\n return utxo;\n};\nexports.fixPath = fixPath;\nconst getLabel = (label, coinInfo) => {\n if (coinInfo) {\n return label.replace('#NETWORK', coinInfo.label);\n }\n return label.replace('#NETWORK', '');\n};\nexports.getLabel = getLabel;\n//# sourceMappingURL=pathUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFirmwareRange = exports.validateCoinPath = void 0;\nexports.validateParams = validateParams;\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../../constants\");\nconst config_1 = require(\"../../data/config\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst invalidParameter = message => constants_1.ERRORS.TypedError('Method_InvalidParameter', message);\nfunction validateParams(params, schema) {\n schema.forEach(field => {\n const value = params[field.name];\n if (field.required && value == null) {\n throw invalidParameter(`Parameter \"${field.name}\" is missing.`);\n }\n if (!field.type || value == null) return;\n const {\n name,\n type\n } = field;\n if (Array.isArray(type)) {\n const p = {};\n p[name] = value;\n const success = type.reduce((count, t) => {\n try {\n validateParams(p, [{\n name: field.name,\n type: t\n }]);\n return count + 1;\n } catch {\n return count;\n }\n }, 0);\n if (!success) {\n throw invalidParameter(`Parameter \"${name}\" has invalid type. Union of \"${type.join('|')}\" expected.`);\n }\n return;\n }\n if (type === 'array') {\n if (!Array.isArray(value)) {\n throw invalidParameter(`Parameter \"${name}\" has invalid type. \"${type}\" expected.`);\n }\n if (!field.allowEmpty && value.length < 1) {\n throw invalidParameter(`Parameter \"${name}\" is empty.`);\n }\n } else if (type === 'uint') {\n if (typeof value !== 'string' && typeof value !== 'number') {\n throw invalidParameter(`Parameter \"${name}\" has invalid type. \"string|number\" expected.`);\n }\n if (typeof value === 'number' && !Number.isSafeInteger(value) || !/^(?:[1-9]\\d*|\\d)$/.test(value.toString().replace(/^-/, field.allowNegative ? '' : '-'))) {\n throw invalidParameter(`Parameter \"${name}\" has invalid value \"${value}\". Integer representation expected.`);\n }\n } else if (type === 'array-buffer') {\n if (!(value instanceof ArrayBuffer)) {\n throw invalidParameter(`Parameter \"${name}\" has invalid type. \"ArrayBuffer\" expected.`);\n }\n } else if (typeof value !== type) {\n throw invalidParameter(`Parameter \"${name}\" has invalid type. \"${type}\" expected.`);\n }\n });\n return params;\n}\nconst validateCoinPath = (path, coinInfo) => {\n if (coinInfo && coinInfo.slip44 !== (0, pathUtils_1.fromHardened)(path[1])) {\n throw invalidParameter('Parameters \"path\" and \"coin\" do not match.');\n }\n};\nexports.validateCoinPath = validateCoinPath;\nconst getFirmwareRange = (method, coinInfo, currentRange) => {\n const range = JSON.parse(JSON.stringify(currentRange));\n const models = (0, utils_1.typedObjectKeys)(range);\n if (coinInfo) {\n models.forEach(model => {\n const supportVersion = coinInfo.support ? coinInfo.support[model] : false;\n if (supportVersion === false) {\n range[model].min = '0';\n } else if (range[model].min !== '0' && typeof supportVersion === 'string' && utils_1.versionUtils.isNewer(supportVersion, range[model].min)) {\n range[model].min = supportVersion;\n }\n });\n }\n const coinType = coinInfo?.type;\n const shortcut = coinInfo?.shortcut.toLowerCase();\n const configRules = config_1.config.supportedFirmware.filter(rule => {\n if (rule.methods) {\n return rule.methods.includes(method);\n }\n if (rule.capabilities) {\n return rule.capabilities.includes(method);\n }\n return true;\n }).filter(rule => {\n if (rule.coinType) {\n return rule.coinType === coinType;\n }\n if (rule.coin) {\n return (typeof rule.coin === 'string' ? [rule.coin] : rule.coin).includes(shortcut);\n }\n return rule.methods || rule.capabilities;\n });\n configRules.forEach(rule => {\n if (rule.min) {\n models.forEach(model => {\n const modelMin = rule.min[model];\n if (modelMin) {\n if (modelMin === '0' || range[model].min === '0' || !utils_1.versionUtils.isNewerOrEqual(range[model].min, modelMin)) {\n range[model].min = modelMin;\n }\n }\n });\n }\n if (rule.max) {\n models.forEach(model => {\n const modelMax = rule.max[model];\n if (modelMax) {\n if (modelMax === '0' || range[model].max === '0' || !utils_1.versionUtils.isNewerOrEqual(range[model].max, modelMax)) {\n range[model].max = modelMax;\n }\n }\n });\n }\n });\n return range;\n};\nexports.getFirmwareRange = getFirmwareRange;\n//# sourceMappingURL=paramsValidator.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AuthenticateDeviceParams = void 0;\nconst device_authenticity_1 = require(\"@trezor/device-authenticity\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.AuthenticateDeviceParams = schema_utils_1.Type.Object({\n config: schema_utils_1.Type.Optional(device_authenticity_1.DeviceAuthenticityConfig),\n blacklistConfig: schema_utils_1.Type.Optional(device_authenticity_1.DeviceAuthenticityBlacklistConfig),\n allowDebugKeys: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=authenticateDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst device_authenticity_1 = require(\"@trezor/device-authenticity\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst authenticateDevice_1 = require(\"../types/api/authenticateDevice\");\nclass AuthenticateDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useEmptyPassphrase = true;\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useDeviceState = false;\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(authenticateDevice_1.AuthenticateDeviceParams, payload);\n this.params = {\n config: payload.config,\n blacklistConfig: payload.blacklistConfig,\n allowDebugKeys: payload.allowDebugKeys\n };\n }\n async run() {\n const challenge = (0, device_authenticity_1.getRandomChallenge)();\n const {\n message\n } = await this.device.getCommands().typedCall('AuthenticateDevice', 'AuthenticityProof', {\n challenge: challenge.toString('hex')\n });\n const config = this.params.config || device_authenticity_1.deviceAuthenticityConfig;\n const blacklistConfig = this.params.blacklistConfig || device_authenticity_1.deviceAuthenticityBlacklistConfig;\n const commonParams = {\n challenge,\n deviceModel: this.device.features.internal_model,\n allowDebugKeys: this.params.allowDebugKeys,\n config,\n blacklistConfig\n };\n const getOptigaResult = async () => {\n const {\n optiga_signature: signature,\n optiga_certificates: certificates\n } = message;\n const isAvailable = signature !== undefined && certificates.length > 0;\n if (isAvailable) {\n return await (0, device_authenticity_1.verifyAuthenticityProof)({\n ...commonParams,\n certificates,\n signature\n });\n }\n return {\n valid: false,\n error: 'RESPONSE_PAYLOAD_MISSING'\n };\n };\n const getTropicResult = async () => {\n const {\n tropic_signature: signature,\n tropic_certificates: certificates\n } = message;\n const isAvailable = signature !== undefined && certificates.length > 0;\n const isRequired = !this.device.unavailableCapabilities['tropicDeviceAuthentication'];\n if (isAvailable) {\n return await (0, device_authenticity_1.verifyAuthenticityProof)({\n ...commonParams,\n certificates,\n signature\n });\n }\n if (isRequired) {\n return {\n valid: false,\n error: 'RESPONSE_PAYLOAD_MISSING'\n };\n }\n return null;\n };\n const optigaResult = await getOptigaResult();\n const tropicResult = await getTropicResult();\n return {\n optigaResult,\n tropicResult\n };\n }\n}\nexports.default = AuthenticateDevice;\n//# sourceMappingURL=authenticateDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMiscFeeLevels = exports.getEthereumFeeLevels = exports.getBitcoinFeeLevels = exports.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst BLOCKS_FOR_FEE_LEVEL = {\n btc: {\n high: 1,\n normal: 3,\n economy: 6,\n low: 36\n }\n};\nconst DEFAULT_BLOCK_FOR_FEE_LEVEL = 1;\nconst getDefaultBlocksForFeeLevel = (shortcut, label) => BLOCKS_FOR_FEE_LEVEL[shortcut] && BLOCKS_FOR_FEE_LEVEL[shortcut][label] ? BLOCKS_FOR_FEE_LEVEL[shortcut][label] : DEFAULT_BLOCK_FOR_FEE_LEVEL;\nexports.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = '1';\nconst EVM_GAS_PRICE_PER_CHAIN_IN_GWEI = {\n eth: {\n min: 0.1,\n max: 10000,\n defaultGas: 10,\n minPriorityFee: 0\n },\n pol: {\n min: 0.1,\n max: 10000000,\n defaultGas: 200,\n minPriorityFee: 30\n },\n bsc: {\n min: 0.1,\n max: 100000,\n defaultGas: 1,\n minPriorityFee: 0\n },\n base: {\n min: 0.0000001,\n max: 1000,\n defaultGas: 0.01,\n minPriorityFee: 0\n },\n arb: {\n min: 0.001,\n max: 1000,\n defaultGas: 0.01,\n minPriorityFee: 0\n },\n op: {\n min: 0.000000001,\n max: 1000,\n defaultGas: 0.01,\n minPriorityFee: 0\n }\n};\nconst getEvmChainGweiGasPrice = chain => EVM_GAS_PRICE_PER_CHAIN_IN_GWEI[chain] ?? {\n min: 0.000000001,\n max: 10000,\n defaultGas: 1,\n minPriorityFee: 0\n};\nconst getBitcoinFeeLevels = coin => {\n const defaultFees = coin.default_fee_b;\n const shortcut = coin.shortcut.toLowerCase();\n const keys = (0, utils_1.typedObjectKeys)(defaultFees);\n const levels = keys.sort((levelA, levelB) => defaultFees[levelB] - defaultFees[levelA]).map(level => {\n const label = level.toLowerCase();\n return {\n label,\n feePerUnit: defaultFees[level].toString(),\n blocks: getDefaultBlocksForFeeLevel(shortcut, label)\n };\n });\n const minFee = coin.shortcut === 'BTC' ? coin.minfee_kb / 1000 : Math.round(coin.minfee_kb / 1000);\n return {\n blockTime: Math.max(1, Math.round(coin.blocktime_seconds / 60)),\n dustLimit: coin.dust_limit,\n maxFee: Math.round(coin.maxfee_kb / 1000),\n minFee,\n minPriorityFee: -1,\n defaultFees: levels\n };\n};\nexports.getBitcoinFeeLevels = getBitcoinFeeLevels;\nconst getEthereumFeeLevels = network => {\n const {\n min,\n max,\n defaultGas,\n minPriorityFee\n } = getEvmChainGweiGasPrice(network.chain);\n return {\n blockTime: Math.max(0.1, Math.round(network.blocktime_seconds)),\n defaultFees: [{\n label: 'normal',\n feePerUnit: new utils_1.BigNumber(defaultGas).multipliedBy('1e+9').toString(),\n feeLimit: '21000',\n blocks: -1\n }],\n minFee: min,\n maxFee: max,\n minPriorityFee,\n dustLimit: -1\n };\n};\nexports.getEthereumFeeLevels = getEthereumFeeLevels;\nconst RIPPLE_FEE_INFO = {\n blockTime: -1,\n defaultFees: [{\n label: 'normal',\n feePerUnit: '12',\n blocks: -1\n }],\n minFee: 10,\n maxFee: 10000,\n minPriorityFee: -1,\n dustLimit: -1\n};\nconst CARDANO_FEE_INFO = {\n blockTime: -1,\n defaultFees: [{\n label: 'normal',\n feePerUnit: '44',\n blocks: -1\n }],\n minFee: 44,\n maxFee: 16384 * 44 + 155381,\n minPriorityFee: -1,\n dustLimit: -1\n};\nconst SOLANA_FEE_INFO = {\n blockTime: -1,\n defaultFees: [{\n label: 'normal',\n feePerUnit: '100000',\n feeLimit: '200000',\n feePerTx: '25000',\n blocks: -1\n }],\n minFee: 5000,\n maxFee: 1000000000,\n minPriorityFee: -1,\n dustLimit: -1\n};\nconst STELLAR_FEE_INFO = {\n blockTime: -1,\n defaultFees: [{\n label: 'normal',\n feePerUnit: '100',\n blocks: -1\n }],\n minFee: 100,\n maxFee: 10000000,\n minPriorityFee: -1,\n dustLimit: -1\n};\nconst MISC_FEE_LEVELS = {\n xrp: RIPPLE_FEE_INFO,\n txrp: RIPPLE_FEE_INFO,\n ada: CARDANO_FEE_INFO,\n tada: CARDANO_FEE_INFO,\n sol: SOLANA_FEE_INFO,\n dsol: SOLANA_FEE_INFO,\n xlm: STELLAR_FEE_INFO,\n txlm: STELLAR_FEE_INFO\n};\nconst getMiscFeeLevels = data => {\n const shortcut = data.shortcut.toLowerCase();\n return MISC_FEE_LEVELS[shortcut] || {\n blockTime: -1,\n minFee: -1,\n maxFee: -1,\n defaultFees: [{\n label: 'normal',\n feePerUnit: '-1',\n blocks: -1\n }],\n minPriorityFee: -1,\n dustLimit: -1\n };\n};\nexports.getMiscFeeLevels = getMiscFeeLevels;\n//# sourceMappingURL=defaultFeeLevels.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getAllNetworks = exports.getUniqueNetworks = exports.parseCoinsJson = exports.ethereumNetworkInfoBase = exports.getCoinName = exports.getCoinInfo = exports.fixCoinInfoNetwork = exports.getBech32Network = exports.getSegwitNetwork = exports.getMiscNetwork = exports.getEthereumNetwork = exports.getBitcoinNetwork = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst defaultFeeLevels_1 = require(\"./defaultFeeLevels\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nconst bitcoinNetworks = [];\nconst ethereumNetworks = [];\nconst miscNetworks = [];\nconst getBitcoinNetwork = pathOrName => {\n if (typeof pathOrName === 'string') {\n const name = pathOrName.toLowerCase();\n return bitcoinNetworks.find(n => n.name.toLowerCase() === name || n.shortcut.toLowerCase() === name || n.label.toLowerCase() === name);\n }\n const slip44 = (0, pathUtils_1.fromHardened)(pathOrName[1]);\n return bitcoinNetworks.find(n => n.slip44 === slip44);\n};\nexports.getBitcoinNetwork = getBitcoinNetwork;\nconst getEthereumNetwork = pathOrNetworkSymbol => {\n if (typeof pathOrNetworkSymbol === 'string') {\n const networkSymbol = pathOrNetworkSymbol.toLowerCase();\n return ethereumNetworks.find(network => network.shortcut.toLowerCase() === networkSymbol);\n }\n const slip44 = (0, pathUtils_1.fromHardened)(pathOrNetworkSymbol[1]);\n return ethereumNetworks.find(n => n.slip44 === slip44);\n};\nexports.getEthereumNetwork = getEthereumNetwork;\nconst getMiscNetwork = pathOrName => {\n if (typeof pathOrName === 'string') {\n const name = pathOrName.toLowerCase();\n return miscNetworks.find(n => n.name.toLowerCase() === name || n.shortcut.toLowerCase() === name);\n }\n const slip44 = (0, pathUtils_1.fromHardened)(pathOrName[1]);\n return miscNetworks.find(n => n.slip44 === slip44);\n};\nexports.getMiscNetwork = getMiscNetwork;\nconst getSegwitNetwork = coin => {\n if (coin.segwit && typeof coin.xPubMagicSegwit === 'number') {\n return {\n ...coin.network,\n bip32: {\n ...coin.network.bip32,\n public: coin.xPubMagicSegwit\n }\n };\n }\n return null;\n};\nexports.getSegwitNetwork = getSegwitNetwork;\nconst getBech32Network = coin => {\n if (coin.segwit && typeof coin.xPubMagicSegwitNative === 'number') {\n return {\n ...coin.network,\n bip32: {\n ...coin.network.bip32,\n public: coin.xPubMagicSegwitNative\n }\n };\n }\n return null;\n};\nexports.getBech32Network = getBech32Network;\nconst fixCoinInfoNetwork = (ci, path) => {\n const coinInfo = (0, utils_1.cloneObject)(ci);\n if (path[0] === (0, pathUtils_1.toHardened)(84)) {\n const bech32Network = (0, exports.getBech32Network)(coinInfo);\n if (bech32Network) {\n coinInfo.network = bech32Network;\n }\n } else if (path[0] === (0, pathUtils_1.toHardened)(49)) {\n const segwitNetwork = (0, exports.getSegwitNetwork)(coinInfo);\n if (segwitNetwork) {\n coinInfo.network = segwitNetwork;\n }\n } else {\n coinInfo.segwit = false;\n }\n return coinInfo;\n};\nexports.fixCoinInfoNetwork = fixCoinInfoNetwork;\nconst getCoinInfo = currency => (0, exports.getBitcoinNetwork)(currency) || (0, exports.getEthereumNetwork)(currency) || (0, exports.getMiscNetwork)(currency);\nexports.getCoinInfo = getCoinInfo;\nconst getCoinName = path => {\n const slip44 = (0, pathUtils_1.fromHardened)(path[1]);\n const network = ethereumNetworks.find(n => n.slip44 === slip44);\n return network ? network.name : 'Unknown coin';\n};\nexports.getCoinName = getCoinName;\nconst BITCOIN_SHORTCUTS = ['BTC', 'TEST', 'REGTEST'];\nconst parseBitcoinNetworksJson = json => {\n Object.keys(json).forEach(key => {\n const coin = json[key];\n const shortcut = coin.coin_shortcut;\n const isBitcoin = BITCOIN_SHORTCUTS.includes(shortcut);\n const network = {\n messagePrefix: coin.signed_message_header,\n bech32: coin.bech32_prefix,\n bip32: {\n public: coin.xpub_magic,\n private: coin.xprv_magic\n },\n pubKeyHash: coin.address_type,\n scriptHash: coin.address_type_p2sh,\n forkId: coin.fork_id,\n wif: 0\n };\n bitcoinNetworks.push({\n type: 'bitcoin',\n blockchainLink: coin.blockchain_link,\n cashAddrPrefix: coin.cashaddr_prefix,\n label: coin.coin_label,\n name: coin.coin_name,\n shortcut,\n curveName: coin.curve_name,\n forceBip143: coin.force_bip143,\n hashGenesisBlock: coin.hash_genesis_block,\n maxAddressLength: coin.max_address_length,\n maxFeeSatoshiKb: coin.maxfee_kb,\n minAddressLength: coin.min_address_length,\n minFeeSatoshiKb: coin.minfee_kb,\n segwit: coin.segwit,\n slip44: coin.slip44,\n support: coin.support,\n xPubMagic: coin.xpub_magic,\n xPubMagicSegwitNative: coin.xpub_magic_segwit_native,\n xPubMagicSegwit: coin.xpub_magic_segwit_p2sh,\n taproot: coin.taproot,\n network,\n isBitcoin,\n decimals: coin.decimals,\n ...(0, defaultFeeLevels_1.getBitcoinFeeLevels)(coin)\n });\n });\n};\nexports.ethereumNetworkInfoBase = {\n type: 'ethereum',\n decimals: 18\n};\nconst parseEthereumNetworksJson = json => {\n Object.keys(json).forEach(key => {\n const network = json[key];\n ethereumNetworks.push({\n ...exports.ethereumNetworkInfoBase,\n ...(0, defaultFeeLevels_1.getEthereumFeeLevels)(network),\n blockchainLink: network.blockchain_link,\n chainId: network.chain_id,\n label: network.label,\n name: network.name,\n shortcut: network.shortcut,\n slip44: network.slip44,\n support: network.support\n });\n });\n};\nconst parseMiscNetworksJSON = (json, type) => {\n Object.keys(json).forEach(key => {\n const network = json[key];\n miscNetworks.push({\n type: type || 'misc',\n blockchainLink: network.blockchain_link,\n curve: network.curve,\n label: network.name,\n name: network.name,\n shortcut: network.shortcut,\n slip44: network.slip44,\n support: network.support,\n decimals: network.decimals,\n ...(0, defaultFeeLevels_1.getMiscFeeLevels)(network)\n });\n });\n};\nconst parseCoinsJson = json => {\n Object.keys(json).forEach(key => {\n switch (key) {\n case 'bitcoin':\n return parseBitcoinNetworksJson(json[key]);\n case 'eth':\n return parseEthereumNetworksJson(json[key]);\n case 'misc':\n return parseMiscNetworksJSON(json[key]);\n case 'nem':\n return parseMiscNetworksJSON(json[key], 'nem');\n }\n });\n};\nexports.parseCoinsJson = parseCoinsJson;\nconst getUniqueNetworks = networks => networks.reduce((result, info) => {\n if (!info || result.find(i => i.shortcut === info.shortcut)) return result;\n return result.concat(info);\n}, []);\nexports.getUniqueNetworks = getUniqueNetworks;\nconst getAllNetworks = () => [...bitcoinNetworks, ...ethereumNetworks, ...miscNetworks];\nexports.getAllNetworks = getAllNetworks;\n//# sourceMappingURL=coinInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PublicKey = exports.GetPublicKey = exports.GetAddress = exports.DerivationPath = exports.Bundle = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst Bundle = type => schema_utils_1.Type.Object({\n bundle: schema_utils_1.Type.Array(type, {\n minItems: 1\n })\n});\nexports.Bundle = Bundle;\nexports.DerivationPath = schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())], {\n description: 'Derivation Path (BIP32).',\n $id: 'DerivationPath'\n});\nexports.GetAddress = schema_utils_1.Type.Object({\n path: exports.DerivationPath,\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean({\n default: true\n })),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n useEventListener: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.GetPublicKey = schema_utils_1.Type.Object({\n path: exports.DerivationPath,\n showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n suppressBackupWarning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.PublicKey = schema_utils_1.Type.Object({\n publicKey: schema_utils_1.Type.String(),\n path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n serializedPath: schema_utils_1.Type.String()\n});\n//# sourceMappingURL=params.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AuthorizeCoinjoin = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.AuthorizeCoinjoin = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n coordinator: schema_utils_1.Type.String(),\n maxRounds: schema_utils_1.Type.Number(),\n maxCoordinatorFeeRate: schema_utils_1.Type.Number(),\n maxFeePerKvbyte: schema_utils_1.Type.Number(),\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType),\n amountUnit: schema_utils_1.Type.Optional(constants_1.PROTO.EnumAmountUnit),\n preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=authorizeCoinjoin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst authorizeCoinjoin_1 = require(\"../types/api/authorizeCoinjoin\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass AuthorizeCoinjoin extends AbstractMethod_1.AbstractMethod {\n init() {\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(authorizeCoinjoin_1.AuthorizeCoinjoin, payload);\n const address_n = (0, pathUtils_1.validatePath)(payload.path, 3);\n const script_type = payload.scriptType || (0, pathUtils_1.getScriptType)(address_n);\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin || address_n);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n this.preauthorized = payload.preauthorized;\n this.params = {\n coordinator: payload.coordinator,\n max_rounds: payload.maxRounds,\n max_coordinator_fee_rate: payload.maxCoordinatorFeeRate,\n max_fee_per_kvbyte: payload.maxFeePerKvbyte,\n address_n,\n coin_name: coinInfo?.name,\n script_type,\n amount_unit: payload.amountUnit\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n if (this.preauthorized) {\n if (await cmd.preauthorize(false)) {\n return {\n message: 'Success'\n };\n }\n }\n const response = await cmd.typedCall('AuthorizeCoinJoin', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = AuthorizeCoinjoin;\n//# sourceMappingURL=authorizeCoinjoin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelCoinjoinAuthorization = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.CancelCoinjoinAuthorization = schema_utils_1.Type.Object({\n preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=cancelCoinjoinAuthorization.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst cancelCoinjoinAuthorization_1 = require(\"../types/api/cancelCoinjoinAuthorization\");\nclass CancelCoinjoinAuthorization extends AbstractMethod_1.AbstractMethod {\n init() {\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(cancelCoinjoinAuthorization_1.CancelCoinjoinAuthorization, payload);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n this.preauthorized = typeof payload.preauthorized === 'boolean' ? payload.preauthorized : true;\n }\n get info() {\n return 'Cancel Coinjoin Authorization';\n }\n async run() {\n const cmd = this.device.getCommands();\n if (!this.preauthorized) {\n if (!(await cmd.preauthorize(false))) {\n return {\n message: 'Not authorized'\n };\n }\n }\n const response = await cmd.typedCall('CancelAuthorization', 'Success');\n return response.message;\n }\n}\nexports.default = CancelCoinjoinAuthorization;\n//# sourceMappingURL=cancelCoinjoinAuthorization.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass ShowDeviceTutorial extends AbstractMethod_1.AbstractMethod {\n init() {\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n this.useEmptyPassphrase = true;\n this.useDeviceState = false;\n this.allowDeviceMode = [events_1.UI.INITIALIZE];\n }\n get info() {\n return 'Show device tutorial';\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('ShowDeviceTutorial', 'Success');\n return response.message;\n }\n}\nexports.default = ShowDeviceTutorial;\n//# sourceMappingURL=showDeviceTutorial.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass BackupDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useDeviceState = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.BackupDevice, payload);\n this.params = {\n group_threshold: payload.group_threshold,\n groups: payload.groups\n };\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'confirm',\n label: 'Proceed'\n },\n label: 'Do you want to initiate backup procedure?'\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('BackupDevice', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = BackupDevice;\n//# sourceMappingURL=backupDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst transport_1 = require(\"@trezor/transport\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nclass BleUnpair extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = true;\n const {\n payload\n } = this;\n this.params = {\n all: payload.all\n };\n (0, schema_utils_1.Assert)(constants_1.PROTO.BleUnpair, payload);\n }\n async run() {\n const cmd = this.device.getCommands();\n try {\n const response = await cmd.typedCall('BleUnpair', 'Success', this.params);\n return response.message;\n } catch (error) {\n if (this.device.descriptor.apiType === 'bluetooth' && error.message === transport_1.TRANSPORT_ERROR.INTERFACE_DATA_TRANSFER) {\n throw constants_1.ERRORS.TypedError('Device_Disconnected');\n }\n throw error;\n }\n }\n}\nexports.default = BleUnpair;\n//# sourceMappingURL=bleUnpair.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TERMINATE = exports.PUSH_TRANSACTION = exports.UNSUBSCRIBE = exports.SUBSCRIBE = exports.RPC_CALL = exports.ESTIMATE_FEE = exports.GET_TRANSACTION_HEX = exports.GET_TRANSACTION = exports.GET_ACCOUNT_UTXO = exports.GET_ACCOUNT_INFO = exports.GET_BLOCK = exports.GET_BLOCK_HASH = exports.GET_FIAT_RATES_TICKERS_LIST = exports.GET_ACCOUNT_BALANCE_HISTORY = exports.GET_FIAT_RATES_FOR_TIMESTAMPS = exports.GET_CURRENT_FIAT_RATES = exports.GET_INFO = exports.DISCONNECT = exports.CONNECT = exports.INIT = exports.HANDSHAKE = void 0;\nexports.HANDSHAKE = 'm_handshake';\nexports.INIT = 'm_init';\nexports.CONNECT = 'm_connect';\nexports.DISCONNECT = 'm_disconnect';\nexports.GET_INFO = 'm_get_info';\nexports.GET_CURRENT_FIAT_RATES = 'm_get_current_fiat_rates';\nexports.GET_FIAT_RATES_FOR_TIMESTAMPS = 'm_get_fiat_rates_for_timestamps';\nexports.GET_ACCOUNT_BALANCE_HISTORY = 'm_get_account_balance_history';\nexports.GET_FIAT_RATES_TICKERS_LIST = 'm_get_fiat_rates_tickers_list';\nexports.GET_BLOCK_HASH = 'm_get_block_hash';\nexports.GET_BLOCK = 'm_get_block';\nexports.GET_ACCOUNT_INFO = 'm_get_account_info';\nexports.GET_ACCOUNT_UTXO = 'm_get_account_utxo';\nexports.GET_TRANSACTION = 'm_get_transaction';\nexports.GET_TRANSACTION_HEX = 'm_get_transaction_hex';\nexports.ESTIMATE_FEE = 'm_estimate_fee';\nexports.RPC_CALL = 'm_rpc_call';\nexports.SUBSCRIBE = 'm_subscribe';\nexports.UNSUBSCRIBE = 'm_unsubscribe';\nexports.PUSH_TRANSACTION = 'm_push_tx';\nexports.TERMINATE = 'terminate';\n//# sourceMappingURL=messages.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NOTIFICATION = exports.DISCONNECTED = exports.CONNECTED = exports.PUSH_TRANSACTION = exports.UNSUBSCRIBE = exports.SUBSCRIBE = exports.RPC_CALL = exports.ESTIMATE_FEE = exports.GET_TRANSACTION_HEX = exports.GET_TRANSACTION = exports.GET_ACCOUNT_BALANCE_HISTORY = exports.GET_ACCOUNT_UTXO = exports.GET_ACCOUNT_INFO = exports.GET_FIAT_RATES_TICKERS_LIST = exports.GET_FIAT_RATES_FOR_TIMESTAMPS = exports.GET_CURRENT_FIAT_RATES = exports.GET_BLOCK = exports.GET_BLOCK_HASH = exports.GET_INFO = exports.CONNECT = exports.ERROR = void 0;\nexports.ERROR = 'r_error';\nexports.CONNECT = 'r_connect';\nexports.GET_INFO = 'r_info';\nexports.GET_BLOCK_HASH = 'r_get_block_hash';\nexports.GET_BLOCK = 'r_get_block';\nexports.GET_CURRENT_FIAT_RATES = 'r_get_current_fiat_rates';\nexports.GET_FIAT_RATES_FOR_TIMESTAMPS = 'r_get_fiat_rates_for_timestamps';\nexports.GET_FIAT_RATES_TICKERS_LIST = 'r_GET_FIAT_RATES_TICKERS_LIST';\nexports.GET_ACCOUNT_INFO = 'r_account_info';\nexports.GET_ACCOUNT_UTXO = 'r_get_account_utxo';\nexports.GET_ACCOUNT_BALANCE_HISTORY = 'r_get_account_balance_history';\nexports.GET_TRANSACTION = 'r_get_transaction';\nexports.GET_TRANSACTION_HEX = 'r_get_transaction_hex';\nexports.ESTIMATE_FEE = 'r_estimate_fee';\nexports.RPC_CALL = 'r_rpc_call';\nexports.SUBSCRIBE = 'r_subscribe';\nexports.UNSUBSCRIBE = 'r_unsubscribe';\nexports.PUSH_TRANSACTION = 'r_push_tx';\nexports.CONNECTED = 'r_connected';\nexports.DISCONNECTED = 'r_disconnected';\nexports.NOTIFICATION = 'r_notification';\n//# sourceMappingURL=responses.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RESPONSES = exports.MESSAGES = void 0;\nconst tslib_1 = require(\"tslib\");\nconst MESSAGES = tslib_1.__importStar(require(\"./messages\"));\nexports.MESSAGES = MESSAGES;\nconst RESPONSES = tslib_1.__importStar(require(\"./responses\"));\nexports.RESPONSES = RESPONSES;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CustomError = void 0;\nconst PREFIX = 'blockchain_link/';\nconst ERROR = {\n connect: undefined,\n worker_not_found: 'Worker not found',\n worker_invalid: 'Invalid worker object',\n worker_timeout: 'Worker timeout',\n worker_unknown_request: 'Unknown message type:',\n worker_runtime: undefined,\n invalid_param: 'Invalid parameter:',\n websocket_not_initialized: 'WebSocket not initialized',\n websocket_no_url: 'Cannot connect because no server was specified',\n websocket_timeout: 'Websocket timeout',\n websocket_error_message: undefined,\n websocket_runtime_error: undefined\n};\nclass CustomError extends Error {\n code;\n message = '';\n constructor(codeOrMessage, message = '') {\n super(message);\n this.message = message;\n if (typeof codeOrMessage === 'string') {\n const isPrefixed = codeOrMessage.indexOf(PREFIX) === 0;\n const code = isPrefixed ? codeOrMessage.substring(PREFIX.length) : codeOrMessage;\n const knownCode = Object.keys(ERROR).includes(code);\n if (isPrefixed || knownCode) {\n this.code = `${PREFIX}${code}`;\n const codeMessage = ERROR[code];\n if (codeMessage) {\n if (this.message === '') {\n this.message = codeMessage;\n } else if (message.indexOf('+') === 0) {\n this.message = `${codeMessage} ${message.substring(1)}`;\n }\n }\n } else if (this.message === '') {\n this.message = code;\n }\n }\n if (typeof this.message !== 'string' || this.message === '') {\n this.message = 'Message not set';\n }\n }\n}\nexports.CustomError = CustomError;\n//# sourceMappingURL=errors.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils_1 = require(\"@trezor/utils\");\nconst workerWrapper = factory => {\n if (typeof factory === 'function') return factory();\n if (typeof factory === 'string' && typeof Worker !== 'undefined') return new Worker(factory);\n throw new errors_1.CustomError('worker_not_found');\n};\nconst initWorker = async settings => {\n const dfd = (0, utils_1.createDeferred)(-1);\n const worker = await workerWrapper(settings.worker);\n if (typeof worker !== 'object' || typeof worker.postMessage !== 'function') {\n throw new errors_1.CustomError('worker_invalid');\n }\n const timeout = setTimeout(() => {\n worker.onmessage = null;\n worker.onerror = null;\n dfd.reject(new errors_1.CustomError('worker_timeout'));\n }, settings.timeout || 30000);\n worker.onmessage = message => {\n if (message.data.type !== constants_1.MESSAGES.HANDSHAKE) return;\n clearTimeout(timeout);\n worker.postMessage({\n type: constants_1.MESSAGES.HANDSHAKE,\n settings: Object.assign(settings, {\n worker: undefined\n })\n });\n dfd.resolve(worker);\n };\n worker.onerror = error => {\n clearTimeout(timeout);\n worker.onmessage = null;\n worker.onerror = null;\n try {\n worker.terminate();\n } catch {}\n const message = error.message ? `Worker runtime error: Line ${error.lineno} in ${error.filename}: ${error.message}` : 'Worker handshake error';\n dfd.reject(new errors_1.CustomError('worker_runtime', message));\n };\n return dfd.promise;\n};\nclass BlockchainLink extends utils_1.TypedEmitter {\n settings;\n lazyWorker = (0, utils_1.createLazy)(this.initWorker.bind(this), this.disposeWorker.bind(this));\n deferred = (0, utils_1.createDeferredManager)();\n throttler;\n constructor(settings) {\n super();\n this.settings = settings;\n const throttleBlockEventTimeout = typeof settings.throttleBlockEvent === 'number' ? settings.throttleBlockEvent : 500;\n this.throttler = new utils_1.Throttler(throttleBlockEventTimeout);\n }\n async initWorker() {\n const worker = await initWorker(this.settings);\n worker.onmessage = this.onMessage.bind(this);\n worker.onerror = this.onError.bind(this);\n return worker;\n }\n disposeWorker(worker) {\n worker.terminate();\n }\n async sendMessage(message) {\n const worker = await this.lazyWorker.getOrInit();\n const {\n promiseId,\n promise\n } = this.deferred.create();\n worker.postMessage({\n id: promiseId,\n ...message\n });\n return promise;\n }\n connect() {\n return this.sendMessage({\n type: constants_1.MESSAGES.CONNECT\n });\n }\n getInfo() {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_INFO\n });\n }\n getBlockHash(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_BLOCK_HASH,\n payload\n });\n }\n getBlock(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_BLOCK,\n payload\n });\n }\n getAccountInfo(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_ACCOUNT_INFO,\n payload\n });\n }\n getAccountUtxo(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_ACCOUNT_UTXO,\n payload\n });\n }\n getTransaction(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_TRANSACTION,\n payload\n });\n }\n getTransactionHex(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_TRANSACTION_HEX,\n payload\n });\n }\n getAccountBalanceHistory(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY,\n payload\n });\n }\n getCurrentFiatRates(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_CURRENT_FIAT_RATES,\n payload\n });\n }\n getFiatRatesForTimestamps(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_FIAT_RATES_FOR_TIMESTAMPS,\n payload\n });\n }\n getFiatRatesTickersList(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.GET_FIAT_RATES_TICKERS_LIST,\n payload\n });\n }\n estimateFee(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.ESTIMATE_FEE,\n payload\n });\n }\n rpcCall(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.RPC_CALL,\n payload\n });\n }\n subscribe(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.SUBSCRIBE,\n payload\n });\n }\n unsubscribe(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.UNSUBSCRIBE,\n payload\n });\n }\n pushTransaction(payload) {\n return this.sendMessage({\n type: constants_1.MESSAGES.PUSH_TRANSACTION,\n payload\n });\n }\n async disconnect() {\n if (!this.lazyWorker.get()) return true;\n return this.sendMessage({\n type: constants_1.MESSAGES.DISCONNECT\n });\n }\n onMessage = event => {\n if (!event.data) return;\n const {\n data\n } = event;\n if (data.id === -1) {\n this.onEvent(data);\n return;\n }\n if (data.type === constants_1.RESPONSES.ERROR) {\n this.deferred.reject(data.id, new errors_1.CustomError(data.payload.code, data.payload.message));\n } else {\n this.deferred.resolve(data.id, data.payload);\n }\n };\n onEvent = data => {\n if (data.type === constants_1.RESPONSES.CONNECTED) {\n this.emit('connected');\n }\n if (data.type === constants_1.RESPONSES.DISCONNECTED) {\n this.emit('disconnected');\n }\n if (data.type === constants_1.RESPONSES.NOTIFICATION) {\n const notification = data.payload;\n if (notification.type === 'block') {\n this.throttler.throttle('block', () => {\n this.emit(notification.type, notification.payload);\n });\n } else if (notification.type === 'notification') {\n const txAccountId = `${notification.payload.descriptor}:${notification.payload.tx.txid}`;\n this.throttler.throttle(txAccountId, () => {\n this.emit(notification.type, notification.payload);\n });\n } else {\n this.emit(notification.type, notification.payload);\n }\n }\n };\n onError = error => {\n const message = error.message ? `Worker runtime error: Line ${error.lineno} in ${error.filename}: ${error.message}` : 'Worker handshake error';\n const e = new errors_1.CustomError('worker_runtime', message);\n this.deferred.rejectAll(e);\n };\n dispose() {\n this.removeAllListeners();\n this.throttler.dispose();\n this.lazyWorker.dispose();\n }\n}\nexports.default = BlockchainLink;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filterShadowedPendingTxsByNonce = exports.formatTokenSymbol = exports.sortTxsFromLatest = exports.transformTarget = exports.sumVinVout = exports.enhanceVinVout = exports.filterTargets = exports.isAccountOwned = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst isAccountOwned = addresses => vinVout => Array.isArray(vinVout?.addresses) && vinVout.addresses.some(a => addresses.includes(a));\nexports.isAccountOwned = isAccountOwned;\nconst filterTargets = (addresses, targets) => {\n if (typeof addresses === 'string') {\n addresses = [addresses];\n }\n if (!addresses || !Array.isArray(addresses) || !targets || !Array.isArray(targets)) return [];\n const all = addresses.map(a => {\n if (typeof a === 'string') return a;\n if (typeof a === 'object' && typeof a.address === 'string') return a.address;\n return undefined;\n }).filter(utils_1.isNotUndefined);\n return targets.filter((0, exports.isAccountOwned)(all));\n};\nexports.filterTargets = filterTargets;\nconst enhanceVinVout = addresses => vinVout => ({\n ...vinVout,\n isAccountOwned: (0, exports.isAccountOwned)(addresses)(vinVout) || undefined\n});\nexports.enhanceVinVout = enhanceVinVout;\nconst sumVinVout = (sum, {\n value\n}) => typeof value === 'string' ? new bigNumber_1.BigNumber(value || '0').plus(sum) : sum;\nexports.sumVinVout = sumVinVout;\nconst transformTarget = (target, incoming) => ({\n n: target.n || 0,\n addresses: target.addresses,\n isAddress: target.isAddress,\n amount: target.value,\n coinbase: target.coinbase,\n isAccountTarget: incoming.includes(target) ? true : undefined\n});\nexports.transformTarget = transformTarget;\nconst adjustHeight = ({\n blockHeight\n}) => blockHeight === undefined || blockHeight <= 0 ? Number.MAX_SAFE_INTEGER : blockHeight;\nconst sortTxsFromLatest = transactions => {\n const txs = transactions.slice().sort((a, b) => adjustHeight(b) - adjustHeight(a));\n let from = 0;\n while (from < txs.length - 1) {\n const fromHeight = adjustHeight(txs[from]);\n let to = from + 1;\n if (fromHeight === adjustHeight(txs[to])) {\n do {\n to++;\n } while (to < txs.length && fromHeight === adjustHeight(txs[to]));\n const toposorted = (0, utils_1.topologicalSort)(txs.slice(from, to), (a, b) => a.details.vin.some(({\n txid\n }) => txid === b.txid));\n txs.splice(from, toposorted.length, ...toposorted);\n }\n from = to;\n }\n return txs;\n};\nexports.sortTxsFromLatest = sortTxsFromLatest;\nconst formatTokenSymbol = symbol => {\n const upperCasedSymbol = symbol.toUpperCase();\n const isTokenSymbolLong = upperCasedSymbol.length > 7;\n return isTokenSymbolLong ? `${upperCasedSymbol.slice(0, 7)}...` : upperCasedSymbol;\n};\nexports.formatTokenSymbol = formatTokenSymbol;\nconst isOutgoing = (lowerCasedDescriptor, tx) => tx.details?.vin?.[0]?.addresses?.[0]?.toLowerCase() === lowerCasedDescriptor;\nconst filterShadowedPendingTxsByNonce = (txs, lowerCasedDescriptor) => {\n const myLatestMinedTx = txs.find(tx => isOutgoing(lowerCasedDescriptor, tx) && tx.ethereumSpecific && (tx.ethereumSpecific.status === 0 || tx.ethereumSpecific.status === 1) && Number.isInteger(tx.ethereumSpecific.nonce));\n if (!myLatestMinedTx?.ethereumSpecific) return txs;\n const latestMinedNonce = myLatestMinedTx.ethereumSpecific.nonce;\n return txs.filter(tx => {\n const es = tx.ethereumSpecific;\n if (!es) return true;\n const isOutgoingTx = isOutgoing(lowerCasedDescriptor, tx);\n const isPending = es.status === -1;\n if (isOutgoingTx && isPending && es.nonce <= latestMinedNonce) {\n return false;\n }\n return true;\n });\n};\nexports.filterShadowedPendingTxsByNonce = filterShadowedPendingTxsByNonce;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transformAccountUtxo = exports.transformAccountInfo = exports.transformAddresses = exports.transformTokenInfo = exports.transformTransaction = exports.isTxFailed = exports.filterEthereumInternalTransfers = exports.isEthereumStakingInternalTransfer = exports.filterTokenTransfers = exports.transformServerInfo = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst utils_1 = require(\"./utils\");\nconst transformServerInfo = payload => ({\n name: payload.name,\n shortcut: payload.shortcut,\n network: payload.network ?? payload.shortcut,\n testnet: payload.testnet,\n version: payload.version,\n decimals: payload.decimals,\n blockHeight: payload.bestHeight,\n blockHash: payload.bestHash,\n consensusBranchId: payload.backend?.consensus ? parseInt(payload.backend.consensus.chaintip, 16) : undefined\n});\nexports.transformServerInfo = transformServerInfo;\nconst filterTokenTransfers = (addresses, transfers) => {\n if (typeof addresses === 'string') {\n addresses = [addresses];\n }\n if (!addresses || !Array.isArray(addresses) || !transfers || !Array.isArray(transfers)) return [];\n const all = addresses.map(a => {\n if (typeof a === 'string') return a;\n if (typeof a === 'object' && typeof a.address === 'string') return a.address;\n return null;\n });\n return transfers.filter(transfer => {\n if (transfer && typeof transfer === 'object') {\n return transfer.from && all.indexOf(transfer.from) >= 0 || transfer.to && all.indexOf(transfer.to) >= 0;\n }\n return false;\n }).map(transfer => {\n const isIncoming = transfer.from && all.indexOf(transfer.from) >= 0;\n const isOutgoing = transfer.to && all.indexOf(transfer.to) >= 0;\n let type;\n if (isIncoming && isOutgoing) {\n type = 'self';\n } else if (isIncoming) {\n type = 'sent';\n } else {\n type = 'recv';\n }\n const tokenTransfer = {\n ...transfer,\n type,\n decimals: transfer.decimals || 0,\n amount: transfer.value || '',\n standard: transfer.standard\n };\n delete tokenTransfer.value;\n return tokenTransfer;\n });\n};\nexports.filterTokenTransfers = filterTokenTransfers;\nconst ethereumStakingAddresses = {\n poolInstance: ['0xD523794C879D9eC028960a231F866758e405bE34', '0xAFA848357154a6a624686b348303EF9a13F63264'],\n withdrawTreasury: ['0x19449f0f696703Aa3b1485DfA2d855F33659397a', '0x66cb3AeD024740164EBcF04e292dB09b5B63A2e1']\n};\nconst isEthereumStakingInternalTransfer = (from, to) => {\n const {\n poolInstance,\n withdrawTreasury\n } = ethereumStakingAddresses;\n return poolInstance.includes(from) && withdrawTreasury.includes(to);\n};\nexports.isEthereumStakingInternalTransfer = isEthereumStakingInternalTransfer;\nconst filterEthereumInternalTransfers = (address, ethereumSpecific) => {\n const internalTransfers = ethereumSpecific?.internalTransfers;\n if (!address || !internalTransfers?.length) {\n return [];\n }\n return internalTransfers.filter(({\n type,\n from,\n to\n }) => type === 0 && ([from, to].includes(address) || (0, exports.isEthereumStakingInternalTransfer)(from, to))).map(({\n from,\n to,\n value\n }) => {\n const isIncoming = from === address;\n const isOutgoing = to === address;\n let type;\n if (isIncoming && isOutgoing) {\n type = 'self';\n } else if (isIncoming) {\n type = 'sent';\n } else if (isOutgoing) {\n type = 'recv';\n } else {\n type = 'external';\n }\n return {\n type,\n amount: value,\n from,\n to\n };\n });\n};\nexports.filterEthereumInternalTransfers = filterEthereumInternalTransfers;\nconst isTxFailed = tx => !(!tx.blockHeight || tx.blockHeight < 0) && tx.ethereumSpecific?.status === 0;\nexports.isTxFailed = isTxFailed;\nconst transformTransaction = (tx, addressesOrDescriptor) => {\n const [addresses, descriptor] = typeof addressesOrDescriptor === 'object' ? [addressesOrDescriptor, undefined] : [undefined, addressesOrDescriptor];\n const myAddresses = addresses ? addresses.change.concat(addresses.used, addresses.unused).map(a => a.address) : descriptor && [descriptor] || [];\n const inputs = Array.isArray(tx.vin) ? tx.vin : [];\n const totalInput = inputs.reduce(utils_1.sumVinVout, 0);\n const myInputs = (0, utils_1.filterTargets)(myAddresses, tx.vin);\n const myTotalInput = myInputs.reduce(utils_1.sumVinVout, 0);\n const outputs = Array.isArray(tx.vout) ? tx.vout : [];\n const totalOutput = outputs.reduce(utils_1.sumVinVout, 0);\n const myOutputs = (0, utils_1.filterTargets)(myAddresses, tx.vout);\n const myTotalOutput = myOutputs.reduce(utils_1.sumVinVout, 0);\n const myTokens = (0, exports.filterTokenTransfers)(myAddresses, tx.tokenTransfers);\n const myInternalTransfers = (0, exports.filterEthereumInternalTransfers)(descriptor, tx.ethereumSpecific);\n const isNonChangeOutput = o => addresses ? (0, utils_1.filterTargets)(addresses.change, tx.vout).indexOf(o) < 0 : true;\n const isNonZero = o => o.value && o.value !== '0';\n let type;\n let amount;\n let targets;\n if (tx.ethereumSpecific?.createdContract) {\n type = 'contract';\n amount = tx.value;\n targets = [];\n } else if (myInputs.length) {\n if (myInputs.length < inputs.length) {\n type = 'joint';\n targets = [];\n amount = new bigNumber_1.BigNumber(myTotalOutput).minus(myTotalInput).toString();\n } else if (myOutputs.length < outputs.length || !outputs.length) {\n type = 'sent';\n targets = myTokens.length ? outputs.filter(isNonZero) : outputs.filter(isNonChangeOutput);\n amount = !outputs.length || tx.ethereumSpecific ? tx.value : new bigNumber_1.BigNumber(myTotalInput).minus(myTotalOutput).minus(tx.fees ?? '0').toString();\n } else {\n type = 'self';\n amount = tx.fees;\n const intentionalOutputs = outputs.filter(isNonChangeOutput);\n targets = intentionalOutputs.length ? intentionalOutputs : outputs;\n }\n } else if (myOutputs.length || myTokens.length || myInternalTransfers.length) {\n type = 'recv';\n amount = myTotalOutput.toString();\n targets = myOutputs;\n const transfers = [...myTokens, ...myInternalTransfers];\n const isSentTransferAvailable = transfers.find(t => t.type === 'sent');\n const isNoRecvTransferAvailable = transfers.find(t => t.type !== 'recv');\n if (isSentTransferAvailable) {\n type = 'sent';\n } else if (!myOutputs.length && isNoRecvTransferAvailable) {\n type = 'self';\n }\n } else {\n type = 'unknown';\n amount = tx.value;\n targets = [];\n }\n type = (0, exports.isTxFailed)(tx) ? 'failed' : type;\n const rbf = tx.rbf || inputs.find(i => typeof i.sequence === 'number' && i.sequence < 0xffffffff - 1) ? true : undefined;\n const fee = tx.ethereumSpecific && !tx.ethereumSpecific.gasUsed ? new bigNumber_1.BigNumber(tx.ethereumSpecific?.maxFeePerGas ?? tx.ethereumSpecific?.gasPrice ?? '0').times(tx.ethereumSpecific.gasLimit).toString() : tx.fees;\n const feeRate = tx.vsize ? new bigNumber_1.BigNumber(fee).div(tx.vsize).decimalPlaces(2).toString() : undefined;\n const size = tx.size || (typeof tx.hex === 'string' ? tx.hex.length / 2 : 0);\n return {\n type,\n txid: tx.txid,\n hex: tx.hex,\n blockTime: tx.blockTime,\n blockHeight: tx.blockHeight,\n blockHash: tx.blockHash,\n lockTime: tx.lockTime,\n amount,\n fee,\n vsize: tx.vsize,\n feeRate,\n targets: targets.filter(target => typeof target === 'object').map(target => (0, utils_1.transformTarget)(target, myOutputs)),\n tokens: myTokens,\n internalTransfers: myInternalTransfers,\n rbf,\n ethereumSpecific: tx.ethereumSpecific && {\n ...tx.ethereumSpecific,\n gasPrice: tx.ethereumSpecific.gasPrice ?? '0'\n },\n details: {\n vin: inputs.map((0, utils_1.enhanceVinVout)(myAddresses)),\n vout: outputs.map((0, utils_1.enhanceVinVout)(myAddresses)),\n size,\n totalInput: totalInput.toString(),\n totalOutput: totalOutput.toString()\n }\n };\n};\nexports.transformTransaction = transformTransaction;\nconst transformTokenInfo = tokens => {\n if (!tokens || !Array.isArray(tokens)) return undefined;\n const info = tokens.reduce((arr, token) => {\n if (token.type === 'XPUBAddress') return arr;\n return arr.concat([{\n ...token,\n decimals: token.decimals || 0,\n standard: token.standard\n }]);\n }, []);\n return info.length > 0 ? info : undefined;\n};\nexports.transformTokenInfo = transformTokenInfo;\nconst transformAddresses = tokens => {\n if (!tokens || !Array.isArray(tokens)) return undefined;\n const addresses = tokens.reduce((arr, t) => {\n if (t.type !== 'XPUBAddress') return arr;\n return arr.concat([{\n address: t.name,\n path: t.path,\n transfers: t.transfers,\n balance: t.balance,\n sent: t.totalSent,\n received: t.totalReceived\n }]);\n }, []);\n if (addresses.length < 1) return undefined;\n const internal = addresses.filter(a => a.path.split('/')[4] === '1');\n const external = addresses.filter(a => internal.indexOf(a) < 0);\n return {\n change: internal,\n used: external.filter(a => a.transfers > 0),\n unused: external.filter(a => a.transfers === 0)\n };\n};\nexports.transformAddresses = transformAddresses;\nconst transformAccountInfo = payload => {\n let page;\n if (typeof payload.page === 'number') {\n page = {\n index: payload.page,\n size: payload.itemsOnPage,\n total: payload.totalPages\n };\n }\n const isEVM = typeof payload.nonce === 'string';\n let misc;\n if (isEVM) {\n misc = {\n nonce: payload.nonce,\n contractInfo: payload.contractInfo,\n stakingPools: payload.stakingPools,\n addressAliases: payload.addressAliases\n };\n }\n const descriptor = payload.address;\n const addresses = (0, exports.transformAddresses)(payload.tokens);\n const tokens = (0, exports.transformTokenInfo)(payload.tokens);\n const unconfirmedBalance = new bigNumber_1.BigNumber(payload.unconfirmedBalance);\n let availableBalance = payload.balance;\n if (!unconfirmedBalance.isNaN() && !isEVM) {\n availableBalance = unconfirmedBalance.plus(payload.balance).toString();\n }\n const empty = payload.txs === 0 && payload.unconfirmedTxs === 0 && new bigNumber_1.BigNumber(availableBalance).isZero();\n const unfilteredTransactions = payload.transactions ? payload.transactions.map(t => (0, exports.transformTransaction)(t, addresses ?? descriptor)) : undefined;\n const transactions = isEVM && unfilteredTransactions ? (0, utils_1.filterShadowedPendingTxsByNonce)(unfilteredTransactions, descriptor.toLowerCase()) : unfilteredTransactions;\n return {\n descriptor,\n balance: payload.balance,\n availableBalance,\n empty,\n tokens,\n addresses,\n history: {\n addrTxCount: payload.addrTxCount,\n total: payload.txs,\n tokens: typeof payload.nonTokenTxs === 'number' ? payload.txs - payload.nonTokenTxs : undefined,\n unconfirmed: payload.unconfirmedTxs,\n transactions\n },\n misc,\n page\n };\n};\nexports.transformAccountInfo = transformAccountInfo;\nconst transformAccountUtxo = payload => payload.map(utxo => ({\n txid: utxo.txid,\n vout: utxo.vout,\n amount: utxo.value,\n blockHeight: utxo.height,\n address: utxo.address,\n path: utxo.path,\n confirmations: utxo.confirmations,\n coinbase: utxo.coinbase\n}));\nexports.transformAccountUtxo = transformAccountUtxo;\n//# sourceMappingURL=blockbook.js.map", null, null, null, null, "import { Address4 } from './ipv4';\nimport { Address6 } from './ipv6';\n\nexport interface ReverseFormOptions {\n omitSuffix?: boolean;\n}\n\nexport function isInSubnet(this: Address4 | Address6, address: Address4 | Address6) {\n if (this.subnetMask < address.subnetMask) {\n return false;\n }\n\n if (this.mask(address.subnetMask) === address.mask()) {\n return true;\n }\n\n return false;\n}\n\nexport function isCorrect(defaultBits: number) {\n return function (this: Address4 | Address6) {\n if (this.addressMinusSuffix !== this.correctForm()) {\n return false;\n }\n\n if (this.subnetMask === defaultBits && !this.parsedSubnet) {\n return true;\n }\n\n return this.parsedSubnet === String(this.subnetMask);\n };\n}\n\nexport function numberToPaddedHex(number: number) {\n return number.toString(16).padStart(2, '0');\n}\n\nexport function stringToPaddedHex(numberString: string) {\n return numberToPaddedHex(parseInt(numberString, 10));\n}\n\n/**\n * @param binaryValue Binary representation of a value (e.g. `10`)\n * @param position Byte position, where 0 is the least significant bit\n */\nexport function testBit(binaryValue: string, position: number): boolean {\n const { length } = binaryValue;\n\n if (position > length) {\n return false;\n }\n\n const positionInString = length - position;\n return binaryValue.substring(positionInString, positionInString + 1) === '1';\n}\n", "export const BITS = 32;\nexport const GROUPS = 4;\n\nexport const RE_ADDRESS =\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g;\n\nexport const RE_SUBNET_STRING = /\\/\\d{1,2}$/;\n", "export class AddressError extends Error {\n parseMessage?: string;\n\n constructor(message: string, parseMessage?: string) {\n super(message);\n\n this.name = 'AddressError';\n\n this.parseMessage = parseMessage;\n }\n}\n", "/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants from './v4/constants';\nimport { AddressError } from './address-error';\n\n/**\n * Represents an IPv4 address\n * @class Address4\n * @param {string} address - An IPv4 address string\n */\nexport class Address4 {\n address: string;\n addressMinusSuffix?: string;\n groups: number = constants.GROUPS;\n parsedAddress: string[] = [];\n parsedSubnet: string = '';\n subnet: string = '/32';\n subnetMask: number = 32;\n v4: boolean = true;\n\n constructor(address: string) {\n this.address = address;\n\n const subnet = constants.RE_SUBNET_STRING.exec(address);\n\n if (subnet) {\n this.parsedSubnet = subnet[0].replace('/', '');\n this.subnetMask = parseInt(this.parsedSubnet, 10);\n this.subnet = `/${this.subnetMask}`;\n\n if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {\n throw new AddressError('Invalid subnet mask.');\n }\n\n address = address.replace(constants.RE_SUBNET_STRING, '');\n }\n\n this.addressMinusSuffix = address;\n\n this.parsedAddress = this.parse(address);\n }\n\n static isValid(address: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new Address4(address);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /*\n * Parses a v4 address\n */\n parse(address: string) {\n const groups = address.split('.');\n\n if (!address.match(constants.RE_ADDRESS)) {\n throw new AddressError('Invalid IPv4 address.');\n }\n\n return groups;\n }\n\n /**\n * Returns the correct form of an address\n * @memberof Address4\n * @instance\n * @returns {String}\n */\n correctForm(): string {\n return this.parsedAddress.map((part) => parseInt(part, 10)).join('.');\n }\n\n /**\n * Returns true if the address is correct, false otherwise\n * @memberof Address4\n * @instance\n * @returns {Boolean}\n */\n isCorrect = common.isCorrect(constants.BITS);\n\n /**\n * Converts a hex string to an IPv4 address object\n * @memberof Address4\n * @static\n * @param {string} hex - a hex string to convert\n * @returns {Address4}\n */\n static fromHex(hex: string): Address4 {\n const padded = hex.replace(/:/g, '').padStart(8, '0');\n const groups = [];\n let i;\n\n for (i = 0; i < 8; i += 2) {\n const h = padded.slice(i, i + 2);\n\n groups.push(parseInt(h, 16));\n }\n\n return new Address4(groups.join('.'));\n }\n\n /**\n * Converts an integer into a IPv4 address object\n * @memberof Address4\n * @static\n * @param {integer} integer - a number to convert\n * @returns {Address4}\n */\n static fromInteger(integer: number): Address4 {\n return Address4.fromHex(integer.toString(16));\n }\n\n /**\n * Return an address from in-addr.arpa form\n * @memberof Address4\n * @static\n * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address\n * @returns {Adress4}\n * @example\n * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.)\n * address.correctForm(); // '192.0.2.42'\n */\n static fromArpa(arpaFormAddress: string): Address4 {\n // remove ending \".in-addr.arpa.\" or just \".\"\n const leader = arpaFormAddress.replace(/(\\.in-addr\\.arpa)?\\.$/, '');\n\n const address = leader.split('.').reverse().join('.');\n\n return new Address4(address);\n }\n\n /**\n * Converts an IPv4 address object to a hex string\n * @memberof Address4\n * @instance\n * @returns {String}\n */\n toHex(): string {\n return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':');\n }\n\n /**\n * Converts an IPv4 address object to an array of bytes\n * @memberof Address4\n * @instance\n * @returns {Array}\n */\n toArray(): number[] {\n return this.parsedAddress.map((part) => parseInt(part, 10));\n }\n\n /**\n * Converts an IPv4 address object to an IPv6 address group\n * @memberof Address4\n * @instance\n * @returns {String}\n */\n toGroup6(): string {\n const output = [];\n let i;\n\n for (i = 0; i < constants.GROUPS; i += 2) {\n output.push(\n `${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(\n this.parsedAddress[i + 1],\n )}`,\n );\n }\n\n return output.join(':');\n }\n\n /**\n * Returns the address as a `bigint`\n * @memberof Address4\n * @instance\n * @returns {bigint}\n */\n bigInt(): bigint {\n return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`);\n }\n\n /**\n * Helper function getting start address.\n * @memberof Address4\n * @instance\n * @returns {bigint}\n */\n _startAddress(): bigint {\n return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The first address in the range given by this address' subnet.\n * Often referred to as the Network Address.\n * @memberof Address4\n * @instance\n * @returns {Address4}\n */\n startAddress(): Address4 {\n return Address4.fromBigInt(this._startAddress());\n }\n\n /**\n * The first host address in the range given by this address's subnet ie\n * the first address after the Network Address\n * @memberof Address4\n * @instance\n * @returns {Address4}\n */\n startAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._startAddress() + adjust);\n }\n\n /**\n * Helper function getting end address.\n * @memberof Address4\n * @instance\n * @returns {bigint}\n */\n _endAddress(): bigint {\n return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`);\n }\n\n /**\n * The last address in the range given by this address' subnet\n * Often referred to as the Broadcast\n * @memberof Address4\n * @instance\n * @returns {Address4}\n */\n endAddress(): Address4 {\n return Address4.fromBigInt(this._endAddress());\n }\n\n /**\n * The last host address in the range given by this address's subnet ie\n * the last address prior to the Broadcast Address\n * @memberof Address4\n * @instance\n * @returns {Address4}\n */\n endAddressExclusive(): Address4 {\n const adjust = BigInt('1');\n return Address4.fromBigInt(this._endAddress() - adjust);\n }\n\n /**\n * Converts a BigInt to a v4 address object\n * @memberof Address4\n * @static\n * @param {bigint} bigInt - a BigInt to convert\n * @returns {Address4}\n */\n static fromBigInt(bigInt: bigint): Address4 {\n return Address4.fromHex(bigInt.toString(16));\n }\n\n /**\n * Convert a byte array to an Address4 object\n * @memberof Address4\n * @static\n * @param {Array} bytes - an array of 4 bytes (0-255)\n * @returns {Address4}\n */\n static fromByteArray(bytes: Array): Address4 {\n if (bytes.length !== 4) {\n throw new AddressError('IPv4 addresses require exactly 4 bytes');\n }\n\n // Validate that all bytes are within valid range (0-255)\n for (let i = 0; i < bytes.length; i++) {\n if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n throw new AddressError('All bytes must be integers between 0 and 255');\n }\n }\n\n return this.fromUnsignedByteArray(bytes);\n }\n\n /**\n * Convert an unsigned byte array to an Address4 object\n * @memberof Address4\n * @static\n * @param {Array} bytes - an array of 4 unsigned bytes (0-255)\n * @returns {Address4}\n */\n static fromUnsignedByteArray(bytes: Array): Address4 {\n if (bytes.length !== 4) {\n throw new AddressError('IPv4 addresses require exactly 4 bytes');\n }\n\n const address = bytes.join('.');\n return new Address4(address);\n }\n\n /**\n * Returns the first n bits of the address, defaulting to the\n * subnet mask\n * @memberof Address4\n * @instance\n * @returns {String}\n */\n mask(mask?: number): string {\n if (mask === undefined) {\n mask = this.subnetMask;\n }\n\n return this.getBitsBase2(0, mask);\n }\n\n /**\n * Returns the bits in the given range as a base-2 string\n * @memberof Address4\n * @instance\n * @returns {string}\n */\n getBitsBase2(start: number, end: number): string {\n return this.binaryZeroPad().slice(start, end);\n }\n\n /**\n * Return the reversed ip6.arpa form of the address\n * @memberof Address4\n * @param {Object} options\n * @param {boolean} options.omitSuffix - omit the \"in-addr.arpa\" suffix\n * @instance\n * @returns {String}\n */\n reverseForm(options?: common.ReverseFormOptions): string {\n if (!options) {\n options = {};\n }\n\n const reversed = this.correctForm().split('.').reverse().join('.');\n\n if (options.omitSuffix) {\n return reversed;\n }\n\n return `${reversed}.in-addr.arpa.`;\n }\n\n /**\n * Returns true if the given address is in the subnet of the current address\n * @memberof Address4\n * @instance\n * @returns {boolean}\n */\n isInSubnet = common.isInSubnet;\n\n /**\n * Returns true if the given address is a multicast address\n * @memberof Address4\n * @instance\n * @returns {boolean}\n */\n isMulticast(): boolean {\n return this.isInSubnet(new Address4('224.0.0.0/4'));\n }\n\n /**\n * Returns a zero-padded base-2 string representation of the address\n * @memberof Address4\n * @instance\n * @returns {string}\n */\n binaryZeroPad(): string {\n return this.bigInt().toString(2).padStart(constants.BITS, '0');\n }\n\n /**\n * Groups an IPv4 address for inclusion at the end of an IPv6 address\n * @returns {String}\n */\n groupForV6(): string {\n const segments = this.parsedAddress;\n\n return this.address.replace(\n constants.RE_ADDRESS,\n `${segments\n .slice(0, 2)\n .join('.')}.${segments\n .slice(2, 4)\n .join('.')}`,\n );\n }\n}\n", "export const BITS = 128;\nexport const GROUPS = 8;\n\n/**\n * Represents IPv6 address scopes\n * @memberof Address6\n * @static\n */\nexport const SCOPES: { [key: number]: string | undefined } = {\n 0: 'Reserved',\n 1: 'Interface local',\n 2: 'Link local',\n 4: 'Admin local',\n 5: 'Site local',\n 8: 'Organization local',\n 14: 'Global',\n 15: 'Reserved',\n} as const;\n\n/**\n * Represents IPv6 address types\n * @memberof Address6\n * @static\n */\nexport const TYPES: { [key: string]: string | undefined } = {\n 'ff01::1/128': 'Multicast (All nodes on this interface)',\n 'ff01::2/128': 'Multicast (All routers on this interface)',\n 'ff02::1/128': 'Multicast (All nodes on this link)',\n 'ff02::2/128': 'Multicast (All routers on this link)',\n 'ff05::2/128': 'Multicast (All routers in this site)',\n 'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)',\n 'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)',\n 'ff02::9/128': 'Multicast (RIP routers)',\n 'ff02::a/128': 'Multicast (EIGRP routers)',\n 'ff02::d/128': 'Multicast (PIM routers)',\n 'ff02::16/128': 'Multicast (MLDv2 reports)',\n 'ff01::fb/128': 'Multicast (mDNSv6)',\n 'ff02::fb/128': 'Multicast (mDNSv6)',\n 'ff05::fb/128': 'Multicast (mDNSv6)',\n 'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)',\n 'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)',\n 'ff02::1:3/128': 'Multicast (All DHCP servers on this link)',\n 'ff05::1:3/128': 'Multicast (All DHCP servers in this site)',\n '::/128': 'Unspecified',\n '::1/128': 'Loopback',\n 'ff00::/8': 'Multicast',\n 'fe80::/10': 'Link-local unicast',\n} as const;\n\n/**\n * A regular expression that matches bad characters in an IPv6 address\n * @memberof Address6\n * @static\n */\nexport const RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi;\n\n/**\n * A regular expression that matches an incorrect IPv6 address\n * @memberof Address6\n * @static\n */\nexport const RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\\/$)/gi;\n\n/**\n * A regular expression that matches an IPv6 subnet\n * @memberof Address6\n * @static\n */\nexport const RE_SUBNET_STRING = /\\/\\d{1,3}(?=%|$)/;\n\n/**\n * A regular expression that matches an IPv6 zone\n * @memberof Address6\n * @static\n */\nexport const RE_ZONE_STRING = /%.*$/;\n\nexport const RE_URL = /^\\[{0,1}([0-9a-f:]+)\\]{0,1}/;\nexport const RE_URL_WITH_PORT = /\\[([0-9a-f:]+)\\]:([0-9]{1,5})/;\n", "/**\n * @returns {String} the string with all zeroes contained in a \n */\nexport function spanAllZeroes(s: string): string {\n return s.replace(/(0+)/g, '$1');\n}\n\n/**\n * @returns {String} the string with each character contained in a \n */\nexport function spanAll(s: string, offset: number = 0): string {\n const letters = s.split('');\n\n return letters\n .map(\n (n, i) => `${spanAllZeroes(n)}`,\n )\n .join('');\n}\n\nfunction spanLeadingZeroesSimple(group: string): string {\n return group.replace(/^(0+)/, '$1');\n}\n\n/**\n * @returns {String} the string with leading zeroes contained in a \n */\nexport function spanLeadingZeroes(address: string): string {\n const groups = address.split(':');\n\n return groups.map((g) => spanLeadingZeroesSimple(g)).join(':');\n}\n\n/**\n * Groups an address\n * @returns {String} a grouped address\n */\nexport function simpleGroup(addressString: string, offset: number = 0): string[] {\n const groups = addressString.split(':');\n\n return groups.map((g, i) => {\n if (/group-v4/.test(g)) {\n return g;\n }\n\n return `${spanLeadingZeroesSimple(g)}`;\n });\n}\n", "import * as v6 from './constants';\n\nexport function groupPossibilities(possibilities: string[]): string {\n return `(${possibilities.join('|')})`;\n}\n\nexport function padGroup(group: string): string {\n if (group.length < 4) {\n return `0{0,${4 - group.length}}${group}`;\n }\n\n return group;\n}\n\nexport const ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]';\n\nexport function simpleRegularExpression(groups: string[]) {\n const zeroIndexes: number[] = [];\n\n groups.forEach((group, i) => {\n const groupInteger = parseInt(group, 16);\n\n if (groupInteger === 0) {\n zeroIndexes.push(i);\n }\n });\n\n // You can technically elide a single 0, this creates the regular expressions\n // to match that eventuality\n const possibilities = zeroIndexes.map((zeroIndex) =>\n groups\n .map((group, i) => {\n if (i === zeroIndex) {\n const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : '';\n\n return groupPossibilities([padGroup(group), elision]);\n }\n\n return padGroup(group);\n })\n .join(':'),\n );\n\n // The simplest case\n possibilities.push(groups.map(padGroup).join(':'));\n\n return groupPossibilities(possibilities);\n}\n\nexport function possibleElisions(\n elidedGroups: number,\n moreLeft?: boolean,\n moreRight?: boolean,\n): string {\n const left = moreLeft ? '' : ':';\n const right = moreRight ? '' : ':';\n\n const possibilities = [];\n\n // 1. elision of everything (::)\n if (!moreLeft && !moreRight) {\n possibilities.push('::');\n }\n\n // 2. complete elision of the middle\n if (moreLeft && moreRight) {\n possibilities.push('');\n }\n\n if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) {\n // 3. complete elision of one side\n possibilities.push(':');\n }\n\n // 4. elision from the left side\n possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`);\n\n // 5. elision from the right side\n possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`);\n\n // 6. no elision\n possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`);\n\n // 7. elision (including sloppy elision) from the middle\n for (let groups = 1; groups < elidedGroups - 1; groups++) {\n for (let position = 1; position < elidedGroups - groups; position++) {\n possibilities.push(\n `(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`,\n );\n }\n }\n\n return groupPossibilities(possibilities);\n}\n", "/* eslint-disable prefer-destructuring */\n/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants4 from './v4/constants';\nimport * as constants6 from './v6/constants';\nimport * as helpers from './v6/helpers';\nimport { Address4 } from './ipv4';\nimport {\n ADDRESS_BOUNDARY,\n possibleElisions,\n simpleRegularExpression,\n} from './v6/regular-expressions';\nimport { AddressError } from './address-error';\nimport { testBit } from './common';\n\nfunction assert(condition: any): asserts condition {\n if (!condition) {\n throw new Error('Assertion failed.');\n }\n}\n\nfunction addCommas(number: string): string {\n const r = /(\\d+)(\\d{3})/;\n\n while (r.test(number)) {\n number = number.replace(r, '$1,$2');\n }\n\n return number;\n}\n\nfunction spanLeadingZeroes4(n: string): string {\n n = n.replace(/^(0{1,})([1-9]+)$/, '$1$2');\n n = n.replace(/^(0{1,})(0)$/, '$1$2');\n\n return n;\n}\n\n/*\n * A helper function to compact an array\n */\nfunction compact(address: string[], slice: number[]) {\n const s1 = [];\n const s2 = [];\n let i;\n\n for (i = 0; i < address.length; i++) {\n if (i < slice[0]) {\n s1.push(address[i]);\n } else if (i > slice[1]) {\n s2.push(address[i]);\n }\n }\n\n return s1.concat(['compact']).concat(s2);\n}\n\nfunction paddedHex(octet: string): string {\n return parseInt(octet, 16).toString(16).padStart(4, '0');\n}\n\nfunction unsignByte(b: number) {\n // eslint-disable-next-line no-bitwise\n return b & 0xff;\n}\n\ninterface SixToFourProperties {\n prefix: string;\n gateway: string;\n}\n\ninterface TeredoProperties {\n prefix: string;\n server4: string;\n client4: string;\n flags: string;\n coneNat: boolean;\n microsoft: {\n reserved: boolean;\n universalLocal: boolean;\n groupIndividual: boolean;\n nonce: string;\n };\n udpPort: string;\n}\n\n/**\n * Represents an IPv6 address\n * @class Address6\n * @param {string} address - An IPv6 address string\n * @param {number} [groups=8] - How many octets to parse\n * @example\n * var address = new Address6('2001::/32');\n */\nexport class Address6 {\n address4?: Address4;\n address: string;\n addressMinusSuffix: string = '';\n elidedGroups?: number;\n elisionBegin?: number;\n elisionEnd?: number;\n groups: number;\n parsedAddress4?: string;\n parsedAddress: string[];\n parsedSubnet: string = '';\n subnet: string = '/128';\n subnetMask: number = 128;\n v4: boolean = false;\n zone: string = '';\n\n constructor(address: string, optionalGroups?: number) {\n if (optionalGroups === undefined) {\n this.groups = constants6.GROUPS;\n } else {\n this.groups = optionalGroups;\n }\n\n this.address = address;\n\n const subnet = constants6.RE_SUBNET_STRING.exec(address);\n\n if (subnet) {\n this.parsedSubnet = subnet[0].replace('/', '');\n this.subnetMask = parseInt(this.parsedSubnet, 10);\n this.subnet = `/${this.subnetMask}`;\n\n if (\n Number.isNaN(this.subnetMask) ||\n this.subnetMask < 0 ||\n this.subnetMask > constants6.BITS\n ) {\n throw new AddressError('Invalid subnet mask.');\n }\n\n address = address.replace(constants6.RE_SUBNET_STRING, '');\n } else if (/\\//.test(address)) {\n throw new AddressError('Invalid subnet mask.');\n }\n\n const zone = constants6.RE_ZONE_STRING.exec(address);\n\n if (zone) {\n this.zone = zone[0];\n\n address = address.replace(constants6.RE_ZONE_STRING, '');\n }\n\n this.addressMinusSuffix = address;\n\n this.parsedAddress = this.parse(this.addressMinusSuffix);\n }\n\n static isValid(address: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new Address6(address);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Convert a BigInt to a v6 address object\n * @memberof Address6\n * @static\n * @param {bigint} bigInt - a BigInt to convert\n * @returns {Address6}\n * @example\n * var bigInt = BigInt('1000000000000');\n * var address = Address6.fromBigInt(bigInt);\n * address.correctForm(); // '::e8:d4a5:1000'\n */\n static fromBigInt(bigInt: bigint): Address6 {\n const hex = bigInt.toString(16).padStart(32, '0');\n const groups = [];\n let i;\n\n for (i = 0; i < constants6.GROUPS; i++) {\n groups.push(hex.slice(i * 4, (i + 1) * 4));\n }\n\n return new Address6(groups.join(':'));\n }\n\n /**\n * Convert a URL (with optional port number) to an address object\n * @memberof Address6\n * @static\n * @param {string} url - a URL with optional port number\n * @example\n * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/');\n * addressAndPort.address.correctForm(); // 'ffff::'\n * addressAndPort.port; // 8080\n */\n static fromURL(url: string) {\n let host: string;\n let port: string | number | null = null;\n let result: string[] | null;\n\n // If we have brackets parse them and find a port\n if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) {\n result = constants6.RE_URL_WITH_PORT.exec(url);\n\n if (result === null) {\n return {\n error: 'failed to parse address with port',\n address: null,\n port: null,\n };\n }\n\n host = result[1];\n port = result[2];\n // If there's a URL extract the address\n } else if (url.indexOf('/') !== -1) {\n // Remove the protocol prefix\n url = url.replace(/^[a-z0-9]+:\\/\\//, '');\n\n // Parse the address\n result = constants6.RE_URL.exec(url);\n\n if (result === null) {\n return {\n error: 'failed to parse address from URL',\n address: null,\n port: null,\n };\n }\n\n host = result[1];\n // Otherwise just assign the URL to the host and let the library parse it\n } else {\n host = url;\n }\n\n // If there's a port convert it to an integer\n if (port) {\n port = parseInt(port, 10);\n\n // squelch out of range ports\n if (port < 0 || port > 65536) {\n port = null;\n }\n } else {\n // Standardize `undefined` to `null`\n port = null;\n }\n\n return {\n address: new Address6(host),\n port,\n };\n }\n\n /**\n * Create an IPv6-mapped address given an IPv4 address\n * @memberof Address6\n * @static\n * @param {string} address - An IPv4 address string\n * @returns {Address6}\n * @example\n * var address = Address6.fromAddress4('192.168.0.1');\n * address.correctForm(); // '::ffff:c0a8:1'\n * address.to4in6(); // '::ffff:192.168.0.1'\n */\n static fromAddress4(address: string): Address6 {\n const address4 = new Address4(address);\n\n const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask);\n\n return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);\n }\n\n /**\n * Return an address from ip6.arpa form\n * @memberof Address6\n * @static\n * @param {string} arpaFormAddress - an 'ip6.arpa' form address\n * @returns {Adress6}\n * @example\n * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.)\n * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe'\n */\n static fromArpa(arpaFormAddress: string): Address6 {\n // remove ending \".ip6.arpa.\" or just \".\"\n let address = arpaFormAddress.replace(/(\\.ip6\\.arpa)?\\.$/, '');\n const semicolonAmount = 7;\n\n // correct ip6.arpa form with ending removed will be 63 characters\n if (address.length !== 63) {\n throw new AddressError(\"Invalid 'ip6.arpa' form.\");\n }\n\n const parts = address.split('.').reverse();\n\n for (let i = semicolonAmount; i > 0; i--) {\n const insertIndex = i * 4;\n parts.splice(insertIndex, 0, ':');\n }\n\n address = parts.join('');\n\n return new Address6(address);\n }\n\n /**\n * Return the Microsoft UNC transcription of the address\n * @memberof Address6\n * @instance\n * @returns {String} the Microsoft UNC transcription of the address\n */\n microsoftTranscription(): string {\n return `${this.correctForm().replace(/:/g, '-')}.ipv6-literal.net`;\n }\n\n /**\n * Return the first n bits of the address, defaulting to the subnet mask\n * @memberof Address6\n * @instance\n * @param {number} [mask=subnet] - the number of bits to mask\n * @returns {String} the first n bits of the address as a string\n */\n mask(mask: number = this.subnetMask): string {\n return this.getBitsBase2(0, mask);\n }\n\n /**\n * Return the number of possible subnets of a given size in the address\n * @memberof Address6\n * @instance\n * @param {number} [subnetSize=128] - the subnet size\n * @returns {String}\n */\n // TODO: probably useful to have a numeric version of this too\n possibleSubnets(subnetSize: number = 128): string {\n const availableBits = constants6.BITS - this.subnetMask;\n const subnetBits = Math.abs(subnetSize - constants6.BITS);\n const subnetPowers = availableBits - subnetBits;\n\n if (subnetPowers < 0) {\n return '0';\n }\n\n return addCommas((BigInt('2') ** BigInt(subnetPowers)).toString(10));\n }\n\n /**\n * Helper function getting start address.\n * @memberof Address6\n * @instance\n * @returns {bigint}\n */\n _startAddress(): bigint {\n return BigInt(`0b${this.mask() + '0'.repeat(constants6.BITS - this.subnetMask)}`);\n }\n\n /**\n * The first address in the range given by this address' subnet\n * Often referred to as the Network Address.\n * @memberof Address6\n * @instance\n * @returns {Address6}\n */\n startAddress(): Address6 {\n return Address6.fromBigInt(this._startAddress());\n }\n\n /**\n * The first host address in the range given by this address's subnet ie\n * the first address after the Network Address\n * @memberof Address6\n * @instance\n * @returns {Address6}\n */\n startAddressExclusive(): Address6 {\n const adjust = BigInt('1');\n return Address6.fromBigInt(this._startAddress() + adjust);\n }\n\n /**\n * Helper function getting end address.\n * @memberof Address6\n * @instance\n * @returns {bigint}\n */\n _endAddress(): bigint {\n return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`);\n }\n\n /**\n * The last address in the range given by this address' subnet\n * Often referred to as the Broadcast\n * @memberof Address6\n * @instance\n * @returns {Address6}\n */\n endAddress(): Address6 {\n return Address6.fromBigInt(this._endAddress());\n }\n\n /**\n * The last host address in the range given by this address's subnet ie\n * the last address prior to the Broadcast Address\n * @memberof Address6\n * @instance\n * @returns {Address6}\n */\n endAddressExclusive(): Address6 {\n const adjust = BigInt('1');\n return Address6.fromBigInt(this._endAddress() - adjust);\n }\n\n /**\n * Return the scope of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n getScope(): string {\n let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)];\n\n if (this.getType() === 'Global unicast' && scope !== 'Link local') {\n scope = 'Global';\n }\n\n return scope || 'Unknown';\n }\n\n /**\n * Return the type of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n getType(): string {\n for (const subnet of Object.keys(constants6.TYPES)) {\n if (this.isInSubnet(new Address6(subnet))) {\n return constants6.TYPES[subnet] as string;\n }\n }\n\n return 'Global unicast';\n }\n\n /**\n * Return the bits in the given range as a BigInt\n * @memberof Address6\n * @instance\n * @returns {bigint}\n */\n getBits(start: number, end: number): bigint {\n return BigInt(`0b${this.getBitsBase2(start, end)}`);\n }\n\n /**\n * Return the bits in the given range as a base-2 string\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n getBitsBase2(start: number, end: number): string {\n return this.binaryZeroPad().slice(start, end);\n }\n\n /**\n * Return the bits in the given range as a base-16 string\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n getBitsBase16(start: number, end: number): string {\n const length = end - start;\n\n if (length % 4 !== 0) {\n throw new Error('Length of bits to retrieve must be divisible by four');\n }\n\n return this.getBits(start, end)\n .toString(16)\n .padStart(length / 4, '0');\n }\n\n /**\n * Return the bits that are set past the subnet mask length\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n getBitsPastSubnet(): string {\n return this.getBitsBase2(this.subnetMask, constants6.BITS);\n }\n\n /**\n * Return the reversed ip6.arpa form of the address\n * @memberof Address6\n * @param {Object} options\n * @param {boolean} options.omitSuffix - omit the \"ip6.arpa\" suffix\n * @instance\n * @returns {String}\n */\n reverseForm(options?: common.ReverseFormOptions): string {\n if (!options) {\n options = {};\n }\n\n const characters = Math.floor(this.subnetMask / 4);\n\n const reversed = this.canonicalForm()\n .replace(/:/g, '')\n .split('')\n .slice(0, characters)\n .reverse()\n .join('.');\n\n if (characters > 0) {\n if (options.omitSuffix) {\n return reversed;\n }\n\n return `${reversed}.ip6.arpa.`;\n }\n\n if (options.omitSuffix) {\n return '';\n }\n\n return 'ip6.arpa.';\n }\n\n /**\n * Return the correct form of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n correctForm(): string {\n let i;\n let groups = [];\n\n let zeroCounter = 0;\n const zeroes = [];\n\n for (i = 0; i < this.parsedAddress.length; i++) {\n const value = parseInt(this.parsedAddress[i], 16);\n\n if (value === 0) {\n zeroCounter++;\n }\n\n if (value !== 0 && zeroCounter > 0) {\n if (zeroCounter > 1) {\n zeroes.push([i - zeroCounter, i - 1]);\n }\n\n zeroCounter = 0;\n }\n }\n\n // Do we end with a string of zeroes?\n if (zeroCounter > 1) {\n zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]);\n }\n\n const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1);\n\n if (zeroes.length > 0) {\n const index = zeroLengths.indexOf(Math.max(...zeroLengths) as number);\n\n groups = compact(this.parsedAddress, zeroes[index]);\n } else {\n groups = this.parsedAddress;\n }\n\n for (i = 0; i < groups.length; i++) {\n if (groups[i] !== 'compact') {\n groups[i] = parseInt(groups[i], 16).toString(16);\n }\n }\n\n let correct = groups.join(':');\n\n correct = correct.replace(/^compact$/, '::');\n correct = correct.replace(/(^compact)|(compact$)/, ':');\n correct = correct.replace(/compact/, '');\n\n return correct;\n }\n\n /**\n * Return a zero-padded base-2 string representation of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n * @example\n * var address = new Address6('2001:4860:4001:803::1011');\n * address.binaryZeroPad();\n * // '0010000000000001010010000110000001000000000000010000100000000011\n * // 0000000000000000000000000000000000000000000000000001000000010001'\n */\n binaryZeroPad(): string {\n return this.bigInt().toString(2).padStart(constants6.BITS, '0');\n }\n\n // TODO: Improve the semantics of this helper function\n parse4in6(address: string): string {\n const groups = address.split(':');\n const lastGroup = groups.slice(-1)[0];\n\n const address4 = lastGroup.match(constants4.RE_ADDRESS);\n\n if (address4) {\n this.parsedAddress4 = address4[0];\n this.address4 = new Address4(this.parsedAddress4);\n\n for (let i = 0; i < this.address4.groups; i++) {\n if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {\n throw new AddressError(\n \"IPv4 addresses can't have leading zeroes.\",\n address.replace(\n constants4.RE_ADDRESS,\n this.address4.parsedAddress.map(spanLeadingZeroes4).join('.'),\n ),\n );\n }\n }\n\n this.v4 = true;\n\n groups[groups.length - 1] = this.address4.toGroup6();\n\n address = groups.join(':');\n }\n\n return address;\n }\n\n // TODO: Make private?\n parse(address: string): string[] {\n address = this.parse4in6(address);\n\n const badCharacters = address.match(constants6.RE_BAD_CHARACTERS);\n\n if (badCharacters) {\n throw new AddressError(\n `Bad character${\n badCharacters.length > 1 ? 's' : ''\n } detected in address: ${badCharacters.join('')}`,\n address.replace(constants6.RE_BAD_CHARACTERS, '$1'),\n );\n }\n\n const badAddress = address.match(constants6.RE_BAD_ADDRESS);\n\n if (badAddress) {\n throw new AddressError(\n `Address failed regex: ${badAddress.join('')}`,\n address.replace(constants6.RE_BAD_ADDRESS, '$1'),\n );\n }\n\n let groups: string[] = [];\n\n const halves = address.split('::');\n\n if (halves.length === 2) {\n let first = halves[0].split(':');\n let last = halves[1].split(':');\n\n if (first.length === 1 && first[0] === '') {\n first = [];\n }\n\n if (last.length === 1 && last[0] === '') {\n last = [];\n }\n\n const remaining = this.groups - (first.length + last.length);\n\n if (!remaining) {\n throw new AddressError('Error parsing groups');\n }\n\n this.elidedGroups = remaining;\n\n this.elisionBegin = first.length;\n this.elisionEnd = first.length + this.elidedGroups;\n\n groups = groups.concat(first);\n\n for (let i = 0; i < remaining; i++) {\n groups.push('0');\n }\n\n groups = groups.concat(last);\n } else if (halves.length === 1) {\n groups = address.split(':');\n\n this.elidedGroups = 0;\n } else {\n throw new AddressError('Too many :: groups found');\n }\n\n groups = groups.map((group: string) => parseInt(group, 16).toString(16));\n\n if (groups.length !== this.groups) {\n throw new AddressError('Incorrect number of groups found');\n }\n\n return groups;\n }\n\n /**\n * Return the canonical form of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n canonicalForm(): string {\n return this.parsedAddress.map(paddedHex).join(':');\n }\n\n /**\n * Return the decimal form of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n decimal(): string {\n return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, '0')).join(':');\n }\n\n /**\n * Return the address as a BigInt\n * @memberof Address6\n * @instance\n * @returns {bigint}\n */\n bigInt(): bigint {\n return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`);\n }\n\n /**\n * Return the last two groups of this address as an IPv4 address string\n * @memberof Address6\n * @instance\n * @returns {Address4}\n * @example\n * var address = new Address6('2001:4860:4001::1825:bf11');\n * address.to4().correctForm(); // '24.37.191.17'\n */\n to4(): Address4 {\n const binary = this.binaryZeroPad().split('');\n\n return Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16));\n }\n\n /**\n * Return the v4-in-v6 form of the address\n * @memberof Address6\n * @instance\n * @returns {String}\n */\n to4in6(): string {\n const address4 = this.to4();\n const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6);\n\n const correct = address6.correctForm();\n\n let infix = '';\n\n if (!/:$/.test(correct)) {\n infix = ':';\n }\n\n return correct + infix + address4.address;\n }\n\n /**\n * Return an object containing the Teredo properties of the address\n * @memberof Address6\n * @instance\n * @returns {Object}\n */\n inspectTeredo(): TeredoProperties {\n /*\n - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32).\n - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that\n is used.\n - Bits 64 to 79 can be used to define some flags. Currently only the\n higher order bit is used; it is set to 1 if the Teredo client is\n located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista\n and Windows Server 2008 implementations, more bits are used. In those\n implementations, the format for these 16 bits is \"CRAAAAUG AAAAAAAA\",\n where \"C\" remains the \"Cone\" flag. The \"R\" bit is reserved for future\n use. The \"U\" bit is for the Universal/Local flag (set to 0). The \"G\" bit\n is Individual/Group flag (set to 0). The A bits are set to a 12-bit\n randomly generated number chosen by the Teredo client to introduce\n additional protection for the Teredo node against IPv6-based scanning\n attacks.\n - Bits 80 to 95 contains the obfuscated UDP port number. This is the\n port number that is mapped by the NAT to the Teredo client with all\n bits inverted.\n - Bits 96 to 127 contains the obfuscated IPv4 address. This is the\n public IPv4 address of the NAT with all bits inverted.\n */\n const prefix = this.getBitsBase16(0, 32);\n\n const bitsForUdpPort: bigint = this.getBits(80, 96);\n // eslint-disable-next-line no-bitwise\n const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString();\n\n const server4 = Address4.fromHex(this.getBitsBase16(32, 64));\n\n const bitsForClient4 = this.getBits(96, 128);\n // eslint-disable-next-line no-bitwise\n const client4 = Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16));\n\n const flagsBase2 = this.getBitsBase2(64, 80);\n\n const coneNat = testBit(flagsBase2, 15);\n const reserved = testBit(flagsBase2, 14);\n const groupIndividual = testBit(flagsBase2, 8);\n const universalLocal = testBit(flagsBase2, 9);\n const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10);\n\n return {\n prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`,\n server4: server4.address,\n client4: client4.address,\n flags: flagsBase2,\n coneNat,\n microsoft: {\n reserved,\n universalLocal,\n groupIndividual,\n nonce,\n },\n udpPort,\n };\n }\n\n /**\n * Return an object containing the 6to4 properties of the address\n * @memberof Address6\n * @instance\n * @returns {Object}\n */\n inspect6to4(): SixToFourProperties {\n /*\n - Bits 0 to 15 are set to the 6to4 prefix (2002::/16).\n - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used.\n */\n\n const prefix = this.getBitsBase16(0, 16);\n\n const gateway = Address4.fromHex(this.getBitsBase16(16, 48));\n\n return {\n prefix: prefix.slice(0, 4),\n gateway: gateway.address,\n };\n }\n\n /**\n * Return a v6 6to4 address from a v6 v4inv6 address\n * @memberof Address6\n * @instance\n * @returns {Address6}\n */\n to6to4(): Address6 | null {\n if (!this.is4()) {\n return null;\n }\n\n const addr6to4 = [\n '2002',\n this.getBitsBase16(96, 112),\n this.getBitsBase16(112, 128),\n '',\n '/16',\n ].join(':');\n\n return new Address6(addr6to4);\n }\n\n /**\n * Return a byte array\n * @memberof Address6\n * @instance\n * @returns {Array}\n */\n toByteArray(): number[] {\n const valueWithoutPadding = this.bigInt().toString(16);\n const leadingPad = '0'.repeat(valueWithoutPadding.length % 2);\n\n const value = `${leadingPad}${valueWithoutPadding}`;\n\n const bytes = [];\n for (let i = 0, length = value.length; i < length; i += 2) {\n bytes.push(parseInt(value.substring(i, i + 2), 16));\n }\n\n return bytes;\n }\n\n /**\n * Return an unsigned byte array\n * @memberof Address6\n * @instance\n * @returns {Array}\n */\n toUnsignedByteArray(): number[] {\n return this.toByteArray().map(unsignByte);\n }\n\n /**\n * Convert a byte array to an Address6 object\n * @memberof Address6\n * @static\n * @returns {Address6}\n */\n static fromByteArray(bytes: Array): Address6 {\n return this.fromUnsignedByteArray(bytes.map(unsignByte));\n }\n\n /**\n * Convert an unsigned byte array to an Address6 object\n * @memberof Address6\n * @static\n * @returns {Address6}\n */\n static fromUnsignedByteArray(bytes: Array): Address6 {\n const BYTE_MAX = BigInt('256');\n let result = BigInt('0');\n let multiplier = BigInt('1');\n\n for (let i = bytes.length - 1; i >= 0; i--) {\n result += multiplier * BigInt(bytes[i].toString(10));\n\n multiplier *= BYTE_MAX;\n }\n\n return Address6.fromBigInt(result);\n }\n\n // #region Attributes\n /**\n * Returns true if the given address is in the subnet of the current address\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isInSubnet = common.isInSubnet;\n\n /**\n * Returns true if the address is correct, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isCorrect = common.isCorrect(constants6.BITS);\n\n /**\n * Returns true if the address is in the canonical form, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isCanonical(): boolean {\n return this.addressMinusSuffix === this.canonicalForm();\n }\n\n /**\n * Returns true if the address is a link local address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isLinkLocal(): boolean {\n // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10'\n if (\n this.getBitsBase2(0, 64) ===\n '1111111010000000000000000000000000000000000000000000000000000000'\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Returns true if the address is a multicast address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isMulticast(): boolean {\n return this.getType() === 'Multicast';\n }\n\n /**\n * Returns true if the address is a v4-in-v6 address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n is4(): boolean {\n return this.v4;\n }\n\n /**\n * Returns true if the address is a Teredo address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isTeredo(): boolean {\n return this.isInSubnet(new Address6('2001::/32'));\n }\n\n /**\n * Returns true if the address is a 6to4 address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n is6to4(): boolean {\n return this.isInSubnet(new Address6('2002::/16'));\n }\n\n /**\n * Returns true if the address is a loopback address, false otherwise\n * @memberof Address6\n * @instance\n * @returns {boolean}\n */\n isLoopback(): boolean {\n return this.getType() === 'Loopback';\n }\n // #endregion\n\n // #region HTML\n /**\n * @returns {String} the address in link form with a default port of 80\n */\n href(optionalPort?: number | string): string {\n if (optionalPort === undefined) {\n optionalPort = '';\n } else {\n optionalPort = `:${optionalPort}`;\n }\n\n return `http://[${this.correctForm()}]${optionalPort}/`;\n }\n\n /**\n * @returns {String} a link suitable for conveying the address via a URL hash\n */\n link(options?: { className?: string; prefix?: string; v4?: boolean }): string {\n if (!options) {\n options = {};\n }\n\n if (options.className === undefined) {\n options.className = '';\n }\n\n if (options.prefix === undefined) {\n options.prefix = '/#address=';\n }\n\n if (options.v4 === undefined) {\n options.v4 = false;\n }\n\n let formFunction = this.correctForm;\n\n if (options.v4) {\n formFunction = this.to4in6;\n }\n\n const form = formFunction.call(this);\n\n if (options.className) {\n return `${form}`;\n }\n\n return `${form}`;\n }\n\n /**\n * Groups an address\n * @returns {String}\n */\n group(): string {\n if (this.elidedGroups === 0) {\n // The simple case\n return helpers.simpleGroup(this.address).join(':');\n }\n\n assert(typeof this.elidedGroups === 'number');\n assert(typeof this.elisionBegin === 'number');\n\n // The elided case\n const output = [];\n\n const [left, right] = this.address.split('::');\n\n if (left.length) {\n output.push(...helpers.simpleGroup(left));\n } else {\n output.push('');\n }\n\n const classes = ['hover-group'];\n\n for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) {\n classes.push(`group-${i}`);\n }\n\n output.push(``);\n\n if (right.length) {\n output.push(...helpers.simpleGroup(right, this.elisionEnd));\n } else {\n output.push('');\n }\n\n if (this.is4()) {\n assert(this.address4 instanceof Address4);\n\n output.pop();\n output.push(this.address4.groupForV6());\n }\n\n return output.join(':');\n }\n // #endregion\n\n // #region Regular expressions\n /**\n * Generate a regular expression string that can be used to find or validate\n * all variations of this address\n * @memberof Address6\n * @instance\n * @param {boolean} substringSearch\n * @returns {string}\n */\n regularExpressionString(this: Address6, substringSearch: boolean = false): string {\n let output: string[] = [];\n\n // TODO: revisit why this is necessary\n const address6 = new Address6(this.correctForm());\n\n if (address6.elidedGroups === 0) {\n // The simple case\n output.push(simpleRegularExpression(address6.parsedAddress));\n } else if (address6.elidedGroups === constants6.GROUPS) {\n // A completely elided address\n output.push(possibleElisions(constants6.GROUPS));\n } else {\n // A partially elided address\n const halves = address6.address.split('::');\n\n if (halves[0].length) {\n output.push(simpleRegularExpression(halves[0].split(':')));\n }\n\n assert(typeof address6.elidedGroups === 'number');\n\n output.push(\n possibleElisions(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0),\n );\n\n if (halves[1].length) {\n output.push(simpleRegularExpression(halves[1].split(':')));\n }\n\n output = [output.join(':')];\n }\n\n if (!substringSearch) {\n output = [\n '(?=^|',\n ADDRESS_BOUNDARY,\n '|[^\\\\w\\\\:])(',\n ...output,\n ')(?=[^\\\\w\\\\:]|',\n ADDRESS_BOUNDARY,\n '|$)',\n ];\n }\n\n return output.join('');\n }\n\n /**\n * Generate a regular expression that can be used to find or validate all\n * variations of this address.\n * @memberof Address6\n * @instance\n * @param {boolean} substringSearch\n * @returns {RegExp}\n */\n regularExpression(this: Address6, substringSearch: boolean = false): RegExp {\n return new RegExp(this.regularExpressionString(substringSearch), 'i');\n }\n // #endregion\n}\n", "export { Address4 } from './ipv4';\nexport { Address6 } from './ipv6';\nexport { AddressError } from './address-error';\n\nimport * as helpers from './v6/helpers';\n\nexport const v6 = { helpers };\n", null, null, null, null, null, null, "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", null, "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WorkerState = void 0;\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils_1 = require(\"@trezor/utils\");\nclass WorkerState {\n addresses;\n accounts;\n subscription;\n cache;\n constructor() {\n this.addresses = [];\n this.accounts = [];\n this.subscription = {};\n this.cache = new utils_1.Cache();\n }\n validateAddresses(addr) {\n if (!Array.isArray(addr)) throw new errors_1.CustomError('invalid_param', '+addresses');\n const seen = [];\n return addr.filter(a => {\n if (typeof a !== 'string') return false;\n if (seen.indexOf(a) >= 0) return false;\n seen.push(a);\n return true;\n });\n }\n addAddresses(addr) {\n const unique = this.validateAddresses(addr).filter(a => this.addresses.indexOf(a) < 0);\n this.addresses = this.addresses.concat(unique);\n return unique;\n }\n getAddresses() {\n return this.addresses;\n }\n removeAddresses(addr) {\n const unique = this.validateAddresses(addr);\n this.addresses = this.addresses.filter(a => unique.indexOf(a) < 0);\n return this.addresses;\n }\n validateAccounts(acc) {\n if (!Array.isArray(acc)) throw new errors_1.CustomError('invalid_param', '+accounts');\n const seen = [];\n return acc.filter(a => {\n if (a && typeof a === 'object' && typeof a.descriptor === 'string') {\n if (seen.indexOf(a.descriptor) >= 0) return false;\n seen.push(a.descriptor);\n return true;\n }\n return false;\n });\n }\n getAccountAddresses(acc) {\n if (acc.addresses) {\n const {\n change,\n used,\n unused\n } = acc.addresses;\n return change.concat(used, unused).map(a => a.address);\n }\n return [acc.descriptor];\n }\n addAccounts(acc) {\n const valid = this.validateAccounts(acc);\n const others = this.accounts.filter(a => !valid.find(b => b.descriptor === a.descriptor));\n this.accounts = others.concat(valid);\n const addresses = this.accounts.reduce((addr, a) => addr.concat(this.getAccountAddresses(a)), []);\n this.addAddresses(addresses);\n return valid;\n }\n getAccount(address) {\n return this.accounts.find(a => {\n if (a.descriptor === address) return true;\n if (a.addresses) {\n const {\n change,\n used,\n unused\n } = a.addresses;\n if (change.find(ad => ad.address === address)) return true;\n if (used.find(ad => ad.address === address)) return true;\n if (unused.find(ad => ad.address === address)) return true;\n }\n return false;\n });\n }\n getAccounts() {\n return this.accounts;\n }\n removeAccounts(acc) {\n const valid = this.validateAccounts(acc);\n const accountsToRemove = this.accounts.filter(a => valid.find(b => b.descriptor === a.descriptor));\n const addressesToRemove = accountsToRemove.reduce((addr, acc) => addr.concat(this.getAccountAddresses(acc)), []);\n this.accounts = this.accounts.filter(a => accountsToRemove.indexOf(a) < 0);\n this.removeAddresses(addressesToRemove);\n return this.accounts;\n }\n addSubscription(type, id = true) {\n this.subscription[type] = id;\n }\n getSubscription(type) {\n return this.subscription[type];\n }\n hasSubscriptions() {\n return Object.keys(this.subscription).length > 0;\n }\n removeSubscription(type) {\n delete this.subscription[type];\n }\n clearSubscriptions() {\n Object.keys(this.subscription).forEach(key => {\n delete this.subscription[key];\n });\n }\n removeEmpty(obj) {\n Object.keys(obj).forEach(key => {\n if (Array.isArray(obj[key])) obj[key].map(o => this.removeEmpty(o));\n if (obj[key] && typeof obj[key] === 'object') this.removeEmpty(obj[key]);else if (obj[key] === undefined) delete obj[key];\n });\n return obj;\n }\n cleanup() {\n this.removeAccounts(this.getAccounts());\n this.removeAddresses(this.getAddresses());\n this.clearSubscriptions();\n }\n}\nexports.WorkerState = WorkerState;\n//# sourceMappingURL=state.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.prioritizeEndpoints = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst prioritizeEndpoints = urls => urls.map(url => {\n const hostname = (0, utils_1.parseHostname)(url);\n let priority = Math.random();\n if (hostname === 'localhost' || hostname === '127.0.0.1') {\n priority += 2;\n } else if (hostname?.endsWith('.onion')) {\n priority += 1;\n }\n return [url, priority];\n}).sort(([, a], [, b]) => b - a).map(([url]) => url);\nexports.prioritizeEndpoints = prioritizeEndpoints;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BaseWorker = exports.CONTEXT = void 0;\nconst socks_proxy_agent_1 = require(\"socks-proxy-agent\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst state_1 = require(\"./state\");\nconst utils_1 = require(\"./utils\");\nexports.CONTEXT = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope || typeof importScripts !== 'undefined' ? 'worker' : 'main';\nclass BaseWorker {\n api;\n proxyAgent;\n settings = {};\n state;\n post;\n constructor() {\n if (exports.CONTEXT === 'worker') {\n this.post = data => self.postMessage(data);\n } else {\n this.post = data => this.onmessage({\n data\n });\n }\n this.state = new state_1.WorkerState();\n setTimeout(() => {\n this.post({\n id: -1,\n type: constants_1.MESSAGES.HANDSHAKE\n });\n }, 10);\n }\n debug(...args) {\n if (!this.settings.debug) return;\n const debugPrefix = `[Worker \"${this.settings.name}\"]:`;\n const fn = args[0];\n if (fn === 'warn' || fn === 'error') {\n console[fn](debugPrefix, ...args.slice(1));\n } else {\n console.log(debugPrefix, ...args);\n }\n }\n cleanup() {\n this.api = undefined;\n this.state.cleanup();\n }\n connectPromise;\n connect() {\n if (this.isConnected(this.api)) {\n return Promise.resolve(this.api);\n }\n if (!this.connectPromise) {\n const urls = Array.isArray(this.settings.server) ? this.settings.server.filter(url => typeof url === 'string') : [];\n if (urls.length < 1) {\n throw new errors_1.CustomError('connect', 'Endpoint not set');\n }\n const endpoints = (0, utils_1.prioritizeEndpoints)(urls);\n this.connectPromise = this.connectRecursive(endpoints).then(api => {\n this.debug('Connected');\n this.api = api;\n return api;\n }).finally(() => {\n this.connectPromise = undefined;\n });\n }\n return this.connectPromise;\n }\n connectRecursive([url, ...rest]) {\n if (!url) {\n throw new errors_1.CustomError('connect', 'All backends are down');\n }\n if (this.proxyAgent) {\n this.proxyAgent.protocol = /^(https|wss):/.test(url) ? 'https:' : 'http:';\n }\n this.debug('Connecting to', url);\n return this.tryConnect(url).catch(error => {\n this.debug('Connection failed', error);\n return this.connectRecursive(rest);\n });\n }\n disconnect() {}\n async messageHandler(event) {\n if (!event.data) return true;\n const {\n data\n } = event;\n const {\n id\n } = data;\n this.debug('onmessage', data);\n if (data.type === constants_1.MESSAGES.HANDSHAKE) {\n this.settings = data.settings;\n const {\n proxy\n } = data.settings;\n if (proxy) {\n const agentUri = typeof proxy === 'string' ? proxy : `socks://${proxy.host}:${proxy.port}`;\n const socketOptions = typeof proxy === 'object' ? {\n timeout: proxy?.timeout\n } : undefined;\n this.proxyAgent = new socks_proxy_agent_1.SocksProxyAgent(agentUri, socketOptions);\n } else {\n this.proxyAgent = undefined;\n }\n return true;\n }\n if (data.type === constants_1.MESSAGES.CONNECT) {\n await this.connect();\n this.post({\n id,\n type: constants_1.RESPONSES.CONNECT,\n payload: true\n });\n return true;\n }\n if (data.type === constants_1.MESSAGES.DISCONNECT) {\n await this.disconnect();\n this.post({\n id,\n type: constants_1.RESPONSES.DISCONNECTED,\n payload: true\n });\n return true;\n }\n if (data.type === constants_1.MESSAGES.TERMINATE) {\n this.disconnect();\n this.cleanup();\n return true;\n }\n }\n errorResponse(id, error) {\n const payload = {\n code: '',\n message: ''\n };\n if (error instanceof Error) {\n payload.message = error.message;\n payload.code = error instanceof errors_1.CustomError && error.code ? error.code : '';\n }\n this.post({\n id,\n type: constants_1.RESPONSES.ERROR,\n payload\n });\n }\n postMessage(data) {\n this.messageHandler({\n data\n });\n }\n onmessage(_evt) {}\n onmessageerror(_error) {}\n onerror(_error) {}\n terminate() {\n this.postMessage({\n id: -1,\n type: constants_1.MESSAGES.TERMINATE\n });\n }\n}\nexports.BaseWorker = BaseWorker;\n//# sourceMappingURL=baseWorker.js.map", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nconst mask = (source, mask, output, offset, length) => {\n for (var i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n};\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nconst unmask = (buffer, mask) => {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (var i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n};\n\nmodule.exports = { mask, unmask };\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0x00) { // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong\n buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong\n buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = isValidUTF8;\n", "'use strict';\n\ntry {\n module.exports = require('node-gyp-build')(__dirname);\n} catch (e) {\n module.exports = require('./fallback');\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebsocketClient = exports.WebsocketError = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ws_1 = tslib_1.__importDefault(require(\"ws\"));\nconst utils_1 = require(\"@trezor/utils\");\nconst DEFAULT_TIMEOUT = 20 * 1000;\nconst DEFAULT_PING_TIMEOUT = 50 * 1000;\nclass WebsocketError extends Error {}\nexports.WebsocketError = WebsocketError;\nclass WebsocketClient extends utils_1.TypedEmitter {\n options;\n messages;\n emitter = this;\n ws;\n pingTimeout;\n connectPromise;\n ping() {\n return this.sendMessage({\n type: 'ping'\n });\n }\n constructor(options) {\n super();\n this.options = options;\n this.messages = (0, utils_1.createDeferredManager)({\n timeout: this.options.timeout || DEFAULT_TIMEOUT,\n onTimeout: promiseId => this.onMessageTimeout(promiseId)\n });\n }\n initWebsocket({\n url,\n timeout,\n headers,\n agent\n }) {\n if (typeof url !== 'string') {\n throw new WebsocketError('websocket_no_url');\n }\n if (url.startsWith('http')) {\n url = url.replace('http', 'ws');\n }\n return new ws_1.default(url, {\n timeout,\n headers: {\n Origin: 'https://node.trezor.io',\n ...headers\n },\n agent\n });\n }\n setPingTimeout() {\n clearTimeout(this.pingTimeout);\n const doPing = () => {\n if (this.isConnected()) {\n return this.onPing().catch(() => {});\n }\n };\n this.pingTimeout = this.isConnected() ? setTimeout(doPing, this.options.pingTimeout || DEFAULT_PING_TIMEOUT) : undefined;\n }\n onPing() {\n return this.ping();\n }\n onMessageTimeout(_promiseId) {\n const {\n ws\n } = this;\n if (!ws) return;\n this.messages.rejectAll(new WebsocketError('websocket_timeout'));\n ws.close();\n }\n onError() {\n this.onClose();\n }\n sendMessage(message, {\n timeout\n } = {}) {\n const {\n ws\n } = this;\n if (!ws || !this.isConnected()) throw new WebsocketError('websocket_not_initialized');\n const {\n promiseId,\n promise\n } = this.messages.create(timeout);\n const req = {\n id: promiseId.toString(),\n ...message\n };\n this.setPingTimeout();\n this.options.onSending?.(message);\n ws.send(JSON.stringify(req));\n return promise;\n }\n sendRawMessage(message) {\n const {\n ws\n } = this;\n if (!ws || !this.isConnected()) throw new WebsocketError('websocket_not_initialized');\n ws.send(message, {\n binary: typeof message !== 'string'\n });\n this.setPingTimeout();\n }\n onMessage(message, messageValidation) {\n try {\n const data = JSON.parse(message.toString());\n const messageId = Number(data.id);\n try {\n const payload = messageValidation ? messageValidation(data) : data;\n if (payload) {\n this.messages.resolve(messageId, payload);\n }\n } catch (error) {\n this.messages.reject(messageId, error);\n }\n } catch {} finally {\n this.setPingTimeout();\n }\n }\n async connect() {\n if (this.connectPromise) {\n return this.connectPromise;\n }\n if (this.isConnected()) return Promise.resolve();\n if (this.ws?.readyState === ws_1.default.CLOSING) {\n await new Promise(resolve => this.emitter.once('disconnected', resolve));\n }\n const dfd = (0, utils_1.createDeferred)();\n this.connectPromise = dfd.promise;\n const ws = this.createWebsocket ? this.createWebsocket() : this.initWebsocket(this.options);\n const connectionTimeout = setTimeout(() => {\n this.onClose();\n dfd.reject(new WebsocketError('websocket_timeout'));\n try {\n ws.close();\n } catch {}\n }, this.options.connectionTimeout || this.options.timeout || DEFAULT_TIMEOUT);\n ws.once('error', error => {\n clearTimeout(connectionTimeout);\n this.onClose();\n dfd.reject(new WebsocketError(error.message));\n });\n ws.on('open', () => {\n clearTimeout(connectionTimeout);\n this.init();\n dfd.resolve();\n });\n this.ws = ws;\n return dfd.promise.finally(() => {\n this.connectPromise = undefined;\n });\n }\n init() {\n const {\n ws\n } = this;\n if (!ws || !this.isConnected()) {\n throw Error('Websocket init cannot be called');\n }\n ws.removeAllListeners();\n ws.on('error', _error => this.onError());\n ws.on('message', message => this.onMessage(message));\n ws.on('close', () => {\n this.emitter.emit('disconnected');\n this.onClose();\n });\n }\n disconnect() {\n if (this.isConnected()) {\n const disconnectPromise = new Promise(resolve => {\n this.ws?.once('close', resolve);\n });\n this.ws?.close();\n return disconnectPromise;\n }\n return Promise.resolve();\n }\n isConnected() {\n return this.ws?.readyState === ws_1.default.OPEN;\n }\n onClose() {\n clearTimeout(this.pingTimeout);\n this.ws?.removeAllListeners();\n this.ws?.on('error', () => {});\n this.messages.rejectAll(new WebsocketError('Websocket closed unexpectedly'));\n }\n dispose() {\n this.removeAllListeners();\n this.disconnect();\n this.onClose();\n }\n}\nexports.WebsocketClient = WebsocketClient;\n//# sourceMappingURL=client.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebsocketClient = void 0;\nvar client_1 = require(\"./client\");\nObject.defineProperty(exports, \"WebsocketClient\", {\n enumerable: true,\n get: function () {\n return client_1.WebsocketClient;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BaseWebsocket = void 0;\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst websocket_client_1 = require(\"@trezor/websocket-client\");\nclass BaseWebsocket extends websocket_client_1.WebsocketClient {\n subscriptions = [];\n async onPing() {\n if (this.subscriptions.length > 0 || this.options.keepAlive) {\n await this.ping().catch(error => {\n throw new errors_1.CustomError('websocket_runtime_error', error.message);\n });\n } else {\n this.disconnect();\n }\n }\n onMessage(message) {\n super.onMessage(message, ({\n id,\n data\n }) => {\n if (data.error) {\n throw new errors_1.CustomError('websocket_error_message', data.error.message);\n }\n const messageSettled = this.messages.resolve(Number(id), data);\n if (!messageSettled) {\n const subs = this.subscriptions.find(s => s.id === id);\n if (subs) {\n subs.callback(data);\n }\n }\n });\n }\n sendMessage(message) {\n return super.sendMessage(message).catch(error => {\n throw new errors_1.CustomError(error.message);\n });\n }\n addSubscription(type, callback) {\n const id = this.messages.nextId().toString();\n this.subscriptions.push({\n id,\n type,\n callback\n });\n }\n removeSubscription(type) {\n const index = this.subscriptions.findIndex(s => s.type === type);\n if (index >= 0) {\n this.subscriptions.splice(index, 1);\n }\n return index;\n }\n}\nexports.BaseWebsocket = BaseWebsocket;\n//# sourceMappingURL=baseWebsocket.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BlockbookAPI = void 0;\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst baseWebsocket_1 = require(\"../baseWebsocket\");\nclass BlockbookAPI extends baseWebsocket_1.BaseWebsocket {\n createWebsocket() {\n let {\n url\n } = this.options;\n if (typeof url !== 'string') {\n throw new errors_1.CustomError('websocket_no_url');\n }\n if (url.startsWith('http')) {\n url = url.replace('http', 'ws');\n }\n if (!url.endsWith('/websocket')) {\n const suffix = url.endsWith('/') ? 'websocket' : '/websocket';\n url += suffix;\n }\n return this.initWebsocket({\n url,\n agent: this.options.agent,\n headers: {\n 'User-Agent': `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`,\n ...this.options.headers\n }\n });\n }\n ping() {\n return this.getBlockHash(1);\n }\n send = (method, params = {}) => this.sendMessage({\n method,\n params\n });\n getServerInfo() {\n return this.send('getInfo');\n }\n getBlockHash(block) {\n return this.send('getBlockHash', {\n height: block\n });\n }\n getBlock(block) {\n return this.send('getBlock', {\n id: `${block}`\n });\n }\n getBlockFilter(blockHash, filterParams) {\n return this.send('getBlockFilter', {\n blockHash,\n scriptType: 'taproot-noordinals',\n ...filterParams\n });\n }\n getBlockFiltersBatch(bestKnownBlockHash, pageSize, filterParams) {\n return this.send('getBlockFiltersBatch', {\n bestKnownBlockHash,\n pageSize,\n scriptType: 'taproot-noordinals',\n ...filterParams\n });\n }\n getMempoolFilters(fromTimestamp, filterParams) {\n return this.send('getMempoolFilters', {\n fromTimestamp,\n scriptType: 'taproot-noordinals',\n ...filterParams\n });\n }\n getAccountInfo(payload) {\n return this.send('getAccountInfo', payload);\n }\n getAccountUtxo(descriptor) {\n return this.send('getAccountUtxo', {\n descriptor\n });\n }\n getTransaction(txid) {\n return this.send('getTransaction', {\n txid\n });\n }\n pushTransaction(hex, disableAlternativeRPC) {\n return this.send('sendTransaction', {\n hex,\n disableAlternativeRPC\n });\n }\n estimateFee(payload) {\n return this.send('estimateFee', payload);\n }\n rpcCall(payload) {\n return this.send('rpcCall', payload);\n }\n getCurrentFiatRates(payload) {\n return this.send('getCurrentFiatRates', payload);\n }\n getAccountBalanceHistory(payload) {\n return this.send('getBalanceHistory', payload);\n }\n getFiatRatesForTimestamps(payload) {\n return this.send('getFiatRatesForTimestamps', payload);\n }\n getFiatRatesTickersList(payload) {\n return this.send('getFiatRatesTickersList', payload);\n }\n subscribeAddresses(addresses) {\n this.removeSubscription('notification');\n this.addSubscription('notification', result => this.emit('notification', result));\n return this.send('subscribeAddresses', {\n addresses\n });\n }\n unsubscribeAddresses() {\n const index = this.removeSubscription('notification');\n return index >= 0 ? this.send('unsubscribeAddresses') : {\n subscribed: false\n };\n }\n subscribeBlock() {\n this.removeSubscription('block');\n this.addSubscription('block', result => this.emit('block', result));\n return this.send('subscribeNewBlock');\n }\n unsubscribeBlock() {\n const index = this.removeSubscription('block');\n return index >= 0 ? this.send('unsubscribeNewBlock') : {\n subscribed: false\n };\n }\n subscribeFiatRates(currency) {\n this.removeSubscription('fiatRates');\n this.addSubscription('fiatRates', result => this.emit('fiatRates', result));\n return this.send('subscribeFiatRates', {\n currency\n });\n }\n unsubscribeFiatRates() {\n const index = this.removeSubscription('fiatRates');\n return index >= 0 ? this.send('unsubscribeFiatRates') : {\n subscribed: false\n };\n }\n subscribeMempool() {\n this.removeSubscription('mempool');\n this.addSubscription('mempool', result => this.emit('mempool', result));\n return this.send('subscribeNewTransaction');\n }\n unsubscribeMempool() {\n const index = this.removeSubscription('mempool');\n return index >= 0 ? this.send('unsubscribeNewTransaction') : {\n subscribed: false\n };\n }\n}\nexports.BlockbookAPI = BlockbookAPI;\n//# sourceMappingURL=websocket.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Blockbook;\nconst tslib_1 = require(\"tslib\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils = tslib_1.__importStar(require(\"@trezor/blockchain-link-utils/lib/blockbook\"));\nconst baseWorker_1 = require(\"../baseWorker\");\nconst websocket_1 = require(\"./websocket\");\nconst getInfo = async request => {\n const api = await request.connect();\n const info = await api.getServerInfo();\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: {\n url: api.options.url,\n ...utils.transformServerInfo(info)\n }\n };\n};\nconst getBlockHash = async request => {\n const api = await request.connect();\n const info = await api.getBlockHash(request.payload);\n return {\n type: constants_1.RESPONSES.GET_BLOCK_HASH,\n payload: info.hash\n };\n};\nconst getBlock = async request => {\n const api = await request.connect();\n const info = await api.getBlock(request.payload);\n return {\n type: constants_1.RESPONSES.GET_BLOCK,\n payload: info\n };\n};\nconst getAccountInfo = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const info = await api.getAccountInfo(payload);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: utils.transformAccountInfo(info)\n };\n};\nconst getAccountUtxo = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const utxos = await api.getAccountUtxo(payload);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_UTXO,\n payload: utils.transformAccountUtxo(utxos)\n };\n};\nconst getAccountBalanceHistory = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const history = await api.getAccountBalanceHistory(payload);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY,\n payload: history\n };\n};\nconst getCurrentFiatRates = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const fiatRates = await api.getCurrentFiatRates(payload);\n return {\n type: constants_1.RESPONSES.GET_CURRENT_FIAT_RATES,\n payload: fiatRates\n };\n};\nconst getFiatRatesForTimestamps = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const {\n tickers\n } = await api.getFiatRatesForTimestamps(payload);\n return {\n type: constants_1.RESPONSES.GET_FIAT_RATES_FOR_TIMESTAMPS,\n payload: {\n tickers\n }\n };\n};\nconst getFiatRatesTickersList = async request => {\n const {\n payload\n } = request;\n const api = await request.connect();\n const tickers = await api.getFiatRatesTickersList(payload);\n return {\n type: constants_1.RESPONSES.GET_FIAT_RATES_TICKERS_LIST,\n payload: {\n ts: tickers.ts,\n availableCurrencies: tickers.available_currencies\n }\n };\n};\nconst getTransaction = async request => {\n const api = await request.connect();\n const rawtx = await api.getTransaction(request.payload);\n const tx = utils.transformTransaction(rawtx);\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION,\n payload: tx\n };\n};\nconst getTransactionHex = async request => {\n const api = await request.connect();\n const {\n hex\n } = await api.getTransaction(request.payload);\n if (!hex) throw new errors_1.CustomError(`Missing hex of ${request.payload}`);\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION_HEX,\n payload: hex\n };\n};\nconst pushTransaction = async request => {\n const api = await request.connect();\n const {\n hex,\n disableAlternativeRPC\n } = request.payload;\n const resp = await api.pushTransaction(hex, disableAlternativeRPC);\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload: resp.result\n };\n};\nconst estimateFee = async request => {\n const api = await request.connect();\n const resp = await api.estimateFee(request.payload);\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload: resp\n };\n};\nconst rpcCall = async request => {\n const api = await request.connect();\n const resp = await api.rpcCall(request.payload);\n return {\n type: constants_1.RESPONSES.RPC_CALL,\n payload: resp\n };\n};\nconst onNewBlock = ({\n post\n}, event) => {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight: event.height,\n blockHash: event.hash\n }\n }\n });\n};\nconst onMempoolTx = ({\n post\n}, payload) => {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'mempool',\n payload\n }\n });\n};\nconst onTransaction = ({\n state,\n post\n}, event) => {\n if (!event.tx) return;\n const descriptor = event.address;\n const account = state.getAccount(descriptor);\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'notification',\n payload: {\n descriptor: account ? account.descriptor : descriptor,\n tx: account ? utils.transformTransaction(event.tx, account.addresses ?? account.descriptor) : utils.transformTransaction(event.tx, descriptor)\n }\n }\n });\n};\nconst onNewFiatRates = ({\n post\n}, event) => {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'fiatRates',\n payload: {\n rates: event.rates\n }\n }\n });\n};\nconst subscribeAccounts = async (ctx, accounts) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n state.addAccounts(accounts);\n if (!state.getSubscription('notification')) {\n api.on('notification', ev => onTransaction(ctx, ev));\n state.addSubscription('notification');\n }\n return api.subscribeAddresses(state.getAddresses());\n};\nconst subscribeAddresses = async (ctx, addresses) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n state.addAddresses(addresses);\n if (!state.getSubscription('notification')) {\n api.on('notification', ev => onTransaction(ctx, ev));\n state.addSubscription('notification');\n }\n return api.subscribeAddresses(state.getAddresses());\n};\nconst subscribeBlock = async ctx => {\n if (ctx.state.getSubscription('block')) return {\n subscribed: true\n };\n ctx.state.addSubscription('block');\n const api = await ctx.connect();\n api.on('block', ev => onNewBlock(ctx, ev));\n return api.subscribeBlock();\n};\nconst subscribeFiatRates = async (ctx, currency) => {\n const api = await ctx.connect();\n if (!ctx.state.getSubscription('fiatRates')) {\n ctx.state.addSubscription('fiatRates');\n api.on('fiatRates', ev => onNewFiatRates(ctx, ev));\n }\n return api.subscribeFiatRates(currency);\n};\nconst subscribeMempool = async ctx => {\n const api = await ctx.connect();\n if (!ctx.state.getSubscription('mempool')) {\n ctx.state.addSubscription('mempool');\n api.on('mempool', ev => onMempoolTx(ctx, ev));\n }\n return api.subscribeMempool();\n};\nconst subscribe = async request => {\n const {\n payload\n } = request;\n let response;\n if (payload.type === 'accounts') {\n response = await subscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n response = await subscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n response = await subscribeBlock(request);\n } else if (payload.type === 'fiatRates') {\n response = await subscribeFiatRates(request, payload.currency);\n } else if (payload.type === 'mempool') {\n response = await subscribeMempool(request);\n } else {\n throw new errors_1.CustomError('invalid_param', '+type');\n }\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: response\n };\n};\nconst unsubscribeAccounts = async ({\n state,\n connect\n}, accounts) => {\n state.removeAccounts(accounts || state.getAccounts());\n const api = await connect();\n const subscribed = state.getAddresses();\n if (subscribed.length < 1) {\n api.removeAllListeners('notification');\n state.removeSubscription('notification');\n return api.unsubscribeAddresses();\n }\n return api.subscribeAddresses(subscribed);\n};\nconst unsubscribeAddresses = async ({\n state,\n connect\n}, addresses) => {\n const api = await connect();\n if (!addresses) {\n state.removeAccounts(state.getAccounts());\n }\n const subscribed = state.removeAddresses(addresses || state.getAddresses());\n if (subscribed.length < 1) {\n api.removeAllListeners('notification');\n state.removeSubscription('notification');\n return api.unsubscribeAddresses();\n }\n return api.subscribeAddresses(subscribed);\n};\nconst unsubscribeBlock = async ({\n state,\n connect\n}) => {\n if (!state.getSubscription('block')) return {\n subscribed: false\n };\n const api = await connect();\n api.removeAllListeners('block');\n state.removeSubscription('block');\n return api.unsubscribeBlock();\n};\nconst unsubscribeFiatRates = async ({\n state,\n connect\n}) => {\n if (!state.getSubscription('fiatRates')) return {\n subscribed: false\n };\n const api = await connect();\n api.removeAllListeners('fiatRates');\n state.removeSubscription('fiatRates');\n return api.unsubscribeFiatRates();\n};\nconst unsubscribeMempool = async ({\n state,\n connect\n}) => {\n if (!state.getSubscription('mempool')) return {\n subscribed: false\n };\n const api = await connect();\n api.removeAllListeners('mempool');\n state.removeSubscription('mempool');\n return api.unsubscribeMempool();\n};\nconst unsubscribe = async request => {\n const {\n payload\n } = request;\n let response;\n if (payload.type === 'accounts') {\n response = await unsubscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n response = await unsubscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n response = await unsubscribeBlock(request);\n } else if (payload.type === 'fiatRates') {\n response = await unsubscribeFiatRates(request);\n } else if (payload.type === 'mempool') {\n response = await unsubscribeMempool(request);\n } else {\n throw new errors_1.CustomError('invalid_param', '+type');\n }\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: response\n };\n};\nconst onRequest = request => {\n switch (request.type) {\n case constants_1.MESSAGES.GET_INFO:\n return getInfo(request);\n case constants_1.MESSAGES.GET_BLOCK_HASH:\n return getBlockHash(request);\n case constants_1.MESSAGES.GET_BLOCK:\n return getBlock(request);\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return getAccountInfo(request);\n case constants_1.MESSAGES.GET_ACCOUNT_UTXO:\n return getAccountUtxo(request);\n case constants_1.MESSAGES.GET_TRANSACTION:\n return getTransaction(request);\n case constants_1.MESSAGES.GET_TRANSACTION_HEX:\n return getTransactionHex(request);\n case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY:\n return getAccountBalanceHistory(request);\n case constants_1.MESSAGES.GET_CURRENT_FIAT_RATES:\n return getCurrentFiatRates(request);\n case constants_1.MESSAGES.GET_FIAT_RATES_FOR_TIMESTAMPS:\n return getFiatRatesForTimestamps(request);\n case constants_1.MESSAGES.GET_FIAT_RATES_TICKERS_LIST:\n return getFiatRatesTickersList(request);\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return estimateFee(request);\n case constants_1.MESSAGES.RPC_CALL:\n return rpcCall(request);\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return pushTransaction(request);\n case constants_1.MESSAGES.SUBSCRIBE:\n return subscribe(request);\n case constants_1.MESSAGES.UNSUBSCRIBE:\n return unsubscribe(request);\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass BlockbookWorker extends baseWorker_1.BaseWorker {\n cleanup() {\n if (this.api) {\n this.api.dispose();\n this.api.removeAllListeners();\n }\n super.cleanup();\n }\n isConnected(api) {\n return api?.isConnected() ?? false;\n }\n async tryConnect(url) {\n const {\n timeout,\n pingTimeout,\n keepAlive\n } = this.settings;\n const api = new websocket_1.BlockbookAPI({\n url,\n timeout,\n pingTimeout,\n keepAlive,\n agent: this.proxyAgent\n });\n await api.connect();\n api.on('disconnected', () => {\n this.post({\n id: -1,\n type: constants_1.RESPONSES.DISCONNECTED,\n payload: true\n });\n this.cleanup();\n });\n this.post({\n id: -1,\n type: constants_1.RESPONSES.CONNECTED\n });\n return api;\n }\n disconnect() {\n if (this.api) {\n this.api.disconnect();\n }\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n post: data => this.post(data),\n state: this.state\n };\n const response = await onRequest(request);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, error);\n }\n }\n}\nfunction Blockbook() {\n return new BlockbookWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new BlockbookWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n", "/* eslint-disable max-classes-per-file -- Errors can be defined in the same file */\n/**\n * Base Error class for xrpl.js. All Errors thrown by xrpl.js should throw\n * XrplErrors.\n *\n * @category Errors\n */\nclass XrplError extends Error {\n public readonly name: string\n public readonly message: string\n public readonly data?: unknown\n\n /**\n * Construct an XrplError.\n *\n * @param message - The error message.\n * @param data - The data that caused the error.\n */\n public constructor(message = '', data?: unknown) {\n super(message)\n\n this.name = this.constructor.name\n this.message = message\n this.data = data\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- `captureStackTrace` can be null in browsers\n if (Error.captureStackTrace != null) {\n Error.captureStackTrace(this, this.constructor)\n }\n }\n\n /**\n * Converts the Error to a human-readable String form.\n *\n * @returns The String output of the Error.\n */\n public toString(): string {\n let result = `[${this.name}(${this.message}`\n if (this.data) {\n result += `, ${JSON.stringify(this.data)}`\n }\n result += ')]'\n return result\n }\n\n /**\n * Console.log in node uses util.inspect on object, and util.inspect allows\n * us to customize its output:\n * https://nodejs.org/api/util.html#util_custom_inspect_function_on_objects.\n *\n * @returns The String output of the Error.\n */\n public inspect(): string {\n return this.toString()\n }\n}\n\n/**\n * Error thrown when rippled responds with an error.\n *\n * @category Errors\n */\nclass RippledError extends XrplError {}\n\n/**\n * Error thrown when xrpl.js cannot specify error type.\n *\n * @category Errors\n */\nclass UnexpectedError extends XrplError {}\n\n/**\n * Error thrown when xrpl.js has an error with connection to rippled.\n *\n * @category Errors\n */\nclass ConnectionError extends XrplError {}\n\n/**\n * Error thrown when xrpl.js is not connected to rippled server.\n *\n * @category Errors\n */\nclass NotConnectedError extends ConnectionError {}\n\n/**\n * Error thrown when xrpl.js has disconnected from rippled server.\n *\n * @category Errors\n */\nclass DisconnectedError extends ConnectionError {}\n\n/**\n * Error thrown when rippled is not initialized.\n *\n * @category Errors\n */\nclass RippledNotInitializedError extends ConnectionError {}\n\n/**\n * Error thrown when xrpl.js times out.\n *\n * @category Errors\n */\nclass TimeoutError extends ConnectionError {}\n\n/**\n * Error thrown when xrpl.js sees a response in the wrong format.\n *\n * @category Errors\n */\nclass ResponseFormatError extends ConnectionError {}\n\n/**\n * Error thrown when xrpl.js sees a malformed transaction.\n *\n * @category Errors\n */\nclass ValidationError extends XrplError {}\n\n/**\n * Error thrown when a client cannot generate a wallet from the testnet/devnet\n * faucets, or when the client cannot infer the faucet URL (i.e. when the Client\n * is connected to mainnet).\n *\n * @category Errors\n */\nclass XRPLFaucetError extends XrplError {}\n\n/**\n * Error thrown when xrpl.js cannot retrieve a transaction, ledger, account, etc.\n * From rippled.\n *\n * @category Errors\n */\nclass NotFoundError extends XrplError {\n /**\n * Construct an XrplError.\n *\n * @param message - The error message. Defaults to \"Not found\".\n */\n public constructor(message = 'Not found') {\n super(message)\n }\n}\n\nexport {\n XrplError,\n UnexpectedError,\n ConnectionError,\n RippledError,\n NotConnectedError,\n DisconnectedError,\n RippledNotInitializedError,\n TimeoutError,\n ResponseFormatError,\n ValidationError,\n NotFoundError,\n XRPLFaucetError,\n}\n", "export const RIPPLED_API_V1 = 1\nexport const RIPPLED_API_V2 = 2\nexport const DEFAULT_API_VERSION = RIPPLED_API_V2\nexport type APIVersion = typeof RIPPLED_API_V1 | typeof RIPPLED_API_V2\nexport type LedgerIndex = number | ('validated' | 'closed' | 'current')\n\nexport interface XRP {\n currency: 'XRP'\n issuer?: never\n}\n\nexport interface IssuedCurrency {\n currency: string\n issuer: string\n}\n\nexport interface MPTCurrency {\n mpt_issuance_id: string\n}\n\nexport type Currency = IssuedCurrency | MPTCurrency | XRP\n\nexport interface IssuedCurrencyAmount extends IssuedCurrency {\n value: string\n}\n\nexport interface MPTAmount {\n mpt_issuance_id: string\n value: string\n}\n\n// TODO: add MPTAmount to Amount once MPTv2 is released\nexport type Amount = IssuedCurrencyAmount | string\n\nexport type ClawbackAmount = IssuedCurrencyAmount | MPTAmount\n\nexport interface Balance {\n currency: string\n issuer?: string\n value: string\n}\n\nexport interface Signer {\n Signer: {\n Account: string\n TxnSignature: string\n SigningPubKey: string\n }\n}\n\nexport interface Memo {\n Memo: {\n MemoData?: string\n MemoType?: string\n MemoFormat?: string\n }\n}\n\nexport type StreamType =\n | 'consensus'\n | 'ledger'\n | 'manifests'\n | 'peer_status'\n | 'transactions'\n | 'transactions_proposed'\n | 'server'\n | 'validations'\n\nexport interface PathStep {\n account?: string\n currency?: string\n issuer?: string\n}\n\nexport type Path = PathStep[]\n\n/**\n * The object that describes the signer in SignerEntries.\n */\nexport interface SignerEntry {\n /**\n * The object that describes the signer in SignerEntries.\n */\n SignerEntry: {\n /**\n * An XRP Ledger address whose signature contributes to the multi-signature.\n * It does not need to be a funded address in the ledger.\n */\n Account: string\n /**\n * The weight of a signature from this signer.\n * A multi-signature is only valid if the sum weight of the signatures provided meets\n * or exceeds the signer list's SignerQuorum value.\n */\n SignerWeight: number\n /**\n * An arbitrary 256-bit (32-byte) field that can be used to identify the signer, which\n * may be useful for smart contracts, or for identifying who controls a key in a large\n * organization.\n */\n WalletLocator?: string\n }\n}\n\n/**\n * This information is added to Transactions in request responses, but is not part\n * of the canonical Transaction information on ledger. These fields are denoted with\n * lowercase letters to indicate this in the rippled responses.\n */\nexport interface ResponseOnlyTxInfo {\n /**\n * The date/time when this transaction was included in a validated ledger.\n */\n date?: number\n /**\n * An identifying hash value unique to this transaction, as a hex string.\n */\n hash?: string\n /**\n * The sequence number of the ledger that included this transaction.\n */\n ledger_index?: number\n /**\n * The hash of the ledger included this transaction.\n */\n ledger_hash?: string\n /**\n * @deprecated Alias for ledger_index.\n */\n inLedger?: number\n}\n\n/**\n * One offer that might be returned from either an {@link NFTBuyOffersRequest}\n * or an {@link NFTSellOffersRequest}.\n *\n * @category Responses\n */\nexport interface NFTOffer {\n amount: Amount\n flags: number\n nft_offer_index: string\n owner: string\n destination?: string\n expiration?: number\n}\n\n/**\n * One NFToken that might be returned from an {@link NFTInfoResponse}\n *\n * @category Responses\n */\nexport interface NFToken {\n nft_id: string\n ledger_index: number\n owner: string\n is_burned: boolean\n flags: number\n transfer_fee: number\n issuer: string\n nft_taxon: number\n nft_serial: number\n uri: string\n}\n\nexport interface AuthAccount {\n AuthAccount: {\n Account: string\n }\n}\n\nexport interface AuthorizeCredential {\n Credential: {\n /** The issuer of the credential. */\n Issuer: string\n\n /** A hex-encoded value to identify the type of credential from the issuer. */\n CredentialType: string\n }\n}\n\nexport interface XChainBridge {\n LockingChainDoor: string\n LockingChainIssue: Currency\n IssuingChainDoor: string\n IssuingChainIssue: Currency\n}\n\n/**\n * A PriceData object represents the price information for a token pair.\n *\n */\nexport interface PriceData {\n PriceData: {\n /**\n * The primary asset in a trading pair. Any valid identifier, such as a stock symbol, bond CUSIP, or currency code is allowed.\n * For example, in the BTC/USD pair, BTC is the base asset; in 912810RR9/BTC, 912810RR9 is the base asset.\n */\n BaseAsset: string\n\n /**\n * The quote asset in a trading pair. The quote asset denotes the price of one unit of the base asset. For example, in the\n * BTC/USD pair,BTC is the base asset; in 912810RR9/BTC, 912810RR9 is the base asset.\n */\n QuoteAsset: string\n\n /**\n * The asset price after applying the Scale precision level. It's not included if the last update transaction didn't include\n * the BaseAsset/QuoteAsset pair.\n */\n AssetPrice?: number | string\n\n /**\n * The scaling factor to apply to an asset price. For example, if Scale is 6 and original price is 0.155, then the scaled\n * price is 155000. Valid scale ranges are 0-10. It's not included if the last update transaction didn't include the\n * BaseAsset/QuoteAsset pair.\n */\n Scale?: number\n }\n}\n\n/**\n * {@link MPTokenMetadata} object as per the XLS-89 standard.\n * Use {@link encodeMPTokenMetadata} utility function to convert to a compact hex string for on-ledger storage.\n * Use {@link decodeMPTokenMetadata} utility function to convert from a hex string to this format.\n */\nexport interface MPTokenMetadata {\n /**\n * Ticker symbol used to represent the token.\n * Uppercase letters (A-Z) and digits (0-9) only. Max 6 characters recommended.\n *\n * @example \"TBILL\"\n */\n ticker: string\n\n /**\n * Display name of the token.\n * Any UTF-8 string.\n *\n * @example \"T-Bill Yield Token\"\n */\n name: string\n\n /**\n * Short description of the token.\n * Any UTF-8 string.\n *\n * @example \"A yield-bearing stablecoin backed by short-term U.S. Treasuries\"\n */\n desc?: string\n\n /**\n * URI to the token icon.\n * Can be a `hostname/path` (HTTPS assumed) or full URI for other protocols (e.g., ipfs://).\n *\n * @example \"example.org/token-icon.png\" or \"ipfs://QmXxxx\"\n */\n icon: string\n\n /**\n * Top-level classification of token purpose.\n * Allowed values: \"rwa\", \"memes\", \"wrapped\", \"gaming\", \"defi\", \"other\"\n *\n * @example \"rwa\"\n */\n asset_class: string\n\n /**\n * Optional subcategory of the asset class.\n * Required if `asset_class` is \"rwa\".\n * Allowed values: \"stablecoin\", \"commodity\", \"real_estate\", \"private_credit\", \"equity\", \"treasury\", \"other\"\n *\n * @example \"treasury\"\n */\n asset_subclass?: string\n\n /**\n * The name of the issuer account.\n * Any UTF-8 string.\n *\n * @example \"Example Yield Co.\"\n */\n issuer_name: string\n\n /**\n * List of related URIs (site, dashboard, social media, documentation, etc.).\n * Each URI object contains the link, its category, and a human-readable title.\n */\n uris?: MPTokenMetadataUri[]\n\n /**\n * Freeform field for key token details like interest rate, maturity date, term, or other relevant info.\n * Can be any valid JSON object or UTF-8 string.\n *\n * @example { \"interest_rate\": \"5.00%\", \"maturity_date\": \"2045-06-30\" }\n */\n additional_info?: string | Record\n}\n\n/**\n * {@link MPTokenMetadataUri} object as per the XLS-89 standard.\n * Used within the `uris` array of {@link MPTokenMetadata}.\n */\nexport interface MPTokenMetadataUri {\n /**\n * URI to the related resource.\n * Can be a `hostname/path` (HTTPS assumed) or full URI for other protocols (e.g., ipfs://).\n *\n * @example \"exampleyield.com/tbill\" or \"ipfs://QmXxxx\"\n */\n uri: string\n\n /**\n * The category of the link.\n * Allowed values: \"website\", \"social\", \"docs\", \"other\"\n *\n * @example \"website\"\n */\n category: string\n\n /**\n * A human-readable label for the link.\n * Any UTF-8 string.\n *\n * @example \"Product Page\"\n */\n title: string\n}\n", "import { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The AccountRoot object type describes a single account, its settings, and\n * XRP balance.\n *\n * @category Ledger Entries\n */\nexport default interface AccountRoot extends BaseLedgerEntry, HasPreviousTxnID {\n LedgerEntryType: 'AccountRoot'\n /** The identifying (classic) address of this account. */\n Account: string\n /** The account's current XRP balance in drops, represented as a string. */\n Balance: string\n /** A bit-map of boolean flags enabled for this account. */\n Flags: number\n /**\n * The number of objects this account owns in the ledger, which contributes\n * to its owner reserve.\n */\n OwnerCount: number\n /** The sequence number of the next valid transaction for this account. */\n Sequence: number\n /**\n * The identifying hash of the transaction most recently sent by this\n * account. This field must be enabled to use the AccountTxnID transaction\n * field. To enable it, send an AccountSet transaction with the.\n * `asfAccountTxnID` flag enabled.\n */\n AccountTxnID?: string\n /**\n * The ledger entry ID of the corresponding AMM ledger entry.\n * Set during account creation; cannot be modified.\n * If present, indicates that this is a special AMM AccountRoot; always omitted on non-AMM accounts.\n */\n AMMID?: string\n /**\n * A domain associated with this account. In JSON, this is the hexadecimal\n * for the ASCII representation of the domain.\n */\n Domain?: string\n /** The md5 hash of an email address. */\n EmailHash?: string\n /**\n * A public key that may be used to send encrypted messages to this account\n * in JSON, uses hexadecimal.\n */\n MessageKey?: string\n /**\n * The address of a key pair that can be used to sign transactions for this\n * account instead of the master key. Use a SetRegularKey transaction to\n * change this value.\n */\n RegularKey?: string\n /**\n * How many Tickets this account owns in the ledger. This is updated\n * automatically to ensure that the account stays within the hard limit of 250.\n * Tickets at a time.\n */\n TicketCount?: number\n /**\n * How many significant digits to use for exchange rates of Offers involving\n * currencies issued by this address. Valid values are 3 to 15, inclusive.\n */\n TickSize?: number\n /**\n * A transfer fee to charge other users for sending currency issued by this\n * account to each other.\n */\n TransferRate?: number\n /** An arbitrary 256-bit value that users can set. */\n WalletLocator?: string\n /** Total NFTokens this account's issued that have been burned. This number is always equal or less than MintedNFTokens. */\n BurnedNFTokens?: number\n /** The sequence that the account first minted an NFToken */\n FirstNFTokenSequence?: number\n /** Total NFTokens have been minted by and on behalf of this account. */\n MintedNFTokens?: number\n /** Another account that can mint NFTokens on behalf of this account. */\n NFTokenMinter?: string\n}\n\n/**\n * A boolean map of AccountRootFlags for simplified code checking AccountRoot settings.\n * For submitting settings flags to the ledger, use AccountRootFlags instead.\n */\nexport interface AccountRootFlagsInterface {\n /**\n * The account has used its free SetRegularKey transaction.\n */\n lsfPasswordSpent?: boolean\n /**\n * Requires incoming payments to specify a Destination Tag.\n */\n lsfRequireDestTag?: boolean\n /**\n * This account must individually approve other users for those users to hold this account's issued currencies.\n */\n lsfRequireAuth?: boolean\n /**\n * Client applications should not send XRP to this account. Not enforced by rippled.\n */\n lsfDisallowXRP?: boolean\n /**\n * Disallows use of the master key to sign transactions for this account.\n */\n lsfDisableMaster?: boolean\n /**\n * This address cannot freeze trust lines connected to it. Once enabled, cannot be disabled.\n */\n lsfNoFreeze?: boolean\n /**\n * All assets issued by this address are frozen.\n */\n lsfGlobalFreeze?: boolean\n /**\n * Enable rippling on this address's trust lines by default. Required for issuing addresses; discouraged for others.\n */\n lsfDefaultRipple?: boolean\n /**\n * This account can only receive funds from transactions it sends, and from preauthorized accounts.\n * (It has DepositAuth enabled.)\n */\n lsfDepositAuth?: boolean\n /**\n * This account is an Automated Market Maker (AMM) instance.\n */\n lsfAMM?: boolean\n /**\n * Disallow incoming NFTOffers from other accounts.\n */\n lsfDisallowIncomingNFTokenOffer?: boolean\n /**\n * Disallow incoming Checks from other accounts.\n */\n lsfDisallowIncomingCheck?: boolean\n /**\n * Disallow incoming PayChannels from other accounts.\n */\n lsfDisallowIncomingPayChan?: boolean\n /**\n * Disallow incoming Trustlines from other accounts.\n */\n lsfDisallowIncomingTrustline?: boolean\n /**\n * This address can claw back issued IOUs. Once enabled, cannot be disabled.\n */\n lsfAllowTrustLineClawback?: boolean\n\n /**\n * Allow IOUs to be used as escrow amounts for an issuer\n */\n lsfAllowTrustLineLocking?: boolean\n}\n\nexport enum AccountRootFlags {\n /**\n * The account has used its free SetRegularKey transaction.\n */\n lsfPasswordSpent = 0x00010000,\n /**\n * Requires incoming payments to specify a Destination Tag.\n */\n lsfRequireDestTag = 0x00020000,\n /**\n * This account must individually approve other users for those users to hold this account's issued currencies.\n */\n lsfRequireAuth = 0x00040000,\n /**\n * Client applications should not send XRP to this account. Not enforced by rippled.\n */\n lsfDisallowXRP = 0x00080000,\n /**\n * Disallows use of the master key to sign transactions for this account.\n */\n lsfDisableMaster = 0x00100000,\n /**\n * This address cannot freeze trust lines connected to it. Once enabled, cannot be disabled.\n */\n lsfNoFreeze = 0x00200000,\n /**\n * All assets issued by this address are frozen.\n */\n lsfGlobalFreeze = 0x00400000,\n /**\n * Enable rippling on this address's trust lines by default. Required for issuing addresses; discouraged for others.\n */\n lsfDefaultRipple = 0x00800000,\n /**\n * This account can only receive funds from transactions it sends, and from preauthorized accounts.\n * (It has DepositAuth enabled.)\n */\n lsfDepositAuth = 0x01000000,\n /**\n * This account is an Automated Market Maker (AMM) instance.\n */\n lsfAMM = 0x02000000,\n /**\n * Disallow incoming NFTOffers from other accounts.\n */\n lsfDisallowIncomingNFTokenOffer = 0x04000000,\n /**\n * Disallow incoming Checks from other accounts.\n */\n lsfDisallowIncomingCheck = 0x08000000,\n /**\n * Disallow incoming PayChannels from other accounts.\n */\n lsfDisallowIncomingPayChan = 0x10000000,\n /**\n * Disallow incoming Trustlines from other accounts.\n */\n lsfDisallowIncomingTrustline = 0x20000000,\n /**\n * This address can claw back issued IOUs. Once enabled, cannot be disabled.\n */\n lsfAllowTrustLineClawback = 0x80000000,\n /**\n * If the issuer's account does not have the lsfAllowTrustLineLocking flag set,\n * then Escrow ledger-objects cannot be created with such IOUs.\n */\n lsfAllowTrustLineLocking = 0x40000000,\n}\n", "/**\n * Internal webcrypto alias.\n * We prefer WebCrypto aka globalThis.crypto, which exists in node.js 16+.\n * Falls back to Node.js built-in crypto for Node.js <=v14.\n * See utils.ts for details.\n * @module\n */\n// @ts-ignore\nimport * as nc from 'node:crypto';\nexport const crypto: any =\n nc && typeof nc === 'object' && 'webcrypto' in nc\n ? (nc.webcrypto as any)\n : nc && typeof nc === 'object' && 'randomBytes' in nc\n ? nc\n : undefined;\n", "/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) 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\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n if (typeof h !== 'function' || typeof h.create !== 'function')\n throw new Error('Hash should be wrapped by utils.createHasher');\n anumber(h.outputLen);\n anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n abytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error('digestInto() expects output buffer of length at least ' + min);\n }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n for (let i = 0; i < arrays.length; i++) {\n arrays[i].fill(0);\n }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n return (\n ((word << 24) & 0xff000000) |\n ((word << 8) & 0xff0000) |\n ((word >>> 8) & 0xff00) |\n ((word >>> 24) & 0xff)\n );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n ? (n: number) => n\n : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n for (let i = 0; i < arr.length; i++) {\n arr[i] = byteSwap(arr[i]);\n }\n return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n ? (u: Uint32Array) => u\n : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n // @ts-ignore\n typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n abytes(bytes);\n // @ts-ignore\n if (hasHexBuiltin) return bytes.toHex();\n // pre-caching improves the speed 6x\n let hex = '';\n for (let i = 0; i < bytes.length; i++) {\n hex += hexes[bytes[i]];\n }\n return hex;\n}\n\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 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n // @ts-ignore\n if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n const hl = hex.length;\n const al = hl / 2;\n if (hl % 2) 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/**\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 (): Promise => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n iters: number,\n tick: number,\n cb: (i: number) => void\n): Promise {\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) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') throw new Error('string expected');\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\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: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n abytes(data);\n return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\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\ntype EmptyObj = {};\nexport function checkOpts(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\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 as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF> = Hash & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType;\n/** Hash function with output */\nexport type CHashO = ReturnType;\n/** XOF with output */\nexport type CHashXO = ReturnType;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher>(\n hashCons: () => Hash\n): {\n (msg: Input): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(): Hash;\n} {\n const hashC = (msg: Input): Uint8Array => 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}\n\nexport function createOptHasher, T extends Object>(\n hashCons: (opts?: T) => Hash\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): Hash;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\n\nexport function createXOFer, T extends Object>(\n hashCons: (opts?: T) => HashXOF\n): {\n (msg: Input, opts?: T): Uint8Array;\n outputLen: number;\n blockLen: number;\n create(opts?: T): HashXOF;\n} {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts?: T) => hashCons(opts);\n return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n // Legacy Node.js compatibility\n if (crypto && typeof crypto.randomBytes === 'function') {\n return Uint8Array.from(crypto.randomBytes(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n", "import { concatBytes } from '@noble/hashes/utils'\n\nexport const HEX_REGEX = /^[A-F0-9]*$/iu\n\nexport function concat(views: Uint8Array[]): Uint8Array {\n return concatBytes(...views)\n}\n\nexport function equal(buf1: Uint8Array, buf2: Uint8Array): boolean {\n if (buf1.byteLength !== buf2.byteLength) {\n return false\n }\n const dv1 = new Int8Array(buf1)\n const dv2 = new Int8Array(buf2)\n for (let i = 0; i !== buf1.byteLength; i++) {\n if (dv1[i] !== dv2[i]) {\n return false\n }\n }\n return true\n}\n", "import { randomBytes as cryptoRandomBytes } from 'crypto'\nimport type { BytesToHexFn, HexToBytesFn, RandomBytesFn } from './types'\nimport { HexToStringFn, StringToHexFn } from './types'\nimport { HEX_REGEX } from './shared'\n\nconst OriginalBuffer = Symbol('OriginalBuffer')\n\n/**\n * An extended Uint8Array that incorporates a reference to the original Node.js Buffer.\n *\n * When converting a Node.js Buffer to a Uint8Array, there's an optimization that shares\n * the memory of the original Buffer with the resulting Uint8Array instead of copying data.\n * The Uint8ArrayWithReference interface is used to attach a reference to the original Buffer, ensuring\n * its persistence in memory (preventing garbage collection) as long as the Uint8Array exists.\n * This strategy upholds the ownership semantics of the slice of the ArrayBuffer.\n */\ninterface Uint8ArrayWithReference extends Uint8Array {\n [OriginalBuffer]: Buffer\n}\n\n/**\n * Converts a Node.js Buffer to a Uint8Array for uniform behavior with browser implementations.\n *\n * Choices:\n * 1. Directly returning the Buffer:\n * - Operation: Return Buffer as is (a Buffer *IS* an instanceof Uint8Array).\n * - Pros: Most memory and performance efficient.\n * - Cons: Violates strict Uint8Array typing and may lead to issues where Buffer-specific features are [ab]used.\n *\n * 2. Using `new Uint8Array(buffer)` or `Uint8Array.from(buffer)`:\n * - Operation: Copies the buffer's data into a new Uint8Array.\n * - Pros: Ensures data isolation; memory-safe.\n * - Cons: Less performant due to data duplication.\n *\n * 3. Using buf.buffer slice:\n * - Operation: Shares memory between Buffer and Uint8Array.\n * - Pros: Performant.\n * - Cons: Risks with shared memory and potential for invalid references.\n *\n * 4. Using buf.buffer slice and keeping a Buffer reference for ownership semantics:\n * - Operation: Shares memory and associates the original Buffer with the resulting Uint8Array.\n * - Pros: Performant while ensuring the original Buffer isn't garbage collected.\n * - Cons: Risks with shared memory but mitigates potential for invalid references.\n *\n * The chosen method (4) prioritizes performance by sharing memory while ensuring buffer ownership.\n *\n * @param {Buffer} buffer - The Node.js Buffer to convert.\n * @returns {Uint8Array} Resulting Uint8Array sharing the same memory as the Buffer and maintaining a reference to it.\n */\nfunction toUint8Array(buffer: Buffer): Uint8Array {\n const u8Array = new Uint8Array(\n buffer.buffer.slice(\n buffer.byteOffset,\n buffer.byteOffset + buffer.byteLength,\n ),\n ) as Uint8ArrayWithReference\n u8Array[OriginalBuffer] = buffer\n return u8Array\n}\n\n/* eslint-disable func-style -- Typed to ensure uniformity between node and browser implementations and docs */\nexport const bytesToHex: typeof BytesToHexFn = (bytes) => {\n const buf = Buffer.from(bytes)\n return buf.toString('hex').toUpperCase()\n}\n\nexport const hexToBytes: typeof HexToBytesFn = (hex) => {\n if (!HEX_REGEX.test(hex)) {\n throw new Error('Invalid hex string')\n }\n return toUint8Array(Buffer.from(hex, 'hex'))\n}\n\nexport const randomBytes: typeof RandomBytesFn = (size) => {\n return toUint8Array(cryptoRandomBytes(size))\n}\n\nexport const hexToString: typeof HexToStringFn = (\n hex: string,\n encoding = 'utf8',\n): string => {\n if (!HEX_REGEX.test(hex)) {\n throw new Error('Invalid hex string')\n }\n return new TextDecoder(encoding).decode(hexToBytes(hex))\n}\n\nexport const stringToHex: typeof StringToHexFn = (string: string): string => {\n return bytesToHex(new TextEncoder().encode(string))\n}\n/* eslint-enable func-style */\n\nexport * from './shared'\n", "/*! scure-base - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\nexport interface Coder {\n encode(from: F): T;\n decode(to: T): F;\n}\n\nexport interface BytesCoder extends Coder {\n encode: (data: Uint8Array) => string;\n decode: (str: string) => Uint8Array;\n}\n\nfunction isBytes(a: unknown): a is Uint8Array {\n return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n/** Asserts something is Uint8Array. */\nfunction abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n if (!isBytes(b)) 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\nfunction isArrayOf(isString: boolean, arr: any[]) {\n if (!Array.isArray(arr)) return false;\n if (arr.length === 0) return true;\n if (isString) {\n return arr.every((item) => typeof item === 'string');\n } else {\n return arr.every((item) => Number.isSafeInteger(item));\n }\n}\n\n// no abytes: seems to have 10% slowdown. Why?!\n\nfunction afn(input: Function): input is Function {\n if (typeof input !== 'function') throw new Error('function expected');\n return true;\n}\n\nfunction astr(label: string, input: unknown): input is string {\n if (typeof input !== 'string') throw new Error(`${label}: string expected`);\n return true;\n}\n\nfunction anumber(n: number): void {\n if (!Number.isSafeInteger(n)) throw new Error(`invalid integer: ${n}`);\n}\n\nfunction aArr(input: any[]) {\n if (!Array.isArray(input)) throw new Error('array expected');\n}\nfunction astrArr(label: string, input: string[]) {\n if (!isArrayOf(true, input)) throw new Error(`${label}: array of strings expected`);\n}\nfunction anumArr(label: string, input: number[]) {\n if (!isArrayOf(false, input)) throw new Error(`${label}: array of numbers expected`);\n}\n\n// TODO: some recusive type inference so it would check correct order of input/output inside rest?\n// like , , \ntype Chain = [Coder, ...Coder[]];\n// Extract info from Coder type\ntype Input = F extends Coder ? T : never;\ntype Output = F extends Coder ? T : never;\n// Generic function for arrays\ntype First = T extends [infer U, ...any[]] ? U : never;\ntype Last = T extends [...any[], infer U] ? U : never;\ntype Tail = T extends [any, ...infer U] ? U : never;\n\ntype AsChain> = {\n // C[K] = Coder, Input>\n [K in keyof C]: Coder, Input>;\n};\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction chain>(...args: T): Coder>, Output>> {\n const id = (a: any) => a;\n // Wrap call in closure so JIT can inline calls\n const wrap = (a: any, b: any) => (c: any) => a(b(c));\n // Construct chain of args[-1].encode(args[-2].encode([...]))\n const encode = args.map((x) => x.encode).reduceRight(wrap, id);\n // Construct chain of args[0].decode(args[1].decode(...))\n const decode = args.map((x) => x.decode).reduce(wrap, id);\n return { encode, decode };\n}\n\n/**\n * Encodes integer radix representation to array of strings using alphabet and back.\n * Could also be array of strings.\n * @__NO_SIDE_EFFECTS__\n */\nfunction alphabet(letters: string | string[]): Coder {\n // mapping 1 to \"b\"\n const lettersA = typeof letters === 'string' ? letters.split('') : letters;\n const len = lettersA.length;\n astrArr('alphabet', lettersA);\n\n // mapping \"b\" to 1\n const indexes = new Map(lettersA.map((l, i) => [l, i]));\n return {\n encode: (digits: number[]) => {\n aArr(digits);\n return digits.map((i) => {\n if (!Number.isSafeInteger(i) || i < 0 || i >= len)\n throw new Error(\n `alphabet.encode: digit index outside alphabet \"${i}\". Allowed: ${letters}`\n );\n return lettersA[i]!;\n });\n },\n decode: (input: string[]): number[] => {\n aArr(input);\n return input.map((letter) => {\n astr('alphabet.decode', letter);\n const i = indexes.get(letter);\n if (i === undefined) throw new Error(`Unknown letter: \"${letter}\". Allowed: ${letters}`);\n return i;\n });\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction join(separator = ''): Coder {\n astr('join', separator);\n return {\n encode: (from) => {\n astrArr('join.decode', from);\n return from.join(separator);\n },\n decode: (to) => {\n astr('join.decode', to);\n return to.split(separator);\n },\n };\n}\n\n/**\n * Pad strings array so it has integer number of bits\n * @__NO_SIDE_EFFECTS__\n */\nfunction padding(bits: number, chr = '='): Coder {\n anumber(bits);\n astr('padding', chr);\n return {\n encode(data: string[]): string[] {\n astrArr('padding.encode', data);\n while ((data.length * bits) % 8) data.push(chr);\n return data;\n },\n decode(input: string[]): string[] {\n astrArr('padding.decode', input);\n let end = input.length;\n if ((end * bits) % 8)\n throw new Error('padding: invalid, string should have whole number of bytes');\n for (; end > 0 && input[end - 1] === chr; end--) {\n const last = end - 1;\n const byte = last * bits;\n if (byte % 8 === 0) throw new Error('padding: invalid, string has too much padding');\n }\n return input.slice(0, end);\n },\n };\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction normalize(fn: (val: T) => T): Coder {\n afn(fn);\n return { encode: (from: T) => from, decode: (to: T) => fn(to) };\n}\n\n/**\n * Slow: O(n^2) time complexity\n */\nfunction convertRadix(data: number[], from: number, to: number): number[] {\n // base 1 is impossible\n if (from < 2) throw new Error(`convertRadix: invalid from=${from}, base cannot be less than 2`);\n if (to < 2) throw new Error(`convertRadix: invalid to=${to}, base cannot be less than 2`);\n aArr(data);\n if (!data.length) return [];\n let pos = 0;\n const res = [];\n const digits = Array.from(data, (d) => {\n anumber(d);\n if (d < 0 || d >= from) throw new Error(`invalid integer: ${d}`);\n return d;\n });\n const dlen = digits.length;\n while (true) {\n let carry = 0;\n let done = true;\n for (let i = pos; i < dlen; i++) {\n const digit = digits[i]!;\n const fromCarry = from * carry;\n const digitBase = fromCarry + digit;\n if (\n !Number.isSafeInteger(digitBase) ||\n fromCarry / from !== carry ||\n digitBase - digit !== fromCarry\n ) {\n throw new Error('convertRadix: carry overflow');\n }\n const div = digitBase / to;\n carry = digitBase % to;\n const rounded = Math.floor(div);\n digits[i] = rounded;\n if (!Number.isSafeInteger(rounded) || rounded * to + carry !== digitBase)\n throw new Error('convertRadix: carry overflow');\n if (!done) continue;\n else if (!rounded) pos = i;\n else done = false;\n }\n res.push(carry);\n if (done) break;\n }\n for (let i = 0; i < data.length - 1 && data[i] === 0; i++) res.push(0);\n return res.reverse();\n}\n\nconst gcd = (a: number, b: number): number => (b === 0 ? a : gcd(b, a % b));\nconst radix2carry = /* @__NO_SIDE_EFFECTS__ */ (from: number, to: number) =>\n from + (to - gcd(from, to));\nconst powers: number[] = /* @__PURE__ */ (() => {\n let res = [];\n for (let i = 0; i < 40; i++) res.push(2 ** i);\n return res;\n})();\n/**\n * Implemented with numbers, because BigInt is 5x slower\n */\nfunction convertRadix2(data: number[], from: number, to: number, padding: boolean): number[] {\n aArr(data);\n if (from <= 0 || from > 32) throw new Error(`convertRadix2: wrong from=${from}`);\n if (to <= 0 || to > 32) throw new Error(`convertRadix2: wrong to=${to}`);\n if (radix2carry(from, to) > 32) {\n throw new Error(\n `convertRadix2: carry overflow from=${from} to=${to} carryBits=${radix2carry(from, to)}`\n );\n }\n let carry = 0;\n let pos = 0; // bitwise position in current element\n const max = powers[from]!;\n const mask = powers[to]! - 1;\n const res: number[] = [];\n for (const n of data) {\n anumber(n);\n if (n >= max) throw new Error(`convertRadix2: invalid data word=${n} from=${from}`);\n carry = (carry << from) | n;\n if (pos + from > 32) throw new Error(`convertRadix2: carry overflow pos=${pos} from=${from}`);\n pos += from;\n for (; pos >= to; pos -= to) res.push(((carry >> (pos - to)) & mask) >>> 0);\n const pow = powers[pos];\n if (pow === undefined) throw new Error('invalid carry');\n carry &= pow - 1; // clean carry, otherwise it will cause overflow\n }\n carry = (carry << (to - pos)) & mask;\n if (!padding && pos >= from) throw new Error('Excess padding');\n if (!padding && carry > 0) throw new Error(`Non-zero padding: ${carry}`);\n if (padding && pos > 0) res.push(carry >>> 0);\n return res;\n}\n\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix(num: number): Coder {\n anumber(num);\n const _256 = 2 ** 8;\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix.encode input should be Uint8Array');\n return convertRadix(Array.from(bytes), _256, num);\n },\n decode: (digits: number[]) => {\n anumArr('radix.decode', digits);\n return Uint8Array.from(convertRadix(digits, num, _256));\n },\n };\n}\n\n/**\n * If both bases are power of same number (like `2**8 <-> 2**64`),\n * there is a linear algorithm. For now we have implementation for power-of-two bases only.\n * @__NO_SIDE_EFFECTS__\n */\nfunction radix2(bits: number, revPadding = false): Coder {\n anumber(bits);\n if (bits <= 0 || bits > 32) throw new Error('radix2: bits should be in (0..32]');\n if (radix2carry(8, bits) > 32 || radix2carry(bits, 8) > 32)\n throw new Error('radix2: carry overflow');\n return {\n encode: (bytes: Uint8Array) => {\n if (!isBytes(bytes)) throw new Error('radix2.encode input should be Uint8Array');\n return convertRadix2(Array.from(bytes), 8, bits, !revPadding);\n },\n decode: (digits: number[]) => {\n anumArr('radix2.decode', digits);\n return Uint8Array.from(convertRadix2(digits, bits, 8, revPadding));\n },\n };\n}\n\ntype ArgumentTypes = F extends (...args: infer A) => any ? A : never;\nfunction unsafeWrapper any>(fn: T) {\n afn(fn);\n return function (...args: ArgumentTypes): ReturnType | void {\n try {\n return fn.apply(null, args);\n } catch (e) {}\n };\n}\n\nfunction checksum(\n len: number,\n fn: (data: Uint8Array) => Uint8Array\n): Coder {\n anumber(len);\n afn(fn);\n return {\n encode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.encode: input should be Uint8Array');\n const sum = fn(data).slice(0, len);\n const res = new Uint8Array(data.length + len);\n res.set(data);\n res.set(sum, data.length);\n return res;\n },\n decode(data: Uint8Array) {\n if (!isBytes(data)) throw new Error('checksum.decode: input should be Uint8Array');\n const payload = data.slice(0, -len);\n const oldChecksum = data.slice(-len);\n const newChecksum = fn(payload).slice(0, len);\n for (let i = 0; i < len; i++)\n if (newChecksum[i] !== oldChecksum[i]) throw new Error('Invalid checksum');\n return payload;\n },\n };\n}\n\n// prettier-ignore\nexport const utils: { alphabet: typeof alphabet; chain: typeof chain; checksum: typeof checksum; convertRadix: typeof convertRadix; convertRadix2: typeof convertRadix2; radix: typeof radix; radix2: typeof radix2; join: typeof join; padding: typeof padding; } = {\n alphabet, chain, checksum, convertRadix, convertRadix2, radix, radix2, join, padding,\n};\n\n// RFC 4648 aka RFC 3548\n// ---------------------\n\n/**\n * base16 encoding from RFC 4648.\n * @example\n * ```js\n * base16.encode(Uint8Array.from([0x12, 0xab]));\n * // => '12AB'\n * ```\n */\nexport const base16: BytesCoder = chain(radix2(4), alphabet('0123456789ABCDEF'), join(''));\n\n/**\n * base32 encoding from RFC 4648. Has padding.\n * Use `base32nopad` for unpadded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ===='\n * base32.decode('CKVQ====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding.\n * Use `base32` for padded version.\n * Also check out `base32hex`, `base32hexnopad`, `base32crockford`.\n * @example\n * ```js\n * base32nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'CKVQ'\n * base32nopad.decode('CKVQ');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32nopad: BytesCoder = chain(\n radix2(5),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Padded. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hexnopad` for unpadded version.\n * @example\n * ```js\n * base32hex.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG===='\n * base32hex.decode('2ALG====');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hex: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n padding(5),\n join('')\n);\n\n/**\n * base32 encoding from RFC 4648. No padding. Compared to ordinary `base32`, slightly different alphabet.\n * Use `base32hex` for padded version.\n * @example\n * ```js\n * base32hexnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ALG'\n * base32hexnopad.decode('2ALG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32hexnopad: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHIJKLMNOPQRSTUV'),\n join('')\n);\n/**\n * base32 encoding from RFC 4648. Doug Crockford's version.\n * https://www.crockford.com/base32.html\n * @example\n * ```js\n * base32crockford.encode(Uint8Array.from([0x12, 0xab]));\n * // => '2ANG'\n * base32crockford.decode('2ANG');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base32crockford: BytesCoder = chain(\n radix2(5),\n alphabet('0123456789ABCDEFGHJKMNPQRSTVWXYZ'),\n join(''),\n normalize((s: string) => s.toUpperCase().replace(/O/g, '0').replace(/[IL]/g, '1'))\n);\n\n// Built-in base64 conversion https://caniuse.com/mdn-javascript_builtins_uint8array_frombase64\n// prettier-ignore\nconst hasBase64Builtin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toBase64 === 'function' &&\n typeof (Uint8Array as any).fromBase64 === 'function')();\n\nconst decodeBase64Builtin = (s: string, isUrl: boolean) => {\n astr('base64', s);\n const re = isUrl ? /^[A-Za-z0-9=_-]+$/ : /^[A-Za-z0-9=+/]+$/;\n const alphabet = isUrl ? 'base64url' : 'base64';\n if (s.length > 0 && !re.test(s)) throw new Error('invalid base64');\n return (Uint8Array as any).fromBase64(s, { alphabet, lastChunkHandling: 'strict' });\n};\n\n/**\n * base64 from RFC 4648. Padded.\n * Use `base64nopad` for unpadded version.\n * Also check out `base64url`, `base64urlnopad`.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64(); },\n decode(s) { return decodeBase64Builtin(s, false); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n padding(6),\n join('')\n);\n/**\n * base64 from RFC 4648. No padding.\n * Use `base64` for padded version.\n * @example\n * ```js\n * base64nopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64nopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64nopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. Padded.\n * Use `base64urlnopad` for unpadded version.\n * Falls back to built-in function, when available.\n * @example\n * ```js\n * base64url.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs='\n * base64url.decode('Eqs=');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\n// prettier-ignore\nexport const base64url: BytesCoder = hasBase64Builtin ? {\n encode(b) { abytes(b); return (b as any).toBase64({ alphabet: 'base64url' }); },\n decode(s) { return decodeBase64Builtin(s, true); },\n} : chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n padding(6),\n join('')\n);\n\n/**\n * base64 from RFC 4648, using URL-safe alphabet. No padding.\n * Use `base64url` for padded version.\n * @example\n * ```js\n * base64urlnopad.encode(Uint8Array.from([0x12, 0xab]));\n * // => 'Eqs'\n * base64urlnopad.decode('Eqs');\n * // => Uint8Array.from([0x12, 0xab])\n * ```\n */\nexport const base64urlnopad: BytesCoder = chain(\n radix2(6),\n alphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'),\n join('')\n);\n\n// base58 code\n// -----------\nconst genBase58 = /* @__NO_SIDE_EFFECTS__ */ (abc: string) =>\n chain(radix(58), alphabet(abc), join(''));\n\n/**\n * base58: base64 without ambigous characters +, /, 0, O, I, l.\n * Quadratic (O(n^2)) - so, can't be used on large inputs.\n * @example\n * ```js\n * base58.decode('01abcdef');\n * // => '3UhJW'\n * ```\n */\nexport const base58: BytesCoder = genBase58(\n '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n);\n/**\n * base58: flickr version. Check out `base58`.\n */\nexport const base58flickr: BytesCoder = genBase58(\n '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n);\n/**\n * base58: XRP version. Check out `base58`.\n */\nexport const base58xrp: BytesCoder = genBase58(\n 'rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz'\n);\n\n// Data len (index) -> encoded block len\nconst XMR_BLOCK_LEN = [0, 2, 3, 5, 6, 7, 9, 10, 11];\n\n/**\n * base58: XMR version. Check out `base58`.\n * Done in 8-byte blocks (which equals 11 chars in decoding). Last (non-full) block padded with '1' to size in XMR_BLOCK_LEN.\n * Block encoding significantly reduces quadratic complexity of base58.\n */\nexport const base58xmr: BytesCoder = {\n encode(data: Uint8Array) {\n let res = '';\n for (let i = 0; i < data.length; i += 8) {\n const block = data.subarray(i, i + 8);\n res += base58.encode(block).padStart(XMR_BLOCK_LEN[block.length]!, '1');\n }\n return res;\n },\n decode(str: string) {\n let res: number[] = [];\n for (let i = 0; i < str.length; i += 11) {\n const slice = str.slice(i, i + 11);\n const blockLen = XMR_BLOCK_LEN.indexOf(slice.length);\n const block = base58.decode(slice);\n for (let j = 0; j < block.length - blockLen; j++) {\n if (block[j] !== 0) throw new Error('base58xmr: wrong padding');\n }\n res = res.concat(Array.from(block.slice(block.length - blockLen)));\n }\n return Uint8Array.from(res);\n },\n};\n\n/**\n * Method, which creates base58check encoder.\n * Requires function, calculating sha256.\n */\nexport const createBase58check = (sha256: (data: Uint8Array) => Uint8Array): BytesCoder =>\n chain(\n checksum(4, (data) => sha256(sha256(data))),\n base58\n );\n\n/**\n * Use `createBase58check` instead.\n * @deprecated\n */\nexport const base58check: (sha256: (data: Uint8Array) => Uint8Array) => BytesCoder =\n createBase58check;\n\n// Bech32 code\n// -----------\nexport interface Bech32Decoded {\n prefix: Prefix;\n words: number[];\n}\nexport interface Bech32DecodedWithArray {\n prefix: Prefix;\n words: number[];\n bytes: Uint8Array;\n}\n\nconst BECH_ALPHABET: Coder = chain(\n alphabet('qpzry9x8gf2tvdw0s3jn54khce6mua7l'),\n join('')\n);\n\nconst POLYMOD_GENERATORS = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\nfunction bech32Polymod(pre: number): number {\n const b = pre >> 25;\n let chk = (pre & 0x1ffffff) << 5;\n for (let i = 0; i < POLYMOD_GENERATORS.length; i++) {\n if (((b >> i) & 1) === 1) chk ^= POLYMOD_GENERATORS[i]!;\n }\n return chk;\n}\n\nfunction bechChecksum(prefix: string, words: number[], encodingConst = 1): string {\n const len = prefix.length;\n let chk = 1;\n for (let i = 0; i < len; i++) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126) throw new Error(`Invalid prefix (${prefix})`);\n chk = bech32Polymod(chk) ^ (c >> 5);\n }\n chk = bech32Polymod(chk);\n for (let i = 0; i < len; i++) chk = bech32Polymod(chk) ^ (prefix.charCodeAt(i) & 0x1f);\n for (let v of words) chk = bech32Polymod(chk) ^ v;\n for (let i = 0; i < 6; i++) chk = bech32Polymod(chk);\n chk ^= encodingConst;\n return BECH_ALPHABET.encode(convertRadix2([chk % powers[30]!], 30, 5, false));\n}\n\nexport interface Bech32 {\n encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit?: number | false\n ): `${Lowercase}1${string}`;\n decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n encodeFromBytes(prefix: string, bytes: Uint8Array): string;\n decodeToBytes(str: string): Bech32DecodedWithArray;\n decodeUnsafe(str: string, limit?: number | false): void | Bech32Decoded;\n fromWords(to: number[]): Uint8Array;\n fromWordsUnsafe(to: number[]): void | Uint8Array;\n toWords(from: Uint8Array): number[];\n}\n/**\n * @__NO_SIDE_EFFECTS__\n */\nfunction genBech32(encoding: 'bech32' | 'bech32m'): Bech32 {\n const ENCODING_CONST = encoding === 'bech32' ? 1 : 0x2bc830a3;\n const _words = radix2(5);\n const fromWords = _words.decode;\n const toWords = _words.encode;\n const fromWordsUnsafe = unsafeWrapper(fromWords);\n\n function encode(\n prefix: Prefix,\n words: number[] | Uint8Array,\n limit: number | false = 90\n ): `${Lowercase}1${string}` {\n astr('bech32.encode prefix', prefix);\n if (isBytes(words)) words = Array.from(words);\n anumArr('bech32.encode', words);\n const plen = prefix.length;\n if (plen === 0) throw new TypeError(`Invalid prefix length ${plen}`);\n const actualLength = plen + 7 + words.length;\n if (limit !== false && actualLength > limit)\n throw new TypeError(`Length ${actualLength} exceeds limit ${limit}`);\n const lowered = prefix.toLowerCase();\n const sum = bechChecksum(lowered, words, ENCODING_CONST);\n return `${lowered}1${BECH_ALPHABET.encode(words)}${sum}` as `${Lowercase}1${string}`;\n }\n\n function decode(\n str: `${Prefix}1${string}`,\n limit?: number | false\n ): Bech32Decoded;\n function decode(str: string, limit?: number | false): Bech32Decoded;\n function decode(str: string, limit: number | false = 90): Bech32Decoded {\n astr('bech32.decode input', str);\n const slen = str.length;\n if (slen < 8 || (limit !== false && slen > limit))\n throw new TypeError(`invalid string length: ${slen} (${str}). Expected (8..${limit})`);\n // don't allow mixed case\n const lowered = str.toLowerCase();\n if (str !== lowered && str !== str.toUpperCase())\n throw new Error(`String must be lowercase or uppercase`);\n const sepIndex = lowered.lastIndexOf('1');\n if (sepIndex === 0 || sepIndex === -1)\n throw new Error(`Letter \"1\" must be present between prefix and data only`);\n const prefix = lowered.slice(0, sepIndex);\n const data = lowered.slice(sepIndex + 1);\n if (data.length < 6) throw new Error('Data must be at least 6 characters long');\n const words = BECH_ALPHABET.decode(data).slice(0, -6);\n const sum = bechChecksum(prefix, words, ENCODING_CONST);\n if (!data.endsWith(sum)) throw new Error(`Invalid checksum in ${str}: expected \"${sum}\"`);\n return { prefix, words };\n }\n\n const decodeUnsafe = unsafeWrapper(decode);\n\n function decodeToBytes(str: string): Bech32DecodedWithArray {\n const { prefix, words } = decode(str, false);\n return { prefix, words, bytes: fromWords(words) };\n }\n\n function encodeFromBytes(prefix: string, bytes: Uint8Array) {\n return encode(prefix, toWords(bytes));\n }\n\n return {\n encode,\n decode,\n encodeFromBytes,\n decodeToBytes,\n decodeUnsafe,\n fromWords,\n fromWordsUnsafe,\n toWords,\n };\n}\n\n/**\n * bech32 from BIP 173. Operates on words.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32: Bech32 = genBech32('bech32');\n\n/**\n * bech32m from BIP 350. Operates on words.\n * It was to mitigate `bech32` weaknesses.\n * For high-level, check out scure-btc-signer:\n * https://github.com/paulmillr/scure-btc-signer.\n */\nexport const bech32m: Bech32 = genBech32('bech32m');\n\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * UTF-8-to-byte decoder. Uses built-in TextDecoder / TextEncoder.\n * @example\n * ```js\n * const b = utf8.decode(\"hey\"); // => new Uint8Array([ 104, 101, 121 ])\n * const str = utf8.encode(b); // \"hey\"\n * ```\n */\nexport const utf8: BytesCoder = {\n encode: (data) => new TextDecoder().decode(data),\n decode: (str) => new TextEncoder().encode(str),\n};\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\n// prettier-ignore\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n typeof (Uint8Array as any).from([]).toHex === 'function' &&\n typeof (Uint8Array as any).fromHex === 'function')();\n// prettier-ignore\nconst hexBuiltin: BytesCoder = {\n encode(data) { abytes(data); return (data as any).toHex(); },\n decode(s) { astr('hex', s); return (Uint8Array as any).fromHex(s); },\n};\n/**\n * hex string decoder. Uses built-in function, when available.\n * @example\n * ```js\n * const b = hex.decode(\"0102ff\"); // => new Uint8Array([ 1, 2, 255 ])\n * const str = hex.encode(b); // \"0102ff\"\n * ```\n */\nexport const hex: BytesCoder = hasHexBuiltin\n ? hexBuiltin\n : chain(\n radix2(4),\n alphabet('0123456789abcdef'),\n join(''),\n normalize((s: string) => {\n if (typeof s !== 'string' || s.length % 2 !== 0)\n throw new TypeError(\n `hex.decode: expected string, got ${typeof s} with length ${s.length}`\n );\n return s.toLowerCase();\n })\n );\n\nexport type SomeCoders = {\n utf8: BytesCoder;\n hex: BytesCoder;\n base16: BytesCoder;\n base32: BytesCoder;\n base64: BytesCoder;\n base64url: BytesCoder;\n base58: BytesCoder;\n base58xmr: BytesCoder;\n};\n// prettier-ignore\nconst CODERS: SomeCoders = {\n utf8, hex, base16, base32, base64, base64url, base58, base58xmr\n};\ntype CoderType = keyof SomeCoders;\nconst coderTypeError =\n 'Invalid encoding type. Available types: utf8, hex, base16, base32, base64, base64url, base58, base58xmr';\n\n/** @deprecated */\nexport const bytesToString = (type: CoderType, bytes: Uint8Array): string => {\n if (typeof type !== 'string' || !CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (!isBytes(bytes)) throw new TypeError('bytesToString() expects Uint8Array');\n return CODERS[type].encode(bytes);\n};\n\n/** @deprecated */\nexport const str: (type: CoderType, bytes: Uint8Array) => string = bytesToString; // as in python, but for bytes only\n\n/** @deprecated */\nexport const stringToBytes = (type: CoderType, str: string): Uint8Array => {\n if (!CODERS.hasOwnProperty(type)) throw new TypeError(coderTypeError);\n if (typeof str !== 'string') throw new TypeError('stringToBytes() expects string');\n return CODERS[type].decode(str);\n};\n/** @deprecated */\nexport const bytes: (type: CoderType, str: string) => Uint8Array = stringToBytes;\n", "import { Input } from './types'\n\n/**\n * Normalize a string, number array, or Uint8Array to a string or Uint8Array.\n * Both node and noble lib functions accept these types.\n *\n * @param input - value to normalize\n */\nexport default function normalizeInput(input: Input): string | Uint8Array {\n return Array.isArray(input) ? new Uint8Array(input) : input\n}\n", "import { createHash } from 'crypto'\nimport { Hash, HashFn, Input } from './types'\nimport normalizeInput from './normalizeInput'\n\n/**\n * Wrap createHash from node to provide an interface that is isomorphic\n *\n * @param type - the hash name\n * @param fn - {createHash} the hash factory\n */\nexport default function wrapCryptoCreateHash(\n type: string,\n fn: typeof createHash,\n): HashFn {\n function hashFn(input: Input): Uint8Array {\n return fn(type).update(normalizeInput(input)).digest()\n }\n\n hashFn.create = (): Hash => {\n const hash = fn(type)\n return {\n update(input: Input): Hash {\n hash.update(normalizeInput(input))\n return this\n },\n digest(): Uint8Array {\n return hash.digest()\n },\n }\n }\n return hashFn\n}\n", "import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native sha256 implementation in HashFn\n */\nexport const sha256 = wrapCryptoCreateHash('sha256', createHash)\n", "export type ByteArray = number[] | Uint8Array\n\n/**\n * Check whether two sequences (e.g. Arrays of numbers) are equal.\n *\n * @param arr1 - One of the arrays to compare.\n * @param arr2 - The other array to compare.\n */\nexport function arrayEqual(arr1: ByteArray, arr2: ByteArray): boolean {\n if (arr1.length !== arr2.length) {\n return false\n }\n return arr1.every((value, index) => value === arr2[index])\n}\n\n/**\n * Check whether a value is a scalar\n *\n * @param val - The value to check.\n */\nfunction isScalar(val: ByteArray | number): val is number {\n return typeof val === 'number'\n}\n\n/**\n * Concatenate all `arguments` into a single array. Each argument can be either\n * a single element or a sequence, which has a `length` property and supports\n * element retrieval via sequence[ix].\n *\n * > concatArgs(1, [2, 3], Uint8Array.from([4,5]), new Uint8Array([6, 7]));\n * [1,2,3,4,5,6,7]\n *\n * @param args - Concatenate of these args into a single array.\n * @returns Array of concatenated arguments\n */\n\nexport function concatArgs(...args: Array): number[] {\n return args.flatMap((arg) => {\n return isScalar(arg) ? [arg] : Array.from(arg)\n })\n}\n", "/**\n * Codec class\n */\n\nimport { base58xrp, BytesCoder } from '@scure/base'\nimport { sha256 } from '@xrplf/isomorphic/sha256'\n\nimport { arrayEqual, concatArgs, ByteArray } from './utils'\n\nclass Codec {\n private readonly _sha256: (bytes: ByteArray) => Uint8Array\n private readonly _codec: BytesCoder\n\n public constructor(options: { sha256: (bytes: ByteArray) => Uint8Array }) {\n this._sha256 = options.sha256\n this._codec = base58xrp\n }\n\n /**\n * Encoder.\n *\n * @param bytes - Uint8Array of data to encode.\n * @param opts - Options object including the version bytes and the expected length of the data to encode.\n */\n public encode(\n bytes: ByteArray,\n opts: {\n versions: number[]\n expectedLength: number\n },\n ): string {\n const versions = opts.versions\n return this._encodeVersioned(bytes, versions, opts.expectedLength)\n }\n\n /**\n * Decoder.\n *\n * @param base58string - Base58Check-encoded string to decode.\n * @param opts - Options object including the version byte(s) and the expected length of the data after decoding.\n */\n /* eslint-disable max-lines-per-function --\n * TODO refactor */\n public decode(\n base58string: string,\n opts: {\n versions: Array\n expectedLength?: number\n versionTypes?: ['ed25519', 'secp256k1']\n },\n ): {\n version: number[]\n bytes: Uint8Array\n type: 'ed25519' | 'secp256k1' | null\n } {\n const versions = opts.versions\n const types = opts.versionTypes\n\n const withoutSum = this.decodeChecked(base58string)\n\n if (versions.length > 1 && !opts.expectedLength) {\n throw new Error(\n 'expectedLength is required because there are >= 2 possible versions',\n )\n }\n const versionLengthGuess =\n typeof versions[0] === 'number' ? 1 : versions[0].length\n const payloadLength =\n opts.expectedLength ?? withoutSum.length - versionLengthGuess\n const versionBytes = withoutSum.slice(0, -payloadLength)\n const payload = withoutSum.slice(-payloadLength)\n\n for (let i = 0; i < versions.length; i++) {\n /* eslint-disable @typescript-eslint/consistent-type-assertions --\n * TODO refactor */\n const version: number[] = Array.isArray(versions[i])\n ? (versions[i] as number[])\n : [versions[i] as number]\n if (arrayEqual(versionBytes, version)) {\n return {\n version,\n bytes: payload,\n type: types ? types[i] : null,\n }\n }\n /* eslint-enable @typescript-eslint/consistent-type-assertions */\n }\n\n throw new Error(\n 'version_invalid: version bytes do not match any of the provided version(s)',\n )\n }\n\n public encodeChecked(bytes: ByteArray): string {\n const check = this._sha256(this._sha256(bytes)).slice(0, 4)\n return this._encodeRaw(Uint8Array.from(concatArgs(bytes, check)))\n }\n\n public decodeChecked(base58string: string): Uint8Array {\n const intArray = this._decodeRaw(base58string)\n if (intArray.byteLength < 5) {\n throw new Error('invalid_input_size: decoded data must have length >= 5')\n }\n if (!this._verifyCheckSum(intArray)) {\n throw new Error('checksum_invalid')\n }\n return intArray.slice(0, -4)\n }\n\n private _encodeVersioned(\n bytes: ByteArray,\n versions: number[],\n expectedLength: number,\n ): string {\n if (!checkByteLength(bytes, expectedLength)) {\n throw new Error(\n 'unexpected_payload_length: bytes.length does not match expectedLength.' +\n ' Ensure that the bytes are a Uint8Array.',\n )\n }\n return this.encodeChecked(concatArgs(versions, bytes))\n }\n\n private _encodeRaw(bytes: ByteArray): string {\n return this._codec.encode(Uint8Array.from(bytes))\n }\n /* eslint-enable max-lines-per-function */\n\n private _decodeRaw(base58string: string): Uint8Array {\n return this._codec.decode(base58string)\n }\n\n private _verifyCheckSum(bytes: ByteArray): boolean {\n const computed = this._sha256(this._sha256(bytes.slice(0, -4))).slice(0, 4)\n const checksum = bytes.slice(-4)\n return arrayEqual(computed, checksum)\n }\n}\n\n/**\n * XRP codec\n */\n\n// base58 encodings: https://xrpl.org/base58-encodings.html\n// Account address (20 bytes)\nconst ACCOUNT_ID = 0\n// Account public key (33 bytes)\nconst ACCOUNT_PUBLIC_KEY = 0x23\n// 33; Seed value (for secret keys) (16 bytes)\nconst FAMILY_SEED = 0x21\n// 28; Validation public key (33 bytes)\nconst NODE_PUBLIC = 0x1c\n\n// [1, 225, 75]\nconst ED25519_SEED = [0x01, 0xe1, 0x4b]\n\nconst codecOptions = {\n sha256,\n}\n\nconst codecWithXrpAlphabet = new Codec(codecOptions)\n\nexport const codec = codecWithXrpAlphabet\n\n// entropy is a Uint8Array of size 16\n// type is 'ed25519' or 'secp256k1'\nexport function encodeSeed(\n entropy: ByteArray,\n type: 'ed25519' | 'secp256k1',\n): string {\n if (!checkByteLength(entropy, 16)) {\n throw new Error('entropy must have length 16')\n }\n const opts = {\n expectedLength: 16,\n\n // for secp256k1, use `FAMILY_SEED`\n versions: type === 'ed25519' ? ED25519_SEED : [FAMILY_SEED],\n }\n\n // prefixes entropy with version bytes\n return codecWithXrpAlphabet.encode(entropy, opts)\n}\n\nexport function decodeSeed(\n seed: string,\n opts: {\n versionTypes: ['ed25519', 'secp256k1']\n versions: Array\n expectedLength: number\n } = {\n versionTypes: ['ed25519', 'secp256k1'],\n versions: [ED25519_SEED, FAMILY_SEED],\n expectedLength: 16,\n },\n): {\n version: number[]\n bytes: Uint8Array\n type: 'ed25519' | 'secp256k1' | null\n} {\n return codecWithXrpAlphabet.decode(seed, opts)\n}\n\nexport function encodeAccountID(bytes: ByteArray): string {\n const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\n/* eslint-disable import/no-unused-modules ---\n * unclear why this is aliased but we should keep it in case someone else is\n * importing it with the aliased name */\nexport const encodeAddress = encodeAccountID\n/* eslint-enable import/no-unused-modules */\n\nexport function decodeAccountID(accountId: string): Uint8Array {\n const opts = { versions: [ACCOUNT_ID], expectedLength: 20 }\n return codecWithXrpAlphabet.decode(accountId, opts).bytes\n}\n\n/* eslint-disable import/no-unused-modules ---\n * unclear why this is aliased but we should keep it in case someone else is\n * importing it with the aliased name */\nexport const decodeAddress = decodeAccountID\n/* eslint-enable import/no-unused-modules */\n\nexport function decodeNodePublic(base58string: string): Uint8Array {\n const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }\n return codecWithXrpAlphabet.decode(base58string, opts).bytes\n}\n\nexport function encodeNodePublic(bytes: ByteArray): string {\n const opts = { versions: [NODE_PUBLIC], expectedLength: 33 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\nexport function encodeAccountPublic(bytes: ByteArray): string {\n const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }\n return codecWithXrpAlphabet.encode(bytes, opts)\n}\n\nexport function decodeAccountPublic(base58string: string): Uint8Array {\n const opts = { versions: [ACCOUNT_PUBLIC_KEY], expectedLength: 33 }\n return codecWithXrpAlphabet.decode(base58string, opts).bytes\n}\n\nexport function isValidClassicAddress(address: string): boolean {\n try {\n decodeAccountID(address)\n } catch (_error) {\n return false\n }\n return true\n}\n\nfunction checkByteLength(bytes: ByteArray, expectedLength: number): boolean {\n return 'byteLength' in bytes\n ? bytes.byteLength === expectedLength\n : bytes.length === expectedLength\n}\n", "import { concat, equal, hexToBytes } from '@xrplf/isomorphic/utils'\n\nimport {\n codec,\n encodeSeed,\n decodeSeed,\n encodeAccountID,\n decodeAccountID,\n encodeNodePublic,\n decodeNodePublic,\n encodeAccountPublic,\n decodeAccountPublic,\n isValidClassicAddress,\n} from './xrp-codec'\n\nconst PREFIX_BYTES = {\n // 5, 68\n main: Uint8Array.from([0x05, 0x44]),\n // 4, 147\n test: Uint8Array.from([0x04, 0x93]),\n}\n\nconst MAX_32_BIT_UNSIGNED_INT = 4294967295\n\nfunction classicAddressToXAddress(\n classicAddress: string,\n tag: number | false,\n test: boolean,\n): string {\n const accountId = decodeAccountID(classicAddress)\n return encodeXAddress(accountId, tag, test)\n}\n\nfunction encodeXAddress(\n accountId: Uint8Array,\n tag: number | false,\n test: boolean,\n): string {\n if (accountId.length !== 20) {\n // RIPEMD160 is 160 bits = 20 bytes\n throw new Error('Account ID must be 20 bytes')\n }\n if (tag !== false && tag > MAX_32_BIT_UNSIGNED_INT) {\n throw new Error('Invalid tag')\n }\n const theTag = tag || 0\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Passing null is a common js mistake\n const flag = tag === false || tag == null ? 0 : 1\n /* eslint-disable no-bitwise ---\n * need to use bitwise operations here */\n const bytes = concat([\n test ? PREFIX_BYTES.test : PREFIX_BYTES.main,\n accountId,\n Uint8Array.from([\n // 0x00 if no tag, 0x01 if 32-bit tag\n flag,\n // first byte\n theTag & 0xff,\n // second byte\n (theTag >> 8) & 0xff,\n // third byte\n (theTag >> 16) & 0xff,\n // fourth byte\n (theTag >> 24) & 0xff,\n 0,\n 0,\n 0,\n // four zero bytes (reserved for 64-bit tags)\n 0,\n ]),\n ])\n /* eslint-enable no-bitwise */\n return codec.encodeChecked(bytes)\n}\n\nfunction xAddressToClassicAddress(xAddress: string): {\n classicAddress: string\n tag: number | false\n test: boolean\n} {\n /* eslint-disable @typescript-eslint/naming-convention --\n * TODO 'test' should be something like 'isTest', do this later\n */\n const { accountId, tag, test } = decodeXAddress(xAddress)\n /* eslint-enable @typescript-eslint/naming-convention */\n const classicAddress = encodeAccountID(accountId)\n return {\n classicAddress,\n tag,\n test,\n }\n}\n\nfunction decodeXAddress(xAddress: string): {\n accountId: Uint8Array\n tag: number | false\n test: boolean\n} {\n const decoded = codec.decodeChecked(xAddress)\n /* eslint-disable @typescript-eslint/naming-convention --\n * TODO 'test' should be something like 'isTest', do this later\n */\n const test = isUint8ArrayForTestAddress(decoded)\n /* eslint-enable @typescript-eslint/naming-convention */\n const accountId = decoded.slice(2, 22)\n const tag = tagFromUint8Array(decoded)\n return {\n accountId,\n tag,\n test,\n }\n}\n\nfunction isUint8ArrayForTestAddress(buf: Uint8Array): boolean {\n const decodedPrefix = buf.slice(0, 2)\n if (equal(PREFIX_BYTES.main, decodedPrefix)) {\n return false\n }\n if (equal(PREFIX_BYTES.test, decodedPrefix)) {\n return true\n }\n\n throw new Error('Invalid X-address: bad prefix')\n}\n\nfunction tagFromUint8Array(buf: Uint8Array): number | false {\n const flag = buf[22]\n if (flag >= 2) {\n // No support for 64-bit tags at this time\n throw new Error('Unsupported X-address')\n }\n if (flag === 1) {\n // Little-endian to big-endian\n return buf[23] + buf[24] * 0x100 + buf[25] * 0x10000 + buf[26] * 0x1000000\n }\n if (flag !== 0) {\n throw new Error('flag must be zero to indicate no tag')\n }\n if (!equal(hexToBytes('0000000000000000'), buf.slice(23, 23 + 8))) {\n throw new Error('remaining bytes must be zero')\n }\n return false\n}\n\nfunction isValidXAddress(xAddress: string): boolean {\n try {\n decodeXAddress(xAddress)\n } catch (_error) {\n return false\n }\n return true\n}\n\nexport {\n // Codec with XRP alphabet\n codec,\n // Encode entropy as a \"seed\"\n encodeSeed,\n // Decode a seed into an object with its version, type, and bytes\n decodeSeed,\n // Encode bytes as a classic address (r...)\n encodeAccountID,\n // Decode a classic address to its raw bytes\n decodeAccountID,\n // Encode bytes to XRP Ledger node public key format\n encodeNodePublic,\n // Decode an XRP Ledger node public key into its raw bytes\n decodeNodePublic,\n // Encode a public key, as for payment channels\n encodeAccountPublic,\n // Decode a public key, as for payment channels\n decodeAccountPublic,\n // Check whether a classic address (r...) is valid\n isValidClassicAddress,\n // Derive X-address from classic address, tag, and network ID\n classicAddressToXAddress,\n // Encode account ID, tag, and network ID to X-address\n encodeXAddress,\n // Decode X-address to account ID, tag, and network ID\n xAddressToClassicAddress,\n // Convert X-address to classic address, tag, and network ID\n decodeXAddress,\n // Check whether an X-address (X...) is valid\n isValidXAddress,\n}\n", "{\n \"FIELDS\": [\n [\n \"Generic\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 0,\n \"type\": \"Unknown\"\n }\n ],\n [\n \"Invalid\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": -1,\n \"type\": \"Unknown\"\n }\n ],\n [\n \"ObjectEndMarker\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"STObject\"\n }\n ],\n [\n \"ArrayEndMarker\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"STArray\"\n }\n ],\n [\n \"taker_gets_funded\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 258,\n \"type\": \"Amount\"\n }\n ],\n [\n \"taker_pays_funded\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 259,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LedgerEntryType\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"TransactionType\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"SignerWeight\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"TransferFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"TradingFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"DiscountedFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"Version\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"HookStateChangeCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"HookEmitCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"HookExecutionIndex\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"HookApiVersion\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"LedgerFixType\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"ManagementFeeRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"UInt16\"\n }\n ],\n [\n \"NetworkID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"Flags\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SourceTag\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"Sequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PreviousTxnLgrSeq\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LedgerSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"CloseTime\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"ParentCloseTime\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SigningTime\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"Expiration\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"TransferRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"WalletSize\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OwnerCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"DestinationTag\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 14,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LastUpdateTime\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 15,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"HighQualityIn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"HighQualityOut\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LowQualityIn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LowQualityOut\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"QualityIn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"QualityOut\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"StampEscrow\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"BondAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 23,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LoadFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OfferSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"FirstLedgerSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LastLedgerSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"TransactionIndex\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OperationLimit\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"ReferenceFeeUnits\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"ReserveBase\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"ReserveIncrement\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 32,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SetFlag\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 33,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"ClearFlag\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 34,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SignerQuorum\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 35,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"CancelAfter\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 36,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"FinishAfter\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 37,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SignerListID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 38,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"SettleDelay\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 39,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"TicketCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 40,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"TicketSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 41,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"NFTokenTaxon\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 42,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"MintedNFTokens\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 43,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"BurnedNFTokens\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 44,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"HookStateCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 45,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"EmitGeneration\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 46,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"VoteWeight\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 48,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"FirstNFTokenSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 50,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OracleDocumentID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 51,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PermissionValue\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 52,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"MutableFlags\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 53,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"StartDate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 54,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PaymentInterval\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 55,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"GracePeriod\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 56,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PreviousPaymentDate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 57,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"NextPaymentDueDate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 58,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PaymentRemaining\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 59,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"PaymentTotal\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 60,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LoanSequence\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 61,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"CoverRateMinimum\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 62,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"CoverRateLiquidation\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 63,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OverpaymentFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 64,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"InterestRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 65,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"LateInterestRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 66,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"CloseInterestRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 67,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"OverpaymentInterestRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 68,\n \"type\": \"UInt32\"\n }\n ],\n [\n \"IndexNext\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"IndexPrevious\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"BookNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"OwnerNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"BaseFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"ExchangeRate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"LowNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"HighNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"DestinationNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"Cookie\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"ServerVersion\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"NFTokenOfferNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"EmitBurden\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"HookOn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"HookInstructionCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"HookReturnCode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"ReferenceCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"XChainClaimID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"XChainAccountCreateCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"XChainAccountClaimCount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"AssetPrice\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 23,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"MaximumAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"OutstandingAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"MPTAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"IssuerNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"SubjectNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"LockedAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"VaultNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"LoanBrokerNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"UInt64\"\n }\n ],\n [\n \"EmailHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Hash128\"\n }\n ],\n [\n \"LedgerHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"ParentHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"TransactionHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"AccountHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"PreviousTxnID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"LedgerIndex\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"WalletLocator\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"RootIndex\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"AccountTxnID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"NFTokenID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"EmitParentTxnID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"EmitNonce\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"EmitHookHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"AMMID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 14,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"BookDirectory\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"InvoiceID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"Nickname\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"Amendment\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"Digest\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"Channel\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"ConsensusHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 23,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"CheckID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"ValidatedHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"PreviousPageMin\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"NextPageMin\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"NFTokenBuyOffer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"NFTokenSellOffer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"HookStateKey\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"HookHash\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"HookNamespace\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 32,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"HookSetTxnID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 33,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"DomainID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 34,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"VaultID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 35,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"ParentBatchID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 36,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"LoanBrokerID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 37,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"LoanID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 38,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"hash\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 257,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"index\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 258,\n \"type\": \"Hash256\"\n }\n ],\n [\n \"Amount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Amount\"\n }\n ],\n [\n \"Balance\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LimitAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"Amount\"\n }\n ],\n [\n \"TakerPays\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"Amount\"\n }\n ],\n [\n \"TakerGets\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LowLimit\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"Amount\"\n }\n ],\n [\n \"HighLimit\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"Amount\"\n }\n ],\n [\n \"Fee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"Amount\"\n }\n ],\n [\n \"SendMax\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"Amount\"\n }\n ],\n [\n \"DeliverMin\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"Amount\"\n }\n ],\n [\n \"Amount2\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"Amount\"\n }\n ],\n [\n \"BidMin\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"Amount\"\n }\n ],\n [\n \"BidMax\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"Amount\"\n }\n ],\n [\n \"MinimumOffer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"Amount\"\n }\n ],\n [\n \"RippleEscrow\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"Amount\"\n }\n ],\n [\n \"DeliveredAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"Amount\"\n }\n ],\n [\n \"NFTokenBrokerFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"Amount\"\n }\n ],\n [\n \"BaseFeeDrops\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"Amount\"\n }\n ],\n [\n \"ReserveBaseDrops\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 23,\n \"type\": \"Amount\"\n }\n ],\n [\n \"ReserveIncrementDrops\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LPTokenOut\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LPTokenIn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"Amount\"\n }\n ],\n [\n \"EPrice\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"Amount\"\n }\n ],\n [\n \"Price\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"Amount\"\n }\n ],\n [\n \"SignatureReward\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"Amount\"\n }\n ],\n [\n \"MinAccountCreateAmount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"Amount\"\n }\n ],\n [\n \"LPTokenBalance\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"Amount\"\n }\n ],\n [\n \"PublicKey\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 1,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MessageKey\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 2,\n \"type\": \"Blob\"\n }\n ],\n [\n \"SigningPubKey\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 3,\n \"type\": \"Blob\"\n }\n ],\n [\n \"TxnSignature\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": true,\n \"nth\": 4,\n \"type\": \"Blob\"\n }\n ],\n [\n \"URI\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 5,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Signature\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": true,\n \"nth\": 6,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Domain\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 7,\n \"type\": \"Blob\"\n }\n ],\n [\n \"FundCode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 8,\n \"type\": \"Blob\"\n }\n ],\n [\n \"RemoveCode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 9,\n \"type\": \"Blob\"\n }\n ],\n [\n \"ExpireCode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 10,\n \"type\": \"Blob\"\n }\n ],\n [\n \"CreateCode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 11,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MemoType\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 12,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MemoData\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 13,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MemoFormat\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 14,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Fulfillment\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 16,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Condition\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 17,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MasterSignature\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": true,\n \"nth\": 18,\n \"type\": \"Blob\"\n }\n ],\n [\n \"UNLModifyValidator\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 19,\n \"type\": \"Blob\"\n }\n ],\n [\n \"ValidatorToDisable\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 20,\n \"type\": \"Blob\"\n }\n ],\n [\n \"ValidatorToReEnable\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 21,\n \"type\": \"Blob\"\n }\n ],\n [\n \"HookStateData\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 22,\n \"type\": \"Blob\"\n }\n ],\n [\n \"HookReturnString\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 23,\n \"type\": \"Blob\"\n }\n ],\n [\n \"HookParameterName\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 24,\n \"type\": \"Blob\"\n }\n ],\n [\n \"HookParameterValue\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 25,\n \"type\": \"Blob\"\n }\n ],\n [\n \"DIDDocument\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 26,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Data\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 27,\n \"type\": \"Blob\"\n }\n ],\n [\n \"AssetClass\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 28,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Provider\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 29,\n \"type\": \"Blob\"\n }\n ],\n [\n \"MPTokenMetadata\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 30,\n \"type\": \"Blob\"\n }\n ],\n [\n \"CredentialType\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 31,\n \"type\": \"Blob\"\n }\n ],\n [\n \"Account\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 1,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Owner\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 2,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Destination\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 3,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Issuer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 4,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Authorize\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 5,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Unauthorize\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 6,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"RegularKey\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 8,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"NFTokenMinter\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 9,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"EmitCallback\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 10,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Holder\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 11,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Delegate\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 12,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"HookAccount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 16,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"OtherChainSource\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 18,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"OtherChainDestination\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 19,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"AttestationSignerAccount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 20,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"AttestationRewardAccount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 21,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"LockingChainDoor\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 22,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"IssuingChainDoor\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 23,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Subject\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 24,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Borrower\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 25,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Counterparty\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 26,\n \"type\": \"AccountID\"\n }\n ],\n [\n \"Number\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Number\"\n }\n ],\n [\n \"AssetsAvailable\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Number\"\n }\n ],\n [\n \"AssetsMaximum\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"Number\"\n }\n ],\n [\n \"AssetsTotal\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"Number\"\n }\n ],\n [\n \"LossUnrealized\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"Number\"\n }\n ],\n [\n \"DebtTotal\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"Number\"\n }\n ],\n [\n \"DebtMaximum\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"Number\"\n }\n ],\n [\n \"CoverAvailable\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"Number\"\n }\n ],\n [\n \"LoanOriginationFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"Number\"\n }\n ],\n [\n \"LoanServiceFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"Number\"\n }\n ],\n [\n \"LatePaymentFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"Number\"\n }\n ],\n [\n \"ClosePaymentFee\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"Number\"\n }\n ],\n [\n \"PrincipalOutstanding\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"Number\"\n }\n ],\n [\n \"PrincipalRequested\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 14,\n \"type\": \"Number\"\n }\n ],\n [\n \"TotalValueOutstanding\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 15,\n \"type\": \"Number\"\n }\n ],\n [\n \"PeriodicPayment\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"Number\"\n }\n ],\n [\n \"ManagementFeeOutstanding\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"Number\"\n }\n ],\n [\n \"LoanScale\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Int32\"\n }\n ],\n [\n \"TransactionMetaData\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"STObject\"\n }\n ],\n [\n \"CreatedNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"STObject\"\n }\n ],\n [\n \"DeletedNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"STObject\"\n }\n ],\n [\n \"ModifiedNode\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"STObject\"\n }\n ],\n [\n \"PreviousFields\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"STObject\"\n }\n ],\n [\n \"FinalFields\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"STObject\"\n }\n ],\n [\n \"NewFields\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"STObject\"\n }\n ],\n [\n \"TemplateEntry\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Memo\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"STObject\"\n }\n ],\n [\n \"SignerEntry\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"STObject\"\n }\n ],\n [\n \"NFToken\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"STObject\"\n }\n ],\n [\n \"EmitDetails\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Hook\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 14,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Permission\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 15,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Signer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Majority\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"STObject\"\n }\n ],\n [\n \"DisabledValidator\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"STObject\"\n }\n ],\n [\n \"EmittedTxn\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"STObject\"\n }\n ],\n [\n \"HookExecution\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"STObject\"\n }\n ],\n [\n \"HookDefinition\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"STObject\"\n }\n ],\n [\n \"HookParameter\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 23,\n \"type\": \"STObject\"\n }\n ],\n [\n \"HookGrant\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"STObject\"\n }\n ],\n [\n \"VoteEntry\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"STObject\"\n }\n ],\n [\n \"AuctionSlot\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"STObject\"\n }\n ],\n [\n \"AuthAccount\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"STObject\"\n }\n ],\n [\n \"XChainClaimProofSig\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"STObject\"\n }\n ],\n [\n \"XChainCreateAccountProofSig\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"STObject\"\n }\n ],\n [\n \"XChainClaimAttestationCollectionElement\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"STObject\"\n }\n ],\n [\n \"XChainCreateAccountAttestationCollectionElement\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"STObject\"\n }\n ],\n [\n \"PriceData\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 32,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Credential\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 33,\n \"type\": \"STObject\"\n }\n ],\n [\n \"RawTransaction\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 34,\n \"type\": \"STObject\"\n }\n ],\n [\n \"BatchSigner\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 35,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Book\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 36,\n \"type\": \"STObject\"\n }\n ],\n [\n \"CounterpartySignature\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 37,\n \"type\": \"STObject\"\n }\n ],\n [\n \"Signers\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"STArray\"\n }\n ],\n [\n \"SignerEntries\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Template\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Necessary\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 6,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Sufficient\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 7,\n \"type\": \"STArray\"\n }\n ],\n [\n \"AffectedNodes\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 8,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Memos\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 9,\n \"type\": \"STArray\"\n }\n ],\n [\n \"NFTokens\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 10,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Hooks\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 11,\n \"type\": \"STArray\"\n }\n ],\n [\n \"VoteSlots\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 12,\n \"type\": \"STArray\"\n }\n ],\n [\n \"AdditionalBooks\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 13,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Majorities\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"STArray\"\n }\n ],\n [\n \"DisabledValidators\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"STArray\"\n }\n ],\n [\n \"HookExecutions\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"STArray\"\n }\n ],\n [\n \"HookParameters\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"STArray\"\n }\n ],\n [\n \"HookGrants\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"STArray\"\n }\n ],\n [\n \"XChainClaimAttestations\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 21,\n \"type\": \"STArray\"\n }\n ],\n [\n \"XChainCreateAccountAttestations\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 22,\n \"type\": \"STArray\"\n }\n ],\n [\n \"PriceDataSeries\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 24,\n \"type\": \"STArray\"\n }\n ],\n [\n \"AuthAccounts\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 25,\n \"type\": \"STArray\"\n }\n ],\n [\n \"AuthorizeCredentials\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 26,\n \"type\": \"STArray\"\n }\n ],\n [\n \"UnauthorizeCredentials\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 27,\n \"type\": \"STArray\"\n }\n ],\n [\n \"AcceptedCredentials\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 28,\n \"type\": \"STArray\"\n }\n ],\n [\n \"Permissions\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 29,\n \"type\": \"STArray\"\n }\n ],\n [\n \"RawTransactions\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 30,\n \"type\": \"STArray\"\n }\n ],\n [\n \"BatchSigners\",\n {\n \"isSerialized\": true,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 31,\n \"type\": \"STArray\"\n }\n ],\n [\n \"CloseResolution\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"Method\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"TransactionResult\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"Scale\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"AssetScale\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 5,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"TickSize\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 16,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"UNLModifyDisabling\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 17,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"HookResult\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 18,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"WasLockingChainSend\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 19,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"WithdrawalPolicy\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 20,\n \"type\": \"UInt8\"\n }\n ],\n [\n \"TakerPaysCurrency\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Hash160\"\n }\n ],\n [\n \"TakerPaysIssuer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Hash160\"\n }\n ],\n [\n \"TakerGetsCurrency\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"Hash160\"\n }\n ],\n [\n \"TakerGetsIssuer\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"Hash160\"\n }\n ],\n [\n \"Paths\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"PathSet\"\n }\n ],\n [\n \"Indexes\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 1,\n \"type\": \"Vector256\"\n }\n ],\n [\n \"Hashes\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 2,\n \"type\": \"Vector256\"\n }\n ],\n [\n \"Amendments\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 3,\n \"type\": \"Vector256\"\n }\n ],\n [\n \"NFTokenOffers\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 4,\n \"type\": \"Vector256\"\n }\n ],\n [\n \"CredentialIDs\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": true,\n \"nth\": 5,\n \"type\": \"Vector256\"\n }\n ],\n [\n \"MPTokenIssuanceID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Hash192\"\n }\n ],\n [\n \"ShareMPTID\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Hash192\"\n }\n ],\n [\n \"LockingChainIssue\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Issue\"\n }\n ],\n [\n \"IssuingChainIssue\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Issue\"\n }\n ],\n [\n \"Asset\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 3,\n \"type\": \"Issue\"\n }\n ],\n [\n \"Asset2\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 4,\n \"type\": \"Issue\"\n }\n ],\n [\n \"XChainBridge\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"XChainBridge\"\n }\n ],\n [\n \"BaseAsset\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 1,\n \"type\": \"Currency\"\n }\n ],\n [\n \"QuoteAsset\",\n {\n \"isSerialized\": true,\n \"isSigningField\": true,\n \"isVLEncoded\": false,\n \"nth\": 2,\n \"type\": \"Currency\"\n }\n ],\n [\n \"Transaction\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 257,\n \"type\": \"Transaction\"\n }\n ],\n [\n \"LedgerEntry\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 257,\n \"type\": \"LedgerEntry\"\n }\n ],\n [\n \"Validation\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 257,\n \"type\": \"Validation\"\n }\n ],\n [\n \"Metadata\",\n {\n \"isSerialized\": false,\n \"isSigningField\": false,\n \"isVLEncoded\": false,\n \"nth\": 257,\n \"type\": \"Metadata\"\n }\n ]\n ],\n \"LEDGER_ENTRY_TYPES\": {\n \"AMM\": 121,\n \"AccountRoot\": 97,\n \"Amendments\": 102,\n \"Bridge\": 105,\n \"Check\": 67,\n \"Credential\": 129,\n \"DID\": 73,\n \"Delegate\": 131,\n \"DepositPreauth\": 112,\n \"DirectoryNode\": 100,\n \"Escrow\": 117,\n \"FeeSettings\": 115,\n \"Invalid\": -1,\n \"LedgerHashes\": 104,\n \"Loan\": 137,\n \"LoanBroker\": 136,\n \"MPToken\": 127,\n \"MPTokenIssuance\": 126,\n \"NFTokenOffer\": 55,\n \"NFTokenPage\": 80,\n \"NegativeUNL\": 78,\n \"Offer\": 111,\n \"Oracle\": 128,\n \"PayChannel\": 120,\n \"PermissionedDomain\": 130,\n \"RippleState\": 114,\n \"SignerList\": 83,\n \"Ticket\": 84,\n \"Vault\": 132,\n \"XChainOwnedClaimID\": 113,\n \"XChainOwnedCreateAccountClaimID\": 116\n },\n \"TRANSACTION_RESULTS\": {\n \"tecAMM_ACCOUNT\": 168,\n \"tecAMM_BALANCE\": 163,\n \"tecAMM_EMPTY\": 166,\n \"tecAMM_FAILED\": 164,\n \"tecAMM_INVALID_TOKENS\": 165,\n \"tecAMM_NOT_EMPTY\": 167,\n \"tecARRAY_EMPTY\": 190,\n \"tecARRAY_TOO_LARGE\": 191,\n \"tecBAD_CREDENTIALS\": 193,\n \"tecCANT_ACCEPT_OWN_NFTOKEN_OFFER\": 158,\n \"tecCLAIM\": 100,\n \"tecCRYPTOCONDITION_ERROR\": 146,\n \"tecDIR_FULL\": 121,\n \"tecDST_TAG_NEEDED\": 143,\n \"tecDUPLICATE\": 149,\n \"tecEMPTY_DID\": 187,\n \"tecEXPIRED\": 148,\n \"tecFAILED_PROCESSING\": 105,\n \"tecFROZEN\": 137,\n \"tecHAS_OBLIGATIONS\": 151,\n \"tecHOOK_REJECTED\": 153,\n \"tecINCOMPLETE\": 169,\n \"tecINSUFFICIENT_FUNDS\": 159,\n \"tecINSUFFICIENT_PAYMENT\": 161,\n \"tecINSUFFICIENT_RESERVE\": 141,\n \"tecINSUFF_FEE\": 136,\n \"tecINSUF_RESERVE_LINE\": 122,\n \"tecINSUF_RESERVE_OFFER\": 123,\n \"tecINTERNAL\": 144,\n \"tecINVALID_UPDATE_TIME\": 188,\n \"tecINVARIANT_FAILED\": 147,\n \"tecKILLED\": 150,\n \"tecLIMIT_EXCEEDED\": 195,\n \"tecLOCKED\": 192,\n \"tecMAX_SEQUENCE_REACHED\": 154,\n \"tecNEED_MASTER_KEY\": 142,\n \"tecNFTOKEN_BUY_SELL_MISMATCH\": 156,\n \"tecNFTOKEN_OFFER_TYPE_MISMATCH\": 157,\n \"tecNO_ALTERNATIVE_KEY\": 130,\n \"tecNO_AUTH\": 134,\n \"tecNO_DELEGATE_PERMISSION\": 198,\n \"tecNO_DST\": 124,\n \"tecNO_DST_INSUF_XRP\": 125,\n \"tecNO_ENTRY\": 140,\n \"tecNO_ISSUER\": 133,\n \"tecNO_LINE\": 135,\n \"tecNO_LINE_INSUF_RESERVE\": 126,\n \"tecNO_LINE_REDUNDANT\": 127,\n \"tecNO_PERMISSION\": 139,\n \"tecNO_REGULAR_KEY\": 131,\n \"tecNO_SUITABLE_NFTOKEN_PAGE\": 155,\n \"tecNO_TARGET\": 138,\n \"tecOBJECT_NOT_FOUND\": 160,\n \"tecOVERSIZE\": 145,\n \"tecOWNERS\": 132,\n \"tecPATH_DRY\": 128,\n \"tecPATH_PARTIAL\": 101,\n \"tecPRECISION_LOSS\": 197,\n \"tecPSEUDO_ACCOUNT\": 196,\n \"tecTOKEN_PAIR_NOT_FOUND\": 189,\n \"tecTOO_SOON\": 152,\n \"tecUNFUNDED\": 129,\n \"tecUNFUNDED_ADD\": 102,\n \"tecUNFUNDED_AMM\": 162,\n \"tecUNFUNDED_OFFER\": 103,\n \"tecUNFUNDED_PAYMENT\": 104,\n \"tecWRONG_ASSET\": 194,\n \"tecXCHAIN_ACCOUNT_CREATE_PAST\": 181,\n \"tecXCHAIN_ACCOUNT_CREATE_TOO_MANY\": 182,\n \"tecXCHAIN_BAD_CLAIM_ID\": 172,\n \"tecXCHAIN_BAD_PUBLIC_KEY_ACCOUNT_PAIR\": 185,\n \"tecXCHAIN_BAD_TRANSFER_ISSUE\": 170,\n \"tecXCHAIN_CLAIM_NO_QUORUM\": 173,\n \"tecXCHAIN_CREATE_ACCOUNT_DISABLED\": 186,\n \"tecXCHAIN_CREATE_ACCOUNT_NONXRP_ISSUE\": 175,\n \"tecXCHAIN_INSUFF_CREATE_AMOUNT\": 180,\n \"tecXCHAIN_NO_CLAIM_ID\": 171,\n \"tecXCHAIN_NO_SIGNERS_LIST\": 178,\n \"tecXCHAIN_PAYMENT_FAILED\": 183,\n \"tecXCHAIN_PROOF_UNKNOWN_KEY\": 174,\n \"tecXCHAIN_REWARD_MISMATCH\": 177,\n \"tecXCHAIN_SELF_COMMIT\": 184,\n \"tecXCHAIN_SENDING_ACCOUNT_MISMATCH\": 179,\n \"tecXCHAIN_WRONG_CHAIN\": 176,\n \"tefALREADY\": -198,\n \"tefBAD_ADD_AUTH\": -197,\n \"tefBAD_AUTH\": -196,\n \"tefBAD_AUTH_MASTER\": -183,\n \"tefBAD_LEDGER\": -195,\n \"tefBAD_QUORUM\": -185,\n \"tefBAD_SIGNATURE\": -186,\n \"tefCREATED\": -194,\n \"tefEXCEPTION\": -193,\n \"tefFAILURE\": -199,\n \"tefINTERNAL\": -192,\n \"tefINVALID_LEDGER_FIX_TYPE\": -178,\n \"tefINVARIANT_FAILED\": -182,\n \"tefMASTER_DISABLED\": -188,\n \"tefMAX_LEDGER\": -187,\n \"tefNFTOKEN_IS_NOT_TRANSFERABLE\": -179,\n \"tefNOT_MULTI_SIGNING\": -184,\n \"tefNO_AUTH_REQUIRED\": -191,\n \"tefNO_TICKET\": -180,\n \"tefPAST_SEQ\": -190,\n \"tefTOO_BIG\": -181,\n \"tefWRONG_PRIOR\": -189,\n \"telBAD_DOMAIN\": -398,\n \"telBAD_PATH_COUNT\": -397,\n \"telBAD_PUBLIC_KEY\": -396,\n \"telCAN_NOT_QUEUE\": -392,\n \"telCAN_NOT_QUEUE_BALANCE\": -391,\n \"telCAN_NOT_QUEUE_BLOCKED\": -389,\n \"telCAN_NOT_QUEUE_BLOCKS\": -390,\n \"telCAN_NOT_QUEUE_FEE\": -388,\n \"telCAN_NOT_QUEUE_FULL\": -387,\n \"telENV_RPC_FAILED\": -383,\n \"telFAILED_PROCESSING\": -395,\n \"telINSUF_FEE_P\": -394,\n \"telLOCAL_ERROR\": -399,\n \"telNETWORK_ID_MAKES_TX_NON_CANONICAL\": -384,\n \"telNO_DST_PARTIAL\": -393,\n \"telREQUIRES_NETWORK_ID\": -385,\n \"telWRONG_NETWORK\": -386,\n \"temARRAY_EMPTY\": -253,\n \"temARRAY_TOO_LARGE\": -252,\n \"temBAD_AMM_TOKENS\": -261,\n \"temBAD_AMOUNT\": -298,\n \"temBAD_CURRENCY\": -297,\n \"temBAD_EXPIRATION\": -296,\n \"temBAD_FEE\": -295,\n \"temBAD_ISSUER\": -294,\n \"temBAD_LIMIT\": -293,\n \"temBAD_NFTOKEN_TRANSFER_FEE\": -262,\n \"temBAD_OFFER\": -292,\n \"temBAD_PATH\": -291,\n \"temBAD_PATH_LOOP\": -290,\n \"temBAD_QUORUM\": -271,\n \"temBAD_REGKEY\": -289,\n \"temBAD_SEND_XRP_LIMIT\": -288,\n \"temBAD_SEND_XRP_MAX\": -287,\n \"temBAD_SEND_XRP_NO_DIRECT\": -286,\n \"temBAD_SEND_XRP_PARTIAL\": -285,\n \"temBAD_SEND_XRP_PATHS\": -284,\n \"temBAD_SEQUENCE\": -283,\n \"temBAD_SIGNATURE\": -282,\n \"temBAD_SIGNER\": -272,\n \"temBAD_SRC_ACCOUNT\": -281,\n \"temBAD_TICK_SIZE\": -269,\n \"temBAD_TRANSFER_FEE\": -251,\n \"temBAD_TRANSFER_RATE\": -280,\n \"temBAD_WEIGHT\": -270,\n \"temCANNOT_PREAUTH_SELF\": -267,\n \"temDISABLED\": -273,\n \"temDST_IS_SRC\": -279,\n \"temDST_NEEDED\": -278,\n \"temEMPTY_DID\": -254,\n \"temINVALID\": -277,\n \"temINVALID_ACCOUNT_ID\": -268,\n \"temINVALID_COUNT\": -266,\n \"temINVALID_FLAG\": -276,\n \"temINVALID_INNER_BATCH\": -250,\n \"temMALFORMED\": -299,\n \"temREDUNDANT\": -275,\n \"temRIPPLE_EMPTY\": -274,\n \"temSEQ_AND_TICKET\": -263,\n \"temUNCERTAIN\": -265,\n \"temUNKNOWN\": -264,\n \"temXCHAIN_BAD_PROOF\": -259,\n \"temXCHAIN_BRIDGE_BAD_ISSUES\": -258,\n \"temXCHAIN_BRIDGE_BAD_MIN_ACCOUNT_CREATE_AMOUNT\": -256,\n \"temXCHAIN_BRIDGE_BAD_REWARD_AMOUNT\": -255,\n \"temXCHAIN_BRIDGE_NONDOOR_OWNER\": -257,\n \"temXCHAIN_EQUAL_DOOR_ACCOUNTS\": -260,\n \"terADDRESS_COLLISION\": -86,\n \"terFUNDS_SPENT\": -98,\n \"terINSUF_FEE_B\": -97,\n \"terLAST\": -91,\n \"terNO_ACCOUNT\": -96,\n \"terNO_AMM\": -87,\n \"terNO_AUTH\": -95,\n \"terNO_DELEGATE_PERMISSION\": -85,\n \"terNO_LINE\": -94,\n \"terNO_RIPPLE\": -90,\n \"terOWNERS\": -93,\n \"terPRE_SEQ\": -92,\n \"terPRE_TICKET\": -88,\n \"terQUEUED\": -89,\n \"terRETRY\": -99,\n \"tesSUCCESS\": 0\n },\n \"TRANSACTION_TYPES\": {\n \"AMMBid\": 39,\n \"AMMClawback\": 31,\n \"AMMCreate\": 35,\n \"AMMDelete\": 40,\n \"AMMDeposit\": 36,\n \"AMMVote\": 38,\n \"AMMWithdraw\": 37,\n \"AccountDelete\": 21,\n \"AccountSet\": 3,\n \"Batch\": 71,\n \"CheckCancel\": 18,\n \"CheckCash\": 17,\n \"CheckCreate\": 16,\n \"Clawback\": 30,\n \"CredentialAccept\": 59,\n \"CredentialCreate\": 58,\n \"CredentialDelete\": 60,\n \"DIDDelete\": 50,\n \"DIDSet\": 49,\n \"DelegateSet\": 64,\n \"DepositPreauth\": 19,\n \"EnableAmendment\": 100,\n \"EscrowCancel\": 4,\n \"EscrowCreate\": 1,\n \"EscrowFinish\": 2,\n \"Invalid\": -1,\n \"LedgerStateFix\": 53,\n \"LoanBrokerCoverClawback\": 78,\n \"LoanBrokerCoverDeposit\": 76,\n \"LoanBrokerCoverWithdraw\": 77,\n \"LoanBrokerDelete\": 75,\n \"LoanBrokerSet\": 74,\n \"LoanDelete\": 81,\n \"LoanManage\": 82,\n \"LoanPay\": 84,\n \"LoanSet\": 80,\n \"MPTokenAuthorize\": 57,\n \"MPTokenIssuanceCreate\": 54,\n \"MPTokenIssuanceDestroy\": 55,\n \"MPTokenIssuanceSet\": 56,\n \"NFTokenAcceptOffer\": 29,\n \"NFTokenBurn\": 26,\n \"NFTokenCancelOffer\": 28,\n \"NFTokenCreateOffer\": 27,\n \"NFTokenMint\": 25,\n \"NFTokenModify\": 61,\n \"OfferCancel\": 8,\n \"OfferCreate\": 7,\n \"OracleDelete\": 52,\n \"OracleSet\": 51,\n \"Payment\": 0,\n \"PaymentChannelClaim\": 15,\n \"PaymentChannelCreate\": 13,\n \"PaymentChannelFund\": 14,\n \"PermissionedDomainDelete\": 63,\n \"PermissionedDomainSet\": 62,\n \"SetFee\": 101,\n \"SetRegularKey\": 5,\n \"SignerListSet\": 12,\n \"TicketCreate\": 10,\n \"TrustSet\": 20,\n \"UNLModify\": 102,\n \"VaultClawback\": 70,\n \"VaultCreate\": 65,\n \"VaultDelete\": 67,\n \"VaultDeposit\": 68,\n \"VaultSet\": 66,\n \"VaultWithdraw\": 69,\n \"XChainAccountCreateCommit\": 44,\n \"XChainAddAccountCreateAttestation\": 46,\n \"XChainAddClaimAttestation\": 45,\n \"XChainClaim\": 43,\n \"XChainCommit\": 42,\n \"XChainCreateBridge\": 48,\n \"XChainCreateClaimID\": 41,\n \"XChainModifyBridge\": 47\n },\n \"TYPES\": {\n \"AccountID\": 8,\n \"Amount\": 6,\n \"Blob\": 7,\n \"Currency\": 26,\n \"Done\": -1,\n \"Hash128\": 4,\n \"Hash160\": 17,\n \"Hash192\": 21,\n \"Hash256\": 5,\n \"Int32\": 10,\n \"Int64\": 11,\n \"Issue\": 24,\n \"LedgerEntry\": 10002,\n \"Metadata\": 10004,\n \"NotPresent\": 0,\n \"Number\": 9,\n \"PathSet\": 18,\n \"STArray\": 15,\n \"STObject\": 14,\n \"Transaction\": 10001,\n \"UInt16\": 1,\n \"UInt32\": 2,\n \"UInt384\": 22,\n \"UInt512\": 23,\n \"UInt64\": 3,\n \"UInt8\": 16,\n \"UInt96\": 20,\n \"Unknown\": -2,\n \"Validation\": 10003,\n \"Vector256\": 19,\n \"XChainBridge\": 25\n }\n}\n", "import { BytesList, BinaryParser } from '../binary'\n\n/*\n * @brief: Bytes, name, and ordinal representing one type, ledger_type, transaction type, or result\n */\nexport class Bytes {\n readonly bytes: Uint8Array\n\n constructor(\n readonly name: string,\n readonly ordinal: number,\n readonly ordinalWidth: number,\n ) {\n this.bytes = new Uint8Array(ordinalWidth)\n for (let i = 0; i < ordinalWidth; i++) {\n this.bytes[ordinalWidth - i - 1] = (ordinal >>> (i * 8)) & 0xff\n }\n }\n\n toJSON(): string {\n return this.name\n }\n\n toBytesSink(sink: BytesList): void {\n sink.put(this.bytes)\n }\n\n toBytes(): Uint8Array {\n return this.bytes\n }\n}\n\n/*\n * @brief: Collection of Bytes objects, mapping bidirectionally\n */\nexport class BytesLookup {\n constructor(\n types: Record,\n readonly ordinalWidth: number,\n ) {\n Object.entries(types).forEach(([k, v]) => {\n this.add(k, v)\n })\n }\n\n /**\n * Add a new name value pair to the BytesLookup.\n *\n * @param name - A human readable name for the field.\n * @param value - The numeric value for the field.\n * @throws if the name or value already exist in the lookup because it's unclear how to decode.\n */\n add(name: string, value: number): void {\n if (this[name]) {\n throw new SyntaxError(\n `Attempted to add a value with a duplicate name \"${name}\". This is not allowed because it is unclear how to decode.`,\n )\n }\n if (this[value.toString()]) {\n throw new SyntaxError(\n `Attempted to add a duplicate value under a different name (Given name: \"${name}\" and previous name: \"${\n this[value.toString()]\n }. This is not allowed because it is unclear how to decode.\\nGiven value: ${value.toString()}`,\n )\n }\n this[name] = new Bytes(name, value, this.ordinalWidth)\n this[value.toString()] = this[name]\n }\n\n from(value: Bytes | string): Bytes {\n return value instanceof Bytes ? value : (this[value] as Bytes)\n }\n\n fromParser(parser: BinaryParser): Bytes {\n return this.from(parser.readUIntN(this.ordinalWidth).toString())\n }\n}\n", "import { FieldInstance } from '../enums'\nimport { type SerializedType } from '../types/serialized-type'\nimport { bytesToHex, concat } from '@xrplf/isomorphic/utils'\n\n/**\n * Bytes list is a collection of Uint8Array objects\n */\nclass BytesList {\n private bytesArray: Array = []\n\n /**\n * Get the total number of bytes in the BytesList\n *\n * @return the number of bytes\n */\n public getLength(): number {\n return concat(this.bytesArray).byteLength\n }\n\n /**\n * Put bytes in the BytesList\n *\n * @param bytesArg A Uint8Array\n * @return this BytesList\n */\n public put(bytesArg: Uint8Array): BytesList {\n const bytes = Uint8Array.from(bytesArg) // Temporary, to catch instances of Uint8Array being passed in\n this.bytesArray.push(bytes)\n return this\n }\n\n /**\n * Write this BytesList to the back of another bytes list\n *\n * @param list The BytesList to write to\n */\n public toBytesSink(list: BytesList): void {\n list.put(this.toBytes())\n }\n\n public toBytes(): Uint8Array {\n return concat(this.bytesArray)\n }\n\n toHex(): string {\n return bytesToHex(this.toBytes())\n }\n}\n\n/**\n * BinarySerializer is used to write fields and values to Uint8Arrays\n */\nclass BinarySerializer {\n private sink: BytesList = new BytesList()\n\n constructor(sink: BytesList) {\n this.sink = sink\n }\n\n /**\n * Write a value to this BinarySerializer\n *\n * @param value a SerializedType value\n */\n write(value: SerializedType): void {\n value.toBytesSink(this.sink)\n }\n\n /**\n * Write bytes to this BinarySerializer\n *\n * @param bytes the bytes to write\n */\n put(bytes: Uint8Array): void {\n this.sink.put(bytes)\n }\n\n /**\n * Write a value of a given type to this BinarySerializer\n *\n * @param type the type to write\n * @param value a value of that type\n */\n writeType(type: typeof SerializedType, value: SerializedType): void {\n this.write(type.from(value))\n }\n\n /**\n * Write BytesList to this BinarySerializer\n *\n * @param bl BytesList to write to BinarySerializer\n */\n writeBytesList(bl: BytesList): void {\n bl.toBytesSink(this.sink)\n }\n\n /**\n * Calculate the header of Variable Length encoded bytes\n *\n * @param length the length of the bytes\n */\n private encodeVariableLength(length: number): Uint8Array {\n const lenBytes = new Uint8Array(3)\n if (length <= 192) {\n lenBytes[0] = length\n return lenBytes.slice(0, 1)\n } else if (length <= 12480) {\n length -= 193\n lenBytes[0] = 193 + (length >>> 8)\n lenBytes[1] = length & 0xff\n return lenBytes.slice(0, 2)\n } else if (length <= 918744) {\n length -= 12481\n lenBytes[0] = 241 + (length >>> 16)\n lenBytes[1] = (length >> 8) & 0xff\n lenBytes[2] = length & 0xff\n return lenBytes.slice(0, 3)\n }\n throw new Error('Overflow error')\n }\n\n /**\n * Write field and value to BinarySerializer\n *\n * @param field field to write to BinarySerializer\n * @param value value to write to BinarySerializer\n */\n writeFieldAndValue(\n field: FieldInstance,\n value: SerializedType,\n isUnlModifyWorkaround = false,\n ): void {\n const associatedValue = field.associatedType.from(value)\n if (associatedValue.toBytesSink === undefined || field.name === undefined) {\n throw new Error()\n }\n\n this.sink.put(field.header)\n\n if (field.isVariableLengthEncoded) {\n this.writeLengthEncoded(associatedValue, isUnlModifyWorkaround)\n } else {\n associatedValue.toBytesSink(this.sink)\n }\n }\n\n /**\n * Write a variable length encoded value to the BinarySerializer\n *\n * @param value length encoded value to write to BytesList\n */\n public writeLengthEncoded(\n value: SerializedType,\n isUnlModifyWorkaround = false,\n ): void {\n const bytes = new BytesList()\n if (!isUnlModifyWorkaround) {\n // this part doesn't happen for the Account field in a UNLModify transaction\n value.toBytesSink(bytes)\n }\n this.put(this.encodeVariableLength(bytes.getLength()))\n this.writeBytesList(bytes)\n }\n}\n\nexport { BytesList, BinarySerializer }\n", "import { BytesList } from '../serdes/binary-serializer'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { XrplDefinitionsBase } from '../enums'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\ntype JSON = string | number | boolean | null | undefined | JSON[] | JsonObject\n\ntype JsonObject = { [key: string]: JSON }\n\n/**\n * The base class for all binary-codec types\n */\nclass SerializedType {\n protected readonly bytes: Uint8Array = new Uint8Array(0)\n\n constructor(bytes?: Uint8Array) {\n this.bytes = bytes ?? new Uint8Array(0)\n }\n\n static fromParser(parser: BinaryParser, hint?: number): SerializedType {\n throw new Error('fromParser not implemented')\n return this.fromParser(parser, hint)\n }\n\n static from(value: SerializedType | JSON | bigint): SerializedType {\n throw new Error('from not implemented')\n return this.from(value)\n }\n\n /**\n * Write the bytes representation of a SerializedType to a BytesList\n *\n * @param list The BytesList to write SerializedType bytes to\n */\n toBytesSink(list: BytesList): void {\n list.put(this.bytes)\n }\n\n /**\n * Get the hex representation of a SerializedType's bytes\n *\n * @returns hex String of this.bytes\n */\n toHex(): string {\n return bytesToHex(this.toBytes())\n }\n\n /**\n * Get the bytes representation of a SerializedType\n *\n * @returns A Uint8Array of the bytes\n */\n toBytes(): Uint8Array {\n if (this.bytes) {\n return this.bytes\n }\n const bytes = new BytesList()\n this.toBytesSink(bytes)\n return bytes.toBytes()\n }\n\n /**\n * Return the JSON representation of a SerializedType\n *\n * @param _definitions rippled definitions used to parse the values of transaction types and such.\n * Unused in default, but used in STObject, STArray\n * Can be customized for sidechains and amendments.\n * @returns any type, if not overloaded returns hexString representation of bytes\n */\n toJSON(_definitions?: XrplDefinitionsBase, _fieldName?: string): JSON {\n return this.toHex()\n }\n\n /**\n * @returns hexString representation of this.bytes\n */\n toString(): string {\n return this.toHex()\n }\n}\n\n/**\n * Base class for SerializedTypes that are comparable.\n *\n * @template T - What types you want to allow comparisons between. You must specify all types. Primarily used to allow\n * comparisons between built-in types (like `string`) and SerializedType subclasses (like `Hash`).\n *\n * Ex. `class Hash extends Comparable`\n */\nclass Comparable extends SerializedType {\n lt(other: T): boolean {\n return this.compareTo(other) < 0\n }\n\n eq(other: T): boolean {\n return this.compareTo(other) === 0\n }\n\n gt(other: T): boolean {\n return this.compareTo(other) > 0\n }\n\n gte(other: T): boolean {\n return this.compareTo(other) > -1\n }\n\n lte(other: T): boolean {\n return this.compareTo(other) < 1\n }\n\n /**\n * Overload this method to define how two Comparable SerializedTypes are compared\n *\n * @param other The comparable object to compare this to\n * @returns A number denoting the relationship of this and other\n */\n compareTo(other: T): number {\n throw new Error(`cannot compare ${this.toString()} and ${other.toString()}`)\n }\n}\n\nexport { SerializedType, Comparable, JSON, JsonObject }\n", "export const TYPE_WIDTH = 2 // UInt16\nexport const LEDGER_ENTRY_WIDTH = 2 // UInt16\nexport const TRANSACTION_TYPE_WIDTH = 2 // UInt16\nexport const TRANSACTION_RESULT_WIDTH = 1 // UInt8\nexport const DELEGATABLE_PERMISSIONS_WIDTH = 4 // UInt32\n", "import { Bytes } from './bytes'\nimport { SerializedType } from '../types/serialized-type'\nimport { TYPE_WIDTH } from './constants'\n\n/**\n * Encoding information for a rippled field, often used in transactions.\n * See the enums [README.md](https://github.com/XRPLF/xrpl.js/tree/main/packages/ripple-binary-codec/src/enums) for more details on what each means.\n */\nexport interface FieldInfo {\n nth: number\n isVLEncoded: boolean\n isSerialized: boolean\n isSigningField: boolean\n type: string\n}\n\nexport interface FieldInstance {\n readonly nth: number\n readonly isVariableLengthEncoded: boolean\n readonly isSerialized: boolean\n readonly isSigningField: boolean\n readonly type: Bytes\n readonly ordinal: number\n readonly name: string\n readonly header: Uint8Array\n readonly associatedType: typeof SerializedType\n}\n\n/*\n * @brief: Serialize a field based on type_code and Field.nth\n */\nfunction fieldHeader(type: number, nth: number): Uint8Array {\n const header: Array = []\n if (type < 16) {\n if (nth < 16) {\n header.push((type << 4) | nth)\n } else {\n header.push(type << 4, nth)\n }\n } else if (nth < 16) {\n header.push(nth, type)\n } else {\n header.push(0, type, nth)\n }\n return Uint8Array.from(header)\n}\n\nfunction buildField(\n [name, info]: [string, FieldInfo],\n typeOrdinal: number,\n): FieldInstance {\n const field = fieldHeader(typeOrdinal, info.nth)\n return {\n name: name,\n nth: info.nth,\n isVariableLengthEncoded: info.isVLEncoded,\n isSerialized: info.isSerialized,\n isSigningField: info.isSigningField,\n ordinal: (typeOrdinal << 16) | info.nth,\n type: new Bytes(info.type, typeOrdinal, TYPE_WIDTH),\n header: field,\n associatedType: SerializedType, // For later assignment in ./types/index.js or Definitions.updateAll(...)\n }\n}\n\n/*\n * @brief: The collection of all fields as defined in definitions.json\n */\nexport class FieldLookup {\n constructor(\n fields: Array<[string, FieldInfo]>,\n types: Record,\n ) {\n fields.forEach(([name, field_info]) => {\n const typeOrdinal = types[field_info.type]\n this[name] = buildField([name, field_info], typeOrdinal)\n this[this[name].ordinal.toString()] = this[name]\n })\n }\n\n fromString(value: string): FieldInstance {\n return this[value] as FieldInstance\n }\n}\n", "import { SerializedType } from '../types/serialized-type'\nimport { Bytes, BytesLookup } from './bytes'\nimport { FieldInfo, FieldLookup, FieldInstance } from './field'\nimport {\n TYPE_WIDTH,\n LEDGER_ENTRY_WIDTH,\n TRANSACTION_TYPE_WIDTH,\n TRANSACTION_RESULT_WIDTH,\n DELEGATABLE_PERMISSIONS_WIDTH,\n} from './constants'\n\ninterface DefinitionsData {\n TYPES: Record\n LEDGER_ENTRY_TYPES: Record\n FIELDS: (string | FieldInfo)[][]\n TRANSACTION_RESULTS: Record\n TRANSACTION_TYPES: Record\n}\n\n/**\n * Stores the various types and fields for rippled to be used to encode/decode information later on.\n * XrplDefinitions should be instantiated instead of this class.\n */\nclass XrplDefinitionsBase {\n // A collection of fields that can be included in transactions\n field: FieldLookup\n // A collection of ids corresponding to types of ledger objects\n ledgerEntryType: BytesLookup\n // A collection of type flags used to determine how to serialize a field's data\n type: BytesLookup\n // Errors and result codes for transactions\n transactionResult: BytesLookup\n // Defined transactions that can be submitted to the ledger\n transactionType: BytesLookup\n // Valid transaction names\n transactionNames: string[]\n // Maps serializable types to their TypeScript class implementation\n dataTypes: Record\n // Maps granular permissions names to their corresponding integer ids\n granularPermissions: Record\n // Defined delegatable permissions\n delegatablePermissions: BytesLookup\n\n /**\n * Present rippled types in a typed and updatable format.\n * For an example of the input format see `definitions.json`.\n * To generate a new definitions file from rippled source code, use the tool at\n * `packages/ripple-binary-codec/tools/generateDefinitions.js`.\n *\n * See the definitions.test.js file for examples of how to create your own updated definitions.json.\n *\n * @param enums - A json encoding of the core types, transaction types, transaction results, transaction names, and fields.\n * @param types - A list of type objects with the same name as the fields defined.\n * You can use the coreTypes object if you are not adding new types.\n */\n constructor(\n enums: DefinitionsData,\n types: Record,\n ) {\n this.type = new BytesLookup(enums.TYPES, TYPE_WIDTH)\n this.ledgerEntryType = new BytesLookup(\n enums.LEDGER_ENTRY_TYPES,\n LEDGER_ENTRY_WIDTH,\n )\n this.transactionType = new BytesLookup(\n enums.TRANSACTION_TYPES,\n TRANSACTION_TYPE_WIDTH,\n )\n this.transactionResult = new BytesLookup(\n enums.TRANSACTION_RESULTS,\n TRANSACTION_RESULT_WIDTH,\n )\n this.field = new FieldLookup(\n enums.FIELDS as Array<[string, FieldInfo]>,\n enums.TYPES,\n )\n this.transactionNames = Object.entries(enums.TRANSACTION_TYPES)\n .filter(([_key, value]) => value >= 0)\n .map(([key, _value]) => key)\n\n this.dataTypes = {} // Filled in via associateTypes\n this.associateTypes(types)\n\n this.granularPermissions = {\n TrustlineAuthorize: 65537,\n TrustlineFreeze: 65538,\n TrustlineUnfreeze: 65539,\n AccountDomainSet: 65540,\n AccountEmailHashSet: 65541,\n AccountMessageKeySet: 65542,\n AccountTransferRateSet: 65543,\n AccountTickSizeSet: 65544,\n PaymentMint: 65545,\n PaymentBurn: 65546,\n MPTokenIssuanceLock: 65547,\n MPTokenIssuanceUnlock: 65548,\n }\n\n const incrementedTransactionTypes = Object.fromEntries(\n Object.entries(enums.TRANSACTION_TYPES).map(([key, value]) => [\n key,\n value + 1,\n ]),\n )\n const combinedPermissions = {\n ...this.granularPermissions,\n ...incrementedTransactionTypes,\n }\n this.delegatablePermissions = new BytesLookup(\n combinedPermissions,\n DELEGATABLE_PERMISSIONS_WIDTH,\n )\n }\n\n /**\n * Associates each Field to a corresponding class that TypeScript can recognize.\n *\n * @param types a list of type objects with the same name as the fields defined.\n * Defaults to xrpl.js's core type definitions.\n */\n public associateTypes(types: Record): void {\n // Overwrite any existing type definitions with the given types\n this.dataTypes = Object.assign({}, this.dataTypes, types)\n\n Object.values(this.field).forEach((field) => {\n field.associatedType = this.dataTypes[field.type.name]\n })\n\n this.field['TransactionType'].associatedType = this.transactionType\n this.field['TransactionResult'].associatedType = this.transactionResult\n this.field['LedgerEntryType'].associatedType = this.ledgerEntryType\n if (this.field['PermissionValue']) {\n this.field['PermissionValue'].associatedType = this.delegatablePermissions\n }\n }\n\n public getAssociatedTypes(): Record {\n return this.dataTypes\n }\n}\n\nexport {\n DefinitionsData,\n XrplDefinitionsBase,\n FieldLookup,\n FieldInfo,\n FieldInstance,\n Bytes,\n BytesLookup,\n}\n", "import enums from './definitions.json'\nimport {\n XrplDefinitionsBase,\n FieldInstance,\n Bytes,\n} from './xrpl-definitions-base'\n/**\n * By default, coreTypes from the `types` folder is where known type definitions are initialized to avoid import cycles.\n */\nconst DEFAULT_DEFINITIONS = new XrplDefinitionsBase(enums, {})\n\nconst Type = DEFAULT_DEFINITIONS.type\nconst LedgerEntryType = DEFAULT_DEFINITIONS.ledgerEntryType\nconst TransactionType = DEFAULT_DEFINITIONS.transactionType\nconst TransactionResult = DEFAULT_DEFINITIONS.transactionResult\nconst Field = DEFAULT_DEFINITIONS.field\n\n/*\n * @brief: All valid transaction types\n */\nconst TRANSACTION_TYPES = DEFAULT_DEFINITIONS.transactionNames\n\nexport {\n Bytes,\n XrplDefinitionsBase,\n DEFAULT_DEFINITIONS,\n Field,\n FieldInstance,\n Type,\n LedgerEntryType,\n TransactionResult,\n TransactionType,\n TRANSACTION_TYPES,\n}\n", "// Even though this comes from NodeJS it is valid in the browser\nimport TypedArray = NodeJS.TypedArray\n\n/**\n * Writes value to array at the specified offset. The value must be a valid unsigned 8-bit integer.\n * @param array Uint8Array to be written to\n * @param value Number to be written to array.\n * @param offset plus the number of bytes written.\n */\nexport function writeUInt8(\n array: Uint8Array,\n value: number,\n offset: number,\n): void {\n value = Number(value)\n array[offset] = value\n}\n\n/**\n * Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 16-bit integer.\n * @param array Uint8Array to be written to\n * @param value Number to be written to array.\n * @param offset plus the number of bytes written.\n */\nexport function writeUInt16BE(\n array: Uint8Array,\n value: number,\n offset: number,\n): void {\n value = Number(value)\n\n array[offset] = value >>> 8\n array[offset + 1] = value\n}\n\n/**\n * Writes value to array at the specified offset as big-endian. The value must be a valid unsigned 32-bit integer.\n * @param array Uint8Array to be written to\n * @param value Number to be written to array.\n * @param offset plus the number of bytes written.\n */\nexport function writeUInt32BE(\n array: Uint8Array,\n value: number,\n offset: number,\n): void {\n array[offset] = (value >>> 24) & 0xff\n array[offset + 1] = (value >>> 16) & 0xff\n array[offset + 2] = (value >>> 8) & 0xff\n array[offset + 3] = value & 0xff\n}\n\n/**\n * Writes a signed 32-bit integer to a Uint8Array at the specified offset (big-endian).\n *\n * @param array - The Uint8Array to write to.\n * @param value - The signed 32-bit integer to write.\n * @param offset - The offset at which to write.\n */\nexport function writeInt32BE(\n array: Uint8Array,\n value: number,\n offset: number,\n): void {\n new DataView(array.buffer, array.byteOffset, array.byteLength).setInt32(\n offset,\n value,\n false,\n )\n}\n\n/**\n * Writes a signed 64-bit integer (BigInt) to a Uint8Array at the specified offset (big-endian).\n *\n * @param array - The Uint8Array to write to.\n * @param value - The signed 64-bit integer (BigInt) to write.\n * @param offset - The offset at which to write.\n */\nexport function writeInt64BE(\n array: Uint8Array,\n value: bigint,\n offset: number,\n): void {\n new DataView(array.buffer, array.byteOffset, array.byteLength).setBigInt64(\n offset,\n value,\n false,\n )\n}\n\n/**\n * Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.\n * @param array Uint8Array to read\n * @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 2\n */\nexport function readUInt16BE(array: Uint8Array, offset: number): string {\n return new DataView(array.buffer).getUint16(offset, false).toString(10)\n}\n\n/**\n * Reads an unsigned, big-endian 16-bit integer from the array at the specified offset.\n * @param array Uint8Array to read\n * @param offset Number of bytes to skip before starting to read. Must satisfy 0 <= offset <= buf.length - 4\n */\nexport function readUInt32BE(array: Uint8Array, offset: number): string {\n return new DataView(array.buffer).getUint32(offset, false).toString(10)\n}\n\n/**\n * Reads a signed 32-bit integer from a Uint8Array at the specified offset (big-endian).\n *\n * @param array - The Uint8Array to read from.\n * @param offset - The offset at which to start reading.\n * @returns The signed 32-bit integer.\n */\nexport function readInt32BE(array: Uint8Array, offset: number): number {\n return new DataView(\n array.buffer,\n array.byteOffset,\n array.byteLength,\n ).getInt32(offset, false)\n}\n\n/**\n * Reads a signed 64-bit integer (BigInt) from a Uint8Array at the specified offset (big-endian).\n *\n * @param array - The Uint8Array to read from.\n * @param offset - The offset at which to start reading.\n * @returns The signed 64-bit integer (BigInt).\n */\nexport function readInt64BE(array: Uint8Array, offset: number): bigint {\n return new DataView(\n array.buffer,\n array.byteOffset,\n array.byteLength,\n ).getBigInt64(offset, false)\n}\n\n/**\n * Compares two Uint8Array or ArrayBuffers\n * @param a first array to compare\n * @param b second array to compare\n */\nexport function equal(\n a: Uint8Array | ArrayBuffer,\n b: Uint8Array | ArrayBuffer,\n): boolean {\n const aUInt = a instanceof ArrayBuffer ? new Uint8Array(a, 0) : a\n const bUInt = b instanceof ArrayBuffer ? new Uint8Array(b, 0) : b\n if (aUInt.byteLength != bUInt.byteLength) return false\n if (aligned32(aUInt) && aligned32(bUInt)) return compare32(aUInt, bUInt) === 0\n if (aligned16(aUInt) && aligned16(bUInt)) return compare16(aUInt, bUInt) === 0\n return compare8(aUInt, bUInt) === 0\n}\n\n/**\n * Compares two 8 bit aligned arrays\n * @param a first array to compare\n * @param b second array to compare\n */\nfunction compare8(a, b) {\n const ua = new Uint8Array(a.buffer, a.byteOffset, a.byteLength)\n const ub = new Uint8Array(b.buffer, b.byteOffset, b.byteLength)\n return compare(ua, ub)\n}\n\n/**\n * Compares two 16 bit aligned arrays\n * @param a first array to compare\n * @param b second array to compare\n */\nfunction compare16(a: Uint8Array, b: Uint8Array) {\n const ua = new Uint16Array(a.buffer, a.byteOffset, a.byteLength / 2)\n const ub = new Uint16Array(b.buffer, b.byteOffset, b.byteLength / 2)\n return compare(ua, ub)\n}\n\n/**\n * Compares two 32 bit aligned arrays\n * @param a first array to compare\n * @param b second array to compare\n */\nfunction compare32(a: Uint8Array, b: Uint8Array) {\n const ua = new Uint32Array(a.buffer, a.byteOffset, a.byteLength / 4)\n const ub = new Uint32Array(b.buffer, b.byteOffset, b.byteLength / 4)\n return compare(ua, ub)\n}\n\n/**\n * Compare two TypedArrays\n * @param a first array to compare\n * @param b second array to compare\n */\nexport function compare(a: TypedArray, b: TypedArray): 1 | -1 | 0 {\n if (a.byteLength !== b.byteLength) {\n throw new Error('Cannot compare arrays of different length')\n }\n\n for (let i = 0; i < a.length - 1; i += 1) {\n if (a[i] > b[i]) return 1\n if (a[i] < b[i]) return -1\n }\n return 0\n}\n\n/**\n * Determine if TypedArray is 16 bit aligned\n * @param array The array to check\n */\nfunction aligned16(array: TypedArray) {\n return array.byteOffset % 2 === 0 && array.byteLength % 2 === 0\n}\n\n/**\n * Determine if TypedArray is 32 bit aligned\n * @param array The array to check\n */\nfunction aligned32(array: TypedArray) {\n return array.byteOffset % 4 === 0 && array.byteLength % 4 === 0\n}\n", "import { Comparable } from './serialized-type'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { HEX_REGEX, hexToBytes } from '@xrplf/isomorphic/utils'\nimport { compare } from '../utils'\n\n/**\n * Base class defining how to encode and decode hashes\n */\nclass Hash extends Comparable {\n static readonly width: number\n\n constructor(bytes: Uint8Array) {\n super(bytes)\n if (this.bytes.length !== (this.constructor as typeof Hash).width) {\n throw new Error(`Invalid Hash length ${this.bytes.byteLength}`)\n }\n }\n\n /**\n * Construct a Hash object from an existing Hash object or a hex-string\n *\n * @param value A hash object or hex-string of a hash\n */\n static from(value: T): Hash {\n if (value instanceof this) {\n return value\n }\n\n if (typeof value === 'string') {\n if (!HEX_REGEX.test(value)) {\n throw new Error(`Invalid hash string ${value}`)\n }\n return new this(hexToBytes(value))\n }\n\n throw new Error('Cannot construct Hash from given value')\n }\n\n /**\n * Read a Hash object from a BinaryParser\n *\n * @param parser BinaryParser to read the hash from\n * @param hint length of the bytes to read, optional\n */\n static fromParser(parser: BinaryParser, hint?: number): Hash {\n return new this(parser.read(hint ?? this.width))\n }\n\n /**\n * Overloaded operator for comparing two hash objects\n *\n * @param other The Hash to compare this to\n */\n compareTo(other: Hash): number {\n return compare(\n this.bytes,\n (this.constructor as typeof Hash).from(other).bytes,\n )\n }\n\n /**\n * @returns the hex-string representation of this Hash\n */\n toString(): string {\n return this.toHex()\n }\n\n /**\n * Returns four bits at the specified depth within a hash\n *\n * @param depth The depth of the four bits\n * @returns The number represented by the four bits\n */\n nibblet(depth: number): number {\n const byteIx = depth > 0 ? (depth / 2) | 0 : 0\n let b = this.bytes[byteIx]\n if (depth % 2 === 0) {\n b = (b & 0xf0) >>> 4\n } else {\n b = b & 0x0f\n }\n return b\n }\n}\n\nexport { Hash }\n", "import { Hash } from './hash'\n\n/**\n * Hash with a width of 160 bits\n */\nclass Hash160 extends Hash {\n static readonly width = 20\n static readonly ZERO_160: Hash160 = new Hash160(new Uint8Array(Hash160.width))\n\n constructor(bytes?: Uint8Array) {\n if (bytes && bytes.byteLength === 0) {\n bytes = Hash160.ZERO_160.bytes\n }\n\n super(bytes ?? Hash160.ZERO_160.bytes)\n }\n}\n\nexport { Hash160 }\n", "import {\n decodeAccountID,\n encodeAccountID,\n isValidXAddress,\n xAddressToClassicAddress,\n} from 'ripple-address-codec'\nimport { Hash160 } from './hash-160'\nimport { hexToBytes } from '@xrplf/isomorphic/utils'\n\nconst HEX_REGEX = /^[A-F0-9]{40}$/\n\n/**\n * Class defining how to encode and decode an AccountID\n */\nclass AccountID extends Hash160 {\n static readonly defaultAccountID: AccountID = new AccountID(\n new Uint8Array(20),\n )\n\n constructor(bytes?: Uint8Array) {\n super(bytes ?? AccountID.defaultAccountID.bytes)\n }\n\n /**\n * Defines how to construct an AccountID\n *\n * @param value either an existing AccountID, a hex-string, or a base58 r-Address\n * @returns an AccountID object\n */\n static from(value: T): AccountID {\n if (value instanceof AccountID) {\n return value\n }\n\n if (typeof value === 'string') {\n if (value === '') {\n return new AccountID()\n }\n\n return HEX_REGEX.test(value)\n ? new AccountID(hexToBytes(value))\n : this.fromBase58(value)\n }\n\n throw new Error('Cannot construct AccountID from value given')\n }\n\n /**\n * Defines how to build an AccountID from a base58 r-Address\n *\n * @param value a base58 r-Address\n * @returns an AccountID object\n */\n static fromBase58(value: string): AccountID {\n if (isValidXAddress(value)) {\n const classic = xAddressToClassicAddress(value)\n\n if (classic.tag !== false)\n throw new Error('Only allowed to have tag on Account or Destination')\n\n value = classic.classicAddress\n }\n\n return new AccountID(Uint8Array.from(decodeAccountID(value)))\n }\n\n /**\n * Overload of toJSON\n *\n * @returns the base58 string for this AccountID\n */\n toJSON(): string {\n return this.toBase58()\n }\n\n /**\n * Defines how to encode AccountID into a base58 address\n *\n * @returns the base58 string defined by this.bytes\n */\n toBase58(): string {\n return encodeAccountID(this.bytes)\n }\n}\n\nexport { AccountID }\n", "import {\n XrplDefinitionsBase,\n DEFAULT_DEFINITIONS,\n FieldInstance,\n} from '../enums'\nimport { type SerializedType } from '../types/serialized-type'\nimport { hexToBytes } from '@xrplf/isomorphic/utils'\n\n/**\n * BinaryParser is used to compute fields and values from a HexString\n */\nclass BinaryParser {\n private bytes: Uint8Array\n definitions: XrplDefinitionsBase\n\n /**\n * Initialize bytes to a hex string\n *\n * @param hexBytes a hex string\n * @param definitions Rippled definitions used to parse the values of transaction types and such.\n * Can be customized for sidechains and amendments.\n */\n constructor(\n hexBytes: string,\n definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n ) {\n this.bytes = hexToBytes(hexBytes)\n this.definitions = definitions\n }\n\n /**\n * Peek the first byte of the BinaryParser\n *\n * @returns The first byte of the BinaryParser\n */\n peek(): number {\n if (this.bytes.byteLength === 0) {\n throw new Error()\n }\n return this.bytes[0]\n }\n\n /**\n * Consume the first n bytes of the BinaryParser\n *\n * @param n the number of bytes to skip\n */\n skip(n: number): void {\n if (n > this.bytes.byteLength) {\n throw new Error()\n }\n this.bytes = this.bytes.slice(n)\n }\n\n /**\n * read the first n bytes from the BinaryParser\n *\n * @param n The number of bytes to read\n * @return The bytes\n */\n read(n: number): Uint8Array {\n if (n > this.bytes.byteLength) {\n throw new Error()\n }\n\n const slice = this.bytes.slice(0, n)\n this.skip(n)\n return slice\n }\n\n /**\n * Read an integer of given size\n *\n * @param n The number of bytes to read\n * @return The number represented by those bytes\n */\n readUIntN(n: number): number {\n if (0 >= n || n > 4) {\n throw new Error('invalid n')\n }\n return this.read(n).reduce((a, b) => (a << 8) | b) >>> 0\n }\n\n readUInt8(): number {\n return this.readUIntN(1)\n }\n\n readUInt16(): number {\n return this.readUIntN(2)\n }\n\n readUInt32(): number {\n return this.readUIntN(4)\n }\n\n size(): number {\n return this.bytes.byteLength\n }\n\n end(customEnd?: number): boolean {\n const length = this.bytes.byteLength\n return length === 0 || (customEnd !== undefined && length <= customEnd)\n }\n\n /**\n * Reads variable length encoded bytes\n *\n * @return The variable length bytes\n */\n readVariableLength(): Uint8Array {\n return this.read(this.readVariableLengthLength())\n }\n\n /**\n * Reads the length of the variable length encoded bytes\n *\n * @return The length of the variable length encoded bytes\n */\n readVariableLengthLength(): number {\n const b1 = this.readUInt8()\n if (b1 <= 192) {\n return b1\n } else if (b1 <= 240) {\n const b2 = this.readUInt8()\n return 193 + (b1 - 193) * 256 + b2\n } else if (b1 <= 254) {\n const b2 = this.readUInt8()\n const b3 = this.readUInt8()\n return 12481 + (b1 - 241) * 65536 + b2 * 256 + b3\n }\n throw new Error('Invalid variable length indicator')\n }\n\n /**\n * Reads the field ordinal from the BinaryParser\n *\n * @return Field ordinal\n */\n readFieldOrdinal(): number {\n let type = this.readUInt8()\n let nth = type & 15\n type >>= 4\n\n if (type === 0) {\n type = this.readUInt8()\n if (type === 0 || type < 16) {\n throw new Error(\n `Cannot read FieldOrdinal, type_code ${type} out of range`,\n )\n }\n }\n\n if (nth === 0) {\n nth = this.readUInt8()\n if (nth === 0 || nth < 16) {\n throw new Error(\n `Cannot read FieldOrdinal, field_code ${nth} out of range`,\n )\n }\n }\n\n return (type << 16) | nth\n }\n\n /**\n * Read the field from the BinaryParser\n *\n * @return The field represented by the bytes at the head of the BinaryParser\n */\n readField(): FieldInstance {\n return this.definitions.field.fromString(this.readFieldOrdinal().toString())\n }\n\n /**\n * Read a given type from the BinaryParser\n *\n * @param type The type that you want to read from the BinaryParser\n * @return The instance of that type read from the BinaryParser\n */\n readType(type: typeof SerializedType): SerializedType {\n return type.fromParser(this)\n }\n\n /**\n * Get the type associated with a given field\n *\n * @param field The field that you wan to get the type of\n * @return The type associated with the given field\n */\n typeForField(field: FieldInstance): typeof SerializedType {\n return field.associatedType\n }\n\n /**\n * Read value of the type specified by field from the BinaryParser\n *\n * @param field The field that you want to get the associated value for\n * @return The value associated with the given field\n */\n readFieldValue(field: FieldInstance): SerializedType {\n const type = this.typeForField(field)\n if (!type) {\n throw new Error(`unsupported: (${field.name}, ${field.type.name})`)\n }\n const sizeHint = field.isVariableLengthEncoded\n ? this.readVariableLengthLength()\n : undefined\n const value = type.fromParser(this, sizeHint)\n if (value === undefined) {\n throw new Error(\n `fromParser for (${field.name}, ${field.type.name}) -> undefined `,\n )\n }\n return value\n }\n\n /**\n * Get the next field and value from the BinaryParser\n *\n * @return The field and value\n */\n readFieldAndValue(): [FieldInstance, SerializedType] {\n const field = this.readField()\n return [field, this.readFieldValue(field)]\n }\n}\n\nexport { BinaryParser }\n", "import { Hash160 } from './hash-160'\nimport { bytesToHex, hexToBytes, hexToString } from '@xrplf/isomorphic/utils'\n\nconst XRP_HEX_REGEX = /^0{40}$/\nconst ISO_REGEX = /^[A-Z0-9a-z?!@#$%^&*(){}[\\]|]{3}$/\nconst HEX_REGEX = /^[A-F0-9]{40}$/\n// eslint-disable-next-line no-control-regex\nconst STANDARD_FORMAT_HEX_REGEX = /^0{24}[\\x00-\\x7F]{6}0{10}$/\n\n/**\n * Convert an ISO code to a currency bytes representation\n */\nfunction isoToBytes(iso: string): Uint8Array {\n const bytes = new Uint8Array(20)\n if (iso !== 'XRP') {\n const isoBytes = iso.split('').map((c) => c.charCodeAt(0))\n bytes.set(isoBytes, 12)\n }\n return bytes\n}\n\n/**\n * Tests if ISO is a valid iso code\n */\nfunction isIsoCode(iso: string): boolean {\n return ISO_REGEX.test(iso)\n}\n\nfunction isoCodeFromHex(code: Uint8Array): string | null {\n const iso = hexToString(bytesToHex(code))\n if (iso === 'XRP') {\n return null\n }\n if (isIsoCode(iso)) {\n return iso\n }\n return null\n}\n\n/**\n * Tests if hex is a valid hex-string\n */\nfunction isHex(hex: string): boolean {\n return HEX_REGEX.test(hex)\n}\n\n/**\n * Tests if a string is a valid representation of a currency\n */\nfunction isStringRepresentation(input: string): boolean {\n return input.length === 3 || isHex(input)\n}\n\n/**\n * Tests if a Uint8Array is a valid representation of a currency\n */\nfunction isBytesArray(bytes: Uint8Array): boolean {\n return bytes.byteLength === 20\n}\n\n/**\n * Ensures that a value is a valid representation of a currency\n */\nfunction isValidRepresentation(input: Uint8Array | string): boolean {\n return input instanceof Uint8Array\n ? isBytesArray(input)\n : isStringRepresentation(input)\n}\n\n/**\n * Generate bytes from a string or UInt8Array representation of a currency\n */\nfunction bytesFromRepresentation(input: string): Uint8Array {\n if (!isValidRepresentation(input)) {\n throw new Error(`Unsupported Currency representation: ${input}`)\n }\n return input.length === 3 ? isoToBytes(input) : hexToBytes(input)\n}\n\n/**\n * Class defining how to encode and decode Currencies\n */\nclass Currency extends Hash160 {\n static readonly XRP = new Currency(new Uint8Array(20))\n private readonly _iso: string | null\n\n constructor(byteBuf: Uint8Array) {\n super(byteBuf ?? Currency.XRP.bytes)\n const hex = bytesToHex(this.bytes)\n\n if (XRP_HEX_REGEX.test(hex)) {\n this._iso = 'XRP'\n } else if (STANDARD_FORMAT_HEX_REGEX.test(hex)) {\n this._iso = isoCodeFromHex(this.bytes.slice(12, 15))\n } else {\n this._iso = null\n }\n }\n\n /**\n * Return the ISO code of this currency\n *\n * @returns ISO code if it exists, else null\n */\n iso(): string | null {\n return this._iso\n }\n\n /**\n * Constructs a Currency object\n *\n * @param val Currency object or a string representation of a currency\n */\n static from(value: T): Currency {\n if (value instanceof Currency) {\n return value\n }\n\n if (typeof value === 'string') {\n return new Currency(bytesFromRepresentation(value))\n }\n\n throw new Error('Cannot construct Currency from value given')\n }\n\n /**\n * Gets the JSON representation of a currency\n *\n * @returns JSON representation\n */\n toJSON(): string {\n const iso = this.iso()\n if (iso !== null) {\n return iso\n }\n return bytesToHex(this.bytes)\n }\n}\n\nexport { Currency }\n", "import { Hash } from './hash'\n\n/**\n * Hash with a width of 192 bits\n */\nclass Hash192 extends Hash {\n static readonly width = 24\n static readonly ZERO_192: Hash192 = new Hash192(new Uint8Array(Hash192.width))\n\n constructor(bytes?: Uint8Array) {\n if (bytes && bytes.byteLength === 0) {\n bytes = Hash192.ZERO_192.bytes\n }\n\n super(bytes ?? Hash192.ZERO_192.bytes)\n }\n}\n\nexport { Hash192 }\n", "import { BinaryParser } from '../serdes/binary-parser'\n\nimport { AccountID } from './account-id'\nimport { Currency } from './currency'\nimport { JsonObject, SerializedType } from './serialized-type'\nimport BigNumber from 'bignumber.js'\nimport { bytesToHex, concat, hexToBytes } from '@xrplf/isomorphic/utils'\nimport { readUInt32BE, writeUInt32BE } from '../utils'\nimport { Hash192 } from './hash-192'\n\n/**\n * Constants for validating amounts\n */\nconst MIN_IOU_EXPONENT = -96\nconst MAX_IOU_EXPONENT = 80\nconst MAX_IOU_PRECISION = 16\nconst MAX_DROPS = new BigNumber('1e17')\nconst MIN_XRP = new BigNumber('1e-6')\nconst mask = BigInt(0x00000000ffffffff)\nconst mptMask = BigInt(0x8000000000000000)\n\n/**\n * BigNumber configuration for Amount IOUs\n */\nBigNumber.config({\n EXPONENTIAL_AT: [\n MIN_IOU_EXPONENT - MAX_IOU_PRECISION,\n MAX_IOU_EXPONENT + MAX_IOU_PRECISION,\n ],\n})\n\ninterface AmountObjectIOU extends JsonObject {\n value: string\n currency: string\n issuer: string\n}\n\ninterface AmountObjectMPT extends JsonObject {\n value: string\n mpt_issuance_id: string\n}\n\n/**\n * Interface for JSON objects that represent amounts\n */\ntype AmountObject = AmountObjectIOU | AmountObjectMPT\n\n/**\n * Type guard for AmountObjectIOU\n */\nfunction isAmountObjectIOU(arg): arg is AmountObjectIOU {\n const keys = Object.keys(arg).sort()\n\n return (\n keys.length === 3 &&\n keys[0] === 'currency' &&\n keys[1] === 'issuer' &&\n keys[2] === 'value'\n )\n}\n\n/**\n * Type guard for AmountObjectMPT\n */\nfunction isAmountObjectMPT(arg): arg is AmountObjectMPT {\n const keys = Object.keys(arg).sort()\n\n return (\n keys.length === 2 && keys[0] === 'mpt_issuance_id' && keys[1] === 'value'\n )\n}\n\n/**\n * Class for serializing/Deserializing Amounts\n */\nclass Amount extends SerializedType {\n static defaultAmount: Amount = new Amount(hexToBytes('4000000000000000'))\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? Amount.defaultAmount.bytes)\n }\n\n /**\n * Construct an amount from an IOU, MPT or string amount\n *\n * @param value An Amount, object representing an IOU, or a string\n * representing an integer amount\n * @returns An Amount object\n */\n static from(value: T): Amount {\n if (value instanceof Amount) {\n return value\n }\n\n let amount = new Uint8Array(8)\n if (typeof value === 'string') {\n Amount.assertXrpIsValid(value)\n\n const number = BigInt(value)\n\n const intBuf = [new Uint8Array(4), new Uint8Array(4)]\n writeUInt32BE(intBuf[0], Number(number >> BigInt(32)), 0)\n writeUInt32BE(intBuf[1], Number(number & BigInt(mask)), 0)\n\n amount = concat(intBuf)\n\n amount[0] |= 0x40\n\n return new Amount(amount)\n }\n\n if (isAmountObjectIOU(value)) {\n const number = new BigNumber(value.value)\n Amount.assertIouIsValid(number)\n\n if (number.isZero()) {\n amount[0] |= 0x80\n } else {\n const integerNumberString = number\n .times(`1e${-((number.e || 0) - 15)}`)\n .abs()\n .toString()\n\n const num = BigInt(integerNumberString)\n const intBuf = [new Uint8Array(4), new Uint8Array(4)]\n writeUInt32BE(intBuf[0], Number(num >> BigInt(32)), 0)\n writeUInt32BE(intBuf[1], Number(num & BigInt(mask)), 0)\n\n amount = concat(intBuf)\n\n amount[0] |= 0x80\n\n if (number.gt(new BigNumber(0))) {\n amount[0] |= 0x40\n }\n\n const exponent = (number.e || 0) - 15\n const exponentByte = 97 + exponent\n amount[0] |= exponentByte >>> 2\n amount[1] |= (exponentByte & 0x03) << 6\n }\n\n const currency = Currency.from(value.currency).toBytes()\n const issuer = AccountID.from(value.issuer).toBytes()\n return new Amount(concat([amount, currency, issuer]))\n }\n\n if (isAmountObjectMPT(value)) {\n Amount.assertMptIsValid(value.value)\n\n let leadingByte = new Uint8Array(1)\n leadingByte[0] |= 0x60\n\n const num = BigInt(value.value)\n\n const intBuf = [new Uint8Array(4), new Uint8Array(4)]\n writeUInt32BE(intBuf[0], Number(num >> BigInt(32)), 0)\n writeUInt32BE(intBuf[1], Number(num & BigInt(mask)), 0)\n\n amount = concat(intBuf)\n\n const mptIssuanceID = Hash192.from(value.mpt_issuance_id).toBytes()\n return new Amount(concat([leadingByte, amount, mptIssuanceID]))\n }\n\n throw new Error('Invalid type to construct an Amount')\n }\n\n /**\n * Read an amount from a BinaryParser\n *\n * @param parser BinaryParser to read the Amount from\n * @returns An Amount object\n */\n static fromParser(parser: BinaryParser): Amount {\n const isIOU = parser.peek() & 0x80\n if (isIOU) return new Amount(parser.read(48))\n\n // the amount can be either MPT or XRP at this point\n const isMPT = parser.peek() & 0x20\n const numBytes = isMPT ? 33 : 8\n return new Amount(parser.read(numBytes))\n }\n\n /**\n * Get the JSON representation of this Amount\n *\n * @returns the JSON interpretation of this.bytes\n */\n toJSON(): AmountObject | string {\n if (this.isNative()) {\n const bytes = this.bytes\n const isPositive = bytes[0] & 0x40\n const sign = isPositive ? '' : '-'\n bytes[0] &= 0x3f\n\n const msb = BigInt(readUInt32BE(bytes.slice(0, 4), 0))\n const lsb = BigInt(readUInt32BE(bytes.slice(4), 0))\n const num = (msb << BigInt(32)) | lsb\n\n return `${sign}${num.toString()}`\n }\n\n if (this.isIOU()) {\n const parser = new BinaryParser(this.toString())\n const mantissa = parser.read(8)\n const currency = Currency.fromParser(parser) as Currency\n const issuer = AccountID.fromParser(parser) as AccountID\n\n const b1 = mantissa[0]\n const b2 = mantissa[1]\n\n const isPositive = b1 & 0x40\n const sign = isPositive ? '' : '-'\n const exponent = ((b1 & 0x3f) << 2) + ((b2 & 0xff) >> 6) - 97\n\n mantissa[0] = 0\n mantissa[1] &= 0x3f\n const value = new BigNumber(`${sign}0x${bytesToHex(mantissa)}`).times(\n `1e${exponent}`,\n )\n Amount.assertIouIsValid(value)\n\n return {\n value: value.toString(),\n currency: currency.toJSON(),\n issuer: issuer.toJSON(),\n }\n }\n\n if (this.isMPT()) {\n const parser = new BinaryParser(this.toString())\n const leadingByte = parser.read(1)\n const amount = parser.read(8)\n const mptID = Hash192.fromParser(parser) as Hash192\n\n const isPositive = leadingByte[0] & 0x40\n const sign = isPositive ? '' : '-'\n\n const msb = BigInt(readUInt32BE(amount.slice(0, 4), 0))\n const lsb = BigInt(readUInt32BE(amount.slice(4), 0))\n const num = (msb << BigInt(32)) | lsb\n\n return {\n value: `${sign}${num.toString()}`,\n mpt_issuance_id: mptID.toString(),\n }\n }\n\n throw new Error('Invalid amount to construct JSON')\n }\n\n /**\n * Validate XRP amount\n *\n * @param amount String representing XRP amount\n * @returns void, but will throw if invalid amount\n */\n private static assertXrpIsValid(amount: string): void {\n if (amount.indexOf('.') !== -1) {\n throw new Error(`${amount.toString()} is an illegal amount`)\n }\n\n const decimal = new BigNumber(amount)\n if (!decimal.isZero()) {\n if (decimal.lt(MIN_XRP) || decimal.gt(MAX_DROPS)) {\n throw new Error(`${amount.toString()} is an illegal amount`)\n }\n }\n }\n\n /**\n * Validate IOU.value amount\n *\n * @param decimal BigNumber object representing IOU.value\n * @returns void, but will throw if invalid amount\n */\n private static assertIouIsValid(decimal: BigNumber): void {\n if (!decimal.isZero()) {\n const p = decimal.precision()\n const e = (decimal.e || 0) - 15\n if (\n p > MAX_IOU_PRECISION ||\n e > MAX_IOU_EXPONENT ||\n e < MIN_IOU_EXPONENT\n ) {\n throw new Error('Decimal precision out of range')\n }\n this.verifyNoDecimal(decimal)\n }\n }\n\n /**\n * Validate MPT.value amount\n *\n * @param decimal BigNumber object representing MPT.value\n * @returns void, but will throw if invalid amount\n */\n private static assertMptIsValid(amount: string): void {\n if (amount.indexOf('.') !== -1) {\n throw new Error(`${amount.toString()} is an illegal amount`)\n }\n\n const decimal = new BigNumber(amount)\n if (!decimal.isZero()) {\n if (decimal < BigNumber(0)) {\n throw new Error(`${amount.toString()} is an illegal amount`)\n }\n\n if (Number(BigInt(amount) & BigInt(mptMask)) != 0) {\n throw new Error(`${amount.toString()} is an illegal amount`)\n }\n }\n }\n\n /**\n * Ensure that the value after being multiplied by the exponent does not\n * contain a decimal.\n *\n * @param decimal a Decimal object\n * @returns a string of the object without a decimal\n */\n private static verifyNoDecimal(decimal: BigNumber): void {\n const integerNumberString = decimal\n .times(`1e${-((decimal.e || 0) - 15)}`)\n .abs()\n .toString()\n\n if (integerNumberString.indexOf('.') !== -1) {\n throw new Error('Decimal place found in integerNumberString')\n }\n }\n\n /**\n * Test if this amount is in units of Native Currency(XRP)\n *\n * @returns true if Native (XRP)\n */\n private isNative(): boolean {\n return (this.bytes[0] & 0x80) === 0 && (this.bytes[0] & 0x20) === 0\n }\n\n /**\n * Test if this amount is in units of MPT\n *\n * @returns true if MPT\n */\n private isMPT(): boolean {\n return (this.bytes[0] & 0x80) === 0 && (this.bytes[0] & 0x20) !== 0\n }\n\n /**\n * Test if this amount is in units of IOU\n *\n * @returns true if IOU\n */\n private isIOU(): boolean {\n return (this.bytes[0] & 0x80) !== 0\n }\n}\n\nexport { Amount, AmountObject }\n", "import { SerializedType } from './serialized-type'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { hexToBytes } from '@xrplf/isomorphic/utils'\n\n/**\n * Variable length encoded type\n */\nclass Blob extends SerializedType {\n constructor(bytes: Uint8Array) {\n super(bytes)\n }\n\n /**\n * Defines how to read a Blob from a BinaryParser\n *\n * @param parser The binary parser to read the Blob from\n * @param hint The length of the blob, computed by readVariableLengthLength() and passed in\n * @returns A Blob object\n */\n static fromParser(parser: BinaryParser, hint: number): Blob {\n return new Blob(parser.read(hint))\n }\n\n /**\n * Create a Blob object from a hex-string\n *\n * @param value existing Blob object or a hex-string\n * @returns A Blob object\n */\n static from(value: T): Blob {\n if (value instanceof Blob) {\n return value\n }\n\n if (typeof value === 'string') {\n if (!/^[A-F0-9]*$/iu.test(value)) {\n throw new Error('Cannot construct Blob from a non-hex string')\n }\n return new Blob(hexToBytes(value))\n }\n\n throw new Error('Cannot construct Blob from value given')\n }\n}\n\nexport { Blob }\n", "import { Hash } from './hash'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\n/**\n * Hash with a width of 128 bits\n */\nclass Hash128 extends Hash {\n static readonly width = 16\n static readonly ZERO_128: Hash128 = new Hash128(new Uint8Array(Hash128.width))\n\n constructor(bytes: Uint8Array) {\n if (bytes && bytes.byteLength === 0) {\n bytes = Hash128.ZERO_128.bytes\n }\n\n super(bytes ?? Hash128.ZERO_128.bytes)\n }\n\n /**\n * Get the hex representation of a hash-128 bytes, allowing unset\n *\n * @returns hex String of this.bytes\n */\n toHex(): string {\n const hex = bytesToHex(this.toBytes())\n if (/^0+$/.exec(hex)) {\n return ''\n }\n return hex\n }\n}\n\nexport { Hash128 }\n", "import { Hash } from './hash'\n\n/**\n * Hash with a width of 256 bits\n */\nclass Hash256 extends Hash {\n static readonly width = 32\n static readonly ZERO_256 = new Hash256(new Uint8Array(Hash256.width))\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? Hash256.ZERO_256.bytes)\n }\n}\n\nexport { Hash256 }\n", "import { bytesToHex, concat } from '@xrplf/isomorphic/utils'\nimport { BinaryParser } from '../serdes/binary-parser'\n\nimport { AccountID } from './account-id'\nimport { Currency } from './currency'\nimport { JsonObject, SerializedType } from './serialized-type'\nimport { Hash192 } from './hash-192'\nimport { readUInt32BE, writeUInt32BE } from '../utils'\n\ninterface XRPIssue extends JsonObject {\n currency: string\n}\n\ninterface IOUIssue extends JsonObject {\n currency: string\n issuer: string\n}\ninterface MPTIssue extends JsonObject {\n mpt_issuance_id: string\n}\n/**\n * Interface for JSON objects that represent issues\n */\ntype IssueObject = XRPIssue | IOUIssue | MPTIssue\n\n/**\n * Type guard for Issue Object\n */\nfunction isIssueObject(arg): arg is IssueObject {\n const keys = Object.keys(arg).sort()\n const isXRP = keys.length === 1 && keys[0] === 'currency'\n const isIOU =\n keys.length === 2 && keys[0] === 'currency' && keys[1] === 'issuer'\n const isMPT = keys.length === 1 && keys[0] === 'mpt_issuance_id'\n\n return isXRP || isIOU || isMPT\n}\n\nconst MPT_WIDTH = 44\nconst NO_ACCOUNT = AccountID.from('0000000000000000000000000000000000000001')\n\n/**\n * Class for serializing/Deserializing Issue\n */\nclass Issue extends SerializedType {\n static readonly XRP_ISSUE: Issue = new Issue(new Uint8Array(20))\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? Issue.XRP_ISSUE.bytes)\n }\n\n /**\n * Construct Issue from XRPIssue, IOUIssue or MPTIssue\n *\n * @param value An object representing an XRPIssue, IOUIssue or MPTIssue\n * @returns An Issue object\n */\n static from(value: T): Issue {\n if (value instanceof Issue) {\n return value\n }\n\n if (isIssueObject(value)) {\n if (value.currency) {\n const currency = Currency.from(value.currency.toString()).toBytes()\n\n //IOU case\n if (value.issuer) {\n const issuer = AccountID.from(value.issuer.toString()).toBytes()\n return new Issue(concat([currency, issuer]))\n }\n\n //XRP case\n return new Issue(currency)\n }\n\n // MPT case\n if (value.mpt_issuance_id) {\n const mptIssuanceIdBytes = Hash192.from(\n value.mpt_issuance_id.toString(),\n ).toBytes()\n const issuerAccount = mptIssuanceIdBytes.slice(4)\n const sequence = Number(readUInt32BE(mptIssuanceIdBytes.slice(0, 4), 0)) // sequence is in Big-endian format in mpt_issuance_id\n\n // Convert to Little-endian\n const sequenceBuffer = new Uint8Array(4)\n new DataView(sequenceBuffer.buffer).setUint32(0, sequence, true)\n\n return new Issue(\n concat([issuerAccount, NO_ACCOUNT.toBytes(), sequenceBuffer]),\n )\n }\n }\n\n throw new Error('Invalid type to construct an Issue')\n }\n\n /**\n * Read Issue from a BinaryParser\n *\n * @param parser BinaryParser to read the Issue from\n *\n * @returns An Issue object\n */\n static fromParser(parser: BinaryParser): Issue {\n // XRP\n const currencyOrAccount = parser.read(20)\n if (new Currency(currencyOrAccount).toJSON() === 'XRP') {\n return new Issue(currencyOrAccount)\n }\n\n // MPT\n const issuerAccountId = new AccountID(parser.read(20))\n if (NO_ACCOUNT.toHex() === issuerAccountId.toHex()) {\n const sequence = parser.read(4)\n return new Issue(\n concat([currencyOrAccount, NO_ACCOUNT.toBytes(), sequence]),\n )\n }\n\n // IOU\n return new Issue(concat([currencyOrAccount, issuerAccountId.toBytes()]))\n }\n\n /**\n * Get the JSON representation of this IssueObject\n *\n * @returns the JSON interpretation of this.bytes\n */\n toJSON(): IssueObject {\n // If the buffer is exactly 44 bytes, treat it as an MPTIssue.\n if (this.toBytes().length === MPT_WIDTH) {\n const issuerAccount = this.toBytes().slice(0, 20)\n const sequence = new DataView(this.toBytes().slice(40).buffer).getUint32(\n 0,\n true,\n )\n\n // sequence part of mpt_issuance_id should be in Big-endian\n const sequenceBuffer = new Uint8Array(4)\n writeUInt32BE(sequenceBuffer, sequence, 0)\n\n return {\n mpt_issuance_id: bytesToHex(concat([sequenceBuffer, issuerAccount])),\n }\n }\n\n const parser = new BinaryParser(this.toString())\n\n const currency = Currency.fromParser(parser) as Currency\n if (currency.toJSON() === 'XRP') {\n return { currency: currency.toJSON() }\n }\n const issuer = AccountID.fromParser(parser) as AccountID\n\n return {\n currency: currency.toJSON(),\n issuer: issuer.toJSON(),\n }\n }\n}\n\nexport { Issue, IssueObject }\n", "import { BinaryParser } from '../serdes/binary-parser'\nimport { SerializedType } from './serialized-type'\nimport { writeInt32BE, writeInt64BE, readInt32BE, readInt64BE } from '../utils'\n\n/**\n * Constants for mantissa and exponent normalization per XRPL Number spec.\n * These define allowed magnitude for mantissa and exponent after normalization.\n */\nconst MIN_MANTISSA = BigInt('1000000000000000')\nconst MAX_MANTISSA = BigInt('9999999999999999')\nconst MIN_EXPONENT = -32768\nconst MAX_EXPONENT = 32768\nconst DEFAULT_VALUE_EXPONENT = -2147483648\n\n/**\n * Extract mantissa, exponent, and sign from a number string.\n *\n * @param val - The string representing the number (may be integer, decimal, or scientific notation).\n * @returns Object containing mantissa (BigInt), exponent (number), and isNegative (boolean).\n * @throws Error if the string cannot be parsed as a valid number.\n *\n * Examples:\n * '123' -> { mantissa: 123n, exponent: 0, isNegative: false }\n * '-00123.45' -> { mantissa: -12345n, exponent: -2, isNegative: true }\n * '+7.1e2' -> { mantissa: 71n, exponent: -1 + 2 = 1, isNegative: false }\n */\nfunction extractNumberPartsFromString(val: string): {\n mantissa: bigint\n exponent: number\n isNegative: boolean\n} {\n /**\n * Regex for parsing decimal/float/scientific number strings with optional sign, integer, decimal, and exponent parts.\n *\n * Pattern: /^([-+]?)([0-9]+)(?:\\.([0-9]+))?(?:[eE]([+-]?[0-9]+))?$/\n *\n * Breakdown:\n * 1. ([-+]?) - Optional '+' or '-' sign at the start.\n * 2. ([0-9]+) - Integer part: one or more digits (leading zeros allowed).\n * 3. (?:\\.([0-9]+))? - Optional decimal point followed by one or more digits.\n * 4. (?:[eE]([+-]?[0-9]+))? - Optional exponent, starting with 'e' or 'E', optional sign, and digits.\n *\n * Notes:\n * - Leading zeros are accepted and normalized by code after parsing.\n * - Empty decimal ('123.') and missing integer ('.456') are NOT matched\u2014must be fully specified.\n */\n // eslint-disable-next-line prefer-named-capture-group\n const regex = /^([-+]?)([0-9]+)(?:\\.([0-9]+))?(?:[eE]([+-]?[0-9]+))?$/\n const match = regex.exec(val)\n if (!match) throw new Error(`Unable to parse number from string: ${val}`)\n\n const [, sign, intPart, fracPart, expPart] = match\n // Remove leading zeros (unless the entire intPart is zeros)\n const cleanIntPart = intPart.replace(/^0+(?=\\d)/, '') || '0'\n\n let mantissaStr = cleanIntPart\n let exponent = 0\n\n if (fracPart) {\n mantissaStr += fracPart\n exponent -= fracPart.length\n }\n if (expPart) exponent += parseInt(expPart, 10)\n\n let mantissa = BigInt(mantissaStr)\n if (sign === '-') mantissa = -mantissa\n const isNegative = mantissa < BigInt(0)\n\n return { mantissa, exponent, isNegative }\n}\n\n/**\n * Normalize the mantissa and exponent to XRPL constraints.\n *\n * Ensures that after normalization, the mantissa is between MIN_MANTISSA and MAX_MANTISSA (unless zero).\n * Adjusts the exponent as needed by shifting the mantissa left/right (multiplying/dividing by 10).\n *\n * @param mantissa - The unnormalized mantissa (BigInt).\n * @param exponent - The unnormalized exponent (number).\n * @returns An object with normalized mantissa and exponent.\n * @throws Error if the number cannot be normalized within allowed exponent range.\n */\nfunction normalize(\n mantissa: bigint,\n exponent: number,\n): { mantissa: bigint; exponent: number } {\n let m = mantissa < BigInt(0) ? -mantissa : mantissa\n const isNegative = mantissa < BigInt(0)\n\n while (m !== BigInt(0) && m < MIN_MANTISSA && exponent > MIN_EXPONENT) {\n exponent -= 1\n m *= BigInt(10)\n }\n while (m > MAX_MANTISSA) {\n if (exponent >= MAX_EXPONENT)\n throw new Error('Mantissa and exponent are too large')\n exponent += 1\n m /= BigInt(10)\n }\n if (isNegative) m = -m\n return { mantissa: m, exponent }\n}\n\n/**\n * STNumber: Encodes XRPL's \"Number\" type.\n *\n * - Always encoded as 12 bytes: 8-byte signed mantissa, 4-byte signed exponent, both big-endian.\n * - Can only be constructed from a valid number string or another STNumber instance.\n *\n * Usage:\n * STNumber.from(\"1.2345e5\")\n * STNumber.from(\"-123\")\n * STNumber.fromParser(parser)\n */\nexport class STNumber extends SerializedType {\n /** 12 zero bytes, represents canonical zero. */\n static defaultBytes = new Uint8Array(12)\n\n /**\n * Construct a STNumber from 12 bytes (8 for mantissa, 4 for exponent).\n * @param bytes - 12-byte Uint8Array\n * @throws Error if input is not a Uint8Array of length 12.\n */\n constructor(bytes?: Uint8Array) {\n const used = bytes ?? STNumber.defaultBytes\n if (!(used instanceof Uint8Array) || used.length !== 12) {\n throw new Error(\n `STNumber must be constructed from a 12-byte Uint8Array, got ${used?.length}`,\n )\n }\n super(used)\n }\n\n /**\n * Construct from a number string (or another STNumber).\n *\n * @param value - A string, or STNumber instance.\n * @returns STNumber instance.\n * @throws Error if not a string or STNumber.\n */\n static from(value: unknown): STNumber {\n if (value instanceof STNumber) {\n return value\n }\n if (typeof value === 'string') {\n return STNumber.fromValue(value)\n }\n throw new Error(\n 'STNumber.from: Only string or STNumber instance is supported',\n )\n }\n\n /**\n * Construct from a number string (integer, decimal, or scientific notation).\n * Handles normalization to XRPL Number constraints.\n *\n * @param val - The number as a string (e.g. '1.23', '-123e5').\n * @returns STNumber instance\n * @throws Error if val is not a valid number string.\n */\n static fromValue(val: string): STNumber {\n const { mantissa, exponent, isNegative } = extractNumberPartsFromString(val)\n let normalizedMantissa: bigint\n let normalizedExponent: number\n\n if (mantissa === BigInt(0) && exponent === 0 && !isNegative) {\n normalizedMantissa = BigInt(0)\n normalizedExponent = DEFAULT_VALUE_EXPONENT\n } else {\n ;({ mantissa: normalizedMantissa, exponent: normalizedExponent } =\n normalize(mantissa, exponent))\n }\n\n const bytes = new Uint8Array(12)\n writeInt64BE(bytes, normalizedMantissa, 0)\n writeInt32BE(bytes, normalizedExponent, 8)\n return new STNumber(bytes)\n }\n\n /**\n * Read a STNumber from a BinaryParser stream (12 bytes).\n * @param parser - BinaryParser positioned at the start of a number\n * @returns STNumber instance\n */\n static fromParser(parser: BinaryParser): STNumber {\n return new STNumber(parser.read(12))\n }\n\n /**\n * Convert this STNumber to a normalized string representation.\n * The output is decimal or scientific notation, depending on exponent range.\n * Follows XRPL convention: zero is \"0\", other values are normalized to a canonical string.\n *\n * @returns String representation of the value\n */\n // eslint-disable-next-line complexity -- required\n toJSON(): string {\n const b = this.bytes\n if (!b || b.length !== 12)\n throw new Error('STNumber internal bytes not set or wrong length')\n\n // Signed 64-bit mantissa\n const mantissa = readInt64BE(b, 0)\n // Signed 32-bit exponent\n const exponent = readInt32BE(b, 8)\n\n // Special zero: XRPL encodes canonical zero as mantissa=0, exponent=DEFAULT_VALUE_EXPONENT.\n if (mantissa === BigInt(0) && exponent === DEFAULT_VALUE_EXPONENT) {\n return '0'\n }\n if (exponent === 0) return mantissa.toString()\n\n // Use scientific notation for small/large exponents, decimal otherwise\n if (exponent < -25 || exponent > -5) {\n return `${mantissa}e${exponent}`\n }\n\n // Decimal rendering for -25 <= exp <= -5\n const isNegative = mantissa < BigInt(0)\n const mantissaAbs = mantissa < BigInt(0) ? -mantissa : mantissa\n\n const padPrefix = 27\n const padSuffix = 23\n const mantissaStr = mantissaAbs.toString()\n const rawValue = '0'.repeat(padPrefix) + mantissaStr + '0'.repeat(padSuffix)\n const OFFSET = exponent + 43\n const integerPart = rawValue.slice(0, OFFSET).replace(/^0+/, '') || '0'\n const fractionPart = rawValue.slice(OFFSET).replace(/0+$/, '')\n\n return `${isNegative ? '-' : ''}${integerPart}${\n fractionPart ? '.' + fractionPart : ''\n }`\n }\n}\n", "import { AccountID } from './account-id'\nimport { Currency } from './currency'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { SerializedType, JsonObject } from './serialized-type'\nimport { bytesToHex, concat } from '@xrplf/isomorphic/utils'\n\n/**\n * Constants for separating Paths in a PathSet\n */\nconst PATHSET_END_BYTE = 0x00\nconst PATH_SEPARATOR_BYTE = 0xff\n\n/**\n * Constant for masking types of a Hop\n */\nconst TYPE_ACCOUNT = 0x01\nconst TYPE_CURRENCY = 0x10\nconst TYPE_ISSUER = 0x20\n\n/**\n * The object representation of a Hop, an issuer AccountID, an account AccountID, and a Currency\n */\ninterface HopObject extends JsonObject {\n issuer?: string\n account?: string\n currency?: string\n}\n\n/**\n * TypeGuard for HopObject\n */\nfunction isHopObject(arg): arg is HopObject {\n return (\n arg.issuer !== undefined ||\n arg.account !== undefined ||\n arg.currency !== undefined\n )\n}\n\n/**\n * TypeGuard for PathSet\n */\nfunction isPathSet(arg): arg is Array> {\n return (\n (Array.isArray(arg) && arg.length === 0) ||\n (Array.isArray(arg) && Array.isArray(arg[0]) && arg[0].length === 0) ||\n (Array.isArray(arg) && Array.isArray(arg[0]) && isHopObject(arg[0][0]))\n )\n}\n\n/**\n * Serialize and Deserialize a Hop\n */\nclass Hop extends SerializedType {\n /**\n * Create a Hop from a HopObject\n *\n * @param value Either a hop or HopObject to create a hop with\n * @returns a Hop\n */\n static from(value: Hop | HopObject): Hop {\n if (value instanceof Hop) {\n return value\n }\n\n const bytes: Array = [Uint8Array.from([0])]\n\n if (value.account) {\n bytes.push(AccountID.from(value.account).toBytes())\n bytes[0][0] |= TYPE_ACCOUNT\n }\n\n if (value.currency) {\n bytes.push(Currency.from(value.currency).toBytes())\n bytes[0][0] |= TYPE_CURRENCY\n }\n\n if (value.issuer) {\n bytes.push(AccountID.from(value.issuer).toBytes())\n bytes[0][0] |= TYPE_ISSUER\n }\n\n return new Hop(concat(bytes))\n }\n\n /**\n * Construct a Hop from a BinaryParser\n *\n * @param parser BinaryParser to read the Hop from\n * @returns a Hop\n */\n static fromParser(parser: BinaryParser): Hop {\n const type = parser.readUInt8()\n const bytes: Array = [Uint8Array.from([type])]\n\n if (type & TYPE_ACCOUNT) {\n bytes.push(parser.read(AccountID.width))\n }\n\n if (type & TYPE_CURRENCY) {\n bytes.push(parser.read(Currency.width))\n }\n\n if (type & TYPE_ISSUER) {\n bytes.push(parser.read(AccountID.width))\n }\n\n return new Hop(concat(bytes))\n }\n\n /**\n * Get the JSON interpretation of this hop\n *\n * @returns a HopObject, an JS object with optional account, issuer, and currency\n */\n toJSON(): HopObject {\n const hopParser = new BinaryParser(bytesToHex(this.bytes))\n const type = hopParser.readUInt8()\n\n let account, currency, issuer\n if (type & TYPE_ACCOUNT) {\n account = (AccountID.fromParser(hopParser) as AccountID).toJSON()\n }\n\n if (type & TYPE_CURRENCY) {\n currency = (Currency.fromParser(hopParser) as Currency).toJSON()\n }\n\n if (type & TYPE_ISSUER) {\n issuer = (AccountID.fromParser(hopParser) as AccountID).toJSON()\n }\n\n const result: HopObject = {}\n if (account) {\n result.account = account\n }\n\n if (issuer) {\n result.issuer = issuer\n }\n\n if (currency) {\n result.currency = currency\n }\n\n return result\n }\n\n /**\n * get a number representing the type of this hop\n *\n * @returns a number to be bitwise and-ed with TYPE_ constants to describe the types in the hop\n */\n type(): number {\n return this.bytes[0]\n }\n}\n\n/**\n * Class for serializing/deserializing Paths\n */\nclass Path extends SerializedType {\n /**\n * construct a Path from an array of Hops\n *\n * @param value Path or array of HopObjects to construct a Path\n * @returns the Path\n */\n static from(value: Path | Array): Path {\n if (value instanceof Path) {\n return value\n }\n\n const bytes: Array = []\n value.forEach((hop: HopObject) => {\n bytes.push(Hop.from(hop).toBytes())\n })\n\n return new Path(concat(bytes))\n }\n\n /**\n * Read a Path from a BinaryParser\n *\n * @param parser BinaryParser to read Path from\n * @returns the Path represented by the bytes read from the BinaryParser\n */\n static fromParser(parser: BinaryParser): Path {\n const bytes: Array = []\n while (!parser.end()) {\n bytes.push(Hop.fromParser(parser).toBytes())\n\n if (\n parser.peek() === PATHSET_END_BYTE ||\n parser.peek() === PATH_SEPARATOR_BYTE\n ) {\n break\n }\n }\n return new Path(concat(bytes))\n }\n\n /**\n * Get the JSON representation of this Path\n *\n * @returns an Array of HopObject constructed from this.bytes\n */\n toJSON(): Array {\n const json: Array = []\n const pathParser = new BinaryParser(this.toString())\n\n while (!pathParser.end()) {\n json.push(Hop.fromParser(pathParser).toJSON())\n }\n\n return json\n }\n}\n\n/**\n * Deserialize and Serialize the PathSet type\n */\nclass PathSet extends SerializedType {\n /**\n * Construct a PathSet from an Array of Arrays representing paths\n *\n * @param value A PathSet or Array of Array of HopObjects\n * @returns the PathSet constructed from value\n */\n static from>>(value: T): PathSet {\n if (value instanceof PathSet) {\n return value\n }\n\n if (isPathSet(value)) {\n const bytes: Array = []\n\n value.forEach((path: Array) => {\n bytes.push(Path.from(path).toBytes())\n bytes.push(Uint8Array.from([PATH_SEPARATOR_BYTE]))\n })\n\n bytes[bytes.length - 1] = Uint8Array.from([PATHSET_END_BYTE])\n\n return new PathSet(concat(bytes))\n }\n\n throw new Error('Cannot construct PathSet from given value')\n }\n\n /**\n * Construct a PathSet from a BinaryParser\n *\n * @param parser A BinaryParser to read PathSet from\n * @returns the PathSet read from parser\n */\n static fromParser(parser: BinaryParser): PathSet {\n const bytes: Array = []\n\n while (!parser.end()) {\n bytes.push(Path.fromParser(parser).toBytes())\n bytes.push(parser.read(1))\n\n if (bytes[bytes.length - 1][0] == PATHSET_END_BYTE) {\n break\n }\n }\n\n return new PathSet(concat(bytes))\n }\n\n /**\n * Get the JSON representation of this PathSet\n *\n * @returns an Array of Array of HopObjects, representing this PathSet\n */\n toJSON(): Array> {\n const json: Array> = []\n const pathParser = new BinaryParser(this.toString())\n\n while (!pathParser.end()) {\n json.push(Path.fromParser(pathParser).toJSON())\n pathParser.skip(1)\n }\n\n return json\n }\n}\n\nexport { PathSet }\n", "import { Comparable } from './serialized-type'\n\n/**\n * Compare numbers and bigInts n1 and n2\n *\n * @param n1 First object to compare\n * @param n2 Second object to compare\n * @returns -1, 0, or 1, depending on how the two objects compare\n */\nfunction compare(n1: number | bigint, n2: number | bigint): number {\n return n1 < n2 ? -1 : n1 == n2 ? 0 : 1\n}\n\n/**\n * Base class for serializing and deserializing unsigned integers.\n */\nabstract class UInt extends Comparable {\n protected static width: number\n\n constructor(bytes: Uint8Array) {\n super(bytes)\n }\n\n /**\n * Overload of compareTo for Comparable\n *\n * @param other other UInt to compare this to\n * @returns -1, 0, or 1 depending on how the objects relate to each other\n */\n compareTo(other: UInt | number): number {\n return compare(this.valueOf(), other.valueOf())\n }\n\n /**\n * Convert a UInt object to JSON\n *\n * @returns number or string represented by this.bytes\n */\n toJSON(): number | string {\n const val = this.valueOf()\n return typeof val === 'number' ? val : val.toString()\n }\n\n /**\n * Get the value of the UInt represented by this.bytes\n *\n * @returns the value\n */\n abstract valueOf(): number | bigint\n\n static checkUintRange(val: number, min: number, max: number): void {\n if (val < min || val > max) {\n throw new Error(\n `Invalid ${this.constructor.name}: ${val} must be >= ${min} and <= ${max}`,\n )\n }\n }\n}\n\nexport { UInt }\n", "import { UInt } from './uint'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { bytesToHex, concat, hexToBytes } from '@xrplf/isomorphic/utils'\nimport { readUInt32BE, writeUInt32BE } from '../utils'\nimport { DEFAULT_DEFINITIONS, XrplDefinitionsBase } from '../enums'\n\nconst HEX_REGEX = /^[a-fA-F0-9]{1,16}$/\nconst BASE10_REGEX = /^[0-9]{1,20}$/\nconst mask = BigInt(0x00000000ffffffff)\n\nconst BASE10_AMOUNT_FIELDS = new Set([\n 'MaximumAmount',\n 'OutstandingAmount',\n 'MPTAmount',\n 'LockedAmount',\n])\n\nfunction isBase10(fieldName: string): boolean {\n return BASE10_AMOUNT_FIELDS.has(fieldName)\n}\n\n/**\n * Derived UInt class for serializing/deserializing 64 bit UInt\n */\nclass UInt64 extends UInt {\n protected static readonly width: number = 64 / 8 // 8\n static readonly defaultUInt64: UInt64 = new UInt64(\n new Uint8Array(UInt64.width),\n )\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? UInt64.defaultUInt64.bytes)\n }\n\n static fromParser(parser: BinaryParser): UInt {\n return new UInt64(parser.read(UInt64.width))\n }\n\n /**\n * Construct a UInt64 object\n *\n * @param val A UInt64, hex-string, bigInt, or number\n * @returns A UInt64 object\n */\n // eslint-disable-next-line complexity\n static from(\n val: T,\n fieldName = '',\n ): UInt64 {\n if (val instanceof UInt64) {\n return val\n }\n\n let buf = new Uint8Array(UInt64.width)\n\n if (typeof val === 'number') {\n if (val < 0) {\n throw new Error('value must be an unsigned integer')\n }\n\n const number = BigInt(val)\n\n const intBuf = [new Uint8Array(4), new Uint8Array(4)]\n writeUInt32BE(intBuf[0], Number(number >> BigInt(32)), 0)\n writeUInt32BE(intBuf[1], Number(number & BigInt(mask)), 0)\n\n return new UInt64(concat(intBuf))\n }\n\n if (typeof val === 'string') {\n if (isBase10(fieldName)) {\n if (!BASE10_REGEX.test(val)) {\n throw new Error(`${fieldName} ${val} is not a valid base 10 string`)\n }\n val = BigInt(val).toString(16) as T\n }\n\n if (typeof val === 'string' && !HEX_REGEX.test(val)) {\n throw new Error(`${val} is not a valid hex-string`)\n }\n\n const strBuf = (val as string).padStart(16, '0')\n buf = hexToBytes(strBuf)\n return new UInt64(buf)\n }\n\n if (typeof val === 'bigint') {\n const intBuf = [new Uint8Array(4), new Uint8Array(4)]\n writeUInt32BE(intBuf[0], Number(Number(val >> BigInt(32))), 0)\n writeUInt32BE(intBuf[1], Number(val & BigInt(mask)), 0)\n\n return new UInt64(concat(intBuf))\n }\n\n throw new Error('Cannot construct UInt64 from given value')\n }\n\n /**\n * The JSON representation of a UInt64 object\n *\n * @returns a hex-string\n */\n toJSON(\n _definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n fieldName = '',\n ): string {\n const hexString = bytesToHex(this.bytes)\n if (isBase10(fieldName)) {\n return BigInt('0x' + hexString).toString(10)\n }\n\n return hexString\n }\n\n /**\n * Get the value of the UInt64\n *\n * @returns the number represented buy this.bytes\n */\n valueOf(): bigint {\n const msb = BigInt(readUInt32BE(this.bytes.slice(0, 4), 0))\n const lsb = BigInt(readUInt32BE(this.bytes.slice(4), 0))\n return (msb << BigInt(32)) | lsb\n }\n\n /**\n * Get the bytes representation of the UInt64 object\n *\n * @returns 8 bytes representing the UInt64\n */\n toBytes(): Uint8Array {\n return this.bytes\n }\n}\n\nexport { UInt64 }\n", "import {\n DEFAULT_DEFINITIONS,\n FieldInstance,\n Bytes,\n XrplDefinitionsBase,\n} from '../enums'\nimport { SerializedType, JsonObject } from './serialized-type'\nimport { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { BinarySerializer, BytesList } from '../serdes/binary-serializer'\n\nimport { STArray } from './st-array'\nimport { UInt64 } from './uint-64'\n\nconst OBJECT_END_MARKER_BYTE = Uint8Array.from([0xe1])\nconst OBJECT_END_MARKER = 'ObjectEndMarker'\nconst ST_OBJECT = 'STObject'\nconst DESTINATION = 'Destination'\nconst ACCOUNT = 'Account'\nconst SOURCE_TAG = 'SourceTag'\nconst DEST_TAG = 'DestinationTag'\n\n/**\n * Break down an X-Address into an account and a tag\n *\n * @param field Name of field\n * @param xAddress X-Address corresponding to the field\n */\nfunction handleXAddress(field: string, xAddress: string): JsonObject {\n const decoded = xAddressToClassicAddress(xAddress)\n\n let tagName\n if (field === DESTINATION) tagName = DEST_TAG\n else if (field === ACCOUNT) tagName = SOURCE_TAG\n else if (decoded.tag !== false)\n throw new Error(`${field} cannot have an associated tag`)\n\n return decoded.tag !== false\n ? { [field]: decoded.classicAddress, [tagName]: decoded.tag }\n : { [field]: decoded.classicAddress }\n}\n\n/**\n * Validate that two objects don't both have the same tag fields\n *\n * @param obj1 First object to check for tags\n * @param obj2 Second object to check for tags\n * @throws When both objects have SourceTag or DestinationTag\n */\nfunction checkForDuplicateTags(obj1: JsonObject, obj2: JsonObject): void {\n if (!(obj1[SOURCE_TAG] === undefined || obj2[SOURCE_TAG] === undefined))\n throw new Error('Cannot have Account X-Address and SourceTag')\n if (!(obj1[DEST_TAG] === undefined || obj2[DEST_TAG] === undefined))\n throw new Error('Cannot have Destination X-Address and DestinationTag')\n}\n\n/**\n * Class for Serializing/Deserializing objects\n */\nclass STObject extends SerializedType {\n /**\n * Construct a STObject from a BinaryParser\n *\n * @param parser BinaryParser to read STObject from\n * @returns A STObject object\n */\n static fromParser(parser: BinaryParser): STObject {\n const list: BytesList = new BytesList()\n const bytes: BinarySerializer = new BinarySerializer(list)\n\n while (!parser.end()) {\n const field = parser.readField()\n if (field.name === OBJECT_END_MARKER) {\n break\n }\n\n const associatedValue = parser.readFieldValue(field)\n\n bytes.writeFieldAndValue(field, associatedValue)\n if (field.type.name === ST_OBJECT) {\n bytes.put(OBJECT_END_MARKER_BYTE)\n }\n }\n\n return new STObject(list.toBytes())\n }\n\n /**\n * Construct a STObject from a JSON object\n *\n * @param value An object to include\n * @param filter optional, denote which field to include in serialized object\n * @param definitions optional, types and values to use to encode/decode a transaction\n * @returns a STObject object\n */\n static from(\n value: T,\n filter?: (...any) => boolean,\n definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n ): STObject {\n if (value instanceof STObject) {\n return value\n }\n\n const list: BytesList = new BytesList()\n const bytes: BinarySerializer = new BinarySerializer(list)\n\n let isUnlModify = false\n\n const xAddressDecoded = Object.entries(value).reduce((acc, [key, val]) => {\n let handled: JsonObject | undefined = undefined\n if (val && isValidXAddress(val.toString())) {\n handled = handleXAddress(key, val.toString())\n checkForDuplicateTags(handled, value)\n }\n return Object.assign(acc, handled ?? { [key]: val })\n }, {})\n\n function isValidFieldInstance(\n f: FieldInstance | undefined,\n ): f is FieldInstance {\n return (\n f !== undefined &&\n xAddressDecoded[f.name] !== undefined &&\n f.isSerialized\n )\n }\n\n let sorted = Object.keys(xAddressDecoded)\n .map((f: string): FieldInstance | undefined => {\n if (!(f in definitions.field)) {\n if (f[0] === f[0].toLowerCase()) return undefined\n throw new Error(`Field ${f} is not defined in the definitions`)\n }\n return definitions.field[f] as FieldInstance\n })\n .filter(isValidFieldInstance)\n .sort((a, b) => {\n return a.ordinal - b.ordinal\n })\n\n if (filter !== undefined) {\n sorted = sorted.filter(filter)\n }\n\n sorted.forEach((field) => {\n const associatedValue =\n field.type.name === ST_OBJECT\n ? this.from(xAddressDecoded[field.name], undefined, definitions)\n : field.type.name === 'STArray'\n ? STArray.from(xAddressDecoded[field.name], definitions)\n : field.type.name === 'UInt64'\n ? UInt64.from(xAddressDecoded[field.name], field.name)\n : field.associatedType.from(xAddressDecoded[field.name])\n\n if (associatedValue == undefined) {\n throw new TypeError(\n `Unable to interpret \"${field.name}: ${\n xAddressDecoded[field.name]\n }\".`,\n )\n }\n\n if ((associatedValue as unknown as Bytes).name === 'UNLModify') {\n // triggered when the TransactionType field has a value of 'UNLModify'\n isUnlModify = true\n }\n // true when in the UNLModify pseudotransaction (after the transaction type has been processed) and working with the\n // Account field\n // The Account field must not be a part of the UNLModify pseudotransaction encoding, due to a bug in rippled\n const isUnlModifyWorkaround = field.name == 'Account' && isUnlModify\n bytes.writeFieldAndValue(field, associatedValue, isUnlModifyWorkaround)\n if (field.type.name === ST_OBJECT) {\n bytes.put(OBJECT_END_MARKER_BYTE)\n }\n })\n\n return new STObject(list.toBytes())\n }\n\n /**\n * Get the JSON interpretation of this.bytes\n * @param definitions rippled definitions used to parse the values of transaction types and such.\n * Can be customized for sidechains and amendments.\n * @returns a JSON object\n */\n toJSON(definitions?: XrplDefinitionsBase): JsonObject {\n const objectParser = new BinaryParser(this.toString(), definitions)\n const accumulator = {}\n\n while (!objectParser.end()) {\n const field = objectParser.readField()\n if (field.name === OBJECT_END_MARKER) {\n break\n }\n\n accumulator[field.name] = objectParser\n .readFieldValue(field)\n .toJSON(definitions, field.name)\n }\n\n return accumulator\n }\n}\n\nexport { STObject }\n", "import { DEFAULT_DEFINITIONS, XrplDefinitionsBase } from '../enums'\nimport { SerializedType, JsonObject } from './serialized-type'\nimport { STObject } from './st-object'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { concat } from '@xrplf/isomorphic/utils'\n\nconst ARRAY_END_MARKER = Uint8Array.from([0xf1])\nconst ARRAY_END_MARKER_NAME = 'ArrayEndMarker'\n\nconst OBJECT_END_MARKER = Uint8Array.from([0xe1])\n\n/**\n * TypeGuard for Array\n */\nfunction isObjects(args): args is Array {\n return (\n Array.isArray(args) &&\n args.every(\n (arg) =>\n typeof arg === 'object' &&\n Object.keys(arg).length === 1 &&\n typeof Object.values(arg)[0] === 'object',\n )\n )\n}\n\n/**\n * Class for serializing and deserializing Arrays of Objects\n */\nclass STArray extends SerializedType {\n /**\n * Construct an STArray from a BinaryParser\n *\n * @param parser BinaryParser to parse an STArray from\n * @returns An STArray Object\n */\n static fromParser(parser: BinaryParser): STArray {\n const bytes: Array = []\n\n while (!parser.end()) {\n const field = parser.readField()\n if (field.name === ARRAY_END_MARKER_NAME) {\n break\n }\n\n bytes.push(\n field.header,\n parser.readFieldValue(field).toBytes(),\n OBJECT_END_MARKER,\n )\n }\n\n bytes.push(ARRAY_END_MARKER)\n return new STArray(concat(bytes))\n }\n\n /**\n * Construct an STArray from an Array of JSON Objects\n *\n * @param value STArray or Array of Objects to parse into an STArray\n * @param definitions optional, types and values to use to encode/decode a transaction\n * @returns An STArray object\n */\n static from>(\n value: T,\n definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n ): STArray {\n if (value instanceof STArray) {\n return value\n }\n\n if (isObjects(value)) {\n const bytes: Array = []\n value.forEach((obj) => {\n bytes.push(STObject.from(obj, undefined, definitions).toBytes())\n })\n\n bytes.push(ARRAY_END_MARKER)\n return new STArray(concat(bytes))\n }\n\n throw new Error('Cannot construct STArray from value given')\n }\n\n /**\n * Return the JSON representation of this.bytes\n *\n * @param definitions optional, types and values to use to encode/decode a transaction\n * @returns An Array of JSON objects\n */\n toJSON(\n definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n ): Array {\n const result: Array = []\n\n const arrayParser = new BinaryParser(this.toString(), definitions)\n\n while (!arrayParser.end()) {\n const field = arrayParser.readField()\n if (field.name === ARRAY_END_MARKER_NAME) {\n break\n }\n\n const outer = {}\n outer[field.name] = STObject.fromParser(arrayParser).toJSON(definitions)\n result.push(outer)\n }\n\n return result\n }\n}\n\nexport { STArray }\n", "import { UInt } from './uint'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { readUInt16BE, writeUInt16BE } from '../utils'\n\n/**\n * Derived UInt class for serializing/deserializing 16 bit UInt\n */\nclass UInt16 extends UInt {\n protected static readonly width: number = 16 / 8 // 2\n static readonly defaultUInt16: UInt16 = new UInt16(\n new Uint8Array(UInt16.width),\n )\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? UInt16.defaultUInt16.bytes)\n }\n\n static fromParser(parser: BinaryParser): UInt {\n return new UInt16(parser.read(UInt16.width))\n }\n\n /**\n * Construct a UInt16 object from a number\n *\n * @param val UInt16 object or number\n */\n static from(val: T): UInt16 {\n if (val instanceof UInt16) {\n return val\n }\n\n if (typeof val === 'number') {\n UInt16.checkUintRange(val, 0, 0xffff)\n\n const buf = new Uint8Array(UInt16.width)\n writeUInt16BE(buf, val, 0)\n return new UInt16(buf)\n }\n\n throw new Error('Can not construct UInt16 with given value')\n }\n\n /**\n * get the value of a UInt16 object\n *\n * @returns the number represented by this.bytes\n */\n valueOf(): number {\n return parseInt(readUInt16BE(this.bytes, 0))\n }\n}\n\nexport { UInt16 }\n", "import { UInt } from './uint'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { readUInt32BE, writeUInt32BE } from '../utils'\n\n/**\n * Derived UInt class for serializing/deserializing 32 bit UInt\n */\nclass UInt32 extends UInt {\n protected static readonly width: number = 32 / 8 // 4\n static readonly defaultUInt32: UInt32 = new UInt32(\n new Uint8Array(UInt32.width),\n )\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? UInt32.defaultUInt32.bytes)\n }\n\n static fromParser(parser: BinaryParser): UInt {\n return new UInt32(parser.read(UInt32.width))\n }\n\n /**\n * Construct a UInt32 object from a number\n *\n * @param val UInt32 object or number\n */\n static from(val: T): UInt32 {\n if (val instanceof UInt32) {\n return val\n }\n\n const buf = new Uint8Array(UInt32.width)\n\n if (typeof val === 'string') {\n const num = Number.parseInt(val)\n writeUInt32BE(buf, num, 0)\n return new UInt32(buf)\n }\n\n if (typeof val === 'number') {\n UInt32.checkUintRange(val, 0, 0xffffffff)\n writeUInt32BE(buf, val, 0)\n return new UInt32(buf)\n }\n\n throw new Error('Cannot construct UInt32 from given value')\n }\n\n /**\n * get the value of a UInt32 object\n *\n * @returns the number represented by this.bytes\n */\n valueOf(): number {\n return parseInt(readUInt32BE(this.bytes, 0), 10)\n }\n}\n\nexport { UInt32 }\n", "import { UInt } from './uint'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\nimport { writeUInt8 } from '../utils'\n\n/**\n * Derived UInt class for serializing/deserializing 8 bit UInt\n */\nclass UInt8 extends UInt {\n protected static readonly width: number = 8 / 8 // 1\n static readonly defaultUInt8: UInt8 = new UInt8(new Uint8Array(UInt8.width))\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? UInt8.defaultUInt8.bytes)\n }\n\n static fromParser(parser: BinaryParser): UInt {\n return new UInt8(parser.read(UInt8.width))\n }\n\n /**\n * Construct a UInt8 object from a number\n *\n * @param val UInt8 object or number\n */\n static from(val: T): UInt8 {\n if (val instanceof UInt8) {\n return val\n }\n\n if (typeof val === 'number') {\n UInt8.checkUintRange(val, 0, 0xff)\n\n const buf = new Uint8Array(UInt8.width)\n writeUInt8(buf, val, 0)\n return new UInt8(buf)\n }\n\n throw new Error('Cannot construct UInt8 from given value')\n }\n\n /**\n * get the value of a UInt8 object\n *\n * @returns the number represented by this.bytes\n */\n valueOf(): number {\n return parseInt(bytesToHex(this.bytes), 16)\n }\n}\n\nexport { UInt8 }\n", "import { SerializedType } from './serialized-type'\nimport { BinaryParser } from '../serdes/binary-parser'\nimport { Hash256 } from './hash-256'\nimport { BytesList } from '../serdes/binary-serializer'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\n/**\n * TypeGuard for Array\n */\nfunction isStrings(arg): arg is Array {\n return Array.isArray(arg) && (arg.length === 0 || typeof arg[0] === 'string')\n}\n\n/**\n * Class for serializing and deserializing vectors of Hash256\n */\nclass Vector256 extends SerializedType {\n constructor(bytes: Uint8Array) {\n super(bytes)\n }\n\n /**\n * Construct a Vector256 from a BinaryParser\n *\n * @param parser BinaryParser to\n * @param hint length of the vector, in bytes, optional\n * @returns a Vector256 object\n */\n static fromParser(parser: BinaryParser, hint?: number): Vector256 {\n const bytesList = new BytesList()\n const bytes = hint ?? parser.size()\n const hashes = bytes / 32\n for (let i = 0; i < hashes; i++) {\n Hash256.fromParser(parser).toBytesSink(bytesList)\n }\n return new Vector256(bytesList.toBytes())\n }\n\n /**\n * Construct a Vector256 object from an array of hashes\n *\n * @param value A Vector256 object or array of hex-strings representing Hash256's\n * @returns a Vector256 object\n */\n static from>(value: T): Vector256 {\n if (value instanceof Vector256) {\n return value\n }\n\n if (isStrings(value)) {\n const bytesList = new BytesList()\n value.forEach((hash) => {\n Hash256.from(hash).toBytesSink(bytesList)\n })\n return new Vector256(bytesList.toBytes())\n }\n\n throw new Error('Cannot construct Vector256 from given value')\n }\n\n /**\n * Return an Array of hex-strings represented by this.bytes\n *\n * @returns An Array of strings representing the Hash256 objects\n */\n toJSON(): Array {\n if (this.bytes.byteLength % 32 !== 0) {\n throw new Error('Invalid bytes for Vector256')\n }\n\n const result: Array = []\n for (let i = 0; i < this.bytes.byteLength; i += 32) {\n result.push(bytesToHex(this.bytes.slice(i, i + 32)))\n }\n return result\n }\n}\n\nexport { Vector256 }\n", "import { BinaryParser } from '../serdes/binary-parser'\n\nimport { AccountID } from './account-id'\nimport { JsonObject, SerializedType } from './serialized-type'\nimport { Issue, IssueObject } from './issue'\nimport { concat } from '@xrplf/isomorphic/utils'\n\n/**\n * Interface for JSON objects that represent cross-chain bridges\n */\ninterface XChainBridgeObject extends JsonObject {\n LockingChainDoor: string\n LockingChainIssue: IssueObject | string\n IssuingChainDoor: string\n IssuingChainIssue: IssueObject | string\n}\n\n/**\n * Type guard for XChainBridgeObject\n */\nfunction isXChainBridgeObject(arg): arg is XChainBridgeObject {\n const keys = Object.keys(arg).sort()\n return (\n keys.length === 4 &&\n keys[0] === 'IssuingChainDoor' &&\n keys[1] === 'IssuingChainIssue' &&\n keys[2] === 'LockingChainDoor' &&\n keys[3] === 'LockingChainIssue'\n )\n}\n\n/**\n * Class for serializing/deserializing XChainBridges\n */\nclass XChainBridge extends SerializedType {\n static readonly ZERO_XCHAIN_BRIDGE: XChainBridge = new XChainBridge(\n concat([\n Uint8Array.from([0x14]),\n new Uint8Array(40),\n Uint8Array.from([0x14]),\n new Uint8Array(40),\n ]),\n )\n\n static readonly TYPE_ORDER: { name: string; type: typeof SerializedType }[] =\n [\n { name: 'LockingChainDoor', type: AccountID },\n { name: 'LockingChainIssue', type: Issue },\n { name: 'IssuingChainDoor', type: AccountID },\n { name: 'IssuingChainIssue', type: Issue },\n ]\n\n constructor(bytes: Uint8Array) {\n super(bytes ?? XChainBridge.ZERO_XCHAIN_BRIDGE.bytes)\n }\n\n /**\n * Construct a cross-chain bridge from a JSON\n *\n * @param value XChainBridge or JSON to parse into an XChainBridge\n * @returns An XChainBridge object\n */\n static from(\n value: T,\n ): XChainBridge {\n if (value instanceof XChainBridge) {\n return value\n }\n\n if (!isXChainBridgeObject(value)) {\n throw new Error('Invalid type to construct an XChainBridge')\n }\n\n const bytes: Array = []\n this.TYPE_ORDER.forEach((item) => {\n const { name, type } = item\n if (type === AccountID) {\n bytes.push(Uint8Array.from([0x14]))\n }\n const object = type.from(value[name])\n bytes.push(object.toBytes())\n })\n return new XChainBridge(concat(bytes))\n }\n\n /**\n * Read an XChainBridge from a BinaryParser\n *\n * @param parser BinaryParser to read the XChainBridge from\n * @returns An XChainBridge object\n */\n static fromParser(parser: BinaryParser): XChainBridge {\n const bytes: Array = []\n\n this.TYPE_ORDER.forEach((item) => {\n const { type } = item\n if (type === AccountID) {\n parser.skip(1)\n bytes.push(Uint8Array.from([0x14]))\n }\n const object = type.fromParser(parser)\n bytes.push(object.toBytes())\n })\n\n return new XChainBridge(concat(bytes))\n }\n\n /**\n * Get the JSON representation of this XChainBridge\n *\n * @returns the JSON interpretation of this.bytes\n */\n toJSON(): XChainBridgeObject {\n const parser = new BinaryParser(this.toString())\n const json = {}\n XChainBridge.TYPE_ORDER.forEach((item) => {\n const { name, type } = item\n if (type === AccountID) {\n parser.skip(1)\n }\n const object = type.fromParser(parser).toJSON()\n json[name] = object\n })\n return json as XChainBridgeObject\n }\n}\n\nexport { XChainBridge, XChainBridgeObject }\n", "import { AccountID } from './account-id'\nimport { Amount } from './amount'\nimport { Blob } from './blob'\nimport { Currency } from './currency'\nimport { Hash128 } from './hash-128'\nimport { Hash160 } from './hash-160'\nimport { Hash192 } from './hash-192'\nimport { Hash256 } from './hash-256'\nimport { Issue } from './issue'\nimport { STNumber } from './st-number'\nimport { PathSet } from './path-set'\nimport { STArray } from './st-array'\nimport { STObject } from './st-object'\nimport { UInt16 } from './uint-16'\nimport { UInt32 } from './uint-32'\nimport { UInt64 } from './uint-64'\nimport { UInt8 } from './uint-8'\nimport { Vector256 } from './vector-256'\nimport { XChainBridge } from './xchain-bridge'\nimport { type SerializedType } from './serialized-type'\nimport { DEFAULT_DEFINITIONS } from '../enums'\n\nconst coreTypes: Record = {\n AccountID,\n Amount,\n Blob,\n Currency,\n Hash128,\n Hash160,\n Hash192,\n Hash256,\n Issue,\n Number: STNumber,\n PathSet,\n STArray,\n STObject,\n UInt8,\n UInt16,\n UInt32,\n UInt64,\n Vector256,\n XChainBridge,\n}\n\n// Ensures that the DEFAULT_DEFINITIONS object connects these types to fields for serializing/deserializing\n// This is done here instead of in enums/index.ts to avoid a circular dependency\n// because some of the above types depend on BinarySerializer which depends on enums/index.ts.\nDEFAULT_DEFINITIONS.associateTypes(coreTypes)\n\nexport {\n coreTypes,\n AccountID,\n Amount,\n Blob,\n Currency,\n Hash128,\n Hash160,\n Hash192,\n Hash256,\n PathSet,\n STArray,\n STObject,\n UInt8,\n UInt16,\n UInt32,\n UInt64,\n Vector256,\n}\n", "import { writeUInt32BE } from './utils'\n\n/**\n * Write a 32 bit integer to a Uint8Array\n *\n * @param uint32 32 bit integer to write to Uint8Array\n * @returns a Uint8Array with the bytes representation of uint32\n */\nfunction bytes(uint32: number): Uint8Array {\n const result = new Uint8Array(4)\n writeUInt32BE(result, uint32, 0)\n return result\n}\n\n/**\n * Maps HashPrefix names to their byte representation\n */\nconst HashPrefix: Record = {\n transactionID: bytes(0x54584e00),\n // transaction plus metadata\n transaction: bytes(0x534e4400),\n // account state\n accountStateEntry: bytes(0x4d4c4e00),\n // inner node in tree\n innerNode: bytes(0x4d494e00),\n // ledger master data for signing\n ledgerHeader: bytes(0x4c575200),\n // inner transaction to sign\n transactionSig: bytes(0x53545800),\n // inner transaction to sign\n transactionMultiSig: bytes(0x534d5400),\n // validation for signing\n validation: bytes(0x56414c00),\n // proposal for signing\n proposal: bytes(0x50525000),\n // payment channel claim\n paymentChannelClaim: bytes(0x434c4d00),\n // batch\n batch: bytes(0x42434800),\n}\n\nexport { HashPrefix }\n", "import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native sha512 implementation in HashFn\n */\nexport const sha512 = wrapCryptoCreateHash('sha512', createHash)\n", "import { HashPrefix } from './hash-prefixes'\nimport { Hash256 } from './types'\nimport { BytesList } from './serdes/binary-serializer'\nimport { sha512 } from '@xrplf/isomorphic/sha512'\n\n/**\n * Class for hashing with SHA512\n * @extends BytesList So SerializedTypes can write bytes to a Sha512Half\n */\nclass Sha512Half extends BytesList {\n private hash = sha512.create()\n\n /**\n * Construct a new Sha512Hash and write bytes this.hash\n *\n * @param bytes bytes to write to this.hash\n * @returns the new Sha512Hash object\n */\n static put(bytes: Uint8Array): Sha512Half {\n return new Sha512Half().put(bytes)\n }\n\n /**\n * Write bytes to an existing Sha512Hash\n *\n * @param bytes bytes to write to object\n * @returns the Sha512 object\n */\n put(bytes: Uint8Array): Sha512Half {\n this.hash.update(bytes)\n return this\n }\n\n /**\n * Compute SHA512 hash and slice in half\n *\n * @returns half of a SHA512 hash\n */\n finish256(): Uint8Array {\n return Uint8Array.from(this.hash.digest().slice(0, 32))\n }\n\n /**\n * Constructs a Hash256 from the Sha512Half object\n *\n * @returns a Hash256 object\n */\n finish(): Hash256 {\n return new Hash256(this.finish256())\n }\n}\n\n/**\n * compute SHA512 hash of a list of bytes\n *\n * @param args zero or more arguments to hash\n * @returns the sha512half hash of the arguments.\n */\nfunction sha512Half(...args: Uint8Array[]): Uint8Array {\n const hash = new Sha512Half()\n args.forEach((a) => hash.put(a))\n return hash.finish256()\n}\n\n/**\n * Construct a transactionID from a Serialized Transaction\n *\n * @param serialized bytes to hash\n * @returns a Hash256 object\n */\nfunction transactionID(serialized: Uint8Array): Hash256 {\n return new Hash256(sha512Half(HashPrefix.transactionID, serialized))\n}\n\nexport { Sha512Half, sha512Half, transactionID }\n", "/* eslint-disable func-style */\n\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\nimport { coreTypes } from './types'\nimport { BinaryParser } from './serdes/binary-parser'\nimport { AccountID } from './types/account-id'\nimport { HashPrefix } from './hash-prefixes'\nimport { BinarySerializer, BytesList } from './serdes/binary-serializer'\nimport { sha512Half, transactionID } from './hashes'\nimport {\n type XrplDefinitionsBase,\n DEFAULT_DEFINITIONS,\n type FieldInstance,\n} from './enums'\nimport { STObject } from './types/st-object'\nimport { JsonObject } from './types/serialized-type'\n\n/**\n * Construct a BinaryParser\n *\n * @param bytes hex-string or Uint8Array to construct BinaryParser from\n * @param definitions rippled definitions used to parse the values of transaction types and such.\n * Can be customized for sidechains and amendments.\n * @returns BinaryParser\n */\nconst makeParser = (\n bytes: string | Uint8Array,\n definitions?: XrplDefinitionsBase,\n): BinaryParser =>\n new BinaryParser(\n bytes instanceof Uint8Array ? bytesToHex(bytes) : bytes,\n definitions,\n )\n\n/**\n * Parse BinaryParser into JSON\n *\n * @param parser BinaryParser object\n * @param definitions rippled definitions used to parse the values of transaction types and such.\n * Can be customized for sidechains and amendments.\n * @returns JSON for the bytes in the BinaryParser\n */\nconst readJSON = (\n parser: BinaryParser,\n definitions: XrplDefinitionsBase = DEFAULT_DEFINITIONS,\n): JsonObject =>\n (parser.readType(coreTypes.STObject) as STObject).toJSON(definitions)\n\n/**\n * Parse a hex-string into its JSON interpretation\n *\n * @param bytes hex-string to parse into JSON\n * @param definitions rippled definitions used to parse the values of transaction types and such.\n * Can be customized for sidechains and amendments.\n * @returns JSON\n */\nconst binaryToJSON = (\n bytes: string,\n definitions?: XrplDefinitionsBase,\n): JsonObject => readJSON(makeParser(bytes, definitions), definitions)\n\n/**\n * Interface for passing parameters to SerializeObject\n *\n * @field set signingFieldOnly to true if you want to serialize only signing fields\n */\ninterface OptionObject {\n prefix?: Uint8Array\n suffix?: Uint8Array\n signingFieldsOnly?: boolean\n definitions?: XrplDefinitionsBase\n}\n\n/**\n * Function to serialize JSON object representing a transaction\n *\n * @param object JSON object to serialize\n * @param opts options for serializing, including optional prefix, suffix, signingFieldOnly, and definitions\n * @returns A Uint8Array containing the serialized object\n */\nfunction serializeObject(\n object: JsonObject,\n opts: OptionObject = {},\n): Uint8Array {\n const { prefix, suffix, signingFieldsOnly = false, definitions } = opts\n const bytesList = new BytesList()\n\n if (prefix) {\n bytesList.put(prefix)\n }\n\n const filter = signingFieldsOnly\n ? (f: FieldInstance): boolean => f.isSigningField\n : undefined\n ;(coreTypes.STObject as typeof STObject)\n .from(object, filter, definitions)\n .toBytesSink(bytesList)\n\n if (suffix) {\n bytesList.put(suffix)\n }\n\n return bytesList.toBytes()\n}\n\n/**\n * Serialize an object for signing\n *\n * @param transaction Transaction to serialize\n * @param prefix Prefix bytes to put before the serialized object\n * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns A Uint8Array with the serialized object\n */\nfunction signingData(\n transaction: JsonObject,\n prefix: Uint8Array = HashPrefix.transactionSig,\n opts: { definitions?: XrplDefinitionsBase } = {},\n): Uint8Array {\n return serializeObject(transaction, {\n prefix,\n signingFieldsOnly: true,\n definitions: opts.definitions,\n })\n}\n\n/**\n * Interface describing fields required for a Claim\n */\ninterface ClaimObject extends JsonObject {\n channel: string\n amount: string | number\n}\n\n/**\n * Serialize a signingClaim\n *\n * @param claim A claim object to serialize\n * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns the serialized object with appropriate prefix\n */\nfunction signingClaimData(claim: ClaimObject): Uint8Array {\n const num = BigInt(String(claim.amount))\n const prefix = HashPrefix.paymentChannelClaim\n const channel = coreTypes.Hash256.from(claim.channel).toBytes()\n const amount = coreTypes.UInt64.from(num).toBytes()\n\n const bytesList = new BytesList()\n\n bytesList.put(prefix)\n bytesList.put(channel)\n bytesList.put(amount)\n return bytesList.toBytes()\n}\n\n/**\n * Serialize a transaction object for multiSigning\n *\n * @param transaction transaction to serialize\n * @param signingAccount Account to sign the transaction with\n * @param opts.definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns serialized transaction with appropriate prefix and suffix\n */\nfunction multiSigningData(\n transaction: JsonObject,\n signingAccount: string | AccountID,\n opts: { definitions: XrplDefinitionsBase } = {\n definitions: DEFAULT_DEFINITIONS,\n },\n): Uint8Array {\n const prefix = HashPrefix.transactionMultiSig\n const suffix = coreTypes.AccountID.from(signingAccount).toBytes()\n return serializeObject(transaction, {\n prefix,\n suffix,\n signingFieldsOnly: true,\n definitions: opts.definitions,\n })\n}\n\n/**\n * Interface describing fields required for a Batch signer\n * @property flags - Flags indicating Batch transaction properties\n * @property txIDs - Array of transaction IDs included in the Batch\n */\ninterface BatchObject extends JsonObject {\n flags: number\n txIDs: string[]\n}\n\n/**\n * Serialize a signingClaim\n *\n * @param batch A Batch object to serialize.\n * @returns the serialized object with appropriate prefix\n */\nfunction signingBatchData(batch: BatchObject): Uint8Array {\n if (batch.flags == null) {\n throw Error(\"No field `flags'\")\n }\n if (batch.txIDs == null) {\n throw Error('No field `txIDs`')\n }\n const prefix = HashPrefix.batch\n const flags = coreTypes.UInt32.from(batch.flags).toBytes()\n const txIDsLength = coreTypes.UInt32.from(batch.txIDs.length).toBytes()\n\n const bytesList = new BytesList()\n\n bytesList.put(prefix)\n bytesList.put(flags)\n bytesList.put(txIDsLength)\n batch.txIDs.forEach((txID: string) => {\n bytesList.put(coreTypes.Hash256.from(txID).toBytes())\n })\n\n return bytesList.toBytes()\n}\n\nexport {\n BinaryParser,\n BinarySerializer,\n BytesList,\n ClaimObject,\n BatchObject,\n makeParser,\n serializeObject,\n readJSON,\n multiSigningData,\n signingData,\n signingClaimData,\n binaryToJSON,\n sha512Half,\n transactionID,\n signingBatchData,\n}\n", "import { coreTypes } from './types'\nimport { HashPrefix } from './hash-prefixes'\nimport { Sha512Half } from './hashes'\nimport { Hash256 } from './types/hash-256'\nimport { BytesList } from './serdes/binary-serializer'\n\n/**\n * Abstract class describing a SHAMapNode\n */\nabstract class ShaMapNode {\n abstract hashPrefix(): Uint8Array\n abstract isLeaf(): boolean\n abstract isInner(): boolean\n abstract toBytesSink(list: BytesList): void\n abstract hash(): Hash256\n}\n\n/**\n * Class describing a Leaf of SHAMap\n */\nclass ShaMapLeaf extends ShaMapNode {\n constructor(\n public index: Hash256,\n public item?: ShaMapNode,\n ) {\n super()\n }\n\n /**\n * @returns true as ShaMapLeaf is a leaf node\n */\n isLeaf(): boolean {\n return true\n }\n\n /**\n * @returns false as ShaMapLeaf is not an inner node\n */\n isInner(): boolean {\n return false\n }\n\n /**\n * Get the prefix of the this.item\n *\n * @returns The hash prefix, unless this.item is undefined, then it returns an empty Uint8Array\n */\n hashPrefix(): Uint8Array {\n return this.item === undefined ? new Uint8Array(0) : this.item.hashPrefix()\n }\n\n /**\n * Hash the bytes representation of this\n *\n * @returns hash of this.item concatenated with this.index\n */\n hash(): Hash256 {\n const hash = Sha512Half.put(this.hashPrefix())\n this.toBytesSink(hash)\n return hash.finish()\n }\n\n /**\n * Write the bytes representation of this to a BytesList\n * @param list BytesList to write bytes to\n */\n toBytesSink(list: BytesList): void {\n if (this.item !== undefined) {\n this.item.toBytesSink(list)\n }\n this.index.toBytesSink(list)\n }\n}\n\n/**\n * Class defining an Inner Node of a SHAMap\n */\nclass ShaMapInner extends ShaMapNode {\n private slotBits = 0\n private branches: Array = Array(16)\n\n constructor(private depth = 0) {\n super()\n }\n\n /**\n * @returns true as ShaMapInner is an inner node\n */\n isInner(): boolean {\n return true\n }\n\n /**\n * @returns false as ShaMapInner is not a leaf node\n */\n isLeaf(): boolean {\n return false\n }\n\n /**\n * Get the hash prefix for this node\n *\n * @returns hash prefix describing an inner node\n */\n hashPrefix(): Uint8Array {\n return HashPrefix.innerNode\n }\n\n /**\n * Set a branch of this node to be another node\n *\n * @param slot Slot to add branch to this.branches\n * @param branch Branch to add\n */\n setBranch(slot: number, branch: ShaMapNode): void {\n this.slotBits = this.slotBits | (1 << slot)\n this.branches[slot] = branch\n }\n\n /**\n * @returns true if node is empty\n */\n empty(): boolean {\n return this.slotBits === 0\n }\n\n /**\n * Compute the hash of this node\n *\n * @returns The hash of this node\n */\n hash(): Hash256 {\n if (this.empty()) {\n return (coreTypes.Hash256 as typeof Hash256).ZERO_256\n }\n const hash = Sha512Half.put(this.hashPrefix())\n this.toBytesSink(hash)\n return hash.finish()\n }\n\n /**\n * Writes the bytes representation of this node to a BytesList\n *\n * @param list BytesList to write bytes to\n */\n toBytesSink(list: BytesList): void {\n for (let i = 0; i < this.branches.length; i++) {\n const branch = this.branches[i]\n const hash = branch\n ? branch.hash()\n : (coreTypes.Hash256 as typeof Hash256).ZERO_256\n hash.toBytesSink(list)\n }\n }\n\n /**\n * Add item to the SHAMap\n *\n * @param index Hash of the index of the item being inserted\n * @param item Item to insert in the map\n * @param leaf Leaf node to insert when branch doesn't exist\n */\n addItem(index?: Hash256, item?: ShaMapNode, leaf?: ShaMapLeaf): void {\n if (index === undefined) {\n throw new Error()\n }\n if (index !== undefined) {\n const nibble = index.nibblet(this.depth)\n const existing = this.branches[nibble]\n\n if (existing === undefined) {\n this.setBranch(nibble, leaf || new ShaMapLeaf(index, item))\n } else if (existing instanceof ShaMapLeaf) {\n const newInner = new ShaMapInner(this.depth + 1)\n newInner.addItem(existing.index, undefined, existing)\n newInner.addItem(index, item, leaf)\n this.setBranch(nibble, newInner)\n } else if (existing instanceof ShaMapInner) {\n existing.addItem(index, item, leaf)\n } else {\n throw new Error('invalid ShaMap.addItem call')\n }\n }\n }\n}\n\nclass ShaMap extends ShaMapInner {}\n\nexport { ShaMap, ShaMapNode, ShaMapLeaf }\n", "import { ShaMap, ShaMapNode, ShaMapLeaf } from './shamap'\nimport { HashPrefix } from './hash-prefixes'\nimport { Sha512Half } from './hashes'\nimport { BinarySerializer, serializeObject } from './binary'\nimport { Hash256 } from './types/hash-256'\nimport { STObject } from './types/st-object'\nimport { UInt64 } from './types/uint-64'\nimport { UInt32 } from './types/uint-32'\nimport { UInt8 } from './types/uint-8'\nimport { BinaryParser } from './serdes/binary-parser'\nimport { JsonObject } from './types/serialized-type'\nimport { XrplDefinitionsBase } from './enums'\n\n/**\n * Computes the hash of a list of objects\n *\n * @param itemizer Converts an item into a format that can be added to SHAMap\n * @param itemsJson Array of items to add to a SHAMap\n * @returns the hash of the SHAMap\n */\nfunction computeHash(\n itemizer: (item: JsonObject) => [Hash256?, ShaMapNode?, ShaMapLeaf?],\n itemsJson: Array,\n): Hash256 {\n const map = new ShaMap()\n itemsJson.forEach((item) => map.addItem(...itemizer(item)))\n return map.hash()\n}\n\n/**\n * Interface describing a transaction item\n */\ninterface transactionItemObject extends JsonObject {\n hash: string\n metaData: JsonObject\n}\n\n/**\n * Convert a transaction into an index and an item\n *\n * @param json transaction with metadata\n * @returns a tuple of index and item to be added to SHAMap\n */\nfunction transactionItemizer(\n json: transactionItemObject,\n): [Hash256, ShaMapNode, undefined] {\n if (!json.hash) {\n throw new Error()\n }\n const index = Hash256.from(json.hash)\n const item = {\n hashPrefix() {\n return HashPrefix.transaction\n },\n toBytesSink(sink) {\n const serializer = new BinarySerializer(sink)\n serializer.writeLengthEncoded(STObject.from(json))\n serializer.writeLengthEncoded(STObject.from(json.metaData))\n },\n } as ShaMapNode\n return [index, item, undefined]\n}\n\n/**\n * Interface describing an entry item\n */\ninterface entryItemObject extends JsonObject {\n index: string\n}\n\n/**\n * Convert an entry to a pair Hash256 and ShaMapNode\n *\n * @param json JSON describing a ledger entry item\n * @returns a tuple of index and item to be added to SHAMap\n */\nfunction entryItemizer(\n json: entryItemObject,\n): [Hash256, ShaMapNode, undefined] {\n const index = Hash256.from(json.index)\n const bytes = serializeObject(json)\n const item = {\n hashPrefix() {\n return HashPrefix.accountStateEntry\n },\n toBytesSink(sink) {\n sink.put(bytes)\n },\n } as ShaMapNode\n return [index, item, undefined]\n}\n\n/**\n * Function computing the hash of a transaction tree\n *\n * @param param An array of transaction objects to hash\n * @returns A Hash256 object\n */\nfunction transactionTreeHash(param: Array): Hash256 {\n const itemizer = transactionItemizer as (\n json: JsonObject,\n ) => [Hash256, ShaMapNode, undefined]\n return computeHash(itemizer, param)\n}\n\n/**\n * Function computing the hash of accountState\n *\n * @param param A list of accountStates hash\n * @returns A Hash256 object\n */\nfunction accountStateHash(param: Array): Hash256 {\n const itemizer = entryItemizer as (\n json: JsonObject,\n ) => [Hash256, ShaMapNode, undefined]\n return computeHash(itemizer, param)\n}\n\n/**\n * Interface describing a ledger header\n */\ninterface ledgerObject {\n ledger_index: number\n total_coins: string | number | bigint\n parent_hash: string\n transaction_hash: string\n account_hash: string\n parent_close_time: number\n close_time: number\n close_time_resolution: number\n close_flags: number\n}\n\n/**\n * Serialize and hash a ledger header\n *\n * @param header a ledger header\n * @returns the hash of header\n */\nfunction ledgerHash(header: ledgerObject): Hash256 {\n const hash = new Sha512Half()\n hash.put(HashPrefix.ledgerHeader)\n if (\n header.parent_close_time === undefined ||\n header.close_flags === undefined\n ) {\n throw new Error()\n }\n\n UInt32.from(header.ledger_index).toBytesSink(hash)\n UInt64.from(BigInt(String(header.total_coins))).toBytesSink(hash)\n Hash256.from(header.parent_hash).toBytesSink(hash)\n Hash256.from(header.transaction_hash).toBytesSink(hash)\n Hash256.from(header.account_hash).toBytesSink(hash)\n UInt32.from(header.parent_close_time).toBytesSink(hash)\n UInt32.from(header.close_time).toBytesSink(hash)\n UInt8.from(header.close_time_resolution).toBytesSink(hash)\n UInt8.from(header.close_flags).toBytesSink(hash)\n return hash.finish()\n}\n\n/**\n * Decodes a serialized ledger header\n *\n * @param binary A serialized ledger header\n * @param definitions Type definitions to parse the ledger objects.\n * Used if there are non-default ledger objects to decode.\n * @returns A JSON object describing a ledger header\n */\nfunction decodeLedgerData(\n binary: string,\n definitions?: XrplDefinitionsBase,\n): object {\n if (typeof binary !== 'string') {\n throw new Error('binary must be a hex string')\n }\n const parser = new BinaryParser(binary, definitions)\n return {\n ledger_index: parser.readUInt32(),\n total_coins: parser.readType(UInt64).valueOf().toString(),\n parent_hash: parser.readType(Hash256).toHex(),\n transaction_hash: parser.readType(Hash256).toHex(),\n account_hash: parser.readType(Hash256).toHex(),\n parent_close_time: parser.readUInt32(),\n close_time: parser.readUInt32(),\n close_time_resolution: parser.readUInt8(),\n close_flags: parser.readUInt8(),\n }\n}\n\nexport { accountStateHash, transactionTreeHash, ledgerHash, decodeLedgerData }\n", "import { coreTypes } from './types'\nimport BigNumber from 'bignumber.js'\nimport { bytesToHex, hexToBytes } from '@xrplf/isomorphic/utils'\n\n/**\n * class for encoding and decoding quality\n */\nclass quality {\n /**\n * Encode quality amount\n *\n * @param arg string representation of an amount\n * @returns Serialized quality\n */\n static encode(quality: string): Uint8Array {\n const decimal = BigNumber(quality)\n const exponent = (decimal?.e || 0) - 15\n const qualityString = decimal.times(`1e${-exponent}`).abs().toString()\n const bytes = coreTypes.UInt64.from(BigInt(qualityString)).toBytes()\n bytes[0] = exponent + 100\n return bytes\n }\n\n /**\n * Decode quality amount\n *\n * @param arg hex-string denoting serialized quality\n * @returns deserialized quality\n */\n static decode(quality: string): BigNumber {\n const bytes = hexToBytes(quality).slice(-8)\n const exponent = bytes[0] - 100\n const mantissa = new BigNumber(`0x${bytesToHex(bytes.slice(1))}`)\n return mantissa.times(`1e${exponent}`)\n }\n}\n\nexport { quality }\n", "import {\n DEFAULT_DEFINITIONS,\n Field,\n TransactionType,\n LedgerEntryType,\n Type,\n TransactionResult,\n} from './enums'\nimport * as types from './types'\nimport * as binary from './binary'\nimport { ShaMap } from './shamap'\nimport * as ledgerHashes from './ledger-hashes'\nimport * as hashes from './hashes'\nimport { quality } from './quality'\nimport { HashPrefix } from './hash-prefixes'\n\nexport {\n hashes,\n binary,\n ledgerHashes,\n DEFAULT_DEFINITIONS,\n Field,\n TransactionType,\n LedgerEntryType,\n Type,\n TransactionResult,\n quality,\n HashPrefix,\n ShaMap,\n types,\n}\n", "import {\n type DefinitionsData,\n XrplDefinitionsBase,\n} from './xrpl-definitions-base'\nimport { coreTypes } from '../types'\nimport { SerializedType } from '../types/serialized-type'\n\n/**\n * Stores the various types and fields for rippled to be used to encode/decode information later on.\n * Should be used instead of XrplDefinitionsBase since this defines default `types` for serializing/deserializing\n * ledger data.\n */\nexport class XrplDefinitions extends XrplDefinitionsBase {\n /**\n * Present rippled types in a typed and updatable format.\n * For an example of the input format see `definitions.json`\n * To generate a new definitions file from rippled source code, use the tool at\n * `packages/ripple-binary-codec/tools/generateDefinitions.js`.\n *\n * See the definitions.test.js file for examples of how to create your own updated definitions.json.\n *\n * @param enums - A json encoding of the core types, transaction types, transaction results, transaction names, and fields.\n * @param additionalTypes - A list of SerializedType objects with the same name as the fields defined.\n * These types will be included in addition to the coreTypes used on mainnet.\n */\n constructor(\n enums: DefinitionsData,\n additionalTypes?: Record,\n ) {\n const types = Object.assign({}, coreTypes, additionalTypes)\n super(enums, types)\n }\n}\n", "import { quality, binary, HashPrefix } from './coretypes'\nimport { decodeLedgerData } from './ledger-hashes'\nimport { ClaimObject, BatchObject } from './binary'\nimport { JsonObject } from './types/serialized-type'\nimport {\n XrplDefinitionsBase,\n TRANSACTION_TYPES,\n DEFAULT_DEFINITIONS,\n} from './enums'\nimport { XrplDefinitions } from './enums/xrpl-definitions'\nimport { coreTypes } from './types'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\nconst {\n signingData,\n signingClaimData,\n multiSigningData,\n signingBatchData,\n binaryToJSON,\n serializeObject,\n} = binary\n\n/**\n * Decode a transaction\n *\n * @param binary hex-string of the encoded transaction\n * @param definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns the JSON representation of the transaction\n */\nfunction decode(binary: string, definitions?: XrplDefinitionsBase): JsonObject {\n if (typeof binary !== 'string') {\n throw new Error('binary must be a hex string')\n }\n return binaryToJSON(binary, definitions)\n}\n\n/**\n * Encode a transaction\n *\n * @param json The JSON representation of a transaction\n * @param definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n *\n * @returns A hex-string of the encoded transaction\n */\nfunction encode(json: object, definitions?: XrplDefinitionsBase): string {\n if (typeof json !== 'object') {\n throw new Error()\n }\n return bytesToHex(serializeObject(json as JsonObject, { definitions }))\n}\n\n/**\n * Encode a transaction and prepare for signing\n *\n * @param json JSON object representing the transaction\n * @param signer string representing the account to sign the transaction with\n * @param definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns a hex string of the encoded transaction\n */\nfunction encodeForSigning(\n json: object,\n definitions?: XrplDefinitionsBase,\n): string {\n if (typeof json !== 'object') {\n throw new Error()\n }\n return bytesToHex(\n signingData(json as JsonObject, HashPrefix.transactionSig, {\n definitions,\n }),\n )\n}\n\n/**\n * Encode a payment channel claim for signing.\n *\n * @param json JSON object representing the claim.\n * @returns a hex string of the encoded claim.\n */\nfunction encodeForSigningClaim(json: object): string {\n if (typeof json !== 'object') {\n throw new Error()\n }\n return bytesToHex(signingClaimData(json as ClaimObject))\n}\n\n/**\n * Encode a transaction and prepare for multi-signing.\n *\n * @param json JSON object representing the transaction.\n * @param signer string representing the account to sign the transaction with.\n * @param definitions Custom rippled types to use instead of the default. Used for sidechains and amendments.\n * @returns a hex string of the encoded transaction.\n */\nfunction encodeForMultisigning(\n json: object,\n signer: string,\n definitions?: XrplDefinitionsBase,\n): string {\n if (typeof json !== 'object') {\n throw new Error()\n }\n\n const definitionsOpt = definitions ? { definitions } : undefined\n return bytesToHex(\n multiSigningData(json as JsonObject, signer, definitionsOpt),\n )\n}\n\n/**\n * Encode a Batch transaction for signing.\n *\n * @param json JSON object representing the transaction.\n * @returns a hex string of the encoded transaction.\n */\nfunction encodeForSigningBatch(json: object): string {\n if (typeof json !== 'object') {\n throw new Error('Need an object to encode a Batch transaction')\n }\n return bytesToHex(signingBatchData(json as BatchObject))\n}\n\n/**\n * Encode a quality value\n *\n * @param value string representation of a number\n * @returns a hex-string representing the quality\n */\nfunction encodeQuality(value: string): string {\n if (typeof value !== 'string') {\n throw new Error()\n }\n return bytesToHex(quality.encode(value))\n}\n\n/**\n * Decode a quality value\n *\n * @param value hex-string of a quality\n * @returns a string representing the quality\n */\nfunction decodeQuality(value: string): string {\n if (typeof value !== 'string') {\n throw new Error()\n }\n return quality.decode(value).toString()\n}\n\nexport {\n decode,\n encode,\n encodeForSigning,\n encodeForSigningClaim,\n encodeForMultisigning,\n encodeForSigningBatch,\n encodeQuality,\n decodeQuality,\n decodeLedgerData,\n TRANSACTION_TYPES,\n XrplDefinitions,\n XrplDefinitionsBase,\n DEFAULT_DEFINITIONS,\n coreTypes,\n}\n", "import type { Transaction } from '../transactions'\n\nconst HEX_REGEX = /^[0-9A-Fa-f]+$/u\nexport const INTEGER_SANITY_CHECK = /^[0-9]+$/u\n\n/**\n * Verify that all fields of an object are in fields.\n *\n * @param obj - Object to verify fields.\n * @param fields - Fields to verify.\n * @returns True if keys in object are all in fields.\n */\nexport function onlyHasFields(\n obj: Record,\n fields: string[],\n): boolean {\n return Object.keys(obj).every((key: string) => fields.includes(key))\n}\n\n/**\n * Perform bitwise AND (&) to check if a flag is enabled within Flags (as a number).\n *\n * @param Flags - A number that represents flags enabled.\n * @param checkFlag - A specific flag to check if it's enabled within Flags.\n * @returns True if checkFlag is enabled within Flags.\n */\nexport function isFlagEnabled(Flags: number, checkFlag: number): boolean {\n // eslint-disable-next-line no-bitwise -- flags need bitwise\n return (BigInt(checkFlag) & BigInt(Flags)) === BigInt(checkFlag)\n}\n\n/**\n * Determines whether a transaction has a certain flag enabled.\n *\n * @param tx The transaction to check for the flag.\n * @param flag The flag to check.\n * @param flagName The name of the flag to check, used for object flags.\n * @returns Whether `flag` is enabled on `tx`.\n */\nexport function hasFlag(\n tx: Transaction | Record,\n flag: number,\n flagName: string,\n): boolean {\n if (tx.Flags == null) {\n return false\n }\n if (typeof tx.Flags === 'number') {\n return isFlagEnabled(tx.Flags, flag)\n }\n return tx.Flags[flagName] === true\n}\n\n/**\n * Check if string is in hex format.\n *\n * @param str - The string to check if it's in hex format.\n * @returns True if string is in hex format\n */\nexport function isHex(str: string): boolean {\n return HEX_REGEX.test(str)\n}\n", "/* eslint-disable max-lines -- common utility file */\n\nimport { HEX_REGEX } from '@xrplf/isomorphic/utils'\nimport { isValidClassicAddress, isValidXAddress } from 'ripple-address-codec'\nimport { TRANSACTION_TYPES } from 'ripple-binary-codec'\n\nimport { ValidationError } from '../../errors'\nimport {\n Amount,\n AuthorizeCredential,\n ClawbackAmount,\n Currency,\n IssuedCurrency,\n IssuedCurrencyAmount,\n MPTAmount,\n Memo,\n Signer,\n XChainBridge,\n} from '../common'\nimport { isHex, onlyHasFields } from '../utils'\n\nconst MEMO_SIZE = 3\nexport const MAX_AUTHORIZED_CREDENTIALS = 8\nconst MAX_CREDENTIAL_BYTE_LENGTH = 64\nconst MAX_CREDENTIAL_TYPE_LENGTH = MAX_CREDENTIAL_BYTE_LENGTH * 2\n\n// Used for Vault transactions\nexport const VAULT_DATA_MAX_BYTE_LENGTH = 256\n\nfunction isMemo(obj: unknown): obj is Memo {\n if (!isRecord(obj)) {\n return false\n }\n\n const memo = obj.Memo\n if (!isRecord(memo)) {\n return false\n }\n const size = Object.keys(memo).length\n const validData =\n memo.MemoData == null || (isString(memo.MemoData) && isHex(memo.MemoData))\n const validFormat =\n memo.MemoFormat == null ||\n (isString(memo.MemoFormat) && isHex(memo.MemoFormat))\n const validType =\n memo.MemoType == null || (isString(memo.MemoType) && isHex(memo.MemoType))\n\n return (\n size >= 1 &&\n size <= MEMO_SIZE &&\n validData &&\n validFormat &&\n validType &&\n onlyHasFields(memo, ['MemoFormat', 'MemoData', 'MemoType'])\n )\n}\n\nconst SIGNER_SIZE = 3\n\nfunction isSigner(obj: unknown): obj is Signer {\n if (!isRecord(obj)) {\n return false\n }\n\n const signer = obj.Signer\n if (!isRecord(signer)) {\n return false\n }\n\n return (\n Object.keys(signer).length === SIGNER_SIZE &&\n isString(signer.Account) &&\n isString(signer.TxnSignature) &&\n isString(signer.SigningPubKey)\n )\n}\n\n// Currency object sizes\nconst XRP_CURRENCY_SIZE = 1\nconst MPT_CURRENCY_SIZE = 1\nconst ISSUE_CURRENCY_SIZE = 2\n\n// Currency Amount object sizes\nconst MPT_CURRENCY_AMOUNT_SIZE = 2\nconst ISSUED_CURRENCY_AMOUNT_SIZE = 3\n\nconst XCHAIN_BRIDGE_SIZE = 4\nconst AUTHORIZE_CREDENTIAL_SIZE = 1\n\n/**\n * Verify the form and type of a Record/Object at runtime.\n *\n * @param value - The object to check the form and type of.\n * @returns Whether the Record/Object is properly formed.\n */\nexport function isRecord(value: unknown): value is Record {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\n/**\n * Verify the form and type of a string at runtime.\n *\n * @param str - The object to check the form and type of.\n * @returns Whether the string is properly formed.\n */\nexport function isString(str: unknown): str is string {\n return typeof str === 'string'\n}\n\n/**\n * Verify the form and type of a number at runtime.\n *\n * @param num - The object to check the form and type of.\n * @returns Whether the number is properly formed.\n */\nexport function isNumber(num: unknown): num is number {\n return typeof num === 'number'\n}\n\n/**\n * Verify the form and type of a null value at runtime.\n *\n * @param inp - The value to check the form and type of.\n * @returns Whether the value is properly formed.\n */\nexport function isNull(inp: unknown): inp is null {\n return inp == null\n}\n\n/**\n * Verify that a certain field has a certain exact value at runtime.\n *\n * @param value The value to compare against.\n * @returns Whether the number is properly formed and within the bounds.\n */\nexport function isValue(value: V): (inp: unknown) => inp is V {\n // eslint-disable-next-line func-style -- returning a function\n const isValueInternal = (inp: unknown): inp is V => inp === value\n return isValueInternal\n}\n\n/**\n * Checks whether the given value is a valid XRPL number string.\n * Accepts integer, decimal, or scientific notation strings.\n *\n * Examples of valid input:\n * - \"123\"\n * - \"-987.654\"\n * - \"+3.14e10\"\n * - \"-7.2e-9\"\n *\n * @param value - The value to check.\n * @returns True if value is a string that matches the XRPL number format, false otherwise.\n */\nexport function isXRPLNumber(value: unknown): value is XRPLNumber {\n // Matches optional sign, digits, optional decimal, optional exponent (scientific)\n // Allows leading zeros, but not empty string, lone sign, or missing digits\n return (\n typeof value === 'string' &&\n /^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][-+]?\\d+)?$/u.test(value.trim())\n )\n}\n\n/**\n * Verify the form and type of a Currency at runtime.\n *\n * @param input - The input to check the form and type of.\n * @returns Whether the Currency is properly formed.\n */\nexport function isCurrency(input: unknown): input is Currency {\n return (\n isRecord(input) &&\n ((Object.keys(input).length === ISSUE_CURRENCY_SIZE &&\n isString(input.issuer) &&\n isString(input.currency)) ||\n (Object.keys(input).length === XRP_CURRENCY_SIZE &&\n input.currency === 'XRP') ||\n (Object.keys(input).length === MPT_CURRENCY_SIZE &&\n isString(input.mpt_issuance_id)))\n )\n}\n\n/**\n * Verify the form and type of an IssuedCurrency at runtime.\n *\n * @param input - The input to check the form and type of.\n * @returns Whether the IssuedCurrency is properly formed.\n */\nexport function isIssuedCurrency(input: unknown): input is IssuedCurrency {\n return (\n isRecord(input) &&\n ((Object.keys(input).length === ISSUE_CURRENCY_SIZE &&\n isString(input.issuer) &&\n isString(input.currency)) ||\n (Object.keys(input).length === XRP_CURRENCY_SIZE &&\n input.currency === 'XRP'))\n )\n}\n\n/**\n * Verify the form and type of an IssuedCurrencyAmount at runtime.\n *\n * @param input - The input to check the form and type of.\n * @returns Whether the IssuedCurrencyAmount is properly formed.\n */\nexport function isIssuedCurrencyAmount(\n input: unknown,\n): input is IssuedCurrencyAmount {\n return (\n isRecord(input) &&\n Object.keys(input).length === ISSUED_CURRENCY_AMOUNT_SIZE &&\n isString(input.value) &&\n isString(input.issuer) &&\n isString(input.currency)\n )\n}\n\n/**\n * Verify the form and type of an AuthorizeCredential at runtime\n *\n * @param input - The input to check the form and type of\n * @returns Whether the AuthorizeCredential is properly formed\n */\nexport function isAuthorizeCredential(\n input: unknown,\n): input is AuthorizeCredential {\n return (\n isRecord(input) &&\n isRecord(input.Credential) &&\n Object.keys(input).length === AUTHORIZE_CREDENTIAL_SIZE &&\n typeof input.Credential.CredentialType === 'string' &&\n typeof input.Credential.Issuer === 'string'\n )\n}\n\n/**\n * Verify the form and type of an MPT at runtime.\n *\n * @param input - The input to check the form and type of.\n * @returns Whether the MPTAmount is properly formed.\n */\nexport function isMPTAmount(input: unknown): input is MPTAmount {\n return (\n isRecord(input) &&\n Object.keys(input).length === MPT_CURRENCY_AMOUNT_SIZE &&\n typeof input.value === 'string' &&\n typeof input.mpt_issuance_id === 'string'\n )\n}\n\n/**\n * Type guard to verify if the input is a valid ClawbackAmount.\n *\n * A ClawbackAmount can be either an {@link IssuedCurrencyAmount} or an {@link MPTAmount}.\n * This function checks if the input matches either type.\n *\n * @param input - The value to check for ClawbackAmount structure.\n * @returns True if the input is an IssuedCurrencyAmount or MPTAmount, otherwise false.\n */\nexport function isClawbackAmount(input: unknown): input is ClawbackAmount {\n return isIssuedCurrencyAmount(input) || isMPTAmount(input)\n}\n\n/**\n * Must be a valid account address\n */\nexport type Account = string\n\n/**\n * XRPL Number type represented as a string.\n *\n * This string can be an integer (e.g., \"123\"), a decimal (e.g., \"123.45\"),\n * or in scientific notation (e.g., \"1.23e5\", \"-4.56e-7\").\n * Used for fields that accept arbitrary-precision numbers in XRPL transactions and ledger objects.\n */\nexport type XRPLNumber = string\n\n/**\n * Verify a string is in fact a valid account address.\n *\n * @param account - The object to check the form and type of.\n * @returns Whether the account is properly formed account for a transaction.\n */\nexport function isAccount(account: unknown): account is Account {\n return (\n typeof account === 'string' &&\n (isValidClassicAddress(account) || isValidXAddress(account))\n )\n}\n\n/**\n * Verify the form and type of an Amount at runtime.\n *\n * @param amount - The object to check the form and type of.\n * @returns Whether the Amount is properly formed.\n */\nexport function isAmount(amount: unknown): amount is Amount {\n return (\n typeof amount === 'string' ||\n isIssuedCurrencyAmount(amount) ||\n isMPTAmount(amount)\n )\n}\n\n/**\n * Verify the form and type of an XChainBridge at runtime.\n *\n * @param input - The input to check the form and type of.\n * @returns Whether the XChainBridge is properly formed.\n */\nexport function isXChainBridge(input: unknown): input is XChainBridge {\n return (\n isRecord(input) &&\n Object.keys(input).length === XCHAIN_BRIDGE_SIZE &&\n typeof input.LockingChainDoor === 'string' &&\n isIssuedCurrency(input.LockingChainIssue) &&\n typeof input.IssuingChainDoor === 'string' &&\n isIssuedCurrency(input.IssuingChainIssue)\n )\n}\n\n/**\n * Verify the form and type of an Array at runtime.\n *\n * @param input - The object to check the form and type of.\n * @returns Whether the Array is properly formed.\n */\nexport function isArray(input: unknown): input is T[] {\n return input != null && Array.isArray(input)\n}\n\n/* eslint-disable @typescript-eslint/restrict-template-expressions -- tx.TransactionType is checked before any calls */\n\n/**\n * Verify the form and type of a required type for a transaction at runtime.\n *\n * @param tx - The object input to check the form and type of.\n * @param param - The object parameter.\n * @param checkValidity - The function to use to check the type.\n * @param errorOpts - Extra values to make the error message easier to understand.\n * @param errorOpts.txType - The transaction type throwing the error.\n * @param errorOpts.paramName - The name of the parameter in the transaction with the error.\n * @throws ValidationError if the parameter is missing or invalid.\n */\n// eslint-disable-next-line max-params -- helper function\nexport function validateRequiredField<\n T extends Record,\n K extends keyof T,\n V,\n>(\n tx: T,\n param: K,\n checkValidity: (inp: unknown) => inp is V,\n errorOpts: {\n txType?: string\n paramName?: string\n } = {},\n): asserts tx is T & { [P in K]: V } {\n const paramNameStr = errorOpts.paramName ?? param\n const txType = errorOpts.txType ?? tx.TransactionType\n if (tx[param] == null) {\n throw new ValidationError(\n `${txType}: missing field ${String(paramNameStr)}`,\n )\n }\n\n if (!checkValidity(tx[param])) {\n throw new ValidationError(\n `${txType}: invalid field ${String(paramNameStr)}`,\n )\n }\n}\n\n/**\n * Verify the form and type of an optional type for a transaction at runtime.\n *\n * @param tx - The transaction input to check the form and type of.\n * @param param - The object parameter.\n * @param checkValidity - The function to use to check the type.\n * @param errorOpts - Extra values to make the error message easier to understand.\n * @param errorOpts.txType - The transaction type throwing the error.\n * @param errorOpts.paramName - The name of the parameter in the transaction with the error.\n * @throws ValidationError if the parameter is invalid.\n */\n// eslint-disable-next-line max-params -- helper function\nexport function validateOptionalField<\n T extends Record,\n K extends keyof T,\n V,\n>(\n tx: T,\n param: K,\n checkValidity: (inp: unknown) => inp is V,\n errorOpts: {\n txType?: string\n paramName?: string\n } = {},\n): asserts tx is T & { [P in K]: V | undefined } {\n const paramNameStr = errorOpts.paramName ?? param\n const txType = errorOpts.txType ?? tx.TransactionType\n if (tx[param] !== undefined && !checkValidity(tx[param])) {\n throw new ValidationError(\n `${txType}: invalid field ${String(paramNameStr)}`,\n )\n }\n}\n\n/* eslint-enable @typescript-eslint/restrict-template-expressions -- checked before */\n\nexport enum GlobalFlags {\n tfInnerBatchTxn = 0x40000000,\n}\n\nexport interface GlobalFlagsInterface {\n tfInnerBatchTxn?: boolean\n}\n\n/**\n * Every transaction has the same set of common fields.\n */\nexport interface BaseTransaction extends Record {\n /** The unique address of the transaction sender. */\n Account: Account\n /**\n * The type of transaction. Valid types include: `Payment`, `OfferCreate`,\n * `TrustSet`, and many others.\n */\n TransactionType: string\n /**\n * Integer amount of XRP, in drops, to be destroyed as a cost for\n * distributing this transaction to the network. Some transaction types have\n * different minimum requirements.\n */\n Fee?: string\n /**\n * The sequence number of the account sending the transaction. A transaction\n * is only valid if the Sequence number is exactly 1 greater than the previous\n * transaction from the same account. The special case 0 means the transaction\n * is using a Ticket instead.\n */\n Sequence?: number\n /**\n * Hash value identifying another transaction. If provided, this transaction\n * is only valid if the sending account's previously-sent transaction matches\n * the provided hash.\n */\n AccountTxnID?: string\n /** Set of bit-flags for this transaction. */\n Flags?: number | GlobalFlagsInterface\n /**\n * Highest ledger index this transaction can appear in. Specifying this field\n * places a strict upper limit on how long the transaction can wait to be\n * validated or rejected.\n */\n LastLedgerSequence?: number\n /**\n * Additional arbitrary information used to identify this transaction.\n */\n Memos?: Memo[]\n /**\n * Array of objects that represent a multi-signature which authorizes this\n * transaction.\n */\n Signers?: Signer[]\n /**\n * Arbitrary integer used to identify the reason for this payment, or a sender\n * on whose behalf this transaction is made. Conventionally, a refund should\n * specify the initial payment's SourceTag as the refund payment's\n * DestinationTag.\n */\n SourceTag?: number\n /**\n * Hex representation of the public key that corresponds to the private key\n * used to sign this transaction. If an empty string, indicates a\n * multi-signature is present in the Signers field instead.\n */\n SigningPubKey?: string\n /**\n * The sequence number of the ticket to use in place of a Sequence number. If\n * this is provided, Sequence must be 0. Cannot be used with AccountTxnID.\n */\n TicketSequence?: number\n /**\n * The signature that verifies this transaction as originating from the\n * account it says it is from.\n */\n TxnSignature?: string\n /**\n * The network id of the transaction.\n */\n NetworkID?: number\n /**\n * The delegate account that is sending the transaction.\n */\n Delegate?: Account\n}\n\n/**\n * Verify the common fields of a transaction. The validate functionality will be\n * optional, and will check transaction form at runtime. This should be called\n * any time a transaction will be verified.\n *\n * @param common - An interface w/ common transaction fields.\n * @throws When the common param is malformed.\n */\n// eslint-disable-next-line max-statements, max-lines-per-function -- lines required for validation\nexport function validateBaseTransaction(\n common: unknown,\n): asserts common is BaseTransaction {\n if (!isRecord(common)) {\n throw new ValidationError(\n 'BaseTransaction: invalid, expected a valid object',\n )\n }\n\n if (common.TransactionType === undefined) {\n throw new ValidationError('BaseTransaction: missing field TransactionType')\n }\n\n if (typeof common.TransactionType !== 'string') {\n throw new ValidationError('BaseTransaction: TransactionType not string')\n }\n\n if (!TRANSACTION_TYPES.includes(common.TransactionType)) {\n throw new ValidationError(\n `BaseTransaction: Unknown TransactionType ${common.TransactionType}`,\n )\n }\n\n validateRequiredField(common, 'Account', isString)\n\n validateOptionalField(common, 'Fee', isString)\n\n validateOptionalField(common, 'Sequence', isNumber)\n\n validateOptionalField(common, 'AccountTxnID', isString)\n\n validateOptionalField(common, 'LastLedgerSequence', isNumber)\n\n const memos = common.Memos\n if (memos != null && (!isArray(memos) || !memos.every(isMemo))) {\n throw new ValidationError('BaseTransaction: invalid Memos')\n }\n\n const signers = common.Signers\n\n if (\n signers != null &&\n (!isArray(signers) || signers.length === 0 || !signers.every(isSigner))\n ) {\n throw new ValidationError('BaseTransaction: invalid Signers')\n }\n\n validateOptionalField(common, 'SourceTag', isNumber)\n\n validateOptionalField(common, 'SigningPubKey', isString)\n\n validateOptionalField(common, 'TicketSequence', isNumber)\n\n validateOptionalField(common, 'TxnSignature', isString)\n\n validateOptionalField(common, 'NetworkID', isNumber)\n\n validateOptionalField(common, 'Delegate', isAccount)\n\n const delegate = common.Delegate\n if (delegate != null && delegate === common.Account) {\n throw new ValidationError(\n 'BaseTransaction: Account and Delegate addresses cannot be the same',\n )\n }\n}\n\n/**\n * Parse the value of an amount, expressed either in XRP or as an Issued Currency, into a number.\n *\n * @param amount - An Amount to parse for its value.\n * @returns The parsed amount value, or NaN if the amount count not be parsed.\n */\nexport function parseAmountValue(amount: unknown): number {\n if (!isAmount(amount)) {\n return NaN\n }\n if (typeof amount === 'string') {\n return parseFloat(amount)\n }\n return parseFloat(amount.value)\n}\n\n/**\n * Verify the form and type of a CredentialType at runtime.\n *\n * @param tx A CredentialType Transaction.\n * @throws when the CredentialType is malformed.\n */\nexport function validateCredentialType<\n T extends BaseTransaction & Record,\n>(tx: T): void {\n if (typeof tx.TransactionType !== 'string') {\n throw new ValidationError('Invalid TransactionType')\n }\n if (tx.CredentialType === undefined) {\n throw new ValidationError(\n `${tx.TransactionType}: missing field CredentialType`,\n )\n }\n\n if (!isString(tx.CredentialType)) {\n throw new ValidationError(\n `${tx.TransactionType}: CredentialType must be a string`,\n )\n }\n if (tx.CredentialType.length === 0) {\n throw new ValidationError(\n `${tx.TransactionType}: CredentialType cannot be an empty string`,\n )\n } else if (tx.CredentialType.length > MAX_CREDENTIAL_TYPE_LENGTH) {\n throw new ValidationError(\n `${tx.TransactionType}: CredentialType length cannot be > ${MAX_CREDENTIAL_TYPE_LENGTH}`,\n )\n }\n\n if (!HEX_REGEX.test(tx.CredentialType)) {\n throw new ValidationError(\n `${tx.TransactionType}: CredentialType must be encoded in hex`,\n )\n }\n}\n\n/**\n * Check a CredentialAuthorize array for parameter errors\n *\n * @param credentials An array of credential IDs to check for errors\n * @param transactionType The transaction type to include in error messages\n * @param isStringID Toggle for if array contains IDs instead of AuthorizeCredential objects\n * @param maxCredentials The maximum length of the credentials array.\n * PermissionedDomainSet transaction uses 10, other transactions use 8.\n * @throws Validation Error if the formatting is incorrect\n */\n// eslint-disable-next-line max-params, max-lines-per-function -- separating logic further will add unnecessary complexity\nexport function validateCredentialsList(\n credentials: unknown,\n transactionType: string,\n isStringID: boolean,\n maxCredentials: number,\n): void {\n if (credentials == null) {\n return\n }\n if (!isArray(credentials)) {\n throw new ValidationError(\n `${transactionType}: Credentials must be an array`,\n )\n }\n if (credentials.length > maxCredentials) {\n throw new ValidationError(\n `${transactionType}: Credentials length cannot exceed ${maxCredentials} elements`,\n )\n } else if (credentials.length === 0) {\n throw new ValidationError(\n `${transactionType}: Credentials cannot be an empty array`,\n )\n }\n credentials.forEach((credential) => {\n if (isStringID) {\n if (!isString(credential)) {\n throw new ValidationError(\n `${transactionType}: Invalid Credentials ID list format`,\n )\n }\n } else if (!isAuthorizeCredential(credential)) {\n throw new ValidationError(\n `${transactionType}: Invalid Credentials format`,\n )\n }\n })\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- checked above\n if (containsDuplicates(credentials as string[] | AuthorizeCredential[])) {\n throw new ValidationError(\n `${transactionType}: Credentials cannot contain duplicate elements`,\n )\n }\n}\n\n// Type guard to ensure we're working with AuthorizeCredential[]\n// Note: This is not a rigorous type-guard. A more thorough solution would be to iterate over the array and check each item.\nfunction isAuthorizeCredentialArray(\n list: AuthorizeCredential[] | string[],\n): list is AuthorizeCredential[] {\n return typeof list[0] !== 'string'\n}\n\n/**\n * Check if an array of objects contains any duplicates.\n *\n * @param objectList - Array of objects to check for duplicates\n * @returns True if duplicates exist, false otherwise\n */\nexport function containsDuplicates(\n objectList: AuthorizeCredential[] | string[],\n): boolean {\n // Case-1: Process a list of string-IDs\n if (typeof objectList[0] === 'string') {\n const objSet = new Set(objectList.map((obj) => JSON.stringify(obj)))\n return objSet.size !== objectList.length\n }\n\n // Case-2: Process a list of nested objects\n const seen = new Set()\n\n if (isAuthorizeCredentialArray(objectList)) {\n for (const item of objectList) {\n const key = `${item.Credential.Issuer}-${item.Credential.CredentialType}`\n if (seen.has(key)) {\n return true\n }\n seen.add(key)\n }\n }\n\n return false\n}\n\nconst _DOMAIN_ID_LENGTH = 64\n\n/**\n * Utility method used across OfferCreate and Payment transactions to validate the DomainID.\n *\n * @param domainID - The domainID is a 64-character string that is used to identify a domain.\n *\n * @returns true if the domainID is a valid 64-character string, false otherwise\n */\nexport function isDomainID(domainID: unknown): domainID is string {\n return (\n isString(domainID) &&\n domainID.length === _DOMAIN_ID_LENGTH &&\n isHex(domainID)\n )\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n Account,\n BaseTransaction,\n GlobalFlagsInterface,\n isAccount,\n validateBaseTransaction,\n validateOptionalField,\n} from './common'\n\n/**\n * Enum for AccountSet Flags.\n *\n * @category Transaction Flags\n */\nexport enum AccountSetAsfFlags {\n /** Require a destination tag to send transactions to this account. */\n asfRequireDest = 1,\n /**\n * Require authorization for users to hold balances issued by this address\n * can only be enabled if the address has no trust lines connected to it.\n */\n asfRequireAuth = 2,\n /** XRP should not be sent to this account. */\n asfDisallowXRP = 3,\n /**\n * Disallow use of the master key pair. Can only be enabled if the account\n * has configured another way to sign transactions, such as a Regular Key or a\n * Signer List.\n */\n asfDisableMaster = 4,\n /**\n * Track the ID of this account's most recent transaction. Required for\n * AccountTxnID.\n */\n asfAccountTxnID = 5,\n /**\n * Permanently give up the ability to freeze individual trust lines or\n * disable Global Freeze. This flag can never be disabled after being enabled.\n */\n asfNoFreeze = 6,\n /** Freeze all assets issued by this account. */\n asfGlobalFreeze = 7,\n /** Enable rippling on this account's trust lines by default. */\n asfDefaultRipple = 8,\n /** Enable Deposit Authorization on this account. */\n asfDepositAuth = 9,\n /**\n * Allow another account to mint and burn tokens on behalf of this account.\n */\n asfAuthorizedNFTokenMinter = 10,\n /** asf 11 is reserved for Hooks amendment */\n /** Disallow other accounts from creating incoming NFTOffers */\n asfDisallowIncomingNFTokenOffer = 12,\n /** Disallow other accounts from creating incoming Checks */\n asfDisallowIncomingCheck = 13,\n /** Disallow other accounts from creating incoming PayChannels */\n asfDisallowIncomingPayChan = 14,\n /** Disallow other accounts from creating incoming Trustlines */\n asfDisallowIncomingTrustline = 15,\n /** Permanently gain the ability to claw back issued IOUs */\n asfAllowTrustLineClawback = 16,\n /** Issuers allow their IOUs to be used as escrow amounts */\n asfAllowTrustLineLocking = 17,\n}\n\n/**\n * Enum for AccountSet Transaction Flags.\n *\n * @category Transaction Flags\n */\nexport enum AccountSetTfFlags {\n /** The same as SetFlag: asfRequireDest. */\n tfRequireDestTag = 0x00010000,\n /** The same as ClearFlag: asfRequireDest. */\n tfOptionalDestTag = 0x00020000,\n /** The same as SetFlag: asfRequireAuth. */\n tfRequireAuth = 0x00040000,\n /** The same as ClearFlag: asfRequireAuth. */\n tfOptionalAuth = 0x00080000,\n /** The same as SetFlag: asfDisallowXRP. */\n tfDisallowXRP = 0x00100000,\n /** The same as ClearFlag: asfDisallowXRP. */\n tfAllowXRP = 0x00200000,\n}\n\n/**\n * Map of flags to boolean values representing {@link AccountSet} transaction\n * flags.\n *\n * @category Transaction Flags\n *\n * @example\n * ```typescript\n * const accountSetTx: AccountSet = {\n * TransactionType: 'AccountSet',\n * Account: 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn',\n * Flags: {\n * tfOptionalDestTag: true,\n * tfRequireAuth: true\n * },\n * }\n *\n * // Autofill the tx to see how flags actually look compared to the interface usage.\n * const autofilledTx = await client.autofill(accountSetTx)\n * console.log(autofilledTx)\n * // {\n * // TransactionType: 'AccountSet',\n * // Account: 'rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn',\n * // Flags: 393216,\n * // Sequence: 1,\n * // Fee: '12',\n * // LastLedgerSequence: 21971793\n * // }\n * ```\n */\nexport interface AccountSetFlagsInterface extends GlobalFlagsInterface {\n tfRequireDestTag?: boolean\n tfOptionalDestTag?: boolean\n tfRequireAuth?: boolean\n tfOptionalAuth?: boolean\n tfDisallowXRP?: boolean\n tfAllowXRP?: boolean\n}\n\n/**\n * An AccountSet transaction modifies the properties of an account in the XRP\n * Ledger.\n *\n * @category Transaction Models\n */\nexport interface AccountSet extends BaseTransaction {\n TransactionType: 'AccountSet'\n Flags?: number | AccountSetFlagsInterface\n /** Unique identifier of a flag to disable for this account. */\n ClearFlag?: number\n /**\n * The domain that owns this account, as a string of hex representing the.\n * ASCII for the domain in lowercase.\n */\n Domain?: string\n /** Hash of an email address to be used for generating an avatar image. */\n EmailHash?: string\n /** Public key for sending encrypted messages to this account. */\n MessageKey?: string\n /** Integer flag to enable for this account. */\n SetFlag?: AccountSetAsfFlags\n /**\n * The fee to charge when users transfer this account's issued currencies,\n * represented as billionths of a unit. Cannot be more than 2000000000 or less\n * than 1000000000, except for the special case 0 meaning no fee.\n */\n TransferRate?: number\n /**\n * Tick size to use for offers involving a currency issued by this address.\n * The exchange rates of those offers is rounded to this many significant\n * digits. Valid values are 3 to 15 inclusive, or 0 to disable.\n */\n TickSize?: number\n /**\n * Sets an alternate account that is allowed to mint NFTokens on this\n * account's behalf using NFTokenMint's `Issuer` field.\n */\n NFTokenMinter?: Account\n}\n\nconst MIN_TICK_SIZE = 3\nconst MAX_TICK_SIZE = 15\n\n/**\n * Verify the form and type of an AccountSet at runtime.\n *\n * @param tx - An AccountSet Transaction.\n * @throws When the AccountSet is Malformed.\n */\n// eslint-disable-next-line max-lines-per-function -- okay for this method, only a little over\nexport function validateAccountSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateOptionalField(tx, 'NFTokenMinter', isAccount)\n\n if (tx.ClearFlag !== undefined) {\n if (typeof tx.ClearFlag !== 'number') {\n throw new ValidationError('AccountSet: invalid ClearFlag')\n }\n if (!Object.values(AccountSetAsfFlags).includes(tx.ClearFlag)) {\n throw new ValidationError('AccountSet: invalid ClearFlag')\n }\n }\n\n if (tx.Domain !== undefined && typeof tx.Domain !== 'string') {\n throw new ValidationError('AccountSet: invalid Domain')\n }\n\n if (tx.EmailHash !== undefined && typeof tx.EmailHash !== 'string') {\n throw new ValidationError('AccountSet: invalid EmailHash')\n }\n\n if (tx.MessageKey !== undefined && typeof tx.MessageKey !== 'string') {\n throw new ValidationError('AccountSet: invalid MessageKey')\n }\n\n if (tx.SetFlag !== undefined) {\n if (typeof tx.SetFlag !== 'number') {\n throw new ValidationError('AccountSet: invalid SetFlag')\n }\n if (!Object.values(AccountSetAsfFlags).includes(tx.SetFlag)) {\n throw new ValidationError('AccountSet: invalid SetFlag')\n }\n }\n\n if (tx.TransferRate !== undefined && typeof tx.TransferRate !== 'number') {\n throw new ValidationError('AccountSet: invalid TransferRate')\n }\n\n if (tx.TickSize !== undefined) {\n if (typeof tx.TickSize !== 'number') {\n throw new ValidationError('AccountSet: invalid TickSize')\n }\n if (\n tx.TickSize !== 0 &&\n (tx.TickSize < MIN_TICK_SIZE || tx.TickSize > MAX_TICK_SIZE)\n ) {\n throw new ValidationError('AccountSet: invalid TickSize')\n }\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Currency, IssuedCurrency, IssuedCurrencyAmount } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n GlobalFlagsInterface,\n isAccount,\n isIssuedCurrency,\n isIssuedCurrencyAmount,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * Enum representing values for AMMClawback Transaction Flags.\n *\n * @category Transaction Flags\n */\nexport enum AMMClawbackFlags {\n tfClawTwoAssets = 0x00000001,\n}\n\n/**\n * Map of flags to boolean values representing {@link AMMClawback} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface AMMClawbackFlagsInterface extends GlobalFlagsInterface {\n tfClawTwoAssets?: boolean\n}\n\n/**\n * Claw back tokens from a holder that has deposited your issued tokens into an AMM pool.\n *\n * Clawback is disabled by default. To use clawback, you must send an AccountSet transaction to enable the\n * Allow Trust Line Clawback setting. An issuer with any existing tokens cannot enable clawback. You can\n * only enable Allow Trust Line Clawback if you have a completely empty owner directory, meaning you must\n * do so before you set up any trust lines, offers, escrows, payment channels, checks, or signer lists.\n * After you enable clawback, it cannot reverted: the account permanently gains the ability to claw back\n * issued assets on trust lines.\n */\nexport interface AMMClawback extends BaseTransaction {\n TransactionType: 'AMMClawback'\n\n /**\n * The account holding the asset to be clawed back.\n */\n Holder: Account\n\n /**\n * Specifies the asset that the issuer wants to claw back from the AMM pool.\n * In JSON, this is an object with currency and issuer fields. The issuer field must match with Account.\n */\n Asset: IssuedCurrency\n\n /**\n * Specifies the other asset in the AMM's pool. In JSON, this is an object with currency and\n * issuer fields (omit issuer for XRP).\n */\n Asset2: Currency\n\n /**\n * The maximum amount to claw back from the AMM account. The currency and issuer subfields should match\n * the Asset subfields. If this field isn't specified, or the value subfield exceeds the holder's available\n * tokens in the AMM, all of the holder's tokens will be clawed back.\n */\n Amount?: IssuedCurrencyAmount\n}\n\n/**\n * Verify the form and type of an AMMClawback at runtime.\n *\n * @param tx - An AMMClawback Transaction.\n * @throws {ValidationError} When the transaction is malformed.\n */\nexport function validateAMMClawback(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Holder', isAccount)\n\n validateRequiredField(tx, 'Asset', isIssuedCurrency)\n\n const asset = tx.Asset\n\n if (tx.Holder === asset.issuer) {\n throw new ValidationError(\n 'AMMClawback: Holder and Asset.issuer must be distinct',\n )\n }\n\n if (tx.Account !== asset.issuer) {\n throw new ValidationError(\n 'AMMClawback: Account must be the same as Asset.issuer',\n )\n }\n\n validateRequiredField(tx, 'Asset2', isIssuedCurrency)\n\n validateOptionalField(tx, 'Amount', isIssuedCurrencyAmount)\n\n if (tx.Amount != null) {\n if (tx.Amount.currency !== asset.currency) {\n throw new ValidationError(\n 'AMMClawback: Amount.currency must match Asset.currency',\n )\n }\n\n if (tx.Amount.issuer !== asset.issuer) {\n throw new ValidationError(\n 'AMMClawback: Amount.issuer must match Amount.issuer',\n )\n }\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount, Currency, IssuedCurrencyAmount } from '../common'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n isAmount,\n isIssuedCurrency,\n isIssuedCurrencyAmount,\n validateBaseTransaction,\n} from './common'\n\n/**\n * Enum representing values for AMMDeposit Transaction Flags.\n *\n * @category Transaction Flags\n */\nexport enum AMMDepositFlags {\n tfLPToken = 0x00010000,\n tfSingleAsset = 0x00080000,\n tfTwoAsset = 0x00100000,\n tfOneAssetLPToken = 0x00200000,\n tfLimitLPToken = 0x00400000,\n tfTwoAssetIfEmpty = 0x00800000,\n}\n\nexport interface AMMDepositFlagsInterface extends GlobalFlagsInterface {\n tfLPToken?: boolean\n tfSingleAsset?: boolean\n tfTwoAsset?: boolean\n tfOneAssetLPToken?: boolean\n tfLimitLPToken?: boolean\n tfTwoAssetIfEmpty?: boolean\n}\n\n/**\n * Deposit funds into an Automated Market Maker (AMM) instance\n * and receive the AMM's liquidity provider tokens (LP Tokens) in exchange.\n *\n * You can deposit one or both of the assets in the AMM's pool.\n * If successful, this transaction creates a trust line to the AMM Account (limit 0) to hold the LP Tokens.\n */\nexport interface AMMDeposit extends BaseTransaction {\n TransactionType: 'AMMDeposit'\n\n /**\n * The definition for one of the assets in the AMM's pool.\n */\n Asset: Currency\n\n /**\n * The definition for the other asset in the AMM's pool.\n */\n Asset2: Currency\n\n /**\n * The amount of one asset to deposit to the AMM.\n * If present, this must match the type of one of the assets (tokens or XRP) in the AMM's pool.\n */\n Amount?: Amount\n\n /**\n * The amount of another asset to add to the AMM.\n * If present, this must match the type of the other asset in the AMM's pool and cannot be the same asset as Amount.\n */\n Amount2?: Amount\n\n /**\n * The maximum effective price, in the deposit asset, to pay for each LP Token received.\n */\n EPrice?: Amount\n\n /**\n * How many of the AMM's LP Tokens to buy.\n */\n LPTokenOut?: IssuedCurrencyAmount\n}\n\n/**\n * Verify the form and type of an AMMDeposit at runtime.\n *\n * @param tx - An AMMDeposit Transaction.\n * @throws When the AMMDeposit is Malformed.\n */\nexport function validateAMMDeposit(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Asset == null) {\n throw new ValidationError('AMMDeposit: missing field Asset')\n }\n\n if (!isIssuedCurrency(tx.Asset)) {\n throw new ValidationError('AMMDeposit: Asset must be a Currency')\n }\n\n if (tx.Asset2 == null) {\n throw new ValidationError('AMMDeposit: missing field Asset2')\n }\n\n if (!isIssuedCurrency(tx.Asset2)) {\n throw new ValidationError('AMMDeposit: Asset2 must be a Currency')\n }\n\n if (tx.Amount2 != null && tx.Amount == null) {\n throw new ValidationError('AMMDeposit: must set Amount with Amount2')\n } else if (tx.EPrice != null && tx.Amount == null) {\n throw new ValidationError('AMMDeposit: must set Amount with EPrice')\n } else if (tx.LPTokenOut == null && tx.Amount == null) {\n throw new ValidationError(\n 'AMMDeposit: must set at least LPTokenOut or Amount',\n )\n }\n\n if (tx.LPTokenOut != null && !isIssuedCurrencyAmount(tx.LPTokenOut)) {\n throw new ValidationError(\n 'AMMDeposit: LPTokenOut must be an IssuedCurrencyAmount',\n )\n }\n\n if (tx.Amount != null && !isAmount(tx.Amount)) {\n throw new ValidationError('AMMDeposit: Amount must be an Amount')\n }\n\n if (tx.Amount2 != null && !isAmount(tx.Amount2)) {\n throw new ValidationError('AMMDeposit: Amount2 must be an Amount')\n }\n\n if (tx.EPrice != null && !isAmount(tx.EPrice)) {\n throw new ValidationError('AMMDeposit: EPrice must be an Amount')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount, Currency, IssuedCurrencyAmount } from '../common'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n isAmount,\n isIssuedCurrency,\n isIssuedCurrencyAmount,\n validateBaseTransaction,\n} from './common'\n\n/**\n * Enum representing values for AMMWithdrawFlags Transaction Flags.\n *\n * @category Transaction Flags\n */\nexport enum AMMWithdrawFlags {\n tfLPToken = 0x00010000,\n tfWithdrawAll = 0x00020000,\n tfOneAssetWithdrawAll = 0x00040000,\n tfSingleAsset = 0x00080000,\n tfTwoAsset = 0x00100000,\n tfOneAssetLPToken = 0x00200000,\n tfLimitLPToken = 0x00400000,\n}\n\nexport interface AMMWithdrawFlagsInterface extends GlobalFlagsInterface {\n tfLPToken?: boolean\n tfWithdrawAll?: boolean\n tfOneAssetWithdrawAll?: boolean\n tfSingleAsset?: boolean\n tfTwoAsset?: boolean\n tfOneAssetLPToken?: boolean\n tfLimitLPToken?: boolean\n}\n\n/**\n * Withdraw assets from an Automated Market Maker (AMM) instance by returning the AMM's liquidity provider tokens (LP Tokens).\n */\nexport interface AMMWithdraw extends BaseTransaction {\n TransactionType: 'AMMWithdraw'\n\n /**\n * The definition for one of the assets in the AMM's pool.\n */\n Asset: Currency\n\n /**\n * The definition for the other asset in the AMM's pool.\n */\n Asset2: Currency\n\n /**\n * The amount of one asset to withdraw from the AMM.\n * This must match the type of one of the assets (tokens or XRP) in the AMM's pool.\n */\n Amount?: Amount\n\n /**\n * The amount of another asset to withdraw from the AMM.\n * If present, this must match the type of the other asset in the AMM's pool and cannot be the same type as Amount.\n */\n Amount2?: Amount\n\n /**\n * The minimum effective price, in LP Token returned, to pay per unit of the asset to withdraw.\n */\n EPrice?: Amount\n\n /**\n * How many of the AMM's LP Tokens to redeem.\n */\n LPTokenIn?: IssuedCurrencyAmount\n}\n\n/**\n * Verify the form and type of an AMMWithdraw at runtime.\n *\n * @param tx - An AMMWithdraw Transaction.\n * @throws When the AMMWithdraw is Malformed.\n */\nexport function validateAMMWithdraw(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Asset == null) {\n throw new ValidationError('AMMWithdraw: missing field Asset')\n }\n\n if (!isIssuedCurrency(tx.Asset)) {\n throw new ValidationError('AMMWithdraw: Asset must be a Currency')\n }\n\n if (tx.Asset2 == null) {\n throw new ValidationError('AMMWithdraw: missing field Asset2')\n }\n\n if (!isIssuedCurrency(tx.Asset2)) {\n throw new ValidationError('AMMWithdraw: Asset2 must be a Currency')\n }\n\n if (tx.Amount2 != null && tx.Amount == null) {\n throw new ValidationError('AMMWithdraw: must set Amount with Amount2')\n } else if (tx.EPrice != null && tx.Amount == null) {\n throw new ValidationError('AMMWithdraw: must set Amount with EPrice')\n }\n\n if (tx.LPTokenIn != null && !isIssuedCurrencyAmount(tx.LPTokenIn)) {\n throw new ValidationError(\n 'AMMWithdraw: LPTokenIn must be an IssuedCurrencyAmount',\n )\n }\n\n if (tx.Amount != null && !isAmount(tx.Amount)) {\n throw new ValidationError('AMMWithdraw: Amount must be an Amount')\n }\n\n if (tx.Amount2 != null && !isAmount(tx.Amount2)) {\n throw new ValidationError('AMMWithdraw: Amount2 must be an Amount')\n }\n\n if (tx.EPrice != null && !isAmount(tx.EPrice)) {\n throw new ValidationError('AMMWithdraw: EPrice must be an Amount')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Signer } from '../common'\nimport { hasFlag } from '../utils'\n\nimport {\n BaseTransaction,\n GlobalFlags,\n GlobalFlagsInterface,\n isArray,\n isNull,\n isRecord,\n isString,\n isValue,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\nimport type { SubmittableTransaction } from './transaction'\n\n/**\n * Enum representing values of {@link Batch} transaction flags.\n *\n * @category Transaction Flags\n */\nexport enum BatchFlags {\n tfAllOrNothing = 0x00010000,\n tfOnlyOne = 0x00020000,\n tfUntilFailure = 0x00040000,\n tfIndependent = 0x00080000,\n}\n\n/**\n * Map of flags to boolean values representing {@link Batch} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface BatchFlagsInterface extends GlobalFlagsInterface {\n tfAllOrNothing?: boolean\n tfOnlyOne?: boolean\n tfUntilFailure?: boolean\n tfIndependent?: boolean\n}\n\nexport interface BatchSigner {\n BatchSigner: {\n Account: string\n\n SigningPubKey?: string\n\n TxnSignature?: string\n\n Signers?: Signer[]\n }\n}\n\n/**\n * @category Transaction Models\n */\nexport interface Batch extends BaseTransaction {\n TransactionType: 'Batch'\n\n BatchSigners?: BatchSigner[]\n\n RawTransactions: Array<{\n RawTransaction: SubmittableTransaction\n }>\n}\n\nfunction validateBatchInnerTransaction(\n tx: Record,\n index: number,\n): void {\n if (tx.TransactionType === 'Batch') {\n throw new ValidationError(\n `Batch: RawTransactions[${index}] is a Batch transaction. Cannot nest Batch transactions.`,\n )\n }\n\n // Check for the `tfInnerBatchTxn` flag in the inner transactions\n if (!hasFlag(tx, GlobalFlags.tfInnerBatchTxn, 'tfInnerBatchTxn')) {\n throw new ValidationError(\n `Batch: RawTransactions[${index}] must contain the \\`tfInnerBatchTxn\\` flag.`,\n )\n }\n validateOptionalField(tx, 'Fee', isValue('0'), {\n paramName: `RawTransactions[${index}].RawTransaction.Fee`,\n txType: 'Batch',\n })\n validateOptionalField(tx, 'SigningPubKey', isValue(''), {\n paramName: `RawTransactions[${index}].RawTransaction.SigningPubKey`,\n txType: 'Batch',\n })\n validateOptionalField(tx, 'TxnSignature', isNull, {\n paramName: `RawTransactions[${index}].RawTransaction.TxnSignature`,\n txType: 'Batch',\n })\n validateOptionalField(tx, 'Signers', isNull, {\n paramName: `RawTransactions[${index}].RawTransaction.Signers`,\n txType: 'Batch',\n })\n validateOptionalField(tx, 'LastLedgerSequence', isNull, {\n paramName: `RawTransactions[${index}].RawTransaction.LastLedgerSequence`,\n txType: 'Batch',\n })\n}\n\n/**\n * Verify the form and type of a Batch at runtime.\n *\n * @param tx - A Batch Transaction.\n * @throws When the Batch is malformed.\n */\n// eslint-disable-next-line max-lines-per-function -- needed here due to the complexity\nexport function validateBatch(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'RawTransactions', isArray)\n\n tx.RawTransactions.forEach((rawTxObj, index) => {\n if (!isRecord(rawTxObj)) {\n throw new ValidationError(\n `Batch: RawTransactions[${index}] is not object.`,\n )\n }\n validateRequiredField(rawTxObj, 'RawTransaction', isRecord, {\n paramName: `RawTransactions[${index}].RawTransaction`,\n txType: 'Batch',\n })\n\n const rawTx = rawTxObj.RawTransaction\n validateBatchInnerTransaction(rawTx, index)\n\n // Full validation of each `RawTransaction` object is done in `validate` to avoid dependency cycles\n })\n\n validateOptionalField(tx, 'BatchSigners', isArray)\n\n tx.BatchSigners?.forEach((signerObj, index) => {\n if (!isRecord(signerObj)) {\n throw new ValidationError(`Batch: BatchSigners[${index}] is not object.`)\n }\n\n const signerRecord = signerObj\n validateRequiredField(signerRecord, 'BatchSigner', isRecord, {\n paramName: `BatchSigners[${index}].BatchSigner`,\n txType: 'Batch',\n })\n\n const signer = signerRecord.BatchSigner\n validateRequiredField(signer, 'Account', isString, {\n paramName: `BatchSigners[${index}].BatchSigner.Account`,\n txType: 'Batch',\n })\n validateOptionalField(signer, 'SigningPubKey', isString, {\n paramName: `BatchSigners[${index}].BatchSigner.SigningPubKey`,\n txType: 'Batch',\n })\n validateOptionalField(signer, 'TxnSignature', isString, {\n paramName: `BatchSigners[${index}].BatchSigner.TxnSignature`,\n txType: 'Batch',\n })\n validateOptionalField(signer, 'Signers', isArray, {\n paramName: `BatchSigners[${index}].BatchSigner.Signers`,\n txType: 'Batch',\n })\n })\n}\n", "import {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateRequiredField,\n Account,\n validateOptionalField,\n isAccount,\n GlobalFlagsInterface,\n} from './common'\n\n/**\n * Transaction Flags for an MPTokenAuthorize Transaction.\n *\n * @category Transaction Flags\n */\nexport enum MPTokenAuthorizeFlags {\n /**\n * If set and transaction is submitted by a holder, it indicates that the holder no\n * longer wants to hold the MPToken, which will be deleted as a result. If the the holder's\n * MPToken has non-zero balance while trying to set this flag, the transaction will fail. On\n * the other hand, if set and transaction is submitted by an issuer, it would mean that the\n * issuer wants to unauthorize the holder (only applicable for allow-listing),\n * which would unset the lsfMPTAuthorized flag on the MPToken.\n */\n tfMPTUnauthorize = 0x00000001,\n}\n\n/**\n * Map of flags to boolean values representing {@link MPTokenAuthorize} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface MPTokenAuthorizeFlagsInterface extends GlobalFlagsInterface {\n tfMPTUnauthorize?: boolean\n}\n\n/**\n * The MPTokenAuthorize transaction is used to globally lock/unlock a MPTokenIssuance,\n * or lock/unlock an individual's MPToken.\n */\nexport interface MPTokenAuthorize extends BaseTransaction {\n TransactionType: 'MPTokenAuthorize'\n /**\n * Identifies the MPTokenIssuance\n */\n MPTokenIssuanceID: string\n /**\n * An optional XRPL Address of an individual token holder balance to lock/unlock.\n * If omitted, this transaction will apply to all any accounts holding MPTs.\n */\n Holder?: Account\n Flags?: number | MPTokenAuthorizeFlagsInterface\n}\n\n/**\n * Verify the form and type of an MPTokenAuthorize at runtime.\n *\n * @param tx - An MPTokenAuthorize Transaction.\n * @throws When the MPTokenAuthorize is Malformed.\n */\nexport function validateMPTokenAuthorize(tx: Record): void {\n validateBaseTransaction(tx)\n validateRequiredField(tx, 'MPTokenIssuanceID', isString)\n validateOptionalField(tx, 'Holder', isAccount)\n}\n", "'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n", "/* eslint-disable max-lines -- utility file */\n/* eslint-disable no-continue -- makes logic easier to write and read in this case */\n\nimport { hexToString, stringToHex } from '@xrplf/isomorphic/utils'\nimport stableStringify from 'fast-json-stable-stringify'\n\nimport type { MPTokenMetadata } from '../common'\nimport { isRecord, isString } from '../transactions/common'\n\nimport { isHex } from '.'\n\nexport const MAX_MPT_META_BYTE_LENGTH = 1024\nexport const MPT_META_WARNING_HEADER =\n 'MPTokenMetadata is not properly formatted as JSON as per the XLS-89 standard. ' +\n \"While adherence to this standard is not mandatory, such non-compliant MPToken's might not be discoverable \" +\n 'by Explorers and Indexers in the XRPL ecosystem.'\n\nconst MPT_META_URI_FIELDS = [\n {\n long: 'uri',\n compact: 'u',\n },\n {\n long: 'category',\n compact: 'c',\n },\n {\n long: 'title',\n compact: 't',\n },\n]\n\nconst MPT_META_ALL_FIELDS = [\n {\n long: 'ticker',\n compact: 't',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) || !/^[A-Z0-9]{1,6}$/u.test(value)) {\n return [\n `${this.long}/${this.compact}: should have uppercase letters (A-Z) and digits (0-9) only. Max 6 characters recommended.`,\n ]\n }\n\n return []\n },\n },\n {\n long: 'name',\n compact: 'n',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) || value.length === 0) {\n return [`${this.long}/${this.compact}: should be a non-empty string.`]\n }\n\n return []\n },\n },\n {\n long: 'icon',\n compact: 'i',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) || value.length === 0) {\n return [`${this.long}/${this.compact}: should be a non-empty string.`]\n }\n\n return []\n },\n },\n {\n long: 'asset_class',\n compact: 'ac',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n const MPT_META_ASSET_CLASSES = [\n 'rwa',\n 'memes',\n 'wrapped',\n 'gaming',\n 'defi',\n 'other',\n ]\n\n if (!isString(value) || !MPT_META_ASSET_CLASSES.includes(value)) {\n return [\n `${this.long}/${this.compact}: should be one of ${MPT_META_ASSET_CLASSES.join(\n ', ',\n )}.`,\n ]\n }\n return []\n },\n },\n {\n long: 'issuer_name',\n compact: 'in',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) || value.length === 0) {\n return [`${this.long}/${this.compact}: should be a non-empty string.`]\n }\n\n return []\n },\n },\n {\n long: 'desc',\n compact: 'd',\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n if (obj[this.long] === undefined && obj[this.compact] === undefined) {\n return []\n }\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) || value.length === 0) {\n return [`${this.long}/${this.compact}: should be a non-empty string.`]\n }\n\n return []\n },\n },\n {\n long: 'asset_subclass',\n compact: 'as',\n required: false,\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n const value = obj[this.long] ?? obj[this.compact]\n if (\n (obj.asset_class === 'rwa' || obj.ac === 'rwa') &&\n value === undefined\n ) {\n return [\n `${this.long}/${this.compact}: required when asset_class is rwa.`,\n ]\n }\n\n if (obj[this.long] === undefined && obj[this.compact] === undefined) {\n return []\n }\n\n const MPT_META_ASSET_SUB_CLASSES = [\n 'stablecoin',\n 'commodity',\n 'real_estate',\n 'private_credit',\n 'equity',\n 'treasury',\n 'other',\n ]\n if (!isString(value) || !MPT_META_ASSET_SUB_CLASSES.includes(value)) {\n return [\n `${this.long}/${this.compact}: should be one of ${MPT_META_ASSET_SUB_CLASSES.join(\n ', ',\n )}.`,\n ]\n }\n return []\n },\n },\n {\n long: 'uris',\n compact: 'us',\n required: false,\n // eslint-disable-next-line max-lines-per-function -- required for validation\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n if (obj[this.long] === undefined && obj[this.compact] === undefined) {\n return []\n }\n const value = obj[this.long] ?? obj[this.compact]\n if (!Array.isArray(value) || value.length === 0) {\n return [`${this.long}/${this.compact}: should be a non-empty array.`]\n }\n\n const messages: string[] = []\n for (const uriObj of value) {\n if (\n !isRecord(uriObj) ||\n Object.keys(uriObj).length !== MPT_META_URI_FIELDS.length\n ) {\n messages.push(\n `${this.long}/${this.compact}: should be an array of objects each with uri/u, category/c, and title/t properties.`,\n )\n continue\n }\n\n // Check for both long and compact forms in the same URI object\n for (const uriField of MPT_META_URI_FIELDS) {\n if (\n uriObj[uriField.long] != null &&\n uriObj[uriField.compact] != null\n ) {\n messages.push(\n `${this.long}/${this.compact}: should not have both ${uriField.long} and ${uriField.compact} fields.`,\n )\n break\n }\n }\n\n const uri = uriObj.uri ?? uriObj.u\n const category = uriObj.category ?? uriObj.c\n const title = uriObj.title ?? uriObj.t\n if (!isString(uri) || !isString(category) || !isString(title)) {\n messages.push(\n `${this.long}/${this.compact}: should be an array of objects each with uri/u, category/c, and title/t properties.`,\n )\n }\n }\n return messages\n },\n },\n {\n long: 'additional_info',\n compact: 'ai',\n required: false,\n validate(obj: Record): string[] {\n if (obj[this.long] != null && obj[this.compact] != null) {\n return [\n `${this.long}/${this.compact}: both long and compact forms present. expected only one.`,\n ]\n }\n\n if (obj[this.long] === undefined && obj[this.compact] === undefined) {\n return []\n }\n const value = obj[this.long] ?? obj[this.compact]\n if (!isString(value) && !isRecord(value)) {\n return [\n `${this.long}/${this.compact}: should be a string or JSON object.`,\n ]\n }\n\n return []\n },\n },\n]\n\n/**\n * Shortens long field names to their compact form equivalents.\n * Reverse operation of {@link expandKeys}.\n *\n * @param input - Object with potentially long field names.\n * @param mappings - Array of field mappings with long and compact names.\n * @returns Object with shortened compact field names.\n */\nfunction shortenKeys(\n input: Record,\n mappings: Array<{ long: string; compact: string }>,\n): Record {\n const output: Record = {}\n\n for (const [key, value] of Object.entries(input)) {\n const mapping = mappings.find(\n ({ long, compact }) => long === key || compact === key,\n )\n // Extra keys stays there\n if (mapping === undefined) {\n output[key] = value\n continue\n }\n\n // Both long and compact forms are present\n if (\n input[mapping.long] !== undefined &&\n input[mapping.compact] !== undefined\n ) {\n output[key] = value\n continue\n }\n\n output[mapping.compact] = value\n }\n\n return output\n}\n\n/**\n * Encodes {@link MPTokenMetadata} object to a hex string.\n * Steps:\n * 1. Shorten long field names to their compact form equivalents.\n * 2. Sort the fields alphabetically for deterministic encoding.\n * 3. Stringify the object.\n * 4. Convert to hex.\n *\n * @param mptokenMetadata - {@link MPTokenMetadata} to encode.\n * @returns Hex encoded {@link MPTokenMetadata}.\n * @throws Error if input is not a JSON object.\n * @category Utilities\n */\nexport function encodeMPTokenMetadata(\n mptokenMetadata: MPTokenMetadata,\n): string {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Required here to implement type-guard\n let input = mptokenMetadata as unknown as Record\n\n if (!isRecord(input)) {\n throw new Error('MPTokenMetadata must be JSON object.')\n }\n\n input = shortenKeys(input, MPT_META_ALL_FIELDS)\n\n if (Array.isArray(input.uris)) {\n input.uris = input.uris.map(\n (uri: Record): Record => {\n if (isRecord(uri)) {\n return shortenKeys(uri, MPT_META_URI_FIELDS)\n }\n return uri\n },\n )\n }\n\n if (Array.isArray(input.us)) {\n input.us = input.us.map(\n (uri: Record): Record => {\n if (isRecord(uri)) {\n return shortenKeys(uri, MPT_META_URI_FIELDS)\n }\n return uri\n },\n )\n }\n\n return stringToHex(stableStringify(input)).toUpperCase()\n}\n\n/**\n * Expands compact field names to their long form equivalents.\n * Reverse operation of {@link shortenKeys}.\n *\n * @param input - Object with potentially compact field names.\n * @param mappings - Array of field mappings with long and compact names.\n * @returns Object with expanded long field names.\n */\nfunction expandKeys(\n input: Record,\n mappings: Array<{ long: string; compact: string }>,\n): Record {\n const output: Record = {}\n\n for (const [key, value] of Object.entries(input)) {\n const mapping = mappings.find(\n ({ long, compact }) => long === key || compact === key,\n )\n // Extra keys stays there\n if (mapping === undefined) {\n output[key] = value\n continue\n }\n\n // Both long and compact forms are present\n if (\n input[mapping.long] !== undefined &&\n input[mapping.compact] !== undefined\n ) {\n output[key] = value\n continue\n }\n\n output[mapping.long] = value\n }\n\n return output\n}\n\n/**\n * Decodes hex-encoded {@link MPTokenMetadata} into a JSON object.\n * Converts compact field names to their corresponding long-form equivalents.\n *\n * @param input - Hex encoded {@link MPTokenMetadata}.\n * @returns Decoded {@link MPTokenMetadata} object with long field names.\n * @throws Error if input is not valid hex or cannot be parsed as JSON.\n * @category Utilities\n */\nexport function decodeMPTokenMetadata(input: string): MPTokenMetadata {\n if (!isHex(input)) {\n throw new Error('MPTokenMetadata must be in hex format.')\n }\n\n let jsonMetaData: unknown\n try {\n jsonMetaData = JSON.parse(hexToString(input))\n } catch (err) {\n throw new Error(\n `MPTokenMetadata is not properly formatted as JSON - ${String(err)}`,\n )\n }\n\n if (!isRecord(jsonMetaData)) {\n throw new Error('MPTokenMetadata must be a JSON object.')\n }\n\n let output = jsonMetaData\n\n output = expandKeys(output, MPT_META_ALL_FIELDS)\n\n if (Array.isArray(output.uris)) {\n output.uris = output.uris.map(\n (uri: Record): Record => {\n if (isRecord(uri)) {\n return expandKeys(uri, MPT_META_URI_FIELDS)\n }\n return uri\n },\n )\n }\n\n if (Array.isArray(output.us)) {\n output.us = output.us.map(\n (uri: Record): Record => {\n if (isRecord(uri)) {\n return expandKeys(uri, MPT_META_URI_FIELDS)\n }\n return uri\n },\n )\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Required here as output is now properly formatted\n return output as unknown as MPTokenMetadata\n}\n\n/**\n * Validates {@link MPTokenMetadata} adheres to XLS-89 standard.\n *\n * @param input - Hex encoded {@link MPTokenMetadata}.\n * @returns Validation messages if {@link MPTokenMetadata} does not adheres to XLS-89 standard.\n * @category Utilities\n */\nexport function validateMPTokenMetadata(input: string): string[] {\n const validationMessages: string[] = []\n\n // Validate hex format\n if (!isHex(input)) {\n validationMessages.push(`MPTokenMetadata must be in hex format.`)\n return validationMessages\n }\n\n // Validate byte length\n if (input.length / 2 > MAX_MPT_META_BYTE_LENGTH) {\n validationMessages.push(\n `MPTokenMetadata must be max ${MAX_MPT_META_BYTE_LENGTH} bytes.`,\n )\n return validationMessages\n }\n\n // Parse JSON\n let jsonMetaData: unknown\n try {\n jsonMetaData = JSON.parse(hexToString(input))\n } catch (err) {\n validationMessages.push(\n `MPTokenMetadata is not properly formatted as JSON - ${String(err)}`,\n )\n return validationMessages\n }\n\n // Validate JSON structure\n if (!isRecord(jsonMetaData)) {\n validationMessages.push(\n 'MPTokenMetadata is not properly formatted JSON object as per XLS-89.',\n )\n return validationMessages\n }\n\n if (Object.keys(jsonMetaData).length > MPT_META_ALL_FIELDS.length) {\n validationMessages.push(\n `MPTokenMetadata must not contain more than ${MPT_META_ALL_FIELDS.length} top-level fields (found ${\n Object.keys(jsonMetaData).length\n }).`,\n )\n }\n\n const obj = jsonMetaData\n\n for (const property of MPT_META_ALL_FIELDS) {\n validationMessages.push(...property.validate(obj))\n }\n\n return validationMessages\n}\n", "import { ValidationError } from '../../errors'\nimport { isHex, INTEGER_SANITY_CHECK, isFlagEnabled } from '../utils'\nimport {\n MAX_MPT_META_BYTE_LENGTH,\n MPT_META_WARNING_HEADER,\n validateMPTokenMetadata,\n} from '../utils/mptokenMetadata'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n validateBaseTransaction,\n validateOptionalField,\n isString,\n isNumber,\n} from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n// 2^63 - 1\nconst MAX_AMT = '9223372036854775807'\nconst MAX_TRANSFER_FEE = 50000\n\n/**\n * Transaction Flags for an MPTokenIssuanceCreate Transaction.\n *\n * @category Transaction Flags\n */\nexport enum MPTokenIssuanceCreateFlags {\n /**\n * If set, indicates that the MPT can be locked both individually and globally.\n * If not set, the MPT cannot be locked in any way.\n */\n tfMPTCanLock = 0x00000002,\n /**\n * If set, indicates that individual holders must be authorized.\n * This enables issuers to limit who can hold their assets.\n */\n tfMPTRequireAuth = 0x00000004,\n /**\n * If set, indicates that individual holders can place their balances into an escrow.\n */\n tfMPTCanEscrow = 0x00000008,\n /**\n * If set, indicates that individual holders can trade their balances\n * using the XRP Ledger DEX or AMM.\n */\n tfMPTCanTrade = 0x00000010,\n /**\n * If set, indicates that tokens may be transferred to other accounts\n * that are not the issuer.\n */\n tfMPTCanTransfer = 0x00000020,\n /**\n * If set, indicates that the issuer may use the Clawback transaction\n * to clawback value from individual holders.\n */\n tfMPTCanClawback = 0x00000040,\n}\n\n/**\n * Map of flags to boolean values representing {@link MPTokenIssuanceCreate} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface MPTokenIssuanceCreateFlagsInterface\n extends GlobalFlagsInterface {\n tfMPTCanLock?: boolean\n tfMPTRequireAuth?: boolean\n tfMPTCanEscrow?: boolean\n tfMPTCanTrade?: boolean\n tfMPTCanTransfer?: boolean\n tfMPTCanClawback?: boolean\n}\n\n/**\n * The MPTokenIssuanceCreate transaction creates a MPTokenIssuance object\n * and adds it to the relevant directory node of the creator account.\n * This transaction is the only opportunity an issuer has to specify any token fields\n * that are defined as immutable (e.g., MPT Flags). If the transaction is successful,\n * the newly created token will be owned by the account (the creator account) which\n * executed the transaction.\n */\nexport interface MPTokenIssuanceCreate extends BaseTransaction {\n TransactionType: 'MPTokenIssuanceCreate'\n /**\n * An asset scale is the difference, in orders of magnitude, between a standard unit and\n * a corresponding fractional unit. More formally, the asset scale is a non-negative integer\n * (0, 1, 2, \u2026) such that one standard unit equals 10^(-scale) of a corresponding\n * fractional unit. If the fractional unit equals the standard unit, then the asset scale is 0.\n * Note that this value is optional, and will default to 0 if not supplied.\n */\n AssetScale?: number\n /**\n * Specifies the maximum asset amount of this token that should ever be issued.\n * It is a non-negative integer string that can store a range of up to 63 bits. If not set, the max\n * amount will default to the largest unsigned 63-bit integer (0x7FFFFFFFFFFFFFFF or 9223372036854775807)\n *\n * Example:\n * ```\n * MaximumAmount: '9223372036854775807'\n * ```\n */\n MaximumAmount?: string\n /**\n * Specifies the fee to charged by the issuer for secondary sales of the Token,\n * if such sales are allowed. Valid values for this field are between 0 and 50,000 inclusive,\n * allowing transfer rates of between 0.000% and 50.000% in increments of 0.001.\n * The field must NOT be present if the `tfMPTCanTransfer` flag is not set.\n */\n TransferFee?: number\n\n /**\n * Should follow {@link https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0089-multi-purpose-token-metadata-schema | XLS-89} standard.\n * Use {@link encodeMPTokenMetadata} utility function to convert to convert {@link MPTokenMetadata} to a blob.\n * Use {@link decodeMPTokenMetadata} utility function to convert from a blob to {@link MPTokenMetadata}.\n *\n * While adherence to the XLS-89d format is not mandatory, non-compliant metadata\n * may not be discoverable by ecosystem tools such as explorers and indexers.\n */\n MPTokenMetadata?: string\n\n Flags?: number | MPTokenIssuanceCreateFlagsInterface\n}\n\nexport interface MPTokenIssuanceCreateMetadata extends TransactionMetadataBase {\n mpt_issuance_id?: string\n}\n\n/* eslint-disable max-lines-per-function -- Not needed to reduce function */\n/**\n * Verify the form and type of an MPTokenIssuanceCreate at runtime.\n *\n * @param tx - An MPTokenIssuanceCreate Transaction.\n * @throws When the MPTokenIssuanceCreate is Malformed.\n */\nexport function validateMPTokenIssuanceCreate(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n validateOptionalField(tx, 'MaximumAmount', isString)\n validateOptionalField(tx, 'MPTokenMetadata', isString)\n validateOptionalField(tx, 'TransferFee', isNumber)\n validateOptionalField(tx, 'AssetScale', isNumber)\n\n if (\n typeof tx.MPTokenMetadata === 'string' &&\n (!isHex(tx.MPTokenMetadata) ||\n tx.MPTokenMetadata.length / 2 > MAX_MPT_META_BYTE_LENGTH)\n ) {\n throw new ValidationError(\n `MPTokenIssuanceCreate: MPTokenMetadata (hex format) must be non-empty and no more than ${MAX_MPT_META_BYTE_LENGTH} bytes.`,\n )\n }\n\n if (typeof tx.MaximumAmount === 'string') {\n if (!INTEGER_SANITY_CHECK.exec(tx.MaximumAmount)) {\n throw new ValidationError('MPTokenIssuanceCreate: Invalid MaximumAmount')\n } else if (\n BigInt(tx.MaximumAmount) > BigInt(MAX_AMT) ||\n BigInt(tx.MaximumAmount) < BigInt(`0`)\n ) {\n throw new ValidationError(\n 'MPTokenIssuanceCreate: MaximumAmount out of range',\n )\n }\n }\n\n if (typeof tx.TransferFee === 'number') {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Not necessary\n const flags = (tx.Flags ?? 0) as\n | number\n | MPTokenIssuanceCreateFlagsInterface\n const isTfMPTCanTransfer =\n typeof flags === 'number'\n ? isFlagEnabled(flags, MPTokenIssuanceCreateFlags.tfMPTCanTransfer)\n : (flags.tfMPTCanTransfer ?? false)\n\n if (tx.TransferFee < 0 || tx.TransferFee > MAX_TRANSFER_FEE) {\n throw new ValidationError(\n `MPTokenIssuanceCreate: TransferFee must be between 0 and ${MAX_TRANSFER_FEE}`,\n )\n }\n\n if (tx.TransferFee && !isTfMPTCanTransfer) {\n throw new ValidationError(\n 'MPTokenIssuanceCreate: TransferFee cannot be provided without enabling tfMPTCanTransfer flag',\n )\n }\n }\n\n if (tx.MPTokenMetadata != null) {\n const validationMessages = validateMPTokenMetadata(tx.MPTokenMetadata)\n\n if (validationMessages.length > 0) {\n const message = [\n MPT_META_WARNING_HEADER,\n ...validationMessages.map((msg) => `- ${msg}`),\n ].join('\\n')\n\n // eslint-disable-next-line no-console -- Required here.\n console.warn(message)\n }\n }\n}\n/* eslint-enable max-lines-per-function */\n", "import { ValidationError } from '../../errors'\nimport { isFlagEnabled } from '../utils'\n\nimport {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateRequiredField,\n Account,\n validateOptionalField,\n isAccount,\n GlobalFlagsInterface,\n} from './common'\n\n/**\n * Transaction Flags for an MPTokenIssuanceSet Transaction.\n *\n * @category Transaction Flags\n */\nexport enum MPTokenIssuanceSetFlags {\n /**\n * If set, indicates that issuer locks the MPT\n */\n tfMPTLock = 0x00000001,\n /**\n * If set, indicates that issuer unlocks the MPT\n */\n tfMPTUnlock = 0x00000002,\n}\n\n/**\n * Map of flags to boolean values representing {@link MPTokenIssuanceSet} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface MPTokenIssuanceSetFlagsInterface extends GlobalFlagsInterface {\n tfMPTLock?: boolean\n tfMPTUnlock?: boolean\n}\n\n/**\n * The MPTokenIssuanceSet transaction is used to globally lock/unlock a MPTokenIssuance,\n * or lock/unlock an individual's MPToken.\n */\nexport interface MPTokenIssuanceSet extends BaseTransaction {\n TransactionType: 'MPTokenIssuanceSet'\n /**\n * Identifies the MPTokenIssuance\n */\n MPTokenIssuanceID: string\n /**\n * An optional XRPL Address of an individual token holder balance to lock/unlock.\n * If omitted, this transaction will apply to all any accounts holding MPTs.\n */\n Holder?: Account\n Flags?: number | MPTokenIssuanceSetFlagsInterface\n}\n\n/**\n * Verify the form and type of an MPTokenIssuanceSet at runtime.\n *\n * @param tx - An MPTokenIssuanceSet Transaction.\n * @throws When the MPTokenIssuanceSet is Malformed.\n */\nexport function validateMPTokenIssuanceSet(tx: Record): void {\n validateBaseTransaction(tx)\n validateRequiredField(tx, 'MPTokenIssuanceID', isString)\n validateOptionalField(tx, 'Holder', isAccount)\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Not necessary\n const flags = (tx.Flags ?? 0) as number | MPTokenIssuanceSetFlagsInterface\n const isTfMPTLock =\n typeof flags === 'number'\n ? isFlagEnabled(flags, MPTokenIssuanceSetFlags.tfMPTLock)\n : (flags.tfMPTLock ?? false)\n\n const isTfMPTUnlock =\n typeof flags === 'number'\n ? isFlagEnabled(flags, MPTokenIssuanceSetFlags.tfMPTUnlock)\n : (flags.tfMPTUnlock ?? false)\n\n if (isTfMPTLock && isTfMPTUnlock) {\n throw new ValidationError('MPTokenIssuanceSet: flag conflict')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\nimport { isFlagEnabled } from '../utils'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n validateBaseTransaction,\n isAmount,\n parseAmountValue,\n isAccount,\n validateOptionalField,\n Account,\n} from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n/**\n * Transaction Flags for an NFTokenCreateOffer Transaction.\n *\n * @category Transaction Flags\n */\nexport enum NFTokenCreateOfferFlags {\n /**\n * If set, indicates that the offer is a sell offer.\n * Otherwise, it is a buy offer.\n */\n tfSellNFToken = 0x00000001,\n}\n\n/**\n * Map of flags to boolean values representing {@link NFTokenCreateOffer} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface NFTokenCreateOfferFlagsInterface extends GlobalFlagsInterface {\n tfSellNFToken?: boolean\n}\n\n/**\n * The NFTokenCreateOffer transaction creates either an offer to buy an\n * NFT the submitting account does not own, or an offer to sell an NFT\n * the submitting account does own.\n */\nexport interface NFTokenCreateOffer extends BaseTransaction {\n TransactionType: 'NFTokenCreateOffer'\n /**\n * Identifies the NFTokenID of the NFToken object that the\n * offer references.\n */\n NFTokenID: string\n /**\n * Indicates the amount expected or offered for the Token.\n *\n * The amount must be non-zero, except when this is a sell\n * offer and the asset is XRP. This would indicate that the current\n * owner of the token is giving it away free, either to anyone at all,\n * or to the account identified by the Destination field.\n */\n Amount: Amount\n /**\n * Indicates the AccountID of the account that owns the\n * corresponding NFToken.\n *\n * If the offer is to buy a token, this field must be present\n * and it must be different than Account (since an offer to\n * buy a token one already holds is meaningless).\n *\n * If the offer is to sell a token, this field must not be\n * present, as the owner is, implicitly, the same as Account\n * (since an offer to sell a token one doesn't already hold\n * is meaningless).\n */\n Owner?: Account\n /**\n * Indicates the time after which the offer will no longer\n * be valid. The value is the number of seconds since the\n * Ripple Epoch.\n */\n Expiration?: number\n /**\n * If present, indicates that this offer may only be\n * accepted by the specified account. Attempts by other\n * accounts to accept this offer MUST fail.\n */\n Destination?: Account\n Flags?: number | NFTokenCreateOfferFlagsInterface\n}\n\nexport interface NFTokenCreateOfferMetadata extends TransactionMetadataBase {\n // rippled 1.11.0 or later\n offer_id?: string\n}\n\nfunction validateNFTokenSellOfferCases(tx: Record): void {\n if (tx.Owner != null) {\n throw new ValidationError(\n 'NFTokenCreateOffer: Owner must not be present for sell offers',\n )\n }\n}\n\nfunction validateNFTokenBuyOfferCases(tx: Record): void {\n if (tx.Owner == null) {\n throw new ValidationError(\n 'NFTokenCreateOffer: Owner must be present for buy offers',\n )\n }\n\n if (parseAmountValue(tx.Amount) <= 0) {\n throw new ValidationError(\n 'NFTokenCreateOffer: Amount must be greater than 0 for buy offers',\n )\n }\n}\n\n/**\n * Verify the form and type of an NFTokenCreateOffer at runtime.\n *\n * @param tx - An NFTokenCreateOffer Transaction.\n * @throws When the NFTokenCreateOffer is Malformed.\n */\nexport function validateNFTokenCreateOffer(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Account === tx.Owner) {\n throw new ValidationError(\n 'NFTokenCreateOffer: Owner and Account must not be equal',\n )\n }\n\n if (tx.Account === tx.Destination) {\n throw new ValidationError(\n 'NFTokenCreateOffer: Destination and Account must not be equal',\n )\n }\n\n validateOptionalField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'Owner', isAccount)\n\n if (tx.NFTokenID == null) {\n throw new ValidationError('NFTokenCreateOffer: missing field NFTokenID')\n }\n\n if (!isAmount(tx.Amount)) {\n throw new ValidationError('NFTokenCreateOffer: invalid Amount')\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- checked in BaseTransaction\n const flags = (tx.Flags ?? 0) as number | NFTokenCreateOfferFlagsInterface\n const isTfSellNFToken =\n typeof flags === 'number'\n ? isFlagEnabled(flags, NFTokenCreateOfferFlags.tfSellNFToken)\n : (flags.tfSellNFToken ?? false)\n\n if (isTfSellNFToken) {\n validateNFTokenSellOfferCases(tx)\n } else {\n validateNFTokenBuyOfferCases(tx)\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\nimport { isHex } from '../utils'\n\nimport {\n Account,\n BaseTransaction,\n GlobalFlagsInterface,\n isAccount,\n isAmount,\n isNumber,\n validateBaseTransaction,\n validateOptionalField,\n} from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n/**\n * Transaction Flags for an NFTokenMint Transaction.\n *\n * @category Transaction Flags\n */\nexport enum NFTokenMintFlags {\n /**\n * If set, indicates that the minted token may be burned by the issuer even\n * if the issuer does not currently hold the token. The current holder of\n * the token may always burn it.\n */\n tfBurnable = 0x00000001,\n /**\n * If set, indicates that the token may only be offered or sold for XRP.\n */\n tfOnlyXRP = 0x00000002,\n /**\n * If set, indicates that the issuer wants a trustline to be automatically\n * created.\n */\n tfTrustLine = 0x00000004,\n /**\n * If set, indicates that this NFT can be transferred. This flag has no\n * effect if the token is being transferred from the issuer or to the\n * issuer.\n */\n tfTransferable = 0x00000008,\n /**\n * If set, indicates that this NFT's URI can be modified.\n */\n tfMutable = 0x00000010,\n}\n\n/**\n * Map of flags to boolean values representing {@link NFTokenMint} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface NFTokenMintFlagsInterface extends GlobalFlagsInterface {\n tfBurnable?: boolean\n tfOnlyXRP?: boolean\n tfTrustLine?: boolean\n tfTransferable?: boolean\n tfMutable?: boolean\n}\n\n/**\n * The NFTokenMint transaction creates an NFToken object and adds it to the\n * relevant NFTokenPage object of the minter. If the transaction is\n * successful, the newly minted token will be owned by the minter account\n * specified by the transaction.\n */\nexport interface NFTokenMint extends BaseTransaction {\n TransactionType: 'NFTokenMint'\n /**\n * Indicates the taxon associated with this token. The taxon is generally a\n * value chosen by the minter of the token and a given taxon may be used for\n * multiple tokens. The implementation reserves taxon identifiers greater\n * than or equal to 2147483648 (0x80000000). If you have no use for this\n * field, set it to 0.\n */\n NFTokenTaxon: number\n /**\n * Indicates the account that should be the issuer of this token. This value\n * is optional and should only be specified if the account executing the\n * transaction is not the `Issuer` of the `NFToken` object. If it is\n * present, the `MintAccount` field in the `AccountRoot` of the `Issuer`\n * field must match the `Account`, otherwise the transaction will fail.\n */\n Issuer?: Account\n /**\n * Specifies the fee charged by the issuer for secondary sales of the Token,\n * if such sales are allowed. Valid values for this field are between 0 and\n * 50000 inclusive, allowing transfer rates between 0.000% and 50.000% in\n * increments of 0.001%. This field must NOT be present if the\n * `tfTransferable` flag is not set.\n */\n TransferFee?: number\n /**\n * URI that points to the data and/or metadata associated with the NFT.\n * This field need not be an HTTP or HTTPS URL; it could be an IPFS URI, a\n * magnet link, immediate data encoded as an RFC2379 \"data\" URL, or even an\n * opaque issuer-specific encoding. The URI is NOT checked for validity, but\n * the field is limited to a maximum length of 256 bytes.\n *\n * This field must be hex-encoded. You can use `convertStringToHex` to\n * convert this field to the proper encoding.\n *\n * This field must not be an empty string. Omit it from the transaction or\n * set to `undefined` value if you do not use it.\n */\n URI?: string | null\n /**\n * Indicates the amount expected for the Token.\n *\n * The amount can be zero. This would indicate that the account is giving\n * the token away free, either to anyone at all, or to the account identified\n * by the Destination field.\n */\n Amount?: Amount\n /**\n * Indicates the time after which the offer will no longer\n * be valid. The value is the number of seconds since the\n * Ripple Epoch.\n */\n Expiration?: number\n /**\n * If present, indicates that this offer may only be\n * accepted by the specified account. Attempts by other\n * accounts to accept this offer MUST fail.\n */\n Destination?: Account\n Flags?: number | NFTokenMintFlagsInterface\n}\n\nexport interface NFTokenMintMetadata extends TransactionMetadataBase {\n // rippled 1.11.0 or later\n nftoken_id?: string\n // if Amount is present\n offer_id?: string\n}\n\n/**\n * Verify the form and type of an NFTokenMint at runtime.\n *\n * @param tx - An NFTokenMint Transaction.\n * @throws When the NFTokenMint is Malformed.\n */\nexport function validateNFTokenMint(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Account === tx.Issuer) {\n throw new ValidationError(\n 'NFTokenMint: Issuer must not be equal to Account',\n )\n }\n\n validateOptionalField(tx, 'Issuer', isAccount)\n\n if (typeof tx.URI === 'string' && tx.URI === '') {\n throw new ValidationError('NFTokenMint: URI must not be empty string')\n }\n\n if (typeof tx.URI === 'string' && !isHex(tx.URI)) {\n throw new ValidationError('NFTokenMint: URI must be in hex format')\n }\n\n if (tx.NFTokenTaxon == null) {\n throw new ValidationError('NFTokenMint: missing field NFTokenTaxon')\n }\n\n if (tx.Amount == null) {\n if (tx.Expiration != null || tx.Destination != null) {\n throw new ValidationError(\n 'NFTokenMint: Amount is required when Expiration or Destination is present',\n )\n }\n }\n\n validateOptionalField(tx, 'Amount', isAmount)\n validateOptionalField(tx, 'Expiration', isNumber)\n validateOptionalField(tx, 'Destination', isAccount)\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\nimport { hasFlag } from '../utils'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n validateBaseTransaction,\n isAmount,\n validateOptionalField,\n isDomainID,\n} from './common'\n\n/**\n * Transaction Flags for an OfferCreate Transaction.\n *\n * @category Transaction Flags\n */\nexport enum OfferCreateFlags {\n /**\n * If enabled, the offer does not consume offers that exactly match it, and\n * instead becomes an Offer object in the ledger. It still consumes offers\n * that cross it.\n */\n tfPassive = 0x00010000,\n /**\n * Treat the offer as an Immediate or Cancel order. If enabled, the offer\n * never becomes a ledger object: it only tries to match existing offers in\n * the ledger. If the offer cannot match any offers immediately, it executes\n * \"successfully\" without trading any currency. In this case, the transaction\n * has the result code tesSUCCESS, but creates no Offer objects in the ledger.\n */\n tfImmediateOrCancel = 0x00020000,\n /**\n * Treat the offer as a Fill or Kill order . Only try to match existing\n * offers in the ledger, and only do so if the entire TakerPays quantity can\n * be obtained. If the fix1578 amendment is enabled and the offer cannot be\n * executed when placed, the transaction has the result code tecKILLED;\n * otherwise, the transaction uses the result code tesSUCCESS even when it was\n * killed without trading any currency.\n */\n tfFillOrKill = 0x00040000,\n /**\n * Exchange the entire TakerGets amount, even if it means obtaining more than\n * the TakerPays amount in exchange.\n */\n tfSell = 0x00080000,\n /**\n * Indicates the offer is hybrid. (meaning it is part of both a domain and open order book)\n * This flag cannot be set if the offer doesn't have a DomainID\n */\n tfHybrid = 0x00100000,\n}\n\n/**\n * Map of flags to boolean values representing {@link OfferCreate} transaction\n * flags.\n *\n * @category Transaction Flags\n *\n * @example\n * ```typescript\n * const tx: OfferCreate = {\n * Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',\n * TakerGets: '43000.51',\n * TakerPays: '12928290425',\n * TransactionType: 'OfferCreate',\n * Flags: {\n * tfPassive: true,\n * tfFillOrKill: true,\n * },\n * }\n *\n * // Autofill the tx to see how flags actually look compared to the interface usage.\n * const autofilledTx = await client.autofill(tx)\n * console.log(autofilledTx)\n * // {\n * // Account: 'rhFcpWDHLqpBmX4ezWiA5VLSS4e1BHqhHd',\n * // TakerGets: '43000.51',\n * // TakerPays: '12928290425',\n * // TransactionType: 'OfferCreate',\n * // Flags: 327680,\n * // Sequence: 21970384,\n * // Fee: '12',\n * // LastLedgerSequence: 21970404\n * // }\n * ```\n */\nexport interface OfferCreateFlagsInterface extends GlobalFlagsInterface {\n tfPassive?: boolean\n tfImmediateOrCancel?: boolean\n tfFillOrKill?: boolean\n tfSell?: boolean\n tfHybrid?: boolean\n}\n\n/**\n * An OfferCreate transaction is effectively a limit order . It defines an\n * intent to exchange currencies, and creates an Offer object if not completely.\n * Fulfilled when placed. Offers can be partially fulfilled.\n *\n * @category Transaction Models\n */\nexport interface OfferCreate extends BaseTransaction {\n TransactionType: 'OfferCreate'\n Flags?: number | OfferCreateFlagsInterface\n /**\n * Time after which the offer is no longer active, in seconds since the.\n * Ripple Epoch.\n */\n Expiration?: number\n /** An offer to delete first, specified in the same way as OfferCancel. */\n OfferSequence?: number\n /** The amount and type of currency being provided by the offer creator. */\n TakerGets: Amount\n /** The amount and type of currency being requested by the offer creator. */\n TakerPays: Amount\n /** The domain that the offer must be a part of. */\n DomainID?: string\n}\n\n/**\n * Verify the form and type of an OfferCreate at runtime.\n *\n * @param tx - An OfferCreate Transaction.\n * @throws When the OfferCreate is Malformed.\n */\nexport function validateOfferCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.TakerGets === undefined) {\n throw new ValidationError('OfferCreate: missing field TakerGets')\n }\n\n if (tx.TakerPays === undefined) {\n throw new ValidationError('OfferCreate: missing field TakerPays')\n }\n\n if (typeof tx.TakerGets !== 'string' && !isAmount(tx.TakerGets)) {\n throw new ValidationError('OfferCreate: invalid TakerGets')\n }\n\n if (typeof tx.TakerPays !== 'string' && !isAmount(tx.TakerPays)) {\n throw new ValidationError('OfferCreate: invalid TakerPays')\n }\n\n if (tx.Expiration !== undefined && typeof tx.Expiration !== 'number') {\n throw new ValidationError('OfferCreate: invalid Expiration')\n }\n\n if (tx.OfferSequence !== undefined && typeof tx.OfferSequence !== 'number') {\n throw new ValidationError('OfferCreate: invalid OfferSequence')\n }\n\n validateOptionalField(tx, 'DomainID', isDomainID, {\n txType: 'OfferCreate',\n paramName: 'DomainID',\n })\n\n if (\n tx.DomainID == null &&\n hasFlag(tx, OfferCreateFlags.tfHybrid, 'tfHybrid')\n ) {\n throw new ValidationError(\n 'OfferCreate: tfHybrid flag cannot be set if DomainID is not present',\n )\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount, Path, MPTAmount } from '../common'\nimport { isFlagEnabled } from '../utils'\n\nimport {\n BaseTransaction,\n isAmount,\n GlobalFlagsInterface,\n validateBaseTransaction,\n isAccount,\n isDomainID,\n validateRequiredField,\n validateOptionalField,\n isNumber,\n Account,\n validateCredentialsList,\n MAX_AUTHORIZED_CREDENTIALS,\n isArray,\n} from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n/**\n * Enum representing values for Payment Transaction Flags.\n *\n * @category Transaction Flags\n */\nexport enum PaymentFlags {\n /**\n * Do not use the default path; only use paths included in the Paths field.\n * This is intended to force the transaction to take arbitrage opportunities.\n * Most clients do not need this.\n */\n tfNoRippleDirect = 0x00010000,\n /**\n * If the specified Amount cannot be sent without spending more than SendMax,\n * reduce the received amount instead of failing outright. See Partial.\n * Payments for more details.\n */\n tfPartialPayment = 0x00020000,\n /**\n * Only take paths where all the conversions have an input:output ratio that\n * is equal or better than the ratio of Amount:SendMax. See Limit Quality for\n * details.\n */\n tfLimitQuality = 0x00040000,\n}\n\n/**\n * Map of flags to boolean values representing {@link Payment} transaction\n * flags.\n *\n * @category Transaction Flags\n *\n * @example\n * ```typescript\n * const partialPayment: Payment = {\n * TransactionType: 'Payment',\n * Account: 'rM9WCfJU6udpFkvKThRaFHDMsp7L8rpgN',\n * Amount: {\n * currency: 'FOO',\n * value: '4000',\n * issuer: 'rPzwM2JfCSDjhbesdTCqFjWWdK7eFtTwZz',\n * },\n * Destination: 'rPzwM2JfCSDjhbesdTCqFjWWdK7eFtTwZz',\n * Flags: {\n * tfPartialPayment: true\n * }\n * }\n *\n * // Autofill the tx to see how flags actually look compared to the interface usage.\n * const autofilledTx = await client.autofill(partialPayment)\n * console.log(autofilledTx)\n * // {\n * // TransactionType: 'Payment',\n * // Account: 'rM9WCfJU6udpFkvKThRaFHDMsp7L8rpgN',\n * // Amount: {\n * // currency: 'FOO',\n * // value: '4000',\n * // issuer: 'rPzwM2JfCSDjhbesdTCqFjWWdK7eFtTwZz'\n * // },\n * // Destination: 'rPzwM2JfCSDjhbesdTCqFjWWdK7eFtTwZz',\n * // Flags: 131072,\n * // Sequence: 21970996,\n * // Fee: '12',\n * // LastLedgerSequence: 21971016\n * // }\n * ```\n */\nexport interface PaymentFlagsInterface extends GlobalFlagsInterface {\n /**\n * Do not use the default path; only use paths included in the Paths field.\n * This is intended to force the transaction to take arbitrage opportunities.\n * Most clients do not need this.\n */\n tfNoRippleDirect?: boolean\n /**\n * If the specified Amount cannot be sent without spending more than SendMax,\n * reduce the received amount instead of failing outright. See Partial.\n * Payments for more details.\n */\n tfPartialPayment?: boolean\n /**\n * Only take paths where all the conversions have an input:output ratio that\n * is equal or better than the ratio of Amount:SendMax. See Limit Quality for\n * details.\n */\n tfLimitQuality?: boolean\n}\n\n/**\n * A Payment transaction represents a transfer of value from one account to\n * another.\n *\n * @category Transaction Models\n */\nexport interface Payment extends BaseTransaction {\n TransactionType: 'Payment'\n /**\n * The amount of currency to deliver. For non-XRP amounts, the nested field\n * names MUST be lower-case. If the tfPartialPayment flag is set, deliver up\n * to this amount instead.\n */\n Amount: Amount | MPTAmount\n\n DeliverMax?: Amount | MPTAmount\n\n /** The unique address of the account receiving the payment. */\n Destination: Account\n /**\n * Arbitrary tag that identifies the reason for the payment to the\n * destination, or a hosted recipient to pay.\n */\n DestinationTag?: number\n /**\n * Arbitrary 256-bit hash representing a specific reason or identifier for\n * this payment.\n */\n InvoiceID?: string\n /**\n * Array of payment paths to be used for this transaction. Must be omitted\n * for XRP-to-XRP transactions.\n */\n Paths?: Path[]\n /**\n * Highest amount of source currency this transaction is allowed to cost,\n * including transfer fees, exchange rates, and slippage . Does not include\n * the XRP destroyed as a cost for submitting the transaction. For non-XRP\n * amounts, the nested field names MUST be lower-case. Must be supplied for\n * cross-currency/cross-issue payments. Must be omitted for XRP-to-XRP\n * Payments.\n */\n SendMax?: Amount | MPTAmount\n /**\n * Minimum amount of destination currency this transaction should deliver.\n * Only valid if this is a partial payment. For non-XRP amounts, the nested\n * field names are lower-case.\n */\n DeliverMin?: Amount | MPTAmount\n /**\n * Credentials associated with the sender of this transaction.\n * The credentials included must not be expired.\n */\n CredentialIDs?: string[]\n /**\n * The domain the sender intends to use. Both the sender and destination must\n * be part of this domain. The DomainID can be included if the sender intends\n * it to be a cross-currency payment (i.e. if the payment is going to interact\n * with the DEX). The domain will only play it's role if there is a path that\n * crossing an orderbook.\n *\n * Note: it's still possible that DomainID is included but the payment does\n * not interact with DEX, it simply means that the DomainID will be ignored\n * during payment paths.\n */\n DomainID?: string\n Flags?: number | PaymentFlagsInterface\n}\n\nexport interface PaymentMetadata extends TransactionMetadataBase {\n DeliveredAmount?: Amount | MPTAmount\n delivered_amount?: Amount | MPTAmount | 'unavailable'\n}\n\n/**\n * Verify the form and type of a Payment at runtime.\n *\n * @param tx - A Payment Transaction.\n * @throws When the Payment is malformed.\n */\nexport function validatePayment(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Amount === undefined) {\n throw new ValidationError('PaymentTransaction: missing field Amount')\n }\n\n if (!isAmount(tx.Amount)) {\n throw new ValidationError('PaymentTransaction: invalid Amount')\n }\n\n validateRequiredField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n validateCredentialsList(\n tx.CredentialIDs,\n tx.TransactionType,\n true,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n\n if (tx.InvoiceID !== undefined && typeof tx.InvoiceID !== 'string') {\n throw new ValidationError('PaymentTransaction: InvoiceID must be a string')\n }\n\n validateOptionalField(tx, 'DomainID', isDomainID, {\n txType: 'PaymentTransaction',\n paramName: 'DomainID',\n })\n\n if (tx.Paths !== undefined && !isPaths(tx.Paths)) {\n throw new ValidationError('PaymentTransaction: invalid Paths')\n }\n\n if (tx.SendMax !== undefined && !isAmount(tx.SendMax)) {\n throw new ValidationError('PaymentTransaction: invalid SendMax')\n }\n\n checkPartialPayment(tx)\n}\n\nfunction checkPartialPayment(tx: Record): void {\n if (tx.DeliverMin != null) {\n if (tx.Flags == null) {\n throw new ValidationError(\n 'PaymentTransaction: tfPartialPayment flag required with DeliverMin',\n )\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Only used by JS\n const flags = tx.Flags as number | PaymentFlagsInterface\n const isTfPartialPayment =\n typeof flags === 'number'\n ? isFlagEnabled(flags, PaymentFlags.tfPartialPayment)\n : (flags.tfPartialPayment ?? false)\n\n if (!isTfPartialPayment) {\n throw new ValidationError(\n 'PaymentTransaction: tfPartialPayment flag required with DeliverMin',\n )\n }\n\n if (!isAmount(tx.DeliverMin)) {\n throw new ValidationError('PaymentTransaction: invalid DeliverMin')\n }\n }\n}\n\nfunction isPathStep(pathStep: Record): boolean {\n if (pathStep.account !== undefined && typeof pathStep.account !== 'string') {\n return false\n }\n if (\n pathStep.currency !== undefined &&\n typeof pathStep.currency !== 'string'\n ) {\n return false\n }\n if (pathStep.issuer !== undefined && typeof pathStep.issuer !== 'string') {\n return false\n }\n if (\n pathStep.account !== undefined &&\n pathStep.currency === undefined &&\n pathStep.issuer === undefined\n ) {\n return true\n }\n if (pathStep.currency !== undefined || pathStep.issuer !== undefined) {\n return true\n }\n return false\n}\n\nfunction isPath(path: unknown): path is Path {\n if (!Array.isArray(path) || path.length === 0) {\n return false\n }\n for (const pathStep of path) {\n if (!isPathStep(pathStep)) {\n return false\n }\n }\n return true\n}\n\nfunction isPaths(paths: unknown): paths is Path[] {\n if (!isArray(paths) || paths.length === 0) {\n return false\n }\n\n for (const path of paths) {\n if (!isArray(path) || path.length === 0) {\n return false\n }\n\n if (!isPath(path)) {\n return false\n }\n }\n\n return true\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n validateBaseTransaction,\n validateCredentialsList,\n MAX_AUTHORIZED_CREDENTIALS,\n} from './common'\n\n/**\n * Enum representing values for PaymentChannelClaim transaction flags.\n *\n * @category Transaction Flags\n */\nexport enum PaymentChannelClaimFlags {\n /**\n * Clear the channel's Expiration time. (Expiration is different from the\n * channel's immutable CancelAfter time.) Only the source address of the\n * payment channel can use this flag.\n */\n tfRenew = 0x00010000,\n /**\n * Request to close the channel. Only the channel source and destination\n * addresses can use this flag. This flag closes the channel immediately if it\n * has no more XRP allocated to it after processing the current claim, or if\n * the destination address uses it. If the source address uses this flag when\n * the channel still holds XRP, this schedules the channel to close after\n * SettleDelay seconds have passed. (Specifically, this sets the Expiration of\n * the channel to the close time of the previous ledger plus the channel's\n * SettleDelay time, unless the channel already has an earlier Expiration\n * time.) If the destination address uses this flag when the channel still\n * holds XRP, any XRP that remains after processing the claim is returned to\n * the source address.\n */\n tfClose = 0x00020000,\n}\n\n/**\n * Map of flags to boolean values representing {@link PaymentChannelClaim}\n * transaction flags.\n *\n * @category Transaction Flags\n *\n * @example\n * ```typescript\n * const paymentChannelClaim: PaymentChannelClaim = {\n * Account: 'rMpxZpuy5RBSP47oK2hDWUtk3B5BNQHfGj,\n * TransactionType: 'PaymentChannelClaim',\n * Channel: hashes.hashPaymentChannel(\n * 'rMpxZpuy5RBSP47oK2hDWUtk3B5BNQHfGj',\n * 'rQGYqiyH5Ue9J96p4E6Qt6AvqxK4sDhnS5',\n * 21970712,\n * ),\n * Amount: '100',\n * Flags: {\n * tfClose: true\n * }\n *}\n *\n * // Autofill the tx to see how flags actually look compared to the interface usage.\n * const autofilledTx = await client.autofill(paymentChannelClaim)\n * console.log(autofilledTx)\n * // {\n * // Account: 'rMpxZpuy5RBSP47oK2hDWUtk3B5BNQHfGj',\n * // TransactionType: 'PaymentChannelClaim',\n * // Channel: 'FC14BF9245D731DC1749EE0F070765E4EB4E993F8ECEE3D00F7E6E26D6EF98CF',\n * // Amount: '100',\n * // Flags: 131072,\n * // Sequence: 21970713,\n * // Fee: '12',\n * // LastLedgerSequence: 21970658\n * // }\n * ```\n */\nexport interface PaymentChannelClaimFlagsInterface\n extends GlobalFlagsInterface {\n /**\n * Clear the channel's Expiration time. (Expiration is different from the\n * channel's immutable CancelAfter time.) Only the source address of the\n * payment channel can use this flag.\n */\n tfRenew?: boolean\n /**\n * Request to close the channel. Only the channel source and destination\n * addresses can use this flag. This flag closes the channel immediately if it\n * has no more XRP allocated to it after processing the current claim, or if\n * the destination address uses it. If the source address uses this flag when\n * the channel still holds XRP, this schedules the channel to close after\n * SettleDelay seconds have passed. (Specifically, this sets the Expiration of\n * the channel to the close time of the previous ledger plus the channel's\n * SettleDelay time, unless the channel already has an earlier Expiration\n * time.) If the destination address uses this flag when the channel still\n * holds XRP, any XRP that remains after processing the claim is returned to\n * the source address.\n */\n tfClose?: boolean\n}\n\n/**\n * Claim XRP from a payment channel, adjust the payment channel's expiration,\n * or both.\n *\n * @category Transaction Models\n */\nexport interface PaymentChannelClaim extends BaseTransaction {\n TransactionType: 'PaymentChannelClaim'\n Flags?: number | PaymentChannelClaimFlagsInterface\n /** The unique ID of the channel as a 64-character hexadecimal string. */\n Channel: string\n /**\n * Total amount of XRP, in drops, delivered by this channel after processing\n * this claim. Required to deliver XRP. Must be more than the total amount\n * delivered by the channel so far, but not greater than the Amount of the\n * signed claim. Must be provided except when closing the channel.\n */\n Balance?: string\n /**\n * The amount of XRP, in drops, authorized by the Signature. This must match\n * the amount in the signed message. This is the cumulative amount of XRP that\n * can be dispensed by the channel, including XRP previously redeemed.\n */\n Amount?: string\n /**\n * The signature of this claim, as hexadecimal. The signed message contains\n * the channel ID and the amount of the claim. Required unless the sender of\n * the transaction is the source address of the channel.\n */\n Signature?: string\n /**\n * The public key used for the signature, as hexadecimal. This must match the\n * PublicKey stored in the ledger for the channel. Required unless the sender\n * of the transaction is the source address of the channel and the Signature\n * field is omitted.\n */\n PublicKey?: string\n /**\n * Credentials associated with the sender of this transaction.\n * The credentials included must not be expired.\n */\n CredentialIDs?: string[]\n}\n\n/**\n * Verify the form and type of an PaymentChannelClaim at runtime.\n *\n * @param tx - An PaymentChannelClaim Transaction.\n * @throws When the PaymentChannelClaim is Malformed.\n */\nexport function validatePaymentChannelClaim(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateCredentialsList(\n tx.CredentialIDs,\n tx.TransactionType,\n true,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n\n if (tx.Channel === undefined) {\n throw new ValidationError('PaymentChannelClaim: missing Channel')\n }\n\n if (typeof tx.Channel !== 'string') {\n throw new ValidationError('PaymentChannelClaim: Channel must be a string')\n }\n\n if (tx.Balance !== undefined && typeof tx.Balance !== 'string') {\n throw new ValidationError('PaymentChannelClaim: Balance must be a string')\n }\n\n if (tx.Amount !== undefined && typeof tx.Amount !== 'string') {\n throw new ValidationError('PaymentChannelClaim: Amount must be a string')\n }\n\n if (tx.Signature !== undefined && typeof tx.Signature !== 'string') {\n throw new ValidationError('PaymentChannelClaim: Signature must be a string')\n }\n\n if (tx.PublicKey !== undefined && typeof tx.PublicKey !== 'string') {\n throw new ValidationError('PaymentChannelClaim: PublicKey must be a string')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { IssuedCurrencyAmount } from '../common'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n isAmount,\n validateBaseTransaction,\n} from './common'\n\n/**\n * Enum representing values of {@link TrustSet} transaction flags.\n *\n * @category Transaction Flags\n */\nexport enum TrustSetFlags {\n /**\n * Authorize the other party to hold currency issued by this account. (No\n * effect unless using the asfRequireAuth AccountSet flag.) Cannot be unset.\n */\n tfSetfAuth = 0x00010000,\n /**\n * Enable the No Ripple flag, which blocks rippling between two trust lines.\n * of the same currency if this flag is enabled on both.\n */\n tfSetNoRipple = 0x00020000,\n /** Disable the No Ripple flag, allowing rippling on this trust line. */\n tfClearNoRipple = 0x00040000,\n /** Freeze the trust line. */\n tfSetFreeze = 0x00100000,\n /** Unfreeze the trust line. */\n tfClearFreeze = 0x00200000,\n /** Deep-Freeze the trustline -- disallow sending and receiving the said IssuedCurrency */\n /** Allowed only if the trustline is already regularly frozen, or if tfSetFreeze is set in the same transaction. */\n tfSetDeepFreeze = 0x00400000,\n /** Clear a Deep-Frozen trustline */\n tfClearDeepFreeze = 0x00800000,\n}\n\n/**\n * Map of flags to boolean values representing {@link TrustSet} transaction\n * flags.\n *\n * @category Transaction Flags\n *\n * @example\n * ```typescript\n *\n * const trustSetTx: TrustSet = {\n * TransactionType: 'TrustSet',\n * Account: wallet2.getClassicAddress(),\n * LimitAmount: {\n * currency: 'FOO',\n * issuer: wallet1.getClassicAddress(),\n * value: '10000000000',\n * },\n * Flags: {\n * tfSetNoRipple: true\n * }\n * }\n *\n * // Autofill the tx to see how flags actually look compared to the interface usage.\n * const autofilledTx = await client.autofill(trustSetTx)\n * console.log(autofilledTx)\n * // {\n * // TransactionType: 'TrustSet',\n * // Account: 'r9dAdQQCBcGajVSeC9CqW3LCugjPDnAkEb',\n * // LimitAmount: {\n * // currency: 'FOO',\n * // issuer: 'rWZzUjo5xGiAoRBqzsndyzonXz47UV8u1',\n * // value: '10000000000'\n * // },\n * // Flags: 131072,\n * // Sequence: 21971483,\n * // Fee: '12',\n * // LastLedgerSequence: 21971503\n * // }\n * ```\n */\nexport interface TrustSetFlagsInterface extends GlobalFlagsInterface {\n /**\n * Authorize the other party to hold currency issued by this account. (No\n * effect unless using the asfRequireAuth AccountSet flag.) Cannot be unset.\n */\n tfSetfAuth?: boolean\n /**\n * Enable the No Ripple flag, which blocks rippling between two trust lines\n * of the same currency if this flag is enabled on both.\n */\n tfSetNoRipple?: boolean\n /** Disable the No Ripple flag, allowing rippling on this trust line. */\n tfClearNoRipple?: boolean\n /** Freeze the trust line. */\n tfSetFreeze?: boolean\n /** Unfreeze the trust line. */\n tfClearFreeze?: boolean\n /** Deep-Freeze the trustline -- disallow sending and receiving the said IssuedCurrency */\n /** Allowed only if the trustline is already regularly frozen, or if tfSetFreeze is set in the same transaction. */\n tfSetDeepFreeze?: boolean\n /** Clear a Deep-Frozen trust line */\n tfClearDeepFreeze?: boolean\n}\n\n/**\n * Create or modify a trust line linking two accounts.\n *\n * @category Transaction Models\n */\nexport interface TrustSet extends BaseTransaction {\n TransactionType: 'TrustSet'\n /**\n * Object defining the trust line to create or modify, in the format of a\n * Currency Amount.\n */\n LimitAmount: IssuedCurrencyAmount\n /**\n * Value incoming balances on this trust line at the ratio of this number per\n * 1,000,000,000 units. A value of 0 is shorthand for treating balances at\n * face value.\n */\n QualityIn?: number\n /**\n * Value outgoing balances on this trust line at the ratio of this number per\n * 1,000,000,000 units. A value of 0 is shorthand for treating balances at\n * face value.\n */\n QualityOut?: number\n Flags?: number | TrustSetFlagsInterface\n}\n\n/**\n * Verify the form and type of a TrustSet at runtime.\n *\n * @param tx - A TrustSet Transaction.\n * @throws When the TrustSet is malformed.\n */\nexport function validateTrustSet(tx: Record): void {\n validateBaseTransaction(tx)\n const { LimitAmount, QualityIn, QualityOut } = tx\n\n if (LimitAmount === undefined) {\n throw new ValidationError('TrustSet: missing field LimitAmount')\n }\n\n if (!isAmount(LimitAmount)) {\n throw new ValidationError('TrustSet: invalid LimitAmount')\n }\n\n if (QualityIn !== undefined && typeof QualityIn !== 'number') {\n throw new ValidationError('TrustSet: QualityIn must be a number')\n }\n\n if (QualityOut !== undefined && typeof QualityOut !== 'number') {\n throw new ValidationError('TrustSet: QualityOut must be a number')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Currency } from '../common'\nimport { hasFlag, isHex } from '../utils'\nimport {\n MAX_MPT_META_BYTE_LENGTH,\n MPT_META_WARNING_HEADER,\n validateMPTokenMetadata,\n} from '../utils/mptokenMetadata'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n GlobalFlagsInterface,\n validateOptionalField,\n isNumber,\n isCurrency,\n validateRequiredField,\n isString,\n VAULT_DATA_MAX_BYTE_LENGTH,\n XRPLNumber,\n isXRPLNumber,\n} from './common'\n\n/**\n * Enum representing withdrawal strategies for a Vault.\n */\nexport enum VaultWithdrawalPolicy {\n vaultStrategyFirstComeFirstServe = 0x0001,\n}\n\n/**\n * Enum representing values of {@link VaultCreate} transaction flags.\n *\n * @category Transaction Flags\n */\nexport enum VaultCreateFlags {\n tfVaultPrivate = 0x00010000,\n tfVaultShareNonTransferable = 0x00020000,\n}\n\n/**\n * Map of flags to boolean values representing {@link VaultCreate} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface VaultCreateFlagsInterface extends GlobalFlagsInterface {\n tfVaultPrivate?: boolean\n tfVaultShareNonTransferable?: boolean\n}\n\n/**\n * The VaultCreate transaction creates a new Vault object.\n *\n * @category Transaction Models\n */\nexport interface VaultCreate extends BaseTransaction {\n TransactionType: 'VaultCreate'\n\n /**\n * The asset (XRP, IOU or MPT) of the Vault.\n */\n Asset: Currency\n\n /**\n * Arbitrary Vault metadata, limited to 256 bytes.\n */\n Data?: string\n\n /**\n * The maximum asset amount that can be held in a vault.\n */\n AssetsMaximum?: XRPLNumber\n\n /**\n * Should follow {@link https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0089-multi-purpose-token-metadata-schema | XLS-89} standard.\n * Use {@link encodeMPTokenMetadata} utility function to convert to convert {@link MPTokenMetadata} to a blob.\n * Use {@link decodeMPTokenMetadata} utility function to convert from a blob to {@link MPTokenMetadata}.\n *\n * While adherence to the XLS-89d format is not mandatory, non-compliant metadata\n * may not be discoverable by ecosystem tools such as explorers and indexers.\n */\n MPTokenMetadata?: string\n\n /**\n * Indicates the withdrawal strategy used by the Vault.\n */\n WithdrawalPolicy?: number\n\n /**\n * The PermissionedDomain object ID associated with the shares of this Vault.\n */\n DomainID?: string\n}\n\n/* eslint-disable max-lines-per-function -- Not needed to reduce function */\n/* eslint-disable max-statements -- required to do all field validations */\n/**\n * Verify the form and type of an {@link VaultCreate} at runtime.\n *\n * @param tx - A {@link VaultCreate} Transaction.\n * @throws When the {@link VaultCreate} is malformed.\n */\nexport function validateVaultCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Asset', isCurrency)\n validateOptionalField(tx, 'Data', isString)\n validateOptionalField(tx, 'AssetsMaximum', isXRPLNumber)\n validateOptionalField(tx, 'MPTokenMetadata', isString)\n validateOptionalField(tx, 'WithdrawalPolicy', isNumber)\n validateOptionalField(tx, 'DomainID', isString)\n\n if (tx.Data !== undefined) {\n const dataHex = tx.Data\n if (!isHex(dataHex)) {\n throw new ValidationError('VaultCreate: Data must be a valid hex string')\n }\n const dataByteLength = dataHex.length / 2\n if (dataByteLength > VAULT_DATA_MAX_BYTE_LENGTH) {\n throw new ValidationError(\n `VaultCreate: Data exceeds ${VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`,\n )\n }\n }\n\n if (tx.MPTokenMetadata !== undefined) {\n const metaHex = tx.MPTokenMetadata\n if (!isHex(metaHex)) {\n throw new ValidationError(\n 'VaultCreate: MPTokenMetadata must be a valid non-empty hex string',\n )\n }\n const metaByteLength = metaHex.length / 2\n if (metaByteLength > MAX_MPT_META_BYTE_LENGTH) {\n throw new ValidationError(\n `VaultCreate: MPTokenMetadata exceeds ${MAX_MPT_META_BYTE_LENGTH} bytes (actual: ${metaByteLength})`,\n )\n }\n }\n\n // If DomainID present, tfVaultPrivate must be set\n if (\n tx.DomainID !== undefined &&\n !hasFlag(tx, VaultCreateFlags.tfVaultPrivate, 'tfVaultPrivate')\n ) {\n throw new ValidationError(\n 'VaultCreate: Cannot set DomainID unless tfVaultPrivate flag is set.',\n )\n }\n\n if (tx.MPTokenMetadata != null) {\n const validationMessages = validateMPTokenMetadata(tx.MPTokenMetadata)\n\n if (validationMessages.length > 0) {\n const message = [\n MPT_META_WARNING_HEADER,\n ...validationMessages.map((msg) => `- ${msg}`),\n ].join('\\n')\n\n // eslint-disable-next-line no-console -- Required here.\n console.warn(message)\n }\n }\n}\n/* eslint-enable max-lines-per-function */\n/* eslint-enable max-statements */\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n BaseTransaction,\n GlobalFlagsInterface,\n isAmount,\n isXChainBridge,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * Enum representing values of {@link XChainModifyBridge} transaction flags.\n *\n * @category Transaction Flags\n */\nexport enum XChainModifyBridgeFlags {\n /** Clears the MinAccountCreateAmount of the bridge. */\n tfClearAccountCreateAmount = 0x00010000,\n}\n\n/**\n * Map of flags to boolean values representing {@link XChainModifyBridge} transaction\n * flags.\n *\n * @category Transaction Flags\n */\nexport interface XChainModifyBridgeFlagsInterface extends GlobalFlagsInterface {\n /** Clears the MinAccountCreateAmount of the bridge. */\n tfClearAccountCreateAmount?: boolean\n}\n\n/**\n * The XChainModifyBridge transaction allows bridge managers to modify the parameters\n * of the bridge.\n *\n * @category Transaction Models\n */\nexport interface XChainModifyBridge extends BaseTransaction {\n TransactionType: 'XChainModifyBridge'\n\n /**\n * The bridge to modify.\n */\n XChainBridge: XChainBridge\n\n /**\n * The signature reward split between the witnesses for submitting attestations.\n */\n SignatureReward?: Amount\n\n /**\n * The minimum amount, in XRP, required for a {@link XChainAccountCreateCommit}\n * transaction. If this is not present, the {@link XChainAccountCreateCommit}\n * transaction will fail. This field can only be present on XRP-XRP bridges.\n */\n MinAccountCreateAmount?: Amount\n\n Flags?: number | XChainModifyBridgeFlagsInterface\n}\n\n/**\n * Verify the form and type of an XChainModifyBridge at runtime.\n *\n * @param tx - An XChainModifyBridge Transaction.\n * @throws When the XChainModifyBridge is malformed.\n */\nexport function validateXChainModifyBridge(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateOptionalField(tx, 'SignatureReward', isAmount)\n\n validateOptionalField(tx, 'MinAccountCreateAmount', isAmount)\n}\n", "/* eslint-disable no-bitwise -- flags require bitwise operations */\nimport { ValidationError } from '../../errors'\nimport {\n AccountRootFlagsInterface,\n AccountRootFlags,\n} from '../ledger/AccountRoot'\nimport { AccountSetTfFlags } from '../transactions/accountSet'\nimport { AMMClawbackFlags } from '../transactions/AMMClawback'\nimport { AMMDepositFlags } from '../transactions/AMMDeposit'\nimport { AMMWithdrawFlags } from '../transactions/AMMWithdraw'\nimport { BatchFlags } from '../transactions/batch'\nimport { GlobalFlags } from '../transactions/common'\nimport { MPTokenAuthorizeFlags } from '../transactions/MPTokenAuthorize'\nimport { MPTokenIssuanceCreateFlags } from '../transactions/MPTokenIssuanceCreate'\nimport { MPTokenIssuanceSetFlags } from '../transactions/MPTokenIssuanceSet'\nimport { NFTokenCreateOfferFlags } from '../transactions/NFTokenCreateOffer'\nimport { NFTokenMintFlags } from '../transactions/NFTokenMint'\nimport { OfferCreateFlags } from '../transactions/offerCreate'\nimport { PaymentFlags } from '../transactions/payment'\nimport { PaymentChannelClaimFlags } from '../transactions/paymentChannelClaim'\nimport type { Transaction } from '../transactions/transaction'\nimport { TrustSetFlags } from '../transactions/trustSet'\nimport { VaultCreateFlags } from '../transactions/vaultCreate'\nimport { XChainModifyBridgeFlags } from '../transactions/XChainModifyBridge'\n\nimport { isFlagEnabled } from '.'\n\n/**\n * Convert an AccountRoot Flags number into an interface for easy interpretation.\n *\n * @param flags - A number which is the bitwise and of all enabled AccountRootFlagsInterface.\n * @returns An interface with all flags as booleans.\n */\nexport function parseAccountRootFlags(\n flags: number,\n): AccountRootFlagsInterface {\n const flagsInterface: AccountRootFlagsInterface = {}\n\n // If we use keys all will be strings and enums are reversed during transpilation\n Object.values(AccountRootFlags).forEach((flag) => {\n if (\n typeof flag === 'string' &&\n isFlagEnabled(flags, AccountRootFlags[flag])\n ) {\n flagsInterface[flag] = true\n }\n })\n\n return flagsInterface\n}\n\nconst txToFlag = {\n AccountSet: AccountSetTfFlags,\n AMMClawback: AMMClawbackFlags,\n AMMDeposit: AMMDepositFlags,\n AMMWithdraw: AMMWithdrawFlags,\n Batch: BatchFlags,\n MPTokenAuthorize: MPTokenAuthorizeFlags,\n MPTokenIssuanceCreate: MPTokenIssuanceCreateFlags,\n MPTokenIssuanceSet: MPTokenIssuanceSetFlags,\n NFTokenCreateOffer: NFTokenCreateOfferFlags,\n NFTokenMint: NFTokenMintFlags,\n OfferCreate: OfferCreateFlags,\n PaymentChannelClaim: PaymentChannelClaimFlags,\n Payment: PaymentFlags,\n TrustSet: TrustSetFlags,\n VaultCreate: VaultCreateFlags,\n XChainModifyBridge: XChainModifyBridgeFlags,\n}\n\nfunction isTxToFlagKey(\n transactionType: string,\n): transactionType is keyof typeof txToFlag {\n return transactionType in txToFlag\n}\n\n/**\n * Sets a transaction's flags to its numeric representation.\n *\n * @deprecated\n * This utility function is deprecated.\n * Use convertTxFlagsToNumber() instead and use the returned value to modify the Transaction.Flags from the caller.\n *\n * @param tx - A transaction to set its flags to its numeric representation.\n */\nexport function setTransactionFlagsToNumber(tx: Transaction): void {\n // eslint-disable-next-line no-console -- intended deprecation warning\n console.warn(\n 'This function is deprecated. Use convertTxFlagsToNumber() instead and use the returned value to modify the Transaction.Flags from the caller.',\n )\n\n if (tx.Flags) {\n // eslint-disable-next-line no-param-reassign -- intended param reassign in setter, retain old functionality for compatibility\n tx.Flags = convertTxFlagsToNumber(tx)\n }\n}\n\n/**\n * Returns a Transaction's Flags as its numeric representation.\n *\n * @param tx - A Transaction to parse Flags for\n * @returns A numerical representation of a Transaction's Flags\n */\nexport function convertTxFlagsToNumber(tx: Transaction): number {\n const txFlags = tx.Flags\n if (txFlags == null) {\n return 0\n }\n if (typeof txFlags === 'number') {\n return txFlags\n }\n\n if (isTxToFlagKey(tx.TransactionType)) {\n const flagEnum = txToFlag[tx.TransactionType]\n return Object.keys(txFlags).reduce((resultFlags, flag) => {\n if (flagEnum[flag] == null && GlobalFlags[flag] == null) {\n throw new ValidationError(`Invalid flag ${flag}.`)\n }\n\n return txFlags[flag]\n ? resultFlags | (flagEnum[flag] ?? GlobalFlags[flag])\n : resultFlags\n }, 0)\n }\n\n return Object.keys(txFlags).reduce((resultFlags, flag) => {\n if (GlobalFlags[flag] == null) {\n throw new ValidationError(\n `Invalid flag ${flag}. Valid flags are ${JSON.stringify(GlobalFlags)}`,\n )\n }\n\n return txFlags[flag] ? resultFlags | GlobalFlags[flag] : resultFlags\n }, 0)\n}\n\n/**\n * Convert a Transaction flags property into a map for easy interpretation.\n *\n * @param tx - A transaction to parse flags for.\n * @returns A map with all flags as booleans.\n */\nexport function parseTransactionFlags(tx: Transaction): object {\n const flags = convertTxFlagsToNumber(tx)\n if (flags === 0) {\n return {}\n }\n\n const booleanFlagMap = {}\n\n if (isTxToFlagKey(tx.TransactionType)) {\n const transactionTypeFlags = txToFlag[tx.TransactionType]\n Object.values(transactionTypeFlags).forEach((flag) => {\n if (\n typeof flag === 'string' &&\n isFlagEnabled(flags, transactionTypeFlags[flag])\n ) {\n booleanFlagMap[flag] = true\n }\n })\n }\n\n Object.values(GlobalFlags).forEach((flag) => {\n if (typeof flag === 'string' && isFlagEnabled(flags, GlobalFlags[flag])) {\n booleanFlagMap[flag] = true\n }\n })\n\n return booleanFlagMap\n}\n", "import { createHash } from 'crypto'\nimport wrapCryptoCreateHash from '../internal/wrapCryptoCreateHash'\n\n/**\n * Wrap node's native ripemd160 implementation in HashFn\n */\nexport const ripemd160 = wrapCryptoCreateHash('ripemd160', createHash)\n", "/**\n * Internal Merkle-Damgard hash utils.\n * @module\n */\nimport { type Input, Hash, abytes, aexists, aoutput, clean, createView, toBytes } from './utils.ts';\n\n/** Polyfill for Safari 14. https://caniuse.com/mdn-javascript_builtins_dataview_setbiguint64 */\nexport function setBigUint64(\n view: DataView,\n byteOffset: number,\n value: bigint,\n isLE: boolean\n): void {\n if (typeof view.setBigUint64 === 'function') 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\n/** Choice: a ? b : c */\nexport function Chi(a: number, b: number, c: number): number {\n return (a & b) ^ (~a & c);\n}\n\n/** Majority function, true if any two inputs is true. */\nexport function Maj(a: number, b: number, c: number): number {\n return (a & b) ^ (a & c) ^ (b & c);\n}\n\n/**\n * Merkle-Damgard hash construction base class.\n * Could be used to create MD5, RIPEMD, SHA1, SHA2.\n */\nexport abstract class HashMD> extends Hash {\n protected abstract process(buf: DataView, offset: number): void;\n protected abstract get(): number[];\n protected abstract set(...args: number[]): void;\n abstract destroy(): void;\n protected abstract roundClean(): void;\n\n readonly blockLen: number;\n readonly outputLen: number;\n readonly padOffset: number;\n readonly isLE: boolean;\n\n // For partial updates less than block size\n protected buffer: Uint8Array;\n protected view: DataView;\n protected finished = false;\n protected length = 0;\n protected pos = 0;\n protected destroyed = false;\n\n constructor(blockLen: number, outputLen: number, padOffset: number, isLE: boolean) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data: Input): this {\n aexists(this);\n data = toBytes(data);\n abytes(data);\n const { view, buffer, blockLen } = this;\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen) 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: Uint8Array): void {\n aexists(this);\n aoutput(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n clean(this.buffer.subarray(pos));\n // we have less than padOffset left in buffer, so we cannot put length in\n // current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++) 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) 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) throw new Error('_sha2: outputLen bigger than state');\n for (let i = 0; i < outLen; i++) oview.setUint32(4 * i, state[i], isLE);\n }\n digest(): Uint8Array {\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?: T): T {\n to ||= new (this.constructor as any)() as T;\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.destroyed = destroyed;\n to.finished = finished;\n to.length = length;\n to.pos = pos;\n if (length % blockLen) to.buffer.set(buffer);\n return to;\n }\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * Initial SHA-2 state: fractional parts of square roots of first 16 primes 2..53.\n * Check out `test/misc/sha2-gen-iv.js` for recomputation guide.\n */\n\n/** Initial SHA256 state. Bits 0..32 of frac part of sqrt of primes 2..19 */\nexport const SHA256_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n]);\n\n/** Initial SHA224 state. Bits 32..64 of frac part of sqrt of primes 23..53 */\nexport const SHA224_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4,\n]);\n\n/** Initial SHA384 state. Bits 0..64 of frac part of sqrt of primes 23..53 */\nexport const SHA384_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4,\n]);\n\n/** Initial SHA512 state. Bits 0..64 of frac part of sqrt of primes 2..19 */\nexport const SHA512_IV: Uint32Array = /* @__PURE__ */ Uint32Array.from([\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179,\n]);\n", "/**\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);\n\nfunction fromBig(\n n: bigint,\n le = false\n): {\n h: number;\n l: number;\n} {\n if (le) 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}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n const len = lst.length;\n let Ah = new Uint32Array(len);\n let Al = new Uint32Array(len);\n for (let i = 0; i < len; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\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(\n Ah: number,\n Al: number,\n Bh: number,\n Bl: number\n): {\n h: number;\n l: number;\n} {\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: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\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", "/**\n * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.\n * SHA256 is the fastest hash implementable in JS, even faster than Blake3.\n * Check out [RFC 4634](https://datatracker.ietf.org/doc/html/rfc4634) and\n * [FIPS 180-4](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf).\n * @module\n */\nimport { Chi, HashMD, Maj, SHA224_IV, SHA256_IV, SHA384_IV, SHA512_IV } from './_md.ts';\nimport * as u64 from './_u64.ts';\nimport { type CHash, clean, createHasher, rotr } from './utils.ts';\n\n/**\n * Round constants:\n * First 32 bits of fractional parts of the cube roots of the first 64 primes 2..311)\n */\n// prettier-ignore\nconst SHA256_K = /* @__PURE__ */ Uint32Array.from([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/** Reusable temporary buffer. \"W\" comes straight from spec. */\nconst SHA256_W = /* @__PURE__ */ new Uint32Array(64);\nexport class SHA256 extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n protected A: number = SHA256_IV[0] | 0;\n protected B: number = SHA256_IV[1] | 0;\n protected C: number = SHA256_IV[2] | 0;\n protected D: number = SHA256_IV[3] | 0;\n protected E: number = SHA256_IV[4] | 0;\n protected F: number = SHA256_IV[5] | 0;\n protected G: number = SHA256_IV[6] | 0;\n protected H: number = SHA256_IV[7] | 0;\n\n constructor(outputLen: number = 32) {\n super(64, outputLen, 8, false);\n }\n protected get(): [number, number, number, number, number, number, number, number] {\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 protected set(\n A: number, B: number, C: number, D: number, E: number, F: number, G: number, H: number\n ): void {\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 protected process(view: DataView, offset: number): void {\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) 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 protected roundClean(): void {\n clean(SHA256_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\nexport class SHA224 extends SHA256 {\n protected A: number = SHA224_IV[0] | 0;\n protected B: number = SHA224_IV[1] | 0;\n protected C: number = SHA224_IV[2] | 0;\n protected D: number = SHA224_IV[3] | 0;\n protected E: number = SHA224_IV[4] | 0;\n protected F: number = SHA224_IV[5] | 0;\n protected G: number = SHA224_IV[6] | 0;\n protected H: number = SHA224_IV[7] | 0;\n constructor() {\n super(28);\n }\n}\n\n// SHA2-512 is slower than sha256 in js because u64 operations are slow.\n\n// Round contants\n// First 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409\n// prettier-ignore\nconst K512 = /* @__PURE__ */ (() => u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n))))();\nconst SHA512_Kh = /* @__PURE__ */ (() => K512[0])();\nconst SHA512_Kl = /* @__PURE__ */ (() => K512[1])();\n\n// Reusable temporary buffers\nconst SHA512_W_H = /* @__PURE__ */ new Uint32Array(80);\nconst SHA512_W_L = /* @__PURE__ */ new Uint32Array(80);\n\nexport class SHA512 extends HashMD {\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n // h -- high 32 bits, l -- low 32 bits\n protected Ah: number = SHA512_IV[0] | 0;\n protected Al: number = SHA512_IV[1] | 0;\n protected Bh: number = SHA512_IV[2] | 0;\n protected Bl: number = SHA512_IV[3] | 0;\n protected Ch: number = SHA512_IV[4] | 0;\n protected Cl: number = SHA512_IV[5] | 0;\n protected Dh: number = SHA512_IV[6] | 0;\n protected Dl: number = SHA512_IV[7] | 0;\n protected Eh: number = SHA512_IV[8] | 0;\n protected El: number = SHA512_IV[9] | 0;\n protected Fh: number = SHA512_IV[10] | 0;\n protected Fl: number = SHA512_IV[11] | 0;\n protected Gh: number = SHA512_IV[12] | 0;\n protected Gl: number = SHA512_IV[13] | 0;\n protected Hh: number = SHA512_IV[14] | 0;\n protected Hl: number = SHA512_IV[15] | 0;\n\n constructor(outputLen: number = 64) {\n super(128, outputLen, 16, false);\n }\n // prettier-ignore\n protected get(): [\n number, number, number, number, number, number, number, number,\n number, number, number, number, number, number, number, number\n ] {\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 protected set(\n Ah: number, Al: number, Bh: number, Bl: number, Ch: number, Cl: number, Dh: number, Dl: number,\n Eh: number, El: number, Fh: number, Fl: number, Gh: number, Gl: number, Hh: number, Hl: number\n ): void {\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 protected process(view: DataView, offset: number): void {\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 protected roundClean(): void {\n clean(SHA512_W_H, SHA512_W_L);\n }\n destroy(): void {\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\n\nexport class SHA384 extends SHA512 {\n protected Ah: number = SHA384_IV[0] | 0;\n protected Al: number = SHA384_IV[1] | 0;\n protected Bh: number = SHA384_IV[2] | 0;\n protected Bl: number = SHA384_IV[3] | 0;\n protected Ch: number = SHA384_IV[4] | 0;\n protected Cl: number = SHA384_IV[5] | 0;\n protected Dh: number = SHA384_IV[6] | 0;\n protected Dl: number = SHA384_IV[7] | 0;\n protected Eh: number = SHA384_IV[8] | 0;\n protected El: number = SHA384_IV[9] | 0;\n protected Fh: number = SHA384_IV[10] | 0;\n protected Fl: number = SHA384_IV[11] | 0;\n protected Gh: number = SHA384_IV[12] | 0;\n protected Gl: number = SHA384_IV[13] | 0;\n protected Hh: number = SHA384_IV[14] | 0;\n protected Hl: number = SHA384_IV[15] | 0;\n\n constructor() {\n super(48);\n }\n}\n\n/**\n * Truncated SHA512/256 and SHA512/224.\n * SHA512_IV is XORed with 0xa5a5a5a5a5a5a5a5, then used as \"intermediary\" IV of SHA512/t.\n * Then t hashes string to produce result IV.\n * See `test/misc/sha2-gen-iv.js`.\n */\n\n/** SHA512/224 IV */\nconst T224_IV = /* @__PURE__ */ Uint32Array.from([\n 0x8c3d37c8, 0x19544da2, 0x73e19966, 0x89dcd4d6, 0x1dfab7ae, 0x32ff9c82, 0x679dd514, 0x582f9fcf,\n 0x0f6d2b69, 0x7bd44da8, 0x77e36f73, 0x04c48942, 0x3f9d85a8, 0x6a1d36c8, 0x1112e6ad, 0x91d692a1,\n]);\n\n/** SHA512/256 IV */\nconst T256_IV = /* @__PURE__ */ Uint32Array.from([\n 0x22312194, 0xfc2bf72c, 0x9f555fa3, 0xc84c64c2, 0x2393b86b, 0x6f53b151, 0x96387719, 0x5940eabd,\n 0x96283ee2, 0xa88effe3, 0xbe5e1e25, 0x53863992, 0x2b0199fc, 0x2c85b8aa, 0x0eb72ddc, 0x81c52ca2,\n]);\n\nexport class SHA512_224 extends SHA512 {\n protected Ah: number = T224_IV[0] | 0;\n protected Al: number = T224_IV[1] | 0;\n protected Bh: number = T224_IV[2] | 0;\n protected Bl: number = T224_IV[3] | 0;\n protected Ch: number = T224_IV[4] | 0;\n protected Cl: number = T224_IV[5] | 0;\n protected Dh: number = T224_IV[6] | 0;\n protected Dl: number = T224_IV[7] | 0;\n protected Eh: number = T224_IV[8] | 0;\n protected El: number = T224_IV[9] | 0;\n protected Fh: number = T224_IV[10] | 0;\n protected Fl: number = T224_IV[11] | 0;\n protected Gh: number = T224_IV[12] | 0;\n protected Gl: number = T224_IV[13] | 0;\n protected Hh: number = T224_IV[14] | 0;\n protected Hl: number = T224_IV[15] | 0;\n\n constructor() {\n super(28);\n }\n}\n\nexport class SHA512_256 extends SHA512 {\n protected Ah: number = T256_IV[0] | 0;\n protected Al: number = T256_IV[1] | 0;\n protected Bh: number = T256_IV[2] | 0;\n protected Bl: number = T256_IV[3] | 0;\n protected Ch: number = T256_IV[4] | 0;\n protected Cl: number = T256_IV[5] | 0;\n protected Dh: number = T256_IV[6] | 0;\n protected Dl: number = T256_IV[7] | 0;\n protected Eh: number = T256_IV[8] | 0;\n protected El: number = T256_IV[9] | 0;\n protected Fh: number = T256_IV[10] | 0;\n protected Fl: number = T256_IV[11] | 0;\n protected Gh: number = T256_IV[12] | 0;\n protected Gl: number = T256_IV[13] | 0;\n protected Hh: number = T256_IV[14] | 0;\n protected Hl: number = T256_IV[15] | 0;\n\n constructor() {\n super(32);\n }\n}\n\n/**\n * SHA2-256 hash function from RFC 4634.\n *\n * It is the fastest JS hash, even faster than Blake3.\n * To break sha256 using birthday attack, attackers need to try 2^128 hashes.\n * BTC network is doing 2^70 hashes/sec (2^95 hashes/year) as per 2025.\n */\nexport const sha256: CHash = /* @__PURE__ */ createHasher(() => new SHA256());\n/** SHA2-224 hash function from RFC 4634 */\nexport const sha224: CHash = /* @__PURE__ */ createHasher(() => new SHA224());\n\n/** SHA2-512 hash function from RFC 4634. */\nexport const sha512: CHash = /* @__PURE__ */ createHasher(() => new SHA512());\n/** SHA2-384 hash function from RFC 4634. */\nexport const sha384: CHash = /* @__PURE__ */ createHasher(() => new SHA384());\n\n/**\n * SHA2-512/256 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_256: CHash = /* @__PURE__ */ createHasher(() => new SHA512_256());\n/**\n * SHA2-512/224 \"truncated\" hash function, with improved resistance to length extension attacks.\n * See the paper on [truncated SHA512](https://eprint.iacr.org/2010/548.pdf).\n */\nexport const sha512_224: CHash = /* @__PURE__ */ createHasher(() => new SHA512_224());\n", "/**\n * HMAC: RFC2104 message authentication code.\n * @module\n */\nimport { abytes, aexists, ahash, clean, Hash, toBytes, type CHash, type Input } from './utils.ts';\n\nexport class HMAC> extends Hash> {\n oHash: T;\n iHash: T;\n blockLen: number;\n outputLen: number;\n private finished = false;\n private destroyed = false;\n\n constructor(hash: CHash, _key: Input) {\n super();\n ahash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create() as T;\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++) 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() as T;\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++) pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n clean(pad);\n }\n update(buf: Input): this {\n aexists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out: Uint8Array): void {\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(): Uint8Array {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to?: HMAC): HMAC {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to ||= Object.create(Object.getPrototypeOf(this), {});\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to as this;\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 clone(): HMAC {\n return this._cloneInto();\n }\n destroy(): void {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\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: {\n (hash: CHash, key: Input, message: Input): Uint8Array;\n create(hash: CHash, key: Input): HMAC;\n} = (hash: CHash, key: Input, message: Input): Uint8Array =>\n new HMAC(hash, key).update(message).digest();\nhmac.create = (hash: CHash, key: Input) => new HMAC(hash, key);\n", "/**\n * Hex, bytes and number utilities.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n abytes as abytes_,\n bytesToHex as bytesToHex_,\n concatBytes as concatBytes_,\n hexToBytes as hexToBytes_,\n isBytes as isBytes_,\n} from '@noble/hashes/utils.js';\nexport {\n abytes,\n anumber,\n bytesToHex,\n bytesToUtf8,\n concatBytes,\n hexToBytes,\n isBytes,\n randomBytes,\n utf8ToBytes,\n} from '@noble/hashes/utils.js';\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nexport type Hex = Uint8Array | string; // hex strings are accepted for simplicity\nexport type PrivKey = Hex | bigint; // bigints are accepted to ease learning curve\nexport type CHash = {\n (message: Uint8Array | string): Uint8Array;\n blockLen: number;\n outputLen: number;\n create(opts?: { dkLen?: number }): any; // For shake\n};\nexport type FHash = (message: Uint8Array | string) => Uint8Array;\n\nexport function abool(title: string, value: boolean): void {\n if (typeof value !== 'boolean') throw new Error(title + ' boolean expected, got ' + value);\n}\n\n// tmp name until v2\nexport function _abool2(value: boolean, title: string = ''): boolean {\n if (typeof value !== 'boolean') {\n const prefix = title && `\"${title}\"`;\n throw new Error(prefix + 'expected boolean, got type=' + typeof value);\n }\n return value;\n}\n\n// tmp name until v2\n/** Asserts something is Uint8Array. */\nexport function _abytes2(value: Uint8Array, length?: number, title: string = ''): Uint8Array {\n const bytes = isBytes_(value);\n const len = value?.length;\n const needsLen = length !== undefined;\n if (!bytes || (needsLen && len !== length)) {\n const prefix = title && `\"${title}\" `;\n const ofLen = needsLen ? ` of length ${length}` : '';\n const got = bytes ? `length=${len}` : `type=${typeof value}`;\n throw new Error(prefix + 'expected Uint8Array' + ofLen + ', got ' + got);\n }\n return value;\n}\n\n// Used in weierstrass, der\nexport function numberToHexUnpadded(num: number | bigint): string {\n const hex = num.toString(16);\n return hex.length & 1 ? '0' + hex : hex;\n}\n\nexport function hexToNumber(hex: string): bigint {\n if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n return hex === '' ? _0n : BigInt('0x' + hex); // Big Endian\n}\n\n// BE: Big Endian, LE: Little Endian\nexport function bytesToNumberBE(bytes: Uint8Array): bigint {\n return hexToNumber(bytesToHex_(bytes));\n}\nexport function bytesToNumberLE(bytes: Uint8Array): bigint {\n abytes_(bytes);\n return hexToNumber(bytesToHex_(Uint8Array.from(bytes).reverse()));\n}\n\nexport function numberToBytesBE(n: number | bigint, len: number): Uint8Array {\n return hexToBytes_(n.toString(16).padStart(len * 2, '0'));\n}\nexport function numberToBytesLE(n: number | bigint, len: number): Uint8Array {\n return numberToBytesBE(n, len).reverse();\n}\n// Unpadded, rarely used\nexport function numberToVarBytesBE(n: number | bigint): Uint8Array {\n return hexToBytes_(numberToHexUnpadded(n));\n}\n\n/**\n * Takes hex string or Uint8Array, converts to Uint8Array.\n * Validates output length.\n * Will throw error for other types.\n * @param title descriptive title for an error e.g. 'secret key'\n * @param hex hex string or Uint8Array\n * @param expectedLength optional, will compare to result array's length\n * @returns\n */\nexport function ensureBytes(title: string, hex: Hex, expectedLength?: number): Uint8Array {\n let res: Uint8Array;\n if (typeof hex === 'string') {\n try {\n res = hexToBytes_(hex);\n } catch (e) {\n throw new Error(title + ' must be hex string or Uint8Array, cause: ' + e);\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 } 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// Compares 2 u8a-s in kinda constant time\nexport function equalBytes(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i];\n return diff === 0;\n}\n/**\n * Copies Uint8Array. We can't use u8a.slice(), because u8a can be Buffer,\n * and Buffer#slice creates mutable copy. Never use Buffers!\n */\nexport function copyBytes(bytes: Uint8Array): Uint8Array {\n return Uint8Array.from(bytes);\n}\n\n/**\n * Decodes 7-bit ASCII string to Uint8Array, throws on non-ascii symbols\n * Should be safe to use for things expected to be ASCII.\n * Returns exact same result as utf8ToBytes for ASCII or throws.\n */\nexport function asciiToBytes(ascii: string): Uint8Array {\n return Uint8Array.from(ascii, (c, i) => {\n const charCode = c.charCodeAt(0);\n if (c.length !== 1 || charCode > 127) {\n throw new Error(\n `string contains non-ASCII character \"${ascii[i]}\" with code ${charCode} at position ${i}`\n );\n }\n return charCode;\n });\n}\n\n/**\n * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])\n */\n// export const utf8ToBytes: typeof utf8ToBytes_ = utf8ToBytes_;\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\n// export const bytesToUtf8: typeof bytesToUtf8_ = bytesToUtf8_;\n\n// Is positive bigint\nconst isPosBig = (n: bigint) => typeof n === 'bigint' && _0n <= n;\n\nexport function inRange(n: bigint, min: bigint, max: bigint): boolean {\n return isPosBig(n) && isPosBig(min) && isPosBig(max) && min <= n && n < max;\n}\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: string, n: bigint, min: bigint, max: bigint): void {\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\n// Bit operations\n\n/**\n * Calculates amount of bits in a bigint.\n * Same as `n.toString(2).length`\n * TODO: merge with nLength in modular\n */\nexport function bitLen(n: bigint): number {\n let len;\n for (len = 0; n > _0n; n >>= _1n, len += 1);\n return len;\n}\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: bigint, pos: number): bigint {\n return (n >> BigInt(pos)) & _1n;\n}\n\n/**\n * Sets single bit at position.\n */\nexport function bitSet(n: bigint, pos: number, value: boolean): bigint {\n return n | ((value ? _1n : _0n) << BigInt(pos));\n}\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: number): bigint => (_1n << BigInt(n)) - _1n;\n\n// DRBG\n\ntype Pred = (v: Uint8Array) => T | undefined;\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(32, 32, hmac);\n * drbg(seed, bytesToKey); // bytesToKey must return Key or undefined\n */\nexport function createHmacDrbg(\n hashLen: number,\n qByteLen: number,\n hmacFn: (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array\n): (seed: Uint8Array, predicate: Pred) => T {\n if (typeof hashLen !== 'number' || hashLen < 2) throw new Error('hashLen must be a number');\n if (typeof qByteLen !== 'number' || qByteLen < 2) throw new Error('qByteLen must be a number');\n if (typeof hmacFn !== 'function') throw new Error('hmacFn must be a function');\n // Step B, Step C: set hashLen to 8*ceil(hlen/8)\n const u8n = (len: number) => new Uint8Array(len); // creates Uint8Array\n const u8of = (byte: number) => Uint8Array.of(byte); // another shortcut\n let v = u8n(hashLen); // Minimal non-full-spec HMAC-DRBG from NIST 800-90 for RFC6979 sigs.\n let k = u8n(hashLen); // Steps B and C of RFC6979 3.2: set hashLen, in our case always same\n let i = 0; // Iterations counter, will throw when over 1000\n const reset = () => {\n v.fill(1);\n k.fill(0);\n i = 0;\n };\n const h = (...b: Uint8Array[]) => hmacFn(k, v, ...b); // hmac(k)(v, ...values)\n const reseed = (seed = u8n(0)) => {\n // HMAC-DRBG reseed() function. Steps D-G\n k = h(u8of(0x00), seed); // k = hmac(k || v || 0x00 || seed)\n v = h(); // v = hmac(k || v)\n if (seed.length === 0) return;\n k = h(u8of(0x01), seed); // k = hmac(k || v || 0x01 || seed)\n v = h(); // v = hmac(k || v)\n };\n const gen = () => {\n // HMAC-DRBG generate() function\n if (i++ >= 1000) throw new Error('drbg: tried 1000 values');\n let len = 0;\n const out: Uint8Array[] = [];\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: Uint8Array, pred: Pred): T => {\n reset();\n reseed(seed); // Steps D-G\n let res: T | undefined = undefined; // Step H: grind until k is in [1..n-1]\n while (!(res = pred(gen()))) reseed();\n reset();\n return res;\n };\n return genUntil;\n}\n\n// Validating curves and fields\n\nconst validatorFns = {\n bigint: (val: any): boolean => typeof val === 'bigint',\n function: (val: any): boolean => typeof val === 'function',\n boolean: (val: any): boolean => typeof val === 'boolean',\n string: (val: any): boolean => typeof val === 'string',\n stringOrUint8Array: (val: any): boolean => typeof val === 'string' || isBytes_(val),\n isSafeInteger: (val: any): boolean => Number.isSafeInteger(val),\n array: (val: any): boolean => Array.isArray(val),\n field: (val: any, object: any): any => (object as any).Fp.isValid(val),\n hash: (val: any): boolean => typeof val === 'function' && Number.isSafeInteger(val.outputLen),\n} as const;\ntype Validator = keyof typeof validatorFns;\ntype ValMap> = { [K in keyof T]?: Validator };\n// type Record = { [P in K]: T; }\n\nexport function validateObject>(\n object: T,\n validators: ValMap,\n optValidators: ValMap = {}\n): T {\n const checkField = (fieldName: keyof T, type: Validator, isOptional: boolean) => {\n const checkVal = validatorFns[type];\n if (typeof checkVal !== 'function') throw new Error('invalid validator function');\n\n const val = object[fieldName as keyof typeof object];\n if (isOptional && val === undefined) return;\n if (!checkVal(val, object)) {\n throw new Error(\n 'param ' + String(fieldName) + ' is invalid. Expected ' + type + ', got ' + val\n );\n }\n };\n for (const [fieldName, type] of Object.entries(validators)) checkField(fieldName, type!, false);\n for (const [fieldName, type] of Object.entries(optValidators)) 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\nexport function isHash(val: CHash): boolean {\n return typeof val === 'function' && Number.isSafeInteger(val.outputLen);\n}\nexport function _validateObject(\n object: Record,\n fields: Record,\n optFields: Record = {}\n): void {\n if (!object || typeof object !== 'object') throw new Error('expected valid options object');\n type Item = keyof typeof object;\n function checkField(fieldName: Item, expectedType: string, isOpt: boolean) {\n const val = object[fieldName];\n if (isOpt && val === undefined) return;\n const current = typeof val;\n if (current !== expectedType || val === null)\n throw new Error(`param \"${fieldName}\" is invalid: expected ${expectedType}, got ${current}`);\n }\n Object.entries(fields).forEach(([k, v]) => checkField(k, v, false));\n Object.entries(optFields).forEach(([k, v]) => checkField(k, v, true));\n}\n\n/**\n * throws not implemented error\n */\nexport const notImplemented = (): never => {\n throw new Error('not implemented');\n};\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(\n fn: (arg: T, ...args: O) => R\n): (arg: T, ...args: O) => R {\n const map = new WeakMap();\n return (arg: T, ...args: O): R => {\n const val = map.get(arg);\n if (val !== undefined) return val;\n const computed = fn(arg, ...args);\n map.set(arg, computed);\n return computed;\n };\n}\n", "/**\n * Utils for modular division and fields.\n * Field over 11 is a finite (Galois) field is integer number operations `mod 11`.\n * There is no division: it is replaced by modular multiplicative inverse.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n _validateObject,\n anumber,\n bitMask,\n bytesToNumberBE,\n bytesToNumberLE,\n ensureBytes,\n numberToBytesBE,\n numberToBytesLE,\n} from '../utils.ts';\n\n// prettier-ignore\nconst _0n = BigInt(0), _1n = BigInt(1), _2n = /* @__PURE__ */ BigInt(2), _3n = /* @__PURE__ */ BigInt(3);\n// prettier-ignore\nconst _4n = /* @__PURE__ */ BigInt(4), _5n = /* @__PURE__ */ BigInt(5), _7n = /* @__PURE__ */ BigInt(7);\n// prettier-ignore\nconst _8n = /* @__PURE__ */ BigInt(8), _9n = /* @__PURE__ */ BigInt(9), _16n = /* @__PURE__ */ BigInt(16);\n\n// Calculates a modulo b\nexport function mod(a: bigint, b: bigint): bigint {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\n/**\n * Efficiently raise num to power and do modular division.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n * @example\n * pow(2n, 6n, 11n) // 64n % 11n == 9n\n */\nexport function pow(num: bigint, power: bigint, modulo: bigint): bigint {\n return FpPow(Field(modulo), num, power);\n}\n\n/** Does `x^(2^power)` mod p. `pow2(30, 4)` == `30^(2^4)` */\nexport function pow2(x: bigint, power: bigint, modulo: bigint): bigint {\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= modulo;\n }\n return res;\n}\n\n/**\n * Inverses number over modulo.\n * Implemented using [Euclidean GCD](https://brilliant.org/wiki/extended-euclidean-algorithm/).\n */\nexport function invert(number: bigint, modulo: bigint): bigint {\n if (number === _0n) throw new Error('invert: expected non-zero number');\n if (modulo <= _0n) 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) throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\n\nfunction assertIsSquare(Fp: IField, root: T, n: T): void {\n if (!Fp.eql(Fp.sqr(root), n)) throw new Error('Cannot find square root');\n}\n\n// Not all roots are possible! Example which will throw:\n// const NUM =\n// n = 72057594037927816n;\n// Fp = Field(BigInt('0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab'));\nfunction sqrt3mod4(Fp: IField, n: T) {\n const p1div4 = (Fp.ORDER + _1n) / _4n;\n const root = Fp.pow(n, p1div4);\n assertIsSquare(Fp, root, n);\n return root;\n}\n\nfunction sqrt5mod8(Fp: IField, n: T) {\n const p5div8 = (Fp.ORDER - _5n) / _8n;\n const n2 = Fp.mul(n, _2n);\n const v = Fp.pow(n2, p5div8);\n const nv = Fp.mul(n, v);\n const i = Fp.mul(Fp.mul(nv, _2n), v);\n const root = Fp.mul(nv, Fp.sub(i, Fp.ONE));\n assertIsSquare(Fp, root, n);\n return root;\n}\n\n// Based on RFC9380, Kong algorithm\n// prettier-ignore\nfunction sqrt9mod16(P: bigint): (Fp: IField, n: T) => T {\n const Fp_ = Field(P);\n const tn = tonelliShanks(P);\n const c1 = tn(Fp_, Fp_.neg(Fp_.ONE));// 1. c1 = sqrt(-1) in F, i.e., (c1^2) == -1 in F\n const c2 = tn(Fp_, c1); // 2. c2 = sqrt(c1) in F, i.e., (c2^2) == c1 in F\n const c3 = tn(Fp_, Fp_.neg(c1)); // 3. c3 = sqrt(-c1) in F, i.e., (c3^2) == -c1 in F\n const c4 = (P + _7n) / _16n; // 4. c4 = (q + 7) / 16 # Integer arithmetic\n return (Fp: IField, n: T) => {\n let tv1 = Fp.pow(n, c4); // 1. tv1 = x^c4\n let tv2 = Fp.mul(tv1, c1); // 2. tv2 = c1 * tv1\n const tv3 = Fp.mul(tv1, c2); // 3. tv3 = c2 * tv1\n const tv4 = Fp.mul(tv1, c3); // 4. tv4 = c3 * tv1\n const e1 = Fp.eql(Fp.sqr(tv2), n); // 5. e1 = (tv2^2) == x\n const e2 = Fp.eql(Fp.sqr(tv3), n); // 6. e2 = (tv3^2) == x\n tv1 = Fp.cmov(tv1, tv2, e1); // 7. tv1 = CMOV(tv1, tv2, e1) # Select tv2 if (tv2^2) == x\n tv2 = Fp.cmov(tv4, tv3, e2); // 8. tv2 = CMOV(tv4, tv3, e2) # Select tv3 if (tv3^2) == x\n const e3 = Fp.eql(Fp.sqr(tv2), n); // 9. e3 = (tv2^2) == x\n const root = Fp.cmov(tv1, tv2, e3);// 10. z = CMOV(tv1, tv2, e3) # Select sqrt from tv1 & tv2\n assertIsSquare(Fp, root, n);\n return root;\n };\n}\n\n/**\n * Tonelli-Shanks square root search algorithm.\n * 1. https://eprint.iacr.org/2012/685.pdf (page 12)\n * 2. Square Roots from 1; 24, 51, 10 to Dan Shanks\n * @param P field order\n * @returns function that takes field Fp (created from P) and number n\n */\nexport function tonelliShanks(P: bigint): (Fp: IField, n: T) => T {\n // Initialization (precomputation).\n // Caching initialization could boost perf by 7%.\n if (P < _3n) throw new Error('sqrt is not defined for small field');\n // Factor P - 1 = Q * 2^S, where Q is odd\n let Q = P - _1n;\n let S = 0;\n while (Q % _2n === _0n) {\n Q /= _2n;\n S++;\n }\n\n // Find the first quadratic non-residue Z >= 2\n let Z = _2n;\n const _Fp = Field(P);\n while (FpLegendre(_Fp, Z) === 1) {\n // Basic primality test for P. After x iterations, chance of\n // not finding quadratic non-residue is 2^x, so 2^1000.\n if (Z++ > 1000) throw new Error('Cannot find square root: probably non-prime P');\n }\n // Fast-path; usually done before Z, but we do \"primality test\".\n if (S === 1) return sqrt3mod4;\n\n // Slow-path\n // TODO: test on Fp2 and others\n let cc = _Fp.pow(Z, Q); // c = z^Q\n const Q1div2 = (Q + _1n) / _2n;\n return function tonelliSlow(Fp: IField, n: T): T {\n if (Fp.is0(n)) return n;\n // Check if n is a quadratic residue using Legendre symbol\n if (FpLegendre(Fp, n) !== 1) throw new Error('Cannot find square root');\n\n // Initialize variables for the main loop\n let M = S;\n let c = Fp.mul(Fp.ONE, cc); // c = z^Q, move cc from field _Fp into field Fp\n let t = Fp.pow(n, Q); // t = n^Q, first guess at the fudge factor\n let R = Fp.pow(n, Q1div2); // R = n^((Q+1)/2), first guess at the square root\n\n // Main loop\n // while t != 1\n while (!Fp.eql(t, Fp.ONE)) {\n if (Fp.is0(t)) return Fp.ZERO; // if t=0 return R=0\n let i = 1;\n\n // Find the smallest i >= 1 such that t^(2^i) \u2261 1 (mod P)\n let t_tmp = Fp.sqr(t); // t^(2^1)\n while (!Fp.eql(t_tmp, Fp.ONE)) {\n i++;\n t_tmp = Fp.sqr(t_tmp); // t^(2^2)...\n if (i === M) throw new Error('Cannot find square root');\n }\n\n // Calculate the exponent for b: 2^(M - i - 1)\n const exponent = _1n << BigInt(M - i - 1); // bigint is important\n const b = Fp.pow(c, exponent); // b = 2^(M - i - 1)\n\n // Update variables\n M = i;\n c = Fp.sqr(b); // c = b^2\n t = Fp.mul(t, c); // t = (t * b^2)\n R = Fp.mul(R, b); // R = R*b\n }\n return R;\n };\n}\n\n/**\n * Square root for a finite field. Will try optimized versions first:\n *\n * 1. P \u2261 3 (mod 4)\n * 2. P \u2261 5 (mod 8)\n * 3. P \u2261 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: bigint): (Fp: IField, n: T) => T {\n // P \u2261 3 (mod 4) => \u221An = n^((P+1)/4)\n if (P % _4n === _3n) return sqrt3mod4;\n // P \u2261 5 (mod 8) => Atkin algorithm, page 10 of https://eprint.iacr.org/2012/685.pdf\n if (P % _8n === _5n) return sqrt5mod8;\n // P \u2261 9 (mod 16) => Kong algorithm, page 11 of https://eprint.iacr.org/2012/685.pdf (algorithm 4)\n if (P % _16n === _9n) return sqrt9mod16(P);\n // Tonelli-Shanks algorithm\n return tonelliShanks(P);\n}\n\n// Little-endian check for first LE bit (last BE bit);\nexport const isNegativeLE = (num: bigint, modulo: bigint): boolean =>\n (mod(num, modulo) & _1n) === _1n;\n\n/** Field is not always over prime: for example, Fp2 has ORDER(q)=p^m. */\nexport interface IField {\n ORDER: bigint;\n isLE: boolean;\n BYTES: number;\n BITS: number;\n MASK: bigint;\n ZERO: T;\n ONE: T;\n // 1-arg\n create: (num: T) => T;\n isValid: (num: T) => boolean;\n is0: (num: T) => boolean;\n isValidNot0: (num: T) => boolean;\n neg(num: T): T;\n inv(num: T): T;\n sqrt(num: T): T;\n sqr(num: T): T;\n // 2-args\n eql(lhs: T, rhs: T): boolean;\n add(lhs: T, rhs: T): T;\n sub(lhs: T, rhs: T): T;\n mul(lhs: T, rhs: T | bigint): T;\n pow(lhs: T, power: bigint): T;\n div(lhs: T, rhs: T | bigint): T;\n // N for NonNormalized (for now)\n addN(lhs: T, rhs: T): T;\n subN(lhs: T, rhs: T): T;\n mulN(lhs: T, rhs: T | bigint): T;\n sqrN(num: T): T;\n\n // Optional\n // Should be same as sgn0 function in\n // [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#section-4.1).\n // NOTE: sgn0 is 'negative in LE', which is same as odd. And negative in LE is kinda strange definition anyway.\n isOdd?(num: T): boolean; // Odd instead of even since we have it for Fp2\n allowedLengths?: number[];\n // legendre?(num: T): T;\n invertBatch: (lst: T[]) => T[];\n toBytes(num: T): Uint8Array;\n fromBytes(bytes: Uint8Array, skipValidation?: boolean): T;\n // If c is False, CMOV returns a, otherwise it returns b.\n cmov(a: T, b: T, c: boolean): T;\n}\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] as const;\nexport function validateField(field: IField): IField {\n const initial = {\n ORDER: 'bigint',\n MASK: 'bigint',\n BYTES: 'number',\n BITS: 'number',\n } as Record;\n const opts = FIELD_FIELDS.reduce((map, val: string) => {\n map[val] = 'function';\n return map;\n }, initial);\n _validateObject(field, opts);\n // const max = 16384;\n // if (field.BYTES < 1 || field.BYTES > max) throw new Error('invalid field');\n // if (field.BITS < 1 || field.BITS > 8 * max) throw new Error('invalid field');\n return field;\n}\n\n// Generic field functions\n\n/**\n * Same as `pow` but for Fp: non-constant-time.\n * Unsafe in some contexts: uses ladder, so can expose bigint bits.\n */\nexport function FpPow(Fp: IField, num: T, power: bigint): T {\n if (power < _0n) throw new Error('invalid exponent, negatives unsupported');\n if (power === _0n) return Fp.ONE;\n if (power === _1n) return num;\n let p = Fp.ONE;\n let d = num;\n while (power > _0n) {\n if (power & _1n) p = Fp.mul(p, d);\n d = Fp.sqr(d);\n power >>= _1n;\n }\n return p;\n}\n\n/**\n * Efficiently invert an array of Field elements.\n * Exception-free. Will return `undefined` for 0 elements.\n * @param passZero map 0 to 0 (instead of undefined)\n */\nexport function FpInvertBatch(Fp: IField, nums: T[], passZero = false): T[] {\n const inverted = new Array(nums.length).fill(passZero ? Fp.ZERO : undefined);\n // Walk from first to last, multiply them by each other MOD p\n const multipliedAcc = nums.reduce((acc, num, i) => {\n if (Fp.is0(num)) return acc;\n inverted[i] = acc;\n return Fp.mul(acc, num);\n }, Fp.ONE);\n // Invert last element\n const invertedAcc = Fp.inv(multipliedAcc);\n // Walk from last to first, multiply them by inverted each other MOD p\n nums.reduceRight((acc, num, i) => {\n if (Fp.is0(num)) return acc;\n inverted[i] = Fp.mul(acc, inverted[i]);\n return Fp.mul(acc, num);\n }, invertedAcc);\n return inverted;\n}\n\n// TODO: remove\nexport function FpDiv(Fp: IField, lhs: T, rhs: T | bigint): T {\n return Fp.mul(lhs, typeof rhs === 'bigint' ? invert(rhs, Fp.ORDER) : Fp.inv(rhs));\n}\n\n/**\n * Legendre symbol.\n * Legendre constant is used to calculate Legendre symbol (a | p)\n * which denotes the value of a^((p-1)/2) (mod p).\n *\n * * (a | p) \u2261 1 if a is a square (mod p), quadratic residue\n * * (a | p) \u2261 -1 if a is not a square (mod p), quadratic non residue\n * * (a | p) \u2261 0 if a \u2261 0 (mod p)\n */\nexport function FpLegendre(Fp: IField, n: T): -1 | 0 | 1 {\n // We can use 3rd argument as optional cache of this value\n // but seems unneeded for now. The operation is very fast.\n const p1mod2 = (Fp.ORDER - _1n) / _2n;\n const powered = Fp.pow(n, p1mod2);\n const yes = Fp.eql(powered, Fp.ONE);\n const zero = Fp.eql(powered, Fp.ZERO);\n const no = Fp.eql(powered, Fp.neg(Fp.ONE));\n if (!yes && !zero && !no) throw new Error('invalid Legendre symbol result');\n return yes ? 1 : zero ? 0 : -1;\n}\n\n// This function returns True whenever the value x is a square in the field F.\nexport function FpIsSquare(Fp: IField, n: T): boolean {\n const l = FpLegendre(Fp, n);\n return l === 1;\n}\n\nexport type NLength = { nByteLength: number; nBitLength: number };\n// CURVE.n lengths\nexport function nLength(n: bigint, nBitLength?: number): NLength {\n // Bit size, byte size of CURVE.n\n if (nBitLength !== undefined) anumber(nBitLength);\n const _nBitLength = nBitLength !== undefined ? nBitLength : n.toString(2).length;\n const nByteLength = Math.ceil(_nBitLength / 8);\n return { nBitLength: _nBitLength, nByteLength };\n}\n\ntype FpField = IField & Required, 'isOdd'>>;\ntype SqrtFn = (n: bigint) => bigint;\ntype FieldOpts = Partial<{\n sqrt: SqrtFn;\n isLE: boolean;\n BITS: number;\n modFromBytes: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n allowedLengths?: readonly number[]; // for P521 (adds padding for smaller sizes)\n}>;\n/**\n * Creates a finite field. Major performance optimizations:\n * * 1. Denormalized operations like mulN instead of mul.\n * * 2. Identical object shape: never add or remove keys.\n * * 3. `Object.freeze`.\n * Fragile: always run a benchmark on a change.\n * Security note: operations don't check 'isValid' for all elements for performance reasons,\n * it is caller responsibility to check this.\n * This is low-level code, please make sure you know what you're doing.\n *\n * Note about field properties:\n * * CHARACTERISTIC p = prime number, number of elements in main subgroup.\n * * ORDER q = similar to cofactor in curves, may be composite `q = p^m`.\n *\n * @param ORDER field order, probably prime, or could be composite\n * @param bitLen how many bits the field consumes\n * @param isLE (default: false) if encoding / decoding should be in little-endian\n * @param redef optional faster redefinitions of sqrt and other methods\n */\nexport function Field(\n ORDER: bigint,\n bitLenOrOpts?: number | FieldOpts, // TODO: use opts only in v2?\n isLE = false,\n opts: { sqrt?: SqrtFn } = {}\n): Readonly {\n if (ORDER <= _0n) throw new Error('invalid field: expected ORDER > 0, got ' + ORDER);\n let _nbitLength: number | undefined = undefined;\n let _sqrt: SqrtFn | undefined = undefined;\n let modFromBytes: boolean = false;\n let allowedLengths: undefined | readonly number[] = undefined;\n if (typeof bitLenOrOpts === 'object' && bitLenOrOpts != null) {\n if (opts.sqrt || isLE) throw new Error('cannot specify opts in two arguments');\n const _opts = bitLenOrOpts;\n if (_opts.BITS) _nbitLength = _opts.BITS;\n if (_opts.sqrt) _sqrt = _opts.sqrt;\n if (typeof _opts.isLE === 'boolean') isLE = _opts.isLE;\n if (typeof _opts.modFromBytes === 'boolean') modFromBytes = _opts.modFromBytes;\n allowedLengths = _opts.allowedLengths;\n } else {\n if (typeof bitLenOrOpts === 'number') _nbitLength = bitLenOrOpts;\n if (opts.sqrt) _sqrt = opts.sqrt;\n }\n const { nBitLength: BITS, nByteLength: BYTES } = nLength(ORDER, _nbitLength);\n if (BYTES > 2048) throw new Error('invalid field: expected ORDER of <= 2048 bytes');\n let sqrtP: ReturnType; // cached sqrtP\n const f: Readonly = Object.freeze({\n ORDER,\n isLE,\n BITS,\n BYTES,\n MASK: bitMask(BITS),\n ZERO: _0n,\n ONE: _1n,\n allowedLengths: allowedLengths,\n create: (num) => mod(num, ORDER),\n isValid: (num) => {\n if (typeof num !== 'bigint')\n throw new Error('invalid field element: expected bigint, got ' + typeof num);\n return _0n <= num && num < ORDER; // 0 is valid element, but it's not invertible\n },\n is0: (num) => num === _0n,\n // is valid and invertible\n isValidNot0: (num: bigint) => !f.is0(num) && f.isValid(num),\n isOdd: (num) => (num & _1n) === _1n,\n neg: (num) => mod(-num, ORDER),\n eql: (lhs, rhs) => lhs === rhs,\n\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\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\n inv: (num) => invert(num, ORDER),\n sqrt:\n _sqrt ||\n ((n) => {\n if (!sqrtP) sqrtP = FpSqrt(ORDER);\n return sqrtP(f, n);\n }),\n toBytes: (num) => (isLE ? numberToBytesLE(num, BYTES) : numberToBytesBE(num, BYTES)),\n fromBytes: (bytes, skipValidation = true) => {\n if (allowedLengths) {\n if (!allowedLengths.includes(bytes.length) || bytes.length > BYTES) {\n throw new Error(\n 'Field.fromBytes: expected ' + allowedLengths + ' bytes, got ' + bytes.length\n );\n }\n const padded = new Uint8Array(BYTES);\n // isLE add 0 to right, !isLE to the left.\n padded.set(bytes, isLE ? 0 : padded.length - bytes.length);\n bytes = padded;\n }\n if (bytes.length !== BYTES)\n throw new Error('Field.fromBytes: expected ' + BYTES + ' bytes, got ' + bytes.length);\n let scalar = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n if (modFromBytes) scalar = mod(scalar, ORDER);\n if (!skipValidation)\n if (!f.isValid(scalar)) throw new Error('invalid field element: outside of range 0..ORDER');\n // NOTE: we don't validate scalar here, please use isValid. This done such way because some\n // protocol may allow non-reduced scalar that reduced later or changed some other way.\n return scalar;\n },\n // TODO: we don't need it here, move out to separate fn\n invertBatch: (lst) => FpInvertBatch(f, lst),\n // We can't move this out because Fp6, Fp12 implement it\n // and it's unclear what to return in there.\n cmov: (a, b, c) => (c ? b : a),\n } as FpField);\n return Object.freeze(f);\n}\n\n// Generic random scalar, we can do same for other fields if via Fp2.mul(Fp2.ONE, Fp2.random)?\n// This allows unsafe methods like ignore bias or zero. These unsafe, but often used in different protocols (if deterministic RNG).\n// which mean we cannot force this via opts.\n// Not sure what to do with randomBytes, we can accept it inside opts if wanted.\n// Probably need to export getMinHashLength somewhere?\n// random(bytes?: Uint8Array, unsafeAllowZero = false, unsafeAllowBias = false) {\n// const LEN = !unsafeAllowBias ? getMinHashLength(ORDER) : BYTES;\n// if (bytes === undefined) bytes = randomBytes(LEN); // _opts.randomBytes?\n// const num = isLE ? bytesToNumberLE(bytes) : bytesToNumberBE(bytes);\n// // `mod(x, 11)` can sometimes produce 0. `mod(x, 10) + 1` is the same, but no 0\n// const reduced = unsafeAllowZero ? mod(num, ORDER) : mod(num, ORDER - _1n) + _1n;\n// return reduced;\n// },\n\nexport function FpSqrtOdd(Fp: IField, elm: T): T {\n if (!Fp.isOdd) throw new Error(\"Field doesn't have isOdd\");\n const root = Fp.sqrt(elm);\n return Fp.isOdd(root) ? root : Fp.neg(root);\n}\n\nexport function FpSqrtEven(Fp: IField, elm: T): T {\n if (!Fp.isOdd) 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/**\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(\n hash: string | Uint8Array,\n groupOrder: bigint,\n isLE = false\n): bigint {\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(\n 'hashToPrivateScalar: expected ' + minLen + '-1024 bytes of input, got ' + hashLen\n );\n const num = isLE ? bytesToNumberLE(hash) : bytesToNumberBE(hash);\n return mod(num, groupOrder - _1n) + _1n;\n}\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: bigint): number {\n if (typeof fieldOrder !== 'bigint') throw new Error('field order must be bigint');\n const bitLength = fieldOrder.toString(2).length;\n return Math.ceil(bitLength / 8);\n}\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: bigint): number {\n const length = getFieldBytesLength(fieldOrder);\n return length + Math.ceil(length / 2);\n}\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: Uint8Array, fieldOrder: bigint, isLE = false): Uint8Array {\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", "/**\n * Methods for elliptic curve multiplication by scalars.\n * Contains wNAF, pippenger.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { bitLen, bitMask, validateObject } from '../utils.ts';\nimport { Field, FpInvertBatch, nLength, validateField, type IField } from './modular.ts';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\n\nexport type AffinePoint = {\n x: T;\n y: T;\n} & { Z?: never };\n\n// This was initialy do this way to re-use montgomery ladder in field (add->mul,double->sqr), but\n// that didn't happen and there is probably not much reason to have separate Group like this?\nexport interface Group> {\n double(): T;\n negate(): T;\n add(other: T): T;\n subtract(other: T): T;\n equals(other: T): boolean;\n multiply(scalar: bigint): T;\n toAffine?(invertedZ?: any): AffinePoint;\n}\n\n// We can't \"abstract out\" coordinates (X, Y, Z; and T in Edwards): argument names of constructor\n// are not accessible. See Typescript gh-56093, gh-41594.\n//\n// We have to use recursive types, so it will return actual point, not constained `CurvePoint`.\n// If, at any point, P is `any`, it will erase all types and replace it\n// with `any`, because of recursion, `any implements CurvePoint`,\n// but we lose all constrains on methods.\n\n/** Base interface for all elliptic curve Points. */\nexport interface CurvePoint> extends Group

{\n /** Affine x coordinate. Different from projective / extended X coordinate. */\n x: F;\n /** Affine y coordinate. Different from projective / extended Y coordinate. */\n y: F;\n Z?: F;\n double(): P;\n negate(): P;\n add(other: P): P;\n subtract(other: P): P;\n equals(other: P): boolean;\n multiply(scalar: bigint): P;\n assertValidity(): void;\n clearCofactor(): P;\n is0(): boolean;\n isTorsionFree(): boolean;\n isSmallOrder(): boolean;\n multiplyUnsafe(scalar: bigint): P;\n /**\n * Massively speeds up `p.multiply(n)` by using precompute tables (caching). See {@link wNAF}.\n * @param isLazy calculate cache now. Default (true) ensures it's deferred to first `multiply()`\n */\n precompute(windowSize?: number, isLazy?: boolean): P;\n /** Converts point to 2D xy affine coordinates */\n toAffine(invertedZ?: F): AffinePoint;\n toBytes(): Uint8Array;\n toHex(): string;\n}\n\n/** Base interface for all elliptic curve Point constructors. */\nexport interface CurvePointCons

> {\n [Symbol.hasInstance]: (item: unknown) => boolean;\n BASE: P;\n ZERO: P;\n /** Field for basic curve math */\n Fp: IField>;\n /** Scalar field, for scalars in multiply and others */\n Fn: IField;\n /** Creates point from x, y. Does NOT validate if the point is valid. Use `.assertValidity()`. */\n fromAffine(p: AffinePoint>): P;\n fromBytes(bytes: Uint8Array): P;\n fromHex(hex: Uint8Array | string): P;\n}\n\n// Type inference helpers: PC - PointConstructor, P - Point, Fp - Field element\n// Short names, because we use them a lot in result types:\n// * we can't do 'P = GetCurvePoint': this is default value and doesn't constrain anything\n// * we can't do 'type X = GetCurvePoint': it won't be accesible for arguments/return types\n// * `CurvePointCons

>` constraints from interface definition\n// won't propagate, if `PC extends CurvePointCons`: the P would be 'any', which is incorrect\n// * PC could be super specific with super specific P, which implements CurvePoint.\n// this means we need to do stuff like\n// `function test

, PC extends CurvePointCons

>(`\n// if we want type safety around P, otherwise PC_P will be any\n\n/** Returns Fp type from Point (P_F

== P.F) */\nexport type P_F

> = P extends CurvePoint ? F : never;\n/** Returns Fp type from PointCons (PC_F == PC.P.F) */\nexport type PC_F>> = PC['Fp']['ZERO'];\n/** Returns Point type from PointCons (PC_P == PC.P) */\nexport type PC_P>> = PC['ZERO'];\n\n// Ugly hack to get proper type inference, because in typescript fails to infer resursively.\n// The hack allows to do up to 10 chained operations without applying type erasure.\n//\n// Types which won't work:\n// * `CurvePointCons>`, will return `any` after 1 operation\n// * `CurvePointCons: WeierstrassPointCons extends CurvePointCons = false`\n// * `P extends CurvePoint, PC extends CurvePointCons

`\n// * It can't infer P from PC alone\n// * Too many relations between F, P & PC\n// * It will infer P/F if `arg: CurvePointCons`, but will fail if PC is generic\n// * It will work correctly if there is an additional argument of type P\n// * But generally, we don't want to parametrize `CurvePointCons` over `F`: it will complicate\n// types, making them un-inferable\n// prettier-ignore\nexport type PC_ANY = CurvePointCons<\n CurvePoint\n >>>>>>>>>\n>;\n\nexport interface CurveLengths {\n secretKey?: number;\n publicKey?: number;\n publicKeyUncompressed?: number;\n publicKeyHasPrefix?: boolean;\n signature?: number;\n seed?: number;\n}\nexport type GroupConstructor = {\n BASE: T;\n ZERO: T;\n};\n/** @deprecated */\nexport type ExtendedGroupConstructor = GroupConstructor & {\n Fp: IField;\n Fn: IField;\n fromAffine(ap: AffinePoint): T;\n};\nexport type Mapper = (i: T[]) => T[];\n\nexport function negateCt T }>(condition: boolean, item: T): T {\n const neg = item.negate();\n return condition ? neg : item;\n}\n\n/**\n * Takes a bunch of Projective Points but executes only one\n * inversion on all of them. Inversion is very slow operation,\n * so this improves performance massively.\n * Optimization: converts a list of projective points to a list of identical points with Z=1.\n */\nexport function normalizeZ

, PC extends CurvePointCons

>(\n c: PC,\n points: P[]\n): P[] {\n const invertedZs = FpInvertBatch(\n c.Fp,\n points.map((p) => p.Z!)\n );\n return points.map((p, i) => c.fromAffine(p.toAffine(invertedZs[i])));\n}\n\nfunction validateW(W: number, bits: number) {\n if (!Number.isSafeInteger(W) || W <= 0 || W > bits)\n throw new Error('invalid window size, expected [1..' + bits + '], got W=' + W);\n}\n\n/** Internal wNAF opts for specific W and scalarBits */\nexport type WOpts = {\n windows: number;\n windowSize: number;\n mask: bigint;\n maxNumber: number;\n shiftBy: bigint;\n};\n\nfunction calcWOpts(W: number, scalarBits: number): WOpts {\n validateW(W, scalarBits);\n const windows = Math.ceil(scalarBits / W) + 1; // W=8 33. Not 32, because we skip zero\n const windowSize = 2 ** (W - 1); // W=8 128. Not 256, because we skip zero\n const maxNumber = 2 ** W; // W=8 256\n const mask = bitMask(W); // W=8 255 == mask 0b11111111\n const shiftBy = BigInt(W); // W=8 8\n return { windows, windowSize, mask, maxNumber, shiftBy };\n}\n\nfunction calcOffsets(n: bigint, window: number, wOpts: WOpts) {\n const { windowSize, mask, maxNumber, shiftBy } = wOpts;\n let wbits = Number(n & mask); // extract W bits.\n let nextN = n >> shiftBy; // shift number by W bits.\n\n // What actually happens here:\n // const highestBit = Number(mask ^ (mask >> 1n));\n // let wbits2 = wbits - 1; // skip zero\n // if (wbits2 & highestBit) { wbits2 ^= Number(mask); // (~);\n\n // split if bits > max: +224 => 256-32\n if (wbits > windowSize) {\n // we skip zero, which means instead of `>= size-1`, we do `> size`\n wbits -= maxNumber; // -32, can be maxNumber - wbits, but then we need to set isNeg here.\n nextN += _1n; // +256 (carry)\n }\n const offsetStart = window * windowSize;\n const offset = offsetStart + Math.abs(wbits) - 1; // -1 because we skip zero\n const isZero = wbits === 0; // is current window slice a 0?\n const isNeg = wbits < 0; // is current window slice negative?\n const isNegF = window % 2 !== 0; // fake random statement for noise\n const offsetF = offsetStart; // fake offset for noise\n return { nextN, offset, isZero, isNeg, isNegF, offsetF };\n}\n\nfunction validateMSMPoints(points: any[], c: any) {\n if (!Array.isArray(points)) throw new Error('array expected');\n points.forEach((p, i) => {\n if (!(p instanceof c)) throw new Error('invalid point at index ' + i);\n });\n}\nfunction validateMSMScalars(scalars: any[], field: any) {\n if (!Array.isArray(scalars)) throw new Error('array of scalars expected');\n scalars.forEach((s, i) => {\n if (!field.isValid(s)) throw new Error('invalid scalar at index ' + i);\n });\n}\n\n// Since points in different groups cannot be equal (different object constructor),\n// we can have single place to store precomputes.\n// Allows to make points frozen / immutable.\nconst pointPrecomputes = new WeakMap();\nconst pointWindowSizes = new WeakMap();\n\nfunction getW(P: any): number {\n // To disable precomputes:\n // return 1;\n return pointWindowSizes.get(P) || 1;\n}\n\nfunction assert0(n: bigint): void {\n if (n !== _0n) throw new Error('invalid wNAF');\n}\n\n/**\n * Elliptic curve multiplication of Point by scalar. Fragile.\n * Table generation takes **30MB of ram and 10ms on high-end CPU**,\n * but may take much longer on slow devices. Actual generation will happen on\n * first call of `multiply()`. By default, `BASE` point is precomputed.\n *\n * Scalars should always be less than curve order: this should be checked inside of a curve itself.\n * Creates precomputation tables for fast multiplication:\n * - private scalar is split by fixed size windows of W bits\n * - every window point is collected from window's table & added to accumulator\n * - since windows are different, same point inside tables won't be accessed more than once per calc\n * - each multiplication is 'Math.ceil(CURVE_ORDER / \uD835\uDC4A) + 1' point additions (fixed for any scalar)\n * - +1 window is neccessary for wNAF\n * - wNAF reduces table size: 2x less memory + 2x faster generation, but 10% slower multiplication\n *\n * @todo Research returning 2d JS array of windows, instead of a single window.\n * This would allow windows to be in different memory locations\n */\nexport class wNAF {\n private readonly BASE: PC_P;\n private readonly ZERO: PC_P;\n private readonly Fn: PC['Fn'];\n readonly bits: number;\n\n // Parametrized with a given Point class (not individual point)\n constructor(Point: PC, bits: number) {\n this.BASE = Point.BASE;\n this.ZERO = Point.ZERO;\n this.Fn = Point.Fn;\n this.bits = bits;\n }\n\n // non-const time multiplication ladder\n _unsafeLadder(elm: PC_P, n: bigint, p: PC_P = this.ZERO): PC_P {\n let d: PC_P = elm;\n while (n > _0n) {\n if (n & _1n) p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\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^(\uD835\uDC4A\u22121) * (Math.ceil(\uD835\uDC5B / \uD835\uDC4A) + 1), where:\n * - \uD835\uDC4A is the window size\n * - \uD835\uDC5B is the bitlength of the curve order.\n * For a 256-bit curve and window size 8, the number of precomputed points is 128 * 33 = 4224.\n * @param point Point instance\n * @param W window size\n * @returns precomputed point tables flattened to a single array\n */\n private precomputeWindow(point: PC_P, W: number): PC_P[] {\n const { windows, windowSize } = calcWOpts(W, this.bits);\n const points: PC_P[] = [];\n let p: PC_P = point;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n // i=1, bc we skip 0\n for (let i = 1; i < windowSize; i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n\n /**\n * Implements ec multiplication using precomputed tables and w-ary non-adjacent form.\n * More compact implementation:\n * https://github.com/paulmillr/noble-secp256k1/blob/47cb1669b6e506ad66b35fe7d76132ae97465da2/index.ts#L502-L541\n * @returns real and fake (for const-time) points\n */\n private wNAF(W: number, precomputes: PC_P[], n: bigint): { p: PC_P; f: PC_P } {\n // Scalar should be smaller than field order\n if (!this.Fn.isValid(n)) throw new Error('invalid scalar');\n // Accumulators\n let p = this.ZERO;\n let f = this.BASE;\n // This code was first written with assumption that 'f' and 'p' will never be infinity point:\n // since each addition is multiplied by 2 ** W, it cannot cancel each other. However,\n // there is negate now: it is possible that negated element from low value\n // would be the same as high element, which will create carry into next window.\n // It's not obvious how this can fail, but still worth investigating later.\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n // (n === _0n) is handled and not early-exited. isEven and offsetF are used for noise\n const { nextN, offset, isZero, isNeg, isNegF, offsetF } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // bits are 0: add garbage to fake point\n // Important part for const-time getPublicKey: add random \"noise\" point to f.\n f = f.add(negateCt(isNegF, precomputes[offsetF]));\n } else {\n // bits are 1: add to result point\n p = p.add(negateCt(isNeg, precomputes[offset]));\n }\n }\n assert0(n);\n // Return both real and fake points: JIT won't eliminate f.\n // At this point there is a way to F be infinity-point even if p is not,\n // which makes it less const-time: around 1 bigint multiply.\n return { p, f };\n }\n\n /**\n * Implements ec unsafe (non const-time) multiplication using precomputed tables and w-ary non-adjacent form.\n * @param acc accumulator point to add result of multiplication\n * @returns point\n */\n private wNAFUnsafe(\n W: number,\n precomputes: PC_P[],\n n: bigint,\n acc: PC_P = this.ZERO\n ): PC_P {\n const wo = calcWOpts(W, this.bits);\n for (let window = 0; window < wo.windows; window++) {\n if (n === _0n) break; // Early-exit, skip 0 value\n const { nextN, offset, isZero, isNeg } = calcOffsets(n, window, wo);\n n = nextN;\n if (isZero) {\n // Window bits are 0: skip processing.\n // Move to next window.\n continue;\n } else {\n const item = precomputes[offset];\n acc = acc.add(isNeg ? item.negate() : item); // Re-using acc allows to save adds in MSM\n }\n }\n assert0(n);\n return acc;\n }\n\n private getPrecomputes(W: number, point: PC_P, transform?: Mapper>): PC_P[] {\n // Calculate precomputes on a first run, reuse them after\n let comp = pointPrecomputes.get(point);\n if (!comp) {\n comp = this.precomputeWindow(point, W) as PC_P[];\n if (W !== 1) {\n // Doing transform outside of if brings 15% perf hit\n if (typeof transform === 'function') comp = transform(comp);\n pointPrecomputes.set(point, comp);\n }\n }\n return comp;\n }\n\n cached(\n point: PC_P,\n scalar: bigint,\n transform?: Mapper>\n ): { p: PC_P; f: PC_P } {\n const W = getW(point);\n return this.wNAF(W, this.getPrecomputes(W, point, transform), scalar);\n }\n\n unsafe(point: PC_P, scalar: bigint, transform?: Mapper>, prev?: PC_P): PC_P {\n const W = getW(point);\n if (W === 1) return this._unsafeLadder(point, scalar, prev); // For W=1 ladder is ~x2 faster\n return this.wNAFUnsafe(W, this.getPrecomputes(W, point, transform), scalar, prev);\n }\n\n // We calculate precomputes for elliptic curve point multiplication\n // using windowed method. This specifies window size and\n // stores precomputed values. Usually only base point would be precomputed.\n createCache(P: PC_P, W: number): void {\n validateW(W, this.bits);\n pointWindowSizes.set(P, W);\n pointPrecomputes.delete(P);\n }\n\n hasCache(elm: PC_P): boolean {\n return getW(elm) !== 1;\n }\n}\n\n/**\n * Endomorphism-specific multiplication for Koblitz curves.\n * Cost: 128 dbl, 0-256 adds.\n */\nexport function mulEndoUnsafe

, PC extends CurvePointCons

>(\n Point: PC,\n point: P,\n k1: bigint,\n k2: bigint\n): { p1: P; p2: P } {\n let acc = point;\n let p1 = Point.ZERO;\n let p2 = Point.ZERO;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n) p1 = p1.add(acc);\n if (k2 & _1n) p2 = p2.add(acc);\n acc = acc.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n return { p1, p2 };\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 than precomputes.\n * For N=254bit, L=1, it does: 1024 ADD + 254 DBL. For L=5: 1536 ADD + 254 DBL.\n * Algorithmically constant-time (for same L), even when 1 point + scalar, or when scalar = 0.\n * @param c Curve Point constructor\n * @param fieldN field over CURVE.N - important that it's not over CURVE.P\n * @param points array of L curve points\n * @param scalars array of L scalars (aka secret keys / bigints)\n */\nexport function pippenger

, PC extends CurvePointCons

>(\n c: PC,\n fieldN: IField,\n points: P[],\n scalars: bigint[]\n): P {\n // If we split scalars by some window (let's say 8 bits), every chunk will only\n // take 256 buckets even if there are 4096 scalars, also re-uses double.\n // TODO:\n // - https://eprint.iacr.org/2024/750.pdf\n // - https://tches.iacr.org/index.php/TCHES/article/view/10287\n // 0 is accepted in scalars\n validateMSMPoints(points, c);\n validateMSMScalars(scalars, fieldN);\n const plength = points.length;\n const slength = scalars.length;\n if (plength !== slength) throw new Error('arrays of points and scalars must have equal length');\n // if (plength === 0) throw new Error('array must be of length >= 2');\n const zero = c.ZERO;\n const wbits = bitLen(BigInt(plength));\n let windowSize = 1; // bits\n if (wbits > 12) windowSize = wbits - 3;\n else if (wbits > 4) windowSize = wbits - 2;\n else if (wbits > 0) windowSize = 2;\n const MASK = bitMask(windowSize);\n const buckets = new Array(Number(MASK) + 1).fill(zero); // +1 for zero array\n const lastBits = Math.floor((fieldN.BITS - 1) / windowSize) * windowSize;\n let sum = zero;\n for (let i = lastBits; i >= 0; i -= windowSize) {\n buckets.fill(zero);\n for (let j = 0; j < slength; j++) {\n const scalar = scalars[j];\n const wbits = Number((scalar >> BigInt(i)) & MASK);\n buckets[wbits] = buckets[wbits].add(points[j]);\n }\n let resI = zero; // not using this will do small speed-up, but will lose ct\n // Skip first bucket, because it is zero\n for (let j = buckets.length - 1, sumI = zero; j > 0; j--) {\n sumI = sumI.add(buckets[j]);\n resI = resI.add(sumI);\n }\n sum = sum.add(resI);\n if (i !== 0) for (let j = 0; j < windowSize; j++) sum = sum.double();\n }\n return sum as P;\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

, PC extends CurvePointCons

>(\n c: PC,\n fieldN: IField,\n points: P[],\n windowSize: number\n): (scalars: bigint[]) => P {\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 \u00D7 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 \u00D7 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 \u00D7 255) + 256 = 4,336 ops\n * - ~2x faster than standard 8,191 ops\n *\n * Limitations:\n * - Not suitable for plain precomputes (requires 256 constant doublings)\n * - Performance degrades with larger scalar counts:\n * - Optimal for ~256 scalars\n * - Less efficient for 4096+ scalars (Pippenger preferred)\n */\n validateW(windowSize, fieldN.BITS);\n validateMSMPoints(points, c);\n const zero = c.ZERO;\n const tableSize = 2 ** windowSize - 1; // table size (without zero)\n const chunks = Math.ceil(fieldN.BITS / windowSize); // chunks of item\n const MASK = bitMask(windowSize);\n const tables = points.map((p: 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: bigint[]): P => {\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) for (let j = 0; j < windowSize; j++) 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) continue; // skip zero scalars chunks\n res = res.add(tables[j][curr - 1]);\n }\n }\n return res;\n };\n}\n\n// TODO: remove\n/**\n * Generic BasicCurve interface: works even for polynomial fields (BLS): P, n, h would be ok.\n * Though generator can be different (Fp2 / Fp6 for BLS).\n */\nexport type BasicCurve = {\n Fp: IField; // Field over which we'll do calculations (Fp)\n n: bigint; // Curve order, total count of valid points in the field\n nBitLength?: number; // bit length of curve order\n nByteLength?: number; // byte length of curve order\n h: bigint; // cofactor. we can assign default=1, but users will just ignore it w/o validation\n hEff?: bigint; // Number to multiply to clear cofactor\n Gx: T; // base point X coordinate\n Gy: T; // base point Y coordinate\n allowInfinityPoint?: boolean; // bls12-381 requires it. ZERO point is valid, but invalid pubkey\n};\n\n// TODO: remove\n/** @deprecated */\nexport function validateBasic(\n curve: BasicCurve & T\n): Readonly<\n {\n readonly nBitLength: number;\n readonly nByteLength: number;\n } & BasicCurve &\n T & {\n p: bigint;\n }\n> {\n validateField(curve.Fp);\n validateObject(\n curve,\n {\n n: 'bigint',\n h: 'bigint',\n Gx: 'field',\n Gy: 'field',\n },\n {\n nBitLength: 'isSafeInteger',\n nByteLength: 'isSafeInteger',\n }\n );\n // Set defaults\n return Object.freeze({\n ...nLength(curve.n, curve.nBitLength),\n ...curve,\n ...{ p: curve.Fp.ORDER },\n } as const);\n}\n\nexport type ValidCurveParams = {\n p: bigint;\n n: bigint;\n h: bigint;\n a: T;\n b?: T;\n d?: T;\n Gx: T;\n Gy: T;\n};\n\nfunction createField(order: bigint, field?: IField, isLE?: boolean): IField {\n if (field) {\n if (field.ORDER !== order) throw new Error('Field.ORDER must match order: Fp == p, Fn == n');\n validateField(field);\n return field;\n } else {\n return Field(order, { isLE }) as unknown as IField;\n }\n}\nexport type FpFn = { Fp: IField; Fn: IField };\n\n/** Validates CURVE opts and creates fields */\nexport function _createCurveFields(\n type: 'weierstrass' | 'edwards',\n CURVE: ValidCurveParams,\n curveOpts: Partial> = {},\n FpFnLE?: boolean\n): FpFn & { CURVE: ValidCurveParams } {\n if (FpFnLE === undefined) FpFnLE = type === 'edwards';\n if (!CURVE || typeof CURVE !== 'object') throw new Error(`expected valid ${type} CURVE object`);\n for (const p of ['p', 'n', 'h'] as const) {\n const val = CURVE[p];\n if (!(typeof val === 'bigint' && val > _0n))\n throw new Error(`CURVE.${p} must be positive bigint`);\n }\n const Fp = createField(CURVE.p, curveOpts.Fp, FpFnLE);\n const Fn = createField(CURVE.n, curveOpts.Fn, FpFnLE);\n const _b: 'b' | 'd' = type === 'weierstrass' ? 'b' : 'd';\n const params = ['Gx', 'Gy', 'a', _b] as const;\n for (const p of params) {\n // @ts-ignore\n if (!Fp.isValid(CURVE[p]))\n throw new Error(`CURVE.${p} must be valid field element of CURVE.Fp`);\n }\n CURVE = Object.freeze(Object.assign({}, CURVE));\n return { CURVE, Fp, Fn };\n}\n", "/**\n * Short Weierstrass curve methods. The formula is: y\u00B2 = x\u00B3 + 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 { hmac as nobleHmac } from '@noble/hashes/hmac.js';\nimport { ahash } from '@noble/hashes/utils';\nimport {\n _validateObject,\n _abool2 as abool,\n _abytes2 as abytes,\n aInRange,\n bitLen,\n bitMask,\n bytesToHex,\n bytesToNumberBE,\n concatBytes,\n createHmacDrbg,\n ensureBytes,\n hexToBytes,\n inRange,\n isBytes,\n memoized,\n numberToHexUnpadded,\n randomBytes as randomBytesWeb,\n type CHash,\n type Hex,\n type PrivKey,\n} from '../utils.ts';\nimport {\n _createCurveFields,\n mulEndoUnsafe,\n negateCt,\n normalizeZ,\n pippenger,\n wNAF,\n type AffinePoint,\n type BasicCurve,\n type CurveLengths,\n type CurvePoint,\n type CurvePointCons,\n} from './curve.ts';\nimport {\n Field,\n FpInvertBatch,\n getMinHashLength,\n mapHashToField,\n nLength,\n validateField,\n type IField,\n type NLength,\n} from './modular.ts';\n\nexport type { AffinePoint };\nexport type HmacFnSync = (key: Uint8Array, ...messages: Uint8Array[]) => Uint8Array;\n\ntype EndoBasis = [[bigint, bigint], [bigint, bigint]];\n/**\n * When Weierstrass curve has `a=0`, it becomes Koblitz curve.\n * Koblitz curves allow using **efficiently-computable GLV endomorphism \u03C8**.\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 *\n * Endomorphism consists of beta, lambda and splitScalar:\n *\n * 1. GLV endomorphism \u03C8 transforms a point: `P = (x, y) \u21A6 \u03C8(P) = (\u03B2\u00B7x mod p, y)`\n * 2. GLV scalar decomposition transforms a scalar: `k \u2261 k\u2081 + k\u2082\u00B7\u03BB (mod n)`\n * 3. Then these are combined: `k\u00B7P = k\u2081\u00B7P + k\u2082\u00B7\u03C8(P)`\n * 4. Two 128-bit point-by-scalar multiplications + one point addition is faster than\n * one 256-bit multiplication.\n *\n * where\n * * beta: \u03B2 \u2208 F\u209A with \u03B2\u00B3 = 1, \u03B2 \u2260 1\n * * lambda: \u03BB \u2208 F\u2099 with \u03BB\u00B3 = 1, \u03BB \u2260 1\n * * splitScalar decomposes k \u21A6 k\u2081, k\u2082, by using reduced basis vectors.\n * Gauss lattice reduction calculates them from initial basis vectors `(n, 0), (-\u03BB, 0)`\n *\n * Check out `test/misc/endomorphism.js` and\n * [gist](https://gist.github.com/paulmillr/eb670806793e84df628a7c434a873066).\n */\nexport type EndomorphismOpts = {\n beta: bigint;\n basises?: EndoBasis;\n splitScalar?: (k: bigint) => { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n};\n\n// We construct basis in such way that den is always positive and equals n, but num sign depends on basis (not on secret value)\nconst divNearest = (num: bigint, den: bigint) => (num + (num >= 0 ? den : -den) / _2n) / den;\n\nexport type ScalarEndoParts = { k1neg: boolean; k1: bigint; k2neg: boolean; k2: bigint };\n\n/**\n * Splits scalar for GLV endomorphism.\n */\nexport function _splitEndoScalar(k: bigint, basis: EndoBasis, n: bigint): ScalarEndoParts {\n // Split scalar into two such that part is ~half bits: `abs(part) < sqrt(N)`\n // Since part can be negative, we need to do this on point.\n // TODO: verifyScalar function which consumes lambda\n const [[a1, b1], [a2, b2]] = basis;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n // |k1|/|k2| is < sqrt(N), but can be negative.\n // If we do `k1 mod N`, we'll get big scalar (`> sqrt(N)`): so, we do cheaper negation instead.\n let k1 = k - c1 * a1 - c2 * a2;\n let k2 = -c1 * b1 - c2 * b2;\n const k1neg = k1 < _0n;\n const k2neg = k2 < _0n;\n if (k1neg) k1 = -k1;\n if (k2neg) k2 = -k2;\n // Double check that resulting scalar less than half bits of N: otherwise wNAF will fail.\n // This should only happen on wrong basises. Also, math inside is too complex and I don't trust it.\n const MAX_NUM = bitMask(Math.ceil(bitLen(n) / 2)) + _1n; // Half bits of N\n if (k1 < _0n || k1 >= MAX_NUM || k2 < _0n || k2 >= MAX_NUM) {\n throw new Error('splitScalar (endomorphism): failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\n\nexport type ECDSASigFormat = 'compact' | 'recovered' | 'der';\nexport type ECDSARecoverOpts = {\n prehash?: boolean;\n};\nexport type ECDSAVerifyOpts = {\n prehash?: boolean;\n lowS?: boolean;\n format?: ECDSASigFormat;\n};\nexport type ECDSASignOpts = {\n prehash?: boolean;\n lowS?: boolean;\n format?: ECDSASigFormat;\n extraEntropy?: Uint8Array | boolean;\n};\n\nfunction validateSigFormat(format: string): ECDSASigFormat {\n if (!['compact', 'recovered', 'der'].includes(format))\n throw new Error('Signature format must be \"compact\", \"recovered\", or \"der\"');\n return format as ECDSASigFormat;\n}\n\nfunction validateSigOpts>(\n opts: T,\n def: D\n): Required {\n const optsn: ECDSASignOpts = {};\n for (let optName of Object.keys(def)) {\n // @ts-ignore\n optsn[optName] = opts[optName] === undefined ? def[optName] : opts[optName];\n }\n abool(optsn.lowS!, 'lowS');\n abool(optsn.prehash!, 'prehash');\n if (optsn.format !== undefined) validateSigFormat(optsn.format);\n return optsn as Required;\n}\n\n/** Instance methods for 3D XYZ projective points. */\nexport interface WeierstrassPoint extends CurvePoint> {\n /** projective X coordinate. Different from affine x. */\n readonly X: T;\n /** projective Y coordinate. Different from affine y. */\n readonly Y: T;\n /** projective z coordinate */\n readonly Z: T;\n /** affine x coordinate. Different from projective X. */\n get x(): T;\n /** affine y coordinate. Different from projective Y. */\n get y(): T;\n /** Encodes point using IEEE P1363 (DER) encoding. First byte is 2/3/4. Default = isCompressed. */\n toBytes(isCompressed?: boolean): Uint8Array;\n toHex(isCompressed?: boolean): string;\n\n /** @deprecated use `.X` */\n readonly px: T;\n /** @deprecated use `.Y` */\n readonly py: T;\n /** @deprecated use `.Z` */\n readonly pz: T;\n /** @deprecated use `toBytes` */\n toRawBytes(isCompressed?: boolean): Uint8Array;\n /** @deprecated use `multiplyUnsafe` */\n multiplyAndAddUnsafe(\n Q: WeierstrassPoint,\n a: bigint,\n b: bigint\n ): WeierstrassPoint | undefined;\n /** @deprecated use `p.y % 2n === 0n` */\n hasEvenY(): boolean;\n /** @deprecated use `p.precompute(windowSize)` */\n _setWindowSize(windowSize: number): void;\n}\n\n/** Static methods for 3D XYZ projective points. */\nexport interface WeierstrassPointCons extends CurvePointCons> {\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n new (X: T, Y: T, Z: T): WeierstrassPoint;\n CURVE(): WeierstrassOpts;\n /** @deprecated use `Point.BASE.multiply(Point.Fn.fromBytes(privateKey))` */\n fromPrivateKey(privateKey: PrivKey): WeierstrassPoint;\n /** @deprecated use `import { normalizeZ } from '@noble/curves/abstract/curve.js';` */\n normalizeZ(points: WeierstrassPoint[]): WeierstrassPoint[];\n /** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */\n msm(points: WeierstrassPoint[], scalars: bigint[]): WeierstrassPoint;\n}\n\n/**\n * Weierstrass curve options.\n *\n * * p: prime characteristic (order) of finite field, in which arithmetics is done\n * * n: order of prime subgroup a.k.a total amount of valid curve points\n * * h: cofactor, usually 1. h*n is group order; n is subgroup order\n * * a: formula param, must be in field of p\n * * b: formula param, must be in field of p\n * * Gx: x coordinate of generator point a.k.a. base point\n * * Gy: y coordinate of generator point\n */\nexport type WeierstrassOpts = Readonly<{\n p: bigint;\n n: bigint;\n h: bigint;\n a: T;\n b: T;\n Gx: T;\n Gy: T;\n}>;\n\n// When a cofactor != 1, there can be an effective methods to:\n// 1. Determine whether a point is torsion-free\n// 2. Clear torsion component\n// wrapPrivateKey: bls12-381 requires mod(n) instead of rejecting keys >= n\nexport type WeierstrassExtraOpts = Partial<{\n Fp: IField;\n Fn: IField;\n allowInfinityPoint: boolean;\n endo: EndomorphismOpts;\n isTorsionFree: (c: WeierstrassPointCons, point: WeierstrassPoint) => boolean;\n clearCofactor: (c: WeierstrassPointCons, point: WeierstrassPoint) => WeierstrassPoint;\n fromBytes: (bytes: Uint8Array) => AffinePoint;\n toBytes: (\n c: WeierstrassPointCons,\n point: WeierstrassPoint,\n isCompressed: boolean\n ) => Uint8Array;\n}>;\n\n/**\n * Options for ECDSA signatures over a Weierstrass curve.\n *\n * * lowS: (default: true) whether produced / verified signatures occupy low half of ecdsaOpts.p. Prevents malleability.\n * * hmac: (default: noble-hashes hmac) function, would be used to init hmac-drbg for k generation.\n * * randomBytes: (default: webcrypto os-level CSPRNG) custom method for fetching secure randomness.\n * * bits2int, bits2int_modN: used in sigs, sometimes overridden by curves\n */\nexport type ECDSAOpts = Partial<{\n lowS: boolean;\n hmac: HmacFnSync;\n randomBytes: (bytesLength?: number) => Uint8Array;\n bits2int: (bytes: Uint8Array) => bigint;\n bits2int_modN: (bytes: Uint8Array) => bigint;\n}>;\n\n/**\n * Elliptic Curve Diffie-Hellman interface.\n * Provides keygen, secret-to-public conversion, calculating shared secrets.\n */\nexport interface ECDH {\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n getPublicKey: (secretKey: PrivKey, isCompressed?: boolean) => Uint8Array;\n getSharedSecret: (secretKeyA: PrivKey, publicKeyB: Hex, isCompressed?: boolean) => Uint8Array;\n Point: WeierstrassPointCons;\n utils: {\n isValidSecretKey: (secretKey: PrivKey) => boolean;\n isValidPublicKey: (publicKey: Uint8Array, isCompressed?: boolean) => boolean;\n randomSecretKey: (seed?: Uint8Array) => Uint8Array;\n /** @deprecated use `randomSecretKey` */\n randomPrivateKey: (seed?: Uint8Array) => Uint8Array;\n /** @deprecated use `isValidSecretKey` */\n isValidPrivateKey: (secretKey: PrivKey) => boolean;\n /** @deprecated use `Point.Fn.fromBytes()` */\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n /** @deprecated use `point.precompute()` */\n precompute: (windowSize?: number, point?: WeierstrassPoint) => WeierstrassPoint;\n };\n lengths: CurveLengths;\n}\n\n/**\n * ECDSA interface.\n * Only supported for prime fields, not Fp2 (extension fields).\n */\nexport interface ECDSA extends ECDH {\n sign: (message: Hex, secretKey: PrivKey, opts?: ECDSASignOpts) => ECDSASigRecovered;\n verify: (\n signature: Uint8Array,\n message: Uint8Array,\n publicKey: Uint8Array,\n opts?: ECDSAVerifyOpts\n ) => boolean;\n recoverPublicKey(signature: Uint8Array, message: Uint8Array, opts?: ECDSARecoverOpts): Uint8Array;\n Signature: ECDSASignatureCons;\n}\nexport class DERErr extends Error {\n constructor(m = '') {\n super(m);\n }\n}\nexport type IDER = {\n // asn.1 DER encoding utils\n Err: typeof DERErr;\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag: number, data: string) => string;\n // v - value, l - left bytes (unparsed)\n decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array };\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: bigint): string;\n decode(data: Uint8Array): bigint;\n };\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint };\n hexFromSig(sig: { r: bigint; s: bigint }): string;\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: IDER = {\n // asn.1 DER encoding utils\n Err: DERErr,\n // Basic building block is TLV (Tag-Length-Value)\n _tlv: {\n encode: (tag: number, data: string): string => {\n const { Err: E } = DER;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length & 1) throw new E('tlv.encode: unpadded data');\n const dataLen = data.length / 2;\n const len = numberToHexUnpadded(dataLen);\n if ((len.length / 2) & 0b1000_0000) throw new E('tlv.encode: long form length too big');\n // length of length with long form flag\n const lenLen = dataLen > 127 ? numberToHexUnpadded((len.length / 2) | 0b1000_0000) : '';\n const t = numberToHexUnpadded(tag);\n return t + lenLen + len + data;\n },\n // v - value, l - left bytes (unparsed)\n decode(tag: number, data: Uint8Array): { v: Uint8Array; l: Uint8Array } {\n const { Err: E } = DER;\n let pos = 0;\n if (tag < 0 || tag > 256) throw new E('tlv.encode: wrong tag');\n if (data.length < 2 || data[pos++] !== tag) throw new E('tlv.decode: wrong tlv');\n const first = data[pos++];\n const isLong = !!(first & 0b1000_0000); // First bit of first length byte is flag for short/long form\n let length = 0;\n if (!isLong) length = first;\n else {\n // Long form: [longFlag(1bit), lengthLength(7bit), length (BE)]\n const lenLen = first & 0b0111_1111;\n if (!lenLen) throw new E('tlv.decode(long): indefinite length not supported');\n if (lenLen > 4) 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) throw new E('tlv.decode: length bytes not complete');\n if (lengthBytes[0] === 0) throw new E('tlv.decode(long): zero leftmost byte');\n for (const b of lengthBytes) length = (length << 8) | b;\n pos += lenLen;\n if (length < 128) throw new E('tlv.decode(long): not minimal encoding');\n }\n const v = data.subarray(pos, pos + length);\n if (v.length !== length) 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: bigint): string {\n const { Err: E } = DER;\n if (num < _0n) throw new E('integer: negative integers are not allowed');\n let hex = numberToHexUnpadded(num);\n // Pad with zero byte if negative flag is present\n if (Number.parseInt(hex[0], 16) & 0b1000) hex = '00' + hex;\n if (hex.length & 1) throw new E('unexpected DER parsing assertion: unpadded hex');\n return hex;\n },\n decode(data: Uint8Array): bigint {\n const { Err: E } = DER;\n if (data[0] & 0b1000_0000) throw new E('invalid signature integer: negative');\n if (data[0] === 0x00 && !(data[1] & 0b1000_0000))\n throw new E('invalid signature integer: unnecessary leading zero');\n return bytesToNumberBE(data);\n },\n },\n toSig(hex: string | Uint8Array): { r: bigint; s: bigint } {\n // parse DER signature\n const { Err: E, _int: int, _tlv: tlv } = DER;\n const data = ensureBytes('signature', hex);\n const { v: seqBytes, l: seqLeftBytes } = tlv.decode(0x30, data);\n if (seqLeftBytes.length) 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) throw new E('invalid signature: left bytes after parsing');\n return { r: int.decode(rBytes), s: int.decode(sBytes) };\n },\n hexFromSig(sig: { r: bigint; s: bigint }): string {\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\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);\n\nexport function _normFnElement(Fn: IField, key: PrivKey): bigint {\n const { BYTES: expected } = Fn;\n let num: bigint;\n if (typeof key === 'bigint') {\n num = key;\n } else {\n let bytes = ensureBytes('private key', key);\n try {\n num = Fn.fromBytes(bytes);\n } catch (error) {\n throw new Error(`invalid private key: expected ui8a of size ${expected}, got ${typeof key}`);\n }\n }\n if (!Fn.isValidNot0(num)) throw new Error('invalid private key: out of range [1..N-1]');\n return num;\n}\n\n/**\n * Creates weierstrass Point constructor, based on specified curve options.\n *\n * @example\n```js\nconst opts = {\n p: BigInt('0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff'),\n n: BigInt('0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551'),\n h: BigInt(1),\n a: BigInt('0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc'),\n b: BigInt('0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b'),\n Gx: BigInt('0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296'),\n Gy: BigInt('0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5'),\n};\nconst p256_Point = weierstrass(opts);\n```\n */\nexport function weierstrassN(\n params: WeierstrassOpts,\n extraOpts: WeierstrassExtraOpts = {}\n): WeierstrassPointCons {\n const validated = _createCurveFields('weierstrass', params, extraOpts);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE as WeierstrassOpts;\n const { h: cofactor, n: CURVE_ORDER } = CURVE;\n _validateObject(\n extraOpts,\n {},\n {\n allowInfinityPoint: 'boolean',\n clearCofactor: 'function',\n isTorsionFree: 'function',\n fromBytes: 'function',\n toBytes: 'function',\n endo: 'object',\n wrapPrivateKey: 'boolean',\n }\n );\n\n const { endo } = extraOpts;\n if (endo) {\n // validateObject(endo, { beta: 'bigint', splitScalar: 'function' });\n if (!Fp.is0(CURVE.a) || typeof endo.beta !== 'bigint' || !Array.isArray(endo.basises)) {\n throw new Error('invalid endo: expected \"beta\": bigint and \"basises\": array');\n }\n }\n\n const lengths = getWLengths(Fp, Fn);\n\n function assertCompressionIsSupported() {\n if (!Fp.isOdd) throw new Error('compression is not supported: Field does not have .isOdd()');\n }\n\n // Implements IEEE P1363 point encoding\n function pointToBytes(\n _c: WeierstrassPointCons,\n point: WeierstrassPoint,\n isCompressed: boolean\n ): Uint8Array {\n const { x, y } = point.toAffine();\n const bx = Fp.toBytes(x);\n abool(isCompressed, 'isCompressed');\n if (isCompressed) {\n assertCompressionIsSupported();\n const hasEvenY = !Fp.isOdd!(y);\n return concatBytes(pprefix(hasEvenY), bx);\n } else {\n return concatBytes(Uint8Array.of(0x04), bx, Fp.toBytes(y));\n }\n }\n function pointFromBytes(bytes: Uint8Array) {\n abytes(bytes, undefined, 'Point');\n const { publicKey: comp, publicKeyUncompressed: uncomp } = lengths; // e.g. for 32-byte: 33, 65\n const length = bytes.length;\n const head = bytes[0];\n const tail = bytes.subarray(1);\n // No actual validation is done here: use .assertValidity()\n if (length === comp && (head === 0x02 || head === 0x03)) {\n const x = Fp.fromBytes(tail);\n if (!Fp.isValid(x)) throw new Error('bad point: is not on curve, wrong x');\n const y2 = weierstrassEquation(x); // y\u00B2 = x\u00B3 + ax + b\n let y: T;\n try {\n y = Fp.sqrt(y2); // y = y\u00B2 ^ (p+1)/4\n } catch (sqrtError) {\n const err = sqrtError instanceof Error ? ': ' + sqrtError.message : '';\n throw new Error('bad point: is not on curve, sqrt error' + err);\n }\n assertCompressionIsSupported();\n const isYOdd = Fp.isOdd!(y); // (y & _1n) === _1n;\n const isHeadOdd = (head & 1) === 1; // ECDSA-specific\n if (isHeadOdd !== isYOdd) y = Fp.neg(y);\n return { x, y };\n } else if (length === uncomp && head === 0x04) {\n // TODO: more checks\n const L = Fp.BYTES;\n const x = Fp.fromBytes(tail.subarray(0, L));\n const y = Fp.fromBytes(tail.subarray(L, L * 2));\n if (!isValidXY(x, y)) throw new Error('bad point: is not on curve');\n return { x, y };\n } else {\n throw new Error(\n `bad point: got length ${length}, expected compressed=${comp} or uncompressed=${uncomp}`\n );\n }\n }\n\n const encodePoint = extraOpts.toBytes || pointToBytes;\n const decodePoint = extraOpts.fromBytes || pointFromBytes;\n function weierstrassEquation(x: T): T {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x\u00B2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, CURVE.a)), CURVE.b); // x\u00B3 + a * x + b\n }\n\n // TODO: move top-level\n /** Checks whether equation holds for given x, y: y\u00B2 == x\u00B3 + ax + b */\n function isValidXY(x: T, y: T): boolean {\n const left = Fp.sqr(y); // y\u00B2\n const right = weierstrassEquation(x); // x\u00B3 + ax + b\n return Fp.eql(left, right);\n }\n\n // Validate whether the passed curve params are valid.\n // Test 1: equation y\u00B2 = x\u00B3 + ax + b should work for generator point.\n if (!isValidXY(CURVE.Gx, CURVE.Gy)) throw new Error('bad curve params: generator point');\n\n // Test 2: discriminant \u0394 part should be non-zero: 4a\u00B3 + 27b\u00B2 != 0.\n // Guarantees curve is genus-1, smooth (non-singular).\n const _4a3 = Fp.mul(Fp.pow(CURVE.a, _3n), _4n);\n const _27b2 = Fp.mul(Fp.sqr(CURVE.b), BigInt(27));\n if (Fp.is0(Fp.add(_4a3, _27b2))) throw new Error('bad curve params: a or b');\n\n /** Asserts coordinate is valid: 0 <= n < Fp.ORDER. */\n function acoord(title: string, n: T, banZero = false) {\n if (!Fp.isValid(n) || (banZero && Fp.is0(n))) throw new Error(`bad point coordinate ${title}`);\n return n;\n }\n\n function aprjpoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ProjectivePoint expected');\n }\n\n function splitEndoScalarN(k: bigint) {\n if (!endo || !endo.basises) throw new Error('no endo');\n return _splitEndoScalar(k, endo.basises, Fn.ORDER);\n }\n\n // Memoized toAffine / validity check. They are heavy. Points are immutable.\n\n // Converts Projective point to affine (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n // (X, Y, Z) \u220B (x=X/Z, y=Y/Z)\n const toAffineMemo = memoized((p: Point, iz?: T): AffinePoint => {\n const { X, Y, Z } = p;\n // Fast-path for normalized points\n if (Fp.eql(Z, Fp.ONE)) return { x: X, y: 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) iz = is0 ? Fp.ONE : Fp.inv(Z);\n const x = Fp.mul(X, iz);\n const y = Fp.mul(Y, iz);\n const zz = Fp.mul(Z, iz);\n if (is0) return { x: Fp.ZERO, y: Fp.ZERO };\n if (!Fp.eql(zz, Fp.ONE)) throw new Error('invZ was invalid');\n return { x, y };\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: Point) => {\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 (extraOpts.allowInfinityPoint && !Fp.is0(p.Y)) 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 if (!Fp.isValid(x) || !Fp.isValid(y)) throw new Error('bad point: x or y not field elements');\n if (!isValidXY(x, y)) throw new Error('bad point: equation left != right');\n if (!p.isTorsionFree()) throw new Error('bad point: not in prime-order subgroup');\n return true;\n });\n\n function finishEndo(\n endoBeta: EndomorphismOpts['beta'],\n k1p: Point,\n k2p: Point,\n k1neg: boolean,\n k2neg: boolean\n ) {\n k2p = new Point(Fp.mul(k2p.X, endoBeta), k2p.Y, k2p.Z);\n k1p = negateCt(k1neg, k1p);\n k2p = negateCt(k2neg, k2p);\n return k1p.add(k2p);\n }\n\n /**\n * Projective Point works in 3d / projective (homogeneous) coordinates:(X, Y, Z) \u220B (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 implements WeierstrassPoint {\n // base / generator point\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, Fp.ONE);\n // zero / infinity / identity point\n static readonly ZERO = new Point(Fp.ZERO, Fp.ONE, Fp.ZERO); // 0, 1, 0\n // math field\n static readonly Fp = Fp;\n // scalar field\n static readonly Fn = Fn;\n\n readonly X: T;\n readonly Y: T;\n readonly Z: T;\n\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n constructor(X: T, Y: T, Z: T) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y, true);\n this.Z = acoord('z', Z);\n Object.freeze(this);\n }\n\n static CURVE(): WeierstrassOpts {\n return CURVE;\n }\n\n /** Does NOT validate if the point is valid. Use `.assertValidity()`. */\n static fromAffine(p: AffinePoint): Point {\n const { x, y } = p || {};\n if (!p || !Fp.isValid(x) || !Fp.isValid(y)) throw new Error('invalid affine point');\n if (p instanceof Point) throw new Error('projective point not allowed');\n // (0, 0) would've produced (0, 0, 1) - instead, we need (0, 1, 0)\n if (Fp.is0(x) && Fp.is0(y)) return Point.ZERO;\n return new Point(x, y, Fp.ONE);\n }\n\n static fromBytes(bytes: Uint8Array): Point {\n const P = Point.fromAffine(decodePoint(abytes(bytes, undefined, 'point')));\n P.assertValidity();\n return P;\n }\n static fromHex(hex: Hex): Point {\n return Point.fromBytes(ensureBytes('pointHex', hex));\n }\n\n get x(): T {\n return this.toAffine().x;\n }\n get y(): T {\n return this.toAffine().y;\n }\n\n /**\n *\n * @param windowSize\n * @param isLazy true will defer table computation until the first multiplication\n * @returns\n */\n precompute(windowSize: number = 8, isLazy = true): Point {\n wnaf.createCache(this, windowSize);\n if (!isLazy) this.multiply(_3n); // random number\n return this;\n }\n\n // TODO: return `this`\n /** A point on curve is valid if it conforms to equation. */\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n hasEvenY(): boolean {\n const { y } = this.toAffine();\n if (!Fp.isOdd) throw new Error(\"Field doesn't support isOdd\");\n return !Fp.isOdd(y);\n }\n\n /** Compare one point to another. */\n equals(other: Point): boolean {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: 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 negate(): Point {\n return new Point(this.X, Fp.neg(this.Y), this.Z);\n }\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 { X: X1, Y: Y1, Z: 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\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: Point): Point {\n aprjpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: 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\n subtract(other: Point) {\n return this.add(other.negate());\n }\n\n is0(): boolean {\n return this.equals(Point.ZERO);\n }\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: bigint): Point {\n const { endo } = extraOpts;\n if (!Fn.isValidNot0(scalar)) throw new Error('invalid scalar: out of range'); // 0 is invalid\n let point: Point, fake: Point; // Fake point is used to const-time mult\n const mul = (n: bigint) => wnaf.cached(this, n, (p) => normalizeZ(Point, p));\n /** See docs for {@link EndomorphismOpts} */\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(scalar);\n const { p: k1p, f: k1f } = mul(k1);\n const { p: k2p, f: k2f } = mul(k2);\n fake = k1f.add(k2f);\n point = finishEndo(endo.beta, k1p, k2p, k1neg, k2neg);\n } else {\n const { p, f } = mul(scalar);\n point = p;\n fake = f;\n }\n // Normalize `z` for both points, but return only real one\n return normalizeZ(Point, [point, fake])[0];\n }\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 secret key e.g. sig verification, which works over *public* keys.\n */\n multiplyUnsafe(sc: bigint): Point {\n const { endo } = extraOpts;\n const p = this as Point;\n if (!Fn.isValid(sc)) throw new Error('invalid scalar: out of range'); // 0 is valid\n if (sc === _0n || p.is0()) return Point.ZERO;\n if (sc === _1n) return p; // fast-path\n if (wnaf.hasCache(this)) return this.multiply(sc);\n if (endo) {\n const { k1neg, k1, k2neg, k2 } = splitEndoScalarN(sc);\n const { p1, p2 } = mulEndoUnsafe(Point, p, k1, k2); // 30% faster vs wnaf.unsafe\n return finishEndo(endo.beta, p1, p2, k1neg, k2neg);\n } else {\n return wnaf.unsafe(p, sc);\n }\n }\n\n multiplyAndAddUnsafe(Q: Point, a: bigint, b: bigint): Point | undefined {\n const sum = this.multiplyUnsafe(a).add(Q.multiplyUnsafe(b));\n return sum.is0() ? undefined : sum;\n }\n\n /**\n * Converts Projective point to affine (x, y) coordinates.\n * @param invertedZ Z^-1 (inverted zero) - optional, precomputation is useful for invertBatch\n */\n toAffine(invertedZ?: T): AffinePoint {\n return toAffineMemo(this, invertedZ);\n }\n\n /**\n * Checks whether Point is free of torsion elements (is in prime subgroup).\n * Always torsion-free for cofactor=1 curves.\n */\n isTorsionFree(): boolean {\n const { isTorsionFree } = extraOpts;\n if (cofactor === _1n) return true;\n if (isTorsionFree) return isTorsionFree(Point, this);\n return wnaf.unsafe(this, CURVE_ORDER).is0();\n }\n\n clearCofactor(): Point {\n const { clearCofactor } = extraOpts;\n if (cofactor === _1n) return this; // Fast-path\n if (clearCofactor) return clearCofactor(Point, this) as Point;\n return this.multiplyUnsafe(cofactor);\n }\n\n isSmallOrder(): boolean {\n // can we use this.clearCofactor()?\n return this.multiplyUnsafe(cofactor).is0();\n }\n\n toBytes(isCompressed = true): Uint8Array {\n abool(isCompressed, 'isCompressed');\n this.assertValidity();\n return encodePoint(Point, this, isCompressed);\n }\n\n toHex(isCompressed = true): string {\n return bytesToHex(this.toBytes(isCompressed));\n }\n\n toString() {\n return ``;\n }\n\n // TODO: remove\n get px(): T {\n return this.X;\n }\n get py(): T {\n return this.X;\n }\n get pz(): T {\n return this.Z;\n }\n toRawBytes(isCompressed = true): Uint8Array {\n return this.toBytes(isCompressed);\n }\n _setWindowSize(windowSize: number) {\n this.precompute(windowSize);\n }\n static normalizeZ(points: Point[]): Point[] {\n return normalizeZ(Point, points);\n }\n static msm(points: Point[], scalars: bigint[]): Point {\n return pippenger(Point, Fn, points, scalars);\n }\n static fromPrivateKey(privateKey: PrivKey) {\n return Point.BASE.multiply(_normFnElement(Fn, privateKey));\n }\n }\n const bits = Fn.BITS;\n const wnaf = new wNAF(Point, extraOpts.endo ? Math.ceil(bits / 2) : bits);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n\n/** Methods of ECDSA signature instance. */\nexport interface ECDSASignature {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n addRecoveryBit(recovery: number): ECDSASigRecovered;\n hasHighS(): boolean;\n toBytes(format?: string): Uint8Array;\n toHex(format?: string): string;\n\n /** @deprecated */\n assertValidity(): void;\n /** @deprecated */\n normalizeS(): ECDSASignature;\n /** @deprecated use standalone method `curve.recoverPublicKey(sig.toBytes('recovered'), msg)` */\n recoverPublicKey(msgHash: Hex): WeierstrassPoint;\n /** @deprecated use `.toBytes('compact')` */\n toCompactRawBytes(): Uint8Array;\n /** @deprecated use `.toBytes('compact')` */\n toCompactHex(): string;\n /** @deprecated use `.toBytes('der')` */\n toDERRawBytes(): Uint8Array;\n /** @deprecated use `.toBytes('der')` */\n toDERHex(): string;\n}\nexport type ECDSASigRecovered = ECDSASignature & {\n readonly recovery: number;\n};\n/** Methods of ECDSA signature constructor. */\nexport type ECDSASignatureCons = {\n new (r: bigint, s: bigint, recovery?: number): ECDSASignature;\n fromBytes(bytes: Uint8Array, format?: ECDSASigFormat): ECDSASignature;\n fromHex(hex: string, format?: ECDSASigFormat): ECDSASignature;\n\n /** @deprecated use `.fromBytes(bytes, 'compact')` */\n fromCompact(hex: Hex): ECDSASignature;\n /** @deprecated use `.fromBytes(bytes, 'der')` */\n fromDER(hex: Hex): ECDSASignature;\n};\n\n// Points start with byte 0x02 when y is even; otherwise 0x03\nfunction pprefix(hasEvenY: boolean): Uint8Array {\n return Uint8Array.of(hasEvenY ? 0x02 : 0x03);\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(\n Fp: IField,\n Z: T\n): (u: T, v: T) => { isValid: boolean; value: T } {\n // Generic implementation\n const q = Fp.ORDER;\n let l = _0n;\n for (let o = q - _1n; o % _2n === _0n; o /= _2n) 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: T, v: T): { isValid: boolean; value: T } => {\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: T, v: T) => {\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(\n Fp: IField,\n opts: {\n A: T;\n B: T;\n Z: T;\n }\n): (u: T) => { x: T; y: T } {\n validateField(Fp);\n const { A, B, Z } = opts;\n if (!Fp.isValid(A) || !Fp.isValid(B) || !Fp.isValid(Z))\n throw new Error('mapToCurveSimpleSWU: invalid opts');\n const sqrtRatio = SWUFpSqrtRatio(Fp, Z);\n if (!Fp.isOdd) throw new Error('Field does not have .isOdd()');\n // Input: u, an element of F.\n // Output: (x, y), a point on E.\n return (u: T): { x: T; y: T } => {\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, 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, B); // 6. tv3 = B * tv3\n tv4 = Fp.cmov(Z, Fp.neg(tv2), !Fp.eql(tv2, Fp.ZERO)); // 7. tv4 = CMOV(Z, -tv2, tv2 != 0)\n tv4 = Fp.mul(tv4, 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, 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, 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 const tv4_inv = FpInvertBatch(Fp, [tv4], true)[0];\n x = Fp.mul(x, tv4_inv); // 25. x = x / tv4\n return { x, y };\n };\n}\n\nfunction getWLengths(Fp: IField, Fn: IField) {\n return {\n secretKey: Fn.BYTES,\n publicKey: 1 + Fp.BYTES,\n publicKeyUncompressed: 1 + 2 * Fp.BYTES,\n publicKeyHasPrefix: true,\n signature: 2 * Fn.BYTES,\n };\n}\n\n/**\n * Sometimes users only need getPublicKey, getSharedSecret, and secret key handling.\n * This helper ensures no signature functionality is present. Less code, smaller bundle size.\n */\nexport function ecdh(\n Point: WeierstrassPointCons,\n ecdhOpts: { randomBytes?: (bytesLength?: number) => Uint8Array } = {}\n): ECDH {\n const { Fn } = Point;\n const randomBytes_ = ecdhOpts.randomBytes || randomBytesWeb;\n const lengths = Object.assign(getWLengths(Point.Fp, Fn), { seed: getMinHashLength(Fn.ORDER) });\n\n function isValidSecretKey(secretKey: PrivKey) {\n try {\n return !!_normFnElement(Fn, secretKey);\n } catch (error) {\n return false;\n }\n }\n\n function isValidPublicKey(publicKey: Uint8Array, isCompressed?: boolean): boolean {\n const { publicKey: comp, publicKeyUncompressed } = lengths;\n try {\n const l = publicKey.length;\n if (isCompressed === true && l !== comp) return false;\n if (isCompressed === false && l !== publicKeyUncompressed) return false;\n return !!Point.fromBytes(publicKey);\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Produces cryptographically secure secret key from random of size\n * (groupLen + ceil(groupLen / 2)) with modulo bias being negligible.\n */\n function randomSecretKey(seed = randomBytes_(lengths.seed)): Uint8Array {\n return mapHashToField(abytes(seed, lengths.seed, 'seed'), Fn.ORDER);\n }\n\n /**\n * Computes public key for a secret key. Checks for validity of the secret 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(secretKey: PrivKey, isCompressed = true): Uint8Array {\n return Point.BASE.multiply(_normFnElement(Fn, secretKey)).toBytes(isCompressed);\n }\n\n function keygen(seed?: Uint8Array) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n }\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: PrivKey | PubKey): boolean | undefined {\n if (typeof item === 'bigint') return false;\n if (item instanceof Point) return true;\n const { secretKey, publicKey, publicKeyUncompressed } = lengths;\n if (Fn.allowedLengths || secretKey === publicKey) return undefined;\n const l = ensureBytes('key', item).length;\n return l === publicKey || l === publicKeyUncompressed;\n }\n\n /**\n * ECDH (Elliptic Curve Diffie Hellman).\n * Computes shared public key from secret key A and public key B.\n * Checks: 1) secret key validity 2) shared key is on-curve.\n * Does NOT hash the result.\n * @param isCompressed whether to return compact (default), or full key\n * @returns shared public key\n */\n function getSharedSecret(secretKeyA: PrivKey, publicKeyB: Hex, isCompressed = true): Uint8Array {\n if (isProbPub(secretKeyA) === true) throw new Error('first arg must be private key');\n if (isProbPub(publicKeyB) === false) throw new Error('second arg must be public key');\n const s = _normFnElement(Fn, secretKeyA);\n const b = Point.fromHex(publicKeyB); // checks for being on-curve\n return b.multiply(s).toBytes(isCompressed);\n }\n\n const utils = {\n isValidSecretKey,\n isValidPublicKey,\n randomSecretKey,\n\n // TODO: remove\n isValidPrivateKey: isValidSecretKey,\n randomPrivateKey: randomSecretKey,\n normPrivateKeyToScalar: (key: PrivKey) => _normFnElement(Fn, key),\n precompute(windowSize = 8, point = Point.BASE): WeierstrassPoint {\n return point.precompute(windowSize, false);\n },\n };\n\n return Object.freeze({ getPublicKey, getSharedSecret, keygen, Point, utils, lengths });\n}\n\n/**\n * Creates ECDSA signing interface for given elliptic curve `Point` and `hash` function.\n * We need `hash` for 2 features:\n * 1. Message prehash-ing. NOT used if `sign` / `verify` are called with `prehash: false`\n * 2. k generation in `sign`, using HMAC-drbg(hash)\n *\n * ECDSAOpts are only rarely needed.\n *\n * @example\n * ```js\n * const p256_Point = weierstrass(...);\n * const p256_sha256 = ecdsa(p256_Point, sha256);\n * const p256_sha224 = ecdsa(p256_Point, sha224);\n * const p256_sha224_r = ecdsa(p256_Point, sha224, { randomBytes: (length) => { ... } });\n * ```\n */\nexport function ecdsa(\n Point: WeierstrassPointCons,\n hash: CHash,\n ecdsaOpts: ECDSAOpts = {}\n): ECDSA {\n ahash(hash);\n _validateObject(\n ecdsaOpts,\n {},\n {\n hmac: 'function',\n lowS: 'boolean',\n randomBytes: 'function',\n bits2int: 'function',\n bits2int_modN: 'function',\n }\n );\n\n const randomBytes = ecdsaOpts.randomBytes || randomBytesWeb;\n const hmac: HmacFnSync =\n ecdsaOpts.hmac ||\n (((key, ...msgs) => nobleHmac(hash, key, concatBytes(...msgs))) satisfies HmacFnSync);\n\n const { Fp, Fn } = Point;\n const { ORDER: CURVE_ORDER, BITS: fnBits } = Fn;\n const { keygen, getPublicKey, getSharedSecret, utils, lengths } = ecdh(Point, ecdsaOpts);\n const defaultSigOpts: Required = {\n prehash: false,\n lowS: typeof ecdsaOpts.lowS === 'boolean' ? ecdsaOpts.lowS : false,\n format: undefined as any, //'compact' as ECDSASigFormat,\n extraEntropy: false,\n };\n const defaultSigOpts_format = 'compact';\n\n function isBiggerThanHalfOrder(number: bigint) {\n const HALF = CURVE_ORDER >> _1n;\n return number > HALF;\n }\n function validateRS(title: string, num: bigint): bigint {\n if (!Fn.isValidNot0(num))\n throw new Error(`invalid signature ${title}: out of range 1..Point.Fn.ORDER`);\n return num;\n }\n function validateSigLength(bytes: Uint8Array, format: ECDSASigFormat) {\n validateSigFormat(format);\n const size = lengths.signature!;\n const sizer = format === 'compact' ? size : format === 'recovered' ? size + 1 : undefined;\n return abytes(bytes, sizer, `${format} signature`);\n }\n\n /**\n * ECDSA signature with its (r, s) properties. Supports compact, recovered & DER representations.\n */\n class Signature implements ECDSASignature {\n readonly r: bigint;\n readonly s: bigint;\n readonly recovery?: number;\n constructor(r: bigint, s: bigint, recovery?: number) {\n this.r = validateRS('r', r); // r in [1..N-1];\n this.s = validateRS('s', s); // s in [1..N-1];\n if (recovery != null) this.recovery = recovery;\n Object.freeze(this);\n }\n\n static fromBytes(bytes: Uint8Array, format: ECDSASigFormat = defaultSigOpts_format): Signature {\n validateSigLength(bytes, format);\n let recid: number | undefined;\n if (format === 'der') {\n const { r, s } = DER.toSig(abytes(bytes));\n return new Signature(r, s);\n }\n if (format === 'recovered') {\n recid = bytes[0];\n format = 'compact';\n bytes = bytes.subarray(1);\n }\n const L = Fn.BYTES;\n const r = bytes.subarray(0, L);\n const s = bytes.subarray(L, L * 2);\n return new Signature(Fn.fromBytes(r), Fn.fromBytes(s), recid);\n }\n\n static fromHex(hex: string, format?: ECDSASigFormat) {\n return this.fromBytes(hexToBytes(hex), format);\n }\n\n addRecoveryBit(recovery: number): RecoveredSignature {\n return new Signature(this.r, this.s, recovery) as RecoveredSignature;\n }\n\n recoverPublicKey(messageHash: Hex): WeierstrassPoint {\n const FIELD_ORDER = Fp.ORDER;\n const { r, s, recovery: rec } = this;\n if (rec == null || ![0, 1, 2, 3].includes(rec)) throw new Error('recovery id invalid');\n\n // ECDSA recovery is hard for cofactor > 1 curves.\n // In sign, `r = q.x mod n`, and here we recover q.x from r.\n // While recovering q.x >= n, we need to add r+n for cofactor=1 curves.\n // However, for cofactor>1, r+n may not get q.x:\n // r+n*i would need to be done instead where i is unknown.\n // To easily get i, we either need to:\n // a. increase amount of valid recid values (4, 5...); OR\n // b. prohibit non-prime-order signatures (recid > 1).\n const hasCofactor = CURVE_ORDER * _2n < FIELD_ORDER;\n if (hasCofactor && rec > 1) throw new Error('recovery id is ambiguous for h>1 curve');\n\n const radj = rec === 2 || rec === 3 ? r + CURVE_ORDER : r;\n if (!Fp.isValid(radj)) throw new Error('recovery id 2 or 3 invalid');\n const x = Fp.toBytes(radj);\n const R = Point.fromBytes(concatBytes(pprefix((rec & 1) === 0), x));\n const ir = Fn.inv(radj); // r^-1\n const h = bits2int_modN(ensureBytes('msgHash', messageHash)); // Truncate hash\n const u1 = Fn.create(-h * ir); // -hr^-1\n const u2 = Fn.create(s * ir); // sr^-1\n // (sr^-1)R-(hr^-1)G = -(hr^-1)G + (sr^-1). unsafe is fine: there is no private data.\n const Q = Point.BASE.multiplyUnsafe(u1).add(R.multiplyUnsafe(u2));\n if (Q.is0()) throw new Error('point at infinify');\n Q.assertValidity();\n return Q;\n }\n\n // Signatures should be low-s, to prevent malleability.\n hasHighS(): boolean {\n return isBiggerThanHalfOrder(this.s);\n }\n\n toBytes(format: ECDSASigFormat = defaultSigOpts_format) {\n validateSigFormat(format);\n if (format === 'der') return hexToBytes(DER.hexFromSig(this));\n const r = Fn.toBytes(this.r);\n const s = Fn.toBytes(this.s);\n if (format === 'recovered') {\n if (this.recovery == null) throw new Error('recovery bit must be present');\n return concatBytes(Uint8Array.of(this.recovery), r, s);\n }\n return concatBytes(r, s);\n }\n\n toHex(format?: ECDSASigFormat) {\n return bytesToHex(this.toBytes(format));\n }\n\n // TODO: remove\n assertValidity(): void {}\n static fromCompact(hex: Hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'compact');\n }\n static fromDER(hex: Hex) {\n return Signature.fromBytes(ensureBytes('sig', hex), 'der');\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, Fn.neg(this.s), this.recovery) : this;\n }\n toDERRawBytes() {\n return this.toBytes('der');\n }\n toDERHex() {\n return bytesToHex(this.toBytes('der'));\n }\n toCompactRawBytes() {\n return this.toBytes('compact');\n }\n toCompactHex() {\n return bytesToHex(this.toBytes('compact'));\n }\n }\n type RecoveredSignature = Signature & { recovery: number };\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 =\n ecdsaOpts.bits2int ||\n function bits2int_def(bytes: Uint8Array): bigint {\n // Our custom check \"just in case\", for protection against DoS\n if (bytes.length > 8192) 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 = bytesToNumberBE(bytes); // check for == u8 done here\n const delta = bytes.length * 8 - fnBits; // truncate to nBitLength leftmost bits\n return delta > 0 ? num >> BigInt(delta) : num;\n };\n const bits2int_modN =\n ecdsaOpts.bits2int_modN ||\n function bits2int_modN_def(bytes: Uint8Array): bigint {\n return Fn.create(bits2int(bytes)); // can't use bytesToNumberBE here\n };\n // Pads output with zero as per spec\n const ORDER_MASK = bitMask(fnBits);\n /** Converts to bytes. Checks if num in `[0..ORDER_MASK-1]` e.g.: `[0..2^256-1]`. */\n function int2octets(num: bigint): Uint8Array {\n // IMPORTANT: the check ensures working for case `Fn.BYTES != Fn.BITS * 8`\n aInRange('num < 2^' + fnBits, num, _0n, ORDER_MASK);\n return Fn.toBytes(num);\n }\n\n function validateMsgAndHash(message: Uint8Array, prehash: boolean) {\n abytes(message, undefined, 'message');\n return prehash ? abytes(hash(message), undefined, 'prehashed message') : message;\n }\n\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 *\n * Warning: we cannot assume here that message 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 */\n function prepSig(message: Uint8Array, privateKey: PrivKey, opts: ECDSASignOpts) {\n if (['recovered', 'canonical'].some((k) => k in opts))\n throw new Error('sign() legacy options not supported');\n const { lowS, prehash, extraEntropy } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash); // RFC6979 3.2 A: h1 = H(m)\n // We can't later call bits2octets, since nested bits2int is broken for curves\n // with fnBits % 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(message);\n const d = _normFnElement(Fn, privateKey); // validate secret key, convert to bigint\n const seedArgs = [int2octets(d), int2octets(h1int)];\n // extraEntropy. RFC6979 3.6: additional k' (optional).\n if (extraEntropy != null && extraEntropy !== false) {\n // K = HMAC_K(V || 0x00 || int2octets(x) || bits2octets(h1) || k')\n // gen random bytes OR pass as-is\n const e = extraEntropy === true ? randomBytes(lengths.secretKey) : extraEntropy;\n seedArgs.push(ensureBytes('extraEntropy', e)); // check for being bytes\n }\n const seed = 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 // To transform k => Signature:\n // q = k\u22C5G\n // r = q.x mod n\n // s = k^-1(m + rd) mod n\n // Can use scalar blinding b^-1(bm + bdr) where b \u2208 [1,q\u22121] 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 function k2sig(kBytes: Uint8Array): RecoveredSignature | undefined {\n // RFC 6979 Section 3.2, step 3: k = bits2int(T)\n // Important: all mod() calls here must be done over N\n const k = bits2int(kBytes); // mod n, not mod p\n if (!Fn.isValidNot0(k)) return; // Valid scalars (including k) must be in 1..N-1\n const ik = Fn.inv(k); // k^-1 mod n\n const q = Point.BASE.multiply(k).toAffine(); // q = k\u22C5G\n const r = Fn.create(q.x); // r = q.x mod n\n if (r === _0n) return;\n const s = Fn.create(ik * Fn.create(m + r * d)); // Not using blinding here, see comment above\n if (s === _0n) 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 = Fn.neg(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) as RecoveredSignature; // use normS, not s\n }\n return { seed, k2sig };\n }\n\n /**\n * Signs message hash with a secret key.\n *\n * ```\n * sign(m, d) where\n * k = rfc6979_hmac_drbg(m, d)\n * (x, y) = G \u00D7 k\n * r = x mod n\n * s = (m + dr) / k mod n\n * ```\n */\n function sign(message: Hex, secretKey: PrivKey, opts: ECDSASignOpts = {}): RecoveredSignature {\n message = ensureBytes('message', message);\n const { seed, k2sig } = prepSig(message, secretKey, opts); // Steps A, D of RFC6979 3.2.\n const drbg = createHmacDrbg(hash.outputLen, Fn.BYTES, hmac);\n const sig = drbg(seed, k2sig); // Steps B, C, D, E, F, G\n return sig;\n }\n\n function tryParsingSig(sg: Hex | SignatureLike) {\n // Try to deduce format\n let sig: Signature | undefined = undefined;\n const isHex = typeof sg === 'string' || isBytes(sg);\n const isObj =\n !isHex &&\n sg !== null &&\n typeof sg === 'object' &&\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 if (isObj) {\n sig = new Signature(sg.r, sg.s);\n } else if (isHex) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'der');\n } catch (derError) {\n if (!(derError instanceof DER.Err)) throw derError;\n }\n if (!sig) {\n try {\n sig = Signature.fromBytes(ensureBytes('sig', sg), 'compact');\n } catch (error) {\n return false;\n }\n }\n }\n if (!sig) return false;\n return sig;\n }\n\n /**\n * Verifies a signature against message and public key.\n * Rejects lowS signatures by default: see {@link ECDSAVerifyOpts}.\n * 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\u22C5G + u2\u22C5P\n * mod(R.x, n) == r\n * ```\n */\n function verify(\n signature: Hex | SignatureLike,\n message: Hex,\n publicKey: Hex,\n opts: ECDSAVerifyOpts = {}\n ): boolean {\n const { lowS, prehash, format } = validateSigOpts(opts, defaultSigOpts);\n publicKey = ensureBytes('publicKey', publicKey);\n message = validateMsgAndHash(ensureBytes('message', message), prehash);\n if ('strict' in opts) throw new Error('options.strict was renamed to lowS');\n const sig =\n format === undefined\n ? tryParsingSig(signature)\n : Signature.fromBytes(ensureBytes('sig', signature as Hex), format);\n if (sig === false) return false;\n try {\n const P = Point.fromBytes(publicKey);\n if (lowS && sig.hasHighS()) return false;\n const { r, s } = sig;\n const h = bits2int_modN(message); // mod n, not mod p\n const is = Fn.inv(s); // s^-1 mod n\n const u1 = Fn.create(h * is); // u1 = hs^-1 mod n\n const u2 = Fn.create(r * is); // u2 = rs^-1 mod n\n const R = Point.BASE.multiplyUnsafe(u1).add(P.multiplyUnsafe(u2)); // u1\u22C5G + u2\u22C5P\n if (R.is0()) return false;\n const v = Fn.create(R.x); // v = r.x mod n\n return v === r;\n } catch (e) {\n return false;\n }\n }\n\n function recoverPublicKey(\n signature: Uint8Array,\n message: Uint8Array,\n opts: ECDSARecoverOpts = {}\n ): Uint8Array {\n const { prehash } = validateSigOpts(opts, defaultSigOpts);\n message = validateMsgAndHash(message, prehash);\n return Signature.fromBytes(signature, 'recovered').recoverPublicKey(message).toBytes();\n }\n\n return Object.freeze({\n keygen,\n getPublicKey,\n getSharedSecret,\n utils,\n lengths,\n Point,\n sign,\n verify,\n recoverPublicKey,\n Signature,\n hash,\n });\n}\n\n// TODO: remove everything below\n/** @deprecated use ECDSASignature */\nexport type SignatureType = ECDSASignature;\n/** @deprecated use ECDSASigRecovered */\nexport type RecoveredSignatureType = ECDSASigRecovered;\n/** @deprecated switch to Uint8Array signatures in format 'compact' */\nexport type SignatureLike = { r: bigint; s: bigint };\nexport type ECDSAExtraEntropy = Hex | boolean;\n/** @deprecated use `ECDSAExtraEntropy` */\nexport type Entropy = Hex | boolean;\nexport type BasicWCurve = BasicCurve & {\n // Params: a, b\n a: T;\n b: T;\n\n // Optional params\n allowedPrivateKeyLengths?: readonly number[]; // for P521\n wrapPrivateKey?: boolean; // bls12-381 requires mod(n) instead of rejecting keys >= n\n endo?: EndomorphismOpts;\n // When a cofactor != 1, there can be an effective methods to:\n // 1. Determine whether a point is torsion-free\n isTorsionFree?: (c: WeierstrassPointCons, point: WeierstrassPoint) => boolean;\n // 2. Clear torsion component\n clearCofactor?: (c: WeierstrassPointCons, point: WeierstrassPoint) => WeierstrassPoint;\n};\n/** @deprecated use ECDSASignOpts */\nexport type SignOpts = ECDSASignOpts;\n/** @deprecated use ECDSASignOpts */\nexport type VerOpts = ECDSAVerifyOpts;\n\n/** @deprecated use WeierstrassPoint */\nexport type ProjPointType = WeierstrassPoint;\n/** @deprecated use WeierstrassPointCons */\nexport type ProjConstructor = WeierstrassPointCons;\n/** @deprecated use ECDSASignatureCons */\nexport type SignatureConstructor = ECDSASignatureCons;\n\n// TODO: remove\nexport type CurvePointsType = BasicWCurve & {\n fromBytes?: (bytes: Uint8Array) => AffinePoint;\n toBytes?: (\n c: WeierstrassPointCons,\n point: WeierstrassPoint,\n isCompressed: boolean\n ) => Uint8Array;\n};\n\n// LegacyWeierstrassOpts\nexport type CurvePointsTypeWithLength = Readonly & Partial>;\n\n// LegacyWeierstrass\nexport type CurvePointsRes = {\n Point: WeierstrassPointCons;\n\n /** @deprecated use `Point.CURVE()` */\n CURVE: CurvePointsType;\n /** @deprecated use `Point` */\n ProjectivePoint: WeierstrassPointCons;\n /** @deprecated use `Point.Fn.fromBytes(privateKey)` */\n normPrivateKeyToScalar: (key: PrivKey) => bigint;\n /** @deprecated */\n weierstrassEquation: (x: T) => T;\n /** @deprecated use `Point.Fn.isValidNot0(num)` */\n isWithinCurveOrder: (num: bigint) => boolean;\n};\n\n// Aliases to legacy types\n// export type CurveType = LegacyECDSAOpts;\n// export type CurveFn = LegacyECDSA;\n// export type CurvePointsRes = LegacyWeierstrass;\n// export type CurvePointsType = LegacyWeierstrassOpts;\n// export type CurvePointsTypeWithLength = LegacyWeierstrassOpts;\n// export type BasicWCurve = LegacyWeierstrassOpts;\n\n/** @deprecated use `Uint8Array` */\nexport type PubKey = Hex | WeierstrassPoint;\nexport type CurveType = BasicWCurve & {\n hash: CHash; // CHash not FHash because we need outputLen for DRBG\n hmac?: HmacFnSync;\n randomBytes?: (bytesLength?: number) => Uint8Array;\n lowS?: boolean;\n bits2int?: (bytes: Uint8Array) => bigint;\n bits2int_modN?: (bytes: Uint8Array) => bigint;\n};\nexport type CurveFn = {\n /** @deprecated use `Point.CURVE()` */\n CURVE: CurvePointsType;\n keygen: ECDSA['keygen'];\n getPublicKey: ECDSA['getPublicKey'];\n getSharedSecret: ECDSA['getSharedSecret'];\n sign: ECDSA['sign'];\n verify: ECDSA['verify'];\n Point: WeierstrassPointCons;\n /** @deprecated use `Point` */\n ProjectivePoint: WeierstrassPointCons;\n Signature: ECDSASignatureCons;\n utils: ECDSA['utils'];\n lengths: ECDSA['lengths'];\n};\n/** @deprecated use `weierstrass` in newer releases */\nexport function weierstrassPoints(c: CurvePointsTypeWithLength): CurvePointsRes {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n return _weierstrass_new_output_to_legacy(c, Point);\n}\nexport type WsPointComposed = {\n CURVE: WeierstrassOpts;\n curveOpts: WeierstrassExtraOpts;\n};\nexport type WsComposed = {\n /** @deprecated use `Point.CURVE()` */\n CURVE: WeierstrassOpts;\n hash: CHash;\n curveOpts: WeierstrassExtraOpts;\n ecdsaOpts: ECDSAOpts;\n};\nfunction _weierstrass_legacy_opts_to_new(c: CurvePointsType): WsPointComposed {\n const CURVE: WeierstrassOpts = {\n a: c.a,\n b: c.b,\n p: c.Fp.ORDER,\n n: c.n,\n h: c.h,\n Gx: c.Gx,\n Gy: c.Gy,\n };\n const Fp = c.Fp;\n let allowedLengths = c.allowedPrivateKeyLengths\n ? Array.from(new Set(c.allowedPrivateKeyLengths.map((l) => Math.ceil(l / 2))))\n : undefined;\n const Fn = Field(CURVE.n, {\n BITS: c.nBitLength,\n allowedLengths: allowedLengths,\n modFromBytes: c.wrapPrivateKey,\n });\n const curveOpts: WeierstrassExtraOpts = {\n Fp,\n Fn,\n allowInfinityPoint: c.allowInfinityPoint,\n endo: c.endo,\n isTorsionFree: c.isTorsionFree,\n clearCofactor: c.clearCofactor,\n fromBytes: c.fromBytes,\n toBytes: c.toBytes,\n };\n return { CURVE, curveOpts };\n}\nfunction _ecdsa_legacy_opts_to_new(c: CurveType): WsComposed {\n const { CURVE, curveOpts } = _weierstrass_legacy_opts_to_new(c);\n const ecdsaOpts: ECDSAOpts = {\n hmac: c.hmac,\n randomBytes: c.randomBytes,\n lowS: c.lowS,\n bits2int: c.bits2int,\n bits2int_modN: c.bits2int_modN,\n };\n return { CURVE, curveOpts, hash: c.hash, ecdsaOpts };\n}\nexport function _legacyHelperEquat(Fp: IField, a: T, b: T): (x: T) => T {\n /**\n * y\u00B2 = x\u00B3 + ax + b: Short weierstrass curve formula. Takes x, returns y\u00B2.\n * @returns y\u00B2\n */\n function weierstrassEquation(x: T): T {\n const x2 = Fp.sqr(x); // x * x\n const x3 = Fp.mul(x2, x); // x\u00B2 * x\n return Fp.add(Fp.add(x3, Fp.mul(x, a)), b); // x\u00B3 + a * x + b\n }\n return weierstrassEquation;\n}\nfunction _weierstrass_new_output_to_legacy(\n c: CurvePointsType,\n Point: WeierstrassPointCons\n): CurvePointsRes {\n const { Fp, Fn } = Point;\n function isWithinCurveOrder(num: bigint): boolean {\n return inRange(num, _1n, Fn.ORDER);\n }\n const weierstrassEquation = _legacyHelperEquat(Fp, c.a, c.b);\n return Object.assign(\n {},\n {\n CURVE: c,\n Point: Point,\n ProjectivePoint: Point,\n normPrivateKeyToScalar: (key: PrivKey) => _normFnElement(Fn, key),\n weierstrassEquation,\n isWithinCurveOrder,\n }\n );\n}\nfunction _ecdsa_new_output_to_legacy(c: CurveType, _ecdsa: ECDSA): CurveFn {\n const Point = _ecdsa.Point;\n return Object.assign({}, _ecdsa, {\n ProjectivePoint: Point,\n CURVE: Object.assign({}, c, nLength(Point.Fn.ORDER, Point.Fn.BITS)),\n });\n}\n\n// _ecdsa_legacy\nexport function weierstrass(c: CurveType): CurveFn {\n const { CURVE, curveOpts, hash, ecdsaOpts } = _ecdsa_legacy_opts_to_new(c);\n const Point = weierstrassN(CURVE, curveOpts);\n const signs = ecdsa(Point, hash, ecdsaOpts);\n return _ecdsa_new_output_to_legacy(c, signs);\n}\n", "/**\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 { type CurveFn, type CurveType, weierstrass } from './abstract/weierstrass.ts';\nimport type { CHash } from './utils.ts';\n\n/** connects noble-curves to noble-hashes */\nexport function getHash(hash: CHash): { hash: CHash } {\n return { hash };\n}\n/** Same API as @noble/hashes, with ability to create curve with custom hash */\nexport type CurveDef = Readonly>;\nexport type CurveFnWithCreate = CurveFn & { create: (hash: CHash) => CurveFn };\n\n/** @deprecated use new `weierstrass()` and `ecdsa()` methods */\nexport function createCurve(curveDef: CurveDef, defHash: CHash): CurveFnWithCreate {\n const create = (hash: CHash): CurveFn => weierstrass({ ...curveDef, hash: hash });\n return { ...create(defHash), create };\n}\n", "/**\n * hash-to-curve from RFC 9380.\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * https://www.rfc-editor.org/rfc/rfc9380\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport type { CHash } from '../utils.ts';\nimport {\n _validateObject,\n abytes,\n bytesToNumberBE,\n concatBytes,\n isBytes,\n isHash,\n utf8ToBytes,\n} from '../utils.ts';\nimport type { AffinePoint, Group, GroupConstructor } from './curve.ts';\nimport { FpInvertBatch, mod, type IField } from './modular.ts';\n\nexport type UnicodeOrBytes = string | Uint8Array;\n\n/**\n * * `DST` is a domain separation tag, defined in section 2.2.5\n * * `p` characteristic of F, where F is a finite field of characteristic p and order q = p^m\n * * `m` is extension degree (1 for prime fields)\n * * `k` is the target security target in bits (e.g. 128), from section 5.1\n * * `expand` is `xmd` (SHA2, SHA3, BLAKE) or `xof` (SHAKE, BLAKE-XOF)\n * * `hash` conforming to `utils.CHash` interface, with `outputLen` / `blockLen` props\n */\nexport type H2COpts = {\n DST: UnicodeOrBytes;\n expand: 'xmd' | 'xof';\n hash: CHash;\n p: bigint;\n m: number;\n k: number;\n};\nexport type H2CHashOpts = {\n expand: 'xmd' | 'xof';\n hash: CHash;\n};\n// todo: remove\nexport type Opts = H2COpts;\n\n// Octet Stream to Integer. \"spec\" implementation of os2ip is 2.5x slower vs bytesToNumberBE.\nconst os2ip = bytesToNumberBE;\n\n// Integer to Octet Stream (numberToBytesBE)\nfunction i2osp(value: number, length: number): Uint8Array {\n anum(value);\n anum(length);\n if (value < 0 || value >= 1 << (8 * length)) throw new Error('invalid I2OSP input: ' + value);\n const res = Array.from({ length }).fill(0) as number[];\n for (let i = length - 1; i >= 0; i--) {\n res[i] = value & 0xff;\n value >>>= 8;\n }\n return new Uint8Array(res);\n}\n\nfunction strxor(a: Uint8Array, b: Uint8Array): Uint8Array {\n const arr = new Uint8Array(a.length);\n for (let i = 0; i < a.length; i++) {\n arr[i] = a[i] ^ b[i];\n }\n return arr;\n}\n\nfunction anum(item: unknown): void {\n if (!Number.isSafeInteger(item)) throw new Error('number expected');\n}\n\nfunction normDST(DST: UnicodeOrBytes): Uint8Array {\n if (!isBytes(DST) && typeof DST !== 'string') throw new Error('DST must be Uint8Array or string');\n return typeof DST === 'string' ? utf8ToBytes(DST) : DST;\n}\n\n/**\n * Produces a uniformly random byte string using a cryptographic hash function H that outputs b bits.\n * [RFC 9380 5.3.1](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.1).\n */\nexport function expand_message_xmd(\n msg: Uint8Array,\n DST: UnicodeOrBytes,\n lenInBytes: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n if (DST.length > 255) DST = H(concatBytes(utf8ToBytes('H2C-OVERSIZE-DST-'), DST));\n const { outputLen: b_in_bytes, blockLen: r_in_bytes } = H;\n const ell = Math.ceil(lenInBytes / b_in_bytes);\n if (lenInBytes > 65535 || ell > 255) throw new Error('expand_message_xmd: invalid lenInBytes');\n const DST_prime = concatBytes(DST, i2osp(DST.length, 1));\n const Z_pad = i2osp(0, r_in_bytes);\n const l_i_b_str = i2osp(lenInBytes, 2); // len_in_bytes_str\n const b = new Array(ell);\n const b_0 = H(concatBytes(Z_pad, msg, l_i_b_str, i2osp(0, 1), DST_prime));\n b[0] = H(concatBytes(b_0, i2osp(1, 1), DST_prime));\n for (let i = 1; i <= ell; i++) {\n const args = [strxor(b_0, b[i - 1]), i2osp(i + 1, 1), DST_prime];\n b[i] = H(concatBytes(...args));\n }\n const pseudo_random_bytes = concatBytes(...b);\n return pseudo_random_bytes.slice(0, lenInBytes);\n}\n\n/**\n * Produces a uniformly random byte string using an extendable-output function (XOF) H.\n * 1. The collision resistance of H MUST be at least k bits.\n * 2. H MUST be an XOF that has been proved indifferentiable from\n * a random oracle under a reasonable cryptographic assumption.\n * [RFC 9380 5.3.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.3.2).\n */\nexport function expand_message_xof(\n msg: Uint8Array,\n DST: UnicodeOrBytes,\n lenInBytes: number,\n k: number,\n H: CHash\n): Uint8Array {\n abytes(msg);\n anum(lenInBytes);\n DST = normDST(DST);\n // https://www.rfc-editor.org/rfc/rfc9380#section-5.3.3\n // DST = H('H2C-OVERSIZE-DST-' || a_very_long_DST, Math.ceil((lenInBytes * k) / 8));\n if (DST.length > 255) {\n const dkLen = Math.ceil((2 * k) / 8);\n DST = H.create({ dkLen }).update(utf8ToBytes('H2C-OVERSIZE-DST-')).update(DST).digest();\n }\n if (lenInBytes > 65535 || DST.length > 255)\n throw new Error('expand_message_xof: invalid lenInBytes');\n return (\n H.create({ dkLen: lenInBytes })\n .update(msg)\n .update(i2osp(lenInBytes, 2))\n // 2. DST_prime = DST || I2OSP(len(DST), 1)\n .update(DST)\n .update(i2osp(DST.length, 1))\n .digest()\n );\n}\n\n/**\n * Hashes arbitrary-length byte strings to a list of one or more elements of a finite field F.\n * [RFC 9380 5.2](https://www.rfc-editor.org/rfc/rfc9380#section-5.2).\n * @param msg a byte string containing the message to hash\n * @param count the number of elements of F to output\n * @param options `{DST: string, p: bigint, m: number, k: number, expand: 'xmd' | 'xof', hash: H}`, see above\n * @returns [u_0, ..., u_(count - 1)], a list of field elements.\n */\nexport function hash_to_field(msg: Uint8Array, count: number, options: H2COpts): bigint[][] {\n _validateObject(options, {\n p: 'bigint',\n m: 'number',\n k: 'number',\n hash: 'function',\n });\n const { p, k, m, hash, expand, DST } = options;\n if (!isHash(options.hash)) throw new Error('expected valid hash');\n abytes(msg);\n anum(count);\n const log2p = p.toString(2).length;\n const L = Math.ceil((log2p + k) / 8); // section 5.1 of ietf draft link above\n const len_in_bytes = count * m * L;\n let prb; // pseudo_random_bytes\n if (expand === 'xmd') {\n prb = expand_message_xmd(msg, DST, len_in_bytes, hash);\n } else if (expand === 'xof') {\n prb = expand_message_xof(msg, DST, len_in_bytes, k, hash);\n } else if (expand === '_internal_pass') {\n // for internal tests only\n prb = msg;\n } else {\n throw new Error('expand must be \"xmd\" or \"xof\"');\n }\n const u = new Array(count);\n for (let i = 0; i < count; i++) {\n const e = new Array(m);\n for (let j = 0; j < m; j++) {\n const elm_offset = L * (j + i * m);\n const tv = prb.subarray(elm_offset, elm_offset + L);\n e[j] = mod(os2ip(tv), p);\n }\n u[i] = e;\n }\n return u;\n}\n\nexport type XY = (x: T, y: T) => { x: T; y: T };\nexport type XYRatio = [T[], T[], T[], T[]]; // xn/xd, yn/yd\nexport function isogenyMap>(field: F, map: XYRatio): XY {\n // Make same order as in spec\n const coeff = map.map((i) => Array.from(i).reverse());\n return (x: T, y: T) => {\n const [xn, xd, yn, yd] = coeff.map((val) =>\n val.reduce((acc, i) => field.add(field.mul(acc, x), i))\n );\n // 6.6.3\n // Exceptional cases of iso_map are inputs that cause the denominator of\n // either rational function to evaluate to zero; such cases MUST return\n // the identity point on E.\n const [xd_inv, yd_inv] = FpInvertBatch(field, [xd, yd], true);\n x = field.mul(xn, xd_inv); // xNum / xDen\n y = field.mul(y, field.mul(yn, yd_inv)); // y * (yNum / yDev)\n return { x, y };\n };\n}\n\n/** Point interface, which curves must implement to work correctly with the module. */\nexport interface H2CPoint extends Group> {\n add(rhs: H2CPoint): H2CPoint;\n toAffine(iz?: bigint): AffinePoint;\n clearCofactor(): H2CPoint;\n assertValidity(): void;\n}\n\nexport interface H2CPointConstructor extends GroupConstructor> {\n fromAffine(ap: AffinePoint): H2CPoint;\n}\n\nexport type MapToCurve = (scalar: bigint[]) => AffinePoint;\n\n// Separated from initialization opts, so users won't accidentally change per-curve parameters\n// (changing DST is ok!)\nexport type htfBasicOpts = { DST: UnicodeOrBytes };\nexport type H2CMethod = (msg: Uint8Array, options?: htfBasicOpts) => H2CPoint;\n// TODO: remove\nexport type HTFMethod = H2CMethod;\nexport type MapMethod = (scalars: bigint[]) => H2CPoint;\nexport type H2CHasherBase = {\n hashToCurve: H2CMethod;\n hashToScalar: (msg: Uint8Array, options: htfBasicOpts) => bigint;\n};\n/**\n * RFC 9380 methods, with cofactor clearing. See https://www.rfc-editor.org/rfc/rfc9380#section-3.\n *\n * * hashToCurve: `map(hash(input))`, encodes RANDOM bytes to curve (WITH hashing)\n * * encodeToCurve: `map(hash(input))`, encodes NON-UNIFORM bytes to curve (WITH hashing)\n * * mapToCurve: `map(scalars)`, encodes NON-UNIFORM scalars to curve (NO hashing)\n */\nexport type H2CHasher = H2CHasherBase & {\n encodeToCurve: H2CMethod;\n mapToCurve: MapMethod;\n defaults: H2COpts & { encodeDST?: UnicodeOrBytes };\n};\n// TODO: remove\nexport type Hasher = H2CHasher;\n\nexport const _DST_scalar: Uint8Array = utf8ToBytes('HashToScalar-');\n\n/** Creates hash-to-curve methods from EC Point and mapToCurve function. See {@link H2CHasher}. */\nexport function createHasher(\n Point: H2CPointConstructor,\n mapToCurve: MapToCurve,\n defaults: H2COpts & { encodeDST?: UnicodeOrBytes }\n): H2CHasher {\n if (typeof mapToCurve !== 'function') throw new Error('mapToCurve() must be defined');\n function map(num: bigint[]) {\n return Point.fromAffine(mapToCurve(num));\n }\n function clear(initial: H2CPoint) {\n const P = initial.clearCofactor();\n if (P.equals(Point.ZERO)) return Point.ZERO; // zero will throw in assert\n P.assertValidity();\n return P;\n }\n\n return {\n defaults,\n\n hashToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint {\n const opts = Object.assign({}, defaults, options);\n const u = hash_to_field(msg, 2, opts);\n const u0 = map(u[0]);\n const u1 = map(u[1]);\n return clear(u0.add(u1));\n },\n encodeToCurve(msg: Uint8Array, options?: htfBasicOpts): H2CPoint {\n const optsDst = defaults.encodeDST ? { DST: defaults.encodeDST } : {};\n const opts = Object.assign({}, defaults, optsDst, options);\n const u = hash_to_field(msg, 1, opts);\n const u0 = map(u[0]);\n return clear(u0);\n },\n /** See {@link H2CHasher} */\n mapToCurve(scalars: bigint[]): H2CPoint {\n if (!Array.isArray(scalars)) throw new Error('expected array of bigints');\n for (const i of scalars)\n if (typeof i !== 'bigint') throw new Error('expected array of bigints');\n return clear(map(scalars));\n },\n\n // hash_to_scalar can produce 0: https://www.rfc-editor.org/errata/eid8393\n // RFC 9380, draft-irtf-cfrg-bbs-signatures-08\n hashToScalar(msg: Uint8Array, options?: htfBasicOpts): bigint {\n // @ts-ignore\n const N = Point.Fn.ORDER;\n const opts = Object.assign({}, defaults, { p: N, m: 1, DST: _DST_scalar }, options);\n return hash_to_field(msg, 1, opts)[0][0];\n },\n };\n}\n", "/**\n * SECG secp256k1. See [pdf](https://www.secg.org/sec2-v2.pdf).\n *\n * Belongs to Koblitz curves: it has efficiently-computable GLV endomorphism \u03C8,\n * check out {@link EndomorphismOpts}. Seems to be rigid (not backdoored).\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha256 } from '@noble/hashes/sha2.js';\nimport { randomBytes } from '@noble/hashes/utils.js';\nimport { createCurve, type CurveFnWithCreate } from './_shortw_utils.ts';\nimport type { CurveLengths } from './abstract/curve.ts';\nimport {\n createHasher,\n type H2CHasher,\n type H2CMethod,\n isogenyMap,\n} from './abstract/hash-to-curve.ts';\nimport { Field, mapHashToField, mod, pow2 } from './abstract/modular.ts';\nimport {\n _normFnElement,\n type EndomorphismOpts,\n mapToCurveSimpleSWU,\n type WeierstrassPoint as PointType,\n type WeierstrassOpts,\n type WeierstrassPointCons,\n} from './abstract/weierstrass.ts';\nimport type { Hex, PrivKey } from './utils.ts';\nimport {\n bytesToNumberBE,\n concatBytes,\n ensureBytes,\n inRange,\n numberToBytesBE,\n utf8ToBytes,\n} from './utils.ts';\n\n// Seems like generator was produced from some seed:\n// `Point.BASE.multiply(Point.Fn.inv(2n, N)).toAffine().x`\n// // gives short x 0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63n\nconst secp256k1_CURVE: WeierstrassOpts = {\n p: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: BigInt(1),\n a: BigInt(0),\n b: BigInt(7),\n Gx: BigInt('0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'),\n Gy: BigInt('0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8'),\n};\n\nconst secp256k1_ENDO: EndomorphismOpts = {\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n basises: [\n [BigInt('0x3086d221a7d46bcde86c90e49284eb15'), -BigInt('0xe4437ed6010e88286f547fa90abfe4c3')],\n [BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'), BigInt('0x3086d221a7d46bcde86c90e49284eb15')],\n ],\n};\n\nconst _0n = /* @__PURE__ */ BigInt(0);\nconst _1n = /* @__PURE__ */ BigInt(1);\nconst _2n = /* @__PURE__ */ BigInt(2);\n\n/**\n * \u221An = 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: bigint): bigint {\n const P = secp256k1_CURVE.p;\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)) throw new Error('Cannot find square root');\n return root;\n}\n\nconst Fpk1 = Field(secp256k1_CURVE.p, { sqrt: sqrtMod });\n\n/**\n * secp256k1 curve, ECDSA and ECDH methods.\n *\n * Field: `2n**256n - 2n**32n - 2n**9n - 2n**8n - 2n**7n - 2n**6n - 2n**4n - 1n`\n *\n * @example\n * ```js\n * import { secp256k1 } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = secp256k1.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = secp256k1.sign(msg, secretKey);\n * const isValid = secp256k1.verify(sig, msg, publicKey) === true;\n * ```\n */\nexport const secp256k1: CurveFnWithCreate = createCurve(\n { ...secp256k1_CURVE, Fp: Fpk1, lowS: true, endo: secp256k1_ENDO },\n sha256\n);\n\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\n/** An object mapping tags to their tagged hash prefix of [SHA256(tag) | SHA256(tag)] */\nconst TAGGED_HASH_PREFIXES: { [tag: string]: Uint8Array } = {};\nfunction taggedHash(tag: string, ...messages: Uint8Array[]): Uint8Array {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = sha256(utf8ToBytes(tag));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return sha256(concatBytes(tagP, ...messages));\n}\n\n// ECDSA compact points are 33-byte. Schnorr is 32: we strip first byte 0x02 or 0x03\nconst pointToBytes = (point: PointType) => point.toBytes(true).slice(1);\nconst Pointk1 = /* @__PURE__ */ (() => secp256k1.Point)();\nconst hasEven = (y: bigint) => y % _2n === _0n;\n\n// Calculate point, scalar and bytes\nfunction schnorrGetExtPubKey(priv: PrivKey) {\n const { Fn, BASE } = Pointk1;\n const d_ = _normFnElement(Fn, priv);\n const p = BASE.multiply(d_); // P = d'\u22C5G; 0 < d' < n check is done inside\n const scalar = hasEven(p.y) ? d_ : Fn.neg(d_);\n return { 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: bigint): PointType {\n const Fp = Fpk1;\n if (!Fp.isValidNot0(x)) throw new Error('invalid x: Fail if x \u2265 p');\n const xx = Fp.create(x * x);\n const c = Fp.create(xx * x + BigInt(7)); // Let c = x\u00B3 + 7 mod p.\n let y = Fp.sqrt(c); // Let y = c^(p+1)/4 mod p. Same as sqrt().\n // Return the unique point P such that x(P) = x and\n // y(P) = y if y mod 2 = 0 or y(P) = p-y otherwise.\n if (!hasEven(y)) y = Fp.neg(y);\n const p = Pointk1.fromAffine({ x, y });\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: Uint8Array[]): bigint {\n return Pointk1.Fn.create(num(taggedHash('BIP0340/challenge', ...args)));\n}\n\n/**\n * Schnorr public key is just `x` coordinate of Point as per BIP340.\n */\nfunction schnorrGetPublicKey(secretKey: Hex): Uint8Array {\n return schnorrGetExtPubKey(secretKey).bytes; // d'=int(sk). Fail if d'=0 or d'\u2265n. Ret bytes(d'\u22C5G)\n}\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: Hex, secretKey: PrivKey, auxRand: Hex = randomBytes(32)): Uint8Array {\n const { Fn } = Pointk1;\n const m = ensureBytes('message', message);\n const { bytes: px, scalar: d } = schnorrGetExtPubKey(secretKey); // checks for isWithinCurveOrder\n const a = ensureBytes('auxRand', auxRand, 32); // Auxiliary random data a: a 32-byte array\n const t = Fn.toBytes(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 // Let k' = int(rand) mod n. Fail if k' = 0. Let R = k'\u22C5G\n const { bytes: rx, scalar: k } = schnorrGetExtPubKey(rand);\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(Fn.toBytes(Fn.create(k + e * d)), 32);\n // If Verify(bytes(P), m, sig) (see below) returns failure, abort\n if (!schnorrVerify(sig, m, px)) throw new Error('sign: Invalid signature produced');\n return sig;\n}\n\n/**\n * Verifies Schnorr signature.\n * Will swallow errors & return false except for initial type validation of arguments.\n */\nfunction schnorrVerify(signature: Hex, message: Hex, publicKey: Hex): boolean {\n const { Fn, BASE } = Pointk1;\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 \u2265 p.\n if (!inRange(r, _1n, secp256k1_CURVE.p)) return false;\n const s = num(sig.subarray(32, 64)); // Let s = int(sig[32:64]); fail if s \u2265 n.\n if (!inRange(s, _1n, secp256k1_CURVE.n)) return false;\n // int(challenge(bytes(r)||bytes(P)||m))%n\n const e = challenge(Fn.toBytes(r), pointToBytes(P), m);\n // R = s\u22C5G - e\u22C5P, where -eP == (n-e)P\n const R = BASE.multiplyUnsafe(s).add(P.multiplyUnsafe(Fn.neg(e)));\n const { x, y } = R.toAffine();\n // Fail if is_infinite(R) / not has_even_y(R) / x(R) \u2260 r.\n if (R.is0() || !hasEven(y) || x !== r) return false;\n return true;\n } catch (error) {\n return false;\n }\n}\n\nexport type SecpSchnorr = {\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n getPublicKey: typeof schnorrGetPublicKey;\n sign: typeof schnorrSign;\n verify: typeof schnorrVerify;\n Point: WeierstrassPointCons;\n utils: {\n randomSecretKey: (seed?: Uint8Array) => Uint8Array;\n pointToBytes: (point: PointType) => Uint8Array;\n lift_x: typeof lift_x;\n taggedHash: typeof taggedHash;\n\n /** @deprecated use `randomSecretKey` */\n randomPrivateKey: (seed?: Uint8Array) => Uint8Array;\n /** @deprecated use `utils` */\n numberToBytesBE: typeof numberToBytesBE;\n /** @deprecated use `utils` */\n bytesToNumberBE: typeof bytesToNumberBE;\n /** @deprecated use `modular` */\n mod: typeof mod;\n };\n lengths: CurveLengths;\n};\n/**\n * Schnorr signatures over secp256k1.\n * https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki\n * @example\n * ```js\n * import { schnorr } from '@noble/curves/secp256k1';\n * const { secretKey, publicKey } = schnorr.keygen();\n * // const publicKey = schnorr.getPublicKey(secretKey);\n * const msg = new TextEncoder().encode('hello');\n * const sig = schnorr.sign(msg, secretKey);\n * const isValid = schnorr.verify(sig, msg, publicKey);\n * ```\n */\nexport const schnorr: SecpSchnorr = /* @__PURE__ */ (() => {\n const size = 32;\n const seedLength = 48;\n const randomSecretKey = (seed = randomBytes(seedLength)): Uint8Array => {\n return mapHashToField(seed, secp256k1_CURVE.n);\n };\n // TODO: remove\n secp256k1.utils.randomSecretKey;\n function keygen(seed?: Uint8Array) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: schnorrGetPublicKey(secretKey) };\n }\n return {\n keygen,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n Point: Pointk1,\n utils: {\n randomSecretKey: randomSecretKey,\n randomPrivateKey: randomSecretKey,\n taggedHash,\n\n // TODO: remove\n lift_x,\n pointToBytes,\n numberToBytesBE,\n bytesToNumberBE,\n mod,\n },\n lengths: {\n secretKey: size,\n publicKey: size,\n publicKeyHasPrefix: false,\n signature: size * 2,\n seed: seedLength,\n },\n };\n})();\n\nconst isoMap = /* @__PURE__ */ (() =>\n isogenyMap(\n Fpk1,\n [\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))) as [bigint[], bigint[], bigint[], bigint[]]\n ))();\nconst mapSWU = /* @__PURE__ */ (() =>\n mapToCurveSimpleSWU(Fpk1, {\n A: BigInt('0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533'),\n B: BigInt('1771'),\n Z: Fpk1.create(BigInt('-11')),\n }))();\n\n/** Hashing / encoding to secp256k1 points / field. RFC 9380 methods. */\nexport const secp256k1_hasher: H2CHasher = /* @__PURE__ */ (() =>\n createHasher(\n secp256k1.Point,\n (scalars: bigint[]) => {\n const { x, y } = mapSWU(Fpk1.create(scalars[0]));\n return isoMap(x, y);\n },\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 ))();\n\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const hashToCurve: H2CMethod = /* @__PURE__ */ (() =>\n secp256k1_hasher.hashToCurve)();\n\n/** @deprecated use `import { secp256k1_hasher } from '@noble/curves/secp256k1.js';` */\nexport const encodeToCurve: H2CMethod = /* @__PURE__ */ (() =>\n secp256k1_hasher.encodeToCurve)();\n", "/**\n * Deprecated module: moved from curves/abstract/utils.js to curves/utils.js\n * @module\n */\nimport * as u from '../utils.ts';\n\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport type Hex = u.Hex;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport type PrivKey = u.PrivKey;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport type CHash = u.CHash;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport type FHash = u.FHash;\n\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const abytes: typeof u.abytes = u.abytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const anumber: typeof u.anumber = u.anumber;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bytesToHex: typeof u.bytesToHex = u.bytesToHex;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bytesToUtf8: typeof u.bytesToUtf8 = u.bytesToUtf8;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const concatBytes: typeof u.concatBytes = u.concatBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const hexToBytes: typeof u.hexToBytes = u.hexToBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const isBytes: typeof u.isBytes = u.isBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const randomBytes: typeof u.randomBytes = u.randomBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const utf8ToBytes: typeof u.utf8ToBytes = u.utf8ToBytes;\n\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const abool: typeof u.abool = u.abool;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const numberToHexUnpadded: typeof u.numberToHexUnpadded = u.numberToHexUnpadded;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const hexToNumber: typeof u.hexToNumber = u.hexToNumber;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bytesToNumberBE: typeof u.bytesToNumberBE = u.bytesToNumberBE;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bytesToNumberLE: typeof u.bytesToNumberLE = u.bytesToNumberLE;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const numberToBytesBE: typeof u.numberToBytesBE = u.numberToBytesBE;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const numberToBytesLE: typeof u.numberToBytesLE = u.numberToBytesLE;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const numberToVarBytesBE: typeof u.numberToVarBytesBE = u.numberToVarBytesBE;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const ensureBytes: typeof u.ensureBytes = u.ensureBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const equalBytes: typeof u.equalBytes = u.equalBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const copyBytes: typeof u.copyBytes = u.copyBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const asciiToBytes: typeof u.asciiToBytes = u.asciiToBytes;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const inRange: typeof u.inRange = u.inRange;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const aInRange: typeof u.aInRange = u.aInRange;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bitLen: typeof u.bitLen = u.bitLen;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bitGet: typeof u.bitGet = u.bitGet;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bitSet: typeof u.bitSet = u.bitSet;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const bitMask: typeof u.bitMask = u.bitMask;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const createHmacDrbg: typeof u.createHmacDrbg = u.createHmacDrbg;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const notImplemented: typeof u.notImplemented = u.notImplemented;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const memoized: typeof u.memoized = u.memoized;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const validateObject: typeof u.validateObject = u.validateObject;\n/** @deprecated moved to `@noble/curves/utils.js` */\nexport const isHash: typeof u.isHash = u.isHash;\n", "import { sha512 } from '@xrplf/isomorphic/sha512'\nimport { bytesToNumberBE } from '@noble/curves/abstract/utils'\n\ntype Input = Uint8Array | number[] | string\n\nexport default class Sha512 {\n // instantiate empty sha512 hash\n hash = sha512.create()\n\n static half(input: Input): Uint8Array {\n return new Sha512().add(input).first256()\n }\n\n add(bytes: Input): this {\n this.hash.update(bytes)\n return this\n }\n\n addU32(i: number): this {\n const buffer = new Uint8Array(4)\n new DataView(buffer.buffer).setUint32(0, i)\n return this.add(buffer)\n }\n\n finish(): Uint8Array {\n return this.hash.digest()\n }\n\n first256(): Uint8Array {\n return this.finish().slice(0, 32)\n }\n\n first256BigInt(): bigint {\n return bytesToNumberBE(this.first256())\n }\n}\n", "import { secp256k1 } from '@noble/curves/secp256k1'\n\nimport Sha512 from '../../utils/Sha512'\n\nconst ZERO = BigInt(0)\n\nfunction deriveScalar(bytes: Uint8Array, discrim?: number): bigint {\n const order = secp256k1.CURVE.n\n for (let i = 0; i <= 0xffff_ffff; i++) {\n // We hash the bytes to find a 256-bit number, looping until we are sure it\n // is less than the order of the curve.\n const hasher = new Sha512().add(bytes)\n // If the optional discriminator index was passed in, update the hash.\n if (discrim !== undefined) {\n hasher.addU32(discrim)\n }\n hasher.addU32(i)\n const key = hasher.first256BigInt()\n /* istanbul ignore else */\n if (key > ZERO && key < order) {\n return key\n }\n }\n // This error is practically impossible to reach.\n // The order of the curve describes the (finite) amount of points on the curve\n // https://github.com/indutny/elliptic/blob/master/lib/elliptic/curves.js#L182\n // How often will an (essentially) random number generated by Sha512 be larger than that?\n // There's 2^32 chances (the for loop) to get a number smaller than the order,\n // and it's rare that you'll even get past the first loop iteration.\n // Note that in TypeScript we actually need the throw, otherwise the function signature would be bigint | undefined\n //\n /* istanbul ignore next */\n throw new Error('impossible unicorn ;)')\n}\n\n/**\n * @param seed - Bytes.\n * @param [opts] - Object.\n * @param [opts.accountIndex=0] - The account number to generate.\n * @param [opts.validator=false] - Generate root key-pair,\n * as used by validators.\n * @returns {bigint} 256 bit scalar value.\n *\n */\nexport function derivePrivateKey(\n seed: Uint8Array,\n opts: {\n validator?: boolean\n accountIndex?: number\n } = {},\n): bigint {\n const root = opts.validator\n const order = secp256k1.CURVE.n\n\n // This private generator represents the `root` private key, and is what's\n // used by validators for signing when a keypair is generated from a seed.\n const privateGen = deriveScalar(seed)\n if (root) {\n // As returned by validation_create for a given seed\n return privateGen\n }\n const publicGen =\n secp256k1.ProjectivePoint.BASE.multiply(privateGen).toRawBytes(true)\n // A seed can generate many keypairs as a function of the seed and a uint32.\n // Almost everyone just uses the first account, `0`.\n const accountIndex = opts.accountIndex || 0\n return (deriveScalar(publicGen, accountIndex) + privateGen) % order\n}\n\nexport function accountPublicFromPublicGenerator(publicGenBytes: Uint8Array) {\n const rootPubPoint = secp256k1.ProjectivePoint.fromHex(publicGenBytes)\n const scalar = deriveScalar(publicGenBytes, 0)\n const point = secp256k1.ProjectivePoint.BASE.multiply(scalar)\n const offset = rootPubPoint.add(point)\n return offset.toRawBytes(true)\n}\n", "const assertHelper: {\n ok: (cond: boolean, message?: string) => asserts cond is true\n} = {\n ok(cond, message): asserts cond is true {\n if (!cond) {\n throw new Error(message)\n }\n },\n}\n\nexport default assertHelper\n", "import type { Algorithm, HexString, KeyType } from '../types'\n\nenum Prefix {\n NONE = -1,\n ED25519 = 0xed,\n SECP256K1_PUB_X = 0x02,\n SECP256K1_PUB_X_ODD_Y = 0x03,\n SECP256K1_PUB_XY = 0x04,\n SECP256K1_PRIVATE = 0x00,\n}\n\ntype CompositeKey = `${KeyType}_${Prefix}_${number}`\n\n/**\n * | Curve | Type | Prefix | Length | Description | Algorithm |\n * |-----------|-------------|:------:|:------:|-------------------------------------------------------|----------------:|\n * | ed25519 | Private | 0xED | 33 | prefix + Uint256LE (0 < n < order ) | ed25519 |\n * | ed25519 | Public | 0xED | 33 | prefix + 32 y-bytes | ed25519 |\n * | secp256k1 | Public (1) | 0x02 | 33 | prefix + 32 x-bytes | ecdsa-secp256k1 |\n * | secp256k1 | Public (2) | 0x03 | 33 | prefix + 32 x-bytes (y is odd) | ecdsa-secp256k1 |\n * | secp256k1 | Public (3) | 0x04 | 65 | prefix + 32 x-bytes + 32 y-bytes | ecdsa-secp256k1 |\n * | secp256k1 | Private (1) | None | 32 | Uint256BE (0 < n < order) | ecdsa-secp256k1 |\n * | secp256k1 | Private (2) | 0x00 | 33 | prefix + Uint256BE (0 < n < order) | ecdsa-secp256k1 |\n *\n * Note: The 0x00 prefix for secpk256k1 Private (2) essentially 0 pads the number\n * and the interpreted number is the same as 32 bytes.\n */\nconst KEY_TYPES: Record = {\n [`private_${Prefix.NONE}_32`]: 'ecdsa-secp256k1',\n [`private_${Prefix.SECP256K1_PRIVATE}_33`]: 'ecdsa-secp256k1',\n [`private_${Prefix.ED25519}_33`]: 'ed25519',\n [`public_${Prefix.ED25519}_33`]: 'ed25519',\n [`public_${Prefix.SECP256K1_PUB_X}_33`]: 'ecdsa-secp256k1',\n [`public_${Prefix.SECP256K1_PUB_X_ODD_Y}_33`]: 'ecdsa-secp256k1',\n [`public_${Prefix.SECP256K1_PUB_XY}_65`]: 'ecdsa-secp256k1',\n}\n\nfunction getKeyInfo(key: HexString) {\n return {\n prefix: key.length < 2 ? Prefix.NONE : parseInt(key.slice(0, 2), 16),\n len: key.length / 2,\n }\n}\n\nfunction prefixRepr(prefix: Prefix): string {\n return prefix === Prefix.NONE\n ? 'None'\n : `0x${prefix.toString(16).padStart(2, '0')}`\n}\n\nfunction getValidFormatsTable(type: KeyType) {\n // No need overkill with renderTable method\n const padding = 2\n const colWidth = {\n algorithm: 'ecdsa-secp256k1'.length + padding,\n prefix: '0x00'.length + padding,\n }\n\n return Object.entries(KEY_TYPES)\n .filter(([key]) => key.startsWith(type))\n .map(([key, algorithm]) => {\n const [, prefix, length] = key.split('_')\n const paddedAlgo = algorithm.padEnd(colWidth.algorithm)\n const paddedPrefix = prefixRepr(Number(prefix)).padEnd(colWidth.prefix)\n return `${paddedAlgo} - Prefix: ${paddedPrefix} Length: ${length} bytes`\n })\n .join('\\n')\n}\n\nfunction keyError({\n key,\n type,\n prefix,\n len,\n}: {\n key: string\n type: KeyType\n prefix: number\n len: number\n}) {\n const validFormats = getValidFormatsTable(type)\n\n return `invalid_key:\n\nType: ${type}\nKey: ${key}\nPrefix: ${prefixRepr(prefix)} \nLength: ${len} bytes\n\nAcceptable ${type} formats are:\n${validFormats}\n`\n}\n\n/**\n * Determines the algorithm associated with a given key (public/private).\n *\n * @param key - hexadecimal string representation of the key.\n * @param type - whether expected key is public or private\n * @returns Algorithm algorithm for signing/verifying\n * @throws Error when key is invalid\n */\nexport function getAlgorithmFromKey(key: HexString, type: KeyType): Algorithm {\n const { prefix, len } = getKeyInfo(key)\n // Special case back compat support for no prefix\n const usedPrefix = type === 'private' && len === 32 ? Prefix.NONE : prefix\n const algorithm = KEY_TYPES[`${type}_${usedPrefix}_${len}`]\n\n if (!algorithm) {\n throw new Error(keyError({ key, type, len, prefix: usedPrefix }))\n }\n return algorithm\n}\n\nexport function getAlgorithmFromPublicKey(key: HexString): Algorithm {\n return getAlgorithmFromKey(key, 'public')\n}\n\nexport function getAlgorithmFromPrivateKey(key: HexString): Algorithm {\n return getAlgorithmFromKey(key, 'private')\n}\n", "import { numberToBytesBE } from '@noble/curves/abstract/utils'\nimport { secp256k1 as nobleSecp256k1 } from '@noble/curves/secp256k1'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\nimport type {\n DeriveKeyPairOptions,\n HexString,\n SigningScheme,\n} from '../../types'\n\nimport { derivePrivateKey } from './utils'\nimport assert from '../../utils/assert'\nimport Sha512 from '../../utils/Sha512'\n\nconst SECP256K1_PREFIX = '00'\n\nconst secp256k1: SigningScheme = {\n deriveKeypair(\n entropy: Uint8Array,\n options?: DeriveKeyPairOptions,\n ): {\n privateKey: string\n publicKey: string\n } {\n const derived = derivePrivateKey(entropy, options)\n const privateKey =\n SECP256K1_PREFIX + bytesToHex(numberToBytesBE(derived, 32))\n\n const publicKey = bytesToHex(nobleSecp256k1.getPublicKey(derived, true))\n return { privateKey, publicKey }\n },\n\n sign(message: Uint8Array, privateKey: HexString): string {\n // Some callers pass the privateKey with the prefix, others without.\n // @noble/curves will throw if the key is not exactly 32 bytes, so we\n // normalize it before passing to the sign method.\n assert.ok(\n (privateKey.length === 66 && privateKey.startsWith(SECP256K1_PREFIX)) ||\n privateKey.length === 64,\n )\n const normedPrivateKey =\n privateKey.length === 66 ? privateKey.slice(2) : privateKey\n return nobleSecp256k1\n .sign(Sha512.half(message), normedPrivateKey, {\n // \"Canonical\" signatures\n lowS: true,\n // Would fail tests if signatures aren't deterministic\n extraEntropy: undefined,\n })\n .toDERHex(true)\n .toUpperCase()\n },\n\n verify(\n message: Uint8Array,\n signature: HexString,\n publicKey: HexString,\n ): boolean {\n const decoded = nobleSecp256k1.Signature.fromDER(signature)\n return nobleSecp256k1.verify(decoded, Sha512.half(message), publicKey)\n },\n}\n\nexport default secp256k1\n", "/**\n * Twisted Edwards curve. The formula is: ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2.\n * For design rationale of types / exports, see weierstrass module documentation.\n * Untwisted Edwards curves exist, but they aren't used in real-world protocols.\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n _validateObject,\n _abool2 as abool,\n _abytes2 as abytes,\n aInRange,\n bytesToHex,\n bytesToNumberLE,\n concatBytes,\n copyBytes,\n ensureBytes,\n isBytes,\n memoized,\n notImplemented,\n randomBytes as randomBytesWeb,\n type FHash,\n type Hex,\n} from '../utils.ts';\nimport {\n _createCurveFields,\n normalizeZ,\n pippenger,\n wNAF,\n type AffinePoint,\n type BasicCurve,\n type CurveLengths,\n type CurvePoint,\n type CurvePointCons,\n} from './curve.ts';\nimport { Field, type IField, type NLength } from './modular.ts';\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), _8n = BigInt(8);\n\nexport type UVRatio = (u: bigint, v: bigint) => { isValid: boolean; value: bigint };\n\n/** Instance of Extended Point with coordinates in X, Y, Z, T. */\nexport interface EdwardsPoint extends CurvePoint {\n /** extended X coordinate. Different from affine x. */\n readonly X: bigint;\n /** extended Y coordinate. Different from affine y. */\n readonly Y: bigint;\n /** extended Z coordinate */\n readonly Z: bigint;\n /** extended T coordinate */\n readonly T: bigint;\n\n /** @deprecated use `toBytes` */\n toRawBytes(): Uint8Array;\n /** @deprecated use `p.precompute(windowSize)` */\n _setWindowSize(windowSize: number): void;\n /** @deprecated use .X */\n readonly ex: bigint;\n /** @deprecated use .Y */\n readonly ey: bigint;\n /** @deprecated use .Z */\n readonly ez: bigint;\n /** @deprecated use .T */\n readonly et: bigint;\n}\n/** Static methods of Extended Point with coordinates in X, Y, Z, T. */\nexport interface EdwardsPointCons extends CurvePointCons {\n new (X: bigint, Y: bigint, Z: bigint, T: bigint): EdwardsPoint;\n CURVE(): EdwardsOpts;\n fromBytes(bytes: Uint8Array, zip215?: boolean): EdwardsPoint;\n fromHex(hex: Hex, zip215?: boolean): EdwardsPoint;\n /** @deprecated use `import { pippenger } from '@noble/curves/abstract/curve.js';` */\n msm(points: EdwardsPoint[], scalars: bigint[]): EdwardsPoint;\n}\n/** @deprecated use EdwardsPoint */\nexport type ExtPointType = EdwardsPoint;\n/** @deprecated use EdwardsPointCons */\nexport type ExtPointConstructor = EdwardsPointCons;\n\n/**\n * Twisted Edwards curve options.\n *\n * * a: formula param\n * * d: formula param\n * * p: prime characteristic (order) of finite field, in which arithmetics is done\n * * n: order of prime subgroup a.k.a total amount of valid curve points\n * * h: cofactor. h*n is group order; n is subgroup order\n * * Gx: x coordinate of generator point a.k.a. base point\n * * Gy: y coordinate of generator point\n */\nexport type EdwardsOpts = Readonly<{\n p: bigint;\n n: bigint;\n h: bigint;\n a: bigint;\n d: bigint;\n Gx: bigint;\n Gy: bigint;\n}>;\n\n/**\n * Extra curve options for Twisted Edwards.\n *\n * * Fp: redefined Field over curve.p\n * * Fn: redefined Field over curve.n\n * * uvRatio: helper function for decompression, calculating \u221A(u/v)\n */\nexport type EdwardsExtraOpts = Partial<{\n Fp: IField;\n Fn: IField;\n FpFnLE: boolean;\n uvRatio: (u: bigint, v: bigint) => { isValid: boolean; value: bigint };\n}>;\n\n/**\n * EdDSA (Edwards Digital Signature algorithm) options.\n *\n * * hash: hash function used to hash secret keys and messages\n * * adjustScalarBytes: clears bits to get valid field element\n * * domain: Used for hashing\n * * mapToCurve: for hash-to-curve standard\n * * prehash: RFC 8032 pre-hashing of messages to sign() / verify()\n * * randomBytes: function generating random bytes, used for randomSecretKey\n */\nexport type EdDSAOpts = Partial<{\n adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;\n domain: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array;\n mapToCurve: (scalar: bigint[]) => AffinePoint;\n prehash: FHash;\n randomBytes: (bytesLength?: number) => Uint8Array;\n}>;\n\n/**\n * EdDSA (Edwards Digital Signature algorithm) interface.\n *\n * Allows to create and verify signatures, create public and secret keys.\n */\nexport interface EdDSA {\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n getPublicKey: (secretKey: Hex) => Uint8Array;\n sign: (message: Hex, secretKey: Hex, options?: { context?: Hex }) => Uint8Array;\n verify: (\n sig: Hex,\n message: Hex,\n publicKey: Hex,\n options?: { context?: Hex; zip215: boolean }\n ) => boolean;\n Point: EdwardsPointCons;\n utils: {\n randomSecretKey: (seed?: Uint8Array) => Uint8Array;\n isValidSecretKey: (secretKey: Uint8Array) => boolean;\n isValidPublicKey: (publicKey: Uint8Array, zip215?: boolean) => boolean;\n\n /**\n * Converts ed public key to x public key.\n *\n * There is NO `fromMontgomery`:\n * - There are 2 valid ed25519 points for every x25519, with flipped coordinate\n * - Sometimes there are 0 valid ed25519 points, because x25519 *additionally*\n * accepts inputs on the quadratic twist, which can't be moved to ed25519\n *\n * @example\n * ```js\n * const someonesPub = ed25519.getPublicKey(ed25519.utils.randomSecretKey());\n * const aPriv = x25519.utils.randomSecretKey();\n * x25519.getSharedSecret(aPriv, ed25519.utils.toMontgomery(someonesPub))\n * ```\n */\n toMontgomery: (publicKey: Uint8Array) => Uint8Array;\n /**\n * Converts ed secret key to x secret key.\n * @example\n * ```js\n * const someonesPub = x25519.getPublicKey(x25519.utils.randomSecretKey());\n * const aPriv = ed25519.utils.randomSecretKey();\n * x25519.getSharedSecret(ed25519.utils.toMontgomerySecret(aPriv), someonesPub)\n * ```\n */\n toMontgomerySecret: (privateKey: Uint8Array) => Uint8Array;\n getExtendedPublicKey: (key: Hex) => {\n head: Uint8Array;\n prefix: Uint8Array;\n scalar: bigint;\n point: EdwardsPoint;\n pointBytes: Uint8Array;\n };\n\n /** @deprecated use `randomSecretKey` */\n randomPrivateKey: (seed?: Uint8Array) => Uint8Array;\n /** @deprecated use `point.precompute()` */\n precompute: (windowSize?: number, point?: EdwardsPoint) => EdwardsPoint;\n };\n lengths: CurveLengths;\n}\n\nfunction isEdValidXY(Fp: IField, CURVE: EdwardsOpts, x: bigint, y: bigint): boolean {\n const x2 = Fp.sqr(x);\n const y2 = Fp.sqr(y);\n const left = Fp.add(Fp.mul(CURVE.a, x2), y2);\n const right = Fp.add(Fp.ONE, Fp.mul(CURVE.d, Fp.mul(x2, y2)));\n return Fp.eql(left, right);\n}\n\nexport function edwards(params: EdwardsOpts, extraOpts: EdwardsExtraOpts = {}): EdwardsPointCons {\n const validated = _createCurveFields('edwards', params, extraOpts, extraOpts.FpFnLE);\n const { Fp, Fn } = validated;\n let CURVE = validated.CURVE as EdwardsOpts;\n const { h: cofactor } = CURVE;\n _validateObject(extraOpts, {}, { uvRatio: 'function' });\n\n // Important:\n // There are some places where Fp.BYTES is used instead of nByteLength.\n // So far, everything has been tested with curves of Fp.BYTES == nByteLength.\n // TODO: test and find curves which behave otherwise.\n const MASK = _2n << (BigInt(Fn.BYTES * 8) - _1n);\n const modP = (n: bigint) => Fp.create(n); // Function overrides\n\n // sqrt(u/v)\n const uvRatio =\n extraOpts.uvRatio ||\n ((u: bigint, v: bigint) => {\n try {\n return { isValid: true, value: Fp.sqrt(Fp.div(u, v)) };\n } catch (e) {\n return { isValid: false, value: _0n };\n }\n });\n\n // Validate whether the passed curve params are valid.\n // equation ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2 should work for generator point.\n if (!isEdValidXY(Fp, CURVE, CURVE.Gx, CURVE.Gy))\n throw new Error('bad curve params: generator point');\n\n /**\n * Asserts coordinate is valid: 0 <= n < MASK.\n * Coordinates >= Fp.ORDER are allowed for zip215.\n */\n function acoord(title: string, n: bigint, banZero = false) {\n const min = banZero ? _1n : _0n;\n aInRange('coordinate ' + title, n, min, MASK);\n return n;\n }\n\n function aextpoint(other: unknown) {\n if (!(other instanceof Point)) throw new Error('ExtendedPoint expected');\n }\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n const toAffineMemo = memoized((p: Point, iz?: bigint): AffinePoint => {\n const { X, Y, Z } = p;\n const is0 = p.is0();\n if (iz == null) iz = is0 ? _8n : (Fp.inv(Z) as bigint); // 8 was chosen arbitrarily\n const x = modP(X * iz);\n const y = modP(Y * iz);\n const zz = Fp.mul(Z, iz);\n if (is0) return { x: _0n, y: _1n };\n if (zz !== _1n) throw new Error('invZ was invalid');\n return { x, y };\n });\n const assertValidMemo = memoized((p: Point) => {\n const { a, d } = CURVE;\n if (p.is0()) throw new Error('bad point: ZERO'); // TODO: optimize, with vars below?\n // Equation in affine coordinates: ax\u00B2 + y\u00B2 = 1 + dx\u00B2y\u00B2\n // Equation in projective coordinates (X/Z, Y/Z, Z): (aX\u00B2 + Y\u00B2)Z\u00B2 = Z\u2074 + dX\u00B2Y\u00B2\n const { X, Y, Z, T } = p;\n const X2 = modP(X * X); // X\u00B2\n const Y2 = modP(Y * Y); // Y\u00B2\n const Z2 = modP(Z * Z); // Z\u00B2\n const Z4 = modP(Z2 * Z2); // Z\u2074\n const aX2 = modP(X2 * a); // aX\u00B2\n const left = modP(Z2 * modP(aX2 + Y2)); // (aX\u00B2 + Y\u00B2)Z\u00B2\n const right = modP(Z4 + modP(d * modP(X2 * Y2))); // Z\u2074 + dX\u00B2Y\u00B2\n if (left !== right) throw new Error('bad point: equation left != right (1)');\n // In Extended coordinates we also have T, which is x*y=T/Z: check X*Y == Z*T\n const XY = modP(X * Y);\n const ZT = modP(Z * T);\n if (XY !== ZT) throw new Error('bad point: equation left != right (2)');\n return true;\n });\n\n // Extended Point works in extended coordinates: (X, Y, Z, T) \u220B (x=X/Z, y=Y/Z, T=xy).\n // https://en.wikipedia.org/wiki/Twisted_Edwards_curve#Extended_coordinates\n class Point implements EdwardsPoint {\n // base / generator point\n static readonly BASE = new Point(CURVE.Gx, CURVE.Gy, _1n, modP(CURVE.Gx * CURVE.Gy));\n // zero / infinity / identity point\n static readonly ZERO = new Point(_0n, _1n, _1n, _0n); // 0, 1, 1, 0\n // math field\n static readonly Fp = Fp;\n // scalar field\n static readonly Fn = Fn;\n\n readonly X: bigint;\n readonly Y: bigint;\n readonly Z: bigint;\n readonly T: bigint;\n\n constructor(X: bigint, Y: bigint, Z: bigint, T: bigint) {\n this.X = acoord('x', X);\n this.Y = acoord('y', Y);\n this.Z = acoord('z', Z, true);\n this.T = acoord('t', T);\n Object.freeze(this);\n }\n\n static CURVE(): EdwardsOpts {\n return CURVE;\n }\n\n static fromAffine(p: AffinePoint): Point {\n if (p instanceof Point) throw new Error('extended point not allowed');\n const { x, y } = p || {};\n acoord('x', x);\n acoord('y', y);\n return new Point(x, y, _1n, modP(x * y));\n }\n\n // Uses algo from RFC8032 5.1.3.\n static fromBytes(bytes: Uint8Array, zip215 = false): Point {\n const len = Fp.BYTES;\n const { a, d } = CURVE;\n bytes = copyBytes(abytes(bytes, len, 'point'));\n abool(zip215, 'zip215');\n const normed = copyBytes(bytes); // copy again, we'll manipulate it\n const lastByte = bytes[len - 1]; // select last byte\n normed[len - 1] = lastByte & ~0x80; // clear last bit\n const y = bytesToNumberLE(normed);\n\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // RFC8032 prohibits >= p, but ZIP215 doesn't\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n const max = zip215 ? MASK : Fp.ORDER;\n aInRange('point.y', y, _0n, max);\n\n // Ed25519: x\u00B2 = (y\u00B2-1)/(dy\u00B2+1) mod p. Ed448: x\u00B2 = (y\u00B2-1)/(dy\u00B2-1) mod p. Generic case:\n // ax\u00B2+y\u00B2=1+dx\u00B2y\u00B2 => y\u00B2-1=dx\u00B2y\u00B2-ax\u00B2 => y\u00B2-1=x\u00B2(dy\u00B2-a) => x\u00B2=(y\u00B2-1)/(dy\u00B2-a)\n const y2 = modP(y * y); // denominator is always non-0 mod p.\n const u = modP(y2 - _1n); // u = y\u00B2 - 1\n const v = modP(d * y2 - a); // v = d y\u00B2 + 1.\n let { isValid, value: x } = uvRatio(u, v); // \u221A(u/v)\n if (!isValid) throw new Error('bad point: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n; // There are 2 square roots. Use x_0 bit to select proper\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (!zip215 && x === _0n && isLastByteOdd)\n // if x=0 and x_0 = 1, fail\n throw new Error('bad point: x=0 and x_0=1');\n if (isLastByteOdd !== isXOdd) x = modP(-x); // if x_0 != x mod 2, set x = p-x\n return Point.fromAffine({ x, y });\n }\n static fromHex(bytes: Uint8Array, zip215 = false): Point {\n return Point.fromBytes(ensureBytes('point', bytes), zip215);\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n precompute(windowSize: number = 8, isLazy = true) {\n wnaf.createCache(this, windowSize);\n if (!isLazy) this.multiply(_2n); // random number\n return this;\n }\n\n // Useful in fromAffine() - not for fromBytes(), which always created valid points.\n assertValidity(): void {\n assertValidMemo(this);\n }\n\n // Compare one point to another.\n equals(other: Point): boolean {\n aextpoint(other);\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const { X: X2, Y: Y2, Z: Z2 } = other;\n const X1Z2 = modP(X1 * Z2);\n const X2Z1 = modP(X2 * Z1);\n const Y1Z2 = modP(Y1 * Z2);\n const Y2Z1 = modP(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n\n is0(): boolean {\n return this.equals(Point.ZERO);\n }\n\n negate(): Point {\n // Flips point sign to a negative one (-x, y in affine coords)\n return new Point(modP(-this.X), this.Y, this.Z, modP(-this.T));\n }\n\n // Fast algo for doubling Extended Point.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#doubling-dbl-2008-hwcd\n // Cost: 4M + 4S + 1*a + 6add + 1*2.\n double(): Point {\n const { a } = CURVE;\n const { X: X1, Y: Y1, Z: Z1 } = this;\n const A = modP(X1 * X1); // A = X12\n const B = modP(Y1 * Y1); // B = Y12\n const C = modP(_2n * modP(Z1 * Z1)); // C = 2*Z12\n const D = modP(a * A); // D = a*A\n const x1y1 = X1 + Y1;\n const E = modP(modP(x1y1 * x1y1) - A - B); // E = (X1+Y1)2-A-B\n const G = D + B; // G = D+B\n const F = G - C; // F = G-C\n const H = D - B; // H = D-B\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n // Fast algo for adding 2 Extended Points.\n // https://hyperelliptic.org/EFD/g1p/auto-twisted-extended.html#addition-add-2008-hwcd\n // Cost: 9M + 1*a + 1*d + 7add.\n add(other: Point) {\n aextpoint(other);\n const { a, d } = CURVE;\n const { X: X1, Y: Y1, Z: Z1, T: T1 } = this;\n const { X: X2, Y: Y2, Z: Z2, T: T2 } = other;\n const A = modP(X1 * X2); // A = X1*X2\n const B = modP(Y1 * Y2); // B = Y1*Y2\n const C = modP(T1 * d * T2); // C = T1*d*T2\n const D = modP(Z1 * Z2); // D = Z1*Z2\n const E = modP((X1 + Y1) * (X2 + Y2) - A - B); // E = (X1+Y1)*(X2+Y2)-A-B\n const F = D - C; // F = D-C\n const G = D + C; // G = D+C\n const H = modP(B - a * A); // H = B-a*A\n const X3 = modP(E * F); // X3 = E*F\n const Y3 = modP(G * H); // Y3 = G*H\n const T3 = modP(E * H); // T3 = E*H\n const Z3 = modP(F * G); // Z3 = F*G\n return new Point(X3, Y3, Z3, T3);\n }\n\n subtract(other: Point): Point {\n return this.add(other.negate());\n }\n\n // Constant-time multiplication.\n multiply(scalar: bigint): Point {\n // 1 <= scalar < L\n if (!Fn.isValidNot0(scalar)) throw new Error('invalid scalar: expected 1 <= sc < curve.n');\n const { p, f } = wnaf.cached(this, scalar, (p) => normalizeZ(Point, p));\n return normalizeZ(Point, [p, f])[0];\n }\n\n // Non-constant-time multiplication. Uses double-and-add algorithm.\n // It's faster, but should only be used when you don't care about\n // an exposed private key e.g. sig verification.\n // Does NOT allow scalars higher than CURVE.n.\n // Accepts optional accumulator to merge with multiply (important for sparse scalars)\n multiplyUnsafe(scalar: bigint, acc = Point.ZERO): Point {\n // 0 <= scalar < L\n if (!Fn.isValid(scalar)) throw new Error('invalid scalar: expected 0 <= sc < curve.n');\n if (scalar === _0n) return Point.ZERO;\n if (this.is0() || scalar === _1n) return this;\n return wnaf.unsafe(this, scalar, (p) => normalizeZ(Point, p), acc);\n }\n\n // Checks if point is of small order.\n // If you add something to small order point, you will have \"dirty\"\n // point with torsion component.\n // Multiplies point by cofactor and checks if the result is 0.\n isSmallOrder(): boolean {\n return this.multiplyUnsafe(cofactor).is0();\n }\n\n // Multiplies point by curve order and checks if the result is 0.\n // Returns `false` is the point is dirty.\n isTorsionFree(): boolean {\n return wnaf.unsafe(this, CURVE.n).is0();\n }\n\n // Converts Extended point to default (x, y) coordinates.\n // Can accept precomputed Z^-1 - for example, from invertBatch.\n toAffine(invertedZ?: bigint): AffinePoint {\n return toAffineMemo(this, invertedZ);\n }\n\n clearCofactor(): Point {\n if (cofactor === _1n) return this;\n return this.multiplyUnsafe(cofactor);\n }\n\n toBytes(): Uint8Array {\n const { x, y } = this.toAffine();\n // Fp.toBytes() allows non-canonical encoding of y (>= p).\n const bytes = Fp.toBytes(y);\n // Each y has 2 valid points: (x, y), (x,-y).\n // When compressing, it's enough to store y and use the last byte to encode sign of x\n bytes[bytes.length - 1] |= x & _1n ? 0x80 : 0;\n return bytes;\n }\n toHex(): string {\n return bytesToHex(this.toBytes());\n }\n\n toString() {\n return ``;\n }\n\n // TODO: remove\n get ex(): bigint {\n return this.X;\n }\n get ey(): bigint {\n return this.Y;\n }\n get ez(): bigint {\n return this.Z;\n }\n get et(): bigint {\n return this.T;\n }\n static normalizeZ(points: Point[]): Point[] {\n return normalizeZ(Point, points);\n }\n static msm(points: Point[], scalars: bigint[]): Point {\n return pippenger(Point, Fn, points, scalars);\n }\n _setWindowSize(windowSize: number) {\n this.precompute(windowSize);\n }\n toRawBytes(): Uint8Array {\n return this.toBytes();\n }\n }\n const wnaf = new wNAF(Point, Fn.BITS);\n Point.BASE.precompute(8); // Enable precomputes. Slows down first publicKey computation by 20ms.\n return Point;\n}\n\n/**\n * Base class for prime-order points like Ristretto255 and Decaf448.\n * These points eliminate cofactor issues by representing equivalence classes\n * of Edwards curve points.\n */\nexport abstract class PrimeEdwardsPoint>\n implements CurvePoint\n{\n static BASE: PrimeEdwardsPoint;\n static ZERO: PrimeEdwardsPoint;\n static Fp: IField;\n static Fn: IField;\n\n protected readonly ep: EdwardsPoint;\n\n constructor(ep: EdwardsPoint) {\n this.ep = ep;\n }\n\n // Abstract methods that must be implemented by subclasses\n abstract toBytes(): Uint8Array;\n abstract equals(other: T): boolean;\n\n // Static methods that must be implemented by subclasses\n static fromBytes(_bytes: Uint8Array): any {\n notImplemented();\n }\n\n static fromHex(_hex: Hex): any {\n notImplemented();\n }\n\n get x(): bigint {\n return this.toAffine().x;\n }\n get y(): bigint {\n return this.toAffine().y;\n }\n\n // Common implementations\n clearCofactor(): T {\n // no-op for prime-order groups\n return this as any;\n }\n\n assertValidity(): void {\n this.ep.assertValidity();\n }\n\n toAffine(invertedZ?: bigint): AffinePoint {\n return this.ep.toAffine(invertedZ);\n }\n\n toHex(): string {\n return bytesToHex(this.toBytes());\n }\n\n toString(): string {\n return this.toHex();\n }\n\n isTorsionFree(): boolean {\n return true;\n }\n\n isSmallOrder(): boolean {\n return false;\n }\n\n add(other: T): T {\n this.assertSame(other);\n return this.init(this.ep.add(other.ep));\n }\n\n subtract(other: T): T {\n this.assertSame(other);\n return this.init(this.ep.subtract(other.ep));\n }\n\n multiply(scalar: bigint): T {\n return this.init(this.ep.multiply(scalar));\n }\n\n multiplyUnsafe(scalar: bigint): T {\n return this.init(this.ep.multiplyUnsafe(scalar));\n }\n\n double(): T {\n return this.init(this.ep.double());\n }\n\n negate(): T {\n return this.init(this.ep.negate());\n }\n\n precompute(windowSize?: number, isLazy?: boolean): T {\n return this.init(this.ep.precompute(windowSize, isLazy));\n }\n\n // Helper methods\n abstract is0(): boolean;\n protected abstract assertSame(other: T): void;\n protected abstract init(ep: EdwardsPoint): T;\n\n /** @deprecated use `toBytes` */\n toRawBytes(): Uint8Array {\n return this.toBytes();\n }\n}\n\n/**\n * Initializes EdDSA signatures over given Edwards curve.\n */\nexport function eddsa(Point: EdwardsPointCons, cHash: FHash, eddsaOpts: EdDSAOpts = {}): EdDSA {\n if (typeof cHash !== 'function') throw new Error('\"hash\" function param is required');\n _validateObject(\n eddsaOpts,\n {},\n {\n adjustScalarBytes: 'function',\n randomBytes: 'function',\n domain: 'function',\n prehash: 'function',\n mapToCurve: 'function',\n }\n );\n\n const { prehash } = eddsaOpts;\n const { BASE, Fp, Fn } = Point;\n\n const randomBytes = eddsaOpts.randomBytes || randomBytesWeb;\n const adjustScalarBytes = eddsaOpts.adjustScalarBytes || ((bytes: Uint8Array) => bytes);\n const domain =\n eddsaOpts.domain ||\n ((data: Uint8Array, ctx: Uint8Array, phflag: boolean) => {\n abool(phflag, 'phflag');\n if (ctx.length || phflag) throw new Error('Contexts/pre-hash are not supported');\n return data;\n }); // NOOP\n\n // Little-endian SHA512 with modulo n\n function modN_LE(hash: Uint8Array): bigint {\n return Fn.create(bytesToNumberLE(hash)); // Not Fn.fromBytes: it has length limit\n }\n\n // Get the hashed private scalar per RFC8032 5.1.5\n function getPrivateScalar(key: Hex) {\n const len = lengths.secretKey;\n key = ensureBytes('private key', key, len);\n // Hash private key with curve's hash function to produce uniformingly random input\n // Check byte lengths: ensure(64, h(ensure(32, key)))\n const hashed = ensureBytes('hashed private key', cHash(key), 2 * len);\n const head = adjustScalarBytes(hashed.slice(0, len)); // clear first half bits, produce FE\n const prefix = hashed.slice(len, 2 * len); // second half is called key prefix (5.1.6)\n const scalar = modN_LE(head); // The actual private scalar\n return { head, prefix, scalar };\n }\n\n /** Convenience method that creates public key from scalar. RFC8032 5.1.5 */\n function getExtendedPublicKey(secretKey: Hex) {\n const { head, prefix, scalar } = getPrivateScalar(secretKey);\n const point = BASE.multiply(scalar); // Point on Edwards curve aka public key\n const pointBytes = point.toBytes();\n return { head, prefix, scalar, point, pointBytes };\n }\n\n /** Calculates EdDSA pub key. RFC8032 5.1.5. */\n function getPublicKey(secretKey: Hex): Uint8Array {\n return getExtendedPublicKey(secretKey).pointBytes;\n }\n\n // int('LE', SHA512(dom2(F, C) || msgs)) mod N\n function hashDomainToScalar(context: Hex = Uint8Array.of(), ...msgs: Uint8Array[]) {\n const msg = concatBytes(...msgs);\n return modN_LE(cHash(domain(msg, ensureBytes('context', context), !!prehash)));\n }\n\n /** Signs message with privateKey. RFC8032 5.1.6 */\n function sign(msg: Hex, secretKey: Hex, options: { context?: Hex } = {}): Uint8Array {\n msg = ensureBytes('message', msg);\n if (prehash) msg = prehash(msg); // for ed25519ph etc.\n const { prefix, scalar, pointBytes } = getExtendedPublicKey(secretKey);\n const r = hashDomainToScalar(options.context, prefix, msg); // r = dom2(F, C) || prefix || PH(M)\n const R = BASE.multiply(r).toBytes(); // R = rG\n const k = hashDomainToScalar(options.context, R, pointBytes, msg); // R || A || PH(M)\n const s = Fn.create(r + k * scalar); // S = (r + k * s) mod L\n if (!Fn.isValid(s)) throw new Error('sign failed: invalid s'); // 0 <= s < L\n const rs = concatBytes(R, Fn.toBytes(s));\n return abytes(rs, lengths.signature, 'result');\n }\n\n // verification rule is either zip215 or rfc8032 / nist186-5. Consult fromHex:\n const verifyOpts: { context?: Hex; zip215?: boolean } = { zip215: true };\n\n /**\n * Verifies EdDSA signature against message and public key. RFC8032 5.1.7.\n * An extended group equation is checked.\n */\n function verify(sig: Hex, msg: Hex, publicKey: Hex, options = verifyOpts): boolean {\n const { context, zip215 } = options;\n const len = lengths.signature;\n sig = ensureBytes('signature', sig, len);\n msg = ensureBytes('message', msg);\n publicKey = ensureBytes('publicKey', publicKey, lengths.publicKey);\n if (zip215 !== undefined) abool(zip215, 'zip215');\n if (prehash) msg = prehash(msg); // for ed25519ph, etc\n\n const mid = len / 2;\n const r = sig.subarray(0, mid);\n const s = bytesToNumberLE(sig.subarray(mid, len));\n let A, R, SB;\n try {\n // zip215=true is good for consensus-critical apps. =false follows RFC8032 / NIST186-5.\n // zip215=true: 0 <= y < MASK (2^256 for ed25519)\n // zip215=false: 0 <= y < P (2^255-19 for ed25519)\n A = Point.fromBytes(publicKey, zip215);\n R = Point.fromBytes(r, zip215);\n SB = BASE.multiplyUnsafe(s); // 0 <= s < l is done inside\n } catch (error) {\n return false;\n }\n if (!zip215 && A.isSmallOrder()) return false; // zip215 allows public keys of small order\n\n const k = hashDomainToScalar(context, R.toBytes(), A.toBytes(), msg);\n const RkA = R.add(A.multiplyUnsafe(k));\n // Extended group equation\n // [8][S]B = [8]R + [8][k]A'\n return RkA.subtract(SB).clearCofactor().is0();\n }\n\n const _size = Fp.BYTES; // 32 for ed25519, 57 for ed448\n const lengths = {\n secretKey: _size,\n publicKey: _size,\n signature: 2 * _size,\n seed: _size,\n };\n function randomSecretKey(seed = randomBytes(lengths.seed)): Uint8Array {\n return abytes(seed, lengths.seed, 'seed');\n }\n function keygen(seed?: Uint8Array) {\n const secretKey = utils.randomSecretKey(seed);\n return { secretKey, publicKey: getPublicKey(secretKey) };\n }\n function isValidSecretKey(key: Uint8Array): boolean {\n return isBytes(key) && key.length === Fn.BYTES;\n }\n function isValidPublicKey(key: Uint8Array, zip215?: boolean): boolean {\n try {\n return !!Point.fromBytes(key, zip215);\n } catch (error) {\n return false;\n }\n }\n\n const utils = {\n getExtendedPublicKey,\n randomSecretKey,\n isValidSecretKey,\n isValidPublicKey,\n /**\n * Converts ed public key to x public key. Uses formula:\n * - ed25519:\n * - `(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)`\n * - `(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))`\n * - ed448:\n * - `(u, v) = ((y-1)/(y+1), sqrt(156324)*u/x)`\n * - `(x, y) = (sqrt(156324)*u/v, (1+u)/(1-u))`\n */\n toMontgomery(publicKey: Uint8Array): Uint8Array {\n const { y } = Point.fromBytes(publicKey);\n const size = lengths.publicKey;\n const is25519 = size === 32;\n if (!is25519 && size !== 57) throw new Error('only defined for 25519 and 448');\n const u = is25519 ? Fp.div(_1n + y, _1n - y) : Fp.div(y - _1n, y + _1n);\n return Fp.toBytes(u);\n },\n\n toMontgomerySecret(secretKey: Uint8Array): Uint8Array {\n const size = lengths.secretKey;\n abytes(secretKey, size);\n const hashed = cHash(secretKey.subarray(0, size));\n return adjustScalarBytes(hashed).subarray(0, size);\n },\n\n /** @deprecated */\n randomPrivateKey: randomSecretKey,\n /** @deprecated */\n precompute(windowSize = 8, point: EdwardsPoint = Point.BASE): EdwardsPoint {\n return point.precompute(windowSize, false);\n },\n };\n\n return Object.freeze({\n keygen,\n getPublicKey,\n sign,\n verify,\n utils,\n Point,\n lengths,\n });\n}\n\n// TODO: remove everything below\nexport type CurveType = BasicCurve & {\n a: bigint; // curve param a\n d: bigint; // curve param d\n /** @deprecated the property will be removed in next release */\n hash: FHash; // Hashing\n randomBytes?: (bytesLength?: number) => Uint8Array; // CSPRNG\n adjustScalarBytes?: (bytes: Uint8Array) => Uint8Array; // clears bits to get valid field elemtn\n domain?: (data: Uint8Array, ctx: Uint8Array, phflag: boolean) => Uint8Array; // Used for hashing\n uvRatio?: UVRatio; // Ratio \u221A(u/v)\n prehash?: FHash; // RFC 8032 pre-hashing of messages to sign() / verify()\n mapToCurve?: (scalar: bigint[]) => AffinePoint; // for hash-to-curve standard\n};\nexport type CurveTypeWithLength = Readonly>;\nexport type CurveFn = {\n /** @deprecated the property will be removed in next release */\n CURVE: CurveType;\n keygen: EdDSA['keygen'];\n getPublicKey: EdDSA['getPublicKey'];\n sign: EdDSA['sign'];\n verify: EdDSA['verify'];\n Point: EdwardsPointCons;\n /** @deprecated use `Point` */\n ExtendedPoint: EdwardsPointCons;\n utils: EdDSA['utils'];\n lengths: CurveLengths;\n};\nexport type EdComposed = {\n CURVE: EdwardsOpts;\n curveOpts: EdwardsExtraOpts;\n hash: FHash;\n eddsaOpts: EdDSAOpts;\n};\nfunction _eddsa_legacy_opts_to_new(c: CurveTypeWithLength): EdComposed {\n const CURVE: EdwardsOpts = {\n a: c.a,\n d: c.d,\n p: c.Fp.ORDER,\n n: c.n,\n h: c.h,\n Gx: c.Gx,\n Gy: c.Gy,\n };\n const Fp = c.Fp;\n const Fn = Field(CURVE.n, c.nBitLength, true);\n const curveOpts: EdwardsExtraOpts = { Fp, Fn, uvRatio: c.uvRatio };\n const eddsaOpts: EdDSAOpts = {\n randomBytes: c.randomBytes,\n adjustScalarBytes: c.adjustScalarBytes,\n domain: c.domain,\n prehash: c.prehash,\n mapToCurve: c.mapToCurve,\n };\n return { CURVE, curveOpts, hash: c.hash, eddsaOpts };\n}\nfunction _eddsa_new_output_to_legacy(c: CurveTypeWithLength, eddsa: EdDSA): CurveFn {\n const Point = eddsa.Point;\n const legacy = Object.assign({}, eddsa, {\n ExtendedPoint: Point,\n CURVE: c,\n nBitLength: Point.Fn.BITS,\n nByteLength: Point.Fn.BYTES,\n });\n return legacy;\n}\n// TODO: remove. Use eddsa\nexport function twistedEdwards(c: CurveTypeWithLength): CurveFn {\n const { CURVE, curveOpts, hash, eddsaOpts } = _eddsa_legacy_opts_to_new(c);\n const Point = edwards(CURVE, curveOpts);\n const EDDSA = eddsa(Point, hash, eddsaOpts);\n return _eddsa_new_output_to_legacy(c, EDDSA);\n}\n", "/**\n * Montgomery curve methods. It's not really whole montgomery curve,\n * just bunch of very specific methods for X25519 / X448 from\n * [RFC 7748](https://www.rfc-editor.org/rfc/rfc7748)\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport {\n _validateObject,\n abytes,\n aInRange,\n bytesToNumberLE,\n ensureBytes,\n numberToBytesLE,\n randomBytes,\n} from '../utils.ts';\nimport type { CurveLengths } from './curve.ts';\nimport { mod } from './modular.ts';\n\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\ntype Hex = string | Uint8Array;\n\nexport type CurveType = {\n P: bigint; // finite field prime\n type: 'x25519' | 'x448';\n adjustScalarBytes: (bytes: Uint8Array) => Uint8Array;\n powPminus2: (x: bigint) => bigint;\n randomBytes?: (bytesLength?: number) => Uint8Array;\n};\n\nexport type MontgomeryECDH = {\n scalarMult: (scalar: Hex, u: Hex) => Uint8Array;\n scalarMultBase: (scalar: Hex) => Uint8Array;\n getSharedSecret: (secretKeyA: Hex, publicKeyB: Hex) => Uint8Array;\n getPublicKey: (secretKey: Hex) => Uint8Array;\n utils: {\n randomSecretKey: () => Uint8Array;\n /** @deprecated use `randomSecretKey` */\n randomPrivateKey: () => Uint8Array;\n };\n GuBytes: Uint8Array;\n lengths: CurveLengths;\n keygen: (seed?: Uint8Array) => { secretKey: Uint8Array; publicKey: Uint8Array };\n};\nexport type CurveFn = MontgomeryECDH;\n\nfunction validateOpts(curve: CurveType) {\n _validateObject(curve, {\n adjustScalarBytes: 'function',\n powPminus2: 'function',\n });\n return Object.freeze({ ...curve } as const);\n}\n\nexport function montgomery(curveDef: CurveType): MontgomeryECDH {\n const CURVE = validateOpts(curveDef);\n const { P, type, adjustScalarBytes, powPminus2, randomBytes: rand } = CURVE;\n const is25519 = type === 'x25519';\n if (!is25519 && type !== 'x448') throw new Error('invalid type');\n const randomBytes_ = rand || randomBytes;\n\n const montgomeryBits = is25519 ? 255 : 448;\n const fieldLen = is25519 ? 32 : 56;\n const Gu = is25519 ? BigInt(9) : BigInt(5);\n // RFC 7748 #5:\n // The constant a24 is (486662 - 2) / 4 = 121665 for curve25519/X25519 and\n // (156326 - 2) / 4 = 39081 for curve448/X448\n // const a = is25519 ? 156326n : 486662n;\n const a24 = is25519 ? BigInt(121665) : BigInt(39081);\n // RFC: x25519 \"the resulting integer is of the form 2^254 plus\n // eight times a value between 0 and 2^251 - 1 (inclusive)\"\n // x448: \"2^447 plus four times a value between 0 and 2^445 - 1 (inclusive)\"\n const minScalar = is25519 ? _2n ** BigInt(254) : _2n ** BigInt(447);\n const maxAdded = is25519\n ? BigInt(8) * _2n ** BigInt(251) - _1n\n : BigInt(4) * _2n ** BigInt(445) - _1n;\n const maxScalar = minScalar + maxAdded + _1n; // (inclusive)\n const modP = (n: bigint) => mod(n, P);\n const GuBytes = encodeU(Gu);\n function encodeU(u: bigint): Uint8Array {\n return numberToBytesLE(modP(u), fieldLen);\n }\n function decodeU(u: Hex): bigint {\n const _u = ensureBytes('u coordinate', u, fieldLen);\n // RFC: When receiving such an array, implementations of X25519\n // (but not X448) MUST mask the most significant bit in the final byte.\n if (is25519) _u[31] &= 127; // 0b0111_1111\n // RFC: Implementations MUST accept non-canonical values and process them as\n // if they had been reduced modulo the field prime. The non-canonical\n // values are 2^255 - 19 through 2^255 - 1 for X25519 and 2^448 - 2^224\n // - 1 through 2^448 - 1 for X448.\n return modP(bytesToNumberLE(_u));\n }\n function decodeScalar(scalar: Hex): bigint {\n return bytesToNumberLE(adjustScalarBytes(ensureBytes('scalar', scalar, fieldLen)));\n }\n function scalarMult(scalar: Hex, u: Hex): Uint8Array {\n const pu = montgomeryLadder(decodeU(u), decodeScalar(scalar));\n // Some public keys are useless, of low-order. Curve author doesn't think\n // it needs to be validated, but we do it nonetheless.\n // https://cr.yp.to/ecdh.html#validate\n if (pu === _0n) throw new Error('invalid private or public key received');\n return encodeU(pu);\n }\n // Computes public key from private. By doing scalar multiplication of base point.\n function scalarMultBase(scalar: Hex): Uint8Array {\n return scalarMult(scalar, GuBytes);\n }\n\n // cswap from RFC7748 \"example code\"\n function cswap(swap: bigint, x_2: bigint, x_3: bigint): { x_2: bigint; x_3: bigint } {\n // dummy = mask(swap) AND (x_2 XOR x_3)\n // Where mask(swap) is the all-1 or all-0 word of the same length as x_2\n // and x_3, computed, e.g., as mask(swap) = 0 - swap.\n const dummy = modP(swap * (x_2 - x_3));\n x_2 = modP(x_2 - dummy); // x_2 = x_2 XOR dummy\n x_3 = modP(x_3 + dummy); // x_3 = x_3 XOR dummy\n return { x_2, x_3 };\n }\n\n /**\n * Montgomery x-only multiplication ladder.\n * @param pointU u coordinate (x) on Montgomery Curve 25519\n * @param scalar by which the point would be multiplied\n * @returns new Point on Montgomery curve\n */\n function montgomeryLadder(u: bigint, scalar: bigint): bigint {\n aInRange('u', u, _0n, P);\n aInRange('scalar', scalar, minScalar, maxScalar);\n const k = scalar;\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n for (let t = BigInt(montgomeryBits - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n swap = k_t;\n\n const A = x_2 + z_2;\n const AA = modP(A * A);\n const B = x_2 - z_2;\n const BB = modP(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = modP(D * A);\n const CB = modP(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = modP(dacb * dacb);\n z_3 = modP(x_1 * modP(da_cb * da_cb));\n x_2 = modP(AA * BB);\n z_2 = modP(E * (AA + modP(a24 * E)));\n }\n ({ x_2, x_3 } = cswap(swap, x_2, x_3));\n ({ x_2: z_2, x_3: z_3 } = cswap(swap, z_2, z_3));\n const z2 = powPminus2(z_2); // `Fp.pow(x, P - _2n)` is much slower equivalent\n return modP(x_2 * z2); // Return x_2 * (z_2^(p - 2))\n }\n const lengths = {\n secretKey: fieldLen,\n publicKey: fieldLen,\n seed: fieldLen,\n };\n const randomSecretKey = (seed = randomBytes_(fieldLen)) => {\n abytes(seed, lengths.seed);\n return seed;\n };\n function keygen(seed?: Uint8Array) {\n const secretKey = randomSecretKey(seed);\n return { secretKey, publicKey: scalarMultBase(secretKey) };\n }\n const utils = {\n randomSecretKey,\n randomPrivateKey: randomSecretKey,\n };\n return {\n keygen,\n getSharedSecret: (secretKey: Hex, publicKey: Hex) => scalarMult(secretKey, publicKey),\n getPublicKey: (secretKey: Hex): Uint8Array => scalarMultBase(secretKey),\n scalarMult,\n scalarMultBase,\n utils,\n GuBytes: GuBytes.slice(),\n lengths,\n };\n}\n", "/**\n * ed25519 Twisted Edwards curve with following addons:\n * - X25519 ECDH\n * - Ristretto cofactor elimination\n * - Elligator hash-to-group / point indistinguishability\n * @module\n */\n/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */\nimport { sha512 } from '@noble/hashes/sha2.js';\nimport { abytes, concatBytes, utf8ToBytes } from '@noble/hashes/utils.js';\nimport { pippenger, type AffinePoint } from './abstract/curve.ts';\nimport {\n PrimeEdwardsPoint,\n twistedEdwards,\n type CurveFn,\n type EdwardsOpts,\n type EdwardsPoint,\n} from './abstract/edwards.ts';\nimport {\n _DST_scalar,\n createHasher,\n expand_message_xmd,\n type H2CHasher,\n type H2CHasherBase,\n type H2CMethod,\n type htfBasicOpts,\n} from './abstract/hash-to-curve.ts';\nimport {\n Field,\n FpInvertBatch,\n FpSqrtEven,\n isNegativeLE,\n mod,\n pow2,\n type IField,\n} from './abstract/modular.ts';\nimport { montgomery, type MontgomeryECDH as XCurveFn } from './abstract/montgomery.ts';\nimport { bytesToNumberLE, ensureBytes, equalBytes, type Hex } from './utils.ts';\n\n// prettier-ignore\nconst _0n = /* @__PURE__ */ BigInt(0), _1n = BigInt(1), _2n = BigInt(2), _3n = BigInt(3);\n// prettier-ignore\nconst _5n = BigInt(5), _8n = BigInt(8);\n\n// P = 2n**255n-19n\nconst ed25519_CURVE_p = BigInt(\n '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed'\n);\n\n// N = 2n**252n + 27742317777372353535851937790883648493n\n// a = Fp.create(BigInt(-1))\n// d = -121665/121666 a.k.a. Fp.neg(121665 * Fp.inv(121666))\nconst ed25519_CURVE: EdwardsOpts = /* @__PURE__ */ (() => ({\n p: ed25519_CURVE_p,\n n: BigInt('0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed'),\n h: _8n,\n a: BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec'),\n d: BigInt('0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3'),\n Gx: BigInt('0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a'),\n Gy: BigInt('0x6666666666666666666666666666666666666666666666666666666666666658'),\n}))();\n\nfunction ed25519_pow_2_252_3(x: bigint) {\n // prettier-ignore\n const _10n = BigInt(10), _20n = BigInt(20), _40n = BigInt(40), _80n = BigInt(80);\n const P = ed25519_CURVE_p;\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P; // x^3, 11\n const b4 = (pow2(b2, _2n, P) * b2) % P; // x^15, 1111\n const b5 = (pow2(b4, _1n, P) * x) % P; // x^31\n const b10 = (pow2(b5, _5n, P) * b5) % P;\n const b20 = (pow2(b10, _10n, P) * b10) % P;\n const b40 = (pow2(b20, _20n, P) * b20) % P;\n const b80 = (pow2(b40, _40n, P) * b40) % P;\n const b160 = (pow2(b80, _80n, P) * b80) % P;\n const b240 = (pow2(b160, _80n, P) * b80) % P;\n const b250 = (pow2(b240, _10n, P) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n, P) * x) % P;\n // ^ To pow to (p+3)/8, multiply it by x.\n return { pow_p_5_8, b2 };\n}\n\nfunction adjustScalarBytes(bytes: Uint8Array): Uint8Array {\n // Section 5: For X25519, in order to decode 32 random bytes as an integer scalar,\n // set the three least significant bits of the first byte\n bytes[0] &= 248; // 0b1111_1000\n // and the most significant bit of the last to zero,\n bytes[31] &= 127; // 0b0111_1111\n // set the second most significant bit of the last byte to 1\n bytes[31] |= 64; // 0b0100_0000\n return bytes;\n}\n\n// \u221A(-1) aka \u221A(a) aka 2^((p-1)/4)\n// Fp.sqrt(Fp.neg(1))\nconst ED25519_SQRT_M1 = /* @__PURE__ */ BigInt(\n '19681161376707505956807079304988542015446066515923890162744021073123829784752'\n);\n// sqrt(u/v)\nfunction uvRatio(u: bigint, v: bigint): { isValid: boolean; value: bigint } {\n const P = ed25519_CURVE_p;\n const v3 = mod(v * v * v, P); // v\u00B3\n const v7 = mod(v3 * v3 * v, P); // v\u2077\n // (p+3)/8 and (p-5)/8\n const pow = ed25519_pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow, P); // (uv\u00B3)(uv\u2077)^(p-5)/8\n const vx2 = mod(v * x * x, P); // vx\u00B2\n const root1 = x; // First root candidate\n const root2 = mod(x * ED25519_SQRT_M1, P); // Second root candidate\n const useRoot1 = vx2 === u; // If vx\u00B2 = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u, P); // If vx\u00B2 = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * ED25519_SQRT_M1, P); // There is no valid root, vx\u00B2 = -u\u221A(-1)\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if (isNegativeLE(x, P)) x = mod(-x, P);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\n\nconst Fp = /* @__PURE__ */ (() => Field(ed25519_CURVE.p, { isLE: true }))();\nconst Fn = /* @__PURE__ */ (() => Field(ed25519_CURVE.n, { isLE: true }))();\n\nconst ed25519Defaults = /* @__PURE__ */ (() => ({\n ...ed25519_CURVE,\n Fp,\n hash: sha512,\n adjustScalarBytes,\n // dom2\n // Ratio of u to v. Allows us to combine inversion and square root. Uses algo from RFC8032 5.1.3.\n // Constant-time, u/\u221Av\n uvRatio,\n}))();\n\n/**\n * ed25519 curve with EdDSA signatures.\n * @example\n * import { ed25519 } from '@noble/curves/ed25519';\n * const { secretKey, publicKey } = ed25519.keygen();\n * const msg = new TextEncoder().encode('hello');\n * const sig = ed25519.sign(msg, priv);\n * ed25519.verify(sig, msg, pub); // Default mode: follows ZIP215\n * ed25519.verify(sig, msg, pub, { zip215: false }); // RFC8032 / FIPS 186-5\n */\nexport const ed25519: CurveFn = /* @__PURE__ */ (() => twistedEdwards(ed25519Defaults))();\n\nfunction ed25519_domain(data: Uint8Array, ctx: Uint8Array, phflag: boolean) {\n if (ctx.length > 255) throw new Error('Context is too big');\n return concatBytes(\n utf8ToBytes('SigEd25519 no Ed25519 collisions'),\n new Uint8Array([phflag ? 1 : 0, ctx.length]),\n ctx,\n data\n );\n}\n\n/** Context of ed25519. Uses context for domain separation. */\nexport const ed25519ctx: CurveFn = /* @__PURE__ */ (() =>\n twistedEdwards({\n ...ed25519Defaults,\n domain: ed25519_domain,\n }))();\n\n/** Prehashed version of ed25519. Accepts already-hashed messages in sign() and verify(). */\nexport const ed25519ph: CurveFn = /* @__PURE__ */ (() =>\n twistedEdwards(\n Object.assign({}, ed25519Defaults, {\n domain: ed25519_domain,\n prehash: sha512,\n })\n ))();\n\n/**\n * ECDH using curve25519 aka x25519.\n * @example\n * import { x25519 } from '@noble/curves/ed25519';\n * const priv = 'a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4';\n * const pub = 'e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c';\n * x25519.getSharedSecret(priv, pub) === x25519.scalarMult(priv, pub); // aliases\n * x25519.getPublicKey(priv) === x25519.scalarMultBase(priv);\n * x25519.getPublicKey(x25519.utils.randomSecretKey());\n */\nexport const x25519: XCurveFn = /* @__PURE__ */ (() => {\n const P = Fp.ORDER;\n return montgomery({\n P,\n type: 'x25519',\n powPminus2: (x: bigint): bigint => {\n // x^(p-2) aka x^(2^255-21)\n const { pow_p_5_8, b2 } = ed25519_pow_2_252_3(x);\n return mod(pow2(pow_p_5_8, _3n, P) * b2, P);\n },\n adjustScalarBytes,\n });\n})();\n\n// Hash To Curve Elligator2 Map (NOTE: different from ristretto255 elligator)\n// NOTE: very important part is usage of FpSqrtEven for ELL2_C1_EDWARDS, since\n// SageMath returns different root first and everything falls apart\nconst ELL2_C1 = /* @__PURE__ */ (() => (ed25519_CURVE_p + _3n) / _8n)(); // 1. c1 = (q + 3) / 8 # Integer arithmetic\nconst ELL2_C2 = /* @__PURE__ */ (() => Fp.pow(_2n, ELL2_C1))(); // 2. c2 = 2^c1\nconst ELL2_C3 = /* @__PURE__ */ (() => Fp.sqrt(Fp.neg(Fp.ONE)))(); // 3. c3 = sqrt(-1)\n\n// prettier-ignore\nfunction map_to_curve_elligator2_curve25519(u: bigint) {\n const ELL2_C4 = (ed25519_CURVE_p - _5n) / _8n; // 4. c4 = (q - 5) / 8 # Integer arithmetic\n const ELL2_J = BigInt(486662);\n\n let tv1 = Fp.sqr(u); // 1. tv1 = u^2\n tv1 = Fp.mul(tv1, _2n); // 2. tv1 = 2 * tv1\n let xd = Fp.add(tv1, Fp.ONE); // 3. xd = tv1 + 1 # Nonzero: -1 is square (mod p), tv1 is not\n let x1n = Fp.neg(ELL2_J); // 4. x1n = -J # x1 = x1n / xd = -J / (1 + 2 * u^2)\n let tv2 = Fp.sqr(xd); // 5. tv2 = xd^2\n let gxd = Fp.mul(tv2, xd); // 6. gxd = tv2 * xd # gxd = xd^3\n let gx1 = Fp.mul(tv1, ELL2_J);// 7. gx1 = J * tv1 # x1n + J * xd\n gx1 = Fp.mul(gx1, x1n); // 8. gx1 = gx1 * x1n # x1n^2 + J * x1n * xd\n gx1 = Fp.add(gx1, tv2); // 9. gx1 = gx1 + tv2 # x1n^2 + J * x1n * xd + xd^2\n gx1 = Fp.mul(gx1, x1n); // 10. gx1 = gx1 * x1n # x1n^3 + J * x1n^2 * xd + x1n * xd^2\n let tv3 = Fp.sqr(gxd); // 11. tv3 = gxd^2\n tv2 = Fp.sqr(tv3); // 12. tv2 = tv3^2 # gxd^4\n tv3 = Fp.mul(tv3, gxd); // 13. tv3 = tv3 * gxd # gxd^3\n tv3 = Fp.mul(tv3, gx1); // 14. tv3 = tv3 * gx1 # gx1 * gxd^3\n tv2 = Fp.mul(tv2, tv3); // 15. tv2 = tv2 * tv3 # gx1 * gxd^7\n let y11 = Fp.pow(tv2, ELL2_C4); // 16. y11 = tv2^c4 # (gx1 * gxd^7)^((p - 5) / 8)\n y11 = Fp.mul(y11, tv3); // 17. y11 = y11 * tv3 # gx1*gxd^3*(gx1*gxd^7)^((p-5)/8)\n let y12 = Fp.mul(y11, ELL2_C3); // 18. y12 = y11 * c3\n tv2 = Fp.sqr(y11); // 19. tv2 = y11^2\n tv2 = Fp.mul(tv2, gxd); // 20. tv2 = tv2 * gxd\n let e1 = Fp.eql(tv2, gx1); // 21. e1 = tv2 == gx1\n let y1 = Fp.cmov(y12, y11, e1); // 22. y1 = CMOV(y12, y11, e1) # If g(x1) is square, this is its sqrt\n let x2n = Fp.mul(x1n, tv1); // 23. x2n = x1n * tv1 # x2 = x2n / xd = 2 * u^2 * x1n / xd\n let y21 = Fp.mul(y11, u); // 24. y21 = y11 * u\n y21 = Fp.mul(y21, ELL2_C2); // 25. y21 = y21 * c2\n let y22 = Fp.mul(y21, ELL2_C3); // 26. y22 = y21 * c3\n let gx2 = Fp.mul(gx1, tv1); // 27. gx2 = gx1 * tv1 # g(x2) = gx2 / gxd = 2 * u^2 * g(x1)\n tv2 = Fp.sqr(y21); // 28. tv2 = y21^2\n tv2 = Fp.mul(tv2, gxd); // 29. tv2 = tv2 * gxd\n let e2 = Fp.eql(tv2, gx2); // 30. e2 = tv2 == gx2\n let y2 = Fp.cmov(y22, y21, e2); // 31. y2 = CMOV(y22, y21, e2) # If g(x2) is square, this is its sqrt\n tv2 = Fp.sqr(y1); // 32. tv2 = y1^2\n tv2 = Fp.mul(tv2, gxd); // 33. tv2 = tv2 * gxd\n let e3 = Fp.eql(tv2, gx1); // 34. e3 = tv2 == gx1\n let xn = Fp.cmov(x2n, x1n, e3); // 35. xn = CMOV(x2n, x1n, e3) # If e3, x = x1, else x = x2\n let y = Fp.cmov(y2, y1, e3); // 36. y = CMOV(y2, y1, e3) # If e3, y = y1, else y = y2\n let e4 = Fp.isOdd!(y); // 37. e4 = sgn0(y) == 1 # Fix sign of y\n y = Fp.cmov(y, Fp.neg(y), e3 !== e4); // 38. y = CMOV(y, -y, e3 XOR e4)\n return { xMn: xn, xMd: xd, yMn: y, yMd: _1n }; // 39. return (xn, xd, y, 1)\n}\n\nconst ELL2_C1_EDWARDS = /* @__PURE__ */ (() => FpSqrtEven(Fp, Fp.neg(BigInt(486664))))(); // sgn0(c1) MUST equal 0\nfunction map_to_curve_elligator2_edwards25519(u: bigint) {\n const { xMn, xMd, yMn, yMd } = map_to_curve_elligator2_curve25519(u); // 1. (xMn, xMd, yMn, yMd) =\n // map_to_curve_elligator2_curve25519(u)\n let xn = Fp.mul(xMn, yMd); // 2. xn = xMn * yMd\n xn = Fp.mul(xn, ELL2_C1_EDWARDS); // 3. xn = xn * c1\n let xd = Fp.mul(xMd, yMn); // 4. xd = xMd * yMn # xn / xd = c1 * xM / yM\n let yn = Fp.sub(xMn, xMd); // 5. yn = xMn - xMd\n let yd = Fp.add(xMn, xMd); // 6. yd = xMn + xMd # (n / d - 1) / (n / d + 1) = (n - d) / (n + d)\n let tv1 = Fp.mul(xd, yd); // 7. tv1 = xd * yd\n let e = Fp.eql(tv1, Fp.ZERO); // 8. e = tv1 == 0\n xn = Fp.cmov(xn, Fp.ZERO, e); // 9. xn = CMOV(xn, 0, e)\n xd = Fp.cmov(xd, Fp.ONE, e); // 10. xd = CMOV(xd, 1, e)\n yn = Fp.cmov(yn, Fp.ONE, e); // 11. yn = CMOV(yn, 1, e)\n yd = Fp.cmov(yd, Fp.ONE, e); // 12. yd = CMOV(yd, 1, e)\n const [xd_inv, yd_inv] = FpInvertBatch(Fp, [xd, yd], true); // batch division\n return { x: Fp.mul(xn, xd_inv), y: Fp.mul(yn, yd_inv) }; // 13. return (xn, xd, yn, yd)\n}\n\n/** Hashing to ed25519 points / field. RFC 9380 methods. */\nexport const ed25519_hasher: H2CHasher = /* @__PURE__ */ (() =>\n createHasher(\n ed25519.Point,\n (scalars: bigint[]) => map_to_curve_elligator2_edwards25519(scalars[0]),\n {\n DST: 'edwards25519_XMD:SHA-512_ELL2_RO_',\n encodeDST: 'edwards25519_XMD:SHA-512_ELL2_NU_',\n p: ed25519_CURVE_p,\n m: 1,\n k: 128,\n expand: 'xmd',\n hash: sha512,\n }\n ))();\n\n// \u221A(-1) aka \u221A(a) aka 2^((p-1)/4)\nconst SQRT_M1 = ED25519_SQRT_M1;\n// \u221A(ad - 1)\nconst SQRT_AD_MINUS_ONE = /* @__PURE__ */ BigInt(\n '25063068953384623474111414158702152701244531502492656460079210482610430750235'\n);\n// 1 / \u221A(a-d)\nconst INVSQRT_A_MINUS_D = /* @__PURE__ */ BigInt(\n '54469307008909316920995813868745141605393597292927456921205312896311721017578'\n);\n// 1-d\u00B2\nconst ONE_MINUS_D_SQ = /* @__PURE__ */ BigInt(\n '1159843021668779879193775521855586647937357759715417654439879720876111806838'\n);\n// (d-1)\u00B2\nconst D_MINUS_ONE_SQ = /* @__PURE__ */ BigInt(\n '40440834346308536858101042469323190826248399146238708352240133220865137265952'\n);\n// Calculates 1/\u221A(number)\nconst invertSqrt = (number: bigint) => uvRatio(_1n, number);\n\nconst MAX_255B = /* @__PURE__ */ BigInt(\n '0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'\n);\nconst bytes255ToNumberLE = (bytes: Uint8Array) =>\n ed25519.Point.Fp.create(bytesToNumberLE(bytes) & MAX_255B);\n\ntype ExtendedPoint = EdwardsPoint;\n\n/**\n * Computes Elligator map for Ristretto255.\n * Described in [RFC9380](https://www.rfc-editor.org/rfc/rfc9380#appendix-B) and on\n * the [website](https://ristretto.group/formulas/elligator.html).\n */\nfunction calcElligatorRistrettoMap(r0: bigint): ExtendedPoint {\n const { d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const r = mod(SQRT_M1 * r0 * r0); // 1\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ); // 2\n let c = BigInt(-1); // 3\n const D = mod((c - d * r) * mod(r + d)); // 4\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D); // 5\n let s_ = mod(s * r0); // 6\n if (!isNegativeLE(s_, P)) s_ = mod(-s_);\n if (!Ns_D_is_sq) s = s_; // 7\n if (!Ns_D_is_sq) c = r; // 8\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D); // 9\n const s2 = s * s;\n const W0 = mod((s + s) * D); // 10\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE); // 11\n const W2 = mod(_1n - s2); // 12\n const W3 = mod(_1n + s2); // 13\n return new ed25519.Point(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n}\n\nfunction ristretto255_map(bytes: Uint8Array): _RistrettoPoint {\n abytes(bytes, 64);\n const r1 = bytes255ToNumberLE(bytes.subarray(0, 32));\n const R1 = calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(bytes.subarray(32, 64));\n const R2 = calcElligatorRistrettoMap(r2);\n return new _RistrettoPoint(R1.add(R2));\n}\n\n/**\n * Wrapper over Edwards Point for ristretto255.\n *\n * Each ed25519/ExtendedPoint has 8 different equivalent points. This can be\n * a source of bugs for protocols like ring signatures. Ristretto was created to solve this.\n * Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint,\n * but it should work in its own namespace: do not combine those two.\n * See [RFC9496](https://www.rfc-editor.org/rfc/rfc9496).\n */\nclass _RistrettoPoint extends PrimeEdwardsPoint<_RistrettoPoint> {\n // Do NOT change syntax: the following gymnastics is done,\n // because typescript strips comments, which makes bundlers disable tree-shaking.\n // prettier-ignore\n static BASE: _RistrettoPoint =\n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.BASE))();\n // prettier-ignore\n static ZERO: _RistrettoPoint =\n /* @__PURE__ */ (() => new _RistrettoPoint(ed25519.Point.ZERO))();\n // prettier-ignore\n static Fp: IField =\n /* @__PURE__ */ (() => Fp)();\n // prettier-ignore\n static Fn: IField =\n /* @__PURE__ */ (() => Fn)();\n\n constructor(ep: ExtendedPoint) {\n super(ep);\n }\n\n static fromAffine(ap: AffinePoint): _RistrettoPoint {\n return new _RistrettoPoint(ed25519.Point.fromAffine(ap));\n }\n\n protected assertSame(other: _RistrettoPoint): void {\n if (!(other instanceof _RistrettoPoint)) throw new Error('RistrettoPoint expected');\n }\n\n protected init(ep: EdwardsPoint): _RistrettoPoint {\n return new _RistrettoPoint(ep);\n }\n\n /** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\n static hashToCurve(hex: Hex): _RistrettoPoint {\n return ristretto255_map(ensureBytes('ristrettoHash', hex, 64));\n }\n\n static fromBytes(bytes: Uint8Array): _RistrettoPoint {\n abytes(bytes, 32);\n const { a, d } = ed25519_CURVE;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const s = bytes255ToNumberLE(bytes);\n // 1. Check that s_bytes is the canonical encoding of a field element, or else abort.\n // 3. Check that s is non-negative, or else abort\n if (!equalBytes(Fp.toBytes(s), bytes) || isNegativeLE(s, P))\n throw new Error('invalid ristretto255 encoding 1');\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2); // 4 (a is -1)\n const u2 = mod(_1n - a * s2); // 5\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2); // 6\n const { isValid, value: I } = invertSqrt(mod(v * u2_2)); // 7\n const Dx = mod(I * u2); // 8\n const Dy = mod(I * Dx * v); // 9\n let x = mod((s + s) * Dx); // 10\n if (isNegativeLE(x, P)) x = mod(-x); // 10\n const y = mod(u1 * Dy); // 11\n const t = mod(x * y); // 12\n if (!isValid || isNegativeLE(t, P) || y === _0n)\n throw new Error('invalid ristretto255 encoding 2');\n return new _RistrettoPoint(new ed25519.Point(x, y, _1n, t));\n }\n\n /**\n * Converts ristretto-encoded string to ristretto point.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-decode).\n * @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding\n */\n static fromHex(hex: Hex): _RistrettoPoint {\n return _RistrettoPoint.fromBytes(ensureBytes('ristrettoHex', hex, 32));\n }\n\n static msm(points: _RistrettoPoint[], scalars: bigint[]): _RistrettoPoint {\n return pippenger(_RistrettoPoint, ed25519.Point.Fn, points, scalars);\n }\n\n /**\n * Encodes ristretto point to Uint8Array.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-encode).\n */\n toBytes(): Uint8Array {\n let { X, Y, Z, T } = this.ep;\n const P = ed25519_CURVE_p;\n const mod = (n: bigint) => Fp.create(n);\n const u1 = mod(mod(Z + Y) * mod(Z - Y)); // 1\n const u2 = mod(X * Y); // 2\n // Square root always exists\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq)); // 3\n const D1 = mod(invsqrt * u1); // 4\n const D2 = mod(invsqrt * u2); // 5\n const zInv = mod(D1 * D2 * T); // 6\n let D: bigint; // 7\n if (isNegativeLE(T * zInv, P)) {\n let _x = mod(Y * SQRT_M1);\n let _y = mod(X * SQRT_M1);\n X = _x;\n Y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n } else {\n D = D2; // 8\n }\n if (isNegativeLE(X * zInv, P)) Y = mod(-Y); // 9\n let s = mod((Z - Y) * D); // 10 (check footer's note, no sqrt(-a))\n if (isNegativeLE(s, P)) s = mod(-s);\n return Fp.toBytes(s); // 11\n }\n\n /**\n * Compares two Ristretto points.\n * Described in [RFC9496](https://www.rfc-editor.org/rfc/rfc9496#name-equals).\n */\n equals(other: _RistrettoPoint): boolean {\n this.assertSame(other);\n const { X: X1, Y: Y1 } = this.ep;\n const { X: X2, Y: Y2 } = other.ep;\n const mod = (n: bigint) => Fp.create(n);\n // (x1 * y2 == y1 * x2) | (y1 * y2 == x1 * x2)\n const one = mod(X1 * Y2) === mod(Y1 * X2);\n const two = mod(Y1 * Y2) === mod(X1 * X2);\n return one || two;\n }\n\n is0(): boolean {\n return this.equals(_RistrettoPoint.ZERO);\n }\n}\n\nexport const ristretto255: {\n Point: typeof _RistrettoPoint;\n} = { Point: _RistrettoPoint };\n\n/** Hashing to ristretto255 points / field. RFC 9380 methods. */\nexport const ristretto255_hasher: H2CHasherBase = {\n hashToCurve(msg: Uint8Array, options?: htfBasicOpts): _RistrettoPoint {\n const DST = options?.DST || 'ristretto255_XMD:SHA-512_R255MAP_RO_';\n const xmd = expand_message_xmd(msg, DST, 64, sha512);\n return ristretto255_map(xmd);\n },\n hashToScalar(msg: Uint8Array, options: htfBasicOpts = { DST: _DST_scalar }) {\n const xmd = expand_message_xmd(msg, options.DST, 64, sha512);\n return Fn.create(bytesToNumberLE(xmd));\n },\n};\n\n// export const ristretto255_oprf: OPRF = createORPF({\n// name: 'ristretto255-SHA512',\n// Point: RistrettoPoint,\n// hash: sha512,\n// hashToGroup: ristretto255_hasher.hashToCurve,\n// hashToScalar: ristretto255_hasher.hashToScalar,\n// });\n\n/**\n * Weird / bogus points, useful for debugging.\n * All 8 ed25519 points of 8-torsion subgroup can be generated from the point\n * T = `26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05`.\n * \u27E8T\u27E9 = { O, T, 2T, 3T, 4T, 5T, 6T, 7T }\n */\nexport const ED25519_TORSION_SUBGROUP: string[] = [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n];\n\n/** @deprecated use `ed25519.utils.toMontgomery` */\nexport function edwardsToMontgomeryPub(edwardsPub: Hex): Uint8Array {\n return ed25519.utils.toMontgomery(ensureBytes('pub', edwardsPub));\n}\n/** @deprecated use `ed25519.utils.toMontgomery` */\nexport const edwardsToMontgomery: typeof edwardsToMontgomeryPub = edwardsToMontgomeryPub;\n\n/** @deprecated use `ed25519.utils.toMontgomerySecret` */\nexport function edwardsToMontgomeryPriv(edwardsPriv: Uint8Array): Uint8Array {\n return ed25519.utils.toMontgomerySecret(ensureBytes('pub', edwardsPriv));\n}\n\n/** @deprecated use `ristretto255.Point` */\nexport const RistrettoPoint: typeof _RistrettoPoint = _RistrettoPoint;\n/** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */\nexport const hashToCurve: H2CMethod = /* @__PURE__ */ (() => ed25519_hasher.hashToCurve)();\n/** @deprecated use `import { ed25519_hasher } from '@noble/curves/ed25519.js';` */\nexport const encodeToCurve: H2CMethod = /* @__PURE__ */ (() =>\n ed25519_hasher.encodeToCurve)();\ntype RistHasher = (msg: Uint8Array, options: htfBasicOpts) => _RistrettoPoint;\n/** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\nexport const hashToRistretto255: RistHasher = /* @__PURE__ */ (() =>\n ristretto255_hasher.hashToCurve as RistHasher)();\n/** @deprecated use `import { ristretto255_hasher } from '@noble/curves/ed25519.js';` */\nexport const hash_to_ristretto255: RistHasher = /* @__PURE__ */ (() =>\n ristretto255_hasher.hashToCurve as RistHasher)();\n", "import { ed25519 as nobleEd25519 } from '@noble/curves/ed25519'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\n\nimport type { HexString, SigningScheme } from '../../types'\nimport assert from '../../utils/assert'\nimport Sha512 from '../../utils/Sha512'\n\nconst ED_PREFIX = 'ED'\n\nconst ed25519: SigningScheme = {\n deriveKeypair(entropy: Uint8Array): {\n privateKey: string\n publicKey: string\n } {\n const rawPrivateKey = Sha512.half(entropy)\n const privateKey = ED_PREFIX + bytesToHex(rawPrivateKey)\n const publicKey =\n ED_PREFIX + bytesToHex(nobleEd25519.getPublicKey(rawPrivateKey))\n return { privateKey, publicKey }\n },\n\n sign(message: Uint8Array, privateKey: HexString): string {\n assert.ok(message instanceof Uint8Array, 'message must be array of octets')\n assert.ok(\n privateKey.length === 66,\n 'private key must be 33 bytes including prefix',\n )\n return bytesToHex(nobleEd25519.sign(message, privateKey.slice(2)))\n },\n\n verify(\n message: Uint8Array,\n signature: HexString,\n publicKey: string,\n ): boolean {\n // Unlikely to be triggered as these are internal and guarded by getAlgorithmFromKey\n assert.ok(\n publicKey.length === 66,\n 'public key must be 33 bytes including prefix',\n )\n return nobleEd25519.verify(\n signature,\n message,\n // Remove the 0xED prefix\n publicKey.slice(2),\n // By default, set zip215 to false for compatibility reasons.\n // ZIP 215 is a stricter Ed25519 signature verification scheme.\n // However, setting it to false adheres to the more commonly used\n // RFC8032 / NIST186-5 standards, making it compatible with systems\n // like the XRP Ledger.\n { zip215: false },\n )\n },\n}\n\nexport default ed25519\n", "import {\n decodeNodePublic,\n decodeSeed,\n encodeAccountID,\n encodeSeed,\n} from 'ripple-address-codec'\nimport { ripemd160 } from '@xrplf/isomorphic/ripemd160'\nimport { sha256 } from '@xrplf/isomorphic/sha256'\nimport { hexToBytes, randomBytes } from '@xrplf/isomorphic/utils'\n\nimport { accountPublicFromPublicGenerator } from './signing-schemes/secp256k1/utils'\nimport Sha512 from './utils/Sha512'\nimport assert from './utils/assert'\nimport type { Algorithm, HexString, KeyPair, SigningScheme } from './types'\nimport {\n getAlgorithmFromPrivateKey,\n getAlgorithmFromPublicKey,\n} from './utils/getAlgorithmFromKey'\n\nimport secp256k1 from './signing-schemes/secp256k1'\nimport ed25519 from './signing-schemes/ed25519'\n\nfunction getSigningScheme(algorithm: Algorithm): SigningScheme {\n const schemes = { 'ecdsa-secp256k1': secp256k1, ed25519 }\n return schemes[algorithm]\n}\n\nfunction generateSeed(\n options: {\n entropy?: Uint8Array\n algorithm?: Algorithm\n } = {},\n): string {\n assert.ok(\n !options.entropy || options.entropy.length >= 16,\n 'entropy too short',\n )\n const entropy = options.entropy\n ? options.entropy.slice(0, 16)\n : randomBytes(16)\n const type = options.algorithm === 'ed25519' ? 'ed25519' : 'secp256k1'\n return encodeSeed(entropy, type)\n}\n\nfunction deriveKeypair(\n seed: string,\n options?: {\n algorithm?: Algorithm\n validator?: boolean\n accountIndex?: number\n },\n): KeyPair {\n const decoded = decodeSeed(seed)\n const proposedAlgorithm = options?.algorithm ?? decoded.type\n const algorithm =\n proposedAlgorithm === 'ed25519' ? 'ed25519' : 'ecdsa-secp256k1'\n const scheme = getSigningScheme(algorithm)\n const keypair = scheme.deriveKeypair(decoded.bytes, options)\n const messageToVerify = Sha512.half('This test message should verify.')\n const signature = scheme.sign(messageToVerify, keypair.privateKey)\n /* istanbul ignore if */\n if (!scheme.verify(messageToVerify, signature, keypair.publicKey)) {\n throw new Error('derived keypair did not generate verifiable signature')\n }\n return keypair\n}\n\nfunction sign(messageHex: HexString, privateKey: HexString): HexString {\n const algorithm = getAlgorithmFromPrivateKey(privateKey)\n return getSigningScheme(algorithm).sign(hexToBytes(messageHex), privateKey)\n}\n\nfunction verify(\n messageHex: HexString,\n signature: HexString,\n publicKey: HexString,\n): boolean {\n const algorithm = getAlgorithmFromPublicKey(publicKey)\n return getSigningScheme(algorithm).verify(\n hexToBytes(messageHex),\n signature,\n publicKey,\n )\n}\n\nfunction computePublicKeyHash(publicKeyBytes: Uint8Array): Uint8Array {\n return ripemd160(sha256(publicKeyBytes))\n}\n\nfunction deriveAddressFromBytes(publicKeyBytes: Uint8Array): string {\n return encodeAccountID(computePublicKeyHash(publicKeyBytes))\n}\n\nfunction deriveAddress(publicKey: string): string {\n return deriveAddressFromBytes(hexToBytes(publicKey))\n}\n\nfunction deriveNodeAddress(publicKey: string): string {\n const generatorBytes = decodeNodePublic(publicKey)\n const accountPublicBytes = accountPublicFromPublicGenerator(generatorBytes)\n return deriveAddressFromBytes(accountPublicBytes)\n}\n\nexport {\n generateSeed,\n deriveKeypair,\n sign,\n verify,\n deriveAddress,\n deriveNodeAddress,\n decodeSeed,\n}\n", "import { classicAddressToXAddress } from 'ripple-address-codec'\nimport { deriveKeypair, deriveAddress } from 'ripple-keypairs'\n\n/**\n * Derive an X-Address from a public key and a destination tag.\n *\n * @param options - Public key and destination tag to encode as an X-Address.\n * @param options.publicKey - The public key corresponding to an address.\n * @param options.tag - A destination tag to encode into an X-address. False indicates no destination tag.\n * @param options.test - Whether this address is for use in Testnet.\n * @returns X-Address.\n * @category Utilities\n */\nfunction deriveXAddress(options: {\n publicKey: string\n tag: number | false\n test: boolean\n}): string {\n const classicAddress = deriveAddress(options.publicKey)\n return classicAddressToXAddress(classicAddress, options.tag, options.test)\n}\n\nexport { deriveKeypair, deriveAddress, deriveXAddress }\n", "type ValueOf = T[keyof T]\n\n/**\n * Creates an object composed of keys generated from the results of running each element of collection thru iteratee.\n * The order of grouped values is determined by the order they occur in collection.\n * The corresponding value of each key is an array of elements responsible for generating the key.\n *\n * Similar to lodash's groupBy\n *\n * @param array - array to iterate over\n * @param iteratee - function that returns key of the group to place the item\n *\n * @returns a map of arrays\n */\nexport function groupBy(\n array: T[],\n iteratee: (value: T, index: number, array: T[]) => string | number,\n): Record {\n // eslint-disable-next-line max-params -- need all the params for the fallback\n function predicate(\n acc: Record,\n value: T,\n index: number,\n arrayReference: T[],\n ): Record {\n const key = iteratee(value, index, arrayReference) || 0\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Find existing group or create a new one\n const group = acc[key] || []\n group.push(value)\n acc[key] = group\n return acc\n }\n\n return array.reduce(predicate, {})\n}\n\n/**\n * Creates an object composed of the own and inherited enumerable string keyed properties of object that\n * predicate doesn't return truthy for.\n *\n * @param obj - Object to have properties removed.\n * @param predicate - function that returns whether the property should be removed from the obj.\n *\n * @returns object\n */\nexport function omitBy(\n obj: T,\n predicate: (objElement: ValueOf, k: string | number | symbol) => boolean,\n): Partial {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We know the keys are properties of T\n const keys: Array = Object.keys(obj) as Array\n const keysToKeep = keys.filter((kb) => !predicate(obj[kb], kb))\n return keysToKeep.reduce((acc: Partial, key: keyof T) => {\n acc[key] = obj[key]\n return acc\n }, {})\n}\n", "import BigNumber from 'bignumber.js'\n\nimport { ValidationError } from '../errors'\n\nconst DROPS_PER_XRP = 1000000.0\nconst MAX_FRACTION_LENGTH = 6\nconst BASE_TEN = 10\nconst SANITY_CHECK = /^-?[0-9.]+$/u\n\n/**\n * Convert Drops to XRP.\n *\n * @param dropsToConvert - Drops to convert to XRP. This can be a string, number, or BigNumber.\n * @returns Amount in XRP.\n * @throws When drops amount is invalid.\n * @category Utilities\n */\nexport function dropsToXrp(dropsToConvert: BigNumber.Value): number {\n /*\n * Converting to BigNumber and then back to string should remove any\n * decimal point followed by zeros, e.g. '1.00'.\n * Important: specify base BASE_10 to avoid exponential notation, e.g. '1e-7'.\n */\n const drops = new BigNumber(dropsToConvert).toString(BASE_TEN)\n\n // check that the value is valid and actually a number\n if (typeof dropsToConvert === 'string' && drops === 'NaN') {\n throw new ValidationError(\n `dropsToXrp: invalid value '${dropsToConvert}', should be a BigNumber or string-encoded number.`,\n )\n }\n\n // drops are only whole units\n if (drops.includes('.')) {\n throw new ValidationError(\n `dropsToXrp: value '${drops}' has too many decimal places.`,\n )\n }\n\n /*\n * This should never happen; the value has already been\n * validated above. This just ensures BigNumber did not do\n * something unexpected.\n */\n if (!SANITY_CHECK.exec(drops)) {\n throw new ValidationError(\n `dropsToXrp: failed sanity check -` +\n ` value '${drops}',` +\n ` does not match (^-?[0-9]+$).`,\n )\n }\n\n return new BigNumber(drops).dividedBy(DROPS_PER_XRP).toNumber()\n}\n\n/**\n * Convert an amount in XRP to an amount in drops.\n *\n * @param xrpToConvert - Amount in XRP.\n * @returns Amount in drops.\n * @throws When amount in xrp is invalid.\n * @category Utilities\n */\nexport function xrpToDrops(xrpToConvert: BigNumber.Value): string {\n // Important: specify base BASE_TEN to avoid exponential notation, e.g. '1e-7'.\n const xrp = new BigNumber(xrpToConvert).toString(BASE_TEN)\n\n // check that the value is valid and actually a number\n if (typeof xrpToConvert === 'string' && xrp === 'NaN') {\n throw new ValidationError(\n `xrpToDrops: invalid value '${xrpToConvert}', should be a BigNumber or string-encoded number.`,\n )\n }\n\n /*\n * This should never happen; the value has already been\n * validated above. This just ensures BigNumber did not do\n * something unexpected.\n */\n if (!SANITY_CHECK.exec(xrp)) {\n throw new ValidationError(\n `xrpToDrops: failed sanity check - value '${xrp}', does not match (^-?[0-9.]+$).`,\n )\n }\n\n const components = xrp.split('.')\n if (components.length > 2) {\n throw new ValidationError(\n `xrpToDrops: failed sanity check - value '${xrp}' has too many decimal points.`,\n )\n }\n\n const fraction = components[1] || '0'\n if (fraction.length > MAX_FRACTION_LENGTH) {\n throw new ValidationError(\n `xrpToDrops: value '${xrp}' has too many decimal places.`,\n )\n }\n\n return new BigNumber(xrp)\n .times(DROPS_PER_XRP)\n .integerValue(BigNumber.ROUND_FLOOR)\n .toString(BASE_TEN)\n}\n", "import BigNumber from 'bignumber.js'\n\nimport {\n Amount,\n Balance,\n IssuedCurrencyAmount,\n TransactionMetadata,\n Node,\n} from '../models'\n\nimport { groupBy } from './collections'\nimport { dropsToXrp } from './xrpConversion'\n\ninterface BalanceChange {\n account: string\n balance: Balance\n}\ninterface Fields {\n Account?: string\n Balance?: Amount\n LowLimit?: IssuedCurrencyAmount\n HighLimit?: IssuedCurrencyAmount\n // eslint-disable-next-line @typescript-eslint/member-ordering -- okay here, just some of the fields are typed to make it easier\n [field: string]: unknown\n}\n\ninterface NormalizedNode {\n // 'CreatedNode' | 'ModifiedNode' | 'DeletedNode'\n NodeType: string\n LedgerEntryType: string\n LedgerIndex: string\n NewFields?: Fields\n FinalFields?: Fields\n PreviousFields?: Fields\n PreviousTxnID?: string\n PreviousTxnLgrSeq?: number\n}\n\nfunction normalizeNode(affectedNode: Node): NormalizedNode {\n const diffType = Object.keys(affectedNode)[0]\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- not quite right, but close enough\n const node = affectedNode[diffType] as NormalizedNode\n return {\n ...node,\n NodeType: diffType,\n LedgerEntryType: node.LedgerEntryType,\n LedgerIndex: node.LedgerIndex,\n NewFields: node.NewFields,\n FinalFields: node.FinalFields,\n PreviousFields: node.PreviousFields,\n }\n}\n\nfunction normalizeNodes(metadata: TransactionMetadata): NormalizedNode[] {\n if (metadata.AffectedNodes.length === 0) {\n return []\n }\n return metadata.AffectedNodes.map(normalizeNode)\n}\n\nfunction groupByAccount(balanceChanges: BalanceChange[]): Array<{\n account: string\n balances: Balance[]\n}> {\n const grouped = groupBy(balanceChanges, (node) => node.account)\n return Object.entries(grouped).map(([account, items]) => {\n return { account, balances: items.map((item) => item.balance) }\n })\n}\n\nfunction getValue(balance: Amount): BigNumber {\n if (typeof balance === 'string') {\n return new BigNumber(balance)\n }\n return new BigNumber(balance.value)\n}\n\nfunction computeBalanceChange(node: NormalizedNode): BigNumber | null {\n let value: BigNumber | null = null\n if (node.NewFields?.Balance) {\n value = getValue(node.NewFields.Balance)\n } else if (node.PreviousFields?.Balance && node.FinalFields?.Balance) {\n value = getValue(node.FinalFields.Balance).minus(\n getValue(node.PreviousFields.Balance),\n )\n }\n if (value === null || value.isZero()) {\n return null\n }\n return value\n}\n\nfunction getXRPQuantity(\n node: NormalizedNode,\n): { account: string; balance: Balance } | null {\n const value = computeBalanceChange(node)\n\n if (value === null) {\n return null\n }\n\n return {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- okay here\n account: (node.FinalFields?.Account ?? node.NewFields?.Account) as string,\n balance: {\n currency: 'XRP',\n value: dropsToXrp(value).toString(),\n },\n }\n}\n\nfunction flipTrustlinePerspective(balanceChange: BalanceChange): BalanceChange {\n const negatedBalance = new BigNumber(balanceChange.balance.value).negated()\n return {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know this is true\n account: balanceChange.balance.issuer as string,\n balance: {\n issuer: balanceChange.account,\n currency: balanceChange.balance.currency,\n value: negatedBalance.toString(),\n },\n }\n}\n\nfunction getTrustlineQuantity(node: NormalizedNode): BalanceChange[] | null {\n const value = computeBalanceChange(node)\n\n if (value === null) {\n return null\n }\n\n /*\n * A trustline can be created with a non-zero starting balance.\n * If an offer is placed to acquire an asset with no existing trustline,\n * the trustline can be created when the offer is taken.\n */\n const fields = node.NewFields ?? node.FinalFields\n\n // the balance is always from low node's perspective\n const result = {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know that this is true\n account: fields?.LowLimit?.issuer as string,\n balance: {\n issuer: fields?.HighLimit?.issuer,\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know that this is true\n currency: (fields?.Balance as IssuedCurrencyAmount).currency,\n value: value.toString(),\n },\n }\n return [result, flipTrustlinePerspective(result)]\n}\n\n/**\n * Computes the complete list of every balance that changed in the ledger\n * as a result of the given transaction.\n *\n * @param metadata - Transaction metadata.\n * @returns Parsed balance changes.\n * @category Utilities\n */\nexport default function getBalanceChanges(\n metadata: TransactionMetadata,\n): Array<{\n account: string\n balances: Balance[]\n}> {\n const quantities = normalizeNodes(metadata).map((node) => {\n if (node.LedgerEntryType === 'AccountRoot') {\n const xrpQuantity = getXRPQuantity(node)\n if (xrpQuantity == null) {\n return []\n }\n return [xrpQuantity]\n }\n if (node.LedgerEntryType === 'RippleState') {\n const trustlineQuantity = getTrustlineQuantity(node)\n if (trustlineQuantity == null) {\n return []\n }\n return trustlineQuantity\n }\n return []\n })\n return groupByAccount(quantities.flat())\n}\n", "import { Amount, MPTAmount } from '../common'\n\nimport { BaseTransaction } from './common'\nimport {\n MPTokenIssuanceCreate,\n MPTokenIssuanceCreateMetadata,\n} from './MPTokenIssuanceCreate'\nimport {\n NFTokenAcceptOffer,\n NFTokenAcceptOfferMetadata,\n} from './NFTokenAcceptOffer'\nimport {\n NFTokenCancelOffer,\n NFTokenCancelOfferMetadata,\n} from './NFTokenCancelOffer'\nimport {\n NFTokenCreateOffer,\n NFTokenCreateOfferMetadata,\n} from './NFTokenCreateOffer'\nimport { NFTokenMint, NFTokenMintMetadata } from './NFTokenMint'\nimport { Payment, PaymentMetadata } from './payment'\nimport type { Transaction } from './transaction'\n\nexport interface CreatedNode {\n CreatedNode: {\n LedgerEntryType: string\n LedgerIndex: string\n NewFields: { [field: string]: unknown }\n }\n}\n\nexport interface ModifiedNode {\n ModifiedNode: {\n LedgerEntryType: string\n LedgerIndex: string\n FinalFields?: { [field: string]: unknown }\n PreviousFields?: { [field: string]: unknown }\n PreviousTxnID?: string\n PreviousTxnLgrSeq?: number\n }\n}\n\nexport interface DeletedNode {\n DeletedNode: {\n LedgerEntryType: string\n LedgerIndex: string\n PreviousFields?: { [field: string]: unknown }\n FinalFields: { [field: string]: unknown }\n }\n}\n\nexport type Node = CreatedNode | ModifiedNode | DeletedNode\n\n/**\n * A typeguard to check if a node is a CreatedNode.\n *\n * @param node - A node from metadata.\n * @returns whether the given node is a CreatedNode.\n */\nexport function isCreatedNode(node: Node): node is CreatedNode {\n return Object.prototype.hasOwnProperty.call(node, `CreatedNode`)\n}\n\n/**\n * A typeguard to check if a node is a ModifiedNode.\n *\n * @param node - A node from metadata.\n * @returns whether the given node is a ModifiedNode.\n */\nexport function isModifiedNode(node: Node): node is ModifiedNode {\n return Object.prototype.hasOwnProperty.call(node, `ModifiedNode`)\n}\n\n/**\n * A typeguard to check if a node is a DeletedNode.\n *\n * @param node - A node from metadata.\n * @returns whether the given node is a DeletedNode.\n */\nexport function isDeletedNode(node: Node): node is DeletedNode {\n return Object.prototype.hasOwnProperty.call(node, `DeletedNode`)\n}\n\nexport interface TransactionMetadataBase {\n AffectedNodes: Node[]\n DeliveredAmount?: Amount | MPTAmount\n // \"unavailable\" possible for transactions before 2014-01-20\n delivered_amount?: Amount | MPTAmount | 'unavailable'\n TransactionIndex: number\n TransactionResult: string\n\n ParentBatchID?: string\n}\n\nexport type TransactionMetadata =\n T extends Payment\n ? PaymentMetadata\n : T extends NFTokenMint\n ? NFTokenMintMetadata\n : T extends NFTokenCreateOffer\n ? NFTokenCreateOfferMetadata\n : T extends NFTokenAcceptOffer\n ? NFTokenAcceptOfferMetadata\n : T extends NFTokenCancelOffer\n ? NFTokenCancelOfferMetadata\n : T extends MPTokenIssuanceCreate\n ? MPTokenIssuanceCreateMetadata\n : TransactionMetadataBase\n", "import { decode } from 'ripple-binary-codec'\n\nimport { NFToken } from '../models/ledger/NFTokenPage'\nimport {\n CreatedNode,\n isCreatedNode,\n isModifiedNode,\n ModifiedNode,\n TransactionMetadata,\n} from '../models/transactions/metadata'\n\n/**\n * Ensures that the metadata is in a deserialized format to parse.\n *\n * @param meta - the metadata from a `tx` method call. Can be in json format or binary format.\n * @returns the metadata in a deserialized format.\n */\nfunction ensureDecodedMeta(\n meta: TransactionMetadata | string,\n): TransactionMetadata {\n if (typeof meta === 'string') {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Meta is either metadata or serialized metadata.\n return decode(meta) as unknown as TransactionMetadata\n }\n return meta\n}\n\n/**\n * Gets the NFTokenID for an NFT recently minted with NFTokenMint.\n *\n * @param meta - Metadata from the response to submitting and waiting for an NFTokenMint transaction or from a `tx` method call.\n * @returns The NFTokenID for the minted NFT.\n * @throws if meta is not TransactionMetadata.\n */\n// eslint-disable-next-line max-lines-per-function -- This function has a lot of documentation\nexport default function getNFTokenID(\n meta: TransactionMetadata | string | undefined,\n): string | undefined {\n if (typeof meta !== 'string' && meta?.AffectedNodes === undefined) {\n throw new TypeError(`Unable to parse the parameter given to getNFTokenID.\n 'meta' must be the metadata from an NFTokenMint transaction. Received ${JSON.stringify(\n meta,\n )} instead.`)\n }\n\n const decodedMeta = ensureDecodedMeta(meta)\n\n /*\n * When a mint results in splitting an existing page,\n * it results in a created page and a modified node. Sometimes,\n * the created node needs to be linked to a third page, resulting\n * in modifying that third page's PreviousPageMin or NextPageMin\n * field changing, but no NFTs within that page changing. In this\n * case, there will be no previous NFTs and we need to skip.\n * However, there will always be NFTs listed in the final fields,\n * as rippled outputs all fields in final fields even if they were\n * not changed. Thus why we add the additional condition to check\n * if the PreviousFields contains NFTokens\n */\n const affectedNodes = decodedMeta.AffectedNodes.filter((node) => {\n if (isCreatedNode(node)) {\n return node.CreatedNode.LedgerEntryType === 'NFTokenPage'\n }\n if (isModifiedNode(node)) {\n return (\n node.ModifiedNode.LedgerEntryType === 'NFTokenPage' &&\n Boolean(node.ModifiedNode.PreviousFields?.NFTokens)\n )\n }\n return false\n })\n /* eslint-disable @typescript-eslint/consistent-type-assertions -- Necessary for parsing metadata */\n const previousTokenIDSet = new Set(\n affectedNodes\n .flatMap((node) => {\n const nftokens = isModifiedNode(node)\n ? (node.ModifiedNode.PreviousFields?.NFTokens as NFToken[])\n : []\n return nftokens.map((token) => token.NFToken.NFTokenID)\n })\n .filter((id) => Boolean(id)),\n )\n\n /* eslint-disable @typescript-eslint/no-unnecessary-condition -- Cleaner to read */\n const finalTokenIDs = affectedNodes\n .flatMap((node) =>\n (\n (((node as ModifiedNode).ModifiedNode?.FinalFields?.NFTokens ??\n (node as CreatedNode).CreatedNode?.NewFields\n ?.NFTokens) as NFToken[]) ?? []\n ).map((token) => token.NFToken.NFTokenID),\n )\n .filter((nftokenID) => Boolean(nftokenID))\n /* eslint-enable @typescript-eslint/consistent-type-assertions -- Necessary for parsing metadata */\n /* eslint-enable @typescript-eslint/no-unnecessary-condition -- Cleaner to read */\n const nftokenID = finalTokenIDs.find((id) => !previousTokenIDSet.has(id))\n\n return nftokenID\n}\n", "import { decode } from 'ripple-binary-codec'\n\nimport {\n CreatedNode,\n isCreatedNode,\n TransactionMetadata,\n} from '../models/transactions/metadata'\n\n/**\n * Ensures that the metadata is in a deserialized format to parse.\n *\n * @param meta - the metadata from a `tx` method call. Can be in json format or binary format.\n * @returns the metadata in a deserialized format.\n */\nfunction ensureDecodedMeta(\n meta: TransactionMetadata | string,\n): TransactionMetadata {\n if (typeof meta === 'string') {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Meta is either metadata or serialized metadata.\n return decode(meta) as unknown as TransactionMetadata\n }\n return meta\n}\n\n/**\n * Gets the XChainClaimID value from the metadata of an `XChainCreateClaimID` transaction.\n *\n * @param meta - Metadata from the response to submitting and waiting for an XChainCreateClaimID transaction\n * or from a `tx` method call.\n * @returns The XChainClaimID for the minted NFT.\n * @throws if meta is not TransactionMetadata.\n */\nexport default function getXChainClaimID(\n meta: TransactionMetadata | string | undefined,\n): string | undefined {\n if (typeof meta !== 'string' && meta?.AffectedNodes === undefined) {\n throw new TypeError(`Unable to parse the parameter given to getXChainClaimID.\n 'meta' must be the metadata from an XChainCreateClaimID transaction. Received ${JSON.stringify(\n meta,\n )} instead.`)\n }\n\n const decodedMeta = ensureDecodedMeta(meta)\n\n if (!decodedMeta.TransactionResult) {\n throw new TypeError(\n 'Cannot get XChainClaimID from un-validated transaction',\n )\n }\n\n if (decodedMeta.TransactionResult !== 'tesSUCCESS') {\n return undefined\n }\n\n const createdNode = decodedMeta.AffectedNodes.find(\n (node) =>\n isCreatedNode(node) &&\n node.CreatedNode.LedgerEntryType === 'XChainOwnedClaimID',\n )\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- necessary here\n return (createdNode as CreatedNode).CreatedNode.NewFields\n .XChainClaimID as string\n}\n", "/**\n * Prefix for hashing functions.\n *\n * These prefixes are inserted before the source material used to\n * generate various hashes. This is done to put each hash in its own\n * \"space.\" This way, two different types of objects with the\n * same binary data will produce different hashes.\n *\n * Each prefix is a 4-byte value with the last byte set to zero\n * and the first three bytes formed from the ASCII equivalent of\n * some arbitrary string. For example \"TXN\".\n */\n\nenum HashPrefix {\n // transaction plus signature to give transaction ID 'TXN'\n TRANSACTION_ID = 0x54584e00,\n\n // transaction plus metadata 'TND'\n TRANSACTION_NODE = 0x534e4400,\n\n // inner node in tree 'MIN'\n INNER_NODE = 0x4d494e00,\n\n // leaf node in tree 'MLN'\n LEAF_NODE = 0x4d4c4e00,\n\n // inner transaction to sign 'STX'\n TRANSACTION_SIGN = 0x53545800,\n\n // inner transaction to sign (TESTNET) 'stx'\n TRANSACTION_SIGN_TESTNET = 0x73747800,\n\n // inner transaction to multisign 'SMT'\n TRANSACTION_MULTISIGN = 0x534d5400,\n\n // ledger 'LWR'\n LEDGER = 0x4c575200,\n}\n\nexport default HashPrefix\n", "import { sha512 } from '@xrplf/isomorphic/sha512'\nimport { bytesToHex, hexToBytes } from '@xrplf/isomorphic/utils'\n\nconst HASH_BYTES = 32\n\n/**\n * Compute a sha512Half Hash of a hex string.\n *\n * @param hex - Hex string to hash.\n * @returns Hash of hex.\n */\nfunction sha512Half(hex: string): string {\n return bytesToHex(sha512(hexToBytes(hex)).slice(0, HASH_BYTES))\n}\n\nexport default sha512Half\n", "export enum NodeType {\n INNER = 1,\n TRANSACTION_NO_METADATA = 2,\n TRANSACTION_METADATA = 3,\n ACCOUNT_STATE = 4,\n}\n\n/**\n * Abstract base class for SHAMapNode.\n */\nexport abstract class Node {\n public abstract get hash(): string\n public abstract addItem(_tag: string, _node: Node): void\n}\n", "import { XrplError } from '../../../errors'\nimport HashPrefix from '../HashPrefix'\nimport sha512Half from '../sha512Half'\n\nimport { NodeType, Node } from './node'\n\nconst HEX = 16\n\n/**\n * Class for SHAMap Leaf Node.\n */\nclass LeafNode extends Node {\n public tag: string\n public type: NodeType\n public data: string\n\n /**\n * Leaf node in a SHAMap tree.\n *\n * @param tag - Equates to a ledger entry `index`.\n * @param data - Hex of account state, transaction etc.\n * @param type - One of TYPE_ACCOUNT_STATE, TYPE_TRANSACTION_MD etc.\n */\n public constructor(tag: string, data: string, type: NodeType) {\n super()\n this.tag = tag\n this.type = type\n this.data = data\n }\n\n /**\n * Get the hash of a LeafNode.\n *\n * @returns Hash or undefined.\n * @throws If node is of unknown type.\n */\n public get hash(): string {\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- TODO: https://github.com/XRPLF/xrpl.js/issues/3060\n switch (this.type) {\n case NodeType.ACCOUNT_STATE: {\n const leafPrefix = HashPrefix.LEAF_NODE.toString(HEX)\n return sha512Half(leafPrefix + this.data + this.tag)\n }\n case NodeType.TRANSACTION_NO_METADATA: {\n const txIDPrefix = HashPrefix.TRANSACTION_ID.toString(HEX)\n return sha512Half(txIDPrefix + this.data)\n }\n case NodeType.TRANSACTION_METADATA: {\n const txNodePrefix = HashPrefix.TRANSACTION_NODE.toString(HEX)\n return sha512Half(txNodePrefix + this.data + this.tag)\n }\n default:\n throw new XrplError('Tried to hash a SHAMap node of unknown type.')\n }\n }\n\n /**\n * Add item to Leaf.\n *\n * @param tag - Index of the Node.\n * @param node - Node to insert.\n * @throws When called, because LeafNodes cannot addItem.\n */\n public addItem(tag: string, node: Node): void {\n throw new XrplError('Cannot call addItem on a LeafNode')\n this.addItem(tag, node)\n }\n}\n\nexport default LeafNode\n", "import { XrplError } from '../../../errors'\nimport HashPrefix from '../HashPrefix'\nimport sha512Half from '../sha512Half'\n\nimport LeafNode from './LeafNode'\nimport { NodeType, Node } from './node'\n\nconst HEX_ZERO =\n '0000000000000000000000000000000000000000000000000000000000000000'\n\nconst SLOT_MAX = 15\nconst HEX = 16\n\n/**\n * Class for SHAMap InnerNode.\n */\nclass InnerNode extends Node {\n public leaves: { [slot: number]: Node | undefined }\n public type: NodeType\n public depth: number\n public empty: boolean\n\n /**\n * Define an Inner (non-leaf) node in a SHAMap tree.\n *\n * @param depth - I.e. How many parent inner nodes.\n */\n public constructor(depth = 0) {\n super()\n this.leaves = {}\n this.type = NodeType.INNER\n this.depth = depth\n this.empty = true\n }\n\n /**\n * Get the hash of a LeafNode.\n *\n * @returns Hash of the LeafNode.\n */\n public get hash(): string {\n if (this.empty) {\n return HEX_ZERO\n }\n let hex = ''\n for (let iter = 0; iter <= SLOT_MAX; iter++) {\n const child = this.leaves[iter]\n const hash: string = child == null ? HEX_ZERO : child.hash\n hex += hash\n }\n\n const prefix = HashPrefix.INNER_NODE.toString(HEX)\n return sha512Half(prefix + hex)\n }\n\n /**\n * Adds an item to the InnerNode.\n *\n * @param tag - Equates to a ledger entry `index`.\n * @param node - Node to add.\n * @throws If there is a index collision.\n */\n public addItem(tag: string, node: Node): void {\n const existingNode = this.getNode(parseInt(tag[this.depth], HEX))\n\n if (existingNode === undefined) {\n this.setNode(parseInt(tag[this.depth], HEX), node)\n return\n }\n\n // A node already exists in this slot\n if (existingNode instanceof InnerNode) {\n // There is an inner node, so we need to go deeper\n existingNode.addItem(tag, node)\n } else if (existingNode instanceof LeafNode) {\n if (existingNode.tag === tag) {\n // Collision\n throw new XrplError(\n 'Tried to add a node to a SHAMap that was already in there.',\n )\n } else {\n const newInnerNode = new InnerNode(this.depth + 1)\n\n // Parent new and existing node\n newInnerNode.addItem(existingNode.tag, existingNode)\n newInnerNode.addItem(tag, node)\n\n // And place the newly created inner node in the slot\n this.setNode(parseInt(tag[this.depth], HEX), newInnerNode)\n }\n }\n }\n\n /**\n * Overwrite the node that is currently in a given slot.\n *\n * @param slot - A number 0-15.\n * @param node - To place.\n * @throws If slot is out of range.\n */\n public setNode(slot: number, node: Node): void {\n if (slot < 0 || slot > SLOT_MAX) {\n throw new XrplError('Invalid slot: slot must be between 0-15.')\n }\n this.leaves[slot] = node\n this.empty = false\n }\n\n /**\n * Get the node that is currently in a given slot.\n *\n * @param slot - A number 0-15.\n * @returns Node currently in a slot.\n * @throws If slot is out of range.\n */\n public getNode(slot: number): Node | undefined {\n if (slot < 0 || slot > SLOT_MAX) {\n throw new XrplError('Invalid slot: slot must be between 0-15.')\n }\n return this.leaves[slot]\n }\n}\n\nexport default InnerNode\n", "import InnerNode from './InnerNode'\nimport LeafNode from './LeafNode'\nimport { NodeType } from './node'\n\n/**\n * SHAMap is the hash structure used to model ledgers.\n * If the root hash is equivalent, that means all nodes should be equivalent as well.\n */\nclass SHAMap {\n public root: InnerNode\n\n /**\n * SHAMap tree constructor.\n */\n public constructor() {\n this.root = new InnerNode(0)\n }\n\n /**\n * Get the hash of the SHAMap.\n *\n * @returns The hash of the root of the SHAMap.\n */\n public get hash(): string {\n return this.root.hash\n }\n\n /**\n * Add an item to the SHAMap.\n *\n * @param tag - Index of the Node to add.\n * @param data - Data to insert into the tree.\n * @param type - Type of the node to add.\n */\n public addItem(tag: string, data: string, type: NodeType): void {\n this.root.addItem(tag, new LeafNode(tag, data, type))\n }\n}\n\nexport * from './node'\nexport default SHAMap\n", "/* eslint-disable @typescript-eslint/no-magic-numbers -- this file mimics\n behavior in rippled. Magic numbers are used for lengths and conditions */\n/* eslint-disable no-bitwise -- this file mimics behavior in rippled. It uses\n bitwise operators for and-ing numbers with a mask and bit shifting. */\n\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\nimport BigNumber from 'bignumber.js'\nimport { decode, encode } from 'ripple-binary-codec'\n\nimport { ValidationError, XrplError } from '../../errors'\nimport { APIVersion } from '../../models'\nimport { LedgerEntry } from '../../models/ledger'\nimport { LedgerVersionMap } from '../../models/ledger/Ledger'\nimport { Transaction, TransactionMetadata } from '../../models/transactions'\nimport { GlobalFlags } from '../../models/transactions/common'\nimport { hasFlag } from '../../models/utils'\n\nimport HashPrefix from './HashPrefix'\nimport sha512Half from './sha512Half'\nimport SHAMap, { NodeType } from './SHAMap'\n\nconst HEX = 16\n\ninterface HashLedgerHeaderOptions {\n computeTreeHashes?: boolean\n}\n\nfunction intToHex(integer: number, byteLength: number): string {\n const foo = Number(integer)\n .toString(HEX)\n .padStart(byteLength * 2, '0')\n\n return foo\n}\n\nfunction bigintToHex(\n integerString: string | number | BigNumber,\n byteLength: number,\n): string {\n const hex = new BigNumber(integerString).toString(HEX)\n return hex.padStart(byteLength * 2, '0')\n}\n\nfunction addLengthPrefix(hex: string): string {\n const length = hex.length / 2\n if (length <= 192) {\n return bytesToHex([length]) + hex\n }\n if (length <= 12480) {\n const prefix = length - 193\n return bytesToHex([193 + (prefix >>> 8), prefix & 0xff]) + hex\n }\n if (length <= 918744) {\n const prefix = length - 12481\n return (\n bytesToHex([\n 241 + (prefix >>> 16),\n (prefix >>> 8) & 0xff,\n prefix & 0xff,\n ]) + hex\n )\n }\n throw new XrplError('Variable integer overflow.')\n}\n\n/**\n * Hashes the Transaction object as the ledger does. Throws if the transaction is unsigned.\n *\n * @param tx - A transaction to hash. Tx may be in binary blob form. Tx must be signed.\n * @returns A hash of tx.\n * @throws ValidationError if the Transaction is unsigned.\n * @category Utilities\n */\nexport function hashSignedTx(tx: Transaction | string): string {\n let txBlob: string\n let txObject: Transaction\n if (typeof tx === 'string') {\n txBlob = tx\n /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Required until updated in binary codec. */\n txObject = decode(tx) as unknown as Transaction\n } else {\n txBlob = encode(tx)\n txObject = tx\n }\n\n if (\n txObject.TxnSignature === undefined &&\n txObject.Signers === undefined &&\n txObject.SigningPubKey === undefined &&\n !hasFlag(txObject, GlobalFlags.tfInnerBatchTxn, 'tfInnerBatchTxn')\n ) {\n throw new ValidationError('The transaction must be signed to hash it.')\n }\n\n const prefix = HashPrefix.TRANSACTION_ID.toString(16).toUpperCase()\n return sha512Half(prefix.concat(txBlob))\n}\n\n/**\n * Compute the hash of a ledger.\n *\n * @param ledgerHeader - Ledger to compute the hash of.\n * @returns The hash of the ledger.\n * @category Utilities\n */\nexport function hashLedgerHeader(\n ledgerHeader: LedgerVersionMap,\n): string {\n const prefix = HashPrefix.LEDGER.toString(HEX).toUpperCase()\n\n const ledger =\n prefix +\n intToHex(Number(ledgerHeader.ledger_index), 4) +\n bigintToHex(ledgerHeader.total_coins, 8) +\n ledgerHeader.parent_hash +\n ledgerHeader.transaction_hash +\n ledgerHeader.account_hash +\n intToHex(ledgerHeader.parent_close_time, 4) +\n intToHex(ledgerHeader.close_time, 4) +\n intToHex(ledgerHeader.close_time_resolution, 1) +\n intToHex(ledgerHeader.close_flags, 1)\n\n return sha512Half(ledger)\n}\n\n/**\n * Compute the root hash of the SHAMap containing all transactions.\n *\n * @param transactions - List of Transactions.\n * @returns The root hash of the SHAMap.\n * @category Utilities\n */\nexport function hashTxTree(\n transactions: Array,\n): string {\n const shamap = new SHAMap()\n for (const txJSON of transactions) {\n const txBlobHex = encode(txJSON)\n const metaHex = encode(txJSON.metaData ?? {})\n const txHash = hashSignedTx(txBlobHex)\n const data = addLengthPrefix(txBlobHex) + addLengthPrefix(metaHex)\n shamap.addItem(txHash, data, NodeType.TRANSACTION_METADATA)\n }\n\n return shamap.hash\n}\n\n/**\n * Compute the state hash of a list of LedgerEntries.\n *\n * @param entries - List of LedgerEntries.\n * @returns Hash of SHAMap that consists of all entries.\n * @category Utilities\n */\nexport function hashStateTree(entries: LedgerEntry[]): string {\n const shamap = new SHAMap()\n\n entries.forEach((ledgerEntry) => {\n const data = encode(ledgerEntry)\n shamap.addItem(ledgerEntry.index, data, NodeType.ACCOUNT_STATE)\n })\n\n return shamap.hash\n}\n\nfunction computeTransactionHash(\n ledger: LedgerVersionMap,\n options: HashLedgerHeaderOptions,\n): string {\n const { transaction_hash } = ledger\n\n if (!options.computeTreeHashes) {\n return transaction_hash\n }\n\n if (ledger.transactions == null) {\n throw new ValidationError('transactions is missing from the ledger')\n }\n\n const transactionHash = hashTxTree(ledger.transactions)\n\n if (transaction_hash !== transactionHash) {\n throw new ValidationError(\n 'transactionHash in header' +\n ' does not match computed hash of transactions',\n {\n transactionHashInHeader: transaction_hash,\n computedHashOfTransactions: transactionHash,\n },\n )\n }\n\n return transactionHash\n}\n\nfunction computeStateHash(\n ledger: LedgerVersionMap,\n options: HashLedgerHeaderOptions,\n): string {\n const { account_hash } = ledger\n\n if (!options.computeTreeHashes) {\n return account_hash\n }\n\n if (ledger.accountState == null) {\n throw new ValidationError('accountState is missing from the ledger')\n }\n\n const stateHash = hashStateTree(ledger.accountState)\n\n if (account_hash !== stateHash) {\n throw new ValidationError(\n 'stateHash in header does not match computed hash of state',\n )\n }\n\n return stateHash\n}\n\n/**\n * Compute the hash of a ledger.\n *\n * @param ledger - Ledger to compute the hash for.\n * @param options - Allow client to recompute Transaction and State Hashes.\n * @param options.computeTreeHashes - Whether to recompute the Transaction and State Hashes.\n * @returns The has of ledger.\n * @category Utilities\n */\nfunction hashLedger(\n ledger: LedgerVersionMap,\n options: {\n computeTreeHashes?: boolean\n } = {},\n): string {\n const subhashes = {\n transaction_hash: computeTransactionHash(ledger, options),\n account_hash: computeStateHash(ledger, options),\n }\n return hashLedgerHeader({ ...ledger, ...subhashes })\n}\n\nexport default hashLedger\n", "/**\n * XRP Ledger namespace prefixes.\n *\n * The XRP Ledger is a key-value store. In order to avoid name collisions,\n * names are partitioned into namespaces.\n *\n * Each namespace is just a single character prefix.\n *\n * See [LedgerNameSpace enum](https://github.com/ripple/rippled/blob/master/src/ripple/protocol/LedgerFormats.h#L100).\n */\nconst ledgerSpaces = {\n account: 'a',\n dirNode: 'd',\n generatorMap: 'g',\n rippleState: 'r',\n // Entry for an offer.\n offer: 'o',\n // Directory of things owned by an account.\n ownerDir: 'O',\n // Directory of order books.\n bookDir: 'B',\n contract: 'c',\n skipList: 's',\n escrow: 'u',\n amendment: 'f',\n feeSettings: 'e',\n ticket: 'T',\n signerList: 'S',\n paychan: 'x',\n check: 'C',\n depositPreauth: 'p',\n}\n\nexport default ledgerSpaces\n", "/* eslint-disable @typescript-eslint/no-magic-numbers -- this file mimics\n behavior in rippled. Magic numbers are used for lengths and conditions */\n/* eslint-disable no-bitwise -- this file mimics behavior in rippled. It uses\n bitwise operators for and-ing numbers with a mask and bit shifting. */\n\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\nimport BigNumber from 'bignumber.js'\nimport { decodeAccountID } from 'ripple-address-codec'\n\nimport hashLedger, {\n hashLedgerHeader,\n hashSignedTx,\n hashTxTree,\n hashStateTree,\n} from './hashLedger'\nimport HashPrefix from './HashPrefix'\nimport ledgerSpaces from './ledgerSpaces'\nimport sha512Half from './sha512Half'\n\nconst HEX = 16\nconst BYTE_LENGTH = 4\n\nfunction addressToHex(address: string): string {\n return bytesToHex(decodeAccountID(address))\n}\n\nfunction ledgerSpaceHex(name: keyof typeof ledgerSpaces): string {\n return ledgerSpaces[name].charCodeAt(0).toString(HEX).padStart(4, '0')\n}\n\nconst MASK = 0xff\nfunction currencyToHex(currency: string): string {\n if (currency.length !== 3) {\n return currency\n }\n\n const bytes = Array(20).fill(0)\n bytes[12] = currency.charCodeAt(0) & MASK\n bytes[13] = currency.charCodeAt(1) & MASK\n bytes[14] = currency.charCodeAt(2) & MASK\n return bytesToHex(Uint8Array.from(bytes))\n}\n\n/**\n * Hash the given binary transaction data with the single-signing prefix.\n *\n * See [Serialization Format](https://xrpl.org/serialization.html).\n *\n * @param txBlobHex - The binary transaction blob as a hexadecimal string.\n * @returns The hash to sign.\n * @category Utilities\n */\nexport function hashTx(txBlobHex: string): string {\n const prefix = HashPrefix.TRANSACTION_SIGN.toString(HEX).toUpperCase()\n return sha512Half(prefix + txBlobHex)\n}\n\n/**\n * Compute AccountRoot Ledger Object Index.\n *\n * All objects in a ledger's state tree have a unique Index.\n * The AccountRoot Ledger Object Index is derived by hashing the\n * address with a namespace identifier. This ensures every\n * Index is unique.\n *\n * See [Ledger Object Indexes](https://xrpl.org/ledger-object-ids.html).\n *\n * @param address - The classic account address.\n * @returns The Ledger Object Index for the account.\n * @category Utilities\n */\nexport function hashAccountRoot(address: string): string {\n return sha512Half(ledgerSpaceHex('account') + addressToHex(address))\n}\n\n/**\n * [SignerList Index Format](https://xrpl.org/signerlist.html#signerlist-id-format).\n *\n * The Index of a SignerList object is the SHA-512Half of the following values, concatenated in order:\n * * The RippleState space key (0x0053)\n * * The AccountID of the owner of the SignerList\n * * The SignerListID (currently always 0).\n *\n * This method computes a SignerList Ledger Object Index.\n *\n * @param address - The classic account address of the SignerList owner (starting with r).\n * @returns The Index of the account's SignerList object.\n * @category Utilities\n */\nexport function hashSignerListId(address: string): string {\n return sha512Half(\n `${ledgerSpaceHex('signerList') + addressToHex(address)}00000000`,\n )\n}\n\n/**\n * [Offer Index Format](https://xrpl.org/offer.html#offer-id-format).\n *\n * The Index of a Offer object is the SHA-512Half of the following values, concatenated in order:\n * * The Offer space key (0x006F)\n * * The AccountID of the account placing the offer\n * * The Sequence number of the OfferCreate transaction that created the offer.\n *\n * This method computes an Offer Index.\n *\n * @param address - The classic account address of the SignerList owner (starting with r).\n * @param sequence - Sequence of the Offer.\n * @returns The Index of the account's Offer object.\n * @category Utilities\n */\nexport function hashOfferId(address: string, sequence: number): string {\n const hexPrefix = ledgerSpaces.offer\n .charCodeAt(0)\n .toString(HEX)\n .padStart(2, '0')\n const hexSequence = sequence.toString(HEX).padStart(8, '0')\n const prefix = `00${hexPrefix}`\n return sha512Half(prefix + addressToHex(address) + hexSequence)\n}\n\n/**\n * Compute the hash of a Trustline.\n *\n * @param address1 - One of the addresses in the Trustline.\n * @param address2 - The other address in the Trustline.\n * @param currency - Currency in the Trustline.\n * @returns The hash of the Trustline.\n * @category Utilities\n */\nexport function hashTrustline(\n address1: string,\n address2: string,\n currency: string,\n): string {\n const address1Hex = addressToHex(address1)\n const address2Hex = addressToHex(address2)\n\n const swap = new BigNumber(address1Hex, 16).isGreaterThan(\n new BigNumber(address2Hex, 16),\n )\n const lowAddressHex = swap ? address2Hex : address1Hex\n const highAddressHex = swap ? address1Hex : address2Hex\n\n const prefix = ledgerSpaceHex('rippleState')\n return sha512Half(\n prefix + lowAddressHex + highAddressHex + currencyToHex(currency),\n )\n}\n\n/**\n * Compute the Hash of an Escrow LedgerEntry.\n *\n * @param address - Address of the Escrow.\n * @param sequence - OfferSequence of the Escrow.\n * @returns The hash of the Escrow LedgerEntry.\n * @category Utilities\n */\nexport function hashEscrow(address: string, sequence: number): string {\n return sha512Half(\n ledgerSpaceHex('escrow') +\n addressToHex(address) +\n sequence.toString(HEX).padStart(BYTE_LENGTH * 2, '0'),\n )\n}\n\n/**\n * Compute the hash of a Payment Channel.\n *\n * @param address - Account of the Payment Channel.\n * @param dstAddress - Destination Account of the Payment Channel.\n * @param sequence - Sequence number of the Transaction that created the Payment Channel.\n * @returns Hash of the Payment Channel.\n * @category Utilities\n */\nexport function hashPaymentChannel(\n address: string,\n dstAddress: string,\n sequence: number,\n): string {\n return sha512Half(\n ledgerSpaceHex('paychan') +\n addressToHex(address) +\n addressToHex(dstAddress) +\n sequence.toString(HEX).padStart(BYTE_LENGTH * 2, '0'),\n )\n}\n\nexport { hashLedgerHeader, hashSignedTx, hashLedger, hashStateTree, hashTxTree }\n", "/* eslint-disable @typescript-eslint/no-magic-numbers -- Doing hex string parsing. */\nimport { hexToBytes } from '@xrplf/isomorphic/utils'\nimport BigNumber from 'bignumber.js'\nimport { encodeAccountID } from 'ripple-address-codec'\n\nimport { XrplError } from '../errors'\n\n/**\n * An issuer may issue several NFTs with the same taxon; to ensure that NFTs are\n * spread across multiple pages we lightly mix the taxon up by using the sequence\n * (which is not under the issuer's direct control) as the seed for a simple linear\n * congruential generator.\n *\n * From the Hull-Dobell theorem we know that f(x)=(m*x+c) mod n will yield a\n * permutation of [0, n) when n is a power of 2 if m is congruent to 1 mod 4 and\n * c is odd. By doing a bitwise XOR with this permutation we can scramble/unscramble\n * the taxon.\n *\n * The XLS-20d proposal fixes m = 384160001 and c = 2459.\n * We then take the modulus of 2^32 which is 4294967296.\n *\n * @param taxon - The scrambled or unscrambled taxon (The XOR is both the encoding and decoding)\n * @param tokenSeq - The account sequence when the token was minted. Used as a psuedorandom seed.\n * @returns the opposite taxon. If the taxon was scrambled it becomes unscrambled, and vice versa.\n */\nfunction unscrambleTaxon(taxon: number, tokenSeq: number): number {\n /* eslint-disable no-bitwise -- XOR is part of the encode/decode scheme. */\n const seed = 384160001\n const increment = 2459\n const max = 4294967296\n\n const scramble = new BigNumber(seed)\n .multipliedBy(tokenSeq)\n .modulo(max)\n .plus(increment)\n .modulo(max)\n .toNumber()\n return (taxon ^ scramble) >>> 0\n /* eslint-enable no-bitwise */\n}\n\n/**\n * Parses an NFTokenID into the information it is encoding.\n *\n * Example decoding:\n *\n * 000B 0539 C35B55AA096BA6D87A6E6C965A6534150DC56E5E 12C5D09E 0000000C\n * +--- +--- +--------------------------------------- +------- +-------\n * | | | | |\n * | | | | `---> Sequence: 12\n * | | | |\n * | | | `---> Scrambled Taxon: 314,953,886\n * | | | Unscrambled Taxon: 1337\n * | | |\n * | | `---> Issuer: rJoxBSzpXhPtAuqFmqxQtGKjA13jUJWthE\n * | |\n * | `---> TransferFee: 1337.0 bps or 13.37%\n * |\n * `---> Flags: 11 -> lsfBurnable, lsfOnlyXRP and lsfTransferable\n *\n * @param nftokenID - A hex string which identifies an NFToken on the ledger.\n * @throws XrplError when given an invalid nftokenID.\n * @returns a decoded nftokenID with all fields encoded within.\n */\nexport default function parseNFTokenID(nftokenID: string): {\n NFTokenID: string\n Flags: number\n TransferFee: number\n Issuer: string\n Taxon: number\n Sequence: number\n} {\n const expectedLength = 64\n if (nftokenID.length !== expectedLength) {\n throw new XrplError(`Attempting to parse a nftokenID with length ${nftokenID.length}\n , but expected a token with length ${expectedLength}`)\n }\n\n const scrambledTaxon = new BigNumber(\n nftokenID.substring(48, 56),\n 16,\n ).toNumber()\n const sequence = new BigNumber(nftokenID.substring(56, 64), 16).toNumber()\n\n const NFTokenIDData = {\n NFTokenID: nftokenID,\n Flags: new BigNumber(nftokenID.substring(0, 4), 16).toNumber(),\n TransferFee: new BigNumber(nftokenID.substring(4, 8), 16).toNumber(),\n Issuer: encodeAccountID(hexToBytes(nftokenID.substring(8, 48))),\n Taxon: unscrambleTaxon(scrambledTaxon, sequence),\n Sequence: sequence,\n }\n\n return NFTokenIDData\n}\n", "import BigNumber from 'bignumber.js'\n\nimport { ValidationError } from '../errors'\n\nconst BASE_TEN = 10\nconst ONE_BILLION = '1000000000'\nconst TWO_BILLION = '2000000000'\n\nfunction percentToDecimal(percent: string): string {\n if (!percent.endsWith('%')) {\n throw new ValidationError(`Value ${percent} must end with %`)\n }\n\n // Split the string on % and filter out any empty strings\n const split = percent.split('%').filter((str) => str !== '')\n if (split.length !== 1) {\n throw new ValidationError(`Value ${percent} contains too many % signs`)\n }\n\n return new BigNumber(split[0]).dividedBy('100').toString(BASE_TEN)\n}\n\n/**\n * Converts a string decimal to \"billionths\" format for use with TransferRate.\n *\n * @param decimal - A string decimal between 0 and 1.00\n * @returns A number in the \"billionths\" format.\n * @throws ValidationError when the parameter is not convertible to\n * \"billionths\" format.\n * @category Utilities\n */\nexport function decimalToTransferRate(decimal: string): number {\n const rate = new BigNumber(decimal).times(ONE_BILLION).plus(ONE_BILLION)\n\n if (rate.isLessThan(ONE_BILLION) || rate.isGreaterThan(TWO_BILLION)) {\n throw new ValidationError(`Decimal value must be between 0 and 1.00.`)\n }\n\n const billionths = rate.toString(BASE_TEN)\n\n if (billionths === ONE_BILLION) {\n return 0\n }\n\n if (billionths === 'NaN') {\n throw new ValidationError(`Value is not a number`)\n }\n\n if (billionths.includes('.')) {\n throw new ValidationError(`Decimal exceeds maximum precision.`)\n }\n\n return Number(billionths)\n}\n\n/**\n * Converts a string percent to \"billionths\" format for use with TransferRate.\n *\n * @param percent - A string percent between 0% and 100%.\n * @returns A number in the \"billionths\" format.\n * @throws ValidationError when the percent parameter is not convertible to\n * \"billionths\" format.\n * @category Utilities\n */\nexport function percentToTransferRate(percent: string): number {\n return decimalToTransferRate(percentToDecimal(percent))\n}\n\n/**\n * Converts a string decimal to the \"billionths\" format for use with QualityIn/\n * QualityOut\n *\n * @param decimal - A string decimal (i.e. \".00034\").\n * @returns A number in the \"billionths\" format.\n * @throws ValidationError when the parameter is not convertible to\n * \"billionths\" format.\n * @category Utilities\n */\nexport function decimalToQuality(decimal: string): number {\n const rate = new BigNumber(decimal).times(ONE_BILLION)\n\n const billionths = rate.toString(BASE_TEN)\n\n if (billionths === 'NaN') {\n throw new ValidationError(`Value is not a number`)\n }\n\n if (billionths.includes('-')) {\n throw new ValidationError('Cannot have negative Quality')\n }\n\n if (billionths === ONE_BILLION) {\n return 0\n }\n\n if (billionths.includes('.')) {\n throw new ValidationError(`Decimal exceeds maximum precision.`)\n }\n\n return Number(billionths)\n}\n\n/**\n * Converts a quality in \"billionths\" format to a decimal.\n *\n * @param quality - Quality to convert to decimal.\n * @returns decimal representation of quality.\n * @throws ValidationError when quality is not convertible to decimal format.\n * @category Utilities\n */\nexport function qualityToDecimal(quality: number): string {\n if (!Number.isInteger(quality)) {\n throw new ValidationError('Quality must be an integer')\n }\n\n if (quality < 0) {\n throw new ValidationError('Negative quality not allowed')\n }\n\n if (quality === 0) {\n return '1'\n }\n\n const decimal = new BigNumber(quality).dividedBy(ONE_BILLION)\n\n return decimal.toString(BASE_TEN)\n}\n\n/**\n * Converts a transfer rate in \"billionths\" format to a decimal.\n *\n * @param rate - TransferRate to convert to decimal.\n * @returns decimal representation of transfer Rate.\n * @throws ValidationError when it cannot convert from billionths format.\n * @category Utilities\n */\nexport function transferRateToDecimal(rate: number): string {\n if (!Number.isInteger(rate)) {\n throw new ValidationError(\n 'Error decoding, transfer Rate must be an integer',\n )\n }\n\n if (rate === 0) {\n return '0'\n }\n\n const decimal = new BigNumber(rate).minus(ONE_BILLION).dividedBy(ONE_BILLION)\n\n if (decimal.isLessThan(0)) {\n throw new ValidationError('Error decoding, negative transfer rate')\n }\n\n return decimal.toString(BASE_TEN)\n}\n\n/**\n * Converts a string percent to the \"billionths\" format for use with QualityIn/\n * QualityOut\n *\n * @param percent - A string percent (i.e. \".034%\").\n * @returns A number in the \"billionths\" format.\n * @throws ValidationError when the percent parameter is not convertible to\n * \"billionths\" format.\n * @category Utilities\n */\nexport function percentToQuality(percent: string): number {\n return decimalToQuality(percentToDecimal(percent))\n}\n", "import { encodeForSigningClaim } from 'ripple-binary-codec'\nimport { sign } from 'ripple-keypairs'\n\nimport { xrpToDrops } from './xrpConversion'\n\n/**\n * Sign a payment channel claim.\n *\n * @param channel - Channel identifier specified by the paymentChannelClaim.\n * @param xrpAmount - XRP Amount specified by the paymentChannelClaim.\n * @param privateKey - Private Key to sign paymentChannelClaim with.\n * @returns True if the channel is valid.\n * @category Utilities\n */\nfunction signPaymentChannelClaim(\n channel: string,\n xrpAmount: string,\n privateKey: string,\n): string {\n const signingData = encodeForSigningClaim({\n channel,\n amount: xrpToDrops(xrpAmount),\n })\n return sign(signingData, privateKey)\n}\n\nexport default signPaymentChannelClaim\n", "import { stringToHex, hexToString } from '@xrplf/isomorphic/utils'\n\n/**\n * Converts a string to its hex equivalent. Useful for Memos.\n *\n * @param string - The string to convert to Hex.\n * @returns The Hex equivalent of the string.\n *\n * @deprecated use `@xrplf/isomorphic/utils`'s `stringToHex`\n *\n * @category Utilities\n */\nfunction convertStringToHex(string: string): string {\n return stringToHex(string)\n}\n\n/**\n * Converts hex to its string equivalent. Useful to read the Domain field and some Memos.\n *\n * @param hex - The hex to convert to a string.\n * @param encoding - The encoding to use. Defaults to 'utf8' (UTF-8). 'ascii' is also allowed.\n * @returns The converted string.\n *\n * @deprecated use `@xrplf/isomorphic/utils`'s `hexToString`\n *\n * @category Utilities\n */\nfunction convertHexToString(hex: string, encoding = 'utf8'): string {\n return hexToString(hex, encoding)\n}\n\nexport { convertHexToString, convertStringToHex }\n", "const RIPPLE_EPOCH_DIFF = 0x386d4380\n\n/**\n * Convert a ripple timestamp to a unix timestamp.\n *\n * @param rpepoch - (seconds since 1/1/2000 GMT).\n * @returns Milliseconds since unix epoch.\n * @category Utilities\n */\nfunction rippleTimeToUnixTime(rpepoch: number): number {\n return (rpepoch + RIPPLE_EPOCH_DIFF) * 1000\n}\n\n/**\n * Convert a unix timestamp to a ripple timestamp.\n *\n * @param timestamp - (ms since unix epoch).\n * @returns Seconds since Ripple Epoch (1/1/2000 GMT).\n * @category Utilities\n */\nfunction unixTimeToRippleTime(timestamp: number): number {\n return Math.round(timestamp / 1000) - RIPPLE_EPOCH_DIFF\n}\n\n/**\n * Convert a ripple timestamp to an Iso8601 timestamp.\n *\n * @param rippleTime - Is the number of seconds since Ripple Epoch (1/1/2000 GMT).\n * @returns Iso8601 international standard date format.\n * @category Utilities\n */\nfunction rippleTimeToISOTime(rippleTime: number): string {\n return new Date(rippleTimeToUnixTime(rippleTime)).toISOString()\n}\n\n/**\n * Convert an ISO8601 timestmap to a ripple timestamp.\n *\n * @param iso8601 - International standard date format.\n * @returns Seconds since ripple epoch (1/1/2000 GMT).\n * @category Utilities\n */\nfunction isoTimeToRippleTime(iso8601: string | Date): number {\n const isoDate = typeof iso8601 === 'string' ? new Date(iso8601) : iso8601\n return unixTimeToRippleTime(isoDate.getTime())\n}\n\nexport {\n rippleTimeToUnixTime,\n unixTimeToRippleTime,\n rippleTimeToISOTime,\n isoTimeToRippleTime,\n}\n", "import { encodeForSigningClaim } from 'ripple-binary-codec'\nimport { verify } from 'ripple-keypairs'\n\nimport { xrpToDrops } from './xrpConversion'\n\n/**\n * Verify the signature of a payment channel claim.\n *\n * @param channel - Channel identifier specified by the paymentChannelClaim.\n * @param xrpAmount - XRP Amount specified by the paymentChannelClaim.\n * @param signature - Signature produced from signing paymentChannelClaim.\n * @param publicKey - Public key that signed the paymentChannelClaim.\n * @returns True if the channel is valid.\n * @category Utilities\n */\n// eslint-disable-next-line max-params -- Needs 4 params\nfunction verifyPaymentChannelClaim(\n channel: string,\n xrpAmount: string,\n signature: string,\n publicKey: string,\n): boolean {\n const signingData = encodeForSigningClaim({\n channel,\n amount: xrpToDrops(xrpAmount),\n })\n return verify(signingData, signature, publicKey)\n}\n\nexport default verifyPaymentChannelClaim\n", "import {\n classicAddressToXAddress,\n decodeAccountID,\n decodeAccountPublic,\n decodeNodePublic,\n decodeSeed,\n decodeXAddress,\n encodeAccountID,\n encodeAccountPublic,\n encodeNodePublic,\n encodeSeed,\n encodeXAddress,\n isValidClassicAddress,\n isValidXAddress,\n xAddressToClassicAddress,\n} from 'ripple-address-codec'\nimport {\n encode as rbcEncode,\n decode as rbcDecode,\n encodeForMultisigning as rbcEncodeForMultisigning,\n encodeForSigning as rbcEncodeForSigning,\n encodeForSigningClaim as rbcEncodeForSigningClaim,\n} from 'ripple-binary-codec'\nimport { verify as verifyKeypairSignature } from 'ripple-keypairs'\n\nimport type { APIVersion } from '../models'\nimport { LedgerEntry } from '../models/ledger'\nimport { Response } from '../models/methods'\nimport { PaymentChannelClaim } from '../models/transactions/paymentChannelClaim'\nimport { Transaction } from '../models/transactions/transaction'\n\nimport { deriveKeypair, deriveAddress, deriveXAddress } from './derive'\nimport getBalanceChanges from './getBalanceChanges'\nimport getNFTokenID from './getNFTokenID'\nimport getXChainClaimID from './getXChainClaimID'\nimport {\n hashSignedTx,\n hashTx,\n hashAccountRoot,\n hashSignerListId,\n hashOfferId,\n hashTrustline,\n hashTxTree,\n hashStateTree,\n hashLedger,\n hashLedgerHeader,\n hashEscrow,\n hashPaymentChannel,\n} from './hashes'\nimport parseNFTokenID from './parseNFTokenID'\nimport {\n percentToTransferRate,\n decimalToTransferRate,\n transferRateToDecimal,\n percentToQuality,\n decimalToQuality,\n qualityToDecimal,\n} from './quality'\nimport signPaymentChannelClaim from './signPaymentChannelClaim'\nimport { convertHexToString, convertStringToHex } from './stringConversion'\nimport {\n rippleTimeToISOTime,\n isoTimeToRippleTime,\n rippleTimeToUnixTime,\n unixTimeToRippleTime,\n} from './timeConversion'\nimport verifyPaymentChannelClaim from './verifyPaymentChannelClaim'\nimport { xrpToDrops, dropsToXrp } from './xrpConversion'\n\n/**\n * Check if a secret is valid.\n *\n * @param secret - Secret to test for validity.\n * @returns True if secret can be derived into a keypair.\n * @category Utilities\n */\nfunction isValidSecret(secret: string): boolean {\n try {\n deriveKeypair(secret)\n return true\n } catch (_err) {\n return false\n }\n}\n\n/**\n * Encodes a LedgerEntry or Transaction into a hex string\n *\n * @param object - LedgerEntry or Transaction in JSON format.\n * @returns A hex string representing the encoded object.\n */\nfunction encode(object: Transaction | LedgerEntry): string {\n return rbcEncode(object)\n}\n\n/**\n * Encodes a Transaction for signing\n *\n * @param object - LedgerEntry in JSON or Transaction format.\n * @returns A hex string representing the encoded object.\n */\nfunction encodeForSigning(object: Transaction): string {\n return rbcEncodeForSigning(object)\n}\n\n/**\n * Encodes a PaymentChannelClaim for signing\n *\n * @param object - PaymentChannelClaim in JSON format.\n * @returns A hex string representing the encoded object.\n */\nfunction encodeForSigningClaim(object: PaymentChannelClaim): string {\n return rbcEncodeForSigningClaim(object)\n}\n\n/**\n * Encodes a Transaction for multi-signing\n *\n * @param object - Transaction in JSON format.\n * @param signer - The address of the account signing this transaction\n * @returns A hex string representing the encoded object.\n */\nfunction encodeForMultiSigning(object: Transaction, signer: string): string {\n return rbcEncodeForMultisigning(object, signer)\n}\n\n/**\n * Decodes a hex string into a transaction | ledger entry\n *\n * @param hex - hex string in the XRPL serialization format.\n * @returns The hex string decoded according to XRPL serialization format.\n */\nfunction decode(hex: string): Record {\n return rbcDecode(hex)\n}\n\n/**\n * Validates that a given address is a valid X-Address or a valid classic\n * address.\n *\n * @param address - Address to validate.\n * @returns True if address is a valid X-Address or classic address.\n * @category Utilities\n */\nfunction isValidAddress(address: string): boolean {\n return isValidXAddress(address) || isValidClassicAddress(address)\n}\n\n/**\n * Returns true if there are more pages of data.\n *\n * When there are more results than contained in the response, the response\n * includes a `marker` field.\n *\n * See https://ripple.com/build/rippled-apis/#markers-and-pagination.\n *\n * @param response - Response to check for more pages on.\n * @returns Whether the response has more pages of data.\n * @category Utilities\n */\nfunction hasNextPage(response: Response): boolean {\n // eslint-disable-next-line @typescript-eslint/dot-notation -- only checking if it exists\n return Boolean(response.result['marker'])\n}\n\n/**\n * @category Utilities\n */\nconst hashes = {\n hashSignedTx,\n hashTx,\n hashAccountRoot,\n hashSignerListId,\n hashOfferId,\n hashTrustline,\n hashTxTree,\n hashStateTree,\n hashLedger,\n hashLedgerHeader,\n hashEscrow,\n hashPaymentChannel,\n}\n\nexport {\n getBalanceChanges,\n dropsToXrp,\n xrpToDrops,\n hasNextPage,\n rippleTimeToISOTime,\n isoTimeToRippleTime,\n rippleTimeToUnixTime,\n unixTimeToRippleTime,\n percentToQuality,\n decimalToQuality,\n percentToTransferRate,\n decimalToTransferRate,\n transferRateToDecimal,\n qualityToDecimal,\n isValidSecret,\n isValidAddress,\n hashes,\n deriveKeypair,\n deriveAddress,\n deriveXAddress,\n signPaymentChannelClaim,\n verifyKeypairSignature,\n verifyPaymentChannelClaim,\n convertStringToHex,\n convertHexToString,\n classicAddressToXAddress,\n xAddressToClassicAddress,\n isValidXAddress,\n isValidClassicAddress,\n encodeSeed,\n decodeSeed,\n encodeAccountID,\n decodeAccountID,\n encodeNodePublic,\n decodeNodePublic,\n encodeAccountPublic,\n decodeAccountPublic,\n encodeXAddress,\n decodeXAddress,\n encode,\n decode,\n encodeForMultiSigning,\n encodeForSigning,\n encodeForSigningClaim,\n getNFTokenID,\n parseNFTokenID,\n getXChainClaimID,\n}\n", "import type {\n Client,\n SubmitRequest,\n SubmitResponse,\n SubmittableTransaction,\n Transaction,\n Wallet,\n} from '..'\nimport { ValidationError, XrplError } from '../errors'\nimport { Signer } from '../models/common'\nimport { TxResponse } from '../models/methods'\nimport { BaseTransaction } from '../models/transactions/common'\nimport { decode, encode } from '../utils'\n\n/** Approximate time for a ledger to close, in milliseconds */\nconst LEDGER_CLOSE_TIME = 1000\n\nasync function sleep(ms: number): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n}\n\n// Helper functions\n\n/**\n * Submits a request to the client with a signed transaction.\n *\n * @param client - The client to submit the request to.\n * @param signedTransaction - The signed transaction to submit. It can be either a Transaction object or a\n * string (encode from ripple-binary-codec) representation of the transaction.\n * @param [failHard=false] - Optional. Determines whether the submission should fail hard (true) or not (false). Default is false.\n * @returns A promise that resolves with the response from the client.\n * @throws {ValidationError} If the signed transaction is not valid (not signed).\n *\n * @example\n * import { Client } from \"xrpl\"\n * const client = new Client(\"wss://s.altnet.rippletest.net:51233\");\n * await client.connect();\n * const signedTransaction = createSignedTransaction();\n * // Example 1: Submitting a Transaction object\n * const response1 = await submitRequest(client, signedTransaction);\n *\n * // Example 2: Submitting a string representation of the transaction\n * const signedTransactionString = encode(signedTransaction);\n * const response2 = await submitRequest(client, signedTransactionString, true);\n */\nexport async function submitRequest(\n client: Client,\n signedTransaction: SubmittableTransaction | string,\n failHard = false,\n): Promise {\n if (!isSigned(signedTransaction)) {\n throw new ValidationError('Transaction must be signed.')\n }\n\n const signedTxEncoded =\n typeof signedTransaction === 'string'\n ? signedTransaction\n : encode(signedTransaction)\n const request: SubmitRequest = {\n command: 'submit',\n tx_blob: signedTxEncoded,\n fail_hard: isAccountDelete(signedTransaction) || failHard,\n }\n return client.request(request)\n}\n\n/**\n * Waits for the final outcome of a transaction by polling the ledger until the result can be considered final,\n * meaning it has either been included in a validated ledger, or the transaction's lastLedgerSequence has been\n * surpassed by the latest ledger sequence (meaning it will never be included in a validated ledger).\n *\n * @template T - The type of the transaction. Defaults to `Transaction`.\n * @param client - The client to use for requesting transaction information.\n * @param txHash - The hash of the transaction to wait for.\n * @param lastLedger - The last ledger sequence of the transaction.\n * @param submissionResult - The preliminary result of the transaction.\n * @returns A promise that resolves with the final transaction response.\n *\n * @throws {XrplError} If the latest ledger sequence surpasses the transaction's lastLedgerSequence.\n *\n * @example\n * import { hashes, Client } from \"xrpl\"\n * const client = new Client(\"wss://s.altnet.rippletest.net:51233\")\n * await client.connect()\n *\n * const transaction = createTransaction() // your transaction function\n *\n * const signedTx = await getSignedTx(this, transaction)\n *\n * const lastLedger = getLastLedgerSequence(signedTx)\n *\n * if (lastLedger == null) {\n * throw new ValidationError(\n * 'Transaction must contain a LastLedgerSequence value for reliable submission.',\n * )\n * }\n *\n * const response = await submitRequest(this, signedTx, opts?.failHard)\n *\n * const txHash = hashes.hashSignedTx(signedTx)\n * return waitForFinalTransactionOutcome(\n * this,\n * txHash,\n * lastLedger,\n * response.result.engine_result,\n * )\n */\n// eslint-disable-next-line max-params, max-lines-per-function -- this function needs to display and do with more information.\nexport async function waitForFinalTransactionOutcome<\n T extends BaseTransaction = SubmittableTransaction,\n>(\n client: Client,\n txHash: string,\n lastLedger: number,\n submissionResult: string,\n): Promise> {\n await sleep(LEDGER_CLOSE_TIME)\n\n const latestLedger = await client.getLedgerIndex()\n\n if (lastLedger < latestLedger) {\n throw new XrplError(\n `The latest ledger sequence ${latestLedger} is greater than the transaction's LastLedgerSequence (${lastLedger}).\\n` +\n `Preliminary result: ${submissionResult}`,\n )\n }\n\n const txResponse = await client\n .request({\n command: 'tx',\n transaction: txHash,\n })\n .catch(async (error) => {\n // error is of an unknown type and hence we assert type to extract the value we need.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions,@typescript-eslint/no-unsafe-member-access -- ^\n const message = error?.data?.error as string\n if (message === 'txnNotFound') {\n return waitForFinalTransactionOutcome(\n client,\n txHash,\n lastLedger,\n submissionResult,\n )\n }\n throw new Error(\n `${message} \\n Preliminary result: ${submissionResult}.\\nFull error details: ${String(\n error,\n )}`,\n )\n })\n\n if (txResponse.result.validated) {\n // TODO: resolve the type assertion below\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know that txResponse is of type TxResponse\n return txResponse as TxResponse\n }\n\n return waitForFinalTransactionOutcome(\n client,\n txHash,\n lastLedger,\n submissionResult,\n )\n}\n\n// checks if the transaction has been signed\nfunction isSigned(transaction: SubmittableTransaction | string): boolean {\n const tx = typeof transaction === 'string' ? decode(transaction) : transaction\n if (typeof tx === 'string') {\n return false\n }\n if (tx.Signers != null) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- we know that tx.Signers is an array of Signers\n const signers = tx.Signers as Signer[]\n for (const signer of signers) {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- necessary check\n signer.Signer.SigningPubKey == null ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- necessary check\n signer.Signer.TxnSignature == null\n ) {\n return false\n }\n }\n return true\n }\n return tx.SigningPubKey != null && tx.TxnSignature != null\n}\n\n/**\n * Updates a transaction with `autofill` then signs it if it is unsigned.\n *\n * @param client - The client from which to retrieve the signed transaction.\n * @param transaction - The transaction to retrieve. It can be either a Transaction object or\n * a string (encode from ripple-binary-codec) representation of the transaction.\n * @param [options={}] - Optional. Additional options for retrieving the signed transaction.\n * @param [options.autofill=true] - Optional. Determines whether the transaction should be autofilled (true)\n * or not (false). Default is true.\n * @param [options.wallet] - Optional. A wallet to sign the transaction. It must be provided when submitting\n * an unsigned transaction. Default is undefined.\n * @returns A promise that resolves with the signed transaction.\n *\n * @throws {ValidationError} If the transaction is not signed and no wallet is provided.\n *\n * @example\n * import { Client } from \"xrpl\"\n * import { encode } from \"ripple-binary-codec\"\n *\n * const client = new Client(\"wss://s.altnet.rippletest.net:51233\");\n * await client.connect():\n * const transaction = createTransaction(); // createTransaction is your function to create a transaction\n * const options = {\n * autofill: true,\n * wallet: myWallet,\n * };\n *\n * // Example 1: Retrieving a signed Transaction object\n * const signedTx1 = await getSignedTx(client, transaction, options);\n *\n * // Example 2: Retrieving a string representation of the signed transaction\n * const signedTxString = await getSignedTx(client, encode(transaction), options);\n */\nexport async function getSignedTx(\n client: Client,\n transaction: SubmittableTransaction | string,\n {\n autofill = true,\n wallet,\n }: {\n // If true, autofill a transaction.\n autofill?: boolean\n // A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.\n wallet?: Wallet\n } = {},\n): Promise {\n if (isSigned(transaction)) {\n return transaction\n }\n\n if (!wallet) {\n throw new ValidationError(\n 'Wallet must be provided when submitting an unsigned transaction',\n )\n }\n\n let tx =\n typeof transaction === 'string'\n ? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- converts JsonObject to correct Transaction type\n (decode(transaction) as unknown as SubmittableTransaction)\n : transaction\n\n if (autofill) {\n tx = await client.autofill(tx)\n }\n\n return wallet.sign(tx).tx_blob\n}\n\n// checks if there is a LastLedgerSequence as a part of the transaction\n/**\n * Retrieves the last ledger sequence from a transaction.\n *\n * @param transaction - The transaction to retrieve the last ledger sequence from. It can be either a Transaction object or\n * a string (encode from ripple-binary-codec) representation of the transaction.\n * @returns The last ledger sequence of the transaction, or null if not available.\n *\n * @example\n * const transaction = createTransaction(); // your function to create a transaction\n *\n * // Example 1: Retrieving the last ledger sequence from a Transaction object\n * const lastLedgerSequence1 = getLastLedgerSequence(transaction);\n * console.log(lastLedgerSequence1); // Output: 12345\n *\n * // Example 2: Retrieving the last ledger sequence from a string representation of the transaction\n * const transactionString = encode(transaction);\n * const lastLedgerSequence2 = getLastLedgerSequence(transactionString);\n * console.log(lastLedgerSequence2); // Output: 67890\n */\nexport function getLastLedgerSequence(\n transaction: Transaction | string,\n): number | null {\n const tx = typeof transaction === 'string' ? decode(transaction) : transaction\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- converts LastLedgerSeq to number if present.\n return tx.LastLedgerSequence as number | null\n}\n\n// checks if the transaction is an AccountDelete transaction\nfunction isAccountDelete(transaction: Transaction | string): boolean {\n const tx = typeof transaction === 'string' ? decode(transaction) : transaction\n return tx.TransactionType === 'AccountDelete'\n}\n", "import { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'\n\n/**\n * If an address is an X-Address, converts it to a classic address.\n *\n * @param account - A classic address or X-address.\n * @returns The account's classic address.\n * @throws Error if the X-Address has an associated tag.\n */\nexport function ensureClassicAddress(account: string): string {\n if (isValidXAddress(account)) {\n const { classicAddress, tag } = xAddressToClassicAddress(account)\n\n /*\n * Except for special cases, X-addresses used for requests\n * must not have an embedded tag. In other words,\n * `tag` should be `false`.\n */\n if (tag !== false) {\n throw new Error(\n 'This command does not support the use of a tag. Use an address without a tag.',\n )\n }\n\n // For rippled requests that use an account, always use a classic address.\n return classicAddress\n }\n return account\n}\n", "export * from './submit'\n\nexport * from './utils'\n", "import BigNumber from 'bignumber.js'\n\nimport { type Client } from '..'\nimport { XrplError } from '../errors'\n\nconst NUM_DECIMAL_PLACES = 6\nconst BASE_10 = 10\n\n/**\n * Calculates the current transaction fee for the ledger.\n * Note: This is a public API that can be called directly.\n *\n * @param client - The Client used to connect to the ledger.\n * @param cushion - The fee cushion to use.\n * @returns The transaction fee.\n */\nexport default async function getFeeXrp(\n client: Client,\n cushion?: number,\n): Promise {\n const feeCushion = cushion ?? client.feeCushion\n\n const serverInfo = (\n await client.request({\n command: 'server_info',\n })\n ).result.info\n\n const baseFee = serverInfo.validated_ledger?.base_fee_xrp\n\n if (baseFee == null) {\n throw new XrplError(\n 'getFeeXrp: Could not get base_fee_xrp from server_info',\n )\n }\n\n const baseFeeXrp = new BigNumber(baseFee)\n // https://github.com/ripple/rippled/issues/3812#issuecomment-816871100\n serverInfo.load_factor ??= 1\n let fee = baseFeeXrp.times(serverInfo.load_factor).times(feeCushion)\n\n // Cap fee to `client.maxFeeXRP`\n fee = BigNumber.min(fee, client.maxFeeXRP)\n // Round fee to 6 decimal places\n return new BigNumber(fee.toFixed(NUM_DECIMAL_PLACES)).toString(BASE_10)\n}\n", "/* eslint-disable max-lines -- lots of helper functions needed for autofill */\nimport BigNumber from 'bignumber.js'\nimport { xAddressToClassicAddress, isValidXAddress } from 'ripple-address-codec'\n\nimport { type Client } from '..'\nimport { ValidationError, XrplError } from '../errors'\nimport { AccountInfoRequest, AccountObjectsRequest } from '../models/methods'\nimport { Batch, Payment, Transaction } from '../models/transactions'\nimport { xrpToDrops } from '../utils'\n\nimport getFeeXrp from './getFeeXrp'\n\n// Expire unconfirmed transactions after 20 ledger versions, approximately 1 minute, by default\nconst LEDGER_OFFSET = 20\n// Sidechains are expected to have network IDs above this.\n// Networks with ID above this restricted number are expected specify an accurate NetworkID field\n// in every transaction to that chain to prevent replay attacks.\n// Mainnet and testnet are exceptions. More context: https://github.com/XRPLF/rippled/pull/4370\nconst RESTRICTED_NETWORKS = 1024\nconst REQUIRED_NETWORKID_VERSION = '1.11.0'\n\n/**\n * Determines whether the source rippled version is not later than the target rippled version.\n * Example usage: isNotLaterRippledVersion('1.10.0', '1.11.0') returns true.\n * isNotLaterRippledVersion('1.10.0', '1.10.0-b1') returns false.\n *\n * @param source -- The source rippled version.\n * @param target -- The target rippled version.\n * @returns True if source is earlier than target, false otherwise.\n */\n// eslint-disable-next-line max-lines-per-function, max-statements -- Disable for this helper functions.\nfunction isNotLaterRippledVersion(source: string, target: string): boolean {\n if (source === target) {\n return true\n }\n const sourceDecomp = source.split('.')\n const targetDecomp = target.split('.')\n const sourceMajor = parseInt(sourceDecomp[0], 10)\n const sourceMinor = parseInt(sourceDecomp[1], 10)\n const targetMajor = parseInt(targetDecomp[0], 10)\n const targetMinor = parseInt(targetDecomp[1], 10)\n // Compare major version\n if (sourceMajor !== targetMajor) {\n return sourceMajor < targetMajor\n }\n // Compare minor version\n if (sourceMinor !== targetMinor) {\n return sourceMinor < targetMinor\n }\n const sourcePatch = sourceDecomp[2].split('-')\n const targetPatch = targetDecomp[2].split('-')\n\n const sourcePatchVersion = parseInt(sourcePatch[0], 10)\n const targetPatchVersion = parseInt(targetPatch[0], 10)\n\n // Compare patch version\n if (sourcePatchVersion !== targetPatchVersion) {\n return sourcePatchVersion < targetPatchVersion\n }\n\n // Compare release version\n if (sourcePatch.length !== targetPatch.length) {\n return sourcePatch.length > targetPatch.length\n }\n\n if (sourcePatch.length === 2) {\n // Compare different release types\n if (!sourcePatch[1][0].startsWith(targetPatch[1][0])) {\n return sourcePatch[1] < targetPatch[1]\n }\n // Compare beta version\n if (sourcePatch[1].startsWith('b')) {\n return (\n parseInt(sourcePatch[1].slice(1), 10) <\n parseInt(targetPatch[1].slice(1), 10)\n )\n }\n // Compare rc version\n return (\n parseInt(sourcePatch[1].slice(2), 10) <\n parseInt(targetPatch[1].slice(2), 10)\n )\n }\n\n return false\n}\n\n/**\n * Determine if the transaction required a networkID to be valid.\n * Transaction needs networkID if later than restricted ID and build version is >= 1.11.0\n *\n * @param client -- The connected client.\n * @returns True if required networkID, false otherwise.\n */\nexport function txNeedsNetworkID(client: Client): boolean {\n if (\n client.networkID !== undefined &&\n client.networkID > RESTRICTED_NETWORKS\n ) {\n if (\n client.buildVersion &&\n isNotLaterRippledVersion(REQUIRED_NETWORKID_VERSION, client.buildVersion)\n ) {\n return true\n }\n }\n return false\n}\n\ninterface ClassicAccountAndTag {\n classicAccount: string\n tag: number | false | undefined\n}\n\n/**\n * Sets valid addresses for the transaction.\n *\n * @param tx - The transaction object.\n */\nexport function setValidAddresses(tx: Transaction): void {\n validateAccountAddress(tx, 'Account', 'SourceTag')\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Destination can exist on Transaction\n if (tx['Destination'] != null) {\n validateAccountAddress(tx, 'Destination', 'DestinationTag')\n }\n\n // DepositPreauth:\n convertToClassicAddress(tx, 'Authorize')\n convertToClassicAddress(tx, 'Unauthorize')\n // EscrowCancel, EscrowFinish:\n convertToClassicAddress(tx, 'Owner')\n // SetRegularKey:\n convertToClassicAddress(tx, 'RegularKey')\n}\n\n/**\n * Validates the account address in a transaction object.\n *\n * @param tx - The transaction object.\n * @param accountField - The field name for the account address in the transaction object.\n * @param tagField - The field name for the tag in the transaction object.\n * @throws {ValidationError} If the tag field does not match the tag of the account address.\n */\nfunction validateAccountAddress(\n tx: Transaction,\n accountField: string,\n tagField: string,\n): void {\n // if X-address is given, convert it to classic address\n const { classicAccount, tag } = getClassicAccountAndTag(\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- okay here\n tx[accountField] as string,\n )\n // eslint-disable-next-line no-param-reassign -- param reassign is safe\n tx[accountField] = classicAccount\n\n if (tag != null && tag !== false) {\n if (tx[tagField] && tx[tagField] !== tag) {\n throw new ValidationError(\n `The ${tagField}, if present, must match the tag of the ${accountField} X-address`,\n )\n }\n // eslint-disable-next-line no-param-reassign -- param reassign is safe\n tx[tagField] = tag\n }\n}\n\n/**\n * Retrieves the classic account and tag from an account address.\n *\n * @param account - The account address.\n * @param [expectedTag] - The expected tag for the account address.\n * @returns The classic account and tag.\n * @throws {ValidationError} If the address includes a tag that does not match the tag specified in the transaction.\n */\nfunction getClassicAccountAndTag(\n account: string,\n expectedTag?: number,\n): ClassicAccountAndTag {\n if (isValidXAddress(account)) {\n const classic = xAddressToClassicAddress(account)\n if (expectedTag != null && classic.tag !== expectedTag) {\n throw new ValidationError(\n 'address includes a tag that does not match the tag specified in the transaction',\n )\n }\n return {\n classicAccount: classic.classicAddress,\n tag: classic.tag,\n }\n }\n return {\n classicAccount: account,\n tag: expectedTag,\n }\n}\n\n/**\n * Converts the specified field of a transaction object to a classic address format.\n *\n * @param tx - The transaction object.\n * @param fieldName - The name of the field to convert.export\n */\nfunction convertToClassicAddress(tx: Transaction, fieldName: string): void {\n const account = tx[fieldName]\n if (typeof account === 'string') {\n const { classicAccount } = getClassicAccountAndTag(account)\n // eslint-disable-next-line no-param-reassign -- param reassign is safe\n tx[fieldName] = classicAccount\n }\n}\n\n// Helper function to get the next valid sequence number for an account.\nasync function getNextValidSequenceNumber(\n client: Client,\n account: string,\n): Promise {\n const request: AccountInfoRequest = {\n command: 'account_info',\n account,\n ledger_index: 'current',\n }\n const data = await client.request(request)\n return data.result.account_data.Sequence\n}\n\n/**\n * Sets the next valid sequence number for a transaction.\n *\n * @param client - The client object used for making requests.\n * @param tx - The transaction object for which the sequence number needs to be set.\n * @returns A Promise that resolves when the sequence number is set.\n * @throws {Error} If there is an error retrieving the account information.\n */\nexport async function setNextValidSequenceNumber(\n client: Client,\n tx: Transaction,\n): Promise {\n // eslint-disable-next-line no-param-reassign, require-atomic-updates -- param reassign is safe with no race condition\n tx.Sequence = await getNextValidSequenceNumber(client, tx.Account)\n}\n\n/**\n * Fetches the owner reserve fee from the server state using the provided client.\n *\n * @param client - The client object used to make the request.\n * @returns A Promise that resolves to the owner reserve fee as a BigNumber.\n * @throws {Error} Throws an error if the owner reserve fee cannot be fetched.\n */\nasync function fetchOwnerReserveFee(client: Client): Promise {\n const response = await client.request({ command: 'server_state' })\n const fee = response.result.state.validated_ledger?.reserve_inc\n\n if (fee == null) {\n return Promise.reject(new Error('Could not fetch Owner Reserve.'))\n }\n\n return new BigNumber(fee)\n}\n\n/**\n * Calculates the fee per transaction type.\n *\n * @param client - The client object.\n * @param tx - The transaction object.\n * @param [signersCount=0] - The number of signers (default is 0). Only used for multisigning.\n * @returns A promise that returns the fee.\n */\n// eslint-disable-next-line max-lines-per-function -- necessary to check for many transaction types.\nasync function calculateFeePerTransactionType(\n client: Client,\n tx: Transaction,\n signersCount = 0,\n): Promise {\n const netFeeXRP = await getFeeXrp(client)\n const netFeeDrops = xrpToDrops(netFeeXRP)\n let baseFee = new BigNumber(netFeeDrops)\n\n const isSpecialTxCost = ['AccountDelete', 'AMMCreate'].includes(\n tx.TransactionType,\n )\n\n // EscrowFinish Transaction with Fulfillment\n if (tx.TransactionType === 'EscrowFinish' && tx.Fulfillment != null) {\n const fulfillmentBytesSize: number = Math.ceil(tx.Fulfillment.length / 2)\n // BaseFee \u00D7 (33 + (Fulfillment size in bytes / 16))\n baseFee = new BigNumber(\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- expected use of magic numbers\n scaleValue(netFeeDrops, 33 + fulfillmentBytesSize / 16),\n )\n } else if (isSpecialTxCost) {\n baseFee = await fetchOwnerReserveFee(client)\n } else if (tx.TransactionType === 'Batch') {\n const rawTxFees = await tx.RawTransactions.reduce(\n async (acc, rawTxn) => {\n const resolvedAcc = await acc\n const fee = await calculateFeePerTransactionType(\n client,\n rawTxn.RawTransaction,\n )\n return BigNumber.sum(resolvedAcc, fee)\n },\n Promise.resolve(new BigNumber(0)),\n )\n baseFee = BigNumber.sum(baseFee.times(2), rawTxFees)\n }\n\n /*\n * Multi-signed Transaction\n * BaseFee \u00D7 (1 + Number of Signatures Provided)\n */\n if (signersCount > 0) {\n baseFee = BigNumber.sum(baseFee, scaleValue(netFeeDrops, signersCount))\n }\n\n const maxFeeDrops = xrpToDrops(client.maxFeeXRP)\n const totalFee = isSpecialTxCost\n ? baseFee\n : BigNumber.min(baseFee, maxFeeDrops)\n\n // Round up baseFee and return it as a string\n return totalFee.dp(0, BigNumber.ROUND_CEIL)\n}\n\n/**\n * Calculates the fee per transaction type and sets it in the transaction.\n *\n * @param client - The client object.\n * @param tx - The transaction object.\n * @param [signersCount=0] - The number of signers (default is 0). Only used for multisigning.\n * @returns A promise that resolves with void. Modifies the `tx` parameter to give it the calculated fee.\n */\nexport async function getTransactionFee(\n client: Client,\n tx: Transaction,\n signersCount = 0,\n): Promise {\n const fee = await calculateFeePerTransactionType(client, tx, signersCount)\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers, require-atomic-updates, no-param-reassign -- fine here\n tx.Fee = fee.toString(10)\n}\n\n/**\n * Scales the given value by multiplying it with the provided multiplier.\n *\n * @param value - The value to be scaled.\n * @param multiplier - The multiplier to scale the value.\n * @returns The scaled value as a string.\n */\nfunction scaleValue(value, multiplier): string {\n return new BigNumber(value).times(multiplier).toString()\n}\n\n/**\n * Sets the latest validated ledger sequence for the transaction.\n *\n * @param client - The client object.\n * @param tx - The transaction object.\n * @returns A promise that resolves with void. Modifies the `tx` parameter setting `LastLedgerSequence`.\n */\nexport async function setLatestValidatedLedgerSequence(\n client: Client,\n tx: Transaction,\n): Promise {\n const ledgerSequence = await client.getLedgerIndex()\n // eslint-disable-next-line no-param-reassign -- param reassign is safe\n tx.LastLedgerSequence = ledgerSequence + LEDGER_OFFSET\n}\n\n/**\n * Checks for any blockers that prevent the deletion of an account.\n *\n * @param client - The client object.\n * @param tx - The transaction object.\n * @returns A promise that resolves with void if there are no blockers, or rejects with an XrplError if there are blockers.\n */\nexport async function checkAccountDeleteBlockers(\n client: Client,\n tx: Transaction,\n): Promise {\n const request: AccountObjectsRequest = {\n command: 'account_objects',\n account: tx.Account,\n ledger_index: 'validated',\n deletion_blockers_only: true,\n }\n const response = await client.request(request)\n return new Promise((resolve, reject) => {\n if (response.result.account_objects.length > 0) {\n reject(\n new XrplError(\n `Account ${tx.Account} cannot be deleted; there are Escrows, PayChannels, RippleStates, or Checks associated with the account.`,\n response.result.account_objects,\n ),\n )\n }\n resolve()\n })\n}\n\n/**\n * Replaces Amount with DeliverMax if needed.\n *\n * @param tx - The transaction object.\n * @throws ValidationError if Amount and DeliverMax are both provided but do not match.\n */\nexport function handleDeliverMax(tx: Payment): void {\n if (tx.DeliverMax != null) {\n // If only DeliverMax is provided, use it to populate the Amount field\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, no-param-reassign -- needed here\n tx.Amount ??= tx.DeliverMax\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- needed here\n if (tx.Amount != null && tx.Amount !== tx.DeliverMax) {\n throw new ValidationError(\n 'PaymentTransaction: Amount and DeliverMax fields must be identical when both are provided',\n )\n }\n\n // eslint-disable-next-line no-param-reassign -- needed here\n delete tx.DeliverMax\n }\n}\n\n/**\n * Autofills all the relevant `x` fields.\n *\n * @param client - The client object.\n * @param tx - The transaction object.\n * @returns A promise that resolves with void if there are no blockers, or rejects with an XrplError if there are blockers.\n */\n// eslint-disable-next-line complexity, max-lines-per-function -- needed here, lots to check\nexport async function autofillBatchTxn(\n client: Client,\n tx: Batch,\n): Promise {\n const accountSequences: Record = {}\n\n for (const rawTxn of tx.RawTransactions) {\n const txn = rawTxn.RawTransaction\n\n // Sequence processing\n if (txn.Sequence == null && txn.TicketSequence == null) {\n if (txn.Account in accountSequences) {\n txn.Sequence = accountSequences[txn.Account]\n accountSequences[txn.Account] += 1\n } else {\n // eslint-disable-next-line no-await-in-loop -- It has to wait\n const nextSequence = await getNextValidSequenceNumber(\n client,\n txn.Account,\n )\n const sequence =\n txn.Account === tx.Account ? nextSequence + 1 : nextSequence\n accountSequences[txn.Account] = sequence + 1\n txn.Sequence = sequence\n }\n }\n\n if (txn.Fee == null) {\n txn.Fee = '0'\n } else if (txn.Fee !== '0') {\n throw new XrplError('Must have `Fee of \"0\" in inner Batch transaction.')\n }\n\n if (txn.SigningPubKey == null) {\n txn.SigningPubKey = ''\n } else if (txn.SigningPubKey !== '') {\n throw new XrplError(\n 'Must have `SigningPubKey` of \"\" in inner Batch transaction.',\n )\n }\n\n if (txn.TxnSignature != null) {\n throw new XrplError(\n 'Must not have `TxnSignature` in inner Batch transaction.',\n )\n }\n\n if (txn.Signers != null) {\n throw new XrplError('Must not have `Signers` in inner Batch transaction.')\n }\n\n if (txn.NetworkID == null && txNeedsNetworkID(client)) {\n txn.NetworkID = client.networkID\n }\n }\n}\n", "import { AccountLinesTrustline, Balance } from '../models'\n\n/**\n * Formats an array of trustlines into an array of balances.\n *\n * @param trustlines - The array of trustlines to format.\n * @returns An array of balances, each containing the value, currency, and issuer.\n */\nexport function formatBalances(trustlines: AccountLinesTrustline[]): Balance[] {\n return trustlines.map((trustline) => ({\n value: trustline.balance,\n currency: trustline.currency,\n issuer: trustline.account,\n }))\n}\n", "import { Amount } from '../common'\n\nimport { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'\n\nexport interface Book {\n Book: {\n /** The ID of the offer directory that links to this offer. */\n BookDirectory: string\n\n /**\n * A hint indicating which page of the offer directory links to this entry,\n * in case the directory consists of multiple pages.\n */\n BookNode: string\n }\n}\n\nexport default interface Offer extends BaseLedgerEntry, HasPreviousTxnID {\n LedgerEntryType: 'Offer'\n /** A bit-map of boolean flags enabled for this Offer. */\n Flags: number\n /** The address of the account that placed this Offer. */\n Account: string\n /**\n * The Sequence value of the OfferCreate transaction that created this Offer\n * object. Used in combination with the Account to identify this Offer.\n */\n Sequence: number\n /** The remaining amount and type of currency requested by the Offer creator. */\n TakerPays: Amount\n /**\n * The remaining amount and type of currency being provided by the Offer\n * creator.\n */\n TakerGets: Amount\n /** The ID of the Offer Directory that links to this Offer. */\n BookDirectory: string\n /**\n * A hint indicating which page of the Offer Directory links to this object,\n * in case the directory consists of multiple pages.\n */\n BookNode: string\n /**\n * A hint indicating which page of the Owner Directory links to this object,\n * in case the directory consists of multiple pages.\n */\n OwnerNode: string\n /** The time this Offer expires, in seconds since the Ripple Epoch. */\n Expiration?: number\n /** The domain that the offer must be a part of. */\n DomainID?: string\n /**\n * An additional list of order book directories that this offer belongs to.\n * Currently this field only applicable to hybrid offers.\n */\n AdditionalBooks?: Book[]\n}\n\nexport enum OfferFlags {\n lsfPassive = 0x00010000,\n lsfSell = 0x00020000,\n lsfHybrid = 0x00040000,\n}\n", "import BigNumber from 'bignumber.js'\n\nimport type { Client } from '../client'\nimport { ValidationError } from '../errors'\nimport { LedgerIndex } from '../models/common'\nimport { OfferFlags } from '../models/ledger/Offer'\nimport {\n BookOffer,\n BookOfferCurrency,\n BookOffersRequest,\n} from '../models/methods/bookOffers'\n\nconst DEFAULT_LIMIT = 20\n\nfunction sortOffers(offers: BookOffer[]): BookOffer[] {\n return offers.sort((offerA, offerB) => {\n const qualityA = offerA.quality ?? 0\n const qualityB = offerB.quality ?? 0\n\n return new BigNumber(qualityA).comparedTo(qualityB)\n })\n}\n\nconst getOrderbookOptionsSet = new Set([\n 'limit',\n 'ledger_index',\n 'ledger_hash',\n 'taker',\n])\n\n/**\n * Represents the options for retrieving the order book.\n */\nexport interface GetOrderBookOptions {\n /**\n * The limit on the number of offers to return.\n */\n limit?: number\n /**\n * The ledger index of the ledger to use.\n */\n ledger_index?: LedgerIndex\n /**\n * The ledger hash of the ledger to use.\n */\n ledger_hash?: string | null\n /**\n * The account that takes the offers.\n */\n taker?: string | null\n}\n\n/**\n * Validates the options for retrieving the order book.\n *\n * @param options - The options to validate.\n * @throws {ValidationError} If any validation errors occur.\n */\n// eslint-disable-next-line complexity -- Necessary for validation.\nexport function validateOrderbookOptions(options: GetOrderBookOptions): void {\n for (const key of Object.keys(options)) {\n if (!getOrderbookOptionsSet.has(key)) {\n throw new ValidationError(`Unexpected option: ${key}`, options)\n }\n }\n\n if (options.limit && typeof options.limit !== 'number') {\n throw new ValidationError('limit must be a number', options.limit)\n }\n\n if (\n options.ledger_index &&\n !(\n typeof options.ledger_index === 'number' ||\n (typeof options.ledger_index === 'string' &&\n ['validated', 'closed', 'current'].includes(options.ledger_index))\n )\n ) {\n throw new ValidationError(\n 'ledger_index must be a number or a string of \"validated\", \"closed\", or \"current\"',\n options.ledger_index,\n )\n }\n\n if (\n options.ledger_hash !== undefined &&\n options.ledger_hash !== null &&\n typeof options.ledger_hash !== 'string'\n ) {\n throw new ValidationError(\n 'ledger_hash must be a string',\n options.ledger_hash,\n )\n }\n\n if (options.taker !== undefined && typeof options.taker !== 'string') {\n throw new ValidationError('taker must be a string', options.taker)\n }\n}\n\n/**\n * Creates a request object for retrieving book offers.\n *\n * @param currency1 - The first currency in the pair.\n * @param currency2 - The second currency in the pair.\n * @param options - Additional options for the request.\n * @param [options.limit] - The maximum number of offers to retrieve.\n * @param [options.ledger_index] - The ledger index to use for retrieval.\n * @param [options.ledger_hash] - The ledger hash to use for retrieval.\n * @param [options.taker] - The taker address for retrieval.\n * @returns The created request object.\n */\nexport function createBookOffersRequest(\n currency1: BookOfferCurrency,\n currency2: BookOfferCurrency,\n options: {\n limit?: number\n ledger_index?: LedgerIndex\n ledger_hash?: string | null\n taker?: string | null\n },\n): BookOffersRequest {\n const request: BookOffersRequest = {\n command: 'book_offers',\n taker_pays: currency1,\n taker_gets: currency2,\n ledger_index: options.ledger_index ?? 'validated',\n ledger_hash: options.ledger_hash === null ? undefined : options.ledger_hash,\n limit: options.limit ?? DEFAULT_LIMIT,\n taker: options.taker ?? undefined,\n }\n\n return request\n}\n\ntype BookOfferResult = BookOffer[]\n\n/**\n * Retrieves all book offer results using the given request.\n *\n * @param client - The Ripple client.\n * @param request - The request object.\n * @returns The array of book offer results.\n */\nexport async function requestAllOffers(\n client: Client,\n request: BookOffersRequest,\n): Promise {\n const results = await client.requestAll(request)\n return results.map((result) => result.result.offers)\n}\n\n/**\n * Creates a reverse request object by swapping the taker pays and taker gets amounts.\n *\n * @param request - The original request object.\n * @returns The reverse request object.\n */\nexport function reverseRequest(request: BookOffersRequest): BookOffersRequest {\n return {\n ...request,\n taker_pays: request.taker_gets,\n taker_gets: request.taker_pays,\n }\n}\n\n/**\n * Extracts the offers from the book offer results.\n *\n * @param offerResults - The array of book offer results.\n * @returns The extracted offers.\n */\nexport function extractOffers(offerResults: BookOfferResult[]): BookOffer[] {\n return offerResults.flatMap((offerResult) => offerResult)\n}\n\n/**\n * Combines the direct and reverse offers into a single array.\n *\n * @param directOffers - The direct offers.\n * @param reverseOffers - The reverse offers.\n * @returns The combined array of offers.\n */\nexport function combineOrders(\n directOffers: BookOffer[],\n reverseOffers: BookOffer[],\n): BookOffer[] {\n return [...directOffers, ...reverseOffers]\n}\n\n/**\n * Separates the buy and sell orders from the given array of orders.\n *\n * @param orders - The array of orders.\n * @returns The separated buy and sell orders.\n */\nexport function separateBuySellOrders(orders: BookOffer[]): {\n buy: BookOffer[]\n sell: BookOffer[]\n} {\n const buy: BookOffer[] = []\n const sell: BookOffer[] = []\n\n orders.forEach((order) => {\n // eslint-disable-next-line no-bitwise -- necessary for flags check\n if ((order.Flags & OfferFlags.lsfSell) === 0) {\n buy.push(order)\n } else {\n sell.push(order)\n }\n })\n\n return { buy, sell }\n}\n\n/**\n * Sorts and limits the given array of offers.\n *\n * @param offers - The array of offers to sort and limit.\n * @param [limit] - The maximum number of offers to include.\n * @returns The sorted and limited array of offers.\n */\nexport function sortAndLimitOffers(\n offers: BookOffer[],\n limit?: number,\n): BookOffer[] {\n const sortedOffers = sortOffers(offers)\n return sortedOffers.slice(0, limit)\n}\n", "/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151\n * @module\n */\nimport { Chi, HashMD, Maj } from './_md.ts';\nimport { type CHash, clean, createHasher, rotl } from './utils.ts';\n\n/** Initial SHA1 state */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n\n// Reusable temporary buffer\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n\n/** SHA1 legacy hash class. */\nexport class SHA1 extends HashMD {\n private A = SHA1_IV[0] | 0;\n private B = SHA1_IV[1] | 0;\n private C = SHA1_IV[2] | 0;\n private D = SHA1_IV[3] | 0;\n private E = SHA1_IV[4] | 0;\n\n constructor() {\n super(64, 20, 8, false);\n }\n protected get(): [number, number, number, number, number] {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n protected set(A: number, B: number, C: number, D: number, E: number): void {\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 }\n protected process(view: DataView, offset: number): void {\n for (let i = 0; i < 16; i++, offset += 4) SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi(B, C, D);\n K = 0x5a827999;\n } else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n } else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n } else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\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 this.set(A, B, C, D, E);\n }\n protected roundClean(): void {\n clean(SHA1_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nexport const sha1: CHash = /* @__PURE__ */ createHasher(() => new SHA1());\n\n/** Per-round constants */\nconst p32 = /* @__PURE__ */ Math.pow(2, 32);\nconst K = /* @__PURE__ */ Array.from({ length: 64 }, (_, i) =>\n Math.floor(p32 * Math.abs(Math.sin(i + 1)))\n);\n\n/** md5 initial state: same as sha1, but 4 u32 instead of 5. */\nconst MD5_IV = /* @__PURE__ */ SHA1_IV.slice(0, 4);\n\n// Reusable temporary buffer\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\n/** MD5 legacy hash class. */\nexport class MD5 extends HashMD {\n private A = MD5_IV[0] | 0;\n private B = MD5_IV[1] | 0;\n private C = MD5_IV[2] | 0;\n private D = MD5_IV[3] | 0;\n\n constructor() {\n super(64, 16, 8, true);\n }\n protected get(): [number, number, number, number] {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n protected set(A: number, B: number, C: number, D: number): void {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n protected process(view: DataView, offset: number): void {\n for (let i = 0; i < 16; i++, offset += 4) MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g, s;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n s = [7, 12, 17, 22];\n } else if (i < 32) {\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n s = [5, 9, 14, 20];\n } else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n s = [4, 11, 16, 23];\n } else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n s = [6, 10, 15, 21];\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, s[i % 4]);\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 this.set(A, B, C, D);\n }\n protected roundClean(): void {\n clean(MD5_W);\n }\n destroy(): void {\n this.set(0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n\n/**\n * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.\n * MD5 architecture is similar to SHA1, with some differences:\n * - Reduced output length: 16 bytes (128 bit) instead of 20\n * - 64 rounds, instead of 80\n * - Little-endian: could be faster, but will require more code\n * - Non-linear index selection: huge speed-up for unroll\n * - Per round constants: more memory accesses, additional speed-up for unroll\n */\nexport const md5: CHash = /* @__PURE__ */ createHasher(() => new MD5());\n\n// RIPEMD-160\n\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++) for (let j of res) j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\n\nconst shifts160 = /* @__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) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction ripemd_f(group: number, x: number, y: number, z: number): number {\n if (group === 0) return x ^ y ^ z;\n if (group === 1) return (x & y) | (~x & z);\n if (group === 2) return (x | ~y) ^ z;\n if (group === 3) return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable temporary buffer\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\nexport class RIPEMD160 extends HashMD {\n private h0 = 0x67452301 | 0;\n private h1 = 0xefcdab89 | 0;\n private h2 = 0x98badcfe | 0;\n private h3 = 0x10325476 | 0;\n private h4 = 0xc3d2e1f0 | 0;\n\n constructor() {\n super(64, 20, 8, true);\n }\n protected get(): [number, number, number, number, number] {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n protected set(h0: number, h1: number, h2: number, h3: number, h4: number): void {\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 protected process(view: DataView, offset: number): void {\n for (let i = 0; i < 16; i++, offset += 4) BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al,\n bl = this.h1 | 0, br = bl,\n cl = this.h2 | 0, cr = cl,\n dl = this.h3 | 0, dr = dl,\n el = this.h4 | 0, er = el;\n\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 = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[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 + ripemd_f(rGroup, br, cr, dr) + BUF_160[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(\n (this.h1 + cl + dr) | 0,\n (this.h2 + dl + er) | 0,\n (this.h3 + el + ar) | 0,\n (this.h4 + al + br) | 0,\n (this.h0 + bl + cr) | 0\n );\n }\n protected roundClean(): void {\n clean(BUF_160);\n }\n destroy(): void {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n */\nexport const ripemd160: CHash = /* @__PURE__ */ createHasher(() => new RIPEMD160());\n", "/**\n * @module BIP32 hierarchical deterministic (HD) wallets over secp256k1.\n * @example\n * ```js\n * import { HDKey } from \"@scure/bip32\";\n * const hdkey1 = HDKey.fromMasterSeed(seed);\n * const hdkey2 = HDKey.fromExtendedKey(base58key);\n * const hdkey3 = HDKey.fromJSON({ xpriv: string });\n *\n * // props\n * [hdkey1.depth, hdkey1.index, hdkey1.chainCode];\n * console.log(hdkey2.privateKey, hdkey2.publicKey);\n * console.log(hdkey3.derive(\"m/0/2147483647'/1\"));\n * const sig = hdkey3.sign(hash);\n * hdkey3.verify(hash, sig);\n * ```\n */\n/*! scure-bip32 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nimport { mod } from '@noble/curves/abstract/modular';\nimport { secp256k1 as secp } from '@noble/curves/secp256k1';\nimport { hmac } from '@noble/hashes/hmac';\nimport { ripemd160 } from '@noble/hashes/legacy';\nimport { sha256, sha512 } from '@noble/hashes/sha2';\nimport {\n abytes,\n bytesToHex,\n concatBytes,\n createView,\n hexToBytes,\n utf8ToBytes,\n} from '@noble/hashes/utils';\nimport { createBase58check } from '@scure/base';\n\nconst Point = secp.ProjectivePoint;\nconst base58check = createBase58check(sha256);\n\nfunction bytesToNumber(bytes: Uint8Array): bigint {\n abytes(bytes);\n const h = bytes.length === 0 ? '0' : bytesToHex(bytes);\n return BigInt('0x' + h);\n}\n\nfunction numberToBytes(num: bigint): Uint8Array {\n if (typeof num !== 'bigint') throw new Error('bigint expected');\n return hexToBytes(num.toString(16).padStart(64, '0'));\n}\n\nconst MASTER_SECRET = utf8ToBytes('Bitcoin seed');\n// Bitcoin hardcoded by default\nconst BITCOIN_VERSIONS: Versions = { private: 0x0488ade4, public: 0x0488b21e };\nexport const HARDENED_OFFSET: number = 0x80000000;\n\nexport interface Versions {\n private: number;\n public: number;\n}\n\nconst hash160 = (data: Uint8Array) => ripemd160(sha256(data));\nconst fromU32 = (data: Uint8Array) => createView(data).getUint32(0, false);\nconst toU32 = (n: number) => {\n if (!Number.isSafeInteger(n) || n < 0 || n > 2 ** 32 - 1) {\n throw new Error('invalid number, should be from 0 to 2**32-1, got ' + n);\n }\n const buf = new Uint8Array(4);\n createView(buf).setUint32(0, n, false);\n return buf;\n};\n\ninterface HDKeyOpt {\n versions?: Versions;\n depth?: number;\n index?: number;\n parentFingerprint?: number;\n chainCode?: Uint8Array;\n publicKey?: Uint8Array;\n privateKey?: Uint8Array | bigint;\n}\n\nexport class HDKey {\n get fingerprint(): number {\n if (!this.pubHash) {\n throw new Error('No publicKey set!');\n }\n return fromU32(this.pubHash);\n }\n get identifier(): Uint8Array | undefined {\n return this.pubHash;\n }\n get pubKeyHash(): Uint8Array | undefined {\n return this.pubHash;\n }\n get privateKey(): Uint8Array | null {\n return this.privKeyBytes || null;\n }\n get publicKey(): Uint8Array | null {\n return this.pubKey || null;\n }\n get privateExtendedKey(): string {\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('No private key');\n }\n return base58check.encode(\n this.serialize(this.versions.private, concatBytes(new Uint8Array([0]), priv))\n );\n }\n get publicExtendedKey(): string {\n if (!this.pubKey) {\n throw new Error('No public key');\n }\n return base58check.encode(this.serialize(this.versions.public, this.pubKey));\n }\n\n public static fromMasterSeed(seed: Uint8Array, versions: Versions = BITCOIN_VERSIONS): HDKey {\n abytes(seed);\n if (8 * seed.length < 128 || 8 * seed.length > 512) {\n throw new Error(\n 'HDKey: seed length must be between 128 and 512 bits; 256 bits is advised, got ' +\n seed.length\n );\n }\n const I = hmac(sha512, MASTER_SECRET, seed);\n return new HDKey({\n versions,\n chainCode: I.slice(32),\n privateKey: I.slice(0, 32),\n });\n }\n\n public static fromExtendedKey(base58key: string, versions: Versions = BITCOIN_VERSIONS): HDKey {\n // => version(4) || depth(1) || fingerprint(4) || index(4) || chain(32) || key(33)\n const keyBuffer: Uint8Array = base58check.decode(base58key);\n const keyView = createView(keyBuffer);\n const version = keyView.getUint32(0, false);\n const opt = {\n versions,\n depth: keyBuffer[4],\n parentFingerprint: keyView.getUint32(5, false),\n index: keyView.getUint32(9, false),\n chainCode: keyBuffer.slice(13, 45),\n };\n const key = keyBuffer.slice(45);\n const isPriv = key[0] === 0;\n if (version !== versions[isPriv ? 'private' : 'public']) {\n throw new Error('Version mismatch');\n }\n if (isPriv) {\n return new HDKey({ ...opt, privateKey: key.slice(1) });\n } else {\n return new HDKey({ ...opt, publicKey: key });\n }\n }\n\n public static fromJSON(json: { xpriv: string }): HDKey {\n return HDKey.fromExtendedKey(json.xpriv);\n }\n public readonly versions: Versions;\n public readonly depth: number = 0;\n public readonly index: number = 0;\n public readonly chainCode: Uint8Array | null = null;\n public readonly parentFingerprint: number = 0;\n private privKey?: bigint;\n private privKeyBytes?: Uint8Array;\n private pubKey?: Uint8Array;\n private pubHash: Uint8Array | undefined;\n\n constructor(opt: HDKeyOpt) {\n if (!opt || typeof opt !== 'object') {\n throw new Error('HDKey.constructor must not be called directly');\n }\n this.versions = opt.versions || BITCOIN_VERSIONS;\n this.depth = opt.depth || 0;\n this.chainCode = opt.chainCode || null;\n this.index = opt.index || 0;\n this.parentFingerprint = opt.parentFingerprint || 0;\n if (!this.depth) {\n if (this.parentFingerprint || this.index) {\n throw new Error('HDKey: zero depth with non-zero index/parent fingerprint');\n }\n }\n if (opt.publicKey && opt.privateKey) {\n throw new Error('HDKey: publicKey and privateKey at same time.');\n }\n if (opt.privateKey) {\n if (!secp.utils.isValidPrivateKey(opt.privateKey)) {\n throw new Error('Invalid private key');\n }\n this.privKey =\n typeof opt.privateKey === 'bigint' ? opt.privateKey : bytesToNumber(opt.privateKey);\n this.privKeyBytes = numberToBytes(this.privKey);\n this.pubKey = secp.getPublicKey(opt.privateKey, true);\n } else if (opt.publicKey) {\n this.pubKey = Point.fromHex(opt.publicKey).toRawBytes(true); // force compressed point\n } else {\n throw new Error('HDKey: no public or private key provided');\n }\n this.pubHash = hash160(this.pubKey);\n }\n\n public derive(path: string): HDKey {\n if (!/^[mM]'?/.test(path)) {\n throw new Error('Path must start with \"m\" or \"M\"');\n }\n if (/^[mM]'?$/.test(path)) {\n return this;\n }\n const parts = path.replace(/^[mM]'?\\//, '').split('/');\n // tslint:disable-next-line\n let child: HDKey = this;\n for (const c of parts) {\n const m = /^(\\d+)('?)$/.exec(c);\n const m1 = m && m[1];\n if (!m || m.length !== 3 || typeof m1 !== 'string')\n throw new Error('invalid child index: ' + c);\n let idx = +m1;\n if (!Number.isSafeInteger(idx) || idx >= HARDENED_OFFSET) {\n throw new Error('Invalid index');\n }\n // hardened key\n if (m[2] === \"'\") {\n idx += HARDENED_OFFSET;\n }\n child = child.deriveChild(idx);\n }\n return child;\n }\n\n public deriveChild(index: number): HDKey {\n if (!this.pubKey || !this.chainCode) {\n throw new Error('No publicKey or chainCode set');\n }\n let data = toU32(index);\n if (index >= HARDENED_OFFSET) {\n // Hardened\n const priv = this.privateKey;\n if (!priv) {\n throw new Error('Could not derive hardened child key');\n }\n // Hardened child: 0x00 || ser256(kpar) || ser32(index)\n data = concatBytes(new Uint8Array([0]), priv, data);\n } else {\n // Normal child: serP(point(kpar)) || ser32(index)\n data = concatBytes(this.pubKey, data);\n }\n const I = hmac(sha512, this.chainCode, data);\n const childTweak = bytesToNumber(I.slice(0, 32));\n const chainCode = I.slice(32);\n if (!secp.utils.isValidPrivateKey(childTweak)) {\n throw new Error('Tweak bigger than curve order');\n }\n const opt: HDKeyOpt = {\n versions: this.versions,\n chainCode,\n depth: this.depth + 1,\n parentFingerprint: this.fingerprint,\n index,\n };\n try {\n // Private parent key -> private child key\n if (this.privateKey) {\n const added = mod(this.privKey! + childTweak, secp.CURVE.n);\n if (!secp.utils.isValidPrivateKey(added)) {\n throw new Error('The tweak was out of range or the resulted private key is invalid');\n }\n opt.privateKey = added;\n } else {\n const added = Point.fromHex(this.pubKey).add(Point.fromPrivateKey(childTweak));\n // Cryptographically impossible: hmac-sha512 preimage would need to be found\n if (added.equals(Point.ZERO)) {\n throw new Error('The tweak was equal to negative P, which made the result key invalid');\n }\n opt.publicKey = added.toRawBytes(true);\n }\n return new HDKey(opt);\n } catch (err) {\n return this.deriveChild(index + 1);\n }\n }\n\n public sign(hash: Uint8Array): Uint8Array {\n if (!this.privateKey) {\n throw new Error('No privateKey set!');\n }\n abytes(hash, 32);\n return secp.sign(hash, this.privKey!).toCompactRawBytes();\n }\n\n public verify(hash: Uint8Array, signature: Uint8Array): boolean {\n abytes(hash, 32);\n abytes(signature, 64);\n if (!this.publicKey) {\n throw new Error('No publicKey set!');\n }\n let sig;\n try {\n sig = secp.Signature.fromCompact(signature);\n } catch (error) {\n return false;\n }\n return secp.verify(sig, hash, this.publicKey);\n }\n\n public wipePrivateData(): this {\n this.privKey = undefined;\n if (this.privKeyBytes) {\n this.privKeyBytes.fill(0);\n this.privKeyBytes = undefined;\n }\n return this;\n }\n public toJSON(): { xpriv: string; xpub: string } {\n return {\n xpriv: this.privateExtendedKey,\n xpub: this.publicExtendedKey,\n };\n }\n\n private serialize(version: number, key: Uint8Array) {\n if (!this.chainCode) {\n throw new Error('No chainCode set');\n }\n abytes(key, 33);\n // version(4) || depth(1) || fingerprint(4) || index(4) || chain(32) || key(33)\n return concatBytes(\n toU32(version),\n new Uint8Array([this.depth]),\n toU32(this.parentFingerprint),\n toU32(this.index),\n this.chainCode,\n key\n );\n }\n}\n", "/**\n * PBKDF (RFC 2898). Can be used to create a key from password and salt.\n * @module\n */\nimport { hmac } from './hmac.ts';\n// prettier-ignore\nimport {\n ahash, anumber,\n asyncLoop, checkOpts, clean, createView, Hash, kdfInputToBytes,\n type CHash,\n type KDFInput\n} from './utils.ts';\n\nexport type Pbkdf2Opt = {\n c: number; // Iterations\n dkLen?: number; // Desired key length in bytes (Intended output length in octets of the derived key\n asyncTick?: number; // Maximum time in ms for which async function can block execution\n};\n// Common prologue and epilogue for sync/async functions\nfunction pbkdf2Init(hash: CHash, _password: KDFInput, _salt: KDFInput, _opts: Pbkdf2Opt) {\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) throw new Error('iterations (c) should be >= 1');\n const password = kdfInputToBytes(_password);\n const salt = kdfInputToBytes(_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}\n\nfunction pbkdf2Output>(\n PRF: Hash,\n PRFSalt: Hash,\n DK: Uint8Array,\n prfW: Hash,\n u: Uint8Array\n) {\n PRF.destroy();\n PRFSalt.destroy();\n if (prfW) prfW.destroy();\n clean(u);\n return DK;\n}\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: Math.pow(2, 18) });\n */\nexport function pbkdf2(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Uint8Array {\n const { c, dkLen, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + \u22EF + 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 ^ \u22EF ^ 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\u22121)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n }\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\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(\n hash: CHash,\n password: KDFInput,\n salt: KDFInput,\n opts: Pbkdf2Opt\n): Promise {\n const { c, dkLen, asyncTick, DK, PRF, PRFSalt } = pbkdf2Init(hash, password, salt, opts);\n let prfW: any; // Working copy\n const arr = new Uint8Array(4);\n const view = createView(arr);\n const u = new Uint8Array(PRF.outputLen);\n // DK = T1 + T2 + \u22EF + 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 ^ \u22EF ^ 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\u22121)\n PRF._cloneInto(prfW).update(u).digestInto(u);\n for (let i = 0; i < Ti.length; i++) Ti[i] ^= u[i];\n });\n }\n return pbkdf2Output(PRF, PRFSalt, DK, prfW, u);\n}\n", "\"use strict\";\n/**\n * Audited & minimal JS implementation of\n * [BIP39 mnemonic phrases](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki).\n * @module\n * @example\n```js\nimport * as bip39 from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\nconst mn = bip39.generateMnemonic(wordlist);\nconsole.log(mn);\nconst ent = bip39.mnemonicToEntropy(mn, wordlist)\nbip39.entropyToMnemonic(ent, wordlist);\nbip39.validateMnemonic(mn, wordlist);\nawait bip39.mnemonicToSeed(mn, 'password');\nbip39.mnemonicToSeedSync(mn, 'password');\n\n// Wordlists\nimport { wordlist as czech } from '@scure/bip39/wordlists/czech';\nimport { wordlist as english } from '@scure/bip39/wordlists/english';\nimport { wordlist as french } from '@scure/bip39/wordlists/french';\nimport { wordlist as italian } from '@scure/bip39/wordlists/italian';\nimport { wordlist as japanese } from '@scure/bip39/wordlists/japanese';\nimport { wordlist as korean } from '@scure/bip39/wordlists/korean';\nimport { wordlist as portuguese } from '@scure/bip39/wordlists/portuguese';\nimport { wordlist as simplifiedChinese } from '@scure/bip39/wordlists/simplified-chinese';\nimport { wordlist as spanish } from '@scure/bip39/wordlists/spanish';\nimport { wordlist as traditionalChinese } from '@scure/bip39/wordlists/traditional-chinese';\n```\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateMnemonic = generateMnemonic;\nexports.mnemonicToEntropy = mnemonicToEntropy;\nexports.entropyToMnemonic = entropyToMnemonic;\nexports.validateMnemonic = validateMnemonic;\nexports.mnemonicToSeed = mnemonicToSeed;\nexports.mnemonicToSeedSync = mnemonicToSeedSync;\n/*! scure-bip39 - MIT License (c) 2022 Patricio Palladino, Paul Miller (paulmillr.com) */\nconst pbkdf2_1 = require(\"@noble/hashes/pbkdf2\");\nconst sha2_1 = require(\"@noble/hashes/sha2\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst base_1 = require(\"@scure/base\");\n// Japanese wordlist\nconst isJapanese = (wordlist) => wordlist[0] === '\\u3042\\u3044\\u3053\\u304f\\u3057\\u3093';\n// Normalization replaces equivalent sequences of characters\n// so that any two texts that are equivalent will be reduced\n// to the same sequence of code points, called the normal form of the original text.\n// https://tonsky.me/blog/unicode/#why-is-a----\nfunction nfkd(str) {\n if (typeof str !== 'string')\n throw new TypeError('invalid mnemonic type: ' + typeof str);\n return str.normalize('NFKD');\n}\nfunction normalize(str) {\n const norm = nfkd(str);\n const words = norm.split(' ');\n if (![12, 15, 18, 21, 24].includes(words.length))\n throw new Error('Invalid mnemonic');\n return { nfkd: norm, words };\n}\nfunction aentropy(ent) {\n (0, utils_1.abytes)(ent, 16, 20, 24, 28, 32);\n}\n/**\n * Generate x random words. Uses Cryptographically-Secure Random Number Generator.\n * @param wordlist imported wordlist for specific language\n * @param strength mnemonic strength 128-256 bits\n * @example\n * generateMnemonic(wordlist, 128)\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction generateMnemonic(wordlist, strength = 128) {\n (0, utils_1.anumber)(strength);\n if (strength % 32 !== 0 || strength > 256)\n throw new TypeError('Invalid entropy');\n return entropyToMnemonic((0, utils_1.randomBytes)(strength / 8), wordlist);\n}\nconst calcChecksum = (entropy) => {\n // Checksum is ent.length/4 bits long\n const bitsLeft = 8 - entropy.length / 4;\n // Zero rightmost \"bitsLeft\" bits in byte\n // For example: bitsLeft=4 val=10111101 -> 10110000\n return new Uint8Array([((0, sha2_1.sha256)(entropy)[0] >> bitsLeft) << bitsLeft]);\n};\nfunction getCoder(wordlist) {\n if (!Array.isArray(wordlist) || wordlist.length !== 2048 || typeof wordlist[0] !== 'string')\n throw new Error('Wordlist: expected array of 2048 strings');\n wordlist.forEach((i) => {\n if (typeof i !== 'string')\n throw new Error('wordlist: non-string element: ' + i);\n });\n return base_1.utils.chain(base_1.utils.checksum(1, calcChecksum), base_1.utils.radix2(11, true), base_1.utils.alphabet(wordlist));\n}\n/**\n * Reversible: Converts mnemonic string to raw entropy in form of byte array.\n * @param mnemonic 12-24 words\n * @param wordlist imported wordlist for specific language\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToEntropy(mnem, wordlist)\n * // Produces\n * new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ])\n */\nfunction mnemonicToEntropy(mnemonic, wordlist) {\n const { words } = normalize(mnemonic);\n const entropy = getCoder(wordlist).decode(words);\n aentropy(entropy);\n return entropy;\n}\n/**\n * Reversible: Converts raw entropy in form of byte array to mnemonic string.\n * @param entropy byte array\n * @param wordlist imported wordlist for specific language\n * @returns 12-24 words\n * @example\n * const ent = new Uint8Array([\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,\n * 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f\n * ]);\n * entropyToMnemonic(ent, wordlist);\n * // 'legal winner thank year wave sausage worth useful legal winner thank yellow'\n */\nfunction entropyToMnemonic(entropy, wordlist) {\n aentropy(entropy);\n const words = getCoder(wordlist).encode(entropy);\n return words.join(isJapanese(wordlist) ? '\\u3000' : ' ');\n}\n/**\n * Validates mnemonic for being 12-24 words contained in `wordlist`.\n */\nfunction validateMnemonic(mnemonic, wordlist) {\n try {\n mnemonicToEntropy(mnemonic, wordlist);\n }\n catch (e) {\n return false;\n }\n return true;\n}\nconst psalt = (passphrase) => nfkd('mnemonic' + passphrase);\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * await mnemonicToSeed(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeed(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2Async)(sha2_1.sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n/**\n * Irreversible: Uses KDF to derive 64 bytes of key data from mnemonic + optional password.\n * @param mnemonic 12-24 words\n * @param passphrase string that will additionally protect the key\n * @returns 64 bytes of key data\n * @example\n * const mnem = 'legal winner thank year wave sausage worth useful legal winner thank yellow';\n * mnemonicToSeedSync(mnem, 'password');\n * // new Uint8Array([...64 bytes])\n */\nfunction mnemonicToSeedSync(mnemonic, passphrase = '') {\n return (0, pbkdf2_1.pbkdf2)(sha2_1.sha512, normalize(mnemonic).nfkd, psalt(passphrase), { c: 2048, dkLen: 64 });\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wordlist = void 0;\nexports.wordlist = `abandon\nability\nable\nabout\nabove\nabsent\nabsorb\nabstract\nabsurd\nabuse\naccess\naccident\naccount\naccuse\nachieve\nacid\nacoustic\nacquire\nacross\nact\naction\nactor\nactress\nactual\nadapt\nadd\naddict\naddress\nadjust\nadmit\nadult\nadvance\nadvice\naerobic\naffair\nafford\nafraid\nagain\nage\nagent\nagree\nahead\naim\nair\nairport\naisle\nalarm\nalbum\nalcohol\nalert\nalien\nall\nalley\nallow\nalmost\nalone\nalpha\nalready\nalso\nalter\nalways\namateur\namazing\namong\namount\namused\nanalyst\nanchor\nancient\nanger\nangle\nangry\nanimal\nankle\nannounce\nannual\nanother\nanswer\nantenna\nantique\nanxiety\nany\napart\napology\nappear\napple\napprove\napril\narch\narctic\narea\narena\nargue\narm\narmed\narmor\narmy\naround\narrange\narrest\narrive\narrow\nart\nartefact\nartist\nartwork\nask\naspect\nassault\nasset\nassist\nassume\nasthma\nathlete\natom\nattack\nattend\nattitude\nattract\nauction\naudit\naugust\naunt\nauthor\nauto\nautumn\naverage\navocado\navoid\nawake\naware\naway\nawesome\nawful\nawkward\naxis\nbaby\nbachelor\nbacon\nbadge\nbag\nbalance\nbalcony\nball\nbamboo\nbanana\nbanner\nbar\nbarely\nbargain\nbarrel\nbase\nbasic\nbasket\nbattle\nbeach\nbean\nbeauty\nbecause\nbecome\nbeef\nbefore\nbegin\nbehave\nbehind\nbelieve\nbelow\nbelt\nbench\nbenefit\nbest\nbetray\nbetter\nbetween\nbeyond\nbicycle\nbid\nbike\nbind\nbiology\nbird\nbirth\nbitter\nblack\nblade\nblame\nblanket\nblast\nbleak\nbless\nblind\nblood\nblossom\nblouse\nblue\nblur\nblush\nboard\nboat\nbody\nboil\nbomb\nbone\nbonus\nbook\nboost\nborder\nboring\nborrow\nboss\nbottom\nbounce\nbox\nboy\nbracket\nbrain\nbrand\nbrass\nbrave\nbread\nbreeze\nbrick\nbridge\nbrief\nbright\nbring\nbrisk\nbroccoli\nbroken\nbronze\nbroom\nbrother\nbrown\nbrush\nbubble\nbuddy\nbudget\nbuffalo\nbuild\nbulb\nbulk\nbullet\nbundle\nbunker\nburden\nburger\nburst\nbus\nbusiness\nbusy\nbutter\nbuyer\nbuzz\ncabbage\ncabin\ncable\ncactus\ncage\ncake\ncall\ncalm\ncamera\ncamp\ncan\ncanal\ncancel\ncandy\ncannon\ncanoe\ncanvas\ncanyon\ncapable\ncapital\ncaptain\ncar\ncarbon\ncard\ncargo\ncarpet\ncarry\ncart\ncase\ncash\ncasino\ncastle\ncasual\ncat\ncatalog\ncatch\ncategory\ncattle\ncaught\ncause\ncaution\ncave\nceiling\ncelery\ncement\ncensus\ncentury\ncereal\ncertain\nchair\nchalk\nchampion\nchange\nchaos\nchapter\ncharge\nchase\nchat\ncheap\ncheck\ncheese\nchef\ncherry\nchest\nchicken\nchief\nchild\nchimney\nchoice\nchoose\nchronic\nchuckle\nchunk\nchurn\ncigar\ncinnamon\ncircle\ncitizen\ncity\ncivil\nclaim\nclap\nclarify\nclaw\nclay\nclean\nclerk\nclever\nclick\nclient\ncliff\nclimb\nclinic\nclip\nclock\nclog\nclose\ncloth\ncloud\nclown\nclub\nclump\ncluster\nclutch\ncoach\ncoast\ncoconut\ncode\ncoffee\ncoil\ncoin\ncollect\ncolor\ncolumn\ncombine\ncome\ncomfort\ncomic\ncommon\ncompany\nconcert\nconduct\nconfirm\ncongress\nconnect\nconsider\ncontrol\nconvince\ncook\ncool\ncopper\ncopy\ncoral\ncore\ncorn\ncorrect\ncost\ncotton\ncouch\ncountry\ncouple\ncourse\ncousin\ncover\ncoyote\ncrack\ncradle\ncraft\ncram\ncrane\ncrash\ncrater\ncrawl\ncrazy\ncream\ncredit\ncreek\ncrew\ncricket\ncrime\ncrisp\ncritic\ncrop\ncross\ncrouch\ncrowd\ncrucial\ncruel\ncruise\ncrumble\ncrunch\ncrush\ncry\ncrystal\ncube\nculture\ncup\ncupboard\ncurious\ncurrent\ncurtain\ncurve\ncushion\ncustom\ncute\ncycle\ndad\ndamage\ndamp\ndance\ndanger\ndaring\ndash\ndaughter\ndawn\nday\ndeal\ndebate\ndebris\ndecade\ndecember\ndecide\ndecline\ndecorate\ndecrease\ndeer\ndefense\ndefine\ndefy\ndegree\ndelay\ndeliver\ndemand\ndemise\ndenial\ndentist\ndeny\ndepart\ndepend\ndeposit\ndepth\ndeputy\nderive\ndescribe\ndesert\ndesign\ndesk\ndespair\ndestroy\ndetail\ndetect\ndevelop\ndevice\ndevote\ndiagram\ndial\ndiamond\ndiary\ndice\ndiesel\ndiet\ndiffer\ndigital\ndignity\ndilemma\ndinner\ndinosaur\ndirect\ndirt\ndisagree\ndiscover\ndisease\ndish\ndismiss\ndisorder\ndisplay\ndistance\ndivert\ndivide\ndivorce\ndizzy\ndoctor\ndocument\ndog\ndoll\ndolphin\ndomain\ndonate\ndonkey\ndonor\ndoor\ndose\ndouble\ndove\ndraft\ndragon\ndrama\ndrastic\ndraw\ndream\ndress\ndrift\ndrill\ndrink\ndrip\ndrive\ndrop\ndrum\ndry\nduck\ndumb\ndune\nduring\ndust\ndutch\nduty\ndwarf\ndynamic\neager\neagle\nearly\nearn\nearth\neasily\neast\neasy\necho\necology\neconomy\nedge\nedit\neducate\neffort\negg\neight\neither\nelbow\nelder\nelectric\nelegant\nelement\nelephant\nelevator\nelite\nelse\nembark\nembody\nembrace\nemerge\nemotion\nemploy\nempower\nempty\nenable\nenact\nend\nendless\nendorse\nenemy\nenergy\nenforce\nengage\nengine\nenhance\nenjoy\nenlist\nenough\nenrich\nenroll\nensure\nenter\nentire\nentry\nenvelope\nepisode\nequal\nequip\nera\nerase\nerode\nerosion\nerror\nerupt\nescape\nessay\nessence\nestate\neternal\nethics\nevidence\nevil\nevoke\nevolve\nexact\nexample\nexcess\nexchange\nexcite\nexclude\nexcuse\nexecute\nexercise\nexhaust\nexhibit\nexile\nexist\nexit\nexotic\nexpand\nexpect\nexpire\nexplain\nexpose\nexpress\nextend\nextra\neye\neyebrow\nfabric\nface\nfaculty\nfade\nfaint\nfaith\nfall\nfalse\nfame\nfamily\nfamous\nfan\nfancy\nfantasy\nfarm\nfashion\nfat\nfatal\nfather\nfatigue\nfault\nfavorite\nfeature\nfebruary\nfederal\nfee\nfeed\nfeel\nfemale\nfence\nfestival\nfetch\nfever\nfew\nfiber\nfiction\nfield\nfigure\nfile\nfilm\nfilter\nfinal\nfind\nfine\nfinger\nfinish\nfire\nfirm\nfirst\nfiscal\nfish\nfit\nfitness\nfix\nflag\nflame\nflash\nflat\nflavor\nflee\nflight\nflip\nfloat\nflock\nfloor\nflower\nfluid\nflush\nfly\nfoam\nfocus\nfog\nfoil\nfold\nfollow\nfood\nfoot\nforce\nforest\nforget\nfork\nfortune\nforum\nforward\nfossil\nfoster\nfound\nfox\nfragile\nframe\nfrequent\nfresh\nfriend\nfringe\nfrog\nfront\nfrost\nfrown\nfrozen\nfruit\nfuel\nfun\nfunny\nfurnace\nfury\nfuture\ngadget\ngain\ngalaxy\ngallery\ngame\ngap\ngarage\ngarbage\ngarden\ngarlic\ngarment\ngas\ngasp\ngate\ngather\ngauge\ngaze\ngeneral\ngenius\ngenre\ngentle\ngenuine\ngesture\nghost\ngiant\ngift\ngiggle\nginger\ngiraffe\ngirl\ngive\nglad\nglance\nglare\nglass\nglide\nglimpse\nglobe\ngloom\nglory\nglove\nglow\nglue\ngoat\ngoddess\ngold\ngood\ngoose\ngorilla\ngospel\ngossip\ngovern\ngown\ngrab\ngrace\ngrain\ngrant\ngrape\ngrass\ngravity\ngreat\ngreen\ngrid\ngrief\ngrit\ngrocery\ngroup\ngrow\ngrunt\nguard\nguess\nguide\nguilt\nguitar\ngun\ngym\nhabit\nhair\nhalf\nhammer\nhamster\nhand\nhappy\nharbor\nhard\nharsh\nharvest\nhat\nhave\nhawk\nhazard\nhead\nhealth\nheart\nheavy\nhedgehog\nheight\nhello\nhelmet\nhelp\nhen\nhero\nhidden\nhigh\nhill\nhint\nhip\nhire\nhistory\nhobby\nhockey\nhold\nhole\nholiday\nhollow\nhome\nhoney\nhood\nhope\nhorn\nhorror\nhorse\nhospital\nhost\nhotel\nhour\nhover\nhub\nhuge\nhuman\nhumble\nhumor\nhundred\nhungry\nhunt\nhurdle\nhurry\nhurt\nhusband\nhybrid\nice\nicon\nidea\nidentify\nidle\nignore\nill\nillegal\nillness\nimage\nimitate\nimmense\nimmune\nimpact\nimpose\nimprove\nimpulse\ninch\ninclude\nincome\nincrease\nindex\nindicate\nindoor\nindustry\ninfant\ninflict\ninform\ninhale\ninherit\ninitial\ninject\ninjury\ninmate\ninner\ninnocent\ninput\ninquiry\ninsane\ninsect\ninside\ninspire\ninstall\nintact\ninterest\ninto\ninvest\ninvite\ninvolve\niron\nisland\nisolate\nissue\nitem\nivory\njacket\njaguar\njar\njazz\njealous\njeans\njelly\njewel\njob\njoin\njoke\njourney\njoy\njudge\njuice\njump\njungle\njunior\njunk\njust\nkangaroo\nkeen\nkeep\nketchup\nkey\nkick\nkid\nkidney\nkind\nkingdom\nkiss\nkit\nkitchen\nkite\nkitten\nkiwi\nknee\nknife\nknock\nknow\nlab\nlabel\nlabor\nladder\nlady\nlake\nlamp\nlanguage\nlaptop\nlarge\nlater\nlatin\nlaugh\nlaundry\nlava\nlaw\nlawn\nlawsuit\nlayer\nlazy\nleader\nleaf\nlearn\nleave\nlecture\nleft\nleg\nlegal\nlegend\nleisure\nlemon\nlend\nlength\nlens\nleopard\nlesson\nletter\nlevel\nliar\nliberty\nlibrary\nlicense\nlife\nlift\nlight\nlike\nlimb\nlimit\nlink\nlion\nliquid\nlist\nlittle\nlive\nlizard\nload\nloan\nlobster\nlocal\nlock\nlogic\nlonely\nlong\nloop\nlottery\nloud\nlounge\nlove\nloyal\nlucky\nluggage\nlumber\nlunar\nlunch\nluxury\nlyrics\nmachine\nmad\nmagic\nmagnet\nmaid\nmail\nmain\nmajor\nmake\nmammal\nman\nmanage\nmandate\nmango\nmansion\nmanual\nmaple\nmarble\nmarch\nmargin\nmarine\nmarket\nmarriage\nmask\nmass\nmaster\nmatch\nmaterial\nmath\nmatrix\nmatter\nmaximum\nmaze\nmeadow\nmean\nmeasure\nmeat\nmechanic\nmedal\nmedia\nmelody\nmelt\nmember\nmemory\nmention\nmenu\nmercy\nmerge\nmerit\nmerry\nmesh\nmessage\nmetal\nmethod\nmiddle\nmidnight\nmilk\nmillion\nmimic\nmind\nminimum\nminor\nminute\nmiracle\nmirror\nmisery\nmiss\nmistake\nmix\nmixed\nmixture\nmobile\nmodel\nmodify\nmom\nmoment\nmonitor\nmonkey\nmonster\nmonth\nmoon\nmoral\nmore\nmorning\nmosquito\nmother\nmotion\nmotor\nmountain\nmouse\nmove\nmovie\nmuch\nmuffin\nmule\nmultiply\nmuscle\nmuseum\nmushroom\nmusic\nmust\nmutual\nmyself\nmystery\nmyth\nnaive\nname\nnapkin\nnarrow\nnasty\nnation\nnature\nnear\nneck\nneed\nnegative\nneglect\nneither\nnephew\nnerve\nnest\nnet\nnetwork\nneutral\nnever\nnews\nnext\nnice\nnight\nnoble\nnoise\nnominee\nnoodle\nnormal\nnorth\nnose\nnotable\nnote\nnothing\nnotice\nnovel\nnow\nnuclear\nnumber\nnurse\nnut\noak\nobey\nobject\noblige\nobscure\nobserve\nobtain\nobvious\noccur\nocean\noctober\nodor\noff\noffer\noffice\noften\noil\nokay\nold\nolive\nolympic\nomit\nonce\none\nonion\nonline\nonly\nopen\nopera\nopinion\noppose\noption\norange\norbit\norchard\norder\nordinary\norgan\norient\noriginal\norphan\nostrich\nother\noutdoor\nouter\noutput\noutside\noval\noven\nover\nown\nowner\noxygen\noyster\nozone\npact\npaddle\npage\npair\npalace\npalm\npanda\npanel\npanic\npanther\npaper\nparade\nparent\npark\nparrot\nparty\npass\npatch\npath\npatient\npatrol\npattern\npause\npave\npayment\npeace\npeanut\npear\npeasant\npelican\npen\npenalty\npencil\npeople\npepper\nperfect\npermit\nperson\npet\nphone\nphoto\nphrase\nphysical\npiano\npicnic\npicture\npiece\npig\npigeon\npill\npilot\npink\npioneer\npipe\npistol\npitch\npizza\nplace\nplanet\nplastic\nplate\nplay\nplease\npledge\npluck\nplug\nplunge\npoem\npoet\npoint\npolar\npole\npolice\npond\npony\npool\npopular\nportion\nposition\npossible\npost\npotato\npottery\npoverty\npowder\npower\npractice\npraise\npredict\nprefer\nprepare\npresent\npretty\nprevent\nprice\npride\nprimary\nprint\npriority\nprison\nprivate\nprize\nproblem\nprocess\nproduce\nprofit\nprogram\nproject\npromote\nproof\nproperty\nprosper\nprotect\nproud\nprovide\npublic\npudding\npull\npulp\npulse\npumpkin\npunch\npupil\npuppy\npurchase\npurity\npurpose\npurse\npush\nput\npuzzle\npyramid\nquality\nquantum\nquarter\nquestion\nquick\nquit\nquiz\nquote\nrabbit\nraccoon\nrace\nrack\nradar\nradio\nrail\nrain\nraise\nrally\nramp\nranch\nrandom\nrange\nrapid\nrare\nrate\nrather\nraven\nraw\nrazor\nready\nreal\nreason\nrebel\nrebuild\nrecall\nreceive\nrecipe\nrecord\nrecycle\nreduce\nreflect\nreform\nrefuse\nregion\nregret\nregular\nreject\nrelax\nrelease\nrelief\nrely\nremain\nremember\nremind\nremove\nrender\nrenew\nrent\nreopen\nrepair\nrepeat\nreplace\nreport\nrequire\nrescue\nresemble\nresist\nresource\nresponse\nresult\nretire\nretreat\nreturn\nreunion\nreveal\nreview\nreward\nrhythm\nrib\nribbon\nrice\nrich\nride\nridge\nrifle\nright\nrigid\nring\nriot\nripple\nrisk\nritual\nrival\nriver\nroad\nroast\nrobot\nrobust\nrocket\nromance\nroof\nrookie\nroom\nrose\nrotate\nrough\nround\nroute\nroyal\nrubber\nrude\nrug\nrule\nrun\nrunway\nrural\nsad\nsaddle\nsadness\nsafe\nsail\nsalad\nsalmon\nsalon\nsalt\nsalute\nsame\nsample\nsand\nsatisfy\nsatoshi\nsauce\nsausage\nsave\nsay\nscale\nscan\nscare\nscatter\nscene\nscheme\nschool\nscience\nscissors\nscorpion\nscout\nscrap\nscreen\nscript\nscrub\nsea\nsearch\nseason\nseat\nsecond\nsecret\nsection\nsecurity\nseed\nseek\nsegment\nselect\nsell\nseminar\nsenior\nsense\nsentence\nseries\nservice\nsession\nsettle\nsetup\nseven\nshadow\nshaft\nshallow\nshare\nshed\nshell\nsheriff\nshield\nshift\nshine\nship\nshiver\nshock\nshoe\nshoot\nshop\nshort\nshoulder\nshove\nshrimp\nshrug\nshuffle\nshy\nsibling\nsick\nside\nsiege\nsight\nsign\nsilent\nsilk\nsilly\nsilver\nsimilar\nsimple\nsince\nsing\nsiren\nsister\nsituate\nsix\nsize\nskate\nsketch\nski\nskill\nskin\nskirt\nskull\nslab\nslam\nsleep\nslender\nslice\nslide\nslight\nslim\nslogan\nslot\nslow\nslush\nsmall\nsmart\nsmile\nsmoke\nsmooth\nsnack\nsnake\nsnap\nsniff\nsnow\nsoap\nsoccer\nsocial\nsock\nsoda\nsoft\nsolar\nsoldier\nsolid\nsolution\nsolve\nsomeone\nsong\nsoon\nsorry\nsort\nsoul\nsound\nsoup\nsource\nsouth\nspace\nspare\nspatial\nspawn\nspeak\nspecial\nspeed\nspell\nspend\nsphere\nspice\nspider\nspike\nspin\nspirit\nsplit\nspoil\nsponsor\nspoon\nsport\nspot\nspray\nspread\nspring\nspy\nsquare\nsqueeze\nsquirrel\nstable\nstadium\nstaff\nstage\nstairs\nstamp\nstand\nstart\nstate\nstay\nsteak\nsteel\nstem\nstep\nstereo\nstick\nstill\nsting\nstock\nstomach\nstone\nstool\nstory\nstove\nstrategy\nstreet\nstrike\nstrong\nstruggle\nstudent\nstuff\nstumble\nstyle\nsubject\nsubmit\nsubway\nsuccess\nsuch\nsudden\nsuffer\nsugar\nsuggest\nsuit\nsummer\nsun\nsunny\nsunset\nsuper\nsupply\nsupreme\nsure\nsurface\nsurge\nsurprise\nsurround\nsurvey\nsuspect\nsustain\nswallow\nswamp\nswap\nswarm\nswear\nsweet\nswift\nswim\nswing\nswitch\nsword\nsymbol\nsymptom\nsyrup\nsystem\ntable\ntackle\ntag\ntail\ntalent\ntalk\ntank\ntape\ntarget\ntask\ntaste\ntattoo\ntaxi\nteach\nteam\ntell\nten\ntenant\ntennis\ntent\nterm\ntest\ntext\nthank\nthat\ntheme\nthen\ntheory\nthere\nthey\nthing\nthis\nthought\nthree\nthrive\nthrow\nthumb\nthunder\nticket\ntide\ntiger\ntilt\ntimber\ntime\ntiny\ntip\ntired\ntissue\ntitle\ntoast\ntobacco\ntoday\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntomato\ntomorrow\ntone\ntongue\ntonight\ntool\ntooth\ntop\ntopic\ntopple\ntorch\ntornado\ntortoise\ntoss\ntotal\ntourist\ntoward\ntower\ntown\ntoy\ntrack\ntrade\ntraffic\ntragic\ntrain\ntransfer\ntrap\ntrash\ntravel\ntray\ntreat\ntree\ntrend\ntrial\ntribe\ntrick\ntrigger\ntrim\ntrip\ntrophy\ntrouble\ntruck\ntrue\ntruly\ntrumpet\ntrust\ntruth\ntry\ntube\ntuition\ntumble\ntuna\ntunnel\nturkey\nturn\nturtle\ntwelve\ntwenty\ntwice\ntwin\ntwist\ntwo\ntype\ntypical\nugly\numbrella\nunable\nunaware\nuncle\nuncover\nunder\nundo\nunfair\nunfold\nunhappy\nuniform\nunique\nunit\nuniverse\nunknown\nunlock\nuntil\nunusual\nunveil\nupdate\nupgrade\nuphold\nupon\nupper\nupset\nurban\nurge\nusage\nuse\nused\nuseful\nuseless\nusual\nutility\nvacant\nvacuum\nvague\nvalid\nvalley\nvalve\nvan\nvanish\nvapor\nvarious\nvast\nvault\nvehicle\nvelvet\nvendor\nventure\nvenue\nverb\nverify\nversion\nvery\nvessel\nveteran\nviable\nvibrant\nvicious\nvictory\nvideo\nview\nvillage\nvintage\nviolin\nvirtual\nvirus\nvisa\nvisit\nvisual\nvital\nvivid\nvocal\nvoice\nvoid\nvolcano\nvolume\nvote\nvoyage\nwage\nwagon\nwait\nwalk\nwall\nwalnut\nwant\nwarfare\nwarm\nwarrior\nwash\nwasp\nwaste\nwater\nwave\nway\nwealth\nweapon\nwear\nweasel\nweather\nweb\nwedding\nweekend\nweird\nwelcome\nwest\nwet\nwhale\nwhat\nwheat\nwheel\nwhen\nwhere\nwhip\nwhisper\nwide\nwidth\nwife\nwild\nwill\nwin\nwindow\nwine\nwing\nwink\nwinner\nwinter\nwire\nwisdom\nwise\nwish\nwitness\nwolf\nwoman\nwonder\nwood\nwool\nword\nwork\nworld\nworry\nworth\nwrap\nwreck\nwrestle\nwrist\nwrite\nwrong\nyard\nyear\nyellow\nyou\nyoung\nyouth\nzebra\nzero\nzone\nzoo`.split('\\n');\n", "enum ECDSA {\n ed25519 = 'ed25519',\n secp256k1 = 'ecdsa-secp256k1',\n}\n\nexport default ECDSA\n", "import {\n Account,\n BaseTransaction,\n isAccount,\n isNumber,\n validateBaseTransaction,\n validateCredentialsList,\n validateOptionalField,\n validateRequiredField,\n MAX_AUTHORIZED_CREDENTIALS,\n} from './common'\n\n/**\n * An AccountDelete transaction deletes an account and any objects it owns in\n * the XRP Ledger, if possible, sending the account's remaining XRP to a\n * specified destination account.\n *\n * @category Transaction Models\n */\nexport interface AccountDelete extends BaseTransaction {\n TransactionType: 'AccountDelete'\n /**\n * The address of an account to receive any leftover XRP after deleting the\n * sending account. Must be a funded account in the ledger, and must not be.\n * the sending account.\n */\n Destination: Account\n /**\n * Arbitrary destination tag that identifies a hosted recipient or other.\n * information for the recipient of the deleted account's leftover XRP.\n */\n DestinationTag?: number\n /**\n * Credentials associated with sender of this transaction. The credentials included\n * must not be expired. The list must not be empty when specified and cannot contain\n * more than 8 credentials.\n */\n CredentialIDs?: string[]\n}\n\n/**\n * Verify the form and type of an AccountDelete at runtime.\n *\n * @param tx - An AccountDelete Transaction.\n * @throws When the AccountDelete is Malformed.\n */\nexport function validateAccountDelete(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n validateCredentialsList(\n tx.CredentialIDs,\n tx.TransactionType,\n true,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n}\n", "import { ValidationError } from '../../errors'\nimport { AuthAccount, Currency, IssuedCurrencyAmount } from '../common'\n\nimport {\n BaseTransaction,\n isAmount,\n isArray,\n isIssuedCurrency,\n isRecord,\n validateBaseTransaction,\n} from './common'\n\nconst MAX_AUTH_ACCOUNTS = 4\n\n/**\n * Bid on an Automated Market Maker's (AMM's) auction slot.\n *\n * If you win, you can trade against the AMM at a discounted fee until you are outbid or 24 hours have passed.\n * If you are outbid before 24 hours have passed, you are refunded part of the cost of your bid based on how much time remains.\n * You bid using the AMM's LP Tokens; the amount of a winning bid is returned to the AMM,\n * decreasing the outstanding balance of LP Tokens.\n */\nexport interface AMMBid extends BaseTransaction {\n TransactionType: 'AMMBid'\n\n /**\n * The definition for one of the assets in the AMM's pool.\n */\n Asset: Currency\n\n /**\n * The definition for the other asset in the AMM's pool.\n */\n Asset2: Currency\n\n /**\n * Pay at least this LPToken amount for the slot.\n * Setting this value higher makes it harder for others to outbid you.\n * If omitted, pay the minimum necessary to win the bid.\n */\n BidMin?: IssuedCurrencyAmount\n\n /**\n * Pay at most this LPToken amount for the slot.\n * If the cost to win the bid is higher than this amount, the transaction fails.\n * If omitted, pay as much as necessary to win the bid.\n */\n BidMax?: IssuedCurrencyAmount\n\n /**\n * A list of up to 4 additional accounts that you allow to trade at the discounted fee.\n * This cannot include the address of the transaction sender.\n */\n AuthAccounts?: AuthAccount[]\n}\n\n/**\n * Verify the form and type of an AMMBid at runtime.\n *\n * @param tx - An AMMBid Transaction.\n * @throws When the AMMBid is Malformed.\n */\nexport function validateAMMBid(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Asset == null) {\n throw new ValidationError('AMMBid: missing field Asset')\n }\n\n if (!isIssuedCurrency(tx.Asset)) {\n throw new ValidationError('AMMBid: Asset must be a Currency')\n }\n\n if (tx.Asset2 == null) {\n throw new ValidationError('AMMBid: missing field Asset2')\n }\n\n if (!isIssuedCurrency(tx.Asset2)) {\n throw new ValidationError('AMMBid: Asset2 must be a Currency')\n }\n\n if (tx.BidMin != null && !isAmount(tx.BidMin)) {\n throw new ValidationError('AMMBid: BidMin must be an Amount')\n }\n\n if (tx.BidMax != null && !isAmount(tx.BidMax)) {\n throw new ValidationError('AMMBid: BidMax must be an Amount')\n }\n\n if (tx.AuthAccounts != null) {\n if (!isArray(tx.AuthAccounts)) {\n throw new ValidationError(\n `AMMBid: AuthAccounts must be an AuthAccount array`,\n )\n }\n if (tx.AuthAccounts.length > MAX_AUTH_ACCOUNTS) {\n throw new ValidationError(\n `AMMBid: AuthAccounts length must not be greater than ${MAX_AUTH_ACCOUNTS}`,\n )\n }\n validateAuthAccounts(tx.Account, tx.AuthAccounts)\n }\n}\n\nfunction validateAuthAccounts(\n senderAddress: string,\n authAccounts: unknown[],\n): boolean {\n for (const authAccount of authAccounts) {\n if (!isRecord(authAccount)) {\n throw new ValidationError(`AMMBid: invalid AuthAccounts`)\n }\n if (!isRecord(authAccount.AuthAccount)) {\n throw new ValidationError(`AMMBid: invalid AuthAccounts`)\n }\n if (authAccount.AuthAccount.Account == null) {\n throw new ValidationError(`AMMBid: invalid AuthAccounts`)\n }\n if (typeof authAccount.AuthAccount.Account !== 'string') {\n throw new ValidationError(`AMMBid: invalid AuthAccounts`)\n }\n if (authAccount.AuthAccount.Account === senderAddress) {\n throw new ValidationError(\n `AMMBid: AuthAccounts must not include sender's address`,\n )\n }\n }\n\n return true\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\n\nimport { BaseTransaction, isAmount, validateBaseTransaction } from './common'\n\nexport const AMM_MAX_TRADING_FEE = 1000\n\n/**\n * Create a new Automated Market Maker (AMM) instance for trading a pair of assets (fungible tokens or XRP).\n *\n * Creates both an AMM object and a special AccountRoot object to represent the AMM.\n * Also transfers ownership of the starting balance of both assets from the sender to the created AccountRoot\n * and issues an initial balance of liquidity provider tokens (LP Tokens) from the AMM account to the sender.\n *\n * CAUTION: When you create the AMM, you should fund it with (approximately) equal-value amounts of each asset.\n * Otherwise, other users can profit at your expense by trading with this AMM (performing arbitrage).\n * The currency risk that liquidity providers take on increases with the volatility (potential for imbalance) of the asset pair.\n * The higher the trading fee, the more it offsets this risk,\n * so it's best to set the trading fee based on the volatility of the asset pair.\n */\nexport interface AMMCreate extends BaseTransaction {\n TransactionType: 'AMMCreate'\n\n /**\n * The first of the two assets to fund this AMM with. This must be a positive amount.\n */\n Amount: Amount\n\n /**\n * The second of the two assets to fund this AMM with. This must be a positive amount.\n */\n Amount2: Amount\n\n /**\n * The fee to charge for trades against this AMM instance, in units of 1/100,000; a value of 1 is equivalent to 0.001%.\n * The maximum value is 1000, indicating a 1% fee.\n * The minimum value is 0.\n */\n TradingFee: number\n}\n\n/**\n * Verify the form and type of an AMMCreate at runtime.\n *\n * @param tx - An AMMCreate Transaction.\n * @throws When the AMMCreate is Malformed.\n */\nexport function validateAMMCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Amount == null) {\n throw new ValidationError('AMMCreate: missing field Amount')\n }\n\n if (!isAmount(tx.Amount)) {\n throw new ValidationError('AMMCreate: Amount must be an Amount')\n }\n\n if (tx.Amount2 == null) {\n throw new ValidationError('AMMCreate: missing field Amount2')\n }\n\n if (!isAmount(tx.Amount2)) {\n throw new ValidationError('AMMCreate: Amount2 must be an Amount')\n }\n\n if (tx.TradingFee == null) {\n throw new ValidationError('AMMCreate: missing field TradingFee')\n }\n\n if (typeof tx.TradingFee !== 'number') {\n throw new ValidationError('AMMCreate: TradingFee must be a number')\n }\n\n if (tx.TradingFee < 0 || tx.TradingFee > AMM_MAX_TRADING_FEE) {\n throw new ValidationError(\n `AMMCreate: TradingFee must be between 0 and ${AMM_MAX_TRADING_FEE}`,\n )\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Currency } from '../common'\n\nimport {\n BaseTransaction,\n isIssuedCurrency,\n validateBaseTransaction,\n} from './common'\n\n/**\n * Delete an empty Automated Market Maker (AMM) instance that could not be fully deleted automatically.\n *\n * Tip: The AMMWithdraw transaction automatically tries to delete an AMM, along with associated ledger\n * entries such as empty trust lines, if it withdrew all the assets from the AMM's pool.\n * However, if there are too many trust lines to the AMM account to remove in one transaction,\n * it may stop before fully removing the AMM. Similarly, an AMMDelete transaction removes up to\n * a maximum number of trust lines; in extreme cases, it may take several AMMDelete transactions\n * to fully delete the trust lines and the associated AMM.\n * In all cases, the AMM ledger entry and AMM account are deleted by the last such transaction.\n */\nexport interface AMMDelete extends BaseTransaction {\n TransactionType: 'AMMDelete'\n\n /**\n * The definition for one of the assets in the AMM's pool.\n */\n Asset: Currency\n\n /**\n * The definition for the other asset in the AMM's pool.\n */\n Asset2: Currency\n}\n\n/**\n * Verify the form and type of an AMMDelete at runtime.\n *\n * @param tx - An AMMDelete Transaction.\n * @throws When the AMMDelete is Malformed.\n */\nexport function validateAMMDelete(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Asset == null) {\n throw new ValidationError('AMMDelete: missing field Asset')\n }\n\n if (!isIssuedCurrency(tx.Asset)) {\n throw new ValidationError('AMMDelete: Asset must be a Currency')\n }\n\n if (tx.Asset2 == null) {\n throw new ValidationError('AMMDelete: missing field Asset2')\n }\n\n if (!isIssuedCurrency(tx.Asset2)) {\n throw new ValidationError('AMMDelete: Asset2 must be a Currency')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Currency } from '../common'\n\nimport { AMM_MAX_TRADING_FEE } from './AMMCreate'\nimport {\n BaseTransaction,\n isIssuedCurrency,\n validateBaseTransaction,\n} from './common'\n\n/**\n * Vote on the trading fee for an Automated Market Maker (AMM) instance.\n *\n * Up to 8 accounts can vote in proportion to the amount of the AMM's LP Tokens they hold.\n * Each new vote re-calculates the AMM's trading fee based on a weighted average of the votes.\n */\nexport interface AMMVote extends BaseTransaction {\n TransactionType: 'AMMVote'\n\n /**\n * The definition for one of the assets in the AMM's pool.\n */\n Asset: Currency\n\n /**\n * The definition for the other asset in the AMM's pool.\n */\n Asset2: Currency\n\n /**\n * The proposed fee to vote for, in units of 1/100,000; a value of 1 is equivalent to 0.001%.\n * The maximum value is 1000, indicating a 1% fee.\n */\n TradingFee: number\n}\n\n/**\n * Verify the form and type of an AMMVote at runtime.\n *\n * @param tx - An AMMVote Transaction.\n * @throws When the AMMVote is Malformed.\n */\nexport function validateAMMVote(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Asset == null) {\n throw new ValidationError('AMMVote: missing field Asset')\n }\n\n if (!isIssuedCurrency(tx.Asset)) {\n throw new ValidationError('AMMVote: Asset must be a Currency')\n }\n\n if (tx.Asset2 == null) {\n throw new ValidationError('AMMVote: missing field Asset2')\n }\n\n if (!isIssuedCurrency(tx.Asset2)) {\n throw new ValidationError('AMMVote: Asset2 must be a Currency')\n }\n\n if (tx.TradingFee == null) {\n throw new ValidationError('AMMVote: missing field TradingFee')\n }\n\n if (typeof tx.TradingFee !== 'number') {\n throw new ValidationError('AMMVote: TradingFee must be a number')\n }\n\n if (tx.TradingFee < 0 || tx.TradingFee > AMM_MAX_TRADING_FEE) {\n throw new ValidationError(\n `AMMVote: TradingFee must be between 0 and ${AMM_MAX_TRADING_FEE}`,\n )\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, validateBaseTransaction } from './common'\n\n/**\n * Cancels an unredeemed Check, removing it from the ledger without sending any\n * money. The source or the destination of the check can cancel a Check at any\n * time using this transaction type. If the Check has expired, any address can\n * cancel it.\n *\n * @category Transaction Models\n */\nexport interface CheckCancel extends BaseTransaction {\n TransactionType: 'CheckCancel'\n /**\n * The ID of the Check ledger object to cancel as a 64-character hexadecimal\n * string.\n */\n CheckID: string\n}\n\n/**\n * Verify the form and type of an CheckCancel at runtime.\n *\n * @param tx - An CheckCancel Transaction.\n * @throws When the CheckCancel is Malformed.\n */\nexport function validateCheckCancel(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.CheckID !== undefined && typeof tx.CheckID !== 'string') {\n throw new ValidationError('CheckCancel: invalid CheckID')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\n\nimport { BaseTransaction, validateBaseTransaction, isAmount } from './common'\n\n/**\n * Attempts to redeem a Check object in the ledger to receive up to the amount\n * authorized by the corresponding CheckCreate transaction. Only the Destination\n * address of a Check can cash it with a CheckCash transaction.\n *\n * @category Transaction Models\n */\nexport interface CheckCash extends BaseTransaction {\n TransactionType: 'CheckCash'\n /**\n * The ID of the Check ledger object to cash as a 64-character hexadecimal\n * string.\n */\n CheckID: string\n /**\n * Redeem the Check for exactly this amount, if possible. The currency must\n * match that of the SendMax of the corresponding CheckCreate transaction. You.\n * must provide either this field or DeliverMin.\n */\n Amount?: Amount\n /**\n * Redeem the Check for at least this amount and for as much as possible. The\n * currency must match that of the SendMax of the corresponding CheckCreate.\n * transaction. You must provide either this field or Amount.\n */\n DeliverMin?: Amount\n}\n\n/**\n * Verify the form and type of an CheckCash at runtime.\n *\n * @param tx - An CheckCash Transaction.\n * @throws When the CheckCash is Malformed.\n */\nexport function validateCheckCash(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Amount == null && tx.DeliverMin == null) {\n throw new ValidationError(\n 'CheckCash: must have either Amount or DeliverMin',\n )\n }\n\n if (tx.Amount != null && tx.DeliverMin != null) {\n throw new ValidationError(\n 'CheckCash: cannot have both Amount and DeliverMin',\n )\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Necessary check\n if (tx.Amount != null && tx.Amount !== undefined && !isAmount(tx.Amount)) {\n throw new ValidationError('CheckCash: invalid Amount')\n }\n\n if (\n tx.DeliverMin != null &&\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Necessary check\n tx.DeliverMin !== undefined &&\n !isAmount(tx.DeliverMin)\n ) {\n throw new ValidationError('CheckCash: invalid DeliverMin')\n }\n\n if (tx.CheckID !== undefined && typeof tx.CheckID !== 'string') {\n throw new ValidationError('CheckCash: invalid CheckID')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n isIssuedCurrencyAmount,\n isAccount,\n validateRequiredField,\n validateOptionalField,\n isNumber,\n Account,\n} from './common'\n\n/**\n * Create a Check object in the ledger, which is a deferred payment that can be\n * cashed by its intended destination. The sender of this transaction is the\n * sender of the Check.\n *\n * @category Transaction Models\n */\nexport interface CheckCreate extends BaseTransaction {\n TransactionType: 'CheckCreate'\n /** The unique address of the account that can cash the Check. */\n Destination: Account\n /**\n * Maximum amount of source currency the Check is allowed to debit the\n * sender, including transfer fees on non-XRP currencies. The Check can only\n * credit the destination with the same currency (from the same issuer, for\n * non-XRP currencies). For non-XRP amounts, the nested field names MUST be.\n * lower-case.\n */\n SendMax: Amount\n /**\n * Arbitrary tag that identifies the reason for the Check, or a hosted.\n * recipient to pay.\n */\n DestinationTag?: number\n /**\n * Time after which the Check is no longer valid, in seconds since the Ripple.\n * Epoch.\n */\n Expiration?: number\n /**\n * Arbitrary 256-bit hash representing a specific reason or identifier for.\n * this Check.\n */\n InvoiceID?: string\n}\n\n/**\n * Verify the form and type of an CheckCreate at runtime.\n *\n * @param tx - An CheckCreate Transaction.\n * @throws When the CheckCreate is Malformed.\n */\nexport function validateCheckCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.SendMax === undefined) {\n throw new ValidationError('CheckCreate: missing field SendMax')\n }\n\n validateRequiredField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n if (typeof tx.SendMax !== 'string' && !isIssuedCurrencyAmount(tx.SendMax)) {\n throw new ValidationError('CheckCreate: invalid SendMax')\n }\n\n if (tx.Expiration !== undefined && typeof tx.Expiration !== 'number') {\n throw new ValidationError('CheckCreate: invalid Expiration')\n }\n\n if (tx.InvoiceID !== undefined && typeof tx.InvoiceID !== 'string') {\n throw new ValidationError('CheckCreate: invalid InvoiceID')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { ClawbackAmount } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n isIssuedCurrencyAmount,\n isMPTAmount,\n isAccount,\n validateOptionalField,\n isClawbackAmount,\n validateRequiredField,\n} from './common'\n\n/**\n * The Clawback transaction is used by the token issuer to claw back\n * issued tokens from a holder.\n */\nexport interface Clawback extends BaseTransaction {\n TransactionType: 'Clawback'\n /**\n * Indicates the AccountID that submitted this transaction. The account MUST\n * be the issuer of the currency or MPT.\n */\n Account: string\n /**\n * The amount of currency or MPT to clawback, and it must be non-XRP. The nested field\n * names MUST be lower-case. If the amount is IOU, the `issuer` field MUST be the holder's address,\n * whom to be clawed back.\n */\n Amount: ClawbackAmount\n /**\n * Indicates the AccountID that the issuer wants to clawback. This field is only valid for clawing back\n * MPTs.\n */\n Holder?: string\n}\n\n/**\n * Verify the form and type of an Clawback at runtime.\n *\n * @param tx - An Clawback Transaction.\n * @throws When the Clawback is Malformed.\n */\nexport function validateClawback(tx: Record): void {\n validateBaseTransaction(tx)\n validateRequiredField(tx, 'Amount', isClawbackAmount)\n validateOptionalField(tx, 'Holder', isAccount)\n\n if (!isIssuedCurrencyAmount(tx.Amount) && !isMPTAmount(tx.Amount)) {\n throw new ValidationError('Clawback: invalid Amount')\n }\n\n if (isIssuedCurrencyAmount(tx.Amount) && tx.Account === tx.Amount.issuer) {\n throw new ValidationError('Clawback: invalid holder Account')\n }\n\n if (isMPTAmount(tx.Amount) && tx.Account === tx.Holder) {\n throw new ValidationError('Clawback: invalid holder Account')\n }\n\n if (isIssuedCurrencyAmount(tx.Amount) && tx.Holder) {\n throw new ValidationError('Clawback: cannot have Holder for currency')\n }\n\n if (isMPTAmount(tx.Amount) && !tx.Holder) {\n throw new ValidationError('Clawback: missing Holder')\n }\n}\n", "import {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateCredentialType,\n validateRequiredField,\n} from './common'\n\n/**\n * Accepts a credential issued to the Account (i.e. the Account is the Subject of the Credential object).\n * Credentials are represented in hex. Whilst they are allowed a maximum length of 64\n * bytes, every byte requires 2 hex characters for representation.\n * The credential is not considered valid until it has been transferred/accepted.\n *\n * @category Transaction Models\n * */\nexport interface CredentialAccept extends BaseTransaction {\n TransactionType: 'CredentialAccept'\n\n /** The subject of the credential. */\n Account: string\n\n /** The issuer of the credential. */\n Issuer: string\n\n /** A hex-encoded value to identify the type of credential from the issuer. */\n CredentialType: string\n}\n\n/**\n * Verify the form and type of a CredentialAccept at runtime.\n *\n * @param tx - A CredentialAccept Transaction.\n * @throws When the CredentialAccept is Malformed.\n */\nexport function validateCredentialAccept(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Account', isString)\n\n validateRequiredField(tx, 'Issuer', isString)\n\n validateCredentialType(tx)\n}\n", "import { HEX_REGEX } from '@xrplf/isomorphic/utils'\n\nimport { ValidationError } from '../../errors'\n\nimport {\n BaseTransaction,\n isNumber,\n isString,\n validateBaseTransaction,\n validateCredentialType,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\nconst MAX_URI_LENGTH = 256\n\n/**\n * Creates a Credential object. It must be sent by the issuer.\n *\n * @category Transaction Models\n * */\nexport interface CredentialCreate extends BaseTransaction {\n TransactionType: 'CredentialCreate'\n\n /** The issuer of the credential. */\n Account: string\n\n /** The subject of the credential. */\n Subject: string\n\n /** A hex-encoded value to identify the type of credential from the issuer. */\n CredentialType: string\n\n /** Credential expiration. */\n Expiration?: number\n\n /** Additional data about the credential (such as a link to the VC document). */\n URI?: string\n}\n\n/**\n * Verify the form and type of a CredentialCreate at runtime.\n *\n * @param tx - A CredentialCreate Transaction.\n * @throws When the CredentialCreate is Malformed.\n */\nexport function validateCredentialCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Account', isString)\n\n validateRequiredField(tx, 'Subject', isString)\n\n validateCredentialType(tx)\n\n validateOptionalField(tx, 'Expiration', isNumber)\n\n validateURI(tx.URI)\n}\n\nfunction validateURI(URI: unknown): void {\n if (URI === undefined) {\n return\n }\n\n if (typeof URI !== 'string') {\n throw new ValidationError('CredentialCreate: invalid field URI')\n }\n\n if (URI.length === 0) {\n throw new ValidationError('CredentialCreate: URI cannot be an empty string')\n } else if (URI.length > MAX_URI_LENGTH) {\n throw new ValidationError(\n `CredentialCreate: URI length must be <= ${MAX_URI_LENGTH}`,\n )\n }\n\n if (!HEX_REGEX.test(URI)) {\n throw new ValidationError('CredentialCreate: URI must be encoded in hex')\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateCredentialType,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * Deletes a Credential object.\n *\n * @category Transaction Models\n * */\nexport interface CredentialDelete extends BaseTransaction {\n TransactionType: 'CredentialDelete'\n\n /** The transaction submitter. */\n Account: string\n\n /** A hex-encoded value to identify the type of credential from the issuer. */\n CredentialType: string\n\n /** The person that the credential is for. If omitted, Account is assumed to be the subject. */\n Subject?: string\n\n /** The issuer of the credential. If omitted, Account is assumed to be the issuer. */\n Issuer?: string\n}\n\n/**\n * Verify the form and type of a CredentialDelete at runtime.\n *\n * @param tx - A CredentialDelete Transaction.\n * @throws When the CredentialDelete is Malformed.\n */\nexport function validateCredentialDelete(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (!tx.Subject && !tx.Issuer) {\n throw new ValidationError(\n 'CredentialDelete: either `Issuer` or `Subject` must be provided',\n )\n }\n\n validateRequiredField(tx, 'Account', isString)\n\n validateCredentialType(tx)\n\n validateOptionalField(tx, 'Subject', isString)\n\n validateOptionalField(tx, 'Issuer', isString)\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateRequiredField,\n isAccount,\n Account,\n} from './common'\n\nconst PERMISSIONS_MAX_LENGTH = 10\nconst NON_DELEGABLE_TRANSACTIONS = new Set([\n 'AccountSet',\n 'SetRegularKey',\n 'SignerListSet',\n 'DelegateSet',\n 'AccountDelete',\n 'Batch',\n // Pseudo transactions below:\n 'EnableAmendment',\n 'SetFee',\n 'UNLModify',\n])\n\nexport interface Permission {\n Permission: {\n PermissionValue: string\n }\n}\n\n/**\n * DelegateSet allows an account to delegate a set of permissions to another account.\n *\n * @category Transaction Models\n */\nexport interface DelegateSet extends BaseTransaction {\n TransactionType: 'DelegateSet'\n\n /**\n * The authorized account.\n */\n Authorize: Account\n\n /**\n * The transaction permissions (represented by integers) that the account has been granted.\n */\n Permissions: Permission[]\n}\n\n/**\n * Verify the form and type of an DelegateSet at runtime.\n *\n * @param tx - An DelegateSet Transaction.\n * @throws When the DelegateSet is malformed.\n */\n// eslint-disable-next-line max-lines-per-function -- necessary for validation\nexport function validateDelegateSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Authorize', isAccount)\n\n if (tx.Authorize === tx.Account) {\n throw new ValidationError(\n 'DelegateSet: Authorize and Account must be different.',\n )\n }\n\n validateRequiredField(tx, 'Permissions', Array.isArray)\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- required for validation\n const permissions = tx.Permissions as DelegateSet['Permissions']\n if (permissions.length > PERMISSIONS_MAX_LENGTH) {\n throw new ValidationError(\n `DelegateSet: Permissions array length cannot be greater than ${PERMISSIONS_MAX_LENGTH}.`,\n )\n }\n\n const permissionValueSet = new Set()\n permissions.forEach((permission: Permission) => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation\n permission == null ||\n Object.keys(permission).length !== 1 ||\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation\n permission.Permission == null ||\n Object.keys(permission.Permission).length !== 1\n ) {\n throw new ValidationError(\n 'DelegateSet: Permissions array element is malformed',\n )\n }\n const permissionValue = permission.Permission.PermissionValue\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- required for validation\n if (permissionValue == null) {\n throw new ValidationError('DelegateSet: PermissionValue must be defined')\n }\n if (typeof permissionValue !== 'string') {\n throw new ValidationError('DelegateSet: PermissionValue must be a string')\n }\n if (NON_DELEGABLE_TRANSACTIONS.has(permissionValue)) {\n throw new ValidationError(\n `DelegateSet: PermissionValue contains a non-delegatable transaction ${permissionValue}`,\n )\n }\n permissionValueSet.add(permissionValue)\n })\n if (permissions.length !== permissionValueSet.size) {\n throw new ValidationError(\n 'DelegateSet: Permissions array cannot contain duplicate values',\n )\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { AuthorizeCredential } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateCredentialsList,\n MAX_AUTHORIZED_CREDENTIALS,\n} from './common'\n\n/**\n * A DepositPreauth transaction gives another account pre-approval to deliver\n * payments to the sender of this transaction. This is only useful if the sender\n * of this transaction is using (or plans to use) Deposit Authorization.\n *\n * @category Transaction Models\n */\nexport interface DepositPreauth extends BaseTransaction {\n TransactionType: 'DepositPreauth'\n /** The XRP Ledger address of the sender to preauthorize. */\n Authorize?: string\n /**\n * The XRP Ledger address of a sender whose preauthorization should be.\n * revoked.\n */\n Unauthorize?: string\n\n /**\n * The credential(s) to preauthorize.\n */\n AuthorizeCredentials?: AuthorizeCredential[]\n\n /**\n * The credential(s) whose preauthorization should be revoked.\n */\n UnauthorizeCredentials?: AuthorizeCredential[]\n}\n\n/**\n * Verify the form and type of a DepositPreauth at runtime.\n *\n * @param tx - A DepositPreauth Transaction.\n * @throws When the DepositPreauth is malformed.\n */\nexport function validateDepositPreauth(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateSingleAuthorizationFieldProvided(tx)\n\n if (tx.Authorize !== undefined) {\n if (typeof tx.Authorize !== 'string') {\n throw new ValidationError('DepositPreauth: Authorize must be a string')\n }\n\n if (tx.Account === tx.Authorize) {\n throw new ValidationError(\n \"DepositPreauth: Account can't preauthorize its own address\",\n )\n }\n } else if (tx.Unauthorize !== undefined) {\n if (typeof tx.Unauthorize !== 'string') {\n throw new ValidationError('DepositPreauth: Unauthorize must be a string')\n }\n\n if (tx.Account === tx.Unauthorize) {\n throw new ValidationError(\n \"DepositPreauth: Account can't unauthorize its own address\",\n )\n }\n } else if (tx.AuthorizeCredentials !== undefined) {\n validateCredentialsList(\n tx.AuthorizeCredentials,\n tx.TransactionType,\n false,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n } else if (tx.UnauthorizeCredentials !== undefined) {\n validateCredentialsList(\n tx.UnauthorizeCredentials,\n tx.TransactionType,\n false,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n }\n}\n\n// Boolean logic to ensure exactly one of 4 inputs was provided\nfunction validateSingleAuthorizationFieldProvided(\n tx: Record,\n): void {\n const fields = [\n 'Authorize',\n 'Unauthorize',\n 'AuthorizeCredentials',\n 'UnauthorizeCredentials',\n ]\n const countProvided = fields.filter((key) => tx[key] !== undefined).length\n\n if (countProvided !== 1) {\n throw new ValidationError(\n 'DepositPreauth: Requires exactly one field of the following: Authorize, Unauthorize, AuthorizeCredentials, UnauthorizeCredentials.',\n )\n }\n}\n", "import { BaseTransaction, validateBaseTransaction } from './common'\n\n// TODO: add docs\n\n/**\n * @category Transaction Models\n */\nexport interface DIDDelete extends BaseTransaction {\n TransactionType: 'DIDDelete'\n}\n\n/**\n * Verify the form and type of a DIDDelete at runtime.\n *\n * @param tx - A DIDDelete Transaction.\n * @throws When the DIDDelete is malformed.\n */\nexport function validateDIDDelete(tx: Record): void {\n validateBaseTransaction(tx)\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateOptionalField,\n} from './common'\n\n// TODO: add docs\n\n/**\n * @category Transaction Models\n */\nexport interface DIDSet extends BaseTransaction {\n TransactionType: 'DIDSet'\n\n Data?: string\n\n DIDDocument?: string\n\n URI?: string\n}\n\n/**\n * Verify the form and type of a DIDSet at runtime.\n *\n * @param tx - A DIDSet Transaction.\n * @throws When the DIDSet is malformed.\n */\nexport function validateDIDSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateOptionalField(tx, 'Data', isString)\n\n validateOptionalField(tx, 'DIDDocument', isString)\n\n validateOptionalField(tx, 'URI', isString)\n\n if (\n tx.Data === undefined &&\n tx.DIDDocument === undefined &&\n tx.URI === undefined\n ) {\n throw new ValidationError(\n 'DIDSet: Must have at least one of `Data`, `DIDDocument`, and `URI`',\n )\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * Return escrowed XRP to the sender.\n *\n * @category Transaction Models\n */\nexport interface EscrowCancel extends BaseTransaction {\n TransactionType: 'EscrowCancel'\n /** Address of the source account that funded the escrow payment. */\n Owner: Account\n /**\n * Transaction sequence (or Ticket number) of EscrowCreate transaction that.\n * created the escrow to cancel.\n */\n OfferSequence: number | string\n}\n\n/**\n * Verify the form and type of an EscrowCancel at runtime.\n *\n * @param tx - An EscrowCancel Transaction.\n * @throws When the EscrowCancel is Malformed.\n */\nexport function validateEscrowCancel(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Owner', isAccount)\n\n if (tx.OfferSequence == null) {\n throw new ValidationError('EscrowCancel: missing OfferSequence')\n }\n\n if (\n (typeof tx.OfferSequence !== 'number' &&\n typeof tx.OfferSequence !== 'string') ||\n Number.isNaN(Number(tx.OfferSequence))\n ) {\n throw new ValidationError('EscrowCancel: OfferSequence must be a number')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount, MPTAmount } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isNumber,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * Sequester XRP until the escrow process either finishes or is canceled.\n *\n * @category Transaction Models\n */\nexport interface EscrowCreate extends BaseTransaction {\n TransactionType: 'EscrowCreate'\n /**\n * The amount to deduct from the sender's balance and and set aside in escrow.\n * Once escrowed, this amount can either go to the Destination address (after any Finish times/conditions)\n * or returned to the sender (after any cancellation times/conditions). Can represent XRP, in drops,\n * an IOU token, or an MPT. Must always be a positive value.\n */\n Amount: Amount | MPTAmount\n /** Address to receive escrowed XRP. */\n Destination: Account\n /**\n * The time, in seconds since the Ripple Epoch, when this escrow expires.\n * This value is immutable; the funds can only be returned the sender after.\n * this time.\n */\n CancelAfter?: number\n /**\n * The time, in seconds since the Ripple Epoch, when the escrowed XRP can be\n * released to the recipient. This value is immutable; the funds cannot move.\n * until this time is reached.\n */\n FinishAfter?: number\n /**\n * Hex value representing a PREIMAGE-SHA-256 crypto-condition . The funds can.\n * only be delivered to the recipient if this condition is fulfilled.\n */\n Condition?: string\n /**\n * Arbitrary tag to further specify the destination for this escrowed.\n * payment, such as a hosted recipient at the destination address.\n */\n DestinationTag?: number\n}\n\n/**\n * Verify the form and type of an EscrowCreate at runtime.\n *\n * @param tx - An EscrowCreate Transaction.\n * @throws When the EscrowCreate is Malformed.\n */\nexport function validateEscrowCreate(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Amount', isAmount)\n validateRequiredField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n if (tx.CancelAfter === undefined && tx.FinishAfter === undefined) {\n throw new ValidationError(\n 'EscrowCreate: Either CancelAfter or FinishAfter must be specified',\n )\n }\n\n if (tx.FinishAfter === undefined && tx.Condition === undefined) {\n throw new ValidationError(\n 'EscrowCreate: Either Condition or FinishAfter must be specified',\n )\n }\n\n if (tx.CancelAfter !== undefined && typeof tx.CancelAfter !== 'number') {\n throw new ValidationError('EscrowCreate: CancelAfter must be a number')\n }\n\n if (tx.FinishAfter !== undefined && typeof tx.FinishAfter !== 'number') {\n throw new ValidationError('EscrowCreate: FinishAfter must be a number')\n }\n\n if (tx.Condition !== undefined && typeof tx.Condition !== 'string') {\n throw new ValidationError('EscrowCreate: Condition must be a string')\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n validateBaseTransaction,\n validateCredentialsList,\n validateRequiredField,\n MAX_AUTHORIZED_CREDENTIALS,\n} from './common'\n\n/**\n * Deliver XRP from a held payment to the recipient.\n *\n * @category Transaction Models\n */\nexport interface EscrowFinish extends BaseTransaction {\n TransactionType: 'EscrowFinish'\n /** Address of the source account that funded the held payment. */\n Owner: Account\n /**\n * Transaction sequence of EscrowCreate transaction that created the held.\n * payment to finish.\n */\n OfferSequence: number | string\n /**\n * Hex value matching the previously-supplied PREIMAGE-SHA-256.\n * crypto-condition of the held payment.\n */\n Condition?: string\n /**\n * Hex value of the PREIMAGE-SHA-256 crypto-condition fulfillment matching.\n * the held payment's Condition.\n */\n Fulfillment?: string\n /** Credentials associated with the sender of this transaction.\n * The credentials included must not be expired.\n */\n CredentialIDs?: string[]\n}\n\n/**\n * Verify the form and type of an EscrowFinish at runtime.\n *\n * @param tx - An EscrowFinish Transaction.\n * @throws When the EscrowFinish is Malformed.\n */\nexport function validateEscrowFinish(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Owner', isAccount)\n\n validateCredentialsList(\n tx.CredentialIDs,\n tx.TransactionType,\n true,\n MAX_AUTHORIZED_CREDENTIALS,\n )\n\n if (tx.OfferSequence == null) {\n throw new ValidationError('EscrowFinish: missing field OfferSequence')\n }\n\n if (\n (typeof tx.OfferSequence !== 'number' &&\n typeof tx.OfferSequence !== 'string') ||\n Number.isNaN(Number(tx.OfferSequence))\n ) {\n throw new ValidationError('EscrowFinish: OfferSequence must be a number')\n }\n\n if (tx.Condition !== undefined && typeof tx.Condition !== 'string') {\n throw new ValidationError('EscrowFinish: Condition must be a string')\n }\n\n if (tx.Fulfillment !== undefined && typeof tx.Fulfillment !== 'string') {\n throw new ValidationError('EscrowFinish: Fulfillment must be a string')\n }\n}\n", "import {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * The MPTokenIssuanceDestroy transaction is used to remove an MPTokenIssuance object\n * from the directory node in which it is being held, effectively removing the token\n * from the ledger. If this operation succeeds, the corresponding\n * MPTokenIssuance is removed and the owner\u2019s reserve requirement is reduced by one.\n * This operation must fail if there are any holders who have non-zero balances.\n */\nexport interface MPTokenIssuanceDestroy extends BaseTransaction {\n TransactionType: 'MPTokenIssuanceDestroy'\n /**\n * Identifies the MPTokenIssuance object to be removed by the transaction.\n */\n MPTokenIssuanceID: string\n}\n\n/**\n * Verify the form and type of an MPTokenIssuanceDestroy at runtime.\n *\n * @param tx - An MPTokenIssuanceDestroy Transaction.\n * @throws When the MPTokenIssuanceDestroy is Malformed.\n */\nexport function validateMPTokenIssuanceDestroy(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n validateRequiredField(tx, 'MPTokenIssuanceID', isString)\n}\n", "import { ValidationError } from '../../errors'\nimport { Amount } from '../common'\n\nimport {\n BaseTransaction,\n parseAmountValue,\n validateBaseTransaction,\n} from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n/**\n * The NFTokenOfferAccept transaction is used to accept offers\n * to buy or sell an NFToken. It can either:\n *\n * 1. Allow one offer to be accepted. This is called direct\n * mode.\n * 2. Allow two distinct offers, one offering to buy a\n * given NFToken and the other offering to sell the same\n * NFToken, to be accepted in an atomic fashion. This is\n * called brokered mode.\n *\n * To indicate direct mode, use either the `sell_offer` or\n * `buy_offer` fields, but not both. To indicate brokered mode,\n * use both the `sell_offer` and `buy_offer` fields. If you use\n * neither `sell_offer` nor `buy_offer`, the transaction is invalid.\n */\nexport interface NFTokenAcceptOffer extends BaseTransaction {\n TransactionType: 'NFTokenAcceptOffer'\n /**\n * Identifies the NFTokenOffer that offers to sell the NFToken.\n *\n * In direct mode this field is optional, but either NFTokenSellOffer or\n * NFTokenBuyOffer must be specified. In brokered mode, both NFTokenSellOffer\n * and NFTokenBuyOffer must be specified.\n */\n NFTokenSellOffer?: string\n /**\n * Identifies the NFTokenOffer that offers to buy the NFToken.\n *\n * In direct mode this field is optional, but either NFTokenSellOffer or\n * NFTokenBuyOffer must be specified. In brokered mode, both NFTokenSellOffer\n * and NFTokenBuyOffer must be specified.\n */\n NFTokenBuyOffer?: string\n /**\n * This field is only valid in brokered mode. It specifies the\n * amount that the broker will keep as part of their fee for\n * bringing the two offers together; the remaining amount will\n * be sent to the seller of the NFToken being bought. If\n * specified, the fee must be such that, prior to accounting\n * for the transfer fee charged by the issuer, the amount that\n * the seller would receive is at least as much as the amount\n * indicated in the sell offer.\n *\n * This functionality is intended to allow the owner of an\n * NFToken to offer their token for sale to a third party\n * broker, who may then attempt to sell the NFToken on for a\n * larger amount, without the broker having to own the NFToken\n * or custody funds.\n *\n * Note: in brokered mode, the offers referenced by NFTokenBuyOffer\n * and NFTokenSellOffer must both specify the same NFTokenID; that is,\n * both must be for the same NFToken.\n */\n NFTokenBrokerFee?: Amount\n}\n\nexport interface NFTokenAcceptOfferMetadata extends TransactionMetadataBase {\n // rippled 1.11.0 or later\n nftoken_id?: string\n}\n\nfunction validateNFTokenBrokerFee(tx: Record): void {\n const value = parseAmountValue(tx.NFTokenBrokerFee)\n if (Number.isNaN(value)) {\n throw new ValidationError('NFTokenAcceptOffer: invalid NFTokenBrokerFee')\n }\n\n if (value <= 0) {\n throw new ValidationError(\n 'NFTokenAcceptOffer: NFTokenBrokerFee must be greater than 0; omit if there is no fee',\n )\n }\n\n if (tx.NFTokenSellOffer == null || tx.NFTokenBuyOffer == null) {\n throw new ValidationError(\n 'NFTokenAcceptOffer: both NFTokenSellOffer and NFTokenBuyOffer must be set if using brokered mode',\n )\n }\n}\n\n/**\n * Verify the form and type of an NFTokenAcceptOffer at runtime.\n *\n * @param tx - An NFTokenAcceptOffer Transaction.\n * @throws When the NFTokenAcceptOffer is Malformed.\n */\nexport function validateNFTokenAcceptOffer(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.NFTokenBrokerFee != null) {\n validateNFTokenBrokerFee(tx)\n }\n\n if (tx.NFTokenSellOffer == null && tx.NFTokenBuyOffer == null) {\n throw new ValidationError(\n 'NFTokenAcceptOffer: must set either NFTokenSellOffer or NFTokenBuyOffer',\n )\n }\n}\n", "import {\n Account,\n BaseTransaction,\n isAccount,\n isString,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * The NFTokenBurn transaction is used to remove an NFToken object from the\n * NFTokenPage in which it is being held, effectively removing the token from\n * the ledger (\"burning\" it).\n *\n * If this operation succeeds, the corresponding NFToken is removed. If this\n * operation empties the NFTokenPage holding the NFToken or results in the\n * consolidation, thus removing an NFTokenPage, the owner\u2019s reserve requirement\n * is reduced by one.\n */\nexport interface NFTokenBurn extends BaseTransaction {\n TransactionType: 'NFTokenBurn'\n /**\n * Indicates the AccountID that submitted this transaction. The account MUST\n * be either the present owner of the token or, if the lsfBurnable flag is set\n * in the NFToken, either the issuer account or an account authorized by the\n * issuer, i.e. MintAccount.\n */\n Account: Account\n /**\n * Identifies the NFToken object to be removed by the transaction.\n */\n NFTokenID: string\n /**\n * Indicates which account currently owns the token if it is different than\n * Account. Only used to burn tokens which have the lsfBurnable flag enabled\n * and are not owned by the signing account.\n */\n Owner?: Account\n}\n\n/**\n * Verify the form and type of an NFTokenBurn at runtime.\n *\n * @param tx - An NFTokenBurn Transaction.\n * @throws When the NFTokenBurn is Malformed.\n */\nexport function validateNFTokenBurn(tx: Record): void {\n validateBaseTransaction(tx)\n validateRequiredField(tx, 'NFTokenID', isString)\n validateOptionalField(tx, 'Owner', isAccount)\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, isArray, validateBaseTransaction } from './common'\nimport type { TransactionMetadataBase } from './metadata'\n\n/**\n * The NFTokenCancelOffer transaction deletes existing NFTokenOffer objects.\n * It is useful if you want to free up space on your account to lower your\n * reserve requirement.\n *\n * The transaction can be executed by the account that originally created\n * the NFTokenOffer, the account in the `Recipient` field of the NFTokenOffer\n * (if present), or any account if the NFTokenOffer has an `Expiration` and\n * the NFTokenOffer has already expired.\n */\nexport interface NFTokenCancelOffer extends BaseTransaction {\n TransactionType: 'NFTokenCancelOffer'\n /**\n * An array of identifiers of NFTokenOffer objects that should be cancelled\n * by this transaction.\n *\n * It is an error if an entry in this list points to an\n * object that is not an NFTokenOffer object. It is not an\n * error if an entry in this list points to an object that\n * does not exist. This field is required.\n */\n NFTokenOffers: string[]\n}\n\nexport interface NFTokenCancelOfferMetadata extends TransactionMetadataBase {\n // rippled 1.11.0 or later\n nftoken_ids?: string[]\n}\n\n/**\n * Verify the form and type of an NFTokenCancelOffer at runtime.\n *\n * @param tx - An NFTokenCancelOffer Transaction.\n * @throws When the NFTokenCancelOffer is Malformed.\n */\nexport function validateNFTokenCancelOffer(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (!isArray(tx.NFTokenOffers)) {\n throw new ValidationError('NFTokenCancelOffer: missing field NFTokenOffers')\n }\n\n if (tx.NFTokenOffers.length < 1) {\n throw new ValidationError('NFTokenCancelOffer: empty field NFTokenOffers')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { isHex } from '../utils'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n isAccount,\n isString,\n validateOptionalField,\n Account,\n validateRequiredField,\n} from './common'\n\n/**\n * The NFTokenModify transaction modifies an NFToken's URI\n * if its tfMutable is set to true.\n */\nexport interface NFTokenModify extends BaseTransaction {\n TransactionType: 'NFTokenModify'\n /**\n * Identifies the NFTokenID of the NFToken object that the\n * offer references.\n */\n NFTokenID: string\n /**\n * Indicates the AccountID of the account that owns the corresponding NFToken.\n * Can be omitted if the owner is the account submitting this transaction\n */\n Owner?: Account\n /**\n * URI that points to the data and/or metadata associated with the NFT.\n * This field need not be an HTTP or HTTPS URL; it could be an IPFS URI, a\n * magnet link, immediate data encoded as an RFC2379 \"data\" URL, or even an\n * opaque issuer-specific encoding. The URI is NOT checked for validity, but\n * the field is limited to a maximum length of 256 bytes.\n *\n * This field must be hex-encoded. You can use `convertStringToHex` to\n * convert this field to the proper encoding.\n *\n * This field must not be an empty string. Omit it from the transaction or\n * set to `null` if you do not use it.\n */\n URI?: string | null\n}\n\n/**\n * Verify the form and type of an NFTokenModify at runtime.\n *\n * @param tx - An NFTokenModify Transaction.\n * @throws When the NFTokenModify is Malformed.\n */\nexport function validateNFTokenModify(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'NFTokenID', isString)\n validateOptionalField(tx, 'Owner', isAccount)\n validateOptionalField(tx, 'URI', isString)\n\n if (tx.URI !== undefined && typeof tx.URI === 'string') {\n if (tx.URI === '') {\n throw new ValidationError('NFTokenModify: URI must not be empty string')\n }\n if (!isHex(tx.URI)) {\n throw new ValidationError('NFTokenModify: URI must be in hex format')\n }\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, validateBaseTransaction } from './common'\n\n/**\n * An OfferCancel transaction removes an Offer object from the XRP Ledger.\n *\n * @category Transaction Models\n */\nexport interface OfferCancel extends BaseTransaction {\n TransactionType: 'OfferCancel'\n /**\n * The sequence number (or Ticket number) of a previous OfferCreate\n * transaction. If specified, cancel any offer object in the ledger that was\n * created by that transaction. It is not considered an error if the offer.\n * specified does not exist.\n */\n OfferSequence: number\n}\n\n/**\n * Verify the form and type of an OfferCancel at runtime.\n *\n * @param tx - An OfferCancel Transaction.\n * @throws When the OfferCancel is Malformed.\n */\nexport function validateOfferCancel(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.OfferSequence === undefined) {\n throw new ValidationError('OfferCancel: missing field OfferSequence')\n }\n\n if (typeof tx.OfferSequence !== 'number') {\n throw new ValidationError('OfferCancel: OfferSequence must be a number')\n }\n}\n", "import {\n BaseTransaction,\n isNumber,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * Delete an Oracle ledger entry.\n *\n * @category Transaction Models\n */\nexport interface OracleDelete extends BaseTransaction {\n TransactionType: 'OracleDelete'\n\n /**\n * A unique identifier of the price oracle for the Account.\n */\n OracleDocumentID: number\n}\n\n/**\n * Verify the form and type of a OracleDelete at runtime.\n *\n * @param tx - A OracleDelete Transaction.\n * @throws When the OracleDelete is malformed.\n */\nexport function validateOracleDelete(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'OracleDocumentID', isNumber)\n}\n", "import { ValidationError } from '../../errors'\nimport { PriceData } from '../common'\nimport { isHex } from '../utils'\n\nimport {\n BaseTransaction,\n isArray,\n isNumber,\n isRecord,\n isString,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\nconst PRICE_DATA_SERIES_MAX_LENGTH = 10\nconst SCALE_MAX = 10\nconst MINIMUM_ASSET_PRICE_LENGTH = 1\nconst MAXIMUM_ASSET_PRICE_LENGTH = 16\n\n/**\n * Creates a new Oracle ledger entry or updates the fields of an existing one, using the Oracle ID.\n *\n * The oracle provider must complete these steps before submitting this transaction:\n * 1. Create or own the XRPL account in the Owner field and have enough XRP to meet the reserve and transaction fee requirements.\n * 2. Publish the XRPL account public key, so it can be used for verification by dApps.\n * 3. Publish a registry of available price oracles with their unique OracleDocumentID.\n *\n * @category Transaction Models\n */\nexport interface OracleSet extends BaseTransaction {\n TransactionType: 'OracleSet'\n\n /**\n * A unique identifier of the price oracle for the Account.\n */\n OracleDocumentID: number\n\n /**\n * The time the data was last updated, represented as a unix timestamp in seconds.\n */\n LastUpdateTime: number\n\n /**\n * An array of up to 10 PriceData objects, each representing the price information\n * for a token pair. More than five PriceData objects require two owner reserves.\n */\n PriceDataSeries: PriceData[]\n\n /**\n * An arbitrary value that identifies an oracle provider, such as Chainlink, Band,\n * or DIA. This field is a string, up to 256 ASCII hex encoded characters (0x20-0x7E).\n * This field is required when creating a new Oracle ledger entry, but is optional for updates.\n */\n Provider?: string\n\n /**\n * An optional Universal Resource Identifier to reference price data off-chain. This field is limited to 256 bytes.\n */\n URI?: string\n\n /**\n * Describes the type of asset, such as \"currency\", \"commodity\", or \"index\". This field is a string, up to 16 ASCII\n * hex encoded characters (0x20-0x7E). This field is required when creating a new Oracle ledger entry, but is optional\n * for updates.\n */\n AssetClass?: string\n}\n\n/**\n * Verify the form and type of a OracleSet at runtime.\n *\n * @param tx - A OracleSet Transaction.\n * @throws When the OracleSet is malformed.\n */\n// eslint-disable-next-line max-lines-per-function -- necessary to validate many fields\nexport function validateOracleSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'OracleDocumentID', isNumber)\n\n validateRequiredField(tx, 'LastUpdateTime', isNumber)\n\n validateOptionalField(tx, 'Provider', isString)\n\n validateOptionalField(tx, 'URI', isString)\n\n validateOptionalField(tx, 'AssetClass', isString)\n\n /* eslint-disable max-statements, max-lines-per-function -- necessary to validate many fields */\n validateRequiredField(\n tx,\n 'PriceDataSeries',\n (value: unknown): value is PriceData => {\n if (!isArray(value)) {\n throw new ValidationError('OracleSet: PriceDataSeries must be an array')\n }\n\n if (value.length > PRICE_DATA_SERIES_MAX_LENGTH) {\n throw new ValidationError(\n `OracleSet: PriceDataSeries must have at most ${PRICE_DATA_SERIES_MAX_LENGTH} PriceData objects`,\n )\n }\n\n // TODO: add support for handling inner objects easier (similar to validateRequiredField/validateOptionalField)\n for (const priceData of value) {\n if (!isRecord(priceData)) {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must be an array of objects',\n )\n }\n\n const priceDataInner = priceData.PriceData\n\n if (!isRecord(priceDataInner)) {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must have a `PriceData` object',\n )\n }\n\n // check if priceData only has PriceData\n if (Object.keys(priceData).length !== 1) {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must only have a single PriceData object',\n )\n }\n\n if (\n priceDataInner.BaseAsset == null ||\n typeof priceDataInner.BaseAsset !== 'string'\n ) {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must have a `BaseAsset` string',\n )\n }\n\n if (typeof priceDataInner.QuoteAsset !== 'string') {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must have a `QuoteAsset` string',\n )\n }\n\n // Either AssetPrice and Scale are both present or both excluded\n if (\n (priceDataInner.AssetPrice == null) !==\n (priceDataInner.Scale == null)\n ) {\n throw new ValidationError(\n 'OracleSet: PriceDataSeries must have both `AssetPrice` and `Scale` if any are present',\n )\n }\n\n /* eslint-disable max-depth --\n we need to validate priceDataInner.AssetPrice value */\n if ('AssetPrice' in priceDataInner) {\n if (!isNumber(priceDataInner.AssetPrice)) {\n if (typeof priceDataInner.AssetPrice !== 'string') {\n throw new ValidationError(\n 'OracleSet: Field AssetPrice must be a string or a number',\n )\n }\n if (!isHex(priceDataInner.AssetPrice)) {\n throw new ValidationError(\n 'OracleSet: Field AssetPrice must be a valid hex string',\n )\n }\n if (\n priceDataInner.AssetPrice.length < MINIMUM_ASSET_PRICE_LENGTH ||\n priceDataInner.AssetPrice.length > MAXIMUM_ASSET_PRICE_LENGTH\n ) {\n throw new ValidationError(\n `OracleSet: Length of AssetPrice field must be between ${MINIMUM_ASSET_PRICE_LENGTH} and ${MAXIMUM_ASSET_PRICE_LENGTH} characters long`,\n )\n }\n }\n }\n\n if ('Scale' in priceDataInner) {\n if (!isNumber(priceDataInner.Scale)) {\n throw new ValidationError('OracleSet: invalid field Scale')\n }\n\n if (priceDataInner.Scale < 0 || priceDataInner.Scale > SCALE_MAX) {\n throw new ValidationError(\n `OracleSet: Scale must be in range 0-${SCALE_MAX}`,\n )\n }\n /* eslint-enable max-depth */\n }\n }\n return true\n },\n )\n /* eslint-enable max-statements, max-lines-per-function */\n}\n", "import { ValidationError } from '../../errors'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isNumber,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * Create a unidirectional channel and fund it with XRP. The address sending\n * this transaction becomes the \"source address\" of the payment channel.\n *\n * @category Transaction Models\n */\nexport interface PaymentChannelCreate extends BaseTransaction {\n TransactionType: 'PaymentChannelCreate'\n /**\n * Amount of XRP, in drops, to deduct from the sender's balance and set aside\n * in this channel. While the channel is open, the XRP can only go to the\n * Destination address. When the channel closes, any unclaimed XRP is returned\n * to the source address's balance.\n */\n Amount: string\n /**\n * Address to receive XRP claims against this channel. This is also known as\n * the \"destination address\" for the channel.\n */\n Destination: Account\n /**\n * Amount of time the source address must wait before closing the channel if\n * it has unclaimed XRP.\n */\n SettleDelay: number\n /**\n * The public key of the key pair the source will use to sign claims against\n * this channel in hexadecimal. This can be any secp256k1 or ed25519 public\n * key.\n */\n PublicKey: string\n /**\n * The time, in seconds since the Ripple Epoch, when this channel expires.\n * Any transaction that would modify the channel after this time closes the\n * channel without otherwise affecting it. This value is immutable; the\n * channel can be closed earlier than this time but cannot remain open after\n * this time.\n */\n CancelAfter?: number\n /**\n * Arbitrary tag to further specify the destination for this payment channel,\n * such as a hosted recipient at the destination address.\n */\n DestinationTag?: number\n}\n\n/**\n * Verify the form and type of an PaymentChannelCreate at runtime.\n *\n * @param tx - An PaymentChannelCreate Transaction.\n * @throws When the PaymentChannelCreate is Malformed.\n */\nexport function validatePaymentChannelCreate(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n if (tx.Amount === undefined) {\n throw new ValidationError('PaymentChannelCreate: missing Amount')\n }\n\n if (typeof tx.Amount !== 'string') {\n throw new ValidationError('PaymentChannelCreate: Amount must be a string')\n }\n\n validateRequiredField(tx, 'Destination', isAccount)\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n if (tx.SettleDelay === undefined) {\n throw new ValidationError('PaymentChannelCreate: missing SettleDelay')\n }\n\n if (typeof tx.SettleDelay !== 'number') {\n throw new ValidationError(\n 'PaymentChannelCreate: SettleDelay must be a number',\n )\n }\n\n if (tx.PublicKey === undefined) {\n throw new ValidationError('PaymentChannelCreate: missing PublicKey')\n }\n\n if (typeof tx.PublicKey !== 'string') {\n throw new ValidationError(\n 'PaymentChannelCreate: PublicKey must be a string',\n )\n }\n\n if (tx.CancelAfter !== undefined && typeof tx.CancelAfter !== 'number') {\n throw new ValidationError(\n 'PaymentChannelCreate: CancelAfter must be a number',\n )\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, validateBaseTransaction } from './common'\n\n/**\n * Add additional XRP to an open payment channel, and optionally update the\n * expiration time of the channel. Only the source address of the channel can\n * use this transaction.\n *\n * @category Transaction Models\n */\nexport interface PaymentChannelFund extends BaseTransaction {\n TransactionType: 'PaymentChannelFund'\n /**\n * The unique ID of the channel to fund as a 64-character hexadecimal\n * string.\n */\n Channel: string\n /**\n * Amount of XRP in drops to add to the channel. Must be a positive amount\n * of XRP.\n */\n Amount: string\n /**\n * New Expiration time to set for the channel in seconds since the Ripple\n * Epoch. This must be later than either the current time plus the SettleDelay\n * of the channel, or the existing Expiration of the channel. After the\n * Expiration time, any transaction that would access the channel closes the\n * channel without taking its normal action. Any unspent XRP is returned to\n * the source address when the channel closes. (Expiration is separate from\n * the channel's immutable CancelAfter time.) For more information, see the\n * PayChannel ledger object type.\n */\n Expiration?: number\n}\n\n/**\n * Verify the form and type of an PaymentChannelFund at runtime.\n *\n * @param tx - An PaymentChannelFund Transaction.\n * @throws When the PaymentChannelFund is Malformed.\n */\nexport function validatePaymentChannelFund(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.Channel === undefined) {\n throw new ValidationError('PaymentChannelFund: missing Channel')\n }\n\n if (typeof tx.Channel !== 'string') {\n throw new ValidationError('PaymentChannelFund: Channel must be a string')\n }\n\n if (tx.Amount === undefined) {\n throw new ValidationError('PaymentChannelFund: missing Amount')\n }\n\n if (typeof tx.Amount !== 'string') {\n throw new ValidationError('PaymentChannelFund: Amount must be a string')\n }\n\n if (tx.Expiration !== undefined && typeof tx.Expiration !== 'number') {\n throw new ValidationError('PaymentChannelFund: Expiration must be a number')\n }\n}\n", "import {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\nexport interface PermissionedDomainDelete extends BaseTransaction {\n /* The transaction type (PermissionedDomainDelete). */\n TransactionType: 'PermissionedDomainDelete'\n\n /* The domain to delete. */\n DomainID: string\n}\n\n/**\n * Verify the form and type of a PermissionedDomainDelete transaction.\n *\n * @param tx - The transaction to verify.\n * @throws When the transaction is malformed.\n */\nexport function validatePermissionedDomainDelete(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'DomainID', isString)\n}\n", "import { AuthorizeCredential } from '../common'\n\nimport {\n BaseTransaction,\n isString,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n validateCredentialsList,\n isArray,\n} from './common'\n\nconst MAX_ACCEPTED_CREDENTIALS = 10\n\nexport interface PermissionedDomainSet extends BaseTransaction {\n /* The transaction type (PermissionedDomainSet). */\n TransactionType: 'PermissionedDomainSet'\n\n /* The domain to modify. Must be included if modifying an existing domain. */\n DomainID?: string\n\n /* The credentials that are accepted by the domain. Ownership of one\n of these credentials automatically makes you a member of the domain.\n An empty array means deleting the field. */\n AcceptedCredentials: AuthorizeCredential[]\n}\n\n/**\n * Validate a PermissionedDomainSet transaction.\n *\n * @param tx - The transaction to validate.\n * @throws {ValidationError} When the transaction is invalid.\n */\nexport function validatePermissionedDomainSet(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n validateOptionalField(tx, 'DomainID', isString)\n validateRequiredField(tx, 'AcceptedCredentials', isArray)\n\n validateCredentialsList(\n tx.AcceptedCredentials,\n tx.TransactionType,\n // PermissionedDomainSet uses AuthorizeCredential nested objects only, strings are not allowed\n false,\n // PermissionedDomainSet uses at most 10 accepted credentials. This is different from Credential-feature transactions.\n MAX_ACCEPTED_CREDENTIALS,\n )\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, validateBaseTransaction } from './common'\n\n/**\n * A SetRegularKey transaction assigns, changes, or removes the regular key\n * pair associated with an account.\n *\n * @category Transaction Models\n */\nexport interface SetRegularKey extends BaseTransaction {\n TransactionType: 'SetRegularKey'\n /**\n * A base-58-encoded Address that indicates the regular key pair to be\n * assigned to the account. If omitted, removes any existing regular key pair.\n * from the account. Must not match the master key pair for the address.\n */\n RegularKey?: string\n}\n\n/**\n * Verify the form and type of a SetRegularKey at runtime.\n *\n * @param tx - A SetRegularKey Transaction.\n * @throws When the SetRegularKey is malformed.\n */\nexport function validateSetRegularKey(tx: Record): void {\n validateBaseTransaction(tx)\n\n if (tx.RegularKey !== undefined && typeof tx.RegularKey !== 'string') {\n throw new ValidationError('SetRegularKey: RegularKey must be a string')\n }\n}\n", "import { ValidationError } from '../../errors'\nimport { SignerEntry } from '../common'\n\nimport {\n BaseTransaction,\n isArray,\n isNumber,\n isRecord,\n isString,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * The SignerListSet transaction creates, replaces, or removes a list of\n * signers that can be used to multi-sign a transaction.\n *\n * @category Transaction Models\n */\nexport interface SignerListSet extends BaseTransaction {\n TransactionType: 'SignerListSet'\n /**\n * A target number for the signer weights. A multi-signature from this list\n * is valid only if the sum weights of the signatures provided is greater than\n * or equal to this value. To delete a signer list, use the value 0.\n */\n SignerQuorum: number\n /**\n * Array of SignerEntry objects, indicating the addresses and weights of\n * signers in this list. This signer list must have at least 1 member and no\n * more than 32 members. No address may appear more than once in the list, nor\n * may the Account submitting the transaction appear in the list.\n */\n SignerEntries?: SignerEntry[]\n}\n\nconst MAX_SIGNERS = 32\n\nconst HEX_WALLET_LOCATOR_REGEX = /^[0-9A-Fa-f]{64}$/u\n\n/**\n * Verify the form and type of an SignerListSet at runtime.\n *\n * @param tx - An SignerListSet Transaction.\n * @throws When the SignerListSet is Malformed.\n */\nexport function validateSignerListSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'SignerQuorum', isNumber)\n\n // All other checks are for if SignerQuorum is greater than 0\n if (tx.SignerQuorum === 0) {\n return\n }\n\n validateRequiredField(tx, 'SignerEntries', isArray)\n if (tx.SignerEntries.length === 0) {\n throw new ValidationError(\n 'SignerListSet: need at least 1 member in SignerEntries',\n )\n }\n\n if (tx.SignerEntries.length > MAX_SIGNERS) {\n throw new ValidationError(\n `SignerListSet: maximum of ${MAX_SIGNERS} members allowed in SignerEntries`,\n )\n }\n\n for (const entry of tx.SignerEntries) {\n if (!isRecord(entry) || !isRecord(entry.SignerEntry)) {\n throw new ValidationError(\n 'SignerListSet: SignerEntries must be an array of SignerEntry objects',\n )\n }\n const signerEntry = entry.SignerEntry\n const { WalletLocator } = signerEntry\n if (\n WalletLocator != null &&\n (!isString(WalletLocator) ||\n !HEX_WALLET_LOCATOR_REGEX.test(WalletLocator))\n ) {\n throw new ValidationError(\n `SignerListSet: WalletLocator in SignerEntry must be a 256-bit (32-byte) hexadecimal value`,\n )\n }\n }\n}\n", "import { ValidationError } from '../../errors'\n\nimport { BaseTransaction, validateBaseTransaction } from './common'\n\n/**\n * A TicketCreate transaction sets aside one or more sequence numbers as\n * Tickets.\n *\n * @category Transaction Models\n */\nexport interface TicketCreate extends BaseTransaction {\n TransactionType: 'TicketCreate'\n /**\n * How many Tickets to create. This must be a positive number and cannot\n * cause the account to own more than 250 Tickets after executing this\n * transaction.\n */\n TicketCount: number\n}\n\nconst MAX_TICKETS = 250\n\n/**\n * Verify the form and type of a TicketCreate at runtime.\n *\n * @param tx - A TicketCreate Transaction.\n * @throws When the TicketCreate is malformed.\n */\nexport function validateTicketCreate(tx: Record): void {\n validateBaseTransaction(tx)\n const { TicketCount } = tx\n\n if (TicketCount === undefined) {\n throw new ValidationError('TicketCreate: missing field TicketCount')\n }\n\n if (typeof TicketCount !== 'number') {\n throw new ValidationError('TicketCreate: TicketCount must be a number')\n }\n\n if (\n !Number.isInteger(TicketCount) ||\n TicketCount < 1 ||\n TicketCount > MAX_TICKETS\n ) {\n throw new ValidationError(\n 'TicketCreate: TicketCount must be an integer from 1 to 250',\n )\n }\n}\n", "import { ClawbackAmount } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateRequiredField,\n isString,\n Account,\n isAccount,\n validateOptionalField,\n isClawbackAmount,\n} from './common'\n\n/**\n * The VaultClawback transaction performs a Clawback from the Vault, exchanging the shares of an account.\n *\n * Conceptually, the transaction performs VaultWithdraw on behalf of the Holder, sending the funds to the\n * Issuer account of the asset. In case there are insufficient funds for the entire Amount the transaction\n * will perform a partial Clawback, up to the Vault.AssetsAvailable. The Clawback transaction must respect\n * any future fees or penalties.\n *\n * @category Transaction Models\n */\nexport interface VaultClawback extends BaseTransaction {\n TransactionType: 'VaultClawback'\n\n /**\n * The ID of the vault from which assets are withdrawn.\n */\n VaultID: string\n\n /**\n * The account ID from which to clawback the assets.\n */\n Holder: Account\n\n /**\n * The asset amount to clawback. When Amount is 0 clawback all funds, up to the total shares the Holder owns.\n */\n Amount?: ClawbackAmount\n}\n\n/**\n * Verify the form and type of a {@link VaultClawback} at runtime.\n *\n * @param tx - A {@link VaultClawback} Transaction.\n * @throws When the {@link VaultClawback} is malformed.\n */\nexport function validateVaultClawback(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'VaultID', isString)\n validateRequiredField(tx, 'Holder', isAccount)\n validateOptionalField(tx, 'Amount', isClawbackAmount)\n}\n", "import {\n BaseTransaction,\n validateBaseTransaction,\n validateRequiredField,\n isString,\n} from './common'\n\n/**\n * The VaultDelete transaction deletes an existing vault object.\n *\n * @category Transaction Models\n */\nexport interface VaultDelete extends BaseTransaction {\n TransactionType: 'VaultDelete'\n\n /**\n * The ID of the vault to be deleted.\n */\n VaultID: string\n}\n\n/**\n * Verify the form and type of a {@link VaultDelete} at runtime.\n *\n * @param tx - A {@link VaultDelete} Transaction.\n * @throws When the {@link VaultDelete} is malformed.\n */\nexport function validateVaultDelete(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'VaultID', isString)\n}\n", "import { Amount, MPTAmount } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateRequiredField,\n isString,\n isAmount,\n} from './common'\n\n/**\n * The VaultDeposit transaction adds liqudity in exchange for vault shares.\n *\n * @category Transaction Models\n */\nexport interface VaultDeposit extends BaseTransaction {\n TransactionType: 'VaultDeposit'\n\n /**\n * The ID of the vault to which the assets are deposited.\n */\n VaultID: string\n\n /**\n * Asset amount to deposit.\n */\n // TODO: remove MPTAmount when MPTv2 is released\n Amount: Amount | MPTAmount\n}\n\n/**\n * Verify the form and type of a {@link VaultDeposit} at runtime.\n *\n * @param tx - A {@link VaultDeposit} Transaction.\n * @throws When the {@link VaultDeposit} is malformed.\n */\nexport function validateVaultDeposit(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'VaultID', isString)\n validateRequiredField(tx, 'Amount', isAmount)\n}\n", "import { ValidationError } from '../../errors'\nimport { isHex } from '../utils'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n isString,\n VAULT_DATA_MAX_BYTE_LENGTH,\n XRPLNumber,\n isXRPLNumber,\n} from './common'\n\n/**\n * The VaultSet transaction modifies mutable fields on an existing Vault object.\n *\n * @category Transaction Models\n */\nexport interface VaultSet extends BaseTransaction {\n TransactionType: 'VaultSet'\n\n /**\n * The ID of the Vault to be modified. Must be included when updating the Vault.\n */\n VaultID: string\n\n /**\n * Arbitrary Vault metadata, limited to 256 bytes.\n */\n Data?: string\n\n /**\n * The maximum asset amount that can be held in a vault. The value cannot be lower than the\n * current AssetsTotal unless the value is 0.\n */\n AssetsMaximum?: XRPLNumber\n\n /**\n * The PermissionedDomain object ID associated with the shares of this Vault.\n */\n DomainID?: string\n}\n\n/**\n * Verify the form and type of a {@link VaultSet} at runtime.\n *\n * @param tx - A {@link VaultSet} Transaction.\n * @throws When the {@link VaultSet} is malformed.\n */\nexport function validateVaultSet(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'VaultID', isString)\n validateOptionalField(tx, 'Data', isString)\n validateOptionalField(tx, 'AssetsMaximum', isXRPLNumber)\n validateOptionalField(tx, 'DomainID', isString)\n\n if (tx.Data !== undefined) {\n const dataHex = tx.Data\n if (!isHex(dataHex)) {\n throw new ValidationError('VaultSet: Data must be a valid hex string')\n }\n const dataByteLength = dataHex.length / 2\n if (dataByteLength > VAULT_DATA_MAX_BYTE_LENGTH) {\n throw new ValidationError(\n `VaultSet: Data exceeds ${VAULT_DATA_MAX_BYTE_LENGTH} bytes (actual: ${dataByteLength})`,\n )\n }\n }\n}\n", "import { Amount, MPTAmount } from '../common'\n\nimport {\n BaseTransaction,\n validateBaseTransaction,\n validateRequiredField,\n isString,\n isAmount,\n Account,\n validateOptionalField,\n isAccount,\n} from './common'\n\n/**\n * The VaultWithdraw transaction withdraws assets in exchange for the vault's shares.\n *\n * @category Transaction Models\n */\nexport interface VaultWithdraw extends BaseTransaction {\n TransactionType: 'VaultWithdraw'\n\n /**\n * The ID of the vault from which assets are withdrawn.\n */\n VaultID: string\n\n /**\n * The exact amount of Vault asset to withdraw.\n */\n // TODO: remove MPTAmount when MPTv2 is released\n Amount: Amount | MPTAmount\n\n /**\n * An account to receive the assets. It must be able to receive the asset.\n */\n Destination?: Account\n}\n\n/**\n * Verify the form and type of a {@link VaultWithdraw} at runtime.\n *\n * @param tx - A {@link VaultWithdraw} Transaction.\n * @throws When the {@link VaultWithdraw} is malformed.\n */\nexport function validateVaultWithdraw(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'VaultID', isString)\n validateRequiredField(tx, 'Amount', isAmount)\n validateOptionalField(tx, 'Destination', isAccount)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n BaseTransaction,\n isAmount,\n isXChainBridge,\n validateBaseTransaction,\n validateRequiredField,\n isAccount,\n Account,\n} from './common'\n\n/**\n * The XChainAccountCreateCommit transaction creates a new account on one of the\n * chains a bridge connects, which serves as the bridge entrance for that chain.\n *\n * WARNING: This transaction should only be executed if the witness attestations\n * will be reliably delivered to the destination chain. If the signatures aren't\n * delivered, then account creation will be blocked until attestations are received.\n * This can be used maliciously; to disable this transaction on XRP-XRP bridges,\n * the bridge's MinAccountCreateAmount shouldn't be present.\n *\n * @category Transaction Models\n */\nexport interface XChainAccountCreateCommit extends BaseTransaction {\n TransactionType: 'XChainAccountCreateCommit'\n\n /**\n * The bridge to create accounts for.\n */\n XChainBridge: XChainBridge\n\n /**\n * The amount, in XRP, to be used to reward the witness servers for providing\n * signatures. This must match the amount on the {@link Bridge} ledger object.\n */\n SignatureReward: Amount\n\n /**\n * The destination account on the destination chain.\n */\n Destination: Account\n\n /**\n * The amount, in XRP, to use for account creation. This must be greater than or\n * equal to the MinAccountCreateAmount specified in the {@link Bridge} ledger object.\n */\n Amount: Amount\n}\n\n/**\n * Verify the form and type of an XChainAccountCreateCommit at runtime.\n *\n * @param tx - An XChainAccountCreateCommit Transaction.\n * @throws When the XChainAccountCreateCommit is malformed.\n */\nexport function validateXChainAccountCreateCommit(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(tx, 'SignatureReward', isAmount)\n\n validateRequiredField(tx, 'Destination', isAccount)\n\n validateRequiredField(tx, 'Amount', isAmount)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isNumber,\n isString,\n isXChainBridge,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainAddAccountCreateAttestation transaction provides an attestation\n * from a witness server that a {@link XChainAccountCreateCommit} transaction\n * occurred on the other chain.\n *\n * @category Transaction Models\n */\nexport interface XChainAddAccountCreateAttestation extends BaseTransaction {\n TransactionType: 'XChainAddAccountCreateAttestation'\n\n /**\n * The amount committed by the {@link XChainAccountCreateCommit} transaction\n * on the source chain.\n */\n Amount: Amount\n\n /**\n * The account that should receive this signer's share of the SignatureReward.\n */\n AttestationRewardAccount: Account\n\n /**\n * The account on the door account's signer list that is signing the transaction.\n */\n AttestationSignerAccount: Account\n\n /**\n * The destination account for the funds on the destination chain.\n */\n Destination: Account\n\n /**\n * The account on the source chain that submitted the {@link XChainAccountCreateCommit}\n * transaction that triggered the event associated with the attestation.\n */\n OtherChainSource: Account\n\n /**\n * The public key used to verify the signature.\n */\n PublicKey: string\n\n /**\n * The signature attesting to the event on the other chain.\n */\n Signature: string\n\n /**\n * The signature reward paid in the {@link XChainAccountCreateCommit} transaction.\n */\n SignatureReward: Amount\n\n /**\n * A boolean representing the chain where the event occurred.\n */\n WasLockingChainSend: 0 | 1\n\n /**\n * The counter that represents the order that the claims must be processed in.\n */\n XChainAccountCreateCount: number | string\n\n /**\n * The bridge associated with the attestation.\n */\n XChainBridge: XChainBridge\n}\n\n/**\n * Verify the form and type of an XChainAddAccountCreateAttestation at runtime.\n *\n * @param tx - An XChainAddAccountCreateAttestation Transaction.\n * @throws When the XChainAddAccountCreateAttestation is malformed.\n */\nexport function validateXChainAddAccountCreateAttestation(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Amount', isAmount)\n\n validateRequiredField(tx, 'AttestationRewardAccount', isAccount)\n\n validateRequiredField(tx, 'AttestationSignerAccount', isAccount)\n\n validateRequiredField(tx, 'Destination', isAccount)\n\n validateRequiredField(tx, 'OtherChainSource', isAccount)\n\n validateRequiredField(tx, 'PublicKey', isString)\n\n validateRequiredField(tx, 'Signature', isString)\n\n validateRequiredField(tx, 'SignatureReward', isAmount)\n\n validateRequiredField(\n tx,\n 'WasLockingChainSend',\n (inp: unknown): inp is 0 | 1 => inp === 0 || inp === 1,\n )\n\n validateRequiredField(\n tx,\n 'XChainAccountCreateCount',\n (inp: unknown): inp is number | string => isNumber(inp) || isString(inp),\n )\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isNumber,\n isString,\n isXChainBridge,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainAddClaimAttestation transaction provides proof from a witness server,\n * attesting to an {@link XChainCommit} transaction.\n *\n * @category Transaction Models\n */\nexport interface XChainAddClaimAttestation extends BaseTransaction {\n TransactionType: 'XChainAddClaimAttestation'\n\n /**\n * The amount committed by the {@link XChainCommit} transaction on the source chain.\n */\n Amount: Amount\n\n /**\n * The account that should receive this signer's share of the SignatureReward.\n */\n AttestationRewardAccount: Account\n\n /**\n * The account on the door account's signer list that is signing the transaction.\n */\n AttestationSignerAccount: Account\n\n /**\n * The destination account for the funds on the destination chain (taken from\n * the {@link XChainCommit} transaction).\n */\n Destination?: Account\n\n /**\n * The account on the source chain that submitted the {@link XChainCommit}\n * transaction that triggered the event associated with the attestation.\n */\n OtherChainSource: Account\n\n /**\n * The public key used to verify the attestation signature.\n */\n PublicKey: string\n\n /**\n * The signature attesting to the event on the other chain.\n */\n Signature: string\n\n /**\n * A boolean representing the chain where the event occurred.\n */\n WasLockingChainSend: 0 | 1\n\n /**\n * The bridge to use to transfer funds.\n */\n XChainBridge: XChainBridge\n\n /**\n * The XChainClaimID associated with the transfer, which was included in the\n * {@link XChainCommit} transaction.\n */\n XChainClaimID: number | string\n}\n\n/**\n * Verify the form and type of an XChainAddClaimAttestation at runtime.\n *\n * @param tx - An XChainAddClaimAttestation Transaction.\n * @throws When the XChainAddClaimAttestation is malformed.\n */\nexport function validateXChainAddClaimAttestation(\n tx: Record,\n): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'Amount', isAmount)\n\n validateRequiredField(tx, 'AttestationRewardAccount', isAccount)\n\n validateRequiredField(tx, 'AttestationSignerAccount', isAccount)\n\n validateOptionalField(tx, 'Destination', isAccount)\n\n validateRequiredField(tx, 'OtherChainSource', isAccount)\n\n validateRequiredField(tx, 'PublicKey', isString)\n\n validateRequiredField(tx, 'Signature', isString)\n\n validateRequiredField(\n tx,\n 'WasLockingChainSend',\n (inp: unknown): inp is 0 | 1 => inp === 0 || inp === 1,\n )\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(\n tx,\n 'XChainClaimID',\n (inp: unknown): inp is number | string => isNumber(inp) || isString(inp),\n )\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isNumber,\n isString,\n isXChainBridge,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainClaim transaction completes a cross-chain transfer of value. It\n * allows a user to claim the value on the destination chain - the equivalent\n * of the value locked on the source chain.\n *\n * @category Transaction Models\n */\nexport interface XChainClaim extends BaseTransaction {\n TransactionType: 'XChainClaim'\n\n /**\n * The bridge to use for the transfer.\n */\n XChainBridge: XChainBridge\n\n /**\n * The unique integer ID for the cross-chain transfer that was referenced in the\n * corresponding {@link XChainCommit} transaction.\n */\n XChainClaimID: number | string\n\n /**\n * The destination account on the destination chain. It must exist or the\n * transaction will fail. However, if the transaction fails in this case, the\n * sequence number and collected signatures won't be destroyed, and the\n * transaction can be rerun with a different destination.\n */\n Destination: Account\n\n /**\n * An integer destination tag.\n */\n DestinationTag?: number\n\n /**\n * The amount to claim on the destination chain. This must match the amount\n * attested to on the attestations associated with this XChainClaimID.\n */\n Amount: Amount\n}\n\n/**\n * Verify the form and type of an XChainClaim at runtime.\n *\n * @param tx - An XChainClaim Transaction.\n * @throws When the XChainClaim is malformed.\n */\nexport function validateXChainClaim(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(\n tx,\n 'XChainClaimID',\n (inp: unknown): inp is number | string => isNumber(inp) || isString(inp),\n )\n\n validateRequiredField(tx, 'Destination', isAccount)\n\n validateOptionalField(tx, 'DestinationTag', isNumber)\n\n validateRequiredField(tx, 'Amount', isAmount)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isNumber,\n isString,\n isXChainBridge,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainCommit is the second step in a cross-chain transfer. It puts assets\n * into trust on the locking chain so that they can be wrapped on the issuing\n * chain, or burns wrapped assets on the issuing chain so that they can be returned\n * on the locking chain.\n *\n * @category Transaction Models\n */\nexport interface XChainCommit extends BaseTransaction {\n TransactionType: 'XChainCommit'\n\n /**\n * The bridge to use to transfer funds.\n */\n XChainBridge: XChainBridge\n\n /**\n * The unique integer ID for a cross-chain transfer. This must be acquired on\n * the destination chain (via a {@link XChainCreateClaimID} transaction) and\n * checked from a validated ledger before submitting this transaction. If an\n * incorrect sequence number is specified, the funds will be lost.\n */\n XChainClaimID: number | string\n\n /**\n * The destination account on the destination chain. If this is not specified,\n * the account that submitted the {@link XChainCreateClaimID} transaction on the\n * destination chain will need to submit a {@link XChainClaim} transaction to\n * claim the funds.\n */\n OtherChainDestination?: Account\n\n /**\n * The asset to commit, and the quantity. This must match the door account's\n * LockingChainIssue (if on the locking chain) or the door account's\n * IssuingChainIssue (if on the issuing chain).\n */\n Amount: Amount\n}\n\n/**\n * Verify the form and type of an XChainCommit at runtime.\n *\n * @param tx - An XChainCommit Transaction.\n * @throws When the XChainCommit is malformed.\n */\nexport function validateXChainCommit(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(\n tx,\n 'XChainClaimID',\n (inp: unknown): inp is number | string => isNumber(inp) || isString(inp),\n )\n\n validateOptionalField(tx, 'OtherChainDestination', isAccount)\n\n validateRequiredField(tx, 'Amount', isAmount)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n BaseTransaction,\n isAmount,\n isXChainBridge,\n validateBaseTransaction,\n validateOptionalField,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainCreateBridge transaction creates a new {@link Bridge} ledger object\n * and defines a new cross-chain bridge entrance on the chain that the transaction\n * is submitted on. It includes information about door accounts and assets for the\n * bridge.\n *\n * @category Transaction Models\n */\nexport interface XChainCreateBridge extends BaseTransaction {\n TransactionType: 'XChainCreateBridge'\n\n /**\n * The bridge (door accounts and assets) to create.\n */\n XChainBridge: XChainBridge\n\n /**\n * The total amount to pay the witness servers for their signatures. This amount\n * will be split among the signers.\n */\n SignatureReward: Amount\n\n /**\n * The minimum amount, in XRP, required for a {@link XChainAccountCreateCommit}\n * transaction. If this isn't present, the {@link XChainAccountCreateCommit}\n * transaction will fail. This field can only be present on XRP-XRP bridges.\n */\n MinAccountCreateAmount?: Amount\n}\n\n/**\n * Verify the form and type of an XChainCreateBridge at runtime.\n *\n * @param tx - An XChainCreateBridge Transaction.\n * @throws When the XChainCreateBridge is malformed.\n */\nexport function validateXChainCreateBridge(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(tx, 'SignatureReward', isAmount)\n\n validateOptionalField(tx, 'MinAccountCreateAmount', isAmount)\n}\n", "import { Amount, XChainBridge } from '../common'\n\nimport {\n Account,\n BaseTransaction,\n isAccount,\n isAmount,\n isXChainBridge,\n validateBaseTransaction,\n validateRequiredField,\n} from './common'\n\n/**\n * The XChainCreateClaimID transaction creates a new cross-chain claim ID that is\n * used for a cross-chain transfer. A cross-chain claim ID represents one\n * cross-chain transfer of value.\n *\n * @category Transaction Models\n */\nexport interface XChainCreateClaimID extends BaseTransaction {\n TransactionType: 'XChainCreateClaimID'\n\n /**\n * The bridge to create the claim ID for.\n */\n XChainBridge: XChainBridge\n\n /**\n * The amount, in XRP, to reward the witness servers for providing signatures.\n * This must match the amount on the {@link Bridge} ledger object.\n */\n SignatureReward: Amount\n\n /**\n * The account that must send the {@link XChainCommit} transaction on the source chain.\n */\n OtherChainSource: Account\n}\n\n/**\n * Verify the form and type of an XChainCreateClaimID at runtime.\n *\n * @param tx - An XChainCreateClaimID Transaction.\n * @throws When the XChainCreateClaimID is malformed.\n */\nexport function validateXChainCreateClaimID(tx: Record): void {\n validateBaseTransaction(tx)\n\n validateRequiredField(tx, 'XChainBridge', isXChainBridge)\n\n validateRequiredField(tx, 'SignatureReward', isAmount)\n\n validateRequiredField(tx, 'OtherChainSource', isAccount)\n}\n", "/* eslint-disable max-lines -- need to work with a lot of transactions in a switch statement */\n/* eslint-disable max-lines-per-function -- need to work with a lot of Tx verifications */\n\nimport { ValidationError } from '../../errors'\nimport { convertTxFlagsToNumber } from '../utils/flags'\n\nimport { AccountDelete, validateAccountDelete } from './accountDelete'\nimport { AccountSet, validateAccountSet } from './accountSet'\nimport { AMMBid, validateAMMBid } from './AMMBid'\nimport { AMMClawback, validateAMMClawback } from './AMMClawback'\nimport { AMMCreate, validateAMMCreate } from './AMMCreate'\nimport { AMMDelete, validateAMMDelete } from './AMMDelete'\nimport { AMMDeposit, validateAMMDeposit } from './AMMDeposit'\nimport { AMMVote, validateAMMVote } from './AMMVote'\nimport { AMMWithdraw, validateAMMWithdraw } from './AMMWithdraw'\nimport { Batch, validateBatch } from './batch'\nimport { CheckCancel, validateCheckCancel } from './checkCancel'\nimport { CheckCash, validateCheckCash } from './checkCash'\nimport { CheckCreate, validateCheckCreate } from './checkCreate'\nimport { Clawback, validateClawback } from './clawback'\nimport {\n BaseTransaction,\n isIssuedCurrencyAmount,\n validateBaseTransaction,\n} from './common'\nimport { CredentialAccept, validateCredentialAccept } from './CredentialAccept'\nimport { CredentialCreate, validateCredentialCreate } from './CredentialCreate'\nimport { CredentialDelete, validateCredentialDelete } from './CredentialDelete'\nimport { DelegateSet, validateDelegateSet } from './delegateSet'\nimport { DepositPreauth, validateDepositPreauth } from './depositPreauth'\nimport { DIDDelete, validateDIDDelete } from './DIDDelete'\nimport { DIDSet, validateDIDSet } from './DIDSet'\nimport { EnableAmendment } from './enableAmendment'\nimport { EscrowCancel, validateEscrowCancel } from './escrowCancel'\nimport { EscrowCreate, validateEscrowCreate } from './escrowCreate'\nimport { EscrowFinish, validateEscrowFinish } from './escrowFinish'\nimport { TransactionMetadata } from './metadata'\nimport { MPTokenAuthorize, validateMPTokenAuthorize } from './MPTokenAuthorize'\nimport {\n MPTokenIssuanceCreate,\n validateMPTokenIssuanceCreate,\n} from './MPTokenIssuanceCreate'\nimport {\n MPTokenIssuanceDestroy,\n validateMPTokenIssuanceDestroy,\n} from './MPTokenIssuanceDestroy'\nimport {\n MPTokenIssuanceSet,\n validateMPTokenIssuanceSet,\n} from './MPTokenIssuanceSet'\nimport {\n NFTokenAcceptOffer,\n validateNFTokenAcceptOffer,\n} from './NFTokenAcceptOffer'\nimport { NFTokenBurn, validateNFTokenBurn } from './NFTokenBurn'\nimport {\n NFTokenCancelOffer,\n validateNFTokenCancelOffer,\n} from './NFTokenCancelOffer'\nimport {\n NFTokenCreateOffer,\n validateNFTokenCreateOffer,\n} from './NFTokenCreateOffer'\nimport { NFTokenMint, validateNFTokenMint } from './NFTokenMint'\nimport { NFTokenModify, validateNFTokenModify } from './NFTokenModify'\nimport { OfferCancel, validateOfferCancel } from './offerCancel'\nimport { OfferCreate, validateOfferCreate } from './offerCreate'\nimport { OracleDelete, validateOracleDelete } from './oracleDelete'\nimport { OracleSet, validateOracleSet } from './oracleSet'\nimport { Payment, validatePayment } from './payment'\nimport {\n PaymentChannelClaim,\n validatePaymentChannelClaim,\n} from './paymentChannelClaim'\nimport {\n PaymentChannelCreate,\n validatePaymentChannelCreate,\n} from './paymentChannelCreate'\nimport {\n PaymentChannelFund,\n validatePaymentChannelFund,\n} from './paymentChannelFund'\nimport {\n PermissionedDomainDelete,\n validatePermissionedDomainDelete,\n} from './permissionedDomainDelete'\nimport {\n PermissionedDomainSet,\n validatePermissionedDomainSet,\n} from './permissionedDomainSet'\nimport { SetFee } from './setFee'\nimport { SetRegularKey, validateSetRegularKey } from './setRegularKey'\nimport { SignerListSet, validateSignerListSet } from './signerListSet'\nimport { TicketCreate, validateTicketCreate } from './ticketCreate'\nimport { TrustSet, validateTrustSet } from './trustSet'\nimport { UNLModify } from './UNLModify'\nimport { VaultClawback, validateVaultClawback } from './vaultClawback'\nimport { VaultCreate, validateVaultCreate } from './vaultCreate'\nimport { VaultDelete, validateVaultDelete } from './vaultDelete'\nimport { VaultDeposit, validateVaultDeposit } from './vaultDeposit'\nimport { VaultSet, validateVaultSet } from './vaultSet'\nimport { VaultWithdraw, validateVaultWithdraw } from './vaultWithdraw'\nimport {\n XChainAccountCreateCommit,\n validateXChainAccountCreateCommit,\n} from './XChainAccountCreateCommit'\nimport {\n XChainAddAccountCreateAttestation,\n validateXChainAddAccountCreateAttestation,\n} from './XChainAddAccountCreateAttestation'\nimport {\n XChainAddClaimAttestation,\n validateXChainAddClaimAttestation,\n} from './XChainAddClaimAttestation'\nimport { XChainClaim, validateXChainClaim } from './XChainClaim'\nimport { XChainCommit, validateXChainCommit } from './XChainCommit'\nimport {\n XChainCreateBridge,\n validateXChainCreateBridge,\n} from './XChainCreateBridge'\nimport {\n XChainCreateClaimID,\n validateXChainCreateClaimID,\n} from './XChainCreateClaimID'\nimport {\n XChainModifyBridge,\n validateXChainModifyBridge,\n} from './XChainModifyBridge'\n\n/**\n * Transactions that can be submitted by clients\n *\n * @category Transaction Models\n */\nexport type SubmittableTransaction =\n | AMMBid\n | AMMClawback\n | AMMCreate\n | AMMDelete\n | AMMDeposit\n | AMMVote\n | AMMWithdraw\n | AccountDelete\n | AccountSet\n | Batch\n | CheckCancel\n | CheckCash\n | CheckCreate\n | Clawback\n | CredentialAccept\n | CredentialCreate\n | CredentialDelete\n | DIDDelete\n | DIDSet\n | DelegateSet\n | DepositPreauth\n | EscrowCancel\n | EscrowCreate\n | EscrowFinish\n | MPTokenAuthorize\n | MPTokenIssuanceCreate\n | MPTokenIssuanceDestroy\n | MPTokenIssuanceSet\n | NFTokenAcceptOffer\n | NFTokenBurn\n | NFTokenCancelOffer\n | NFTokenCreateOffer\n | NFTokenMint\n | NFTokenModify\n | OfferCancel\n | OfferCreate\n | OracleDelete\n | OracleSet\n | Payment\n | PaymentChannelClaim\n | PaymentChannelCreate\n | PaymentChannelFund\n | PermissionedDomainSet\n | PermissionedDomainDelete\n | SetRegularKey\n | SignerListSet\n | TicketCreate\n | TrustSet\n | VaultClawback\n | VaultCreate\n | VaultDelete\n | VaultDeposit\n | VaultSet\n | VaultWithdraw\n | XChainAccountCreateCommit\n | XChainAddAccountCreateAttestation\n | XChainAddClaimAttestation\n | XChainClaim\n | XChainCommit\n | XChainCreateBridge\n | XChainCreateClaimID\n | XChainModifyBridge\n\n/**\n * Transactions that can only be created by validators.\n *\n * @category Transaction Models\n */\nexport type PseudoTransaction = EnableAmendment | SetFee | UNLModify\n\n/**\n * All transactions that can live on the XRPL\n *\n * @category Transaction Models\n */\nexport type Transaction = SubmittableTransaction | PseudoTransaction\n\n/**\n * @category Transaction Models\n */\nexport interface TransactionAndMetadata<\n T extends BaseTransaction = Transaction,\n> {\n transaction: T\n metadata: TransactionMetadata\n}\n\n/**\n * Verifies various Transaction Types.\n * Encode/decode and individual type validation.\n *\n * @param transaction - A Transaction.\n * @throws ValidationError When the Transaction is malformed.\n * @category Utilities\n */\nexport function validate(transaction: Record): void {\n const tx = { ...transaction }\n\n // should already be done in the tx-specific validation, but doesn't hurt to check again\n validateBaseTransaction(tx)\n\n Object.keys(tx).forEach((key) => {\n const standard_currency_code_len = 3\n const value = tx[key]\n if (value && isIssuedCurrencyAmount(value)) {\n const txCurrency = value.currency\n\n if (\n txCurrency.length === standard_currency_code_len &&\n txCurrency.toUpperCase() === 'XRP'\n ) {\n throw new ValidationError(\n `Cannot have an issued currency with a similar standard code to XRP (received '${txCurrency}'). XRP is not an issued currency.`,\n )\n }\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- okay here\n tx.Flags = convertTxFlagsToNumber(tx as unknown as Transaction)\n switch (tx.TransactionType) {\n case 'AMMBid':\n validateAMMBid(tx)\n break\n\n case 'AMMClawback':\n validateAMMClawback(tx)\n break\n\n case 'AMMCreate':\n validateAMMCreate(tx)\n break\n\n case 'AMMDelete':\n validateAMMDelete(tx)\n break\n\n case 'AMMDeposit':\n validateAMMDeposit(tx)\n break\n\n case 'AMMVote':\n validateAMMVote(tx)\n break\n\n case 'AMMWithdraw':\n validateAMMWithdraw(tx)\n break\n\n case 'AccountDelete':\n validateAccountDelete(tx)\n break\n\n case 'AccountSet':\n validateAccountSet(tx)\n break\n\n case 'Batch':\n validateBatch(tx)\n // This is done here to avoid issues with dependency cycles\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- okay here\n // @ts-expect-error -- already checked\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- already checked above\n tx.RawTransactions.forEach((innerTx: Record) => {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- already checked above\n validate(innerTx.RawTransaction as Record)\n })\n break\n\n case 'CheckCancel':\n validateCheckCancel(tx)\n break\n\n case 'CheckCash':\n validateCheckCash(tx)\n break\n\n case 'CheckCreate':\n validateCheckCreate(tx)\n break\n\n case 'Clawback':\n validateClawback(tx)\n break\n\n case 'CredentialAccept':\n validateCredentialAccept(tx)\n break\n\n case 'CredentialCreate':\n validateCredentialCreate(tx)\n break\n\n case 'CredentialDelete':\n validateCredentialDelete(tx)\n break\n\n case 'DIDDelete':\n validateDIDDelete(tx)\n break\n\n case 'DIDSet':\n validateDIDSet(tx)\n break\n\n case 'DelegateSet':\n validateDelegateSet(tx)\n break\n\n case 'DepositPreauth':\n validateDepositPreauth(tx)\n break\n\n case 'EscrowCancel':\n validateEscrowCancel(tx)\n break\n\n case 'EscrowCreate':\n validateEscrowCreate(tx)\n break\n\n case 'EscrowFinish':\n validateEscrowFinish(tx)\n break\n\n case 'MPTokenAuthorize':\n validateMPTokenAuthorize(tx)\n break\n\n case 'MPTokenIssuanceCreate':\n validateMPTokenIssuanceCreate(tx)\n break\n\n case 'MPTokenIssuanceDestroy':\n validateMPTokenIssuanceDestroy(tx)\n break\n\n case 'MPTokenIssuanceSet':\n validateMPTokenIssuanceSet(tx)\n break\n\n case 'NFTokenAcceptOffer':\n validateNFTokenAcceptOffer(tx)\n break\n\n case 'NFTokenBurn':\n validateNFTokenBurn(tx)\n break\n\n case 'NFTokenCancelOffer':\n validateNFTokenCancelOffer(tx)\n break\n\n case 'NFTokenCreateOffer':\n validateNFTokenCreateOffer(tx)\n break\n\n case 'NFTokenMint':\n validateNFTokenMint(tx)\n break\n\n case 'NFTokenModify':\n validateNFTokenModify(tx)\n break\n\n case 'OfferCancel':\n validateOfferCancel(tx)\n break\n\n case 'OfferCreate':\n validateOfferCreate(tx)\n break\n\n case 'OracleDelete':\n validateOracleDelete(tx)\n break\n\n case 'OracleSet':\n validateOracleSet(tx)\n break\n\n case 'Payment':\n validatePayment(tx)\n break\n\n case 'PaymentChannelClaim':\n validatePaymentChannelClaim(tx)\n break\n\n case 'PaymentChannelCreate':\n validatePaymentChannelCreate(tx)\n break\n\n case 'PaymentChannelFund':\n validatePaymentChannelFund(tx)\n break\n\n case 'PermissionedDomainSet':\n validatePermissionedDomainSet(tx)\n break\n\n case 'PermissionedDomainDelete':\n validatePermissionedDomainDelete(tx)\n break\n\n case 'SetRegularKey':\n validateSetRegularKey(tx)\n break\n\n case 'SignerListSet':\n validateSignerListSet(tx)\n break\n\n case 'TicketCreate':\n validateTicketCreate(tx)\n break\n\n case 'TrustSet':\n validateTrustSet(tx)\n break\n\n case 'VaultClawback':\n validateVaultClawback(tx)\n break\n\n case 'VaultCreate':\n validateVaultCreate(tx)\n break\n\n case 'VaultDelete':\n validateVaultDelete(tx)\n break\n\n case 'VaultDeposit':\n validateVaultDeposit(tx)\n break\n\n case 'VaultSet':\n validateVaultSet(tx)\n break\n\n case 'VaultWithdraw':\n validateVaultWithdraw(tx)\n break\n\n case 'XChainAccountCreateCommit':\n validateXChainAccountCreateCommit(tx)\n break\n\n case 'XChainAddAccountCreateAttestation':\n validateXChainAddAccountCreateAttestation(tx)\n break\n\n case 'XChainAddClaimAttestation':\n validateXChainAddClaimAttestation(tx)\n break\n\n case 'XChainClaim':\n validateXChainClaim(tx)\n break\n\n case 'XChainCommit':\n validateXChainCommit(tx)\n break\n\n case 'XChainCreateBridge':\n validateXChainCreateBridge(tx)\n break\n\n case 'XChainCreateClaimID':\n validateXChainCreateClaimID(tx)\n break\n\n case 'XChainModifyBridge':\n validateXChainModifyBridge(tx)\n break\n\n default:\n throw new ValidationError(\n `Invalid field TransactionType: ${tx.TransactionType}`,\n )\n }\n}\n", "import { BaseTransaction } from './common'\n\n/**\n * Transaction Flags for an EnableAmendment Transaction.\n *\n * @category Transaction Flags\n */\nexport enum EnableAmendmentFlags {\n /** Support for this amendment increased to at least 80% of trusted validators starting with this ledger version. */\n tfGotMajority = 0x00010000,\n /** Support for this amendment decreased to less than 80% of trusted validators starting with this ledger version. */\n tfLostMajority = 0x00020000,\n}\n\n/**\n * Mark a change in the status of a proposed amendment when it gains majority, looses majority, or is enabled.\n *\n * @category Pseudo Transaction Models\n */\nexport interface EnableAmendment extends BaseTransaction {\n TransactionType: 'EnableAmendment'\n /** A unique identifier for the amendment. */\n Amendment: string\n /** The ledger index where this pseudo-transaction appears. */\n LedgerSequence: number\n}\n", "export {\n BaseTransaction,\n GlobalFlags,\n GlobalFlagsInterface,\n isMPTAmount,\n} from './common'\nexport {\n validate,\n PseudoTransaction,\n SubmittableTransaction,\n TransactionAndMetadata,\n Transaction,\n} from './transaction'\nexport * from './metadata'\nexport {\n AccountSetAsfFlags,\n AccountSetTfFlags,\n AccountSetFlagsInterface,\n AccountSet,\n} from './accountSet'\nexport { AccountDelete } from './accountDelete'\nexport { AMMBid } from './AMMBid'\nexport {\n AMMClawbackFlags,\n AMMClawbackFlagsInterface,\n AMMClawback,\n} from './AMMClawback'\nexport { AMMCreate } from './AMMCreate'\nexport { AMMDelete } from './AMMDelete'\nexport {\n AMMDepositFlags,\n AMMDepositFlagsInterface,\n AMMDeposit,\n} from './AMMDeposit'\nexport { AMMVote } from './AMMVote'\nexport {\n AMMWithdrawFlags,\n AMMWithdrawFlagsInterface,\n AMMWithdraw,\n} from './AMMWithdraw'\nexport { Batch, BatchFlags, BatchFlagsInterface, BatchSigner } from './batch'\nexport { CheckCancel } from './checkCancel'\nexport { CheckCash } from './checkCash'\nexport { CheckCreate } from './checkCreate'\nexport { Clawback } from './clawback'\nexport { CredentialAccept } from './CredentialAccept'\nexport { CredentialCreate } from './CredentialCreate'\nexport { CredentialDelete } from './CredentialDelete'\nexport { DIDDelete } from './DIDDelete'\nexport { DIDSet } from './DIDSet'\nexport { DelegateSet, Permission } from './delegateSet'\nexport { DepositPreauth } from './depositPreauth'\nexport { EscrowCancel } from './escrowCancel'\nexport { EscrowCreate } from './escrowCreate'\nexport { EscrowFinish } from './escrowFinish'\nexport { EnableAmendment, EnableAmendmentFlags } from './enableAmendment'\nexport {\n MPTokenAuthorize,\n MPTokenAuthorizeFlags,\n MPTokenAuthorizeFlagsInterface,\n} from './MPTokenAuthorize'\nexport {\n MPTokenIssuanceCreate,\n MPTokenIssuanceCreateFlags,\n MPTokenIssuanceCreateFlagsInterface,\n} from './MPTokenIssuanceCreate'\nexport { MPTokenIssuanceDestroy } from './MPTokenIssuanceDestroy'\nexport {\n MPTokenIssuanceSet,\n MPTokenIssuanceSetFlags,\n MPTokenIssuanceSetFlagsInterface,\n} from './MPTokenIssuanceSet'\nexport { NFTokenAcceptOffer } from './NFTokenAcceptOffer'\nexport { NFTokenBurn } from './NFTokenBurn'\nexport { NFTokenCancelOffer } from './NFTokenCancelOffer'\nexport {\n NFTokenCreateOffer,\n NFTokenCreateOfferFlags,\n NFTokenCreateOfferFlagsInterface,\n} from './NFTokenCreateOffer'\nexport {\n NFTokenMint,\n NFTokenMintFlags,\n NFTokenMintFlagsInterface,\n} from './NFTokenMint'\nexport { NFTokenModify, validateNFTokenModify } from './NFTokenModify'\nexport { OfferCancel } from './offerCancel'\nexport {\n OfferCreateFlags,\n OfferCreateFlagsInterface,\n OfferCreate,\n} from './offerCreate'\nexport { OracleDelete } from './oracleDelete'\nexport { OracleSet } from './oracleSet'\nexport { PaymentFlags, PaymentFlagsInterface, Payment } from './payment'\nexport {\n PaymentChannelClaimFlags,\n PaymentChannelClaimFlagsInterface,\n PaymentChannelClaim,\n} from './paymentChannelClaim'\nexport { PaymentChannelCreate } from './paymentChannelCreate'\nexport { PaymentChannelFund } from './paymentChannelFund'\nexport { PermissionedDomainSet } from './permissionedDomainSet'\nexport { PermissionedDomainDelete } from './permissionedDomainDelete'\nexport { SetFee, SetFeePreAmendment, SetFeePostAmendment } from './setFee'\nexport { SetRegularKey } from './setRegularKey'\nexport { SignerListSet } from './signerListSet'\nexport { TicketCreate } from './ticketCreate'\nexport { TrustSetFlagsInterface, TrustSetFlags, TrustSet } from './trustSet'\nexport { UNLModify } from './UNLModify'\nexport { VaultClawback } from './vaultClawback'\nexport {\n VaultCreate,\n VaultCreateFlags,\n VaultCreateFlagsInterface,\n VaultWithdrawalPolicy,\n} from './vaultCreate'\nexport { VaultDelete } from './vaultDelete'\nexport { VaultDeposit } from './vaultDeposit'\nexport { VaultSet } from './vaultSet'\nexport { VaultWithdraw } from './vaultWithdraw'\nexport { XChainAddAccountCreateAttestation } from './XChainAddAccountCreateAttestation'\nexport { XChainAddClaimAttestation } from './XChainAddClaimAttestation'\nexport { XChainClaim } from './XChainClaim'\nexport { XChainCommit } from './XChainCommit'\nexport { XChainCreateBridge } from './XChainCreateBridge'\nexport { XChainCreateClaimID } from './XChainCreateClaimID'\nexport { XChainAccountCreateCommit } from './XChainAccountCreateCommit'\nexport {\n XChainModifyBridge,\n XChainModifyBridgeFlags,\n XChainModifyBridgeFlagsInterface,\n} from './XChainModifyBridge'\n", "[\"A\", \"ABE\", \"ACE\", \"ACT\", \"AD\", \"ADA\", \"ADD\",\n \"AGO\", \"AID\", \"AIM\", \"AIR\", \"ALL\", \"ALP\", \"AM\", \"AMY\", \"AN\", \"ANA\",\n \"AND\", \"ANN\", \"ANT\", \"ANY\", \"APE\", \"APS\", \"APT\", \"ARC\", \"ARE\", \"ARK\",\n \"ARM\", \"ART\", \"AS\", \"ASH\", \"ASK\", \"AT\", \"ATE\", \"AUG\", \"AUK\", \"AVE\",\n \"AWE\", \"AWK\", \"AWL\", \"AWN\", \"AX\", \"AYE\", \"BAD\", \"BAG\", \"BAH\", \"BAM\",\n \"BAN\", \"BAR\", \"BAT\", \"BAY\", \"BE\", \"BED\", \"BEE\", \"BEG\", \"BEN\", \"BET\",\n \"BEY\", \"BIB\", \"BID\", \"BIG\", \"BIN\", \"BIT\", \"BOB\", \"BOG\", \"BON\", \"BOO\",\n \"BOP\", \"BOW\", \"BOY\", \"BUB\", \"BUD\", \"BUG\", \"BUM\", \"BUN\", \"BUS\", \"BUT\",\n \"BUY\", \"BY\", \"BYE\", \"CAB\", \"CAL\", \"CAM\", \"CAN\", \"CAP\", \"CAR\", \"CAT\",\n \"CAW\", \"COD\", \"COG\", \"COL\", \"CON\", \"COO\", \"COP\", \"COT\", \"COW\", \"COY\",\n \"CRY\", \"CUB\", \"CUE\", \"CUP\", \"CUR\", \"CUT\", \"DAB\", \"DAD\", \"DAM\", \"DAN\",\n \"DAR\", \"DAY\", \"DEE\", \"DEL\", \"DEN\", \"DES\", \"DEW\", \"DID\", \"DIE\", \"DIG\",\n \"DIN\", \"DIP\", \"DO\", \"DOE\", \"DOG\", \"DON\", \"DOT\", \"DOW\", \"DRY\", \"DUB\",\n \"DUD\", \"DUE\", \"DUG\", \"DUN\", \"EAR\", \"EAT\", \"ED\", \"EEL\", \"EGG\", \"EGO\",\n \"ELI\", \"ELK\", \"ELM\", \"ELY\", \"EM\", \"END\", \"EST\", \"ETC\", \"EVA\", \"EVE\",\n \"EWE\", \"EYE\", \"FAD\", \"FAN\", \"FAR\", \"FAT\", \"FAY\", \"FED\", \"FEE\", \"FEW\",\n \"FIB\", \"FIG\", \"FIN\", \"FIR\", \"FIT\", \"FLO\", \"FLY\", \"FOE\", \"FOG\", \"FOR\",\n \"FRY\", \"FUM\", \"FUN\", \"FUR\", \"GAB\", \"GAD\", \"GAG\", \"GAL\", \"GAM\", \"GAP\",\n \"GAS\", \"GAY\", \"GEE\", \"GEL\", \"GEM\", \"GET\", \"GIG\", \"GIL\", \"GIN\", \"GO\",\n \"GOT\", \"GUM\", \"GUN\", \"GUS\", \"GUT\", \"GUY\", \"GYM\", \"GYP\", \"HA\", \"HAD\",\n \"HAL\", \"HAM\", \"HAN\", \"HAP\", \"HAS\", \"HAT\", \"HAW\", \"HAY\", \"HE\", \"HEM\",\n \"HEN\", \"HER\", \"HEW\", \"HEY\", \"HI\", \"HID\", \"HIM\", \"HIP\", \"HIS\", \"HIT\",\n \"HO\", \"HOB\", \"HOC\", \"HOE\", \"HOG\", \"HOP\", \"HOT\", \"HOW\", \"HUB\", \"HUE\",\n \"HUG\", \"HUH\", \"HUM\", \"HUT\", \"I\", \"ICY\", \"IDA\", \"IF\", \"IKE\", \"ILL\",\n \"INK\", \"INN\", \"IO\", \"ION\", \"IQ\", \"IRA\", \"IRE\", \"IRK\", \"IS\", \"IT\",\n \"ITS\", \"IVY\", \"JAB\", \"JAG\", \"JAM\", \"JAN\", \"JAR\", \"JAW\", \"JAY\", \"JET\",\n \"JIG\", \"JIM\", \"JO\", \"JOB\", \"JOE\", \"JOG\", \"JOT\", \"JOY\", \"JUG\", \"JUT\",\n \"KAY\", \"KEG\", \"KEN\", \"KEY\", \"KID\", \"KIM\", \"KIN\", \"KIT\", \"LA\", \"LAB\",\n \"LAC\", \"LAD\", \"LAG\", \"LAM\", \"LAP\", \"LAW\", \"LAY\", \"LEA\", \"LED\", \"LEE\",\n \"LEG\", \"LEN\", \"LEO\", \"LET\", \"LEW\", \"LID\", \"LIE\", \"LIN\", \"LIP\", \"LIT\",\n \"LO\", \"LOB\", \"LOG\", \"LOP\", \"LOS\", \"LOT\", \"LOU\", \"LOW\", \"LOY\", \"LUG\",\n \"LYE\", \"MA\", \"MAC\", \"MAD\", \"MAE\", \"MAN\", \"MAO\", \"MAP\", \"MAT\", \"MAW\",\n \"MAY\", \"ME\", \"MEG\", \"MEL\", \"MEN\", \"MET\", \"MEW\", \"MID\", \"MIN\", \"MIT\",\n \"MOB\", \"MOD\", \"MOE\", \"MOO\", \"MOP\", \"MOS\", \"MOT\", \"MOW\", \"MUD\", \"MUG\",\n \"MUM\", \"MY\", \"NAB\", \"NAG\", \"NAN\", \"NAP\", \"NAT\", \"NAY\", \"NE\", \"NED\",\n \"NEE\", \"NET\", \"NEW\", \"NIB\", \"NIL\", \"NIP\", \"NIT\", \"NO\", \"NOB\", \"NOD\",\n \"NON\", \"NOR\", \"NOT\", \"NOV\", \"NOW\", \"NU\", \"NUN\", \"NUT\", \"O\", \"OAF\",\n \"OAK\", \"OAR\", \"OAT\", \"ODD\", \"ODE\", \"OF\", \"OFF\", \"OFT\", \"OH\", \"OIL\",\n \"OK\", \"OLD\", \"ON\", \"ONE\", \"OR\", \"ORB\", \"ORE\", \"ORR\", \"OS\", \"OTT\",\n \"OUR\", \"OUT\", \"OVA\", \"OW\", \"OWE\", \"OWL\", \"OWN\", \"OX\", \"PA\", \"PAD\",\n \"PAL\", \"PAM\", \"PAN\", \"PAP\", \"PAR\", \"PAT\", \"PAW\", \"PAY\", \"PEA\", \"PEG\",\n \"PEN\", \"PEP\", \"PER\", \"PET\", \"PEW\", \"PHI\", \"PI\", \"PIE\", \"PIN\", \"PIT\",\n \"PLY\", \"PO\", \"POD\", \"POE\", \"POP\", \"POT\", \"POW\", \"PRO\", \"PRY\", \"PUB\",\n \"PUG\", \"PUN\", \"PUP\", \"PUT\", \"QUO\", \"RAG\", \"RAM\", \"RAN\", \"RAP\", \"RAT\",\n \"RAW\", \"RAY\", \"REB\", \"RED\", \"REP\", \"RET\", \"RIB\", \"RID\", \"RIG\", \"RIM\",\n \"RIO\", \"RIP\", \"ROB\", \"ROD\", \"ROE\", \"RON\", \"ROT\", \"ROW\", \"ROY\", \"RUB\",\n \"RUE\", \"RUG\", \"RUM\", \"RUN\", \"RYE\", \"SAC\", \"SAD\", \"SAG\", \"SAL\", \"SAM\",\n \"SAN\", \"SAP\", \"SAT\", \"SAW\", \"SAY\", \"SEA\", \"SEC\", \"SEE\", \"SEN\", \"SET\",\n \"SEW\", \"SHE\", \"SHY\", \"SIN\", \"SIP\", \"SIR\", \"SIS\", \"SIT\", \"SKI\", \"SKY\",\n \"SLY\", \"SO\", \"SOB\", \"SOD\", \"SON\", \"SOP\", \"SOW\", \"SOY\", \"SPA\", \"SPY\",\n \"SUB\", \"SUD\", \"SUE\", \"SUM\", \"SUN\", \"SUP\", \"TAB\", \"TAD\", \"TAG\", \"TAN\",\n \"TAP\", \"TAR\", \"TEA\", \"TED\", \"TEE\", \"TEN\", \"THE\", \"THY\", \"TIC\", \"TIE\",\n \"TIM\", \"TIN\", \"TIP\", \"TO\", \"TOE\", \"TOG\", \"TOM\", \"TON\", \"TOO\", \"TOP\",\n \"TOW\", \"TOY\", \"TRY\", \"TUB\", \"TUG\", \"TUM\", \"TUN\", \"TWO\", \"UN\", \"UP\",\n \"US\", \"USE\", \"VAN\", \"VAT\", \"VET\", \"VIE\", \"WAD\", \"WAG\", \"WAR\", \"WAS\",\n \"WAY\", \"WE\", \"WEB\", \"WED\", \"WEE\", \"WET\", \"WHO\", \"WHY\", \"WIN\", \"WIT\",\n \"WOK\", \"WON\", \"WOO\", \"WOW\", \"WRY\", \"WU\", \"YAM\", \"YAP\", \"YAW\", \"YE\",\n \"YEA\", \"YES\", \"YET\", \"YOU\", \"ABED\", \"ABEL\", \"ABET\", \"ABLE\", \"ABUT\",\n \"ACHE\", \"ACID\", \"ACME\", \"ACRE\", \"ACTA\", \"ACTS\", \"ADAM\", \"ADDS\",\n \"ADEN\", \"AFAR\", \"AFRO\", \"AGEE\", \"AHEM\", \"AHOY\", \"AIDA\", \"AIDE\",\n \"AIDS\", \"AIRY\", \"AJAR\", \"AKIN\", \"ALAN\", \"ALEC\", \"ALGA\", \"ALIA\",\n \"ALLY\", \"ALMA\", \"ALOE\", \"ALSO\", \"ALTO\", \"ALUM\", \"ALVA\", \"AMEN\",\n \"AMES\", \"AMID\", \"AMMO\", \"AMOK\", \"AMOS\", \"AMRA\", \"ANDY\", \"ANEW\",\n \"ANNA\", \"ANNE\", \"ANTE\", \"ANTI\", \"AQUA\", \"ARAB\", \"ARCH\", \"AREA\",\n \"ARGO\", \"ARID\", \"ARMY\", \"ARTS\", \"ARTY\", \"ASIA\", \"ASKS\", \"ATOM\",\n \"AUNT\", \"AURA\", \"AUTO\", \"AVER\", \"AVID\", \"AVIS\", \"AVON\", \"AVOW\",\n \"AWAY\", \"AWRY\", \"BABE\", \"BABY\", \"BACH\", \"BACK\", \"BADE\", \"BAIL\",\n \"BAIT\", \"BAKE\", \"BALD\", \"BALE\", \"BALI\", \"BALK\", \"BALL\", \"BALM\",\n \"BAND\", \"BANE\", \"BANG\", \"BANK\", \"BARB\", \"BARD\", \"BARE\", \"BARK\",\n \"BARN\", \"BARR\", \"BASE\", \"BASH\", \"BASK\", \"BASS\", \"BATE\", \"BATH\",\n \"BAWD\", \"BAWL\", \"BEAD\", \"BEAK\", \"BEAM\", \"BEAN\", \"BEAR\", \"BEAT\",\n \"BEAU\", \"BECK\", \"BEEF\", \"BEEN\", \"BEER\",\n \"BEET\", \"BELA\", \"BELL\", \"BELT\", \"BEND\", \"BENT\", \"BERG\", \"BERN\",\n \"BERT\", \"BESS\", \"BEST\", \"BETA\", \"BETH\", \"BHOY\", \"BIAS\", \"BIDE\",\n \"BIEN\", \"BILE\", \"BILK\", \"BILL\", \"BIND\", \"BING\", \"BIRD\", \"BITE\",\n \"BITS\", \"BLAB\", \"BLAT\", \"BLED\", \"BLEW\", \"BLOB\", \"BLOC\", \"BLOT\",\n \"BLOW\", \"BLUE\", \"BLUM\", \"BLUR\", \"BOAR\", \"BOAT\", \"BOCA\", \"BOCK\",\n \"BODE\", \"BODY\", \"BOGY\", \"BOHR\", \"BOIL\", \"BOLD\", \"BOLO\", \"BOLT\",\n \"BOMB\", \"BONA\", \"BOND\", \"BONE\", \"BONG\", \"BONN\", \"BONY\", \"BOOK\",\n \"BOOM\", \"BOON\", \"BOOT\", \"BORE\", \"BORG\", \"BORN\", \"BOSE\", \"BOSS\",\n \"BOTH\", \"BOUT\", \"BOWL\", \"BOYD\", \"BRAD\", \"BRAE\", \"BRAG\", \"BRAN\",\n \"BRAY\", \"BRED\", \"BREW\", \"BRIG\", \"BRIM\", \"BROW\", \"BUCK\", \"BUDD\",\n \"BUFF\", \"BULB\", \"BULK\", \"BULL\", \"BUNK\", \"BUNT\", \"BUOY\", \"BURG\",\n \"BURL\", \"BURN\", \"BURR\", \"BURT\", \"BURY\", \"BUSH\", \"BUSS\", \"BUST\",\n \"BUSY\", \"BYTE\", \"CADY\", \"CAFE\", \"CAGE\", \"CAIN\", \"CAKE\", \"CALF\",\n \"CALL\", \"CALM\", \"CAME\", \"CANE\", \"CANT\", \"CARD\", \"CARE\", \"CARL\",\n \"CARR\", \"CART\", \"CASE\", \"CASH\", \"CASK\", \"CAST\", \"CAVE\", \"CEIL\",\n \"CELL\", \"CENT\", \"CERN\", \"CHAD\", \"CHAR\", \"CHAT\", \"CHAW\", \"CHEF\",\n \"CHEN\", \"CHEW\", \"CHIC\", \"CHIN\", \"CHOU\", \"CHOW\", \"CHUB\", \"CHUG\",\n \"CHUM\", \"CITE\", \"CITY\", \"CLAD\", \"CLAM\", \"CLAN\", \"CLAW\", \"CLAY\",\n \"CLOD\", \"CLOG\", \"CLOT\", \"CLUB\", \"CLUE\", \"COAL\", \"COAT\", \"COCA\",\n \"COCK\", \"COCO\", \"CODA\", \"CODE\", \"CODY\", \"COED\", \"COIL\", \"COIN\",\n \"COKE\", \"COLA\", \"COLD\", \"COLT\", \"COMA\", \"COMB\", \"COME\", \"COOK\",\n \"COOL\", \"COON\", \"COOT\", \"CORD\", \"CORE\", \"CORK\", \"CORN\", \"COST\",\n \"COVE\", \"COWL\", \"CRAB\", \"CRAG\", \"CRAM\", \"CRAY\", \"CREW\", \"CRIB\",\n \"CROW\", \"CRUD\", \"CUBA\", \"CUBE\", \"CUFF\", \"CULL\", \"CULT\", \"CUNY\",\n \"CURB\", \"CURD\", \"CURE\", \"CURL\", \"CURT\", \"CUTS\", \"DADE\", \"DALE\",\n \"DAME\", \"DANA\", \"DANE\", \"DANG\", \"DANK\", \"DARE\", \"DARK\", \"DARN\",\n \"DART\", \"DASH\", \"DATA\", \"DATE\", \"DAVE\", \"DAVY\", \"DAWN\", \"DAYS\",\n \"DEAD\", \"DEAF\", \"DEAL\", \"DEAN\", \"DEAR\", \"DEBT\", \"DECK\", \"DEED\",\n \"DEEM\", \"DEER\", \"DEFT\", \"DEFY\", \"DELL\", \"DENT\", \"DENY\", \"DESK\",\n \"DIAL\", \"DICE\", \"DIED\", \"DIET\", \"DIME\", \"DINE\", \"DING\", \"DINT\",\n \"DIRE\", \"DIRT\", \"DISC\", \"DISH\", \"DISK\", \"DIVE\", \"DOCK\", \"DOES\",\n \"DOLE\", \"DOLL\", \"DOLT\", \"DOME\", \"DONE\", \"DOOM\", \"DOOR\", \"DORA\",\n \"DOSE\", \"DOTE\", \"DOUG\", \"DOUR\", \"DOVE\", \"DOWN\", \"DRAB\", \"DRAG\",\n \"DRAM\", \"DRAW\", \"DREW\", \"DRUB\", \"DRUG\", \"DRUM\", \"DUAL\", \"DUCK\",\n \"DUCT\", \"DUEL\", \"DUET\", \"DUKE\", \"DULL\", \"DUMB\", \"DUNE\", \"DUNK\",\n \"DUSK\", \"DUST\", \"DUTY\", \"EACH\", \"EARL\", \"EARN\", \"EASE\", \"EAST\",\n \"EASY\", \"EBEN\", \"ECHO\", \"EDDY\", \"EDEN\", \"EDGE\", \"EDGY\", \"EDIT\",\n \"EDNA\", \"EGAN\", \"ELAN\", \"ELBA\", \"ELLA\", \"ELSE\", \"EMIL\", \"EMIT\",\n \"EMMA\", \"ENDS\", \"ERIC\", \"EROS\", \"EVEN\", \"EVER\", \"EVIL\", \"EYED\",\n \"FACE\", \"FACT\", \"FADE\", \"FAIL\", \"FAIN\", \"FAIR\", \"FAKE\", \"FALL\",\n \"FAME\", \"FANG\", \"FARM\", \"FAST\", \"FATE\", \"FAWN\", \"FEAR\", \"FEAT\",\n \"FEED\", \"FEEL\", \"FEET\", \"FELL\", \"FELT\", \"FEND\", \"FERN\", \"FEST\",\n \"FEUD\", \"FIEF\", \"FIGS\", \"FILE\", \"FILL\", \"FILM\", \"FIND\", \"FINE\",\n \"FINK\", \"FIRE\", \"FIRM\", \"FISH\", \"FISK\", \"FIST\", \"FITS\", \"FIVE\",\n \"FLAG\", \"FLAK\", \"FLAM\", \"FLAT\", \"FLAW\", \"FLEA\", \"FLED\", \"FLEW\",\n \"FLIT\", \"FLOC\", \"FLOG\", \"FLOW\", \"FLUB\", \"FLUE\", \"FOAL\", \"FOAM\",\n \"FOGY\", \"FOIL\", \"FOLD\", \"FOLK\", \"FOND\", \"FONT\", \"FOOD\", \"FOOL\",\n \"FOOT\", \"FORD\", \"FORE\", \"FORK\", \"FORM\", \"FORT\", \"FOSS\", \"FOUL\",\n \"FOUR\", \"FOWL\", \"FRAU\", \"FRAY\", \"FRED\", \"FREE\", \"FRET\", \"FREY\",\n \"FROG\", \"FROM\", \"FUEL\", \"FULL\", \"FUME\", \"FUND\", \"FUNK\", \"FURY\",\n \"FUSE\", \"FUSS\", \"GAFF\", \"GAGE\", \"GAIL\", \"GAIN\", \"GAIT\", \"GALA\",\n \"GALE\", \"GALL\", \"GALT\", \"GAME\", \"GANG\", \"GARB\", \"GARY\", \"GASH\",\n \"GATE\", \"GAUL\", \"GAUR\", \"GAVE\", \"GAWK\", \"GEAR\", \"GELD\", \"GENE\",\n \"GENT\", \"GERM\", \"GETS\", \"GIBE\", \"GIFT\", \"GILD\", \"GILL\", \"GILT\",\n \"GINA\", \"GIRD\", \"GIRL\", \"GIST\", \"GIVE\", \"GLAD\", \"GLEE\", \"GLEN\",\n \"GLIB\", \"GLOB\", \"GLOM\", \"GLOW\", \"GLUE\", \"GLUM\", \"GLUT\", \"GOAD\",\n \"GOAL\", \"GOAT\", \"GOER\", \"GOES\", \"GOLD\", \"GOLF\", \"GONE\", \"GONG\",\n \"GOOD\", \"GOOF\", \"GORE\", \"GORY\", \"GOSH\", \"GOUT\", \"GOWN\", \"GRAB\",\n \"GRAD\", \"GRAY\", \"GREG\", \"GREW\", \"GREY\", \"GRID\", \"GRIM\", \"GRIN\",\n \"GRIT\", \"GROW\", \"GRUB\", \"GULF\", \"GULL\", \"GUNK\", \"GURU\", \"GUSH\",\n \"GUST\", \"GWEN\", \"GWYN\", \"HAAG\", \"HAAS\", \"HACK\", \"HAIL\", \"HAIR\",\n \"HALE\", \"HALF\", \"HALL\", \"HALO\", \"HALT\", \"HAND\", \"HANG\", \"HANK\",\n \"HANS\", \"HARD\", \"HARK\", \"HARM\", \"HART\", \"HASH\", \"HAST\", \"HATE\",\n \"HATH\", \"HAUL\", \"HAVE\", \"HAWK\", \"HAYS\", \"HEAD\", \"HEAL\", \"HEAR\",\n \"HEAT\", \"HEBE\", \"HECK\", \"HEED\", \"HEEL\", \"HEFT\", \"HELD\", \"HELL\",\n \"HELM\", \"HERB\", \"HERD\", \"HERE\", \"HERO\", \"HERS\", \"HESS\", \"HEWN\",\n \"HICK\", \"HIDE\", \"HIGH\", \"HIKE\", \"HILL\", \"HILT\", \"HIND\", \"HINT\",\n \"HIRE\", \"HISS\", \"HIVE\", \"HOBO\", \"HOCK\", \"HOFF\", \"HOLD\", \"HOLE\",\n \"HOLM\", \"HOLT\", \"HOME\", \"HONE\", \"HONK\", \"HOOD\", \"HOOF\", \"HOOK\",\n \"HOOT\", \"HORN\", \"HOSE\", \"HOST\", \"HOUR\", \"HOVE\", \"HOWE\", \"HOWL\",\n \"HOYT\", \"HUCK\", \"HUED\", \"HUFF\", \"HUGE\", \"HUGH\", \"HUGO\", \"HULK\",\n \"HULL\", \"HUNK\", \"HUNT\", \"HURD\", \"HURL\", \"HURT\", \"HUSH\", \"HYDE\",\n \"HYMN\", \"IBIS\", \"ICON\", \"IDEA\", \"IDLE\", \"IFFY\", \"INCA\", \"INCH\",\n \"INTO\", \"IONS\", \"IOTA\", \"IOWA\", \"IRIS\", \"IRMA\", \"IRON\", \"ISLE\",\n \"ITCH\", \"ITEM\", \"IVAN\", \"JACK\", \"JADE\", \"JAIL\", \"JAKE\", \"JANE\",\n \"JAVA\", \"JEAN\", \"JEFF\", \"JERK\", \"JESS\", \"JEST\", \"JIBE\", \"JILL\",\n \"JILT\", \"JIVE\", \"JOAN\", \"JOBS\", \"JOCK\", \"JOEL\", \"JOEY\", \"JOHN\",\n \"JOIN\", \"JOKE\", \"JOLT\", \"JOVE\", \"JUDD\", \"JUDE\", \"JUDO\", \"JUDY\",\n \"JUJU\", \"JUKE\", \"JULY\", \"JUNE\", \"JUNK\", \"JUNO\", \"JURY\", \"JUST\",\n \"JUTE\", \"KAHN\", \"KALE\", \"KANE\", \"KANT\", \"KARL\", \"KATE\", \"KEEL\",\n \"KEEN\", \"KENO\", \"KENT\", \"KERN\", \"KERR\", \"KEYS\", \"KICK\", \"KILL\",\n \"KIND\", \"KING\", \"KIRK\", \"KISS\", \"KITE\", \"KLAN\", \"KNEE\", \"KNEW\",\n \"KNIT\", \"KNOB\", \"KNOT\", \"KNOW\", \"KOCH\", \"KONG\", \"KUDO\", \"KURD\",\n \"KURT\", \"KYLE\", \"LACE\", \"LACK\", \"LACY\", \"LADY\", \"LAID\", \"LAIN\",\n \"LAIR\", \"LAKE\", \"LAMB\", \"LAME\", \"LAND\", \"LANE\", \"LANG\", \"LARD\",\n \"LARK\", \"LASS\", \"LAST\", \"LATE\", \"LAUD\", \"LAVA\", \"LAWN\", \"LAWS\",\n \"LAYS\", \"LEAD\", \"LEAF\", \"LEAK\", \"LEAN\", \"LEAR\", \"LEEK\", \"LEER\",\n \"LEFT\", \"LEND\", \"LENS\", \"LENT\", \"LEON\", \"LESK\", \"LESS\", \"LEST\",\n \"LETS\", \"LIAR\", \"LICE\", \"LICK\", \"LIED\", \"LIEN\", \"LIES\", \"LIEU\",\n \"LIFE\", \"LIFT\", \"LIKE\", \"LILA\", \"LILT\", \"LILY\", \"LIMA\", \"LIMB\",\n \"LIME\", \"LIND\", \"LINE\", \"LINK\", \"LINT\", \"LION\", \"LISA\", \"LIST\",\n \"LIVE\", \"LOAD\", \"LOAF\", \"LOAM\", \"LOAN\", \"LOCK\", \"LOFT\", \"LOGE\",\n \"LOIS\", \"LOLA\", \"LONE\", \"LONG\", \"LOOK\", \"LOON\", \"LOOT\", \"LORD\",\n \"LORE\", \"LOSE\", \"LOSS\", \"LOST\", \"LOUD\", \"LOVE\", \"LOWE\", \"LUCK\",\n \"LUCY\", \"LUGE\", \"LUKE\", \"LULU\", \"LUND\", \"LUNG\", \"LURA\", \"LURE\",\n \"LURK\", \"LUSH\", \"LUST\", \"LYLE\", \"LYNN\", \"LYON\", \"LYRA\", \"MACE\",\n \"MADE\", \"MAGI\", \"MAID\", \"MAIL\", \"MAIN\", \"MAKE\", \"MALE\", \"MALI\",\n \"MALL\", \"MALT\", \"MANA\", \"MANN\", \"MANY\", \"MARC\", \"MARE\", \"MARK\",\n \"MARS\", \"MART\", \"MARY\", \"MASH\", \"MASK\", \"MASS\", \"MAST\", \"MATE\",\n \"MATH\", \"MAUL\", \"MAYO\", \"MEAD\", \"MEAL\", \"MEAN\", \"MEAT\", \"MEEK\",\n \"MEET\", \"MELD\", \"MELT\", \"MEMO\", \"MEND\", \"MENU\", \"MERT\", \"MESH\",\n \"MESS\", \"MICE\", \"MIKE\", \"MILD\", \"MILE\", \"MILK\", \"MILL\", \"MILT\",\n \"MIMI\", \"MIND\", \"MINE\", \"MINI\", \"MINK\", \"MINT\", \"MIRE\", \"MISS\",\n \"MIST\", \"MITE\", \"MITT\", \"MOAN\", \"MOAT\", \"MOCK\", \"MODE\", \"MOLD\",\n \"MOLE\", \"MOLL\", \"MOLT\", \"MONA\", \"MONK\", \"MONT\", \"MOOD\", \"MOON\",\n \"MOOR\", \"MOOT\", \"MORE\", \"MORN\", \"MORT\", \"MOSS\", \"MOST\", \"MOTH\",\n \"MOVE\", \"MUCH\", \"MUCK\", \"MUDD\", \"MUFF\", \"MULE\", \"MULL\", \"MURK\",\n \"MUSH\", \"MUST\", \"MUTE\", \"MUTT\", \"MYRA\", \"MYTH\", \"NAGY\", \"NAIL\",\n \"NAIR\", \"NAME\", \"NARY\", \"NASH\", \"NAVE\", \"NAVY\", \"NEAL\", \"NEAR\",\n \"NEAT\", \"NECK\", \"NEED\", \"NEIL\", \"NELL\", \"NEON\", \"NERO\", \"NESS\",\n \"NEST\", \"NEWS\", \"NEWT\", \"NIBS\", \"NICE\", \"NICK\", \"NILE\", \"NINA\",\n \"NINE\", \"NOAH\", \"NODE\", \"NOEL\", \"NOLL\", \"NONE\", \"NOOK\", \"NOON\",\n \"NORM\", \"NOSE\", \"NOTE\", \"NOUN\", \"NOVA\", \"NUDE\", \"NULL\", \"NUMB\",\n \"OATH\", \"OBEY\", \"OBOE\", \"ODIN\", \"OHIO\", \"OILY\", \"OINT\", \"OKAY\",\n \"OLAF\", \"OLDY\", \"OLGA\", \"OLIN\", \"OMAN\", \"OMEN\", \"OMIT\", \"ONCE\",\n \"ONES\", \"ONLY\", \"ONTO\", \"ONUS\", \"ORAL\", \"ORGY\", \"OSLO\", \"OTIS\",\n \"OTTO\", \"OUCH\", \"OUST\", \"OUTS\", \"OVAL\", \"OVEN\", \"OVER\", \"OWLY\",\n \"OWNS\", \"QUAD\", \"QUIT\", \"QUOD\", \"RACE\", \"RACK\", \"RACY\", \"RAFT\",\n \"RAGE\", \"RAID\", \"RAIL\", \"RAIN\", \"RAKE\", \"RANK\", \"RANT\", \"RARE\",\n \"RASH\", \"RATE\", \"RAVE\", \"RAYS\", \"READ\", \"REAL\", \"REAM\", \"REAR\",\n \"RECK\", \"REED\", \"REEF\", \"REEK\", \"REEL\", \"REID\", \"REIN\", \"RENA\",\n \"REND\", \"RENT\", \"REST\", \"RICE\", \"RICH\", \"RICK\", \"RIDE\", \"RIFT\",\n \"RILL\", \"RIME\", \"RING\", \"RINK\", \"RISE\", \"RISK\", \"RITE\", \"ROAD\",\n \"ROAM\", \"ROAR\", \"ROBE\", \"ROCK\", \"RODE\", \"ROIL\", \"ROLL\", \"ROME\",\n \"ROOD\", \"ROOF\", \"ROOK\", \"ROOM\", \"ROOT\", \"ROSA\", \"ROSE\", \"ROSS\",\n \"ROSY\", \"ROTH\", \"ROUT\", \"ROVE\", \"ROWE\", \"ROWS\", \"RUBE\", \"RUBY\",\n \"RUDE\", \"RUDY\", \"RUIN\", \"RULE\", \"RUNG\", \"RUNS\", \"RUNT\", \"RUSE\",\n \"RUSH\", \"RUSK\", \"RUSS\", \"RUST\", \"RUTH\", \"SACK\", \"SAFE\", \"SAGE\",\n \"SAID\", \"SAIL\", \"SALE\", \"SALK\", \"SALT\", \"SAME\", \"SAND\", \"SANE\",\n \"SANG\", \"SANK\", \"SARA\", \"SAUL\", \"SAVE\", \"SAYS\", \"SCAN\", \"SCAR\",\n \"SCAT\", \"SCOT\", \"SEAL\", \"SEAM\", \"SEAR\", \"SEAT\", \"SEED\", \"SEEK\",\n \"SEEM\", \"SEEN\", \"SEES\", \"SELF\", \"SELL\", \"SEND\", \"SENT\", \"SETS\",\n \"SEWN\", \"SHAG\", \"SHAM\", \"SHAW\", \"SHAY\", \"SHED\", \"SHIM\", \"SHIN\",\n \"SHOD\", \"SHOE\", \"SHOT\", \"SHOW\", \"SHUN\", \"SHUT\", \"SICK\", \"SIDE\",\n \"SIFT\", \"SIGH\", \"SIGN\", \"SILK\", \"SILL\", \"SILO\", \"SILT\", \"SINE\",\n \"SING\", \"SINK\", \"SIRE\", \"SITE\", \"SITS\", \"SITU\", \"SKAT\", \"SKEW\",\n \"SKID\", \"SKIM\", \"SKIN\", \"SKIT\", \"SLAB\", \"SLAM\", \"SLAT\", \"SLAY\",\n \"SLED\", \"SLEW\", \"SLID\", \"SLIM\", \"SLIT\", \"SLOB\", \"SLOG\", \"SLOT\",\n \"SLOW\", \"SLUG\", \"SLUM\", \"SLUR\", \"SMOG\", \"SMUG\", \"SNAG\", \"SNOB\",\n \"SNOW\", \"SNUB\", \"SNUG\", \"SOAK\", \"SOAR\", \"SOCK\", \"SODA\", \"SOFA\",\n \"SOFT\", \"SOIL\", \"SOLD\", \"SOME\", \"SONG\", \"SOON\", \"SOOT\", \"SORE\",\n \"SORT\", \"SOUL\", \"SOUR\", \"SOWN\", \"STAB\", \"STAG\", \"STAN\", \"STAR\",\n \"STAY\", \"STEM\", \"STEW\", \"STIR\", \"STOW\", \"STUB\", \"STUN\", \"SUCH\",\n \"SUDS\", \"SUIT\", \"SULK\", \"SUMS\", \"SUNG\", \"SUNK\", \"SURE\", \"SURF\",\n \"SWAB\", \"SWAG\", \"SWAM\", \"SWAN\", \"SWAT\", \"SWAY\", \"SWIM\", \"SWUM\",\n \"TACK\", \"TACT\", \"TAIL\", \"TAKE\", \"TALE\", \"TALK\", \"TALL\", \"TANK\",\n \"TASK\", \"TATE\", \"TAUT\", \"TEAL\", \"TEAM\", \"TEAR\", \"TECH\", \"TEEM\",\n \"TEEN\", \"TEET\", \"TELL\", \"TEND\", \"TENT\", \"TERM\", \"TERN\", \"TESS\",\n \"TEST\", \"THAN\", \"THAT\", \"THEE\", \"THEM\", \"THEN\", \"THEY\", \"THIN\",\n \"THIS\", \"THUD\", \"THUG\", \"TICK\", \"TIDE\", \"TIDY\", \"TIED\", \"TIER\",\n \"TILE\", \"TILL\", \"TILT\", \"TIME\", \"TINA\", \"TINE\", \"TINT\", \"TINY\",\n \"TIRE\", \"TOAD\", \"TOGO\", \"TOIL\", \"TOLD\", \"TOLL\", \"TONE\", \"TONG\",\n \"TONY\", \"TOOK\", \"TOOL\", \"TOOT\", \"TORE\", \"TORN\", \"TOTE\", \"TOUR\",\n \"TOUT\", \"TOWN\", \"TRAG\", \"TRAM\", \"TRAY\", \"TREE\", \"TREK\", \"TRIG\",\n \"TRIM\", \"TRIO\", \"TROD\", \"TROT\", \"TROY\", \"TRUE\", \"TUBA\", \"TUBE\",\n \"TUCK\", \"TUFT\", \"TUNA\", \"TUNE\", \"TUNG\", \"TURF\", \"TURN\", \"TUSK\",\n \"TWIG\", \"TWIN\", \"TWIT\", \"ULAN\", \"UNIT\", \"URGE\", \"USED\", \"USER\",\n \"USES\", \"UTAH\", \"VAIL\", \"VAIN\", \"VALE\", \"VARY\", \"VASE\", \"VAST\",\n \"VEAL\", \"VEDA\", \"VEIL\", \"VEIN\", \"VEND\", \"VENT\", \"VERB\", \"VERY\",\n \"VETO\", \"VICE\", \"VIEW\", \"VINE\", \"VISE\", \"VOID\", \"VOLT\", \"VOTE\",\n \"WACK\", \"WADE\", \"WAGE\", \"WAIL\", \"WAIT\", \"WAKE\", \"WALE\", \"WALK\",\n \"WALL\", \"WALT\", \"WAND\", \"WANE\", \"WANG\", \"WANT\", \"WARD\", \"WARM\",\n \"WARN\", \"WART\", \"WASH\", \"WAST\", \"WATS\", \"WATT\", \"WAVE\", \"WAVY\",\n \"WAYS\", \"WEAK\", \"WEAL\", \"WEAN\", \"WEAR\", \"WEED\", \"WEEK\", \"WEIR\",\n \"WELD\", \"WELL\", \"WELT\", \"WENT\", \"WERE\", \"WERT\", \"WEST\", \"WHAM\",\n \"WHAT\", \"WHEE\", \"WHEN\", \"WHET\", \"WHOA\", \"WHOM\", \"WICK\", \"WIFE\",\n \"WILD\", \"WILL\", \"WIND\", \"WINE\", \"WING\", \"WINK\", \"WINO\", \"WIRE\",\n \"WISE\", \"WISH\", \"WITH\", \"WOLF\", \"WONT\", \"WOOD\", \"WOOL\", \"WORD\",\n \"WORE\", \"WORK\", \"WORM\", \"WORN\", \"WOVE\", \"WRIT\", \"WYNN\", \"YALE\",\n \"YANG\", \"YANK\", \"YARD\", \"YARN\", \"YAWL\", \"YAWN\", \"YEAH\", \"YEAR\",\n \"YELL\", \"YOGA\", \"YOKE\"]\n", "/* eslint-disable @typescript-eslint/no-magic-numbers -- Doing many bitwise operations which need specific numbers */\n/* eslint-disable no-bitwise -- Bitwise operators are required for this encoding/decoding */\n/* eslint-disable id-length -- Bitwise math uses shorthand terms */\n/*\n *rfc1751.ts : Converts between 128-bit strings and a human-readable\n *sequence of words, as defined in RFC1751: \"A Convention for\n *Human-Readable 128-bit Keys\", by Daniel L. McDonald.\n *Ported from rfc1751.py / Python Cryptography Toolkit (public domain).\n *Copied from https://github.com/bip32/bip32.github.io/blob/master/js/rfc1751.js which\n *is part of the public domain.\n */\n\nimport { hexToBytes, concat } from '@xrplf/isomorphic/utils'\n\nimport rfc1751Words from './rfc1751Words.json'\n\nconst rfc1751WordList: string[] = rfc1751Words\n\n// Added prettier-ignore to allow _BINARY to be on two lines, instead of one entry per line.\n\n// prettier-ignore\nconst BINARY = ['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',\n '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'];\n\n/**\n * Convert a number array into a binary string.\n *\n * @param key - An array of numbers in base 10.\n * @returns A binary string.\n */\nfunction keyToBinary(key: number[]): string {\n let res = ''\n for (const num of key) {\n res += BINARY[num >> 4] + BINARY[num & 0x0f]\n }\n return res\n}\n\n/**\n * Converts a substring of an encoded secret to its numeric value.\n *\n * @param key - The encoded secret.\n * @param start - The start index to parse from.\n * @param length - The number of digits to parse after the start index.\n * @returns The binary value of the substring.\n */\nfunction extract(key: string, start: number, length: number): number {\n const subKey = key.substring(start, start + length)\n let acc = 0\n for (let index = 0; index < subKey.length; index++) {\n acc = acc * 2 + subKey.charCodeAt(index) - 48\n }\n return acc\n}\n\n/**\n * Generates a modified RFC1751 mnemonic in the same way rippled's wallet_propose does.\n *\n * @param hex_key - An encoded secret in hex format.\n * @returns A mnemonic following rippled's modified RFC1751 mnemonic standard.\n */\nfunction keyToRFC1751Mnemonic(hex_key: string): string {\n // Remove whitespace and interpret hex\n const buf = hexToBytes(hex_key.replace(/\\s+/gu, ''))\n // Swap byte order and use rfc1751\n let key: number[] = bufferToArray(swap128(buf))\n\n // pad to 8 bytes\n const padding: number[] = []\n for (let index = 0; index < (8 - (key.length % 8)) % 8; index++) {\n padding.push(0)\n }\n key = padding.concat(key)\n\n const english: string[] = []\n for (let index = 0; index < key.length; index += 8) {\n const subKey = key.slice(index, index + 8)\n\n // add parity\n let skbin = keyToBinary(subKey)\n let parity = 0\n for (let j = 0; j < 64; j += 2) {\n parity += extract(skbin, j, 2)\n }\n subKey.push((parity << 6) & 0xff)\n\n skbin = keyToBinary(subKey)\n for (let j = 0; j < 64; j += 11) {\n english.push(rfc1751WordList[extract(skbin, j, 11)])\n }\n }\n return english.join(' ')\n}\n\n/**\n * Converts an english mnemonic following rippled's modified RFC1751 standard to an encoded hex secret.\n *\n * @param english - A mnemonic generated using ripple's modified RFC1751 standard.\n * @throws Error if the parity after decoding does not match.\n * @returns A Buffer containing an encoded secret.\n */\nfunction rfc1751MnemonicToKey(english: string): Uint8Array {\n const words = english.split(' ')\n let key: number[] = []\n\n for (let index = 0; index < words.length; index += 6) {\n const { subKey, word }: { subKey: number[]; word: string } = getSubKey(\n words,\n index,\n )\n\n // check parity\n const skbin = keyToBinary(subKey)\n let parity = 0\n for (let j = 0; j < 64; j += 2) {\n parity += extract(skbin, j, 2)\n }\n const cs0 = extract(skbin, 64, 2)\n const cs1 = parity & 3\n if (cs0 !== cs1) {\n throw new Error(`Parity error at ${word}`)\n }\n\n key = key.concat(subKey.slice(0, 8))\n }\n\n // This is a step specific to the XRPL's implementation\n const bufferKey = swap128(Uint8Array.from(key))\n return bufferKey\n}\n\nfunction getSubKey(\n words: string[],\n index: number,\n): { subKey: number[]; word: string } {\n const sublist = words.slice(index, index + 6)\n let bits = 0\n const ch = [0, 0, 0, 0, 0, 0, 0, 0, 0]\n let word = ''\n for (word of sublist) {\n const idx = rfc1751WordList.indexOf(word.toUpperCase())\n if (idx === -1) {\n throw new TypeError(\n `Expected an RFC1751 word, but received '${word}'. ` +\n `For the full list of words in the RFC1751 encoding see https://datatracker.ietf.org/doc/html/rfc1751`,\n )\n }\n const shift = (8 - ((bits + 11) % 8)) % 8\n const y = idx << shift\n const cl = y >> 16\n const cc = (y >> 8) & 0xff\n const cr = y & 0xff\n const t = Math.floor(bits / 8)\n if (shift > 5) {\n ch[t] |= cl\n ch[t + 1] |= cc\n ch[t + 2] |= cr\n } else if (shift > -3) {\n ch[t] |= cc\n ch[t + 1] |= cr\n } else {\n ch[t] |= cr\n }\n bits += 11\n }\n const subKey: number[] = ch.slice()\n return { subKey, word }\n}\n\nfunction bufferToArray(buf: Uint8Array): number[] {\n /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We know the end type */\n return Array.prototype.slice.call(buf) as number[]\n}\n\nfunction swap(arr: Uint8Array, n: number, m: number): void {\n const i = arr[n]\n // eslint-disable-next-line no-param-reassign -- we have to swap\n arr[n] = arr[m]\n // eslint-disable-next-line no-param-reassign -- see above\n arr[m] = i\n}\n\n/**\n * Interprets arr as an array of 64-bit numbers and swaps byte order in 64 bit chunks.\n * Example of two 64 bit numbers 0000000100000002 => 1000000020000000\n *\n * @param arr A Uint8Array representation of one or more 64 bit numbers\n * @returns Uint8Array An array containing the bytes of 64 bit numbers each with reversed endianness\n */\nfunction swap64(arr: Uint8Array): Uint8Array {\n const len = arr.length\n\n for (let i = 0; i < len; i += 8) {\n swap(arr, i, i + 7)\n swap(arr, i + 1, i + 6)\n swap(arr, i + 2, i + 5)\n swap(arr, i + 3, i + 4)\n }\n\n return arr\n}\n\n/**\n * Swap the byte order of a 128-bit array.\n * Ex. 0000000100000002 => 2000000010000000\n *\n * @param arr - A 128-bit (16 byte) array\n * @returns An array containing the same data with reversed endianness\n */\nfunction swap128(arr: Uint8Array): Uint8Array {\n // Interprets arr as an array of (two, in this case) 64-bit numbers and swaps byte order in 64 bit chunks.\n // Ex. 0000000100000002 => 1000000020000000\n const reversedBytes = swap64(arr)\n // Further swap the two 64-bit numbers since our buffer is 128 bits.\n // Ex. 1000000020000000 => 2000000010000000\n return concat([reversedBytes.slice(8, 16), reversedBytes.slice(0, 8)])\n}\n\nexport { rfc1751MnemonicToKey, keyToRFC1751Mnemonic }\n", "import { bytesToHex } from '@xrplf/isomorphic/utils'\nimport BigNumber from 'bignumber.js'\nimport { decodeAccountID } from 'ripple-address-codec'\nimport { decode, encode } from 'ripple-binary-codec'\n\nimport { Transaction } from '../models'\n\n/**\n * If presented in binary form, the Signers array must be sorted based on\n * the numeric value of the signer addresses, with the lowest value first.\n * (If submitted as JSON, the submit_multisigned method handles this automatically.)\n * https://xrpl.org/multi-signing.html.\n *\n * @param left - A Signer to compare with.\n * @param right - A second Signer to compare with.\n * @returns 1 if left \\> right, 0 if left = right, -1 if left \\< right, and null if left or right are NaN.\n */\nexport function compareSigners(\n left: T,\n right: T,\n): number {\n return addressToBigNumber(left.Account).comparedTo(\n addressToBigNumber(right.Account),\n )\n}\n\nexport const NUM_BITS_IN_HEX = 16\n\n/**\n * Converts an address to a BigNumber.\n *\n * @param address - The address to convert.\n * @returns A BigNumber representing the address.\n */\nexport function addressToBigNumber(address: string): BigNumber {\n const hex = bytesToHex(decodeAccountID(address))\n return new BigNumber(hex, NUM_BITS_IN_HEX)\n}\n\n/**\n * Decodes a transaction or transaction blob into a Transaction object.\n *\n * @param txOrBlob - A Transaction object or a hex string representing a transaction blob.\n * @returns A Transaction object.\n * @throws If the input is not a valid Transaction or transaction blob.\n */\nexport function getDecodedTransaction(\n txOrBlob: Transaction | string,\n): Transaction {\n if (typeof txOrBlob === 'object') {\n // We need this to handle X-addresses in multisigning\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We are casting here to get strong typing\n return decode(encode(txOrBlob)) as unknown as Transaction\n }\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We are casting here to get strong typing\n return decode(txOrBlob) as unknown as Transaction\n}\n", "import { encode, encodeForSigning } from 'ripple-binary-codec'\nimport { verify } from 'ripple-keypairs'\n\nimport { ValidationError } from '../errors'\nimport { Signer } from '../models/common'\nimport { Transaction, validate } from '../models/transactions'\n\nimport { compareSigners, getDecodedTransaction } from './utils'\n\n/**\n * Takes several transactions with Signer fields (in object or blob form) and creates a\n * single transaction with all Signers that then gets signed and returned.\n *\n * @param transactions - An array of signed Transactions (in object or blob form) to combine into a single signed Transaction.\n * @returns A single signed Transaction which has all Signers from transactions within it.\n * @throws ValidationError if:\n * - There were no transactions given to sign\n * - The SigningPubKey field is not the empty string in any given transaction\n * - Any transaction is missing a Signers field.\n * @category Signing\n */\nfunction multisign(transactions: Array): string {\n if (transactions.length === 0) {\n throw new ValidationError('There were 0 transactions to multisign')\n }\n\n const decodedTransactions: Transaction[] = transactions.map(\n (txOrBlob: string | Transaction) => {\n return getDecodedTransaction(txOrBlob)\n },\n )\n\n decodedTransactions.forEach((tx) => {\n /*\n * This will throw a more clear error for JS users if any of the supplied transactions has incorrect formatting\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- validate does not accept Transaction type\n validate(tx as unknown as Record)\n if (tx.Signers == null || tx.Signers.length === 0) {\n throw new ValidationError(\n \"For multisigning all transactions must include a Signers field containing an array of signatures. You may have forgotten to pass the 'forMultisign' parameter when signing.\",\n )\n }\n\n if (tx.SigningPubKey !== '') {\n throw new ValidationError(\n 'SigningPubKey must be an empty string for all transactions when multisigning.',\n )\n }\n })\n\n validateTransactionEquivalence(decodedTransactions)\n\n return encode(getTransactionWithAllSigners(decodedTransactions))\n}\n\n/**\n * Verifies that the given transaction has a valid signature based on public-key encryption.\n *\n * @param tx - A transaction to verify the signature of. (Can be in object or encoded string format).\n * @param [publicKey] Specific public key to use to verify. If not specified the `SigningPublicKey` of tx will be used.\n * @returns Returns true if tx has a valid signature, and returns false otherwise.\n * @throws Error when transaction is missing TxnSignature\n * @throws Error when publicKey is not provided and transaction is missing SigningPubKey\n * @category Utilities\n */\nfunction verifySignature(\n tx: Transaction | string,\n publicKey?: string,\n): boolean {\n const decodedTx: Transaction = getDecodedTransaction(tx)\n let key = publicKey\n\n // Need a SignedTransaction class where TxnSignature is not optional.\n if (typeof decodedTx.TxnSignature !== 'string' || !decodedTx.TxnSignature) {\n throw new Error('Transaction is missing a signature, TxnSignature')\n }\n\n if (!key) {\n // Need a SignedTransaction class where TxnSignature is not optional.\n if (\n typeof decodedTx.SigningPubKey !== 'string' ||\n !decodedTx.SigningPubKey\n ) {\n throw new Error('Transaction is missing a public key, SigningPubKey')\n }\n key = decodedTx.SigningPubKey\n }\n\n return verify(encodeForSigning(decodedTx), decodedTx.TxnSignature, key)\n}\n\n/**\n * The transactions should all be equal except for the 'Signers' field.\n *\n * @param transactions - An array of Transactions which are expected to be equal other than 'Signers'.\n * @throws ValidationError if the transactions are not equal in any field other than 'Signers'.\n */\nfunction validateTransactionEquivalence(transactions: Transaction[]): void {\n const exampleTransaction = JSON.stringify({\n ...transactions[0],\n Signers: null,\n })\n if (\n transactions\n .slice(1)\n .some(\n (tx) => JSON.stringify({ ...tx, Signers: null }) !== exampleTransaction,\n )\n ) {\n throw new ValidationError(\n 'txJSON is not the same for all signedTransactions',\n )\n }\n}\n\nfunction getTransactionWithAllSigners(\n transactions: Transaction[],\n): Transaction {\n // Signers must be sorted in the combined transaction - See compareSigners' documentation for more details\n const sortedSigners: Signer[] = transactions\n .flatMap((tx) => tx.Signers ?? [])\n .sort((signer1, signer2) => compareSigners(signer1.Signer, signer2.Signer))\n\n return { ...transactions[0], Signers: sortedSigners }\n}\n\nexport { verifySignature, multisign }\n", "import { HDKey } from '@scure/bip32'\nimport { mnemonicToSeedSync, validateMnemonic } from '@scure/bip39'\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { bytesToHex } from '@xrplf/isomorphic/utils'\nimport BigNumber from 'bignumber.js'\nimport {\n classicAddressToXAddress,\n isValidXAddress,\n xAddressToClassicAddress,\n encodeSeed,\n} from 'ripple-address-codec'\nimport {\n encodeForSigning,\n encodeForMultisigning,\n encode,\n} from 'ripple-binary-codec'\nimport {\n deriveAddress,\n deriveKeypair,\n generateSeed,\n sign,\n} from 'ripple-keypairs'\n\nimport ECDSA from '../ECDSA'\nimport { ValidationError } from '../errors'\nimport { Transaction, validate } from '../models/transactions'\nimport { GlobalFlags } from '../models/transactions/common'\nimport { hasFlag } from '../models/utils'\nimport { ensureClassicAddress } from '../sugar/utils'\nimport { omitBy } from '../utils/collections'\nimport { hashSignedTx } from '../utils/hashes/hashLedger'\n\nimport { rfc1751MnemonicToKey } from './rfc1751'\nimport { verifySignature } from './signer'\n\nconst DEFAULT_ALGORITHM: ECDSA = ECDSA.ed25519\nconst DEFAULT_DERIVATION_PATH = \"m/44'/144'/0'/0/0\"\n\ntype ValidHDKey = HDKey & {\n privateKey: Uint8Array\n publicKey: Uint8Array\n}\n\nfunction validateKey(node: HDKey): asserts node is ValidHDKey {\n if (!(node.privateKey instanceof Uint8Array)) {\n throw new ValidationError('Unable to derive privateKey from mnemonic input')\n }\n\n if (!(node.publicKey instanceof Uint8Array)) {\n throw new ValidationError('Unable to derive publicKey from mnemonic input')\n }\n}\n\n/**\n * A utility for deriving a wallet composed of a keypair (publicKey/privateKey).\n * A wallet can be derived from either a seed, mnemonic, or entropy (array of random numbers).\n * It provides functionality to sign/verify transactions offline.\n *\n * @example\n * ```typescript\n *\n * // Derive a wallet from a base58 encoded seed.\n * const seedWallet = Wallet.fromSeed('ssZkdwURFMBXenJPbrpE14b6noJSu')\n * console.log(seedWallet)\n * // Wallet {\n * // publicKey: '02FE9932A9C4AA2AC9F0ED0F2B89302DE7C2C95F91D782DA3CF06E64E1C1216449',\n * // privateKey: '00445D0A16DD05EFAF6D5AF45E6B8A6DE4170D93C0627021A0B8E705786CBCCFF7',\n * // classicAddress: 'rG88FVLjvYiQaGftSa1cKuE2qNx7aK5ivo',\n * // seed: 'ssZkdwURFMBXenJPbrpE14b6noJSu'\n * // }.\n *\n * // Sign a JSON Transaction\n * const signed = seedWallet.signTransaction({\n * TransactionType: 'Payment',\n * Account: 'rG88FVLjvYiQaGftSa1cKuE2qNx7aK5ivo'\n * ...........\n * }).\n *\n * console.log(signed)\n * // '1200007321......B01BE1DFF3'.\n * console.log(decode(signed))\n * // {\n * // TransactionType: 'Payment',\n * // SigningPubKey: '02FE9932A9C4AA2AC9F0ED0F2B89302DE7C2C95F91D782DA3CF06E64E1C1216449',\n * // TxnSignature: '3045022100AAD......5B631ABD21171B61B07D304',\n * // Account: 'rG88FVLjvYiQaGftSa1cKuE2qNx7aK5ivo'\n * // ...........\n * // }\n * ```\n *\n * @category Signing\n */\nexport class Wallet {\n public readonly publicKey: string\n public readonly privateKey: string\n public readonly classicAddress: string\n public readonly seed?: string\n\n /**\n * Creates a new Wallet.\n *\n * @param publicKey - The public key for the account.\n * @param privateKey - The private key used for signing transactions for the account.\n * @param opts - (Optional) Options to initialize a Wallet.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @param opts.seed - The seed used to derive the account keys.\n */\n public constructor(\n publicKey: string,\n privateKey: string,\n opts: {\n masterAddress?: string\n seed?: string\n } = {},\n ) {\n this.publicKey = publicKey\n this.privateKey = privateKey\n this.classicAddress = opts.masterAddress\n ? ensureClassicAddress(opts.masterAddress)\n : deriveAddress(publicKey)\n this.seed = opts.seed\n }\n\n /**\n * Alias for wallet.classicAddress.\n *\n * @returns The wallet's classic address.\n */\n public get address(): string {\n return this.classicAddress\n }\n\n /**\n * `generate()` creates a new random Wallet. In order to make this a valid account on ledger, you must\n * Send XRP to it. On test networks that can be done with \"faucets\" which send XRP to any account which asks\n * For it. You can call `client.fundWallet()` in order to generate credentials and fund the account on test networks.\n *\n * @example\n * ```ts\n * const { Wallet } = require('xrpl')\n * const wallet = Wallet.generate()\n * ```\n *\n * @param algorithm - The digital signature algorithm to generate an address for.\n * @returns A new Wallet derived from a generated seed.\n *\n * @throws ValidationError when signing algorithm isn't valid\n */\n public static generate(algorithm: ECDSA = DEFAULT_ALGORITHM): Wallet {\n if (!Object.values(ECDSA).includes(algorithm)) {\n throw new ValidationError('Invalid cryptographic signing algorithm')\n }\n const seed = generateSeed({ algorithm })\n return Wallet.fromSeed(seed, { algorithm })\n }\n\n /**\n * Derives a wallet from a seed.\n *\n * @param seed - A string used to generate a keypair (publicKey/privateKey) to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @returns A Wallet derived from a seed.\n */\n public static fromSeed(\n seed: string,\n opts: { masterAddress?: string; algorithm?: ECDSA } = {},\n ): Wallet {\n return Wallet.deriveWallet(seed, {\n algorithm: opts.algorithm,\n masterAddress: opts.masterAddress,\n })\n }\n\n /**\n * Derives a wallet from a secret (AKA a seed).\n *\n * @param secret - A string used to generate a keypair (publicKey/privateKey) to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @returns A Wallet derived from a secret (AKA a seed).\n */\n // eslint-disable-next-line @typescript-eslint/member-ordering -- Member is used as a function here\n public static fromSecret = Wallet.fromSeed\n\n /**\n * Derives a wallet from an entropy (array of random numbers).\n *\n * @param entropy - An array of random numbers to generate a seed used to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @returns A Wallet derived from an entropy.\n */\n public static fromEntropy(\n entropy: Uint8Array | number[],\n opts: { masterAddress?: string; algorithm?: ECDSA } = {},\n ): Wallet {\n const algorithm = opts.algorithm ?? DEFAULT_ALGORITHM\n const options = {\n entropy: Uint8Array.from(entropy),\n algorithm,\n }\n const seed = generateSeed(options)\n return Wallet.deriveWallet(seed, {\n algorithm,\n masterAddress: opts.masterAddress,\n })\n }\n\n /**\n * Derives a wallet from a bip39 or RFC1751 mnemonic (Defaults to bip39).\n *\n * @deprecated since version 2.6.1.\n * Will be deleted in version 3.0.0.\n * This representation is currently deprecated in rippled.\n * You should use another method to represent your keys such as a seed or public/private keypair.\n *\n * @param mnemonic - A string consisting of words (whitespace delimited) used to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @param opts.derivationPath - The path to derive a keypair (publicKey/privateKey). Only used for bip39 conversions.\n * @param opts.mnemonicEncoding - If set to 'rfc1751', this interprets the mnemonic as a rippled RFC1751 mnemonic like\n * `wallet_propose` generates in rippled. Otherwise the function defaults to bip39 decoding.\n * @param opts.algorithm - Only used if opts.mnemonicEncoding is 'rfc1751'. Allows the mnemonic to generate its\n * secp256k1 seed, or its ed25519 seed. By default, it will generate the secp256k1 seed\n * to match the rippled `wallet_propose` default algorithm.\n * @returns A Wallet derived from a mnemonic.\n * @throws ValidationError if unable to derive private key from mnemonic input.\n */\n public static fromMnemonic(\n mnemonic: string,\n opts: {\n masterAddress?: string\n derivationPath?: string\n mnemonicEncoding?: 'bip39' | 'rfc1751'\n algorithm?: ECDSA\n } = {},\n ): Wallet {\n if (opts.mnemonicEncoding === 'rfc1751') {\n return Wallet.fromRFC1751Mnemonic(mnemonic, {\n masterAddress: opts.masterAddress,\n algorithm: opts.algorithm,\n })\n }\n // Otherwise decode using bip39's mnemonic standard\n if (!validateMnemonic(mnemonic, wordlist)) {\n throw new ValidationError(\n 'Unable to parse the given mnemonic using bip39 encoding',\n )\n }\n\n // eslint-disable-next-line n/no-sync -- Using async would break fromMnemonic; this rule should be disabled entirely later.\n const seed = mnemonicToSeedSync(mnemonic)\n const masterNode = HDKey.fromMasterSeed(seed)\n const node = masterNode.derive(\n opts.derivationPath ?? DEFAULT_DERIVATION_PATH,\n )\n validateKey(node)\n\n const publicKey = bytesToHex(node.publicKey)\n const privateKey = bytesToHex(node.privateKey)\n return new Wallet(publicKey, `00${privateKey}`, {\n masterAddress: opts.masterAddress,\n })\n }\n\n /**\n * Derives a wallet from a RFC1751 mnemonic, which is how `wallet_propose` encodes mnemonics.\n *\n * @param mnemonic - A string consisting of words (whitespace delimited) used to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @returns A Wallet derived from a mnemonic.\n */\n private static fromRFC1751Mnemonic(\n mnemonic: string,\n opts: { masterAddress?: string; algorithm?: ECDSA },\n ): Wallet {\n const seed = rfc1751MnemonicToKey(mnemonic)\n let encodeAlgorithm: 'ed25519' | 'secp256k1'\n if (opts.algorithm === ECDSA.ed25519) {\n encodeAlgorithm = 'ed25519'\n } else {\n // Defaults to secp256k1 since that's the default for `wallet_propose`\n encodeAlgorithm = 'secp256k1'\n }\n const encodedSeed = encodeSeed(seed, encodeAlgorithm)\n return Wallet.fromSeed(encodedSeed, {\n masterAddress: opts.masterAddress,\n algorithm: opts.algorithm,\n })\n }\n\n /**\n * Derive a Wallet from a seed.\n *\n * @param seed - The seed used to derive the wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @returns A Wallet derived from the seed.\n */\n private static deriveWallet(\n seed: string,\n opts: { masterAddress?: string; algorithm?: ECDSA } = {},\n ): Wallet {\n const { publicKey, privateKey } = deriveKeypair(seed, {\n algorithm: opts.algorithm ?? DEFAULT_ALGORITHM,\n })\n return new Wallet(publicKey, privateKey, {\n seed,\n masterAddress: opts.masterAddress,\n })\n }\n\n /**\n * Signs a transaction offline.\n *\n * @example\n *\n * ```ts\n * const { Client, Wallet } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n *\n * async function signTransaction() {\n * await client.connect()\n * const { balance: balance1, wallet: wallet1 } = client.fundWallet()\n * const { balance: balance2, wallet: wallet2 } = client.fundWallet()\n *\n * const transaction = {\n * TransactionType: 'Payment',\n * Account: wallet1.address,\n * Destination: wallet2.address,\n * Amount: '10'\n * }\n *\n * try {\n * await client.autofill(transaction)\n * const { tx_blob: signed_tx_blob, hash} = await wallet1.sign(transaction)\n * console.log(signed_tx_blob)\n * } catch (error) {\n * console.error(`Failed to sign transaction: ${error}`)\n * }\n * const result = await client.submit(signed_tx_blob)\n * await client.disconnect()\n * }\n *\n * signTransaction()\n * ```\n * In order for a transaction to be validated, it must be signed by the account sending the transaction to prove\n * That the owner is actually the one deciding to take that action.\n *\n * In this example, we created, signed, and then submitted a transaction to testnet. You may notice that the\n * Output of `sign` includes a `tx_blob` and a `hash`, both of which are needed to submit & verify the results.\n * Note: If you pass a `Wallet` to `client.submit` or `client.submitAndWait` it will do signing like this under the hood.\n *\n * `tx_blob` is a binary representation of a transaction on the XRP Ledger. It's essentially a byte array\n * that encodes all of the data necessary to execute the transaction, including the source address, the destination\n * address, the amount, and any additional fields required for the specific transaction type.\n *\n * `hash` is a unique identifier that's generated from the signed transaction data on the XRP Ledger. It's essentially\n * A cryptographic digest of the signed transaction blob, created using a hash function. The signed transaction hash is\n * Useful for identifying and tracking specific transactions on the XRP Ledger. It can be used to query transaction\n * Information, verify the authenticity of a transaction, and detect any tampering with the transaction data.\n *\n * @param this - Wallet instance.\n * @param transaction - A transaction to be signed offline.\n * @param multisign - Specify true/false to use multisign or actual address (classic/x-address) to make multisign tx request.\n * The actual address is only needed in the case of regular key usage.\n * @returns A signed transaction.\n * @throws ValidationError if the transaction is already signed or does not encode/decode to same result.\n * @throws XrplError if the issued currency being signed is XRP ignoring case.\n */\n // eslint-disable-next-line max-lines-per-function -- introduced more checks to support both string and boolean inputs.\n public sign(\n this: Wallet,\n transaction: Transaction,\n multisign?: boolean | string,\n ): {\n tx_blob: string\n hash: string\n } {\n let multisignAddress: boolean | string = false\n if (typeof multisign === 'string') {\n multisignAddress = multisign\n } else if (multisign) {\n multisignAddress = this.classicAddress\n }\n\n // clean null & undefined valued tx properties\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- ensure Transaction flows through\n const tx = omitBy(\n { ...transaction },\n (value) => value == null,\n ) as unknown as Transaction\n\n if (tx.TxnSignature || tx.Signers) {\n throw new ValidationError(\n 'txJSON must not contain \"TxnSignature\" or \"Signers\" properties',\n )\n }\n\n removeTrailingZeros(tx)\n\n /*\n * This will throw a more clear error for JS users if the supplied transaction has incorrect formatting\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- validate does not accept Transaction type\n validate(tx as unknown as Record)\n if (hasFlag(tx, GlobalFlags.tfInnerBatchTxn, 'tfInnerBatchTxn')) {\n throw new ValidationError('Cannot sign a Batch inner transaction.')\n }\n\n const txToSignAndEncode = { ...tx }\n\n if (multisignAddress) {\n txToSignAndEncode.SigningPubKey = ''\n const signer = {\n Account: multisignAddress,\n SigningPubKey: this.publicKey,\n TxnSignature: computeSignature(\n txToSignAndEncode,\n this.privateKey,\n multisignAddress,\n ),\n }\n txToSignAndEncode.Signers = [{ Signer: signer }]\n } else {\n txToSignAndEncode.SigningPubKey = this.publicKey\n txToSignAndEncode.TxnSignature = computeSignature(\n txToSignAndEncode,\n this.privateKey,\n )\n }\n\n const serialized = encode(txToSignAndEncode)\n return {\n tx_blob: serialized,\n hash: hashSignedTx(serialized),\n }\n }\n\n /**\n * Verifies a signed transaction offline.\n *\n * @param signedTransaction - A signed transaction (hex string of signTransaction result) to be verified offline.\n * @returns Returns true if a signedTransaction is valid.\n * @throws {Error} Transaction is missing a signature, TxnSignature\n */\n public verifyTransaction(signedTransaction: Transaction | string): boolean {\n return verifySignature(signedTransaction, this.publicKey)\n }\n\n /**\n * Gets an X-address in Testnet/Mainnet format.\n *\n * @param tag - A tag to be included within the X-address.\n * @param isTestnet - A boolean to indicate if X-address should be in Testnet (true) or Mainnet (false) format.\n * @returns An X-address.\n */\n public getXAddress(tag: number | false = false, isTestnet = false): string {\n return classicAddressToXAddress(this.classicAddress, tag, isTestnet)\n }\n}\n\n/**\n * Signs a transaction with the proper signing encoding.\n *\n * @param tx - A transaction to sign.\n * @param privateKey - A key to sign the transaction with.\n * @param signAs - Multisign only. An account address to include in the Signer field.\n * Can be either a classic address or an XAddress.\n * @returns A signed transaction in the proper format.\n */\nfunction computeSignature(\n tx: Transaction,\n privateKey: string,\n signAs?: string,\n): string {\n if (signAs) {\n const classicAddress = isValidXAddress(signAs)\n ? xAddressToClassicAddress(signAs).classicAddress\n : signAs\n\n return sign(encodeForMultisigning(tx, classicAddress), privateKey)\n }\n return sign(encodeForSigning(tx), privateKey)\n}\n\n/**\n * Remove trailing insignificant zeros for non-XRP Payment amount.\n * This resolves the serialization mismatch bug when encoding/decoding a non-XRP Payment transaction\n * with an amount that contains trailing insignificant zeros; for example, '123.4000' would serialize\n * to '123.4' and cause a mismatch.\n *\n * @param tx - The transaction prior to signing.\n */\nfunction removeTrailingZeros(tx: Transaction): void {\n if (\n tx.TransactionType === 'Payment' &&\n typeof tx.Amount !== 'string' &&\n tx.Amount.value.includes('.') &&\n tx.Amount.value.endsWith('0')\n ) {\n // eslint-disable-next-line no-param-reassign -- Required to update Transaction.Amount.value\n tx.Amount = { ...tx.Amount }\n // eslint-disable-next-line no-param-reassign -- Required to update Transaction.Amount.value\n tx.Amount.value = new BigNumber(tx.Amount.value).toString()\n }\n}\n", "import type { Client } from '../client'\nimport { XRPLFaucetError } from '../errors'\n\nexport interface FaucetWallet {\n account: {\n xAddress: string\n classicAddress?: string\n secret: string\n }\n amount: number\n balance: number\n}\n\nexport enum FaucetNetwork {\n Testnet = 'faucet.altnet.rippletest.net',\n Devnet = 'faucet.devnet.rippletest.net',\n}\n\nexport const faucetNetworkPaths: Record = {\n [FaucetNetwork.Testnet]: '/accounts',\n [FaucetNetwork.Devnet]: '/accounts',\n}\n\nexport const faucetNetworkIDs: Map = new Map([\n [1, FaucetNetwork.Testnet],\n [2, FaucetNetwork.Devnet],\n])\n\n/**\n * Get the faucet host based on the Client connection.\n *\n * @param client - Client.\n * @returns A {@link FaucetNetwork}.\n * @throws When there is no known faucet for the client's network ID.\n */\nexport function getFaucetHost(client: Client): FaucetNetwork | undefined {\n if (client.networkID == null) {\n throw new XRPLFaucetError(\n 'Cannot create faucet URL without networkID or the faucetHost information',\n )\n }\n\n if (faucetNetworkIDs.has(client.networkID)) {\n return faucetNetworkIDs.get(client.networkID)\n }\n\n if (client.networkID === 0) {\n // mainnet does not have a faucet\n throw new XRPLFaucetError('Faucet is not available for mainnet.')\n }\n\n throw new XRPLFaucetError('Faucet URL is not defined or inferrable.')\n}\n\n/**\n * Get the faucet pathname based on the faucet hostname.\n *\n * @param hostname - hostname.\n * @returns A String with the correct path for the input hostname.\n * If hostname undefined or cannot find (key, value) pair in {@link faucetNetworkPaths}, defaults to '/accounts'\n */\nexport function getFaucetPath(hostname: string | undefined): string {\n if (hostname === undefined) {\n return '/accounts'\n }\n return faucetNetworkPaths[hostname] || '/accounts'\n}\n", "import { isValidClassicAddress } from 'ripple-address-codec'\n\nimport type { Client } from '../client'\nimport { XRPLFaucetError } from '../errors'\n\nimport { FaucetWallet, getFaucetHost, getFaucetPath } from './defaultFaucets'\n\nimport { Wallet } from '.'\n\n// Interval to check an account balance\nconst INTERVAL_SECONDS = 1\n// Maximum attempts to retrieve a balance\nconst MAX_ATTEMPTS = 20\n\nexport interface FundingOptions {\n /**\n * A custom amount to fund, if undefined or null, the default amount will be 1000.\n */\n amount?: string\n /**\n * A custom host for a faucet server. On devnet, testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct server automatically. In other environments, or if you would like to customize\n * the faucet host in devnet or testnet, you should provide the host using this option.\n */\n faucetHost?: string\n /**\n * A custom path for a faucet server. On devnet,\n * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct path automatically. In other environments,\n * or if you would like to customize the faucet path in devnet or testnet,\n * you should provide the path using this option.\n * Ex: client.fundWallet(null,{'faucet.altnet.rippletest.net', '/accounts'})\n * specifies a request to 'faucet.altnet.rippletest.net/accounts' to fund a new wallet.\n */\n faucetPath?: string\n /**\n * An optional field to indicate the use case context of the faucet transaction\n * Ex: integration test, code snippets.\n */\n usageContext?: string\n}\n\n/**\n * Parameters to pass into a faucet request to fund an XRP account.\n */\nexport interface FaucetRequestBody {\n /**\n * The address to fund. If no address is provided the faucet will fund a random account.\n */\n destination?: string\n /**\n * The total amount of XRP to fund the account with.\n */\n xrpAmount?: string\n /**\n * An optional field to indicate the use case context of the faucet transaction\n * Ex: integration test, code snippets.\n */\n usageContext?: string\n /**\n * Information about the context of where the faucet is being called from.\n * Ex: xrpl.js or xrpl-py\n */\n userAgent: string\n}\n\n/**\n * Generate a new wallet to fund if no existing wallet is provided or its address is invalid.\n *\n * @param wallet - Optional existing wallet.\n * @returns The wallet to fund.\n */\nexport function generateWalletToFund(wallet?: Wallet | null): Wallet {\n if (wallet && isValidClassicAddress(wallet.classicAddress)) {\n return wallet\n }\n return Wallet.generate()\n}\n\n/**\n * Get the starting balance of the wallet.\n *\n * @param client - The client object.\n * @param classicAddress - The classic address of the wallet.\n * @returns The starting balance.\n */\nexport async function getStartingBalance(\n client: Client,\n classicAddress: string,\n): Promise {\n let startingBalance = 0\n try {\n startingBalance = Number(await client.getXrpBalance(classicAddress))\n } catch {\n // startingBalance remains '0'\n }\n return startingBalance\n}\n\nexport interface FundWalletOptions {\n faucetHost?: string\n faucetPath?: string\n amount?: string\n usageContext?: string\n}\n\n/**\n *\n * Helper function to request funding from a faucet. Should not be called directly from outside the xrpl.js library.\n *\n * @param options - See below\n * @param options.faucetHost - A custom host for a faucet server. On devnet,\n * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct server automatically. In other environments,\n * or if you would like to customize the faucet host in devnet or testnet,\n * you should provide the host using this option.\n * @param options.faucetPath - A custom path for a faucet server. On devnet,\n * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct path automatically. In other environments,\n * or if you would like to customize the faucet path in devnet or testnet,\n * you should provide the path using this option.\n * Ex: client.fundWallet(null,{'faucet.altnet.rippletest.net', '/accounts'})\n * specifies a request to 'faucet.altnet.rippletest.net/accounts' to fund a new wallet.\n * @param options.amount - A custom amount to fund, if undefined or null, the default amount will be 1000.\n * @param client - A connection to the XRPL to send requests and transactions.\n * @param startingBalance - The amount of XRP in the given walletToFund on ledger already.\n * @param walletToFund - An existing XRPL Wallet to fund.\n * @param postBody - The content to send the faucet to indicate which address to fund, how much to fund it, and\n * where the request is coming from.\n * @returns A promise that resolves to a funded wallet and the balance within it.\n */\n// eslint-disable-next-line max-params -- Helper function created for organizational purposes\nexport async function requestFunding(\n options: FundingOptions,\n client: Client,\n startingBalance: number,\n walletToFund: Wallet,\n postBody: FaucetRequestBody,\n): Promise<{\n wallet: Wallet\n balance: number\n}> {\n const hostname = options.faucetHost ?? getFaucetHost(client)\n if (!hostname) {\n throw new XRPLFaucetError('No faucet hostname could be derived')\n }\n const pathname = options.faucetPath ?? getFaucetPath(hostname)\n const response = await fetch(`https://${hostname}${pathname}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(postBody),\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- it can be anything\n const body = await response.json()\n if (\n response.ok &&\n response.headers.get('Content-Type')?.startsWith('application/json')\n ) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- It's a FaucetWallet\n const classicAddress = (body as FaucetWallet).account.classicAddress\n return processSuccessfulResponse(\n client,\n classicAddress,\n walletToFund,\n startingBalance,\n )\n }\n return processError(response, body)\n}\n\n// eslint-disable-next-line max-params -- Only used as a helper function, lines inc due to added balance.\nasync function processSuccessfulResponse(\n client: Client,\n classicAddress: string | undefined,\n walletToFund: Wallet,\n startingBalance: number,\n): Promise<{\n wallet: Wallet\n balance: number\n}> {\n if (!classicAddress) {\n return Promise.reject(\n new XRPLFaucetError(`The faucet account is undefined`),\n )\n }\n // Check at regular interval if the address is enabled on the XRPL and funded\n const updatedBalance = await getUpdatedBalance(\n client,\n classicAddress,\n startingBalance,\n )\n\n if (updatedBalance > startingBalance) {\n return {\n wallet: walletToFund,\n balance: updatedBalance,\n }\n }\n throw new XRPLFaucetError(\n `Unable to fund address with faucet after waiting ${\n INTERVAL_SECONDS * MAX_ATTEMPTS\n } seconds`,\n )\n}\n\nasync function processError(response: Response, body): Promise {\n return Promise.reject(\n new XRPLFaucetError(\n `Request failed: ${JSON.stringify({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- json response could be anything\n body: body ?? {},\n contentType: response.headers.get('Content-Type'),\n statusCode: response.status,\n })}`,\n ),\n )\n}\n\n/**\n * Check at regular interval if the address is enabled on the XRPL and funded.\n *\n * @param client - Client.\n * @param address - The account address to check.\n * @param originalBalance - The initial balance before the funding.\n * @returns A Promise boolean.\n */\nasync function getUpdatedBalance(\n client: Client,\n address: string,\n originalBalance: number,\n): Promise {\n return new Promise((resolve, reject) => {\n let attempts = MAX_ATTEMPTS\n // eslint-disable-next-line @typescript-eslint/no-misused-promises -- Not actually misused here, different resolve\n const interval = setInterval(async () => {\n if (attempts < 0) {\n clearInterval(interval)\n resolve(originalBalance)\n } else {\n attempts -= 1\n }\n\n try {\n let newBalance\n try {\n newBalance = Number(await client.getXrpBalance(address))\n } catch {\n /* newBalance remains undefined */\n }\n\n if (newBalance > originalBalance) {\n clearInterval(interval)\n resolve(newBalance)\n }\n } catch (err) {\n clearInterval(interval)\n if (err instanceof Error) {\n reject(\n new XRPLFaucetError(\n `Unable to check if the address ${address} balance has increased. Error: ${err.message}`,\n ),\n )\n }\n reject(err)\n }\n }, INTERVAL_SECONDS * 1000)\n })\n}\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n CLOSE_TIMEOUT: 30000,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n\n //\n // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n // fact that in Node.js versions prior to 13.10.0, the callback for\n // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n // `zlib.reset()` ensures that either the callback is invoked or an error is\n // emitted.\n //\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n\n if (this[kError]) {\n this[kCallback](this[kError]);\n return;\n }\n\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n CLOSE_TIMEOUT,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._closeTimeout = options.closeTimeout;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n * for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n closeTimeout: CLOSE_TIMEOUT,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n websocket._closeTimeout = opts.closeTimeout;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https:\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n websocket._closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written. If instead, the\n // socket is paused, any possible buffered data will be read as a single\n // chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n this._readableState.length !== 0\n ) {\n const chunk = this.read(this._readableState.length);\n\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n * wait for the closing handshake to finish after `websocket.close()` is\n * called\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n closeTimeout: CLOSE_TIMEOUT,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 13 && version !== 8) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n 'Sec-WebSocket-Version': '13, 8'\n });\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n server,\n req,\n socket,\n code,\n message,\n headers\n) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message, headers);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "import WebSocket from 'ws'\n\nexport default class Socket extends WebSocket {\n constructor(...args) {\n super(args[0], args[1], args[2])\n this.setMaxListeners(Infinity)\n }\n}\n\nexport type ClientOptions = WebSocket.ClientOptions\n", "/**\n * Manage all the requests made to the websocket, and their async responses\n * that come in from the WebSocket. Because they come in over the WS connection\n * after-the-fact.\n */\nexport default class ConnectionManager {\n private promisesAwaitingConnection: Array<{\n resolve: (value?: void | PromiseLike) => void\n reject: (value?: Error) => void\n }> = []\n\n /**\n * Resolves all awaiting connections.\n */\n public resolveAllAwaiting(): void {\n this.promisesAwaitingConnection.map(({ resolve }) => resolve())\n this.promisesAwaitingConnection = []\n }\n\n /**\n * Rejects all awaiting connections.\n *\n * @param error - Error to throw in the rejection.\n */\n public rejectAllAwaiting(error: Error): void {\n this.promisesAwaitingConnection.map(({ reject }) => reject(error))\n this.promisesAwaitingConnection = []\n }\n\n /**\n * Await a new connection.\n *\n * @returns A promise for resolving the connection.\n */\n public async awaitConnection(): Promise {\n return new Promise((resolve, reject) => {\n this.promisesAwaitingConnection.push({ resolve, reject })\n })\n }\n}\n", "/*\n * Original code based on \"backo\" - https://github.com/segmentio/backo\n * MIT License - Copyright 2014 Segment.io\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy,\n * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software\n * is furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\ninterface ExponentialBackoffOptions {\n // The min backoff duration.\n min?: number\n // The max backoff duration.\n max?: number\n}\n\nconst DEFAULT_MIN = 100\nconst DEFAULT_MAX = 1000\n\n/**\n * A Back off strategy that increases exponentially. Useful with repeated\n * setTimeout calls over a network (where the destination may be down).\n */\nexport default class ExponentialBackoff {\n private readonly ms: number\n private readonly max: number\n private readonly factor: number = 2\n private numAttempts = 0\n\n /**\n * Constructs an ExponentialBackoff object.\n *\n * @param opts - The options for the object.\n */\n public constructor(opts: ExponentialBackoffOptions = {}) {\n this.ms = opts.min ?? DEFAULT_MIN\n this.max = opts.max ?? DEFAULT_MAX\n }\n\n /**\n * Number of attempts for backoff so far.\n *\n * @returns Number of attempts.\n */\n public get attempts(): number {\n return this.numAttempts\n }\n\n /**\n * Return the backoff duration.\n *\n * @returns The backoff duration in milliseconds.\n */\n public duration(): number {\n const ms = this.ms * this.factor ** this.numAttempts\n this.numAttempts += 1\n return Math.floor(Math.min(ms, this.max))\n }\n\n /**\n * Reset the number of attempts.\n */\n public reset(): void {\n this.numAttempts = 0\n }\n}\n", "import {\n ResponseFormatError,\n RippledError,\n TimeoutError,\n XrplError,\n} from '../errors'\nimport type { APIVersion } from '../models'\nimport { Response, RequestResponseMap } from '../models/methods'\nimport { BaseRequest, ErrorResponse } from '../models/methods/baseMethod'\n\ninterface PromiseEntry {\n resolve: (value: T | PromiseLike) => void\n reject: (value: Error) => void\n timer: ReturnType\n}\n\n/**\n * Manage all the requests made to the websocket, and their async responses\n * that come in from the WebSocket. Responses come in over the WS connection\n * after-the-fact, so this manager will tie that response to resolve the\n * original request.\n */\nexport default class RequestManager {\n private nextId = 0\n private readonly promisesAwaitingResponse = new Map<\n string | number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Necessary and typed wrapper in addPromise method\n PromiseEntry\n >()\n\n /**\n * Adds a promise to the collection of promises awaiting response. Handles typing with generics.\n *\n * @template T The generic type parameter representing the resolved value type.\n * @param newId - The identifier for the new promise.\n * @param timer - The timer associated with the promise.\n * @returns A promise that resolves to the specified generic type.\n */\n public async addPromise<\n R extends BaseRequest,\n T = RequestResponseMap,\n >(newId: string | number, timer: ReturnType): Promise {\n return new Promise((resolve, reject) => {\n this.promisesAwaitingResponse.set(newId, {\n resolve,\n reject,\n timer,\n })\n })\n }\n\n /**\n * Successfully resolves a request.\n *\n * @param id - ID of the request.\n * @param response - Response to return.\n * @throws Error if no existing promise with the given ID.\n */\n public resolve(\n id: string | number,\n response: Partial>,\n ): void {\n const promise = this.promisesAwaitingResponse.get(id)\n if (promise == null) {\n throw new XrplError(`No existing promise with id ${id}`, {\n type: 'resolve',\n response,\n })\n }\n clearTimeout(promise.timer)\n promise.resolve(response)\n this.deletePromise(id)\n }\n\n /**\n * Rejects a request.\n *\n * @param id - ID of the request.\n * @param error - Error to throw with the reject.\n * @throws Error if no existing promise with the given ID.\n */\n public reject(id: string | number, error: Error): void {\n const promise = this.promisesAwaitingResponse.get(id)\n if (promise == null) {\n throw new XrplError(`No existing promise with id ${id}`, {\n type: 'reject',\n error,\n })\n }\n clearTimeout(promise.timer)\n // TODO: figure out how to have a better stack trace for an error\n promise.reject(error)\n this.deletePromise(id)\n }\n\n /**\n * Reject all pending requests.\n *\n * @param error - Error to throw with the reject.\n */\n public rejectAll(error: Error): void {\n this.promisesAwaitingResponse.forEach((_promise, id, _map) => {\n this.reject(id, error)\n this.deletePromise(id)\n })\n }\n\n /**\n * Creates a new WebSocket request. This sets up a timeout timer to catch\n * hung responses, and a promise that will resolve with the response once\n * the response is seen & handled.\n *\n * @param request - Request to create.\n * @param timeout - Timeout length to catch hung responses.\n * @returns Request ID, new request form, and the promise for resolving the request.\n * @throws XrplError if request with the same ID is already pending.\n */\n public createRequest<\n R extends BaseRequest,\n T = RequestResponseMap,\n >(request: R, timeout: number): [string | number, string, Promise] {\n let newId: string | number\n if (request.id == null) {\n newId = this.nextId\n this.nextId += 1\n } else {\n newId = request.id\n }\n const newRequest = JSON.stringify({ ...request, id: newId })\n // Typing required for Jest running in browser\n const timer: ReturnType = setTimeout(() => {\n this.reject(\n newId,\n new TimeoutError(\n `Timeout for request: ${JSON.stringify(request)} with id ${newId}`,\n request,\n ),\n )\n }, timeout)\n /*\n * Node.js won't exit if a timer is still running, so we tell Node to ignore.\n * (Node will still wait for the request to complete).\n */\n // The following type assertions are required to get this code to pass in browser environments\n // where setTimeout has a different type\n // eslint-disable-next-line max-len -- Necessary to disable both rules.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access -- Reason above.\n if ((timer as unknown as any).unref) {\n // eslint-disable-next-line max-len -- Necessary to disable both rules.\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -- Reason above.\n ;(timer as unknown as any).unref()\n }\n if (this.promisesAwaitingResponse.has(newId)) {\n clearTimeout(timer)\n throw new XrplError(\n `Response with id '${newId}' is already pending`,\n request,\n )\n }\n const newPromise = new Promise((resolve, reject) => {\n this.promisesAwaitingResponse.set(newId, {\n resolve,\n reject,\n timer,\n })\n })\n\n return [newId, newRequest, newPromise]\n }\n\n /**\n * Handle a \"response\". Responses match to the earlier request handlers,\n * and resolve/reject based on the data received.\n *\n * @param response - The response to handle.\n * @throws ResponseFormatError if the response format is invalid, RippledError if rippled returns an error.\n */\n // eslint-disable-next-line complexity -- handling a response is complex\n public handleResponse(\n response: Partial | ErrorResponse>,\n ): void {\n if (\n response.id == null ||\n !(typeof response.id === 'string' || typeof response.id === 'number')\n ) {\n throw new ResponseFormatError('valid id not found in response', response)\n }\n if (!this.promisesAwaitingResponse.has(response.id)) {\n return\n }\n if (response.status == null) {\n const error = new ResponseFormatError('Response has no status')\n this.reject(response.id, error)\n }\n if (response.status === 'error') {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We know this must be true\n const errorResponse = response as Partial\n const error = new RippledError(\n errorResponse.error_message ??\n errorResponse.error_exception ??\n errorResponse.error,\n errorResponse,\n )\n this.reject(response.id, error)\n return\n }\n if (response.status !== 'success') {\n const error = new ResponseFormatError(\n `unrecognized response.status: ${response.status ?? ''}`,\n response,\n )\n this.reject(response.id, error)\n return\n }\n // status no longer needed because error is thrown if status is not \"success\"\n delete response.status\n this.resolve(response.id, response)\n }\n\n /**\n * Delete a promise after it has been returned.\n *\n * @param id - ID of the request.\n */\n private deletePromise(id: string | number): void {\n this.promisesAwaitingResponse.delete(id)\n }\n}\n", "/* eslint-disable max-lines -- Connection is a large file w/ lots of imports/exports */\nimport type { Agent } from 'http'\n\nimport { bytesToHex, hexToString } from '@xrplf/isomorphic/utils'\nimport WebSocket, { ClientOptions } from '@xrplf/isomorphic/ws'\nimport { EventEmitter } from 'eventemitter3'\n\nimport {\n DisconnectedError,\n NotConnectedError,\n ConnectionError,\n XrplError,\n} from '../errors'\nimport type { APIVersion, RequestResponseMap } from '../models'\nimport { BaseRequest } from '../models/methods/baseMethod'\n\nimport ConnectionManager from './ConnectionManager'\nimport ExponentialBackoff from './ExponentialBackoff'\nimport RequestManager from './RequestManager'\n\nconst SECONDS_PER_MINUTE = 60\nconst TIMEOUT = 20\nconst CONNECTION_TIMEOUT = 5\n\n/**\n * ConnectionOptions is the configuration for the Connection class.\n */\ninterface ConnectionOptions {\n trace?: boolean | ((id: string, message: string) => void)\n headers?: { [key: string]: string }\n agent?: Agent\n authorization?: string\n connectionTimeout: number\n timeout: number\n}\n\n/**\n * ConnectionUserOptions is the user-provided configuration object. All configuration\n * is optional, so any ConnectionOptions configuration that has a default value is\n * still optional at the point that the user provides it.\n */\nexport type ConnectionUserOptions = Partial\n\n/**\n * Represents an intentionally triggered web-socket disconnect code.\n * WebSocket spec allows 4xxx codes for app/library specific codes.\n * See: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n */\nexport const INTENTIONAL_DISCONNECT_CODE = 4000\n\ntype WebsocketState = 0 | 1 | 2 | 3\n\n/**\n * Create a new websocket given your URL and optional proxy/certificate\n * configuration.\n *\n * @param url - The URL to connect to.\n * @param config - THe configuration options for the WebSocket.\n * @returns A Websocket that fits the given configuration parameters.\n */\nfunction createWebSocket(\n url: string,\n config: ConnectionOptions,\n): WebSocket | null {\n const options: ClientOptions = {\n agent: config.agent,\n }\n if (config.headers) {\n options.headers = config.headers\n }\n if (config.authorization != null) {\n options.headers = {\n ...options.headers,\n Authorization: `Basic ${btoa(config.authorization)}`,\n }\n }\n const websocketOptions = { ...options }\n return new WebSocket(url, websocketOptions)\n}\n\n/**\n * Ws.send(), but promisified.\n *\n * @param ws - Websocket to send with.\n * @param message - Message to send.\n * @returns When the message has been sent.\n */\nasync function websocketSendAsync(\n ws: WebSocket,\n message: string,\n): Promise {\n return new Promise((resolve, reject) => {\n ws.send(message, (error) => {\n if (error) {\n reject(new DisconnectedError(error.message, error))\n } else {\n resolve()\n }\n })\n })\n}\n\n/**\n * The main Connection class. Responsible for connecting to & managing\n * an active WebSocket connection to a XRPL node.\n */\nexport class Connection extends EventEmitter {\n private readonly url: string | undefined\n private ws: WebSocket | null = null\n // Typing necessary for Jest tests running in browser\n private reconnectTimeoutID: null | ReturnType = null\n // Typing necessary for Jest tests running in browser\n private heartbeatIntervalID: null | ReturnType = null\n private readonly retryConnectionBackoff = new ExponentialBackoff({\n min: 100,\n max: SECONDS_PER_MINUTE * 1000,\n })\n\n private readonly config: ConnectionOptions\n private readonly requestManager = new RequestManager()\n private readonly connectionManager = new ConnectionManager()\n\n /**\n * Creates a new Connection object.\n *\n * @param url - URL to connect to.\n * @param options - Options for the Connection object.\n */\n public constructor(url?: string, options: ConnectionUserOptions = {}) {\n super()\n this.url = url\n this.config = {\n timeout: TIMEOUT * 1000,\n connectionTimeout: CONNECTION_TIMEOUT * 1000,\n ...options,\n }\n if (typeof options.trace === 'function') {\n this.trace = options.trace\n } else if (options.trace) {\n // eslint-disable-next-line no-console -- Used for tracing only\n this.trace = console.log\n }\n }\n\n /**\n * Gets the state of the websocket.\n *\n * @returns The Websocket's ready state.\n */\n private get state(): WebsocketState {\n return this.ws ? this.ws.readyState : WebSocket.CLOSED\n }\n\n /**\n * Returns whether the server should be connected.\n *\n * @returns Whether the server should be connected.\n */\n private get shouldBeConnected(): boolean {\n return this.ws !== null\n }\n\n /**\n * Returns whether the websocket is connected.\n *\n * @returns Whether the websocket connection is open.\n */\n public isConnected(): boolean {\n return this.state === WebSocket.OPEN\n }\n\n /**\n * Connects the websocket to the provided URL.\n *\n * @returns When the websocket is connected.\n * @throws ConnectionError if there is a connection error, RippleError if there is already a WebSocket in existence.\n */\n // eslint-disable-next-line max-lines-per-function -- Necessary\n public async connect(): Promise {\n if (this.isConnected()) {\n return Promise.resolve()\n }\n if (this.state === WebSocket.CONNECTING) {\n return this.connectionManager.awaitConnection()\n }\n if (!this.url) {\n return Promise.reject(\n new ConnectionError('Cannot connect because no server was specified'),\n )\n }\n if (this.ws != null) {\n return Promise.reject(\n new XrplError('Websocket connection never cleaned up.', {\n state: this.state,\n }),\n )\n }\n\n // Create the connection timeout, in case the connection hangs longer than expected.\n const connectionTimeoutID: ReturnType = setTimeout(\n () => {\n this.onConnectionFailed(\n new ConnectionError(\n `Error: connect() timed out after ${this.config.connectionTimeout} ms. If your internet connection is working, the ` +\n `rippled server may be blocked or inaccessible. You can also try setting the 'connectionTimeout' option in the Client constructor.`,\n ),\n )\n },\n this.config.connectionTimeout,\n )\n // Connection listeners: these stay attached only until a connection is done/open.\n this.ws = createWebSocket(this.url, this.config)\n\n if (this.ws == null) {\n throw new XrplError('Connect: created null websocket')\n }\n\n this.ws.on('error', (error) => this.onConnectionFailed(error))\n this.ws.on('error', () => clearTimeout(connectionTimeoutID))\n this.ws.on('close', (reason) => this.onConnectionFailed(reason))\n this.ws.on('close', () => clearTimeout(connectionTimeoutID))\n this.ws.once('open', () => {\n void this.onceOpen(connectionTimeoutID)\n })\n return this.connectionManager.awaitConnection()\n }\n\n /**\n * Disconnect the websocket connection.\n * We never expect this method to reject. Even on \"bad\" disconnects, the websocket\n * should still successfully close with the relevant error code returned.\n * See https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent for the full list.\n * If no open websocket connection exists, resolve with no code (`undefined`).\n *\n * @returns A promise containing either `undefined` or a disconnected code, that resolves when the connection is destroyed.\n */\n public async disconnect(): Promise {\n this.clearHeartbeatInterval()\n if (this.reconnectTimeoutID !== null) {\n clearTimeout(this.reconnectTimeoutID)\n this.reconnectTimeoutID = null\n }\n if (this.state === WebSocket.CLOSED) {\n return Promise.resolve(undefined)\n }\n if (this.ws == null) {\n return Promise.resolve(undefined)\n }\n\n return new Promise((resolve) => {\n if (this.ws == null) {\n resolve(undefined)\n }\n if (this.ws != null) {\n this.ws.once('close', (code) => resolve(code))\n }\n /*\n * Connection already has a disconnect handler for the disconnect logic.\n * Just close the websocket manually (with our \"intentional\" code) to\n * trigger that.\n */\n if (this.ws != null && this.state !== WebSocket.CLOSING) {\n this.ws.close(INTENTIONAL_DISCONNECT_CODE)\n }\n })\n }\n\n /**\n * Disconnect the websocket, then connect again.\n *\n */\n public async reconnect(): Promise {\n /*\n * NOTE: We currently have a \"reconnecting\" event, but that only triggers\n * through an unexpected connection retry logic.\n * See: https://github.com/XRPLF/xrpl.js/pull/1101#issuecomment-565360423\n */\n this.emit('reconnect')\n await this.disconnect()\n await this.connect()\n }\n\n /**\n * Sends a request to the rippled server.\n *\n * @param request - The request to send to the server.\n * @param timeout - How long the Connection instance should wait before assuming that there will not be a response.\n * @returns The response from the rippled server.\n * @throws NotConnectedError if the Connection isn't connected to a server.\n */\n public async request<\n R extends BaseRequest,\n T = RequestResponseMap,\n >(request: R, timeout?: number): Promise {\n if (!this.shouldBeConnected || this.ws == null) {\n throw new NotConnectedError(JSON.stringify(request), request)\n }\n const [id, message, responsePromise] = this.requestManager.createRequest<\n R,\n T\n >(request, timeout ?? this.config.timeout)\n this.trace('send', message)\n websocketSendAsync(this.ws, message).catch((error) => {\n try {\n this.requestManager.reject(id, error)\n } catch (err) {\n if (err instanceof XrplError) {\n this.trace(\n 'send',\n `send errored after connection was closed: ${err.toString()}`,\n )\n } else {\n this.trace('send', String(err))\n }\n }\n })\n\n return responsePromise\n }\n\n /**\n * Get the Websocket connection URL.\n *\n * @returns The Websocket connection URL.\n */\n public getUrl(): string {\n return this.url ?? ''\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function, class-methods-use-this -- Does nothing on default\n public readonly trace: (id: string, message: string) => void = () => {}\n\n /**\n * Handler for when messages are received from the server.\n *\n * @param message - The message received from the server.\n */\n private onMessage(message): void {\n this.trace('receive', message)\n let data: Record\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Must be a JSON dictionary\n data = JSON.parse(message)\n } catch (error) {\n if (error instanceof Error) {\n this.emit('error', 'badMessage', error.message, message)\n }\n return\n }\n if (data.type == null && data.error) {\n // e.g. slowDown\n this.emit('error', data.error, data.error_message, data)\n return\n }\n if (data.type) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Should be true\n this.emit(data.type as string, data)\n }\n if (data.type === 'response') {\n try {\n this.requestManager.handleResponse(data)\n } catch (error) {\n if (error instanceof Error) {\n this.emit('error', 'badMessage', error.message, message)\n } else {\n this.emit('error', 'badMessage', error, error)\n }\n }\n }\n }\n\n /**\n * Handler for what to do once the connection to the server is open.\n *\n * @param connectionTimeoutID - Timeout in case the connection hangs longer than expected.\n * @returns A promise that resolves to void when the connection is fully established.\n * @throws Error if the websocket initialized is somehow null.\n */\n // eslint-disable-next-line max-lines-per-function -- Many error code conditionals to check.\n private async onceOpen(\n connectionTimeoutID: ReturnType,\n ): Promise {\n if (this.ws == null) {\n throw new XrplError('onceOpen: ws is null')\n }\n\n // Once the connection completes successfully, remove all old listeners\n this.ws.removeAllListeners()\n clearTimeout(connectionTimeoutID)\n // Add new, long-term connected listeners for messages and errors\n this.ws.on('message', (message: string) => this.onMessage(message))\n this.ws.on('error', (error) =>\n this.emit('error', 'websocket', error.message, error),\n )\n // Handle a closed connection: reconnect if it was unexpected\n this.ws.once('close', (code?: number, reason?: Uint8Array) => {\n if (this.ws == null) {\n throw new XrplError('onceClose: ws is null')\n }\n\n this.clearHeartbeatInterval()\n this.requestManager.rejectAll(\n new DisconnectedError(\n `websocket was closed, ${\n reason ? hexToString(bytesToHex(reason)) : ''\n }`,\n ),\n )\n this.ws.removeAllListeners()\n this.ws = null\n\n if (code === undefined) {\n // Useful to keep this code for debugging purposes.\n // const reasonText = reason ? reason.toString() : 'undefined'\n // // eslint-disable-next-line no-console -- The error is helpful for debugging.\n // console.error(\n // `Disconnected but the disconnect code was undefined (The given reason was ${reasonText}).` +\n // `This could be caused by an exception being thrown during a 'connect' callback. ` +\n // `Disconnecting with code 1011 to indicate an internal error has occurred.`,\n // )\n\n /*\n * Error code 1011 represents an Internal Error according to\n * https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/code\n */\n const internalErrorCode = 1011\n this.emit('disconnected', internalErrorCode)\n } else {\n this.emit('disconnected', code)\n }\n\n /*\n * If this wasn't a manual disconnect, then lets reconnect ASAP.\n * Code can be undefined if there's an exception while connecting.\n */\n if (code !== INTENTIONAL_DISCONNECT_CODE && code !== undefined) {\n this.intentionalDisconnect()\n }\n })\n // Finalize the connection and resolve all awaiting connect() requests\n try {\n this.retryConnectionBackoff.reset()\n this.startHeartbeatInterval()\n this.connectionManager.resolveAllAwaiting()\n this.emit('connected')\n } catch (error) {\n if (error instanceof Error) {\n this.connectionManager.rejectAllAwaiting(error)\n // Ignore this error, propagate the root cause.\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- Need empty catch\n await this.disconnect().catch(() => {})\n }\n }\n }\n\n private intentionalDisconnect(): void {\n const retryTimeout = this.retryConnectionBackoff.duration()\n this.trace('reconnect', `Retrying connection in ${retryTimeout}ms.`)\n this.emit('reconnecting', this.retryConnectionBackoff.attempts)\n /*\n * Start the reconnect timeout, but set it to `this.reconnectTimeoutID`\n * so that we can cancel one in-progress on disconnect.\n */\n this.reconnectTimeoutID = setTimeout(() => {\n this.reconnect().catch((error: Error) => {\n this.emit('error', 'reconnect', error.message, error)\n })\n }, retryTimeout)\n }\n\n /**\n * Clears the heartbeat connection interval.\n */\n private clearHeartbeatInterval(): void {\n if (this.heartbeatIntervalID) {\n clearInterval(this.heartbeatIntervalID)\n }\n }\n\n /**\n * Starts a heartbeat to check the connection with the server.\n *\n */\n private startHeartbeatInterval(): void {\n this.clearHeartbeatInterval()\n this.heartbeatIntervalID = setInterval(() => {\n void this.heartbeat()\n }, this.config.timeout)\n }\n\n /**\n * A heartbeat is just a \"ping\" command, sent on an interval.\n * If this succeeds, we're good. If it fails, disconnect so that the consumer can reconnect, if desired.\n *\n * @returns A Promise that resolves to void when the heartbeat returns successfully.\n */\n private async heartbeat(): Promise {\n this.request({ command: 'ping' }).catch(async () => {\n return this.reconnect().catch((error: Error) => {\n this.emit('error', 'reconnect', error.message, error)\n })\n })\n }\n\n /**\n * Process a failed connection.\n *\n * @param errorOrCode - (Optional) Error or code for connection failure.\n */\n private onConnectionFailed(errorOrCode: Error | number | null): void {\n if (this.ws) {\n this.ws.removeAllListeners()\n this.ws.on('error', () => {\n /*\n * Correctly listen for -- but ignore -- any future errors: If you\n * don't have a listener on \"error\" node would log a warning on error.\n */\n })\n this.ws.close()\n this.ws = null\n }\n if (typeof errorOrCode === 'number') {\n this.connectionManager.rejectAllAwaiting(\n new NotConnectedError(`Connection failed with code ${errorOrCode}.`, {\n code: errorOrCode,\n }),\n )\n } else if (errorOrCode?.message) {\n this.connectionManager.rejectAllAwaiting(\n new NotConnectedError(errorOrCode.message, errorOrCode),\n )\n } else {\n this.connectionManager.rejectAllAwaiting(\n new NotConnectedError('Connection failed.'),\n )\n }\n }\n}\n", "import BigNumber from 'bignumber.js'\nimport { decode } from 'ripple-binary-codec'\n\nimport type {\n TransactionEntryResponse,\n TransactionStream,\n TransactionV1Stream,\n TxResponse,\n} from '..'\nimport type {\n Amount,\n IssuedCurrency,\n APIVersion,\n DEFAULT_API_VERSION,\n MPTAmount,\n} from '../models/common'\nimport type {\n AccountTxTransaction,\n RequestResponseMap,\n} from '../models/methods'\nimport { AccountTxVersionResponseMap } from '../models/methods/accountTx'\nimport { BaseRequest, BaseResponse } from '../models/methods/baseMethod'\nimport { PaymentFlags, Transaction, isMPTAmount } from '../models/transactions'\nimport type { TransactionMetadata } from '../models/transactions/metadata'\nimport { isFlagEnabled } from '../models/utils'\n\nconst WARN_PARTIAL_PAYMENT_CODE = 2001\n\n/* eslint-disable complexity -- check different token types */\n/* eslint-disable @typescript-eslint/consistent-type-assertions -- known currency type */\nfunction amountsEqual(\n amt1: Amount | MPTAmount,\n amt2: Amount | MPTAmount,\n): boolean {\n // Compare XRP\n if (typeof amt1 === 'string' && typeof amt2 === 'string') {\n return amt1 === amt2\n }\n\n if (typeof amt1 === 'string' || typeof amt2 === 'string') {\n return false\n }\n\n // Compare MPTs\n if (isMPTAmount(amt1) && isMPTAmount(amt2)) {\n const aValue = new BigNumber(amt1.value)\n const bValue = new BigNumber(amt2.value)\n\n return (\n amt1.mpt_issuance_id === amt2.mpt_issuance_id && aValue.isEqualTo(bValue)\n )\n }\n\n if (isMPTAmount(amt1) || isMPTAmount(amt2)) {\n return false\n }\n\n // Compare issued currency (IOU)\n const aValue = new BigNumber(amt1.value)\n const bValue = new BigNumber(amt2.value)\n\n return (\n (amt1 as IssuedCurrency).currency === (amt2 as IssuedCurrency).currency &&\n (amt1 as IssuedCurrency).issuer === (amt2 as IssuedCurrency).issuer &&\n aValue.isEqualTo(bValue)\n )\n}\n/* eslint-enable complexity */\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n\n/* eslint-disable complexity -- required here for multiple checks */\nfunction isPartialPayment(\n tx?: Transaction,\n metadata?: TransactionMetadata | string,\n): boolean {\n if (tx == null || metadata == null || tx.TransactionType !== 'Payment') {\n return false\n }\n\n let meta = metadata\n if (typeof meta === 'string') {\n if (meta === 'unavailable') {\n return false\n }\n\n /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- binary-codec typing */\n meta = decode(meta) as unknown as TransactionMetadata\n }\n\n const tfPartial =\n typeof tx.Flags === 'number'\n ? isFlagEnabled(tx.Flags, PaymentFlags.tfPartialPayment)\n : tx.Flags?.tfPartialPayment\n\n if (!tfPartial) {\n return false\n }\n\n const delivered = meta.delivered_amount\n\n const amount = tx.DeliverMax ?? tx.Amount\n\n if (delivered === undefined) {\n return false\n }\n\n return !amountsEqual(delivered, amount)\n}\n/* eslint-enable complexity */\n\nfunction txHasPartialPayment(response: TxResponse): boolean {\n return isPartialPayment(response.result.tx_json, response.result.meta)\n}\n\nfunction txEntryHasPartialPayment(response: TransactionEntryResponse): boolean {\n return isPartialPayment(response.result.tx_json, response.result.metadata)\n}\n\nfunction accountTxHasPartialPayment<\n Version extends APIVersion = typeof DEFAULT_API_VERSION,\n>(response: AccountTxVersionResponseMap): boolean {\n const { transactions } = response.result\n const foo = transactions.some((tx) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- required to check API version model\n if (tx.tx_json != null) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- use API v2 model\n const transaction = tx as AccountTxTransaction\n return isPartialPayment(transaction.tx_json, transaction.meta)\n }\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- use API v1 model\n const transaction = tx as AccountTxTransaction<1>\n return isPartialPayment(transaction.tx, transaction.meta)\n })\n return foo\n}\n\nfunction hasPartialPayment<\n R extends BaseRequest,\n V extends APIVersion = typeof DEFAULT_API_VERSION,\n T = RequestResponseMap,\n>(command: string, response: T): boolean {\n /* eslint-disable @typescript-eslint/consistent-type-assertions -- Request type is known at runtime from command */\n switch (command) {\n case 'tx':\n return txHasPartialPayment(response as TxResponse)\n case 'transaction_entry':\n return txEntryHasPartialPayment(response as TransactionEntryResponse)\n case 'account_tx':\n return accountTxHasPartialPayment(\n response as AccountTxVersionResponseMap,\n )\n default:\n return false\n }\n /* eslint-enable @typescript-eslint/consistent-type-assertions */\n}\n\n/**\n * Checks a response for a partial payment.\n *\n * @param command - Command from the request, tells us what response to expect.\n * @param response - Response to check for a partial payment.\n */\nexport function handlePartialPayment<\n R extends BaseRequest,\n T = RequestResponseMap,\n>(command: string, response: T): void {\n if (hasPartialPayment(command, response)) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- We are checking dynamically and safely.\n const warnings = (response as BaseResponse).warnings ?? []\n\n const warning = {\n id: WARN_PARTIAL_PAYMENT_CODE,\n message: 'This response contains a Partial Payment',\n }\n\n warnings.push(warning)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- We are checking dynamically and safely.\n // @ts-expect-error -- We are checking dynamically and safely.\n response.warnings = warnings\n }\n}\n\n/**\n * Check a transaction from a subscription stream for partial payment.\n *\n * @param stream - Stream Transaction to check for partial payment.\n * @param log - The method used for logging by the connection (to report the partial payment).\n */\nexport function handleStreamPartialPayment(\n stream: TransactionStream | TransactionV1Stream,\n log: (id: string, message: string) => void,\n): void {\n if (isPartialPayment(stream.tx_json ?? stream.transaction, stream.meta)) {\n const warnings = stream.warnings ?? []\n\n const warning = {\n id: WARN_PARTIAL_PAYMENT_CODE,\n message: 'This response contains a Partial Payment',\n }\n\n warnings.push(warning)\n\n /* eslint-disable-next-line no-param-reassign -- Handles the case where there are no warnings */\n stream.warnings = warnings\n\n log('Partial payment received', JSON.stringify(stream))\n }\n}\n", "/* eslint-disable jsdoc/require-jsdoc -- Request has many aliases, but they don't need unique docs */\n\n/* eslint-disable max-lines -- Client is a large file w/ lots of imports/exports */\nimport { EventEmitter } from 'eventemitter3'\n\nimport {\n RippledError,\n NotFoundError,\n ValidationError,\n XrplError,\n} from '../errors'\nimport {\n APIVersion,\n LedgerIndex,\n Balance,\n DEFAULT_API_VERSION,\n} from '../models/common'\nimport {\n Request,\n // account methods\n AccountChannelsRequest,\n AccountChannelsResponse,\n AccountInfoRequest,\n AccountLinesRequest,\n AccountLinesResponse,\n AccountObjectsRequest,\n AccountObjectsResponse,\n AccountOffersRequest,\n AccountOffersResponse,\n AccountTxRequest,\n AccountTxResponse,\n // ledger methods\n LedgerDataRequest,\n LedgerDataResponse,\n TxResponse,\n} from '../models/methods'\nimport type {\n RequestResponseMap,\n RequestAllResponseMap,\n MarkerRequest,\n MarkerResponse,\n SubmitResponse,\n SimulateRequest,\n} from '../models/methods'\nimport type { BookOffer, BookOfferCurrency } from '../models/methods/bookOffers'\nimport {\n SimulateBinaryResponse,\n SimulateJsonResponse,\n} from '../models/methods/simulate'\nimport type {\n EventTypes,\n OnEventToListenerMap,\n} from '../models/methods/subscribe'\nimport type { SubmittableTransaction } from '../models/transactions'\nimport { convertTxFlagsToNumber } from '../models/utils/flags'\nimport {\n ensureClassicAddress,\n submitRequest,\n getSignedTx,\n getLastLedgerSequence,\n waitForFinalTransactionOutcome,\n} from '../sugar'\nimport {\n setValidAddresses,\n setNextValidSequenceNumber,\n setLatestValidatedLedgerSequence,\n checkAccountDeleteBlockers,\n txNeedsNetworkID,\n autofillBatchTxn,\n handleDeliverMax,\n getTransactionFee,\n} from '../sugar/autofill'\nimport { formatBalances } from '../sugar/balances'\nimport {\n validateOrderbookOptions,\n createBookOffersRequest,\n requestAllOffers,\n reverseRequest,\n extractOffers,\n combineOrders,\n separateBuySellOrders,\n sortAndLimitOffers,\n} from '../sugar/getOrderbook'\nimport { dropsToXrp, hashes, isValidClassicAddress } from '../utils'\nimport { Wallet } from '../Wallet'\nimport {\n type FaucetRequestBody,\n FundingOptions,\n requestFunding,\n} from '../Wallet/fundWallet'\n\nimport {\n Connection,\n ConnectionUserOptions,\n INTENTIONAL_DISCONNECT_CODE,\n} from './connection'\nimport {\n handlePartialPayment,\n handleStreamPartialPayment,\n} from './partialPayment'\n\nexport interface ClientOptions extends ConnectionUserOptions {\n /**\n * Multiplication factor to multiply estimated fee by to provide a cushion in case the\n * required fee rises during submission of a transaction. Defaults to 1.2.\n *\n * @category Fee\n */\n feeCushion?: number\n /**\n * Maximum transaction cost to allow, in decimal XRP. Must be a string-encoded\n * number. Defaults to '2'.\n *\n * @category Fee\n */\n maxFeeXRP?: string\n /**\n * Duration to wait for a request to timeout.\n */\n timeout?: number\n}\n\n// Make sure to update both this and `RequestNextPageReturnMap` at the same time\ntype RequestNextPageType =\n | AccountChannelsRequest\n | AccountLinesRequest\n | AccountObjectsRequest\n | AccountOffersRequest\n | AccountTxRequest\n | LedgerDataRequest\n\ntype RequestNextPageReturnMap = T extends AccountChannelsRequest\n ? AccountChannelsResponse\n : T extends AccountLinesRequest\n ? AccountLinesResponse\n : T extends AccountObjectsRequest\n ? AccountObjectsResponse\n : T extends AccountOffersRequest\n ? AccountOffersResponse\n : T extends AccountTxRequest\n ? AccountTxResponse\n : T extends LedgerDataRequest\n ? LedgerDataResponse\n : never\n\n/**\n * Get the response key / property name that contains the listed data for a\n * command. This varies from command to command, but we need to know it to\n * properly count across many requests.\n *\n * @param command - The rippled request command.\n * @returns The property key corresponding to the command.\n */\nfunction getCollectKeyFromCommand(command: string): string | null {\n switch (command) {\n case 'account_channels':\n return 'channels'\n case 'account_lines':\n return 'lines'\n case 'account_objects':\n return 'account_objects'\n case 'account_tx':\n return 'transactions'\n case 'account_offers':\n case 'book_offers':\n return 'offers'\n case 'ledger_data':\n return 'state'\n default:\n return null\n }\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n if (min > max) {\n throw new Error('Illegal clamp bounds')\n }\n return Math.min(Math.max(value, min), max)\n}\n\nconst DEFAULT_FEE_CUSHION = 1.2\nconst DEFAULT_MAX_FEE_XRP = '2'\n\nconst MIN_LIMIT = 10\nconst MAX_LIMIT = 400\n\nconst NORMAL_DISCONNECT_CODE = 1000\n\n/**\n * Client for interacting with rippled servers.\n *\n * @category Clients\n */\nclass Client extends EventEmitter {\n /*\n * Underlying connection to rippled.\n */\n public readonly connection: Connection\n\n /**\n * Factor to multiply estimated fee by to provide a cushion in case the\n * required fee rises during submission of a transaction. Defaults to 1.2.\n *\n * @category Fee\n */\n public readonly feeCushion: number\n\n /**\n * Maximum transaction cost to allow, in decimal XRP. Must be a string-encoded\n * number. Defaults to '2'.\n *\n * @category Fee\n */\n public readonly maxFeeXRP: string\n\n /**\n * Network ID of the server this client is connected to\n *\n */\n public networkID: number | undefined\n\n /**\n * Rippled Version used by the server this client is connected to\n *\n */\n public buildVersion: string | undefined\n\n /**\n * API Version used by the server this client is connected to\n *\n */\n public apiVersion: APIVersion = DEFAULT_API_VERSION\n\n /**\n * Creates a new Client with a websocket connection to a rippled server.\n *\n * @param server - URL of the server to connect to.\n * @param options - Options for client settings.\n * @category Constructor\n *\n * @example\n * ```ts\n * import { Client } from \"xrpl\"\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * ```\n */\n /* eslint-disable max-lines-per-function -- the constructor requires more lines to implement the logic */\n public constructor(server: string, options: ClientOptions = {}) {\n super()\n if (typeof server !== 'string' || !/wss?(?:\\+unix)?:\\/\\//u.exec(server)) {\n throw new ValidationError(\n 'server URI must start with `wss://`, `ws://`, `wss+unix://`, or `ws+unix://`.',\n )\n }\n\n this.feeCushion = options.feeCushion ?? DEFAULT_FEE_CUSHION\n this.maxFeeXRP = options.maxFeeXRP ?? DEFAULT_MAX_FEE_XRP\n\n this.connection = new Connection(server, options)\n\n this.connection.on('error', (errorCode, errorMessage, data) => {\n this.emit('error', errorCode, errorMessage, data)\n })\n\n this.connection.on('reconnect', () => {\n this.connection.on('connected', () => this.emit('connected'))\n })\n\n this.connection.on('disconnected', (code: number) => {\n let finalCode = code\n /*\n * 4000: Connection uses a 4000 code internally to indicate a manual disconnect/close\n * Since 4000 is a normal disconnect reason, we convert this to the standard exit code 1000\n */\n if (finalCode === INTENTIONAL_DISCONNECT_CODE) {\n finalCode = NORMAL_DISCONNECT_CODE\n }\n this.emit('disconnected', finalCode)\n })\n\n this.connection.on('ledgerClosed', (ledger) => {\n this.emit('ledgerClosed', ledger)\n })\n\n this.connection.on('transaction', (tx) => {\n // mutates `tx` to add warnings\n handleStreamPartialPayment(tx, this.connection.trace)\n this.emit('transaction', tx)\n })\n\n this.connection.on('validationReceived', (validation) => {\n this.emit('validationReceived', validation)\n })\n\n this.connection.on('manifestReceived', (manifest) => {\n this.emit('manifestReceived', manifest)\n })\n\n this.connection.on('peerStatusChange', (status) => {\n this.emit('peerStatusChange', status)\n })\n\n this.connection.on('consensusPhase', (consensus) => {\n this.emit('consensusPhase', consensus)\n })\n\n this.connection.on('path_find', (path) => {\n this.emit('path_find', path)\n })\n }\n /* eslint-enable max-lines-per-function */\n\n /**\n * Get the url that the client is connected to.\n *\n * @returns The URL of the server this client is connected to.\n * @category Network\n */\n public get url(): string {\n return this.connection.getUrl()\n }\n\n /**\n * Makes a request to the client with the given command and\n * additional request body parameters.\n *\n * @category Network\n * @param req - Request to send to the server.\n * @returns The response from the server.\n *\n * @example\n * ```ts\n * const response = await client.request({\n * command: 'account_info',\n * account: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',\n * })\n * console.log(response)\n * ```\n */\n public async request<\n R extends Request,\n V extends APIVersion = typeof DEFAULT_API_VERSION,\n T = RequestResponseMap,\n >(req: R): Promise {\n const request = {\n ...req,\n account:\n typeof req.account === 'string'\n ? ensureClassicAddress(req.account)\n : undefined,\n api_version: req.api_version ?? this.apiVersion,\n }\n const response = await this.connection.request(request)\n\n // mutates `response` to add warnings\n handlePartialPayment(req.command, response)\n\n return response\n }\n\n /**\n * Requests the next page of data.\n *\n * @category Network\n *\n * @param req - Request to send.\n * @param resp - Response with the marker to use in the request.\n * @returns The response with the next page of data.\n *\n * @example\n * ```ts\n * const response = await client.request({\n * command: 'account_tx',\n * account: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',\n * })\n * console.log(response)\n * const nextResponse = await client.requestNextPage({\n * command: 'account_tx',\n * account: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',\n * },\n * response)\n * console.log(nextResponse)\n * ```\n */\n public async requestNextPage<\n T extends RequestNextPageType,\n U extends RequestNextPageReturnMap,\n >(req: T, resp: U): Promise> {\n if (!resp.result.marker) {\n return Promise.reject(\n new NotFoundError('response does not have a next page'),\n )\n }\n const nextPageRequest = { ...req, marker: resp.result.marker }\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Necessary for overloading\n return this.request(nextPageRequest) as unknown as U\n }\n\n /**\n * Event handler for subscription streams.\n *\n * @category Network\n *\n * @param eventName - Name of the event. Only forwards streams.\n * @param listener - Function to run on event.\n * @returns This, because it inherits from EventEmitter.\n *\n * * @example\n * ```ts\n * const api = new Client('wss://s.altnet.rippletest.net:51233')\n *\n * api.on('transaction', (tx: TransactionStream) => {\n * console.log(\"Received Transaction\")\n * console.log(tx)\n * })\n *\n * await api.connect()\n * const response = await api.request({\n * command: 'subscribe',\n * streams: ['transactions_proposed']\n * })\n * ```\n */\n public on<\n T extends EventTypes,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- needs to be any for overload\n U extends (...args: any[]) => void = OnEventToListenerMap,\n >(eventName: T, listener: U): this {\n return super.on(eventName, listener)\n }\n\n /**\n * Makes multiple paged requests to the client to return a given number of\n * resources. Multiple paged requests will be made until the `limit`\n * number of resources is reached (if no `limit` is provided, a single request\n * will be made).\n *\n * If the command is unknown, an additional `collect` property is required to\n * know which response key contains the array of resources.\n *\n * NOTE: This command is used by existing methods and is not recommended for\n * general use. Instead, use rippled's built-in pagination and make multiple\n * requests as needed.\n *\n * @category Network\n *\n * @param request - The initial request to send to the server.\n * @param collect - (Optional) the param to use to collect the array of resources (only needed if command is unknown).\n * @returns The array of all responses.\n * @throws ValidationError if there is no collection key (either from a known command or for the unknown command).\n *\n * @example\n * // Request all ledger data pages\n * const allResponses = await client.requestAll({ command: 'ledger_data' });\n * console.log(allResponses);\n *\n * @example\n * // Request all transaction data pages\n * const allResponses = await client.requestAll({ command: 'transaction_data' });\n * console.log(allResponses);\n */\n\n public async requestAll<\n T extends MarkerRequest,\n U = RequestAllResponseMap,\n >(request: T, collect?: string): Promise {\n /*\n * The data under collection is keyed based on the command. Fail if command\n * not recognized and collection key not provided.\n */\n const collectKey = collect ?? getCollectKeyFromCommand(request.command)\n if (!collectKey) {\n throw new ValidationError(`no collect key for command ${request.command}`)\n }\n /*\n * If limit is not provided, fetches all data over multiple requests.\n * NOTE: This may return much more than needed. Set limit when possible.\n */\n const countTo: number = request.limit ?? Infinity\n let count = 0\n let marker: unknown = request.marker\n const results: U[] = []\n do {\n const countRemaining = clamp(countTo - count, MIN_LIMIT, MAX_LIMIT)\n const repeatProps = {\n ...request,\n limit: countRemaining,\n marker,\n }\n // eslint-disable-next-line no-await-in-loop -- Necessary for this, it really has to wait\n const singleResponse = await this.connection.request(repeatProps)\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Should be true\n const singleResult = (singleResponse as MarkerResponse).result\n if (!(collectKey in singleResult)) {\n throw new XrplError(`${collectKey} not in result`)\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- Should be true\n const collectedData = singleResult[collectKey]\n marker = singleResult.marker\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Should be true\n results.push(singleResponse as U)\n // Make sure we handle when no data (not even an empty array) is returned.\n if (Array.isArray(collectedData)) {\n count += collectedData.length\n }\n } while (Boolean(marker) && count < countTo)\n return results\n }\n\n /**\n * Get networkID and buildVersion from server_info\n *\n * @returns void\n * @example\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.getServerInfo()\n * console.log(client.networkID)\n * console.log(client.buildVersion)\n * ```\n */\n public async getServerInfo(): Promise {\n try {\n const response = await this.request({\n command: 'server_info',\n })\n this.networkID = response.result.info.network_id ?? undefined\n this.buildVersion = response.result.info.build_version\n } catch (error) {\n // eslint-disable-next-line no-console -- Print the error to console but allows client to be connected.\n console.error(error)\n }\n }\n\n /**\n * Tells the Client instance to connect to its rippled server.\n *\n * @example\n *\n * Client.connect() establishes a connection between a Client object and the server.\n *\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * // do something with the client\n * await client.disconnect()\n * ```\n * If you open a client connection, be sure to close it with `await client.disconnect()`\n * before exiting your application.\n * @returns A promise that resolves with a void value when a connection is established.\n * @category Network\n *\n * @example\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * // do something with the client\n * await client.disconnect()\n * ```\n */\n public async connect(): Promise {\n return this.connection.connect().then(async () => {\n await this.getServerInfo()\n this.emit('connected')\n })\n }\n\n /**\n * Disconnects the XRPL client from the server and cancels all pending requests and subscriptions. Call when\n * you want to disconnect the client from the server, such as when you're finished using the client or when you\n * need to switch to a different server.\n *\n * @example\n *\n * To use the disconnect() method, you first need to create a new Client object and connect it to a server:\n *\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * // do something with the client\n * await client.disconnect()\n * ```\n *\n * @returns A promise that resolves with a void value when a connection is destroyed.\n * @category Network\n */\n public async disconnect(): Promise {\n /*\n * backwards compatibility: connection.disconnect() can return a number, but\n * this method returns nothing. SO we await but don't return any result.\n */\n await this.connection.disconnect()\n }\n\n /**\n * Checks if the Client instance is connected to its rippled server.\n *\n * @returns Whether the client instance is connected.\n * @category Network\n * @example\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * console.log(client.isConnected())\n * // true\n * await client.disconnect()\n * console.log(client.isConnected())\n * // false\n * ```\n */\n public isConnected(): boolean {\n return this.connection.isConnected()\n }\n\n /**\n * Autofills fields in a transaction. This will set `Sequence`, `Fee`,\n * `lastLedgerSequence` according to the current state of the server this Client\n * is connected to. It also converts all X-Addresses to classic addresses and\n * flags interfaces into numbers.\n *\n * @category Core\n *\n * @example\n *\n * ```ts\n * const { Client } = require('xrpl')\n *\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n *\n * async function createAndAutofillTransaction() {\n * const transaction = {\n * TransactionType: 'Payment',\n * Account: 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh',\n * Destination: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',\n * Amount: '10000000' // 10 XRP in drops (1/1,000,000th of an XRP)\n * }\n *\n * try {\n * const autofilledTransaction = await client.autofill(transaction)\n * console.log(autofilledTransaction)\n * } catch (error) {\n * console.error(`Failed to autofill transaction: ${error}`)\n * }\n * }\n *\n * createAndAutofillTransaction()\n * ```\n *\n * Autofill helps fill in fields which should be included in a transaction, but can be determined automatically\n * such as `LastLedgerSequence` and `Fee`. If you override one of the fields `autofill` changes, your explicit\n * values will be used instead. By default, this is done as part of `submit` and `submitAndWait` when you pass\n * in an unsigned transaction along with your wallet to be submitted.\n *\n * @template T\n * @param transaction - A {@link SubmittableTransaction} in JSON format\n * @param signersCount - The expected number of signers for this transaction.\n * Only used for multisigned transactions.\n * @returns The autofilled transaction.\n * @throws ValidationError If Amount and DeliverMax fields are not identical in a Payment Transaction\n */\n public async autofill(\n transaction: T,\n signersCount?: number,\n ): Promise {\n const tx = { ...transaction }\n\n setValidAddresses(tx)\n tx.Flags = convertTxFlagsToNumber(tx)\n\n const promises: Array> = []\n tx.NetworkID ??= txNeedsNetworkID(this) ? this.networkID : undefined\n if (tx.Sequence == null) {\n promises.push(setNextValidSequenceNumber(this, tx))\n }\n if (tx.Fee == null) {\n promises.push(getTransactionFee(this, tx, signersCount))\n }\n if (tx.LastLedgerSequence == null) {\n promises.push(setLatestValidatedLedgerSequence(this, tx))\n }\n if (tx.TransactionType === 'AccountDelete') {\n promises.push(checkAccountDeleteBlockers(this, tx))\n }\n if (tx.TransactionType === 'Batch') {\n promises.push(autofillBatchTxn(this, tx))\n }\n if (tx.TransactionType === 'Payment' && tx.DeliverMax != null) {\n handleDeliverMax(tx)\n }\n\n return Promise.all(promises).then(() => tx)\n }\n\n /**\n * Simulates an unsigned transaction.\n * Steps performed on a transaction:\n * 1. Autofill.\n * 2. Sign & Encode.\n * 3. Submit.\n *\n * @category Core\n *\n * @param transaction - A transaction to autofill, sign & encode, and submit.\n * @param opts - (Optional) Options used to sign and submit a transaction.\n * @param opts.binary - If true, return the metadata in a binary encoding.\n *\n * @returns A promise that contains SimulateResponse.\n * @throws RippledError if the simulate request fails.\n */\n\n public async simulate(\n transaction: SubmittableTransaction | string,\n opts?: {\n // If true, return the binary-encoded representation of the results.\n binary?: Binary\n },\n ): Promise<\n Binary extends true ? SimulateBinaryResponse : SimulateJsonResponse\n > {\n // send request\n const binary = opts?.binary ?? false\n const request: SimulateRequest =\n typeof transaction === 'string'\n ? { command: 'simulate', tx_blob: transaction, binary }\n : { command: 'simulate', tx_json: transaction, binary }\n return this.request(request)\n }\n\n /**\n * Submits a signed/unsigned transaction.\n * Steps performed on a transaction:\n * 1. Autofill.\n * 2. Sign & Encode.\n * 3. Submit.\n *\n * @category Core\n *\n * @param transaction - A transaction to autofill, sign & encode, and submit.\n * @param opts - (Optional) Options used to sign and submit a transaction.\n * @param opts.autofill - If true, autofill a transaction.\n * @param opts.failHard - If true, and the transaction fails locally, do not retry or relay the transaction to other servers.\n * @param opts.wallet - A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.\n *\n * @returns A promise that contains SubmitResponse.\n * @throws RippledError if submit request fails.\n *\n * @example\n * ```ts\n * const { Client, Wallet } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * const wallet = Wallet.generate()\n * const transaction = {\n * TransactionType: 'Payment',\n * Account: wallet.classicAddress,\n * Destination: 'r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59',\n * Amount: '10000000' // 10 XRP in drops (1/1,000,000th of an XRP)\n * }\n * const submitResponse = await client.submit(transaction, { wallet })\n * console.log(submitResponse)\n * ```\n */\n public async submit(\n transaction: SubmittableTransaction | string,\n opts?: {\n // If true, autofill a transaction.\n autofill?: boolean\n // If true, and the transaction fails locally, do not retry or relay the transaction to other servers.\n failHard?: boolean\n // A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.\n wallet?: Wallet\n },\n ): Promise {\n const signedTx = await getSignedTx(this, transaction, opts)\n return submitRequest(this, signedTx, opts?.failHard)\n }\n\n /**\n * Asynchronously submits a transaction and verifies that it has been included in a\n * validated ledger (or has errored/will not be included for some reason).\n * See [Reliable Transaction Submission](https://xrpl.org/reliable-transaction-submission.html).\n *\n * @category Core\n *\n * @example\n *\n * ```ts\n * const { Client, Wallet } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n *\n * async function submitTransaction() {\n * const senderWallet = client.fundWallet()\n * const recipientWallet = client.fundWallet()\n *\n * const transaction = {\n * TransactionType: 'Payment',\n * Account: senderWallet.address,\n * Destination: recipientWallet.address,\n * Amount: '10'\n * }\n *\n * try {\n * await client.submit(signedTransaction, { wallet: senderWallet })\n * console.log(result)\n * } catch (error) {\n * console.error(`Failed to submit transaction: ${error}`)\n * }\n * }\n *\n * submitTransaction()\n * ```\n *\n * In this example we submit a payment transaction between two newly created testnet accounts.\n *\n * Under the hood, `submit` will call `client.autofill` by default, and because we've passed in a `Wallet` it\n * Will also sign the transaction for us before submitting the signed transaction binary blob to the ledger.\n *\n * This is similar to `submit`, which does all of the above, but also waits to see if the transaction has been validated.\n * @param transaction - A transaction to autofill, sign & encode, and submit.\n * @param opts - (Optional) Options used to sign and submit a transaction.\n * @param opts.autofill - If true, autofill a transaction.\n * @param opts.failHard - If true, and the transaction fails locally, do not retry or relay the transaction to other servers.\n * @param opts.wallet - A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.\n * @throws Connection errors: If the `Client` object is unable to establish a connection to the specified WebSocket endpoint,\n * an error will be thrown.\n * @throws Transaction errors: If the submitted transaction is invalid or cannot be included in a validated ledger for any\n * reason, the promise returned by `submitAndWait()` will be rejected with an error. This could include issues with insufficient\n * balance, invalid transaction fields, or other issues specific to the transaction being submitted.\n * @throws Ledger errors: If the ledger being used to submit the transaction is undergoing maintenance or otherwise unavailable,\n * an error will be thrown.\n * @throws Timeout errors: If the transaction takes longer than the specified timeout period to be included in a validated\n * ledger, the promise returned by `submitAndWait()` will be rejected with an error.\n * @returns A promise that contains TxResponse, that will return when the transaction has been validated.\n */\n public async submitAndWait<\n T extends SubmittableTransaction = SubmittableTransaction,\n >(\n transaction: T | string,\n opts?: {\n // If true, autofill a transaction.\n autofill?: boolean\n // If true, and the transaction fails locally, do not retry or relay the transaction to other servers.\n failHard?: boolean\n // A wallet to sign a transaction. It must be provided when submitting an unsigned transaction.\n wallet?: Wallet\n },\n ): Promise> {\n const signedTx = await getSignedTx(this, transaction, opts)\n\n const lastLedger = getLastLedgerSequence(signedTx)\n if (lastLedger == null) {\n throw new ValidationError(\n 'Transaction must contain a LastLedgerSequence value for reliable submission.',\n )\n }\n\n const response = await submitRequest(this, signedTx, opts?.failHard)\n\n if (response.result.engine_result.startsWith('tem')) {\n throw new XrplError(\n `Transaction failed, ${response.result.engine_result}: ${response.result.engine_result_message}`,\n )\n }\n\n const txHash = hashes.hashSignedTx(signedTx)\n return waitForFinalTransactionOutcome(\n this,\n txHash,\n lastLedger,\n response.result.engine_result,\n )\n }\n\n /**\n * Deprecated: Use autofill instead, provided for users familiar with v1\n *\n * @param transaction - A {@link Transaction} in JSON format\n * @param signersCount - The expected number of signers for this transaction.\n * Only used for multisigned transactions.\n * @returns The prepared transaction with required fields autofilled.\n * @deprecated Use autofill instead, provided for users familiar with v1\n */\n public async prepareTransaction(\n transaction: SubmittableTransaction,\n signersCount?: number,\n ): ReturnType {\n return this.autofill(transaction, signersCount)\n }\n\n /**\n * Retrieves the XRP balance of a given account address.\n *\n * @category Abstraction\n *\n * @example\n * ```ts\n * const client = new Client(wss://s.altnet.rippletest.net:51233)\n * await client.connect()\n * const balance = await client.getXrpBalance('rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn')\n * console.log(balance)\n * await client.disconnect()\n * /// '200'\n * ```\n *\n * @param address - The XRP address to retrieve the balance for.\n * @param [options] - Additional options for fetching the balance (optional).\n * @param [options.ledger_hash] - The hash of the ledger to retrieve the balance from (optional).\n * @param [options.ledger_index] - The index of the ledger to retrieve the balance from (optional).\n * @returns A promise that resolves with the XRP balance as a number.\n */\n public async getXrpBalance(\n address: string,\n options: {\n ledger_hash?: string\n ledger_index?: LedgerIndex\n } = {},\n ): Promise {\n const xrpRequest: AccountInfoRequest = {\n command: 'account_info',\n account: address,\n ledger_index: options.ledger_index ?? 'validated',\n ledger_hash: options.ledger_hash,\n }\n const response = await this.request(xrpRequest)\n return dropsToXrp(response.result.account_data.Balance)\n }\n\n /**\n * Get XRP/non-XRP balances for an account.\n *\n * @category Abstraction\n *\n * @example\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n *\n * async function getAccountBalances(address) {\n * try {\n * const options = {\n * ledger_index: 'validated',\n * limit: 10\n * };\n *\n * const balances = await xrplClient.getBalances(address, options);\n *\n * console.log('Account Balances:');\n * balances.forEach((balance) => {\n * console.log(`Currency: ${balance.currency}`);\n * console.log(`Value: ${balance.value}`);\n * console.log(`Issuer: ${balance.issuer}`);\n * console.log('---');\n * });\n * } catch (error) {\n * console.error('Error retrieving account balances:', error);\n * }\n * }\n *\n * const address = 'rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh';\n * await getAccountBalances(address);\n * await client.disconnect();\n * ```\n *\n * @param address - Address of the account to retrieve balances for.\n * @param options - Allows the client to specify a ledger_hash, ledger_index,\n * filter by peer, and/or limit number of balances.\n * @param options.ledger_index - Retrieve the account balances at a given\n * ledger_index.\n * @param options.ledger_hash - Retrieve the account balances at the ledger with\n * a given ledger_hash.\n * @param options.peer - Filter balances by peer.\n * @param options.limit - Limit number of balances to return.\n * @returns An array of XRP/non-XRP balances for the given account.\n */\n /* eslint-disable max-lines-per-function -- getBalances requires more lines to implement logic */\n public async getBalances(\n address: string,\n options: {\n ledger_hash?: string\n ledger_index?: LedgerIndex\n peer?: string\n limit?: number\n } = {},\n ): Promise<\n Array<{ value: string; currency: string; issuer?: string | undefined }>\n > {\n const balances: Balance[] = []\n\n // get XRP balance\n let xrpPromise: Promise = Promise.resolve(0)\n if (!options.peer) {\n xrpPromise = this.getXrpBalance(address, {\n ledger_hash: options.ledger_hash,\n ledger_index: options.ledger_index,\n })\n }\n\n // get non-XRP balances\n const linesRequest: AccountLinesRequest = {\n command: 'account_lines',\n account: address,\n ledger_index: options.ledger_index ?? 'validated',\n ledger_hash: options.ledger_hash,\n peer: options.peer,\n limit: options.limit,\n }\n const linesPromise = this.requestAll(linesRequest)\n\n // combine results\n await Promise.all([xrpPromise, linesPromise]).then(\n ([xrpBalance, linesResponses]) => {\n const accountLinesBalance = linesResponses.flatMap((response) =>\n formatBalances(response.result.lines),\n )\n if (xrpBalance !== 0) {\n balances.push({ currency: 'XRP', value: xrpBalance.toString() })\n }\n balances.push(...accountLinesBalance)\n },\n )\n return balances.slice(0, options.limit)\n }\n /* eslint-enable max-lines-per-function */\n\n /**\n * Fetch orderbook (buy/sell orders) between two currency pairs. This checks both sides of the orderbook\n * by making two `order_book` requests (with the second reversing takerPays and takerGets). Returned offers are\n * not normalized in this function, so either currency could be takerGets or takerPays.\n *\n * @category Abstraction\n *\n * @param currency1 - Specification of one currency involved. (With a currency code and optionally an issuer)\n * @param currency2 - Specification of a second currency involved. (With a currency code and optionally an issuer)\n * @param options - Options allowing the client to specify ledger_index,\n * ledger_hash, filter by taker, and/or limit number of orders.\n * @param options.ledger_index - Retrieve the orderbook at a given ledger_index.\n * @param options.ledger_hash - Retrieve the orderbook at the ledger with a\n * given ledger_hash.\n * @param options.taker - Filter orders by taker.\n * @param options.limit - The limit passed into each book_offers request.\n * Can return more than this due to two calls being made. Defaults to 20.\n * @returns An object containing buy and sell objects.\n */\n\n public async getOrderbook(\n currency1: BookOfferCurrency,\n currency2: BookOfferCurrency,\n options: {\n limit?: number\n ledger_index?: LedgerIndex\n ledger_hash?: string | null\n taker?: string | null\n } = {},\n ): Promise<{\n buy: BookOffer[]\n sell: BookOffer[]\n }> {\n validateOrderbookOptions(options)\n\n const request = createBookOffersRequest(currency1, currency2, options)\n\n const directOfferResults = await requestAllOffers(this, request)\n const reverseOfferResults = await requestAllOffers(\n this,\n reverseRequest(request),\n )\n\n const directOffers = extractOffers(directOfferResults)\n const reverseOffers = extractOffers(reverseOfferResults)\n\n const orders = combineOrders(directOffers, reverseOffers)\n\n const { buy, sell } = separateBuySellOrders(orders)\n\n /*\n * Sort the orders\n * for both buys and sells, lowest quality is closest to mid-market\n * we sort the orders so that earlier orders are closer to mid-market\n */\n return {\n buy: sortAndLimitOffers(buy, options.limit),\n sell: sortAndLimitOffers(sell, options.limit),\n }\n }\n\n /**\n * Returns the index of the most recently validated ledger.\n *\n * @category Abstraction\n *\n * @returns The most recently validated ledger index.\n *\n * @example\n * ```ts\n * const { Client } = require('xrpl')\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * const ledgerIndex = await client.getLedgerIndex()\n * console.log(ledgerIndex)\n * // 884039\n * ```\n */\n public async getLedgerIndex(): Promise {\n const ledgerResponse = await this.request({\n command: 'ledger',\n ledger_index: 'validated',\n })\n return ledgerResponse.result.ledger_index\n }\n\n /**\n * The fundWallet() method is used to send an amount of XRP (usually 1000) to a new (randomly generated)\n * or existing XRP Ledger wallet.\n *\n * @category Faucet\n *\n * @example\n *\n * Example 1: Fund a randomly generated wallet\n * const { Client, Wallet } = require('xrpl')\n *\n * const client = new Client('wss://s.altnet.rippletest.net:51233')\n * await client.connect()\n * const { balance, wallet } = await client.fundWallet()\n *\n * Under the hood, this will use `Wallet.generate()` to create a new random wallet, then ask a testnet faucet\n * To send it XRP on ledger to make it a real account. If successful, this will return the new account balance in XRP\n * Along with the Wallet object to track the keys for that account. If you'd like, you can also re-fill an existing\n * Account by passing in a Wallet you already have.\n * ```ts\n * const api = new xrpl.Client(\"wss://s.altnet.rippletest.net:51233\")\n * await api.connect()\n * const { wallet, balance } = await api.fundWallet()\n * ```\n *\n * Example 2: Fund wallet using a custom faucet host and known wallet address\n *\n * `fundWallet` will try to infer the url of a faucet API from the network your client is connected to.\n * There are hardcoded default faucets for popular test networks like testnet and devnet.\n * However, if you're working with a newer or more obscure network, you may have to specify the faucetHost\n * And faucetPath so `fundWallet` can ask that faucet to fund your wallet.\n *\n * ```ts\n * const newWallet = Wallet.generate()\n * const { balance, wallet } = await client.fundWallet(newWallet, {\n * amount: '10',\n * faucetHost: 'https://custom-faucet.example.com',\n * faucetPath: '/accounts'\n * })\n * console.log(`Sent 10 XRP to wallet: ${address} from the given faucet. Resulting balance: ${balance} XRP`)\n * } catch (error) {\n * console.error(`Failed to fund wallet: ${error}`)\n * }\n * }\n * ```\n *\n * @param wallet - An existing XRPL Wallet to fund. If undefined or null, a new Wallet will be created.\n * @param options - See below.\n * @param options.faucetHost - A custom host for a faucet server. On devnet,\n * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct server automatically. In other environments,\n * or if you would like to customize the faucet host in devnet or testnet,\n * you should provide the host using this option.\n * @param options.faucetPath - A custom path for a faucet server. On devnet,\n * testnet, AMM devnet, and HooksV3 testnet, `fundWallet` will\n * attempt to determine the correct path automatically. In other environments,\n * or if you would like to customize the faucet path in devnet or testnet,\n * you should provide the path using this option.\n * Ex: client.fundWallet(null,{'faucet.altnet.rippletest.net', '/accounts'})\n * specifies a request to 'faucet.altnet.rippletest.net/accounts' to fund a new wallet.\n * @param options.amount - A custom amount to fund, if undefined or null, the default amount will be 1000.\n * @returns A Wallet on the Testnet or Devnet that contains some amount of XRP,\n * and that wallet's balance in XRP.\n * @throws When either Client isn't connected or unable to fund wallet address.\n */\n public async fundWallet(\n this: Client,\n wallet?: Wallet | null,\n options: FundingOptions = {},\n ): Promise<{\n wallet: Wallet\n balance: number\n }> {\n if (!this.isConnected()) {\n throw new RippledError('Client not connected, cannot call faucet')\n }\n const existingWallet = Boolean(wallet)\n\n // Generate a new Wallet if no existing Wallet is provided or its address is invalid to fund\n const walletToFund =\n wallet && isValidClassicAddress(wallet.classicAddress)\n ? wallet\n : Wallet.generate()\n\n // Create the POST request body\n const postBody: FaucetRequestBody = {\n destination: walletToFund.classicAddress,\n xrpAmount: options.amount,\n usageContext: options.usageContext,\n userAgent: 'xrpl.js',\n }\n\n let startingBalance = 0\n if (existingWallet) {\n try {\n startingBalance = Number(\n await this.getXrpBalance(walletToFund.classicAddress),\n )\n } catch {\n /* startingBalance remains what it was previously */\n }\n }\n\n return requestFunding(\n options,\n this,\n startingBalance,\n walletToFund,\n postBody,\n )\n }\n}\n\nexport { Client }\n", "import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The unique id for the Amendments object https://xrpl.org/amendments-object.html#amendments-id-format\n */\nexport const AMENDMENTS_ID =\n '7DB0788C020F02780A673DC74757F23823FA3014C1866E72CC4CD8B226CD6EF4'\n\nexport interface Majority {\n Majority: {\n /** The Amendment ID of the pending amendment. */\n Amendment: string\n /**\n * The `close_time` field of the ledger version where this amendment most\n * recently gained a majority.\n */\n CloseTime: number\n }\n}\n\n/**\n * The Amendments object type contains a list of Amendments that are currently\n * active.\n *\n * @category Ledger Entries\n */\nexport default interface Amendments\n extends BaseLedgerEntry,\n HasOptionalPreviousTxnID {\n LedgerEntryType: 'Amendments'\n /**\n * Array of 256-bit amendment IDs for all currently-enabled amendments. If\n * omitted, there are no enabled amendments.\n */\n Amendments?: string[]\n /**\n * Array of objects describing the status of amendments that have majority\n * support but are not yet enabled. If omitted, there are no pending\n * amendments with majority support.\n */\n Majorities?: Majority[]\n /**\n * A bit-map of boolean flags. No flags are defined for the Amendments object\n * type, so this value is always 0.\n */\n Flags: 0\n}\n", "import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The unique id for the FeeSettings object https://xrpl.org/feesettings.html#feesettings-id-format\n */\nexport const FEE_SETTINGS_ID =\n '4BC50C9B0D8515D3EAAE1E74B29A95804346C491EE1A95BF25E4AAB854A6A651'\n\nexport interface FeeSettingsPreAmendmentFields {\n /** The transaction cost of the \"reference transaction\" in drops of XRP as hexadecimal. */\n BaseFee: string\n /** The BaseFee translated into \"fee units\". */\n ReferenceFeeUnits: number\n /** The base reserve for an account in the XRP Ledger, as drops of XRP. */\n ReserveBase: number\n /** The incremental owner reserve for owning objects, as drops of XRP. */\n ReserveIncrement: number\n}\n\nexport interface FeeSettingsPostAmendmentFields {\n /** The transaction cost of the \"reference transaction\" in drops of XRP as hexadecimal. */\n BaseFeeDrops: string\n /** The base reserve for an account in the XRP Ledger, as drops of XRP. */\n ReserveBaseDrops: string\n /** The incremental owner reserve for owning objects, as drops of XRP. */\n ReserveIncrementDrops: string\n}\n\nexport interface FeeSettingsBase\n extends BaseLedgerEntry,\n HasOptionalPreviousTxnID {\n LedgerEntryType: 'FeeSettings'\n /**\n * A bit-map of boolean flags for this object. No flags are defined for this type.\n */\n Flags: 0\n}\n\n/**\n * The FeeSettings object type contains the current base transaction cost and\n * reserve amounts as determined by fee voting.\n *\n * The fields will be based on the status of the `XRPFees` amendment.\n * - Before: {@link FeeSettingsPreAmendmentFields}\n * - After: {@link FeeSettingsPostAmendmentFields}\n *\n * @interface\n *\n * @category Ledger Entries\n */\ntype FeeSettings = FeeSettingsBase &\n (FeeSettingsPreAmendmentFields | FeeSettingsPostAmendmentFields)\n\nexport default FeeSettings\n", "import { BaseLedgerEntry, HasOptionalPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The unique id for the nUNL object https://xrpl.org/negativeunl.html#negativeunl-id-format\n */\nexport const NEGATIVE_UNL_ID =\n '2E8A59AA9D3B5B186B0B9E0F62E6C02587CA74A4D778938E957B6357D364B244'\n\n/**\n * The NegativeUNL object type contains the current status of the Negative UNL,\n * a list of trusted validators currently believed to be offline.\n *\n * @category Ledger Entries\n */\nexport default interface NegativeUNL\n extends BaseLedgerEntry,\n HasOptionalPreviousTxnID {\n LedgerEntryType: 'NegativeUNL'\n /**\n * A list of trusted validators that are currently disabled.\n */\n DisabledValidators?: Array<{\n FirstLedgerSequence: number\n PublicKey: string\n }>\n /**\n * The public key of a trusted validator that is scheduled to be disabled in\n * the next flag ledger.\n */\n ValidatorToDisable?: string\n /**\n * The public key of a trusted validator in the Negative UNL that is\n * scheduled to be re-enabled in the next flag ledger.\n */\n ValidatorToReEnable?: string\n}\n", "import { IssuedCurrencyAmount } from '../common'\n\nimport { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The RippleState object type connects two accounts in a single currency.\n *\n * @category Ledger Entries\n */\nexport default interface RippleState extends BaseLedgerEntry, HasPreviousTxnID {\n LedgerEntryType: 'RippleState'\n /** A bit-map of boolean options enabled for this object. */\n Flags: number\n /**\n * The balance of the trust line, from the perspective of the low account. A\n * negative balance indicates that the low account has issued currency to the\n * high account. The issuer is always the neutral value ACCOUNT_ONE.\n */\n Balance: IssuedCurrencyAmount\n /**\n * The limit that the low account has set on the trust line. The issuer is\n * the address of the low account that set this limit.\n */\n LowLimit: IssuedCurrencyAmount\n /**\n * The limit that the high account has set on the trust line. The issuer is\n * the address of the high account that set this limit.\n */\n HighLimit: IssuedCurrencyAmount\n /**\n * A hint indicating which page of the low account's owner directory links to\n * this object, in case the directory consists of multiple pages.\n */\n LowNode?: string\n /**\n * A hint indicating which page of the high account's owner directory links\n * to this object, in case the directory consists of multiple pages.\n */\n HighNode?: string\n /**\n * The inbound quality set by the low account, as an integer in the implied\n * ratio LowQualityIn:1,000,000,000. As a special case, the value 0 is\n * equivalent to 1 billion, or face value.\n */\n LowQualityIn?: number\n /**\n * The outbound quality set by the low account, as an integer in the implied\n * ratio LowQualityOut:1,000,000,000. As a special case, the value 0 is\n * equivalent to 1 billion, or face value.\n */\n LowQualityOut?: number\n /**\n * The inbound quality set by the high account, as an integer in the implied\n * ratio HighQualityIn:1,000,000,000. As a special case, the value 0 is\n * equivalent to 1 billion, or face value.\n */\n HighQualityIn?: number\n /**\n * The outbound quality set by the high account, as an integer in the implied\n * ratio HighQualityOut:1,000,000,000. As a special case, the value 0 is\n * equivalent to 1 billion, or face value.\n */\n HighQualityOut?: number\n}\n\nexport enum RippleStateFlags {\n // True, if entry counts toward reserve.\n lsfLowReserve = 0x00010000,\n lsfHighReserve = 0x00020000,\n lsfLowAuth = 0x00040000,\n lsfHighAuth = 0x00080000,\n lsfLowNoRipple = 0x00100000,\n lsfHighNoRipple = 0x00200000,\n // True, low side has set freeze flag\n lsfLowFreeze = 0x00400000,\n // True, high side has set freeze flag\n lsfHighFreeze = 0x00800000,\n // True, trust line to AMM. Used by client apps to identify payments via AMM.\n lsfAMMNode = 0x01000000,\n // True, low side has set deep freeze flag\n lsfLowDeepFreeze = 0x02000000,\n // True, high side has set deep freeze flag\n lsfHighDeepFreeze = 0x04000000,\n}\n", "import { SignerEntry } from '../common'\n\nimport { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The SignerList object type represents a list of parties that, as a group,\n * are authorized to sign a transaction in place of an individual account. You\n * can create, replace, or remove a signer list using a SignerListSet\n * transaction.\n *\n * @category Ledger Entries\n */\nexport default interface SignerList extends BaseLedgerEntry, HasPreviousTxnID {\n LedgerEntryType: 'SignerList'\n /**\n * A bit-map of Boolean flags enabled for this signer list. For more\n * information, see SignerList Flags.\n */\n Flags: number\n /**\n * A hint indicating which page of the owner directory links to this object,\n * in case the directory consists of multiple pages.\n */\n OwnerNode: string\n /**\n * An array of Signer Entry objects representing the parties who are part of\n * this signer list.\n */\n SignerEntries: SignerEntry[]\n /**\n * An ID for this signer list. Currently always set to 0. If a future\n * amendment allows multiple signer lists for an account, this may change.\n */\n SignerListID: number\n /**\n * A target number for signer weights. To produce a valid signature for the\n * owner of this SignerList, the signers must provide valid signatures whose\n * weights sum to this value or more.\n */\n SignerQuorum: number\n}\n\nexport enum SignerListFlags {\n // True, uses only one OwnerCount\n lsfOneOwnerCount = 0x00010000,\n}\n", "import { Currency } from '../common'\nimport { Account } from '../transactions/common'\n\nimport { BaseLedgerEntry, HasPreviousTxnID } from './BaseLedgerEntry'\n\n/**\n * The Vault object type represents a Single Asset Vault instance.\n *\n * @category Ledger Entries\n */\nexport default interface Vault extends BaseLedgerEntry, HasPreviousTxnID {\n LedgerEntryType: 'Vault'\n\n /**\n * Ledger object identifier.\n */\n LedgerIndex: string\n\n /**\n * A bit-map of boolean flags.\n */\n Flags: number\n\n /**\n * The transaction sequence number that created the vault.\n */\n Sequence: number\n\n /**\n * Identifies the page where this item is referenced in the owner's directory.\n */\n OwnerNode: string\n\n /**\n * The account address of the Vault Owner.\n */\n Owner: string\n\n /**\n * The address of the Vaults pseudo-account.\n */\n Account: Account\n\n /**\n * The asset of the vault. The vault supports XRP, IOU and MPT.\n */\n Asset: Currency\n\n /**\n * The total value of the vault.\n */\n AssetsTotal: string\n\n /**\n * The asset amount that is available in the vault.\n */\n AssetsAvailable: string\n\n /**\n * The potential loss amount that is not yet realized expressed as the vaults asset.\n */\n LossUnrealized: string\n\n /**\n * The identifier of the share MPTokenIssuance object.\n */\n MPTokenIssuanceID: string\n\n /**\n * Indicates the withdrawal strategy used by the Vault.\n */\n WithdrawalPolicy: number\n\n /**\n * The maximum asset amount that can be held in the vault. Zero value 0 indicates there is no cap.\n */\n AssetsMaximum?: string\n\n /**\n * Arbitrary metadata about the Vault. Limited to 256 bytes.\n */\n Data?: string\n}\n\nexport enum VaultFlags {\n /**\n * If set, indicates that the vault is private.\n */\n lsfVaultPrivate = 0x00010000,\n}\n", "import AccountRoot, {\n AccountRootFlags,\n AccountRootFlagsInterface,\n} from './AccountRoot'\nimport Amendments, { Majority, AMENDMENTS_ID } from './Amendments'\nimport AMM, { VoteSlot } from './AMM'\nimport Bridge from './Bridge'\nimport Check from './Check'\nimport Credential from './Credential'\nimport Delegate from './Delegate'\nimport DepositPreauth from './DepositPreauth'\nimport DID from './DID'\nimport DirectoryNode from './DirectoryNode'\nimport Escrow from './Escrow'\nimport FeeSettings, {\n FeeSettingsPreAmendmentFields,\n FeeSettingsPostAmendmentFields,\n FEE_SETTINGS_ID,\n} from './FeeSettings'\nimport { Ledger, LedgerV1 } from './Ledger'\nimport { LedgerEntry, LedgerEntryFilter } from './LedgerEntry'\nimport LedgerHashes from './LedgerHashes'\nimport { MPToken } from './MPToken'\nimport { MPTokenIssuance } from './MPTokenIssuance'\nimport NegativeUNL, { NEGATIVE_UNL_ID } from './NegativeUNL'\nimport { NFTokenOffer } from './NFTokenOffer'\nimport { NFToken, NFTokenPage } from './NFTokenPage'\nimport Offer, { OfferFlags } from './Offer'\nimport Oracle from './Oracle'\nimport PayChannel from './PayChannel'\nimport RippleState, { RippleStateFlags } from './RippleState'\nimport SignerList, { SignerListFlags } from './SignerList'\nimport Ticket from './Ticket'\nimport Vault, { VaultFlags } from './Vault'\nimport XChainOwnedClaimID from './XChainOwnedClaimID'\nimport XChainOwnedCreateAccountClaimID from './XChainOwnedCreateAccountClaimID'\n\nexport {\n AccountRoot,\n AccountRootFlags,\n AccountRootFlagsInterface,\n AMENDMENTS_ID,\n Amendments,\n AMM,\n Bridge,\n Check,\n Credential,\n Delegate,\n DepositPreauth,\n DirectoryNode,\n DID,\n Escrow,\n FEE_SETTINGS_ID,\n FeeSettings,\n FeeSettingsPreAmendmentFields,\n FeeSettingsPostAmendmentFields,\n Ledger,\n LedgerV1,\n LedgerEntryFilter,\n LedgerEntry,\n LedgerHashes,\n Majority,\n NEGATIVE_UNL_ID,\n NegativeUNL,\n MPTokenIssuance,\n MPToken,\n NFTokenOffer,\n NFTokenPage,\n NFToken,\n Offer,\n OfferFlags,\n Oracle,\n PayChannel,\n RippleState,\n RippleStateFlags,\n SignerList,\n SignerListFlags,\n Ticket,\n Vault,\n VaultFlags,\n VoteSlot,\n XChainOwnedClaimID,\n XChainOwnedCreateAccountClaimID,\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map", "/**\n * LedgerEntry type definitions are exported in their own namespace to prevent\n * collisions of the DepositPreauth SLE and Transaction. LedgerEntries are used\n * by the client less often, and in most scenarios, like when parsing a\n * response, the client won't need to import the type. If it is required to use\n * a Ledger Entry, import `LedgerEntry`, and access individual ledger entry\n * types on the `LedgerEntry` namespace.\n */\nexport * as LedgerEntry from './ledger'\nexport {\n parseAccountRootFlags,\n setTransactionFlagsToNumber,\n convertTxFlagsToNumber,\n parseTransactionFlags,\n} from './utils/flags'\nexport {\n validateMPTokenMetadata,\n decodeMPTokenMetadata,\n encodeMPTokenMetadata,\n} from './utils/mptokenMetadata'\nexport * from './methods'\nexport * from './transactions'\nexport * from './common'\n", "import {\n bytesToHex,\n concat,\n hexToBytes,\n randomBytes,\n} from '@xrplf/isomorphic/utils'\n\nfunction randomEntropy(): Uint8Array {\n return randomBytes(16)\n}\n\nfunction calculateChecksum(position: number, value: number): number {\n return (value * (position * 2 + 1)) % 9\n}\n\nfunction checkChecksum(\n position: number,\n value: number | string,\n checksum?: number,\n): boolean {\n let normalizedChecksum: number\n let normalizedValue: number\n\n if (typeof value === 'string') {\n if (value.length !== 6) {\n throw new Error('value must have a length of 6')\n }\n normalizedChecksum = parseInt(value.slice(5), 10)\n normalizedValue = parseInt(value.slice(0, 5), 10)\n } else {\n if (typeof checksum !== 'number') {\n throw new Error('checksum must be a number when value is a number')\n }\n normalizedChecksum = checksum\n normalizedValue = value\n }\n return (normalizedValue * (position * 2 + 1)) % 9 === normalizedChecksum\n}\n\nfunction entropyToSecret(entropy: Uint8Array): string[] {\n const len = new Array(Math.ceil(entropy.length / 2))\n const chunks = Array.from(len, (_a, chunk) => {\n const buffChunk = entropy.slice(chunk * 2, (chunk + 1) * 2)\n const no = parseInt(bytesToHex(buffChunk), 16)\n const fill = '0'.repeat(5 - String(no).length)\n return fill + String(no) + String(calculateChecksum(chunk, no))\n })\n if (chunks.length !== 8) {\n throw new Error('Chucks must have 8 digits')\n }\n return chunks\n}\n\nfunction randomSecret(): string[] {\n return entropyToSecret(randomEntropy())\n}\n\nfunction secretToEntropy(secret: string[]): Uint8Array {\n return concat(\n secret.map((chunk, i) => {\n const no = Number(chunk.slice(0, 5))\n const checksum = Number(chunk.slice(5))\n if (chunk.length !== 6) {\n throw new Error('Invalid secret: number invalid')\n }\n if (!checkChecksum(i, no, checksum)) {\n throw new Error('Invalid secret part: checksum invalid')\n }\n const hex = `0000${no.toString(16)}`.slice(-4)\n return hexToBytes(hex)\n }),\n )\n}\n\nfunction parseSecretString(secret: string): string[] {\n const normalizedSecret = secret.replace(/[^0-9]/gu, '')\n if (normalizedSecret.length !== 48) {\n throw new Error(\n 'Invalid secret string (should contain 8 blocks of 6 digits',\n )\n }\n return Array.from(new Array(8), (_a, index) => {\n return normalizedSecret.slice(index * 6, (index + 1) * 6)\n })\n}\n\nexport {\n randomEntropy,\n randomSecret,\n entropyToSecret,\n secretToEntropy,\n calculateChecksum,\n checkChecksum,\n parseSecretString,\n}\n", "import { deriveAddress, deriveKeypair, generateSeed } from 'ripple-keypairs'\n\nimport {\n entropyToSecret,\n parseSecretString,\n randomSecret,\n secretToEntropy,\n} from '../utils'\n\n/* Types ==================================================================== */\n\nexport interface Keypair {\n publicKey: string\n privateKey: string\n}\n\ninterface AccountData {\n familySeed: string\n address: string\n keypair: Keypair\n}\n\n/* Class ==================================================================== */\n\nexport class Account {\n private readonly _secret: string[]\n private readonly _account: AccountData = {\n familySeed: '',\n address: '',\n keypair: {\n publicKey: '',\n privateKey: '',\n },\n }\n\n constructor(secretNumbers?: string[] | string | Uint8Array) {\n if (typeof secretNumbers === 'string') {\n this._secret = parseSecretString(secretNumbers)\n } else if (Array.isArray(secretNumbers)) {\n this._secret = secretNumbers\n } else if (secretNumbers instanceof Uint8Array) {\n this._secret = entropyToSecret(secretNumbers)\n } else {\n this._secret = randomSecret()\n }\n\n validateLengths(this._secret)\n this.derive()\n }\n\n getSecret(): string[] {\n return this._secret\n }\n\n getSecretString(): string {\n return this._secret.join(' ')\n }\n\n getAddress(): string {\n return this._account.address\n }\n\n getFamilySeed(): string {\n return this._account.familySeed\n }\n\n getKeypair(): Keypair {\n return this._account.keypair\n }\n\n toString(): string {\n return this.getSecretString()\n }\n\n private derive(): void {\n try {\n const entropy = secretToEntropy(this._secret)\n this._account.familySeed = generateSeed({ entropy })\n this._account.keypair = deriveKeypair(this._account.familySeed)\n this._account.address = deriveAddress(this._account.keypair.publicKey)\n } catch (error) {\n let message = 'Unknown Error'\n if (error instanceof Error) {\n message = error.message\n }\n // we'll proceed, but let's report it\n throw new Error(message)\n }\n }\n}\n\nfunction validateLengths(secretNumbers: string[]): void {\n if (secretNumbers.length !== 8) {\n throw new Error('Secret must have 8 numbers')\n }\n secretNumbers.forEach((num) => {\n if (num.length !== 6) {\n throw new Error('Each secret number must be 6 digits')\n }\n })\n}\n", "export * from './schema/Account'\nexport * from './utils'\n", "import { Account } from '@xrplf/secret-numbers'\n\nimport ECDSA from '../ECDSA'\n\nimport { Wallet } from '.'\n\n/**\n * Derives a wallet from secret numbers.\n * NOTE: This uses a default encoding algorithm of secp256k1 to match the popular wallet\n * [Xumm (aka Xaman)](https://xumm.app/)'s behavior.\n * This may be different from the DEFAULT_ALGORITHM for other ways to generate a Wallet.\n *\n * @param secretNumbers - A string consisting of 8 times 6 numbers (whitespace delimited) used to derive a wallet.\n * @param opts - (Optional) Options to derive a Wallet.\n * @param opts.masterAddress - Include if a Wallet uses a Regular Key Pair. It must be the master address of the account.\n * @param opts.algorithm - The digital signature algorithm to generate an address for.\n * @returns A Wallet derived from secret numbers.\n * @throws ValidationError if unable to derive private key from secret number input.\n */\nexport function walletFromSecretNumbers(\n secretNumbers: string[] | string,\n opts?: { masterAddress?: string; algorithm?: ECDSA },\n): Wallet {\n const secret = new Account(secretNumbers).getFamilySeed()\n const updatedOpts: { masterAddress?: string; algorithm?: ECDSA } = {\n masterAddress: undefined,\n algorithm: undefined,\n }\n // Use secp256k1 since that's the algorithm used by popular wallets like Xumm when generating secret number accounts\n if (opts === undefined) {\n updatedOpts.algorithm = ECDSA.secp256k1\n } else {\n updatedOpts.masterAddress = opts.masterAddress\n updatedOpts.algorithm = opts.algorithm ?? ECDSA.secp256k1\n }\n return Wallet.fromSecret(secret, updatedOpts)\n}\n", "import { encode, encodeForSigningBatch } from 'ripple-binary-codec'\nimport { sign } from 'ripple-keypairs'\n\nimport { ValidationError } from '../errors'\nimport { Batch, Transaction, validate } from '../models'\nimport { BatchSigner, validateBatch } from '../models/transactions/batch'\nimport { hashSignedTx } from '../utils/hashes'\n\nimport { compareSigners, getDecodedTransaction } from './utils'\n\nimport { Wallet } from '.'\n\n// eslint-disable-next-line max-params -- okay for helper function\nfunction constructBatchSignerObject(\n batchAccount: string,\n wallet: Wallet,\n signature: string,\n multisignAddress: string | false = false,\n): BatchSigner {\n let batchSigner: BatchSigner\n if (multisignAddress) {\n batchSigner = {\n BatchSigner: {\n Account: batchAccount,\n Signers: [\n {\n Signer: {\n Account: multisignAddress,\n SigningPubKey: wallet.publicKey,\n TxnSignature: signature,\n },\n },\n ],\n },\n }\n } else {\n batchSigner = {\n BatchSigner: {\n Account: batchAccount,\n SigningPubKey: wallet.publicKey,\n TxnSignature: signature,\n },\n }\n }\n return batchSigner\n}\n\n/**\n * Sign a multi-account Batch transaction.\n *\n * @param wallet - Wallet instance.\n * @param transaction - The Batch transaction to sign.\n * @param opts - Additional options for regular key and multi-signing complexity.\n * @param opts.batchAccount - The account submitting the inner Batch transaction, on behalf of which is this signature.\n * @param opts.multisign - Specify true/false to use multisign or actual address (classic/x-address) to make multisign tx request.\n * The actual address is only needed in the case of regular key usage.\n * @throws ValidationError if the transaction is malformed.\n */\nexport function signMultiBatch(\n wallet: Wallet,\n transaction: Batch,\n opts: { batchAccount?: string; multisign?: boolean | string } = {},\n): void {\n const batchAccount = opts.batchAccount ?? wallet.classicAddress\n let multisignAddress: boolean | string = false\n if (typeof opts.multisign === 'string') {\n multisignAddress = opts.multisign\n } else if (opts.multisign) {\n multisignAddress = wallet.classicAddress\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- for JS purposes\n if (transaction.TransactionType !== 'Batch') {\n throw new ValidationError('Must be a Batch transaction.')\n }\n /*\n * This will throw a more clear error for JS users if the supplied transaction has incorrect formatting\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- validate does not accept Transaction type\n validate(transaction as unknown as Record)\n\n const involvedAccounts = new Set(\n transaction.RawTransactions.map((raw) => raw.RawTransaction.Account),\n )\n if (!involvedAccounts.has(batchAccount)) {\n throw new ValidationError(\n 'Must be signing for an address submitting a transaction in the Batch.',\n )\n }\n const fieldsToSign = {\n flags: transaction.Flags,\n txIDs: transaction.RawTransactions.map((rawTx) =>\n hashSignedTx(rawTx.RawTransaction),\n ),\n }\n const signature = sign(encodeForSigningBatch(fieldsToSign), wallet.privateKey)\n\n // eslint-disable-next-line no-param-reassign -- okay for signing\n transaction.BatchSigners = [\n constructBatchSignerObject(\n batchAccount,\n wallet,\n signature,\n multisignAddress,\n ),\n ]\n}\n\n/**\n * Takes several transactions with BatchSigners fields (in object or blob form) and creates a\n * single transaction with all BatchSigners that then gets signed and returned.\n *\n * @param transactions The transactions to combine `BatchSigners` values on.\n * @returns A single signed Transaction which has all BatchSigners from transactions within it.\n * @throws ValidationError if:\n * - There were no transactions given to sign\n * @category Signing\n */\nexport function combineBatchSigners(\n transactions: Array,\n): string {\n if (transactions.length === 0) {\n throw new ValidationError('There are 0 transactions to combine.')\n }\n\n const decodedTransactions: Transaction[] = transactions.map((txOrBlob) => {\n return getDecodedTransaction(txOrBlob)\n })\n\n decodedTransactions.forEach((tx) => {\n if (tx.TransactionType !== 'Batch') {\n throw new ValidationError('TransactionType must be `Batch`.')\n }\n /*\n * This will throw a more clear error for JS users if any of the supplied transactions has incorrect formatting\n */\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- validate does not accept Transaction type\n validateBatch(tx as unknown as Record)\n if (tx.BatchSigners == null || tx.BatchSigners.length === 0) {\n throw new ValidationError(\n 'For combining Batch transaction signatures, all transactions must include a BatchSigners field containing an array of signatures.',\n )\n }\n\n if (tx.TxnSignature != null || tx.Signers != null) {\n throw new ValidationError('Batch transaction must be unsigned.')\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- checked above\n const batchTransactions = decodedTransactions as Batch[]\n\n validateBatchTransactionEquivalence(batchTransactions)\n\n return encode(getTransactionWithAllBatchSigners(batchTransactions))\n}\n\n/**\n * The transactions should all be equal except for the 'Signers' field.\n *\n * @param transactions - An array of Transactions which are expected to be equal other than 'Signers'.\n * @throws ValidationError if the transactions are not equal in any field other than 'Signers'.\n */\nfunction validateBatchTransactionEquivalence(transactions: Batch[]): void {\n const exampleTransaction = JSON.stringify({\n flags: transactions[0].Flags,\n transactionIDs: transactions[0].RawTransactions.map((rawTx) =>\n hashSignedTx(rawTx.RawTransaction),\n ),\n })\n if (\n transactions.slice(1).some(\n (tx) =>\n JSON.stringify({\n flags: tx.Flags,\n transactionIDs: tx.RawTransactions.map((rawTx) =>\n hashSignedTx(rawTx.RawTransaction),\n ),\n }) !== exampleTransaction,\n )\n ) {\n throw new ValidationError(\n 'Flags and transaction hashes are not the same for all provided transactions.',\n )\n }\n}\n\nfunction getTransactionWithAllBatchSigners(transactions: Batch[]): Batch {\n // Signers must be sorted in the combined transaction - See compareSigners' documentation for more details\n const sortedSigners: BatchSigner[] = transactions\n .flatMap((tx) => tx.BatchSigners ?? [])\n .filter((signer) => signer.BatchSigner.Account !== transactions[0].Account)\n .sort((signer1, signer2) =>\n compareSigners(signer1.BatchSigner, signer2.BatchSigner),\n )\n\n return { ...transactions[0], BatchSigners: sortedSigners }\n}\n", "export { Client, ClientOptions } from './client'\n\nexport * from './models'\n\nexport * from './utils'\n\nexport { default as ECDSA } from './ECDSA'\n\nexport * from './errors'\n\nexport { FundingOptions } from './Wallet/fundWallet'\nexport { Wallet } from './Wallet'\n\nexport { walletFromSecretNumbers } from './Wallet/walletFromSecretNumbers'\n\nexport { keyToRFC1751Mnemonic, rfc1751MnemonicToKey } from './Wallet/rfc1751'\n\nexport * from './Wallet/signer'\n\nexport * from './Wallet/batchSigner'\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transformTransaction = exports.transformServerInfo = void 0;\nconst transformServerInfo = payload => ({\n name: 'Ripple',\n shortcut: 'xrp',\n network: 'xrp',\n testnet: false,\n version: payload.result.info.build_version,\n decimals: 6,\n blockHeight: payload.result.info.validated_ledger?.seq ?? 0,\n blockHash: payload.result.info.validated_ledger?.hash ?? ''\n});\nexports.transformServerInfo = transformServerInfo;\nconst BLOCKTIME_OFFSET = 946684800;\nconst getUnixTimestamp = xrplTimestamp => {\n if (!xrplTimestamp || xrplTimestamp <= 0) {\n return 0;\n }\n return xrplTimestamp + BLOCKTIME_OFFSET;\n};\nconst transformTransaction = (hash, tx_json, meta, descriptor) => {\n let txType = 'unknown';\n let addresses = [];\n let amount;\n let destinationTag;\n if (tx_json.TransactionType === 'Payment') {\n const deliverMax = tx_json.DeliverMax ?? undefined;\n const isTokenTransaction = typeof deliverMax !== 'string';\n amount = !isTokenTransaction ? deliverMax : undefined;\n if (meta != null && typeof meta !== 'string' && !meta.TransactionResult?.startsWith('tes')) {\n txType = 'failed';\n } else if (!descriptor || isTokenTransaction) {\n txType = 'unknown';\n } else {\n txType = tx_json.Account === descriptor ? 'sent' : 'recv';\n }\n addresses = [tx_json.Destination];\n destinationTag = tx_json.DestinationTag;\n }\n return {\n type: txType,\n txid: hash ?? '',\n amount: amount ?? '0',\n fee: tx_json.Fee ?? '0',\n blockTime: getUnixTimestamp(tx_json.date),\n blockHeight: tx_json.ledger_index,\n blockHash: hash ?? '',\n targets: txType === 'unknown' ? [] : [{\n addresses,\n isAddress: true,\n amount,\n n: 0\n }],\n tokens: [],\n internalTransfers: [],\n feeRate: undefined,\n details: {\n vin: [],\n vout: [],\n size: 0,\n totalInput: '0',\n totalOutput: '0'\n },\n rippleSpecific: {\n destinationTag\n }\n };\n};\nexports.transformTransaction = transformTransaction;\n//# sourceMappingURL=ripple.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Ripple;\nconst tslib_1 = require(\"tslib\");\nconst xrpl_1 = require(\"xrpl\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils = tslib_1.__importStar(require(\"@trezor/blockchain-link-utils/lib/ripple\"));\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst baseWorker_1 = require(\"../baseWorker\");\nconst DEFAULT_TIMEOUT = 20 * 1000;\nconst DEFAULT_PING_TIMEOUT = 3 * 60 * 1000;\nconst RESERVE = {\n BASE: '10000000',\n OWNER: '2000000'\n};\nconst transformError = error => {\n if (error instanceof xrpl_1.XrplError) {\n const code = error.name === 'TimeoutError' ? 'websocket_timeout' : 'websocket_error_message';\n if (error.data) {\n const errorMessageData = error.data.error_message;\n const errorMessage = `${error.name} ${errorMessageData}`;\n return new errors_1.CustomError(code, errorMessage);\n }\n return new errors_1.CustomError(code, error.toString());\n }\n return error;\n};\nconst getInfo = async request => {\n const client = await request.connect();\n const response = await client.request({\n command: 'server_info'\n });\n if (response.result.info.validated_ledger != null) {\n RESERVE.BASE = (0, xrpl_1.xrpToDrops)(response.result.info.validated_ledger.reserve_base_xrp);\n RESERVE.OWNER = (0, xrpl_1.xrpToDrops)(response.result.info.validated_ledger.reserve_inc_xrp);\n }\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: {\n url: client.connection.getUrl(),\n ...utils.transformServerInfo(response)\n }\n };\n};\nconst getMempoolAccountInfo = async (client, account) => {\n const response = await client.request({\n command: 'account_info',\n account,\n ledger_index: 'current',\n queue: true\n });\n return {\n xrpBalance: response.result.account_data.Balance,\n sequence: response.result.account_data.Sequence,\n txs: response.result.queue_data ? response.result.queue_data.txn_count : 0\n };\n};\nconst getAccountInfo = async request => {\n const {\n payload\n } = request;\n const account = {\n descriptor: payload.descriptor,\n balance: '0',\n availableBalance: '0',\n empty: true,\n history: {\n total: -1,\n unconfirmed: 0,\n transactions: undefined\n },\n misc: {\n sequence: 0,\n reserve: RESERVE.BASE\n }\n };\n try {\n const client = await request.connect();\n const info = await client.request({\n command: 'account_info',\n account: payload.descriptor,\n ledger_index: 'validated'\n });\n const ownersReserve = info.result.account_data.OwnerCount > 0 ? new bigNumber_1.BigNumber(info.result.account_data.OwnerCount).times(RESERVE.OWNER).toString() : '0';\n const reserve = new bigNumber_1.BigNumber(RESERVE.BASE).plus(ownersReserve).toString();\n const misc = {\n sequence: info.result.account_data.Sequence,\n reserve\n };\n account.misc = misc;\n account.balance = info.result.account_data.Balance;\n account.availableBalance = new bigNumber_1.BigNumber(account.balance).minus(reserve).toString();\n account.empty = false;\n } catch (error) {\n if (error instanceof xrpl_1.XrplError && error.data?.error === 'actNotFound') {\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n }\n throw error;\n }\n try {\n const client = await request.connect();\n const mempoolInfo = await getMempoolAccountInfo(client, payload.descriptor);\n const {\n misc\n } = account;\n const reserve = misc && typeof misc.reserve === 'string' ? misc.reserve : RESERVE.BASE;\n account.availableBalance = new bigNumber_1.BigNumber(mempoolInfo.xrpBalance).minus(reserve).toString();\n account.misc.sequence = mempoolInfo.sequence;\n account.history.unconfirmed = mempoolInfo.txs;\n } catch {}\n if (payload.details !== 'txs') {\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n }\n const client = await request.connect();\n const response = await client.request({\n command: 'account_tx',\n account: payload.descriptor,\n ledger_index_min: payload.from ? payload.from : undefined,\n ledger_index_max: payload.to ? payload.to : undefined,\n limit: payload.pageSize || 25,\n marker: payload.marker,\n api_version: 2\n });\n account.history.transactions = response.result.transactions.flatMap(raw => raw.tx_json != null ? [utils.transformTransaction(raw.hash, raw.tx_json, raw.meta, payload.descriptor)] : []);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: {\n ...account,\n marker: response.result.marker\n }\n };\n};\nconst getTransaction = async ({\n connect,\n payload\n}) => {\n const client = await connect();\n const rawTx = await client.request({\n command: 'tx',\n transaction: payload,\n binary: false\n });\n const tx = utils.transformTransaction(rawTx.result.hash, rawTx.result.tx_json, rawTx.result.meta);\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION,\n payload: tx\n };\n};\nconst pushTransaction = async ({\n connect,\n payload\n}) => {\n const client = await connect();\n const info = await client.submit(payload.hex.toUpperCase());\n if (info.result.engine_result === 'tesSUCCESS' && info.result.tx_json.hash) {\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload: info.result.tx_json.hash\n };\n }\n throw new Error(info.result.engine_result_message);\n};\nconst estimateFee = async request => {\n const client = await request.connect();\n const fee = await client.request({\n command: 'fee'\n });\n const drops = fee.result.drops.base_fee;\n const payload = request.payload && Array.isArray(request.payload.blocks) ? request.payload.blocks.map(() => ({\n feePerUnit: drops\n })) : [{\n feePerUnit: drops\n }];\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload\n };\n};\nconst onNewBlock = ({\n post\n}, event) => {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight: event.ledger_index,\n blockHash: event.ledger_hash\n }\n }\n });\n};\nconst onTransaction = ({\n state,\n post\n}, event) => {\n if (event.type !== 'transaction') return;\n if (event.tx_json?.TransactionType !== 'Payment') return;\n const {\n tx_json,\n hash\n } = event;\n const notify = descriptor => {\n if (!tx_json || !hash) return;\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'notification',\n payload: {\n descriptor,\n tx: utils.transformTransaction(hash, tx_json, undefined, descriptor)\n }\n }\n });\n };\n const subscribed = state.getAddresses();\n const sent = subscribed.find(a => a === tx_json.Account);\n if (sent) notify(sent);\n const recv = subscribed.find(a => a === tx_json.Destination);\n if (recv) notify(recv);\n};\nconst subscribeAccounts = async (ctx, accounts) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n const prevAddresses = state.getAddresses();\n state.addAccounts(accounts);\n const uniqueAddresses = state.getAddresses().filter(a => prevAddresses.indexOf(a) < 0);\n if (uniqueAddresses.length > 0) {\n if (!state.getSubscription('notification')) {\n api.on('transaction', ev => onTransaction(ctx, ev));\n state.addSubscription('notification');\n }\n await api.request({\n command: 'subscribe',\n accounts_proposed: uniqueAddresses\n });\n }\n return {\n subscribed: state.getAddresses().length > 0\n };\n};\nconst subscribeAddresses = async (ctx, addresses) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n const uniqueAddresses = state.addAddresses(addresses);\n if (uniqueAddresses.length > 0) {\n if (!state.getSubscription('transaction')) {\n api.on('transaction', ev => onTransaction(ctx, ev));\n state.addSubscription('transaction');\n }\n await api.request({\n command: 'subscribe',\n accounts_proposed: uniqueAddresses\n });\n }\n return {\n subscribed: state.getAddresses().length > 0\n };\n};\nconst subscribeBlock = async ctx => {\n if (!ctx.state.getSubscription('ledger')) {\n const api = await ctx.connect();\n api.on('ledgerClosed', ev => onNewBlock(ctx, ev));\n ctx.state.addSubscription('ledger');\n }\n return {\n subscribed: true\n };\n};\nconst subscribe = async request => {\n const {\n payload\n } = request;\n let response;\n if (payload.type === 'accounts') {\n response = await subscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n response = await subscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n response = await subscribeBlock(request);\n } else {\n throw new errors_1.CustomError('invalid_param', '+type');\n }\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: response\n };\n};\nconst unsubscribeAddresses = async ({\n state,\n connect\n}, addresses) => {\n const api = await connect();\n if (!addresses) {\n const all = state.getAddresses();\n state.removeAccounts(state.getAccounts());\n state.removeAddresses(all);\n await api.request({\n command: 'unsubscribe',\n accounts_proposed: all\n });\n } else {\n state.removeAddresses(addresses);\n await api.request({\n command: 'unsubscribe',\n accounts_proposed: addresses\n });\n }\n if (state.getAccounts().length < 1) {\n api.connection.removeAllListeners('transaction');\n state.removeSubscription('transaction');\n }\n};\nconst unsubscribeAccounts = async (ctx, accounts) => {\n const {\n state\n } = ctx;\n const prevAddresses = state.getAddresses();\n state.removeAccounts(accounts || state.getAccounts());\n const addresses = state.getAddresses();\n const uniqueAddresses = prevAddresses.filter(a => addresses.indexOf(a) < 0);\n await unsubscribeAddresses(ctx, uniqueAddresses);\n};\nconst unsubscribeBlock = async ({\n state,\n connect\n}) => {\n if (!state.getSubscription('ledger')) return;\n const client = await connect();\n client.removeAllListeners('ledgerClosed');\n state.removeSubscription('ledger');\n};\nconst unsubscribe = async request => {\n const {\n payload\n } = request;\n if (payload.type === 'accounts') {\n await unsubscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n await unsubscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n await unsubscribeBlock(request);\n }\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: {\n subscribed: request.state.getAddresses().length > 0\n }\n };\n};\nconst onRequest = request => {\n switch (request.type) {\n case constants_1.MESSAGES.GET_INFO:\n return getInfo(request);\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return getAccountInfo(request);\n case constants_1.MESSAGES.GET_TRANSACTION:\n return getTransaction(request);\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return estimateFee(request);\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return pushTransaction(request);\n case constants_1.MESSAGES.SUBSCRIBE:\n return subscribe(request);\n case constants_1.MESSAGES.UNSUBSCRIBE:\n return unsubscribe(request);\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass RippleWorker extends baseWorker_1.BaseWorker {\n pingTimeout;\n cleanup() {\n if (this.pingTimeout) {\n clearTimeout(this.pingTimeout);\n }\n if (this.api) {\n this.api.removeAllListeners();\n }\n super.cleanup();\n }\n isConnected(client) {\n return client?.isConnected() ?? false;\n }\n async tryConnect(url) {\n const options = {\n headers: {\n 'User-Agent': `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`\n },\n timeout: this.settings.timeout || DEFAULT_TIMEOUT,\n connectionTimeout: this.settings.timeout || DEFAULT_TIMEOUT,\n ...(this.proxyAgent && {\n agent: this.proxyAgent\n })\n };\n const client = new xrpl_1.Client(url, options);\n await client.connect();\n client.on('ledgerClosed', ledger => {\n RESERVE.BASE = ledger.reserve_base.toString();\n RESERVE.OWNER = ledger.reserve_inc.toString();\n });\n client.on('disconnected', () => {\n this.post({\n id: -1,\n type: constants_1.RESPONSES.DISCONNECTED,\n payload: true\n });\n this.cleanup();\n });\n this.post({\n id: -1,\n type: constants_1.RESPONSES.CONNECTED\n });\n client.request({\n command: 'subscribe',\n streams: ['ledger']\n });\n return client;\n }\n async disconnect() {\n try {\n if (this.api?.isConnected()) {\n await this.api.disconnect();\n }\n } catch (error) {\n this.debug('Disconnect failed', error);\n } finally {\n this.cleanup();\n }\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n post: data => this.post(data),\n state: this.state\n };\n const response = await onRequest(request);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, transformError(error));\n } finally {\n if (event.data.type !== constants_1.MESSAGES.DISCONNECT) {\n this.setPingTimeout();\n }\n }\n }\n setPingTimeout() {\n if (this.pingTimeout) {\n clearTimeout(this.pingTimeout);\n }\n this.pingTimeout = this.api?.isConnected() ? setTimeout(() => this.onPing(), this.settings.pingTimeout || DEFAULT_PING_TIMEOUT) : undefined;\n }\n async onPing() {\n if (!this.api || !this.api.isConnected()) return;\n if (this.state.hasSubscriptions() || this.settings.keepAlive) {\n try {\n await this.api.request({\n command: 'ping'\n });\n } catch (error) {\n this.debug(`Error in timeout ping request: ${error}`);\n }\n this.setPingTimeout();\n } else {\n this.api.disconnect();\n }\n }\n}\nfunction Ripple() {\n return new RippleWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new RippleWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transformAccountInfo = exports.transformTransaction = exports.filterTokenTransfers = exports.transformInputOutput = exports.transformTokenInfo = exports.transformToken = exports.parseAsset = exports.transformUtxos = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst utils_1 = require(\"./utils\");\nconst transformUtxos = utxos => {\n const result = [];\n utxos.forEach(utxo => utxo.utxoData.amount.forEach(u => {\n result.push({\n address: utxo.address,\n txid: utxo.utxoData.tx_hash,\n confirmations: utxo.blockInfo.confirmations,\n blockHeight: utxo.blockInfo.height || 0,\n amount: u.quantity,\n vout: utxo.utxoData.output_index,\n path: utxo.path,\n cardanoSpecific: {\n unit: u.unit\n }\n });\n }));\n return result;\n};\nexports.transformUtxos = transformUtxos;\nconst hexToString = input => {\n let str = '';\n for (let n = 0; n < input.length; n += 2) {\n str += String.fromCharCode(parseInt(input.substring(n, n + 2), 16));\n }\n return str;\n};\nconst getSubtype = tx => {\n const withdrawal = tx.txData.withdrawal_count > 0;\n if (withdrawal) {\n return 'withdrawal';\n }\n const registrations = tx.txData.stake_cert_count;\n const delegations = tx.txData.delegation_count;\n if (registrations === 0 && delegations === 0) return;\n if (registrations > 0) {\n if (new bigNumber_1.BigNumber(tx.txData.deposit).gt(0)) {\n return 'stake_registration';\n }\n return 'stake_deregistration';\n }\n if (delegations > 0) {\n return 'stake_delegation';\n }\n};\nconst parseAsset = hex => {\n const policyIdSize = 56;\n const policyId = hex.slice(0, policyIdSize);\n const assetNameInHex = hex.slice(policyIdSize);\n const assetName = hexToString(assetNameInHex);\n return {\n policyId,\n assetName\n };\n};\nexports.parseAsset = parseAsset;\nconst transformToken = token => {\n const {\n policyId,\n assetName\n } = (0, exports.parseAsset)(token.unit);\n const symbol = token.ticker || assetName || (0, utils_1.formatTokenSymbol)(token.fingerprint);\n return {\n name: token.name || symbol,\n contract: token.unit,\n symbol,\n decimals: token.decimals,\n fingerprint: token.fingerprint,\n policyId\n };\n};\nexports.transformToken = transformToken;\nconst transformTokenInfo = tokens => {\n if (!tokens || !Array.isArray(tokens)) {\n return undefined;\n }\n const info = tokens.map(token => ({\n balance: token.quantity,\n standard: 'BLOCKFROST',\n ...(0, exports.transformToken)(token)\n }));\n return info.length > 0 ? info : undefined;\n};\nexports.transformTokenInfo = transformTokenInfo;\nconst transformInputOutput = (data, asset = 'lovelace') => data.map(utxo => ({\n n: utxo.output_index,\n addresses: [utxo.address],\n isAddress: true,\n value: utxo.amount.find(a => a.unit === asset)?.quantity ?? '0'\n}));\nexports.transformInputOutput = transformInputOutput;\nconst filterTokenTransfers = (accountAddress, tx, type) => {\n const transfers = [];\n const myNonChangeAddresses = accountAddress.used.concat(accountAddress.unused);\n const myAddresses = accountAddress.change.concat(myNonChangeAddresses);\n tx.txUtxos.outputs.forEach(output => {\n output.amount.filter(a => a.unit !== 'lovelace').forEach(asset => {\n const tokenUnit = asset.unit;\n const inputs = (0, exports.transformInputOutput)(tx.txUtxos.inputs, tokenUnit);\n const outputs = (0, exports.transformInputOutput)(tx.txUtxos.outputs, tokenUnit);\n const outgoing = (0, utils_1.filterTargets)(myAddresses, inputs);\n const incoming = (0, utils_1.filterTargets)(myAddresses, outputs);\n const isChange = accountAddress.change.find(a => a.address === output.address);\n if (incoming.length === 0 && outgoing.length === 0) return null;\n const incomingForOutput = (0, utils_1.filterTargets)(myNonChangeAddresses, (0, exports.transformInputOutput)([output], tokenUnit));\n let amount = '0';\n if (type === 'sent') {\n amount = isChange ? '0' : asset.quantity;\n } else if (type === 'recv') {\n amount = incomingForOutput.reduce(utils_1.sumVinVout, 0).toString();\n } else if (type === 'self' && !isChange) {\n amount = incomingForOutput.reduce(utils_1.sumVinVout, 0).toString();\n }\n if (amount === '0' || !asset.fingerprint) return null;\n transfers.push({\n ...(0, exports.transformToken)(asset),\n type,\n amount: amount.toString(),\n from: type === 'sent' || type === 'self' ? tx.address : tx.txUtxos.inputs.find(i => i.amount.find(a => a.unit === tokenUnit))?.address || '',\n to: type === 'recv' ? tx.address : output.address,\n standard: 'BLOCKFROST'\n });\n });\n });\n return transfers.filter(t => !!t);\n};\nexports.filterTokenTransfers = filterTokenTransfers;\nconst transformTransaction = (blockfrostTxData, addressesOrDescriptor) => {\n const fullData = (data => 'txUtxos' in data)(blockfrostTxData);\n const [accountAddress, descriptor] = typeof addressesOrDescriptor === 'object' ? [addressesOrDescriptor, undefined] : [undefined, addressesOrDescriptor];\n const myAddresses = accountAddress ? accountAddress.change.concat(accountAddress.used, accountAddress.unused).map(a => a.address) : descriptor && [descriptor] || [];\n let type;\n let targets = [];\n let amount = blockfrostTxData.txData.output_amount.find(b => b.unit === 'lovelace')?.quantity || '0';\n const fee = blockfrostTxData.txData.fees;\n let withdrawal;\n let deposit;\n const inputs = fullData ? (0, exports.transformInputOutput)(blockfrostTxData.txUtxos.inputs) : [];\n const outputs = fullData ? (0, exports.transformInputOutput)(blockfrostTxData.txUtxos.outputs) : [];\n const vinLength = Array.isArray(inputs) ? inputs.length : 0;\n const voutLength = Array.isArray(outputs) ? outputs.length : 0;\n const outgoing = (0, utils_1.filterTargets)(myAddresses, inputs);\n const incoming = (0, utils_1.filterTargets)(myAddresses, outputs);\n const internal = accountAddress ? (0, utils_1.filterTargets)(accountAddress.change, outputs) : [];\n const totalInput = inputs.reduce(utils_1.sumVinVout, 0);\n const totalOutput = outputs.reduce(utils_1.sumVinVout, 0);\n if (outgoing.length === 0 && incoming.length === 0) {\n type = 'unknown';\n } else if (vinLength > 0 && voutLength > 0 && outgoing.length === vinLength && incoming.length === voutLength) {\n type = 'self';\n targets = outputs.filter(o => internal.indexOf(o) < 0);\n amount = blockfrostTxData.txData.fees;\n const depositBn = new bigNumber_1.BigNumber(blockfrostTxData.txData.deposit || 0);\n if (!depositBn.isZero()) {\n deposit = depositBn.abs().toString();\n }\n if (blockfrostTxData.txData.withdrawal_count > 0) {\n const extra = new bigNumber_1.BigNumber(totalOutput).plus(blockfrostTxData.txData.fees || 0).minus(totalInput);\n const withdrawalBn = depositBn.isNegative() ? extra.minus(depositBn) : extra;\n withdrawal = withdrawalBn.abs().toString();\n }\n } else if (outgoing.length === 0 && incoming.length > 0) {\n type = 'recv';\n amount = '0';\n if (incoming.length > 0) {\n targets = incoming;\n amount = incoming.reduce(utils_1.sumVinVout, 0);\n }\n } else {\n type = 'sent';\n targets = outputs.filter(o => internal.indexOf(o) < 0);\n if (voutLength) {\n const myInputsSum = outgoing.reduce(utils_1.sumVinVout, 0);\n const totalSpent = incoming.reduce(utils_1.sumVinVout, 0);\n amount = new bigNumber_1.BigNumber(myInputsSum).minus(totalSpent).minus(fee ?? '0');\n }\n }\n const tokens = accountAddress && fullData ? (0, exports.filterTokenTransfers)(accountAddress, blockfrostTxData, type) : [];\n return {\n type,\n txid: blockfrostTxData.txData.hash,\n blockTime: blockfrostTxData.txData.block_time,\n blockHeight: blockfrostTxData.txData.block_height || undefined,\n blockHash: blockfrostTxData.txData.block,\n amount: amount?.toString(),\n fee,\n targets: targets.map(t => (0, utils_1.transformTarget)(t, incoming)),\n tokens,\n internalTransfers: [],\n cardanoSpecific: {\n subtype: getSubtype(blockfrostTxData),\n withdrawal,\n deposit\n },\n feeRate: undefined,\n details: {\n vin: inputs.map((0, utils_1.enhanceVinVout)(myAddresses)),\n vout: outputs.map((0, utils_1.enhanceVinVout)(myAddresses)),\n size: blockfrostTxData.txData.size,\n totalInput: totalInput.toString(),\n totalOutput: totalOutput.toString()\n }\n };\n};\nexports.transformTransaction = transformTransaction;\nconst transformAccountInfo = info => {\n const blockfrostTxs = info.history.transactions;\n const result = {\n ...info,\n tokens: (0, exports.transformTokenInfo)(info.tokens),\n history: {\n ...info.history,\n transactions: !blockfrostTxs ? [] : blockfrostTxs?.map(tx => (0, exports.transformTransaction)(tx, info.addresses ?? info.descriptor))\n }\n };\n return result;\n};\nexports.transformAccountInfo = transformAccountInfo;\n//# sourceMappingURL=blockfrost.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BlockfrostAPI = void 0;\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst baseWebsocket_1 = require(\"../baseWebsocket\");\nclass BlockfrostAPI extends baseWebsocket_1.BaseWebsocket {\n createWebsocket() {\n const {\n url\n } = this.options;\n return this.initWebsocket({\n url,\n agent: this.options.agent,\n headers: {\n 'User-Agent': `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`,\n ...this.options.headers\n }\n });\n }\n ping() {\n return this.getBlockHash(1);\n }\n send = (command, params = {}) => this.sendMessage({\n command,\n params\n });\n getServerInfo() {\n return this.send('GET_SERVER_INFO');\n }\n getBlockHash(number) {\n return this.send('GET_BLOCK', {\n hashOrNumber: number\n });\n }\n estimateFee(payload) {\n return this.send('ESTIMATE_FEE', payload);\n }\n getAccountInfo(payload) {\n return this.send('GET_ACCOUNT_INFO', payload);\n }\n getAccountUtxo(descriptor) {\n return this.send('GET_ACCOUNT_UTXO', {\n descriptor\n });\n }\n getAccountBalanceHistory(payload) {\n return this.send('GET_BALANCE_HISTORY', payload);\n }\n getTransaction(txId) {\n return this.send('GET_TRANSACTION', {\n txId\n });\n }\n pushTransaction(txData) {\n return this.send('PUSH_TRANSACTION', {\n txData\n });\n }\n subscribeBlock() {\n this.removeSubscription('block');\n this.addSubscription('block', result => this.emit('block', result));\n return this.send('SUBSCRIBE_BLOCK');\n }\n subscribeAddresses(addresses) {\n this.removeSubscription('notification');\n this.addSubscription('notification', result => this.emit('notification', result));\n return this.send('SUBSCRIBE_ADDRESS', {\n addresses\n });\n }\n unsubscribeBlock() {\n const index = this.removeSubscription('block');\n return index >= 0 ? this.send('UNSUBSCRIBE_BLOCK') : {\n subscribed: false\n };\n }\n unsubscribeAddresses() {\n const index = this.removeSubscription('notification');\n return index >= 0 ? this.send('UNSUBSCRIBE_ADDRESS') : {\n subscribed: false\n };\n }\n}\nexports.BlockfrostAPI = BlockfrostAPI;\n//# sourceMappingURL=websocket.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Blockfrost;\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst blockfrost_1 = require(\"@trezor/blockchain-link-utils/lib/blockfrost\");\nconst baseWorker_1 = require(\"../baseWorker\");\nconst websocket_1 = require(\"./websocket\");\nconst getInfo = async request => {\n const api = await request.connect();\n const info = await api.getServerInfo();\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: {\n url: api.options.url,\n network: info.shortcut,\n ...info\n }\n };\n};\nconst getBlockHash = async request => {\n const api = await request.connect();\n const blockMessage = await api.getBlockHash(request.payload);\n return {\n type: constants_1.RESPONSES.GET_BLOCK_HASH,\n payload: blockMessage.hash\n };\n};\nconst getAccountBalanceHistory = async request => {\n const socket = await request.connect();\n const history = await socket.getAccountBalanceHistory(request.payload);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY,\n payload: history\n };\n};\nconst getTransaction = async request => {\n const api = await request.connect();\n const txData = await api.getTransaction(request.payload);\n const tx = (0, blockfrost_1.transformTransaction)({\n txData\n });\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION,\n payload: tx\n };\n};\nconst estimateFee = async request => {\n const api = await request.connect();\n const resp = await api.estimateFee(request.payload);\n const feeOptions = [];\n feeOptions.push({\n feePerUnit: resp.lovelacePerByte.toString()\n });\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload: feeOptions\n };\n};\nconst pushTransaction = async request => {\n const api = await request.connect();\n const payload = await api.pushTransaction(request.payload.hex);\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload\n };\n};\nconst getAccountInfo = async request => {\n const api = await request.connect();\n const {\n details = 'basic',\n ...rest\n } = request.payload;\n const info = await api.getAccountInfo({\n details,\n ...rest\n });\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: (0, blockfrost_1.transformAccountInfo)(info)\n };\n};\nconst getAccountUtxo = async request => {\n const api = await request.connect();\n const utxos = await api.getAccountUtxo(request.payload);\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_UTXO,\n payload: (0, blockfrost_1.transformUtxos)(utxos)\n };\n};\nconst onNewBlock = ({\n post\n}, event) => {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight: event.height || 0,\n blockHash: event.hash\n }\n }\n });\n};\nconst onTransaction = ({\n state,\n post\n}, event) => {\n const descriptor = event.address;\n const account = state.getAccount(descriptor);\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'notification',\n payload: {\n descriptor: account ? account.descriptor : descriptor,\n tx: account ? (0, blockfrost_1.transformTransaction)(event, account.addresses ?? account.descriptor) : (0, blockfrost_1.transformTransaction)(event, descriptor)\n }\n }\n });\n};\nconst subscribeBlock = async ctx => {\n if (ctx.state.getSubscription('block')) return {\n subscribed: true\n };\n const api = await ctx.connect();\n ctx.state.addSubscription('block');\n api.on('block', ev => onNewBlock(ctx, ev));\n return api.subscribeBlock();\n};\nconst subscribeAccounts = async (ctx, accounts) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n state.addAccounts(accounts);\n if (!state.getSubscription('notification')) {\n api.on('notification', ev => onTransaction(ctx, ev));\n state.addSubscription('notification');\n }\n return api.subscribeAddresses(state.getAddresses());\n};\nconst subscribeAddresses = async (ctx, addresses) => {\n const api = await ctx.connect();\n const {\n state\n } = ctx;\n state.addAddresses(addresses);\n if (!state.getSubscription('notification')) {\n api.on('notification', ev => onTransaction(ctx, ev));\n state.addSubscription('notification');\n }\n return api.subscribeAddresses(state.getAddresses());\n};\nconst subscribe = async request => {\n const {\n payload\n } = request;\n let response;\n if (payload.type === 'accounts') {\n response = await subscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n response = await subscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n response = await subscribeBlock(request);\n } else {\n throw new errors_1.CustomError('invalid_param', '+type');\n }\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: response\n };\n};\nconst unsubscribeBlock = async ({\n state,\n connect\n}) => {\n if (!state.getSubscription('block')) return {\n subscribed: false\n };\n const api = await connect();\n api.removeAllListeners('block');\n state.removeSubscription('block');\n return api.unsubscribeBlock();\n};\nconst unsubscribeAccounts = async ({\n state,\n connect\n}, accounts) => {\n state.removeAccounts(accounts || state.getAccounts());\n const api = await connect();\n const subscribed = state.getAddresses();\n if (subscribed.length < 1) {\n api.removeAllListeners('notification');\n state.removeSubscription('notification');\n return api.unsubscribeAddresses();\n }\n return api.subscribeAddresses(subscribed);\n};\nconst unsubscribeAddresses = async ({\n state,\n connect\n}, addresses) => {\n const socket = await connect();\n if (!addresses) {\n state.removeAccounts(state.getAccounts());\n }\n const subscribed = state.removeAddresses(addresses || state.getAddresses());\n if (subscribed.length < 1) {\n socket.removeAllListeners('notification');\n state.removeSubscription('notification');\n return socket.unsubscribeAddresses();\n }\n return socket.subscribeAddresses(subscribed);\n};\nconst unsubscribe = async request => {\n const {\n payload\n } = request;\n let response;\n if (payload.type === 'accounts') {\n response = await unsubscribeAccounts(request, payload.accounts);\n } else if (payload.type === 'addresses') {\n response = await unsubscribeAddresses(request, payload.addresses);\n } else if (payload.type === 'block') {\n response = await unsubscribeBlock(request);\n } else {\n throw new errors_1.CustomError('invalid_param', '+type');\n }\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: response\n };\n};\nconst onRequest = request => {\n switch (request.type) {\n case constants_1.MESSAGES.GET_INFO:\n return getInfo(request);\n case constants_1.MESSAGES.GET_BLOCK_HASH:\n return getBlockHash(request);\n case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY:\n return getAccountBalanceHistory(request);\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return getAccountInfo(request);\n case constants_1.MESSAGES.GET_ACCOUNT_UTXO:\n return getAccountUtxo(request);\n case constants_1.MESSAGES.GET_TRANSACTION:\n return getTransaction(request);\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return estimateFee(request);\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return pushTransaction(request);\n case constants_1.MESSAGES.SUBSCRIBE:\n return subscribe(request);\n case constants_1.MESSAGES.UNSUBSCRIBE:\n return unsubscribe(request);\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass BlockfrostWorker extends baseWorker_1.BaseWorker {\n cleanup() {\n if (this.api) {\n this.api.dispose();\n this.api.removeAllListeners();\n }\n super.cleanup();\n }\n isConnected(api) {\n return api?.isConnected() ?? false;\n }\n async tryConnect(url) {\n const {\n timeout,\n pingTimeout,\n keepAlive\n } = this.settings;\n const api = new websocket_1.BlockfrostAPI({\n url,\n timeout,\n pingTimeout,\n keepAlive,\n agent: this.proxyAgent\n });\n await api.connect();\n api.on('disconnected', () => {\n this.post({\n id: -1,\n type: constants_1.RESPONSES.DISCONNECTED,\n payload: true\n });\n this.cleanup();\n });\n this.post({\n id: -1,\n type: constants_1.RESPONSES.CONNECTED\n });\n return api;\n }\n disconnect() {\n if (this.api) {\n this.api.disconnect();\n }\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n post: data => this.post(data),\n state: this.state\n };\n const response = await onRequest(request);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, error);\n }\n }\n}\nfunction Blockfrost() {\n return new BlockfrostWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new BlockfrostWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bech32m = exports.bech32 = void 0;\nconst ALPHABET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';\nconst ALPHABET_MAP = {};\nfor (let z = 0; z < ALPHABET.length; z++) {\n const x = ALPHABET.charAt(z);\n ALPHABET_MAP[x] = z;\n}\nfunction polymodStep(pre) {\n const b = pre >> 25;\n return (((pre & 0x1ffffff) << 5) ^\n (-((b >> 0) & 1) & 0x3b6a57b2) ^\n (-((b >> 1) & 1) & 0x26508e6d) ^\n (-((b >> 2) & 1) & 0x1ea119fa) ^\n (-((b >> 3) & 1) & 0x3d4233dd) ^\n (-((b >> 4) & 1) & 0x2a1462b3));\n}\nfunction prefixChk(prefix) {\n let chk = 1;\n for (let i = 0; i < prefix.length; ++i) {\n const c = prefix.charCodeAt(i);\n if (c < 33 || c > 126)\n return 'Invalid prefix (' + prefix + ')';\n chk = polymodStep(chk) ^ (c >> 5);\n }\n chk = polymodStep(chk);\n for (let i = 0; i < prefix.length; ++i) {\n const v = prefix.charCodeAt(i);\n chk = polymodStep(chk) ^ (v & 0x1f);\n }\n return chk;\n}\nfunction convert(data, inBits, outBits, pad) {\n let value = 0;\n let bits = 0;\n const maxV = (1 << outBits) - 1;\n const result = [];\n for (let i = 0; i < data.length; ++i) {\n value = (value << inBits) | data[i];\n bits += inBits;\n while (bits >= outBits) {\n bits -= outBits;\n result.push((value >> bits) & maxV);\n }\n }\n if (pad) {\n if (bits > 0) {\n result.push((value << (outBits - bits)) & maxV);\n }\n }\n else {\n if (bits >= inBits)\n return 'Excess padding';\n if ((value << (outBits - bits)) & maxV)\n return 'Non-zero padding';\n }\n return result;\n}\nfunction toWords(bytes) {\n return convert(bytes, 8, 5, true);\n}\nfunction fromWordsUnsafe(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n}\nfunction fromWords(words) {\n const res = convert(words, 5, 8, false);\n if (Array.isArray(res))\n return res;\n throw new Error(res);\n}\nfunction getLibraryFromEncoding(encoding) {\n let ENCODING_CONST;\n if (encoding === 'bech32') {\n ENCODING_CONST = 1;\n }\n else {\n ENCODING_CONST = 0x2bc830a3;\n }\n function encode(prefix, words, LIMIT) {\n LIMIT = LIMIT || 90;\n if (prefix.length + 7 + words.length > LIMIT)\n throw new TypeError('Exceeds length limit');\n prefix = prefix.toLowerCase();\n // determine chk mod\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n throw new Error(chk);\n let result = prefix + '1';\n for (let i = 0; i < words.length; ++i) {\n const x = words[i];\n if (x >> 5 !== 0)\n throw new Error('Non 5-bit word');\n chk = polymodStep(chk) ^ x;\n result += ALPHABET.charAt(x);\n }\n for (let i = 0; i < 6; ++i) {\n chk = polymodStep(chk);\n }\n chk ^= ENCODING_CONST;\n for (let i = 0; i < 6; ++i) {\n const v = (chk >> ((5 - i) * 5)) & 0x1f;\n result += ALPHABET.charAt(v);\n }\n return result;\n }\n function __decode(str, LIMIT) {\n LIMIT = LIMIT || 90;\n if (str.length < 8)\n return str + ' too short';\n if (str.length > LIMIT)\n return 'Exceeds length limit';\n // don't allow mixed case\n const lowered = str.toLowerCase();\n const uppered = str.toUpperCase();\n if (str !== lowered && str !== uppered)\n return 'Mixed-case string ' + str;\n str = lowered;\n const split = str.lastIndexOf('1');\n if (split === -1)\n return 'No separator character for ' + str;\n if (split === 0)\n return 'Missing prefix for ' + str;\n const prefix = str.slice(0, split);\n const wordChars = str.slice(split + 1);\n if (wordChars.length < 6)\n return 'Data too short';\n let chk = prefixChk(prefix);\n if (typeof chk === 'string')\n return chk;\n const words = [];\n for (let i = 0; i < wordChars.length; ++i) {\n const c = wordChars.charAt(i);\n const v = ALPHABET_MAP[c];\n if (v === undefined)\n return 'Unknown character ' + c;\n chk = polymodStep(chk) ^ v;\n // not in the checksum?\n if (i + 6 >= wordChars.length)\n continue;\n words.push(v);\n }\n if (chk !== ENCODING_CONST)\n return 'Invalid checksum for ' + str;\n return { prefix, words };\n }\n function decodeUnsafe(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n }\n function decode(str, LIMIT) {\n const res = __decode(str, LIMIT);\n if (typeof res === 'object')\n return res;\n throw new Error(res);\n }\n return {\n decodeUnsafe,\n decode,\n encode,\n toWords,\n fromWordsUnsafe,\n fromWords,\n };\n}\nexports.bech32 = getLibraryFromEncoding('bech32');\nexports.bech32m = getLibraryFromEncoding('bech32m');\n", "'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nObject.defineProperty(exports, '__esModule', { value: true })\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n const BASE_MAP = new Uint8Array(256)\n for (let j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (let i = 0; i < ALPHABET.length; i++) {\n const x = ALPHABET.charAt(i)\n const xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n const BASE = ALPHABET.length\n const LEADER = ALPHABET.charAt(0)\n const FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n const iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n // eslint-disable-next-line no-empty\n if (source instanceof Uint8Array) { } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n let zeroes = 0\n let length = 0\n let pbegin = 0\n const pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n const size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n const b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n let carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n let i = 0\n for (let it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n let it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n let str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n let psz = 0\n // Skip and count leading '1's.\n let zeroes = 0\n let length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n const size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n const b256 = new Uint8Array(size)\n // Process the characters.\n while (psz < source.length) {\n // Find code of next character\n const charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n let carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n let i = 0\n for (let it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n let it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n const vch = new Uint8Array(zeroes + (size - it4))\n let j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n const buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode,\n decodeUnsafe,\n decode\n }\n}\nexports.default = base\n", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_x_1 = __importDefault(require(\"base-x\"));\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexports.default = (0, base_x_1.default)(ALPHABET);\n", "/**\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 * @deprecated\n */\nimport {\n SHA224 as SHA224n,\n sha224 as sha224n,\n SHA256 as SHA256n,\n sha256 as sha256n,\n} from './sha2.ts';\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA256: typeof SHA256n = SHA256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha256: typeof sha256n = sha256n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const SHA224: typeof SHA224n = SHA224n;\n/** @deprecated Use import from `noble/hashes/sha2` module */\nexport const sha224: typeof sha224n = sha224n;\n", "'use strict';\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = default_1;\nvar bs58_1 = __importDefault(require(\"bs58\"));\nfunction default_1(checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode(payload) {\n var payloadU8 = Uint8Array.from(payload);\n var checksum = checksumFn(payloadU8);\n var length = payloadU8.length + 4;\n var both = new Uint8Array(length);\n both.set(payloadU8, 0);\n both.set(checksum.subarray(0, 4), payloadU8.length);\n return bs58_1.default.encode(both);\n }\n function decodeRaw(buffer) {\n var payload = buffer.slice(0, -4);\n var checksum = buffer.slice(-4);\n var newChecksum = checksumFn(payload);\n // eslint-disable-next-line\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3])\n return;\n return payload;\n }\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe(str) {\n var buffer = bs58_1.default.decodeUnsafe(str);\n if (buffer == null)\n return;\n return decodeRaw(buffer);\n }\n function decode(str) {\n var buffer = bs58_1.default.decode(str);\n var payload = decodeRaw(buffer);\n if (payload == null)\n throw new Error('Invalid checksum');\n return payload;\n }\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n };\n}\n", "'use strict';\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sha256_1 = require(\"@noble/hashes/sha256\");\nvar base_js_1 = __importDefault(require(\"./base.cjs\"));\n// SHA256(SHA256(buffer))\nfunction sha256x2(buffer) {\n return (0, sha256_1.sha256)((0, sha256_1.sha256)(buffer));\n}\nexports.default = (0, base_js_1.default)(sha256x2);\n", "/**\n * @license\n * https://github.com/ealmansi/cashaddrjs\n * Copyright (c) 2017-2020 Emilio Almansi\n * Distributed under the MIT software license, see the accompanying\n * file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n */\n\n'use strict';\n\n/**\n * Validation utility.\n *\n * @module validation\n */\n\n/**\n * Error thrown when encoding or decoding fail due to invalid input.\n *\n * @constructor ValidationError\n * @param {string} message Error description.\n */\nfunction ValidationError(message) {\n var error = new Error();\n this.name = error.name = 'ValidationError';\n this.message = error.message = message;\n this.stack = error.stack;\n}\n\nValidationError.prototype = Object.create(Error.prototype);\n\n/**\n * Validates a given condition, throwing a {@link ValidationError} if\n * the given condition does not hold.\n *\n * @static\n * @param {boolean} condition Condition to validate.\n * @param {string} message Error message in case the condition does not hold.\n */\nfunction validate(condition, message) {\n if (!condition) {\n throw new ValidationError(message);\n }\n}\n\nmodule.exports = {\n ValidationError: ValidationError,\n validate: validate,\n};\n", "/**\n * @license\n * https://github.com/ealmansi/cashaddrjs\n * Copyright (c) 2017-2020 Emilio Almansi\n * Distributed under the MIT software license, see the accompanying\n * file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n */\n\n'use strict';\n\nvar validate = require('./validation').validate;\n\n/**\n * Base32 encoding and decoding.\n *\n * @module base32\n */\n\n/**\n * Charset containing the 32 symbols used in the base32 encoding.\n * @private\n */\nvar CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';\n\n/**\n * Inverted index mapping each symbol into its index within the charset.\n * @private\n */\nvar CHARSET_INVERSE_INDEX = {\n 'q': 0, 'p': 1, 'z': 2, 'r': 3, 'y': 4, '9': 5, 'x': 6, '8': 7,\n 'g': 8, 'f': 9, '2': 10, 't': 11, 'v': 12, 'd': 13, 'w': 14, '0': 15,\n 's': 16, '3': 17, 'j': 18, 'n': 19, '5': 20, '4': 21, 'k': 22, 'h': 23,\n 'c': 24, 'e': 25, '6': 26, 'm': 27, 'u': 28, 'a': 29, '7': 30, 'l': 31,\n};\n\n/**\n * Encodes the given array of 5-bit integers as a base32-encoded string.\n *\n * @static\n * @param {Uint8Array} data Array of integers between 0 and 31 inclusive.\n * @returns {string}\n * @throws {ValidationError}\n */\nfunction encode(data) {\n validate(data instanceof Uint8Array, 'Invalid data: ' + data + '.');\n var base32 = '';\n for (var i = 0; i < data.length; ++i) {\n var value = data[i];\n validate(0 <= value && value < 32, 'Invalid value: ' + value + '.');\n base32 += CHARSET[value];\n }\n return base32;\n}\n\n/**\n * Decodes the given base32-encoded string into an array of 5-bit integers.\n *\n * @static\n * @param {string} string\n * @returns {Uint8Array}\n * @throws {ValidationError}\n */\nfunction decode(string) {\n validate(typeof string === 'string', 'Invalid base32-encoded string: ' + string + '.');\n var data = new Uint8Array(string.length);\n for (var i = 0; i < string.length; ++i) {\n var value = string[i];\n validate(value in CHARSET_INVERSE_INDEX, 'Invalid value: ' + value + '.');\n data[i] = CHARSET_INVERSE_INDEX[value];\n }\n return data;\n}\n\nmodule.exports = {\n encode: encode,\n decode: decode,\n};\n", "var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n LOG_MAX_INT = Math.log(MAX_INT);\r\n\r\n function Integer(v, radix) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 ? parseValue(v) : parseBase(v, radix);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n var value = n.value;\r\n if (value === 0) return false;\r\n if (value === 1) return true;\r\n if (value === 2) return this.isEven();\r\n return this.mod(n).equals(Integer[0]);\r\n };\r\n SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n \r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next : for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.equals(Integer[1]) || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false; \r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n \r\n// Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if(bits <= 64)\r\n return millerRabinTest(n, [2, 325, 9375, 28178, 450775, 9780504, 1795265022]);\r\n var logN = Math.log(2) * bits;\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2)));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.equals(bigInt.zero)) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.equals(1)) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return ((typeof n === \"number\" || typeof n === \"string\") && +Math.abs(n) <= BASE) ||\r\n (n instanceof BigInteger && n.value.length <= 1);\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (n) {\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n n = +n;\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (n) {\r\n var remQuo;\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n n = +n;\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value, x = typeof v === \"number\" ? v | LOBMASK_I : v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = Math.min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(Math.random() * range));\r\n var length = range.value.length - 1;\r\n var result = [], restricted = true;\r\n for (var i = length; i >= 0; i--) {\r\n var top = restricted ? range.value[i] : BASE;\r\n var digit = truncate(Math.random() * top);\r\n result.unshift(digit);\r\n if (digit < top) restricted = false;\r\n }\r\n result = arrayToSmall(result);\r\n return low.add(typeof result === \"number\" ? new SmallInteger(result) : new BigInteger(result, false));\r\n }\r\n var parseBase = function (text, base) {\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n for (var i = 0; i < length; i++) {\r\n var c = text[i].toLowerCase();\r\n if (c === \"-\") continue;\r\n if (/[a-z0-9]/.test(c)) {\r\n if (/[0-9]/.test(c) && +c >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n } else if (c.charCodeAt(0) - 87 >= absBase) {\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n if (2 <= base && base <= 36) {\r\n if (length <= LOG_MAX_INT / Math.log(base)) {\r\n var result = parseInt(text, base);\r\n if (isNaN(result)) {\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n return new SmallInteger(parseInt(text, base));\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i].toLowerCase(),\r\n charCode = c.charCodeAt(0);\r\n if (48 <= charCode && charCode <= 57) digits.push(parseValue(c));\r\n else if (97 <= charCode && charCode <= 122) digits.push(parseValue(c.charCodeAt(0) - 87));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\");\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit) {\r\n if (digit <= 35) {\r\n return \"0123456789abcdefghijklmnopqrstuvwxyz\".charAt(digit);\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(+n - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.equals(1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(+n))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(stringify).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10) return toBaseString(this, radix);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10) return toBaseString(this, radix);\r\n return String(this.value);\r\n };\r\n BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = new SmallInteger(i);\r\n if (i > 0) Integer[-i] = new SmallInteger(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define(\"big-integer\", [], function () {\r\n return bigInt;\r\n });\r\n}\r\n", "// Copyright (c) 2017-2018 Emilio Almansi\n// Copyright (c) 2017 Pieter Wuille\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n'use strict';\n\nvar validate = require('./validation').validate;\n\n/**\n * Converts an array of integers made up of 'from' bits into an\n * array of integers made up of 'to' bits. The output array is\n * zero-padded if necessary, unless strict mode is true.\n * Throws a {@link ValidationError} if input is invalid.\n * Original by Pieter Wuille: https://github.com/sipa/bech32.\n *\n * @param {Uint8Array} data Array of integers made up of 'from' bits.\n * @param {number} from Length in bits of elements in the input array.\n * @param {number} to Length in bits of elements in the output array.\n * @param {bool} strictMode Require the conversion to be completed without padding.\n * @returns {Uint8Array}\n */\nmodule.exports = function(data, from, to, strictMode) {\n var length = strictMode\n ? Math.floor(data.length * from / to)\n : Math.ceil(data.length * from / to);\n var mask = (1 << to) - 1;\n var result = new Uint8Array(length);\n var index = 0;\n var accumulator = 0;\n var bits = 0;\n for (var i = 0; i < data.length; ++i) {\n var value = data[i];\n validate(0 <= value && (value >> from) === 0, 'Invalid value: ' + value + '.');\n accumulator = (accumulator << from) | value;\n bits += from;\n while (bits >= to) {\n bits -= to;\n result[index] = (accumulator >> bits) & mask;\n ++index;\n }\n }\n if (!strictMode) {\n if (bits > 0) {\n result[index] = (accumulator << (to - bits)) & mask;\n ++index;\n }\n } else {\n validate(\n bits < from && ((accumulator << (to - bits)) & mask) === 0,\n 'Input cannot be converted to ' + to + ' bits without padding, but strict mode was used.'\n );\n }\n return result;\n};\n", "/**\n * @license\n * https://github.com/ealmansi/cashaddrjs\n * Copyright (c) 2017-2020 Emilio Almansi\n * Distributed under the MIT software license, see the accompanying\n * file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n */\n\n'use strict';\n\nvar base32 = require('./base32');\nvar bigInt = require('big-integer');\nvar convertBits = require('./convertBits');\nvar validation = require('./validation');\nvar validate = validation.validate;\n\n/**\n * Encoding and decoding of the new Cash Address format for Bitcoin Cash.
\n * Compliant with the original cashaddr specification:\n * {@link https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/cashaddr.md}\n * @module cashaddr\n */\n\n/**\n * Encodes a hash from a given type into a Bitcoin Cash address with the given prefix.\n * \n * @static\n * @param {string} prefix Network prefix. E.g.: 'bitcoincash'.\n * @param {string} type Type of address to generate. Either 'P2PKH' or 'P2SH'.\n * @param {Uint8Array} hash Hash to encode represented as an array of 8-bit integers.\n * @returns {string}\n * @throws {ValidationError}\n */\nfunction encode(prefix, type, hash) {\n validate(typeof prefix === 'string' && isValidPrefix(prefix), 'Invalid prefix: ' + prefix + '.');\n validate(typeof type === 'string', 'Invalid type: ' + type + '.');\n validate(hash instanceof Uint8Array, 'Invalid hash: ' + hash + '.');\n var prefixData = concat(prefixToUint5Array(prefix), new Uint8Array(1));\n var versionByte = getTypeBits(type) + getHashSizeBits(hash);\n var payloadData = toUint5Array(concat(new Uint8Array([versionByte]), hash));\n var checksumData = concat(concat(prefixData, payloadData), new Uint8Array(8));\n var payload = concat(payloadData, checksumToUint5Array(polymod(checksumData)));\n return prefix + ':' + base32.encode(payload);\n}\n\n/**\n * Decodes the given address into its constituting prefix, type and hash. See [#encode()]{@link encode}.\n * \n * @static\n * @param {string} address Address to decode. E.g.: 'bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a'.\n * @returns {object}\n * @throws {ValidationError}\n */\nfunction decode(address) {\n validate(typeof address === 'string' && hasSingleCase(address), 'Invalid address: ' + address + '.');\n var pieces = address.toLowerCase().split(':');\n validate(pieces.length === 2, 'Missing prefix: ' + address + '.');\n var prefix = pieces[0];\n var payload = base32.decode(pieces[1]);\n validate(validChecksum(prefix, payload), 'Invalid checksum: ' + address + '.');\n var payloadData = fromUint5Array(payload.subarray(0, -8));\n var versionByte = payloadData[0];\n var hash = payloadData.subarray(1);\n validate(getHashSize(versionByte) === hash.length * 8, 'Invalid hash size: ' + address + '.');\n var type = getType(versionByte);\n return {\n prefix: prefix,\n type: type,\n hash: hash,\n };\n}\n\n/**\n * Error thrown when encoding or decoding fail due to invalid input.\n *\n * @constructor ValidationError\n * @param {string} message Error description.\n */\nvar ValidationError = validation.ValidationError;\n\n/**\n * Valid address prefixes.\n *\n * @private\n */\nvar VALID_PREFIXES = ['bitcoincash', 'bchtest', 'bchreg'];\n\n/**\n * Checks whether a string is a valid prefix; ie., it has a single letter case\n * and is one of 'bitcoincash', 'bchtest', or 'bchreg'.\n *\n * @private\n * @param {string} prefix \n * @returns {boolean}\n */\nfunction isValidPrefix(prefix) {\n return hasSingleCase(prefix) && VALID_PREFIXES.indexOf(prefix.toLowerCase()) !== -1;\n}\n\n/**\n * Derives an array from the given prefix to be used in the computation\n * of the address' checksum.\n *\n * @private\n * @param {string} prefix Network prefix. E.g.: 'bitcoincash'. \n * @returns {Uint8Array}\n */\nfunction prefixToUint5Array(prefix) {\n var result = new Uint8Array(prefix.length);\n for (var i = 0; i < prefix.length; ++i) {\n result[i] = prefix[i].charCodeAt(0) & 31;\n }\n return result;\n}\n\n/**\n * Returns an array representation of the given checksum to be encoded\n * within the address' payload.\n *\n * @private\n * @param {BigInteger} checksum Computed checksum.\n * @returns {Uint8Array}\n */\nfunction checksumToUint5Array(checksum) {\n var result = new Uint8Array(8);\n for (var i = 0; i < 8; ++i) {\n result[7 - i] = checksum.and(31).toJSNumber();\n checksum = checksum.shiftRight(5);\n }\n return result;\n}\n\n/**\n * Returns the bit representation of the given type within the version\n * byte.\n *\n * @private\n * @param {string} type Address type. Either 'P2PKH' or 'P2SH'.\n * @returns {number}\n * @throws {ValidationError}\n */\nfunction getTypeBits(type) {\n switch (type) {\n case 'P2PKH':\n return 0;\n case 'P2SH':\n return 8;\n default:\n throw new ValidationError('Invalid type: ' + type + '.');\n }\n}\n\n/**\n * Retrieves the address type from its bit representation within the\n * version byte.\n *\n * @private\n * @param {number} versionByte\n * @returns {string}\n * @throws {ValidationError}\n */\nfunction getType(versionByte) {\n switch (versionByte & 120) {\n case 0:\n return 'P2PKH';\n case 8:\n return 'P2SH';\n default:\n throw new ValidationError('Invalid address type in version byte: ' + versionByte + '.');\n }\n}\n\n/**\n * Returns the bit representation of the length in bits of the given\n * hash within the version byte.\n *\n * @private\n * @param {Uint8Array} hash Hash to encode represented as an array of 8-bit integers.\n * @returns {number}\n * @throws {ValidationError}\n */\nfunction getHashSizeBits(hash) {\n switch (hash.length * 8) {\n case 160:\n return 0;\n case 192:\n return 1;\n case 224:\n return 2;\n case 256:\n return 3;\n case 320:\n return 4;\n case 384:\n return 5;\n case 448:\n return 6;\n case 512:\n return 7;\n default:\n throw new ValidationError('Invalid hash size: ' + hash.length + '.');\n }\n}\n\n/**\n * Retrieves the the length in bits of the encoded hash from its bit\n * representation within the version byte.\n *\n * @private\n * @param {number} versionByte\n * @returns {number}\n */\nfunction getHashSize(versionByte) {\n switch (versionByte & 7) {\n case 0:\n return 160;\n case 1:\n return 192;\n case 2:\n return 224;\n case 3:\n return 256;\n case 4:\n return 320;\n case 5:\n return 384;\n case 6:\n return 448;\n case 7:\n return 512;\n }\n}\n\n/**\n * Converts an array of 8-bit integers into an array of 5-bit integers,\n * right-padding with zeroes if necessary.\n *\n * @private\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n */\nfunction toUint5Array(data) {\n return convertBits(data, 8, 5);\n}\n\n/**\n * Converts an array of 5-bit integers back into an array of 8-bit integers,\n * removing extra zeroes left from padding if necessary.\n * Throws a {@link ValidationError} if input is not a zero-padded array of 8-bit integers.\n *\n * @private\n * @param {Uint8Array} data\n * @returns {Uint8Array}\n * @throws {ValidationError}\n */\nfunction fromUint5Array(data) {\n return convertBits(data, 5, 8, true);\n}\n\n/**\n * Returns the concatenation a and b.\n *\n * @private\n * @param {Uint8Array} a \n * @param {Uint8Array} b \n * @returns {Uint8Array}\n * @throws {ValidationError}\n */\nfunction concat(a, b) {\n var ab = new Uint8Array(a.length + b.length);\n ab.set(a);\n ab.set(b, a.length);\n return ab;\n}\n\n/**\n * Computes a checksum from the given input data as specified for the CashAddr\n * format: https://github.com/Bitcoin-UAHF/spec/blob/master/cashaddr.md.\n *\n * @private\n * @param {Uint8Array} data Array of 5-bit integers over which the checksum is to be computed.\n * @returns {BigInteger}\n */\nfunction polymod(data) {\n var GENERATOR = [0x98f2bc8e61, 0x79b76d99e2, 0xf33e5fb3c4, 0xae2eabe2a8, 0x1e4f43e470];\n var checksum = bigInt(1);\n for (var i = 0; i < data.length; ++i) {\n var value = data[i];\n var topBits = checksum.shiftRight(35);\n checksum = checksum.and(0x07ffffffff).shiftLeft(5).xor(value);\n for (var j = 0; j < GENERATOR.length; ++j) {\n if (topBits.shiftRight(j).and(1).equals(1)) {\n checksum = checksum.xor(GENERATOR[j]);\n }\n }\n }\n return checksum.xor(1);\n}\n\n/**\n * Verify that the payload has not been corrupted by checking that the\n * checksum is valid.\n * \n * @private\n * @param {string} prefix Network prefix. E.g.: 'bitcoincash'.\n * @param {Uint8Array} payload Array of 5-bit integers containing the address' payload.\n * @returns {boolean}\n */\nfunction validChecksum(prefix, payload) {\n var prefixData = concat(prefixToUint5Array(prefix), new Uint8Array(1));\n var checksumData = concat(prefixData, payload);\n return polymod(checksumData).equals(0);\n}\n\n/**\n * Returns true if, and only if, the given string contains either uppercase\n * or lowercase letters, but not both.\n *\n * @private\n * @param {string} string Input string.\n * @returns {boolean}\n */\nfunction hasSingleCase(string) {\n return string === string.toLowerCase() || string === string.toUpperCase();\n}\n\nmodule.exports = {\n encode: encode,\n decode: decode,\n ValidationError: ValidationError,\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toCashAddress = exports.toLegacyAddress = exports.isCashAddress = void 0;\nconst tslib_1 = require(\"tslib\");\nconst bs58check_1 = tslib_1.__importDefault(require(\"bs58check\"));\nconst cashaddr = tslib_1.__importStar(require(\"cashaddrjs\"));\nconst VERSION_BYTE = {\n legacy: {\n mainnet: {\n p2pkh: 0x00,\n p2sh: 0x05\n },\n testnet: {\n p2pkh: 0x6f,\n p2sh: 0xc4\n }\n },\n cashaddr: {\n mainnet: {\n p2pkh: 0,\n p2sh: 1\n },\n testnet: {\n p2pkh: 0,\n p2sh: 1\n }\n }\n};\nconst decodeBase58Address = address => {\n const payload = bs58check_1.default.decode(address);\n if (payload.length !== 21) {\n throw new Error('Invalid base58 address payload length');\n }\n const version = payload[0];\n const hash = Array.prototype.slice.call(payload, 1);\n switch (version) {\n case 0x00:\n return {\n hash,\n format: 'legacy',\n network: 'mainnet',\n type: 'p2pkh'\n };\n case 0x05:\n return {\n hash,\n format: 'legacy',\n network: 'mainnet',\n type: 'p2sh'\n };\n case 0x6f:\n return {\n hash,\n format: 'legacy',\n network: 'testnet',\n type: 'p2pkh'\n };\n case 0xc4:\n return {\n hash,\n format: 'legacy',\n network: 'testnet',\n type: 'p2sh'\n };\n default:\n throw new Error('Unknown version byte: ' + version);\n }\n};\nconst decodeCashAddressWithPrefix = address => {\n const decoded = cashaddr.decode(address);\n const hash = Array.prototype.slice.call(decoded.hash, 0);\n const type = decoded.type === 'P2PKH' ? 'p2pkh' : 'p2sh';\n switch (decoded.prefix) {\n case 'bitcoincash':\n return {\n hash,\n format: 'cashaddr',\n network: 'mainnet',\n type\n };\n case 'bchtest':\n case 'bchreg':\n return {\n hash,\n format: 'cashaddr',\n network: 'testnet',\n type\n };\n default:\n throw new Error('Unknown cashaddr prefix: ' + decoded.prefix);\n }\n};\nconst decodeCashAddress = address => {\n if (address.indexOf(':') !== -1) {\n return decodeCashAddressWithPrefix(address);\n } else {\n const prefixes = ['bitcoincash', 'bchtest', 'bchreg'];\n for (const prefix of prefixes) {\n try {\n return decodeCashAddressWithPrefix(prefix + ':' + address);\n } catch {}\n }\n }\n throw new Error('Invalid cashaddr address');\n};\nconst decodeAddress = address => {\n try {\n return decodeBase58Address(address);\n } catch {}\n try {\n return decodeCashAddress(address);\n } catch {}\n throw new Error('Invalid Bitcoin Cash address');\n};\nconst isCashAddress = address => decodeAddress(address).format === 'cashaddr';\nexports.isCashAddress = isCashAddress;\nconst toLegacyAddress = address => {\n const decoded = decodeAddress(address);\n if (decoded.format === 'legacy') {\n return address;\n }\n const version = VERSION_BYTE['legacy'][decoded.network][decoded.type];\n const buffer = Buffer.alloc(1 + decoded.hash.length);\n buffer[0] = version;\n buffer.set(decoded.hash, 1);\n return bs58check_1.default.encode(buffer);\n};\nexports.toLegacyAddress = toLegacyAddress;\nconst toCashAddress = address => {\n const decoded = decodeAddress(address);\n const prefix = decoded.network === 'mainnet' ? 'bitcoincash' : 'bchtest';\n const type = decoded.type === 'p2pkh' ? 'P2PKH' : 'P2SH';\n const hash = new Uint8Array(decoded.hash);\n return cashaddr.encode(prefix, type, hash);\n};\nexports.toCashAddress = toCashAddress;\n//# sourceMappingURL=bchUtils.js.map", "module.exports = require('stream');\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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}\n", "try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n", "\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n", "// 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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};", "// 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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "// 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\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n var iterator;\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts));\n // Reading boolean to protect against _read\n // being called before last iteration completion.\n var reading = false;\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n function next() {\n return _next2.apply(this, arguments);\n }\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _yield$iterator$next = yield iterator.next(),\n value = _yield$iterator$next.value,\n done = _yield$iterator$next.done;\n if (done) {\n readable.push(null);\n } else if (readable.push(yield value)) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n return readable;\n}\nmodule.exports = from;\n", "// 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\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}", "// 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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}", "// 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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;", "var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n", "const Transform = require('readable-stream').Transform\n\nmodule.exports = class Blake extends Transform {\n constructor (engine, options) {\n super(options)\n\n this._engine = engine\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._engine.update(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n let digest = this._engine.digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n return digest\n }\n}\n", "const Blake = require('./blake')\n\nmodule.exports = (engines) => {\n const getEngine = (algorithm) => {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'blake224': return engines.Blake224\n case 'blake256': return engines.Blake256\n case 'blake384': return engines.Blake384\n case 'blake512': return engines.Blake512\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n\n return (algorithm, options) => {\n const Engine = getEngine(algorithm)\n return new Blake(new Engine(), options)\n }\n}\n", "module.exports = require('./lib/api')(require('node-gyp-build')(__dirname))\n", "class Blake {\n _lengthCarry (arr) {\n for (let j = 0; j < arr.length; ++j) {\n if (arr[j] < 0x0100000000) break\n arr[j] -= 0x0100000000\n arr[j + 1] += 1\n }\n }\n\n update (data) {\n const block = this._block\n let offset = 0\n\n while (this._blockOffset + data.length - offset >= block.length) {\n for (let i = this._blockOffset; i < block.length;) block[i++] = data[offset++]\n\n this._length[0] += block.length * 8\n this._lengthCarry(this._length)\n\n this._compress()\n this._blockOffset = 0\n }\n\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n }\n}\n\nBlake.sigma = [\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n [14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],\n [11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],\n [7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],\n [9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],\n [2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],\n [12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],\n [13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],\n [6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],\n [10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0],\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n [14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],\n [11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],\n [7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],\n [9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],\n [2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9]\n]\n\nBlake.u256 = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917\n]\n\nBlake.u512 = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,\n 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n 0x9216d5d9, 0x8979fb1b, 0xd1310ba6, 0x98dfb5ac,\n 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,\n 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69\n]\n\nBlake.padding = Buffer.from([\n 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n])\n\nmodule.exports = Blake\n", "const Blake = require('./blake')\n\nconst zo = Buffer.from([0x01])\nconst oo = Buffer.from([0x81])\n\nconst rot = (x, n) => ((x << (32 - n)) | (x >>> n)) >>> 0\n\nfunction g (v, m, i, a, b, c, d, e) {\n const sigma = Blake.sigma\n const u256 = Blake.u256\n\n v[a] = (v[a] + ((m[sigma[i][e]] ^ u256[sigma[i][e + 1]]) >>> 0) + v[b]) >>> 0\n v[d] = rot(v[d] ^ v[a], 16)\n v[c] = (v[c] + v[d]) >>> 0\n v[b] = rot(v[b] ^ v[c], 12)\n v[a] = (v[a] + ((m[sigma[i][e + 1]] ^ u256[sigma[i][e]]) >>> 0) + v[b]) >>> 0\n v[d] = rot(v[d] ^ v[a], 8)\n v[c] = (v[c] + v[d]) >>> 0\n v[b] = rot(v[b] ^ v[c], 7)\n}\n\nmodule.exports = class Blake256 extends Blake {\n constructor () {\n super()\n\n this._h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ]\n\n this._s = [0, 0, 0, 0]\n\n this._block = Buffer.alloc(64)\n this._blockOffset = 0\n this._length = [0, 0]\n\n this._nullt = false\n\n this._zo = zo\n this._oo = oo\n }\n\n _compress () {\n const u256 = Blake.u256\n const v = new Array(16)\n const m = new Array(16)\n let i\n\n for (i = 0; i < 16; ++i) m[i] = this._block.readUInt32BE(i * 4)\n for (i = 0; i < 8; ++i) v[i] = this._h[i] >>> 0\n for (i = 8; i < 12; ++i) v[i] = (this._s[i - 8] ^ u256[i - 8]) >>> 0\n for (i = 12; i < 16; ++i) v[i] = u256[i - 8]\n\n if (!this._nullt) {\n v[12] = (v[12] ^ this._length[0]) >>> 0\n v[13] = (v[13] ^ this._length[0]) >>> 0\n v[14] = (v[14] ^ this._length[1]) >>> 0\n v[15] = (v[15] ^ this._length[1]) >>> 0\n }\n\n for (i = 0; i < 14; ++i) {\n /* column step */\n g(v, m, i, 0, 4, 8, 12, 0)\n g(v, m, i, 1, 5, 9, 13, 2)\n g(v, m, i, 2, 6, 10, 14, 4)\n g(v, m, i, 3, 7, 11, 15, 6)\n /* diagonal step */\n g(v, m, i, 0, 5, 10, 15, 8)\n g(v, m, i, 1, 6, 11, 12, 10)\n g(v, m, i, 2, 7, 8, 13, 12)\n g(v, m, i, 3, 4, 9, 14, 14)\n }\n\n for (i = 0; i < 16; ++i) this._h[i % 8] = (this._h[i % 8] ^ v[i]) >>> 0\n for (i = 0; i < 8; ++i) this._h[i] = (this._h[i] ^ this._s[i % 4]) >>> 0\n }\n\n _padding () {\n let lo = this._length[0] + this._blockOffset * 8\n let hi = this._length[1]\n if (lo >= 0x0100000000) {\n lo -= 0x0100000000\n hi += 1\n }\n\n const msglen = Buffer.alloc(8)\n msglen.writeUInt32BE(hi, 0)\n msglen.writeUInt32BE(lo, 4)\n\n if (this._blockOffset === 55) {\n this._length[0] -= 8\n this.update(this._oo)\n } else {\n if (this._blockOffset < 55) {\n if (this._blockOffset === 0) this._nullt = true\n this._length[0] -= (55 - this._blockOffset) * 8\n this.update(Blake.padding.slice(0, 55 - this._blockOffset))\n } else {\n this._length[0] -= (64 - this._blockOffset) * 8\n this.update(Blake.padding.slice(0, 64 - this._blockOffset))\n this._length[0] -= 55 * 8\n this.update(Blake.padding.slice(1, 1 + 55))\n this._nullt = true\n }\n\n this.update(this._zo)\n this._length[0] -= 8\n }\n\n this._length[0] -= 64\n this.update(msglen)\n }\n\n digest () {\n this._padding()\n\n const buffer = Buffer.alloc(32)\n for (let i = 0; i < 8; ++i) buffer.writeUInt32BE(this._h[i], i * 4)\n return buffer\n }\n}\n", "const Blake256 = require('./blake256')\n\nconst zo = Buffer.from([0x00])\nconst oo = Buffer.from([0x80])\n\nmodule.exports = class Blake224 extends Blake256 {\n constructor () {\n super()\n\n this._h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n ]\n\n this._zo = zo\n this._oo = oo\n }\n\n digest () {\n this._padding()\n\n const buffer = Buffer.alloc(28)\n for (let i = 0; i < 7; ++i) buffer.writeUInt32BE(this._h[i], i * 4)\n return buffer\n }\n}\n", "const Blake = require('./blake')\n\nconst zo = Buffer.from([0x01])\nconst oo = Buffer.from([0x81])\n\nfunction rot (v, i, j, n) {\n let hi = v[i * 2] ^ v[j * 2]\n let lo = v[i * 2 + 1] ^ v[j * 2 + 1]\n\n if (n >= 32) {\n lo = lo ^ hi\n hi = lo ^ hi\n lo = lo ^ hi\n n -= 32\n }\n\n if (n === 0) {\n v[i * 2] = hi >>> 0\n v[i * 2 + 1] = lo >>> 0\n } else {\n v[i * 2] = ((hi >>> n) | (lo << (32 - n))) >>> 0\n v[i * 2 + 1] = ((lo >>> n) | (hi << (32 - n))) >>> 0\n }\n}\n\nfunction g (v, m, i, a, b, c, d, e) {\n const sigma = Blake.sigma\n const u512 = Blake.u512\n let lo\n\n // v[a] += (m[sigma[i][e]] ^ u512[sigma[i][e+1]]) + v[b];\n lo = v[a * 2 + 1] + ((m[sigma[i][e] * 2 + 1] ^ u512[sigma[i][e + 1] * 2 + 1]) >>> 0) + v[b * 2 + 1]\n v[a * 2] = (v[a * 2] + ((m[sigma[i][e] * 2] ^ u512[sigma[i][e + 1] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0\n v[a * 2 + 1] = lo >>> 0\n\n // v[d] = ROT( v[d] ^ v[a],32);\n rot(v, d, a, 32)\n\n // v[c] += v[d];\n lo = v[c * 2 + 1] + v[d * 2 + 1]\n v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0\n v[c * 2 + 1] = lo >>> 0\n\n // v[b] = ROT( v[b] ^ v[c],25);\n rot(v, b, c, 25)\n\n // v[a] += (m[sigma[i][e+1]] ^ u512[sigma[i][e]])+v[b];\n lo = v[a * 2 + 1] + ((m[sigma[i][e + 1] * 2 + 1] ^ u512[sigma[i][e] * 2 + 1]) >>> 0) + v[b * 2 + 1]\n v[a * 2] = (v[a * 2] + ((m[sigma[i][e + 1] * 2] ^ u512[sigma[i][e] * 2]) >>> 0) + v[b * 2] + ~~(lo / 0x0100000000)) >>> 0\n v[a * 2 + 1] = lo >>> 0\n\n // v[d] = ROT( v[d] ^ v[a],16);\n rot(v, d, a, 16)\n\n // v[c] += v[d];\n lo = v[c * 2 + 1] + v[d * 2 + 1]\n v[c * 2] = (v[c * 2] + v[d * 2] + ~~(lo / 0x0100000000)) >>> 0\n v[c * 2 + 1] = lo >>> 0\n\n // v[b] = ROT( v[b] ^ v[c],11)\n rot(v, b, c, 11)\n}\n\nmodule.exports = class Blake512 extends Blake {\n constructor () {\n super()\n\n this._h = [\n 0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179\n ]\n\n this._s = [0, 0, 0, 0, 0, 0, 0, 0]\n\n this._block = Buffer.alloc(128)\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._nullt = false\n\n this._zo = zo\n this._oo = oo\n }\n\n _compress () {\n const u512 = Blake.u512\n const v = new Array(32)\n const m = new Array(32)\n let i\n\n for (i = 0; i < 32; ++i) m[i] = this._block.readUInt32BE(i * 4)\n for (i = 0; i < 16; ++i) v[i] = this._h[i] >>> 0\n for (i = 16; i < 24; ++i) v[i] = (this._s[i - 16] ^ u512[i - 16]) >>> 0\n for (i = 24; i < 32; ++i) v[i] = u512[i - 16]\n\n if (!this._nullt) {\n v[24] = (v[24] ^ this._length[1]) >>> 0\n v[25] = (v[25] ^ this._length[0]) >>> 0\n v[26] = (v[26] ^ this._length[1]) >>> 0\n v[27] = (v[27] ^ this._length[0]) >>> 0\n v[28] = (v[28] ^ this._length[3]) >>> 0\n v[29] = (v[29] ^ this._length[2]) >>> 0\n v[30] = (v[30] ^ this._length[3]) >>> 0\n v[31] = (v[31] ^ this._length[2]) >>> 0\n }\n\n for (i = 0; i < 16; ++i) {\n /* column step */\n g(v, m, i, 0, 4, 8, 12, 0)\n g(v, m, i, 1, 5, 9, 13, 2)\n g(v, m, i, 2, 6, 10, 14, 4)\n g(v, m, i, 3, 7, 11, 15, 6)\n /* diagonal step */\n g(v, m, i, 0, 5, 10, 15, 8)\n g(v, m, i, 1, 6, 11, 12, 10)\n g(v, m, i, 2, 7, 8, 13, 12)\n g(v, m, i, 3, 4, 9, 14, 14)\n }\n\n for (i = 0; i < 16; ++i) {\n this._h[(i % 8) * 2] = (this._h[(i % 8) * 2] ^ v[i * 2]) >>> 0\n this._h[(i % 8) * 2 + 1] = (this._h[(i % 8) * 2 + 1] ^ v[i * 2 + 1]) >>> 0\n }\n\n for (i = 0; i < 8; ++i) {\n this._h[i * 2] = (this._h[i * 2] ^ this._s[(i % 4) * 2]) >>> 0\n this._h[i * 2 + 1] = (this._h[i * 2 + 1] ^ this._s[(i % 4) * 2 + 1]) >>> 0\n }\n }\n\n _padding () {\n const len = this._length.slice()\n len[0] += this._blockOffset * 8\n this._lengthCarry(len)\n\n const msglen = Buffer.alloc(16)\n for (let i = 0; i < 4; ++i) msglen.writeUInt32BE(len[3 - i], i * 4)\n\n if (this._blockOffset === 111) {\n this._length[0] -= 8\n this.update(this._oo)\n } else {\n if (this._blockOffset < 111) {\n if (this._blockOffset === 0) this._nullt = true\n this._length[0] -= (111 - this._blockOffset) * 8\n this.update(Blake.padding.slice(0, 111 - this._blockOffset))\n } else {\n this._length[0] -= (128 - this._blockOffset) * 8\n this.update(Blake.padding.slice(0, 128 - this._blockOffset))\n this._length[0] -= 111 * 8\n this.update(Blake.padding.slice(1, 1 + 111))\n this._nullt = true\n }\n\n this.update(this._zo)\n this._length[0] -= 8\n }\n\n this._length[0] -= 128\n this.update(msglen)\n }\n\n digest () {\n this._padding()\n\n const buffer = Buffer.alloc(64)\n for (let i = 0; i < 16; ++i) buffer.writeUInt32BE(this._h[i], i * 4)\n return buffer\n }\n}\n", "const Blake512 = require('./blake512')\n\nconst zo = Buffer.from([0x00])\nconst oo = Buffer.from([0x80])\n\nmodule.exports = class Blake384 extends Blake512 {\n constructor () {\n super()\n\n this._h = [\n 0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4\n ]\n\n this._zo = zo\n this._oo = oo\n }\n\n digest () {\n this._padding()\n\n const buffer = Buffer.alloc(48)\n for (let i = 0; i < 12; ++i) buffer.writeUInt32BE(this._h[i], i * 4)\n return buffer\n }\n}\n", "module.exports = {\n Blake224: require('./blake224'),\n Blake256: require('./blake256'),\n Blake384: require('./blake384'),\n Blake512: require('./blake512')\n}\n", "module.exports = require('./lib/api')(require('./lib'))\n", "try {\n module.exports = require('./bindings')\n} catch (err) {\n module.exports = require('./js')\n}\n", "module.exports = require('crypto').createHmac\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ripemd160 = ripemd160;\nexports.sha1 = sha1;\nexports.sha256 = sha256;\nexports.blake256 = blake256;\nexports.hash160 = hash160;\nexports.hash160blake256 = hash160blake256;\nexports.hash256 = hash256;\nexports.hmacSHA512 = hmacSHA512;\nconst tslib_1 = require(\"tslib\");\nconst blake_hash_1 = tslib_1.__importDefault(require(\"blake-hash\"));\nconst create_hmac_1 = tslib_1.__importDefault(require(\"create-hmac\"));\nconst crypto_1 = require(\"crypto\");\nfunction ripemd160(buffer) {\n try {\n return (0, crypto_1.createHash)('rmd160').update(buffer).digest();\n } catch {\n return (0, crypto_1.createHash)('ripemd160').update(buffer).digest();\n }\n}\nfunction sha1(buffer) {\n return (0, crypto_1.createHash)('sha1').update(buffer).digest();\n}\nfunction sha256(buffer) {\n return (0, crypto_1.createHash)('sha256').update(buffer).digest();\n}\nfunction blake256(buffer) {\n return (0, blake_hash_1.default)('blake256').update(buffer).digest();\n}\nfunction hash160(buffer) {\n return ripemd160(sha256(buffer));\n}\nfunction hash160blake256(buffer) {\n return ripemd160(blake256(buffer));\n}\nfunction hash256(buffer) {\n return sha256(sha256(buffer));\n}\nfunction hmacSHA512(key, data) {\n return (0, create_hmac_1.default)('sha512', key).update(data).digest();\n}\n//# sourceMappingURL=crypto.js.map", "var types = {\n Array: function (value) { return value !== null && value !== undefined && value.constructor === Array },\n Boolean: function (value) { return typeof value === 'boolean' },\n Function: function (value) { return typeof value === 'function' },\n Nil: function (value) { return value === undefined || value === null },\n Number: function (value) { return typeof value === 'number' },\n Object: function (value) { return typeof value === 'object' },\n String: function (value) { return typeof value === 'string' },\n '': function () { return true }\n}\n\n// TODO: deprecate\ntypes.Null = types.Nil\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var native = require('./native')\n\nfunction getTypeName (fn) {\n return fn.name || fn.toString().match(/function (.*?)\\s*\\(/)[1]\n}\n\nfunction getValueTypeName (value) {\n return native.Nil(value) ? '' : getTypeName(value.constructor)\n}\n\nfunction getValue (value) {\n if (native.Function(value)) return ''\n if (native.String(value)) return JSON.stringify(value)\n if (value && native.Object(value)) return ''\n return value\n}\n\nfunction captureStackTrace (e, t) {\n if (Error.captureStackTrace) {\n Error.captureStackTrace(e, t)\n }\n}\n\nfunction tfJSON (type) {\n if (native.Function(type)) return type.toJSON ? type.toJSON() : getTypeName(type)\n if (native.Array(type)) return 'Array'\n if (type && native.Object(type)) return 'Object'\n\n return type !== undefined ? type : ''\n}\n\nfunction tfErrorString (type, value, valueTypeName) {\n var valueJson = getValue(value)\n\n return 'Expected ' + tfJSON(type) + ', got' +\n (valueTypeName !== '' ? ' ' + valueTypeName : '') +\n (valueJson !== '' ? ' ' + valueJson : '')\n}\n\nfunction TfTypeError (type, value, valueTypeName) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfErrorString(type, value, valueTypeName)\n\n captureStackTrace(this, TfTypeError)\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfTypeError.prototype = Object.create(Error.prototype)\nTfTypeError.prototype.constructor = TfTypeError\n\nfunction tfPropertyErrorString (type, label, name, value, valueTypeName) {\n var description = '\" of type '\n if (label === 'key') description = '\" with key type '\n\n return tfErrorString('property \"' + tfJSON(name) + description + tfJSON(type), value, valueTypeName)\n}\n\nfunction TfPropertyTypeError (type, property, label, value, valueTypeName) {\n if (type) {\n valueTypeName = valueTypeName || getValueTypeName(value)\n this.message = tfPropertyErrorString(type, label, property, value, valueTypeName)\n } else {\n this.message = 'Unexpected property \"' + property + '\"'\n }\n\n captureStackTrace(this, TfTypeError)\n this.__label = label\n this.__property = property\n this.__type = type\n this.__value = value\n this.__valueTypeName = valueTypeName\n}\n\nTfPropertyTypeError.prototype = Object.create(Error.prototype)\nTfPropertyTypeError.prototype.constructor = TfTypeError\n\nfunction tfCustomError (expected, actual) {\n return new TfTypeError(expected, {}, actual)\n}\n\nfunction tfSubError (e, property, label) {\n // sub child?\n if (e instanceof TfPropertyTypeError) {\n property = property + '.' + e.__property\n\n e = new TfPropertyTypeError(\n e.__type, property, e.__label, e.__value, e.__valueTypeName\n )\n\n // child?\n } else if (e instanceof TfTypeError) {\n e = new TfPropertyTypeError(\n e.__type, property, label, e.__value, e.__valueTypeName\n )\n }\n\n captureStackTrace(e)\n return e\n}\n\nmodule.exports = {\n TfTypeError: TfTypeError,\n TfPropertyTypeError: TfPropertyTypeError,\n tfCustomError: tfCustomError,\n tfSubError: tfSubError,\n tfJSON: tfJSON,\n getValueTypeName: getValueTypeName\n}\n", "var NATIVE = require('./native')\nvar ERRORS = require('./errors')\n\nfunction _Buffer (value) {\n return Buffer.isBuffer(value)\n}\n\nfunction Hex (value) {\n return typeof value === 'string' && /^([0-9a-f]{2})+$/i.test(value)\n}\n\nfunction _LengthN (type, length) {\n var name = type.toJSON()\n\n function Length (value) {\n if (!type(value)) return false\n if (value.length === length) return true\n\n throw ERRORS.tfCustomError(name + '(Length: ' + length + ')', name + '(Length: ' + value.length + ')')\n }\n Length.toJSON = function () { return name }\n\n return Length\n}\n\nvar _ArrayN = _LengthN.bind(null, NATIVE.Array)\nvar _BufferN = _LengthN.bind(null, _Buffer)\nvar _HexN = _LengthN.bind(null, Hex)\nvar _StringN = _LengthN.bind(null, NATIVE.String)\n\nfunction Range (a, b, f) {\n f = f || NATIVE.Number\n function _range (value, strict) {\n return f(value, strict) && (value > a) && (value < b)\n }\n _range.toJSON = function () {\n return `${f.toJSON()} between [${a}, ${b}]`\n }\n return _range\n}\n\nvar INT53_MAX = Math.pow(2, 53) - 1\n\nfunction Finite (value) {\n return typeof value === 'number' && isFinite(value)\n}\nfunction Int8 (value) { return ((value << 24) >> 24) === value }\nfunction Int16 (value) { return ((value << 16) >> 16) === value }\nfunction Int32 (value) { return (value | 0) === value }\nfunction Int53 (value) {\n return typeof value === 'number' &&\n value >= -INT53_MAX &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\nfunction UInt8 (value) { return (value & 0xff) === value }\nfunction UInt16 (value) { return (value & 0xffff) === value }\nfunction UInt32 (value) { return (value >>> 0) === value }\nfunction UInt53 (value) {\n return typeof value === 'number' &&\n value >= 0 &&\n value <= INT53_MAX &&\n Math.floor(value) === value\n}\n\nvar types = {\n ArrayN: _ArrayN,\n Buffer: _Buffer,\n BufferN: _BufferN,\n Finite: Finite,\n Hex: Hex,\n HexN: _HexN,\n Int8: Int8,\n Int16: Int16,\n Int32: Int32,\n Int53: Int53,\n Range: Range,\n StringN: _StringN,\n UInt8: UInt8,\n UInt16: UInt16,\n UInt32: UInt32,\n UInt53: UInt53\n}\n\nfor (var typeName in types) {\n types[typeName].toJSON = function (t) {\n return t\n }.bind(null, typeName)\n}\n\nmodule.exports = types\n", "var ERRORS = require('./errors')\nvar NATIVE = require('./native')\n\n// short-hand\nvar tfJSON = ERRORS.tfJSON\nvar TfTypeError = ERRORS.TfTypeError\nvar TfPropertyTypeError = ERRORS.TfPropertyTypeError\nvar tfSubError = ERRORS.tfSubError\nvar getValueTypeName = ERRORS.getValueTypeName\n\nvar TYPES = {\n arrayOf: function arrayOf (type, options) {\n type = compile(type)\n options = options || {}\n\n function _arrayOf (array, strict) {\n if (!NATIVE.Array(array)) return false\n if (NATIVE.Nil(array)) return false\n if (options.minLength !== undefined && array.length < options.minLength) return false\n if (options.maxLength !== undefined && array.length > options.maxLength) return false\n if (options.length !== undefined && array.length !== options.length) return false\n\n return array.every(function (value, i) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _arrayOf.toJSON = function () {\n var str = '[' + tfJSON(type) + ']'\n if (options.length !== undefined) {\n str += '{' + options.length + '}'\n } else if (options.minLength !== undefined || options.maxLength !== undefined) {\n str += '{' +\n (options.minLength === undefined ? 0 : options.minLength) + ',' +\n (options.maxLength === undefined ? Infinity : options.maxLength) + '}'\n }\n return str\n }\n\n return _arrayOf\n },\n\n maybe: function maybe (type) {\n type = compile(type)\n\n function _maybe (value, strict) {\n return NATIVE.Nil(value) || type(value, strict, maybe)\n }\n _maybe.toJSON = function () { return '?' + tfJSON(type) }\n\n return _maybe\n },\n\n map: function map (propertyType, propertyKeyType) {\n propertyType = compile(propertyType)\n if (propertyKeyType) propertyKeyType = compile(propertyKeyType)\n\n function _map (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n for (var propertyName in value) {\n try {\n if (propertyKeyType) {\n typeforce(propertyKeyType, propertyName, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName, 'key')\n }\n\n try {\n var propertyValue = value[propertyName]\n typeforce(propertyType, propertyValue, strict)\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n }\n\n return true\n }\n\n if (propertyKeyType) {\n _map.toJSON = function () {\n return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}'\n }\n } else {\n _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' }\n }\n\n return _map\n },\n\n object: function object (uncompiled) {\n var type = {}\n\n for (var typePropertyName in uncompiled) {\n type[typePropertyName] = compile(uncompiled[typePropertyName])\n }\n\n function _object (value, strict) {\n if (!NATIVE.Object(value)) return false\n if (NATIVE.Nil(value)) return false\n\n var propertyName\n\n try {\n for (propertyName in type) {\n var propertyType = type[propertyName]\n var propertyValue = value[propertyName]\n\n typeforce(propertyType, propertyValue, strict)\n }\n } catch (e) {\n throw tfSubError(e, propertyName)\n }\n\n if (strict) {\n for (propertyName in value) {\n if (type[propertyName]) continue\n\n throw new TfPropertyTypeError(undefined, propertyName)\n }\n }\n\n return true\n }\n _object.toJSON = function () { return tfJSON(type) }\n\n return _object\n },\n\n anyOf: function anyOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _anyOf (value, strict) {\n return types.some(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _anyOf.toJSON = function () { return types.map(tfJSON).join('|') }\n\n return _anyOf\n },\n\n allOf: function allOf () {\n var types = [].slice.call(arguments).map(compile)\n\n function _allOf (value, strict) {\n return types.every(function (type) {\n try {\n return typeforce(type, value, strict)\n } catch (e) {\n return false\n }\n })\n }\n _allOf.toJSON = function () { return types.map(tfJSON).join(' & ') }\n\n return _allOf\n },\n\n quacksLike: function quacksLike (type) {\n function _quacksLike (value) {\n return type === getValueTypeName(value)\n }\n _quacksLike.toJSON = function () { return type }\n\n return _quacksLike\n },\n\n tuple: function tuple () {\n var types = [].slice.call(arguments).map(compile)\n\n function _tuple (values, strict) {\n if (NATIVE.Nil(values)) return false\n if (NATIVE.Nil(values.length)) return false\n if (strict && (values.length !== types.length)) return false\n\n return types.every(function (type, i) {\n try {\n return typeforce(type, values[i], strict)\n } catch (e) {\n throw tfSubError(e, i)\n }\n })\n }\n _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' }\n\n return _tuple\n },\n\n value: function value (expected) {\n function _value (actual) {\n return actual === expected\n }\n _value.toJSON = function () { return expected }\n\n return _value\n }\n}\n\n// TODO: deprecate\nTYPES.oneOf = TYPES.anyOf\n\nfunction compile (type) {\n if (NATIVE.String(type)) {\n if (type[0] === '?') return TYPES.maybe(type.slice(1))\n\n return NATIVE[type] || TYPES.quacksLike(type)\n } else if (type && NATIVE.Object(type)) {\n if (NATIVE.Array(type)) {\n if (type.length !== 1) throw new TypeError('Expected compile() parameter of type Array of length 1')\n return TYPES.arrayOf(type[0])\n }\n\n return TYPES.object(type)\n } else if (NATIVE.Function(type)) {\n return type\n }\n\n return TYPES.value(type)\n}\n\nfunction typeforce (type, value, strict, surrogate) {\n if (NATIVE.Function(type)) {\n if (type(value, strict)) return true\n\n throw new TfTypeError(surrogate || type, value)\n }\n\n // JIT\n return typeforce(compile(type), value, strict)\n}\n\n// assign types to typeforce function\nfor (var typeName in NATIVE) {\n typeforce[typeName] = NATIVE[typeName]\n}\n\nfor (typeName in TYPES) {\n typeforce[typeName] = TYPES[typeName]\n}\n\nvar EXTRA = require('./extra')\nfor (typeName in EXTRA) {\n typeforce[typeName] = EXTRA[typeName]\n}\n\ntypeforce.compile = compile\ntypeforce.TfTypeError = TfTypeError\ntypeforce.TfPropertyTypeError = TfPropertyTypeError\n\nmodule.exports = typeforce\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.typeforce = exports.anyOf = exports.Nil = exports.BufferN = exports.Function = exports.UInt32 = exports.UInt16 = exports.UInt8 = exports.tuple = exports.maybe = exports.Hex = exports.Buffer = exports.String = exports.Boolean = exports.Array = exports.Number = exports.Hash256bit = exports.Hash160bit = exports.Buffer256bit = void 0;\nexports.Satoshi = Satoshi;\nconst tslib_1 = require(\"tslib\");\nconst typeforce_1 = tslib_1.__importDefault(require(\"typeforce\"));\nexports.typeforce = typeforce_1.default;\nconst SATOSHI_MAX = 21 * 1e14;\nfunction Satoshi(value) {\n return typeforce_1.default.UInt53(value) && value <= SATOSHI_MAX;\n}\nexports.Buffer256bit = typeforce_1.default.BufferN(32);\nexports.Hash160bit = typeforce_1.default.BufferN(20);\nexports.Hash256bit = typeforce_1.default.BufferN(32);\nexports.Number = typeforce_1.default.Number, exports.Array = typeforce_1.default.Array, exports.Boolean = typeforce_1.default.Boolean, exports.String = typeforce_1.default.String, exports.Buffer = typeforce_1.default.Buffer, exports.Hex = typeforce_1.default.Hex, exports.maybe = typeforce_1.default.maybe, exports.tuple = typeforce_1.default.tuple, exports.UInt8 = typeforce_1.default.UInt8, exports.UInt16 = typeforce_1.default.UInt16, exports.UInt32 = typeforce_1.default.UInt32, exports.Function = typeforce_1.default.Function, exports.BufferN = typeforce_1.default.BufferN, exports.Nil = typeforce_1.default.Nil, exports.anyOf = typeforce_1.default.anyOf;\n//# sourceMappingURL=typeforce.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.doge = exports.decredSim = exports.decredTest = exports.decred = exports.komodo = exports.peercoinTest = exports.peercoin = exports.zcashTest = exports.zcash = exports.dashTest = exports.dash = exports.litecoinTest = exports.litecoin = exports.bitcoingold = exports.bitcoincashTest = exports.bitcoincash = exports.testnet = exports.regtest = exports.bitcoin = void 0;\nexports.isNetworkType = isNetworkType;\nconst typeforce_1 = require(\"./types/typeforce\");\nexports.bitcoin = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bc',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80\n};\nexports.regtest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'bcrt',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef\n};\nexports.testnet = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: 'tb',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef\n};\nexports.bitcoincash = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x00,\n scriptHash: 0x05,\n wif: 0x80,\n forkId: 0x00\n};\nexports.bitcoincashTest = {\n messagePrefix: '\\x18Bitcoin Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0xef,\n forkId: 0x00\n};\nexports.bitcoingold = {\n messagePrefix: '\\x18Bitcoin Gold Signed Message:\\n',\n bech32: 'btg',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x26,\n scriptHash: 0x17,\n wif: 0x80,\n forkId: 0x4f\n};\nexports.litecoin = {\n messagePrefix: '\\x19Litecoin Signed Message:\\n',\n bech32: 'ltc',\n bip32: {\n public: 0x019da462,\n private: 0x019d9cfe\n },\n pubKeyHash: 0x30,\n scriptHash: 0x32,\n wif: 0xb0\n};\nexports.litecoinTest = {\n messagePrefix: '\\x19Litecoin Signed Message:\\n',\n bech32: 'tltc',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x6f,\n scriptHash: 0x3a,\n wif: 0xb0\n};\nexports.dash = {\n messagePrefix: '\\x19DarkCoin Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x02fe52cc,\n private: 0x2fe52f8\n },\n pubKeyHash: 0x4c,\n scriptHash: 0x10,\n wif: 0xcc\n};\nexports.dashTest = {\n messagePrefix: '\\x19DarkCoin Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x8c,\n scriptHash: 0x13,\n wif: 0xef\n};\nexports.zcash = {\n messagePrefix: '\\x18ZCash Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x1cb8,\n scriptHash: 0x1cbd,\n wif: 0x80\n};\nexports.zcashTest = {\n messagePrefix: '\\x18ZCash Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x043587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x1d25,\n scriptHash: 0x1cba,\n wif: 0xef\n};\nexports.peercoin = {\n messagePrefix: '\\x18Peercoin Signed Message:\\n',\n bech32: 'pc',\n bip32: {\n public: 0x488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x37,\n scriptHash: 0x75,\n wif: 0\n};\nexports.peercoinTest = {\n messagePrefix: '\\x18Peercoin Signed Message:\\n',\n bech32: 'tpc',\n bip32: {\n public: 0x43587cf,\n private: 0x04358394\n },\n pubKeyHash: 0x6f,\n scriptHash: 0xc4,\n wif: 0\n};\nexports.komodo = {\n messagePrefix: '\\x18Komodo Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x0488b21e,\n private: 0x0488ade4\n },\n pubKeyHash: 0x3c,\n scriptHash: 0x55,\n wif: 0xbc\n};\nexports.decred = {\n messagePrefix: '\\x17Decred Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x02fda926,\n private: 0x02fda4e8\n },\n pubKeyHash: 0x073f,\n scriptHash: 0x071a,\n wif: 0x22de\n};\nexports.decredTest = {\n messagePrefix: '\\x17Decred Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x043587d1,\n private: 0x04358397\n },\n pubKeyHash: 0x0f21,\n scriptHash: 0x0efc,\n wif: 0x230e\n};\nexports.decredSim = {\n messagePrefix: '\\x17Decred Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x0420bd3d,\n private: 0x0420b903\n },\n pubKeyHash: 0x0e91,\n scriptHash: 0x0e6c,\n wif: 0x2307\n};\nexports.doge = {\n messagePrefix: '\\x19Dogecoin Signed Message:\\n',\n bech32: '',\n bip32: {\n public: 0x02facafd,\n private: 0x02fac398\n },\n pubKeyHash: 0x1e,\n scriptHash: 0x16,\n wif: 0x9e\n};\nconst NETWORK_TYPES = {\n bitcoinCash: [exports.bitcoincash, exports.bitcoincashTest],\n dash: [exports.dash, exports.dashTest],\n decred: [exports.decred, exports.decredTest, exports.decredSim],\n peercoin: [exports.peercoin, exports.peercoinTest],\n zcash: [exports.zcash, exports.zcashTest, exports.komodo],\n litecoin: [exports.litecoin, exports.litecoinTest],\n doge: [exports.doge]\n};\nfunction isNetworkType(type, network) {\n if (typeof type !== 'string' || !network || !NETWORK_TYPES[type]) return false;\n try {\n (0, typeforce_1.typeforce)({\n bip32: {\n public: typeforce_1.typeforce.UInt32,\n private: typeforce_1.typeforce.UInt32\n },\n pubKeyHash: typeforce_1.typeforce.anyOf(typeforce_1.typeforce.UInt8, typeforce_1.typeforce.UInt16),\n scriptHash: typeforce_1.typeforce.anyOf(typeforce_1.typeforce.UInt8, typeforce_1.typeforce.UInt16)\n }, network);\n } catch {\n return false;\n }\n return !!NETWORK_TYPES[type].find(n => n.bip32.public === network.bip32.public && n.bip32.private === network.bip32.private && (!n.bech32 && !network.bech32 || n.bech32 === network.bech32) && (!n.forkId && !network.forkId || n.forkId === network.forkId) && n.pubKeyHash === network.pubKeyHash && n.scriptHash === network.scriptHash);\n}\n//# sourceMappingURL=networks.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decodeBlake = decodeBlake;\nexports.decodeBlake256Key = decodeBlake256Key;\nexports.decodeBlake256 = decodeBlake256;\nexports.encodeBlake256 = encodeBlake256;\nexports.encode = encode;\nexports.decode = decode;\nexports.decodeAddress = decodeAddress;\nexports.encodeAddress = encodeAddress;\nconst tslib_1 = require(\"tslib\");\nconst bs58_1 = tslib_1.__importDefault(require(\"bs58\"));\nconst bs58check_1 = tslib_1.__importDefault(require(\"bs58check\"));\nconst bchUtils_1 = require(\"./bchUtils\");\nconst crypto_1 = require(\"./crypto\");\nconst networks_1 = require(\"./networks\");\nfunction decodeBlake(buffer) {\n const want = buffer.subarray(-4);\n const payload = buffer.subarray(0, -4);\n const got = (0, crypto_1.blake256)((0, crypto_1.blake256)(payload)).subarray(0, 4);\n if (want[0] ^ got[0] | want[1] ^ got[1] | want[2] ^ got[2] | want[3] ^ got[3]) throw new Error('invalid checksum');\n return payload;\n}\nfunction decodeBlake256Key(key) {\n const bytes = bs58_1.default.decode(key);\n const buffer = Buffer.from(bytes);\n return decodeBlake(buffer);\n}\nfunction decodeBlake256(address) {\n const bytes = bs58_1.default.decode(address);\n const buffer = Buffer.from(bytes);\n if (buffer.length !== 26) throw new Error(`${address} invalid address length`);\n let payload;\n try {\n payload = decodeBlake(buffer);\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`${address} ${e.message}`);\n }\n throw new Error(`${address} ${e}`);\n }\n return payload;\n}\nfunction encodeBlake256(payload) {\n const checksum = (0, crypto_1.blake256)((0, crypto_1.blake256)(payload)).subarray(0, 4);\n return bs58_1.default.encode(Buffer.concat([payload, checksum]));\n}\nfunction encode(payload, network = networks_1.bitcoin) {\n return (0, networks_1.isNetworkType)('decred', network) ? encodeBlake256(payload) : bs58check_1.default.encode(payload);\n}\nfunction decode(payload, network = networks_1.bitcoin) {\n return (0, networks_1.isNetworkType)('decred', network) ? decodeBlake256(payload) : bs58check_1.default.decode(payload);\n}\nfunction decodeAddress(address, network = networks_1.bitcoin) {\n let payload;\n if ((0, networks_1.isNetworkType)('bitcoinCash', network)) {\n if (!(0, bchUtils_1.isCashAddress)(address)) throw Error(`${address} is not a cash address`);\n payload = Buffer.from(bs58check_1.default.decode((0, bchUtils_1.toLegacyAddress)(address)));\n } else {\n payload = Buffer.from(decode(address, network));\n }\n if (payload.length < 21) throw new TypeError(`${address} is too short`);\n if (payload.length > 22) throw new TypeError(`${address} is too long`);\n const multibyte = payload.length === 22;\n const offset = multibyte ? 2 : 1;\n const version = multibyte ? payload.readUInt16BE(0) : payload[0];\n const hash = payload.subarray(offset);\n return {\n version,\n hash\n };\n}\nfunction encodeAddress(hash, version, network = networks_1.bitcoin) {\n const multibyte = version > 0xff;\n const size = multibyte ? 22 : 21;\n const offset = multibyte ? 2 : 1;\n const payload = Buffer.allocUnsafe(size);\n if (multibyte) {\n payload.writeUInt16BE(version, 0);\n } else {\n payload.writeUInt8(version, 0);\n }\n hash.copy(payload, offset);\n const encoded = encode(payload, network);\n return (0, networks_1.isNetworkType)('bitcoinCash', network) ? (0, bchUtils_1.toCashAddress)(encoded) : encoded;\n}\n//# sourceMappingURL=bs58check.js.map", "\"use strict\";\n// Reference https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki\n// Format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n// NOTE: SIGHASH byte ignored AND restricted, truncate before use\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decode = exports.check = void 0;\nfunction check(buffer) {\n var ret = internalCheck(buffer);\n if (typeof ret === 'string') {\n return false;\n }\n else {\n return true;\n }\n}\nexports.check = check;\nfunction internalCheck(buffer) {\n if (buffer.length < 8)\n return 'DER sequence length is too short';\n if (buffer.length > 72)\n return 'DER sequence length is too long';\n if (buffer[0] !== 0x30)\n return 'Expected DER sequence (48)';\n if (buffer[1] !== buffer.length - 2)\n return 'DER sequence length is invalid';\n if (buffer[2] !== 0x02)\n return 'Expected DER integer (2)';\n var lenR = buffer[3];\n if (lenR === 0)\n return 'R length is zero';\n if (5 + lenR >= buffer.length)\n return 'R length is too long';\n if (buffer[4 + lenR] !== 0x02)\n return 'Expected DER integer (2)';\n var lenS = buffer[5 + lenR];\n if (lenS === 0)\n return 'S length is zero';\n if ((6 + lenR + lenS) !== buffer.length)\n return 'S length is invalid';\n if ((buffer[4] & 0x80) !== 0)\n return 'R value is negative';\n if (lenR > 1 && (buffer[4] === 0x00) && (buffer[5] & 0x80) === 0)\n return 'R value excessively padded';\n if ((buffer[lenR + 6] & 0x80) !== 0)\n return 'S value is negative';\n if (lenS > 1 && (buffer[lenR + 6] === 0x00) && (buffer[lenR + 7] & 0x80) === 0)\n return 'S value excessively padded';\n return lenR;\n}\nfunction decode(buffer) {\n var ret = internalCheck(buffer);\n if (typeof ret === 'string') {\n throw new Error(ret);\n }\n // non-BIP66 - extract R, S values\n return {\n r: buffer.subarray(4, 4 + ret),\n s: buffer.subarray(6 + ret)\n };\n}\nexports.decode = decode;\n/*\n * Expects r and s to be positive DER integers.\n *\n * The DER format uses the most significant bit as a sign bit (& 0x80).\n * If the significant bit is set AND the integer is positive, a 0x00 is prepended.\n *\n * Examples:\n *\n * 0 => 0x00\n * 1 => 0x01\n * -1 => 0xff\n * 127 => 0x7f\n * -127 => 0x81\n * 128 => 0x0080\n * -128 => 0x80\n * 255 => 0x00ff\n * -255 => 0xff01\n * 16300 => 0x3fac\n * -16300 => 0xc054\n * 62300 => 0x00f35c\n * -62300 => 0xff0ca4\n*/\nfunction encode(r, s) {\n var lenR = r.length;\n var lenS = s.length;\n if (lenR === 0)\n throw new Error('R length is zero');\n if (lenS === 0)\n throw new Error('S length is zero');\n if (lenR > 33)\n throw new Error('R length is too long');\n if (lenS > 33)\n throw new Error('S length is too long');\n if ((r[0] & 0x80) !== 0)\n throw new Error('R value is negative');\n if ((s[0] & 0x80) !== 0)\n throw new Error('S value is negative');\n if (lenR > 1 && (r[0] === 0x00) && (r[1] & 0x80) === 0)\n throw new Error('R value excessively padded');\n if (lenS > 1 && (s[0] === 0x00) && (s[1] & 0x80) === 0)\n throw new Error('S value excessively padded');\n var signature = new Uint8Array(6 + lenR + lenS);\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n signature[0] = 0x30;\n signature[1] = signature.length - 2;\n signature[2] = 0x02;\n signature[3] = r.length;\n signature.set(r, 4);\n signature[4 + lenR] = 0x02;\n signature[5 + lenR] = s.length;\n signature.set(s, 6 + lenR);\n return signature;\n}\nexports.encode = encode;\n", "{\n \"OP_FALSE\": 0,\n \"OP_0\": 0,\n \"OP_PUSHDATA1\": 76,\n \"OP_PUSHDATA2\": 77,\n \"OP_PUSHDATA4\": 78,\n \"OP_1NEGATE\": 79,\n \"OP_RESERVED\": 80,\n \"OP_TRUE\": 81,\n \"OP_1\": 81,\n \"OP_2\": 82,\n \"OP_3\": 83,\n \"OP_4\": 84,\n \"OP_5\": 85,\n \"OP_6\": 86,\n \"OP_7\": 87,\n \"OP_8\": 88,\n \"OP_9\": 89,\n \"OP_10\": 90,\n \"OP_11\": 91,\n \"OP_12\": 92,\n \"OP_13\": 93,\n \"OP_14\": 94,\n \"OP_15\": 95,\n \"OP_16\": 96,\n\n \"OP_NOP\": 97,\n \"OP_VER\": 98,\n \"OP_IF\": 99,\n \"OP_NOTIF\": 100,\n \"OP_VERIF\": 101,\n \"OP_VERNOTIF\": 102,\n \"OP_ELSE\": 103,\n \"OP_ENDIF\": 104,\n \"OP_VERIFY\": 105,\n \"OP_RETURN\": 106,\n\n \"OP_TOALTSTACK\": 107,\n \"OP_FROMALTSTACK\": 108,\n \"OP_2DROP\": 109,\n \"OP_2DUP\": 110,\n \"OP_3DUP\": 111,\n \"OP_2OVER\": 112,\n \"OP_2ROT\": 113,\n \"OP_2SWAP\": 114,\n \"OP_IFDUP\": 115,\n \"OP_DEPTH\": 116,\n \"OP_DROP\": 117,\n \"OP_DUP\": 118,\n \"OP_NIP\": 119,\n \"OP_OVER\": 120,\n \"OP_PICK\": 121,\n \"OP_ROLL\": 122,\n \"OP_ROT\": 123,\n \"OP_SWAP\": 124,\n \"OP_TUCK\": 125,\n\n \"OP_CAT\": 126,\n \"OP_SUBSTR\": 127,\n \"OP_LEFT\": 128,\n \"OP_RIGHT\": 129,\n \"OP_SIZE\": 130,\n\n \"OP_INVERT\": 131,\n \"OP_AND\": 132,\n \"OP_OR\": 133,\n \"OP_XOR\": 134,\n \"OP_EQUAL\": 135,\n \"OP_EQUALVERIFY\": 136,\n \"OP_RESERVED1\": 137,\n \"OP_RESERVED2\": 138,\n\n \"OP_1ADD\": 139,\n \"OP_1SUB\": 140,\n \"OP_2MUL\": 141,\n \"OP_2DIV\": 142,\n \"OP_NEGATE\": 143,\n \"OP_ABS\": 144,\n \"OP_NOT\": 145,\n \"OP_0NOTEQUAL\": 146,\n \"OP_ADD\": 147,\n \"OP_SUB\": 148,\n \"OP_MUL\": 149,\n \"OP_DIV\": 150,\n \"OP_MOD\": 151,\n \"OP_LSHIFT\": 152,\n \"OP_RSHIFT\": 153,\n\n \"OP_BOOLAND\": 154,\n \"OP_BOOLOR\": 155,\n \"OP_NUMEQUAL\": 156,\n \"OP_NUMEQUALVERIFY\": 157,\n \"OP_NUMNOTEQUAL\": 158,\n \"OP_LESSTHAN\": 159,\n \"OP_GREATERTHAN\": 160,\n \"OP_LESSTHANOREQUAL\": 161,\n \"OP_GREATERTHANOREQUAL\": 162,\n \"OP_MIN\": 163,\n \"OP_MAX\": 164,\n\n \"OP_WITHIN\": 165,\n\n \"OP_RIPEMD160\": 166,\n \"OP_SHA1\": 167,\n \"OP_SHA256\": 168,\n \"OP_HASH160\": 169,\n \"OP_HASH256\": 170,\n \"OP_CODESEPARATOR\": 171,\n \"OP_CHECKSIG\": 172,\n \"OP_CHECKSIGVERIFY\": 173,\n \"OP_CHECKMULTISIG\": 174,\n \"OP_CHECKMULTISIGVERIFY\": 175,\n\n \"OP_NOP1\": 176,\n \n \"OP_NOP2\": 177,\n \"OP_CHECKLOCKTIMEVERIFY\": 177,\n\n \"OP_NOP3\": 178,\n \"OP_CHECKSEQUENCEVERIFY\": 178,\n \n \"OP_NOP4\": 179,\n \"OP_NOP5\": 180,\n \"OP_NOP6\": 181,\n \"OP_NOP7\": 182,\n \"OP_NOP8\": 183,\n \"OP_NOP9\": 184,\n \"OP_NOP10\": 185,\n\n \"OP_PUBKEYHASH\": 253,\n \"OP_PUBKEY\": 254,\n \"OP_INVALIDOPCODE\": 255\n}\n", "var OPS = require('bitcoin-ops')\n\nfunction encodingLength (i) {\n return i < OPS.OP_PUSHDATA1 ? 1\n : i <= 0xff ? 2\n : i <= 0xffff ? 3\n : 5\n}\n\nfunction encode (buffer, number, offset) {\n var size = encodingLength(number)\n\n // ~6 bit\n if (size === 1) {\n buffer.writeUInt8(number, offset)\n\n // 8 bit\n } else if (size === 2) {\n buffer.writeUInt8(OPS.OP_PUSHDATA1, offset)\n buffer.writeUInt8(number, offset + 1)\n\n // 16 bit\n } else if (size === 3) {\n buffer.writeUInt8(OPS.OP_PUSHDATA2, offset)\n buffer.writeUInt16LE(number, offset + 1)\n\n // 32 bit\n } else {\n buffer.writeUInt8(OPS.OP_PUSHDATA4, offset)\n buffer.writeUInt32LE(number, offset + 1)\n }\n\n return size\n}\n\nfunction decode (buffer, offset) {\n var opcode = buffer.readUInt8(offset)\n var number, size\n\n // ~6 bit\n if (opcode < OPS.OP_PUSHDATA1) {\n number = opcode\n size = 1\n\n // 8 bit\n } else if (opcode === OPS.OP_PUSHDATA1) {\n if (offset + 2 > buffer.length) return null\n number = buffer.readUInt8(offset + 1)\n size = 2\n\n // 16 bit\n } else if (opcode === OPS.OP_PUSHDATA2) {\n if (offset + 3 > buffer.length) return null\n number = buffer.readUInt16LE(offset + 1)\n size = 3\n\n // 32 bit\n } else {\n if (offset + 5 > buffer.length) return null\n if (opcode !== OPS.OP_PUSHDATA4) throw new Error('Unexpected opcode')\n\n number = buffer.readUInt32LE(offset + 1)\n size = 5\n }\n\n return {\n opcode: opcode,\n number: number,\n size: size\n }\n}\n\nmodule.exports = {\n encodingLength: encodingLength,\n encode: encode,\n decode: decode\n}\n", "\n/**\n * Module dependencies.\n */\n\nvar sep = require('path').sep || '/';\n\n/**\n * Module exports.\n */\n\nmodule.exports = fileUriToPath;\n\n/**\n * File URI to Path function.\n *\n * @param {String} uri\n * @return {String} path\n * @api public\n */\n\nfunction fileUriToPath (uri) {\n if ('string' != typeof uri ||\n uri.length <= 7 ||\n 'file://' != uri.substring(0, 7)) {\n throw new TypeError('must pass in a file:// URI to convert to a file path');\n }\n\n var rest = decodeURI(uri.substring(7));\n var firstSlash = rest.indexOf('/');\n var host = rest.substring(0, firstSlash);\n var path = rest.substring(firstSlash + 1);\n\n // 2. Scheme Definition\n // As a special case, can be the string \"localhost\" or the empty\n // string; this is interpreted as \"the machine from which the URL is\n // being interpreted\".\n if ('localhost' == host) host = '';\n\n if (host) {\n host = sep + sep + host;\n }\n\n // 3.2 Drives, drive letters, mount points, file system root\n // Drive letters are mapped into the top of a file URI in various ways,\n // depending on the implementation; some applications substitute\n // vertical bar (\"|\") for the colon after the drive letter, yielding\n // \"file:///c|/tmp/test.txt\". In some cases, the colon is left\n // unchanged, as in \"file:///c:/tmp/test.txt\". In other cases, the\n // colon is simply omitted, as in \"file:///c/tmp/test.txt\".\n path = path.replace(/^(.+)\\|/, '$1:');\n\n // for Windows, we need to invert the path separators from what a URI uses\n if (sep == '\\\\') {\n path = path.replace(/\\//g, '\\\\');\n }\n\n if (/^.+\\:/.test(path)) {\n // has Windows drive at beginning of path\n } else {\n // unix path\u2026\n path = sep + path;\n }\n\n return host + path;\n}\n", "/**\n * Module dependencies.\n */\n\nvar fs = require('fs'),\n path = require('path'),\n fileURLToPath = require('file-uri-to-path'),\n join = path.join,\n dirname = path.dirname,\n exists =\n (fs.accessSync &&\n function(path) {\n try {\n fs.accessSync(path);\n } catch (e) {\n return false;\n }\n return true;\n }) ||\n fs.existsSync ||\n path.existsSync,\n defaults = {\n arrow: process.env.NODE_BINDINGS_ARROW || ' \u2192 ',\n compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled',\n platform: process.platform,\n arch: process.arch,\n nodePreGyp:\n 'node-v' +\n process.versions.modules +\n '-' +\n process.platform +\n '-' +\n process.arch,\n version: process.versions.node,\n bindings: 'bindings.node',\n try: [\n // node-gyp's linked version in the \"build\" dir\n ['module_root', 'build', 'bindings'],\n // node-waf and gyp_addon (a.k.a node-gyp)\n ['module_root', 'build', 'Debug', 'bindings'],\n ['module_root', 'build', 'Release', 'bindings'],\n // Debug files, for development (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Debug', 'bindings'],\n ['module_root', 'Debug', 'bindings'],\n // Release files, but manually compiled (legacy behavior, remove for node v0.9)\n ['module_root', 'out', 'Release', 'bindings'],\n ['module_root', 'Release', 'bindings'],\n // Legacy from node-waf, node <= 0.4.x\n ['module_root', 'build', 'default', 'bindings'],\n // Production \"Release\" buildtype binary (meh...)\n ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'],\n // node-qbs builds\n ['module_root', 'addon-build', 'release', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'],\n ['module_root', 'addon-build', 'default', 'install-root', 'bindings'],\n // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch}\n ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings']\n ]\n };\n\n/**\n * The main `bindings()` function loads the compiled bindings for a given module.\n * It uses V8's Error API to determine the parent filename that this function is\n * being invoked from, which is then used to find the root directory.\n */\n\nfunction bindings(opts) {\n // Argument surgery\n if (typeof opts == 'string') {\n opts = { bindings: opts };\n } else if (!opts) {\n opts = {};\n }\n\n // maps `defaults` onto `opts` object\n Object.keys(defaults).map(function(i) {\n if (!(i in opts)) opts[i] = defaults[i];\n });\n\n // Get the module root\n if (!opts.module_root) {\n opts.module_root = exports.getRoot(exports.getFileName());\n }\n\n // Ensure the given bindings name ends with .node\n if (path.extname(opts.bindings) != '.node') {\n opts.bindings += '.node';\n }\n\n // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035\n var requireFunc =\n typeof __webpack_require__ === 'function'\n ? __non_webpack_require__\n : require;\n\n var tries = [],\n i = 0,\n l = opts.try.length,\n n,\n b,\n err;\n\n for (; i < l; i++) {\n n = join.apply(\n null,\n opts.try[i].map(function(p) {\n return opts[p] || p;\n })\n );\n tries.push(n);\n try {\n b = opts.path ? requireFunc.resolve(n) : requireFunc(n);\n if (!opts.path) {\n b.path = n;\n }\n return b;\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND' &&\n e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' &&\n !/not find/i.test(e.message)) {\n throw e;\n }\n }\n }\n\n err = new Error(\n 'Could not locate the bindings file. Tried:\\n' +\n tries\n .map(function(a) {\n return opts.arrow + a;\n })\n .join('\\n')\n );\n err.tries = tries;\n throw err;\n}\nmodule.exports = exports = bindings;\n\n/**\n * Gets the filename of the JavaScript file that invokes this function.\n * Used to help find the root directory of a module.\n * Optionally accepts an filename argument to skip when searching for the invoking filename\n */\n\nexports.getFileName = function getFileName(calling_file) {\n var origPST = Error.prepareStackTrace,\n origSTL = Error.stackTraceLimit,\n dummy = {},\n fileName;\n\n Error.stackTraceLimit = 10;\n\n Error.prepareStackTrace = function(e, st) {\n for (var i = 0, l = st.length; i < l; i++) {\n fileName = st[i].getFileName();\n if (fileName !== __filename) {\n if (calling_file) {\n if (fileName !== calling_file) {\n return;\n }\n } else {\n return;\n }\n }\n }\n };\n\n // run the 'prepareStackTrace' function above\n Error.captureStackTrace(dummy);\n dummy.stack;\n\n // cleanup\n Error.prepareStackTrace = origPST;\n Error.stackTraceLimit = origSTL;\n\n // handle filename that starts with \"file://\"\n var fileSchema = 'file://';\n if (fileName.indexOf(fileSchema) === 0) {\n fileName = fileURLToPath(fileName);\n }\n\n return fileName;\n};\n\n/**\n * Gets the root directory of a module, given an arbitrary filename\n * somewhere in the module tree. The \"root directory\" is the directory\n * containing the `package.json` file.\n *\n * In: /home/nate/node-native-module/lib/index.js\n * Out: /home/nate/node-native-module\n */\n\nexports.getRoot = function getRoot(file) {\n var dir = dirname(file),\n prev;\n while (true) {\n if (dir === '.') {\n // Avoids an infinite loop in rare cases, like the REPL\n dir = process.cwd();\n }\n if (\n exists(join(dir, 'package.json')) ||\n exists(join(dir, 'node_modules'))\n ) {\n // Found the 'package.json' file or 'node_modules' dir; we're done\n return dir;\n }\n if (prev === dir) {\n // Got to the top\n throw new Error(\n 'Could not find module root given file: \"' +\n file +\n '\". Do you have a `package.json` file? '\n );\n }\n // Try the parent dir next\n prev = dir;\n dir = join(dir, '..');\n }\n};\n", "'use strict'\n\nlet binding = require('bindings')('secp256k1')\ndelete binding.path\n\n// NaN drops function names, add them for is* (via toJSON)\nfor (let key in binding) {\n if (key.indexOf('is') !== 0) continue\n\n binding[key].toJSON = function () { return key }\n}\n\nmodule.exports = binding\n", "(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 // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\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 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 r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\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 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 BN.prototype.inspect = function inspect () {\n return (this.red ? '';\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.modn(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);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\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] & (1 << wbit)) >>> wbit;\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 var fftm = new FFTM();\n return fftm.mulp(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 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 this.length = num === 0 ? 1 : this.length;\n\n return 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.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(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.modn = function modn (num) {\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 acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\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 return this.strip();\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 BN v4 instance\n r.strip();\n } else {\n // r is 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 return a.umod(this.m)._forceRed(this);\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", "{\n \"name\": \"elliptic\",\n \"version\": \"6.6.1\",\n \"description\": \"EC cryptography\",\n \"main\": \"lib/elliptic.js\",\n \"files\": [\n \"lib\"\n ],\n \"scripts\": {\n \"lint\": \"eslint lib test\",\n \"lint:fix\": \"npm run lint -- --fix\",\n \"unit\": \"istanbul test _mocha --reporter=spec test/index.js\",\n \"test\": \"npm run lint && npm run unit\",\n \"version\": \"grunt dist && git add dist/\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git@github.com:indutny/elliptic\"\n },\n \"keywords\": [\n \"EC\",\n \"Elliptic\",\n \"curve\",\n \"Cryptography\"\n ],\n \"author\": \"Fedor Indutny \",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/indutny/elliptic/issues\"\n },\n \"homepage\": \"https://github.com/indutny/elliptic\",\n \"devDependencies\": {\n \"brfs\": \"^2.0.2\",\n \"coveralls\": \"^3.1.0\",\n \"eslint\": \"^7.6.0\",\n \"grunt\": \"^1.2.1\",\n \"grunt-browserify\": \"^5.3.0\",\n \"grunt-cli\": \"^1.3.2\",\n \"grunt-contrib-connect\": \"^3.0.0\",\n \"grunt-contrib-copy\": \"^1.0.0\",\n \"grunt-contrib-uglify\": \"^5.0.0\",\n \"grunt-mocha-istanbul\": \"^5.0.2\",\n \"grunt-saucelabs\": \"^9.0.1\",\n \"istanbul\": \"^0.4.5\",\n \"mocha\": \"^8.0.1\"\n },\n \"dependencies\": {\n \"bn.js\": \"^4.11.9\",\n \"brorand\": \"^1.1.0\",\n \"hash.js\": \"^1.0.0\",\n \"hmac-drbg\": \"^1.0.1\",\n \"inherits\": \"^2.0.4\",\n \"minimalistic-assert\": \"^1.0.1\",\n \"minimalistic-crypto-utils\": \"^1.0.1\"\n }\n}\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n if(buf[p.place] === 0x00) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = (str.length + 1) >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number',\n 'Expected message to be an array-like, a hex string, or a BN instance');\n assert((msg.length >>> 0) === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert((new BN(nonce)).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options)\n options = {};\n\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "const createHmac = require('create-hmac')\n\nconst ONE1 = Buffer.alloc(1, 1)\nconst ZERO1 = Buffer.alloc(1, 0)\n\n// https://tools.ietf.org/html/rfc6979#section-3.2\nfunction deterministicGenerateK (hash, x, checkSig, isPrivate, extraEntropy) {\n // Step A, ignored as hash already provided\n // Step B\n // Step C\n let k = Buffer.alloc(32, 0)\n let v = Buffer.alloc(32, 1)\n\n // Step D\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step E\n v = createHmac('sha256', k).update(v).digest()\n\n // Step F\n k = createHmac('sha256', k)\n .update(v)\n .update(ONE1)\n .update(x)\n .update(hash)\n .update(extraEntropy || '')\n .digest()\n\n // Step G\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, ignored as tlen === qlen (256 bit)\n // Step H2b\n v = createHmac('sha256', k).update(v).digest()\n\n let T = v\n\n // Step H3, repeat until T is within the interval [1, n - 1] and is suitable for ECDSA\n while (!isPrivate(T) || !checkSig(T)) {\n k = createHmac('sha256', k)\n .update(v)\n .update(ZERO1)\n .digest()\n\n v = createHmac('sha256', k).update(v).digest()\n\n // Step H1/H2a, again, ignored as tlen === qlen (256 bit)\n // Step H2b again\n v = createHmac('sha256', k).update(v).digest()\n T = v\n }\n\n return T\n}\n\nmodule.exports = deterministicGenerateK\n", "const BN = require('bn.js')\nconst EC = require('elliptic').ec\nconst secp256k1 = new EC('secp256k1')\nconst deterministicGenerateK = require('./rfc6979')\n\nconst ZERO32 = Buffer.alloc(32, 0)\nconst EC_GROUP_ORDER = Buffer.from('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 'hex')\nconst EC_P = Buffer.from('fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f', 'hex')\n\nconst n = secp256k1.curve.n\nconst nDiv2 = n.shrn(1)\nconst G = secp256k1.curve.g\n\nconst THROW_BAD_PRIVATE = 'Expected Private'\nconst THROW_BAD_POINT = 'Expected Point'\nconst THROW_BAD_TWEAK = 'Expected Tweak'\nconst THROW_BAD_HASH = 'Expected Hash'\nconst THROW_BAD_SIGNATURE = 'Expected Signature'\nconst THROW_BAD_EXTRA_DATA = 'Expected Extra Data (32 bytes)'\n\nfunction isScalar (x) {\n return (x instanceof Uint8Array) && x.length === 32\n}\n\nfunction isOrderScalar (x) {\n if (!isScalar(x)) return false\n return EC_GROUP_ORDER.compare(x) > 0 // < G\n}\n\nfunction isPoint (p) {\n if (!(p instanceof Uint8Array)) return false\n if (p.length < 33) return false\n\n const t = p[0]\n const x = p.subarray(1, 33)\n if (ZERO32.compare(x) === 0) return false\n if (EC_P.compare(x) <= 0) return false\n if ((t === 0x02 || t === 0x03) && p.length === 33) {\n try { decodeFrom(p) } catch (e) { return false } // TODO: temporary\n return true\n }\n\n const y = p.subarray(33)\n if (ZERO32.compare(y) === 0) return false\n if (EC_P.compare(y) <= 0) return false\n if (t === 0x04 && p.length === 65) return true\n return false\n}\n\nfunction __isPointCompressed (p) {\n return p[0] !== 0x04\n}\n\nfunction isPointCompressed (p) {\n if (!isPoint(p)) return false\n return __isPointCompressed(p)\n}\n\nfunction isPrivate (x) {\n if (!isScalar(x)) return false\n return ZERO32.compare(x) < 0 && // > 0\n EC_GROUP_ORDER.compare(x) > 0 // < G\n}\n\nfunction isSignature (value) {\n const r = value.subarray(0, 32)\n const s = value.subarray(32, 64)\n return (value instanceof Uint8Array) && value.length === 64 &&\n EC_GROUP_ORDER.compare(r) > 0 &&\n EC_GROUP_ORDER.compare(s) > 0\n}\n\nfunction assumeCompression (value, pubkey) {\n if (value === undefined && pubkey !== undefined) return __isPointCompressed(pubkey)\n if (value === undefined) return true\n return value\n}\n\nfunction fromBuffer (d) { return new BN(d) }\nfunction toBuffer (d) { return d.toArrayLike(Buffer, 'be', 32) }\nfunction decodeFrom (P) { return secp256k1.curve.decodePoint(P) }\nfunction getEncoded (P, compressed) { return Buffer.from(P._encode(compressed)) }\n\nfunction pointAdd (pA, pB, __compressed) {\n if (!isPoint(pA)) throw new TypeError(THROW_BAD_POINT)\n if (!isPoint(pB)) throw new TypeError(THROW_BAD_POINT)\n\n const a = decodeFrom(pA)\n const b = decodeFrom(pB)\n const pp = a.add(b)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed, pA)\n return getEncoded(pp, compressed)\n}\n\nfunction pointAddScalar (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n if (ZERO32.compare(tweak) === 0) return getEncoded(pp, compressed)\n\n const tt = fromBuffer(tweak)\n const qq = G.mul(tt)\n const uu = pp.add(qq)\n if (uu.isInfinity()) return null\n\n return getEncoded(uu, compressed)\n}\n\nfunction pointCompress (p, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n\n const pp = decodeFrom(p)\n if (pp.isInfinity()) throw new TypeError(THROW_BAD_POINT)\n\n const compressed = assumeCompression(__compressed, p)\n\n return getEncoded(pp, compressed)\n}\n\nfunction pointFromScalar (d, __compressed) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n\n const dd = fromBuffer(d)\n const pp = G.mul(dd)\n if (pp.isInfinity()) return null\n\n const compressed = assumeCompression(__compressed)\n return getEncoded(pp, compressed)\n}\n\nfunction pointMultiply (p, tweak, __compressed) {\n if (!isPoint(p)) throw new TypeError(THROW_BAD_POINT)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const compressed = assumeCompression(__compressed, p)\n const pp = decodeFrom(p)\n const tt = fromBuffer(tweak)\n const qq = pp.mul(tt)\n if (qq.isInfinity()) return null\n\n return getEncoded(qq, compressed)\n}\n\nfunction privateAdd (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.add(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction privateSub (d, tweak) {\n if (!isPrivate(d)) throw new TypeError(THROW_BAD_PRIVATE)\n if (!isOrderScalar(tweak)) throw new TypeError(THROW_BAD_TWEAK)\n\n const dd = fromBuffer(d)\n const tt = fromBuffer(tweak)\n const dt = toBuffer(dd.sub(tt).umod(n))\n if (!isPrivate(dt)) return null\n\n return dt\n}\n\nfunction sign (hash, x) {\n return __sign(hash, x)\n}\n\nfunction signWithEntropy (hash, x, addData) {\n return __sign(hash, x, addData)\n}\n\nfunction __sign (hash, x, addData) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPrivate(x)) throw new TypeError(THROW_BAD_PRIVATE)\n if (addData !== undefined && !isScalar(addData)) throw new TypeError(THROW_BAD_EXTRA_DATA)\n\n const d = fromBuffer(x)\n const e = fromBuffer(hash)\n\n let r, s\n const checkSig = function (k) {\n const kI = fromBuffer(k)\n const Q = G.mul(kI)\n\n if (Q.isInfinity()) return false\n\n r = Q.x.umod(n)\n if (r.isZero() === 0) return false\n\n s = kI\n .invm(n)\n .mul(e.add(d.mul(r)))\n .umod(n)\n if (s.isZero() === 0) return false\n\n return true\n }\n\n deterministicGenerateK(hash, x, checkSig, isPrivate, addData)\n\n // enforce low S values, see bip62: 'low s values in signatures'\n if (s.cmp(nDiv2) > 0) {\n s = n.sub(s)\n }\n\n const buffer = Buffer.allocUnsafe(64)\n toBuffer(r).copy(buffer, 0)\n toBuffer(s).copy(buffer, 32)\n return buffer\n}\n\nfunction verify (hash, q, signature, strict) {\n if (!isScalar(hash)) throw new TypeError(THROW_BAD_HASH)\n if (!isPoint(q)) throw new TypeError(THROW_BAD_POINT)\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (1, isSignature enforces '< n - 1')\n if (!isSignature(signature)) throw new TypeError(THROW_BAD_SIGNATURE)\n\n const Q = decodeFrom(q)\n const r = fromBuffer(signature.subarray(0, 32))\n const s = fromBuffer(signature.subarray(32, 64))\n\n if (strict && s.cmp(nDiv2) > 0) {\n return false\n }\n\n // 1.4.1 Enforce r and s are both integers in the interval [1, n \u2212 1] (2, enforces '> 0')\n if (r.gtn(0) <= 0 /* || r.compareTo(n) >= 0 */) return false\n if (s.gtn(0) <= 0 /* || s.compareTo(n) >= 0 */) return false\n\n // 1.4.2 H = Hash(M), already done by the user\n // 1.4.3 e = H\n const e = fromBuffer(hash)\n\n // Compute s^-1\n const sInv = s.invm(n)\n\n // 1.4.4 Compute u1 = es^\u22121 mod n\n // u2 = rs^\u22121 mod n\n const u1 = e.mul(sInv).umod(n)\n const u2 = r.mul(sInv).umod(n)\n\n // 1.4.5 Compute R = (xR, yR)\n // R = u1G + u2Q\n const R = G.mulAdd(u1, Q, u2)\n\n // 1.4.5 (cont.) Enforce R is not at infinity\n if (R.isInfinity()) return false\n\n // 1.4.6 Convert the field element R.x to an integer\n const xR = R.x\n\n // 1.4.7 Set v = xR mod n\n const v = xR.umod(n)\n\n // 1.4.8 If v = r, output \"valid\", and if v != r, output \"invalid\"\n return v.eq(r)\n}\n\nmodule.exports = {\n isPoint,\n isPointCompressed,\n isPrivate,\n pointAdd,\n pointAddScalar,\n pointCompress,\n pointFromScalar,\n pointMultiply,\n privateAdd,\n privateSub,\n sign,\n signWithEntropy,\n verify\n}\n", "'use strict'\n\ntry {\n module.exports = require('./native')\n} catch (err) {\n module.exports = require('./js')\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.REVERSE_OPS = exports.OPS = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ops = tslib_1.__importStar(require(\"bitcoin-ops\"));\nconst OPS = {\n ...ops,\n OP_SSTX: 0xba,\n OP_SSTXCHANGE: 0xbd,\n OP_SSGEN: 0xbb,\n OP_SSRTX: 0xbc\n};\nexports.OPS = OPS;\nconst REVERSE_OPS = [];\nexports.REVERSE_OPS = REVERSE_OPS;\nObject.keys(OPS).forEach(code => {\n REVERSE_OPS[OPS[code]] = code;\n});\n//# sourceMappingURL=ops.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decode = decode;\nexports.encode = encode;\nfunction decode(buffer, maxLength = 4, minimal = true) {\n const {\n length\n } = buffer;\n if (length === 0) return 0;\n if (length > maxLength) throw new TypeError('Script number overflow');\n if (minimal) {\n if ((buffer[length - 1] & 0x7f) === 0) {\n if (length <= 1 || (buffer[length - 2] & 0x80) === 0) throw new Error('Non-minimally encoded script number');\n }\n }\n if (length === 5) {\n const a = buffer.readUInt32LE(0);\n const b = buffer.readUInt8(4);\n if (b & 0x80) return -((b & ~0x80) * 0x100000000 + a);\n return b * 0x100000000 + a;\n }\n let result = 0;\n for (let i = 0; i < length; ++i) {\n result |= buffer[i] << 8 * i;\n }\n if (buffer[length - 1] & 0x80) return -(result & ~(0x80 << 8 * (length - 1)));\n return result;\n}\nfunction scriptNumSize(i) {\n if (i > 0x7fffffff) return 5;\n if (i > 0x7fffff) return 4;\n if (i > 0x7fff) return 3;\n if (i > 0x7f) return 2;\n if (i > 0x00) return 1;\n return 0;\n}\nfunction encode(number) {\n let value = Math.abs(number);\n const size = scriptNumSize(value);\n const buffer = Buffer.allocUnsafe(size);\n const negative = number < 0;\n for (let i = 0; i < size; ++i) {\n buffer.writeUInt8(value & 0xff, i);\n value >>= 8;\n }\n if (buffer[size - 1] & 0x80) {\n buffer.writeUInt8(negative ? 0x80 : 0x00, size - 1);\n } else if (negative) {\n buffer[size - 1] |= 0x80;\n }\n return buffer;\n}\n//# sourceMappingURL=scriptNumber.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=coinselect.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.COMPOSE_ERROR_TYPES = void 0;\nexports.COMPOSE_ERROR_TYPES = ['MISSING-UTXOS', 'MISSING-OUTPUTS', 'INCORRECT-FEE-RATE', 'NOT-ENOUGH-FUNDS'];\n//# sourceMappingURL=compose.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=payments.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./coinselect\"), exports);\ntslib_1.__exportStar(require(\"./compose\"), exports);\ntslib_1.__exportStar(require(\"./payments\"), exports);\ntslib_1.__exportStar(require(\"./typeforce\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toDER = toDER;\nexports.fromDER = fromDER;\nexports.decode = decode;\nexports.encode = encode;\nconst tslib_1 = require(\"tslib\");\nconst bip66 = tslib_1.__importStar(require(\"bip66\"));\nconst types = tslib_1.__importStar(require(\"../types\"));\nconst ZERO = Buffer.alloc(1, 0);\nfunction toDER(x) {\n let i = 0;\n while (x[i] === 0) ++i;\n if (i === x.length) return ZERO;\n x = x.subarray(i);\n if (x[0] & 0x80) return Buffer.concat([ZERO, x], 1 + x.length);\n return x;\n}\nfunction fromDER(x) {\n if (x[0] === 0x00) x = x.subarray(1);\n const buffer = Buffer.alloc(32, 0);\n const bstart = Math.max(0, 32 - x.length);\n x.copy(buffer, bstart);\n return buffer;\n}\nfunction decode(buffer) {\n const hashType = buffer.readUInt8(buffer.length - 1);\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error(`Invalid hashType ${hashType}`);\n const decoded = bip66.decode(buffer.subarray(0, -1));\n const r = fromDER(decoded.r);\n const s = fromDER(decoded.s);\n const signature = Buffer.concat([r, s], 64);\n return {\n signature,\n hashType\n };\n}\nfunction encode(signature, hashType) {\n types.typeforce({\n signature: types.BufferN(64),\n hashType: types.UInt8\n }, {\n signature,\n hashType\n });\n const hashTypeMod = hashType & ~0x80;\n if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error(`Invalid hashType ${hashType}`);\n const hashTypeBuffer = Buffer.allocUnsafe(1);\n hashTypeBuffer.writeUInt8(hashType, 0);\n const r = toDER(signature.subarray(0, 32));\n const s = toDER(signature.subarray(32, 64));\n return Buffer.concat([bip66.encode(r, s), hashTypeBuffer]);\n}\n//# sourceMappingURL=scriptSignature.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OPS = exports.signature = exports.number = void 0;\nexports.isPushOnly = isPushOnly;\nexports.compile = compile;\nexports.decompile = decompile;\nexports.toASM = toASM;\nexports.fromASM = fromASM;\nexports.toStack = toStack;\nexports.isCanonicalPubKey = isCanonicalPubKey;\nexports.isDefinedHashType = isDefinedHashType;\nexports.isCanonicalScriptSignature = isCanonicalScriptSignature;\nconst tslib_1 = require(\"tslib\");\nconst bip66 = tslib_1.__importStar(require(\"bip66\"));\nconst pushdata_bitcoin_1 = tslib_1.__importDefault(require(\"pushdata-bitcoin\"));\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst ops_1 = require(\"./ops\");\nconst scriptNumber = tslib_1.__importStar(require(\"./scriptNumber\"));\nconst scriptSignature = tslib_1.__importStar(require(\"./scriptSignature\"));\nconst types = tslib_1.__importStar(require(\"../types\"));\nconst types_1 = require(\"../types\");\nconst OP_INT_BASE = ops_1.OPS.OP_RESERVED;\nfunction isOPInt(value) {\n return types.Number(value) && (value === ops_1.OPS.OP_0 || value >= ops_1.OPS.OP_1 && value <= ops_1.OPS.OP_16 || value === ops_1.OPS.OP_1NEGATE);\n}\nfunction isPushOnlyChunk(value) {\n return types.Buffer(value) || isOPInt(value);\n}\nfunction isPushOnly(value) {\n return types.Array(value) && value.every(isPushOnlyChunk);\n}\nfunction asMinimalOP(buffer) {\n if (buffer.length === 0) return ops_1.OPS.OP_0;\n if (buffer.length !== 1) return;\n if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0];\n if (buffer[0] === 0x81) return ops_1.OPS.OP_1NEGATE;\n}\nfunction compile(chunks) {\n if (types.Buffer(chunks)) return chunks;\n (0, types_1.typeforce)(types.Array, chunks);\n const bufferSize = chunks.reduce((accum, chunk) => {\n if (types.Buffer(chunk)) {\n if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) {\n return accum + 1;\n }\n return accum + pushdata_bitcoin_1.default.encodingLength(chunk.length) + chunk.length;\n }\n return accum + 1;\n }, 0.0);\n const buffer = Buffer.allocUnsafe(bufferSize);\n let offset = 0;\n chunks.forEach(chunk => {\n if (types.Buffer(chunk)) {\n const opcode = asMinimalOP(chunk);\n if (opcode !== undefined) {\n buffer.writeUInt8(opcode, offset);\n offset += 1;\n return;\n }\n offset += pushdata_bitcoin_1.default.encode(buffer, chunk.length, offset);\n chunk.copy(buffer, offset);\n offset += chunk.length;\n } else {\n buffer.writeUInt8(chunk, offset);\n offset += 1;\n }\n });\n if (offset !== buffer.length) throw new Error('Could not decode chunks');\n return buffer;\n}\nfunction decompile(buffer) {\n if (types.Array(buffer)) return buffer;\n (0, types_1.typeforce)(types.Buffer, buffer);\n const chunks = [];\n let i = 0;\n while (i < buffer.length) {\n const opcode = buffer[i];\n if (opcode > ops_1.OPS.OP_0 && opcode <= ops_1.OPS.OP_PUSHDATA4) {\n const d = pushdata_bitcoin_1.default.decode(buffer, i);\n if (d === null) return [];\n i += d.size;\n if (i + d.number > buffer.length) return [];\n const data = buffer.subarray(i, i + d.number);\n i += d.number;\n const op = asMinimalOP(data);\n if (op !== undefined) {\n chunks.push(op);\n } else {\n chunks.push(data);\n }\n } else {\n chunks.push(opcode);\n i += 1;\n }\n }\n return chunks;\n}\nfunction toASM(chunks) {\n if (types.Buffer(chunks)) {\n chunks = decompile(chunks);\n }\n return chunks.map(chunk => {\n if (types.Buffer(chunk)) {\n const op = asMinimalOP(chunk);\n if (op === undefined) return chunk.toString('hex');\n chunk = op;\n }\n return ops_1.REVERSE_OPS[chunk];\n }).join(' ');\n}\nfunction fromASM(asm) {\n (0, types_1.typeforce)(types.String, asm);\n return compile(asm.split(' ').map(chunkStr => {\n if (ops_1.OPS[chunkStr] !== undefined) return ops_1.OPS[chunkStr];\n (0, types_1.typeforce)(types.Hex, chunkStr);\n return Buffer.from(chunkStr, 'hex');\n }));\n}\nfunction toStack(chunks0) {\n const chunks = decompile(chunks0);\n (0, types_1.typeforce)(isPushOnly, chunks);\n return chunks?.map(op => {\n if (types.Buffer(op)) return op;\n if (op === ops_1.OPS.OP_0) return Buffer.allocUnsafe(0);\n return scriptNumber.encode(op - OP_INT_BASE);\n });\n}\nfunction isCanonicalPubKey(buffer) {\n return tiny_secp256k1_1.default.isPoint(buffer);\n}\nfunction isDefinedHashType(hashType) {\n const hashTypeMod = hashType & ~0x80;\n return hashTypeMod > 0x00 && hashTypeMod < 0x04;\n}\nfunction isCanonicalScriptSignature(buffer) {\n if (!types.Buffer(buffer)) return false;\n if (!isDefinedHashType(buffer[buffer.length - 1])) return false;\n return bip66.check(buffer.subarray(0, -1));\n}\nexports.number = scriptNumber;\nexports.signature = scriptSignature;\nvar ops_2 = require(\"./ops\");\nObject.defineProperty(exports, \"OPS\", {\n enumerable: true,\n get: function () {\n return ops_2.OPS;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.prop = prop;\nexports.value = value;\nfunction prop(object, name, f) {\n Object.defineProperty(object, name, {\n configurable: true,\n enumerable: true,\n get() {\n const value = f.call(this);\n this[name] = value;\n return value;\n },\n set(value) {\n Object.defineProperty(this, name, {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n });\n}\nfunction value(f) {\n let value;\n return () => {\n if (value !== undefined) return value;\n value = f();\n return value;\n };\n}\n//# sourceMappingURL=lazy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2data = p2data;\nconst tslib_1 = require(\"tslib\");\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => x.equals(b[i]));\n}\nfunction p2data(a, opts) {\n if (!a.data && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n data: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }, a);\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'embed',\n network\n };\n lazy.prop(o, 'output', () => {\n if (!a.data) return;\n return bscript.compile([OPS.OP_RETURN].concat(a.data));\n });\n lazy.prop(o, 'data', () => {\n if (!a.output) return;\n return bscript.decompile(a.output).slice(1);\n });\n if (opts.validate) {\n if (a.output) {\n const chunks = bscript.decompile(a.output);\n if (chunks[0] !== OPS.OP_RETURN) throw new TypeError('Output is invalid');\n if (!chunks.slice(1).every(types_1.typeforce.Buffer)) throw new TypeError('Output is invalid');\n if (a.data && !stacksEqual(a.data, o.data)) throw new TypeError('Data mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=embed.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2ms = p2ms;\nconst tslib_1 = require(\"tslib\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nconst OP_INT_BASE = OPS.OP_RESERVED;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => x.equals(b[i]));\n}\nfunction p2ms(a, opts) {\n if (!a.input && !a.output && !(a.pubkeys && a.m !== undefined) && !a.signatures) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n function isAcceptableSignature(x) {\n return bscript.isCanonicalScriptSignature(x) || (opts.allowIncomplete && x === OPS.OP_0) !== undefined;\n }\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n m: types_1.typeforce.maybe(types_1.typeforce.Number),\n n: types_1.typeforce.maybe(types_1.typeforce.Number),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n pubkeys: types_1.typeforce.maybe(types_1.typeforce.arrayOf(tiny_secp256k1_1.default.isPoint)),\n signatures: types_1.typeforce.maybe(types_1.typeforce.arrayOf(isAcceptableSignature)),\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'p2ms',\n network\n };\n let chunks = [];\n let decoded = false;\n function decode(output) {\n if (decoded) return;\n decoded = true;\n chunks = bscript.decompile(output);\n o.m = chunks[0] - OP_INT_BASE;\n o.n = chunks[chunks.length - 2] - OP_INT_BASE;\n o.pubkeys = chunks.slice(1, -2);\n }\n lazy.prop(o, 'output', () => {\n if (!a.m) return;\n if (!o.n) return;\n if (!a.pubkeys) return;\n return bscript.compile([].concat(OP_INT_BASE + a.m, a.pubkeys, OP_INT_BASE + o.n, OPS.OP_CHECKMULTISIG));\n });\n lazy.prop(o, 'm', () => {\n if (!o.output) return;\n decode(o.output);\n return o.m;\n });\n lazy.prop(o, 'n', () => {\n if (!o.pubkeys) return;\n return o.pubkeys.length;\n });\n lazy.prop(o, 'pubkeys', () => {\n if (!a.output) return;\n decode(a.output);\n return o.pubkeys;\n });\n lazy.prop(o, 'signatures', () => {\n if (!a.input) return;\n return bscript.decompile(a.input).slice(1);\n });\n lazy.prop(o, 'input', () => {\n if (!a.signatures) return;\n return bscript.compile([OPS.OP_0].concat(a.signatures));\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n lazy.prop(o, 'name', () => {\n if (!o.m || !o.n) return;\n return `p2ms(${o.m} of ${o.n})`;\n });\n if (opts.validate) {\n if (a.output) {\n decode(a.output);\n if (!types_1.typeforce.Number(chunks[0])) throw new TypeError('Output is invalid');\n if (!types_1.typeforce.Number(chunks[chunks.length - 2])) throw new TypeError('Output is invalid');\n if (chunks[chunks.length - 1] !== OPS.OP_CHECKMULTISIG) throw new TypeError('Output is invalid');\n if (o.m <= 0 || o.n > 16 || o.m > o.n || o.n !== chunks.length - 3) throw new TypeError('Output is invalid');\n if (!o.pubkeys.every(x => tiny_secp256k1_1.default.isPoint(x))) throw new TypeError('Output is invalid');\n if (a.m !== undefined && a.m !== o.m) throw new TypeError('m mismatch');\n if (a.n !== undefined && a.n !== o.n) throw new TypeError('n mismatch');\n if (a.pubkeys && !stacksEqual(a.pubkeys, o.pubkeys)) throw new TypeError('Pubkeys mismatch');\n }\n if (a.pubkeys) {\n if (a.n !== undefined && a.n !== a.pubkeys.length) throw new TypeError('Pubkey count mismatch');\n o.n = a.pubkeys.length;\n if (o.n < o.m) throw new TypeError('Pubkey count cannot be less than m');\n }\n if (a.signatures) {\n if (a.signatures.length < o.m) throw new TypeError('Not enough signatures provided');\n if (a.signatures.length > o.m) throw new TypeError('Too many signatures provided');\n }\n if (a.input) {\n if (a.input[0] !== OPS.OP_0) throw new TypeError('Input is invalid');\n if (o.signatures.length === 0 || !o.signatures.every(isAcceptableSignature)) throw new TypeError('Input has invalid signature(s)');\n if (a.signatures && !stacksEqual(a.signatures, o.signatures)) throw new TypeError('Signature mismatch');\n if (a.m !== undefined && a.m !== a.signatures.length) throw new TypeError('Signature count mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2ms.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2pk = p2pk;\nconst tslib_1 = require(\"tslib\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction p2pk(a, opts) {\n if (!a.input && !a.output && !a.pubkey && !a.input && !a.signature) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint),\n signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature),\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const _chunks = lazy.value(() => bscript.decompile(a.input));\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'p2pk',\n network\n };\n lazy.prop(o, 'output', () => {\n if (!a.pubkey) return;\n return bscript.compile([a.pubkey, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.output) return;\n return a.output.subarray(1, -1);\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.signature) return;\n return bscript.compile([a.signature]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n if (opts.validate) {\n if (a.output) {\n if (a.output[a.output.length - 1] !== OPS.OP_CHECKSIG) throw new TypeError('Output is invalid');\n if (!tiny_secp256k1_1.default.isPoint(o.pubkey)) throw new TypeError('Output pubkey is invalid');\n if (a.pubkey && !a.pubkey.equals(o.pubkey)) throw new TypeError('Pubkey mismatch');\n }\n if (a.signature) {\n if (a.input && !a.input.equals(o.input)) throw new TypeError('Signature mismatch');\n }\n if (a.input) {\n if (_chunks().length !== 1) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(o.signature)) throw new TypeError('Input has invalid signature');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2pk.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2pkh = p2pkh;\nconst tslib_1 = require(\"tslib\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction p2pkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.input) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.BufferN(25)),\n pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint),\n signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature),\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network));\n const _chunks = lazy.value(() => bscript.decompile(a.input));\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'p2pkh',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.pubKeyHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(3, 23);\n if (a.address) return _address().hash;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (!a.input) return;\n return _chunks()[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.input) return;\n return _chunks()[0];\n });\n lazy.prop(o, 'input', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return bscript.compile([a.signature, a.pubkey]);\n });\n lazy.prop(o, 'witness', () => {\n if (!o.input) return;\n return [];\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.pubKeyHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 25 || a.output[0] !== OPS.OP_DUP || a.output[1] !== OPS.OP_HASH160 || a.output[2] !== 0x14 || a.output[23] !== OPS.OP_EQUALVERIFY || a.output[24] !== OPS.OP_CHECKSIG) throw new TypeError('Output is invalid');\n const hash2 = a.output.subarray(3, 23);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError('Hash mismatch');else hash = pkh;\n }\n if (a.input) {\n const chunks = _chunks();\n if (chunks.length !== 2) throw new TypeError('Input is invalid');\n if (!bscript.isCanonicalScriptSignature(chunks[0])) throw new TypeError('Input has invalid signature');\n if (!tiny_secp256k1_1.default.isPoint(chunks[1])) throw new TypeError('Input has invalid pubkey');\n if (a.signature && !a.signature.equals(chunks[0])) throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(chunks[1])) throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(chunks[1]);\n if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2pkh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2sh = p2sh;\nconst tslib_1 = require(\"tslib\");\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => x.equals(b[i]));\n}\nfunction p2sh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.input) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.BufferN(23)),\n redeem: types_1.typeforce.maybe({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }),\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }, a);\n let {\n network\n } = a;\n if (!network) {\n network = a.redeem && a.redeem.network || networks_1.bitcoin;\n }\n const o = {\n name: 'p2sh',\n network\n };\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network));\n const _chunks = lazy.value(() => bscript.decompile(a.input));\n const _redeem = lazy.value(() => {\n const chunks = _chunks();\n return {\n network,\n output: chunks[chunks.length - 1],\n input: bscript.compile(chunks.slice(0, -1)),\n witness: a.witness || []\n };\n });\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.scriptHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(2, 22);\n if (a.address) return _address().hash;\n if (o.redeem && o.redeem.output) return bcrypto.hash160(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.input) return;\n return _redeem();\n });\n lazy.prop(o, 'input', () => {\n if (!a.redeem || !a.redeem.input || !a.redeem.output) return;\n return bscript.compile([].concat(bscript.decompile(a.redeem.input), a.redeem.output));\n });\n lazy.prop(o, 'witness', () => {\n if (o.redeem && o.redeem.witness) return o.redeem.witness;\n if (o.input) return [];\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2sh'];\n if (o.redeem !== undefined && o.redeem.name !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.scriptHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 23 || a.output[0] !== OPS.OP_HASH160 || a.output[1] !== 0x14 || a.output[22] !== OPS.OP_EQUAL) throw new TypeError('Output is invalid');\n const hash2 = a.output.subarray(2, 22);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n const checkRedeem = redeem => {\n if (redeem.output) {\n const decompile = bscript.decompile(redeem.output);\n if (!decompile || decompile.length < 1) throw new TypeError('Redeem.output too short');\n const hash2 = bcrypto.hash160(redeem.output);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n if (redeem.input) {\n const hasInput = redeem.input.length > 0;\n const hasWitness = redeem.witness && redeem.witness.length > 0;\n if (!hasInput && !hasWitness) throw new TypeError('Empty input');\n if (hasInput && hasWitness) throw new TypeError('Input and witness provided');\n if (hasInput) {\n const richunks = bscript.decompile(redeem.input);\n if (!bscript.isPushOnly(richunks)) throw new TypeError('Non push-only scriptSig');\n }\n }\n };\n if (a.input) {\n const chunks = _chunks();\n if (!chunks || chunks.length < 1) throw new TypeError('Input too short');\n if (!Buffer.isBuffer(_redeem().output)) throw new TypeError('Input is invalid');\n checkRedeem(_redeem());\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network) throw new TypeError('Network mismatch');\n if (a.input) {\n const redeem = _redeem();\n if (a.redeem.output && !a.redeem.output.equals(redeem.output)) throw new TypeError('Redeem.output mismatch');\n if (a.redeem.input && !a.redeem.input.equals(redeem.input)) throw new TypeError('Redeem.input mismatch');\n }\n checkRedeem(a.redeem);\n }\n if (a.witness) {\n if (a.redeem && a.redeem.witness && !stacksEqual(a.redeem.witness, a.witness)) throw new TypeError('Witness and redeem.witness mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2sh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2tr = p2tr;\nconst tslib_1 = require(\"tslib\");\nconst bech32_1 = require(\"bech32\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nconst TAGS = ['TapLeaf', 'TapBranch', 'TapTweak', 'KeyAgg list', 'KeyAgg coefficient'];\nconst TAGGED_HASH_PREFIXES = TAGS.reduce((obj, tag) => {\n const tagHash = bcrypto.sha256(Buffer.from(tag));\n obj[tag] = Buffer.concat([tagHash, tagHash]);\n return obj;\n}, {});\nconst EVEN_Y_COORD_PREFIX = new Uint8Array([0x02]);\nfunction taggedHash(prefix, data) {\n return bcrypto.sha256(Buffer.concat([TAGGED_HASH_PREFIXES[prefix], data]));\n}\nfunction tapTweakPubkey(pubkey, tapTreeRoot) {\n let tapTweak;\n if (tapTreeRoot) {\n tapTweak = taggedHash('TapTweak', Buffer.concat([pubkey, tapTreeRoot]));\n } else {\n tapTweak = taggedHash('TapTweak', pubkey);\n }\n const tweakedPubkey = tiny_secp256k1_1.default.pointAddScalar(Buffer.concat([EVEN_Y_COORD_PREFIX, pubkey]), tapTweak);\n return {\n parity: tweakedPubkey[0] === EVEN_Y_COORD_PREFIX[0] ? 0 : 1,\n pubkey: tweakedPubkey.slice(1)\n };\n}\nconst liftX = pubkey => {\n const offset = pubkey.length === 33 ? 1 : 0;\n return pubkey.subarray(offset);\n};\nfunction p2tr(a, opts) {\n if (!a.address && !a.pubkey && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'p2tr',\n network\n };\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n output: types_1.typeforce.maybe(types_1.typeforce.BufferN(34)),\n pubkey: types_1.typeforce.maybe(types_1.typeforce.anyOf(types_1.typeforce.BufferN(32), types_1.typeforce.BufferN(33)))\n }, a);\n const _address = lazy.value(() => {\n const result = bech32_1.bech32m.decode(a.address);\n const version = result.words.shift();\n const data = bech32_1.bech32m.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data)\n };\n });\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32_1.bech32m.toWords(o.hash);\n words.unshift(0x01);\n return bech32_1.bech32m.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(2);\n if (a.address) return _address().data;\n if (a.pubkey) {\n return tapTweakPubkey(liftX(a.pubkey)).pubkey;\n }\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_1, o.hash]);\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n prefix,\n version,\n data\n } = _address();\n if (prefix !== network.bech32) throw new TypeError('Invalid prefix or Network mismatch');\n if (version !== 0x01) throw new TypeError('Invalid address version');\n if (data.length !== 32) throw new TypeError('Invalid address data');\n hash = data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output[0] !== OPS.OP_1 || a.output[1] !== 0x20) throw new TypeError('p2tr output is invalid');\n const hash2 = a.output.subarray(2);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n if (a.pubkey) {\n const pkh = tapTweakPubkey(liftX(a.pubkey)).pubkey;\n if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError('Hash mismatch');else hash = pkh;\n if (!tiny_secp256k1_1.default.isPoint(Buffer.concat([EVEN_Y_COORD_PREFIX, liftX(a.pubkey)]))) throw new TypeError('Invalid pubkey for p2tr');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2tr.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2wpkh = p2wpkh;\nconst tslib_1 = require(\"tslib\");\nconst bech32_1 = require(\"bech32\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst types_1 = require(\"../types\");\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst {\n OPS\n} = bscript;\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction p2wpkh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.pubkey && !a.witness) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n input: types_1.typeforce.maybe(types_1.typeforce.BufferN(0)),\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n output: types_1.typeforce.maybe(types_1.typeforce.BufferN(22)),\n pubkey: types_1.typeforce.maybe(tiny_secp256k1_1.default.isPoint),\n signature: types_1.typeforce.maybe(bscript.isCanonicalScriptSignature),\n witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }, a);\n const _address = lazy.value(() => {\n const result = bech32_1.bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32_1.bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data)\n };\n });\n const network = a.network || networks_1.bitcoin;\n const o = {\n name: 'p2wpkh',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32_1.bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32_1.bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(2, 22);\n if (a.address) return _address().data;\n if (a.pubkey || o.pubkey) return bcrypto.hash160(a.pubkey || o.pubkey);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'pubkey', () => {\n if (a.pubkey) return a.pubkey;\n if (!a.witness) return;\n return a.witness[1];\n });\n lazy.prop(o, 'signature', () => {\n if (!a.witness) return;\n return a.witness[0];\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (!a.pubkey) return;\n if (!a.signature) return;\n return [a.signature, a.pubkey];\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n prefix,\n version,\n data\n } = _address();\n if (network && network.bech32 !== prefix) throw new TypeError('Invalid prefix or Network mismatch');\n if (version !== 0x00) throw new TypeError('Invalid address version');\n if (data.length !== 20) throw new TypeError('Invalid address data');\n hash = data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 22 || a.output[0] !== OPS.OP_0 || a.output[1] !== 0x14) throw new TypeError('Output is invalid');\n if (hash.length > 0 && !hash.equals(a.output.subarray(2))) throw new TypeError('Hash mismatch');else hash = a.output.subarray(2);\n }\n if (a.pubkey) {\n const pkh = bcrypto.hash160(a.pubkey);\n if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError('Hash mismatch');else hash = pkh;\n if (!tiny_secp256k1_1.default.isPoint(a.pubkey) || a.pubkey.length !== 33) throw new TypeError('Invalid pubkey for p2wpkh');\n }\n if (a.witness) {\n if (a.witness.length !== 2) throw new TypeError('Witness is invalid');\n if (!bscript.isCanonicalScriptSignature(a.witness[0])) throw new TypeError('Witness has invalid signature');\n if (!tiny_secp256k1_1.default.isPoint(a.witness[1]) || a.witness[1].length !== 33) throw new TypeError('Witness has invalid pubkey');\n if (a.signature && !a.signature.equals(a.witness[0])) throw new TypeError('Signature mismatch');\n if (a.pubkey && !a.pubkey.equals(a.witness[1])) throw new TypeError('Pubkey mismatch');\n const pkh = bcrypto.hash160(a.witness[1]);\n if (hash.length > 0 && !hash.equals(pkh)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2wpkh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.p2wsh = p2wsh;\nconst tslib_1 = require(\"tslib\");\nconst bech32_1 = require(\"bech32\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nconst EMPTY_BUFFER = Buffer.alloc(0);\nfunction stacksEqual(a, b) {\n if (a.length !== b.length) return false;\n return a.every((x, i) => x.equals(b[i]));\n}\nfunction chunkHasUncompressedPubkey(chunk) {\n if (Buffer.isBuffer(chunk) && chunk.length === 65 && chunk[0] === 0x04 && tiny_secp256k1_1.default.isPoint(chunk)) {\n return true;\n }\n return false;\n}\nfunction p2wsh(a, opts) {\n if (!a.address && !a.hash && !a.output && !a.redeem && !a.witness) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(32)),\n output: types_1.typeforce.maybe(types_1.typeforce.BufferN(34)),\n redeem: types_1.typeforce.maybe({\n input: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer),\n witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }),\n input: types_1.typeforce.maybe(types_1.typeforce.BufferN(0)),\n witness: types_1.typeforce.maybe(types_1.typeforce.arrayOf(types_1.typeforce.Buffer))\n }, a);\n const _address = lazy.value(() => {\n const result = bech32_1.bech32.decode(a.address);\n const version = result.words.shift();\n const data = bech32_1.bech32.fromWords(result.words);\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data)\n };\n });\n const _rchunks = lazy.value(() => bscript.decompile(a.redeem.input));\n let {\n network\n } = a;\n if (!network) {\n network = a.redeem && a.redeem.network || networks_1.bitcoin;\n }\n const o = {\n name: 'p2wsh',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n const words = bech32_1.bech32.toWords(o.hash);\n words.unshift(0x00);\n return bech32_1.bech32.encode(network.bech32, words);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(2);\n if (a.address) return _address().data;\n if (o.redeem && o.redeem.output) return bcrypto.sha256(o.redeem.output);\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_0, o.hash]);\n });\n lazy.prop(o, 'redeem', () => {\n if (!a.witness) return;\n return {\n output: a.witness[a.witness.length - 1],\n input: EMPTY_BUFFER,\n witness: a.witness.slice(0, -1)\n };\n });\n lazy.prop(o, 'input', () => {\n if (!o.witness) return;\n return EMPTY_BUFFER;\n });\n lazy.prop(o, 'witness', () => {\n if (a.redeem && a.redeem.input && a.redeem.input.length > 0 && a.redeem.output && a.redeem.output.length > 0) {\n const stack = bscript.toStack(_rchunks());\n o.redeem = Object.assign({\n witness: stack\n }, a.redeem);\n o.redeem.input = EMPTY_BUFFER;\n return [].concat(stack, a.redeem.output);\n }\n if (!a.redeem) return;\n if (!a.redeem.output) return;\n if (!a.redeem.witness) return;\n return [].concat(a.redeem.witness, a.redeem.output);\n });\n lazy.prop(o, 'name', () => {\n const nameParts = ['p2wsh'];\n if (o.redeem !== undefined && o.redeem.name !== undefined) nameParts.push(o.redeem.name);\n return nameParts.join('-');\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n prefix,\n version,\n data\n } = _address();\n if (prefix !== network.bech32) throw new TypeError('Invalid prefix or Network mismatch');\n if (version !== 0x00) throw new TypeError('Invalid address version');\n if (data.length !== 32) throw new TypeError('Invalid address data');\n hash = data;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 34 || a.output[0] !== OPS.OP_0 || a.output[1] !== 0x20) throw new TypeError('Output is invalid');\n const hash2 = a.output.subarray(2);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n if (a.redeem) {\n if (a.redeem.network && a.redeem.network !== network) throw new TypeError('Network mismatch');\n if (a.redeem.input && a.redeem.input.length > 0 && a.redeem.witness && a.redeem.witness.length > 0) throw new TypeError('Ambiguous witness source');\n if (a.redeem.output) {\n if (bscript.decompile(a.redeem.output).length === 0) throw new TypeError('Redeem.output is invalid');\n const hash2 = bcrypto.sha256(a.redeem.output);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');else hash = hash2;\n }\n if (a.redeem.input && !bscript.isPushOnly(_rchunks())) throw new TypeError('Non push-only scriptSig');\n if (a.witness && a.redeem.witness && !stacksEqual(a.witness, a.redeem.witness)) throw new TypeError('Witness and redeem.witness mismatch');\n if (a.redeem.input && _rchunks().some(chunkHasUncompressedPubkey) || a.redeem.output && (bscript.decompile(a.redeem.output) || []).some(chunkHasUncompressedPubkey)) {\n throw new TypeError('redeem.input or redeem.output contains uncompressed pubkey');\n }\n }\n if (a.witness && a.witness.length > 0) {\n const wScript = a.witness[a.witness.length - 1];\n if (a.redeem && a.redeem.output && !a.redeem.output.equals(wScript)) throw new TypeError('Witness and redeem.output mismatch');\n if (a.witness.some(chunkHasUncompressedPubkey) || (bscript.decompile(wScript) || []).some(chunkHasUncompressedPubkey)) throw new TypeError('Witness contains uncompressed pubkey');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=p2wsh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sstxchange = sstxchange;\nconst tslib_1 = require(\"tslib\");\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction sstxchange(a, opts) {\n if (!a.address && !a.hash && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network));\n const network = a.network || networks_1.decred;\n const o = {\n name: 'sstxchange',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.pubKeyHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(4, 24);\n if (a.address) return _address().hash;\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_SSTXCHANGE, OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]);\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.pubKeyHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 26 || a.output[0] !== OPS.OP_SSTXCHANGE || a.output[1] !== OPS.OP_DUP || a.output[2] !== OPS.OP_HASH160 || a.output[3] !== 0x14 || a.output[24] !== OPS.OP_EQUALVERIFY || a.output[25] !== OPS.OP_CHECKSIG) throw new TypeError('sstxchange output is invalid');\n const hash2 = a.output.subarray(4, 24);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=sstxchange.js.map", "(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 ? '';\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 this.length = num === 0 ? 1 : this.length;\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", "// int64-buffer.js\n\n/*jshint -W018 */ // Confusing use of '!'.\n/*jshint -W030 */ // Expected an assignment or function call and instead saw an expression.\n/*jshint -W093 */ // Did you mean to return a conditional instead of an assignment?\n\nvar Uint64BE, Int64BE, Uint64LE, Int64LE;\n\n!function(exports) {\n // constants\n\n var UNDEFINED = \"undefined\";\n var BUFFER = (UNDEFINED !== typeof Buffer) && Buffer;\n var UINT8ARRAY = (UNDEFINED !== typeof Uint8Array) && Uint8Array;\n var ARRAYBUFFER = (UNDEFINED !== typeof ArrayBuffer) && ArrayBuffer;\n var ZERO = [0, 0, 0, 0, 0, 0, 0, 0];\n var isArray = Array.isArray || _isArray;\n var BIT32 = 4294967296;\n var BIT24 = 16777216;\n\n // storage class\n\n var storage; // Array;\n\n // generate classes\n\n Uint64BE = factory(\"Uint64BE\", true, true);\n Int64BE = factory(\"Int64BE\", true, false);\n Uint64LE = factory(\"Uint64LE\", false, true);\n Int64LE = factory(\"Int64LE\", false, false);\n\n // class factory\n\n function factory(name, bigendian, unsigned) {\n var posH = bigendian ? 0 : 4;\n var posL = bigendian ? 4 : 0;\n var pos0 = bigendian ? 0 : 3;\n var pos1 = bigendian ? 1 : 2;\n var pos2 = bigendian ? 2 : 1;\n var pos3 = bigendian ? 3 : 0;\n var fromPositive = bigendian ? fromPositiveBE : fromPositiveLE;\n var fromNegative = bigendian ? fromNegativeBE : fromNegativeLE;\n var proto = Int64.prototype;\n var isName = \"is\" + name;\n var _isInt64 = \"_\" + isName;\n\n // properties\n proto.buffer = void 0;\n proto.offset = 0;\n proto[_isInt64] = true;\n\n // methods\n proto.toNumber = toNumber;\n proto.toString = toString;\n proto.toJSON = toNumber;\n proto.toArray = toArray;\n\n // add .toBuffer() method only when Buffer available\n if (BUFFER) proto.toBuffer = toBuffer;\n\n // add .toArrayBuffer() method only when Uint8Array available\n if (UINT8ARRAY) proto.toArrayBuffer = toArrayBuffer;\n\n // isUint64BE, isInt64BE\n Int64[isName] = isInt64;\n\n // CommonJS\n exports[name] = Int64;\n\n return Int64;\n\n // constructor\n function Int64(buffer, offset, value, raddix) {\n if (!(this instanceof Int64)) return new Int64(buffer, offset, value, raddix);\n return init(this, buffer, offset, value, raddix);\n }\n\n // isUint64BE, isInt64BE\n function isInt64(b) {\n return !!(b && b[_isInt64]);\n }\n\n // initializer\n function init(that, buffer, offset, value, raddix) {\n if (UINT8ARRAY && ARRAYBUFFER) {\n if (buffer instanceof ARRAYBUFFER) buffer = new UINT8ARRAY(buffer);\n if (value instanceof ARRAYBUFFER) value = new UINT8ARRAY(value);\n }\n\n // Int64BE() style\n if (!buffer && !offset && !value && !storage) {\n // shortcut to initialize with zero\n that.buffer = newArray(ZERO, 0);\n return;\n }\n\n // Int64BE(value, raddix) style\n if (!isValidBuffer(buffer, offset)) {\n var _storage = storage || Array;\n raddix = offset;\n value = buffer;\n offset = 0;\n buffer = (storage === BUFFER) ? BUFFER.alloc(8) : new _storage(8);\n }\n\n that.buffer = buffer;\n that.offset = offset |= 0;\n\n // Int64BE(buffer, offset) style\n if (UNDEFINED === typeof value) return;\n\n // Int64BE(buffer, offset, value, raddix) style\n if (\"string\" === typeof value) {\n fromString(buffer, offset, value, raddix || 10);\n } else if (isValidBuffer(value, raddix)) {\n fromArray(buffer, offset, value, raddix);\n } else if (\"number\" === typeof raddix) {\n writeInt32(buffer, offset + posH, value); // high\n writeInt32(buffer, offset + posL, raddix); // low\n } else if (value > 0) {\n fromPositive(buffer, offset, value); // positive\n } else if (value < 0) {\n fromNegative(buffer, offset, value); // negative\n } else {\n fromArray(buffer, offset, ZERO, 0); // zero, NaN and others\n }\n }\n\n function fromString(buffer, offset, str, raddix) {\n var pos = 0;\n var len = str.length;\n var high = 0;\n var low = 0;\n if (str[0] === \"-\") pos++;\n var sign = pos;\n while (pos < len) {\n var chr = parseInt(str[pos++], raddix);\n if (!(chr >= 0)) break; // NaN\n low = low * raddix + chr;\n high = high * raddix + Math.floor(low / BIT32);\n low %= BIT32;\n }\n if (sign) {\n high = ~high;\n if (low) {\n low = BIT32 - low;\n } else {\n high++;\n }\n }\n writeInt32(buffer, offset + posH, high);\n writeInt32(buffer, offset + posL, low);\n }\n\n function toNumber() {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n if (!unsigned) high |= 0; // a trick to get signed\n return high ? (high * BIT32 + low) : low;\n }\n\n function toString(radix) {\n var buffer = this.buffer;\n var offset = this.offset;\n var high = readInt32(buffer, offset + posH);\n var low = readInt32(buffer, offset + posL);\n var str = \"\";\n var sign = !unsigned && (high & 0x80000000);\n if (sign) {\n high = ~high;\n low = BIT32 - low;\n }\n radix = radix || 10;\n while (1) {\n var mod = (high % radix) * BIT32 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n if (!high && !low) break;\n }\n if (sign) {\n str = \"-\" + str;\n }\n return str;\n }\n\n function writeInt32(buffer, offset, value) {\n buffer[offset + pos3] = value & 255;\n value = value >> 8;\n buffer[offset + pos2] = value & 255;\n value = value >> 8;\n buffer[offset + pos1] = value & 255;\n value = value >> 8;\n buffer[offset + pos0] = value & 255;\n }\n\n function readInt32(buffer, offset) {\n return (buffer[offset + pos0] * BIT24) +\n (buffer[offset + pos1] << 16) +\n (buffer[offset + pos2] << 8) +\n buffer[offset + pos3];\n }\n }\n\n function toArray(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = null; // Array\n\n if (raw !== false && isArray(buffer)) {\n return (buffer.length === 8) ? buffer : buffer.slice(offset, offset + 8);\n }\n\n return newArray(buffer, offset);\n }\n\n function toBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n storage = BUFFER;\n\n if (raw !== false && BUFFER.isBuffer(buffer)) {\n return (buffer.length === 8) ? buffer : buffer.slice(offset, offset + 8);\n }\n\n // Buffer.from(arraybuffer) available since Node v4.5.0\n // https://nodejs.org/en/blog/release/v4.5.0/\n return BUFFER.from(toArrayBuffer.call(this, raw));\n }\n\n function toArrayBuffer(raw) {\n var buffer = this.buffer;\n var offset = this.offset;\n var arrbuf = buffer.buffer;\n storage = UINT8ARRAY;\n\n // arrbuf.slice() ignores buffer.offset until Node v8.0.0\n if (raw !== false && !buffer.offset && (arrbuf instanceof ARRAYBUFFER)) {\n return (arrbuf.byteLength === 8) ? arrbuf : arrbuf.slice(offset, offset + 8);\n }\n\n var dest = new UINT8ARRAY(8);\n fromArray(dest, 0, buffer, offset);\n return dest.buffer;\n }\n\n function isValidBuffer(buffer, offset) {\n var len = buffer && buffer.length;\n offset |= 0;\n return len && (offset + 8 <= len) && (\"string\" !== typeof buffer[offset]);\n }\n\n function fromArray(destbuf, destoff, srcbuf, srcoff) {\n destoff |= 0;\n srcoff |= 0;\n for (var i = 0; i < 8; i++) {\n destbuf[destoff++] = srcbuf[srcoff++] & 255;\n }\n }\n\n function newArray(buffer, offset) {\n return Array.prototype.slice.call(buffer, offset, offset + 8);\n }\n\n function fromPositiveBE(buffer, offset, value) {\n var pos = offset + 8;\n while (pos > offset) {\n buffer[--pos] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeBE(buffer, offset, value) {\n var pos = offset + 8;\n value++;\n while (pos > offset) {\n buffer[--pos] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n function fromPositiveLE(buffer, offset, value) {\n var end = offset + 8;\n while (offset < end) {\n buffer[offset++] = value & 255;\n value /= 256;\n }\n }\n\n function fromNegativeLE(buffer, offset, value) {\n var end = offset + 8;\n value++;\n while (offset < end) {\n buffer[offset++] = ((-value) & 255) ^ 255;\n value /= 256;\n }\n }\n\n // https://github.com/retrofox/is-array\n function _isArray(val) {\n return !!val && \"[object Array]\" == Object.prototype.toString.call(val);\n }\n\n}(typeof exports === 'object' && typeof exports.nodeName !== 'string' ? exports : (this || {}));\n", "export function toUtf8(bytes) {\n return Buffer.from(bytes || []).toString();\n}\nexport function fromUtf8(s) {\n return Uint8Array.from(Buffer.from(s || \"\", \"utf8\"));\n}\nexport function concat(arrays) {\n return Uint8Array.from(Buffer.concat(arrays));\n}\nexport function toHex(bytes) {\n return Buffer.from(bytes || []).toString(\"hex\");\n}\nexport function fromHex(hexString) {\n return Uint8Array.from(Buffer.from(hexString || \"\", \"hex\"));\n}\nexport function toBase64(bytes) {\n return Buffer.from(bytes).toString(\"base64\");\n}\nexport function fromBase64(base64) {\n return Uint8Array.from(Buffer.from(base64 || \"\", \"base64\"));\n}\nexport function compare(v1, v2) {\n return Buffer.from(v1).compare(Buffer.from(v2));\n}\nexport function writeUInt8(buffer, offset, value) {\n if (offset + 1 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n const buf = Buffer.alloc(1);\n buf.writeUInt8(value, 0);\n buffer.set(Uint8Array.from(buf), offset);\n}\nexport function writeUInt16(buffer, offset, value, littleEndian) {\n if (offset + 2 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.alloc(2);\n if (littleEndian === \"LE\") {\n buf.writeUInt16LE(value, 0);\n }\n else {\n buf.writeUInt16BE(value, 0);\n }\n buffer.set(Uint8Array.from(buf), offset);\n}\nexport function writeUInt32(buffer, offset, value, littleEndian) {\n if (offset + 4 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.alloc(4);\n if (littleEndian === \"LE\") {\n buf.writeUInt32LE(value, 0);\n }\n else {\n buf.writeUInt32BE(value, 0);\n }\n buffer.set(Uint8Array.from(buf), offset);\n}\nexport function writeUInt64(buffer, offset, value, littleEndian) {\n if (offset + 8 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.alloc(8);\n if (value > 0xffffffffffffffffn) {\n throw new Error(`The value of \"value\" is out of range. It must be >= 0 and <= ${0xffffffffffffffffn}. Received ${value}`);\n }\n if (littleEndian === \"LE\") {\n buf.writeBigUInt64LE(value, 0);\n }\n else {\n buf.writeBigUInt64BE(value, 0);\n }\n buffer.set(Uint8Array.from(buf), offset);\n}\nexport function readUInt8(buffer, offset) {\n if (offset + 1 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n const buf = Buffer.from(buffer);\n return buf.readUInt8(offset);\n}\nexport function readUInt16(buffer, offset, littleEndian) {\n if (offset + 2 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.from(buffer);\n if (littleEndian === \"LE\") {\n return buf.readUInt16LE(offset);\n }\n else {\n return buf.readUInt16BE(offset);\n }\n}\nexport function readUInt32(buffer, offset, littleEndian) {\n if (offset + 4 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.from(buffer);\n if (littleEndian === \"LE\") {\n return buf.readUInt32LE(offset);\n }\n else {\n return buf.readUInt32BE(offset);\n }\n}\nexport function readUInt64(buffer, offset, littleEndian) {\n if (offset + 8 > buffer.length) {\n throw new Error(\"Offset is outside the bounds of Uint8Array\");\n }\n littleEndian = littleEndian.toUpperCase();\n const buf = Buffer.from(buffer);\n if (littleEndian === \"LE\") {\n return buf.readBigUInt64LE(offset);\n }\n else {\n return buf.readBigUInt64BE(offset);\n }\n}\n", "'use strict';\nvar __createBinding = (this && this.__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}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = encode;\nexports.decode = decode;\nexports.encodingLength = encodingLength;\nconst tools = __importStar(require(\"uint8array-tools\"));\nconst checkUInt64 = (n) => {\n if (n < 0 || n > 0xffffffffffffffffn) {\n throw new RangeError('value out of range');\n }\n};\nfunction checkUInt53(n) {\n if (n < 0 || n > Number.MAX_SAFE_INTEGER || n % 1 !== 0)\n throw new RangeError('value out of range');\n}\nfunction checkUint53OrUint64(n) {\n if (typeof n === 'number')\n checkUInt53(n);\n else\n checkUInt64(n);\n}\nfunction encode(n, buffer, offset) {\n checkUint53OrUint64(n);\n if (offset === undefined)\n offset = 0;\n if (buffer === undefined) {\n buffer = new Uint8Array(encodingLength(n));\n }\n let bytes = 0;\n // 8 bit\n if (n < 0xfd) {\n buffer.set([Number(n)], offset);\n bytes = 1;\n // 16 bit\n }\n else if (n <= 0xffff) {\n buffer.set([0xfd], offset);\n tools.writeUInt16(buffer, offset + 1, Number(n), 'LE');\n bytes = 3;\n // 32 bit\n }\n else if (n <= 0xffffffff) {\n buffer.set([0xfe], offset);\n tools.writeUInt32(buffer, offset + 1, Number(n), 'LE');\n bytes = 5;\n // 64 bit\n }\n else {\n buffer.set([0xff], offset);\n tools.writeUInt64(buffer, offset + 1, BigInt(n), 'LE');\n bytes = 9;\n }\n return { buffer, bytes };\n}\nfunction decode(buffer, offset) {\n if (offset === undefined)\n offset = 0;\n const first = buffer.at(offset);\n if (first === undefined)\n throw new Error('buffer too small');\n // 8 bit\n if (first < 0xfd) {\n return { numberValue: first, bigintValue: BigInt(first), bytes: 1 };\n // 16 bit\n }\n else if (first === 0xfd) {\n const val = tools.readUInt16(buffer, offset + 1, 'LE');\n return {\n numberValue: val,\n bigintValue: BigInt(val),\n bytes: 3\n };\n // 32 bit\n }\n else if (first === 0xfe) {\n const val = tools.readUInt32(buffer, offset + 1, 'LE');\n return {\n numberValue: val,\n bigintValue: BigInt(val),\n bytes: 5\n };\n // 64 bit\n }\n else {\n const number = tools.readUInt64(buffer, offset + 1, 'LE');\n return { numberValue: number <= Number.MAX_SAFE_INTEGER ? Number(number) : null, bigintValue: number, bytes: 9 };\n }\n}\nfunction encodingLength(n) {\n checkUint53OrUint64(n);\n return n < 0xfd ? 1 : n <= 0xffff ? 3 : n <= 0xffffffff ? 5 : 9;\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BufferReader = exports.BufferWriter = exports.getChunkSize = exports.reverseBuffer = exports.writePushDataInt = exports.varIntSize = exports.readPushDataInt = exports.pushDataSize = void 0;\nexports.verifuint = verifuint;\nexports.readUInt64LE = readUInt64LE;\nexports.readUInt64LEasString = readUInt64LEasString;\nexports.readInt64LE = readInt64LE;\nexports.writeUInt64LE = writeUInt64LE;\nexports.writeUInt64LEasString = writeUInt64LEasString;\nexports.writeInt64LE = writeInt64LE;\nexports.readVarInt = readVarInt;\nexports.writeVarInt = writeVarInt;\nexports.cloneBuffer = cloneBuffer;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst int64_buffer_1 = require(\"int64-buffer\");\nconst pushdata_bitcoin_1 = tslib_1.__importDefault(require(\"pushdata-bitcoin\"));\nconst varuint = tslib_1.__importStar(require(\"varuint-bitcoin\"));\nconst utils_1 = require(\"@trezor/utils\");\nconst types = tslib_1.__importStar(require(\"./types\"));\nconst OUT_OF_RANGE_ERROR = 'value out of range';\nfunction verifuint(value, max) {\n if (typeof value !== 'number') throw new Error('cannot write a non-number as a number');\n if (value < 0) throw new Error('specified a negative value for writing an unsigned value');\n if (value > max) throw new Error(OUT_OF_RANGE_ERROR);\n if (Math.floor(value) !== value) throw new Error('value has a fractional component');\n}\nfunction readUInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readUInt32LE(offset + 4);\n b *= 0x100000000;\n verifuint(b + a, 0x001fffffffffffff);\n return b + a;\n}\nfunction readUInt64LEasString(buffer, offset) {\n try {\n const result = readUInt64LE(buffer, offset);\n return result.toString();\n } catch {\n const aUint = buffer.readUInt32LE(offset);\n const bUint = buffer.readUInt32LE(offset + 4);\n const m = new bn_js_1.default(0x100000000);\n const a = new bn_js_1.default(aUint);\n const b = new bn_js_1.default(bUint).mul(m);\n return a.add(b).toString();\n }\n}\nfunction readInt64LE(buffer, offset) {\n const a = buffer.readUInt32LE(offset);\n let b = buffer.readInt32LE(offset + 4);\n b *= 0x100000000;\n return b + a;\n}\nfunction writeUInt64LE(buffer, value, offset) {\n verifuint(value, 0x001fffffffffffff);\n buffer.writeInt32LE(value & -1, offset);\n buffer.writeUInt32LE(Math.floor(value / 0x100000000), offset + 4);\n return offset + 8;\n}\nfunction writeUInt64LEasString(buffer, value, offset) {\n if (typeof value !== 'string') {\n return writeUInt64LE(buffer, value, offset);\n }\n const v = new int64_buffer_1.Int64LE(value);\n v.toBuffer().copy(buffer, offset);\n return offset + 8;\n}\nfunction writeInt64LE(buffer, value, offset) {\n const v = new int64_buffer_1.Int64LE(value);\n const a = v.toArray();\n for (let i = 0; i < 8; i++) {\n buffer.writeUInt8(a[i], offset + i);\n }\n return offset + 8;\n}\nfunction readVarInt(buffer, offset) {\n const {\n numberValue,\n bytes\n } = varuint.decode(buffer, offset);\n if (numberValue === null) throw new Error(OUT_OF_RANGE_ERROR);\n return {\n number: numberValue,\n size: bytes\n };\n}\nfunction writeVarInt(buffer, number, offset) {\n const {\n bytes\n } = varuint.encode(number, buffer, offset);\n return bytes;\n}\nfunction cloneBuffer(buffer) {\n const clone = Buffer.allocUnsafe(buffer.length);\n buffer.copy(clone);\n return clone;\n}\nexports.pushDataSize = pushdata_bitcoin_1.default.encodingLength;\nexports.readPushDataInt = pushdata_bitcoin_1.default.decode;\nexports.varIntSize = varuint.encodingLength;\nexports.writePushDataInt = pushdata_bitcoin_1.default.encode;\nexports.reverseBuffer = utils_1.bufferUtils.reverseBuffer, exports.getChunkSize = utils_1.bufferUtils.getChunkSize;\nclass BufferWriter {\n buffer;\n offset;\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n types.typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n writeUInt8(i) {\n this.offset = this.buffer.writeUInt8(i, this.offset);\n }\n writeUInt16(i) {\n this.offset = this.buffer.writeUInt16LE(i, this.offset);\n }\n writeInt32(i) {\n this.offset = this.buffer.writeInt32LE(i, this.offset);\n }\n writeUInt32(i) {\n this.offset = this.buffer.writeUInt32LE(i, this.offset);\n }\n writeInt64(i) {\n this.offset = writeInt64LE(this.buffer, i, this.offset);\n }\n writeUInt64(i) {\n this.offset = typeof i === 'string' ? writeUInt64LEasString(this.buffer, i, this.offset) : writeUInt64LE(this.buffer, i, this.offset);\n }\n writeVarInt(i) {\n const {\n bytes\n } = varuint.encode(i, this.buffer, this.offset);\n this.offset += bytes;\n }\n writeSlice(slice) {\n if (this.buffer.length < this.offset + slice.length) {\n throw new Error('Cannot write slice out of bounds');\n }\n this.offset += slice.copy(this.buffer, this.offset);\n }\n writeVarSlice(slice) {\n this.writeVarInt(slice.length);\n this.writeSlice(slice);\n }\n writeVector(vector) {\n this.writeVarInt(vector.length);\n vector.forEach(buf => this.writeVarSlice(buf));\n }\n}\nexports.BufferWriter = BufferWriter;\nclass BufferReader {\n buffer;\n offset;\n constructor(buffer, offset = 0) {\n this.buffer = buffer;\n this.offset = offset;\n types.typeforce(types.tuple(types.Buffer, types.UInt32), [buffer, offset]);\n }\n readUInt8() {\n const result = this.buffer.readUInt8(this.offset);\n this.offset++;\n return result;\n }\n readUInt16() {\n const result = this.buffer.readUInt16LE(this.offset);\n this.offset += 2;\n return result;\n }\n readInt32() {\n const result = this.buffer.readInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readUInt32() {\n const result = this.buffer.readUInt32LE(this.offset);\n this.offset += 4;\n return result;\n }\n readInt64() {\n const result = readInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\n }\n readUInt64() {\n const result = readUInt64LE(this.buffer, this.offset);\n this.offset += 8;\n return result;\n }\n readUInt64String() {\n const result = readUInt64LEasString(this.buffer, this.offset);\n this.offset += 8;\n return result;\n }\n readVarInt() {\n const {\n numberValue,\n bytes\n } = varuint.decode(this.buffer, this.offset);\n if (numberValue === null) throw new Error(OUT_OF_RANGE_ERROR);\n this.offset += bytes;\n return numberValue;\n }\n readSlice(n) {\n if (this.buffer.length < this.offset + n) {\n throw new Error('Cannot read slice out of bounds');\n }\n const result = this.buffer.subarray(this.offset, this.offset + n);\n this.offset += n;\n return result;\n }\n readVarSlice() {\n return this.readSlice(this.readVarInt());\n }\n readVector() {\n const count = this.readVarInt();\n const vector = [];\n for (let i = 0; i < count; i++) vector.push(this.readVarSlice());\n return vector;\n }\n}\nexports.BufferReader = BufferReader;\n//# sourceMappingURL=bufferutils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sstxcommitment = sstxcommitment;\nconst tslib_1 = require(\"tslib\");\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst bufferutils_1 = require(\"../bufferutils\");\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction sstxcommitment(a, opts) {\n if (!a.address && !a.amount && !a.hash && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n amount: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network));\n const network = a.network || networks_1.decred;\n const o = {\n name: 'sstxcommitment',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.pubKeyHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(2, 22);\n if (a.address) return _address().hash;\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash || !a.amount) return;\n const buf = Buffer.allocUnsafe(o.hash.length + 10);\n const writer = new bufferutils_1.BufferWriter(buf);\n writer.writeSlice(o.hash);\n writer.writeUInt64(a.amount);\n writer.writeUInt8(0);\n writer.writeUInt8(88);\n return bscript.compile([OPS.OP_RETURN, buf]);\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.pubKeyHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 32 || a.output[0] !== OPS.OP_RETURN) throw new TypeError('sstxcommitment output is invalid');\n const hash2 = a.output.subarray(2, 22);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=sstxcommitment.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sstxpkh = sstxpkh;\nconst tslib_1 = require(\"tslib\");\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction sstxpkh(a, opts) {\n if (!a.address && !a.hash && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, a.network));\n const network = a.network || networks_1.decred;\n const o = {\n name: 'sstxpkh',\n network\n };\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.pubKeyHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(4, 24);\n if (a.address) return _address().hash;\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_SSTX, OPS.OP_DUP, OPS.OP_HASH160, o.hash, OPS.OP_EQUALVERIFY, OPS.OP_CHECKSIG]);\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.pubKeyHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 26 || a.output[0] !== OPS.OP_SSTX || a.output[1] !== OPS.OP_DUP || a.output[2] !== OPS.OP_HASH160 || a.output[3] !== 0x14 || a.output[24] !== OPS.OP_EQUALVERIFY || a.output[25] !== OPS.OP_CHECKSIG) throw new TypeError('sstxpkh output is invalid');\n const hash2 = a.output.subarray(4, 24);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=sstxpkh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sstxsh = sstxsh;\nconst tslib_1 = require(\"tslib\");\nconst bs58check = tslib_1.__importStar(require(\"../bs58check\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst lazy = tslib_1.__importStar(require(\"./lazy\"));\nconst types_1 = require(\"../types\");\nconst {\n OPS\n} = bscript;\nfunction sstxsh(a, opts) {\n if (!a.address && !a.hash && !a.output) throw new TypeError('Not enough data');\n opts = Object.assign({\n validate: true\n }, opts || {});\n (0, types_1.typeforce)({\n network: types_1.typeforce.maybe(types_1.typeforce.Object),\n address: types_1.typeforce.maybe(types_1.typeforce.String),\n hash: types_1.typeforce.maybe(types_1.typeforce.BufferN(20)),\n output: types_1.typeforce.maybe(types_1.typeforce.Buffer)\n }, a);\n const network = a.network || networks_1.decred;\n const o = {\n name: 'sstxsh',\n network\n };\n const _address = lazy.value(() => bs58check.decodeAddress(a.address, network));\n lazy.prop(o, 'address', () => {\n if (!o.hash) return;\n return bs58check.encodeAddress(o.hash, network.scriptHash, network);\n });\n lazy.prop(o, 'hash', () => {\n if (a.output) return a.output.subarray(3, 23);\n if (a.address) return _address().hash;\n });\n lazy.prop(o, 'output', () => {\n if (!o.hash) return;\n return bscript.compile([OPS.OP_SSTX, OPS.OP_HASH160, o.hash, OPS.OP_EQUAL]);\n });\n if (opts.validate) {\n let hash = Buffer.from([]);\n if (a.address) {\n const {\n version,\n hash: aHash\n } = _address();\n if (version !== network.scriptHash) throw new TypeError('Invalid version or Network mismatch');\n if (aHash.length !== 20) throw new TypeError('Invalid address');\n hash = aHash;\n }\n if (a.hash) {\n if (hash.length > 0 && !hash.equals(a.hash)) throw new TypeError('Hash mismatch');else hash = a.hash;\n }\n if (a.output) {\n if (a.output.length !== 24 || a.output[0] !== OPS.OP_SSTX || a.output[1] !== OPS.OP_HASH160 || a.output[2] !== 0x14 || a.output[23] !== OPS.OP_EQUAL) throw new TypeError('sstxsh output is invalid');\n const hash2 = a.output.subarray(3, 23);\n if (hash.length > 0 && !hash.equals(hash2)) throw new TypeError('Hash mismatch');\n }\n }\n return Object.assign(o, a);\n}\n//# sourceMappingURL=sstxsh.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sstxsh = exports.sstxpkh = exports.sstxcommitment = exports.sstxchange = exports.p2wsh = exports.p2wpkh = exports.p2tr = exports.p2sh = exports.p2pkh = exports.p2pk = exports.p2ms = exports.embed = void 0;\nvar embed_1 = require(\"./embed\");\nObject.defineProperty(exports, \"embed\", {\n enumerable: true,\n get: function () {\n return embed_1.p2data;\n }\n});\nvar p2ms_1 = require(\"./p2ms\");\nObject.defineProperty(exports, \"p2ms\", {\n enumerable: true,\n get: function () {\n return p2ms_1.p2ms;\n }\n});\nvar p2pk_1 = require(\"./p2pk\");\nObject.defineProperty(exports, \"p2pk\", {\n enumerable: true,\n get: function () {\n return p2pk_1.p2pk;\n }\n});\nvar p2pkh_1 = require(\"./p2pkh\");\nObject.defineProperty(exports, \"p2pkh\", {\n enumerable: true,\n get: function () {\n return p2pkh_1.p2pkh;\n }\n});\nvar p2sh_1 = require(\"./p2sh\");\nObject.defineProperty(exports, \"p2sh\", {\n enumerable: true,\n get: function () {\n return p2sh_1.p2sh;\n }\n});\nvar p2tr_1 = require(\"./p2tr\");\nObject.defineProperty(exports, \"p2tr\", {\n enumerable: true,\n get: function () {\n return p2tr_1.p2tr;\n }\n});\nvar p2wpkh_1 = require(\"./p2wpkh\");\nObject.defineProperty(exports, \"p2wpkh\", {\n enumerable: true,\n get: function () {\n return p2wpkh_1.p2wpkh;\n }\n});\nvar p2wsh_1 = require(\"./p2wsh\");\nObject.defineProperty(exports, \"p2wsh\", {\n enumerable: true,\n get: function () {\n return p2wsh_1.p2wsh;\n }\n});\nvar sstxchange_1 = require(\"./sstxchange\");\nObject.defineProperty(exports, \"sstxchange\", {\n enumerable: true,\n get: function () {\n return sstxchange_1.sstxchange;\n }\n});\nvar sstxcommitment_1 = require(\"./sstxcommitment\");\nObject.defineProperty(exports, \"sstxcommitment\", {\n enumerable: true,\n get: function () {\n return sstxcommitment_1.sstxcommitment;\n }\n});\nvar sstxpkh_1 = require(\"./sstxpkh\");\nObject.defineProperty(exports, \"sstxpkh\", {\n enumerable: true,\n get: function () {\n return sstxpkh_1.sstxpkh;\n }\n});\nvar sstxsh_1 = require(\"./sstxsh\");\nObject.defineProperty(exports, \"sstxsh\", {\n enumerable: true,\n get: function () {\n return sstxsh_1.sstxsh;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromBase58Check = fromBase58Check;\nexports.fromBech32 = fromBech32;\nexports.toBech32 = toBech32;\nexports.fromOutputScript = fromOutputScript;\nexports.getAddressType = getAddressType;\nexports.toOutputScript = toOutputScript;\nconst tslib_1 = require(\"tslib\");\nconst bech32_1 = require(\"bech32\");\nconst bs58check = tslib_1.__importStar(require(\"./bs58check\"));\nconst networks_1 = require(\"./networks\");\nconst payments = tslib_1.__importStar(require(\"./payments\"));\nconst bscript = tslib_1.__importStar(require(\"./script\"));\nfunction fromBase58Check(address, network = networks_1.bitcoin) {\n return bs58check.decodeAddress(address, network);\n}\nfunction fromBech32(address) {\n let result;\n let version;\n try {\n result = bech32_1.bech32.decode(address);\n } catch {}\n if (result) {\n [version] = result.words;\n if (version !== 0) throw new TypeError(`${address} uses wrong encoding`);\n } else {\n result = bech32_1.bech32m.decode(address);\n [version] = result.words;\n if (version === 0) throw new TypeError(`${address} uses wrong encoding`);\n }\n const data = bech32_1.bech32.fromWords(result.words.slice(1));\n return {\n version,\n prefix: result.prefix,\n data: Buffer.from(data)\n };\n}\nfunction toBech32(data, version, prefix) {\n const words = bech32_1.bech32.toWords(data);\n words.unshift(version);\n return version === 0 ? bech32_1.bech32.encode(prefix, words) : bech32_1.bech32m.encode(prefix, words);\n}\nconst FUTURE_SEGWIT_MAX_SIZE = 40;\nconst FUTURE_SEGWIT_MIN_SIZE = 2;\nconst FUTURE_SEGWIT_MAX_VERSION = 16;\nconst FUTURE_SEGWIT_MIN_VERSION = 1;\nconst FUTURE_SEGWIT_VERSION_DIFF = 0x50;\nfunction toFutureSegwitAddress(output, network = networks_1.bitcoin) {\n const data = output.subarray(2);\n if (data.length < FUTURE_SEGWIT_MIN_SIZE || data.length > FUTURE_SEGWIT_MAX_SIZE) throw new TypeError('Invalid program length for segwit address');\n const version = output[0] - FUTURE_SEGWIT_VERSION_DIFF;\n if (version < FUTURE_SEGWIT_MIN_VERSION || version > FUTURE_SEGWIT_MAX_VERSION) throw new TypeError('Invalid version for segwit address');\n if (output[1] !== data.length) throw new TypeError('Invalid script for segwit address');\n return toBech32(data, version, network.bech32);\n}\nfunction fromOutputScript(output, network = networks_1.bitcoin) {\n try {\n return payments.p2pkh({\n output,\n network\n }).address;\n } catch {}\n try {\n return payments.p2sh({\n output,\n network\n }).address;\n } catch {}\n try {\n return payments.p2wpkh({\n output,\n network\n }).address;\n } catch {}\n try {\n return payments.p2wsh({\n output,\n network\n }).address;\n } catch {}\n try {\n return payments.p2tr({\n output,\n network\n }).address;\n } catch {}\n try {\n return toFutureSegwitAddress(output, network);\n } catch {}\n throw new Error(`${bscript.toASM(output)} has no matching Address`);\n}\nfunction decodeAddress(address, network) {\n try {\n const {\n hash,\n version\n } = fromBase58Check(address, network);\n return {\n success: true,\n format: 'base58',\n version,\n hash\n };\n } catch {\n try {\n const {\n data,\n prefix,\n version\n } = fromBech32(address);\n if (prefix === network.bech32) {\n return {\n success: true,\n format: 'bech32',\n version,\n hash: data\n };\n }\n return {\n success: false,\n error: 'bech32-invalid-prefix'\n };\n } catch {}\n }\n return {\n success: false,\n error: 'unknown-format'\n };\n}\nfunction identifyAddressType(format, version, hash, network) {\n if (format === 'base58') {\n if (version === network.pubKeyHash) return 'p2pkh';\n if (version === network.scriptHash) return 'p2sh';\n } else if (format === 'bech32') {\n if (version === 0) {\n if (hash.length === 20) return 'p2wpkh';\n if (hash.length === 32) return 'p2wsh';\n } else if (version === 1 && hash.length === 32) {\n return 'p2tr';\n } else if (version >= FUTURE_SEGWIT_MIN_VERSION && version <= FUTURE_SEGWIT_MAX_VERSION && hash.length >= FUTURE_SEGWIT_MIN_SIZE && hash.length <= FUTURE_SEGWIT_MAX_SIZE) {\n return 'p2w-unknown';\n }\n }\n return 'unknown';\n}\nfunction createOutputScript(type, hash, version) {\n switch (type) {\n case 'p2pkh':\n return payments.p2pkh({\n hash\n }).output;\n case 'p2sh':\n return payments.p2sh({\n hash\n }).output;\n case 'p2wpkh':\n return payments.p2wpkh({\n hash\n }).output;\n case 'p2wsh':\n return payments.p2wsh({\n hash\n }).output;\n case 'p2tr':\n case 'p2w-unknown':\n return bscript.compile([version + FUTURE_SEGWIT_VERSION_DIFF, hash]);\n }\n}\nfunction getAddressType(address, network = networks_1.bitcoin) {\n const {\n success,\n format,\n version,\n hash\n } = decodeAddress(address, network);\n return success ? identifyAddressType(format, version, hash, network) : 'unknown';\n}\nfunction toOutputScript(address, network = networks_1.bitcoin) {\n const {\n success,\n format,\n version,\n hash,\n error\n } = decodeAddress(address, network);\n if (success) {\n const type = identifyAddressType(format, version, hash, network);\n if (type !== 'unknown') {\n return createOutputScript(type, hash, version);\n }\n } else if (error === 'bech32-invalid-prefix') {\n throw new Error(`${address} has an invalid prefix`);\n }\n throw new Error(`${address} has no matching Script`);\n}\n//# sourceMappingURL=address.js.map", "\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decode = exports.encodeRaw = exports.decodeRaw = void 0;\nvar bs58check_1 = __importDefault(require(\"bs58check\"));\nfunction decodeRaw(buffer, version) {\n // check version only if defined\n if (version !== undefined && buffer[0] !== version)\n throw new Error('Invalid network version');\n // uncompressed\n if (buffer.length === 33) {\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: false\n };\n }\n // invalid length\n if (buffer.length !== 34)\n throw new Error('Invalid WIF length');\n // invalid compression flag\n if (buffer[33] !== 0x01)\n throw new Error('Invalid compression flag');\n return {\n version: buffer[0],\n privateKey: buffer.slice(1, 33),\n compressed: true\n };\n}\nexports.decodeRaw = decodeRaw;\nfunction encodeRaw(version, privateKey, compressed) {\n if (privateKey.length !== 32)\n throw new TypeError('Invalid privateKey length');\n var result = new Uint8Array(compressed ? 34 : 33);\n var view = new DataView(result.buffer);\n view.setUint8(0, version);\n result.set(privateKey, 1);\n if (compressed) {\n result[33] = 0x01;\n }\n return result;\n}\nexports.encodeRaw = encodeRaw;\nfunction decode(str, version) {\n return decodeRaw(bs58check_1.default.decode(str), version);\n}\nexports.decode = decode;\nfunction encode(wif) {\n return bs58check_1.default.encode(encodeRaw(wif.version, wif.privateKey, wif.compressed));\n}\nexports.encode = encode;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromBase58 = fromBase58;\nexports.fromPrivateKey = fromPrivateKey;\nexports.fromPublicKey = fromPublicKey;\nexports.fromSeed = fromSeed;\nconst tslib_1 = require(\"tslib\");\nconst tiny_secp256k1_1 = tslib_1.__importDefault(require(\"tiny-secp256k1\"));\nconst wif = tslib_1.__importStar(require(\"wif\"));\nconst bs58check = tslib_1.__importStar(require(\"./bs58check\"));\nconst crypto = tslib_1.__importStar(require(\"./crypto\"));\nconst networks_1 = require(\"./networks\");\nconst typeforce_1 = require(\"./types/typeforce\");\nconst UINT256_TYPE = typeforce_1.typeforce.BufferN(32);\nconst NETWORK_TYPE = typeforce_1.typeforce.compile({\n wif: typeforce_1.typeforce.UInt8,\n bip32: {\n public: typeforce_1.typeforce.UInt32,\n private: typeforce_1.typeforce.UInt32\n }\n});\nconst HIGHEST_BIT = 0x80000000;\nconst UINT31_MAX = 2 ** 31 - 1;\nfunction BIP32Path(value) {\n return typeforce_1.typeforce.String(value) && value.match(/^(m\\/)?(\\d+'?\\/)*\\d+'?$/) !== null;\n}\nfunction UInt31(value) {\n return typeforce_1.typeforce.UInt32(value) && value <= UINT31_MAX;\n}\nfunction fromPrivateKeyLocal(privateKey, chainCode, network, depth, index, parentFingerprint) {\n (0, typeforce_1.typeforce)({\n privateKey: UINT256_TYPE,\n chainCode: UINT256_TYPE\n }, {\n privateKey,\n chainCode\n });\n network = network || networks_1.bitcoin;\n if (!tiny_secp256k1_1.default.isPrivate(privateKey)) throw new TypeError('Private key not in range [1, n)');\n return new BIP32(privateKey, undefined, chainCode, network, depth, index, parentFingerprint);\n}\nfunction fromPublicKeyLocal(publicKey, chainCode, network, depth, index, parentFingerprint) {\n (0, typeforce_1.typeforce)({\n publicKey: typeforce_1.typeforce.BufferN(33),\n chainCode: UINT256_TYPE\n }, {\n publicKey,\n chainCode\n });\n network = network || networks_1.bitcoin;\n if (!tiny_secp256k1_1.default.isPoint(publicKey)) throw new TypeError('Point is not on the curve');\n return new BIP32(undefined, publicKey, chainCode, network, depth, index, parentFingerprint);\n}\nclass BIP32 {\n __D;\n __Q;\n chainCode;\n network;\n __DEPTH;\n __INDEX;\n __PARENT_FINGERPRINT;\n lowR;\n constructor(__D, __Q, chainCode, network, __DEPTH = 0, __INDEX = 0, __PARENT_FINGERPRINT = 0x00000000) {\n this.__D = __D;\n this.__Q = __Q;\n this.chainCode = chainCode;\n this.network = network;\n this.__DEPTH = __DEPTH;\n this.__INDEX = __INDEX;\n this.__PARENT_FINGERPRINT = __PARENT_FINGERPRINT;\n (0, typeforce_1.typeforce)(NETWORK_TYPE, network);\n this.lowR = false;\n }\n get depth() {\n return this.__DEPTH;\n }\n get index() {\n return this.__INDEX;\n }\n get parentFingerprint() {\n return this.__PARENT_FINGERPRINT;\n }\n get publicKey() {\n if (this.__Q === undefined) this.__Q = tiny_secp256k1_1.default.pointFromScalar(this.__D, true);\n return this.__Q;\n }\n get privateKey() {\n return this.__D;\n }\n get identifier() {\n if ((0, networks_1.isNetworkType)('decred', this.network)) return crypto.hash160blake256(this.publicKey);\n return crypto.hash160(this.publicKey);\n }\n get fingerprint() {\n return this.identifier.subarray(0, 4);\n }\n get compressed() {\n return true;\n }\n isNeutered() {\n return this.__D === undefined;\n }\n neutered() {\n return fromPublicKeyLocal(this.publicKey, this.chainCode, this.network, this.depth, this.index, this.parentFingerprint);\n }\n toBase58() {\n const {\n network\n } = this;\n const version = !this.isNeutered() ? network.bip32.private : network.bip32.public;\n const buffer = Buffer.allocUnsafe(78);\n buffer.writeUInt32BE(version, 0);\n buffer.writeUInt8(this.depth, 4);\n buffer.writeUInt32BE(this.parentFingerprint, 5);\n buffer.writeUInt32BE(this.index, 9);\n this.chainCode.copy(buffer, 13);\n if (!this.isNeutered()) {\n buffer.writeUInt8(0, 45);\n this.privateKey.copy(buffer, 46);\n } else {\n this.publicKey.copy(buffer, 45);\n }\n return bs58check.encode(buffer, network);\n }\n toWIF() {\n if (!this.privateKey) throw new TypeError('Missing private key');\n return wif.encode({\n version: this.network.wif,\n privateKey: this.privateKey,\n compressed: true\n });\n }\n derive(index) {\n (0, typeforce_1.typeforce)(typeforce_1.typeforce.UInt32, index);\n const isHardened = index >= HIGHEST_BIT;\n const data = Buffer.allocUnsafe(37);\n if (isHardened) {\n if (this.isNeutered()) throw new TypeError('Missing private key for hardened child key');\n data[0] = 0x00;\n this.privateKey.copy(data, 1);\n data.writeUInt32BE(index, 33);\n } else {\n this.publicKey.copy(data, 0);\n data.writeUInt32BE(index, 33);\n }\n const I = crypto.hmacSHA512(this.chainCode, data);\n const IL = I.subarray(0, 32);\n const IR = I.subarray(32);\n if (!tiny_secp256k1_1.default.isPrivate(IL)) return this.derive(index + 1);\n let hd;\n if (!this.isNeutered()) {\n const ki = tiny_secp256k1_1.default.privateAdd(this.privateKey, IL);\n if (ki == null) return this.derive(index + 1);\n hd = fromPrivateKeyLocal(ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n } else {\n const Ki = tiny_secp256k1_1.default.pointAddScalar(this.publicKey, IL, true);\n if (Ki === null) return this.derive(index + 1);\n hd = fromPublicKeyLocal(Ki, IR, this.network, this.depth + 1, index, this.fingerprint.readUInt32BE(0));\n }\n return hd;\n }\n deriveHardened(index) {\n (0, typeforce_1.typeforce)(UInt31, index);\n return this.derive(index + HIGHEST_BIT);\n }\n derivePath(path) {\n (0, typeforce_1.typeforce)(BIP32Path, path);\n let splitPath = path.split('/');\n if (splitPath[0] === 'm') {\n if (this.parentFingerprint) throw new TypeError('Expected master, got child');\n splitPath = splitPath.slice(1);\n }\n return splitPath.reduce((prevHd, indexStr) => {\n let index;\n if (indexStr.slice(-1) === `'`) {\n index = parseInt(indexStr.slice(0, -1), 10);\n return prevHd.deriveHardened(index);\n }\n index = parseInt(indexStr, 10);\n return prevHd.derive(index);\n }, this);\n }\n sign(hash, lowR) {\n if (!this.privateKey) throw new Error('Missing private key');\n if (lowR === undefined) lowR = this.lowR;\n if (lowR === false) {\n return tiny_secp256k1_1.default.sign(hash, this.privateKey);\n }\n let sig = tiny_secp256k1_1.default.sign(hash, this.privateKey);\n const extraData = Buffer.alloc(32, 0);\n let counter = 0;\n while (sig[0] > 0x7f) {\n counter++;\n extraData.writeUIntLE(counter, 0, 6);\n sig = tiny_secp256k1_1.default.signWithEntropy(hash, this.privateKey, extraData);\n }\n return sig;\n }\n verify(hash, signature) {\n return tiny_secp256k1_1.default.verify(hash, this.publicKey, signature);\n }\n}\nfunction fromBase58(inString, network) {\n const buffer = Buffer.from((0, networks_1.isNetworkType)('decred', network) ? bs58check.decodeBlake256Key(inString) : bs58check.decode(inString, network));\n if (buffer.length !== 78) throw new TypeError('Invalid buffer length');\n network = network || networks_1.bitcoin;\n const version = buffer.readUInt32BE(0);\n if (version !== network.bip32.private && version !== network.bip32.public) throw new TypeError('Invalid network version');\n const depth = buffer[4];\n const parentFingerprint = buffer.readUInt32BE(5);\n if (depth === 0) {\n if (parentFingerprint !== 0x00000000) throw new TypeError('Invalid parent fingerprint');\n }\n const index = buffer.readUInt32BE(9);\n if (depth === 0 && index !== 0) throw new TypeError('Invalid index');\n const chainCode = buffer.subarray(13, 45);\n let hd;\n if (version === network.bip32.private) {\n if (buffer.readUInt8(45) !== 0x00) throw new TypeError('Invalid private key');\n const k = buffer.subarray(46, 78);\n hd = fromPrivateKeyLocal(k, chainCode, network, depth, index, parentFingerprint);\n } else {\n const X = buffer.subarray(45, 78);\n hd = fromPublicKeyLocal(X, chainCode, network, depth, index, parentFingerprint);\n }\n return hd;\n}\nfunction fromPrivateKey(privateKey, chainCode, network) {\n return fromPrivateKeyLocal(privateKey, chainCode, network);\n}\nfunction fromPublicKey(publicKey, chainCode, network) {\n return fromPublicKeyLocal(publicKey, chainCode, network);\n}\nfunction fromSeed(seed, network) {\n (0, typeforce_1.typeforce)(typeforce_1.typeforce.Buffer, seed);\n if (seed.length < 16) throw new TypeError('Seed should be at least 128 bits');\n if (seed.length > 64) throw new TypeError('Seed should be at most 512 bits');\n network = network || networks_1.bitcoin;\n const I = crypto.hmacSHA512(Buffer.from('Bitcoin seed', 'utf8'), seed);\n const IL = I.subarray(0, 32);\n const IR = I.subarray(32);\n return fromPrivateKey(IL, IR, network);\n}\n//# sourceMappingURL=bip32.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MINIMAL_COINBASE_CONFIRMATIONS = exports.OUTPUT_SCRIPT_LENGTH = exports.INPUT_SCRIPT_LENGTH = exports.ZERO = void 0;\nexports.getVarIntSize = getVarIntSize;\nexports.inputWeight = inputWeight;\nexports.inputBytes = inputBytes;\nexports.outputWeight = outputWeight;\nexports.outputBytes = outputBytes;\nexports.getFeeForBytes = getFeeForBytes;\nexports.transactionWeight = transactionWeight;\nexports.transactionBytes = transactionBytes;\nexports.getDustAmount = getDustAmount;\nexports.bignumberOrNaN = bignumberOrNaN;\nexports.sumOrNaN = sumOrNaN;\nexports.getFeePolicy = getFeePolicy;\nexports.getFee = getFee;\nexports.finalize = finalize;\nexports.anyOf = anyOf;\nexports.utxoScore = utxoScore;\nexports.sortByScore = sortByScore;\nexports.filterCoinbase = filterCoinbase;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst networks_1 = require(\"../networks\");\nexports.ZERO = new bn_js_1.default(0);\nexports.INPUT_SCRIPT_LENGTH = {\n p2pkh: 108,\n p2sh: 107,\n p2tr: 65,\n p2wpkh: 107,\n p2wsh: 107\n};\nexports.OUTPUT_SCRIPT_LENGTH = {\n p2pkh: 25,\n p2sh: 23,\n p2tr: 34,\n p2wpkh: 22,\n p2wsh: 34\n};\nconst SEGWIT_INPUT_SCRIPT_TYPES = ['p2sh', 'p2tr', 'p2wpkh', 'p2wsh'];\nconst TX_BASE = 32;\nconst INPUT_SIZE = 160;\nconst DUST_RELAY_FEE_RATE = 3;\nexports.MINIMAL_COINBASE_CONFIRMATIONS = 100;\nfunction getVarIntSize(length) {\n if (length < 253) return 1;\n if (length < 65536) return 3;\n if (length < 4294967296) return 5;\n return 9;\n}\nfunction inputWeight(input) {\n if (input.weight) return input.weight;\n let weight = INPUT_SIZE;\n if (!SEGWIT_INPUT_SCRIPT_TYPES.includes(input.type)) {\n weight += 4 * input.script.length;\n } else {\n if (input.type === 'p2sh') {\n weight += 4 * (2 + 22);\n } else {\n weight += 4;\n }\n weight += 1 + input.script.length;\n }\n return weight;\n}\nfunction inputBytes(input) {\n return Math.ceil(inputWeight(input) / 4);\n}\nfunction outputWeight(output) {\n if (output.weight) return output.weight;\n return 4 * (8 + 1 + output.script.length);\n}\nfunction outputBytes(output) {\n return Math.ceil(outputWeight(output) / 4);\n}\nfunction getFeeForBytes(feeRate, bytes) {\n return Math.ceil(feeRate * bytes);\n}\nfunction transactionWeight(inputs, outputs) {\n const segwitInputs = inputs.filter(i => SEGWIT_INPUT_SCRIPT_TYPES.includes(i.type)).length;\n return TX_BASE + 4 * getVarIntSize(inputs.length) + inputs.reduce((x, i) => x + inputWeight(i), 0) + 4 * getVarIntSize(outputs.length) + outputs.reduce((x, o) => x + outputWeight(o), 0) + (segwitInputs ? 2 + (inputs.length - segwitInputs) : 0);\n}\nfunction transactionBytes(inputs, outputs) {\n return Math.ceil(transactionWeight(inputs, outputs) / 4);\n}\nfunction getDustAmount(feeRate, {\n txType,\n longTermFeeRate,\n dustThreshold\n}) {\n const inputSize = inputBytes({\n type: txType,\n script: {\n length: exports.INPUT_SCRIPT_LENGTH[txType]\n }\n });\n const longTermFee = longTermFeeRate ? Math.min(feeRate, longTermFeeRate) : 0;\n const dustRelayFeeRate = Math.max(longTermFee, DUST_RELAY_FEE_RATE);\n return Math.max(dustThreshold || 0, getFeeForBytes(dustRelayFeeRate, inputSize));\n}\nfunction bignumberOrNaN(v, forgiving = false) {\n if (bn_js_1.default.isBN(v)) return v;\n const defaultValue = forgiving ? exports.ZERO : undefined;\n if (!v || typeof v !== 'string' || !/^\\d+$/.test(v)) return defaultValue;\n try {\n return new bn_js_1.default(v);\n } catch {\n return defaultValue;\n }\n}\nfunction sumOrNaN(range, forgiving = false) {\n return range.reduce((a, x) => {\n if (!a) return a;\n const value = bignumberOrNaN(x.value);\n if (!value) return forgiving ? exports.ZERO.add(a) : undefined;\n return value.add(a);\n }, exports.ZERO);\n}\nfunction getFeePolicy(network) {\n if ((0, networks_1.isNetworkType)('doge', network)) return 'doge';\n if ((0, networks_1.isNetworkType)('zcash', network)) return 'zcash';\n return 'bitcoin';\n}\nfunction getBitcoinFee(inputs, outputs, feeRate, {\n baseFee = 0,\n floorBaseFee\n}) {\n const bytes = transactionBytes(inputs, outputs);\n const defaultFee = getFeeForBytes(feeRate, bytes);\n return baseFee && floorBaseFee ? baseFee * (1 + Math.floor(defaultFee / baseFee)) : baseFee + defaultFee;\n}\nfunction getDogeFee(inputs, outputs, feeRate, {\n dustThreshold = 0,\n ...options\n}) {\n const fee = getBitcoinFee(inputs, outputs, feeRate, options);\n const limit = new bn_js_1.default(dustThreshold);\n const dustOutputsCount = outputs.filter(({\n value\n }) => value && value.lt(limit)).length;\n return fee + dustOutputsCount * dustThreshold;\n}\nconst MARGINAL_FEE_ZAT_PER_ACTION = 5000;\nconst GRACE_ACTIONS = 2;\nconst P2PKH_STANDARD_INPUT_SIZE = 150;\nconst P2PKH_STANDARD_OUTPUT_SIZE = 34;\nfunction getZcashFee(inputs, outputs, feeRate, options) {\n const fee = getBitcoinFee(inputs, outputs, feeRate, options);\n const txInTotalBytes = inputs.reduce((sum, i) => sum + inputBytes(i), 0);\n const txOutTotalBytes = outputs.reduce((sum, o) => sum + outputBytes(o), 0);\n const actions = Math.max(GRACE_ACTIONS, Math.ceil(txInTotalBytes / P2PKH_STANDARD_INPUT_SIZE), Math.ceil(txOutTotalBytes / P2PKH_STANDARD_OUTPUT_SIZE));\n return Math.max(actions * MARGINAL_FEE_ZAT_PER_ACTION, fee);\n}\nfunction getFee(inputs, outputs, feeRate, {\n feePolicy,\n ...options\n} = {}) {\n switch (feePolicy) {\n case 'doge':\n return getDogeFee(inputs, outputs, feeRate, options);\n case 'zcash':\n return getZcashFee(inputs, outputs, feeRate, options);\n default:\n return getBitcoinFee(inputs, outputs, feeRate, options);\n }\n}\nfunction finalize(inputs, outputs, feeRate, options) {\n const changeOutput = options.changeOutput || {\n script: {\n length: exports.OUTPUT_SCRIPT_LENGTH[options.txType]\n }\n };\n const fee = getFee(inputs, outputs, feeRate, options);\n const feeAfterExtraOutput = getFee(inputs, [...outputs, changeOutput], feeRate, options);\n const sumInputs = sumOrNaN(inputs);\n const sumOutputs = sumOrNaN(outputs);\n if (!sumInputs || !sumOutputs || sumInputs.sub(sumOutputs).lt(new bn_js_1.default(fee))) {\n return {\n fee\n };\n }\n const remainderAfterExtraOutput = sumInputs.sub(sumOutputs.add(new bn_js_1.default(feeAfterExtraOutput)));\n const dustAmount = getDustAmount(feeRate, options);\n const finalOutputs = [...outputs];\n if (remainderAfterExtraOutput.gte(new bn_js_1.default(dustAmount))) {\n finalOutputs.push({\n ...changeOutput,\n value: remainderAfterExtraOutput\n });\n }\n return {\n inputs,\n outputs: finalOutputs,\n fee: sumInputs.sub(sumOrNaN(finalOutputs, true)).toNumber()\n };\n}\nfunction anyOf(algorithms) {\n return (utxos, outputs, feeRate, options) => {\n let result = {\n fee: 0\n };\n for (let i = 0; i < algorithms.length; i++) {\n const algorithm = algorithms[i];\n result = algorithm(utxos, outputs, feeRate, options);\n if (result.inputs) {\n return result;\n }\n }\n return result;\n };\n}\nfunction utxoScore(x, feeRate) {\n return x.value.sub(new bn_js_1.default(getFeeForBytes(feeRate, inputBytes(x))));\n}\nfunction sortByScore(feeRate) {\n return (a, b) => {\n const difference = utxoScore(a, feeRate).sub(utxoScore(b, feeRate));\n if (difference.eq(exports.ZERO)) {\n return a.i - b.i;\n }\n return difference.isNeg() ? 1 : -1;\n };\n}\nfunction filterCoinbase(utxos, minConfCoinbase) {\n return utxos.filter(utxo => {\n if (utxo.coinbase && !utxo.required) {\n return utxo.confirmations >= minConfCoinbase;\n }\n return true;\n });\n}\n//# sourceMappingURL=coinselectUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateAndParseRequest = validateAndParseRequest;\nconst address_1 = require(\"../address\");\nconst coinselectUtils_1 = require(\"../coinselect/coinselectUtils\");\nconst embed_1 = require(\"../payments/embed\");\nfunction validateAndParseFeeRate(rate) {\n const feeRate = typeof rate === 'string' ? Number(rate) : rate;\n if (typeof feeRate !== 'number' || Number.isNaN(feeRate) || !Number.isFinite(feeRate) || feeRate > Number.MAX_SAFE_INTEGER || feeRate <= 0) {\n return;\n }\n return feeRate;\n}\nfunction transformInput(i, utxo, txType) {\n if (typeof utxo.coinbase !== 'boolean') {\n throw new Error('Missing coinbase');\n }\n if (typeof utxo.own !== 'boolean') {\n throw new Error('Missing own');\n }\n if (typeof utxo.confirmations !== 'number') {\n throw new Error('Missing confirmations');\n }\n const value = (0, coinselectUtils_1.bignumberOrNaN)(utxo.amount);\n if (!value) {\n throw new Error('Invalid amount');\n }\n return {\n ...utxo,\n type: txType,\n i,\n script: {\n length: coinselectUtils_1.INPUT_SCRIPT_LENGTH[txType]\n },\n value\n };\n}\nfunction validateAndParseUtxos(txType, {\n utxos\n}) {\n if (utxos.length === 0) {\n return {\n type: 'error',\n error: 'MISSING-UTXOS'\n };\n }\n const incorrectUtxoError = (index, message) => ({\n type: 'error',\n error: 'INCORRECT-UTXO',\n message: `${message} at index ${index}`\n });\n const result = [];\n for (let i = 0; i < utxos.length; i++) {\n try {\n const csInput = transformInput(i, utxos[i], txType);\n csInput.weight = (0, coinselectUtils_1.inputWeight)(csInput);\n result.push(csInput);\n } catch (error) {\n return incorrectUtxoError(i, error.message);\n }\n }\n return result;\n}\nfunction transformOutput(output, txType, network) {\n const script = {\n length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[txType]\n };\n if (output.type === 'payment') {\n const value = (0, coinselectUtils_1.bignumberOrNaN)(output.amount);\n if (!value) throw new Error('Invalid amount');\n return {\n value,\n script: (0, address_1.toOutputScript)(output.address, network)\n };\n }\n if (output.type === 'payment-noaddress') {\n const value = (0, coinselectUtils_1.bignumberOrNaN)(output.amount);\n if (!value) throw new Error('Invalid amount');\n return {\n value,\n script\n };\n }\n if (output.type === 'opreturn') {\n return {\n value: (0, coinselectUtils_1.bignumberOrNaN)('0', true),\n script: (0, embed_1.p2data)({\n data: [Buffer.from(output.dataHex, 'hex')]\n }).output\n };\n }\n if (output.type === 'send-max') {\n return {\n script: (0, address_1.toOutputScript)(output.address, network)\n };\n }\n if (output.type === 'send-max-noaddress') {\n return {\n script\n };\n }\n throw new Error('Unknown output type');\n}\nfunction validateAndParseOutputs(txType, {\n outputs,\n network\n}) {\n if (outputs.length === 0) {\n return {\n type: 'error',\n error: 'MISSING-OUTPUTS'\n };\n }\n const incorrectOutputError = (index, message) => ({\n type: 'error',\n error: 'INCORRECT-OUTPUT',\n message: `${message} at index ${index}`\n });\n let sendMaxOutputIndex = -1;\n const result = [];\n for (let i = 0; i < outputs.length; i++) {\n const output = outputs[i];\n if (output.type === 'send-max-noaddress' || output.type === 'send-max') {\n if (sendMaxOutputIndex >= 0) {\n return incorrectOutputError(i, 'Multiple send-max');\n }\n sendMaxOutputIndex = i;\n }\n try {\n const csOutput = transformOutput(output, txType, network);\n csOutput.weight = (0, coinselectUtils_1.outputWeight)(csOutput);\n result.push(csOutput);\n } catch (error) {\n return incorrectOutputError(i, error.message);\n }\n }\n return {\n outputs: result,\n sendMaxOutputIndex\n };\n}\nfunction validateAndParseChangeOutput(txType, {\n changeAddress,\n network\n}) {\n try {\n return transformOutput({\n type: 'send-max',\n ...changeAddress\n }, txType, network);\n } catch (error) {\n return {\n type: 'error',\n error: 'INCORRECT-OUTPUT',\n message: error.message\n };\n }\n}\nfunction validateAndParseRequest(request) {\n const feeRate = validateAndParseFeeRate(request.feeRate);\n if (!feeRate) {\n return {\n type: 'error',\n error: 'INCORRECT-FEE-RATE'\n };\n }\n const longTermFeeRate = validateAndParseFeeRate(request.longTermFeeRate);\n if (request.longTermFeeRate != null && !longTermFeeRate) {\n return {\n type: 'error',\n error: 'INCORRECT-FEE-RATE'\n };\n }\n const txType = request.txType || 'p2pkh';\n const inputs = validateAndParseUtxos(txType, request);\n if ('error' in inputs) {\n return inputs;\n }\n const outputs = validateAndParseOutputs(txType, request);\n if ('error' in outputs) {\n return outputs;\n }\n const changeOutput = validateAndParseChangeOutput(txType, request);\n if ('error' in changeOutput) {\n return changeOutput;\n }\n const feePolicy = (0, coinselectUtils_1.getFeePolicy)(request.network);\n return {\n txType,\n inputs,\n ...outputs,\n changeOutput,\n feeRate,\n feePolicy,\n longTermFeeRate,\n dustThreshold: request.dustThreshold,\n baseFee: request.baseFee,\n floorBaseFee: request.floorBaseFee,\n sortingStrategy: request.sortingStrategy\n };\n}\n//# sourceMappingURL=request.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertOutput = void 0;\nconst convertOutput = (selectedOutput, composeOutput) => {\n if (composeOutput.type === 'change') {\n return {\n ...composeOutput,\n amount: selectedOutput.value.toString()\n };\n }\n if (composeOutput.type === 'opreturn') {\n return composeOutput;\n }\n return {\n ...composeOutput,\n type: 'payment',\n amount: selectedOutput.value.toString()\n };\n};\nexports.convertOutput = convertOutput;\n//# sourceMappingURL=convertOutput.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bip69SortingStrategy = void 0;\nconst convertOutput_1 = require(\"./convertOutput\");\nfunction inputComparator(a, b) {\n return Buffer.from(a.txid, 'hex').compare(Buffer.from(b.txid, 'hex')) || a.vout - b.vout;\n}\nfunction outputComparator(a, b) {\n return a.value.cmp(b.value) || (Buffer.isBuffer(a.script) && Buffer.isBuffer(b.script) ? a.script.compare(b.script) : a.script.length - b.script.length);\n}\nconst bip69SortingStrategy = ({\n result,\n request,\n convertedInputs\n}) => {\n const defaultPermutation = [];\n const convertedOutputs = result.outputs.map((output, index) => {\n defaultPermutation.push(index);\n if (request.outputs[index]) {\n return (0, convertOutput_1.convertOutput)(output, request.outputs[index]);\n }\n return (0, convertOutput_1.convertOutput)(output, {\n type: 'change',\n ...request.changeAddress\n });\n });\n const permutation = defaultPermutation.sort((a, b) => outputComparator(result.outputs[a], result.outputs[b]));\n const sortedOutputs = permutation.map(index => convertedOutputs[index]);\n return {\n inputs: convertedInputs.sort(inputComparator),\n outputs: sortedOutputs,\n outputsPermutation: permutation\n };\n};\nexports.bip69SortingStrategy = bip69SortingStrategy;\n//# sourceMappingURL=bip69SortingStrategy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.noneSortingStrategy = void 0;\nconst convertOutput_1 = require(\"./convertOutput\");\nconst noneSortingStrategy = ({\n result,\n request,\n convertedInputs\n}) => {\n const convertedOutputs = result.outputs.map((output, index) => {\n if (request.outputs[index]) {\n return (0, convertOutput_1.convertOutput)(output, request.outputs[index]);\n }\n return (0, convertOutput_1.convertOutput)(output, {\n type: 'change',\n ...request.changeAddress\n });\n });\n return {\n inputs: convertedInputs,\n outputs: convertedOutputs,\n outputsPermutation: Array.from(convertedOutputs.keys())\n };\n};\nexports.noneSortingStrategy = noneSortingStrategy;\n//# sourceMappingURL=noneSortingStrategy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.randomSortingStrategy = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst convertOutput_1 = require(\"./convertOutput\");\nconst randomSortingStrategy = ({\n result,\n request,\n convertedInputs\n}) => {\n const nonChangeOutputPermutation = [];\n const changeOutputPermutation = [];\n const convertedOutputs = result.outputs.map((output, index) => {\n if (request.outputs[index]) {\n nonChangeOutputPermutation.push(index);\n return (0, convertOutput_1.convertOutput)(output, request.outputs[index]);\n }\n changeOutputPermutation.push(index);\n return (0, convertOutput_1.convertOutput)(output, {\n type: 'change',\n ...request.changeAddress\n });\n });\n const permutation = [...nonChangeOutputPermutation];\n const newPositionOfChange = (0, utils_1.getRandomInt)(0, permutation.length + 1);\n permutation.splice(newPositionOfChange, 0, ...changeOutputPermutation);\n const sortedOutputs = permutation.map(index => convertedOutputs[index]);\n return {\n inputs: (0, utils_1.arrayShuffle)(convertedInputs, {\n randomInt: utils_1.getRandomInt\n }),\n outputs: sortedOutputs,\n outputsPermutation: permutation\n };\n};\nexports.randomSortingStrategy = randomSortingStrategy;\n//# sourceMappingURL=randomSortingStrategy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createTransaction = createTransaction;\nconst bip69SortingStrategy_1 = require(\"./sorting/bip69SortingStrategy\");\nconst noneSortingStrategy_1 = require(\"./sorting/noneSortingStrategy\");\nconst randomSortingStrategy_1 = require(\"./sorting/randomSortingStrategy\");\nconst strategyMap = {\n bip69: bip69SortingStrategy_1.bip69SortingStrategy,\n none: noneSortingStrategy_1.noneSortingStrategy,\n random: randomSortingStrategy_1.randomSortingStrategy\n};\nfunction createTransaction(request, result) {\n const convertedInputs = result.inputs.map(input => request.utxos[input.i]);\n return strategyMap[request.sortingStrategy]({\n result,\n request,\n convertedInputs\n });\n}\n//# sourceMappingURL=transaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getErrorResult = getErrorResult;\nexports.getResult = getResult;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst transaction_1 = require(\"./transaction\");\nconst coinselectUtils_1 = require(\"../coinselect/coinselectUtils\");\nconst types_1 = require(\"../types\");\nfunction getErrorResult(error) {\n const message = error instanceof Error ? error.message : `${error}`;\n const known = types_1.COMPOSE_ERROR_TYPES.find(e => e === message);\n if (known) {\n return {\n type: 'error',\n error: known\n };\n }\n return {\n type: 'error',\n error: 'COINSELECT',\n message\n };\n}\nfunction splitByCompleteness(outputs) {\n const complete = [];\n const incomplete = [];\n outputs.forEach(output => {\n if (output.type === 'payment' || output.type === 'send-max' || output.type === 'opreturn') {\n complete.push(output);\n } else {\n incomplete.push(output);\n }\n });\n return {\n complete,\n incomplete\n };\n}\nfunction getResult(request, {\n sendMaxOutputIndex\n}, result) {\n if (!result.inputs || !result.outputs) {\n return {\n type: 'error',\n error: 'NOT-ENOUGH-FUNDS'\n };\n }\n const totalSpent = result.outputs.reduce((total, output, index) => {\n if (request.outputs[index]) {\n return total.add(output.value);\n }\n return total;\n }, new bn_js_1.default(result.fee));\n const max = sendMaxOutputIndex >= 0 ? result.outputs[sendMaxOutputIndex].value.toString() : undefined;\n const bytes = (0, coinselectUtils_1.transactionBytes)(result.inputs, result.outputs);\n const feePerByte = result.fee / bytes;\n const {\n complete,\n incomplete\n } = splitByCompleteness(request.outputs);\n if (incomplete.length > 0) {\n const inputs = result.inputs.map(input => request.utxos[input.i]);\n return {\n type: 'nonfinal',\n fee: result.fee.toString(),\n feePerByte: feePerByte.toString(),\n bytes,\n max,\n totalSpent: totalSpent.toString(),\n inputs\n };\n }\n const transaction = (0, transaction_1.createTransaction)({\n ...request,\n outputs: complete\n }, result);\n return {\n type: 'final',\n fee: result.fee.toString(),\n feePerByte: feePerByte.toString(),\n bytes,\n max,\n totalSpent: totalSpent.toString(),\n ...transaction\n };\n}\n//# sourceMappingURL=result.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.accumulative = void 0;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst coinselectUtils_1 = require(\"../coinselectUtils\");\nconst accumulative = (utxos0, outputs, feeRate, options) => {\n let inAccum = coinselectUtils_1.ZERO;\n const inputs = [];\n const outAccum = (0, coinselectUtils_1.sumOrNaN)(outputs);\n const requiredUtxos = [];\n const utxos = [];\n utxos0.forEach(u => {\n if (u.required) {\n requiredUtxos.push(u);\n const utxoValue = (0, coinselectUtils_1.bignumberOrNaN)(u.value, true);\n inAccum = inAccum.add(utxoValue);\n inputs.push(u);\n } else {\n utxos.push(u);\n }\n });\n if (requiredUtxos.length > 0) {\n const requiredIsEnough = (0, coinselectUtils_1.finalize)(requiredUtxos, outputs, feeRate, options);\n if (requiredIsEnough.inputs) {\n return requiredIsEnough;\n }\n }\n for (let i = 0; i < utxos.length; ++i) {\n const utxo = utxos[i];\n const utxoBytes = (0, coinselectUtils_1.inputBytes)(utxo);\n const utxoFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, utxoBytes);\n const utxoValue = (0, coinselectUtils_1.bignumberOrNaN)(utxo.value);\n if (!utxoValue || utxoValue.lt(new bn_js_1.default(utxoFee))) {\n if (i === utxos.length - 1) {\n const fee = (0, coinselectUtils_1.getFee)([...inputs, utxo], outputs, feeRate, options);\n return {\n fee\n };\n }\n } else {\n inAccum = inAccum.add(utxoValue);\n inputs.push(utxo);\n const fee = (0, coinselectUtils_1.getFee)(inputs, outputs, feeRate, options);\n const outAccumWithFee = outAccum ? outAccum.add(new bn_js_1.default(fee)) : coinselectUtils_1.ZERO;\n if (inAccum.gte(outAccumWithFee)) {\n return (0, coinselectUtils_1.finalize)(inputs, outputs, feeRate, options);\n }\n }\n }\n const fee = (0, coinselectUtils_1.getFee)(inputs, outputs, feeRate, options);\n return {\n fee\n };\n};\nexports.accumulative = accumulative;\n//# sourceMappingURL=accumulative.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.branchAndBound = void 0;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst coinselectUtils_1 = require(\"../coinselectUtils\");\nconst MAX_TRIES = 1000000;\nfunction calculateEffectiveValues(utxos, feeRate) {\n return utxos.map(utxo => {\n const value = (0, coinselectUtils_1.bignumberOrNaN)(utxo.value);\n if (!value) {\n return {\n utxo,\n effectiveValue: coinselectUtils_1.ZERO\n };\n }\n const effectiveFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, (0, coinselectUtils_1.inputBytes)(utxo));\n const effectiveValue = value.sub(new bn_js_1.default(effectiveFee));\n return {\n utxo,\n effectiveValue\n };\n });\n}\nfunction search(effectiveUtxos, target, costRange) {\n if (effectiveUtxos.length === 0) {\n return null;\n }\n let tries = MAX_TRIES;\n const selected = [];\n let selectedAccum = coinselectUtils_1.ZERO;\n let done = false;\n let backtrack = false;\n let remaining = effectiveUtxos.reduce((a, x) => x.effectiveValue.add(a), coinselectUtils_1.ZERO);\n let depth = 0;\n while (!done) {\n if (tries <= 0) {\n return null;\n }\n if (selectedAccum.gt(costRange)) {\n backtrack = true;\n } else if (selectedAccum.gte(target)) {\n done = true;\n } else if (depth >= effectiveUtxos.length) {\n backtrack = true;\n } else if (selectedAccum.add(remaining).lt(target)) {\n if (depth === 0) {\n return null;\n }\n backtrack = true;\n } else {\n remaining = remaining.sub(effectiveUtxos[depth].effectiveValue);\n selected[depth] = true;\n selectedAccum = selectedAccum.add(effectiveUtxos[depth].effectiveValue);\n depth++;\n }\n if (backtrack) {\n backtrack = false;\n depth--;\n while (!selected[depth]) {\n remaining = remaining.add(effectiveUtxos[depth].effectiveValue);\n depth--;\n if (depth < 0) {\n return null;\n }\n }\n selected[depth] = false;\n selectedAccum = selectedAccum.sub(effectiveUtxos[depth].effectiveValue);\n depth++;\n }\n tries--;\n }\n return selected;\n}\nconst branchAndBound = (utxos, outputs, feeRate, options) => {\n if (options.baseFee) return {\n fee: 0\n };\n if (utxos.find(u => u.required)) return {\n fee: 0\n };\n const changeOutputFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, (0, coinselectUtils_1.outputBytes)({\n script: {\n length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[options.txType]\n }\n }));\n const costOfChange = changeOutputFee + (0, coinselectUtils_1.getDustAmount)(feeRate, options);\n const outputsBytes = (0, coinselectUtils_1.transactionBytes)([], outputs);\n const outputsFee = (0, coinselectUtils_1.getFeeForBytes)(feeRate, outputsBytes);\n const outputsTotalValue = (0, coinselectUtils_1.sumOrNaN)(outputs);\n if (!outputsTotalValue) return {\n fee: 0\n };\n const target = outputsTotalValue.add(new bn_js_1.default(outputsFee));\n const targetRange = target.add(new bn_js_1.default(costOfChange));\n const effectiveUtxos = calculateEffectiveValues(utxos, feeRate).filter(({\n effectiveValue\n }) => effectiveValue.gt(coinselectUtils_1.ZERO) && effectiveValue.lte(targetRange)).sort((a, b) => {\n const subtract = b.effectiveValue.sub(a.effectiveValue).toNumber();\n if (subtract !== 0) {\n return subtract;\n }\n return a.utxo.i - b.utxo.i;\n });\n const utxosTotalEffectiveValue = effectiveUtxos.reduce((total, {\n effectiveValue\n }) => total.add(effectiveValue), coinselectUtils_1.ZERO);\n if (utxosTotalEffectiveValue.lt(target)) {\n return {\n fee: 0\n };\n }\n const selected = search(effectiveUtxos, target, targetRange);\n if (selected !== null) {\n const inputs = [];\n for (let i = 0; i < effectiveUtxos.length; i++) {\n if (selected[i]) {\n inputs.push(effectiveUtxos[i].utxo);\n }\n }\n return (0, coinselectUtils_1.finalize)(inputs, outputs, feeRate, options);\n }\n return {\n fee: 0\n };\n};\nexports.branchAndBound = branchAndBound;\n//# sourceMappingURL=branchAndBound.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.split = split;\nconst tslib_1 = require(\"tslib\");\nconst bn_js_1 = tslib_1.__importDefault(require(\"bn.js\"));\nconst coinselectUtils_1 = require(\"../coinselectUtils\");\nfunction split(utxosOrig, outputs, feeRate, options) {\n const coinbase = options.coinbase || coinselectUtils_1.MINIMAL_COINBASE_CONFIRMATIONS;\n const utxos = (0, coinselectUtils_1.filterCoinbase)(utxosOrig, coinbase);\n const fee = (0, coinselectUtils_1.getFee)(utxos, outputs, feeRate, options);\n if (outputs.length === 0) return {\n fee\n };\n const inAccum = (0, coinselectUtils_1.sumOrNaN)(utxos);\n const outAccum = (0, coinselectUtils_1.sumOrNaN)(outputs, true);\n if (!inAccum) return {\n fee\n };\n const remaining = inAccum.sub(outAccum).sub(new bn_js_1.default(fee));\n if (remaining.lt(coinselectUtils_1.ZERO)) return {\n fee\n };\n const unspecified = outputs.reduce((a, x) => a + (!(0, coinselectUtils_1.bignumberOrNaN)(x.value) ? 1 : 0), 0);\n if (remaining.isZero() || unspecified === 0) {\n return (0, coinselectUtils_1.finalize)(utxos, outputs, feeRate, options);\n }\n const splitValue = remaining.div(new bn_js_1.default(unspecified));\n const dustAmount = (0, coinselectUtils_1.getDustAmount)(feeRate, options);\n if (unspecified && splitValue.lt(new bn_js_1.default(dustAmount))) return {\n fee\n };\n const outputsSplit = outputs.map(output => {\n if (output.value) return output;\n return {\n ...output,\n value: splitValue\n };\n });\n return (0, coinselectUtils_1.finalize)(utxos, outputsSplit, feeRate, options);\n}\n//# sourceMappingURL=split.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tryConfirmed = tryConfirmed;\nconst coinselectUtils_1 = require(\"./coinselectUtils\");\nfunction filterUtxos(utxos, minConfOwn, minConfOther) {\n const usable = [];\n const unusable = [];\n for (let i = 0; i < utxos.length; i++) {\n const utxo = utxos[i];\n const isUsed = utxo.own ? utxo.confirmations >= minConfOwn : utxo.confirmations >= minConfOther;\n if (isUsed || utxo.required) {\n usable.push(utxo);\n } else {\n unusable.push(utxo);\n }\n }\n return {\n usable,\n unusable\n };\n}\nfunction tryConfirmed(algorithm, options) {\n const own = options.own || 1;\n const other = options.other || 6;\n const coinbase = options.coinbase || coinselectUtils_1.MINIMAL_COINBASE_CONFIRMATIONS;\n return (utxosO, outputs, feeRate, optionsIn) => {\n const utxos = (0, coinselectUtils_1.filterCoinbase)(utxosO, coinbase);\n if (utxos.length === 0) {\n return {\n fee: 0\n };\n }\n const trials = [];\n let i;\n for (i = own; i > 0; i--) {\n trials.push({\n other,\n own: i\n });\n }\n for (i = other - 1; i > 0; i--) {\n trials.push({\n other: i,\n own: 1\n });\n }\n trials.push({\n other: 1,\n own: 0\n });\n trials.push({\n other: 0,\n own: 0\n });\n let unusable = utxos;\n let usable = [];\n for (i = 0; i < trials.length; i++) {\n const trial = trials[i];\n const filterResult = filterUtxos(unusable, trial.own, trial.other);\n if (filterResult.usable.length > 0) {\n usable = usable.concat(filterResult.usable);\n const unusableH = filterResult.unusable;\n unusable = unusableH;\n const result = algorithm(usable, outputs, feeRate, optionsIn);\n if (result.inputs) {\n return result;\n }\n if (unusable.length === 0) {\n return result;\n }\n }\n }\n throw new Error('Unexpected unreturned result');\n };\n}\n//# sourceMappingURL=tryconfirmed.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.coinselect = coinselect;\nconst coinselectUtils_1 = require(\"./coinselectUtils\");\nconst accumulative_1 = require(\"./inputs/accumulative\");\nconst branchAndBound_1 = require(\"./inputs/branchAndBound\");\nconst split_1 = require(\"./outputs/split\");\nconst tryconfirmed_1 = require(\"./tryconfirmed\");\nfunction coinselect({\n inputs,\n outputs,\n feeRate,\n ...options\n}) {\n if (options.sendMaxOutputIndex >= 0) {\n return (0, split_1.split)(inputs, outputs, feeRate, options);\n }\n const sortedInputs = options.sortingStrategy === 'none' ? inputs : inputs.sort((0, coinselectUtils_1.sortByScore)(feeRate));\n const algorithm = (0, tryconfirmed_1.tryConfirmed)((0, coinselectUtils_1.anyOf)([branchAndBound_1.branchAndBound, accumulative_1.accumulative]), options);\n return algorithm(sortedInputs, outputs, feeRate, options);\n}\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.composeTx = composeTx;\nconst request_1 = require(\"./request\");\nconst result_1 = require(\"./result\");\nconst coinselect_1 = require(\"../coinselect\");\nfunction composeTx(request) {\n const coinselectRequest = (0, request_1.validateAndParseRequest)(request);\n if ('error' in coinselectRequest) {\n return coinselectRequest;\n }\n try {\n const result = (0, coinselect_1.coinselect)(coinselectRequest);\n return (0, result_1.getResult)(request, coinselectRequest, result);\n } catch (error) {\n return (0, result_1.getErrorResult)(error);\n }\n}\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deriveAddresses = exports.getXpubOrDescriptorInfo = void 0;\nconst tslib_1 = require(\"tslib\");\nconst bs58_1 = tslib_1.__importDefault(require(\"bs58\"));\nconst utils_1 = require(\"@trezor/utils\");\nconst bip32_1 = require(\"./bip32\");\nconst networks_1 = require(\"./networks\");\nconst payments_1 = require(\"./payments\");\nconst BIP32_PAYMENT_TYPES = {\n 0x0488b21e: 'p2pkh',\n 0x049d7cb2: 'p2sh',\n 0x04b24746: 'p2wpkh',\n 0x043587cf: 'p2pkh',\n 0x044a5262: 'p2sh',\n 0x045f1cf6: 'p2wpkh',\n 0x019da462: 'p2pkh',\n 0x01b26ef6: 'p2sh'\n};\nconst BIP32_COIN_TYPES = {\n 0x0488b21e: \"0'\",\n 0x049d7cb2: \"0'\",\n 0x04b24746: \"0'\",\n 0x043587cf: \"1'\",\n 0x044a5262: \"1'\",\n 0x045f1cf6: \"1'\",\n 0x019da462: \"2'\",\n 0x01b26ef6: \"2'\"\n};\nconst BIP32_PURPOSES = {\n p2pkh: \"44'\",\n p2sh: \"49'\",\n p2wpkh: \"84'\",\n p2tr: \"86'\"\n};\nconst validateVersion = version => !!BIP32_PAYMENT_TYPES[version];\nconst getVersion = xpub => {\n const version = Buffer.from(bs58_1.default.decode(xpub)).readUInt32BE();\n if (!validateVersion(version)) throw new Error(`Unknown xpub version: ${xpub}`);\n return version;\n};\nconst getPubkeyToPayment = (type, network) => pubkey => {\n switch (type) {\n case 'p2pkh':\n return (0, payments_1.p2pkh)({\n pubkey,\n network\n });\n case 'p2sh':\n return (0, payments_1.p2sh)({\n redeem: (0, payments_1.p2wpkh)({\n pubkey,\n network\n }),\n network\n });\n case 'p2wpkh':\n return (0, payments_1.p2wpkh)({\n pubkey,\n network\n });\n case 'p2tr':\n return (0, payments_1.p2tr)({\n pubkey,\n network\n });\n default:\n throw new Error(`Unknown payment type '${type}'`);\n }\n};\nconst getBip32Node = (xpub, version, network) => (0, bip32_1.fromBase58)(xpub, {\n ...network,\n bip32: {\n ...network.bip32,\n public: version\n }\n});\nconst getXpubInfo = (xpub, network) => {\n const version = getVersion(xpub);\n const paymentType = BIP32_PAYMENT_TYPES[version];\n const coinType = network.wif === 0xb0 ? \"2'\" : BIP32_COIN_TYPES[version];\n const purpose = BIP32_PURPOSES[paymentType];\n const node = getBip32Node(xpub, version, network);\n const account = `${node.index << 1 >>> 1}'`;\n const levels = [purpose, coinType, account];\n return {\n levels,\n paymentType,\n node\n };\n};\nconst getDescriptorInfo = (paymentType, descriptor, network) => {\n const [_match, _script, path, xpub, _checksum] = descriptor.match(/^([a-z]+\\()+\\[([a-z0-9]{8}(?:\\/[0-9]+'?){3,})\\]([xyztuv]pub[a-zA-Z0-9]*)\\/<0;1>\\/\\*\\)+(#[a-z0-9]{8})?$/) || (0, utils_1.throwError)(`Descriptor cannot be parsed: ${descriptor}`);\n const [_fingerprint, ...levels] = path.split('/');\n const version = getVersion(xpub);\n const node = getBip32Node(xpub, version, network);\n return {\n levels,\n paymentType,\n node\n };\n};\nconst getXpubOrDescriptorInfo = (descriptor, network = networks_1.bitcoin) => {\n if (descriptor.startsWith('pkh(')) {\n return getDescriptorInfo('p2pkh', descriptor, network);\n }\n if (descriptor.startsWith('sh(wpkh(')) {\n return getDescriptorInfo('p2sh', descriptor, network);\n }\n if (descriptor.startsWith('wpkh(')) {\n return getDescriptorInfo('p2wpkh', descriptor, network);\n }\n if (descriptor.startsWith('tr(')) {\n return getDescriptorInfo('p2tr', descriptor, network);\n }\n return getXpubInfo(descriptor, network);\n};\nexports.getXpubOrDescriptorInfo = getXpubOrDescriptorInfo;\nconst deriveAddresses = (descriptor, type, from, count, network = networks_1.bitcoin) => {\n const {\n levels,\n node,\n paymentType\n } = (0, exports.getXpubOrDescriptorInfo)(descriptor, network);\n const getAddress = getPubkeyToPayment(paymentType, network);\n const change = type === 'receive' ? 0 : 1;\n const changeNode = node.derive(change);\n return Array.from(Array(count).keys()).map(i => changeNode.derive(from + i).publicKey).map(a => getAddress(a).address || (0, utils_1.throwError)('Cannot convert pubkey to address')).map((address, i) => ({\n address,\n path: `m/${levels.join('/')}/${change}/${from + i}`\n }));\n};\nexports.deriveAddresses = deriveAddresses;\n//# sourceMappingURL=derivation.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.discovery = exports.countUnusedFromEnd = void 0;\nconst derivation_1 = require(\"./derivation\");\nconst DISCOVERY_LOOKOUT = 20;\nconst countUnusedFromEnd = (array, isUnused, lookout) => {\n const boundary = array.length > lookout ? array.length - lookout : 0;\n for (let i = array.length; i > boundary; --i) {\n if (!isUnused(array[i - 1])) {\n return array.length - i;\n }\n }\n return array.length;\n};\nexports.countUnusedFromEnd = countUnusedFromEnd;\nconst discovery = (discover, xpub, type, network, lookout = DISCOVERY_LOOKOUT) => {\n const discoverRecursive = async (from, prev) => {\n const unused = (0, exports.countUnusedFromEnd)(prev, a => a.empty, lookout);\n if (unused >= lookout) return prev;\n const moreCount = lookout - unused;\n const addresses = (0, derivation_1.deriveAddresses)(xpub, type, from, moreCount, network);\n const more = await Promise.all(addresses.map(discover));\n return discoverRecursive(from + moreCount, prev.concat(more));\n };\n return discoverRecursive(0, []);\n};\nexports.discovery = discovery;\n//# sourceMappingURL=discovery.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransactionBase = exports.EMPTY_SCRIPT = void 0;\nexports.varSliceSize = varSliceSize;\nexports.vectorSize = vectorSize;\nexports.isCoinbaseHash = isCoinbaseHash;\nconst tslib_1 = require(\"tslib\");\nconst varuint = tslib_1.__importStar(require(\"varuint-bitcoin\"));\nconst bufferutils_1 = require(\"../bufferutils\");\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst networks_1 = require(\"../networks\");\nconst bscript = tslib_1.__importStar(require(\"../script\"));\nconst types = tslib_1.__importStar(require(\"../types\"));\nfunction varSliceSize(someScript) {\n const {\n length\n } = someScript;\n return varuint.encodingLength(length) + length;\n}\nfunction vectorSize(someVector) {\n return varuint.encodingLength(someVector.length) + someVector.reduce((sum, witness) => sum + varSliceSize(witness), 0);\n}\nfunction isCoinbaseHash(buffer) {\n types.typeforce(types.Hash256bit, buffer);\n for (let i = 0; i < 32; ++i) {\n if (buffer[i] !== 0) return false;\n }\n return true;\n}\nexports.EMPTY_SCRIPT = Buffer.allocUnsafe(0);\nclass TransactionBase {\n version = 1;\n locktime = 0;\n ins = [];\n outs = [];\n specific;\n network;\n type;\n timestamp;\n expiry;\n constructor(options) {\n this.network = options.network || networks_1.bitcoin;\n this.specific = options.txSpecific;\n }\n isCoinbase() {\n return this.ins.length === 1 && isCoinbaseHash(this.ins[0].hash);\n }\n hasWitnesses() {\n return this.ins.some(x => x.witness.length !== 0);\n }\n isMwebPegOutTx() {\n if (!(0, networks_1.isNetworkType)('litecoin', this.network)) {\n return false;\n }\n return this.outs.some(output => {\n const asm = bscript.toASM(output.script);\n return asm.startsWith('OP_8');\n }) && this.ins.some(input => !input.script.length);\n }\n weight() {\n const base = this.byteLength(false, false);\n const total = this.byteLength(true, false);\n return base * 3 + total;\n }\n virtualSize() {\n return Math.ceil(this.weight() / 4);\n }\n byteLength(_ALLOW_WITNESS = true, _ALLOW_MWEB = true) {\n const hasWitnesses = _ALLOW_WITNESS && this.hasWitnesses();\n return (hasWitnesses ? 10 : 8) + (this.timestamp ? 4 : 0) + varuint.encodingLength(this.ins.length) + varuint.encodingLength(this.outs.length) + this.ins.reduce((sum, input) => sum + 40 + varSliceSize(input.script), 0) + this.outs.reduce((sum, output) => sum + 8 + varSliceSize(output.script), 0) + (hasWitnesses ? this.ins.reduce((sum, input) => sum + vectorSize(input.witness), 0) : 0) + (_ALLOW_MWEB && this.isMwebPegOutTx() ? 3 : 0);\n }\n getHash(forWitness = false, forMweb = false) {\n if (forWitness && this.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.hash256(this.toBuffer(undefined, undefined, forWitness, forMweb));\n }\n getId() {\n return (0, bufferutils_1.reverseBuffer)(this.getHash(false)).toString('hex');\n }\n getWitness(index) {\n if (!this.hasWitnesses() || !this.ins[index] || !Array.isArray(this.ins[index].witness) || this.ins[index].witness.length < 1) return;\n const {\n witness\n } = this.ins[index];\n const chunks = witness.reduce((arr, chunk) => arr.concat([(0, bufferutils_1.getChunkSize)(chunk.length), chunk]), [(0, bufferutils_1.getChunkSize)(witness.length)]);\n return Buffer.concat(chunks);\n }\n getExtraData() {}\n getSpecificData() {\n return this.specific;\n }\n toBuffer(_buffer, _initialOffset, _ALLOW_WITNESS = true, _ALLOW_MWEB = true) {\n return exports.EMPTY_SCRIPT;\n }\n toHex() {\n return this.toBuffer().toString('hex');\n }\n}\nexports.TransactionBase = TransactionBase;\n//# sourceMappingURL=base.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromConstructor = fromConstructor;\nexports.fromBuffer = fromBuffer;\nconst bufferutils_1 = require(\"../bufferutils\");\nconst networks_1 = require(\"../networks\");\nconst base_1 = require(\"./base\");\nconst ADVANCED_TRANSACTION_MARKER = 0x00;\nconst ADVANCED_TRANSACTION_FLAG = 0x01;\nconst MWEB_PEGOUT_TX_FLAG = 0x08;\nfunction toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true, _ALLOW_MWEB = true) {\n if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(_ALLOW_WITNESS, _ALLOW_MWEB));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0);\n bufferWriter.writeInt32(tx.version);\n const hasWitnesses = _ALLOW_WITNESS && tx.hasWitnesses();\n const hasMweb = _ALLOW_MWEB && tx.isMwebPegOutTx();\n if (hasWitnesses) {\n bufferWriter.writeUInt8(ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(ADVANCED_TRANSACTION_FLAG);\n } else if (hasMweb) {\n bufferWriter.writeUInt8(ADVANCED_TRANSACTION_MARKER);\n bufferWriter.writeUInt8(MWEB_PEGOUT_TX_FLAG);\n }\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(tx.outs.length);\n tx.outs.forEach(txOut => {\n bufferWriter.writeUInt64(txOut.value);\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (hasWitnesses) {\n tx.ins.forEach(input => {\n bufferWriter.writeVector(input.witness);\n });\n }\n if (hasMweb) {\n bufferWriter.writeUInt8(0);\n }\n bufferWriter.writeUInt32(tx.locktime);\n if (initialOffset !== undefined) return buffer.subarray(initialOffset, bufferWriter.offset);\n return buffer;\n}\nfunction fromConstructor(options) {\n const tx = new base_1.TransactionBase(options);\n tx.toBuffer = toBuffer.bind(null, tx);\n return tx;\n}\nfunction fromBuffer(buffer, options) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = fromConstructor(options);\n tx.version = bufferReader.readInt32();\n const marker = bufferReader.readUInt8();\n const flag = bufferReader.readUInt8();\n let hasWitnesses = false;\n let hasMweb = false;\n if ((0, networks_1.isNetworkType)('litecoin', tx.network)) {\n if (marker === ADVANCED_TRANSACTION_MARKER && flag === MWEB_PEGOUT_TX_FLAG) {\n hasMweb = true;\n }\n }\n if (marker === ADVANCED_TRANSACTION_MARKER && flag === ADVANCED_TRANSACTION_FLAG) {\n hasWitnesses = true;\n } else if (!hasMweb) {\n bufferReader.offset -= 2;\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: []\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64String(),\n script: bufferReader.readVarSlice()\n });\n }\n if (hasWitnesses) {\n for (let i = 0; i < vinLen; ++i) {\n tx.ins[i].witness = bufferReader.readVector();\n }\n if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data');\n }\n if (hasMweb) {\n bufferReader.readUInt8();\n }\n tx.locktime = bufferReader.readUInt32();\n if (options.nostrict) return tx;\n if (bufferReader.offset !== buffer.length) throw new Error('Transaction has unexpected data');\n return tx;\n}\n//# sourceMappingURL=bitcoin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromConstructor = fromConstructor;\nexports.fromBuffer = fromBuffer;\nconst tslib_1 = require(\"tslib\");\nconst varuint = tslib_1.__importStar(require(\"varuint-bitcoin\"));\nconst bufferutils_1 = require(\"../bufferutils\");\nconst base_1 = require(\"./base\");\nconst DASH_NORMAL = 0;\nconst DASH_QUORUM_COMMITMENT = 6;\nfunction byteLength(tx, _ALLOW_WITNESS = true) {\n const hasWitnesses = _ALLOW_WITNESS && tx.hasWitnesses();\n return (hasWitnesses ? 10 : 8) + (tx.timestamp ? 4 : 0) + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + (tx.specific?.extraPayload ? (0, base_1.varSliceSize)(tx.specific.extraPayload) : 0) + (hasWitnesses ? tx.ins.reduce((sum, input) => sum + (0, base_1.vectorSize)(input.witness), 0) : 0);\n}\nfunction toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true) {\n if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(_ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0);\n if (tx.version >= 3 && tx.type !== DASH_NORMAL) {\n bufferWriter.writeUInt16(tx.version);\n bufferWriter.writeUInt16(tx.type);\n } else {\n bufferWriter.writeInt32(tx.version);\n }\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(tx.outs.length);\n tx.outs.forEach(txOut => {\n bufferWriter.writeUInt64(txOut.value);\n bufferWriter.writeVarSlice(txOut.script);\n });\n bufferWriter.writeUInt32(tx.locktime);\n if (tx.specific?.extraPayload) bufferWriter.writeVarSlice(tx.specific.extraPayload);\n if (initialOffset !== undefined) return buffer.subarray(initialOffset, bufferWriter.offset);\n return buffer;\n}\nfunction getExtraData(tx) {\n if (!tx.specific?.extraPayload) return;\n const {\n buffer: extraDataLength\n } = varuint.encode(tx.specific.extraPayload.length);\n return Buffer.concat([extraDataLength, tx.specific.extraPayload]);\n}\nfunction fromConstructor(options) {\n const tx = new base_1.TransactionBase(options);\n tx.specific = tx.specific || {\n type: 'dash'\n };\n tx.byteLength = byteLength.bind(null, tx);\n tx.toBuffer = toBuffer.bind(null, tx);\n tx.getExtraData = getExtraData.bind(null, tx);\n return tx;\n}\nfunction fromBuffer(buffer, options) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = fromConstructor(options);\n tx.version = bufferReader.readInt32();\n tx.type = tx.version >> 16;\n tx.version &= 0xffff;\n if (tx.version === 3 && (tx.type < DASH_NORMAL || tx.type > DASH_QUORUM_COMMITMENT)) {\n throw new Error('Unsupported Dash transaction type');\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: []\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64String(),\n script: bufferReader.readVarSlice()\n });\n }\n tx.locktime = bufferReader.readUInt32();\n if (tx.version >= 3 && tx.type !== DASH_NORMAL) {\n tx.specific.extraPayload = bufferReader.readVarSlice();\n }\n if (options.nostrict) return tx;\n if (bufferReader.offset !== buffer.length) throw new Error('Transaction has unexpected data');\n return tx;\n}\n//# sourceMappingURL=dash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromConstructor = fromConstructor;\nexports.fromBuffer = fromBuffer;\nconst tslib_1 = require(\"tslib\");\nconst varuint = tslib_1.__importStar(require(\"varuint-bitcoin\"));\nconst bufferutils_1 = require(\"../bufferutils\");\nconst bcrypto = tslib_1.__importStar(require(\"../crypto\"));\nconst base_1 = require(\"./base\");\nconst DECRED_TX_VERSION = 1;\nconst DECRED_TX_SERIALIZE_FULL = 0;\nconst DECRED_TX_SERIALIZE_NO_WITNESS = 1;\nconst DECRED_SCRIPT_VERSION = 0;\nfunction hasWitnesses(tx) {\n return tx.type === DECRED_TX_SERIALIZE_FULL;\n}\nfunction byteLength(tx, _ALLOW_WITNESS = true) {\n let byteLength = 4 + varuint.encodingLength(tx.ins.length);\n let nWitness = 0;\n const hasWitnesses = _ALLOW_WITNESS && tx.hasWitnesses();\n byteLength += tx.ins.reduce((sum, input) => {\n sum += 32 + 4 + 1 + 4;\n if (hasWitnesses) {\n nWitness += 1;\n sum += 8 + 4 + 4;\n sum += (0, base_1.varSliceSize)(input.decredWitness.script);\n }\n return sum;\n }, 0);\n if (hasWitnesses) {\n byteLength += varuint.encodingLength(nWitness);\n }\n byteLength += varuint.encodingLength(tx.outs.length);\n byteLength += tx.outs.reduce((sum, output) => {\n sum += 8 + 2;\n sum += (0, base_1.varSliceSize)(output.script);\n return sum;\n }, 0);\n byteLength += 4 + 4;\n return byteLength;\n}\nfunction toBuffer(tx, buffer, initialOffset, _ALLOW_WITNESS = true) {\n if (!buffer) buffer = Buffer.allocUnsafe(byteLength(tx, _ALLOW_WITNESS));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0);\n bufferWriter.writeUInt16(tx.version);\n bufferWriter.writeUInt16(_ALLOW_WITNESS ? tx.type : DECRED_TX_SERIALIZE_NO_WITNESS);\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeUInt8(txIn.decredTree);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(tx.outs.length);\n tx.outs.forEach(txOut => {\n bufferWriter.writeUInt64(txOut.value);\n bufferWriter.writeUInt16(txOut.decredVersion);\n bufferWriter.writeVarSlice(txOut.script);\n });\n bufferWriter.writeUInt32(tx.locktime);\n bufferWriter.writeUInt32(tx.expiry);\n if (_ALLOW_WITNESS && tx.hasWitnesses()) {\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(input => {\n bufferWriter.writeUInt64(input.decredWitness.value);\n bufferWriter.writeUInt32(input.decredWitness.height);\n bufferWriter.writeUInt32(input.decredWitness.blockIndex);\n bufferWriter.writeVarSlice(input.decredWitness.script);\n });\n }\n if (initialOffset !== undefined) return buffer.subarray(initialOffset, bufferWriter.offset);\n return buffer;\n}\nfunction getHash(tx, forWitness = false) {\n if (forWitness && tx.isCoinbase()) return Buffer.alloc(32, 0);\n return bcrypto.blake256(toBuffer(tx, undefined, undefined, forWitness));\n}\nfunction weight(tx) {\n return tx.byteLength(true);\n}\nfunction fromConstructor(options) {\n const tx = new base_1.TransactionBase(options);\n tx.byteLength = byteLength.bind(null, tx);\n tx.toBuffer = toBuffer.bind(null, tx);\n tx.hasWitnesses = hasWitnesses.bind(null, tx);\n tx.getHash = getHash.bind(null, tx);\n tx.weight = weight.bind(null, tx);\n return tx;\n}\nfunction fromBuffer(buffer, options) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = fromConstructor(options);\n tx.version = bufferReader.readInt32();\n tx.type = tx.version >> 16;\n tx.version &= 0xffff;\n if (tx.version !== DECRED_TX_VERSION) {\n throw new Error('Unsupported Decred transaction version');\n }\n if (tx.type !== DECRED_TX_SERIALIZE_FULL && tx.type !== DECRED_TX_SERIALIZE_NO_WITNESS) {\n throw new Error('Unsupported Decred transaction type');\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n decredTree: bufferReader.readUInt8(),\n sequence: bufferReader.readUInt32(),\n script: base_1.EMPTY_SCRIPT,\n witness: []\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; i++) {\n const value = bufferReader.readUInt64String();\n const version = bufferReader.readUInt16();\n if (version !== DECRED_SCRIPT_VERSION) throw new Error('Unsupported Decred script version');\n tx.outs.push({\n value,\n decredVersion: version,\n script: bufferReader.readVarSlice()\n });\n }\n tx.locktime = bufferReader.readUInt32();\n tx.expiry = bufferReader.readUInt32();\n if (tx.type === DECRED_TX_SERIALIZE_FULL) {\n const count = bufferReader.readVarInt();\n if (count !== vinLen) throw new Error('Non equal number of ins and witnesses');\n tx.ins.forEach(vin => {\n vin.decredWitness = {\n value: bufferReader.readUInt64String(),\n height: bufferReader.readUInt32(),\n blockIndex: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice()\n };\n });\n }\n if (options.nostrict) return tx;\n if (bufferReader.offset !== buffer.length) throw new Error('Transaction has unexpected data');\n return tx;\n}\n//# sourceMappingURL=decred.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromConstructor = fromConstructor;\nexports.fromBuffer = fromBuffer;\nconst bufferutils_1 = require(\"../bufferutils\");\nconst base_1 = require(\"./base\");\nfunction toBuffer(tx, buffer, initialOffset) {\n if (!buffer) buffer = Buffer.allocUnsafe(tx.byteLength(false));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0);\n bufferWriter.writeInt32(tx.version);\n bufferWriter.writeUInt32(tx.timestamp);\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(tx.outs.length);\n tx.outs.forEach(txOut => {\n bufferWriter.writeUInt64(txOut.value);\n bufferWriter.writeVarSlice(txOut.script);\n });\n bufferWriter.writeUInt32(tx.locktime);\n if (initialOffset !== undefined) return buffer.subarray(initialOffset, bufferWriter.offset);\n return buffer;\n}\nfunction fromConstructor(options) {\n const tx = new base_1.TransactionBase(options);\n tx.toBuffer = toBuffer.bind(null, tx);\n return tx;\n}\nfunction fromBuffer(buffer, options) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = fromConstructor(options);\n tx.version = bufferReader.readInt32();\n tx.timestamp = bufferReader.readUInt32();\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: []\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64String(),\n script: bufferReader.readVarSlice()\n });\n }\n tx.locktime = bufferReader.readUInt32();\n if (options.nostrict) return tx;\n if (bufferReader.offset !== buffer.length) throw new Error('Transaction has unexpected data');\n return tx;\n}\n//# sourceMappingURL=peercoin.js.map", "const ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n let ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (typeof input === 'string') {\n const encoder = new TextEncoder()\n ret = encoder.encode(input)\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map\n .call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n })\n .join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n let msg = '\\n' + label + ' = '\n for (let i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n let startMs = new Date().getTime()\n\n const input = new Uint8Array(N)\n for (let i = 0; i < N; i++) {\n input[i] = i % 256\n }\n const genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (let i = 0; i < M; i++) {\n const hashHex = hashFn(input)\n const hashMs = new Date().getTime()\n const ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(\n Math.round((N / (1 << 20) / (ms / 1000)) * 100) / 100 + ' MB PER SECOND'\n )\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n", "// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n const o0 = v[a] + v[b]\n let o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n let o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n let o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24)\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n const x0 = m[ix]\n const x1 = m[ix + 1]\n const y0 = m[iy]\n const y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = v[d] ^ v[a]\n let xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nconst BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372,\n 0x5f1d36f1, 0xa54ff53a, 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c,\n 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\n])\n\nconst SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13,\n 6, 1, 12, 0, 2, 11, 7, 5, 3, 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1,\n 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5, 7, 2, 4,\n 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5,\n 15, 14, 1, 9, 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7,\n 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11, 3, 0, 8, 12, 2,\n 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0,\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6,\n 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nconst SIGMA82 = new Uint8Array(\n SIGMA8.map(function (x) {\n return x * 2\n })\n)\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nconst v = new Uint32Array(32)\nconst m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n let i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// reusable parameterBlock\nconst parameterBlock = new Uint8Array([\n 0,\n 0,\n 0,\n 0, // 0: outlen, keylen, fanout, depth\n 0,\n 0,\n 0,\n 0, // 4: leaf length, sequential mode\n 0,\n 0,\n 0,\n 0, // 8: node offset\n 0,\n 0,\n 0,\n 0, // 12: node offset\n 0,\n 0,\n 0,\n 0, // 16: node depth, inner length, rfu\n 0,\n 0,\n 0,\n 0, // 20: rfu\n 0,\n 0,\n 0,\n 0, // 24: rfu\n 0,\n 0,\n 0,\n 0, // 28: rfu\n 0,\n 0,\n 0,\n 0, // 32: salt\n 0,\n 0,\n 0,\n 0, // 36: salt\n 0,\n 0,\n 0,\n 0, // 40: salt\n 0,\n 0,\n 0,\n 0, // 44: salt\n 0,\n 0,\n 0,\n 0, // 48: personal\n 0,\n 0,\n 0,\n 0, // 52: personal\n 0,\n 0,\n 0,\n 0, // 56: personal\n 0,\n 0,\n 0,\n 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\n// Takes an optinal Uint8Array salt\n// Takes an optinal Uint8Array personal\nfunction blake2bInit (outlen, key, salt, personal) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n if (salt && salt.length !== 16) {\n throw new Error('Illegal salt, expected Uint8Array with length is 16')\n }\n if (personal && personal.length !== 16) {\n throw new Error('Illegal personal, expected Uint8Array with length is 16')\n }\n\n // state, 'param block'\n const ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize parameterBlock before usage\n parameterBlock.fill(0)\n parameterBlock[0] = outlen\n if (key) parameterBlock[1] = key.length\n parameterBlock[2] = 1 // fanout\n parameterBlock[3] = 1 // depth\n if (salt) parameterBlock.set(salt, 32)\n if (personal) parameterBlock.set(personal, 48)\n\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 128) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2b (input, key, outlen, salt, personal) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n if (salt) {\n salt = util.normalizeInput(salt)\n }\n if (personal) {\n personal = util.normalizeInput(personal)\n }\n\n // do the math\n const ctx = blake2bInit(outlen, key, salt, personal)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2bHex (input, key, outlen, salt, personal) {\n const output = blake2b(input, key, outlen, salt, personal)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n", "// BLAKE2s hash function in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// Little-endian byte access.\n// Expects a Uint8Array and an index\n// Returns the little-endian uint32 at v[i..i+3]\nfunction B2S_GET32 (v, i) {\n return v[i] ^ (v[i + 1] << 8) ^ (v[i + 2] << 16) ^ (v[i + 3] << 24)\n}\n\n// Mixing function G.\nfunction B2S_G (a, b, c, d, x, y) {\n v[a] = v[a] + v[b] + x\n v[d] = ROTR32(v[d] ^ v[a], 16)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 12)\n v[a] = v[a] + v[b] + y\n v[d] = ROTR32(v[d] ^ v[a], 8)\n v[c] = v[c] + v[d]\n v[b] = ROTR32(v[b] ^ v[c], 7)\n}\n\n// 32-bit right rotation\n// x should be a uint32\n// y must be between 1 and 31, inclusive\nfunction ROTR32 (x, y) {\n return (x >>> y) ^ (x << (32 - y))\n}\n\n// Initialization Vector.\nconst BLAKE2S_IV = new Uint32Array([\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n])\n\nconst SIGMA = new Uint8Array([\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 14,\n 10,\n 4,\n 8,\n 9,\n 15,\n 13,\n 6,\n 1,\n 12,\n 0,\n 2,\n 11,\n 7,\n 5,\n 3,\n 11,\n 8,\n 12,\n 0,\n 5,\n 2,\n 15,\n 13,\n 10,\n 14,\n 3,\n 6,\n 7,\n 1,\n 9,\n 4,\n 7,\n 9,\n 3,\n 1,\n 13,\n 12,\n 11,\n 14,\n 2,\n 6,\n 5,\n 10,\n 4,\n 0,\n 15,\n 8,\n 9,\n 0,\n 5,\n 7,\n 2,\n 4,\n 10,\n 15,\n 14,\n 1,\n 11,\n 12,\n 6,\n 8,\n 3,\n 13,\n 2,\n 12,\n 6,\n 10,\n 0,\n 11,\n 8,\n 3,\n 4,\n 13,\n 7,\n 5,\n 15,\n 14,\n 1,\n 9,\n 12,\n 5,\n 1,\n 15,\n 14,\n 13,\n 4,\n 10,\n 0,\n 7,\n 6,\n 3,\n 9,\n 2,\n 8,\n 11,\n 13,\n 11,\n 7,\n 14,\n 12,\n 1,\n 3,\n 9,\n 5,\n 0,\n 15,\n 4,\n 8,\n 6,\n 2,\n 10,\n 6,\n 15,\n 14,\n 9,\n 11,\n 3,\n 0,\n 8,\n 12,\n 2,\n 13,\n 7,\n 1,\n 4,\n 10,\n 5,\n 10,\n 2,\n 8,\n 4,\n 7,\n 6,\n 1,\n 5,\n 15,\n 11,\n 9,\n 14,\n 3,\n 12,\n 13,\n 0\n])\n\n// Compression function. \"last\" flag indicates last block\nconst v = new Uint32Array(16)\nconst m = new Uint32Array(16)\nfunction blake2sCompress (ctx, last) {\n let i = 0\n for (i = 0; i < 8; i++) {\n // init work variables\n v[i] = ctx.h[i]\n v[i + 8] = BLAKE2S_IV[i]\n }\n\n v[12] ^= ctx.t // low 32 bits of offset\n v[13] ^= ctx.t / 0x100000000 // high 32 bits\n if (last) {\n // last block flag set ?\n v[14] = ~v[14]\n }\n\n for (i = 0; i < 16; i++) {\n // get little-endian words\n m[i] = B2S_GET32(ctx.b, 4 * i)\n }\n\n // ten rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 32)\n for (i = 0; i < 10; i++) {\n // util.debugPrint(' (i=' + i + ') v[16]', v, 32)\n B2S_G(0, 4, 8, 12, m[SIGMA[i * 16 + 0]], m[SIGMA[i * 16 + 1]])\n B2S_G(1, 5, 9, 13, m[SIGMA[i * 16 + 2]], m[SIGMA[i * 16 + 3]])\n B2S_G(2, 6, 10, 14, m[SIGMA[i * 16 + 4]], m[SIGMA[i * 16 + 5]])\n B2S_G(3, 7, 11, 15, m[SIGMA[i * 16 + 6]], m[SIGMA[i * 16 + 7]])\n B2S_G(0, 5, 10, 15, m[SIGMA[i * 16 + 8]], m[SIGMA[i * 16 + 9]])\n B2S_G(1, 6, 11, 12, m[SIGMA[i * 16 + 10]], m[SIGMA[i * 16 + 11]])\n B2S_G(2, 7, 8, 13, m[SIGMA[i * 16 + 12]], m[SIGMA[i * 16 + 13]])\n B2S_G(3, 4, 9, 14, m[SIGMA[i * 16 + 14]], m[SIGMA[i * 16 + 15]])\n }\n // util.debugPrint(' (i=10) v[16]', v, 32)\n\n for (i = 0; i < 8; i++) {\n ctx.h[i] ^= v[i] ^ v[i + 8]\n }\n // util.debugPrint('h[8]', ctx.h, 32)\n}\n\n// Creates a BLAKE2s hashing context\n// Requires an output length between 1 and 32 bytes\n// Takes an optional Uint8Array key\nfunction blake2sInit (outlen, key) {\n if (!(outlen > 0 && outlen <= 32)) {\n throw new Error('Incorrect output length, should be in [1, 32]')\n }\n const keylen = key ? key.length : 0\n if (key && !(keylen > 0 && keylen <= 32)) {\n throw new Error('Incorrect key length, should be in [1, 32]')\n }\n\n const ctx = {\n h: new Uint32Array(BLAKE2S_IV), // hash state\n b: new Uint8Array(64), // input block\n c: 0, // pointer within block\n t: 0, // input count\n outlen: outlen // output length in bytes\n }\n ctx.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen\n\n if (keylen > 0) {\n blake2sUpdate(ctx, key)\n ctx.c = 64 // at the end\n }\n\n return ctx\n}\n\n// Updates a BLAKE2s streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2sUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 64) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2sCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2s streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2sFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n while (ctx.c < 64) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2sCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = (ctx.h[i >> 2] >> (8 * (i & 3))) & 0xff\n }\n return out\n}\n\n// Computes the BLAKE2S hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2s (input, key, outlen) {\n // preprocess inputs\n outlen = outlen || 32\n input = util.normalizeInput(input)\n\n // do the math\n const ctx = blake2sInit(outlen, key)\n blake2sUpdate(ctx, input)\n return blake2sFinal(ctx)\n}\n\n// Computes the BLAKE2S hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 32 bytes\n// - outlen - optional output length in bytes, default 64\nfunction blake2sHex (input, key, outlen) {\n const output = blake2s(input, key, outlen)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2s: blake2s,\n blake2sHex: blake2sHex,\n blake2sInit: blake2sInit,\n blake2sUpdate: blake2sUpdate,\n blake2sFinal: blake2sFinal\n}\n", "const b2b = require('./blake2b')\nconst b2s = require('./blake2s')\n\nmodule.exports = {\n blake2b: b2b.blake2b,\n blake2bHex: b2b.blake2bHex,\n blake2bInit: b2b.blake2bInit,\n blake2bUpdate: b2b.blake2bUpdate,\n blake2bFinal: b2b.blake2bFinal,\n blake2s: b2s.blake2s,\n blake2sHex: b2s.blake2sHex,\n blake2sInit: b2s.blake2sInit,\n blake2sUpdate: b2s.blake2sUpdate,\n blake2sFinal: b2s.blake2sFinal\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fromConstructor = fromConstructor;\nexports.fromBuffer = fromBuffer;\nconst tslib_1 = require(\"tslib\");\nconst blakejs_1 = require(\"blakejs\");\nconst varuint = tslib_1.__importStar(require(\"varuint-bitcoin\"));\nconst bufferutils_1 = require(\"../bufferutils\");\nconst base_1 = require(\"./base\");\nconst crypto_1 = require(\"../crypto\");\nconst ZCASH_JOINSPLITS_SUPPORT_VERSION = 2;\nconst ZCASH_OVERWINTER_VERSION = 3;\nconst ZCASH_SAPLING_VERSION = 4;\nconst ZCASH_NU5_VERSION = 5;\nconst ZCASH_NUM_JOINSPLITS_INPUTS = 2;\nconst ZCASH_NUM_JOINSPLITS_OUTPUTS = 2;\nconst ZCASH_NOTECIPHERTEXT_SIZE = 1 + 8 + 32 + 32 + 512 + 16;\nconst ZCASH_G1_PREFIX_MASK = 0x02;\nconst ZCASH_G2_PREFIX_MASK = 0x0a;\nfunction byteLength(tx) {\n const overwinterSize = tx.version >= ZCASH_OVERWINTER_VERSION ? 4 + 4 : 0;\n const txSpecific = tx.specific;\n const getJoinSplitsSize = () => {\n if (tx.version < ZCASH_JOINSPLITS_SUPPORT_VERSION || tx.version >= ZCASH_NU5_VERSION) return 0;\n const joinSplitsLen = txSpecific.joinsplits.length;\n if (joinSplitsLen < 1) return (0, bufferutils_1.varIntSize)(joinSplitsLen);\n return (0, bufferutils_1.varIntSize)(joinSplitsLen) + (tx.version >= ZCASH_SAPLING_VERSION ? 1698 * joinSplitsLen : 1802 * joinSplitsLen) + 32 + 64;\n };\n const saplingSize = tx.version === ZCASH_SAPLING_VERSION ? 8 + varuint.encodingLength(txSpecific.vShieldedSpend.length) + 384 * txSpecific.vShieldedSpend.length + varuint.encodingLength(txSpecific.vShieldedOutput.length) + 948 * txSpecific.vShieldedOutput.length + (txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0 ? 64 : 0) : 0;\n const NU5size = tx.version >= ZCASH_NU5_VERSION ? 4 + 1 + 1 + 1 : 0;\n return 4 + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + 4 + overwinterSize + getJoinSplitsSize() + saplingSize + NU5size;\n}\nfunction toBuffer(tx, buffer, initialOffset) {\n if (!buffer) buffer = Buffer.allocUnsafe(byteLength(tx));\n const bufferWriter = new bufferutils_1.BufferWriter(buffer, initialOffset || 0);\n const txSpecific = tx.specific;\n if (tx.version >= ZCASH_OVERWINTER_VERSION) {\n const mask = txSpecific.overwintered ? 1 : 0;\n bufferWriter.writeInt32(tx.version | mask << 31);\n bufferWriter.writeUInt32(txSpecific.versionGroupId);\n } else {\n bufferWriter.writeInt32(tx.version);\n }\n if (tx.version >= ZCASH_NU5_VERSION) {\n bufferWriter.writeUInt32(txSpecific.consensusBranchId);\n bufferWriter.writeUInt32(tx.locktime);\n bufferWriter.writeUInt32(tx.expiry);\n }\n bufferWriter.writeVarInt(tx.ins.length);\n tx.ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n bufferWriter.writeVarSlice(txIn.script);\n bufferWriter.writeUInt32(txIn.sequence);\n });\n bufferWriter.writeVarInt(tx.outs.length);\n tx.outs.forEach(txOut => {\n bufferWriter.writeUInt64(txOut.value);\n bufferWriter.writeVarSlice(txOut.script);\n });\n if (tx.version < ZCASH_NU5_VERSION) {\n bufferWriter.writeUInt32(tx.locktime);\n if (tx.version >= ZCASH_OVERWINTER_VERSION) {\n bufferWriter.writeUInt32(tx.expiry);\n }\n }\n if (tx.version === ZCASH_SAPLING_VERSION) {\n bufferWriter.writeInt64(txSpecific.valueBalance);\n bufferWriter.writeVarInt(txSpecific.vShieldedSpend.length);\n txSpecific.vShieldedSpend.forEach(shieldedSpend => {\n bufferWriter.writeSlice(shieldedSpend.cv);\n bufferWriter.writeSlice(shieldedSpend.anchor);\n bufferWriter.writeSlice(shieldedSpend.nullifier);\n bufferWriter.writeSlice(shieldedSpend.rk);\n bufferWriter.writeSlice(shieldedSpend.zkproof.sA);\n bufferWriter.writeSlice(shieldedSpend.zkproof.sB);\n bufferWriter.writeSlice(shieldedSpend.zkproof.sC);\n bufferWriter.writeSlice(shieldedSpend.spendAuthSig);\n });\n bufferWriter.writeVarInt(txSpecific.vShieldedOutput.length);\n txSpecific.vShieldedOutput.forEach(shieldedOutput => {\n bufferWriter.writeSlice(shieldedOutput.cv);\n bufferWriter.writeSlice(shieldedOutput.cmu);\n bufferWriter.writeSlice(shieldedOutput.ephemeralKey);\n bufferWriter.writeSlice(shieldedOutput.encCiphertext);\n bufferWriter.writeSlice(shieldedOutput.outCiphertext);\n bufferWriter.writeSlice(shieldedOutput.zkproof.sA);\n bufferWriter.writeSlice(shieldedOutput.zkproof.sB);\n bufferWriter.writeSlice(shieldedOutput.zkproof.sC);\n });\n }\n function writeCompressedG1(i) {\n bufferWriter.writeUInt8(ZCASH_G1_PREFIX_MASK | i.yLsb);\n bufferWriter.writeSlice(i.x);\n }\n function writeCompressedG2(i) {\n bufferWriter.writeUInt8(ZCASH_G2_PREFIX_MASK | i.yLsb);\n bufferWriter.writeSlice(i.x);\n }\n if (tx.version >= ZCASH_JOINSPLITS_SUPPORT_VERSION && tx.version < ZCASH_NU5_VERSION) {\n bufferWriter.writeVarInt(txSpecific.joinsplits.length);\n txSpecific.joinsplits.forEach(joinsplit => {\n bufferWriter.writeUInt64(joinsplit.vpubOld);\n bufferWriter.writeUInt64(joinsplit.vpubNew);\n bufferWriter.writeSlice(joinsplit.anchor);\n joinsplit.nullifiers.forEach(nullifier => {\n bufferWriter.writeSlice(nullifier);\n });\n joinsplit.commitments.forEach(nullifier => {\n bufferWriter.writeSlice(nullifier);\n });\n bufferWriter.writeSlice(joinsplit.ephemeralKey);\n bufferWriter.writeSlice(joinsplit.randomSeed);\n joinsplit.macs.forEach(nullifier => {\n bufferWriter.writeSlice(nullifier);\n });\n if (joinsplit.zkproof.type === 'sapling') {\n bufferWriter.writeSlice(joinsplit.zkproof.sA);\n bufferWriter.writeSlice(joinsplit.zkproof.sB);\n bufferWriter.writeSlice(joinsplit.zkproof.sC);\n } else {\n writeCompressedG1(joinsplit.zkproof.gA);\n writeCompressedG1(joinsplit.zkproof.gAPrime);\n writeCompressedG2(joinsplit.zkproof.gB);\n writeCompressedG1(joinsplit.zkproof.gBPrime);\n writeCompressedG1(joinsplit.zkproof.gC);\n writeCompressedG1(joinsplit.zkproof.gCPrime);\n writeCompressedG1(joinsplit.zkproof.gK);\n writeCompressedG1(joinsplit.zkproof.gH);\n }\n joinsplit.ciphertexts.forEach(ciphertext => {\n bufferWriter.writeSlice(ciphertext);\n });\n });\n if (txSpecific.joinsplits.length > 0) {\n bufferWriter.writeSlice(txSpecific.joinsplitPubkey);\n bufferWriter.writeSlice(txSpecific.joinsplitSig);\n }\n }\n if (tx.version >= ZCASH_SAPLING_VERSION && txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0) {\n bufferWriter.writeSlice(txSpecific.bindingSig);\n }\n if (tx.version === ZCASH_NU5_VERSION) {\n bufferWriter.writeVarInt(0);\n bufferWriter.writeVarInt(0);\n bufferWriter.writeUInt8(0x00);\n }\n if (initialOffset !== undefined) return buffer.subarray(initialOffset, bufferWriter.offset);\n return buffer;\n}\nfunction getExtraData(tx) {\n if (tx.version < ZCASH_JOINSPLITS_SUPPORT_VERSION || tx.version >= ZCASH_NU5_VERSION) return;\n const offset = 4 + (tx.version >= ZCASH_OVERWINTER_VERSION ? 8 : 0) + varuint.encodingLength(tx.ins.length) + varuint.encodingLength(tx.outs.length) + tx.ins.reduce((sum, input) => sum + 40 + (0, base_1.varSliceSize)(input.script), 0) + tx.outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0) + 4;\n return tx.toBuffer().subarray(offset);\n}\nfunction getBlake2bDigestHash(buffer, personalization) {\n const personalizedBuffer = typeof personalization === 'string' ? Buffer.from(personalization) : personalization;\n const hash = (0, blakejs_1.blake2b)(buffer, undefined, 32, undefined, personalizedBuffer);\n return Buffer.from(hash);\n}\nfunction getHeaderDigest(tx) {\n const mask = tx.specific.overwintered ? 1 : 0;\n const writer = new bufferutils_1.BufferWriter(Buffer.alloc(4 * 5));\n writer.writeInt32(tx.version | mask << 31);\n writer.writeUInt32(tx.specific.versionGroupId);\n writer.writeUInt32(tx.specific.consensusBranchId);\n writer.writeUInt32(tx.locktime);\n writer.writeUInt32(tx.expiry);\n return getBlake2bDigestHash(writer.buffer, 'ZTxIdHeadersHash');\n}\nfunction getPrevoutsDigest(ins) {\n const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(36 * ins.length));\n ins.forEach(txIn => {\n bufferWriter.writeSlice(txIn.hash);\n bufferWriter.writeUInt32(txIn.index);\n });\n return getBlake2bDigestHash(bufferWriter.buffer, 'ZTxIdPrevoutHash');\n}\nfunction getSequenceDigest(ins) {\n const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(4 * ins.length));\n ins.forEach(txIn => {\n bufferWriter.writeUInt32(txIn.sequence);\n });\n return getBlake2bDigestHash(bufferWriter.buffer, 'ZTxIdSequencHash');\n}\nfunction getOutputsDigest(outs) {\n const txOutsSize = outs.reduce((sum, output) => sum + 8 + (0, base_1.varSliceSize)(output.script), 0);\n const bufferWriter = new bufferutils_1.BufferWriter(Buffer.allocUnsafe(txOutsSize));\n outs.forEach(out => {\n bufferWriter.writeUInt64(out.value);\n bufferWriter.writeVarSlice(out.script);\n });\n return getBlake2bDigestHash(bufferWriter.buffer, 'ZTxIdOutputsHash');\n}\nfunction getTransparentDigest(tx) {\n let buffer;\n if (tx.ins.length || tx.outs.length) {\n const writer = new bufferutils_1.BufferWriter(Buffer.alloc(32 * 3));\n writer.writeSlice(getPrevoutsDigest(tx.ins));\n writer.writeSlice(getSequenceDigest(tx.ins));\n writer.writeSlice(getOutputsDigest(tx.outs));\n buffer = writer.buffer;\n } else {\n buffer = Buffer.of();\n }\n return getBlake2bDigestHash(buffer, 'ZTxIdTranspaHash');\n}\nfunction getHash(tx, _forWitness = false) {\n if (tx.version < ZCASH_NU5_VERSION) {\n return (0, crypto_1.hash256)(toBuffer(tx));\n }\n const writer = new bufferutils_1.BufferWriter(Buffer.alloc(32 * 4));\n writer.writeSlice(getHeaderDigest(tx));\n writer.writeSlice(getTransparentDigest(tx));\n writer.writeSlice(getBlake2bDigestHash(Buffer.of(), 'ZTxIdSaplingHash'));\n writer.writeSlice(getBlake2bDigestHash(Buffer.of(), 'ZTxIdOrchardHash'));\n const personalizationTag = 'ZcashTxHash_';\n const personalization = new bufferutils_1.BufferWriter(Buffer.alloc(personalizationTag.length + 4));\n personalization.writeSlice(Buffer.from(personalizationTag));\n personalization.writeUInt32(tx.specific.consensusBranchId);\n return getBlake2bDigestHash(writer.buffer, personalization.buffer);\n}\nfunction fromConstructor(options) {\n const tx = new base_1.TransactionBase(options);\n tx.specific = tx.specific || {\n type: 'zcash',\n joinsplits: [],\n joinsplitPubkey: base_1.EMPTY_SCRIPT,\n joinsplitSig: base_1.EMPTY_SCRIPT,\n overwintered: 0,\n versionGroupId: 0,\n valueBalance: 0,\n vShieldedSpend: [],\n vShieldedOutput: [],\n bindingSig: base_1.EMPTY_SCRIPT,\n consensusBranchId: 0\n };\n tx.byteLength = byteLength.bind(null, tx);\n tx.toBuffer = toBuffer.bind(null, tx);\n tx.getExtraData = getExtraData.bind(null, tx);\n tx.getHash = getHash.bind(null, tx);\n return tx;\n}\nfunction fromBuffer(buffer, options) {\n const bufferReader = new bufferutils_1.BufferReader(buffer);\n const tx = fromConstructor(options);\n const txSpecific = tx.specific;\n tx.version = bufferReader.readInt32();\n txSpecific.overwintered = tx.version >>> 31;\n tx.version &= 0x07fffffff;\n if (tx.version >= ZCASH_OVERWINTER_VERSION) {\n txSpecific.versionGroupId = bufferReader.readUInt32();\n }\n if (tx.version >= ZCASH_NU5_VERSION) {\n txSpecific.consensusBranchId = bufferReader.readUInt32();\n tx.locktime = bufferReader.readUInt32();\n tx.expiry = bufferReader.readUInt32();\n }\n const vinLen = bufferReader.readVarInt();\n for (let i = 0; i < vinLen; ++i) {\n tx.ins.push({\n hash: bufferReader.readSlice(32),\n index: bufferReader.readUInt32(),\n script: bufferReader.readVarSlice(),\n sequence: bufferReader.readUInt32(),\n witness: []\n });\n }\n const voutLen = bufferReader.readVarInt();\n for (let i = 0; i < voutLen; ++i) {\n tx.outs.push({\n value: bufferReader.readUInt64String(),\n script: bufferReader.readVarSlice()\n });\n }\n if (tx.version < ZCASH_NU5_VERSION) {\n tx.locktime = bufferReader.readUInt32();\n tx.expiry = tx.version >= ZCASH_OVERWINTER_VERSION ? bufferReader.readUInt32() : 0;\n }\n function readCompressedG1() {\n const yLsb = bufferReader.readUInt8() & 1;\n const x = bufferReader.readSlice(32);\n return {\n x,\n yLsb\n };\n }\n function readCompressedG2() {\n const yLsb = bufferReader.readUInt8() & 1;\n const x = bufferReader.readSlice(64);\n return {\n x,\n yLsb\n };\n }\n function readSaplingZKProof() {\n return {\n type: 'sapling',\n sA: bufferReader.readSlice(48),\n sB: bufferReader.readSlice(96),\n sC: bufferReader.readSlice(48)\n };\n }\n function readZKProof() {\n if (tx.version >= ZCASH_SAPLING_VERSION) {\n return readSaplingZKProof();\n }\n return {\n type: 'joinsplit',\n gA: readCompressedG1(),\n gAPrime: readCompressedG1(),\n gB: readCompressedG2(),\n gBPrime: readCompressedG1(),\n gC: readCompressedG1(),\n gCPrime: readCompressedG1(),\n gK: readCompressedG1(),\n gH: readCompressedG1()\n };\n }\n if (tx.version === ZCASH_SAPLING_VERSION) {\n txSpecific.valueBalance = bufferReader.readInt64();\n const nShieldedSpend = bufferReader.readVarInt();\n for (let i = 0; i < nShieldedSpend; ++i) {\n txSpecific.vShieldedSpend.push({\n cv: bufferReader.readSlice(32),\n anchor: bufferReader.readSlice(32),\n nullifier: bufferReader.readSlice(32),\n rk: bufferReader.readSlice(32),\n zkproof: readSaplingZKProof(),\n spendAuthSig: bufferReader.readSlice(64)\n });\n }\n const nShieldedOutput = bufferReader.readVarInt();\n for (let i = 0; i < nShieldedOutput; ++i) {\n txSpecific.vShieldedOutput.push({\n cv: bufferReader.readSlice(32),\n cmu: bufferReader.readSlice(32),\n ephemeralKey: bufferReader.readSlice(32),\n encCiphertext: bufferReader.readSlice(580),\n outCiphertext: bufferReader.readSlice(80),\n zkproof: readSaplingZKProof()\n });\n }\n }\n if (tx.version >= ZCASH_JOINSPLITS_SUPPORT_VERSION && tx.version < ZCASH_NU5_VERSION) {\n const joinSplitsLen = bufferReader.readVarInt();\n for (let i = 0; i < joinSplitsLen; ++i) {\n let j;\n const vpubOld = bufferReader.readUInt64();\n const vpubNew = bufferReader.readUInt64();\n const anchor = bufferReader.readSlice(32);\n const nullifiers = [];\n for (j = 0; j < ZCASH_NUM_JOINSPLITS_INPUTS; j++) {\n nullifiers.push(bufferReader.readSlice(32));\n }\n const commitments = [];\n for (j = 0; j < ZCASH_NUM_JOINSPLITS_OUTPUTS; j++) {\n commitments.push(bufferReader.readSlice(32));\n }\n const ephemeralKey = bufferReader.readSlice(32);\n const randomSeed = bufferReader.readSlice(32);\n const macs = [];\n for (j = 0; j < ZCASH_NUM_JOINSPLITS_INPUTS; j++) {\n macs.push(bufferReader.readSlice(32));\n }\n const zkproof = readZKProof();\n const ciphertexts = [];\n for (j = 0; j < ZCASH_NUM_JOINSPLITS_OUTPUTS; j++) {\n ciphertexts.push(bufferReader.readSlice(ZCASH_NOTECIPHERTEXT_SIZE));\n }\n txSpecific.joinsplits.push({\n vpubOld,\n vpubNew,\n anchor,\n nullifiers,\n commitments,\n ephemeralKey,\n randomSeed,\n macs,\n zkproof,\n ciphertexts\n });\n }\n if (joinSplitsLen > 0) {\n txSpecific.joinsplitPubkey = bufferReader.readSlice(32);\n txSpecific.joinsplitSig = bufferReader.readSlice(64);\n }\n }\n if (tx.version >= ZCASH_SAPLING_VERSION && txSpecific.vShieldedSpend.length + txSpecific.vShieldedOutput.length > 0) {\n txSpecific.bindingSig = bufferReader.readSlice(64);\n }\n if (tx.version === ZCASH_NU5_VERSION) {\n if (bufferReader.readVarInt() !== 0) {\n throw Error('Unexpected vSpendsSapling vector');\n }\n if (bufferReader.readVarInt() !== 0) {\n throw Error('Unexpected vOutputsSapling vector');\n }\n if (bufferReader.readUInt8() !== 0x00) {\n throw Error('Unexpected orchard byte');\n }\n }\n if (options.nostrict) return tx;\n if (bufferReader.offset !== buffer.length) throw new Error('Transaction has unexpected data');\n return tx;\n}\n//# sourceMappingURL=zcash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Transaction = void 0;\nconst tslib_1 = require(\"tslib\");\nconst networks_1 = require(\"../networks\");\nconst base_1 = require(\"./base\");\nconst bitcoin = tslib_1.__importStar(require(\"./bitcoin\"));\nconst dash = tslib_1.__importStar(require(\"./dash\"));\nconst decred = tslib_1.__importStar(require(\"./decred\"));\nconst peercoin = tslib_1.__importStar(require(\"./peercoin\"));\nconst zcash = tslib_1.__importStar(require(\"./zcash\"));\nclass Transaction extends base_1.TransactionBase {\n constructor(options = {}) {\n super(options);\n if ((0, networks_1.isNetworkType)('dash', this.network)) return dash.fromConstructor(options);\n if ((0, networks_1.isNetworkType)('decred', this.network)) return decred.fromConstructor(options);\n if ((0, networks_1.isNetworkType)('peercoin', this.network)) return peercoin.fromConstructor(options);\n if ((0, networks_1.isNetworkType)('zcash', this.network)) return zcash.fromConstructor(options);\n return bitcoin.fromConstructor(options);\n }\n static isCoinbaseHash(buffer) {\n return (0, base_1.isCoinbaseHash)(buffer);\n }\n static fromBuffer(buffer, options = {}) {\n if ((0, networks_1.isNetworkType)('dash', options.network)) return dash.fromBuffer(buffer, options);\n if ((0, networks_1.isNetworkType)('decred', options.network)) return decred.fromBuffer(buffer, options);\n if ((0, networks_1.isNetworkType)('peercoin', options.network)) return peercoin.fromBuffer(buffer, options);\n if ((0, networks_1.isNetworkType)('zcash', options.network)) return zcash.fromBuffer(buffer, options);\n return bitcoin.fromBuffer(buffer, options);\n }\n static fromHex(hex, options = {}) {\n return this.fromBuffer(Buffer.from(hex, 'hex'), {\n ...options,\n nostrict: false\n });\n }\n}\nexports.Transaction = Transaction;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.discovery = exports.getXpubOrDescriptorInfo = exports.deriveAddresses = exports.composeTx = exports.networks = exports.script = exports.payments = exports.crypto = exports.bufferutils = exports.bip32 = exports.address = exports.Transaction = void 0;\nconst tslib_1 = require(\"tslib\");\nconst address = tslib_1.__importStar(require(\"./address\"));\nexports.address = address;\nconst bip32 = tslib_1.__importStar(require(\"./bip32\"));\nexports.bip32 = bip32;\nconst bufferutils = tslib_1.__importStar(require(\"./bufferutils\"));\nexports.bufferutils = bufferutils;\nconst compose_1 = require(\"./compose\");\nObject.defineProperty(exports, \"composeTx\", {\n enumerable: true,\n get: function () {\n return compose_1.composeTx;\n }\n});\nconst crypto = tslib_1.__importStar(require(\"./crypto\"));\nexports.crypto = crypto;\nconst derivation_1 = require(\"./derivation\");\nObject.defineProperty(exports, \"deriveAddresses\", {\n enumerable: true,\n get: function () {\n return derivation_1.deriveAddresses;\n }\n});\nObject.defineProperty(exports, \"getXpubOrDescriptorInfo\", {\n enumerable: true,\n get: function () {\n return derivation_1.getXpubOrDescriptorInfo;\n }\n});\nconst discovery_1 = require(\"./discovery\");\nObject.defineProperty(exports, \"discovery\", {\n enumerable: true,\n get: function () {\n return discovery_1.discovery;\n }\n});\nconst networks = tslib_1.__importStar(require(\"./networks\"));\nexports.networks = networks;\nconst payments = tslib_1.__importStar(require(\"./payments\"));\nexports.payments = payments;\nconst script = tslib_1.__importStar(require(\"./script\"));\nexports.script = script;\nvar transaction_1 = require(\"./transaction\");\nObject.defineProperty(exports, \"Transaction\", {\n enumerable: true,\n get: function () {\n return transaction_1.Transaction;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JsonRpcClient = void 0;\nconst events_1 = require(\"events\");\nconst utils_1 = require(\"@trezor/utils\");\nclass JsonRpcClient {\n id = 0;\n buffer = '';\n emitter = new events_1.EventEmitter();\n callbacks = {};\n socket;\n debug = false;\n async connect(socket, options) {\n if (this.socket) return;\n this.debug = options?.debug || false;\n try {\n this.socket = socket;\n await this.socket.connect(this);\n } catch (err) {\n this.socket = undefined;\n throw new Error(`JSON RPC connection failed: [${err}]`);\n }\n }\n isConnected() {\n return !!this.socket;\n }\n close() {\n this.socket?.close();\n this.socket = undefined;\n this.onClose();\n }\n request(method, ...params) {\n return new Promise((resolve, reject) => {\n const id = ++this.id;\n const request = JSON.stringify({\n jsonrpc: '2.0',\n method,\n params,\n id\n });\n this.callbacks[id] = (err, result) => {\n if (err) reject(err);else resolve(result);\n };\n this.send(request);\n });\n }\n on(event, listener) {\n this.emitter.on(event, listener);\n }\n off(event, listener) {\n this.emitter.off(event, listener);\n }\n send(message) {\n const socket = this.socket || (0, utils_1.throwError)('Connection not established');\n this.log('SENDING:', message);\n socket.send(`${message}\\n`);\n }\n response(response) {\n const {\n id,\n method,\n params,\n result,\n error\n } = response;\n if (!id) {\n this.emitter.emit(method, params);\n } else {\n const callback = this.callbacks[id];\n if (callback) {\n delete this.callbacks[id];\n callback(error, result);\n } else {\n this.log(`Can't get callback for ${id}`);\n }\n }\n }\n onMessage(body) {\n const msg = JSON.parse(body);\n this.log('RECEIVED:', msg);\n this.response(msg);\n }\n onConnect() {\n this.log('onConnect');\n }\n onReceive(chunk) {\n const msgs = (this.buffer + chunk).split('\\n');\n this.buffer = msgs.pop() || '';\n msgs.filter(msg => !!msg).forEach(this.onMessage, this);\n }\n onEnd(e) {\n this.log(`onEnd: [${e}]`);\n }\n onError(error) {\n this.log(`onError: [${error}]`);\n }\n onClose() {\n this.log('onClose');\n Object.values(this.callbacks).forEach(cb => cb(new Error('Connection closed')));\n this.callbacks = {};\n this.emitter.removeAllListeners();\n }\n log(...data) {\n if (this.debug) {\n console.log(...data);\n }\n }\n}\nexports.JsonRpcClient = JsonRpcClient;\n//# sourceMappingURL=json-rpc.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BatchingJsonRpcClient = void 0;\nconst json_rpc_1 = require(\"./json-rpc\");\nconst TIMEOUT_MS = 50;\nconst MAX_QUEUE_LENGTH = 15;\nclass BatchingJsonRpcClient extends json_rpc_1.JsonRpcClient {\n queue = [];\n batchTimer;\n timeoutMs;\n maxQueueLength;\n batchingDisabled = false;\n constructor(options) {\n super();\n this.timeoutMs = options?.timeoutMs || TIMEOUT_MS;\n this.maxQueueLength = options?.maxQueueLength || MAX_QUEUE_LENGTH;\n }\n send(message) {\n if (this.batchingDisabled) {\n super.send(message);\n return;\n }\n const {\n queue\n } = this;\n queue.push(message);\n if (this.batchTimer) clearTimeout(this.batchTimer);\n this.batchTimer = setTimeout(() => {\n this.batchTimer = undefined;\n while (queue.length) {\n const q = queue.splice(0, this.maxQueueLength);\n const content = q.length > 1 ? `[${q.join(',')}]` : q[0];\n super.send(content);\n }\n }, this.timeoutMs);\n }\n onMessage(body) {\n const msg = JSON.parse(body);\n this.log('RECEIVED:', msg);\n if (Array.isArray(msg)) {\n msg.forEach(this.response, this);\n } else {\n this.response(msg);\n }\n }\n}\nexports.BatchingJsonRpcClient = BatchingJsonRpcClient;\n//# sourceMappingURL=batching.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ElectrumClient = void 0;\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst batching_1 = require(\"./batching\");\nconst KEEP_ALIVE_INTERVAL = 120 * 1000;\nconst selectNetwork = shortcut => {\n switch (shortcut) {\n case 'REGTEST':\n return utxo_lib_1.networks.regtest;\n case 'TEST':\n return utxo_lib_1.networks.testnet;\n default:\n return utxo_lib_1.networks.bitcoin;\n }\n};\nclass ElectrumClient extends batching_1.BatchingJsonRpcClient {\n options;\n network;\n version;\n lastBlock;\n timeLastCall = 0;\n async connect(socket, options) {\n this.timeLastCall = 0;\n this.options = options;\n this.network = selectNetwork(options.coin);\n const {\n name,\n protocolVersion\n } = options.client;\n await super.connect(socket, options);\n try {\n this.version = await this.request('server.version', name, protocolVersion);\n if (this.version[0]?.startsWith('ElectrumPersonalServer') || this.version[0]?.startsWith('electrs-esplora')) {\n this.batchingDisabled = true;\n }\n this.on('blockchain.headers.subscribe', this.onBlock.bind(this));\n this.lastBlock = await this.request('blockchain.headers.subscribe');\n } catch (err) {\n this.socket = undefined;\n throw new Error(`Communication with Electrum server failed: [${err}]`);\n }\n this.keepAlive();\n }\n getInfo() {\n if (this.options?.url && this.version && this.lastBlock && this.network) {\n return {\n url: this.options.url,\n version: this.version,\n block: this.lastBlock,\n coin: this.options.coin,\n network: this.network\n };\n }\n }\n onBlock(blocks) {\n const [last] = blocks.sort((a, b) => b.height - a.height);\n if (last) this.lastBlock = last;\n }\n request(method, ...params) {\n this.timeLastCall = new Date().getTime();\n return super.request(method, ...params);\n }\n keepAliveHandle;\n keepAlive() {\n if (!this.socket) return;\n this.keepAliveHandle = setInterval(async () => {\n if (this.timeLastCall !== 0 && new Date().getTime() > this.timeLastCall + KEEP_ALIVE_INTERVAL / 2) {\n await this.request('server.ping').catch(err => {\n console.error(`Ping to server failed: [${err}]`);\n this.close();\n });\n }\n }, KEEP_ALIVE_INTERVAL);\n }\n onClose() {\n super.onClose();\n if (this.keepAliveHandle) clearInterval(this.keepAliveHandle);\n }\n}\nexports.ElectrumClient = ElectrumClient;\n//# sourceMappingURL=electrum.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CachingElectrumClient = void 0;\nconst electrum_1 = require(\"./electrum\");\nclass CachingElectrumClient extends electrum_1.ElectrumClient {\n cache = {};\n statuses = {};\n cached = 0;\n total = 0;\n logTimer;\n constructor() {\n super();\n this.logTimer = setInterval(() => {\n this.log(`Caching effectiveness: ${this.cached}/${this.total}`);\n this.log('Subscription count: ', Object.keys(this.statuses).length);\n }, 60000);\n }\n async cacheRequest(status, method, params) {\n const descriptor = [method, ...params].join(':');\n const cached = this.cache[descriptor];\n if (cached) {\n const [cachedStatus, cachedResponse] = cached;\n if (cachedStatus === status) {\n this.cached++;\n return cachedResponse;\n }\n }\n const response = await super.request(method, ...params);\n this.cache[descriptor] = [status, response];\n return response;\n }\n async trySubscribe(scripthash) {\n const status = this.statuses[scripthash];\n if (status !== undefined) {\n return status;\n }\n const newStatus = await super.request('blockchain.scripthash.subscribe', scripthash);\n this.statuses[scripthash] = newStatus;\n return newStatus;\n }\n async request(method, ...params) {\n this.total++;\n switch (method) {\n case 'blockchain.scripthash.get_history':\n case 'blockchain.scripthash.get_balance':\n case 'blockchain.scripthash.listunspent':\n {\n const [scripthash] = params;\n const status = await this.trySubscribe(scripthash);\n return this.cacheRequest(status, method, params);\n }\n case 'blockchain.transaction.get':\n {\n const curBlock = this.lastBlock?.hex;\n if (curBlock === undefined) break;\n return this.cacheRequest(curBlock, method, params);\n }\n case 'blockchain.scripthash.subscribe':\n {\n const [scripthash] = params;\n return this.trySubscribe(scripthash);\n }\n case 'blockchain.scripthash.unsubscribe':\n {\n const [scripthash] = params;\n delete this.statuses[scripthash];\n return super.request(method, ...params);\n }\n default:\n break;\n }\n return super.request(method, ...params);\n }\n response(response) {\n const {\n method,\n params\n } = response;\n switch (method) {\n case 'blockchain.scripthash.subscribe':\n {\n const [scripthash, status] = params;\n this.statuses[scripthash] = status;\n break;\n }\n default:\n break;\n }\n super.response(response);\n }\n onClose() {\n super.onClose();\n clearInterval(this.logTimer);\n }\n}\nexports.CachingElectrumClient = CachingElectrumClient;\n//# sourceMappingURL=caching.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tryGetScripthash = exports.blockheaderToBlockhash = exports.scriptToScripthash = exports.addressToScripthash = exports.btcToSat = void 0;\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst btcToSat = btc => Math.round(100000000 * btc).toString();\nexports.btcToSat = btcToSat;\nconst addressToScripthash = (address, network) => {\n const script = utxo_lib_1.address.toOutputScript(address, network);\n const scripthash = utxo_lib_1.crypto.sha256(script).reverse().toString('hex');\n return scripthash;\n};\nexports.addressToScripthash = addressToScripthash;\nconst scriptToScripthash = hex => {\n const buffer = Buffer.from(hex, 'hex');\n return utxo_lib_1.crypto.sha256(buffer).reverse().toString('hex');\n};\nexports.scriptToScripthash = scriptToScripthash;\nconst blockheaderToBlockhash = header => {\n const buffer = Buffer.from(header, 'hex');\n const hash = utxo_lib_1.crypto.hash256(buffer).reverse().toString('hex');\n return hash;\n};\nexports.blockheaderToBlockhash = blockheaderToBlockhash;\nconst tryGetScripthash = (address, network) => {\n try {\n return {\n valid: true,\n scripthash: (0, exports.addressToScripthash)(address, network)\n };\n } catch {\n return {\n valid: false\n };\n }\n};\nexports.tryGetScripthash = tryGetScripthash;\n//# sourceMappingURL=transform.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createAddressManager = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst transform_1 = require(\"./transform\");\nconst addressesFromAccounts = array => array.filter(utils_1.isNotUndefined).flatMap(({\n change,\n used,\n unused\n}) => change.concat(used, unused).map(({\n address\n}) => address));\nconst createAddressManager = getNetwork => {\n let subscribedAddrs = {};\n let subscribedAccs = {};\n const addAddresses = addresses => {\n const toAdd = addresses.filter(utils_1.arrayDistinct).filter(addr => !subscribedAddrs[addr]);\n const network = getNetwork();\n subscribedAddrs = toAdd.reduce((dic, addr) => ({\n ...dic,\n [addr]: (0, transform_1.addressToScripthash)(addr, network)\n }), subscribedAddrs);\n return toAdd.map(addr => subscribedAddrs[addr]);\n };\n const removeAddresses = addresses => {\n const [toRemove, toPreserve] = addresses ? (0, utils_1.objectPartition)(subscribedAddrs, addresses) : [subscribedAddrs, {}];\n subscribedAddrs = toPreserve;\n return Object.values(toRemove);\n };\n const addAccounts = accounts => {\n const toAdd = accounts.filter(acc => !subscribedAccs[acc.descriptor]);\n subscribedAccs = toAdd.reduce((dic, acc) => ({\n ...dic,\n [acc.descriptor]: acc.addresses || {\n change: [],\n used: [],\n unused: []\n }\n }), subscribedAccs);\n const addresses = addressesFromAccounts(toAdd.map(acc => acc.addresses));\n return addAddresses(addresses);\n };\n const removeAccounts = accounts => {\n const [toRemove, toPreserve] = accounts ? (0, utils_1.objectPartition)(subscribedAccs, accounts.map(({\n descriptor\n }) => descriptor)) : [subscribedAccs, {}];\n subscribedAccs = toPreserve;\n const addresses = addressesFromAccounts(Object.values(toRemove));\n return removeAddresses(addresses);\n };\n const getCount = () => Object.keys(subscribedAddrs).length;\n const getInfo = scripthash => {\n const [address, _sh] = Object.entries(subscribedAddrs).find(([_addr, sh]) => sh === scripthash) || [];\n if (!address) return {\n descriptor: scripthash\n };\n const [account, addresses] = Object.entries(subscribedAccs).find(([_acc, {\n change,\n unused,\n used\n }]) => !!change.concat(used, unused).find(ad => ad.address === address)) || [];\n return {\n descriptor: account || address,\n addresses\n };\n };\n return {\n addAddresses,\n removeAddresses,\n addAccounts,\n removeAccounts,\n getCount,\n getInfo\n };\n};\nexports.createAddressManager = createAddressManager;\n//# sourceMappingURL=addressManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.discoverAddress = void 0;\nconst transform_1 = require(\"./transform\");\nconst discoverAddress = client => async ({\n address,\n path\n}) => {\n const scripthash = (0, transform_1.addressToScripthash)(address, client.getInfo()?.network);\n const history = await client.request('blockchain.scripthash.get_history', scripthash);\n return {\n address,\n scripthash,\n path,\n history,\n empty: !history.length\n };\n};\nexports.discoverAddress = discoverAddress;\n//# sourceMappingURL=discovery.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTransactions = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst transform_1 = require(\"./transform\");\nconst transformOpReturn = hex => {\n const [, _len, data] = hex.match(/^6a(?:4c)?([0-9a-f]{2})([0-9a-f]*)$/i) ?? [];\n return data ? `OP_RETURN (${Buffer.from(data, 'hex').toString('ascii')})` : undefined;\n};\nconst parseAddresses = ({\n address,\n addresses,\n type,\n hex\n}) => {\n if (type === 'nulldata') {\n const opReturn = transformOpReturn(hex);\n return {\n addresses: opReturn ? [opReturn] : [],\n isAddress: false\n };\n }\n const addrs = !address ? addresses || [] : [address];\n return {\n addresses: addrs,\n isAddress: addrs.length === 1\n };\n};\nconst isNotCoinbase = item => item.txid !== undefined;\nconst formatTransaction = (getVout, getSpent, currentHeight) => tx => {\n const {\n txid,\n version,\n vin,\n vout,\n hex,\n blockhash,\n confirmations,\n blocktime,\n locktime,\n vsize,\n size\n } = tx;\n const vinRegular = vin.filter(isNotCoinbase);\n const value = vout.map(({\n value\n }) => value).reduce((a, b) => a + b, 0);\n const valueIn = vinRegular.map(({\n txid,\n vout\n }) => getVout(txid, vout).value).reduce((a, b) => a + b, 0);\n return {\n txid,\n hex,\n version,\n confirmations: confirmations ?? 0,\n lockTime: locktime,\n blockTime: blocktime,\n blockHash: blockhash,\n blockHeight: currentHeight && confirmations ? currentHeight - confirmations + 1 : -1,\n value: (0, transform_1.btcToSat)(value),\n valueIn: (0, transform_1.btcToSat)(valueIn),\n fees: (0, transform_1.btcToSat)(valueIn - value),\n vsize,\n size,\n vin: vinRegular.map(({\n txid,\n vout,\n sequence,\n n\n }, index) => ({\n txid,\n vout,\n sequence,\n n: n || index,\n value: (0, transform_1.btcToSat)(getVout(txid, vout).value),\n ...parseAddresses(getVout(txid, vout).scriptPubKey)\n })),\n vout: vout.map(({\n value,\n n,\n scriptPubKey\n }) => ({\n value: (0, transform_1.btcToSat)(value),\n n,\n spent: getSpent(txid, n),\n hex: scriptPubKey.hex,\n ...parseAddresses(scriptPubKey)\n }))\n };\n};\nconst getTransactions = async (client, history) => {\n const txids = history.map(({\n tx_hash\n }) => tx_hash).filter(utils_1.arrayDistinct);\n const origTxs = await Promise.all(txids.map(txid => client.request('blockchain.transaction.get', txid, true))).then(txs => (0, utils_1.arrayToDictionary)(txs, ({\n txid\n }) => txid));\n const prevTxs = await Promise.all(Object.values(origTxs).flatMap(({\n vin\n }) => vin.filter(isNotCoinbase).map(({\n txid\n }) => txid)).filter(utils_1.arrayDistinct).filter(txid => !origTxs[txid]).map(txid => client.request('blockchain.transaction.get', txid, true))).then(txs => (0, utils_1.arrayToDictionary)(txs, ({\n txid\n }) => txid));\n const getSpent = () => false;\n const getTx = txid => origTxs[txid] || prevTxs[txid];\n const getVout = (txid, vout) => getTx(txid).vout[vout];\n const currentHeight = client.getInfo()?.block?.height || 0;\n return Object.values(origTxs).map(formatTransaction(getVout, getSpent, currentHeight));\n};\nexports.getTransactions = getTransactions;\n//# sourceMappingURL=transaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./addressManager\"), exports);\ntslib_1.__exportStar(require(\"./discovery\"), exports);\ntslib_1.__exportStar(require(\"./transform\"), exports);\ntslib_1.__exportStar(require(\"./transaction\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.blockListener = void 0;\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst utils_1 = require(\"@trezor/utils\");\nconst utils_2 = require(\"../utils\");\nconst blockListener = worker => {\n const {\n state\n } = worker;\n const api = () => worker.api ?? (0, utils_1.throwError)('API not created');\n const onBlock = blocks => {\n blocks.forEach(({\n height,\n hex\n }) => worker.post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight: height,\n blockHash: (0, utils_2.blockheaderToBlockhash)(hex)\n }\n }\n }));\n };\n const subscribe = () => {\n if (!state.getSubscription('block')) {\n state.addSubscription('block');\n api().on('blockchain.headers.subscribe', onBlock);\n }\n return {\n subscribed: true\n };\n };\n const unsubscribe = () => {\n if (state.getSubscription('block')) {\n api().off('blockchain.headers.subscribe', onBlock);\n state.removeSubscription('block');\n }\n return {\n subscribed: false\n };\n };\n return {\n subscribe,\n unsubscribe\n };\n};\nexports.blockListener = blockListener;\n//# sourceMappingURL=blockListener.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.txListener = void 0;\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst blockbook_1 = require(\"@trezor/blockchain-link-utils/lib/blockbook\");\nconst utils_1 = require(\"@trezor/utils\");\nconst utils_2 = require(\"../utils\");\nconst mostRecent = (previous, current) => {\n if (previous === undefined) return current;\n if (previous.height === -1) return previous;\n if (current.height === -1) return current;\n if (previous.height === 0) return previous;\n if (current.height === 0) return current;\n return previous.height >= current.height ? previous : current;\n};\nconst txListener = worker => {\n const {\n state\n } = worker;\n const api = () => worker.api ?? (0, utils_1.throwError)('API not created');\n const addressManager = (0, utils_2.createAddressManager)(() => api().getInfo()?.network);\n const onTransaction = async ([scripthash, _status]) => {\n const {\n descriptor,\n addresses\n } = addressManager.getInfo(scripthash);\n if (descriptor === scripthash) {\n return;\n }\n const history = await api().request('blockchain.scripthash.get_history', scripthash);\n const recent = history.reduce(mostRecent, undefined);\n if (!recent) return;\n const [tx] = await (0, utils_2.getTransactions)(api(), [recent]);\n worker.post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'notification',\n payload: {\n descriptor,\n tx: (0, blockbook_1.transformTransaction)(tx, addresses ?? descriptor)\n }\n }\n });\n };\n const subscribe = async data => {\n const shToSubscribe = data.type === 'accounts' ? addressManager.addAccounts(data.accounts) : addressManager.addAddresses(data.addresses);\n if (!shToSubscribe.length) return {\n subscribed: false\n };\n if (!state.getSubscription('notification')) {\n api().on('blockchain.scripthash.subscribe', onTransaction);\n state.addSubscription('notification');\n }\n await Promise.all(shToSubscribe.map(scripthash => api().request('blockchain.scripthash.subscribe', scripthash)));\n return {\n subscribed: true\n };\n };\n const unsubscribe = async data => {\n const shToUnsubscribe = data.type === 'accounts' ? addressManager.removeAccounts(data.accounts) : addressManager.removeAddresses(data.addresses);\n if (!shToUnsubscribe.length) return {\n subscribed: false\n };\n if (state.getSubscription('notification') && !addressManager.getCount()) {\n api().off('blockchain.scripthash.subscribe', onTransaction);\n state.removeSubscription('notification');\n }\n await Promise.all(shToUnsubscribe.map(scripthash => api().request('blockchain.scripthash.unsubscribe', scripthash)));\n return {\n subscribed: false\n };\n };\n return {\n subscribe,\n unsubscribe\n };\n};\nexports.txListener = txListener;\n//# sourceMappingURL=txListener.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.txListener = exports.blockListener = void 0;\nvar blockListener_1 = require(\"./blockListener\");\nObject.defineProperty(exports, \"blockListener\", {\n enumerable: true,\n get: function () {\n return blockListener_1.blockListener;\n }\n});\nvar txListener_1 = require(\"./txListener\");\nObject.defineProperty(exports, \"txListener\", {\n enumerable: true,\n get: function () {\n return txListener_1.txListener;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst utils_1 = require(\"../utils\");\nconst estimateFee = (client, payload) => Promise.all((payload.blocks || []).map(num => client.request('blockchain.estimatefee', num).then(btc => ({\n feePerUnit: (0, utils_1.btcToSat)(btc)\n}))));\nexports.default = estimateFee;\n//# sourceMappingURL=estimateFee.js.map", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n__export(exports, {\n pipe: () => pipe\n});\nfunction pipe() {\n let x = arguments[0];\n for (let i = 1, l = arguments.length; i < l; i++) {\n x = arguments[i](x);\n }\n return x;\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n__export(exports, {\n flow: () => flow\n});\nfunction flow() {\n let fns = arguments;\n return function() {\n let x = fns[0].apply(null, arguments);\n for (let i = 1, l = fns.length; i < l; i++) {\n x = fns[i](x);\n }\n return x;\n };\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Function/index.js\n__export(exports, {\n after: () => after,\n allPass: () => allPass,\n always: () => always,\n anyPass: () => anyPass,\n before: () => before,\n both: () => both,\n coerce: () => coerce,\n debounce: () => debounce,\n defaultTo: () => defaultTo,\n either: () => either,\n equals: () => equals,\n falsy: () => falsy,\n identity: () => identity,\n ifElse: () => ifElse,\n ignore: () => ignore,\n makeControlledDebounce: () => makeControlledDebounce,\n makeControlledThrottle: () => makeControlledThrottle,\n memoize: () => memoize,\n memoizeWithKey: () => memoizeWithKey,\n once: () => once,\n placeholder: () => placeholder,\n tap: () => tap,\n throttle: () => throttle,\n toMutable: () => toMutable,\n truthy: () => truthy,\n tryCatch: () => tryCatch,\n unless: () => unless,\n when: () => when\n});\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\nfunction valFromOption(x) {\n if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) {\n return x;\n }\n var depth = x.BS_PRIVATE_NESTED_SOME_NONE;\n if (depth === 0) {\n return;\n } else {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0\n };\n }\n}\n\n// node_modules/rescript/lib/es6/caml_exceptions.js\nvar id = {\n contents: 0\n};\nfunction create(str) {\n id.contents = id.contents + 1 | 0;\n return str + (\"/\" + id.contents);\n}\nfunction caml_is_extension(e) {\n if (e == null) {\n return false;\n } else {\n return typeof e.RE_EXN_ID === \"string\";\n }\n}\n\n// node_modules/rescript/lib/es6/caml_js_exceptions.js\nvar $$Error = /* @__PURE__ */ create(\"Caml_js_exceptions.Error\");\nfunction internalToOCamlException(e) {\n if (caml_is_extension(e)) {\n return e;\n } else {\n return {\n RE_EXN_ID: $$Error,\n _1: e\n };\n }\n}\n\n// node_modules/rescript/lib/es6/js_exn.js\nvar $$Error$1 = $$Error;\n\n// node_modules/rescript/lib/es6/caml_obj.js\nvar for_in = function(o, foo) {\n for (var x in o) {\n foo(x);\n }\n};\nfunction caml_equal(a, b) {\n if (a === b) {\n return true;\n }\n var a_type = typeof a;\n if (a_type === \"string\" || a_type === \"number\" || a_type === \"boolean\" || a_type === \"undefined\" || a === null) {\n return false;\n }\n var b_type = typeof b;\n if (a_type === \"function\" || b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: functional value\",\n Error: new Error()\n };\n }\n if (b_type === \"number\" || b_type === \"undefined\" || b === null) {\n return false;\n }\n var tag_a = a.TAG | 0;\n var tag_b = b.TAG | 0;\n if (tag_a === 248) {\n return a[1] === b[1];\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n return false;\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len_a) {\n return true;\n }\n if (!caml_equal(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n } else if (a instanceof Date && b instanceof Date) {\n return !(a > b || a < b);\n } else {\n var result = {\n contents: true\n };\n var do_key_a = function(key) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) {\n result.contents = false;\n return;\n }\n };\n var do_key_b = function(key) {\n if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) {\n result.contents = false;\n return;\n }\n };\n for_in(a, do_key_a);\n if (result.contents) {\n for_in(b, do_key_b);\n }\n return result.contents;\n }\n } else {\n return false;\n }\n}\n\n// node_modules/rescript/lib/es6/belt_Array.js\nfunction everyU(arr, b) {\n var len = arr.length;\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len) {\n return true;\n }\n if (!b(arr[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n}\nfunction someU(arr, b) {\n var len = arr.length;\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len) {\n return false;\n }\n if (b(arr[i])) {\n return true;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n}\n\n// node_modules/rescript/lib/es6/belt_Option.js\nfunction mapWithDefaultU(opt, $$default, f) {\n if (opt !== void 0) {\n return f(valFromOption(opt));\n } else {\n return $$default;\n }\n}\nfunction isSome(param) {\n return param !== void 0;\n}\n\n// node_modules/rescript/lib/es6/belt_internalAVLtree.js\nfunction treeHeight(n) {\n if (n !== void 0) {\n return n.h;\n } else {\n return 0;\n }\n}\nfunction create2(l, x, d, r) {\n var hl = treeHeight(l);\n var hr = treeHeight(r);\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l,\n r\n };\n}\nfunction singleton(x, d) {\n return {\n k: x,\n v: d,\n h: 1,\n l: void 0,\n r: void 0\n };\n}\nfunction updateValue(n, newValue) {\n if (n.v === newValue) {\n return n;\n } else {\n return {\n k: n.k,\n v: newValue,\n h: n.h,\n l: n.l,\n r: n.r\n };\n }\n}\nfunction bal(l, x, d, r) {\n var hl = l !== void 0 ? l.h : 0;\n var hr = r !== void 0 ? r.h : 0;\n if (hl > (hr + 2 | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (treeHeight(ll) >= treeHeight(lr)) {\n return create2(ll, l.k, l.v, create2(lr, x, d, r));\n } else {\n return create2(create2(ll, l.k, l.v, lr.l), lr.k, lr.v, create2(lr.r, x, d, r));\n }\n }\n if (hr <= (hl + 2 | 0)) {\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l,\n r\n };\n }\n var rl = r.l;\n var rr = r.r;\n if (treeHeight(rr) >= treeHeight(rl)) {\n return create2(create2(l, x, d, rl), r.k, r.v, rr);\n } else {\n return create2(create2(l, x, d, rl.l), rl.k, rl.v, create2(rl.r, r.k, r.v, rr));\n }\n}\n\n// node_modules/rescript/lib/es6/belt_internalMapString.js\nfunction get(_n, x) {\n while (true) {\n var n = _n;\n if (n === void 0) {\n return;\n }\n var v = n.k;\n if (x === v) {\n return some(n.v);\n }\n _n = x < v ? n.l : n.r;\n continue;\n }\n ;\n}\n\n// node_modules/rescript/lib/es6/belt_MapString.js\nfunction set(t, newK, newD) {\n if (t === void 0) {\n return singleton(newK, newD);\n }\n var k = t.k;\n if (newK === k) {\n return updateValue(t, newD);\n }\n var v = t.v;\n if (newK < k) {\n return bal(set(t.l, newK, newD), k, v, t.r);\n } else {\n return bal(t.l, k, v, set(t.r, newK, newD));\n }\n}\nvar get2 = get;\n\n// src/Function/Function.bs.js\nfunction placeholder(param) {\n}\nfunction identity(value) {\n return value;\n}\nvar _equals = caml_equal;\nfunction equals() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _equals(data, args[0]);\n };\n }\n return _equals(arguments[0], arguments[1]);\n}\nfunction _both(value, fn0, fn1) {\n if (fn0(value)) {\n return fn1(value);\n } else {\n return false;\n }\n}\nfunction both() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _both(data, args[0], args[1]);\n };\n }\n return _both(arguments[0], arguments[1], arguments[2]);\n}\nfunction _either(value, fn0, fn1) {\n if (fn0(value)) {\n return true;\n } else {\n return fn1(value);\n }\n}\nfunction either() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _either(data, args[0], args[1]);\n };\n }\n return _either(arguments[0], arguments[1], arguments[2]);\n}\nfunction always(value) {\n return function() {\n return value;\n };\n}\nfunction _defaultTo(value, defaultValue) {\n if (value == null) {\n return defaultValue;\n } else {\n return value;\n }\n}\nfunction defaultTo() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _defaultTo(data, args[0]);\n };\n }\n return _defaultTo(arguments[0], arguments[1]);\n}\nfunction falsy() {\n return false;\n}\nfunction truthy() {\n return true;\n}\nfunction _ifElse(value, predicateFn, truthyFn, falsyFn) {\n if (predicateFn(value)) {\n return truthyFn(value);\n } else {\n return falsyFn(value);\n }\n}\nfunction ifElse() {\n if (arguments.length === 3) {\n const args = arguments;\n return function fn(data) {\n return _ifElse(data, args[0], args[1], args[2]);\n };\n }\n return _ifElse(arguments[0], arguments[1], arguments[2], arguments[3]);\n}\nfunction ignore(param) {\n}\nfunction _unless(value, predicateFn, falsyFn) {\n if (predicateFn(value)) {\n return value;\n } else {\n return falsyFn(value);\n }\n}\nfunction unless() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _unless(data, args[0], args[1]);\n };\n }\n return _unless(arguments[0], arguments[1], arguments[2]);\n}\nfunction _when_(value, predicateFn, truthyFn) {\n if (predicateFn(value)) {\n return truthyFn(value);\n } else {\n return value;\n }\n}\nfunction when() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _when_(data, args[0], args[1]);\n };\n }\n return _when_(arguments[0], arguments[1], arguments[2]);\n}\nfunction _allPass(value, fns) {\n return everyU(fns, function(fn) {\n return fn(value);\n });\n}\nfunction allPass() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _allPass(data, args[0]);\n };\n }\n return _allPass(arguments[0], arguments[1]);\n}\nfunction _anyPass(value, fns) {\n return someU(fns, function(fn) {\n return fn(value);\n });\n}\nfunction anyPass() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _anyPass(data, args[0]);\n };\n }\n return _anyPass(arguments[0], arguments[1]);\n}\nfunction _tap(value, fn) {\n fn(value);\n return value;\n}\nfunction tap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tap(data, args[0]);\n };\n }\n return _tap(arguments[0], arguments[1]);\n}\nfunction _makeControlledThrottle(fn, options) {\n var isThrottled = {\n contents: false\n };\n var timer = {\n contents: void 0\n };\n var cancel = function(param) {\n mapWithDefaultU(timer.contents, void 0, function(timer2) {\n clearTimeout(timer2);\n });\n timer.contents = void 0;\n };\n var invoke = function(...restArgs) {\n cancel(void 0);\n return fn(...restArgs);\n };\n var isScheduled = function(param) {\n return isThrottled.contents;\n };\n var isLeading = {\n contents: options.leading\n };\n var make = function(...restArgs) {\n if (isLeading.contents) {\n isLeading.contents = false;\n return fn(...restArgs);\n } else {\n if (isThrottled.contents) {\n return;\n }\n cancel(void 0);\n isThrottled.contents = true;\n fn(...restArgs);\n var timeout = setTimeout(function(param) {\n isThrottled.contents = false;\n timer.contents = void 0;\n }, options.delay);\n timer.contents = some(timeout);\n return;\n }\n };\n return {\n cancel,\n invoke,\n isScheduled,\n schedule: make\n };\n}\nfunction makeControlledThrottle() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _makeControlledThrottle(data, args[0]);\n };\n }\n return _makeControlledThrottle(arguments[0], arguments[1]);\n}\nfunction _throttle(fn, delay) {\n return makeControlledThrottle(fn, {\n delay,\n leading: false\n }).schedule;\n}\nfunction throttle() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _throttle(data, args[0]);\n };\n }\n return _throttle(arguments[0], arguments[1]);\n}\nfunction _makeControlledDebounce(fn, options) {\n var timer = {\n contents: void 0\n };\n var cancel = function(param) {\n mapWithDefaultU(timer.contents, void 0, function(timer2) {\n clearTimeout(timer2);\n });\n timer.contents = void 0;\n };\n var invoke = function(...restArgs) {\n cancel(void 0);\n return fn(...restArgs);\n };\n var isScheduled = function(param) {\n return isSome(timer.contents);\n };\n var isLeading = {\n contents: options.leading\n };\n var make = function(...restArgs) {\n if (isLeading.contents) {\n isLeading.contents = false;\n return fn(...restArgs);\n } else {\n cancel(void 0);\n var timeout = setTimeout(function(param) {\n fn(...restArgs);\n timer.contents = void 0;\n }, options.delay);\n timer.contents = some(timeout);\n return;\n }\n };\n return {\n cancel,\n invoke,\n isScheduled,\n schedule: make\n };\n}\nfunction makeControlledDebounce() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _makeControlledDebounce(data, args[0]);\n };\n }\n return _makeControlledDebounce(arguments[0], arguments[1]);\n}\nfunction _debounce(fn, delay) {\n return makeControlledDebounce(fn, {\n delay,\n leading: false\n }).schedule;\n}\nfunction debounce() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _debounce(data, args[0]);\n };\n }\n return _debounce(arguments[0], arguments[1]);\n}\nfunction _tryCatch(value, fn) {\n try {\n return {\n TAG: 0,\n _0: fn(value)\n };\n } catch (raw_obj) {\n var obj = internalToOCamlException(raw_obj);\n if (obj.RE_EXN_ID === $$Error$1) {\n var message = obj._1.message;\n if (message !== void 0) {\n return {\n TAG: 1,\n _0: message\n };\n } else {\n return {\n TAG: 1,\n _0: \"F.tryCatch: unknown error\"\n };\n }\n }\n throw obj;\n }\n}\nfunction tryCatch() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tryCatch(data, args[0]);\n };\n }\n return _tryCatch(arguments[0], arguments[1]);\n}\nfunction _before(times, fn) {\n var count = {\n contents: 0\n };\n var lastResult = {\n contents: void 0\n };\n return function(...restArgs) {\n var result = lastResult.contents;\n if (result !== void 0) {\n if (count.contents >= times) {\n return valFromOption(result);\n }\n var result$1 = fn(...restArgs);\n lastResult.contents = some(result$1);\n count.contents = count.contents + 1 | 0;\n return result$1;\n }\n var result$2 = fn(...restArgs);\n lastResult.contents = some(result$2);\n count.contents = count.contents + 1 | 0;\n return result$2;\n };\n}\nfunction before() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _before(data, args[0]);\n };\n }\n return _before(arguments[0], arguments[1]);\n}\nfunction _after(times, fn) {\n var count = {\n contents: 0\n };\n return function(...restArgs) {\n if (count.contents < times) {\n count.contents = count.contents + 1 | 0;\n return;\n } else {\n return some(fn(...restArgs));\n }\n };\n}\nfunction after() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _after(data, args[0]);\n };\n }\n return _after(arguments[0], arguments[1]);\n}\nfunction once(fn) {\n var lastResult = {\n contents: void 0\n };\n return function(...restArgs) {\n var result = lastResult.contents;\n if (result !== void 0) {\n return valFromOption(result);\n }\n var result$1 = fn(...restArgs);\n lastResult.contents = some(result$1);\n return result$1;\n };\n}\nvar memoize = once;\nfunction _memoizeWithKey(makeKeyFn, fn) {\n var cache = {\n contents: void 0\n };\n return function(...restArgs) {\n var key = makeKeyFn(...restArgs);\n var result = get2(cache.contents, key);\n if (result !== void 0) {\n return valFromOption(result);\n }\n var result$1 = fn(...restArgs);\n cache.contents = set(cache.contents, key, result$1);\n return result$1;\n };\n}\nfunction memoizeWithKey() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _memoizeWithKey(data, args[0]);\n };\n }\n return _memoizeWithKey(arguments[0], arguments[1]);\n}\nfunction toMutable(value) {\n return value;\n}\nfunction coerce(value) {\n return value;\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all2) => {\n __markAsModule(target);\n for (var name in all2)\n __defProp(target, name, { get: all2[name], enumerable: true });\n};\n\n// src/Array/index.js\n__export(exports, {\n all: () => all,\n any: () => any,\n append: () => append,\n at: () => at,\n concat: () => concat2,\n concatMany: () => concatMany2,\n copy: () => copy,\n deepFlat: () => deepFlat,\n difference: () => difference,\n drop: () => drop,\n dropExactly: () => dropExactly,\n dropWhile: () => dropWhile,\n eq: () => eq,\n every: () => every,\n filter: () => filter,\n filterMap: () => filterMap,\n filterWithIndex: () => filterWithIndex,\n find: () => find,\n flat: () => flat,\n flatten: () => flatten,\n flip: () => flip,\n forEach: () => forEach,\n forEachWithIndex: () => forEachWithIndex,\n get: () => get3,\n getBy: () => getBy,\n getIndexBy: () => getIndexBy,\n getUndefined: () => getUndefined,\n getUnsafe: () => getUnsafe,\n groupBy: () => groupBy,\n head: () => head,\n includes: () => includes,\n init: () => init,\n initOrEmpty: () => initOrEmpty,\n insertAt: () => insertAt,\n intersection: () => intersection,\n intersperse: () => intersperse,\n isEmpty: () => isEmpty,\n isNotEmpty: () => isNotEmpty,\n join: () => join,\n keep: () => keep,\n keepMap: () => keepMap,\n keepWithIndex: () => keepWithIndex,\n last: () => last,\n length: () => length,\n make: () => make2,\n makeEmpty: () => makeEmpty,\n makeWithIndex: () => makeWithIndex,\n map: () => map,\n mapWithIndex: () => mapWithIndex,\n partition: () => partition,\n placeholder: () => placeholder,\n prepend: () => prepend,\n prependToAll: () => prependToAll,\n range: () => range2,\n rangeBy: () => rangeBy2,\n reduce: () => reduce,\n reduceReverse: () => reduceReverse,\n reduceWithIndex: () => reduceWithIndex,\n reject: () => reject,\n rejectWithIndex: () => rejectWithIndex,\n removeAt: () => removeAt,\n removeFirst: () => removeFirst,\n removeFirstBy: () => removeFirstBy,\n repeat: () => repeat,\n replaceAt: () => replaceAt,\n reverse: () => reverse2,\n shuffle: () => shuffle2,\n slice: () => slice2,\n sliceToEnd: () => sliceToEnd2,\n some: () => some2,\n sort: () => sort,\n sortBy: () => sortBy,\n splitAt: () => splitAt,\n splitEvery: () => splitEvery,\n swapAt: () => swapAt,\n tail: () => tail,\n tailOrEmpty: () => tailOrEmpty,\n take: () => take,\n takeExactly: () => takeExactly,\n takeWhile: () => takeWhile,\n tap: () => tap,\n toTuple: () => toTuple,\n uncons: () => uncons,\n union: () => union,\n uniq: () => uniq,\n uniqBy: () => uniqBy,\n unzip: () => unzip2,\n updateAt: () => updateAt,\n zip: () => zip2,\n zipWith: () => zipWith,\n zipWithIndex: () => zipWithIndex\n});\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\nfunction valFromOption(x) {\n if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) {\n return x;\n }\n var depth = x.BS_PRIVATE_NESTED_SOME_NONE;\n if (depth === 0) {\n return;\n } else {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0\n };\n }\n}\n\n// node_modules/rescript/lib/es6/js_dict.js\nfunction get(dict, k) {\n if (k in dict) {\n return some(dict[k]);\n }\n}\n\n// node_modules/rescript/lib/es6/caml.js\nfunction caml_int_compare(x, y) {\n if (x < y) {\n return -1;\n } else if (x === y) {\n return 0;\n } else {\n return 1;\n }\n}\nfunction caml_bool_compare(x, y) {\n if (x) {\n if (y) {\n return 0;\n } else {\n return 1;\n }\n } else if (y) {\n return -1;\n } else {\n return 0;\n }\n}\nfunction caml_string_compare(s1, s2) {\n if (s1 === s2) {\n return 0;\n } else if (s1 < s2) {\n return -1;\n } else {\n return 1;\n }\n}\nfunction caml_int_max(x, y) {\n if (x > y) {\n return x;\n } else {\n return y;\n }\n}\n\n// node_modules/rescript/lib/es6/caml_obj.js\nvar for_in = function(o, foo) {\n for (var x in o) {\n foo(x);\n }\n};\nfunction caml_compare(a, b) {\n if (a === b) {\n return 0;\n }\n var a_type = typeof a;\n var b_type = typeof b;\n switch (a_type) {\n case \"boolean\":\n if (b_type === \"boolean\") {\n return caml_bool_compare(a, b);\n }\n break;\n case \"function\":\n if (b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"compare: functional value\",\n Error: new Error()\n };\n }\n break;\n case \"number\":\n if (b_type === \"number\") {\n return caml_int_compare(a, b);\n }\n break;\n case \"string\":\n if (b_type === \"string\") {\n return caml_string_compare(a, b);\n } else {\n return 1;\n }\n case \"undefined\":\n return -1;\n default:\n }\n switch (b_type) {\n case \"string\":\n return -1;\n case \"undefined\":\n return 1;\n default:\n if (a_type === \"boolean\") {\n return 1;\n }\n if (b_type === \"boolean\") {\n return -1;\n }\n if (a_type === \"function\") {\n return 1;\n }\n if (b_type === \"function\") {\n return -1;\n }\n if (a_type === \"number\") {\n if (b === null || b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return 1;\n } else {\n return -1;\n }\n }\n if (b_type === \"number\") {\n if (a === null || a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return -1;\n } else {\n return 1;\n }\n }\n if (a === null) {\n if (b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return 1;\n } else {\n return -1;\n }\n }\n if (b === null) {\n if (a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return -1;\n } else {\n return 1;\n }\n }\n if (a.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n if (b.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return aux_obj_compare(a, b);\n } else {\n return -1;\n }\n }\n var tag_a = a.TAG | 0;\n var tag_b = b.TAG | 0;\n if (tag_a === 248) {\n return caml_int_compare(a[1], b[1]);\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n if (tag_a < tag_b) {\n return -1;\n } else {\n return 1;\n }\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len_a) {\n return 0;\n }\n var res = caml_compare(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n } else if (a instanceof Date && b instanceof Date) {\n return a - b;\n } else {\n return aux_obj_compare(a, b);\n }\n } else if (len_a < len_b) {\n var _i$1 = 0;\n while (true) {\n var i$1 = _i$1;\n if (i$1 === len_a) {\n return -1;\n }\n var res$1 = caml_compare(a[i$1], b[i$1]);\n if (res$1 !== 0) {\n return res$1;\n }\n _i$1 = i$1 + 1 | 0;\n continue;\n }\n ;\n } else {\n var _i$2 = 0;\n while (true) {\n var i$2 = _i$2;\n if (i$2 === len_b) {\n return 1;\n }\n var res$2 = caml_compare(a[i$2], b[i$2]);\n if (res$2 !== 0) {\n return res$2;\n }\n _i$2 = i$2 + 1 | 0;\n continue;\n }\n ;\n }\n }\n}\nfunction aux_obj_compare(a, b) {\n var min_key_lhs = {\n contents: void 0\n };\n var min_key_rhs = {\n contents: void 0\n };\n var do_key = function(param, key) {\n var min_key = param[2];\n var b2 = param[1];\n if (!(!Object.prototype.hasOwnProperty.call(b2, key) || caml_compare(param[0][key], b2[key]) > 0)) {\n return;\n }\n var mk = min_key.contents;\n if (mk !== void 0 && key >= mk) {\n return;\n } else {\n min_key.contents = key;\n return;\n }\n };\n var partial_arg = [\n a,\n b,\n min_key_rhs\n ];\n var do_key_a = function(param) {\n return do_key(partial_arg, param);\n };\n var partial_arg$1 = [\n b,\n a,\n min_key_lhs\n ];\n var do_key_b = function(param) {\n return do_key(partial_arg$1, param);\n };\n for_in(a, do_key_a);\n for_in(b, do_key_b);\n var match = min_key_lhs.contents;\n var match$1 = min_key_rhs.contents;\n if (match !== void 0) {\n if (match$1 !== void 0) {\n return caml_string_compare(match, match$1);\n } else {\n return -1;\n }\n } else if (match$1 !== void 0) {\n return 1;\n } else {\n return 0;\n }\n}\nfunction caml_equal(a, b) {\n if (a === b) {\n return true;\n }\n var a_type = typeof a;\n if (a_type === \"string\" || a_type === \"number\" || a_type === \"boolean\" || a_type === \"undefined\" || a === null) {\n return false;\n }\n var b_type = typeof b;\n if (a_type === \"function\" || b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: functional value\",\n Error: new Error()\n };\n }\n if (b_type === \"number\" || b_type === \"undefined\" || b === null) {\n return false;\n }\n var tag_a = a.TAG | 0;\n var tag_b = b.TAG | 0;\n if (tag_a === 248) {\n return a[1] === b[1];\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n return false;\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len_a) {\n return true;\n }\n if (!caml_equal(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n } else if (a instanceof Date && b instanceof Date) {\n return !(a > b || a < b);\n } else {\n var result = {\n contents: true\n };\n var do_key_a = function(key) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) {\n result.contents = false;\n return;\n }\n };\n var do_key_b = function(key) {\n if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) {\n result.contents = false;\n return;\n }\n };\n for_in(a, do_key_a);\n if (result.contents) {\n for_in(b, do_key_b);\n }\n return result.contents;\n }\n } else {\n return false;\n }\n}\nfunction caml_lessthan(a, b) {\n return caml_compare(a, b) < 0;\n}\n\n// node_modules/rescript/lib/es6/js_int.js\nvar max = 2147483647;\nvar min = -2147483648;\n\n// node_modules/rescript/lib/es6/js_math.js\nfunction floor_int(f) {\n if (f > max) {\n return max;\n } else if (f < min) {\n return min;\n } else {\n return Math.floor(f);\n }\n}\nfunction random_int(min2, max2) {\n return floor_int(Math.random() * (max2 - min2 | 0)) + min2 | 0;\n}\n\n// node_modules/rescript/lib/es6/belt_Array.js\nfunction get2(arr, i) {\n if (i >= 0 && i < arr.length) {\n return some(arr[i]);\n }\n}\nfunction getExn(arr, i) {\n if (!(i >= 0 && i < arr.length)) {\n throw {\n RE_EXN_ID: \"Assert_failure\",\n _1: [\n \"belt_Array.ml\",\n 27,\n 4\n ],\n Error: new Error()\n };\n }\n return arr[i];\n}\nfunction swapUnsafe(xs, i, j) {\n var tmp = xs[i];\n xs[i] = xs[j];\n xs[j] = tmp;\n}\nfunction shuffleInPlace(xs) {\n var len = xs.length;\n for (var i = 0; i < len; ++i) {\n swapUnsafe(xs, i, random_int(i, len));\n }\n}\nfunction shuffle(xs) {\n var result = xs.slice(0);\n shuffleInPlace(result);\n return result;\n}\nfunction reverse(xs) {\n var len = xs.length;\n var result = new Array(len);\n for (var i = 0; i < len; ++i) {\n result[i] = xs[(len - 1 | 0) - i | 0];\n }\n return result;\n}\nfunction make(l, f) {\n if (l <= 0) {\n return [];\n }\n var res = new Array(l);\n for (var i = 0; i < l; ++i) {\n res[i] = f;\n }\n return res;\n}\nfunction makeByU(l, f) {\n if (l <= 0) {\n return [];\n }\n var res = new Array(l);\n for (var i = 0; i < l; ++i) {\n res[i] = f(i);\n }\n return res;\n}\nfunction range(start, finish) {\n var cut = finish - start | 0;\n if (cut < 0) {\n return [];\n }\n var arr = new Array(cut + 1 | 0);\n for (var i = 0; i <= cut; ++i) {\n arr[i] = start + i | 0;\n }\n return arr;\n}\nfunction rangeBy(start, finish, step) {\n var cut = finish - start | 0;\n if (cut < 0 || step <= 0) {\n return [];\n }\n var nb = (cut / step | 0) + 1 | 0;\n var arr = new Array(nb);\n var cur = start;\n for (var i = 0; i < nb; ++i) {\n arr[i] = cur;\n cur = cur + step | 0;\n }\n return arr;\n}\nfunction zip(xs, ys) {\n var lenx = xs.length;\n var leny = ys.length;\n var len = lenx < leny ? lenx : leny;\n var s = new Array(len);\n for (var i = 0; i < len; ++i) {\n s[i] = [\n xs[i],\n ys[i]\n ];\n }\n return s;\n}\nfunction zipByU(xs, ys, f) {\n var lenx = xs.length;\n var leny = ys.length;\n var len = lenx < leny ? lenx : leny;\n var s = new Array(len);\n for (var i = 0; i < len; ++i) {\n s[i] = f(xs[i], ys[i]);\n }\n return s;\n}\nfunction concat(a1, a2) {\n var l1 = a1.length;\n var l2 = a2.length;\n var a1a2 = new Array(l1 + l2 | 0);\n for (var i = 0; i < l1; ++i) {\n a1a2[i] = a1[i];\n }\n for (var i$1 = 0; i$1 < l2; ++i$1) {\n a1a2[l1 + i$1 | 0] = a2[i$1];\n }\n return a1a2;\n}\nfunction concatMany(arrs) {\n var lenArrs = arrs.length;\n var totalLen = 0;\n for (var i = 0; i < lenArrs; ++i) {\n totalLen = totalLen + arrs[i].length | 0;\n }\n var result = new Array(totalLen);\n totalLen = 0;\n for (var j = 0; j < lenArrs; ++j) {\n var cur = arrs[j];\n for (var k = 0, k_finish = cur.length; k < k_finish; ++k) {\n result[totalLen] = cur[k];\n totalLen = totalLen + 1 | 0;\n }\n }\n return result;\n}\nfunction slice(a, offset, len) {\n if (len <= 0) {\n return [];\n }\n var lena = a.length;\n var ofs = offset < 0 ? caml_int_max(lena + offset | 0, 0) : offset;\n var hasLen = lena - ofs | 0;\n var copyLength = hasLen < len ? hasLen : len;\n if (copyLength <= 0) {\n return [];\n }\n var result = new Array(copyLength);\n for (var i = 0; i < copyLength; ++i) {\n result[i] = a[ofs + i | 0];\n }\n return result;\n}\nfunction sliceToEnd(a, offset) {\n var lena = a.length;\n var ofs = offset < 0 ? caml_int_max(lena + offset | 0, 0) : offset;\n var len = lena - ofs | 0;\n var result = new Array(len);\n for (var i = 0; i < len; ++i) {\n result[i] = a[ofs + i | 0];\n }\n return result;\n}\nfunction blitUnsafe(a1, srcofs1, a2, srcofs2, blitLength) {\n if (srcofs2 <= srcofs1) {\n for (var j = 0; j < blitLength; ++j) {\n a2[j + srcofs2 | 0] = a1[j + srcofs1 | 0];\n }\n return;\n }\n for (var j$1 = blitLength - 1 | 0; j$1 >= 0; --j$1) {\n a2[j$1 + srcofs2 | 0] = a1[j$1 + srcofs1 | 0];\n }\n}\nfunction forEachU(a, f) {\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n f(a[i]);\n }\n}\nfunction mapU(a, f) {\n var l = a.length;\n var r = new Array(l);\n for (var i = 0; i < l; ++i) {\n r[i] = f(a[i]);\n }\n return r;\n}\nfunction getByU(a, p) {\n var l = a.length;\n var i = 0;\n var r;\n while (r === void 0 && i < l) {\n var v = a[i];\n if (p(v)) {\n r = some(v);\n }\n i = i + 1 | 0;\n }\n ;\n return r;\n}\nfunction getIndexByU(a, p) {\n var l = a.length;\n var i = 0;\n var r;\n while (r === void 0 && i < l) {\n var v = a[i];\n if (p(v)) {\n r = i;\n }\n i = i + 1 | 0;\n }\n ;\n return r;\n}\nfunction keepMapU(a, f) {\n var l = a.length;\n var r = new Array(l);\n var j = 0;\n for (var i = 0; i < l; ++i) {\n var v = a[i];\n var v$1 = f(v);\n if (v$1 !== void 0) {\n r[j] = valFromOption(v$1);\n j = j + 1 | 0;\n }\n }\n r.length = j;\n return r;\n}\nfunction forEachWithIndexU(a, f) {\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n f(i, a[i]);\n }\n}\nfunction mapWithIndexU(a, f) {\n var l = a.length;\n var r = new Array(l);\n for (var i = 0; i < l; ++i) {\n r[i] = f(i, a[i]);\n }\n return r;\n}\nfunction reduceU(a, x, f) {\n var r = x;\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n r = f(r, a[i]);\n }\n return r;\n}\nfunction reduceReverseU(a, x, f) {\n var r = x;\n for (var i = a.length - 1 | 0; i >= 0; --i) {\n r = f(r, a[i]);\n }\n return r;\n}\nfunction reduceWithIndexU(a, x, f) {\n var r = x;\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n r = f(r, a[i], i);\n }\n return r;\n}\nfunction everyU(arr, b) {\n var len = arr.length;\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len) {\n return true;\n }\n if (!b(arr[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n}\nfunction someU(arr, b) {\n var len = arr.length;\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len) {\n return false;\n }\n if (b(arr[i])) {\n return true;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n}\nfunction everyAux2(arr1, arr2, _i, b, len) {\n while (true) {\n var i = _i;\n if (i === len) {\n return true;\n }\n if (!b(arr1[i], arr2[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n}\nfunction eqU(a, b, p) {\n var lena = a.length;\n var lenb = b.length;\n if (lena === lenb) {\n return everyAux2(a, b, 0, p, lena);\n } else {\n return false;\n }\n}\nfunction partitionU(a, f) {\n var l = a.length;\n var i = 0;\n var j = 0;\n var a1 = new Array(l);\n var a2 = new Array(l);\n for (var ii = 0; ii < l; ++ii) {\n var v = a[ii];\n if (f(v)) {\n a1[i] = v;\n i = i + 1 | 0;\n } else {\n a2[j] = v;\n j = j + 1 | 0;\n }\n }\n a1.length = i;\n a2.length = j;\n return [\n a1,\n a2\n ];\n}\nfunction unzip(a) {\n var l = a.length;\n var a1 = new Array(l);\n var a2 = new Array(l);\n for (var i = 0; i < l; ++i) {\n var match = a[i];\n a1[i] = match[0];\n a2[i] = match[1];\n }\n return [\n a1,\n a2\n ];\n}\n\n// node_modules/rescript/lib/es6/belt_SortArray.js\nfunction merge(src, src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs, cmp) {\n var src1r = src1ofs + src1len | 0;\n var src2r = src2ofs + src2len | 0;\n var _i1 = src1ofs;\n var _s1 = src[src1ofs];\n var _i2 = src2ofs;\n var _s2 = src2[src2ofs];\n var _d = dstofs;\n while (true) {\n var d = _d;\n var s2 = _s2;\n var i2 = _i2;\n var s1 = _s1;\n var i1 = _i1;\n if (cmp(s1, s2) <= 0) {\n dst[d] = s1;\n var i1$1 = i1 + 1 | 0;\n if (i1$1 >= src1r) {\n return blitUnsafe(src2, i2, dst, d + 1 | 0, src2r - i2 | 0);\n }\n _d = d + 1 | 0;\n _s1 = src[i1$1];\n _i1 = i1$1;\n continue;\n }\n dst[d] = s2;\n var i2$1 = i2 + 1 | 0;\n if (i2$1 >= src2r) {\n return blitUnsafe(src, i1, dst, d + 1 | 0, src1r - i1 | 0);\n }\n _d = d + 1 | 0;\n _s2 = src2[i2$1];\n _i2 = i2$1;\n continue;\n }\n ;\n}\nfunction insertionSort(src, srcofs, dst, dstofs, len, cmp) {\n for (var i = 0; i < len; ++i) {\n var e = src[srcofs + i | 0];\n var j = (dstofs + i | 0) - 1 | 0;\n while (j >= dstofs && cmp(dst[j], e) > 0) {\n dst[j + 1 | 0] = dst[j];\n j = j - 1 | 0;\n }\n ;\n dst[j + 1 | 0] = e;\n }\n}\nfunction sortTo(src, srcofs, dst, dstofs, len, cmp) {\n if (len <= 5) {\n return insertionSort(src, srcofs, dst, dstofs, len, cmp);\n }\n var l1 = len / 2 | 0;\n var l2 = len - l1 | 0;\n sortTo(src, srcofs + l1 | 0, dst, dstofs + l1 | 0, l2, cmp);\n sortTo(src, srcofs, src, srcofs + l2 | 0, l1, cmp);\n return merge(src, srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs, cmp);\n}\nfunction stableSortInPlaceByU(a, cmp) {\n var l = a.length;\n if (l <= 5) {\n return insertionSort(a, 0, a, 0, l, cmp);\n }\n var l1 = l / 2 | 0;\n var l2 = l - l1 | 0;\n var t = new Array(l2);\n sortTo(a, l1, t, 0, l2, cmp);\n sortTo(a, 0, a, l2, l1, cmp);\n return merge(a, l2, l1, t, 0, l2, a, 0, cmp);\n}\nfunction stableSortByU(a, cmp) {\n var b = a.slice(0);\n stableSortInPlaceByU(b, cmp);\n return b;\n}\n\n// src/Array/Array.bs.js\nfunction placeholder(param) {\n}\nfunction makeEmpty(param) {\n return [];\n}\nvar _makeWithIndex = makeByU;\nfunction makeWithIndex() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _makeWithIndex(data, args[0]);\n };\n }\n return _makeWithIndex(arguments[0], arguments[1]);\n}\nvar _make = make;\nfunction make2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _make(data, args[0]);\n };\n }\n return _make(arguments[0], arguments[1]);\n}\nvar _repeat = make;\nfunction repeat() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _repeat(data, args[0]);\n };\n }\n return _repeat(arguments[0], arguments[1]);\n}\nfunction length(xs) {\n return xs.length;\n}\nfunction isEmpty(xs) {\n return xs.length === 0;\n}\nfunction isNotEmpty(xs) {\n return xs.length !== 0;\n}\nvar reverse2 = reverse;\nfunction _append(xs, element) {\n return concat(xs, [element]);\n}\nfunction append() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _append(data, args[0]);\n };\n }\n return _append(arguments[0], arguments[1]);\n}\nfunction _prepend(xs, element) {\n return concat([element], xs);\n}\nfunction prepend() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _prepend(data, args[0]);\n };\n }\n return _prepend(arguments[0], arguments[1]);\n}\nfunction _prependToAll(xs, delimiter) {\n return reduceU(xs, [], function(acc, value) {\n return concat(acc, [\n delimiter,\n value\n ]);\n });\n}\nfunction prependToAll() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _prependToAll(data, args[0]);\n };\n }\n return _prependToAll(arguments[0], arguments[1]);\n}\nfunction _intersperse(xs, delimiter) {\n return reduceWithIndexU(xs, [], function(acc, value, index) {\n if ((xs.length - 1 | 0) === index) {\n acc.push(value);\n } else {\n acc.push(value, delimiter);\n }\n return acc;\n });\n}\nfunction intersperse() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _intersperse(data, args[0]);\n };\n }\n return _intersperse(arguments[0], arguments[1]);\n}\nvar _get = get2;\nfunction get3() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _get(data, args[0]);\n };\n }\n return _get(arguments[0], arguments[1]);\n}\nvar _at = get2;\nfunction at() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _at(data, args[0]);\n };\n }\n return _at(arguments[0], arguments[1]);\n}\nfunction _getUnsafe(xs, index) {\n return xs[index];\n}\nfunction getUnsafe() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getUnsafe(data, args[0]);\n };\n }\n return _getUnsafe(arguments[0], arguments[1]);\n}\nfunction _getUndefined(xs, index) {\n return xs[index];\n}\nfunction getUndefined() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getUndefined(data, args[0]);\n };\n }\n return _getUndefined(arguments[0], arguments[1]);\n}\nvar _getBy = getByU;\nfunction getBy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getBy(data, args[0]);\n };\n }\n return _getBy(arguments[0], arguments[1]);\n}\nvar _find = getByU;\nfunction find() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _find(data, args[0]);\n };\n }\n return _find(arguments[0], arguments[1]);\n}\nfunction head(xs) {\n return get2(xs, 0);\n}\nfunction last(xs) {\n var l = xs.length;\n if (l === 0) {\n return;\n } else {\n return get2(xs, l - 1 | 0);\n }\n}\nfunction tail(xs) {\n var l = xs.length;\n if (l === 1) {\n return [];\n }\n if (l === 0) {\n return;\n }\n var xs$1 = sliceToEnd(xs, 1);\n if (xs$1.length !== 0) {\n return xs$1;\n }\n}\nfunction tailOrEmpty(xs) {\n var xs$1 = tail(xs);\n if (xs$1 !== void 0) {\n return xs$1;\n } else {\n return [];\n }\n}\nfunction init(xs) {\n var l = xs.length;\n if (l === 0) {\n return;\n } else {\n return slice(xs, 0, l - 1 | 0);\n }\n}\nfunction initOrEmpty(xs) {\n var xs$1 = init(xs);\n if (xs$1 !== void 0) {\n return xs$1;\n } else {\n return [];\n }\n}\nfunction _take(xs, n) {\n var l = xs.length;\n var len = n < 0 ? 0 : l < n ? l : n;\n return slice(xs, 0, len);\n}\nfunction take() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _take(data, args[0]);\n };\n }\n return _take(arguments[0], arguments[1]);\n}\nfunction _takeExactly(xs, n) {\n if (n < 0 || n > xs.length) {\n return;\n } else {\n return slice(xs, 0, n);\n }\n}\nfunction takeExactly() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _takeExactly(data, args[0]);\n };\n }\n return _takeExactly(arguments[0], arguments[1]);\n}\nfunction _takeWhile(xs, predicateFn) {\n return reduceU(xs, [], function(acc, element) {\n if (predicateFn(element)) {\n acc.push(element);\n }\n return acc;\n });\n}\nfunction takeWhile() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _takeWhile(data, args[0]);\n };\n }\n return _takeWhile(arguments[0], arguments[1]);\n}\nfunction _drop(xs, n) {\n var l = xs.length;\n var start = n < 0 ? 0 : l < n ? l : n;\n return sliceToEnd(xs, start);\n}\nfunction drop() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _drop(data, args[0]);\n };\n }\n return _drop(arguments[0], arguments[1]);\n}\nfunction _dropExactly(xs, n) {\n if (n < 0 || n > xs.length) {\n return;\n } else {\n return sliceToEnd(xs, n);\n }\n}\nfunction dropExactly() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _dropExactly(data, args[0]);\n };\n }\n return _dropExactly(arguments[0], arguments[1]);\n}\nfunction _dropWhile(xs, predicateFn) {\n return reduceU(xs, [], function(acc, element) {\n if (!predicateFn(element)) {\n acc.push(element);\n }\n return acc;\n });\n}\nfunction dropWhile() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _dropWhile(data, args[0]);\n };\n }\n return _dropWhile(arguments[0], arguments[1]);\n}\nfunction uncons(xs) {\n if (xs.length !== 0) {\n return [\n getExn(xs, 0),\n sliceToEnd(xs, 1)\n ];\n }\n}\nfunction _map(xs, mapFn) {\n return mapU(xs, mapFn);\n}\nfunction map() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _map(data, args[0]);\n };\n }\n return _map(arguments[0], arguments[1]);\n}\nvar _mapWithIndex = mapWithIndexU;\nfunction mapWithIndex() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _mapWithIndex(data, args[0]);\n };\n }\n return _mapWithIndex(arguments[0], arguments[1]);\n}\nfunction _filter(xs, predicateFn) {\n var index = 0;\n var arr = [];\n while (index < xs.length) {\n var value = xs[index];\n if (predicateFn(value)) {\n arr.push(value);\n }\n index = index + 1 | 0;\n }\n ;\n return arr;\n}\nfunction filter() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filter(data, args[0]);\n };\n }\n return _filter(arguments[0], arguments[1]);\n}\nvar keep = filter;\nfunction _filterWithIndex(xs, predicateFn) {\n var index = 0;\n var arr = [];\n while (index < xs.length) {\n var value = xs[index];\n if (predicateFn(index, value)) {\n arr.push(value);\n }\n index = index + 1 | 0;\n }\n ;\n return arr;\n}\nfunction filterWithIndex() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filterWithIndex(data, args[0]);\n };\n }\n return _filterWithIndex(arguments[0], arguments[1]);\n}\nvar keepWithIndex = filterWithIndex;\nfunction _reject(xs, predicateFn) {\n return filter(xs, function(el) {\n return !predicateFn(el);\n });\n}\nfunction reject() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _reject(data, args[0]);\n };\n }\n return _reject(arguments[0], arguments[1]);\n}\nfunction _rejectWithIndex(xs, predicateFn) {\n return filterWithIndex(xs, function(index, el) {\n return !predicateFn(index, el);\n });\n}\nfunction rejectWithIndex() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _rejectWithIndex(data, args[0]);\n };\n }\n return _rejectWithIndex(arguments[0], arguments[1]);\n}\nvar _reduce = reduceU;\nfunction reduce() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _reduce(data, args[0], args[1]);\n };\n }\n return _reduce(arguments[0], arguments[1], arguments[2]);\n}\nvar _reduceReverse = reduceReverseU;\nfunction reduceReverse() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _reduceReverse(data, args[0], args[1]);\n };\n }\n return _reduceReverse(arguments[0], arguments[1], arguments[2]);\n}\nvar _reduceWithIndex = reduceWithIndexU;\nfunction reduceWithIndex() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _reduceWithIndex(data, args[0], args[1]);\n };\n }\n return _reduceWithIndex(arguments[0], arguments[1], arguments[2]);\n}\nfunction _splitAt(xs, offset) {\n if (offset < 0 || offset > xs.length) {\n return;\n } else {\n return [\n slice(xs, 0, offset),\n sliceToEnd(xs, offset)\n ];\n }\n}\nfunction splitAt() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _splitAt(data, args[0]);\n };\n }\n return _splitAt(arguments[0], arguments[1]);\n}\nfunction _splitEvery(xs, size) {\n if (size < 1 || xs.length <= size) {\n return [xs];\n }\n var offset = 0;\n var arr = [];\n while (offset < xs.length) {\n var len = offset + size | 0;\n arr.push(slice(xs, offset, size));\n offset = len;\n }\n ;\n return arr;\n}\nfunction splitEvery() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _splitEvery(data, args[0]);\n };\n }\n return _splitEvery(arguments[0], arguments[1]);\n}\nvar shuffle2 = shuffle;\nvar _partition = partitionU;\nfunction partition() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _partition(data, args[0]);\n };\n }\n return _partition(arguments[0], arguments[1]);\n}\nvar _concat = concat;\nfunction concat2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _concat(data, args[0]);\n };\n }\n return _concat(arguments[0], arguments[1]);\n}\nvar concatMany2 = concatMany;\nvar _every = everyU;\nfunction every() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _every(data, args[0]);\n };\n }\n return _every(arguments[0], arguments[1]);\n}\nvar _some = someU;\nfunction some2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _some(data, args[0]);\n };\n }\n return _some(arguments[0], arguments[1]);\n}\nvar _slice = slice;\nfunction slice2() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _slice(data, args[0], args[1]);\n };\n }\n return _slice(arguments[0], arguments[1], arguments[2]);\n}\nvar _sliceToEnd = sliceToEnd;\nfunction sliceToEnd2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _sliceToEnd(data, args[0]);\n };\n }\n return _sliceToEnd(arguments[0], arguments[1]);\n}\nvar _eq = eqU;\nfunction eq() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _eq(data, args[0], args[1]);\n };\n }\n return _eq(arguments[0], arguments[1], arguments[2]);\n}\nvar _range = range;\nfunction range2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _range(data, args[0]);\n };\n }\n return _range(arguments[0], arguments[1]);\n}\nvar _rangeBy = rangeBy;\nfunction rangeBy2() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _rangeBy(data, args[0], args[1]);\n };\n }\n return _rangeBy(arguments[0], arguments[1], arguments[2]);\n}\nfunction copy(xs) {\n return xs.slice(0);\n}\nvar _zip = zip;\nfunction zip2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _zip(data, args[0]);\n };\n }\n return _zip(arguments[0], arguments[1]);\n}\nvar _zipWith = zipByU;\nfunction zipWith() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _zipWith(data, args[0], args[1]);\n };\n }\n return _zipWith(arguments[0], arguments[1], arguments[2]);\n}\nvar unzip2 = unzip;\nfunction _replaceAt(xs, targetIndex, element) {\n return mapWithIndexU(xs, function(currentIndex, current) {\n if (currentIndex === targetIndex) {\n return element;\n } else {\n return current;\n }\n });\n}\nfunction replaceAt() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _replaceAt(data, args[0], args[1]);\n };\n }\n return _replaceAt(arguments[0], arguments[1], arguments[2]);\n}\nfunction _insertAt(xs, targetIndex, element) {\n var match = splitAt(xs, targetIndex);\n if (match !== void 0) {\n return concat(match[0], concat([element], match[1]));\n } else {\n return xs;\n }\n}\nfunction insertAt() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _insertAt(data, args[0], args[1]);\n };\n }\n return _insertAt(arguments[0], arguments[1], arguments[2]);\n}\nfunction _updateAt(xs, targetIndex, fn) {\n return mapWithIndexU(xs, function(index, el) {\n if (index === targetIndex) {\n return fn(el);\n } else {\n return el;\n }\n });\n}\nfunction updateAt() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _updateAt(data, args[0], args[1]);\n };\n }\n return _updateAt(arguments[0], arguments[1], arguments[2]);\n}\nfunction _swapAt(xs, targetIndex, swapIndex) {\n var match = get2(xs, targetIndex);\n var match$1 = get2(xs, swapIndex);\n if (match === void 0) {\n return xs;\n }\n if (match$1 === void 0) {\n return xs;\n }\n var b = valFromOption(match$1);\n var a = valFromOption(match);\n return mapWithIndexU(xs, function(k, x) {\n if (targetIndex === k) {\n return b;\n } else if (swapIndex === k) {\n return a;\n } else {\n return x;\n }\n });\n}\nfunction swapAt() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _swapAt(data, args[0], args[1]);\n };\n }\n return _swapAt(arguments[0], arguments[1], arguments[2]);\n}\nfunction _removeAt(xs, targetIndex) {\n return filterWithIndex(xs, function(index, param) {\n return index !== targetIndex;\n });\n}\nfunction removeAt() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _removeAt(data, args[0]);\n };\n }\n return _removeAt(arguments[0], arguments[1]);\n}\nfunction _uniqBy(xs, uniqFn) {\n var index = 0;\n var arr = [];\n while (index < xs.length) {\n var value = xs[index];\n var alreadyAdded = someU(arr, function(value2) {\n return function(x) {\n return caml_equal(uniqFn(x), uniqFn(value2));\n };\n }(value));\n if (!alreadyAdded) {\n arr.push(value);\n }\n index = index + 1 | 0;\n }\n ;\n return arr;\n}\nfunction uniqBy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _uniqBy(data, args[0]);\n };\n }\n return _uniqBy(arguments[0], arguments[1]);\n}\nfunction uniq(xs) {\n return uniqBy(xs, function(element) {\n return element;\n });\n}\nvar _forEach = forEachU;\nfunction forEach() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _forEach(data, args[0]);\n };\n }\n return _forEach(arguments[0], arguments[1]);\n}\nvar _forEachWithIndex = forEachWithIndexU;\nfunction forEachWithIndex() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _forEachWithIndex(data, args[0]);\n };\n }\n return _forEachWithIndex(arguments[0], arguments[1]);\n}\nvar _getIndexBy = getIndexByU;\nfunction getIndexBy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getIndexBy(data, args[0]);\n };\n }\n return _getIndexBy(arguments[0], arguments[1]);\n}\nfunction _includes(xs, value) {\n return someU(xs, function(x) {\n return caml_equal(x, value);\n });\n}\nfunction includes() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _includes(data, args[0]);\n };\n }\n return _includes(arguments[0], arguments[1]);\n}\nfunction _join(xs, delimiter) {\n return xs.join(delimiter);\n}\nfunction join() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _join(data, args[0]);\n };\n }\n return _join(arguments[0], arguments[1]);\n}\nvar _sort = stableSortByU;\nfunction sort() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _sort(data, args[0]);\n };\n }\n return _sort(arguments[0], arguments[1]);\n}\nfunction _sortBy(xs, sortFn) {\n return stableSortByU(xs, function(a, b) {\n var a$1 = sortFn(a);\n var b$1 = sortFn(b);\n if (a$1 === b$1) {\n return 0;\n } else if (caml_lessthan(a$1, b$1)) {\n return -1;\n } else {\n return 1;\n }\n });\n}\nfunction sortBy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _sortBy(data, args[0]);\n };\n }\n return _sortBy(arguments[0], arguments[1]);\n}\nfunction _groupBy(xs, groupFn) {\n return reduceU(xs, {}, function(acc, element) {\n var key = groupFn(element);\n var value = get(acc, key);\n if (value !== void 0) {\n value.push(element);\n } else {\n acc[key] = [element];\n }\n return acc;\n });\n}\nfunction groupBy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _groupBy(data, args[0]);\n };\n }\n return _groupBy(arguments[0], arguments[1]);\n}\nfunction flat(xs) {\n return reduceU(xs, [], function(acc, value) {\n if (Array.isArray(value)) {\n forEachU(value, function(element) {\n acc.push(element);\n });\n } else {\n acc.push(value);\n }\n return acc;\n });\n}\nfunction _flatten(xs, arr) {\n var index = 0;\n while (index < xs.length) {\n var value = xs[index];\n if (Array.isArray(value)) {\n flatten(value, arr);\n } else {\n arr.push(value);\n }\n index = index + 1 | 0;\n }\n ;\n return arr;\n}\nfunction flatten() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _flatten(data, args[0]);\n };\n }\n return _flatten(arguments[0], arguments[1]);\n}\nfunction deepFlat(xs) {\n return flatten(xs, []);\n}\nfunction toTuple(xs) {\n return xs;\n}\nfunction _tap(xs, fn) {\n forEachU(xs, fn);\n return xs;\n}\nfunction tap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tap(data, args[0]);\n };\n }\n return _tap(arguments[0], arguments[1]);\n}\nfunction flip(xs) {\n return [\n xs[1],\n xs[0]\n ];\n}\nvar _filterMap = keepMapU;\nfunction filterMap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filterMap(data, args[0]);\n };\n }\n return _filterMap(arguments[0], arguments[1]);\n}\nvar _keepMap = keepMapU;\nfunction keepMap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _keepMap(data, args[0]);\n };\n }\n return _keepMap(arguments[0], arguments[1]);\n}\nfunction _removeFirstBy(xs, value, predicateFn) {\n return reduceU(xs, [\n false,\n []\n ], function(acc, v) {\n var ys = acc[1];\n if (acc[0]) {\n ys.push(v);\n return [\n true,\n ys\n ];\n } else if (predicateFn(v, value)) {\n return [\n true,\n ys\n ];\n } else {\n ys.push(v);\n return [\n false,\n ys\n ];\n }\n })[1];\n}\nfunction removeFirstBy() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _removeFirstBy(data, args[0], args[1]);\n };\n }\n return _removeFirstBy(arguments[0], arguments[1], arguments[2]);\n}\nfunction _removeFirst(xs, value) {\n return removeFirstBy(xs, value, caml_equal);\n}\nfunction removeFirst() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _removeFirst(data, args[0]);\n };\n }\n return _removeFirst(arguments[0], arguments[1]);\n}\nfunction zipWithIndex(xs) {\n return reduceWithIndexU(xs, [], function(acc, value, index) {\n acc.push([\n value,\n index\n ]);\n return acc;\n });\n}\nfunction _all(xs, predicateFn) {\n return everyU(xs, predicateFn);\n}\nfunction all() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _all(data, args[0]);\n };\n }\n return _all(arguments[0], arguments[1]);\n}\nfunction _any(xs, predicateFn) {\n return someU(xs, predicateFn);\n}\nfunction any() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _any(data, args[0]);\n };\n }\n return _any(arguments[0], arguments[1]);\n}\nfunction _difference(xs, ys) {\n return reject(uniqBy(xs, function(element) {\n return element;\n }), function(value) {\n return includes(ys, value);\n });\n}\nfunction difference() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _difference(data, args[0]);\n };\n }\n return _difference(arguments[0], arguments[1]);\n}\nfunction _union(xs, ys) {\n var xs$1 = concat(xs, ys);\n return uniqBy(xs$1, function(element) {\n return element;\n });\n}\nfunction union() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _union(data, args[0]);\n };\n }\n return _union(arguments[0], arguments[1]);\n}\nfunction _intersection(xs, ys) {\n var match = xs.length > ys.length ? [\n xs,\n ys\n ] : [\n ys,\n xs\n ];\n var ys$1 = match[1];\n var xs$1 = filter(match[0], function(value) {\n return includes(ys$1, value);\n });\n return uniqBy(xs$1, function(element) {\n return element;\n });\n}\nfunction intersection() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _intersection(data, args[0]);\n };\n }\n return _intersection(arguments[0], arguments[1]);\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Result/index.js\n__export(exports, {\n Error: () => Error2,\n Ok: () => Ok,\n catchError: () => catchError,\n flatMap: () => flatMap2,\n flip: () => flip,\n fromExecution: () => fromExecution,\n fromFalsy: () => fromFalsy,\n fromNullable: () => fromNullable,\n fromPredicate: () => fromPredicate,\n fromPromise: () => fromPromise,\n getExn: () => getExn2,\n getWithDefault: () => getWithDefault2,\n handleError: () => handleError,\n isError: () => isError2,\n isOk: () => isOk2,\n map: () => map,\n mapError: () => mapError,\n mapWithDefault: () => mapWithDefault,\n match: () => match,\n placeholder: () => placeholder,\n recover: () => recover,\n tap: () => tap,\n tapError: () => tapError,\n toNullable: () => toNullable,\n toOption: () => toOption,\n toUndefined: () => toUndefined\n});\n\n// node_modules/rescript/lib/es6/caml_array.js\nfunction sub(x, offset, len) {\n var result = new Array(len);\n var j = 0;\n var i = offset;\n while (j < len) {\n result[j] = x[i];\n j = j + 1 | 0;\n i = i + 1 | 0;\n }\n ;\n return result;\n}\n\n// node_modules/rescript/lib/es6/curry.js\nfunction app(_f, _args) {\n while (true) {\n var args = _args;\n var f = _f;\n var init_arity = f.length;\n var arity = init_arity === 0 ? 1 : init_arity;\n var len = args.length;\n var d = arity - len | 0;\n if (d === 0) {\n return f.apply(null, args);\n }\n if (d >= 0) {\n return function(f2, args2) {\n return function(x) {\n return app(f2, args2.concat([x]));\n };\n }(f, args);\n }\n _args = sub(args, arity, -d | 0);\n _f = f.apply(null, sub(args, 0, arity));\n continue;\n }\n ;\n}\nfunction _1(o, a0) {\n var arity = o.length;\n if (arity === 1) {\n return o(a0);\n } else {\n switch (arity) {\n case 1:\n return o(a0);\n case 2:\n return function(param) {\n return o(a0, param);\n };\n case 3:\n return function(param, param$1) {\n return o(a0, param, param$1);\n };\n case 4:\n return function(param, param$1, param$2) {\n return o(a0, param, param$1, param$2);\n };\n case 5:\n return function(param, param$1, param$2, param$3) {\n return o(a0, param, param$1, param$2, param$3);\n };\n case 6:\n return function(param, param$1, param$2, param$3, param$4) {\n return o(a0, param, param$1, param$2, param$3, param$4);\n };\n case 7:\n return function(param, param$1, param$2, param$3, param$4, param$5) {\n return o(a0, param, param$1, param$2, param$3, param$4, param$5);\n };\n default:\n return app(o, [a0]);\n }\n }\n}\nfunction __1(o) {\n var arity = o.length;\n if (arity === 1) {\n return o;\n } else {\n return function(a0) {\n return _1(o, a0);\n };\n }\n}\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\n\n// node_modules/rescript/lib/es6/caml_exceptions.js\nvar id = {\n contents: 0\n};\nfunction create(str) {\n id.contents = id.contents + 1 | 0;\n return str + (\"/\" + id.contents);\n}\nfunction caml_is_extension(e) {\n if (e == null) {\n return false;\n } else {\n return typeof e.RE_EXN_ID === \"string\";\n }\n}\n\n// node_modules/rescript/lib/es6/caml_js_exceptions.js\nvar $$Error = /* @__PURE__ */ create(\"Caml_js_exceptions.Error\");\nfunction internalToOCamlException(e) {\n if (caml_is_extension(e)) {\n return e;\n } else {\n return {\n RE_EXN_ID: $$Error,\n _1: e\n };\n }\n}\n\n// node_modules/rescript/lib/es6/js_exn.js\nvar $$Error$1 = $$Error;\n\n// node_modules/rescript/lib/es6/belt_Result.js\nfunction getExn(x) {\n if (x.TAG === 0) {\n return x._0;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n}\nfunction mapWithDefaultU(opt, $$default, f) {\n if (opt.TAG === 0) {\n return f(opt._0);\n } else {\n return $$default;\n }\n}\nfunction mapU(opt, f) {\n if (opt.TAG === 0) {\n return {\n TAG: 0,\n _0: f(opt._0)\n };\n } else {\n return {\n TAG: 1,\n _0: opt._0\n };\n }\n}\nfunction flatMapU(opt, f) {\n if (opt.TAG === 0) {\n return f(opt._0);\n } else {\n return {\n TAG: 1,\n _0: opt._0\n };\n }\n}\nfunction flatMap(opt, f) {\n return flatMapU(opt, __1(f));\n}\nfunction getWithDefault(opt, $$default) {\n if (opt.TAG === 0) {\n return opt._0;\n } else {\n return $$default;\n }\n}\nfunction isOk(param) {\n if (param.TAG === 0) {\n return true;\n } else {\n return false;\n }\n}\nfunction isError(param) {\n if (param.TAG === 0) {\n return false;\n } else {\n return true;\n }\n}\n\n// src/Result/Result.bs.js\nfunction placeholder(param) {\n}\nfunction _fromNullable(value, errorValue) {\n if (value == null) {\n return {\n TAG: 1,\n _0: errorValue\n };\n } else {\n return {\n TAG: 0,\n _0: value\n };\n }\n}\nfunction fromNullable() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _fromNullable(data, args[0]);\n };\n }\n return _fromNullable(arguments[0], arguments[1]);\n}\nfunction _fromFalsy(value, errorValue) {\n if (value) {\n return {\n TAG: 0,\n _0: value\n };\n } else {\n return {\n TAG: 1,\n _0: errorValue\n };\n }\n}\nfunction fromFalsy() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _fromFalsy(data, args[0]);\n };\n }\n return _fromFalsy(arguments[0], arguments[1]);\n}\nfunction _fromPredicate(value, predicateFn, errorValue) {\n return flatMap(fromNullable(value, errorValue), function(value2) {\n if (predicateFn(value2)) {\n return {\n TAG: 0,\n _0: value2\n };\n } else {\n return {\n TAG: 1,\n _0: errorValue\n };\n }\n });\n}\nfunction fromPredicate() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _fromPredicate(data, args[0], args[1]);\n };\n }\n return _fromPredicate(arguments[0], arguments[1], arguments[2]);\n}\nfunction fromExecution(fn) {\n try {\n return {\n TAG: 0,\n _0: fn(void 0)\n };\n } catch (raw_err) {\n var err = internalToOCamlException(raw_err);\n if (err.RE_EXN_ID === $$Error$1) {\n return {\n TAG: 1,\n _0: err._1\n };\n }\n throw err;\n }\n}\nfunction fromPromise(promise) {\n var __x = promise.then(function(value) {\n return Promise.resolve({\n TAG: 0,\n _0: value\n });\n });\n return __x.catch(function(err) {\n return Promise.resolve({\n TAG: 1,\n _0: err\n });\n });\n}\nvar _map = mapU;\nfunction map() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _map(data, args[0]);\n };\n }\n return _map(arguments[0], arguments[1]);\n}\nvar _mapWithDefault = mapWithDefaultU;\nfunction mapWithDefault() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _mapWithDefault(data, args[0], args[1]);\n };\n }\n return _mapWithDefault(arguments[0], arguments[1], arguments[2]);\n}\nvar _flatMap = flatMapU;\nfunction flatMap2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _flatMap(data, args[0]);\n };\n }\n return _flatMap(arguments[0], arguments[1]);\n}\nvar getExn2 = getExn;\nvar _getWithDefault = getWithDefault;\nfunction getWithDefault2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getWithDefault(data, args[0]);\n };\n }\n return _getWithDefault(arguments[0], arguments[1]);\n}\nfunction toUndefined(result) {\n return getWithDefault(result, void 0);\n}\nfunction toNullable(result) {\n return getWithDefault(result, null);\n}\nfunction toOption(result) {\n if (result.TAG === 0) {\n return some(result._0);\n }\n}\nfunction _match(result, okFn, errorFn) {\n if (result.TAG === 0) {\n return okFn(result._0);\n } else {\n return errorFn(result._0);\n }\n}\nfunction match() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _match(data, args[0], args[1]);\n };\n }\n return _match(arguments[0], arguments[1], arguments[2]);\n}\nvar isError2 = isError;\nvar isOk2 = isOk;\nfunction _tap(result, okFn) {\n if (result.TAG !== 0) {\n return result;\n }\n okFn(result._0);\n return result;\n}\nfunction tap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tap(data, args[0]);\n };\n }\n return _tap(arguments[0], arguments[1]);\n}\nfunction _tapError(result, errorFn) {\n if (result.TAG === 0) {\n return result;\n }\n errorFn(result._0);\n return result;\n}\nfunction tapError() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tapError(data, args[0]);\n };\n }\n return _tapError(arguments[0], arguments[1]);\n}\nfunction _handleError(result, mapFn) {\n if (result.TAG === 0) {\n return result;\n } else {\n return {\n TAG: 0,\n _0: mapFn(result._0)\n };\n }\n}\nfunction handleError() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _handleError(data, args[0]);\n };\n }\n return _handleError(arguments[0], arguments[1]);\n}\nfunction _mapError(result, mapFn) {\n if (result.TAG === 0) {\n return result;\n } else {\n return {\n TAG: 1,\n _0: mapFn(result._0)\n };\n }\n}\nfunction mapError() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _mapError(data, args[0]);\n };\n }\n return _mapError(arguments[0], arguments[1]);\n}\nfunction _catchError(result, mapFn) {\n if (result.TAG === 0) {\n return result;\n } else {\n return mapFn(result._0);\n }\n}\nfunction catchError() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _catchError(data, args[0]);\n };\n }\n return _catchError(arguments[0], arguments[1]);\n}\nfunction _recover(result, defaultValue) {\n return catchError(result, function(param) {\n return {\n TAG: 0,\n _0: defaultValue\n };\n });\n}\nfunction recover() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _recover(data, args[0]);\n };\n }\n return _recover(arguments[0], arguments[1]);\n}\nfunction flip(result) {\n if (result.TAG === 0) {\n return {\n TAG: 1,\n _0: result._0\n };\n } else {\n return {\n TAG: 0,\n _0: result._0\n };\n }\n}\n\n// src/Result/index.js\nvar Ok = (value) => {\n return {\n TAG: 0,\n _0: value\n };\n};\nvar Error2 = (value) => {\n return {\n TAG: 1,\n _0: value\n };\n};\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Guards/index.js\n__export(exports, {\n is: () => is,\n isArray: () => isArray,\n isBoolean: () => isBoolean,\n isDate: () => isDate,\n isError: () => isError,\n isFunction: () => isFunction,\n isNot: () => isNot,\n isNotNullable: () => isNotNullable,\n isNull: () => isNull,\n isNullable: () => isNullable,\n isNumber: () => isNumber,\n isObject: () => isObject,\n isPromise: () => isPromise,\n isString: () => isString,\n isUndefined: () => isUndefined\n});\n\n// src/Guards/Guards.bs.js\nfunction _is(value, type_) {\n return typeof value === type_;\n}\nfunction is() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _is(data, args[0]);\n };\n }\n return _is(arguments[0], arguments[1]);\n}\nfunction isString(value) {\n return typeof value === \"string\";\n}\nfunction isNumber(value) {\n if (typeof value === \"number\") {\n return !Number.isNaN(value);\n } else {\n return false;\n }\n}\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\nvar isPromise = (value) => value instanceof Promise;\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isObject(value) {\n if (!!value && !Array.isArray(value)) {\n return typeof value === \"object\";\n } else {\n return false;\n }\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nvar isError = (value) => value instanceof Error;\nvar isDate = (value) => value instanceof Date;\nfunction isNullable(value) {\n return value == null;\n}\nfunction isNotNullable(value) {\n return !(value == null);\n}\nvar isNull = (value) => value === null;\nvar isUndefined = (value) => value === void 0;\nfunction _isNot(value, predicateFn) {\n return !predicateFn(value);\n}\nfunction isNot() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _isNot(data, args[0]);\n };\n }\n return _isNot(arguments[0], arguments[1]);\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Option/index.js\n__export(exports, {\n None: () => None,\n Some: () => Some,\n contains: () => contains,\n filter: () => filter,\n flatMap: () => flatMap2,\n fromExecution: () => fromExecution,\n fromFalsy: () => fromFalsy,\n fromNullable: () => fromNullable,\n fromPredicate: () => fromPredicate,\n fromPromise: () => fromPromise,\n getExn: () => getExn2,\n getWithDefault: () => getWithDefault2,\n isNone: () => isNone2,\n isSome: () => isSome2,\n map: () => map,\n mapNullable: () => mapNullable,\n mapWithDefault: () => mapWithDefault,\n match: () => match,\n placeholder: () => placeholder,\n tap: () => tap,\n toNullable: () => toNullable,\n toResult: () => toResult,\n toUndefined: () => toUndefined,\n zip: () => zip,\n zipWith: () => zipWith\n});\n\n// node_modules/rescript/lib/es6/caml_array.js\nfunction sub(x, offset, len) {\n var result = new Array(len);\n var j = 0;\n var i = offset;\n while (j < len) {\n result[j] = x[i];\n j = j + 1 | 0;\n i = i + 1 | 0;\n }\n ;\n return result;\n}\n\n// node_modules/rescript/lib/es6/curry.js\nfunction app(_f, _args) {\n while (true) {\n var args = _args;\n var f = _f;\n var init_arity = f.length;\n var arity = init_arity === 0 ? 1 : init_arity;\n var len = args.length;\n var d = arity - len | 0;\n if (d === 0) {\n return f.apply(null, args);\n }\n if (d >= 0) {\n return function(f2, args2) {\n return function(x) {\n return app(f2, args2.concat([x]));\n };\n }(f, args);\n }\n _args = sub(args, arity, -d | 0);\n _f = f.apply(null, sub(args, 0, arity));\n continue;\n }\n ;\n}\nfunction _1(o, a0) {\n var arity = o.length;\n if (arity === 1) {\n return o(a0);\n } else {\n switch (arity) {\n case 1:\n return o(a0);\n case 2:\n return function(param) {\n return o(a0, param);\n };\n case 3:\n return function(param, param$1) {\n return o(a0, param, param$1);\n };\n case 4:\n return function(param, param$1, param$2) {\n return o(a0, param, param$1, param$2);\n };\n case 5:\n return function(param, param$1, param$2, param$3) {\n return o(a0, param, param$1, param$2, param$3);\n };\n case 6:\n return function(param, param$1, param$2, param$3, param$4) {\n return o(a0, param, param$1, param$2, param$3, param$4);\n };\n case 7:\n return function(param, param$1, param$2, param$3, param$4, param$5) {\n return o(a0, param, param$1, param$2, param$3, param$4, param$5);\n };\n default:\n return app(o, [a0]);\n }\n }\n}\nfunction __1(o) {\n var arity = o.length;\n if (arity === 1) {\n return o;\n } else {\n return function(a0) {\n return _1(o, a0);\n };\n }\n}\n\n// node_modules/rescript/lib/es6/caml_obj.js\nvar for_in = function(o, foo) {\n for (var x in o) {\n foo(x);\n }\n};\nfunction caml_equal(a, b) {\n if (a === b) {\n return true;\n }\n var a_type = typeof a;\n if (a_type === \"string\" || a_type === \"number\" || a_type === \"boolean\" || a_type === \"undefined\" || a === null) {\n return false;\n }\n var b_type = typeof b;\n if (a_type === \"function\" || b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: functional value\",\n Error: new Error()\n };\n }\n if (b_type === \"number\" || b_type === \"undefined\" || b === null) {\n return false;\n }\n var tag_a = a.TAG | 0;\n var tag_b = b.TAG | 0;\n if (tag_a === 248) {\n return a[1] === b[1];\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n return false;\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len_a) {\n return true;\n }\n if (!caml_equal(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n } else if (a instanceof Date && b instanceof Date) {\n return !(a > b || a < b);\n } else {\n var result = {\n contents: true\n };\n var do_key_a = function(key) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) {\n result.contents = false;\n return;\n }\n };\n var do_key_b = function(key) {\n if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) {\n result.contents = false;\n return;\n }\n };\n for_in(a, do_key_a);\n if (result.contents) {\n for_in(b, do_key_b);\n }\n return result.contents;\n }\n } else {\n return false;\n }\n}\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\nfunction nullable_to_opt(x) {\n if (x == null) {\n return;\n } else {\n return some(x);\n }\n}\nfunction valFromOption(x) {\n if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) {\n return x;\n }\n var depth = x.BS_PRIVATE_NESTED_SOME_NONE;\n if (depth === 0) {\n return;\n } else {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0\n };\n }\n}\n\n// node_modules/rescript/lib/es6/belt_Option.js\nfunction getExn(x) {\n if (x !== void 0) {\n return valFromOption(x);\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n}\nfunction mapWithDefaultU(opt, $$default, f) {\n if (opt !== void 0) {\n return f(valFromOption(opt));\n } else {\n return $$default;\n }\n}\nfunction mapU(opt, f) {\n if (opt !== void 0) {\n return some(f(valFromOption(opt)));\n }\n}\nfunction flatMapU(opt, f) {\n if (opt !== void 0) {\n return f(valFromOption(opt));\n }\n}\nfunction flatMap(opt, f) {\n return flatMapU(opt, __1(f));\n}\nfunction getWithDefault(opt, $$default) {\n if (opt !== void 0) {\n return valFromOption(opt);\n } else {\n return $$default;\n }\n}\nfunction isSome(param) {\n return param !== void 0;\n}\nfunction isNone(x) {\n return x === void 0;\n}\n\n// src/Option/Option.bs.js\nfunction placeholder(param) {\n}\nfunction fromNullable(value) {\n if (value == null) {\n return;\n } else {\n return some(value);\n }\n}\nfunction fromFalsy(value) {\n if (value) {\n return value;\n }\n}\nfunction _fromPredicate(value, predicateFn) {\n return flatMap(value == null ? void 0 : some(value), function(value2) {\n if (predicateFn(value2)) {\n return some(value2);\n }\n });\n}\nfunction fromPredicate() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _fromPredicate(data, args[0]);\n };\n }\n return _fromPredicate(arguments[0], arguments[1]);\n}\nfunction fromExecution(fn) {\n try {\n return some(fn(void 0));\n } catch (exn) {\n return;\n }\n}\nfunction fromPromise(promise) {\n var __x = promise.then(function(value) {\n return Promise.resolve(some(value));\n });\n return __x.catch(function(param) {\n return Promise.resolve(void 0);\n });\n}\nvar _map = mapU;\nfunction map() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _map(data, args[0]);\n };\n }\n return _map(arguments[0], arguments[1]);\n}\nvar _flatMap = flatMapU;\nfunction flatMap2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _flatMap(data, args[0]);\n };\n }\n return _flatMap(arguments[0], arguments[1]);\n}\nvar _mapWithDefault = mapWithDefaultU;\nfunction mapWithDefault() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _mapWithDefault(data, args[0], args[1]);\n };\n }\n return _mapWithDefault(arguments[0], arguments[1], arguments[2]);\n}\nfunction _mapNullable(option, mapFn) {\n if (option !== void 0) {\n return nullable_to_opt(mapFn(valFromOption(option)));\n }\n}\nfunction mapNullable() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _mapNullable(data, args[0]);\n };\n }\n return _mapNullable(arguments[0], arguments[1]);\n}\nfunction _filter(option, predicateFn) {\n return flatMapU(option, function(value) {\n if (predicateFn(value)) {\n return some(value);\n }\n });\n}\nfunction filter() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filter(data, args[0]);\n };\n }\n return _filter(arguments[0], arguments[1]);\n}\nvar _getWithDefault = getWithDefault;\nfunction getWithDefault2() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getWithDefault(data, args[0]);\n };\n }\n return _getWithDefault(arguments[0], arguments[1]);\n}\nvar getExn2 = getExn;\nfunction toNullable(option) {\n return getWithDefault(option, null);\n}\nfunction toUndefined(option) {\n return getWithDefault(option, void 0);\n}\nfunction _toResult(option, errorValue) {\n if (option !== void 0) {\n return {\n TAG: 0,\n _0: valFromOption(option)\n };\n } else {\n return {\n TAG: 1,\n _0: errorValue\n };\n }\n}\nfunction toResult() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _toResult(data, args[0]);\n };\n }\n return _toResult(arguments[0], arguments[1]);\n}\nfunction _match(option, someFn, noneFn) {\n if (option !== void 0) {\n return someFn(valFromOption(option));\n } else {\n return noneFn(void 0);\n }\n}\nfunction match() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _match(data, args[0], args[1]);\n };\n }\n return _match(arguments[0], arguments[1], arguments[2]);\n}\nvar isNone2 = isNone;\nvar isSome2 = isSome;\nfunction _tap(option, someFn) {\n if (option !== void 0) {\n someFn(valFromOption(option));\n return option;\n } else {\n return option;\n }\n}\nfunction tap() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _tap(data, args[0]);\n };\n }\n return _tap(arguments[0], arguments[1]);\n}\nfunction _contains(option, value) {\n return mapWithDefaultU(option, false, function(someValue) {\n return caml_equal(someValue, value);\n });\n}\nfunction contains() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _contains(data, args[0]);\n };\n }\n return _contains(arguments[0], arguments[1]);\n}\nfunction _zip(fstOption, sndOption) {\n if (fstOption !== void 0 && sndOption !== void 0) {\n return [\n valFromOption(fstOption),\n valFromOption(sndOption)\n ];\n }\n}\nfunction zip() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _zip(data, args[0]);\n };\n }\n return _zip(arguments[0], arguments[1]);\n}\nfunction _zipWith(fstOption, sndOption, mapFn) {\n if (fstOption !== void 0 && sndOption !== void 0) {\n return some(mapFn(valFromOption(fstOption), valFromOption(sndOption)));\n }\n}\nfunction zipWith() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _zipWith(data, args[0], args[1]);\n };\n }\n return _zipWith(arguments[0], arguments[1], arguments[2]);\n}\n\n// src/Option/index.js\nvar Some = (value) => value;\nvar None = void 0;\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/String/index.js\n__export(exports, {\n append: () => append,\n concat: () => concat,\n endsWith: () => endsWith,\n get: () => get,\n getUnsafe: () => getUnsafe,\n head: () => head,\n includes: () => includes,\n indexOf: () => indexOf,\n isEmpty: () => isEmpty,\n isNotEmpty: () => isNotEmpty,\n last: () => last,\n lastIndexOf: () => lastIndexOf,\n length: () => length,\n make: () => make,\n match: () => match,\n placeholder: () => placeholder,\n prepend: () => prepend,\n remove: () => remove,\n removeAll: () => removeAll,\n repeat: () => repeat,\n replace: () => replace,\n replaceAll: () => replaceAll,\n replaceByRe: () => replaceByRe,\n search: () => search,\n slice: () => slice,\n sliceToEnd: () => sliceToEnd,\n split: () => split,\n splitAt: () => splitAt,\n splitByRe: () => splitByRe,\n startsWith: () => startsWith,\n toArray: () => toArray,\n toLowerCase: () => toLowerCase,\n toUpperCase: () => toUpperCase,\n trim: () => trim,\n trimEnd: () => trimEnd,\n trimStart: () => trimStart\n});\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\nfunction undefined_to_opt(x) {\n if (x === void 0) {\n return;\n } else {\n return some(x);\n }\n}\nfunction null_to_opt(x) {\n if (x === null) {\n return;\n } else {\n return some(x);\n }\n}\n\n// node_modules/rescript/lib/es6/belt_Array.js\nfunction makeByU(l, f) {\n if (l <= 0) {\n return [];\n }\n var res = new Array(l);\n for (var i = 0; i < l; ++i) {\n res[i] = f(i);\n }\n return res;\n}\nfunction reduceWithIndexU(a, x, f) {\n var r = x;\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n r = f(r, a[i], i);\n }\n return r;\n}\n\n// src/String/String.bs.js\nfunction placeholder(param) {\n}\nfunction make(value) {\n return String(value);\n}\nfunction length(str) {\n return str.length;\n}\nfunction _concat(str, appendValue) {\n return str.concat(appendValue);\n}\nfunction concat() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _concat(data, args[0]);\n };\n }\n return _concat(arguments[0], arguments[1]);\n}\nfunction _append(str, appendValue) {\n return str.concat(appendValue);\n}\nfunction append() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _append(data, args[0]);\n };\n }\n return _append(arguments[0], arguments[1]);\n}\nfunction _prepend(str, prependValue) {\n return prependValue.concat(str);\n}\nfunction prepend() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _prepend(data, args[0]);\n };\n }\n return _prepend(arguments[0], arguments[1]);\n}\nfunction _slice(str, start, end) {\n return str.slice(start, end);\n}\nfunction slice() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _slice(data, args[0], args[1]);\n };\n }\n return _slice(arguments[0], arguments[1], arguments[2]);\n}\nfunction _sliceToEnd(str, start) {\n return str.slice(start);\n}\nfunction sliceToEnd() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _sliceToEnd(data, args[0]);\n };\n }\n return _sliceToEnd(arguments[0], arguments[1]);\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nfunction trim(str) {\n return str.trim();\n}\nfunction trimStart(str) {\n return str.trimStart();\n}\nfunction trimEnd(str) {\n return str.trimEnd();\n}\nfunction isEmpty(str) {\n return str.length === 0;\n}\nfunction isNotEmpty(str) {\n return str.length > 0;\n}\nfunction _split(str, delimiter) {\n return str.split(delimiter);\n}\nfunction split() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _split(data, args[0]);\n };\n }\n return _split(arguments[0], arguments[1]);\n}\nfunction _splitByRe(str, regex) {\n return str.split(regex);\n}\nfunction splitByRe() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _splitByRe(data, args[0]);\n };\n }\n return _splitByRe(arguments[0], arguments[1]);\n}\nfunction _splitAt(str, index) {\n return [\n str.slice(0, index),\n str.slice(index)\n ];\n}\nfunction splitAt() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _splitAt(data, args[0]);\n };\n }\n return _splitAt(arguments[0], arguments[1]);\n}\nfunction _includes(str, searchValue) {\n return str.includes(searchValue);\n}\nfunction includes() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _includes(data, args[0]);\n };\n }\n return _includes(arguments[0], arguments[1]);\n}\nfunction _replace(str, oldValue, newValue) {\n return str.replace(oldValue, newValue);\n}\nfunction replace() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _replace(data, args[0], args[1]);\n };\n }\n return _replace(arguments[0], arguments[1], arguments[2]);\n}\nfunction _replaceAll(str, oldValue, newValue) {\n var xs = str.split(oldValue);\n return reduceWithIndexU(xs, \"\", function(acc, str2, index) {\n var value = index < (xs.length - 1 | 0) ? str2.concat(newValue) : str2;\n return acc.concat(value);\n });\n}\nfunction replaceAll() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _replaceAll(data, args[0], args[1]);\n };\n }\n return _replaceAll(arguments[0], arguments[1], arguments[2]);\n}\nfunction _replaceByRe(str, regex, value) {\n return str.replace(regex, value);\n}\nfunction replaceByRe() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _replaceByRe(data, args[0], args[1]);\n };\n }\n return _replaceByRe(arguments[0], arguments[1], arguments[2]);\n}\nfunction _remove(str, value) {\n return str.replace(value, \"\");\n}\nfunction remove() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _remove(data, args[0]);\n };\n }\n return _remove(arguments[0], arguments[1]);\n}\nfunction _removeAll(str, value) {\n return replaceAll(str, value, \"\");\n}\nfunction removeAll() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _removeAll(data, args[0]);\n };\n }\n return _removeAll(arguments[0], arguments[1]);\n}\nfunction _search(str, regex) {\n var index = str.search(regex);\n if (index < 0) {\n return;\n } else {\n return index;\n }\n}\nfunction search() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _search(data, args[0]);\n };\n }\n return _search(arguments[0], arguments[1]);\n}\nfunction _match(str, regex) {\n return null_to_opt(str.match(regex));\n}\nfunction match() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _match(data, args[0]);\n };\n }\n return _match(arguments[0], arguments[1]);\n}\nfunction _repeat(str, n) {\n return str.repeat(n);\n}\nfunction repeat() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _repeat(data, args[0]);\n };\n }\n return _repeat(arguments[0], arguments[1]);\n}\nfunction _indexOf(str, searchValue) {\n var index = str.indexOf(searchValue);\n if (index < 0) {\n return;\n } else {\n return index;\n }\n}\nfunction indexOf() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _indexOf(data, args[0]);\n };\n }\n return _indexOf(arguments[0], arguments[1]);\n}\nfunction _lastIndexOf(str, searchValue) {\n var index = str.lastIndexOf(searchValue);\n if (index < 0) {\n return;\n } else {\n return index;\n }\n}\nfunction lastIndexOf() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _lastIndexOf(data, args[0]);\n };\n }\n return _lastIndexOf(arguments[0], arguments[1]);\n}\nfunction _endsWith(str, substr) {\n return str.endsWith(substr);\n}\nfunction endsWith() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _endsWith(data, args[0]);\n };\n }\n return _endsWith(arguments[0], arguments[1]);\n}\nfunction _startsWith(str, substr) {\n return str.startsWith(substr);\n}\nfunction startsWith() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _startsWith(data, args[0]);\n };\n }\n return _startsWith(arguments[0], arguments[1]);\n}\nfunction _getUnsafe(str, n) {\n return str[n];\n}\nfunction getUnsafe() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getUnsafe(data, args[0]);\n };\n }\n return _getUnsafe(arguments[0], arguments[1]);\n}\nfunction _get(str, n) {\n return undefined_to_opt(str[n]);\n}\nfunction get() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _get(data, args[0]);\n };\n }\n return _get(arguments[0], arguments[1]);\n}\nfunction toArray(str) {\n return makeByU(str.length, function(index) {\n return str[index];\n });\n}\nfunction head(str) {\n return undefined_to_opt(str[0]);\n}\nfunction last(str) {\n var n = str.length - 1 | 0;\n return undefined_to_opt(str[n]);\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Dict/index.js\n__export(exports, {\n deleteKey: () => deleteKey,\n deleteKeys: () => deleteKeys,\n filter: () => filter,\n filterWithKey: () => filterWithKey,\n fromPairs: () => fromPairs,\n get: () => get3,\n getUnsafe: () => getUnsafe,\n isEmpty: () => isEmpty,\n isNotEmpty: () => isNotEmpty,\n keys: () => keys,\n makeEmpty: () => makeEmpty,\n map: () => map,\n mapWithKey: () => mapWithKey,\n merge: () => merge,\n placeholder: () => placeholder,\n prop: () => prop,\n reject: () => reject,\n rejectWithKey: () => rejectWithKey,\n selectKeys: () => selectKeys,\n set: () => set,\n toPairs: () => toPairs,\n update: () => update,\n updateUnsafe: () => updateUnsafe,\n values: () => values2\n});\n\n// node_modules/rescript/lib/es6/caml_option.js\nfunction some(x) {\n if (x === void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\n\n// node_modules/rescript/lib/es6/js_dict.js\nfunction get(dict, k) {\n if (k in dict) {\n return some(dict[k]);\n }\n}\nvar unsafeDeleteKey = function(dict, key) {\n delete dict[key];\n};\nfunction values(dict) {\n var keys2 = Object.keys(dict);\n var l = keys2.length;\n var values$1 = new Array(l);\n for (var i = 0; i < l; ++i) {\n values$1[i] = dict[keys2[i]];\n }\n return values$1;\n}\nfunction fromArray(entries) {\n var dict = {};\n var l = entries.length;\n for (var i = 0; i < l; ++i) {\n var match = entries[i];\n dict[match[0]] = match[1];\n }\n return dict;\n}\n\n// node_modules/rescript/lib/es6/caml_obj.js\nvar for_in = function(o, foo) {\n for (var x in o) {\n foo(x);\n }\n};\nfunction caml_equal(a, b) {\n if (a === b) {\n return true;\n }\n var a_type = typeof a;\n if (a_type === \"string\" || a_type === \"number\" || a_type === \"boolean\" || a_type === \"undefined\" || a === null) {\n return false;\n }\n var b_type = typeof b;\n if (a_type === \"function\" || b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: functional value\",\n Error: new Error()\n };\n }\n if (b_type === \"number\" || b_type === \"undefined\" || b === null) {\n return false;\n }\n var tag_a = a.TAG | 0;\n var tag_b = b.TAG | 0;\n if (tag_a === 248) {\n return a[1] === b[1];\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n return false;\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while (true) {\n var i = _i;\n if (i === len_a) {\n return true;\n }\n if (!caml_equal(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue;\n }\n ;\n } else if (a instanceof Date && b instanceof Date) {\n return !(a > b || a < b);\n } else {\n var result = {\n contents: true\n };\n var do_key_a = function(key) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) {\n result.contents = false;\n return;\n }\n };\n var do_key_b = function(key) {\n if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) {\n result.contents = false;\n return;\n }\n };\n for_in(a, do_key_a);\n if (result.contents) {\n for_in(b, do_key_b);\n }\n return result.contents;\n }\n } else {\n return false;\n }\n}\n\n// node_modules/rescript/lib/es6/belt_Array.js\nfunction concat(a1, a2) {\n var l1 = a1.length;\n var l2 = a2.length;\n var a1a2 = new Array(l1 + l2 | 0);\n for (var i = 0; i < l1; ++i) {\n a1a2[i] = a1[i];\n }\n for (var i$1 = 0; i$1 < l2; ++i$1) {\n a1a2[l1 + i$1 | 0] = a2[i$1];\n }\n return a1a2;\n}\nfunction forEachU(a, f) {\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n f(a[i]);\n }\n}\nfunction mapU(a, f) {\n var l = a.length;\n var r = new Array(l);\n for (var i = 0; i < l; ++i) {\n r[i] = f(a[i]);\n }\n return r;\n}\nfunction reduceU(a, x, f) {\n var r = x;\n for (var i = 0, i_finish = a.length; i < i_finish; ++i) {\n r = f(r, a[i]);\n }\n return r;\n}\n\n// src/Array/Array.bs.js\nfunction _append(xs, element) {\n return concat(xs, [element]);\n}\nfunction append() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _append(data, args[0]);\n };\n }\n return _append(arguments[0], arguments[1]);\n}\n\n// src/Dict/Dict.bs.js\nfunction placeholder(param) {\n}\nfunction makeEmpty(prim) {\n return {};\n}\nfunction _getUnsafe(dict, key) {\n return dict[key];\n}\nfunction getUnsafe() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _getUnsafe(data, args[0]);\n };\n }\n return _getUnsafe(arguments[0], arguments[1]);\n}\nvar _get = get;\nfunction get3() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _get(data, args[0]);\n };\n }\n return _get(arguments[0], arguments[1]);\n}\nfunction _prop(dict, key) {\n return dict[key];\n}\nfunction prop() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _prop(data, args[0]);\n };\n }\n return _prop(arguments[0], arguments[1]);\n}\nfunction toPairs(dict) {\n return Object.entries(dict);\n}\nvar values2 = values;\nfunction keys(dict) {\n return Object.keys(dict);\n}\nvar fromPairs = fromArray;\nfunction _merge(fst, snd) {\n return Object.assign({}, fst, snd);\n}\nfunction merge() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _merge(data, args[0]);\n };\n }\n return _merge(arguments[0], arguments[1]);\n}\nfunction _set(dict, key, value) {\n var obj = merge({}, dict);\n obj[key] = value;\n return obj;\n}\nfunction set() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _set(data, args[0], args[1]);\n };\n }\n return _set(arguments[0], arguments[1], arguments[2]);\n}\nfunction _update(dict, key, fn) {\n var optionalValue = get(dict, key);\n return set(dict, key, fn(optionalValue));\n}\nfunction update() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _update(data, args[0], args[1]);\n };\n }\n return _update(arguments[0], arguments[1], arguments[2]);\n}\nfunction _updateUnsafe(dict, key, fn) {\n var value = dict[key];\n return set(dict, key, fn(value));\n}\nfunction updateUnsafe() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _updateUnsafe(data, args[0], args[1]);\n };\n }\n return _updateUnsafe(arguments[0], arguments[1], arguments[2]);\n}\nfunction _deleteKey(dict, key) {\n var obj = merge({}, dict);\n unsafeDeleteKey(obj, key);\n return obj;\n}\nfunction deleteKey() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _deleteKey(data, args[0]);\n };\n }\n return _deleteKey(arguments[0], arguments[1]);\n}\nfunction _deleteKeys(dict, keys2) {\n var obj = merge({}, dict);\n forEachU(keys2, function(key) {\n return unsafeDeleteKey(obj, key);\n });\n return obj;\n}\nfunction deleteKeys() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _deleteKeys(data, args[0]);\n };\n }\n return _deleteKeys(arguments[0], arguments[1]);\n}\nfunction _map(dict, mapFn) {\n return fromArray(mapU(Object.keys(dict), function(key) {\n var value = mapFn(dict[key]);\n return [\n key,\n value\n ];\n }));\n}\nfunction map() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _map(data, args[0]);\n };\n }\n return _map(arguments[0], arguments[1]);\n}\nfunction _mapWithKey(dict, mapFn) {\n return fromArray(mapU(Object.keys(dict), function(key) {\n var value = mapFn(key, dict[key]);\n return [\n key,\n value\n ];\n }));\n}\nfunction mapWithKey() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _mapWithKey(data, args[0]);\n };\n }\n return _mapWithKey(arguments[0], arguments[1]);\n}\nfunction _filter(dict, predicateFn) {\n return fromArray(reduceU(Object.keys(dict), [], function(acc, key) {\n var value = dict[key];\n if (predicateFn(value)) {\n return append(acc, [\n key,\n value\n ]);\n } else {\n return acc;\n }\n }));\n}\nfunction filter() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filter(data, args[0]);\n };\n }\n return _filter(arguments[0], arguments[1]);\n}\nfunction _filterWithKey(dict, predicateFn) {\n return fromArray(reduceU(Object.keys(dict), [], function(acc, key) {\n var value = dict[key];\n if (predicateFn(key, value)) {\n return append(acc, [\n key,\n value\n ]);\n } else {\n return acc;\n }\n }));\n}\nfunction filterWithKey() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _filterWithKey(data, args[0]);\n };\n }\n return _filterWithKey(arguments[0], arguments[1]);\n}\nfunction _reject(dict, predicateFn) {\n return filter(dict, function(value) {\n return !predicateFn(value);\n });\n}\nfunction reject() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _reject(data, args[0]);\n };\n }\n return _reject(arguments[0], arguments[1]);\n}\nfunction _rejectWithKey(dict, predicateFn) {\n return filterWithKey(dict, function(key, value) {\n return !predicateFn(key, value);\n });\n}\nfunction rejectWithKey() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _rejectWithKey(data, args[0]);\n };\n }\n return _rejectWithKey(arguments[0], arguments[1]);\n}\nfunction _selectKeys(dict, keys2) {\n return filterWithKey(dict, function(key, param) {\n return keys2.includes(key);\n });\n}\nfunction selectKeys() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _selectKeys(data, args[0]);\n };\n }\n return _selectKeys(arguments[0], arguments[1]);\n}\nfunction isEmpty(dict) {\n return caml_equal(dict, {});\n}\nfunction isNotEmpty(dict) {\n return !caml_equal(dict, {});\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Bool/index.js\n__export(exports, {\n and: () => and,\n ifElse: () => ifElse,\n implies: () => implies,\n inverse: () => inverse,\n nand: () => nand,\n nor: () => nor,\n not: () => not,\n or: () => or,\n placeholder: () => placeholder,\n xnor: () => xnor,\n xor: () => xor\n});\n\n// src/Bool/Bool.bs.js\nfunction placeholder(param) {\n}\nfunction _ifElse(value, truthyFn, falsyFn) {\n if (value) {\n return truthyFn(void 0);\n } else {\n return falsyFn(void 0);\n }\n}\nfunction ifElse() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _ifElse(data, args[0], args[1]);\n };\n }\n return _ifElse(arguments[0], arguments[1], arguments[2]);\n}\nfunction inverse(value) {\n return !value;\n}\nfunction not(value) {\n return !value;\n}\nfunction _and_(a, b) {\n if (a) {\n return b;\n } else {\n return false;\n }\n}\nfunction and() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _and_(data, args[0]);\n };\n }\n return _and_(arguments[0], arguments[1]);\n}\nfunction _or_(a, b) {\n if (a) {\n return true;\n } else {\n return b;\n }\n}\nfunction or() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _or_(data, args[0]);\n };\n }\n return _or_(arguments[0], arguments[1]);\n}\nfunction _nand(a, b) {\n return !(a && b);\n}\nfunction nand() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _nand(data, args[0]);\n };\n }\n return _nand(arguments[0], arguments[1]);\n}\nfunction _nor(a, b) {\n return !(a || b);\n}\nfunction nor() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _nor(data, args[0]);\n };\n }\n return _nor(arguments[0], arguments[1]);\n}\nfunction _xor(a, b) {\n if (!a && b) {\n return true;\n } else if (a) {\n return !b;\n } else {\n return false;\n }\n}\nfunction xor() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _xor(data, args[0]);\n };\n }\n return _xor(arguments[0], arguments[1]);\n}\nfunction _xnor(a, b) {\n return !xor(a, b);\n}\nfunction xnor() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _xnor(data, args[0]);\n };\n }\n return _xnor(arguments[0], arguments[1]);\n}\nfunction _implies(a, b) {\n if (a) {\n return b;\n } else {\n return true;\n }\n}\nfunction implies() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _implies(data, args[0]);\n };\n }\n return _implies(arguments[0], arguments[1]);\n}\n", "var __defProp = Object.defineProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/Number/index.js\n__export(exports, {\n add: () => add,\n clamp: () => clamp,\n divide: () => divide,\n divideWithModulo: () => divideWithModulo,\n gt: () => gt,\n gte: () => gte,\n lt: () => lt,\n lte: () => lte,\n modulo: () => modulo,\n multiply: () => multiply,\n placeholder: () => placeholder,\n pred: () => pred,\n subtract: () => subtract,\n succ: () => succ\n});\n\n// node_modules/rescript/lib/es6/caml_int32.js\nfunction mod_(x, y) {\n if (y === 0) {\n throw {\n RE_EXN_ID: \"Division_by_zero\",\n Error: new Error()\n };\n }\n return x % y;\n}\n\n// src/Number/Number.bs.js\nfunction placeholder(param) {\n}\nfunction pred(n) {\n return n - 1 | 0;\n}\nfunction succ(n) {\n return n + 1 | 0;\n}\nfunction _add(a, b) {\n return a + b;\n}\nfunction add() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _add(data, args[0]);\n };\n }\n return _add(arguments[0], arguments[1]);\n}\nfunction _subtract(a, b) {\n return a - b;\n}\nfunction subtract() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _subtract(data, args[0]);\n };\n }\n return _subtract(arguments[0], arguments[1]);\n}\nfunction _multiply(a, b) {\n return a * b;\n}\nfunction multiply() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _multiply(data, args[0]);\n };\n }\n return _multiply(arguments[0], arguments[1]);\n}\nfunction _divide(a, b) {\n return a / b;\n}\nfunction divide() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _divide(data, args[0]);\n };\n }\n return _divide(arguments[0], arguments[1]);\n}\nvar _modulo = mod_;\nfunction modulo() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _modulo(data, args[0]);\n };\n }\n return _modulo(arguments[0], arguments[1]);\n}\nfunction _divideWithModulo(a, b) {\n return [\n a / b,\n mod_(a | 0, b | 0)\n ];\n}\nfunction divideWithModulo() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _divideWithModulo(data, args[0]);\n };\n }\n return _divideWithModulo(arguments[0], arguments[1]);\n}\nfunction _gt(a, b) {\n return a > b;\n}\nfunction gt() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _gt(data, args[0]);\n };\n }\n return _gt(arguments[0], arguments[1]);\n}\nfunction _gte(a, b) {\n return a >= b;\n}\nfunction gte() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _gte(data, args[0]);\n };\n }\n return _gte(arguments[0], arguments[1]);\n}\nfunction _lt(a, b) {\n return a < b;\n}\nfunction lt() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _lt(data, args[0]);\n };\n }\n return _lt(arguments[0], arguments[1]);\n}\nfunction _lte(a, b) {\n return a <= b;\n}\nfunction lte() {\n if (arguments.length === 1) {\n const args = arguments;\n return function fn(data) {\n return _lte(data, args[0]);\n };\n }\n return _lte(arguments[0], arguments[1]);\n}\nfunction _clamp(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\nfunction clamp() {\n if (arguments.length === 2) {\n const args = arguments;\n return function fn(data) {\n return _clamp(data, args[0], args[1]);\n };\n }\n return _clamp(arguments[0], arguments[1], arguments[2]);\n}\n", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __markAsModule = (target) => __defProp(target, \"__esModule\", { value: true });\nvar __export = (target, all) => {\n __markAsModule(target);\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __reExport = (target, module2, desc) => {\n if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\n for (let key of __getOwnPropNames(module2))\n if (!__hasOwnProp.call(target, key) && key !== \"default\")\n __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\n }\n return target;\n};\nvar __toModule = (module2) => {\n return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", module2 && module2.__esModule && \"default\" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);\n};\n__export(exports, {\n A: () => A,\n B: () => B,\n D: () => D,\n F: () => F,\n G: () => G,\n N: () => N,\n O: () => O,\n R: () => R,\n S: () => S,\n flow: () => import_flow.flow,\n pipe: () => import_pipe.pipe\n});\nvar import_pipe = __toModule(require(\"./pipe.js\"));\nvar import_flow = __toModule(require(\"./flow.js\"));\nvar F = __toModule(require(\"./Function\"));\nvar A = __toModule(require(\"./Array\"));\nvar R = __toModule(require(\"./Result\"));\nvar G = __toModule(require(\"./Guards\"));\nvar O = __toModule(require(\"./Option\"));\nvar S = __toModule(require(\"./String\"));\nvar D = __toModule(require(\"./Dict\"));\nvar B = __toModule(require(\"./Bool\"));\nvar N = __toModule(require(\"./Number\"));\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transformTransaction = exports.getTokens = exports.getAmount = exports.getDetails = exports.getTxType = exports.getTargets = exports.extractAccountBalanceDiff = exports.transformTokenInfo = exports.tokenStandardToTokenProgramName = exports.getTokenNameAndSymbol = exports.getTokenMetadata = exports.tokenProgramsInfo = exports.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID = exports.SERUM_ASSET_OWNER_PROGRAM_ID = exports.COMPUTE_BUDGET_PROGRAM_ID = exports.STAKE_PROGRAM_PUBLIC_KEY = exports.WSOL_MINT = exports.SYSTEM_PROGRAM_PUBLIC_KEY = exports.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = exports.TOKEN_2022_PROGRAM_PUBLIC_KEY = exports.TOKEN_PROGRAM_PUBLIC_KEY = void 0;\nexports.getNativeEffects = getNativeEffects;\nconst ts_belt_1 = require(\"@mobily/ts-belt\");\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst utils_2 = require(\"./utils\");\nexports.TOKEN_PROGRAM_PUBLIC_KEY = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';\nexports.TOKEN_2022_PROGRAM_PUBLIC_KEY = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';\nexports.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';\nexports.SYSTEM_PROGRAM_PUBLIC_KEY = '11111111111111111111111111111111';\nexports.WSOL_MINT = 'So11111111111111111111111111111111111111112';\nexports.STAKE_PROGRAM_PUBLIC_KEY = 'Stake11111111111111111111111111111111111111';\nexports.COMPUTE_BUDGET_PROGRAM_ID = 'ComputeBudget111111111111111111111111111111';\nexports.SERUM_ASSET_OWNER_PROGRAM_ID = '4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5';\nexports.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID = 'DeJBGdMFa1uynnnKiwrVioatTuHmNLpyFKnmB5kaFdzQ';\nconst tokenProgramNames = ['spl-token', 'spl-token-2022'];\nexports.tokenProgramsInfo = {\n 'spl-token': {\n publicKey: exports.TOKEN_PROGRAM_PUBLIC_KEY,\n tokenStandard: 'SPL'\n },\n 'spl-token-2022': {\n publicKey: exports.TOKEN_2022_PROGRAM_PUBLIC_KEY,\n tokenStandard: 'SPL-2022'\n }\n};\nconst getTokenMetadata = async () => {\n const env = (0, env_utils_1.isCodesignBuild)() ? 'stable' : 'develop';\n const response = await fetch(`https://data.trezor.io/suite/definitions/${env}/solana.advanced.coin.definitions.v1.json`);\n if (!response.ok) {\n throw Error(response.statusText);\n }\n const data = await response.json();\n data[exports.WSOL_MINT] = {\n symbol: 'wSOL',\n name: 'Wrapped SOL'\n };\n return data;\n};\nexports.getTokenMetadata = getTokenMetadata;\nconst getTokenNameAndSymbol = (mint, tokenDetailByMint) => {\n const tokenDetail = tokenDetailByMint[mint];\n return tokenDetail ? {\n name: tokenDetail.name,\n symbol: tokenDetail.symbol\n } : {\n name: mint,\n symbol: (0, utils_2.formatTokenSymbol)(mint)\n };\n};\nexports.getTokenNameAndSymbol = getTokenNameAndSymbol;\nconst isTokenProgramName = programName => tokenProgramNames.some(name => name === programName);\nconst tokenStandardToTokenProgramName = standard => {\n const tokenProgram = Object.entries(exports.tokenProgramsInfo).find(([_, programInfo]) => programInfo.tokenStandard === standard);\n if (!tokenProgram) throw new Error(`Cannot convert token standard ${standard} to Solana token program name`);\n return tokenProgram[0];\n};\nexports.tokenStandardToTokenProgramName = tokenStandardToTokenProgramName;\nconst isSplTokenAccount = tokenAccount => {\n const {\n parsed\n } = tokenAccount.account.data;\n return isTokenProgramName(tokenAccount.account.data.program) && 'info' in parsed && !!parsed.info && 'mint' in parsed.info && typeof parsed.info.mint === 'string' && 'tokenAmount' in parsed.info && !!parsed.info.tokenAmount && typeof parsed.info.tokenAmount === 'object' && 'amount' in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.amount === 'string' && 'decimals' in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.decimals === 'number';\n};\nconst transformTokenInfo = (tokenAccounts, tokenDetailByMint) => {\n const tokens = ts_belt_1.F.toMutable((0, ts_belt_1.pipe)(tokenAccounts, ts_belt_1.A.filter(isSplTokenAccount), ts_belt_1.A.map(tokenAccount => {\n const {\n parsed: {\n info\n },\n program\n } = tokenAccount.account.data;\n return {\n type: exports.tokenProgramsInfo[program].tokenStandard,\n contract: info.mint,\n balance: info.tokenAmount.amount,\n decimals: info.tokenAmount.decimals,\n ...(0, exports.getTokenNameAndSymbol)(info.mint, tokenDetailByMint),\n address: tokenAccount.pubkey,\n standard: exports.tokenProgramsInfo[program].tokenStandard\n };\n }), ts_belt_1.A.reduce({}, (acc, token) => {\n if (acc[token.contract] != null) {\n acc[token.contract].balance = new bigNumber_1.BigNumber(acc[token.contract].balance || '0').plus(token.balance || '0').toString();\n acc[token.contract].accounts.push({\n publicKey: token.address,\n balance: token.balance || '0'\n });\n } else {\n const {\n standard,\n contract,\n balance,\n decimals,\n name,\n symbol\n } = token;\n acc[token.contract] = {\n standard,\n contract,\n balance,\n decimals,\n name,\n symbol,\n accounts: [{\n publicKey: token.address,\n balance: balance || '0'\n }]\n };\n }\n return acc;\n }), ts_belt_1.D.values));\n return tokens;\n};\nexports.transformTokenInfo = transformTokenInfo;\nconst extractAccountBalanceDiff = (transaction, address, isTokenDiff = false) => {\n const pubKeyIndex = transaction.transaction.message.accountKeys.findIndex(ak => ak.pubkey === address);\n if (pubKeyIndex === -1) {\n return null;\n }\n if (isTokenDiff) {\n const preBalance = transaction.meta?.preTokenBalances?.find(balance => balance.accountIndex === pubKeyIndex)?.uiTokenAmount.amount;\n const postBalance = transaction.meta?.postTokenBalances?.find(balance => balance.accountIndex === pubKeyIndex)?.uiTokenAmount.amount;\n return {\n preBalance: new bigNumber_1.BigNumber(preBalance ?? 0),\n postBalance: new bigNumber_1.BigNumber(postBalance ?? 0)\n };\n }\n const preBalance = transaction.meta?.preBalances[pubKeyIndex];\n const postBalance = transaction.meta?.postBalances[pubKeyIndex];\n return {\n preBalance: new bigNumber_1.BigNumber(preBalance?.toString(10) ?? 0),\n postBalance: new bigNumber_1.BigNumber(postBalance?.toString(10) ?? 0)\n };\n};\nexports.extractAccountBalanceDiff = extractAccountBalanceDiff;\nconst isWSolTransfer = ixs => ixs.find(ix => 'parsed' in ix && !!ix.parsed.info && 'mint' in ix.parsed.info && ix.parsed.info.mint === exports.WSOL_MINT);\nfunction getNativeEffects(transaction) {\n const wSolTransferInstruction = isWSolTransfer(transaction.transaction.message.instructions || []);\n return transaction.transaction.message.accountKeys.map(ak => {\n const targetAddress = ak.pubkey;\n const balanceDiff = (0, exports.extractAccountBalanceDiff)(transaction, targetAddress);\n if (wSolTransferInstruction && 'parsed' in wSolTransferInstruction) {\n if (!!wSolTransferInstruction.parsed.info && 'destination' in wSolTransferInstruction.parsed.info && wSolTransferInstruction.parsed.info.destination === targetAddress || !!wSolTransferInstruction.parsed.info && 'source' in wSolTransferInstruction.parsed.info && wSolTransferInstruction.parsed.info.source === targetAddress) {\n return null;\n }\n }\n if (!balanceDiff) {\n return null;\n }\n return {\n address: targetAddress,\n amount: balanceDiff.postBalance.minus(balanceDiff.preBalance)\n };\n }).filter(effect => !!effect).filter(({\n amount\n }) => !amount.isZero());\n}\nconst getTargets = (effects, txType, accountAddress) => effects.filter(effect => {\n if (txType === 'self') {\n return false;\n }\n if (txType === 'unknown') {\n return false;\n }\n if (txType !== 'sent' && effect.address !== accountAddress) {\n return false;\n }\n return effect.amount.isGreaterThan(0);\n}).map((effect, i) => {\n const target = {\n n: i,\n addresses: [effect.address],\n isAddress: true,\n amount: effect.amount.abs().toString(),\n isAccountTarget: effect.address === accountAddress && txType !== 'sent'\n };\n return target;\n});\nexports.getTargets = getTargets;\nconst getTokenTransferTxType = transfers => {\n if (transfers.some(transfer => transfer.to === transfer.from)) {\n return 'self';\n }\n if (transfers.some(({\n type\n }) => type === 'recv')) {\n return 'recv';\n }\n if (transfers.some(({\n type\n }) => type === 'sent')) {\n return 'sent';\n }\n return 'unknown';\n};\nconst getNativeTransferTxType = (effects, accountAddress, transaction) => {\n if (effects.length === 1 && effects[0]?.address === accountAddress && effects[0]?.amount.abs().isEqualTo(new bigNumber_1.BigNumber(transaction.meta?.fee.toString() || 0))) {\n return 'self';\n }\n const [senders, receivers] = (0, utils_1.arrayPartition)(effects, ({\n amount\n }) => amount.isNegative());\n if (senders.some(({\n address\n }) => address === accountAddress)) {\n return 'sent';\n }\n if (receivers.some(({\n address\n }) => address === accountAddress)) {\n return 'recv';\n }\n return 'unknown';\n};\nconst getTxType = (transaction, effects, accountAddress, tokenTransfers) => {\n if (transaction.meta?.err) {\n return 'failed';\n }\n const isUnknownProgramInstruction = instruction => ![exports.SYSTEM_PROGRAM_PUBLIC_KEY, ...Object.values(exports.tokenProgramsInfo).map(info => info.publicKey), exports.ASSOCIATED_TOKEN_PROGRAM_PUBLIC_KEY, exports.STAKE_PROGRAM_PUBLIC_KEY, exports.COMPUTE_BUDGET_PROGRAM_ID, exports.SERUM_ASSET_OWNER_PROGRAM_ID, exports.SERUM_ASSET_OWNER_PHANTOM_DEPLOYMENT_PROGRAM_ID].includes(instruction.programId);\n if (transaction.transaction.message.instructions.some(isUnknownProgramInstruction)) {\n return 'contract';\n }\n const parsedInstructions = transaction.transaction.message.instructions.filter(instruction => 'parsed' in instruction);\n if (parsedInstructions.length === 0) {\n return 'unknown';\n }\n const isInstructionCreatingTokenAccount = instruction => instruction.program === 'spl-associated-token-account' && (instruction.parsed.type === 'create' || instruction.parsed.type === 'createIdempotent');\n const isTransfer = parsedInstructions.every(instruction => instruction.parsed.type === 'transfer' || instruction.parsed.type === 'transferChecked' || instruction.program === 'system' && instruction.parsed.type === 'advanceNonce' || isInstructionCreatingTokenAccount(instruction));\n if (isTransfer) {\n return tokenTransfers.length > 0 ? getTokenTransferTxType(tokenTransfers) : getNativeTransferTxType(effects, accountAddress, transaction);\n }\n return 'unknown';\n};\nexports.getTxType = getTxType;\nconst getDetails = (transaction, effects, accountAddress, txType) => {\n const senders = effects.filter(({\n amount\n }) => amount.isNegative());\n const receivers = effects.filter(({\n amount,\n address\n }) => amount.isPositive() && (txType !== 'sent' ? address === accountAddress : true)).filter(({\n address\n }) => !(txType === 'self' && address === accountAddress));\n const getVin = ({\n address,\n amount\n }, i) => ({\n txid: transaction.transaction.signatures[0].toString(),\n version: transaction.version?.toString(),\n isAddress: true,\n isAccountOwned: address === accountAddress,\n n: i,\n value: amount?.abs().toString(),\n addresses: [address]\n });\n const vin = senders.map((sender, i) => getVin(sender, i));\n const vout = receivers.map((receiver, i) => getVin(receiver, i));\n if (txType === 'self') {\n vout.push(getVin({\n address: accountAddress\n }, vout.length));\n }\n return {\n size: transaction.meta?.computeUnitsConsumed != null ? Number(transaction.meta?.computeUnitsConsumed) : 0,\n totalInput: senders.reduce((acc, curr) => acc.plus(curr.amount.abs()), new bigNumber_1.BigNumber(0)).toString(),\n totalOutput: receivers.reduce((acc, curr) => acc.plus(curr.amount.abs()), new bigNumber_1.BigNumber(0)).toString(),\n vin,\n vout\n };\n};\nexports.getDetails = getDetails;\nconst getAmount = (accountEffect, txType) => {\n if (!accountEffect) {\n return '0';\n }\n if (txType === 'self') {\n return '0';\n }\n return accountEffect.amount.abs().toString();\n};\nexports.getAmount = getAmount;\nconst isTokenTransferInstruction = ix => {\n if (!('parsed' in ix)) {\n return false;\n }\n const {\n parsed\n } = ix;\n return 'program' in ix && typeof ix.program === 'string' && isTokenProgramName(ix.program) && 'type' in parsed && typeof parsed.type === 'string' && (parsed.type === 'transferChecked' || parsed.type === 'transfer') && 'info' in parsed && typeof parsed.info === 'object' && ('authority' in parsed.info && typeof parsed.info.authority === 'string' || 'multisigAuthority' in parsed.info && typeof parsed.info.multisigAuthority === 'string') && 'source' in parsed.info && typeof parsed.info.source === 'string' && 'destination' in parsed.info && typeof parsed.info.destination === 'string' && ('tokenAmount' in parsed.info && !!parsed.info.tokenAmount && typeof parsed.info.tokenAmount === 'object' && 'amount' in parsed.info.tokenAmount && typeof parsed.info.tokenAmount.amount === 'string' || 'amount' in parsed.info && typeof parsed.info.amount === 'string');\n};\nconst getTokens = (tx, accountAddress, tokenDetailByMint, tokenAccountsInfos) => {\n const getUiType = ({\n parsed\n }) => {\n const accountAddresses = [...tokenAccountsInfos.map(({\n address\n }) => address), accountAddress];\n const isAccountDestination = accountAddresses.includes(parsed.info.destination);\n const isAccountSource = accountAddresses.includes(parsed.info.multisigAuthority || parsed.info.authority || parsed.info.source);\n if (isAccountDestination && isAccountSource) {\n return 'self';\n }\n if (isAccountDestination) {\n return 'recv';\n }\n return 'sent';\n };\n const matchTokenAccountInfo = ({\n parsed\n }, address) => address === parsed.info?.source || address === parsed.info.destination || address === parsed.info?.authority;\n const instructions = [...tx.transaction.message.instructions, ...(tx.meta?.innerInstructions?.flatMap(innerIx => innerIx.instructions) ?? [])];\n const effects = instructions.filter(instruction => isTokenTransferInstruction(instruction) && tokenAccountsInfos.some(tokenAccountInfo => matchTokenAccountInfo(instruction, tokenAccountInfo.address))).map(ix => {\n const {\n parsed,\n program\n } = ix;\n const instructionTokenInfo = tokenAccountsInfos.find(tokenAccountInfo => matchTokenAccountInfo(ix, tokenAccountInfo.address));\n const mint = parsed.info.mint || instructionTokenInfo?.mint || 'Unknown token contract';\n const decimals = Number(parsed.info.tokenAmount?.decimals || instructionTokenInfo?.decimals || 0);\n const amount = parsed.info.tokenAmount?.amount || parsed.info.amount || '-1';\n const source = parsed.info.authority || parsed.info.source;\n const from = source === instructionTokenInfo?.address ? accountAddress : source;\n const to = parsed.info.destination === instructionTokenInfo?.address ? accountAddress : parsed.info.destination;\n return {\n type: getUiType(ix),\n standard: exports.tokenProgramsInfo[program].tokenStandard,\n from,\n to,\n contract: mint,\n decimals,\n ...(0, exports.getTokenNameAndSymbol)(mint, tokenDetailByMint),\n amount\n };\n }).filter(effect => effect.to === accountAddress || effect.from === accountAddress);\n return effects;\n};\nexports.getTokens = getTokens;\nfunction getTransactionStakeType(tx) {\n const {\n instructions\n } = tx.transaction.message;\n if (!instructions) {\n throw new Error('Invalid transaction data');\n }\n for (const instruction of instructions) {\n if (instruction.programId === exports.STAKE_PROGRAM_PUBLIC_KEY && 'parsed' in instruction) {\n const {\n type\n } = instruction.parsed || {};\n if (type === 'delegate') return 'stake';\n if (type === 'deactivate') return 'unstake';\n if (type === 'withdraw') return 'claim';\n }\n }\n return undefined;\n}\nconst getUnstakeAmount = tx => {\n const {\n transaction,\n meta\n } = tx;\n const {\n instructions,\n accountKeys\n } = transaction.message;\n if (!instructions || !meta) {\n throw new Error('Invalid transaction data');\n }\n const stakeAccountIndexes = instructions.filter(instruction => instruction.programId === exports.STAKE_PROGRAM_PUBLIC_KEY && 'parsed' in instruction && instruction.parsed?.type === 'deactivate').map(instruction => {\n if (typeof instruction.parsed?.info === 'object' && 'stakeAccount' in instruction.parsed.info) {\n const stakeAccount = instruction.parsed.info?.stakeAccount;\n return accountKeys.findIndex(key => key.pubkey === stakeAccount);\n }\n return -1;\n }).filter(index => index >= 0);\n const totalPostBalance = stakeAccountIndexes.reduce((sum, stakeAccountIndex) => sum.plus(new bigNumber_1.BigNumber(meta.postBalances[stakeAccountIndex]?.toString(10) || 0)), new bigNumber_1.BigNumber(0));\n return totalPostBalance.toString();\n};\nconst determineTransactionType = (type, stakeType) => {\n if (type !== 'unknown' || !stakeType) {\n return type;\n }\n switch (stakeType) {\n case 'claim':\n return 'recv';\n case 'stake':\n case 'unstake':\n return 'sent';\n default:\n return 'unknown';\n }\n};\nconst transformTransaction = (tx, accountAddress, tokenAccountsInfos, tokenDetailByMint = {}) => {\n const nativeEffects = getNativeEffects(tx);\n const tokens = (0, exports.getTokens)(tx, accountAddress, tokenDetailByMint, tokenAccountsInfos);\n const type = (0, exports.getTxType)(tx, nativeEffects, accountAddress, tokens);\n const stakeType = getTransactionStakeType(tx);\n const txType = determineTransactionType(type, stakeType);\n const targets = (0, exports.getTargets)(nativeEffects, txType, accountAddress);\n const isUnstakeTx = stakeType === 'unstake';\n const amount = isUnstakeTx ? '0' : (0, exports.getAmount)(nativeEffects.find(({\n address\n }) => address === accountAddress), type);\n const stakeAmount = isUnstakeTx ? getUnstakeAmount(tx) : amount;\n const details = (0, exports.getDetails)(tx, nativeEffects, accountAddress, type);\n return {\n type: txType,\n txid: tx.transaction.signatures[0].toString(),\n blockTime: tx.blockTime == null ? undefined : Number(tx.blockTime),\n blockHeight: tx.slot == null ? undefined : Number(tx.slot),\n amount,\n fee: (tx.meta?.fee || 0).toString(),\n targets,\n tokens,\n internalTransfers: [],\n details,\n blockHash: tx.transaction.message.recentBlockhash,\n solanaSpecific: {\n status: 'confirmed',\n stakeOperation: stakeType ? {\n type: stakeType,\n amount: stakeAmount\n } : undefined\n }\n };\n};\nexports.transformTransaction = transformTransaction;\n//# sourceMappingURL=solana.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.solanaUtils = exports.blockfrostUtils = exports.blockbookUtils = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./utils\"), exports);\nexports.blockbookUtils = tslib_1.__importStar(require(\"./blockbook\"));\nexports.blockfrostUtils = tslib_1.__importStar(require(\"./blockfrost\"));\nexports.solanaUtils = tslib_1.__importStar(require(\"./solana\"));\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst blockchain_link_utils_1 = require(\"@trezor/blockchain-link-utils\");\nconst blockbook_1 = require(\"@trezor/blockchain-link-utils/lib/blockbook\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst utils_1 = require(\"../utils\");\nconst transformAddress = addr => ({\n address: addr.address,\n path: addr.path,\n transfers: addr.history.length,\n balance: '0',\n sent: '0',\n received: '0'\n});\nconst aggregateTransactions = (txs, groupBy = 3600) => {\n const result = [];\n let i = 0;\n while (i < txs.length) {\n const time = Math.floor(txs[i].blockTime / groupBy) * groupBy;\n let j = i;\n let received = 0;\n let sent = 0;\n let sentToSelf = 0;\n while (j < txs.length && txs[j].blockTime < time + groupBy) {\n const {\n type,\n amount,\n fee,\n details: {\n vin,\n vout,\n totalInput,\n totalOutput\n }\n } = txs[j];\n if (type === 'recv') received += Number.parseInt(amount, 10);else if (type === 'sent') sent += Number.parseInt(amount, 10) + Number.parseInt(fee, 10);else if (type === 'self') {\n sentToSelf += Number.parseInt(totalOutput, 10);\n sent += Number.parseInt(totalInput, 10);\n received += Number.parseInt(totalOutput, 10);\n } else if (type === 'joint') {\n const myTotalInput = new bigNumber_1.BigNumber(vin.filter(vin => vin.isAccountOwned).reduce(blockchain_link_utils_1.sumVinVout, 0)).toNumber();\n const myTotalOutput = new bigNumber_1.BigNumber(vout.filter(vout => vout.isAccountOwned).reduce(blockchain_link_utils_1.sumVinVout, 0)).toNumber();\n sent += myTotalInput;\n received += myTotalOutput;\n sentToSelf += Math.min(myTotalInput, myTotalOutput);\n }\n j++;\n }\n result.push({\n time,\n txs: j - i,\n received: received.toString(),\n sent: sent.toString(),\n sentToSelf: sentToSelf.toString(),\n rates: {}\n });\n i = j;\n }\n return result;\n};\nconst getAccountBalanceHistory = async (client, {\n descriptor,\n from,\n to,\n groupBy\n}) => {\n let history;\n let addresses;\n const network = client.getInfo()?.network;\n const parsed = (0, utils_1.tryGetScripthash)(descriptor, network);\n if (parsed.valid) {\n history = await client.request('blockchain.scripthash.get_history', parsed.scripthash);\n addresses = undefined;\n } else {\n const discover = (0, utils_1.discoverAddress)(client);\n const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, 'receive', network);\n const change = await (0, utxo_lib_1.discovery)(discover, descriptor, 'change', network);\n addresses = {\n change: change.map(transformAddress),\n used: receive.filter(({\n history\n }) => history.length).map(transformAddress),\n unused: receive.filter(({\n history\n }) => !history.length).map(transformAddress)\n };\n history = receive.map(({\n history\n }) => history).concat(change.map(({\n history\n }) => history)).flat();\n }\n const txs = await (0, utils_1.getTransactions)(client, history).then(txs => txs.filter(({\n blockTime\n }) => (from || 0) <= blockTime && blockTime <= (to || Number.MAX_SAFE_INTEGER)).sort((a, b) => a.blockTime - b.blockTime).map(tx => ({\n blockTime: -1,\n ...(0, blockbook_1.transformTransaction)(tx, addresses ?? descriptor)\n })));\n return aggregateTransactions(txs, groupBy);\n};\nexports.default = getAccountBalanceHistory;\n//# sourceMappingURL=getAccountBalanceHistory.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sumAddressValues = void 0;\nconst blockchain_link_utils_1 = require(\"@trezor/blockchain-link-utils\");\nconst blockbook_1 = require(\"@trezor/blockchain-link-utils/lib/blockbook\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst utils_1 = require(\"../utils\");\nconst PAGE_SIZE_DEFAULT = 25;\nconst getBalances = client => addresses => Promise.all(addresses.map(async ({\n address,\n path,\n history,\n scripthash,\n empty\n}) => {\n const {\n confirmed,\n unconfirmed\n } = history.length ? await client.request('blockchain.scripthash.get_balance', scripthash) : {\n confirmed: 0,\n unconfirmed: 0\n };\n return {\n address,\n path,\n history,\n empty,\n confirmed,\n unconfirmed\n };\n}));\nconst getPagination = (perPage, txs) => ({\n index: 1,\n size: perPage,\n total: Math.ceil(txs.length / perPage)\n});\nconst sumAddressValues = (transactions, address, getVinVouts) => transactions.flatMap(tx => getVinVouts(tx).filter(({\n addresses\n}) => addresses?.includes(address)).map(({\n value\n}) => value ? Number.parseFloat(value) : 0)).reduce((a, b) => a + b, 0);\nexports.sumAddressValues = sumAddressValues;\nconst getAccountInfo = async (client, payload) => {\n const {\n descriptor,\n details = 'basic',\n pageSize = PAGE_SIZE_DEFAULT\n } = payload;\n const network = client.getInfo()?.network;\n const parsed = (0, utils_1.tryGetScripthash)(descriptor, network);\n if (parsed.valid) {\n const {\n confirmed,\n unconfirmed,\n history\n } = await Promise.all([client.request('blockchain.scripthash.get_balance', parsed.scripthash), client.request('blockchain.scripthash.get_history', parsed.scripthash)]).then(([{\n confirmed,\n unconfirmed\n }, history]) => ({\n confirmed,\n unconfirmed,\n history\n }));\n const historyUnconfirmed = history.filter(r => r.height <= 0).length;\n const transactions = details === 'txs' ? await (0, utils_1.getTransactions)(client, history).then(txs => txs.map(tx => (0, blockbook_1.transformTransaction)(tx, descriptor))).then(blockchain_link_utils_1.sortTxsFromLatest) : undefined;\n return {\n descriptor,\n balance: confirmed.toString(),\n availableBalance: (confirmed + unconfirmed).toString(),\n empty: !history.length,\n history: {\n total: history.length - historyUnconfirmed,\n unconfirmed: historyUnconfirmed,\n transactions\n },\n page: details === 'txs' ? getPagination(pageSize, transactions ?? []) : undefined\n };\n }\n const discover = (0, utils_1.discoverAddress)(client);\n const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, 'receive', network).then(getBalances(client));\n const change = await (0, utxo_lib_1.discovery)(discover, descriptor, 'change', network).then(getBalances(client));\n const batch = receive.concat(change);\n const [confirmed, unconfirmed] = batch.reduce(([c, u], {\n confirmed,\n unconfirmed\n }) => [c + confirmed, u + unconfirmed], [0, 0]);\n const history = batch.flatMap(({\n history\n }) => history);\n const historyUnconfirmed = history.filter(r => r.height <= 0).length;\n const transformAddressInfo = ({\n address,\n path,\n history,\n confirmed\n }) => ({\n address,\n path,\n transfers: history.length,\n balance: confirmed.toString(),\n sent: '0',\n received: '0'\n });\n const addresses = {\n change: change.map(transformAddressInfo),\n unused: receive.filter(recv => !recv.history.length).map(transformAddressInfo),\n used: receive.filter(recv => recv.history.length).map(transformAddressInfo)\n };\n const transactions = ['tokenBalances', 'txids', 'txs'].includes(details) ? await (0, utils_1.getTransactions)(client, history).then(txs => txs.map(tx => (0, blockbook_1.transformTransaction)(tx, addresses))).then(blockchain_link_utils_1.sortTxsFromLatest) : [];\n const extendAddressInfo = ({\n address,\n path,\n transfers,\n balance\n }) => ({\n address,\n path,\n transfers,\n balance: '0',\n sent: '0',\n received: '0',\n ...(['tokenBalances', 'txids', 'txs'].includes(details) && transfers ? {\n balance,\n sent: (0, exports.sumAddressValues)(transactions, address, tx => tx.details.vin).toString(),\n received: (0, exports.sumAddressValues)(transactions, address, tx => tx.details.vout).toString()\n } : {})\n });\n return {\n descriptor,\n balance: confirmed.toString(),\n availableBalance: (confirmed + unconfirmed).toString(),\n empty: !history.length,\n history: {\n total: history.length - historyUnconfirmed,\n unconfirmed: historyUnconfirmed,\n transactions: details === 'txs' ? transactions : undefined\n },\n addresses: details !== 'basic' ? {\n change: addresses.change.map(extendAddressInfo),\n unused: addresses.unused.map(extendAddressInfo),\n used: addresses.used.map(extendAddressInfo)\n } : undefined,\n page: details === 'txs' ? getPagination(pageSize, transactions) : undefined\n };\n};\nexports.default = getAccountInfo;\n//# sourceMappingURL=getAccountInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst utils_1 = require(\"@trezor/utils\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst utils_2 = require(\"../utils\");\nconst transformUtxo = (currentHeight, addressInfo = {}) => ({\n height,\n tx_hash,\n tx_pos,\n value\n}) => ({\n txid: tx_hash,\n vout: tx_pos,\n amount: value.toString(),\n address: '',\n path: '',\n ...addressInfo,\n ...(height ? {\n blockHeight: height,\n confirmations: currentHeight - height + 1\n } : {\n blockHeight: -1,\n confirmations: 0\n })\n});\nconst getAccountUtxo = async (client, descriptor) => {\n const {\n block: {\n height\n },\n network\n } = client.getInfo() || (0, utils_1.throwError)('Client not initialized');\n const parsed = (0, utils_2.tryGetScripthash)(descriptor, network);\n if (parsed.valid) {\n const utxos = await client.request('blockchain.scripthash.listunspent', parsed.scripthash);\n return utxos.map(transformUtxo(height));\n }\n const discover = (0, utils_2.discoverAddress)(client);\n const receive = await (0, utxo_lib_1.discovery)(discover, descriptor, 'receive', network);\n const change = await (0, utxo_lib_1.discovery)(discover, descriptor, 'change', network);\n const result = await Promise.all(receive.concat(change).filter(a => a.history.length).map(({\n address,\n path,\n scripthash\n }) => client.request('blockchain.scripthash.listunspent', scripthash).then(utxos => utxos.map(transformUtxo(height, {\n address,\n path\n }))))).then(res => res.flat());\n return result;\n};\nexports.default = getAccountUtxo;\n//# sourceMappingURL=getAccountUtxo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst utils_1 = require(\"../utils\");\nconst getBlockHash = async (client, payload) => {\n const blockheader = await client.request('blockchain.block.header', payload);\n return (0, utils_1.blockheaderToBlockhash)(blockheader);\n};\nexports.default = getBlockHash;\n//# sourceMappingURL=getBlockHash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst utils_1 = require(\"@trezor/utils\");\nconst utils_2 = require(\"../utils\");\nconst getInfo = client => {\n const {\n url,\n coin,\n block: {\n hex,\n height\n },\n version: [_name, version]\n } = client.getInfo() || (0, utils_1.throwError)('Client not initialized');\n return Promise.resolve({\n url,\n version,\n blockHeight: height,\n blockHash: (0, utils_2.blockheaderToBlockhash)(hex),\n name: 'Bitcoin',\n shortcut: coin,\n network: coin,\n testnet: coin === 'REGTEST',\n decimals: 8\n });\n};\nexports.default = getInfo;\n//# sourceMappingURL=getInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst blockbook_1 = require(\"@trezor/blockchain-link-utils/lib/blockbook\");\nconst utils_1 = require(\"../utils\");\nconst getTransaction = async (client, payload) => {\n const [tx] = await (0, utils_1.getTransactions)(client, [{\n tx_hash: payload,\n height: -1\n }]);\n return (0, blockbook_1.transformTransaction)(tx);\n};\nexports.default = getTransaction;\n//# sourceMappingURL=getTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst pushTransaction = async (client, payload) => {\n const res = await client.request('blockchain.transaction.broadcast', payload.hex);\n return res;\n};\nexports.default = pushTransaction;\n//# sourceMappingURL=pushTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pushTransaction = exports.getTransaction = exports.getInfo = exports.getBlockHash = exports.getAccountUtxo = exports.getAccountInfo = exports.getAccountBalanceHistory = exports.estimateFee = void 0;\nconst tslib_1 = require(\"tslib\");\nvar estimateFee_1 = require(\"./estimateFee\");\nObject.defineProperty(exports, \"estimateFee\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(estimateFee_1).default;\n }\n});\nvar getAccountBalanceHistory_1 = require(\"./getAccountBalanceHistory\");\nObject.defineProperty(exports, \"getAccountBalanceHistory\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAccountBalanceHistory_1).default;\n }\n});\nvar getAccountInfo_1 = require(\"./getAccountInfo\");\nObject.defineProperty(exports, \"getAccountInfo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAccountInfo_1).default;\n }\n});\nvar getAccountUtxo_1 = require(\"./getAccountUtxo\");\nObject.defineProperty(exports, \"getAccountUtxo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAccountUtxo_1).default;\n }\n});\nvar getBlockHash_1 = require(\"./getBlockHash\");\nObject.defineProperty(exports, \"getBlockHash\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getBlockHash_1).default;\n }\n});\nvar getInfo_1 = require(\"./getInfo\");\nObject.defineProperty(exports, \"getInfo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getInfo_1).default;\n }\n});\nvar getTransaction_1 = require(\"./getTransaction\");\nObject.defineProperty(exports, \"getTransaction\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getTransaction_1).default;\n }\n});\nvar pushTransaction_1 = require(\"./pushTransaction\");\nObject.defineProperty(exports, \"pushTransaction\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(pushTransaction_1).default;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SocketBase = void 0;\nconst TIMEOUT = 10000;\nconst KEEP_ALIVE = true;\nclass SocketBase {\n socket;\n host;\n port;\n timeout;\n keepAlive;\n constructor({\n host,\n port,\n timeout,\n keepAlive\n }) {\n this.host = host;\n this.port = port;\n this.timeout = timeout !== undefined ? timeout : TIMEOUT;\n this.keepAlive = keepAlive !== undefined ? keepAlive : KEEP_ALIVE;\n }\n async connect(listener) {\n this.socket = await this.openSocket(listener);\n }\n close() {\n this.socket?.end();\n this.socket?.destroy();\n }\n send(data) {\n return this.socket?.write(data);\n }\n configureSocket(socket) {\n socket.setTimeout(this.timeout);\n socket.setEncoding('utf8');\n socket.setKeepAlive(this.keepAlive);\n socket.setNoDelay(true);\n }\n bindSocket(socket, listener) {\n socket.on('connect', () => {\n socket.setTimeout(0);\n listener.onConnect();\n });\n socket.on('close', e => {\n listener.onClose(e);\n });\n socket.on('timeout', () => {\n const e = new Error('ETIMEDOUT');\n e.errorno = 'ETIMEDOUT';\n e.code = 'ETIMEDOUT';\n e.connect = false;\n socket.emit('error', e);\n });\n socket.on('data', chunk => {\n socket.setTimeout(0);\n listener.onReceive(chunk);\n });\n socket.on('end', e => {\n socket.setTimeout(0);\n listener.onEnd(e);\n });\n socket.on('error', e => {\n listener.onError(e);\n });\n }\n}\nexports.SocketBase = SocketBase;\n//# sourceMappingURL=base.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TcpSocket = void 0;\nconst net_1 = require(\"net\");\nconst base_1 = require(\"./base\");\nclass TcpSocket extends base_1.SocketBase {\n openSocket(listener) {\n const socket = new net_1.Socket();\n this.configureSocket(socket);\n this.bindSocket(socket, listener);\n return new Promise((resolve, reject) => {\n const errorHandler = err => reject(err);\n socket.on('error', errorHandler);\n socket.connect(this.port, this.host, () => {\n socket.removeListener('error', errorHandler);\n resolve(socket);\n });\n });\n }\n}\nexports.TcpSocket = TcpSocket;\n//# sourceMappingURL=tcp.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TlsSocket = void 0;\nconst tls_1 = require(\"tls\");\nconst base_1 = require(\"./base\");\nclass TlsSocket extends base_1.SocketBase {\n openSocket(listener) {\n const socket = new tls_1.TLSSocket(null);\n this.configureSocket(socket);\n this.bindSocket(socket, listener);\n return new Promise((resolve, reject) => {\n const errorHandler = err => reject(err);\n socket.on('error', errorHandler);\n socket.connect(this.port, this.host, () => {\n socket.removeListener('error', errorHandler);\n resolve(socket);\n });\n });\n }\n}\nexports.TlsSocket = TlsSocket;\n//# sourceMappingURL=tls.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TorSocket = void 0;\nconst base_1 = require(\"./base\");\nclass TorSocket extends base_1.SocketBase {\n proxyAgent;\n constructor({\n proxyAgent,\n ...rest\n }) {\n super(rest);\n this.proxyAgent = proxyAgent;\n }\n async openSocket(listener) {\n const {\n host,\n port\n } = this;\n const socket = await this.proxyAgent.connect(null, {\n host,\n port,\n timeout: this.timeout,\n secureEndpoint: false\n }).catch(e => {\n listener.onError(e);\n throw e;\n });\n listener.onConnect();\n this.configureSocket(socket);\n this.bindSocket(socket, listener);\n return socket;\n }\n}\nexports.TorSocket = TorSocket;\n//# sourceMappingURL=tor.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSocket = void 0;\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils_1 = require(\"@trezor/utils\");\nconst tcp_1 = require(\"./tcp\");\nconst tls_1 = require(\"./tls\");\nconst tor_1 = require(\"./tor\");\nconst createSocket = (url, options) => {\n const parsed = (0, utils_1.parseElectrumUrl)(url);\n if (!parsed) throw new errors_1.CustomError('Invalid electrum url');\n const {\n host,\n port,\n protocol\n } = parsed;\n const {\n timeout,\n keepAlive,\n proxyAgent\n } = options || {};\n if (proxyAgent) {\n return new tor_1.TorSocket({\n host,\n port,\n timeout,\n keepAlive,\n proxyAgent\n });\n }\n switch (protocol) {\n case 't':\n return new tcp_1.TcpSocket({\n host,\n port,\n timeout,\n keepAlive\n });\n case 's':\n default:\n return new tls_1.TlsSocket({\n host,\n port,\n timeout,\n keepAlive\n });\n }\n};\nexports.createSocket = createSocket;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Electrum;\nconst tslib_1 = require(\"tslib\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst baseWorker_1 = require(\"../baseWorker\");\nconst caching_1 = require(\"./client/caching\");\nconst L = tslib_1.__importStar(require(\"./listeners\"));\nconst M = tslib_1.__importStar(require(\"./methods\"));\nconst sockets_1 = require(\"./sockets\");\nconst onRequest = async request => {\n const client = await request.connect();\n switch (request.type) {\n case constants_1.MESSAGES.GET_INFO:\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: await M.getInfo(client)\n };\n case constants_1.MESSAGES.GET_BLOCK_HASH:\n return {\n type: constants_1.RESPONSES.GET_BLOCK_HASH,\n payload: await M.getBlockHash(client, request.payload)\n };\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: await M.getAccountInfo(client, request.payload)\n };\n case constants_1.MESSAGES.GET_ACCOUNT_UTXO:\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_UTXO,\n payload: await M.getAccountUtxo(client, request.payload)\n };\n case constants_1.MESSAGES.GET_TRANSACTION:\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION,\n payload: await M.getTransaction(client, request.payload)\n };\n case constants_1.MESSAGES.GET_TRANSACTION_HEX:\n return {\n type: constants_1.RESPONSES.GET_TRANSACTION_HEX,\n payload: await client.request('blockchain.transaction.get', request.payload, false)\n };\n case constants_1.MESSAGES.GET_ACCOUNT_BALANCE_HISTORY:\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_BALANCE_HISTORY,\n payload: await M.getAccountBalanceHistory(client, request.payload)\n };\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload: await M.estimateFee(client, request.payload)\n };\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload: await M.pushTransaction(client, request.payload)\n };\n case constants_1.MESSAGES.SUBSCRIBE:\n switch (request.payload.type) {\n case 'block':\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: request.blockListener.subscribe()\n };\n case 'addresses':\n case 'accounts':\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: await request.txListener.subscribe(request.payload)\n };\n default:\n throw new errors_1.CustomError(`Subscription ${request.payload.type} not implemented`);\n }\n case constants_1.MESSAGES.UNSUBSCRIBE:\n switch (request.payload.type) {\n case 'block':\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: request.blockListener.unsubscribe()\n };\n case 'addresses':\n case 'accounts':\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: await request.txListener.unsubscribe(request.payload)\n };\n default:\n throw new errors_1.CustomError(`Subscription ${request.payload.type} not implemented`);\n }\n case 'raw':\n {\n const {\n method,\n params\n } = request.payload;\n return client.request(method, ...params).then(res => ({\n type: method,\n payload: res\n }));\n }\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass ElectrumWorker extends baseWorker_1.BaseWorker {\n blockListener;\n txListener;\n constructor() {\n super();\n this.blockListener = L.blockListener(this);\n this.txListener = L.txListener(this);\n }\n isConnected(api) {\n return api?.isConnected() ?? false;\n }\n async tryConnect(url) {\n const {\n debug,\n timeout,\n keepAlive,\n name\n } = this.settings;\n const socket = (0, sockets_1.createSocket)(url, {\n timeout,\n keepAlive,\n proxyAgent: this.proxyAgent\n });\n const api = new caching_1.CachingElectrumClient();\n await api.connect(socket, {\n url,\n coin: name ?? 'BTC',\n debug,\n client: {\n name: 'blockchain-link',\n protocolVersion: '1.4'\n }\n });\n this.post({\n id: -1,\n type: constants_1.RESPONSES.CONNECTED\n });\n return api;\n }\n disconnect() {\n if (this.api?.isConnected()) {\n this.api.close();\n }\n }\n cleanup() {\n if (this.api) {\n this.api.close();\n }\n super.cleanup();\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n post: data => this.post(data),\n state: this.state,\n blockListener: this.blockListener,\n txListener: this.txListener\n };\n const response = await onRequest(request);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, error);\n }\n }\n}\nfunction Electrum() {\n return new ElectrumWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new ElectrumWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "/**\n * To add a new error, follow the instructions at\n * https://github.com/anza-xyz/kit/tree/main/packages/errors/#adding-a-new-error\n *\n * @module\n * @privateRemarks\n * WARNING:\n * - Don't remove error codes\n * - Don't change or reorder error codes.\n *\n * Good naming conventions:\n * - Prefixing common errors — e.g. under the same package — can be a good way to namespace them. E.g. All codec-related errors start with `SOLANA_ERROR__CODECS__`.\n * - Use consistent names — e.g. choose `PDA` or `PROGRAM_DERIVED_ADDRESS` and stick with it. Ensure your names are consistent with existing error codes. The decision might have been made for you.\n * - Recommended prefixes and suffixes:\n * - `MALFORMED_`: Some input was not constructed properly. E.g. `MALFORMED_BASE58_ENCODED_ADDRESS`.\n * - `INVALID_`: Some input is invalid (other than because it was MALFORMED). E.g. `INVALID_NUMBER_OF_BYTES`.\n * - `EXPECTED_`: Some input was different than expected, no need to specify the \"GOT\" part unless necessary. E.g. `EXPECTED_DECODED_ACCOUNT`.\n * - `_CANNOT_`: Some operation cannot be performed or some input cannot be used due to some condition. E.g. `CANNOT_DECODE_EMPTY_BYTE_ARRAY` or `PDA_CANNOT_END_WITH_PDA_MARKER`.\n * - `_MUST_BE_`: Some condition must be true. E.g. `NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE`.\n * - `_FAILED_TO_`: Tried to perform some operation and failed. E.g. `FAILED_TO_DECODE_ACCOUNT`.\n * - `_NOT_FOUND`: Some operation lead to not finding something. E.g. `ACCOUNT_NOT_FOUND`.\n * - `_OUT_OF_RANGE`: Some value is out of range. E.g. `ENUM_DISCRIMINATOR_OUT_OF_RANGE`.\n * - `_EXCEEDED`: Some limit was exceeded. E.g. `PDA_MAX_SEED_LENGTH_EXCEEDED`.\n * - `_MISMATCH`: Some elements do not match. E.g. `ENCODER_DECODER_FIXED_SIZE_MISMATCH`.\n * - `_MISSING`: Some required input is missing. E.g. `TRANSACTION_FEE_PAYER_MISSING`.\n * - `_UNIMPLEMENTED`: Some required component is not available in the environment. E.g. `SUBTLE_CRYPTO_VERIFY_FUNCTION_UNIMPLEMENTED`.\n */\nexport const SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED = 1;\nexport const SOLANA_ERROR__INVALID_NONCE = 2;\nexport const SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND = 3;\nexport const SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE = 4;\nexport const SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH = 5;\nexport const SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE = 6;\nexport const SOLANA_ERROR__MALFORMED_BIGINT_STRING = 7;\nexport const SOLANA_ERROR__MALFORMED_NUMBER_STRING = 8;\nexport const SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE = 9;\nexport const SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR = 10;\n\n// JSON-RPC-related errors.\n// Reserve error codes in the range [-32768, -32000]\n// Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-api/src/custom_error.rs\nexport const SOLANA_ERROR__JSON_RPC__PARSE_ERROR = -32700;\nexport const SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR = -32603;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_PARAMS = -32602;\nexport const SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND = -32601;\nexport const SOLANA_ERROR__JSON_RPC__INVALID_REQUEST = -32600;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED = -32016;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION = -32015;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET = -32014;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH = -32013;\nexport const SOLANA_ERROR__JSON_RPC__SCAN_ERROR = -32012;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE = -32011;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX = -32010;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED = -32009;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT = -32008;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED = -32007;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE = -32006;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY = -32005;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE = -32004;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE = -32003;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE = -32002;\nexport const SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP = -32001;\n\n// Addresses-related errors.\n// Reserve error codes in the range [2800000-2800999].\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH = 2800000;\nexport const SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE = 2800001;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS = 2800002;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY = 2800003;\nexport const SOLANA_ERROR__ADDRESSES__MALFORMED_PDA = 2800004;\nexport const SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE = 2800005;\nexport const SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED = 2800006;\nexport const SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED = 2800007;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE = 2800008;\nexport const SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED = 2800009;\nexport const SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER = 2800010;\nexport const SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS = 2800011;\n\n// Account-related errors.\n// Reserve error codes in the range [3230000-3230999].\nexport const SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND = 3230000;\nexport const SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND = 32300001;\nexport const SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT = 3230002;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT = 3230003;\nexport const SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED = 3230004;\n\n// Subtle-Crypto-related errors.\n// Reserve error codes in the range [3610000-3610999].\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT = 3610000;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED = 3610001;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED = 3610002;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED = 3610003;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED = 3610004;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED = 3610005;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED = 3610006;\nexport const SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY = 3610007;\n\n// Crypto-related errors.\n// Reserve error codes in the range [3611000-3611050].\nexport const SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED = 3611000;\n\n// Key-related errors.\n// Reserve error codes in the range [3704000-3704999].\nexport const SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH = 3704000;\nexport const SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH = 3704001;\nexport const SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH = 3704002;\nexport const SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE = 3704003;\nexport const SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY = 3704004;\n\n// Instruction-related errors.\n// Reserve error codes in the range [4128000-4128999].\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS = 4128000;\nexport const SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA = 4128001;\nexport const SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH = 4128002;\n\n// Instruction errors.\n// Reserve error codes starting with [4615000-4615999] for the Rust enum `InstructionError`.\n// Error names here are dictated by the RPC (see ./instruction-error.ts).\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN = 4615000;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR = 4615001;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT = 4615002;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA = 4615003;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA = 4615004;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL = 4615005;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS = 4615006;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID = 4615007;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE = 4615008;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED = 4615009;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT = 4615010;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION = 4615011;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID = 4615012;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND = 4615013;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED = 4615014;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE = 4615015;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED = 4615016;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX = 4615017;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED = 4615018;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED = 4615019;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS = 4615020;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED = 4615021;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE = 4615022;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED = 4615023;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 4615024;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC = 4615025;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM = 4615026;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR = 4615027;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED = 4615028;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE = 4615029;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT = 4615030;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID = 4615031;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH = 4615032;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT = 4615033;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED = 4615034;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED = 4615035;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS = 4615036;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC = 4615037;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED = 4615038;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION = 4615039;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE = 4615040;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE = 4615041;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE = 4615042;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE = 4615043;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY = 4615044;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR = 4615045;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT = 4615046;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER = 4615047;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW = 4615048;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR = 4615049;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER = 4615050;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED = 4615051;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED = 4615052;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED = 4615053;\nexport const SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS = 4615054;\n\n// Signer-related errors.\n// Reserve error codes in the range [5508000-5508999].\nexport const SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS = 5508000;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER = 5508001;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER = 5508002;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER = 5508003;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER = 5508004;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER = 5508005;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER = 5508006;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER = 5508007;\nexport const SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER = 5508008;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS = 5508009;\nexport const SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING = 5508010;\nexport const SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED = 5508011;\n\n// Transaction-related errors.\n// Reserve error codes in the range [5663000-5663999].\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES = 5663000;\nexport const SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE = 5663001;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME = 5663002;\nexport const SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME = 5663003;\nexport const SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE = 5663004;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING = 5663005;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE = 5663006;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND = 5663007;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING = 5663008;\nexport const SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING = 5663009;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING = 5663010;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING = 5663011;\nexport const SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING = 5663012;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING = 5663013;\nexport const SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE = 5663014;\nexport const SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION = 5663015;\nexport const SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES = 5663016;\nexport const SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH = 5663017;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT = 5663018;\nexport const SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT = 5663019;\nexport const SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT = 5663020;\n\n// Transaction errors.\n// Reserve error codes starting with [7050000-7050999] for the Rust enum `TransactionError`.\n// Error names here are dictated by the RPC (see ./transaction-error.ts).\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN = 7050000;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE = 7050001;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE = 7050002;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND = 7050003;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND = 7050004;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 7050005;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE = 7050006;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED = 7050007;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND = 7050008;\n// `InstructionError` intentionally omitted.\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP = 7050009;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE = 7050010;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX = 7050011;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE = 7050012;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION = 7050013;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE = 7050014;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE = 7050015;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING = 7050016;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT = 7050017;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION = 7050018;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT = 7050019;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT = 7050020;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT = 7050021;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS = 7050022;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND = 7050023;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER = 7050024;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA = 7050025;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX = 7050026;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT = 7050027;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT = 7050028;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT = 7050029;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION = 7050030;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT = 7050031;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED = 7050032;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT = 7050033;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED = 7050034;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED = 7050035;\nexport const SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION = 7050036;\n\n// Codec-related errors.\n// Reserve error codes in the range [8078000-8078999].\nexport const SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY = 8078000;\nexport const SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH = 8078001;\nexport const SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH = 8078002;\nexport const SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH = 8078003;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH = 8078004;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH = 8078005;\nexport const SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH = 8078006;\nexport const SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS = 8078007;\nexport const SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE = 8078008;\nexport const SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT = 8078009;\nexport const SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT = 8078010;\nexport const SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE = 8078011;\nexport const SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE = 8078012;\nexport const SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH = 8078013;\nexport const SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE = 8078014;\nexport const SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT = 8078015;\nexport const SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE = 8078016;\nexport const SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE = 8078017;\nexport const SOLANA_ERROR__CODECS__INVALID_CONSTANT = 8078018;\nexport const SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE = 8078019;\nexport const SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL = 8078020;\nexport const SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES = 8078021;\nexport const SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS = 8078022;\n\n// RPC-related errors.\n// Reserve error codes in the range [8100000-8100999].\nexport const SOLANA_ERROR__RPC__INTEGER_OVERFLOW = 8100000;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN = 8100001;\nexport const SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR = 8100002;\nexport const SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD = 8100003;\n\n// RPC-Subscriptions-related errors.\n// Reserve error codes in the range [8190000-8190999].\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN = 8190000;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID = 8190001;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED = 8190002;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED = 8190003;\nexport const SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT = 8190004;\n\n// Invariant violation errors.\n// Reserve error codes in the range [9900000-9900999].\n// These errors should only be thrown when there is a bug with the\n// library itself and should, in theory, never reach the end user.\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING = 9900000;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE = 9900001;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING = 9900002;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE = 9900003;\nexport const SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED = 9900004;\n\n/**\n * A union of every Solana error code\n *\n * @privateRemarks\n * You might be wondering why this is not a TypeScript enum or const enum.\n *\n * One of the goals of this library is to enable people to use some or none of it without having to\n * bundle all of it.\n *\n * If we made the set of error codes an enum then anyone who imported it (even if to only use a\n * single error code) would be forced to bundle every code and its label.\n *\n * Const enums appear to solve this problem by letting the compiler inline only the codes that are\n * actually used. Unfortunately exporting ambient (const) enums from a library like `@solana/errors`\n * is not safe, for a variety of reasons covered here: https://stackoverflow.com/a/28818850\n */\nexport type SolanaErrorCode =\n | typeof SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED\n | typeof SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT\n | typeof SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND\n | typeof SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS\n | typeof SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE\n | typeof SOLANA_ERROR__ADDRESSES__MALFORMED_PDA\n | typeof SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE\n | typeof SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER\n | typeof SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED\n | typeof SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY\n | typeof SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS\n | typeof SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH\n | typeof SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH\n | typeof SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE\n | typeof SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH\n | typeof SOLANA_ERROR__CODECS__INVALID_CONSTANT\n | typeof SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT\n | typeof SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS\n | typeof SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE\n | typeof SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES\n | typeof SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE\n | typeof SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS\n | typeof SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA\n | typeof SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR\n | typeof SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH\n | typeof SOLANA_ERROR__INVALID_NONCE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING\n | typeof SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE\n | typeof SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_PARAMS\n | typeof SOLANA_ERROR__JSON_RPC__INVALID_REQUEST\n | typeof SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND\n | typeof SOLANA_ERROR__JSON_RPC__PARSE_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SCAN_ERROR\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE\n | typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION\n | typeof SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH\n | typeof SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY\n | typeof SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE\n | typeof SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE\n | typeof SOLANA_ERROR__MALFORMED_BIGINT_STRING\n | typeof SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR\n | typeof SOLANA_ERROR__MALFORMED_NUMBER_STRING\n | typeof SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD\n | typeof SOLANA_ERROR__RPC__INTEGER_OVERFLOW\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR\n | typeof SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID\n | typeof SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER\n | typeof SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS\n | typeof SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING\n | typeof SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED\n | typeof SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES\n | typeof SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE\n | typeof SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES\n | typeof SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE\n | typeof SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH\n | typeof SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING\n | typeof SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT\n | typeof SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT;\n\n/**\n * Errors of this type are understood to have an optional {@link SolanaError} nested inside as\n * `cause`.\n */\nexport type SolanaErrorCodeWithCause = typeof SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE;\n", "/**\n * To add a new error, follow the instructions at\n * https://github.com/anza-xyz/kit/tree/main/packages/errors/#adding-a-new-error\n *\n * @privateRemarks\n * WARNING:\n * - Don't change or remove members of an error's context.\n */\nimport {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS,\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED,\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_CONSTANT,\n SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE,\n SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW,\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS,\n SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH,\n SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND,\n SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS,\n SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED,\n SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SOLANA_ERROR__INVALID_NONCE,\n SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE,\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__MALFORMED_BIGINT_STRING,\n SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR,\n SOLANA_ERROR__MALFORMED_NUMBER_STRING,\n SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD,\n SOLANA_ERROR__RPC__INTEGER_OVERFLOW,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS,\n SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER,\n SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY,\n SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING,\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n SolanaErrorCode,\n} from './codes';\nimport { RpcSimulateTransactionResult } from './json-rpc-error';\n\ntype BasicInstructionErrorContext = Readonly<{ [P in T]: { index: number } }>;\n\ntype DefaultUnspecifiedErrorContextToUndefined = {\n [P in SolanaErrorCode]: P extends keyof T ? T[P] : undefined;\n};\n\ntype TypedArrayMutableProperties = 'copyWithin' | 'fill' | 'reverse' | 'set' | 'sort';\ninterface ReadonlyUint8Array extends Omit {\n readonly [n: number]: number;\n}\n\n/** A amount of bytes. */\ntype Bytes = number;\n\n/**\n * A map of every {@link SolanaError} code to the type of its `context` property.\n */\nexport type SolanaErrorContext = DefaultUnspecifiedErrorContextToUndefined<\n BasicInstructionErrorContext<\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID\n | typeof SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR\n > & {\n [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: {\n address: string;\n };\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]: {\n addresses: string[];\n };\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: {\n address: string;\n };\n [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: {\n address: string;\n };\n [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: {\n addresses: string[];\n };\n [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: {\n putativeAddress: string;\n };\n [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]: {\n actualLength: number;\n };\n [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]: {\n actual: number;\n maxSeeds: number;\n };\n [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]: {\n actual: number;\n index: number;\n maxSeedLength: number;\n };\n [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]: {\n bump: number;\n };\n [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]: {\n actualLength: number;\n };\n [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]: {\n actualLength: number;\n };\n [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]: {\n currentBlockHeight: bigint;\n lastValidBlockHeight: bigint;\n };\n [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]: {\n codecDescription: string;\n };\n [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]: {\n stringValues: string[];\n };\n [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]: {\n encodedBytes: ReadonlyUint8Array;\n hexEncodedBytes: string;\n hexSentinel: string;\n sentinel: ReadonlyUint8Array;\n };\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]: {\n decoderFixedSize: number;\n encoderFixedSize: number;\n };\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]: {\n decoderMaxSize: number | undefined;\n encoderMaxSize: number | undefined;\n };\n [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]: {\n discriminator: bigint | number;\n formattedValidDiscriminators: string;\n validDiscriminators: number[];\n };\n [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]: {\n bytesLength: number;\n codecDescription: string;\n };\n [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]: {\n codecDescription: string;\n expectedSize: number;\n hexZeroValue: string;\n zeroValue: ReadonlyUint8Array;\n };\n [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]: {\n bytesLength: number;\n codecDescription: string;\n expected: number;\n };\n [SOLANA_ERROR__CODECS__INVALID_CONSTANT]: {\n constant: ReadonlyUint8Array;\n data: ReadonlyUint8Array;\n hexConstant: string;\n hexData: string;\n offset: number;\n };\n [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]: {\n value: bigint | boolean | number | string | null | undefined;\n variants: readonly (bigint | boolean | number | string | null | undefined)[];\n };\n [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]: {\n formattedNumericalValues: string;\n numericalValues: number[];\n stringValues: string[];\n variant: number | string | symbol;\n };\n [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]: {\n value: bigint | boolean | number | string | null | undefined;\n variants: readonly (bigint | boolean | number | string | null | undefined)[];\n };\n [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]: {\n actual: bigint | number;\n codecDescription: string;\n expected: bigint | number;\n };\n [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: {\n alphabet: string;\n base: number;\n value: string;\n };\n [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]: {\n discriminator: bigint | number;\n maxRange: number;\n minRange: number;\n };\n [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]: {\n codecDescription: string;\n max: bigint | number;\n min: bigint | number;\n value: bigint | number;\n };\n [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]: {\n bytesLength: number;\n codecDescription: string;\n offset: number;\n };\n [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]: {\n decodedBytes: ReadonlyUint8Array;\n hexDecodedBytes: string;\n hexSentinel: string;\n sentinel: ReadonlyUint8Array;\n };\n [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]: {\n maxRange: number;\n minRange: number;\n variant: number;\n };\n [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: {\n encodedData: string;\n index: number;\n };\n [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: {\n code: number;\n index: number;\n };\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: {\n errorName: string;\n index: number;\n instructionErrorContext?: unknown;\n };\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: {\n data?: ReadonlyUint8Array;\n programAddress: string;\n };\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: {\n accountAddresses?: string[];\n programAddress: string;\n };\n [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]: {\n actualProgramAddress: string;\n expectedProgramAddress: string;\n };\n [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]: {\n actualLength: number;\n };\n [SOLANA_ERROR__INVALID_NONCE]: {\n actualNonceValue: string;\n expectedNonceValue: string;\n };\n [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]: {\n cacheKey: string;\n };\n [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]: {\n channelName: string;\n supportedChannelNames: string[];\n };\n [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]: {\n unexpectedValue: unknown;\n };\n [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: {\n contextSlot: bigint;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: {\n numSlotsBehind?: number;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: Omit<\n RpcSimulateTransactionResult,\n 'err'\n >;\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: {\n __serverMessage: string;\n };\n [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: {\n byteLength: number;\n };\n [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]: {\n actualLength: number;\n };\n [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]: {\n actualLength: number;\n };\n [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]: {\n actualLength: number;\n };\n [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: {\n value: string;\n };\n [SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]: {\n error: unknown;\n message: string;\n };\n [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: {\n value: string;\n };\n [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: {\n nonceAccountAddress: string;\n };\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]: {\n notificationName: string;\n };\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: {\n errorEvent: Event;\n };\n [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: {\n method: string;\n params: unknown[];\n };\n [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]: {\n argumentLabel: string;\n keyPath: readonly (number | string | symbol)[];\n methodName: string;\n optionalPathLabel: string;\n path?: string;\n value: bigint;\n };\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: {\n headers: Headers;\n message: string;\n statusCode: number;\n };\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]: {\n headers: string[];\n };\n [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]: {\n address: string;\n };\n [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: {\n key: CryptoKey;\n };\n [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]: {\n value: bigint;\n };\n [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]: {\n index: number;\n };\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]: {\n accountIndex: number;\n };\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]: {\n accountIndex: number;\n };\n [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: {\n errorName: string;\n transactionErrorContext?: unknown;\n };\n [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]: {\n expectedAddresses: string[];\n unexpectedAddresses: string[];\n };\n [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: {\n index: number;\n };\n [SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]: {\n transactionSize: Bytes;\n transactionSizeLimit: Bytes;\n };\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]: {\n lookupTableAddresses: string[];\n };\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]: {\n highestKnownIndex: number;\n highestRequestedIndex: number;\n lookupTableAddress: string;\n };\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]: {\n index: number;\n };\n [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]: {\n unitsConsumed: number;\n };\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]: {\n programAddress: string;\n };\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]: {\n programAddress: string;\n };\n [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]: {\n numRequiredSignatures: number;\n signaturesLength: number;\n signerAddresses: string[];\n };\n [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: {\n addresses: string[];\n };\n [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]: {\n actualVersion: number;\n };\n }\n>;\n\nexport function decodeEncodedContext(encodedContext: string): object {\n const decodedUrlString = __NODEJS__ ? Buffer.from(encodedContext, 'base64').toString('utf8') : atob(encodedContext);\n return Object.fromEntries(new URLSearchParams(decodedUrlString).entries());\n}\n\nfunction encodeValue(value: unknown): string {\n if (Array.isArray(value)) {\n const commaSeparatedValues = value.map(encodeValue).join('%2C%20' /* \", \" */);\n return '%5B' /* \"[\" */ + commaSeparatedValues + /* \"]\" */ '%5D';\n } else if (typeof value === 'bigint') {\n return `${value}n`;\n } else {\n return encodeURIComponent(\n String(\n value != null && Object.getPrototypeOf(value) === null\n ? // Plain objects with no prototype don't have a `toString` method.\n // Convert them before stringifying them.\n { ...(value as object) }\n : value,\n ),\n );\n }\n}\n\nfunction encodeObjectContextEntry([key, value]: [string, unknown]): `${typeof key}=${string}` {\n return `${key}=${encodeValue(value)}`;\n}\n\nexport function encodeContextObject(context: object): string {\n const searchParamsString = Object.entries(context).map(encodeObjectContextEntry).join('&');\n return __NODEJS__ ? Buffer.from(searchParamsString, 'utf8').toString('base64') : btoa(searchParamsString);\n}\n", "/**\n * To add a new error, follow the instructions at\n * https://github.com/anza-xyz/kit/tree/main/packages/errors#adding-a-new-error\n *\n * WARNING:\n * - Don't change the meaning of an error message.\n */\nimport {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS,\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY,\n SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED,\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_CONSTANT,\n SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE,\n SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE,\n SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW,\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS,\n SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH,\n SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX,\n SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND,\n SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY,\n SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC,\n SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS,\n SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE,\n SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE,\n SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED,\n SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SOLANA_ERROR__INVALID_NONCE,\n SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE,\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE,\n SOLANA_ERROR__MALFORMED_BIGINT_STRING,\n SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR,\n SOLANA_ERROR__MALFORMED_NUMBER_STRING,\n SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD,\n SOLANA_ERROR__RPC__INTEGER_OVERFLOW,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR,\n SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS,\n SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER,\n SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER,\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY,\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING,\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES,\n SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT,\n SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME,\n SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE,\n SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE,\n SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED,\n SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP,\n SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE,\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT,\n SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED,\n SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE,\n SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS,\n SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT,\n SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT,\n SolanaErrorCode,\n} from './codes';\n\n/**\n * A map of every {@link SolanaError} code to the error message shown to developers in development\n * mode.\n */\nexport const SolanaErrorMessages: Readonly<{\n // This type makes this data structure exhaustive with respect to `SolanaErrorCode`.\n // TypeScript will fail to build this project if add an error code without a message.\n [P in SolanaErrorCode]: string;\n}> = {\n [SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND]: 'Account not found at address: $address',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED]:\n 'Not all accounts were decoded. Encoded accounts found at addresses: $addresses.',\n [SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT]: 'Expected decoded account at address: $address',\n [SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT]: 'Failed to decode account data at address: $address',\n [SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND]: 'Accounts not found at addresses: $addresses',\n [SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED]:\n 'Unable to find a viable program address bump seed.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BASE58_ENCODED_ADDRESS]: '$putativeAddress is not a base58-encoded address.',\n [SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH]:\n 'Expected base58 encoded address to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY]: 'The `CryptoKey` must be an `Ed25519` public key.',\n [SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS]:\n '$putativeOffCurveAddress is not a base58-encoded off-curve address.',\n [SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE]: 'Invalid seeds; point must fall off the Ed25519 curve.',\n [SOLANA_ERROR__ADDRESSES__MALFORMED_PDA]:\n 'Expected given program derived address to have the following format: [Address, ProgramDerivedAddressBump].',\n [SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED]:\n 'A maximum of $maxSeeds seeds, including the bump seed, may be supplied when creating an address. Received: $actual.',\n [SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED]:\n 'The seed at index $index with length $actual exceeds the maximum length of $maxSeedLength bytes.',\n [SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE]:\n 'Expected program derived address bump to be in the range [0, 255], got: $bump.',\n [SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER]: 'Program address cannot end with PDA marker.',\n [SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded address string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded blockash string of length in the range [32, 44]. Actual length: $actualLength.',\n [SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED]:\n 'The network has progressed past the last block for which this transaction could have been committed.',\n [SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY]:\n 'Codec [$codecDescription] cannot decode empty byte arrays.',\n [SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS]:\n 'Enum codec cannot use lexical values [$stringValues] as discriminators. Either remove all lexical values or set `useValuesAsDiscriminators` to `false`.',\n [SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL]:\n 'Sentinel [$hexSentinel] must not be present in encoded bytes [$hexEncodedBytes].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same fixed size, got [$encoderFixedSize] and [$decoderFixedSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH]:\n 'Encoder and decoder must have the same max size, got [$encoderMaxSize] and [$decoderMaxSize].',\n [SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH]:\n 'Encoder and decoder must either both be fixed-size or variable-size.',\n [SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Enum discriminator out of range. Expected a number in [$formattedValidDiscriminators], got $discriminator.',\n [SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH]: 'Expected a fixed-size codec, got a variable-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected a positive byte length, got $bytesLength.',\n [SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH]: 'Expected a variable-size codec, got a fixed-size one.',\n [SOLANA_ERROR__CODECS__EXPECTED_ZERO_VALUE_TO_MATCH_ITEM_FIXED_SIZE]:\n 'Codec [$codecDescription] expected zero-value [$hexZeroValue] to have the same size as the provided fixed-size item [$expectedSize bytes].',\n [SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH]:\n 'Codec [$codecDescription] expected $expected bytes, got $bytesLength.',\n [SOLANA_ERROR__CODECS__INVALID_CONSTANT]:\n 'Expected byte array constant [$hexConstant] to be present in data [$hexData] at offset [$offset].',\n [SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT]:\n 'Invalid discriminated union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT]:\n 'Invalid enum variant. Expected one of [$stringValues] or a number in [$formattedNumericalValues], got $variant.',\n [SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT]:\n 'Invalid literal union variant. Expected one of [$variants], got $value.',\n [SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS]:\n 'Expected [$codecDescription] to have $expected items, got $actual.',\n [SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE]: 'Invalid value $value for base $base with alphabet $alphabet.',\n [SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE]:\n 'Literal union discriminator out of range. Expected a number between $minRange and $maxRange, got $discriminator.',\n [SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected number to be in the range [$min, $max], got $value.',\n [SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE]:\n 'Codec [$codecDescription] expected offset to be in the range [0, $bytesLength], got $offset.',\n [SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES]:\n 'Expected sentinel [$hexSentinel] to be present in decoded bytes [$hexDecodedBytes].',\n [SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE]:\n 'Union variant out of range. Expected an index between $minRange and $maxRange, got $variant.',\n [SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED]: 'No random values implementation could be found.',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_ALREADY_INITIALIZED]: 'instruction requires an uninitialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_FAILED]:\n 'instruction tries to borrow reference for an account which is already borrowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'instruction left account with an outstanding borrowed reference',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_SIZE_CHANGED]:\n \"program other than the account's owner changed the size of the account data\",\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_DATA_TOO_SMALL]: 'account data too small for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_EXECUTABLE]: 'instruction expected an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ACCOUNT_NOT_RENT_EXEMPT]:\n 'An account does not have enough lamports to be rent-exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ARITHMETIC_OVERFLOW]: 'Program arithmetic overflowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR]: 'Failed to serialize or deserialize account data: $encodedData',\n [SOLANA_ERROR__INSTRUCTION_ERROR__BUILTIN_PROGRAMS_MUST_CONSUME_COMPUTE_UNITS]:\n 'Builtin programs must consume compute units',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CALL_DEPTH]: 'Cross-program invocation call depth too deep',\n [SOLANA_ERROR__INSTRUCTION_ERROR__COMPUTATIONAL_BUDGET_EXCEEDED]: 'Computational budget exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM]: 'custom program error: #$code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_INDEX]: 'instruction contains duplicate accounts',\n [SOLANA_ERROR__INSTRUCTION_ERROR__DUPLICATE_ACCOUNT_OUT_OF_SYNC]:\n 'instruction modifications of multiply-passed account differ',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_ACCOUNT_NOT_RENT_EXEMPT]: 'executable accounts must be rent exempt',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_DATA_MODIFIED]: 'instruction changed executable accounts data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_LAMPORT_CHANGE]:\n 'instruction changed the balance of an executable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXECUTABLE_MODIFIED]: 'instruction changed executable bit of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_DATA_MODIFIED]:\n 'instruction modified data of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__EXTERNAL_ACCOUNT_LAMPORT_SPEND]:\n 'instruction spent from the balance of an account it does not own',\n [SOLANA_ERROR__INSTRUCTION_ERROR__GENERIC_ERROR]: 'generic instruction error',\n [SOLANA_ERROR__INSTRUCTION_ERROR__ILLEGAL_OWNER]: 'Provided owner is not allowed',\n [SOLANA_ERROR__INSTRUCTION_ERROR__IMMUTABLE]: 'Account is immutable',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_AUTHORITY]: 'Incorrect authority provided',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INCORRECT_PROGRAM_ID]: 'incorrect program id for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INSUFFICIENT_FUNDS]: 'insufficient funds for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_DATA]: 'invalid account data for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ACCOUNT_OWNER]: 'Invalid account owner',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ARGUMENT]: 'invalid program argument',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_ERROR]: 'program returned invalid error code',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_INSTRUCTION_DATA]: 'invalid instruction data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_REALLOC]: 'Failed to reallocate account data',\n [SOLANA_ERROR__INSTRUCTION_ERROR__INVALID_SEEDS]: 'Provided seeds do not result in a valid address',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_DATA_ALLOCATIONS_EXCEEDED]:\n 'Accounts data allocations exceeded the maximum allowed per transaction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_ACCOUNTS_EXCEEDED]: 'Max accounts exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_INSTRUCTION_TRACE_LENGTH_EXCEEDED]: 'Max instruction trace length exceeded',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MAX_SEED_LENGTH_EXCEEDED]:\n 'Length of the seed is too long for address generation',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_ACCOUNT]: 'An account required by the instruction is missing',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MISSING_REQUIRED_SIGNATURE]: 'missing required signature for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__MODIFIED_PROGRAM_ID]:\n 'instruction illegally modified the program id of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__NOT_ENOUGH_ACCOUNT_KEYS]: 'insufficient account keys for instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PRIVILEGE_ESCALATION]:\n 'Cross-program invocation with unauthorized signer or writable account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_ENVIRONMENT_SETUP_FAILURE]:\n 'Failed to create program execution environment',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPILE]: 'Program failed to compile',\n [SOLANA_ERROR__INSTRUCTION_ERROR__PROGRAM_FAILED_TO_COMPLETE]: 'Program failed to complete',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_DATA_MODIFIED]: 'instruction modified data of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__READONLY_LAMPORT_CHANGE]:\n 'instruction changed the balance of a read-only account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__REENTRANCY_NOT_ALLOWED]:\n 'Cross-program invocation reentrancy not allowed for this instruction',\n [SOLANA_ERROR__INSTRUCTION_ERROR__RENT_EPOCH_MODIFIED]: 'instruction modified rent epoch of an account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNBALANCED_INSTRUCTION]:\n 'sum of account balances before and after instruction do not match',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNINITIALIZED_ACCOUNT]: 'instruction requires an initialized account',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN]: '',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_PROGRAM_ID]: 'Unsupported program id',\n [SOLANA_ERROR__INSTRUCTION_ERROR__UNSUPPORTED_SYSVAR]: 'Unsupported sysvar',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS]: 'The instruction does not have any accounts.',\n [SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA]: 'The instruction does not have any data.',\n [SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH]:\n 'Expected instruction to have progress address $expectedProgramAddress, got $actualProgramAddress.',\n [SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH]:\n 'Expected base58 encoded blockhash to decode to a byte array of length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__INVALID_NONCE]:\n 'The nonce `$expectedNonceValue` is no longer valid. It has advanced to `$actualNonceValue`',\n [SOLANA_ERROR__INVARIANT_VIOLATION__CACHED_ABORTABLE_ITERABLE_CACHE_ENTRY_MISSING]:\n 'Invariant violation: Found no abortable iterable cache entry for key `$cacheKey`. It ' +\n 'should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED]:\n 'Invariant violation: This data publisher does not publish to the channel named ' +\n '`$channelName`. Supported channels include $supportedChannelNames.',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE]:\n 'Invariant violation: WebSocket message iterator state is corrupt; iterated without first ' +\n 'resolving existing message promise. It should be impossible to hit this error; please ' +\n 'file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING]:\n 'Invariant violation: WebSocket message iterator is missing state storage. It should be ' +\n 'impossible to hit this error; please file an issue at https://sola.na/web3invariant',\n [SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE]:\n 'Invariant violation: Switch statement non-exhaustive. Received unexpected value ' +\n '`$unexpectedValue`. It should be impossible to hit this error; please file an issue at ' +\n 'https://sola.na/web3invariant',\n [SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR]: 'JSON-RPC error: Internal JSON-RPC error ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_PARAMS]: 'JSON-RPC error: Invalid method parameter(s) ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__INVALID_REQUEST]:\n 'JSON-RPC error: The JSON sent is not a valid `Request` object ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND]:\n 'JSON-RPC error: The method does not exist / is not available ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__PARSE_ERROR]:\n 'JSON-RPC error: An error occurred on the server while parsing the JSON text ($__serverMessage)',\n [SOLANA_ERROR__JSON_RPC__SCAN_ERROR]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED]: 'Minimum context slot has not been reached',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NODE_UNHEALTHY]: 'Node is unhealthy; behind by $numSlotsBehind slots',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_NO_SNAPSHOT]: 'No snapshot',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE]: 'Transaction simulation failed',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE]:\n 'Transaction history is not available from this node',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE]: '$__serverMessage',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH]: 'Transaction signature length mismatch',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE]:\n 'Transaction signature verification failure',\n [SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION]: '$__serverMessage',\n [SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH]: 'Key pair bytes must be of length 64, got $byteLength.',\n [SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH]:\n 'Expected private key bytes with length 32. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH]:\n 'Expected base58-encoded signature to decode to a byte array of length 64. Actual length: $actualLength.',\n [SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY]:\n 'The provided private key does not match the provided public key.',\n [SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE]:\n 'Expected base58-encoded signature string of length in the range [64, 88]. Actual length: $actualLength.',\n [SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE]: 'Lamports value must be in the range [0, 2e64-1]',\n [SOLANA_ERROR__MALFORMED_BIGINT_STRING]: '`$value` cannot be parsed as a `BigInt`',\n [SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR]: '$message',\n [SOLANA_ERROR__MALFORMED_NUMBER_STRING]: '`$value` cannot be parsed as a `Number`',\n [SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND]: 'No nonce account could be found at address `$nonceAccountAddress`',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN]:\n \"The notification name must end in 'Notifications' and the API must supply a \" +\n \"subscription plan creator function for the notification '$notificationName'.\",\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED]:\n 'WebSocket was closed before payload could be added to the send buffer',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED]: 'WebSocket connection closed',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT]: 'WebSocket failed to connect',\n [SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID]:\n 'Failed to obtain a subscription id from the server',\n [SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD]: 'Could not find an API plan for RPC method: `$method`',\n [SOLANA_ERROR__RPC__INTEGER_OVERFLOW]:\n 'The $argumentLabel argument to the `$methodName` RPC method$optionalPathLabel was ' +\n '`$value`. This number is unsafe for use with the Solana JSON-RPC because it exceeds ' +\n '`Number.MAX_SAFE_INTEGER`.',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR]: 'HTTP error ($statusCode): $message',\n [SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN]:\n 'HTTP header(s) forbidden: $headers. Learn more at ' +\n 'https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name.',\n [SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS]:\n 'Multiple distinct signers were identified for address `$address`. Please ensure that ' +\n 'you are using the same signer instance for each address.',\n [SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER]:\n 'The provided value does not implement the `KeyPairSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER]:\n 'The provided value does not implement the `MessageModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER]:\n 'The provided value does not implement the `MessagePartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER]:\n 'The provided value does not implement any of the `MessageSigner` interfaces',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER]:\n 'The provided value does not implement the `TransactionModifyingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER]:\n 'The provided value does not implement the `TransactionPartialSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER]:\n 'The provided value does not implement the `TransactionSendingSigner` interface',\n [SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER]:\n 'The provided value does not implement any of the `TransactionSigner` interfaces',\n [SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS]:\n 'More than one `TransactionSendingSigner` was identified.',\n [SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING]:\n 'No `TransactionSendingSigner` was identified. Please provide a valid ' +\n '`TransactionWithSingleSendingSigner` transaction.',\n [SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED]:\n 'Wallet account signers do not support signing multiple messages/transactions in a single operation',\n [SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY]: 'Cannot export a non-extractable key.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED]: 'No digest implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT]:\n 'Cryptographic operations are only allowed in secure browser contexts. Read more ' +\n 'here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED]:\n 'This runtime does not support the generation of Ed25519 key pairs.\\n\\nInstall ' +\n '@solana/webcrypto-ed25519-polyfill and call its `install` function before generating keys in ' +\n 'environments that do not support Ed25519.\\n\\nFor a list of runtimes that ' +\n 'currently support Ed25519 operations, visit ' +\n 'https://github.com/WICG/webcrypto-secure-curves/issues/20.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED]:\n 'No signature verification implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED]: 'No key generation implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED]: 'No signing implementation could be found.',\n [SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED]: 'No key export implementation could be found.',\n [SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE]:\n 'Timestamp value must be in the range [-(2n ** 63n), (2n ** 63n) - 1]. `$value` given',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_BORROW_OUTSTANDING]:\n 'Transaction processing left an account with an outstanding borrowed reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_IN_USE]: 'Account in use',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_LOADED_TWICE]: 'Account loaded twice',\n [SOLANA_ERROR__TRANSACTION_ERROR__ACCOUNT_NOT_FOUND]:\n 'Attempt to debit an account but found no record of a prior credit.',\n [SOLANA_ERROR__TRANSACTION_ERROR__ADDRESS_LOOKUP_TABLE_NOT_FOUND]:\n \"Transaction loads an address table account that doesn't exist\",\n [SOLANA_ERROR__TRANSACTION_ERROR__ALREADY_PROCESSED]: 'This transaction has already been processed',\n [SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND]: 'Blockhash not found',\n [SOLANA_ERROR__TRANSACTION_ERROR__CALL_CHAIN_TOO_DEEP]: 'Loader call chain is too deep',\n [SOLANA_ERROR__TRANSACTION_ERROR__CLUSTER_MAINTENANCE]:\n 'Transactions are currently disabled due to cluster maintenance',\n [SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION]:\n 'Transaction contains a duplicate instruction ($index) that is not allowed',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: 'Insufficient funds for fee',\n [SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT]:\n 'Transaction results in an account ($accountIndex) with insufficient funds for rent',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_FOR_FEE]: 'This account may not be used to pay transaction fees',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ACCOUNT_INDEX]: 'Transaction contains an invalid account reference',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_DATA]:\n 'Transaction loads an address table account with invalid data',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_INDEX]:\n 'Transaction address table lookup uses an invalid index',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_ADDRESS_LOOKUP_TABLE_OWNER]:\n 'Transaction loads an address table account with an invalid owner',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_LOADED_ACCOUNTS_DATA_SIZE_LIMIT]:\n 'LoadedAccountsDataSizeLimit set for transaction must be greater than 0.',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_PROGRAM_FOR_EXECUTION]:\n 'This program may not be used for executing instructions',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_RENT_PAYING_ACCOUNT]:\n 'Transaction leaves an account with a lower balance than rent-exempt minimum',\n [SOLANA_ERROR__TRANSACTION_ERROR__INVALID_WRITABLE_ACCOUNT]:\n 'Transaction loads a writable account that cannot be written',\n [SOLANA_ERROR__TRANSACTION_ERROR__MAX_LOADED_ACCOUNTS_DATA_SIZE_EXCEEDED]:\n 'Transaction exceeded max loaded accounts data size cap',\n [SOLANA_ERROR__TRANSACTION_ERROR__MISSING_SIGNATURE_FOR_FEE]:\n 'Transaction requires a fee but has no signature present',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_ACCOUNT_NOT_FOUND]: 'Attempt to load a program that does not exist',\n [SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED]:\n 'Execution of the program referenced by account at index $accountIndex is temporarily restricted.',\n [SOLANA_ERROR__TRANSACTION_ERROR__RESANITIZATION_NEEDED]: 'ResanitizationNeeded',\n [SOLANA_ERROR__TRANSACTION_ERROR__SANITIZE_FAILURE]: 'Transaction failed to sanitize accounts offsets correctly',\n [SOLANA_ERROR__TRANSACTION_ERROR__SIGNATURE_FAILURE]: 'Transaction did not pass signature verification',\n [SOLANA_ERROR__TRANSACTION_ERROR__TOO_MANY_ACCOUNT_LOCKS]: 'Transaction locked too many accounts',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNBALANCED_TRANSACTION]:\n 'Sum of account balances before and after transaction do not match',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN]: 'The transaction failed with the error `$errorName`',\n [SOLANA_ERROR__TRANSACTION_ERROR__UNSUPPORTED_VERSION]: 'Transaction version is unsupported',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_BLOCK_LIMIT]:\n 'Transaction would exceed account data limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_ACCOUNT_DATA_TOTAL_LIMIT]:\n 'Transaction would exceed total account data limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_ACCOUNT_COST_LIMIT]:\n 'Transaction would exceed max account limit within the block',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_BLOCK_COST_LIMIT]:\n 'Transaction would exceed max Block Cost Limit',\n [SOLANA_ERROR__TRANSACTION_ERROR__WOULD_EXCEED_MAX_VOTE_COST_LIMIT]: 'Transaction would exceed max Vote Cost Limit',\n [SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION]:\n 'Attempted to sign a transaction with an address that is not a signer for it',\n [SOLANA_ERROR__TRANSACTION__ADDRESS_MISSING]: 'Transaction is missing an address at index: $index.',\n [SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES]:\n 'Transaction has no expected signers therefore it cannot be encoded',\n [SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT]:\n 'Transaction size $transactionSize exceeds limit of $transactionSizeLimit bytes',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME]: 'Transaction does not have a blockhash lifetime',\n [SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME]: 'Transaction is not a durable nonce transaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING]:\n 'Contents of these address lookup tables unknown: $lookupTableAddresses',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE]:\n 'Lookup of address at index $highestRequestedIndex failed for lookup table ' +\n '`$lookupTableAddress`. Highest known index is $highestKnownIndex. The lookup table ' +\n 'may have been extended since its contents were retrieved',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING]: 'No fee payer set in CompiledTransaction',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND]:\n 'Could not find program address at index $index',\n [SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Failed to estimate the compute unit consumption for this transaction message. This is ' +\n 'likely because simulating the transaction failed. Inspect the `cause` property of this ' +\n 'error to learn more',\n [SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT]:\n 'Transaction failed when it was simulated in order to estimate the compute unit consumption. ' +\n 'The compute unit estimate provided is for a transaction that failed when simulated and may not ' +\n 'be representative of the compute units this transaction would consume if successful. Inspect the ' +\n '`cause` property of this error to learn more',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_MISSING]: 'Transaction is missing a fee payer.',\n [SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING]:\n \"Could not determine this transaction's signature. Make sure that the transaction has \" +\n 'been signed by its fee payer.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_FIRST_INSTRUCTION_MUST_BE_ADVANCE_NONCE]:\n 'Transaction first instruction is not advance nonce account instruction.',\n [SOLANA_ERROR__TRANSACTION__INVALID_NONCE_TRANSACTION_INSTRUCTIONS_MISSING]:\n 'Transaction with no instructions cannot be durable nonce transaction.',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES]:\n 'This transaction includes an address (`$programAddress`) which is both ' +\n 'invoked and set as the fee payer. Program addresses may not pay fees',\n [SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE]:\n 'This transaction includes an address (`$programAddress`) which is both invoked and ' +\n 'marked writable. Program addresses may not be writable',\n [SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH]:\n 'The transaction message expected the transaction to have $signerAddressesLength signatures, got $signaturesLength.',\n [SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING]: 'Transaction is missing signatures for addresses: $addresses.',\n [SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE]:\n 'Transaction version must be in the range [0, 127]. `$actualVersion` given',\n};\n", "import { SolanaErrorCode } from './codes';\nimport { encodeContextObject } from './context';\nimport { SolanaErrorMessages } from './messages';\n\nconst enum StateType {\n EscapeSequence,\n Text,\n Variable,\n}\ntype State = Readonly<{\n [START_INDEX]: number;\n [TYPE]: StateType;\n}>;\nconst START_INDEX = 'i';\nconst TYPE = 't';\n\nexport function getHumanReadableErrorMessage(\n code: TErrorCode,\n context: object = {},\n): string {\n const messageFormatString = SolanaErrorMessages[code];\n if (messageFormatString.length === 0) {\n return '';\n }\n let state: State;\n function commitStateUpTo(endIndex?: number) {\n if (state[TYPE] === StateType.Variable) {\n const variableName = messageFormatString.slice(state[START_INDEX] + 1, endIndex);\n\n fragments.push(\n variableName in context\n ? // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `${context[variableName as keyof typeof context]}`\n : `$${variableName}`,\n );\n } else if (state[TYPE] === StateType.Text) {\n fragments.push(messageFormatString.slice(state[START_INDEX], endIndex));\n }\n }\n const fragments: string[] = [];\n messageFormatString.split('').forEach((char, ii) => {\n if (ii === 0) {\n state = {\n [START_INDEX]: 0,\n [TYPE]:\n messageFormatString[0] === '\\\\'\n ? StateType.EscapeSequence\n : messageFormatString[0] === '$'\n ? StateType.Variable\n : StateType.Text,\n };\n return;\n }\n let nextState;\n switch (state[TYPE]) {\n case StateType.EscapeSequence:\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n break;\n case StateType.Text:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n }\n break;\n case StateType.Variable:\n if (char === '\\\\') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.EscapeSequence };\n } else if (char === '$') {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Variable };\n } else if (!char.match(/\\w/)) {\n nextState = { [START_INDEX]: ii, [TYPE]: StateType.Text };\n }\n break;\n }\n if (nextState) {\n if (state !== nextState) {\n commitStateUpTo(ii);\n }\n state = nextState;\n }\n });\n commitStateUpTo();\n return fragments.join('');\n}\n\nexport function getErrorMessage(\n code: TErrorCode,\n context: Record = {},\n): string {\n if (process.env.NODE_ENV !== \"production\") {\n return getHumanReadableErrorMessage(code, context);\n } else {\n let decodingAdviceMessage = `Solana error #${code}; Decode this error by running \\`npx @solana/errors decode -- ${code}`;\n if (Object.keys(context).length) {\n /**\n * DANGER: Be sure that the shell command is escaped in such a way that makes it\n * impossible for someone to craft malicious context values that would result in\n * an exploit against anyone who bindly copy/pastes it into their terminal.\n */\n decodingAdviceMessage += ` '${encodeContextObject(context)}'`;\n }\n return `${decodingAdviceMessage}\\``;\n }\n}\n", "import { SolanaErrorCode, SolanaErrorCodeWithCause } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { getErrorMessage } from './message-formatter';\n\n/**\n * A type guard that returns `true` if the input is a {@link SolanaError}, optionally with a\n * particular error code.\n *\n * When the `code` argument is supplied and the input is a {@link SolanaError}, TypeScript will\n * refine the error's {@link SolanaError#context | `context`} property to the type associated with\n * that error code. You can use that context to render useful error messages, or to make\n * context-aware decisions that help your application to recover from the error.\n *\n * @example\n * ```ts\n * import {\n * SOLANA_ERROR__TRANSACTION__MISSING_SIGNATURE,\n * SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n * isSolanaError,\n * } from '@solana/errors';\n * import { assertIsFullySignedTransaction, getSignatureFromTransaction } from '@solana/transactions';\n *\n * try {\n * const transactionSignature = getSignatureFromTransaction(tx);\n * assertIsFullySignedTransaction(tx);\n * /* ... *\\/\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING)) {\n * displayError(\n * \"We can't send this transaction without signatures for these addresses:\\n- %s\",\n * // The type of the `context` object is now refined to contain `addresses`.\n * e.context.addresses.join('\\n- '),\n * );\n * return;\n * } else if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING)) {\n * if (!tx.feePayer) {\n * displayError('Choose a fee payer for this transaction before sending it');\n * } else {\n * displayError('The fee payer still needs to sign for this transaction');\n * }\n * return;\n * }\n * throw e;\n * }\n * ```\n */\nexport function isSolanaError(\n e: unknown,\n /**\n * When supplied, this function will require that the input is a {@link SolanaError} _and_ that\n * its error code is exactly this value.\n */\n code?: TErrorCode,\n): e is SolanaError {\n const isSolanaError = e instanceof Error && e.name === 'SolanaError';\n if (isSolanaError) {\n if (code !== undefined) {\n return (e as SolanaError).context.__code === code;\n }\n return true;\n }\n return false;\n}\n\ntype SolanaErrorCodedContext = Readonly<{\n [P in SolanaErrorCode]: (SolanaErrorContext[P] extends undefined ? object : SolanaErrorContext[P]) & {\n __code: P;\n };\n}>;\n\n/**\n * Encapsulates an error's stacktrace, a Solana-specific numeric code that indicates what went\n * wrong, and optional context if the type of error indicated by the code supports it.\n */\nexport class SolanaError extends Error {\n /**\n * Indicates the root cause of this {@link SolanaError}, if any.\n *\n * For example, a transaction error might have an instruction error as its root cause. In this\n * case, you will be able to access the instruction error on the transaction error as `cause`.\n */\n readonly cause?: TErrorCode extends SolanaErrorCodeWithCause ? SolanaError : unknown = this.cause;\n /**\n * Contains context that can assist in understanding or recovering from a {@link SolanaError}.\n */\n readonly context: SolanaErrorCodedContext[TErrorCode];\n constructor(\n ...[code, contextAndErrorOptions]: SolanaErrorContext[TErrorCode] extends undefined\n ? [code: TErrorCode, errorOptions?: ErrorOptions | undefined]\n : [code: TErrorCode, contextAndErrorOptions: SolanaErrorContext[TErrorCode] & (ErrorOptions | undefined)]\n ) {\n let context: SolanaErrorContext[TErrorCode] | undefined;\n let errorOptions: ErrorOptions | undefined;\n if (contextAndErrorOptions) {\n // If the `ErrorOptions` type ever changes, update this code.\n const { cause, ...contextRest } = contextAndErrorOptions;\n if (cause) {\n errorOptions = { cause };\n }\n if (Object.keys(contextRest).length > 0) {\n context = contextRest as SolanaErrorContext[TErrorCode];\n }\n }\n const message = getErrorMessage(code, context);\n super(message, errorOptions);\n this.context = {\n __code: code,\n ...context,\n } as SolanaErrorCodedContext[TErrorCode];\n // This is necessary so that `isSolanaError()` can identify a `SolanaError` without having\n // to import the class for use in an `instanceof` check.\n this.name = 'SolanaError';\n }\n}\n", "export function safeCaptureStackTrace(...args: Parameters): void {\n if ('captureStackTrace' in Error && typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(...args);\n }\n}\n", "import { SolanaErrorCode } from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\n\ntype Config = Readonly<{\n /**\n * Oh, hello. You might wonder what in tarnation is going on here. Allow us to explain.\n *\n * One of the goals of `@solana/errors` is to allow errors that are not interesting to your\n * application to shake out of your app bundle in production. This means that we must never\n * export large hardcoded maps of error codes/messages.\n *\n * Unfortunately, where instruction and transaction errors from the RPC are concerned, we have\n * no choice but to keep a map between the RPC `rpcEnumError` enum name and its corresponding\n * `SolanaError` code. In the interest of implementing that map in as few bytes of source code\n * as possible, we do the following:\n *\n * 1. Reserve a block of sequential error codes for the enum in question\n * 2. Hardcode the list of enum names in that same order\n * 3. Match the enum error name from the RPC with its index in that list, and reconstruct the\n * `SolanaError` code by adding the `errorCodeBaseOffset` to that index\n */\n errorCodeBaseOffset: number;\n getErrorContext: (\n errorCode: SolanaErrorCode,\n rpcErrorName: string,\n rpcErrorContext?: unknown,\n ) => SolanaErrorContext[SolanaErrorCode];\n orderedErrorNames: string[];\n rpcEnumError: string | { [key: string]: unknown };\n}>;\n\nexport function getSolanaErrorFromRpcError(\n { errorCodeBaseOffset, getErrorContext, orderedErrorNames, rpcEnumError }: Config,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n constructorOpt: Function,\n): SolanaError {\n let rpcErrorName;\n let rpcErrorContext;\n if (typeof rpcEnumError === 'string') {\n rpcErrorName = rpcEnumError;\n } else {\n rpcErrorName = Object.keys(rpcEnumError)[0];\n rpcErrorContext = rpcEnumError[rpcErrorName];\n }\n const codeOffset = orderedErrorNames.indexOf(rpcErrorName);\n const errorCode = (errorCodeBaseOffset + codeOffset) as SolanaErrorCode;\n const errorContext = getErrorContext(errorCode, rpcErrorName, rpcErrorContext);\n const err = new SolanaError(errorCode, errorContext);\n safeCaptureStackTrace(err, constructorOpt);\n return err;\n}\n", "import {\n SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR,\n SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/program/src/instruction.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'GenericError',\n 'InvalidArgument',\n 'InvalidInstructionData',\n 'InvalidAccountData',\n 'AccountDataTooSmall',\n 'InsufficientFunds',\n 'IncorrectProgramId',\n 'MissingRequiredSignature',\n 'AccountAlreadyInitialized',\n 'UninitializedAccount',\n 'UnbalancedInstruction',\n 'ModifiedProgramId',\n 'ExternalAccountLamportSpend',\n 'ExternalAccountDataModified',\n 'ReadonlyLamportChange',\n 'ReadonlyDataModified',\n 'DuplicateAccountIndex',\n 'ExecutableModified',\n 'RentEpochModified',\n 'NotEnoughAccountKeys',\n 'AccountDataSizeChanged',\n 'AccountNotExecutable',\n 'AccountBorrowFailed',\n 'AccountBorrowOutstanding',\n 'DuplicateAccountOutOfSync',\n 'Custom',\n 'InvalidError',\n 'ExecutableDataModified',\n 'ExecutableLamportChange',\n 'ExecutableAccountNotRentExempt',\n 'UnsupportedProgramId',\n 'CallDepth',\n 'MissingAccount',\n 'ReentrancyNotAllowed',\n 'MaxSeedLengthExceeded',\n 'InvalidSeeds',\n 'InvalidRealloc',\n 'ComputationalBudgetExceeded',\n 'PrivilegeEscalation',\n 'ProgramEnvironmentSetupFailure',\n 'ProgramFailedToComplete',\n 'ProgramFailedToCompile',\n 'Immutable',\n 'IncorrectAuthority',\n 'BorshIoError',\n 'AccountNotRentExempt',\n 'InvalidAccountOwner',\n 'ArithmeticOverflow',\n 'UnsupportedSysvar',\n 'IllegalOwner',\n 'MaxAccountsDataAllocationsExceeded',\n 'MaxAccountsExceeded',\n 'MaxInstructionTraceLengthExceeded',\n 'BuiltinProgramsMustConsumeComputeUnits',\n];\n\nexport function getSolanaErrorFromInstructionError(\n /**\n * The index of the instruction inside the transaction.\n */\n index: bigint | number,\n instructionError: string | { [key: string]: unknown },\n): SolanaError {\n const numberIndex = Number(index);\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 4615001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n index: numberIndex,\n ...(rpcErrorContext !== undefined ? { instructionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM) {\n return {\n code: Number(rpcErrorContext as bigint | number),\n index: numberIndex,\n };\n } else if (errorCode === SOLANA_ERROR__INSTRUCTION_ERROR__BORSH_IO_ERROR) {\n return {\n encodedData: rpcErrorContext as string,\n index: numberIndex,\n };\n }\n return { index: numberIndex };\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: instructionError,\n },\n getSolanaErrorFromInstructionError,\n );\n}\n", "import {\n SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION,\n SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT,\n SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED,\n SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN,\n} from './codes';\nimport { SolanaError } from './error';\nimport { getSolanaErrorFromInstructionError } from './instruction-error';\nimport { getSolanaErrorFromRpcError } from './rpc-enum-errors';\n\n/**\n * How to add an error when an entry is added to the RPC `TransactionError` enum:\n *\n * 1. Follow the instructions in `./codes.ts` to add a corresponding Solana error code\n * 2. Add the `TransactionError` enum name in the same order as it appears in `./codes.ts`\n * 3. Add the new error name/code mapping to `./__tests__/transaction-error-test.ts`\n */\nconst ORDERED_ERROR_NAMES = [\n // Keep synced with RPC source: https://github.com/anza-xyz/agave/blob/master/sdk/src/transaction/error.rs\n // If this list ever gets too large, consider implementing a compression strategy like this:\n // https://gist.github.com/steveluscher/aaa7cbbb5433b1197983908a40860c47\n 'AccountInUse',\n 'AccountLoadedTwice',\n 'AccountNotFound',\n 'ProgramAccountNotFound',\n 'InsufficientFundsForFee',\n 'InvalidAccountForFee',\n 'AlreadyProcessed',\n 'BlockhashNotFound',\n // `InstructionError` intentionally omitted; delegated to `getSolanaErrorFromInstructionError`\n 'CallChainTooDeep',\n 'MissingSignatureForFee',\n 'InvalidAccountIndex',\n 'SignatureFailure',\n 'InvalidProgramForExecution',\n 'SanitizeFailure',\n 'ClusterMaintenance',\n 'AccountBorrowOutstanding',\n 'WouldExceedMaxBlockCostLimit',\n 'UnsupportedVersion',\n 'InvalidWritableAccount',\n 'WouldExceedMaxAccountCostLimit',\n 'WouldExceedAccountDataBlockLimit',\n 'TooManyAccountLocks',\n 'AddressLookupTableNotFound',\n 'InvalidAddressLookupTableOwner',\n 'InvalidAddressLookupTableData',\n 'InvalidAddressLookupTableIndex',\n 'InvalidRentPayingAccount',\n 'WouldExceedMaxVoteCostLimit',\n 'WouldExceedAccountDataTotalLimit',\n 'DuplicateInstruction',\n 'InsufficientFundsForRent',\n 'MaxLoadedAccountsDataSizeExceeded',\n 'InvalidLoadedAccountsDataSizeLimit',\n 'ResanitizationNeeded',\n 'ProgramExecutionTemporarilyRestricted',\n 'UnbalancedTransaction',\n];\n\nexport function getSolanaErrorFromTransactionError(transactionError: string | { [key: string]: unknown }): SolanaError {\n if (typeof transactionError === 'object' && 'InstructionError' in transactionError) {\n return getSolanaErrorFromInstructionError(\n ...(transactionError.InstructionError as Parameters),\n );\n }\n return getSolanaErrorFromRpcError(\n {\n errorCodeBaseOffset: 7050001,\n getErrorContext(errorCode, rpcErrorName, rpcErrorContext) {\n if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__UNKNOWN) {\n return {\n errorName: rpcErrorName,\n ...(rpcErrorContext !== undefined ? { transactionErrorContext: rpcErrorContext } : null),\n };\n } else if (errorCode === SOLANA_ERROR__TRANSACTION_ERROR__DUPLICATE_INSTRUCTION) {\n return {\n index: Number(rpcErrorContext as bigint | number),\n };\n } else if (\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__INSUFFICIENT_FUNDS_FOR_RENT ||\n errorCode === SOLANA_ERROR__TRANSACTION_ERROR__PROGRAM_EXECUTION_TEMPORARILY_RESTRICTED\n ) {\n return {\n accountIndex: Number((rpcErrorContext as { account_index: bigint | number }).account_index),\n };\n }\n },\n orderedErrorNames: ORDERED_ERROR_NAMES,\n rpcEnumError: transactionError,\n },\n getSolanaErrorFromTransactionError,\n );\n}\n", "import {\n SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR,\n SOLANA_ERROR__JSON_RPC__INVALID_PARAMS,\n SOLANA_ERROR__JSON_RPC__INVALID_REQUEST,\n SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND,\n SOLANA_ERROR__JSON_RPC__PARSE_ERROR,\n SOLANA_ERROR__JSON_RPC__SCAN_ERROR,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE,\n SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION,\n SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR,\n SolanaErrorCode,\n} from './codes';\nimport { SolanaErrorContext } from './context';\nimport { SolanaError } from './error';\nimport { safeCaptureStackTrace } from './stack-trace';\nimport { getSolanaErrorFromTransactionError } from './transaction-error';\n\ninterface RpcErrorResponse {\n code: bigint | number;\n data?: unknown;\n message: string;\n}\n\ntype TransactionError = string | { [key: string]: unknown };\n\n/**\n * Keep in sync with https://github.com/anza-xyz/agave/blob/master/rpc-client-types/src/response.rs\n * @hidden\n */\nexport interface RpcSimulateTransactionResult {\n accounts:\n | ({\n data:\n | string // LegacyBinary\n | {\n // Json\n parsed: unknown;\n program: string;\n space: number;\n }\n // Binary\n | [encodedBytes: string, encoding: 'base58' | 'base64' | 'base64+zstd' | 'binary' | 'jsonParsed'];\n executable: boolean;\n lamports: number;\n owner: string;\n rentEpoch: number;\n space?: number;\n } | null)[]\n | null;\n err: TransactionError | null;\n // Enabled by `enable_cpi_recording`\n innerInstructions?:\n | {\n index: number;\n instructions: (\n | {\n // Compiled\n accounts: number[];\n data: string;\n programIdIndex: number;\n stackHeight?: number;\n }\n | {\n // Parsed\n parsed: unknown;\n program: string;\n programId: string;\n stackHeight?: number;\n }\n | {\n // PartiallyDecoded\n accounts: string[];\n data: string;\n programId: string;\n stackHeight?: number;\n }\n )[];\n }[]\n | null;\n logs: string[] | null;\n replacementBlockhash: string | null;\n returnData: {\n data: [string, 'base64'];\n programId: string;\n } | null;\n unitsConsumed: bigint | null;\n}\n\nexport function getSolanaErrorFromJsonRpcError(putativeErrorResponse: unknown): SolanaError {\n let out: SolanaError;\n if (isRpcErrorResponse(putativeErrorResponse)) {\n const { code: rawCode, data, message } = putativeErrorResponse;\n const code = Number(rawCode);\n if (code === SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) {\n const { err, ...preflightErrorContext } = data as RpcSimulateTransactionResult;\n const causeObject = err ? { cause: getSolanaErrorFromTransactionError(err) } : null;\n out = new SolanaError(SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE, {\n ...preflightErrorContext,\n ...causeObject,\n });\n } else {\n let errorContext;\n switch (code) {\n case SOLANA_ERROR__JSON_RPC__INTERNAL_ERROR:\n case SOLANA_ERROR__JSON_RPC__INVALID_PARAMS:\n case SOLANA_ERROR__JSON_RPC__INVALID_REQUEST:\n case SOLANA_ERROR__JSON_RPC__METHOD_NOT_FOUND:\n case SOLANA_ERROR__JSON_RPC__PARSE_ERROR:\n case SOLANA_ERROR__JSON_RPC__SCAN_ERROR:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_CLEANED_UP:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_NOT_AVAILABLE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SLOT_SKIPPED:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE:\n case SOLANA_ERROR__JSON_RPC__SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION:\n // The server supplies no structured data, but rather a pre-formatted message. Put\n // the server message in `context` so as not to completely lose the data. The long\n // term fix for this is to add data to the server responses and modify the\n // messages in `@solana/errors` to be actual format strings.\n errorContext = { __serverMessage: message };\n break;\n default:\n if (typeof data === 'object' && !Array.isArray(data)) {\n errorContext = data;\n }\n }\n out = new SolanaError(code as SolanaErrorCode, errorContext as SolanaErrorContext[SolanaErrorCode]);\n }\n } else {\n const message =\n typeof putativeErrorResponse === 'object' &&\n putativeErrorResponse !== null &&\n 'message' in putativeErrorResponse &&\n typeof putativeErrorResponse.message === 'string'\n ? putativeErrorResponse.message\n : 'Malformed JSON-RPC error with no message attribute';\n out = new SolanaError(SOLANA_ERROR__MALFORMED_JSON_RPC_ERROR, { error: putativeErrorResponse, message });\n }\n safeCaptureStackTrace(out, getSolanaErrorFromJsonRpcError);\n return out;\n}\n\nfunction isRpcErrorResponse(value: unknown): value is RpcErrorResponse {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'code' in value &&\n 'message' in value &&\n (typeof value.code === 'number' || typeof value.code === 'bigint') &&\n typeof value.message === 'string'\n );\n}\n", "import { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Concatenates an array of `Uint8Array`s into a single `Uint8Array`.\n * Reuses the original byte array when applicable.\n *\n * @param byteArrays - The array of byte arrays to concatenate.\n *\n * @example\n * ```ts\n * const bytes1 = new Uint8Array([0x01, 0x02]);\n * const bytes2 = new Uint8Array([]);\n * const bytes3 = new Uint8Array([0x03, 0x04]);\n * const bytes = mergeBytes([bytes1, bytes2, bytes3]);\n * // ^ [0x01, 0x02, 0x03, 0x04]\n * ```\n */\nexport const mergeBytes = (byteArrays: Uint8Array[]): Uint8Array => {\n const nonEmptyByteArrays = byteArrays.filter(arr => arr.length);\n if (nonEmptyByteArrays.length === 0) {\n return byteArrays.length ? byteArrays[0] : new Uint8Array();\n }\n\n if (nonEmptyByteArrays.length === 1) {\n return nonEmptyByteArrays[0];\n }\n\n const totalLength = nonEmptyByteArrays.reduce((total, arr) => total + arr.length, 0);\n const result = new Uint8Array(totalLength);\n let offset = 0;\n nonEmptyByteArrays.forEach(arr => {\n result.set(arr, offset);\n offset += arr.length;\n });\n return result;\n};\n\n/**\n * Pads a `Uint8Array` with zeroes to the specified length.\n * If the array is longer than the specified length, it is returned as-is.\n *\n * @param bytes - The byte array to pad.\n * @param length - The desired length of the byte array.\n *\n * @example\n * Adds zeroes to the end of the byte array to reach the desired length.\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02]);\n * const paddedBytes = padBytes(bytes, 4);\n * // ^ [0x01, 0x02, 0x00, 0x00]\n * ```\n *\n * @example\n * Returns the original byte array if it is already at the desired length.\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02]);\n * const paddedBytes = padBytes(bytes, 2);\n * // bytes === paddedBytes\n * ```\n */\nexport const padBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array => {\n if (bytes.length >= length) return bytes;\n const paddedBytes = new Uint8Array(length).fill(0);\n paddedBytes.set(bytes);\n return paddedBytes;\n};\n\n/**\n * Fixes a `Uint8Array` to the specified length.\n * If the array is longer than the specified length, it is truncated.\n * If the array is shorter than the specified length, it is padded with zeroes.\n *\n * @param bytes - The byte array to truncate or pad.\n * @param length - The desired length of the byte array.\n *\n * @example\n * Truncates the byte array to the desired length.\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n * const fixedBytes = fixBytes(bytes, 2);\n * // ^ [0x01, 0x02]\n * ```\n *\n * @example\n * Adds zeroes to the end of the byte array to reach the desired length.\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02]);\n * const fixedBytes = fixBytes(bytes, 4);\n * // ^ [0x01, 0x02, 0x00, 0x00]\n * ```\n *\n * @example\n * Returns the original byte array if it is already at the desired length.\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02]);\n * const fixedBytes = fixBytes(bytes, 2);\n * // bytes === fixedBytes\n * ```\n */\nexport const fixBytes = (bytes: ReadonlyUint8Array | Uint8Array, length: number): ReadonlyUint8Array | Uint8Array =>\n padBytes(bytes.length <= length ? bytes : bytes.slice(0, length), length);\n\n/**\n * Returns true if and only if the provided `data` byte array contains\n * the provided `bytes` byte array at the specified `offset`.\n *\n * @param data - The byte sequence to search for.\n * @param bytes - The byte array in which to search for `data`.\n * @param offset - The position in `bytes` where the search begins.\n *\n * @example\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n * const data = new Uint8Array([0x02, 0x03]);\n * containsBytes(bytes, data, 1); // true\n * containsBytes(bytes, data, 2); // false\n * ```\n */\nexport function containsBytes(\n data: ReadonlyUint8Array | Uint8Array,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset: number,\n): boolean {\n const slice = offset === 0 && data.length === bytes.length ? data : data.slice(offset, offset + bytes.length);\n if (slice.length !== bytes.length) return false;\n return bytes.every((b, i) => b === slice[i]);\n}\n", "import {\n SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH,\n SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Defines an offset in bytes.\n */\nexport type Offset = number;\n\n/**\n * An object that can encode a value of type {@link TFrom} into a {@link ReadonlyUint8Array}.\n *\n * This is a common interface for {@link FixedSizeEncoder} and {@link VariableSizeEncoder}.\n *\n * @interface\n * @typeParam TFrom - The type of the value to encode.\n *\n * @see {@link FixedSizeEncoder}\n * @see {@link VariableSizeEncoder}\n */\ntype BaseEncoder = {\n /** Encode the provided value and return the encoded bytes directly. */\n readonly encode: (value: TFrom) => ReadonlyUint8Array;\n /**\n * Writes the encoded value into the provided byte array at the given offset.\n * Returns the offset of the next byte after the encoded value.\n */\n readonly write: (value: TFrom, bytes: Uint8Array, offset: Offset) => Offset;\n};\n\n/**\n * An object that can encode a value of type {@link TFrom} into a fixed-size {@link ReadonlyUint8Array}.\n *\n * See {@link Encoder} to learn more about creating and composing encoders.\n *\n * @interface\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @example\n * ```ts\n * const encoder: FixedSizeEncoder;\n * const bytes = encoder.encode(42);\n * const size = encoder.fixedSize; // 4\n * ```\n *\n * @see {@link Encoder}\n * @see {@link VariableSizeEncoder}\n */\nexport type FixedSizeEncoder = BaseEncoder & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\n/**\n * An object that can encode a value of type {@link TFrom} into a variable-size {@link ReadonlyUint8Array}.\n *\n * See {@link Encoder} to learn more about creating and composing encoders.\n *\n * @interface\n * @typeParam TFrom - The type of the value to encode.\n *\n * @example\n * ```ts\n * const encoder: VariableSizeEncoder;\n * const bytes = encoder.encode('hello');\n * const size = encoder.getSizeFromValue('hello');\n * ```\n *\n * @see {@link Encoder}\n * @see {@link FixedSizeEncoder}\n */\nexport type VariableSizeEncoder = BaseEncoder & {\n /** Returns the size of the encoded value in bytes for a given input. */\n readonly getSizeFromValue: (value: TFrom) => number;\n /** The maximum possible size of an encoded value in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can encode a value of type {@link TFrom} into a {@link ReadonlyUint8Array}.\n *\n * An `Encoder` can be either:\n * - A {@link FixedSizeEncoder}, where all encoded values have the same fixed size.\n * - A {@link VariableSizeEncoder}, where encoded values can vary in size.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @example\n * Encoding a value into a new byte array.\n * ```ts\n * const encoder: Encoder;\n * const bytes = encoder.encode('hello');\n * ```\n *\n * @example\n * Writing the encoded value into an existing byte array.\n * ```ts\n * const encoder: Encoder;\n * const bytes = new Uint8Array(100);\n * const nextOffset = encoder.write('hello', bytes, 20);\n * ```\n *\n * @remarks\n * You may create `Encoders` manually using the {@link createEncoder} function but it is more common\n * to compose multiple `Encoders` together using the various helpers of the `@solana/codecs` package.\n *\n * For instance, here's how you might create an `Encoder` for a `Person` object type that contains\n * a `name` string and an `age` number:\n *\n * ```ts\n * import { getStructEncoder, addEncoderSizePrefix, getUtf8Encoder, getU32Encoder } from '@solana/codecs';\n *\n * type Person = { name: string; age: number };\n * const getPersonEncoder = (): Encoder =>\n * getStructEncoder([\n * ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n * ['age', getU32Encoder()],\n * ]);\n * ```\n *\n * Note that composed `Encoder` types are clever enough to understand whether\n * they are fixed-size or variable-size. In the example above, `getU32Encoder()` is\n * a fixed-size encoder, while `addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())`\n * is a variable-size encoder. This makes the final `Person` encoder a variable-size encoder.\n *\n * @see {@link FixedSizeEncoder}\n * @see {@link VariableSizeEncoder}\n * @see {@link createEncoder}\n */\nexport type Encoder = FixedSizeEncoder | VariableSizeEncoder;\n\n/**\n * An object that can decode a byte array into a value of type {@link TTo}.\n *\n * This is a common interface for {@link FixedSizeDecoder} and {@link VariableSizeDecoder}.\n *\n * @interface\n * @typeParam TTo - The type of the decoded value.\n *\n * @see {@link FixedSizeDecoder}\n * @see {@link VariableSizeDecoder}\n */\ntype BaseDecoder = {\n /** Decodes the provided byte array at the given offset (or zero) and returns the value directly. */\n readonly decode: (bytes: ReadonlyUint8Array | Uint8Array, offset?: Offset) => TTo;\n /**\n * Reads the encoded value from the provided byte array at the given offset.\n * Returns the decoded value and the offset of the next byte after the encoded value.\n */\n readonly read: (bytes: ReadonlyUint8Array | Uint8Array, offset: Offset) => [TTo, Offset];\n};\n\n/**\n * An object that can decode a fixed-size byte array into a value of type {@link TTo}.\n *\n * See {@link Decoder} to learn more about creating and composing decoders.\n *\n * @interface\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @example\n * ```ts\n * const decoder: FixedSizeDecoder;\n * const value = decoder.decode(bytes);\n * const size = decoder.fixedSize; // 4\n * ```\n *\n * @see {@link Decoder}\n * @see {@link VariableSizeDecoder}\n */\nexport type FixedSizeDecoder = BaseDecoder & {\n /** The fixed size of the encoded value in bytes. */\n readonly fixedSize: TSize;\n};\n\n/**\n * An object that can decode a variable-size byte array into a value of type {@link TTo}.\n *\n * See {@link Decoder} to learn more about creating and composing decoders.\n *\n * @interface\n * @typeParam TTo - The type of the decoded value.\n *\n * @example\n * ```ts\n * const decoder: VariableSizeDecoder;\n * const value = decoder.decode(bytes);\n * ```\n *\n * @see {@link Decoder}\n * @see {@link VariableSizeDecoder}\n */\nexport type VariableSizeDecoder = BaseDecoder & {\n /** The maximum possible size of an encoded value in bytes, if applicable. */\n readonly maxSize?: number;\n};\n\n/**\n * An object that can decode a byte array into a value of type {@link TTo}.\n *\n * An `Decoder` can be either:\n * - A {@link FixedSizeDecoder}, where all byte arrays have the same fixed size.\n * - A {@link VariableSizeDecoder}, where byte arrays can vary in size.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @example\n * Getting the decoded value from a byte array.\n * ```ts\n * const decoder: Decoder;\n * const value = decoder.decode(bytes);\n * ```\n *\n * @example\n * Reading the decoded value from a byte array at a specific offset\n * and getting the offset of the next byte to read.\n * ```ts\n * const decoder: Decoder;\n * const [value, nextOffset] = decoder.read('hello', bytes, 20);\n * ```\n *\n * @remarks\n * You may create `Decoders` manually using the {@link createDecoder} function but it is more common\n * to compose multiple `Decoders` together using the various helpers of the `@solana/codecs` package.\n *\n * For instance, here's how you might create an `Decoder` for a `Person` object type that contains\n * a `name` string and an `age` number:\n *\n * ```ts\n * import { getStructDecoder, addDecoderSizePrefix, getUtf8Decoder, getU32Decoder } from '@solana/codecs';\n *\n * type Person = { name: string; age: number };\n * const getPersonDecoder = (): Decoder =>\n * getStructDecoder([\n * ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n * ['age', getU32Decoder()],\n * ]);\n * ```\n *\n * Note that composed `Decoder` types are clever enough to understand whether\n * they are fixed-size or variable-size. In the example above, `getU32Decoder()` is\n * a fixed-size decoder, while `addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())`\n * is a variable-size decoder. This makes the final `Person` decoder a variable-size decoder.\n *\n * @see {@link FixedSizeDecoder}\n * @see {@link VariableSizeDecoder}\n * @see {@link createDecoder}\n */\nexport type Decoder = FixedSizeDecoder | VariableSizeDecoder;\n\n/**\n * An object that can encode and decode a value to and from a fixed-size byte array.\n *\n * See {@link Codec} to learn more about creating and composing codecs.\n *\n * @interface\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @example\n * ```ts\n * const codec: FixedSizeCodec;\n * const bytes = codec.encode(42);\n * const value = codec.decode(bytes); // 42n\n * const size = codec.fixedSize; // 8\n * ```\n *\n * @see {@link Codec}\n * @see {@link VariableSizeCodec}\n */\nexport type FixedSizeCodec = FixedSizeDecoder<\n TTo,\n TSize\n> &\n FixedSizeEncoder;\n\n/**\n * An object that can encode and decode a value to and from a variable-size byte array.\n *\n * See {@link Codec} to learn more about creating and composing codecs.\n *\n * @interface\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @example\n * ```ts\n * const codec: VariableSizeCodec;\n * const bytes = codec.encode(42);\n * const value = codec.decode(bytes); // 42n\n * const size = codec.getSizeFromValue(42);\n * ```\n *\n * @see {@link Codec}\n * @see {@link FixedSizeCodec}\n */\nexport type VariableSizeCodec = VariableSizeDecoder & VariableSizeEncoder;\n\n/**\n * An object that can encode and decode a value to and from a byte array.\n *\n * A `Codec` can be either:\n * - A {@link FixedSizeCodec}, where all encoded values have the same fixed size.\n * - A {@link VariableSizeCodec}, where encoded values can vary in size.\n *\n * @example\n * ```ts\n * const codec: Codec;\n * const bytes = codec.encode('hello');\n * const value = codec.decode(bytes); // 'hello'\n * ```\n *\n * @remarks\n * For convenience, codecs can encode looser types than they decode.\n * That is, type {@link TFrom} can be a superset of type {@link TTo}.\n * For instance, a `Codec` can encode both\n * `bigint` and `number` values, but will always decode to a `bigint`.\n *\n * ```ts\n * const codec: Codec;\n * const bytes = codec.encode(42);\n * const value = codec.decode(bytes); // 42n\n * ```\n *\n * It is worth noting that codecs are the union of encoders and decoders.\n * This means that a `Codec` can be combined from an `Encoder`\n * and a `Decoder` using the {@link combineCodec} function. This is particularly\n * useful for library authors who want to expose all three types of objects to their users.\n *\n * ```ts\n * const encoder: Encoder;\n * const decoder: Decoder;\n * const codec: Codec = combineCodec(encoder, decoder);\n * ```\n *\n * Aside from combining encoders and decoders, codecs can also be created from scratch using\n * the {@link createCodec} function but it is more common to compose multiple codecs together\n * using the various helpers of the `@solana/codecs` package.\n *\n * For instance, here's how you might create a `Codec` for a `Person` object type that contains\n * a `name` string and an `age` number:\n *\n * ```ts\n * import { getStructCodec, addCodecSizePrefix, getUtf8Codec, getU32Codec } from '@solana/codecs';\n *\n * type Person = { name: string; age: number };\n * const getPersonCodec = (): Codec =>\n * getStructCodec([\n * ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],\n * ['age', getU32Codec()],\n * ]);\n * ```\n *\n * Note that composed `Codec` types are clever enough to understand whether\n * they are fixed-size or variable-size. In the example above, `getU32Codec()` is\n * a fixed-size codec, while `addCodecSizePrefix(getUtf8Codec(), getU32Codec())`\n * is a variable-size codec. This makes the final `Person` codec a variable-size codec.\n *\n * @see {@link FixedSizeCodec}\n * @see {@link VariableSizeCodec}\n * @see {@link combineCodec}\n * @see {@link createCodec}\n */\nexport type Codec = FixedSizeCodec | VariableSizeCodec;\n\n/**\n * Gets the encoded size of a given value in bytes using the provided encoder.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @param value - The value to be encoded.\n * @param encoder - The encoder used to determine the encoded size.\n * @returns The size of the encoded value in bytes.\n *\n * @example\n * ```ts\n * const fixedSizeEncoder = { fixedSize: 4 };\n * getEncodedSize(123, fixedSizeEncoder); // Returns 4.\n *\n * const variableSizeEncoder = { getSizeFromValue: (value: string) => value.length };\n * getEncodedSize(\"hello\", variableSizeEncoder); // Returns 5.\n * ```\n *\n * @see {@link Encoder}\n */\nexport function getEncodedSize(\n value: TFrom,\n encoder: { fixedSize: number } | { getSizeFromValue: (value: TFrom) => number },\n): number {\n return 'fixedSize' in encoder ? encoder.fixedSize : encoder.getSizeFromValue(value);\n}\n\n/**\n * Creates an `Encoder` by filling in the missing `encode` function using the provided `write` function and\n * either the `fixedSize` property (for {@link FixedSizeEncoder | FixedSizeEncoders}) or\n * the `getSizeFromValue` function (for {@link VariableSizeEncoder | VariableSizeEncoders}).\n *\n * Instead of manually implementing `encode`, this utility leverages the existing `write` function\n * and the size helpers to generate a complete encoder. The provided `encode` method will allocate\n * a new `Uint8Array` of the correct size and use `write` to populate it.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TSize - The fixed size of the encoded value in bytes (for fixed-size encoders).\n *\n * @param encoder - An encoder object that implements `write`, but not `encode`.\n * - If the encoder has a `fixedSize` property, it is treated as a {@link FixedSizeEncoder}.\n * - Otherwise, it is treated as a {@link VariableSizeEncoder}.\n *\n * @returns A fully functional `Encoder` with both `write` and `encode` methods.\n *\n * @example\n * Creating a custom fixed-size encoder.\n * ```ts\n * const encoder = createEncoder({\n * fixedSize: 4,\n * write: (value: number, bytes, offset) => {\n * bytes.set(new Uint8Array([value]), offset);\n * return offset + 4;\n * },\n * });\n *\n * const bytes = encoder.encode(42);\n * // 0x2a000000\n * ```\n *\n * @example\n * Creating a custom variable-size encoder:\n * ```ts\n * const encoder = createEncoder({\n * getSizeFromValue: (value: string) => value.length,\n * write: (value: string, bytes, offset) => {\n * const encodedValue = new TextEncoder().encode(value);\n * bytes.set(encodedValue, offset);\n * return offset + encodedValue.length;\n * },\n * });\n *\n * const bytes = encoder.encode(\"hello\");\n * // 0x68656c6c6f\n * ```\n *\n * @remarks\n * Note that, while `createEncoder` is useful for defining more complex encoders, it is more common to compose\n * encoders together using the various helpers and primitives of the `@solana/codecs` package.\n *\n * Here are some alternative examples using codec primitives instead of `createEncoder`.\n *\n * ```ts\n * // Fixed-size encoder for unsigned 32-bit integers.\n * const encoder = getU32Encoder();\n * const bytes = encoder.encode(42);\n * // 0x2a000000\n *\n * // Variable-size encoder for 32-bytes prefixed UTF-8 strings.\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * const bytes = encoder.encode(\"hello\");\n * // 0x0500000068656c6c6f\n *\n * // Variable-size encoder for custom objects.\n * type Person = { name: string; age: number };\n * const encoder: Encoder = getStructEncoder([\n * ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n * ['age', getU32Encoder()],\n * ]);\n * const bytes = encoder.encode({ name: \"Bob\", age: 42 });\n * // 0x03000000426f622a000000\n * ```\n *\n * @see {@link Encoder}\n * @see {@link FixedSizeEncoder}\n * @see {@link VariableSizeEncoder}\n * @see {@link getStructEncoder}\n * @see {@link getU32Encoder}\n * @see {@link getUtf8Encoder}\n * @see {@link addEncoderSizePrefix}\n */\nexport function createEncoder(\n encoder: Omit, 'encode'>,\n): FixedSizeEncoder;\nexport function createEncoder(encoder: Omit, 'encode'>): VariableSizeEncoder;\nexport function createEncoder(\n encoder: Omit, 'encode'> | Omit, 'encode'>,\n): Encoder;\nexport function createEncoder(\n encoder: Omit, 'encode'> | Omit, 'encode'>,\n): Encoder {\n return Object.freeze({\n ...encoder,\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, encoder));\n encoder.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\n/**\n * Creates a `Decoder` by filling in the missing `decode` function using the provided `read` function.\n *\n * Instead of manually implementing `decode`, this utility leverages the existing `read` function\n * and the size properties to generate a complete decoder. The provided `decode` method will read\n * from a `Uint8Array` at the given offset and return the decoded value.\n *\n * If the `fixedSize` property is provided, a {@link FixedSizeDecoder} will be created, otherwise\n * a {@link VariableSizeDecoder} will be created.\n *\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes (for fixed-size decoders).\n *\n * @param decoder - A decoder object that implements `read`, but not `decode`.\n * - If the decoder has a `fixedSize` property, it is treated as a {@link FixedSizeDecoder}.\n * - Otherwise, it is treated as a {@link VariableSizeDecoder}.\n *\n * @returns A fully functional `Decoder` with both `read` and `decode` methods.\n *\n * @example\n * Creating a custom fixed-size decoder.\n * ```ts\n * const decoder = createDecoder({\n * fixedSize: 4,\n * read: (bytes, offset) => {\n * const value = bytes[offset];\n * return [value, offset + 4];\n * },\n * });\n *\n * const value = decoder.decode(new Uint8Array([42, 0, 0, 0]));\n * // 42\n * ```\n *\n * @example\n * Creating a custom variable-size decoder:\n * ```ts\n * const decoder = createDecoder({\n * read: (bytes, offset) => {\n * const decodedValue = new TextDecoder().decode(bytes.subarray(offset));\n * return [decodedValue, bytes.length];\n * },\n * });\n *\n * const value = decoder.decode(new Uint8Array([104, 101, 108, 108, 111]));\n * // \"hello\"\n * ```\n *\n * @remarks\n * Note that, while `createDecoder` is useful for defining more complex decoders, it is more common to compose\n * decoders together using the various helpers and primitives of the `@solana/codecs` package.\n *\n * Here are some alternative examples using codec primitives instead of `createDecoder`.\n *\n * ```ts\n * // Fixed-size decoder for unsigned 32-bit integers.\n * const decoder = getU32Decoder();\n * const value = decoder.decode(new Uint8Array([42, 0, 0, 0]));\n * // 42\n *\n * // Variable-size decoder for 32-bytes prefixed UTF-8 strings.\n * const decoder = addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder());\n * const value = decoder.decode(new Uint8Array([5, 0, 0, 0, 104, 101, 108, 108, 111]));\n * // \"hello\"\n *\n * // Variable-size decoder for custom objects.\n * type Person = { name: string; age: number };\n * const decoder: Decoder = getStructDecoder([\n * ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n * ['age', getU32Decoder()],\n * ]);\n * const value = decoder.decode(new Uint8Array([3, 0, 0, 0, 66, 111, 98, 42, 0, 0, 0]));\n * // { name: \"Bob\", age: 42 }\n * ```\n *\n * @see {@link Decoder}\n * @see {@link FixedSizeDecoder}\n * @see {@link VariableSizeDecoder}\n * @see {@link getStructDecoder}\n * @see {@link getU32Decoder}\n * @see {@link getUtf8Decoder}\n * @see {@link addDecoderSizePrefix}\n */\nexport function createDecoder(\n decoder: Omit, 'decode'>,\n): FixedSizeDecoder;\nexport function createDecoder(decoder: Omit, 'decode'>): VariableSizeDecoder;\nexport function createDecoder(\n decoder: Omit, 'decode'> | Omit, 'decode'>,\n): Decoder;\nexport function createDecoder(\n decoder: Omit, 'decode'> | Omit, 'decode'>,\n): Decoder {\n return Object.freeze({\n ...decoder,\n decode: (bytes, offset = 0) => decoder.read(bytes, offset)[0],\n });\n}\n\n/**\n * Creates a `Codec` by filling in the missing `encode` and `decode` functions using the provided `write` and `read` functions.\n *\n * This utility combines the behavior of {@link createEncoder} and {@link createDecoder} to produce a fully functional `Codec`.\n * The `encode` method is derived from the `write` function, while the `decode` method is derived from the `read` function.\n *\n * If the `fixedSize` property is provided, a {@link FixedSizeCodec} will be created, otherwise\n * a {@link VariableSizeCodec} will be created.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes (for fixed-size codecs).\n *\n * @param codec - A codec object that implements `write` and `read`, but not `encode` or `decode`.\n * - If the codec has a `fixedSize` property, it is treated as a {@link FixedSizeCodec}.\n * - Otherwise, it is treated as a {@link VariableSizeCodec}.\n *\n * @returns A fully functional `Codec` with `write`, `read`, `encode`, and `decode` methods.\n *\n * @example\n * Creating a custom fixed-size codec.\n * ```ts\n * const codec = createCodec({\n * fixedSize: 4,\n * read: (bytes, offset) => {\n * const value = bytes[offset];\n * return [value, offset + 4];\n * },\n * write: (value: number, bytes, offset) => {\n * bytes.set(new Uint8Array([value]), offset);\n * return offset + 4;\n * },\n * });\n *\n * const bytes = codec.encode(42);\n * // 0x2a000000\n * const value = codec.decode(bytes);\n * // 42\n * ```\n *\n * @example\n * Creating a custom variable-size codec:\n * ```ts\n * const codec = createCodec({\n * getSizeFromValue: (value: string) => value.length,\n * read: (bytes, offset) => {\n * const decodedValue = new TextDecoder().decode(bytes.subarray(offset));\n * return [decodedValue, bytes.length];\n * },\n * write: (value: string, bytes, offset) => {\n * const encodedValue = new TextEncoder().encode(value);\n * bytes.set(encodedValue, offset);\n * return offset + encodedValue.length;\n * },\n * });\n *\n * const bytes = codec.encode(\"hello\");\n * // 0x68656c6c6f\n * const value = codec.decode(bytes);\n * // \"hello\"\n * ```\n *\n * @remarks\n * This function effectively combines the behavior of {@link createEncoder} and {@link createDecoder}.\n * If you only need to encode or decode (but not both), consider using those functions instead.\n *\n * Here are some alternative examples using codec primitives instead of `createCodec`.\n *\n * ```ts\n * // Fixed-size codec for unsigned 32-bit integers.\n * const codec = getU32Codec();\n * const bytes = codec.encode(42);\n * // 0x2a000000\n * const value = codec.decode(bytes);\n * // 42\n *\n * // Variable-size codec for 32-bytes prefixed UTF-8 strings.\n * const codec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * const bytes = codec.encode(\"hello\");\n * // 0x0500000068656c6c6f\n * const value = codec.decode(bytes);\n * // \"hello\"\n *\n * // Variable-size codec for custom objects.\n * type Person = { name: string; age: number };\n * const codec: Codec = getStructCodec([\n * ['name', addCodecSizePrefix(getUtf8Codec(), getU32Codec())],\n * ['age', getU32Codec()],\n * ]);\n * const bytes = codec.encode({ name: \"Bob\", age: 42 });\n * // 0x03000000426f622a000000\n * const value = codec.decode(bytes);\n * // { name: \"Bob\", age: 42 }\n * ```\n *\n * @see {@link Codec}\n * @see {@link FixedSizeCodec}\n * @see {@link VariableSizeCodec}\n * @see {@link createEncoder}\n * @see {@link createDecoder}\n * @see {@link getStructCodec}\n * @see {@link getU32Codec}\n * @see {@link getUtf8Codec}\n * @see {@link addCodecSizePrefix}\n */\nexport function createCodec(\n codec: Omit, 'decode' | 'encode'>,\n): FixedSizeCodec;\nexport function createCodec(\n codec: Omit, 'decode' | 'encode'>,\n): VariableSizeCodec;\nexport function createCodec(\n codec:\n | Omit, 'decode' | 'encode'>\n | Omit, 'decode' | 'encode'>,\n): Codec;\nexport function createCodec(\n codec:\n | Omit, 'decode' | 'encode'>\n | Omit, 'decode' | 'encode'>,\n): Codec {\n return Object.freeze({\n ...codec,\n decode: (bytes, offset = 0) => codec.read(bytes, offset)[0],\n encode: value => {\n const bytes = new Uint8Array(getEncodedSize(value, codec));\n codec.write(value, bytes, 0);\n return bytes;\n },\n });\n}\n\n/**\n * Determines whether the given codec, encoder, or decoder is fixed-size.\n *\n * A fixed-size object is identified by the presence of a `fixedSize` property.\n * If this property exists, the object is considered a {@link FixedSizeCodec},\n * {@link FixedSizeEncoder}, or {@link FixedSizeDecoder}.\n * Otherwise, it is assumed to be a {@link VariableSizeCodec},\n * {@link VariableSizeEncoder}, or {@link VariableSizeDecoder}.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n * @returns `true` if the object is fixed-size, `false` otherwise.\n *\n * @example\n * Checking a fixed-size encoder.\n * ```ts\n * const encoder = getU32Encoder();\n * isFixedSize(encoder); // true\n * ```\n *\n * @example\n * Checking a variable-size encoder.\n * ```ts\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * isFixedSize(encoder); // false\n * ```\n *\n * @remarks\n * This function is commonly used to distinguish between fixed-size and variable-size objects at runtime.\n * If you need to enforce this distinction with type assertions, consider using {@link assertIsFixedSize}.\n *\n * @see {@link assertIsFixedSize}\n */\nexport function isFixedSize(\n encoder: FixedSizeEncoder | VariableSizeEncoder,\n): encoder is FixedSizeEncoder;\nexport function isFixedSize(\n decoder: FixedSizeDecoder | VariableSizeDecoder,\n): decoder is FixedSizeDecoder;\nexport function isFixedSize(\n codec: FixedSizeCodec | VariableSizeCodec,\n): codec is FixedSizeCodec;\nexport function isFixedSize(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): codec is { fixedSize: TSize };\nexport function isFixedSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { fixedSize: number } {\n return 'fixedSize' in codec && typeof codec.fixedSize === 'number';\n}\n\n/**\n * Asserts that the given codec, encoder, or decoder is fixed-size.\n *\n * If the object is not fixed-size (i.e., it lacks a `fixedSize` property),\n * this function throws a {@link SolanaError} with the code `SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH`.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n * @throws {SolanaError} If the object is not fixed-size.\n *\n * @example\n * Asserting a fixed-size encoder.\n * ```ts\n * const encoder = getU32Encoder();\n * assertIsFixedSize(encoder); // Passes\n * ```\n *\n * @example\n * Attempting to assert a variable-size encoder.\n * ```ts\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * assertIsFixedSize(encoder); // Throws SolanaError\n * ```\n *\n * @remarks\n * This function is the assertion-based counterpart of {@link isFixedSize}.\n * If you only need to check whether an object is fixed-size without throwing an error, use {@link isFixedSize} instead.\n *\n * @see {@link isFixedSize}\n */\nexport function assertIsFixedSize(\n encoder: FixedSizeEncoder | VariableSizeEncoder,\n): asserts encoder is FixedSizeEncoder;\nexport function assertIsFixedSize(\n decoder: FixedSizeDecoder | VariableSizeDecoder,\n): asserts decoder is FixedSizeDecoder;\nexport function assertIsFixedSize(\n codec: FixedSizeCodec | VariableSizeCodec,\n): asserts codec is FixedSizeCodec;\nexport function assertIsFixedSize(\n codec: { fixedSize: TSize } | { maxSize?: number },\n): asserts codec is { fixedSize: TSize };\nexport function assertIsFixedSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { fixedSize: number } {\n if (!isFixedSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH);\n }\n}\n\n/**\n * Determines whether the given codec, encoder, or decoder is variable-size.\n *\n * A variable-size object is identified by the absence of a `fixedSize` property.\n * If this property is missing, the object is considered a {@link VariableSizeCodec},\n * {@link VariableSizeEncoder}, or {@link VariableSizeDecoder}.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n * @returns `true` if the object is variable-size, `false` otherwise.\n *\n * @example\n * Checking a variable-size encoder.\n * ```ts\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * isVariableSize(encoder); // true\n * ```\n *\n * @example\n * Checking a fixed-size encoder.\n * ```ts\n * const encoder = getU32Encoder();\n * isVariableSize(encoder); // false\n * ```\n *\n * @remarks\n * This function is the inverse of {@link isFixedSize}.\n *\n * @see {@link isFixedSize}\n * @see {@link assertIsVariableSize}\n */\nexport function isVariableSize(encoder: Encoder): encoder is VariableSizeEncoder;\nexport function isVariableSize(decoder: Decoder): decoder is VariableSizeDecoder;\nexport function isVariableSize(\n codec: Codec,\n): codec is VariableSizeCodec;\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number };\nexport function isVariableSize(codec: { fixedSize: number } | { maxSize?: number }): codec is { maxSize?: number } {\n return !isFixedSize(codec);\n}\n\n/**\n * Asserts that the given codec, encoder, or decoder is variable-size.\n *\n * If the object is not variable-size (i.e., it has a `fixedSize` property),\n * this function throws a {@link SolanaError} with the code `SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH`.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n * @throws {SolanaError} If the object is not variable-size.\n *\n * @example\n * Asserting a variable-size encoder.\n * ```ts\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * assertIsVariableSize(encoder); // Passes\n * ```\n *\n * @example\n * Attempting to assert a fixed-size encoder.\n * ```ts\n * const encoder = getU32Encoder();\n * assertIsVariableSize(encoder); // Throws SolanaError\n * ```\n *\n * @remarks\n * This function is the assertion-based counterpart of {@link isVariableSize}.\n * If you only need to check whether an object is variable-size without throwing an error, use {@link isVariableSize} instead.\n *\n * Also note that this function is the inverse of {@link assertIsFixedSize}.\n *\n * @see {@link isVariableSize}\n * @see {@link assertIsFixedSize}\n */\nexport function assertIsVariableSize(encoder: Encoder): asserts encoder is VariableSizeEncoder;\nexport function assertIsVariableSize(decoder: Decoder): asserts decoder is VariableSizeDecoder;\nexport function assertIsVariableSize(\n codec: Codec,\n): asserts codec is VariableSizeCodec;\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number };\nexport function assertIsVariableSize(\n codec: { fixedSize: number } | { maxSize?: number },\n): asserts codec is { maxSize?: number } {\n if (!isVariableSize(codec)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH);\n }\n}\n", "import {\n SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH,\n SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n Codec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\n\n/**\n * Combines an `Encoder` and a `Decoder` into a `Codec`.\n *\n * That is, given a `Encoder` and a `Decoder`, this function returns a `Codec`.\n *\n * This allows for modular composition by keeping encoding and decoding logic separate\n * while still offering a convenient way to bundle them into a single `Codec`.\n * This is particularly useful for library maintainers who want to expose `Encoders`,\n * `Decoders`, and `Codecs` separately, enabling tree-shaking of unused logic.\n *\n * The provided `Encoder` and `Decoder` must be compatible in terms of:\n * - **Fixed Size:** If both are fixed-size, they must have the same `fixedSize` value.\n * - **Variable Size:** If either has a `maxSize` attribute, it must match the other.\n *\n * If these conditions are not met, a {@link SolanaError} will be thrown.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes (for fixed-size codecs).\n *\n * @param encoder - The `Encoder` to combine.\n * @param decoder - The `Decoder` to combine.\n * @returns A `Codec` that provides both `encode` and `decode` methods.\n *\n * @throws {SolanaError}\n * - `SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH`\n * Thrown if the encoder and decoder have mismatched size types (fixed vs. variable).\n * - `SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH`\n * Thrown if both are fixed-size but have different `fixedSize` values.\n * - `SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH`\n * Thrown if the `maxSize` attributes do not match.\n *\n * @example\n * Creating a fixed-size `Codec` from an encoder and a decoder.\n * ```ts\n * const encoder = getU32Encoder();\n * const decoder = getU32Decoder();\n * const codec = combineCodec(encoder, decoder);\n *\n * const bytes = codec.encode(42); // 0x2a000000\n * const value = codec.decode(bytes); // 42\n * ```\n *\n * @example\n * Creating a variable-size `Codec` from an encoder and a decoder.\n * ```ts\n * const encoder = addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder());\n * const decoder = addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder());\n * const codec = combineCodec(encoder, decoder);\n *\n * const bytes = codec.encode(\"hello\"); // 0x0500000068656c6c6f\n * const value = codec.decode(bytes); // \"hello\"\n * ```\n *\n * @remarks\n * The recommended pattern for defining codecs in libraries is to expose separate functions for the encoder, decoder, and codec.\n * This allows users to import only what they need, improving tree-shaking efficiency.\n *\n * ```ts\n * type MyType = \\/* ... *\\/;\n * const getMyTypeEncoder = (): Encoder => { \\/* ... *\\/ };\n * const getMyTypeDecoder = (): Decoder => { \\/* ... *\\/ };\n * const getMyTypeCodec = (): Codec =>\n * combineCodec(getMyTypeEncoder(), getMyTypeDecoder());\n * ```\n *\n * @see {@link Codec}\n * @see {@link Encoder}\n * @see {@link Decoder}\n */\nexport function combineCodec(\n encoder: FixedSizeEncoder,\n decoder: FixedSizeDecoder,\n): FixedSizeCodec;\nexport function combineCodec(\n encoder: VariableSizeEncoder,\n decoder: VariableSizeDecoder,\n): VariableSizeCodec;\nexport function combineCodec(\n encoder: Encoder,\n decoder: Decoder,\n): Codec;\nexport function combineCodec(\n encoder: Encoder,\n decoder: Decoder,\n): Codec {\n if (isFixedSize(encoder) !== isFixedSize(decoder)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH);\n }\n\n if (isFixedSize(encoder) && isFixedSize(decoder) && encoder.fixedSize !== decoder.fixedSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH, {\n decoderFixedSize: decoder.fixedSize,\n encoderFixedSize: encoder.fixedSize,\n });\n }\n\n if (!isFixedSize(encoder) && !isFixedSize(decoder) && encoder.maxSize !== decoder.maxSize) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH, {\n decoderMaxSize: decoder.maxSize,\n encoderMaxSize: encoder.maxSize,\n });\n }\n\n return {\n ...decoder,\n ...encoder,\n decode: decoder.decode,\n encode: encoder.encode,\n read: decoder.read,\n write: encoder.write,\n };\n}\n", "import {\n SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL,\n SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES,\n SolanaError,\n} from '@solana/errors';\n\nimport { containsBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Creates an encoder that writes a `Uint8Array` sentinel after the encoded value.\n * This is useful to delimit the encoded value when being read by a decoder.\n *\n * See {@link addCodecSentinel} for more information.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @see {@link addCodecSentinel}\n */\nexport function addEncoderSentinel(\n encoder: FixedSizeEncoder,\n sentinel: ReadonlyUint8Array,\n): FixedSizeEncoder;\nexport function addEncoderSentinel(\n encoder: Encoder,\n sentinel: ReadonlyUint8Array,\n): VariableSizeEncoder;\nexport function addEncoderSentinel(encoder: Encoder, sentinel: ReadonlyUint8Array): Encoder {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds\n // and to avoid writing the sentinel as part of the encoded value.\n const encoderBytes = encoder.encode(value);\n if (findSentinelIndex(encoderBytes, sentinel) >= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL, {\n encodedBytes: encoderBytes,\n hexEncodedBytes: hexBytes(encoderBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n bytes.set(encoderBytes, offset);\n offset += encoderBytes.length;\n bytes.set(sentinel, offset);\n offset += sentinel.length;\n return offset;\n }) as Encoder['write'];\n\n if (isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: encoder.fixedSize + sentinel.length, write });\n }\n\n return createEncoder({\n ...encoder,\n ...(encoder.maxSize != null ? { maxSize: encoder.maxSize + sentinel.length } : {}),\n getSizeFromValue: value => encoder.getSizeFromValue(value) + sentinel.length,\n write,\n });\n}\n\n/**\n * Creates a decoder that continues reading until\n * a given `Uint8Array` sentinel is found.\n *\n * See {@link addCodecSentinel} for more information.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @see {@link addCodecSentinel}\n */\nexport function addDecoderSentinel(\n decoder: FixedSizeDecoder,\n sentinel: ReadonlyUint8Array,\n): FixedSizeDecoder;\nexport function addDecoderSentinel(decoder: Decoder, sentinel: ReadonlyUint8Array): VariableSizeDecoder;\nexport function addDecoderSentinel(decoder: Decoder, sentinel: ReadonlyUint8Array): Decoder {\n const read = ((bytes, offset) => {\n const candidateBytes = offset === 0 ? bytes : bytes.slice(offset);\n const sentinelIndex = findSentinelIndex(candidateBytes, sentinel);\n if (sentinelIndex === -1) {\n throw new SolanaError(SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES, {\n decodedBytes: candidateBytes,\n hexDecodedBytes: hexBytes(candidateBytes),\n hexSentinel: hexBytes(sentinel),\n sentinel,\n });\n }\n const preSentinelBytes = candidateBytes.slice(0, sentinelIndex);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds\n // and ensure that the sentinel is not part of the decoded value.\n return [decoder.decode(preSentinelBytes), offset + preSentinelBytes.length + sentinel.length];\n }) as Decoder['read'];\n\n if (isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: decoder.fixedSize + sentinel.length, read });\n }\n\n return createDecoder({\n ...decoder,\n ...(decoder.maxSize != null ? { maxSize: decoder.maxSize + sentinel.length } : {}),\n read,\n });\n}\n\n/**\n * Creates a Codec that writes a given `Uint8Array` sentinel after the encoded\n * value and, when decoding, continues reading until the sentinel is found.\n *\n * This sets a limit on variable-size codecs and tells us when to stop decoding.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @example\n * ```ts\n * const codec = addCodecSentinel(getUtf8Codec(), new Uint8Array([255, 255]));\n * codec.encode('hello');\n * // 0x68656c6c6fffff\n * // | └-- Our sentinel.\n * // └-- Our encoded string.\n * ```\n *\n * @remarks\n * Note that the sentinel _must not_ be present in the encoded data and\n * _must_ be present in the decoded data for this to work.\n * If this is not the case, dedicated errors will be thrown.\n *\n * ```ts\n * const sentinel = new Uint8Array([108, 108]); // 'll'\n * const codec = addCodecSentinel(getUtf8Codec(), sentinel);\n *\n * codec.encode('hello'); // Throws: sentinel is in encoded data.\n * codec.decode(new Uint8Array([1, 2, 3])); // Throws: sentinel missing in decoded data.\n * ```\n *\n * Separate {@link addEncoderSentinel} and {@link addDecoderSentinel} functions are also available.\n *\n * ```ts\n * const bytes = addEncoderSentinel(getUtf8Encoder(), sentinel).encode('hello');\n * const value = addDecoderSentinel(getUtf8Decoder(), sentinel).decode(bytes);\n * ```\n *\n * @see {@link addEncoderSentinel}\n * @see {@link addDecoderSentinel}\n */\nexport function addCodecSentinel(\n codec: FixedSizeCodec,\n sentinel: ReadonlyUint8Array,\n): FixedSizeCodec;\nexport function addCodecSentinel(\n codec: Codec,\n sentinel: ReadonlyUint8Array,\n): VariableSizeCodec;\nexport function addCodecSentinel(\n codec: Codec,\n sentinel: ReadonlyUint8Array,\n): Codec {\n return combineCodec(addEncoderSentinel(codec, sentinel), addDecoderSentinel(codec, sentinel));\n}\n\nfunction findSentinelIndex(bytes: ReadonlyUint8Array, sentinel: ReadonlyUint8Array) {\n return bytes.findIndex((byte, index, arr) => {\n if (sentinel.length === 1) return byte === sentinel[0];\n return containsBytes(arr, sentinel, index);\n });\n}\n\nfunction hexBytes(bytes: ReadonlyUint8Array): string {\n return bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n}\n", "import {\n SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Asserts that a given byte array is not empty (after the optional provided offset).\n *\n * Returns void if the byte array is not empty but throws a {@link SolanaError} otherwise.\n *\n * @param codecDescription - A description of the codec used by the assertion error.\n * @param bytes - The byte array to check.\n * @param offset - The offset from which to start checking the byte array.\n * If provided, the byte array is considered empty if it has no bytes after the offset.\n *\n * @example\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02, 0x03]);\n * assertByteArrayIsNotEmptyForCodec('myCodec', bytes); // OK\n * assertByteArrayIsNotEmptyForCodec('myCodec', bytes, 1); // OK\n * assertByteArrayIsNotEmptyForCodec('myCodec', bytes, 3); // Throws\n * ```\n */\nexport function assertByteArrayIsNotEmptyForCodec(\n codecDescription: string,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n if (bytes.length - offset <= 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY, {\n codecDescription,\n });\n }\n}\n\n/**\n * Asserts that a given byte array has enough bytes to decode\n * (after the optional provided offset).\n *\n * Returns void if the byte array has at least the expected number\n * of bytes but throws a {@link SolanaError} otherwise.\n *\n * @param codecDescription - A description of the codec used by the assertion error.\n * @param expected - The minimum number of bytes expected in the byte array.\n * @param bytes - The byte array to check.\n * @param offset - The offset from which to start checking the byte array.\n *\n * @example\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02, 0x03]);\n * assertByteArrayHasEnoughBytesForCodec('myCodec', 3, bytes); // OK\n * assertByteArrayHasEnoughBytesForCodec('myCodec', 4, bytes); // Throws\n * assertByteArrayHasEnoughBytesForCodec('myCodec', 2, bytes, 1); // OK\n * assertByteArrayHasEnoughBytesForCodec('myCodec', 3, bytes, 1); // Throws\n * ```\n */\nexport function assertByteArrayHasEnoughBytesForCodec(\n codecDescription: string,\n expected: number,\n bytes: ReadonlyUint8Array | Uint8Array,\n offset = 0,\n) {\n const bytesLength = bytes.length - offset;\n if (bytesLength < expected) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n bytesLength,\n codecDescription,\n expected,\n });\n }\n}\n\n/**\n * Asserts that a given offset is within the byte array bounds.\n * This range is between 0 and the byte array length and is inclusive.\n * An offset equals to the byte array length is considered a valid offset\n * as it allows the post-offset of codecs to signal the end of the byte array.\n *\n * @param codecDescription - A description of the codec used by the assertion error.\n * @param offset - The offset to check.\n * @param bytesLength - The length of the byte array from which the offset should be within bounds.\n *\n * @example\n * ```ts\n * const bytes = new Uint8Array([0x01, 0x02, 0x03]);\n * assertByteArrayOffsetIsNotOutOfRange('myCodec', 0, bytes.length); // OK\n * assertByteArrayOffsetIsNotOutOfRange('myCodec', 3, bytes.length); // OK\n * assertByteArrayOffsetIsNotOutOfRange('myCodec', 4, bytes.length); // Throws\n * ```\n */\nexport function assertByteArrayOffsetIsNotOutOfRange(codecDescription: string, offset: number, bytesLength: number) {\n if (offset < 0 || offset > bytesLength) {\n throw new SolanaError(SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE, {\n bytesLength,\n codecDescription,\n offset,\n });\n }\n}\n", "import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n isFixedSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\ntype NumberEncoder = Encoder | Encoder;\ntype FixedSizeNumberEncoder =\n | FixedSizeEncoder\n | FixedSizeEncoder;\ntype NumberDecoder = Decoder | Decoder;\ntype FixedSizeNumberDecoder =\n | FixedSizeDecoder\n | FixedSizeDecoder;\ntype NumberCodec = Codec | Codec;\ntype FixedSizeNumberCodec =\n | FixedSizeCodec\n | FixedSizeCodec;\n\n/**\n * Stores the size of the `encoder` in bytes as a prefix using the `prefix` encoder.\n *\n * See {@link addCodecSizePrefix} for more information.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @see {@link addCodecSizePrefix}\n */\nexport function addEncoderSizePrefix(\n encoder: FixedSizeEncoder,\n prefix: FixedSizeNumberEncoder,\n): FixedSizeEncoder;\nexport function addEncoderSizePrefix(encoder: Encoder, prefix: NumberEncoder): VariableSizeEncoder;\nexport function addEncoderSizePrefix(encoder: Encoder, prefix: NumberEncoder): Encoder {\n const write = ((value, bytes, offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function to contain the content of the encoder within its own bounds.\n const encoderBytes = encoder.encode(value);\n offset = prefix.write(encoderBytes.length, bytes, offset);\n bytes.set(encoderBytes, offset);\n return offset + encoderBytes.length;\n }) as Encoder['write'];\n\n if (isFixedSize(prefix) && isFixedSize(encoder)) {\n return createEncoder({ ...encoder, fixedSize: prefix.fixedSize + encoder.fixedSize, write });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const encoderMaxSize = isFixedSize(encoder) ? encoder.fixedSize : (encoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && encoderMaxSize !== null ? prefixMaxSize + encoderMaxSize : null;\n\n return createEncoder({\n ...encoder,\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: value => {\n const encoderSize = getEncodedSize(value, encoder);\n return getEncodedSize(encoderSize, prefix) + encoderSize;\n },\n write,\n });\n}\n\n/**\n * Bounds the size of the nested `decoder` by reading its encoded `prefix`.\n *\n * See {@link addCodecSizePrefix} for more information.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @see {@link addCodecSizePrefix}\n */\nexport function addDecoderSizePrefix(\n decoder: FixedSizeDecoder,\n prefix: FixedSizeNumberDecoder,\n): FixedSizeDecoder;\nexport function addDecoderSizePrefix(decoder: Decoder, prefix: NumberDecoder): VariableSizeDecoder;\nexport function addDecoderSizePrefix(decoder: Decoder, prefix: NumberDecoder): Decoder {\n const read = ((bytes, offset) => {\n const [bigintSize, decoderOffset] = prefix.read(bytes, offset);\n const size = Number(bigintSize);\n offset = decoderOffset;\n // Slice the byte array to the contained size if necessary.\n if (offset > 0 || bytes.length > size) {\n bytes = bytes.slice(offset, offset + size);\n }\n assertByteArrayHasEnoughBytesForCodec('addDecoderSizePrefix', size, bytes);\n // Here we exceptionally use the `decode` function instead of the `read`\n // function to contain the content of the decoder within its own bounds.\n return [decoder.decode(bytes), offset + size];\n }) as Decoder['read'];\n\n if (isFixedSize(prefix) && isFixedSize(decoder)) {\n return createDecoder({ ...decoder, fixedSize: prefix.fixedSize + decoder.fixedSize, read });\n }\n\n const prefixMaxSize = isFixedSize(prefix) ? prefix.fixedSize : (prefix.maxSize ?? null);\n const decoderMaxSize = isFixedSize(decoder) ? decoder.fixedSize : (decoder.maxSize ?? null);\n const maxSize = prefixMaxSize !== null && decoderMaxSize !== null ? prefixMaxSize + decoderMaxSize : null;\n return createDecoder({ ...decoder, ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Stores the byte size of any given codec as an encoded number prefix.\n *\n * This sets a limit on variable-size codecs and tells us when to stop decoding.\n * When encoding, the size of the encoded data is stored before the encoded data itself.\n * When decoding, the size is read first to know how many bytes to read next.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @example\n * For example, say we want to bound a variable-size base-58 string using a `u32` size prefix.\n * Here’s how you can use the `addCodecSizePrefix` function to achieve that.\n *\n * ```ts\n * const getU32Base58Codec = () => addCodecSizePrefix(getBase58Codec(), getU32Codec());\n *\n * getU32Base58Codec().encode('hello world');\n * // 0x0b00000068656c6c6f20776f726c64\n * // | └-- Our encoded base-58 string.\n * // └-- Our encoded u32 size prefix.\n * ```\n *\n * @remarks\n * Separate {@link addEncoderSizePrefix} and {@link addDecoderSizePrefix} functions are also available.\n *\n * ```ts\n * const bytes = addEncoderSizePrefix(getBase58Encoder(), getU32Encoder()).encode('hello');\n * const value = addDecoderSizePrefix(getBase58Decoder(), getU32Decoder()).decode(bytes);\n * ```\n *\n * @see {@link addEncoderSizePrefix}\n * @see {@link addDecoderSizePrefix}\n */\nexport function addCodecSizePrefix(\n codec: FixedSizeCodec,\n prefix: FixedSizeNumberCodec,\n): FixedSizeCodec;\nexport function addCodecSizePrefix(\n codec: Codec,\n prefix: NumberCodec,\n): VariableSizeCodec;\nexport function addCodecSizePrefix(\n codec: Codec,\n prefix: NumberCodec,\n): Codec {\n return combineCodec(addEncoderSizePrefix(codec, prefix), addDecoderSizePrefix(codec, prefix));\n}\n", "import { assertByteArrayHasEnoughBytesForCodec } from './assertions';\nimport { fixBytes } from './bytes';\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n Offset,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n/**\n * Creates a fixed-size encoder from a given encoder.\n *\n * The resulting encoder ensures that encoded values always have the specified number of bytes.\n * If the original encoded value is larger than `fixedBytes`, it is truncated.\n * If it is smaller, it is padded with trailing zeroes.\n *\n * For more details, see {@link fixCodecSize}.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @param encoder - The encoder to wrap into a fixed-size encoder.\n * @param fixedBytes - The fixed number of bytes to write.\n * @returns A `FixedSizeEncoder` that ensures a consistent output size.\n *\n * @example\n * ```ts\n * const encoder = fixEncoderSize(getUtf8Encoder(), 4);\n * encoder.encode(\"Hello\"); // 0x48656c6c (truncated)\n * encoder.encode(\"Hi\"); // 0x48690000 (padded)\n * encoder.encode(\"Hiya\"); // 0x48697961 (same length)\n * ```\n *\n * @remarks\n * If you need a full codec with both encoding and decoding, use {@link fixCodecSize}.\n *\n * @see {@link fixCodecSize}\n * @see {@link fixDecoderSize}\n */\nexport function fixEncoderSize(\n encoder: Encoder,\n fixedBytes: TSize,\n): FixedSizeEncoder {\n return createEncoder({\n fixedSize: fixedBytes,\n write: (value: TFrom, bytes: Uint8Array, offset: Offset) => {\n // Here we exceptionally use the `encode` function instead of the `write`\n // function as using the nested `write` function on a fixed-sized byte\n // array may result in a out-of-bounds error on the nested encoder.\n const variableByteArray = encoder.encode(value);\n const fixedByteArray =\n variableByteArray.length > fixedBytes ? variableByteArray.slice(0, fixedBytes) : variableByteArray;\n bytes.set(fixedByteArray, offset);\n return offset + fixedBytes;\n },\n });\n}\n\n/**\n * Creates a fixed-size decoder from a given decoder.\n *\n * The resulting decoder always reads exactly `fixedBytes` bytes from the input.\n * If the nested decoder is also fixed-size, the bytes are truncated or padded as needed.\n *\n * For more details, see {@link fixCodecSize}.\n *\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @param decoder - The decoder to wrap into a fixed-size decoder.\n * @param fixedBytes - The fixed number of bytes to read.\n * @returns A `FixedSizeDecoder` that ensures a consistent input size.\n *\n * @example\n * ```ts\n * const decoder = fixDecoderSize(getUtf8Decoder(), 4);\n * decoder.decode(new Uint8Array([72, 101, 108, 108, 111])); // \"Hell\" (truncated)\n * decoder.decode(new Uint8Array([72, 105, 0, 0])); // \"Hi\" (zeroes ignored)\n * decoder.decode(new Uint8Array([72, 105, 121, 97])); // \"Hiya\" (same length)\n * ```\n *\n * @remarks\n * If you need a full codec with both encoding and decoding, use {@link fixCodecSize}.\n *\n * @see {@link fixCodecSize}\n * @see {@link fixEncoderSize}\n */\nexport function fixDecoderSize(\n decoder: Decoder,\n fixedBytes: TSize,\n): FixedSizeDecoder {\n return createDecoder({\n fixedSize: fixedBytes,\n read: (bytes, offset) => {\n assertByteArrayHasEnoughBytesForCodec('fixCodecSize', fixedBytes, bytes, offset);\n // Slice the byte array to the fixed size if necessary.\n if (offset > 0 || bytes.length > fixedBytes) {\n bytes = bytes.slice(offset, offset + fixedBytes);\n }\n // If the nested decoder is fixed-size, pad and truncate the byte array accordingly.\n if (isFixedSize(decoder)) {\n bytes = fixBytes(bytes, decoder.fixedSize);\n }\n // Decode the value using the nested decoder.\n const [value] = decoder.read(bytes, 0);\n return [value, offset + fixedBytes];\n },\n });\n}\n\n/**\n * Creates a fixed-size codec from a given codec.\n *\n * The resulting codec ensures that both encoding and decoding operate on a fixed number of bytes.\n * When encoding:\n * - If the encoded value is larger than `fixedBytes`, it is truncated.\n * - If it is smaller, it is padded with trailing zeroes.\n * - If it is exactly `fixedBytes`, it remains unchanged.\n *\n * When decoding:\n * - Exactly `fixedBytes` bytes are read from the input.\n * - If the nested decoder has a smaller fixed size, bytes are truncated or padded as necessary.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @param codec - The codec to wrap into a fixed-size codec.\n * @param fixedBytes - The fixed number of bytes to read/write.\n * @returns A `FixedSizeCodec` that ensures both encoding and decoding conform to a fixed size.\n *\n * @example\n * ```ts\n * const codec = fixCodecSize(getUtf8Codec(), 4);\n *\n * const bytes1 = codec.encode(\"Hello\"); // 0x48656c6c (truncated)\n * const value1 = codec.decode(bytes1); // \"Hell\"\n *\n * const bytes2 = codec.encode(\"Hi\"); // 0x48690000 (padded)\n * const value2 = codec.decode(bytes2); // \"Hi\"\n *\n * const bytes3 = codec.encode(\"Hiya\"); // 0x48697961 (same length)\n * const value3 = codec.decode(bytes3); // \"Hiya\"\n * ```\n *\n * @remarks\n * If you only need to enforce a fixed size for encoding, use {@link fixEncoderSize}.\n * If you only need to enforce a fixed size for decoding, use {@link fixDecoderSize}.\n *\n * ```ts\n * const bytes = fixEncoderSize(getUtf8Encoder(), 4).encode(\"Hiya\");\n * const value = fixDecoderSize(getUtf8Decoder(), 4).decode(bytes);\n * ```\n *\n * @see {@link fixEncoderSize}\n * @see {@link fixDecoderSize}\n */\nexport function fixCodecSize(\n codec: Codec,\n fixedBytes: TSize,\n): FixedSizeCodec {\n return combineCodec(fixEncoderSize(codec, fixedBytes), fixDecoderSize(codec, fixedBytes));\n}\n", "import { assertByteArrayOffsetIsNotOutOfRange } from './assertions';\nimport { Codec, createDecoder, createEncoder, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec;\n\n/**\n * Configuration object for modifying the offset of an encoder, decoder, or codec.\n *\n * This type defines optional functions for adjusting the **pre-offset** (before encoding/decoding)\n * and the **post-offset** (after encoding/decoding). These functions allow precise control\n * over where data is written or read within a byte array.\n *\n * @property preOffset - A function that modifies the offset before encoding or decoding.\n * @property postOffset - A function that modifies the offset after encoding or decoding.\n *\n * @example\n * Moving the pre-offset forward by 2 bytes.\n * ```ts\n * const config: OffsetConfig = {\n * preOffset: ({ preOffset }) => preOffset + 2,\n * };\n * ```\n *\n * @example\n * Moving the post-offset forward by 2 bytes.\n * ```ts\n * const config: OffsetConfig = {\n * postOffset: ({ postOffset }) => postOffset + 2,\n * };\n * ```\n *\n * @example\n * Using both pre-offset and post-offset together.\n * ```ts\n * const config: OffsetConfig = {\n * preOffset: ({ preOffset }) => preOffset + 2,\n * postOffset: ({ postOffset }) => postOffset + 4,\n * };\n * ```\n *\n * @see {@link offsetEncoder}\n * @see {@link offsetDecoder}\n * @see {@link offsetCodec}\n */\ntype OffsetConfig = {\n postOffset?: PostOffsetFunction;\n preOffset?: PreOffsetFunction;\n};\n\n/**\n * Scope provided to the `preOffset` and `postOffset` functions,\n * containing contextual information about the current encoding or decoding process.\n *\n * The pre-offset function modifies where encoding or decoding begins,\n * while the post-offset function modifies where the next operation continues.\n *\n * @property bytes - The entire byte array being encoded or decoded.\n * @property preOffset - The original offset before encoding or decoding starts.\n * @property wrapBytes - A helper function that wraps offsets around the byte array length.\n *\n * @example\n * Using `wrapBytes` to wrap a negative offset to the end of the byte array.\n * ```ts\n * const config: OffsetConfig = {\n * preOffset: ({ wrapBytes }) => wrapBytes(-4), // Moves to last 4 bytes\n * };\n * ```\n *\n * @example\n * Adjusting the offset dynamically based on the byte array size.\n * ```ts\n * const config: OffsetConfig = {\n * preOffset: ({ bytes }) => bytes.length > 10 ? 4 : 2,\n * };\n * ```\n *\n * @see {@link PreOffsetFunction}\n * @see {@link PostOffsetFunction}\n */\ntype PreOffsetFunctionScope = {\n /** The entire byte array. */\n bytes: ReadonlyUint8Array | Uint8Array;\n /** The original offset prior to encode or decode. */\n preOffset: Offset;\n /** Wraps the offset to the byte array length. */\n wrapBytes: (offset: Offset) => Offset;\n};\n\n/**\n * A function that modifies the pre-offset before encoding or decoding.\n *\n * This function is used to adjust the starting position before writing\n * or reading data in a byte array.\n *\n * @param scope - The current encoding or decoding context.\n * @returns The new offset at which encoding or decoding should start.\n *\n * @example\n * Skipping the first 2 bytes before writing or reading.\n * ```ts\n * const preOffset: PreOffsetFunction = ({ preOffset }) => preOffset + 2;\n * ```\n *\n * @example\n * Wrapping the offset to ensure it stays within bounds.\n * ```ts\n * const preOffset: PreOffsetFunction = ({ wrapBytes, preOffset }) => wrapBytes(preOffset + 10);\n * ```\n *\n * @see {@link OffsetConfig}\n * @see {@link PreOffsetFunctionScope}\n */\ntype PreOffsetFunction = (scope: PreOffsetFunctionScope) => Offset;\n\n/**\n * A function that modifies the post-offset after encoding or decoding.\n *\n * This function adjusts where the next encoder or decoder should start\n * after the current operation has completed.\n *\n * @param scope - The current encoding or decoding context, including the modified pre-offset\n * and the original post-offset.\n * @returns The new offset at which the next operation should begin.\n *\n * @example\n * Moving the post-offset forward by 4 bytes.\n * ```ts\n * const postOffset: PostOffsetFunction = ({ postOffset }) => postOffset + 4;\n * ```\n *\n * @example\n * Wrapping the post-offset within the byte array length.\n * ```ts\n * const postOffset: PostOffsetFunction = ({ wrapBytes, postOffset }) => wrapBytes(postOffset);\n * ```\n *\n * @example\n * Ensuring a minimum spacing of 8 bytes between values.\n * ```ts\n * const postOffset: PostOffsetFunction = ({ postOffset, newPreOffset }) =>\n * Math.max(postOffset, newPreOffset + 8);\n * ```\n *\n * @see {@link OffsetConfig}\n * @see {@link PreOffsetFunctionScope}\n */\ntype PostOffsetFunction = (\n scope: PreOffsetFunctionScope & {\n /** The modified offset used to encode or decode. */\n newPreOffset: Offset;\n /** The original offset returned by the encoder or decoder. */\n postOffset: Offset;\n },\n) => Offset;\n\n/**\n * Moves the offset of a given encoder before and/or after encoding.\n *\n * This function allows an encoder to write its encoded value at a different offset\n * than the one originally provided. It supports both pre-offset adjustments\n * (before encoding) and post-offset adjustments (after encoding).\n *\n * The pre-offset function determines where encoding should start, while the\n * post-offset function adjusts where the next encoder should continue writing.\n *\n * For more details, see {@link offsetCodec}.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @param encoder - The encoder to adjust.\n * @param config - An object specifying how the offset should be modified.\n * @returns A new encoder with adjusted offsets.\n *\n * @example\n * Moving the pre-offset forward by 2 bytes.\n * ```ts\n * const encoder = offsetEncoder(getU32Encoder(), {\n * preOffset: ({ preOffset }) => preOffset + 2,\n * });\n * const bytes = new Uint8Array(10);\n * encoder.write(42, bytes, 0); // Actually written at offset 2\n * ```\n *\n * @example\n * Moving the post-offset forward by 2 bytes.\n * ```ts\n * const encoder = offsetEncoder(getU32Encoder(), {\n * postOffset: ({ postOffset }) => postOffset + 2,\n * });\n * const bytes = new Uint8Array(10);\n * const nextOffset = encoder.write(42, bytes, 0); // Next encoder starts at offset 6 instead of 4\n * ```\n *\n * @example\n * Using `wrapBytes` to ensure an offset wraps around the byte array length.\n * ```ts\n * const encoder = offsetEncoder(getU32Encoder(), {\n * preOffset: ({ wrapBytes }) => wrapBytes(-4), // Moves offset to last 4 bytes of the array\n * });\n * const bytes = new Uint8Array(10);\n * encoder.write(42, bytes, 0); // Writes at bytes.length - 4\n * ```\n *\n * @remarks\n * If you need both encoding and decoding offsets to be adjusted, use {@link offsetCodec}.\n *\n * @see {@link offsetCodec}\n * @see {@link offsetDecoder}\n */\nexport function offsetEncoder(encoder: TEncoder, config: OffsetConfig): TEncoder {\n return createEncoder({\n ...encoder,\n write: (value, bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPreOffset, bytes.length);\n const postOffset = encoder.write(value, bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetEncoder', newPostOffset, bytes.length);\n return newPostOffset;\n },\n }) as TEncoder;\n}\n\n/**\n * Moves the offset of a given decoder before and/or after decoding.\n *\n * This function allows a decoder to read its input from a different offset\n * than the one originally provided. It supports both pre-offset adjustments\n * (before decoding) and post-offset adjustments (after decoding).\n *\n * The pre-offset function determines where decoding should start, while the\n * post-offset function adjusts where the next decoder should continue reading.\n *\n * For more details, see {@link offsetCodec}.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @param decoder - The decoder to adjust.\n * @param config - An object specifying how the offset should be modified.\n * @returns A new decoder with adjusted offsets.\n *\n * @example\n * Moving the pre-offset forward by 2 bytes.\n * ```ts\n * const decoder = offsetDecoder(getU32Decoder(), {\n * preOffset: ({ preOffset }) => preOffset + 2,\n * });\n * const bytes = new Uint8Array([0, 0, 42, 0]); // Value starts at offset 2\n * decoder.read(bytes, 0); // Actually reads from offset 2\n * ```\n *\n * @example\n * Moving the post-offset forward by 2 bytes.\n * ```ts\n * const decoder = offsetDecoder(getU32Decoder(), {\n * postOffset: ({ postOffset }) => postOffset + 2,\n * });\n * const bytes = new Uint8Array([42, 0, 0, 0]);\n * const [value, nextOffset] = decoder.read(bytes, 0); // Next decoder starts at offset 6 instead of 4\n * ```\n *\n * @example\n * Using `wrapBytes` to read from the last 4 bytes of an array.\n * ```ts\n * const decoder = offsetDecoder(getU32Decoder(), {\n * preOffset: ({ wrapBytes }) => wrapBytes(-4), // Moves offset to last 4 bytes of the array\n * });\n * const bytes = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 42]); // Value stored at the last 4 bytes\n * decoder.read(bytes, 0); // Reads from bytes.length - 4\n * ```\n *\n * @remarks\n * If you need both encoding and decoding offsets to be adjusted, use {@link offsetCodec}.\n *\n * @see {@link offsetCodec}\n * @see {@link offsetEncoder}\n */\nexport function offsetDecoder(decoder: TDecoder, config: OffsetConfig): TDecoder {\n return createDecoder({\n ...decoder,\n read: (bytes, preOffset) => {\n const wrapBytes = (offset: Offset) => modulo(offset, bytes.length);\n const newPreOffset = config.preOffset ? config.preOffset({ bytes, preOffset, wrapBytes }) : preOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPreOffset, bytes.length);\n const [value, postOffset] = decoder.read(bytes, newPreOffset);\n const newPostOffset = config.postOffset\n ? config.postOffset({ bytes, newPreOffset, postOffset, preOffset, wrapBytes })\n : postOffset;\n assertByteArrayOffsetIsNotOutOfRange('offsetDecoder', newPostOffset, bytes.length);\n return [value, newPostOffset];\n },\n }) as TDecoder;\n}\n\n/**\n * Moves the offset of a given codec before and/or after encoding and decoding.\n *\n * This function allows a codec to encode and decode values at custom offsets\n * within a byte array. It modifies both the **pre-offset** (where encoding/decoding starts)\n * and the **post-offset** (where the next operation should continue).\n *\n * This is particularly useful when working with structured binary formats\n * that require skipping reserved bytes, inserting padding, or aligning fields at\n * specific locations.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @param codec - The codec to adjust.\n * @param config - An object specifying how the offset should be modified.\n * @returns A new codec with adjusted offsets.\n *\n * @example\n * Moving the pre-offset forward by 2 bytes when encoding and decoding.\n * ```ts\n * const codec = offsetCodec(getU32Codec(), {\n * preOffset: ({ preOffset }) => preOffset + 2,\n * });\n * const bytes = new Uint8Array(10);\n * codec.write(42, bytes, 0); // Actually written at offset 2\n * codec.read(bytes, 0); // Actually read from offset 2\n * ```\n *\n * @example\n * Moving the post-offset forward by 2 bytes when encoding and decoding.\n * ```ts\n * const codec = offsetCodec(getU32Codec(), {\n * postOffset: ({ postOffset }) => postOffset + 2,\n * });\n * const bytes = new Uint8Array(10);\n * codec.write(42, bytes, 0);\n * // Next encoding starts at offset 6 instead of 4\n * codec.read(bytes, 0);\n * // Next decoding starts at offset 6 instead of 4\n * ```\n *\n * @example\n * Using `wrapBytes` to loop around negative offsets.\n * ```ts\n * const codec = offsetCodec(getU32Codec(), {\n * preOffset: ({ wrapBytes }) => wrapBytes(-4), // Moves offset to last 4 bytes\n * });\n * const bytes = new Uint8Array(10);\n * codec.write(42, bytes, 0); // Writes at bytes.length - 4\n * codec.read(bytes, 0); // Reads from bytes.length - 4\n * ```\n *\n * @remarks\n * If you only need to adjust offsets for encoding, use {@link offsetEncoder}.\n * If you only need to adjust offsets for decoding, use {@link offsetDecoder}.\n *\n * ```ts\n * const bytes = new Uint8Array(10);\n * offsetEncoder(getU32Encoder(), { preOffset: ({ preOffset }) => preOffset + 2 }).write(42, bytes, 0);\n * const [value] = offsetDecoder(getU32Decoder(), { preOffset: ({ preOffset }) => preOffset + 2 }).read(bytes, 0);\n * ```\n *\n * @see {@link offsetEncoder}\n * @see {@link offsetDecoder}\n */\nexport function offsetCodec(codec: TCodec, config: OffsetConfig): TCodec {\n return combineCodec(offsetEncoder(codec, config), offsetDecoder(codec, config)) as TCodec;\n}\n\n/** A modulo function that handles negative dividends and zero divisors. */\nfunction modulo(dividend: number, divisor: number) {\n if (divisor === 0) return 0;\n return ((dividend % divisor) + divisor) % divisor;\n}\n", "import { SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nimport {\n Codec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isFixedSize,\n} from './codec';\nimport { combineCodec } from './combine-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec;\n\n/**\n * Updates the size of a given encoder.\n *\n * This function modifies the size of an encoder using a provided transformation function.\n * For fixed-size encoders, it updates the `fixedSize` property, and for variable-size\n * encoders, it adjusts the size calculation based on the encoded value.\n *\n * If the new size is negative, an error will be thrown.\n *\n * For more details, see {@link resizeCodec}.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TSize - The original fixed size of the encoded value.\n * @typeParam TNewSize - The new fixed size after resizing.\n *\n * @param encoder - The encoder whose size will be updated.\n * @param resize - A function that takes the current size and returns the new size.\n * @returns A new encoder with the updated size.\n *\n * @example\n * Increasing the size of a `u16` encoder by 2 bytes.\n * ```ts\n * const encoder = resizeEncoder(getU16Encoder(), size => size + 2);\n * encoder.encode(0xffff); // 0xffff0000 (two extra bytes added)\n * ```\n *\n * @example\n * Shrinking a `u32` encoder to only use 2 bytes.\n * ```ts\n * const encoder = resizeEncoder(getU32Encoder(), () => 2);\n * encoder.fixedSize; // 2\n * ```\n *\n * @see {@link resizeCodec}\n * @see {@link resizeDecoder}\n */\nexport function resizeEncoder(\n encoder: FixedSizeEncoder,\n resize: (size: TSize) => TNewSize,\n): FixedSizeEncoder;\nexport function resizeEncoder(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder;\nexport function resizeEncoder(\n encoder: TEncoder,\n resize: (size: number) => number,\n): TEncoder {\n if (isFixedSize(encoder)) {\n const fixedSize = resize(encoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return createEncoder({ ...encoder, fixedSize }) as TEncoder;\n }\n return createEncoder({\n ...encoder,\n getSizeFromValue: value => {\n const newSize = resize(encoder.getSizeFromValue(value));\n if (newSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: newSize,\n codecDescription: 'resizeEncoder',\n });\n }\n return newSize;\n },\n }) as TEncoder;\n}\n\n/**\n * Updates the size of a given decoder.\n *\n * This function modifies the size of a decoder using a provided transformation function.\n * For fixed-size decoders, it updates the `fixedSize` property to reflect the new size.\n * Variable-size decoders remain unchanged, as their size is determined dynamically.\n *\n * If the new size is negative, an error will be thrown.\n *\n * For more details, see {@link resizeCodec}.\n *\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The original fixed size of the decoded value.\n * @typeParam TNewSize - The new fixed size after resizing.\n *\n * @param decoder - The decoder whose size will be updated.\n * @param resize - A function that takes the current size and returns the new size.\n * @returns A new decoder with the updated size.\n *\n * @example\n * Expanding a `u16` decoder to read 4 bytes instead of 2.\n * ```ts\n * const decoder = resizeDecoder(getU16Decoder(), size => size + 2);\n * decoder.fixedSize; // 4\n * ```\n *\n * @example\n * Shrinking a `u32` decoder to only read 2 bytes.\n * ```ts\n * const decoder = resizeDecoder(getU32Decoder(), () => 2);\n * decoder.fixedSize; // 2\n * ```\n *\n * @see {@link resizeCodec}\n * @see {@link resizeEncoder}\n */\nexport function resizeDecoder(\n decoder: FixedSizeDecoder,\n resize: (size: TSize) => TNewSize,\n): FixedSizeDecoder;\nexport function resizeDecoder(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder;\nexport function resizeDecoder(\n decoder: TDecoder,\n resize: (size: number) => number,\n): TDecoder {\n if (isFixedSize(decoder)) {\n const fixedSize = resize(decoder.fixedSize);\n if (fixedSize < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH, {\n bytesLength: fixedSize,\n codecDescription: 'resizeDecoder',\n });\n }\n return createDecoder({ ...decoder, fixedSize }) as TDecoder;\n }\n return decoder;\n}\n\n/**\n * Updates the size of a given codec.\n *\n * This function modifies the size of both the codec using a provided\n * transformation function. It is useful for adjusting the allocated byte size for\n * encoding and decoding without altering the underlying data structure.\n *\n * If the new size is negative, an error will be thrown.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The original fixed size of the encoded/decoded value (for fixed-size codecs).\n * @typeParam TNewSize - The new fixed size after resizing (for fixed-size codecs).\n *\n * @param codec - The codec whose size will be updated.\n * @param resize - A function that takes the current size and returns the new size.\n * @returns A new codec with the updated size.\n *\n * @example\n * Expanding a `u16` codec from 2 to 4 bytes.\n * ```ts\n * const codec = resizeCodec(getU16Codec(), size => size + 2);\n * const bytes = codec.encode(0xffff); // 0xffff0000 (two extra bytes added)\n * const value = codec.decode(bytes); // 0xffff (reads original two bytes)\n * ```\n *\n * @example\n * Shrinking a `u32` codec to only use 2 bytes.\n * ```ts\n * const codec = resizeCodec(getU32Codec(), () => 2);\n * codec.fixedSize; // 2\n * ```\n *\n * @remarks\n * If you only need to resize an encoder, use {@link resizeEncoder}.\n * If you only need to resize a decoder, use {@link resizeDecoder}.\n *\n * ```ts\n * const bytes = resizeEncoder(getU32Encoder(), (size) => size + 2).encode(0xffff);\n * const value = resizeDecoder(getU32Decoder(), (size) => size + 2).decode(bytes);\n * ```\n *\n * @see {@link resizeEncoder}\n * @see {@link resizeDecoder}\n */\nexport function resizeCodec(\n codec: FixedSizeCodec,\n resize: (size: TSize) => TNewSize,\n): FixedSizeCodec;\nexport function resizeCodec(codec: TCodec, resize: (size: number) => number): TCodec;\nexport function resizeCodec(codec: TCodec, resize: (size: number) => number): TCodec {\n return combineCodec(resizeEncoder(codec, resize), resizeDecoder(codec, resize)) as TCodec;\n}\n", "import { Codec, Decoder, Encoder, Offset } from './codec';\nimport { combineCodec } from './combine-codec';\nimport { offsetDecoder, offsetEncoder } from './offset-codec';\nimport { resizeDecoder, resizeEncoder } from './resize-codec';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyEncoder = Encoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyDecoder = Decoder;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyCodec = Codec;\n\n/**\n * Adds left padding to the given encoder, shifting the encoded value forward\n * by `offset` bytes whilst increasing the size of the encoder accordingly.\n *\n * For more details, see {@link padLeftCodec}.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @param encoder - The encoder to pad.\n * @param offset - The number of padding bytes to add before encoding.\n * @returns A new encoder with left padding applied.\n *\n * @example\n * ```ts\n * const encoder = padLeftEncoder(getU16Encoder(), 2);\n * const bytes = encoder.encode(0xffff); // 0x0000ffff (0xffff written at offset 2)\n * ```\n *\n * @see {@link padLeftCodec}\n * @see {@link padLeftDecoder}\n */\nexport function padLeftEncoder(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given encoder, extending the encoded value by `offset`\n * bytes whilst increasing the size of the encoder accordingly.\n *\n * For more details, see {@link padRightCodec}.\n *\n * @typeParam TFrom - The type of the value to encode.\n *\n * @param encoder - The encoder to pad.\n * @param offset - The number of padding bytes to add after encoding.\n * @returns A new encoder with right padding applied.\n *\n * @example\n * ```ts\n * const encoder = padRightEncoder(getU16Encoder(), 2);\n * const bytes = encoder.encode(0xffff); // 0xffff0000 (two extra bytes added at the end)\n * ```\n *\n * @see {@link padRightCodec}\n * @see {@link padRightDecoder}\n */\nexport function padRightEncoder(encoder: TEncoder, offset: Offset): TEncoder {\n return offsetEncoder(\n resizeEncoder(encoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given decoder, shifting the decoding position forward\n * by `offset` bytes whilst increasing the size of the decoder accordingly.\n *\n * For more details, see {@link padLeftCodec}.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @param decoder - The decoder to pad.\n * @param offset - The number of padding bytes to skip before decoding.\n * @returns A new decoder with left padding applied.\n *\n * @example\n * ```ts\n * const decoder = padLeftDecoder(getU16Decoder(), 2);\n * const value = decoder.decode(new Uint8Array([0, 0, 0x12, 0x34])); // 0xffff (reads from offset 2)\n * ```\n *\n * @see {@link padLeftCodec}\n * @see {@link padLeftEncoder}\n */\nexport function padLeftDecoder(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { preOffset: ({ preOffset }) => preOffset + offset },\n );\n}\n\n/**\n * Adds right padding to the given decoder, extending the post-offset by `offset`\n * bytes whilst increasing the size of the decoder accordingly.\n *\n * For more details, see {@link padRightCodec}.\n *\n * @typeParam TTo - The type of the decoded value.\n *\n * @param decoder - The decoder to pad.\n * @param offset - The number of padding bytes to skip after decoding.\n * @returns A new decoder with right padding applied.\n *\n * @example\n * ```ts\n * const decoder = padRightDecoder(getU16Decoder(), 2);\n * const value = decoder.decode(new Uint8Array([0x12, 0x34, 0, 0])); // 0xffff (ignores trailing bytes)\n * ```\n *\n * @see {@link padRightCodec}\n * @see {@link padRightEncoder}\n */\nexport function padRightDecoder(decoder: TDecoder, offset: Offset): TDecoder {\n return offsetDecoder(\n resizeDecoder(decoder, size => size + offset),\n { postOffset: ({ postOffset }) => postOffset + offset },\n );\n}\n\n/**\n * Adds left padding to the given codec, shifting the encoding and decoding positions\n * forward by `offset` bytes whilst increasing the size of the codec accordingly.\n *\n * This ensures that values are read and written at a later position in the byte array,\n * while the padding bytes remain unused.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @param codec - The codec to pad.\n * @param offset - The number of padding bytes to add before encoding and decoding.\n * @returns A new codec with left padding applied.\n *\n * @example\n * ```ts\n * const codec = padLeftCodec(getU16Codec(), 2);\n * const bytes = codec.encode(0xffff); // 0x0000ffff (0xffff written at offset 2)\n * const value = codec.decode(bytes); // 0xffff (reads from offset 2)\n * ```\n *\n * @remarks\n * If you only need to apply padding for encoding, use {@link padLeftEncoder}.\n * If you only need to apply padding for decoding, use {@link padLeftDecoder}.\n *\n * ```ts\n * const bytes = padLeftEncoder(getU16Encoder(), 2).encode(0xffff);\n * const value = padLeftDecoder(getU16Decoder(), 2).decode(bytes);\n * ```\n *\n * @see {@link padLeftEncoder}\n * @see {@link padLeftDecoder}\n */\nexport function padLeftCodec(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padLeftEncoder(codec, offset), padLeftDecoder(codec, offset)) as TCodec;\n}\n\n/**\n * Adds right padding to the given codec, extending the encoded and decoded value\n * by `offset` bytes whilst increasing the size of the codec accordingly.\n *\n * The extra bytes remain unused, ensuring that the next operation starts further\n * along the byte array.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n *\n * @param codec - The codec to pad.\n * @param offset - The number of padding bytes to add after encoding and decoding.\n * @returns A new codec with right padding applied.\n *\n * @example\n * ```ts\n * const codec = padRightCodec(getU16Codec(), 2);\n * const bytes = codec.encode(0xffff); // 0xffff0000 (two extra bytes added)\n * const value = codec.decode(bytes); // 0xffff (ignores padding bytes)\n * ```\n *\n * @remarks\n * If you only need to apply padding for encoding, use {@link padRightEncoder}.\n * If you only need to apply padding for decoding, use {@link padRightDecoder}.\n *\n * ```ts\n * const bytes = padRightEncoder(getU16Encoder(), 2).encode(0xffff);\n * const value = padRightDecoder(getU16Decoder(), 2).decode(bytes);\n * ```\n *\n * @see {@link padRightEncoder}\n * @see {@link padRightDecoder}\n */\nexport function padRightCodec(codec: TCodec, offset: Offset): TCodec {\n return combineCodec(padRightEncoder(codec, offset), padRightDecoder(codec, offset)) as TCodec;\n}\n", "import {\n assertIsFixedSize,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from './codec';\nimport { combineCodec } from './combine-codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\nfunction copySourceToTargetInReverse(\n source: ReadonlyUint8Array,\n target_WILL_MUTATE: Uint8Array,\n sourceOffset: number,\n sourceLength: number,\n targetOffset: number = 0,\n) {\n while (sourceOffset < --sourceLength) {\n const leftValue = source[sourceOffset];\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceLength];\n target_WILL_MUTATE[sourceLength + targetOffset] = leftValue;\n sourceOffset++;\n }\n if (sourceOffset === sourceLength) {\n target_WILL_MUTATE[sourceOffset + targetOffset] = source[sourceOffset];\n }\n}\n\n/**\n * Reverses the bytes of a fixed-size encoder.\n *\n * Given a `FixedSizeEncoder`, this function returns a new `FixedSizeEncoder` that\n * reverses the bytes within the fixed-size byte array when encoding.\n *\n * This can be useful to modify endianness or for other byte-order transformations.\n *\n * For more details, see {@link reverseCodec}.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TSize - The fixed size of the encoded value in bytes.\n *\n * @param encoder - The fixed-size encoder to reverse.\n * @returns A new encoder that writes bytes in reverse order.\n *\n * @example\n * Encoding a `u16` value in reverse order.\n * ```ts\n * const encoder = reverseEncoder(getU16Encoder({ endian: Endian.Big }));\n * const bytes = encoder.encode(0x1234); // 0x3412 (bytes are flipped)\n * ```\n *\n * @see {@link reverseCodec}\n * @see {@link reverseDecoder}\n */\nexport function reverseEncoder(\n encoder: FixedSizeEncoder,\n): FixedSizeEncoder {\n assertIsFixedSize(encoder);\n return createEncoder({\n ...encoder,\n write: (value: TFrom, bytes, offset) => {\n const newOffset = encoder.write(value, bytes, offset);\n copySourceToTargetInReverse(\n bytes /* source */,\n bytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + encoder.fixedSize /* sourceLength */,\n );\n return newOffset;\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size decoder.\n *\n * Given a `FixedSizeDecoder`, this function returns a new `FixedSizeDecoder` that\n * reverses the bytes within the fixed-size byte array before decoding.\n *\n * This can be useful to modify endianness or for other byte-order transformations.\n *\n * For more details, see {@link reverseCodec}.\n *\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the decoded value in bytes.\n *\n * @param decoder - The fixed-size decoder to reverse.\n * @returns A new decoder that reads bytes in reverse order.\n *\n * @example\n * Decoding a reversed `u16` value.\n * ```ts\n * const decoder = reverseDecoder(getU16Decoder({ endian: Endian.Big }));\n * const value = decoder.decode(new Uint8Array([0x34, 0x12])); // 0x1234 (bytes are flipped back)\n * ```\n *\n * @see {@link reverseCodec}\n * @see {@link reverseEncoder}\n */\nexport function reverseDecoder(\n decoder: FixedSizeDecoder,\n): FixedSizeDecoder {\n assertIsFixedSize(decoder);\n return createDecoder({\n ...decoder,\n read: (bytes, offset) => {\n const reversedBytes = bytes.slice();\n copySourceToTargetInReverse(\n bytes /* source */,\n reversedBytes /* target_WILL_MUTATE */,\n offset /* sourceOffset */,\n offset + decoder.fixedSize /* sourceLength */,\n );\n return decoder.read(reversedBytes, offset);\n },\n });\n}\n\n/**\n * Reverses the bytes of a fixed-size codec.\n *\n * Given a `FixedSizeCodec`, this function returns a new `FixedSizeCodec` that\n * reverses the bytes within the fixed-size byte array during encoding and decoding.\n *\n * This can be useful to modify endianness or for other byte-order transformations.\n *\n * @typeParam TFrom - The type of the value to encode.\n * @typeParam TTo - The type of the decoded value.\n * @typeParam TSize - The fixed size of the encoded/decoded value in bytes.\n *\n * @param codec - The fixed-size codec to reverse.\n * @returns A new codec that encodes and decodes bytes in reverse order.\n *\n * @example\n * Reversing a `u16` codec.\n * ```ts\n * const codec = reverseCodec(getU16Codec({ endian: Endian.Big }));\n * const bytes = codec.encode(0x1234); // 0x3412 (bytes are flipped)\n * const value = codec.decode(bytes); // 0x1234 (bytes are flipped back)\n * ```\n *\n * @remarks\n * If you only need to reverse an encoder, use {@link reverseEncoder}.\n * If you only need to reverse a decoder, use {@link reverseDecoder}.\n *\n * ```ts\n * const bytes = reverseEncoder(getU16Encoder()).encode(0x1234);\n * const value = reverseDecoder(getU16Decoder()).decode(bytes);\n * ```\n *\n * @see {@link reverseEncoder}\n * @see {@link reverseDecoder}\n */\nexport function reverseCodec(\n codec: FixedSizeCodec,\n): FixedSizeCodec {\n return combineCodec(reverseEncoder(codec), reverseDecoder(codec));\n}\n", "import {\n Codec,\n createCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n isVariableSize,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from './codec';\nimport { ReadonlyUint8Array } from './readonly-uint8array';\n\n/**\n * Transforms an encoder by mapping its input values.\n *\n * This function takes an existing `Encoder` and returns an `Encoder`, allowing values of type `B`\n * to be converted into values of type `A` before encoding. The transformation is applied via the `unmap` function.\n *\n * This is useful for handling type conversions, applying default values, or structuring data before encoding.\n *\n * For more details, see {@link transformCodec}.\n *\n * @typeParam TOldFrom - The original type expected by the encoder.\n * @typeParam TNewFrom - The new type that will be transformed before encoding.\n *\n * @param encoder - The encoder to transform.\n * @param unmap - A function that converts values of `TNewFrom` into `TOldFrom` before encoding.\n * @returns A new encoder that accepts `TNewFrom` values and transforms them before encoding.\n *\n * @example\n * Encoding a string by counting its characters and storing the length as a `u32`.\n * ```ts\n * const encoder = transformEncoder(getU32Encoder(), (value: string) => value.length);\n * encoder.encode(\"hello\"); // 0x05000000 (stores length 5)\n * ```\n *\n * @see {@link transformCodec}\n * @see {@link transformDecoder}\n */\nexport function transformEncoder(\n encoder: FixedSizeEncoder,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeEncoder;\nexport function transformEncoder(\n encoder: VariableSizeEncoder,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeEncoder;\nexport function transformEncoder(\n encoder: Encoder,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder;\nexport function transformEncoder(\n encoder: Encoder,\n unmap: (value: TNewFrom) => TOldFrom,\n): Encoder {\n return createEncoder({\n ...(isVariableSize(encoder)\n ? { ...encoder, getSizeFromValue: (value: TNewFrom) => encoder.getSizeFromValue(unmap(value)) }\n : encoder),\n write: (value: TNewFrom, bytes, offset) => encoder.write(unmap(value), bytes, offset),\n });\n}\n\n/**\n * Transforms a decoder by mapping its output values.\n *\n * This function takes an existing `Decoder` and returns a `Decoder`, allowing values of type `A`\n * to be converted into values of type `B` after decoding. The transformation is applied via the `map` function.\n *\n * This is useful for post-processing, type conversions, or enriching decoded data.\n *\n * For more details, see {@link transformCodec}.\n *\n * @typeParam TOldTo - The original type returned by the decoder.\n * @typeParam TNewTo - The new type that will be transformed after decoding.\n *\n * @param decoder - The decoder to transform.\n * @param map - A function that converts values of `TOldTo` into `TNewTo` after decoding.\n * @returns A new decoder that decodes into `TNewTo`.\n *\n * @example\n * Decoding a stored `u32` length into a string of `'x'` characters.\n * ```ts\n * const decoder = transformDecoder(getU32Decoder(), (length) => 'x'.repeat(length));\n * decoder.decode(new Uint8Array([0x05, 0x00, 0x00, 0x00])); // \"xxxxx\"\n * ```\n *\n * @see {@link transformCodec}\n * @see {@link transformEncoder}\n */\nexport function transformDecoder(\n decoder: FixedSizeDecoder,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeDecoder;\nexport function transformDecoder(\n decoder: VariableSizeDecoder,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeDecoder;\nexport function transformDecoder(\n decoder: Decoder,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder;\nexport function transformDecoder(\n decoder: Decoder,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Decoder {\n return createDecoder({\n ...decoder,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const [value, newOffset] = decoder.read(bytes, offset);\n return [map(value, bytes, offset), newOffset];\n },\n });\n}\n\n/**\n * Transforms a codec by mapping its input and output values.\n *\n * This function takes an existing `Codec` and returns a `Codec`, allowing:\n * - Values of type `C` to be transformed into `A` before encoding.\n * - Values of type `B` to be transformed into `D` after decoding.\n *\n * This is useful for adapting codecs to work with different representations, handling default values, or\n * converting between primitive and structured types.\n *\n * @typeParam TOldFrom - The original type expected by the codec.\n * @typeParam TNewFrom - The new type that will be transformed before encoding.\n * @typeParam TOldTo - The original type returned by the codec.\n * @typeParam TNewTo - The new type that will be transformed after decoding.\n *\n * @param codec - The codec to transform.\n * @param unmap - A function that converts values of `TNewFrom` into `TOldFrom` before encoding.\n * @param map - A function that converts values of `TOldTo` into `TNewTo` after decoding (optional).\n * @returns A new codec that encodes `TNewFrom` and decodes into `TNewTo`.\n *\n * @example\n * Mapping a `u32` codec to encode string lengths and decode them into `'x'` characters.\n * ```ts\n * const codec = transformCodec(\n * getU32Codec(),\n * (value: string) => value.length, // Encode string length\n * (length) => 'x'.repeat(length) // Decode length into a string of 'x's\n * );\n *\n * const bytes = codec.encode(\"hello\"); // 0x05000000 (stores length 5)\n * const value = codec.decode(bytes); // \"xxxxx\"\n * ```\n *\n * @remarks\n * If only input transformation is needed, use {@link transformEncoder}.\n * If only output transformation is needed, use {@link transformDecoder}.\n *\n * ```ts\n * const bytes = transformEncoder(getU32Encoder(), (value: string) => value.length).encode(\"hello\");\n * const value = transformDecoder(getU32Decoder(), (length) => 'x'.repeat(length)).decode(bytes);\n * ```\n *\n * @see {@link transformEncoder}\n * @see {@link transformDecoder}\n */\nexport function transformCodec(\n codec: FixedSizeCodec,\n unmap: (value: TNewFrom) => TOldFrom,\n): FixedSizeCodec;\nexport function transformCodec(\n codec: VariableSizeCodec,\n unmap: (value: TNewFrom) => TOldFrom,\n): VariableSizeCodec;\nexport function transformCodec(\n codec: Codec,\n unmap: (value: TNewFrom) => TOldFrom,\n): Codec;\nexport function transformCodec<\n TOldFrom,\n TNewFrom,\n TOldTo extends TOldFrom,\n TNewTo extends TNewFrom,\n TSize extends number,\n>(\n codec: FixedSizeCodec,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): FixedSizeCodec;\nexport function transformCodec(\n codec: VariableSizeCodec,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): VariableSizeCodec;\nexport function transformCodec(\n codec: Codec,\n unmap: (value: TNewFrom) => TOldFrom,\n map: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec;\nexport function transformCodec(\n codec: Codec,\n unmap: (value: TNewFrom) => TOldFrom,\n map?: (value: TOldTo, bytes: ReadonlyUint8Array | Uint8Array, offset: number) => TNewTo,\n): Codec {\n return createCodec({\n ...transformEncoder(codec, unmap),\n read: map ? transformDecoder(codec, map).read : (codec.read as unknown as Decoder['read']),\n });\n}\n", "import { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given string contains only characters from the specified alphabet.\n *\n * This function validates whether a string consists exclusively of characters\n * from the provided `alphabet`. If the validation fails, it throws an error\n * indicating the invalid base string.\n *\n * @param alphabet - The allowed set of characters for the base encoding.\n * @param testValue - The string to validate against the given alphabet.\n * @param givenValue - The original string provided by the user (defaults to `testValue`).\n *\n * @throws {SolanaError} If `testValue` contains characters not present in `alphabet`.\n *\n * @example\n * Validating a base-8 encoded string.\n * ```ts\n * assertValidBaseString('01234567', '123047'); // Passes\n * assertValidBaseString('01234567', '128'); // Throws error\n * ```\n */\nexport function assertValidBaseString(alphabet: string, testValue: string, givenValue = testValue) {\n if (!testValue.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: alphabet.length,\n value: givenValue,\n });\n }\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Returns an encoder for base-X encoded strings.\n *\n * This encoder serializes strings using a custom alphabet, treating the length of the alphabet as the base.\n * The encoding process involves converting the input string to a numeric value in base-X, then\n * encoding that value into bytes while preserving leading zeroes.\n *\n * For more details, see {@link getBaseXCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeEncoder` for encoding base-X strings.\n *\n * @example\n * Encoding a base-X string using a custom alphabet.\n * ```ts\n * const encoder = getBaseXEncoder('0123456789abcdef');\n * const bytes = encoder.encode('deadface'); // 0xdeadface\n * ```\n *\n * @see {@link getBaseXCodec}\n */\nexport const getBaseXEncoder = (alphabet: string): VariableSizeEncoder => {\n return createEncoder({\n getSizeFromValue: (value: string): number => {\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) return value.length;\n\n const base10Number = getBigIntFromBaseX(tailChars, alphabet);\n return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);\n },\n write(value: string, bytes, offset) {\n // Check if the value is valid.\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n\n // Handle leading zeroes.\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) {\n bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);\n return offset + leadingZeroes.length;\n }\n\n // From baseX to base10.\n let base10Number = getBigIntFromBaseX(tailChars, alphabet);\n\n // From base10 to bytes.\n const tailBytes: number[] = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n\n const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/**\n * Returns a decoder for base-X encoded strings.\n *\n * This decoder deserializes base-X encoded strings from a byte array using a custom alphabet.\n * The decoding process converts the byte array into a numeric value in base-10, then\n * maps that value back to characters in the specified base-X alphabet.\n *\n * For more details, see {@link getBaseXCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeDecoder` for decoding base-X strings.\n *\n * @example\n * Decoding a base-X string using a custom alphabet.\n * ```ts\n * const decoder = getBaseXDecoder('0123456789abcdef');\n * const value = decoder.decode(new Uint8Array([0xde, 0xad, 0xfa, 0xce])); // \"deadface\"\n * ```\n *\n * @see {@link getBaseXCodec}\n */\nexport const getBaseXDecoder = (alphabet: string): VariableSizeDecoder => {\n return createDecoder({\n read(rawBytes, offset): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n let trailIndex = bytes.findIndex(n => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length];\n\n // From bytes to base10.\n const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = getBaseXFromBigInt(base10Number, alphabet);\n\n return [leadingZeroes + tailChars, rawBytes.length];\n },\n });\n};\n\n/**\n * Returns a codec for encoding and decoding base-X strings.\n *\n * This codec serializes strings using a custom alphabet, treating the length of the alphabet as the base.\n * The encoding process converts the input string into a numeric value in base-X, which is then encoded as bytes.\n * The decoding process reverses this transformation to reconstruct the original string.\n *\n * This codec supports leading zeroes by treating the first character of the alphabet as the zero character.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeCodec` for encoding and decoding base-X strings.\n *\n * @example\n * Encoding and decoding a base-X string using a custom alphabet.\n * ```ts\n * const codec = getBaseXCodec('0123456789abcdef');\n * const bytes = codec.encode('deadface'); // 0xdeadface\n * const value = codec.decode(bytes); // \"deadface\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-X codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBaseXCodec('0123456789abcdef'), 8);\n * ```\n *\n * If you need a size-prefixed base-X codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBaseXCodec('0123456789abcdef'), getU32Codec());\n * ```\n *\n * Separate {@link getBaseXEncoder} and {@link getBaseXDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBaseXEncoder('0123456789abcdef').encode('deadface');\n * const value = getBaseXDecoder('0123456789abcdef').decode(bytes);\n * ```\n *\n * @see {@link getBaseXEncoder}\n * @see {@link getBaseXDecoder}\n */\nexport const getBaseXCodec = (alphabet: string): VariableSizeCodec =>\n combineCodec(getBaseXEncoder(alphabet), getBaseXDecoder(alphabet));\n\nfunction partitionLeadingZeroes(\n value: string,\n zeroCharacter: string,\n): [leadingZeros: string, tailChars: string | undefined] {\n const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`));\n return [leadingZeros, tailChars];\n}\n\nfunction getBigIntFromBaseX(value: string, alphabet: string): bigint {\n const base = BigInt(alphabet.length);\n let sum = 0n;\n for (const char of value) {\n sum *= base;\n sum += BigInt(alphabet.indexOf(char));\n }\n return sum;\n}\n\nfunction getBaseXFromBigInt(value: bigint, alphabet: string): string {\n const base = BigInt(alphabet.length);\n const tailChars = [];\n while (value > 0n) {\n tailChars.unshift(alphabet[Number(value % base)]);\n value /= base;\n }\n return tailChars.join('');\n}\n", "import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '0123456789';\n\n/**\n * Returns an encoder for base-10 strings.\n *\n * This encoder serializes strings using a base-10 encoding scheme.\n * The output consists of bytes representing the numerical values of the input string.\n *\n * For more details, see {@link getBase10Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-10 strings.\n *\n * @example\n * Encoding a base-10 string.\n * ```ts\n * const encoder = getBase10Encoder();\n * const bytes = encoder.encode('1024'); // 0x0400\n * ```\n *\n * @see {@link getBase10Codec}\n */\nexport const getBase10Encoder = () => getBaseXEncoder(alphabet);\n\n/**\n * Returns a decoder for base-10 strings.\n *\n * This decoder deserializes base-10 encoded strings from a byte array.\n *\n * For more details, see {@link getBase10Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-10 strings.\n *\n * @example\n * Decoding a base-10 string.\n * ```ts\n * const decoder = getBase10Decoder();\n * const value = decoder.decode(new Uint8Array([0x04, 0x00])); // \"1024\"\n * ```\n *\n * @see {@link getBase10Codec}\n */\nexport const getBase10Decoder = () => getBaseXDecoder(alphabet);\n\n/**\n * Returns a codec for encoding and decoding base-10 strings.\n *\n * This codec serializes strings using a base-10 encoding scheme.\n * The output consists of bytes representing the numerical values of the input string.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-10 strings.\n *\n * @example\n * Encoding and decoding a base-10 string.\n * ```ts\n * const codec = getBase10Codec();\n * const bytes = codec.encode('1024'); // 0x0400\n * const value = codec.decode(bytes); // \"1024\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-10 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase10Codec(), 5);\n * ```\n *\n * If you need a size-prefixed base-10 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase10Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase10Encoder} and {@link getBase10Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase10Encoder().encode('1024');\n * const value = getBase10Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase10Encoder}\n * @see {@link getBase10Decoder}\n */\nexport const getBase10Codec = () => getBaseXCodec(alphabet);\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nconst enum HexC {\n ZERO = 48, // 0\n NINE = 57, // 9\n A_UP = 65, // A\n F_UP = 70, // F\n A_LO = 97, // a\n F_LO = 102, // f\n}\n\nconst INVALID_STRING_ERROR_BASE_CONFIG = {\n alphabet: '0123456789abcdef',\n base: 16,\n} as const;\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexC.ZERO && char <= HexC.NINE) return char - HexC.ZERO;\n if (char >= HexC.A_UP && char <= HexC.F_UP) return char - (HexC.A_UP - 10);\n if (char >= HexC.A_LO && char <= HexC.F_LO) return char - (HexC.A_LO - 10);\n}\n\n/**\n * Returns an encoder for base-16 (hexadecimal) strings.\n *\n * This encoder serializes strings using a base-16 encoding scheme.\n * The output consists of bytes representing the hexadecimal values of the input string.\n *\n * For more details, see {@link getBase16Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-16 strings.\n *\n * @example\n * Encoding a base-16 string.\n * ```ts\n * const encoder = getBase16Encoder();\n * const bytes = encoder.encode('deadface'); // 0xdeadface\n * ```\n *\n * @see {@link getBase16Codec}\n */\nexport const getBase16Encoder = (): VariableSizeEncoder =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.ceil(value.length / 2),\n write(value: string, bytes, offset) {\n const len = value.length;\n const al = len / 2;\n if (len === 1) {\n const c = value.charCodeAt(0);\n const n = charCodeToBase16(c);\n if (n === undefined) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n bytes.set([n], offset);\n return 1 + offset;\n }\n const hexBytes = new Uint8Array(al);\n for (let i = 0, j = 0; i < al; i++) {\n const c1 = value.charCodeAt(j++);\n const c2 = value.charCodeAt(j++);\n\n const n1 = charCodeToBase16(c1);\n const n2 = charCodeToBase16(c2);\n if (n1 === undefined || (n2 === undefined && !Number.isNaN(c2))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n hexBytes[i] = !Number.isNaN(c2) ? (n1 << 4) | (n2 ?? 0) : n1;\n }\n\n bytes.set(hexBytes, offset);\n return hexBytes.length + offset;\n },\n });\n\n/**\n * Returns a decoder for base-16 (hexadecimal) strings.\n *\n * This decoder deserializes base-16 encoded strings from a byte array.\n *\n * For more details, see {@link getBase16Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-16 strings.\n *\n * @example\n * Decoding a base-16 string.\n * ```ts\n * const decoder = getBase16Decoder();\n * const value = decoder.decode(new Uint8Array([0xde, 0xad, 0xfa, 0xce])); // \"deadface\"\n * ```\n *\n * @see {@link getBase16Codec}\n */\nexport const getBase16Decoder = (): VariableSizeDecoder =>\n createDecoder({\n read(bytes, offset) {\n const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n return [value, bytes.length];\n },\n });\n\n/**\n * Returns a codec for encoding and decoding base-16 (hexadecimal) strings.\n *\n * This codec serializes strings using a base-16 encoding scheme.\n * The output consists of bytes representing the hexadecimal values of the input string.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-16 strings.\n *\n * @example\n * Encoding and decoding a base-16 string.\n * ```ts\n * const codec = getBase16Codec();\n * const bytes = codec.encode('deadface'); // 0xdeadface\n * const value = codec.decode(bytes); // \"deadface\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-16 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase16Codec(), 8);\n * ```\n *\n * If you need a size-prefixed base-16 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase16Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase16Encoder} and {@link getBase16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase16Encoder().encode('deadface');\n * const value = getBase16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase16Encoder}\n * @see {@link getBase16Decoder}\n */\nexport const getBase16Codec = (): VariableSizeCodec => combineCodec(getBase16Encoder(), getBase16Decoder());\n", "import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Returns an encoder for base-58 strings.\n *\n * This encoder serializes strings using a base-58 encoding scheme,\n * commonly used in cryptocurrency addresses and other compact representations.\n *\n * For more details, see {@link getBase58Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-58 strings.\n *\n * @example\n * Encoding a base-58 string.\n * ```ts\n * const encoder = getBase58Encoder();\n * const bytes = encoder.encode('heLLo'); // 0x1b6a3070\n * ```\n *\n * @see {@link getBase58Codec}\n */\nexport const getBase58Encoder = () => getBaseXEncoder(alphabet);\n\n/**\n * Returns a decoder for base-58 strings.\n *\n * This decoder deserializes base-58 encoded strings from a byte array.\n *\n * For more details, see {@link getBase58Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-58 strings.\n *\n * @example\n * Decoding a base-58 string.\n * ```ts\n * const decoder = getBase58Decoder();\n * const value = decoder.decode(new Uint8Array([0x1b, 0x6a, 0x30, 0x70])); // \"heLLo\"\n * ```\n *\n * @see {@link getBase58Codec}\n */\nexport const getBase58Decoder = () => getBaseXDecoder(alphabet);\n\n/**\n * Returns a codec for encoding and decoding base-58 strings.\n *\n * This codec serializes strings using a base-58 encoding scheme,\n * commonly used in cryptocurrency addresses and other compact representations.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-58 strings.\n *\n * @example\n * Encoding and decoding a base-58 string.\n * ```ts\n * const codec = getBase58Codec();\n * const bytes = codec.encode('heLLo'); // 0x1b6a3070\n * const value = codec.decode(bytes); // \"heLLo\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-58 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase58Codec(), 8);\n * ```\n *\n * If you need a size-prefixed base-58 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase58Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase58Encoder} and {@link getBase58Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase58Encoder().encode('heLLo');\n * const value = getBase58Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase58Encoder}\n * @see {@link getBase58Decoder}\n */\nexport const getBase58Codec = () => getBaseXCodec(alphabet);\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Returns an encoder for base-X encoded strings using bit re-slicing.\n *\n * This encoder serializes strings by dividing the input into custom-sized bit chunks,\n * mapping them to an alphabet, and encoding the result into a byte array.\n * This approach is commonly used for encoding schemes where the alphabet's length is a power of 2,\n * such as base-16 or base-64.\n *\n * For more details, see {@link getBaseXResliceCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @param bits - The number of bits per encoded chunk, typically `log2(alphabet.length)`.\n * @returns A `VariableSizeEncoder` for encoding base-X strings using bit re-slicing.\n *\n * @example\n * Encoding a base-X string using bit re-slicing.\n * ```ts\n * const encoder = getBaseXResliceEncoder('elho', 2);\n * const bytes = encoder.encode('hellolol'); // 0x4aee\n * ```\n *\n * @see {@link getBaseXResliceCodec}\n */\nexport const getBaseXResliceEncoder = (alphabet: string, bits: number): VariableSizeEncoder =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.floor((value.length * bits) / 8),\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n const charIndices = [...value].map(c => alphabet.indexOf(c));\n const reslicedBytes = reslice(charIndices, bits, 8, false);\n bytes.set(reslicedBytes, offset);\n return reslicedBytes.length + offset;\n },\n });\n\n/**\n * Returns a decoder for base-X encoded strings using bit re-slicing.\n *\n * This decoder deserializes base-X encoded strings by re-slicing the bits of a byte array into\n * custom-sized chunks and mapping them to a specified alphabet.\n * This is typically used for encoding schemes where the alphabet's length is a power of 2,\n * such as base-16 or base-64.\n *\n * For more details, see {@link getBaseXResliceCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @param bits - The number of bits per encoded chunk, typically `log2(alphabet.length)`.\n * @returns A `VariableSizeDecoder` for decoding base-X strings using bit re-slicing.\n *\n * @example\n * Decoding a base-X string using bit re-slicing.\n * ```ts\n * const decoder = getBaseXResliceDecoder('elho', 2);\n * const value = decoder.decode(new Uint8Array([0x4a, 0xee])); // \"hellolol\"\n * ```\n *\n * @see {@link getBaseXResliceCodec}\n */\nexport const getBaseXResliceDecoder = (alphabet: string, bits: number): VariableSizeDecoder =>\n createDecoder({\n read(rawBytes, offset = 0): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', rawBytes.length];\n const charIndices = reslice([...bytes], 8, bits, true);\n return [charIndices.map(i => alphabet[i]).join(''), rawBytes.length];\n },\n });\n\n/**\n * Returns a codec for encoding and decoding base-X strings using bit re-slicing.\n *\n * This codec serializes strings by dividing the input into custom-sized bit chunks,\n * mapping them to a given alphabet, and encoding the result into bytes.\n * It is particularly suited for encoding schemes where the alphabet's length is a power of 2,\n * such as base-16 or base-64.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @param bits - The number of bits per encoded chunk, typically `log2(alphabet.length)`.\n * @returns A `VariableSizeCodec` for encoding and decoding base-X strings using bit re-slicing.\n *\n * @example\n * Encoding and decoding a base-X string using bit re-slicing.\n * ```ts\n * const codec = getBaseXResliceCodec('elho', 2);\n * const bytes = codec.encode('hellolol'); // 0x4aee\n * const value = codec.decode(bytes); // \"hellolol\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-X codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBaseXResliceCodec('elho', 2), 8);\n * ```\n *\n * If you need a size-prefixed base-X codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBaseXResliceCodec('elho', 2), getU32Codec());\n * ```\n *\n * Separate {@link getBaseXResliceEncoder} and {@link getBaseXResliceDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBaseXResliceEncoder('elho', 2).encode('hellolol');\n * const value = getBaseXResliceDecoder('elho', 2).decode(bytes);\n * ```\n *\n * @see {@link getBaseXResliceEncoder}\n * @see {@link getBaseXResliceDecoder}\n */\nexport const getBaseXResliceCodec = (alphabet: string, bits: number): VariableSizeCodec =>\n combineCodec(getBaseXResliceEncoder(alphabet, bits), getBaseXResliceDecoder(alphabet, bits));\n\n/** Helper function to reslice the bits inside bytes. */\nfunction reslice(input: number[], inputBits: number, outputBits: number, useRemainder: boolean): number[] {\n const output = [];\n let accumulator = 0;\n let bitsInAccumulator = 0;\n const mask = (1 << outputBits) - 1;\n for (const value of input) {\n accumulator = (accumulator << inputBits) | value;\n bitsInAccumulator += inputBits;\n while (bitsInAccumulator >= outputBits) {\n bitsInAccumulator -= outputBits;\n output.push((accumulator >> bitsInAccumulator) & mask);\n }\n }\n if (useRemainder && bitsInAccumulator > 0) {\n output.push((accumulator << (outputBits - bitsInAccumulator)) & mask);\n }\n return output;\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nimport { assertValidBaseString } from './assertions';\nimport { getBaseXResliceDecoder, getBaseXResliceEncoder } from './baseX-reslice';\n\nconst alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n/**\n * Returns an encoder for base-64 strings.\n *\n * This encoder serializes strings using a base-64 encoding scheme,\n * commonly used for data encoding in URLs, cryptographic keys, and binary-to-text encoding.\n *\n * For more details, see {@link getBase64Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-64 strings.\n *\n * @example\n * Encoding a base-64 string.\n * ```ts\n * const encoder = getBase64Encoder();\n * const bytes = encoder.encode('hello+world'); // 0x85e965a3ec28ae57\n * ```\n *\n * @see {@link getBase64Codec}\n */\nexport const getBase64Encoder = (): VariableSizeEncoder => {\n if (__BROWSER__) {\n return createEncoder({\n getSizeFromValue: (value: string) => {\n try {\n return (atob as Window['atob'])(value).length;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n write(value: string, bytes, offset) {\n try {\n const bytesToAdd = (atob as Window['atob'])(value)\n .split('')\n .map(c => c.charCodeAt(0));\n bytes.set(bytesToAdd, offset);\n return bytesToAdd.length + offset;\n } catch {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: 64,\n value,\n });\n }\n },\n });\n }\n\n if (__NODEJS__) {\n return createEncoder({\n getSizeFromValue: (value: string) => Buffer.from(value, 'base64').length,\n write(value: string, bytes, offset) {\n assertValidBaseString(alphabet, value.replace(/=/g, ''));\n const buffer = Buffer.from(value, 'base64');\n bytes.set(buffer, offset);\n return buffer.length + offset;\n },\n });\n }\n\n return transformEncoder(getBaseXResliceEncoder(alphabet, 6), (value: string): string => value.replace(/=/g, ''));\n};\n\n/**\n * Returns a decoder for base-64 strings.\n *\n * This decoder deserializes base-64 encoded strings from a byte array.\n *\n * For more details, see {@link getBase64Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-64 strings.\n *\n * @example\n * Decoding a base-64 string.\n * ```ts\n * const decoder = getBase64Decoder();\n * const value = decoder.decode(new Uint8Array([0x85, 0xe9, 0x65, 0xa3, 0xec, 0x28, 0xae, 0x57])); // \"hello+world\"\n * ```\n *\n * @see {@link getBase64Codec}\n */\nexport const getBase64Decoder = (): VariableSizeDecoder => {\n if (__BROWSER__) {\n return createDecoder({\n read(bytes, offset = 0) {\n const slice = bytes.slice(offset);\n const value = (btoa as Window['btoa'])(String.fromCharCode(...slice));\n return [value, bytes.length];\n },\n });\n }\n\n if (__NODEJS__) {\n return createDecoder({\n read: (bytes, offset = 0) => [Buffer.from(bytes, offset).toString('base64'), bytes.length],\n });\n }\n\n return transformDecoder(getBaseXResliceDecoder(alphabet, 6), (value: string): string =>\n value.padEnd(Math.ceil(value.length / 4) * 4, '='),\n );\n};\n\n/**\n * Returns a codec for encoding and decoding base-64 strings.\n *\n * This codec serializes strings using a base-64 encoding scheme,\n * commonly used for data encoding in URLs, cryptographic keys, and binary-to-text encoding.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-64 strings.\n *\n * @example\n * Encoding and decoding a base-64 string.\n * ```ts\n * const codec = getBase64Codec();\n * const bytes = codec.encode('hello+world'); // 0x85e965a3ec28ae57\n * const value = codec.decode(bytes); // \"hello+world\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-64 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase64Codec(), 8);\n * ```\n *\n * If you need a size-prefixed base-64 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase64Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase64Encoder} and {@link getBase64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase64Encoder().encode('hello+world');\n * const value = getBase64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase64Encoder}\n * @see {@link getBase64Decoder}\n */\nexport const getBase64Codec = (): VariableSizeCodec => combineCodec(getBase64Encoder(), getBase64Decoder());\n", "/**\n * Removes all null characters (`\\u0000`) from a string.\n *\n * This function cleans a string by stripping out any null characters,\n * which are often used as padding in fixed-size string encodings.\n *\n * @param value - The string to process.\n * @returns The input string with all null characters removed.\n *\n * @example\n * Removing null characters from a string.\n * ```ts\n * removeNullCharacters('hello\\u0000\\u0000'); // \"hello\"\n * ```\n */\nexport const removeNullCharacters = (value: string) =>\n // eslint-disable-next-line no-control-regex\n value.replace(/\\u0000/g, '');\n\n/**\n * Pads a string with null characters (`\\u0000`) at the end to reach a fixed length.\n *\n * If the input string is shorter than the specified length, it is padded with null characters\n * until it reaches the desired size. If it is already long enough, it remains unchanged.\n *\n * @param value - The string to pad.\n * @param chars - The total length of the resulting string, including padding.\n * @returns The input string padded with null characters up to the specified length.\n *\n * @example\n * Padding a string with null characters.\n * ```ts\n * padNullCharacters('hello', 8); // \"hello\\u0000\\u0000\\u0000\"\n * ```\n */\nexport const padNullCharacters = (value: string, chars: number) => value.padEnd(chars, '\\u0000');\n", "export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { TextDecoder, TextEncoder } from '@solana/text-encoding-impl';\n\nimport { removeNullCharacters } from './null-characters';\n\n/**\n * Returns an encoder for UTF-8 strings.\n *\n * This encoder serializes strings using UTF-8 encoding.\n * The encoded output contains as many bytes as needed to represent the string.\n *\n * For more details, see {@link getUtf8Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding UTF-8 strings.\n *\n * @example\n * Encoding a UTF-8 string.\n * ```ts\n * const encoder = getUtf8Encoder();\n * const bytes = encoder.encode('hello'); // 0x68656c6c6f\n * ```\n *\n * @see {@link getUtf8Codec}\n */\nexport const getUtf8Encoder = (): VariableSizeEncoder => {\n let textEncoder: TextEncoder;\n return createEncoder({\n getSizeFromValue: value => (textEncoder ||= new TextEncoder()).encode(value).length,\n write: (value: string, bytes, offset) => {\n const bytesToAdd = (textEncoder ||= new TextEncoder()).encode(value);\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/**\n * Returns a decoder for UTF-8 strings.\n *\n * This decoder deserializes UTF-8 encoded strings from a byte array.\n * It reads all available bytes starting from the given offset.\n *\n * For more details, see {@link getUtf8Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding UTF-8 strings.\n *\n * @example\n * Decoding a UTF-8 string.\n * ```ts\n * const decoder = getUtf8Decoder();\n * const value = decoder.decode(new Uint8Array([0x68, 0x65, 0x6c, 0x6c, 0x6f])); // \"hello\"\n * ```\n *\n * @see {@link getUtf8Codec}\n */\nexport const getUtf8Decoder = (): VariableSizeDecoder => {\n let textDecoder: TextDecoder;\n return createDecoder({\n read(bytes, offset) {\n const value = (textDecoder ||= new TextDecoder()).decode(bytes.slice(offset));\n return [removeNullCharacters(value), bytes.length];\n },\n });\n};\n\n/**\n * Returns a codec for encoding and decoding UTF-8 strings.\n *\n * This codec serializes strings using UTF-8 encoding.\n * The encoded output contains as many bytes as needed to represent the string.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding UTF-8 strings.\n *\n * @example\n * Encoding and decoding a UTF-8 string.\n * ```ts\n * const codec = getUtf8Codec();\n * const bytes = codec.encode('hello'); // 0x68656c6c6f\n * const value = codec.decode(bytes); // \"hello\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size UTF-8 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getUtf8Codec(), 5);\n * ```\n *\n * If you need a size-prefixed UTF-8 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getUtf8Encoder} and {@link getUtf8Decoder} functions are available.\n *\n * ```ts\n * const bytes = getUtf8Encoder().encode('hello');\n * const value = getUtf8Decoder().decode(bytes);\n * ```\n *\n * @see {@link getUtf8Encoder}\n * @see {@link getUtf8Decoder}\n */\nexport const getUtf8Codec = (): VariableSizeCodec => combineCodec(getUtf8Encoder(), getUtf8Decoder());\n", "import type { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport type { Lamports } from '@solana/rpc-types';\n\n/**\n * The number of bytes required to store the {@link BaseAccount} information without its data.\n *\n * @example\n * ```ts\n * const myTotalAccountSize = myAccountDataSize + BASE_ACCOUNT_SIZE;\n * ```\n */\nexport const BASE_ACCOUNT_SIZE = 128;\n\n/**\n * Defines the attributes common to all Solana accounts. Namely, it contains everything stored\n * on-chain except the account data itself.\n *\n * @interface\n *\n * @example\n * ```ts\n * const BaseAccount: BaseAccount = {\n * executable: false,\n * lamports: lamports(1_000_000_000n),\n * programAddress: address('1111..1111'),\n * space: 42n,\n * };\n * ```\n */\nexport type BaseAccount = {\n readonly executable: boolean;\n readonly lamports: Lamports;\n readonly programAddress: Address;\n readonly space: bigint;\n};\n\n/**\n * Contains all the information relevant to a Solana account. It includes the account's address and\n * data, as well as the properties of {@link BaseAccount}.\n *\n * @interface\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The nature of this account's data. It can be represented as either a\n * `Uint8Array` – meaning the account is encoded – or a custom data type – meaning\n * the account is decoded.\n *\n * @example\n * ```ts\n * // Encoded\n * const myEncodedAccount: Account = {\n * address: address('1234..5678'),\n * data: new Uint8Array([1, 2, 3]),\n * executable: false,\n * lamports: lamports(1_000_000_000n),\n * programAddress: address('1111..1111'),\n * space: 42n,\n * };\n *\n * // Decoded\n * type MyAccountData = { name: string; age: number };\n * const myDecodedAccount: Account = {\n * address: address('1234..5678'),\n * data: { name: 'Alice', age: 30 },\n * executable: false,\n * lamports: lamports(1_000_000_000n),\n * programAddress: address('1111..1111'),\n * space: 42n,\n * };\n * ```\n */\nexport type Account = BaseAccount & {\n readonly address: Address;\n readonly data: TData;\n};\n\n/**\n * Represents an encoded account and is equivalent to an {@link Account} with `Uint8Array` account\n * data.\n *\n * @interface\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n *\n * @example\n * ```ts\n * {\n * address: address('1234..5678'),\n * data: new Uint8Array([1, 2, 3]),\n * executable: false,\n * lamports: lamports(1_000_000_000n),\n * programAddress: address('1111..1111'),\n * space: 42n,\n * } satisfies EncodedAccount<'1234..5678'>;\n * ```\n */\nexport type EncodedAccount = Account;\n", "import type { Decoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED,\n SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT,\n SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT,\n SolanaError,\n} from '@solana/errors';\n\nimport type { Account, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\n\n/**\n * Transforms an {@link EncodedAccount} into an {@link Account} (or a {@link MaybeEncodedAccount}\n * into a {@link MaybeAccount}) by decoding the account data using the provided {@link Decoder}\n * instance.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The type of this account's data.\n *\n * @example\n * ```ts\n * type MyAccountData = { name: string; age: number };\n *\n * const myAccount: EncodedAccount<'1234..5678'>;\n * const myDecoder: Decoder = getStructDecoder([\n * ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n * ['age', getU32Decoder()],\n * ]);\n *\n * const myDecodedAccount = decodeAccount(myAccount, myDecoder);\n * myDecodedAccount satisfies Account;\n * ```\n */\nexport function decodeAccount(\n encodedAccount: EncodedAccount,\n decoder: Decoder,\n): Account;\nexport function decodeAccount(\n encodedAccount: MaybeEncodedAccount,\n decoder: Decoder,\n): MaybeAccount;\nexport function decodeAccount(\n encodedAccount: EncodedAccount | MaybeEncodedAccount,\n decoder: Decoder,\n): Account | MaybeAccount {\n try {\n if ('exists' in encodedAccount && !encodedAccount.exists) {\n return encodedAccount;\n }\n return Object.freeze({ ...encodedAccount, data: decoder.decode(encodedAccount.data) });\n } catch {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT, {\n address: encodedAccount.address,\n });\n }\n}\n\nfunction accountExists(account: Account | MaybeAccount): account is Account {\n return !('exists' in account) || ('exists' in account && account.exists);\n}\n\n/**\n * Asserts that an account stores decoded data, ie. not a `Uint8Array`.\n *\n * Note that it does not check the shape of the data matches the decoded type, only that it is not a\n * `Uint8Array`.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The type of this account's data.\n *\n * @example\n * ```ts\n * type MyAccountData = { name: string; age: number };\n *\n * const myAccount: Account;\n * assertAccountDecoded(myAccount);\n *\n * // now the account data can be used as MyAccountData\n * account.data satisfies MyAccountData;\n * ```\n *\n * This is particularly useful for narrowing the result of fetching a JSON parsed account.\n *\n * ```ts\n * const account: MaybeAccount = await fetchJsonParsedAccount(\n * rpc,\n * '1234..5678' as Address,\n * );\n *\n * assertAccountDecoded(account);\n * // now we have a MaybeAccount\n * account satisfies MaybeAccount;\n * ```\n */\nexport function assertAccountDecoded(\n account: Account,\n): asserts account is Account;\nexport function assertAccountDecoded(\n account: MaybeAccount,\n): asserts account is MaybeAccount;\nexport function assertAccountDecoded(\n account: Account | MaybeAccount,\n): asserts account is Account | MaybeAccount {\n if (accountExists(account) && account.data instanceof Uint8Array) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT, {\n address: account.address,\n });\n }\n}\n\n/**\n * Asserts that all input accounts store decoded data, ie. not a `Uint8Array`.\n *\n * As with {@link assertAccountDecoded} it does not check the shape of the data matches the decoded\n * type, only that it is not a `Uint8Array`.\n *\n * @example\n * ```ts\n * type MyAccountData = { name: string; age: number };\n *\n * const myAccounts: Account[];\n * assertAccountsDecoded(myAccounts);\n *\n * // now the account data can be used as MyAccountData\n * for (const a of account) {\n * account.data satisfies MyAccountData;\n * }\n * ```\n */\nexport function assertAccountsDecoded(\n accounts: Account[],\n): asserts accounts is Account[];\nexport function assertAccountsDecoded(\n accounts: MaybeAccount[],\n): asserts accounts is MaybeAccount[];\nexport function assertAccountsDecoded(\n accounts: (Account | MaybeAccount)[],\n): asserts accounts is (Account | MaybeAccount)[] {\n const encoded = accounts.filter(a => accountExists(a) && a.data instanceof Uint8Array);\n if (encoded.length > 0) {\n const encodedAddresses = encoded.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED, {\n addresses: encodedAddresses,\n });\n }\n}\n", "import type { Address } from '@solana/addresses';\nimport { getBase58Encoder, getBase64Encoder } from '@solana/codecs-strings';\nimport type {\n AccountInfoBase,\n AccountInfoWithBase58Bytes,\n AccountInfoWithBase58EncodedData,\n AccountInfoWithBase64EncodedData,\n} from '@solana/rpc-types';\n\nimport type { Account, BaseAccount, EncodedAccount } from './account';\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport type { JsonParsedDataResponse } from './rpc-api';\n\ntype Base64EncodedRpcAccount = AccountInfoBase & AccountInfoWithBase64EncodedData;\n\n/**\n * Parses a base64-encoded account provided by the RPC client into an {@link EncodedAccount} type or\n * a {@link MaybeEncodedAccount} type if the raw data can be set to `null`.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n *\n * @example\n * ```ts\n * const myAddress = address('1234..5678');\n * const myRpcAccount = await rpc.getAccountInfo(myAddress, { encoding: 'base64' }).send();\n * const myAccount: MaybeEncodedAccount<'1234..5678'> = parseBase64RpcAccount(myRpcAccount);\n * ```\n */\nexport function parseBase64RpcAccount(\n address: Address,\n rpcAccount: Base64EncodedRpcAccount,\n): EncodedAccount;\nexport function parseBase64RpcAccount(\n address: Address,\n rpcAccount: Base64EncodedRpcAccount | null,\n): MaybeEncodedAccount;\nexport function parseBase64RpcAccount(\n address: Address,\n rpcAccount: Base64EncodedRpcAccount | null,\n): EncodedAccount | MaybeEncodedAccount {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase64Encoder().encode(rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype Base58EncodedRpcAccount = AccountInfoBase & (AccountInfoWithBase58Bytes | AccountInfoWithBase58EncodedData);\n\n/**\n * Parses a base58-encoded account provided by the RPC client into an {@link EncodedAccount} type or\n * a {@link MaybeEncodedAccount} type if the raw data can be set to `null`.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n *\n * @example\n * ```ts\n * const myAddress = address('1234..5678');\n * const myRpcAccount = await rpc.getAccountInfo(myAddress, { encoding: 'base58' }).send();\n * const myAccount: MaybeEncodedAccount<'1234..5678'> = parseBase58RpcAccount(myRpcAccount);\n * ```\n */\nexport function parseBase58RpcAccount(\n address: Address,\n rpcAccount: Base58EncodedRpcAccount,\n): EncodedAccount;\nexport function parseBase58RpcAccount(\n address: Address,\n rpcAccount: Base58EncodedRpcAccount | null,\n): MaybeEncodedAccount;\nexport function parseBase58RpcAccount(\n address: Address,\n rpcAccount: Base58EncodedRpcAccount | null,\n): EncodedAccount | MaybeEncodedAccount {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = getBase58Encoder().encode(typeof rpcAccount.data === 'string' ? rpcAccount.data : rpcAccount.data[0]);\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\ntype JsonParsedRpcAccount = AccountInfoBase & { readonly data: JsonParsedDataResponse };\n\n/**\n * Parses an arbitrary `jsonParsed` account provided by the RPC client into an {@link Account} type\n * or a {@link MaybeAccount} type if the raw data can be set to `null`.\n *\n * The expected data type should be explicitly provided as the first type parameter.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The expected type of this account's data.\n *\n * @example\n * ```ts\n * const myAccount: Account = parseJsonRpcAccount(myJsonRpcAccount);\n * ```\n */\nexport function parseJsonRpcAccount(\n address: Address,\n rpcAccount: JsonParsedRpcAccount,\n): Account;\nexport function parseJsonRpcAccount(\n address: Address,\n rpcAccount: JsonParsedRpcAccount | null,\n): MaybeAccount;\nexport function parseJsonRpcAccount(\n address: Address,\n rpcAccount: JsonParsedRpcAccount | null,\n): Account | MaybeAccount {\n if (!rpcAccount) return Object.freeze({ address, exists: false });\n const data = rpcAccount.data.parsed.info as TData;\n return Object.freeze({ ...parseBaseAccount(rpcAccount), address, data, exists: true });\n}\n\nfunction parseBaseAccount(rpcAccount: AccountInfoBase): BaseAccount {\n return Object.freeze({\n executable: rpcAccount.executable,\n lamports: rpcAccount.lamports,\n programAddress: rpcAccount.owner,\n space: rpcAccount.space,\n });\n}\n", "import type { Address } from '@solana/addresses';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Commitment, Slot } from '@solana/rpc-types';\n\nimport type { MaybeAccount, MaybeEncodedAccount } from './maybe-account';\nimport { parseBase64RpcAccount, parseJsonRpcAccount } from './parse-account';\nimport type { GetAccountInfoApi, GetMultipleAccountsApi } from './rpc-api';\n\n/**\n * Optional configuration for fetching a singular account.\n *\n * @interface\n */\nexport type FetchAccountConfig = {\n abortSignal?: AbortSignal;\n /**\n * Fetch the details of the account as of the highest slot that has reached this level of\n * commitment.\n *\n * @defaultValue Whichever default is applied by the underlying {@link RpcApi} in use. For\n * example, when using an API created by a `createSolanaRpc*()` helper, the default commitment\n * is `\"confirmed\"` unless configured otherwise. Unmitigated by an API layer on the client, the\n * default commitment applied by the server is `\"finalized\"`.\n */\n commitment?: Commitment;\n /**\n * Prevents accessing stale data by enforcing that the RPC node has processed transactions up to\n * this slot\n */\n minContextSlot?: Slot;\n};\n\n/**\n * Fetches a {@link MaybeEncodedAccount} from the provided RPC client and address.\n *\n * It uses the {@link GetAccountInfoApi.getAccountInfo | getAccountInfo} RPC method under the hood\n * with base64 encoding and an additional configuration object can be provided to customize the\n * behavior of the RPC call.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n *\n * @example\n * ```ts\n * const myAddress = address('1234..5678');\n * const myAccount: MaybeEncodedAccount<'1234..5678'> = await fetchEncodedAccount(rpc, myAddress);\n *\n * // With custom configuration.\n * const myAccount: MaybeEncodedAccount<'1234..5678'> = await fetchEncodedAccount(rpc, myAddress, {\n * abortSignal: myAbortController.signal,\n * commitment: 'confirmed',\n * });\n * ```\n */\nexport async function fetchEncodedAccount(\n rpc: Rpc,\n address: Address,\n config: FetchAccountConfig = {},\n): Promise> {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc.getAccountInfo(address, { ...rpcConfig, encoding: 'base64' }).send({ abortSignal });\n return parseBase64RpcAccount(address, response.value);\n}\n\n/**\n * Fetches a {@link MaybeAccount} from the provided RPC client and address by using\n * {@link GetAccountInfoApi.getAccountInfo | getAccountInfo} under the hood with the `jsonParsed`\n * encoding.\n *\n * It may also return a {@link MaybeEncodedAccount} if the RPC client does not know how to parse the\n * account at the requested address. In any case, the expected data type should be explicitly\n * provided as the first type parameter.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The expected type of this account's data.\n *\n * @example\n * ```ts\n * type TokenData = { mint: Address; owner: Address };\n * const myAccount = await fetchJsonParsedAccount(rpc, myAddress);\n * myAccount satisfies MaybeAccount | MaybeEncodedAccount;\n *\n * // With custom configuration.\n * const myAccount = await fetchJsonParsedAccount(rpc, myAddress, {\n * abortSignal: myAbortController.signal,\n * commitment: 'confirmed',\n * });\n * ```\n */\nexport async function fetchJsonParsedAccount(\n rpc: Rpc,\n address: Address,\n config: FetchAccountConfig = {},\n): Promise | MaybeEncodedAccount> {\n const { abortSignal, ...rpcConfig } = config;\n const { value: account } = await rpc\n .getAccountInfo(address, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount(address, account as Parameters[1])\n : parseBase64RpcAccount(address, account as Parameters[1]);\n}\n\n/**\n * Optional configuration for fetching multiple accounts.\n *\n * @interface\n */\nexport type FetchAccountsConfig = {\n abortSignal?: AbortSignal;\n /**\n * Fetch the details of the accounts as of the highest slot that has reached this level of\n * commitment.\n *\n * @defaultValue Whichever default is applied by the underlying {@link RpcApi} in use. For\n * example, when using an API created by a `createSolanaRpc*()` helper, the default commitment\n * is `\"confirmed\"` unless configured otherwise. Unmitigated by an API layer on the client, the\n * default commitment applied by the server is `\"finalized\"`.\n */\n commitment?: Commitment;\n /**\n * Prevents accessing stale data by enforcing that the RPC node has processed transactions up to\n * this slot\n */\n minContextSlot?: Slot;\n};\n\n/**\n * Fetches an array of {@link MaybeEncodedAccount | MaybeEncodedAccounts} from the provided RPC\n * client and an array of addresses.\n *\n * It uses the {@link GetMultipleAccountsApi#getMultipleAccounts | getMultipleAccounts} RPC method\n * under the hood with base64 encodings and an additional configuration object can be provided to\n * customize the behavior of the RPC call.\n *\n * @typeParam TAddresses - Supply an array of string literals to define accounts having particular\n * addresses.\n *\n * @example\n * ```ts\n * const myAddressA = address('1234..5678');\n * const myAddressB = address('8765..4321');\n * const [myAccountA, myAccountB] = await fetchEncodedAccounts(rpc, [myAddressA, myAddressB]);\n * myAccountA satisfies MaybeEncodedAccount<'1234..5678'>;\n * myAccountB satisfies MaybeEncodedAccount<'8765..4321'>;\n *\n * // With custom configuration.\n * const [myAccountA, myAccountB] = await fetchEncodedAccounts(rpc, [myAddressA, myAddressB], {\n * abortSignal: myAbortController.signal,\n * commitment: 'confirmed',\n * });\n * ```\n */\nexport async function fetchEncodedAccounts<\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address } = {\n [P in keyof TAddresses]: Address;\n },\n>(rpc: Rpc, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'base64' })\n .send({ abortSignal });\n return response.value.map((account, index) => parseBase64RpcAccount(addresses[index], account)) as {\n [P in keyof TAddresses]: MaybeEncodedAccount;\n };\n}\n\n/**\n * Fetches an array of {@link MaybeAccount | MaybeAccounts} from a provided RPC client and an array\n * of addresses.\n *\n * It uses the {@link GetMultipleAccountsApi#getMultipleAccounts | getMultipleAccounts} RPC method\n * under the hood with the `jsonParsed` encoding. It may also return a\n * {@link MaybeEncodedAccount} instead of the expected {@link MaybeAccount} if the RPC client does\n * not know how to parse some of the requested accounts. In any case, the array of expected data\n * types should be explicitly provided as the first type parameter.\n *\n * @typeParam TAddresses - Supply an array of string literals to define accounts having particular\n * addresses.\n * @typeParam TData - The expected types of these accounts' data.\n \n * @example\n * ```ts\n * type TokenData = { mint: Address; owner: Address };\n * type MintData = { supply: bigint };\n * const [myAccountA, myAccountB] = await fetchJsonParsedAccounts<[TokenData, MintData]>(rpc, [myAddressA, myAddressB]);\n * myAccountA satisfies MaybeAccount | MaybeEncodedAccount;\n * myAccountB satisfies MaybeAccount | MaybeEncodedAccount;\n * ```\n */\nexport async function fetchJsonParsedAccounts<\n TData extends object[],\n TAddresses extends string[] = string[],\n TWrappedAddresses extends { [P in keyof TAddresses]: Address } = {\n [P in keyof TAddresses]: Address;\n },\n>(rpc: Rpc, addresses: TWrappedAddresses, config: FetchAccountsConfig = {}) {\n const { abortSignal, ...rpcConfig } = config;\n const response = await rpc\n .getMultipleAccounts(addresses, { ...rpcConfig, encoding: 'jsonParsed' })\n .send({ abortSignal });\n return response.value.map((account, index) => {\n return !!account && typeof account === 'object' && 'parsed' in account.data\n ? parseJsonRpcAccount(addresses[index], account as Parameters[1])\n : parseBase64RpcAccount(addresses[index], account as Parameters[1]);\n }) as {\n [P in keyof TAddresses]:\n | MaybeAccount\n | MaybeEncodedAccount;\n } & {\n [P in keyof TData]:\n | MaybeAccount\n | MaybeEncodedAccount;\n };\n}\n", "import { Address } from '@solana/addresses';\nimport {\n SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND,\n SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\n\nimport { Account } from './account';\n\n/**\n * Represents an account that may or may not exist on-chain.\n *\n * When the account exists, it is represented as an {@link Account} type with an additional `exists`\n * attribute set to `true`. When it does not exist, it is represented by an object containing only\n * the address of the account and an `exists` attribute set to `false`.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The nature of this account's data. It can be represented as either a\n * `Uint8Array` – meaning the account is encoded – or a custom data type – meaning\n * the account is decoded.\n *\n * @example\n * ```ts\n * // Account exists\n * const myExistingAccount: MaybeAccount = {\n * exists: true,\n * address: address('1234..5678'),\n * data: { name: 'Alice', age: 30 },\n * // ...\n * };\n *\n * // Account does not exist\n * const myMissingAccount: MaybeAccount = {\n * exists: false,\n * address: address('8765..4321'),\n * };\n * ```\n */\nexport type MaybeAccount =\n | { readonly address: Address; readonly exists: false }\n | (Account & { readonly exists: true });\n\n/**\n * Represents an encoded account that may or may not exist on-chain.\n *\n * When the account exists, it is represented as an {@link Account} type having its `TData` type\n * parameter set to `Uint8Array` with an additional `exists` attribute set to `true`. When it does\n * not exist, it is represented by an object containing only the address of the account and an\n * `exists` attribute set to `false`.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n *\n * @example\n * ```ts\n * // Encoded account exists\n * const myExistingAccount: MaybeEncodedAccount<'1234..5678'> = {\n * exists: true,\n * address: address('1234..5678'),\n * data: new Uint8Array([1, 2, 3]),\n * // ...\n * };\n *\n * // Encoded account does not exist\n * const myMissingAccount: MaybeEncodedAccount<'8765..4321'> = {\n * exists: false,\n * address: address('8765..4321'),\n * };\n * ```\n */\nexport type MaybeEncodedAccount = MaybeAccount;\n\n/**\n * Given a {@link MaybeAccount}, asserts that the account exists and allows it to be used as an\n * {@link Account} type going forward.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The nature of this account's data. It can be represented as either a\n * `Uint8Array` – meaning the account is encoded – or a custom data type – meaning\n * the account is decoded.\n *\n * @example\n * ```ts\n * const myAccount: MaybeEncodedAccount<'1234..5678'>;\n * assertAccountExists(myAccount);\n *\n * // Now we can use myAccount as an `EncodedAccount`\n * myAccount satisfies EncodedAccount<'1234..5678'>;\n * ```\n */\nexport function assertAccountExists(\n account: MaybeAccount,\n): asserts account is Account & { exists: true } {\n if (!account.exists) {\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND, { address: account.address });\n }\n}\n\n/**\n * Given an array of {@link MaybeAccount | MaybeAccounts}, asserts that all the accounts exist and\n * allows them to be used as an array of {@link Account | Accounts} going forward.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TData - The nature of this account's data. It can be represented as either a\n * `Uint8Array` – meaning the account is encoded – or a custom data type – meaning\n * the account is decoded.\n *\n * @example\n * ```ts\n * const myAccounts: MaybeEncodedAccount

[];\n * assertAccountsExist(myAccounts);\n *\n * // Now we can use them as an array of `EncodedAccounts`\n * for (const a of myAccounts) {\n * a satisfies EncodedAccount
;\n * }\n * ```\n */\nexport function assertAccountsExist(\n accounts: MaybeAccount[],\n): asserts accounts is (Account & { exists: true })[] {\n const missingAccounts = accounts.filter(a => !a.exists);\n if (missingAccounts.length > 0) {\n const missingAddresses = missingAccounts.map(a => a.address);\n throw new SolanaError(SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND, { addresses: missingAddresses });\n }\n}\n", "import { SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED, SolanaError } from '@solana/errors';\n\n/**\n * Throws an exception unless {@link Crypto#getRandomValues | `crypto.getRandomValues()`} is\n * available in the current JavaScript environment.\n */\nexport function assertPRNGIsAvailable() {\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.getRandomValues !== 'function') {\n throw new SolanaError(SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED);\n }\n}\n", "import {\n SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT,\n SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED,\n SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED,\n SolanaError,\n} from '@solana/errors';\n\nfunction assertIsSecureContext() {\n if (__BROWSER__ && !globalThis.isSecureContext) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DISALLOWED_IN_INSECURE_CONTEXT);\n }\n}\n\nlet cachedEd25519Decision: PromiseLike | boolean | undefined;\nasync function isEd25519CurveSupported(subtle: SubtleCrypto): Promise {\n if (cachedEd25519Decision === undefined) {\n cachedEd25519Decision = new Promise(resolve => {\n subtle\n .generateKey('Ed25519', /* extractable */ false, ['sign', 'verify'])\n .then(() => {\n resolve((cachedEd25519Decision = true));\n })\n .catch(() => {\n resolve((cachedEd25519Decision = false));\n });\n });\n }\n if (typeof cachedEd25519Decision === 'boolean') {\n return cachedEd25519Decision;\n } else {\n return await cachedEd25519Decision;\n }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#digest | `crypto.subtle.digest()`} is available in\n * the current JavaScript environment.\n */\nexport function assertDigestCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.digest !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED);\n }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#generateKey | `crypto.subtle.generateKey()`} is\n * available in the current JavaScript environment and has support for the Ed25519 curve.\n */\nexport async function assertKeyGenerationIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.generateKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED);\n }\n if (!(await isEd25519CurveSupported(globalThis.crypto.subtle))) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED);\n }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#exportKey | `crypto.subtle.exportKey()`} is\n * available in the current JavaScript environment.\n */\nexport function assertKeyExporterIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.exportKey !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED);\n }\n}\n\n/**\n * Throws an exception unless {@link SubtleCrypto#sign | `crypto.subtle.sign()`} is available in the\n * current JavaScript environment.\n */\nexport function assertSigningCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.sign !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED);\n }\n}\n/**\n * Throws an exception unless {@link SubtleCrypto#verify | `crypto.subtle.verify()`} is available in\n * the current JavaScript environment.\n */\nexport function assertVerificationCapabilityIsAvailable() {\n assertIsSecureContext();\n if (typeof globalThis.crypto === 'undefined' || typeof globalThis.crypto.subtle?.verify !== 'function') {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED);\n }\n}\n", "import {\n combineCodec,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n transformEncoder,\n} from '@solana/codecs-core';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\nimport { Brand, EncodedString } from '@solana/nominal-types';\n\n/**\n * Represents a string that validates as a Solana address. Functions that require well-formed\n * addresses should specify their inputs in terms of this type.\n *\n * Whenever you need to validate an arbitrary string as a base58-encoded address, use the\n * {@link address}, {@link assertIsAddress}, or {@link isAddress} functions in this package.\n */\nexport type Address = Brand, 'Address'>;\n\nlet memoizedBase58Encoder: Encoder | undefined;\nlet memoizedBase58Decoder: Decoder | undefined;\n\nfunction getMemoizedBase58Encoder(): Encoder {\n if (!memoizedBase58Encoder) memoizedBase58Encoder = getBase58Encoder();\n return memoizedBase58Encoder;\n}\n\nfunction getMemoizedBase58Decoder(): Decoder {\n if (!memoizedBase58Decoder) memoizedBase58Decoder = getBase58Decoder();\n return memoizedBase58Decoder;\n}\n\n/**\n * A type guard that returns `true` if the input string conforms to the {@link Address} type, and\n * refines its type for use in your program.\n *\n * @example\n * ```ts\n * import { isAddress } from '@solana/addresses';\n *\n * if (isAddress(ownerAddress)) {\n * // At this point, `ownerAddress` has been refined to a\n * // `Address` that can be used with the RPC.\n * const { value: lamports } = await rpc.getBalance(ownerAddress).send();\n * setBalanceLamports(lamports);\n * } else {\n * setError(`${ownerAddress} is not an address`);\n * }\n * ```\n */\nexport function isAddress(putativeAddress: string): putativeAddress is Address {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n try {\n return base58Encoder.encode(putativeAddress).byteLength === 32;\n } catch {\n return false;\n }\n}\n\n/**\n * From time to time you might acquire a string, that you expect to validate as an address or public\n * key, from an untrusted network API or user input. Use this function to assert that such an\n * arbitrary string is a base58-encoded address.\n *\n * @example\n * ```ts\n * import { assertIsAddress } from '@solana/addresses';\n *\n * // Imagine a function that fetches an account's balance when a user submits a form.\n * function handleSubmit() {\n * // We know only that what the user typed conforms to the `string` type.\n * const address: string = accountAddressInput.value;\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `address` to `Address`.\n * assertIsAddress(address);\n * // At this point, `address` is an `Address` that can be used with the RPC.\n * const balanceInLamports = await rpc.getBalance(address).send();\n * } catch (e) {\n * // `address` turned out not to be a base58-encoded address\n * }\n * }\n * ```\n */\nexport function assertIsAddress(putativeAddress: string): asserts putativeAddress is Address {\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest address (32 bytes of zeroes)\n putativeAddress.length < 32 ||\n // Highest address (32 bytes of 255)\n putativeAddress.length > 44\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeAddress.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const base58Encoder = getMemoizedBase58Encoder();\n const bytes = base58Encoder.encode(putativeAddress);\n const numBytes = bytes.byteLength;\n if (numBytes !== 32) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\n/**\n * Combines _asserting_ that a string is an address with _coercing_ it to the {@link Address} type.\n * It's most useful with untrusted input.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n *\n * await transfer(address(fromAddress), address(toAddress), lamports(100000n));\n * ```\n *\n * > [!TIP]\n * > When starting from a known-good address as a string, it's more efficient to typecast it rather\n * than to use the {@link address} helper, because the helper unconditionally performs validation on\n * its input.\n * >\n * > ```ts\n * > import { Address } from '@solana/addresses';\n * >\n * > const MEMO_PROGRAM_ADDRESS =\n * > 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n * > ```\n */\nexport function address(putativeAddress: TAddress): Address {\n assertIsAddress(putativeAddress);\n return putativeAddress as Address;\n}\n\n/**\n * Returns an encoder that you can use to encode a base58-encoded address to a byte array.\n *\n * @example\n * ```ts\n * import { getAddressEncoder } from '@solana/addresses';\n *\n * const address = 'B9Lf9z5BfNPT4d5KMeaBFx8x1G4CULZYR1jA2kmxRDka' as Address;\n * const addressEncoder = getAddressEncoder();\n * const addressBytes = addressEncoder.encode(address);\n * // Uint8Array(32) [\n * // 150, 183, 190, 48, 171, 8, 39, 156,\n * // 122, 213, 172, 108, 193, 95, 26, 158,\n * // 149, 243, 115, 254, 20, 200, 36, 30,\n * // 248, 179, 178, 232, 220, 89, 53, 127\n * // ]\n * ```\n */\nexport function getAddressEncoder(): FixedSizeEncoder {\n return transformEncoder(fixEncoderSize(getMemoizedBase58Encoder(), 32), putativeAddress =>\n address(putativeAddress),\n );\n}\n\n/**\n * Returns a decoder that you can use to convert an array of 32 bytes representing an address to the\n * base58-encoded representation of that address.\n *\n * @example\n * ```ts\n * import { getAddressDecoder } from '@solana/addresses';\n *\n * const addressBytes = new Uint8Array([\n * 150, 183, 190, 48, 171, 8, 39, 156,\n * 122, 213, 172, 108, 193, 95, 26, 158,\n * 149, 243, 115, 254, 20, 200, 36, 30,\n * 248, 179, 178, 232, 220, 89, 53, 127\n * ]);\n * const addressDecoder = getAddressDecoder();\n * const address = addressDecoder.decode(addressBytes); // B9Lf9z5BfNPT4d5KMeaBFx8x1G4CULZYR1jA2kmxRDka\n * ```\n */\nexport function getAddressDecoder(): FixedSizeDecoder {\n return fixDecoderSize(getMemoizedBase58Decoder(), 32) as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to a base-58 encoded address.\n *\n * @see {@link getAddressDecoder}\n * @see {@link getAddressEncoder}\n */\nexport function getAddressCodec(): FixedSizeCodec {\n return combineCodec(getAddressEncoder(), getAddressDecoder());\n}\n\nexport function getAddressComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n", "/**!\n * noble-ed25519\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Paul Miller (https://paulmillr.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the “Software”), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nconst D = 37095705934669439343138083508754565189542113879843219016388785533085940283555n;\nconst P = 57896044618658097711785492504343953926634992332820282019728792003956564819949n; // 2n ** 255n - 19n; ed25519 is twisted edwards curve\nconst RM1 = 19681161376707505956807079304988542015446066515923890162744021073123829784752n; // √-1\n\n// mod division\nfunction mod(a: bigint): bigint {\n const r = a % P;\n return r >= 0n ? r : P + r;\n}\nfunction pow2(x: bigint, power: bigint): bigint {\n // pow2(x, 4) == x^(2^4)\n let r = x;\n while (power-- > 0n) {\n r *= r;\n r %= P;\n }\n return r;\n}\nfunction pow_2_252_3(x: bigint): bigint {\n // x^(2^252-3) unrolled util for square root\n const x2 = (x * x) % P; // x^2, bits 1\n const b2 = (x2 * x) % P; // x^3, bits 11\n const b4 = (pow2(b2, 2n) * b2) % P; // x^(2^4-1), bits 1111\n const b5 = (pow2(b4, 1n) * x) % P; // x^(2^5-1), bits 11111\n const b10 = (pow2(b5, 5n) * b5) % P; // x^(2^10)\n const b20 = (pow2(b10, 10n) * b10) % P; // x^(2^20)\n const b40 = (pow2(b20, 20n) * b20) % P; // x^(2^40)\n const b80 = (pow2(b40, 40n) * b40) % P; // x^(2^80)\n const b160 = (pow2(b80, 80n) * b80) % P; // x^(2^160)\n const b240 = (pow2(b160, 80n) * b80) % P; // x^(2^240)\n const b250 = (pow2(b240, 10n) * b10) % P; // x^(2^250)\n const pow_p_5_8 = (pow2(b250, 2n) * x) % P; // < To pow to (p+3)/8, multiply it by x.\n return pow_p_5_8;\n}\nfunction uvRatio(u: bigint, v: bigint): bigint | null {\n // for sqrt comp\n const v3 = mod(v * v * v); // v³\n const v7 = mod(v3 * v3 * v); // v⁷\n const pow = pow_2_252_3(u * v7); // (uv⁷)^(p-5)/8\n let x = mod(u * v3 * pow); // (uv³)(uv⁷)^(p-5)/8\n const vx2 = mod(v * x * x); // vx²\n const root1 = x; // First root candidate\n const root2 = mod(x * RM1); // Second root candidate; RM1 is √-1\n const useRoot1 = vx2 === u; // If vx² = u (mod p), x is a square root\n const useRoot2 = vx2 === mod(-u); // If vx² = -u, set x <-- x * 2^((p-1)/4)\n const noRoot = vx2 === mod(-u * RM1); // There is no valid root, vx² = -u√-1\n if (useRoot1) x = root1;\n if (useRoot2 || noRoot) x = root2; // We return root2 anyway, for const-time\n if ((mod(x) & 1n) === 1n) x = mod(-x); // edIsNegative\n if (!useRoot1 && !useRoot2) {\n return null;\n }\n return x;\n}\n// https://datatracker.ietf.org/doc/html/rfc8032#section-5.1.3\nexport function pointIsOnCurve(y: bigint, lastByte: number): boolean {\n const y2 = mod(y * y); // y²\n const u = mod(y2 - 1n); // u=y²-1\n const v = mod(D * y2 + 1n);\n const x = uvRatio(u, v); // (uv³)(uv⁷)^(p-5)/8; square root\n if (x === null) {\n return false;\n }\n const isLastByteOdd = (lastByte & 0x80) !== 0; // x_0, last bit\n if (x === 0n && isLastByteOdd) {\n return false;\n }\n return true;\n}\n", "import { ReadonlyUint8Array } from '@solana/codecs-core';\n\nimport { pointIsOnCurve } from './vendor/noble/ed25519';\n\nfunction byteToHex(byte: number): string {\n const hexString = byte.toString(16);\n if (hexString.length === 1) {\n return `0${hexString}`;\n } else {\n return hexString;\n }\n}\n\nfunction decompressPointBytes(bytes: ReadonlyUint8Array): bigint {\n const hexString = bytes.reduce((acc, byte, ii) => `${byteToHex(ii === 31 ? byte & ~0x80 : byte)}${acc}`, '');\n const integerLiteralString = `0x${hexString}`;\n return BigInt(integerLiteralString);\n}\n\nexport function compressedPointBytesAreOnCurve(bytes: ReadonlyUint8Array): boolean {\n if (bytes.byteLength !== 32) {\n return false;\n }\n const y = decompressPointBytes(bytes);\n return pointIsOnCurve(y, bytes[31]);\n}\n", "import { SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS, SolanaError } from '@solana/errors';\nimport type { AffinePoint } from '@solana/nominal-types';\n\nimport { type Address, getAddressCodec } from './address';\nimport { compressedPointBytesAreOnCurve } from './curve-internal';\n\n/**\n * Represents an {@link Address} that validates as being off-curve. Functions that require off-curve\n * addresses should specify their inputs in terms of this type.\n *\n * Whenever you need to validate an address as being off-curve, use the {@link offCurveAddress},\n * {@link assertIsOffCurveAddress}, or {@link isOffCurveAddress} functions in this package.\n */\nexport type OffCurveAddress = AffinePoint, 'invalid'>;\n\n/**\n * A type guard that returns `true` if the input address conforms to the {@link OffCurveAddress}\n * type, and refines its type for use in your application.\n *\n * @example\n * ```ts\n * import { isOffCurveAddress } from '@solana/addresses';\n *\n * if (isOffCurveAddress(accountAddress)) {\n * // At this point, `accountAddress` has been refined to a\n * // `OffCurveAddress` that can be used within your business logic.\n * const { value: account } = await rpc.getAccountInfo(accountAddress).send();\n * } else {\n * setError(`${accountAddress} is not off-curve`);\n * }\n * ```\n */\nexport function isOffCurveAddress(\n putativeOffCurveAddress: TAddress,\n): putativeOffCurveAddress is OffCurveAddress {\n const addressBytes = getAddressCodec().encode(putativeOffCurveAddress);\n return compressedPointBytesAreOnCurve(addressBytes) === false;\n}\n\n/**\n * From time to time you might acquire an {@link Address}, that you expect to validate as an\n * off-curve address, from an untrusted source. Use this function to assert that such an address is\n * off-curve.\n *\n * @example\n * ```ts\n * import { assertIsOffCurveAddress } from '@solana/addresses';\n *\n * // Imagine a function that fetches an account's balance when a user submits a form.\n * function handleSubmit() {\n * // We know only that the input conforms to the `string` type.\n * const address: string = accountAddressInput.value;\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `address` to `Address`.\n * assertIsAddress(address);\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `address` to `OffCurveAddress`.\n * assertIsOffCurveAddress(address);\n * // At this point, `address` is an `OffCurveAddress` that can be used with the RPC.\n * const balanceInLamports = await rpc.getBalance(address).send();\n * } catch (e) {\n * // `address` turned out to NOT be a base58-encoded off-curve address\n * }\n * }\n * ```\n */\nexport function assertIsOffCurveAddress(\n putativeOffCurveAddress: TAddress,\n): asserts putativeOffCurveAddress is OffCurveAddress {\n if (!isOffCurveAddress(putativeOffCurveAddress)) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS);\n }\n}\n\n/**\n * Combines _asserting_ that an {@link Address} is off-curve with _coercing_ it to the\n * {@link OffCurveAddress} type. It's most useful with untrusted input.\n */\nexport function offCurveAddress(\n putativeOffCurveAddress: TAddress,\n): OffCurveAddress {\n assertIsOffCurveAddress(putativeOffCurveAddress);\n return putativeOffCurveAddress;\n}\n", "import { assertDigestCapabilityIsAvailable } from '@solana/assertions';\nimport type { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n isSolanaError,\n SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED,\n SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE,\n SOLANA_ERROR__ADDRESSES__MALFORMED_PDA,\n SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED,\n SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE,\n SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER,\n SolanaError,\n} from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\n\nimport { Address, assertIsAddress, getAddressCodec, isAddress } from './address';\nimport { compressedPointBytesAreOnCurve } from './curve-internal';\n\n/**\n * A tuple representing a program derived address (derived from the address of some program and a\n * set of seeds) and the associated bump seed used to ensure that the address, as derived, does not\n * fall on the Ed25519 curve.\n *\n * Whenever you need to validate an arbitrary tuple as one that represents a program derived\n * address, use the {@link assertIsProgramDerivedAddress} or {@link isProgramDerivedAddress}\n * functions in this package.\n */\nexport type ProgramDerivedAddress = Readonly<\n [Address, ProgramDerivedAddressBump]\n>;\n\n/**\n * Represents an integer in the range [0,255] used in the derivation of a program derived address to\n * ensure that it does not fall on the Ed25519 curve.\n */\nexport type ProgramDerivedAddressBump = Brand;\n\n/**\n * A type guard that returns `true` if the input tuple conforms to the {@link ProgramDerivedAddress}\n * type, and refines its type for use in your program.\n *\n * @see The {@link isAddress} function for an example of how to use a type guard.\n */\nexport function isProgramDerivedAddress(\n value: unknown,\n): value is ProgramDerivedAddress {\n return (\n Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'number' &&\n value[1] >= 0 &&\n value[1] <= 255 &&\n isAddress(value[0])\n );\n}\n\n/**\n * In the event that you receive an address/bump-seed tuple from some untrusted source, use this\n * function to assert that it conforms to the {@link ProgramDerivedAddress} interface.\n *\n * @see The {@link assertIsAddress} function for an example of how to use an assertion function.\n */\nexport function assertIsProgramDerivedAddress(\n value: unknown,\n): asserts value is ProgramDerivedAddress {\n const validFormat =\n Array.isArray(value) && value.length === 2 && typeof value[0] === 'string' && typeof value[1] === 'number';\n if (!validFormat) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MALFORMED_PDA);\n }\n if (value[1] < 0 || value[1] > 255) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE, {\n bump: value[1],\n });\n }\n assertIsAddress(value[0]);\n}\n\ntype ProgramDerivedAddressInput = Readonly<{\n programAddress: Address;\n seeds: Seed[];\n}>;\n\ntype SeedInput = Readonly<{\n baseAddress: Address;\n programAddress: Address;\n seed: Seed;\n}>;\n\ntype Seed = ReadonlyUint8Array | string;\n\nconst MAX_SEED_LENGTH = 32;\nconst MAX_SEEDS = 16;\nconst PDA_MARKER_BYTES = [\n // The string 'ProgramDerivedAddress'\n 80, 114, 111, 103, 114, 97, 109, 68, 101, 114, 105, 118, 101, 100, 65, 100, 100, 114, 101, 115, 115,\n] as const;\n\nasync function createProgramDerivedAddress({ programAddress, seeds }: ProgramDerivedAddressInput): Promise
{\n assertDigestCapabilityIsAvailable();\n if (seeds.length > MAX_SEEDS) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED, {\n actual: seeds.length,\n maxSeeds: MAX_SEEDS,\n });\n }\n let textEncoder: TextEncoder;\n const seedBytes = seeds.reduce((acc, seed, ii) => {\n const bytes = typeof seed === 'string' ? (textEncoder ||= new TextEncoder()).encode(seed) : seed;\n if (bytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: bytes.byteLength,\n index: ii,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n acc.push(...bytes);\n return acc;\n }, [] as number[]);\n const base58EncodedAddressCodec = getAddressCodec();\n const programAddressBytes = base58EncodedAddressCodec.encode(programAddress);\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...seedBytes, ...programAddressBytes, ...PDA_MARKER_BYTES]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n if (compressedPointBytesAreOnCurve(addressBytes)) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE);\n }\n return base58EncodedAddressCodec.decode(addressBytes);\n}\n\n/**\n * Given a program's {@link Address} and up to 16 {@link Seed | Seeds}, this method will return the\n * program derived address (PDA) associated with each.\n *\n * @example\n * ```ts\n * import { getAddressEncoder, getProgramDerivedAddress } from '@solana/addresses';\n *\n * const addressEncoder = getAddressEncoder();\n * const [pda, bumpSeed] = await getProgramDerivedAddress({\n * programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address,\n * seeds: [\n * // Owner\n * addressEncoder.encode('9fYLFVoVqwH37C3dyPi6cpeobfbQ2jtLpN5HgAYDDdkm' as Address),\n * // Token program\n * addressEncoder.encode('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address),\n * // Mint\n * addressEncoder.encode('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' as Address),\n * ],\n * });\n * ```\n */\nexport async function getProgramDerivedAddress({\n programAddress,\n seeds,\n}: ProgramDerivedAddressInput): Promise {\n let bumpSeed = 255;\n while (bumpSeed > 0) {\n try {\n const address = await createProgramDerivedAddress({\n programAddress,\n seeds: [...seeds, new Uint8Array([bumpSeed])],\n });\n return [address, bumpSeed as ProgramDerivedAddressBump];\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE)) {\n bumpSeed--;\n } else {\n throw e;\n }\n }\n }\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED);\n}\n\n/**\n * Returns a base58-encoded address derived from some base address, some program address, and a seed\n * string or byte array.\n *\n * @example\n * ```ts\n * import { createAddressWithSeed } from '@solana/addresses';\n *\n * const derivedAddress = await createAddressWithSeed({\n * // The private key associated with this address will be able to sign for `derivedAddress`.\n * baseAddress: 'B9Lf9z5BfNPT4d5KMeaBFx8x1G4CULZYR1jA2kmxRDka' as Address,\n * // Only this program will be able to write data to this account.\n * programAddress: '445erYq578p2aERrGW9mn9KiYe3fuG6uHdcJ2LPPShGw' as Address,\n * seed: 'data-account',\n * });\n * ```\n */\nexport async function createAddressWithSeed({ baseAddress, programAddress, seed }: SeedInput): Promise
{\n const { encode, decode } = getAddressCodec();\n\n const seedBytes = typeof seed === 'string' ? new TextEncoder().encode(seed) : seed;\n if (seedBytes.byteLength > MAX_SEED_LENGTH) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED, {\n actual: seedBytes.byteLength,\n index: 0,\n maxSeedLength: MAX_SEED_LENGTH,\n });\n }\n\n const programAddressBytes = encode(programAddress);\n if (\n programAddressBytes.length >= PDA_MARKER_BYTES.length &&\n programAddressBytes.slice(-PDA_MARKER_BYTES.length).every((byte, index) => byte === PDA_MARKER_BYTES[index])\n ) {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER);\n }\n\n const addressBytesBuffer = await crypto.subtle.digest(\n 'SHA-256',\n new Uint8Array([...encode(baseAddress), ...seedBytes, ...programAddressBytes]),\n );\n const addressBytes = new Uint8Array(addressBytesBuffer);\n\n return decode(addressBytes);\n}\n", "import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY, SolanaError } from '@solana/errors';\n\nimport { Address, getAddressDecoder, getAddressEncoder } from './address';\n\n/**\n * Given a public {@link CryptoKey}, this method will return its associated {@link Address}.\n *\n * @example\n * ```ts\n * import { getAddressFromPublicKey } from '@solana/addresses';\n *\n * const address = await getAddressFromPublicKey(publicKey);\n * ```\n */\nexport async function getAddressFromPublicKey(publicKey: CryptoKey): Promise
{\n assertKeyExporterIsAvailable();\n if (publicKey.type !== 'public' || publicKey.algorithm.name !== 'Ed25519') {\n throw new SolanaError(SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY);\n }\n const publicKeyBytes = await crypto.subtle.exportKey('raw', publicKey);\n return getAddressDecoder().decode(new Uint8Array(publicKeyBytes));\n}\n\n/**\n * Given an {@link Address}, return a {@link CryptoKey} that can be used to verify signatures.\n *\n * @example\n * ```ts\n * import { getAddressFromPublicKey } from '@solana/addresses';\n *\n * const publicKey = await getPublicKeyFromAddress(address);\n * ```\n */\nexport async function getPublicKeyFromAddress(address: Address) {\n const addressBytes = getAddressEncoder().encode(address);\n return await crypto.subtle.importKey('raw', addressBytes, { name: 'Ed25519' }, true /* extractable */, ['verify']);\n}\n", "import { SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\n/**\n * Ensures that a given number falls within a specified range.\n *\n * If the number is outside the allowed range, an error is thrown.\n * This function is primarily used to validate values before encoding them in a codec.\n *\n * @param codecDescription - A string describing the codec that is performing the validation.\n * @param min - The minimum allowed value (inclusive).\n * @param max - The maximum allowed value (inclusive).\n * @param value - The number to validate.\n *\n * @throws {@link SolanaError} if the value is out of range.\n *\n * @example\n * Validating a number within range.\n * ```ts\n * assertNumberIsBetweenForCodec('u8', 0, 255, 42); // Passes\n * ```\n *\n * @example\n * Throwing an error for an out-of-range value.\n * ```ts\n * assertNumberIsBetweenForCodec('u8', 0, 255, 300); // Throws\n * ```\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: bigint | number,\n max: bigint | number,\n value: bigint | number,\n) {\n if (value < min || value > max) {\n throw new SolanaError(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, {\n codecDescription,\n max,\n min,\n value,\n });\n }\n}\n", "import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n/**\n * Represents an encoder for numbers and bigints.\n *\n * This type allows encoding values that are either `number` or `bigint`.\n * Depending on the specific implementation, the encoded output may have a fixed or variable size.\n *\n * @see {@link FixedSizeNumberEncoder}\n */\nexport type NumberEncoder = Encoder;\n\n/**\n * Represents a fixed-size encoder for numbers and bigints.\n *\n * This encoder serializes values using an exact number of bytes, defined by `TSize`.\n *\n * @typeParam TSize - The number of bytes used for encoding.\n *\n * @see {@link NumberEncoder}\n */\nexport type FixedSizeNumberEncoder = FixedSizeEncoder;\n\n/**\n * Represents a decoder for numbers and bigints.\n *\n * This type supports decoding values as either `number` or `bigint`, depending on the implementation.\n *\n * @see {@link FixedSizeNumberDecoder}\n */\nexport type NumberDecoder = Decoder | Decoder;\n\n/**\n * Represents a fixed-size decoder for numbers and bigints.\n *\n * This decoder reads a fixed number of bytes (`TSize`) and converts them into a `number` or `bigint`.\n *\n * @typeParam TSize - The number of bytes expected for decoding.\n *\n * @see {@link NumberDecoder}\n */\nexport type FixedSizeNumberDecoder =\n | FixedSizeDecoder\n | FixedSizeDecoder;\n\n/**\n * Represents a codec for encoding and decoding numbers and bigints.\n *\n * - The encoded value can be either a `number` or a `bigint`.\n * - The decoded value will always be either a `number` or `bigint`, depending on the implementation.\n *\n * @see {@link FixedSizeNumberCodec}\n */\nexport type NumberCodec = Codec | Codec;\n\n/**\n * Represents a fixed-size codec for encoding and decoding numbers and bigints.\n *\n * This codec uses a specific number of bytes (`TSize`) for serialization.\n * The encoded value can be either a `number` or `bigint`, but the decoded value will always be a `number` or `bigint`,\n * depending on the implementation.\n *\n * @typeParam TSize - The number of bytes used for encoding and decoding.\n *\n * @see {@link NumberCodec}\n */\nexport type FixedSizeNumberCodec =\n | FixedSizeCodec\n | FixedSizeCodec;\n\n/**\n * Configuration options for number codecs that use more than one byte.\n *\n * This configuration applies to all number codecs except `u8` and `i8`,\n * allowing the user to specify the endianness of serialization.\n */\nexport type NumberCodecConfig = {\n /**\n * Specifies whether numbers should be encoded in little-endian or big-endian format.\n *\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/**\n * Defines the byte order used for number serialization.\n *\n * - `Little`: The least significant byte is stored first.\n * - `Big`: The most significant byte is stored first.\n */\nexport enum Endian {\n Little,\n Big,\n}\n", "import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n createDecoder,\n createEncoder,\n FixedSizeDecoder,\n FixedSizeEncoder,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput = {\n config?: NumberCodecConfig;\n name: string;\n size: TSize;\n};\n\ntype NumberFactoryEncoderInput = NumberFactorySharedInput & {\n range?: [bigint | number, bigint | number];\n set: (view: DataView, value: TFrom, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput = NumberFactorySharedInput & {\n get: (view: DataView, littleEndian?: boolean) => TTo;\n};\n\nfunction isLittleEndian(config?: NumberCodecConfig): boolean {\n return config?.endian === Endian.Big ? false : true;\n}\n\nexport function numberEncoderFactory(\n input: NumberFactoryEncoderInput,\n): FixedSizeEncoder {\n return createEncoder({\n fixedSize: input.size,\n write(value: TFrom, bytes: Uint8Array, offset: Offset): Offset {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));\n bytes.set(new Uint8Array(arrayBuffer), offset);\n return offset + input.size;\n },\n });\n}\n\nexport function numberDecoderFactory(\n input: NumberFactoryDecoderInput,\n): FixedSizeDecoder {\n return createDecoder({\n fixedSize: input.size,\n read(bytes, offset = 0): [TTo, number] {\n assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, isLittleEndian(input.config)), offset + input.size];\n },\n });\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: ReadonlyUint8Array | Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 32-bit floating-point numbers (`f32`).\n *\n * This encoder serializes `f32` values using 4 bytes.\n * Floating-point values may lose precision when encoded.\n *\n * For more details, see {@link getF32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `f32` values.\n *\n * @example\n * Encoding an `f32` value.\n * ```ts\n * const encoder = getF32Encoder();\n * const bytes = encoder.encode(-1.5); // 0x0000c0bf\n * ```\n *\n * @see {@link getF32Codec}\n */\nexport const getF32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'f32',\n set: (view, value, le) => view.setFloat32(0, Number(value), le),\n size: 4,\n });\n\n/**\n * Returns a decoder for 32-bit floating-point numbers (`f32`).\n *\n * This decoder deserializes `f32` values from 4 bytes.\n * Some precision may be lost during decoding due to floating-point representation.\n *\n * For more details, see {@link getF32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `f32` values.\n *\n * @example\n * Decoding an `f32` value.\n * ```ts\n * const decoder = getF32Decoder();\n * const value = decoder.decode(new Uint8Array([0x00, 0x00, 0xc0, 0xbf])); // -1.5\n * ```\n *\n * @see {@link getF32Codec}\n */\nexport const getF32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n size: 4,\n });\n\n/**\n * Returns a codec for encoding and decoding 32-bit floating-point numbers (`f32`).\n *\n * This codec serializes `f32` values using 4 bytes.\n * Due to the IEEE 754 floating-point representation, some precision loss may occur.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `f32` values.\n *\n * @example\n * Encoding and decoding an `f32` value.\n * ```ts\n * const codec = getF32Codec();\n * const bytes = codec.encode(-1.5); // 0x0000c0bf\n * const value = codec.decode(bytes); // -1.5\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getF32Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-1.5); // 0xbfc00000\n * ```\n *\n * @remarks\n * `f32` values follow the IEEE 754 single-precision floating-point standard.\n * Precision loss may occur for certain values.\n *\n * - If you need higher precision, consider using {@link getF64Codec}.\n * - If you need integer values, consider using {@link getI32Codec} or {@link getU32Codec}.\n *\n * Separate {@link getF32Encoder} and {@link getF32Decoder} functions are available.\n *\n * ```ts\n * const bytes = getF32Encoder().encode(-1.5);\n * const value = getF32Decoder().decode(bytes);\n * ```\n *\n * @see {@link getF32Encoder}\n * @see {@link getF32Decoder}\n */\nexport const getF32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 64-bit floating-point numbers (`f64`).\n *\n * This encoder serializes `f64` values using 8 bytes.\n * Floating-point values may lose precision when encoded.\n *\n * For more details, see {@link getF64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `f64` values.\n *\n * @example\n * Encoding an `f64` value.\n * ```ts\n * const encoder = getF64Encoder();\n * const bytes = encoder.encode(-1.5); // 0x000000000000f8bf\n * ```\n *\n * @see {@link getF64Codec}\n */\nexport const getF64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'f64',\n set: (view, value, le) => view.setFloat64(0, Number(value), le),\n size: 8,\n });\n\n/**\n * Returns a decoder for 64-bit floating-point numbers (`f64`).\n *\n * This decoder deserializes `f64` values from 8 bytes.\n * Some precision may be lost during decoding due to floating-point representation.\n *\n * For more details, see {@link getF64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `f64` values.\n *\n * @example\n * Decoding an `f64` value.\n * ```ts\n * const decoder = getF64Decoder();\n * const value = decoder.decode(new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf])); // -1.5\n * ```\n *\n * @see {@link getF64Codec}\n */\nexport const getF64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n size: 8,\n });\n\n/**\n * Returns a codec for encoding and decoding 64-bit floating-point numbers (`f64`).\n *\n * This codec serializes `f64` values using 8 bytes.\n * Due to the IEEE 754 floating-point representation, some precision loss may occur.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `f64` values.\n *\n * @example\n * Encoding and decoding an `f64` value.\n * ```ts\n * const codec = getF64Codec();\n * const bytes = codec.encode(-1.5); // 0x000000000000f8bf\n * const value = codec.decode(bytes); // -1.5\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getF64Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-1.5); // 0xbff8000000000000\n * ```\n *\n * @remarks\n * `f64` values follow the IEEE 754 double-precision floating-point standard.\n * Precision loss may still occur but is significantly lower than `f32`.\n *\n * - If you need smaller floating-point values, consider using {@link getF32Codec}.\n * - If you need integer values, consider using {@link getI64Codec} or {@link getU64Codec}.\n *\n * Separate {@link getF64Encoder} and {@link getF64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getF64Encoder().encode(-1.5);\n * const value = getF64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getF64Encoder}\n * @see {@link getF64Decoder}\n */\nexport const getF64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 128-bit signed integers (`i128`).\n *\n * This encoder serializes `i128` values using 16 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI128Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `i128` values.\n *\n * @example\n * Encoding an `i128` value.\n * ```ts\n * const encoder = getI128Encoder();\n * const bytes = encoder.encode(-42n); // 0xd6ffffffffffffffffffffffffffffff\n * ```\n *\n * @see {@link getI128Codec}\n */\nexport const getI128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'i128',\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\n/**\n * Returns a decoder for 128-bit signed integers (`i128`).\n *\n * This decoder deserializes `i128` values from 16 bytes.\n * The decoded value is always a `bigint`.\n *\n * For more details, see {@link getI128Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `i128` values.\n *\n * @example\n * Decoding an `i128` value.\n * ```ts\n * const decoder = getI128Decoder();\n * const value = decoder.decode(new Uint8Array([\n * 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n * 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff\n * ])); // -42n\n * ```\n *\n * @see {@link getI128Codec}\n */\nexport const getI128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n size: 16,\n });\n\n/**\n * Returns a codec for encoding and decoding 128-bit signed integers (`i128`).\n *\n * This codec serializes `i128` values using 16 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `i128` values.\n *\n * @example\n * Encoding and decoding an `i128` value.\n * ```ts\n * const codec = getI128Codec();\n * const bytes = codec.encode(-42n); // 0xd6ffffffffffffffffffffffffffffff\n * const value = codec.decode(bytes); // -42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI128Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42n); // 0xffffffffffffffffffffffffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^127` and `2^127 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller signed integer, consider using {@link getI64Codec} or {@link getI32Codec}.\n * - If you need a larger signed integer, consider using a custom codec.\n * - If you need unsigned integers, consider using {@link getU128Codec}.\n *\n * Separate {@link getI128Encoder} and {@link getI128Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI128Encoder().encode(-42);\n * const value = getI128Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI128Encoder}\n * @see {@link getI128Decoder}\n */\nexport const getI128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 16-bit signed integers (`i16`).\n *\n * This encoder serializes `i16` values using 2 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI16Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `i16` values.\n *\n * @example\n * Encoding an `i16` value.\n * ```ts\n * const encoder = getI16Encoder();\n * const bytes = encoder.encode(-42); // 0xd6ff\n * ```\n *\n * @see {@link getI16Codec}\n */\nexport const getI16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'i16',\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, Number(value), le),\n size: 2,\n });\n\n/**\n * Returns a decoder for 16-bit signed integers (`i16`).\n *\n * This decoder deserializes `i16` values from 2 bytes.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI16Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `i16` values.\n *\n * @example\n * Decoding an `i16` value.\n * ```ts\n * const decoder = getI16Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6, 0xff])); // -42\n * ```\n *\n * @see {@link getI16Codec}\n */\nexport const getI16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n size: 2,\n });\n\n/**\n * Returns a codec for encoding and decoding 16-bit signed integers (`i16`).\n *\n * This codec serializes `i16` values using 2 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `i16` values.\n *\n * @example\n * Encoding and decoding an `i16` value.\n * ```ts\n * const codec = getI16Codec();\n * const bytes = codec.encode(-42); // 0xd6ff\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI16Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42); // 0xffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^15` (`-32,768`) and `2^15 - 1` (`32,767`).\n *\n * - If you need a smaller signed integer, consider using {@link getI8Codec}.\n * - If you need a larger signed integer, consider using {@link getI32Codec}.\n * - If you need unsigned integers, consider using {@link getU16Codec}.\n *\n * Separate {@link getI16Encoder} and {@link getI16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI16Encoder().encode(-42);\n * const value = getI16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI16Encoder}\n * @see {@link getI16Decoder}\n */\nexport const getI16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 32-bit signed integers (`i32`).\n *\n * This encoder serializes `i32` values using 4 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `i32` values.\n *\n * @example\n * Encoding an `i32` value.\n * ```ts\n * const encoder = getI32Encoder();\n * const bytes = encoder.encode(-42); // 0xd6ffffff\n * ```\n *\n * @see {@link getI32Codec}\n */\nexport const getI32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'i32',\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, Number(value), le),\n size: 4,\n });\n\n/**\n * Returns a decoder for 32-bit signed integers (`i32`).\n *\n * This decoder deserializes `i32` values from 4 bytes.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `i32` values.\n *\n * @example\n * Decoding an `i32` value.\n * ```ts\n * const decoder = getI32Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6, 0xff, 0xff, 0xff])); // -42\n * ```\n *\n * @see {@link getI32Codec}\n */\nexport const getI32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n size: 4,\n });\n\n/**\n * Returns a codec for encoding and decoding 32-bit signed integers (`i32`).\n *\n * This codec serializes `i32` values using 4 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `i32` values.\n *\n * @example\n * Encoding and decoding an `i32` value.\n * ```ts\n * const codec = getI32Codec();\n * const bytes = codec.encode(-42); // 0xd6ffffff\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI32Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42); // 0xffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^31` (`-2,147,483,648`) and `2^31 - 1` (`2,147,483,647`).\n *\n * - If you need a smaller signed integer, consider using {@link getI16Codec} or {@link getI8Codec}.\n * - If you need a larger signed integer, consider using {@link getI64Codec}.\n * - If you need unsigned integers, consider using {@link getU32Codec}.\n *\n * Separate {@link getI32Encoder} and {@link getI32Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI32Encoder().encode(-42);\n * const value = getI32Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI32Encoder}\n * @see {@link getI32Decoder}\n */\nexport const getI32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 64-bit signed integers (`i64`).\n *\n * This encoder serializes `i64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `i64` values.\n *\n * @example\n * Encoding an `i64` value.\n * ```ts\n * const encoder = getI64Encoder();\n * const bytes = encoder.encode(-42n); // 0xd6ffffffffffffff\n * ```\n *\n * @see {@link getI64Codec}\n */\nexport const getI64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'i64',\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\n/**\n * Returns a decoder for 64-bit signed integers (`i64`).\n *\n * This decoder deserializes `i64` values from 8 bytes.\n * The decoded value is always a `bigint`.\n *\n * For more details, see {@link getI64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `i64` values.\n *\n * @example\n * Decoding an `i64` value.\n * ```ts\n * const decoder = getI64Decoder();\n * const value = decoder.decode(new Uint8Array([\n * 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff\n * ])); // -42n\n * ```\n *\n * @see {@link getI64Codec}\n */\nexport const getI64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n size: 8,\n });\n\n/**\n * Returns a codec for encoding and decoding 64-bit signed integers (`i64`).\n *\n * This codec serializes `i64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `i64` values.\n *\n * @example\n * Encoding and decoding an `i64` value.\n * ```ts\n * const codec = getI64Codec();\n * const bytes = codec.encode(-42n); // 0xd6ffffffffffffff\n * const value = codec.decode(bytes); // -42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI64Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42n); // 0xffffffffffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^63` and `2^63 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller signed integer, consider using {@link getI32Codec} or {@link getI16Codec}.\n * - If you need a larger signed integer, consider using {@link getI128Codec}.\n * - If you need unsigned integers, consider using {@link getU64Codec}.\n *\n * Separate {@link getI64Encoder} and {@link getI64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI64Encoder().encode(-42);\n * const value = getI64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI64Encoder}\n * @see {@link getI64Decoder}\n */\nexport const getI64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 8-bit signed integers (`i8`).\n *\n * This encoder serializes `i8` values using 1 byte.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI8Codec}.\n *\n * @returns A `FixedSizeEncoder` for encoding `i8` values.\n *\n * @example\n * Encoding an `i8` value.\n * ```ts\n * const encoder = getI8Encoder();\n * const bytes = encoder.encode(-42); // 0xd6\n * ```\n *\n * @see {@link getI8Codec}\n */\nexport const getI8Encoder = (): FixedSizeEncoder =>\n numberEncoderFactory({\n name: 'i8',\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, Number(value)),\n size: 1,\n });\n\n/**\n * Returns a decoder for 8-bit signed integers (`i8`).\n *\n * This decoder deserializes `i8` values from 1 byte.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI8Codec}.\n *\n * @returns A `FixedSizeDecoder` for decoding `i8` values.\n *\n * @example\n * Decoding an `i8` value.\n * ```ts\n * const decoder = getI8Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6])); // -42\n * ```\n *\n * @see {@link getI8Codec}\n */\nexport const getI8Decoder = (): FixedSizeDecoder =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\n/**\n * Returns a codec for encoding and decoding 8-bit signed integers (`i8`).\n *\n * This codec serializes `i8` values using 1 byte.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @returns A `FixedSizeCodec` for encoding and decoding `i8` values.\n *\n * @example\n * Encoding and decoding an `i8` value.\n * ```ts\n * const codec = getI8Codec();\n * const bytes = codec.encode(-42); // 0xd6\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @remarks\n * This codec supports values between `-2^7` (`-128`) and `2^7 - 1` (`127`).\n *\n * - If you need a larger signed integer, consider using {@link getI16Codec}.\n * - If you need an unsigned integer, consider using {@link getU8Codec}.\n *\n * Separate {@link getI8Encoder} and {@link getI8Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI8Encoder().encode(-42);\n * const value = getI8Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI8Encoder}\n * @see {@link getI8Decoder}\n */\nexport const getI8Codec = (): FixedSizeCodec =>\n combineCodec(getI8Encoder(), getI8Decoder());\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n Offset,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Returns an encoder for `shortU16` values.\n *\n * This encoder serializes `shortU16` values using **1 to 3 bytes**.\n * Smaller values use fewer bytes, while larger values take up more space.\n *\n * For more details, see {@link getShortU16Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding `shortU16` values.\n *\n * @example\n * Encoding a `shortU16` value.\n * ```ts\n * const encoder = getShortU16Encoder();\n * encoder.encode(42); // 0x2a\n * encoder.encode(128); // 0x8001\n * encoder.encode(16384); // 0x808001\n * ```\n *\n * @see {@link getShortU16Codec}\n */\nexport const getShortU16Encoder = (): VariableSizeEncoder =>\n createEncoder({\n getSizeFromValue: (value: bigint | number): number => {\n if (value <= 0b01111111) return 1;\n if (value <= 0b0011111111111111) return 2;\n return 3;\n },\n maxSize: 3,\n write: (value: bigint | number, bytes: Uint8Array, offset: Offset): Offset => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const shortU16Bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = Number(value) >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n shortU16Bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n shortU16Bytes[ii - 1] |= 0b10000000;\n }\n }\n bytes.set(shortU16Bytes, offset);\n return offset + shortU16Bytes.length;\n },\n });\n\n/**\n * Returns a decoder for `shortU16` values.\n *\n * This decoder deserializes `shortU16` values from **1 to 3 bytes**.\n * The number of bytes used depends on the encoded value.\n *\n * For more details, see {@link getShortU16Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding `shortU16` values.\n *\n * @example\n * Decoding a `shortU16` value.\n * ```ts\n * const decoder = getShortU16Decoder();\n * decoder.decode(new Uint8Array([0x2a])); // 42\n * decoder.decode(new Uint8Array([0x80, 0x01])); // 128\n * decoder.decode(new Uint8Array([0x80, 0x80, 0x01])); // 16384\n * ```\n *\n * @see {@link getShortU16Codec}\n */\nexport const getShortU16Decoder = (): VariableSizeDecoder =>\n createDecoder({\n maxSize: 3,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset): [number, Offset] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n });\n\n/**\n * Returns a codec for encoding and decoding `shortU16` values.\n *\n * It serializes unsigned integers using **1 to 3 bytes** based on the encoded value.\n * The larger the value, the more bytes it uses.\n *\n * - If the value is `<= 0x7f` (127), it is stored in a **single byte**\n * and the first bit is set to `0` to indicate the end of the value.\n * - Otherwise, the first bit is set to `1` to indicate that the value continues in the next byte, which follows the same pattern.\n * - This process repeats until the value is fully encoded in up to 3 bytes. The third and last byte, if needed, uses all 8 bits to store the remaining value.\n *\n * In other words, the encoding scheme follows this structure:\n *\n * ```txt\n * 0XXXXXXX <- Values 0 to 127 (1 byte)\n * 1XXXXXXX 0XXXXXXX <- Values 128 to 16,383 (2 bytes)\n * 1XXXXXXX 1XXXXXXX XXXXXXXX <- Values 16,384 to 4,194,303 (3 bytes)\n * ```\n *\n * @returns A `VariableSizeCodec` for encoding and decoding `shortU16` values.\n *\n * @example\n * Encoding and decoding `shortU16` values.\n * ```ts\n * const codec = getShortU16Codec();\n * const bytes1 = codec.encode(42); // 0x2a\n * const bytes2 = codec.encode(128); // 0x8001\n * const bytes3 = codec.encode(16384); // 0x808001\n *\n * codec.decode(bytes1); // 42\n * codec.decode(bytes2); // 128\n * codec.decode(bytes3); // 16384\n * ```\n *\n * @remarks\n * This codec efficiently stores small numbers, making it useful for transactions and compact representations.\n *\n * If you need a fixed-size `u16` codec, consider using {@link getU16Codec}.\n *\n * Separate {@link getShortU16Encoder} and {@link getShortU16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getShortU16Encoder().encode(42);\n * const value = getShortU16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getShortU16Encoder}\n * @see {@link getShortU16Decoder}\n */\nexport const getShortU16Codec = (): VariableSizeCodec =>\n combineCodec(getShortU16Encoder(), getShortU16Decoder());\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 128-bit unsigned integers (`u128`).\n *\n * This encoder serializes `u128` values using sixteen bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU128Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeEncoder` for encoding `u128` values.\n *\n * @example\n * Encoding a `u128` value.\n * ```ts\n * const encoder = getU128Encoder();\n * const bytes = encoder.encode(42n); // 0x2a000000000000000000000000000000\n * ```\n *\n * @see {@link getU128Codec}\n */\nexport const getU128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'u128',\n range: [0n, BigInt('0xffffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigUint64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\n/**\n * Returns a decoder for 128-bit unsigned integers (`u128`).\n *\n * This decoder deserializes `u128` values from sixteen bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU128Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeDecoder` for decoding `u128` values.\n *\n * @example\n * Decoding a `u128` value.\n * ```ts\n * const decoder = getU128Decoder();\n * const value = decoder.decode(new Uint8Array([0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])); // 42n\n * ```\n *\n * @see {@link getU128Codec}\n */\nexport const getU128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigUint64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'u128',\n size: 16,\n });\n\n/**\n * Returns a codec for encoding and decoding 128-bit unsigned integers (`u128`).\n *\n * This codec serializes `u128` values using 16 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `u128` values.\n *\n * @example\n * Encoding and decoding a `u128` value.\n * ```ts\n * const codec = getU128Codec();\n * const bytes = codec.encode(42); // 0x2a000000000000000000000000000000\n * const value = codec.decode(bytes); // 42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getU128Codec({ endian: Endian.Big });\n * const bytes = codec.encode(42); // 0x0000000000000000000000000000002a\n * ```\n *\n * @remarks\n * This codec supports values between `0` and `2^128 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller unsigned integer, consider using {@link getU64Codec} or {@link getU32Codec}.\n * - If you need signed integers, consider using {@link getI128Codec}.\n *\n * Separate {@link getU128Encoder} and {@link getU128Decoder} functions are available.\n *\n * ```ts\n * const bytes = getU128Encoder().encode(42);\n * const value = getU128Decoder().decode(bytes);\n * ```\n *\n * @see {@link getU128Encoder}\n * @see {@link getU128Decoder}\n */\nexport const getU128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getU128Encoder(config), getU128Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 16-bit unsigned integers (`u16`).\n *\n * This encoder serializes `u16` values using two bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU16Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeEncoder` for encoding `u16` values.\n *\n * @example\n * Encoding a `u16` value.\n * ```ts\n * const encoder = getU16Encoder();\n * const bytes = encoder.encode(42); // 0x2a00\n * ```\n *\n * @see {@link getU16Codec}\n */\nexport const getU16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'u16',\n range: [0, Number('0xffff')],\n set: (view, value, le) => view.setUint16(0, Number(value), le),\n size: 2,\n });\n\n/**\n * Returns a decoder for 16-bit unsigned integers (`u16`).\n *\n * This decoder deserializes `u16` values from two bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU16Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeDecoder` for decoding `u16` values.\n *\n * @example\n * Decoding a `u16` value.\n * ```ts\n * const decoder = getU16Decoder();\n * const value = decoder.decode(new Uint8Array([0x2a, 0x00])); // 42\n * ```\n *\n * @see {@link getU16Codec}\n */\nexport const getU16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint16(0, le),\n name: 'u16',\n size: 2,\n });\n\n/**\n * Returns a codec for encoding and decoding 16-bit unsigned integers (`u16`).\n *\n * This codec serializes `u16` values using two bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeCodec` for encoding and decoding `u16` values.\n *\n * @example\n * Encoding and decoding a `u16` value.\n * ```ts\n * const codec = getU16Codec();\n * const bytes = codec.encode(42); // 0x2a00 (little-endian)\n * const value = codec.decode(bytes); // 42\n * ```\n *\n * @example\n * Storing values in big-endian format.\n * ```ts\n * const codec = getU16Codec({ endian: Endian.Big });\n * const bytes = codec.encode(42); // 0x002a\n * ```\n *\n * @remarks\n * This codec supports values between `0` and `2^16 - 1`.\n * If you need a larger range, consider using {@link getU32Codec} or {@link getU64Codec}.\n * For signed integers, use {@link getI16Codec}.\n *\n * Separate {@link getU16Encoder} and {@link getU16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getU16Encoder().encode(42);\n * const value = getU16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getU16Encoder}\n * @see {@link getU16Decoder}\n */\nexport const getU16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getU16Encoder(config), getU16Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 32-bit unsigned integers (`u32`).\n *\n * This encoder serializes `u32` values using four bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU32Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeEncoder` for encoding `u32` values.\n *\n * @example\n * Encoding a `u32` value.\n * ```ts\n * const encoder = getU32Encoder();\n * const bytes = encoder.encode(42); // 0x2a000000\n * ```\n *\n * @see {@link getU32Codec}\n */\nexport const getU32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'u32',\n range: [0, Number('0xffffffff')],\n set: (view, value, le) => view.setUint32(0, Number(value), le),\n size: 4,\n });\n\n/**\n * Returns a decoder for 32-bit unsigned integers (`u32`).\n *\n * This decoder deserializes `u32` values from four bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * For more details, see {@link getU32Codec}.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeDecoder` for decoding `u32` values.\n *\n * @example\n * Decoding a `u32` value.\n * ```ts\n * const decoder = getU32Decoder();\n * const value = decoder.decode(new Uint8Array([0x2a, 0x00, 0x00, 0x00])); // 42\n * ```\n *\n * @see {@link getU32Codec}\n */\nexport const getU32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getUint32(0, le),\n name: 'u32',\n size: 4,\n });\n\n/**\n * Returns a codec for encoding and decoding 32-bit unsigned integers (`u32`).\n *\n * This codec serializes `u32` values using four bytes in little-endian format by default.\n * You may specify big-endian storage using the `endian` option.\n *\n * @param config - Optional settings for endianness.\n * @returns A `FixedSizeCodec` for encoding and decoding `u32` values.\n *\n * @example\n * Encoding and decoding a `u32` value.\n * ```ts\n * const codec = getU32Codec();\n * const bytes = codec.encode(42); // 0x2a000000 (little-endian)\n * const value = codec.decode(bytes); // 42\n * ```\n *\n * @example\n * Storing values in big-endian format.\n * ```ts\n * const codec = getU32Codec({ endian: Endian.Big });\n * const bytes = codec.encode(42); // 0x0000002a\n * ```\n *\n * @remarks\n * This codec only supports values between `0` and `2^32 - 1`.\n * If you need a larger range, consider using {@link getU64Codec} or {@link getU128Codec}.\n * For signed integers, use {@link getI32Codec}.\n *\n * Separate {@link getU32Encoder} and {@link getU32Decoder} functions are available.\n *\n * ```ts\n * const bytes = getU32Encoder().encode(42);\n * const value = getU32Decoder().decode(bytes);\n * ```\n *\n * @see {@link getU32Encoder}\n * @see {@link getU32Decoder}\n */\nexport const getU32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getU32Encoder(config), getU32Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 64-bit unsigned integers (`u64`).\n *\n * This encoder serializes `u64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getU64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder` for encoding `u64` values.\n *\n * @example\n * Encoding a `u64` value.\n * ```ts\n * const encoder = getU64Encoder();\n * const bytes = encoder.encode(42); // 0x2a00000000000000\n * ```\n *\n * @see {@link getU64Codec}\n */\nexport const getU64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder =>\n numberEncoderFactory({\n config,\n name: 'u64',\n range: [0n, BigInt('0xffffffffffffffff')],\n set: (view, value, le) => view.setBigUint64(0, BigInt(value), le),\n size: 8,\n });\n\n/**\n * Returns a decoder for 64-bit unsigned integers (`u64`).\n *\n * This decoder deserializes `u64` values from 8 bytes.\n * The decoded value is always a `bigint`.\n *\n * For more details, see {@link getU64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder` for decoding `u64` values.\n *\n * @example\n * Decoding a `u64` value.\n * ```ts\n * const decoder = getU64Decoder();\n * const value = decoder.decode(new Uint8Array([0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])); // 42n\n * ```\n *\n * @see {@link getU64Codec}\n */\nexport const getU64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigUint64(0, le),\n name: 'u64',\n size: 8,\n });\n\n/**\n * Returns a codec for encoding and decoding 64-bit unsigned integers (`u64`).\n *\n * This codec serializes `u64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec` for encoding and decoding `u64` values.\n *\n * @example\n * Encoding and decoding a `u64` value.\n * ```ts\n * const codec = getU64Codec();\n * const bytes = codec.encode(42); // 0x2a00000000000000\n * const value = codec.decode(bytes); // 42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getU64Codec({ endian: Endian.Big });\n * const bytes = codec.encode(42); // 0x000000000000002a\n * ```\n *\n * @remarks\n * This codec supports values between `0` and `2^64 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller unsigned integer, consider using {@link getU32Codec} or {@link getU16Codec}.\n * - If you need a larger unsigned integer, consider using {@link getU128Codec}.\n * - If you need signed integers, consider using {@link getI64Codec}.\n *\n * Separate {@link getU64Encoder} and {@link getU64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getU64Encoder().encode(42);\n * const value = getU64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getU64Encoder}\n * @see {@link getU64Decoder}\n */\nexport const getU64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec =>\n combineCodec(getU64Encoder(config), getU64Decoder(config));\n", "import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 8-bit unsigned integers (`u8`).\n *\n * This encoder serializes `u8` values using a single byte.\n *\n * For more details, see {@link getU8Codec}.\n *\n * @returns A `FixedSizeEncoder` for encoding `u8` values.\n *\n * @example\n * Encoding a `u8` value.\n * ```ts\n * const encoder = getU8Encoder();\n * const bytes = encoder.encode(42); // 0x2a\n * ```\n *\n * @see {@link getU8Codec}\n */\nexport const getU8Encoder = (): FixedSizeEncoder =>\n numberEncoderFactory({\n name: 'u8',\n range: [0, Number('0xff')],\n set: (view, value) => view.setUint8(0, Number(value)),\n size: 1,\n });\n\n/**\n * Returns a decoder for 8-bit unsigned integers (`u8`).\n *\n * This decoder deserializes `u8` values from a single byte.\n *\n * For more details, see {@link getU8Codec}.\n *\n * @returns A `FixedSizeDecoder` for decoding `u8` values.\n *\n * @example\n * Decoding a `u8` value.\n * ```ts\n * const decoder = getU8Decoder();\n * const value = decoder.decode(new Uint8Array([0xff])); // 255\n * ```\n *\n * @see {@link getU8Codec}\n */\nexport const getU8Decoder = (): FixedSizeDecoder =>\n numberDecoderFactory({\n get: view => view.getUint8(0),\n name: 'u8',\n size: 1,\n });\n\n/**\n * Returns a codec for encoding and decoding 8-bit unsigned integers (`u8`).\n *\n * This codec serializes `u8` values using a single byte.\n *\n * @returns A `FixedSizeCodec` for encoding and decoding `u8` values.\n *\n * @example\n * Encoding and decoding a `u8` value.\n * ```ts\n * const codec = getU8Codec();\n * const bytes = codec.encode(255); // 0xff\n * const value = codec.decode(bytes); // 255\n * ```\n *\n * @remarks\n * This codec supports values between `0` and `2^8 - 1` (0 to 255).\n * If you need larger integers, consider using {@link getU16Codec}, {@link getU32Codec}, or {@link getU64Codec}.\n * For signed integers, use {@link getI8Codec}.\n *\n * Separate {@link getU8Encoder} and {@link getU8Decoder} functions are available.\n *\n * ```ts\n * const bytes = getU8Encoder().encode(42);\n * const value = getU8Decoder().decode(bytes);\n * ```\n *\n * @see {@link getU8Encoder}\n * @see {@link getU8Decoder}\n */\nexport const getU8Codec = (): FixedSizeCodec =>\n combineCodec(getU8Encoder(), getU8Decoder());\n", "import { SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, SolanaError } from '@solana/errors';\n\n/** Checks the number of items in an array-like structure is expected. */\nexport function assertValidNumberOfItemsForCodec(\n codecDescription: string,\n expected: bigint | number,\n actual: bigint | number,\n) {\n if (expected !== actual) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual,\n codecDescription,\n expected,\n });\n }\n}\n", "import { isFixedSize } from '@solana/codecs-core';\n\n/**\n * Functionally, this type helper is equivalent to the identity type — i.e. `type Identity = T`.\n * However, wrapping generic object mappings in this type significantly reduces the number\n * of instantiation expressions processed, which increases TypeScript performance and\n * prevents \"Type instantiation is excessively deep and possibly infinite\" errors.\n *\n * This works because TypeScript doesn't create a new level of nesting when encountering conditional generic types.\n * @see https://github.com/microsoft/TypeScript/issues/34933\n * @see https://github.com/kysely-org/kysely/pull/483\n */\nexport type DrainOuterGeneric = [T] extends [unknown] ? T : never;\n\nexport function maxCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce(\n (all, size) => (all === null || size === null ? null : Math.max(all, size)),\n 0 as number | null,\n );\n}\n\nexport function sumCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce((all, size) => (all === null || size === null ? null : all + size), 0 as number | null);\n}\n\nexport function getFixedSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : null;\n}\n\nexport function getMaxSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : (codec.maxSize ?? null);\n}\n", "import {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getU32Decoder, getU32Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { getFixedSize, getMaxSize } from './utils';\n\n/**\n * Defines the possible size strategies for array-like codecs (`array`, `map`, and `set`).\n *\n * The size of the collection can be determined using one of the following approaches:\n * - A {@link NumberCodec}, {@link NumberDecoder}, or {@link NumberEncoder} to store a size prefix.\n * - A fixed `number` of items, enforcing an exact length.\n * - The string `\"remainder\"`, which infers the number of items by consuming the rest of the available bytes.\n * This option is only available when encoding fixed-size items.\n *\n * @typeParam TPrefix - A number codec, decoder, or encoder used for size prefixing.\n */\nexport type ArrayLikeCodecSize =\n | TPrefix\n | number\n | 'remainder';\n\n/**\n * Defines the configuration options for array codecs.\n *\n * @typeParam TPrefix - A number codec, decoder, or encoder used for size prefixing.\n */\nexport type ArrayCodecConfig = {\n /**\n * Specifies how the size of the array is determined.\n *\n * - A {@link NumberCodec}, {@link NumberDecoder}, or {@link NumberEncoder} stores a size prefix before encoding the array.\n * - A `number` enforces a fixed number of elements.\n * - `\"remainder\"` uses all remaining bytes to infer the array length (only for fixed-size items).\n *\n * @defaultValue A `u32` size prefix.\n */\n size?: ArrayLikeCodecSize;\n};\n\n/**\n * Returns an encoder for arrays of values.\n *\n * This encoder serializes arrays by encoding each element using the provided item encoder.\n * By default, a `u32` size prefix is included to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * For more details, see {@link getArrayCodec}.\n *\n * @typeParam TFrom - The type of the elements in the array.\n *\n * @param item - The encoder for each item in the array.\n * @param config - Optional configuration for the size encoding strategy.\n * @returns A `VariableSizeEncoder` for encoding arrays.\n *\n * @example\n * Encoding an array of `u8` numbers.\n * ```ts\n * const encoder = getArrayEncoder(getU8Encoder());\n * const bytes = encoder.encode([1, 2, 3]);\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n * ```\n *\n * @see {@link getArrayCodec}\n */\nexport function getArrayEncoder(\n item: Encoder,\n config: ArrayCodecConfig & { size: 0 },\n): FixedSizeEncoder;\nexport function getArrayEncoder(\n item: FixedSizeEncoder,\n config: ArrayCodecConfig & { size: number },\n): FixedSizeEncoder;\nexport function getArrayEncoder(\n item: Encoder,\n config?: ArrayCodecConfig,\n): VariableSizeEncoder;\nexport function getArrayEncoder(\n item: Encoder,\n config: ArrayCodecConfig = {},\n): Encoder {\n const size = config.size ?? getU32Encoder();\n const fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item));\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize !== null\n ? { fixedSize }\n : {\n getSizeFromValue: (array: TFrom[]) => {\n const prefixSize = typeof size === 'object' ? getEncodedSize(array.length, size) : 0;\n return prefixSize + [...array].reduce((all, value) => all + getEncodedSize(value, item), 0);\n },\n maxSize,\n }),\n write: (array: TFrom[], bytes, offset) => {\n if (typeof size === 'number') {\n assertValidNumberOfItemsForCodec('array', size, array.length);\n }\n if (typeof size === 'object') {\n offset = size.write(array.length, bytes, offset);\n }\n array.forEach(value => {\n offset = item.write(value, bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Returns a decoder for arrays of values.\n *\n * This decoder deserializes arrays by decoding each element using the provided item decoder.\n * By default, a `u32` size prefix is expected to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * For more details, see {@link getArrayCodec}.\n *\n * @typeParam TTo - The type of the decoded elements in the array.\n *\n * @param item - The decoder for each item in the array.\n * @param config - Optional configuration for the size decoding strategy.\n * @returns A `VariableSizeDecoder` for decoding arrays.\n *\n * @example\n * Decoding an array of `u8` numbers.\n * ```ts\n * const decoder = getArrayDecoder(getU8Decoder());\n * const array = decoder.decode(new Uint8Array([0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03]));\n * // [1, 2, 3]\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n * ```\n *\n * @see {@link getArrayCodec}\n */\nexport function getArrayDecoder(\n item: Decoder,\n config: ArrayCodecConfig & { size: 0 },\n): FixedSizeDecoder;\nexport function getArrayDecoder(\n item: FixedSizeDecoder,\n config: ArrayCodecConfig & { size: number },\n): FixedSizeDecoder;\nexport function getArrayDecoder(\n item: Decoder,\n config?: ArrayCodecConfig,\n): VariableSizeDecoder;\nexport function getArrayDecoder(item: Decoder, config: ArrayCodecConfig = {}): Decoder {\n const size = config.size ?? getU32Decoder();\n const itemSize = getFixedSize(item);\n const fixedSize = computeArrayLikeCodecSize(size, itemSize);\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize !== null ? { fixedSize } : { maxSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const array: TTo[] = [];\n if (typeof size === 'object' && bytes.slice(offset).length === 0) {\n return [array, offset];\n }\n\n if (size === 'remainder') {\n while (offset < bytes.length) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n }\n\n const [resolvedSize, newOffset] = typeof size === 'number' ? [size, offset] : size.read(bytes, offset);\n offset = newOffset;\n for (let i = 0; i < resolvedSize; i += 1) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n },\n });\n}\n\n/**\n * Returns a codec for encoding and decoding arrays of values.\n *\n * This codec serializes arrays by encoding each element using the provided item codec.\n * By default, a `u32` size prefix is included to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * @typeParam TFrom - The type of the elements to encode.\n * @typeParam TTo - The type of the decoded elements.\n *\n * @param item - The codec for each item in the array.\n * @param config - Optional configuration for the size encoding/decoding strategy.\n * @returns A `VariableSizeCodec` for encoding and decoding arrays.\n *\n * @example\n * Encoding and decoding an array of `u8` numbers.\n * ```ts\n * const codec = getArrayCodec(getU8Codec());\n * const bytes = codec.encode([1, 2, 3]);\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n *\n * const array = codec.decode(bytes);\n * // [1, 2, 3]\n * ```\n *\n * @example\n * Using a `u16` size prefix instead of `u32`.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: getU16Codec() });\n * const bytes = codec.encode([1, 2, 3]);\n * // 0x0300010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 2-byte prefix telling us to read 3 items.\n * ```\n *\n * @example\n * Using a fixed-size array of 3 items.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: 3 });\n * codec.encode([1, 2, 3]);\n * // 0x010203\n * // └-- 3 items of 1 byte each. There must always be 3 items in the array.\n * ```\n *\n * @example\n * Using the `\"remainder\"` size strategy.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: 'remainder' });\n * codec.encode([1, 2, 3]);\n * // 0x010203\n * // └-- 3 items of 1 byte each. The size is inferred from the remainder of the bytes.\n * ```\n *\n * @remarks\n * The size of the array can be controlled using the `size` option:\n * - A `Codec` (e.g. `getU16Codec()`) stores a size prefix before the array.\n * - A `number` enforces a fixed number of elements.\n * - `\"remainder\"` uses all remaining bytes to infer the array length.\n *\n * Separate {@link getArrayEncoder} and {@link getArrayDecoder} functions are available.\n *\n * ```ts\n * const bytes = getArrayEncoder(getU8Encoder()).encode([1, 2, 3]);\n * const array = getArrayDecoder(getU8Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getArrayEncoder}\n * @see {@link getArrayDecoder}\n */\nexport function getArrayCodec(\n item: Codec,\n config: ArrayCodecConfig & { size: 0 },\n): FixedSizeCodec;\nexport function getArrayCodec(\n item: FixedSizeCodec,\n config: ArrayCodecConfig & { size: number },\n): FixedSizeCodec;\nexport function getArrayCodec(\n item: Codec,\n config?: ArrayCodecConfig,\n): VariableSizeCodec;\nexport function getArrayCodec(\n item: Codec,\n config: ArrayCodecConfig = {},\n): Codec {\n return combineCodec(getArrayEncoder(item, config as object), getArrayDecoder(item, config as object));\n}\n\nfunction computeArrayLikeCodecSize(size: number | object | 'remainder', itemSize: number | null): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n return itemSize === null ? null : itemSize * size;\n}\n", "import {\n assertByteArrayHasEnoughBytesForCodec,\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from '@solana/codecs-core';\n\n/**\n * Defines the configuration options for bit array codecs.\n *\n * A bit array codec encodes an array of booleans into bits, packing them into bytes.\n * This configuration allows adjusting the bit ordering.\n *\n * @see {@link getBitArrayEncoder}\n * @see {@link getBitArrayDecoder}\n * @see {@link getBitArrayCodec}\n */\nexport type BitArrayCodecConfig = {\n /**\n * Determines whether the bits should be read in reverse order.\n *\n * - `false` (default): The first boolean is stored in the most significant bit (MSB-first).\n * - `true`: The first boolean is stored in the least significant bit (LSB-first).\n *\n * @defaultValue `false`\n */\n backward?: boolean;\n};\n\n/**\n * Returns an encoder that packs an array of booleans into bits.\n *\n * This encoder converts a list of `boolean` values into a compact bit representation,\n * storing 8 booleans per byte.\n *\n * The `backward` config option determines whether the bits are stored in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * For more details, see {@link getBitArrayCodec}.\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for encoding the bit array.\n * @returns A `FixedSizeEncoder` for encoding bit arrays.\n *\n * @example\n * Encoding a bit array.\n * ```ts\n * const encoder = getBitArrayEncoder(1);\n *\n * encoder.encode([true, false, true, false, false, false, false, false]);\n * // 0xa0 (0b10100000)\n * ```\n *\n * @see {@link getBitArrayCodec}\n */\nexport function getBitArrayEncoder(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeEncoder {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createEncoder({\n fixedSize: size,\n write(value: boolean[], bytes, offset) {\n const bytesToAdd: number[] = [];\n\n for (let i = 0; i < size; i += 1) {\n let byte = 0;\n for (let j = 0; j < 8; j += 1) {\n const feature = Number(value[i * 8 + j] ?? 0);\n byte |= feature << (backward ? j : 7 - j);\n }\n if (backward) {\n bytesToAdd.unshift(byte);\n } else {\n bytesToAdd.push(byte);\n }\n }\n\n bytes.set(bytesToAdd, offset);\n return size;\n },\n });\n}\n\n/**\n * Returns a decoder that unpacks bits into an array of booleans.\n *\n * This decoder converts a compact bit representation back into a list of `boolean` values.\n * Each byte is expanded into 8 booleans.\n *\n * The `backward` config option determines whether the bits are read in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * For more details, see {@link getBitArrayCodec}.\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for decoding the bit array.\n * @returns A `FixedSizeDecoder` for decoding bit arrays.\n *\n * @example\n * Decoding a bit array.\n * ```ts\n * const decoder = getBitArrayDecoder(1);\n *\n * decoder.decode(new Uint8Array([0xa0]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @see {@link getBitArrayCodec}\n */\nexport function getBitArrayDecoder(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeDecoder {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createDecoder({\n fixedSize: size,\n read(bytes, offset) {\n assertByteArrayHasEnoughBytesForCodec('bitArray', size, bytes, offset);\n const booleans: boolean[] = [];\n let slice = bytes.slice(offset, offset + size);\n slice = backward ? slice.reverse() : slice;\n\n slice.forEach(byte => {\n for (let i = 0; i < 8; i += 1) {\n if (backward) {\n booleans.push(Boolean(byte & 1));\n byte >>= 1;\n } else {\n booleans.push(Boolean(byte & 0b1000_0000));\n byte <<= 1;\n }\n }\n });\n\n return [booleans, offset + size];\n },\n });\n}\n\n/**\n * Returns a codec that encodes and decodes boolean arrays as compact bit representations.\n *\n * This codec efficiently stores boolean arrays as bits, packing 8 values per byte.\n * The `backward` config option determines whether bits are stored in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for encoding and decoding the bit array.\n * @returns A `FixedSizeCodec` for encoding and decoding bit arrays.\n *\n * @example\n * Encoding and decoding a bit array.\n * ```ts\n * const codec = getBitArrayCodec(1);\n *\n * codec.encode([true, false, true, false, false, false, false, false]);\n * // 0xa0 (0b10100000)\n *\n * codec.decode(new Uint8Array([0xa0]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @example\n * Encoding and decoding a bit array backwards.\n * ```ts\n * const codec = getBitArrayCodec(1, { backward: true });\n *\n * codec.encode([true, false, true, false, false, false, false, false]);\n * // 0x05 (0b00000101)\n *\n * codec.decode(new Uint8Array([0x05]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @remarks\n * Separate {@link getBitArrayEncoder} and {@link getBitArrayDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBitArrayEncoder(1).encode([true, false, true, false]);\n * const value = getBitArrayDecoder(1).decode(bytes);\n * ```\n *\n * @see {@link getBitArrayEncoder}\n * @see {@link getBitArrayDecoder}\n */\nexport function getBitArrayCodec(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeCodec {\n return combineCodec(getBitArrayEncoder(size, config), getBitArrayDecoder(size, config));\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\n/**\n * Defines the configuration options for boolean codecs.\n *\n * A boolean codec encodes `true` as `1` and `false` as `0`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * @typeParam TSize - A number codec, encoder, or decoder used for boolean representation.\n *\n * @see {@link getBooleanEncoder}\n * @see {@link getBooleanDecoder}\n * @see {@link getBooleanCodec}\n */\nexport type BooleanCodecConfig = {\n /**\n * The number codec used to store boolean values.\n *\n * - By default, booleans are stored as a `u8` (`1` for `true`, `0` for `false`).\n * - A custom number codec can be provided to change the storage size.\n *\n * @defaultValue `u8`\n */\n size?: TSize;\n};\n\n/**\n * Returns an encoder for boolean values.\n *\n * This encoder converts `true` into `1` and `false` into `0`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * For more details, see {@link getBooleanCodec}.\n *\n * @param config - Configuration options for encoding booleans.\n * @returns A `FixedSizeEncoder` where `N` is the size of the number codec.\n *\n * @example\n * Encoding booleans.\n * ```ts\n * const encoder = getBooleanEncoder();\n *\n * encoder.encode(false); // 0x00\n * encoder.encode(true); // 0x01\n * ```\n *\n * @see {@link getBooleanCodec}\n */\nexport function getBooleanEncoder(): FixedSizeEncoder;\nexport function getBooleanEncoder(\n config: BooleanCodecConfig & { size: FixedSizeNumberEncoder },\n): FixedSizeEncoder;\nexport function getBooleanEncoder(config: BooleanCodecConfig): VariableSizeEncoder;\nexport function getBooleanEncoder(config: BooleanCodecConfig = {}): Encoder {\n return transformEncoder(config.size ?? getU8Encoder(), (value: boolean) => (value ? 1 : 0));\n}\n\n/**\n * Returns a decoder for boolean values.\n *\n * This decoder reads a number and interprets `1` as `true` and `0` as `false`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * For more details, see {@link getBooleanCodec}.\n *\n * @param config - Configuration options for decoding booleans.\n * @returns A `FixedSizeDecoder` where `N` is the size of the number codec.\n *\n * @example\n * Decoding booleans.\n * ```ts\n * const decoder = getBooleanDecoder();\n *\n * decoder.decode(new Uint8Array([0x00])); // false\n * decoder.decode(new Uint8Array([0x01])); // true\n * ```\n *\n * @see {@link getBooleanCodec}\n */\nexport function getBooleanDecoder(): FixedSizeDecoder;\nexport function getBooleanDecoder(\n config: BooleanCodecConfig & { size: FixedSizeNumberDecoder },\n): FixedSizeDecoder;\nexport function getBooleanDecoder(config: BooleanCodecConfig): VariableSizeDecoder;\nexport function getBooleanDecoder(config: BooleanCodecConfig = {}): Decoder {\n return transformDecoder(config.size ?? getU8Decoder(), (value: bigint | number): boolean => Number(value) === 1);\n}\n\n/**\n * Returns a codec for encoding and decoding boolean values.\n *\n * By default, booleans are stored as a `u8` (`1` for `true`, `0` for `false`).\n * The `size` option allows customizing the number codec used for storage.\n *\n * @param config - Configuration options for encoding and decoding booleans.\n * @returns A `FixedSizeCodec` where `N` is the size of the number codec.\n *\n * @example\n * Encoding and decoding booleans using a `u8` (default).\n * ```ts\n * const codec = getBooleanCodec();\n *\n * codec.encode(false); // 0x00\n * codec.encode(true); // 0x01\n *\n * codec.decode(new Uint8Array([0x00])); // false\n * codec.decode(new Uint8Array([0x01])); // true\n * ```\n *\n * @example\n * Encoding and decoding booleans using a custom number codec.\n * ```ts\n * const codec = getBooleanCodec({ size: getU16Codec() });\n *\n * codec.encode(false); // 0x0000\n * codec.encode(true); // 0x0100\n *\n * codec.decode(new Uint8Array([0x00, 0x00])); // false\n * codec.decode(new Uint8Array([0x01, 0x00])); // true\n * ```\n *\n * @remarks\n * Separate {@link getBooleanEncoder} and {@link getBooleanDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBooleanEncoder().encode(true);\n * const value = getBooleanDecoder().decode(bytes);\n * ```\n *\n * @see {@link getBooleanEncoder}\n * @see {@link getBooleanDecoder}\n */\nexport function getBooleanCodec(): FixedSizeCodec;\nexport function getBooleanCodec(\n config: BooleanCodecConfig & { size: FixedSizeNumberCodec },\n): FixedSizeCodec;\nexport function getBooleanCodec(config: BooleanCodecConfig): VariableSizeCodec;\nexport function getBooleanCodec(config: BooleanCodecConfig = {}): Codec {\n return combineCodec(getBooleanEncoder(config), getBooleanDecoder(config));\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\n/**\n * Returns an encoder for raw byte arrays.\n *\n * This encoder writes byte arrays exactly as provided without modification.\n *\n * The size of the encoded byte array is determined by the length of the input.\n * - To enforce a fixed size, consider using {@link fixEncoderSize}.\n * - To add a size prefix, use {@link addEncoderSizePrefix}.\n * - To add a sentinel value, use {@link addEncoderSentinel}.\n *\n * For more details, see {@link getBytesCodec}.\n *\n * @returns A `VariableSizeEncoder`.\n *\n * @example\n * Encoding a byte array as-is.\n * ```ts\n * const encoder = getBytesEncoder();\n *\n * encoder.encode(new Uint8Array([1, 2, 3])); // 0x010203\n * encoder.encode(new Uint8Array([255, 0, 127])); // 0xff007f\n * ```\n *\n * @see {@link getBytesCodec}\n */\nexport function getBytesEncoder(): VariableSizeEncoder {\n return createEncoder({\n getSizeFromValue: value => value.length,\n write: (value, bytes, offset) => {\n bytes.set(value, offset);\n return offset + value.length;\n },\n });\n}\n\n/**\n * Returns a decoder for raw byte arrays.\n *\n * This decoder reads byte arrays exactly as provided without modification.\n *\n * The decoded byte array extends from the provided offset to the end of the input.\n * - To enforce a fixed size, consider using {@link fixDecoderSize}.\n * - To add a size prefix, use {@link addDecoderSizePrefix}.\n * - To add a sentinel value, use {@link addDecoderSentinel}.\n *\n * For more details, see {@link getBytesCodec}.\n *\n * @returns A `VariableSizeDecoder`.\n *\n * @example\n * Decoding a byte array as-is.\n * ```ts\n * const decoder = getBytesDecoder();\n *\n * decoder.decode(new Uint8Array([1, 2, 3])); // Uint8Array([1, 2, 3])\n * decoder.decode(new Uint8Array([255, 0, 127])); // Uint8Array([255, 0, 127])\n * ```\n *\n * @see {@link getBytesCodec}\n */\nexport function getBytesDecoder(): VariableSizeDecoder {\n return createDecoder({\n read: (bytes, offset) => {\n const slice = bytes.slice(offset);\n return [slice, offset + slice.length];\n },\n });\n}\n\n/**\n * Returns a codec for encoding and decoding raw byte arrays.\n *\n * This codec serializes and deserializes byte arrays without modification.\n *\n * The size of the encoded and decoded byte array is determined dynamically.\n * This means, when reading, the codec will consume all remaining bytes in the input.\n * - To enforce a fixed size, consider using {@link fixCodecSize}.\n * - To add a size prefix, use {@link addCodecSizePrefix}.\n * - To add a sentinel value, use {@link addCodecSentinel}.\n *\n * @returns A `VariableSizeCodec`.\n *\n * @example\n * Encoding and decoding a byte array.\n * ```ts\n * const codec = getBytesCodec();\n *\n * codec.encode(new Uint8Array([1, 2, 3])); // 0x010203\n * codec.decode(new Uint8Array([255, 0, 127])); // Uint8Array([255, 0, 127])\n * ```\n *\n * @remarks\n * Separate {@link getBytesEncoder} and {@link getBytesDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBytesEncoder().encode(new Uint8Array([1, 2, 3]));\n * const value = getBytesDecoder().decode(bytes);\n * ```\n *\n * @see {@link getBytesEncoder}\n * @see {@link getBytesDecoder}\n */\nexport function getBytesCodec(): VariableSizeCodec {\n return combineCodec(getBytesEncoder(), getBytesDecoder());\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\nconst enum HexC {\n ZERO = 48, // 0\n NINE = 57, // 9\n A_UP = 65, // A\n F_UP = 70, // F\n A_LO = 97, // a\n F_LO = 102, // f\n}\n\nconst INVALID_STRING_ERROR_BASE_CONFIG = {\n alphabet: '0123456789abcdef',\n base: 16,\n} as const;\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexC.ZERO && char <= HexC.NINE) return char - HexC.ZERO;\n if (char >= HexC.A_UP && char <= HexC.F_UP) return char - (HexC.A_UP - 10);\n if (char >= HexC.A_LO && char <= HexC.F_LO) return char - (HexC.A_LO - 10);\n}\n\n/**\n * Returns an encoder for base-16 (hexadecimal) strings.\n *\n * This encoder serializes strings using a base-16 encoding scheme.\n * The output consists of bytes representing the hexadecimal values of the input string.\n *\n * For more details, see {@link getBase16Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-16 strings.\n *\n * @example\n * Encoding a base-16 string.\n * ```ts\n * const encoder = getBase16Encoder();\n * const bytes = encoder.encode('deadface'); // 0xdeadface\n * ```\n *\n * @see {@link getBase16Codec}\n */\nexport const getBase16Encoder = (): VariableSizeEncoder =>\n createEncoder({\n getSizeFromValue: (value: string) => Math.ceil(value.length / 2),\n write(value: string, bytes, offset) {\n const len = value.length;\n const al = len / 2;\n if (len === 1) {\n const c = value.charCodeAt(0);\n const n = charCodeToBase16(c);\n if (n === undefined) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n bytes.set([n], offset);\n return 1 + offset;\n }\n const hexBytes = new Uint8Array(al);\n for (let i = 0, j = 0; i < al; i++) {\n const c1 = value.charCodeAt(j++);\n const c2 = value.charCodeAt(j++);\n\n const n1 = charCodeToBase16(c1);\n const n2 = charCodeToBase16(c2);\n if (n1 === undefined || (n2 === undefined && !Number.isNaN(c2))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n ...INVALID_STRING_ERROR_BASE_CONFIG,\n value,\n });\n }\n hexBytes[i] = !Number.isNaN(c2) ? (n1 << 4) | (n2 ?? 0) : n1;\n }\n\n bytes.set(hexBytes, offset);\n return hexBytes.length + offset;\n },\n });\n\n/**\n * Returns a decoder for base-16 (hexadecimal) strings.\n *\n * This decoder deserializes base-16 encoded strings from a byte array.\n *\n * For more details, see {@link getBase16Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-16 strings.\n *\n * @example\n * Decoding a base-16 string.\n * ```ts\n * const decoder = getBase16Decoder();\n * const value = decoder.decode(new Uint8Array([0xde, 0xad, 0xfa, 0xce])); // \"deadface\"\n * ```\n *\n * @see {@link getBase16Codec}\n */\nexport const getBase16Decoder = (): VariableSizeDecoder =>\n createDecoder({\n read(bytes, offset) {\n const value = bytes.slice(offset).reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');\n return [value, bytes.length];\n },\n });\n\n/**\n * Returns a codec for encoding and decoding base-16 (hexadecimal) strings.\n *\n * This codec serializes strings using a base-16 encoding scheme.\n * The output consists of bytes representing the hexadecimal values of the input string.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-16 strings.\n *\n * @example\n * Encoding and decoding a base-16 string.\n * ```ts\n * const codec = getBase16Codec();\n * const bytes = codec.encode('deadface'); // 0xdeadface\n * const value = codec.decode(bytes); // \"deadface\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-16 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase16Codec(), 8);\n * ```\n *\n * If you need a size-prefixed base-16 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase16Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase16Encoder} and {@link getBase16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase16Encoder().encode('deadface');\n * const value = getBase16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase16Encoder}\n * @see {@link getBase16Decoder}\n */\nexport const getBase16Codec = (): VariableSizeCodec => combineCodec(getBase16Encoder(), getBase16Decoder());\n", "import {\n combineCodec,\n containsBytes,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { getBase16Decoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__CODECS__INVALID_CONSTANT, SolanaError } from '@solana/errors';\n\n/**\n * Returns an encoder that always writes a predefined constant byte sequence.\n *\n * This encoder ensures that encoding always produces the specified byte array,\n * ignoring any input values.\n *\n * For more details, see {@link getConstantCodec}.\n *\n * @typeParam TConstant - The fixed byte sequence that will be written during encoding.\n *\n * @param constant - The predefined byte array to encode.\n * @returns A `FixedSizeEncoder` where `N` is the length of the constant.\n *\n * @example\n * Encoding a constant magic number.\n * ```ts\n * const encoder = getConstantEncoder(new Uint8Array([1, 2, 3, 4]));\n *\n * const bytes = encoder.encode();\n * // 0x01020304\n * // └──────┘ The predefined 4-byte constant.\n * ```\n *\n * @see {@link getConstantCodec}\n */\nexport function getConstantEncoder(\n constant: TConstant,\n): FixedSizeEncoder {\n return createEncoder({\n fixedSize: constant.length,\n write: (_, bytes, offset) => {\n bytes.set(constant, offset);\n return offset + constant.length;\n },\n });\n}\n\n/**\n * Returns a decoder that verifies a predefined constant byte sequence.\n *\n * This decoder reads the next bytes and checks that they match the provided constant.\n * If the bytes differ, it throws an error.\n *\n * For more details, see {@link getConstantCodec}.\n *\n * @typeParam TConstant - The fixed byte sequence expected during decoding.\n *\n * @param constant - The predefined byte array to verify.\n * @returns A `FixedSizeDecoder` where `N` is the length of the constant.\n *\n * @example\n * Decoding a constant magic number.\n * ```ts\n * const decoder = getConstantDecoder(new Uint8Array([1, 2, 3]));\n *\n * decoder.decode(new Uint8Array([1, 2, 3])); // Passes\n * decoder.decode(new Uint8Array([1, 2, 4])); // Throws an error\n * ```\n *\n * @see {@link getConstantCodec}\n */\nexport function getConstantDecoder(\n constant: TConstant,\n): FixedSizeDecoder {\n return createDecoder({\n fixedSize: constant.length,\n read: (bytes, offset) => {\n const base16 = getBase16Decoder();\n if (!containsBytes(bytes, constant, offset)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_CONSTANT, {\n constant,\n data: bytes,\n hexConstant: base16.decode(constant),\n hexData: base16.decode(bytes),\n offset,\n });\n }\n return [undefined, offset + constant.length];\n },\n });\n}\n\n/**\n * Returns a codec that encodes and decodes a predefined constant byte sequence.\n *\n * - **Encoding:** Always writes the specified byte array.\n * - **Decoding:** Asserts that the next bytes match the constant, throwing an error if they do not.\n *\n * This is useful for encoding fixed byte patterns required in a binary format or to use in\n * conjunction with other codecs such as {@link getHiddenPrefixCodec} or {@link getHiddenSuffixCodec}.\n *\n * @typeParam TConstant - The fixed byte sequence to encode and verify during decoding.\n *\n * @param constant - The predefined byte array to encode and assert during decoding.\n * @returns A `FixedSizeCodec` where `N` is the length of the constant.\n *\n * @example\n * Encoding and decoding a constant magic number.\n * ```ts\n * const codec = getConstantCodec(new Uint8Array([1, 2, 3]));\n *\n * codec.encode(); // 0x010203\n * codec.decode(new Uint8Array([1, 2, 3])); // Passes\n * codec.decode(new Uint8Array([1, 2, 4])); // Throws an error\n * ```\n *\n * @remarks\n * Separate {@link getConstantEncoder} and {@link getConstantDecoder} functions are available.\n *\n * ```ts\n * const bytes = getConstantEncoder(new Uint8Array([1, 2, 3])).encode();\n * getConstantDecoder(new Uint8Array([1, 2, 3])).decode(bytes);\n * ```\n *\n * @see {@link getConstantEncoder}\n * @see {@link getConstantDecoder}\n */\nexport function getConstantCodec(\n constant: TConstant,\n): FixedSizeCodec {\n return combineCodec(getConstantEncoder(constant), getConstantDecoder(constant));\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\n/**\n * Infers the TypeScript type for a tuple that can be encoded using a tuple codec.\n *\n * This type maps each provided item encoder to its corresponding value type.\n *\n * @typeParam TItems - An array of encoders, each corresponding to a tuple element.\n */\ntype GetEncoderTypeFromItems[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Encoder ? TFrom : never;\n}>;\n\n/**\n * Infers the TypeScript type for a tuple that can be decoded using a tuple codec.\n *\n * This type maps each provided item decoder to its corresponding value type.\n *\n * @typeParam TItems - An array of decoders, each corresponding to a tuple element.\n */\ntype GetDecoderTypeFromItems[]> = DrainOuterGeneric<{\n [I in keyof TItems]: TItems[I] extends Decoder ? TTo : never;\n}>;\n\n/**\n * Returns an encoder for tuples.\n *\n * This encoder serializes a fixed-size array (tuple) by encoding its items\n * sequentially using the provided item encoders.\n *\n * For more details, see {@link getTupleCodec}.\n *\n * @typeParam TItems - An array of encoders, each corresponding to a tuple element.\n *\n * @param items - The encoders for each item in the tuple.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding tuples.\n *\n * @example\n * Encoding a tuple with 2 items.\n * ```ts\n * const encoder = getTupleEncoder([fixCodecSize(getUtf8Encoder(), 5), getU8Encoder()]);\n *\n * const bytes = encoder.encode(['Alice', 42]);\n * // 0x416c6963652a\n * // | └── Second item (42)\n * // └── First item (\"Alice\")\n * ```\n *\n * @see {@link getTupleCodec}\n */\nexport function getTupleEncoder[]>(\n items: TItems,\n): FixedSizeEncoder>;\nexport function getTupleEncoder[]>(\n items: TItems,\n): VariableSizeEncoder>;\nexport function getTupleEncoder[]>(\n items: TItems,\n): Encoder> {\n type TFrom = GetEncoderTypeFromItems;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n items.map((item, index) => getEncodedSize(value[index], item)).reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (value: TFrom, bytes, offset) => {\n assertValidNumberOfItemsForCodec('tuple', items.length, value.length);\n items.forEach((item, index) => {\n offset = item.write(value[index], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Returns a decoder for tuples.\n *\n * This decoder deserializes a fixed-size array (tuple) by decoding its items\n * sequentially using the provided item decoders.\n *\n * For more details, see {@link getTupleCodec}.\n *\n * @typeParam TItems - An array of decoders, each corresponding to a tuple element.\n *\n * @param items - The decoders for each item in the tuple.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding tuples.\n *\n * @example\n * Decoding a tuple with 2 items.\n * ```ts\n * const decoder = getTupleDecoder([fixCodecSize(getUtf8Decoder(), 5), getU8Decoder()]);\n *\n * const tuple = decoder.decode(new Uint8Array([\n * 0x41,0x6c,0x69,0x63,0x65,0x2a\n * ]));\n * // ['Alice', 42]\n * ```\n *\n * @see {@link getTupleCodec}\n */\nexport function getTupleDecoder[]>(\n items: TItems,\n): FixedSizeDecoder>;\nexport function getTupleDecoder[]>(\n items: TItems,\n): VariableSizeDecoder>;\nexport function getTupleDecoder[]>(\n items: TItems,\n): Decoder> {\n type TTo = GetDecoderTypeFromItems;\n const fixedSize = sumCodecSizes(items.map(getFixedSize));\n const maxSize = sumCodecSizes(items.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const values = [] as Array & TTo;\n items.forEach(item => {\n const [newValue, newOffset] = item.read(bytes, offset);\n values.push(newValue);\n offset = newOffset;\n });\n return [values, offset];\n },\n });\n}\n\n/**\n * Returns a codec for encoding and decoding tuples.\n *\n * This codec serializes tuples by encoding and decoding each item sequentially.\n *\n * Unlike the {@link getArrayCodec} codec, each item in the tuple has its own codec\n * and, therefore, can be of a different type.\n *\n * @typeParam TItems - An array of codecs, each corresponding to a tuple element.\n *\n * @param items - The codecs for each item in the tuple.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding tuples.\n *\n * @example\n * Encoding and decoding a tuple with 2 items.\n * ```ts\n * const codec = getTupleCodec([fixCodecSize(getUtf8Codec(), 5), getU8Codec()]);\n *\n * const bytes = codec.encode(['Alice', 42]);\n * // 0x416c6963652a\n * // | └── Second item (42)\n * // └── First item (\"Alice\")\n *\n * const tuple = codec.decode(bytes);\n * // ['Alice', 42]\n * ```\n *\n * @remarks\n * Separate {@link getTupleEncoder} and {@link getTupleDecoder} functions are available.\n *\n * ```ts\n * const bytes = getTupleEncoder([fixCodecSize(getUtf8Encoder(), 5), getU8Encoder()])\n * .encode(['Alice', 42]);\n *\n * const tuple = getTupleDecoder([fixCodecSize(getUtf8Decoder(), 5), getU8Decoder()])\n * .decode(bytes);\n * ```\n *\n * @see {@link getTupleEncoder}\n * @see {@link getTupleDecoder}\n */\nexport function getTupleCodec[]>(\n items: TItems,\n): FixedSizeCodec, GetDecoderTypeFromItems & GetEncoderTypeFromItems>;\nexport function getTupleCodec[]>(\n items: TItems,\n): VariableSizeCodec<\n GetEncoderTypeFromItems,\n GetDecoderTypeFromItems & GetEncoderTypeFromItems\n>;\nexport function getTupleCodec[]>(\n items: TItems,\n): Codec, GetDecoderTypeFromItems & GetEncoderTypeFromItems> {\n return combineCodec(\n getTupleEncoder(items),\n getTupleDecoder(items) as Decoder & GetEncoderTypeFromItems>,\n );\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n getEncodedSize,\n isFixedSize,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { DrainOuterGeneric, getMaxSize, maxCodecSizes } from './utils';\n\n/**\n * Infers the TypeScript type for values that can be encoded using a union codec.\n *\n * This type maps the provided variant encoders to their corresponding value types.\n *\n * @typeParam TVariants - An array of encoders, each corresponding to a union variant.\n */\ntype GetEncoderTypeFromVariants[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Encoder ? TFrom : never;\n}>[number];\n\n/**\n * Infers the TypeScript type for values that can be decoded using a union codec.\n *\n * This type maps the provided variant decoders to their corresponding value types.\n *\n * @typeParam TVariants - An array of decoders, each corresponding to a union variant.\n */\ntype GetDecoderTypeFromVariants[]> = DrainOuterGeneric<{\n [I in keyof TVariants]: TVariants[I] extends Decoder ? TFrom : never;\n}>[number];\n\n/**\n * Returns an encoder for union types.\n *\n * This encoder serializes values by selecting the correct variant encoder\n * based on the `getIndexFromValue` function.\n *\n * Unlike other codecs, this encoder does not store the variant index.\n * It is the user's responsibility to manage discriminators separately.\n *\n * For more details, see {@link getUnionCodec}.\n *\n * @typeParam TVariants - An array of encoders, each corresponding to a union variant.\n *\n * @param variants - The encoders for each variant of the union.\n * @param getIndexFromValue - A function that determines the variant index from the provided value.\n * @returns An `Encoder` for encoding union values.\n *\n * @example\n * Encoding a union of numbers and booleans.\n * ```ts\n * const encoder = getUnionEncoder(\n * [getU16Encoder(), getBooleanEncoder()],\n * value => (typeof value === 'number' ? 0 : 1)\n * );\n *\n * encoder.encode(42);\n * // 0x2a00\n * // └── Encoded number (42) as `u16`\n *\n * encoder.encode(true);\n * // 0x01\n * // └── Encoded boolean (`true`) as `u8`\n * ```\n *\n * @see {@link getUnionCodec}\n */\nexport function getUnionEncoder[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants) => number,\n): Encoder> {\n type TFrom = GetEncoderTypeFromVariants;\n const fixedSize = getUnionFixedSize(variants);\n const write: Encoder['write'] = (variant, bytes, offset) => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return variants[index].write(variant, bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createEncoder({ fixedSize, write });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createEncoder({\n ...(maxSize !== null ? { maxSize } : {}),\n getSizeFromValue: variant => {\n const index = getIndexFromValue(variant);\n assertValidVariantIndex(variants, index);\n return getEncodedSize(variant, variants[index]);\n },\n write,\n });\n}\n\n/**\n * Returns a decoder for union types.\n *\n * This decoder deserializes values by selecting the correct variant decoder\n * based on the `getIndexFromBytes` function.\n *\n * Unlike other codecs, this decoder does not assume a stored discriminator.\n * It is the user's responsibility to manage discriminators separately.\n *\n * For more details, see {@link getUnionCodec}.\n *\n * @typeParam TVariants - An array of decoders, each corresponding to a union variant.\n *\n * @param variants - The decoders for each variant of the union.\n * @param getIndexFromBytes - A function that determines the variant index from the byte array.\n * @returns A `Decoder` for decoding union values.\n *\n * @example\n * Decoding a union of numbers and booleans.\n * ```ts\n * const decoder = getUnionDecoder(\n * [getU16Decoder(), getBooleanDecoder()],\n * (bytes, offset) => (bytes.length - offset > 1 ? 0 : 1)\n * );\n *\n * decoder.decode(new Uint8Array([0x2a, 0x00])); // 42\n * decoder.decode(new Uint8Array([0x01])); // true\n * // Type is inferred as `number | boolean`\n * ```\n *\n * @see {@link getUnionCodec}\n */\nexport function getUnionDecoder[]>(\n variants: TVariants,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Decoder> {\n type TTo = GetDecoderTypeFromVariants;\n const fixedSize = getUnionFixedSize(variants);\n const read: Decoder['read'] = (bytes, offset) => {\n const index = getIndexFromBytes(bytes, offset);\n assertValidVariantIndex(variants, index);\n return variants[index].read(bytes, offset);\n };\n\n if (fixedSize !== null) {\n return createDecoder({ fixedSize, read });\n }\n\n const maxSize = getUnionMaxSize(variants);\n return createDecoder({ ...(maxSize !== null ? { maxSize } : {}), read });\n}\n\n/**\n * Returns a codec for encoding and decoding union types.\n *\n * This codec serializes and deserializes union values by selecting the correct variant\n * based on the provided index functions.\n *\n * Unlike the {@link getDiscriminatedUnionCodec}, this codec does not assume a stored\n * discriminator and must be used with an explicit mechanism for managing discriminators.\n *\n * @typeParam TVariants - An array of codecs, each corresponding to a union variant.\n *\n * @param variants - The codecs for each variant of the union.\n * @param getIndexFromValue - A function that determines the variant index from the provided value.\n * @param getIndexFromBytes - A function that determines the variant index from the byte array.\n * @returns A `Codec` for encoding and decoding union values.\n *\n * @example\n * Encoding and decoding a union of numbers and booleans.\n * ```ts\n * const codec = getUnionCodec(\n * [getU16Codec(), getBooleanCodec()],\n * value => (typeof value === 'number' ? 0 : 1),\n * (bytes, offset) => (bytes.length - offset > 1 ? 0 : 1)\n * );\n *\n * const bytes1 = codec.encode(42); // 0x2a00\n * const value1: number | boolean = codec.decode(bytes1); // 42\n *\n * const bytes2 = codec.encode(true); // 0x01\n * const value2: number | boolean = codec.decode(bytes2); // true\n * ```\n *\n * @remarks\n * If you need a codec that includes a stored discriminator,\n * consider using {@link getDiscriminatedUnionCodec}.\n *\n * Separate {@link getUnionEncoder} and {@link getUnionDecoder} functions are also available.\n *\n * ```ts\n * const bytes = getUnionEncoder(variantEncoders, getIndexFromValue).encode(42);\n * const value = getUnionDecoder(variantDecoders, getIndexFromBytes).decode(bytes);\n * ```\n *\n * @see {@link getUnionEncoder}\n * @see {@link getUnionDecoder}\n * @see {@link getDiscriminatedUnionCodec}\n */\nexport function getUnionCodec[]>(\n variants: TVariants,\n getIndexFromValue: (value: GetEncoderTypeFromVariants) => number,\n getIndexFromBytes: (bytes: ReadonlyUint8Array, offset: Offset) => number,\n): Codec<\n GetEncoderTypeFromVariants,\n GetDecoderTypeFromVariants & GetEncoderTypeFromVariants\n> {\n return combineCodec(\n getUnionEncoder(variants, getIndexFromValue),\n getUnionDecoder(variants, getIndexFromBytes) as Decoder<\n GetDecoderTypeFromVariants & GetEncoderTypeFromVariants\n >,\n );\n}\n\nfunction assertValidVariantIndex(variants: readonly unknown[], index: number) {\n if (typeof variants[index] === 'undefined') {\n throw new SolanaError(SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE, {\n maxRange: variants.length - 1,\n minRange: 0,\n variant: index,\n });\n }\n}\n\nfunction getUnionFixedSize | Encoder)[]>(variants: TVariants) {\n if (variants.length === 0) return 0;\n if (!isFixedSize(variants[0])) return null;\n const variantSize = variants[0].fixedSize;\n const sameSizedVariants = variants.every(variant => isFixedSize(variant) && variant.fixedSize === variantSize);\n return sameSizedVariants ? variantSize : null;\n}\n\nfunction getUnionMaxSize | Encoder)[]>(variants: TVariants) {\n return maxCodecSizes(variants.map(variant => getMaxSize(variant)));\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Codec, combineCodec, Decoder, Encoder, transformDecoder, transformEncoder } from '@solana/codecs-core';\nimport { getU8Decoder, getU8Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, SolanaError } from '@solana/errors';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { DrainOuterGeneric } from './utils';\n\n/**\n * Represents a discriminated union using a specific discriminator property.\n *\n * A discriminated union is a TypeScript-friendly way to represent Rust-like enums.\n * Each variant in the union is distinguished by a shared discriminator property.\n *\n * @typeParam TDiscriminatorProperty - The name of the discriminator property.\n * @typeParam TDiscriminatorValue - The type of the discriminator value.\n *\n * @example\n * ```ts\n * type Message =\n * | { __kind: 'Quit' } // Empty variant\n * | { __kind: 'Write'; fields: [string] } // Tuple variant\n * | { __kind: 'Move'; x: number; y: number }; // Struct variant\n * ```\n */\nexport type DiscriminatedUnion<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorValue extends string = string,\n> = {\n [P in TDiscriminatorProperty]: TDiscriminatorValue;\n};\n\n/**\n * Extracts a variant from a discriminated union based on its discriminator value.\n *\n * @typeParam TUnion - The discriminated union type.\n * @typeParam TDiscriminatorProperty - The property used as the discriminator.\n * @typeParam TDiscriminatorValue - The specific variant to extract.\n *\n * @example\n * ```ts\n * type Message =\n * | { __kind: 'Quit' }\n * | { __kind: 'Write'; fields: [string] }\n * | { __kind: 'Move'; x: number; y: number };\n *\n * type ClickEvent = GetDiscriminatedUnionVariant;\n * // -> { __kind: 'Move'; x: number; y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariant<\n TUnion extends DiscriminatedUnion,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Extract>;\n\n/**\n * Extracts a variant from a discriminated union without its discriminator property.\n *\n * @typeParam TUnion - The discriminated union type.\n * @typeParam TDiscriminatorProperty - The property used as the discriminator.\n * @typeParam TDiscriminatorValue - The specific variant to extract.\n *\n * @example\n * ```ts\n * type Message =\n * | { __kind: 'Quit' }\n * | { __kind: 'Write'; fields: [string] }\n * | { __kind: 'Move'; x: number; y: number };\n *\n * type MoveContent = GetDiscriminatedUnionVariantContent;\n * // -> { x: number; y: number }\n * ```\n */\nexport type GetDiscriminatedUnionVariantContent<\n TUnion extends DiscriminatedUnion,\n TDiscriminatorProperty extends string,\n TDiscriminatorValue extends TUnion[TDiscriminatorProperty],\n> = Omit, TDiscriminatorProperty>;\n\n/**\n * Defines the configuration for discriminated union codecs.\n *\n * This configuration controls how the discriminator is stored and named.\n *\n * @typeParam TDiscriminatorProperty - The property name of the discriminator.\n * @typeParam TDiscriminatorSize - The codec used for the discriminator prefix.\n */\nexport type DiscriminatedUnionCodecConfig<\n TDiscriminatorProperty extends string = '__kind',\n TDiscriminatorSize = NumberCodec | NumberDecoder | NumberEncoder,\n> = {\n /**\n * The property name of the discriminator.\n * @defaultValue `__kind`\n */\n discriminator?: TDiscriminatorProperty;\n /**\n * The codec used to encode/decode the discriminator prefix.\n * @defaultValue `u8` prefix\n */\n size?: TDiscriminatorSize;\n};\n\ntype DiscriminatorValue = bigint | boolean | number | string | null | undefined;\ntype Variants = readonly (readonly [DiscriminatorValue, T])[];\ntype ArrayIndices = Exclude['length'], T['length']> & number;\n\ntype GetEncoderTypeFromVariants<\n TVariants extends Variants>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices]: (TVariants[I][1] extends Encoder\n ? TFrom extends object\n ? TFrom\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices];\n\ntype GetDecoderTypeFromVariants<\n TVariants extends Variants>,\n TDiscriminatorProperty extends string,\n> = DrainOuterGeneric<{\n [I in ArrayIndices]: (TVariants[I][1] extends Decoder\n ? TTo extends object\n ? TTo\n : object\n : never) & { [P in TDiscriminatorProperty]: TVariants[I][0] };\n}>[ArrayIndices];\n\n/**\n * Returns an encoder for discriminated unions.\n *\n * This encoder serializes objects that follow the discriminated union pattern\n * by prefixing them with a numerical discriminator that represents their variant.\n *\n * Unlike {@link getUnionEncoder}, this encoder automatically extracts and processes\n * the discriminator property (default: `__kind`) from each variant.\n *\n * For more details, see {@link getDiscriminatedUnionCodec}.\n *\n * @typeParam TVariants - The variants of the discriminated union.\n * @typeParam TDiscriminatorProperty - The property used as the discriminator.\n *\n * @param variants - The variant encoders as `[discriminator, encoder]` pairs.\n * @param config - Configuration options for encoding.\n * @returns An `Encoder` for encoding discriminated union objects.\n *\n * @example\n * Encoding a discriminated union.\n * ```ts\n * type Message =\n * | { __kind: 'Quit' } // Empty variant.\n * | { __kind: 'Write'; fields: [string] } // Tuple variant.\n * | { __kind: 'Move'; x: number; y: number }; // Struct variant.\n *\n * const messageEncoder = getDiscriminatedUnionEncoder([\n * ['Quit', getUnitEncoder()],\n * ['Write', getStructEncoder([['fields', getTupleEncoder([addCodecSizePrefix(getUtf8Encoder(), getU32Encoder())])]])],\n * ['Move', getStructEncoder([['x', getI32Encoder()], ['y', getI32Encoder()]])]\n * ]);\n *\n * messageEncoder.encode({ __kind: 'Move', x: 5, y: 6 });\n * // 0x020500000006000000\n * // | | └── Field y (6)\n * // | └── Field x (5)\n * // └── 1-byte discriminator (Index 2 — the \"Move\" variant)\n * ```\n *\n * @see {@link getDiscriminatedUnionCodec}\n */\nexport function getDiscriminatedUnionEncoder<\n const TVariants extends Variants>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig = {},\n): Encoder> {\n type TFrom = GetEncoderTypeFromVariants;\n const discriminatorProperty = (config.discriminator ?? '__kind') as TDiscriminatorProperty;\n const prefix = config.size ?? getU8Encoder();\n return getUnionEncoder(\n variants.map(([, variant], index) =>\n transformEncoder(getTupleEncoder([prefix, variant]), (value: TFrom): [number, TFrom] => [index, value]),\n ),\n value => getVariantDiscriminator(variants, value[discriminatorProperty]),\n );\n}\n\n/**\n * Returns a decoder for discriminated unions.\n *\n * This decoder deserializes objects that follow the discriminated union pattern\n * by **reading a numerical discriminator** and mapping it to the corresponding variant.\n *\n * Unlike {@link getUnionDecoder}, this decoder automatically inserts the discriminator\n * property (default: `__kind`) into the decoded object.\n *\n * For more details, see {@link getDiscriminatedUnionCodec}.\n *\n * @typeParam TVariants - The variants of the discriminated union.\n * @typeParam TDiscriminatorProperty - The property used as the discriminator.\n *\n * @param variants - The variant decoders as `[discriminator, decoder]` pairs.\n * @param config - Configuration options for decoding.\n * @returns A `Decoder` for decoding discriminated union objects.\n *\n * @example\n * Decoding a discriminated union.\n * ```ts\n * type Message =\n * | { __kind: 'Quit' } // Empty variant.\n * | { __kind: 'Write'; fields: [string] } // Tuple variant.\n * | { __kind: 'Move'; x: number; y: number }; // Struct variant.\n *\n * const messageDecoder = getDiscriminatedUnionDecoder([\n * ['Quit', getUnitDecoder()],\n * ['Write', getStructDecoder([['fields', getTupleDecoder([addCodecSizePrefix(getUtf8Decoder(), getU32Decoder())])]])],\n * ['Move', getStructDecoder([['x', getI32Decoder()], ['y', getI32Decoder()]])]\n * ]);\n *\n * messageDecoder.decode(new Uint8Array([0x02,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00]));\n * // { __kind: 'Move', x: 5, y: 6 }\n * ```\n *\n * @see {@link getDiscriminatedUnionCodec}\n */\nexport function getDiscriminatedUnionDecoder<\n const TVariants extends Variants>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig = {},\n): Decoder> {\n const discriminatorProperty = config.discriminator ?? '__kind';\n const prefix = config.size ?? getU8Decoder();\n return getUnionDecoder(\n variants.map(([discriminator, variant]) =>\n transformDecoder(getTupleDecoder([prefix, variant]), ([, value]) => ({\n [discriminatorProperty]: discriminator,\n ...value,\n })),\n ),\n (bytes, offset) => Number(prefix.read(bytes, offset)[0]),\n );\n}\n\n/**\n * Returns a codec for encoding and decoding {@link DiscriminatedUnion}.\n *\n * A {@link DiscriminatedUnion} is a TypeScript representation of Rust-like enums, where\n * each variant is distinguished by a discriminator field (default: `__kind`).\n *\n * This codec inserts a numerical prefix to represent the variant index.\n *\n * @typeParam TVariants - The variants of the discriminated union.\n * @typeParam TDiscriminatorProperty - The property used as the discriminator.\n *\n * @param variants - The variant codecs as `[discriminator, codec]` pairs.\n * @param config - Configuration options for encoding/decoding.\n * @returns A `Codec` for encoding and decoding discriminated union objects.\n *\n * @example\n * Encoding and decoding a discriminated union.\n * ```ts\n * type Message =\n * | { __kind: 'Quit' } // Empty variant.\n * | { __kind: 'Write'; fields: [string] } // Tuple variant.\n * | { __kind: 'Move'; x: number; y: number }; // Struct variant.\n *\n * const messageCodec = getDiscriminatedUnionCodec([\n * ['Quit', getUnitCodec()],\n * ['Write', getStructCodec([['fields', getTupleCodec([addCodecSizePrefix(getUtf8Codec(), getU32Codec())])]])],\n * ['Move', getStructCodec([['x', getI32Codec()], ['y', getI32Codec()]])]\n * ]);\n *\n * messageCodec.encode({ __kind: 'Move', x: 5, y: 6 });\n * // 0x020500000006000000\n * // | | └── Field y (6)\n * // | └── Field x (5)\n * // └── 1-byte discriminator (Index 2 — the \"Move\" variant)\n *\n * const value = messageCodec.decode(bytes);\n * // { __kind: 'Move', x: 5, y: 6 }\n * ```\n *\n * @example\n * Using a `u32` discriminator instead of `u8`.\n * ```ts\n * const codec = getDiscriminatedUnionCodec([...], { size: getU32Codec() });\n *\n * codec.encode({ __kind: 'Quit' });\n * // 0x00000000\n * // └------┘ 4-byte discriminator (Index 0)\n *\n * codec.decode(new Uint8Array([0x00, 0x00, 0x00, 0x00]));\n * // { __kind: 'Quit' }\n * ```\n *\n * @example\n * Customizing the discriminator property.\n * ```ts\n * const codec = getDiscriminatedUnionCodec([...], { discriminator: 'message' });\n *\n * codec.encode({ message: 'Quit' }); // 0x00\n * codec.decode(new Uint8Array([0x00])); // { message: 'Quit' }\n * ```\n *\n * @remarks\n * Separate `getDiscriminatedUnionEncoder` and `getDiscriminatedUnionDecoder` functions are available.\n *\n * ```ts\n * const bytes = getDiscriminatedUnionEncoder(variantEncoders).encode({ __kind: 'Quit' });\n * const message = getDiscriminatedUnionDecoder(variantDecoders).decode(bytes);\n * ```\n *\n * @see {@link getDiscriminatedUnionEncoder}\n * @see {@link getDiscriminatedUnionDecoder}\n */\nexport function getDiscriminatedUnionCodec<\n const TVariants extends Variants>,\n const TDiscriminatorProperty extends string = '__kind',\n>(\n variants: TVariants,\n config: DiscriminatedUnionCodecConfig = {},\n): Codec<\n GetEncoderTypeFromVariants,\n GetDecoderTypeFromVariants &\n GetEncoderTypeFromVariants\n> {\n return combineCodec(\n getDiscriminatedUnionEncoder(variants, config),\n getDiscriminatedUnionDecoder(variants, config) as Decoder<\n GetDecoderTypeFromVariants &\n GetEncoderTypeFromVariants\n >,\n );\n}\n\nfunction getVariantDiscriminator | Encoder>>(\n variants: TVariants,\n discriminatorValue: DiscriminatorValue,\n) {\n const discriminator = variants.findIndex(([key]) => discriminatorValue === key);\n if (discriminator < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT, {\n value: discriminatorValue,\n variants: variants.map(([key]) => key),\n });\n }\n return discriminator;\n}\n\n/** @deprecated Use `getDiscriminatedUnionEncoder` instead. */\nexport const getDataEnumEncoder = getDiscriminatedUnionEncoder;\n\n/** @deprecated Use `getDiscriminatedUnionDecoder` instead. */\nexport const getDataEnumDecoder = getDiscriminatedUnionDecoder;\n\n/** @deprecated Use `getDiscriminatedUnionCodec` instead. */\nexport const getDataEnumCodec = getDiscriminatedUnionCodec;\n", "/**\n * Defines the \"lookup object\" of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * ```\n */\nexport type EnumLookupObject = { [key: string]: number | string };\n\n/**\n * Returns the allowed input for an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionInput = GetEnumFrom; // \"Left\" | \"Right\" | 0 | 1\n * ```\n */\nexport type GetEnumFrom = TEnum[keyof TEnum] | keyof TEnum;\n\n/**\n * Returns all the available variants of an enum.\n *\n * @example\n * ```ts\n * enum Direction { Left, Right };\n * type DirectionOutput = GetEnumTo; // 0 | 1\n * ```\n */\nexport type GetEnumTo = TEnum[keyof TEnum];\n\nexport function getEnumStats(constructor: EnumLookupObject) {\n const numericalValues = [...new Set(Object.values(constructor).filter(v => typeof v === 'number'))].sort();\n const enumRecord = Object.fromEntries(Object.entries(constructor).slice(numericalValues.length)) as Record<\n string,\n number | string\n >;\n const enumKeys = Object.keys(enumRecord);\n const enumValues = Object.values(enumRecord);\n const stringValues: string[] = [\n ...new Set([...enumKeys, ...enumValues.filter((v): v is string => typeof v === 'string')]),\n ];\n\n return { enumKeys, enumRecord, enumValues, numericalValues, stringValues };\n}\n\nexport function getEnumIndexFromVariant({\n enumKeys,\n enumValues,\n variant,\n}: {\n enumKeys: string[];\n enumValues: (number | string)[];\n variant: number | string | symbol;\n}): number {\n const valueIndex = findLastIndex(enumValues, value => value === variant);\n if (valueIndex >= 0) return valueIndex;\n return enumKeys.findIndex(key => key === variant);\n}\n\nexport function getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n}: {\n discriminator: number;\n enumKeys: string[];\n enumValues: (number | string)[];\n useValuesAsDiscriminators: boolean;\n}): number {\n if (!useValuesAsDiscriminators) {\n return discriminator >= 0 && discriminator < enumKeys.length ? discriminator : -1;\n }\n return findLastIndex(enumValues, value => value === discriminator);\n}\n\nfunction findLastIndex(array: Array, predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n while (l--) {\n if (predicate(array[l], l, array)) return l;\n }\n return -1;\n}\n\nexport function formatNumericalValues(values: number[]): string {\n if (values.length === 0) return '';\n let range: [number, number] = [values[0], values[0]];\n const ranges: string[] = [];\n for (let index = 1; index < values.length; index++) {\n const value = values[index];\n if (range[1] + 1 === value) {\n range[1] = value;\n } else {\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n range = [value, value];\n }\n }\n ranges.push(range[0] === range[1] ? `${range[0]}` : `${range[0]}-${range[1]}`);\n return ranges.join(', ');\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\nimport {\n SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS,\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT,\n SolanaError,\n} from '@solana/errors';\n\nimport {\n EnumLookupObject,\n formatNumericalValues,\n GetEnumFrom,\n getEnumIndexFromDiscriminator,\n getEnumIndexFromVariant,\n getEnumStats,\n GetEnumTo,\n} from './enum-helpers';\n\n/**\n * Defines the configuration options for enum codecs.\n *\n * The `size` option determines the numerical encoding used for the enum's discriminant.\n * By default, enums are stored as a `u8` (1 byte).\n *\n * The `useValuesAsDiscriminators` option allows mapping the actual enum values\n * as discriminators instead of using their positional index.\n *\n * @typeParam TDiscriminator - A number codec, encoder, or decoder used for the discriminant.\n */\nexport type EnumCodecConfig = {\n /**\n * The codec used to encode/decode the enum discriminator.\n * @defaultValue `u8` discriminator.\n */\n size?: TDiscriminator;\n\n /**\n * If set to `true`, the enum values themselves will be used as discriminators.\n * This is only valid for numerical enum values.\n *\n * @defaultValue `false`\n */\n useValuesAsDiscriminators?: boolean;\n};\n\n/**\n * Returns an encoder for enums.\n *\n * This encoder serializes enums as a numerical discriminator.\n * By default, the discriminator is based on the positional index of the enum variants.\n *\n * For more details, see {@link getEnumCodec}.\n *\n * @typeParam TEnum - The TypeScript enum or object mapping enum keys to values.\n *\n * @param constructor - The constructor of the enum.\n * @param config - Configuration options for encoding the enum.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding enums.\n *\n * @example\n * Encoding enum values.\n * ```ts\n * enum Direction { Up, Down, Left, Right }\n * const encoder = getEnumEncoder(Direction);\n *\n * encoder.encode(Direction.Up); // 0x00\n * encoder.encode(Direction.Down); // 0x01\n * encoder.encode(Direction.Left); // 0x02\n * encoder.encode(Direction.Right); // 0x03\n * ```\n *\n * @see {@link getEnumCodec}\n */\nexport function getEnumEncoder(\n constructor: TEnum,\n config?: Omit, 'size'>,\n): FixedSizeEncoder, 1>;\nexport function getEnumEncoder(\n constructor: TEnum,\n config: EnumCodecConfig & { size: FixedSizeNumberEncoder },\n): FixedSizeEncoder, TSize>;\nexport function getEnumEncoder(\n constructor: TEnum,\n config?: EnumCodecConfig,\n): VariableSizeEncoder>;\nexport function getEnumEncoder(\n constructor: TEnum,\n config: EnumCodecConfig = {},\n): Encoder> {\n const prefix = config.size ?? getU8Encoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues, stringValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformEncoder(prefix, (variant: GetEnumFrom): number => {\n const index = getEnumIndexFromVariant({ enumKeys, enumValues, variant });\n if (index < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT, {\n formattedNumericalValues: formatNumericalValues(numericalValues),\n numericalValues,\n stringValues,\n variant,\n });\n }\n return useValuesAsDiscriminators ? (enumValues[index] as number) : index;\n });\n}\n\n/**\n * Returns a decoder for enums.\n *\n * This decoder deserializes enums from a numerical discriminator.\n * By default, the discriminator is based on the positional index of the enum variants.\n *\n * For more details, see {@link getEnumCodec}.\n *\n * @typeParam TEnum - The TypeScript enum or object mapping enum keys to values.\n *\n * @param constructor - The constructor of the enum.\n * @param config - Configuration options for decoding the enum.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding enums.\n *\n * @example\n * Decoding enum values.\n * ```ts\n * enum Direction { Up, Down, Left, Right }\n * const decoder = getEnumDecoder(Direction);\n *\n * decoder.decode(new Uint8Array([0x00])); // Direction.Up\n * decoder.decode(new Uint8Array([0x01])); // Direction.Down\n * decoder.decode(new Uint8Array([0x02])); // Direction.Left\n * decoder.decode(new Uint8Array([0x03])); // Direction.Right\n * ```\n *\n * @see {@link getEnumCodec}\n */\nexport function getEnumDecoder(\n constructor: TEnum,\n config?: Omit, 'size'>,\n): FixedSizeDecoder, 1>;\nexport function getEnumDecoder(\n constructor: TEnum,\n config: EnumCodecConfig & { size: FixedSizeNumberDecoder },\n): FixedSizeDecoder, TSize>;\nexport function getEnumDecoder(\n constructor: TEnum,\n config?: EnumCodecConfig,\n): VariableSizeDecoder>;\nexport function getEnumDecoder(\n constructor: TEnum,\n config: EnumCodecConfig = {},\n): Decoder> {\n const prefix = config.size ?? getU8Decoder();\n const useValuesAsDiscriminators = config.useValuesAsDiscriminators ?? false;\n const { enumKeys, enumValues, numericalValues } = getEnumStats(constructor);\n if (useValuesAsDiscriminators && enumValues.some(value => typeof value === 'string')) {\n throw new SolanaError(SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS, {\n stringValues: enumValues.filter((v): v is string => typeof v === 'string'),\n });\n }\n return transformDecoder(prefix, (value: bigint | number): GetEnumTo => {\n const discriminator = Number(value);\n const index = getEnumIndexFromDiscriminator({\n discriminator,\n enumKeys,\n enumValues,\n useValuesAsDiscriminators,\n });\n if (index < 0) {\n const validDiscriminators = useValuesAsDiscriminators\n ? numericalValues\n : [...Array(enumKeys.length).keys()];\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n discriminator,\n formattedValidDiscriminators: formatNumericalValues(validDiscriminators),\n validDiscriminators,\n });\n }\n return enumValues[index] as GetEnumTo;\n });\n}\n\n/**\n * Returns a codec for encoding and decoding enums.\n *\n * This codec serializes enums as a numerical discriminator, allowing them\n * to be efficiently stored and reconstructed from binary data.\n *\n * By default, the discriminator is derived from the positional index\n * of the enum variant, but it can be configured to use the enum's numeric values instead.\n *\n * @typeParam TEnum - The TypeScript enum or object mapping enum keys to values.\n *\n * @param constructor - The constructor of the enum.\n * @param config - Configuration options for encoding and decoding the enum.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding enums.\n *\n * @example\n * Encoding and decoding enums using positional indexes.\n * ```ts\n * enum Direction { Up, Down, Left, Right }\n * const codec = getEnumCodec(Direction);\n *\n * codec.encode(Direction.Up); // 0x00\n * codec.encode(Direction.Down); // 0x01\n * codec.encode(Direction.Left); // 0x02\n * codec.encode(Direction.Right); // 0x03\n *\n * codec.decode(new Uint8Array([0x00])); // Direction.Up\n * codec.decode(new Uint8Array([0x01])); // Direction.Down\n * codec.decode(new Uint8Array([0x02])); // Direction.Left\n * codec.decode(new Uint8Array([0x03])); // Direction.Right\n * ```\n *\n * @example\n * Encoding and decoding enums using their numeric values.\n * ```ts\n * enum GameDifficulty { Easy = 1, Normal = 4, Hard = 7, Expert = 9 }\n * const codec = getEnumCodec(GameDifficulty, { useValuesAsDiscriminators: true });\n *\n * codec.encode(GameDifficulty.Easy); // 0x01\n * codec.encode(GameDifficulty.Normal); // 0x04\n * codec.encode(GameDifficulty.Hard); // 0x07\n * codec.encode(GameDifficulty.Expert); // 0x09\n *\n * codec.decode(new Uint8Array([0x01])); // GameDifficulty.Easy\n * codec.decode(new Uint8Array([0x04])); // GameDifficulty.Normal\n * codec.decode(new Uint8Array([0x07])); // GameDifficulty.Hard\n * codec.decode(new Uint8Array([0x09])); // GameDifficulty.Expert\n * ```\n *\n * Note that, when using values as discriminators, the enum values must be numerical.\n * Otherwise, an error will be thrown.\n *\n * ```ts\n * enum GameDifficulty { Easy = 'EASY', Normal = 'NORMAL', Hard = 'HARD' }\n * getEnumCodec(GameDifficulty, { useValuesAsDiscriminators: true }); // Throws an error.\n * ```\n *\n * @example\n * Using a custom discriminator size.\n * ```ts\n * enum Status { Pending, Approved, Rejected }\n * const codec = getEnumCodec(Status, { size: getU16Codec() });\n *\n * codec.encode(Status.Pending); // 0x0000\n * codec.encode(Status.Approved); // 0x0100\n * codec.encode(Status.Rejected); // 0x0200\n *\n * codec.decode(new Uint8Array([0x00, 0x00])); // Status.Pending\n * codec.decode(new Uint8Array([0x01, 0x00])); // Status.Approved\n * codec.decode(new Uint8Array([0x02, 0x00])); // Status.Rejected\n * ```\n *\n * @remarks\n * Separate {@link getEnumEncoder} and {@link getEnumDecoder} functions are available.\n *\n * ```ts\n * const bytes = getEnumEncoder(Direction).encode(Direction.Up);\n * const value = getEnumDecoder(Direction).decode(bytes);\n * ```\n *\n * @see {@link getEnumEncoder}\n * @see {@link getEnumDecoder}\n */\nexport function getEnumCodec(\n constructor: TEnum,\n config?: Omit, 'size'>,\n): FixedSizeCodec, GetEnumTo, 1>;\nexport function getEnumCodec(\n constructor: TEnum,\n config: EnumCodecConfig & { size: FixedSizeNumberCodec },\n): FixedSizeCodec, GetEnumTo, TSize>;\nexport function getEnumCodec(\n constructor: TEnum,\n config?: EnumCodecConfig,\n): VariableSizeCodec, GetEnumTo>;\nexport function getEnumCodec(\n constructor: TEnum,\n config: EnumCodecConfig = {},\n): Codec, GetEnumTo> {\n return combineCodec(getEnumEncoder(constructor, config), getEnumDecoder(constructor, config));\n}\n\n/** @deprecated Use `getEnumEncoder` instead. */\nexport const getScalarEnumEncoder = getEnumEncoder;\n\n/** @deprecated Use `getEnumDecoder` instead. */\nexport const getScalarEnumDecoder = getEnumDecoder;\n\n/** @deprecated Use `getEnumCodec` instead. */\nexport const getScalarEnumCodec = getEnumCodec;\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Returns an encoder that prefixes encoded values with hidden data.\n *\n * This encoder applies a list of void encoders before encoding the main value.\n * The prefixed data is encoded before the main value without being exposed to the user.\n *\n * For more details, see {@link getHiddenPrefixCodec}.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n *\n * @param encoder - The encoder for the main value.\n * @param prefixedEncoders - A list of void encoders that produce the hidden prefix.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` that encodes the value with a hidden prefix.\n *\n * @example\n * Prefixing a value with constants.\n * ```ts\n * const encoder = getHiddenPrefixEncoder(getUtf8Encoder(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * encoder.encode('Hello');\n * // 0x01020304050648656c6c6f\n * // | | └-- Our encoded value (\"Hello\").\n * // | └-- Our second hidden prefix.\n * // └-- Our first hidden prefix.\n * ```\n *\n * @see {@link getHiddenPrefixCodec}\n */\nexport function getHiddenPrefixEncoder(\n encoder: FixedSizeEncoder,\n prefixedEncoders: readonly FixedSizeEncoder[],\n): FixedSizeEncoder;\nexport function getHiddenPrefixEncoder(\n encoder: Encoder,\n prefixedEncoders: readonly Encoder[],\n): VariableSizeEncoder;\nexport function getHiddenPrefixEncoder(\n encoder: Encoder,\n prefixedEncoders: readonly Encoder[],\n): Encoder {\n return transformEncoder(\n getTupleEncoder([...prefixedEncoders, encoder]) as Encoder,\n (value: TFrom) => [...prefixedEncoders.map(() => undefined), value] as const,\n );\n}\n\n/**\n * Returns a decoder that skips hidden prefixed data before decoding the main value.\n *\n * This decoder applies a list of void decoders before decoding the main value.\n * The prefixed data is skipped during decoding without being exposed to the user.\n *\n * For more details, see {@link getHiddenPrefixCodec}.\n *\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param decoder - The decoder for the main value.\n * @param prefixedDecoders - A list of void decoders that produce the hidden prefix.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` that decodes values while ignoring the hidden prefix.\n *\n * @example\n * Decoding a value with prefixed constants.\n * ```ts\n * const decoder = getHiddenPrefixDecoder(getUtf8Decoder(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * decoder.decode(new Uint8Array([1, 2, 3, 4, 5, 6, 0x48, 0x65, 0x6C, 0x6C, 0x6F]));\n * // 'Hello'\n * ```\n *\n * @see {@link getHiddenPrefixCodec}\n */\nexport function getHiddenPrefixDecoder(\n decoder: FixedSizeDecoder,\n prefixedDecoders: readonly FixedSizeDecoder[],\n): FixedSizeDecoder;\nexport function getHiddenPrefixDecoder(\n decoder: Decoder,\n prefixedDecoders: readonly Decoder[],\n): VariableSizeDecoder;\nexport function getHiddenPrefixDecoder(\n decoder: Decoder,\n prefixedDecoders: readonly Decoder[],\n): Decoder {\n return transformDecoder(\n getTupleDecoder([...prefixedDecoders, decoder]) as Decoder,\n tuple => tuple[tuple.length - 1] as TTo,\n );\n}\n\n/**\n * Returns a codec that encodes and decodes values with a hidden prefix.\n *\n * - **Encoding:** Prefixes the value with hidden data before encoding.\n * - **Decoding:** Skips the hidden prefix before decoding the main value.\n *\n * This is useful for any implicit metadata that should be present in\n * binary formats but omitted from the API.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param codec - The codec for the main value.\n * @param prefixedCodecs - A list of void codecs that produce the hidden prefix.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding values with a hidden prefix.\n *\n * @example\n * Encoding and decoding a value with prefixed constants.\n * ```ts\n * const codec = getHiddenPrefixCodec(getUtf8Codec(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * const bytes = codec.encode('Hello');\n * // 0x01020304050648656c6c6f\n * // | | └-- Our encoded value (\"Hello\").\n * // | └-- Our second hidden prefix.\n * // └-- Our first hidden prefix.\n *\n * codec.decode(bytes);\n * // 'Hello'\n * ```\n *\n * @remarks\n * If all you need is padding zeroes before a value, consider using {@link padLeftCodec} instead.\n *\n * Separate {@link getHiddenPrefixEncoder} and {@link getHiddenPrefixDecoder} functions are available.\n *\n * ```ts\n * const bytes = getHiddenPrefixEncoder(getUtf8Encoder(), [\n * getConstantEncoder(new Uint8Array([1, 2, 3])),\n * getConstantEncoder(new Uint8Array([4, 5, 6])),\n * ]).encode('Hello');\n *\n * const value = getHiddenPrefixDecoder(getUtf8Decoder(), [\n * getConstantDecoder(new Uint8Array([1, 2, 3])),\n * getConstantDecoder(new Uint8Array([4, 5, 6])),\n * ]).decode(bytes);\n * ```\n *\n * @see {@link getHiddenPrefixEncoder}\n * @see {@link getHiddenPrefixDecoder}\n */\nexport function getHiddenPrefixCodec(\n codec: FixedSizeCodec,\n prefixedCodecs: readonly FixedSizeCodec[],\n): FixedSizeCodec;\nexport function getHiddenPrefixCodec(\n codec: Codec,\n prefixedCodecs: readonly Codec[],\n): VariableSizeCodec;\nexport function getHiddenPrefixCodec(\n codec: Codec,\n prefixedCodecs: readonly Codec[],\n): Codec {\n return combineCodec(getHiddenPrefixEncoder(codec, prefixedCodecs), getHiddenPrefixDecoder(codec, prefixedCodecs));\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Returns an encoder that appends hidden data after the encoded value.\n *\n * This encoder applies a list of void encoders after encoding the main value.\n * The suffixed data is encoded after the main value without being exposed to the user.\n *\n * For more details, see {@link getHiddenSuffixCodec}.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n *\n * @param encoder - The encoder for the main value.\n * @param suffixedEncoders - A list of void encoders that produce the hidden suffix.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` that encodes the value with a hidden suffix.\n *\n * @example\n * Suffixing a value with constants.\n * ```ts\n * const encoder = getHiddenSuffixEncoder(getUtf8Encoder(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * encoder.encode('Hello');\n * // 0x48656c6c6f010203040506\n * // | | └-- Our second hidden suffix.\n * // | └-- Our first hidden suffix.\n * // └-- Our encoded value (\"Hello\").\n * ```\n *\n * @see {@link getHiddenSuffixCodec}\n */\nexport function getHiddenSuffixEncoder(\n encoder: FixedSizeEncoder,\n suffixedEncoders: readonly FixedSizeEncoder[],\n): FixedSizeEncoder;\nexport function getHiddenSuffixEncoder(\n encoder: Encoder,\n suffixedEncoders: readonly Encoder[],\n): VariableSizeEncoder;\nexport function getHiddenSuffixEncoder(\n encoder: Encoder,\n suffixedEncoders: readonly Encoder[],\n): Encoder {\n return transformEncoder(\n getTupleEncoder([encoder, ...suffixedEncoders]) as Encoder,\n (value: TFrom) => [value, ...suffixedEncoders.map(() => undefined)] as const,\n );\n}\n\n/**\n * Returns a decoder that skips hidden suffixed data after decoding the main value.\n *\n * This decoder applies a list of void decoders after decoding the main value.\n * The suffixed data is skipped during decoding without being exposed to the user.\n *\n * For more details, see {@link getHiddenSuffixCodec}.\n *\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param decoder - The decoder for the main value.\n * @param suffixedDecoders - A list of void decoders that produce the hidden suffix.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` that decodes values while ignoring the hidden suffix.\n *\n * @example\n * Decoding a value with suffixed constants.\n * ```ts\n * const decoder = getHiddenSuffixDecoder(getUtf8Decoder(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * decoder.decode(new Uint8Array([0x48, 0x65, 0x6C, 0x6C, 0x6F, 1, 2, 3, 4, 5, 6]));\n * // 'Hello'\n * ```\n *\n * @see {@link getHiddenSuffixCodec}\n */\nexport function getHiddenSuffixDecoder(\n decoder: FixedSizeDecoder,\n suffixedDecoders: readonly FixedSizeDecoder[],\n): FixedSizeDecoder;\nexport function getHiddenSuffixDecoder(\n decoder: Decoder,\n suffixedDecoders: readonly Decoder[],\n): VariableSizeDecoder;\nexport function getHiddenSuffixDecoder(\n decoder: Decoder,\n suffixedDecoders: readonly Decoder[],\n): Decoder {\n return transformDecoder(\n getTupleDecoder([decoder, ...suffixedDecoders]) as Decoder,\n tuple => tuple[0],\n );\n}\n\n/**\n * Returns a codec that encodes and decodes values with a hidden suffix.\n *\n * - **Encoding:** Appends hidden data after encoding the main value.\n * - **Decoding:** Skips the hidden suffix after decoding the main value.\n *\n * This is useful for any implicit metadata that should be present in\n * binary formats but omitted from the API.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param codec - The codec for the main value.\n * @param suffixedCodecs - A list of void codecs that produce the hidden suffix.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding values with a hidden suffix.\n *\n * @example\n * Encoding and decoding a value with suffixed constants.\n * ```ts\n * const codec = getHiddenSuffixCodec(getUtf8Codec(), [\n * getConstantCodec(new Uint8Array([1, 2, 3])),\n * getConstantCodec(new Uint8Array([4, 5, 6])),\n * ]);\n *\n * const bytes = codec.encode('Hello');\n * // 0x48656c6c6f010203040506\n * // | | └-- Our second hidden suffix.\n * // | └-- Our first hidden suffix.\n * // └-- Our encoded value (\"Hello\").\n *\n * codec.decode(bytes);\n * // 'Hello'\n * ```\n *\n * @remarks\n * If all you need is padding zeroes after a value, consider using {@link padRightCodec} instead.\n *\n * Separate {@link getHiddenSuffixEncoder} and {@link getHiddenSuffixDecoder} functions are available.\n *\n * ```ts\n * const bytes = getHiddenSuffixEncoder(getUtf8Encoder(), [\n * getConstantEncoder(new Uint8Array([1, 2, 3])),\n * getConstantEncoder(new Uint8Array([4, 5, 6])),\n * ]).encode('Hello');\n *\n * const value = getHiddenSuffixDecoder(getUtf8Decoder(), [\n * getConstantDecoder(new Uint8Array([1, 2, 3])),\n * getConstantDecoder(new Uint8Array([4, 5, 6])),\n * ]).decode(bytes);\n * ```\n *\n * @see {@link getHiddenSuffixEncoder}\n * @see {@link getHiddenSuffixDecoder}\n */\nexport function getHiddenSuffixCodec(\n codec: FixedSizeCodec,\n suffixedCodecs: readonly FixedSizeCodec[],\n): FixedSizeCodec;\nexport function getHiddenSuffixCodec(\n codec: Codec,\n suffixedCodecs: readonly Codec[],\n): VariableSizeCodec;\nexport function getHiddenSuffixCodec(\n codec: Codec,\n suffixedCodecs: readonly Codec[],\n): Codec {\n return combineCodec(getHiddenSuffixEncoder(codec, suffixedCodecs), getHiddenSuffixDecoder(codec, suffixedCodecs));\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\nimport {\n SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT,\n SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\n\n/**\n * Defines the configuration options for literal union codecs.\n *\n * A literal union codec encodes values from a predefined set of literals.\n * The `size` option determines the numerical encoding used for the discriminant.\n * By default, literals are stored as a `u8` (1 byte).\n *\n * @typeParam TDiscriminator - A number codec, encoder, or decoder used for the discriminant.\n */\nexport type LiteralUnionCodecConfig = {\n /**\n * The codec used to encode/decode the discriminator.\n * @defaultValue `u8` discriminator.\n */\n size?: TDiscriminator;\n};\n\ntype Variant = bigint | boolean | number | string | null | undefined;\ntype GetTypeFromVariants = TVariants[number];\n\n/**\n * Returns an encoder for literal unions.\n *\n * This encoder serializes a value from a predefined set of literals\n * as a numerical index representing its position in the `variants` array.\n *\n * For more details, see {@link getLiteralUnionCodec}.\n *\n * @typeParam TVariants - A tuple of allowed literal values.\n *\n * @param variants - The possible literal values for the union.\n * @param config - Configuration options for encoding the literal union.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding literal unions.\n *\n * @example\n * Encoding a union of string literals.\n * ```ts\n * type Size = 'small' | 'medium' | 'large';\n * const sizeEncoder = getLiteralUnionEncoder(['small', 'medium', 'large']);\n *\n * sizeEncoder.encode('small'); // 0x00\n * sizeEncoder.encode('medium'); // 0x01\n * sizeEncoder.encode('large'); // 0x02\n * ```\n *\n * @see {@link getLiteralUnionCodec}\n */\nexport function getLiteralUnionEncoder(\n variants: TVariants,\n): FixedSizeEncoder, 1>;\nexport function getLiteralUnionEncoder(\n variants: TVariants,\n config: LiteralUnionCodecConfig & { size: FixedSizeNumberEncoder },\n): FixedSizeEncoder, TSize>;\nexport function getLiteralUnionEncoder(\n variants: TVariants,\n config?: LiteralUnionCodecConfig,\n): VariableSizeEncoder>;\nexport function getLiteralUnionEncoder(\n variants: TVariants,\n config: LiteralUnionCodecConfig = {},\n): Encoder> {\n const discriminator = config.size ?? getU8Encoder();\n return transformEncoder(discriminator, variant => {\n const index = variants.indexOf(variant);\n if (index < 0) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT, {\n value: variant,\n variants,\n });\n }\n return index;\n });\n}\n\n/**\n * Returns a decoder for literal unions.\n *\n * This decoder deserializes a numerical index into a corresponding\n * value from a predefined set of literals.\n *\n * For more details, see {@link getLiteralUnionCodec}.\n *\n * @typeParam TVariants - A tuple of allowed literal values.\n *\n * @param variants - The possible literal values for the union.\n * @param config - Configuration options for decoding the literal union.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding literal unions.\n *\n * @example\n * Decoding a union of string literals.\n * ```ts\n * type Size = 'small' | 'medium' | 'large';\n * const sizeDecoder = getLiteralUnionDecoder(['small', 'medium', 'large']);\n *\n * sizeDecoder.decode(new Uint8Array([0x00])); // 'small'\n * sizeDecoder.decode(new Uint8Array([0x01])); // 'medium'\n * sizeDecoder.decode(new Uint8Array([0x02])); // 'large'\n * ```\n *\n * @see {@link getLiteralUnionCodec}\n */\nexport function getLiteralUnionDecoder(\n variants: TVariants,\n): FixedSizeDecoder, 1>;\nexport function getLiteralUnionDecoder(\n variants: TVariants,\n config: LiteralUnionCodecConfig & { size: FixedSizeNumberDecoder },\n): FixedSizeDecoder, TSize>;\nexport function getLiteralUnionDecoder(\n variants: TVariants,\n config?: LiteralUnionCodecConfig,\n): VariableSizeDecoder>;\nexport function getLiteralUnionDecoder(\n variants: TVariants,\n config: LiteralUnionCodecConfig = {},\n): Decoder> {\n const discriminator = config.size ?? getU8Decoder();\n return transformDecoder(discriminator, (index: bigint | number) => {\n if (index < 0 || index >= variants.length) {\n throw new SolanaError(SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE, {\n discriminator: index,\n maxRange: variants.length - 1,\n minRange: 0,\n });\n }\n return variants[Number(index)];\n });\n}\n\n/**\n * Returns a codec for encoding and decoding literal unions.\n *\n * A literal union codec serializes and deserializes values\n * from a predefined set of literals, using a numerical index\n * to represent each value in the `variants` array.\n *\n * This allows efficient storage and retrieval of common\n * predefined values such as enum-like structures in TypeScript.\n *\n * @typeParam TVariants - A tuple of allowed literal values.\n *\n * @param variants - The possible literal values for the union.\n * @param config - Configuration options for encoding and decoding the literal union.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding literal unions.\n *\n * @example\n * Encoding and decoding a union of string literals.\n * ```ts\n * type Size = 'small' | 'medium' | 'large';\n * const sizeCodec = getLiteralUnionCodec(['small', 'medium', 'large']);\n *\n * sizeCodec.encode('small'); // 0x00\n * sizeCodec.encode('medium'); // 0x01\n * sizeCodec.encode('large'); // 0x02\n *\n * sizeCodec.decode(new Uint8Array([0x00])); // 'small'\n * sizeCodec.decode(new Uint8Array([0x01])); // 'medium'\n * sizeCodec.decode(new Uint8Array([0x02])); // 'large'\n * ```\n *\n * @example\n * Encoding and decoding a union of number literals.\n * ```ts\n * type Level = 10 | 20 | 30;\n * const levelCodec = getLiteralUnionCodec([10, 20, 30]);\n *\n * levelCodec.encode(10); // 0x00\n * levelCodec.encode(20); // 0x01\n * levelCodec.encode(30); // 0x02\n *\n * levelCodec.decode(new Uint8Array([0x00])); // 10\n * levelCodec.decode(new Uint8Array([0x01])); // 20\n * levelCodec.decode(new Uint8Array([0x02])); // 30\n * ```\n *\n * @example\n * Using a custom discriminator size with different variant types.\n * ```ts\n * type MaybeBoolean = false | true | \"either\";\n * const codec = getLiteralUnionCodec([false, true, 'either'], { size: getU16Codec() });\n *\n * codec.encode(false); // 0x0000\n * codec.encode(true); // 0x0100\n * codec.encode('either'); // 0x0200\n *\n * codec.decode(new Uint8Array([0x00, 0x00])); // false\n * codec.decode(new Uint8Array([0x01, 0x00])); // true\n * codec.decode(new Uint8Array([0x02, 0x00])); // 'either'\n * ```\n *\n * @remarks\n * Separate {@link getLiteralUnionEncoder} and {@link getLiteralUnionDecoder} functions are available.\n *\n * ```ts\n * const bytes = getLiteralUnionEncoder(['red', 'green', 'blue']).encode('green');\n * const value = getLiteralUnionDecoder(['red', 'green', 'blue']).decode(bytes);\n * ```\n *\n * @see {@link getLiteralUnionEncoder}\n * @see {@link getLiteralUnionDecoder}\n */\nexport function getLiteralUnionCodec(\n variants: TVariants,\n): FixedSizeCodec, GetTypeFromVariants, 1>;\nexport function getLiteralUnionCodec(\n variants: TVariants,\n config: LiteralUnionCodecConfig & { size: FixedSizeNumberCodec },\n): FixedSizeCodec, GetTypeFromVariants, TSize>;\nexport function getLiteralUnionCodec(\n variants: TVariants,\n config?: LiteralUnionCodecConfig,\n): VariableSizeCodec>;\nexport function getLiteralUnionCodec(\n variants: TVariants,\n config: LiteralUnionCodecConfig = {},\n): Codec> {\n return combineCodec(getLiteralUnionEncoder(variants, config), getLiteralUnionDecoder(variants, config));\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\n\n/**\n * Defines the configuration options for map codecs.\n *\n * The `size` option determines how the number of entries in the map is stored.\n * It can be:\n * - A {@link NumberCodec} to prefix the map with its size.\n * - A fixed number of entries.\n * - `'remainder'`, which infers the number of entries based on the remaining bytes.\n * This option is only available for fixed-size keys and values.\n *\n * @typeParam TPrefix - A number codec, encoder, or decoder used for the size prefix.\n */\nexport type MapCodecConfig = {\n /**\n * The size of the map.\n * @defaultValue u32 prefix.\n */\n size?: ArrayLikeCodecSize;\n};\n\n/**\n * Returns an encoder for maps.\n *\n * This encoder serializes maps where the keys and values are encoded\n * using the provided key and value encoders. The number of entries\n * is determined by the `size` configuration.\n *\n * For more details, see {@link getMapCodec}.\n *\n * @typeParam TFromKey - The type of the keys before encoding.\n * @typeParam TFromValue - The type of the values before encoding.\n *\n * @param key - The encoder for the map's keys.\n * @param value - The encoder for the map's values.\n * @param config - Configuration options for encoding the map.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding maps.\n *\n * @example\n * Encoding a map with a `u32` size prefix.\n * ```ts\n * const encoder = getMapEncoder(fixCodecSize(getUtf8Encoder(), 5), getU8Encoder());\n * const bytes = encoder.encode(new Map([['alice', 42], ['bob', 5]]));\n * // 0x02000000616c6963652a626f62000005\n * // | | | | └── Value (5)\n * // | | | └── Key (\"bob\", 5 bytes fixed, null-padded)\n * // | | └── Value (42)\n * // | └── Key (\"alice\", 5 bytes fixed)\n * // └── 4-byte prefix (2 entries)\n * ```\n *\n * @see {@link getMapCodec}\n */\nexport function getMapEncoder(\n key: Encoder,\n value: Encoder,\n config: MapCodecConfig & { size: 0 },\n): FixedSizeEncoder, 0>;\nexport function getMapEncoder(\n key: FixedSizeEncoder,\n value: FixedSizeEncoder,\n config: MapCodecConfig & { size: number },\n): FixedSizeEncoder>;\nexport function getMapEncoder(\n key: Encoder,\n value: Encoder,\n config?: MapCodecConfig,\n): VariableSizeEncoder>;\nexport function getMapEncoder(\n key: Encoder,\n value: Encoder,\n config: MapCodecConfig = {},\n): Encoder> {\n return transformEncoder(\n getArrayEncoder(getTupleEncoder([key, value]), config as object),\n (map: Map): [TFromKey, TFromValue][] => [...map.entries()],\n );\n}\n\n/**\n * Returns a decoder for maps.\n *\n * This decoder deserializes maps where the keys and values are decoded\n * using the provided key and value decoders. The number of entries\n * is determined by the `size` configuration.\n *\n * For more details, see {@link getMapCodec}.\n *\n * @typeParam TToKey - The type of the keys after decoding.\n * @typeParam TToValue - The type of the values after decoding.\n *\n * @param key - The decoder for the map's keys.\n * @param value - The decoder for the map's values.\n * @param config - Configuration options for decoding the map.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding maps.\n *\n * @example\n * Decoding a map with a `u32` size prefix.\n * ```ts\n * const decoder = getMapDecoder(fixCodecSize(getUtf8Decoder(), 5), getU8Decoder());\n * const map = decoder.decode(new Uint8Array([\n * 0x02,0x00,0x00,0x00,0x61,0x6c,0x69,0x63,0x65,0x2a,0x62,0x6f,0x62,0x00,0x00,0x05\n * ]));\n * // new Map([['alice', 42], ['bob', 5]])\n * ```\n *\n * @see {@link getMapCodec}\n */\nexport function getMapDecoder(\n key: Decoder,\n value: Decoder,\n config: MapCodecConfig & { size: 0 },\n): FixedSizeDecoder, 0>;\nexport function getMapDecoder(\n key: FixedSizeDecoder,\n value: FixedSizeDecoder,\n config: MapCodecConfig & { size: number },\n): FixedSizeDecoder>;\nexport function getMapDecoder(\n key: Decoder,\n value: Decoder,\n config?: MapCodecConfig,\n): VariableSizeDecoder>;\nexport function getMapDecoder(\n key: Decoder,\n value: Decoder,\n config: MapCodecConfig = {},\n): Decoder> {\n return transformDecoder(\n getArrayDecoder(getTupleDecoder([key, value]), config as object) as Decoder<[TToKey, TToValue][]>,\n (entries: [TToKey, TToValue][]): Map => new Map(entries),\n );\n}\n\n/**\n * Returns a codec for encoding and decoding maps.\n *\n * This codec serializes maps where the key/value pairs are encoded\n * and decoded one after another using the provided key and value codecs.\n * The number of entries is determined by the `size` configuration and\n * defaults to a `u32` size prefix.\n *\n * @typeParam TFromKey - The type of the keys before encoding.\n * @typeParam TFromValue - The type of the values before encoding.\n * @typeParam TToKey - The type of the keys after decoding.\n * @typeParam TToValue - The type of the values after decoding.\n *\n * @param key - The codec for the map's keys.\n * @param value - The codec for the map's values.\n * @param config - Configuration options for encoding and decoding the map.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding maps.\n *\n * @example\n * Encoding and decoding a map with a `u32` size prefix (default).\n * ```ts\n * const codec = getMapCodec(fixCodecSize(getUtf8Codec(), 5), getU8Codec());\n * const bytes = codec.encode(new Map([['alice', 42], ['bob', 5]]));\n * // 0x02000000616c6963652a626f62000005\n * // | | | | └── Value (5)\n * // | | | └── Key (\"bob\", 5 bytes fixed, null-padded)\n * // | | └── Value (42)\n * // | └── Key (\"alice\", 5 bytes fixed)\n * // └── 4-byte prefix (2 entries)\n *\n * const map = codec.decode(bytes);\n * // new Map([['alice', 42], ['bob', 5]])\n * ```\n *\n * @example\n * Encoding and decoding a map with a `u16` size prefix.\n * ```ts\n * const codec = getMapCodec(fixCodecSize(getUtf8Codec(), 5), getU8Codec(), { size: getU16Codec() });\n * const bytes = codec.encode(new Map([['alice', 42], ['bob', 5]]));\n * // 0x0200616c6963652a626f62000005\n * // | | | | └── Value (5)\n * // | | | └── Key (\"bob\", 5 bytes fixed, null-padded)\n * // | | └── Value (42)\n * // | └── Key (\"alice\", 5 bytes fixed)\n * // └── 2-byte prefix (2 entries)\n *\n * const map = codec.decode(bytes);\n * // new Map([['alice', 42], ['bob', 5]])\n * ```\n *\n * @example\n * Encoding and decoding a fixed-size map.\n * ```ts\n * const codec = getMapCodec(fixCodecSize(getUtf8Codec(), 5), getU8Codec(), { size: 2 });\n * const bytes = codec.encode(new Map([['alice', 42], ['bob', 5]]));\n * // 0x616c6963652a626f62000005\n * // | | | └── Value (5)\n * // | | └── Key (\"bob\", 5 bytes fixed, null-padded)\n * // | └── Value (42)\n * // └── Key (\"alice\", 5 bytes fixed)\n *\n * const map = codec.decode(bytes);\n * // new Map([['alice', 42], ['bob', 5]])\n * ```\n *\n * @example\n * Encoding and decoding a map with remainder size.\n * ```ts\n * const codec = getMapCodec(fixCodecSize(getUtf8Codec(), 5), getU8Codec(), { size: 'remainder' });\n * const bytes = codec.encode(new Map([['alice', 42], ['bob', 5]]));\n * // 0x616c6963652a626f62000005\n * // | | | └── Value (5)\n * // | | └── Key (\"bob\", 5 bytes fixed, null-padded)\n * // | └── Value (42)\n * // └── Key (\"alice\", 5 bytes fixed)\n * // No size prefix, the size is inferred from the remaining bytes.\n *\n * const map = codec.decode(bytes);\n * // new Map([['alice', 42], ['bob', 5]])\n * ```\n *\n * @remarks\n * Separate {@link getMapEncoder} and {@link getMapDecoder} functions are available.\n * ```ts\n * const bytes = getMapEncoder(fixCodecSize(getUtf8Encoder(), 5), getU8Encoder()).encode(new Map([['alice', 42]]));\n * const map = getMapDecoder(fixCodecSize(getUtf8Decoder(), 5), getU8Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getMapEncoder}\n * @see {@link getMapDecoder}\n */\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec,\n value: Codec,\n config: MapCodecConfig & { size: 0 },\n): FixedSizeCodec, Map, 0>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: FixedSizeCodec,\n value: FixedSizeCodec,\n config: MapCodecConfig & { size: number },\n): FixedSizeCodec, Map>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec,\n value: Codec,\n config?: MapCodecConfig,\n): VariableSizeCodec, Map>;\nexport function getMapCodec<\n TFromKey,\n TFromValue,\n TToKey extends TFromKey = TFromKey,\n TToValue extends TFromValue = TFromValue,\n>(\n key: Codec,\n value: Codec,\n config: MapCodecConfig = {},\n): Codec, Map> {\n return combineCodec(getMapEncoder(key, value, config as object), getMapDecoder(key, value, config as object));\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\n/**\n * Returns an encoder for `void` values.\n *\n * This encoder writes nothing to the byte array and has a fixed size of 0 bytes.\n * It is useful when working with structures that require a no-op encoder,\n * such as empty variants in {@link getDiscriminatedUnionEncoder}.\n *\n * For more details, see {@link getUnitCodec}.\n *\n * @returns A `FixedSizeEncoder`, representing an empty encoder.\n *\n * @example\n * Encoding a `void` value.\n * ```ts\n * getUnitEncoder().encode(undefined); // Produces an empty byte array.\n * ```\n *\n * @see {@link getUnitCodec}\n */\nexport function getUnitEncoder(): FixedSizeEncoder {\n return createEncoder({\n fixedSize: 0,\n write: (_value, _bytes, offset) => offset,\n });\n}\n\n/**\n * Returns a decoder for `void` values.\n *\n * This decoder always returns `undefined` and has a fixed size of 0 bytes.\n * It is useful when working with structures that require a no-op decoder,\n * such as empty variants in {@link getDiscriminatedUnionDecoder}.\n *\n * For more details, see {@link getUnitCodec}.\n *\n * @returns A `FixedSizeDecoder`, representing an empty decoder.\n *\n * @example\n * Decoding a `void` value.\n * ```ts\n * getUnitDecoder().decode(anyBytes); // Returns `undefined`.\n * ```\n *\n * @see {@link getUnitCodec}\n */\nexport function getUnitDecoder(): FixedSizeDecoder {\n return createDecoder({\n fixedSize: 0,\n read: (_bytes: ReadonlyUint8Array | Uint8Array, offset) => [undefined, offset],\n });\n}\n\n/**\n * Returns a codec for `void` values.\n *\n * This codec does nothing when encoding or decoding and has a fixed size of 0 bytes.\n * Namely, it always returns `undefined` when decoding and produces an empty byte array when encoding.\n *\n * This can be useful when working with structures that require a no-op codec,\n * such as empty variants in {@link getDiscriminatedUnionCodec}.\n *\n * @returns A `FixedSizeCodec`, representing an empty codec.\n *\n * @example\n * Encoding and decoding a `void` value.\n * ```ts\n * const codec = getUnitCodec();\n *\n * codec.encode(undefined); // Produces an empty byte array.\n * codec.decode(new Uint8Array([])); // Returns `undefined`.\n * ```\n *\n * @example\n * Using unit codecs as empty variants in a discriminated union.\n * ```ts\n * type Message =\n * | { __kind: 'Enter' }\n * | { __kind: 'Leave' }\n * | { __kind: 'Move'; x: number; y: number };\n *\n * const messageCodec = getDiscriminatedUnionCodec([\n * ['Enter', getUnitCodec()], // <- No-op codec for empty data\n * ['Leave', getUnitCodec()], // <- No-op codec for empty data\n * ['Move', getStructCodec([...])]\n * ]);\n * ```\n *\n * @remarks\n * Separate {@link getUnitEncoder} and {@link getUnitDecoder} functions are available.\n *\n * ```ts\n * const bytes = getUnitEncoder().encode();\n * const value = getUnitDecoder().decode(bytes);\n * ```\n *\n * @see {@link getUnitEncoder}\n * @see {@link getUnitDecoder}\n */\nexport function getUnitCodec(): FixedSizeCodec {\n return combineCodec(getUnitEncoder(), getUnitDecoder());\n}\n", "import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { getBooleanDecoder, getBooleanEncoder } from './boolean';\nimport { getConstantDecoder, getConstantEncoder } from './constant';\nimport { getTupleDecoder, getTupleEncoder } from './tuple';\nimport { getUnionDecoder, getUnionEncoder } from './union';\nimport { getUnitDecoder, getUnitEncoder } from './unit';\n\n/**\n * Defines the configuration options for nullable codecs.\n *\n * This configuration controls how nullable values are encoded and decoded.\n *\n * By default, nullable values are prefixed with a `u8` (0 = `null`, 1 = present).\n * The `noneValue` and `prefix` options allow customizing this behavior.\n *\n * @typeParam TPrefix - A number codec, encoder, or decoder used as the presence prefix.\n *\n * @see {@link getNullableEncoder}\n * @see {@link getNullableDecoder}\n * @see {@link getNullableCodec}\n */\nexport type NullableCodecConfig = {\n /**\n * Specifies how `null` values are represented in the encoded data.\n *\n * - By default, `null` values are omitted from encoding.\n * - `'zeroes'`: The bytes allocated for the value are filled with zeroes. This requires a fixed-size codec.\n * - Custom byte array: `null` values are replaced with a predefined byte sequence. This results in a variable-size codec.\n *\n * @defaultValue No explicit `noneValue` is used; `null` values are omitted.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The presence prefix used to distinguish between `null` and present values.\n *\n * - By default, a `u8` prefix is used (`0 = null`, `1 = present`).\n * - Custom number codec: Allows defining a different number size for the prefix.\n * - `null`: No prefix is used; `noneValue` (if provided) determines `null`.\n * If no `noneValue` is set, `null` is identified by the absence of bytes.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Returns an encoder for optional values, allowing `null` values to be encoded.\n *\n * This encoder serializes an optional value using a configurable approach:\n * - By default, a `u8` prefix is used (0 = `null`, 1 = present). This can be customized or disabled.\n * - If `noneValue: 'zeroes'` is set, `null` values are encoded as zeroes.\n * - If `noneValue` is a byte array, `null` values are replaced with the provided constant.\n *\n * For more details, see {@link getNullableCodec}.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n *\n * @param item - The encoder for the value that may be present.\n * @param config - Configuration options for encoding optional values.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding nullable values.\n *\n * @example\n * Encoding an optional number.\n * ```ts\n * const encoder = getNullableEncoder(getU32Encoder());\n *\n * encoder.encode(null); // 0x00\n * encoder.encode(42); // 0x012a000000\n * ```\n *\n * @see {@link getNullableCodec}\n */\nexport function getNullableEncoder(\n item: FixedSizeEncoder,\n config: NullableCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder;\nexport function getNullableEncoder(\n item: FixedSizeEncoder,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeEncoder;\nexport function getNullableEncoder(\n item: FixedSizeEncoder,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeEncoder;\nexport function getNullableEncoder(\n item: Encoder,\n config?: NullableCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder;\nexport function getNullableEncoder(\n item: Encoder,\n config: NullableCodecConfig = {},\n): Encoder {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: TFrom): [boolean, TFrom] => [true, value]),\n ],\n variant => Number(variant !== null),\n );\n}\n\n/**\n * Returns a decoder for optional values, allowing `null` values to be recognized.\n *\n * This decoder deserializes an optional value using a configurable approach:\n * - By default, a `u8` prefix is used (0 = `null`, 1 = present). This can be customized or disabled.\n * - If `noneValue: 'zeroes'` is set, `null` values are identified by zeroes.\n * - If `noneValue` is a byte array, `null` values match the provided constant.\n *\n * For more details, see {@link getNullableCodec}.\n *\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param item - The decoder for the value that may be present.\n * @param config - Configuration options for decoding optional values.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding nullable values.\n *\n * @example\n * Decoding an optional number.\n * ```ts\n * const decoder = getNullableDecoder(getU32Decoder());\n *\n * decoder.decode(new Uint8Array([0x00])); // null\n * decoder.decode(new Uint8Array([0x01, 0x2a, 0x00, 0x00, 0x00])); // 42\n * ```\n *\n * @see {@link getNullableCodec}\n */\nexport function getNullableDecoder(\n item: FixedSizeDecoder,\n config: NullableCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder;\nexport function getNullableDecoder(\n item: FixedSizeDecoder,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeDecoder;\nexport function getNullableDecoder(\n item: FixedSizeDecoder,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeDecoder;\nexport function getNullableDecoder(\n item: Decoder,\n config?: NullableCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder;\nexport function getNullableDecoder(\n item: Decoder,\n config: NullableCodecConfig = {},\n): Decoder {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => null),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]): TTo => value),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Returns a codec for encoding and decoding optional values, allowing `null` values to be handled.\n *\n * This codec serializes and deserializes optional values using a configurable approach:\n * - By default, a `u8` prefix is used (0 = `null`, 1 = present).\n * This can be customized using a custom number codec or even disabled by setting\n * the `prefix` to `null`.\n * - If `noneValue: 'zeroes'` is set, `null` values are encoded/decoded as zeroes.\n * - If `noneValue` is a byte array, `null` values are represented by the provided constant.\n *\n * For more details on the configuration options, see {@link NullableCodecConfig}.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param item - The codec for the value that may be present.\n * @param config - Configuration options for encoding and decoding optional values.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding nullable values.\n *\n * @example\n * Encoding and decoding an optional number using a `u8` prefix (default).\n * ```ts\n * const codec = getNullableCodec(getU32Codec());\n *\n * codec.encode(null); // 0x00\n * codec.encode(42); // 0x012a000000\n *\n * codec.decode(new Uint8Array([0x00])); // null\n * codec.decode(new Uint8Array([0x01, 0x2a, 0x00, 0x00, 0x00])); // 42\n * ```\n *\n * @example\n * Encoding and decoding an optional number using a fixed-size codec, by filling `null` values with zeroes.\n * ```ts\n * const codec = getNullableCodec(getU32Codec(), { noneValue: 'zeroes' });\n *\n * codec.encode(null); // 0x0000000000\n * codec.encode(42); // 0x012a000000\n *\n * codec.decode(new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00])); // null\n * codec.decode(new Uint8Array([0x01, 0x2a, 0x00, 0x00, 0x00])); // 42\n * ```\n *\n * @example\n * Encoding and decoding `null` values with zeroes and no prefix.\n * ```ts\n * const codec = getNullableCodec(getU32Codec(), {\n * noneValue: 'zeroes',\n * prefix: null,\n * });\n *\n * codec.encode(null); // 0x00000000\n * codec.encode(42); // 0x2a000000\n *\n * codec.decode(new Uint8Array([0x00, 0x00, 0x00, 0x00])); // null\n * codec.decode(new Uint8Array([0x2a, 0x00, 0x00, 0x00])); // 42\n * ```\n *\n * @example\n * Encoding and decoding `null` values with a custom byte sequence and no prefix.\n * ```ts\n * const codec = getNullableCodec(getU16Codec(), {\n * noneValue: new Uint8Array([0xff, 0xff]),\n * prefix: null,\n * });\n *\n * codec.encode(null); // 0xffff\n * codec.encode(42); // 0x2a00\n *\n * codec.decode(new Uint8Array([0xff, 0xff])); // null\n * codec.decode(new Uint8Array([0x2a, 0x00])); // 42\n * ```\n *\n * @example\n * Identifying `null` values by the absence of bytes.\n * ```ts\n * const codec = getNullableCodec(getU16Codec(), { prefix: null });\n *\n * codec.encode(null); // Empty bytes\n * codec.encode(42); // 0x2a00\n *\n * codec.decode(new Uint8Array([])); // null\n * codec.decode(new Uint8Array([0x2a, 0x00])); // 42\n * ```\n *\n * @remarks\n * Separate {@link getNullableEncoder} and {@link getNullableDecoder} functions are available.\n *\n * ```ts\n * const bytes = getNullableEncoder(getU32Encoder()).encode(42);\n * const value = getNullableDecoder(getU32Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getNullableEncoder}\n * @see {@link getNullableDecoder}\n */\nexport function getNullableCodec(\n item: FixedSizeCodec,\n config: NullableCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec;\nexport function getNullableCodec(\n item: FixedSizeCodec,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeCodec;\nexport function getNullableCodec(\n item: FixedSizeCodec,\n config: NullableCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeCodec;\nexport function getNullableCodec(\n item: Codec,\n config?: NullableCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec;\nexport function getNullableCodec(\n item: Codec,\n config: NullableCodecConfig = {},\n): Codec {\n type ConfigCast = NullableCodecConfig & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getNullableEncoder(item, config as ConfigCast),\n getNullableDecoder(item, config as ConfigCast),\n );\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { ArrayLikeCodecSize, getArrayDecoder, getArrayEncoder } from './array';\n\n/**\n * Defines the configuration options for set codecs.\n *\n * This configuration allows specifying how the size of the set is encoded.\n * The `size` option can be:\n *\n * - A {@link NumberCodec}, {@link NumberEncoder}, or {@link NumberDecoder} to store the size as a prefix.\n * - A fixed number of items, enforcing a strict length.\n * - The string `'remainder'` to infer the set size from the remaining bytes (only for fixed-size items).\n *\n * @typeParam TPrefix - The type used for encoding the size of the set.\n */\nexport type SetCodecConfig = {\n /**\n * The size encoding strategy for the set.\n * @defaultValue Uses a `u32` prefix.\n */\n size?: ArrayLikeCodecSize;\n};\n\n/**\n * Returns an encoder for sets of items.\n *\n * This encoder serializes `Set` values by encoding each item using the provided item encoder.\n * The number of items is stored as a prefix using a `u32` codec by default.\n *\n * For more details, see {@link getSetCodec}.\n *\n * @typeParam TFrom - The type of the items in the set before encoding.\n *\n * @param item - The encoder to use for each set item.\n * @param config - Optional configuration specifying the size strategy.\n * @returns An `Encoder>` for encoding sets of items.\n *\n * @example\n * Encoding a set of `u8` numbers.\n * ```ts\n * const encoder = getSetEncoder(getU8Encoder());\n * const bytes = encoder.encode(new Set([1, 2, 3]));\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix indicating 3 items.\n * ```\n *\n * @see {@link getSetCodec}\n */\nexport function getSetEncoder(\n item: Encoder,\n config: SetCodecConfig & { size: 0 },\n): FixedSizeEncoder, 0>;\nexport function getSetEncoder(\n item: FixedSizeEncoder,\n config: SetCodecConfig & { size: number },\n): FixedSizeEncoder>;\nexport function getSetEncoder(\n item: Encoder,\n config?: SetCodecConfig,\n): VariableSizeEncoder>;\nexport function getSetEncoder(\n item: Encoder,\n config: SetCodecConfig = {},\n): Encoder> {\n return transformEncoder(getArrayEncoder(item, config as object), (set: Set): TFrom[] => [...set]);\n}\n\n/**\n * Returns a decoder for sets of items.\n *\n * This decoder deserializes a `Set` from a byte array by decoding each item using the provided item decoder.\n * The number of items is determined by a `u32` size prefix by default.\n *\n * For more details, see {@link getSetCodec}.\n *\n * @typeParam TTo - The type of the items in the set after decoding.\n *\n * @param item - The decoder to use for each set item.\n * @param config - Optional configuration specifying the size strategy.\n * @returns A `Decoder>` for decoding sets of items.\n *\n * @example\n * Decoding a set of `u8` numbers.\n * ```ts\n * const decoder = getSetDecoder(getU8Decoder());\n * const value = decoder.decode(new Uint8Array([0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03]));\n * // new Set([1, 2, 3])\n * ```\n *\n * @see {@link getSetCodec}\n */\nexport function getSetDecoder(\n item: Decoder,\n config: SetCodecConfig & { size: 0 },\n): FixedSizeDecoder, 0>;\nexport function getSetDecoder(\n item: FixedSizeDecoder,\n config: SetCodecConfig & { size: number },\n): FixedSizeDecoder>;\nexport function getSetDecoder(\n item: Decoder,\n config?: SetCodecConfig,\n): VariableSizeDecoder>;\nexport function getSetDecoder(item: Decoder, config: SetCodecConfig = {}): Decoder> {\n return transformDecoder(getArrayDecoder(item, config as object), (entries: TTo[]): Set => new Set(entries));\n}\n\n/**\n * Returns a codec for encoding and decoding sets of items.\n *\n * This codec serializes `Set` values by encoding each item using the provided item codec.\n * The number of items is stored as a prefix using a `u32` codec by default.\n *\n * @typeParam TFrom - The type of the items in the set before encoding.\n * @typeParam TTo - The type of the items in the set after decoding.\n *\n * @param item - The codec to use for each set item.\n * @param config - Optional configuration specifying the size strategy.\n * @returns A `Codec, Set>` for encoding and decoding sets.\n *\n * @example\n * Encoding and decoding a set of `u8` numbers.\n * ```ts\n * const codec = getSetCodec(getU8Codec());\n * const bytes = codec.encode(new Set([1, 2, 3]));\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix indicating 3 items.\n *\n * const value = codec.decode(bytes);\n * // new Set([1, 2, 3])\n * ```\n *\n * @example\n * Using a `u16` prefix for size.\n * ```ts\n * const codec = getSetCodec(getU8Codec(), { size: getU16Codec() });\n * const bytes = codec.encode(new Set([1, 2, 3]));\n * // 0x0300010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 2-byte prefix indicating 3 items.\n * ```\n *\n * @example\n * Using a fixed-size set.\n * ```ts\n * const codec = getSetCodec(getU8Codec(), { size: 3 });\n * const bytes = codec.encode(new Set([1, 2, 3]));\n * // 0x010203\n * // └-- Exactly 3 items of 1 byte each.\n * ```\n *\n * @example\n * Using remainder to infer set size.\n * ```ts\n * const codec = getSetCodec(getU8Codec(), { size: 'remainder' });\n * const bytes = codec.encode(new Set([1, 2, 3]));\n * // 0x010203\n * // └-- 3 items of 1 byte each. The size is inferred from the remaining bytes.\n * ```\n *\n * @remarks\n * Separate {@link getSetEncoder} and {@link getSetDecoder} functions are available.\n *\n * ```ts\n * const bytes = getSetEncoder(getU8Encoder()).encode(new Set([1, 2, 3]));\n * const value = getSetDecoder(getU8Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getSetEncoder}\n * @see {@link getSetDecoder}\n */\nexport function getSetCodec(\n item: Codec,\n config: SetCodecConfig & { size: 0 },\n): FixedSizeCodec, Set, 0>;\nexport function getSetCodec(\n item: FixedSizeCodec,\n config: SetCodecConfig & { size: number },\n): FixedSizeCodec, Set>;\nexport function getSetCodec(\n item: Codec,\n config?: SetCodecConfig,\n): VariableSizeCodec, Set>;\nexport function getSetCodec(\n item: Codec,\n config: SetCodecConfig = {},\n): Codec, Set> {\n return combineCodec(getSetEncoder(item, config as object), getSetDecoder(item, config as object));\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { DrainOuterGeneric, getFixedSize, getMaxSize, sumCodecSizes } from './utils';\n\n/**\n * Represents a collection of named fields used in struct codecs.\n *\n * Each field is defined as a tuple containing:\n * - A string key representing the field name.\n * - A codec used to encode and decode the field's value.\n *\n * @typeParam T - The codec type used for each field.\n */\ntype Fields = readonly (readonly [string, T])[];\n\ntype ArrayIndices = Exclude['length'], T['length']> & number;\n\n/**\n * Infers the TypeScript type for an object that can be encoded using a struct codec.\n *\n * This type maps the provided field encoders to their corresponding values.\n *\n * @typeParam TFields - The fields of the struct, each paired with an encoder.\n */\ntype GetEncoderTypeFromFields>> = DrainOuterGeneric<{\n [I in ArrayIndices as TFields[I][0]]: TFields[I][1] extends Encoder ? TFrom : never;\n}>;\n\n/**\n * Infers the TypeScript type for an object that can be decoded using a struct codec.\n *\n * This type maps the provided field decoders to their corresponding values.\n *\n * @typeParam TFields - The fields of the struct, each paired with a decoder.\n */\ntype GetDecoderTypeFromFields>> = DrainOuterGeneric<{\n [I in ArrayIndices as TFields[I][0]]: TFields[I][1] extends Decoder ? TTo : never;\n}>;\n\n/**\n * Returns an encoder for custom objects.\n *\n * This encoder serializes an object by encoding its fields sequentially,\n * using the provided field encoders.\n *\n * For more details, see {@link getStructCodec}.\n *\n * @typeParam TFields - The fields of the struct, each paired with an encoder.\n *\n * @param fields - The name and encoder of each field.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding custom objects.\n *\n * @example\n * Encoding a custom struct.\n * ```ts\n * const encoder = getStructEncoder([\n * ['name', fixCodecSize(getUtf8Encoder(), 5)],\n * ['age', getU8Encoder()]\n * ]);\n *\n * const bytes = encoder.encode({ name: 'Alice', age: 42 });\n * // 0x416c6963652a\n * // | └── Age (42)\n * // └── Name (\"Alice\")\n * ```\n *\n * @see {@link getStructCodec}\n */\nexport function getStructEncoder>>(\n fields: TFields,\n): FixedSizeEncoder>;\nexport function getStructEncoder>>(\n fields: TFields,\n): VariableSizeEncoder>;\nexport function getStructEncoder>>(\n fields: TFields,\n): Encoder> {\n type TFrom = GetEncoderTypeFromFields;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize === null\n ? {\n getSizeFromValue: (value: TFrom) =>\n fields\n .map(([key, codec]) => getEncodedSize(value[key as keyof TFrom], codec))\n .reduce((all, one) => all + one, 0),\n maxSize,\n }\n : { fixedSize }),\n write: (struct: TFrom, bytes, offset) => {\n fields.forEach(([key, codec]) => {\n offset = codec.write(struct[key as keyof TFrom], bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Returns a decoder for custom objects.\n *\n * This decoder deserializes an object by decoding its fields sequentially,\n * using the provided field decoders.\n *\n * For more details, see {@link getStructCodec}.\n *\n * @typeParam TFields - The fields of the struct, each paired with a decoder.\n *\n * @param fields - The name and decoder of each field.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding custom objects.\n *\n * @example\n * Decoding a custom struct.\n * ```ts\n * const decoder = getStructDecoder([\n * ['name', fixCodecSize(getUtf8Decoder(), 5)],\n * ['age', getU8Decoder()]\n * ]);\n *\n * const struct = decoder.decode(new Uint8Array([\n * 0x41,0x6c,0x69,0x63,0x65,0x2a\n * ]));\n * // { name: 'Alice', age: 42 }\n * ```\n *\n * @see {@link getStructCodec}\n */\nexport function getStructDecoder>>(\n fields: TFields,\n): FixedSizeDecoder>;\nexport function getStructDecoder>>(\n fields: TFields,\n): VariableSizeDecoder>;\nexport function getStructDecoder>>(\n fields: TFields,\n): Decoder> {\n type TTo = GetDecoderTypeFromFields;\n const fieldCodecs = fields.map(([, codec]) => codec);\n const fixedSize = sumCodecSizes(fieldCodecs.map(getFixedSize));\n const maxSize = sumCodecSizes(fieldCodecs.map(getMaxSize)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize === null ? { maxSize } : { fixedSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const struct = {} as TTo;\n fields.forEach(([key, codec]) => {\n const [value, newOffset] = codec.read(bytes, offset);\n offset = newOffset;\n struct[key as keyof TTo] = value;\n });\n return [struct, offset];\n },\n });\n}\n\n/**\n * Returns a codec for encoding and decoding custom objects.\n *\n * This codec serializes objects by encoding and decoding each field sequentially.\n *\n * @typeParam TFields - The fields of the struct, each paired with a codec.\n *\n * @param fields - The name and codec of each field.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding custom objects.\n *\n * @example\n * Encoding and decoding a custom struct.\n * ```ts\n * const codec = getStructCodec([\n * ['name', fixCodecSize(getUtf8Codec(), 5)],\n * ['age', getU8Codec()]\n * ]);\n *\n * const bytes = codec.encode({ name: 'Alice', age: 42 });\n * // 0x416c6963652a\n * // | └── Age (42)\n * // └── Name (\"Alice\")\n *\n * const struct = codec.decode(bytes);\n * // { name: 'Alice', age: 42 }\n * ```\n *\n * @remarks\n * Separate {@link getStructEncoder} and {@link getStructDecoder} functions are available.\n *\n * ```ts\n * const bytes = getStructEncoder([\n * ['name', fixCodecSize(getUtf8Encoder(), 5)],\n * ['age', getU8Encoder()]\n * ]).encode({ name: 'Alice', age: 42 });\n *\n * const struct = getStructDecoder([\n * ['name', fixCodecSize(getUtf8Decoder(), 5)],\n * ['age', getU8Decoder()]\n * ]).decode(bytes);\n * ```\n *\n * @see {@link getStructEncoder}\n * @see {@link getStructDecoder}\n */\nexport function getStructCodec>>(\n fields: TFields,\n): FixedSizeCodec<\n GetEncoderTypeFromFields,\n GetDecoderTypeFromFields & GetEncoderTypeFromFields\n>;\nexport function getStructCodec>>(\n fields: TFields,\n): VariableSizeCodec<\n GetEncoderTypeFromFields,\n GetDecoderTypeFromFields & GetEncoderTypeFromFields\n>;\nexport function getStructCodec>>(\n fields: TFields,\n): Codec, GetDecoderTypeFromFields & GetEncoderTypeFromFields> {\n return combineCodec(\n getStructEncoder(fields),\n getStructDecoder(fields) as Decoder & GetEncoderTypeFromFields>,\n );\n}\n", "/**\n * An implementation of the Rust `Option` type in JavaScript.\n *\n * In Rust, optional values are represented using `Option`, which can be either:\n * - `Some(T)`, indicating a present value.\n * - `None`, indicating the absence of a value.\n *\n * In JavaScript, this is typically represented as `T | null`. However, this approach fails with nested options.\n * For example, `Option>` in Rust would translate to `T | null | null` in JavaScript, which is equivalent to `T | null`.\n * This means there is no way to differentiate between `Some(None)` and `None`, making nested options impossible.\n *\n * This `Option` type helps solve this by mirroring Rust’s `Option` type.\n *\n * ```ts\n * type Option = Some | None;\n * type Some = { __option: 'Some'; value: T };\n * type None = { __option: 'None' };\n * ```\n *\n * @typeParam T - The type of the contained value.\n *\n * @example\n * Here's how you can create `Option` values.\n *\n * To improve developer experience, helper functions are available.\n * TypeScript can infer the type of `T` or it can be explicitly provided.\n *\n * ```ts\n * // Create an option with a value.\n * some('Hello World');\n * some(123);\n *\n * // Create an empty option.\n * none();\n * none();\n * ```\n *\n * @see {@link Some}\n * @see {@link None}\n * @see {@link some}\n * @see {@link none}\n */\nexport type Option = None | Some;\n\n/**\n * A flexible type that allows working with {@link Option} values or nullable values.\n *\n * It defines a looser type that can be used when encoding {@link Option | Options}.\n * This allows us to pass `null` or the nested value directly whilst still\n * supporting the Option type for use-cases that need more type safety.\n *\n * @typeParam T - The type of the contained value.\n *\n * @example\n * Accepting both `Option` and `T | null` as input.\n * ```ts\n * function double(value: OptionOrNullable) {\n * const option = isOption(value) ? value : wrapNullable(value);\n * return isSome(option) ? option.value * 2 : 'No value';\n * }\n *\n * double(42); // 84\n * double(some(21)); // 42\n * double(none()); // \"No value\"\n * double(null); // \"No value\"\n * ```\n *\n * @see {@link Option}\n * @see {@link isOption}\n * @see {@link wrapNullable}\n */\nexport type OptionOrNullable = Option | T | null;\n\n/**\n * Represents an {@link Option} that contains a value.\n *\n * This type mirrors Rust’s `Some(T)`, indicating that a value is present.\n *\n * For more details, see {@link Option}.\n *\n * @typeParam T - The type of the contained value.\n *\n * @example\n * Creating a `Some` value.\n * ```ts\n * const value = some(42);\n * isSome(value); // true\n * isNone(value); // false\n * ```\n *\n * @see {@link Option}\n * @see {@link some}\n * @see {@link isSome}\n */\nexport type Some = Readonly<{ __option: 'Some'; value: T }>;\n\n/**\n * Represents an {@link Option} that contains no value.\n *\n * This type mirrors Rust’s `None`, indicating the absence of a value.\n *\n * For more details, see {@link Option}.\n *\n * @example\n * Creating a `None` value.\n * ```ts\n * const empty = none();\n * isNone(empty); // true\n * isSome(empty); // false\n * ```\n *\n * @see {@link Option}\n * @see {@link none}\n * @see {@link isNone}\n */\nexport type None = Readonly<{ __option: 'None' }>;\n\n/**\n * Creates a new {@link Option} that contains a value.\n *\n * This function explicitly wraps a value in an {@link Option} type.\n *\n * @typeParam T - The type of the contained value.\n *\n * @param value - The value to wrap in an {@link Option}.\n * @returns An {@link Option} containing the provided value.\n *\n * @example\n * Wrapping a value in an `Option`.\n * ```ts\n * const option = some('Hello');\n * option.value; // \"Hello\"\n * isOption(option); // true\n * isSome(option); // true\n * isNone(option); // false\n * ```\n *\n * @see {@link Option}\n * @see {@link Some}\n */\nexport const some = (value: T): Option => ({ __option: 'Some', value });\n\n/**\n * Creates a new {@link Option} that contains no value.\n *\n * This function explicitly represents an absent value.\n *\n * @typeParam T - The type of the expected absent value.\n *\n * @returns An {@link Option} containing no value.\n *\n * @example\n * Creating an empty `Option`.\n * ```ts\n * const empty = none();\n * isOption(empty); // true\n * isSome(empty); // false\n * isNone(empty); // true\n * ```\n *\n * @see {@link Option}\n * @see {@link None}\n */\nexport const none = (): Option => ({ __option: 'None' });\n\n/**\n * Checks whether the given value is an {@link Option}.\n *\n * This function determines whether an input follows the `Option` structure.\n *\n * @typeParam T - The type of the contained value.\n *\n * @param input - The value to check.\n * @returns `true` if the value is an {@link Option}, `false` otherwise.\n *\n * @example\n * Checking for `Option` values.\n * ```ts\n * isOption(some(42)); // true\n * isOption(none()); // true\n * isOption(42); // false\n * isOption(null); // false\n * isOption(\"anything else\"); // false\n * ```\n *\n * @see {@link Option}\n */\nexport const isOption = (input: unknown): input is Option =>\n !!(\n input &&\n typeof input === 'object' &&\n '__option' in input &&\n ((input.__option === 'Some' && 'value' in input) || input.__option === 'None')\n );\n\n/**\n * Checks whether the given {@link Option} contains a value.\n *\n * This function acts as a type guard, ensuring the value is a {@link Some}.\n *\n * @typeParam T - The type of the contained value.\n *\n * @param option - The {@link Option} to check.\n * @returns `true` if the option is a {@link Some}, `false` otherwise.\n *\n * @example\n * Checking for `Some` values.\n * ```ts\n * isSome(some(42)); // true\n * isSome(none()); // false\n * ```\n *\n * @see {@link Option}\n * @see {@link Some}\n */\nexport const isSome = (option: Option): option is Some => option.__option === 'Some';\n\n/**\n * Checks whether the given {@link Option} contains no value.\n *\n * This function acts as a type guard, ensuring the value is a {@link None}.\n *\n * @typeParam T - The type of the expected value.\n *\n * @param option - The {@link Option} to check.\n * @returns `true` if the option is a {@link None}, `false` otherwise.\n *\n * @example\n * Checking for `None` values.\n * ```ts\n * isNone(some(42)); // false\n * isNone(none()); // true\n * ```\n *\n * @see {@link Option}\n * @see {@link None}\n */\nexport const isNone = (option: Option): option is None => option.__option === 'None';\n", "import { isSome, none, Option, some } from './option';\n\n/**\n * Unwraps the value of an {@link Option}, returning its contained value or a fallback.\n *\n * This function extracts the value `T` from an `Option` type.\n * - If the option is {@link Some}, it returns the contained value `T`.\n * - If the option is {@link None}, it returns the fallback value `U`, which defaults to `null`.\n *\n * @typeParam T - The type of the contained value.\n * @typeParam U - The type of the fallback value (defaults to `null`).\n *\n * @param option - The {@link Option} to unwrap.\n * @param fallback - A function that provides a fallback value if the option is {@link None}.\n * @returns The contained value if {@link Some}, otherwise the fallback value.\n *\n * @example\n * Unwrapping an `Option` with no fallback.\n * ```ts\n * unwrapOption(some('Hello World')); // \"Hello World\"\n * unwrapOption(none()); // null\n * ```\n *\n * @example\n * Providing a custom fallback value.\n * ```ts\n * unwrapOption(some('Hello World'), () => 'Default'); // \"Hello World\"\n * unwrapOption(none(), () => 'Default'); // \"Default\"\n * ```\n *\n * @see {@link Option}\n * @see {@link Some}\n * @see {@link None}\n */\nexport function unwrapOption(option: Option): T | null;\nexport function unwrapOption(option: Option, fallback: () => U): T | U;\nexport function unwrapOption(option: Option, fallback?: () => U): T | U {\n if (isSome(option)) return option.value;\n return fallback ? fallback() : (null as U);\n}\n\n/**\n * Wraps a nullable value into an {@link Option}.\n *\n * - If the input value is `null`, this function returns {@link None}.\n * - Otherwise, it wraps the value in {@link Some}.\n *\n * @typeParam T - The type of the contained value.\n *\n * @param nullable - The nullable value to wrap.\n * @returns An {@link Option} wrapping the value.\n *\n * @example\n * Wrapping nullable values.\n * ```ts\n * wrapNullable('Hello World'); // Option (Some)\n * wrapNullable(null); // Option (None)\n * ```\n *\n * @see {@link Option}\n * @see {@link Some}\n * @see {@link None}\n */\nexport const wrapNullable = (nullable: T | null): Option => (nullable !== null ? some(nullable) : none());\n", "import {\n assertIsFixedSize,\n Codec,\n combineCodec,\n containsBytes,\n Decoder,\n Encoder,\n fixDecoderSize,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n fixEncoderSize,\n ReadonlyUint8Array,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getBooleanDecoder,\n getBooleanEncoder,\n getConstantDecoder,\n getConstantEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getUnionDecoder,\n getUnionEncoder,\n getUnitDecoder,\n getUnitEncoder,\n} from '@solana/codecs-data-structures';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\nimport { isOption, isSome, None, none, Option, OptionOrNullable, Some, some } from './option';\nimport { wrapNullable } from './unwrap-option';\n\n/**\n * Defines the configuration options for {@link Option} codecs.\n *\n * The `getOptionCodec` function behaves similarly to {@link getNullableCodec}\n * but encodes `Option` types instead of `T | null` types.\n *\n * This configuration controls how {@link None} values are encoded and how presence\n * is determined when decoding.\n *\n * @typeParam TPrefix - A number codec, encoder, or decoder used as the presence prefix.\n *\n * @see {@link getOptionEncoder}\n * @see {@link getOptionDecoder}\n * @see {@link getOptionCodec}\n */\nexport type OptionCodecConfig = {\n /**\n * Specifies how {@link None} values are represented in the encoded data.\n *\n * - By default, {@link None} values are omitted from encoding.\n * - `'zeroes'`: The bytes allocated for the value are filled with zeroes. This requires a fixed-size codec for the item.\n * - Custom byte array: {@link None} values are replaced with a predefined byte sequence. This results in a variable-size codec.\n *\n * @defaultValue No explicit `noneValue` is used; {@link None} values are omitted.\n */\n noneValue?: ReadonlyUint8Array | 'zeroes';\n\n /**\n * The presence prefix used to distinguish between {@link None} and present values.\n *\n * - By default, a `u8` prefix is used (`0 = None`, `1 = Some`).\n * - Custom number codec: Allows defining a different number size for the prefix.\n * - `null`: No prefix is used; `noneValue` (if provided) determines {@link None}.\n * If no `noneValue` is set, {@link None} is identified by the absence of bytes.\n *\n * @defaultValue `u8` prefix.\n */\n prefix?: TPrefix | null;\n};\n\n/**\n * Returns an encoder for optional values using the {@link Option} type.\n *\n * This encoder serializes an {@link OptionOrNullable} value using a configurable approach:\n * - By default, a `u8` prefix is used (`0 = None`, `1 = Some`). This can be customized or disabled.\n * - If `noneValue: 'zeroes'` is set, {@link None} values are encoded as zeroes.\n * - If `noneValue` is a byte array, {@link None} values are replaced with the provided constant.\n *\n * Unlike {@link getNullableEncoder}, this encoder accepts both {@link Option} and {@link Nullable} values.\n *\n * For more details, see {@link getOptionCodec}.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n *\n * @param item - The encoder for the value that may be present.\n * @param config - Configuration options for encoding optional values.\n * @returns A `FixedSizeEncoder` or `VariableSizeEncoder` for encoding option values.\n *\n * @example\n * Encoding an optional string.\n * ```ts\n * const stringCodec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * const encoder = getOptionEncoder(stringCodec);\n *\n * encoder.encode(some('Hi'));\n * encoder.encode('Hi');\n * // 0x01020000004869\n * // | | └-- utf8 string content (\"Hi\").\n * // | └-- u32 string prefix (2 characters).\n * // └-- 1-byte prefix (Some).\n *\n * encoder.encode(none());\n * encoder.encode(null);\n * // 0x00\n * // └-- 1-byte prefix (None).\n * ```\n *\n * @see {@link getOptionCodec}\n */\nexport function getOptionEncoder(\n item: FixedSizeEncoder,\n config: OptionCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeEncoder, TSize>;\nexport function getOptionEncoder(\n item: FixedSizeEncoder,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeEncoder>;\nexport function getOptionEncoder(\n item: FixedSizeEncoder,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeEncoder>;\nexport function getOptionEncoder(\n item: Encoder,\n config?: OptionCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeEncoder>;\nexport function getOptionEncoder(\n item: Encoder,\n config: OptionCodecConfig = {},\n): Encoder> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformEncoder(getUnitEncoder(), (_boolean: boolean) => undefined);\n }\n return getBooleanEncoder({ size: config.prefix ?? getU8Encoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixEncoderSize(getUnitEncoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitEncoder();\n }\n return getConstantEncoder(config.noneValue);\n })();\n\n return getUnionEncoder(\n [\n transformEncoder(getTupleEncoder([prefix, noneValue]), (_value: None | null): [boolean, void] => [\n false,\n undefined,\n ]),\n transformEncoder(getTupleEncoder([prefix, item]), (value: Some | TFrom): [boolean, TFrom] => [\n true,\n isOption(value) && isSome(value) ? value.value : value,\n ]),\n ],\n variant => {\n const option = isOption(variant) ? variant : wrapNullable(variant);\n return Number(isSome(option));\n },\n );\n}\n\n/**\n * Returns a decoder for optional values using the {@link Option} type.\n *\n * This decoder deserializes an `Option` value using a configurable approach:\n * - By default, a `u8` prefix is used (`0 = None`, `1 = Some`). This can be customized or disabled.\n * - If `noneValue: 'zeroes'` is set, `None` values are identified by zeroes.\n * - If `noneValue` is a byte array, `None` values match the provided constant.\n *\n * Unlike {@link getNullableDecoder}, this decoder always outputs an {@link Option} type.\n *\n * For more details, see {@link getOptionCodec}.\n *\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param item - The decoder for the value that may be present.\n * @param config - Configuration options for decoding optional values.\n * @returns A `FixedSizeDecoder` or `VariableSizeDecoder` for decoding option values.\n *\n * @example\n * Decoding an optional string with a size prefix.\n * ```ts\n * const stringCodec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * const decoder = getOptionDecoder(stringCodec);\n *\n * decoder.decode(new Uint8Array([0x01, 0x02, 0x00, 0x00, 0x00, 0x48, 0x69]));\n * // some('Hi')\n *\n * decoder.decode(new Uint8Array([0x00]));\n * // none()\n * ```\n *\n * @see {@link getOptionCodec}\n */\nexport function getOptionDecoder(\n item: FixedSizeDecoder,\n config: OptionCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeDecoder, TSize>;\nexport function getOptionDecoder(\n item: FixedSizeDecoder,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeDecoder>;\nexport function getOptionDecoder(\n item: FixedSizeDecoder,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeDecoder>;\nexport function getOptionDecoder(\n item: Decoder,\n config?: OptionCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeDecoder>;\nexport function getOptionDecoder(\n item: Decoder,\n config: OptionCodecConfig = {},\n): Decoder> {\n const prefix = (() => {\n if (config.prefix === null) {\n return transformDecoder(getUnitDecoder(), () => false);\n }\n return getBooleanDecoder({ size: config.prefix ?? getU8Decoder() });\n })();\n const noneValue = (() => {\n if (config.noneValue === 'zeroes') {\n assertIsFixedSize(item);\n return fixDecoderSize(getUnitDecoder(), item.fixedSize);\n }\n if (!config.noneValue) {\n return getUnitDecoder();\n }\n return getConstantDecoder(config.noneValue);\n })();\n\n return getUnionDecoder(\n [\n transformDecoder(getTupleDecoder([prefix, noneValue]), () => none()),\n transformDecoder(getTupleDecoder([prefix, item]), ([, value]) => some(value)),\n ],\n (bytes, offset) => {\n if (config.prefix === null && !config.noneValue) {\n return Number(offset < bytes.length);\n }\n if (config.prefix === null && config.noneValue != null) {\n const zeroValue =\n config.noneValue === 'zeroes' ? new Uint8Array(noneValue.fixedSize).fill(0) : config.noneValue;\n return containsBytes(bytes, zeroValue, offset) ? 0 : 1;\n }\n return Number(prefix.read(bytes, offset)[0]);\n },\n );\n}\n\n/**\n * Returns a codec for encoding and decoding optional values using the {@link Option} type.\n *\n * This codec serializes and deserializes `Option` values using a configurable approach:\n * - By default, a `u8` prefix is used (`0 = None`, `1 = Some`).\n * - If `noneValue: 'zeroes'` is set, `None` values are encoded/decoded as zeroes.\n * - If `noneValue` is a byte array, `None` values are represented by the provided constant.\n * - If `prefix: null` is set, the codec determines `None` values solely from `noneValue` or the presence of bytes.\n *\n * For more details on the configuration options, see {@link OptionCodecConfig}.\n *\n * Note that this behaves similarly to {@link getNullableCodec}, except it\n * encodes {@link OptionOrNullable} values and decodes {@link Option} values.\n *\n * @typeParam TFrom - The type of the main value being encoded.\n * @typeParam TTo - The type of the main value being decoded.\n *\n * @param item - The codec for the value that may be present.\n * @param config - Configuration options for encoding and decoding option values.\n * @returns A `FixedSizeCodec` or `VariableSizeCodec` for encoding and decoding option values.\n *\n * @example\n * Encoding and decoding an optional string with a size prefix.\n * ```ts\n * const stringCodec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * const codec = getOptionCodec(stringCodec);\n *\n * const someBytes = codec.encode(some('Hi'));\n * // 0x01020000004869\n * // | | └-- utf8 string content (\"Hi\").\n * // | └-- u32 string prefix (2 characters).\n * // └-- 1-byte prefix (Some).\n *\n * const noneBytes = codec.encode(none());\n * // 0x00\n * // └-- 1-byte prefix (None).\n *\n * codec.decode(someBytes); // some('Hi')\n * codec.decode(noneBytes); // none()\n * ```\n *\n * @example\n * Encoding nullable values.\n * ```ts\n * const stringCodec = addCodecSizePrefix(getUtf8Codec(), getU32Codec());\n * const codec = getOptionCodec(stringCodec);\n *\n * const someBytes = codec.encode('Hi'); // 0x01020000004869\n * const noneBytes = codec.encode(null); // 0x00\n *\n * codec.decode(someBytes); // some('Hi')\n * codec.decode(noneBytes); // none()\n * ```\n *\n * @example\n * Encoding and decoding an optional number with a fixed size.\n * ```ts\n * const codec = getOptionCodec(getU16Codec(), { noneValue: 'zeroes' });\n *\n * const someBytes = codec.encode(some(42)); // 0x012a00\n * const noneBytes = codec.encode(none()); // 0x000000\n *\n * codec.decode(someBytes); // some(42)\n * codec.decode(noneBytes); // none()\n * ```\n *\n * @example\n * Encoding and decoding {@link None} values with a custom byte sequence and no prefix.\n * ```ts\n * const codec = getOptionCodec(getU16Codec(), {\n * noneValue: new Uint8Array([0xff, 0xff]),\n * prefix: null,\n * });\n *\n * const someBytes = codec.encode(some(42)); // 0x2a00\n * const noneBytes = codec.encode(none()); // 0xffff\n *\n * codec.decode(someBytes); // some(42)\n * codec.decode(noneBytes); // none()\n * ```\n *\n * @example\n * Identifying {@link None} values by the absence of bytes.\n * ```ts\n * const codec = getOptionCodec(getU16Codec(), { prefix: null });\n *\n * const someBytes = codec.encode(some(42)); // 0x2a00\n * const noneBytes = codec.encode(none()); // new Uint8Array(0)\n *\n * codec.decode(someBytes); // some(42)\n * codec.decode(noneBytes); // none()\n * ```\n *\n * @remarks\n * Separate {@link getOptionEncoder} and {@link getOptionDecoder} functions are available.\n *\n * ```ts\n * const bytes = getOptionEncoder(getU32Encoder()).encode(some(42));\n * const value = getOptionDecoder(getU32Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getOptionEncoder}\n * @see {@link getOptionDecoder}\n */\nexport function getOptionCodec(\n item: FixedSizeCodec,\n config: OptionCodecConfig & { noneValue: 'zeroes'; prefix: null },\n): FixedSizeCodec, Option, TSize>;\nexport function getOptionCodec(\n item: FixedSizeCodec,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): FixedSizeCodec, Option>;\nexport function getOptionCodec(\n item: FixedSizeCodec,\n config: OptionCodecConfig & { noneValue: 'zeroes' },\n): VariableSizeCodec, Option>;\nexport function getOptionCodec(\n item: Codec,\n config?: OptionCodecConfig & { noneValue?: ReadonlyUint8Array },\n): VariableSizeCodec, Option>;\nexport function getOptionCodec(\n item: Codec,\n config: OptionCodecConfig = {},\n): Codec, Option> {\n type ConfigCast = OptionCodecConfig & { noneValue?: ReadonlyUint8Array };\n return combineCodec(\n getOptionEncoder(item, config as ConfigCast),\n getOptionDecoder(item, config as ConfigCast),\n );\n}\n", "import { isOption, isSome, None, Some } from './option';\n\n/**\n * Defines types that should not be recursively unwrapped.\n *\n * These types are preserved as-is when using {@link unwrapOptionRecursively}.\n *\n * @see {@link unwrapOptionRecursively}\n */\ntype UnUnwrappables =\n | Date\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | bigint\n | boolean\n | number\n | string\n | symbol\n | null\n | undefined;\n\n/**\n * A type that recursively unwraps nested {@link Option} types.\n *\n * This type resolves all nested {@link Option} values, ensuring\n * that deeply wrapped values are properly extracted.\n *\n * - If `T` is an {@link Option}, it resolves to the contained value.\n * - If `T` is a known primitive or immutable type, it remains unchanged.\n * - If `T` is an object or array, it recursively unwraps any options found.\n *\n * The fallback type `U` (default: `null`) is used in place of `None` values.\n *\n * @typeParam T - The type to be unwrapped.\n * @typeParam U - The fallback type for `None` values (defaults to `null`).\n *\n * @example\n * Resolving nested `Option` types.\n * ```ts\n * UnwrappedOption>>; // string\n * UnwrappedOption; // null\n * ```\n *\n * @example\n * Resolving options inside objects and arrays.\n * ```ts\n * UnwrappedOption<{ a: Some; b: None }>; // { a: number; b: null }\n * UnwrappedOption<[Some, None]>; // [number, null]\n * ```\n *\n * @see {@link unwrapOptionRecursively}\n */\nexport type UnwrappedOption =\n T extends Some\n ? UnwrappedOption\n : T extends None\n ? U\n : T extends UnUnwrappables\n ? T\n : T extends object\n ? { [key in keyof T]: UnwrappedOption }\n : T extends Array\n ? Array>\n : T;\n\n/**\n * Recursively unwraps all nested {@link Option} types within a value.\n *\n * This function traverses a given value and removes all instances\n * of {@link Option}, replacing them with their contained values.\n *\n * - If an {@link Option} is encountered, its value is extracted.\n * - If an array or object is encountered, its elements are traversed recursively.\n * - If `None` is encountered, it is replaced with the fallback value (default: `null`).\n *\n * @typeParam T - The type of the input value.\n * @typeParam U - The fallback type for `None` values (defaults to `null`).\n *\n * @param input - The value to unwrap.\n * @param fallback - A function that provides a fallback value for `None` options.\n * @returns The recursively unwrapped value.\n *\n * @example\n * Recursively unwrapping nested options.\n * ```ts\n * unwrapOptionRecursively(some(some('Hello World'))); // \"Hello World\"\n * unwrapOptionRecursively(some(none())); // null\n * ```\n *\n * @example\n * Recursively unwrapping options inside objects and arrays.\n * ```ts\n * unwrapOptionRecursively({\n * a: 'hello',\n * b: none(),\n * c: [{ c1: some(42) }, { c2: none() }],\n * });\n * // { a: \"hello\", b: null, c: [{ c1: 42 }, { c2: null }] }\n * ```\n *\n * @example\n * Using a fallback value for `None` options.\n * ```ts\n * unwrapOptionRecursively(\n * {\n * a: 'hello',\n * b: none(),\n * c: [{ c1: some(42) }, { c2: none() }],\n * },\n * () => 'Default',\n * );\n * // { a: \"hello\", b: \"Default\", c: [{ c1: 42 }, { c2: \"Default\" }] }\n * ```\n *\n * @remarks\n * This function does not mutate objects or arrays.\n *\n * @see {@link Option}\n * @see {@link UnwrappedOption}\n */\nexport function unwrapOptionRecursively(input: T): UnwrappedOption;\nexport function unwrapOptionRecursively(input: T, fallback: () => U): UnwrappedOption;\nexport function unwrapOptionRecursively(input: T, fallback?: () => U): UnwrappedOption {\n // Types to bypass.\n if (!input || ArrayBuffer.isView(input)) {\n return input as UnwrappedOption;\n }\n\n const next = (x: X) =>\n (fallback ? unwrapOptionRecursively(x, fallback) : unwrapOptionRecursively(x)) as UnwrappedOption;\n\n // Handle Option.\n if (isOption(input)) {\n if (isSome(input)) return next(input.value) as UnwrappedOption;\n return (fallback ? fallback() : null) as UnwrappedOption;\n }\n\n // Walk.\n if (Array.isArray(input)) {\n return input.map(next) as UnwrappedOption;\n }\n if (typeof input === 'object') {\n return Object.fromEntries(Object.entries(input).map(([k, v]) => [k, next(v)])) as UnwrappedOption;\n }\n return input as UnwrappedOption;\n}\n", "'use strict';\n\nvar codecsCore = require('@solana/codecs-core');\nvar codecsDataStructures = require('@solana/codecs-data-structures');\nvar codecsNumbers = require('@solana/codecs-numbers');\nvar codecsStrings = require('@solana/codecs-strings');\nvar options = require('@solana/options');\n\n\n\nObject.keys(codecsCore).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return codecsCore[k]; }\n\t});\n});\nObject.keys(codecsDataStructures).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return codecsDataStructures[k]; }\n\t});\n});\nObject.keys(codecsNumbers).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return codecsNumbers[k]; }\n\t});\n});\nObject.keys(codecsStrings).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return codecsStrings[k]; }\n\t});\n});\nObject.keys(options).forEach(function (k) {\n\tif (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {\n\t\tenumerable: true,\n\t\tget: function () { return options[k]; }\n\t});\n});\n//# sourceMappingURL=index.node.cjs.map\n//# sourceMappingURL=index.node.cjs.map", "/**\n * A pipeline is a solution that allows you to perform successive transforms of a value using functions. This is useful when building up a transaction message.\n *\n * Until the [pipeline operator](https://github.com/tc39/proposal-pipeline-operator) becomes part of JavaScript you can use this utility to create pipelines.\n *\n * Following common implementations of pipe functions that use TypeScript, this function supports a maximum arity of 10 for type safety.\n *\n * Note you can use nested pipes to extend this limitation, like so:\n * ```ts\n * const myValue = pipe(\n * pipe(\n * 1,\n * (x) => x + 1,\n * (x) => x * 2,\n * (x) => x - 1,\n * ),\n * (y) => y / 3,\n * (y) => y + 1,\n * );\n * ```\n *\n * @see https://github.com/ramda/ramda/blob/master/source/pipe.js\n * @see https://github.com/darky/rocket-pipes/blob/master/index.ts\n *\n * @example Basic\n * ```ts\n * const add = (a, b) => a + b;\n * const add10 = x => add(x, 10);\n * const add100 = x => add(x, 100);\n * const sum = pipe(1, add10, add100);\n * sum === 111; // true\n * ```\n *\n * @example Building a Solana transaction message\n * ```ts\n * const transferTransactionMessage = pipe(\n * // The result of the first expression...\n * createTransactionMessage({ version: 0 }),\n * // ...gets passed as the sole argument to the next function in the pipeline.\n * tx => setTransactionMessageFeePayer(myAddress, tx),\n * // The return value of that function gets passed to the next...\n * tx => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),\n * // ...and so on.\n * tx => appendTransactionMessageInstruction(createTransferInstruction(myAddress, toAddress, amountInLamports), tx),\n * );\n * ```\n *\n * @returns The initial value\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n): TInitial;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n): R1;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n): R2;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n): R3;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n): R4;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n): R5;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n /** The function with which to transform the return value of the prior function */\n r5_r6: (r5: R5) => R6,\n): R6;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n /** The function with which to transform the return value of the prior function */\n r5_r6: (r5: R5) => R6,\n /** The function with which to transform the return value of the prior function */\n r6_r7: (r6: R6) => R7,\n): R7;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n /** The function with which to transform the return value of the prior function */\n r5_r6: (r5: R5) => R6,\n /** The function with which to transform the return value of the prior function */\n r6_r7: (r6: R6) => R7,\n /** The function with which to transform the return value of the prior function */\n r7_r8: (r7: R7) => R8,\n): R8;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n /** The function with which to transform the return value of the prior function */\n r5_r6: (r5: R5) => R6,\n /** The function with which to transform the return value of the prior function */\n r6_r7: (r6: R6) => R7,\n /** The function with which to transform the return value of the prior function */\n r7_r8: (r7: R7) => R8,\n /** The function with which to transform the return value of the prior function */\n r8_r9: (r8: R8) => R9,\n): R9;\n/**\n * @returns The return value of the final transform function\n */\nexport function pipe(\n /** The initial value */\n init: TInitial,\n /** The function with which to transform the initial value */\n init_r1: (init: TInitial) => R1,\n /** The function with which to transform the return value of the prior function */\n r1_r2: (r1: R1) => R2,\n /** The function with which to transform the return value of the prior function */\n r2_r3: (r2: R2) => R3,\n /** The function with which to transform the return value of the prior function */\n r3_r4: (r3: R3) => R4,\n /** The function with which to transform the return value of the prior function */\n r4_r5: (r4: R4) => R5,\n /** The function with which to transform the return value of the prior function */\n r5_r6: (r5: R5) => R6,\n /** The function with which to transform the return value of the prior function */\n r6_r7: (r6: R6) => R7,\n /** The function with which to transform the return value of the prior function */\n r7_r8: (r7: R7) => R8,\n /** The function with which to transform the return value of the prior function */\n r8_r9: (r8: R8) => R9,\n /** The function with which to transform the return value of the prior function */\n r9_r10: (r9: R9) => R10,\n): R10;\nexport function pipe(init: TInitial, ...fns: CallableFunction[]) {\n return fns.reduce((acc, fn) => fn(acc), init);\n}\n", "import { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS,\n SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA,\n SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH,\n SolanaError,\n} from '@solana/errors';\n\nimport { AccountLookupMeta, AccountMeta } from './accounts';\n\n/**\n * An instruction destined for a given program.\n *\n * @example\n * ```ts\n * type StakeProgramInstruction = Instruction<'StakeConfig11111111111111111111111111111111'>;\n * ```\n */\nexport interface Instruction<\n TProgramAddress extends string = string,\n TAccounts extends readonly (AccountLookupMeta | AccountMeta)[] = readonly (AccountLookupMeta | AccountMeta)[],\n> {\n readonly accounts?: TAccounts;\n readonly data?: ReadonlyUint8Array;\n readonly programAddress: Address;\n}\n\n/**\n * An instruction that loads certain accounts.\n *\n * @example\n * ```ts\n * type InstructionWithTwoAccounts = InstructionWithAccounts<\n * [\n * WritableAccount, // First account\n * RentSysvar, // Second account\n * ]\n * >;\n * ```\n */\nexport interface InstructionWithAccounts\n extends Instruction {\n readonly accounts: TAccounts;\n}\n\nexport function isInstructionForProgram(\n instruction: TInstruction,\n programAddress: Address,\n): instruction is TInstruction & { programAddress: Address } {\n return instruction.programAddress === programAddress;\n}\n\nexport function assertIsInstructionForProgram(\n instruction: TInstruction,\n programAddress: Address,\n): asserts instruction is TInstruction & { programAddress: Address } {\n if (instruction.programAddress !== programAddress) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH, {\n actualProgramAddress: instruction.programAddress,\n expectedProgramAddress: programAddress,\n });\n }\n}\n\nexport function isInstructionWithAccounts<\n TAccounts extends readonly (AccountLookupMeta | AccountMeta)[] = readonly (AccountLookupMeta | AccountMeta)[],\n TInstruction extends Instruction = Instruction,\n>(instruction: TInstruction): instruction is InstructionWithAccounts & TInstruction {\n return instruction.accounts !== undefined;\n}\n\nexport function assertIsInstructionWithAccounts<\n TAccounts extends readonly (AccountLookupMeta | AccountMeta)[] = readonly (AccountLookupMeta | AccountMeta)[],\n TInstruction extends Instruction = Instruction,\n>(instruction: TInstruction): asserts instruction is InstructionWithAccounts & TInstruction {\n if (instruction.accounts === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS, {\n data: instruction.data,\n programAddress: instruction.programAddress,\n });\n }\n}\n\n/**\n * An instruction whose data conforms to a certain type.\n *\n * This is most useful when you have a branded `Uint8Array` that represents a particular\n * instruction's data.\n *\n * @example A type for the \\`AdvanceNonce\\` instruction of the System program\n * ```ts\n * type AdvanceNonceAccountInstruction<\n * TNonceAccountAddress extends string = string,\n * TNonceAuthorityAddress extends string = string,\n * > = Instruction<'11111111111111111111111111111111'> &\n * InstructionWithAccounts<\n * [\n * WritableAccount,\n * ReadonlyAccount<'SysvarRecentB1ockHashes11111111111111111111'>,\n * ReadonlySignerAccount,\n * ]\n * > &\n * InstructionWithData;\n * ```\n */\nexport interface InstructionWithData extends Instruction {\n readonly data: TData;\n}\n\nexport function isInstructionWithData<\n TData extends ReadonlyUint8Array = ReadonlyUint8Array,\n TInstruction extends Instruction = Instruction,\n>(instruction: TInstruction): instruction is InstructionWithData & TInstruction {\n return instruction.data !== undefined;\n}\n\nexport function assertIsInstructionWithData<\n TData extends ReadonlyUint8Array = ReadonlyUint8Array,\n TInstruction extends Instruction = Instruction,\n>(instruction: TInstruction): asserts instruction is InstructionWithData & TInstruction {\n if (instruction.data === undefined) {\n throw new SolanaError(SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA, {\n accountAddresses: instruction.accounts?.map(a => a.address),\n programAddress: instruction.programAddress,\n });\n }\n}\n", "/**\n * Describes the purpose for which an account participates in a transaction.\n *\n * Every account that participates in a transaction can be read from, but only ones that you mark as\n * writable may be written to, and only ones that you indicate must sign the transaction will gain\n * the privileges associated with signers at runtime.\n *\n * | | `isSigner` | `isWritable` |\n * | ----------------------------- | ---------- | ------------ |\n * | `AccountRole.READONLY` | ❌ | ❌ |\n * | `AccountRole.WRITABLE` | ❌ | ✅ |\n * | `AccountRole.READONLY_SIGNER` | ✅ | ❌ |\n * | `AccountRole.WRITABLE_SIGNER` | ✅ | ✅ |\n */\nexport enum AccountRole {\n // Bitflag guide: is signer ⌄⌄ is writable\n WRITABLE_SIGNER = /* 3 */ 0b11, // prettier-ignore\n READONLY_SIGNER = /* 2 */ 0b10, // prettier-ignore\n WRITABLE = /* 1 */ 0b01, // prettier-ignore\n READONLY = /* 0 */ 0b00, // prettier-ignore\n}\n\n// Quick primer on bitwise operations: https://stackoverflow.com/a/1436448/802047\nconst IS_SIGNER_BITMASK = 0b10;\nconst IS_WRITABLE_BITMASK = 0b01;\n\n/**\n * @returns An {@link AccountRole} representing the non-signer variant of the supplied role.\n */\nexport function downgradeRoleToNonSigner(role: AccountRole.READONLY_SIGNER): AccountRole.READONLY;\nexport function downgradeRoleToNonSigner(role: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole;\nexport function downgradeRoleToNonSigner(role: AccountRole): AccountRole {\n return role & ~IS_SIGNER_BITMASK;\n}\n\n/**\n * @returns An {@link AccountRole} representing the read-only variant of the supplied role.\n */\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE): AccountRole.READONLY;\nexport function downgradeRoleToReadonly(role: AccountRole.WRITABLE_SIGNER): AccountRole.READONLY_SIGNER;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole;\nexport function downgradeRoleToReadonly(role: AccountRole): AccountRole {\n return role & ~IS_WRITABLE_BITMASK;\n}\n\n/**\n * Returns `true` if the {@link AccountRole} given represents that of a signer. Also refines the\n * TypeScript type of the supplied role.\n */\nexport function isSignerRole(role: AccountRole): role is AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER {\n return role >= AccountRole.READONLY_SIGNER;\n}\n\n/**\n * Returns `true` if the {@link AccountRole} given represents that of a writable account. Also\n * refines the TypeScript type of the supplied role.\n */\nexport function isWritableRole(role: AccountRole): role is AccountRole.WRITABLE | AccountRole.WRITABLE_SIGNER {\n return (role & IS_WRITABLE_BITMASK) !== 0;\n}\n\n/**\n * Given two {@link AccountRole | AccountRoles}, will return the {@link AccountRole} that grants the\n * highest privileges of both.\n *\n * @example\n * ```ts\n * // Returns `AccountRole.WRITABLE_SIGNER`\n * mergeRoles(AccountRole.READONLY_SIGNER, AccountRole.WRITABLE);\n * ```\n */\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE_SIGNER): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE_SIGNER, roleB: AccountRole): AccountRole.WRITABLE_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.READONLY_SIGNER): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY_SIGNER, roleB: AccountRole): AccountRole.READONLY_SIGNER; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole.WRITABLE): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.WRITABLE, roleB: AccountRole): AccountRole.WRITABLE; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole.READONLY, roleB: AccountRole.READONLY): AccountRole.READONLY; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole; // prettier-ignore\nexport function mergeRoles(roleA: AccountRole, roleB: AccountRole): AccountRole {\n return roleA | roleB;\n}\n\n/**\n * @returns An {@link AccountRole} representing the signer variant of the supplied role.\n */\nexport function upgradeRoleToSigner(role: AccountRole.READONLY): AccountRole.READONLY_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole.WRITABLE): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole;\nexport function upgradeRoleToSigner(role: AccountRole): AccountRole {\n return role | IS_SIGNER_BITMASK;\n}\n\n/**\n * @returns An {@link AccountRole} representing the writable variant of the supplied role.\n */\nexport function upgradeRoleToWritable(role: AccountRole.READONLY): AccountRole.WRITABLE;\nexport function upgradeRoleToWritable(role: AccountRole.READONLY_SIGNER): AccountRole.WRITABLE_SIGNER;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole;\nexport function upgradeRoleToWritable(role: AccountRole): AccountRole {\n return role | IS_WRITABLE_BITMASK;\n}\n", "export const ED25519_ALGORITHM_IDENTIFIER =\n // Resist the temptation to convert this to a simple string; As of version 133.0.3, Firefox\n // requires the object form of `AlgorithmIdentifier` and will throw a `DOMException` otherwise.\n Object.freeze({ name: 'Ed25519' });\n", "import { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, SolanaError } from '@solana/errors';\n\nimport { ED25519_ALGORITHM_IDENTIFIER } from './algorithm';\n\nfunction addPkcs8Header(bytes: ReadonlyUint8Array): ReadonlyUint8Array {\n // prettier-ignore\n return new Uint8Array([\n /**\n * PKCS#8 header\n */\n 0x30, // ASN.1 sequence tag\n 0x2e, // Length of sequence (46 more bytes)\n\n 0x02, // ASN.1 integer tag\n 0x01, // Length of integer\n 0x00, // Version number\n\n 0x30, // ASN.1 sequence tag\n 0x05, // Length of sequence\n 0x06, // ASN.1 object identifier tag\n 0x03, // Length of object identifier\n // Edwards curve algorithms identifier https://oid-rep.orange-labs.fr/get/1.3.101.112\n 0x2b, // iso(1) / identified-organization(3) (The first node is multiplied by the decimal 40 and the result is added to the value of the second node)\n 0x65, // thawte(101)\n // Ed25519 identifier\n 0x70, // id-Ed25519(112)\n\n /**\n * Private key payload\n */\n 0x04, // ASN.1 octet string tag\n 0x22, // String length (34 more bytes)\n\n // Private key bytes as octet string\n 0x04, // ASN.1 octet string tag\n 0x20, // String length (32 bytes)\n\n ...bytes\n ]);\n}\n\n/**\n * Given a private key represented as a 32-byte `Uint8Array`, creates an Ed25519 private key for use\n * with other methods in this package that accept\n * [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey) objects.\n *\n * @param bytes 32 bytes that represent the private key\n * @param extractable Setting this to `true` makes it possible to extract the bytes of the private\n * key using the [`crypto.subtle.exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey)\n * API. Defaults to `false`.\n *\n * @example\n * ```ts\n * import { createPrivateKeyFromBytes } from '@solana/keys';\n *\n * const privateKey = await createPrivateKeyFromBytes(new Uint8Array([...]));\n * const extractablePrivateKey = await createPrivateKeyFromBytes(new Uint8Array([...]), true);\n * ```\n */\nexport async function createPrivateKeyFromBytes(\n bytes: ReadonlyUint8Array,\n extractable: boolean = false,\n): Promise {\n const actualLength = bytes.byteLength;\n if (actualLength !== 32) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH, {\n actualLength,\n });\n }\n const privateKeyBytesPkcs8 = addPkcs8Header(bytes);\n return await crypto.subtle.importKey('pkcs8', privateKeyBytesPkcs8, ED25519_ALGORITHM_IDENTIFIER, extractable, [\n 'sign',\n ]);\n}\n", "import { assertKeyExporterIsAvailable } from '@solana/assertions';\nimport { SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, SolanaError } from '@solana/errors';\n\n/**\n * Given an extractable [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)\n * private key, gets the corresponding public key as a\n * [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey).\n *\n * @param extractable Setting this to `true` makes it possible to extract the bytes of the public\n * key using the [`crypto.subtle.exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey)\n * API. Defaults to `false`.\n *\n * @example\n * ```ts\n * import { createPrivateKeyFromBytes, getPublicKeyFromPrivateKey } from '@solana/keys';\n *\n * const privateKey = await createPrivateKeyFromBytes(new Uint8Array([...]), true);\n *\n * const publicKey = await getPublicKeyFromPrivateKey(privateKey);\n * const extractablePublicKey = await getPublicKeyFromPrivateKey(privateKey, true);\n * ```\n */\nexport async function getPublicKeyFromPrivateKey(\n privateKey: CryptoKey,\n extractable: boolean = false,\n): Promise {\n assertKeyExporterIsAvailable();\n\n if (privateKey.extractable === false) {\n throw new SolanaError(SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY, { key: privateKey });\n }\n\n // Export private key.\n const jwk = await crypto.subtle.exportKey('jwk', privateKey);\n\n // Import public key.\n return await crypto.subtle.importKey(\n 'jwk',\n {\n crv /* curve */: 'Ed25519',\n ext /* extractable */: extractable,\n key_ops /* key operations */: ['verify'],\n kty /* key type */: 'OKP' /* octet key pair */,\n x /* public key x-coordinate */: jwk.x,\n },\n 'Ed25519',\n extractable,\n ['verify'],\n );\n}\n", "import { assertSigningCapabilityIsAvailable, assertVerificationCapabilityIsAvailable } from '@solana/assertions';\nimport { Encoder, ReadonlyUint8Array } from '@solana/codecs-core';\nimport { getBase58Encoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE,\n SolanaError,\n} from '@solana/errors';\nimport { Brand, EncodedString } from '@solana/nominal-types';\n\nimport { ED25519_ALGORITHM_IDENTIFIER } from './algorithm';\n\n/**\n * A 64-byte Ed25519 signature as a base58-encoded string.\n */\nexport type Signature = Brand, 'Signature'>;\n/**\n * A 64-byte Ed25519 signature.\n *\n * Whenever you need to verify that a particular signature is, in fact, the one that would have been\n * produced by signing some known bytes using the private key associated with some known public key,\n * use the {@link verifySignature} function in this package.\n */\nexport type SignatureBytes = Brand;\n\nlet base58Encoder: Encoder | undefined;\n\n/**\n * Asserts that an arbitrary string is a base58-encoded Ed25519 signature.\n *\n * Useful when you receive a string from user input or an untrusted network API that you expect to\n * represent an Ed25519 signature (eg. of a transaction).\n *\n * @example\n * ```ts\n * import { assertIsSignature } from '@solana/keys';\n *\n * // Imagine a function that asserts whether a user-supplied signature is valid or not.\n * function handleSubmit() {\n * // We know only that what the user typed conforms to the `string` type.\n * const signature: string = signatureInput.value;\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `signature` to `Signature`.\n * assertIsSignature(signature);\n * // At this point, `signature` is a `Signature` that can be used with the RPC.\n * const {\n * value: [status],\n * } = await rpc.getSignatureStatuses([signature]).send();\n * } catch (e) {\n * // `signature` turned out not to be a base58-encoded signature\n * }\n * }\n * ```\n */\nexport function assertIsSignature(putativeSignature: string): asserts putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n throw new SolanaError(SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE, {\n actualLength: putativeSignature.length,\n });\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH, {\n actualLength: numBytes,\n });\n }\n}\n\n/**\n * A type guard that accepts a string as input. It will both return `true` if the string conforms to\n * the {@link Signature} type and will refine the type for use in your program.\n *\n * @example\n * ```ts\n * import { isSignature } from '@solana/keys';\n *\n * if (isSignature(signature)) {\n * // At this point, `signature` has been refined to a\n * // `Signature` that can be used with the RPC.\n * const {\n * value: [status],\n * } = await rpc.getSignatureStatuses([signature]).send();\n * setSignatureStatus(status);\n * } else {\n * setError(`${signature} is not a transaction signature`);\n * }\n * ```\n */\nexport function isSignature(putativeSignature: string): putativeSignature is Signature {\n if (!base58Encoder) base58Encoder = getBase58Encoder();\n\n // Fast-path; see if the input string is of an acceptable length.\n if (\n // Lowest value (64 bytes of zeroes)\n putativeSignature.length < 64 ||\n // Highest value (64 bytes of 255)\n putativeSignature.length > 88\n ) {\n return false;\n }\n // Slow-path; actually attempt to decode the input string.\n const bytes = base58Encoder.encode(putativeSignature);\n const numBytes = bytes.byteLength;\n if (numBytes !== 64) {\n return false;\n }\n return true;\n}\n\n/**\n * Given a private [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey) and a\n * `Uint8Array` of bytes, this method will return the 64-byte Ed25519 signature of that data as a\n * `Uint8Array`.\n *\n * @example\n * ```ts\n * import { signBytes } from '@solana/keys';\n *\n * const data = new Uint8Array([1, 2, 3]);\n * const signature = await signBytes(privateKey, data);\n * ```\n */\nexport async function signBytes(key: CryptoKey, data: ReadonlyUint8Array): Promise {\n assertSigningCapabilityIsAvailable();\n const signedData = await crypto.subtle.sign(ED25519_ALGORITHM_IDENTIFIER, key, data);\n return new Uint8Array(signedData) as SignatureBytes;\n}\n\n/**\n * This helper combines _asserting_ that a string is an Ed25519 signature with _coercing_ it to the\n * {@link Signature} type. It's best used with untrusted input.\n *\n * @example\n * ```ts\n * import { signature } from '@solana/keys';\n *\n * const signature = signature(userSuppliedSignature);\n * const {\n * value: [status],\n * } = await rpc.getSignatureStatuses([signature]).send();\n * ```\n */\nexport function signature(putativeSignature: string): Signature {\n assertIsSignature(putativeSignature);\n return putativeSignature;\n}\n\n/**\n * Given a public [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey), some\n * {@link SignatureBytes}, and a `Uint8Array` of data, this method will return `true` if the\n * signature was produced by signing the data using the private key associated with the public key,\n * and `false` otherwise.\n *\n * @example\n * ```ts\n * import { verifySignature } from '@solana/keys';\n *\n * const data = new Uint8Array([1, 2, 3]);\n * if (!(await verifySignature(publicKey, signature, data))) {\n * throw new Error('The data were *not* signed by the private key associated with `publicKey`');\n * }\n * ```\n */\nexport async function verifySignature(\n key: CryptoKey,\n signature: SignatureBytes,\n data: ReadonlyUint8Array,\n): Promise {\n assertVerificationCapabilityIsAvailable();\n return await crypto.subtle.verify(ED25519_ALGORITHM_IDENTIFIER, key, signature, data);\n}\n", "import { assertKeyGenerationIsAvailable, assertPRNGIsAvailable } from '@solana/assertions';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH,\n SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY,\n SolanaError,\n} from '@solana/errors';\n\nimport { ED25519_ALGORITHM_IDENTIFIER } from './algorithm';\nimport { createPrivateKeyFromBytes } from './private-key';\nimport { getPublicKeyFromPrivateKey } from './public-key';\nimport { signBytes, verifySignature } from './signatures';\n\n/**\n * Generates an Ed25519 public/private key pair for use with other methods in this package that\n * accept [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey) objects.\n *\n * @example\n * ```ts\n * import { generateKeyPair } from '@solana/keys';\n *\n * const { privateKey, publicKey } = await generateKeyPair();\n * ```\n */\nexport async function generateKeyPair(): Promise {\n await assertKeyGenerationIsAvailable();\n const keyPair = await crypto.subtle.generateKey(\n /* algorithm */ ED25519_ALGORITHM_IDENTIFIER, // Native implementation status: https://github.com/WICG/webcrypto-secure-curves/issues/20\n /* extractable */ false, // Prevents the bytes of the private key from being visible to JS.\n /* allowed uses */ ['sign', 'verify'],\n );\n return keyPair;\n}\n\n/**\n * Given a 64-byte `Uint8Array` secret key, creates an Ed25519 public/private key pair for use with\n * other methods in this package that accept [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)\n * objects.\n *\n * @param bytes 64 bytes, the first 32 of which represent the private key and the last 32 of which\n * represent its associated public key\n * @param extractable Setting this to `true` makes it possible to extract the bytes of the private\n * key using the [`crypto.subtle.exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey)\n * API. Defaults to `false`.\n *\n * @example\n * ```ts\n * import fs from 'fs';\n * import { createKeyPairFromBytes } from '@solana/keys';\n *\n * // Get bytes from local keypair file.\n * const keypairFile = fs.readFileSync('~/.config/solana/id.json');\n * const keypairBytes = new Uint8Array(JSON.parse(keypairFile.toString()));\n *\n * // Create a CryptoKeyPair from the bytes.\n * const { privateKey, publicKey } = await createKeyPairFromBytes(keypairBytes);\n * ```\n */\nexport async function createKeyPairFromBytes(\n bytes: ReadonlyUint8Array,\n extractable: boolean = false,\n): Promise {\n assertPRNGIsAvailable();\n\n if (bytes.byteLength !== 64) {\n throw new SolanaError(SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH, { byteLength: bytes.byteLength });\n }\n const [publicKey, privateKey] = await Promise.all([\n crypto.subtle.importKey('raw', bytes.slice(32), ED25519_ALGORITHM_IDENTIFIER, /* extractable */ true, [\n 'verify',\n ]),\n createPrivateKeyFromBytes(bytes.slice(0, 32), extractable),\n ]);\n\n // Verify the key pair\n const randomBytes = new Uint8Array(32);\n crypto.getRandomValues(randomBytes);\n const signedData = await signBytes(privateKey, randomBytes);\n const isValid = await verifySignature(publicKey, signedData, randomBytes);\n if (!isValid) {\n throw new SolanaError(SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY);\n }\n\n return { privateKey, publicKey } as CryptoKeyPair;\n}\n\n/**\n * Given a private key represented as a 32-byte `Uint8Array`, creates an Ed25519 public/private key\n * pair for use with other methods in this package that accept [`CryptoKey`](https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey)\n * objects.\n *\n * @param bytes 32 bytes that represent the private key\n * @param extractable Setting this to `true` makes it possible to extract the bytes of the private\n * key using the [`crypto.subtle.exportKey()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey)\n * API. Defaults to `false`.\n *\n * @example\n * ```ts\n * import { createKeyPairFromPrivateKeyBytes } from '@solana/keys';\n *\n * const { privateKey, publicKey } = await createKeyPairFromPrivateKeyBytes(new Uint8Array([...]));\n * ```\n *\n * This can be useful when you have a private key but not the corresponding public key or when you\n * need to derive key pairs from seeds. For instance, the following code snippet derives a key pair\n * from the hash of a message.\n *\n * ```ts\n * import { getUtf8Encoder } from '@solana/codecs-strings';\n * import { createKeyPairFromPrivateKeyBytes } from '@solana/keys';\n *\n * const message = getUtf8Encoder().encode('Hello, World!');\n * const seed = new Uint8Array(await crypto.subtle.digest('SHA-256', message));\n *\n * const derivedKeypair = await createKeyPairFromPrivateKeyBytes(seed);\n * ```\n */\nexport async function createKeyPairFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable: boolean = false,\n): Promise {\n const privateKeyPromise = createPrivateKeyFromBytes(bytes, extractable);\n\n // Here we need the private key to be extractable in order to export\n // it as a public key. Therefore, if the `extractable` parameter\n // is `false`, we need to create two private keys such that:\n // - The extractable one is used to create the public key and\n // - The non-extractable one is the one we will return.\n const [publicKey, privateKey] = await Promise.all([\n // This nested promise makes things efficient by\n // creating the public key in parallel with the\n // second private key creation, if it is needed.\n (extractable ? privateKeyPromise : createPrivateKeyFromBytes(bytes, true /* extractable */)).then(\n async privateKey => await getPublicKeyFromPrivateKey(privateKey, true /* extractable */),\n ),\n privateKeyPromise,\n ]);\n\n return { privateKey, publicKey };\n}\n", "import type { Address } from '@solana/addresses';\nimport { isSolanaError, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM, SolanaError } from '@solana/errors';\n\n/**\n * Identifies whether an error -- typically caused by a transaction failure -- is a custom program\n * error from the provided program address.\n *\n * @param transactionMessage The transaction message that failed to execute. Since the RPC response\n * only provides the index of the failed instruction, the transaction message is required to\n * determine its program address\n * @param programAddress The address of the program from which the error is expected to have\n * originated\n * @param code The expected error code of the custom program error. When provided, the function will\n * check that the custom program error code matches the given value.\n *\n * @example\n * ```ts\n * try {\n * // Send and confirm your transaction.\n * } catch (error) {\n * if (isProgramError(error, transactionMessage, myProgramAddress, 42)) {\n * // Handle custom program error 42 from this program.\n * } else if (isProgramError(error, transactionMessage, myProgramAddress)) {\n * // Handle all other custom program errors from this program.\n * } else {\n * throw error;\n * }\n * }\n * ```\n */\nexport function isProgramError(\n error: unknown,\n transactionMessage: { instructions: Record },\n programAddress: Address,\n code?: TProgramErrorCode,\n): error is Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> &\n SolanaError {\n if (!isSolanaError(error, SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM)) {\n return false;\n }\n const instructionProgramAddress = transactionMessage.instructions[error.context.index]?.programAddress;\n if (!instructionProgramAddress || instructionProgramAddress !== programAddress) {\n return false;\n }\n return typeof code === 'undefined' || error.context.code === code;\n}\n", "/**\n * This function is a replacement for `JSON.parse` that can handle large\n * unsafe integers by parsing them as BigInts. It transforms every\n * numerical value into a BigInt without loss of precision.\n */\nexport function parseJsonWithBigInts(json: string): unknown {\n return JSON.parse(wrapIntegersInBigIntValueObject(json), (_, value) => {\n return isBigIntValueObject(value) ? unwrapBigIntValueObject(value) : value;\n });\n}\n\nfunction wrapIntegersInBigIntValueObject(json: string): string {\n const out = [];\n let inQuote = false;\n for (let ii = 0; ii < json.length; ii++) {\n let isEscaped = false;\n if (json[ii] === '\\\\') {\n out.push(json[ii++]);\n isEscaped = !isEscaped;\n }\n if (json[ii] === '\"') {\n out.push(json[ii]);\n if (!isEscaped) {\n inQuote = !inQuote;\n }\n continue;\n }\n if (!inQuote) {\n const consumedNumber = consumeNumber(json, ii);\n if (consumedNumber?.length) {\n ii += consumedNumber.length - 1;\n // Don't wrap numbers that contain a decimal point or a negative exponent.\n if (consumedNumber.match(/\\.|[eE]-/)) {\n out.push(consumedNumber);\n } else {\n out.push(wrapBigIntValueObject(consumedNumber));\n }\n continue;\n }\n }\n out.push(json[ii]);\n }\n\n return out.join('');\n}\n\nfunction consumeNumber(json: string, ii: number): string | null {\n /** @see https://stackoverflow.com/a/13340826/11440277 */\n const JSON_NUMBER_REGEX = /^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/;\n\n // Stop early if the first character isn't a digit or a minus sign.\n if (!json[ii]?.match(/[-\\d]/)) {\n return null;\n }\n\n // Otherwise, check if the next characters form a valid JSON number.\n const numberMatch = json.slice(ii).match(JSON_NUMBER_REGEX);\n return numberMatch ? numberMatch[0] : null;\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: string): string {\n return `{\"$n\":\"${value}\"}`;\n}\n\nfunction unwrapBigIntValueObject({ $n }: BigIntValueObject): bigint {\n if ($n.match(/[eE]/)) {\n const [units, exponent] = $n.split(/[eE]/);\n return BigInt(units) * BigInt(10) ** BigInt(exponent);\n }\n return BigInt($n);\n}\n\nfunction isBigIntValueObject(value: unknown): value is BigIntValueObject {\n return !!value && typeof value === 'object' && '$n' in value && typeof value.$n === 'string';\n}\n", "import { RpcRequest } from './rpc-request';\n\nlet _nextMessageId = 0n;\nfunction getNextMessageId(): string {\n const id = _nextMessageId;\n _nextMessageId++;\n return id.toString();\n}\n\n/**\n * Returns a spec-compliant JSON RPC 2.0 message, given a method name and some params.\n *\n * Generates a new `id` on each call by incrementing a `bigint` and casting it to a string.\n */\nexport function createRpcMessage(request: RpcRequest) {\n return {\n id: getNextMessageId(),\n jsonrpc: '2.0',\n method: request.methodName,\n params: request.params,\n };\n}\n", "/**\n * Transforms a value into a JSON string, whilst rendering bigints as large unsafe integers.\n */\nexport function stringifyJsonWithBigints(value: unknown, space?: number | string): string {\n return unwrapBigIntValueObject(\n JSON.stringify(value, (_, v) => (typeof v === 'bigint' ? wrapBigIntValueObject(v) : v), space),\n );\n}\n\ntype BigIntValueObject = {\n // `$` implies 'this is a value object'.\n // `n` implies 'interpret the value as a bigint'.\n $n: string;\n};\n\nfunction wrapBigIntValueObject(value: bigint): BigIntValueObject {\n return { $n: `${value}` };\n}\n\nfunction unwrapBigIntValueObject(value: string): string {\n return value.replace(/\\{\\s*\"\\$n\"\\s*:\\s*\"(-?\\d+)\"\\s*\\}/g, '$1');\n}\n", "import { SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\n\nimport { RpcApi, RpcPlan } from './rpc-api';\nimport { RpcTransport } from './rpc-transport';\n\nexport type RpcConfig = Readonly<{\n api: RpcApi;\n transport: TRpcTransport;\n}>;\n\n/**\n * An object that exposes all of the functions described by `TRpcMethods`.\n *\n * Calling each method returns a {@link PendingRpcRequest | PendingRpcRequest} where\n * `TResponse` is that method's response type.\n */\nexport type Rpc = {\n [TMethodName in keyof TRpcMethods]: PendingRpcRequestBuilder>;\n};\n\n/**\n * Pending requests are the result of calling a supported method on a {@link Rpc} object. They\n * encapsulate all of the information necessary to make the request without actually making it.\n *\n * Calling the {@link PendingRpcRequest.send | `send(options)`} method on a\n * {@link PendingRpcRequest | PendingRpcRequest} will trigger the request and return a\n * promise for `TResponse`.\n */\nexport type PendingRpcRequest = {\n send(options?: RpcSendOptions): Promise;\n};\n\nexport type RpcSendOptions = Readonly<{\n /**\n * An optional signal that you can supply when triggering a {@link PendingRpcRequest} that you\n * might later need to abort.\n */\n abortSignal?: AbortSignal;\n}>;\n\ntype PendingRpcRequestBuilder = UnionToIntersection<\n Flatten<{\n [P in keyof TMethodImplementations]: PendingRpcRequestReturnTypeMapper;\n }>\n>;\n\ntype PendingRpcRequestReturnTypeMapper =\n // Check that this property of the TRpcMethods interface is, in fact, a function.\n TMethodImplementation extends Callable\n ? (...args: Parameters) => PendingRpcRequest>\n : never;\n\n/**\n * Creates a {@link Rpc} instance given a {@link RpcApi | RpcApi} and a\n * {@link RpcTransport} capable of fulfilling them.\n */\nexport function createRpc(\n rpcConfig: RpcConfig,\n): Rpc {\n return makeProxy(rpcConfig);\n}\n\nfunction makeProxy(\n rpcConfig: RpcConfig,\n): Rpc {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n if (p === 'then') {\n return undefined;\n }\n return function (...rawParams: unknown[]) {\n const methodName = p.toString();\n const getApiPlan = Reflect.get(target, methodName, receiver);\n if (!getApiPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD, {\n method: methodName,\n params: rawParams,\n });\n }\n const apiPlan = getApiPlan(...rawParams);\n return createPendingRpcRequest(rpcConfig, apiPlan);\n };\n },\n }) as Rpc;\n}\n\nfunction createPendingRpcRequest(\n { transport }: RpcConfig,\n plan: RpcPlan,\n): PendingRpcRequest {\n return {\n async send(options?: RpcSendOptions): Promise {\n return await plan.execute({ signal: options?.abortSignal, transport });\n },\n };\n}\n", "import {\n Callable,\n createRpcMessage,\n RpcRequestTransformer,\n RpcResponse,\n RpcResponseTransformer,\n} from '@solana/rpc-spec-types';\n\nimport type { RpcTransport } from './rpc-transport';\n\nexport type RpcApiConfig = Readonly<{\n /**\n * An optional function that transforms the {@link RpcRequest} before it is sent to the JSON RPC\n * server.\n *\n * This is useful when the params supplied by the caller need to be transformed before\n * forwarding the message to the server. Use cases for this include applying defaults,\n * forwarding calls to renamed methods, and serializing complex values.\n */\n requestTransformer?: RpcRequestTransformer;\n /**\n * An optional function that transforms the {@link RpcResponse} before it is returned to the\n * caller.\n *\n * Use cases for this include constructing complex data types from serialized data, and throwing\n * exceptions.\n */\n responseTransformer?: RpcResponseTransformer;\n}>;\n\n/**\n * This type allows an {@link RpcApi} to describe how a particular request should be issued to the\n * JSON RPC server.\n *\n * Given a function that was called on a {@link Rpc}, this object exposes an `execute` function that\n * dictates which request will be sent, how the underlying transport will be used, and how the\n * responses will be transformed.\n *\n * This function accepts a {@link RpcTransport} and an `AbortSignal` and asynchronously returns a\n * {@link RpcResponse}. This gives us the opportunity to:\n *\n * - define the `payload` from the requested method name and parameters before passing it to the\n * transport.\n * - call the underlying transport zero, one or multiple times depending on the use-case (e.g.\n * caching or aggregating multiple responses).\n * - transform the response from the JSON RPC server, in case it does not match the `TResponse`\n * specified by the {@link PendingRpcRequest | PendingRpcRequest} returned from that\n * function.\n */\nexport type RpcPlan = {\n execute: (\n config: Readonly<{\n signal?: AbortSignal;\n transport: RpcTransport;\n }>,\n ) => Promise>;\n};\n\n/**\n * For each of `TRpcMethods`, this object exposes a method with the same name that maps between its\n * input arguments and a {@link RpcPlan | RpcPlan} that implements the execution of a\n * JSON RPC request to fetch `TResponse`.\n */\nexport type RpcApi = {\n [MethodName in keyof TRpcMethods]: RpcReturnTypeMapper;\n};\n\ntype RpcReturnTypeMapper = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcPlan>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcApiMethod = (...args: any) => any;\ninterface RpcApiMethods {\n [methodName: string]: RpcApiMethod;\n}\n\n/**\n * Creates a JavaScript proxy that converts _any_ function call called on it to a {@link RpcPlan} by\n * creating an `execute` function that:\n *\n * - sets the transport payload to a JSON RPC v2 payload object with the requested `methodName` and\n * `params` properties, optionally transformed by {@link RpcApiConfig.requestTransformer}.\n * - transforms the transport's response using the {@link RpcApiConfig.responseTransformer}\n * function, if provided.\n *\n * @example\n * ```ts\n * // For example, given this `RpcApi`:\n * const rpcApi = createJsonRpcApi({\n * requestTransformer: (...rawParams) => rawParams.reverse(),\n * responseTransformer: response => response.result,\n * });\n *\n * // ...the following function call:\n * rpcApi.foo('bar', { baz: 'bat' });\n *\n * // ...will produce a `RpcPlan` that:\n * // - Uses the following payload: { id: 1, jsonrpc: '2.0', method: 'foo', params: [{ baz: 'bat' }, 'bar'] }.\n * // - Returns the \"result\" property of the RPC response.\n * ```\n */\nexport function createJsonRpcApi(config?: RpcApiConfig): RpcApi {\n return new Proxy({} as RpcApi, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get>(\n ...args: Parameters>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcMethods as string;\n return function (\n ...rawParams: Parameters<\n TRpcMethods[TMethodName] extends CallableFunction ? TRpcMethods[TMethodName] : never\n >\n ): RpcPlan> {\n const rawRequest = Object.freeze({ methodName, params: rawParams });\n const request = config?.requestTransformer ? config?.requestTransformer(rawRequest) : rawRequest;\n return Object.freeze(>>{\n execute: async ({ signal, transport }) => {\n const payload = createRpcMessage(request);\n const response = await transport({ payload, signal });\n if (!config?.responseTransformer) {\n return response;\n }\n return config.responseTransformer(response, request);\n },\n });\n };\n },\n });\n}\n", "import { RpcResponse } from '@solana/rpc-spec-types';\n\ntype Config = Readonly<{\n /** A value of arbitrary type to be sent to a RPC server */\n payload: unknown;\n /**\n * An optional `AbortSignal` on which the `'abort'` event will be fired if the request should be\n * cancelled.\n */\n signal?: AbortSignal;\n}>;\n\n/**\n * A function that can act as a transport for a {@link Rpc}. It need only return a promise for a\n * response given the supplied config.\n */\nexport type RpcTransport = {\n (config: Config): Promise>;\n};\n\n/**\n * Returns `true` if the given payload is a JSON RPC v2 payload.\n *\n * This means, the payload is an object such that:\n *\n * - It has a `jsonrpc` property with a value of `'2.0'`.\n * - It has a `method` property that is a string.\n * - It has a `params` property of any type.\n *\n * @example\n * ```ts\n * import { isJsonRpcPayload } from '@solana/rpc-spec';\n *\n * if (isJsonRpcPayload(payload)) {\n * const payloadMethod: string = payload.method;\n * const payloadParams: unknown = payload.params;\n * }\n * ```\n */\nexport function isJsonRpcPayload(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: string;\n params: unknown;\n}> {\n if (payload == null || typeof payload !== 'object' || Array.isArray(payload)) {\n return false;\n }\n return (\n 'jsonrpc' in payload &&\n payload.jsonrpc === '2.0' &&\n 'method' in payload &&\n typeof payload.method === 'string' &&\n 'params' in payload\n );\n}\n", "export function downcastNodeToNumberIfBigint(value: bigint): number;\nexport function downcastNodeToNumberIfBigint(value: T): T;\nexport function downcastNodeToNumberIfBigint(value: unknown): unknown {\n return typeof value === 'bigint'\n ? // FIXME(solana-labs/solana/issues/30341) Create a data type to represent u64 in the Solana\n // JSON RPC implementation so that we can throw away this entire patcher instead of unsafely\n // downcasting `bigints` to `numbers`.\n Number(value)\n : value;\n}\n", "import { RpcRequest, RpcRequestTransformer, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nexport type KeyPathWildcard = { readonly ['__keyPathWildcard:@solana/kit']: unique symbol };\nexport type KeyPath = ReadonlyArray;\n\nexport const KEYPATH_WILDCARD = {} as KeyPathWildcard;\n\ntype NodeVisitor = (value: unknown, state: TState) => unknown;\nexport type TraversalState = Readonly<{\n keyPath: KeyPath;\n}>;\n\nfunction getTreeWalker(visitors: NodeVisitor[]) {\n return function traverse(node: unknown, state: TState): unknown {\n if (Array.isArray(node)) {\n return node.map((element, ii) => {\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, ii],\n };\n return traverse(element, nextState);\n });\n } else if (typeof node === 'object' && node !== null) {\n const out: Record = {};\n for (const propName in node) {\n if (!Object.prototype.hasOwnProperty.call(node, propName)) {\n continue;\n }\n const nextState = {\n ...state,\n keyPath: [...state.keyPath, propName],\n };\n out[propName] = traverse(node[propName as keyof typeof node], nextState);\n }\n return out;\n } else {\n return visitors.reduce((acc, visitNode) => visitNode(acc, state), node);\n }\n };\n}\n\n/**\n * Creates a transformer that traverses the request parameters and executes the provided visitors at\n * each node. A custom initial state can be provided but must at least provide `{ keyPath: [] }`.\n *\n * @example\n * ```ts\n * import { getTreeWalkerRequestTransformer } from '@solana/rpc-transformers';\n *\n * const requestTransformer = getTreeWalkerRequestTransformer(\n * [\n * // Replaces foo.bar with \"baz\".\n * (node, state) => (state.keyPath === ['foo', 'bar'] ? 'baz' : node),\n * // Increments all numbers by 1.\n * node => (typeof node === number ? node + 1 : node),\n * ],\n * { keyPath: [] },\n * );\n * ```\n */\nexport function getTreeWalkerRequestTransformer(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcRequestTransformer {\n return (request: RpcRequest): RpcRequest => {\n const traverse = getTreeWalker(visitors);\n return Object.freeze({\n ...request,\n params: traverse(request.params, initialState),\n });\n };\n}\n\nexport function getTreeWalkerResponseTransformer(\n visitors: NodeVisitor[],\n initialState: TState,\n): RpcResponseTransformer {\n return json => getTreeWalker(visitors)(json, initialState);\n}\n", "import { downcastNodeToNumberIfBigint } from './request-transformer-bigint-downcast-internal';\nimport { getTreeWalkerRequestTransformer } from './tree-traversal';\n\n/**\n * Creates a transformer that downcasts all `BigInt` values to `Number`.\n *\n * @example\n * ```ts\n * import { getBigIntDowncastRequestTransformer } from '@solana/rpc-transformers';\n *\n * const requestTransformer = getBigIntDowncastRequestTransformer();\n * ```\n *\n */\nexport function getBigIntDowncastRequestTransformer() {\n return getTreeWalkerRequestTransformer([downcastNodeToNumberIfBigint], { keyPath: [] });\n}\n", "import { Commitment } from '@solana/rpc-types';\n\nexport function applyDefaultCommitment({\n commitmentPropertyName,\n params,\n optionsObjectPositionInParams,\n overrideCommitment,\n}: Readonly<{\n commitmentPropertyName: string;\n optionsObjectPositionInParams: number;\n overrideCommitment?: Commitment;\n params: unknown[];\n}>) {\n const paramInTargetPosition = params[optionsObjectPositionInParams];\n if (\n // There's no config.\n paramInTargetPosition === undefined ||\n // There is a config object.\n (paramInTargetPosition && typeof paramInTargetPosition === 'object' && !Array.isArray(paramInTargetPosition))\n ) {\n if (\n // The config object already has a commitment set.\n paramInTargetPosition &&\n commitmentPropertyName in paramInTargetPosition\n ) {\n if (\n !paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] ||\n paramInTargetPosition[commitmentPropertyName as keyof typeof paramInTargetPosition] === 'finalized'\n ) {\n // Delete the commitment property; `finalized` is already the server default.\n const nextParams = [...params];\n const {\n [commitmentPropertyName as keyof typeof paramInTargetPosition]: _, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...rest\n } = paramInTargetPosition;\n if (Object.keys(rest).length > 0) {\n nextParams[optionsObjectPositionInParams] = rest;\n } else {\n if (optionsObjectPositionInParams === nextParams.length - 1) {\n nextParams.length--;\n } else {\n nextParams[optionsObjectPositionInParams] = undefined;\n }\n }\n return nextParams;\n }\n } else if (overrideCommitment !== 'finalized') {\n // Apply the default commitment.\n const nextParams = [...params];\n nextParams[optionsObjectPositionInParams] = {\n ...paramInTargetPosition,\n [commitmentPropertyName]: overrideCommitment,\n };\n return nextParams;\n }\n }\n return params;\n}\n", "import type { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport type { Commitment } from '@solana/rpc-types';\n\nimport { applyDefaultCommitment } from './request-transformer-default-commitment-internal';\n\n/**\n * Creates a transformer that adds the provided default commitment to the configuration object of the request when applicable.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { getDefaultCommitmentRequestTransformer, OPTIONS_OBJECT_POSITION_BY_METHOD } from '@solana/rpc-transformers';\n *\n * const requestTransformer = getDefaultCommitmentRequestTransformer({\n * defaultCommitment: 'confirmed',\n * optionsObjectPositionByMethod: OPTIONS_OBJECT_POSITION_BY_METHOD,\n * });\n */\nexport function getDefaultCommitmentRequestTransformer({\n defaultCommitment,\n optionsObjectPositionByMethod,\n}: Readonly<{\n defaultCommitment?: Commitment;\n optionsObjectPositionByMethod: Record;\n}>): RpcRequestTransformer {\n return (request: RpcRequest): RpcRequest => {\n const { params, methodName } = request;\n\n // We only apply default commitment to array parameters.\n if (!Array.isArray(params)) {\n return request;\n }\n\n // Find the position of the options object in the parameters and abort if not found.\n const optionsObjectPositionInParams = optionsObjectPositionByMethod[methodName];\n if (optionsObjectPositionInParams == null) {\n return request;\n }\n\n return Object.freeze({\n methodName,\n params: applyDefaultCommitment({\n commitmentPropertyName: methodName === 'sendTransaction' ? 'preflightCommitment' : 'commitment',\n optionsObjectPositionInParams,\n overrideCommitment: defaultCommitment,\n params,\n }),\n });\n };\n}\n", "import { KeyPath, TraversalState } from './tree-traversal';\n\nexport function getIntegerOverflowNodeVisitor(onIntegerOverflow: (keyPath: KeyPath, value: bigint) => void) {\n return (value: T, { keyPath }: TraversalState): T => {\n if (typeof value === 'bigint') {\n if (onIntegerOverflow && (value > Number.MAX_SAFE_INTEGER || value < -Number.MAX_SAFE_INTEGER)) {\n onIntegerOverflow(keyPath as (number | string)[], value);\n }\n }\n return value;\n };\n}\n", "import { RpcRequest } from '@solana/rpc-spec-types';\n\nimport { getIntegerOverflowNodeVisitor } from './request-transformer-integer-overflow-internal';\nimport { getTreeWalkerRequestTransformer, KeyPath } from './tree-traversal';\n\nexport type IntegerOverflowHandler = (request: RpcRequest, keyPath: KeyPath, value: bigint) => void;\n\n/**\n * Creates a transformer that traverses the request parameters and executes the provided handler\n * when an integer overflow is detected.\n *\n * @example\n * ```ts\n * import { getIntegerOverflowRequestTransformer } from '@solana/rpc-transformers';\n *\n * const requestTransformer = getIntegerOverflowRequestTransformer((request, keyPath, value) => {\n * throw new Error(`Integer overflow at ${keyPath.join('.')}: ${value}`);\n * });\n * ```\n */\nexport function getIntegerOverflowRequestTransformer(onIntegerOverflow: IntegerOverflowHandler) {\n return (request: RpcRequest): RpcRequest => {\n const transformer = getTreeWalkerRequestTransformer(\n [getIntegerOverflowNodeVisitor((...args) => onIntegerOverflow(request, ...args))],\n { keyPath: [] },\n );\n return transformer(request);\n };\n}\n", "export const OPTIONS_OBJECT_POSITION_BY_METHOD: Record = {\n accountNotifications: 1,\n blockNotifications: 1,\n getAccountInfo: 1,\n getBalance: 1,\n getBlock: 1,\n getBlockHeight: 0,\n getBlockProduction: 0,\n getBlocks: 2,\n getBlocksWithLimit: 2,\n getEpochInfo: 0,\n getFeeForMessage: 1,\n getInflationGovernor: 0,\n getInflationReward: 1,\n getLargestAccounts: 0,\n getLatestBlockhash: 0,\n getLeaderSchedule: 1,\n getMinimumBalanceForRentExemption: 1,\n getMultipleAccounts: 1,\n getProgramAccounts: 1,\n getSignaturesForAddress: 1,\n getSlot: 0,\n getSlotLeader: 0,\n getStakeMinimumDelegation: 0,\n getSupply: 0,\n getTokenAccountBalance: 1,\n getTokenAccountsByDelegate: 2,\n getTokenAccountsByOwner: 2,\n getTokenLargestAccounts: 1,\n getTokenSupply: 1,\n getTransaction: 1,\n getTransactionCount: 0,\n getVoteAccounts: 0,\n isBlockhashValid: 1,\n logsNotifications: 1,\n programNotifications: 1,\n requestAirdrop: 2,\n sendTransaction: 1,\n signatureNotifications: 1,\n simulateTransaction: 1,\n};\n", "import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { Commitment } from '@solana/rpc-types';\n\nimport { getBigIntDowncastRequestTransformer } from './request-transformer-bigint-downcast';\nimport { getDefaultCommitmentRequestTransformer } from './request-transformer-default-commitment';\nimport { getIntegerOverflowRequestTransformer, IntegerOverflowHandler } from './request-transformer-integer-overflow';\nimport { OPTIONS_OBJECT_POSITION_BY_METHOD } from './request-transformer-options-object-position-config';\n\nexport type RequestTransformerConfig = Readonly<{\n /**\n * An optional {@link Commitment} value to use as the default when none is supplied by the\n * caller.\n */\n defaultCommitment?: Commitment;\n /**\n * An optional function that will be called whenever a `bigint` input exceeds that which can be\n * expressed using JavaScript numbers.\n *\n * This is used in the default {@link SolanaRpcSubscriptionsApi} to throw an exception rather\n * than to allow truncated values to propagate through a program.\n */\n onIntegerOverflow?: IntegerOverflowHandler;\n}>;\n\n/**\n * Returns the default request transformer for the Solana RPC API.\n *\n * Under the hood, this function composes multiple\n * {@link RpcRequestTransformer | RpcRequestTransformers} together such as the\n * {@link getDefaultCommitmentTransformer}, the {@link getIntegerOverflowRequestTransformer} and the\n * {@link getBigIntDowncastRequestTransformer}.\n *\n * @example\n * ```ts\n * import { getDefaultRequestTransformerForSolanaRpc } from '@solana/rpc-transformers';\n *\n * const requestTransformer = getDefaultRequestTransformerForSolanaRpc({\n * defaultCommitment: 'confirmed',\n * onIntegerOverflow: (request, keyPath, value) => {\n * throw new Error(`Integer overflow at ${keyPath.join('.')}: ${value}`);\n * },\n * });\n * ```\n */\nexport function getDefaultRequestTransformerForSolanaRpc(config?: RequestTransformerConfig): RpcRequestTransformer {\n const handleIntegerOverflow = config?.onIntegerOverflow;\n return (request: RpcRequest): RpcRequest => {\n return pipe(\n request,\n handleIntegerOverflow ? getIntegerOverflowRequestTransformer(handleIntegerOverflow) : r => r,\n getBigIntDowncastRequestTransformer(),\n getDefaultCommitmentRequestTransformer({\n defaultCommitment: config?.defaultCommitment,\n optionsObjectPositionByMethod: OPTIONS_OBJECT_POSITION_BY_METHOD,\n }),\n );\n };\n}\n", "import { KeyPath, KEYPATH_WILDCARD, TraversalState } from './tree-traversal';\n\nexport function getBigIntUpcastVisitor(allowedNumericKeyPaths: readonly KeyPath[]) {\n return function upcastNodeToBigIntIfNumber(value: unknown, { keyPath }: TraversalState) {\n const isInteger = (typeof value === 'number' && Number.isInteger(value)) || typeof value === 'bigint';\n if (!isInteger) return value;\n if (keyPathIsAllowedToBeNumeric(keyPath, allowedNumericKeyPaths)) {\n return Number(value);\n } else {\n return BigInt(value);\n }\n };\n}\n\nfunction keyPathIsAllowedToBeNumeric(keyPath: KeyPath, allowedNumericKeyPaths: readonly KeyPath[]) {\n return allowedNumericKeyPaths.some(prohibitedKeyPath => {\n if (prohibitedKeyPath.length !== keyPath.length) {\n return false;\n }\n for (let ii = keyPath.length - 1; ii >= 0; ii--) {\n const keyPathPart = keyPath[ii];\n const prohibitedKeyPathPart = prohibitedKeyPath[ii];\n if (\n prohibitedKeyPathPart !== keyPathPart &&\n (prohibitedKeyPathPart !== KEYPATH_WILDCARD || typeof keyPathPart !== 'number')\n ) {\n return false;\n }\n }\n return true;\n });\n}\n", "import { getBigIntUpcastVisitor } from './response-transformer-bigint-upcast-internal';\nimport { getTreeWalkerResponseTransformer, KeyPath } from './tree-traversal';\n\n/**\n * Returns a transformer that upcasts all `Number` values to `BigInts` unless they match within the\n * provided {@link KeyPath | KeyPaths}. In other words, the provided {@link KeyPath | KeyPaths} will\n * remain as `Number` values, any other numeric value will be upcasted to a `BigInt`.\n *\n * Note that you can use {@link KEYPATH_WILDCARD} to match any key within a {@link KeyPath}.\n *\n * @example\n * ```ts\n * import { getBigIntUpcastResponseTransformer } from '@solana/rpc-transformers';\n *\n * const responseTransformer = getBigIntUpcastResponseTransformer([\n * ['index'],\n * ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n * ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n * ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n * ]);\n * ```\n */\nexport function getBigIntUpcastResponseTransformer(allowedNumericKeyPaths: readonly KeyPath[]) {\n return getTreeWalkerResponseTransformer([getBigIntUpcastVisitor(allowedNumericKeyPaths)], { keyPath: [] });\n}\n", "import { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { result: unknown };\n\n/**\n * Returns a transformer that extracts the `result` field from the body of the RPC response.\n *\n * For instance, we go from `{ jsonrpc: '2.0', result: 'foo', id: 1 }` to `'foo'`.\n *\n * @example\n * ```ts\n * import { getResultResponseTransformer } from '@solana/rpc-transformers';\n *\n * const responseTransformer = getResultResponseTransformer();\n * ```\n */\nexport function getResultResponseTransformer(): RpcResponseTransformer {\n return json => (json as JsonRpcResponse).result;\n}\n", "import { getSolanaErrorFromJsonRpcError } from '@solana/errors';\nimport { RpcResponseTransformer } from '@solana/rpc-spec-types';\n\ntype JsonRpcResponse = { error: Parameters[0] } | { result: unknown };\n\n/**\n * Returns a transformer that throws a {@link SolanaError} with the appropriate RPC error code if\n * the body of the RPC response contains an error.\n *\n * @example\n * ```ts\n * import { getThrowSolanaErrorResponseTransformer } from '@solana/rpc-transformers';\n *\n * const responseTransformer = getThrowSolanaErrorResponseTransformer();\n * ```\n */\nexport function getThrowSolanaErrorResponseTransformer(): RpcResponseTransformer {\n return json => {\n const jsonRpcResponse = json as JsonRpcResponse;\n if ('error' in jsonRpcResponse) {\n throw getSolanaErrorFromJsonRpcError(jsonRpcResponse.error);\n }\n return jsonRpcResponse;\n };\n}\n", "import { pipe } from '@solana/functional';\nimport { RpcRequest, RpcResponse, RpcResponseTransformer } from '@solana/rpc-spec-types';\n\nimport { AllowedNumericKeypaths } from './response-transformer-allowed-numeric-values';\nimport { getBigIntUpcastResponseTransformer } from './response-transformer-bigint-upcast';\nimport { getResultResponseTransformer } from './response-transformer-result';\nimport { getThrowSolanaErrorResponseTransformer } from './response-transformer-throw-solana-error';\n\nexport type ResponseTransformerConfig = Readonly<{\n /**\n * An optional map from the name of an API method to an array of {@link KeyPath | KeyPaths}\n * pointing to values in the response that should materialize in the application as `Number`\n * instead of `BigInt`.\n */\n allowedNumericKeyPaths?: AllowedNumericKeypaths;\n}>;\n\n/**\n * Returns the default response transformer for the Solana RPC API.\n *\n * Under the hood, this function composes multiple\n * {@link RpcResponseTransformer | RpcResponseTransformers} together such as the\n * {@link getThrowSolanaErrorResponseTransformer}, the {@link getResultResponseTransformer} and the\n * {@link getBigIntUpcastResponseTransformer}.\n *\n * @example\n * ```ts\n * import { getDefaultResponseTransformerForSolanaRpc } from '@solana/rpc-transformers';\n *\n * const responseTransformer = getDefaultResponseTransformerForSolanaRpc({\n * allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n * });\n * ```\n */\nexport function getDefaultResponseTransformerForSolanaRpc(\n config?: ResponseTransformerConfig,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(\n response,\n r => getThrowSolanaErrorResponseTransformer()(r, request),\n r => getResultResponseTransformer()(r, request),\n r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request),\n );\n };\n}\n\n/**\n * Returns the default response transformer for the Solana RPC Subscriptions API.\n *\n * Under the hood, this function composes the {@link getBigIntUpcastResponseTransformer}.\n *\n * @example\n * ```ts\n * import { getDefaultResponseTransformerForSolanaRpcSubscriptions } from '@solana/rpc-transformers';\n *\n * const responseTransformer = getDefaultResponseTransformerForSolanaRpcSubscriptions({\n * allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n * });\n * ```\n */\nexport function getDefaultResponseTransformerForSolanaRpcSubscriptions(\n config?: ResponseTransformerConfig,\n): RpcResponseTransformer {\n return (response: RpcResponse, request: RpcRequest): RpcResponse => {\n const methodName = request.methodName as keyof TApi;\n const keyPaths =\n config?.allowedNumericKeyPaths && methodName ? config.allowedNumericKeyPaths[methodName] : undefined;\n return pipe(response, r => getBigIntUpcastResponseTransformer(keyPaths ?? [])(r, request));\n };\n}\n", "import { KeyPath, KEYPATH_WILDCARD } from './tree-traversal';\n\nexport type AllowedNumericKeypaths = Partial>;\n\n// Numeric values nested in `jsonParsed` accounts\nexport const jsonParsedTokenAccountsConfigs = [\n // parsed Token/Token22 token account\n ['data', 'parsed', 'info', 'tokenAmount', 'decimals'],\n ['data', 'parsed', 'info', 'tokenAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'decimals'],\n ['data', 'parsed', 'info', 'rentExemptReserve', 'uiAmount'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'decimals'],\n ['data', 'parsed', 'info', 'delegatedAmount', 'uiAmount'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'olderTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'newerTransferFee', 'transferFeeBasisPoints'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'preUpdateAverageRate'],\n ['data', 'parsed', 'info', 'extensions', KEYPATH_WILDCARD, 'state', 'currentRate'],\n];\nexport const jsonParsedAccountsConfigs = [\n ...jsonParsedTokenAccountsConfigs,\n // parsed AddressTableLookup account\n ['data', 'parsed', 'info', 'lastExtendedSlotStartIndex'],\n // parsed Config account\n ['data', 'parsed', 'info', 'slashPenalty'],\n ['data', 'parsed', 'info', 'warmupCooldownRate'],\n // parsed Token/Token22 mint account\n ['data', 'parsed', 'info', 'decimals'],\n // parsed Token/Token22 multisig account\n ['data', 'parsed', 'info', 'numRequiredSigners'],\n ['data', 'parsed', 'info', 'numValidSigners'],\n // parsed Stake account\n ['data', 'parsed', 'info', 'stake', 'delegation', 'warmupCooldownRate'],\n // parsed Sysvar rent account\n ['data', 'parsed', 'info', 'exemptionThreshold'],\n ['data', 'parsed', 'info', 'burnPercent'],\n // parsed Vote account\n ['data', 'parsed', 'info', 'commission'],\n ['data', 'parsed', 'info', 'votes', KEYPATH_WILDCARD, 'confirmationCount'],\n];\nexport const innerInstructionsConfigs = [\n ['index'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n];\nexport const messageConfig = [\n ['addressTableLookups', KEYPATH_WILDCARD, 'writableIndexes', KEYPATH_WILDCARD],\n ['addressTableLookups', KEYPATH_WILDCARD, 'readonlyIndexes', KEYPATH_WILDCARD],\n ['header', 'numReadonlySignedAccounts'],\n ['header', 'numReadonlyUnsignedAccounts'],\n ['header', 'numRequiredSignatures'],\n ['instructions', KEYPATH_WILDCARD, 'accounts', KEYPATH_WILDCARD],\n ['instructions', KEYPATH_WILDCARD, 'programIdIndex'],\n ['instructions', KEYPATH_WILDCARD, 'stackHeight'],\n] as const;\n", "/**\n * This package contains types that describe the [methods](https://solana.com/docs/rpc/http) of the\n * Solana JSON RPC API, and utilities for creating a {@link RpcApi} implementation with sensible\n * defaults. It can be used standalone, but it is also exported as part of Kit\n * [`@solana/kit`](https://github.com/anza-xyz/kit/tree/main/packages/kit).\n *\n * @example\n * Each RPC method is described in terms of a TypeScript type of the following form:\n *\n * ```ts\n * type ExampleApi = {\n * getSomething(address: Address): Something;\n * };\n * ```\n *\n * A {@link RpcApi} that implements `ExampleApi` will ultimately expose its defined methods on any\n * {@link Rpc} that uses it.\n *\n * ```ts\n * const rpc: Rpc = createExampleRpc(/* ... *\\/);\n * const something: Something = await rpc.getSomething(address('95DpK3y3GF7U8s1k4EvZ7xqyeCkhsHeZaE97iZpHUGMN')).send();\n * ```\n *\n * @packageDocumentation\n */\nimport { createJsonRpcApi, RpcApi } from '@solana/rpc-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpc,\n innerInstructionsConfigs,\n jsonParsedAccountsConfigs,\n jsonParsedTokenAccountsConfigs,\n KEYPATH_WILDCARD,\n messageConfig,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { GetAccountInfoApi } from './getAccountInfo';\nimport { GetBalanceApi } from './getBalance';\nimport { GetBlockApi } from './getBlock';\nimport { GetBlockCommitmentApi } from './getBlockCommitment';\nimport { GetBlockHeightApi } from './getBlockHeight';\nimport { GetBlockProductionApi } from './getBlockProduction';\nimport { GetBlocksApi } from './getBlocks';\nimport { GetBlocksWithLimitApi } from './getBlocksWithLimit';\nimport { GetBlockTimeApi } from './getBlockTime';\nimport { GetClusterNodesApi } from './getClusterNodes';\nimport { GetEpochInfoApi } from './getEpochInfo';\nimport { GetEpochScheduleApi } from './getEpochSchedule';\nimport { GetFeeForMessageApi } from './getFeeForMessage';\nimport { GetFirstAvailableBlockApi } from './getFirstAvailableBlock';\nimport { GetGenesisHashApi } from './getGenesisHash';\nimport { GetHealthApi } from './getHealth';\nimport { GetHighestSnapshotSlotApi } from './getHighestSnapshotSlot';\nimport { GetIdentityApi } from './getIdentity';\nimport { GetInflationGovernorApi } from './getInflationGovernor';\nimport { GetInflationRateApi } from './getInflationRate';\nimport { GetInflationRewardApi } from './getInflationReward';\nimport { GetLargestAccountsApi } from './getLargestAccounts';\nimport { GetLatestBlockhashApi } from './getLatestBlockhash';\nimport { GetLeaderScheduleApi } from './getLeaderSchedule';\nimport { GetMaxRetransmitSlotApi } from './getMaxRetransmitSlot';\nimport { GetMaxShredInsertSlotApi } from './getMaxShredInsertSlot';\nimport { GetMinimumBalanceForRentExemptionApi } from './getMinimumBalanceForRentExemption';\nimport { GetMultipleAccountsApi } from './getMultipleAccounts';\nimport { GetProgramAccountsApi } from './getProgramAccounts';\nimport { GetRecentPerformanceSamplesApi } from './getRecentPerformanceSamples';\nimport { GetRecentPrioritizationFeesApi } from './getRecentPrioritizationFees';\nimport { GetSignaturesForAddressApi } from './getSignaturesForAddress';\nimport { GetSignatureStatusesApi } from './getSignatureStatuses';\nimport { GetSlotApi } from './getSlot';\nimport { GetSlotLeaderApi } from './getSlotLeader';\nimport { GetSlotLeadersApi } from './getSlotLeaders';\nimport { GetStakeMinimumDelegationApi } from './getStakeMinimumDelegation';\nimport { GetSupplyApi } from './getSupply';\nimport { GetTokenAccountBalanceApi } from './getTokenAccountBalance';\nimport { GetTokenAccountsByDelegateApi } from './getTokenAccountsByDelegate';\nimport { GetTokenAccountsByOwnerApi } from './getTokenAccountsByOwner';\nimport { GetTokenLargestAccountsApi } from './getTokenLargestAccounts';\nimport { GetTokenSupplyApi } from './getTokenSupply';\nimport { GetTransactionApi } from './getTransaction';\nimport { GetTransactionCountApi } from './getTransactionCount';\nimport { GetVersionApi } from './getVersion';\nimport { GetVoteAccountsApi } from './getVoteAccounts';\nimport { IsBlockhashValidApi } from './isBlockhashValid';\nimport { MinimumLedgerSlotApi } from './minimumLedgerSlot';\nimport { RequestAirdropApi } from './requestAirdrop';\nimport { SendTransactionApi } from './sendTransaction';\nimport { SimulateTransactionApi } from './simulateTransaction';\n\ntype SolanaRpcApiForAllClusters = GetAccountInfoApi &\n GetBalanceApi &\n GetBlockApi &\n GetBlockCommitmentApi &\n GetBlockHeightApi &\n GetBlockProductionApi &\n GetBlocksApi &\n GetBlocksWithLimitApi &\n GetBlockTimeApi &\n GetClusterNodesApi &\n GetEpochInfoApi &\n GetEpochScheduleApi &\n GetFeeForMessageApi &\n GetFirstAvailableBlockApi &\n GetGenesisHashApi &\n GetHealthApi &\n GetHighestSnapshotSlotApi &\n GetIdentityApi &\n GetInflationGovernorApi &\n GetInflationRateApi &\n GetInflationRewardApi &\n GetLargestAccountsApi &\n GetLatestBlockhashApi &\n GetLeaderScheduleApi &\n GetMaxRetransmitSlotApi &\n GetMaxShredInsertSlotApi &\n GetMinimumBalanceForRentExemptionApi &\n GetMultipleAccountsApi &\n GetProgramAccountsApi &\n GetRecentPerformanceSamplesApi &\n GetRecentPrioritizationFeesApi &\n GetSignaturesForAddressApi &\n GetSignatureStatusesApi &\n GetSlotApi &\n GetSlotLeaderApi &\n GetSlotLeadersApi &\n GetStakeMinimumDelegationApi &\n GetSupplyApi &\n GetTokenAccountBalanceApi &\n GetTokenAccountsByDelegateApi &\n GetTokenAccountsByOwnerApi &\n GetTokenLargestAccountsApi &\n GetTokenSupplyApi &\n GetTransactionApi &\n GetTransactionCountApi &\n GetVersionApi &\n GetVoteAccountsApi &\n IsBlockhashValidApi &\n MinimumLedgerSlotApi &\n SendTransactionApi &\n SimulateTransactionApi;\ntype SolanaRpcApiForTestClusters = RequestAirdropApi & SolanaRpcApiForAllClusters;\n/**\n * Represents the RPC methods available on test clusters.\n *\n * For instance, the test clusters support the {@link RequestAirdropApi} while mainnet does not.\n */\nexport type SolanaRpcApi = SolanaRpcApiForTestClusters;\n/**\n * Represents the RPC methods available on the devnet cluster.\n *\n * For instance, the devnet cluster supports the {@link RequestAirdropApi} while mainnet does not.\n */\nexport type SolanaRpcApiDevnet = SolanaRpcApiForTestClusters;\n/**\n * Represents the RPC methods available on the testnet cluster.\n *\n * For instance, the testnet cluster supports the {@link RequestAirdropApi} while mainnet does not.\n */\nexport type SolanaRpcApiTestnet = SolanaRpcApiForTestClusters;\n/**\n * Represents the RPC methods available on the mainnet cluster.\n *\n * For instance, the mainnet cluster does not support the {@link RequestAirdropApi} whereas test\n * clusters do.\n */\nexport type SolanaRpcApiMainnet = SolanaRpcApiForAllClusters;\n\nexport type {\n GetAccountInfoApi,\n GetBalanceApi,\n GetBlockApi,\n GetBlockCommitmentApi,\n GetBlockHeightApi,\n GetBlockProductionApi,\n GetBlocksApi,\n GetBlocksWithLimitApi,\n GetBlockTimeApi,\n GetClusterNodesApi,\n GetEpochInfoApi,\n GetEpochScheduleApi,\n GetFeeForMessageApi,\n GetFirstAvailableBlockApi,\n GetGenesisHashApi,\n GetHealthApi,\n GetHighestSnapshotSlotApi,\n GetIdentityApi,\n GetInflationGovernorApi,\n GetInflationRateApi,\n GetInflationRewardApi,\n GetLargestAccountsApi,\n GetLatestBlockhashApi,\n GetLeaderScheduleApi,\n GetMaxRetransmitSlotApi,\n GetMaxShredInsertSlotApi,\n GetMinimumBalanceForRentExemptionApi,\n GetMultipleAccountsApi,\n GetProgramAccountsApi,\n GetRecentPerformanceSamplesApi,\n GetRecentPrioritizationFeesApi,\n GetSignaturesForAddressApi,\n GetSignatureStatusesApi,\n GetSlotApi,\n GetSlotLeaderApi,\n GetSlotLeadersApi,\n GetStakeMinimumDelegationApi,\n GetSupplyApi,\n GetTokenAccountBalanceApi,\n GetTokenAccountsByDelegateApi,\n GetTokenAccountsByOwnerApi,\n GetTokenLargestAccountsApi,\n GetTokenSupplyApi,\n GetTransactionApi,\n GetTransactionCountApi,\n GetVersionApi,\n GetVoteAccountsApi,\n IsBlockhashValidApi,\n MinimumLedgerSlotApi,\n RequestAirdropApi,\n SendTransactionApi,\n SimulateTransactionApi,\n};\n\ntype Config = RequestTransformerConfig;\n\n/**\n * Creates a {@link RpcApi} implementation of the Solana JSON RPC API with some default behaviours.\n *\n * The default behaviours include:\n * - A transform that converts `bigint` inputs to `number` for compatibility with version 1.0 of the\n * Solana JSON RPC.\n * - A transform that calls the config's {@link Config.onIntegerOverflow | onIntegerOverflow}\n * handler whenever a `bigint` input would overflow a JavaScript IEEE 754 number. See\n * [this](https://github.com/solana-labs/solana-web3.js/issues/1116) GitHub issue for more\n * information.\n * - A transform that applies a default commitment wherever not specified\n */\nexport function createSolanaRpcApi<\n // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents\n TRpcMethods extends SolanaRpcApi | SolanaRpcApiDevnet | SolanaRpcApiMainnet | SolanaRpcApiTestnet = SolanaRpcApi,\n>(config?: Config): RpcApi {\n return createJsonRpcApi({\n requestTransformer: getDefaultRequestTransformerForSolanaRpc(config),\n responseTransformer: getDefaultResponseTransformerForSolanaRpc({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n }),\n });\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n getAccountInfo: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n getBlock: [\n ['transactions', KEYPATH_WILDCARD, 'meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => [\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n ...c,\n ]),\n ...messageConfig.map(c => ['transactions', KEYPATH_WILDCARD, 'transaction', 'message', ...c] as const),\n ['rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n getClusterNodes: [\n [KEYPATH_WILDCARD, 'featureSet'],\n [KEYPATH_WILDCARD, 'shredVersion'],\n ],\n getInflationGovernor: [['initial'], ['foundation'], ['foundationTerm'], ['taper'], ['terminal']],\n getInflationRate: [['foundation'], ['total'], ['validator']],\n getInflationReward: [[KEYPATH_WILDCARD, 'commission']],\n getMultipleAccounts: jsonParsedAccountsConfigs.map(c => ['value', KEYPATH_WILDCARD, ...c]),\n getProgramAccounts: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n getRecentPerformanceSamples: [[KEYPATH_WILDCARD, 'samplePeriodSecs']],\n getTokenAccountBalance: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTokenAccountsByDelegate: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenAccountsByOwner: jsonParsedTokenAccountsConfigs.map(c => [\n 'value',\n KEYPATH_WILDCARD,\n 'account',\n ...c,\n ]),\n getTokenLargestAccounts: [\n ['value', KEYPATH_WILDCARD, 'decimals'],\n ['value', KEYPATH_WILDCARD, 'uiAmount'],\n ],\n getTokenSupply: [\n ['value', 'decimals'],\n ['value', 'uiAmount'],\n ],\n getTransaction: [\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'preTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'accountIndex'],\n ['meta', 'postTokenBalances', KEYPATH_WILDCARD, 'uiTokenAmount', 'decimals'],\n ['meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ...innerInstructionsConfigs.map(c => ['meta', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ...messageConfig.map(c => ['transaction', 'message', ...c] as const),\n ],\n getVersion: [['feature-set']],\n getVoteAccounts: [\n ['current', KEYPATH_WILDCARD, 'commission'],\n ['delinquent', KEYPATH_WILDCARD, 'commission'],\n ],\n simulateTransaction: [\n ...jsonParsedAccountsConfigs.map(c => ['value', 'accounts', KEYPATH_WILDCARD, ...c]),\n ...innerInstructionsConfigs.map(c => ['value', 'innerInstructions', KEYPATH_WILDCARD, ...c]),\n ],\n };\n }\n return memoizedKeypaths;\n}\n", "import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, SolanaError } from '@solana/errors';\n\nexport type AllowedHttpRequestHeaders = Readonly<\n {\n // Someone can still sneak a forbidden header past Typescript if they do something like\n // fOo-BaR, but at that point they deserve the runtime failure.\n [K in DisallowedHeaders | ForbiddenHeaders as\n | Capitalize> // `Foo-bar`\n | K // `Foo-Bar`\n | Lowercase // `foo-bar`\n | Uncapitalize // `foo-Bar`\n // `FOO-BAR`\n | Uppercase]?: never;\n } & { [headerName: string]: string }\n>;\n// These are headers that we simply don't allow the developer to override because they're\n// fundamental to the operation of the JSON-RPC transport.\ntype DisallowedHeaders = 'Accept' | 'Content-Length' | 'Content-Type' | 'Solana-Client';\ntype ForbiddenHeaders =\n | 'Accept-Charset'\n // Though technically forbidden in non-Node environments, we don't have a way to target\n // TypeScript types depending on which platform you are authoring for. `Accept-Encoding` is\n // therefore omitted from the forbidden headers type, but is still a runtime error in dev mode\n // when supplied in a non-Node context.\n // | 'Accept-Encoding'\n | 'Access-Control-Request-Headers'\n | 'Access-Control-Request-Method'\n | 'Connection'\n | 'Content-Length'\n | 'Cookie'\n | 'Date'\n | 'DNT'\n | 'Expect'\n | 'Host'\n | 'Keep-Alive'\n | 'Origin'\n | 'Permissions-Policy'\n | 'Referer'\n | 'TE'\n | 'Trailer'\n | 'Transfer-Encoding'\n | 'Upgrade'\n | 'Via'\n | `Proxy-${string}`\n | `Sec-${string}`;\n\n// These are headers which are fundamental to the JSON-RPC transport, and must not be modified.\nconst DISALLOWED_HEADERS: Record = {\n accept: true,\n 'content-length': true,\n 'content-type': true,\n};\n// https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\nconst FORBIDDEN_HEADERS: Record = /* @__PURE__ */ Object.assign(\n {\n 'accept-charset': true,\n 'access-control-request-headers': true,\n 'access-control-request-method': true,\n connection: true,\n 'content-length': true,\n cookie: true,\n date: true,\n dnt: true,\n expect: true,\n host: true,\n 'keep-alive': true,\n origin: true,\n 'permissions-policy': true,\n // Prefix matching is implemented in code, below.\n // 'proxy-': true,\n // 'sec-': true,\n referer: true,\n te: true,\n trailer: true,\n 'transfer-encoding': true,\n upgrade: true,\n via: true,\n },\n __NODEJS__ ? undefined : { 'accept-encoding': true },\n);\n\nexport function assertIsAllowedHttpRequestHeaders(\n headers: Record,\n): asserts headers is AllowedHttpRequestHeaders {\n const badHeaders = Object.keys(headers).filter(headerName => {\n const lowercaseHeaderName = headerName.toLowerCase();\n return (\n DISALLOWED_HEADERS[headerName.toLowerCase()] === true ||\n FORBIDDEN_HEADERS[headerName.toLowerCase()] === true ||\n lowercaseHeaderName.startsWith('proxy-') ||\n lowercaseHeaderName.startsWith('sec-')\n );\n });\n if (badHeaders.length > 0) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN, {\n headers: badHeaders,\n });\n }\n}\n\n// Lowercasing header names makes it easier to override user-supplied headers, such as those defined\n// in the `DisallowedHeaders` type.\nexport function normalizeHeaders>(\n headers: T,\n): { [K in string & keyof T as Lowercase]: T[K] } {\n const out: Record = {};\n for (const headerName in headers) {\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase]: T[K] };\n}\n", "import { SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, SolanaError } from '@solana/errors';\nimport type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\nimport type Dispatcher from 'undici-types/dispatcher';\n\nimport { HttpTransportConfig as Config } from './http-transport-config';\nimport { assertIsAllowedHttpRequestHeaders, normalizeHeaders } from './http-transport-headers';\n\nlet didWarnDispatcherWasSuppliedInNonNodeEnvironment = false;\nfunction warnDispatcherWasSuppliedInNonNodeEnvironment() {\n if (didWarnDispatcherWasSuppliedInNonNodeEnvironment) {\n return;\n }\n didWarnDispatcherWasSuppliedInNonNodeEnvironment = true;\n console.warn(\n 'You have supplied a `Dispatcher` to `createHttpTransport()`. It has been ignored ' +\n 'because Undici dispatchers only work in Node environments. To eliminate this ' +\n 'warning, omit the `dispatcher_NODE_ONLY` property from your config when running in ' +\n 'a non-Node environment.',\n );\n}\n\n/**\n * Creates a function you can use to make `POST` requests with headers suitable for sending JSON\n * data to a server.\n *\n * @example\n * ```ts\n * import { createHttpTransport } from '@solana/rpc-transport-http';\n *\n * const transport = createHttpTransport({ url: 'https://api.mainnet-beta.solana.com' });\n * const response = await transport({\n * payload: { id: 1, jsonrpc: '2.0', method: 'getSlot' },\n * });\n * const data = await response.json();\n * ```\n */\nexport function createHttpTransport(config: Config): RpcTransport {\n if (process.env.NODE_ENV !== \"production\" && !__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n warnDispatcherWasSuppliedInNonNodeEnvironment();\n }\n const { fromJson, headers, toJson, url } = config;\n if (process.env.NODE_ENV !== \"production\" && headers) {\n assertIsAllowedHttpRequestHeaders(headers);\n }\n let dispatcherConfig: { dispatcher: Dispatcher | undefined } | undefined;\n if (__NODEJS__ && 'dispatcher_NODE_ONLY' in config) {\n dispatcherConfig = { dispatcher: config.dispatcher_NODE_ONLY };\n }\n const customHeaders = headers && normalizeHeaders(headers);\n return async function makeHttpRequest({\n payload,\n signal,\n }: Parameters[0]): Promise> {\n const body = toJson ? toJson(payload) : JSON.stringify(payload);\n const requestInfo = {\n ...dispatcherConfig,\n body,\n headers: {\n ...customHeaders,\n // Keep these headers lowercase so they will override any user-supplied headers above.\n accept: 'application/json',\n 'content-length': body.length.toString(),\n 'content-type': 'application/json; charset=utf-8',\n },\n method: 'POST',\n signal,\n };\n const response = await fetch(url, requestInfo);\n if (!response.ok) {\n throw new SolanaError(SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR, {\n headers: response.headers,\n message: response.statusText,\n statusCode: response.status,\n });\n }\n if (fromJson) {\n return fromJson(await response.text(), payload) as TResponse;\n }\n return await response.json();\n };\n}\n", "import { isJsonRpcPayload } from '@solana/rpc-spec';\n\nconst SOLANA_RPC_METHODS = [\n 'getAccountInfo',\n 'getBalance',\n 'getBlock',\n 'getBlockCommitment',\n 'getBlockHeight',\n 'getBlockProduction',\n 'getBlocks',\n 'getBlocksWithLimit',\n 'getBlockTime',\n 'getClusterNodes',\n 'getEpochInfo',\n 'getEpochSchedule',\n 'getFeeForMessage',\n 'getFirstAvailableBlock',\n 'getGenesisHash',\n 'getHealth',\n 'getHighestSnapshotSlot',\n 'getIdentity',\n 'getInflationGovernor',\n 'getInflationRate',\n 'getInflationReward',\n 'getLargestAccounts',\n 'getLatestBlockhash',\n 'getLeaderSchedule',\n 'getMaxRetransmitSlot',\n 'getMaxShredInsertSlot',\n 'getMinimumBalanceForRentExemption',\n 'getMultipleAccounts',\n 'getProgramAccounts',\n 'getRecentPerformanceSamples',\n 'getRecentPrioritizationFees',\n 'getSignaturesForAddress',\n 'getSignatureStatuses',\n 'getSlot',\n 'getSlotLeader',\n 'getSlotLeaders',\n 'getStakeMinimumDelegation',\n 'getSupply',\n 'getTokenAccountBalance',\n 'getTokenAccountsByDelegate',\n 'getTokenAccountsByOwner',\n 'getTokenLargestAccounts',\n 'getTokenSupply',\n 'getTransaction',\n 'getTransactionCount',\n 'getVersion',\n 'getVoteAccounts',\n 'index',\n 'isBlockhashValid',\n 'minimumLedgerSlot',\n 'requestAirdrop',\n 'sendTransaction',\n 'simulateTransaction',\n] as const;\n\n/**\n * Helper function that checks if a given `RpcRequest` comes from the Solana RPC API.\n */\nexport function isSolanaRequest(payload: unknown): payload is Readonly<{\n jsonrpc: '2.0';\n method: (typeof SOLANA_RPC_METHODS)[number];\n params: unknown;\n}> {\n return isJsonRpcPayload(payload) && (SOLANA_RPC_METHODS as readonly string[]).includes(payload.method);\n}\n", "import { RpcTransport } from '@solana/rpc-spec';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\n\nimport { createHttpTransport } from './http-transport';\nimport { HttpTransportConfig } from './http-transport-config';\nimport { isSolanaRequest } from './is-solana-request';\n\ntype Config = Pick;\n\n/**\n * Creates a {@link RpcTransport} that uses JSON HTTP requests — much like the\n * {@link createHttpTransport} function - except that it also uses custom `toJson` and `fromJson`\n * functions in order to allow `bigint` values to be serialized and deserialized correctly over the\n * wire.\n *\n * Since this is something specific to the Solana RPC API, these custom JSON functions are only\n * triggered when the request is recognized as a Solana RPC request. Normal RPC APIs should aim to\n * wrap their `bigint` values — e.g. `u64` or `i64` — in special value objects that represent the\n * number as a string to avoid numerical values going above `Number.MAX_SAFE_INTEGER`.\n *\n * It has the same configuration options as {@link createHttpTransport}, but without the `fromJson`\n * and `toJson` options.\n */\nexport function createHttpTransportForSolanaRpc(config: Config): RpcTransport {\n return createHttpTransport({\n ...config,\n fromJson: (rawResponse: string, payload: unknown) =>\n isSolanaRequest(payload) ? parseJsonWithBigInts(rawResponse) : JSON.parse(rawResponse),\n toJson: (payload: unknown) =>\n isSolanaRequest(payload) ? stringifyJsonWithBigints(payload) : JSON.stringify(payload),\n });\n}\n", "/**\n * This project is a fork of [nickyout/fast-stable-stringify](https://github.com/nickyout/fast-stable-stringify)\n *\n * The most popular repository providing this feature is [substack's json-stable-stringify](https://www.npmjs.com/package/json-stable-stringify). The intent of this library is to provide a faster alternative for when performance is more important than features. It assumes you provide basic javascript values without circular references, and returns a non-indented string.\n *\n * Just like substack's, it:\n *\n * - handles all variations of all basic javascript values (number, string, boolean, array, object, null, Date, BigInt)\n * - handles undefined _and_ function in the same way as `JSON.stringify`\n * - **does not support ie8 (and below) with complete certainty**.\n *\n * Unlike substack's, it:\n *\n * - does not implement the 'replacer' or 'space' arguments of the JSON.stringify method\n * - does not check for circular references\n *\n * @example\n * ```js\n * import stringify from '@solana/fast-stable-stringify';\n * stringify({ d: 0, c: 1, a: 2, b: 3, e: 4 }); // '{\"a\":2,\"b\":3,\"c\":1,\"d\":0,\"e\":4}'\n * ```\n *\n * @packageDocumentation\n */\nconst objToString = Object.prototype.toString;\nconst objKeys =\n Object.keys ||\n function (obj) {\n const keys = [];\n for (const name in obj) {\n keys.push(name);\n }\n return keys;\n };\n\nfunction stringify(val: unknown, isArrayProp: boolean) {\n let i, max, str, keys, key, propVal, toStr;\n if (val === true) {\n return 'true';\n }\n if (val === false) {\n return 'false';\n }\n switch (typeof val) {\n case 'object':\n if (val === null) {\n return null;\n } else if ('toJSON' in val && typeof val.toJSON === 'function') {\n return stringify(val.toJSON(), isArrayProp);\n } else {\n toStr = objToString.call(val);\n if (toStr === '[object Array]') {\n str = '[';\n max = (val as unknown[]).length - 1;\n for (i = 0; i < max; i++) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n str += stringify((val as unknown[])[i], true) + ',';\n }\n if (max > -1) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n str += stringify((val as unknown[])[i], true);\n }\n return str + ']';\n } else if (toStr === '[object Object]') {\n // only object is left\n keys = objKeys(val).sort();\n max = keys.length;\n str = '';\n i = 0;\n while (i < max) {\n key = keys[i];\n propVal = stringify((val as Record)[key], false);\n if (propVal !== undefined) {\n if (str) {\n str += ',';\n }\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n str += JSON.stringify(key) + ':' + propVal;\n }\n i++;\n }\n return '{' + str + '}';\n } else {\n return JSON.stringify(val);\n }\n }\n case 'function':\n case 'undefined':\n return isArrayProp ? null : undefined;\n case 'bigint':\n return `${val.toString()}n`;\n case 'string':\n return JSON.stringify(val);\n default:\n return isFinite(val as number) ? val : null;\n }\n}\n\nexport default function (\n val:\n | Function // eslint-disable-line @typescript-eslint/no-unsafe-function-type\n | undefined,\n): undefined;\nexport default function (val: unknown): string;\nexport default function (val: unknown): string | undefined {\n const returnVal = stringify(val, false);\n if (returnVal !== undefined) {\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n return '' + returnVal;\n }\n}\n", "import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n", "import type { createSolanaRpcApi } from '@solana/rpc-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\n/**\n * When you create {@link Rpc} instances with custom transports but otherwise the default RPC API\n * behaviours, use this.\n *\n * @example\n * ```ts\n * const myCustomRpc = createRpc({\n * api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n * transport: myCustomTransport,\n * });\n * ```\n */\nexport const DEFAULT_RPC_CONFIG: Partial[0]>> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "import { AbortController } from '@solana/event-target-impl';\nimport type { RpcTransport } from '@solana/rpc-spec';\nimport type { RpcResponse } from '@solana/rpc-spec-types';\n\ntype CoalescedRequest = {\n readonly abortController: AbortController;\n numConsumers: number;\n readonly responsePromise: Promise;\n};\n\ntype GetDeduplicationKeyFn = (payload: unknown) => string | undefined;\n\n// This used to be a `Symbol()`, but there's a bug in Node <21 where the `undici` library passes\n// the `reason` property of the `AbortSignal` straight to `Error.captureStackTrace()` without first\n// typechecking it. `Error.captureStackTrace()` fatals when given a `Symbol`.\n// See https://github.com/nodejs/undici/pull/2597\nlet EXPLICIT_ABORT_TOKEN: ReturnType;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return process.env.NODE_ENV !== \"production\"\n ? {\n EXPLICIT_ABORT_TOKEN:\n 'This object is thrown from the request that underlies a series of coalesced ' +\n 'requests when the last request in that series aborts',\n }\n : {};\n}\n\nexport function getRpcTransportWithRequestCoalescing(\n transport: TTransport,\n getDeduplicationKey: GetDeduplicationKeyFn,\n): TTransport {\n let coalescedRequestsByDeduplicationKey: Record | undefined;\n return async function makeCoalescedHttpRequest(\n request: Parameters[0],\n ): Promise> {\n const { payload, signal } = request;\n const deduplicationKey = getDeduplicationKey(payload);\n if (deduplicationKey === undefined) {\n return await transport(request);\n }\n if (!coalescedRequestsByDeduplicationKey) {\n queueMicrotask(() => {\n coalescedRequestsByDeduplicationKey = undefined;\n });\n coalescedRequestsByDeduplicationKey = {};\n }\n if (coalescedRequestsByDeduplicationKey[deduplicationKey] == null) {\n const abortController = new AbortController();\n const responsePromise = (async () => {\n try {\n return await transport({\n ...request,\n signal: abortController.signal,\n });\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n // We triggered this error when the last subscriber aborted. Letting this\n // error bubble up from here would cause runtime fatals where there should\n // be none.\n return;\n }\n throw e;\n }\n })();\n coalescedRequestsByDeduplicationKey[deduplicationKey] = {\n abortController,\n numConsumers: 0,\n responsePromise,\n };\n }\n const coalescedRequest = coalescedRequestsByDeduplicationKey[deduplicationKey];\n coalescedRequest.numConsumers++;\n if (signal) {\n const responsePromise = coalescedRequest.responsePromise as Promise>;\n return await new Promise>((resolve, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n signal.removeEventListener('abort', handleAbort);\n coalescedRequest.numConsumers -= 1;\n queueMicrotask(() => {\n if (coalescedRequest.numConsumers === 0) {\n const abortController = coalescedRequest.abortController;\n abortController.abort((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n }\n });\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject((e.target as AbortSignal).reason);\n };\n signal.addEventListener('abort', handleAbort);\n responsePromise\n .then(resolve)\n .catch(reject)\n .finally(() => {\n signal.removeEventListener('abort', handleAbort);\n });\n });\n } else {\n return (await coalescedRequest.responsePromise) as RpcResponse;\n }\n } as TTransport;\n}\n", "import fastStableStringify from '@solana/fast-stable-stringify';\nimport { isJsonRpcPayload } from '@solana/rpc-spec';\n\nexport function getSolanaRpcPayloadDeduplicationKey(payload: unknown): string | undefined {\n return isJsonRpcPayload(payload) ? fastStableStringify([payload.method, payload.params]) : undefined;\n}\n", "import { pipe } from '@solana/functional';\nimport { createHttpTransport, createHttpTransportForSolanaRpc } from '@solana/rpc-transport-http';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { RpcTransportFromClusterUrl } from './rpc-clusters';\nimport { getRpcTransportWithRequestCoalescing } from './rpc-request-coalescer';\nimport { getSolanaRpcPayloadDeduplicationKey } from './rpc-request-deduplication';\n\ntype RpcTransportConfig = Parameters[0];\ninterface DefaultRpcTransportConfig extends RpcTransportConfig {\n url: TClusterUrl;\n}\n\nfunction normalizeHeaders>(\n headers: T,\n): { [K in string & keyof T as Lowercase]: T[K] } {\n const out: Record = {};\n for (const headerName in headers) {\n // Lowercasing header names makes it easier to override user-supplied headers.\n out[headerName.toLowerCase()] = headers[headerName];\n }\n return out as { [K in string & keyof T as Lowercase]: T[K] };\n}\n\n/**\n * Creates a {@link RpcTransport} with some default behaviours.\n *\n * The default behaviours include:\n * - An automatically-set `Solana-Client` request header, containing the version of `@solana/kit`\n * - Logic that coalesces multiple calls in the same runloop, for the same methods with the same\n * arguments, into a single network request.\n * - [node-only] An automatically-set `Accept-Encoding` request header asking the server to compress\n * responses\n *\n * @param config\n */\nexport function createDefaultRpcTransport(\n config: DefaultRpcTransportConfig,\n): RpcTransportFromClusterUrl {\n return pipe(\n createHttpTransportForSolanaRpc({\n ...config,\n headers: {\n ...(__NODEJS__ &&\n ({\n // Keep these headers lowercase so they will be overridden by any user-supplied headers below.\n 'accept-encoding':\n // Natively supported by Node LTS v20.18.0 and above.\n 'br,gzip,deflate', // Brotli, gzip, and Deflate, in that order.\n } as { [overrideHeader: string]: string })),\n ...(config.headers ? normalizeHeaders(config.headers) : undefined),\n ...({\n // Keep these headers lowercase so they will override any user-supplied headers above.\n 'solana-client': __VERSION__ ? `js/${__VERSION__}` : 'UNKNOWN',\n } as { [overrideHeader: string]: string }),\n },\n }) as RpcTransportFromClusterUrl,\n transport => getRpcTransportWithRequestCoalescing(transport, getSolanaRpcPayloadDeduplicationKey),\n );\n}\n", "import { createSolanaRpcApi } from '@solana/rpc-api';\nimport { createRpc, RpcTransport } from '@solana/rpc-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport type { RpcFromTransport, SolanaRpcApiFromTransport } from './rpc-clusters';\nimport { DEFAULT_RPC_CONFIG } from './rpc-default-config';\nimport { createDefaultRpcTransport } from './rpc-transport';\n\ntype DefaultRpcTransportConfig = Parameters<\n typeof createDefaultRpcTransport\n>[0];\n\n/**\n * Creates a {@link Rpc} instance that exposes the Solana JSON RPC API given a cluster URL and some\n * optional transport config. See {@link createDefaultRpcTransport} for the shape of the transport\n * config.\n */\nexport function createSolanaRpc(\n clusterUrl: TClusterUrl,\n config?: Omit, 'url'>,\n) {\n return createSolanaRpcFromTransport(createDefaultRpcTransport({ url: clusterUrl, ...config }));\n}\n\n/**\n * Creates a {@link Rpc} instance that exposes the Solana JSON RPC API given the supplied\n * {@link RpcTransport}.\n */\nexport function createSolanaRpcFromTransport(transport: TTransport) {\n return createRpc({\n api: createSolanaRpcApi(DEFAULT_RPC_CONFIG),\n transport,\n }) as RpcFromTransport, TTransport>;\n}\n", "'use strict';\n\n//# sourceMappingURL=index.node.cjs.map\n//# sourceMappingURL=index.node.cjs.map", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "import {\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\n\nimport { DataPublisher } from './data-publisher';\n\ntype Config = Readonly<{\n /**\n * Triggering this abort signal will cause all iterators spawned from this iterator to return\n * once they have published all queued messages.\n */\n abortSignal: AbortSignal;\n /**\n * Messages from this channel of `dataPublisher` will be the ones yielded through the iterators.\n *\n * Messages only begin to be queued after the first time an iterator begins to poll. Channel\n * messages published before that time will be dropped.\n */\n dataChannelName: string;\n // FIXME: It would be nice to be able to constrain the type of `dataPublisher` to one that\n // definitely supports the `dataChannelName` and `errorChannelName` channels, and\n // furthermore publishes `TData` on the `dataChannelName` channel. This is more difficult\n // than it should be: https://tsplay.dev/NlZelW\n dataPublisher: DataPublisher;\n /**\n * Messages from this channel of `dataPublisher` will be the ones thrown through the iterators.\n *\n * Any new iterators created after the first error is encountered will reject with that error\n * when polled.\n */\n errorChannelName: string;\n}>;\n\nconst enum PublishType {\n DATA,\n ERROR,\n}\n\ntype IteratorKey = symbol;\ntype IteratorState =\n | {\n __hasPolled: false;\n publishQueue: (\n | {\n __type: PublishType.DATA;\n data: TData;\n }\n | {\n __type: PublishType.ERROR;\n err: unknown;\n }\n )[];\n }\n | {\n __hasPolled: true;\n onData: (data: TData) => void;\n onError: Parameters[0]>[1];\n };\n\nlet EXPLICIT_ABORT_TOKEN: symbol;\nfunction createExplicitAbortToken() {\n // This function is an annoying workaround to prevent `process.env.NODE_ENV` from appearing at\n // the top level of this module and thwarting an optimizing compiler's attempt to tree-shake.\n return Symbol(\n process.env.NODE_ENV !== \"production\"\n ? \"This symbol is thrown from a socket's iterator when the connection is explicitly \" +\n 'aborted by the user'\n : undefined,\n );\n}\n\nconst UNINITIALIZED = Symbol();\n\n/**\n * Returns an `AsyncIterable` given a data publisher.\n *\n * The iterable will produce iterators that vend messages published to `dataChannelName` and will\n * throw the first time a message is published to `errorChannelName`. Triggering the abort signal\n * will cause all iterators spawned from this iterator to return once they have published all queued\n * messages.\n *\n * Things to note:\n *\n * - If a message is published over a channel before the `AsyncIterator` attached to it has polled\n * for the next result, the message will be queued in memory.\n * - Messages only begin to be queued after the first time an iterator begins to poll. Channel\n * messages published before that time will be dropped.\n * - If there are messages in the queue and an error occurs, all queued messages will be vended to\n * the iterator before the error is thrown.\n * - If there are messages in the queue and the abort signal fires, all queued messages will be\n * vended to the iterator after which it will return.\n * - Any new iterators created after the first error is encountered will reject with that error when\n * polled.\n *\n * @param config\n *\n * @example\n * ```ts\n * const iterable = createAsyncIterableFromDataPublisher({\n * abortSignal: AbortSignal.timeout(10_000),\n * dataChannelName: 'message',\n * dataPublisher,\n * errorChannelName: 'error',\n * });\n * try {\n * for await (const message of iterable) {\n * console.log('Got message', message);\n * }\n * } catch (e) {\n * console.error('An error was published to the error channel', e);\n * } finally {\n * console.log(\"It's been 10 seconds; that's enough for now.\");\n * }\n * ```\n */\nexport function createAsyncIterableFromDataPublisher({\n abortSignal,\n dataChannelName,\n dataPublisher,\n errorChannelName,\n}: Config): AsyncIterable {\n const iteratorState: Map> = new Map();\n function publishErrorToAllIterators(reason: unknown) {\n for (const [iteratorKey, state] of iteratorState.entries()) {\n if (state.__hasPolled) {\n iteratorState.delete(iteratorKey);\n state.onError(reason);\n } else {\n state.publishQueue.push({\n __type: PublishType.ERROR,\n err: reason,\n });\n }\n }\n }\n const abortController = new AbortController();\n abortSignal.addEventListener('abort', () => {\n abortController.abort();\n publishErrorToAllIterators((EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken()));\n });\n const options = { signal: abortController.signal } as const;\n let firstError: unknown = UNINITIALIZED;\n dataPublisher.on(\n errorChannelName,\n err => {\n if (firstError === UNINITIALIZED) {\n firstError = err;\n abortController.abort();\n publishErrorToAllIterators(err);\n }\n },\n options,\n );\n dataPublisher.on(\n dataChannelName,\n data => {\n iteratorState.forEach((state, iteratorKey) => {\n if (state.__hasPolled) {\n const { onData } = state;\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n onData(data as TData);\n } else {\n state.publishQueue.push({\n __type: PublishType.DATA,\n data: data as TData,\n });\n }\n });\n },\n options,\n );\n return {\n async *[Symbol.asyncIterator]() {\n if (abortSignal.aborted) {\n return;\n }\n if (firstError !== UNINITIALIZED) {\n throw firstError;\n }\n const iteratorKey = Symbol();\n iteratorState.set(iteratorKey, { __hasPolled: false, publishQueue: [] });\n try {\n while (true) {\n const state = iteratorState.get(iteratorKey);\n if (!state) {\n // There should always be state by now.\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING);\n }\n if (state.__hasPolled) {\n // You should never be able to poll twice in a row.\n throw new SolanaError(\n SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE,\n );\n }\n const publishQueue = state.publishQueue;\n try {\n if (publishQueue.length) {\n state.publishQueue = [];\n for (const item of publishQueue) {\n if (item.__type === PublishType.DATA) {\n yield item.data;\n } else {\n throw item.err;\n }\n }\n } else {\n yield await new Promise((resolve, reject) => {\n iteratorState.set(iteratorKey, {\n __hasPolled: true,\n onData: resolve,\n onError: reject,\n });\n });\n }\n } catch (e) {\n if (e === (EXPLICIT_ABORT_TOKEN ||= createExplicitAbortToken())) {\n return;\n } else {\n throw e;\n }\n }\n }\n } finally {\n iteratorState.delete(iteratorKey);\n }\n },\n };\n}\n", "import { TypedEventEmitter, TypedEventTarget } from './event-emitter';\n\ntype UnsubscribeFn = () => void;\n\n/**\n * Represents an object with an `on` function that you can call to subscribe to certain data over a\n * named channel.\n *\n * @example\n * ```ts\n * let dataPublisher: DataPublisher<{ error: SolanaError }>;\n * dataPublisher.on('data', handleData); // ERROR. `data` is not a known channel name.\n * dataPublisher.on('error', e => {\n * console.error(e);\n * }); // OK.\n * ```\n */\nexport interface DataPublisher = Record> {\n /**\n * Call this to subscribe to data over a named channel.\n *\n * @param channelName The name of the channel on which to subscribe for messages\n * @param subscriber The function to call when a message becomes available\n * @param options.signal An abort signal you can fire to unsubscribe\n *\n * @returns A function that you can call to unsubscribe\n */\n on(\n channelName: TChannelName,\n subscriber: (data: TDataByChannelName[TChannelName]) => void,\n options?: { signal: AbortSignal },\n ): UnsubscribeFn;\n}\n\n/**\n * Returns an object with an `on` function that you can call to subscribe to certain data over a\n * named channel.\n *\n * The `on` function returns an unsubscribe function.\n *\n * @example\n * ```ts\n * const socketDataPublisher = getDataPublisherFromEventEmitter(new WebSocket('wss://api.devnet.solana.com'));\n * const unsubscribe = socketDataPublisher.on('message', message => {\n * if (JSON.parse(message.data).id === 42) {\n * console.log('Got response 42');\n * unsubscribe();\n * }\n * });\n * ```\n */\nexport function getDataPublisherFromEventEmitter>(\n eventEmitter: TypedEventEmitter | TypedEventTarget,\n): DataPublisher<{\n [TEventType in keyof TEventMap]: TEventMap[TEventType] extends CustomEvent ? TEventMap[TEventType]['detail'] : null;\n}> {\n return {\n on(channelName, subscriber, options) {\n function innerListener(ev: Event) {\n if (ev instanceof CustomEvent) {\n const data = (ev as CustomEvent).detail;\n (subscriber as unknown as (data: TEventMap[typeof channelName]) => void)(data);\n } else {\n (subscriber as () => void)();\n }\n }\n eventEmitter.addEventListener(channelName, innerListener, options);\n return () => {\n eventEmitter.removeEventListener(channelName, innerListener);\n };\n },\n };\n}\n", "import { EventTarget } from '@solana/event-target-impl';\n\nimport { DataPublisher, getDataPublisherFromEventEmitter } from './data-publisher';\n\n/**\n * Given a channel that carries messages for multiple subscribers on a single channel name, this\n * function returns a new {@link DataPublisher} that splits them into multiple channel names.\n *\n * @param messageTransformer A function that receives the message as the first argument, and returns\n * a tuple of the derived channel name and the message.\n *\n * @example\n * Imagine a channel that carries multiple notifications whose destination is contained within the\n * message itself.\n *\n * ```ts\n * const demuxedDataPublisher = demultiplexDataPublisher(channel, 'message', message => {\n * const destinationChannelName = `notification-for:${message.subscriberId}`;\n * return [destinationChannelName, message];\n * });\n * ```\n *\n * Now you can subscribe to _only_ the messages you are interested in, without having to subscribe\n * to the entire `'message'` channel and filter out the messages that are not for you.\n *\n * ```ts\n * demuxedDataPublisher.on(\n * 'notification-for:123',\n * message => {\n * console.log('Got a message for subscriber 123', message);\n * },\n * { signal: AbortSignal.timeout(5_000) },\n * );\n * ```\n */\nexport function demultiplexDataPublisher<\n TDataPublisher extends DataPublisher,\n const TChannelName extends Parameters[0],\n>(\n publisher: TDataPublisher,\n sourceChannelName: TChannelName,\n messageTransformer: (\n // FIXME: Deriving the type of the message from `TDataPublisher` and `TChannelName` would\n // help callers to constrain their transform functions.\n message: unknown,\n ) => [destinationChannelName: string, message: unknown] | void,\n): DataPublisher {\n let innerPublisherState:\n | {\n readonly dispose: () => void;\n numSubscribers: number;\n }\n | undefined;\n const eventTarget = new EventTarget();\n const demultiplexedDataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n return {\n ...demultiplexedDataPublisher,\n on(channelName, subscriber, options) {\n if (!innerPublisherState) {\n const innerPublisherUnsubscribe = publisher.on(sourceChannelName, sourceMessage => {\n const transformResult = messageTransformer(sourceMessage);\n if (!transformResult) {\n return;\n }\n const [destinationChannelName, message] = transformResult;\n eventTarget.dispatchEvent(\n new CustomEvent(destinationChannelName, {\n detail: message,\n }),\n );\n });\n innerPublisherState = {\n dispose: innerPublisherUnsubscribe,\n numSubscribers: 0,\n };\n }\n innerPublisherState.numSubscribers++;\n const unsubscribe = demultiplexedDataPublisher.on(channelName, subscriber, options);\n let isActive = true;\n function handleUnsubscribe() {\n if (!isActive) {\n return;\n }\n isActive = false;\n options?.signal.removeEventListener('abort', handleUnsubscribe);\n innerPublisherState!.numSubscribers--;\n if (innerPublisherState!.numSubscribers === 0) {\n innerPublisherState!.dispose();\n innerPublisherState = undefined;\n }\n unsubscribe();\n }\n options?.signal.addEventListener('abort', handleUnsubscribe);\n return handleUnsubscribe;\n },\n };\n}\n", "/**\n * Forked from https://github.com/digitalloggers/race-as-promised/tree/master\n *\n * Authored by Brian Kim:\n * https://github.com/nodejs/node/issues/17469#issuecomment-685216777\n *\n * Adapted to module structure.\n *\n * This is free and unencumbered software released into the public domain.\n *\n * Anyone is free to copy, modify, publish, use, compile, sell, or\n * distribute this software, either in source code form or as a compiled\n * binary, for any purpose, commercial or non-commercial, and by any\n * means.\n *\n * In jurisdictions that recognize copyright laws, the author or authors\n * of this software dedicate any and all copyright interest in the\n * software to the public domain. We make this dedication for the benefit\n * of the public at large and to the detriment of our heirs and\n * successors. We intend this dedication to be an overt act of\n * relinquishment in perpetuity of all present and future rights to this\n * software under copyright law.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * For more information, please refer to \n */\n\ntype Deferred = Readonly<{\n reject: (reason?: unknown) => void;\n resolve: (value: unknown) => void;\n}>;\n\nfunction isObject(value: unknown): value is object {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nfunction addRaceContender(contender: object) {\n const deferreds = new Set();\n const record = { deferreds, settled: false };\n\n // This call to `then` happens once for the lifetime of the value.\n Promise.resolve(contender).then(\n value => {\n for (const { resolve } of deferreds) {\n resolve(value);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n err => {\n for (const { reject } of deferreds) {\n reject(err);\n }\n\n deferreds.clear();\n record.settled = true;\n },\n );\n return record;\n}\n\n// Keys are the values passed to race, values are a record of data containing a\n// set of deferreds and whether the value has settled.\nconst wm = new WeakMap; settled: boolean }>();\n/**\n * An implementation of [`Promise.race`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race)\n * that causes all of the losing promises to settle. This allows them to be released and garbage\n * collected, preventing memory leaks.\n *\n * Read more here: https://github.com/nodejs/node/issues/17469\n */\nexport async function safeRace(contenders: T): Promise> {\n let deferred: Deferred;\n const result = new Promise((resolve, reject) => {\n deferred = { reject, resolve };\n for (const contender of contenders) {\n if (!isObject(contender)) {\n // If the contender is a primitive, attempting to use it as a key in the\n // weakmap would throw an error. Luckily, it is safe to call\n // `Promise.resolve(contender).then` on a primitive value multiple times\n // because the promise fulfills immediately.\n Promise.resolve(contender).then(resolve, reject);\n continue;\n }\n\n let record = wm.get(contender);\n if (record === undefined) {\n record = addRaceContender(contender);\n record.deferreds.add(deferred);\n wm.set(contender, record);\n } else if (record.settled) {\n // If the value has settled, it is safe to call\n // `Promise.resolve(contender).then` on it.\n Promise.resolve(contender).then(resolve, reject);\n } else {\n record.deferreds.add(deferred);\n }\n }\n });\n\n // The finally callback executes when any value settles, preventing any of\n // the unresolved values from retaining a reference to the resolved value.\n return await (result.finally(() => {\n for (const contender of contenders) {\n if (isObject(contender)) {\n const record = wm.get(contender)!;\n record.deferreds.delete(deferred);\n }\n }\n }) as Promise>);\n}\n", "import { safeRace } from './race';\n\n/**\n * Returns a new promise that will reject if the abort signal fires before the original promise\n * settles. Resolves or rejects with the value of the original promise otherwise.\n *\n * @example\n * ```ts\n * const result = await getAbortablePromise(\n * // Resolves or rejects when `fetch` settles.\n * fetch('https://example.com/json').then(r => r.json()),\n * // ...unless it takes longer than 5 seconds, after which the `AbortSignal` is triggered.\n * AbortSignal.timeout(5000),\n * );\n * ```\n */\nexport function getAbortablePromise(promise: Promise, abortSignal?: AbortSignal): Promise {\n if (!abortSignal) {\n return promise;\n } else {\n return safeRace([\n // This promise only ever rejects if the signal is aborted. Otherwise it idles forever.\n // It's important that this come before the input promise; in the event of an abort, we\n // want to throw even if the input promise's result is ready\n new Promise((_, reject) => {\n if (abortSignal.aborted) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(abortSignal.reason);\n } else {\n abortSignal.addEventListener('abort', function () {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(this.reason);\n });\n }\n }),\n promise,\n ]);\n }\n}\n", "import { SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, SolanaError } from '@solana/errors';\nimport { Callable, Flatten, OverloadImplementations, UnionToIntersection } from '@solana/rpc-spec-types';\nimport { createAsyncIterableFromDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsApi, RpcSubscriptionsPlan } from './rpc-subscriptions-api';\nimport { PendingRpcSubscriptionsRequest, RpcSubscribeOptions } from './rpc-subscriptions-request';\nimport { RpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsConfig = Readonly<{\n api: RpcSubscriptionsApi;\n transport: RpcSubscriptionsTransport;\n}>;\n\n/**\n * An object that exposes all of the functions described by `TRpcSubscriptionsMethods`.\n *\n * Calling each method returns a\n * {@link PendingRpcSubscriptionsRequest | PendingRpcSubscriptionsRequest} where\n * `TNotification` is that method's notification type.\n */\nexport type RpcSubscriptions = {\n [TMethodName in keyof TRpcSubscriptionsMethods]: PendingRpcSubscriptionsRequestBuilder<\n OverloadImplementations\n >;\n};\n\ntype PendingRpcSubscriptionsRequestBuilder = UnionToIntersection<\n Flatten<{\n [P in keyof TSubscriptionMethodImplementations]: PendingRpcSubscriptionsRequestReturnTypeMapper<\n TSubscriptionMethodImplementations[P]\n >;\n }>\n>;\n\ntype PendingRpcSubscriptionsRequestReturnTypeMapper =\n // Check that this property of the TRpcSubscriptionMethods interface is, in fact, a function.\n TSubscriptionMethodImplementation extends Callable\n ? (\n ...args: Parameters\n ) => PendingRpcSubscriptionsRequest>\n : never;\n\n/**\n * Creates a {@link RpcSubscriptions} instance given a\n * {@link RpcSubscriptionsApi | RpcSubscriptionsApi} and a\n * {@link RpcSubscriptionsTransport} capable of fulfilling them.\n */\nexport function createSubscriptionRpc(\n rpcConfig: RpcSubscriptionsConfig,\n): RpcSubscriptions {\n return new Proxy(rpcConfig.api, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get(target, p, receiver) {\n if (p === 'then') {\n return undefined;\n }\n return function (...rawParams: unknown[]) {\n const notificationName = p.toString();\n const createRpcSubscriptionPlan = Reflect.get(target, notificationName, receiver);\n if (!createRpcSubscriptionPlan) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN, {\n notificationName,\n });\n }\n const subscriptionPlan = createRpcSubscriptionPlan(...rawParams);\n return createPendingRpcSubscription(rpcConfig.transport, subscriptionPlan);\n };\n },\n }) as RpcSubscriptions;\n}\n\nfunction createPendingRpcSubscription(\n transport: RpcSubscriptionsTransport,\n subscriptionsPlan: RpcSubscriptionsPlan,\n): PendingRpcSubscriptionsRequest {\n return {\n async subscribe({ abortSignal }: RpcSubscribeOptions): Promise> {\n const notificationsDataPublisher = await transport({\n signal: abortSignal,\n ...subscriptionsPlan,\n });\n return createAsyncIterableFromDataPublisher({\n abortSignal,\n dataChannelName: 'notification',\n dataPublisher: notificationsDataPublisher,\n errorChannelName: 'error',\n });\n },\n };\n}\n", "import { Callable, RpcRequest, RpcRequestTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsTransportDataEvents } from './rpc-subscriptions-transport';\n\nexport type RpcSubscriptionsApiConfig = Readonly<{\n planExecutor: RpcSubscriptionsPlanExecutor>;\n /**\n * An optional function that transforms the {@link RpcRequest} before it is sent to the JSON RPC\n * server.\n *\n * This is useful when the params supplied by the caller need to be transformed before\n * forwarding the message to the server. Use cases for this include applying defaults,\n * forwarding calls to renamed methods, and serializing complex values.\n */\n requestTransformer?: RpcRequestTransformer;\n}>;\n\n/**\n * A function that implements a protocol for subscribing and unsubscribing from notifications given\n * a {@link RpcSubscriptionsChannel}, a {@link RpcRequest}, and an `AbortSignal`.\n *\n * @returns A {@link DataPublisher} that emits {@link RpcSubscriptionsTransportDataEvents}\n */\ntype RpcSubscriptionsPlanExecutor = (\n config: Readonly<{\n channel: RpcSubscriptionsChannel;\n request: RpcRequest;\n signal: AbortSignal;\n }>,\n) => Promise>>;\n\n/**\n * This type allows an {@link RpcSubscriptionsApi} to describe how a particular subscription should\n * be issued to the JSON RPC server.\n *\n * Given a function that was called on a {@link RpcSubscriptions}, this object exposes an `execute`\n * function that dictates which subscription request will be sent, how the underlying transport will\n * be used, and how the notifications will be transformed.\n *\n * This function accepts a {@link RpcSubscriptionsChannel} and an `AbortSignal` and asynchronously\n * returns a {@link DataPublisher}. This gives us the opportunity to:\n *\n * - define the `payload` from the requested method name and parameters before passing it to the\n * channel.\n * - call the underlying channel zero, one or multiple times depending on the use-case (e.g.\n * caching or coalescing multiple subscriptions).\n * - transform the notification from the JSON RPC server, in case it does not match the\n * `TNotification` specified by the\n * {@link PendingRpcSubscriptionsRequest | PendingRpcSubscriptionsRequest} emitted\n * from the publisher returned.\n */\nexport type RpcSubscriptionsPlan = Readonly<{\n /**\n * This method may be called with a newly-opened channel or a pre-established channel.\n */\n execute: (\n config: Readonly<{\n channel: RpcSubscriptionsChannel;\n signal: AbortSignal;\n }>,\n ) => Promise>>;\n /**\n * This request is used to uniquely identify the subscription.\n * It typically comes from the method name and parameters of the subscription call,\n * after potentially being transformed by the RPC Subscriptions API.\n */\n request: RpcRequest;\n}>;\n\n/**\n * For each of `TRpcSubscriptionsMethods`, this object exposes a method with the same name that maps\n * between its input arguments and a\n * {@link RpcSubscriptionsPlan | RpcSubscriptionsPlan} that implements the execution\n * of a JSON RPC subscription for `TNotifications`.\n */\nexport type RpcSubscriptionsApi = {\n [MethodName in keyof TRpcSubscriptionMethods]: RpcSubscriptionsReturnTypeMapper<\n TRpcSubscriptionMethods[MethodName]\n >;\n};\n\ntype RpcSubscriptionsReturnTypeMapper = TRpcMethod extends Callable\n ? (...rawParams: unknown[]) => RpcSubscriptionsPlan>\n : never;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype RpcSubscriptionsApiMethod = (...args: any) => any;\nexport interface RpcSubscriptionsApiMethods {\n [methodName: string]: RpcSubscriptionsApiMethod;\n}\n\n/**\n * Creates a JavaScript proxy that converts _any_ function call called on it to a\n * {@link RpcSubscriptionsPlan} by creating an `execute` function that:\n *\n * - calls the supplied {@link RpcSubscriptionsApiConfig.planExecutor} with a JSON RPC v2 payload\n * object with the requested `methodName` and `params` properties, optionally transformed by\n * {@link RpcSubscriptionsApiConfig.requestTransformer}.\n *\n * @example\n * ```ts\n * // For example, given this `RpcSubscriptionsApi`:\n * const rpcSubscriptionsApi = createJsonRpcSubscriptionsApi({\n * async planExecutor({ channel, request }) {\n * await channel.send(request);\n * return {\n * ...channel,\n * on(type, listener, options) {\n * if (type !== 'message') {\n * return channel.on(type, listener, options);\n * }\n * return channel.on(\n * 'message',\n * function resultGettingListener(message) {\n * listener(message.result);\n * },\n * options,\n * );\n * }\n * }\n * },\n * requestTransformer: (...rawParams) => rawParams.reverse(),\n * });\n *\n * // ...the following function call:\n * rpcSubscriptionsApi.foo('bar', { baz: 'bat' });\n *\n * // ...will produce a `RpcSubscriptionsPlan` that:\n * // - Uses the following payload: { id: 1, jsonrpc: '2.0', method: 'foo', params: [{ baz: 'bat' }, 'bar'] }.\n * // - Emits the \"result\" property of each RPC Subscriptions message.\n * ```\n */\nexport function createRpcSubscriptionsApi(\n config: RpcSubscriptionsApiConfig,\n): RpcSubscriptionsApi {\n return new Proxy({} as RpcSubscriptionsApi, {\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n get>(\n ...args: Parameters>['get']>>\n ) {\n const [_, p] = args;\n const methodName = p.toString() as keyof TRpcSubscriptionsApiMethods as string;\n return function (\n ...params: Parameters<\n TRpcSubscriptionsApiMethods[TNotificationName] extends CallableFunction\n ? TRpcSubscriptionsApiMethods[TNotificationName]\n : never\n >\n ): RpcSubscriptionsPlan> {\n const rawRequest = { methodName, params };\n const request = config.requestTransformer ? config.requestTransformer(rawRequest) : rawRequest;\n return {\n execute(planConfig) {\n return config.planExecutor({ ...planConfig, request });\n },\n request,\n };\n };\n },\n });\n}\n", "import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype RpcSubscriptionsChannelSolanaErrorCode =\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED\n | typeof SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT;\n\nexport type RpcSubscriptionChannelEvents = {\n /**\n * Fires when the channel closes unexpectedly.\n * @eventProperty\n */\n error: SolanaError;\n /**\n * Fires on every message received from the remote end.\n * @eventProperty\n */\n message: TInboundMessage;\n};\n\n/**\n * A {@link DataPublisher} on which you can subscribe to events of type\n * {@link RpcSubscriptionChannelEvents | RpcSubscriptionChannelEvents}.\n * Additionally, you can use this object to send messages of type `TOutboundMessage` back to the\n * remote end by calling its {@link RpcSubscriptionsChannel.send | `send(message)`} method.\n */\nexport interface RpcSubscriptionsChannel\n extends DataPublisher> {\n send(message: TOutboundMessage): Promise;\n}\n\n/**\n * A channel creator is a function that accepts an `AbortSignal`, returns a new\n * {@link RpcSubscriptionsChannel}, and tears down the channel when the abort signal fires.\n */\nexport type RpcSubscriptionsChannelCreator = (\n config: Readonly<{\n abortSignal: AbortSignal;\n }>,\n) => Promise>;\n\n/**\n * Given a channel with inbound messages of type `T` and a function of type `T => U`, returns a new\n * channel with inbound messages of type `U`.\n *\n * Note that this only affects messages of type `\"message\"` and thus, does not affect incoming error\n * messages.\n *\n * @example Parsing incoming JSON messages\n * ```ts\n * const transformedChannel = transformChannelInboundMessages(channel, JSON.parse);\n * ```\n */\nexport function transformChannelInboundMessages(\n channel: RpcSubscriptionsChannel,\n transform: (message: TInboundMessage) => TNewInboundMessage,\n): RpcSubscriptionsChannel {\n return Object.freeze>({\n ...channel,\n on(type, subscriber, options) {\n if (type !== 'message') {\n return channel.on(\n type,\n subscriber as (data: RpcSubscriptionChannelEvents[typeof type]) => void,\n options,\n );\n }\n return channel.on(\n 'message',\n message => (subscriber as (data: TNewInboundMessage) => void)(transform(message)),\n options,\n );\n },\n });\n}\n\n/**\n * Given a channel with outbound messages of type `T` and a function of type `U => T`, returns a new\n * channel with outbound messages of type `U`.\n *\n * @example Stringifying JSON messages before sending them over the wire\n * ```ts\n * const transformedChannel = transformChannelOutboundMessages(channel, JSON.stringify);\n * ```\n */\nexport function transformChannelOutboundMessages(\n channel: RpcSubscriptionsChannel,\n transform: (message: TNewOutboundMessage) => TOutboundMessage,\n): RpcSubscriptionsChannel {\n return Object.freeze>({\n ...channel,\n send: message => channel.send(transform(message)),\n });\n}\n", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "import {\n getSolanaErrorFromJsonRpcError,\n SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID,\n SolanaError,\n} from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\nimport { safeRace } from '@solana/promises';\nimport { createRpcMessage, RpcRequest, RpcResponseData, RpcResponseTransformer } from '@solana/rpc-spec-types';\nimport { DataPublisher } from '@solana/subscribable';\nimport { demultiplexDataPublisher } from '@solana/subscribable';\n\nimport { RpcSubscriptionChannelEvents } from './rpc-subscriptions-channel';\nimport { RpcSubscriptionsChannel } from './rpc-subscriptions-channel';\n\ntype Config = Readonly<{\n channel: RpcSubscriptionsChannel | RpcResponseData>;\n responseTransformer?: RpcResponseTransformer;\n signal: AbortSignal;\n subscribeRequest: RpcRequest;\n unsubscribeMethodName: string;\n}>;\n\ntype RpcNotification = Readonly<{\n method: string;\n params: Readonly<{\n result: TNotification;\n subscription: number;\n }>;\n}>;\n\ntype RpcSubscriptionId = number;\n\ntype RpcSubscriptionNotificationEvents = Omit, 'message'> & {\n notification: TNotification;\n};\n\nconst subscriberCountBySubscriptionIdByChannel = new WeakMap>();\nfunction decrementSubscriberCountAndReturnNewCount(channel: WeakKey, subscriptionId?: number): number | undefined {\n return augmentSubscriberCountAndReturnNewCount(-1, channel, subscriptionId);\n}\nfunction incrementSubscriberCount(channel: WeakKey, subscriptionId?: number): void {\n augmentSubscriberCountAndReturnNewCount(1, channel, subscriptionId);\n}\nfunction getSubscriberCountBySubscriptionIdForChannel(channel: WeakKey): Record {\n let subscriberCountBySubscriptionId = subscriberCountBySubscriptionIdByChannel.get(channel);\n if (!subscriberCountBySubscriptionId) {\n subscriberCountBySubscriptionIdByChannel.set(channel, (subscriberCountBySubscriptionId = {}));\n }\n return subscriberCountBySubscriptionId;\n}\nfunction augmentSubscriberCountAndReturnNewCount(\n amount: -1 | 1,\n channel: WeakKey,\n subscriptionId?: number,\n): number | undefined {\n if (subscriptionId === undefined) {\n return;\n }\n const subscriberCountBySubscriptionId = getSubscriberCountBySubscriptionIdForChannel(channel);\n if (!subscriberCountBySubscriptionId[subscriptionId] && amount > 0) {\n subscriberCountBySubscriptionId[subscriptionId] = 0;\n }\n const newCount = amount + subscriberCountBySubscriptionId[subscriptionId];\n if (newCount <= 0) {\n delete subscriberCountBySubscriptionId[subscriptionId];\n } else {\n subscriberCountBySubscriptionId[subscriptionId] = newCount;\n }\n return newCount;\n}\n\nconst cache = new WeakMap();\nfunction getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer(\n channel: RpcSubscriptionsChannel>,\n subscribeRequest: RpcRequest,\n responseTransformer?: RpcResponseTransformer,\n): DataPublisher<{\n [channelName: `notification:${number}`]: TNotification;\n}> {\n let publisherByResponseTransformer = cache.get(channel);\n if (!publisherByResponseTransformer) {\n cache.set(channel, (publisherByResponseTransformer = new WeakMap()));\n }\n const responseTransformerKey = responseTransformer ?? channel;\n let publisher = publisherByResponseTransformer.get(responseTransformerKey);\n if (!publisher) {\n publisherByResponseTransformer.set(\n responseTransformerKey,\n (publisher = demultiplexDataPublisher(channel, 'message', rawMessage => {\n const message = rawMessage as RpcNotification | RpcResponseData;\n if (!('method' in message)) {\n return;\n }\n const transformedNotification = responseTransformer\n ? responseTransformer(message.params.result, subscribeRequest)\n : message.params.result;\n return [`notification:${message.params.subscription}`, transformedNotification];\n })),\n );\n }\n return publisher;\n}\n\n/**\n * Given a channel, this function executes the particular subscription plan required by the Solana\n * JSON RPC Subscriptions API.\n *\n * @param config\n *\n * 1. Calls the `subscribeRequest` on the remote RPC\n * 2. Waits for a response containing the subscription id\n * 3. Returns a {@link DataPublisher} that publishes notifications related to that subscriptions id,\n * filtering out all others\n * 4. Calls the `unsubscribeMethodName` on the remote RPC when the abort signal is fired.\n */\nexport async function executeRpcPubSubSubscriptionPlan({\n channel,\n responseTransformer,\n signal,\n subscribeRequest,\n unsubscribeMethodName,\n}: Config): Promise>> {\n let subscriptionId: number | undefined;\n channel.on(\n 'error',\n () => {\n // An error on the channel indicates that the subscriptions are dead.\n // There is no longer any sense hanging on to subscription ids.\n // Erasing it here will prevent the unsubscribe code from running.\n subscriptionId = undefined;\n subscriberCountBySubscriptionIdByChannel.delete(channel);\n },\n { signal },\n );\n /**\n * STEP 1\n * Create a promise that rejects if this subscription is aborted and sends\n * the unsubscribe message if the subscription is active at that time.\n */\n const abortPromise = new Promise((_, reject) => {\n function handleAbort(this: AbortSignal) {\n /**\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they\n * will be assigned the same subscription id, and will occupy one subscription slot. We\n * must be careful not to send the unsubscribe message until the last subscriber aborts.\n */\n if (decrementSubscriberCountAndReturnNewCount(channel, subscriptionId) === 0) {\n const unsubscribePayload = createRpcMessage({\n methodName: unsubscribeMethodName,\n params: [subscriptionId],\n });\n subscriptionId = undefined;\n channel.send(unsubscribePayload).catch(() => {});\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(this.reason);\n }\n if (signal.aborted) {\n handleAbort.call(signal);\n } else {\n signal.addEventListener('abort', handleAbort);\n }\n });\n /**\n * STEP 2\n * Send the subscription request.\n */\n const subscribePayload = createRpcMessage(subscribeRequest);\n await channel.send(subscribePayload);\n /**\n * STEP 3\n * Wait for the acknowledgement from the server with the subscription id.\n */\n const subscriptionIdPromise = new Promise((resolve, reject) => {\n const abortController = new AbortController();\n signal.addEventListener('abort', abortController.abort.bind(abortController));\n const options = { signal: abortController.signal } as const;\n channel.on(\n 'error',\n err => {\n abortController.abort();\n reject(err);\n },\n options,\n );\n channel.on(\n 'message',\n message => {\n if (message && typeof message === 'object' && 'id' in message && message.id === subscribePayload.id) {\n abortController.abort();\n if ('error' in message) {\n reject(getSolanaErrorFromJsonRpcError(message.error));\n } else {\n resolve(message.result);\n }\n }\n },\n options,\n );\n });\n subscriptionId = await safeRace([abortPromise, subscriptionIdPromise]);\n if (subscriptionId == null) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID);\n }\n incrementSubscriberCount(channel, subscriptionId);\n /**\n * STEP 4\n * Filter out notifications unrelated to this subscription.\n */\n const notificationPublisher = getMemoizedDemultiplexedNotificationPublisherFromChannelAndResponseTransformer(\n channel,\n subscribeRequest,\n responseTransformer,\n );\n const notificationKey = `notification:${subscriptionId}` as const;\n return {\n on(type, listener, options) {\n switch (type) {\n case 'notification':\n return notificationPublisher.on(\n notificationKey,\n listener as (data: RpcSubscriptionNotificationEvents['notification']) => void,\n options,\n );\n case 'error':\n return channel.on(\n 'error',\n listener as (data: RpcSubscriptionNotificationEvents['error']) => void,\n options,\n );\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED, {\n channelName: type,\n supportedChannelNames: ['notification', 'error'],\n });\n }\n },\n };\n}\n", "import {\n createRpcSubscriptionsApi,\n executeRpcPubSubSubscriptionPlan,\n RpcSubscriptionsApi,\n RpcSubscriptionsApiMethods,\n} from '@solana/rpc-subscriptions-spec';\nimport {\n AllowedNumericKeypaths,\n getDefaultRequestTransformerForSolanaRpc,\n getDefaultResponseTransformerForSolanaRpcSubscriptions,\n jsonParsedAccountsConfigs,\n KEYPATH_WILDCARD,\n RequestTransformerConfig,\n} from '@solana/rpc-transformers';\n\nimport { AccountNotificationsApi } from './account-notifications';\nimport { BlockNotificationsApi } from './block-notifications';\nimport { LogsNotificationsApi } from './logs-notifications';\nimport { ProgramNotificationsApi } from './program-notifications';\nimport { RootNotificationsApi } from './root-notifications';\nimport { SignatureNotificationsApi } from './signature-notifications';\nimport { SlotNotificationsApi } from './slot-notifications';\nimport { SlotsUpdatesNotificationsApi } from './slots-updates-notifications';\nimport { VoteNotificationsApi } from './vote-notifications';\n\nexport type SolanaRpcSubscriptionsApi = AccountNotificationsApi &\n LogsNotificationsApi &\n ProgramNotificationsApi &\n RootNotificationsApi &\n SignatureNotificationsApi &\n SlotNotificationsApi;\nexport type SolanaRpcSubscriptionsApiUnstable = BlockNotificationsApi &\n SlotsUpdatesNotificationsApi &\n VoteNotificationsApi;\n\nexport type {\n AccountNotificationsApi,\n BlockNotificationsApi,\n LogsNotificationsApi,\n ProgramNotificationsApi,\n RootNotificationsApi,\n SignatureNotificationsApi,\n SlotNotificationsApi,\n SlotsUpdatesNotificationsApi,\n VoteNotificationsApi,\n};\n\ntype Config = RequestTransformerConfig;\n\nfunction createSolanaRpcSubscriptionsApi_INTERNAL(\n config?: Config,\n): RpcSubscriptionsApi {\n const requestTransformer = getDefaultRequestTransformerForSolanaRpc(config);\n const responseTransformer = getDefaultResponseTransformerForSolanaRpcSubscriptions({\n allowedNumericKeyPaths: getAllowedNumericKeypaths(),\n });\n return createRpcSubscriptionsApi({\n planExecutor({ request, ...rest }) {\n return executeRpcPubSubSubscriptionPlan({\n ...rest,\n responseTransformer,\n subscribeRequest: { ...request, methodName: request.methodName.replace(/Notifications$/, 'Subscribe') },\n unsubscribeMethodName: request.methodName.replace(/Notifications$/, 'Unsubscribe'),\n });\n },\n requestTransformer,\n });\n}\n\nexport function createSolanaRpcSubscriptionsApi(\n config?: Config,\n): RpcSubscriptionsApi {\n return createSolanaRpcSubscriptionsApi_INTERNAL(config);\n}\n\nexport function createSolanaRpcSubscriptionsApi_UNSTABLE(config?: Config) {\n return createSolanaRpcSubscriptionsApi_INTERNAL(\n config,\n );\n}\n\nlet memoizedKeypaths: AllowedNumericKeypaths<\n RpcSubscriptionsApi\n>;\n\n/**\n * These are keypaths at the end of which you will find a numeric value that should *not* be upcast\n * to a `bigint`. These are values that are legitimately defined as `u8` or `usize` on the backend.\n */\nfunction getAllowedNumericKeypaths(): AllowedNumericKeypaths<\n RpcSubscriptionsApi\n> {\n if (!memoizedKeypaths) {\n memoizedKeypaths = {\n accountNotifications: jsonParsedAccountsConfigs.map(c => ['value', ...c]),\n blockNotifications: [\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'preTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'accountIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'postTokenBalances',\n KEYPATH_WILDCARD,\n 'uiTokenAmount',\n 'decimals',\n ],\n ['value', 'block', 'transactions', KEYPATH_WILDCARD, 'meta', 'rewards', KEYPATH_WILDCARD, 'commission'],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'index',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'meta',\n 'innerInstructions',\n KEYPATH_WILDCARD,\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'writableIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'addressTableLookups',\n KEYPATH_WILDCARD,\n 'readonlyIndexes',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'programIdIndex',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'instructions',\n KEYPATH_WILDCARD,\n 'accounts',\n KEYPATH_WILDCARD,\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlySignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numReadonlyUnsignedAccounts',\n ],\n [\n 'value',\n 'block',\n 'transactions',\n KEYPATH_WILDCARD,\n 'transaction',\n 'message',\n 'header',\n 'numRequiredSignatures',\n ],\n ['value', 'block', 'rewards', KEYPATH_WILDCARD, 'commission'],\n ],\n programNotifications: jsonParsedAccountsConfigs.flatMap(c => [\n ['value', KEYPATH_WILDCARD, 'account', ...c],\n [KEYPATH_WILDCARD, 'account', ...c],\n ]),\n };\n }\n return memoizedKeypaths;\n}\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n BINARY_TYPES,\n EMPTY_BUFFER: Buffer.alloc(0),\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n hasBlob,\n kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n kListener: Symbol('kListener'),\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) {\n return new FastBuffer(target.buffer, target.byteOffset, offset);\n }\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n for (let i = 0; i < buffer.length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.length === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = new FastBuffer(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\nmodule.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n};\n\n/* istanbul ignore else */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n try {\n const bufferUtil = require('bufferutil');\n\n module.exports.mask = function (source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bufferUtil.mask(source, mask, output, offset, length);\n };\n\n module.exports.unmask = function (buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bufferUtil.unmask(buffer, mask);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed if context takeover is disabled\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {(Buffer|String)} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) {\n data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n }\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n return (\n hasBlob &&\n typeof value === 'object' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n (value[Symbol.toStringTag] === 'Blob' ||\n value[Symbol.toStringTag] === 'File')\n );\n}\n\nmodule.exports = {\n isBlob,\n isValidStatusCode,\n isValidUTF8: _isValidUTF8,\n tokenChars\n};\n\nif (isUtf8) {\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n };\n} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n try {\n const isValidUTF8 = require('utf-8-validate');\n\n module.exports.isValidUTF8 = function (buf) {\n return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n };\n } catch (e) {\n // Continue regardless of the error.\n }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {Object} [options] Options object\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {String} [options.binaryType=nodebuffer] The type for binary data\n * @param {Object} [options.extensions] An object containing the negotiated\n * extensions\n * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n * client or server mode\n * @param {Number} [options.maxPayload=0] The maximum allowed message length\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n */\n constructor(options = {}) {\n super();\n\n this._allowSynchronousEvents =\n options.allowSynchronousEvents !== undefined\n ? options.allowSynchronousEvents\n : true;\n this._binaryType = options.binaryType || BINARY_TYPES[0];\n this._extensions = options.extensions || {};\n this._isServer = !!options.isServer;\n this._maxPayload = options.maxPayload | 0;\n this._skipUTF8Validation = !!options.skipUTF8Validation;\n this[kWebSocket] = undefined;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._errored = false;\n this._loop = false;\n this._state = GET_INFO;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n\n return new FastBuffer(buf.buffer, buf.byteOffset, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = new FastBuffer(\n buf.buffer,\n buf.byteOffset + n,\n buf.length - n\n );\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n this.getInfo(cb);\n break;\n case GET_PAYLOAD_LENGTH_16:\n this.getPayloadLength16(cb);\n break;\n case GET_PAYLOAD_LENGTH_64:\n this.getPayloadLength64(cb);\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n this.getData(cb);\n break;\n case INFLATING:\n case DEFER_EVENT:\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n if (!this._errored) cb();\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @param {Function} cb Callback\n * @private\n */\n getInfo(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n const error = this.createError(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n\n cb(error);\n return;\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fragmented) {\n const error = this.createError(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n const error = this.createError(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n\n cb(error);\n return;\n }\n\n if (compressed) {\n const error = this.createError(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n\n cb(error);\n return;\n }\n\n if (\n this._payloadLength > 0x7d ||\n (this._opcode === 0x08 && this._payloadLength === 1)\n ) {\n const error = this.createError(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n } else {\n const error = this.createError(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n\n cb(error);\n return;\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n } else if (this._masked) {\n const error = this.createError(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n\n cb(error);\n return;\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength16(cb) {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n this.haveLength(cb);\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @param {Function} cb Callback\n * @private\n */\n getPayloadLength64(cb) {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n const error = this.createError(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n this.haveLength(cb);\n }\n\n /**\n * Payload length has been read.\n *\n * @param {Function} cb Callback\n * @private\n */\n haveLength(cb) {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n\n if (\n this._masked &&\n (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n ) {\n unmask(data, this._mask);\n }\n }\n\n if (this._opcode > 0x07) {\n this.controlMessage(data, cb);\n return;\n }\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its length is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n this.dataMessage(cb);\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n const error = this.createError(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n\n cb(error);\n return;\n }\n\n this._fragments.push(buf);\n }\n\n this.dataMessage(cb);\n if (this._state === GET_INFO) this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @param {Function} cb Callback\n * @private\n */\n dataMessage(cb) {\n if (!this._fin) {\n this._state = GET_INFO;\n return;\n }\n\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else if (this._binaryType === 'blob') {\n data = new Blob(fragments);\n } else {\n data = fragments;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit('message', data, true);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', data, true);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n if (this._state === INFLATING || this._allowSynchronousEvents) {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit('message', buf, false);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data, cb) {\n if (this._opcode === 0x08) {\n if (data.length === 0) {\n this._loop = false;\n this.emit('conclude', 1005, EMPTY_BUFFER);\n this.end();\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n const error = this.createError(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n\n cb(error);\n return;\n }\n\n const buf = new FastBuffer(\n data.buffer,\n data.byteOffset + 2,\n data.length - 2\n );\n\n if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n const error = this.createError(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n\n cb(error);\n return;\n }\n\n this._loop = false;\n this.emit('conclude', code, buf);\n this.end();\n }\n\n this._state = GET_INFO;\n return;\n }\n\n if (this._allowSynchronousEvents) {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n } else {\n this._state = DEFER_EVENT;\n setImmediate(() => {\n this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n this._state = GET_INFO;\n this.startLoop(cb);\n });\n }\n }\n\n /**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\n createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n this._loop = false;\n this._errored = true;\n\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, this.createError);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {Duplex} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Function} [generateMask] The function used to generate the masking\n * key\n */\n constructor(socket, extensions, generateMask) {\n this._extensions = extensions || {};\n\n if (generateMask) {\n this._generateMask = generateMask;\n this._maskBuffer = Buffer.alloc(4);\n }\n\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._queue = [];\n this._state = DEFAULT;\n this.onerror = NOOP;\n this[kWebSocket] = undefined;\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {(Buffer|String)} data The data to frame\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {(Buffer|String)[]} The framed data\n * @public\n */\n static frame(data, options) {\n let mask;\n let merge = false;\n let offset = 2;\n let skipMasking = false;\n\n if (options.mask) {\n mask = options.maskBuffer || maskBuffer;\n\n if (options.generateMask) {\n options.generateMask(mask);\n } else {\n if (randomPoolPointer === RANDOM_POOL_SIZE) {\n /* istanbul ignore else */\n if (randomPool === undefined) {\n //\n // This is lazily initialized because server-sent frames must not\n // be masked so it may never be used.\n //\n randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n }\n\n randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n randomPoolPointer = 0;\n }\n\n mask[0] = randomPool[randomPoolPointer++];\n mask[1] = randomPool[randomPoolPointer++];\n mask[2] = randomPool[randomPoolPointer++];\n mask[3] = randomPool[randomPoolPointer++];\n }\n\n skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n offset = 6;\n }\n\n let dataLength;\n\n if (typeof data === 'string') {\n if (\n (!options.mask || skipMasking) &&\n options[kByteLength] !== undefined\n ) {\n dataLength = options[kByteLength];\n } else {\n data = Buffer.from(data);\n dataLength = data.length;\n }\n } else {\n dataLength = data.length;\n merge = options.mask && options.readOnly && !skipMasking;\n }\n\n let payloadLength = dataLength;\n\n if (dataLength >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (dataLength > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(dataLength, 2);\n } else if (payloadLength === 127) {\n target[2] = target[3] = 0;\n target.writeUIntBE(dataLength, 4, 6);\n }\n\n if (!options.mask) return [target, data];\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (skipMasking) return [target, data];\n\n if (merge) {\n applyMask(data, mask, target, offset, dataLength);\n return [target];\n }\n\n applyMask(data, mask, data, 0, dataLength);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {(String|Buffer)} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || !data.length) {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n\n if (typeof data === 'string') {\n buf.write(data, 2);\n } else {\n buf.set(data, 2);\n }\n }\n\n const options = {\n [kByteLength]: buf.length,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x08,\n readOnly: false,\n rsv1: false\n };\n\n if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, buf, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(buf, options), cb);\n }\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x09,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (byteLength > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n const options = {\n [kByteLength]: byteLength,\n fin: true,\n generateMask: this._generateMask,\n mask,\n maskBuffer: this._maskBuffer,\n opcode: 0x0a,\n readOnly,\n rsv1: false\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, false, options, cb]);\n } else {\n this.getBlobData(data, false, options, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, false, options, cb]);\n } else {\n this.sendFrame(Sender.frame(data, options), cb);\n }\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n let byteLength;\n let readOnly;\n\n if (typeof data === 'string') {\n byteLength = Buffer.byteLength(data);\n readOnly = false;\n } else if (isBlob(data)) {\n byteLength = data.size;\n readOnly = false;\n } else {\n data = toBuffer(data);\n byteLength = data.length;\n readOnly = toBuffer.readOnly;\n }\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (\n rsv1 &&\n perMessageDeflate &&\n perMessageDeflate.params[\n perMessageDeflate._isServer\n ? 'server_no_context_takeover'\n : 'client_no_context_takeover'\n ]\n ) {\n rsv1 = byteLength >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n const opts = {\n [kByteLength]: byteLength,\n fin: options.fin,\n generateMask: this._generateMask,\n mask: options.mask,\n maskBuffer: this._maskBuffer,\n opcode,\n readOnly,\n rsv1\n };\n\n if (isBlob(data)) {\n if (this._state !== DEFAULT) {\n this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n } else {\n this.getBlobData(data, this._compress, opts, cb);\n }\n } else if (this._state !== DEFAULT) {\n this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n } else {\n this.dispatch(data, this._compress, opts, cb);\n }\n }\n\n /**\n * Gets the contents of a blob as binary data.\n *\n * @param {Blob} blob The blob\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * the data\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n getBlobData(blob, compress, options, cb) {\n this._bufferedBytes += options[kByteLength];\n this._state = GET_BLOB_DATA;\n\n blob\n .arrayBuffer()\n .then((arrayBuffer) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while the blob was being read'\n );\n\n //\n // `callCallbacks` is called in the next tick to ensure that errors\n // that might be thrown in the callbacks behave like errors thrown\n // outside the promise chain.\n //\n process.nextTick(callCallbacks, this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n const data = toBuffer(arrayBuffer);\n\n if (!compress) {\n this._state = DEFAULT;\n this.sendFrame(Sender.frame(data, options), cb);\n this.dequeue();\n } else {\n this.dispatch(data, compress, options, cb);\n }\n })\n .catch((err) => {\n //\n // `onError` is called in the next tick for the same reason that\n // `callCallbacks` above is.\n //\n process.nextTick(onError, this, err, cb);\n });\n }\n\n /**\n * Dispatches a message.\n *\n * @param {(Buffer|String)} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n * key\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += options[kByteLength];\n this._state = DEFLATING;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n callCallbacks(this, err, cb);\n return;\n }\n\n this._bufferedBytes -= options[kByteLength];\n this._state = DEFAULT;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (this._state === DEFAULT && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[3][kByteLength];\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[3][kByteLength];\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {(Buffer | String)[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < sender._queue.length; i++) {\n const params = sender._queue[i];\n const callback = params[params.length - 1];\n\n if (typeof callback === 'function') callback(err);\n }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n callCallbacks(sender, err, cb);\n sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @throws {TypeError} If the `type` argument is not specified\n */\n constructor(type) {\n this[kTarget] = null;\n this[kType] = type;\n }\n\n /**\n * @type {*}\n */\n get target() {\n return this[kTarget];\n }\n\n /**\n * @type {String}\n */\n get type() {\n return this[kType];\n }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {Number} [options.code=0] The status code explaining why the\n * connection was closed\n * @param {String} [options.reason=''] A human-readable string explaining why\n * the connection was closed\n * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n * connection was cleanly closed\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kCode] = options.code === undefined ? 0 : options.code;\n this[kReason] = options.reason === undefined ? '' : options.reason;\n this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n }\n\n /**\n * @type {Number}\n */\n get code() {\n return this[kCode];\n }\n\n /**\n * @type {String}\n */\n get reason() {\n return this[kReason];\n }\n\n /**\n * @type {Boolean}\n */\n get wasClean() {\n return this[kWasClean];\n }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.error=null] The error that generated this event\n * @param {String} [options.message=''] The error message\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kError] = options.error === undefined ? null : options.error;\n this[kMessage] = options.message === undefined ? '' : options.message;\n }\n\n /**\n * @type {*}\n */\n get error() {\n return this[kError];\n }\n\n /**\n * @type {String}\n */\n get message() {\n return this[kMessage];\n }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {String} type The name of the event\n * @param {Object} [options] A dictionary object that allows for setting\n * attributes via object members of the same name\n * @param {*} [options.data=null] The message content\n */\n constructor(type, options = {}) {\n super(type);\n\n this[kData] = options.data === undefined ? null : options.data;\n }\n\n /**\n * @type {*}\n */\n get data() {\n return this[kData];\n }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {(Function|Object)} handler The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, handler, options = {}) {\n for (const listener of this.listeners(type)) {\n if (\n !options[kForOnEventAttribute] &&\n listener[kListener] === handler &&\n !listener[kForOnEventAttribute]\n ) {\n return;\n }\n }\n\n let wrapper;\n\n if (type === 'message') {\n wrapper = function onMessage(data, isBinary) {\n const event = new MessageEvent('message', {\n data: isBinary ? data : data.toString()\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'close') {\n wrapper = function onClose(code, message) {\n const event = new CloseEvent('close', {\n code,\n reason: message.toString(),\n wasClean: this._closeFrameReceived && this._closeFrameSent\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'error') {\n wrapper = function onError(error) {\n const event = new ErrorEvent('error', {\n error,\n message: error.message\n });\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else if (type === 'open') {\n wrapper = function onOpen() {\n const event = new Event('open');\n\n event[kTarget] = this;\n callListener(handler, this, event);\n };\n } else {\n return;\n }\n\n wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n wrapper[kListener] = handler;\n\n if (options.once) {\n this.once(type, wrapper);\n } else {\n this.on(type, wrapper);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {(Function|Object)} handler The listener to remove\n * @public\n */\n removeEventListener(type, handler) {\n for (const listener of this.listeners(type)) {\n if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n this.removeListener(type, listener);\n break;\n }\n }\n }\n};\n\nmodule.exports = {\n CloseEvent,\n ErrorEvent,\n Event,\n EventTarget,\n MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n if (typeof listener === 'object' && listener.handleEvent) {\n listener.handleEvent.call(listener, event);\n } else {\n listener.call(thisArg, event);\n }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let code = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kForOnEventAttribute,\n kListener,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst {\n EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst closeTimeout = 30 * 1000;\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = EMPTY_BUFFER;\n this._closeTimer = null;\n this._errorEmitted = false;\n this._extensions = {};\n this._paused = false;\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (protocols === undefined) {\n protocols = [];\n } else if (!Array.isArray(protocols)) {\n if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = [];\n } else {\n protocols = [protocols];\n }\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._autoPong = options.autoPong;\n this._isServer = true;\n }\n }\n\n /**\n * For historical reasons, the custom \"nodebuffer\" type is used by the default\n * instead of \"blob\".\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Boolean}\n */\n get isPaused() {\n return this._paused;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return null;\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return null;\n }\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Object} options Options object\n * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.maxPayload=0] The maximum allowed message size\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\n setSocket(socket, head, options) {\n const receiver = new Receiver({\n allowSynchronousEvents: options.allowSynchronousEvents,\n binaryType: this.binaryType,\n extensions: this._extensions,\n isServer: this._isServer,\n maxPayload: options.maxPayload,\n skipUTF8Validation: options.skipUTF8Validation\n });\n\n const sender = new Sender(socket, this._extensions, options.generateMask);\n\n this._receiver = receiver;\n this._sender = sender;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n sender[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n sender.onerror = senderOnError;\n\n //\n // These methods may not be available if `socket` is just a `Duplex`.\n //\n if (socket.setTimeout) socket.setTimeout(0);\n if (socket.setNoDelay) socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {(String|Buffer)} [data] The reason why the connection is\n * closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n setCloseTimer(this);\n }\n\n /**\n * Pause the socket.\n *\n * @public\n */\n pause() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = true;\n this._socket.pause();\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Resume the socket.\n *\n * @public\n */\n resume() {\n if (\n this.readyState === WebSocket.CONNECTING ||\n this.readyState === WebSocket.CLOSED\n ) {\n return;\n }\n\n this._paused = false;\n if (!this._receiver._writableState.needDrain) this._socket.resume();\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n abortHandshake(this, this._req, msg);\n return;\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'isPaused',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) return listener[kListener];\n }\n\n return null;\n },\n set(handler) {\n for (const listener of this.listeners(method)) {\n if (listener[kForOnEventAttribute]) {\n this.removeListener(method, listener);\n break;\n }\n }\n\n if (typeof handler !== 'function') return;\n\n this.addEventListener(method, handler, {\n [kForOnEventAttribute]: true\n });\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n * of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n * times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Function} [options.finishRequest] A function which can be used to\n * customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Function} [options.generateMask] The function used to generate the\n * masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n allowSynchronousEvents: true,\n autoPong: true,\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: 'GET',\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n websocket._autoPong = opts.autoPong;\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n } else {\n try {\n parsedUrl = new URL(address);\n } catch (e) {\n throw new SyntaxError(`Invalid URL: ${address}`);\n }\n }\n\n if (parsedUrl.protocol === 'http:') {\n parsedUrl.protocol = 'ws:';\n } else if (parsedUrl.protocol === 'https:') {\n parsedUrl.protocol = 'wss:';\n }\n\n websocket._url = parsedUrl.href;\n\n const isSecure = parsedUrl.protocol === 'wss:';\n const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n let invalidUrlMessage;\n\n if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n invalidUrlMessage =\n 'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n '\"http:\", \"https\", or \"ws+unix:\"';\n } else if (isIpcUrl && !parsedUrl.pathname) {\n invalidUrlMessage = \"The URL's pathname is empty\";\n } else if (parsedUrl.hash) {\n invalidUrlMessage = 'The URL contains a fragment identifier';\n }\n\n if (invalidUrlMessage) {\n const err = new SyntaxError(invalidUrlMessage);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const request = isSecure ? https.request : http.request;\n const protocolSet = new Set();\n let perMessageDeflate;\n\n opts.createConnection =\n opts.createConnection || (isSecure ? tlsConnect : netConnect);\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n ...opts.headers,\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket'\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols.length) {\n for (const protocol of protocols) {\n if (\n typeof protocol !== 'string' ||\n !subprotocolRegex.test(protocol) ||\n protocolSet.has(protocol)\n ) {\n throw new SyntaxError(\n 'An invalid or duplicated subprotocol was specified'\n );\n }\n\n protocolSet.add(protocol);\n }\n\n opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isIpcUrl) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n let req;\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalIpc = isIpcUrl;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isIpcUrl\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else if (websocket.listenerCount('redirect') === 0) {\n const isSameHost = isIpcUrl\n ? websocket._originalIpc\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalIpc\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n\n req = websocket._req = request(opts);\n\n if (websocket._redirects) {\n //\n // Unlike what is done for the `'upgrade'` event, no early exit is\n // triggered here if the user calls `websocket.close()` or\n // `websocket.terminate()` from a listener of the `'redirect'` event. This\n // is because the user can also call `request.destroy()` with an error\n // before calling `websocket.close()` or `websocket.terminate()` and this\n // would result in an error being emitted on the `request` object with no\n // `'error'` event listeners attached.\n //\n websocket.emit('redirect', websocket.url, req);\n }\n } else {\n req = websocket._req = request(opts);\n }\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req[kAborted]) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (e) {\n const err = new SyntaxError(`Invalid URL: ${location}`);\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the\n // `'upgrade'` event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n let protError;\n\n if (serverProt !== undefined) {\n if (!protocolSet.size) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (!protocolSet.has(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n } else if (protocolSet.size) {\n protError = 'Server sent no subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message = 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n\n websocket.setSocket(socket, head, {\n allowSynchronousEvents: opts.allowSynchronousEvents,\n generateMask: opts.generateMask,\n maxPayload: opts.maxPayload,\n skipUTF8Validation: opts.skipUTF8Validation\n });\n });\n\n if (opts.finishRequest) {\n opts.finishRequest(req, websocket);\n } else {\n req.end();\n }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n //\n // The following assignment is practically useless and is done only for\n // consistency.\n //\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream[kAborted] = true;\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n process.nextTick(emitErrorAndClose, websocket, err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n process.nextTick(cb, err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n const websocket = this[kWebSocket];\n\n if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket.readyState === WebSocket.CLOSED) return;\n if (websocket.readyState === WebSocket.OPEN) {\n websocket._readyState = WebSocket.CLOSING;\n setCloseTimer(websocket);\n }\n\n //\n // `socket.end()` is used instead of `socket.destroy()` to allow the other\n // peer to finish sending queued data. There is no need to set a timer here\n // because `CLOSING` means that it is already set or not needed.\n //\n this._socket.end();\n\n if (!websocket._errorEmitted) {\n websocket._errorEmitted = true;\n websocket.emit('error', err);\n }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n websocket._closeTimer = setTimeout(\n websocket._socket.destroy.bind(websocket._socket),\n closeTimeout\n );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let terminateOnDestroy = true;\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg, isBinary) {\n const data =\n !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n if (!duplex.push(data)) ws.pause();\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (ws.isPaused) ws.resume();\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n const protocols = new Set();\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (i; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (\n i !== 0 &&\n (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n ) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n\n const protocol = header.slice(start, end);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n\n if (start === -1 || end !== -1) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n const protocol = header.slice(start, i);\n\n if (protocols.has(protocol)) {\n throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n }\n\n protocols.add(protocol);\n return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n * multiple times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n * automatically send a pong in response to a ping\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n * not to skip UTF-8 validation for text and close messages\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n * class to use. It must be the `WebSocket` class or class that extends it\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n allowSynchronousEvents: true,\n autoPong: true,\n maxPayload: 100 * 1024 * 1024,\n skipUTF8Validation: false,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n WebSocket,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) {\n this.clients = new Set();\n this._shouldEmitClose = false;\n }\n\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Stop the server from accepting new connections and emit the `'close'` event\n * when all existing connections are closed.\n *\n * @param {Function} [cb] A one-time listener for the `'close'` event\n * @public\n */\n close(cb) {\n if (this._state === CLOSED) {\n if (cb) {\n this.once('close', () => {\n cb(new Error('The server is not running'));\n });\n }\n\n process.nextTick(emitClose, this);\n return;\n }\n\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n if (this.options.noServer || this.options.server) {\n if (this._server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n }\n\n if (this.clients) {\n if (!this.clients.size) {\n process.nextTick(emitClose, this);\n } else {\n this._shouldEmitClose = true;\n }\n } else {\n process.nextTick(emitClose, this);\n }\n } else {\n const server = this._server;\n\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // The HTTP/S server was created internally. Close it, and rely on its\n // `'close'` event.\n //\n server.close(() => {\n emitClose(this);\n });\n }\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key = req.headers['sec-websocket-key'];\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n\n if (req.method !== 'GET') {\n const message = 'Invalid HTTP method';\n abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n return;\n }\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n const message = 'Invalid Upgrade header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (key === undefined || !keyRegex.test(key)) {\n const message = 'Missing or invalid Sec-WebSocket-Key header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (version !== 8 && version !== 13) {\n const message = 'Missing or invalid Sec-WebSocket-Version header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n\n if (!this.shouldHandle(req)) {\n abortHandshake(socket, 400);\n return;\n }\n\n const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n let protocols = new Set();\n\n if (secWebSocketProtocol !== undefined) {\n try {\n protocols = subprotocol.parse(secWebSocketProtocol);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Protocol header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n const extensions = {};\n\n if (\n this.options.perMessageDeflate &&\n secWebSocketExtensions !== undefined\n ) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = extension.parse(secWebSocketExtensions);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n const message =\n 'Invalid or unacceptable Sec-WebSocket-Extensions header';\n abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n return;\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(\n extensions,\n key,\n protocols,\n req,\n socket,\n head,\n cb\n );\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {Object} extensions The accepted extensions\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Set} protocols The subprotocols\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The network socket between the server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new this.options.WebSocket(null, undefined, this.options);\n\n if (protocols.size) {\n //\n // Optionally call external protocol selection handler.\n //\n const protocol = this.options.handleProtocols\n ? this.options.handleProtocols(protocols, req)\n : protocols.values().next().value;\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = extension.format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, {\n allowSynchronousEvents: this.options.allowSynchronousEvents,\n maxPayload: this.options.maxPayload,\n skipUTF8Validation: this.options.skipUTF8Validation\n });\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => {\n this.clients.delete(ws);\n\n if (this._shouldEmitClose && !this.clients.size) {\n process.nextTick(emitClose, this);\n }\n });\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of \n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n //\n // The socket is writable unless the user destroyed or ended it before calling\n // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n // error. Handling this does not make much sense as the worst that can happen\n // is that some of the data written by the user might be discarded due to the\n // call to `socket.end()` below, which triggers an `'error'` event that in\n // turn causes the socket to be destroyed.\n //\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.once('finish', socket.destroy);\n\n socket.end(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(server, req, socket, code, message) {\n if (server.listenerCount('wsClientError')) {\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n server.emit('wsClientError', err, socket, req);\n } else {\n abortHandshake(socket, code, message);\n }\n}\n", "'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nWebSocket.WebSocket = WebSocket;\nWebSocket.WebSocketServer = WebSocket.Server;\n\nmodule.exports = WebSocket;\n", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "// When building the browser bundle, this import gets replaced by `globalThis.WebSocket`.\nimport WebSocketImpl from 'ws';\n\nexport default globalThis.WebSocket\n ? globalThis.WebSocket // Use native `WebSocket` in runtimes that support it (eg. Deno)\n : WebSocketImpl;\n", "import {\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED,\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT,\n SolanaError,\n} from '@solana/errors';\nimport { EventTarget } from '@solana/event-target-impl';\nimport { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport { getDataPublisherFromEventEmitter } from '@solana/subscribable';\nimport WebSocket from '@solana/ws-impl';\n\nexport type Config = Readonly<{\n /**\n * The number of bytes to admit into the WebSocket's send buffer before queueing messages on the\n * client.\n *\n * When you call {@link RpcSubscriptionsChannel.send | `send()`} on a `WebSocket` the runtime\n * might add the message to a buffer rather than send it right away. In the event that\n * `socket.bufferedAmount` exceeds the value configured here, messages will be added to a queue\n * in your application code instead of being sent to the WebSocket, until such time as the\n * `bufferedAmount` falls back below the high watermark.\n */\n sendBufferHighWatermark: number;\n /**\n * An `AbortSignal` to fire when you want to explicitly close the `WebSocket`.\n *\n * If the channel is open it will be closed with a normal closure code\n * (https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1) If the channel has not been\n * established yet, firing this signal will result in the `AbortError` being thrown to the\n * caller who was trying to open the channel.\n */\n signal: AbortSignal;\n /**\n * A string representing the target endpoint.\n *\n * In Node, it must be an absolute URL using the `ws` or `wss` protocol.\n */\n url: string;\n}>;\n\ntype WebSocketMessage = ArrayBufferLike | ArrayBufferView | Blob | string;\n\nconst NORMAL_CLOSURE_CODE = 1000; // https://www.rfc-editor.org/rfc/rfc6455.html#section-7.4.1\n\n/**\n * Creates an object that represents an open channel to a `WebSocket` server.\n *\n * You can use it to send messages by calling its\n * {@link RpcSubscriptionsChannel.send | `send()`} function and you can receive them by subscribing\n * to the {@link RpcSubscriptionChannelEvents} it emits.\n */\nexport function createWebSocketChannel({\n sendBufferHighWatermark,\n signal,\n url,\n}: Config): Promise> {\n if (signal.aborted) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n return Promise.reject(signal.reason);\n }\n let bufferDrainWatcher: Readonly<{ onCancel(): void; promise: Promise }> | undefined;\n let hasConnected = false;\n const listenerRemovers = new Set<() => void>();\n function cleanupListeners() {\n listenerRemovers.forEach(r => {\n r();\n });\n listenerRemovers.clear();\n }\n function handleAbort() {\n cleanupListeners();\n if (!hasConnected) {\n rejectOpen(signal.reason);\n }\n if (webSocket.readyState !== WebSocket.CLOSED && webSocket.readyState !== WebSocket.CLOSING) {\n webSocket.close(NORMAL_CLOSURE_CODE);\n }\n }\n function handleClose(ev: CloseEvent) {\n cleanupListeners();\n bufferDrainWatcher?.onCancel();\n signal.removeEventListener('abort', handleAbort);\n webSocket.removeEventListener('close', handleClose);\n webSocket.removeEventListener('error', handleError);\n webSocket.removeEventListener('message', handleMessage);\n webSocket.removeEventListener('open', handleOpen);\n if (!signal.aborted && !(ev.wasClean && ev.code === NORMAL_CLOSURE_CODE)) {\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED, {\n cause: ev,\n }),\n }),\n );\n }\n }\n function handleError(ev: Event) {\n if (signal.aborted) {\n return;\n }\n if (!hasConnected) {\n const failedToConnectError = new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT, {\n errorEvent: ev,\n });\n rejectOpen(failedToConnectError);\n eventTarget.dispatchEvent(\n new CustomEvent('error', {\n detail: failedToConnectError,\n }),\n );\n }\n }\n function handleMessage(ev: MessageEvent) {\n if (signal.aborted) {\n return;\n }\n eventTarget.dispatchEvent(new CustomEvent('message', { detail: ev.data }));\n }\n const eventTarget = new EventTarget();\n const dataPublisher = getDataPublisherFromEventEmitter(eventTarget);\n function handleOpen() {\n hasConnected = true;\n resolveOpen({\n ...dataPublisher,\n async send(message) {\n if (webSocket.readyState !== WebSocket.OPEN) {\n throw new SolanaError(SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED);\n }\n if (!bufferDrainWatcher && webSocket.bufferedAmount > sendBufferHighWatermark) {\n let onCancel!: () => void;\n const promise = new Promise((resolve, reject) => {\n const intervalId = setInterval(() => {\n if (\n webSocket.readyState !== WebSocket.OPEN ||\n !(webSocket.bufferedAmount > sendBufferHighWatermark)\n ) {\n clearInterval(intervalId);\n bufferDrainWatcher = undefined;\n resolve();\n }\n }, 16);\n onCancel = () => {\n bufferDrainWatcher = undefined;\n clearInterval(intervalId);\n reject(\n new SolanaError(\n SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED,\n ),\n );\n };\n });\n bufferDrainWatcher = {\n onCancel,\n promise,\n };\n }\n if (bufferDrainWatcher) {\n if (ArrayBuffer.isView(message) && !(message instanceof DataView)) {\n const TypedArrayConstructor = message.constructor as {\n new (...args: [typeof message]): typeof message;\n };\n // Clone the message to prevent mutation while queued.\n message = new TypedArrayConstructor(message);\n }\n await bufferDrainWatcher.promise;\n }\n webSocket.send(message);\n },\n });\n }\n const webSocket = new WebSocket(url);\n signal.addEventListener('abort', handleAbort);\n webSocket.addEventListener('close', handleClose);\n webSocket.addEventListener('error', handleError);\n webSocket.addEventListener('message', handleMessage);\n webSocket.addEventListener('open', handleOpen);\n let rejectOpen!: (e: SolanaError) => void;\n let resolveOpen!: (value: RpcSubscriptionsChannel) => void;\n return new Promise>((resolve, reject) => {\n rejectOpen = reject;\n resolveOpen = resolve;\n });\n}\n", "import { safeCaptureStackTrace, SOLANA_ERROR__RPC__INTEGER_OVERFLOW, SolanaError } from '@solana/errors';\nimport type { KeyPath } from '@solana/rpc-transformers';\n\nexport function createSolanaJsonRpcIntegerOverflowError(\n methodName: string,\n keyPath: KeyPath,\n value: bigint,\n): SolanaError {\n let argumentLabel = '';\n if (typeof keyPath[0] === 'number') {\n const argPosition = keyPath[0] + 1;\n const lastDigit = argPosition % 10;\n const lastTwoDigits = argPosition % 100;\n if (lastDigit == 1 && lastTwoDigits != 11) {\n argumentLabel = argPosition + 'st';\n } else if (lastDigit == 2 && lastTwoDigits != 12) {\n argumentLabel = argPosition + 'nd';\n } else if (lastDigit == 3 && lastTwoDigits != 13) {\n argumentLabel = argPosition + 'rd';\n } else {\n argumentLabel = argPosition + 'th';\n }\n } else {\n argumentLabel = `\\`${keyPath[0].toString()}\\``;\n }\n const path =\n keyPath.length > 1\n ? keyPath\n .slice(1)\n .map(pathPart => (typeof pathPart === 'number' ? `[${pathPart}]` : pathPart))\n .join('.')\n : undefined;\n const error = new SolanaError(SOLANA_ERROR__RPC__INTEGER_OVERFLOW, {\n argumentLabel,\n keyPath: keyPath as readonly (number | string | symbol)[],\n methodName,\n optionalPathLabel: path ? ` at path \\`${path}\\`` : '',\n value,\n ...(path !== undefined ? { path } : undefined),\n });\n safeCaptureStackTrace(error, createSolanaJsonRpcIntegerOverflowError);\n return error;\n}\n", "import type { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\n\nimport { createSolanaJsonRpcIntegerOverflowError } from './rpc-integer-overflow-error';\n\nexport const DEFAULT_RPC_SUBSCRIPTIONS_CONFIG: Partial<\n NonNullable[0]>\n> = {\n defaultCommitment: 'confirmed',\n onIntegerOverflow(request, keyPath, value) {\n throw createSolanaJsonRpcIntegerOverflowError(request.methodName, keyPath, value);\n },\n};\n", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "import { isSolanaError, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED } from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\ntype Config> = Readonly<{\n abortSignal: AbortSignal;\n channel: TChannel;\n intervalMs: number;\n}>;\n\nconst PING_PAYLOAD = {\n jsonrpc: '2.0',\n method: 'ping',\n} as const;\n\n/**\n * Given a {@link RpcSubscriptionsChannel}, will return a new channel that sends a ping message to\n * the inner channel if a message has not been sent or received in the last `intervalMs`. In web\n * browsers, this implementation sends no ping when the network is down, and sends a ping\n * immediately upon the network coming back up.\n */\nexport function getRpcSubscriptionsChannelWithAutoping>({\n abortSignal: callerAbortSignal,\n channel,\n intervalMs,\n}: Config): TChannel {\n let intervalId: ReturnType | undefined;\n function sendPing() {\n channel.send(PING_PAYLOAD).catch((e: unknown) => {\n if (isSolanaError(e, SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) {\n pingerAbortController.abort();\n }\n });\n }\n function restartPingTimer() {\n clearInterval(intervalId);\n intervalId = setInterval(sendPing, intervalMs);\n }\n const pingerAbortController = new AbortController();\n pingerAbortController.signal.addEventListener('abort', () => {\n clearInterval(intervalId);\n });\n callerAbortSignal.addEventListener('abort', () => {\n pingerAbortController.abort();\n });\n channel.on(\n 'error',\n () => {\n pingerAbortController.abort();\n },\n { signal: pingerAbortController.signal },\n );\n channel.on('message', restartPingTimer, { signal: pingerAbortController.signal });\n if (!__BROWSER__ || globalThis.navigator.onLine) {\n restartPingTimer();\n }\n if (__BROWSER__) {\n globalThis.addEventListener(\n 'offline',\n function handleOffline() {\n clearInterval(intervalId);\n },\n { signal: pingerAbortController.signal },\n );\n globalThis.addEventListener(\n 'online',\n function handleOnline() {\n sendPing();\n restartPingTimer();\n },\n { signal: pingerAbortController.signal },\n );\n }\n return {\n ...channel,\n send(...args) {\n if (!pingerAbortController.signal.aborted) {\n restartPingTimer();\n }\n return channel.send(...args);\n },\n };\n}\n", "import { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\n\nexport type ChannelPoolEntry = {\n channel: PromiseLike> | RpcSubscriptionsChannel;\n readonly dispose: () => void;\n subscriptionCount: number;\n};\n\ntype ChannelPool = { readonly entries: ChannelPoolEntry[]; freeChannelIndex: number };\n\nexport function createChannelPool(): ChannelPool {\n return {\n entries: [],\n freeChannelIndex: -1,\n };\n}\n", "import { AbortController } from '@solana/event-target-impl';\nimport { RpcSubscriptionsChannelCreator } from '@solana/rpc-subscriptions-spec';\n\nimport { ChannelPoolEntry, createChannelPool } from './rpc-subscriptions-channel-pool-internal';\n\ntype Config = Readonly<{\n maxSubscriptionsPerChannel: number;\n minChannels: number;\n}>;\n\n/**\n * Given a channel creator, will return a new channel creator with the following behavior.\n *\n * 1. When called, returns a {@link RpcSubscriptionsChannel}. Adds that channel to a pool.\n * 2. When called again, creates and returns new\n * {@link RpcSubscriptionChannel | RpcSubscriptionChannels} up to the number specified by\n * `minChannels`.\n * 3. When `minChannels` channels have been created, subsequent calls vend whichever existing\n * channel from the pool has the fewest subscribers, or the next one in rotation in the event of\n * a tie.\n * 4. Once all channels carry the number of subscribers specified by the number\n * `maxSubscriptionsPerChannel`, new channels in excess of `minChannel` will be created,\n * returned, and added to the pool.\n * 5. A channel will be destroyed once all of its subscribers' abort signals fire.\n */\nexport function getChannelPoolingChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator,\n>(createChannel: TChannelCreator, { maxSubscriptionsPerChannel, minChannels }: Config): TChannelCreator {\n const pool = createChannelPool();\n /**\n * This function advances the free channel index to the pool entry with the most capacity. It\n * sets the index to `-1` if all channels are full.\n */\n function recomputeFreeChannelIndex() {\n if (pool.entries.length < minChannels) {\n // Don't set the free channel index until the pool fills up; we want to keep creating\n // channels before we start rotating among them.\n pool.freeChannelIndex = -1;\n return;\n }\n let mostFreeChannel: Readonly<{ poolIndex: number; subscriptionCount: number }> | undefined;\n for (let ii = 0; ii < pool.entries.length; ii++) {\n const nextPoolIndex = (pool.freeChannelIndex + ii + 2) % pool.entries.length;\n const nextPoolEntry =\n // Start from the item two positions after the current item. This way, the\n // search will finish on the item after the current one. This ensures that, if\n // any channels tie for having the most capacity, the one that will be chosen is\n // the one immediately to the current one's right (wrapping around).\n pool.entries[nextPoolIndex];\n if (\n nextPoolEntry.subscriptionCount < maxSubscriptionsPerChannel &&\n (!mostFreeChannel || mostFreeChannel.subscriptionCount >= nextPoolEntry.subscriptionCount)\n ) {\n mostFreeChannel = {\n poolIndex: nextPoolIndex,\n subscriptionCount: nextPoolEntry.subscriptionCount,\n };\n }\n }\n pool.freeChannelIndex = mostFreeChannel?.poolIndex ?? -1;\n }\n return function getExistingChannelWithMostCapacityOrCreateChannel({ abortSignal }) {\n let poolEntry: ChannelPoolEntry;\n function destroyPoolEntry() {\n const index = pool.entries.findIndex(entry => entry === poolEntry);\n pool.entries.splice(index, 1);\n poolEntry.dispose();\n recomputeFreeChannelIndex();\n }\n if (pool.freeChannelIndex === -1) {\n const abortController = new AbortController();\n const newChannelPromise = createChannel({ abortSignal: abortController.signal });\n newChannelPromise\n .then(newChannel => {\n newChannel.on('error', destroyPoolEntry, { signal: abortController.signal });\n })\n .catch(destroyPoolEntry);\n poolEntry = {\n channel: newChannelPromise,\n dispose() {\n abortController.abort();\n },\n subscriptionCount: 0,\n };\n pool.entries.push(poolEntry);\n } else {\n poolEntry = pool.entries[pool.freeChannelIndex];\n }\n /**\n * A note about subscription counts.\n * Because of https://github.com/solana-labs/solana/pull/18943, two subscriptions for\n * materially the same notification will be coalesced on the server. This means they will be\n * assigned the same subscription id, and will occupy one subscription slot. We can't tell,\n * from here, whether a subscription will be treated in this way or not, so we\n * unconditionally increment the subscription count every time a subscription request is\n * made. This may result in subscription channels being treated as out-of-capacity when in\n * fact they are not.\n */\n poolEntry.subscriptionCount++;\n abortSignal.addEventListener('abort', function destroyConsumer() {\n poolEntry.subscriptionCount--;\n if (poolEntry.subscriptionCount === 0) {\n destroyPoolEntry();\n } else if (pool.freeChannelIndex !== -1) {\n // Back the free channel index up one position, and recompute it.\n pool.freeChannelIndex--;\n recomputeFreeChannelIndex();\n }\n });\n recomputeFreeChannelIndex();\n return poolEntry.channel;\n } as TChannelCreator;\n}\n", "import { pipe } from '@solana/functional';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\n/**\n * Given a {@link RpcSubscriptionsChannel}, will return a new channel that parses data published to\n * the `'message'` channel as JSON, and JSON-stringifies messages sent via the\n * {@link RpcSubscriptionsChannel.send | send(message)} method.\n */\nexport function getRpcSubscriptionsChannelWithJSONSerialization(\n channel: RpcSubscriptionsChannel,\n): RpcSubscriptionsChannel {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, JSON.parse),\n c => transformChannelOutboundMessages(c, JSON.stringify),\n );\n}\n", "import { pipe } from '@solana/functional';\nimport { parseJsonWithBigInts, stringifyJsonWithBigints } from '@solana/rpc-spec-types';\nimport {\n RpcSubscriptionsChannel,\n transformChannelInboundMessages,\n transformChannelOutboundMessages,\n} from '@solana/rpc-subscriptions-spec';\n\n/**\n * Similarly, to {@link getRpcSubscriptionsChannelWithJSONSerialization}, this function will\n * stringify and parse JSON message to and from the given `string` channel. However, this function\n * parses any integer value as a `BigInt` in order to safely handle numbers that exceed the\n * JavaScript [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER)\n * value.\n */\nexport function getRpcSubscriptionsChannelWithBigIntJSONSerialization(\n channel: RpcSubscriptionsChannel,\n): RpcSubscriptionsChannel {\n return pipe(\n channel,\n c => transformChannelInboundMessages(c, parseJsonWithBigInts),\n c => transformChannelOutboundMessages(c, stringifyJsonWithBigints),\n );\n}\n", "import { createWebSocketChannel } from '@solana/rpc-subscriptions-channel-websocket';\nimport type { RpcSubscriptionsChannel } from '@solana/rpc-subscriptions-spec';\nimport type { ClusterUrl } from '@solana/rpc-types';\n\nimport { getRpcSubscriptionsChannelWithAutoping } from './rpc-subscriptions-autopinger';\nimport { getChannelPoolingChannelCreator } from './rpc-subscriptions-channel-pool';\nimport { RpcSubscriptionsChannelCreatorFromClusterUrl } from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsChannelWithJSONSerialization } from './rpc-subscriptions-json';\nimport { getRpcSubscriptionsChannelWithBigIntJSONSerialization } from './rpc-subscriptions-json-bigint';\n\nexport type DefaultRpcSubscriptionsChannelConfig = Readonly<{\n /**\n * The number of milliseconds to wait since the last message sent or received over the channel\n * before sending a ping message to keep the channel open.\n */\n intervalMs?: number;\n /**\n * The number of subscribers that may share a channel before a new channel must be created.\n *\n * It is important that you set this to the maximum number of subscriptions that your RPC\n * provider recommends making over a single connection; the default is set deliberately low, so\n * as to comply with the restrictive limits of the public mainnet RPC node.\n *\n * @defaultValue 100\n */\n maxSubscriptionsPerChannel?: number;\n /** The number of channels to create before reusing a channel for a new subscription. */\n minChannels?: number;\n /**\n * The number of bytes of data to admit into the\n * [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) buffer before\n * buffering data on the client.\n */\n sendBufferHighWatermark?: number;\n /** The URL of the web socket server. Must use the `ws` or `wss` protocols. */\n url: TClusterUrl;\n}>;\n\n/**\n * Similar to {@link createDefaultRpcSubscriptionsChannelCreator} with some Solana-specific\n * defaults.\n *\n * For instance, it safely handles `BigInt` values in JSON messages since Solana RPC servers accept\n * and return integers larger than [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER).\n */\nexport function createDefaultSolanaRpcSubscriptionsChannelCreator(\n config: DefaultRpcSubscriptionsChannelConfig,\n): RpcSubscriptionsChannelCreatorFromClusterUrl {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithBigIntJSONSerialization,\n });\n}\n\n/**\n * Creates a function that returns new subscription channels when called.\n */\nexport function createDefaultRpcSubscriptionsChannelCreator(\n config: DefaultRpcSubscriptionsChannelConfig,\n): RpcSubscriptionsChannelCreatorFromClusterUrl {\n return createDefaultRpcSubscriptionsChannelCreatorImpl({\n ...config,\n jsonSerializer: getRpcSubscriptionsChannelWithJSONSerialization,\n });\n}\n\nfunction createDefaultRpcSubscriptionsChannelCreatorImpl(\n config: DefaultRpcSubscriptionsChannelConfig & {\n jsonSerializer: (channel: RpcSubscriptionsChannel) => RpcSubscriptionsChannel;\n },\n): RpcSubscriptionsChannelCreatorFromClusterUrl {\n if (/^wss?:/i.test(config.url) === false) {\n const protocolMatch = config.url.match(/^([^:]+):/);\n throw new DOMException(\n protocolMatch\n ? \"Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or \" +\n `'wss'. '${protocolMatch[1]}:' is not allowed.`\n : `Failed to construct 'WebSocket': The URL '${config.url}' is invalid.`,\n );\n }\n const { intervalMs, ...rest } = config;\n const createDefaultRpcSubscriptionsChannel = (({ abortSignal }) => {\n return createWebSocketChannel({\n ...rest,\n sendBufferHighWatermark:\n config.sendBufferHighWatermark ??\n // Let 128KB of data into the WebSocket buffer before buffering it in the app.\n 131_072,\n signal: abortSignal,\n })\n .then(config.jsonSerializer)\n .then(channel =>\n getRpcSubscriptionsChannelWithAutoping({\n abortSignal,\n channel,\n intervalMs: intervalMs ?? 5_000,\n }),\n );\n }) as RpcSubscriptionsChannelCreatorFromClusterUrl;\n return getChannelPoolingChannelCreator(createDefaultRpcSubscriptionsChannel, {\n maxSubscriptionsPerChannel:\n config.maxSubscriptionsPerChannel ??\n /**\n * A note about this default. The idea here is that, because some RPC providers impose\n * an upper limit on the number of subscriptions you can make per channel, we must\n * choose a number low enough to avoid hitting that limit. Without knowing what provider\n * a given person is using, or what their limit is, we have to choose the lowest of all\n * known limits. As of this writing (October 2024) that is the public mainnet RPC node\n * (api.mainnet-beta.solana.com) at 100 subscriptions.\n */\n 100,\n minChannels: config.minChannels ?? 1,\n });\n}\n", "import { AbortController } from '@solana/event-target-impl';\nimport fastStableStringify from '@solana/fast-stable-stringify';\nimport { RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { DataPublisher } from '@solana/subscribable';\n\ntype CacheEntry = {\n readonly abortController: AbortController;\n readonly dataPublisherPromise: Promise;\n numSubscribers: number;\n};\n\n/**\n * Given a {@link RpcSubscriptionsTransport}, will return a new transport that coalesces identical\n * subscriptions into a single subscription request to the server. The determination of whether a\n * subscription is the same as another is based on the `rpcRequest` returned by its\n * {@link RpcSubscriptionsPlan}. The subscription will only be aborted once all subscribers abort,\n * or there is an error.\n */\nexport function getRpcSubscriptionsTransportWithSubscriptionCoalescing(\n transport: TTransport,\n): TTransport {\n const cache = new Map();\n return function rpcSubscriptionsTransportWithSubscriptionCoalescing(config) {\n const { request, signal } = config;\n const subscriptionConfigurationHash = fastStableStringify([request.methodName, request.params]);\n\n let cachedDataPublisherPromise = cache.get(subscriptionConfigurationHash);\n if (!cachedDataPublisherPromise) {\n const abortController = new AbortController();\n const dataPublisherPromise = transport({\n ...config,\n signal: abortController.signal,\n });\n dataPublisherPromise\n .then(dataPublisher => {\n dataPublisher.on(\n 'error',\n () => {\n cache.delete(subscriptionConfigurationHash);\n abortController.abort();\n },\n { signal: abortController.signal },\n );\n })\n .catch(() => {});\n cache.set(\n subscriptionConfigurationHash,\n (cachedDataPublisherPromise = {\n abortController,\n dataPublisherPromise,\n numSubscribers: 0,\n }),\n );\n }\n cachedDataPublisherPromise.numSubscribers++;\n signal.addEventListener(\n 'abort',\n () => {\n cachedDataPublisherPromise.numSubscribers--;\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n queueMicrotask(() => {\n if (cachedDataPublisherPromise.numSubscribers === 0) {\n cache.delete(subscriptionConfigurationHash);\n cachedDataPublisherPromise.abortController.abort();\n }\n });\n }\n },\n { signal: cachedDataPublisherPromise.abortController.signal },\n );\n return cachedDataPublisherPromise.dataPublisherPromise;\n } as TTransport;\n}\n", "import { pipe } from '@solana/functional';\nimport { RpcSubscriptionsChannelCreator, RpcSubscriptionsTransport } from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport {\n RpcSubscriptionsChannelCreatorDevnet,\n RpcSubscriptionsChannelCreatorFromClusterUrl,\n RpcSubscriptionsChannelCreatorMainnet,\n RpcSubscriptionsChannelCreatorTestnet,\n RpcSubscriptionsTransportDevnet,\n RpcSubscriptionsTransportFromClusterUrl,\n RpcSubscriptionsTransportMainnet,\n RpcSubscriptionsTransportTestnet,\n} from './rpc-subscriptions-clusters';\nimport { getRpcSubscriptionsTransportWithSubscriptionCoalescing } from './rpc-subscriptions-coalescer';\n\nexport type DefaultRpcSubscriptionsTransportConfig = Readonly<{\n createChannel: RpcSubscriptionsChannelCreatorFromClusterUrl;\n}>;\n\n/**\n * Creates a {@link RpcSubscriptionsTransport} with some default behaviours.\n *\n * The default behaviours include:\n * - Logic that coalesces multiple subscriptions for the same notifications with the same arguments\n * into a single subscription.\n *\n * @param config\n */\nexport function createDefaultRpcSubscriptionsTransport({\n createChannel,\n}: DefaultRpcSubscriptionsTransportConfig) {\n return pipe(\n createRpcSubscriptionsTransportFromChannelCreator(\n createChannel,\n ) as RpcSubscriptionsTransport as RpcSubscriptionsTransportFromClusterUrl,\n transport => getRpcSubscriptionsTransportWithSubscriptionCoalescing(transport),\n );\n}\n\nexport function createRpcSubscriptionsTransportFromChannelCreator<\n TChannelCreator extends RpcSubscriptionsChannelCreator,\n TInboundMessage,\n TOutboundMessage,\n>(createChannel: TChannelCreator) {\n return (async ({ execute, signal }) => {\n const channel = await createChannel({ abortSignal: signal });\n return await execute({ channel, signal });\n }) as TChannelCreator extends RpcSubscriptionsChannelCreatorDevnet\n ? RpcSubscriptionsTransportDevnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorTestnet\n ? RpcSubscriptionsTransportTestnet\n : TChannelCreator extends RpcSubscriptionsChannelCreatorMainnet\n ? RpcSubscriptionsTransportMainnet\n : RpcSubscriptionsTransport;\n}\n", "import type { SolanaRpcSubscriptionsApi, SolanaRpcSubscriptionsApiUnstable } from '@solana/rpc-subscriptions-api';\nimport { createSolanaRpcSubscriptionsApi } from '@solana/rpc-subscriptions-api';\nimport {\n createSubscriptionRpc,\n RpcSubscriptionsApiMethods,\n type RpcSubscriptionsTransport,\n} from '@solana/rpc-subscriptions-spec';\nimport { ClusterUrl } from '@solana/rpc-types';\n\nimport { DEFAULT_RPC_SUBSCRIPTIONS_CONFIG } from './rpc-default-config';\nimport {\n createDefaultSolanaRpcSubscriptionsChannelCreator,\n DefaultRpcSubscriptionsChannelConfig,\n} from './rpc-subscriptions-channel';\nimport type { RpcSubscriptionsFromTransport } from './rpc-subscriptions-clusters';\nimport { createDefaultRpcSubscriptionsTransport } from './rpc-subscriptions-transport';\n\ntype Config = DefaultRpcSubscriptionsChannelConfig;\n\nfunction createSolanaRpcSubscriptionsImpl(\n clusterUrl: TClusterUrl,\n config?: Omit, 'url'>,\n) {\n const transport = createDefaultRpcSubscriptionsTransport({\n createChannel: createDefaultSolanaRpcSubscriptionsChannelCreator({ ...config, url: clusterUrl }),\n });\n return createSolanaRpcSubscriptionsFromTransport(transport);\n}\n\n/**\n * Creates a {@link RpcSubscriptions} instance that exposes the Solana JSON RPC WebSocket API given\n * a cluster URL and some optional channel config. See\n * {@link createDefaultRpcSubscriptionsChannelCreator} for the shape of the channel config.\n */\nexport function createSolanaRpcSubscriptions(\n clusterUrl: TClusterUrl,\n config?: Omit, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl(clusterUrl, config);\n}\n\n/**\n * Creates a {@link RpcSubscriptions} instance that exposes the Solana JSON RPC WebSocket API,\n * including its unstable methods, given a cluster URL and some optional channel config. See\n * {@link createDefaultRpcSubscriptionsChannelCreator} for the shape of the channel config.\n */\nexport function createSolanaRpcSubscriptions_UNSTABLE(\n clusterUrl: TClusterUrl,\n config?: Omit, 'url'>,\n) {\n return createSolanaRpcSubscriptionsImpl(\n clusterUrl,\n config,\n );\n}\n\n/**\n * Creates a {@link RpcSubscriptions} instance that exposes the Solana JSON RPC WebSocket API given\n * the supplied {@link RpcSubscriptionsTransport}.\n */\nexport function createSolanaRpcSubscriptionsFromTransport<\n TTransport extends RpcSubscriptionsTransport,\n TApi extends RpcSubscriptionsApiMethods = SolanaRpcSubscriptionsApi,\n>(transport: TTransport) {\n return createSubscriptionRpc({\n api: createSolanaRpcSubscriptionsApi(DEFAULT_RPC_SUBSCRIPTIONS_CONFIG),\n transport,\n }) as RpcSubscriptionsFromTransport;\n}\n", "import { Address, assertIsAddress, getAddressDecoder, getAddressEncoder, isAddress } from '@solana/addresses';\nimport { combineCodec, createEncoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\nimport {\n isSolanaError,\n SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE,\n SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH,\n SolanaError,\n} from '@solana/errors';\nimport { Brand, EncodedString } from '@solana/nominal-types';\n\nexport type Blockhash = Brand, 'Blockhash'>;\n\n/**\n * A type guard that returns `true` if the input string conforms to the {@link Blockhash} type, and\n * refines its type for use in your program.\n *\n * @example\n * ```ts\n * import { isBlockhash } from '@solana/rpc-types';\n *\n * if (isBlockhash(blockhash)) {\n * // At this point, `blockhash` has been refined to a\n * // `Blockhash` that can be used with the RPC.\n * const { value: isValid } = await rpc.isBlockhashValid(blockhash).send();\n * setBlockhashIsFresh(isValid);\n * } else {\n * setError(`${blockhash} is not a blockhash`);\n * }\n * ```\n */\nexport function isBlockhash(putativeBlockhash: string): putativeBlockhash is Blockhash {\n return isAddress(putativeBlockhash);\n}\n\n/**\n * From time to time you might acquire a string, that you expect to validate as a blockhash, from an\n * untrusted network API or user input. Use this function to assert that such an arbitrary string is\n * a base58-encoded blockhash.\n *\n * @example\n * ```ts\n * import { assertIsBlockhash } from '@solana/rpc-types';\n *\n * // Imagine a function that determines whether a blockhash is fresh when a user submits a form.\n * function handleSubmit() {\n * // We know only that what the user typed conforms to the `string` type.\n * const blockhash: string = blockhashInput.value;\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `blockhash` to `Blockhash`.\n * assertIsBlockhash(blockhash);\n * // At this point, `blockhash` is a `Blockhash` that can be used with the RPC.\n * const { value: isValid } = await rpc.isBlockhashValid(blockhash).send();\n * } catch (e) {\n * // `blockhash` turned out not to be a base58-encoded blockhash\n * }\n * }\n * ```\n */\nexport function assertIsBlockhash(putativeBlockhash: string): asserts putativeBlockhash is Blockhash {\n try {\n assertIsAddress(putativeBlockhash);\n } catch (error) {\n if (isSolanaError(error, SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE)) {\n throw new SolanaError(SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE, error.context);\n }\n if (isSolanaError(error, SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH, error.context);\n }\n throw error;\n }\n}\n\n/**\n * Combines _asserting_ that a string is a blockhash with _coercing_ it to the {@link Blockhash}\n * type. It's most useful with untrusted input.\n *\n * @example\n * ```ts\n * import { blockhash } from '@solana/rpc-types';\n *\n * const { value: isValid } = await rpc.isBlockhashValid(blockhash(blockhashFromUserInput)).send();\n * ```\n *\n * > [!TIP]\n * > When starting from a known-good blockhash as a string, it's more efficient to typecast it\n * rather than to use the {@link blockhash} helper, because the helper unconditionally performs\n * validation on its input.\n * >\n * > ```ts\n * > import { Blockhash } from '@solana/rpc-types';\n * >\n * > const blockhash = 'ABmPH5KDXX99u6woqFS5vfBGSNyKG42SzpvBMWWqAy48' as Blockhash;\n * > ```\n */\nexport function blockhash(putativeBlockhash: string): Blockhash {\n assertIsBlockhash(putativeBlockhash);\n return putativeBlockhash;\n}\n\n/**\n * Returns an encoder that you can use to encode a base58-encoded blockhash to a byte array.\n *\n * @example\n * ```ts\n * import { getBlockhashEncoder } from '@solana/rpc-types';\n *\n * const blockhash = 'ABmPH5KDXX99u6woqFS5vfBGSNyKG42SzpvBMWWqAy48' as Blockhash;\n * const blockhashEncoder = getBlockhashEncoder();\n * const blockhashBytes = blockhashEncoder.encode(blockhash);\n * // Uint8Array(32) [\n * // 136, 123, 44, 249, 43, 19, 60, 14,\n * // 144, 16, 168, 241, 121, 111, 70, 232,\n * // 186, 26, 140, 202, 213, 64, 231, 82,\n * // 179, 66, 103, 237, 52, 117, 217, 93\n * // ]\n * ```\n */\nexport function getBlockhashEncoder(): FixedSizeEncoder {\n const addressEncoder = getAddressEncoder();\n return createEncoder({\n fixedSize: 32,\n write: (value: string, bytes, offset) => {\n assertIsBlockhash(value);\n return addressEncoder.write(value as string as Address, bytes, offset);\n },\n });\n}\n\n/**\n * Returns a decoder that you can use to convert an array of 32 bytes representing a blockhash to\n * the base58-encoded representation of that blockhash.\n *\n * @example\n * ```ts\n * import { getBlockhashDecoder } from '@solana/rpc-types';\n *\n * const blockhashBytes = new Uint8Array([\n * 136, 123, 44, 249, 43, 19, 60, 14,\n * 144, 16, 168, 241, 121, 111, 70, 232,\n * 186, 26, 140, 202, 213, 64, 231, 82,\n * 179, 66, 103, 237, 52, 117, 217, 93\n * ]);\n * const blockhashDecoder = getBlockhashDecoder();\n * const blockhash = blockhashDecoder.decode(blockhashBytes); // ABmPH5KDXX99u6woqFS5vfBGSNyKG42SzpvBMWWqAy48\n * ```\n */\nexport function getBlockhashDecoder(): FixedSizeDecoder {\n return getAddressDecoder() as FixedSizeDecoder as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to a base-58 encoded blockhash.\n *\n * @see {@link getBlockhashDecoder}\n * @see {@link getBlockhashEncoder}\n */\nexport function getBlockhashCodec(): FixedSizeCodec {\n return combineCodec(getBlockhashEncoder(), getBlockhashDecoder());\n}\n\nexport function getBlockhashComparator(): (x: string, y: string) => number {\n return new Intl.Collator('en', {\n caseFirst: 'lower',\n ignorePunctuation: false,\n localeMatcher: 'best fit',\n numeric: false,\n sensitivity: 'variant',\n usage: 'sort',\n }).compare;\n}\n", "export type MainnetUrl = string & { '~cluster': 'mainnet' };\nexport type DevnetUrl = string & { '~cluster': 'devnet' };\nexport type TestnetUrl = string & { '~cluster': 'testnet' };\nexport type ClusterUrl = DevnetUrl | MainnetUrl | TestnetUrl | string;\n\n/** Given a URL casts it to a type that is only accepted where mainnet URLs are expected. */\nexport function mainnet(putativeString: string): MainnetUrl {\n return putativeString as MainnetUrl;\n}\n/** Given a URL casts it to a type that is only accepted where devnet URLs are expected. */\nexport function devnet(putativeString: string): DevnetUrl {\n return putativeString as DevnetUrl;\n}\n/** Given a URL casts it to a type that is only accepted where testnet URLs are expected. */\nexport function testnet(putativeString: string): TestnetUrl {\n return putativeString as TestnetUrl;\n}\n", "import { SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, SolanaError } from '@solana/errors';\n\n/**\n * A union of all possible commitment statuses -- each a measure of the network confirmation and\n * stake levels on a particular block.\n *\n * Read more about the statuses themselves, [here](https://docs.solana.com/cluster/commitments).\n */\nexport type Commitment = 'confirmed' | 'finalized' | 'processed';\n\nfunction getCommitmentScore(commitment: Commitment): number {\n switch (commitment) {\n case 'finalized':\n return 2;\n case 'confirmed':\n return 1;\n case 'processed':\n return 0;\n default:\n throw new SolanaError(SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE, {\n unexpectedValue: commitment satisfies never,\n });\n }\n}\n\nexport function commitmentComparator(a: Commitment, b: Commitment): -1 | 0 | 1 {\n if (a === b) {\n return 0;\n }\n return getCommitmentScore(a) < getCommitmentScore(b) ? -1 : 1;\n}\n", "import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n} from '@solana/codecs-core';\nimport { getU64Decoder, getU64Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE, SolanaError } from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\n\n/**\n * Represents an integer value denominated in Lamports (ie. $1 \\times 10^{-9}$ ◎).\n *\n * It is represented as a `bigint` in client code and an `u64` in server code.\n */\nexport type Lamports = Brand;\n\n// Largest possible value to be represented by a u64\nconst maxU64Value = 18446744073709551615n; // 2n ** 64n - 1n\n\nlet memoizedU64Encoder: FixedSizeEncoder | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\n\nfunction getMemoizedU64Decoder(): FixedSizeDecoder {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\n\n/**\n * This is a type guard that accepts a `bigint` as input. It will both return `true` if the integer\n * conforms to the {@link Lamports} type and will refine the type for use in your program.\n *\n * @example\n * ```ts\n * import { isLamports } from '@solana/rpc-types';\n *\n * if (isLamports(lamports)) {\n * // At this point, `lamports` has been refined to a\n * // `Lamports` that can be used anywhere Lamports are expected.\n * await transfer(fromAddress, toAddress, lamports);\n * } else {\n * setError(`${lamports} is not a quantity of Lamports`);\n * }\n * ```\n */\nexport function isLamports(putativeLamports: bigint): putativeLamports is Lamports {\n return putativeLamports >= 0 && putativeLamports <= maxU64Value;\n}\n\n/**\n * Lamport values returned from the RPC API conform to the type {@link Lamports}. You can use a\n * value of that type wherever a quantity of Lamports is expected.\n *\n * @example\n * From time to time you might acquire a number that you expect to be a quantity of Lamports, from\n * an untrusted network API or user input. To assert that such an arbitrary number is usable as a\n * quantity of Lamports, use this function.\n *\n * ```ts\n * import { assertIsLamports } from '@solana/rpc-types';\n *\n * // Imagine a function that creates a transfer instruction when a user submits a form.\n * function handleSubmit() {\n * // We know only that what the user typed conforms to the `number` type.\n * const lamports: number = parseInt(quantityInput.value, 10);\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `lamports` to `Lamports`.\n * assertIsLamports(lamports);\n * // At this point, `lamports` is a `Lamports` that can be used anywhere Lamports are expected.\n * await transfer(fromAddress, toAddress, lamports);\n * } catch (e) {\n * // `lamports` turned out not to validate as a quantity of Lamports.\n * }\n * }\n * ```\n */\nexport function assertIsLamports(putativeLamports: bigint): asserts putativeLamports is Lamports {\n if (putativeLamports < 0 || putativeLamports > maxU64Value) {\n throw new SolanaError(SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE);\n }\n}\n\n/**\n * This helper combines _asserting_ that a number is a possible number of {@link Lamports} with\n * _coercing_ it to the {@link Lamports} type. It's best used with untrusted input.\n *\n * @example\n * ```ts\n * import { lamports } from '@solana/rpc-types';\n *\n * await transfer(address(fromAddress), address(toAddress), lamports(100000n));\n * ```\n */\nexport function lamports(putativeLamports: bigint): Lamports {\n assertIsLamports(putativeLamports);\n return putativeLamports;\n}\n\ntype ExtractAdditionalProps = Omit;\n\n/**\n * Returns an encoder that you can use to encode a 64-bit {@link Lamports} value to 8 bytes in\n * little endian order.\n */\nexport function getDefaultLamportsEncoder(): FixedSizeEncoder {\n return getLamportsEncoder(getMemoizedU64Encoder());\n}\n\n/**\n * Returns an encoder that you can use to encode a {@link Lamports} value to a byte array.\n *\n * You must supply a number decoder that will determine how encode the numeric value.\n *\n * @example\n * ```ts\n * import { getLamportsEncoder } from '@solana/rpc-types';\n * import { getU16Encoder } from '@solana/codecs-numbers';\n *\n * const lamports = lamports(256n);\n * const lamportsEncoder = getLamportsEncoder(getU16Encoder());\n * const lamportsBytes = lamportsEncoder.encode(lamports);\n * // Uint8Array(2) [ 0, 1 ]\n * ```\n */\nexport function getLamportsEncoder(\n innerEncoder: TEncoder,\n): Encoder & ExtractAdditionalProps {\n return innerEncoder;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing a 64-bit little endian\n * number to a {@link Lamports} value.\n */\nexport function getDefaultLamportsDecoder(): FixedSizeDecoder {\n return getLamportsDecoder(getMemoizedU64Decoder());\n}\n\n/**\n * Returns a decoder that you can use to convert an array of bytes representing a number to a\n * {@link Lamports} value.\n *\n * You must supply a number decoder that will determine how many bits to use to decode the numeric\n * value.\n *\n * @example\n * ```ts\n * import { getLamportsDecoder } from '@solana/rpc-types';\n * import { getU16Decoder } from '@solana/codecs-numbers';\n *\n * const lamportsBytes = new Uint8Array([ 0, 1 ]);\n * const lamportsDecoder = getLamportsDecoder(getU16Decoder());\n * const lamports = lamportsDecoder.decode(lamportsBytes); // lamports(256n)\n * ```\n */\nexport function getLamportsDecoder(\n innerDecoder: TDecoder,\n): Decoder & ExtractAdditionalProps {\n return transformDecoder(innerDecoder, value =>\n lamports(typeof value === 'bigint' ? value : BigInt(value)),\n ) as Decoder & ExtractAdditionalProps;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to a 64-bit {@link Lamports} value.\n *\n * @see {@link getDefaultLamportsDecoder}\n * @see {@link getDefaultLamportsEncoder}\n */\nexport function getDefaultLamportsCodec(): FixedSizeCodec {\n return combineCodec(getDefaultLamportsEncoder(), getDefaultLamportsDecoder());\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link Lamports} value.\n *\n * @see {@link getLamportsDecoder}\n * @see {@link getLamportsEncoder}\n */\nexport function getLamportsCodec(\n innerCodec: TCodec,\n): Codec & ExtractAdditionalProps {\n return combineCodec(getLamportsEncoder(innerCodec), getLamportsDecoder(innerCodec)) as Codec &\n ExtractAdditionalProps;\n}\n", "import { SOLANA_ERROR__MALFORMED_BIGINT_STRING, SolanaError } from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\n\n/**\n * This type represents a `bigint` which has been encoded as a string for transit over a transport\n * that does not support `bigint` values natively. The JSON-RPC is such a transport.\n */\nexport type StringifiedBigInt = Brand;\n\n/**\n * A type guard that returns `true` if the input string parses as a `BigInt`, and refines its type\n * for use in your program.\n *\n * @example\n * ```ts\n * import { isStringifiedBigInt } from '@solana/rpc-types';\n *\n * if (isStringifiedBigInt(bigintString)) {\n * // At this point, `bigintString` has been refined to a `StringifiedBigInt`\n * bigintString satisfies StringifiedBigInt; // OK\n * } else {\n * setError(`${bigintString} does not represent a BigInt`);\n * }\n * ```\n */\nexport function isStringifiedBigInt(putativeBigInt: string): putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * From time to time you might acquire a string, that you expect to parse as a `BigInt`, from an\n * untrusted network API or user input. Use this function to assert that such an arbitrary string\n * will in fact parse as a `BigInt`.\n *\n * @example\n * ```ts\n * import { assertIsStringifiedBigInt } from '@solana/rpc-types';\n *\n * // Imagine having received a value that you presume represents the supply of some token.\n * // At this point we know only that it conforms to the `string` type.\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `supplyString` to `StringifiedBigInt`.\n * assertIsStringifiedBigInt(supplyString);\n * // At this point, `supplyString` is a `StringifiedBigInt`.\n * supplyString satisfies StringifiedBigInt;\n * } catch (e) {\n * // `supplyString` turned out not to parse as a `BigInt`\n * }\n * ```\n */\nexport function assertIsStringifiedBigInt(putativeBigInt: string): asserts putativeBigInt is StringifiedBigInt {\n try {\n BigInt(putativeBigInt);\n } catch {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_BIGINT_STRING, {\n value: putativeBigInt,\n });\n }\n}\n\n/**\n * This helper combines _asserting_ that a string will parse as a `BigInt` with _coercing_ it to the\n * {@link StringifiedBigInt} type. It's best used with untrusted input.\n *\n * @example\n * ```ts\n * import { stringifiedBigInt } from '@solana/rpc-types';\n *\n * const supplyString = stringifiedBigInt('1000000000');\n * ```\n */\nexport function stringifiedBigInt(putativeBigInt: string): StringifiedBigInt {\n assertIsStringifiedBigInt(putativeBigInt);\n return putativeBigInt;\n}\n", "import { SOLANA_ERROR__MALFORMED_NUMBER_STRING, SolanaError } from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\n\n/**\n * This type represents a number which has been encoded as a string for transit over a transport\n * where loss of precision when using the native number type is a concern. The JSON-RPC is such a\n * transport.\n */\nexport type StringifiedNumber = Brand;\n\n/**\n * A type guard that returns `true` if the input string parses as a `Number`, and refines its type\n * for use in your program.\n *\n * @example\n * ```ts\n * import { isStringifiedNumber } from '@solana/rpc-types';\n *\n * if (isStringifiedNumber(numericString)) {\n * // At this point, `numericString` has been refined to a `StringifiedNumber`\n * numericString satisfies StringifiedNumber; // OK\n * } else {\n * setError(`${numericString} does not represent a number`);\n * }\n * ```\n */\nexport function isStringifiedNumber(putativeNumber: string): putativeNumber is StringifiedNumber {\n return !Number.isNaN(Number(putativeNumber));\n}\n\n/**\n * From time to time you might acquire a string, that you expect to parse as a `Number`, from an\n * untrusted network API or user input. Use this function to assert that such an arbitrary string\n * will in fact parse as a `Number`.\n *\n * @example\n * ```ts\n * import { assertIsStringifiedNumber } from '@solana/rpc-types';\n *\n * // Imagine having received a value that you presume represents some decimal number.\n * // At this point we know only that it conforms to the `string` type.\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `decimalNumberString` to `StringifiedNumber`.\n * assertIsStringifiedNumber(decimalNumberString);\n * // At this point, `decimalNumberString` is a `StringifiedNumber`.\n * decimalNumberString satisfies StringifiedNumber;\n * } catch (e) {\n * // `decimalNumberString` turned out not to parse as a number.\n * }\n * ```\n */\nexport function assertIsStringifiedNumber(putativeNumber: string): asserts putativeNumber is StringifiedNumber {\n if (Number.isNaN(Number(putativeNumber))) {\n throw new SolanaError(SOLANA_ERROR__MALFORMED_NUMBER_STRING, {\n value: putativeNumber,\n });\n }\n}\n\n/**\n * This helper combines _asserting_ that a string will parse as a `Number` with _coercing_ it to the\n * {@link StringifiedNumber} type. It's best used with untrusted input.\n *\n * @example\n * ```ts\n * import { stringifiedNumber } from '@solana/rpc-types';\n *\n * const decimalNumberString = stringifiedNumber('-42.1');\n * ```\n */\nexport function stringifiedNumber(putativeNumber: string): StringifiedNumber {\n assertIsStringifiedNumber(putativeNumber);\n return putativeNumber;\n}\n", "import { SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, SolanaError } from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\n\n/**\n * This type represents a Unix timestamp in _seconds_.\n *\n * It is represented as a `bigint` in client code and an `i64` in server code.\n */\nexport type UnixTimestamp = Brand;\n\n// Largest possible value to be represented by an i64\nconst maxI64Value = 9223372036854775807n; // 2n ** 63n - 1n\nconst minI64Value = -9223372036854775808n; // -(2n ** 63n)\n\n/**\n * This is a type guard that accepts a `bigint` as input. It will both return `true` if the integer\n * conforms to the {@link UnixTimestamp} type and will refine the type for use in your program.\n *\n * @example\n * ```ts\n * import { isUnixTimestamp } from '@solana/rpc-types';\n *\n * if (isUnixTimestamp(timestamp)) {\n * // At this point, `timestamp` has been refined to a\n * // `UnixTimestamp` that can be used anywhere timestamps are expected.\n * timestamp satisfies UnixTimestamp;\n * } else {\n * setError(`${timestamp} is not a Unix timestamp`);\n * }\n * ```\n */\n\nexport function isUnixTimestamp(putativeTimestamp: bigint): putativeTimestamp is UnixTimestamp {\n return putativeTimestamp >= minI64Value && putativeTimestamp <= maxI64Value;\n}\n\n/**\n * Timestamp values returned from the RPC API conform to the type {@link UnixTimestamp}. You can use\n * a value of that type wherever a timestamp is expected.\n *\n * @example\n * From time to time you might acquire a number that you expect to be a timestamp, from an untrusted\n * network API or user input. To assert that such an arbitrary number is usable as a Unix timestamp,\n * use this function.\n *\n * ```ts\n * import { assertIsUnixTimestamp } from '@solana/rpc-types';\n *\n * // Imagine having received a value that you presume represents a timestamp.\n * // At this point we know only that it conforms to the `bigint` type.\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `timestamp` to `UnixTimestamp`.\n * assertIsUnixTimestamp(timestamp);\n * // At this point, `timestamp` is a `UnixTimestamp`.\n * timestamp satisfies UnixTimestamp;\n * } catch (e) {\n * // `timestamp` turned out not to be a valid Unix timestamp\n * }\n * ```\n */\nexport function assertIsUnixTimestamp(putativeTimestamp: bigint): asserts putativeTimestamp is UnixTimestamp {\n if (putativeTimestamp < minI64Value || putativeTimestamp > maxI64Value) {\n throw new SolanaError(SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE, {\n value: putativeTimestamp,\n });\n }\n}\n\n/**\n * This helper combines _asserting_ that a `bigint` represents a Unix timestamp with _coercing_ it\n * to the {@link UnixTimestamp} type. It's best used with untrusted input.\n *\n * @example\n * ```ts\n * import { unixTimestamp } from '@solana/rpc-types';\n *\n * const timestamp = unixTimestamp(-42n); // Wednesday, December 31, 1969 3:59:18 PM GMT-08:00\n * ```\n */\nexport function unixTimestamp(putativeTimestamp: bigint): UnixTimestamp {\n assertIsUnixTimestamp(putativeTimestamp);\n return putativeTimestamp;\n}\n", "import { SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME, SolanaError } from '@solana/errors';\nimport { type Blockhash, isBlockhash } from '@solana/rpc-types';\n\nimport { ExcludeTransactionMessageLifetime, TransactionMessageWithLifetime } from './lifetime';\nimport { BaseTransactionMessage } from './transaction-message';\n\n/**\n * A constraint which, when applied to a transaction message, makes that transaction message\n * eligible to land on the network. The transaction message will continue to be eligible to land\n * until the network considers the `blockhash` to be expired.\n *\n * This can happen when the network proceeds past the `lastValidBlockHeight` for which the blockhash\n * is considered valid, or when the network switches to a fork where that blockhash is not present.\n */\ntype BlockhashLifetimeConstraint = Readonly<{\n /**\n * A recent blockhash observed by the transaction proposer.\n *\n * The transaction message will be considered eligible to land until the network determines this\n * blockhash to be too old, or has switched to a fork where it is not present.\n */\n blockhash: Blockhash;\n /**\n * This is the block height beyond which the network will consider the blockhash to be too old\n * to make a transaction message eligible to land.\n */\n lastValidBlockHeight: bigint;\n}>;\n\n/**\n * Represents a transaction message whose lifetime is defined by the age of the blockhash it\n * includes.\n *\n * Such a transaction can only be landed on the network if the current block height of the network\n * is less than or equal to the value of\n * `TransactionMessageWithBlockhashLifetime['lifetimeConstraint']['lastValidBlockHeight']`.\n */\nexport interface TransactionMessageWithBlockhashLifetime {\n readonly lifetimeConstraint: BlockhashLifetimeConstraint;\n}\n\n/**\n * A type guard that returns `true` if the transaction message conforms to the\n * {@link TransactionMessageWithBlockhashLifetime} type, and refines its type for use in your\n * program.\n *\n * @example\n * ```ts\n * import { isTransactionMessageWithBlockhashLifetime } from '@solana/transaction-messages';\n *\n * if (isTransactionMessageWithBlockhashLifetime(message)) {\n * // At this point, `message` has been refined to a `TransactionMessageWithBlockhashLifetime`.\n * const { blockhash } = message.lifetimeConstraint;\n * const { value: blockhashIsValid } = await rpc.isBlockhashValid(blockhash).send();\n * setBlockhashIsValid(blockhashIsValid);\n * } else {\n * setError(\n * `${getSignatureFromTransaction(transaction)} does not have a blockhash-based lifetime`,\n * );\n * }\n * ```\n */\nexport function isTransactionMessageWithBlockhashLifetime(\n transactionMessage: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): transactionMessage is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n return (\n 'lifetimeConstraint' in transactionMessage &&\n typeof transactionMessage.lifetimeConstraint.blockhash === 'string' &&\n typeof transactionMessage.lifetimeConstraint.lastValidBlockHeight === 'bigint' &&\n isBlockhash(transactionMessage.lifetimeConstraint.blockhash)\n );\n}\n\n/**\n * From time to time you might acquire a transaction message, that you expect to have a\n * blockhash-based lifetime, from an untrusted network API or user input. Use this function to\n * assert that such a transaction message actually has a blockhash-based lifetime.\n *\n * @example\n * ```ts\n * import { assertIsTransactionMessageWithBlockhashLifetime } from '@solana/transaction-messages';\n *\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `message` to `TransactionMessageWithBlockhashLifetime`.\n * assertIsTransactionMessageWithBlockhashLifetime(message);\n * // At this point, `message` is a `TransactionMessageWithBlockhashLifetime` that can be used\n * // with the RPC.\n * const { blockhash } = message.lifetimeConstraint;\n * const { value: blockhashIsValid } = await rpc.isBlockhashValid(blockhash).send();\n * } catch (e) {\n * // `message` turned out not to have a blockhash-based lifetime\n * }\n * ```\n */\nexport function assertIsTransactionMessageWithBlockhashLifetime(\n transactionMessage: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithBlockhashLifetime),\n): asserts transactionMessage is BaseTransactionMessage & TransactionMessageWithBlockhashLifetime {\n if (!isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME);\n }\n}\n\n/**\n * Given a blockhash and the last block height at which that blockhash is considered usable to land\n * transactions, this method will return a new transaction message having the same type as the one\n * supplied plus the `TransactionMessageWithBlockhashLifetime` type.\n *\n * @example\n * ```ts\n * import { setTransactionMessageLifetimeUsingBlockhash } from '@solana/transaction-messages';\n *\n * const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();\n * const txMessageWithBlockhashLifetime = setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, txMessage);\n * ```\n */\nexport function setTransactionMessageLifetimeUsingBlockhash<\n TTransactionMessage extends BaseTransactionMessage & Partial,\n>(\n blockhashLifetimeConstraint: BlockhashLifetimeConstraint,\n transactionMessage: TTransactionMessage,\n): ExcludeTransactionMessageLifetime & TransactionMessageWithBlockhashLifetime {\n type ReturnType = ExcludeTransactionMessageLifetime & TransactionMessageWithBlockhashLifetime;\n\n if (\n 'lifetimeConstraint' in transactionMessage &&\n transactionMessage.lifetimeConstraint &&\n 'blockhash' in transactionMessage.lifetimeConstraint &&\n transactionMessage.lifetimeConstraint.blockhash === blockhashLifetimeConstraint.blockhash &&\n transactionMessage.lifetimeConstraint.lastValidBlockHeight === blockhashLifetimeConstraint.lastValidBlockHeight\n ) {\n return transactionMessage as ReturnType;\n }\n\n return Object.freeze({\n ...transactionMessage,\n lifetimeConstraint: Object.freeze(blockhashLifetimeConstraint),\n }) as ReturnType;\n}\n", "import { SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, SolanaError } from '@solana/errors';\n\n/**\n * Asserts that a given string contains only characters from the specified alphabet.\n *\n * This function validates whether a string consists exclusively of characters\n * from the provided `alphabet`. If the validation fails, it throws an error\n * indicating the invalid base string.\n *\n * @param alphabet - The allowed set of characters for the base encoding.\n * @param testValue - The string to validate against the given alphabet.\n * @param givenValue - The original string provided by the user (defaults to `testValue`).\n *\n * @throws {SolanaError} If `testValue` contains characters not present in `alphabet`.\n *\n * @example\n * Validating a base-8 encoded string.\n * ```ts\n * assertValidBaseString('01234567', '123047'); // Passes\n * assertValidBaseString('01234567', '128'); // Throws error\n * ```\n */\nexport function assertValidBaseString(alphabet: string, testValue: string, givenValue = testValue) {\n if (!testValue.match(new RegExp(`^[${alphabet}]*$`))) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE, {\n alphabet,\n base: alphabet.length,\n value: givenValue,\n });\n }\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertValidBaseString } from './assertions';\n\n/**\n * Returns an encoder for base-X encoded strings.\n *\n * This encoder serializes strings using a custom alphabet, treating the length of the alphabet as the base.\n * The encoding process involves converting the input string to a numeric value in base-X, then\n * encoding that value into bytes while preserving leading zeroes.\n *\n * For more details, see {@link getBaseXCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeEncoder` for encoding base-X strings.\n *\n * @example\n * Encoding a base-X string using a custom alphabet.\n * ```ts\n * const encoder = getBaseXEncoder('0123456789abcdef');\n * const bytes = encoder.encode('deadface'); // 0xdeadface\n * ```\n *\n * @see {@link getBaseXCodec}\n */\nexport const getBaseXEncoder = (alphabet: string): VariableSizeEncoder => {\n return createEncoder({\n getSizeFromValue: (value: string): number => {\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) return value.length;\n\n const base10Number = getBigIntFromBaseX(tailChars, alphabet);\n return leadingZeroes.length + Math.ceil(base10Number.toString(16).length / 2);\n },\n write(value: string, bytes, offset) {\n // Check if the value is valid.\n assertValidBaseString(alphabet, value);\n if (value === '') return offset;\n\n // Handle leading zeroes.\n const [leadingZeroes, tailChars] = partitionLeadingZeroes(value, alphabet[0]);\n if (!tailChars) {\n bytes.set(new Uint8Array(leadingZeroes.length).fill(0), offset);\n return offset + leadingZeroes.length;\n }\n\n // From baseX to base10.\n let base10Number = getBigIntFromBaseX(tailChars, alphabet);\n\n // From base10 to bytes.\n const tailBytes: number[] = [];\n while (base10Number > 0n) {\n tailBytes.unshift(Number(base10Number % 256n));\n base10Number /= 256n;\n }\n\n const bytesToAdd = [...Array(leadingZeroes.length).fill(0), ...tailBytes];\n bytes.set(bytesToAdd, offset);\n return offset + bytesToAdd.length;\n },\n });\n};\n\n/**\n * Returns a decoder for base-X encoded strings.\n *\n * This decoder deserializes base-X encoded strings from a byte array using a custom alphabet.\n * The decoding process converts the byte array into a numeric value in base-10, then\n * maps that value back to characters in the specified base-X alphabet.\n *\n * For more details, see {@link getBaseXCodec}.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeDecoder` for decoding base-X strings.\n *\n * @example\n * Decoding a base-X string using a custom alphabet.\n * ```ts\n * const decoder = getBaseXDecoder('0123456789abcdef');\n * const value = decoder.decode(new Uint8Array([0xde, 0xad, 0xfa, 0xce])); // \"deadface\"\n * ```\n *\n * @see {@link getBaseXCodec}\n */\nexport const getBaseXDecoder = (alphabet: string): VariableSizeDecoder => {\n return createDecoder({\n read(rawBytes, offset): [string, number] {\n const bytes = offset === 0 ? rawBytes : rawBytes.slice(offset);\n if (bytes.length === 0) return ['', 0];\n\n // Handle leading zeroes.\n let trailIndex = bytes.findIndex(n => n !== 0);\n trailIndex = trailIndex === -1 ? bytes.length : trailIndex;\n const leadingZeroes = alphabet[0].repeat(trailIndex);\n if (trailIndex === bytes.length) return [leadingZeroes, rawBytes.length];\n\n // From bytes to base10.\n const base10Number = bytes.slice(trailIndex).reduce((sum, byte) => sum * 256n + BigInt(byte), 0n);\n\n // From base10 to baseX.\n const tailChars = getBaseXFromBigInt(base10Number, alphabet);\n\n return [leadingZeroes + tailChars, rawBytes.length];\n },\n });\n};\n\n/**\n * Returns a codec for encoding and decoding base-X strings.\n *\n * This codec serializes strings using a custom alphabet, treating the length of the alphabet as the base.\n * The encoding process converts the input string into a numeric value in base-X, which is then encoded as bytes.\n * The decoding process reverses this transformation to reconstruct the original string.\n *\n * This codec supports leading zeroes by treating the first character of the alphabet as the zero character.\n *\n * @param alphabet - The set of characters defining the base-X encoding.\n * @returns A `VariableSizeCodec` for encoding and decoding base-X strings.\n *\n * @example\n * Encoding and decoding a base-X string using a custom alphabet.\n * ```ts\n * const codec = getBaseXCodec('0123456789abcdef');\n * const bytes = codec.encode('deadface'); // 0xdeadface\n * const value = codec.decode(bytes); // \"deadface\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-X codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBaseXCodec('0123456789abcdef'), 8);\n * ```\n *\n * If you need a size-prefixed base-X codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBaseXCodec('0123456789abcdef'), getU32Codec());\n * ```\n *\n * Separate {@link getBaseXEncoder} and {@link getBaseXDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBaseXEncoder('0123456789abcdef').encode('deadface');\n * const value = getBaseXDecoder('0123456789abcdef').decode(bytes);\n * ```\n *\n * @see {@link getBaseXEncoder}\n * @see {@link getBaseXDecoder}\n */\nexport const getBaseXCodec = (alphabet: string): VariableSizeCodec =>\n combineCodec(getBaseXEncoder(alphabet), getBaseXDecoder(alphabet));\n\nfunction partitionLeadingZeroes(\n value: string,\n zeroCharacter: string,\n): [leadingZeros: string, tailChars: string | undefined] {\n const [leadingZeros, tailChars] = value.split(new RegExp(`((?!${zeroCharacter}).*)`));\n return [leadingZeros, tailChars];\n}\n\nfunction getBigIntFromBaseX(value: string, alphabet: string): bigint {\n const base = BigInt(alphabet.length);\n let sum = 0n;\n for (const char of value) {\n sum *= base;\n sum += BigInt(alphabet.indexOf(char));\n }\n return sum;\n}\n\nfunction getBaseXFromBigInt(value: bigint, alphabet: string): string {\n const base = BigInt(alphabet.length);\n const tailChars = [];\n while (value > 0n) {\n tailChars.unshift(alphabet[Number(value % base)]);\n value /= base;\n }\n return tailChars.join('');\n}\n", "import { getBaseXCodec, getBaseXDecoder, getBaseXEncoder } from './baseX';\n\nconst alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Returns an encoder for base-58 strings.\n *\n * This encoder serializes strings using a base-58 encoding scheme,\n * commonly used in cryptocurrency addresses and other compact representations.\n *\n * For more details, see {@link getBase58Codec}.\n *\n * @returns A `VariableSizeEncoder` for encoding base-58 strings.\n *\n * @example\n * Encoding a base-58 string.\n * ```ts\n * const encoder = getBase58Encoder();\n * const bytes = encoder.encode('heLLo'); // 0x1b6a3070\n * ```\n *\n * @see {@link getBase58Codec}\n */\nexport const getBase58Encoder = () => getBaseXEncoder(alphabet);\n\n/**\n * Returns a decoder for base-58 strings.\n *\n * This decoder deserializes base-58 encoded strings from a byte array.\n *\n * For more details, see {@link getBase58Codec}.\n *\n * @returns A `VariableSizeDecoder` for decoding base-58 strings.\n *\n * @example\n * Decoding a base-58 string.\n * ```ts\n * const decoder = getBase58Decoder();\n * const value = decoder.decode(new Uint8Array([0x1b, 0x6a, 0x30, 0x70])); // \"heLLo\"\n * ```\n *\n * @see {@link getBase58Codec}\n */\nexport const getBase58Decoder = () => getBaseXDecoder(alphabet);\n\n/**\n * Returns a codec for encoding and decoding base-58 strings.\n *\n * This codec serializes strings using a base-58 encoding scheme,\n * commonly used in cryptocurrency addresses and other compact representations.\n *\n * @returns A `VariableSizeCodec` for encoding and decoding base-58 strings.\n *\n * @example\n * Encoding and decoding a base-58 string.\n * ```ts\n * const codec = getBase58Codec();\n * const bytes = codec.encode('heLLo'); // 0x1b6a3070\n * const value = codec.decode(bytes); // \"heLLo\"\n * ```\n *\n * @remarks\n * This codec does not enforce a size boundary. It will encode and decode all bytes necessary to represent the string.\n *\n * If you need a fixed-size base-58 codec, consider using {@link fixCodecSize}.\n *\n * ```ts\n * const codec = fixCodecSize(getBase58Codec(), 8);\n * ```\n *\n * If you need a size-prefixed base-58 codec, consider using {@link addCodecSizePrefix}.\n *\n * ```ts\n * const codec = addCodecSizePrefix(getBase58Codec(), getU32Codec());\n * ```\n *\n * Separate {@link getBase58Encoder} and {@link getBase58Decoder} functions are available.\n *\n * ```ts\n * const bytes = getBase58Encoder().encode('heLLo');\n * const value = getBase58Decoder().decode(bytes);\n * ```\n *\n * @see {@link getBase58Encoder}\n * @see {@link getBase58Decoder}\n */\nexport const getBase58Codec = () => getBaseXCodec(alphabet);\n", "import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n type Encoder,\n transformDecoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport type { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\n\ntype AddressTableLookup = ReturnType[number];\n\nlet memoizedAddressTableLookupEncoder: VariableSizeEncoder | undefined;\nexport function getAddressTableLookupEncoder(): VariableSizeEncoder {\n if (!memoizedAddressTableLookupEncoder) {\n const indexEncoder = getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() }) as Encoder<\n readonly number[]\n >;\n memoizedAddressTableLookupEncoder = getStructEncoder([\n ['lookupTableAddress', getAddressEncoder()],\n ['writableIndexes', indexEncoder],\n ['readonlyIndexes', indexEncoder],\n ]);\n }\n\n return memoizedAddressTableLookupEncoder;\n}\n\nlet memoizedAddressTableLookupDecoder: VariableSizeDecoder | undefined;\nexport function getAddressTableLookupDecoder(): VariableSizeDecoder {\n if (!memoizedAddressTableLookupDecoder) {\n const indexEncoder = getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() });\n // @ts-expect-error Remove when `readableIndices` and `writableIndices` are removed.\n memoizedAddressTableLookupDecoder = transformDecoder(\n getStructDecoder([\n ['lookupTableAddress', getAddressDecoder()],\n ['writableIndexes', indexEncoder],\n ['readonlyIndexes', indexEncoder],\n ]),\n lookupTable =>\n 'readableIndices' in lookupTable\n ? ({\n ...lookupTable,\n readonlyIndexes: lookupTable.readableIndices,\n // @ts-expect-error Remove when `readableIndices` and `writableIndices` are removed.\n writableIndexes: lookupTable.writableIndices,\n } as AddressTableLookup)\n : lookupTable,\n );\n }\n\n // @ts-expect-error Remove when `readableIndices` and `writableIndices` are removed.\n return memoizedAddressTableLookupDecoder;\n}\n\nexport function getAddressTableLookupCodec(): VariableSizeCodec {\n return combineCodec(getAddressTableLookupEncoder(), getAddressTableLookupDecoder());\n}\n", "import { FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\nimport { getStructCodec, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getU8Codec, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledMessageHeader } from '../compile/header';\n\ntype MessageHeader = ReturnType;\n\nlet memoizedU8Encoder: FixedSizeEncoder | undefined;\nfunction getMemoizedU8Encoder(): FixedSizeEncoder {\n if (!memoizedU8Encoder) memoizedU8Encoder = getU8Encoder();\n return memoizedU8Encoder;\n}\n\nlet memoizedU8Decoder: FixedSizeDecoder | undefined;\nfunction getMemoizedU8Decoder(): FixedSizeDecoder {\n if (!memoizedU8Decoder) memoizedU8Decoder = getU8Decoder();\n return memoizedU8Decoder;\n}\n\nlet memoizedU8Codec: FixedSizeCodec | undefined;\nfunction getMemoizedU8Codec(): FixedSizeCodec {\n if (!memoizedU8Codec) memoizedU8Codec = getU8Codec();\n return memoizedU8Codec;\n}\n\nexport function getMessageHeaderEncoder(): FixedSizeEncoder {\n return getStructEncoder([\n ['numSignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Encoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Encoder()],\n ]) as FixedSizeEncoder;\n}\n\nexport function getMessageHeaderDecoder(): FixedSizeDecoder {\n return getStructDecoder([\n ['numSignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlySignerAccounts', getMemoizedU8Decoder()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Decoder()],\n ]) as FixedSizeDecoder;\n}\n\nexport function getMessageHeaderCodec(): FixedSizeCodec {\n return getStructCodec([\n ['numSignerAccounts', getMemoizedU8Codec()],\n ['numReadonlySignerAccounts', getMemoizedU8Codec()],\n ['numReadonlyNonSignerAccounts', getMemoizedU8Codec()],\n ]) as FixedSizeCodec;\n}\n", "import {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder, getU8Decoder, getU8Encoder } from '@solana/codecs-numbers';\n\nimport { getCompiledInstructions } from '../compile/instructions';\n\ntype Instruction = ReturnType[number];\n\nlet memoizedGetInstructionEncoder: VariableSizeEncoder | undefined;\nexport function getInstructionEncoder(): VariableSizeEncoder {\n if (!memoizedGetInstructionEncoder) {\n memoizedGetInstructionEncoder = transformEncoder, Instruction>(\n getStructEncoder([\n ['programAddressIndex', getU8Encoder()],\n ['accountIndices', getArrayEncoder(getU8Encoder(), { size: getShortU16Encoder() })],\n ['data', addEncoderSizePrefix(getBytesEncoder(), getShortU16Encoder())],\n ]),\n // Convert an instruction to have all fields defined\n (instruction: Instruction): Required => {\n if (instruction.accountIndices !== undefined && instruction.data !== undefined) {\n return instruction as Required;\n }\n return {\n ...instruction,\n accountIndices: instruction.accountIndices ?? [],\n data: instruction.data ?? new Uint8Array(0),\n } as Required;\n },\n );\n }\n\n return memoizedGetInstructionEncoder;\n}\n\nlet memoizedGetInstructionDecoder: VariableSizeDecoder | undefined;\nexport function getInstructionDecoder(): VariableSizeDecoder {\n if (!memoizedGetInstructionDecoder) {\n memoizedGetInstructionDecoder = transformDecoder, Instruction>(\n getStructDecoder([\n ['programAddressIndex', getU8Decoder()],\n ['accountIndices', getArrayDecoder(getU8Decoder(), { size: getShortU16Decoder() })],\n [\n 'data',\n addDecoderSizePrefix(getBytesDecoder(), getShortU16Decoder()) as VariableSizeDecoder,\n ],\n ]),\n // Convert an instruction to exclude optional fields if they are empty\n (instruction: Required): Instruction => {\n if (instruction.accountIndices.length && instruction.data.byteLength) {\n return instruction;\n }\n const { accountIndices, data, ...rest } = instruction;\n return {\n ...rest,\n ...(accountIndices.length ? { accountIndices } : null),\n ...(data.byteLength ? { data } : null),\n };\n },\n );\n }\n return memoizedGetInstructionDecoder;\n}\n\nexport function getInstructionCodec(): VariableSizeCodec {\n return combineCodec(getInstructionEncoder(), getInstructionDecoder());\n}\n", "import {\n combineCodec,\n createDecoder,\n createEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\nimport { TransactionVersion } from '../transaction-message';\n\nconst VERSION_FLAG_MASK = 0x80;\n\n/**\n * Returns an encoder that you can use to encode a {@link TransactionVersion} to a byte array.\n *\n * Legacy messages will produce an empty array and will not advance the offset. Versioned messages\n * will produce an array with a single byte.\n */\nexport function getTransactionVersionEncoder(): VariableSizeEncoder {\n return createEncoder({\n getSizeFromValue: value => (value === 'legacy' ? 0 : 1),\n maxSize: 1,\n write: (value, bytes, offset) => {\n if (value === 'legacy') {\n return offset;\n }\n if (value < 0 || value > 127) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE, {\n actualVersion: value,\n });\n }\n bytes.set([value | VERSION_FLAG_MASK], offset);\n return offset + 1;\n },\n });\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing a\n * {@link TransactionVersion}.\n *\n * When the byte at the current offset is determined to represent a legacy transaction, this decoder\n * will return `'legacy'` and will not advance the offset.\n */\nexport function getTransactionVersionDecoder(): VariableSizeDecoder {\n return createDecoder({\n maxSize: 1,\n read: (bytes, offset) => {\n const firstByte = bytes[offset];\n if ((firstByte & VERSION_FLAG_MASK) === 0) {\n // No version flag set; it's a legacy (unversioned) transaction.\n return ['legacy', offset];\n } else {\n const version = (firstByte ^ VERSION_FLAG_MASK) as TransactionVersion;\n return [version, offset + 1];\n }\n },\n });\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link TransactionVersion}\n *\n * @see {@link getTransactionVersionDecoder}\n * @see {@link getTransactionVersionEncoder}\n */\nexport function getTransactionVersionCodec(): VariableSizeCodec {\n return combineCodec(getTransactionVersionEncoder(), getTransactionVersionDecoder());\n}\n", "import { getAddressDecoder, getAddressEncoder } from '@solana/addresses';\nimport {\n combineCodec,\n createEncoder,\n Decoder,\n fixDecoderSize,\n fixEncoderSize,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getArrayDecoder, getArrayEncoder, getStructDecoder, getStructEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getShortU16Encoder } from '@solana/codecs-numbers';\nimport { getBase58Decoder, getBase58Encoder } from '@solana/codecs-strings';\n\nimport { getCompiledAddressTableLookups } from '../compile/address-table-lookups';\nimport { CompiledTransactionMessage } from '../compile/message';\nimport { getAddressTableLookupDecoder, getAddressTableLookupEncoder } from './address-table-lookup';\nimport { getMessageHeaderDecoder, getMessageHeaderEncoder } from './header';\nimport { getInstructionDecoder, getInstructionEncoder } from './instruction';\nimport { getTransactionVersionDecoder, getTransactionVersionEncoder } from './transaction-version';\n\nfunction getCompiledMessageLegacyEncoder(): VariableSizeEncoder {\n return getStructEncoder(getPreludeStructEncoderTuple()) as VariableSizeEncoder;\n}\n\nfunction getCompiledMessageVersionedEncoder(): VariableSizeEncoder {\n return transformEncoder(\n getStructEncoder([\n ...getPreludeStructEncoderTuple(),\n ['addressTableLookups', getAddressTableLookupArrayEncoder()],\n ]) as VariableSizeEncoder,\n (value: CompiledTransactionMessage) => {\n if (value.version === 'legacy') {\n return value;\n }\n return {\n ...value,\n addressTableLookups: value.addressTableLookups ?? [],\n } as Exclude;\n },\n );\n}\n\nfunction getPreludeStructEncoderTuple() {\n return [\n ['version', getTransactionVersionEncoder()],\n ['header', getMessageHeaderEncoder()],\n ['staticAccounts', getArrayEncoder(getAddressEncoder(), { size: getShortU16Encoder() })],\n ['lifetimeToken', fixEncoderSize(getBase58Encoder(), 32)],\n ['instructions', getArrayEncoder(getInstructionEncoder(), { size: getShortU16Encoder() })],\n ] as const;\n}\n\nfunction getPreludeStructDecoderTuple() {\n return [\n ['version', getTransactionVersionDecoder() as Decoder],\n ['header', getMessageHeaderDecoder()],\n ['staticAccounts', getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() })],\n ['lifetimeToken', fixDecoderSize(getBase58Decoder(), 32)],\n ['instructions', getArrayDecoder(getInstructionDecoder(), { size: getShortU16Decoder() })],\n ['addressTableLookups', getAddressTableLookupArrayDecoder()],\n ] as const;\n}\n\nfunction getAddressTableLookupArrayEncoder() {\n return getArrayEncoder(getAddressTableLookupEncoder(), { size: getShortU16Encoder() });\n}\n\nfunction getAddressTableLookupArrayDecoder() {\n return getArrayDecoder(getAddressTableLookupDecoder(), { size: getShortU16Decoder() });\n}\n\n/**\n * Returns an encoder that you can use to encode a {@link CompiledTransactionMessage} to a byte\n * array.\n *\n * The wire format of a Solana transaction consists of signatures followed by a compiled transaction\n * message. The byte array produced by this encoder is the message part.\n */\nexport function getCompiledTransactionMessageEncoder(): VariableSizeEncoder {\n return createEncoder({\n getSizeFromValue: (compiledMessage: CompiledTransactionMessage) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().getSizeFromValue(compiledMessage);\n } else {\n return getCompiledMessageVersionedEncoder().getSizeFromValue(compiledMessage);\n }\n },\n write: (compiledMessage, bytes, offset) => {\n if (compiledMessage.version === 'legacy') {\n return getCompiledMessageLegacyEncoder().write(compiledMessage, bytes, offset);\n } else {\n return getCompiledMessageVersionedEncoder().write(compiledMessage, bytes, offset);\n }\n },\n });\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing a\n * {@link CompiledTransactionMessage}.\n *\n * The wire format of a Solana transaction consists of signatures followed by a compiled transaction\n * message. You can use this decoder to decode the message part.\n */\nexport function getCompiledTransactionMessageDecoder(): VariableSizeDecoder {\n return transformDecoder(\n getStructDecoder(getPreludeStructDecoderTuple()) as VariableSizeDecoder<\n CompiledTransactionMessage & { addressTableLookups?: ReturnType }\n >,\n ({ addressTableLookups, ...restOfMessage }) => {\n if (restOfMessage.version === 'legacy' || !addressTableLookups?.length) {\n return restOfMessage;\n }\n return { ...restOfMessage, addressTableLookups } as Exclude<\n CompiledTransactionMessage,\n { readonly version: 'legacy' }\n >;\n },\n );\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link CompiledTransactionMessage}\n *\n * @see {@link getCompiledTransactionMessageDecoder}\n * @see {@link getCompiledTransactionMessageEncoder}\n */\nexport function getCompiledTransactionMessageCodec(): VariableSizeCodec {\n return combineCodec(getCompiledTransactionMessageEncoder(), getCompiledTransactionMessageDecoder());\n}\n", "import { Address, getAddressComparator } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES,\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n SolanaError,\n} from '@solana/errors';\nimport {\n AccountLookupMeta,\n AccountMeta,\n AccountRole,\n Instruction,\n isSignerRole,\n isWritableRole,\n mergeRoles,\n ReadonlyAccount,\n ReadonlyAccountLookup,\n ReadonlySignerAccount,\n WritableAccount,\n WritableAccountLookup,\n WritableSignerAccount,\n} from '@solana/instructions';\nimport { Brand } from '@solana/nominal-types';\n\nexport const enum AddressMapEntryType {\n FEE_PAYER,\n LOOKUP_TABLE,\n STATIC,\n}\n\ntype AddressMap = {\n [address: string]: FeePayerAccountEntry | LookupTableAccountEntry | StaticAccountEntry;\n};\ntype FeePayerAccountEntry = Omit & {\n [TYPE]: AddressMapEntryType.FEE_PAYER;\n};\ntype LookupTableAccountEntry = Omit & {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE;\n};\nexport type OrderedAccounts = Brand<(AccountLookupMeta | AccountMeta)[], 'OrderedAccounts'>;\ntype StaticAccountEntry = Omit<\n ReadonlyAccount | ReadonlySignerAccount | WritableAccount | WritableSignerAccount,\n 'address'\n> & { [TYPE]: AddressMapEntryType.STATIC };\n\nfunction upsert(\n addressMap: AddressMap,\n address: Address,\n update: (\n entry: FeePayerAccountEntry | LookupTableAccountEntry | Record | StaticAccountEntry,\n ) => AddressMap[Address],\n) {\n addressMap[address] = update(addressMap[address] ?? { role: AccountRole.READONLY });\n}\n\nconst TYPE = Symbol('AddressMapTypeProperty');\nexport const ADDRESS_MAP_TYPE_PROPERTY: typeof TYPE = TYPE;\n\nexport function getAddressMapFromInstructions(feePayer: Address, instructions: readonly Instruction[]): AddressMap {\n const addressMap: AddressMap = {\n [feePayer]: { [TYPE]: AddressMapEntryType.FEE_PAYER, role: AccountRole.WRITABLE_SIGNER },\n };\n const addressesOfInvokedPrograms = new Set
();\n for (const instruction of instructions) {\n upsert(addressMap, instruction.programAddress, entry => {\n addressesOfInvokedPrograms.add(instruction.programAddress);\n if (TYPE in entry) {\n if (isWritableRole(entry.role)) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES, {\n programAddress: instruction.programAddress,\n });\n default:\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE, {\n programAddress: instruction.programAddress,\n });\n }\n }\n if (entry[TYPE] === AddressMapEntryType.STATIC) {\n return entry;\n }\n }\n return { [TYPE]: AddressMapEntryType.STATIC, role: AccountRole.READONLY };\n });\n let addressComparator: ReturnType;\n if (!instruction.accounts) {\n continue;\n }\n for (const account of instruction.accounts) {\n upsert(addressMap, account.address, entry => {\n const {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n address: _,\n ...accountMeta\n } = account;\n if (TYPE in entry) {\n switch (entry[TYPE]) {\n case AddressMapEntryType.FEE_PAYER:\n // The fee payer already has the highest rank -- it is by definition\n // writable-signer. Return it, no matter how `account` is configured\n return entry;\n case AddressMapEntryType.LOOKUP_TABLE: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if ('lookupTableAddress' in accountMeta) {\n const shouldReplaceEntry =\n // Consider using the new LOOKUP_TABLE if its address is different...\n entry.lookupTableAddress !== accountMeta.lookupTableAddress &&\n // ...and sorts before the existing one.\n (addressComparator ||= getAddressComparator())(\n accountMeta.lookupTableAddress,\n entry.lookupTableAddress,\n ) < 0;\n if (shouldReplaceEntry) {\n return {\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n ...accountMeta,\n role: nextRole,\n } as LookupTableAccountEntry;\n }\n } else if (isSignerRole(accountMeta.role)) {\n // Upgrade this LOOKUP_TABLE entry to a static entry if it must sign.\n return {\n [TYPE]: AddressMapEntryType.STATIC,\n role: nextRole,\n } as StaticAccountEntry;\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n return entry;\n }\n }\n case AddressMapEntryType.STATIC: {\n const nextRole = mergeRoles(entry.role, accountMeta.role);\n if (\n // Check to see if this address represents a program that is invoked\n // in this transaction.\n addressesOfInvokedPrograms.has(account.address)\n ) {\n if (isWritableRole(accountMeta.role)) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE,\n {\n programAddress: account.address,\n },\n );\n }\n if (entry.role !== nextRole) {\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n } else if (\n 'lookupTableAddress' in accountMeta &&\n // Static accounts can be 'upgraded' to lookup table accounts as\n // long as they are not require to sign the transaction.\n !isSignerRole(entry.role)\n ) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n role: nextRole,\n } as LookupTableAccountEntry;\n } else {\n if (entry.role !== nextRole) {\n // The account's role ranks higher than the current entry's.\n return {\n ...entry,\n role: nextRole,\n } as StaticAccountEntry;\n } else {\n return entry;\n }\n }\n }\n }\n }\n if ('lookupTableAddress' in accountMeta) {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.LOOKUP_TABLE,\n };\n } else {\n return {\n ...accountMeta,\n [TYPE]: AddressMapEntryType.STATIC,\n };\n }\n });\n }\n }\n return addressMap;\n}\n\nexport function getOrderedAccountsFromAddressMap(addressMap: AddressMap): OrderedAccounts {\n let addressComparator: ReturnType;\n const orderedAccounts: (AccountLookupMeta | AccountMeta)[] = Object.entries(addressMap)\n .sort(([leftAddress, leftEntry], [rightAddress, rightEntry]) => {\n // STEP 1: Rapid precedence check. Fee payer, then static addresses, then lookups.\n if (leftEntry[TYPE] !== rightEntry[TYPE]) {\n if (leftEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.FEE_PAYER) {\n return 1;\n } else if (leftEntry[TYPE] === AddressMapEntryType.STATIC) {\n return -1;\n } else if (rightEntry[TYPE] === AddressMapEntryType.STATIC) {\n return 1;\n }\n }\n // STEP 2: Sort by signer-writability.\n const leftIsSigner = isSignerRole(leftEntry.role);\n if (leftIsSigner !== isSignerRole(rightEntry.role)) {\n return leftIsSigner ? -1 : 1;\n }\n const leftIsWritable = isWritableRole(leftEntry.role);\n if (leftIsWritable !== isWritableRole(rightEntry.role)) {\n return leftIsWritable ? -1 : 1;\n }\n // STEP 3: Sort by address.\n addressComparator ||= getAddressComparator();\n if (\n leftEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n rightEntry[TYPE] === AddressMapEntryType.LOOKUP_TABLE &&\n leftEntry.lookupTableAddress !== rightEntry.lookupTableAddress\n ) {\n return addressComparator(leftEntry.lookupTableAddress, rightEntry.lookupTableAddress);\n } else {\n return addressComparator(leftAddress, rightAddress);\n }\n })\n .map(([address, addressMeta]) => ({\n address: address as Address,\n ...addressMeta,\n }));\n return orderedAccounts as unknown as OrderedAccounts;\n}\n", "import { Address, getAddressComparator } from '@solana/addresses';\nimport { AccountRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype AddressTableLookup = Readonly<{\n /** The address of the address lookup table account. */\n lookupTableAddress: Address;\n /** @deprecated Use `readonlyIndexes` */\n readableIndices: readonly number[];\n /** Indexes of accounts in a lookup table to load as read-only. */\n readonlyIndexes: readonly number[];\n /** Indexes of accounts in a lookup table to load as writable. */\n writableIndexes: readonly number[];\n /** @deprecated Use `writableIndexes` */\n writableIndices: readonly number[];\n}>;\n\nexport function getCompiledAddressTableLookups(orderedAccounts: OrderedAccounts): AddressTableLookup[] {\n const index: Record<\n Address,\n Readonly<{\n [K in keyof Omit]: number[];\n }>\n > = {};\n for (const account of orderedAccounts) {\n if (!('lookupTableAddress' in account)) {\n continue;\n }\n const entry = (index[account.lookupTableAddress] ||= {\n /** @deprecated Remove in a future major version */\n readableIndices: [],\n readonlyIndexes: [],\n writableIndexes: [],\n /** @deprecated Remove in a future major version */\n writableIndices: [],\n });\n if (account.role === AccountRole.WRITABLE) {\n entry.writableIndexes.push(account.addressIndex);\n /** @deprecated Remove in a future major version */\n entry.writableIndices.push(account.addressIndex);\n } else {\n /** @deprecated Remove in a future major version */\n entry.readableIndices.push(account.addressIndex);\n entry.readonlyIndexes.push(account.addressIndex);\n }\n }\n return Object.keys(index)\n .sort(getAddressComparator())\n .map(lookupTableAddress => ({\n lookupTableAddress: lookupTableAddress as Address,\n ...index[lookupTableAddress as unknown as Address],\n }));\n}\n", "import { isSignerRole, isWritableRole } from '@solana/instructions';\n\nimport { OrderedAccounts } from '../compile/accounts';\n\ntype MessageHeader = Readonly<{\n /**\n * The number of accounts in the static accounts list that are neither writable nor\n * signers.\n *\n * Adding this number to `numSignerAccounts` yields the index of the first read-only non-signer\n * account in the static accounts list.\n */\n numReadonlyNonSignerAccounts: number;\n /**\n * The number of read-only accounts in the static accounts list that must sign this\n * transaction.\n *\n * Subtracting this number from `numSignerAccounts` yields the index of the first read-only\n * signer account in the static accounts list.\n */\n numReadonlySignerAccounts: number;\n /**\n * The number of accounts in the static accounts list that must sign this transaction.\n *\n * Subtracting `numReadonlySignerAccounts` from this number yields the number of\n * writable signer accounts in the static accounts list. Writable signer accounts always\n * begin at index zero in the static accounts list.\n *\n * This number itself is the index of the first non-signer account in the static\n * accounts list.\n */\n numSignerAccounts: number;\n}>;\n\nexport function getCompiledMessageHeader(orderedAccounts: OrderedAccounts): MessageHeader {\n let numReadonlyNonSignerAccounts = 0;\n let numReadonlySignerAccounts = 0;\n let numSignerAccounts = 0;\n for (const account of orderedAccounts) {\n if ('lookupTableAddress' in account) {\n break;\n }\n const accountIsWritable = isWritableRole(account.role);\n if (isSignerRole(account.role)) {\n numSignerAccounts++;\n if (!accountIsWritable) {\n numReadonlySignerAccounts++;\n }\n } else if (!accountIsWritable) {\n numReadonlyNonSignerAccounts++;\n }\n }\n return {\n numReadonlyNonSignerAccounts,\n numReadonlySignerAccounts,\n numSignerAccounts,\n };\n}\n", "import { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { Instruction } from '@solana/instructions';\n\nimport { OrderedAccounts } from './accounts';\n\ntype CompiledInstruction = Readonly<{\n /**\n * An ordered list of indices that indicate which accounts in the transaction message's\n * accounts list are loaded by this instruction.\n */\n accountIndices?: number[];\n /** The input to the invoked program */\n data?: ReadonlyUint8Array;\n /**\n * The index of the address in the transaction message's accounts list associated with the\n * program to invoke.\n */\n programAddressIndex: number;\n}>;\n\nfunction getAccountIndex(orderedAccounts: OrderedAccounts) {\n const out: Record = {};\n for (const [index, account] of orderedAccounts.entries()) {\n out[account.address] = index;\n }\n return out;\n}\n\nexport function getCompiledInstructions(\n instructions: readonly Instruction[],\n orderedAccounts: OrderedAccounts,\n): CompiledInstruction[] {\n const accountIndex = getAccountIndex(orderedAccounts);\n return instructions.map(({ accounts, data, programAddress }) => {\n return {\n programAddressIndex: accountIndex[programAddress],\n ...(accounts ? { accountIndices: accounts.map(({ address }) => accountIndex[address]) } : null),\n ...(data ? { data } : null),\n };\n });\n}\n", "import { TransactionMessageWithBlockhashLifetime, TransactionMessageWithDurableNonceLifetime } from '../index';\n\nexport function getCompiledLifetimeToken(\n lifetimeConstraint: (\n | TransactionMessageWithBlockhashLifetime\n | TransactionMessageWithDurableNonceLifetime\n )['lifetimeConstraint'],\n): string {\n if ('nonce' in lifetimeConstraint) {\n return lifetimeConstraint.nonce;\n }\n return lifetimeConstraint.blockhash;\n}\n", "import { Address } from '@solana/addresses';\n\nimport { OrderedAccounts } from './accounts';\n\nexport function getCompiledStaticAccounts(orderedAccounts: OrderedAccounts): Address[] {\n const firstLookupTableAccountIndex = orderedAccounts.findIndex(account => 'lookupTableAddress' in account);\n const orderedStaticAccounts =\n firstLookupTableAccountIndex === -1 ? orderedAccounts : orderedAccounts.slice(0, firstLookupTableAccountIndex);\n return orderedStaticAccounts.map(({ address }) => address);\n}\n", "import { CompilableTransactionMessage } from '../compilable-transaction-message';\nimport { getAddressMapFromInstructions, getOrderedAccountsFromAddressMap } from './accounts';\nimport { getCompiledAddressTableLookups } from './address-table-lookups';\nimport { getCompiledMessageHeader } from './header';\nimport { getCompiledInstructions } from './instructions';\nimport { getCompiledLifetimeToken } from './lifetime-token';\nimport { getCompiledStaticAccounts } from './static-accounts';\n\ntype BaseCompiledTransactionMessage = Readonly<{\n /**\n * Information about the version of the transaction message and the role of the accounts it\n * loads.\n */\n header: ReturnType;\n instructions: ReturnType;\n /**\n * 32 bytes of data observed by the transaction proposed that makes a transaction eligible to\n * land on the network.\n *\n * In the case of a transaction message with a nonce lifetime constraint, this will be the value\n * of the nonce itself. In all other cases this will be a recent blockhash.\n */\n lifetimeToken: ReturnType;\n /** A list of addresses indicating which accounts to load */\n staticAccounts: ReturnType;\n}>;\n\n/**\n * A transaction message in a form suitable for encoding for execution on the network.\n *\n * You can not fully reconstruct a source message from a compiled message without extra information.\n * In particular, supporting details about the lifetime constraint and the concrete addresses of\n * accounts sourced from account lookup tables are lost to compilation.\n */\nexport type CompiledTransactionMessage = LegacyCompiledTransactionMessage | VersionedCompiledTransactionMessage;\n\ntype LegacyCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n version: 'legacy';\n }>;\n\ntype VersionedCompiledTransactionMessage = BaseCompiledTransactionMessage &\n Readonly<{\n /** A list of address tables and the accounts that this transaction loads from them */\n addressTableLookups?: ReturnType;\n version: number;\n }>;\n\n/**\n * Converts the type of transaction message data structure that you create in your application to\n * the type of transaction message data structure that can be encoded for execution on the network.\n *\n * This is a lossy process; you can not fully reconstruct a source message from a compiled message\n * without extra information. In particular, supporting details about the lifetime constraint and\n * the concrete addresses of accounts sourced from account lookup tables will be lost to\n * compilation.\n *\n * @see {@link decompileTransactionMessage}\n */\nexport function compileTransactionMessage(\n transactionMessage: CompilableTransactionMessage & Readonly<{ version: 'legacy' }>,\n): LegacyCompiledTransactionMessage;\nexport function compileTransactionMessage(\n transactionMessage: CompilableTransactionMessage,\n): VersionedCompiledTransactionMessage;\nexport function compileTransactionMessage(\n transactionMessage: CompilableTransactionMessage,\n): CompiledTransactionMessage {\n const addressMap = getAddressMapFromInstructions(\n transactionMessage.feePayer.address,\n transactionMessage.instructions,\n );\n const orderedAccounts = getOrderedAccountsFromAddressMap(addressMap);\n return {\n ...(transactionMessage.version !== 'legacy'\n ? { addressTableLookups: getCompiledAddressTableLookups(orderedAccounts) }\n : null),\n header: getCompiledMessageHeader(orderedAccounts),\n instructions: getCompiledInstructions(transactionMessage.instructions, orderedAccounts),\n lifetimeToken: getCompiledLifetimeToken(transactionMessage.lifetimeConstraint),\n staticAccounts: getCompiledStaticAccounts(orderedAccounts),\n version: transactionMessage.version,\n };\n}\n", "import { Address } from '@solana/addresses';\nimport { AccountLookupMeta, AccountMeta, AccountRole, Instruction, isSignerRole } from '@solana/instructions';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { BaseTransactionMessage, TransactionMessage } from './transaction-message';\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n// Look up the address in lookup tables, return a lookup meta if it is found in any of them\nfunction findAddressInLookupTables(\n address: Address,\n role: AccountRole.READONLY | AccountRole.WRITABLE,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): AccountLookupMeta | undefined {\n for (const [lookupTableAddress, addresses] of Object.entries(addressesByLookupTableAddress)) {\n for (let i = 0; i < addresses.length; i++) {\n if (address === addresses[i]) {\n return {\n address,\n addressIndex: i,\n lookupTableAddress: lookupTableAddress as Address,\n role,\n };\n }\n }\n }\n}\n\ntype TransactionMessageNotLegacy = Exclude;\n\n// Each account can be AccountLookupMeta | AccountMeta\ntype WidenInstructionAccounts =\n TInstruction extends Instruction\n ? Instruction<\n TProgramAddress,\n {\n [K in keyof TAccounts]: TAccounts[K] extends AccountMeta\n ? AccountLookupMeta | AccountMeta\n : TAccounts[K];\n }\n >\n : TInstruction;\n\ntype ExtractAdditionalProps = Omit;\n\ntype WidenTransactionMessageInstructions =\n TTransactionMessage extends BaseTransactionMessage\n ? BaseTransactionMessage> &\n ExtractAdditionalProps<\n TTransactionMessage,\n BaseTransactionMessage>\n >\n : TTransactionMessage;\n\n/**\n * Given a transaction message and a mapping of lookup tables to the addresses stored in them, this\n * function will return a new transaction message with the same instructions but with all non-signer\n * accounts that are found in the given lookup tables represented by an {@link AccountLookupMeta}\n * instead of an {@link AccountMeta}.\n *\n * This means that these accounts will take up less space in the compiled transaction message. This\n * size reduction is most significant when the transaction includes many accounts from the same\n * lookup table.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { compressTransactionMessageUsingAddressLookupTables } from '@solana/transaction-messages';\n *\n * const lookupTableAddress = address('4QwSwNriKPrz8DLW4ju5uxC2TN5cksJx6tPUPj7DGLAW');\n * const accountAddress = address('5n2ADjHPsqB4EVUNEX48xRqtnmuLu5XSHDwkJRR98qpM');\n * const lookupTableAddresses: AddressesByLookupTableAddress = {\n * [lookupTableAddress]: [accountAddress],\n * };\n *\n * const compressedTransactionMessage = compressTransactionMessageUsingAddressLookupTables(\n * transactionMessage,\n * lookupTableAddresses,\n * );\n * ```\n *\n */\nexport function compressTransactionMessageUsingAddressLookupTables<\n TTransactionMessage extends TransactionMessageNotLegacy = TransactionMessageNotLegacy,\n>(\n transactionMessage: TTransactionMessage,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): TTransactionMessage | WidenTransactionMessageInstructions {\n const lookupTableAddresses = new Set(Object.values(addressesByLookupTableAddress).flatMap(a => a));\n\n const newInstructions: Instruction[] = [];\n let updatedAnyInstructions = false;\n for (const instruction of transactionMessage.instructions) {\n if (!instruction.accounts) {\n newInstructions.push(instruction);\n continue;\n }\n\n const newAccounts: Mutable> = [];\n let updatedAnyAccounts = false;\n for (const account of instruction.accounts) {\n // If the address is already a lookup, is not in any lookup tables, or is a signer role, return as-is\n if (\n 'lookupTableAddress' in account ||\n !lookupTableAddresses.has(account.address) ||\n isSignerRole(account.role)\n ) {\n newAccounts.push(account);\n continue;\n }\n\n // We already checked it's in one of the lookup tables\n const lookupMetaAccount = findAddressInLookupTables(\n account.address,\n account.role,\n addressesByLookupTableAddress,\n )!;\n newAccounts.push(Object.freeze(lookupMetaAccount));\n updatedAnyAccounts = true;\n updatedAnyInstructions = true;\n }\n\n newInstructions.push(\n Object.freeze(updatedAnyAccounts ? { ...instruction, accounts: newAccounts } : instruction),\n );\n }\n\n return Object.freeze(\n updatedAnyInstructions ? { ...transactionMessage, instructions: newInstructions } : transactionMessage,\n );\n}\n", "import { TransactionMessage, TransactionVersion } from './transaction-message';\nimport { TransactionMessageWithinSizeLimit } from './transaction-message-size';\n\ntype TransactionConfig = Readonly<{\n version: TVersion;\n}>;\n\ntype EmptyTransactionMessage = Omit<\n Extract,\n 'instructions'\n> &\n TransactionMessageWithinSizeLimit & { instructions: readonly [] };\n\n/**\n * Given a {@link TransactionVersion} this method will return an empty transaction having the\n * capabilities of that version.\n *\n * @example\n * ```ts\n * import { createTransactionMessage } from '@solana/transaction-messages';\n *\n * const message = createTransactionMessage({ version: 0 });\n * ```\n */\nexport function createTransactionMessage(\n config: TransactionConfig,\n): EmptyTransactionMessage {\n return Object.freeze({\n instructions: Object.freeze([]),\n version: config.version,\n }) as EmptyTransactionMessage;\n}\n", "import { Address } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport {\n AccountRole,\n Instruction,\n InstructionWithAccounts,\n InstructionWithData,\n isSignerRole,\n ReadonlyAccount,\n ReadonlySignerAccount,\n WritableAccount,\n WritableSignerAccount,\n} from '@solana/instructions';\nimport { Brand } from '@solana/nominal-types';\n\nexport type AdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n> = Instruction<'11111111111111111111111111111111'> &\n InstructionWithAccounts<\n readonly [\n WritableAccount,\n ReadonlyAccount<'SysvarRecentB1ockHashes11111111111111111111'>,\n ReadonlySignerAccount | WritableSignerAccount,\n ]\n > &\n InstructionWithData;\n\ntype AdvanceNonceAccountInstructionData = Brand;\n\nconst RECENT_BLOCKHASHES_SYSVAR_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nconst SYSTEM_PROGRAM_ADDRESS = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n\n/**\n * Creates an instruction for the System program to advance a nonce.\n *\n * This instruction is a prerequisite for a transaction with a nonce-based lifetime to be landed on\n * the network. In order to be considered valid, the transaction must meet all of these criteria.\n *\n * 1. Its lifetime constraint must be a {@link NonceLifetimeConstraint}.\n * 2. The value contained in the on-chain account at the address `nonceAccountAddress` must be equal\n * to {@link NonceLifetimeConstraint.nonce} at the time the transaction is landed.\n * 3. The first instruction in that transaction message must be the one returned by this function.\n *\n * You could also use the `getAdvanceNonceAccountInstruction` method of `@solana-program/system`.\n */\nexport function createAdvanceNonceAccountInstruction<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n>(\n nonceAccountAddress: Address,\n nonceAuthorityAddress: Address,\n): AdvanceNonceAccountInstruction {\n return {\n accounts: [\n { address: nonceAccountAddress, role: AccountRole.WRITABLE },\n {\n address: RECENT_BLOCKHASHES_SYSVAR_ADDRESS,\n role: AccountRole.READONLY,\n },\n { address: nonceAuthorityAddress, role: AccountRole.READONLY_SIGNER },\n ],\n data: new Uint8Array([4, 0, 0, 0]) as AdvanceNonceAccountInstructionData,\n programAddress: SYSTEM_PROGRAM_ADDRESS,\n };\n}\n\n/**\n * A type guard that returns `true` if the instruction conforms to the\n * {@link AdvanceNonceAccountInstruction} type, and refines its type for use in your program.\n *\n * @example\n * ```ts\n * import { isAdvanceNonceAccountInstruction } from '@solana/transaction-messages';\n *\n * if (isAdvanceNonceAccountInstruction(message.instructions[0])) {\n * // At this point, the first instruction in the message has been refined to a\n * // `AdvanceNonceAccountInstruction`.\n * setNonceAccountAddress(message.instructions[0].accounts[0].address);\n * } else {\n * setError('The first instruction is not an `AdvanceNonce` instruction');\n * }\n * ```\n */\nexport function isAdvanceNonceAccountInstruction(\n instruction: Instruction,\n): instruction is AdvanceNonceAccountInstruction {\n return (\n instruction.programAddress === SYSTEM_PROGRAM_ADDRESS &&\n // Test for `AdvanceNonceAccount` instruction data\n instruction.data != null &&\n isAdvanceNonceAccountInstructionData(instruction.data) &&\n // Test for exactly 3 accounts\n instruction.accounts?.length === 3 &&\n // First account is nonce account address\n instruction.accounts[0].address != null &&\n instruction.accounts[0].role === AccountRole.WRITABLE &&\n // Second account is recent blockhashes sysvar\n instruction.accounts[1].address === RECENT_BLOCKHASHES_SYSVAR_ADDRESS &&\n instruction.accounts[1].role === AccountRole.READONLY &&\n // Third account is nonce authority account\n instruction.accounts[2].address != null &&\n isSignerRole(instruction.accounts[2].role)\n );\n}\n\nfunction isAdvanceNonceAccountInstructionData(data: ReadonlyUint8Array): data is AdvanceNonceAccountInstructionData {\n // AdvanceNonceAccount is the fifth instruction in the System Program (index 4)\n return data.byteLength === 4 && data[0] === 4 && data[1] === 0 && data[2] === 0 && data[3] === 0;\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME, SolanaError } from '@solana/errors';\nimport { Instruction } from '@solana/instructions';\nimport { Brand } from '@solana/nominal-types';\n\nimport {\n AdvanceNonceAccountInstruction,\n createAdvanceNonceAccountInstruction,\n isAdvanceNonceAccountInstruction,\n} from './durable-nonce-instruction';\nimport { ExcludeTransactionMessageLifetime } from './lifetime';\nimport { BaseTransactionMessage } from './transaction-message';\nimport { ExcludeTransactionMessageWithinSizeLimit } from './transaction-message-size';\n\ntype DurableNonceConfig<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> = Readonly<{\n readonly nonce: Nonce;\n readonly nonceAccountAddress: Address;\n readonly nonceAuthorityAddress: Address;\n}>;\n\n/** Represents a string that is particularly known to be the base58-encoded value of a nonce. */\nexport type Nonce = Brand;\n\n/**\n * A constraint which, when applied to a transaction message, makes that transaction message\n * eligible to land on the network.\n *\n * The transaction message will continue to be eligible to land until the network considers the\n * `nonce` to have advanced. This can happen when the nonce account in which this nonce is found is\n * destroyed, or the nonce value within changes.\n */\ntype NonceLifetimeConstraint = Readonly<{\n /**\n * A value contained in the related nonce account at the time the transaction was prepared.\n *\n * The transaction will be considered eligible to land until the nonce account ceases to exist\n * or contain this value.\n */\n nonce: Nonce;\n}>;\n\n/**\n * Represents a transaction message whose lifetime is defined by the value of a nonce it includes.\n *\n * Such a transaction can only be landed on the network if the nonce is known to the network and has\n * not already been used to land a different transaction.\n */\nexport interface TransactionMessageWithDurableNonceLifetime<\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> {\n readonly instructions: readonly [\n // The first instruction *must* be the system program's `AdvanceNonceAccount` instruction.\n AdvanceNonceAccountInstruction,\n ...Instruction[],\n ];\n readonly lifetimeConstraint: NonceLifetimeConstraint;\n}\n\n/**\n * A helper type to exclude the durable nonce lifetime constraint from a transaction message.\n */\nexport type ExcludeTransactionMessageDurableNonceLifetime =\n TTransactionMessage extends TransactionMessageWithDurableNonceLifetime\n ? ExcludeTransactionMessageLifetime\n : TTransactionMessage;\n\n/**\n * A type guard that returns `true` if the transaction message conforms to the\n * {@link TransactionMessageWithDurableNonceLifetime} type, and refines its type for use in your\n * program.\n *\n * @example\n * ```ts\n * import { isTransactionMessageWithDurableNonceLifetime } from '@solana/transaction-messages';\n * import { fetchNonce } from \"@solana-program/system\";\n *\n * if (isTransactionMessageWithDurableNonceLifetime(message)) {\n * // At this point, `message` has been refined to a\n * // `TransactionMessageWithDurableNonceLifetime`.\n * const { nonce, nonceAccountAddress } = message.lifetimeConstraint;\n * const { data: { blockhash: actualNonce } } = await fetchNonce(nonceAccountAddress);\n * setNonceIsValid(nonce === actualNonce);\n * } else {\n * setError(\n * `${getSignatureFromTransaction(transaction)} does not have a nonce-based lifetime`,\n * );\n * }\n * ```\n */\nexport function isTransactionMessageWithDurableNonceLifetime(\n transactionMessage: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): transactionMessage is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n return (\n 'lifetimeConstraint' in transactionMessage &&\n typeof transactionMessage.lifetimeConstraint.nonce === 'string' &&\n transactionMessage.instructions[0] != null &&\n isAdvanceNonceAccountInstruction(transactionMessage.instructions[0])\n );\n}\n\n/**\n * From time to time you might acquire a transaction message, that you expect to have a\n * nonce-based lifetime, from an untrusted network API or user input. Use this function to assert\n * that such a transaction message actually has a nonce-based lifetime.\n *\n * @example\n * ```ts\n * import { assertIsDurableNonceTransactionMessage } from '@solana/transaction-messages';\n *\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `message` to `TransactionMessageWithDurableNonceLifetime`.\n * assertIsDurableNonceTransactionMessage(message);\n * // At this point, `message` is a `TransactionMessageWithDurableNonceLifetime` that can be used\n * // with the RPC.\n * const { nonce, nonceAccountAddress } = message.lifetimeConstraint;\n * const { data: { blockhash: actualNonce } } = await fetchNonce(nonceAccountAddress);\n * } catch (e) {\n * // `message` turned out not to have a nonce-based lifetime\n * }\n * ```\n */\nexport function assertIsTransactionMessageWithDurableNonceLifetime(\n transactionMessage: BaseTransactionMessage | (BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime),\n): asserts transactionMessage is BaseTransactionMessage & TransactionMessageWithDurableNonceLifetime {\n if (!isTransactionMessageWithDurableNonceLifetime(transactionMessage)) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME);\n }\n}\n\nfunction isAdvanceNonceAccountInstructionForNonce<\n TNonceAccountAddress extends Address = Address,\n TNonceAuthorityAddress extends Address = Address,\n>(\n instruction: AdvanceNonceAccountInstruction,\n nonceAccountAddress: TNonceAccountAddress,\n nonceAuthorityAddress: TNonceAuthorityAddress,\n): instruction is AdvanceNonceAccountInstruction {\n return (\n instruction.accounts[0].address === nonceAccountAddress &&\n instruction.accounts[2].address === nonceAuthorityAddress\n );\n}\n\n/**\n * Given a nonce, the account where the value of the nonce is stored, and the address of the account\n * authorized to consume that nonce, this method will return a new transaction having the same type\n * as the one supplied plus the {@link TransactionMessageWithDurableNonceLifetime} type.\n *\n * In particular, this method _prepends_ an instruction to the transaction message designed to\n * consume (or 'advance') the nonce in the same transaction whose lifetime is defined by it.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { setTransactionMessageLifetimeUsingDurableNonce } from '@solana/transactions';\n *\n * const NONCE_VALUE_OFFSET =\n * 4 + // version(u32)\n * 4 + // state(u32)\n * 32; // nonce authority(pubkey)\n * // Then comes the nonce value.\n *\n * const nonceAccountAddress = address('EGtMh4yvXswwHhwVhyPxGrVV2TkLTgUqGodbATEPvojZ');\n * const nonceAuthorityAddress = address('4KD1Rdrd89NG7XbzW3xsX9Aqnx2EExJvExiNme6g9iAT');\n * const { value: nonceAccount } = await rpc\n * .getAccountInfo(nonceAccountAddress, {\n * dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n * encoding: 'base58',\n * })\n * .send();\n * const nonce =\n * // This works because we asked for the exact slice of data representing the nonce\n * // value, and furthermore asked for it in `base58` encoding.\n * nonceAccount!.data[0] as unknown as Nonce;\n *\n * const durableNonceTransactionMessage = setTransactionMessageLifetimeUsingDurableNonce(\n * { nonce, nonceAccountAddress, nonceAuthorityAddress },\n * tx,\n * );\n * ```\n */\nexport function setTransactionMessageLifetimeUsingDurableNonce<\n TTransactionMessage extends BaseTransactionMessage,\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n>(\n {\n nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n }: DurableNonceConfig,\n transactionMessage: TTransactionMessage,\n): SetTransactionMessageWithDurableNonceLifetime<\n TTransactionMessage,\n TNonceAccountAddress,\n TNonceAuthorityAddress,\n TNonceValue\n> {\n type ReturnType = SetTransactionMessageWithDurableNonceLifetime<\n TTransactionMessage,\n TNonceAccountAddress,\n TNonceAuthorityAddress,\n TNonceValue\n >;\n\n let newInstructions: [\n AdvanceNonceAccountInstruction,\n ...Instruction[],\n ];\n\n const firstInstruction = transactionMessage.instructions[0];\n if (firstInstruction && isAdvanceNonceAccountInstruction(firstInstruction)) {\n if (isAdvanceNonceAccountInstructionForNonce(firstInstruction, nonceAccountAddress, nonceAuthorityAddress)) {\n if (\n isTransactionMessageWithDurableNonceLifetime(transactionMessage) &&\n transactionMessage.lifetimeConstraint.nonce === nonce\n ) {\n return transactionMessage as unknown as ReturnType;\n } else {\n // we already have the right first instruction, leave it as-is\n newInstructions = [firstInstruction, ...transactionMessage.instructions.slice(1)];\n }\n } else {\n // we have a different advance nonce instruction as the first instruction, replace it\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transactionMessage.instructions.slice(1),\n ];\n }\n } else {\n // we don't have an existing advance nonce instruction as the first instruction, prepend one\n newInstructions = [\n Object.freeze(createAdvanceNonceAccountInstruction(nonceAccountAddress, nonceAuthorityAddress)),\n ...transactionMessage.instructions,\n ];\n }\n\n return Object.freeze({\n ...transactionMessage,\n instructions: Object.freeze(newInstructions),\n lifetimeConstraint: Object.freeze({ nonce }),\n }) as unknown as ReturnType;\n}\n\n/**\n * Helper type that transforms a given transaction message type into a new one that has the\n * `AdvanceNonceAccount` instruction as the first instruction and a lifetime constraint\n * representing the nonce value.\n */\ntype SetTransactionMessageWithDurableNonceLifetime<\n TTransactionMessage extends BaseTransactionMessage,\n TNonceAccountAddress extends string = string,\n TNonceAuthorityAddress extends string = string,\n TNonceValue extends string = string,\n> = Omit<\n // 1. The transaction message only grows in size if it currently has a different (or no) lifetime.\n TTransactionMessage extends TransactionMessageWithDurableNonceLifetime\n ? TTransactionMessage\n : ExcludeTransactionMessageWithinSizeLimit,\n // 2. Remove the instructions array as we are going to replace it with a new one.\n 'instructions'\n> & {\n // 3. Replace or prepend the first instruction with the advance nonce account instruction.\n readonly instructions: TTransactionMessage['instructions'] extends readonly [\n AdvanceNonceAccountInstruction,\n ...infer TTail extends readonly Instruction[],\n ]\n ? readonly [AdvanceNonceAccountInstruction, ...TTail]\n : readonly [\n AdvanceNonceAccountInstruction,\n ...TTransactionMessage['instructions'],\n ];\n // 4. Set the lifetime constraint to the nonce value.\n readonly lifetimeConstraint: NonceLifetimeConstraint;\n};\n", "import { Address } from '@solana/addresses';\n\nimport { BaseTransactionMessage } from './transaction-message';\n\n/**\n * Represents a transaction message for which a fee payer has been declared. A transaction must\n * conform to this type to be compiled and landed on the network.\n */\nexport interface TransactionMessageWithFeePayer {\n readonly feePayer: Readonly<{ address: Address }>;\n}\n\n/**\n * A helper type to exclude the fee payer from a transaction message.\n */\ntype ExcludeTransactionMessageFeePayer = Omit<\n TTransactionMessage,\n 'feePayer'\n>;\n\n/**\n * Given a base58-encoded address of a system account, this method will return a new transaction\n * message having the same type as the one supplied plus the {@link TransactionMessageWithFeePayer}\n * type.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { setTransactionMessageFeePayer } from '@solana/transaction-messages';\n *\n * const myAddress = address('mpngsFd4tmbUfzDYJayjKZwZcaR7aWb2793J6grLsGu');\n * const txPaidByMe = setTransactionMessageFeePayer(myAddress, tx);\n * ```\n */\nexport function setTransactionMessageFeePayer<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage & Partial,\n>(\n feePayer: Address,\n transactionMessage: TTransactionMessage,\n): ExcludeTransactionMessageFeePayer & TransactionMessageWithFeePayer {\n if (\n 'feePayer' in transactionMessage &&\n feePayer === transactionMessage.feePayer?.address &&\n isAddressOnlyFeePayer(transactionMessage.feePayer)\n ) {\n return transactionMessage as unknown as Omit &\n TransactionMessageWithFeePayer;\n }\n const out = {\n ...transactionMessage,\n feePayer: Object.freeze({ address: feePayer }),\n };\n Object.freeze(out);\n return out;\n}\n\nfunction isAddressOnlyFeePayer(\n feePayer: Partial['feePayer'],\n): feePayer is { address: Address } {\n return (\n !!feePayer &&\n 'address' in feePayer &&\n typeof feePayer.address === 'string' &&\n Object.keys(feePayer).length === 1\n );\n}\n", "import { Instruction } from '@solana/instructions';\n\nimport { ExcludeTransactionMessageDurableNonceLifetime } from './durable-nonce';\nimport { BaseTransactionMessage } from './transaction-message';\nimport { ExcludeTransactionMessageWithinSizeLimit } from './transaction-message-size';\n\n/**\n * A helper type to append instructions to a transaction message\n * without losing type information about the current instructions.\n */\ntype AppendTransactionMessageInstructions<\n TTransactionMessage extends BaseTransactionMessage,\n TInstructions extends readonly Instruction[],\n> = Omit, 'instructions'> & {\n readonly instructions: readonly [...TTransactionMessage['instructions'], ...TInstructions];\n};\n\n/**\n * A helper type to prepend instructions to a transaction message\n * without losing type information about the current instructions.\n */\ntype PrependTransactionMessageInstructions<\n TTransactionMessage extends BaseTransactionMessage,\n TInstructions extends readonly Instruction[],\n> = Omit<\n ExcludeTransactionMessageWithinSizeLimit>,\n 'instructions'\n> & {\n readonly instructions: readonly [...TInstructions, ...TTransactionMessage['instructions']];\n};\n\n/**\n * Given an instruction, this method will return a new transaction message with that instruction\n * having been added to the end of the list of existing instructions.\n *\n * @see {@link appendTransactionInstructions} if you need to append multiple instructions to a\n * transaction message.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { appendTransactionMessageInstruction } from '@solana/transaction-messages';\n *\n * const memoTransaction = appendTransactionMessageInstruction(\n * {\n * data: new TextEncoder().encode('Hello world!'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * tx,\n * );\n * ```\n */\nexport function appendTransactionMessageInstruction<\n TTransactionMessage extends BaseTransactionMessage,\n TInstruction extends Instruction,\n>(\n instruction: TInstruction,\n transactionMessage: TTransactionMessage,\n): AppendTransactionMessageInstructions {\n return appendTransactionMessageInstructions([instruction], transactionMessage);\n}\n\n/**\n * Given an array of instructions, this method will return a new transaction message with those\n * instructions having been added to the end of the list of existing instructions.\n *\n * @see {@link appendTransactionInstruction} if you only need to append one instruction to a\n * transaction message.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { appendTransactionMessageInstructions } from '@solana/transaction-messages';\n *\n * const memoTransaction = appendTransactionMessageInstructions(\n * [\n * {\n * data: new TextEncoder().encode('Hello world!'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * {\n * data: new TextEncoder().encode('How are you?'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * ],\n * tx,\n * );\n * ```\n */\nexport function appendTransactionMessageInstructions<\n TTransactionMessage extends BaseTransactionMessage,\n const TInstructions extends readonly Instruction[],\n>(\n instructions: TInstructions,\n transactionMessage: TTransactionMessage,\n): AppendTransactionMessageInstructions {\n return Object.freeze({\n ...transactionMessage,\n instructions: Object.freeze([\n ...(transactionMessage.instructions as TTransactionMessage['instructions']),\n ...instructions,\n ] as readonly [...TTransactionMessage['instructions'], ...TInstructions]),\n });\n}\n\n/**\n * Given an instruction, this method will return a new transaction message with that instruction\n * having been added to the beginning of the list of existing instructions.\n *\n * @see {@link prependTransactionInstructions} if you need to prepend multiple instructions to a\n * transaction message.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { prependTransactionMessageInstruction } from '@solana/transaction-messages';\n *\n * const memoTransaction = prependTransactionMessageInstruction(\n * {\n * data: new TextEncoder().encode('Hello world!'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * tx,\n * );\n * ```\n */\nexport function prependTransactionMessageInstruction<\n TTransactionMessage extends BaseTransactionMessage,\n TInstruction extends Instruction,\n>(\n instruction: TInstruction,\n transactionMessage: TTransactionMessage,\n): PrependTransactionMessageInstructions {\n return prependTransactionMessageInstructions([instruction], transactionMessage);\n}\n\n/**\n * Given an array of instructions, this method will return a new transaction message with those\n * instructions having been added to the beginning of the list of existing instructions.\n *\n * @see {@link prependTransactionInstruction} if you only need to prepend one instruction to a\n * transaction message.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { prependTransactionMessageInstructions } from '@solana/transaction-messages';\n *\n * const memoTransaction = prependTransactionMessageInstructions(\n * [\n * {\n * data: new TextEncoder().encode('Hello world!'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * {\n * data: new TextEncoder().encode('How are you?'),\n * programAddress: address('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'),\n * },\n * ],\n * tx,\n * );\n * ```\n */\nexport function prependTransactionMessageInstructions<\n TTransactionMessage extends BaseTransactionMessage,\n const TInstructions extends readonly Instruction[],\n>(\n instructions: TInstructions,\n transactionMessage: TTransactionMessage,\n): PrependTransactionMessageInstructions {\n return Object.freeze({\n ...(transactionMessage as ExcludeTransactionMessageDurableNonceLifetime),\n instructions: Object.freeze([\n ...instructions,\n ...(transactionMessage.instructions as TTransactionMessage['instructions']),\n ] as readonly [...TInstructions, ...TTransactionMessage['instructions']]),\n });\n}\n", "import { Address, assertIsAddress } from '@solana/addresses';\nimport {\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND,\n SolanaError,\n} from '@solana/errors';\nimport { pipe } from '@solana/functional';\nimport { AccountLookupMeta, AccountMeta, AccountRole, Instruction } from '@solana/instructions';\nimport type { Blockhash } from '@solana/rpc-types';\n\nimport { AddressesByLookupTableAddress } from './addresses-by-lookup-table-address';\nimport { setTransactionMessageLifetimeUsingBlockhash } from './blockhash';\nimport { CompilableTransactionMessage } from './compilable-transaction-message';\nimport { CompiledTransactionMessage } from './compile';\nimport type { getCompiledAddressTableLookups } from './compile/address-table-lookups';\nimport { createTransactionMessage } from './create-transaction-message';\nimport { Nonce, setTransactionMessageLifetimeUsingDurableNonce } from './durable-nonce';\nimport { isAdvanceNonceAccountInstruction } from './durable-nonce-instruction';\nimport { setTransactionMessageFeePayer, TransactionMessageWithFeePayer } from './fee-payer';\nimport { appendTransactionMessageInstruction } from './instructions';\nimport { BaseTransactionMessage, TransactionVersion } from './transaction-message';\n\nfunction getAccountMetas(message: CompiledTransactionMessage): AccountMeta[] {\n const { header } = message;\n const numWritableSignerAccounts = header.numSignerAccounts - header.numReadonlySignerAccounts;\n const numWritableNonSignerAccounts =\n message.staticAccounts.length - header.numSignerAccounts - header.numReadonlyNonSignerAccounts;\n\n const accountMetas: AccountMeta[] = [];\n\n let accountIndex = 0;\n for (let i = 0; i < numWritableSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlySignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY_SIGNER,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < numWritableNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.WRITABLE,\n });\n accountIndex++;\n }\n\n for (let i = 0; i < header.numReadonlyNonSignerAccounts; i++) {\n accountMetas.push({\n address: message.staticAccounts[accountIndex],\n role: AccountRole.READONLY,\n });\n accountIndex++;\n }\n\n return accountMetas;\n}\n\nfunction getAddressLookupMetas(\n compiledAddressTableLookups: ReturnType,\n addressesByLookupTableAddress: AddressesByLookupTableAddress,\n): AccountLookupMeta[] {\n // check that all message lookups are known\n const compiledAddressTableLookupAddresses = compiledAddressTableLookups.map(l => l.lookupTableAddress);\n const missing = compiledAddressTableLookupAddresses.filter(a => addressesByLookupTableAddress[a] === undefined);\n if (missing.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING, {\n lookupTableAddresses: missing,\n });\n }\n\n const readOnlyMetas: AccountLookupMeta[] = [];\n const writableMetas: AccountLookupMeta[] = [];\n\n // we know that for each lookup, knownLookups[lookup.lookupTableAddress] is defined\n for (const lookup of compiledAddressTableLookups) {\n const addresses = addressesByLookupTableAddress[lookup.lookupTableAddress];\n const readonlyIndexes =\n lookup.readonlyIndexes ??\n /** @deprecated Remove in a future major version */\n lookup.readableIndices;\n const writableIndexes =\n lookup.writableIndexes ??\n /** @deprecated Remove in a future major version */\n lookup.writableIndices;\n\n const highestIndex = Math.max(...readonlyIndexes, ...writableIndexes);\n if (highestIndex >= addresses.length) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE,\n {\n highestKnownIndex: addresses.length - 1,\n highestRequestedIndex: highestIndex,\n lookupTableAddress: lookup.lookupTableAddress,\n },\n );\n }\n\n const readOnlyForLookup: AccountLookupMeta[] = readonlyIndexes.map(r => ({\n address: addresses[r],\n addressIndex: r,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.READONLY,\n }));\n readOnlyMetas.push(...readOnlyForLookup);\n\n const writableForLookup: AccountLookupMeta[] = writableIndexes.map(w => ({\n address: addresses[w],\n addressIndex: w,\n lookupTableAddress: lookup.lookupTableAddress,\n role: AccountRole.WRITABLE,\n }));\n writableMetas.push(...writableForLookup);\n }\n\n return [...writableMetas, ...readOnlyMetas];\n}\n\nfunction convertInstruction(\n instruction: CompiledTransactionMessage['instructions'][0],\n accountMetas: AccountMeta[],\n): Instruction {\n const programAddress = accountMetas[instruction.programAddressIndex]?.address;\n if (!programAddress) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND, {\n index: instruction.programAddressIndex,\n });\n }\n\n const accounts = instruction.accountIndices?.map(accountIndex => accountMetas[accountIndex]);\n const { data } = instruction;\n\n return Object.freeze({\n programAddress,\n ...(accounts && accounts.length ? { accounts: Object.freeze(accounts) } : {}),\n ...(data && data.length ? { data } : {}),\n });\n}\n\ntype LifetimeConstraint =\n | {\n blockhash: Blockhash;\n lastValidBlockHeight: bigint;\n }\n | {\n nonce: Nonce;\n nonceAccountAddress: Address;\n nonceAuthorityAddress: Address;\n };\n\nfunction getLifetimeConstraint(\n messageLifetimeToken: string,\n firstInstruction?: Instruction,\n lastValidBlockHeight?: bigint,\n): LifetimeConstraint {\n if (!firstInstruction || !isAdvanceNonceAccountInstruction(firstInstruction)) {\n // first instruction is not advance durable nonce, so use blockhash lifetime constraint\n return {\n blockhash: messageLifetimeToken as Blockhash,\n lastValidBlockHeight: lastValidBlockHeight ?? 2n ** 64n - 1n, // U64 MAX\n };\n } else {\n // We know these accounts are defined because we checked `isAdvanceNonceAccountInstruction`\n const nonceAccountAddress = firstInstruction.accounts[0].address;\n assertIsAddress(nonceAccountAddress);\n\n const nonceAuthorityAddress = firstInstruction.accounts[2].address;\n assertIsAddress(nonceAuthorityAddress);\n\n return {\n nonce: messageLifetimeToken as Nonce,\n nonceAccountAddress,\n nonceAuthorityAddress,\n };\n }\n}\n\nexport type DecompileTransactionMessageConfig = {\n /**\n * If the compiled message loads addresses from one or more address lookup tables, you will have\n * to supply a map of those tables to an array of the addresses they contained at the time that\n * the transaction message was constructed.\n *\n * @see {@link decompileTransactionMessageFetchingLookupTables} if you do not already have this.\n */\n addressesByLookupTableAddress?: AddressesByLookupTableAddress;\n /**\n * If the compiled message has a blockhash-based lifetime constraint, you will have to supply\n * the block height after which that blockhash is no longer valid for use as a lifetime\n * constraint.\n */\n lastValidBlockHeight?: bigint;\n};\n\n/**\n * Converts the type of transaction message data structure appropriate for execution on the network\n * to the type of transaction message data structure designed for use in your application.\n *\n * Because compilation is a lossy process, you can not fully reconstruct a source message from a\n * compiled message without extra information. In order to faithfully reconstruct the original\n * source message you will need to supply supporting details about the lifetime constraint and the\n * concrete addresses of any accounts sourced from account lookup tables.\n *\n * @see {@link compileTransactionMessage}\n */\nexport function decompileTransactionMessage(\n compiledTransactionMessage: CompiledTransactionMessage,\n config?: DecompileTransactionMessageConfig,\n): CompilableTransactionMessage {\n const feePayer = compiledTransactionMessage.staticAccounts[0];\n if (!feePayer) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING);\n }\n\n const accountMetas = getAccountMetas(compiledTransactionMessage);\n const accountLookupMetas =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? getAddressLookupMetas(\n compiledTransactionMessage.addressTableLookups,\n config?.addressesByLookupTableAddress ?? {},\n )\n : [];\n const transactionMetas = [...accountMetas, ...accountLookupMetas];\n\n const instructions: Instruction[] = compiledTransactionMessage.instructions.map(compiledInstruction =>\n convertInstruction(compiledInstruction, transactionMetas),\n );\n\n const firstInstruction = instructions[0];\n const lifetimeConstraint = getLifetimeConstraint(\n compiledTransactionMessage.lifetimeToken,\n firstInstruction,\n config?.lastValidBlockHeight,\n );\n\n return pipe(\n createTransactionMessage({ version: compiledTransactionMessage.version as TransactionVersion }),\n m => setTransactionMessageFeePayer(feePayer, m),\n m =>\n instructions.reduce(\n (acc, instruction) => appendTransactionMessageInstruction(instruction, acc),\n m as BaseTransactionMessage & TransactionMessageWithFeePayer,\n ),\n m =>\n 'blockhash' in lifetimeConstraint\n ? setTransactionMessageLifetimeUsingBlockhash(lifetimeConstraint, m)\n : setTransactionMessageLifetimeUsingDurableNonce(lifetimeConstraint, m),\n );\n}\n", "import type { Address } from '@solana/addresses';\n\nimport {\n assertIsTransactionMessageWithDurableNonceLifetime,\n isTransactionMessageWithDurableNonceLifetime,\n} from './durable-nonce';\n\n/**\n * Represents a transaction message for which a fee payer has been declared. A transaction must\n * conform to this type to be compiled and landed on the network.\n *\n * @deprecated Use {@link TransactionMessageWithFeePayer} instead. It was only renamed.\n */\nexport interface ITransactionMessageWithFeePayer {\n readonly feePayer: Readonly<{ address: Address }>;\n}\n\n/**\n * From time to time you might acquire a transaction message, that you expect to have a\n * nonce-based lifetime, from an untrusted network API or user input. Use this function to assert\n * that such a transaction message actually has a nonce-based lifetime.\n *\n * @deprecated Use {@link assertIsTransactionMessageWithDurableNonceLifetime} instead. It was only renamed.\n *\n * @example\n * ```ts\n * import { assertIsDurableNonceTransactionMessage } from '@solana/transaction-messages';\n *\n * try {\n * // If this type assertion function doesn't throw, then\n * // Typescript will upcast `message` to `TransactionMessageWithDurableNonceLifetime`.\n * assertIsDurableNonceTransactionMessage(message);\n * // At this point, `message` is a `TransactionMessageWithDurableNonceLifetime` that can be used\n * // with the RPC.\n * const { nonce, nonceAccountAddress } = message.lifetimeConstraint;\n * const { data: { blockhash: actualNonce } } = await fetchNonce(nonceAccountAddress);\n * } catch (e) {\n * // `message` turned out not to have a nonce-based lifetime\n * }\n * ```\n */\nexport const assertIsDurableNonceTransactionMessage = assertIsTransactionMessageWithDurableNonceLifetime;\n\n/**\n * A type guard that returns `true` if the transaction message conforms to the\n * {@link TransactionMessageWithDurableNonceLifetime} type, and refines its type for use in your\n * program.\n *\n * @deprecated Use {@link isTransactionMessageWithDurableNonceLifetime} instead. It was only renamed.\n *\n * @example\n * ```ts\n * import { isDurableNonceTransaction } from '@solana/transaction-messages';\n * import { fetchNonce } from \"@solana-program/system\";\n *\n * if (isDurableNonceTransaction(message)) {\n * // At this point, `message` has been refined to a\n * // `TransactionMessageWithDurableNonceLifetime`.\n * const { nonce, nonceAccountAddress } = message.lifetimeConstraint;\n * const { data: { blockhash: actualNonce } } = await fetchNonce(nonceAccountAddress);\n * setNonceIsValid(nonce === actualNonce);\n * } else {\n * setError(\n * `${getSignatureFromTransaction(transaction)} does not have a nonce-based lifetime`,\n * );\n * }\n * ```\n */\nexport const isDurableNonceTransaction = isTransactionMessageWithDurableNonceLifetime;\n", "import { fixEncoderSize, transformEncoder, VariableSizeEncoder } from '@solana/codecs-core';\nimport { getArrayEncoder, getBytesEncoder } from '@solana/codecs-data-structures';\nimport { getShortU16Encoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\n\nimport { SignaturesMap } from '../transaction';\n\nfunction getSignaturesToEncode(signaturesMap: SignaturesMap): SignatureBytes[] {\n const signatures = Object.values(signaturesMap);\n if (signatures.length === 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES);\n }\n\n return signatures.map(signature => {\n if (!signature) {\n return new Uint8Array(64).fill(0) as SignatureBytes;\n }\n return signature;\n });\n}\n\nexport function getSignaturesEncoder(): VariableSizeEncoder {\n return transformEncoder(\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 64), { size: getShortU16Encoder() }),\n getSignaturesToEncode,\n );\n}\n", "import { getAddressDecoder } from '@solana/addresses';\nimport {\n combineCodec,\n fixDecoderSize,\n padRightDecoder,\n ReadonlyUint8Array,\n transformDecoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n getArrayDecoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n} from '@solana/codecs-data-structures';\nimport { getShortU16Decoder, getU8Decoder } from '@solana/codecs-numbers';\nimport { SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getTransactionVersionDecoder } from '@solana/transaction-messages';\n\nimport { SignaturesMap, Transaction, TransactionMessageBytes } from '../transaction';\nimport { getSignaturesEncoder } from './signatures-encoder';\n\n/**\n * Returns an encoder that you can use to encode a {@link Transaction} to a byte array in a wire\n * format appropriate for sending to the Solana network for execution.\n */\nexport function getTransactionEncoder(): VariableSizeEncoder {\n return getStructEncoder([\n ['signatures', getSignaturesEncoder()],\n ['messageBytes', getBytesEncoder()],\n ]);\n}\n\n/**\n * Returns a decoder that you can use to convert a byte array in the Solana transaction wire format\n * to a {@link Transaction} object.\n *\n * @example\n * ```ts\n * import { getTransactionDecoder } from '@solana/transactions';\n *\n * const transactionDecoder = getTransactionDecoder();\n * const transaction = transactionDecoder.decode(wireTransactionBytes);\n * for (const [address, signature] in Object.entries(transaction.signatures)) {\n * console.log(`Signature by ${address}`, signature);\n * }\n * ```\n */\n\nexport function getTransactionDecoder(): VariableSizeDecoder {\n return transformDecoder(\n getStructDecoder([\n ['signatures', getArrayDecoder(fixDecoderSize(getBytesDecoder(), 64), { size: getShortU16Decoder() })],\n ['messageBytes', getBytesDecoder()],\n ]),\n decodePartiallyDecodedTransaction,\n );\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to a {@link Transaction}\n *\n * @see {@link getTransactionDecoder}\n * @see {@link getTransactionEncoder}\n */\nexport function getTransactionCodec(): VariableSizeCodec {\n return combineCodec(getTransactionEncoder(), getTransactionDecoder());\n}\n\ntype PartiallyDecodedTransaction = {\n messageBytes: ReadonlyUint8Array;\n signatures: ReadonlyUint8Array[];\n};\n\nfunction decodePartiallyDecodedTransaction(transaction: PartiallyDecodedTransaction): Transaction {\n const { messageBytes, signatures } = transaction;\n\n /*\n Relevant message structure is at the start:\n - transaction version (0 bytes for legacy transactions, 1 byte for versioned transactions)\n - `numRequiredSignatures` (1 byte, we verify this matches the length of signatures)\n - `numReadOnlySignedAccounts` (1 byte, not used here)\n - `numReadOnlyUnsignedAccounts` (1 byte, not used here)\n - static addresses, with signers first. This is an array of addresses, prefixed with a short-u16 length\n */\n\n const signerAddressesDecoder = getTupleDecoder([\n // read transaction version\n getTransactionVersionDecoder(),\n // read first byte of header, `numSignerAccounts`\n // padRight to skip the next 2 bytes, `numReadOnlySignedAccounts` and `numReadOnlyUnsignedAccounts` which we don't need\n padRightDecoder(getU8Decoder(), 2),\n // read static addresses\n getArrayDecoder(getAddressDecoder(), { size: getShortU16Decoder() }),\n ]);\n const [_txVersion, numRequiredSignatures, staticAddresses] = signerAddressesDecoder.decode(messageBytes);\n\n const signerAddresses = staticAddresses.slice(0, numRequiredSignatures);\n\n // signer addresses and signatures must be the same length\n // we encode an all-zero signature when the signature is missing\n if (signerAddresses.length !== signatures.length) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH, {\n numRequiredSignatures,\n signaturesLength: signatures.length,\n signerAddresses,\n });\n }\n\n // combine the signer addresses + signatures into the signatures map\n const signaturesMap: SignaturesMap = {};\n signerAddresses.forEach((address, index) => {\n const signatureForAddress = signatures[index];\n if (signatureForAddress.every(b => b === 0)) {\n signaturesMap[address] = null;\n } else {\n signaturesMap[address] = signatureForAddress as SignatureBytes;\n }\n });\n\n return {\n messageBytes: messageBytes as TransactionMessageBytes,\n signatures: Object.freeze(signaturesMap),\n };\n}\n", "import {\n CompilableTransactionMessage,\n compileTransactionMessage,\n getCompiledTransactionMessageEncoder,\n isTransactionMessageWithBlockhashLifetime,\n} from '@solana/transaction-messages';\n\nimport type { TransactionWithLifetime } from './lifetime';\nimport type {\n SignaturesMap,\n TransactionFromCompilableTransactionMessage,\n TransactionMessageBytes,\n} from './transaction';\n\n/**\n * Returns a {@link Transaction} object for a given {@link TransactionMessage}.\n *\n * This includes the compiled bytes of the transaction message, and a map of signatures. This map\n * will have a key for each address that is required to sign the transaction. The transaction will\n * not yet have signatures for any of these addresses.\n *\n * Whether a transaction message is ready to be compiled or not is enforced for you at the type\n * level. In order to be signable, a transaction message must:\n *\n * - have a version and a list of zero or more instructions (ie. conform to\n * {@link BaseTransactionMessage})\n * - have a fee payer set (ie. conform to {@link TransactionMessageWithFeePayer})\n * - have a lifetime specified (ie. conform to {@link TransactionMessageWithBlockhashLifetime} or\n * {@link TransactionMessageWithDurableNonceLifetime})\n */\nexport function compileTransaction(\n transactionMessage: TTransactionMessage,\n): Readonly> {\n type ReturnType = Readonly>;\n\n const compiledMessage = compileTransactionMessage(transactionMessage);\n const messageBytes = getCompiledTransactionMessageEncoder().encode(compiledMessage) as TransactionMessageBytes;\n\n const transactionSigners = compiledMessage.staticAccounts.slice(0, compiledMessage.header.numSignerAccounts);\n const signatures: SignaturesMap = {};\n for (const signerAddress of transactionSigners) {\n signatures[signerAddress] = null;\n }\n\n let lifetimeConstraint: TransactionWithLifetime['lifetimeConstraint'];\n if (isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n lifetimeConstraint = {\n blockhash: transactionMessage.lifetimeConstraint.blockhash,\n lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight,\n };\n } else {\n lifetimeConstraint = {\n nonce: transactionMessage.lifetimeConstraint.nonce,\n nonceAccountAddress: transactionMessage.instructions[0].accounts[0].address,\n };\n }\n\n return Object.freeze({\n lifetimeConstraint,\n messageBytes: messageBytes,\n signatures: Object.freeze(signatures),\n }) as ReturnType;\n}\n", "import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { Decoder } from '@solana/codecs-core';\nimport { getBase58Decoder } from '@solana/codecs-strings';\nimport {\n SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION,\n SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING,\n SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { Signature, SignatureBytes, signBytes } from '@solana/keys';\nimport { NominalType } from '@solana/nominal-types';\n\nimport { Transaction } from './transaction';\n\n/**\n * Represents a transaction that is signed by all of its required signers. Being fully signed is a\n * prerequisite of functions designed to land transactions on the network.\n */\nexport type FullySignedTransaction = NominalType<'transactionSignedness', 'fullySigned'> & Transaction;\n\nlet base58Decoder: Decoder | undefined;\n\n/**\n * Given a transaction signed by its fee payer, this method will return the {@link Signature} that\n * uniquely identifies it. This string can be used to look up transactions at a later date, for\n * example on a Solana block explorer.\n *\n * @example\n * ```ts\n * import { getSignatureFromTransaction } from '@solana/transactions';\n *\n * const signature = getSignatureFromTransaction(tx);\n * console.debug(`Inspect this transaction at https://explorer.solana.com/tx/${signature}`);\n * ```\n */\nexport function getSignatureFromTransaction(transaction: Transaction): Signature {\n if (!base58Decoder) base58Decoder = getBase58Decoder();\n\n // We have ordered signatures from the compiled message accounts\n // first signature is the fee payer\n const signatureBytes = Object.values(transaction.signatures)[0];\n if (!signatureBytes) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING);\n }\n const transactionSignature = base58Decoder.decode(signatureBytes);\n return transactionSignature as Signature;\n}\n\nfunction uint8ArraysEqual(arr1: Uint8Array, arr2: Uint8Array) {\n return arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);\n}\n\n/**\n * Given an array of `CryptoKey` objects which are private keys pertaining to addresses that are\n * required to sign a transaction, this method will return a new signed transaction of type\n * {@link Transaction}.\n *\n * Though the resulting transaction might have every signature it needs to land on the network, this\n * function will not assert that it does. A partially signed transaction cannot be landed on the\n * network, but can be serialized and deserialized.\n *\n * @example\n * ```ts\n * import { generateKeyPair } from '@solana/keys';\n * import { partiallySignTransaction } from '@solana/transactions';\n *\n * const partiallySignedTransaction = await partiallySignTransaction([myPrivateKey], tx);\n * ```\n *\n * @see {@link signTransaction} if you want to assert that the transaction has all of its required\n * signatures after signing.\n */\nexport async function partiallySignTransaction(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise {\n let newSignatures: Record | undefined;\n let unexpectedSigners: Set
| undefined;\n\n await Promise.all(\n keyPairs.map(async keyPair => {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const existingSignature = transaction.signatures[address];\n\n // Check if the address is expected to sign the transaction\n if (existingSignature === undefined) {\n // address is not an expected signer for this transaction\n unexpectedSigners ||= new Set();\n unexpectedSigners.add(address);\n return;\n }\n\n // Return if there are any unexpected signers already since we won't be using signatures\n if (unexpectedSigners) {\n return;\n }\n\n const newSignature = await signBytes(keyPair.privateKey, transaction.messageBytes);\n\n if (existingSignature !== null && uint8ArraysEqual(newSignature, existingSignature)) {\n // already have the same signature set\n return;\n }\n\n newSignatures ||= {};\n newSignatures[address] = newSignature;\n }),\n );\n\n if (unexpectedSigners && unexpectedSigners.size > 0) {\n const expectedSigners = Object.keys(transaction.signatures);\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION, {\n expectedAddresses: expectedSigners,\n unexpectedAddresses: [...unexpectedSigners],\n });\n }\n\n if (!newSignatures) {\n return transaction;\n }\n\n return Object.freeze({\n ...transaction,\n signatures: Object.freeze({\n ...transaction.signatures,\n ...newSignatures,\n }),\n });\n}\n\n/**\n * Given an array of `CryptoKey` objects which are private keys pertaining to addresses that are\n * required to sign a transaction, this method will return a new signed transaction of type\n * {@link FullySignedTransaction}.\n *\n * This function will throw unless the resulting transaction is fully signed.\n *\n * @example\n * ```ts\n * import { generateKeyPair } from '@solana/keys';\n * import { signTransaction } from '@solana/transactions';\n *\n * const signedTransaction = await signTransaction([myPrivateKey], tx);\n * ```\n *\n * @see {@link partiallySignTransaction} if you want to sign the transaction without asserting that\n * the resulting transaction is fully signed.\n */\nexport async function signTransaction(\n keyPairs: CryptoKeyPair[],\n transaction: T,\n): Promise {\n const out = await partiallySignTransaction(keyPairs, transaction);\n assertIsFullySignedTransaction(out);\n Object.freeze(out);\n return out;\n}\n\n/**\n * Checks whether a given {@link Transaction} is fully signed.\n *\n * @example\n * ```ts\n * import { isFullySignedTransaction } from '@solana/transactions';\n *\n * const transaction = getTransactionDecoder().decode(transactionBytes);\n * if (isFullySignedTransaction(transaction)) {\n * // At this point we know that the transaction is signed and can be sent to the network.\n * }\n * ```\n */\nexport function isFullySignedTransaction(\n transaction: TTransaction,\n): transaction is FullySignedTransaction & TTransaction {\n return Object.entries(transaction.signatures).every(([_, signatureBytes]) => !!signatureBytes);\n}\n\n/**\n * From time to time you might acquire a {@link Transaction}, that you expect to be fully signed,\n * from an untrusted network API or user input. Use this function to assert that such a transaction\n * is fully signed.\n *\n * @example\n * ```ts\n * import { assertIsFullySignedTransaction } from '@solana/transactions';\n *\n * const transaction = getTransactionDecoder().decode(transactionBytes);\n * try {\n * // If this type assertion function doesn't throw, then Typescript will upcast `transaction`\n * // to `FullySignedTransaction`.\n * assertIsFullySignedTransaction(transaction);\n * // At this point we know that the transaction is signed and can be sent to the network.\n * await sendAndConfirmTransaction(transaction, { commitment: 'confirmed' });\n * } catch(e) {\n * if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING)) {\n * setError(`Missing signatures for ${e.context.addresses.join(', ')}`);\n * }\n * throw;\n * }\n * ```\n */\nexport function assertIsFullySignedTransaction(\n transaction: TTransaction,\n): asserts transaction is FullySignedTransaction & TTransaction {\n const missingSigs: Address[] = [];\n Object.entries(transaction.signatures).forEach(([address, signatureBytes]) => {\n if (!signatureBytes) {\n missingSigs.push(address as Address);\n }\n });\n\n if (missingSigs.length > 0) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING, {\n addresses: missingSigs,\n });\n }\n}\n", "import { getBase64Decoder } from '@solana/codecs-strings';\nimport { Brand, EncodedString } from '@solana/nominal-types';\n\nimport { getTransactionEncoder } from './codecs';\nimport { Transaction } from './transaction';\n\n/** Represents the wire format of a transaction as a base64-encoded string. */\nexport type Base64EncodedWireTransaction = Brand, 'Base64EncodedWireTransaction'>;\n\n/**\n * Given a signed transaction, this method returns the transaction as a string that conforms to the\n * {@link Base64EncodedWireTransaction} type.\n *\n * @example\n * ```ts\n * import { getBase64EncodedWireTransaction, signTransaction } from '@solana/transactions';\n *\n * const serializedTransaction = getBase64EncodedWireTransaction(signedTransaction);\n * const signature = await rpc.sendTransaction(serializedTransaction, { encoding: 'base64' }).send();\n * ```\n */\nexport function getBase64EncodedWireTransaction(transaction: Transaction): Base64EncodedWireTransaction {\n const wireTransactionBytes = getTransactionEncoder().encode(transaction);\n return getBase64Decoder().decode(wireTransactionBytes) as Base64EncodedWireTransaction;\n}\n", "import { SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, SolanaError } from '@solana/errors';\nimport type { NominalType } from '@solana/nominal-types';\nimport type { BaseTransactionMessage, TransactionMessageWithinSizeLimit } from '@solana/transaction-messages';\n\nimport { getTransactionEncoder } from './codecs';\nimport { Transaction } from './transaction';\n\n/**\n * The maximum size of a transaction packet in bytes.\n */\nexport const TRANSACTION_PACKET_SIZE = 1280;\n\n/**\n * The size of the transaction packet header in bytes.\n * This includes the IPv6 header and the fragment header.\n */\nexport const TRANSACTION_PACKET_HEADER =\n 40 /* 40 bytes is the size of the IPv6 header. */ + 8; /* 8 bytes is the size of the fragment header. */\n\n/**\n * The maximum size of a transaction in bytes.\n *\n * Note that this excludes the transaction packet header.\n * In other words, this is how much content we can fit in a transaction packet.\n */\nexport const TRANSACTION_SIZE_LIMIT = TRANSACTION_PACKET_SIZE - TRANSACTION_PACKET_HEADER;\n\n/**\n * Gets the size of a given transaction in bytes.\n *\n * @example\n * ```ts\n * const transactionSize = getTransactionSize(transaction);\n * ```\n */\nexport function getTransactionSize(transaction: Transaction): number {\n return getTransactionEncoder().getSizeFromValue(transaction);\n}\n\n/**\n * A type guard that checks if a transaction is within the size limit.\n */\nexport type TransactionWithinSizeLimit = NominalType<'transactionSize', 'withinLimit'>;\n\n/**\n * Helper type that adds the `TransactionWithinSizeLimit` flag to\n * a transaction if and only if the provided transaction message\n * is also within the size limit.\n */\nexport type SetTransactionWithinSizeLimitFromTransactionMessage<\n TTransaction extends Transaction,\n TTransactionMessage extends BaseTransactionMessage,\n> = TTransactionMessage extends TransactionMessageWithinSizeLimit\n ? TransactionWithinSizeLimit & TTransaction\n : TTransaction;\n\n/**\n * Checks if a transaction is within the size limit.\n *\n * @typeParam TTransaction - The type of the given transaction.\n *\n * @example\n * ```ts\n * if (isTransactionWithinSizeLimit(transaction)) {\n * transaction satisfies TransactionWithinSizeLimit;\n * }\n * ```\n */\nexport function isTransactionWithinSizeLimit(\n transaction: TTransaction,\n): transaction is TransactionWithinSizeLimit & TTransaction {\n return getTransactionSize(transaction) <= TRANSACTION_SIZE_LIMIT;\n}\n\n/**\n * Asserts that a given transaction is within the size limit.\n *\n * Throws a {@link SolanaError} of code {@link SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT}\n * if the transaction exceeds the size limit.\n *\n * @typeParam TTransaction - The type of the given transaction.\n *\n * @example\n * ```ts\n * assertIsTransactionWithinSizeLimit(transaction);\n * transaction satisfies TransactionWithinSizeLimit;\n * ```\n */\nexport function assertIsTransactionWithinSizeLimit(\n transaction: TTransaction,\n): asserts transaction is TransactionWithinSizeLimit & TTransaction {\n const transactionSize = getTransactionSize(transaction);\n if (transactionSize > TRANSACTION_SIZE_LIMIT) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, {\n transactionSize,\n transactionSizeLimit: TRANSACTION_SIZE_LIMIT,\n });\n }\n}\n", "import { SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, SolanaError } from '@solana/errors';\nimport type { CompilableTransactionMessage, TransactionMessageWithinSizeLimit } from '@solana/transaction-messages';\n\nimport { compileTransaction } from './compile-transaction';\nimport { getTransactionSize, TRANSACTION_SIZE_LIMIT } from './transaction-size';\n\n/**\n * Gets the compiled transaction size of a given transaction message in bytes.\n *\n * @example\n * ```ts\n * const transactionSize = getTransactionMessageSize(transactionMessage);\n * ```\n */\nexport function getTransactionMessageSize(transactionMessage: CompilableTransactionMessage): number {\n return getTransactionSize(compileTransaction(transactionMessage));\n}\n\n/**\n * Checks if a transaction message is within the size limit\n * when compiled into a transaction.\n *\n * @typeParam TTransactionMessage - The type of the given transaction message.\n *\n * @example\n * ```ts\n * if (isTransactionMessageWithinSizeLimit(transactionMessage)) {\n * transactionMessage satisfies TransactionMessageWithinSizeLimit;\n * }\n * ```\n */\nexport function isTransactionMessageWithinSizeLimit(\n transactionMessage: TTransactionMessage,\n): transactionMessage is TransactionMessageWithinSizeLimit & TTransactionMessage {\n return getTransactionMessageSize(transactionMessage) <= TRANSACTION_SIZE_LIMIT;\n}\n\n/**\n * Asserts that a given transaction message is within the size limit\n * when compiled into a transaction.\n *\n * Throws a {@link SolanaError} of code {@link SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT}\n * if the transaction message exceeds the size limit.\n *\n * @typeParam TTransactionMessage - The type of the given transaction message.\n *\n * @example\n * ```ts\n * assertIsTransactionMessageWithinSizeLimit(transactionMessage);\n * transactionMessage satisfies TransactionMessageWithinSizeLimit;\n * ```\n */\nexport function assertIsTransactionMessageWithinSizeLimit(\n transactionMessage: TTransactionMessage,\n): asserts transactionMessage is TransactionMessageWithinSizeLimit & TTransactionMessage {\n const transactionSize = getTransactionMessageSize(transactionMessage);\n if (transactionSize > TRANSACTION_SIZE_LIMIT) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT, {\n transactionSize,\n transactionSizeLimit: TRANSACTION_SIZE_LIMIT,\n });\n }\n}\n", "import { assertIsFullySignedTransaction } from './signatures';\n\n/**\n * From time to time you might acquire a {@link Transaction}, that you expect to be fully signed,\n * from an untrusted network API or user input. Use this function to assert that such a transaction\n * is fully signed.\n *\n * @deprecated Use {@link assertIsFullySignedTransaction} instead. It was only renamed.\n *\n * @example\n * ```ts\n * import { assertTransactionIsFullySigned } from '@solana/transactions';\n *\n * const transaction = getTransactionDecoder().decode(transactionBytes);\n * try {\n * // If this type assertion function doesn't throw, then Typescript will upcast `transaction`\n * // to `FullySignedTransaction`.\n * assertTransactionIsFullySigned(transaction);\n * // At this point we know that the transaction is signed and can be sent to the network.\n * await sendAndConfirmTransaction(transaction, { commitment: 'confirmed' });\n * } catch(e) {\n * if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING)) {\n * setError(`Missing signatures for ${e.context.addresses.join(', ')}`);\n * }\n * throw;\n * }\n * ```\n */\nexport const assertTransactionIsFullySigned = assertIsFullySignedTransaction;\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, SolanaError } from '@solana/errors';\n\nimport { MessageSigner } from './message-signer';\nimport { TransactionSigner } from './transaction-signer';\n\n/**\n * Removes all duplicated {@link MessageSigner | MessageSigners} and\n * {@link TransactionSigner | TransactionSigners} from a provided array\n * by comparing their {@link Address | addresses}.\n *\n * @internal\n */\nexport function deduplicateSigners(\n signers: readonly TSigner[],\n): readonly TSigner[] {\n const deduplicated: Record = {};\n signers.forEach(signer => {\n if (!deduplicated[signer.address]) {\n deduplicated[signer.address] = signer;\n } else if (deduplicated[signer.address] !== signer) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS, {\n address: signer.address,\n });\n }\n });\n return Object.values(deduplicated);\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\n/**\n * The configuration to optionally provide when calling the\n * {@link TransactionModifyingSigner#modifyAndSignTransactions | modifyAndSignTransactions} method.\n *\n * @see {@link BaseTransactionSignerConfig}\n */\nexport type TransactionModifyingSignerConfig = BaseTransactionSignerConfig;\n\n/**\n * A signer interface that potentially modifies the provided {@link Transaction | Transactions}\n * before signing them.\n *\n * For instance, this enables wallets to inject additional instructions into the\n * transaction before signing them. For each transaction, instead of returning a {@link SignatureDirectory},\n * its {@link TransactionModifyingSigner#modifyAndSignTransactions | modifyAndSignTransactions}\n * function returns an updated {@link Transaction} with a potentially\n * modified set of instructions and signature dictionary.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * const signer: TransactionModifyingSigner<'1234..5678'> = {\n * address: address('1234..5678'),\n * modifyAndSignTransactions: async (\n * transactions: T[]\n * ): Promise => {\n * // My custom signing logic.\n * },\n * };\n * ```\n *\n * @remarks\n * Here are the main characteristics of this signer interface:\n *\n * - **Sequential**. Contrary to partial signers, these cannot be executed in\n * parallel as each call can modify the provided transactions.\n * - **First signers**. For a given transaction, a modifying signer must always\n * be used before a partial signer as the former will likely modify the\n * transaction and thus impact the outcome of the latter.\n * - **Potential conflicts**. If more than one modifying signer is provided,\n * the second signer may invalidate the signature of the first one. However,\n * modifying signers may decide not to modify a transaction based on the\n * existence of signatures for that transaction.\n *\n * @see {@link isTransactionModifyingSigner}\n * @see {@link assertIsTransactionModifyingSigner}\n */\nexport type TransactionModifyingSigner = Readonly<{\n address: Address;\n modifyAndSignTransactions(\n transactions: readonly T[],\n config?: TransactionModifyingSignerConfig,\n ): Promise;\n}>;\n\n/**\n * Checks whether the provided value implements the {@link TransactionModifyingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isTransactionModifyingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isTransactionModifyingSigner({ address, modifyAndSignTransactions: async () => {} }); // true\n * isTransactionModifyingSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsTransactionModifyingSigner}\n */\nexport function isTransactionModifyingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is TransactionModifyingSigner {\n return 'modifyAndSignTransactions' in value && typeof value.modifyAndSignTransactions === 'function';\n}\n\n/**\n * Asserts that the provided value implements the {@link TransactionModifyingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsTransactionModifyingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsTransactionModifyingSigner({ address, modifyAndSignTransactions: async () => {} }); // void\n * assertIsTransactionModifyingSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isTransactionModifyingSigner}\n */\nexport function assertIsTransactionModifyingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is TransactionModifyingSigner {\n if (!isTransactionModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig, SignatureDictionary } from './types';\n\n/**\n * The configuration to optionally provide when calling the\n * {@link TransactionPartialSigner#signTransactions | signTransactions} method.\n *\n * @see {@link BaseTransactionSignerConfig}\n */\nexport type TransactionPartialSignerConfig = BaseTransactionSignerConfig;\n\n/**\n * A signer interface that signs an array of {@link Transaction | Transactions}\n * without modifying their content. It defines a\n * {@link TransactionPartialSigner#signTransactions | signTransactions}\n * function that returns a {@link SignatureDictionary} for each provided transaction.\n *\n * Such signature dictionaries are expected to be merged with the existing ones if any.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * const signer: TransactionPartialSigner<'1234..5678'> = {\n * address: address('1234..5678'),\n * signTransactions: async (\n * transactions: Transaction[]\n * ): Promise => {\n * // My custom signing logic.\n * },\n * };\n * ```\n *\n * @remarks\n * Here are the main characteristics of this signer interface:\n *\n * - **Parallel**. It returns a signature directory for each provided\n * transaction without modifying them, making it possible for multiple\n * partial signers to sign the same transaction in parallel.\n * - **Flexible order**. The order in which we use these signers for\n * a given transaction doesn’t matter.\n *\n * @see {@link isTransactionPartialSigner}\n * @see {@link assertIsTransactionPartialSigner}\n */\nexport type TransactionPartialSigner = Readonly<{\n address: Address;\n signTransactions(\n transactions: readonly Transaction[],\n config?: TransactionPartialSignerConfig,\n ): Promise;\n}>;\n\n/**\n * Checks whether the provided value implements the {@link TransactionPartialSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isTransactionPartialSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isTransactionPartialSigner({ address, signTransactions: async () => {} }); // true\n * isTransactionPartialSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsTransactionPartialSigner}\n */\nexport function isTransactionPartialSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is TransactionPartialSigner {\n return 'signTransactions' in value && typeof value.signTransactions === 'function';\n}\n\n/**\n * Asserts that the provided value implements the {@link TransactionPartialSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsTransactionPartialSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsTransactionPartialSigner({ address, signTransactions: async () => {} }); // void\n * assertIsTransactionPartialSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isTransactionPartialSigner}\n */\nexport function assertIsTransactionPartialSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is TransactionPartialSigner {\n if (!isTransactionPartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { Transaction } from '@solana/transactions';\n\nimport { BaseTransactionSignerConfig } from './types';\n\n/**\n * The configuration to optionally provide when calling the\n * {@link TransactionSendingSignerConfig#signAndSendTransactions | signAndSendTransactions} method.\n *\n * @see {@link BaseTransactionSignerConfig}\n */\nexport type TransactionSendingSignerConfig = BaseTransactionSignerConfig;\n\n/**\n * A signer interface that signs one or multiple transactions\n * before sending them immediately to the blockchain.\n *\n * It defines a {@link TransactionSendingSignerConfig#signAndSendTransactions | signAndSendTransactions}\n * function that returns the transaction signature (i.e. its identifier) for each provided\n * {@link CompilableTransaction}.\n *\n * This interface is required for PDA wallets and other types of wallets that don't provide an\n * interface for signing transactions without sending them.\n *\n * Note that it is also possible for such signers to modify the provided transactions\n * before signing and sending them. This enables use cases where the modified transactions\n * cannot be shared with the app and thus must be sent directly.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * const myTransactionSendingSigner: TransactionSendingSigner<'1234..5678'> = {\n * address: address('1234..5678'),\n * signAndSendTransactions: async (transactions: Transaction[]): Promise => {\n * // My custom signing logic.\n * },\n * };\n * ```\n *\n * @remarks\n * Here are the main characteristics of this signer interface:\n *\n * - **Single signer**. Since this signer also sends the provided transactions,\n * we can only use a single {@link TransactionSendingSigner} for a given set of transactions.\n * - **Last signer**. Trivially, that signer must also be the last one used.\n * - **Potential conflicts**. Since signers may decide to modify the given\n * transactions before sending them, they may invalidate previous signatures.\n * However, signers may decide not to modify a transaction based\n * on the existence of signatures for that transaction.\n * - **Potential confirmation**. Whilst this is not required by this interface,\n * it is also worth noting that most wallets will also wait for the transaction\n * to be confirmed (typically with a `confirmed` commitment)\n * before notifying the app that they are done.\n *\n * @see {@link isTransactionSendingSigner}\n * @see {@link assertIsTransactionSendingSigner}\n */\nexport type TransactionSendingSigner = Readonly<{\n address: Address;\n signAndSendTransactions(\n transactions: readonly Transaction[],\n config?: TransactionSendingSignerConfig,\n ): Promise;\n}>;\n\n/**\n * Checks whether the provided value implements the {@link TransactionSendingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isTransactionSendingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isTransactionSendingSigner({ address, signAndSendTransactions: async () => {} }); // true\n * isTransactionSendingSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsTransactionSendingSigner}\n */\nexport function isTransactionSendingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is TransactionSendingSigner {\n return 'signAndSendTransactions' in value && typeof value.signAndSendTransactions === 'function';\n}\n\n/**\n * Asserts that the provided value implements the {@link TransactionSendingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsTransactionSendingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsTransactionSendingSigner({ address, signAndSendTransactions: async () => {} }); // void\n * assertIsTransactionSendingSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isTransactionSendingSigner}\n */\nexport function assertIsTransactionSendingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is TransactionSendingSigner {\n if (!isTransactionSendingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isTransactionModifyingSigner, TransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner, TransactionSendingSigner } from './transaction-sending-signer';\n\n/**\n * Defines a signer capable of signing transactions.\n *\n * @see {@link TransactionModifyingSigner} For signers that can modify transactions before signing them.\n * @see {@link TransactionPartialSigner} For signers that can be used in parallel.\n * @see {@link TransactionSendingSigner} For signers that send transactions after signing them.\n * @see {@link isTransactionSigner}\n * @see {@link assertIsTransactionSigner}\n */\nexport type TransactionSigner =\n | TransactionModifyingSigner\n | TransactionPartialSigner\n | TransactionSendingSigner;\n\n/**\n * Checks whether the provided value implements the {@link TransactionSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isTransactionSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isTransactionSigner({ address, signTransactions: async () => {} }); // true\n * isTransactionSigner({ address, modifyAndSignTransactions: async () => {} }); // true\n * isTransactionSigner({ address, signAndSendTransactions: async () => {} }); // true\n * isTransactionSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsTransactionSigner}\n */\nexport function isTransactionSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is TransactionSigner {\n return (\n isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value)\n );\n}\n\n/**\n * Asserts that the provided value implements the {@link TransactionSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsTransactionSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsTransactionSigner({ address, signTransactions: async () => {} }); // void\n * assertIsTransactionSigner({ address, modifyAndSignTransactions: async () => {} }); // void\n * assertIsTransactionSigner({ address, signAndSendTransactions: async () => {} }); // void\n * assertIsTransactionSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isTransactionSigner}\n */\nexport function assertIsTransactionSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is TransactionSigner {\n if (!isTransactionSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { AccountLookupMeta, AccountMeta, AccountRole, Instruction } from '@solana/instructions';\nimport {\n BaseTransactionMessage,\n TransactionMessageWithFeePayer,\n TransactionVersion,\n} from '@solana/transaction-messages';\n\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { TransactionMessageWithFeePayerSigner } from './fee-payer-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\n\n/**\n * An extension of the {@link AccountMeta} type that allows us to store {@link TransactionSigner | TransactionSigners} inside it.\n *\n * Note that, because this type represents a signer, it must use one the following two roles:\n * - {@link AccountRole.READONLY_SIGNER}\n * - {@link AccountRole.WRITABLE_SIGNER}\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TSigner - Optionally provide a narrower type for the {@link TransactionSigner} to use within the account meta.\n *\n * @interface\n *\n * @example\n * ```ts\n * import { AccountRole } from '@solana/instructions';\n * import { generateKeyPairSigner, AccountSignerMeta } from '@solana/signers';\n *\n * const signer = await generateKeyPairSigner();\n * const account: AccountSignerMeta = {\n * address: signer.address,\n * role: AccountRole.READONLY_SIGNER,\n * signer,\n * };\n * ```\n */\nexport interface AccountSignerMeta<\n TAddress extends string = string,\n TSigner extends TransactionSigner = TransactionSigner,\n> extends AccountMeta {\n readonly role: AccountRole.READONLY_SIGNER | AccountRole.WRITABLE_SIGNER;\n readonly signer: TSigner;\n}\n\n/**\n * A union type that supports base account metas as well as {@link AccountSignerMeta | signer account metas}.\n */\ntype AccountMetaWithSigner =\n | AccountLookupMeta\n | AccountMeta\n | AccountSignerMeta;\n\n/**\n * Composable type that allows {@link AccountSignerMeta | AccountSignerMetas} to be used inside the instruction's `accounts` array\n *\n * @typeParam TSigner - Optionally provide a narrower type for {@link TransactionSigner | TransactionSigners}.\n * @typeParam TAccounts - Optionally provide a narrower type for the account metas.\n *\n * @interface\n *\n * @example\n * ```ts\n * import { AccountRole, Instruction } from '@solana/instructions';\n * import { generateKeyPairSigner, InstructionWithSigners } from '@solana/signers';\n *\n * const [authority, buffer] = await Promise.all([\n * generateKeyPairSigner(),\n * generateKeyPairSigner(),\n * ]);\n * const instruction: Instruction & InstructionWithSigners = {\n * programAddress: address('1234..5678'),\n * accounts: [\n * // The authority is a signer account.\n * {\n * address: authority.address,\n * role: AccountRole.READONLY_SIGNER,\n * signer: authority,\n * },\n * // The buffer is a writable account.\n * { address: buffer.address, role: AccountRole.WRITABLE },\n * ],\n * };\n * ```\n */\nexport type InstructionWithSigners<\n TSigner extends TransactionSigner = TransactionSigner,\n TAccounts extends readonly AccountMetaWithSigner[] = readonly AccountMetaWithSigner[],\n> = Pick, 'accounts'>;\n\n/**\n * A {@link BaseTransactionMessage} type extension that accept {@link TransactionSigner | TransactionSigners}.\n *\n * Namely, it allows:\n * - a {@link TransactionSigner} to be used as the fee payer and\n * - {@link InstructionWithSigners} to be used in its instructions.\n *\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TSigner - Optionally provide a narrower type for {@link TransactionSigner | TransactionSigners}.\n * @typeParam TAccounts - Optionally provide a narrower type for the account metas.\n *\n * @example\n * ```ts\n * import { Instruction } from '@solana/instructions';\n * import { BaseTransactionMessage } from '@solana/transaction-messages';\n * import { generateKeyPairSigner, InstructionWithSigners, TransactionMessageWithSigners } from '@solana/signers';\n *\n * const signer = await generateKeyPairSigner();\n * const firstInstruction: Instruction = { ... };\n * const secondInstruction: InstructionWithSigners = { ... };\n * const transactionMessage: BaseTransactionMessage & TransactionMessageWithSigners = {\n * feePayer: signer,\n * instructions: [firstInstruction, secondInstruction],\n * }\n * ```\n */\nexport type TransactionMessageWithSigners<\n TAddress extends string = string,\n TSigner extends TransactionSigner = TransactionSigner,\n TAccounts extends readonly AccountMetaWithSigner[] = readonly AccountMetaWithSigner[],\n> = Partial | TransactionMessageWithFeePayerSigner> &\n Pick<\n BaseTransactionMessage>,\n 'instructions'\n >;\n\n/**\n * Extracts and deduplicates all {@link TransactionSigner | TransactionSigners} stored\n * inside the account metas of an {@link InstructionWithSigners | instruction}.\n *\n * Any extracted signers that share the same {@link Address} will be de-duplicated.\n *\n * @typeParam TSigner - Optionally provide a narrower type for {@link TransactionSigner | TransactionSigners}.\n *\n * @example\n * ```ts\n * import { InstructionWithSigners, getSignersFromInstruction } from '@solana/signers';\n *\n * const signerA = { address: address('1111..1111'), signTransactions: async () => {} };\n * const signerB = { address: address('2222..2222'), signTransactions: async () => {} };\n * const instructionWithSigners: InstructionWithSigners = {\n * accounts: [\n * { address: signerA.address, signer: signerA, ... },\n * { address: signerB.address, signer: signerB, ... },\n * { address: signerA.address, signer: signerA, ... },\n * ],\n * };\n *\n * const instructionSigners = getSignersFromInstruction(instructionWithSigners);\n * // ^ [signerA, signerB]\n * ```\n */\nexport function getSignersFromInstruction(\n instruction: InstructionWithSigners,\n): readonly TSigner[] {\n return deduplicateSigners(\n (instruction.accounts ?? []).flatMap(account => ('signer' in account ? account.signer : [])),\n );\n}\n\n/**\n * Extracts and deduplicates all {@link TransactionSigner | TransactionSigners} stored\n * inside a given {@link TransactionMessageWithSigners | transaction message}.\n *\n * This includes any {@link TransactionSigner | TransactionSigners} stored\n * as the fee payer or in the instructions of the transaction message.\n *\n * Any extracted signers that share the same {@link Address} will be de-duplicated.\n *\n * @typeParam TAddress - Supply a string literal to define an account having a particular address.\n * @typeParam TSigner - Optionally provide a narrower type for {@link TransactionSigner | TransactionSigners}.\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import { Instruction } from '@solana/instructions';\n * import { InstructionWithSigners, TransactionMessageWithSigners, getSignersFromTransactionMessage } from '@solana/signers';\n *\n * const signerA = { address: address('1111..1111'), signTransactions: async () => {} };\n * const signerB = { address: address('2222..2222'), signTransactions: async () => {} };\n * const firstInstruction: Instruction & InstructionWithSigners = {\n * programAddress: address('1234..5678'),\n * accounts: [{ address: signerA.address, signer: signerA, ... }],\n * };\n * const secondInstruction: Instruction & InstructionWithSigners = {\n * programAddress: address('1234..5678'),\n * accounts: [{ address: signerB.address, signer: signerB, ... }],\n * };\n * const transactionMessage: TransactionMessageWithSigners = {\n * feePayer: signerA,\n * instructions: [firstInstruction, secondInstruction],\n * }\n *\n * const transactionSigners = getSignersFromTransactionMessage(transactionMessage);\n * // ^ [signerA, signerB]\n * ```\n */\nexport function getSignersFromTransactionMessage<\n TAddress extends string = string,\n TSigner extends TransactionSigner = TransactionSigner,\n TTransactionMessage extends TransactionMessageWithSigners = TransactionMessageWithSigners<\n TAddress,\n TSigner\n >,\n>(transaction: TTransactionMessage): readonly TSigner[] {\n return deduplicateSigners([\n ...(transaction.feePayer && isTransactionSigner(transaction.feePayer) ? [transaction.feePayer as TSigner] : []),\n ...transaction.instructions.flatMap(getSignersFromInstruction),\n ]);\n}\n", "import { Address } from '@solana/addresses';\nimport { Instruction, isSignerRole } from '@solana/instructions';\nimport { BaseTransactionMessage, TransactionMessageWithFeePayer } from '@solana/transaction-messages';\n\nimport { AccountSignerMeta, InstructionWithSigners, TransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\n\n/**\n * Attaches the provided {@link TransactionSigner | TransactionSigners} to the\n * account metas of an instruction when applicable.\n *\n * For an account meta to match a provided signer it:\n * - Must have a signer role ({@link AccountRole.READONLY_SIGNER} or {@link AccountRole.WRITABLE_SIGNER}).\n * - Must have the same address as the provided signer.\n * - Must not have an attached signer already.\n *\n * @typeParam TInstruction - The inferred type of the instruction provided.\n *\n * @example\n * ```ts\n * import { AccountRole, Instruction } from '@solana/instructions';\n * import { addSignersToInstruction, TransactionSigner } from '@solana/signers';\n *\n * const instruction: Instruction = {\n * accounts: [\n * { address: '1111' as Address, role: AccountRole.READONLY_SIGNER },\n * { address: '2222' as Address, role: AccountRole.WRITABLE_SIGNER },\n * ],\n * // ...\n * };\n *\n * const signerA: TransactionSigner<'1111'>;\n * const signerB: TransactionSigner<'2222'>;\n * const instructionWithSigners = addSignersToInstruction(\n * [signerA, signerB],\n * instruction\n * );\n *\n * // instructionWithSigners.accounts[0].signer === signerA\n * // instructionWithSigners.accounts[1].signer === signerB\n * ```\n */\nexport function addSignersToInstruction(\n signers: TransactionSigner[],\n instruction: TInstruction | (InstructionWithSigners & TInstruction),\n): InstructionWithSigners & TInstruction {\n if (!instruction.accounts || instruction.accounts.length === 0) {\n return instruction as InstructionWithSigners & TInstruction;\n }\n\n const signerByAddress = new Map(deduplicateSigners(signers).map(signer => [signer.address, signer]));\n return Object.freeze({\n ...instruction,\n accounts: instruction.accounts.map(account => {\n const signer = signerByAddress.get(account.address);\n if (!isSignerRole(account.role) || 'signer' in account || !signer) {\n return account;\n }\n return Object.freeze({ ...account, signer } as AccountSignerMeta);\n }),\n });\n}\n\n/**\n * Attaches the provided {@link TransactionSigner | TransactionSigners} to the\n * account metas of all instructions inside a transaction message and/or\n * the transaction message fee payer, when applicable.\n *\n * For an account meta to match a provided signer it:\n * - Must have a signer role ({@link AccountRole.READONLY_SIGNER} or {@link AccountRole.WRITABLE_SIGNER}).\n * - Must have the same address as the provided signer.\n * - Must not have an attached signer already.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import { AccountRole, Instruction } from '@solana/instructions';\n * import { BaseTransactionMessage } from '@solana/transaction-messages';\n * import { addSignersToTransactionMessage, TransactionSigner } from '@solana/signers';\n *\n * const instructionA: Instruction = {\n * accounts: [{ address: '1111' as Address, role: AccountRole.READONLY_SIGNER }],\n * // ...\n * };\n * const instructionB: Instruction = {\n * accounts: [{ address: '2222' as Address, role: AccountRole.WRITABLE_SIGNER }],\n * // ...\n * };\n * const transactionMessage: BaseTransactionMessage = {\n * instructions: [instructionA, instructionB],\n * // ...\n * }\n *\n * const signerA: TransactionSigner<'1111'>;\n * const signerB: TransactionSigner<'2222'>;\n * const transactionMessageWithSigners = addSignersToTransactionMessage(\n * [signerA, signerB],\n * transactionMessage\n * );\n *\n * // transactionMessageWithSigners.instructions[0].accounts[0].signer === signerA\n * // transactionMessageWithSigners.instructions[1].accounts[0].signer === signerB\n * ```\n */\nexport function addSignersToTransactionMessage(\n signers: TransactionSigner[],\n transactionMessage: TTransactionMessage | (TransactionMessageWithSigners & TTransactionMessage),\n): TransactionMessageWithSigners & TTransactionMessage {\n const feePayerSigner = hasAddressOnlyFeePayer(transactionMessage)\n ? signers.find(signer => signer.address === transactionMessage.feePayer.address)\n : undefined;\n\n if (!feePayerSigner && transactionMessage.instructions.length === 0) {\n return transactionMessage as TransactionMessageWithSigners & TTransactionMessage;\n }\n\n return Object.freeze({\n ...transactionMessage,\n ...(feePayerSigner ? { feePayer: feePayerSigner } : null),\n instructions: transactionMessage.instructions.map(instruction => addSignersToInstruction(signers, instruction)),\n });\n}\n\nfunction hasAddressOnlyFeePayer(\n message: BaseTransactionMessage & Partial,\n): message is BaseTransactionMessage & { feePayer: { address: Address } } {\n return (\n !!message &&\n 'feePayer' in message &&\n !!message.feePayer &&\n typeof message.feePayer.address === 'string' &&\n !isTransactionSigner(message.feePayer)\n );\n}\n", "import { BaseTransactionMessage, TransactionMessageWithFeePayer } from '@solana/transaction-messages';\n\nimport { TransactionSigner } from './transaction-signer';\n\n/**\n * Alternative to {@link TransactionMessageWithFeePayer} that uses a {@link TransactionSigner} for the fee payer.\n *\n * @typeParam TAddress - Supply a string literal to define a fee payer having a particular address.\n * @typeParam TSigner - Optionally provide a narrower type for the {@link TransactionSigner}.\n *\n * @example\n * ```ts\n * import { BaseTransactionMessage } from '@solana/transaction-messages';\n * import { generateKeyPairSigner, TransactionMessageWithFeePayerSigner } from '@solana/signers';\n *\n * const transactionMessage: BaseTransactionMessage & TransactionMessageWithFeePayerSigner = {\n * feePayer: await generateKeyPairSigner(),\n * instructions: [],\n * version: 0,\n * };\n * ```\n */\nexport interface TransactionMessageWithFeePayerSigner<\n TAddress extends string = string,\n TSigner extends TransactionSigner = TransactionSigner,\n> {\n readonly feePayer: TSigner;\n}\n\n/**\n * Sets the fee payer of a {@link BaseTransactionMessage | transaction message}\n * using a {@link TransactionSigner}.\n *\n * @typeParam TFeePayerAddress - Supply a string literal to define a fee payer having a particular address.\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import { pipe } from '@solana/functional';\n * import { generateKeyPairSigner, setTransactionMessageFeePayerSigner } from '@solana/signers';\n * import { createTransactionMessage } from '@solana/transaction-messages';\n *\n * const feePayer = await generateKeyPairSigner();\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 0 }),\n * message => setTransactionMessageFeePayerSigner(signer, message),\n * );\n * ```\n */\nexport function setTransactionMessageFeePayerSigner<\n TFeePayerAddress extends string,\n TTransactionMessage extends BaseTransactionMessage &\n Partial,\n>(\n feePayer: TransactionSigner,\n transactionMessage: TTransactionMessage,\n): Omit & TransactionMessageWithFeePayerSigner {\n Object.freeze(feePayer);\n const out = { ...transactionMessage, feePayer };\n Object.freeze(out);\n return out;\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig, SignatureDictionary } from './types';\n\n/**\n * The configuration to optionally provide when calling the\n * {@link MessagePartialSigner#signMessages | signMessages} method.\n *\n * @see {@link BaseSignerConfig}\n */\nexport type MessagePartialSignerConfig = BaseSignerConfig;\n\n/**\n * A signer interface that signs an array of {@link SignableMessage | SignableMessages}\n * without modifying their content.\n *\n * It defines a {@link MessagePartialSigner#signMessages | signMessages} function\n * that returns a {@link SignatureDictionary} for each provided message.\n * Such signature dictionaries are expected to be merged with the existing ones if any.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * const signer: MessagePartialSigner<'1234..5678'> = {\n * address: address('1234..5678'),\n * signMessages: async (\n * messages: SignableMessage[]\n * ): Promise => {\n * // My custom signing logic.\n * },\n * };\n * ```\n *\n * @remarks\n * Here are the main characteristics of this signer interface:\n *\n * - **Parallel**. When multiple signers sign the same message, we can\n * perform this operation in parallel to obtain all their signatures.\n * - **Flexible order**. The order in which we use these signers\n * for a given message doesn’t matter.\n *\n * @see {@link SignableMessage}\n * @see {@link createSignableMessage}\n * @see {@link isMessagePartialSigner}\n * @see {@link assertIsMessagePartialSigner}\n */\nexport type MessagePartialSigner = Readonly<{\n address: Address;\n signMessages(\n messages: readonly SignableMessage[],\n config?: MessagePartialSignerConfig,\n ): Promise;\n}>;\n\n/**\n * Checks whether the provided value implements the {@link MessagePartialSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isMessagePartialSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isMessagePartialSigner({ address, signMessages: async () => {} }); // true\n * isMessagePartialSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsMessagePartialSigner}\n */\nexport function isMessagePartialSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is MessagePartialSigner {\n return 'signMessages' in value && typeof value.signMessages === 'function';\n}\n\n/**\n * Asserts that the provided value implements the {@link MessagePartialSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsMessagePartialSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsMessagePartialSigner({ address, signMessages: async () => {} }); // void\n * assertIsMessagePartialSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isMessagePartialSigner}\n */\nexport function assertIsMessagePartialSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is MessagePartialSigner {\n if (!isMessagePartialSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, SolanaError } from '@solana/errors';\nimport { createKeyPairFromBytes, createKeyPairFromPrivateKeyBytes, generateKeyPair, signBytes } from '@solana/keys';\nimport { partiallySignTransaction } from '@solana/transactions';\n\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\n\n/**\n * Defines a signer that uses a {@link CryptoKeyPair} to sign messages and transactions.\n *\n * It implements both the {@link MessagePartialSigner} and {@link TransactionPartialSigner}\n * interfaces and keeps track of the {@link CryptoKeyPair} instance used\n * to sign messages and transactions.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * import { generateKeyPairSigner } from '@solana/signers';\n *\n * const signer = generateKeyPairSigner();\n * signer.address; // Address;\n * signer.keyPair; // CryptoKeyPair;\n * const [messageSignatures] = await signer.signMessages([message]);\n * const [transactionSignatures] = await signer.signTransactions([transaction]);\n * ```\n *\n * @see {@link generateKeyPairSigner}\n * @see {@link createSignerFromKeyPair}\n * @see {@link createKeyPairSignerFromBytes}\n * @see {@link createKeyPairSignerFromPrivateKeyBytes}\n * @see {@link isKeyPairSigner}\n * @see {@link assertIsKeyPairSigner}\n */\nexport type KeyPairSigner = MessagePartialSigner &\n TransactionPartialSigner & { keyPair: CryptoKeyPair };\n\n/**\n * Checks whether the provided value implements the {@link KeyPairSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { generateKeyPairSigner, isKeyPairSigner } from '@solana/signers';\n *\n * const signer = await generateKeyPairSigner();\n * isKeyPairSigner(signer); // true\n * isKeyPairSigner({ address: address('1234..5678') }); // false\n * ```\n */\nexport function isKeyPairSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is KeyPairSigner {\n return (\n 'keyPair' in value &&\n typeof value.keyPair === 'object' &&\n isMessagePartialSigner(value) &&\n isTransactionPartialSigner(value)\n );\n}\n\n/**\n * Asserts that the provided value implements the {@link KeyPairSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { generateKeyPairSigner, assertIsKeyPairSigner } from '@solana/signers';\n *\n * const signer = await generateKeyPairSigner();\n * assertIsKeyPairSigner(signer); // void\n * assertIsKeyPairSigner({ address: address('1234..5678') }); // Throws an error.\n * ```\n */\nexport function assertIsKeyPairSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is KeyPairSigner {\n if (!isKeyPairSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER, {\n address: value.address,\n });\n }\n}\n\n/**\n * Creates a {@link KeyPairSigner} from a provided {@link CryptoKeyPair}.\n *\n * The {@link MessagePartialSigner#signMessages | signMessages} and\n * {@link TransactionPartialSigner#signTransactions | signTransactions}\n * functions of the returned signer will use the private key of the provided\n * key pair to sign messages and transactions.\n *\n * Note that both the {@link MessagePartialSigner#signMessages | signMessages} and\n * {@link TransactionPartialSigner#signTransactions | signTransactions} implementations\n * are parallelized, meaning that they will sign all provided messages and transactions in parallel.\n *\n * @example\n * ```ts\n * import { generateKeyPair } from '@solana/keys';\n * import { createSignerFromKeyPair, KeyPairSigner } from '@solana/signers';\n *\n * const keyPair: CryptoKeyPair = await generateKeyPair();\n * const signer: KeyPairSigner = await createSignerFromKeyPair(keyPair);\n * ```\n */\nexport async function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const out: KeyPairSigner = {\n address,\n keyPair,\n signMessages: messages =>\n Promise.all(\n messages.map(async message =>\n Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) }),\n ),\n ),\n signTransactions: transactions =>\n Promise.all(\n transactions.map(async transaction => {\n const signedTransaction = await partiallySignTransaction([keyPair], transaction);\n // we know that the address has signed `signedTransaction` because it comes from the keypair\n return Object.freeze({ [address]: signedTransaction.signatures[address]! });\n }),\n ),\n };\n\n return Object.freeze(out);\n}\n\n/**\n * Generates a signer capable of signing messages and transactions by generating\n * a {@link CryptoKeyPair} and creating a {@link KeyPairSigner} from it.\n *\n * @example\n * ```ts\n * import { generateKeyPairSigner } from '@solana/signers';\n *\n * const signer = await generateKeyPairSigner();\n * ```\n *\n * @see {@link createSignerFromKeyPair}\n */\nexport async function generateKeyPairSigner(): Promise {\n return await createSignerFromKeyPair(await generateKeyPair());\n}\n\n/**\n * Creates a new {@link KeyPairSigner} from a 64-bytes `Uint8Array` secret key (private key and public key).\n *\n * @example\n * ```ts\n * import fs from 'fs';\n * import { createKeyPairSignerFromBytes } from '@solana/signers';\n *\n * // Get bytes from local keypair file.\n * const keypairFile = fs.readFileSync('~/.config/solana/id.json');\n * const keypairBytes = new Uint8Array(JSON.parse(keypairFile.toString()));\n *\n * // Create a KeyPairSigner from the bytes.\n * const signer = await createKeyPairSignerFromBytes(keypairBytes);\n * ```\n *\n * @see {@link createKeyPairSignerFromPrivateKeyBytes} if you only have the 32-bytes private key instead.\n */\nexport async function createKeyPairSignerFromBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise {\n return await createSignerFromKeyPair(await createKeyPairFromBytes(bytes, extractable));\n}\n\n/**\n * Creates a new {@link KeyPairSigner} from a 32-bytes `Uint8Array` private key.\n *\n * @example\n * ```ts\n * import { getUtf8Encoder } from '@solana/codecs-strings';\n * import { createKeyPairSignerFromPrivateKeyBytes } from '@solana/signers';\n *\n * const message = getUtf8Encoder().encode('Hello, World!');\n * const seed = new Uint8Array(await crypto.subtle.digest('SHA-256', message));\n *\n * const derivedSigner = await createKeyPairSignerFromPrivateKeyBytes(seed);\n * ```\n *\n * @see {@link createKeyPairSignerFromBytes} if you have the 64-bytes secret key instead (private key and public key).\n */\nexport async function createKeyPairSignerFromPrivateKeyBytes(\n bytes: ReadonlyUint8Array,\n extractable?: boolean,\n): Promise {\n return await createSignerFromKeyPair(await createKeyPairFromPrivateKeyBytes(bytes, extractable));\n}\n", "import { Address, isAddress } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, SolanaError } from '@solana/errors';\n\nimport { SignableMessage } from './signable-message';\nimport { BaseSignerConfig } from './types';\n\n/**\n * The configuration to optionally provide when calling the\n * {@link MessageModifyingSigner#modifyAndSignMessages | modifyAndSignMessages} method.\n *\n * @see {@link BaseSignerConfig}\n */\nexport type MessageModifyingSignerConfig = BaseSignerConfig;\n\n/**\n * A signer interface that _potentially_ modifies the content\n * of the provided {@link SignableMessage | SignableMessages} before signing them.\n *\n * For instance, this enables wallets to prefix or suffix nonces to the messages they sign.\n * For each message, instead of returning a {@link SignatureDirectory}, the\n * {@link MessageModifyingSigner#modifyAndSignMessages | modifyAndSignMessages} function\n * returns an updated {@link SignableMessage} with a potentially modified content and signature dictionary.\n *\n * @typeParam TAddress - Supply a string literal to define a signer having a particular address.\n *\n * @example\n * ```ts\n * const signer: MessageModifyingSigner<'1234..5678'> = {\n * address: address('1234..5678'),\n * modifyAndSignMessages: async (\n * messages: SignableMessage[]\n * ): Promise => {\n * // My custom signing logic.\n * },\n * };\n * ```\n *\n * @remarks\n * Here are the main characteristics of this signer interface:\n *\n * - **Sequential**. Contrary to partial signers, these cannot be executed in\n * parallel as each call can modify the content of the message.\n * - **First signers**. For a given message, a modifying signer must always be used\n * before a partial signer as the former will likely modify the message and\n * thus impact the outcome of the latter.\n * - **Potential conflicts**. If more than one modifying signer is provided, the second\n * signer may invalidate the signature of the first one. However, modifying signers\n * may decide not to modify a message based on the existence of signatures for that message.\n *\n * @see {@link SignableMessage}\n * @see {@link createSignableMessage}\n * @see {@link isMessageModifyingSigner}\n * @see {@link assertIsMessageModifyingSigner}\n */\nexport type MessageModifyingSigner = Readonly<{\n address: Address;\n modifyAndSignMessages(\n messages: readonly SignableMessage[],\n config?: MessageModifyingSignerConfig,\n ): Promise;\n}>;\n\n/**\n * Checks whether the provided value implements the {@link MessageModifyingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isMessageModifyingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isMessageModifyingSigner({ address, modifyAndSignMessages: async () => {} }); // true\n * isMessageModifyingSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsMessageModifyingSigner}\n */\nexport function isMessageModifyingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is MessageModifyingSigner {\n return (\n isAddress(value.address) &&\n 'modifyAndSignMessages' in value &&\n typeof value.modifyAndSignMessages === 'function'\n );\n}\n\n/**\n * Asserts that the provided value implements the {@link MessageModifyingSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsMessageModifyingSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsMessageModifyingSigner({ address, modifyAndSignMessages: async () => {} }); // void\n * assertIsMessageModifyingSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isMessageModifyingSigner}\n */\nexport function assertIsMessageModifyingSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is MessageModifyingSigner {\n if (!isMessageModifyingSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, SolanaError } from '@solana/errors';\n\nimport { isMessageModifyingSigner, MessageModifyingSigner } from './message-modifying-signer';\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\n\n/**\n * Defines a signer capable of signing messages.\n *\n * @see {@link MessageModifyingSigner} For signers that can modify messages before signing them.\n * @see {@link MessagePartialSigner} For signers that can be used in parallel.\n * @see {@link isMessageSigner}\n * @see {@link assertIsMessageSigner}\n */\nexport type MessageSigner =\n | MessageModifyingSigner\n | MessagePartialSigner;\n\n/**\n * Checks whether the provided value implements the {@link MessageSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { isMessageSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * isMessageSigner({ address, signMessages: async () => {} }); // true\n * isMessageSigner({ address, modifyAndSignMessages: async () => {} }); // true\n * isMessageSigner({ address }); // false\n * ```\n *\n * @see {@link assertIsMessageSigner}\n */\nexport function isMessageSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): value is MessageSigner {\n return isMessagePartialSigner(value) || isMessageModifyingSigner(value);\n}\n\n/**\n * Asserts that the provided value implements the {@link MessageSigner} interface.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { Address } from '@solana/addresses';\n * import { assertIsMessageSigner } from '@solana/signers';\n *\n * const address = '1234..5678' as Address<'1234..5678'>;\n * assertIsMessageSigner({ address, signMessages: async () => {} }); // void\n * assertIsMessageSigner({ address, modifyAndSignMessages: async () => {} }); // void\n * assertIsMessageSigner({ address }); // Throws an error.\n * ```\n *\n * @see {@link isMessageSigner}\n */\nexport function assertIsMessageSigner(value: {\n [key: string]: unknown;\n address: Address;\n}): asserts value is MessageSigner {\n if (!isMessageSigner(value)) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER, {\n address: value.address,\n });\n }\n}\n", "import { Address } from '@solana/addresses';\n\nimport { MessagePartialSigner } from './message-partial-signer';\nimport { TransactionPartialSigner } from './transaction-partial-signer';\n\n/**\n * Defines a Noop (No-Operation) signer that pretends to partially sign messages and transactions.\n *\n * For a given {@link Address}, a Noop Signer can be created to offer an implementation of both\n * the {@link MessagePartialSigner} and {@link TransactionPartialSigner} interfaces such that\n * they do not sign anything. Namely, signing a transaction or a message with a `NoopSigner`\n * will return an empty `SignatureDictionary`.\n *\n * @typeParam TAddress - Supply a string literal to define a Noop signer having a particular address.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { createNoopSigner } from '@solana/signers';\n *\n * const signer = createNoopSigner(address('1234..5678'));\n * const [messageSignatures] = await signer.signMessages([message]);\n * const [transactionSignatures] = await signer.signTransactions([transaction]);\n * // ^ Both messageSignatures and transactionSignatures are empty.\n * ```\n *\n * @remarks\n * This signer may be useful:\n *\n * - For testing purposes.\n * - For indicating that a given account is a signer and taking the responsibility to provide\n * the signature for that account ourselves. For instance, if we need to send the transaction\n * to a server that will sign it and send it for us.\n *\n * @see {@link createNoopSigner}\n */\nexport type NoopSigner = MessagePartialSigner &\n TransactionPartialSigner;\n\n/**\n * Creates a {@link NoopSigner} from the provided {@link Address}.\n *\n * @typeParam TAddress - The inferred type of the address provided.\n *\n * @example\n * ```ts\n * import { address } from '@solana/addresses';\n * import { createNoopSigner } from '@solana/signers';\n *\n * const signer = createNoopSigner(address('1234..5678'));\n * ```\n */\nexport function createNoopSigner(address: Address): NoopSigner {\n const out: NoopSigner = {\n address,\n signMessages: messages => Promise.resolve(messages.map(() => Object.freeze({}))),\n signTransactions: transactions => Promise.resolve(transactions.map(() => Object.freeze({}))),\n };\n\n return Object.freeze(out);\n}\n", "import {\n SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS,\n SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING,\n SolanaError,\n} from '@solana/errors';\nimport { Brand } from '@solana/nominal-types';\nimport { CompilableTransactionMessage } from '@solana/transaction-messages';\n\nimport { getSignersFromTransactionMessage, TransactionMessageWithSigners } from './account-signer-meta';\nimport { isTransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner } from './transaction-sending-signer';\n\n/**\n * Defines a transaction message with exactly one {@link TransactionSendingSigner}.\n *\n * This type is used to narrow the type of transaction messages that have been\n * checked to have exactly one sending signer.\n *\n * @example\n * ```ts\n * import { assertIsTransactionMessageWithSingleSendingSigner } from '@solana/signers';\n *\n * assertIsTransactionMessageWithSingleSendingSigner(transactionMessage);\n * transactionMessage satisfies TransactionMessageWithSingleSendingSigner;\n * ```\n *\n * @see {@link isTransactionMessageWithSingleSendingSigner}\n * @see {@link assertIsTransactionMessageWithSingleSendingSigner}\n */\nexport type TransactionMessageWithSingleSendingSigner = Brand<\n TransactionMessageWithSigners,\n 'TransactionMessageWithSingleSendingSigner'\n>;\n\n/**\n * Checks whether the provided transaction has exactly one {@link TransactionSendingSigner}.\n *\n * This can be useful when using {@link signAndSendTransactionMessageWithSigners} to provide\n * a fallback strategy in case the transaction message cannot be send using this function.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import {\n * isTransactionMessageWithSingleSendingSigner,\n * signAndSendTransactionMessageWithSigners,\n * signTransactionMessageWithSigners,\n * } from '@solana/signers';\n * import { getBase64EncodedWireTransaction } from '@solana/transactions';\n *\n * let transactionSignature: SignatureBytes;\n * if (isTransactionMessageWithSingleSendingSigner(transactionMessage)) {\n * transactionSignature = await signAndSendTransactionMessageWithSigners(transactionMessage);\n * } else {\n * const signedTransaction = await signTransactionMessageWithSigners(transactionMessage);\n * const encodedTransaction = getBase64EncodedWireTransaction(signedTransaction);\n * transactionSignature = await rpc.sendTransaction(encodedTransaction).send();\n * }\n * ```\n *\n * @see {@link signAndSendTransactionMessageWithSigners}\n * @see {@link assertIsTransactionMessageWithSingleSendingSigner}\n */\nexport function isTransactionMessageWithSingleSendingSigner(\n transaction: TTransactionMessage,\n): transaction is TransactionMessageWithSingleSendingSigner & TTransactionMessage {\n try {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Asserts that the provided transaction message has exactly one {@link TransactionSendingSigner}.\n *\n * This can be useful when using the {@link signAndSendTransactionMessageWithSigners} function\n * to ensure it will be able to select the correct signer to send the transaction.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import {\n * assertIsTransactionMessageWithSingleSendingSigner,\n * signAndSendTransactionMessageWithSigners\n * } from '@solana/signers';\n *\n * assertIsTransactionMessageWithSingleSendingSigner(transactionMessage);\n * const transactionSignature = await signAndSendTransactionMessageWithSigners(transactionMessage);\n * ```\n *\n * @see {@link signAndSendTransactionMessageWithSigners}\n * @see {@link isTransactionMessageWithSingleSendingSigner}\n */\nexport function assertIsTransactionMessageWithSingleSendingSigner<\n TTransactionMessage extends CompilableTransactionMessage,\n>(\n transaction: TTransactionMessage,\n): asserts transaction is TransactionMessageWithSingleSendingSigner & TTransactionMessage {\n const signers = getSignersFromTransactionMessage(transaction);\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n\n if (sendingSigners.length === 0) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n // When identifying if there are multiple sending signers, we only need to check for\n // sending signers that do not implement other transaction signer interfaces as\n // they will be used as these other signer interfaces in case of a conflict.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer),\n );\n\n if (sendingOnlySigners.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS);\n }\n}\n", "import { SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { CompilableTransactionMessage } from '@solana/transaction-messages';\nimport {\n assertIsFullySignedTransaction,\n compileTransaction,\n FullySignedTransaction,\n Transaction,\n TransactionFromCompilableTransactionMessage,\n TransactionWithLifetime,\n} from '@solana/transactions';\n\nimport { getSignersFromTransactionMessage, TransactionMessageWithSigners } from './account-signer-meta';\nimport { deduplicateSigners } from './deduplicate-signers';\nimport {\n isTransactionModifyingSigner,\n TransactionModifyingSigner,\n TransactionModifyingSignerConfig,\n} from './transaction-modifying-signer';\nimport {\n isTransactionPartialSigner,\n TransactionPartialSigner,\n TransactionPartialSignerConfig,\n} from './transaction-partial-signer';\nimport {\n isTransactionSendingSigner,\n TransactionSendingSigner,\n TransactionSendingSignerConfig,\n} from './transaction-sending-signer';\nimport { isTransactionSigner, TransactionSigner } from './transaction-signer';\nimport { assertIsTransactionMessageWithSingleSendingSigner } from './transaction-with-single-sending-signer';\n\ntype CompilableTransactionMessageWithSigners = CompilableTransactionMessage & TransactionMessageWithSigners;\n\n/**\n * Extracts all {@link TransactionSigner | TransactionSigners} inside the provided\n * transaction message and uses them to return a signed transaction.\n *\n * It first uses all {@link TransactionModifyingSigner | TransactionModifyingSigners} sequentially before\n * using all {@link TransactionPartialSigner | TransactionPartialSigners} in parallel.\n *\n * If a composite signer implements both interfaces, it will be used as a\n * {@link TransactionModifyingSigner} if no other signer implements that interface.\n * Otherwise, it will be used as a {@link TransactionPartialSigner}.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage);\n * ```\n *\n * It also accepts an optional {@link AbortSignal} that will be propagated to all signers.\n *\n * ```ts\n * const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage, {\n * abortSignal: myAbortController.signal,\n * });\n * ```\n *\n * @remarks\n * Finally, note that this function ignores {@link TransactionSendingSigner | TransactionSendingSigners}\n * as it does not send the transaction. Check out the {@link signAndSendTransactionMessageWithSigners}\n * function for more details on how to use sending signers.\n *\n * @see {@link signTransactionMessageWithSigners}\n * @see {@link signAndSendTransactionMessageWithSigners}\n */\nexport async function partiallySignTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise> {\n const { partialSigners, modifyingSigners } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transactionMessage).filter(isTransactionSigner)),\n { identifySendingSigner: false },\n );\n\n return await signModifyingAndPartialTransactionSigners(\n transactionMessage,\n modifyingSigners,\n partialSigners,\n config,\n );\n}\n\n/**\n * Extracts all {@link TransactionSigner | TransactionSigners} inside the provided\n * transaction message and uses them to return a signed transaction before asserting\n * that all signatures required by the transaction are present.\n *\n * This function delegates to the {@link partiallySignTransactionMessageWithSigners} function\n * in order to extract signers from the transaction message and sign the transaction.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * const mySignedTransaction = await signTransactionMessageWithSigners(myTransactionMessage);\n *\n * // With additional config.\n * const mySignedTransaction = await signTransactionMessageWithSigners(myTransactionMessage, {\n * abortSignal: myAbortController.signal,\n * });\n *\n * // We now know the transaction is fully signed.\n * mySignedTransaction satisfies FullySignedTransaction;\n * ```\n *\n * @see {@link partiallySignTransactionMessageWithSigners}\n * @see {@link signAndSendTransactionMessageWithSigners}\n */\nexport async function signTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n config?: TransactionPartialSignerConfig,\n): Promise> {\n const signedTransaction = await partiallySignTransactionMessageWithSigners(transactionMessage, config);\n assertIsFullySignedTransaction(signedTransaction);\n return signedTransaction;\n}\n\n/**\n * Extracts all {@link TransactionSigner | TransactionSigners} inside the provided\n * transaction message and uses them to sign it before sending it immediately to the blockchain.\n *\n * It returns the signature of the sent transaction (i.e. its identifier) as bytes.\n *\n * @typeParam TTransactionMessage - The inferred type of the transaction message provided.\n *\n * @example\n * ```ts\n * import { signAndSendTransactionMessageWithSigners } from '@solana/signers';\n *\n * const transactionSignature = await signAndSendTransactionMessageWithSigners(transactionMessage);\n *\n * // With additional config.\n * const transactionSignature = await signAndSendTransactionMessageWithSigners(transactionMessage, {\n * abortSignal: myAbortController.signal,\n * });\n * ```\n *\n * @remarks\n * Similarly to the {@link partiallySignTransactionMessageWithSigners} function, it first uses all\n * {@link TransactionModifyingSigner | TransactionModifyingSigners} sequentially before using all\n * {@link TransactionPartialSigner | TransactionPartialSigners} in parallel.\n * It then sends the transaction using the {@link TransactionSendingSigner} it identified.\n *\n * Composite transaction signers are treated such that at least one sending signer is used if any.\n * When a {@link TransactionSigner} implements more than one interface, we use it as a:\n *\n * - {@link TransactionSendingSigner}, if no other {@link TransactionSendingSigner} exists.\n * - {@link TransactionModifyingSigner}, if no other {@link TransactionModifyingSigner} exists.\n * - {@link TransactionPartialSigner}, otherwise.\n *\n * The provided transaction must contain exactly one {@link TransactionSendingSigner} inside its account metas.\n * If more than one composite signers implement the {@link TransactionSendingSigner} interface,\n * one of them will be selected as the sending signer. Otherwise, if multiple\n * {@link TransactionSendingSigner | TransactionSendingSigners} must be selected, the function will throw an error.\n *\n * If you'd like to assert that a transaction makes use of exactly one {@link TransactionSendingSigner}\n * _before_ calling this function, you may use the {@link assertIsTransactionMessageWithSingleSendingSigner} function.\n *\n * Alternatively, you may use the {@link isTransactionMessageWithSingleSendingSigner} function to provide a\n * fallback in case the transaction does not contain any sending signer.\n *\n * @see {@link assertIsTransactionMessageWithSingleSendingSigner}\n * @see {@link isTransactionMessageWithSingleSendingSigner}\n * @see {@link partiallySignTransactionMessageWithSigners}\n * @see {@link signTransactionMessageWithSigners}\n *\n */\nexport async function signAndSendTransactionMessageWithSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners = CompilableTransactionMessageWithSigners,\n>(transaction: TTransactionMessage, config?: TransactionSendingSignerConfig): Promise {\n assertIsTransactionMessageWithSingleSendingSigner(transaction);\n\n const abortSignal = config?.abortSignal;\n const { partialSigners, modifyingSigners, sendingSigner } = categorizeTransactionSigners(\n deduplicateSigners(getSignersFromTransactionMessage(transaction).filter(isTransactionSigner)),\n );\n\n abortSignal?.throwIfAborted();\n const signedTransaction = await signModifyingAndPartialTransactionSigners(\n transaction,\n modifyingSigners,\n partialSigners,\n config,\n );\n\n if (!sendingSigner) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING);\n }\n\n abortSignal?.throwIfAborted();\n const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], config);\n abortSignal?.throwIfAborted();\n\n return signature;\n}\n\n/**\n * Identifies each provided TransactionSigner and categorizes them into their respective types.\n * When a signer implements multiple interface, it will try to used to most powerful interface\n * but fallback to the least powerful interface when necessary.\n * For instance, if a signer implements TransactionSendingSigner and TransactionModifyingSigner,\n * it will be categorized as a TransactionSendingSigner if and only if no other signers implement\n * the TransactionSendingSigner interface.\n */\nfunction categorizeTransactionSigners(\n signers: readonly TransactionSigner[],\n config: { identifySendingSigner?: boolean } = {},\n): Readonly<{\n modifyingSigners: readonly TransactionModifyingSigner[];\n partialSigners: readonly TransactionPartialSigner[];\n sendingSigner: TransactionSendingSigner | null;\n}> {\n // Identify the unique sending signer that should be used.\n const identifySendingSigner = config.identifySendingSigner ?? true;\n const sendingSigner = identifySendingSigner ? identifyTransactionSendingSigner(signers) : null;\n\n // Now, focus on the other signers.\n // I.e. the modifying or partial signers that are not the identified sending signer.\n // Note that any other sending only signers will be discarded.\n const otherSigners = signers.filter(\n (signer): signer is TransactionModifyingSigner | TransactionPartialSigner =>\n signer !== sendingSigner && (isTransactionModifyingSigner(signer) || isTransactionPartialSigner(signer)),\n );\n\n // Identify the modifying signers from the other signers.\n const modifyingSigners = identifyTransactionModifyingSigners(otherSigners);\n\n // Use any remaining signers as partial signers.\n const partialSigners = otherSigners\n .filter(isTransactionPartialSigner)\n .filter(signer => !(modifyingSigners as typeof otherSigners).includes(signer));\n\n return Object.freeze({ modifyingSigners, partialSigners, sendingSigner });\n}\n\n/** Identifies the best signer to use as a TransactionSendingSigner, if any */\nfunction identifyTransactionSendingSigner(signers: readonly TransactionSigner[]): TransactionSendingSigner | null {\n // Ensure there are any TransactionSendingSigners in the first place.\n const sendingSigners = signers.filter(isTransactionSendingSigner);\n if (sendingSigners.length === 0) return null;\n\n // Prefer sending signers that do not offer other interfaces.\n const sendingOnlySigners = sendingSigners.filter(\n signer => !isTransactionModifyingSigner(signer) && !isTransactionPartialSigner(signer),\n );\n if (sendingOnlySigners.length > 0) {\n return sendingOnlySigners[0];\n }\n\n // Otherwise, choose any sending signer.\n return sendingSigners[0];\n}\n\n/** Identifies the best signers to use as TransactionModifyingSigners, if any */\nfunction identifyTransactionModifyingSigners(\n signers: readonly (TransactionModifyingSigner | TransactionPartialSigner)[],\n): readonly TransactionModifyingSigner[] {\n // Ensure there are any TransactionModifyingSigner in the first place.\n const modifyingSigners = signers.filter(isTransactionModifyingSigner);\n if (modifyingSigners.length === 0) return [];\n\n // Prefer modifying signers that do not offer partial signing.\n const nonPartialSigners = modifyingSigners.filter(signer => !isTransactionPartialSigner(signer));\n if (nonPartialSigners.length > 0) return nonPartialSigners;\n\n // Otherwise, choose only one modifying signer (whichever).\n return [modifyingSigners[0]];\n}\n\n/**\n * Signs a transaction using the provided TransactionModifyingSigners\n * sequentially followed by the TransactionPartialSigners in parallel.\n */\nasync function signModifyingAndPartialTransactionSigners<\n TTransactionMessage extends CompilableTransactionMessageWithSigners,\n>(\n transactionMessage: TTransactionMessage,\n modifyingSigners: readonly TransactionModifyingSigner[] = [],\n partialSigners: readonly TransactionPartialSigner[] = [],\n config?: TransactionModifyingSignerConfig,\n): Promise> {\n type ReturnType = TransactionFromCompilableTransactionMessage;\n\n // serialize the transaction\n const transaction = compileTransaction(transactionMessage);\n\n // Handle modifying signers sequentially.\n const modifiedTransaction = await modifyingSigners.reduce(\n async (transaction, modifyingSigner) => {\n config?.abortSignal?.throwIfAborted();\n const [tx] = await modifyingSigner.modifyAndSignTransactions([await transaction], config);\n return Object.freeze(tx);\n },\n Promise.resolve(transaction) as Promise>,\n );\n\n // Handle partial signers in parallel.\n config?.abortSignal?.throwIfAborted();\n const signatureDictionaries = await Promise.all(\n partialSigners.map(async partialSigner => {\n const [signatures] = await partialSigner.signTransactions([modifiedTransaction], config);\n return signatures;\n }),\n );\n\n return Object.freeze({\n ...modifiedTransaction,\n signatures: Object.freeze(\n signatureDictionaries.reduce((signatures, signatureDictionary) => {\n return { ...signatures, ...signatureDictionary };\n }, modifiedTransaction.signatures ?? {}),\n ),\n }) as ReturnType;\n}\n", "export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n", "import { TextEncoder } from '@solana/text-encoding-impl';\n\nimport { SignatureDictionary } from './types';\n\n/**\n * Defines a message that needs signing and its current set of signatures if any.\n *\n * This interface allows {@link MessageModifyingSigner | MessageModifyingSigners}\n * to decide on whether or not they should modify the provided message depending\n * on whether or not signatures already exist for such message.\n *\n * It also helps create a more consistent API by providing a structure analogous\n * to transactions which also keep track of their {@link SignatureDictionary}.\n *\n * @example\n * ```ts\n * import { createSignableMessage } from '@solana/signers';\n *\n * const message = createSignableMessage(new Uint8Array([1, 2, 3]));\n * message.content; // The content of the message as bytes.\n * message.signatures; // The current set of signatures for this message.\n * ```\n *\n * @see {@link createSignableMessage}\n */\nexport type SignableMessage = Readonly<{\n content: Uint8Array;\n signatures: SignatureDictionary;\n}>;\n\n/**\n * Creates a {@link SignableMessage} from a `Uint8Array` or a UTF-8 string.\n *\n * It optionally accepts a signature dictionary if the message already contains signatures.\n *\n * @example\n * ```ts\n * const message = createSignableMessage(new Uint8Array([1, 2, 3]));\n * const messageFromText = createSignableMessage('Hello world!');\n * const messageWithSignatures = createSignableMessage('Hello world!', {\n * '1234..5678': new Uint8Array([1, 2, 3]),\n * });\n * ```\n */\nexport function createSignableMessage(\n content: Uint8Array | string,\n signatures: SignatureDictionary = {},\n): SignableMessage {\n return Object.freeze({\n content: typeof content === 'string' ? new TextEncoder().encode(content) : content,\n signatures: Object.freeze({ ...signatures }),\n });\n}\n", "import { setMaxListeners } from 'node:events';\n\nexport const AbortController = class extends globalThis.AbortController {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this.signal);\n }\n};\n\nexport const EventTarget = class extends globalThis.EventTarget {\n constructor(...args: ConstructorParameters) {\n super(...args);\n setMaxListeners(Number.MAX_SAFE_INTEGER, this);\n }\n};\n", "import { SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, SolanaError } from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\nimport type { GetEpochInfoApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport type { Commitment } from '@solana/rpc-types';\n\ntype GetBlockHeightExceedencePromiseFn = (config: {\n abortSignal: AbortSignal;\n /**\n * Fetch the block height as of the highest slot that has reached this level of commitment.\n *\n * @defaultValue Whichever default is applied by the underlying {@link RpcApi} in use. For\n * example, when using an API created by a `createSolanaRpc*()` helper, the default commitment\n * is `\"confirmed\"` unless configured otherwise. Unmitigated by an API layer on the client, the\n * default commitment applied by the server is `\"finalized\"`.\n */\n commitment?: Commitment;\n /** The block height after which to reject the promise */\n lastValidBlockHeight: bigint;\n}) => Promise;\n\ntype CreateBlockHeightExceedencePromiseFactoryConfig = {\n rpc: Rpc & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\n/**\n * Creates a promise that throws when the network progresses past the block height after which the\n * supplied blockhash is considered expired for use as a transaction lifetime specifier.\n *\n * When a transaction's lifetime is tied to a blockhash, that transaction can be landed on the\n * network until that blockhash expires. All blockhashes have a block height after which they are\n * considered to have expired.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { isSolanaError, SolanaError } from '@solana/errors';\n * import { createBlockHeightExceedencePromiseFactory } from '@solana/transaction-confirmation';\n *\n * const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n * rpc,\n * rpcSubscriptions,\n * });\n * try {\n * await getBlockHeightExceedencePromise({ lastValidBlockHeight });\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED)) {\n * console.error(\n * `The block height of the network has exceeded ${e.context.lastValidBlockHeight}. ` +\n * `It is now ${e.context.currentBlockHeight}`,\n * );\n * // Re-sign and retry the transaction.\n * return;\n * }\n * throw e;\n * }\n * ```\n */\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryConfig<'devnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryConfig<'testnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryConfig<'mainnet'>): GetBlockHeightExceedencePromiseFn;\nexport function createBlockHeightExceedencePromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateBlockHeightExceedencePromiseFactoryConfig): GetBlockHeightExceedencePromiseFn {\n return async function getBlockHeightExceedencePromise({\n abortSignal: callerAbortSignal,\n commitment,\n lastValidBlockHeight,\n }): Promise {\n callerAbortSignal.throwIfAborted();\n const abortController = new AbortController();\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n async function getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight() {\n const { absoluteSlot, blockHeight } = await rpc\n .getEpochInfo({ commitment })\n .send({ abortSignal: abortController.signal });\n return {\n blockHeight,\n differenceBetweenSlotHeightAndBlockHeight: absoluteSlot - blockHeight,\n };\n }\n try {\n const [slotNotifications, { blockHeight: initialBlockHeight, differenceBetweenSlotHeightAndBlockHeight }] =\n await Promise.all([\n rpcSubscriptions.slotNotifications().subscribe({ abortSignal: abortController.signal }),\n getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight(),\n ]);\n callerAbortSignal.throwIfAborted();\n let currentBlockHeight = initialBlockHeight;\n if (currentBlockHeight <= lastValidBlockHeight) {\n let lastKnownDifferenceBetweenSlotHeightAndBlockHeight = differenceBetweenSlotHeightAndBlockHeight;\n for await (const slotNotification of slotNotifications) {\n const { slot } = slotNotification;\n if (slot - lastKnownDifferenceBetweenSlotHeightAndBlockHeight > lastValidBlockHeight) {\n // Before making a final decision, recheck the actual block height.\n const {\n blockHeight: recheckedBlockHeight,\n differenceBetweenSlotHeightAndBlockHeight: currentDifferenceBetweenSlotHeightAndBlockHeight,\n } = await getBlockHeightAndDifferenceBetweenSlotHeightAndBlockHeight();\n currentBlockHeight = recheckedBlockHeight;\n if (currentBlockHeight > lastValidBlockHeight) {\n // Verified; the block height has been exceeded.\n break;\n } else {\n // The block height has not been exceeded, which implies that the\n // difference between the slot height and the block height has grown\n // (ie. some blocks have been skipped since we started). Recalibrate the\n // difference and keep waiting.\n lastKnownDifferenceBetweenSlotHeightAndBlockHeight =\n currentDifferenceBetweenSlotHeightAndBlockHeight;\n }\n }\n }\n }\n callerAbortSignal.throwIfAborted();\n throw new SolanaError(SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED, {\n currentBlockHeight,\n lastValidBlockHeight,\n });\n } finally {\n abortController.abort();\n }\n };\n}\n", "import type { Address } from '@solana/addresses';\nimport { getBase58Decoder, getBase64Encoder } from '@solana/codecs-strings';\nimport { SOLANA_ERROR__INVALID_NONCE, SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, SolanaError } from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\nimport { safeRace } from '@solana/promises';\nimport type { GetAccountInfoApi, Rpc } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions } from '@solana/rpc-subscriptions';\nimport type { Base64EncodedDataResponse, Commitment } from '@solana/rpc-types';\nimport { Nonce } from '@solana/transaction-messages';\n\ntype GetNonceInvalidationPromiseFn = (config: {\n abortSignal: AbortSignal;\n /**\n * Fetch the nonce account details as of the highest slot that has reached this level of\n * commitment.\n */\n commitment: Commitment;\n /**\n * The value of the nonce that we would expect to see in the nonce account in order for any\n * transaction with that nonce-based lifetime to be considered valid.\n */\n currentNonceValue: Nonce;\n /** The address of the account in which the currently-valid nonce value is stored */\n nonceAccountAddress: Address;\n}) => Promise;\n\ntype CreateNonceInvalidationPromiseFactoryConfig = {\n rpc: Rpc & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\nconst NONCE_VALUE_OFFSET =\n 4 + // version(u32)\n 4 + // state(u32)\n 32; // nonce authority(pubkey)\n// Then comes the nonce value.\n\n/**\n * Creates a promise that throws when the value stored in a nonce account is not the expected one.\n *\n * When a transaction's lifetime is tied to the value stored in a nonce account, that transaction\n * can be landed on the network until the nonce is advanced to a new value.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { isSolanaError, SolanaError } from '@solana/errors';\n * import { createNonceInvalidationPromiseFactory } from '@solana/transaction-confirmation';\n *\n * const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory({\n * rpc,\n * rpcSubscriptions,\n * });\n * try {\n * await getNonceInvalidationPromise({\n * currentNonceValue,\n * nonceAccountAddress,\n * });\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__NONCE_INVALID)) {\n * console.error(`The nonce has advanced to ${e.context.actualNonceValue}`);\n * // Re-sign and retry the transaction.\n * return;\n * } else if (isSolanaError(e, SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND)) {\n * console.error(`No nonce account was found at ${nonceAccountAddress}`);\n * }\n * throw e;\n * }\n * ```\n */\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'devnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'testnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig<'mainnet'>): GetNonceInvalidationPromiseFn;\nexport function createNonceInvalidationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateNonceInvalidationPromiseFactoryConfig): GetNonceInvalidationPromiseFn {\n return async function getNonceInvalidationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n currentNonceValue: expectedNonceValue,\n nonceAccountAddress,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for nonce account changes.\n */\n const accountNotifications = await rpcSubscriptions\n .accountNotifications(nonceAccountAddress, { commitment, encoding: 'base64' })\n .subscribe({ abortSignal: abortController.signal });\n const base58Decoder = getBase58Decoder();\n const base64Encoder = getBase64Encoder();\n function getNonceFromAccountData([base64EncodedBytes]: Base64EncodedDataResponse): Nonce {\n const data = base64Encoder.encode(base64EncodedBytes);\n const nonceValueBytes = data.slice(NONCE_VALUE_OFFSET, NONCE_VALUE_OFFSET + 32);\n return base58Decoder.decode(nonceValueBytes) as Nonce;\n }\n const nonceAccountDidAdvancePromise = (async () => {\n for await (const accountNotification of accountNotifications) {\n const nonceValue = getNonceFromAccountData(accountNotification.value.data);\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current nonce\n * value to check if it has already been advanced.\n */\n const nonceIsAlreadyInvalidPromise = (async () => {\n const { value: nonceAccount } = await rpc\n .getAccountInfo(nonceAccountAddress, {\n commitment,\n dataSlice: { length: 32, offset: NONCE_VALUE_OFFSET },\n encoding: 'base58',\n })\n .send({ abortSignal: abortController.signal });\n if (!nonceAccount) {\n throw new SolanaError(SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND, {\n nonceAccountAddress,\n });\n }\n const nonceValue =\n // This works because we asked for the exact slice of data representing the nonce\n // value, and furthermore asked for it in `base58` encoding.\n nonceAccount.data[0] as unknown as Nonce;\n if (nonceValue !== expectedNonceValue) {\n throw new SolanaError(SOLANA_ERROR__INVALID_NONCE, {\n actualNonceValue: nonceValue,\n expectedNonceValue,\n });\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([nonceAccountDidAdvancePromise, nonceIsAlreadyInvalidPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n", "import { getSolanaErrorFromTransactionError } from '@solana/errors';\nimport { AbortController } from '@solana/event-target-impl';\nimport type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { GetSignatureStatusesApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport { type Commitment, commitmentComparator } from '@solana/rpc-types';\n\ntype GetRecentSignatureConfirmationPromiseFn = (config: {\n abortSignal: AbortSignal;\n /**\n * The level of commitment the transaction must have achieved in order for the promise to\n * resolve.\n */\n commitment: Commitment;\n /**\n * A 64 byte Ed25519 signature, encoded as a base-58 string, that uniquely identifies a\n * transaction by virtue of being the first or only signature in its list of signatures.\n */\n signature: Signature;\n}) => Promise;\n\ntype CreateRecentSignatureConfirmationPromiseFactoryConfig = {\n rpc: Rpc & { '~cluster'?: TCluster };\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\n/**\n * Creates a promise that resolves when a recently-landed transaction achieves the target\n * confirmation commitment, and throws when the transaction fails with an error.\n *\n * The status of recently-landed transactions is available in the network's status cache. This\n * confirmation strategy will only yield a result if the signature is still in the status cache. To\n * fetch the status of transactions older than those available in the status cache, use the\n * {@link GetSignatureStatusesApi.getSignatureStatuses} method setting the\n * `searchTransactionHistory` configuration param to `true`.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { createRecentSignatureConfirmationPromiseFactory } from '@solana/transaction-confirmation';\n *\n * const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n * rpc,\n * rpcSubscriptions,\n * });\n * try {\n * await getRecentSignatureConfirmationPromise({\n * commitment,\n * signature,\n * });\n * console.log(`The transaction with signature \\`${signature}\\` has achieved a commitment level of \\`${commitment}\\``);\n * } catch (e) {\n * console.error(`The transaction with signature \\`${signature}\\` failed`, e.cause);\n * throw e;\n * }\n * ```\n */\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'devnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'testnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig<'mainnet'>): GetRecentSignatureConfirmationPromiseFn;\nexport function createRecentSignatureConfirmationPromiseFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: CreateRecentSignatureConfirmationPromiseFactoryConfig): GetRecentSignatureConfirmationPromiseFn {\n return async function getRecentSignatureConfirmationPromise({\n abortSignal: callerAbortSignal,\n commitment,\n signature,\n }) {\n const abortController = new AbortController();\n function handleAbort() {\n abortController.abort();\n }\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n /**\n * STEP 1: Set up a subscription for status changes to a signature.\n */\n const signatureStatusNotifications = await rpcSubscriptions\n .signatureNotifications(signature, { commitment })\n .subscribe({ abortSignal: abortController.signal });\n const signatureDidCommitPromise = (async () => {\n for await (const signatureStatusNotification of signatureStatusNotifications) {\n if (signatureStatusNotification.value.err) {\n throw getSolanaErrorFromTransactionError(signatureStatusNotification.value.err);\n } else {\n return;\n }\n }\n })();\n /**\n * STEP 2: Having subscribed for updates, make a one-shot request for the current status.\n * This will only yield a result if the signature is still in the status cache.\n */\n const signatureStatusLookupPromise = (async () => {\n const { value: signatureStatusResults } = await rpc\n .getSignatureStatuses([signature])\n .send({ abortSignal: abortController.signal });\n const signatureStatus = signatureStatusResults[0];\n if (\n signatureStatus &&\n signatureStatus.confirmationStatus &&\n commitmentComparator(signatureStatus.confirmationStatus, commitment) >= 0\n ) {\n return;\n } else {\n await new Promise(() => {\n /* never resolve */\n });\n }\n })();\n try {\n return await safeRace([signatureDidCommitPromise, signatureStatusLookupPromise]);\n } finally {\n abortController.abort();\n }\n };\n}\n", "import type { Commitment } from '@solana/rpc-types';\n\ntype Config = Readonly<{\n abortSignal: AbortSignal;\n /**\n * The timeout promise will throw after 30 seconds when the commitment is `processed`, and 60\n * seconds otherwise.\n */\n commitment: Commitment;\n}>;\n\n/**\n * When no other heuristic exists to infer that a transaction has expired, you can use this promise\n * factory with a commitment level. It throws after 30 seconds when the commitment is `processed`,\n * and 60 seconds otherwise. You would typically race this with another confirmation strategy.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { safeRace } from '@solana/promises';\n * import { getTimeoutPromise } from '@solana/transaction-confirmation';\n *\n * try {\n * await safeRace([getCustomTransactionConfirmationPromise(/* ... *\\/), getTimeoutPromise({ commitment })]);\n * } catch (e) {\n * if (e instanceof DOMException && e.name === 'TimeoutError') {\n * console.log('Could not confirm transaction after a timeout');\n * }\n * throw e;\n * }\n * ```\n */\nexport async function getTimeoutPromise({ abortSignal: callerAbortSignal, commitment }: Config) {\n return await new Promise((_, reject) => {\n const handleAbort = (e: AbortSignalEventMap['abort']) => {\n clearTimeout(timeoutId);\n const abortError = new DOMException((e.target as AbortSignal).reason, 'AbortError');\n reject(abortError);\n };\n callerAbortSignal.addEventListener('abort', handleAbort);\n const timeoutMs = commitment === 'processed' ? 30_000 : 60_000;\n const startMs = performance.now();\n const timeoutId =\n // We use `setTimeout` instead of `AbortSignal.timeout()` because we want to measure\n // elapsed time instead of active time.\n // See https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout_static\n setTimeout(() => {\n const elapsedMs = performance.now() - startMs;\n reject(new DOMException(`Timeout elapsed after ${elapsedMs} ms`, 'TimeoutError'));\n }, timeoutMs);\n });\n}\n", "import { AbortController } from '@solana/event-target-impl';\nimport type { Signature } from '@solana/keys';\nimport { safeRace } from '@solana/promises';\nimport type { Commitment } from '@solana/rpc-types';\n\nimport { createRecentSignatureConfirmationPromiseFactory } from './confirmation-strategy-recent-signature';\n\nexport interface BaseTransactionConfirmationStrategyConfig {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n getRecentSignatureConfirmationPromise: ReturnType;\n}\n\ntype WithNonNullableAbortSignal = Omit & Readonly<{ abortSignal: AbortSignal }>;\n\nexport async function raceStrategies(\n signature: Signature,\n config: TConfig,\n getSpecificStrategiesForRace: (config: WithNonNullableAbortSignal) => readonly Promise[],\n) {\n const { abortSignal: callerAbortSignal, commitment, getRecentSignatureConfirmationPromise } = config;\n callerAbortSignal?.throwIfAborted();\n const abortController = new AbortController();\n if (callerAbortSignal) {\n const handleAbort = () => {\n abortController.abort();\n };\n callerAbortSignal.addEventListener('abort', handleAbort, { signal: abortController.signal });\n }\n try {\n const specificStrategies = getSpecificStrategiesForRace({\n ...config,\n abortSignal: abortController.signal,\n });\n return await safeRace([\n getRecentSignatureConfirmationPromise({\n abortSignal: abortController.signal,\n commitment,\n signature,\n }),\n ...specificStrategies,\n ]);\n } finally {\n abortController.abort();\n }\n}\n", "import { Signature } from '@solana/keys';\nimport {\n getSignatureFromTransaction,\n Transaction,\n TransactionWithBlockhashLifetime,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions';\n\nimport { createBlockHeightExceedencePromiseFactory } from './confirmation-strategy-blockheight';\nimport { createNonceInvalidationPromiseFactory } from './confirmation-strategy-nonce';\nimport { BaseTransactionConfirmationStrategyConfig, raceStrategies } from './confirmation-strategy-racer';\nimport { getTimeoutPromise } from './confirmation-strategy-timeout';\n\nexport type TransactionWithLastValidBlockHeight = Omit & {\n lifetimeConstraint: Omit;\n};\n\ninterface WaitForDurableNonceTransactionConfirmationConfig extends BaseTransactionConfirmationStrategyConfig {\n getNonceInvalidationPromise: ReturnType;\n transaction: Readonly;\n}\n\ninterface WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getBlockHeightExceedencePromise: ReturnType;\n transaction: Readonly;\n}\n\ninterface WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig\n extends BaseTransactionConfirmationStrategyConfig {\n getTimeoutPromise: typeof getTimeoutPromise;\n /**\n * A 64 byte Ed25519 signature, encoded as a base-58 string, that uniquely identifies a\n * transaction by virtue of being the first or only signature in its list of signatures.\n */\n signature: Signature;\n}\n\n/**\n * Supply your own confirmation implementations to this function to create a custom nonce\n * transaction confirmation strategy.\n *\n * @example\n * ```ts\n * import { waitForDurableNonceTransactionConfirmation } from '@solana/transaction-confirmation';\n *\n * try {\n * await waitForDurableNonceTransactionConfirmation({\n * getNonceInvalidationPromise({ abortSignal, commitment, currentNonceValue, nonceAccountAddress }) {\n * // Return a promise that rejects when a nonce becomes invalid.\n * },\n * getRecentSignatureConfirmationPromise({ abortSignal, commitment, signature }) {\n * // Return a promise that resolves when a transaction achieves confirmation\n * },\n * });\n * } catch (e) {\n * // Handle errors.\n * }\n * ```\n */\nexport async function waitForDurableNonceTransactionConfirmation(\n config: WaitForDurableNonceTransactionConfirmationConfig,\n): Promise {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getNonceInvalidationPromise, transaction }) {\n return [\n getNonceInvalidationPromise({\n abortSignal,\n commitment,\n currentNonceValue: transaction.lifetimeConstraint.nonce,\n nonceAccountAddress: transaction.lifetimeConstraint.nonceAccountAddress,\n }),\n ];\n },\n );\n}\n\n/**\n * Supply your own confirmation implementations to this function to create a custom confirmation\n * strategy for recently-landed transactions.\n *\n * @example\n * ```ts\n * import { waitForRecentTransactionConfirmation } from '@solana/transaction-confirmation';\n *\n * try {\n * await waitForRecentTransactionConfirmation({\n * getBlockHeightExceedencePromise({ abortSignal, commitment, lastValidBlockHeight }) {\n * // Return a promise that rejects when the blockhash's block height has been exceeded\n * },\n * getRecentSignatureConfirmationPromise({ abortSignal, commitment, signature }) {\n * // Return a promise that resolves when a transaction achieves confirmation\n * },\n * });\n * } catch (e) {\n * // Handle errors.\n * }\n * ```\n */\nexport async function waitForRecentTransactionConfirmation(\n config: WaitForRecentTransactionWithBlockhashLifetimeConfirmationConfig,\n): Promise {\n await raceStrategies(\n getSignatureFromTransaction(config.transaction),\n config,\n function getSpecificStrategiesForRace({\n abortSignal,\n commitment,\n getBlockHeightExceedencePromise,\n transaction,\n }) {\n return [\n getBlockHeightExceedencePromise({\n abortSignal,\n commitment,\n lastValidBlockHeight: transaction.lifetimeConstraint.lastValidBlockHeight,\n }),\n ];\n },\n );\n}\n\n/** @deprecated */\nexport async function waitForRecentTransactionConfirmationUntilTimeout(\n config: WaitForRecentTransactionWithTimeBasedLifetimeConfirmationConfig,\n): Promise {\n await raceStrategies(\n config.signature,\n config,\n function getSpecificStrategiesForRace({ abortSignal, commitment, getTimeoutPromise }) {\n return [\n getTimeoutPromise({\n abortSignal,\n commitment,\n }),\n ];\n },\n );\n}\n", "import type { Address } from '@solana/addresses';\nimport type { Signature } from '@solana/keys';\nimport type { RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { Commitment, Lamports } from '@solana/rpc-types';\nimport { waitForRecentTransactionConfirmationUntilTimeout } from '@solana/transaction-confirmation';\n\ntype RequestAndConfirmAirdropConfig = Readonly<{\n abortSignal?: AbortSignal;\n commitment: Commitment;\n confirmSignatureOnlyTransaction: (\n config: Omit<\n Parameters[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) => Promise;\n lamports: Lamports;\n recipientAddress: Address;\n rpc: Rpc;\n}>;\n\nexport async function requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmSignatureOnlyTransaction,\n lamports,\n recipientAddress,\n rpc,\n}: RequestAndConfirmAirdropConfig): Promise {\n const airdropTransactionSignature = await rpc\n .requestAirdrop(recipientAddress, lamports, { commitment })\n .send({ abortSignal });\n await confirmSignatureOnlyTransaction({\n abortSignal,\n commitment,\n signature: airdropTransactionSignature,\n });\n return airdropTransactionSignature;\n}\n", "import type { Signature } from '@solana/keys';\nimport type { GetSignatureStatusesApi, RequestAirdropApi, Rpc } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createRecentSignatureConfirmationPromiseFactory,\n getTimeoutPromise,\n waitForRecentTransactionConfirmationUntilTimeout,\n} from '@solana/transaction-confirmation';\n\nimport { requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT } from './airdrop-internal';\n\ntype AirdropFunction = (\n config: Omit<\n Parameters[0],\n 'confirmSignatureOnlyTransaction' | 'rpc'\n >,\n) => Promise;\n\ntype AirdropFactoryConfig = {\n /** An object that supports the {@link GetSignatureStatusesApi} and the {@link RequestAirdropApi} of the Solana RPC API */\n rpc: Rpc & { '~cluster'?: TCluster };\n /** An object that supports the {@link SignatureNotificationsApi} of the Solana RPC Subscriptions API */\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\n/**\n * Returns a function that you can call to airdrop a certain amount of {@link Lamports} to a Solana\n * address.\n *\n * > [!NOTE] This only works on test clusters.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { address, airdropFactory, createSolanaRpc, createSolanaRpcSubscriptions, devnet, lamports } from '@solana/kit';\n *\n * const rpc = createSolanaRpc(devnet('http://127.0.0.1:8899'));\n * const rpcSubscriptions = createSolanaRpcSubscriptions(devnet('ws://127.0.0.1:8900'));\n *\n * const airdrop = airdropFactory({ rpc, rpcSubscriptions });\n *\n * await airdrop({\n * commitment: 'confirmed',\n * recipientAddress: address('FnHyam9w4NZoWR6mKN1CuGBritdsEWZQa4Z4oawLZGxa'),\n * lamports: lamports(10_000_000n),\n * });\n * ```\n */\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'devnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'mainnet'>): AirdropFunction;\nexport function airdropFactory({ rpc, rpcSubscriptions }: AirdropFactoryConfig<'testnet'>): AirdropFunction;\nexport function airdropFactory({\n rpc,\n rpcSubscriptions,\n}: AirdropFactoryConfig): AirdropFunction {\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters[0]);\n async function confirmSignatureOnlyTransaction(\n config: Omit<\n Parameters[0],\n 'getRecentSignatureConfirmationPromise' | 'getTimeoutPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmationUntilTimeout({\n ...config,\n getRecentSignatureConfirmationPromise,\n getTimeoutPromise,\n });\n }\n return async function airdrop(config) {\n return await requestAndConfirmAirdrop_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmSignatureOnlyTransaction,\n rpc,\n });\n };\n}\n", "import { Address } from '@solana/addresses';\nimport { getU32Encoder } from '@solana/codecs';\nimport {\n isSolanaError,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SolanaError,\n} from '@solana/errors';\nimport { Instruction, InstructionWithData, isInstructionForProgram, isInstructionWithData } from '@solana/instructions';\nimport { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport { Blockhash, Commitment, Slot } from '@solana/rpc-types';\nimport {\n appendTransactionMessageInstruction,\n CompilableTransactionMessage,\n isTransactionMessageWithBlockhashLifetime,\n isTransactionMessageWithDurableNonceLifetime,\n setTransactionMessageLifetimeUsingBlockhash,\n TransactionMessage,\n TransactionMessageWithFeePayer,\n} from '@solana/transaction-messages';\nimport { compileTransaction, getBase64EncodedWireTransaction } from '@solana/transactions';\n\ntype ComputeUnitEstimateForTransactionMessageConfig = Readonly<{\n abortSignal?: AbortSignal;\n /**\n * Compute the estimate as of the highest slot that has reached this level of commitment.\n *\n * @defaultValue Whichever default is applied by the underlying {@link RpcApi} in use. For\n * example, when using an API created by a `createSolanaRpc*()` helper, the default commitment\n * is `\"confirmed\"` unless configured otherwise. Unmitigated by an API layer on the client, the\n * default commitment applied by the server is `\"finalized\"`.\n */\n commitment?: Commitment;\n /**\n * Prevents accessing stale data by enforcing that the RPC node has processed transactions up to\n * this slot\n */\n minContextSlot?: Slot;\n rpc: Rpc;\n transactionMessage: CompilableTransactionMessage | (TransactionMessage & TransactionMessageWithFeePayer);\n}>;\n\nconst COMPUTE_BUDGET_PROGRAM_ADDRESS =\n 'ComputeBudget111111111111111111111111111111' as Address<'ComputeBudget111111111111111111111111111111'>;\n// HACK: Since the `compileTransaction()` method will not compile a transaction with no lifetime we\n// supply a dummy lifetime.\nconst INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH = {\n blockhash: '11111111111111111111111111111111' as Blockhash,\n lastValidBlockHeight: 0n, // This is not included in compiled transactions; it can be anything.\n} as const;\nconst SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX = 0x02;\n\nfunction createComputeUnitLimitInstruction(units: number): Instruction {\n const data = new Uint8Array(5);\n data[0] = SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX;\n getU32Encoder().write(units, data, 1 /* offset */);\n return Object.freeze({\n data,\n programAddress: COMPUTE_BUDGET_PROGRAM_ADDRESS,\n });\n}\n\nfunction isSetComputeLimitInstruction(\n instruction: Instruction,\n): instruction is Instruction & InstructionWithData {\n return (\n isInstructionForProgram(instruction, COMPUTE_BUDGET_PROGRAM_ADDRESS) &&\n isInstructionWithData(instruction) &&\n instruction.data[0] === SET_COMPUTE_UNIT_LIMIT_INSTRUCTION_INDEX\n );\n}\n\n/**\n * Simulates a transaction message on the network and returns the number of compute units it\n * consumed during simulation.\n *\n * The estimate this function returns can be used to set a compute unit limit on the transaction.\n * Correctly budgeting a compute unit limit for your transaction message can increase the probability\n * that your transaction will be accepted for processing.\n *\n * If you don't declare a compute unit limit on your transaction, validators will assume an upper\n * limit of 200K compute units (CU) per instruction. Since validators have an incentive to pack as\n * many transactions into each block as possible, they may choose to include transactions that they\n * know will fit into the remaining compute budget for the current block over transactions that\n * might not. For this reason, you should set a compute unit limit on each of your transaction\n * messages, whenever possible.\n *\n * ## Example\n *\n * ```ts\n * import { getSetComputeLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, getComputeUnitEstimateForTransactionMessageFactory, pipe } from '@solana/kit';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const getComputeUnitEstimateForTransactionMessage =\n * getComputeUnitEstimateForTransactionMessageFactory({ rpc });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume.\n * const computeUnitsEstimate =\n * await getComputeUnitEstimateForTransactionMessage(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeLimitInstruction({ units: computeUnitsEstimate }),\n * transactionMessage,\n * );\n * ```\n *\n * > [!WARNING]\n * > The compute unit estimate is just that – an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n */\nexport async function getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n rpc,\n transactionMessage,\n ...simulateConfig\n}: ComputeUnitEstimateForTransactionMessageConfig): Promise {\n /**\n * STEP 1: Make sure the transaction message will not fail in simulation for lack of a lifetime\n * - either a recent blockhash lifetime or a nonce.\n */\n const isDurableNonceTransactionMessage = isTransactionMessageWithDurableNonceLifetime(transactionMessage);\n let compilableTransactionMessage: CompilableTransactionMessage;\n if (isDurableNonceTransactionMessage || isTransactionMessageWithBlockhashLifetime(transactionMessage)) {\n compilableTransactionMessage = transactionMessage;\n } else {\n compilableTransactionMessage = setTransactionMessageLifetimeUsingBlockhash(\n INVALID_BUT_SUFFICIENT_FOR_COMPILATION_BLOCKHASH,\n transactionMessage,\n );\n }\n /**\n * STEP 2: Ensure that the message has a `SetComputeLimit` instruction. The set compute limit\n * instruction itself consumes compute units, so it must be included in the simulation.\n */\n const existingSetComputeUnitLimitInstructionIndex =\n transactionMessage.instructions.findIndex(isSetComputeLimitInstruction);\n const maxComputeUnitLimitInstruction = createComputeUnitLimitInstruction(1_400_000 /* MAX_COMPUTE_UNIT_LIMIT */);\n if (existingSetComputeUnitLimitInstructionIndex === -1) {\n compilableTransactionMessage = appendTransactionMessageInstruction(\n maxComputeUnitLimitInstruction,\n compilableTransactionMessage,\n ) as CompilableTransactionMessage;\n } else {\n const nextInstructions = [...compilableTransactionMessage.instructions];\n nextInstructions.splice(existingSetComputeUnitLimitInstructionIndex, 1, maxComputeUnitLimitInstruction);\n compilableTransactionMessage = Object.freeze({\n ...compilableTransactionMessage,\n instructions: nextInstructions,\n } as typeof compilableTransactionMessage);\n }\n /**\n * STEP 3: Simulate the transaction to measure its compute unit consumption.\n */\n const compiledTransaction = compileTransaction(compilableTransactionMessage);\n const wireTransactionBytes = getBase64EncodedWireTransaction(compiledTransaction);\n try {\n const {\n value: { err: transactionError, unitsConsumed },\n } = await rpc\n .simulateTransaction(wireTransactionBytes, {\n ...simulateConfig,\n encoding: 'base64',\n replaceRecentBlockhash: !isDurableNonceTransactionMessage,\n sigVerify: false,\n })\n .send({ abortSignal });\n if (unitsConsumed == null) {\n // This should never be hit, because all RPCs should support `unitsConsumed` by now.\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT);\n }\n // FIXME(https://github.com/anza-xyz/agave/issues/1295): The simulation response returns\n // compute units as a u64, but the `SetComputeLimit` instruction only accepts a u32. Until\n // this changes, downcast it.\n const downcastUnitsConsumed = unitsConsumed > 4_294_967_295n ? 4_294_967_295 : Number(unitsConsumed);\n if (transactionError) {\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: transactionError,\n unitsConsumed: downcastUnitsConsumed,\n });\n }\n return downcastUnitsConsumed;\n } catch (e) {\n if (isSolanaError(e, SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT)) throw e;\n throw new SolanaError(SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT, {\n cause: e,\n });\n }\n}\n", "import { Rpc, SimulateTransactionApi } from '@solana/rpc';\nimport {\n CompilableTransactionMessage,\n TransactionMessage,\n TransactionMessageWithFeePayer,\n} from '@solana/transaction-messages';\n\nimport { getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT } from './compute-limit-internal';\n\ntype ComputeUnitEstimateForTransactionMessageFactoryConfig = Readonly<{\n /** An object that supports the {@link SimulateTransactionApi} of the Solana RPC API */\n rpc: Rpc;\n}>;\ntype ComputeUnitEstimateForTransactionMessageFunction = (\n transactionMessage: CompilableTransactionMessage | (TransactionMessage & TransactionMessageWithFeePayer),\n config?: Omit<\n Parameters[0],\n 'rpc' | 'transactionMessage'\n >,\n) => Promise;\n\n/**\n * Use this utility to estimate the actual compute unit cost of a given transaction message.\n *\n * Correctly budgeting a compute unit limit for your transaction message can increase the\n * probability that your transaction will be accepted for processing. If you don't declare a compute\n * unit limit on your transaction, validators will assume an upper limit of 200K compute units (CU)\n * per instruction.\n *\n * Since validators have an incentive to pack as many transactions into each block as possible, they\n * may choose to include transactions that they know will fit into the remaining compute budget for\n * the current block over transactions that might not. For this reason, you should set a compute\n * unit limit on each of your transaction messages, whenever possible.\n *\n * > [!WARNING]\n * > The compute unit estimate is just that -- an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n *\n * > [!INFO]\n * > In the event that a transaction message does not already have a `SetComputeUnitLimit`\n * > instruction, this function will add one before simulation. This ensures that the compute unit\n * > consumption of the `SetComputeUnitLimit` instruction itself is included in the estimate.\n *\n * @param config\n *\n * @deprecated Use `estimateComputeUnitLimitFactory` from `@solana-program/compute-budget` instead.\n *\n * @example\n * ```ts\n * import { getSetComputeUnitLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, getComputeUnitEstimateForTransactionMessageFactory, pipe } from '@solana/kit';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const getComputeUnitEstimateForTransactionMessage = getComputeUnitEstimateForTransactionMessageFactory({\n * rpc,\n * });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume. This is done by\n * // simulating the transaction and grabbing the estimated compute units from the result.\n * const computeUnitsEstimate = await getComputeUnitEstimateForTransactionMessage(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeUnitLimitInstruction({ units: computeUnitsEstimate }),\n * transactionMessage,\n * );\n * ```\n */\nexport function getComputeUnitEstimateForTransactionMessageFactory({\n rpc,\n}: ComputeUnitEstimateForTransactionMessageFactoryConfig): ComputeUnitEstimateForTransactionMessageFunction {\n return async function getComputeUnitEstimateForTransactionMessage(transactionMessage, config) {\n return await getComputeUnitEstimateForTransactionMessage_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transactionMessage,\n });\n };\n}\n", "import {\n assertAccountsDecoded,\n assertAccountsExist,\n type FetchAccountsConfig,\n fetchJsonParsedAccounts,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetMultipleAccountsApi, Rpc } from '@solana/rpc';\nimport { type AddressesByLookupTableAddress } from '@solana/transaction-messages';\n\ntype FetchedAddressLookup = {\n addresses: Address[];\n};\n\n/**\n * Given a list of addresses belonging to address lookup tables, returns a map of lookup table\n * addresses to an ordered array of the addresses they contain.\n *\n * @param rpc An object that supports the {@link GetMultipleAccountsApi} of the Solana RPC API\n * @param config\n */\nexport async function fetchAddressesForLookupTables(\n lookupTableAddresses: Address[],\n rpc: Rpc,\n config?: FetchAccountsConfig,\n): Promise {\n if (lookupTableAddresses.length === 0) {\n return {};\n }\n\n const fetchedLookupTables = await fetchJsonParsedAccounts(\n rpc,\n lookupTableAddresses,\n config,\n );\n\n assertAccountsDecoded(fetchedLookupTables);\n assertAccountsExist(fetchedLookupTables);\n\n return fetchedLookupTables.reduce((acc, lookup) => {\n return {\n ...acc,\n [lookup.address]: lookup.data.addresses,\n };\n }, {});\n}\n", "import { type FetchAccountsConfig } from '@solana/accounts';\nimport type { GetMultipleAccountsApi, Rpc } from '@solana/rpc';\nimport {\n CompilableTransactionMessage,\n CompiledTransactionMessage,\n decompileTransactionMessage,\n} from '@solana/transaction-messages';\n\nimport { fetchAddressesForLookupTables } from './fetch-lookup-tables';\n\ntype DecompileTransactionMessageFetchingLookupTablesConfig = FetchAccountsConfig & {\n lastValidBlockHeight?: bigint;\n};\n\n/**\n * Returns a {@link TransactionMessage} from a {@link CompiledTransactionMessage}. If any of the\n * accounts in the compiled message require an address lookup table to find their address, this\n * function will use the supplied RPC instance to fetch the contents of the address lookup table\n * from the network.\n *\n * @param rpc An object that supports the {@link GetMultipleAccountsApi} of the Solana RPC API\n * @param config\n */\nexport async function decompileTransactionMessageFetchingLookupTables(\n compiledTransactionMessage: CompiledTransactionMessage,\n rpc: Rpc,\n config?: DecompileTransactionMessageFetchingLookupTablesConfig,\n): Promise {\n const lookupTables =\n 'addressTableLookups' in compiledTransactionMessage &&\n compiledTransactionMessage.addressTableLookups !== undefined &&\n compiledTransactionMessage.addressTableLookups.length > 0\n ? compiledTransactionMessage.addressTableLookups\n : [];\n const lookupTableAddresses = lookupTables.map(l => l.lookupTableAddress);\n\n const { lastValidBlockHeight, ...fetchAccountsConfig } = config ?? {};\n const addressesByLookupTableAddress =\n lookupTableAddresses.length > 0\n ? await fetchAddressesForLookupTables(lookupTableAddresses, rpc, fetchAccountsConfig)\n : {};\n\n return decompileTransactionMessage(compiledTransactionMessage, {\n addressesByLookupTableAddress,\n lastValidBlockHeight,\n });\n}\n", "import type { Signature } from '@solana/keys';\nimport type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { Commitment, commitmentComparator } from '@solana/rpc-types';\nimport {\n TransactionWithLastValidBlockHeight,\n waitForDurableNonceTransactionConfirmation,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport {\n FullySignedTransaction,\n getBase64EncodedWireTransaction,\n TransactionWithDurableNonceLifetime,\n} from '@solana/transactions';\n\ninterface SendAndConfirmDurableNonceTransactionConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmDurableNonceTransaction: (\n config: Omit<\n Parameters[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise;\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime;\n}\n\ninterface SendAndConfirmTransactionWithBlockhashLifetimeConfig\n extends SendTransactionBaseConfig,\n SendTransactionConfigWithoutEncoding {\n confirmRecentTransaction: (\n config: Omit<\n Parameters[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) => Promise;\n transaction: FullySignedTransaction & TransactionWithLastValidBlockHeight;\n}\n\ninterface SendTransactionBaseConfig extends SendTransactionConfigWithoutEncoding {\n abortSignal?: AbortSignal;\n commitment: Commitment;\n rpc: Rpc;\n transaction: FullySignedTransaction;\n}\n\ntype SendTransactionConfigWithoutEncoding = Omit<\n NonNullable[1]>,\n 'encoding'\n>;\n\nfunction getSendTransactionConfigWithAdjustedPreflightCommitment(\n commitment: Commitment,\n config?: SendTransactionConfigWithoutEncoding,\n): SendTransactionConfigWithoutEncoding | void {\n if (\n // The developer has supplied no value for `preflightCommitment`.\n !config?.preflightCommitment &&\n // The value of `commitment` is lower than the server default of `preflightCommitment`.\n commitmentComparator(commitment, 'finalized' /* default value of `preflightCommitment` */) < 0\n ) {\n return {\n ...config,\n // In the common case, it is unlikely that you want to simulate a transaction at\n // `finalized` commitment when your standard of commitment for confirming the\n // transaction is lower. Cap the simulation commitment level to the level of the\n // confirmation commitment.\n preflightCommitment: commitment,\n };\n }\n // The commitment at which the developer wishes to confirm the transaction is at least as\n // high as the commitment at which they want to simulate it. Honour the config as-is.\n return config;\n}\n\nexport async function sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendTransactionBaseConfig): Promise {\n const base64EncodedWireTransaction = getBase64EncodedWireTransaction(transaction);\n return await rpc\n .sendTransaction(base64EncodedWireTransaction, {\n ...getSendTransactionConfigWithAdjustedPreflightCommitment(commitment, sendTransactionConfig),\n encoding: 'base64',\n })\n .send({ abortSignal });\n}\n\nexport async function sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmDurableNonceTransactionConfig): Promise {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmDurableNonceTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n\nexport async function sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n abortSignal,\n commitment,\n confirmRecentTransaction,\n rpc,\n transaction,\n ...sendTransactionConfig\n}: SendAndConfirmTransactionWithBlockhashLifetimeConfig): Promise {\n const transactionSignature = await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...sendTransactionConfig,\n abortSignal,\n commitment,\n rpc,\n transaction,\n });\n await confirmRecentTransaction({\n abortSignal,\n commitment,\n transaction,\n });\n return transactionSignature;\n}\n", "import type { GetAccountInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { AccountNotificationsApi, RpcSubscriptions, SignatureNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createNonceInvalidationPromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n waitForDurableNonceTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction, TransactionWithDurableNonceLifetime } from '@solana/transactions';\n\nimport { sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmDurableNonceTransactionFunction = (\n transaction: FullySignedTransaction & TransactionWithDurableNonceLifetime,\n config: Omit<\n Parameters[0],\n 'confirmDurableNonceTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise;\n\ntype SendAndConfirmDurableNonceTransactionFactoryConfig = {\n /** An object that supports the {@link GetSignatureStatusesApi} and the {@link SendTransactionApi} of the Solana RPC API */\n rpc: Rpc & { '~cluster'?: TCluster };\n /** An object that supports the {@link AccountNotificationsApi} and the {@link SignatureNotificationsApi} of the Solana RPC Subscriptions API */\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\n/**\n * Returns a function that you can call to send a nonce-based transaction to the network and to wait\n * until it has been confirmed.\n *\n * @param config\n *\n * @example\n * ```ts\n * import {\n * isSolanaError,\n * sendAndConfirmDurableNonceTransactionFactory,\n * SOLANA_ERROR__INVALID_NONCE,\n * SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND,\n * } from '@solana/kit';\n *\n * const sendAndConfirmNonceTransaction = sendAndConfirmDurableNonceTransactionFactory({ rpc, rpcSubscriptions });\n *\n * try {\n * await sendAndConfirmNonceTransaction(transaction, { commitment: 'confirmed' });\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND)) {\n * console.error(\n * 'The lifetime specified by this transaction refers to a nonce account ' +\n * `\\`${e.context.nonceAccountAddress}\\` that does not exist`,\n * );\n * } else if (isSolanaError(e, SOLANA_ERROR__INVALID_NONCE)) {\n * console.error('This transaction depends on a nonce that is no longer valid');\n * } else {\n * throw e;\n * }\n * }\n * ```\n */\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'devnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'testnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig<'mainnet'>): SendAndConfirmDurableNonceTransactionFunction;\nexport function sendAndConfirmDurableNonceTransactionFactory<\n TCluster extends 'devnet' | 'mainnet' | 'testnet' | void = void,\n>({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmDurableNonceTransactionFactoryConfig): SendAndConfirmDurableNonceTransactionFunction {\n const getNonceInvalidationPromise = createNonceInvalidationPromiseFactory({ rpc, rpcSubscriptions } as Parameters<\n typeof createNonceInvalidationPromiseFactory\n >[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters[0]);\n async function confirmDurableNonceTransaction(\n config: Omit<\n Parameters[0],\n 'getNonceInvalidationPromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForDurableNonceTransactionConfirmation({\n ...config,\n getNonceInvalidationPromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmDurableNonceTransaction(transaction, config) {\n await sendAndConfirmDurableNonceTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmDurableNonceTransaction,\n rpc,\n transaction,\n });\n };\n}\n", "import type { GetEpochInfoApi, GetSignatureStatusesApi, Rpc, SendTransactionApi } from '@solana/rpc';\nimport type { RpcSubscriptions, SignatureNotificationsApi, SlotNotificationsApi } from '@solana/rpc-subscriptions';\nimport {\n createBlockHeightExceedencePromiseFactory,\n createRecentSignatureConfirmationPromiseFactory,\n TransactionWithLastValidBlockHeight,\n waitForRecentTransactionConfirmation,\n} from '@solana/transaction-confirmation';\nimport { FullySignedTransaction } from '@solana/transactions';\n\nimport { sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFunction = (\n transaction: FullySignedTransaction & TransactionWithLastValidBlockHeight,\n config: Omit<\n Parameters[0],\n 'confirmRecentTransaction' | 'rpc' | 'transaction'\n >,\n) => Promise;\n\ntype SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig = {\n /** An object that supports the {@link GetSignatureStatusesApi} and the {@link SendTransactionApi} of the Solana RPC API */\n rpc: Rpc & { '~cluster'?: TCluster };\n /** An object that supports the {@link SignatureNotificationsApi} and the {@link SlotNotificationsApi} of the Solana RPC Subscriptions API */\n rpcSubscriptions: RpcSubscriptions & { '~cluster'?: TCluster };\n};\n\n/**\n * Returns a function that you can call to send a blockhash-based transaction to the network and to\n * wait until it has been confirmed.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { isSolanaError, sendAndConfirmTransactionFactory, SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED } from '@solana/kit';\n *\n * const sendAndConfirmTransaction = sendAndConfirmTransactionFactory({ rpc, rpcSubscriptions });\n *\n * try {\n * await sendAndConfirmTransaction(transaction, { commitment: 'confirmed' });\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED)) {\n * console.error('This transaction depends on a blockhash that has expired');\n * } else {\n * throw e;\n * }\n * }\n * ```\n */\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'devnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'testnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig<'mainnet'>): SendAndConfirmTransactionWithBlockhashLifetimeFunction;\nexport function sendAndConfirmTransactionFactory({\n rpc,\n rpcSubscriptions,\n}: SendAndConfirmTransactionWithBlockhashLifetimeFactoryConfig): SendAndConfirmTransactionWithBlockhashLifetimeFunction {\n const getBlockHeightExceedencePromise = createBlockHeightExceedencePromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters[0]);\n const getRecentSignatureConfirmationPromise = createRecentSignatureConfirmationPromiseFactory({\n rpc,\n rpcSubscriptions,\n } as Parameters[0]);\n async function confirmRecentTransaction(\n config: Omit<\n Parameters[0],\n 'getBlockHeightExceedencePromise' | 'getRecentSignatureConfirmationPromise'\n >,\n ) {\n await waitForRecentTransactionConfirmation({\n ...config,\n getBlockHeightExceedencePromise,\n getRecentSignatureConfirmationPromise,\n });\n }\n return async function sendAndConfirmTransaction(transaction, config) {\n await sendAndConfirmTransactionWithBlockhashLifetime_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n confirmRecentTransaction,\n rpc,\n transaction,\n });\n };\n}\n", "import type { Rpc, SendTransactionApi } from '@solana/rpc';\nimport { FullySignedTransaction } from '@solana/transactions';\n\nimport { sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT } from './send-transaction-internal';\n\ntype SendTransactionWithoutConfirmingFunction = (\n transaction: FullySignedTransaction,\n config: Omit[0], 'rpc' | 'transaction'>,\n) => Promise;\n\ninterface SendTransactionWithoutConfirmingFactoryConfig {\n /** An object that supports the {@link SendTransactionApi} of the Solana RPC API */\n rpc: Rpc;\n}\n\n/**\n * Returns a function that you can call to send a transaction with any kind of lifetime to the\n * network without waiting for it to be confirmed.\n *\n * @param config\n *\n * @example\n * ```ts\n * import {\n * sendTransactionWithoutConfirmingFactory,\n * SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE,\n * } from '@solana/kit';\n *\n * const sendTransaction = sendTransactionWithoutConfirmingFactory({ rpc });\n *\n * try {\n * await sendTransaction(transaction, { commitment: 'confirmed' });\n * } catch (e) {\n * if (isSolanaError(e, SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE)) {\n * console.error('The transaction failed in simulation', e.cause);\n * } else {\n * throw e;\n * }\n * }\n * ```\n */\nexport function sendTransactionWithoutConfirmingFactory({\n rpc,\n}: SendTransactionWithoutConfirmingFactoryConfig): SendTransactionWithoutConfirmingFunction {\n return async function sendTransactionWithoutConfirming(transaction, config) {\n await sendTransaction_INTERNAL_ONLY_DO_NOT_EXPORT({\n ...config,\n rpc,\n transaction,\n });\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\n\nexport type Mint = {\n /**\n * Optional authority used to mint new tokens. The mint authority may only\n * be provided during mint creation. If no mint authority is present\n * then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: Option
;\n /** Total supply of tokens. */\n supply: bigint;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts. */\n freezeAuthority: Option
;\n};\n\nexport type MintArgs = {\n /**\n * Optional authority used to mint new tokens. The mint authority may only\n * be provided during mint creation. If no mint authority is present\n * then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: OptionOrNullable
;\n /** Total supply of tokens. */\n supply: number | bigint;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts. */\n freezeAuthority: OptionOrNullable
;\n};\n\nexport function getMintEncoder(): Encoder {\n return getStructEncoder([\n [\n 'mintAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['supply', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ['isInitialized', getBooleanEncoder()],\n [\n 'freezeAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getMintDecoder(): Decoder {\n return getStructDecoder([\n [\n 'mintAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['supply', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ['isInitialized', getBooleanDecoder()],\n [\n 'freezeAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getMintCodec(): Codec {\n return combineCodec(getMintEncoder(), getMintDecoder());\n}\n\nexport function decodeMint(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeMint(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeMint(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getMintDecoder()\n );\n}\n\nexport async function fetchMint(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeMint(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMint(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMint(maybeAccount);\n}\n\nexport async function fetchAllMint(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMint(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMint(maybeAccount));\n}\n\nexport function getMintSize(): number {\n return 82;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/kit';\n\nexport type Multisig = {\n /** Number of signers required. */\n m: number;\n /** Number of valid signers. */\n n: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Signer public keys. */\n signers: Array
;\n};\n\nexport type MultisigArgs = Multisig;\n\nexport function getMultisigEncoder(): Encoder {\n return getStructEncoder([\n ['m', getU8Encoder()],\n ['n', getU8Encoder()],\n ['isInitialized', getBooleanEncoder()],\n ['signers', getArrayEncoder(getAddressEncoder(), { size: 11 })],\n ]);\n}\n\nexport function getMultisigDecoder(): Decoder {\n return getStructDecoder([\n ['m', getU8Decoder()],\n ['n', getU8Decoder()],\n ['isInitialized', getBooleanDecoder()],\n ['signers', getArrayDecoder(getAddressDecoder(), { size: 11 })],\n ]);\n}\n\nexport function getMultisigCodec(): Codec {\n return combineCodec(getMultisigEncoder(), getMultisigDecoder());\n}\n\nexport function decodeMultisig(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeMultisig(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeMultisig(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getMultisigDecoder()\n );\n}\n\nexport async function fetchMultisig(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeMultisig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMultisig(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMultisig(maybeAccount);\n}\n\nexport async function fetchAllMultisig(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMultisig(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount));\n}\n\nexport function getMultisigSize(): number {\n return 355;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum AccountState {\n Uninitialized,\n Initialized,\n Frozen,\n}\n\nexport type AccountStateArgs = AccountState;\n\nexport function getAccountStateEncoder(): Encoder {\n return getEnumEncoder(AccountState);\n}\n\nexport function getAccountStateDecoder(): Decoder {\n return getEnumDecoder(AccountState);\n}\n\nexport function getAccountStateCodec(): Codec {\n return combineCodec(getAccountStateEncoder(), getAccountStateDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum AuthorityType {\n MintTokens,\n FreezeAccount,\n AccountOwner,\n CloseAccount,\n}\n\nexport type AuthorityTypeArgs = AuthorityType;\n\nexport function getAuthorityTypeEncoder(): Encoder {\n return getEnumEncoder(AuthorityType);\n}\n\nexport function getAuthorityTypeDecoder(): Decoder {\n return getEnumDecoder(AuthorityType);\n}\n\nexport function getAuthorityTypeCodec(): Codec<\n AuthorityTypeArgs,\n AuthorityType\n> {\n return combineCodec(getAuthorityTypeEncoder(), getAuthorityTypeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n type AccountState,\n type AccountStateArgs,\n} from '../types';\n\nexport type Token = {\n /** The mint associated with this account. */\n mint: Address;\n /** The owner of this account. */\n owner: Address;\n /** The amount of tokens this account holds. */\n amount: bigint;\n /**\n * If `delegate` is `Some` then `delegated_amount` represents\n * the amount authorized by the delegate.\n */\n delegate: Option
;\n /** The account's state. */\n state: AccountState;\n /**\n * If is_native.is_some, this is a native token, and the value logs the\n * rent-exempt reserve. An Account is required to be rent-exempt, so\n * the value is used by the Processor to ensure that wrapped SOL\n * accounts do not drop below this threshold.\n */\n isNative: Option;\n /** The amount delegated. */\n delegatedAmount: bigint;\n /** Optional authority to close the account. */\n closeAuthority: Option
;\n};\n\nexport type TokenArgs = {\n /** The mint associated with this account. */\n mint: Address;\n /** The owner of this account. */\n owner: Address;\n /** The amount of tokens this account holds. */\n amount: number | bigint;\n /**\n * If `delegate` is `Some` then `delegated_amount` represents\n * the amount authorized by the delegate.\n */\n delegate: OptionOrNullable
;\n /** The account's state. */\n state: AccountStateArgs;\n /**\n * If is_native.is_some, this is a native token, and the value logs the\n * rent-exempt reserve. An Account is required to be rent-exempt, so\n * the value is used by the Processor to ensure that wrapped SOL\n * accounts do not drop below this threshold.\n */\n isNative: OptionOrNullable;\n /** The amount delegated. */\n delegatedAmount: number | bigint;\n /** Optional authority to close the account. */\n closeAuthority: OptionOrNullable
;\n};\n\nexport function getTokenEncoder(): Encoder {\n return getStructEncoder([\n ['mint', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['amount', getU64Encoder()],\n [\n 'delegate',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['state', getAccountStateEncoder()],\n [\n 'isNative',\n getOptionEncoder(getU64Encoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['delegatedAmount', getU64Encoder()],\n [\n 'closeAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getTokenDecoder(): Decoder {\n return getStructDecoder([\n ['mint', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['amount', getU64Decoder()],\n [\n 'delegate',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['state', getAccountStateDecoder()],\n [\n 'isNative',\n getOptionDecoder(getU64Decoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['delegatedAmount', getU64Decoder()],\n [\n 'closeAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getTokenCodec(): Codec {\n return combineCodec(getTokenEncoder(), getTokenDecoder());\n}\n\nexport function decodeToken(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeToken(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeToken(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getTokenDecoder()\n );\n}\n\nexport async function fetchToken(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeToken(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeToken(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeToken(maybeAccount);\n}\n\nexport async function fetchAllToken(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeToken(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeToken(maybeAccount));\n}\n\nexport function getTokenSize(): number {\n return 165;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedCreateAssociatedTokenIdempotentInstruction,\n type ParsedCreateAssociatedTokenInstruction,\n type ParsedRecoverNestedAssociatedTokenInstruction,\n} from '../instructions';\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ADDRESS =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n\nexport enum AssociatedTokenInstruction {\n CreateAssociatedToken,\n CreateAssociatedTokenIdempotent,\n RecoverNestedAssociatedToken,\n}\n\nexport function identifyAssociatedTokenInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): AssociatedTokenInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n return AssociatedTokenInstruction.CreateAssociatedToken;\n }\n if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n return AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n }\n if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n return AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n }\n throw new Error(\n 'The provided instruction could not be identified as a associatedToken instruction.'\n );\n}\n\nexport type ParsedAssociatedTokenInstruction<\n TProgram extends string = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n> =\n | ({\n instructionType: AssociatedTokenInstruction.CreateAssociatedToken;\n } & ParsedCreateAssociatedTokenInstruction)\n | ({\n instructionType: AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n } & ParsedCreateAssociatedTokenIdempotentInstruction)\n | ({\n instructionType: AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n } & ParsedRecoverNestedAssociatedTokenInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedAmountToUiAmountInstruction,\n type ParsedApproveCheckedInstruction,\n type ParsedApproveInstruction,\n type ParsedBurnCheckedInstruction,\n type ParsedBurnInstruction,\n type ParsedCloseAccountInstruction,\n type ParsedFreezeAccountInstruction,\n type ParsedGetAccountDataSizeInstruction,\n type ParsedInitializeAccount2Instruction,\n type ParsedInitializeAccount3Instruction,\n type ParsedInitializeAccountInstruction,\n type ParsedInitializeImmutableOwnerInstruction,\n type ParsedInitializeMint2Instruction,\n type ParsedInitializeMintInstruction,\n type ParsedInitializeMultisig2Instruction,\n type ParsedInitializeMultisigInstruction,\n type ParsedMintToCheckedInstruction,\n type ParsedMintToInstruction,\n type ParsedRevokeInstruction,\n type ParsedSetAuthorityInstruction,\n type ParsedSyncNativeInstruction,\n type ParsedThawAccountInstruction,\n type ParsedTransferCheckedInstruction,\n type ParsedTransferInstruction,\n type ParsedUiAmountToAmountInstruction,\n} from '../instructions';\n\nexport const TOKEN_PROGRAM_ADDRESS =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n\nexport enum TokenAccount {\n Mint,\n Token,\n Multisig,\n}\n\nexport function identifyTokenAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): TokenAccount {\n const data = 'data' in account ? account.data : account;\n if (data.length === 82) {\n return TokenAccount.Mint;\n }\n if (data.length === 165) {\n return TokenAccount.Token;\n }\n if (data.length === 355) {\n return TokenAccount.Multisig;\n }\n throw new Error(\n 'The provided account could not be identified as a token account.'\n );\n}\n\nexport enum TokenInstruction {\n InitializeMint,\n InitializeAccount,\n InitializeMultisig,\n Transfer,\n Approve,\n Revoke,\n SetAuthority,\n MintTo,\n Burn,\n CloseAccount,\n FreezeAccount,\n ThawAccount,\n TransferChecked,\n ApproveChecked,\n MintToChecked,\n BurnChecked,\n InitializeAccount2,\n SyncNative,\n InitializeAccount3,\n InitializeMultisig2,\n InitializeMint2,\n GetAccountDataSize,\n InitializeImmutableOwner,\n AmountToUiAmount,\n UiAmountToAmount,\n}\n\nexport function identifyTokenInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): TokenInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n return TokenInstruction.InitializeMint;\n }\n if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n return TokenInstruction.InitializeAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n return TokenInstruction.InitializeMultisig;\n }\n if (containsBytes(data, getU8Encoder().encode(3), 0)) {\n return TokenInstruction.Transfer;\n }\n if (containsBytes(data, getU8Encoder().encode(4), 0)) {\n return TokenInstruction.Approve;\n }\n if (containsBytes(data, getU8Encoder().encode(5), 0)) {\n return TokenInstruction.Revoke;\n }\n if (containsBytes(data, getU8Encoder().encode(6), 0)) {\n return TokenInstruction.SetAuthority;\n }\n if (containsBytes(data, getU8Encoder().encode(7), 0)) {\n return TokenInstruction.MintTo;\n }\n if (containsBytes(data, getU8Encoder().encode(8), 0)) {\n return TokenInstruction.Burn;\n }\n if (containsBytes(data, getU8Encoder().encode(9), 0)) {\n return TokenInstruction.CloseAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(10), 0)) {\n return TokenInstruction.FreezeAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(11), 0)) {\n return TokenInstruction.ThawAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(12), 0)) {\n return TokenInstruction.TransferChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(13), 0)) {\n return TokenInstruction.ApproveChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(14), 0)) {\n return TokenInstruction.MintToChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(15), 0)) {\n return TokenInstruction.BurnChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(16), 0)) {\n return TokenInstruction.InitializeAccount2;\n }\n if (containsBytes(data, getU8Encoder().encode(17), 0)) {\n return TokenInstruction.SyncNative;\n }\n if (containsBytes(data, getU8Encoder().encode(18), 0)) {\n return TokenInstruction.InitializeAccount3;\n }\n if (containsBytes(data, getU8Encoder().encode(19), 0)) {\n return TokenInstruction.InitializeMultisig2;\n }\n if (containsBytes(data, getU8Encoder().encode(20), 0)) {\n return TokenInstruction.InitializeMint2;\n }\n if (containsBytes(data, getU8Encoder().encode(21), 0)) {\n return TokenInstruction.GetAccountDataSize;\n }\n if (containsBytes(data, getU8Encoder().encode(22), 0)) {\n return TokenInstruction.InitializeImmutableOwner;\n }\n if (containsBytes(data, getU8Encoder().encode(23), 0)) {\n return TokenInstruction.AmountToUiAmount;\n }\n if (containsBytes(data, getU8Encoder().encode(24), 0)) {\n return TokenInstruction.UiAmountToAmount;\n }\n throw new Error(\n 'The provided instruction could not be identified as a token instruction.'\n );\n}\n\nexport type ParsedTokenInstruction<\n TProgram extends string = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n> =\n | ({\n instructionType: TokenInstruction.InitializeMint;\n } & ParsedInitializeMintInstruction)\n | ({\n instructionType: TokenInstruction.InitializeAccount;\n } & ParsedInitializeAccountInstruction)\n | ({\n instructionType: TokenInstruction.InitializeMultisig;\n } & ParsedInitializeMultisigInstruction)\n | ({\n instructionType: TokenInstruction.Transfer;\n } & ParsedTransferInstruction)\n | ({\n instructionType: TokenInstruction.Approve;\n } & ParsedApproveInstruction)\n | ({\n instructionType: TokenInstruction.Revoke;\n } & ParsedRevokeInstruction)\n | ({\n instructionType: TokenInstruction.SetAuthority;\n } & ParsedSetAuthorityInstruction)\n | ({\n instructionType: TokenInstruction.MintTo;\n } & ParsedMintToInstruction)\n | ({\n instructionType: TokenInstruction.Burn;\n } & ParsedBurnInstruction)\n | ({\n instructionType: TokenInstruction.CloseAccount;\n } & ParsedCloseAccountInstruction)\n | ({\n instructionType: TokenInstruction.FreezeAccount;\n } & ParsedFreezeAccountInstruction)\n | ({\n instructionType: TokenInstruction.ThawAccount;\n } & ParsedThawAccountInstruction)\n | ({\n instructionType: TokenInstruction.TransferChecked;\n } & ParsedTransferCheckedInstruction)\n | ({\n instructionType: TokenInstruction.ApproveChecked;\n } & ParsedApproveCheckedInstruction)\n | ({\n instructionType: TokenInstruction.MintToChecked;\n } & ParsedMintToCheckedInstruction)\n | ({\n instructionType: TokenInstruction.BurnChecked;\n } & ParsedBurnCheckedInstruction)\n | ({\n instructionType: TokenInstruction.InitializeAccount2;\n } & ParsedInitializeAccount2Instruction)\n | ({\n instructionType: TokenInstruction.SyncNative;\n } & ParsedSyncNativeInstruction)\n | ({\n instructionType: TokenInstruction.InitializeAccount3;\n } & ParsedInitializeAccount3Instruction)\n | ({\n instructionType: TokenInstruction.InitializeMultisig2;\n } & ParsedInitializeMultisig2Instruction)\n | ({\n instructionType: TokenInstruction.InitializeMint2;\n } & ParsedInitializeMint2Instruction)\n | ({\n instructionType: TokenInstruction.GetAccountDataSize;\n } & ParsedGetAccountDataSizeInstruction)\n | ({\n instructionType: TokenInstruction.InitializeImmutableOwner;\n } & ParsedInitializeImmutableOwnerInstruction)\n | ({\n instructionType: TokenInstruction.AmountToUiAmount;\n } & ParsedAmountToUiAmountInstruction)\n | ({\n instructionType: TokenInstruction.UiAmountToAmount;\n } & ParsedUiAmountToAmountInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidOwner: Associated token account owner does not match address derivation */\nexport const ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = 0x0; // 0\n\nexport type AssociatedTokenError = typeof ASSOCIATED_TOKEN_ERROR__INVALID_OWNER;\n\nlet associatedTokenErrorMessages:\n | Record\n | undefined;\nif (process.env.NODE_ENV !== 'production') {\n associatedTokenErrorMessages = {\n [ASSOCIATED_TOKEN_ERROR__INVALID_OWNER]: `Associated token account owner does not match address derivation`,\n };\n}\n\nexport function getAssociatedTokenErrorMessage(\n code: AssociatedTokenError\n): string {\n if (process.env.NODE_ENV !== 'production') {\n return (\n associatedTokenErrorMessages as Record\n )[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isAssociatedTokenError<\n TProgramErrorCode extends AssociatedTokenError,\n>(\n error: unknown,\n transactionMessage: {\n instructions: Record;\n },\n code?: TProgramErrorCode\n): error is SolanaError &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError(\n error,\n transactionMessage,\n ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n code\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\n\n/** NotRentExempt: Lamport balance below rent-exempt threshold */\nexport const TOKEN_ERROR__NOT_RENT_EXEMPT = 0x0; // 0\n/** InsufficientFunds: Insufficient funds */\nexport const TOKEN_ERROR__INSUFFICIENT_FUNDS = 0x1; // 1\n/** InvalidMint: Invalid Mint */\nexport const TOKEN_ERROR__INVALID_MINT = 0x2; // 2\n/** MintMismatch: Account not associated with this Mint */\nexport const TOKEN_ERROR__MINT_MISMATCH = 0x3; // 3\n/** OwnerMismatch: Owner does not match */\nexport const TOKEN_ERROR__OWNER_MISMATCH = 0x4; // 4\n/** FixedSupply: Fixed supply */\nexport const TOKEN_ERROR__FIXED_SUPPLY = 0x5; // 5\n/** AlreadyInUse: Already in use */\nexport const TOKEN_ERROR__ALREADY_IN_USE = 0x6; // 6\n/** InvalidNumberOfProvidedSigners: Invalid number of provided signers */\nexport const TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = 0x7; // 7\n/** InvalidNumberOfRequiredSigners: Invalid number of required signers */\nexport const TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = 0x8; // 8\n/** UninitializedState: State is unititialized */\nexport const TOKEN_ERROR__UNINITIALIZED_STATE = 0x9; // 9\n/** NativeNotSupported: Instruction does not support native tokens */\nexport const TOKEN_ERROR__NATIVE_NOT_SUPPORTED = 0xa; // 10\n/** NonNativeHasBalance: Non-native account can only be closed if its balance is zero */\nexport const TOKEN_ERROR__NON_NATIVE_HAS_BALANCE = 0xb; // 11\n/** InvalidInstruction: Invalid instruction */\nexport const TOKEN_ERROR__INVALID_INSTRUCTION = 0xc; // 12\n/** InvalidState: State is invalid for requested operation */\nexport const TOKEN_ERROR__INVALID_STATE = 0xd; // 13\n/** Overflow: Operation overflowed */\nexport const TOKEN_ERROR__OVERFLOW = 0xe; // 14\n/** AuthorityTypeNotSupported: Account does not support specified authority type */\nexport const TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = 0xf; // 15\n/** MintCannotFreeze: This token mint cannot freeze accounts */\nexport const TOKEN_ERROR__MINT_CANNOT_FREEZE = 0x10; // 16\n/** AccountFrozen: Account is frozen */\nexport const TOKEN_ERROR__ACCOUNT_FROZEN = 0x11; // 17\n/** MintDecimalsMismatch: The provided decimals value different from the Mint decimals */\nexport const TOKEN_ERROR__MINT_DECIMALS_MISMATCH = 0x12; // 18\n/** NonNativeNotSupported: Instruction does not support non-native tokens */\nexport const TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED = 0x13; // 19\n\nexport type TokenError =\n | typeof TOKEN_ERROR__ACCOUNT_FROZEN\n | typeof TOKEN_ERROR__ALREADY_IN_USE\n | typeof TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED\n | typeof TOKEN_ERROR__FIXED_SUPPLY\n | typeof TOKEN_ERROR__INSUFFICIENT_FUNDS\n | typeof TOKEN_ERROR__INVALID_INSTRUCTION\n | typeof TOKEN_ERROR__INVALID_MINT\n | typeof TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS\n | typeof TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS\n | typeof TOKEN_ERROR__INVALID_STATE\n | typeof TOKEN_ERROR__MINT_CANNOT_FREEZE\n | typeof TOKEN_ERROR__MINT_DECIMALS_MISMATCH\n | typeof TOKEN_ERROR__MINT_MISMATCH\n | typeof TOKEN_ERROR__NATIVE_NOT_SUPPORTED\n | typeof TOKEN_ERROR__NON_NATIVE_HAS_BALANCE\n | typeof TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED\n | typeof TOKEN_ERROR__NOT_RENT_EXEMPT\n | typeof TOKEN_ERROR__OVERFLOW\n | typeof TOKEN_ERROR__OWNER_MISMATCH\n | typeof TOKEN_ERROR__UNINITIALIZED_STATE;\n\nlet tokenErrorMessages: Record | undefined;\nif (process.env.NODE_ENV !== 'production') {\n tokenErrorMessages = {\n [TOKEN_ERROR__ACCOUNT_FROZEN]: `Account is frozen`,\n [TOKEN_ERROR__ALREADY_IN_USE]: `Already in use`,\n [TOKEN_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED]: `Account does not support specified authority type`,\n [TOKEN_ERROR__FIXED_SUPPLY]: `Fixed supply`,\n [TOKEN_ERROR__INSUFFICIENT_FUNDS]: `Insufficient funds`,\n [TOKEN_ERROR__INVALID_INSTRUCTION]: `Invalid instruction`,\n [TOKEN_ERROR__INVALID_MINT]: `Invalid Mint`,\n [TOKEN_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS]: `Invalid number of provided signers`,\n [TOKEN_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS]: `Invalid number of required signers`,\n [TOKEN_ERROR__INVALID_STATE]: `State is invalid for requested operation`,\n [TOKEN_ERROR__MINT_CANNOT_FREEZE]: `This token mint cannot freeze accounts`,\n [TOKEN_ERROR__MINT_DECIMALS_MISMATCH]: `The provided decimals value different from the Mint decimals`,\n [TOKEN_ERROR__MINT_MISMATCH]: `Account not associated with this Mint`,\n [TOKEN_ERROR__NATIVE_NOT_SUPPORTED]: `Instruction does not support native tokens`,\n [TOKEN_ERROR__NON_NATIVE_HAS_BALANCE]: `Non-native account can only be closed if its balance is zero`,\n [TOKEN_ERROR__NON_NATIVE_NOT_SUPPORTED]: `Instruction does not support non-native tokens`,\n [TOKEN_ERROR__NOT_RENT_EXEMPT]: `Lamport balance below rent-exempt threshold`,\n [TOKEN_ERROR__OVERFLOW]: `Operation overflowed`,\n [TOKEN_ERROR__OWNER_MISMATCH]: `Owner does not match`,\n [TOKEN_ERROR__UNINITIALIZED_STATE]: `State is unititialized`,\n };\n}\n\nexport function getTokenErrorMessage(code: TokenError): string {\n if (process.env.NODE_ENV !== 'production') {\n return (tokenErrorMessages as Record)[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isTokenError(\n error: unknown,\n transactionMessage: {\n instructions: Record;\n },\n code?: TProgramErrorCode\n): error is SolanaError &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError(\n error,\n transactionMessage,\n TOKEN_PROGRAM_ADDRESS,\n code\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type Address,\n type IAccountMeta,\n type IAccountSignerMeta,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): Address {\n if (!value) {\n throw new Error('Expected a Address.');\n }\n if (typeof value === 'object' && 'address' in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0];\n }\n return value as Address;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): ProgramDerivedAddress {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error('Expected a ProgramDerivedAddress.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): TransactionSigner {\n if (!value || !isTransactionSigner(value)) {\n throw new Error('Expected a TransactionSigner.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null =\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type IInstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: 'omitted' | 'programId'\n) {\n return (\n account: ResolvedAccount\n ): IAccountMeta | IAccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n): value is TransactionSigner {\n return (\n !!value &&\n typeof value === 'object' &&\n 'address' in value &&\n kitIsTransactionSigner(value)\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = 23;\n\nexport function getAmountToUiAmountDiscriminatorBytes() {\n return getU8Encoder().encode(AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR);\n}\n\nexport type AmountToUiAmountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AmountToUiAmountInstructionData = {\n discriminator: number;\n /** The amount of tokens to reformat. */\n amount: bigint;\n};\n\nexport type AmountToUiAmountInstructionDataArgs = {\n /** The amount of tokens to reformat. */\n amount: number | bigint;\n};\n\nexport function getAmountToUiAmountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getAmountToUiAmountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getAmountToUiAmountInstructionDataCodec(): Codec<\n AmountToUiAmountInstructionDataArgs,\n AmountToUiAmountInstructionData\n> {\n return combineCodec(\n getAmountToUiAmountInstructionDataEncoder(),\n getAmountToUiAmountInstructionDataDecoder()\n );\n}\n\nexport type AmountToUiAmountInput = {\n /** The mint to calculate for. */\n mint: Address;\n amount: AmountToUiAmountInstructionDataArgs['amount'];\n};\n\nexport function getAmountToUiAmountInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: AmountToUiAmountInput,\n config?: { programAddress?: TProgramAddress }\n): AmountToUiAmountInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getAmountToUiAmountInstructionDataEncoder().encode(\n args as AmountToUiAmountInstructionDataArgs\n ),\n } as AmountToUiAmountInstruction;\n\n return instruction;\n}\n\nexport type ParsedAmountToUiAmountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: AmountToUiAmountInstructionData;\n};\n\nexport function parseAmountToUiAmountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAmountToUiAmountInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getAmountToUiAmountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_DISCRIMINATOR = 4;\n\nexport function getApproveDiscriminatorBytes() {\n return getU8Encoder().encode(APPROVE_DISCRIMINATOR);\n}\n\nexport type ApproveInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountDelegate extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountDelegate extends string\n ? ReadonlyAccount\n : TAccountDelegate,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApproveInstructionData = {\n discriminator: number;\n /** The amount of tokens the delegate is approved for. */\n amount: bigint;\n};\n\nexport type ApproveInstructionDataArgs = {\n /** The amount of tokens the delegate is approved for. */\n amount: number | bigint;\n};\n\nexport function getApproveInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: APPROVE_DISCRIMINATOR })\n );\n}\n\nexport function getApproveInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getApproveInstructionDataCodec(): Codec<\n ApproveInstructionDataArgs,\n ApproveInstructionData\n> {\n return combineCodec(\n getApproveInstructionDataEncoder(),\n getApproveInstructionDataDecoder()\n );\n}\n\nexport type ApproveInput<\n TAccountSource extends string = string,\n TAccountDelegate extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The delegate. */\n delegate: Address;\n /** The source account owner or its multisignature account. */\n owner: Address | TransactionSigner;\n amount: ApproveInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getApproveInstruction<\n TAccountSource extends string,\n TAccountDelegate extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: ApproveInput,\n config?: { programAddress?: TProgramAddress }\n): ApproveInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n delegate: { value: input.delegate ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.delegate),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getApproveInstructionDataEncoder().encode(\n args as ApproveInstructionDataArgs\n ),\n } as ApproveInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedApproveInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The delegate. */\n delegate: TAccountMetas[1];\n /** The source account owner or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: ApproveInstructionData;\n};\n\nexport function parseApproveInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApproveInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n delegate: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getApproveInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_CHECKED_DISCRIMINATOR = 13;\n\nexport function getApproveCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(APPROVE_CHECKED_DISCRIMINATOR);\n}\n\nexport type ApproveCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDelegate extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDelegate extends string\n ? ReadonlyAccount\n : TAccountDelegate,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApproveCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens the delegate is approved for. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type ApproveCheckedInstructionDataArgs = {\n /** The amount of tokens the delegate is approved for. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getApproveCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: APPROVE_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getApproveCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getApproveCheckedInstructionDataCodec(): Codec<\n ApproveCheckedInstructionDataArgs,\n ApproveCheckedInstructionData\n> {\n return combineCodec(\n getApproveCheckedInstructionDataEncoder(),\n getApproveCheckedInstructionDataDecoder()\n );\n}\n\nexport type ApproveCheckedInput<\n TAccountSource extends string = string,\n TAccountMint extends string = string,\n TAccountDelegate extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The token mint. */\n mint: Address;\n /** The delegate. */\n delegate: Address;\n /** The source account owner or its multisignature account. */\n owner: Address | TransactionSigner;\n amount: ApproveCheckedInstructionDataArgs['amount'];\n decimals: ApproveCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getApproveCheckedInstruction<\n TAccountSource extends string,\n TAccountMint extends string,\n TAccountDelegate extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: ApproveCheckedInput<\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n TAccountOwner\n >,\n config?: { programAddress?: TProgramAddress }\n): ApproveCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n delegate: { value: input.delegate ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.delegate),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getApproveCheckedInstructionDataEncoder().encode(\n args as ApproveCheckedInstructionDataArgs\n ),\n } as ApproveCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedApproveCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The delegate. */\n delegate: TAccountMetas[2];\n /** The source account owner or its multisignature account. */\n owner: TAccountMetas[3];\n };\n data: ApproveCheckedInstructionData;\n};\n\nexport function parseApproveCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApproveCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n mint: getNextAccount(),\n delegate: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getApproveCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_DISCRIMINATOR = 8;\n\nexport function getBurnDiscriminatorBytes() {\n return getU8Encoder().encode(BURN_DISCRIMINATOR);\n}\n\nexport type BurnInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type BurnInstructionData = {\n /** The amount of tokens to burn. */\n discriminator: number;\n amount: bigint;\n};\n\nexport type BurnInstructionDataArgs = { amount: number | bigint };\n\nexport function getBurnInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: BURN_DISCRIMINATOR })\n );\n}\n\nexport function getBurnInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getBurnInstructionDataCodec(): Codec<\n BurnInstructionDataArgs,\n BurnInstructionData\n> {\n return combineCodec(\n getBurnInstructionDataEncoder(),\n getBurnInstructionDataDecoder()\n );\n}\n\nexport type BurnInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The account to burn from. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: BurnInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getBurnInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: BurnInput,\n config?: { programAddress?: TProgramAddress }\n): BurnInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getBurnInstructionDataEncoder().encode(\n args as BurnInstructionDataArgs\n ),\n } as BurnInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedBurnInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to burn from. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: BurnInstructionData;\n};\n\nexport function parseBurnInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedBurnInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getBurnInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_CHECKED_DISCRIMINATOR = 15;\n\nexport function getBurnCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(BURN_CHECKED_DISCRIMINATOR);\n}\n\nexport type BurnCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type BurnCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens to burn. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type BurnCheckedInstructionDataArgs = {\n /** The amount of tokens to burn. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getBurnCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: BURN_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getBurnCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getBurnCheckedInstructionDataCodec(): Codec<\n BurnCheckedInstructionDataArgs,\n BurnCheckedInstructionData\n> {\n return combineCodec(\n getBurnCheckedInstructionDataEncoder(),\n getBurnCheckedInstructionDataDecoder()\n );\n}\n\nexport type BurnCheckedInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The account to burn from. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: BurnCheckedInstructionDataArgs['amount'];\n decimals: BurnCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getBurnCheckedInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: BurnCheckedInput,\n config?: { programAddress?: TProgramAddress }\n): BurnCheckedInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getBurnCheckedInstructionDataEncoder().encode(\n args as BurnCheckedInstructionDataArgs\n ),\n } as BurnCheckedInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedBurnCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to burn from. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: BurnCheckedInstructionData;\n};\n\nexport function parseBurnCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedBurnCheckedInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getBurnCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CLOSE_ACCOUNT_DISCRIMINATOR = 9;\n\nexport function getCloseAccountDiscriminatorBytes() {\n return getU8Encoder().encode(CLOSE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type CloseAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseAccountInstructionData = { discriminator: number };\n\nexport type CloseAccountInstructionDataArgs = {};\n\nexport function getCloseAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: CLOSE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCloseAccountInstructionDataCodec(): Codec<\n CloseAccountInstructionDataArgs,\n CloseAccountInstructionData\n> {\n return combineCodec(\n getCloseAccountInstructionDataEncoder(),\n getCloseAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseAccountInput<\n TAccountAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to close. */\n account: Address;\n /** The destination account. */\n destination: Address;\n /** The account's owner or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getCloseAccountInstruction<\n TAccountAccount extends string,\n TAccountDestination extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: CloseAccountInput,\n config?: { programAddress?: TProgramAddress }\n): CloseAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountDestination,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getCloseAccountInstructionDataEncoder().encode({}),\n } as CloseAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountDestination,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedCloseAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to close. */\n account: TAccountMetas[0];\n /** The destination account. */\n destination: TAccountMetas[1];\n /** The account's owner or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: CloseAccountInstructionData;\n};\n\nexport function parseCloseAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCloseAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n destination: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getCloseAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n getAddressEncoder,\n getProgramDerivedAddress,\n type Address,\n type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type AssociatedTokenSeeds = {\n /** The wallet address of the associated token account. */\n owner: Address;\n /** The address of the token program to use. */\n tokenProgram: Address;\n /** The mint address of the associated token account. */\n mint: Address;\n};\n\nexport async function findAssociatedTokenPda(\n seeds: AssociatedTokenSeeds,\n config: { programAddress?: Address | undefined } = {}\n): Promise {\n const {\n programAddress = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n } = config;\n return await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getAddressEncoder().encode(seeds.owner),\n getAddressEncoder().encode(seeds.tokenProgram),\n getAddressEncoder().encode(seeds.mint),\n ],\n });\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = 0;\n\nexport function getCreateAssociatedTokenDiscriminatorBytes() {\n return getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type CreateAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountAta extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountAta extends string ? WritableAccount : TAccountAta,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAssociatedTokenInstructionData = { discriminator: number };\n\nexport type CreateAssociatedTokenInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCreateAssociatedTokenInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenInstructionDataCodec(): Codec<\n CreateAssociatedTokenInstructionDataArgs,\n CreateAssociatedTokenInstructionData\n> {\n return combineCodec(\n getCreateAssociatedTokenInstructionDataEncoder(),\n getCreateAssociatedTokenInstructionDataDecoder()\n );\n}\n\nexport type CreateAssociatedTokenAsyncInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata?: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getCreateAssociatedTokenInstructionAsync<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenAsyncInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n if (!accounts.ata.value) {\n accounts.ata.value = await findAssociatedTokenPda({\n owner: expectAddress(accounts.owner.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.mint.value),\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type CreateAssociatedTokenInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getCreateAssociatedTokenInstruction<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCreateAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Funding account (must be a system account). */\n payer: TAccountMetas[0];\n /** Associated token account address to be created. */\n ata: TAccountMetas[1];\n /** Wallet address for the new associated token account. */\n owner: TAccountMetas[2];\n /** The token mint for the new associated token account. */\n mint: TAccountMetas[3];\n /** System program. */\n systemProgram: TAccountMetas[4];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[5];\n };\n data: CreateAssociatedTokenInstructionData;\n};\n\nexport function parseCreateAssociatedTokenInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCreateAssociatedTokenInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n ata: getNextAccount(),\n owner: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getCreateAssociatedTokenInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = 1;\n\nexport function getCreateAssociatedTokenIdempotentDiscriminatorBytes() {\n return getU8Encoder().encode(\n CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR\n );\n}\n\nexport type CreateAssociatedTokenIdempotentInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountAta extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountAta extends string ? WritableAccount : TAccountAta,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAssociatedTokenIdempotentInstructionData = {\n discriminator: number;\n};\n\nexport type CreateAssociatedTokenIdempotentInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataCodec(): Codec<\n CreateAssociatedTokenIdempotentInstructionDataArgs,\n CreateAssociatedTokenIdempotentInstructionData\n> {\n return combineCodec(\n getCreateAssociatedTokenIdempotentInstructionDataEncoder(),\n getCreateAssociatedTokenIdempotentInstructionDataDecoder()\n );\n}\n\nexport type CreateAssociatedTokenIdempotentAsyncInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata?: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getCreateAssociatedTokenIdempotentInstructionAsync<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenIdempotentAsyncInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n if (!accounts.ata.value) {\n accounts.ata.value = await findAssociatedTokenPda({\n owner: expectAddress(accounts.owner.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.mint.value),\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type CreateAssociatedTokenIdempotentInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getCreateAssociatedTokenIdempotentInstruction<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenIdempotentInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCreateAssociatedTokenIdempotentInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Funding account (must be a system account). */\n payer: TAccountMetas[0];\n /** Associated token account address to be created. */\n ata: TAccountMetas[1];\n /** Wallet address for the new associated token account. */\n owner: TAccountMetas[2];\n /** The token mint for the new associated token account. */\n mint: TAccountMetas[3];\n /** System program. */\n systemProgram: TAccountMetas[4];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[5];\n };\n data: CreateAssociatedTokenIdempotentInstructionData;\n};\n\nexport function parseCreateAssociatedTokenIdempotentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCreateAssociatedTokenIdempotentInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n ata: getNextAccount(),\n owner: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getCreateAssociatedTokenIdempotentInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const FREEZE_ACCOUNT_DISCRIMINATOR = 10;\n\nexport function getFreezeAccountDiscriminatorBytes() {\n return getU8Encoder().encode(FREEZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type FreezeAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type FreezeAccountInstructionData = { discriminator: number };\n\nexport type FreezeAccountInstructionDataArgs = {};\n\nexport function getFreezeAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: FREEZE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getFreezeAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getFreezeAccountInstructionDataCodec(): Codec<\n FreezeAccountInstructionDataArgs,\n FreezeAccountInstructionData\n> {\n return combineCodec(\n getFreezeAccountInstructionDataEncoder(),\n getFreezeAccountInstructionDataDecoder()\n );\n}\n\nexport type FreezeAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to freeze. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The mint freeze authority or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getFreezeAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: FreezeAccountInput,\n config?: { programAddress?: TProgramAddress }\n): FreezeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getFreezeAccountInstructionDataEncoder().encode({}),\n } as FreezeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedFreezeAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to freeze. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The mint freeze authority or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: FreezeAccountInstructionData;\n};\n\nexport function parseFreezeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedFreezeAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getFreezeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = 21;\n\nexport function getGetAccountDataSizeDiscriminatorBytes() {\n return getU8Encoder().encode(GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR);\n}\n\nexport type GetAccountDataSizeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type GetAccountDataSizeInstructionData = { discriminator: number };\n\nexport type GetAccountDataSizeInstructionDataArgs = {};\n\nexport function getGetAccountDataSizeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getGetAccountDataSizeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getGetAccountDataSizeInstructionDataCodec(): Codec<\n GetAccountDataSizeInstructionDataArgs,\n GetAccountDataSizeInstructionData\n> {\n return combineCodec(\n getGetAccountDataSizeInstructionDataEncoder(),\n getGetAccountDataSizeInstructionDataDecoder()\n );\n}\n\nexport type GetAccountDataSizeInput = {\n /** The mint to calculate for. */\n mint: Address;\n};\n\nexport function getGetAccountDataSizeInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: GetAccountDataSizeInput,\n config?: { programAddress?: TProgramAddress }\n): GetAccountDataSizeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getGetAccountDataSizeInstructionDataEncoder().encode({}),\n } as GetAccountDataSizeInstruction;\n\n return instruction;\n}\n\nexport type ParsedGetAccountDataSizeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: GetAccountDataSizeInstructionData;\n};\n\nexport function parseGetAccountDataSizeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedGetAccountDataSizeInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getGetAccountDataSizeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT_DISCRIMINATOR = 1;\n\nexport function getInitializeAccountDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type InitializeAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccountInstructionData = { discriminator: number };\n\nexport type InitializeAccountInstructionDataArgs = {};\n\nexport function getInitializeAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeAccountInstructionDataCodec(): Codec<\n InitializeAccountInstructionDataArgs,\n InitializeAccountInstructionData\n> {\n return combineCodec(\n getInitializeAccountInstructionDataEncoder(),\n getInitializeAccountInstructionDataDecoder()\n );\n}\n\nexport type InitializeAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n /** The new account's owner/multisignature. */\n owner: Address;\n /** Rent sysvar. */\n rent?: Address;\n};\n\nexport function getInitializeAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeAccountInput<\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.rent),\n ],\n programAddress,\n data: getInitializeAccountInstructionDataEncoder().encode({}),\n } as InitializeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n /** The new account's owner/multisignature. */\n owner: TAccountMetas[2];\n /** Rent sysvar. */\n rent: TAccountMetas[3];\n };\n data: InitializeAccountInstructionData;\n};\n\nexport function parseInitializeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccountInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT2_DISCRIMINATOR = 16;\n\nexport function getInitializeAccount2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT2_DISCRIMINATOR);\n}\n\nexport type InitializeAccount2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccount2InstructionData = {\n discriminator: number;\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport type InitializeAccount2InstructionDataArgs = {\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport function getInitializeAccount2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT2_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccount2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ]);\n}\n\nexport function getInitializeAccount2InstructionDataCodec(): Codec<\n InitializeAccount2InstructionDataArgs,\n InitializeAccount2InstructionData\n> {\n return combineCodec(\n getInitializeAccount2InstructionDataEncoder(),\n getInitializeAccount2InstructionDataDecoder()\n );\n}\n\nexport type InitializeAccount2Input<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n /** Rent sysvar. */\n rent?: Address;\n owner: InitializeAccount2InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount2Instruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeAccount2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccount2Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.rent),\n ],\n programAddress,\n data: getInitializeAccount2InstructionDataEncoder().encode(\n args as InitializeAccount2InstructionDataArgs\n ),\n } as InitializeAccount2Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccount2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n /** Rent sysvar. */\n rent: TAccountMetas[2];\n };\n data: InitializeAccount2InstructionData;\n};\n\nexport function parseInitializeAccount2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccount2Instruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeAccount2InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT3_DISCRIMINATOR = 18;\n\nexport function getInitializeAccount3DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT3_DISCRIMINATOR);\n}\n\nexport type InitializeAccount3Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccount3InstructionData = {\n discriminator: number;\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport type InitializeAccount3InstructionDataArgs = {\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport function getInitializeAccount3InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT3_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccount3InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ]);\n}\n\nexport function getInitializeAccount3InstructionDataCodec(): Codec<\n InitializeAccount3InstructionDataArgs,\n InitializeAccount3InstructionData\n> {\n return combineCodec(\n getInitializeAccount3InstructionDataEncoder(),\n getInitializeAccount3InstructionDataDecoder()\n );\n}\n\nexport type InitializeAccount3Input<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n owner: InitializeAccount3InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount3Instruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeAccount3Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccount3Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeAccount3InstructionDataEncoder().encode(\n args as InitializeAccount3InstructionDataArgs\n ),\n } as InitializeAccount3Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccount3Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n };\n data: InitializeAccount3InstructionData;\n};\n\nexport function parseInitializeAccount3Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccount3Instruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n },\n data: getInitializeAccount3InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = 22;\n\nexport function getInitializeImmutableOwnerDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR);\n}\n\nexport type InitializeImmutableOwnerInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeImmutableOwnerInstructionData = { discriminator: number };\n\nexport type InitializeImmutableOwnerInstructionDataArgs = {};\n\nexport function getInitializeImmutableOwnerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeImmutableOwnerInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeImmutableOwnerInstructionDataCodec(): Codec<\n InitializeImmutableOwnerInstructionDataArgs,\n InitializeImmutableOwnerInstructionData\n> {\n return combineCodec(\n getInitializeImmutableOwnerInstructionDataEncoder(),\n getInitializeImmutableOwnerInstructionDataDecoder()\n );\n}\n\nexport type InitializeImmutableOwnerInput<\n TAccountAccount extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n};\n\nexport function getInitializeImmutableOwnerInstruction<\n TAccountAccount extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeImmutableOwnerInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeImmutableOwnerInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account)],\n programAddress,\n data: getInitializeImmutableOwnerInstructionDataEncoder().encode({}),\n } as InitializeImmutableOwnerInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeImmutableOwnerInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n };\n data: InitializeImmutableOwnerInstructionData;\n};\n\nexport function parseInitializeImmutableOwnerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeImmutableOwnerInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n },\n data: getInitializeImmutableOwnerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n none,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeMintDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeMintInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMintInstructionData = {\n discriminator: number;\n /** Number of decimals in token account amounts. */\n decimals: number;\n /** Minting authority. */\n mintAuthority: Address;\n /** Optional authority that can freeze token accounts. */\n freezeAuthority: Option
;\n};\n\nexport type InitializeMintInstructionDataArgs = {\n /** Number of decimals in token account amounts. */\n decimals: number;\n /** Minting authority. */\n mintAuthority: Address;\n /** Optional authority that can freeze token accounts. */\n freezeAuthority?: OptionOrNullable
;\n};\n\nexport function getInitializeMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['decimals', getU8Encoder()],\n ['mintAuthority', getAddressEncoder()],\n ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_MINT_DISCRIMINATOR,\n freezeAuthority: value.freezeAuthority ?? none(),\n })\n );\n}\n\nexport function getInitializeMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['decimals', getU8Decoder()],\n ['mintAuthority', getAddressDecoder()],\n ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getInitializeMintInstructionDataCodec(): Codec<\n InitializeMintInstructionDataArgs,\n InitializeMintInstructionData\n> {\n return combineCodec(\n getInitializeMintInstructionDataEncoder(),\n getInitializeMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeMintInput<\n TAccountMint extends string = string,\n TAccountRent extends string = string,\n> = {\n /** Token mint account. */\n mint: Address;\n /** Rent sysvar. */\n rent?: Address;\n decimals: InitializeMintInstructionDataArgs['decimals'];\n mintAuthority: InitializeMintInstructionDataArgs['mintAuthority'];\n freezeAuthority?: InitializeMintInstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMintInstruction<\n TAccountMint extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)],\n programAddress,\n data: getInitializeMintInstructionDataEncoder().encode(\n args as InitializeMintInstructionDataArgs\n ),\n } as InitializeMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMintInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Token mint account. */\n mint: TAccountMetas[0];\n /** Rent sysvar. */\n rent: TAccountMetas[1];\n };\n data: InitializeMintInstructionData;\n};\n\nexport function parseInitializeMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeMintInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n none,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT2_DISCRIMINATOR = 20;\n\nexport function getInitializeMint2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MINT2_DISCRIMINATOR);\n}\n\nexport type InitializeMint2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMint2InstructionData = {\n discriminator: number;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The authority/multisignature to mint tokens. */\n mintAuthority: Address;\n /** The optional freeze authority/multisignature of the mint. */\n freezeAuthority: Option
;\n};\n\nexport type InitializeMint2InstructionDataArgs = {\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The authority/multisignature to mint tokens. */\n mintAuthority: Address;\n /** The optional freeze authority/multisignature of the mint. */\n freezeAuthority?: OptionOrNullable
;\n};\n\nexport function getInitializeMint2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['decimals', getU8Encoder()],\n ['mintAuthority', getAddressEncoder()],\n ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_MINT2_DISCRIMINATOR,\n freezeAuthority: value.freezeAuthority ?? none(),\n })\n );\n}\n\nexport function getInitializeMint2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['decimals', getU8Decoder()],\n ['mintAuthority', getAddressDecoder()],\n ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getInitializeMint2InstructionDataCodec(): Codec<\n InitializeMint2InstructionDataArgs,\n InitializeMint2InstructionData\n> {\n return combineCodec(\n getInitializeMint2InstructionDataEncoder(),\n getInitializeMint2InstructionDataDecoder()\n );\n}\n\nexport type InitializeMint2Input = {\n /** The mint to initialize. */\n mint: Address;\n decimals: InitializeMint2InstructionDataArgs['decimals'];\n mintAuthority: InitializeMint2InstructionDataArgs['mintAuthority'];\n freezeAuthority?: InitializeMint2InstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMint2Instruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeMint2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeMint2Instruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeMint2InstructionDataEncoder().encode(\n args as InitializeMint2InstructionDataArgs\n ),\n } as InitializeMint2Instruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMint2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeMint2InstructionData;\n};\n\nexport function parseInitializeMint2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMint2Instruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeMint2InstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG_DISCRIMINATOR = 2;\n\nexport function getInitializeMultisigDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MULTISIG_DISCRIMINATOR);\n}\n\nexport type InitializeMultisigInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMultisig extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMultisig extends string\n ? WritableAccount\n : TAccountMultisig,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMultisigInstructionData = {\n discriminator: number;\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport type InitializeMultisigInstructionDataArgs = {\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport function getInitializeMultisigInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['m', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeMultisigInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['m', getU8Decoder()],\n ]);\n}\n\nexport function getInitializeMultisigInstructionDataCodec(): Codec<\n InitializeMultisigInstructionDataArgs,\n InitializeMultisigInstructionData\n> {\n return combineCodec(\n getInitializeMultisigInstructionDataEncoder(),\n getInitializeMultisigInstructionDataDecoder()\n );\n}\n\nexport type InitializeMultisigInput<\n TAccountMultisig extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The multisignature account to initialize. */\n multisig: Address;\n /** Rent sysvar. */\n rent?: Address;\n m: InitializeMultisigInstructionDataArgs['m'];\n signers: Array
;\n};\n\nexport function getInitializeMultisigInstruction<\n TAccountMultisig extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeMultisigInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMultisigInstruction<\n TProgramAddress,\n TAccountMultisig,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n multisig: { value: input.multisig ?? null, isWritable: true },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = args.signers.map((address) => ({\n address,\n role: AccountRole.READONLY,\n }));\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.multisig),\n getAccountMeta(accounts.rent),\n ...remainingAccounts,\n ],\n programAddress,\n data: getInitializeMultisigInstructionDataEncoder().encode(\n args as InitializeMultisigInstructionDataArgs\n ),\n } as InitializeMultisigInstruction<\n TProgramAddress,\n TAccountMultisig,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeMultisigInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The multisignature account to initialize. */\n multisig: TAccountMetas[0];\n /** Rent sysvar. */\n rent: TAccountMetas[1];\n };\n data: InitializeMultisigInstructionData;\n};\n\nexport function parseInitializeMultisigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMultisigInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n multisig: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeMultisigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG2_DISCRIMINATOR = 19;\n\nexport function getInitializeMultisig2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MULTISIG2_DISCRIMINATOR);\n}\n\nexport type InitializeMultisig2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMultisig extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMultisig extends string\n ? WritableAccount\n : TAccountMultisig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMultisig2InstructionData = {\n discriminator: number;\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport type InitializeMultisig2InstructionDataArgs = {\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport function getInitializeMultisig2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['m', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG2_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeMultisig2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['m', getU8Decoder()],\n ]);\n}\n\nexport function getInitializeMultisig2InstructionDataCodec(): Codec<\n InitializeMultisig2InstructionDataArgs,\n InitializeMultisig2InstructionData\n> {\n return combineCodec(\n getInitializeMultisig2InstructionDataEncoder(),\n getInitializeMultisig2InstructionDataDecoder()\n );\n}\n\nexport type InitializeMultisig2Input =\n {\n /** The multisignature account to initialize. */\n multisig: Address;\n m: InitializeMultisig2InstructionDataArgs['m'];\n signers: Array
;\n };\n\nexport function getInitializeMultisig2Instruction<\n TAccountMultisig extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: InitializeMultisig2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeMultisig2Instruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n multisig: { value: input.multisig ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = args.signers.map((address) => ({\n address,\n role: AccountRole.READONLY,\n }));\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.multisig), ...remainingAccounts],\n programAddress,\n data: getInitializeMultisig2InstructionDataEncoder().encode(\n args as InitializeMultisig2InstructionDataArgs\n ),\n } as InitializeMultisig2Instruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMultisig2Instruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The multisignature account to initialize. */\n multisig: TAccountMetas[0];\n };\n data: InitializeMultisig2InstructionData;\n};\n\nexport function parseInitializeMultisig2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMultisig2Instruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n multisig: getNextAccount(),\n },\n data: getInitializeMultisig2InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_DISCRIMINATOR = 7;\n\nexport function getMintToDiscriminatorBytes() {\n return getU8Encoder().encode(MINT_TO_DISCRIMINATOR);\n}\n\nexport type MintToInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMintAuthority extends string\n ? ReadonlyAccount\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MintToInstructionData = {\n discriminator: number;\n /** The amount of new tokens to mint. */\n amount: bigint;\n};\n\nexport type MintToInstructionDataArgs = {\n /** The amount of new tokens to mint. */\n amount: number | bigint;\n};\n\nexport function getMintToInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MINT_TO_DISCRIMINATOR })\n );\n}\n\nexport function getMintToInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getMintToInstructionDataCodec(): Codec<\n MintToInstructionDataArgs,\n MintToInstructionData\n> {\n return combineCodec(\n getMintToInstructionDataEncoder(),\n getMintToInstructionDataDecoder()\n );\n}\n\nexport type MintToInput<\n TAccountMint extends string = string,\n TAccountToken extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n /** The mint account. */\n mint: Address;\n /** The account to mint tokens to. */\n token: Address;\n /** The mint's minting authority or its multisignature account. */\n mintAuthority:\n | Address\n | TransactionSigner;\n amount: MintToInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getMintToInstruction<\n TAccountMint extends string,\n TAccountToken extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: MintToInput,\n config?: { programAddress?: TProgramAddress }\n): MintToInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n token: { value: input.token ?? null, isWritable: true },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mintAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getMintToInstructionDataEncoder().encode(\n args as MintToInstructionDataArgs\n ),\n } as MintToInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMintToInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint account. */\n mint: TAccountMetas[0];\n /** The account to mint tokens to. */\n token: TAccountMetas[1];\n /** The mint's minting authority or its multisignature account. */\n mintAuthority: TAccountMetas[2];\n };\n data: MintToInstructionData;\n};\n\nexport function parseMintToInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMintToInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n token: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getMintToInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_CHECKED_DISCRIMINATOR = 14;\n\nexport function getMintToCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(MINT_TO_CHECKED_DISCRIMINATOR);\n}\n\nexport type MintToCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMintAuthority extends string\n ? ReadonlyAccount\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MintToCheckedInstructionData = {\n discriminator: number;\n /** The amount of new tokens to mint. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type MintToCheckedInstructionDataArgs = {\n /** The amount of new tokens to mint. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getMintToCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MINT_TO_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getMintToCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getMintToCheckedInstructionDataCodec(): Codec<\n MintToCheckedInstructionDataArgs,\n MintToCheckedInstructionData\n> {\n return combineCodec(\n getMintToCheckedInstructionDataEncoder(),\n getMintToCheckedInstructionDataDecoder()\n );\n}\n\nexport type MintToCheckedInput<\n TAccountMint extends string = string,\n TAccountToken extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The account to mint tokens to. */\n token: Address;\n /** The mint's minting authority or its multisignature account. */\n mintAuthority:\n | Address\n | TransactionSigner;\n amount: MintToCheckedInstructionDataArgs['amount'];\n decimals: MintToCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getMintToCheckedInstruction<\n TAccountMint extends string,\n TAccountToken extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: MintToCheckedInput,\n config?: { programAddress?: TProgramAddress }\n): MintToCheckedInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n token: { value: input.token ?? null, isWritable: true },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mintAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getMintToCheckedInstructionDataEncoder().encode(\n args as MintToCheckedInstructionDataArgs\n ),\n } as MintToCheckedInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMintToCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The account to mint tokens to. */\n token: TAccountMetas[1];\n /** The mint's minting authority or its multisignature account. */\n mintAuthority: TAccountMetas[2];\n };\n data: MintToCheckedInstructionData;\n};\n\nexport function parseMintToCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMintToCheckedInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n token: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getMintToCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = 2;\n\nexport function getRecoverNestedAssociatedTokenDiscriminatorBytes() {\n return getU8Encoder().encode(RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type RecoverNestedAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountNestedAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountNestedTokenMintAddress extends string | IAccountMeta = string,\n TAccountDestinationAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountOwnerAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountOwnerTokenMintAddress extends string | IAccountMeta = string,\n TAccountWalletAddress extends string | IAccountMeta = string,\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountNestedAssociatedAccountAddress extends string\n ? WritableAccount\n : TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress extends string\n ? ReadonlyAccount\n : TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress extends string\n ? WritableAccount\n : TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress extends string\n ? ReadonlyAccount\n : TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress extends string\n ? ReadonlyAccount\n : TAccountOwnerTokenMintAddress,\n TAccountWalletAddress extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountWalletAddress,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RecoverNestedAssociatedTokenInstructionData = {\n discriminator: number;\n};\n\nexport type RecoverNestedAssociatedTokenInstructionDataArgs = {};\n\nexport function getRecoverNestedAssociatedTokenInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataCodec(): Codec<\n RecoverNestedAssociatedTokenInstructionDataArgs,\n RecoverNestedAssociatedTokenInstructionData\n> {\n return combineCodec(\n getRecoverNestedAssociatedTokenInstructionDataEncoder(),\n getRecoverNestedAssociatedTokenInstructionDataDecoder()\n );\n}\n\nexport type RecoverNestedAssociatedTokenAsyncInput<\n TAccountNestedAssociatedAccountAddress extends string = string,\n TAccountNestedTokenMintAddress extends string = string,\n TAccountDestinationAssociatedAccountAddress extends string = string,\n TAccountOwnerAssociatedAccountAddress extends string = string,\n TAccountOwnerTokenMintAddress extends string = string,\n TAccountWalletAddress extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress?: Address;\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: Address;\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress?: Address;\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress?: Address;\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: Address;\n /** Wallet address for the owner associated token account. */\n walletAddress: TransactionSigner;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getRecoverNestedAssociatedTokenInstructionAsync<\n TAccountNestedAssociatedAccountAddress extends string,\n TAccountNestedTokenMintAddress extends string,\n TAccountDestinationAssociatedAccountAddress extends string,\n TAccountOwnerAssociatedAccountAddress extends string,\n TAccountOwnerTokenMintAddress extends string,\n TAccountWalletAddress extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: RecoverNestedAssociatedTokenAsyncInput<\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n nestedAssociatedAccountAddress: {\n value: input.nestedAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n nestedTokenMintAddress: {\n value: input.nestedTokenMintAddress ?? null,\n isWritable: false,\n },\n destinationAssociatedAccountAddress: {\n value: input.destinationAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n ownerAssociatedAccountAddress: {\n value: input.ownerAssociatedAccountAddress ?? null,\n isWritable: false,\n },\n ownerTokenMintAddress: {\n value: input.ownerTokenMintAddress ?? null,\n isWritable: false,\n },\n walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n if (!accounts.ownerAssociatedAccountAddress.value) {\n accounts.ownerAssociatedAccountAddress.value = await findAssociatedTokenPda(\n {\n owner: expectAddress(accounts.walletAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.ownerTokenMintAddress.value),\n }\n );\n }\n if (!accounts.nestedAssociatedAccountAddress.value) {\n accounts.nestedAssociatedAccountAddress.value =\n await findAssociatedTokenPda({\n owner: expectAddress(accounts.ownerAssociatedAccountAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.nestedTokenMintAddress.value),\n });\n }\n if (!accounts.destinationAssociatedAccountAddress.value) {\n accounts.destinationAssociatedAccountAddress.value =\n await findAssociatedTokenPda({\n owner: expectAddress(accounts.walletAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.nestedTokenMintAddress.value),\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.nestedAssociatedAccountAddress),\n getAccountMeta(accounts.nestedTokenMintAddress),\n getAccountMeta(accounts.destinationAssociatedAccountAddress),\n getAccountMeta(accounts.ownerAssociatedAccountAddress),\n getAccountMeta(accounts.ownerTokenMintAddress),\n getAccountMeta(accounts.walletAddress),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n } as RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type RecoverNestedAssociatedTokenInput<\n TAccountNestedAssociatedAccountAddress extends string = string,\n TAccountNestedTokenMintAddress extends string = string,\n TAccountDestinationAssociatedAccountAddress extends string = string,\n TAccountOwnerAssociatedAccountAddress extends string = string,\n TAccountOwnerTokenMintAddress extends string = string,\n TAccountWalletAddress extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress: Address;\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: Address;\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress: Address;\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress: Address;\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: Address;\n /** Wallet address for the owner associated token account. */\n walletAddress: TransactionSigner;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getRecoverNestedAssociatedTokenInstruction<\n TAccountNestedAssociatedAccountAddress extends string,\n TAccountNestedTokenMintAddress extends string,\n TAccountDestinationAssociatedAccountAddress extends string,\n TAccountOwnerAssociatedAccountAddress extends string,\n TAccountOwnerTokenMintAddress extends string,\n TAccountWalletAddress extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: RecoverNestedAssociatedTokenInput<\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n nestedAssociatedAccountAddress: {\n value: input.nestedAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n nestedTokenMintAddress: {\n value: input.nestedTokenMintAddress ?? null,\n isWritable: false,\n },\n destinationAssociatedAccountAddress: {\n value: input.destinationAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n ownerAssociatedAccountAddress: {\n value: input.ownerAssociatedAccountAddress ?? null,\n isWritable: false,\n },\n ownerTokenMintAddress: {\n value: input.ownerTokenMintAddress ?? null,\n isWritable: false,\n },\n walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.nestedAssociatedAccountAddress),\n getAccountMeta(accounts.nestedTokenMintAddress),\n getAccountMeta(accounts.destinationAssociatedAccountAddress),\n getAccountMeta(accounts.ownerAssociatedAccountAddress),\n getAccountMeta(accounts.ownerTokenMintAddress),\n getAccountMeta(accounts.walletAddress),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n } as RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedRecoverNestedAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress: TAccountMetas[0];\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: TAccountMetas[1];\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress: TAccountMetas[2];\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress: TAccountMetas[3];\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: TAccountMetas[4];\n /** Wallet address for the owner associated token account. */\n walletAddress: TAccountMetas[5];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[6];\n };\n data: RecoverNestedAssociatedTokenInstructionData;\n};\n\nexport function parseRecoverNestedAssociatedTokenInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedRecoverNestedAssociatedTokenInstruction {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n nestedAssociatedAccountAddress: getNextAccount(),\n nestedTokenMintAddress: getNextAccount(),\n destinationAssociatedAccountAddress: getNextAccount(),\n ownerAssociatedAccountAddress: getNextAccount(),\n ownerTokenMintAddress: getNextAccount(),\n walletAddress: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getRecoverNestedAssociatedTokenInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REVOKE_DISCRIMINATOR = 5;\n\nexport function getRevokeDiscriminatorBytes() {\n return getU8Encoder().encode(REVOKE_DISCRIMINATOR);\n}\n\nexport type RevokeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevokeInstructionData = { discriminator: number };\n\nexport type RevokeInstructionDataArgs = {};\n\nexport function getRevokeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: REVOKE_DISCRIMINATOR })\n );\n}\n\nexport function getRevokeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRevokeInstructionDataCodec(): Codec<\n RevokeInstructionDataArgs,\n RevokeInstructionData\n> {\n return combineCodec(\n getRevokeInstructionDataEncoder(),\n getRevokeInstructionDataDecoder()\n );\n}\n\nexport type RevokeInput<\n TAccountSource extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The source account owner or its multisignature. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getRevokeInstruction<\n TAccountSource extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: RevokeInput,\n config?: { programAddress?: TProgramAddress }\n): RevokeInstruction<\n TProgramAddress,\n TAccountSource,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getRevokeInstructionDataEncoder().encode({}),\n } as RevokeInstruction<\n TProgramAddress,\n TAccountSource,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedRevokeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The source account owner or its multisignature. */\n owner: TAccountMetas[1];\n };\n data: RevokeInstructionData;\n};\n\nexport function parseRevokeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedRevokeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getRevokeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getAuthorityTypeDecoder,\n getAuthorityTypeEncoder,\n type AuthorityType,\n type AuthorityTypeArgs,\n} from '../types';\n\nexport const SET_AUTHORITY_DISCRIMINATOR = 6;\n\nexport function getSetAuthorityDiscriminatorBytes() {\n return getU8Encoder().encode(SET_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type SetAuthorityInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountOwned extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountOwned extends string\n ? WritableAccount\n : TAccountOwned,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetAuthorityInstructionData = {\n discriminator: number;\n /** The type of authority to update. */\n authorityType: AuthorityType;\n /** The new authority */\n newAuthority: Option
;\n};\n\nexport type SetAuthorityInstructionDataArgs = {\n /** The type of authority to update. */\n authorityType: AuthorityTypeArgs;\n /** The new authority */\n newAuthority: OptionOrNullable
;\n};\n\nexport function getSetAuthorityInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['authorityType', getAuthorityTypeEncoder()],\n ['newAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR })\n );\n}\n\nexport function getSetAuthorityInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['authorityType', getAuthorityTypeDecoder()],\n ['newAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getSetAuthorityInstructionDataCodec(): Codec<\n SetAuthorityInstructionDataArgs,\n SetAuthorityInstructionData\n> {\n return combineCodec(\n getSetAuthorityInstructionDataEncoder(),\n getSetAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetAuthorityInput<\n TAccountOwned extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The mint or account to change the authority of. */\n owned: Address;\n /** The current authority or the multisignature account of the mint or account to update. */\n owner: Address | TransactionSigner;\n authorityType: SetAuthorityInstructionDataArgs['authorityType'];\n newAuthority: SetAuthorityInstructionDataArgs['newAuthority'];\n multiSigners?: Array;\n};\n\nexport function getSetAuthorityInstruction<\n TAccountOwned extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: SetAuthorityInput,\n config?: { programAddress?: TProgramAddress }\n): SetAuthorityInstruction<\n TProgramAddress,\n TAccountOwned,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owned: { value: input.owned ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.owned),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getSetAuthorityInstructionDataEncoder().encode(\n args as SetAuthorityInstructionDataArgs\n ),\n } as SetAuthorityInstruction<\n TProgramAddress,\n TAccountOwned,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedSetAuthorityInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint or account to change the authority of. */\n owned: TAccountMetas[0];\n /** The current authority or the multisignature account of the mint or account to update. */\n owner: TAccountMetas[1];\n };\n data: SetAuthorityInstructionData;\n};\n\nexport function parseSetAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSetAuthorityInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owned: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getSetAuthorityInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SYNC_NATIVE_DISCRIMINATOR = 17;\n\nexport function getSyncNativeDiscriminatorBytes() {\n return getU8Encoder().encode(SYNC_NATIVE_DISCRIMINATOR);\n}\n\nexport type SyncNativeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SyncNativeInstructionData = { discriminator: number };\n\nexport type SyncNativeInstructionDataArgs = {};\n\nexport function getSyncNativeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: SYNC_NATIVE_DISCRIMINATOR })\n );\n}\n\nexport function getSyncNativeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getSyncNativeInstructionDataCodec(): Codec<\n SyncNativeInstructionDataArgs,\n SyncNativeInstructionData\n> {\n return combineCodec(\n getSyncNativeInstructionDataEncoder(),\n getSyncNativeInstructionDataDecoder()\n );\n}\n\nexport type SyncNativeInput = {\n /** The native token account to sync with its underlying lamports. */\n account: Address;\n};\n\nexport function getSyncNativeInstruction<\n TAccountAccount extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: SyncNativeInput,\n config?: { programAddress?: TProgramAddress }\n): SyncNativeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account)],\n programAddress,\n data: getSyncNativeInstructionDataEncoder().encode({}),\n } as SyncNativeInstruction;\n\n return instruction;\n}\n\nexport type ParsedSyncNativeInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The native token account to sync with its underlying lamports. */\n account: TAccountMetas[0];\n };\n data: SyncNativeInstructionData;\n};\n\nexport function parseSyncNativeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSyncNativeInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n },\n data: getSyncNativeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const THAW_ACCOUNT_DISCRIMINATOR = 11;\n\nexport function getThawAccountDiscriminatorBytes() {\n return getU8Encoder().encode(THAW_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type ThawAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ThawAccountInstructionData = { discriminator: number };\n\nexport type ThawAccountInstructionDataArgs = {};\n\nexport function getThawAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: THAW_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getThawAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getThawAccountInstructionDataCodec(): Codec<\n ThawAccountInstructionDataArgs,\n ThawAccountInstructionData\n> {\n return combineCodec(\n getThawAccountInstructionDataEncoder(),\n getThawAccountInstructionDataDecoder()\n );\n}\n\nexport type ThawAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to thaw. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The mint freeze authority or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getThawAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: ThawAccountInput,\n config?: { programAddress?: TProgramAddress }\n): ThawAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getThawAccountInstructionDataEncoder().encode({}),\n } as ThawAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedThawAccountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to thaw. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The mint freeze authority or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: ThawAccountInstructionData;\n};\n\nexport function parseThawAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedThawAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getThawAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_DISCRIMINATOR = 3;\n\nexport function getTransferDiscriminatorBytes() {\n return getU8Encoder().encode(TRANSFER_DISCRIMINATOR);\n}\n\nexport type TransferInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferInstructionData = {\n discriminator: number;\n /** The amount of tokens to transfer. */\n amount: bigint;\n};\n\nexport type TransferInstructionDataArgs = {\n /** The amount of tokens to transfer. */\n amount: number | bigint;\n};\n\nexport function getTransferInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR })\n );\n}\n\nexport function getTransferInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getTransferInstructionDataCodec(): Codec<\n TransferInstructionDataArgs,\n TransferInstructionData\n> {\n return combineCodec(\n getTransferInstructionDataEncoder(),\n getTransferInstructionDataDecoder()\n );\n}\n\nexport type TransferInput<\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The destination account. */\n destination: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: TransferInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getTransferInstruction<\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: TransferInput,\n config?: { programAddress?: TProgramAddress }\n): TransferInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getTransferInstructionDataEncoder().encode(\n args as TransferInstructionDataArgs\n ),\n } as TransferInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedTransferInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The destination account. */\n destination: TAccountMetas[1];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: TransferInstructionData;\n};\n\nexport function parseTransferInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedTransferInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n destination: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getTransferInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_CHECKED_DISCRIMINATOR = 12;\n\nexport function getTransferCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(TRANSFER_CHECKED_DISCRIMINATOR);\n}\n\nexport type TransferCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens to transfer. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type TransferCheckedInstructionDataArgs = {\n /** The amount of tokens to transfer. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getTransferCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TRANSFER_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getTransferCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getTransferCheckedInstructionDataCodec(): Codec<\n TransferCheckedInstructionDataArgs,\n TransferCheckedInstructionData\n> {\n return combineCodec(\n getTransferCheckedInstructionDataEncoder(),\n getTransferCheckedInstructionDataDecoder()\n );\n}\n\nexport type TransferCheckedInput<\n TAccountSource extends string = string,\n TAccountMint extends string = string,\n TAccountDestination extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The token mint. */\n mint: Address;\n /** The destination account. */\n destination: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: TransferCheckedInstructionDataArgs['amount'];\n decimals: TransferCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getTransferCheckedInstruction<\n TAccountSource extends string,\n TAccountMint extends string,\n TAccountDestination extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: TransferCheckedInput<\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): TransferCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n destination: { value: input.destination ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getTransferCheckedInstructionDataEncoder().encode(\n args as TransferCheckedInstructionDataArgs\n ),\n } as TransferCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedTransferCheckedInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The destination account. */\n destination: TAccountMetas[2];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[3];\n };\n data: TransferCheckedInstructionData;\n};\n\nexport function parseTransferCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedTransferCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n mint: getNextAccount(),\n destination: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getTransferCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = 24;\n\nexport function getUiAmountToAmountDiscriminatorBytes() {\n return getU8Encoder().encode(UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR);\n}\n\nexport type UiAmountToAmountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UiAmountToAmountInstructionData = {\n discriminator: number;\n /** The ui_amount of tokens to reformat. */\n uiAmount: string;\n};\n\nexport type UiAmountToAmountInstructionDataArgs = {\n /** The ui_amount of tokens to reformat. */\n uiAmount: string;\n};\n\nexport function getUiAmountToAmountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['uiAmount', getUtf8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getUiAmountToAmountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['uiAmount', getUtf8Decoder()],\n ]);\n}\n\nexport function getUiAmountToAmountInstructionDataCodec(): Codec<\n UiAmountToAmountInstructionDataArgs,\n UiAmountToAmountInstructionData\n> {\n return combineCodec(\n getUiAmountToAmountInstructionDataEncoder(),\n getUiAmountToAmountInstructionDataDecoder()\n );\n}\n\nexport type UiAmountToAmountInput = {\n /** The mint to calculate for. */\n mint: Address;\n uiAmount: UiAmountToAmountInstructionDataArgs['uiAmount'];\n};\n\nexport function getUiAmountToAmountInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_PROGRAM_ADDRESS,\n>(\n input: UiAmountToAmountInput,\n config?: { programAddress?: TProgramAddress }\n): UiAmountToAmountInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getUiAmountToAmountInstructionDataEncoder().encode(\n args as UiAmountToAmountInstructionDataArgs\n ),\n } as UiAmountToAmountInstruction;\n\n return instruction;\n}\n\nexport type ParsedUiAmountToAmountInstruction<\n TProgram extends string = typeof TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: UiAmountToAmountInstructionData;\n};\n\nexport function parseUiAmountToAmountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUiAmountToAmountInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getUiAmountToAmountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "import {\n type FetchAccountConfig,\n fetchEncodedAccount,\n fetchJsonParsedAccount,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/accounts';\nimport type { Address } from '@solana/addresses';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { JsonParsedSysvarAccount } from '@solana/rpc-parsed-types';\nimport type { Rpc } from '@solana/rpc-spec';\n\nexport const SYSVAR_CLOCK_ADDRESS =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\nexport const SYSVAR_EPOCH_REWARDS_ADDRESS =\n 'SysvarEpochRewards1111111111111111111111111' as Address<'SysvarEpochRewards1111111111111111111111111'>;\nexport const SYSVAR_EPOCH_SCHEDULE_ADDRESS =\n 'SysvarEpochSchedu1e111111111111111111111111' as Address<'SysvarEpochSchedu1e111111111111111111111111'>;\nexport const SYSVAR_INSTRUCTIONS_ADDRESS =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\nexport const SYSVAR_LAST_RESTART_SLOT_ADDRESS =\n 'SysvarLastRestartS1ot1111111111111111111111' as Address<'SysvarLastRestartS1ot1111111111111111111111'>;\nexport const SYSVAR_RECENT_BLOCKHASHES_ADDRESS =\n 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;\nexport const SYSVAR_RENT_ADDRESS =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HASHES_ADDRESS =\n 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\nexport const SYSVAR_SLOT_HISTORY_ADDRESS =\n 'SysvarS1otHistory11111111111111111111111111' as Address<'SysvarS1otHistory11111111111111111111111111'>;\nexport const SYSVAR_STAKE_HISTORY_ADDRESS =\n 'SysvarStakeHistory1111111111111111111111111' as Address<'SysvarStakeHistory1111111111111111111111111'>;\n\ntype SysvarAddress =\n | typeof SYSVAR_CLOCK_ADDRESS\n | typeof SYSVAR_EPOCH_REWARDS_ADDRESS\n | typeof SYSVAR_EPOCH_SCHEDULE_ADDRESS\n | typeof SYSVAR_INSTRUCTIONS_ADDRESS\n | typeof SYSVAR_LAST_RESTART_SLOT_ADDRESS\n | typeof SYSVAR_RECENT_BLOCKHASHES_ADDRESS\n | typeof SYSVAR_RENT_ADDRESS\n | typeof SYSVAR_SLOT_HASHES_ADDRESS\n | typeof SYSVAR_SLOT_HISTORY_ADDRESS\n | typeof SYSVAR_STAKE_HISTORY_ADDRESS;\n\n/**\n * Fetch an encoded sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the network cluster, the\n * blockchain history, and the executing transaction.\n */\nexport async function fetchEncodedSysvarAccount(\n rpc: Rpc,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise> {\n return await fetchEncodedAccount(rpc, address, config);\n}\n\n/**\n * Fetch a JSON-parsed sysvar account.\n *\n * Sysvars are special accounts that contain dynamically-updated data about the network cluster, the\n * blockchain history, and the executing transaction.\n */\nexport async function fetchJsonParsedSysvarAccount(\n rpc: Rpc,\n address: TAddress,\n config?: FetchAccountConfig,\n): Promise | MaybeEncodedAccount> {\n return await fetchJsonParsedAccount(rpc, address, config);\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot, UnixTimestamp } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_CLOCK_ADDRESS } from './sysvar';\n\ntype SysvarClockSize = 40;\n\n/**\n * Contains data on cluster time, including the current slot, epoch, and estimated wall-clock Unix\n * timestamp. It is updated every slot.\n */\nexport type SysvarClock = Readonly<{\n /** The current epoch */\n epoch: Epoch;\n /**\n * The Unix timestamp of the first slot in this epoch.\n *\n * In the first slot of an epoch, this timestamp is identical to the `unixTimestamp`.\n */\n epochStartTimestamp: UnixTimestamp;\n /** The most recent epoch for which the leader schedule has already been generated */\n leaderScheduleEpoch: Epoch;\n /** The current slot */\n slot: Slot;\n /** The Unix timestamp of this slot */\n unixTimestamp: UnixTimestamp;\n}>;\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarClock} to a byte array representing\n * the `Clock` sysvar's account data.\n */\nexport function getSysvarClockEncoder(): FixedSizeEncoder {\n return getStructEncoder([\n ['slot', getU64Encoder()],\n ['epochStartTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['leaderScheduleEpoch', getU64Encoder()],\n ['unixTimestamp', getI64Encoder()],\n ]) as FixedSizeEncoder;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `Clock` sysvar's\n * account data to a {@link SysvarClock}.\n */\nexport function getSysvarClockDecoder(): FixedSizeDecoder {\n return getStructDecoder([\n ['slot', getU64Decoder()],\n ['epochStartTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['leaderScheduleEpoch', getU64Decoder()],\n ['unixTimestamp', getI64Decoder()],\n ]) as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarClock}\n *\n * @see {@link getSysvarClockDecoder}\n * @see {@link getSysvarClockEncoder}\n */\nexport function getSysvarClockCodec(): FixedSizeCodec {\n return combineCodec(getSysvarClockEncoder(), getSysvarClockDecoder());\n}\n\n/**\n * Fetches the `Clock` sysvar account using any RPC that supports the {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarClock(rpc: Rpc, config?: FetchAccountConfig): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_CLOCK_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarClockDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU128Decoder,\n getU128Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n Lamports,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_REWARDS_ADDRESS } from './sysvar';\n\ntype SysvarEpochRewardsSize = 81;\n\n/**\n * Tracks whether the rewards period (including calculation and distribution) is in progress, as\n * well as the details needed to resume distribution when starting from a snapshot during the\n * rewards period.\n *\n * The sysvar is repopulated at the start of the first block of each epoch. Therefore, the sysvar\n * contains data about the current epoch until a new epoch begins.\n */\nexport type SysvarEpochRewards = Readonly<{\n /** Whether the rewards period (including calculation and distribution) is active */\n active: boolean;\n /** The rewards currently distributed for the current epoch, in {@link Lamports} */\n distributedRewards: Lamports;\n /** The starting block height of the rewards distribution in the current epoch */\n distributionStartingBlockHeight: bigint;\n /**\n * Number of partitions in the rewards distribution in the current epoch, used to generate an\n * `EpochRewardsHasher`\n */\n numPartitions: bigint;\n /**\n * The {@link Blockhash} of the parent block of the first block in the epoch, used to seed an\n * `EpochRewardsHasher`\n */\n parentBlockhash: Blockhash;\n /**\n * The total rewards points calculated for the current epoch, where points equals the sum of\n * (delegated stake * credits observed) for all delegations\n */\n totalPoints: bigint;\n /** The total rewards for the current epoch, in {@link Lamports} */\n totalRewards: Lamports;\n}>;\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarEpochRewards} to a byte array\n * representing the `EpochRewards` sysvar's account data.\n */\nexport function getSysvarEpochRewardsEncoder(): FixedSizeEncoder {\n return getStructEncoder([\n ['distributionStartingBlockHeight', getU64Encoder()],\n ['numPartitions', getU64Encoder()],\n ['parentBlockhash', getBlockhashEncoder()],\n ['totalPoints', getU128Encoder()],\n ['totalRewards', getDefaultLamportsEncoder()],\n ['distributedRewards', getDefaultLamportsEncoder()],\n ['active', getBooleanEncoder()],\n ]) as FixedSizeEncoder;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `EpochRewards`\n * sysvar's account data to a {@link SysvarEpochRewards}.\n */\nexport function getSysvarEpochRewardsDecoder(): FixedSizeDecoder {\n return getStructDecoder([\n ['distributionStartingBlockHeight', getU64Decoder()],\n ['numPartitions', getU64Decoder()],\n ['parentBlockhash', getBlockhashDecoder()],\n ['totalPoints', getU128Decoder()],\n ['totalRewards', getDefaultLamportsDecoder()],\n ['distributedRewards', getDefaultLamportsDecoder()],\n ['active', getBooleanDecoder()],\n ]) as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarEpochRewards}\n *\n * @see {@link getSysvarEpochRewardsDecoder}\n * @see {@link getSysvarEpochRewardsEncoder}\n */\nexport function getSysvarEpochRewardsCodec(): FixedSizeCodec<\n SysvarEpochRewards,\n SysvarEpochRewards,\n SysvarEpochRewardsSize\n> {\n return combineCodec(getSysvarEpochRewardsEncoder(), getSysvarEpochRewardsDecoder());\n}\n\n/**\n * Fetch the `EpochRewards` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarEpochRewards(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_REWARDS_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochRewardsDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Epoch, Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_EPOCH_SCHEDULE_ADDRESS } from './sysvar';\n\ntype SysvarEpochScheduleSize = 33;\n\n/**\n * Includes the number of slots per epoch, timing of leader schedule selection, and information\n * about epoch warm-up time.\n */\nexport type SysvarEpochSchedule = Readonly<{\n /**\n * First normal-length epoch after the warmup period,\n * log2(slotsPerEpoch) - log2(MINIMUM_SLOTS_PER_EPOCH)\n */\n firstNormalEpoch: Epoch;\n /**\n * The first slot after the warmup period, MINIMUM_SLOTS_PER_EPOCH * (2^(firstNormalEpoch) - 1)\n */\n firstNormalSlot: Slot;\n /**\n * A number of slots before beginning of an epoch to calculate a leader schedule for that\n * epoch.\n */\n leaderScheduleSlotOffset: bigint;\n /** The maximum number of slots in each epoch */\n slotsPerEpoch: bigint;\n /** Whether epochs start short and grow */\n warmup: boolean;\n}>;\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarEpochSchedule} to a byte array\n * representing the `EpochSchedule` sysvar's account data.\n */\nexport function getSysvarEpochScheduleEncoder(): FixedSizeEncoder {\n return getStructEncoder([\n ['slotsPerEpoch', getU64Encoder()],\n ['leaderScheduleSlotOffset', getU64Encoder()],\n ['warmup', getBooleanEncoder()],\n ['firstNormalEpoch', getU64Encoder()],\n ['firstNormalSlot', getU64Encoder()],\n ]) as FixedSizeEncoder;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `EpochSchedule`\n * sysvar's account data to a {@link SysvarEpochSchedule}.\n */\nexport function getSysvarEpochScheduleDecoder(): FixedSizeDecoder {\n return getStructDecoder([\n ['slotsPerEpoch', getU64Decoder()],\n ['leaderScheduleSlotOffset', getU64Decoder()],\n ['warmup', getBooleanDecoder()],\n ['firstNormalEpoch', getU64Decoder()],\n ['firstNormalSlot', getU64Decoder()],\n ]) as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarEpochSchedule}\n *\n * @see {@link getSysvarEpochScheduleDecoder}\n * @see {@link getSysvarEpochScheduleEncoder}\n */\nexport function getSysvarEpochScheduleCodec(): FixedSizeCodec<\n SysvarEpochSchedule,\n SysvarEpochSchedule,\n SysvarEpochScheduleSize\n> {\n return combineCodec(getSysvarEpochScheduleEncoder(), getSysvarEpochScheduleDecoder());\n}\n\n/**\n * Fetches the `EpochSchedule` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarEpochSchedule(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_EPOCH_SCHEDULE_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarEpochScheduleDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_LAST_RESTART_SLOT_ADDRESS } from './sysvar';\n\ntype SysvarLastRestartSlotSize = 8;\n\n/**\n * Information about the last restart slot (hard fork).\n *\n * The `LastRestartSlot` sysvar provides access to the last restart slot kept in the bank fork for\n * the slot on the fork that executes the current transaction. In case there was no fork it returns\n * `0`.\n */\nexport type SysvarLastRestartSlot = Readonly<{\n /** The last restart {@link Slot} */\n lastRestartSlot: Slot;\n}>;\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarLastRestartSlot} to a byte array\n * representing the `LastRestartSlot` sysvar's account data.\n */\nexport function getSysvarLastRestartSlotEncoder(): FixedSizeEncoder {\n return getStructEncoder([['lastRestartSlot', getU64Encoder()]]) as FixedSizeEncoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `LastRestartSlot`\n * sysvar's account data to a {@link SysvarLastRestartSlot}.\n */\nexport function getSysvarLastRestartSlotDecoder(): FixedSizeDecoder {\n return getStructDecoder([['lastRestartSlot', getU64Decoder()]]) as FixedSizeDecoder<\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n >;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarLastRestartSlot}\n *\n * @see {@link getSysvarLastRestartSlotDecoder}\n * @see {@link getSysvarLastRestartSlotEncoder}\n */\nexport function getSysvarLastRestartSlotCodec(): FixedSizeCodec<\n SysvarLastRestartSlot,\n SysvarLastRestartSlot,\n SysvarLastRestartSlotSize\n> {\n return combineCodec(getSysvarLastRestartSlotEncoder(), getSysvarLastRestartSlotDecoder());\n}\n\n/**\n * Fetches the `LastRestartSlot` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarLastRestartSlot(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_LAST_RESTART_SLOT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarLastRestartSlotDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n type Blockhash,\n getBlockhashDecoder,\n getBlockhashEncoder,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type Lamports,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RECENT_BLOCKHASHES_ADDRESS } from './sysvar';\n\ntype FeeCalculator = Readonly<{\n /**\n * The current cost of a signature.\n *\n * This amount may increase/decrease over time based on cluster processing load\n */\n lamportsPerSignature: Lamports;\n}>;\ntype Entry = Readonly<{\n blockhash: Blockhash;\n feeCalculator: FeeCalculator;\n}>;\n\n/**\n * Information about recent blocks and their fee calculators.\n *\n * @deprecated Transaction fees should be determined with the\n * {@link GetFeeForMessageApi.getFeeForMessage} RPC method. For additional context see the\n * [Comprehensive Compute Fees proposal](https://docs.anza.xyz/proposals/comprehensive-compute-fees/).\n */\nexport type SysvarRecentBlockhashes = Entry[];\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarRecentBlockhashes} to a byte array\n * representing the `RecentBlockhashes` sysvar's account data.\n *\n * @deprecated Transaction fees should be determined with the\n * {@link GetFeeForMessageApi.getFeeForMessage} RPC method. For additional context see the\n * [Comprehensive Compute Fees proposal](https://docs.anza.xyz/proposals/comprehensive-compute-fees/).\n */\nexport function getSysvarRecentBlockhashesEncoder(): VariableSizeEncoder {\n return getArrayEncoder(\n getStructEncoder([\n ['blockhash', getBlockhashEncoder()],\n ['feeCalculator', getStructEncoder([['lamportsPerSignature', getDefaultLamportsEncoder()]])],\n ]),\n );\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `RecentBlockhashes`\n * sysvar's account data to a {@link SysvarRecentBlockhashes}.\n *\n * @deprecated Transaction fees should be determined with the\n * {@link GetFeeForMessageApi.getFeeForMessage} RPC method. For additional context see the\n * [Comprehensive Compute Fees proposal](https://docs.anza.xyz/proposals/comprehensive-compute-fees/).\n */\nexport function getSysvarRecentBlockhashesDecoder(): VariableSizeDecoder {\n return getArrayDecoder(\n getStructDecoder([\n ['blockhash', getBlockhashDecoder()],\n ['feeCalculator', getStructDecoder([['lamportsPerSignature', getDefaultLamportsDecoder()]])],\n ]),\n );\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarRecentBlockhashes}\n *\n * @deprecated Transaction fees should be determined with the\n * {@link GetFeeForMessageApi.getFeeForMessage} RPC method. For additional context see the\n * [Comprehensive Compute Fees proposal](https://docs.anza.xyz/proposals/comprehensive-compute-fees/).\n *\n * @see {@link getSysvarRecentBlockhashesDecoder}\n * @see {@link getSysvarRecentBlockhashesEncoder}\n */\nexport function getSysvarRecentBlockhashesCodec(): VariableSizeCodec {\n return combineCodec(getSysvarRecentBlockhashesEncoder(), getSysvarRecentBlockhashesDecoder());\n}\n\n/**\n * Fetches the `RecentBlockhashes` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n *\n * @deprecated Transaction fees should be determined with the\n * {@link GetFeeForMessageApi.getFeeForMessage} RPC method. For additional context see the\n * [Comprehensive Compute Fees proposal](https://docs.anza.xyz/proposals/comprehensive-compute-fees/).\n */\nexport async function fetchSysvarRecentBlockhashes(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RECENT_BLOCKHASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRecentBlockhashesDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport {\n F64UnsafeSeeDocumentation,\n getDefaultLamportsDecoder,\n getDefaultLamportsEncoder,\n type Lamports,\n} from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_RENT_ADDRESS } from './sysvar';\n\ntype SysvarRentSize = 17;\n\n/**\n * Configuration for network rent.\n */\nexport type SysvarRent = Readonly<{\n /**\n * The percentage of collected rent that is burned.\n *\n * Valid values are in the range [0, 100]. The remaining percentage is distributed to\n * validators.\n */\n burnPercent: number;\n /** Amount of time (in years) a balance must include rent for the account to be rent exempt */\n exemptionThreshold: F64UnsafeSeeDocumentation;\n /** Rental rate in {@link Lamports}/byte-year. */\n lamportsPerByteYear: Lamports;\n}>;\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarRent} to a byte array representing\n * the `Rent` sysvar's account data.\n */\nexport function getSysvarRentEncoder(): FixedSizeEncoder {\n return getStructEncoder([\n ['lamportsPerByteYear', getDefaultLamportsEncoder()],\n ['exemptionThreshold', getF64Encoder()],\n ['burnPercent', getU8Encoder()],\n ]) as FixedSizeEncoder;\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `Rent` sysvar's\n * account data to a {@link SysvarRent}.\n */\nexport function getSysvarRentDecoder(): FixedSizeDecoder {\n return getStructDecoder([\n ['lamportsPerByteYear', getDefaultLamportsDecoder()],\n ['exemptionThreshold', getF64Decoder()],\n ['burnPercent', getU8Decoder()],\n ]) as FixedSizeDecoder;\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarRent}\n *\n * @see {@link getSysvarRentDecoder}\n * @see {@link getSysvarRentEncoder}\n */\nexport function getSysvarRentCodec(): FixedSizeCodec {\n return combineCodec(getSysvarRentEncoder(), getSysvarRentDecoder());\n}\n\n/**\n * Fetches the `Rent` sysvar account using any RPC that supports the {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarRent(rpc: Rpc, config?: FetchAccountConfig): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_RENT_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarRentDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { type Blockhash, getBlockhashDecoder, getBlockhashEncoder, type Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HASHES_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n hash: Blockhash;\n slot: Slot;\n}>;\n\n/** The most recent hashes of a slot's parent banks. */\nexport type SysvarSlotHashes = Entry[];\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarSlotHashes} to a byte array\n * representing the `SlotHashes` sysvar's account data.\n */\nexport function getSysvarSlotHashesEncoder(): VariableSizeEncoder {\n return getArrayEncoder(\n getStructEncoder([\n ['slot', getU64Encoder()],\n ['hash', getBlockhashEncoder()],\n ]),\n );\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `SlotHashes` sysvar's\n * account data to a {@link SysvarSlotHashes}.\n */\nexport function getSysvarSlotHashesDecoder(): VariableSizeDecoder {\n return getArrayDecoder(\n getStructDecoder([\n ['slot', getU64Decoder()],\n ['hash', getBlockhashDecoder()],\n ]),\n );\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarSlotHashes}\n *\n * @see {@link getSysvarSlotHashesDecoder}\n * @see {@link getSysvarSlotHashesEncoder}\n */\nexport function getSysvarSlotHashesCodec(): VariableSizeCodec {\n return combineCodec(getSysvarSlotHashesEncoder(), getSysvarSlotHashesDecoder());\n}\n\n/**\n * Fetches the `SlotHashes` sysvar account using any RPC that supports the {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarSlotHashes(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HASHES_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHashesDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n createDecoder,\n createEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n getArrayCodec,\n getU64Codec,\n getU64Decoder,\n getU64Encoder,\n ReadonlyUint8Array,\n} from '@solana/codecs';\nimport {\n SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE,\n SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH,\n SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS,\n SolanaError,\n} from '@solana/errors';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport type { Slot } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_SLOT_HISTORY_ADDRESS } from './sysvar';\n\nconst BITVEC_DISCRIMINATOR = 1;\n// Max number of bits in the bitvector.\n// The Solana SDK defines a constant `MAX_ENTRIES` representing the maximum\n// number of bits that can be represented by the bitvector in the `SlotHistory`\n// sysvar. This value is 1024 * 1024 = 1_048_576.\n// See https://github.com/anza-xyz/agave/blob/e0203f22dc83cb792fa97f91dbe6e924cbd08af1/sdk/program/src/slot_history.rs#L43\nconst BITVEC_NUM_BITS = 1024 * 1024;\n// The length of the bitvector in blocks.\n// At 64 bits per block, this is 1024 * 1024 / 64 = 16_384.\nconst BITVEC_LENGTH = BITVEC_NUM_BITS / 64;\n\nconst SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE =\n 1 + // Discriminator\n 8 + // bitvector length (u64)\n BITVEC_LENGTH * 8 +\n 8 + // Number of bits (u64)\n 8; // Next slot (u64)\n\nlet memoizedU64Encoder: FixedSizeEncoder | undefined;\nlet memoizedU64Decoder: FixedSizeDecoder | undefined;\nlet memoizedU64ArrayEncoder: FixedSizeEncoder | undefined;\nlet memoizedU64ArrayDecoder: FixedSizeDecoder | undefined;\n\nfunction getMemoizedU64Encoder(): FixedSizeEncoder {\n if (!memoizedU64Encoder) memoizedU64Encoder = getU64Encoder();\n return memoizedU64Encoder;\n}\nfunction getMemoizedU64Decoder(): FixedSizeDecoder {\n if (!memoizedU64Decoder) memoizedU64Decoder = getU64Decoder();\n return memoizedU64Decoder;\n}\nfunction getMemoizedU64ArrayEncoder(): FixedSizeEncoder {\n if (!memoizedU64ArrayEncoder) memoizedU64ArrayEncoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayEncoder;\n}\nfunction getMemoizedU64ArrayDecoder(): FixedSizeDecoder {\n if (!memoizedU64ArrayDecoder) memoizedU64ArrayDecoder = getArrayCodec(getU64Codec(), { size: BITVEC_LENGTH });\n return memoizedU64ArrayDecoder;\n}\n\ntype SysvarSlotHistorySize = typeof SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE;\n\n/** A bitvector of slots present over the last epoch. */\nexport type SysvarSlotHistory = {\n /**\n * A vector of 64-bit numbers which, when their bits are strung together, represent a record of\n * non-skipped slots.\n *\n * The bit in position (slot % MAX_ENTRIES) is 0 if the slot was skipped and 1 otherwise, valid\n * only when the candidate slot is less than `nextSlot` and greater than or equal to\n * `MAX_ENTRIES - nextSlot`.\n */\n bits: bigint[];\n /** The number of the slot one newer than tracked by the bitvector */\n nextSlot: Slot;\n};\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarSlotHistory} to a byte array\n * representing the `SlotHistory` sysvar's account data.\n */\nexport function getSysvarSlotHistoryEncoder(): FixedSizeEncoder {\n return createEncoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n write: (value: SysvarSlotHistory, bytes, offset) => {\n // First byte is the bitvector discriminator.\n bytes.set([BITVEC_DISCRIMINATOR], offset);\n offset += 1;\n // Next 8 bytes are the bitvector length.\n getMemoizedU64Encoder().write(BigInt(BITVEC_LENGTH), bytes, offset);\n offset += 8;\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n // Any missing bits are assumed to be 0.\n getMemoizedU64ArrayEncoder().write(value.bits, bytes, offset);\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n getMemoizedU64Encoder().write(BigInt(BITVEC_NUM_BITS), bytes, offset);\n offset += 8;\n // Next 8 bytes are the next slot.\n getMemoizedU64Encoder().write(value.nextSlot, bytes, offset);\n offset += 8;\n return offset;\n },\n });\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `SlotHistory` sysvar's\n * account data to a {@link SysvarSlotHistory}.\n */\nexport function getSysvarSlotHistoryDecoder(): FixedSizeDecoder {\n return createDecoder({\n fixedSize: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n // Byte length should be exact.\n if (bytes.length != SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH, {\n actual: bytes.length,\n expected: SLOT_HISTORY_ACCOUNT_DATA_STATIC_SIZE,\n });\n }\n // First byte is the bitvector discriminator.\n const discriminator = bytes[offset];\n offset += 1;\n if (discriminator !== BITVEC_DISCRIMINATOR) {\n throw new SolanaError(SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE, {\n actual: discriminator,\n expected: BITVEC_DISCRIMINATOR,\n });\n }\n // Next 8 bytes are the bitvector length.\n const bitVecLength = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (bitVecLength !== BigInt(BITVEC_LENGTH)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: bitVecLength,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_LENGTH,\n });\n }\n // Next `BITVEC_LENGTH` bytes are the bitvector.\n const bits = getMemoizedU64ArrayDecoder().read(bytes, offset)[0];\n offset += BITVEC_LENGTH * 8;\n // Next 8 bytes are the number of bits.\n const numBits = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n if (numBits !== BigInt(BITVEC_NUM_BITS)) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual: numBits,\n codecDescription: 'SysvarSlotHistoryCodec',\n expected: BITVEC_NUM_BITS,\n });\n }\n // Next 8 bytes are the next slot.\n const nextSlot = getMemoizedU64Decoder().read(bytes, offset)[0];\n offset += 8;\n return [\n {\n bits,\n nextSlot,\n },\n offset,\n ];\n },\n });\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarSlotHistory}\n *\n * @see {@link getSysvarSlotHistoryDecoder}\n * @see {@link getSysvarSlotHistoryEncoder}\n */\nexport function getSysvarSlotHistoryCodec(): FixedSizeCodec<\n SysvarSlotHistory,\n SysvarSlotHistory,\n SysvarSlotHistorySize\n> {\n return combineCodec(getSysvarSlotHistoryEncoder(), getSysvarSlotHistoryDecoder());\n}\n\n/**\n * Fetches the `SlotHistory` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarSlotHistory(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_SLOT_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarSlotHistoryDecoder());\n return decoded.data;\n}\n", "import { assertAccountExists, decodeAccount, type FetchAccountConfig } from '@solana/accounts';\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type VariableSizeCodec,\n type VariableSizeDecoder,\n type VariableSizeEncoder,\n} from '@solana/codecs';\nimport type { GetAccountInfoApi } from '@solana/rpc-api';\nimport type { Rpc } from '@solana/rpc-spec';\nimport { Epoch, getDefaultLamportsDecoder, getDefaultLamportsEncoder, type Lamports } from '@solana/rpc-types';\n\nimport { fetchEncodedSysvarAccount, SYSVAR_STAKE_HISTORY_ADDRESS } from './sysvar';\n\ntype Entry = Readonly<{\n /** The epoch to which this stake history entry pertains */\n epoch: Epoch;\n stakeHistory: Readonly<{\n /**\n * Sum of portion of stakes requested to be warmed up, but not fully activated yet, in\n * {@link Lamports}\n */\n activating: Lamports;\n /**\n * Sum of portion of stakes requested to be cooled down, but not fully deactivated yet, in\n * {@link Lamports}\n */\n deactivating: Lamports;\n /** Effective stake at this epoch, in {@link Lamports} */\n effective: Lamports;\n }>;\n}>;\n\n/** History of stake activations and de-activations. */\nexport type SysvarStakeHistory = Entry[];\n\n/**\n * Returns an encoder that you can use to encode a {@link SysvarStakeHistory} to a byte array\n * representing the `StakeHistory` sysvar's account data.\n */\nexport function getSysvarStakeHistoryEncoder(): VariableSizeEncoder {\n return getArrayEncoder(\n getStructEncoder([\n ['epoch', getU64Encoder()],\n [\n 'stakeHistory',\n getStructEncoder([\n ['effective', getDefaultLamportsEncoder()],\n ['activating', getDefaultLamportsEncoder()],\n ['deactivating', getDefaultLamportsEncoder()],\n ]),\n ],\n ]),\n { size: getU64Encoder() },\n );\n}\n\n/**\n * Returns a decoder that you can use to decode a byte array representing the `StakeHistory`\n * sysvar's account data to a {@link SysvarStakeHistory}.\n */\nexport function getSysvarStakeHistoryDecoder(): VariableSizeDecoder {\n return getArrayDecoder(\n getStructDecoder([\n ['epoch', getU64Decoder()],\n [\n 'stakeHistory',\n getStructDecoder([\n ['effective', getDefaultLamportsDecoder()],\n ['activating', getDefaultLamportsDecoder()],\n ['deactivating', getDefaultLamportsDecoder()],\n ]),\n ],\n ]),\n { size: getU64Decoder() },\n );\n}\n\n/**\n * Returns a codec that you can use to encode from or decode to {@link SysvarStakeHistory}\n *\n * @see {@link getSysvarStakeHistoryDecoder}\n * @see {@link getSysvarStakeHistoryEncoder}\n */\nexport function getSysvarStakeHistoryCodec(): VariableSizeCodec {\n return combineCodec(getSysvarStakeHistoryEncoder(), getSysvarStakeHistoryDecoder());\n}\n\n/**\n * Fetches the `StakeHistory` sysvar account using any RPC that supports the\n * {@link GetAccountInfoApi}.\n */\nexport async function fetchSysvarStakeHistory(\n rpc: Rpc,\n config?: FetchAccountConfig,\n): Promise {\n const account = await fetchEncodedSysvarAccount(rpc, SYSVAR_STAKE_HISTORY_ADDRESS, config);\n assertAccountExists(account);\n const decoded = decodeAccount(account, getSysvarStakeHistoryDecoder());\n return decoded.data;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum AccountState {\n Uninitialized,\n Initialized,\n Frozen,\n}\n\nexport type AccountStateArgs = AccountState;\n\nexport function getAccountStateEncoder(): Encoder {\n return getEnumEncoder(AccountState);\n}\n\nexport function getAccountStateDecoder(): Decoder {\n return getEnumDecoder(AccountState);\n}\n\nexport function getAccountStateCodec(): Codec {\n return combineCodec(getAccountStateEncoder(), getAccountStateDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum AuthorityType {\n MintTokens,\n FreezeAccount,\n AccountOwner,\n CloseAccount,\n TransferFeeConfig,\n WithheldWithdraw,\n CloseMint,\n InterestRate,\n PermanentDelegate,\n ConfidentialTransferMint,\n TransferHookProgramId,\n ConfidentialTransferFeeConfig,\n MetadataPointer,\n GroupPointer,\n GroupMemberPointer,\n ScaledUiAmount,\n Pause,\n}\n\nexport type AuthorityTypeArgs = AuthorityType;\n\nexport function getAuthorityTypeEncoder(): Encoder {\n return getEnumEncoder(AuthorityType);\n}\n\nexport function getAuthorityTypeDecoder(): Decoder {\n return getEnumDecoder(AuthorityType);\n}\n\nexport function getAuthorityTypeCodec(): Codec<\n AuthorityTypeArgs,\n AuthorityType\n> {\n return combineCodec(getAuthorityTypeEncoder(), getAuthorityTypeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** Authenticated encryption containing an account balance. */\nexport type DecryptableBalance = ReadonlyUint8Array;\n\nexport type DecryptableBalanceArgs = DecryptableBalance;\n\nexport function getDecryptableBalanceEncoder(): Encoder {\n return fixEncoderSize(getBytesEncoder(), 36);\n}\n\nexport function getDecryptableBalanceDecoder(): Decoder {\n return fixDecoderSize(getBytesDecoder(), 36);\n}\n\nexport function getDecryptableBalanceCodec(): Codec<\n DecryptableBalanceArgs,\n DecryptableBalance\n> {\n return combineCodec(\n getDecryptableBalanceEncoder(),\n getDecryptableBalanceDecoder()\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** ElGamal ciphertext containing an account balance. */\nexport type EncryptedBalance = ReadonlyUint8Array;\n\nexport type EncryptedBalanceArgs = EncryptedBalance;\n\nexport function getEncryptedBalanceEncoder(): Encoder {\n return fixEncoderSize(getBytesEncoder(), 64);\n}\n\nexport function getEncryptedBalanceDecoder(): Decoder {\n return fixDecoderSize(getBytesDecoder(), 64);\n}\n\nexport function getEncryptedBalanceCodec(): Codec<\n EncryptedBalanceArgs,\n EncryptedBalance\n> {\n return combineCodec(\n getEncryptedBalanceEncoder(),\n getEncryptedBalanceDecoder()\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getF64Decoder,\n getF64Encoder,\n getI16Decoder,\n getI16Encoder,\n getMapDecoder,\n getMapEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getUnitDecoder,\n getUnitEncoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n getEncryptedBalanceDecoder,\n getEncryptedBalanceEncoder,\n getTransferFeeDecoder,\n getTransferFeeEncoder,\n type AccountState,\n type AccountStateArgs,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n type EncryptedBalance,\n type EncryptedBalanceArgs,\n type TransferFee,\n type TransferFeeArgs,\n} from '.';\n\nexport type Extension =\n | { __kind: 'Uninitialized' }\n | {\n __kind: 'TransferFeeConfig';\n /** Optional authority to set the fee. */\n transferFeeConfigAuthority: Address;\n /** Withdraw from mint instructions must be signed by this key. */\n withdrawWithheldAuthority: Address;\n /** Withheld transfer fee tokens that have been moved to the mint for withdrawal. */\n withheldAmount: bigint;\n /** Older transfer fee, used if the current epoch < newerTransferFee.epoch. */\n olderTransferFee: TransferFee;\n /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch. */\n newerTransferFee: TransferFee;\n }\n | {\n __kind: 'TransferFeeAmount';\n /** Withheld transfer fee tokens that can be claimed by the fee authority. */\n withheldAmount: bigint;\n }\n | { __kind: 'MintCloseAuthority'; closeAuthority: Address }\n | {\n __kind: 'ConfidentialTransferMint';\n /**\n * Authority to modify the `ConfidentialTransferMint` configuration and to\n * approve new accounts (if `auto_approve_new_accounts` is true).\n *\n * The legacy Token Multisig account is not supported as the authority.\n */\n authority: Option
;\n /**\n * Indicate if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n *\n * * If `true`, no approval is required and new accounts may be used immediately.\n * * If `false`, the authority must approve newly configured accounts (see\n * `ConfidentialTransferInstruction::ConfigureAccount`).\n */\n autoApproveNewAccounts: boolean;\n /** Authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: Option
;\n }\n | {\n __kind: 'ConfidentialTransferAccount';\n /**\n * `true` if this account has been approved for use. All confidential\n * transfer operations for the account will fail until approval is granted.\n */\n approved: boolean;\n /** The public key associated with ElGamal encryption. */\n elgamalPubkey: Address;\n /** The low 16 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n pendingBalanceLow: EncryptedBalance;\n /** The high 48 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n pendingBalanceHigh: EncryptedBalance;\n /** The available balance (encrypted by `encrypiton_pubkey`). */\n availableBalance: EncryptedBalance;\n /** The decryptable available balance. */\n decryptableAvailableBalance: DecryptableBalance;\n /** If `false`, the extended account rejects any incoming confidential transfers. */\n allowConfidentialCredits: boolean;\n /** If `false`, the base account rejects any incoming transfers. */\n allowNonConfidentialCredits: boolean;\n /** The total number of `Deposit` and `Transfer` instructions that have credited `pending_balance`. */\n pendingBalanceCreditCounter: bigint;\n /**\n * The maximum number of `Deposit` and `Transfer` instructions that can\n * credit `pending_balance` before the `ApplyPendingBalance`\n * instruction is executed.\n */\n maximumPendingBalanceCreditCounter: bigint;\n /**\n * The `expected_pending_balance_credit_counter` value that was included in\n * the last `ApplyPendingBalance` instruction.\n */\n expectedPendingBalanceCreditCounter: bigint;\n /**\n * The actual `pending_balance_credit_counter` when the last\n * `ApplyPendingBalance` instruction was executed.\n */\n actualPendingBalanceCreditCounter: bigint;\n }\n | { __kind: 'DefaultAccountState'; state: AccountState }\n | { __kind: 'ImmutableOwner' }\n | {\n __kind: 'MemoTransfer';\n /** Require transfers into this account to be accompanied by a memo. */\n requireIncomingTransferMemos: boolean;\n }\n | { __kind: 'NonTransferable' }\n | {\n __kind: 'InterestBearingConfig';\n rateAuthority: Address;\n initializationTimestamp: bigint;\n preUpdateAverageRate: number;\n lastUpdateTimestamp: bigint;\n currentRate: number;\n }\n | {\n __kind: 'CpiGuard';\n /** Lock certain token operations from taking place within CPI for this account. */\n lockCpi: boolean;\n }\n | { __kind: 'PermanentDelegate'; delegate: Address }\n | { __kind: 'NonTransferableAccount' }\n | {\n __kind: 'TransferHook';\n /** The transfer hook update authority. */\n authority: Address;\n /** The transfer hook program account. */\n programId: Address;\n }\n | {\n __kind: 'TransferHookAccount';\n /**\n * Whether or not this account is currently transferring tokens\n * True during the transfer hook cpi, otherwise false.\n */\n transferring: boolean;\n }\n | {\n __kind: 'ConfidentialTransferFee';\n /** Optional authority to set the withdraw withheld authority ElGamal key. */\n authority: Option
;\n /**\n * Withheld fees from accounts must be encrypted with this ElGamal key.\n *\n * Note that whoever holds the ElGamal private key for this ElGamal public\n * key has the ability to decode any withheld fee amount that are\n * associated with accounts. When combined with the fee parameters, the\n * withheld fee amounts can reveal information about transfer amounts.\n */\n elgamalPubkey: Address;\n /** If `false`, the harvest of withheld tokens to mint is rejected. */\n harvestToMintEnabled: boolean;\n /**\n * Withheld confidential transfer fee tokens that have been moved to the\n * mint for withdrawal.\n */\n withheldAmount: EncryptedBalance;\n }\n | {\n __kind: 'ConfidentialTransferFeeAmount';\n /** Amount withheld during confidential transfers, to be harvest to the mint. */\n withheldAmount: EncryptedBalance;\n }\n | {\n __kind: 'MetadataPointer';\n /** Optional authority that can set the metadata address. */\n authority: Option
;\n /** Optional Account Address that holds the metadata. */\n metadataAddress: Option
;\n }\n | {\n __kind: 'TokenMetadata';\n /** The authority that can sign to update the metadata. */\n updateAuthority: Option
;\n /** The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint. */\n mint: Address;\n /** The longer name of the token. */\n name: string;\n /** The shortened symbol for the token. */\n symbol: string;\n /** The URI pointing to richer metadata. */\n uri: string;\n /** Any additional metadata about the token as key-value pairs. */\n additionalMetadata: Map;\n }\n | {\n __kind: 'GroupPointer';\n /** Optional authority that can set the group address. */\n authority: Option
;\n /** Optional account address that holds the group. */\n groupAddress: Option
;\n }\n | {\n __kind: 'TokenGroup';\n /** The authority that can sign to update the group. */\n updateAuthority: Option
;\n /** The associated mint, used to counter spoofing to be sure that group belongs to a particular mint. */\n mint: Address;\n /** The current number of group members. */\n size: bigint;\n /** The maximum number of group members. */\n maxSize: bigint;\n }\n | {\n __kind: 'GroupMemberPointer';\n /** Optional authority that can set the member address. */\n authority: Option
;\n /** Optional account address that holds the member. */\n memberAddress: Option
;\n }\n | {\n __kind: 'TokenGroupMember';\n /** The associated mint, used to counter spoofing to be sure that member belongs to a particular mint. */\n mint: Address;\n /** The pubkey of the `TokenGroup`. */\n group: Address;\n /** The member number. */\n memberNumber: bigint;\n }\n | { __kind: 'ConfidentialMintBurn' }\n | {\n __kind: 'ScaledUiAmountConfig';\n authority: Address;\n multiplier: number;\n newMultiplierEffectiveTimestamp: bigint;\n newMultiplier: number;\n }\n | { __kind: 'PausableConfig'; authority: Option
; paused: boolean }\n | { __kind: 'PausableAccount' };\n\nexport type ExtensionArgs =\n | { __kind: 'Uninitialized' }\n | {\n __kind: 'TransferFeeConfig';\n /** Optional authority to set the fee. */\n transferFeeConfigAuthority: Address;\n /** Withdraw from mint instructions must be signed by this key. */\n withdrawWithheldAuthority: Address;\n /** Withheld transfer fee tokens that have been moved to the mint for withdrawal. */\n withheldAmount: number | bigint;\n /** Older transfer fee, used if the current epoch < newerTransferFee.epoch. */\n olderTransferFee: TransferFeeArgs;\n /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch. */\n newerTransferFee: TransferFeeArgs;\n }\n | {\n __kind: 'TransferFeeAmount';\n /** Withheld transfer fee tokens that can be claimed by the fee authority. */\n withheldAmount: number | bigint;\n }\n | { __kind: 'MintCloseAuthority'; closeAuthority: Address }\n | {\n __kind: 'ConfidentialTransferMint';\n /**\n * Authority to modify the `ConfidentialTransferMint` configuration and to\n * approve new accounts (if `auto_approve_new_accounts` is true).\n *\n * The legacy Token Multisig account is not supported as the authority.\n */\n authority: OptionOrNullable
;\n /**\n * Indicate if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n *\n * * If `true`, no approval is required and new accounts may be used immediately.\n * * If `false`, the authority must approve newly configured accounts (see\n * `ConfidentialTransferInstruction::ConfigureAccount`).\n */\n autoApproveNewAccounts: boolean;\n /** Authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: OptionOrNullable
;\n }\n | {\n __kind: 'ConfidentialTransferAccount';\n /**\n * `true` if this account has been approved for use. All confidential\n * transfer operations for the account will fail until approval is granted.\n */\n approved: boolean;\n /** The public key associated with ElGamal encryption. */\n elgamalPubkey: Address;\n /** The low 16 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n pendingBalanceLow: EncryptedBalanceArgs;\n /** The high 48 bits of the pending balance (encrypted by `elgamal_pubkey`). */\n pendingBalanceHigh: EncryptedBalanceArgs;\n /** The available balance (encrypted by `encrypiton_pubkey`). */\n availableBalance: EncryptedBalanceArgs;\n /** The decryptable available balance. */\n decryptableAvailableBalance: DecryptableBalanceArgs;\n /** If `false`, the extended account rejects any incoming confidential transfers. */\n allowConfidentialCredits: boolean;\n /** If `false`, the base account rejects any incoming transfers. */\n allowNonConfidentialCredits: boolean;\n /** The total number of `Deposit` and `Transfer` instructions that have credited `pending_balance`. */\n pendingBalanceCreditCounter: number | bigint;\n /**\n * The maximum number of `Deposit` and `Transfer` instructions that can\n * credit `pending_balance` before the `ApplyPendingBalance`\n * instruction is executed.\n */\n maximumPendingBalanceCreditCounter: number | bigint;\n /**\n * The `expected_pending_balance_credit_counter` value that was included in\n * the last `ApplyPendingBalance` instruction.\n */\n expectedPendingBalanceCreditCounter: number | bigint;\n /**\n * The actual `pending_balance_credit_counter` when the last\n * `ApplyPendingBalance` instruction was executed.\n */\n actualPendingBalanceCreditCounter: number | bigint;\n }\n | { __kind: 'DefaultAccountState'; state: AccountStateArgs }\n | { __kind: 'ImmutableOwner' }\n | {\n __kind: 'MemoTransfer';\n /** Require transfers into this account to be accompanied by a memo. */\n requireIncomingTransferMemos: boolean;\n }\n | { __kind: 'NonTransferable' }\n | {\n __kind: 'InterestBearingConfig';\n rateAuthority: Address;\n initializationTimestamp: number | bigint;\n preUpdateAverageRate: number;\n lastUpdateTimestamp: number | bigint;\n currentRate: number;\n }\n | {\n __kind: 'CpiGuard';\n /** Lock certain token operations from taking place within CPI for this account. */\n lockCpi: boolean;\n }\n | { __kind: 'PermanentDelegate'; delegate: Address }\n | { __kind: 'NonTransferableAccount' }\n | {\n __kind: 'TransferHook';\n /** The transfer hook update authority. */\n authority: Address;\n /** The transfer hook program account. */\n programId: Address;\n }\n | {\n __kind: 'TransferHookAccount';\n /**\n * Whether or not this account is currently transferring tokens\n * True during the transfer hook cpi, otherwise false.\n */\n transferring: boolean;\n }\n | {\n __kind: 'ConfidentialTransferFee';\n /** Optional authority to set the withdraw withheld authority ElGamal key. */\n authority: OptionOrNullable
;\n /**\n * Withheld fees from accounts must be encrypted with this ElGamal key.\n *\n * Note that whoever holds the ElGamal private key for this ElGamal public\n * key has the ability to decode any withheld fee amount that are\n * associated with accounts. When combined with the fee parameters, the\n * withheld fee amounts can reveal information about transfer amounts.\n */\n elgamalPubkey: Address;\n /** If `false`, the harvest of withheld tokens to mint is rejected. */\n harvestToMintEnabled: boolean;\n /**\n * Withheld confidential transfer fee tokens that have been moved to the\n * mint for withdrawal.\n */\n withheldAmount: EncryptedBalanceArgs;\n }\n | {\n __kind: 'ConfidentialTransferFeeAmount';\n /** Amount withheld during confidential transfers, to be harvest to the mint. */\n withheldAmount: EncryptedBalanceArgs;\n }\n | {\n __kind: 'MetadataPointer';\n /** Optional authority that can set the metadata address. */\n authority: OptionOrNullable
;\n /** Optional Account Address that holds the metadata. */\n metadataAddress: OptionOrNullable
;\n }\n | {\n __kind: 'TokenMetadata';\n /** The authority that can sign to update the metadata. */\n updateAuthority: OptionOrNullable
;\n /** The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint. */\n mint: Address;\n /** The longer name of the token. */\n name: string;\n /** The shortened symbol for the token. */\n symbol: string;\n /** The URI pointing to richer metadata. */\n uri: string;\n /** Any additional metadata about the token as key-value pairs. */\n additionalMetadata: Map;\n }\n | {\n __kind: 'GroupPointer';\n /** Optional authority that can set the group address. */\n authority: OptionOrNullable
;\n /** Optional account address that holds the group. */\n groupAddress: OptionOrNullable
;\n }\n | {\n __kind: 'TokenGroup';\n /** The authority that can sign to update the group. */\n updateAuthority: OptionOrNullable
;\n /** The associated mint, used to counter spoofing to be sure that group belongs to a particular mint. */\n mint: Address;\n /** The current number of group members. */\n size: number | bigint;\n /** The maximum number of group members. */\n maxSize: number | bigint;\n }\n | {\n __kind: 'GroupMemberPointer';\n /** Optional authority that can set the member address. */\n authority: OptionOrNullable
;\n /** Optional account address that holds the member. */\n memberAddress: OptionOrNullable
;\n }\n | {\n __kind: 'TokenGroupMember';\n /** The associated mint, used to counter spoofing to be sure that member belongs to a particular mint. */\n mint: Address;\n /** The pubkey of the `TokenGroup`. */\n group: Address;\n /** The member number. */\n memberNumber: number | bigint;\n }\n | { __kind: 'ConfidentialMintBurn' }\n | {\n __kind: 'ScaledUiAmountConfig';\n authority: Address;\n multiplier: number;\n newMultiplierEffectiveTimestamp: number | bigint;\n newMultiplier: number;\n }\n | {\n __kind: 'PausableConfig';\n authority: OptionOrNullable
;\n paused: boolean;\n }\n | { __kind: 'PausableAccount' };\n\nexport function getExtensionEncoder(): Encoder {\n return getDiscriminatedUnionEncoder(\n [\n ['Uninitialized', getUnitEncoder()],\n [\n 'TransferFeeConfig',\n addEncoderSizePrefix(\n getStructEncoder([\n ['transferFeeConfigAuthority', getAddressEncoder()],\n ['withdrawWithheldAuthority', getAddressEncoder()],\n ['withheldAmount', getU64Encoder()],\n ['olderTransferFee', getTransferFeeEncoder()],\n ['newerTransferFee', getTransferFeeEncoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'TransferFeeAmount',\n addEncoderSizePrefix(\n getStructEncoder([['withheldAmount', getU64Encoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'MintCloseAuthority',\n addEncoderSizePrefix(\n getStructEncoder([['closeAuthority', getAddressEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'ConfidentialTransferMint',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['autoApproveNewAccounts', getBooleanEncoder()],\n [\n 'auditorElgamalPubkey',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'ConfidentialTransferAccount',\n addEncoderSizePrefix(\n getStructEncoder([\n ['approved', getBooleanEncoder()],\n ['elgamalPubkey', getAddressEncoder()],\n ['pendingBalanceLow', getEncryptedBalanceEncoder()],\n ['pendingBalanceHigh', getEncryptedBalanceEncoder()],\n ['availableBalance', getEncryptedBalanceEncoder()],\n ['decryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ['allowConfidentialCredits', getBooleanEncoder()],\n ['allowNonConfidentialCredits', getBooleanEncoder()],\n ['pendingBalanceCreditCounter', getU64Encoder()],\n ['maximumPendingBalanceCreditCounter', getU64Encoder()],\n ['expectedPendingBalanceCreditCounter', getU64Encoder()],\n ['actualPendingBalanceCreditCounter', getU64Encoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'DefaultAccountState',\n addEncoderSizePrefix(\n getStructEncoder([['state', getAccountStateEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'ImmutableOwner',\n addEncoderSizePrefix(getStructEncoder([]), getU16Encoder()),\n ],\n [\n 'MemoTransfer',\n addEncoderSizePrefix(\n getStructEncoder([\n ['requireIncomingTransferMemos', getBooleanEncoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'NonTransferable',\n addEncoderSizePrefix(getStructEncoder([]), getU16Encoder()),\n ],\n [\n 'InterestBearingConfig',\n addEncoderSizePrefix(\n getStructEncoder([\n ['rateAuthority', getAddressEncoder()],\n ['initializationTimestamp', getU64Encoder()],\n ['preUpdateAverageRate', getI16Encoder()],\n ['lastUpdateTimestamp', getU64Encoder()],\n ['currentRate', getI16Encoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'CpiGuard',\n addEncoderSizePrefix(\n getStructEncoder([['lockCpi', getBooleanEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'PermanentDelegate',\n addEncoderSizePrefix(\n getStructEncoder([['delegate', getAddressEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'NonTransferableAccount',\n addEncoderSizePrefix(getStructEncoder([]), getU16Encoder()),\n ],\n [\n 'TransferHook',\n addEncoderSizePrefix(\n getStructEncoder([\n ['authority', getAddressEncoder()],\n ['programId', getAddressEncoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'TransferHookAccount',\n addEncoderSizePrefix(\n getStructEncoder([['transferring', getBooleanEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'ConfidentialTransferFee',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['elgamalPubkey', getAddressEncoder()],\n ['harvestToMintEnabled', getBooleanEncoder()],\n ['withheldAmount', getEncryptedBalanceEncoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'ConfidentialTransferFeeAmount',\n addEncoderSizePrefix(\n getStructEncoder([['withheldAmount', getEncryptedBalanceEncoder()]]),\n getU16Encoder()\n ),\n ],\n [\n 'MetadataPointer',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'metadataAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'TokenMetadata',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'updateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['mint', getAddressEncoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n [\n 'additionalMetadata',\n getMapEncoder(\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())\n ),\n ],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'GroupPointer',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'groupAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'TokenGroup',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'updateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['mint', getAddressEncoder()],\n ['size', getU64Encoder()],\n ['maxSize', getU64Encoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'GroupMemberPointer',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'memberAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'TokenGroupMember',\n addEncoderSizePrefix(\n getStructEncoder([\n ['mint', getAddressEncoder()],\n ['group', getAddressEncoder()],\n ['memberNumber', getU64Encoder()],\n ]),\n getU16Encoder()\n ),\n ],\n ['ConfidentialMintBurn', getUnitEncoder()],\n [\n 'ScaledUiAmountConfig',\n addEncoderSizePrefix(\n getStructEncoder([\n ['authority', getAddressEncoder()],\n ['multiplier', getF64Encoder()],\n ['newMultiplierEffectiveTimestamp', getU64Encoder()],\n ['newMultiplier', getF64Encoder()],\n ]),\n getU16Encoder()\n ),\n ],\n [\n 'PausableConfig',\n addEncoderSizePrefix(\n getStructEncoder([\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['paused', getBooleanEncoder()],\n ]),\n getU16Encoder()\n ),\n ],\n ['PausableAccount', getUnitEncoder()],\n ],\n { size: getU16Encoder() }\n );\n}\n\nexport function getExtensionDecoder(): Decoder {\n return getDiscriminatedUnionDecoder(\n [\n ['Uninitialized', getUnitDecoder()],\n [\n 'TransferFeeConfig',\n addDecoderSizePrefix(\n getStructDecoder([\n ['transferFeeConfigAuthority', getAddressDecoder()],\n ['withdrawWithheldAuthority', getAddressDecoder()],\n ['withheldAmount', getU64Decoder()],\n ['olderTransferFee', getTransferFeeDecoder()],\n ['newerTransferFee', getTransferFeeDecoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'TransferFeeAmount',\n addDecoderSizePrefix(\n getStructDecoder([['withheldAmount', getU64Decoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'MintCloseAuthority',\n addDecoderSizePrefix(\n getStructDecoder([['closeAuthority', getAddressDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'ConfidentialTransferMint',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['autoApproveNewAccounts', getBooleanDecoder()],\n [\n 'auditorElgamalPubkey',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'ConfidentialTransferAccount',\n addDecoderSizePrefix(\n getStructDecoder([\n ['approved', getBooleanDecoder()],\n ['elgamalPubkey', getAddressDecoder()],\n ['pendingBalanceLow', getEncryptedBalanceDecoder()],\n ['pendingBalanceHigh', getEncryptedBalanceDecoder()],\n ['availableBalance', getEncryptedBalanceDecoder()],\n ['decryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ['allowConfidentialCredits', getBooleanDecoder()],\n ['allowNonConfidentialCredits', getBooleanDecoder()],\n ['pendingBalanceCreditCounter', getU64Decoder()],\n ['maximumPendingBalanceCreditCounter', getU64Decoder()],\n ['expectedPendingBalanceCreditCounter', getU64Decoder()],\n ['actualPendingBalanceCreditCounter', getU64Decoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'DefaultAccountState',\n addDecoderSizePrefix(\n getStructDecoder([['state', getAccountStateDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'ImmutableOwner',\n addDecoderSizePrefix(getStructDecoder([]), getU16Decoder()),\n ],\n [\n 'MemoTransfer',\n addDecoderSizePrefix(\n getStructDecoder([\n ['requireIncomingTransferMemos', getBooleanDecoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'NonTransferable',\n addDecoderSizePrefix(getStructDecoder([]), getU16Decoder()),\n ],\n [\n 'InterestBearingConfig',\n addDecoderSizePrefix(\n getStructDecoder([\n ['rateAuthority', getAddressDecoder()],\n ['initializationTimestamp', getU64Decoder()],\n ['preUpdateAverageRate', getI16Decoder()],\n ['lastUpdateTimestamp', getU64Decoder()],\n ['currentRate', getI16Decoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'CpiGuard',\n addDecoderSizePrefix(\n getStructDecoder([['lockCpi', getBooleanDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'PermanentDelegate',\n addDecoderSizePrefix(\n getStructDecoder([['delegate', getAddressDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'NonTransferableAccount',\n addDecoderSizePrefix(getStructDecoder([]), getU16Decoder()),\n ],\n [\n 'TransferHook',\n addDecoderSizePrefix(\n getStructDecoder([\n ['authority', getAddressDecoder()],\n ['programId', getAddressDecoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'TransferHookAccount',\n addDecoderSizePrefix(\n getStructDecoder([['transferring', getBooleanDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'ConfidentialTransferFee',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['elgamalPubkey', getAddressDecoder()],\n ['harvestToMintEnabled', getBooleanDecoder()],\n ['withheldAmount', getEncryptedBalanceDecoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'ConfidentialTransferFeeAmount',\n addDecoderSizePrefix(\n getStructDecoder([['withheldAmount', getEncryptedBalanceDecoder()]]),\n getU16Decoder()\n ),\n ],\n [\n 'MetadataPointer',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'metadataAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'TokenMetadata',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'updateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['mint', getAddressDecoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n [\n 'additionalMetadata',\n getMapDecoder(\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())\n ),\n ],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'GroupPointer',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'groupAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'TokenGroup',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'updateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['mint', getAddressDecoder()],\n ['size', getU64Decoder()],\n ['maxSize', getU64Decoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'GroupMemberPointer',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'memberAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'TokenGroupMember',\n addDecoderSizePrefix(\n getStructDecoder([\n ['mint', getAddressDecoder()],\n ['group', getAddressDecoder()],\n ['memberNumber', getU64Decoder()],\n ]),\n getU16Decoder()\n ),\n ],\n ['ConfidentialMintBurn', getUnitDecoder()],\n [\n 'ScaledUiAmountConfig',\n addDecoderSizePrefix(\n getStructDecoder([\n ['authority', getAddressDecoder()],\n ['multiplier', getF64Decoder()],\n ['newMultiplierEffectiveTimestamp', getU64Decoder()],\n ['newMultiplier', getF64Decoder()],\n ]),\n getU16Decoder()\n ),\n ],\n [\n 'PausableConfig',\n addDecoderSizePrefix(\n getStructDecoder([\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['paused', getBooleanDecoder()],\n ]),\n getU16Decoder()\n ),\n ],\n ['PausableAccount', getUnitDecoder()],\n ],\n { size: getU16Decoder() }\n );\n}\n\nexport function getExtensionCodec(): Codec {\n return combineCodec(getExtensionEncoder(), getExtensionDecoder());\n}\n\n// Data Enum Helpers.\nexport function extension(\n kind: 'Uninitialized'\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TransferFeeConfig',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TransferFeeConfig'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TransferFeeAmount',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TransferFeeAmount'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'MintCloseAuthority',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'MintCloseAuthority'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'ConfidentialTransferMint',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferMint'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferMint'\n>;\nexport function extension(\n kind: 'ConfidentialTransferAccount',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferAccount'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferAccount'\n>;\nexport function extension(\n kind: 'DefaultAccountState',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'DefaultAccountState'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'ImmutableOwner',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ImmutableOwner'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'MemoTransfer',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'MemoTransfer'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'NonTransferable',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'NonTransferable'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'InterestBearingConfig',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'InterestBearingConfig'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'InterestBearingConfig'\n>;\nexport function extension(\n kind: 'CpiGuard',\n data: GetDiscriminatedUnionVariantContent\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'PermanentDelegate',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'PermanentDelegate'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'NonTransferableAccount',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'NonTransferableAccount'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'NonTransferableAccount'\n>;\nexport function extension(\n kind: 'TransferHook',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TransferHook'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TransferHookAccount',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TransferHookAccount'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'ConfidentialTransferFee',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferFee'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferFee'\n>;\nexport function extension(\n kind: 'ConfidentialTransferFeeAmount',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferFeeAmount'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ConfidentialTransferFeeAmount'\n>;\nexport function extension(\n kind: 'MetadataPointer',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'MetadataPointer'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TokenMetadata',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TokenMetadata'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'GroupPointer',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'GroupPointer'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TokenGroup',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TokenGroup'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'GroupMemberPointer',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'GroupMemberPointer'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'TokenGroupMember',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'TokenGroupMember'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'ConfidentialMintBurn'\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ConfidentialMintBurn'\n>;\nexport function extension(\n kind: 'ScaledUiAmountConfig',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'ScaledUiAmountConfig'\n >\n): GetDiscriminatedUnionVariant<\n ExtensionArgs,\n '__kind',\n 'ScaledUiAmountConfig'\n>;\nexport function extension(\n kind: 'PausableConfig',\n data: GetDiscriminatedUnionVariantContent<\n ExtensionArgs,\n '__kind',\n 'PausableConfig'\n >\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: 'PausableAccount'\n): GetDiscriminatedUnionVariant;\nexport function extension(\n kind: K,\n data?: Data\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isExtension(\n kind: K,\n value: Extension\n): value is Extension & { __kind: K } {\n return value.__kind === kind;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n getU16Decoder,\n getU16Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\n/**\n * Extensions that can be applied to mints or accounts. Mint extensions must\n * only be applied to mint accounts, and account extensions must only be\n * applied to token holding accounts.\n */\n\nexport enum ExtensionType {\n Uninitialized,\n TransferFeeConfig,\n TransferFeeAmount,\n MintCloseAuthority,\n ConfidentialTransferMint,\n ConfidentialTransferAccount,\n DefaultAccountState,\n ImmutableOwner,\n MemoTransfer,\n NonTransferable,\n InterestBearingConfig,\n CpiGuard,\n PermanentDelegate,\n NonTransferableAccount,\n TransferHook,\n TransferHookAccount,\n ConfidentialTransferFee,\n ConfidentialTransferFeeAmount,\n ScaledUiAmountConfig,\n PausableConfig,\n PausableAccount,\n MetadataPointer,\n TokenMetadata,\n GroupPointer,\n TokenGroup,\n GroupMemberPointer,\n TokenGroupMember,\n}\n\nexport type ExtensionTypeArgs = ExtensionType;\n\nexport function getExtensionTypeEncoder(): Encoder {\n return getEnumEncoder(ExtensionType, { size: getU16Encoder() });\n}\n\nexport function getExtensionTypeDecoder(): Decoder {\n return getEnumDecoder(ExtensionType, { size: getU16Decoder() });\n}\n\nexport function getExtensionTypeCodec(): Codec<\n ExtensionTypeArgs,\n ExtensionType\n> {\n return combineCodec(getExtensionTypeEncoder(), getExtensionTypeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU32Decoder,\n getU32Encoder,\n getUnitDecoder,\n getUnitEncoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\n/** Fields in the metadata account, used for updating. */\nexport type TokenMetadataField =\n | { __kind: 'Name' }\n | { __kind: 'Symbol' }\n | { __kind: 'Uri' }\n | { __kind: 'Key'; fields: readonly [string] };\n\nexport type TokenMetadataFieldArgs = TokenMetadataField;\n\nexport function getTokenMetadataFieldEncoder(): Encoder {\n return getDiscriminatedUnionEncoder([\n ['Name', getUnitEncoder()],\n ['Symbol', getUnitEncoder()],\n ['Uri', getUnitEncoder()],\n [\n 'Key',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTokenMetadataFieldDecoder(): Decoder {\n return getDiscriminatedUnionDecoder([\n ['Name', getUnitDecoder()],\n ['Symbol', getUnitDecoder()],\n ['Uri', getUnitDecoder()],\n [\n 'Key',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()),\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getTokenMetadataFieldCodec(): Codec<\n TokenMetadataFieldArgs,\n TokenMetadataField\n> {\n return combineCodec(\n getTokenMetadataFieldEncoder(),\n getTokenMetadataFieldDecoder()\n );\n}\n\n// Data Enum Helpers.\nexport function tokenMetadataField(\n kind: 'Name'\n): GetDiscriminatedUnionVariant;\nexport function tokenMetadataField(\n kind: 'Symbol'\n): GetDiscriminatedUnionVariant;\nexport function tokenMetadataField(\n kind: 'Uri'\n): GetDiscriminatedUnionVariant;\nexport function tokenMetadataField(\n kind: 'Key',\n data: GetDiscriminatedUnionVariantContent<\n TokenMetadataFieldArgs,\n '__kind',\n 'Key'\n >['fields']\n): GetDiscriminatedUnionVariant;\nexport function tokenMetadataField<\n K extends TokenMetadataFieldArgs['__kind'],\n Data,\n>(kind: K, data?: Data) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTokenMetadataField(\n kind: K,\n value: TokenMetadataField\n): value is TokenMetadataField & { __kind: K } {\n return value.__kind === kind;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type TransferFee = {\n /** First epoch where the transfer fee takes effect. */\n epoch: bigint;\n /** Maximum fee assessed on transfers, expressed as an amount of tokens. */\n maximumFee: bigint;\n /**\n * Amount of transfer collected as fees, expressed as basis points of the\n * transfer amount, ie. increments of 0.01%.\n */\n transferFeeBasisPoints: number;\n};\n\nexport type TransferFeeArgs = {\n /** First epoch where the transfer fee takes effect. */\n epoch: number | bigint;\n /** Maximum fee assessed on transfers, expressed as an amount of tokens. */\n maximumFee: number | bigint;\n /**\n * Amount of transfer collected as fees, expressed as basis points of the\n * transfer amount, ie. increments of 0.01%.\n */\n transferFeeBasisPoints: number;\n};\n\nexport function getTransferFeeEncoder(): Encoder {\n return getStructEncoder([\n ['epoch', getU64Encoder()],\n ['maximumFee', getU64Encoder()],\n ['transferFeeBasisPoints', getU16Encoder()],\n ]);\n}\n\nexport function getTransferFeeDecoder(): Decoder {\n return getStructDecoder([\n ['epoch', getU64Decoder()],\n ['maximumFee', getU64Decoder()],\n ['transferFeeBasisPoints', getU16Decoder()],\n ]);\n}\n\nexport function getTransferFeeCodec(): Codec {\n return combineCodec(getTransferFeeEncoder(), getTransferFeeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getConstantDecoder,\n getConstantEncoder,\n getHiddenPrefixDecoder,\n getHiddenPrefixEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n padLeftEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getExtensionDecoder,\n getExtensionEncoder,\n type Extension,\n type ExtensionArgs,\n} from '../types';\n\nexport type Mint = {\n /**\n * Optional authority used to mint new tokens. The mint authority may only\n * be provided during mint creation. If no mint authority is present\n * then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: Option
;\n /** Total supply of tokens. */\n supply: bigint;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts. */\n freezeAuthority: Option
;\n /** The extensions activated on the mint account. */\n extensions: Option>;\n};\n\nexport type MintArgs = {\n /**\n * Optional authority used to mint new tokens. The mint authority may only\n * be provided during mint creation. If no mint authority is present\n * then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: OptionOrNullable
;\n /** Total supply of tokens. */\n supply: number | bigint;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts. */\n freezeAuthority: OptionOrNullable
;\n /** The extensions activated on the mint account. */\n extensions: OptionOrNullable>;\n};\n\nexport function getMintEncoder(): Encoder {\n return getStructEncoder([\n [\n 'mintAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['supply', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ['isInitialized', getBooleanEncoder()],\n [\n 'freezeAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n [\n 'extensions',\n getOptionEncoder(\n getHiddenPrefixEncoder(\n getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }),\n [getConstantEncoder(padLeftEncoder(getU8Encoder(), 83).encode(1))]\n ),\n { prefix: null }\n ),\n ],\n ]);\n}\n\nexport function getMintDecoder(): Decoder {\n return getStructDecoder([\n [\n 'mintAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['supply', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ['isInitialized', getBooleanDecoder()],\n [\n 'freezeAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n [\n 'extensions',\n getOptionDecoder(\n getHiddenPrefixDecoder(\n getArrayDecoder(getExtensionDecoder(), { size: 'remainder' }),\n [getConstantDecoder(padLeftEncoder(getU8Encoder(), 83).encode(1))]\n ),\n { prefix: null }\n ),\n ],\n ]);\n}\n\nexport function getMintCodec(): Codec {\n return combineCodec(getMintEncoder(), getMintDecoder());\n}\n\nexport function decodeMint(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeMint(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeMint(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getMintDecoder()\n );\n}\n\nexport async function fetchMint(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeMint(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMint(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMint(maybeAccount);\n}\n\nexport async function fetchAllMint(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeMint(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMint(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMint(maybeAccount));\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/kit';\n\nexport type Multisig = {\n /** Number of signers required. */\n m: number;\n /** Number of valid signers. */\n n: number;\n /** Is `true` if this structure has been initialized. */\n isInitialized: boolean;\n /** Signer public keys. */\n signers: Array
;\n};\n\nexport type MultisigArgs = Multisig;\n\nexport function getMultisigEncoder(): Encoder {\n return getStructEncoder([\n ['m', getU8Encoder()],\n ['n', getU8Encoder()],\n ['isInitialized', getBooleanEncoder()],\n ['signers', getArrayEncoder(getAddressEncoder(), { size: 11 })],\n ]);\n}\n\nexport function getMultisigDecoder(): Decoder {\n return getStructDecoder([\n ['m', getU8Decoder()],\n ['n', getU8Decoder()],\n ['isInitialized', getBooleanDecoder()],\n ['signers', getArrayDecoder(getAddressDecoder(), { size: 11 })],\n ]);\n}\n\nexport function getMultisigCodec(): Codec {\n return combineCodec(getMultisigEncoder(), getMultisigDecoder());\n}\n\nexport function decodeMultisig(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeMultisig(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeMultisig(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getMultisigDecoder()\n );\n}\n\nexport async function fetchMultisig(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeMultisig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMultisig(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMultisig(maybeAccount);\n}\n\nexport async function fetchAllMultisig(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeMultisig(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMultisig(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMultisig(maybeAccount));\n}\n\nexport function getMultisigSize(): number {\n return 355;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getConstantDecoder,\n getConstantEncoder,\n getHiddenPrefixDecoder,\n getHiddenPrefixEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Encoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n getExtensionDecoder,\n getExtensionEncoder,\n type AccountState,\n type AccountStateArgs,\n type Extension,\n type ExtensionArgs,\n} from '../types';\n\nexport type Token = {\n /** The mint associated with this account. */\n mint: Address;\n /** The owner of this account. */\n owner: Address;\n /** The amount of tokens this account holds. */\n amount: bigint;\n /**\n * If `delegate` is `Some` then `delegated_amount` represents\n * the amount authorized by the delegate.\n */\n delegate: Option
;\n /** The account's state. */\n state: AccountState;\n /**\n * If is_native.is_some, this is a native token, and the value logs the\n * rent-exempt reserve. An Account is required to be rent-exempt, so\n * the value is used by the Processor to ensure that wrapped SOL\n * accounts do not drop below this threshold.\n */\n isNative: Option;\n /** The amount delegated. */\n delegatedAmount: bigint;\n /** Optional authority to close the account. */\n closeAuthority: Option
;\n /** The extensions activated on the token account. */\n extensions: Option>;\n};\n\nexport type TokenArgs = {\n /** The mint associated with this account. */\n mint: Address;\n /** The owner of this account. */\n owner: Address;\n /** The amount of tokens this account holds. */\n amount: number | bigint;\n /**\n * If `delegate` is `Some` then `delegated_amount` represents\n * the amount authorized by the delegate.\n */\n delegate: OptionOrNullable
;\n /** The account's state. */\n state: AccountStateArgs;\n /**\n * If is_native.is_some, this is a native token, and the value logs the\n * rent-exempt reserve. An Account is required to be rent-exempt, so\n * the value is used by the Processor to ensure that wrapped SOL\n * accounts do not drop below this threshold.\n */\n isNative: OptionOrNullable;\n /** The amount delegated. */\n delegatedAmount: number | bigint;\n /** Optional authority to close the account. */\n closeAuthority: OptionOrNullable
;\n /** The extensions activated on the token account. */\n extensions: OptionOrNullable>;\n};\n\nexport function getTokenEncoder(): Encoder {\n return getStructEncoder([\n ['mint', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['amount', getU64Encoder()],\n [\n 'delegate',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['state', getAccountStateEncoder()],\n [\n 'isNative',\n getOptionEncoder(getU64Encoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['delegatedAmount', getU64Encoder()],\n [\n 'closeAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: getU32Encoder(),\n noneValue: 'zeroes',\n }),\n ],\n [\n 'extensions',\n getOptionEncoder(\n getHiddenPrefixEncoder(\n getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }),\n [getConstantEncoder(getU8Encoder().encode(2))]\n ),\n { prefix: null }\n ),\n ],\n ]);\n}\n\nexport function getTokenDecoder(): Decoder {\n return getStructDecoder([\n ['mint', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['amount', getU64Decoder()],\n [\n 'delegate',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['state', getAccountStateDecoder()],\n [\n 'isNative',\n getOptionDecoder(getU64Decoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n ['delegatedAmount', getU64Decoder()],\n [\n 'closeAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: getU32Decoder(),\n noneValue: 'zeroes',\n }),\n ],\n [\n 'extensions',\n getOptionDecoder(\n getHiddenPrefixDecoder(\n getArrayDecoder(getExtensionDecoder(), { size: 'remainder' }),\n [getConstantDecoder(getU8Encoder().encode(2))]\n ),\n { prefix: null }\n ),\n ],\n ]);\n}\n\nexport function getTokenCodec(): Codec {\n return combineCodec(getTokenEncoder(), getTokenDecoder());\n}\n\nexport function decodeToken(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeToken(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeToken(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n): Account | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getTokenDecoder()\n );\n}\n\nexport async function fetchToken(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeToken(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeToken(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeToken(maybeAccount);\n}\n\nexport async function fetchAllToken(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeToken(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeToken(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeToken(maybeAccount));\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedCreateAssociatedTokenIdempotentInstruction,\n type ParsedCreateAssociatedTokenInstruction,\n type ParsedRecoverNestedAssociatedTokenInstruction,\n} from '../instructions';\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ADDRESS =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n\nexport enum AssociatedTokenInstruction {\n CreateAssociatedToken,\n CreateAssociatedTokenIdempotent,\n RecoverNestedAssociatedToken,\n}\n\nexport function identifyAssociatedTokenInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): AssociatedTokenInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n return AssociatedTokenInstruction.CreateAssociatedToken;\n }\n if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n return AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n }\n if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n return AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n }\n throw new Error(\n 'The provided instruction could not be identified as a associatedToken instruction.'\n );\n}\n\nexport type ParsedAssociatedTokenInstruction<\n TProgram extends string = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n> =\n | ({\n instructionType: AssociatedTokenInstruction.CreateAssociatedToken;\n } & ParsedCreateAssociatedTokenInstruction)\n | ({\n instructionType: AssociatedTokenInstruction.CreateAssociatedTokenIdempotent;\n } & ParsedCreateAssociatedTokenIdempotentInstruction)\n | ({\n instructionType: AssociatedTokenInstruction.RecoverNestedAssociatedToken;\n } & ParsedRecoverNestedAssociatedTokenInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedAmountToUiAmountInstruction,\n type ParsedApplyConfidentialPendingBalanceInstruction,\n type ParsedApproveCheckedInstruction,\n type ParsedApproveConfidentialTransferAccountInstruction,\n type ParsedApproveInstruction,\n type ParsedBurnCheckedInstruction,\n type ParsedBurnInstruction,\n type ParsedCloseAccountInstruction,\n type ParsedConfidentialDepositInstruction,\n type ParsedConfidentialTransferInstruction,\n type ParsedConfidentialTransferWithFeeInstruction,\n type ParsedConfidentialWithdrawInstruction,\n type ParsedConfigureConfidentialTransferAccountInstruction,\n type ParsedCreateNativeMintInstruction,\n type ParsedDisableConfidentialCreditsInstruction,\n type ParsedDisableCpiGuardInstruction,\n type ParsedDisableHarvestToMintInstruction,\n type ParsedDisableMemoTransfersInstruction,\n type ParsedDisableNonConfidentialCreditsInstruction,\n type ParsedEmitTokenMetadataInstruction,\n type ParsedEmptyConfidentialTransferAccountInstruction,\n type ParsedEnableConfidentialCreditsInstruction,\n type ParsedEnableCpiGuardInstruction,\n type ParsedEnableHarvestToMintInstruction,\n type ParsedEnableMemoTransfersInstruction,\n type ParsedEnableNonConfidentialCreditsInstruction,\n type ParsedFreezeAccountInstruction,\n type ParsedGetAccountDataSizeInstruction,\n type ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction,\n type ParsedHarvestWithheldTokensToMintInstruction,\n type ParsedInitializeAccount2Instruction,\n type ParsedInitializeAccount3Instruction,\n type ParsedInitializeAccountInstruction,\n type ParsedInitializeConfidentialTransferFeeInstruction,\n type ParsedInitializeConfidentialTransferMintInstruction,\n type ParsedInitializeDefaultAccountStateInstruction,\n type ParsedInitializeGroupMemberPointerInstruction,\n type ParsedInitializeGroupPointerInstruction,\n type ParsedInitializeImmutableOwnerInstruction,\n type ParsedInitializeInterestBearingMintInstruction,\n type ParsedInitializeMetadataPointerInstruction,\n type ParsedInitializeMint2Instruction,\n type ParsedInitializeMintCloseAuthorityInstruction,\n type ParsedInitializeMintInstruction,\n type ParsedInitializeMultisig2Instruction,\n type ParsedInitializeMultisigInstruction,\n type ParsedInitializeNonTransferableMintInstruction,\n type ParsedInitializePausableConfigInstruction,\n type ParsedInitializePermanentDelegateInstruction,\n type ParsedInitializeScaledUiAmountMintInstruction,\n type ParsedInitializeTokenGroupInstruction,\n type ParsedInitializeTokenGroupMemberInstruction,\n type ParsedInitializeTokenMetadataInstruction,\n type ParsedInitializeTransferFeeConfigInstruction,\n type ParsedInitializeTransferHookInstruction,\n type ParsedMintToCheckedInstruction,\n type ParsedMintToInstruction,\n type ParsedPauseInstruction,\n type ParsedReallocateInstruction,\n type ParsedRemoveTokenMetadataKeyInstruction,\n type ParsedResumeInstruction,\n type ParsedRevokeInstruction,\n type ParsedSetAuthorityInstruction,\n type ParsedSetTransferFeeInstruction,\n type ParsedSyncNativeInstruction,\n type ParsedThawAccountInstruction,\n type ParsedTransferCheckedInstruction,\n type ParsedTransferCheckedWithFeeInstruction,\n type ParsedTransferInstruction,\n type ParsedUiAmountToAmountInstruction,\n type ParsedUpdateConfidentialTransferMintInstruction,\n type ParsedUpdateDefaultAccountStateInstruction,\n type ParsedUpdateGroupMemberPointerInstruction,\n type ParsedUpdateGroupPointerInstruction,\n type ParsedUpdateMetadataPointerInstruction,\n type ParsedUpdateMultiplierScaledUiMintInstruction,\n type ParsedUpdateRateInterestBearingMintInstruction,\n type ParsedUpdateTokenGroupMaxSizeInstruction,\n type ParsedUpdateTokenGroupUpdateAuthorityInstruction,\n type ParsedUpdateTokenMetadataFieldInstruction,\n type ParsedUpdateTokenMetadataUpdateAuthorityInstruction,\n type ParsedUpdateTransferHookInstruction,\n type ParsedWithdrawExcessLamportsInstruction,\n type ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction,\n type ParsedWithdrawWithheldTokensFromAccountsInstruction,\n type ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction,\n type ParsedWithdrawWithheldTokensFromMintInstruction,\n} from '../instructions';\n\nexport const TOKEN_2022_PROGRAM_ADDRESS =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n\nexport enum Token2022Account {\n Mint,\n Token,\n Multisig,\n}\n\nexport function identifyToken2022Account(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): Token2022Account {\n const data = 'data' in account ? account.data : account;\n if (data.length === 82) {\n return Token2022Account.Mint;\n }\n if (data.length === 165) {\n return Token2022Account.Token;\n }\n if (data.length === 355) {\n return Token2022Account.Multisig;\n }\n throw new Error(\n 'The provided account could not be identified as a token-2022 account.'\n );\n}\n\nexport enum Token2022Instruction {\n InitializeMint,\n InitializeAccount,\n InitializeMultisig,\n Transfer,\n Approve,\n Revoke,\n SetAuthority,\n MintTo,\n Burn,\n CloseAccount,\n FreezeAccount,\n ThawAccount,\n TransferChecked,\n ApproveChecked,\n MintToChecked,\n BurnChecked,\n InitializeAccount2,\n SyncNative,\n InitializeAccount3,\n InitializeMultisig2,\n InitializeMint2,\n GetAccountDataSize,\n InitializeImmutableOwner,\n AmountToUiAmount,\n UiAmountToAmount,\n InitializeMintCloseAuthority,\n InitializeTransferFeeConfig,\n TransferCheckedWithFee,\n WithdrawWithheldTokensFromMint,\n WithdrawWithheldTokensFromAccounts,\n HarvestWithheldTokensToMint,\n SetTransferFee,\n InitializeConfidentialTransferMint,\n UpdateConfidentialTransferMint,\n ConfigureConfidentialTransferAccount,\n ApproveConfidentialTransferAccount,\n EmptyConfidentialTransferAccount,\n ConfidentialDeposit,\n ConfidentialWithdraw,\n ConfidentialTransfer,\n ApplyConfidentialPendingBalance,\n EnableConfidentialCredits,\n DisableConfidentialCredits,\n EnableNonConfidentialCredits,\n DisableNonConfidentialCredits,\n ConfidentialTransferWithFee,\n InitializeDefaultAccountState,\n UpdateDefaultAccountState,\n Reallocate,\n EnableMemoTransfers,\n DisableMemoTransfers,\n CreateNativeMint,\n InitializeNonTransferableMint,\n InitializeInterestBearingMint,\n UpdateRateInterestBearingMint,\n EnableCpiGuard,\n DisableCpiGuard,\n InitializePermanentDelegate,\n InitializeTransferHook,\n UpdateTransferHook,\n InitializeConfidentialTransferFee,\n WithdrawWithheldTokensFromMintForConfidentialTransferFee,\n WithdrawWithheldTokensFromAccountsForConfidentialTransferFee,\n HarvestWithheldTokensToMintForConfidentialTransferFee,\n EnableHarvestToMint,\n DisableHarvestToMint,\n WithdrawExcessLamports,\n InitializeMetadataPointer,\n UpdateMetadataPointer,\n InitializeGroupPointer,\n UpdateGroupPointer,\n InitializeGroupMemberPointer,\n UpdateGroupMemberPointer,\n InitializeScaledUiAmountMint,\n UpdateMultiplierScaledUiMint,\n InitializePausableConfig,\n Pause,\n Resume,\n InitializeTokenMetadata,\n UpdateTokenMetadataField,\n RemoveTokenMetadataKey,\n UpdateTokenMetadataUpdateAuthority,\n EmitTokenMetadata,\n InitializeTokenGroup,\n UpdateTokenGroupMaxSize,\n UpdateTokenGroupUpdateAuthority,\n InitializeTokenGroupMember,\n}\n\nexport function identifyToken2022Instruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): Token2022Instruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n return Token2022Instruction.InitializeMint;\n }\n if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n return Token2022Instruction.InitializeAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n return Token2022Instruction.InitializeMultisig;\n }\n if (containsBytes(data, getU8Encoder().encode(3), 0)) {\n return Token2022Instruction.Transfer;\n }\n if (containsBytes(data, getU8Encoder().encode(4), 0)) {\n return Token2022Instruction.Approve;\n }\n if (containsBytes(data, getU8Encoder().encode(5), 0)) {\n return Token2022Instruction.Revoke;\n }\n if (containsBytes(data, getU8Encoder().encode(6), 0)) {\n return Token2022Instruction.SetAuthority;\n }\n if (containsBytes(data, getU8Encoder().encode(7), 0)) {\n return Token2022Instruction.MintTo;\n }\n if (containsBytes(data, getU8Encoder().encode(8), 0)) {\n return Token2022Instruction.Burn;\n }\n if (containsBytes(data, getU8Encoder().encode(9), 0)) {\n return Token2022Instruction.CloseAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(10), 0)) {\n return Token2022Instruction.FreezeAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(11), 0)) {\n return Token2022Instruction.ThawAccount;\n }\n if (containsBytes(data, getU8Encoder().encode(12), 0)) {\n return Token2022Instruction.TransferChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(13), 0)) {\n return Token2022Instruction.ApproveChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(14), 0)) {\n return Token2022Instruction.MintToChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(15), 0)) {\n return Token2022Instruction.BurnChecked;\n }\n if (containsBytes(data, getU8Encoder().encode(16), 0)) {\n return Token2022Instruction.InitializeAccount2;\n }\n if (containsBytes(data, getU8Encoder().encode(17), 0)) {\n return Token2022Instruction.SyncNative;\n }\n if (containsBytes(data, getU8Encoder().encode(18), 0)) {\n return Token2022Instruction.InitializeAccount3;\n }\n if (containsBytes(data, getU8Encoder().encode(19), 0)) {\n return Token2022Instruction.InitializeMultisig2;\n }\n if (containsBytes(data, getU8Encoder().encode(20), 0)) {\n return Token2022Instruction.InitializeMint2;\n }\n if (containsBytes(data, getU8Encoder().encode(21), 0)) {\n return Token2022Instruction.GetAccountDataSize;\n }\n if (containsBytes(data, getU8Encoder().encode(22), 0)) {\n return Token2022Instruction.InitializeImmutableOwner;\n }\n if (containsBytes(data, getU8Encoder().encode(23), 0)) {\n return Token2022Instruction.AmountToUiAmount;\n }\n if (containsBytes(data, getU8Encoder().encode(24), 0)) {\n return Token2022Instruction.UiAmountToAmount;\n }\n if (containsBytes(data, getU8Encoder().encode(25), 0)) {\n return Token2022Instruction.InitializeMintCloseAuthority;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeTransferFeeConfig;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.TransferCheckedWithFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(2), 1)\n ) {\n return Token2022Instruction.WithdrawWithheldTokensFromMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(3), 1)\n ) {\n return Token2022Instruction.WithdrawWithheldTokensFromAccounts;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(4), 1)\n ) {\n return Token2022Instruction.HarvestWithheldTokensToMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(26), 0) &&\n containsBytes(data, getU8Encoder().encode(5), 1)\n ) {\n return Token2022Instruction.SetTransferFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeConfidentialTransferMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateConfidentialTransferMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(2), 1)\n ) {\n return Token2022Instruction.ConfigureConfidentialTransferAccount;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(3), 1)\n ) {\n return Token2022Instruction.ApproveConfidentialTransferAccount;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(4), 1)\n ) {\n return Token2022Instruction.EmptyConfidentialTransferAccount;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(5), 1)\n ) {\n return Token2022Instruction.ConfidentialDeposit;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(6), 1)\n ) {\n return Token2022Instruction.ConfidentialWithdraw;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(7), 1)\n ) {\n return Token2022Instruction.ConfidentialTransfer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(8), 1)\n ) {\n return Token2022Instruction.ApplyConfidentialPendingBalance;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(9), 1)\n ) {\n return Token2022Instruction.EnableConfidentialCredits;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(10), 1)\n ) {\n return Token2022Instruction.DisableConfidentialCredits;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(11), 1)\n ) {\n return Token2022Instruction.EnableNonConfidentialCredits;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(12), 1)\n ) {\n return Token2022Instruction.DisableNonConfidentialCredits;\n }\n if (\n containsBytes(data, getU8Encoder().encode(27), 0) &&\n containsBytes(data, getU8Encoder().encode(13), 1)\n ) {\n return Token2022Instruction.ConfidentialTransferWithFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(28), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeDefaultAccountState;\n }\n if (\n containsBytes(data, getU8Encoder().encode(28), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateDefaultAccountState;\n }\n if (containsBytes(data, getU8Encoder().encode(29), 0)) {\n return Token2022Instruction.Reallocate;\n }\n if (\n containsBytes(data, getU8Encoder().encode(30), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.EnableMemoTransfers;\n }\n if (\n containsBytes(data, getU8Encoder().encode(30), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.DisableMemoTransfers;\n }\n if (containsBytes(data, getU8Encoder().encode(31), 0)) {\n return Token2022Instruction.CreateNativeMint;\n }\n if (containsBytes(data, getU8Encoder().encode(32), 0)) {\n return Token2022Instruction.InitializeNonTransferableMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(33), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeInterestBearingMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(33), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateRateInterestBearingMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(34), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.EnableCpiGuard;\n }\n if (\n containsBytes(data, getU8Encoder().encode(34), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.DisableCpiGuard;\n }\n if (containsBytes(data, getU8Encoder().encode(35), 0)) {\n return Token2022Instruction.InitializePermanentDelegate;\n }\n if (\n containsBytes(data, getU8Encoder().encode(36), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeTransferHook;\n }\n if (\n containsBytes(data, getU8Encoder().encode(36), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateTransferHook;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeConfidentialTransferFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(2), 1)\n ) {\n return Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(3), 1)\n ) {\n return Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(4), 1)\n ) {\n return Token2022Instruction.EnableHarvestToMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(37), 0) &&\n containsBytes(data, getU8Encoder().encode(5), 1)\n ) {\n return Token2022Instruction.DisableHarvestToMint;\n }\n if (containsBytes(data, getU8Encoder().encode(38), 0)) {\n return Token2022Instruction.WithdrawExcessLamports;\n }\n if (\n containsBytes(data, getU8Encoder().encode(39), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeMetadataPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(39), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateMetadataPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(40), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeGroupPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(40), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateGroupPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(41), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeGroupMemberPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(41), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateGroupMemberPointer;\n }\n if (\n containsBytes(data, getU8Encoder().encode(43), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializeScaledUiAmountMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(43), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.UpdateMultiplierScaledUiMint;\n }\n if (\n containsBytes(data, getU8Encoder().encode(44), 0) &&\n containsBytes(data, getU8Encoder().encode(0), 1)\n ) {\n return Token2022Instruction.InitializePausableConfig;\n }\n if (\n containsBytes(data, getU8Encoder().encode(44), 0) &&\n containsBytes(data, getU8Encoder().encode(1), 1)\n ) {\n return Token2022Instruction.Pause;\n }\n if (\n containsBytes(data, getU8Encoder().encode(44), 0) &&\n containsBytes(data, getU8Encoder().encode(2), 1)\n ) {\n return Token2022Instruction.Resume;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([210, 225, 30, 162, 88, 184, 77, 141]),\n 0\n )\n ) {\n return Token2022Instruction.InitializeTokenMetadata;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([221, 233, 49, 45, 181, 202, 220, 200]),\n 0\n )\n ) {\n return Token2022Instruction.UpdateTokenMetadataField;\n }\n if (\n containsBytes(data, new Uint8Array([234, 18, 32, 56, 89, 141, 37, 181]), 0)\n ) {\n return Token2022Instruction.RemoveTokenMetadataKey;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([215, 228, 166, 228, 84, 100, 86, 123]),\n 0\n )\n ) {\n return Token2022Instruction.UpdateTokenMetadataUpdateAuthority;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([250, 166, 180, 250, 13, 12, 184, 70]),\n 0\n )\n ) {\n return Token2022Instruction.EmitTokenMetadata;\n }\n if (\n containsBytes(data, new Uint8Array([121, 113, 108, 39, 54, 51, 0, 4]), 0)\n ) {\n return Token2022Instruction.InitializeTokenGroup;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([108, 37, 171, 143, 248, 30, 18, 110]),\n 0\n )\n ) {\n return Token2022Instruction.UpdateTokenGroupMaxSize;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([161, 105, 88, 1, 237, 221, 216, 203]),\n 0\n )\n ) {\n return Token2022Instruction.UpdateTokenGroupUpdateAuthority;\n }\n if (\n containsBytes(\n data,\n new Uint8Array([152, 32, 222, 176, 223, 237, 116, 134]),\n 0\n )\n ) {\n return Token2022Instruction.InitializeTokenGroupMember;\n }\n throw new Error(\n 'The provided instruction could not be identified as a token-2022 instruction.'\n );\n}\n\nexport type ParsedToken2022Instruction<\n TProgram extends string = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n> =\n | ({\n instructionType: Token2022Instruction.InitializeMint;\n } & ParsedInitializeMintInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeAccount;\n } & ParsedInitializeAccountInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeMultisig;\n } & ParsedInitializeMultisigInstruction)\n | ({\n instructionType: Token2022Instruction.Transfer;\n } & ParsedTransferInstruction)\n | ({\n instructionType: Token2022Instruction.Approve;\n } & ParsedApproveInstruction)\n | ({\n instructionType: Token2022Instruction.Revoke;\n } & ParsedRevokeInstruction)\n | ({\n instructionType: Token2022Instruction.SetAuthority;\n } & ParsedSetAuthorityInstruction)\n | ({\n instructionType: Token2022Instruction.MintTo;\n } & ParsedMintToInstruction)\n | ({\n instructionType: Token2022Instruction.Burn;\n } & ParsedBurnInstruction)\n | ({\n instructionType: Token2022Instruction.CloseAccount;\n } & ParsedCloseAccountInstruction)\n | ({\n instructionType: Token2022Instruction.FreezeAccount;\n } & ParsedFreezeAccountInstruction)\n | ({\n instructionType: Token2022Instruction.ThawAccount;\n } & ParsedThawAccountInstruction)\n | ({\n instructionType: Token2022Instruction.TransferChecked;\n } & ParsedTransferCheckedInstruction)\n | ({\n instructionType: Token2022Instruction.ApproveChecked;\n } & ParsedApproveCheckedInstruction)\n | ({\n instructionType: Token2022Instruction.MintToChecked;\n } & ParsedMintToCheckedInstruction)\n | ({\n instructionType: Token2022Instruction.BurnChecked;\n } & ParsedBurnCheckedInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeAccount2;\n } & ParsedInitializeAccount2Instruction)\n | ({\n instructionType: Token2022Instruction.SyncNative;\n } & ParsedSyncNativeInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeAccount3;\n } & ParsedInitializeAccount3Instruction)\n | ({\n instructionType: Token2022Instruction.InitializeMultisig2;\n } & ParsedInitializeMultisig2Instruction)\n | ({\n instructionType: Token2022Instruction.InitializeMint2;\n } & ParsedInitializeMint2Instruction)\n | ({\n instructionType: Token2022Instruction.GetAccountDataSize;\n } & ParsedGetAccountDataSizeInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeImmutableOwner;\n } & ParsedInitializeImmutableOwnerInstruction)\n | ({\n instructionType: Token2022Instruction.AmountToUiAmount;\n } & ParsedAmountToUiAmountInstruction)\n | ({\n instructionType: Token2022Instruction.UiAmountToAmount;\n } & ParsedUiAmountToAmountInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeMintCloseAuthority;\n } & ParsedInitializeMintCloseAuthorityInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeTransferFeeConfig;\n } & ParsedInitializeTransferFeeConfigInstruction)\n | ({\n instructionType: Token2022Instruction.TransferCheckedWithFee;\n } & ParsedTransferCheckedWithFeeInstruction)\n | ({\n instructionType: Token2022Instruction.WithdrawWithheldTokensFromMint;\n } & ParsedWithdrawWithheldTokensFromMintInstruction)\n | ({\n instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccounts;\n } & ParsedWithdrawWithheldTokensFromAccountsInstruction)\n | ({\n instructionType: Token2022Instruction.HarvestWithheldTokensToMint;\n } & ParsedHarvestWithheldTokensToMintInstruction)\n | ({\n instructionType: Token2022Instruction.SetTransferFee;\n } & ParsedSetTransferFeeInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeConfidentialTransferMint;\n } & ParsedInitializeConfidentialTransferMintInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateConfidentialTransferMint;\n } & ParsedUpdateConfidentialTransferMintInstruction)\n | ({\n instructionType: Token2022Instruction.ConfigureConfidentialTransferAccount;\n } & ParsedConfigureConfidentialTransferAccountInstruction)\n | ({\n instructionType: Token2022Instruction.ApproveConfidentialTransferAccount;\n } & ParsedApproveConfidentialTransferAccountInstruction)\n | ({\n instructionType: Token2022Instruction.EmptyConfidentialTransferAccount;\n } & ParsedEmptyConfidentialTransferAccountInstruction)\n | ({\n instructionType: Token2022Instruction.ConfidentialDeposit;\n } & ParsedConfidentialDepositInstruction)\n | ({\n instructionType: Token2022Instruction.ConfidentialWithdraw;\n } & ParsedConfidentialWithdrawInstruction)\n | ({\n instructionType: Token2022Instruction.ConfidentialTransfer;\n } & ParsedConfidentialTransferInstruction)\n | ({\n instructionType: Token2022Instruction.ApplyConfidentialPendingBalance;\n } & ParsedApplyConfidentialPendingBalanceInstruction)\n | ({\n instructionType: Token2022Instruction.EnableConfidentialCredits;\n } & ParsedEnableConfidentialCreditsInstruction)\n | ({\n instructionType: Token2022Instruction.DisableConfidentialCredits;\n } & ParsedDisableConfidentialCreditsInstruction)\n | ({\n instructionType: Token2022Instruction.EnableNonConfidentialCredits;\n } & ParsedEnableNonConfidentialCreditsInstruction)\n | ({\n instructionType: Token2022Instruction.DisableNonConfidentialCredits;\n } & ParsedDisableNonConfidentialCreditsInstruction)\n | ({\n instructionType: Token2022Instruction.ConfidentialTransferWithFee;\n } & ParsedConfidentialTransferWithFeeInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeDefaultAccountState;\n } & ParsedInitializeDefaultAccountStateInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateDefaultAccountState;\n } & ParsedUpdateDefaultAccountStateInstruction)\n | ({\n instructionType: Token2022Instruction.Reallocate;\n } & ParsedReallocateInstruction)\n | ({\n instructionType: Token2022Instruction.EnableMemoTransfers;\n } & ParsedEnableMemoTransfersInstruction)\n | ({\n instructionType: Token2022Instruction.DisableMemoTransfers;\n } & ParsedDisableMemoTransfersInstruction)\n | ({\n instructionType: Token2022Instruction.CreateNativeMint;\n } & ParsedCreateNativeMintInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeNonTransferableMint;\n } & ParsedInitializeNonTransferableMintInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeInterestBearingMint;\n } & ParsedInitializeInterestBearingMintInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateRateInterestBearingMint;\n } & ParsedUpdateRateInterestBearingMintInstruction)\n | ({\n instructionType: Token2022Instruction.EnableCpiGuard;\n } & ParsedEnableCpiGuardInstruction)\n | ({\n instructionType: Token2022Instruction.DisableCpiGuard;\n } & ParsedDisableCpiGuardInstruction)\n | ({\n instructionType: Token2022Instruction.InitializePermanentDelegate;\n } & ParsedInitializePermanentDelegateInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeTransferHook;\n } & ParsedInitializeTransferHookInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateTransferHook;\n } & ParsedUpdateTransferHookInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeConfidentialTransferFee;\n } & ParsedInitializeConfidentialTransferFeeInstruction)\n | ({\n instructionType: Token2022Instruction.WithdrawWithheldTokensFromMintForConfidentialTransferFee;\n } & ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction)\n | ({\n instructionType: Token2022Instruction.WithdrawWithheldTokensFromAccountsForConfidentialTransferFee;\n } & ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction)\n | ({\n instructionType: Token2022Instruction.HarvestWithheldTokensToMintForConfidentialTransferFee;\n } & ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction)\n | ({\n instructionType: Token2022Instruction.EnableHarvestToMint;\n } & ParsedEnableHarvestToMintInstruction)\n | ({\n instructionType: Token2022Instruction.DisableHarvestToMint;\n } & ParsedDisableHarvestToMintInstruction)\n | ({\n instructionType: Token2022Instruction.WithdrawExcessLamports;\n } & ParsedWithdrawExcessLamportsInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeMetadataPointer;\n } & ParsedInitializeMetadataPointerInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateMetadataPointer;\n } & ParsedUpdateMetadataPointerInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeGroupPointer;\n } & ParsedInitializeGroupPointerInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateGroupPointer;\n } & ParsedUpdateGroupPointerInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeGroupMemberPointer;\n } & ParsedInitializeGroupMemberPointerInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateGroupMemberPointer;\n } & ParsedUpdateGroupMemberPointerInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeScaledUiAmountMint;\n } & ParsedInitializeScaledUiAmountMintInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateMultiplierScaledUiMint;\n } & ParsedUpdateMultiplierScaledUiMintInstruction)\n | ({\n instructionType: Token2022Instruction.InitializePausableConfig;\n } & ParsedInitializePausableConfigInstruction)\n | ({\n instructionType: Token2022Instruction.Pause;\n } & ParsedPauseInstruction)\n | ({\n instructionType: Token2022Instruction.Resume;\n } & ParsedResumeInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeTokenMetadata;\n } & ParsedInitializeTokenMetadataInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateTokenMetadataField;\n } & ParsedUpdateTokenMetadataFieldInstruction)\n | ({\n instructionType: Token2022Instruction.RemoveTokenMetadataKey;\n } & ParsedRemoveTokenMetadataKeyInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateTokenMetadataUpdateAuthority;\n } & ParsedUpdateTokenMetadataUpdateAuthorityInstruction)\n | ({\n instructionType: Token2022Instruction.EmitTokenMetadata;\n } & ParsedEmitTokenMetadataInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeTokenGroup;\n } & ParsedInitializeTokenGroupInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateTokenGroupMaxSize;\n } & ParsedUpdateTokenGroupMaxSizeInstruction)\n | ({\n instructionType: Token2022Instruction.UpdateTokenGroupUpdateAuthority;\n } & ParsedUpdateTokenGroupUpdateAuthorityInstruction)\n | ({\n instructionType: Token2022Instruction.InitializeTokenGroupMember;\n } & ParsedInitializeTokenGroupMemberInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidOwner: Associated token account owner does not match address derivation */\nexport const ASSOCIATED_TOKEN_ERROR__INVALID_OWNER = 0x0; // 0\n\nexport type AssociatedTokenError = typeof ASSOCIATED_TOKEN_ERROR__INVALID_OWNER;\n\nlet associatedTokenErrorMessages:\n | Record\n | undefined;\nif (process.env.NODE_ENV !== 'production') {\n associatedTokenErrorMessages = {\n [ASSOCIATED_TOKEN_ERROR__INVALID_OWNER]: `Associated token account owner does not match address derivation`,\n };\n}\n\nexport function getAssociatedTokenErrorMessage(\n code: AssociatedTokenError\n): string {\n if (process.env.NODE_ENV !== 'production') {\n return (\n associatedTokenErrorMessages as Record\n )[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isAssociatedTokenError<\n TProgramErrorCode extends AssociatedTokenError,\n>(\n error: unknown,\n transactionMessage: {\n instructions: Record;\n },\n code?: TProgramErrorCode\n): error is SolanaError &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError(\n error,\n transactionMessage,\n ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n code\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\n\n/** NotRentExempt: Lamport balance below rent-exempt threshold */\nexport const TOKEN_2022_ERROR__NOT_RENT_EXEMPT = 0x0; // 0\n/** InsufficientFunds: Insufficient funds */\nexport const TOKEN_2022_ERROR__INSUFFICIENT_FUNDS = 0x1; // 1\n/** InvalidMint: Invalid Mint */\nexport const TOKEN_2022_ERROR__INVALID_MINT = 0x2; // 2\n/** MintMismatch: Account not associated with this Mint */\nexport const TOKEN_2022_ERROR__MINT_MISMATCH = 0x3; // 3\n/** OwnerMismatch: Owner does not match */\nexport const TOKEN_2022_ERROR__OWNER_MISMATCH = 0x4; // 4\n/** FixedSupply: Fixed supply */\nexport const TOKEN_2022_ERROR__FIXED_SUPPLY = 0x5; // 5\n/** AlreadyInUse: Already in use */\nexport const TOKEN_2022_ERROR__ALREADY_IN_USE = 0x6; // 6\n/** InvalidNumberOfProvidedSigners: Invalid number of provided signers */\nexport const TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS = 0x7; // 7\n/** InvalidNumberOfRequiredSigners: Invalid number of required signers */\nexport const TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS = 0x8; // 8\n/** UninitializedState: State is unititialized */\nexport const TOKEN_2022_ERROR__UNINITIALIZED_STATE = 0x9; // 9\n/** NativeNotSupported: Instruction does not support native tokens */\nexport const TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED = 0xa; // 10\n/** NonNativeHasBalance: Non-native account can only be closed if its balance is zero */\nexport const TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE = 0xb; // 11\n/** InvalidInstruction: Invalid instruction */\nexport const TOKEN_2022_ERROR__INVALID_INSTRUCTION = 0xc; // 12\n/** InvalidState: State is invalid for requested operation */\nexport const TOKEN_2022_ERROR__INVALID_STATE = 0xd; // 13\n/** Overflow: Operation overflowed */\nexport const TOKEN_2022_ERROR__OVERFLOW = 0xe; // 14\n/** AuthorityTypeNotSupported: Account does not support specified authority type */\nexport const TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED = 0xf; // 15\n/** MintCannotFreeze: This token mint cannot freeze accounts */\nexport const TOKEN_2022_ERROR__MINT_CANNOT_FREEZE = 0x10; // 16\n/** AccountFrozen: Account is frozen */\nexport const TOKEN_2022_ERROR__ACCOUNT_FROZEN = 0x11; // 17\n/** MintDecimalsMismatch: The provided decimals value different from the Mint decimals */\nexport const TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH = 0x12; // 18\n/** NonNativeNotSupported: Instruction does not support non-native tokens */\nexport const TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED = 0x13; // 19\n\nexport type Token2022Error =\n | typeof TOKEN_2022_ERROR__ACCOUNT_FROZEN\n | typeof TOKEN_2022_ERROR__ALREADY_IN_USE\n | typeof TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED\n | typeof TOKEN_2022_ERROR__FIXED_SUPPLY\n | typeof TOKEN_2022_ERROR__INSUFFICIENT_FUNDS\n | typeof TOKEN_2022_ERROR__INVALID_INSTRUCTION\n | typeof TOKEN_2022_ERROR__INVALID_MINT\n | typeof TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS\n | typeof TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS\n | typeof TOKEN_2022_ERROR__INVALID_STATE\n | typeof TOKEN_2022_ERROR__MINT_CANNOT_FREEZE\n | typeof TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH\n | typeof TOKEN_2022_ERROR__MINT_MISMATCH\n | typeof TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED\n | typeof TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE\n | typeof TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED\n | typeof TOKEN_2022_ERROR__NOT_RENT_EXEMPT\n | typeof TOKEN_2022_ERROR__OVERFLOW\n | typeof TOKEN_2022_ERROR__OWNER_MISMATCH\n | typeof TOKEN_2022_ERROR__UNINITIALIZED_STATE;\n\nlet token2022ErrorMessages: Record | undefined;\nif (process.env.NODE_ENV !== 'production') {\n token2022ErrorMessages = {\n [TOKEN_2022_ERROR__ACCOUNT_FROZEN]: `Account is frozen`,\n [TOKEN_2022_ERROR__ALREADY_IN_USE]: `Already in use`,\n [TOKEN_2022_ERROR__AUTHORITY_TYPE_NOT_SUPPORTED]: `Account does not support specified authority type`,\n [TOKEN_2022_ERROR__FIXED_SUPPLY]: `Fixed supply`,\n [TOKEN_2022_ERROR__INSUFFICIENT_FUNDS]: `Insufficient funds`,\n [TOKEN_2022_ERROR__INVALID_INSTRUCTION]: `Invalid instruction`,\n [TOKEN_2022_ERROR__INVALID_MINT]: `Invalid Mint`,\n [TOKEN_2022_ERROR__INVALID_NUMBER_OF_PROVIDED_SIGNERS]: `Invalid number of provided signers`,\n [TOKEN_2022_ERROR__INVALID_NUMBER_OF_REQUIRED_SIGNERS]: `Invalid number of required signers`,\n [TOKEN_2022_ERROR__INVALID_STATE]: `State is invalid for requested operation`,\n [TOKEN_2022_ERROR__MINT_CANNOT_FREEZE]: `This token mint cannot freeze accounts`,\n [TOKEN_2022_ERROR__MINT_DECIMALS_MISMATCH]: `The provided decimals value different from the Mint decimals`,\n [TOKEN_2022_ERROR__MINT_MISMATCH]: `Account not associated with this Mint`,\n [TOKEN_2022_ERROR__NATIVE_NOT_SUPPORTED]: `Instruction does not support native tokens`,\n [TOKEN_2022_ERROR__NON_NATIVE_HAS_BALANCE]: `Non-native account can only be closed if its balance is zero`,\n [TOKEN_2022_ERROR__NON_NATIVE_NOT_SUPPORTED]: `Instruction does not support non-native tokens`,\n [TOKEN_2022_ERROR__NOT_RENT_EXEMPT]: `Lamport balance below rent-exempt threshold`,\n [TOKEN_2022_ERROR__OVERFLOW]: `Operation overflowed`,\n [TOKEN_2022_ERROR__OWNER_MISMATCH]: `Owner does not match`,\n [TOKEN_2022_ERROR__UNINITIALIZED_STATE]: `State is unititialized`,\n };\n}\n\nexport function getToken2022ErrorMessage(code: Token2022Error): string {\n if (process.env.NODE_ENV !== 'production') {\n return (token2022ErrorMessages as Record)[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isToken2022Error(\n error: unknown,\n transactionMessage: {\n instructions: Record;\n },\n code?: TProgramErrorCode\n): error is SolanaError &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError(\n error,\n transactionMessage,\n TOKEN_2022_PROGRAM_ADDRESS,\n code\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type Address,\n type IAccountMeta,\n type IAccountSignerMeta,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): Address {\n if (!value) {\n throw new Error('Expected a Address.');\n }\n if (typeof value === 'object' && 'address' in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0];\n }\n return value as Address;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): ProgramDerivedAddress {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error('Expected a ProgramDerivedAddress.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): TransactionSigner {\n if (!value || !isTransactionSigner(value)) {\n throw new Error('Expected a TransactionSigner.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null =\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type IInstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: 'omitted' | 'programId'\n) {\n return (\n account: ResolvedAccount\n ): IAccountMeta | IAccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n): value is TransactionSigner {\n return (\n !!value &&\n typeof value === 'object' &&\n 'address' in value &&\n kitIsTransactionSigner(value)\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR = 23;\n\nexport function getAmountToUiAmountDiscriminatorBytes() {\n return getU8Encoder().encode(AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR);\n}\n\nexport type AmountToUiAmountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AmountToUiAmountInstructionData = {\n discriminator: number;\n /** The amount of tokens to reformat. */\n amount: bigint;\n};\n\nexport type AmountToUiAmountInstructionDataArgs = {\n /** The amount of tokens to reformat. */\n amount: number | bigint;\n};\n\nexport function getAmountToUiAmountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AMOUNT_TO_UI_AMOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getAmountToUiAmountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getAmountToUiAmountInstructionDataCodec(): Codec<\n AmountToUiAmountInstructionDataArgs,\n AmountToUiAmountInstructionData\n> {\n return combineCodec(\n getAmountToUiAmountInstructionDataEncoder(),\n getAmountToUiAmountInstructionDataDecoder()\n );\n}\n\nexport type AmountToUiAmountInput = {\n /** The mint to calculate for. */\n mint: Address;\n amount: AmountToUiAmountInstructionDataArgs['amount'];\n};\n\nexport function getAmountToUiAmountInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: AmountToUiAmountInput,\n config?: { programAddress?: TProgramAddress }\n): AmountToUiAmountInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getAmountToUiAmountInstructionDataEncoder().encode(\n args as AmountToUiAmountInstructionDataArgs\n ),\n } as AmountToUiAmountInstruction;\n\n return instruction;\n}\n\nexport type ParsedAmountToUiAmountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: AmountToUiAmountInstructionData;\n};\n\nexport function parseAmountToUiAmountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAmountToUiAmountInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getAmountToUiAmountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR = 27;\n\nexport function getApplyConfidentialPendingBalanceDiscriminatorBytes() {\n return getU8Encoder().encode(\n APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR\n );\n}\n\nexport const APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 8;\n\nexport function getApplyConfidentialPendingBalanceConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ApplyConfidentialPendingBalanceInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApplyConfidentialPendingBalanceInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /**\n * The expected number of pending balance credits since the last successful\n * `ApplyPendingBalance` instruction\n */\n expectedPendingBalanceCreditCounter: bigint;\n /**\n * The new decryptable balance if the pending balance is applied\n * successfully\n */\n newDecryptableAvailableBalance: DecryptableBalance;\n};\n\nexport type ApplyConfidentialPendingBalanceInstructionDataArgs = {\n /**\n * The expected number of pending balance credits since the last successful\n * `ApplyPendingBalance` instruction\n */\n expectedPendingBalanceCreditCounter: number | bigint;\n /**\n * The new decryptable balance if the pending balance is applied\n * successfully\n */\n newDecryptableAvailableBalance: DecryptableBalanceArgs;\n};\n\nexport function getApplyConfidentialPendingBalanceInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['expectedPendingBalanceCreditCounter', getU64Encoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: APPLY_CONFIDENTIAL_PENDING_BALANCE_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n APPLY_CONFIDENTIAL_PENDING_BALANCE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getApplyConfidentialPendingBalanceInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['expectedPendingBalanceCreditCounter', getU64Decoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ]);\n}\n\nexport function getApplyConfidentialPendingBalanceInstructionDataCodec(): Codec<\n ApplyConfidentialPendingBalanceInstructionDataArgs,\n ApplyConfidentialPendingBalanceInstructionData\n> {\n return combineCodec(\n getApplyConfidentialPendingBalanceInstructionDataEncoder(),\n getApplyConfidentialPendingBalanceInstructionDataDecoder()\n );\n}\n\nexport type ApplyConfidentialPendingBalanceInput<\n TAccountToken extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n expectedPendingBalanceCreditCounter: ApplyConfidentialPendingBalanceInstructionDataArgs['expectedPendingBalanceCreditCounter'];\n newDecryptableAvailableBalance: ApplyConfidentialPendingBalanceInstructionDataArgs['newDecryptableAvailableBalance'];\n multiSigners?: Array;\n};\n\nexport function getApplyConfidentialPendingBalanceInstruction<\n TAccountToken extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ApplyConfidentialPendingBalanceInput,\n config?: { programAddress?: TProgramAddress }\n): ApplyConfidentialPendingBalanceInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getApplyConfidentialPendingBalanceInstructionDataEncoder().encode(\n args as ApplyConfidentialPendingBalanceInstructionDataArgs\n ),\n } as ApplyConfidentialPendingBalanceInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedApplyConfidentialPendingBalanceInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[1];\n };\n data: ApplyConfidentialPendingBalanceInstructionData;\n};\n\nexport function parseApplyConfidentialPendingBalanceInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApplyConfidentialPendingBalanceInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getApplyConfidentialPendingBalanceInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_DISCRIMINATOR = 4;\n\nexport function getApproveDiscriminatorBytes() {\n return getU8Encoder().encode(APPROVE_DISCRIMINATOR);\n}\n\nexport type ApproveInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountDelegate extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountDelegate extends string\n ? ReadonlyAccount\n : TAccountDelegate,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApproveInstructionData = {\n discriminator: number;\n /** The amount of tokens the delegate is approved for. */\n amount: bigint;\n};\n\nexport type ApproveInstructionDataArgs = {\n /** The amount of tokens the delegate is approved for. */\n amount: number | bigint;\n};\n\nexport function getApproveInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: APPROVE_DISCRIMINATOR })\n );\n}\n\nexport function getApproveInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getApproveInstructionDataCodec(): Codec<\n ApproveInstructionDataArgs,\n ApproveInstructionData\n> {\n return combineCodec(\n getApproveInstructionDataEncoder(),\n getApproveInstructionDataDecoder()\n );\n}\n\nexport type ApproveInput<\n TAccountSource extends string = string,\n TAccountDelegate extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The delegate. */\n delegate: Address;\n /** The source account owner or its multisignature account. */\n owner: Address | TransactionSigner;\n amount: ApproveInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getApproveInstruction<\n TAccountSource extends string,\n TAccountDelegate extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ApproveInput,\n config?: { programAddress?: TProgramAddress }\n): ApproveInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n delegate: { value: input.delegate ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.delegate),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getApproveInstructionDataEncoder().encode(\n args as ApproveInstructionDataArgs\n ),\n } as ApproveInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedApproveInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The delegate. */\n delegate: TAccountMetas[1];\n /** The source account owner or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: ApproveInstructionData;\n};\n\nexport function parseApproveInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApproveInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n delegate: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getApproveInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_CHECKED_DISCRIMINATOR = 13;\n\nexport function getApproveCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(APPROVE_CHECKED_DISCRIMINATOR);\n}\n\nexport type ApproveCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDelegate extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDelegate extends string\n ? ReadonlyAccount\n : TAccountDelegate,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApproveCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens the delegate is approved for. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type ApproveCheckedInstructionDataArgs = {\n /** The amount of tokens the delegate is approved for. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getApproveCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: APPROVE_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getApproveCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getApproveCheckedInstructionDataCodec(): Codec<\n ApproveCheckedInstructionDataArgs,\n ApproveCheckedInstructionData\n> {\n return combineCodec(\n getApproveCheckedInstructionDataEncoder(),\n getApproveCheckedInstructionDataDecoder()\n );\n}\n\nexport type ApproveCheckedInput<\n TAccountSource extends string = string,\n TAccountMint extends string = string,\n TAccountDelegate extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The token mint. */\n mint: Address;\n /** The delegate. */\n delegate: Address;\n /** The source account owner or its multisignature account. */\n owner: Address | TransactionSigner;\n amount: ApproveCheckedInstructionDataArgs['amount'];\n decimals: ApproveCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getApproveCheckedInstruction<\n TAccountSource extends string,\n TAccountMint extends string,\n TAccountDelegate extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ApproveCheckedInput<\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n TAccountOwner\n >,\n config?: { programAddress?: TProgramAddress }\n): ApproveCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n delegate: { value: input.delegate ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.delegate),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getApproveCheckedInstructionDataEncoder().encode(\n args as ApproveCheckedInstructionDataArgs\n ),\n } as ApproveCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDelegate,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedApproveCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The delegate. */\n delegate: TAccountMetas[2];\n /** The source account owner or its multisignature account. */\n owner: TAccountMetas[3];\n };\n data: ApproveCheckedInstructionData;\n};\n\nexport function parseApproveCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApproveCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n mint: getNextAccount(),\n delegate: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getApproveCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getApproveConfidentialTransferAccountDiscriminatorBytes() {\n return getU8Encoder().encode(\n APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport const APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 3;\n\nexport function getApproveConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ApproveConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ApproveConfidentialTransferAccountInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n};\n\nexport type ApproveConfidentialTransferAccountInstructionDataArgs = {};\n\nexport function getApproveConfidentialTransferAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n APPROVE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getApproveConfidentialTransferAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getApproveConfidentialTransferAccountInstructionDataCodec(): Codec<\n ApproveConfidentialTransferAccountInstructionDataArgs,\n ApproveConfidentialTransferAccountInstructionData\n> {\n return combineCodec(\n getApproveConfidentialTransferAccountInstructionDataEncoder(),\n getApproveConfidentialTransferAccountInstructionDataDecoder()\n );\n}\n\nexport type ApproveConfidentialTransferAccountInput<\n TAccountToken extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account to approve. */\n token: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /** Confidential transfer mint authority. */\n authority: TransactionSigner;\n};\n\nexport function getApproveConfidentialTransferAccountInstruction<\n TAccountToken extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ApproveConfidentialTransferAccountInput<\n TAccountToken,\n TAccountMint,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ApproveConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ],\n programAddress,\n data: getApproveConfidentialTransferAccountInstructionDataEncoder().encode(\n {}\n ),\n } as ApproveConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedApproveConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account to approve. */\n token: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /** Confidential transfer mint authority. */\n authority: TAccountMetas[2];\n };\n data: ApproveConfidentialTransferAccountInstructionData;\n};\n\nexport function parseApproveConfidentialTransferAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedApproveConfidentialTransferAccountInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getApproveConfidentialTransferAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_DISCRIMINATOR = 8;\n\nexport function getBurnDiscriminatorBytes() {\n return getU8Encoder().encode(BURN_DISCRIMINATOR);\n}\n\nexport type BurnInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type BurnInstructionData = {\n /** The amount of tokens to burn. */\n discriminator: number;\n amount: bigint;\n};\n\nexport type BurnInstructionDataArgs = { amount: number | bigint };\n\nexport function getBurnInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: BURN_DISCRIMINATOR })\n );\n}\n\nexport function getBurnInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getBurnInstructionDataCodec(): Codec<\n BurnInstructionDataArgs,\n BurnInstructionData\n> {\n return combineCodec(\n getBurnInstructionDataEncoder(),\n getBurnInstructionDataDecoder()\n );\n}\n\nexport type BurnInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The account to burn from. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: BurnInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getBurnInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: BurnInput,\n config?: { programAddress?: TProgramAddress }\n): BurnInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getBurnInstructionDataEncoder().encode(\n args as BurnInstructionDataArgs\n ),\n } as BurnInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedBurnInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to burn from. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: BurnInstructionData;\n};\n\nexport function parseBurnInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedBurnInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getBurnInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const BURN_CHECKED_DISCRIMINATOR = 15;\n\nexport function getBurnCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(BURN_CHECKED_DISCRIMINATOR);\n}\n\nexport type BurnCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type BurnCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens to burn. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type BurnCheckedInstructionDataArgs = {\n /** The amount of tokens to burn. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getBurnCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: BURN_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getBurnCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getBurnCheckedInstructionDataCodec(): Codec<\n BurnCheckedInstructionDataArgs,\n BurnCheckedInstructionData\n> {\n return combineCodec(\n getBurnCheckedInstructionDataEncoder(),\n getBurnCheckedInstructionDataDecoder()\n );\n}\n\nexport type BurnCheckedInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The account to burn from. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: BurnCheckedInstructionDataArgs['amount'];\n decimals: BurnCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getBurnCheckedInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: BurnCheckedInput,\n config?: { programAddress?: TProgramAddress }\n): BurnCheckedInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getBurnCheckedInstructionDataEncoder().encode(\n args as BurnCheckedInstructionDataArgs\n ),\n } as BurnCheckedInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedBurnCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to burn from. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: BurnCheckedInstructionData;\n};\n\nexport function parseBurnCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedBurnCheckedInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getBurnCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CLOSE_ACCOUNT_DISCRIMINATOR = 9;\n\nexport function getCloseAccountDiscriminatorBytes() {\n return getU8Encoder().encode(CLOSE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type CloseAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseAccountInstructionData = { discriminator: number };\n\nexport type CloseAccountInstructionDataArgs = {};\n\nexport function getCloseAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: CLOSE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCloseAccountInstructionDataCodec(): Codec<\n CloseAccountInstructionDataArgs,\n CloseAccountInstructionData\n> {\n return combineCodec(\n getCloseAccountInstructionDataEncoder(),\n getCloseAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseAccountInput<\n TAccountAccount extends string = string,\n TAccountDestination extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to close. */\n account: Address;\n /** The destination account. */\n destination: Address;\n /** The account's owner or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getCloseAccountInstruction<\n TAccountAccount extends string,\n TAccountDestination extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: CloseAccountInput,\n config?: { programAddress?: TProgramAddress }\n): CloseAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountDestination,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getCloseAccountInstructionDataEncoder().encode({}),\n } as CloseAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountDestination,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedCloseAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to close. */\n account: TAccountMetas[0];\n /** The destination account. */\n destination: TAccountMetas[1];\n /** The account's owner or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: CloseAccountInstructionData;\n};\n\nexport function parseCloseAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCloseAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n destination: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getCloseAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CONFIDENTIAL_DEPOSIT_DISCRIMINATOR = 27;\n\nexport function getConfidentialDepositDiscriminatorBytes() {\n return getU8Encoder().encode(CONFIDENTIAL_DEPOSIT_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 5;\n\nexport function getConfidentialDepositConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ConfidentialDepositInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ConfidentialDepositInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /** The amount of tokens to deposit. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type ConfidentialDepositInstructionDataArgs = {\n /** The amount of tokens to deposit. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getConfidentialDepositInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CONFIDENTIAL_DEPOSIT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n CONFIDENTIAL_DEPOSIT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getConfidentialDepositInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getConfidentialDepositInstructionDataCodec(): Codec<\n ConfidentialDepositInstructionDataArgs,\n ConfidentialDepositInstructionData\n> {\n return combineCodec(\n getConfidentialDepositInstructionDataEncoder(),\n getConfidentialDepositInstructionDataDecoder()\n );\n}\n\nexport type ConfidentialDepositInput<\n TAccountToken extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: ConfidentialDepositInstructionDataArgs['amount'];\n decimals: ConfidentialDepositInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getConfidentialDepositInstruction<\n TAccountToken extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ConfidentialDepositInput<\n TAccountToken,\n TAccountMint,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ConfidentialDepositInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getConfidentialDepositInstructionDataEncoder().encode(\n args as ConfidentialDepositInstructionDataArgs\n ),\n } as ConfidentialDepositInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedConfidentialDepositInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: ConfidentialDepositInstructionData;\n};\n\nexport function parseConfidentialDepositInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedConfidentialDepositInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getConfidentialDepositInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 27;\n\nexport function getConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 7;\n\nexport function getConfidentialTransferConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ConfidentialTransferInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSourceToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestinationToken extends string | IAccountMeta = string,\n TAccountInstructionsSysvar extends string | IAccountMeta = string,\n TAccountEqualityRecord extends string | IAccountMeta = string,\n TAccountCiphertextValidityRecord extends\n | string\n | IAccountMeta = string,\n TAccountRangeRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSourceToken extends string\n ? WritableAccount\n : TAccountSourceToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestinationToken extends string\n ? WritableAccount\n : TAccountDestinationToken,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvar,\n TAccountEqualityRecord extends string\n ? ReadonlyAccount\n : TAccountEqualityRecord,\n TAccountCiphertextValidityRecord extends string\n ? ReadonlyAccount\n : TAccountCiphertextValidityRecord,\n TAccountRangeRecord extends string\n ? ReadonlyAccount\n : TAccountRangeRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ConfidentialTransferInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /** The new source decryptable balance if the transfer succeeds. */\n newSourceDecryptableAvailableBalance: DecryptableBalance;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `Transfer` instruction in the transaction. If the offset is\n * `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n * instruction to the `Transfer` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n ciphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU128Data`\n * instruction to the `Transfer` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialTransferInstructionDataArgs = {\n /** The new source decryptable balance if the transfer succeeds. */\n newSourceDecryptableAvailableBalance: DecryptableBalanceArgs;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `Transfer` instruction in the transaction. If the offset is\n * `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n * instruction to the `Transfer` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n ciphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU128Data`\n * instruction to the `Transfer` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialTransferInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['newSourceDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ['equalityProofInstructionOffset', getI8Encoder()],\n ['ciphertextValidityProofInstructionOffset', getI8Encoder()],\n ['rangeProofInstructionOffset', getI8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n CONFIDENTIAL_TRANSFER_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getConfidentialTransferInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['newSourceDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ['equalityProofInstructionOffset', getI8Decoder()],\n ['ciphertextValidityProofInstructionOffset', getI8Decoder()],\n ['rangeProofInstructionOffset', getI8Decoder()],\n ]);\n}\n\nexport function getConfidentialTransferInstructionDataCodec(): Codec<\n ConfidentialTransferInstructionDataArgs,\n ConfidentialTransferInstructionData\n> {\n return combineCodec(\n getConfidentialTransferInstructionDataEncoder(),\n getConfidentialTransferInstructionDataDecoder()\n );\n}\n\nexport type ConfidentialTransferInput<\n TAccountSourceToken extends string = string,\n TAccountMint extends string = string,\n TAccountDestinationToken extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountEqualityRecord extends string = string,\n TAccountCiphertextValidityRecord extends string = string,\n TAccountRangeRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source SPL Token account. */\n sourceToken: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /** The destination SPL Token account. */\n destinationToken: Address;\n /**\n * (Optional) Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n instructionsSysvar?: Address;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: Address;\n /** (Optional) Ciphertext validity proof record account or context state account. */\n ciphertextValidityRecord?: Address;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n newSourceDecryptableAvailableBalance: ConfidentialTransferInstructionDataArgs['newSourceDecryptableAvailableBalance'];\n equalityProofInstructionOffset: ConfidentialTransferInstructionDataArgs['equalityProofInstructionOffset'];\n ciphertextValidityProofInstructionOffset: ConfidentialTransferInstructionDataArgs['ciphertextValidityProofInstructionOffset'];\n rangeProofInstructionOffset: ConfidentialTransferInstructionDataArgs['rangeProofInstructionOffset'];\n multiSigners?: Array;\n};\n\nexport function getConfidentialTransferInstruction<\n TAccountSourceToken extends string,\n TAccountMint extends string,\n TAccountDestinationToken extends string,\n TAccountInstructionsSysvar extends string,\n TAccountEqualityRecord extends string,\n TAccountCiphertextValidityRecord extends string,\n TAccountRangeRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ConfidentialTransferInput<\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountCiphertextValidityRecord,\n TAccountRangeRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ConfidentialTransferInstruction<\n TProgramAddress,\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountCiphertextValidityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceToken: { value: input.sourceToken ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n destinationToken: {\n value: input.destinationToken ?? null,\n isWritable: true,\n },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n ciphertextValidityRecord: {\n value: input.ciphertextValidityRecord ?? null,\n isWritable: false,\n },\n rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceToken),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destinationToken),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.equalityRecord),\n getAccountMeta(accounts.ciphertextValidityRecord),\n getAccountMeta(accounts.rangeRecord),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getConfidentialTransferInstructionDataEncoder().encode(\n args as ConfidentialTransferInstructionDataArgs\n ),\n } as ConfidentialTransferInstruction<\n TProgramAddress,\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountCiphertextValidityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedConfidentialTransferInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source SPL Token account. */\n sourceToken: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /** The destination SPL Token account. */\n destinationToken: TAccountMetas[2];\n /**\n * (Optional) Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n\n instructionsSysvar?: TAccountMetas[3] | undefined;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: TAccountMetas[4] | undefined;\n /** (Optional) Ciphertext validity proof record account or context state account. */\n ciphertextValidityRecord?: TAccountMetas[5] | undefined;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: TAccountMetas[6] | undefined;\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[7];\n };\n data: ConfidentialTransferInstructionData;\n};\n\nexport function parseConfidentialTransferInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedConfidentialTransferInstruction {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceToken: getNextAccount(),\n mint: getNextAccount(),\n destinationToken: getNextAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n equalityRecord: getNextOptionalAccount(),\n ciphertextValidityRecord: getNextOptionalAccount(),\n rangeRecord: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getConfidentialTransferInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR = 27;\n\nexport function getConfidentialTransferWithFeeDiscriminatorBytes() {\n return getU8Encoder().encode(CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 13;\n\nexport function getConfidentialTransferWithFeeConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ConfidentialTransferWithFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSourceToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestinationToken extends string | IAccountMeta = string,\n TAccountInstructionsSysvar extends string | IAccountMeta = string,\n TAccountEqualityRecord extends string | IAccountMeta = string,\n TAccountTransferAmountCiphertextValidityRecord extends\n | string\n | IAccountMeta = string,\n TAccountFeeSigmaRecord extends string | IAccountMeta = string,\n TAccountFeeCiphertextValidityRecord extends\n | string\n | IAccountMeta = string,\n TAccountRangeRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSourceToken extends string\n ? WritableAccount\n : TAccountSourceToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestinationToken extends string\n ? WritableAccount\n : TAccountDestinationToken,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvar,\n TAccountEqualityRecord extends string\n ? ReadonlyAccount\n : TAccountEqualityRecord,\n TAccountTransferAmountCiphertextValidityRecord extends string\n ? ReadonlyAccount\n : TAccountTransferAmountCiphertextValidityRecord,\n TAccountFeeSigmaRecord extends string\n ? ReadonlyAccount\n : TAccountFeeSigmaRecord,\n TAccountFeeCiphertextValidityRecord extends string\n ? ReadonlyAccount\n : TAccountFeeCiphertextValidityRecord,\n TAccountRangeRecord extends string\n ? ReadonlyAccount\n : TAccountRangeRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ConfidentialTransferWithFeeInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /** The new source decryptable balance if the transfer succeeds. */\n newSourceDecryptableAvailableBalance: DecryptableBalance;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `TransferWithFee` instruction in the transaction. If the offset\n * is `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n transferAmountCiphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::VerifyPercentageWithFee`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n feeSigmaProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext2HandlesValidity`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n feeCiphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU256Data`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialTransferWithFeeInstructionDataArgs = {\n /** The new source decryptable balance if the transfer succeeds. */\n newSourceDecryptableAvailableBalance: DecryptableBalanceArgs;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `TransferWithFee` instruction in the transaction. If the offset\n * is `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n transferAmountCiphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::VerifyPercentageWithFee`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n feeSigmaProofInstructionOffset: number;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyBatchedGroupedCiphertext2HandlesValidity`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n feeCiphertextValidityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU256Data`\n * instruction to the `TransferWithFee` instruction in the transaction.\n * If the offset is `0`, then use a context state account for the\n * proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialTransferWithFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['newSourceDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ['equalityProofInstructionOffset', getI8Encoder()],\n [\n 'transferAmountCiphertextValidityProofInstructionOffset',\n getI8Encoder(),\n ],\n ['feeSigmaProofInstructionOffset', getI8Encoder()],\n ['feeCiphertextValidityProofInstructionOffset', getI8Encoder()],\n ['rangeProofInstructionOffset', getI8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CONFIDENTIAL_TRANSFER_WITH_FEE_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n CONFIDENTIAL_TRANSFER_WITH_FEE_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getConfidentialTransferWithFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['newSourceDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ['equalityProofInstructionOffset', getI8Decoder()],\n ['transferAmountCiphertextValidityProofInstructionOffset', getI8Decoder()],\n ['feeSigmaProofInstructionOffset', getI8Decoder()],\n ['feeCiphertextValidityProofInstructionOffset', getI8Decoder()],\n ['rangeProofInstructionOffset', getI8Decoder()],\n ]);\n}\n\nexport function getConfidentialTransferWithFeeInstructionDataCodec(): Codec<\n ConfidentialTransferWithFeeInstructionDataArgs,\n ConfidentialTransferWithFeeInstructionData\n> {\n return combineCodec(\n getConfidentialTransferWithFeeInstructionDataEncoder(),\n getConfidentialTransferWithFeeInstructionDataDecoder()\n );\n}\n\nexport type ConfidentialTransferWithFeeInput<\n TAccountSourceToken extends string = string,\n TAccountMint extends string = string,\n TAccountDestinationToken extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountEqualityRecord extends string = string,\n TAccountTransferAmountCiphertextValidityRecord extends string = string,\n TAccountFeeSigmaRecord extends string = string,\n TAccountFeeCiphertextValidityRecord extends string = string,\n TAccountRangeRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source SPL Token account. */\n sourceToken: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /** The destination SPL Token account. */\n destinationToken: Address;\n /**\n * (Optional) Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n instructionsSysvar?: Address;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: Address;\n /**\n * (Optional) Transfer amount ciphertext validity proof record\n * account or context state account.\n */\n transferAmountCiphertextValidityRecord?: Address;\n /** (Optional) Fee sigma proof record account or context state account. */\n feeSigmaRecord?: Address;\n /** (Optional) Fee ciphertext validity proof record account or context state account. */\n feeCiphertextValidityRecord?: Address;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n newSourceDecryptableAvailableBalance: ConfidentialTransferWithFeeInstructionDataArgs['newSourceDecryptableAvailableBalance'];\n equalityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['equalityProofInstructionOffset'];\n transferAmountCiphertextValidityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['transferAmountCiphertextValidityProofInstructionOffset'];\n feeSigmaProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['feeSigmaProofInstructionOffset'];\n feeCiphertextValidityProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['feeCiphertextValidityProofInstructionOffset'];\n rangeProofInstructionOffset: ConfidentialTransferWithFeeInstructionDataArgs['rangeProofInstructionOffset'];\n multiSigners?: Array;\n};\n\nexport function getConfidentialTransferWithFeeInstruction<\n TAccountSourceToken extends string,\n TAccountMint extends string,\n TAccountDestinationToken extends string,\n TAccountInstructionsSysvar extends string,\n TAccountEqualityRecord extends string,\n TAccountTransferAmountCiphertextValidityRecord extends string,\n TAccountFeeSigmaRecord extends string,\n TAccountFeeCiphertextValidityRecord extends string,\n TAccountRangeRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ConfidentialTransferWithFeeInput<\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountTransferAmountCiphertextValidityRecord,\n TAccountFeeSigmaRecord,\n TAccountFeeCiphertextValidityRecord,\n TAccountRangeRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ConfidentialTransferWithFeeInstruction<\n TProgramAddress,\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountTransferAmountCiphertextValidityRecord,\n TAccountFeeSigmaRecord,\n TAccountFeeCiphertextValidityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceToken: { value: input.sourceToken ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n destinationToken: {\n value: input.destinationToken ?? null,\n isWritable: true,\n },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n transferAmountCiphertextValidityRecord: {\n value: input.transferAmountCiphertextValidityRecord ?? null,\n isWritable: false,\n },\n feeSigmaRecord: { value: input.feeSigmaRecord ?? null, isWritable: false },\n feeCiphertextValidityRecord: {\n value: input.feeCiphertextValidityRecord ?? null,\n isWritable: false,\n },\n rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceToken),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destinationToken),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.equalityRecord),\n getAccountMeta(accounts.transferAmountCiphertextValidityRecord),\n getAccountMeta(accounts.feeSigmaRecord),\n getAccountMeta(accounts.feeCiphertextValidityRecord),\n getAccountMeta(accounts.rangeRecord),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getConfidentialTransferWithFeeInstructionDataEncoder().encode(\n args as ConfidentialTransferWithFeeInstructionDataArgs\n ),\n } as ConfidentialTransferWithFeeInstruction<\n TProgramAddress,\n TAccountSourceToken,\n TAccountMint,\n TAccountDestinationToken,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountTransferAmountCiphertextValidityRecord,\n TAccountFeeSigmaRecord,\n TAccountFeeCiphertextValidityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedConfidentialTransferWithFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source SPL Token account. */\n sourceToken: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /** The destination SPL Token account. */\n destinationToken: TAccountMetas[2];\n /**\n * (Optional) Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n\n instructionsSysvar?: TAccountMetas[3] | undefined;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: TAccountMetas[4] | undefined;\n /**\n * (Optional) Transfer amount ciphertext validity proof record\n * account or context state account.\n */\n\n transferAmountCiphertextValidityRecord?: TAccountMetas[5] | undefined;\n /** (Optional) Fee sigma proof record account or context state account. */\n feeSigmaRecord?: TAccountMetas[6] | undefined;\n /** (Optional) Fee ciphertext validity proof record account or context state account. */\n feeCiphertextValidityRecord?: TAccountMetas[7] | undefined;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: TAccountMetas[8] | undefined;\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[9];\n };\n data: ConfidentialTransferWithFeeInstructionData;\n};\n\nexport function parseConfidentialTransferWithFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedConfidentialTransferWithFeeInstruction {\n if (instruction.accounts.length < 10) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceToken: getNextAccount(),\n mint: getNextAccount(),\n destinationToken: getNextAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n equalityRecord: getNextOptionalAccount(),\n transferAmountCiphertextValidityRecord: getNextOptionalAccount(),\n feeSigmaRecord: getNextOptionalAccount(),\n feeCiphertextValidityRecord: getNextOptionalAccount(),\n rangeRecord: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getConfidentialTransferWithFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIDENTIAL_WITHDRAW_DISCRIMINATOR = 27;\n\nexport function getConfidentialWithdrawDiscriminatorBytes() {\n return getU8Encoder().encode(CONFIDENTIAL_WITHDRAW_DISCRIMINATOR);\n}\n\nexport const CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 6;\n\nexport function getConfidentialWithdrawConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ConfidentialWithdrawInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountInstructionsSysvar extends string | IAccountMeta = string,\n TAccountEqualityRecord extends string | IAccountMeta = string,\n TAccountRangeRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvar,\n TAccountEqualityRecord extends string\n ? ReadonlyAccount\n : TAccountEqualityRecord,\n TAccountRangeRecord extends string\n ? ReadonlyAccount\n : TAccountRangeRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ConfidentialWithdrawInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /** The amount of tokens to withdraw. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The new decryptable balance if the withdrawal succeeds. */\n newDecryptableAvailableBalance: DecryptableBalance;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `Withdraw` instruction in the transaction. If the offset is\n * `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU64`\n * instruction to the `Withdraw` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport type ConfidentialWithdrawInstructionDataArgs = {\n /** The amount of tokens to withdraw. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The new decryptable balance if the withdrawal succeeds. */\n newDecryptableAvailableBalance: DecryptableBalanceArgs;\n /**\n * Relative location of the\n * `ProofInstruction::VerifyCiphertextCommitmentEquality` instruction\n * to the `Withdraw` instruction in the transaction. If the offset is\n * `0`, then use a context state account for the proof.\n */\n equalityProofInstructionOffset: number;\n /**\n * Relative location of the `ProofInstruction::BatchedRangeProofU64`\n * instruction to the `Withdraw` instruction in the transaction. If the\n * offset is `0`, then use a context state account for the proof.\n */\n rangeProofInstructionOffset: number;\n};\n\nexport function getConfidentialWithdrawInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ['equalityProofInstructionOffset', getI8Encoder()],\n ['rangeProofInstructionOffset', getI8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CONFIDENTIAL_WITHDRAW_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n CONFIDENTIAL_WITHDRAW_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getConfidentialWithdrawInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ['equalityProofInstructionOffset', getI8Decoder()],\n ['rangeProofInstructionOffset', getI8Decoder()],\n ]);\n}\n\nexport function getConfidentialWithdrawInstructionDataCodec(): Codec<\n ConfidentialWithdrawInstructionDataArgs,\n ConfidentialWithdrawInstructionData\n> {\n return combineCodec(\n getConfidentialWithdrawInstructionDataEncoder(),\n getConfidentialWithdrawInstructionDataDecoder()\n );\n}\n\nexport type ConfidentialWithdrawInput<\n TAccountToken extends string = string,\n TAccountMint extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountEqualityRecord extends string = string,\n TAccountRangeRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /**\n * Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n instructionsSysvar?: Address;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: Address;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: ConfidentialWithdrawInstructionDataArgs['amount'];\n decimals: ConfidentialWithdrawInstructionDataArgs['decimals'];\n newDecryptableAvailableBalance: ConfidentialWithdrawInstructionDataArgs['newDecryptableAvailableBalance'];\n equalityProofInstructionOffset: ConfidentialWithdrawInstructionDataArgs['equalityProofInstructionOffset'];\n rangeProofInstructionOffset: ConfidentialWithdrawInstructionDataArgs['rangeProofInstructionOffset'];\n multiSigners?: Array;\n};\n\nexport function getConfidentialWithdrawInstruction<\n TAccountToken extends string,\n TAccountMint extends string,\n TAccountInstructionsSysvar extends string,\n TAccountEqualityRecord extends string,\n TAccountRangeRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ConfidentialWithdrawInput<\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountRangeRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ConfidentialWithdrawInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n equalityRecord: { value: input.equalityRecord ?? null, isWritable: false },\n rangeRecord: { value: input.rangeRecord ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.equalityRecord),\n getAccountMeta(accounts.rangeRecord),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getConfidentialWithdrawInstructionDataEncoder().encode(\n args as ConfidentialWithdrawInstructionDataArgs\n ),\n } as ConfidentialWithdrawInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvar,\n TAccountEqualityRecord,\n TAccountRangeRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedConfidentialWithdrawInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /**\n * Instructions sysvar if at least one of the\n * `zk_elgamal_proof` instructions are included in the same\n * transaction.\n */\n\n instructionsSysvar?: TAccountMetas[2] | undefined;\n /** (Optional) Equality proof record account or context state account. */\n equalityRecord?: TAccountMetas[3] | undefined;\n /** (Optional) Range proof record account or context state account. */\n rangeRecord?: TAccountMetas[4] | undefined;\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[5];\n };\n data: ConfidentialWithdrawInstructionData;\n};\n\nexport function parseConfidentialWithdrawInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedConfidentialWithdrawInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n mint: getNextAccount(),\n instructionsSysvar: getNextOptionalAccount(),\n equalityRecord: getNextOptionalAccount(),\n rangeRecord: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getConfidentialWithdrawInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getConfigureConfidentialTransferAccountDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport const CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 2;\n\nexport function getConfigureConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type ConfigureConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountInstructionsSysvarOrContextState extends\n | string\n | IAccountMeta = 'Sysvar1nstructions1111111111111111111111111',\n TAccountRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountInstructionsSysvarOrContextState extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvarOrContextState,\n TAccountRecord extends string\n ? ReadonlyAccount\n : TAccountRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ConfigureConfidentialTransferAccountInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /** The decryptable balance (always 0) once the configure account succeeds. */\n decryptableZeroBalance: DecryptableBalance;\n /**\n * The maximum number of despots and transfers that an account can receiver\n * before the `ApplyPendingBalance` is executed\n */\n maximumPendingBalanceCreditCounter: bigint;\n /**\n * Relative location of the `ProofInstruction::ZeroCiphertextProof`\n * instruction to the `ConfigureAccount` instruction in the\n * transaction. If the offset is `0`, then use a context state account\n * for the proof.\n */\n proofInstructionOffset: number;\n};\n\nexport type ConfigureConfidentialTransferAccountInstructionDataArgs = {\n /** The decryptable balance (always 0) once the configure account succeeds. */\n decryptableZeroBalance: DecryptableBalanceArgs;\n /**\n * The maximum number of despots and transfers that an account can receiver\n * before the `ApplyPendingBalance` is executed\n */\n maximumPendingBalanceCreditCounter: number | bigint;\n /**\n * Relative location of the `ProofInstruction::ZeroCiphertextProof`\n * instruction to the `ConfigureAccount` instruction in the\n * transaction. If the offset is `0`, then use a context state account\n * for the proof.\n */\n proofInstructionOffset: number;\n};\n\nexport function getConfigureConfidentialTransferAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['decryptableZeroBalance', getDecryptableBalanceEncoder()],\n ['maximumPendingBalanceCreditCounter', getU64Encoder()],\n ['proofInstructionOffset', getI8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n CONFIGURE_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getConfigureConfidentialTransferAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['decryptableZeroBalance', getDecryptableBalanceDecoder()],\n ['maximumPendingBalanceCreditCounter', getU64Decoder()],\n ['proofInstructionOffset', getI8Decoder()],\n ]);\n}\n\nexport function getConfigureConfidentialTransferAccountInstructionDataCodec(): Codec<\n ConfigureConfidentialTransferAccountInstructionDataArgs,\n ConfigureConfidentialTransferAccountInstructionData\n> {\n return combineCodec(\n getConfigureConfidentialTransferAccountInstructionDataEncoder(),\n getConfigureConfidentialTransferAccountInstructionDataDecoder()\n );\n}\n\nexport type ConfigureConfidentialTransferAccountInput<\n TAccountToken extends string = string,\n TAccountMint extends string = string,\n TAccountInstructionsSysvarOrContextState extends string = string,\n TAccountRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The corresponding SPL Token mint. */\n mint: Address;\n /**\n * Instructions sysvar if `VerifyPubkeyValidity` is included in\n * the same transaction or context state account if\n * `VerifyPubkeyValidity` is pre-verified into a context state\n * account.\n */\n instructionsSysvarOrContextState?: Address;\n /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n record?: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n decryptableZeroBalance: ConfigureConfidentialTransferAccountInstructionDataArgs['decryptableZeroBalance'];\n maximumPendingBalanceCreditCounter: ConfigureConfidentialTransferAccountInstructionDataArgs['maximumPendingBalanceCreditCounter'];\n proofInstructionOffset: ConfigureConfidentialTransferAccountInstructionDataArgs['proofInstructionOffset'];\n multiSigners?: Array;\n};\n\nexport function getConfigureConfidentialTransferAccountInstruction<\n TAccountToken extends string,\n TAccountMint extends string,\n TAccountInstructionsSysvarOrContextState extends string,\n TAccountRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ConfigureConfidentialTransferAccountInput<\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): ConfigureConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n instructionsSysvarOrContextState: {\n value: input.instructionsSysvarOrContextState ?? null,\n isWritable: false,\n },\n record: { value: input.record ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.instructionsSysvarOrContextState.value) {\n accounts.instructionsSysvarOrContextState.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.instructionsSysvarOrContextState),\n getAccountMeta(accounts.record),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getConfigureConfidentialTransferAccountInstructionDataEncoder().encode(\n args as ConfigureConfidentialTransferAccountInstructionDataArgs\n ),\n } as ConfigureConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountMint,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedConfigureConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The corresponding SPL Token mint. */\n mint: TAccountMetas[1];\n /**\n * Instructions sysvar if `VerifyPubkeyValidity` is included in\n * the same transaction or context state account if\n * `VerifyPubkeyValidity` is pre-verified into a context state\n * account.\n */\n\n instructionsSysvarOrContextState: TAccountMetas[2];\n /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n record?: TAccountMetas[3] | undefined;\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[4];\n };\n data: ConfigureConfidentialTransferAccountInstructionData;\n};\n\nexport function parseConfigureConfidentialTransferAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedConfigureConfidentialTransferAccountInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n mint: getNextAccount(),\n instructionsSysvarOrContextState: getNextAccount(),\n record: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getConfigureConfidentialTransferAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n getAddressEncoder,\n getProgramDerivedAddress,\n type Address,\n type ProgramDerivedAddress,\n} from '@solana/kit';\n\nexport type AssociatedTokenSeeds = {\n /** The wallet address of the associated token account. */\n owner: Address;\n /** The address of the token program to use. */\n tokenProgram: Address;\n /** The mint address of the associated token account. */\n mint: Address;\n};\n\nexport async function findAssociatedTokenPda(\n seeds: AssociatedTokenSeeds,\n config: { programAddress?: Address | undefined } = {}\n): Promise {\n const {\n programAddress = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n } = config;\n return await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getAddressEncoder().encode(seeds.owner),\n getAddressEncoder().encode(seeds.tokenProgram),\n getAddressEncoder().encode(seeds.mint),\n ],\n });\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR = 0;\n\nexport function getCreateAssociatedTokenDiscriminatorBytes() {\n return getU8Encoder().encode(CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type CreateAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountAta extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountAta extends string ? WritableAccount : TAccountAta,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAssociatedTokenInstructionData = { discriminator: number };\n\nexport type CreateAssociatedTokenInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: CREATE_ASSOCIATED_TOKEN_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCreateAssociatedTokenInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenInstructionDataCodec(): Codec<\n CreateAssociatedTokenInstructionDataArgs,\n CreateAssociatedTokenInstructionData\n> {\n return combineCodec(\n getCreateAssociatedTokenInstructionDataEncoder(),\n getCreateAssociatedTokenInstructionDataDecoder()\n );\n}\n\nexport type CreateAssociatedTokenAsyncInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata?: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getCreateAssociatedTokenInstructionAsync<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenAsyncInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.ata.value) {\n accounts.ata.value = await findAssociatedTokenPda({\n owner: expectAddress(accounts.owner.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.mint.value),\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type CreateAssociatedTokenInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getCreateAssociatedTokenInstruction<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCreateAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Funding account (must be a system account). */\n payer: TAccountMetas[0];\n /** Associated token account address to be created. */\n ata: TAccountMetas[1];\n /** Wallet address for the new associated token account. */\n owner: TAccountMetas[2];\n /** The token mint for the new associated token account. */\n mint: TAccountMetas[3];\n /** System program. */\n systemProgram: TAccountMetas[4];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[5];\n };\n data: CreateAssociatedTokenInstructionData;\n};\n\nexport function parseCreateAssociatedTokenInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCreateAssociatedTokenInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n ata: getNextAccount(),\n owner: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getCreateAssociatedTokenInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR = 1;\n\nexport function getCreateAssociatedTokenIdempotentDiscriminatorBytes() {\n return getU8Encoder().encode(\n CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR\n );\n}\n\nexport type CreateAssociatedTokenIdempotentInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountAta extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountAta extends string ? WritableAccount : TAccountAta,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAssociatedTokenIdempotentInstructionData = {\n discriminator: number;\n};\n\nexport type CreateAssociatedTokenIdempotentInstructionDataArgs = {};\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: CREATE_ASSOCIATED_TOKEN_IDEMPOTENT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateAssociatedTokenIdempotentInstructionDataCodec(): Codec<\n CreateAssociatedTokenIdempotentInstructionDataArgs,\n CreateAssociatedTokenIdempotentInstructionData\n> {\n return combineCodec(\n getCreateAssociatedTokenIdempotentInstructionDataEncoder(),\n getCreateAssociatedTokenIdempotentInstructionDataDecoder()\n );\n}\n\nexport type CreateAssociatedTokenIdempotentAsyncInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata?: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getCreateAssociatedTokenIdempotentInstructionAsync<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenIdempotentAsyncInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.ata.value) {\n accounts.ata.value = await findAssociatedTokenPda({\n owner: expectAddress(accounts.owner.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.mint.value),\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type CreateAssociatedTokenIdempotentInput<\n TAccountPayer extends string = string,\n TAccountAta extends string = string,\n TAccountOwner extends string = string,\n TAccountMint extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Funding account (must be a system account). */\n payer: TransactionSigner;\n /** Associated token account address to be created. */\n ata: Address;\n /** Wallet address for the new associated token account. */\n owner: Address;\n /** The token mint for the new associated token account. */\n mint: Address;\n /** System program. */\n systemProgram?: Address;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getCreateAssociatedTokenIdempotentInstruction<\n TAccountPayer extends string,\n TAccountAta extends string,\n TAccountOwner extends string,\n TAccountMint extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: CreateAssociatedTokenIdempotentInput<\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n ata: { value: input.ata ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n mint: { value: input.mint ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.ata),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getCreateAssociatedTokenIdempotentInstructionDataEncoder().encode({}),\n } as CreateAssociatedTokenIdempotentInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountAta,\n TAccountOwner,\n TAccountMint,\n TAccountSystemProgram,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCreateAssociatedTokenIdempotentInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Funding account (must be a system account). */\n payer: TAccountMetas[0];\n /** Associated token account address to be created. */\n ata: TAccountMetas[1];\n /** Wallet address for the new associated token account. */\n owner: TAccountMetas[2];\n /** The token mint for the new associated token account. */\n mint: TAccountMetas[3];\n /** System program. */\n systemProgram: TAccountMetas[4];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[5];\n };\n data: CreateAssociatedTokenIdempotentInstructionData;\n};\n\nexport function parseCreateAssociatedTokenIdempotentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCreateAssociatedTokenIdempotentInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n ata: getNextAccount(),\n owner: getNextAccount(),\n mint: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getCreateAssociatedTokenIdempotentInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CREATE_NATIVE_MINT_DISCRIMINATOR = 31;\n\nexport function getCreateNativeMintDiscriminatorBytes() {\n return getU8Encoder().encode(CREATE_NATIVE_MINT_DISCRIMINATOR);\n}\n\nexport type CreateNativeMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountNativeMint extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountNativeMint extends string\n ? WritableAccount\n : TAccountNativeMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateNativeMintInstructionData = { discriminator: number };\n\nexport type CreateNativeMintInstructionDataArgs = {};\n\nexport function getCreateNativeMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: CREATE_NATIVE_MINT_DISCRIMINATOR })\n );\n}\n\nexport function getCreateNativeMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getCreateNativeMintInstructionDataCodec(): Codec<\n CreateNativeMintInstructionDataArgs,\n CreateNativeMintInstructionData\n> {\n return combineCodec(\n getCreateNativeMintInstructionDataEncoder(),\n getCreateNativeMintInstructionDataDecoder()\n );\n}\n\nexport type CreateNativeMintInput<\n TAccountPayer extends string = string,\n TAccountNativeMint extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n /** Funding account (must be a system account) */\n payer: TransactionSigner;\n /** The native mint address */\n nativeMint: Address;\n /** System program for mint account funding */\n systemProgram?: Address;\n};\n\nexport function getCreateNativeMintInstruction<\n TAccountPayer extends string,\n TAccountNativeMint extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: CreateNativeMintInput<\n TAccountPayer,\n TAccountNativeMint,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateNativeMintInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountNativeMint,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n nativeMint: { value: input.nativeMint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.nativeMint),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getCreateNativeMintInstructionDataEncoder().encode({}),\n } as CreateNativeMintInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountNativeMint,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCreateNativeMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Funding account (must be a system account) */\n payer: TAccountMetas[0];\n /** The native mint address */\n nativeMint: TAccountMetas[1];\n /** System program for mint account funding */\n systemProgram: TAccountMetas[2];\n };\n data: CreateNativeMintInstructionData;\n};\n\nexport function parseCreateNativeMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedCreateNativeMintInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n nativeMint: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateNativeMintInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getDisableConfidentialCreditsDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 10;\n\nexport function getDisableConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type DisableConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableConfidentialCreditsInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n};\n\nexport type DisableConfidentialCreditsInstructionDataArgs = {};\n\nexport function getDisableConfidentialCreditsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n DISABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDisableConfidentialCreditsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getDisableConfidentialCreditsInstructionDataCodec(): Codec<\n DisableConfidentialCreditsInstructionDataArgs,\n DisableConfidentialCreditsInstructionData\n> {\n return combineCodec(\n getDisableConfidentialCreditsInstructionDataEncoder(),\n getDisableConfidentialCreditsInstructionDataDecoder()\n );\n}\n\nexport type DisableConfidentialCreditsInput<\n TAccountToken extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getDisableConfidentialCreditsInstruction<\n TAccountToken extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: DisableConfidentialCreditsInput,\n config?: { programAddress?: TProgramAddress }\n): DisableConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getDisableConfidentialCreditsInstructionDataEncoder().encode({}),\n } as DisableConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedDisableConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[1];\n };\n data: DisableConfidentialCreditsInstructionData;\n};\n\nexport function parseDisableConfidentialCreditsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDisableConfidentialCreditsInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getDisableConfidentialCreditsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_CPI_GUARD_DISCRIMINATOR = 34;\n\nexport function getDisableCpiGuardDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport const DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 1;\n\nexport function getDisableCpiGuardCpiGuardDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport type DisableCpiGuardInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableCpiGuardInstructionData = {\n discriminator: number;\n cpiGuardDiscriminator: number;\n};\n\nexport type DisableCpiGuardInstructionDataArgs = {};\n\nexport function getDisableCpiGuardInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['cpiGuardDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_CPI_GUARD_DISCRIMINATOR,\n cpiGuardDiscriminator: DISABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDisableCpiGuardInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['cpiGuardDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getDisableCpiGuardInstructionDataCodec(): Codec<\n DisableCpiGuardInstructionDataArgs,\n DisableCpiGuardInstructionData\n> {\n return combineCodec(\n getDisableCpiGuardInstructionDataEncoder(),\n getDisableCpiGuardInstructionDataDecoder()\n );\n}\n\nexport type DisableCpiGuardInput<\n TAccountToken extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The token account to update. */\n token: Address;\n /** The account's owner/delegate or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getDisableCpiGuardInstruction<\n TAccountToken extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: DisableCpiGuardInput,\n config?: { programAddress?: TProgramAddress }\n): DisableCpiGuardInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getDisableCpiGuardInstructionDataEncoder().encode({}),\n } as DisableCpiGuardInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedDisableCpiGuardInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token account to update. */\n token: TAccountMetas[0];\n /** The account's owner/delegate or its multisignature account. */\n owner: TAccountMetas[1];\n };\n data: DisableCpiGuardInstructionData;\n};\n\nexport function parseDisableCpiGuardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDisableCpiGuardInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getDisableCpiGuardInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37;\n\nexport function getDisableHarvestToMintDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_HARVEST_TO_MINT_DISCRIMINATOR);\n}\n\nexport const DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 5;\n\nexport function getDisableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type DisableHarvestToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableHarvestToMintInstructionData = {\n discriminator: number;\n confidentialTransferFeeDiscriminator: number;\n};\n\nexport type DisableHarvestToMintInstructionDataArgs = {};\n\nexport function getDisableHarvestToMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_HARVEST_TO_MINT_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n DISABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDisableHarvestToMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getDisableHarvestToMintInstructionDataCodec(): Codec<\n DisableHarvestToMintInstructionDataArgs,\n DisableHarvestToMintInstructionData\n> {\n return combineCodec(\n getDisableHarvestToMintInstructionDataEncoder(),\n getDisableHarvestToMintInstructionDataDecoder()\n );\n}\n\nexport type DisableHarvestToMintInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The token mint. */\n mint: Address;\n /** The confidential transfer fee authority */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getDisableHarvestToMintInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: DisableHarvestToMintInput,\n config?: { programAddress?: TProgramAddress }\n): DisableHarvestToMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getDisableHarvestToMintInstructionDataEncoder().encode({}),\n } as DisableHarvestToMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedDisableHarvestToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. */\n mint: TAccountMetas[0];\n /** The confidential transfer fee authority */\n authority: TAccountMetas[1];\n };\n data: DisableHarvestToMintInstructionData;\n};\n\nexport function parseDisableHarvestToMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDisableHarvestToMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getDisableHarvestToMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30;\n\nexport function getDisableMemoTransfersDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport const DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 1;\n\nexport function getDisableMemoTransfersMemoTransfersDiscriminatorBytes() {\n return getU8Encoder().encode(\n DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR\n );\n}\n\nexport type DisableMemoTransfersInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableMemoTransfersInstructionData = {\n discriminator: number;\n memoTransfersDiscriminator: number;\n};\n\nexport type DisableMemoTransfersInstructionDataArgs = {};\n\nexport function getDisableMemoTransfersInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['memoTransfersDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_MEMO_TRANSFERS_DISCRIMINATOR,\n memoTransfersDiscriminator:\n DISABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDisableMemoTransfersInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['memoTransfersDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getDisableMemoTransfersInstructionDataCodec(): Codec<\n DisableMemoTransfersInstructionDataArgs,\n DisableMemoTransfersInstructionData\n> {\n return combineCodec(\n getDisableMemoTransfersInstructionDataEncoder(),\n getDisableMemoTransfersInstructionDataDecoder()\n );\n}\n\nexport type DisableMemoTransfersInput<\n TAccountToken extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The token account to update. */\n token: Address;\n /** The account's owner or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getDisableMemoTransfersInstruction<\n TAccountToken extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: DisableMemoTransfersInput,\n config?: { programAddress?: TProgramAddress }\n): DisableMemoTransfersInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getDisableMemoTransfersInstructionDataEncoder().encode({}),\n } as DisableMemoTransfersInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedDisableMemoTransfersInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token account to update. */\n token: TAccountMetas[0];\n /** The account's owner or its multisignature account. */\n owner: TAccountMetas[1];\n };\n data: DisableMemoTransfersInstructionData;\n};\n\nexport function parseDisableMemoTransfersInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDisableMemoTransfersInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getDisableMemoTransfersInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getDisableNonConfidentialCreditsDiscriminatorBytes() {\n return getU8Encoder().encode(DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 12;\n\nexport function getDisableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type DisableNonConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DisableNonConfidentialCreditsInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n};\n\nexport type DisableNonConfidentialCreditsInstructionDataArgs = {};\n\nexport function getDisableNonConfidentialCreditsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: DISABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n DISABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDisableNonConfidentialCreditsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getDisableNonConfidentialCreditsInstructionDataCodec(): Codec<\n DisableNonConfidentialCreditsInstructionDataArgs,\n DisableNonConfidentialCreditsInstructionData\n> {\n return combineCodec(\n getDisableNonConfidentialCreditsInstructionDataEncoder(),\n getDisableNonConfidentialCreditsInstructionDataDecoder()\n );\n}\n\nexport type DisableNonConfidentialCreditsInput<\n TAccountToken extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getDisableNonConfidentialCreditsInstruction<\n TAccountToken extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: DisableNonConfidentialCreditsInput,\n config?: { programAddress?: TProgramAddress }\n): DisableNonConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getDisableNonConfidentialCreditsInstructionDataEncoder().encode({}),\n } as DisableNonConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedDisableNonConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[1];\n };\n data: DisableNonConfidentialCreditsInstructionData;\n};\n\nexport function parseDisableNonConfidentialCreditsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDisableNonConfidentialCreditsInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getDisableNonConfidentialCreditsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n none,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const EMIT_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([\n 250, 166, 180, 250, 13, 12, 184, 70,\n]);\n\nexport function getEmitTokenMetadataDiscriminatorBytes() {\n return getBytesEncoder().encode(EMIT_TOKEN_METADATA_DISCRIMINATOR);\n}\n\nexport type EmitTokenMetadataInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetadata extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMetadata extends string\n ? ReadonlyAccount\n : TAccountMetadata,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EmitTokenMetadataInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** Start of range of data to emit */\n start: Option;\n /** End of range of data to emit */\n end: Option;\n};\n\nexport type EmitTokenMetadataInstructionDataArgs = {\n /** Start of range of data to emit */\n start?: OptionOrNullable;\n /** End of range of data to emit */\n end?: OptionOrNullable;\n};\n\nexport function getEmitTokenMetadataInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n ['start', getOptionEncoder(getU64Encoder())],\n ['end', getOptionEncoder(getU64Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: EMIT_TOKEN_METADATA_DISCRIMINATOR,\n start: value.start ?? none(),\n end: value.end ?? none(),\n })\n );\n}\n\nexport function getEmitTokenMetadataInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n ['start', getOptionDecoder(getU64Decoder())],\n ['end', getOptionDecoder(getU64Decoder())],\n ]);\n}\n\nexport function getEmitTokenMetadataInstructionDataCodec(): Codec<\n EmitTokenMetadataInstructionDataArgs,\n EmitTokenMetadataInstructionData\n> {\n return combineCodec(\n getEmitTokenMetadataInstructionDataEncoder(),\n getEmitTokenMetadataInstructionDataDecoder()\n );\n}\n\nexport type EmitTokenMetadataInput = {\n metadata: Address;\n start?: EmitTokenMetadataInstructionDataArgs['start'];\n end?: EmitTokenMetadataInstructionDataArgs['end'];\n};\n\nexport function getEmitTokenMetadataInstruction<\n TAccountMetadata extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EmitTokenMetadataInput,\n config?: { programAddress?: TProgramAddress }\n): EmitTokenMetadataInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n metadata: { value: input.metadata ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.metadata)],\n programAddress,\n data: getEmitTokenMetadataInstructionDataEncoder().encode(\n args as EmitTokenMetadataInstructionDataArgs\n ),\n } as EmitTokenMetadataInstruction;\n\n return instruction;\n}\n\nexport type ParsedEmitTokenMetadataInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n metadata: TAccountMetas[0];\n };\n data: EmitTokenMetadataInstructionData;\n};\n\nexport function parseEmitTokenMetadataInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEmitTokenMetadataInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n metadata: getNextAccount(),\n },\n data: getEmitTokenMetadataInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR = 27;\n\nexport function getEmptyConfidentialTransferAccountDiscriminatorBytes() {\n return getU8Encoder().encode(\n EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport const EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 4;\n\nexport function getEmptyConfidentialTransferAccountConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type EmptyConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountInstructionsSysvarOrContextState extends\n | string\n | IAccountMeta = 'Sysvar1nstructions1111111111111111111111111',\n TAccountRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountInstructionsSysvarOrContextState extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvarOrContextState,\n TAccountRecord extends string\n ? ReadonlyAccount\n : TAccountRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EmptyConfidentialTransferAccountInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /**\n * Relative location of the `ProofInstruction::VerifyCloseAccount`\n * instruction to the `EmptyAccount` instruction in the transaction. If\n * the offset is `0`, then use a context state account for the proof.\n */\n proofInstructionOffset: number;\n};\n\nexport type EmptyConfidentialTransferAccountInstructionDataArgs = {\n /**\n * Relative location of the `ProofInstruction::VerifyCloseAccount`\n * instruction to the `EmptyAccount` instruction in the transaction. If\n * the offset is `0`, then use a context state account for the proof.\n */\n proofInstructionOffset: number;\n};\n\nexport function getEmptyConfidentialTransferAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['proofInstructionOffset', getI8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n EMPTY_CONFIDENTIAL_TRANSFER_ACCOUNT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEmptyConfidentialTransferAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['proofInstructionOffset', getI8Decoder()],\n ]);\n}\n\nexport function getEmptyConfidentialTransferAccountInstructionDataCodec(): Codec<\n EmptyConfidentialTransferAccountInstructionDataArgs,\n EmptyConfidentialTransferAccountInstructionData\n> {\n return combineCodec(\n getEmptyConfidentialTransferAccountInstructionDataEncoder(),\n getEmptyConfidentialTransferAccountInstructionDataDecoder()\n );\n}\n\nexport type EmptyConfidentialTransferAccountInput<\n TAccountToken extends string = string,\n TAccountInstructionsSysvarOrContextState extends string = string,\n TAccountRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /**\n * Instructions sysvar if `VerifyZeroCiphertext` is included in\n * the same transaction or context state account if\n * `VerifyZeroCiphertext` is pre-verified into a context state\n * account.\n */\n instructionsSysvarOrContextState?: Address;\n /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n record?: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n proofInstructionOffset: EmptyConfidentialTransferAccountInstructionDataArgs['proofInstructionOffset'];\n multiSigners?: Array;\n};\n\nexport function getEmptyConfidentialTransferAccountInstruction<\n TAccountToken extends string,\n TAccountInstructionsSysvarOrContextState extends string,\n TAccountRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EmptyConfidentialTransferAccountInput<\n TAccountToken,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): EmptyConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n instructionsSysvarOrContextState: {\n value: input.instructionsSysvarOrContextState ?? null,\n isWritable: false,\n },\n record: { value: input.record ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.instructionsSysvarOrContextState.value) {\n accounts.instructionsSysvarOrContextState.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.instructionsSysvarOrContextState),\n getAccountMeta(accounts.record),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEmptyConfidentialTransferAccountInstructionDataEncoder().encode(\n args as EmptyConfidentialTransferAccountInstructionDataArgs\n ),\n } as EmptyConfidentialTransferAccountInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedEmptyConfidentialTransferAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /**\n * Instructions sysvar if `VerifyZeroCiphertext` is included in\n * the same transaction or context state account if\n * `VerifyZeroCiphertext` is pre-verified into a context state\n * account.\n */\n\n instructionsSysvarOrContextState: TAccountMetas[1];\n /** (Optional) Record account if the accompanying proof is to be read from a record account. */\n record?: TAccountMetas[2] | undefined;\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[3];\n };\n data: EmptyConfidentialTransferAccountInstructionData;\n};\n\nexport function parseEmptyConfidentialTransferAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEmptyConfidentialTransferAccountInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n instructionsSysvarOrContextState: getNextAccount(),\n record: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getEmptyConfidentialTransferAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getEnableConfidentialCreditsDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 9;\n\nexport function getEnableConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type EnableConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EnableConfidentialCreditsInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n};\n\nexport type EnableConfidentialCreditsInstructionDataArgs = {};\n\nexport function getEnableConfidentialCreditsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENABLE_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n ENABLE_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEnableConfidentialCreditsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getEnableConfidentialCreditsInstructionDataCodec(): Codec<\n EnableConfidentialCreditsInstructionDataArgs,\n EnableConfidentialCreditsInstructionData\n> {\n return combineCodec(\n getEnableConfidentialCreditsInstructionDataEncoder(),\n getEnableConfidentialCreditsInstructionDataDecoder()\n );\n}\n\nexport type EnableConfidentialCreditsInput<\n TAccountToken extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getEnableConfidentialCreditsInstruction<\n TAccountToken extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EnableConfidentialCreditsInput,\n config?: { programAddress?: TProgramAddress }\n): EnableConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEnableConfidentialCreditsInstructionDataEncoder().encode({}),\n } as EnableConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedEnableConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[1];\n };\n data: EnableConfidentialCreditsInstructionData;\n};\n\nexport function parseEnableConfidentialCreditsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEnableConfidentialCreditsInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getEnableConfidentialCreditsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_CPI_GUARD_DISCRIMINATOR = 34;\n\nexport function getEnableCpiGuardDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport const ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR = 0;\n\nexport function getEnableCpiGuardCpiGuardDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR);\n}\n\nexport type EnableCpiGuardInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EnableCpiGuardInstructionData = {\n discriminator: number;\n cpiGuardDiscriminator: number;\n};\n\nexport type EnableCpiGuardInstructionDataArgs = {};\n\nexport function getEnableCpiGuardInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['cpiGuardDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENABLE_CPI_GUARD_DISCRIMINATOR,\n cpiGuardDiscriminator: ENABLE_CPI_GUARD_CPI_GUARD_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEnableCpiGuardInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['cpiGuardDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getEnableCpiGuardInstructionDataCodec(): Codec<\n EnableCpiGuardInstructionDataArgs,\n EnableCpiGuardInstructionData\n> {\n return combineCodec(\n getEnableCpiGuardInstructionDataEncoder(),\n getEnableCpiGuardInstructionDataDecoder()\n );\n}\n\nexport type EnableCpiGuardInput<\n TAccountToken extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The token account to update. */\n token: Address;\n /** The account's owner/delegate or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getEnableCpiGuardInstruction<\n TAccountToken extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EnableCpiGuardInput,\n config?: { programAddress?: TProgramAddress }\n): EnableCpiGuardInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEnableCpiGuardInstructionDataEncoder().encode({}),\n } as EnableCpiGuardInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedEnableCpiGuardInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token account to update. */\n token: TAccountMetas[0];\n /** The account's owner/delegate or its multisignature account. */\n owner: TAccountMetas[1];\n };\n data: EnableCpiGuardInstructionData;\n};\n\nexport function parseEnableCpiGuardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEnableCpiGuardInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getEnableCpiGuardInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_HARVEST_TO_MINT_DISCRIMINATOR = 37;\n\nexport function getEnableHarvestToMintDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_HARVEST_TO_MINT_DISCRIMINATOR);\n}\n\nexport const ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 4;\n\nexport function getEnableHarvestToMintConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type EnableHarvestToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EnableHarvestToMintInstructionData = {\n discriminator: number;\n confidentialTransferFeeDiscriminator: number;\n};\n\nexport type EnableHarvestToMintInstructionDataArgs = {};\n\nexport function getEnableHarvestToMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENABLE_HARVEST_TO_MINT_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n ENABLE_HARVEST_TO_MINT_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEnableHarvestToMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getEnableHarvestToMintInstructionDataCodec(): Codec<\n EnableHarvestToMintInstructionDataArgs,\n EnableHarvestToMintInstructionData\n> {\n return combineCodec(\n getEnableHarvestToMintInstructionDataEncoder(),\n getEnableHarvestToMintInstructionDataDecoder()\n );\n}\n\nexport type EnableHarvestToMintInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The token mint. */\n mint: Address;\n /** The confidential transfer fee authority */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getEnableHarvestToMintInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EnableHarvestToMintInput,\n config?: { programAddress?: TProgramAddress }\n): EnableHarvestToMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEnableHarvestToMintInstructionDataEncoder().encode({}),\n } as EnableHarvestToMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedEnableHarvestToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. */\n mint: TAccountMetas[0];\n /** The confidential transfer fee authority */\n authority: TAccountMetas[1];\n };\n data: EnableHarvestToMintInstructionData;\n};\n\nexport function parseEnableHarvestToMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEnableHarvestToMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getEnableHarvestToMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_MEMO_TRANSFERS_DISCRIMINATOR = 30;\n\nexport function getEnableMemoTransfersDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_MEMO_TRANSFERS_DISCRIMINATOR);\n}\n\nexport const ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR = 0;\n\nexport function getEnableMemoTransfersMemoTransfersDiscriminatorBytes() {\n return getU8Encoder().encode(\n ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR\n );\n}\n\nexport type EnableMemoTransfersInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EnableMemoTransfersInstructionData = {\n discriminator: number;\n memoTransfersDiscriminator: number;\n};\n\nexport type EnableMemoTransfersInstructionDataArgs = {};\n\nexport function getEnableMemoTransfersInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['memoTransfersDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENABLE_MEMO_TRANSFERS_DISCRIMINATOR,\n memoTransfersDiscriminator:\n ENABLE_MEMO_TRANSFERS_MEMO_TRANSFERS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEnableMemoTransfersInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['memoTransfersDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getEnableMemoTransfersInstructionDataCodec(): Codec<\n EnableMemoTransfersInstructionDataArgs,\n EnableMemoTransfersInstructionData\n> {\n return combineCodec(\n getEnableMemoTransfersInstructionDataEncoder(),\n getEnableMemoTransfersInstructionDataDecoder()\n );\n}\n\nexport type EnableMemoTransfersInput<\n TAccountToken extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The token account to update. */\n token: Address;\n /** The account's owner or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getEnableMemoTransfersInstruction<\n TAccountToken extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EnableMemoTransfersInput,\n config?: { programAddress?: TProgramAddress }\n): EnableMemoTransfersInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEnableMemoTransfersInstructionDataEncoder().encode({}),\n } as EnableMemoTransfersInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedEnableMemoTransfersInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token account to update. */\n token: TAccountMetas[0];\n /** The account's owner or its multisignature account. */\n owner: TAccountMetas[1];\n };\n data: EnableMemoTransfersInstructionData;\n};\n\nexport function parseEnableMemoTransfersInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEnableMemoTransfersInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getEnableMemoTransfersInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR = 27;\n\nexport function getEnableNonConfidentialCreditsDiscriminatorBytes() {\n return getU8Encoder().encode(ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR);\n}\n\nexport const ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 11;\n\nexport function getEnableNonConfidentialCreditsConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type EnableNonConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EnableNonConfidentialCreditsInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n};\n\nexport type EnableNonConfidentialCreditsInstructionDataArgs = {};\n\nexport function getEnableNonConfidentialCreditsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENABLE_NON_CONFIDENTIAL_CREDITS_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n ENABLE_NON_CONFIDENTIAL_CREDITS_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEnableNonConfidentialCreditsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getEnableNonConfidentialCreditsInstructionDataCodec(): Codec<\n EnableNonConfidentialCreditsInstructionDataArgs,\n EnableNonConfidentialCreditsInstructionData\n> {\n return combineCodec(\n getEnableNonConfidentialCreditsInstructionDataEncoder(),\n getEnableNonConfidentialCreditsInstructionDataDecoder()\n );\n}\n\nexport type EnableNonConfidentialCreditsInput<\n TAccountToken extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token account. */\n token: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getEnableNonConfidentialCreditsInstruction<\n TAccountToken extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: EnableNonConfidentialCreditsInput,\n config?: { programAddress?: TProgramAddress }\n): EnableNonConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getEnableNonConfidentialCreditsInstructionDataEncoder().encode({}),\n } as EnableNonConfidentialCreditsInstruction<\n TProgramAddress,\n TAccountToken,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedEnableNonConfidentialCreditsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token account. */\n token: TAccountMetas[0];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[1];\n };\n data: EnableNonConfidentialCreditsInstructionData;\n};\n\nexport function parseEnableNonConfidentialCreditsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedEnableNonConfidentialCreditsInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getEnableNonConfidentialCreditsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const FREEZE_ACCOUNT_DISCRIMINATOR = 10;\n\nexport function getFreezeAccountDiscriminatorBytes() {\n return getU8Encoder().encode(FREEZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type FreezeAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type FreezeAccountInstructionData = { discriminator: number };\n\nexport type FreezeAccountInstructionDataArgs = {};\n\nexport function getFreezeAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: FREEZE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getFreezeAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getFreezeAccountInstructionDataCodec(): Codec<\n FreezeAccountInstructionDataArgs,\n FreezeAccountInstructionData\n> {\n return combineCodec(\n getFreezeAccountInstructionDataEncoder(),\n getFreezeAccountInstructionDataDecoder()\n );\n}\n\nexport type FreezeAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to freeze. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The mint freeze authority or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getFreezeAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: FreezeAccountInput,\n config?: { programAddress?: TProgramAddress }\n): FreezeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getFreezeAccountInstructionDataEncoder().encode({}),\n } as FreezeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedFreezeAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to freeze. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The mint freeze authority or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: FreezeAccountInstructionData;\n};\n\nexport function parseFreezeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedFreezeAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getFreezeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR = 21;\n\nexport function getGetAccountDataSizeDiscriminatorBytes() {\n return getU8Encoder().encode(GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR);\n}\n\nexport type GetAccountDataSizeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type GetAccountDataSizeInstructionData = { discriminator: number };\n\nexport type GetAccountDataSizeInstructionDataArgs = {};\n\nexport function getGetAccountDataSizeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: GET_ACCOUNT_DATA_SIZE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getGetAccountDataSizeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getGetAccountDataSizeInstructionDataCodec(): Codec<\n GetAccountDataSizeInstructionDataArgs,\n GetAccountDataSizeInstructionData\n> {\n return combineCodec(\n getGetAccountDataSizeInstructionDataEncoder(),\n getGetAccountDataSizeInstructionDataDecoder()\n );\n}\n\nexport type GetAccountDataSizeInput = {\n /** The mint to calculate for. */\n mint: Address;\n};\n\nexport function getGetAccountDataSizeInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: GetAccountDataSizeInput,\n config?: { programAddress?: TProgramAddress }\n): GetAccountDataSizeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getGetAccountDataSizeInstructionDataEncoder().encode({}),\n } as GetAccountDataSizeInstruction;\n\n return instruction;\n}\n\nexport type ParsedGetAccountDataSizeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: GetAccountDataSizeInstructionData;\n};\n\nexport function parseGetAccountDataSizeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedGetAccountDataSizeInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getGetAccountDataSizeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR = 26;\n\nexport function getHarvestWithheldTokensToMintDiscriminatorBytes() {\n return getU8Encoder().encode(HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR);\n}\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR = 4;\n\nexport function getHarvestWithheldTokensToMintTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type HarvestWithheldTokensToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type HarvestWithheldTokensToMintInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n};\n\nexport type HarvestWithheldTokensToMintInstructionDataArgs = {};\n\nexport function getHarvestWithheldTokensToMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: HARVEST_WITHHELD_TOKENS_TO_MINT_DISCRIMINATOR,\n transferFeeDiscriminator:\n HARVEST_WITHHELD_TOKENS_TO_MINT_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getHarvestWithheldTokensToMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getHarvestWithheldTokensToMintInstructionDataCodec(): Codec<\n HarvestWithheldTokensToMintInstructionDataArgs,\n HarvestWithheldTokensToMintInstructionData\n> {\n return combineCodec(\n getHarvestWithheldTokensToMintInstructionDataEncoder(),\n getHarvestWithheldTokensToMintInstructionDataDecoder()\n );\n}\n\nexport type HarvestWithheldTokensToMintInput<\n TAccountMint extends string = string,\n> = {\n /** The token mint. */\n mint: Address;\n sources: Array
;\n};\n\nexport function getHarvestWithheldTokensToMintInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: HarvestWithheldTokensToMintInput,\n config?: { programAddress?: TProgramAddress }\n): HarvestWithheldTokensToMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = args.sources.map((address) => ({\n address,\n role: AccountRole.WRITABLE,\n }));\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint), ...remainingAccounts],\n programAddress,\n data: getHarvestWithheldTokensToMintInstructionDataEncoder().encode({}),\n } as HarvestWithheldTokensToMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedHarvestWithheldTokensToMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. */\n mint: TAccountMetas[0];\n };\n data: HarvestWithheldTokensToMintInstructionData;\n};\n\nexport function parseHarvestWithheldTokensToMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedHarvestWithheldTokensToMintInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getHarvestWithheldTokensToMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport const HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 3;\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData =\n { discriminator: number; confidentialTransferFeeDiscriminator: number };\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataArgs =\n {};\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator:\n HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n HARVEST_WITHHELD_TOKENS_TO_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataCodec(): Codec<\n HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataArgs,\n HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData\n> {\n return combineCodec(\n getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder(),\n getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder()\n );\n}\n\nexport type HarvestWithheldTokensToMintForConfidentialTransferFeeInput<\n TAccountMint extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n sources?: Array
;\n};\n\nexport function getHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: HarvestWithheldTokensToMintForConfidentialTransferFeeInput,\n config?: { programAddress?: TProgramAddress }\n): HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.sources ?? []).map(\n (address) => ({ address, role: AccountRole.WRITABLE })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint), ...remainingAccounts],\n programAddress,\n data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataEncoder().encode(\n {}\n ),\n } as HarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint\n >;\n\n return instruction;\n}\n\nexport type ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n };\n data: HarvestWithheldTokensToMintForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedHarvestWithheldTokensToMintForConfidentialTransferFeeInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getHarvestWithheldTokensToMintForConfidentialTransferFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT_DISCRIMINATOR = 1;\n\nexport function getInitializeAccountDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type InitializeAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccountInstructionData = { discriminator: number };\n\nexport type InitializeAccountInstructionDataArgs = {};\n\nexport function getInitializeAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeAccountInstructionDataCodec(): Codec<\n InitializeAccountInstructionDataArgs,\n InitializeAccountInstructionData\n> {\n return combineCodec(\n getInitializeAccountInstructionDataEncoder(),\n getInitializeAccountInstructionDataDecoder()\n );\n}\n\nexport type InitializeAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n /** The new account's owner/multisignature. */\n owner: Address;\n /** Rent sysvar. */\n rent?: Address;\n};\n\nexport function getInitializeAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeAccountInput<\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.rent),\n ],\n programAddress,\n data: getInitializeAccountInstructionDataEncoder().encode({}),\n } as InitializeAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountOwner,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n /** The new account's owner/multisignature. */\n owner: TAccountMetas[2];\n /** Rent sysvar. */\n rent: TAccountMetas[3];\n };\n data: InitializeAccountInstructionData;\n};\n\nexport function parseInitializeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccountInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT2_DISCRIMINATOR = 16;\n\nexport function getInitializeAccount2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT2_DISCRIMINATOR);\n}\n\nexport type InitializeAccount2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccount2InstructionData = {\n discriminator: number;\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport type InitializeAccount2InstructionDataArgs = {\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport function getInitializeAccount2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT2_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccount2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ]);\n}\n\nexport function getInitializeAccount2InstructionDataCodec(): Codec<\n InitializeAccount2InstructionDataArgs,\n InitializeAccount2InstructionData\n> {\n return combineCodec(\n getInitializeAccount2InstructionDataEncoder(),\n getInitializeAccount2InstructionDataDecoder()\n );\n}\n\nexport type InitializeAccount2Input<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n /** Rent sysvar. */\n rent?: Address;\n owner: InitializeAccount2InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount2Instruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeAccount2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccount2Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.rent),\n ],\n programAddress,\n data: getInitializeAccount2InstructionDataEncoder().encode(\n args as InitializeAccount2InstructionDataArgs\n ),\n } as InitializeAccount2Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccount2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n /** Rent sysvar. */\n rent: TAccountMetas[2];\n };\n data: InitializeAccount2InstructionData;\n};\n\nexport function parseInitializeAccount2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccount2Instruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeAccount2InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_ACCOUNT3_DISCRIMINATOR = 18;\n\nexport function getInitializeAccount3DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_ACCOUNT3_DISCRIMINATOR);\n}\n\nexport type InitializeAccount3Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAccount3InstructionData = {\n discriminator: number;\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport type InitializeAccount3InstructionDataArgs = {\n /** The new account's owner/multisignature. */\n owner: Address;\n};\n\nexport function getInitializeAccount3InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_ACCOUNT3_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAccount3InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ]);\n}\n\nexport function getInitializeAccount3InstructionDataCodec(): Codec<\n InitializeAccount3InstructionDataArgs,\n InitializeAccount3InstructionData\n> {\n return combineCodec(\n getInitializeAccount3InstructionDataEncoder(),\n getInitializeAccount3InstructionDataDecoder()\n );\n}\n\nexport type InitializeAccount3Input<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n /** The mint this account will be associated with. */\n mint: Address;\n owner: InitializeAccount3InstructionDataArgs['owner'];\n};\n\nexport function getInitializeAccount3Instruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeAccount3Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeAccount3Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account), getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeAccount3InstructionDataEncoder().encode(\n args as InitializeAccount3InstructionDataArgs\n ),\n } as InitializeAccount3Instruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAccount3Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n /** The mint this account will be associated with. */\n mint: TAccountMetas[1];\n };\n data: InitializeAccount3InstructionData;\n};\n\nexport function parseInitializeAccount3Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeAccount3Instruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n },\n data: getInitializeAccount3InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getInitializeConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 0;\n\nexport function getInitializeConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type InitializeConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeConfidentialTransferFeeInstructionData = {\n discriminator: number;\n confidentialTransferFeeDiscriminator: number;\n /** Optional authority to set the withdraw withheld authority ElGamal key */\n authority: Option
;\n /** Withheld fees from accounts must be encrypted with this ElGamal key */\n withdrawWithheldAuthorityElGamalPubkey: Option
;\n};\n\nexport type InitializeConfidentialTransferFeeInstructionDataArgs = {\n /** Optional authority to set the withdraw withheld authority ElGamal key */\n authority: OptionOrNullable
;\n /** Withheld fees from accounts must be encrypted with this ElGamal key */\n withdrawWithheldAuthorityElGamalPubkey: OptionOrNullable
;\n};\n\nexport function getInitializeConfidentialTransferFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'withdrawWithheldAuthorityElGamalPubkey',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n INITIALIZE_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeConfidentialTransferFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'withdrawWithheldAuthorityElGamalPubkey',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeConfidentialTransferFeeInstructionDataCodec(): Codec<\n InitializeConfidentialTransferFeeInstructionDataArgs,\n InitializeConfidentialTransferFeeInstructionData\n> {\n return combineCodec(\n getInitializeConfidentialTransferFeeInstructionDataEncoder(),\n getInitializeConfidentialTransferFeeInstructionDataDecoder()\n );\n}\n\nexport type InitializeConfidentialTransferFeeInput<\n TAccountMint extends string = string,\n> = {\n /** The SPL Token mint. */\n mint: Address;\n authority: InitializeConfidentialTransferFeeInstructionDataArgs['authority'];\n withdrawWithheldAuthorityElGamalPubkey: InitializeConfidentialTransferFeeInstructionDataArgs['withdrawWithheldAuthorityElGamalPubkey'];\n};\n\nexport function getInitializeConfidentialTransferFeeInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeConfidentialTransferFeeInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeConfidentialTransferFeeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeConfidentialTransferFeeInstructionDataEncoder().encode(\n args as InitializeConfidentialTransferFeeInstructionDataArgs\n ),\n } as InitializeConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token mint. */\n mint: TAccountMetas[0];\n };\n data: InitializeConfidentialTransferFeeInstructionData;\n};\n\nexport function parseInitializeConfidentialTransferFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeConfidentialTransferFeeInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeConfidentialTransferFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27;\n\nexport function getInitializeConfidentialTransferMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR\n );\n}\n\nexport const INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 0;\n\nexport function getInitializeConfidentialTransferMintConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type InitializeConfidentialTransferMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeConfidentialTransferMintInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /**\n * Authority to modify the `ConfidentialTransferMint` configuration and to\n * approve new accounts.\n */\n authority: Option
;\n /**\n * Determines if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n */\n autoApproveNewAccounts: boolean;\n /** New authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: Option
;\n};\n\nexport type InitializeConfidentialTransferMintInstructionDataArgs = {\n /**\n * Authority to modify the `ConfidentialTransferMint` configuration and to\n * approve new accounts.\n */\n authority: OptionOrNullable
;\n /**\n * Determines if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n */\n autoApproveNewAccounts: boolean;\n /** New authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: OptionOrNullable
;\n};\n\nexport function getInitializeConfidentialTransferMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['autoApproveNewAccounts', getBooleanEncoder()],\n [\n 'auditorElgamalPubkey',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n INITIALIZE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeConfidentialTransferMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['autoApproveNewAccounts', getBooleanDecoder()],\n [\n 'auditorElgamalPubkey',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeConfidentialTransferMintInstructionDataCodec(): Codec<\n InitializeConfidentialTransferMintInstructionDataArgs,\n InitializeConfidentialTransferMintInstructionData\n> {\n return combineCodec(\n getInitializeConfidentialTransferMintInstructionDataEncoder(),\n getInitializeConfidentialTransferMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeConfidentialTransferMintInput<\n TAccountMint extends string = string,\n> = {\n /** The SPL Token mint. */\n mint: Address;\n authority: InitializeConfidentialTransferMintInstructionDataArgs['authority'];\n autoApproveNewAccounts: InitializeConfidentialTransferMintInstructionDataArgs['autoApproveNewAccounts'];\n auditorElgamalPubkey: InitializeConfidentialTransferMintInstructionDataArgs['auditorElgamalPubkey'];\n};\n\nexport function getInitializeConfidentialTransferMintInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeConfidentialTransferMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeConfidentialTransferMintInstruction<\n TProgramAddress,\n TAccountMint\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeConfidentialTransferMintInstructionDataEncoder().encode(\n args as InitializeConfidentialTransferMintInstructionDataArgs\n ),\n } as InitializeConfidentialTransferMintInstruction<\n TProgramAddress,\n TAccountMint\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeConfidentialTransferMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token mint. */\n mint: TAccountMetas[0];\n };\n data: InitializeConfidentialTransferMintInstructionData;\n};\n\nexport function parseInitializeConfidentialTransferMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeConfidentialTransferMintInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeConfidentialTransferMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n type AccountState,\n type AccountStateArgs,\n} from '../types';\n\nexport const INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28;\n\nexport function getInitializeDefaultAccountStateDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 0;\n\nexport function getInitializeDefaultAccountStateDefaultAccountStateDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR\n );\n}\n\nexport type InitializeDefaultAccountStateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeDefaultAccountStateInstructionData = {\n discriminator: number;\n defaultAccountStateDiscriminator: number;\n /** The state each new token account should start with. */\n state: AccountState;\n};\n\nexport type InitializeDefaultAccountStateInstructionDataArgs = {\n /** The state each new token account should start with. */\n state: AccountStateArgs;\n};\n\nexport function getInitializeDefaultAccountStateInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['defaultAccountStateDiscriminator', getU8Encoder()],\n ['state', getAccountStateEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n defaultAccountStateDiscriminator:\n INITIALIZE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeDefaultAccountStateInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['defaultAccountStateDiscriminator', getU8Decoder()],\n ['state', getAccountStateDecoder()],\n ]);\n}\n\nexport function getInitializeDefaultAccountStateInstructionDataCodec(): Codec<\n InitializeDefaultAccountStateInstructionDataArgs,\n InitializeDefaultAccountStateInstructionData\n> {\n return combineCodec(\n getInitializeDefaultAccountStateInstructionDataEncoder(),\n getInitializeDefaultAccountStateInstructionDataDecoder()\n );\n}\n\nexport type InitializeDefaultAccountStateInput<\n TAccountMint extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n state: InitializeDefaultAccountStateInstructionDataArgs['state'];\n};\n\nexport function getInitializeDefaultAccountStateInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeDefaultAccountStateInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeDefaultAccountStateInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeDefaultAccountStateInstructionDataEncoder().encode(\n args as InitializeDefaultAccountStateInstructionDataArgs\n ),\n } as InitializeDefaultAccountStateInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeDefaultAccountStateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n };\n data: InitializeDefaultAccountStateInstructionData;\n};\n\nexport function parseInitializeDefaultAccountStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeDefaultAccountStateInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeDefaultAccountStateInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41;\n\nexport function getInitializeGroupMemberPointerDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeGroupMemberPointerGroupMemberPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR\n );\n}\n\nexport type InitializeGroupMemberPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeGroupMemberPointerInstructionData = {\n discriminator: number;\n groupMemberPointerDiscriminator: number;\n /** The public key for the account that can update the group member address. */\n authority: Option
;\n /** The account address that holds the member. */\n memberAddress: Option
;\n};\n\nexport type InitializeGroupMemberPointerInstructionDataArgs = {\n /** The public key for the account that can update the group member address. */\n authority: OptionOrNullable
;\n /** The account address that holds the member. */\n memberAddress: OptionOrNullable
;\n};\n\nexport function getInitializeGroupMemberPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['groupMemberPointerDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'memberAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n groupMemberPointerDiscriminator:\n INITIALIZE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeGroupMemberPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['groupMemberPointerDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'memberAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeGroupMemberPointerInstructionDataCodec(): Codec<\n InitializeGroupMemberPointerInstructionDataArgs,\n InitializeGroupMemberPointerInstructionData\n> {\n return combineCodec(\n getInitializeGroupMemberPointerInstructionDataEncoder(),\n getInitializeGroupMemberPointerInstructionDataDecoder()\n );\n}\n\nexport type InitializeGroupMemberPointerInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n authority: InitializeGroupMemberPointerInstructionDataArgs['authority'];\n memberAddress: InitializeGroupMemberPointerInstructionDataArgs['memberAddress'];\n};\n\nexport function getInitializeGroupMemberPointerInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeGroupMemberPointerInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeGroupMemberPointerInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeGroupMemberPointerInstructionDataEncoder().encode(\n args as InitializeGroupMemberPointerInstructionDataArgs\n ),\n } as InitializeGroupMemberPointerInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeGroupMemberPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeGroupMemberPointerInstructionData;\n};\n\nexport function parseInitializeGroupMemberPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeGroupMemberPointerInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeGroupMemberPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_GROUP_POINTER_DISCRIMINATOR = 40;\n\nexport function getInitializeGroupPointerDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeGroupPointerGroupPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR\n );\n}\n\nexport type InitializeGroupPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeGroupPointerInstructionData = {\n discriminator: number;\n groupPointerDiscriminator: number;\n /** The public key for the account that can update the group address. */\n authority: Option
;\n /** The account address that holds the group. */\n groupAddress: Option
;\n};\n\nexport type InitializeGroupPointerInstructionDataArgs = {\n /** The public key for the account that can update the group address. */\n authority: OptionOrNullable
;\n /** The account address that holds the group. */\n groupAddress: OptionOrNullable
;\n};\n\nexport function getInitializeGroupPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['groupPointerDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'groupAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_GROUP_POINTER_DISCRIMINATOR,\n groupPointerDiscriminator:\n INITIALIZE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeGroupPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['groupPointerDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'groupAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeGroupPointerInstructionDataCodec(): Codec<\n InitializeGroupPointerInstructionDataArgs,\n InitializeGroupPointerInstructionData\n> {\n return combineCodec(\n getInitializeGroupPointerInstructionDataEncoder(),\n getInitializeGroupPointerInstructionDataDecoder()\n );\n}\n\nexport type InitializeGroupPointerInput =\n {\n /** The mint to initialize. */\n mint: Address;\n authority: InitializeGroupPointerInstructionDataArgs['authority'];\n groupAddress: InitializeGroupPointerInstructionDataArgs['groupAddress'];\n };\n\nexport function getInitializeGroupPointerInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeGroupPointerInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeGroupPointerInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeGroupPointerInstructionDataEncoder().encode(\n args as InitializeGroupPointerInstructionDataArgs\n ),\n } as InitializeGroupPointerInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeGroupPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeGroupPointerInstructionData;\n};\n\nexport function parseInitializeGroupPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeGroupPointerInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeGroupPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR = 22;\n\nexport function getInitializeImmutableOwnerDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR);\n}\n\nexport type InitializeImmutableOwnerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeImmutableOwnerInstructionData = { discriminator: number };\n\nexport type InitializeImmutableOwnerInstructionDataArgs = {};\n\nexport function getInitializeImmutableOwnerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_IMMUTABLE_OWNER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeImmutableOwnerInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeImmutableOwnerInstructionDataCodec(): Codec<\n InitializeImmutableOwnerInstructionDataArgs,\n InitializeImmutableOwnerInstructionData\n> {\n return combineCodec(\n getInitializeImmutableOwnerInstructionDataEncoder(),\n getInitializeImmutableOwnerInstructionDataDecoder()\n );\n}\n\nexport type InitializeImmutableOwnerInput<\n TAccountAccount extends string = string,\n> = {\n /** The account to initialize. */\n account: Address;\n};\n\nexport function getInitializeImmutableOwnerInstruction<\n TAccountAccount extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeImmutableOwnerInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeImmutableOwnerInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account)],\n programAddress,\n data: getInitializeImmutableOwnerInstructionDataEncoder().encode({}),\n } as InitializeImmutableOwnerInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeImmutableOwnerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to initialize. */\n account: TAccountMetas[0];\n };\n data: InitializeImmutableOwnerInstructionData;\n};\n\nexport function parseInitializeImmutableOwnerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeImmutableOwnerInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n },\n data: getInitializeImmutableOwnerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI16Decoder,\n getI16Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33;\n\nexport function getInitializeInterestBearingMintDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeInterestBearingMintInterestBearingMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR\n );\n}\n\nexport type InitializeInterestBearingMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeInterestBearingMintInstructionData = {\n discriminator: number;\n interestBearingMintDiscriminator: number;\n /** The public key for the account that can update the rate */\n rateAuthority: Option
;\n /** The initial interest rate */\n rate: number;\n};\n\nexport type InitializeInterestBearingMintInstructionDataArgs = {\n /** The public key for the account that can update the rate */\n rateAuthority: OptionOrNullable
;\n /** The initial interest rate */\n rate: number;\n};\n\nexport function getInitializeInterestBearingMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['interestBearingMintDiscriminator', getU8Encoder()],\n [\n 'rateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['rate', getI16Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_INTEREST_BEARING_MINT_DISCRIMINATOR,\n interestBearingMintDiscriminator:\n INITIALIZE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeInterestBearingMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['interestBearingMintDiscriminator', getU8Decoder()],\n [\n 'rateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['rate', getI16Decoder()],\n ]);\n}\n\nexport function getInitializeInterestBearingMintInstructionDataCodec(): Codec<\n InitializeInterestBearingMintInstructionDataArgs,\n InitializeInterestBearingMintInstructionData\n> {\n return combineCodec(\n getInitializeInterestBearingMintInstructionDataEncoder(),\n getInitializeInterestBearingMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeInterestBearingMintInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n rateAuthority: InitializeInterestBearingMintInstructionDataArgs['rateAuthority'];\n rate: InitializeInterestBearingMintInstructionDataArgs['rate'];\n};\n\nexport function getInitializeInterestBearingMintInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeInterestBearingMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeInterestBearingMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeInterestBearingMintInstructionDataEncoder().encode(\n args as InitializeInterestBearingMintInstructionDataArgs\n ),\n } as InitializeInterestBearingMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeInterestBearingMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeInterestBearingMintInstructionData;\n};\n\nexport function parseInitializeInterestBearingMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeInterestBearingMintInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeInterestBearingMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_METADATA_POINTER_DISCRIMINATOR = 39;\n\nexport function getInitializeMetadataPointerDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 0;\n\nexport function getInitializeMetadataPointerMetadataPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR\n );\n}\n\nexport type InitializeMetadataPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMetadataPointerInstructionData = {\n discriminator: number;\n metadataPointerDiscriminator: number;\n /** The public key for the account that can update the metadata address. */\n authority: Option
;\n /** The account address that holds the metadata. */\n metadataAddress: Option
;\n};\n\nexport type InitializeMetadataPointerInstructionDataArgs = {\n /** The public key for the account that can update the metadata address. */\n authority: OptionOrNullable
;\n /** The account address that holds the metadata. */\n metadataAddress: OptionOrNullable
;\n};\n\nexport function getInitializeMetadataPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['metadataPointerDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'metadataAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_METADATA_POINTER_DISCRIMINATOR,\n metadataPointerDiscriminator:\n INITIALIZE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeMetadataPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['metadataPointerDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'metadataAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeMetadataPointerInstructionDataCodec(): Codec<\n InitializeMetadataPointerInstructionDataArgs,\n InitializeMetadataPointerInstructionData\n> {\n return combineCodec(\n getInitializeMetadataPointerInstructionDataEncoder(),\n getInitializeMetadataPointerInstructionDataDecoder()\n );\n}\n\nexport type InitializeMetadataPointerInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n authority: InitializeMetadataPointerInstructionDataArgs['authority'];\n metadataAddress: InitializeMetadataPointerInstructionDataArgs['metadataAddress'];\n};\n\nexport function getInitializeMetadataPointerInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMetadataPointerInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMetadataPointerInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeMetadataPointerInstructionDataEncoder().encode(\n args as InitializeMetadataPointerInstructionDataArgs\n ),\n } as InitializeMetadataPointerInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMetadataPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeMetadataPointerInstructionData;\n};\n\nexport function parseInitializeMetadataPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMetadataPointerInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeMetadataPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n none,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeMintDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMintInstructionData = {\n discriminator: number;\n /** Number of decimals in token account amounts. */\n decimals: number;\n /** Minting authority. */\n mintAuthority: Address;\n /** Optional authority that can freeze token accounts. */\n freezeAuthority: Option
;\n};\n\nexport type InitializeMintInstructionDataArgs = {\n /** Number of decimals in token account amounts. */\n decimals: number;\n /** Minting authority. */\n mintAuthority: Address;\n /** Optional authority that can freeze token accounts. */\n freezeAuthority?: OptionOrNullable
;\n};\n\nexport function getInitializeMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['decimals', getU8Encoder()],\n ['mintAuthority', getAddressEncoder()],\n ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_MINT_DISCRIMINATOR,\n freezeAuthority: value.freezeAuthority ?? none(),\n })\n );\n}\n\nexport function getInitializeMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['decimals', getU8Decoder()],\n ['mintAuthority', getAddressDecoder()],\n ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getInitializeMintInstructionDataCodec(): Codec<\n InitializeMintInstructionDataArgs,\n InitializeMintInstructionData\n> {\n return combineCodec(\n getInitializeMintInstructionDataEncoder(),\n getInitializeMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeMintInput<\n TAccountMint extends string = string,\n TAccountRent extends string = string,\n> = {\n /** Token mint account. */\n mint: Address;\n /** Rent sysvar. */\n rent?: Address;\n decimals: InitializeMintInstructionDataArgs['decimals'];\n mintAuthority: InitializeMintInstructionDataArgs['mintAuthority'];\n freezeAuthority?: InitializeMintInstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMintInstruction<\n TAccountMint extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint), getAccountMeta(accounts.rent)],\n programAddress,\n data: getInitializeMintInstructionDataEncoder().encode(\n args as InitializeMintInstructionDataArgs\n ),\n } as InitializeMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Token mint account. */\n mint: TAccountMetas[0];\n /** Rent sysvar. */\n rent: TAccountMetas[1];\n };\n data: InitializeMintInstructionData;\n};\n\nexport function parseInitializeMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeMintInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n none,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT2_DISCRIMINATOR = 20;\n\nexport function getInitializeMint2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MINT2_DISCRIMINATOR);\n}\n\nexport type InitializeMint2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMint2InstructionData = {\n discriminator: number;\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The authority/multisignature to mint tokens. */\n mintAuthority: Address;\n /** The optional freeze authority/multisignature of the mint. */\n freezeAuthority: Option
;\n};\n\nexport type InitializeMint2InstructionDataArgs = {\n /** Number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /** The authority/multisignature to mint tokens. */\n mintAuthority: Address;\n /** The optional freeze authority/multisignature of the mint. */\n freezeAuthority?: OptionOrNullable
;\n};\n\nexport function getInitializeMint2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['decimals', getU8Encoder()],\n ['mintAuthority', getAddressEncoder()],\n ['freezeAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_MINT2_DISCRIMINATOR,\n freezeAuthority: value.freezeAuthority ?? none(),\n })\n );\n}\n\nexport function getInitializeMint2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['decimals', getU8Decoder()],\n ['mintAuthority', getAddressDecoder()],\n ['freezeAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getInitializeMint2InstructionDataCodec(): Codec<\n InitializeMint2InstructionDataArgs,\n InitializeMint2InstructionData\n> {\n return combineCodec(\n getInitializeMint2InstructionDataEncoder(),\n getInitializeMint2InstructionDataDecoder()\n );\n}\n\nexport type InitializeMint2Input = {\n /** The mint to initialize. */\n mint: Address;\n decimals: InitializeMint2InstructionDataArgs['decimals'];\n mintAuthority: InitializeMint2InstructionDataArgs['mintAuthority'];\n freezeAuthority?: InitializeMint2InstructionDataArgs['freezeAuthority'];\n};\n\nexport function getInitializeMint2Instruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMint2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeMint2Instruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeMint2InstructionDataEncoder().encode(\n args as InitializeMint2InstructionDataArgs\n ),\n } as InitializeMint2Instruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMint2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeMint2InstructionData;\n};\n\nexport function parseInitializeMint2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMint2Instruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeMint2InstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR = 25;\n\nexport function getInitializeMintCloseAuthorityDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type InitializeMintCloseAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMintCloseAuthorityInstructionData = {\n discriminator: number;\n /** Authority that must sign the `CloseAccount` instruction on a mint. */\n closeAuthority: Option
;\n};\n\nexport type InitializeMintCloseAuthorityInstructionDataArgs = {\n /** Authority that must sign the `CloseAccount` instruction on a mint. */\n closeAuthority: OptionOrNullable
;\n};\n\nexport function getInitializeMintCloseAuthorityInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['closeAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_MINT_CLOSE_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeMintCloseAuthorityInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['closeAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getInitializeMintCloseAuthorityInstructionDataCodec(): Codec<\n InitializeMintCloseAuthorityInstructionDataArgs,\n InitializeMintCloseAuthorityInstructionData\n> {\n return combineCodec(\n getInitializeMintCloseAuthorityInstructionDataEncoder(),\n getInitializeMintCloseAuthorityInstructionDataDecoder()\n );\n}\n\nexport type InitializeMintCloseAuthorityInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n closeAuthority: InitializeMintCloseAuthorityInstructionDataArgs['closeAuthority'];\n};\n\nexport function getInitializeMintCloseAuthorityInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMintCloseAuthorityInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMintCloseAuthorityInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeMintCloseAuthorityInstructionDataEncoder().encode(\n args as InitializeMintCloseAuthorityInstructionDataArgs\n ),\n } as InitializeMintCloseAuthorityInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMintCloseAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeMintCloseAuthorityInstructionData;\n};\n\nexport function parseInitializeMintCloseAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMintCloseAuthorityInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeMintCloseAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG_DISCRIMINATOR = 2;\n\nexport function getInitializeMultisigDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MULTISIG_DISCRIMINATOR);\n}\n\nexport type InitializeMultisigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMultisig extends string | IAccountMeta = string,\n TAccountRent extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMultisig extends string\n ? WritableAccount\n : TAccountMultisig,\n TAccountRent extends string\n ? ReadonlyAccount\n : TAccountRent,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMultisigInstructionData = {\n discriminator: number;\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport type InitializeMultisigInstructionDataArgs = {\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport function getInitializeMultisigInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['m', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeMultisigInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['m', getU8Decoder()],\n ]);\n}\n\nexport function getInitializeMultisigInstructionDataCodec(): Codec<\n InitializeMultisigInstructionDataArgs,\n InitializeMultisigInstructionData\n> {\n return combineCodec(\n getInitializeMultisigInstructionDataEncoder(),\n getInitializeMultisigInstructionDataDecoder()\n );\n}\n\nexport type InitializeMultisigInput<\n TAccountMultisig extends string = string,\n TAccountRent extends string = string,\n> = {\n /** The multisignature account to initialize. */\n multisig: Address;\n /** Rent sysvar. */\n rent?: Address;\n m: InitializeMultisigInstructionDataArgs['m'];\n signers: Array
;\n};\n\nexport function getInitializeMultisigInstruction<\n TAccountMultisig extends string,\n TAccountRent extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMultisigInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeMultisigInstruction<\n TProgramAddress,\n TAccountMultisig,\n TAccountRent\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n multisig: { value: input.multisig ?? null, isWritable: true },\n rent: { value: input.rent ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rent.value) {\n accounts.rent.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = args.signers.map((address) => ({\n address,\n role: AccountRole.READONLY,\n }));\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.multisig),\n getAccountMeta(accounts.rent),\n ...remainingAccounts,\n ],\n programAddress,\n data: getInitializeMultisigInstructionDataEncoder().encode(\n args as InitializeMultisigInstructionDataArgs\n ),\n } as InitializeMultisigInstruction<\n TProgramAddress,\n TAccountMultisig,\n TAccountRent\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeMultisigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The multisignature account to initialize. */\n multisig: TAccountMetas[0];\n /** Rent sysvar. */\n rent: TAccountMetas[1];\n };\n data: InitializeMultisigInstructionData;\n};\n\nexport function parseInitializeMultisigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMultisigInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n multisig: getNextAccount(),\n rent: getNextAccount(),\n },\n data: getInitializeMultisigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_MULTISIG2_DISCRIMINATOR = 19;\n\nexport function getInitializeMultisig2DiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_MULTISIG2_DISCRIMINATOR);\n}\n\nexport type InitializeMultisig2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMultisig extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMultisig extends string\n ? WritableAccount\n : TAccountMultisig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMultisig2InstructionData = {\n discriminator: number;\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport type InitializeMultisig2InstructionDataArgs = {\n /** The number of signers (M) required to validate this multisignature account. */\n m: number;\n};\n\nexport function getInitializeMultisig2InstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['m', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MULTISIG2_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeMultisig2InstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['m', getU8Decoder()],\n ]);\n}\n\nexport function getInitializeMultisig2InstructionDataCodec(): Codec<\n InitializeMultisig2InstructionDataArgs,\n InitializeMultisig2InstructionData\n> {\n return combineCodec(\n getInitializeMultisig2InstructionDataEncoder(),\n getInitializeMultisig2InstructionDataDecoder()\n );\n}\n\nexport type InitializeMultisig2Input =\n {\n /** The multisignature account to initialize. */\n multisig: Address;\n m: InitializeMultisig2InstructionDataArgs['m'];\n signers: Array
;\n };\n\nexport function getInitializeMultisig2Instruction<\n TAccountMultisig extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeMultisig2Input,\n config?: { programAddress?: TProgramAddress }\n): InitializeMultisig2Instruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n multisig: { value: input.multisig ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = args.signers.map((address) => ({\n address,\n role: AccountRole.READONLY,\n }));\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.multisig), ...remainingAccounts],\n programAddress,\n data: getInitializeMultisig2InstructionDataEncoder().encode(\n args as InitializeMultisig2InstructionDataArgs\n ),\n } as InitializeMultisig2Instruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeMultisig2Instruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The multisignature account to initialize. */\n multisig: TAccountMetas[0];\n };\n data: InitializeMultisig2InstructionData;\n};\n\nexport function parseInitializeMultisig2Instruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeMultisig2Instruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n multisig: getNextAccount(),\n },\n data: getInitializeMultisig2InstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR = 32;\n\nexport function getInitializeNonTransferableMintDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR);\n}\n\nexport type InitializeNonTransferableMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeNonTransferableMintInstructionData = {\n discriminator: number;\n};\n\nexport type InitializeNonTransferableMintInstructionDataArgs = {};\n\nexport function getInitializeNonTransferableMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_NON_TRANSFERABLE_MINT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeNonTransferableMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getInitializeNonTransferableMintInstructionDataCodec(): Codec<\n InitializeNonTransferableMintInstructionDataArgs,\n InitializeNonTransferableMintInstructionData\n> {\n return combineCodec(\n getInitializeNonTransferableMintInstructionDataEncoder(),\n getInitializeNonTransferableMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeNonTransferableMintInput<\n TAccountMint extends string = string,\n> = {\n /** The mint account to initialize. */\n mint: Address;\n};\n\nexport function getInitializeNonTransferableMintInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeNonTransferableMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeNonTransferableMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeNonTransferableMintInstructionDataEncoder().encode({}),\n } as InitializeNonTransferableMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeNonTransferableMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint account to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeNonTransferableMintInstructionData;\n};\n\nexport function parseInitializeNonTransferableMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeNonTransferableMintInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeNonTransferableMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR = 44;\n\nexport function getInitializePausableConfigDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR = 0;\n\nexport function getInitializePausableConfigPausableDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR\n );\n}\n\nexport type InitializePausableConfigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializePausableConfigInstructionData = {\n discriminator: number;\n pausableDiscriminator: number;\n /** The authority that can pause and resume the mint. */\n authority: Option
;\n};\n\nexport type InitializePausableConfigInstructionDataArgs = {\n /** The authority that can pause and resume the mint. */\n authority: OptionOrNullable
;\n};\n\nexport function getInitializePausableConfigInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['pausableDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_PAUSABLE_CONFIG_DISCRIMINATOR,\n pausableDiscriminator: INITIALIZE_PAUSABLE_CONFIG_PAUSABLE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializePausableConfigInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['pausableDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializePausableConfigInstructionDataCodec(): Codec<\n InitializePausableConfigInstructionDataArgs,\n InitializePausableConfigInstructionData\n> {\n return combineCodec(\n getInitializePausableConfigInstructionDataEncoder(),\n getInitializePausableConfigInstructionDataDecoder()\n );\n}\n\nexport type InitializePausableConfigInput<\n TAccountMint extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n authority: InitializePausableConfigInstructionDataArgs['authority'];\n};\n\nexport function getInitializePausableConfigInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializePausableConfigInput,\n config?: { programAddress?: TProgramAddress }\n): InitializePausableConfigInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializePausableConfigInstructionDataEncoder().encode(\n args as InitializePausableConfigInstructionDataArgs\n ),\n } as InitializePausableConfigInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializePausableConfigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n };\n data: InitializePausableConfigInstructionData;\n};\n\nexport function parseInitializePausableConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializePausableConfigInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializePausableConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR = 35;\n\nexport function getInitializePermanentDelegateDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR);\n}\n\nexport type InitializePermanentDelegateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializePermanentDelegateInstructionData = {\n discriminator: number;\n /** Authority that may sign for `Transfer`s and `Burn`s on any account */\n delegate: Address;\n};\n\nexport type InitializePermanentDelegateInstructionDataArgs = {\n /** Authority that may sign for `Transfer`s and `Burn`s on any account */\n delegate: Address;\n};\n\nexport function getInitializePermanentDelegateInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['delegate', getAddressEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_PERMANENT_DELEGATE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializePermanentDelegateInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['delegate', getAddressDecoder()],\n ]);\n}\n\nexport function getInitializePermanentDelegateInstructionDataCodec(): Codec<\n InitializePermanentDelegateInstructionDataArgs,\n InitializePermanentDelegateInstructionData\n> {\n return combineCodec(\n getInitializePermanentDelegateInstructionDataEncoder(),\n getInitializePermanentDelegateInstructionDataDecoder()\n );\n}\n\nexport type InitializePermanentDelegateInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n delegate: InitializePermanentDelegateInstructionDataArgs['delegate'];\n};\n\nexport function getInitializePermanentDelegateInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializePermanentDelegateInput,\n config?: { programAddress?: TProgramAddress }\n): InitializePermanentDelegateInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializePermanentDelegateInstructionDataEncoder().encode(\n args as InitializePermanentDelegateInstructionDataArgs\n ),\n } as InitializePermanentDelegateInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializePermanentDelegateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializePermanentDelegateInstructionData;\n};\n\nexport function parseInitializePermanentDelegateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializePermanentDelegateInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializePermanentDelegateInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getF64Decoder,\n getF64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 43;\n\nexport function getInitializeScaledUiAmountMintDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 0;\n\nexport function getInitializeScaledUiAmountMintScaledUiAmountMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR\n );\n}\n\nexport type InitializeScaledUiAmountMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeScaledUiAmountMintInstructionData = {\n discriminator: number;\n scaledUiAmountMintDiscriminator: number;\n /** The authority that can update the multiplier */\n authority: Option
;\n /** The initial multiplier for the scaled UI extension */\n multiplier: number;\n};\n\nexport type InitializeScaledUiAmountMintInstructionDataArgs = {\n /** The authority that can update the multiplier */\n authority: OptionOrNullable
;\n /** The initial multiplier for the scaled UI extension */\n multiplier: number;\n};\n\nexport function getInitializeScaledUiAmountMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['scaledUiAmountMintDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['multiplier', getF64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n scaledUiAmountMintDiscriminator:\n INITIALIZE_SCALED_UI_AMOUNT_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeScaledUiAmountMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['scaledUiAmountMintDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['multiplier', getF64Decoder()],\n ]);\n}\n\nexport function getInitializeScaledUiAmountMintInstructionDataCodec(): Codec<\n InitializeScaledUiAmountMintInstructionDataArgs,\n InitializeScaledUiAmountMintInstructionData\n> {\n return combineCodec(\n getInitializeScaledUiAmountMintInstructionDataEncoder(),\n getInitializeScaledUiAmountMintInstructionDataDecoder()\n );\n}\n\nexport type InitializeScaledUiAmountMintInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n authority: InitializeScaledUiAmountMintInstructionDataArgs['authority'];\n multiplier: InitializeScaledUiAmountMintInstructionDataArgs['multiplier'];\n};\n\nexport function getInitializeScaledUiAmountMintInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeScaledUiAmountMintInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeScaledUiAmountMintInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeScaledUiAmountMintInstructionDataEncoder().encode(\n args as InitializeScaledUiAmountMintInstructionDataArgs\n ),\n } as InitializeScaledUiAmountMintInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeScaledUiAmountMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeScaledUiAmountMintInstructionData;\n};\n\nexport function parseInitializeScaledUiAmountMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeScaledUiAmountMintInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeScaledUiAmountMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_GROUP_DISCRIMINATOR = new Uint8Array([\n 121, 113, 108, 39, 54, 51, 0, 4,\n]);\n\nexport function getInitializeTokenGroupDiscriminatorBytes() {\n return getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_DISCRIMINATOR);\n}\n\nexport type InitializeTokenGroupInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountGroup extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountGroup extends string\n ? WritableAccount\n : TAccountGroup,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountMintAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeTokenGroupInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** Update authority for the group */\n updateAuthority: Option
;\n /** The maximum number of group members */\n maxSize: bigint;\n};\n\nexport type InitializeTokenGroupInstructionDataArgs = {\n /** Update authority for the group */\n updateAuthority: OptionOrNullable
;\n /** The maximum number of group members */\n maxSize: number | bigint;\n};\n\nexport function getInitializeTokenGroupInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n [\n 'updateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['maxSize', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_TOKEN_GROUP_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeTokenGroupInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n [\n 'updateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ['maxSize', getU64Decoder()],\n ]);\n}\n\nexport function getInitializeTokenGroupInstructionDataCodec(): Codec<\n InitializeTokenGroupInstructionDataArgs,\n InitializeTokenGroupInstructionData\n> {\n return combineCodec(\n getInitializeTokenGroupInstructionDataEncoder(),\n getInitializeTokenGroupInstructionDataDecoder()\n );\n}\n\nexport type InitializeTokenGroupInput<\n TAccountGroup extends string = string,\n TAccountMint extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n group: Address;\n mint: Address;\n mintAuthority: TransactionSigner;\n updateAuthority: InitializeTokenGroupInstructionDataArgs['updateAuthority'];\n maxSize: InitializeTokenGroupInstructionDataArgs['maxSize'];\n};\n\nexport function getInitializeTokenGroupInstruction<\n TAccountGroup extends string,\n TAccountMint extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeTokenGroupInput<\n TAccountGroup,\n TAccountMint,\n TAccountMintAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeTokenGroupInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountMint,\n TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n group: { value: input.group ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.group),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.mintAuthority),\n ],\n programAddress,\n data: getInitializeTokenGroupInstructionDataEncoder().encode(\n args as InitializeTokenGroupInstructionDataArgs\n ),\n } as InitializeTokenGroupInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountMint,\n TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeTokenGroupInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n group: TAccountMetas[0];\n mint: TAccountMetas[1];\n mintAuthority: TAccountMetas[2];\n };\n data: InitializeTokenGroupInstructionData;\n};\n\nexport function parseInitializeTokenGroupInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeTokenGroupInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n group: getNextAccount(),\n mint: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getInitializeTokenGroupInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR = new Uint8Array([\n 152, 32, 222, 176, 223, 237, 116, 134,\n]);\n\nexport function getInitializeTokenGroupMemberDiscriminatorBytes() {\n return getBytesEncoder().encode(INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR);\n}\n\nexport type InitializeTokenGroupMemberInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMember extends string | IAccountMeta = string,\n TAccountMemberMint extends string | IAccountMeta = string,\n TAccountMemberMintAuthority extends string | IAccountMeta = string,\n TAccountGroup extends string | IAccountMeta = string,\n TAccountGroupUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMember extends string\n ? WritableAccount\n : TAccountMember,\n TAccountMemberMint extends string\n ? ReadonlyAccount\n : TAccountMemberMint,\n TAccountMemberMintAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMemberMintAuthority,\n TAccountGroup extends string\n ? WritableAccount\n : TAccountGroup,\n TAccountGroupUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountGroupUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeTokenGroupMemberInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type InitializeTokenGroupMemberInstructionDataArgs = {};\n\nexport function getInitializeTokenGroupMemberInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getBytesEncoder()]]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_TOKEN_GROUP_MEMBER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeTokenGroupMemberInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getBytesDecoder()]]);\n}\n\nexport function getInitializeTokenGroupMemberInstructionDataCodec(): Codec<\n InitializeTokenGroupMemberInstructionDataArgs,\n InitializeTokenGroupMemberInstructionData\n> {\n return combineCodec(\n getInitializeTokenGroupMemberInstructionDataEncoder(),\n getInitializeTokenGroupMemberInstructionDataDecoder()\n );\n}\n\nexport type InitializeTokenGroupMemberInput<\n TAccountMember extends string = string,\n TAccountMemberMint extends string = string,\n TAccountMemberMintAuthority extends string = string,\n TAccountGroup extends string = string,\n TAccountGroupUpdateAuthority extends string = string,\n> = {\n member: Address;\n memberMint: Address;\n memberMintAuthority: TransactionSigner;\n group: Address;\n groupUpdateAuthority: TransactionSigner;\n};\n\nexport function getInitializeTokenGroupMemberInstruction<\n TAccountMember extends string,\n TAccountMemberMint extends string,\n TAccountMemberMintAuthority extends string,\n TAccountGroup extends string,\n TAccountGroupUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeTokenGroupMemberInput<\n TAccountMember,\n TAccountMemberMint,\n TAccountMemberMintAuthority,\n TAccountGroup,\n TAccountGroupUpdateAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeTokenGroupMemberInstruction<\n TProgramAddress,\n TAccountMember,\n TAccountMemberMint,\n TAccountMemberMintAuthority,\n TAccountGroup,\n TAccountGroupUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n member: { value: input.member ?? null, isWritable: true },\n memberMint: { value: input.memberMint ?? null, isWritable: false },\n memberMintAuthority: {\n value: input.memberMintAuthority ?? null,\n isWritable: false,\n },\n group: { value: input.group ?? null, isWritable: true },\n groupUpdateAuthority: {\n value: input.groupUpdateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.member),\n getAccountMeta(accounts.memberMint),\n getAccountMeta(accounts.memberMintAuthority),\n getAccountMeta(accounts.group),\n getAccountMeta(accounts.groupUpdateAuthority),\n ],\n programAddress,\n data: getInitializeTokenGroupMemberInstructionDataEncoder().encode({}),\n } as InitializeTokenGroupMemberInstruction<\n TProgramAddress,\n TAccountMember,\n TAccountMemberMint,\n TAccountMemberMintAuthority,\n TAccountGroup,\n TAccountGroupUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeTokenGroupMemberInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n member: TAccountMetas[0];\n memberMint: TAccountMetas[1];\n memberMintAuthority: TAccountMetas[2];\n group: TAccountMetas[3];\n groupUpdateAuthority: TAccountMetas[4];\n };\n data: InitializeTokenGroupMemberInstructionData;\n};\n\nexport function parseInitializeTokenGroupMemberInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeTokenGroupMemberInstruction {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n member: getNextAccount(),\n memberMint: getNextAccount(),\n memberMintAuthority: getNextAccount(),\n group: getNextAccount(),\n groupUpdateAuthority: getNextAccount(),\n },\n data: getInitializeTokenGroupMemberInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TOKEN_METADATA_DISCRIMINATOR = new Uint8Array([\n 210, 225, 30, 162, 88, 184, 77, 141,\n]);\n\nexport function getInitializeTokenMetadataDiscriminatorBytes() {\n return getBytesEncoder().encode(INITIALIZE_TOKEN_METADATA_DISCRIMINATOR);\n}\n\nexport type InitializeTokenMetadataInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetadata extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMetadata extends string\n ? WritableAccount\n : TAccountMetadata,\n TAccountUpdateAuthority extends string\n ? ReadonlyAccount\n : TAccountUpdateAuthority,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountMintAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeTokenMetadataInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** Longer name of the token. */\n name: string;\n /** Shortened symbol of the token. */\n symbol: string;\n /** URI pointing to more metadata (image, video, etc.). */\n uri: string;\n};\n\nexport type InitializeTokenMetadataInstructionDataArgs = {\n /** Longer name of the token. */\n name: string;\n /** Shortened symbol of the token. */\n symbol: string;\n /** URI pointing to more metadata (image, video, etc.). */\n uri: string;\n};\n\nexport function getInitializeTokenMetadataInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['symbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['uri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_TOKEN_METADATA_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeTokenMetadataInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['symbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['uri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ]);\n}\n\nexport function getInitializeTokenMetadataInstructionDataCodec(): Codec<\n InitializeTokenMetadataInstructionDataArgs,\n InitializeTokenMetadataInstructionData\n> {\n return combineCodec(\n getInitializeTokenMetadataInstructionDataEncoder(),\n getInitializeTokenMetadataInstructionDataDecoder()\n );\n}\n\nexport type InitializeTokenMetadataInput<\n TAccountMetadata extends string = string,\n TAccountUpdateAuthority extends string = string,\n TAccountMint extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n metadata: Address;\n updateAuthority: Address;\n mint: Address;\n mintAuthority: TransactionSigner;\n name: InitializeTokenMetadataInstructionDataArgs['name'];\n symbol: InitializeTokenMetadataInstructionDataArgs['symbol'];\n uri: InitializeTokenMetadataInstructionDataArgs['uri'];\n};\n\nexport function getInitializeTokenMetadataInstruction<\n TAccountMetadata extends string,\n TAccountUpdateAuthority extends string,\n TAccountMint extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeTokenMetadataInput<\n TAccountMetadata,\n TAccountUpdateAuthority,\n TAccountMint,\n TAccountMintAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeTokenMetadataInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority,\n TAccountMint,\n TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n metadata: { value: input.metadata ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n mint: { value: input.mint ?? null, isWritable: false },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.metadata),\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.mintAuthority),\n ],\n programAddress,\n data: getInitializeTokenMetadataInstructionDataEncoder().encode(\n args as InitializeTokenMetadataInstructionDataArgs\n ),\n } as InitializeTokenMetadataInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority,\n TAccountMint,\n TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeTokenMetadataInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n metadata: TAccountMetas[0];\n updateAuthority: TAccountMetas[1];\n mint: TAccountMetas[2];\n mintAuthority: TAccountMetas[3];\n };\n data: InitializeTokenMetadataInstructionData;\n};\n\nexport function parseInitializeTokenMetadataInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeTokenMetadataInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n metadata: getNextAccount(),\n updateAuthority: getNextAccount(),\n mint: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getInitializeTokenMetadataInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR = 26;\n\nexport function getInitializeTransferFeeConfigDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR = 0;\n\nexport function getInitializeTransferFeeConfigTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type InitializeTransferFeeConfigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeTransferFeeConfigInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n /** Pubkey that may update the fees. */\n transferFeeConfigAuthority: Option
;\n /** Withdraw instructions must be signed by this key. */\n withdrawWithheldAuthority: Option
;\n /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n transferFeeBasisPoints: number;\n /** Maximum fee assessed on transfers. */\n maximumFee: bigint;\n};\n\nexport type InitializeTransferFeeConfigInstructionDataArgs = {\n /** Pubkey that may update the fees. */\n transferFeeConfigAuthority: OptionOrNullable
;\n /** Withdraw instructions must be signed by this key. */\n withdrawWithheldAuthority: OptionOrNullable
;\n /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n transferFeeBasisPoints: number;\n /** Maximum fee assessed on transfers. */\n maximumFee: number | bigint;\n};\n\nexport function getInitializeTransferFeeConfigInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ['transferFeeConfigAuthority', getOptionEncoder(getAddressEncoder())],\n ['withdrawWithheldAuthority', getOptionEncoder(getAddressEncoder())],\n ['transferFeeBasisPoints', getU16Encoder()],\n ['maximumFee', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_TRANSFER_FEE_CONFIG_DISCRIMINATOR,\n transferFeeDiscriminator:\n INITIALIZE_TRANSFER_FEE_CONFIG_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeTransferFeeConfigInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ['transferFeeConfigAuthority', getOptionDecoder(getAddressDecoder())],\n ['withdrawWithheldAuthority', getOptionDecoder(getAddressDecoder())],\n ['transferFeeBasisPoints', getU16Decoder()],\n ['maximumFee', getU64Decoder()],\n ]);\n}\n\nexport function getInitializeTransferFeeConfigInstructionDataCodec(): Codec<\n InitializeTransferFeeConfigInstructionDataArgs,\n InitializeTransferFeeConfigInstructionData\n> {\n return combineCodec(\n getInitializeTransferFeeConfigInstructionDataEncoder(),\n getInitializeTransferFeeConfigInstructionDataDecoder()\n );\n}\n\nexport type InitializeTransferFeeConfigInput<\n TAccountMint extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n transferFeeConfigAuthority: InitializeTransferFeeConfigInstructionDataArgs['transferFeeConfigAuthority'];\n withdrawWithheldAuthority: InitializeTransferFeeConfigInstructionDataArgs['withdrawWithheldAuthority'];\n transferFeeBasisPoints: InitializeTransferFeeConfigInstructionDataArgs['transferFeeBasisPoints'];\n maximumFee: InitializeTransferFeeConfigInstructionDataArgs['maximumFee'];\n};\n\nexport function getInitializeTransferFeeConfigInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeTransferFeeConfigInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeTransferFeeConfigInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeTransferFeeConfigInstructionDataEncoder().encode(\n args as InitializeTransferFeeConfigInstructionDataArgs\n ),\n } as InitializeTransferFeeConfigInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeTransferFeeConfigInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeTransferFeeConfigInstructionData;\n};\n\nexport function parseInitializeTransferFeeConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeTransferFeeConfigInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeTransferFeeConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR = 36;\n\nexport function getInitializeTransferHookDiscriminatorBytes() {\n return getU8Encoder().encode(INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport const INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 0;\n\nexport function getInitializeTransferHookTransferHookDiscriminatorBytes() {\n return getU8Encoder().encode(\n INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR\n );\n}\n\nexport type InitializeTransferHookInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeTransferHookInstructionData = {\n discriminator: number;\n transferHookDiscriminator: number;\n /** The public key for the account that can update the program id */\n authority: Option
;\n /** The program id that performs logic during transfers */\n programId: Option
;\n};\n\nexport type InitializeTransferHookInstructionDataArgs = {\n /** The public key for the account that can update the program id */\n authority: OptionOrNullable
;\n /** The program id that performs logic during transfers */\n programId: OptionOrNullable
;\n};\n\nexport function getInitializeTransferHookInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferHookDiscriminator', getU8Encoder()],\n [\n 'authority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'programId',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_TRANSFER_HOOK_DISCRIMINATOR,\n transferHookDiscriminator:\n INITIALIZE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeTransferHookInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferHookDiscriminator', getU8Decoder()],\n [\n 'authority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n [\n 'programId',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getInitializeTransferHookInstructionDataCodec(): Codec<\n InitializeTransferHookInstructionDataArgs,\n InitializeTransferHookInstructionData\n> {\n return combineCodec(\n getInitializeTransferHookInstructionDataEncoder(),\n getInitializeTransferHookInstructionDataDecoder()\n );\n}\n\nexport type InitializeTransferHookInput =\n {\n /** The mint to initialize. */\n mint: Address;\n authority: InitializeTransferHookInstructionDataArgs['authority'];\n programId: InitializeTransferHookInstructionDataArgs['programId'];\n };\n\nexport function getInitializeTransferHookInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: InitializeTransferHookInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeTransferHookInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getInitializeTransferHookInstructionDataEncoder().encode(\n args as InitializeTransferHookInstructionDataArgs\n ),\n } as InitializeTransferHookInstruction;\n\n return instruction;\n}\n\nexport type ParsedInitializeTransferHookInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n };\n data: InitializeTransferHookInstructionData;\n};\n\nexport function parseInitializeTransferHookInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeTransferHookInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getInitializeTransferHookInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_DISCRIMINATOR = 7;\n\nexport function getMintToDiscriminatorBytes() {\n return getU8Encoder().encode(MINT_TO_DISCRIMINATOR);\n}\n\nexport type MintToInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMintAuthority extends string\n ? ReadonlyAccount\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MintToInstructionData = {\n discriminator: number;\n /** The amount of new tokens to mint. */\n amount: bigint;\n};\n\nexport type MintToInstructionDataArgs = {\n /** The amount of new tokens to mint. */\n amount: number | bigint;\n};\n\nexport function getMintToInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MINT_TO_DISCRIMINATOR })\n );\n}\n\nexport function getMintToInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getMintToInstructionDataCodec(): Codec<\n MintToInstructionDataArgs,\n MintToInstructionData\n> {\n return combineCodec(\n getMintToInstructionDataEncoder(),\n getMintToInstructionDataDecoder()\n );\n}\n\nexport type MintToInput<\n TAccountMint extends string = string,\n TAccountToken extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n /** The mint account. */\n mint: Address;\n /** The account to mint tokens to. */\n token: Address;\n /** The mint's minting authority or its multisignature account. */\n mintAuthority:\n | Address\n | TransactionSigner;\n amount: MintToInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getMintToInstruction<\n TAccountMint extends string,\n TAccountToken extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: MintToInput,\n config?: { programAddress?: TProgramAddress }\n): MintToInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n token: { value: input.token ?? null, isWritable: true },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mintAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getMintToInstructionDataEncoder().encode(\n args as MintToInstructionDataArgs\n ),\n } as MintToInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMintToInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint account. */\n mint: TAccountMetas[0];\n /** The account to mint tokens to. */\n token: TAccountMetas[1];\n /** The mint's minting authority or its multisignature account. */\n mintAuthority: TAccountMetas[2];\n };\n data: MintToInstructionData;\n};\n\nexport function parseMintToInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMintToInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n token: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getMintToInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MINT_TO_CHECKED_DISCRIMINATOR = 14;\n\nexport function getMintToCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(MINT_TO_CHECKED_DISCRIMINATOR);\n}\n\nexport type MintToCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountToken extends string | IAccountMeta = string,\n TAccountMintAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountMintAuthority extends string\n ? ReadonlyAccount\n : TAccountMintAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MintToCheckedInstructionData = {\n discriminator: number;\n /** The amount of new tokens to mint. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type MintToCheckedInstructionDataArgs = {\n /** The amount of new tokens to mint. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getMintToCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MINT_TO_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getMintToCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getMintToCheckedInstructionDataCodec(): Codec<\n MintToCheckedInstructionDataArgs,\n MintToCheckedInstructionData\n> {\n return combineCodec(\n getMintToCheckedInstructionDataEncoder(),\n getMintToCheckedInstructionDataDecoder()\n );\n}\n\nexport type MintToCheckedInput<\n TAccountMint extends string = string,\n TAccountToken extends string = string,\n TAccountMintAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The account to mint tokens to. */\n token: Address;\n /** The mint's minting authority or its multisignature account. */\n mintAuthority:\n | Address\n | TransactionSigner;\n amount: MintToCheckedInstructionDataArgs['amount'];\n decimals: MintToCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getMintToCheckedInstruction<\n TAccountMint extends string,\n TAccountToken extends string,\n TAccountMintAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: MintToCheckedInput,\n config?: { programAddress?: TProgramAddress }\n): MintToCheckedInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n token: { value: input.token ?? null, isWritable: true },\n mintAuthority: { value: input.mintAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.mintAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getMintToCheckedInstructionDataEncoder().encode(\n args as MintToCheckedInstructionDataArgs\n ),\n } as MintToCheckedInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountToken,\n (typeof input)['mintAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMintAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMintToCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The account to mint tokens to. */\n token: TAccountMetas[1];\n /** The mint's minting authority or its multisignature account. */\n mintAuthority: TAccountMetas[2];\n };\n data: MintToCheckedInstructionData;\n};\n\nexport function parseMintToCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMintToCheckedInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n token: getNextAccount(),\n mintAuthority: getNextAccount(),\n },\n data: getMintToCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const PAUSE_DISCRIMINATOR = 44;\n\nexport function getPauseDiscriminatorBytes() {\n return getU8Encoder().encode(PAUSE_DISCRIMINATOR);\n}\n\nexport const PAUSE_PAUSABLE_DISCRIMINATOR = 1;\n\nexport function getPausePausableDiscriminatorBytes() {\n return getU8Encoder().encode(PAUSE_PAUSABLE_DISCRIMINATOR);\n}\n\nexport type PauseInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type PauseInstructionData = {\n discriminator: number;\n pausableDiscriminator: number;\n};\n\nexport type PauseInstructionDataArgs = {};\n\nexport function getPauseInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['pausableDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: PAUSE_DISCRIMINATOR,\n pausableDiscriminator: PAUSE_PAUSABLE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getPauseInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['pausableDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getPauseInstructionDataCodec(): Codec<\n PauseInstructionDataArgs,\n PauseInstructionData\n> {\n return combineCodec(\n getPauseInstructionDataEncoder(),\n getPauseInstructionDataDecoder()\n );\n}\n\nexport type PauseInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The pausable authority that can pause the mint. */\n authority: Address | TransactionSigner;\n};\n\nexport function getPauseInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: PauseInput,\n config?: { programAddress?: TProgramAddress }\n): PauseInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ],\n programAddress,\n data: getPauseInstructionDataEncoder().encode({}),\n } as PauseInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedPauseInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The pausable authority that can pause the mint. */\n authority: TAccountMetas[1];\n };\n data: PauseInstructionData;\n};\n\nexport function parsePauseInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedPauseInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getPauseInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getExtensionTypeDecoder,\n getExtensionTypeEncoder,\n type ExtensionType,\n type ExtensionTypeArgs,\n} from '../types';\n\nexport const REALLOCATE_DISCRIMINATOR = 29;\n\nexport function getReallocateDiscriminatorBytes() {\n return getU8Encoder().encode(REALLOCATE_DISCRIMINATOR);\n}\n\nexport type ReallocateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountToken extends string | IAccountMeta = string,\n TAccountPayer extends string | IAccountMeta = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta = '11111111111111111111111111111111',\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountToken extends string\n ? WritableAccount\n : TAccountToken,\n TAccountPayer extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountPayer,\n TAccountSystemProgram extends string\n ? ReadonlyAccount\n : TAccountSystemProgram,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ReallocateInstructionData = {\n discriminator: number;\n /** New extension types to include in the reallocated account. */\n newExtensionTypes: Array;\n};\n\nexport type ReallocateInstructionDataArgs = {\n /** New extension types to include in the reallocated account. */\n newExtensionTypes: Array;\n};\n\nexport function getReallocateInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n [\n 'newExtensionTypes',\n getArrayEncoder(getExtensionTypeEncoder(), { size: 'remainder' }),\n ],\n ]),\n (value) => ({ ...value, discriminator: REALLOCATE_DISCRIMINATOR })\n );\n}\n\nexport function getReallocateInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n [\n 'newExtensionTypes',\n getArrayDecoder(getExtensionTypeDecoder(), { size: 'remainder' }),\n ],\n ]);\n}\n\nexport function getReallocateInstructionDataCodec(): Codec<\n ReallocateInstructionDataArgs,\n ReallocateInstructionData\n> {\n return combineCodec(\n getReallocateInstructionDataEncoder(),\n getReallocateInstructionDataDecoder()\n );\n}\n\nexport type ReallocateInput<\n TAccountToken extends string = string,\n TAccountPayer extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The token account to reallocate. */\n token: Address;\n /** The payer account to fund reallocation. */\n payer: TransactionSigner;\n /** System program for reallocation funding. */\n systemProgram?: Address;\n /** The account's owner or its multisignature account. */\n owner: Address | TransactionSigner;\n newExtensionTypes: ReallocateInstructionDataArgs['newExtensionTypes'];\n multiSigners?: Array;\n};\n\nexport function getReallocateInstruction<\n TAccountToken extends string,\n TAccountPayer extends string,\n TAccountSystemProgram extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ReallocateInput<\n TAccountToken,\n TAccountPayer,\n TAccountSystemProgram,\n TAccountOwner\n >,\n config?: { programAddress?: TProgramAddress }\n): ReallocateInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountPayer,\n TAccountSystemProgram,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n token: { value: input.token ?? null, isWritable: true },\n payer: { value: input.payer ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.token),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getReallocateInstructionDataEncoder().encode(\n args as ReallocateInstructionDataArgs\n ),\n } as ReallocateInstruction<\n TProgramAddress,\n TAccountToken,\n TAccountPayer,\n TAccountSystemProgram,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedReallocateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token account to reallocate. */\n token: TAccountMetas[0];\n /** The payer account to fund reallocation. */\n payer: TAccountMetas[1];\n /** System program for reallocation funding. */\n systemProgram: TAccountMetas[2];\n /** The account's owner or its multisignature account. */\n owner: TAccountMetas[3];\n };\n data: ReallocateInstructionData;\n};\n\nexport function parseReallocateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedReallocateInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n token: getNextAccount(),\n payer: getNextAccount(),\n systemProgram: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getReallocateInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '../pdas';\nimport { ASSOCIATED_TOKEN_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR = 2;\n\nexport function getRecoverNestedAssociatedTokenDiscriminatorBytes() {\n return getU8Encoder().encode(RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR);\n}\n\nexport type RecoverNestedAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountNestedAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountNestedTokenMintAddress extends string | IAccountMeta = string,\n TAccountDestinationAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountOwnerAssociatedAccountAddress extends\n | string\n | IAccountMeta = string,\n TAccountOwnerTokenMintAddress extends string | IAccountMeta = string,\n TAccountWalletAddress extends string | IAccountMeta = string,\n TAccountTokenProgram extends\n | string\n | IAccountMeta = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountNestedAssociatedAccountAddress extends string\n ? WritableAccount\n : TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress extends string\n ? ReadonlyAccount\n : TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress extends string\n ? WritableAccount\n : TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress extends string\n ? ReadonlyAccount\n : TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress extends string\n ? ReadonlyAccount\n : TAccountOwnerTokenMintAddress,\n TAccountWalletAddress extends string\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountWalletAddress,\n TAccountTokenProgram extends string\n ? ReadonlyAccount\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RecoverNestedAssociatedTokenInstructionData = {\n discriminator: number;\n};\n\nexport type RecoverNestedAssociatedTokenInstructionDataArgs = {};\n\nexport function getRecoverNestedAssociatedTokenInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: RECOVER_NESTED_ASSOCIATED_TOKEN_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRecoverNestedAssociatedTokenInstructionDataCodec(): Codec<\n RecoverNestedAssociatedTokenInstructionDataArgs,\n RecoverNestedAssociatedTokenInstructionData\n> {\n return combineCodec(\n getRecoverNestedAssociatedTokenInstructionDataEncoder(),\n getRecoverNestedAssociatedTokenInstructionDataDecoder()\n );\n}\n\nexport type RecoverNestedAssociatedTokenAsyncInput<\n TAccountNestedAssociatedAccountAddress extends string = string,\n TAccountNestedTokenMintAddress extends string = string,\n TAccountDestinationAssociatedAccountAddress extends string = string,\n TAccountOwnerAssociatedAccountAddress extends string = string,\n TAccountOwnerTokenMintAddress extends string = string,\n TAccountWalletAddress extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress?: Address;\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: Address;\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress?: Address;\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress?: Address;\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: Address;\n /** Wallet address for the owner associated token account. */\n walletAddress: TransactionSigner;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport async function getRecoverNestedAssociatedTokenInstructionAsync<\n TAccountNestedAssociatedAccountAddress extends string,\n TAccountNestedTokenMintAddress extends string,\n TAccountDestinationAssociatedAccountAddress extends string,\n TAccountOwnerAssociatedAccountAddress extends string,\n TAccountOwnerTokenMintAddress extends string,\n TAccountWalletAddress extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: RecoverNestedAssociatedTokenAsyncInput<\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n nestedAssociatedAccountAddress: {\n value: input.nestedAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n nestedTokenMintAddress: {\n value: input.nestedTokenMintAddress ?? null,\n isWritable: false,\n },\n destinationAssociatedAccountAddress: {\n value: input.destinationAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n ownerAssociatedAccountAddress: {\n value: input.ownerAssociatedAccountAddress ?? null,\n isWritable: false,\n },\n ownerTokenMintAddress: {\n value: input.ownerTokenMintAddress ?? null,\n isWritable: false,\n },\n walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.ownerAssociatedAccountAddress.value) {\n accounts.ownerAssociatedAccountAddress.value = await findAssociatedTokenPda(\n {\n owner: expectAddress(accounts.walletAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.ownerTokenMintAddress.value),\n }\n );\n }\n if (!accounts.nestedAssociatedAccountAddress.value) {\n accounts.nestedAssociatedAccountAddress.value =\n await findAssociatedTokenPda({\n owner: expectAddress(accounts.ownerAssociatedAccountAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.nestedTokenMintAddress.value),\n });\n }\n if (!accounts.destinationAssociatedAccountAddress.value) {\n accounts.destinationAssociatedAccountAddress.value =\n await findAssociatedTokenPda({\n owner: expectAddress(accounts.walletAddress.value),\n tokenProgram: expectAddress(accounts.tokenProgram.value),\n mint: expectAddress(accounts.nestedTokenMintAddress.value),\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.nestedAssociatedAccountAddress),\n getAccountMeta(accounts.nestedTokenMintAddress),\n getAccountMeta(accounts.destinationAssociatedAccountAddress),\n getAccountMeta(accounts.ownerAssociatedAccountAddress),\n getAccountMeta(accounts.ownerTokenMintAddress),\n getAccountMeta(accounts.walletAddress),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n } as RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type RecoverNestedAssociatedTokenInput<\n TAccountNestedAssociatedAccountAddress extends string = string,\n TAccountNestedTokenMintAddress extends string = string,\n TAccountDestinationAssociatedAccountAddress extends string = string,\n TAccountOwnerAssociatedAccountAddress extends string = string,\n TAccountOwnerTokenMintAddress extends string = string,\n TAccountWalletAddress extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress: Address;\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: Address;\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress: Address;\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress: Address;\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: Address;\n /** Wallet address for the owner associated token account. */\n walletAddress: TransactionSigner;\n /** SPL Token program. */\n tokenProgram?: Address;\n};\n\nexport function getRecoverNestedAssociatedTokenInstruction<\n TAccountNestedAssociatedAccountAddress extends string,\n TAccountNestedTokenMintAddress extends string,\n TAccountDestinationAssociatedAccountAddress extends string,\n TAccountOwnerAssociatedAccountAddress extends string,\n TAccountOwnerTokenMintAddress extends string,\n TAccountWalletAddress extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n>(\n input: RecoverNestedAssociatedTokenInput<\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? ASSOCIATED_TOKEN_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n nestedAssociatedAccountAddress: {\n value: input.nestedAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n nestedTokenMintAddress: {\n value: input.nestedTokenMintAddress ?? null,\n isWritable: false,\n },\n destinationAssociatedAccountAddress: {\n value: input.destinationAssociatedAccountAddress ?? null,\n isWritable: true,\n },\n ownerAssociatedAccountAddress: {\n value: input.ownerAssociatedAccountAddress ?? null,\n isWritable: false,\n },\n ownerTokenMintAddress: {\n value: input.ownerTokenMintAddress ?? null,\n isWritable: false,\n },\n walletAddress: { value: input.walletAddress ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.nestedAssociatedAccountAddress),\n getAccountMeta(accounts.nestedTokenMintAddress),\n getAccountMeta(accounts.destinationAssociatedAccountAddress),\n getAccountMeta(accounts.ownerAssociatedAccountAddress),\n getAccountMeta(accounts.ownerTokenMintAddress),\n getAccountMeta(accounts.walletAddress),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getRecoverNestedAssociatedTokenInstructionDataEncoder().encode({}),\n } as RecoverNestedAssociatedTokenInstruction<\n TProgramAddress,\n TAccountNestedAssociatedAccountAddress,\n TAccountNestedTokenMintAddress,\n TAccountDestinationAssociatedAccountAddress,\n TAccountOwnerAssociatedAccountAddress,\n TAccountOwnerTokenMintAddress,\n TAccountWalletAddress,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedRecoverNestedAssociatedTokenInstruction<\n TProgram extends string = typeof ASSOCIATED_TOKEN_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Nested associated token account, must be owned by `ownerAssociatedAccountAddress`. */\n nestedAssociatedAccountAddress: TAccountMetas[0];\n /** Token mint for the nested associated token account. */\n nestedTokenMintAddress: TAccountMetas[1];\n /** Wallet's associated token account. */\n destinationAssociatedAccountAddress: TAccountMetas[2];\n /** Owner associated token account address, must be owned by `walletAddress`. */\n ownerAssociatedAccountAddress: TAccountMetas[3];\n /** Token mint for the owner associated token account. */\n ownerTokenMintAddress: TAccountMetas[4];\n /** Wallet address for the owner associated token account. */\n walletAddress: TAccountMetas[5];\n /** SPL Token program. */\n tokenProgram: TAccountMetas[6];\n };\n data: RecoverNestedAssociatedTokenInstructionData;\n};\n\nexport function parseRecoverNestedAssociatedTokenInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedRecoverNestedAssociatedTokenInstruction {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n nestedAssociatedAccountAddress: getNextAccount(),\n nestedTokenMintAddress: getNextAccount(),\n destinationAssociatedAccountAddress: getNextAccount(),\n ownerAssociatedAccountAddress: getNextAccount(),\n ownerTokenMintAddress: getNextAccount(),\n walletAddress: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getRecoverNestedAssociatedTokenInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR = new Uint8Array([\n 234, 18, 32, 56, 89, 141, 37, 181,\n]);\n\nexport function getRemoveTokenMetadataKeyDiscriminatorBytes() {\n return getBytesEncoder().encode(REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR);\n}\n\nexport type RemoveTokenMetadataKeyInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetadata extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMetadata extends string\n ? WritableAccount\n : TAccountMetadata,\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RemoveTokenMetadataKeyInstructionData = {\n discriminator: ReadonlyUint8Array;\n /**\n * If the idempotent flag is set to true, then the instruction will not\n * error if the key does not exist\n */\n idempotent: boolean;\n /** Key to remove in the additional metadata portion. */\n key: string;\n};\n\nexport type RemoveTokenMetadataKeyInstructionDataArgs = {\n /**\n * If the idempotent flag is set to true, then the instruction will not\n * error if the key does not exist\n */\n idempotent?: boolean;\n /** Key to remove in the additional metadata portion. */\n key: string;\n};\n\nexport function getRemoveTokenMetadataKeyInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n ['idempotent', getBooleanEncoder()],\n ['key', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: REMOVE_TOKEN_METADATA_KEY_DISCRIMINATOR,\n idempotent: value.idempotent ?? false,\n })\n );\n}\n\nexport function getRemoveTokenMetadataKeyInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n ['idempotent', getBooleanDecoder()],\n ['key', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ]);\n}\n\nexport function getRemoveTokenMetadataKeyInstructionDataCodec(): Codec<\n RemoveTokenMetadataKeyInstructionDataArgs,\n RemoveTokenMetadataKeyInstructionData\n> {\n return combineCodec(\n getRemoveTokenMetadataKeyInstructionDataEncoder(),\n getRemoveTokenMetadataKeyInstructionDataDecoder()\n );\n}\n\nexport type RemoveTokenMetadataKeyInput<\n TAccountMetadata extends string = string,\n TAccountUpdateAuthority extends string = string,\n> = {\n metadata: Address;\n updateAuthority: TransactionSigner;\n idempotent?: RemoveTokenMetadataKeyInstructionDataArgs['idempotent'];\n key: RemoveTokenMetadataKeyInstructionDataArgs['key'];\n};\n\nexport function getRemoveTokenMetadataKeyInstruction<\n TAccountMetadata extends string,\n TAccountUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: RemoveTokenMetadataKeyInput,\n config?: { programAddress?: TProgramAddress }\n): RemoveTokenMetadataKeyInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n metadata: { value: input.metadata ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.metadata),\n getAccountMeta(accounts.updateAuthority),\n ],\n programAddress,\n data: getRemoveTokenMetadataKeyInstructionDataEncoder().encode(\n args as RemoveTokenMetadataKeyInstructionDataArgs\n ),\n } as RemoveTokenMetadataKeyInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedRemoveTokenMetadataKeyInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n metadata: TAccountMetas[0];\n updateAuthority: TAccountMetas[1];\n };\n data: RemoveTokenMetadataKeyInstructionData;\n};\n\nexport function parseRemoveTokenMetadataKeyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedRemoveTokenMetadataKeyInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n metadata: getNextAccount(),\n updateAuthority: getNextAccount(),\n },\n data: getRemoveTokenMetadataKeyInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESUME_DISCRIMINATOR = 44;\n\nexport function getResumeDiscriminatorBytes() {\n return getU8Encoder().encode(RESUME_DISCRIMINATOR);\n}\n\nexport const RESUME_PAUSABLE_DISCRIMINATOR = 2;\n\nexport function getResumePausableDiscriminatorBytes() {\n return getU8Encoder().encode(RESUME_PAUSABLE_DISCRIMINATOR);\n}\n\nexport type ResumeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ResumeInstructionData = {\n discriminator: number;\n pausableDiscriminator: number;\n};\n\nexport type ResumeInstructionDataArgs = {};\n\nexport function getResumeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['pausableDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: RESUME_DISCRIMINATOR,\n pausableDiscriminator: RESUME_PAUSABLE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getResumeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['pausableDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getResumeInstructionDataCodec(): Codec<\n ResumeInstructionDataArgs,\n ResumeInstructionData\n> {\n return combineCodec(\n getResumeInstructionDataEncoder(),\n getResumeInstructionDataDecoder()\n );\n}\n\nexport type ResumeInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The pausable authority that can resume the mint. */\n authority: Address | TransactionSigner;\n};\n\nexport function getResumeInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ResumeInput,\n config?: { programAddress?: TProgramAddress }\n): ResumeInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ],\n programAddress,\n data: getResumeInstructionDataEncoder().encode({}),\n } as ResumeInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedResumeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The pausable authority that can resume the mint. */\n authority: TAccountMetas[1];\n };\n data: ResumeInstructionData;\n};\n\nexport function parseResumeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedResumeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getResumeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REVOKE_DISCRIMINATOR = 5;\n\nexport function getRevokeDiscriminatorBytes() {\n return getU8Encoder().encode(REVOKE_DISCRIMINATOR);\n}\n\nexport type RevokeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevokeInstructionData = { discriminator: number };\n\nexport type RevokeInstructionDataArgs = {};\n\nexport function getRevokeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: REVOKE_DISCRIMINATOR })\n );\n}\n\nexport function getRevokeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getRevokeInstructionDataCodec(): Codec<\n RevokeInstructionDataArgs,\n RevokeInstructionData\n> {\n return combineCodec(\n getRevokeInstructionDataEncoder(),\n getRevokeInstructionDataDecoder()\n );\n}\n\nexport type RevokeInput<\n TAccountSource extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The source account owner or its multisignature. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getRevokeInstruction<\n TAccountSource extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: RevokeInput,\n config?: { programAddress?: TProgramAddress }\n): RevokeInstruction<\n TProgramAddress,\n TAccountSource,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getRevokeInstructionDataEncoder().encode({}),\n } as RevokeInstruction<\n TProgramAddress,\n TAccountSource,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedRevokeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The source account owner or its multisignature. */\n owner: TAccountMetas[1];\n };\n data: RevokeInstructionData;\n};\n\nexport function parseRevokeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedRevokeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getRevokeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getAuthorityTypeDecoder,\n getAuthorityTypeEncoder,\n type AuthorityType,\n type AuthorityTypeArgs,\n} from '../types';\n\nexport const SET_AUTHORITY_DISCRIMINATOR = 6;\n\nexport function getSetAuthorityDiscriminatorBytes() {\n return getU8Encoder().encode(SET_AUTHORITY_DISCRIMINATOR);\n}\n\nexport type SetAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountOwned extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountOwned extends string\n ? WritableAccount\n : TAccountOwned,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetAuthorityInstructionData = {\n discriminator: number;\n /** The type of authority to update. */\n authorityType: AuthorityType;\n /** The new authority */\n newAuthority: Option
;\n};\n\nexport type SetAuthorityInstructionDataArgs = {\n /** The type of authority to update. */\n authorityType: AuthorityTypeArgs;\n /** The new authority */\n newAuthority: OptionOrNullable
;\n};\n\nexport function getSetAuthorityInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['authorityType', getAuthorityTypeEncoder()],\n ['newAuthority', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR })\n );\n}\n\nexport function getSetAuthorityInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['authorityType', getAuthorityTypeDecoder()],\n ['newAuthority', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getSetAuthorityInstructionDataCodec(): Codec<\n SetAuthorityInstructionDataArgs,\n SetAuthorityInstructionData\n> {\n return combineCodec(\n getSetAuthorityInstructionDataEncoder(),\n getSetAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetAuthorityInput<\n TAccountOwned extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The mint or account to change the authority of. */\n owned: Address;\n /** The current authority or the multisignature account of the mint or account to update. */\n owner: Address | TransactionSigner;\n authorityType: SetAuthorityInstructionDataArgs['authorityType'];\n newAuthority: SetAuthorityInstructionDataArgs['newAuthority'];\n multiSigners?: Array;\n};\n\nexport function getSetAuthorityInstruction<\n TAccountOwned extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: SetAuthorityInput,\n config?: { programAddress?: TProgramAddress }\n): SetAuthorityInstruction<\n TProgramAddress,\n TAccountOwned,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owned: { value: input.owned ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.owned),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getSetAuthorityInstructionDataEncoder().encode(\n args as SetAuthorityInstructionDataArgs\n ),\n } as SetAuthorityInstruction<\n TProgramAddress,\n TAccountOwned,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedSetAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint or account to change the authority of. */\n owned: TAccountMetas[0];\n /** The current authority or the multisignature account of the mint or account to update. */\n owner: TAccountMetas[1];\n };\n data: SetAuthorityInstructionData;\n};\n\nexport function parseSetAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSetAuthorityInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owned: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getSetAuthorityInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_TRANSFER_FEE_DISCRIMINATOR = 26;\n\nexport function getSetTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(SET_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport const SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR = 5;\n\nexport function getSetTransferFeeTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR);\n}\n\nexport type SetTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountTransferFeeConfigAuthority extends\n | string\n | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountTransferFeeConfigAuthority extends string\n ? ReadonlyAccount\n : TAccountTransferFeeConfigAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetTransferFeeInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n transferFeeBasisPoints: number;\n /** Maximum fee assessed on transfers. */\n maximumFee: bigint;\n};\n\nexport type SetTransferFeeInstructionDataArgs = {\n /** Amount of transfer collected as fees, expressed as basis points of the transfer amount. */\n transferFeeBasisPoints: number;\n /** Maximum fee assessed on transfers. */\n maximumFee: number | bigint;\n};\n\nexport function getSetTransferFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ['transferFeeBasisPoints', getU16Encoder()],\n ['maximumFee', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: SET_TRANSFER_FEE_DISCRIMINATOR,\n transferFeeDiscriminator: SET_TRANSFER_FEE_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetTransferFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ['transferFeeBasisPoints', getU16Decoder()],\n ['maximumFee', getU64Decoder()],\n ]);\n}\n\nexport function getSetTransferFeeInstructionDataCodec(): Codec<\n SetTransferFeeInstructionDataArgs,\n SetTransferFeeInstructionData\n> {\n return combineCodec(\n getSetTransferFeeInstructionDataEncoder(),\n getSetTransferFeeInstructionDataDecoder()\n );\n}\n\nexport type SetTransferFeeInput<\n TAccountMint extends string = string,\n TAccountTransferFeeConfigAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The mint's fee account owner or its multisignature account. */\n transferFeeConfigAuthority:\n | Address\n | TransactionSigner;\n transferFeeBasisPoints: SetTransferFeeInstructionDataArgs['transferFeeBasisPoints'];\n maximumFee: SetTransferFeeInstructionDataArgs['maximumFee'];\n multiSigners?: Array;\n};\n\nexport function getSetTransferFeeInstruction<\n TAccountMint extends string,\n TAccountTransferFeeConfigAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: SetTransferFeeInput,\n config?: { programAddress?: TProgramAddress }\n): SetTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['transferFeeConfigAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountTransferFeeConfigAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n transferFeeConfigAuthority: {\n value: input.transferFeeConfigAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.transferFeeConfigAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getSetTransferFeeInstructionDataEncoder().encode(\n args as SetTransferFeeInstructionDataArgs\n ),\n } as SetTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['transferFeeConfigAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountTransferFeeConfigAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedSetTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The mint's fee account owner or its multisignature account. */\n transferFeeConfigAuthority: TAccountMetas[1];\n };\n data: SetTransferFeeInstructionData;\n};\n\nexport function parseSetTransferFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSetTransferFeeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n transferFeeConfigAuthority: getNextAccount(),\n },\n data: getSetTransferFeeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SYNC_NATIVE_DISCRIMINATOR = 17;\n\nexport function getSyncNativeDiscriminatorBytes() {\n return getU8Encoder().encode(SYNC_NATIVE_DISCRIMINATOR);\n}\n\nexport type SyncNativeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SyncNativeInstructionData = { discriminator: number };\n\nexport type SyncNativeInstructionDataArgs = {};\n\nexport function getSyncNativeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: SYNC_NATIVE_DISCRIMINATOR })\n );\n}\n\nexport function getSyncNativeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getSyncNativeInstructionDataCodec(): Codec<\n SyncNativeInstructionDataArgs,\n SyncNativeInstructionData\n> {\n return combineCodec(\n getSyncNativeInstructionDataEncoder(),\n getSyncNativeInstructionDataDecoder()\n );\n}\n\nexport type SyncNativeInput = {\n /** The native token account to sync with its underlying lamports. */\n account: Address;\n};\n\nexport function getSyncNativeInstruction<\n TAccountAccount extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: SyncNativeInput,\n config?: { programAddress?: TProgramAddress }\n): SyncNativeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.account)],\n programAddress,\n data: getSyncNativeInstructionDataEncoder().encode({}),\n } as SyncNativeInstruction;\n\n return instruction;\n}\n\nexport type ParsedSyncNativeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The native token account to sync with its underlying lamports. */\n account: TAccountMetas[0];\n };\n data: SyncNativeInstructionData;\n};\n\nexport function parseSyncNativeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSyncNativeInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n },\n data: getSyncNativeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const THAW_ACCOUNT_DISCRIMINATOR = 11;\n\nexport function getThawAccountDiscriminatorBytes() {\n return getU8Encoder().encode(THAW_ACCOUNT_DISCRIMINATOR);\n}\n\nexport type ThawAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountAccount extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountOwner extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountAccount extends string\n ? WritableAccount\n : TAccountAccount,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountOwner extends string\n ? ReadonlyAccount\n : TAccountOwner,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ThawAccountInstructionData = { discriminator: number };\n\nexport type ThawAccountInstructionDataArgs = {};\n\nexport function getThawAccountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({ ...value, discriminator: THAW_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getThawAccountInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getThawAccountInstructionDataCodec(): Codec<\n ThawAccountInstructionDataArgs,\n ThawAccountInstructionData\n> {\n return combineCodec(\n getThawAccountInstructionDataEncoder(),\n getThawAccountInstructionDataDecoder()\n );\n}\n\nexport type ThawAccountInput<\n TAccountAccount extends string = string,\n TAccountMint extends string = string,\n TAccountOwner extends string = string,\n> = {\n /** The account to thaw. */\n account: Address;\n /** The token mint. */\n mint: Address;\n /** The mint freeze authority or its multisignature account. */\n owner: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getThawAccountInstruction<\n TAccountAccount extends string,\n TAccountMint extends string,\n TAccountOwner extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: ThawAccountInput,\n config?: { programAddress?: TProgramAddress }\n): ThawAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n account: { value: input.account ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n owner: { value: input.owner ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.account),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.owner),\n ...remainingAccounts,\n ],\n programAddress,\n data: getThawAccountInstructionDataEncoder().encode({}),\n } as ThawAccountInstruction<\n TProgramAddress,\n TAccountAccount,\n TAccountMint,\n (typeof input)['owner'] extends TransactionSigner\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountOwner\n >;\n\n return instruction;\n}\n\nexport type ParsedThawAccountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The account to thaw. */\n account: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The mint freeze authority or its multisignature account. */\n owner: TAccountMetas[2];\n };\n data: ThawAccountInstructionData;\n};\n\nexport function parseThawAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedThawAccountInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n account: getNextAccount(),\n mint: getNextAccount(),\n owner: getNextAccount(),\n },\n data: getThawAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_DISCRIMINATOR = 3;\n\nexport function getTransferDiscriminatorBytes() {\n return getU8Encoder().encode(TRANSFER_DISCRIMINATOR);\n}\n\nexport type TransferInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferInstructionData = {\n discriminator: number;\n /** The amount of tokens to transfer. */\n amount: bigint;\n};\n\nexport type TransferInstructionDataArgs = {\n /** The amount of tokens to transfer. */\n amount: number | bigint;\n};\n\nexport function getTransferInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TRANSFER_DISCRIMINATOR })\n );\n}\n\nexport function getTransferInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getTransferInstructionDataCodec(): Codec<\n TransferInstructionDataArgs,\n TransferInstructionData\n> {\n return combineCodec(\n getTransferInstructionDataEncoder(),\n getTransferInstructionDataDecoder()\n );\n}\n\nexport type TransferInput<\n TAccountSource extends string = string,\n TAccountDestination extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The destination account. */\n destination: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: TransferInstructionDataArgs['amount'];\n multiSigners?: Array;\n};\n\nexport function getTransferInstruction<\n TAccountSource extends string,\n TAccountDestination extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: TransferInput,\n config?: { programAddress?: TProgramAddress }\n): TransferInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getTransferInstructionDataEncoder().encode(\n args as TransferInstructionDataArgs\n ),\n } as TransferInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedTransferInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The destination account. */\n destination: TAccountMetas[1];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: TransferInstructionData;\n};\n\nexport function parseTransferInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedTransferInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n destination: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getTransferInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_CHECKED_DISCRIMINATOR = 12;\n\nexport function getTransferCheckedDiscriminatorBytes() {\n return getU8Encoder().encode(TRANSFER_CHECKED_DISCRIMINATOR);\n}\n\nexport type TransferCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferCheckedInstructionData = {\n discriminator: number;\n /** The amount of tokens to transfer. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport type TransferCheckedInstructionDataArgs = {\n /** The amount of tokens to transfer. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n};\n\nexport function getTransferCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TRANSFER_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getTransferCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ]);\n}\n\nexport function getTransferCheckedInstructionDataCodec(): Codec<\n TransferCheckedInstructionDataArgs,\n TransferCheckedInstructionData\n> {\n return combineCodec(\n getTransferCheckedInstructionDataEncoder(),\n getTransferCheckedInstructionDataDecoder()\n );\n}\n\nexport type TransferCheckedInput<\n TAccountSource extends string = string,\n TAccountMint extends string = string,\n TAccountDestination extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source account. */\n source: Address;\n /** The token mint. */\n mint: Address;\n /** The destination account. */\n destination: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: TransferCheckedInstructionDataArgs['amount'];\n decimals: TransferCheckedInstructionDataArgs['decimals'];\n multiSigners?: Array;\n};\n\nexport function getTransferCheckedInstruction<\n TAccountSource extends string,\n TAccountMint extends string,\n TAccountDestination extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: TransferCheckedInput<\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): TransferCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n destination: { value: input.destination ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getTransferCheckedInstructionDataEncoder().encode(\n args as TransferCheckedInstructionDataArgs\n ),\n } as TransferCheckedInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedTransferCheckedInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. */\n source: TAccountMetas[0];\n /** The token mint. */\n mint: TAccountMetas[1];\n /** The destination account. */\n destination: TAccountMetas[2];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[3];\n };\n data: TransferCheckedInstructionData;\n};\n\nexport function parseTransferCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedTransferCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n mint: getNextAccount(),\n destination: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getTransferCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR = 26;\n\nexport function getTransferCheckedWithFeeDiscriminatorBytes() {\n return getU8Encoder().encode(TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR);\n}\n\nexport const TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR = 1;\n\nexport function getTransferCheckedWithFeeTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type TransferCheckedWithFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSource extends string | IAccountMeta = string,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSource extends string\n ? WritableAccount\n : TAccountSource,\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferCheckedWithFeeInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n /** The amount of tokens to transfer. */\n amount: bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /**\n * Expected fee assessed on this transfer, calculated off-chain based\n * on the transfer_fee_basis_points and maximum_fee of the mint. May\n * be 0 for a mint without a configured transfer fee.\n */\n fee: bigint;\n};\n\nexport type TransferCheckedWithFeeInstructionDataArgs = {\n /** The amount of tokens to transfer. */\n amount: number | bigint;\n /** Expected number of base 10 digits to the right of the decimal place. */\n decimals: number;\n /**\n * Expected fee assessed on this transfer, calculated off-chain based\n * on the transfer_fee_basis_points and maximum_fee of the mint. May\n * be 0 for a mint without a configured transfer fee.\n */\n fee: number | bigint;\n};\n\nexport function getTransferCheckedWithFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ['amount', getU64Encoder()],\n ['decimals', getU8Encoder()],\n ['fee', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSFER_CHECKED_WITH_FEE_DISCRIMINATOR,\n transferFeeDiscriminator:\n TRANSFER_CHECKED_WITH_FEE_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getTransferCheckedWithFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ['amount', getU64Decoder()],\n ['decimals', getU8Decoder()],\n ['fee', getU64Decoder()],\n ]);\n}\n\nexport function getTransferCheckedWithFeeInstructionDataCodec(): Codec<\n TransferCheckedWithFeeInstructionDataArgs,\n TransferCheckedWithFeeInstructionData\n> {\n return combineCodec(\n getTransferCheckedWithFeeInstructionDataEncoder(),\n getTransferCheckedWithFeeInstructionDataDecoder()\n );\n}\n\nexport type TransferCheckedWithFeeInput<\n TAccountSource extends string = string,\n TAccountMint extends string = string,\n TAccountDestination extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The source account. May include the `TransferFeeAmount` extension. */\n source: Address;\n /** The token mint. May include the `TransferFeeConfig` extension. */\n mint: Address;\n /** The destination account. May include the `TransferFeeAmount` extension. */\n destination: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n amount: TransferCheckedWithFeeInstructionDataArgs['amount'];\n decimals: TransferCheckedWithFeeInstructionDataArgs['decimals'];\n fee: TransferCheckedWithFeeInstructionDataArgs['fee'];\n multiSigners?: Array;\n};\n\nexport function getTransferCheckedWithFeeInstruction<\n TAccountSource extends string,\n TAccountMint extends string,\n TAccountDestination extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: TransferCheckedWithFeeInput<\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): TransferCheckedWithFeeInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n source: { value: input.source ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n destination: { value: input.destination ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.source),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getTransferCheckedWithFeeInstructionDataEncoder().encode(\n args as TransferCheckedWithFeeInstructionDataArgs\n ),\n } as TransferCheckedWithFeeInstruction<\n TProgramAddress,\n TAccountSource,\n TAccountMint,\n TAccountDestination,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedTransferCheckedWithFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The source account. May include the `TransferFeeAmount` extension. */\n source: TAccountMetas[0];\n /** The token mint. May include the `TransferFeeConfig` extension. */\n mint: TAccountMetas[1];\n /** The destination account. May include the `TransferFeeAmount` extension. */\n destination: TAccountMetas[2];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[3];\n };\n data: TransferCheckedWithFeeInstructionData;\n};\n\nexport function parseTransferCheckedWithFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedTransferCheckedWithFeeInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n source: getNextAccount(),\n mint: getNextAccount(),\n destination: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getTransferCheckedWithFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR = 24;\n\nexport function getUiAmountToAmountDiscriminatorBytes() {\n return getU8Encoder().encode(UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR);\n}\n\nexport type UiAmountToAmountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UiAmountToAmountInstructionData = {\n discriminator: number;\n /** The ui_amount of tokens to reformat. */\n uiAmount: string;\n};\n\nexport type UiAmountToAmountInstructionDataArgs = {\n /** The ui_amount of tokens to reformat. */\n uiAmount: string;\n};\n\nexport function getUiAmountToAmountInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['uiAmount', getUtf8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UI_AMOUNT_TO_AMOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getUiAmountToAmountInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['uiAmount', getUtf8Decoder()],\n ]);\n}\n\nexport function getUiAmountToAmountInstructionDataCodec(): Codec<\n UiAmountToAmountInstructionDataArgs,\n UiAmountToAmountInstructionData\n> {\n return combineCodec(\n getUiAmountToAmountInstructionDataEncoder(),\n getUiAmountToAmountInstructionDataDecoder()\n );\n}\n\nexport type UiAmountToAmountInput = {\n /** The mint to calculate for. */\n mint: Address;\n uiAmount: UiAmountToAmountInstructionDataArgs['uiAmount'];\n};\n\nexport function getUiAmountToAmountInstruction<\n TAccountMint extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UiAmountToAmountInput,\n config?: { programAddress?: TProgramAddress }\n): UiAmountToAmountInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [getAccountMeta(accounts.mint)],\n programAddress,\n data: getUiAmountToAmountInstructionDataEncoder().encode(\n args as UiAmountToAmountInstructionDataArgs\n ),\n } as UiAmountToAmountInstruction;\n\n return instruction;\n}\n\nexport type ParsedUiAmountToAmountInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to calculate for. */\n mint: TAccountMetas[0];\n };\n data: UiAmountToAmountInstructionData;\n};\n\nexport function parseUiAmountToAmountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUiAmountToAmountInstruction {\n if (instruction.accounts.length < 1) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n },\n data: getUiAmountToAmountInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR = 27;\n\nexport function getUpdateConfidentialTransferMintDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR = 1;\n\nexport function getUpdateConfidentialTransferMintConfidentialTransferDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR\n );\n}\n\nexport type UpdateConfidentialTransferMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateConfidentialTransferMintInstructionData = {\n discriminator: number;\n confidentialTransferDiscriminator: number;\n /**\n * Determines if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n */\n autoApproveNewAccounts: boolean;\n /** New authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: Option
;\n};\n\nexport type UpdateConfidentialTransferMintInstructionDataArgs = {\n /**\n * Determines if newly configured accounts must be approved by the\n * `authority` before they may be used by the user.\n */\n autoApproveNewAccounts: boolean;\n /** New authority to decode any transfer amount in a confidential transfer. */\n auditorElgamalPubkey: OptionOrNullable
;\n};\n\nexport function getUpdateConfidentialTransferMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferDiscriminator', getU8Encoder()],\n ['autoApproveNewAccounts', getBooleanEncoder()],\n [\n 'auditorElgamalPubkey',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_CONFIDENTIAL_TRANSFER_MINT_DISCRIMINATOR,\n confidentialTransferDiscriminator:\n UPDATE_CONFIDENTIAL_TRANSFER_MINT_CONFIDENTIAL_TRANSFER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateConfidentialTransferMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferDiscriminator', getU8Decoder()],\n ['autoApproveNewAccounts', getBooleanDecoder()],\n [\n 'auditorElgamalPubkey',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateConfidentialTransferMintInstructionDataCodec(): Codec<\n UpdateConfidentialTransferMintInstructionDataArgs,\n UpdateConfidentialTransferMintInstructionData\n> {\n return combineCodec(\n getUpdateConfidentialTransferMintInstructionDataEncoder(),\n getUpdateConfidentialTransferMintInstructionDataDecoder()\n );\n}\n\nexport type UpdateConfidentialTransferMintInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The SPL Token mint. */\n mint: Address;\n /** Confidential transfer mint authority. */\n authority: TransactionSigner;\n autoApproveNewAccounts: UpdateConfidentialTransferMintInstructionDataArgs['autoApproveNewAccounts'];\n auditorElgamalPubkey: UpdateConfidentialTransferMintInstructionDataArgs['auditorElgamalPubkey'];\n};\n\nexport function getUpdateConfidentialTransferMintInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateConfidentialTransferMintInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateConfidentialTransferMintInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ],\n programAddress,\n data: getUpdateConfidentialTransferMintInstructionDataEncoder().encode(\n args as UpdateConfidentialTransferMintInstructionDataArgs\n ),\n } as UpdateConfidentialTransferMintInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateConfidentialTransferMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The SPL Token mint. */\n mint: TAccountMetas[0];\n /** Confidential transfer mint authority. */\n authority: TAccountMetas[1];\n };\n data: UpdateConfidentialTransferMintInstructionData;\n};\n\nexport function parseUpdateConfidentialTransferMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateConfidentialTransferMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getUpdateConfidentialTransferMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getAccountStateDecoder,\n getAccountStateEncoder,\n type AccountState,\n type AccountStateArgs,\n} from '../types';\n\nexport const UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 28;\n\nexport function getUpdateDefaultAccountStateDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR);\n}\n\nexport const UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR = 1;\n\nexport function getUpdateDefaultAccountStateDefaultAccountStateDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR\n );\n}\n\nexport type UpdateDefaultAccountStateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountFreezeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountFreezeAuthority extends string\n ? ReadonlyAccount\n : TAccountFreezeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateDefaultAccountStateInstructionData = {\n discriminator: number;\n defaultAccountStateDiscriminator: number;\n /** The state each new token account should start with. */\n state: AccountState;\n};\n\nexport type UpdateDefaultAccountStateInstructionDataArgs = {\n /** The state each new token account should start with. */\n state: AccountStateArgs;\n};\n\nexport function getUpdateDefaultAccountStateInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['defaultAccountStateDiscriminator', getU8Encoder()],\n ['state', getAccountStateEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n defaultAccountStateDiscriminator:\n UPDATE_DEFAULT_ACCOUNT_STATE_DEFAULT_ACCOUNT_STATE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateDefaultAccountStateInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['defaultAccountStateDiscriminator', getU8Decoder()],\n ['state', getAccountStateDecoder()],\n ]);\n}\n\nexport function getUpdateDefaultAccountStateInstructionDataCodec(): Codec<\n UpdateDefaultAccountStateInstructionDataArgs,\n UpdateDefaultAccountStateInstructionData\n> {\n return combineCodec(\n getUpdateDefaultAccountStateInstructionDataEncoder(),\n getUpdateDefaultAccountStateInstructionDataDecoder()\n );\n}\n\nexport type UpdateDefaultAccountStateInput<\n TAccountMint extends string = string,\n TAccountFreezeAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The mint freeze authority or its multisignature account. */\n freezeAuthority:\n | Address\n | TransactionSigner;\n state: UpdateDefaultAccountStateInstructionDataArgs['state'];\n multiSigners?: Array;\n};\n\nexport function getUpdateDefaultAccountStateInstruction<\n TAccountMint extends string,\n TAccountFreezeAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateDefaultAccountStateInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateDefaultAccountStateInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['freezeAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountFreezeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n freezeAuthority: {\n value: input.freezeAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.freezeAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateDefaultAccountStateInstructionDataEncoder().encode(\n args as UpdateDefaultAccountStateInstructionDataArgs\n ),\n } as UpdateDefaultAccountStateInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['freezeAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountFreezeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateDefaultAccountStateInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The mint freeze authority or its multisignature account. */\n freezeAuthority: TAccountMetas[1];\n };\n data: UpdateDefaultAccountStateInstructionData;\n};\n\nexport function parseUpdateDefaultAccountStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateDefaultAccountStateInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n freezeAuthority: getNextAccount(),\n },\n data: getUpdateDefaultAccountStateInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR = 41;\n\nexport function getUpdateGroupMemberPointerDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateGroupMemberPointerGroupMemberPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR\n );\n}\n\nexport type UpdateGroupMemberPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountGroupMemberPointerAuthority extends\n | string\n | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountGroupMemberPointerAuthority extends string\n ? ReadonlyAccount\n : TAccountGroupMemberPointerAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateGroupMemberPointerInstructionData = {\n discriminator: number;\n groupMemberPointerDiscriminator: number;\n /** The new account address that holds the member. */\n memberAddress: Option
;\n};\n\nexport type UpdateGroupMemberPointerInstructionDataArgs = {\n /** The new account address that holds the member. */\n memberAddress: OptionOrNullable
;\n};\n\nexport function getUpdateGroupMemberPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['groupMemberPointerDiscriminator', getU8Encoder()],\n [\n 'memberAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n groupMemberPointerDiscriminator:\n UPDATE_GROUP_MEMBER_POINTER_GROUP_MEMBER_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateGroupMemberPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['groupMemberPointerDiscriminator', getU8Decoder()],\n [\n 'memberAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateGroupMemberPointerInstructionDataCodec(): Codec<\n UpdateGroupMemberPointerInstructionDataArgs,\n UpdateGroupMemberPointerInstructionData\n> {\n return combineCodec(\n getUpdateGroupMemberPointerInstructionDataEncoder(),\n getUpdateGroupMemberPointerInstructionDataDecoder()\n );\n}\n\nexport type UpdateGroupMemberPointerInput<\n TAccountMint extends string = string,\n TAccountGroupMemberPointerAuthority extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n /** The group member pointer authority or its multisignature account. */\n groupMemberPointerAuthority:\n | Address\n | TransactionSigner;\n memberAddress: UpdateGroupMemberPointerInstructionDataArgs['memberAddress'];\n multiSigners?: Array;\n};\n\nexport function getUpdateGroupMemberPointerInstruction<\n TAccountMint extends string,\n TAccountGroupMemberPointerAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateGroupMemberPointerInput<\n TAccountMint,\n TAccountGroupMemberPointerAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateGroupMemberPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['groupMemberPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountGroupMemberPointerAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n groupMemberPointerAuthority: {\n value: input.groupMemberPointerAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.groupMemberPointerAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateGroupMemberPointerInstructionDataEncoder().encode(\n args as UpdateGroupMemberPointerInstructionDataArgs\n ),\n } as UpdateGroupMemberPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['groupMemberPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountGroupMemberPointerAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateGroupMemberPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n /** The group member pointer authority or its multisignature account. */\n groupMemberPointerAuthority: TAccountMetas[1];\n };\n data: UpdateGroupMemberPointerInstructionData;\n};\n\nexport function parseUpdateGroupMemberPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateGroupMemberPointerInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n groupMemberPointerAuthority: getNextAccount(),\n },\n data: getUpdateGroupMemberPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_GROUP_POINTER_DISCRIMINATOR = 40;\n\nexport function getUpdateGroupPointerDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_GROUP_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateGroupPointerGroupPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR\n );\n}\n\nexport type UpdateGroupPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountGroupPointerAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountGroupPointerAuthority extends string\n ? ReadonlyAccount\n : TAccountGroupPointerAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateGroupPointerInstructionData = {\n discriminator: number;\n groupPointerDiscriminator: number;\n /** The new account address that holds the group configurations. */\n groupAddress: Option
;\n};\n\nexport type UpdateGroupPointerInstructionDataArgs = {\n /** The new account address that holds the group configurations. */\n groupAddress: OptionOrNullable
;\n};\n\nexport function getUpdateGroupPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['groupPointerDiscriminator', getU8Encoder()],\n [\n 'groupAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_GROUP_POINTER_DISCRIMINATOR,\n groupPointerDiscriminator:\n UPDATE_GROUP_POINTER_GROUP_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateGroupPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['groupPointerDiscriminator', getU8Decoder()],\n [\n 'groupAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateGroupPointerInstructionDataCodec(): Codec<\n UpdateGroupPointerInstructionDataArgs,\n UpdateGroupPointerInstructionData\n> {\n return combineCodec(\n getUpdateGroupPointerInstructionDataEncoder(),\n getUpdateGroupPointerInstructionDataDecoder()\n );\n}\n\nexport type UpdateGroupPointerInput<\n TAccountMint extends string = string,\n TAccountGroupPointerAuthority extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n /** The group pointer authority or its multisignature account. */\n groupPointerAuthority:\n | Address\n | TransactionSigner;\n groupAddress: UpdateGroupPointerInstructionDataArgs['groupAddress'];\n multiSigners?: Array;\n};\n\nexport function getUpdateGroupPointerInstruction<\n TAccountMint extends string,\n TAccountGroupPointerAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateGroupPointerInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateGroupPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['groupPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountGroupPointerAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n groupPointerAuthority: {\n value: input.groupPointerAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.groupPointerAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateGroupPointerInstructionDataEncoder().encode(\n args as UpdateGroupPointerInstructionDataArgs\n ),\n } as UpdateGroupPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['groupPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountGroupPointerAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateGroupPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n /** The group pointer authority or its multisignature account. */\n groupPointerAuthority: TAccountMetas[1];\n };\n data: UpdateGroupPointerInstructionData;\n};\n\nexport function parseUpdateGroupPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateGroupPointerInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n groupPointerAuthority: getNextAccount(),\n },\n data: getUpdateGroupPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_METADATA_POINTER_DISCRIMINATOR = 39;\n\nexport function getUpdateMetadataPointerDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_METADATA_POINTER_DISCRIMINATOR);\n}\n\nexport const UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR = 1;\n\nexport function getUpdateMetadataPointerMetadataPointerDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR\n );\n}\n\nexport type UpdateMetadataPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountMetadataPointerAuthority extends\n | string\n | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountMetadataPointerAuthority extends string\n ? ReadonlyAccount\n : TAccountMetadataPointerAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateMetadataPointerInstructionData = {\n discriminator: number;\n metadataPointerDiscriminator: number;\n /** The new account address that holds the metadata. */\n metadataAddress: Option
;\n};\n\nexport type UpdateMetadataPointerInstructionDataArgs = {\n /** The new account address that holds the metadata. */\n metadataAddress: OptionOrNullable
;\n};\n\nexport function getUpdateMetadataPointerInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['metadataPointerDiscriminator', getU8Encoder()],\n [\n 'metadataAddress',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_METADATA_POINTER_DISCRIMINATOR,\n metadataPointerDiscriminator:\n UPDATE_METADATA_POINTER_METADATA_POINTER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateMetadataPointerInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['metadataPointerDiscriminator', getU8Decoder()],\n [\n 'metadataAddress',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateMetadataPointerInstructionDataCodec(): Codec<\n UpdateMetadataPointerInstructionDataArgs,\n UpdateMetadataPointerInstructionData\n> {\n return combineCodec(\n getUpdateMetadataPointerInstructionDataEncoder(),\n getUpdateMetadataPointerInstructionDataDecoder()\n );\n}\n\nexport type UpdateMetadataPointerInput<\n TAccountMint extends string = string,\n TAccountMetadataPointerAuthority extends string = string,\n> = {\n /** The mint to initialize. */\n mint: Address;\n /** The metadata pointer authority or its multisignature account. */\n metadataPointerAuthority:\n | Address\n | TransactionSigner;\n metadataAddress: UpdateMetadataPointerInstructionDataArgs['metadataAddress'];\n multiSigners?: Array;\n};\n\nexport function getUpdateMetadataPointerInstruction<\n TAccountMint extends string,\n TAccountMetadataPointerAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateMetadataPointerInput<\n TAccountMint,\n TAccountMetadataPointerAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateMetadataPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['metadataPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMetadataPointerAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n metadataPointerAuthority: {\n value: input.metadataPointerAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.metadataPointerAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateMetadataPointerInstructionDataEncoder().encode(\n args as UpdateMetadataPointerInstructionDataArgs\n ),\n } as UpdateMetadataPointerInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['metadataPointerAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountMetadataPointerAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateMetadataPointerInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint to initialize. */\n mint: TAccountMetas[0];\n /** The metadata pointer authority or its multisignature account. */\n metadataPointerAuthority: TAccountMetas[1];\n };\n data: UpdateMetadataPointerInstructionData;\n};\n\nexport function parseUpdateMetadataPointerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateMetadataPointerInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n metadataPointerAuthority: getNextAccount(),\n },\n data: getUpdateMetadataPointerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getF64Decoder,\n getF64Encoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR = 43;\n\nexport function getUpdateMultiplierScaledUiMintDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR = 1;\n\nexport function getUpdateMultiplierScaledUiMintScaledUiAmountMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR\n );\n}\n\nexport type UpdateMultiplierScaledUiMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateMultiplierScaledUiMintInstructionData = {\n discriminator: number;\n scaledUiAmountMintDiscriminator: number;\n /** The new multiplier for the scaled UI extension */\n multiplier: number;\n /** The timestamp at which the new multiplier will take effect */\n effectiveTimestamp: bigint;\n};\n\nexport type UpdateMultiplierScaledUiMintInstructionDataArgs = {\n /** The new multiplier for the scaled UI extension */\n multiplier: number;\n /** The timestamp at which the new multiplier will take effect */\n effectiveTimestamp: number | bigint;\n};\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['scaledUiAmountMintDiscriminator', getU8Encoder()],\n ['multiplier', getF64Encoder()],\n ['effectiveTimestamp', getI64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_MULTIPLIER_SCALED_UI_MINT_DISCRIMINATOR,\n scaledUiAmountMintDiscriminator:\n UPDATE_MULTIPLIER_SCALED_UI_MINT_SCALED_UI_AMOUNT_MINT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['scaledUiAmountMintDiscriminator', getU8Decoder()],\n ['multiplier', getF64Decoder()],\n ['effectiveTimestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUpdateMultiplierScaledUiMintInstructionDataCodec(): Codec<\n UpdateMultiplierScaledUiMintInstructionDataArgs,\n UpdateMultiplierScaledUiMintInstructionData\n> {\n return combineCodec(\n getUpdateMultiplierScaledUiMintInstructionDataEncoder(),\n getUpdateMultiplierScaledUiMintInstructionDataDecoder()\n );\n}\n\nexport type UpdateMultiplierScaledUiMintInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The multiplier authority. */\n authority: Address | TransactionSigner;\n multiplier: UpdateMultiplierScaledUiMintInstructionDataArgs['multiplier'];\n effectiveTimestamp: UpdateMultiplierScaledUiMintInstructionDataArgs['effectiveTimestamp'];\n multiSigners?: Array;\n};\n\nexport function getUpdateMultiplierScaledUiMintInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateMultiplierScaledUiMintInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateMultiplierScaledUiMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateMultiplierScaledUiMintInstructionDataEncoder().encode(\n args as UpdateMultiplierScaledUiMintInstructionDataArgs\n ),\n } as UpdateMultiplierScaledUiMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateMultiplierScaledUiMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The multiplier authority. */\n authority: TAccountMetas[1];\n };\n data: UpdateMultiplierScaledUiMintInstructionData;\n};\n\nexport function parseUpdateMultiplierScaledUiMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateMultiplierScaledUiMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getUpdateMultiplierScaledUiMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI16Decoder,\n getI16Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR = 33;\n\nexport function getUpdateRateInterestBearingMintDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR);\n}\n\nexport const UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR = 1;\n\nexport function getUpdateRateInterestBearingMintInterestBearingMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR\n );\n}\n\nexport type UpdateRateInterestBearingMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountRateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountRateAuthority extends string\n ? WritableAccount\n : TAccountRateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateRateInterestBearingMintInstructionData = {\n discriminator: number;\n interestBearingMintDiscriminator: number;\n /** The interest rate to update. */\n rate: number;\n};\n\nexport type UpdateRateInterestBearingMintInstructionDataArgs = {\n /** The interest rate to update. */\n rate: number;\n};\n\nexport function getUpdateRateInterestBearingMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['interestBearingMintDiscriminator', getU8Encoder()],\n ['rate', getI16Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_RATE_INTEREST_BEARING_MINT_DISCRIMINATOR,\n interestBearingMintDiscriminator:\n UPDATE_RATE_INTEREST_BEARING_MINT_INTEREST_BEARING_MINT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateRateInterestBearingMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['interestBearingMintDiscriminator', getU8Decoder()],\n ['rate', getI16Decoder()],\n ]);\n}\n\nexport function getUpdateRateInterestBearingMintInstructionDataCodec(): Codec<\n UpdateRateInterestBearingMintInstructionDataArgs,\n UpdateRateInterestBearingMintInstructionData\n> {\n return combineCodec(\n getUpdateRateInterestBearingMintInstructionDataEncoder(),\n getUpdateRateInterestBearingMintInstructionDataDecoder()\n );\n}\n\nexport type UpdateRateInterestBearingMintInput<\n TAccountMint extends string = string,\n TAccountRateAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The mint rate authority. */\n rateAuthority:\n | Address\n | TransactionSigner;\n rate: UpdateRateInterestBearingMintInstructionDataArgs['rate'];\n multiSigners?: Array;\n};\n\nexport function getUpdateRateInterestBearingMintInstruction<\n TAccountMint extends string,\n TAccountRateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateRateInterestBearingMintInput<\n TAccountMint,\n TAccountRateAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateRateInterestBearingMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['rateAuthority'] extends TransactionSigner\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountRateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n rateAuthority: { value: input.rateAuthority ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.rateAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateRateInterestBearingMintInstructionDataEncoder().encode(\n args as UpdateRateInterestBearingMintInstructionDataArgs\n ),\n } as UpdateRateInterestBearingMintInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['rateAuthority'] extends TransactionSigner\n ? WritableSignerAccount &\n IAccountSignerMeta\n : TAccountRateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateRateInterestBearingMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The mint rate authority. */\n rateAuthority: TAccountMetas[1];\n };\n data: UpdateRateInterestBearingMintInstructionData;\n};\n\nexport function parseUpdateRateInterestBearingMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateRateInterestBearingMintInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n rateAuthority: getNextAccount(),\n },\n data: getUpdateRateInterestBearingMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR = new Uint8Array([\n 108, 37, 171, 143, 248, 30, 18, 110,\n]);\n\nexport function getUpdateTokenGroupMaxSizeDiscriminatorBytes() {\n return getBytesEncoder().encode(UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR);\n}\n\nexport type UpdateTokenGroupMaxSizeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountGroup extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountGroup extends string\n ? WritableAccount\n : TAccountGroup,\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateTokenGroupMaxSizeInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** New max size for the group */\n maxSize: bigint;\n};\n\nexport type UpdateTokenGroupMaxSizeInstructionDataArgs = {\n /** New max size for the group */\n maxSize: number | bigint;\n};\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n ['maxSize', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_TOKEN_GROUP_MAX_SIZE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n ['maxSize', getU64Decoder()],\n ]);\n}\n\nexport function getUpdateTokenGroupMaxSizeInstructionDataCodec(): Codec<\n UpdateTokenGroupMaxSizeInstructionDataArgs,\n UpdateTokenGroupMaxSizeInstructionData\n> {\n return combineCodec(\n getUpdateTokenGroupMaxSizeInstructionDataEncoder(),\n getUpdateTokenGroupMaxSizeInstructionDataDecoder()\n );\n}\n\nexport type UpdateTokenGroupMaxSizeInput<\n TAccountGroup extends string = string,\n TAccountUpdateAuthority extends string = string,\n> = {\n group: Address;\n updateAuthority: TransactionSigner;\n maxSize: UpdateTokenGroupMaxSizeInstructionDataArgs['maxSize'];\n};\n\nexport function getUpdateTokenGroupMaxSizeInstruction<\n TAccountGroup extends string,\n TAccountUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateTokenGroupMaxSizeInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateTokenGroupMaxSizeInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n group: { value: input.group ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.group),\n getAccountMeta(accounts.updateAuthority),\n ],\n programAddress,\n data: getUpdateTokenGroupMaxSizeInstructionDataEncoder().encode(\n args as UpdateTokenGroupMaxSizeInstructionDataArgs\n ),\n } as UpdateTokenGroupMaxSizeInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateTokenGroupMaxSizeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n group: TAccountMetas[0];\n updateAuthority: TAccountMetas[1];\n };\n data: UpdateTokenGroupMaxSizeInstructionData;\n};\n\nexport function parseUpdateTokenGroupMaxSizeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateTokenGroupMaxSizeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n group: getNextAccount(),\n updateAuthority: getNextAccount(),\n },\n data: getUpdateTokenGroupMaxSizeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array(\n [161, 105, 88, 1, 237, 221, 216, 203]\n);\n\nexport function getUpdateTokenGroupUpdateAuthorityDiscriminatorBytes() {\n return getBytesEncoder().encode(\n UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type UpdateTokenGroupUpdateAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountGroup extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountGroup extends string\n ? WritableAccount\n : TAccountGroup,\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateTokenGroupUpdateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** New authority for the group, or unset if `None` */\n newUpdateAuthority: Option
;\n};\n\nexport type UpdateTokenGroupUpdateAuthorityInstructionDataArgs = {\n /** New authority for the group, or unset if `None` */\n newUpdateAuthority: OptionOrNullable
;\n};\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n [\n 'newUpdateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_TOKEN_GROUP_UPDATE_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n [\n 'newUpdateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateTokenGroupUpdateAuthorityInstructionDataCodec(): Codec<\n UpdateTokenGroupUpdateAuthorityInstructionDataArgs,\n UpdateTokenGroupUpdateAuthorityInstructionData\n> {\n return combineCodec(\n getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder(),\n getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type UpdateTokenGroupUpdateAuthorityInput<\n TAccountGroup extends string = string,\n TAccountUpdateAuthority extends string = string,\n> = {\n group: Address;\n /** Current update authority */\n updateAuthority: TransactionSigner;\n newUpdateAuthority: UpdateTokenGroupUpdateAuthorityInstructionDataArgs['newUpdateAuthority'];\n};\n\nexport function getUpdateTokenGroupUpdateAuthorityInstruction<\n TAccountGroup extends string,\n TAccountUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateTokenGroupUpdateAuthorityInput<\n TAccountGroup,\n TAccountUpdateAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateTokenGroupUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n group: { value: input.group ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.group),\n getAccountMeta(accounts.updateAuthority),\n ],\n programAddress,\n data: getUpdateTokenGroupUpdateAuthorityInstructionDataEncoder().encode(\n args as UpdateTokenGroupUpdateAuthorityInstructionDataArgs\n ),\n } as UpdateTokenGroupUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountGroup,\n TAccountUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateTokenGroupUpdateAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n group: TAccountMetas[0];\n /** Current update authority */\n updateAuthority: TAccountMetas[1];\n };\n data: UpdateTokenGroupUpdateAuthorityInstructionData;\n};\n\nexport function parseUpdateTokenGroupUpdateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateTokenGroupUpdateAuthorityInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n group: getNextAccount(),\n updateAuthority: getNextAccount(),\n },\n data: getUpdateTokenGroupUpdateAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getTokenMetadataFieldDecoder,\n getTokenMetadataFieldEncoder,\n type TokenMetadataField,\n type TokenMetadataFieldArgs,\n} from '../types';\n\nexport const UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR = new Uint8Array([\n 221, 233, 49, 45, 181, 202, 220, 200,\n]);\n\nexport function getUpdateTokenMetadataFieldDiscriminatorBytes() {\n return getBytesEncoder().encode(UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR);\n}\n\nexport type UpdateTokenMetadataFieldInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetadata extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMetadata extends string\n ? WritableAccount\n : TAccountMetadata,\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateTokenMetadataFieldInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** Field to update in the metadata. */\n field: TokenMetadataField;\n /** Value to write for the field. */\n value: string;\n};\n\nexport type UpdateTokenMetadataFieldInstructionDataArgs = {\n /** Field to update in the metadata. */\n field: TokenMetadataFieldArgs;\n /** Value to write for the field. */\n value: string;\n};\n\nexport function getUpdateTokenMetadataFieldInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n ['field', getTokenMetadataFieldEncoder()],\n ['value', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_TOKEN_METADATA_FIELD_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateTokenMetadataFieldInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n ['field', getTokenMetadataFieldDecoder()],\n ['value', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ]);\n}\n\nexport function getUpdateTokenMetadataFieldInstructionDataCodec(): Codec<\n UpdateTokenMetadataFieldInstructionDataArgs,\n UpdateTokenMetadataFieldInstructionData\n> {\n return combineCodec(\n getUpdateTokenMetadataFieldInstructionDataEncoder(),\n getUpdateTokenMetadataFieldInstructionDataDecoder()\n );\n}\n\nexport type UpdateTokenMetadataFieldInput<\n TAccountMetadata extends string = string,\n TAccountUpdateAuthority extends string = string,\n> = {\n metadata: Address;\n updateAuthority: TransactionSigner;\n field: UpdateTokenMetadataFieldInstructionDataArgs['field'];\n value: UpdateTokenMetadataFieldInstructionDataArgs['value'];\n};\n\nexport function getUpdateTokenMetadataFieldInstruction<\n TAccountMetadata extends string,\n TAccountUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateTokenMetadataFieldInput<\n TAccountMetadata,\n TAccountUpdateAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateTokenMetadataFieldInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n metadata: { value: input.metadata ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.metadata),\n getAccountMeta(accounts.updateAuthority),\n ],\n programAddress,\n data: getUpdateTokenMetadataFieldInstructionDataEncoder().encode(\n args as UpdateTokenMetadataFieldInstructionDataArgs\n ),\n } as UpdateTokenMetadataFieldInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateTokenMetadataFieldInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n metadata: TAccountMetas[0];\n updateAuthority: TAccountMetas[1];\n };\n data: UpdateTokenMetadataFieldInstructionData;\n};\n\nexport function parseUpdateTokenMetadataFieldInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateTokenMetadataFieldInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n metadata: getNextAccount(),\n updateAuthority: getNextAccount(),\n },\n data: getUpdateTokenMetadataFieldInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR =\n new Uint8Array([215, 228, 166, 228, 84, 100, 86, 123]);\n\nexport function getUpdateTokenMetadataUpdateAuthorityDiscriminatorBytes() {\n return getBytesEncoder().encode(\n UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type UpdateTokenMetadataUpdateAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetadata extends string | IAccountMeta = string,\n TAccountUpdateAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMetadata extends string\n ? WritableAccount\n : TAccountMetadata,\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountUpdateAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateTokenMetadataUpdateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n /** New authority for the token metadata, or unset if `None` */\n newUpdateAuthority: Option
;\n};\n\nexport type UpdateTokenMetadataUpdateAuthorityInstructionDataArgs = {\n /** New authority for the token metadata, or unset if `None` */\n newUpdateAuthority: OptionOrNullable
;\n};\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getBytesEncoder()],\n [\n 'newUpdateAuthority',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_TOKEN_METADATA_UPDATE_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getBytesDecoder()],\n [\n 'newUpdateAuthority',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstructionDataCodec(): Codec<\n UpdateTokenMetadataUpdateAuthorityInstructionDataArgs,\n UpdateTokenMetadataUpdateAuthorityInstructionData\n> {\n return combineCodec(\n getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder(),\n getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type UpdateTokenMetadataUpdateAuthorityInput<\n TAccountMetadata extends string = string,\n TAccountUpdateAuthority extends string = string,\n> = {\n metadata: Address;\n updateAuthority: TransactionSigner;\n newUpdateAuthority: UpdateTokenMetadataUpdateAuthorityInstructionDataArgs['newUpdateAuthority'];\n};\n\nexport function getUpdateTokenMetadataUpdateAuthorityInstruction<\n TAccountMetadata extends string,\n TAccountUpdateAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateTokenMetadataUpdateAuthorityInput<\n TAccountMetadata,\n TAccountUpdateAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdateTokenMetadataUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n metadata: { value: input.metadata ?? null, isWritable: true },\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.metadata),\n getAccountMeta(accounts.updateAuthority),\n ],\n programAddress,\n data: getUpdateTokenMetadataUpdateAuthorityInstructionDataEncoder().encode(\n args as UpdateTokenMetadataUpdateAuthorityInstructionDataArgs\n ),\n } as UpdateTokenMetadataUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountMetadata,\n TAccountUpdateAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateTokenMetadataUpdateAuthorityInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n metadata: TAccountMetas[0];\n updateAuthority: TAccountMetas[1];\n };\n data: UpdateTokenMetadataUpdateAuthorityInstructionData;\n};\n\nexport function parseUpdateTokenMetadataUpdateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateTokenMetadataUpdateAuthorityInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n metadata: getNextAccount(),\n updateAuthority: getNextAccount(),\n },\n data: getUpdateTokenMetadataUpdateAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_TRANSFER_HOOK_DISCRIMINATOR = 36;\n\nexport function getUpdateTransferHookDiscriminatorBytes() {\n return getU8Encoder().encode(UPDATE_TRANSFER_HOOK_DISCRIMINATOR);\n}\n\nexport const UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR = 1;\n\nexport function getUpdateTransferHookTransferHookDiscriminatorBytes() {\n return getU8Encoder().encode(\n UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR\n );\n}\n\nexport type UpdateTransferHookInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateTransferHookInstructionData = {\n discriminator: number;\n transferHookDiscriminator: number;\n /** The program id that performs logic during transfers */\n programId: Option
;\n};\n\nexport type UpdateTransferHookInstructionDataArgs = {\n /** The program id that performs logic during transfers */\n programId: OptionOrNullable
;\n};\n\nexport function getUpdateTransferHookInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferHookDiscriminator', getU8Encoder()],\n [\n 'programId',\n getOptionEncoder(getAddressEncoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_TRANSFER_HOOK_DISCRIMINATOR,\n transferHookDiscriminator:\n UPDATE_TRANSFER_HOOK_TRANSFER_HOOK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdateTransferHookInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferHookDiscriminator', getU8Decoder()],\n [\n 'programId',\n getOptionDecoder(getAddressDecoder(), {\n prefix: null,\n noneValue: 'zeroes',\n }),\n ],\n ]);\n}\n\nexport function getUpdateTransferHookInstructionDataCodec(): Codec<\n UpdateTransferHookInstructionDataArgs,\n UpdateTransferHookInstructionData\n> {\n return combineCodec(\n getUpdateTransferHookInstructionDataEncoder(),\n getUpdateTransferHookInstructionDataDecoder()\n );\n}\n\nexport type UpdateTransferHookInput<\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The mint. */\n mint: Address;\n /** The transfer hook authority. */\n authority: Address | TransactionSigner;\n programId: UpdateTransferHookInstructionDataArgs['programId'];\n multiSigners?: Array;\n};\n\nexport function getUpdateTransferHookInstruction<\n TAccountMint extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: UpdateTransferHookInput,\n config?: { programAddress?: TProgramAddress }\n): UpdateTransferHookInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getUpdateTransferHookInstructionDataEncoder().encode(\n args as UpdateTransferHookInstructionDataArgs\n ),\n } as UpdateTransferHookInstruction<\n TProgramAddress,\n TAccountMint,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedUpdateTransferHookInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The mint. */\n mint: TAccountMetas[0];\n /** The transfer hook authority. */\n authority: TAccountMetas[1];\n };\n data: UpdateTransferHookInstructionData;\n};\n\nexport function parseUpdateTransferHookInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedUpdateTransferHookInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getUpdateTransferHookInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR = 38;\n\nexport function getWithdrawExcessLamportsDiscriminatorBytes() {\n return getU8Encoder().encode(WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR);\n}\n\nexport type WithdrawExcessLamportsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountSourceAccount extends string | IAccountMeta = string,\n TAccountDestinationAccount extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSourceAccount extends string\n ? WritableAccount\n : TAccountSourceAccount,\n TAccountDestinationAccount extends string\n ? WritableAccount\n : TAccountDestinationAccount,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawExcessLamportsInstructionData = { discriminator: number };\n\nexport type WithdrawExcessLamportsInstructionDataArgs = {};\n\nexport function getWithdrawExcessLamportsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU8Encoder()]]),\n (value) => ({\n ...value,\n discriminator: WITHDRAW_EXCESS_LAMPORTS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawExcessLamportsInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU8Decoder()]]);\n}\n\nexport function getWithdrawExcessLamportsInstructionDataCodec(): Codec<\n WithdrawExcessLamportsInstructionDataArgs,\n WithdrawExcessLamportsInstructionData\n> {\n return combineCodec(\n getWithdrawExcessLamportsInstructionDataEncoder(),\n getWithdrawExcessLamportsInstructionDataDecoder()\n );\n}\n\nexport type WithdrawExcessLamportsInput<\n TAccountSourceAccount extends string = string,\n TAccountDestinationAccount extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** Account holding excess lamports. */\n sourceAccount: Address;\n /** Destination account for withdrawn lamports. */\n destinationAccount: Address;\n /** The source account's owner/delegate or its multisignature account. */\n authority: Address | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getWithdrawExcessLamportsInstruction<\n TAccountSourceAccount extends string,\n TAccountDestinationAccount extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: WithdrawExcessLamportsInput<\n TAccountSourceAccount,\n TAccountDestinationAccount,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawExcessLamportsInstruction<\n TProgramAddress,\n TAccountSourceAccount,\n TAccountDestinationAccount,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceAccount: { value: input.sourceAccount ?? null, isWritable: true },\n destinationAccount: {\n value: input.destinationAccount ?? null,\n isWritable: true,\n },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceAccount),\n getAccountMeta(accounts.destinationAccount),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getWithdrawExcessLamportsInstructionDataEncoder().encode({}),\n } as WithdrawExcessLamportsInstruction<\n TProgramAddress,\n TAccountSourceAccount,\n TAccountDestinationAccount,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawExcessLamportsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Account holding excess lamports. */\n sourceAccount: TAccountMetas[0];\n /** Destination account for withdrawn lamports. */\n destinationAccount: TAccountMetas[1];\n /** The source account's owner/delegate or its multisignature account. */\n authority: TAccountMetas[2];\n };\n data: WithdrawExcessLamportsInstructionData;\n};\n\nexport function parseWithdrawExcessLamportsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawExcessLamportsInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceAccount: getNextAccount(),\n destinationAccount: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getWithdrawExcessLamportsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR = 26;\n\nexport function getWithdrawWithheldTokensFromAccountsDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR\n );\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR = 3;\n\nexport function getWithdrawWithheldTokensFromAccountsTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type WithdrawWithheldTokensFromAccountsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountFeeReceiver extends string | IAccountMeta = string,\n TAccountWithdrawWithheldAuthority extends\n | string\n | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountFeeReceiver extends string\n ? WritableAccount\n : TAccountFeeReceiver,\n TAccountWithdrawWithheldAuthority extends string\n ? ReadonlyAccount\n : TAccountWithdrawWithheldAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawWithheldTokensFromAccountsInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n /** Number of token accounts harvested. */\n numTokenAccounts: number;\n};\n\nexport type WithdrawWithheldTokensFromAccountsInstructionDataArgs = {\n /** Number of token accounts harvested. */\n numTokenAccounts: number;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ['numTokenAccounts', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_DISCRIMINATOR,\n transferFeeDiscriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ['numTokenAccounts', getU8Decoder()],\n ]);\n}\n\nexport function getWithdrawWithheldTokensFromAccountsInstructionDataCodec(): Codec<\n WithdrawWithheldTokensFromAccountsInstructionDataArgs,\n WithdrawWithheldTokensFromAccountsInstructionData\n> {\n return combineCodec(\n getWithdrawWithheldTokensFromAccountsInstructionDataEncoder(),\n getWithdrawWithheldTokensFromAccountsInstructionDataDecoder()\n );\n}\n\nexport type WithdrawWithheldTokensFromAccountsInput<\n TAccountMint extends string = string,\n TAccountFeeReceiver extends string = string,\n TAccountWithdrawWithheldAuthority extends string = string,\n> = {\n /** The token mint. Must include the `TransferFeeConfig` extension. */\n mint: Address;\n /**\n * The fee receiver account. Must include the `TransferFeeAmount`\n * extension associated with the provided mint.\n */\n feeReceiver: Address;\n /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n withdrawWithheldAuthority:\n | Address\n | TransactionSigner;\n numTokenAccounts: WithdrawWithheldTokensFromAccountsInstructionDataArgs['numTokenAccounts'];\n multiSigners?: Array;\n sources: Array
;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsInstruction<\n TAccountMint extends string,\n TAccountFeeReceiver extends string,\n TAccountWithdrawWithheldAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: WithdrawWithheldTokensFromAccountsInput<\n TAccountMint,\n TAccountFeeReceiver,\n TAccountWithdrawWithheldAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawWithheldTokensFromAccountsInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountFeeReceiver,\n (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawWithheldAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n feeReceiver: { value: input.feeReceiver ?? null, isWritable: true },\n withdrawWithheldAuthority: {\n value: input.withdrawWithheldAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = [\n ...(args.multiSigners ?? []).map((signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })),\n ...args.sources.map((address) => ({ address, role: AccountRole.WRITABLE })),\n ];\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.feeReceiver),\n getAccountMeta(accounts.withdrawWithheldAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getWithdrawWithheldTokensFromAccountsInstructionDataEncoder().encode(\n args as WithdrawWithheldTokensFromAccountsInstructionDataArgs\n ),\n } as WithdrawWithheldTokensFromAccountsInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountFeeReceiver,\n (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawWithheldAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawWithheldTokensFromAccountsInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. Must include the `TransferFeeConfig` extension. */\n mint: TAccountMetas[0];\n /**\n * The fee receiver account. Must include the `TransferFeeAmount`\n * extension associated with the provided mint.\n */\n\n feeReceiver: TAccountMetas[1];\n /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n withdrawWithheldAuthority: TAccountMetas[2];\n };\n data: WithdrawWithheldTokensFromAccountsInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromAccountsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawWithheldTokensFromAccountsInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n feeReceiver: getNextAccount(),\n withdrawWithheldAuthority: getNextAccount(),\n },\n data: getWithdrawWithheldTokensFromAccountsInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 2;\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountInstructionsSysvarOrContextState extends\n | string\n | IAccountMeta = string,\n TAccountRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? ReadonlyAccount\n : TAccountMint,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountInstructionsSysvarOrContextState extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvarOrContextState,\n TAccountRecord extends string\n ? ReadonlyAccount\n : TAccountRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData =\n {\n discriminator: number;\n confidentialTransferFeeDiscriminator: number;\n /** Number of token accounts harvested */\n numTokenAccounts: number;\n /** Proof instruction offset */\n proofInstructionOffset: number;\n /** The new decryptable balance in the destination token account */\n newDecryptableAvailableBalance: DecryptableBalance;\n };\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs =\n {\n /** Number of token accounts harvested */\n numTokenAccounts: number;\n /** Proof instruction offset */\n proofInstructionOffset: number;\n /** The new decryptable balance in the destination token account */\n newDecryptableAvailableBalance: DecryptableBalanceArgs;\n };\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n ['numTokenAccounts', getU8Encoder()],\n ['proofInstructionOffset', getI8Encoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_ACCOUNTS_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n ['numTokenAccounts', getU8Decoder()],\n ['proofInstructionOffset', getI8Decoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ]);\n}\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataCodec(): Codec<\n WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs,\n WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData\n> {\n return combineCodec(\n getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder(),\n getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder()\n );\n}\n\nexport type WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInput<\n TAccountMint extends string = string,\n TAccountDestination extends string = string,\n TAccountInstructionsSysvarOrContextState extends string = string,\n TAccountRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The token mint. */\n mint: Address;\n /** The fee receiver account. */\n destination: Address;\n /** Instructions sysvar or context state account */\n instructionsSysvarOrContextState: Address;\n /** Optional record account */\n record?: Address;\n /** The mint's withdraw_withheld_authority */\n authority: Address | TransactionSigner;\n numTokenAccounts: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['numTokenAccounts'];\n proofInstructionOffset: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['proofInstructionOffset'];\n newDecryptableAvailableBalance: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs['newDecryptableAvailableBalance'];\n multiSigners?: Array;\n};\n\nexport function getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TAccountMint extends string,\n TAccountDestination extends string,\n TAccountInstructionsSysvarOrContextState extends string,\n TAccountRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInput<\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: false },\n destination: { value: input.destination ?? null, isWritable: true },\n instructionsSysvarOrContextState: {\n value: input.instructionsSysvarOrContextState ?? null,\n isWritable: false,\n },\n record: { value: input.record ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.instructionsSysvarOrContextState),\n getAccountMeta(accounts.record),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataEncoder().encode(\n args as WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataArgs\n ),\n } as WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. */\n mint: TAccountMetas[0];\n /** The fee receiver account. */\n destination: TAccountMetas[1];\n /** Instructions sysvar or context state account */\n instructionsSysvarOrContextState: TAccountMetas[2];\n /** Optional record account */\n record?: TAccountMetas[3] | undefined;\n /** The mint's withdraw_withheld_authority */\n authority: TAccountMetas[4];\n };\n data: WithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n destination: getNextAccount(),\n instructionsSysvarOrContextState: getNextAccount(),\n record: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getWithdrawWithheldTokensFromAccountsForConfidentialTransferFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR = 26;\n\nexport function getWithdrawWithheldTokensFromMintDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR\n );\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR = 2;\n\nexport function getWithdrawWithheldTokensFromMintTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type WithdrawWithheldTokensFromMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountFeeReceiver extends string | IAccountMeta = string,\n TAccountWithdrawWithheldAuthority extends\n | string\n | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountFeeReceiver extends string\n ? WritableAccount\n : TAccountFeeReceiver,\n TAccountWithdrawWithheldAuthority extends string\n ? ReadonlyAccount\n : TAccountWithdrawWithheldAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawWithheldTokensFromMintInstructionData = {\n discriminator: number;\n transferFeeDiscriminator: number;\n};\n\nexport type WithdrawWithheldTokensFromMintInstructionDataArgs = {};\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['transferFeeDiscriminator', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: WITHDRAW_WITHHELD_TOKENS_FROM_MINT_DISCRIMINATOR,\n transferFeeDiscriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['transferFeeDiscriminator', getU8Decoder()],\n ]);\n}\n\nexport function getWithdrawWithheldTokensFromMintInstructionDataCodec(): Codec<\n WithdrawWithheldTokensFromMintInstructionDataArgs,\n WithdrawWithheldTokensFromMintInstructionData\n> {\n return combineCodec(\n getWithdrawWithheldTokensFromMintInstructionDataEncoder(),\n getWithdrawWithheldTokensFromMintInstructionDataDecoder()\n );\n}\n\nexport type WithdrawWithheldTokensFromMintInput<\n TAccountMint extends string = string,\n TAccountFeeReceiver extends string = string,\n TAccountWithdrawWithheldAuthority extends string = string,\n> = {\n /** The token mint. Must include the `TransferFeeConfig` extension. */\n mint: Address;\n /**\n * The fee receiver account. Must include the `TransferFeeAmount`\n * extension associated with the provided mint.\n */\n feeReceiver: Address;\n /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n withdrawWithheldAuthority:\n | Address\n | TransactionSigner;\n multiSigners?: Array;\n};\n\nexport function getWithdrawWithheldTokensFromMintInstruction<\n TAccountMint extends string,\n TAccountFeeReceiver extends string,\n TAccountWithdrawWithheldAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: WithdrawWithheldTokensFromMintInput<\n TAccountMint,\n TAccountFeeReceiver,\n TAccountWithdrawWithheldAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawWithheldTokensFromMintInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountFeeReceiver,\n (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawWithheldAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n feeReceiver: { value: input.feeReceiver ?? null, isWritable: true },\n withdrawWithheldAuthority: {\n value: input.withdrawWithheldAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.feeReceiver),\n getAccountMeta(accounts.withdrawWithheldAuthority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getWithdrawWithheldTokensFromMintInstructionDataEncoder().encode({}),\n } as WithdrawWithheldTokensFromMintInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountFeeReceiver,\n (typeof input)['withdrawWithheldAuthority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawWithheldAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawWithheldTokensFromMintInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. Must include the `TransferFeeConfig` extension. */\n mint: TAccountMetas[0];\n /**\n * The fee receiver account. Must include the `TransferFeeAmount`\n * extension associated with the provided mint.\n */\n\n feeReceiver: TAccountMetas[1];\n /** The mint's `withdraw_withheld_authority` or its multisignature account. */\n withdrawWithheldAuthority: TAccountMetas[2];\n };\n data: WithdrawWithheldTokensFromMintInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawWithheldTokensFromMintInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n feeReceiver: getNextAccount(),\n withdrawWithheldAuthority: getNextAccount(),\n },\n data: getWithdrawWithheldTokensFromMintInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n combineCodec,\n getI8Decoder,\n getI8Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { TOKEN_2022_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getDecryptableBalanceDecoder,\n getDecryptableBalanceEncoder,\n type DecryptableBalance,\n type DecryptableBalanceArgs,\n} from '../types';\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 37;\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport const WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR = 1;\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeConfidentialTransferFeeDiscriminatorBytes() {\n return getU8Encoder().encode(\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR\n );\n}\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMint extends string | IAccountMeta = string,\n TAccountDestination extends string | IAccountMeta = string,\n TAccountInstructionsSysvarOrContextState extends\n | string\n | IAccountMeta = string,\n TAccountRecord extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountMint extends string\n ? WritableAccount\n : TAccountMint,\n TAccountDestination extends string\n ? WritableAccount\n : TAccountDestination,\n TAccountInstructionsSysvarOrContextState extends string\n ? ReadonlyAccount\n : TAccountInstructionsSysvarOrContextState,\n TAccountRecord extends string\n ? ReadonlyAccount\n : TAccountRecord,\n TAccountAuthority extends string\n ? ReadonlyAccount\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData =\n {\n discriminator: number;\n confidentialTransferFeeDiscriminator: number;\n /** Proof instruction offset */\n proofInstructionOffset: number;\n /** The new decryptable balance in the destination token account */\n newDecryptableAvailableBalance: DecryptableBalance;\n };\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs =\n {\n /** Proof instruction offset */\n proofInstructionOffset: number;\n /** The new decryptable balance in the destination token account */\n newDecryptableAvailableBalance: DecryptableBalanceArgs;\n };\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['confidentialTransferFeeDiscriminator', getU8Encoder()],\n ['proofInstructionOffset', getI8Encoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n confidentialTransferFeeDiscriminator:\n WITHDRAW_WITHHELD_TOKENS_FROM_MINT_FOR_CONFIDENTIAL_TRANSFER_FEE_CONFIDENTIAL_TRANSFER_FEE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['confidentialTransferFeeDiscriminator', getU8Decoder()],\n ['proofInstructionOffset', getI8Decoder()],\n ['newDecryptableAvailableBalance', getDecryptableBalanceDecoder()],\n ]);\n}\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataCodec(): Codec<\n WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs,\n WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData\n> {\n return combineCodec(\n getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder(),\n getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder()\n );\n}\n\nexport type WithdrawWithheldTokensFromMintForConfidentialTransferFeeInput<\n TAccountMint extends string = string,\n TAccountDestination extends string = string,\n TAccountInstructionsSysvarOrContextState extends string = string,\n TAccountRecord extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** The token mint. */\n mint: Address;\n /** The fee receiver account. */\n destination: Address;\n /** Instructions sysvar or context state account */\n instructionsSysvarOrContextState: Address;\n /** Optional record account if proof is read from record */\n record?: Address;\n /** The mint's withdraw_withheld_authority */\n authority: Address | TransactionSigner;\n proofInstructionOffset: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs['proofInstructionOffset'];\n newDecryptableAvailableBalance: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs['newDecryptableAvailableBalance'];\n multiSigners?: Array;\n};\n\nexport function getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TAccountMint extends string,\n TAccountDestination extends string,\n TAccountInstructionsSysvarOrContextState extends string,\n TAccountRecord extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof TOKEN_2022_PROGRAM_ADDRESS,\n>(\n input: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInput<\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n TAccountAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? TOKEN_2022_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n mint: { value: input.mint ?? null, isWritable: true },\n destination: { value: input.destination ?? null, isWritable: true },\n instructionsSysvarOrContextState: {\n value: input.instructionsSysvarOrContextState ?? null,\n isWritable: false,\n },\n record: { value: input.record ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Remaining accounts.\n const remainingAccounts: IAccountMeta[] = (args.multiSigners ?? []).map(\n (signer) => ({\n address: signer.address,\n role: AccountRole.READONLY_SIGNER,\n signer,\n })\n );\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.destination),\n getAccountMeta(accounts.instructionsSysvarOrContextState),\n getAccountMeta(accounts.record),\n getAccountMeta(accounts.authority),\n ...remainingAccounts,\n ],\n programAddress,\n data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataEncoder().encode(\n args as WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataArgs\n ),\n } as WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgramAddress,\n TAccountMint,\n TAccountDestination,\n TAccountInstructionsSysvarOrContextState,\n TAccountRecord,\n (typeof input)['authority'] extends TransactionSigner\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgram extends string = typeof TOKEN_2022_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** The token mint. */\n mint: TAccountMetas[0];\n /** The fee receiver account. */\n destination: TAccountMetas[1];\n /** Instructions sysvar or context state account */\n instructionsSysvarOrContextState: TAccountMetas[2];\n /** Optional record account if proof is read from record */\n record?: TAccountMetas[3] | undefined;\n /** The mint's withdraw_withheld_authority */\n authority: TAccountMetas[4];\n };\n data: WithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionData;\n};\n\nexport function parseWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n const getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === TOKEN_2022_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n mint: getNextAccount(),\n destination: getNextAccount(),\n instructionsSysvarOrContextState: getNextAccount(),\n record: getNextOptionalAccount(),\n authority: getNextAccount(),\n },\n data: getWithdrawWithheldTokensFromMintForConfidentialTransferFeeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "import {\n type GetAccountInfoApi,\n type Rpc,\n Address,\n UnixTimestamp,\n unwrapOption,\n} from '@solana/kit';\nimport { fetchSysvarClock } from '@solana/sysvars';\nimport { fetchMint } from './generated';\n\n// Constants\nconst ONE_IN_BASIS_POINTS = 10000;\nconst SECONDS_PER_YEAR = 60 * 60 * 24 * 365.24;\n\n/**\n * Calculates the exponent for the interest rate formula.\n * @param t1 - The start time in seconds.\n * @param t2 - The end time in seconds.\n * @param r - The interest rate in basis points.\n *\n * @returns The calculated exponent.\n */\nfunction calculateExponentForTimesAndRate(t1: number, t2: number, r: number) {\n const timespan = t2 - t1;\n if (timespan < 0) {\n throw new Error('Invalid timespan: end time before start time');\n }\n\n const numerator = r * timespan;\n const exponent = numerator / (SECONDS_PER_YEAR * ONE_IN_BASIS_POINTS);\n return Math.exp(exponent);\n}\n\n/**\n * Calculates the total scale factor for an interest bearing token by combining two exponential functions:\n * One for the period between initialization and last update using the pre-update average rate,\n * and another for the period between last update and current time using the current rate.\n *\n * @param currentTimestamp Current timestamp in seconds\n * @param lastUpdateTimestamp Last time the interest rate was updated in seconds\n * @param initializationTimestamp Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate Interest rate in basis points before last update\n * @param currentRate Current interest rate in basis points\n *\n * @returns The total scale factor as a product of the two exponential functions\n */\nfunction calculateTotalScale({\n currentTimestamp,\n lastUpdateTimestamp,\n initializationTimestamp,\n preUpdateAverageRate,\n currentRate,\n}: {\n currentTimestamp: number;\n lastUpdateTimestamp: number;\n initializationTimestamp: number;\n preUpdateAverageRate: number;\n currentRate: number;\n}): number {\n // Calculate pre-update exponent\n const preUpdateExp = calculateExponentForTimesAndRate(\n initializationTimestamp,\n lastUpdateTimestamp,\n preUpdateAverageRate\n );\n\n // Calculate post-update exponent\n const postUpdateExp = calculateExponentForTimesAndRate(\n lastUpdateTimestamp,\n currentTimestamp,\n currentRate\n );\n\n return preUpdateExp * postUpdateExp;\n}\n\n/**\n * Calculates the decimal factor for a given number of decimals\n * @param decimals - Number of decimals\n * @returns The decimal factor (e.g., 100 for 2 decimals)\n */\nfunction getDecimalFactor(decimals: number): number {\n return Math.pow(10, decimals);\n}\n\n/**\n * Retrieves the current timestamp from the Solana clock sysvar.\n * @param rpc - The Solana rpc object.\n * @returns A promise that resolves to the current timestamp in seconds.\n * @throws An error if the sysvar clock cannot be fetched or parsed.\n */\nasync function getSysvarClockTimestamp(\n rpc: Rpc\n): Promise {\n const info = await fetchSysvarClock(rpc);\n if (!info) {\n throw new Error('Failed to fetch sysvar clock');\n }\n return info.unixTimestamp;\n}\n\n// ========== INTEREST BEARING MINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint with interest bearing extension without simulating a transaction\n * This implements the same logic as the CPI instruction available in /token/program-2022/src/extension/interest_bearing_mint/mod.rs\n * In general to calculate compounding interest over a period of time, the formula is:\n * A = P * e^(r * t) where\n * A = final amount after interest\n * P = principal amount (initial investment)\n * r = annual interest rate (as a decimal, e.g., 5% = 0.05)\n * t = time in years\n * e = mathematical constant (~2.718)\n *\n * In this case, we are calculating the total scale factor for the interest bearing extension which is the product of two exponential functions:\n * totalScale = e^(r1 * t1) * e^(r2 * t2)\n * where r1 and r2 are the interest rates before and after the last update, and t1 and t2 are the times in years between\n * the initialization timestamp and the last update timestamp, and between the last update timestamp and the current timestamp.\n *\n * @param amount Amount of tokens to be converted\n * @param decimals Number of decimals of the mint\n * @param currentTimestamp Current timestamp in seconds\n * @param lastUpdateTimestamp Last time the interest rate was updated in seconds\n * @param initializationTimestamp Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate Interest rate in basis points (1 basis point = 0.01%) before last update\n * @param currentRate Current interest rate in basis points\n *\n * @return Amount scaled by accrued interest as a string with appropriate decimal places\n */\nexport function amountToUiAmountForInterestBearingMintWithoutSimulation(\n amount: bigint,\n decimals: number,\n currentTimestamp: number,\n lastUpdateTimestamp: number,\n initializationTimestamp: number,\n preUpdateAverageRate: number,\n currentRate: number\n): string {\n const totalScale = calculateTotalScale({\n currentTimestamp,\n lastUpdateTimestamp,\n initializationTimestamp,\n preUpdateAverageRate,\n currentRate,\n });\n\n // Scale the amount by the total interest factor\n const scaledAmount = Number(amount) * totalScale;\n const decimalFactor = getDecimalFactor(decimals);\n\n return (Math.trunc(scaledAmount) / decimalFactor).toString();\n}\n\n/**\n * Convert an amount with interest back to the original amount without interest\n * This implements the same logic as the CPI instruction available in /token/program-2022/src/extension/interest_bearing_mint/mod.rs\n *\n * @param uiAmount UI Amount (principal plus continuously compounding interest) to be converted back to original principal\n * @param decimals Number of decimals for the mint\n * @param currentTimestamp Current timestamp in seconds\n * @param lastUpdateTimestamp Last time the interest rate was updated in seconds\n * @param initializationTimestamp Time the interest bearing extension was initialized in seconds\n * @param preUpdateAverageRate Interest rate in basis points (hundredths of a percent) before the last update\n * @param currentRate Current interest rate in basis points\n *\n * In general to calculate the principal from the UI amount, the formula is:\n * P = A / (e^(r * t)) where\n * P = principal\n * A = UI amount\n * r = annual interest rate (as a decimal, e.g., 5% = 0.05)\n * t = time in years\n *\n * In this case, we are calculating the principal by dividing the UI amount by the total scale factor which is the product of two exponential functions:\n * totalScale = e^(r1 * t1) * e^(r2 * t2)\n * where r1 is the pre-update average rate, r2 is the current rate, t1 is the time in years between the initialization timestamp and the last update timestamp,\n * and t2 is the time in years between the last update timestamp and the current timestamp.\n * then to calculate the principal, we divide the UI amount by the total scale factor:\n * P = A / totalScale\n *\n * @return Original amount (principal) without interest\n */\nexport function uiAmountToAmountForInterestBearingMintWithoutSimulation(\n uiAmount: string,\n decimals: number,\n currentTimestamp: number,\n lastUpdateTimestamp: number,\n initializationTimestamp: number,\n preUpdateAverageRate: number,\n currentRate: number\n): bigint {\n const uiAmountNumber = parseFloat(uiAmount);\n const decimalsFactor = getDecimalFactor(decimals);\n const uiAmountScaled = uiAmountNumber * decimalsFactor;\n\n const totalScale = calculateTotalScale({\n currentTimestamp,\n lastUpdateTimestamp,\n initializationTimestamp,\n preUpdateAverageRate,\n currentRate,\n });\n\n // Calculate original principal by dividing the UI amount by the total scale\n const originalPrincipal = uiAmountScaled / totalScale;\n return BigInt(Math.trunc(originalPrincipal));\n}\n\n// ========== SCALED UI AMOUNT MINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint with scaled UI amount extension\n * @param amount Amount of tokens to be converted\n * @param decimals Number of decimals of the mint\n * @param multiplier Multiplier to scale the amount\n * @return Scaled UI amount as a string\n */\nexport function amountToUiAmountForScaledUiAmountMintWithoutSimulation(\n amount: bigint,\n decimals: number,\n multiplier: number\n): string {\n const scaledAmount = Number(amount) * multiplier;\n const decimalFactor = getDecimalFactor(decimals);\n return (Math.trunc(scaledAmount) / decimalFactor).toString();\n}\n\n/**\n * Convert a UI amount back to the raw amount for a mint with a scaled UI amount extension\n * @param uiAmount UI Amount to be converted back to raw amount\n * @param decimals Number of decimals for the mint\n * @param multiplier Multiplier for the scaled UI amount\n *\n * @return Raw amount\n */\nexport function uiAmountToAmountForScaledUiAmountMintWithoutSimulation(\n uiAmount: string,\n decimals: number,\n multiplier: number\n): bigint {\n const uiAmountNumber = parseFloat(uiAmount);\n const decimalsFactor = getDecimalFactor(decimals);\n const uiAmountScaled = uiAmountNumber * decimalsFactor;\n const rawAmount = uiAmountScaled / multiplier;\n return BigInt(Math.trunc(rawAmount));\n}\n\n// ========== MAIN ENTRY POINT FUNCTIONS ==========\n\n/**\n * Convert amount to UiAmount for a mint without simulating a transaction\n * This implements the same logic as `process_amount_to_ui_amount` in\n * solana-labs/solana-program-library/token/program-2022/src/processor.rs\n * and `process_amount_to_ui_amount` in solana-labs/solana-program-library/token/program/src/processor.rs\n *\n * @param rpc Rpc to use\n * @param mint Mint to use for calculations\n * @param amount Amount of tokens to be converted to Ui Amount\n *\n * @return Ui Amount generated\n */\nexport async function amountToUiAmountForMintWithoutSimulation(\n rpc: Rpc,\n mint: Address,\n amount: bigint\n): Promise {\n const accountInfo = await fetchMint(rpc, mint);\n const extensions = unwrapOption(accountInfo.data.extensions);\n\n // Check for interest bearing mint extension\n const interestBearingMintConfigState = extensions?.find(\n (ext) => ext.__kind === 'InterestBearingConfig'\n );\n\n // Check for scaled UI amount extension\n const scaledUiAmountConfig = extensions?.find(\n (ext) => ext.__kind === 'ScaledUiAmountConfig'\n );\n\n // If no special extension, do standard conversion\n if (!interestBearingMintConfigState && !scaledUiAmountConfig) {\n const amountNumber = Number(amount);\n const decimalsFactor = getDecimalFactor(accountInfo.data.decimals);\n return (amountNumber / decimalsFactor).toString();\n }\n\n // Get timestamp if needed for special mint types\n const timestamp = await getSysvarClockTimestamp(rpc);\n\n // Handle interest bearing mint\n if (interestBearingMintConfigState) {\n return amountToUiAmountForInterestBearingMintWithoutSimulation(\n amount,\n accountInfo.data.decimals,\n Number(timestamp),\n Number(interestBearingMintConfigState.lastUpdateTimestamp),\n Number(interestBearingMintConfigState.initializationTimestamp),\n interestBearingMintConfigState.preUpdateAverageRate,\n interestBearingMintConfigState.currentRate\n );\n }\n\n // At this point, we know it must be a scaled UI amount mint\n if (scaledUiAmountConfig) {\n let multiplier = scaledUiAmountConfig.multiplier;\n // Use new multiplier if it's effective\n if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) {\n multiplier = scaledUiAmountConfig.newMultiplier;\n }\n return amountToUiAmountForScaledUiAmountMintWithoutSimulation(\n amount,\n accountInfo.data.decimals,\n multiplier\n );\n }\n\n // This should never happen due to the conditions above\n throw new Error('Unknown mint extension type');\n}\n\n/**\n * Convert a UI amount back to the raw amount\n *\n * @param rpc Rpc to use\n * @param mint Mint to use for calculations\n * @param uiAmount UI Amount to be converted back to raw amount\n *\n * @return Raw amount\n */\nexport async function uiAmountToAmountForMintWithoutSimulation(\n rpc: Rpc,\n mint: Address,\n uiAmount: string\n): Promise {\n const accountInfo = await fetchMint(rpc, mint);\n const extensions = unwrapOption(accountInfo.data.extensions);\n\n // Check for interest bearing mint extension\n const interestBearingMintConfigState = extensions?.find(\n (ext) => ext.__kind === 'InterestBearingConfig'\n );\n\n // Check for scaled UI amount extension\n const scaledUiAmountConfig = extensions?.find(\n (ext) => ext.__kind === 'ScaledUiAmountConfig'\n );\n\n // If no special extension, do standard conversion\n if (!interestBearingMintConfigState && !scaledUiAmountConfig) {\n const uiAmountScaled =\n parseFloat(uiAmount) * getDecimalFactor(accountInfo.data.decimals);\n return BigInt(Math.trunc(uiAmountScaled));\n }\n\n // Get timestamp if needed for special mint types\n const timestamp = await getSysvarClockTimestamp(rpc);\n\n // Handle interest bearing mint\n if (interestBearingMintConfigState) {\n return uiAmountToAmountForInterestBearingMintWithoutSimulation(\n uiAmount,\n accountInfo.data.decimals,\n Number(timestamp),\n Number(interestBearingMintConfigState.lastUpdateTimestamp),\n Number(interestBearingMintConfigState.initializationTimestamp),\n interestBearingMintConfigState.preUpdateAverageRate,\n interestBearingMintConfigState.currentRate\n );\n }\n\n // At this point, we know it must be a scaled UI amount mint\n if (scaledUiAmountConfig) {\n let multiplier = scaledUiAmountConfig.multiplier;\n // Use new multiplier if it's effective\n if (timestamp >= scaledUiAmountConfig.newMultiplierEffectiveTimestamp) {\n multiplier = scaledUiAmountConfig.newMultiplier;\n }\n return uiAmountToAmountForScaledUiAmountMintWithoutSimulation(\n uiAmount,\n accountInfo.data.decimals,\n multiplier\n );\n }\n\n // This should never happen due to the conditions above\n throw new Error('Unknown mint extension type');\n}\n", "import {\n Address,\n IInstruction,\n isNone,\n isOption,\n TransactionSigner,\n wrapNullable,\n} from '@solana/kit';\nimport {\n ExtensionArgs,\n getDisableMemoTransfersInstruction,\n getEnableMemoTransfersInstruction,\n getEnableCpiGuardInstruction,\n getDisableCpiGuardInstruction,\n getInitializeConfidentialTransferMintInstruction,\n getInitializeDefaultAccountStateInstruction,\n getInitializeGroupMemberPointerInstruction,\n getInitializeGroupPointerInstruction,\n getInitializeInterestBearingMintInstruction,\n getInitializeMetadataPointerInstruction,\n getInitializeMintCloseAuthorityInstruction,\n getInitializeTokenGroupInstruction,\n getInitializeTokenMetadataInstruction,\n getInitializeTransferFeeConfigInstruction,\n getInitializeNonTransferableMintInstruction,\n getInitializeTransferHookInstruction,\n getInitializePermanentDelegateInstruction,\n getInitializeScaledUiAmountMintInstruction,\n getInitializeConfidentialTransferFeeInstruction,\n getInitializePausableConfigInstruction,\n} from './generated';\n\n/**\n * Given a mint address and a list of mint extensions, returns a list of\n * instructions that MUST be run _before_ the `initializeMint` instruction\n * to properly initialize the given extensions on the mint account.\n */\nexport function getPreInitializeInstructionsForMintExtensions(\n mint: Address,\n extensions: ExtensionArgs[]\n): IInstruction[] {\n return extensions.flatMap((extension) => {\n switch (extension.__kind) {\n case 'ConfidentialTransferMint':\n return [\n getInitializeConfidentialTransferMintInstruction({\n mint,\n ...extension,\n }),\n ];\n case 'DefaultAccountState':\n return [\n getInitializeDefaultAccountStateInstruction({\n mint,\n state: extension.state,\n }),\n ];\n case 'TransferFeeConfig':\n return [\n getInitializeTransferFeeConfigInstruction({\n mint,\n transferFeeConfigAuthority: extension.transferFeeConfigAuthority,\n withdrawWithheldAuthority: extension.withdrawWithheldAuthority,\n transferFeeBasisPoints:\n extension.newerTransferFee.transferFeeBasisPoints,\n maximumFee: extension.newerTransferFee.maximumFee,\n }),\n ];\n case 'MetadataPointer':\n return [\n getInitializeMetadataPointerInstruction({\n mint,\n authority: extension.authority,\n metadataAddress: extension.metadataAddress,\n }),\n ];\n case 'InterestBearingConfig':\n return [\n getInitializeInterestBearingMintInstruction({\n mint,\n rateAuthority: extension.rateAuthority,\n rate: extension.currentRate,\n }),\n ];\n case 'ScaledUiAmountConfig':\n return [\n getInitializeScaledUiAmountMintInstruction({\n mint,\n authority: extension.authority,\n multiplier: extension.multiplier,\n }),\n ];\n case 'PausableConfig':\n return [\n getInitializePausableConfigInstruction({\n mint,\n authority: extension.authority,\n }),\n ];\n case 'GroupPointer':\n return [\n getInitializeGroupPointerInstruction({\n mint,\n authority: extension.authority,\n groupAddress: extension.groupAddress,\n }),\n ];\n case 'GroupMemberPointer':\n return [\n getInitializeGroupMemberPointerInstruction({\n mint,\n authority: extension.authority,\n memberAddress: extension.memberAddress,\n }),\n ];\n case 'NonTransferable':\n return getInitializeNonTransferableMintInstruction({ mint });\n case 'TransferHook':\n return [\n getInitializeTransferHookInstruction({\n mint,\n authority: extension.authority,\n programId: extension.programId,\n }),\n ];\n case 'PermanentDelegate':\n return getInitializePermanentDelegateInstruction({\n mint,\n delegate: extension.delegate,\n });\n case 'ConfidentialTransferFee':\n return [\n getInitializeConfidentialTransferFeeInstruction({\n mint,\n authority: extension.authority,\n withdrawWithheldAuthorityElGamalPubkey: extension.elgamalPubkey,\n }),\n ];\n case 'MintCloseAuthority':\n return getInitializeMintCloseAuthorityInstruction({\n closeAuthority: extension.closeAuthority,\n mint,\n });\n default:\n return [];\n }\n });\n}\n\n/**\n * Given a mint address and a list of mint extensions, returns a list of\n * instructions that MUST be run _after_ the `initializeMint` instruction\n * to properly initialize the given extensions on the mint account.\n */\nexport function getPostInitializeInstructionsForMintExtensions(\n mint: Address,\n authority: TransactionSigner,\n extensions: ExtensionArgs[]\n): IInstruction[] {\n return extensions.flatMap((extension): IInstruction[] => {\n switch (extension.__kind) {\n case 'TokenMetadata':\n // eslint-disable-next-line no-case-declarations\n const tokenMetadataUpdateAuthority = isOption(extension.updateAuthority)\n ? extension.updateAuthority\n : wrapNullable(extension.updateAuthority);\n if (isNone(tokenMetadataUpdateAuthority)) {\n return [];\n }\n return [\n getInitializeTokenMetadataInstruction({\n metadata: mint,\n updateAuthority: tokenMetadataUpdateAuthority.value,\n mint,\n mintAuthority: authority,\n name: extension.name,\n symbol: extension.symbol,\n uri: extension.uri,\n }),\n ];\n case 'TokenGroup':\n return [\n getInitializeTokenGroupInstruction({\n group: mint,\n updateAuthority: isOption(extension.updateAuthority)\n ? extension.updateAuthority\n : wrapNullable(extension.updateAuthority),\n mint,\n mintAuthority: authority,\n maxSize: extension.maxSize,\n }),\n ];\n default:\n return [];\n }\n });\n}\n\n/**\n * Given a token address, its owner and a list of token extensions, returns a list\n * of instructions that MUST be run _after_ the `initializeAccount` instruction\n * to properly initialize the given extensions on the token account.\n */\nexport function getPostInitializeInstructionsForTokenExtensions(\n token: Address,\n owner: TransactionSigner | Address,\n extensions: ExtensionArgs[],\n multiSigners?: TransactionSigner[]\n): IInstruction[] {\n return extensions.flatMap((extension) => {\n switch (extension.__kind) {\n case 'MemoTransfer':\n return [\n extension.requireIncomingTransferMemos\n ? getEnableMemoTransfersInstruction({ owner, token, multiSigners })\n : getDisableMemoTransfersInstruction({\n owner,\n token,\n multiSigners,\n }),\n ];\n case 'CpiGuard':\n return [\n extension.lockCpi\n ? getEnableCpiGuardInstruction({ owner, token, multiSigners })\n : getDisableCpiGuardInstruction({\n owner,\n token,\n multiSigners,\n }),\n ];\n default:\n return [];\n }\n });\n}\n", "import {\n getArrayEncoder,\n getConstantEncoder,\n getHiddenPrefixEncoder,\n getU8Encoder,\n} from '@solana/kit';\nimport { ExtensionArgs, getExtensionEncoder } from './generated';\n\nconst TOKEN_BASE_SIZE = 165;\n\nexport function getTokenSize(extensions?: ExtensionArgs[]): number {\n if (extensions == null) return TOKEN_BASE_SIZE;\n const tvlEncoder = getHiddenPrefixEncoder(\n getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }),\n [getConstantEncoder(getU8Encoder().encode(2))]\n );\n return TOKEN_BASE_SIZE + tvlEncoder.encode(extensions).length;\n}\n", "import {\n getArrayEncoder,\n getConstantEncoder,\n getHiddenPrefixEncoder,\n getU8Encoder,\n padLeftEncoder,\n} from '@solana/kit';\nimport { ExtensionArgs, getExtensionEncoder } from './generated';\n\nconst MINT_BASE_SIZE = 82;\n\nexport function getMintSize(extensions?: ExtensionArgs[]): number {\n if (extensions == null) return MINT_BASE_SIZE;\n const tvlEncoder = getHiddenPrefixEncoder(\n getArrayEncoder(getExtensionEncoder(), { size: 'remainder' }),\n [getConstantEncoder(padLeftEncoder(getU8Encoder(), 83).encode(1))]\n );\n return MINT_BASE_SIZE + tvlEncoder.encode(extensions).length;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU8Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedRequestHeapFrameInstruction,\n type ParsedRequestUnitsInstruction,\n type ParsedSetComputeUnitLimitInstruction,\n type ParsedSetComputeUnitPriceInstruction,\n type ParsedSetLoadedAccountsDataSizeLimitInstruction,\n} from '../instructions';\n\nexport const COMPUTE_BUDGET_PROGRAM_ADDRESS =\n 'ComputeBudget111111111111111111111111111111' as Address<'ComputeBudget111111111111111111111111111111'>;\n\nexport enum ComputeBudgetInstruction {\n RequestUnits,\n RequestHeapFrame,\n SetComputeUnitLimit,\n SetComputeUnitPrice,\n SetLoadedAccountsDataSizeLimit,\n}\n\nexport function identifyComputeBudgetInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): ComputeBudgetInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU8Encoder().encode(0), 0)) {\n return ComputeBudgetInstruction.RequestUnits;\n }\n if (containsBytes(data, getU8Encoder().encode(1), 0)) {\n return ComputeBudgetInstruction.RequestHeapFrame;\n }\n if (containsBytes(data, getU8Encoder().encode(2), 0)) {\n return ComputeBudgetInstruction.SetComputeUnitLimit;\n }\n if (containsBytes(data, getU8Encoder().encode(3), 0)) {\n return ComputeBudgetInstruction.SetComputeUnitPrice;\n }\n if (containsBytes(data, getU8Encoder().encode(4), 0)) {\n return ComputeBudgetInstruction.SetLoadedAccountsDataSizeLimit;\n }\n throw new Error(\n 'The provided instruction could not be identified as a computeBudget instruction.'\n );\n}\n\nexport type ParsedComputeBudgetInstruction<\n TProgram extends string = 'ComputeBudget111111111111111111111111111111',\n> =\n | ({\n instructionType: ComputeBudgetInstruction.RequestUnits;\n } & ParsedRequestUnitsInstruction)\n | ({\n instructionType: ComputeBudgetInstruction.RequestHeapFrame;\n } & ParsedRequestHeapFrameInstruction)\n | ({\n instructionType: ComputeBudgetInstruction.SetComputeUnitLimit;\n } & ParsedSetComputeUnitLimitInstruction)\n | ({\n instructionType: ComputeBudgetInstruction.SetComputeUnitPrice;\n } & ParsedSetComputeUnitPriceInstruction)\n | ({\n instructionType: ComputeBudgetInstruction.SetLoadedAccountsDataSizeLimit;\n } & ParsedSetLoadedAccountsDataSizeLimitInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { COMPUTE_BUDGET_PROGRAM_ADDRESS } from '../programs';\n\nexport const REQUEST_HEAP_FRAME_DISCRIMINATOR = 1;\n\nexport function getRequestHeapFrameDiscriminatorBytes() {\n return getU8Encoder().encode(REQUEST_HEAP_FRAME_DISCRIMINATOR);\n}\n\nexport type RequestHeapFrameInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type RequestHeapFrameInstructionData = {\n discriminator: number;\n /**\n * Requested transaction-wide program heap size in bytes.\n * Must be multiple of 1024. Applies to each program, including CPIs.\n */\n bytes: number;\n};\n\nexport type RequestHeapFrameInstructionDataArgs = {\n /**\n * Requested transaction-wide program heap size in bytes.\n * Must be multiple of 1024. Applies to each program, including CPIs.\n */\n bytes: number;\n};\n\nexport function getRequestHeapFrameInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['bytes', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: REQUEST_HEAP_FRAME_DISCRIMINATOR })\n );\n}\n\nexport function getRequestHeapFrameInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['bytes', getU32Decoder()],\n ]);\n}\n\nexport function getRequestHeapFrameInstructionDataCodec(): Codec<\n RequestHeapFrameInstructionDataArgs,\n RequestHeapFrameInstructionData\n> {\n return combineCodec(\n getRequestHeapFrameInstructionDataEncoder(),\n getRequestHeapFrameInstructionDataDecoder()\n );\n}\n\nexport type RequestHeapFrameInput = {\n bytes: RequestHeapFrameInstructionDataArgs['bytes'];\n};\n\nexport function getRequestHeapFrameInstruction<\n TProgramAddress extends Address = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n>(\n input: RequestHeapFrameInput,\n config?: { programAddress?: TProgramAddress }\n): RequestHeapFrameInstruction {\n // Program address.\n const programAddress =\n config?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS;\n\n // Original args.\n const args = { ...input };\n\n const instruction = {\n programAddress,\n data: getRequestHeapFrameInstructionDataEncoder().encode(\n args as RequestHeapFrameInstructionDataArgs\n ),\n } as RequestHeapFrameInstruction;\n\n return instruction;\n}\n\nexport type ParsedRequestHeapFrameInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: RequestHeapFrameInstructionData;\n};\n\nexport function parseRequestHeapFrameInstruction(\n instruction: IInstruction & IInstructionWithData\n): ParsedRequestHeapFrameInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getRequestHeapFrameInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { COMPUTE_BUDGET_PROGRAM_ADDRESS } from '../programs';\n\nexport const REQUEST_UNITS_DISCRIMINATOR = 0;\n\nexport function getRequestUnitsDiscriminatorBytes() {\n return getU8Encoder().encode(REQUEST_UNITS_DISCRIMINATOR);\n}\n\nexport type RequestUnitsInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type RequestUnitsInstructionData = {\n discriminator: number;\n /** Units to request for transaction-wide compute. */\n units: number;\n /** Prioritization fee lamports. */\n additionalFee: number;\n};\n\nexport type RequestUnitsInstructionDataArgs = {\n /** Units to request for transaction-wide compute. */\n units: number;\n /** Prioritization fee lamports. */\n additionalFee: number;\n};\n\nexport function getRequestUnitsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['units', getU32Encoder()],\n ['additionalFee', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: REQUEST_UNITS_DISCRIMINATOR })\n );\n}\n\nexport function getRequestUnitsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['units', getU32Decoder()],\n ['additionalFee', getU32Decoder()],\n ]);\n}\n\nexport function getRequestUnitsInstructionDataCodec(): Codec<\n RequestUnitsInstructionDataArgs,\n RequestUnitsInstructionData\n> {\n return combineCodec(\n getRequestUnitsInstructionDataEncoder(),\n getRequestUnitsInstructionDataDecoder()\n );\n}\n\nexport type RequestUnitsInput = {\n units: RequestUnitsInstructionDataArgs['units'];\n additionalFee: RequestUnitsInstructionDataArgs['additionalFee'];\n};\n\nexport function getRequestUnitsInstruction<\n TProgramAddress extends Address = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n>(\n input: RequestUnitsInput,\n config?: { programAddress?: TProgramAddress }\n): RequestUnitsInstruction {\n // Program address.\n const programAddress =\n config?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS;\n\n // Original args.\n const args = { ...input };\n\n const instruction = {\n programAddress,\n data: getRequestUnitsInstructionDataEncoder().encode(\n args as RequestUnitsInstructionDataArgs\n ),\n } as RequestUnitsInstruction;\n\n return instruction;\n}\n\nexport type ParsedRequestUnitsInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: RequestUnitsInstructionData;\n};\n\nexport function parseRequestUnitsInstruction(\n instruction: IInstruction & IInstructionWithData\n): ParsedRequestUnitsInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getRequestUnitsInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { COMPUTE_BUDGET_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = 2;\n\nexport function getSetComputeUnitLimitDiscriminatorBytes() {\n return getU8Encoder().encode(SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR);\n}\n\nexport type SetComputeUnitLimitInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type SetComputeUnitLimitInstructionData = {\n discriminator: number;\n /** Transaction-wide compute unit limit. */\n units: number;\n};\n\nexport type SetComputeUnitLimitInstructionDataArgs = {\n /** Transaction-wide compute unit limit. */\n units: number;\n};\n\nexport function getSetComputeUnitLimitInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['units', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetComputeUnitLimitInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['units', getU32Decoder()],\n ]);\n}\n\nexport function getSetComputeUnitLimitInstructionDataCodec(): Codec<\n SetComputeUnitLimitInstructionDataArgs,\n SetComputeUnitLimitInstructionData\n> {\n return combineCodec(\n getSetComputeUnitLimitInstructionDataEncoder(),\n getSetComputeUnitLimitInstructionDataDecoder()\n );\n}\n\nexport type SetComputeUnitLimitInput = {\n units: SetComputeUnitLimitInstructionDataArgs['units'];\n};\n\nexport function getSetComputeUnitLimitInstruction<\n TProgramAddress extends Address = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n>(\n input: SetComputeUnitLimitInput,\n config?: { programAddress?: TProgramAddress }\n): SetComputeUnitLimitInstruction {\n // Program address.\n const programAddress =\n config?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS;\n\n // Original args.\n const args = { ...input };\n\n const instruction = {\n programAddress,\n data: getSetComputeUnitLimitInstructionDataEncoder().encode(\n args as SetComputeUnitLimitInstructionDataArgs\n ),\n } as SetComputeUnitLimitInstruction;\n\n return instruction;\n}\n\nexport type ParsedSetComputeUnitLimitInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: SetComputeUnitLimitInstructionData;\n};\n\nexport function parseSetComputeUnitLimitInstruction(\n instruction: IInstruction & IInstructionWithData\n): ParsedSetComputeUnitLimitInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getSetComputeUnitLimitInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { COMPUTE_BUDGET_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR = 3;\n\nexport function getSetComputeUnitPriceDiscriminatorBytes() {\n return getU8Encoder().encode(SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR);\n}\n\nexport type SetComputeUnitPriceInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type SetComputeUnitPriceInstructionData = {\n discriminator: number;\n /** Transaction compute unit price used for prioritization fees. */\n microLamports: bigint;\n};\n\nexport type SetComputeUnitPriceInstructionDataArgs = {\n /** Transaction compute unit price used for prioritization fees. */\n microLamports: number | bigint;\n};\n\nexport function getSetComputeUnitPriceInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['microLamports', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetComputeUnitPriceInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['microLamports', getU64Decoder()],\n ]);\n}\n\nexport function getSetComputeUnitPriceInstructionDataCodec(): Codec<\n SetComputeUnitPriceInstructionDataArgs,\n SetComputeUnitPriceInstructionData\n> {\n return combineCodec(\n getSetComputeUnitPriceInstructionDataEncoder(),\n getSetComputeUnitPriceInstructionDataDecoder()\n );\n}\n\nexport type SetComputeUnitPriceInput = {\n microLamports: SetComputeUnitPriceInstructionDataArgs['microLamports'];\n};\n\nexport function getSetComputeUnitPriceInstruction<\n TProgramAddress extends Address = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n>(\n input: SetComputeUnitPriceInput,\n config?: { programAddress?: TProgramAddress }\n): SetComputeUnitPriceInstruction {\n // Program address.\n const programAddress =\n config?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS;\n\n // Original args.\n const args = { ...input };\n\n const instruction = {\n programAddress,\n data: getSetComputeUnitPriceInstructionDataEncoder().encode(\n args as SetComputeUnitPriceInstructionDataArgs\n ),\n } as SetComputeUnitPriceInstruction;\n\n return instruction;\n}\n\nexport type ParsedSetComputeUnitPriceInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: SetComputeUnitPriceInstructionData;\n};\n\nexport function parseSetComputeUnitPriceInstruction(\n instruction: IInstruction & IInstructionWithData\n): ParsedSetComputeUnitPriceInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getSetComputeUnitPriceInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { COMPUTE_BUDGET_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR = 4;\n\nexport function getSetLoadedAccountsDataSizeLimitDiscriminatorBytes() {\n return getU8Encoder().encode(\n SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR\n );\n}\n\nexport type SetLoadedAccountsDataSizeLimitInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type SetLoadedAccountsDataSizeLimitInstructionData = {\n discriminator: number;\n accountDataSizeLimit: number;\n};\n\nexport type SetLoadedAccountsDataSizeLimitInstructionDataArgs = {\n accountDataSizeLimit: number;\n};\n\nexport function getSetLoadedAccountsDataSizeLimitInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU8Encoder()],\n ['accountDataSizeLimit', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: SET_LOADED_ACCOUNTS_DATA_SIZE_LIMIT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetLoadedAccountsDataSizeLimitInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU8Decoder()],\n ['accountDataSizeLimit', getU32Decoder()],\n ]);\n}\n\nexport function getSetLoadedAccountsDataSizeLimitInstructionDataCodec(): Codec<\n SetLoadedAccountsDataSizeLimitInstructionDataArgs,\n SetLoadedAccountsDataSizeLimitInstructionData\n> {\n return combineCodec(\n getSetLoadedAccountsDataSizeLimitInstructionDataEncoder(),\n getSetLoadedAccountsDataSizeLimitInstructionDataDecoder()\n );\n}\n\nexport type SetLoadedAccountsDataSizeLimitInput = {\n accountDataSizeLimit: SetLoadedAccountsDataSizeLimitInstructionDataArgs['accountDataSizeLimit'];\n};\n\nexport function getSetLoadedAccountsDataSizeLimitInstruction<\n TProgramAddress extends Address = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n>(\n input: SetLoadedAccountsDataSizeLimitInput,\n config?: { programAddress?: TProgramAddress }\n): SetLoadedAccountsDataSizeLimitInstruction {\n // Program address.\n const programAddress =\n config?.programAddress ?? COMPUTE_BUDGET_PROGRAM_ADDRESS;\n\n // Original args.\n const args = { ...input };\n\n const instruction = {\n programAddress,\n data: getSetLoadedAccountsDataSizeLimitInstructionDataEncoder().encode(\n args as SetLoadedAccountsDataSizeLimitInstructionDataArgs\n ),\n } as SetLoadedAccountsDataSizeLimitInstruction;\n\n return instruction;\n}\n\nexport type ParsedSetLoadedAccountsDataSizeLimitInstruction<\n TProgram extends string = typeof COMPUTE_BUDGET_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: SetLoadedAccountsDataSizeLimitInstructionData;\n};\n\nexport function parseSetLoadedAccountsDataSizeLimitInstruction<\n TProgram extends string,\n>(\n instruction: IInstruction & IInstructionWithData\n): ParsedSetLoadedAccountsDataSizeLimitInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getSetLoadedAccountsDataSizeLimitInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * A provisory compute unit limit is used to indicate that the transaction\n * should be estimated for compute units before being sent to the network.\n *\n * Setting it to zero ensures the transaction fails unless it is properly estimated.\n */\nexport const PROVISORY_COMPUTE_UNIT_LIMIT = 0;\n\n/**\n * The maximum compute unit limit that can be set for a transaction.\n */\nexport const MAX_COMPUTE_UNIT_LIMIT = 1_400_000;\n", "import {\n BaseTransactionMessage,\n getU32Decoder,\n getU64Decoder,\n IInstruction,\n MicroLamports,\n ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n COMPUTE_BUDGET_PROGRAM_ADDRESS,\n ComputeBudgetInstruction,\n identifyComputeBudgetInstruction,\n SetComputeUnitLimitInstruction,\n SetComputeUnitPriceInstruction,\n} from './generated';\n\n/**\n * Finds the index of the first `SetComputeUnitLimit` instruction in a transaction message\n * and its set limit, if any.\n */\nexport function getSetComputeUnitLimitInstructionIndexAndUnits(\n transactionMessage: BaseTransactionMessage\n): { index: number; units: number } | null {\n const index = getSetComputeUnitLimitInstructionIndex(transactionMessage);\n if (index < 0) {\n return null;\n }\n\n const units = getU32Decoder().decode(\n transactionMessage.instructions[index].data as ReadonlyUint8Array,\n 1\n );\n\n return { index, units };\n}\n\n/**\n * Finds the index of the first `SetComputeUnitLimit` instruction in a transaction message, if any.\n */\nexport function getSetComputeUnitLimitInstructionIndex(\n transactionMessage: BaseTransactionMessage\n) {\n return transactionMessage.instructions.findIndex(\n isSetComputeUnitLimitInstruction\n );\n}\n\n/**\n * Checks if the given instruction is a `SetComputeUnitLimit` instruction.\n */\nexport function isSetComputeUnitLimitInstruction(\n instruction: IInstruction\n): instruction is SetComputeUnitLimitInstruction {\n return (\n instruction.programAddress === COMPUTE_BUDGET_PROGRAM_ADDRESS &&\n identifyComputeBudgetInstruction(instruction.data as Uint8Array) ===\n ComputeBudgetInstruction.SetComputeUnitLimit\n );\n}\n\n/**\n * Finds the index of the first `SetComputeUnitPrice` instruction in a transaction message\n * and its set micro-lamports, if any.\n */\nexport function getSetComputeUnitPriceInstructionIndexAndMicroLamports(\n transactionMessage: BaseTransactionMessage\n): { index: number; microLamports: MicroLamports } | null {\n const index = getSetComputeUnitPriceInstructionIndex(transactionMessage);\n if (index < 0) {\n return null;\n }\n\n const microLamports = getU64Decoder().decode(\n transactionMessage.instructions[index].data as ReadonlyUint8Array,\n 1\n ) as MicroLamports;\n\n return { index, microLamports };\n}\n\n/**\n * Finds the index of the first `SetComputeUnitPrice` instruction in a transaction message, if any.\n */\nexport function getSetComputeUnitPriceInstructionIndex(\n transactionMessage: BaseTransactionMessage\n) {\n return transactionMessage.instructions.findIndex(\n isSetComputeUnitPriceInstruction\n );\n}\n\n/**\n * Checks if the given instruction is a `SetComputeUnitPrice` instruction.\n */\nexport function isSetComputeUnitPriceInstruction(\n instruction: IInstruction\n): instruction is SetComputeUnitPriceInstruction {\n return (\n instruction.programAddress === COMPUTE_BUDGET_PROGRAM_ADDRESS &&\n identifyComputeBudgetInstruction(instruction.data as Uint8Array) ===\n ComputeBudgetInstruction.SetComputeUnitPrice\n );\n}\n", "import {\n appendTransactionMessageInstruction,\n BaseTransactionMessage,\n} from '@solana/kit';\nimport { PROVISORY_COMPUTE_UNIT_LIMIT } from './constants';\nimport { getSetComputeUnitLimitInstruction } from './generated';\nimport { getSetComputeUnitLimitInstructionIndexAndUnits } from './internal';\n\n/**\n * Appends a `SetComputeUnitLimit` instruction with a provisory\n * compute unit limit to a given transaction message\n * if and only if it does not already have one.\n *\n * @example\n * ```ts\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 0 }),\n * fillProvisorySetComputeUnitLimitInstruction,\n * // ...\n * );\n * ```\n */\nexport function fillProvisorySetComputeUnitLimitInstruction<\n TTransactionMessage extends BaseTransactionMessage,\n>(transactionMessage: TTransactionMessage) {\n return updateOrAppendSetComputeUnitLimitInstruction(\n (previousUnits) =>\n previousUnits === null ? PROVISORY_COMPUTE_UNIT_LIMIT : previousUnits,\n transactionMessage\n );\n}\n\n/**\n * Updates the first `SetComputeUnitLimit` instruction in a transaction message\n * with the given units, or appends a new instruction if none exists.\n * A function of the current value can be provided instead of a static value.\n *\n * @param units - The new compute unit limit, or a function that takes the previous\n * compute unit limit and returns the new limit.\n * @param transactionMessage - The transaction message to update.\n *\n * @example\n * ```ts\n * const updatedTransactionMessage = updateOrAppendSetComputeUnitLimitInstruction(\n * // E.g. Keep the current limit if it is set, otherwise set it to the maximum.\n * (currentUnits) => currentUnits === null ? MAX_COMPUTE_UNIT_LIMIT : currentUnits,\n * transactionMessage,\n * );\n * ```\n */\nexport function updateOrAppendSetComputeUnitLimitInstruction<\n TTransactionMessage extends BaseTransactionMessage,\n>(\n units: number | ((previousUnits: number | null) => number),\n transactionMessage: TTransactionMessage\n): TTransactionMessage {\n const getUnits = (previousUnits: number | null): number =>\n typeof units === 'function' ? units(previousUnits) : units;\n const instructionDetails =\n getSetComputeUnitLimitInstructionIndexAndUnits(transactionMessage);\n\n if (!instructionDetails) {\n return appendTransactionMessageInstruction(\n getSetComputeUnitLimitInstruction({ units: getUnits(null) }),\n transactionMessage\n );\n }\n\n const { index, units: previousUnits } = instructionDetails;\n const newUnits = getUnits(previousUnits);\n if (newUnits === previousUnits) {\n return transactionMessage;\n }\n\n const newInstruction = getSetComputeUnitLimitInstruction({ units: newUnits });\n const newInstructions = [...transactionMessage.instructions];\n newInstructions.splice(index, 1, newInstruction);\n return Object.freeze({\n ...transactionMessage,\n instructions: newInstructions,\n });\n}\n", "import {\n CompilableTransactionMessage,\n ITransactionMessageWithFeePayer,\n TransactionMessage,\n} from '@solana/kit';\nimport {\n MAX_COMPUTE_UNIT_LIMIT,\n PROVISORY_COMPUTE_UNIT_LIMIT,\n} from './constants';\nimport {\n EstimateComputeUnitLimitFactoryFunction,\n EstimateComputeUnitLimitFactoryFunctionConfig,\n} from './estimateComputeLimitInternal';\nimport { getSetComputeUnitLimitInstructionIndexAndUnits } from './internal';\nimport { updateOrAppendSetComputeUnitLimitInstruction } from './setComputeLimit';\n\ntype EstimateAndUpdateProvisoryComputeUnitLimitFactoryFunction = <\n TTransactionMessage extends\n | CompilableTransactionMessage\n | (TransactionMessage & ITransactionMessageWithFeePayer),\n>(\n transactionMessage: TTransactionMessage,\n config?: EstimateComputeUnitLimitFactoryFunctionConfig\n) => Promise;\n\n/**\n * Given a transaction message, if it does not have an explicit compute unit limit,\n * estimates the compute unit limit and updates the transaction message with\n * the estimated limit. Otherwise, returns the transaction message unchanged.\n *\n * It requires a function that estimates the compute unit limit.\n *\n * @example\n * ```ts\n * const estimateAndUpdateCUs = estimateAndUpdateProvisoryComputeUnitLimitFactory(\n * estimateComputeUnitLimitFactory({ rpc })\n * );\n *\n * const transactionMessageWithCUs = await estimateAndUpdateCUs(transactionMessage);\n * ```\n *\n * @see {@link estimateAndUpdateProvisoryComputeUnitLimitFactory}\n */\nexport function estimateAndUpdateProvisoryComputeUnitLimitFactory(\n estimateComputeUnitLimit: EstimateComputeUnitLimitFactoryFunction\n): EstimateAndUpdateProvisoryComputeUnitLimitFactoryFunction {\n return async function fn(transactionMessage, config) {\n const instructionDetails =\n getSetComputeUnitLimitInstructionIndexAndUnits(transactionMessage);\n\n // If the transaction message already has a compute unit limit instruction\n // which is set to a specific value — i.e. not 0 or the maximum limit —\n // we don't need to estimate the compute unit limit.\n if (\n instructionDetails &&\n instructionDetails.units !== PROVISORY_COMPUTE_UNIT_LIMIT &&\n instructionDetails.units !== MAX_COMPUTE_UNIT_LIMIT\n ) {\n return transactionMessage;\n }\n\n return updateOrAppendSetComputeUnitLimitInstruction(\n await estimateComputeUnitLimit(transactionMessage, config),\n transactionMessage\n );\n };\n}\n", "// TODO: Add these helpers to @solana/kit in v3.\n\nimport {\n BaseTransactionMessage,\n Blockhash,\n setTransactionMessageLifetimeUsingBlockhash,\n TransactionMessageWithBlockhashLifetime,\n TransactionMessageWithDurableNonceLifetime,\n} from '@solana/kit';\n\n/**\n * An invalid blockhash lifetime constraint used as a placeholder for\n * transaction messages that are not yet ready to be compiled.\n *\n * This enables various operations on the transaction message, such as\n * simulating it or calculating its transaction size, whilst defering\n * the actual blockhash to a later stage.\n */\nexport const PROVISORY_BLOCKHASH_LIFETIME_CONSTRAINT: TransactionMessageWithBlockhashLifetime['lifetimeConstraint'] =\n {\n blockhash: '11111111111111111111111111111111' as Blockhash,\n lastValidBlockHeight: 0n, // This is not included in compiled transactions; it can be anything.\n };\n\n/**\n * Sets a provisory blockhash lifetime constraint on the transaction message\n * if and only if it doesn't already have a lifetime constraint.\n */\nexport function fillMissingTransactionMessageLifetimeUsingProvisoryBlockhash<\n TTransactionMessage extends BaseTransactionMessage,\n>(\n transactionMessage: TTransactionMessage\n): TTransactionMessage &\n (\n | TransactionMessageWithBlockhashLifetime\n | TransactionMessageWithDurableNonceLifetime\n ) {\n type ReturnType = TTransactionMessage &\n (\n | TransactionMessageWithBlockhashLifetime\n | TransactionMessageWithDurableNonceLifetime\n );\n\n if ('lifetimeConstraint' in transactionMessage) {\n return transactionMessage as ReturnType;\n }\n\n return setTransactionMessageLifetimeUsingProvisoryBlockhash(\n transactionMessage\n );\n}\n\n/**\n * Sets a provisory blockhash lifetime constraint on the transaction message.\n */\nexport function setTransactionMessageLifetimeUsingProvisoryBlockhash<\n TTransactionMessage extends BaseTransactionMessage,\n>(\n transactionMessage: TTransactionMessage\n): TTransactionMessage & TransactionMessageWithBlockhashLifetime {\n return setTransactionMessageLifetimeUsingBlockhash(\n PROVISORY_BLOCKHASH_LIFETIME_CONSTRAINT,\n transactionMessage\n );\n}\n", "import {\n Commitment,\n CompilableTransactionMessage,\n compileTransaction,\n getBase64EncodedWireTransaction,\n isDurableNonceTransaction,\n isSolanaError,\n ITransactionMessageWithFeePayer,\n pipe,\n Rpc,\n SimulateTransactionApi,\n Slot,\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n SolanaError,\n Transaction,\n TransactionMessage,\n} from '@solana/kit';\nimport { updateOrAppendSetComputeUnitLimitInstruction } from './setComputeLimit';\nimport { MAX_COMPUTE_UNIT_LIMIT } from './constants';\nimport { fillMissingTransactionMessageLifetimeUsingProvisoryBlockhash } from './internalMoveToKit';\n\nexport type EstimateComputeUnitLimitFactoryConfig = Readonly<{\n /** An object that supports the {@link SimulateTransactionApi} of the Solana RPC API */\n rpc: Rpc;\n}>;\n\nexport type EstimateComputeUnitLimitFactoryFunction = (\n transactionMessage:\n | CompilableTransactionMessage\n | (TransactionMessage & ITransactionMessageWithFeePayer),\n config?: EstimateComputeUnitLimitFactoryFunctionConfig\n) => Promise;\n\nexport type EstimateComputeUnitLimitFactoryFunctionConfig = {\n abortSignal?: AbortSignal;\n /**\n * Compute the estimate as of the highest slot that has reached this level of commitment.\n *\n * @defaultValue Whichever default is applied by the underlying {@link RpcApi} in use. For\n * example, when using an API created by a `createSolanaRpc*()` helper, the default commitment\n * is `\"confirmed\"` unless configured otherwise. Unmitigated by an API layer on the client, the\n * default commitment applied by the server is `\"finalized\"`.\n */\n commitment?: Commitment;\n /**\n * Prevents accessing stale data by enforcing that the RPC node has processed transactions up to\n * this slot\n */\n minContextSlot?: Slot;\n};\n\ntype EstimateComputeUnitLimitConfig =\n EstimateComputeUnitLimitFactoryFunctionConfig &\n Readonly<{\n rpc: Rpc;\n transactionMessage:\n | CompilableTransactionMessage\n | (TransactionMessage & ITransactionMessageWithFeePayer);\n }>;\n\n/**\n * Simulates a transaction message on the network and returns the number of compute units it\n * consumed during simulation.\n *\n * The estimate this function returns can be used to set a compute unit limit on the transaction.\n * Correctly budgeting a compute unit limit for your transaction message can increase the probability\n * that your transaction will be accepted for processing.\n *\n * If you don't declare a compute unit limit on your transaction, validators will assume an upper\n * limit of 200K compute units (CU) per instruction. Since validators have an incentive to pack as\n * many transactions into each block as possible, they may choose to include transactions that they\n * know will fit into the remaining compute budget for the current block over transactions that\n * might not. For this reason, you should set a compute unit limit on each of your transaction\n * messages, whenever possible.\n *\n * ## Example\n *\n * ```ts\n * import { getSetComputeLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, getComputeUnitEstimateForTransactionMessageFactory, pipe } from '@solana/kit';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const getComputeUnitEstimateForTransactionMessage =\n * getComputeUnitEstimateForTransactionMessageFactory({ rpc });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume.\n * const computeUnitsEstimate =\n * await getComputeUnitEstimateForTransactionMessage(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeLimitInstruction({ units: computeUnitsEstimate }),\n * transactionMessage,\n * );\n * ```\n *\n * > [!WARNING]\n * > The compute unit estimate is just that – an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n */\nexport async function estimateComputeUnitLimit({\n transactionMessage,\n ...configs\n}: EstimateComputeUnitLimitConfig): Promise {\n const replaceRecentBlockhash = !isDurableNonceTransaction(transactionMessage);\n const transaction = pipe(\n transactionMessage,\n fillMissingTransactionMessageLifetimeUsingProvisoryBlockhash,\n (m) =>\n updateOrAppendSetComputeUnitLimitInstruction(MAX_COMPUTE_UNIT_LIMIT, m),\n compileTransaction\n );\n\n return await simulateTransactionAndGetConsumedUnits({\n transaction,\n replaceRecentBlockhash,\n ...configs,\n });\n}\n\ntype SimulateTransactionAndGetConsumedUnitsConfig = Omit<\n EstimateComputeUnitLimitConfig,\n 'transactionMessage'\n> &\n Readonly<{ replaceRecentBlockhash?: boolean; transaction: Transaction }>;\n\nasync function simulateTransactionAndGetConsumedUnits({\n abortSignal,\n rpc,\n transaction,\n ...simulateConfig\n}: SimulateTransactionAndGetConsumedUnitsConfig): Promise {\n const wireTransactionBytes = getBase64EncodedWireTransaction(transaction);\n\n try {\n const {\n value: { err: transactionError, unitsConsumed },\n } = await rpc\n .simulateTransaction(wireTransactionBytes, {\n ...simulateConfig,\n encoding: 'base64',\n sigVerify: false,\n })\n .send({ abortSignal });\n if (unitsConsumed == null) {\n // This should never be hit, because all RPCs should support `unitsConsumed` by now.\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT\n );\n }\n // FIXME(https://github.com/anza-xyz/agave/issues/1295): The simulation response returns\n // compute units as a u64, but the `SetComputeLimit` instruction only accepts a u32. Until\n // this changes, downcast it.\n const downcastUnitsConsumed =\n unitsConsumed > 4_294_967_295n ? 4_294_967_295 : Number(unitsConsumed);\n if (transactionError) {\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT,\n {\n cause: transactionError,\n unitsConsumed: downcastUnitsConsumed,\n }\n );\n }\n return downcastUnitsConsumed;\n } catch (e) {\n if (\n isSolanaError(\n e,\n SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT\n )\n )\n throw e;\n throw new SolanaError(\n SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT,\n { cause: e }\n );\n }\n}\n", "import {\n estimateComputeUnitLimit,\n EstimateComputeUnitLimitFactoryConfig,\n EstimateComputeUnitLimitFactoryFunction,\n} from './estimateComputeLimitInternal';\n\n/**\n * Use this utility to estimate the actual compute unit cost of a given transaction message.\n *\n * Correctly budgeting a compute unit limit for your transaction message can increase the\n * probability that your transaction will be accepted for processing. If you don't declare a compute\n * unit limit on your transaction, validators will assume an upper limit of 200K compute units (CU)\n * per instruction.\n *\n * Since validators have an incentive to pack as many transactions into each block as possible, they\n * may choose to include transactions that they know will fit into the remaining compute budget for\n * the current block over transactions that might not. For this reason, you should set a compute\n * unit limit on each of your transaction messages, whenever possible.\n *\n * > [!WARNING]\n * > The compute unit estimate is just that -- an estimate. The compute unit consumption of the\n * > actual transaction might be higher or lower than what was observed in simulation. Unless you\n * > are confident that your particular transaction message will consume the same or fewer compute\n * > units as was estimated, you might like to augment the estimate by either a fixed number of CUs\n * > or a multiplier.\n *\n * > [!NOTE]\n * > If you are preparing an _unsigned_ transaction, destined to be signed and submitted to the\n * > network by a wallet, you might like to leave it up to the wallet to determine the compute unit\n * > limit. Consider that the wallet might have a more global view of how many compute units certain\n * > types of transactions consume, and might be able to make better estimates of an appropriate\n * > compute unit budget.\n *\n * > [!INFO]\n * > In the event that a transaction message does not already have a `SetComputeUnitLimit`\n * > instruction, this function will add one before simulation. This ensures that the compute unit\n * > consumption of the `SetComputeUnitLimit` instruction itself is included in the estimate.\n *\n * @param config\n *\n * @example\n * ```ts\n * import { getSetComputeUnitLimitInstruction } from '@solana-program/compute-budget';\n * import { createSolanaRpc, estimateComputeUnitLimitFactory, pipe } from '@solana/kit';\n *\n * // Create an estimator function.\n * const rpc = createSolanaRpc('http://127.0.0.1:8899');\n * const estimateComputeUnitLimit = estimateComputeUnitLimitFactory({ rpc });\n *\n * // Create your transaction message.\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 'legacy' }),\n * /* ... *\\/\n * );\n *\n * // Request an estimate of the actual compute units this message will consume. This is done by\n * // simulating the transaction and grabbing the estimated compute units from the result.\n * const estimatedUnits = await estimateComputeUnitLimit(transactionMessage);\n *\n * // Set the transaction message's compute unit budget.\n * const transactionMessageWithComputeUnitLimit = prependTransactionMessageInstruction(\n * getSetComputeUnitLimitInstruction({ units: estimatedUnits }),\n * transactionMessage,\n * );\n * ```\n */\nexport function estimateComputeUnitLimitFactory({\n rpc,\n}: EstimateComputeUnitLimitFactoryConfig): EstimateComputeUnitLimitFactoryFunction {\n return async function estimateComputeUnitLimitFactoryFunction(\n transactionMessage,\n config\n ) {\n return await estimateComputeUnitLimit({\n ...config,\n rpc,\n transactionMessage,\n });\n };\n}\n", "import {\n appendTransactionMessageInstruction,\n BaseTransactionMessage,\n MicroLamports,\n} from '@solana/kit';\nimport { getSetComputeUnitPriceInstruction } from './generated';\nimport { getSetComputeUnitPriceInstructionIndexAndMicroLamports } from './internal';\n\n/**\n * Sets the compute unit price of a transaction message in micro-Lamports.\n *\n * @example\n * ```ts\n * const transactionMessage = pipe(\n * createTransactionMessage({ version: 0 }),\n * (m) => setTransactionMessageComputeUnitPrice(10_000, m),\n * // ...\n * );\n * ```\n */\nexport function setTransactionMessageComputeUnitPrice<\n TTransactionMessage extends BaseTransactionMessage,\n>(microLamports: number | bigint, transactionMessage: TTransactionMessage) {\n return appendTransactionMessageInstruction(\n getSetComputeUnitPriceInstruction({ microLamports }),\n transactionMessage\n );\n}\n\n/**\n * Updates the first `SetComputeUnitPrice` instruction in a transaction message\n * with the given micro-Lamports, or appends a new instruction if none exists.\n * A function of the current value can be provided instead of a static value.\n *\n * @param microLamports - The new compute unit price, or a function that\n * takes the previous price and returns the new one.\n * @param transactionMessage - The transaction message to update.\n *\n * @example\n * ```ts\n * const updatedTransactionMessage = updateOrAppendSetComputeUnitPriceInstruction(\n * // E.g. double the current price or set it to 10_000 if it isn't set.\n * (currentPrice) => currentPrice === null ? 10_000 : currentPrice * 2,\n * transactionMessage,\n * );\n * ```\n */\nexport function updateOrAppendSetComputeUnitPriceInstruction<\n TTransactionMessage extends BaseTransactionMessage,\n>(\n microLamports:\n | MicroLamports\n | ((previousMicroLamports: MicroLamports | null) => MicroLamports),\n transactionMessage: TTransactionMessage\n): TTransactionMessage {\n const getMicroLamports = (\n previousMicroLamports: MicroLamports | null\n ): MicroLamports =>\n typeof microLamports === 'function'\n ? microLamports(previousMicroLamports)\n : microLamports;\n const instructionDetails =\n getSetComputeUnitPriceInstructionIndexAndMicroLamports(transactionMessage);\n\n if (!instructionDetails) {\n return appendTransactionMessageInstruction(\n getSetComputeUnitPriceInstruction({\n microLamports: getMicroLamports(null),\n }),\n transactionMessage\n );\n }\n\n const { index, microLamports: previousMicroLamports } = instructionDetails;\n const newMicroLamports = getMicroLamports(previousMicroLamports);\n if (newMicroLamports === previousMicroLamports) {\n return transactionMessage;\n }\n\n const newInstruction = getSetComputeUnitPriceInstruction({\n microLamports: newMicroLamports,\n });\n const newInstructions = [...transactionMessage.instructions];\n newInstructions.splice(index, 1, newInstruction);\n return Object.freeze({\n ...transactionMessage,\n instructions: newInstructions,\n });\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getPriorityFee = exports.getBaseFee = void 0;\nconst kit_1 = require(\"@solana/kit\");\nconst compute_budget_1 = require(\"@solana-program/compute-budget\");\nconst solana_1 = require(\"@trezor/blockchain-link-utils/lib/solana\");\nconst utils_1 = require(\"@trezor/utils\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS = BigInt(300_000);\nconst stripComputeBudgetInstructions = message => ({\n ...message,\n instructions: message.instructions.filter(instruction => message.staticAccounts[instruction.programAddressIndex] !== solana_1.COMPUTE_BUDGET_PROGRAM_ID)\n});\nconst bumpUnitLimitComputeBudgetInstructions = message => ({\n ...message,\n instructions: message.instructions.map(ix => {\n if (message.staticAccounts[ix.programAddressIndex] === solana_1.COMPUTE_BUDGET_PROGRAM_ID && ix.data?.[0] === compute_budget_1.SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR) {\n const data = (0, compute_budget_1.getSetComputeUnitLimitInstructionDataEncoder)().encode({\n units: compute_budget_1.MAX_COMPUTE_UNIT_LIMIT\n });\n return {\n ...ix,\n data\n };\n }\n return ix;\n })\n});\nconst getBaseFee = async (api, message) => {\n const messageWithoutComputeBudget = (0, kit_1.pipe)(stripComputeBudgetInstructions(message), (0, kit_1.getCompiledTransactionMessageEncoder)().encode, (0, kit_1.getBase64Decoder)().decode);\n const result = await api.getFeeForMessage(messageWithoutComputeBudget).send();\n if (result.value == null) {\n throw new Error('Could not estimate fee for transaction.');\n }\n return result.value;\n};\nexports.getBaseFee = getBaseFee;\nconst getPriorityFee = async (api, decompiledMessage, compiledMessage, signatures) => {\n const affectedAccounts = new Set(decompiledMessage.instructions.flatMap(instruction => instruction.accounts ?? []).filter(({\n role\n }) => (0, kit_1.isWritableRole)(role)).map(({\n address\n }) => address));\n const messageBytes = (0, kit_1.pipe)(bumpUnitLimitComputeBudgetInstructions(compiledMessage), (0, kit_1.getCompiledTransactionMessageEncoder)().encode);\n const rawTx = (0, kit_1.pipe)({\n messageBytes,\n signatures\n }, (0, kit_1.getTransactionEncoder)().encode, (0, kit_1.getBase64Decoder)().decode);\n const simulated = await api.simulateTransaction(rawTx, {\n commitment: 'confirmed',\n encoding: 'base64',\n sigVerify: false,\n replaceRecentBlockhash: true\n }).send();\n if (simulated.value.err != null || simulated.value.unitsConsumed == null) {\n const stringifiedError = (0, utils_1.safeBigIntStringify)(simulated.value.err);\n console.error('Could not simulate transaction:', stringifiedError);\n throw new Error(`Could not simulate transaction: ${stringifiedError}`);\n }\n const computeUnitLimit = new bigNumber_1.BigNumber(simulated.value.unitsConsumed.toString()).times(1.2).decimalPlaces(0, bigNumber_1.BigNumber.ROUND_UP);\n const recentFees = await api.getRecentPrioritizationFees(Array.from(affectedAccounts)).send();\n const networkPriorityFee = recentFees.map(a => a.prioritizationFee).sort((a, b) => Number(b - a))[Math.floor(recentFees.length / 4)];\n const computeUnitPrice = networkPriorityFee > DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS ? networkPriorityFee : DEFAULT_COMPUTE_UNIT_PRICE_MICROLAMPORTS;\n const fee = new bigNumber_1.BigNumber(computeUnitPrice.toString()).times(10 ** -6).times(computeUnitLimit).decimalPlaces(0, bigNumber_1.BigNumber.ROUND_UP).toString(10);\n return {\n computeUnitPrice: computeUnitPrice.toString(10),\n computeUnitLimit: computeUnitLimit.toString(10),\n fee\n };\n};\nexports.getPriorityFee = getPriorityFee;\n//# sourceMappingURL=fee.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getThrottledTransport = void 0;\nconst DEFAULT_MAX_RPS = 4;\nconst DEFAULT_INTERVAL = 1000;\nconst getThrottledTransport = (originalTransport, {\n maxRps = DEFAULT_MAX_RPS,\n interval = DEFAULT_INTERVAL,\n debug = false\n} = {}) => {\n let requestBudgetRemaining = maxRps;\n let pendingQueueRunTimerId;\n const queuedRequests = [];\n const processQueue = () => {\n if (requestBudgetRemaining === 0) {\n return;\n }\n if (debug) {\n console.warn('[transport] Processing request queue', {\n numQueuedRequests: queuedRequests.length\n });\n }\n while (queuedRequests.length && requestBudgetRemaining > 0) {\n const request = queuedRequests.shift();\n if (debug) {\n console.warn(`[transport] Processing request ${request.requestNumber}`, {\n requestBudgetRemaining\n });\n }\n if (request.config.signal?.aborted) {\n if (debug) {\n console.warn(`[transport] Skipping aborted request ${request.requestNumber}`);\n }\n continue;\n }\n if (debug) {\n console.warn(`[transport] Starting request ${request.requestNumber}`);\n }\n originalTransport(request.config).then(request.resolve).catch(request.reject);\n requestBudgetRemaining--;\n if (pendingQueueRunTimerId === undefined) {\n if (debug) {\n console.warn(`[transport] Setting request budget reset deadline for ${interval} ms from now`);\n }\n pendingQueueRunTimerId = setTimeout(() => {\n if (debug) {\n console.warn('[transport] Replenishing request budget');\n }\n pendingQueueRunTimerId = undefined;\n requestBudgetRemaining = maxRps;\n processQueue();\n }, interval);\n }\n }\n };\n let requestCount = 0;\n const throttledTransport = config => new Promise((resolve, reject) => {\n queuedRequests.push({\n config,\n reject,\n requestNumber: ++requestCount,\n resolve\n });\n if (config.signal) {\n config.signal.addEventListener('abort', function () {\n reject(this.reason);\n });\n }\n processQueue();\n });\n return throttledTransport;\n};\nexports.getThrottledTransport = getThrottledTransport;\n//# sourceMappingURL=getThrottledTransport.js.map", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type Authorized = { staker: Address; withdrawer: Address };\n\nexport type AuthorizedArgs = Authorized;\n\nexport function getAuthorizedEncoder(): Encoder {\n return getStructEncoder([\n ['staker', getAddressEncoder()],\n ['withdrawer', getAddressEncoder()],\n ]);\n}\n\nexport function getAuthorizedDecoder(): Decoder {\n return getStructDecoder([\n ['staker', getAddressDecoder()],\n ['withdrawer', getAddressDecoder()],\n ]);\n}\n\nexport function getAuthorizedCodec(): Codec {\n return combineCodec(getAuthorizedEncoder(), getAuthorizedDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getF64Decoder,\n getF64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type Delegation = {\n voterPubkey: Address;\n stake: bigint;\n activationEpoch: bigint;\n deactivationEpoch: bigint;\n warmupCooldownRate: number;\n};\n\nexport type DelegationArgs = {\n voterPubkey: Address;\n stake: number | bigint;\n activationEpoch: number | bigint;\n deactivationEpoch: number | bigint;\n warmupCooldownRate: number;\n};\n\nexport function getDelegationEncoder(): Encoder {\n return getStructEncoder([\n ['voterPubkey', getAddressEncoder()],\n ['stake', getU64Encoder()],\n ['activationEpoch', getU64Encoder()],\n ['deactivationEpoch', getU64Encoder()],\n ['warmupCooldownRate', getF64Encoder()],\n ]);\n}\n\nexport function getDelegationDecoder(): Decoder {\n return getStructDecoder([\n ['voterPubkey', getAddressDecoder()],\n ['stake', getU64Decoder()],\n ['activationEpoch', getU64Decoder()],\n ['deactivationEpoch', getU64Decoder()],\n ['warmupCooldownRate', getF64Decoder()],\n ]);\n}\n\nexport function getDelegationCodec(): Codec {\n return combineCodec(getDelegationEncoder(), getDelegationDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type Lockup = {\n unixTimestamp: bigint;\n epoch: bigint;\n custodian: Address;\n};\n\nexport type LockupArgs = {\n unixTimestamp: number | bigint;\n epoch: number | bigint;\n custodian: Address;\n};\n\nexport function getLockupEncoder(): Encoder {\n return getStructEncoder([\n ['unixTimestamp', getI64Encoder()],\n ['epoch', getU64Encoder()],\n ['custodian', getAddressEncoder()],\n ]);\n}\n\nexport function getLockupDecoder(): Decoder {\n return getStructDecoder([\n ['unixTimestamp', getI64Decoder()],\n ['epoch', getU64Decoder()],\n ['custodian', getAddressDecoder()],\n ]);\n}\n\nexport function getLockupCodec(): Codec {\n return combineCodec(getLockupEncoder(), getLockupDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getAuthorizedDecoder,\n getAuthorizedEncoder,\n getLockupDecoder,\n getLockupEncoder,\n type Authorized,\n type AuthorizedArgs,\n type Lockup,\n type LockupArgs,\n} from '.';\n\nexport type Meta = {\n rentExemptReserve: bigint;\n authorized: Authorized;\n lockup: Lockup;\n};\n\nexport type MetaArgs = {\n rentExemptReserve: number | bigint;\n authorized: AuthorizedArgs;\n lockup: LockupArgs;\n};\n\nexport function getMetaEncoder(): Encoder {\n return getStructEncoder([\n ['rentExemptReserve', getU64Encoder()],\n ['authorized', getAuthorizedEncoder()],\n ['lockup', getLockupEncoder()],\n ]);\n}\n\nexport function getMetaDecoder(): Decoder {\n return getStructDecoder([\n ['rentExemptReserve', getU64Decoder()],\n ['authorized', getAuthorizedDecoder()],\n ['lockup', getLockupDecoder()],\n ]);\n}\n\nexport function getMetaCodec(): Codec {\n return combineCodec(getMetaEncoder(), getMetaDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getDelegationDecoder,\n getDelegationEncoder,\n type Delegation,\n type DelegationArgs,\n} from '.';\n\nexport type Stake = { delegation: Delegation; creditsObserved: bigint };\n\nexport type StakeArgs = {\n delegation: DelegationArgs;\n creditsObserved: number | bigint;\n};\n\nexport function getStakeEncoder(): Encoder {\n return getStructEncoder([\n ['delegation', getDelegationEncoder()],\n ['creditsObserved', getU64Encoder()],\n ]);\n}\n\nexport function getStakeDecoder(): Decoder {\n return getStructDecoder([\n ['delegation', getDelegationDecoder()],\n ['creditsObserved', getU64Decoder()],\n ]);\n}\n\nexport function getStakeCodec(): Codec {\n return combineCodec(getStakeEncoder(), getStakeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum StakeAuthorize {\n Staker,\n Withdrawer,\n}\n\nexport type StakeAuthorizeArgs = StakeAuthorize;\n\nexport function getStakeAuthorizeEncoder(): Encoder {\n return getEnumEncoder(StakeAuthorize);\n}\n\nexport function getStakeAuthorizeDecoder(): Decoder {\n return getEnumDecoder(StakeAuthorize);\n}\n\nexport function getStakeAuthorizeCodec(): Codec<\n StakeAuthorizeArgs,\n StakeAuthorize\n> {\n return combineCodec(getStakeAuthorizeEncoder(), getStakeAuthorizeDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type StakeFlags = { bits: number };\n\nexport type StakeFlagsArgs = StakeFlags;\n\nexport function getStakeFlagsEncoder(): Encoder {\n return getStructEncoder([['bits', getU8Encoder()]]);\n}\n\nexport function getStakeFlagsDecoder(): Decoder {\n return getStructDecoder([['bits', getU8Decoder()]]);\n}\n\nexport function getStakeFlagsCodec(): Codec {\n return combineCodec(getStakeFlagsEncoder(), getStakeFlagsDecoder());\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU32Decoder,\n getU32Encoder,\n getUnitDecoder,\n getUnitEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n getMetaDecoder,\n getMetaEncoder,\n getStakeDecoder,\n getStakeEncoder,\n type Meta,\n type MetaArgs,\n type Stake,\n type StakeArgs,\n} from '.';\n\nexport type StakeState =\n | { __kind: 'Uninitialized' }\n | { __kind: 'Initialized'; fields: readonly [Meta] }\n | { __kind: 'Stake'; fields: readonly [Meta, Stake] }\n | { __kind: 'RewardsPool' };\n\nexport type StakeStateArgs =\n | { __kind: 'Uninitialized' }\n | { __kind: 'Initialized'; fields: readonly [MetaArgs] }\n | { __kind: 'Stake'; fields: readonly [MetaArgs, StakeArgs] }\n | { __kind: 'RewardsPool' };\n\nexport function getStakeStateEncoder(): Encoder {\n return getDiscriminatedUnionEncoder(\n [\n ['Uninitialized', getUnitEncoder()],\n [\n 'Initialized',\n getStructEncoder([['fields', getTupleEncoder([getMetaEncoder()])]]),\n ],\n [\n 'Stake',\n getStructEncoder([\n ['fields', getTupleEncoder([getMetaEncoder(), getStakeEncoder()])],\n ]),\n ],\n ['RewardsPool', getUnitEncoder()],\n ],\n { size: getU32Encoder() }\n );\n}\n\nexport function getStakeStateDecoder(): Decoder {\n return getDiscriminatedUnionDecoder(\n [\n ['Uninitialized', getUnitDecoder()],\n [\n 'Initialized',\n getStructDecoder([['fields', getTupleDecoder([getMetaDecoder()])]]),\n ],\n [\n 'Stake',\n getStructDecoder([\n ['fields', getTupleDecoder([getMetaDecoder(), getStakeDecoder()])],\n ]),\n ],\n ['RewardsPool', getUnitDecoder()],\n ],\n { size: getU32Decoder() }\n );\n}\n\nexport function getStakeStateCodec(): Codec {\n return combineCodec(getStakeStateEncoder(), getStakeStateDecoder());\n}\n\n// Data Enum Helpers.\nexport function stakeState(\n kind: 'Uninitialized'\n): GetDiscriminatedUnionVariant;\nexport function stakeState(\n kind: 'Initialized',\n data: GetDiscriminatedUnionVariantContent<\n StakeStateArgs,\n '__kind',\n 'Initialized'\n >['fields']\n): GetDiscriminatedUnionVariant;\nexport function stakeState(\n kind: 'Stake',\n data: GetDiscriminatedUnionVariantContent<\n StakeStateArgs,\n '__kind',\n 'Stake'\n >['fields']\n): GetDiscriminatedUnionVariant;\nexport function stakeState(\n kind: 'RewardsPool'\n): GetDiscriminatedUnionVariant;\nexport function stakeState(\n kind: K,\n data?: Data\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isStakeState(\n kind: K,\n value: StakeState\n): value is StakeState & { __kind: K } {\n return value.__kind === kind;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU32Decoder,\n getU32Encoder,\n getUnitDecoder,\n getUnitEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n getMetaDecoder,\n getMetaEncoder,\n getStakeDecoder,\n getStakeEncoder,\n getStakeFlagsDecoder,\n getStakeFlagsEncoder,\n type Meta,\n type MetaArgs,\n type Stake,\n type StakeArgs,\n type StakeFlags,\n type StakeFlagsArgs,\n} from '.';\n\nexport type StakeStateV2 =\n | { __kind: 'Uninitialized' }\n | { __kind: 'Initialized'; fields: readonly [Meta] }\n | { __kind: 'Stake'; fields: readonly [Meta, Stake, StakeFlags] }\n | { __kind: 'RewardsPool' };\n\nexport type StakeStateV2Args =\n | { __kind: 'Uninitialized' }\n | { __kind: 'Initialized'; fields: readonly [MetaArgs] }\n | { __kind: 'Stake'; fields: readonly [MetaArgs, StakeArgs, StakeFlagsArgs] }\n | { __kind: 'RewardsPool' };\n\nexport function getStakeStateV2Encoder(): Encoder {\n return getDiscriminatedUnionEncoder(\n [\n ['Uninitialized', getUnitEncoder()],\n [\n 'Initialized',\n getStructEncoder([['fields', getTupleEncoder([getMetaEncoder()])]]),\n ],\n [\n 'Stake',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getMetaEncoder(),\n getStakeEncoder(),\n getStakeFlagsEncoder(),\n ]),\n ],\n ]),\n ],\n ['RewardsPool', getUnitEncoder()],\n ],\n { size: getU32Encoder() }\n );\n}\n\nexport function getStakeStateV2Decoder(): Decoder {\n return getDiscriminatedUnionDecoder(\n [\n ['Uninitialized', getUnitDecoder()],\n [\n 'Initialized',\n getStructDecoder([['fields', getTupleDecoder([getMetaDecoder()])]]),\n ],\n [\n 'Stake',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getMetaDecoder(),\n getStakeDecoder(),\n getStakeFlagsDecoder(),\n ]),\n ],\n ]),\n ],\n ['RewardsPool', getUnitDecoder()],\n ],\n { size: getU32Decoder() }\n );\n}\n\nexport function getStakeStateV2Codec(): Codec {\n return combineCodec(getStakeStateV2Encoder(), getStakeStateV2Decoder());\n}\n\n// Data Enum Helpers.\nexport function stakeStateV2(\n kind: 'Uninitialized'\n): GetDiscriminatedUnionVariant;\nexport function stakeStateV2(\n kind: 'Initialized',\n data: GetDiscriminatedUnionVariantContent<\n StakeStateV2Args,\n '__kind',\n 'Initialized'\n >['fields']\n): GetDiscriminatedUnionVariant;\nexport function stakeStateV2(\n kind: 'Stake',\n data: GetDiscriminatedUnionVariantContent<\n StakeStateV2Args,\n '__kind',\n 'Stake'\n >['fields']\n): GetDiscriminatedUnionVariant;\nexport function stakeStateV2(\n kind: 'RewardsPool'\n): GetDiscriminatedUnionVariant;\nexport function stakeStateV2(\n kind: K,\n data?: Data\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isStakeStateV2(\n kind: K,\n value: StakeStateV2\n): value is StakeStateV2 & { __kind: K } {\n return value.__kind === kind;\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n getStructDecoder,\n getStructEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n} from '@solana/kit';\nimport {\n getStakeStateV2Decoder,\n getStakeStateV2Encoder,\n type StakeStateV2,\n type StakeStateV2Args,\n} from '../types';\n\nexport type StakeStateAccount = { state: StakeStateV2 };\n\nexport type StakeStateAccountArgs = { state: StakeStateV2Args };\n\nexport function getStakeStateAccountEncoder(): Encoder {\n return getStructEncoder([['state', getStakeStateV2Encoder()]]);\n}\n\nexport function getStakeStateAccountDecoder(): Decoder {\n return getStructDecoder([['state', getStakeStateV2Decoder()]]);\n}\n\nexport function getStakeStateAccountCodec(): Codec<\n StakeStateAccountArgs,\n StakeStateAccount\n> {\n return combineCodec(\n getStakeStateAccountEncoder(),\n getStakeStateAccountDecoder()\n );\n}\n\nexport function decodeStakeStateAccount(\n encodedAccount: EncodedAccount\n): Account;\nexport function decodeStakeStateAccount(\n encodedAccount: MaybeEncodedAccount\n): MaybeAccount;\nexport function decodeStakeStateAccount(\n encodedAccount: EncodedAccount | MaybeEncodedAccount\n):\n | Account\n | MaybeAccount {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount,\n getStakeStateAccountDecoder()\n );\n}\n\nexport async function fetchStakeStateAccount(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchMaybeStakeStateAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeStakeStateAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters[0],\n address: Address,\n config?: FetchAccountConfig\n): Promise> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeStakeStateAccount(maybeAccount);\n}\n\nexport async function fetchAllStakeStateAccount(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchAllMaybeStakeStateAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeStakeStateAccount(\n rpc: Parameters[0],\n addresses: Array
,\n config?: FetchAccountsConfig\n): Promise[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeStakeStateAccount(maybeAccount)\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n containsBytes,\n getU32Encoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedAuthorizeCheckedInstruction,\n type ParsedAuthorizeCheckedWithSeedInstruction,\n type ParsedAuthorizeInstruction,\n type ParsedAuthorizeWithSeedInstruction,\n type ParsedDeactivateDelinquentInstruction,\n type ParsedDeactivateInstruction,\n type ParsedDelegateStakeInstruction,\n type ParsedGetMinimumDelegationInstruction,\n type ParsedInitializeCheckedInstruction,\n type ParsedInitializeInstruction,\n type ParsedMergeInstruction,\n type ParsedMoveLamportsInstruction,\n type ParsedMoveStakeInstruction,\n type ParsedSetLockupCheckedInstruction,\n type ParsedSetLockupInstruction,\n type ParsedSplitInstruction,\n type ParsedWithdrawInstruction,\n} from '../instructions';\n\nexport const STAKE_PROGRAM_ADDRESS =\n 'Stake11111111111111111111111111111111111111' as Address<'Stake11111111111111111111111111111111111111'>;\n\nexport enum StakeAccount {\n StakeStateAccount,\n}\n\nexport enum StakeInstruction {\n Initialize,\n Authorize,\n DelegateStake,\n Split,\n Withdraw,\n Deactivate,\n SetLockup,\n Merge,\n AuthorizeWithSeed,\n InitializeChecked,\n AuthorizeChecked,\n AuthorizeCheckedWithSeed,\n SetLockupChecked,\n GetMinimumDelegation,\n DeactivateDelinquent,\n MoveStake,\n MoveLamports,\n}\n\nexport function identifyStakeInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): StakeInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, getU32Encoder().encode(0), 0)) {\n return StakeInstruction.Initialize;\n }\n if (containsBytes(data, getU32Encoder().encode(1), 0)) {\n return StakeInstruction.Authorize;\n }\n if (containsBytes(data, getU32Encoder().encode(2), 0)) {\n return StakeInstruction.DelegateStake;\n }\n if (containsBytes(data, getU32Encoder().encode(3), 0)) {\n return StakeInstruction.Split;\n }\n if (containsBytes(data, getU32Encoder().encode(4), 0)) {\n return StakeInstruction.Withdraw;\n }\n if (containsBytes(data, getU32Encoder().encode(5), 0)) {\n return StakeInstruction.Deactivate;\n }\n if (containsBytes(data, getU32Encoder().encode(6), 0)) {\n return StakeInstruction.SetLockup;\n }\n if (containsBytes(data, getU32Encoder().encode(7), 0)) {\n return StakeInstruction.Merge;\n }\n if (containsBytes(data, getU32Encoder().encode(8), 0)) {\n return StakeInstruction.AuthorizeWithSeed;\n }\n if (containsBytes(data, getU32Encoder().encode(9), 0)) {\n return StakeInstruction.InitializeChecked;\n }\n if (containsBytes(data, getU32Encoder().encode(10), 0)) {\n return StakeInstruction.AuthorizeChecked;\n }\n if (containsBytes(data, getU32Encoder().encode(11), 0)) {\n return StakeInstruction.AuthorizeCheckedWithSeed;\n }\n if (containsBytes(data, getU32Encoder().encode(12), 0)) {\n return StakeInstruction.SetLockupChecked;\n }\n if (containsBytes(data, getU32Encoder().encode(13), 0)) {\n return StakeInstruction.GetMinimumDelegation;\n }\n if (containsBytes(data, getU32Encoder().encode(14), 0)) {\n return StakeInstruction.DeactivateDelinquent;\n }\n if (containsBytes(data, getU32Encoder().encode(16), 0)) {\n return StakeInstruction.MoveStake;\n }\n if (containsBytes(data, getU32Encoder().encode(17), 0)) {\n return StakeInstruction.MoveLamports;\n }\n throw new Error(\n 'The provided instruction could not be identified as a stake instruction.'\n );\n}\n\nexport type ParsedStakeInstruction<\n TProgram extends string = 'Stake11111111111111111111111111111111111111',\n> =\n | ({\n instructionType: StakeInstruction.Initialize;\n } & ParsedInitializeInstruction)\n | ({\n instructionType: StakeInstruction.Authorize;\n } & ParsedAuthorizeInstruction)\n | ({\n instructionType: StakeInstruction.DelegateStake;\n } & ParsedDelegateStakeInstruction)\n | ({\n instructionType: StakeInstruction.Split;\n } & ParsedSplitInstruction)\n | ({\n instructionType: StakeInstruction.Withdraw;\n } & ParsedWithdrawInstruction)\n | ({\n instructionType: StakeInstruction.Deactivate;\n } & ParsedDeactivateInstruction)\n | ({\n instructionType: StakeInstruction.SetLockup;\n } & ParsedSetLockupInstruction)\n | ({\n instructionType: StakeInstruction.Merge;\n } & ParsedMergeInstruction)\n | ({\n instructionType: StakeInstruction.AuthorizeWithSeed;\n } & ParsedAuthorizeWithSeedInstruction)\n | ({\n instructionType: StakeInstruction.InitializeChecked;\n } & ParsedInitializeCheckedInstruction)\n | ({\n instructionType: StakeInstruction.AuthorizeChecked;\n } & ParsedAuthorizeCheckedInstruction)\n | ({\n instructionType: StakeInstruction.AuthorizeCheckedWithSeed;\n } & ParsedAuthorizeCheckedWithSeedInstruction)\n | ({\n instructionType: StakeInstruction.SetLockupChecked;\n } & ParsedSetLockupCheckedInstruction)\n | ({\n instructionType: StakeInstruction.GetMinimumDelegation;\n } & ParsedGetMinimumDelegationInstruction)\n | ({\n instructionType: StakeInstruction.DeactivateDelinquent;\n } & ParsedDeactivateDelinquentInstruction)\n | ({\n instructionType: StakeInstruction.MoveStake;\n } & ParsedMoveStakeInstruction)\n | ({\n instructionType: StakeInstruction.MoveLamports;\n } & ParsedMoveLamportsInstruction);\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\n\nexport const STAKE_ERROR__NO_CREDITS_TO_REDEEM = 0x0; // 0\n\nexport const STAKE_ERROR__LOCKUP_IN_FORCE = 0x1; // 1\n\nexport const STAKE_ERROR__ALREADY_DEACTIVATED = 0x2; // 2\n\nexport const STAKE_ERROR__TOO_SOON_TO_REDELEGATE = 0x3; // 3\n\nexport const STAKE_ERROR__INSUFFICIENT_STAKE = 0x4; // 4\n\nexport const STAKE_ERROR__MERGE_TRANSIENT_STAKE = 0x5; // 5\n\nexport const STAKE_ERROR__MERGE_MISMATCH = 0x6; // 6\n\nexport const STAKE_ERROR__CUSTODIAN_MISSING = 0x7; // 7\n\nexport const STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING = 0x8; // 8\n\nexport const STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES = 0x9; // 9\n\nexport const STAKE_ERROR__VOTE_ADDRESS_MISMATCH = 0xa; // 10\n\nexport const STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET = 0xb; // 11\n\nexport const STAKE_ERROR__INSUFFICIENT_DELEGATION = 0xc; // 12\n\nexport const STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE = 0xd; // 13\n\nexport const STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT = 0xe; // 14\n\nexport const STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED = 0xf; // 15\n\nexport const STAKE_ERROR__EPOCH_REWARDS_ACTIVE = 0x10; // 16\n\nexport type StakeError =\n | typeof STAKE_ERROR__ALREADY_DEACTIVATED\n | typeof STAKE_ERROR__CUSTODIAN_MISSING\n | typeof STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING\n | typeof STAKE_ERROR__EPOCH_REWARDS_ACTIVE\n | typeof STAKE_ERROR__INSUFFICIENT_DELEGATION\n | typeof STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES\n | typeof STAKE_ERROR__INSUFFICIENT_STAKE\n | typeof STAKE_ERROR__LOCKUP_IN_FORCE\n | typeof STAKE_ERROR__MERGE_MISMATCH\n | typeof STAKE_ERROR__MERGE_TRANSIENT_STAKE\n | typeof STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET\n | typeof STAKE_ERROR__NO_CREDITS_TO_REDEEM\n | typeof STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED\n | typeof STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT\n | typeof STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE\n | typeof STAKE_ERROR__TOO_SOON_TO_REDELEGATE\n | typeof STAKE_ERROR__VOTE_ADDRESS_MISMATCH;\n\nlet stakeErrorMessages: Record | undefined;\nif (process.env.NODE_ENV !== 'production') {\n stakeErrorMessages = {\n [STAKE_ERROR__ALREADY_DEACTIVATED]: `Stake already deactivated`,\n [STAKE_ERROR__CUSTODIAN_MISSING]: `Custodian address not present`,\n [STAKE_ERROR__CUSTODIAN_SIGNATURE_MISSING]: `Custodian signature not present`,\n [STAKE_ERROR__EPOCH_REWARDS_ACTIVE]: `Stake action is not permitted while the epoch rewards period is active`,\n [STAKE_ERROR__INSUFFICIENT_DELEGATION]: `Delegation amount is less than the minimum`,\n [STAKE_ERROR__INSUFFICIENT_REFERENCE_VOTES]: `Insufficient voting activity in the reference vote account`,\n [STAKE_ERROR__INSUFFICIENT_STAKE]: `Split amount is more than is staked`,\n [STAKE_ERROR__LOCKUP_IN_FORCE]: `Lockup has not yet expired`,\n [STAKE_ERROR__MERGE_MISMATCH]: `Stake account merge failed due to different authority, lockups or state`,\n [STAKE_ERROR__MERGE_TRANSIENT_STAKE]: `Stake account with transient stake cannot be merged`,\n [STAKE_ERROR__MINIMUM_DELINQUENT_EPOCHS_FOR_DEACTIVATION_NOT_MET]: `Stake account has not been delinquent for the minimum epochs required for deactivation`,\n [STAKE_ERROR__NO_CREDITS_TO_REDEEM]: `Not enough credits to redeem`,\n [STAKE_ERROR__REDELEGATED_STAKE_MUST_FULLY_ACTIVATE_BEFORE_DEACTIVATION_IS_PERMITTED]: `Redelegated stake must be fully activated before deactivation`,\n [STAKE_ERROR__REDELEGATE_TO_SAME_VOTE_ACCOUNT]: `Stake redelegation to the same vote account is not permitted`,\n [STAKE_ERROR__REDELEGATE_TRANSIENT_OR_INACTIVE_STAKE]: `Stake account with transient or inactive stake cannot be redelegated`,\n [STAKE_ERROR__TOO_SOON_TO_REDELEGATE]: `One re-delegation permitted per epoch`,\n [STAKE_ERROR__VOTE_ADDRESS_MISMATCH]: `Stake account is not delegated to the provided vote account`,\n };\n}\n\nexport function getStakeErrorMessage(code: StakeError): string {\n if (process.env.NODE_ENV !== 'production') {\n return (stakeErrorMessages as Record)[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isStakeError(\n error: unknown,\n transactionMessage: {\n instructions: Record;\n },\n code?: TProgramErrorCode\n): error is SolanaError &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError(\n error,\n transactionMessage,\n STAKE_PROGRAM_ADDRESS,\n code\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type Address,\n type IAccountMeta,\n type IAccountSignerMeta,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome(value: T | null | undefined): T {\n if (value == null) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): Address {\n if (!value) {\n throw new Error('Expected a Address.');\n }\n if (typeof value === 'object' && 'address' in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0];\n }\n return value as Address;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): ProgramDerivedAddress {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error('Expected a ProgramDerivedAddress.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null\n | undefined\n): TransactionSigner {\n if (!value || !isTransactionSigner(value)) {\n throw new Error('Expected a TransactionSigner.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null =\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type IInstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: 'omitted' | 'programId'\n) {\n return (\n account: ResolvedAccount\n ): IAccountMeta | IAccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner(\n value:\n | Address\n | ProgramDerivedAddress\n | TransactionSigner\n): value is TransactionSigner {\n return (\n !!value &&\n typeof value === 'object' &&\n 'address' in value &&\n kitIsTransactionSigner(value)\n );\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeAuthorizeDecoder,\n getStakeAuthorizeEncoder,\n type StakeAuthorize,\n type StakeAuthorizeArgs,\n} from '../types';\n\nexport const AUTHORIZE_DISCRIMINATOR = 1;\n\nexport function getAuthorizeDiscriminatorBytes() {\n return getU32Encoder().encode(AUTHORIZE_DISCRIMINATOR);\n}\n\nexport type AuthorizeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountAuthority extends string | IAccountMeta = string,\n TAccountLockupAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n ...(TAccountLockupAuthority extends undefined\n ? []\n : [\n TAccountLockupAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountLockupAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AuthorizeInstructionData = {\n discriminator: number;\n arg0: Address;\n arg1: StakeAuthorize;\n};\n\nexport type AuthorizeInstructionDataArgs = {\n arg0: Address;\n arg1: StakeAuthorizeArgs;\n};\n\nexport function getAuthorizeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['arg0', getAddressEncoder()],\n ['arg1', getStakeAuthorizeEncoder()],\n ]),\n (value) => ({ ...value, discriminator: AUTHORIZE_DISCRIMINATOR })\n );\n}\n\nexport function getAuthorizeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['arg0', getAddressDecoder()],\n ['arg1', getStakeAuthorizeDecoder()],\n ]);\n}\n\nexport function getAuthorizeInstructionDataCodec(): Codec<\n AuthorizeInstructionDataArgs,\n AuthorizeInstructionData\n> {\n return combineCodec(\n getAuthorizeInstructionDataEncoder(),\n getAuthorizeInstructionDataDecoder()\n );\n}\n\nexport type AuthorizeInput<\n TAccountStake extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountAuthority extends string = string,\n TAccountLockupAuthority extends string = string,\n> = {\n /** Stake account to be updated */\n stake: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Stake or withdraw authority */\n authority: TransactionSigner;\n /** Lockup authority */\n lockupAuthority?: TransactionSigner;\n arg0: AuthorizeInstructionDataArgs['arg0'];\n arg1: AuthorizeInstructionDataArgs['arg1'];\n};\n\nexport function getAuthorizeInstruction<\n TAccountStake extends string,\n TAccountClockSysvar extends string,\n TAccountAuthority extends string,\n TAccountLockupAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: AuthorizeInput<\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountLockupAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): AuthorizeInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountLockupAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n lockupAuthority: {\n value: input.lockupAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.lockupAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getAuthorizeInstructionDataEncoder().encode(\n args as AuthorizeInstructionDataArgs\n ),\n } as AuthorizeInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountLockupAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedAuthorizeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account to be updated */\n stake: TAccountMetas[0];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[1];\n /** Stake or withdraw authority */\n authority: TAccountMetas[2];\n /** Lockup authority */\n lockupAuthority?: TAccountMetas[3] | undefined;\n };\n data: AuthorizeInstructionData;\n};\n\nexport function parseAuthorizeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAuthorizeInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 3;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n clockSysvar: getNextAccount(),\n authority: getNextAccount(),\n lockupAuthority: getNextOptionalAccount(),\n },\n data: getAuthorizeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeAuthorizeDecoder,\n getStakeAuthorizeEncoder,\n type StakeAuthorize,\n type StakeAuthorizeArgs,\n} from '../types';\n\nexport const AUTHORIZE_CHECKED_DISCRIMINATOR = 10;\n\nexport function getAuthorizeCheckedDiscriminatorBytes() {\n return getU32Encoder().encode(AUTHORIZE_CHECKED_DISCRIMINATOR);\n}\n\nexport type AuthorizeCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountAuthority extends string | IAccountMeta = string,\n TAccountNewAuthority extends string | IAccountMeta = string,\n TAccountLockupAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n TAccountNewAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountNewAuthority,\n ...(TAccountLockupAuthority extends undefined\n ? []\n : [\n TAccountLockupAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountLockupAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AuthorizeCheckedInstructionData = {\n discriminator: number;\n stakeAuthorize: StakeAuthorize;\n};\n\nexport type AuthorizeCheckedInstructionDataArgs = {\n stakeAuthorize: StakeAuthorizeArgs;\n};\n\nexport function getAuthorizeCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['stakeAuthorize', getStakeAuthorizeEncoder()],\n ]),\n (value) => ({ ...value, discriminator: AUTHORIZE_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getAuthorizeCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['stakeAuthorize', getStakeAuthorizeDecoder()],\n ]);\n}\n\nexport function getAuthorizeCheckedInstructionDataCodec(): Codec<\n AuthorizeCheckedInstructionDataArgs,\n AuthorizeCheckedInstructionData\n> {\n return combineCodec(\n getAuthorizeCheckedInstructionDataEncoder(),\n getAuthorizeCheckedInstructionDataDecoder()\n );\n}\n\nexport type AuthorizeCheckedInput<\n TAccountStake extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountAuthority extends string = string,\n TAccountNewAuthority extends string = string,\n TAccountLockupAuthority extends string = string,\n> = {\n /** Stake account to be updated */\n stake: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** The stake or withdraw authority */\n authority: TransactionSigner;\n /** The new stake or withdraw authority */\n newAuthority: TransactionSigner;\n /** Lockup authority */\n lockupAuthority?: TransactionSigner;\n stakeAuthorize: AuthorizeCheckedInstructionDataArgs['stakeAuthorize'];\n};\n\nexport function getAuthorizeCheckedInstruction<\n TAccountStake extends string,\n TAccountClockSysvar extends string,\n TAccountAuthority extends string,\n TAccountNewAuthority extends string,\n TAccountLockupAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: AuthorizeCheckedInput<\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountLockupAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): AuthorizeCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountLockupAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n lockupAuthority: {\n value: input.lockupAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.newAuthority),\n getAccountMeta(accounts.lockupAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getAuthorizeCheckedInstructionDataEncoder().encode(\n args as AuthorizeCheckedInstructionDataArgs\n ),\n } as AuthorizeCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountAuthority,\n TAccountNewAuthority,\n TAccountLockupAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedAuthorizeCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account to be updated */\n stake: TAccountMetas[0];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[1];\n /** The stake or withdraw authority */\n authority: TAccountMetas[2];\n /** The new stake or withdraw authority */\n newAuthority: TAccountMetas[3];\n /** Lockup authority */\n lockupAuthority?: TAccountMetas[4] | undefined;\n };\n data: AuthorizeCheckedInstructionData;\n};\n\nexport function parseAuthorizeCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAuthorizeCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 4;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n clockSysvar: getNextAccount(),\n authority: getNextAccount(),\n newAuthority: getNextAccount(),\n lockupAuthority: getNextOptionalAccount(),\n },\n data: getAuthorizeCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeAuthorizeDecoder,\n getStakeAuthorizeEncoder,\n type StakeAuthorize,\n type StakeAuthorizeArgs,\n} from '../types';\n\nexport const AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR = 11;\n\nexport function getAuthorizeCheckedWithSeedDiscriminatorBytes() {\n return getU32Encoder().encode(AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR);\n}\n\nexport type AuthorizeCheckedWithSeedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountBase extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountNewAuthority extends string | IAccountMeta = string,\n TAccountLockupAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountBase extends string\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountBase,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountNewAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountNewAuthority,\n ...(TAccountLockupAuthority extends undefined\n ? []\n : [\n TAccountLockupAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountLockupAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AuthorizeCheckedWithSeedInstructionData = {\n discriminator: number;\n stakeAuthorize: StakeAuthorize;\n authoritySeed: string;\n authorityOwner: Address;\n};\n\nexport type AuthorizeCheckedWithSeedInstructionDataArgs = {\n stakeAuthorize: StakeAuthorizeArgs;\n authoritySeed: string;\n authorityOwner: Address;\n};\n\nexport function getAuthorizeCheckedWithSeedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['stakeAuthorize', getStakeAuthorizeEncoder()],\n [\n 'authoritySeed',\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ],\n ['authorityOwner', getAddressEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: AUTHORIZE_CHECKED_WITH_SEED_DISCRIMINATOR,\n })\n );\n}\n\nexport function getAuthorizeCheckedWithSeedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['stakeAuthorize', getStakeAuthorizeDecoder()],\n ['authoritySeed', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['authorityOwner', getAddressDecoder()],\n ]);\n}\n\nexport function getAuthorizeCheckedWithSeedInstructionDataCodec(): Codec<\n AuthorizeCheckedWithSeedInstructionDataArgs,\n AuthorizeCheckedWithSeedInstructionData\n> {\n return combineCodec(\n getAuthorizeCheckedWithSeedInstructionDataEncoder(),\n getAuthorizeCheckedWithSeedInstructionDataDecoder()\n );\n}\n\nexport type AuthorizeCheckedWithSeedInput<\n TAccountStake extends string = string,\n TAccountBase extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountNewAuthority extends string = string,\n TAccountLockupAuthority extends string = string,\n> = {\n /** Stake account to be updated */\n stake: Address;\n /** Base key of stake or withdraw authority */\n base: TransactionSigner;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** The new stake or withdraw authority */\n newAuthority: TransactionSigner;\n /** Lockup authority */\n lockupAuthority?: TransactionSigner;\n stakeAuthorize: AuthorizeCheckedWithSeedInstructionDataArgs['stakeAuthorize'];\n authoritySeed: AuthorizeCheckedWithSeedInstructionDataArgs['authoritySeed'];\n authorityOwner: AuthorizeCheckedWithSeedInstructionDataArgs['authorityOwner'];\n};\n\nexport function getAuthorizeCheckedWithSeedInstruction<\n TAccountStake extends string,\n TAccountBase extends string,\n TAccountClockSysvar extends string,\n TAccountNewAuthority extends string,\n TAccountLockupAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: AuthorizeCheckedWithSeedInput<\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountNewAuthority,\n TAccountLockupAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): AuthorizeCheckedWithSeedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountNewAuthority,\n TAccountLockupAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n base: { value: input.base ?? null, isWritable: false },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n lockupAuthority: {\n value: input.lockupAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.base),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.newAuthority),\n getAccountMeta(accounts.lockupAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getAuthorizeCheckedWithSeedInstructionDataEncoder().encode(\n args as AuthorizeCheckedWithSeedInstructionDataArgs\n ),\n } as AuthorizeCheckedWithSeedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountNewAuthority,\n TAccountLockupAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedAuthorizeCheckedWithSeedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account to be updated */\n stake: TAccountMetas[0];\n /** Base key of stake or withdraw authority */\n base: TAccountMetas[1];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[2];\n /** The new stake or withdraw authority */\n newAuthority: TAccountMetas[3];\n /** Lockup authority */\n lockupAuthority?: TAccountMetas[4] | undefined;\n };\n data: AuthorizeCheckedWithSeedInstructionData;\n};\n\nexport function parseAuthorizeCheckedWithSeedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAuthorizeCheckedWithSeedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 4;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n base: getNextAccount(),\n clockSysvar: getNextAccount(),\n newAuthority: getNextAccount(),\n lockupAuthority: getNextOptionalAccount(),\n },\n data: getAuthorizeCheckedWithSeedInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeAuthorizeDecoder,\n getStakeAuthorizeEncoder,\n type StakeAuthorize,\n type StakeAuthorizeArgs,\n} from '../types';\n\nexport const AUTHORIZE_WITH_SEED_DISCRIMINATOR = 8;\n\nexport function getAuthorizeWithSeedDiscriminatorBytes() {\n return getU32Encoder().encode(AUTHORIZE_WITH_SEED_DISCRIMINATOR);\n}\n\nexport type AuthorizeWithSeedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountBase extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountLockupAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountBase extends string\n ? ReadonlySignerAccount & IAccountSignerMeta\n : TAccountBase,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n ...(TAccountLockupAuthority extends undefined\n ? []\n : [\n TAccountLockupAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountLockupAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AuthorizeWithSeedInstructionData = {\n discriminator: number;\n newAuthorizedPubkey: Address;\n stakeAuthorize: StakeAuthorize;\n authoritySeed: string;\n authorityOwner: Address;\n};\n\nexport type AuthorizeWithSeedInstructionDataArgs = {\n newAuthorizedPubkey: Address;\n stakeAuthorize: StakeAuthorizeArgs;\n authoritySeed: string;\n authorityOwner: Address;\n};\n\nexport function getAuthorizeWithSeedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['newAuthorizedPubkey', getAddressEncoder()],\n ['stakeAuthorize', getStakeAuthorizeEncoder()],\n [\n 'authoritySeed',\n addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n ],\n ['authorityOwner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: AUTHORIZE_WITH_SEED_DISCRIMINATOR })\n );\n}\n\nexport function getAuthorizeWithSeedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['newAuthorizedPubkey', getAddressDecoder()],\n ['stakeAuthorize', getStakeAuthorizeDecoder()],\n ['authoritySeed', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['authorityOwner', getAddressDecoder()],\n ]);\n}\n\nexport function getAuthorizeWithSeedInstructionDataCodec(): Codec<\n AuthorizeWithSeedInstructionDataArgs,\n AuthorizeWithSeedInstructionData\n> {\n return combineCodec(\n getAuthorizeWithSeedInstructionDataEncoder(),\n getAuthorizeWithSeedInstructionDataDecoder()\n );\n}\n\nexport type AuthorizeWithSeedInput<\n TAccountStake extends string = string,\n TAccountBase extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountLockupAuthority extends string = string,\n> = {\n /** Stake account to be updated */\n stake: Address;\n /** Base key of stake or withdraw authority */\n base: TransactionSigner;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Lockup authority */\n lockupAuthority?: TransactionSigner;\n newAuthorizedPubkey: AuthorizeWithSeedInstructionDataArgs['newAuthorizedPubkey'];\n stakeAuthorize: AuthorizeWithSeedInstructionDataArgs['stakeAuthorize'];\n authoritySeed: AuthorizeWithSeedInstructionDataArgs['authoritySeed'];\n authorityOwner: AuthorizeWithSeedInstructionDataArgs['authorityOwner'];\n};\n\nexport function getAuthorizeWithSeedInstruction<\n TAccountStake extends string,\n TAccountBase extends string,\n TAccountClockSysvar extends string,\n TAccountLockupAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: AuthorizeWithSeedInput<\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountLockupAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): AuthorizeWithSeedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountLockupAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n base: { value: input.base ?? null, isWritable: false },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n lockupAuthority: {\n value: input.lockupAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.base),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.lockupAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getAuthorizeWithSeedInstructionDataEncoder().encode(\n args as AuthorizeWithSeedInstructionDataArgs\n ),\n } as AuthorizeWithSeedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountBase,\n TAccountClockSysvar,\n TAccountLockupAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedAuthorizeWithSeedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account to be updated */\n stake: TAccountMetas[0];\n /** Base key of stake or withdraw authority */\n base: TAccountMetas[1];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[2];\n /** Lockup authority */\n lockupAuthority?: TAccountMetas[3] | undefined;\n };\n data: AuthorizeWithSeedInstructionData;\n};\n\nexport function parseAuthorizeWithSeedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedAuthorizeWithSeedInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 3;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n base: getNextAccount(),\n clockSysvar: getNextAccount(),\n lockupAuthority: getNextOptionalAccount(),\n },\n data: getAuthorizeWithSeedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DEACTIVATE_DISCRIMINATOR = 5;\n\nexport function getDeactivateDiscriminatorBytes() {\n return getU32Encoder().encode(DEACTIVATE_DISCRIMINATOR);\n}\n\nexport type DeactivateInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DeactivateInstructionData = { discriminator: number };\n\nexport type DeactivateInstructionDataArgs = {};\n\nexport function getDeactivateInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({ ...value, discriminator: DEACTIVATE_DISCRIMINATOR })\n );\n}\n\nexport function getDeactivateInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getDeactivateInstructionDataCodec(): Codec<\n DeactivateInstructionDataArgs,\n DeactivateInstructionData\n> {\n return combineCodec(\n getDeactivateInstructionDataEncoder(),\n getDeactivateInstructionDataDecoder()\n );\n}\n\nexport type DeactivateInput<\n TAccountStake extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Delegated stake account */\n stake: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n};\n\nexport function getDeactivateInstruction<\n TAccountStake extends string,\n TAccountClockSysvar extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: DeactivateInput<\n TAccountStake,\n TAccountClockSysvar,\n TAccountStakeAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): DeactivateInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getDeactivateInstructionDataEncoder().encode({}),\n } as DeactivateInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountClockSysvar,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedDeactivateInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Delegated stake account */\n stake: TAccountMetas[0];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[1];\n /** Stake authority */\n stakeAuthority: TAccountMetas[2];\n };\n data: DeactivateInstructionData;\n};\n\nexport function parseDeactivateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDeactivateInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n clockSysvar: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getDeactivateInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DEACTIVATE_DELINQUENT_DISCRIMINATOR = 14;\n\nexport function getDeactivateDelinquentDiscriminatorBytes() {\n return getU32Encoder().encode(DEACTIVATE_DELINQUENT_DISCRIMINATOR);\n}\n\nexport type DeactivateDelinquentInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountDelinquentVote extends string | IAccountMeta = string,\n TAccountReferenceVote extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountDelinquentVote extends string\n ? ReadonlyAccount\n : TAccountDelinquentVote,\n TAccountReferenceVote extends string\n ? ReadonlyAccount\n : TAccountReferenceVote,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DeactivateDelinquentInstructionData = { discriminator: number };\n\nexport type DeactivateDelinquentInstructionDataArgs = {};\n\nexport function getDeactivateDelinquentInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({\n ...value,\n discriminator: DEACTIVATE_DELINQUENT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getDeactivateDelinquentInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getDeactivateDelinquentInstructionDataCodec(): Codec<\n DeactivateDelinquentInstructionDataArgs,\n DeactivateDelinquentInstructionData\n> {\n return combineCodec(\n getDeactivateDelinquentInstructionDataEncoder(),\n getDeactivateDelinquentInstructionDataDecoder()\n );\n}\n\nexport type DeactivateDelinquentInput<\n TAccountStake extends string = string,\n TAccountDelinquentVote extends string = string,\n TAccountReferenceVote extends string = string,\n> = {\n /** Delegated stake account */\n stake: Address;\n /** Delinquent vote account */\n delinquentVote: Address;\n /** Reference vote account */\n referenceVote: Address;\n};\n\nexport function getDeactivateDelinquentInstruction<\n TAccountStake extends string,\n TAccountDelinquentVote extends string,\n TAccountReferenceVote extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: DeactivateDelinquentInput<\n TAccountStake,\n TAccountDelinquentVote,\n TAccountReferenceVote\n >,\n config?: { programAddress?: TProgramAddress }\n): DeactivateDelinquentInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountDelinquentVote,\n TAccountReferenceVote\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n delinquentVote: { value: input.delinquentVote ?? null, isWritable: false },\n referenceVote: { value: input.referenceVote ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.delinquentVote),\n getAccountMeta(accounts.referenceVote),\n ],\n programAddress,\n data: getDeactivateDelinquentInstructionDataEncoder().encode({}),\n } as DeactivateDelinquentInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountDelinquentVote,\n TAccountReferenceVote\n >;\n\n return instruction;\n}\n\nexport type ParsedDeactivateDelinquentInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Delegated stake account */\n stake: TAccountMetas[0];\n /** Delinquent vote account */\n delinquentVote: TAccountMetas[1];\n /** Reference vote account */\n referenceVote: TAccountMetas[2];\n };\n data: DeactivateDelinquentInstructionData;\n};\n\nexport function parseDeactivateDelinquentInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDeactivateDelinquentInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n delinquentVote: getNextAccount(),\n referenceVote: getNextAccount(),\n },\n data: getDeactivateDelinquentInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DELEGATE_STAKE_DISCRIMINATOR = 2;\n\nexport function getDelegateStakeDiscriminatorBytes() {\n return getU32Encoder().encode(DELEGATE_STAKE_DISCRIMINATOR);\n}\n\nexport type DelegateStakeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountVote extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountStakeHistory extends string | IAccountMeta = string,\n TAccountUnused extends string | IAccountMeta = string,\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountVote extends string\n ? ReadonlyAccount\n : TAccountVote,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountStakeHistory extends string\n ? ReadonlyAccount\n : TAccountStakeHistory,\n TAccountUnused extends string\n ? ReadonlyAccount\n : TAccountUnused,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type DelegateStakeInstructionData = { discriminator: number };\n\nexport type DelegateStakeInstructionDataArgs = {};\n\nexport function getDelegateStakeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({ ...value, discriminator: DELEGATE_STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getDelegateStakeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getDelegateStakeInstructionDataCodec(): Codec<\n DelegateStakeInstructionDataArgs,\n DelegateStakeInstructionData\n> {\n return combineCodec(\n getDelegateStakeInstructionDataEncoder(),\n getDelegateStakeInstructionDataDecoder()\n );\n}\n\nexport type DelegateStakeInput<\n TAccountStake extends string = string,\n TAccountVote extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountStakeHistory extends string = string,\n TAccountUnused extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Initialized stake account to be delegated */\n stake: Address;\n /** Vote account to which this stake will be delegated */\n vote: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Stake history sysvar */\n stakeHistory: Address;\n /** Unused account, formerly the stake config */\n unused: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n};\n\nexport function getDelegateStakeInstruction<\n TAccountStake extends string,\n TAccountVote extends string,\n TAccountClockSysvar extends string,\n TAccountStakeHistory extends string,\n TAccountUnused extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: DelegateStakeInput<\n TAccountStake,\n TAccountVote,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountUnused,\n TAccountStakeAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): DelegateStakeInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountVote,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountUnused,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n vote: { value: input.vote ?? null, isWritable: false },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n stakeHistory: { value: input.stakeHistory ?? null, isWritable: false },\n unused: { value: input.unused ?? null, isWritable: false },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.vote),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.stakeHistory),\n getAccountMeta(accounts.unused),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getDelegateStakeInstructionDataEncoder().encode({}),\n } as DelegateStakeInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountVote,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountUnused,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedDelegateStakeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Initialized stake account to be delegated */\n stake: TAccountMetas[0];\n /** Vote account to which this stake will be delegated */\n vote: TAccountMetas[1];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[2];\n /** Stake history sysvar */\n stakeHistory: TAccountMetas[3];\n /** Unused account, formerly the stake config */\n unused: TAccountMetas[4];\n /** Stake authority */\n stakeAuthority: TAccountMetas[5];\n };\n data: DelegateStakeInstructionData;\n};\n\nexport function parseDelegateStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedDelegateStakeInstruction {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n vote: getNextAccount(),\n clockSysvar: getNextAccount(),\n stakeHistory: getNextAccount(),\n unused: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getDelegateStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\n\nexport const GET_MINIMUM_DELEGATION_DISCRIMINATOR = 13;\n\nexport function getGetMinimumDelegationDiscriminatorBytes() {\n return getU32Encoder().encode(GET_MINIMUM_DELEGATION_DISCRIMINATOR);\n}\n\nexport type GetMinimumDelegationInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts;\n\nexport type GetMinimumDelegationInstructionData = { discriminator: number };\n\nexport type GetMinimumDelegationInstructionDataArgs = {};\n\nexport function getGetMinimumDelegationInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({\n ...value,\n discriminator: GET_MINIMUM_DELEGATION_DISCRIMINATOR,\n })\n );\n}\n\nexport function getGetMinimumDelegationInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getGetMinimumDelegationInstructionDataCodec(): Codec<\n GetMinimumDelegationInstructionDataArgs,\n GetMinimumDelegationInstructionData\n> {\n return combineCodec(\n getGetMinimumDelegationInstructionDataEncoder(),\n getGetMinimumDelegationInstructionDataDecoder()\n );\n}\n\nexport type GetMinimumDelegationInput = {};\n\nexport function getGetMinimumDelegationInstruction<\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(config?: {\n programAddress?: TProgramAddress;\n}): GetMinimumDelegationInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n const instruction = {\n programAddress,\n data: getGetMinimumDelegationInstructionDataEncoder().encode({}),\n } as GetMinimumDelegationInstruction;\n\n return instruction;\n}\n\nexport type ParsedGetMinimumDelegationInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n> = {\n programAddress: Address;\n data: GetMinimumDelegationInstructionData;\n};\n\nexport function parseGetMinimumDelegationInstruction(\n instruction: IInstruction & IInstructionWithData\n): ParsedGetMinimumDelegationInstruction {\n return {\n programAddress: instruction.programAddress,\n data: getGetMinimumDelegationInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getAuthorizedDecoder,\n getAuthorizedEncoder,\n getLockupDecoder,\n getLockupEncoder,\n type Authorized,\n type AuthorizedArgs,\n type Lockup,\n type LockupArgs,\n} from '../types';\n\nexport const INITIALIZE_DISCRIMINATOR = 0;\n\nexport function getInitializeDiscriminatorBytes() {\n return getU32Encoder().encode(INITIALIZE_DISCRIMINATOR);\n}\n\nexport type InitializeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountRentSysvar extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountRentSysvar extends string\n ? ReadonlyAccount\n : TAccountRentSysvar,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeInstructionData = {\n discriminator: number;\n arg0: Authorized;\n arg1: Lockup;\n};\n\nexport type InitializeInstructionDataArgs = {\n arg0: AuthorizedArgs;\n arg1: LockupArgs;\n};\n\nexport function getInitializeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['arg0', getAuthorizedEncoder()],\n ['arg1', getLockupEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['arg0', getAuthorizedDecoder()],\n ['arg1', getLockupDecoder()],\n ]);\n}\n\nexport function getInitializeInstructionDataCodec(): Codec<\n InitializeInstructionDataArgs,\n InitializeInstructionData\n> {\n return combineCodec(\n getInitializeInstructionDataEncoder(),\n getInitializeInstructionDataDecoder()\n );\n}\n\nexport type InitializeInput<\n TAccountStake extends string = string,\n TAccountRentSysvar extends string = string,\n> = {\n /** Uninitialized stake account */\n stake: Address;\n /** Rent sysvar */\n rentSysvar?: Address;\n arg0: InitializeInstructionDataArgs['arg0'];\n arg1: InitializeInstructionDataArgs['arg1'];\n};\n\nexport function getInitializeInstruction<\n TAccountStake extends string,\n TAccountRentSysvar extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: InitializeInput,\n config?: { programAddress?: TProgramAddress }\n): InitializeInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n rentSysvar: { value: input.rentSysvar ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.rentSysvar.value) {\n accounts.rentSysvar.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.rentSysvar),\n ],\n programAddress,\n data: getInitializeInstructionDataEncoder().encode(\n args as InitializeInstructionDataArgs\n ),\n } as InitializeInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountRentSysvar\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Uninitialized stake account */\n stake: TAccountMetas[0];\n /** Rent sysvar */\n rentSysvar: TAccountMetas[1];\n };\n data: InitializeInstructionData;\n};\n\nexport function parseInitializeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n rentSysvar: getNextAccount(),\n },\n data: getInitializeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CHECKED_DISCRIMINATOR = 9;\n\nexport function getInitializeCheckedDiscriminatorBytes() {\n return getU32Encoder().encode(INITIALIZE_CHECKED_DISCRIMINATOR);\n}\n\nexport type InitializeCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountRentSysvar extends\n | string\n | IAccountMeta = 'SysvarRent111111111111111111111111111111111',\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TAccountWithdrawAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountRentSysvar extends string\n ? ReadonlyAccount\n : TAccountRentSysvar,\n TAccountStakeAuthority extends string\n ? ReadonlyAccount\n : TAccountStakeAuthority,\n TAccountWithdrawAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeCheckedInstructionData = { discriminator: number };\n\nexport type InitializeCheckedInstructionDataArgs = {};\n\nexport function getInitializeCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({ ...value, discriminator: INITIALIZE_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getInitializeCheckedInstructionDataCodec(): Codec<\n InitializeCheckedInstructionDataArgs,\n InitializeCheckedInstructionData\n> {\n return combineCodec(\n getInitializeCheckedInstructionDataEncoder(),\n getInitializeCheckedInstructionDataDecoder()\n );\n}\n\nexport type InitializeCheckedInput<\n TAccountStake extends string = string,\n TAccountRentSysvar extends string = string,\n TAccountStakeAuthority extends string = string,\n TAccountWithdrawAuthority extends string = string,\n> = {\n /** Uninitialized stake account */\n stake: Address;\n /** Rent sysvar */\n rentSysvar?: Address;\n /** The stake authority */\n stakeAuthority: Address;\n /** The withdraw authority */\n withdrawAuthority: TransactionSigner;\n};\n\nexport function getInitializeCheckedInstruction<\n TAccountStake extends string,\n TAccountRentSysvar extends string,\n TAccountStakeAuthority extends string,\n TAccountWithdrawAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: InitializeCheckedInput<\n TAccountStake,\n TAccountRentSysvar,\n TAccountStakeAuthority,\n TAccountWithdrawAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountRentSysvar,\n TAccountStakeAuthority,\n TAccountWithdrawAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n rentSysvar: { value: input.rentSysvar ?? null, isWritable: false },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n withdrawAuthority: {\n value: input.withdrawAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.rentSysvar.value) {\n accounts.rentSysvar.value =\n 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.rentSysvar),\n getAccountMeta(accounts.stakeAuthority),\n getAccountMeta(accounts.withdrawAuthority),\n ],\n programAddress,\n data: getInitializeCheckedInstructionDataEncoder().encode({}),\n } as InitializeCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountRentSysvar,\n TAccountStakeAuthority,\n TAccountWithdrawAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Uninitialized stake account */\n stake: TAccountMetas[0];\n /** Rent sysvar */\n rentSysvar: TAccountMetas[1];\n /** The stake authority */\n stakeAuthority: TAccountMetas[2];\n /** The withdraw authority */\n withdrawAuthority: TAccountMetas[3];\n };\n data: InitializeCheckedInstructionData;\n};\n\nexport function parseInitializeCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedInitializeCheckedInstruction {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n rentSysvar: getNextAccount(),\n stakeAuthority: getNextAccount(),\n withdrawAuthority: getNextAccount(),\n },\n data: getInitializeCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MERGE_DISCRIMINATOR = 7;\n\nexport function getMergeDiscriminatorBytes() {\n return getU32Encoder().encode(MERGE_DISCRIMINATOR);\n}\n\nexport type MergeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountDestinationStake extends string | IAccountMeta = string,\n TAccountSourceStake extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountStakeHistory extends string | IAccountMeta = string,\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountDestinationStake extends string\n ? WritableAccount\n : TAccountDestinationStake,\n TAccountSourceStake extends string\n ? WritableAccount\n : TAccountSourceStake,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountStakeHistory extends string\n ? ReadonlyAccount\n : TAccountStakeHistory,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MergeInstructionData = { discriminator: number };\n\nexport type MergeInstructionDataArgs = {};\n\nexport function getMergeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([['discriminator', getU32Encoder()]]),\n (value) => ({ ...value, discriminator: MERGE_DISCRIMINATOR })\n );\n}\n\nexport function getMergeInstructionDataDecoder(): Decoder {\n return getStructDecoder([['discriminator', getU32Decoder()]]);\n}\n\nexport function getMergeInstructionDataCodec(): Codec<\n MergeInstructionDataArgs,\n MergeInstructionData\n> {\n return combineCodec(\n getMergeInstructionDataEncoder(),\n getMergeInstructionDataDecoder()\n );\n}\n\nexport type MergeInput<\n TAccountDestinationStake extends string = string,\n TAccountSourceStake extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountStakeHistory extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Destination stake account */\n destinationStake: Address;\n /** Source stake account */\n sourceStake: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Stake history sysvar */\n stakeHistory: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n};\n\nexport function getMergeInstruction<\n TAccountDestinationStake extends string,\n TAccountSourceStake extends string,\n TAccountClockSysvar extends string,\n TAccountStakeHistory extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: MergeInput<\n TAccountDestinationStake,\n TAccountSourceStake,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountStakeAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): MergeInstruction<\n TProgramAddress,\n TAccountDestinationStake,\n TAccountSourceStake,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n destinationStake: {\n value: input.destinationStake ?? null,\n isWritable: true,\n },\n sourceStake: { value: input.sourceStake ?? null, isWritable: true },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n stakeHistory: { value: input.stakeHistory ?? null, isWritable: false },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.destinationStake),\n getAccountMeta(accounts.sourceStake),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.stakeHistory),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getMergeInstructionDataEncoder().encode({}),\n } as MergeInstruction<\n TProgramAddress,\n TAccountDestinationStake,\n TAccountSourceStake,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMergeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Destination stake account */\n destinationStake: TAccountMetas[0];\n /** Source stake account */\n sourceStake: TAccountMetas[1];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[2];\n /** Stake history sysvar */\n stakeHistory: TAccountMetas[3];\n /** Stake authority */\n stakeAuthority: TAccountMetas[4];\n };\n data: MergeInstructionData;\n};\n\nexport function parseMergeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMergeInstruction {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n destinationStake: getNextAccount(),\n sourceStake: getNextAccount(),\n clockSysvar: getNextAccount(),\n stakeHistory: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getMergeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MOVE_LAMPORTS_DISCRIMINATOR = 17;\n\nexport function getMoveLamportsDiscriminatorBytes() {\n return getU32Encoder().encode(MOVE_LAMPORTS_DISCRIMINATOR);\n}\n\nexport type MoveLamportsInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountSourceStake extends string | IAccountMeta = string,\n TAccountDestinationStake extends string | IAccountMeta = string,\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSourceStake extends string\n ? WritableAccount\n : TAccountSourceStake,\n TAccountDestinationStake extends string\n ? WritableAccount\n : TAccountDestinationStake,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MoveLamportsInstructionData = {\n discriminator: number;\n args: bigint;\n};\n\nexport type MoveLamportsInstructionDataArgs = { args: number | bigint };\n\nexport function getMoveLamportsInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['args', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MOVE_LAMPORTS_DISCRIMINATOR })\n );\n}\n\nexport function getMoveLamportsInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['args', getU64Decoder()],\n ]);\n}\n\nexport function getMoveLamportsInstructionDataCodec(): Codec<\n MoveLamportsInstructionDataArgs,\n MoveLamportsInstructionData\n> {\n return combineCodec(\n getMoveLamportsInstructionDataEncoder(),\n getMoveLamportsInstructionDataDecoder()\n );\n}\n\nexport type MoveLamportsInput<\n TAccountSourceStake extends string = string,\n TAccountDestinationStake extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Active or inactive source stake account */\n sourceStake: Address;\n /** Mergeable destination stake account */\n destinationStake: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n args: MoveLamportsInstructionDataArgs['args'];\n};\n\nexport function getMoveLamportsInstruction<\n TAccountSourceStake extends string,\n TAccountDestinationStake extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: MoveLamportsInput<\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): MoveLamportsInstruction<\n TProgramAddress,\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceStake: { value: input.sourceStake ?? null, isWritable: true },\n destinationStake: {\n value: input.destinationStake ?? null,\n isWritable: true,\n },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceStake),\n getAccountMeta(accounts.destinationStake),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getMoveLamportsInstructionDataEncoder().encode(\n args as MoveLamportsInstructionDataArgs\n ),\n } as MoveLamportsInstruction<\n TProgramAddress,\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMoveLamportsInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Active or inactive source stake account */\n sourceStake: TAccountMetas[0];\n /** Mergeable destination stake account */\n destinationStake: TAccountMetas[1];\n /** Stake authority */\n stakeAuthority: TAccountMetas[2];\n };\n data: MoveLamportsInstructionData;\n};\n\nexport function parseMoveLamportsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMoveLamportsInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceStake: getNextAccount(),\n destinationStake: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getMoveLamportsInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MOVE_STAKE_DISCRIMINATOR = 16;\n\nexport function getMoveStakeDiscriminatorBytes() {\n return getU32Encoder().encode(MOVE_STAKE_DISCRIMINATOR);\n}\n\nexport type MoveStakeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountSourceStake extends string | IAccountMeta = string,\n TAccountDestinationStake extends string | IAccountMeta = string,\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountSourceStake extends string\n ? WritableAccount\n : TAccountSourceStake,\n TAccountDestinationStake extends string\n ? WritableAccount\n : TAccountDestinationStake,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type MoveStakeInstructionData = { discriminator: number; args: bigint };\n\nexport type MoveStakeInstructionDataArgs = { args: number | bigint };\n\nexport function getMoveStakeInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['args', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MOVE_STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getMoveStakeInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['args', getU64Decoder()],\n ]);\n}\n\nexport function getMoveStakeInstructionDataCodec(): Codec<\n MoveStakeInstructionDataArgs,\n MoveStakeInstructionData\n> {\n return combineCodec(\n getMoveStakeInstructionDataEncoder(),\n getMoveStakeInstructionDataDecoder()\n );\n}\n\nexport type MoveStakeInput<\n TAccountSourceStake extends string = string,\n TAccountDestinationStake extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Active source stake account */\n sourceStake: Address;\n /** Active or inactive destination stake account */\n destinationStake: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n args: MoveStakeInstructionDataArgs['args'];\n};\n\nexport function getMoveStakeInstruction<\n TAccountSourceStake extends string,\n TAccountDestinationStake extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: MoveStakeInput<\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): MoveStakeInstruction<\n TProgramAddress,\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceStake: { value: input.sourceStake ?? null, isWritable: true },\n destinationStake: {\n value: input.destinationStake ?? null,\n isWritable: true,\n },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceStake),\n getAccountMeta(accounts.destinationStake),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getMoveStakeInstructionDataEncoder().encode(\n args as MoveStakeInstructionDataArgs\n ),\n } as MoveStakeInstruction<\n TProgramAddress,\n TAccountSourceStake,\n TAccountDestinationStake,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedMoveStakeInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Active source stake account */\n sourceStake: TAccountMetas[0];\n /** Active or inactive destination stake account */\n destinationStake: TAccountMetas[1];\n /** Stake authority */\n stakeAuthority: TAccountMetas[2];\n };\n data: MoveStakeInstructionData;\n};\n\nexport function parseMoveStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedMoveStakeInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceStake: getNextAccount(),\n destinationStake: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getMoveStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_LOCKUP_DISCRIMINATOR = 6;\n\nexport function getSetLockupDiscriminatorBytes() {\n return getU32Encoder().encode(SET_LOCKUP_DISCRIMINATOR);\n}\n\nexport type SetLockupInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetLockupInstructionData = {\n discriminator: number;\n unixTimestamp: Option;\n epoch: Option;\n custodian: Option
;\n};\n\nexport type SetLockupInstructionDataArgs = {\n unixTimestamp: OptionOrNullable;\n epoch: OptionOrNullable;\n custodian: OptionOrNullable
;\n};\n\nexport function getSetLockupInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['unixTimestamp', getOptionEncoder(getI64Encoder())],\n ['epoch', getOptionEncoder(getU64Encoder())],\n ['custodian', getOptionEncoder(getAddressEncoder())],\n ]),\n (value) => ({ ...value, discriminator: SET_LOCKUP_DISCRIMINATOR })\n );\n}\n\nexport function getSetLockupInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['unixTimestamp', getOptionDecoder(getI64Decoder())],\n ['epoch', getOptionDecoder(getU64Decoder())],\n ['custodian', getOptionDecoder(getAddressDecoder())],\n ]);\n}\n\nexport function getSetLockupInstructionDataCodec(): Codec<\n SetLockupInstructionDataArgs,\n SetLockupInstructionData\n> {\n return combineCodec(\n getSetLockupInstructionDataEncoder(),\n getSetLockupInstructionDataDecoder()\n );\n}\n\nexport type SetLockupInput<\n TAccountStake extends string = string,\n TAccountAuthority extends string = string,\n> = {\n /** Initialized stake account */\n stake: Address;\n /** Lockup authority or withdraw authority */\n authority: TransactionSigner;\n unixTimestamp: SetLockupInstructionDataArgs['unixTimestamp'];\n epoch: SetLockupInstructionDataArgs['epoch'];\n custodian: SetLockupInstructionDataArgs['custodian'];\n};\n\nexport function getSetLockupInstruction<\n TAccountStake extends string,\n TAccountAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: SetLockupInput,\n config?: { programAddress?: TProgramAddress }\n): SetLockupInstruction {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.authority),\n ],\n programAddress,\n data: getSetLockupInstructionDataEncoder().encode(\n args as SetLockupInstructionDataArgs\n ),\n } as SetLockupInstruction;\n\n return instruction;\n}\n\nexport type ParsedSetLockupInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Initialized stake account */\n stake: TAccountMetas[0];\n /** Lockup authority or withdraw authority */\n authority: TAccountMetas[1];\n };\n data: SetLockupInstructionData;\n};\n\nexport function parseSetLockupInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSetLockupInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n authority: getNextAccount(),\n },\n data: getSetLockupInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type Option,\n type OptionOrNullable,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_LOCKUP_CHECKED_DISCRIMINATOR = 12;\n\nexport function getSetLockupCheckedDiscriminatorBytes() {\n return getU32Encoder().encode(SET_LOCKUP_CHECKED_DISCRIMINATOR);\n}\n\nexport type SetLockupCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountAuthority extends string | IAccountMeta = string,\n TAccountNewAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountAuthority,\n ...(TAccountNewAuthority extends undefined\n ? []\n : [\n TAccountNewAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountNewAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetLockupCheckedInstructionData = {\n discriminator: number;\n unixTimestamp: Option;\n epoch: Option;\n};\n\nexport type SetLockupCheckedInstructionDataArgs = {\n unixTimestamp: OptionOrNullable;\n epoch: OptionOrNullable;\n};\n\nexport function getSetLockupCheckedInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['unixTimestamp', getOptionEncoder(getI64Encoder())],\n ['epoch', getOptionEncoder(getU64Encoder())],\n ]),\n (value) => ({ ...value, discriminator: SET_LOCKUP_CHECKED_DISCRIMINATOR })\n );\n}\n\nexport function getSetLockupCheckedInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['unixTimestamp', getOptionDecoder(getI64Decoder())],\n ['epoch', getOptionDecoder(getU64Decoder())],\n ]);\n}\n\nexport function getSetLockupCheckedInstructionDataCodec(): Codec<\n SetLockupCheckedInstructionDataArgs,\n SetLockupCheckedInstructionData\n> {\n return combineCodec(\n getSetLockupCheckedInstructionDataEncoder(),\n getSetLockupCheckedInstructionDataDecoder()\n );\n}\n\nexport type SetLockupCheckedInput<\n TAccountStake extends string = string,\n TAccountAuthority extends string = string,\n TAccountNewAuthority extends string = string,\n> = {\n /** Initialized stake account */\n stake: Address;\n /** Lockup authority or withdraw authority */\n authority: TransactionSigner;\n /** New lockup authority */\n newAuthority?: TransactionSigner;\n unixTimestamp: SetLockupCheckedInstructionDataArgs['unixTimestamp'];\n epoch: SetLockupCheckedInstructionDataArgs['epoch'];\n};\n\nexport function getSetLockupCheckedInstruction<\n TAccountStake extends string,\n TAccountAuthority extends string,\n TAccountNewAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: SetLockupCheckedInput<\n TAccountStake,\n TAccountAuthority,\n TAccountNewAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): SetLockupCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountAuthority,\n TAccountNewAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: false },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.newAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getSetLockupCheckedInstructionDataEncoder().encode(\n args as SetLockupCheckedInstructionDataArgs\n ),\n } as SetLockupCheckedInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountAuthority,\n TAccountNewAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedSetLockupCheckedInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Initialized stake account */\n stake: TAccountMetas[0];\n /** Lockup authority or withdraw authority */\n authority: TAccountMetas[1];\n /** New lockup authority */\n newAuthority?: TAccountMetas[2] | undefined;\n };\n data: SetLockupCheckedInstructionData;\n};\n\nexport function parseSetLockupCheckedInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSetLockupCheckedInstruction {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 2;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n authority: getNextAccount(),\n newAuthority: getNextOptionalAccount(),\n },\n data: getSetLockupCheckedInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SPLIT_DISCRIMINATOR = 3;\n\nexport function getSplitDiscriminatorBytes() {\n return getU32Encoder().encode(SPLIT_DISCRIMINATOR);\n}\n\nexport type SplitInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountSplitStake extends string | IAccountMeta = string,\n TAccountStakeAuthority extends string | IAccountMeta = string,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountSplitStake extends string\n ? WritableAccount\n : TAccountSplitStake,\n TAccountStakeAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountStakeAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SplitInstructionData = { discriminator: number; args: bigint };\n\nexport type SplitInstructionDataArgs = { args: number | bigint };\n\nexport function getSplitInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['args', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: SPLIT_DISCRIMINATOR })\n );\n}\n\nexport function getSplitInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['args', getU64Decoder()],\n ]);\n}\n\nexport function getSplitInstructionDataCodec(): Codec<\n SplitInstructionDataArgs,\n SplitInstructionData\n> {\n return combineCodec(\n getSplitInstructionDataEncoder(),\n getSplitInstructionDataDecoder()\n );\n}\n\nexport type SplitInput<\n TAccountStake extends string = string,\n TAccountSplitStake extends string = string,\n TAccountStakeAuthority extends string = string,\n> = {\n /** Stake account to be split */\n stake: Address;\n /** Uninitialized stake account */\n splitStake: Address;\n /** Stake authority */\n stakeAuthority: TransactionSigner;\n args: SplitInstructionDataArgs['args'];\n};\n\nexport function getSplitInstruction<\n TAccountStake extends string,\n TAccountSplitStake extends string,\n TAccountStakeAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: SplitInput,\n config?: { programAddress?: TProgramAddress }\n): SplitInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountSplitStake,\n TAccountStakeAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n splitStake: { value: input.splitStake ?? null, isWritable: true },\n stakeAuthority: { value: input.stakeAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.splitStake),\n getAccountMeta(accounts.stakeAuthority),\n ],\n programAddress,\n data: getSplitInstructionDataEncoder().encode(\n args as SplitInstructionDataArgs\n ),\n } as SplitInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountSplitStake,\n TAccountStakeAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedSplitInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account to be split */\n stake: TAccountMetas[0];\n /** Uninitialized stake account */\n splitStake: TAccountMetas[1];\n /** Stake authority */\n stakeAuthority: TAccountMetas[2];\n };\n data: SplitInstructionData;\n};\n\nexport function parseSplitInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedSplitInstruction {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n splitStake: getNextAccount(),\n stakeAuthority: getNextAccount(),\n },\n data: getSplitInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { STAKE_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const WITHDRAW_DISCRIMINATOR = 4;\n\nexport function getWithdrawDiscriminatorBytes() {\n return getU32Encoder().encode(WITHDRAW_DISCRIMINATOR);\n}\n\nexport type WithdrawInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountStake extends string | IAccountMeta = string,\n TAccountRecipient extends string | IAccountMeta = string,\n TAccountClockSysvar extends\n | string\n | IAccountMeta = 'SysvarC1ock11111111111111111111111111111111',\n TAccountStakeHistory extends string | IAccountMeta = string,\n TAccountWithdrawAuthority extends string | IAccountMeta = string,\n TAccountLockupAuthority extends\n | string\n | IAccountMeta\n | undefined = undefined,\n TRemainingAccounts extends readonly IAccountMeta[] = [],\n> = IInstruction &\n IInstructionWithData &\n IInstructionWithAccounts<\n [\n TAccountStake extends string\n ? WritableAccount\n : TAccountStake,\n TAccountRecipient extends string\n ? WritableAccount\n : TAccountRecipient,\n TAccountClockSysvar extends string\n ? ReadonlyAccount\n : TAccountClockSysvar,\n TAccountStakeHistory extends string\n ? ReadonlyAccount\n : TAccountStakeHistory,\n TAccountWithdrawAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountWithdrawAuthority,\n ...(TAccountLockupAuthority extends undefined\n ? []\n : [\n TAccountLockupAuthority extends string\n ? ReadonlySignerAccount &\n IAccountSignerMeta\n : TAccountLockupAuthority,\n ]),\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawInstructionData = { discriminator: number; args: bigint };\n\nexport type WithdrawInstructionDataArgs = { args: number | bigint };\n\nexport function getWithdrawInstructionDataEncoder(): Encoder {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', getU32Encoder()],\n ['args', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: WITHDRAW_DISCRIMINATOR })\n );\n}\n\nexport function getWithdrawInstructionDataDecoder(): Decoder {\n return getStructDecoder([\n ['discriminator', getU32Decoder()],\n ['args', getU64Decoder()],\n ]);\n}\n\nexport function getWithdrawInstructionDataCodec(): Codec<\n WithdrawInstructionDataArgs,\n WithdrawInstructionData\n> {\n return combineCodec(\n getWithdrawInstructionDataEncoder(),\n getWithdrawInstructionDataDecoder()\n );\n}\n\nexport type WithdrawInput<\n TAccountStake extends string = string,\n TAccountRecipient extends string = string,\n TAccountClockSysvar extends string = string,\n TAccountStakeHistory extends string = string,\n TAccountWithdrawAuthority extends string = string,\n TAccountLockupAuthority extends string = string,\n> = {\n /** Stake account from which to withdraw */\n stake: Address;\n /** Recipient account */\n recipient: Address;\n /** Clock sysvar */\n clockSysvar?: Address;\n /** Stake history sysvar */\n stakeHistory: Address;\n /** Withdraw authority */\n withdrawAuthority: TransactionSigner;\n /** Lockup authority */\n lockupAuthority?: TransactionSigner;\n args: WithdrawInstructionDataArgs['args'];\n};\n\nexport function getWithdrawInstruction<\n TAccountStake extends string,\n TAccountRecipient extends string,\n TAccountClockSysvar extends string,\n TAccountStakeHistory extends string,\n TAccountWithdrawAuthority extends string,\n TAccountLockupAuthority extends string,\n TProgramAddress extends Address = typeof STAKE_PROGRAM_ADDRESS,\n>(\n input: WithdrawInput<\n TAccountStake,\n TAccountRecipient,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountWithdrawAuthority,\n TAccountLockupAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountRecipient,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountWithdrawAuthority,\n TAccountLockupAuthority\n> {\n // Program address.\n const programAddress = config?.programAddress ?? STAKE_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stake: { value: input.stake ?? null, isWritable: true },\n recipient: { value: input.recipient ?? null, isWritable: true },\n clockSysvar: { value: input.clockSysvar ?? null, isWritable: false },\n stakeHistory: { value: input.stakeHistory ?? null, isWritable: false },\n withdrawAuthority: {\n value: input.withdrawAuthority ?? null,\n isWritable: false,\n },\n lockupAuthority: {\n value: input.lockupAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.clockSysvar.value) {\n accounts.clockSysvar.value =\n 'SysvarC1ock11111111111111111111111111111111' as Address<'SysvarC1ock11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stake),\n getAccountMeta(accounts.recipient),\n getAccountMeta(accounts.clockSysvar),\n getAccountMeta(accounts.stakeHistory),\n getAccountMeta(accounts.withdrawAuthority),\n getAccountMeta(accounts.lockupAuthority),\n ].filter((x: T | undefined): x is T => x !== undefined),\n programAddress,\n data: getWithdrawInstructionDataEncoder().encode(\n args as WithdrawInstructionDataArgs\n ),\n } as WithdrawInstruction<\n TProgramAddress,\n TAccountStake,\n TAccountRecipient,\n TAccountClockSysvar,\n TAccountStakeHistory,\n TAccountWithdrawAuthority,\n TAccountLockupAuthority\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawInstruction<\n TProgram extends string = typeof STAKE_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address;\n accounts: {\n /** Stake account from which to withdraw */\n stake: TAccountMetas[0];\n /** Recipient account */\n recipient: TAccountMetas[1];\n /** Clock sysvar */\n clockSysvar: TAccountMetas[2];\n /** Stake history sysvar */\n stakeHistory: TAccountMetas[3];\n /** Withdraw authority */\n withdrawAuthority: TAccountMetas[4];\n /** Lockup authority */\n lockupAuthority?: TAccountMetas[5] | undefined;\n };\n data: WithdrawInstructionData;\n};\n\nexport function parseWithdrawInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction &\n IInstructionWithAccounts &\n IInstructionWithData\n): ParsedWithdrawInstruction {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n let optionalAccountsRemaining = instruction.accounts.length - 5;\n const getNextOptionalAccount = () => {\n if (optionalAccountsRemaining === 0) return undefined;\n optionalAccountsRemaining -= 1;\n return getNextAccount();\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stake: getNextAccount(),\n recipient: getNextAccount(),\n clockSysvar: getNextAccount(),\n stakeHistory: getNextAccount(),\n withdrawAuthority: getNextAccount(),\n lockupAuthority: getNextOptionalAccount(),\n },\n data: getWithdrawInstructionDataDecoder().decode(instruction.data),\n };\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StakeState = void 0;\nexports.StakeState = {\n Inactive: 'inactive',\n Activating: 'activating',\n Active: 'active',\n Deactivating: 'deactivating',\n Deactivated: 'deactivated'\n};\n//# sourceMappingURL=solana.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getSolanaStakingData = exports.getDelegations = exports.stakeAccountState = exports.isStake = exports.FILTER_OFFSET = exports.FILTER_DATA_SIZE = exports.STAKE_ACCOUNT_V2_SIZE = void 0;\nconst kit_1 = require(\"@solana/kit\");\nconst stake_1 = require(\"@solana-program/stake\");\nconst solana_1 = require(\"@trezor/blockchain-link-types/lib/solana\");\nexports.STAKE_ACCOUNT_V2_SIZE = 200;\nexports.FILTER_DATA_SIZE = 200n;\nexports.FILTER_OFFSET = 44n;\nconst EVERSTAKE_VOTER_PUBKEYS = ['9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF', 'GkqYQysEGmuL6V2AJoNnWZUz2ZBGWhzQXsJiXm2CLKAN'];\nconst isStake = state => state.__kind === 'Stake';\nexports.isStake = isStake;\nconst stakeAccountState = (account, currentEpoch) => {\n const {\n state\n } = account;\n if (!(0, exports.isStake)(state)) {\n return solana_1.StakeState.Inactive;\n }\n const {\n activationEpoch,\n deactivationEpoch\n } = state.fields[1].delegation;\n if (activationEpoch > currentEpoch) {\n return solana_1.StakeState.Inactive;\n }\n if (activationEpoch === currentEpoch) {\n if (deactivationEpoch === activationEpoch) return solana_1.StakeState.Inactive;\n return solana_1.StakeState.Activating;\n }\n if (deactivationEpoch > currentEpoch) return solana_1.StakeState.Active;\n if (deactivationEpoch === currentEpoch) return solana_1.StakeState.Deactivating;\n return solana_1.StakeState.Deactivated;\n};\nexports.stakeAccountState = stakeAccountState;\nconst getDelegations = async (rpc, descriptor) => {\n try {\n const accounts = await rpc.getProgramAccounts(stake_1.STAKE_PROGRAM_ADDRESS, {\n encoding: 'base64',\n filters: [{\n dataSize: exports.FILTER_DATA_SIZE\n }, {\n memcmp: {\n bytes: descriptor,\n encoding: 'base58',\n offset: exports.FILTER_OFFSET\n }\n }]\n }).send();\n return accounts.map(account => {\n const parsedAccount = (0, kit_1.parseBase64RpcAccount)(account.pubkey, account.account);\n return (0, stake_1.decodeStakeStateAccount)(parsedAccount);\n });\n } catch {\n throw new Error('Failed to fetch delegations');\n }\n};\nexports.getDelegations = getDelegations;\nconst getSolanaStakingData = async (rpc, descriptor, epoch) => {\n const stakingAccounts = await (0, exports.getDelegations)(rpc, descriptor);\n return stakingAccounts.map(account => {\n const stakeAccount = account?.data;\n if (!stakeAccount) return;\n const stakeState = (0, exports.stakeAccountState)(stakeAccount, BigInt(epoch));\n const {\n state\n } = account?.data ?? {};\n if (!(0, exports.isStake)(state)) return;\n if (state && 'fields' in state) {\n const {\n fields\n } = state;\n const voterPubkey = fields[1]?.delegation?.voterPubkey;\n if (!EVERSTAKE_VOTER_PUBKEYS.includes(voterPubkey)) return;\n return {\n rentExemptReserve: fields[0]?.rentExemptReserve.toString(),\n stake: fields[1]?.delegation?.stake.toString(),\n status: stakeState\n };\n }\n }).filter(account => account !== undefined);\n};\nexports.getSolanaStakingData = getSolanaStakingData;\n//# sourceMappingURL=stakingAccounts.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Solana;\nconst kit_1 = require(\"@solana/kit\");\nconst token_1 = require(\"@solana-program/token\");\nconst token_2022_1 = require(\"@solana-program/token-2022\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst blockchain_link_utils_1 = require(\"@trezor/blockchain-link-utils\");\nconst solana_1 = require(\"@trezor/blockchain-link-utils/lib/solana\");\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst baseWorker_1 = require(\"../baseWorker\");\nconst fee_1 = require(\"./utils/fee\");\nconst getThrottledTransport_1 = require(\"./utils/getThrottledTransport\");\nconst stakingAccounts_1 = require(\"./utils/stakingAccounts\");\nconst THROTTLE_OPTIONS = {\n maxRps: 4,\n interval: 100\n};\nfunction nonNullable(value) {\n return value !== null && value !== undefined;\n}\nconst getAllSignatures = async (api, descriptor, fullHistory = false) => {\n let lastSignature;\n let keepFetching = true;\n let allSignatures = [];\n const defaultValueLimit = 100;\n while (keepFetching) {\n const signaturesInfos = await api.rpc.getSignaturesForAddress((0, kit_1.address)(descriptor), {\n before: lastSignature?.signature,\n limit: defaultValueLimit\n }).send();\n const signatures = signaturesInfos.map(info => ({\n signature: info.signature,\n slot: info.slot\n }));\n lastSignature = signatures[signatures.length - 1];\n keepFetching = signatures.length === defaultValueLimit && fullHistory;\n allSignatures = [...allSignatures, ...signatures];\n }\n return allSignatures;\n};\nconst fetchTransactionPage = async (api, signatures) => (await Promise.all(signatures.map(signature => api.rpc.getTransaction(signature, {\n encoding: 'jsonParsed',\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n}).send()))).filter(nonNullable);\nconst isValidTransaction = tx => !!(tx && tx.meta && tx.transaction && tx.blockTime);\nconst pushTransaction = async request => {\n const rawTx = request.payload.hex.startsWith('0x') ? request.payload.hex.slice(2) : request.payload.hex;\n const api = await request.connect();\n const txByteArray = (0, kit_1.getBase16Encoder)().encode(rawTx);\n const transaction = (0, kit_1.getTransactionDecoder)().decode(txByteArray);\n (0, kit_1.assertTransactionIsFullySigned)(transaction);\n const compiledMessage = (0, kit_1.getCompiledTransactionMessageDecoder)().decode(transaction.messageBytes);\n const message = await (0, kit_1.decompileTransactionMessageFetchingLookupTables)(compiledMessage, api.rpc);\n if ((0, kit_1.isDurableNonceTransaction)(message)) {\n throw new Error('Unimplemented: Confirming durable nonce transactions');\n }\n let transactionWithBlockhashLifetime = transaction;\n if (message.lifetimeConstraint === undefined) {\n const {\n value: {\n blockhash,\n lastValidBlockHeight\n }\n } = await api.rpc.getLatestBlockhash({\n commitment: 'confirmed'\n }).send();\n transactionWithBlockhashLifetime = {\n ...transactionWithBlockhashLifetime,\n lifetimeConstraint: {\n blockhash,\n lastValidBlockHeight\n }\n };\n } else {\n transactionWithBlockhashLifetime = {\n ...transactionWithBlockhashLifetime,\n lifetimeConstraint: message.lifetimeConstraint\n };\n }\n try {\n const signature = (0, kit_1.getSignatureFromTransaction)(transaction);\n const sendAndConfirmTransaction = (0, kit_1.sendAndConfirmTransactionFactory)(api);\n await sendAndConfirmTransaction(transactionWithBlockhashLifetime, {\n commitment: 'confirmed',\n skipPreflight: false\n });\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload: signature\n };\n } catch (error) {\n if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED)) {\n throw new Error('Please make sure that you submit the transaction within 1 minute after signing.');\n }\n if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT) || (0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED) || (0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR)) {\n throw new Error('Solana backend connection failure. The backend might be inaccessible or the connection is unstable.');\n }\n if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__JSON_RPC__SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE) && (0, kit_1.isSolanaError)(error.cause, kit_1.SOLANA_ERROR__TRANSACTION_ERROR__BLOCKHASH_NOT_FOUND)) {\n throw new Error('The transaction has expired because too much time passed between signing and sending. Please try again.');\n }\n if ((0, kit_1.isSolanaError)(error)) {\n throw new Error(`Solana error code: ${error.context.__code}. Please try again or contact support.`);\n }\n throw error;\n }\n};\nconst getAccountInfo = async request => {\n const {\n payload\n } = request;\n const {\n details = 'basic'\n } = payload;\n const api = await request.connect();\n const publicKey = (0, kit_1.address)(payload.descriptor);\n const {\n value: accountInfo\n } = await api.rpc.getAccountInfo(publicKey, {\n encoding: 'base64'\n }).send();\n const tokenMetadata = await request.getTokenMetadata();\n const getTokenAccountsForProgram = programPublicKey => api.rpc.getTokenAccountsByOwner(publicKey, {\n programId: (0, kit_1.address)(programPublicKey)\n }, {\n encoding: 'jsonParsed'\n }).send();\n const tokenAccounts = (await Promise.all(Object.values(solana_1.tokenProgramsInfo).map(programInfo => getTokenAccountsForProgram(programInfo.publicKey)))).map(res => res.value).flat();\n const recognisedWithBalance = tokenAccounts.filter(acc => {\n const info = acc.account.data.parsed?.info;\n const mint = info?.mint;\n const amount = info?.tokenAmount?.amount;\n return mint && tokenMetadata[mint] && amount !== '0';\n });\n const recognizedAccountsPubkeys = recognisedWithBalance.map(a => a.pubkey);\n const getAllTxIds = async tokenAccountPubkeys => {\n const sortedTokenAccountPubkeys = [...tokenAccountPubkeys].sort();\n const allAccounts = [payload.descriptor, ...sortedTokenAccountPubkeys];\n const allTxIds = details === 'txs' || details === 'txids' ? Array.from(new Set((await Promise.all(allAccounts.map(account => getAllSignatures(api, account)))).flat().sort((a, b) => Number(b.slot - a.slot)).map(it => it.signature))) : [];\n return allTxIds;\n };\n const getEpoch = async () => {\n const cachedEpoch = await request.state.cache.get('epoch');\n if (cachedEpoch) {\n return cachedEpoch;\n }\n const deferred = (0, utils_1.createDeferred)();\n request.state.cache.set('epoch', deferred.promise, 3_600_000);\n const {\n epoch\n } = await api.rpc.getEpochInfo().send();\n deferred.resolve(Number(epoch));\n return deferred.promise;\n };\n let tokens = [];\n if (tokenAccounts.length > 0) {\n tokens = (0, solana_1.transformTokenInfo)(tokenAccounts, tokenMetadata);\n }\n if (details === 'txids') {\n const txids = await getAllTxIds(recognizedAccountsPubkeys);\n const solEpoch = await getEpoch();\n const account = {\n descriptor: payload.descriptor,\n balance: '0',\n availableBalance: '0',\n empty: txids.length === 0,\n history: {\n total: txids.length,\n unconfirmed: 0,\n txids\n },\n tokens,\n misc: {\n solEpoch\n }\n };\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n }\n const getATAOwnerAddress = async address => {\n const {\n value: accountInfo\n } = await api.rpc.getAccountInfo(address, {\n encoding: 'jsonParsed'\n }).send();\n if (!accountInfo?.data || 'parsed' in accountInfo.data === false) {\n return address;\n }\n return accountInfo.data.parsed?.info?.owner ?? address;\n };\n const getTransactionPage = async (txIds, tokenAccountsInfos) => {\n if (txIds.length === 0) {\n return [];\n }\n const transactionsPage = await fetchTransactionPage(api, txIds);\n const page = transactionsPage.filter(isValidTransaction).map(tx => blockchain_link_utils_1.solanaUtils.transformTransaction(tx, payload.descriptor, tokenAccountsInfos, tokenMetadata)).filter(tx => !!tx);\n const transactions = await Promise.all(page.map(async tx => {\n const tokens = await Promise.all(tx.tokens.map(async transfer => {\n const from = transfer.from !== payload.descriptor ? await getATAOwnerAddress((0, kit_1.address)(transfer.from)) : transfer.from;\n const to = transfer.to !== payload.descriptor ? await getATAOwnerAddress((0, kit_1.address)(transfer.to)) : transfer.to;\n return {\n ...transfer,\n from,\n to\n };\n }));\n return {\n ...tx,\n tokens\n };\n }));\n return transactions;\n };\n const allTxIds = await getAllTxIds(recognizedAccountsPubkeys);\n const pageNumber = payload.page ? payload.page - 1 : 0;\n const pageSize = payload.pageSize || 5;\n const pageStartIndex = pageNumber * pageSize;\n const pageEndIndex = Math.min(pageStartIndex + pageSize, allTxIds.length);\n const txIdPage = allTxIds.slice(pageStartIndex, pageEndIndex);\n const tokenAccountsInfos = tokenAccounts.map(a => ({\n address: a.pubkey,\n mint: a.account.data.parsed?.info?.mint,\n decimals: a.account.data.parsed?.info?.tokenAmount?.decimals\n }));\n const transactionPage = details === 'txs' ? await getTransactionPage(txIdPage, tokenAccountsInfos) : undefined;\n const {\n value: balance\n } = await api.rpc.getBalance(publicKey).send();\n let misc;\n if (!['basic', 'tokens'].includes(details)) {\n const solEpoch = await getEpoch();\n const solStakingAccounts = await (0, stakingAccounts_1.getSolanaStakingData)(api?.rpc, publicKey, solEpoch);\n misc = {\n solStakingAccounts,\n solEpoch\n };\n if (accountInfo) {\n const [accountDataEncoded] = accountInfo.data;\n const accountDataBytes = (0, kit_1.getBase64Encoder)().encode(accountDataEncoded);\n const accountDataLength = BigInt(accountDataBytes.byteLength);\n const rent = await api.rpc.getMinimumBalanceForRentExemption(accountDataLength).send();\n misc.rent = Number(rent);\n }\n }\n const isAccountEmpty = !(allTxIds.length || balance || tokens.length);\n const account = {\n descriptor: payload.descriptor,\n balance: balance.toString(),\n availableBalance: balance.toString(),\n empty: isAccountEmpty,\n history: {\n total: allTxIds.length,\n unconfirmed: 0,\n transactions: transactionPage,\n txids: txIdPage\n },\n page: transactionPage ? {\n total: allTxIds.length,\n index: pageNumber,\n size: transactionPage.length\n } : undefined,\n tokens,\n misc: {\n ...misc,\n owner: accountInfo?.owner\n }\n };\n const workerAccount = request.state.getAccount(payload.descriptor);\n if (workerAccount) {\n request.state.addAccounts([{\n ...workerAccount,\n tokens\n }]);\n }\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n};\nconst getInfo = async (request, isTestnet) => {\n const api = await request.connect();\n const {\n value: {\n blockhash: blockHash,\n lastValidBlockHeight: blockHeight\n }\n } = await api.rpc.getLatestBlockhash({\n commitment: 'confirmed'\n }).send();\n const serverInfo = {\n testnet: isTestnet,\n blockHeight: Number(blockHeight),\n blockHash,\n shortcut: isTestnet ? 'dsol' : 'sol',\n network: isTestnet ? 'dsol' : 'sol',\n url: api.clusterUrl,\n name: 'Solana',\n version: '1',\n decimals: 9\n };\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: {\n ...serverInfo\n }\n };\n};\nconst getAccountProgramSize = programName => ({\n staking: stakingAccounts_1.STAKE_ACCOUNT_V2_SIZE,\n 'spl-token': (0, token_1.getTokenSize)(),\n 'spl-token-2022': (0, token_2022_1.getTokenSize)()\n})[programName];\nconst estimateFee = async request => {\n const api = await request.connect();\n const {\n data: messageHex,\n newAccountProgramName\n } = request.payload.specific ?? {};\n if (messageHex == null) {\n throw new Error('Could not estimate fee for transaction.');\n }\n const transaction = (0, kit_1.pipe)(messageHex, (0, kit_1.getBase16Encoder)().encode, (0, kit_1.getTransactionDecoder)().decode);\n const message = (0, kit_1.pipe)(transaction.messageBytes, (0, kit_1.getCompiledTransactionMessageDecoder)().decode);\n const decompiledTransactionMessage = await (0, kit_1.decompileTransactionMessageFetchingLookupTables)(message, api.rpc);\n const priorityFee = await (0, fee_1.getPriorityFee)(api.rpc, decompiledTransactionMessage, message, transaction.signatures);\n const baseFee = await (0, fee_1.getBaseFee)(api.rpc, message);\n const accountCreationFee = newAccountProgramName ? await api.rpc.getMinimumBalanceForRentExemption(BigInt(getAccountProgramSize(newAccountProgramName))).send() : BigInt(0);\n const payload = [{\n feePerTx: new utils_1.BigNumber(baseFee.toString()).plus(priorityFee.fee).plus(accountCreationFee.toString()).toString(10),\n feePerUnit: priorityFee.computeUnitPrice,\n feeLimit: priorityFee.computeUnitLimit,\n feePayer: decompiledTransactionMessage.feePayer.address\n }];\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload\n };\n};\nconst BLOCK_SUBSCRIBE_INTERVAL_MS = 50000;\nconst subscribeBlock = async ({\n state,\n connect,\n post\n}) => {\n if (state.getSubscription('block')) return {\n subscribed: true\n };\n const api = await connect();\n const fetchBlock = async () => {\n const {\n value: {\n blockhash: blockHash,\n lastValidBlockHeight: blockHeight\n }\n } = await api.rpc.getLatestBlockhash({\n commitment: 'confirmed'\n }).send();\n if (blockHeight) {\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight: Number(blockHeight),\n blockHash\n }\n }\n });\n }\n };\n fetchBlock();\n const interval = setInterval(fetchBlock, BLOCK_SUBSCRIBE_INTERVAL_MS);\n state.addSubscription('block', interval);\n return {\n subscribed: true\n };\n};\nconst unsubscribeBlock = ({\n state\n}) => {\n if (!state.getSubscription('block')) return;\n const interval = state.getSubscription('block');\n clearInterval(interval);\n state.removeSubscription('block');\n};\nconst extractTokenAccounts = (accounts, tokenMetadata) => accounts.flatMap(account => account.tokens?.flatMap(token => token.accounts?.filter(tokenAccount => tokenAccount.balance !== '0' && tokenMetadata[token.contract]).map(tokenAccount => ({\n descriptor: tokenAccount.publicKey\n})) || []) || []);\nconst findTokenAccountOwner = (accounts, accountDescriptor) => accounts.find(account => account.tokens?.find(token => token.accounts?.find(tokenAccount => tokenAccount.publicKey === accountDescriptor)));\nlet NEXT_ACCOUNT_SUBSCRIPTION_ID = 0;\nconst ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS = new Map();\nfunction abortSubscription(id) {\n const abortController = ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.get(id);\n ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.delete(id);\n abortController?.abort();\n}\nconst handleAccountNotification = async (context, accountNotifications, account) => {\n const {\n connect,\n state,\n post,\n getTokenMetadata\n } = context;\n try {\n for await (const _ of accountNotifications) {\n const api = await connect();\n const [lastSignatureResponse] = await api.rpc.getSignaturesForAddress((0, kit_1.address)(account.descriptor), {\n limit: 1\n }).send();\n const lastSignature = lastSignatureResponse?.signature;\n if (!lastSignature) return;\n const lastTx = await api.rpc.getTransaction(lastSignature, {\n encoding: 'jsonParsed',\n maxSupportedTransactionVersion: 0,\n commitment: 'confirmed'\n }).send();\n if (!lastTx || !isValidTransaction(lastTx)) {\n return;\n }\n const tokenMetadata = await getTokenMetadata();\n const tx = blockchain_link_utils_1.solanaUtils.transformTransaction(lastTx, account.descriptor, [], tokenMetadata);\n const descriptor = findTokenAccountOwner(state.getAccounts(), account.descriptor)?.descriptor || account.descriptor;\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'notification',\n payload: {\n descriptor,\n tx\n }\n }\n });\n }\n } catch (error) {\n if ((0, kit_1.isSolanaError)(error, kit_1.SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED)) {\n if (account.subscriptionId) abortSubscription(account.subscriptionId);\n state.removeAccounts([account]);\n context.onNetworkDisconnect();\n }\n }\n};\nconst subscribeAccounts = async (context, accounts) => {\n const {\n connect,\n state\n } = context;\n const api = await connect();\n const subscribedAccounts = state.getAccounts();\n const tokenMetadata = await context.getTokenMetadata();\n const tokenAccounts = extractTokenAccounts(accounts, tokenMetadata);\n const newAccounts = [...accounts, ...tokenAccounts].filter(account => !subscribedAccounts.some(subscribedAccount => account.descriptor === subscribedAccount.descriptor));\n await Promise.all(newAccounts.map(async a => {\n const abortController = new AbortController();\n const accountNotifications = await api.rpcSubscriptions.accountNotifications((0, kit_1.address)(a.descriptor), {\n commitment: 'confirmed'\n }).subscribe({\n abortSignal: abortController.signal\n });\n const subscriptionId = NEXT_ACCOUNT_SUBSCRIPTION_ID++;\n ACCOUNT_SUBSCRIPTION_ABORT_CONTROLLERS.set(subscriptionId, abortController);\n const account = {\n ...a,\n subscriptionId\n };\n state.addAccounts([account]);\n handleAccountNotification(context, accountNotifications, account);\n }));\n return {\n subscribed: newAccounts.length > 0\n };\n};\nconst unsubscribeAccounts = ({\n state\n}, accounts = []) => {\n const subscribedAccounts = state.getAccounts();\n accounts.forEach(a => {\n if (a.subscriptionId != null) {\n abortSubscription(a.subscriptionId);\n state.removeAccounts([a]);\n }\n a.tokens?.forEach(t => {\n t.accounts?.forEach(ta => {\n const tokenAccount = subscribedAccounts.find(sa => sa.descriptor === ta.publicKey);\n if (tokenAccount?.subscriptionId != null) {\n abortSubscription(tokenAccount.subscriptionId);\n state.removeAccounts([tokenAccount]);\n }\n });\n });\n });\n};\nconst subscribe = async request => {\n let response;\n switch (request.payload.type) {\n case 'block':\n response = await subscribeBlock(request);\n break;\n case 'accounts':\n response = await subscribeAccounts(request, request.payload.accounts);\n break;\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: response\n };\n};\nconst unsubscribe = request => {\n switch (request.payload.type) {\n case 'block':\n unsubscribeBlock(request);\n break;\n case 'accounts':\n {\n unsubscribeAccounts(request, request.payload.accounts);\n break;\n }\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: {\n subscribed: request.state.getAccounts().length > 0\n }\n };\n};\nconst onRequest = (request, isTestnet) => {\n switch (request.type) {\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return getAccountInfo(request);\n case constants_1.MESSAGES.GET_INFO:\n return getInfo(request, isTestnet);\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return pushTransaction(request);\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return estimateFee(request);\n case constants_1.MESSAGES.SUBSCRIBE:\n return subscribe(request);\n case constants_1.MESSAGES.UNSUBSCRIBE:\n return unsubscribe(request);\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass SolanaWorker extends baseWorker_1.BaseWorker {\n isConnected(api) {\n return !!api;\n }\n lazyTokens = (0, utils_1.createLazy)(() => blockchain_link_utils_1.solanaUtils.getTokenMetadata());\n isTestnet = false;\n async tryConnect(url) {\n const clusterUrl = (0, kit_1.mainnet)(url);\n const transport = (0, kit_1.createDefaultRpcTransport)({\n url: clusterUrl,\n headers: {\n 'User-Agent': `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`\n }\n });\n const throttledTransport = (0, getThrottledTransport_1.getThrottledTransport)(transport, THROTTLE_OPTIONS);\n const throttledRpc = (0, kit_1.createSolanaRpcFromTransport)(throttledTransport);\n const api = {\n clusterUrl,\n rpc: throttledRpc,\n rpcSubscriptions: (0, kit_1.createSolanaRpcSubscriptions)((0, kit_1.mainnet)(url.replace('http', 'ws')), {\n intervalMs: 60 * 60 * 1000\n })\n };\n this.isTestnet = (await api.rpc.getGenesisHash().send()) !== '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d';\n this.post({\n id: -1,\n type: constants_1.RESPONSES.CONNECTED\n });\n return api;\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n onNetworkDisconnect: () => {\n if (this.api) {\n this.post({\n id: -1,\n type: constants_1.RESPONSES.DISCONNECTED,\n payload: true\n });\n }\n this.disconnect();\n },\n post: data => this.post(data),\n state: this.state,\n getTokenMetadata: this.lazyTokens.getOrInit\n };\n const response = await onRequest(request, this.isTestnet);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, error);\n }\n }\n disconnect() {\n if (!this.api) {\n return;\n }\n this.state.getAccounts().forEach(a => {\n if (a.subscriptionId != null) {\n abortSubscription(a.subscriptionId);\n }\n });\n if (this.state.getSubscription('block')) {\n const interval = this.state.getSubscription('block');\n clearInterval(interval);\n this.state.removeSubscription('block');\n }\n this.api = undefined;\n }\n}\nfunction Solana() {\n return new SolanaWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new SolanaWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NetworkError = void 0;\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nvar NetworkError = exports.NetworkError = function (_Error) {\n function NetworkError(message, response) {\n var _this;\n _classCallCheck(this, NetworkError);\n var trueProto = (this instanceof NetworkError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, NetworkError, [message]);\n _this.__proto__ = trueProto;\n _this.constructor = NetworkError;\n _this.response = response;\n return _this;\n }\n _inherits(NetworkError, _Error);\n return _createClass(NetworkError, [{\n key: \"getResponse\",\n value: function getResponse() {\n return this.response;\n }\n }]);\n}(_wrapNativeSuper(Error));", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NotFoundError = void 0;\nvar _network = require(\"./network\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar NotFoundError = exports.NotFoundError = function (_NetworkError) {\n function NotFoundError(message, response) {\n var _this;\n _classCallCheck(this, NotFoundError);\n var trueProto = (this instanceof NotFoundError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, NotFoundError, [message, response]);\n _this.__proto__ = trueProto;\n _this.constructor = NotFoundError;\n _this.name = \"NotFoundError\";\n return _this;\n }\n _inherits(NotFoundError, _NetworkError);\n return _createClass(NotFoundError);\n}(_network.NetworkError);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BadRequestError = void 0;\nvar _network = require(\"./network\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar BadRequestError = exports.BadRequestError = function (_NetworkError) {\n function BadRequestError(message, response) {\n var _this;\n _classCallCheck(this, BadRequestError);\n var trueProto = (this instanceof BadRequestError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, BadRequestError, [message, response]);\n _this.__proto__ = trueProto;\n _this.constructor = BadRequestError;\n _this.name = \"BadRequestError\";\n return _this;\n }\n _inherits(BadRequestError, _NetworkError);\n return _createClass(BadRequestError);\n}(_network.NetworkError);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BadResponseError = void 0;\nvar _network = require(\"./network\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar BadResponseError = exports.BadResponseError = function (_NetworkError) {\n function BadResponseError(message, response) {\n var _this;\n _classCallCheck(this, BadResponseError);\n var trueProto = (this instanceof BadResponseError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, BadResponseError, [message, response]);\n _this.__proto__ = trueProto;\n _this.constructor = BadResponseError;\n _this.name = \"BadResponseError\";\n return _this;\n }\n _inherits(BadResponseError, _NetworkError);\n return _createClass(BadResponseError);\n}(_network.NetworkError);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AccountRequiresMemoError = void 0;\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nvar AccountRequiresMemoError = exports.AccountRequiresMemoError = function (_Error) {\n function AccountRequiresMemoError(message, accountId, operationIndex) {\n var _this;\n _classCallCheck(this, AccountRequiresMemoError);\n var trueProto = (this instanceof AccountRequiresMemoError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, AccountRequiresMemoError, [message]);\n _this.__proto__ = trueProto;\n _this.constructor = AccountRequiresMemoError;\n _this.name = \"AccountRequiresMemoError\";\n _this.accountId = accountId;\n _this.operationIndex = operationIndex;\n return _this;\n }\n _inherits(AccountRequiresMemoError, _Error);\n return _createClass(AccountRequiresMemoError);\n}(_wrapNativeSuper(Error));", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _network = require(\"./network\");\nObject.keys(_network).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _network[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _network[key];\n }\n });\n});\nvar _not_found = require(\"./not_found\");\nObject.keys(_not_found).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _not_found[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _not_found[key];\n }\n });\n});\nvar _bad_request = require(\"./bad_request\");\nObject.keys(_bad_request).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _bad_request[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bad_request[key];\n }\n });\n});\nvar _bad_response = require(\"./bad_response\");\nObject.keys(_bad_response).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _bad_response[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _bad_response[key];\n }\n });\n});\nvar _account_requires_memo = require(\"./account_requires_memo\");\nObject.keys(_account_requires_memo).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _account_requires_memo[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _account_requires_memo[key];\n }\n });\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Config = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar defaultConfig = {\n allowHttp: false,\n timeout: 0\n};\nvar config = _objectSpread({}, defaultConfig);\nvar Config = exports.Config = function () {\n function Config() {\n _classCallCheck(this, Config);\n }\n return _createClass(Config, null, [{\n key: \"setAllowHttp\",\n value: function setAllowHttp(value) {\n config.allowHttp = value;\n }\n }, {\n key: \"setTimeout\",\n value: function setTimeout(value) {\n config.timeout = value;\n }\n }, {\n key: \"isAllowHttp\",\n value: function isAllowHttp() {\n return config.allowHttp;\n }\n }, {\n key: \"getTimeout\",\n value: function getTimeout() {\n return config.timeout;\n }\n }, {\n key: \"setDefault\",\n value: function setDefault() {\n config = _objectSpread({}, defaultConfig);\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Utils = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar Utils = exports.Utils = function () {\n function Utils() {\n _classCallCheck(this, Utils);\n }\n return _createClass(Utils, null, [{\n key: \"validateTimebounds\",\n value: function validateTimebounds(transaction) {\n var gracePeriod = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (!transaction.timeBounds) {\n return false;\n }\n var now = Math.floor(Date.now() / 1000);\n var _transaction$timeBoun = transaction.timeBounds,\n minTime = _transaction$timeBoun.minTime,\n maxTime = _transaction$timeBoun.maxTime;\n return now >= Number.parseInt(minTime, 10) - gracePeriod && now <= Number.parseInt(maxTime, 10) + gracePeriod;\n }\n }, {\n key: \"sleep\",\n value: function sleep(ms) {\n return new Promise(function (resolve) {\n return setTimeout(resolve, ms);\n });\n }\n }]);\n}();", "module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function() { return nodes },\n peg$c2 = peg$FAILED,\n peg$c3 = \"#\",\n peg$c4 = { type: \"literal\", value: \"#\", description: \"\\\"#\\\"\" },\n peg$c5 = void 0,\n peg$c6 = { type: \"any\", description: \"any character\" },\n peg$c7 = \"[\",\n peg$c8 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c9 = \"]\",\n peg$c10 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c11 = function(name) { addNode(node('ObjectPath', name, line, column)) },\n peg$c12 = function(name) { addNode(node('ArrayPath', name, line, column)) },\n peg$c13 = function(parts, name) { return parts.concat(name) },\n peg$c14 = function(name) { return [name] },\n peg$c15 = function(name) { return name },\n peg$c16 = \".\",\n peg$c17 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c18 = \"=\",\n peg$c19 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c20 = function(key, value) { addNode(node('Assign', value, line, column, key)) },\n peg$c21 = function(chars) { return chars.join('') },\n peg$c22 = function(node) { return node.value },\n peg$c23 = \"\\\"\\\"\\\"\",\n peg$c24 = { type: \"literal\", value: \"\\\"\\\"\\\"\", description: \"\\\"\\\\\\\"\\\\\\\"\\\\\\\"\\\"\" },\n peg$c25 = null,\n peg$c26 = function(chars) { return node('String', chars.join(''), line, column) },\n peg$c27 = \"\\\"\",\n peg$c28 = { type: \"literal\", value: \"\\\"\", description: \"\\\"\\\\\\\"\\\"\" },\n peg$c29 = \"'''\",\n peg$c30 = { type: \"literal\", value: \"'''\", description: \"\\\"'''\\\"\" },\n peg$c31 = \"'\",\n peg$c32 = { type: \"literal\", value: \"'\", description: \"\\\"'\\\"\" },\n peg$c33 = function(char) { return char },\n peg$c34 = function(char) { return char},\n peg$c35 = \"\\\\\",\n peg$c36 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c37 = function() { return '' },\n peg$c38 = \"e\",\n peg$c39 = { type: \"literal\", value: \"e\", description: \"\\\"e\\\"\" },\n peg$c40 = \"E\",\n peg$c41 = { type: \"literal\", value: \"E\", description: \"\\\"E\\\"\" },\n peg$c42 = function(left, right) { return node('Float', parseFloat(left + 'e' + right), line, column) },\n peg$c43 = function(text) { return node('Float', parseFloat(text), line, column) },\n peg$c44 = \"+\",\n peg$c45 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c46 = function(digits) { return digits.join('') },\n peg$c47 = \"-\",\n peg$c48 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c49 = function(digits) { return '-' + digits.join('') },\n peg$c50 = function(text) { return node('Integer', parseInt(text, 10), line, column) },\n peg$c51 = \"true\",\n peg$c52 = { type: \"literal\", value: \"true\", description: \"\\\"true\\\"\" },\n peg$c53 = function() { return node('Boolean', true, line, column) },\n peg$c54 = \"false\",\n peg$c55 = { type: \"literal\", value: \"false\", description: \"\\\"false\\\"\" },\n peg$c56 = function() { return node('Boolean', false, line, column) },\n peg$c57 = function() { return node('Array', [], line, column) },\n peg$c58 = function(value) { return node('Array', value ? [value] : [], line, column) },\n peg$c59 = function(values) { return node('Array', values, line, column) },\n peg$c60 = function(values, value) { return node('Array', values.concat(value), line, column) },\n peg$c61 = function(value) { return value },\n peg$c62 = \",\",\n peg$c63 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c64 = \"{\",\n peg$c65 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c66 = \"}\",\n peg$c67 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c68 = function(values) { return node('InlineTable', values, line, column) },\n peg$c69 = function(key, value) { return node('InlineTableValue', value, line, column, key) },\n peg$c70 = function(digits) { return \".\" + digits },\n peg$c71 = function(date) { return date.join('') },\n peg$c72 = \":\",\n peg$c73 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c74 = function(time) { return time.join('') },\n peg$c75 = \"T\",\n peg$c76 = { type: \"literal\", value: \"T\", description: \"\\\"T\\\"\" },\n peg$c77 = \"Z\",\n peg$c78 = { type: \"literal\", value: \"Z\", description: \"\\\"Z\\\"\" },\n peg$c79 = function(date, time) { return node('Date', new Date(date + \"T\" + time + \"Z\"), line, column) },\n peg$c80 = function(date, time) { return node('Date', new Date(date + \"T\" + time), line, column) },\n peg$c81 = /^[ \\t]/,\n peg$c82 = { type: \"class\", value: \"[ \\\\t]\", description: \"[ \\\\t]\" },\n peg$c83 = \"\\n\",\n peg$c84 = { type: \"literal\", value: \"\\n\", description: \"\\\"\\\\n\\\"\" },\n peg$c85 = \"\\r\",\n peg$c86 = { type: \"literal\", value: \"\\r\", description: \"\\\"\\\\r\\\"\" },\n peg$c87 = /^[0-9a-f]/i,\n peg$c88 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c89 = /^[0-9]/,\n peg$c90 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c91 = \"_\",\n peg$c92 = { type: \"literal\", value: \"_\", description: \"\\\"_\\\"\" },\n peg$c93 = function() { return \"\" },\n peg$c94 = /^[A-Za-z0-9_\\-]/,\n peg$c95 = { type: \"class\", value: \"[A-Za-z0-9_\\\\-]\", description: \"[A-Za-z0-9_\\\\-]\" },\n peg$c96 = function(d) { return d.join('') },\n peg$c97 = \"\\\\\\\"\",\n peg$c98 = { type: \"literal\", value: \"\\\\\\\"\", description: \"\\\"\\\\\\\\\\\\\\\"\\\"\" },\n peg$c99 = function() { return '\"' },\n peg$c100 = \"\\\\\\\\\",\n peg$c101 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c102 = function() { return '\\\\' },\n peg$c103 = \"\\\\b\",\n peg$c104 = { type: \"literal\", value: \"\\\\b\", description: \"\\\"\\\\\\\\b\\\"\" },\n peg$c105 = function() { return '\\b' },\n peg$c106 = \"\\\\t\",\n peg$c107 = { type: \"literal\", value: \"\\\\t\", description: \"\\\"\\\\\\\\t\\\"\" },\n peg$c108 = function() { return '\\t' },\n peg$c109 = \"\\\\n\",\n peg$c110 = { type: \"literal\", value: \"\\\\n\", description: \"\\\"\\\\\\\\n\\\"\" },\n peg$c111 = function() { return '\\n' },\n peg$c112 = \"\\\\f\",\n peg$c113 = { type: \"literal\", value: \"\\\\f\", description: \"\\\"\\\\\\\\f\\\"\" },\n peg$c114 = function() { return '\\f' },\n peg$c115 = \"\\\\r\",\n peg$c116 = { type: \"literal\", value: \"\\\\r\", description: \"\\\"\\\\\\\\r\\\"\" },\n peg$c117 = function() { return '\\r' },\n peg$c118 = \"\\\\U\",\n peg$c119 = { type: \"literal\", value: \"\\\\U\", description: \"\\\"\\\\\\\\U\\\"\" },\n peg$c120 = function(digits) { return convertCodePoint(digits.join('')) },\n peg$c121 = \"\\\\u\",\n peg$c122 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$cache = {},\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 0,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseline();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseline();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1();\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseline() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 1,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexpression();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsecomment();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsecomment();\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseNL();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseNL();\n }\n } else {\n s5 = peg$c2;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n if (s5 !== peg$FAILED) {\n s1 = [s1, s2, s3, s4, s5];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseNL();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseNL();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parseEOF();\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNL();\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseexpression() {\n var s0;\n\n var key = peg$currPos * 49 + 2,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsecomment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepath();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetablearray();\n if (s0 === peg$FAILED) {\n s0 = peg$parseassignment();\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 3,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseNL();\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = peg$c5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseNL();\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = peg$c5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsepath() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 4,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_key();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c9;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetablearray() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n var key = peg$currPos * 49 + 5,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s2 = peg$c7;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsetable_key();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s6 = peg$c9;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s7 = peg$c9;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c12(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetable_key() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 6,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedot_ended_table_key_part();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedot_ended_table_key_part();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetable_key_part();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsetable_key_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c14(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetable_key_part() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 7,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsequoted_key();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedot_ended_table_key_part() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 8,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsequoted_key();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseassignment() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 9,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsekey();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevalue();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c20(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsequoted_key();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevalue();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c20(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsekey() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 10,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseASCII_BASIC();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseASCII_BASIC();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsequoted_key() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 11,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsedouble_quoted_single_line_string();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsesingle_quoted_single_line_string();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsevalue() {\n var s0;\n\n var key = peg$currPos * 49 + 12,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsestring();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedatetime();\n if (s0 === peg$FAILED) {\n s0 = peg$parsefloat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinteger();\n if (s0 === peg$FAILED) {\n s0 = peg$parseboolean();\n if (s0 === peg$FAILED) {\n s0 = peg$parsearray();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinline_table();\n }\n }\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0;\n\n var key = peg$currPos * 49 + 13,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsedouble_quoted_multiline_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedouble_quoted_single_line_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingle_quoted_multiline_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingle_quoted_single_line_string();\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedouble_quoted_multiline_string() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 14,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s1 = peg$c23;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsemultiline_string_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsemultiline_string_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s4 = peg$c23;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedouble_quoted_single_line_string() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 15,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsestring_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsestring_char();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c27;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesingle_quoted_multiline_string() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 16,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s1 = peg$c29;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsemultiline_literal_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsemultiline_literal_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s4 = peg$c29;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesingle_quoted_single_line_string() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 17,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseliteral_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseliteral_char();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c31;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsestring_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 18,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseESCAPED();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c27;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 19,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c31;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_string_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 20,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseESCAPED();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemultiline_string_delim();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s2 = peg$c23;\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c34(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_string_delim() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 21,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c35;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseNLS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseNLS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_literal_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 22,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s2 = peg$c29;\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsefloat() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 23,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsefloat_text();\n if (s1 === peg$FAILED) {\n s1 = peg$parseinteger_text();\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 101) {\n s2 = peg$c38;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 69) {\n s2 = peg$c40;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseinteger_text();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsefloat_text();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c43(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsefloat_text() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 24,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c44;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c25;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseDIGITS();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGITS();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c47;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseDIGITS();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGITS();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c49(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinteger() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 25,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parseinteger_text();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinteger_text() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 26,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c44;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c25;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c5;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c47;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c5;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c49(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseboolean() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 27,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c51) {\n s1 = peg$c51;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 28,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_sep();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_sep();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c57();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsearray_value();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c58(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_value_list();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_value_list();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c59(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_value_list();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_value_list();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsearray_value();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c9;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c60(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_value() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 29,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsearray_sep();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsearray_sep();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalue();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsearray_sep();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsearray_sep();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_value_list() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 30,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsearray_sep();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsearray_sep();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalue();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsearray_sep();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsearray_sep();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c62;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parsearray_sep();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parsearray_sep();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_sep() {\n var s0;\n\n var key = peg$currPos * 49 + 31,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseS();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNL();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecomment();\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinline_table() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 32,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c64;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseinline_table_assignment();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseinline_table_assignment();\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c66;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinline_table_assignment() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 33,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c18;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsevalue();\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parseS();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parseS();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s8 = peg$c62;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s8 !== peg$FAILED) {\n s9 = [];\n s10 = peg$parseS();\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$parseS();\n }\n if (s9 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c69(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c18;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsevalue();\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c69(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesecfragment() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 34,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s1 = peg$c16;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseDIGITS();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c70(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n var key = peg$currPos * 49 + 35,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDIGIT_OR_UNDER();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s6 = peg$c47;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseDIGIT_OR_UNDER();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s9 = peg$c47;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parseDIGIT_OR_UNDER();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseDIGIT_OR_UNDER();\n if (s11 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c71(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetime() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 36,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c72;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseDIGIT_OR_UNDER();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s7 = peg$c72;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseDIGIT_OR_UNDER();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesecfragment();\n if (s10 === peg$FAILED) {\n s10 = peg$c25;\n }\n if (s10 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c74(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetime_with_offset() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16;\n\n var key = peg$currPos * 49 + 37,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c72;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseDIGIT_OR_UNDER();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s7 = peg$c72;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseDIGIT_OR_UNDER();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesecfragment();\n if (s10 === peg$FAILED) {\n s10 = peg$c25;\n }\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s11 = peg$c47;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s11 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s11 = peg$c44;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parseDIGIT_OR_UNDER();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseDIGIT_OR_UNDER();\n if (s13 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s14 = peg$c72;\n peg$currPos++;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s14 !== peg$FAILED) {\n s15 = peg$parseDIGIT_OR_UNDER();\n if (s15 !== peg$FAILED) {\n s16 = peg$parseDIGIT_OR_UNDER();\n if (s16 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c74(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedatetime() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 38,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsedate();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 84) {\n s2 = peg$c75;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetime();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 90) {\n s4 = peg$c77;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c79(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedate();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 84) {\n s2 = peg$c75;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetime_with_offset();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c80(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseS() {\n var s0;\n\n var key = peg$currPos * 49 + 39,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c81.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseNL() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 40,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c83;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 13) {\n s1 = peg$c85;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s2 = peg$c83;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseNLS() {\n var s0;\n\n var key = peg$currPos * 49 + 41,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseNL();\n if (s0 === peg$FAILED) {\n s0 = peg$parseS();\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseEOF() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 42,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = peg$c5;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseHEX() {\n var s0;\n\n var key = peg$currPos * 49 + 43,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c87.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseDIGIT_OR_UNDER() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 44,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 95) {\n s1 = peg$c91;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c93();\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseASCII_BASIC() {\n var s0;\n\n var key = peg$currPos * 49 + 45,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseDIGITS() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 46,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c96(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseESCAPED() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 47,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c97) {\n s1 = peg$c97;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c98); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c99();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c100) {\n s1 = peg$c100;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c101); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c102();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c103) {\n s1 = peg$c103;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c104); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c105();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c106) {\n s1 = peg$c106;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c107); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c108();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c109) {\n s1 = peg$c109;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c110); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c111();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c112) {\n s1 = peg$c112;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c114();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c115) {\n s1 = peg$c115;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c116); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c117();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseESCAPED_UNICODE();\n }\n }\n }\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseESCAPED_UNICODE() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 48,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c118) {\n s1 = peg$c118;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c119); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseHEX();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseHEX();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseHEX();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseHEX();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseHEX();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseHEX();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseHEX();\n if (s9 !== peg$FAILED) {\n s10 = peg$parseHEX();\n if (s10 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6, s7, s8, s9, s10];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c120(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c121) {\n s1 = peg$c121;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c122); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseHEX();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseHEX();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseHEX();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseHEX();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c120(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n\n var nodes = [];\n\n function genError(err, line, col) {\n var ex = new Error(err);\n ex.line = line;\n ex.column = col;\n throw ex;\n }\n\n function addNode(node) {\n nodes.push(node);\n }\n\n function node(type, value, line, column, key) {\n var obj = { type: type, value: value, line: line(), column: column() };\n if (key) obj.key = key;\n return obj;\n }\n\n function convertCodePoint(str, line, col) {\n var num = parseInt(\"0x\" + str);\n\n if (\n !isFinite(num) ||\n Math.floor(num) != num ||\n num < 0 ||\n num > 0x10FFFF ||\n (num > 0xD7FF && num < 0xE000)\n ) {\n genError(\"Invalid Unicode escape code: \" + str, line, col);\n } else {\n return fromCodePoint(num);\n }\n }\n\n function fromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n", "\"use strict\";\nfunction compile(nodes) {\n var assignedPaths = [];\n var valueAssignments = [];\n var currentPath = \"\";\n var data = Object.create(null);\n var context = data;\n var arrayMode = false;\n\n return reduce(nodes);\n\n function reduce(nodes) {\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n switch (node.type) {\n case \"Assign\":\n assign(node);\n break;\n case \"ObjectPath\":\n setPath(node);\n break;\n case \"ArrayPath\":\n addTableArray(node);\n break;\n }\n }\n\n return data;\n }\n\n function genError(err, line, col) {\n var ex = new Error(err);\n ex.line = line;\n ex.column = col;\n throw ex;\n }\n\n function assign(node) {\n var key = node.key;\n var value = node.value;\n var line = node.line;\n var column = node.column;\n\n var fullPath;\n if (currentPath) {\n fullPath = currentPath + \".\" + key;\n } else {\n fullPath = key;\n }\n if (typeof context[key] !== \"undefined\") {\n genError(\"Cannot redefine existing key '\" + fullPath + \"'.\", line, column);\n }\n\n context[key] = reduceValueNode(value);\n\n if (!pathAssigned(fullPath)) {\n assignedPaths.push(fullPath);\n valueAssignments.push(fullPath);\n }\n }\n\n\n function pathAssigned(path) {\n return assignedPaths.indexOf(path) !== -1;\n }\n\n function reduceValueNode(node) {\n if (node.type === \"Array\") {\n return reduceArrayWithTypeChecking(node.value);\n } else if (node.type === \"InlineTable\") {\n return reduceInlineTableNode(node.value);\n } else {\n return node.value;\n }\n }\n\n function reduceInlineTableNode(values) {\n var obj = Object.create(null);\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (val.value.type === \"InlineTable\") {\n obj[val.key] = reduceInlineTableNode(val.value.value);\n } else if (val.type === \"InlineTableValue\") {\n obj[val.key] = reduceValueNode(val.value);\n }\n }\n\n return obj;\n }\n\n function setPath(node) {\n var path = node.value;\n var quotedPath = path.map(quoteDottedString).join(\".\");\n var line = node.line;\n var column = node.column;\n\n if (pathAssigned(quotedPath)) {\n genError(\"Cannot redefine existing key '\" + path + \"'.\", line, column);\n }\n assignedPaths.push(quotedPath);\n context = deepRef(data, path, Object.create(null), line, column);\n currentPath = path;\n }\n\n function addTableArray(node) {\n var path = node.value;\n var quotedPath = path.map(quoteDottedString).join(\".\");\n var line = node.line;\n var column = node.column;\n\n if (!pathAssigned(quotedPath)) {\n assignedPaths.push(quotedPath);\n }\n assignedPaths = assignedPaths.filter(function(p) {\n return p.indexOf(quotedPath) !== 0;\n });\n assignedPaths.push(quotedPath);\n context = deepRef(data, path, [], line, column);\n currentPath = quotedPath;\n\n if (context instanceof Array) {\n var newObj = Object.create(null);\n context.push(newObj);\n context = newObj;\n } else {\n genError(\"Cannot redefine existing key '\" + path + \"'.\", line, column);\n }\n }\n\n // Given a path 'a.b.c', create (as necessary) `start.a`,\n // `start.a.b`, and `start.a.b.c`, assigning `value` to `start.a.b.c`.\n // If `a` or `b` are arrays and have items in them, the last item in the\n // array is used as the context for the next sub-path.\n function deepRef(start, keys, value, line, column) {\n var traversed = [];\n var traversedPath = \"\";\n var path = keys.join(\".\");\n var ctx = start;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n traversed.push(key);\n traversedPath = traversed.join(\".\");\n if (typeof ctx[key] === \"undefined\") {\n if (i === keys.length - 1) {\n ctx[key] = value;\n } else {\n ctx[key] = Object.create(null);\n }\n } else if (i !== keys.length - 1 && valueAssignments.indexOf(traversedPath) > -1) {\n // already a non-object value at key, can't be used as part of a new path\n genError(\"Cannot redefine existing key '\" + traversedPath + \"'.\", line, column);\n }\n\n ctx = ctx[key];\n if (ctx instanceof Array && ctx.length && i < keys.length - 1) {\n ctx = ctx[ctx.length - 1];\n }\n }\n\n return ctx;\n }\n\n function reduceArrayWithTypeChecking(array) {\n // Ensure that all items in the array are of the same type\n var firstType = null;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n if (firstType === null) {\n firstType = node.type;\n } else {\n if (node.type !== firstType) {\n genError(\"Cannot add value of type \" + node.type + \" to array of type \" +\n firstType + \".\", node.line, node.column);\n }\n }\n }\n\n // Recursively reduce array of nodes into array of the nodes' values\n return array.map(reduceValueNode);\n }\n\n function quoteDottedString(str) {\n if (str.indexOf(\".\") > -1) {\n return \"\\\"\" + str + \"\\\"\";\n } else {\n return str;\n }\n }\n}\n\nmodule.exports = {\n compile: compile\n};\n", "var parser = require('./lib/parser');\nvar compiler = require('./lib/compiler');\n\nmodule.exports = {\n parse: function(input) {\n var nodes = parser.parse(input.toString());\n return compiler.compile(nodes);\n }\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelToken = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar CancelToken = exports.CancelToken = function () {\n function CancelToken(executor) {\n var _this = this;\n _classCallCheck(this, CancelToken);\n var resolvePromise;\n this.promise = new Promise(function (resolve) {\n resolvePromise = resolve;\n });\n executor(function (reason) {\n _this.reason = reason;\n resolvePromise();\n });\n }\n return _createClass(CancelToken, [{\n key: \"throwIfRequested\",\n value: function throwIfRequested() {\n if (this.reason) {\n throw new Error(this.reason);\n }\n }\n }]);\n}();", "var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n", "var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n", "{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n", "module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n", "var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n", "// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n", "var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n", "// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n", "var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n", "var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n", "var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n", "module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n", "'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n", "'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n", "'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n", "'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n", "'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n", "'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n", "'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n", "'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n", "'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n", "'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n", "'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n", "'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar $TypeError = require('es-errors/type');\n\nvar toStringTag = hasToStringTag ? Symbol.toStringTag : null;\n\n/** @type {import('.')} */\nmodule.exports = function setToStringTag(object, value) {\n\tvar overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force;\n\tvar nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable;\n\tif (\n\t\t(typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean')\n\t\t|| (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean')\n\t) {\n\t\tthrow new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans');\n\t}\n\tif (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) {\n\t\tif ($defineProperty) {\n\t\t\t$defineProperty(object, toStringTag, {\n\t\t\t\tconfigurable: !nonConfigurable,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value,\n\t\t\t\twritable: false\n\t\t\t});\n\t\t} else {\n\t\t\tobject[toStringTag] = value; // eslint-disable-line no-param-reassign\n\t\t}\n\t}\n};\n", "'use strict';\n\n// populates missing values\nmodule.exports = function (dst, src) {\n Object.keys(src).forEach(function (prop) {\n dst[prop] = dst[prop] || src[prop]; // eslint-disable-line no-param-reassign\n });\n\n return dst;\n};\n", "'use strict';\n\nvar CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar crypto = require('crypto');\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar setToStringTag = require('es-set-tostringtag');\nvar hasOwn = require('hasown');\nvar populate = require('./populate.js');\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n for (var option in options) { // eslint-disable-line no-restricted-syntax\n this[option] = options[option];\n }\n}\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function (field, value, options) {\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // allow filename as single option\n if (typeof options === 'string') {\n options = { filename: options }; // eslint-disable-line no-param-reassign\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value === 'number' || value == null) {\n value = String(value); // eslint-disable-line no-param-reassign\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (Array.isArray(value)) {\n /*\n * Please convert your array into string\n * the way web server expects it\n */\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function (header, value, options) {\n var valueLength = 0;\n\n /*\n * used w/ getLengthSync(), when length is known.\n * e.g. for streaming directly from a remote server,\n * w/ a known file a size, and not wanting to wait for\n * incoming file to finish to get its size.\n */\n if (options.knownLength != null) {\n valueLength += Number(options.knownLength);\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength += Buffer.byteLength(header) + FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || (!value.path && !(value.readable && hasOwn(value, 'httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function (value, callback) {\n if (hasOwn(value, 'fd')) {\n // take read range into a account\n // `end` = Infinity \u2013> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0)); // eslint-disable-line callback-return\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function (err, stat) {\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n var fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (hasOwn(value, 'httpVersion')) {\n callback(null, Number(value.headers['content-length'])); // eslint-disable-line callback-return\n\n // or request stream http://github.com/mikeal/request\n } else if (hasOwn(value, 'httpModule')) {\n // wait till response come back\n value.on('response', function (response) {\n value.pause();\n callback(null, Number(response.headers['content-length']));\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream'); // eslint-disable-line callback-return\n }\n};\n\nFormData.prototype._multiPartHeader = function (field, value, options) {\n /*\n * custom header specified (as string)?\n * it becomes responsible for boundary\n * (e.g. to handle extra CRLFs on .NET servers)\n */\n if (typeof options.header === 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header === 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(headers, prop)) {\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function (value, options) { // eslint-disable-line consistent-return\n var filename;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || (value && (value.name || value.path))) {\n /*\n * custom filename take precedence\n * formidable and the browser add a name property\n * fs- and request- streams have path property\n */\n filename = path.basename(options.filename || (value && (value.name || value.path)));\n } else if (value && value.readable && hasOwn(value, 'httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n return 'filename=\"' + filename + '\"';\n }\n};\n\nFormData.prototype._getContentType = function (value, options) {\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value && value.readable && hasOwn(value, 'httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && value && typeof value === 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function () {\n return function (next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = this._streams.length === 0;\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function () {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function (userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(userHeaders, header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function (boundary) {\n if (typeof boundary !== 'string') {\n throw new TypeError('FormData boundary must be a string');\n }\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function () {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function () {\n var dataBuffer = new Buffer.alloc(0); // eslint-disable-line new-cap\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n // Add content to the buffer.\n if (Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]);\n } else {\n dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring(2, boundary.length + 2) !== boundary) {\n dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData.LINE_BREAK)]);\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]);\n};\n\nFormData.prototype._generateBoundary = function () {\n // This generates a 50 character boundary similar to those used by Firefox.\n\n // They are optimized for boyer-moore parsing.\n this._boundary = '--------------------------' + crypto.randomBytes(12).toString('hex');\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually and add it as knownLength option\nFormData.prototype.getLengthSync = function () {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n /*\n * Some async length retrievers are present\n * therefore synchronous length calculation is false.\n * Please use getLength(callback) to get proper length\n */\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function () {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function (cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function (err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function (length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function (params, cb) {\n var request;\n var options;\n var defaults = { method: 'post' };\n\n // parse provided url if it's string or treat it as options object\n if (typeof params === 'string') {\n params = parseUrl(params); // eslint-disable-line no-param-reassign\n /* eslint sort-keys: 0 */\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n } else { // use custom params\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol === 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol === 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function (err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function (err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\nsetToStringTag(FormData.prototype, 'FormData');\n\n// Public API\nmodule.exports = FormData;\n", "'use strict';\n\nvar parseUrl = require('url').parse;\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nvar stringEndsWith = String.prototype.endsWith || function(s) {\n return s.length <= this.length &&\n this.indexOf(s, this.length - s.length) !== -1;\n};\n\n/**\n * @param {string|object} url - The URL, or the result from url.parse.\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nfunction getProxyForUrl(url) {\n var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy =\n getEnv('npm_config_' + proto + '_proxy') ||\n getEnv(proto + '_proxy') ||\n getEnv('npm_config_proxy') ||\n getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY =\n (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !stringEndsWith.call(hostname, parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n\nexports.getProxyForUrl = getProxyForUrl;\n", "var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n", "var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Preventive platform detection\n// istanbul ignore next\n(function detectUnsupportedEnvironment() {\n var looksLikeNode = typeof process !== \"undefined\";\n var looksLikeBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n var looksLikeV8 = isFunction(Error.captureStackTrace);\n if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {\n console.warn(\"The follow-redirects package should be excluded from browser builds.\");\n }\n}());\n\n// Whether to use the native URL object or the legacy url module\nvar useNativeURL = false;\ntry {\n assert(new URL(\"\"));\n}\ncatch (error) {\n useNativeURL = error.code === \"ERR_INVALID_URL\";\n}\n\n// URL fields to preserve in copy operations\nvar preservedUrlFields = [\n \"auth\",\n \"host\",\n \"hostname\",\n \"href\",\n \"path\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"query\",\n \"search\",\n \"hash\",\n];\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\",\n RedirectionError\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// istanbul ignore next\nvar destroy = Writable.prototype.destroy || noop;\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n try {\n self._processResponse(response);\n }\n catch (cause) {\n self.emit(\"error\", cause instanceof RedirectionError ?\n cause : new RedirectionError({ cause: cause }));\n }\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n destroyRequest(this._currentRequest);\n this._currentRequest.abort();\n this.emit(\"abort\");\n};\n\nRedirectableRequest.prototype.destroy = function (error) {\n destroyRequest(this._currentRequest, error);\n destroy.call(this, error);\n return this;\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n self.removeListener(\"close\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n this.on(\"close\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n throw new TypeError(\"Unsupported protocol \" + protocol);\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230\u00A75.3.1: When making a request directly to an origin server, [\u2026]\n // a client MUST send only the absolute path [\u2026] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, [\u2026]\n // a client MUST send the target URI in absolute-form [\u2026].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n // istanbul ignore else\n if (request === self._currentRequest) {\n // Report any write errors\n // istanbul ignore if\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n // istanbul ignore else\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231\u00A76.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n destroyRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231\u00A76.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n throw new TooManyRedirectsError();\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231\u00A76.4: Automatic redirection needs to done with\n // care for methods not known to be safe, [\u2026]\n // RFC7231\u00A76.4.2\u20133: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231\u00A76.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource [\u2026]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) [\u2026]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = parseUrl(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Create the redirected request\n var redirectUrl = resolveUrl(location, currentUrl);\n debug(\"redirecting to\", redirectUrl.href);\n this._isRedirect = true;\n spreadUrlObject(redirectUrl, this._options);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrl.protocol !== currentUrlParts.protocol &&\n redirectUrl.protocol !== \"https:\" ||\n redirectUrl.host !== currentHost &&\n !isSubdomain(redirectUrl.host, currentHost)) {\n removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n beforeRedirect(this._options, responseDetails, requestDetails);\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n this._performRequest();\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters, ensuring that input is an object\n if (isURL(input)) {\n input = spreadUrlObject(input);\n }\n else if (isString(input)) {\n input = spreadUrlObject(parseUrl(input));\n }\n else {\n callback = options;\n options = validateUrl(input);\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\nfunction noop() { /* empty */ }\n\nfunction parseUrl(input) {\n var parsed;\n // istanbul ignore else\n if (useNativeURL) {\n parsed = new URL(input);\n }\n else {\n // Ensure the URL is valid and absolute\n parsed = validateUrl(url.parse(input));\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n }\n return parsed;\n}\n\nfunction resolveUrl(relative, base) {\n // istanbul ignore next\n return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));\n}\n\nfunction validateUrl(input) {\n if (/^\\[/.test(input.hostname) && !/^\\[[:0-9a-f]+\\]$/i.test(input.hostname)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n if (/^\\[/.test(input.host) && !/^\\[[:0-9a-f]+\\](:\\d+)?$/i.test(input.host)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n return input;\n}\n\nfunction spreadUrlObject(urlObject, target) {\n var spread = target || {};\n for (var key of preservedUrlFields) {\n spread[key] = urlObject[key];\n }\n\n // Fix IPv6 hostname\n if (spread.hostname.startsWith(\"[\")) {\n spread.hostname = spread.hostname.slice(1, -1);\n }\n // Ensure port is a number\n if (spread.port !== \"\") {\n spread.port = Number(spread.port);\n }\n // Concatenate path\n spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;\n\n return spread;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n // istanbul ignore else\n if (isFunction(Error.captureStackTrace)) {\n Error.captureStackTrace(this, this.constructor);\n }\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n Object.defineProperties(CustomError.prototype, {\n constructor: {\n value: CustomError,\n enumerable: false,\n },\n name: {\n value: \"Error [\" + code + \"]\",\n enumerable: false,\n },\n });\n return CustomError;\n}\n\nfunction destroyRequest(request, error) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.destroy(error);\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\nfunction isURL(value) {\n return URL && value instanceof URL;\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n", "'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = options && options.encode || encode;\n\n const _options = utils.isFunction(options) ? {\n serialize: options\n } : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n", "'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n", "import crypto from 'crypto';\nimport URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n const randomValues = new Uint32Array(size);\n crypto.randomFillSync(randomValues);\n for (let i = 0; i < size; i++) {\n str += alphabet[randomValues[i] % length];\n }\n\n return str;\n}\n\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n ALPHABET,\n generateString,\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n", "'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n", "export const VERSION = \"1.13.4\";", "'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n", "'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const internals = this[kInternals] = {\n timeWindow: options.timeWindow,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n const pushChunk = (_chunk, _callback) => {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n internals.isCaptured && this.emit('progress', internals.bytesSeen);\n\n if (this.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n}\n\nexport default AxiosTransformStream;\n", "const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n", "import util from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\nimport platform from \"../platform/index.js\";\n\nconst BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n", "\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n", "import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n", "import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n", "/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n * handle %XX at the character-count level (no string allocation).\n * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n if (!url || typeof url !== 'string') return 0;\n if (!url.startsWith('data:')) return 0;\n\n const comma = url.indexOf(',');\n if (comma < 0) return 0;\n\n const meta = url.slice(5, comma);\n const body = url.slice(comma + 1);\n const isBase64 = /;base64/i.test(meta);\n\n if (isBase64) {\n let effectiveLen = body.length;\n const len = body.length; // cache length\n\n for (let i = 0; i < len; i++) {\n if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n const a = body.charCodeAt(i + 1);\n const b = body.charCodeAt(i + 2);\n const isHex =\n ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&\n ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));\n\n if (isHex) {\n effectiveLen -= 2;\n i += 2;\n }\n }\n }\n\n let pad = 0;\n let idx = len - 1;\n\n const tailIsPct3D = (j) =>\n j >= 2 &&\n body.charCodeAt(j - 2) === 37 && // '%'\n body.charCodeAt(j - 1) === 51 && // '3'\n (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n if (idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n idx--;\n } else if (tailIsPct3D(idx)) {\n pad++;\n idx -= 3;\n }\n }\n\n if (pad === 1 && idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n } else if (tailIsPct3D(idx)) {\n pad++;\n }\n }\n\n const groups = Math.floor(effectiveLen / 4);\n const bytes = groups * 3 - (pad || 0);\n return bytes > 0 ? bytes : 0;\n }\n\n return Buffer.byteLength(body, 'utf8');\n}\n", "import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from '../helpers/buildURL.js';\nimport proxyFromEnv from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport http2 from 'http2';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n\nconst flushOnFinish = (stream, [throttled, flush]) => {\n stream\n .on('end', flush)\n .on('error', flush);\n\n return throttled;\n}\n\nclass Http2Sessions {\n constructor() {\n this.sessions = Object.create(null);\n }\n\n getSession(authority, options) {\n options = Object.assign({\n sessionTimeout: 1000\n }, options);\n\n let authoritySessions = this.sessions[authority];\n\n if (authoritySessions) {\n let len = authoritySessions.length;\n\n for (let i = 0; i < len; i++) {\n const [sessionHandle, sessionOptions] = authoritySessions[i];\n if (!sessionHandle.destroyed && !sessionHandle.closed && util.isDeepStrictEqual(sessionOptions, options)) {\n return sessionHandle;\n }\n }\n }\n\n const session = http2.connect(authority, options);\n\n let removed;\n\n const removeSession = () => {\n if (removed) {\n return;\n }\n\n removed = true;\n\n let entries = authoritySessions, len = entries.length, i = len;\n\n while (i--) {\n if (entries[i][0] === session) {\n if (len === 1) {\n delete this.sessions[authority];\n } else {\n entries.splice(i, 1);\n }\n return;\n }\n }\n };\n\n const originalRequestFn = session.request;\n\n const {sessionTimeout} = options;\n\n if(sessionTimeout != null) {\n\n let timer;\n let streamsCount = 0;\n\n session.request = function () {\n const stream = originalRequestFn.apply(this, arguments);\n\n streamsCount++;\n\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n stream.once('close', () => {\n if (!--streamsCount) {\n timer = setTimeout(() => {\n timer = null;\n removeSession();\n }, sessionTimeout);\n }\n });\n\n return stream;\n }\n }\n\n session.once('close', removeSession);\n\n let entry = [\n session,\n options\n ];\n\n authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry];\n\n return session;\n }\n}\n\nconst http2Sessions = new Http2Sessions();\n\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = proxyFromEnv.getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password);\n\n if (validProxyAuth) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n } else if (typeof proxy.auth === 'object') {\n throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy });\n }\n\n const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64');\n\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\nconst http2Transport = {\n request(options, cb) {\n const authority = options.protocol + '//' + options.hostname + ':' + (options.port ||(options.protocol === 'https:' ? 443 : 80));\n\n\n const {http2Options, headers} = options;\n\n const session = http2Sessions.getSession(authority, http2Options);\n\n const {\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_STATUS\n } = http2.constants;\n\n const http2Headers = {\n [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''),\n [HTTP2_HEADER_METHOD]: options.method,\n [HTTP2_HEADER_PATH]: options.path,\n }\n\n utils.forEach(headers, (header, name) => {\n name.charAt(0) !== ':' && (http2Headers[name] = header);\n });\n\n const req = session.request(http2Headers);\n\n req.once('response', (responseHeaders) => {\n const response = req; //duplex\n\n responseHeaders = Object.assign({}, responseHeaders);\n\n const status = responseHeaders[HTTP2_HEADER_STATUS];\n\n delete responseHeaders[HTTP2_HEADER_STATUS];\n\n response.headers = responseHeaders;\n\n response.statusCode = +status;\n\n cb(response);\n })\n\n return req;\n }\n}\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family, httpVersion = 1, http2Options} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n httpVersion = +httpVersion;\n\n if (Number.isNaN(httpVersion)) {\n throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`);\n }\n\n if (httpVersion !== 1 && httpVersion !== 2) {\n throw TypeError(`Unsupported protocol version '${httpVersion}'`);\n }\n\n const isHttp2 = httpVersion === 2;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n const abortEmitter = new EventEmitter();\n\n function abort(reason) {\n try {\n abortEmitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n } catch(err) {\n console.warn('emit error', err);\n }\n }\n\n abortEmitter.once('abort', reject);\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n abortEmitter.removeAllListeners();\n }\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n onDone((response, isRejected) => {\n isDone = true;\n\n if (isRejected) {\n rejected = true;\n onFinished();\n return;\n }\n\n const {data} = response;\n\n if (data instanceof stream.Readable || data instanceof stream.Duplex) {\n const offListeners = stream.finished(data, () => {\n offListeners();\n onFinished();\n });\n } else {\n onFinished();\n }\n });\n\n\n\n\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set.\n if (config.maxContentLength > -1) {\n // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed.\n const dataUrl = String(config.url || fullPath || '');\n const estimated = estimateDataURLDecodedBytes(dataUrl);\n\n if (estimated > config.maxContentLength) {\n return reject(new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config\n ));\n }\n }\n\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const {onUploadProgress, onDownloadProgress} = config;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data) || utils.isFile(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', flushOnFinish(\n data,\n progressEventDecorator(\n contentLength,\n progressEventReducer(asyncDecorator(onUploadProgress), false, 3)\n )\n ));\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {},\n http2Options\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname.startsWith(\"[\") ? parsed.hostname.slice(1, -1) : parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n\n if (isHttp2) {\n transport = http2Transport;\n } else {\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = utils.toFiniteNumber(res.headers['content-length']);\n\n if (onDownloadProgress || maxDownloadRate) {\n const transformStream = new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', flushOnFinish(\n transformStream,\n progressEventDecorator(\n responseLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)\n )\n ));\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n abort(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'stream has been aborted',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n abortEmitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n abortEmitter.once('abort', err => {\n if (req.close) {\n req.close();\n } else {\n req.destroy(err);\n }\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n abort(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n abort(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n });\n } else {\n // explicitly reset the socket timeout value for a possible `keep-alive` request\n req.setTimeout(0);\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n data && req.write(data);\n req.end();\n }\n });\n}\n\nexport const __setProxy = setProxy;\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n", "import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n", "import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n", "import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n", "\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n", "import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters\n};\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n", "'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n", "const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.create = exports.axiosClient = void 0;\nvar _axios = _interopRequireDefault(require(\"axios\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar axiosClient = exports.axiosClient = _axios.default;\nvar create = exports.create = _axios.default.create;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n httpClient: true,\n create: true\n};\nexports.httpClient = exports.create = void 0;\nvar _types = require(\"./types\");\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _types[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _types[key];\n }\n });\n});\nvar httpClient;\nvar create;\nif (true) {\n var axiosModule = require(\"./axios-client\");\n exports.httpClient = httpClient = axiosModule.axiosClient;\n exports.create = create = axiosModule.create;\n} else {\n var fetchModule = require(\"./fetch-client\");\n exports.httpClient = httpClient = fetchModule.fetchClient;\n exports.create = create = fetchModule.create;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.STELLAR_TOML_MAX_SIZE = exports.Resolver = exports.Api = void 0;\nvar _toml = _interopRequireDefault(require(\"toml\"));\nvar _httpClient = require(\"../http-client\");\nvar _config = require(\"../config\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar STELLAR_TOML_MAX_SIZE = exports.STELLAR_TOML_MAX_SIZE = 100 * 1024;\nvar CancelToken = _httpClient.httpClient.CancelToken;\nvar Resolver = exports.Resolver = function () {\n function Resolver() {\n _classCallCheck(this, Resolver);\n }\n return _createClass(Resolver, null, [{\n key: \"resolve\",\n value: (function () {\n var _resolve = _asyncToGenerator(_regenerator().m(function _callee(domain) {\n var _opts$allowedRedirect;\n var opts,\n allowHttp,\n timeout,\n protocol,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n opts = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};\n allowHttp = typeof opts.allowHttp === \"undefined\" ? _config.Config.isAllowHttp() : opts.allowHttp;\n timeout = typeof opts.timeout === \"undefined\" ? _config.Config.getTimeout() : opts.timeout;\n protocol = allowHttp ? \"http\" : \"https\";\n return _context.a(2, _httpClient.httpClient.get(\"\".concat(protocol, \"://\").concat(domain, \"/.well-known/stellar.toml\"), {\n maxRedirects: (_opts$allowedRedirect = opts.allowedRedirects) !== null && _opts$allowedRedirect !== void 0 ? _opts$allowedRedirect : 0,\n maxContentLength: STELLAR_TOML_MAX_SIZE,\n cancelToken: timeout ? new CancelToken(function (cancel) {\n return setTimeout(function () {\n return cancel(\"timeout of \".concat(timeout, \"ms exceeded\"));\n }, timeout);\n }) : undefined,\n timeout: timeout\n }).then(function (response) {\n try {\n var tomlObject = _toml.default.parse(response.data);\n return Promise.resolve(tomlObject);\n } catch (e) {\n return Promise.reject(new Error(\"stellar.toml is invalid - Parsing error on line \".concat(e.line, \", column \").concat(e.column, \": \").concat(e.message)));\n }\n }).catch(function (err) {\n if (err.message.match(/^maxContentLength size/)) {\n throw new Error(\"stellar.toml file exceeds allowed size of \".concat(STELLAR_TOML_MAX_SIZE));\n } else {\n throw err;\n }\n }));\n }\n }, _callee);\n }));\n function resolve(_x) {\n return _resolve.apply(this, arguments);\n }\n return resolve;\n }())\n }]);\n}();\nvar Api;", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"XDR\"] = factory();\n\telse\n\t\troot[\"XDR\"] = factory();\n})(this, () => {\nreturn ", "import { XdrCompositeType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Array extends XdrCompositeType {\n constructor(childType, length) {\n super();\n this._childType = childType;\n this._length = length;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n // allocate array of specified length\n const result = new global.Array(this._length);\n // read values\n for (let i = 0; i < this._length; i++) {\n result[i] = this._childType.read(reader);\n }\n return result;\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n if (!global.Array.isArray(value))\n throw new XdrWriterError(`value is not array`);\n\n if (value.length !== this._length)\n throw new XdrWriterError(\n `got array of size ${value.length}, expected ${this._length}`\n );\n\n for (const child of value) {\n this._childType.write(child, writer);\n }\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n if (!(value instanceof global.Array) || value.length !== this._length) {\n return false;\n }\n\n for (const child of value) {\n if (!this._childType.isValid(child)) return false;\n }\n return true;\n }\n}\n", "/**\n * Encode a native `bigint` value from a list of arbitrary integer-like values.\n *\n * @param {Array} parts - Slices to encode in big-endian\n * format (i.e. earlier elements are higher bits)\n * @param {64|128|256} size - Number of bits in the target integer type\n * @param {boolean} unsigned - Whether it's an unsigned integer\n *\n * @returns {bigint}\n */\nexport function encodeBigIntFromBits(parts, size, unsigned) {\n if (!(parts instanceof Array)) {\n // allow a single parameter instead of an array\n parts = [parts];\n } else if (parts.length && parts[0] instanceof Array) {\n // unpack nested array param\n parts = parts[0];\n }\n\n const total = parts.length;\n const sliceSize = size / total;\n switch (sliceSize) {\n case 32:\n case 64:\n case 128:\n case 256:\n break;\n\n default:\n throw new RangeError(\n `expected slices to fit in 32/64/128/256 bits, got ${parts}`\n );\n }\n\n // normalize all inputs to bigint\n try {\n for (let i = 0; i < parts.length; i++) {\n if (typeof parts[i] !== 'bigint') {\n parts[i] = BigInt(parts[i].valueOf());\n }\n }\n } catch (e) {\n throw new TypeError(`expected bigint-like values, got: ${parts} (${e})`);\n }\n\n // check for sign mismatches for single inputs (this is a special case to\n // handle one parameter passed to e.g. UnsignedHyper et al.)\n // see https://github.com/stellar/js-xdr/pull/100#discussion_r1228770845\n if (unsigned && parts.length === 1 && parts[0] < 0n) {\n throw new RangeError(`expected a positive value, got: ${parts}`);\n }\n\n // encode in big-endian fashion, shifting each slice by the slice size\n let result = BigInt.asUintN(sliceSize, parts[0]); // safe: len >= 1\n for (let i = 1; i < parts.length; i++) {\n result |= BigInt.asUintN(sliceSize, parts[i]) << BigInt(i * sliceSize);\n }\n\n // interpret value as signed if necessary and clamp it\n if (!unsigned) {\n result = BigInt.asIntN(size, result);\n }\n\n // check boundaries\n const [min, max] = calculateBigIntBoundaries(size, unsigned);\n if (result >= min && result <= max) {\n return result;\n }\n\n // failed to encode\n throw new TypeError(\n `bigint values [${parts}] for ${formatIntName(\n size,\n unsigned\n )} out of range [${min}, ${max}]: ${result}`\n );\n}\n\n/**\n * Transforms a single bigint value that's supposed to represent a `size`-bit\n * integer into a list of `sliceSize`d chunks.\n *\n * @param {bigint} value - Single bigint value to decompose\n * @param {64|128|256} iSize - Number of bits represented by `value`\n * @param {32|64|128} sliceSize - Number of chunks to decompose into\n * @return {bigint[]}\n */\nexport function sliceBigInt(value, iSize, sliceSize) {\n if (typeof value !== 'bigint') {\n throw new TypeError(`Expected bigint 'value', got ${typeof value}`);\n }\n\n const total = iSize / sliceSize;\n if (total === 1) {\n return [value];\n }\n\n if (\n sliceSize < 32 ||\n sliceSize > 128 ||\n (total !== 2 && total !== 4 && total !== 8)\n ) {\n throw new TypeError(\n `invalid bigint (${value}) and slice size (${iSize} -> ${sliceSize}) combination`\n );\n }\n\n const shift = BigInt(sliceSize);\n\n // iterate shift and mask application\n const result = new Array(total);\n for (let i = 0; i < total; i++) {\n // we force a signed interpretation to preserve sign in each slice value,\n // but downstream can convert to unsigned if it's appropriate\n result[i] = BigInt.asIntN(sliceSize, value); // clamps to size\n\n // move on to the next chunk\n value >>= shift;\n }\n\n return result;\n}\n\nexport function formatIntName(precision, unsigned) {\n return `${unsigned ? 'u' : 'i'}${precision}`;\n}\n\n/**\n * Get min|max boundaries for an integer with a specified bits size\n * @param {64|128|256} size - Number of bits in the source integer type\n * @param {Boolean} unsigned - Whether it's an unsigned integer\n * @return {BigInt[]}\n */\nexport function calculateBigIntBoundaries(size, unsigned) {\n if (unsigned) {\n return [0n, (1n << BigInt(size)) - 1n];\n }\n\n const boundary = 1n << BigInt(size - 1);\n return [0n - boundary, boundary - 1n];\n}\n", "import { Int } from './int';\nimport { XdrPrimitiveType } from './xdr-type';\nimport { XdrReaderError } from './errors';\n\nexport class Bool extends XdrPrimitiveType {\n /**\n * @inheritDoc\n */\n static read(reader) {\n const value = Int.read(reader);\n\n switch (value) {\n case 0:\n return false;\n case 1:\n return true;\n default:\n throw new XdrReaderError(`got ${value} when trying to read a bool`);\n }\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n const intVal = value ? 1 : 0;\n Int.write(intVal, writer);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return typeof value === 'boolean';\n }\n}\n", "// eslint-disable-next-line prefer-import/prefer-import-over-require\nconst exports = require('./index');\nmodule.exports = exports;\n", "// eslint-disable-next-line max-classes-per-file\nimport * as XDRTypes from './types';\nimport { Reference } from './reference';\nimport { XdrDefinitionError } from './errors';\n\nexport * from './reference';\n\nclass SimpleReference extends Reference {\n constructor(name) {\n super();\n this.name = name;\n }\n\n resolve(context) {\n const defn = context.definitions[this.name];\n return defn.resolve(context);\n }\n}\n\nclass ArrayReference extends Reference {\n constructor(childReference, length, variable = false) {\n super();\n this.childReference = childReference;\n this.length = length;\n this.variable = variable;\n }\n\n resolve(context) {\n let resolvedChild = this.childReference;\n let length = this.length;\n\n if (resolvedChild instanceof Reference) {\n resolvedChild = resolvedChild.resolve(context);\n }\n\n if (length instanceof Reference) {\n length = length.resolve(context);\n }\n\n if (this.variable) {\n return new XDRTypes.VarArray(resolvedChild, length);\n }\n return new XDRTypes.Array(resolvedChild, length);\n }\n}\n\nclass OptionReference extends Reference {\n constructor(childReference) {\n super();\n this.childReference = childReference;\n this.name = childReference.name;\n }\n\n resolve(context) {\n let resolvedChild = this.childReference;\n\n if (resolvedChild instanceof Reference) {\n resolvedChild = resolvedChild.resolve(context);\n }\n\n return new XDRTypes.Option(resolvedChild);\n }\n}\n\nclass SizedReference extends Reference {\n constructor(sizedType, length) {\n super();\n this.sizedType = sizedType;\n this.length = length;\n }\n\n resolve(context) {\n let length = this.length;\n\n if (length instanceof Reference) {\n length = length.resolve(context);\n }\n\n return new this.sizedType(length);\n }\n}\n\nclass Definition {\n constructor(constructor, name, cfg) {\n this.constructor = constructor;\n this.name = name;\n this.config = cfg;\n }\n\n // resolve calls the constructor of this definition with the provided context\n // and this definitions config values. The definitions constructor should\n // populate the final type on `context.results`, and may refer to other\n // definitions through `context.definitions`\n resolve(context) {\n if (this.name in context.results) {\n return context.results[this.name];\n }\n\n return this.constructor(context, this.name, this.config);\n }\n}\n\n// let the reference resolution system do its thing\n// the \"constructor\" for a typedef just returns the resolved value\nfunction createTypedef(context, typeName, value) {\n if (value instanceof Reference) {\n value = value.resolve(context);\n }\n context.results[typeName] = value;\n return value;\n}\n\nfunction createConst(context, name, value) {\n context.results[name] = value;\n return value;\n}\n\nclass TypeBuilder {\n constructor(destination) {\n this._destination = destination;\n this._definitions = {};\n }\n\n enum(name, members) {\n const result = new Definition(XDRTypes.Enum.create, name, members);\n this.define(name, result);\n }\n\n struct(name, members) {\n const result = new Definition(XDRTypes.Struct.create, name, members);\n this.define(name, result);\n }\n\n union(name, cfg) {\n const result = new Definition(XDRTypes.Union.create, name, cfg);\n this.define(name, result);\n }\n\n typedef(name, cfg) {\n const result = new Definition(createTypedef, name, cfg);\n this.define(name, result);\n }\n\n const(name, cfg) {\n const result = new Definition(createConst, name, cfg);\n this.define(name, result);\n }\n\n void() {\n return XDRTypes.Void;\n }\n\n bool() {\n return XDRTypes.Bool;\n }\n\n int() {\n return XDRTypes.Int;\n }\n\n hyper() {\n return XDRTypes.Hyper;\n }\n\n uint() {\n return XDRTypes.UnsignedInt;\n }\n\n uhyper() {\n return XDRTypes.UnsignedHyper;\n }\n\n float() {\n return XDRTypes.Float;\n }\n\n double() {\n return XDRTypes.Double;\n }\n\n quadruple() {\n return XDRTypes.Quadruple;\n }\n\n string(length) {\n return new SizedReference(XDRTypes.String, length);\n }\n\n opaque(length) {\n return new SizedReference(XDRTypes.Opaque, length);\n }\n\n varOpaque(length) {\n return new SizedReference(XDRTypes.VarOpaque, length);\n }\n\n array(childType, length) {\n return new ArrayReference(childType, length);\n }\n\n varArray(childType, maxLength) {\n return new ArrayReference(childType, maxLength, true);\n }\n\n option(childType) {\n return new OptionReference(childType);\n }\n\n define(name, definition) {\n if (this._destination[name] === undefined) {\n this._definitions[name] = definition;\n } else {\n throw new XdrDefinitionError(`${name} is already defined`);\n }\n }\n\n lookup(name) {\n return new SimpleReference(name);\n }\n\n resolve() {\n for (const defn of Object.values(this._definitions)) {\n defn.resolve({\n definitions: this._definitions,\n results: this._destination\n });\n }\n }\n}\n\nexport function config(fn, types = {}) {\n if (fn) {\n const builder = new TypeBuilder(types);\n fn(builder);\n builder.resolve();\n }\n\n return types;\n}\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Double extends XdrPrimitiveType {\n /**\n * @inheritDoc\n */\n static read(reader) {\n return reader.readDoubleBE();\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (typeof value !== 'number') throw new XdrWriterError('not a number');\n\n writer.writeDoubleBE(value);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return typeof value === 'number';\n }\n}\n", "import { Int } from './int';\nimport { XdrPrimitiveType, isSerializableIsh } from './xdr-type';\nimport { XdrReaderError, XdrWriterError } from './errors';\n\nexport class Enum extends XdrPrimitiveType {\n constructor(name, value) {\n super();\n this.name = name;\n this.value = value;\n }\n\n /**\n * @inheritDoc\n */\n static read(reader) {\n const intVal = Int.read(reader);\n const res = this._byValue[intVal];\n if (res === undefined)\n throw new XdrReaderError(\n `unknown ${this.enumName} member for value ${intVal}`\n );\n return res;\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (!this.isValid(value)) {\n throw new XdrWriterError(\n `${value} has enum name ${value?.enumName}, not ${\n this.enumName\n }: ${JSON.stringify(value)}`\n );\n }\n\n Int.write(value.value, writer);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return (\n value?.constructor?.enumName === this.enumName ||\n isSerializableIsh(value, this)\n );\n }\n\n static members() {\n return this._members;\n }\n\n static values() {\n return Object.values(this._members);\n }\n\n static fromName(name) {\n const result = this._members[name];\n\n if (!result)\n throw new TypeError(`${name} is not a member of ${this.enumName}`);\n\n return result;\n }\n\n static fromValue(value) {\n const result = this._byValue[value];\n if (result === undefined)\n throw new TypeError(\n `${value} is not a value of any member of ${this.enumName}`\n );\n return result;\n }\n\n static create(context, name, members) {\n const ChildEnum = class extends Enum {};\n\n ChildEnum.enumName = name;\n context.results[name] = ChildEnum;\n\n ChildEnum._members = {};\n ChildEnum._byValue = {};\n\n for (const [key, value] of Object.entries(members)) {\n const inst = new ChildEnum(key, value);\n ChildEnum._members[key] = inst;\n ChildEnum._byValue[value] = inst;\n ChildEnum[key] = () => inst;\n }\n\n return ChildEnum;\n }\n}\n", "export class XdrWriterError extends TypeError {\n constructor(message) {\n super(`XDR Write Error: ${message}`);\n }\n}\n\nexport class XdrReaderError extends TypeError {\n constructor(message) {\n super(`XDR Read Error: ${message}`);\n }\n}\n\nexport class XdrDefinitionError extends TypeError {\n constructor(message) {\n super(`XDR Type Definition Error: ${message}`);\n }\n}\n\nexport class XdrNotImplementedDefinitionError extends XdrDefinitionError {\n constructor() {\n super(\n `method not implemented, it should be overloaded in the descendant class.`\n );\n }\n}\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Float extends XdrPrimitiveType {\n /**\n * @inheritDoc\n */\n static read(reader) {\n return reader.readFloatBE();\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (typeof value !== 'number') throw new XdrWriterError('not a number');\n\n writer.writeFloatBE(value);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return typeof value === 'number';\n }\n}\n", "import { LargeInt } from './large-int';\n\nexport class Hyper extends LargeInt {\n /**\n * @param {Array} parts - Slices to encode\n */\n constructor(...args) {\n super(args);\n }\n\n get low() {\n return Number(this._value & 0xffffffffn) << 0;\n }\n\n get high() {\n return Number(this._value >> 32n) >> 0;\n }\n\n get size() {\n return 64;\n }\n\n get unsigned() {\n return false;\n }\n\n /**\n * Create Hyper instance from two [high][low] i32 values\n * @param {Number} low - Low part of i64 number\n * @param {Number} high - High part of i64 number\n * @return {LargeInt}\n */\n static fromBits(low, high) {\n return new this(low, high);\n }\n}\n\nHyper.defineIntBoundaries();\n", "export * from './types';\nexport * from './config';\n\nexport { XdrReader } from './serialization/xdr-reader';\nexport { XdrWriter } from './serialization/xdr-writer';\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nconst MAX_VALUE = 2147483647;\nconst MIN_VALUE = -2147483648;\n\nexport class Int extends XdrPrimitiveType {\n /**\n * @inheritDoc\n */\n static read(reader) {\n return reader.readInt32BE();\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (typeof value !== 'number') throw new XdrWriterError('not a number');\n\n if ((value | 0) !== value) throw new XdrWriterError('invalid i32 value');\n\n writer.writeInt32BE(value);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n if (typeof value !== 'number' || (value | 0) !== value) {\n return false;\n }\n\n return value >= MIN_VALUE && value <= MAX_VALUE;\n }\n}\n\nInt.MAX_VALUE = MAX_VALUE;\nInt.MIN_VALUE = -MIN_VALUE;\n", "import { XdrPrimitiveType } from './xdr-type';\nimport {\n calculateBigIntBoundaries,\n encodeBigIntFromBits,\n sliceBigInt\n} from './bigint-encoder';\nimport { XdrNotImplementedDefinitionError, XdrWriterError } from './errors';\n\nexport class LargeInt extends XdrPrimitiveType {\n /**\n * @param {Array} parts - Slices to encode\n */\n constructor(args) {\n super();\n this._value = encodeBigIntFromBits(args, this.size, this.unsigned);\n }\n\n /**\n * Signed/unsigned representation\n * @type {Boolean}\n * @abstract\n */\n get unsigned() {\n throw new XdrNotImplementedDefinitionError();\n }\n\n /**\n * Size of the integer in bits\n * @type {Number}\n * @abstract\n */\n get size() {\n throw new XdrNotImplementedDefinitionError();\n }\n\n /**\n * Slice integer to parts with smaller bit size\n * @param {32|64|128} sliceSize - Size of each part in bits\n * @return {BigInt[]}\n */\n slice(sliceSize) {\n return sliceBigInt(this._value, this.size, sliceSize);\n }\n\n toString() {\n return this._value.toString();\n }\n\n toJSON() {\n return { _value: this._value.toString() };\n }\n\n toBigInt() {\n return BigInt(this._value);\n }\n\n /**\n * @inheritDoc\n */\n static read(reader) {\n const { size } = this.prototype;\n if (size === 64) return new this(reader.readBigUInt64BE());\n return new this(\n ...Array.from({ length: size / 64 }, () =>\n reader.readBigUInt64BE()\n ).reverse()\n );\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (value instanceof this) {\n value = value._value;\n } else if (\n typeof value !== 'bigint' ||\n value > this.MAX_VALUE ||\n value < this.MIN_VALUE\n )\n throw new XdrWriterError(`${value} is not a ${this.name}`);\n\n const { unsigned, size } = this.prototype;\n if (size === 64) {\n if (unsigned) {\n writer.writeBigUInt64BE(value);\n } else {\n writer.writeBigInt64BE(value);\n }\n } else {\n for (const part of sliceBigInt(value, size, 64).reverse()) {\n if (unsigned) {\n writer.writeBigUInt64BE(part);\n } else {\n writer.writeBigInt64BE(part);\n }\n }\n }\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return typeof value === 'bigint' || value instanceof this;\n }\n\n /**\n * Create instance from string\n * @param {String} string - Numeric representation\n * @return {LargeInt}\n */\n static fromString(string) {\n return new this(string);\n }\n\n static MAX_VALUE = 0n;\n\n static MIN_VALUE = 0n;\n\n /**\n * @internal\n * @return {void}\n */\n static defineIntBoundaries() {\n const [min, max] = calculateBigIntBoundaries(\n this.prototype.size,\n this.prototype.unsigned\n );\n this.MIN_VALUE = min;\n this.MAX_VALUE = max;\n }\n}\n", "import { XdrCompositeType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Opaque extends XdrCompositeType {\n constructor(length) {\n super();\n this._length = length;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n return reader.read(this._length);\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n const { length } = value;\n if (length !== this._length)\n throw new XdrWriterError(\n `got ${value.length} bytes, expected ${this._length}`\n );\n writer.write(value, length);\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n return Buffer.isBuffer(value) && value.length === this._length;\n }\n}\n", "import { Bool } from './bool';\nimport { XdrPrimitiveType } from './xdr-type';\n\nexport class Option extends XdrPrimitiveType {\n constructor(childType) {\n super();\n this._childType = childType;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n if (Bool.read(reader)) {\n return this._childType.read(reader);\n }\n\n return undefined;\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n const isPresent = value !== null && value !== undefined;\n\n Bool.write(isPresent, writer);\n\n if (isPresent) {\n this._childType.write(value, writer);\n }\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n if (value === null || value === undefined) {\n return true;\n }\n return this._childType.isValid(value);\n }\n}\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrDefinitionError } from './errors';\n\nexport class Quadruple extends XdrPrimitiveType {\n static read() {\n throw new XdrDefinitionError('quadruple not supported');\n }\n\n static write() {\n throw new XdrDefinitionError('quadruple not supported');\n }\n\n static isValid() {\n return false;\n }\n}\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrDefinitionError } from './errors';\n\nexport class Reference extends XdrPrimitiveType {\n /* jshint unused: false */\n resolve() {\n throw new XdrDefinitionError(\n '\"resolve\" method should be implemented in the descendant class'\n );\n }\n}\n", "/**\n * @internal\n */\nimport { XdrReaderError } from '../errors';\n\nexport class XdrReader {\n /**\n * @constructor\n * @param {Buffer} source - Buffer containing serialized data\n */\n constructor(source) {\n if (!Buffer.isBuffer(source)) {\n if (\n source instanceof Array ||\n Array.isArray(source) ||\n ArrayBuffer.isView(source)\n ) {\n source = Buffer.from(source);\n } else {\n throw new XdrReaderError(`source invalid: ${source}`);\n }\n }\n\n this._buffer = source;\n this._length = source.length;\n this._index = 0;\n }\n\n /**\n * @type {Buffer}\n * @private\n * @readonly\n */\n _buffer;\n /**\n * @type {Number}\n * @private\n * @readonly\n */\n _length;\n /**\n * @type {Number}\n * @private\n * @readonly\n */\n _index;\n\n /**\n * Check if the reader reached the end of the input buffer\n * @return {Boolean}\n */\n get eof() {\n return this._index === this._length;\n }\n\n /**\n * Advance reader position, check padding and overflow\n * @param {Number} size - Bytes to read\n * @return {Number} Position to read from\n * @private\n */\n advance(size) {\n const from = this._index;\n // advance cursor position\n this._index += size;\n // check buffer boundaries\n if (this._length < this._index)\n throw new XdrReaderError(\n 'attempt to read outside the boundary of the buffer'\n );\n // check that padding is correct for Opaque and String\n const padding = 4 - (size % 4 || 4);\n if (padding > 0) {\n for (let i = 0; i < padding; i++)\n if (this._buffer[this._index + i] !== 0)\n // all bytes in the padding should be zeros\n throw new XdrReaderError('invalid padding');\n this._index += padding;\n }\n return from;\n }\n\n /**\n * Reset reader position\n * @return {void}\n */\n rewind() {\n this._index = 0;\n }\n\n /**\n * Read byte array from the buffer\n * @param {Number} size - Bytes to read\n * @return {Buffer} - Sliced portion of the underlying buffer\n */\n read(size) {\n const from = this.advance(size);\n return this._buffer.subarray(from, from + size);\n }\n\n /**\n * Read i32 from buffer\n * @return {Number}\n */\n readInt32BE() {\n return this._buffer.readInt32BE(this.advance(4));\n }\n\n /**\n * Read u32 from buffer\n * @return {Number}\n */\n readUInt32BE() {\n return this._buffer.readUInt32BE(this.advance(4));\n }\n\n /**\n * Read i64 from buffer\n * @return {BigInt}\n */\n readBigInt64BE() {\n return this._buffer.readBigInt64BE(this.advance(8));\n }\n\n /**\n * Read u64 from buffer\n * @return {BigInt}\n */\n readBigUInt64BE() {\n return this._buffer.readBigUInt64BE(this.advance(8));\n }\n\n /**\n * Read float from buffer\n * @return {Number}\n */\n readFloatBE() {\n return this._buffer.readFloatBE(this.advance(4));\n }\n\n /**\n * Read double from buffer\n * @return {Number}\n */\n readDoubleBE() {\n return this._buffer.readDoubleBE(this.advance(8));\n }\n\n /**\n * Ensure that input buffer has been consumed in full, otherwise it's a type mismatch\n * @return {void}\n * @throws {XdrReaderError}\n */\n ensureInputConsumed() {\n if (this._index !== this._length)\n throw new XdrReaderError(\n `invalid XDR contract typecast - source buffer not entirely consumed`\n );\n }\n}\n", "const BUFFER_CHUNK = 8192; // 8 KB chunk size increment\n\n/**\n * @internal\n */\nexport class XdrWriter {\n /**\n * @param {Buffer|Number} [buffer] - Optional destination buffer\n */\n constructor(buffer) {\n if (typeof buffer === 'number') {\n buffer = Buffer.allocUnsafe(buffer);\n } else if (!(buffer instanceof Buffer)) {\n buffer = Buffer.allocUnsafe(BUFFER_CHUNK);\n }\n this._buffer = buffer;\n this._length = buffer.length;\n }\n\n /**\n * @type {Buffer}\n * @private\n * @readonly\n */\n _buffer;\n /**\n * @type {Number}\n * @private\n * @readonly\n */\n _length;\n /**\n * @type {Number}\n * @private\n * @readonly\n */\n _index = 0;\n\n /**\n * Advance writer position, write padding if needed, auto-resize the buffer\n * @param {Number} size - Bytes to write\n * @return {Number} Position to read from\n * @private\n */\n alloc(size) {\n const from = this._index;\n // advance cursor position\n this._index += size;\n // ensure sufficient buffer size\n if (this._length < this._index) {\n this.resize(this._index);\n }\n return from;\n }\n\n /**\n * Increase size of the underlying buffer\n * @param {Number} minRequiredSize - Minimum required buffer size\n * @return {void}\n * @private\n */\n resize(minRequiredSize) {\n // calculate new length, align new buffer length by chunk size\n const newLength = Math.ceil(minRequiredSize / BUFFER_CHUNK) * BUFFER_CHUNK;\n // create new buffer and copy previous data\n const newBuffer = Buffer.allocUnsafe(newLength);\n this._buffer.copy(newBuffer, 0, 0, this._length);\n // update references\n this._buffer = newBuffer;\n this._length = newLength;\n }\n\n /**\n * Return XDR-serialized value\n * @return {Buffer}\n */\n finalize() {\n // clip underlying buffer to the actually written value\n return this._buffer.subarray(0, this._index);\n }\n\n /**\n * Return XDR-serialized value as byte array\n * @return {Number[]}\n */\n toArray() {\n return [...this.finalize()];\n }\n\n /**\n * Write byte array from the buffer\n * @param {Buffer|String} value - Bytes/string to write\n * @param {Number} size - Size in bytes\n * @return {XdrReader} - XdrReader wrapper on top of a subarray\n */\n write(value, size) {\n if (typeof value === 'string') {\n // serialize string directly to the output buffer\n const offset = this.alloc(size);\n this._buffer.write(value, offset, 'utf8');\n } else {\n // copy data to the output buffer\n if (!(value instanceof Buffer)) {\n value = Buffer.from(value);\n }\n const offset = this.alloc(size);\n value.copy(this._buffer, offset, 0, size);\n }\n\n // add padding for 4-byte XDR alignment\n const padding = 4 - (size % 4 || 4);\n if (padding > 0) {\n const offset = this.alloc(padding);\n this._buffer.fill(0, offset, this._index);\n }\n }\n\n /**\n * Write i32 from buffer\n * @param {Number} value - Value to serialize\n * @return {void}\n */\n writeInt32BE(value) {\n const offset = this.alloc(4);\n this._buffer.writeInt32BE(value, offset);\n }\n\n /**\n * Write u32 from buffer\n * @param {Number} value - Value to serialize\n * @return {void}\n */\n writeUInt32BE(value) {\n const offset = this.alloc(4);\n this._buffer.writeUInt32BE(value, offset);\n }\n\n /**\n * Write i64 from buffer\n * @param {BigInt} value - Value to serialize\n * @return {void}\n */\n writeBigInt64BE(value) {\n const offset = this.alloc(8);\n this._buffer.writeBigInt64BE(value, offset);\n }\n\n /**\n * Write u64 from buffer\n * @param {BigInt} value - Value to serialize\n * @return {void}\n */\n writeBigUInt64BE(value) {\n const offset = this.alloc(8);\n this._buffer.writeBigUInt64BE(value, offset);\n }\n\n /**\n * Write float from buffer\n * @param {Number} value - Value to serialize\n * @return {void}\n */\n writeFloatBE(value) {\n const offset = this.alloc(4);\n this._buffer.writeFloatBE(value, offset);\n }\n\n /**\n * Write double from buffer\n * @param {Number} value - Value to serialize\n * @return {void}\n */\n writeDoubleBE(value) {\n const offset = this.alloc(8);\n this._buffer.writeDoubleBE(value, offset);\n }\n\n static bufferChunkSize = BUFFER_CHUNK;\n}\n", "import { UnsignedInt } from './unsigned-int';\nimport { XdrCompositeType } from './xdr-type';\nimport { XdrReaderError, XdrWriterError } from './errors';\n\nexport class String extends XdrCompositeType {\n constructor(maxLength = UnsignedInt.MAX_VALUE) {\n super();\n this._maxLength = maxLength;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n const size = UnsignedInt.read(reader);\n if (size > this._maxLength)\n throw new XdrReaderError(\n `saw ${size} length String, max allowed is ${this._maxLength}`\n );\n\n return reader.read(size);\n }\n\n readString(reader) {\n return this.read(reader).toString('utf8');\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n // calculate string byte size before writing\n const size =\n typeof value === 'string'\n ? Buffer.byteLength(value, 'utf8')\n : value.length;\n if (size > this._maxLength)\n throw new XdrWriterError(\n `got ${value.length} bytes, max allowed is ${this._maxLength}`\n );\n // write size info\n UnsignedInt.write(size, writer);\n writer.write(value, size);\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n if (typeof value === 'string') {\n return Buffer.byteLength(value, 'utf8') <= this._maxLength;\n }\n if (value instanceof Array || Buffer.isBuffer(value)) {\n return value.length <= this._maxLength;\n }\n return false;\n }\n}\n", "import { Reference } from './reference';\nimport { XdrCompositeType, isSerializableIsh } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Struct extends XdrCompositeType {\n constructor(attributes) {\n super();\n this._attributes = attributes || {};\n }\n\n /**\n * @inheritDoc\n */\n static read(reader) {\n const attributes = {};\n for (const [fieldName, type] of this._fields) {\n attributes[fieldName] = type.read(reader);\n }\n return new this(attributes);\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (!this.isValid(value)) {\n throw new XdrWriterError(\n `${value} has struct name ${value?.constructor?.structName}, not ${\n this.structName\n }: ${JSON.stringify(value)}`\n );\n }\n\n for (const [fieldName, type] of this._fields) {\n const attribute = value._attributes[fieldName];\n type.write(attribute, writer);\n }\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return (\n value?.constructor?.structName === this.structName ||\n isSerializableIsh(value, this)\n );\n }\n\n static create(context, name, fields) {\n const ChildStruct = class extends Struct {};\n\n ChildStruct.structName = name;\n\n context.results[name] = ChildStruct;\n\n const mappedFields = new Array(fields.length);\n for (let i = 0; i < fields.length; i++) {\n const fieldDescriptor = fields[i];\n const fieldName = fieldDescriptor[0];\n let field = fieldDescriptor[1];\n if (field instanceof Reference) {\n field = field.resolve(context);\n }\n mappedFields[i] = [fieldName, field];\n // create accessors\n ChildStruct.prototype[fieldName] = createAccessorMethod(fieldName);\n }\n\n ChildStruct._fields = mappedFields;\n\n return ChildStruct;\n }\n}\n\nfunction createAccessorMethod(name) {\n return function readOrWriteAttribute(value) {\n if (value !== undefined) {\n this._attributes[name] = value;\n }\n return this._attributes[name];\n };\n}\n", "export * from './int';\nexport * from './hyper';\nexport * from './unsigned-int';\nexport * from './unsigned-hyper';\nexport * from './large-int';\n\nexport * from './float';\nexport * from './double';\nexport * from './quadruple';\n\nexport * from './bool';\n\nexport * from './string';\n\nexport * from './opaque';\nexport * from './var-opaque';\n\nexport * from './array';\nexport * from './var-array';\n\nexport * from './option';\nexport * from './void';\n\nexport * from './enum';\nexport * from './struct';\nexport * from './union';\n", "import { Void } from './void';\nimport { Reference } from './reference';\nimport { XdrCompositeType, isSerializableIsh } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Union extends XdrCompositeType {\n constructor(aSwitch, value) {\n super();\n this.set(aSwitch, value);\n }\n\n set(aSwitch, value) {\n if (typeof aSwitch === 'string') {\n aSwitch = this.constructor._switchOn.fromName(aSwitch);\n }\n\n this._switch = aSwitch;\n const arm = this.constructor.armForSwitch(this._switch);\n this._arm = arm;\n this._armType = arm === Void ? Void : this.constructor._arms[arm];\n this._value = value;\n }\n\n get(armName = this._arm) {\n if (this._arm !== Void && this._arm !== armName)\n throw new TypeError(`${armName} not set`);\n return this._value;\n }\n\n switch() {\n return this._switch;\n }\n\n arm() {\n return this._arm;\n }\n\n armType() {\n return this._armType;\n }\n\n value() {\n return this._value;\n }\n\n static armForSwitch(aSwitch) {\n const member = this._switches.get(aSwitch);\n if (member !== undefined) {\n return member;\n }\n if (this._defaultArm) {\n return this._defaultArm;\n }\n throw new TypeError(`Bad union switch: ${aSwitch}`);\n }\n\n static armTypeForArm(arm) {\n if (arm === Void) {\n return Void;\n }\n return this._arms[arm];\n }\n\n /**\n * @inheritDoc\n */\n static read(reader) {\n const aSwitch = this._switchOn.read(reader);\n const arm = this.armForSwitch(aSwitch);\n const armType = arm === Void ? Void : this._arms[arm];\n let value;\n if (armType !== undefined) {\n value = armType.read(reader);\n } else {\n value = arm.read(reader);\n }\n return new this(aSwitch, value);\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (!this.isValid(value)) {\n throw new XdrWriterError(\n `${value} has union name ${value?.unionName}, not ${\n this.unionName\n }: ${JSON.stringify(value)}`\n );\n }\n\n this._switchOn.write(value.switch(), writer);\n value.armType().write(value.value(), writer);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n return (\n value?.constructor?.unionName === this.unionName ||\n isSerializableIsh(value, this)\n );\n }\n\n static create(context, name, config) {\n const ChildUnion = class extends Union {};\n\n ChildUnion.unionName = name;\n context.results[name] = ChildUnion;\n\n if (config.switchOn instanceof Reference) {\n ChildUnion._switchOn = config.switchOn.resolve(context);\n } else {\n ChildUnion._switchOn = config.switchOn;\n }\n\n ChildUnion._switches = new Map();\n ChildUnion._arms = {};\n\n // resolve default arm\n let defaultArm = config.defaultArm;\n if (defaultArm instanceof Reference) {\n defaultArm = defaultArm.resolve(context);\n }\n\n ChildUnion._defaultArm = defaultArm;\n\n for (const [aSwitch, armName] of config.switches) {\n const key =\n typeof aSwitch === 'string'\n ? ChildUnion._switchOn.fromName(aSwitch)\n : aSwitch;\n\n ChildUnion._switches.set(key, armName);\n }\n\n // add enum-based helpers\n // NOTE: we don't have good notation for \"is a subclass of XDR.Enum\",\n // and so we use the following check (does _switchOn have a `values`\n // attribute) to approximate the intent.\n if (ChildUnion._switchOn.values !== undefined) {\n for (const aSwitch of ChildUnion._switchOn.values()) {\n // Add enum-based constructors\n ChildUnion[aSwitch.name] = function ctr(value) {\n return new ChildUnion(aSwitch, value);\n };\n\n // Add enum-based \"set\" helpers\n ChildUnion.prototype[aSwitch.name] = function set(value) {\n return this.set(aSwitch, value);\n };\n }\n }\n\n if (config.arms) {\n for (const [armsName, value] of Object.entries(config.arms)) {\n ChildUnion._arms[armsName] =\n value instanceof Reference ? value.resolve(context) : value;\n // Add arm accessor helpers\n if (value !== Void) {\n ChildUnion.prototype[armsName] = function get() {\n return this.get(armsName);\n };\n }\n }\n }\n\n return ChildUnion;\n }\n}\n", "import { LargeInt } from './large-int';\n\nexport class UnsignedHyper extends LargeInt {\n /**\n * @param {Array} parts - Slices to encode\n */\n constructor(...args) {\n super(args);\n }\n\n get low() {\n return Number(this._value & 0xffffffffn) << 0;\n }\n\n get high() {\n return Number(this._value >> 32n) >> 0;\n }\n\n get size() {\n return 64;\n }\n\n get unsigned() {\n return true;\n }\n\n /**\n * Create UnsignedHyper instance from two [high][low] i32 values\n * @param {Number} low - Low part of u64 number\n * @param {Number} high - High part of u64 number\n * @return {UnsignedHyper}\n */\n static fromBits(low, high) {\n return new this(low, high);\n }\n}\n\nUnsignedHyper.defineIntBoundaries();\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nconst MAX_VALUE = 4294967295;\nconst MIN_VALUE = 0;\n\nexport class UnsignedInt extends XdrPrimitiveType {\n /**\n * @inheritDoc\n */\n static read(reader) {\n return reader.readUInt32BE();\n }\n\n /**\n * @inheritDoc\n */\n static write(value, writer) {\n if (\n typeof value !== 'number' ||\n !(value >= MIN_VALUE && value <= MAX_VALUE) ||\n value % 1 !== 0\n )\n throw new XdrWriterError('invalid u32 value');\n\n writer.writeUInt32BE(value);\n }\n\n /**\n * @inheritDoc\n */\n static isValid(value) {\n if (typeof value !== 'number' || value % 1 !== 0) {\n return false;\n }\n\n return value >= MIN_VALUE && value <= MAX_VALUE;\n }\n}\n\nUnsignedInt.MAX_VALUE = MAX_VALUE;\nUnsignedInt.MIN_VALUE = MIN_VALUE;\n", "import { UnsignedInt } from './unsigned-int';\nimport { XdrCompositeType } from './xdr-type';\nimport { XdrReaderError, XdrWriterError } from './errors';\n\nexport class VarArray extends XdrCompositeType {\n constructor(childType, maxLength = UnsignedInt.MAX_VALUE) {\n super();\n this._childType = childType;\n this._maxLength = maxLength;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n const length = UnsignedInt.read(reader);\n if (length > this._maxLength)\n throw new XdrReaderError(\n `saw ${length} length VarArray, max allowed is ${this._maxLength}`\n );\n\n const result = new Array(length);\n for (let i = 0; i < length; i++) {\n result[i] = this._childType.read(reader);\n }\n return result;\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n if (!(value instanceof Array))\n throw new XdrWriterError(`value is not array`);\n\n if (value.length > this._maxLength)\n throw new XdrWriterError(\n `got array of size ${value.length}, max allowed is ${this._maxLength}`\n );\n\n UnsignedInt.write(value.length, writer);\n for (const child of value) {\n this._childType.write(child, writer);\n }\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n if (!(value instanceof Array) || value.length > this._maxLength) {\n return false;\n }\n for (const child of value) {\n if (!this._childType.isValid(child)) return false;\n }\n return true;\n }\n}\n", "import { UnsignedInt } from './unsigned-int';\nimport { XdrCompositeType } from './xdr-type';\nimport { XdrReaderError, XdrWriterError } from './errors';\n\nexport class VarOpaque extends XdrCompositeType {\n constructor(maxLength = UnsignedInt.MAX_VALUE) {\n super();\n this._maxLength = maxLength;\n }\n\n /**\n * @inheritDoc\n */\n read(reader) {\n const size = UnsignedInt.read(reader);\n if (size > this._maxLength)\n throw new XdrReaderError(\n `saw ${size} length VarOpaque, max allowed is ${this._maxLength}`\n );\n return reader.read(size);\n }\n\n /**\n * @inheritDoc\n */\n write(value, writer) {\n const { length } = value;\n if (value.length > this._maxLength)\n throw new XdrWriterError(\n `got ${value.length} bytes, max allowed is ${this._maxLength}`\n );\n // write size info\n UnsignedInt.write(length, writer);\n writer.write(value, length);\n }\n\n /**\n * @inheritDoc\n */\n isValid(value) {\n return Buffer.isBuffer(value) && value.length <= this._maxLength;\n }\n}\n", "import { XdrPrimitiveType } from './xdr-type';\nimport { XdrWriterError } from './errors';\n\nexport class Void extends XdrPrimitiveType {\n /* jshint unused: false */\n\n static read() {\n return undefined;\n }\n\n static write(value) {\n if (value !== undefined)\n throw new XdrWriterError('trying to write value to a void slot');\n }\n\n static isValid(value) {\n return value === undefined;\n }\n}\n", "import { XdrReader } from './serialization/xdr-reader';\nimport { XdrWriter } from './serialization/xdr-writer';\nimport { XdrNotImplementedDefinitionError } from './errors';\n\nclass XdrType {\n /**\n * Encode value to XDR format\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {String|Buffer}\n */\n toXDR(format = 'raw') {\n if (!this.write) return this.constructor.toXDR(this, format);\n\n const writer = new XdrWriter();\n this.write(this, writer);\n return encodeResult(writer.finalize(), format);\n }\n\n /**\n * Decode XDR-encoded value\n * @param {Buffer|String} input - XDR-encoded input data\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {this}\n */\n fromXDR(input, format = 'raw') {\n if (!this.read) return this.constructor.fromXDR(input, format);\n\n const reader = new XdrReader(decodeInput(input, format));\n const result = this.read(reader);\n reader.ensureInputConsumed();\n return result;\n }\n\n /**\n * Check whether input contains a valid XDR-encoded value\n * @param {Buffer|String} input - XDR-encoded input data\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {Boolean}\n */\n validateXDR(input, format = 'raw') {\n try {\n this.fromXDR(input, format);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Encode value to XDR format\n * @param {this} value - Value to serialize\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {Buffer}\n */\n static toXDR(value, format = 'raw') {\n const writer = new XdrWriter();\n this.write(value, writer);\n return encodeResult(writer.finalize(), format);\n }\n\n /**\n * Decode XDR-encoded value\n * @param {Buffer|String} input - XDR-encoded input data\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {this}\n */\n static fromXDR(input, format = 'raw') {\n const reader = new XdrReader(decodeInput(input, format));\n const result = this.read(reader);\n reader.ensureInputConsumed();\n return result;\n }\n\n /**\n * Check whether input contains a valid XDR-encoded value\n * @param {Buffer|String} input - XDR-encoded input data\n * @param {XdrEncodingFormat} [format] - Encoding format (one of \"raw\", \"hex\", \"base64\")\n * @return {Boolean}\n */\n static validateXDR(input, format = 'raw') {\n try {\n this.fromXDR(input, format);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport class XdrPrimitiveType extends XdrType {\n /**\n * Read value from the XDR-serialized input\n * @param {XdrReader} reader - XdrReader instance\n * @return {this}\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n static read(reader) {\n throw new XdrNotImplementedDefinitionError();\n }\n\n /**\n * Write XDR value to the buffer\n * @param {this} value - Value to write\n * @param {XdrWriter} writer - XdrWriter instance\n * @return {void}\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n static write(value, writer) {\n throw new XdrNotImplementedDefinitionError();\n }\n\n /**\n * Check whether XDR primitive value is valid\n * @param {this} value - Value to check\n * @return {Boolean}\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n static isValid(value) {\n return false;\n }\n}\n\nexport class XdrCompositeType extends XdrType {\n // Every descendant should implement two methods: read(reader) and write(value, writer)\n\n /**\n * Check whether XDR primitive value is valid\n * @param {this} value - Value to check\n * @return {Boolean}\n * @abstract\n */\n // eslint-disable-next-line no-unused-vars\n isValid(value) {\n return false;\n }\n}\n\nclass InvalidXdrEncodingFormatError extends TypeError {\n constructor(format) {\n super(`Invalid format ${format}, must be one of \"raw\", \"hex\", \"base64\"`);\n }\n}\n\nfunction encodeResult(buffer, format) {\n switch (format) {\n case 'raw':\n return buffer;\n case 'hex':\n return buffer.toString('hex');\n case 'base64':\n return buffer.toString('base64');\n default:\n throw new InvalidXdrEncodingFormatError(format);\n }\n}\n\nfunction decodeInput(input, format) {\n switch (format) {\n case 'raw':\n return input;\n case 'hex':\n return Buffer.from(input, 'hex');\n case 'base64':\n return Buffer.from(input, 'base64');\n default:\n throw new InvalidXdrEncodingFormatError(format);\n }\n}\n\n/**\n * Provides a \"duck typed\" version of the native `instanceof` for read/write.\n *\n * \"Duck typing\" means if the parameter _looks like_ and _acts like_ a duck\n * (i.e. the type we're checking), it will be treated as that type.\n *\n * In this case, the \"type\" we're looking for is \"like XdrType\" but also \"like\n * XdrCompositeType|XdrPrimitiveType\" (i.e. serializable), but also conditioned\n * on a particular subclass of \"XdrType\" (e.g. {@link Union} which extends\n * XdrType).\n *\n * This makes the package resilient to downstream systems that may be combining\n * many versions of a package across its stack that are technically compatible\n * but fail `instanceof` checks due to cross-pollination.\n */\nexport function isSerializableIsh(value, subtype) {\n return (\n value !== undefined &&\n value !== null && // prereqs, otherwise `getPrototypeOf` pops\n (value instanceof subtype || // quickest check\n // Do an initial constructor check (anywhere is fine so that children of\n // `subtype` still work), then\n (hasConstructor(value, subtype) &&\n // ensure it has read/write methods, then\n typeof value.constructor.read === 'function' &&\n typeof value.constructor.write === 'function' &&\n // ensure XdrType is in the prototype chain\n hasConstructor(value, 'XdrType')))\n );\n}\n\n/** Tries to find `subtype` in any of the constructors or meta of `instance`. */\nexport function hasConstructor(instance, subtype) {\n do {\n const ctor = instance.constructor;\n if (ctor.name === subtype) {\n return true;\n }\n } while ((instance = Object.getPrototypeOf(instance)));\n return false;\n}\n\n/**\n * @typedef {'raw'|'hex'|'base64'} XdrEncodingFormat\n */\n", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "", "// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/browser.js\");\n", "", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar XDR = _interopRequireWildcard(require(\"@stellar/js-xdr\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, \"default\": e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\n// Automatically generated by xdrgen\n// DO NOT EDIT or your changes may be overwritten\n\n/* jshint maxstatements:2147483647 */\n/* jshint esnext:true */\n\nvar types = XDR.config(function (xdr) {\n // Workaround for https://github.com/stellar/xdrgen/issues/152\n //\n // The \"correct\" way would be to replace bare instances of each constant with\n // xdr.lookup(\"...\"), but that's more error-prone.\n var SCSYMBOL_LIMIT = 32;\n var SC_SPEC_DOC_LIMIT = 1024;\n\n // === xdr source ============================================================\n //\n // typedef opaque Value<>;\n //\n // ===========================================================================\n xdr.typedef(\"Value\", xdr.varOpaque());\n\n // === xdr source ============================================================\n //\n // struct SCPBallot\n // {\n // uint32 counter; // n\n // Value value; // x\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpBallot\", [[\"counter\", xdr.lookup(\"Uint32\")], [\"value\", xdr.lookup(\"Value\")]]);\n\n // === xdr source ============================================================\n //\n // enum SCPStatementType\n // {\n // SCP_ST_PREPARE = 0,\n // SCP_ST_CONFIRM = 1,\n // SCP_ST_EXTERNALIZE = 2,\n // SCP_ST_NOMINATE = 3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScpStatementType\", {\n scpStPrepare: 0,\n scpStConfirm: 1,\n scpStExternalize: 2,\n scpStNominate: 3\n });\n\n // === xdr source ============================================================\n //\n // struct SCPNomination\n // {\n // Hash quorumSetHash; // D\n // Value votes<>; // X\n // Value accepted<>; // Y\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpNomination\", [[\"quorumSetHash\", xdr.lookup(\"Hash\")], [\"votes\", xdr.varArray(xdr.lookup(\"Value\"), 2147483647)], [\"accepted\", xdr.varArray(xdr.lookup(\"Value\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // Hash quorumSetHash; // D\n // SCPBallot ballot; // b\n // SCPBallot* prepared; // p\n // SCPBallot* preparedPrime; // p'\n // uint32 nC; // c.n\n // uint32 nH; // h.n\n // }\n //\n // ===========================================================================\n xdr.struct(\"ScpStatementPrepare\", [[\"quorumSetHash\", xdr.lookup(\"Hash\")], [\"ballot\", xdr.lookup(\"ScpBallot\")], [\"prepared\", xdr.option(xdr.lookup(\"ScpBallot\"))], [\"preparedPrime\", xdr.option(xdr.lookup(\"ScpBallot\"))], [\"nC\", xdr.lookup(\"Uint32\")], [\"nH\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // SCPBallot ballot; // b\n // uint32 nPrepared; // p.n\n // uint32 nCommit; // c.n\n // uint32 nH; // h.n\n // Hash quorumSetHash; // D\n // }\n //\n // ===========================================================================\n xdr.struct(\"ScpStatementConfirm\", [[\"ballot\", xdr.lookup(\"ScpBallot\")], [\"nPrepared\", xdr.lookup(\"Uint32\")], [\"nCommit\", xdr.lookup(\"Uint32\")], [\"nH\", xdr.lookup(\"Uint32\")], [\"quorumSetHash\", xdr.lookup(\"Hash\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // SCPBallot commit; // c\n // uint32 nH; // h.n\n // Hash commitQuorumSetHash; // D used before EXTERNALIZE\n // }\n //\n // ===========================================================================\n xdr.struct(\"ScpStatementExternalize\", [[\"commit\", xdr.lookup(\"ScpBallot\")], [\"nH\", xdr.lookup(\"Uint32\")], [\"commitQuorumSetHash\", xdr.lookup(\"Hash\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (SCPStatementType type)\n // {\n // case SCP_ST_PREPARE:\n // struct\n // {\n // Hash quorumSetHash; // D\n // SCPBallot ballot; // b\n // SCPBallot* prepared; // p\n // SCPBallot* preparedPrime; // p'\n // uint32 nC; // c.n\n // uint32 nH; // h.n\n // } prepare;\n // case SCP_ST_CONFIRM:\n // struct\n // {\n // SCPBallot ballot; // b\n // uint32 nPrepared; // p.n\n // uint32 nCommit; // c.n\n // uint32 nH; // h.n\n // Hash quorumSetHash; // D\n // } confirm;\n // case SCP_ST_EXTERNALIZE:\n // struct\n // {\n // SCPBallot commit; // c\n // uint32 nH; // h.n\n // Hash commitQuorumSetHash; // D used before EXTERNALIZE\n // } externalize;\n // case SCP_ST_NOMINATE:\n // SCPNomination nominate;\n // }\n //\n // ===========================================================================\n xdr.union(\"ScpStatementPledges\", {\n switchOn: xdr.lookup(\"ScpStatementType\"),\n switchName: \"type\",\n switches: [[\"scpStPrepare\", \"prepare\"], [\"scpStConfirm\", \"confirm\"], [\"scpStExternalize\", \"externalize\"], [\"scpStNominate\", \"nominate\"]],\n arms: {\n prepare: xdr.lookup(\"ScpStatementPrepare\"),\n confirm: xdr.lookup(\"ScpStatementConfirm\"),\n externalize: xdr.lookup(\"ScpStatementExternalize\"),\n nominate: xdr.lookup(\"ScpNomination\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SCPStatement\n // {\n // NodeID nodeID; // v\n // uint64 slotIndex; // i\n //\n // union switch (SCPStatementType type)\n // {\n // case SCP_ST_PREPARE:\n // struct\n // {\n // Hash quorumSetHash; // D\n // SCPBallot ballot; // b\n // SCPBallot* prepared; // p\n // SCPBallot* preparedPrime; // p'\n // uint32 nC; // c.n\n // uint32 nH; // h.n\n // } prepare;\n // case SCP_ST_CONFIRM:\n // struct\n // {\n // SCPBallot ballot; // b\n // uint32 nPrepared; // p.n\n // uint32 nCommit; // c.n\n // uint32 nH; // h.n\n // Hash quorumSetHash; // D\n // } confirm;\n // case SCP_ST_EXTERNALIZE:\n // struct\n // {\n // SCPBallot commit; // c\n // uint32 nH; // h.n\n // Hash commitQuorumSetHash; // D used before EXTERNALIZE\n // } externalize;\n // case SCP_ST_NOMINATE:\n // SCPNomination nominate;\n // }\n // pledges;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpStatement\", [[\"nodeId\", xdr.lookup(\"NodeId\")], [\"slotIndex\", xdr.lookup(\"Uint64\")], [\"pledges\", xdr.lookup(\"ScpStatementPledges\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCPEnvelope\n // {\n // SCPStatement statement;\n // Signature signature;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpEnvelope\", [[\"statement\", xdr.lookup(\"ScpStatement\")], [\"signature\", xdr.lookup(\"Signature\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCPQuorumSet\n // {\n // uint32 threshold;\n // NodeID validators<>;\n // SCPQuorumSet innerSets<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpQuorumSet\", [[\"threshold\", xdr.lookup(\"Uint32\")], [\"validators\", xdr.varArray(xdr.lookup(\"NodeId\"), 2147483647)], [\"innerSets\", xdr.varArray(xdr.lookup(\"ScpQuorumSet\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // typedef opaque Thresholds[4];\n //\n // ===========================================================================\n xdr.typedef(\"Thresholds\", xdr.opaque(4));\n\n // === xdr source ============================================================\n //\n // typedef string string32<32>;\n //\n // ===========================================================================\n xdr.typedef(\"String32\", xdr.string(32));\n\n // === xdr source ============================================================\n //\n // typedef string string64<64>;\n //\n // ===========================================================================\n xdr.typedef(\"String64\", xdr.string(64));\n\n // === xdr source ============================================================\n //\n // typedef int64 SequenceNumber;\n //\n // ===========================================================================\n xdr.typedef(\"SequenceNumber\", xdr.lookup(\"Int64\"));\n\n // === xdr source ============================================================\n //\n // typedef opaque DataValue<64>;\n //\n // ===========================================================================\n xdr.typedef(\"DataValue\", xdr.varOpaque(64));\n\n // === xdr source ============================================================\n //\n // typedef opaque AssetCode4[4];\n //\n // ===========================================================================\n xdr.typedef(\"AssetCode4\", xdr.opaque(4));\n\n // === xdr source ============================================================\n //\n // typedef opaque AssetCode12[12];\n //\n // ===========================================================================\n xdr.typedef(\"AssetCode12\", xdr.opaque(12));\n\n // === xdr source ============================================================\n //\n // enum AssetType\n // {\n // ASSET_TYPE_NATIVE = 0,\n // ASSET_TYPE_CREDIT_ALPHANUM4 = 1,\n // ASSET_TYPE_CREDIT_ALPHANUM12 = 2,\n // ASSET_TYPE_POOL_SHARE = 3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"AssetType\", {\n assetTypeNative: 0,\n assetTypeCreditAlphanum4: 1,\n assetTypeCreditAlphanum12: 2,\n assetTypePoolShare: 3\n });\n\n // === xdr source ============================================================\n //\n // union AssetCode switch (AssetType type)\n // {\n // case ASSET_TYPE_CREDIT_ALPHANUM4:\n // AssetCode4 assetCode4;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM12:\n // AssetCode12 assetCode12;\n //\n // // add other asset types here in the future\n // };\n //\n // ===========================================================================\n xdr.union(\"AssetCode\", {\n switchOn: xdr.lookup(\"AssetType\"),\n switchName: \"type\",\n switches: [[\"assetTypeCreditAlphanum4\", \"assetCode4\"], [\"assetTypeCreditAlphanum12\", \"assetCode12\"]],\n arms: {\n assetCode4: xdr.lookup(\"AssetCode4\"),\n assetCode12: xdr.lookup(\"AssetCode12\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct AlphaNum4\n // {\n // AssetCode4 assetCode;\n // AccountID issuer;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AlphaNum4\", [[\"assetCode\", xdr.lookup(\"AssetCode4\")], [\"issuer\", xdr.lookup(\"AccountId\")]]);\n\n // === xdr source ============================================================\n //\n // struct AlphaNum12\n // {\n // AssetCode12 assetCode;\n // AccountID issuer;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AlphaNum12\", [[\"assetCode\", xdr.lookup(\"AssetCode12\")], [\"issuer\", xdr.lookup(\"AccountId\")]]);\n\n // === xdr source ============================================================\n //\n // union Asset switch (AssetType type)\n // {\n // case ASSET_TYPE_NATIVE: // Not credit\n // void;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM4:\n // AlphaNum4 alphaNum4;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM12:\n // AlphaNum12 alphaNum12;\n //\n // // add other asset types here in the future\n // };\n //\n // ===========================================================================\n xdr.union(\"Asset\", {\n switchOn: xdr.lookup(\"AssetType\"),\n switchName: \"type\",\n switches: [[\"assetTypeNative\", xdr[\"void\"]()], [\"assetTypeCreditAlphanum4\", \"alphaNum4\"], [\"assetTypeCreditAlphanum12\", \"alphaNum12\"]],\n arms: {\n alphaNum4: xdr.lookup(\"AlphaNum4\"),\n alphaNum12: xdr.lookup(\"AlphaNum12\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct Price\n // {\n // int32 n; // numerator\n // int32 d; // denominator\n // };\n //\n // ===========================================================================\n xdr.struct(\"Price\", [[\"n\", xdr.lookup(\"Int32\")], [\"d\", xdr.lookup(\"Int32\")]]);\n\n // === xdr source ============================================================\n //\n // struct Liabilities\n // {\n // int64 buying;\n // int64 selling;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Liabilities\", [[\"buying\", xdr.lookup(\"Int64\")], [\"selling\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // enum ThresholdIndexes\n // {\n // THRESHOLD_MASTER_WEIGHT = 0,\n // THRESHOLD_LOW = 1,\n // THRESHOLD_MED = 2,\n // THRESHOLD_HIGH = 3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ThresholdIndices\", {\n thresholdMasterWeight: 0,\n thresholdLow: 1,\n thresholdMed: 2,\n thresholdHigh: 3\n });\n\n // === xdr source ============================================================\n //\n // enum LedgerEntryType\n // {\n // ACCOUNT = 0,\n // TRUSTLINE = 1,\n // OFFER = 2,\n // DATA = 3,\n // CLAIMABLE_BALANCE = 4,\n // LIQUIDITY_POOL = 5,\n // CONTRACT_DATA = 6,\n // CONTRACT_CODE = 7,\n // CONFIG_SETTING = 8,\n // TTL = 9\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LedgerEntryType\", {\n account: 0,\n trustline: 1,\n offer: 2,\n data: 3,\n claimableBalance: 4,\n liquidityPool: 5,\n contractData: 6,\n contractCode: 7,\n configSetting: 8,\n ttl: 9\n });\n\n // === xdr source ============================================================\n //\n // struct Signer\n // {\n // SignerKey key;\n // uint32 weight; // really only need 1 byte\n // };\n //\n // ===========================================================================\n xdr.struct(\"Signer\", [[\"key\", xdr.lookup(\"SignerKey\")], [\"weight\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // enum AccountFlags\n // { // masks for each flag\n //\n // // Flags set on issuer accounts\n // // TrustLines are created with authorized set to \"false\" requiring\n // // the issuer to set it for each TrustLine\n // AUTH_REQUIRED_FLAG = 0x1,\n // // If set, the authorized flag in TrustLines can be cleared\n // // otherwise, authorization cannot be revoked\n // AUTH_REVOCABLE_FLAG = 0x2,\n // // Once set, causes all AUTH_* flags to be read-only\n // AUTH_IMMUTABLE_FLAG = 0x4,\n // // Trustlines are created with clawback enabled set to \"true\",\n // // and claimable balances created from those trustlines are created\n // // with clawback enabled set to \"true\"\n // AUTH_CLAWBACK_ENABLED_FLAG = 0x8\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"AccountFlags\", {\n authRequiredFlag: 1,\n authRevocableFlag: 2,\n authImmutableFlag: 4,\n authClawbackEnabledFlag: 8\n });\n\n // === xdr source ============================================================\n //\n // const MASK_ACCOUNT_FLAGS = 0x7;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_ACCOUNT_FLAGS\", 0x7);\n\n // === xdr source ============================================================\n //\n // const MASK_ACCOUNT_FLAGS_V17 = 0xF;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_ACCOUNT_FLAGS_V17\", 0xF);\n\n // === xdr source ============================================================\n //\n // const MAX_SIGNERS = 20;\n //\n // ===========================================================================\n xdr[\"const\"](\"MAX_SIGNERS\", 20);\n\n // === xdr source ============================================================\n //\n // typedef AccountID* SponsorshipDescriptor;\n //\n // ===========================================================================\n xdr.typedef(\"SponsorshipDescriptor\", xdr.option(xdr.lookup(\"AccountId\")));\n\n // === xdr source ============================================================\n //\n // struct AccountEntryExtensionV3\n // {\n // // We can use this to add more fields, or because it is first, to\n // // change AccountEntryExtensionV3 into a union.\n // ExtensionPoint ext;\n //\n // // Ledger number at which `seqNum` took on its present value.\n // uint32 seqLedger;\n //\n // // Time at which `seqNum` took on its present value.\n // TimePoint seqTime;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AccountEntryExtensionV3\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"seqLedger\", xdr.lookup(\"Uint32\")], [\"seqTime\", xdr.lookup(\"TimePoint\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 3:\n // AccountEntryExtensionV3 v3;\n // }\n //\n // ===========================================================================\n xdr.union(\"AccountEntryExtensionV2Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [3, \"v3\"]],\n arms: {\n v3: xdr.lookup(\"AccountEntryExtensionV3\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct AccountEntryExtensionV2\n // {\n // uint32 numSponsored;\n // uint32 numSponsoring;\n // SponsorshipDescriptor signerSponsoringIDs;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 3:\n // AccountEntryExtensionV3 v3;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AccountEntryExtensionV2\", [[\"numSponsored\", xdr.lookup(\"Uint32\")], [\"numSponsoring\", xdr.lookup(\"Uint32\")], [\"signerSponsoringIDs\", xdr.varArray(xdr.lookup(\"SponsorshipDescriptor\"), xdr.lookup(\"MAX_SIGNERS\"))], [\"ext\", xdr.lookup(\"AccountEntryExtensionV2Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // AccountEntryExtensionV2 v2;\n // }\n //\n // ===========================================================================\n xdr.union(\"AccountEntryExtensionV1Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [2, \"v2\"]],\n arms: {\n v2: xdr.lookup(\"AccountEntryExtensionV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct AccountEntryExtensionV1\n // {\n // Liabilities liabilities;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // AccountEntryExtensionV2 v2;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AccountEntryExtensionV1\", [[\"liabilities\", xdr.lookup(\"Liabilities\")], [\"ext\", xdr.lookup(\"AccountEntryExtensionV1Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // AccountEntryExtensionV1 v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"AccountEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"AccountEntryExtensionV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct AccountEntry\n // {\n // AccountID accountID; // master public key for this account\n // int64 balance; // in stroops\n // SequenceNumber seqNum; // last sequence number used for this account\n // uint32 numSubEntries; // number of sub-entries this account has\n // // drives the reserve\n // AccountID* inflationDest; // Account to vote for during inflation\n // uint32 flags; // see AccountFlags\n //\n // string32 homeDomain; // can be used for reverse federation and memo lookup\n //\n // // fields used for signatures\n // // thresholds stores unsigned bytes: [weight of master|low|medium|high]\n // Thresholds thresholds;\n //\n // Signer signers; // possible signers for this account\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // AccountEntryExtensionV1 v1;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AccountEntry\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"balance\", xdr.lookup(\"Int64\")], [\"seqNum\", xdr.lookup(\"SequenceNumber\")], [\"numSubEntries\", xdr.lookup(\"Uint32\")], [\"inflationDest\", xdr.option(xdr.lookup(\"AccountId\"))], [\"flags\", xdr.lookup(\"Uint32\")], [\"homeDomain\", xdr.lookup(\"String32\")], [\"thresholds\", xdr.lookup(\"Thresholds\")], [\"signers\", xdr.varArray(xdr.lookup(\"Signer\"), xdr.lookup(\"MAX_SIGNERS\"))], [\"ext\", xdr.lookup(\"AccountEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // enum TrustLineFlags\n // {\n // // issuer has authorized account to perform transactions with its credit\n // AUTHORIZED_FLAG = 1,\n // // issuer has authorized account to maintain and reduce liabilities for its\n // // credit\n // AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG = 2,\n // // issuer has specified that it may clawback its credit, and that claimable\n // // balances created with its credit may also be clawed back\n // TRUSTLINE_CLAWBACK_ENABLED_FLAG = 4\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"TrustLineFlags\", {\n authorizedFlag: 1,\n authorizedToMaintainLiabilitiesFlag: 2,\n trustlineClawbackEnabledFlag: 4\n });\n\n // === xdr source ============================================================\n //\n // const MASK_TRUSTLINE_FLAGS = 1;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_TRUSTLINE_FLAGS\", 1);\n\n // === xdr source ============================================================\n //\n // const MASK_TRUSTLINE_FLAGS_V13 = 3;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_TRUSTLINE_FLAGS_V13\", 3);\n\n // === xdr source ============================================================\n //\n // const MASK_TRUSTLINE_FLAGS_V17 = 7;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_TRUSTLINE_FLAGS_V17\", 7);\n\n // === xdr source ============================================================\n //\n // enum LiquidityPoolType\n // {\n // LIQUIDITY_POOL_CONSTANT_PRODUCT = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LiquidityPoolType\", {\n liquidityPoolConstantProduct: 0\n });\n\n // === xdr source ============================================================\n //\n // union TrustLineAsset switch (AssetType type)\n // {\n // case ASSET_TYPE_NATIVE: // Not credit\n // void;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM4:\n // AlphaNum4 alphaNum4;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM12:\n // AlphaNum12 alphaNum12;\n //\n // case ASSET_TYPE_POOL_SHARE:\n // PoolID liquidityPoolID;\n //\n // // add other asset types here in the future\n // };\n //\n // ===========================================================================\n xdr.union(\"TrustLineAsset\", {\n switchOn: xdr.lookup(\"AssetType\"),\n switchName: \"type\",\n switches: [[\"assetTypeNative\", xdr[\"void\"]()], [\"assetTypeCreditAlphanum4\", \"alphaNum4\"], [\"assetTypeCreditAlphanum12\", \"alphaNum12\"], [\"assetTypePoolShare\", \"liquidityPoolId\"]],\n arms: {\n alphaNum4: xdr.lookup(\"AlphaNum4\"),\n alphaNum12: xdr.lookup(\"AlphaNum12\"),\n liquidityPoolId: xdr.lookup(\"PoolId\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"TrustLineEntryExtensionV2Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct TrustLineEntryExtensionV2\n // {\n // int32 liquidityPoolUseCount;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TrustLineEntryExtensionV2\", [[\"liquidityPoolUseCount\", xdr.lookup(\"Int32\")], [\"ext\", xdr.lookup(\"TrustLineEntryExtensionV2Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // TrustLineEntryExtensionV2 v2;\n // }\n //\n // ===========================================================================\n xdr.union(\"TrustLineEntryV1Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [2, \"v2\"]],\n arms: {\n v2: xdr.lookup(\"TrustLineEntryExtensionV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // Liabilities liabilities;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // TrustLineEntryExtensionV2 v2;\n // }\n // ext;\n // }\n //\n // ===========================================================================\n xdr.struct(\"TrustLineEntryV1\", [[\"liabilities\", xdr.lookup(\"Liabilities\")], [\"ext\", xdr.lookup(\"TrustLineEntryV1Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // struct\n // {\n // Liabilities liabilities;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // TrustLineEntryExtensionV2 v2;\n // }\n // ext;\n // } v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"TrustLineEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"TrustLineEntryV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TrustLineEntry\n // {\n // AccountID accountID; // account this trustline belongs to\n // TrustLineAsset asset; // type of asset (with issuer)\n // int64 balance; // how much of this asset the user has.\n // // Asset defines the unit for this;\n //\n // int64 limit; // balance cannot be above this\n // uint32 flags; // see TrustLineFlags\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // struct\n // {\n // Liabilities liabilities;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 2:\n // TrustLineEntryExtensionV2 v2;\n // }\n // ext;\n // } v1;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TrustLineEntry\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"asset\", xdr.lookup(\"TrustLineAsset\")], [\"balance\", xdr.lookup(\"Int64\")], [\"limit\", xdr.lookup(\"Int64\")], [\"flags\", xdr.lookup(\"Uint32\")], [\"ext\", xdr.lookup(\"TrustLineEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // enum OfferEntryFlags\n // {\n // // an offer with this flag will not act on and take a reverse offer of equal\n // // price\n // PASSIVE_FLAG = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"OfferEntryFlags\", {\n passiveFlag: 1\n });\n\n // === xdr source ============================================================\n //\n // const MASK_OFFERENTRY_FLAGS = 1;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_OFFERENTRY_FLAGS\", 1);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"OfferEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct OfferEntry\n // {\n // AccountID sellerID;\n // int64 offerID;\n // Asset selling; // A\n // Asset buying; // B\n // int64 amount; // amount of A\n //\n // /* price for this offer:\n // price of A in terms of B\n // price=AmountB/AmountA=priceNumerator/priceDenominator\n // price is after fees\n // */\n // Price price;\n // uint32 flags; // see OfferEntryFlags\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"OfferEntry\", [[\"sellerId\", xdr.lookup(\"AccountId\")], [\"offerId\", xdr.lookup(\"Int64\")], [\"selling\", xdr.lookup(\"Asset\")], [\"buying\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")], [\"price\", xdr.lookup(\"Price\")], [\"flags\", xdr.lookup(\"Uint32\")], [\"ext\", xdr.lookup(\"OfferEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"DataEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct DataEntry\n // {\n // AccountID accountID; // account this data belongs to\n // string64 dataName;\n // DataValue dataValue;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"DataEntry\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"dataName\", xdr.lookup(\"String64\")], [\"dataValue\", xdr.lookup(\"DataValue\")], [\"ext\", xdr.lookup(\"DataEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // enum ClaimPredicateType\n // {\n // CLAIM_PREDICATE_UNCONDITIONAL = 0,\n // CLAIM_PREDICATE_AND = 1,\n // CLAIM_PREDICATE_OR = 2,\n // CLAIM_PREDICATE_NOT = 3,\n // CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME = 4,\n // CLAIM_PREDICATE_BEFORE_RELATIVE_TIME = 5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimPredicateType\", {\n claimPredicateUnconditional: 0,\n claimPredicateAnd: 1,\n claimPredicateOr: 2,\n claimPredicateNot: 3,\n claimPredicateBeforeAbsoluteTime: 4,\n claimPredicateBeforeRelativeTime: 5\n });\n\n // === xdr source ============================================================\n //\n // union ClaimPredicate switch (ClaimPredicateType type)\n // {\n // case CLAIM_PREDICATE_UNCONDITIONAL:\n // void;\n // case CLAIM_PREDICATE_AND:\n // ClaimPredicate andPredicates<2>;\n // case CLAIM_PREDICATE_OR:\n // ClaimPredicate orPredicates<2>;\n // case CLAIM_PREDICATE_NOT:\n // ClaimPredicate* notPredicate;\n // case CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME:\n // int64 absBefore; // Predicate will be true if closeTime < absBefore\n // case CLAIM_PREDICATE_BEFORE_RELATIVE_TIME:\n // int64 relBefore; // Seconds since closeTime of the ledger in which the\n // // ClaimableBalanceEntry was created\n // };\n //\n // ===========================================================================\n xdr.union(\"ClaimPredicate\", {\n switchOn: xdr.lookup(\"ClaimPredicateType\"),\n switchName: \"type\",\n switches: [[\"claimPredicateUnconditional\", xdr[\"void\"]()], [\"claimPredicateAnd\", \"andPredicates\"], [\"claimPredicateOr\", \"orPredicates\"], [\"claimPredicateNot\", \"notPredicate\"], [\"claimPredicateBeforeAbsoluteTime\", \"absBefore\"], [\"claimPredicateBeforeRelativeTime\", \"relBefore\"]],\n arms: {\n andPredicates: xdr.varArray(xdr.lookup(\"ClaimPredicate\"), 2),\n orPredicates: xdr.varArray(xdr.lookup(\"ClaimPredicate\"), 2),\n notPredicate: xdr.option(xdr.lookup(\"ClaimPredicate\")),\n absBefore: xdr.lookup(\"Int64\"),\n relBefore: xdr.lookup(\"Int64\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ClaimantType\n // {\n // CLAIMANT_TYPE_V0 = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimantType\", {\n claimantTypeV0: 0\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID destination; // The account that can use this condition\n // ClaimPredicate predicate; // Claimable if predicate is true\n // }\n //\n // ===========================================================================\n xdr.struct(\"ClaimantV0\", [[\"destination\", xdr.lookup(\"AccountId\")], [\"predicate\", xdr.lookup(\"ClaimPredicate\")]]);\n\n // === xdr source ============================================================\n //\n // union Claimant switch (ClaimantType type)\n // {\n // case CLAIMANT_TYPE_V0:\n // struct\n // {\n // AccountID destination; // The account that can use this condition\n // ClaimPredicate predicate; // Claimable if predicate is true\n // } v0;\n // };\n //\n // ===========================================================================\n xdr.union(\"Claimant\", {\n switchOn: xdr.lookup(\"ClaimantType\"),\n switchName: \"type\",\n switches: [[\"claimantTypeV0\", \"v0\"]],\n arms: {\n v0: xdr.lookup(\"ClaimantV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ClaimableBalanceFlags\n // {\n // // If set, the issuer account of the asset held by the claimable balance may\n // // clawback the claimable balance\n // CLAIMABLE_BALANCE_CLAWBACK_ENABLED_FLAG = 0x1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimableBalanceFlags\", {\n claimableBalanceClawbackEnabledFlag: 1\n });\n\n // === xdr source ============================================================\n //\n // const MASK_CLAIMABLE_BALANCE_FLAGS = 0x1;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_CLAIMABLE_BALANCE_FLAGS\", 0x1);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"ClaimableBalanceEntryExtensionV1Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct ClaimableBalanceEntryExtensionV1\n // {\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n //\n // uint32 flags; // see ClaimableBalanceFlags\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimableBalanceEntryExtensionV1\", [[\"ext\", xdr.lookup(\"ClaimableBalanceEntryExtensionV1Ext\")], [\"flags\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // ClaimableBalanceEntryExtensionV1 v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"ClaimableBalanceEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"ClaimableBalanceEntryExtensionV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ClaimableBalanceEntry\n // {\n // // Unique identifier for this ClaimableBalanceEntry\n // ClaimableBalanceID balanceID;\n //\n // // List of claimants with associated predicate\n // Claimant claimants<10>;\n //\n // // Any asset including native\n // Asset asset;\n //\n // // Amount of asset\n // int64 amount;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // ClaimableBalanceEntryExtensionV1 v1;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimableBalanceEntry\", [[\"balanceId\", xdr.lookup(\"ClaimableBalanceId\")], [\"claimants\", xdr.varArray(xdr.lookup(\"Claimant\"), 10)], [\"asset\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")], [\"ext\", xdr.lookup(\"ClaimableBalanceEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct LiquidityPoolConstantProductParameters\n // {\n // Asset assetA; // assetA < assetB\n // Asset assetB;\n // int32 fee; // Fee is in basis points, so the actual rate is (fee/100)%\n // };\n //\n // ===========================================================================\n xdr.struct(\"LiquidityPoolConstantProductParameters\", [[\"assetA\", xdr.lookup(\"Asset\")], [\"assetB\", xdr.lookup(\"Asset\")], [\"fee\", xdr.lookup(\"Int32\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // LiquidityPoolConstantProductParameters params;\n //\n // int64 reserveA; // amount of A in the pool\n // int64 reserveB; // amount of B in the pool\n // int64 totalPoolShares; // total number of pool shares issued\n // int64 poolSharesTrustLineCount; // number of trust lines for the\n // // associated pool shares\n // }\n //\n // ===========================================================================\n xdr.struct(\"LiquidityPoolEntryConstantProduct\", [[\"params\", xdr.lookup(\"LiquidityPoolConstantProductParameters\")], [\"reserveA\", xdr.lookup(\"Int64\")], [\"reserveB\", xdr.lookup(\"Int64\")], [\"totalPoolShares\", xdr.lookup(\"Int64\")], [\"poolSharesTrustLineCount\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (LiquidityPoolType type)\n // {\n // case LIQUIDITY_POOL_CONSTANT_PRODUCT:\n // struct\n // {\n // LiquidityPoolConstantProductParameters params;\n //\n // int64 reserveA; // amount of A in the pool\n // int64 reserveB; // amount of B in the pool\n // int64 totalPoolShares; // total number of pool shares issued\n // int64 poolSharesTrustLineCount; // number of trust lines for the\n // // associated pool shares\n // } constantProduct;\n // }\n //\n // ===========================================================================\n xdr.union(\"LiquidityPoolEntryBody\", {\n switchOn: xdr.lookup(\"LiquidityPoolType\"),\n switchName: \"type\",\n switches: [[\"liquidityPoolConstantProduct\", \"constantProduct\"]],\n arms: {\n constantProduct: xdr.lookup(\"LiquidityPoolEntryConstantProduct\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LiquidityPoolEntry\n // {\n // PoolID liquidityPoolID;\n //\n // union switch (LiquidityPoolType type)\n // {\n // case LIQUIDITY_POOL_CONSTANT_PRODUCT:\n // struct\n // {\n // LiquidityPoolConstantProductParameters params;\n //\n // int64 reserveA; // amount of A in the pool\n // int64 reserveB; // amount of B in the pool\n // int64 totalPoolShares; // total number of pool shares issued\n // int64 poolSharesTrustLineCount; // number of trust lines for the\n // // associated pool shares\n // } constantProduct;\n // }\n // body;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LiquidityPoolEntry\", [[\"liquidityPoolId\", xdr.lookup(\"PoolId\")], [\"body\", xdr.lookup(\"LiquidityPoolEntryBody\")]]);\n\n // === xdr source ============================================================\n //\n // enum ContractDataDurability {\n // TEMPORARY = 0,\n // PERSISTENT = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ContractDataDurability\", {\n temporary: 0,\n persistent: 1\n });\n\n // === xdr source ============================================================\n //\n // struct ContractDataEntry {\n // ExtensionPoint ext;\n //\n // SCAddress contract;\n // SCVal key;\n // ContractDataDurability durability;\n // SCVal val;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ContractDataEntry\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"contract\", xdr.lookup(\"ScAddress\")], [\"key\", xdr.lookup(\"ScVal\")], [\"durability\", xdr.lookup(\"ContractDataDurability\")], [\"val\", xdr.lookup(\"ScVal\")]]);\n\n // === xdr source ============================================================\n //\n // struct ContractCodeCostInputs {\n // ExtensionPoint ext;\n // uint32 nInstructions;\n // uint32 nFunctions;\n // uint32 nGlobals;\n // uint32 nTableEntries;\n // uint32 nTypes;\n // uint32 nDataSegments;\n // uint32 nElemSegments;\n // uint32 nImports;\n // uint32 nExports;\n // uint32 nDataSegmentBytes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ContractCodeCostInputs\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"nInstructions\", xdr.lookup(\"Uint32\")], [\"nFunctions\", xdr.lookup(\"Uint32\")], [\"nGlobals\", xdr.lookup(\"Uint32\")], [\"nTableEntries\", xdr.lookup(\"Uint32\")], [\"nTypes\", xdr.lookup(\"Uint32\")], [\"nDataSegments\", xdr.lookup(\"Uint32\")], [\"nElemSegments\", xdr.lookup(\"Uint32\")], [\"nImports\", xdr.lookup(\"Uint32\")], [\"nExports\", xdr.lookup(\"Uint32\")], [\"nDataSegmentBytes\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // ExtensionPoint ext;\n // ContractCodeCostInputs costInputs;\n // }\n //\n // ===========================================================================\n xdr.struct(\"ContractCodeEntryV1\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"costInputs\", xdr.lookup(\"ContractCodeCostInputs\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // struct\n // {\n // ExtensionPoint ext;\n // ContractCodeCostInputs costInputs;\n // } v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"ContractCodeEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"ContractCodeEntryV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ContractCodeEntry {\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // struct\n // {\n // ExtensionPoint ext;\n // ContractCodeCostInputs costInputs;\n // } v1;\n // } ext;\n //\n // Hash hash;\n // opaque code<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ContractCodeEntry\", [[\"ext\", xdr.lookup(\"ContractCodeEntryExt\")], [\"hash\", xdr.lookup(\"Hash\")], [\"code\", xdr.varOpaque()]]);\n\n // === xdr source ============================================================\n //\n // struct TTLEntry {\n // // Hash of the LedgerKey that is associated with this TTLEntry\n // Hash keyHash;\n // uint32 liveUntilLedgerSeq;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TtlEntry\", [[\"keyHash\", xdr.lookup(\"Hash\")], [\"liveUntilLedgerSeq\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerEntryExtensionV1Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerEntryExtensionV1\n // {\n // SponsorshipDescriptor sponsoringID;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerEntryExtensionV1\", [[\"sponsoringId\", xdr.lookup(\"SponsorshipDescriptor\")], [\"ext\", xdr.lookup(\"LedgerEntryExtensionV1Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (LedgerEntryType type)\n // {\n // case ACCOUNT:\n // AccountEntry account;\n // case TRUSTLINE:\n // TrustLineEntry trustLine;\n // case OFFER:\n // OfferEntry offer;\n // case DATA:\n // DataEntry data;\n // case CLAIMABLE_BALANCE:\n // ClaimableBalanceEntry claimableBalance;\n // case LIQUIDITY_POOL:\n // LiquidityPoolEntry liquidityPool;\n // case CONTRACT_DATA:\n // ContractDataEntry contractData;\n // case CONTRACT_CODE:\n // ContractCodeEntry contractCode;\n // case CONFIG_SETTING:\n // ConfigSettingEntry configSetting;\n // case TTL:\n // TTLEntry ttl;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerEntryData\", {\n switchOn: xdr.lookup(\"LedgerEntryType\"),\n switchName: \"type\",\n switches: [[\"account\", \"account\"], [\"trustline\", \"trustLine\"], [\"offer\", \"offer\"], [\"data\", \"data\"], [\"claimableBalance\", \"claimableBalance\"], [\"liquidityPool\", \"liquidityPool\"], [\"contractData\", \"contractData\"], [\"contractCode\", \"contractCode\"], [\"configSetting\", \"configSetting\"], [\"ttl\", \"ttl\"]],\n arms: {\n account: xdr.lookup(\"AccountEntry\"),\n trustLine: xdr.lookup(\"TrustLineEntry\"),\n offer: xdr.lookup(\"OfferEntry\"),\n data: xdr.lookup(\"DataEntry\"),\n claimableBalance: xdr.lookup(\"ClaimableBalanceEntry\"),\n liquidityPool: xdr.lookup(\"LiquidityPoolEntry\"),\n contractData: xdr.lookup(\"ContractDataEntry\"),\n contractCode: xdr.lookup(\"ContractCodeEntry\"),\n configSetting: xdr.lookup(\"ConfigSettingEntry\"),\n ttl: xdr.lookup(\"TtlEntry\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // LedgerEntryExtensionV1 v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"LedgerEntryExtensionV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerEntry\n // {\n // uint32 lastModifiedLedgerSeq; // ledger the LedgerEntry was last changed\n //\n // union switch (LedgerEntryType type)\n // {\n // case ACCOUNT:\n // AccountEntry account;\n // case TRUSTLINE:\n // TrustLineEntry trustLine;\n // case OFFER:\n // OfferEntry offer;\n // case DATA:\n // DataEntry data;\n // case CLAIMABLE_BALANCE:\n // ClaimableBalanceEntry claimableBalance;\n // case LIQUIDITY_POOL:\n // LiquidityPoolEntry liquidityPool;\n // case CONTRACT_DATA:\n // ContractDataEntry contractData;\n // case CONTRACT_CODE:\n // ContractCodeEntry contractCode;\n // case CONFIG_SETTING:\n // ConfigSettingEntry configSetting;\n // case TTL:\n // TTLEntry ttl;\n // }\n // data;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // LedgerEntryExtensionV1 v1;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerEntry\", [[\"lastModifiedLedgerSeq\", xdr.lookup(\"Uint32\")], [\"data\", xdr.lookup(\"LedgerEntryData\")], [\"ext\", xdr.lookup(\"LedgerEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID accountID;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyAccount\", [[\"accountId\", xdr.lookup(\"AccountId\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID accountID;\n // TrustLineAsset asset;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyTrustLine\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"asset\", xdr.lookup(\"TrustLineAsset\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID sellerID;\n // int64 offerID;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyOffer\", [[\"sellerId\", xdr.lookup(\"AccountId\")], [\"offerId\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID accountID;\n // string64 dataName;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyData\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"dataName\", xdr.lookup(\"String64\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // ClaimableBalanceID balanceID;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyClaimableBalance\", [[\"balanceId\", xdr.lookup(\"ClaimableBalanceId\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // PoolID liquidityPoolID;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyLiquidityPool\", [[\"liquidityPoolId\", xdr.lookup(\"PoolId\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // SCAddress contract;\n // SCVal key;\n // ContractDataDurability durability;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyContractData\", [[\"contract\", xdr.lookup(\"ScAddress\")], [\"key\", xdr.lookup(\"ScVal\")], [\"durability\", xdr.lookup(\"ContractDataDurability\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // Hash hash;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyContractCode\", [[\"hash\", xdr.lookup(\"Hash\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // ConfigSettingID configSettingID;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyConfigSetting\", [[\"configSettingId\", xdr.lookup(\"ConfigSettingId\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // // Hash of the LedgerKey that is associated with this TTLEntry\n // Hash keyHash;\n // }\n //\n // ===========================================================================\n xdr.struct(\"LedgerKeyTtl\", [[\"keyHash\", xdr.lookup(\"Hash\")]]);\n\n // === xdr source ============================================================\n //\n // union LedgerKey switch (LedgerEntryType type)\n // {\n // case ACCOUNT:\n // struct\n // {\n // AccountID accountID;\n // } account;\n //\n // case TRUSTLINE:\n // struct\n // {\n // AccountID accountID;\n // TrustLineAsset asset;\n // } trustLine;\n //\n // case OFFER:\n // struct\n // {\n // AccountID sellerID;\n // int64 offerID;\n // } offer;\n //\n // case DATA:\n // struct\n // {\n // AccountID accountID;\n // string64 dataName;\n // } data;\n //\n // case CLAIMABLE_BALANCE:\n // struct\n // {\n // ClaimableBalanceID balanceID;\n // } claimableBalance;\n //\n // case LIQUIDITY_POOL:\n // struct\n // {\n // PoolID liquidityPoolID;\n // } liquidityPool;\n // case CONTRACT_DATA:\n // struct\n // {\n // SCAddress contract;\n // SCVal key;\n // ContractDataDurability durability;\n // } contractData;\n // case CONTRACT_CODE:\n // struct\n // {\n // Hash hash;\n // } contractCode;\n // case CONFIG_SETTING:\n // struct\n // {\n // ConfigSettingID configSettingID;\n // } configSetting;\n // case TTL:\n // struct\n // {\n // // Hash of the LedgerKey that is associated with this TTLEntry\n // Hash keyHash;\n // } ttl;\n // };\n //\n // ===========================================================================\n xdr.union(\"LedgerKey\", {\n switchOn: xdr.lookup(\"LedgerEntryType\"),\n switchName: \"type\",\n switches: [[\"account\", \"account\"], [\"trustline\", \"trustLine\"], [\"offer\", \"offer\"], [\"data\", \"data\"], [\"claimableBalance\", \"claimableBalance\"], [\"liquidityPool\", \"liquidityPool\"], [\"contractData\", \"contractData\"], [\"contractCode\", \"contractCode\"], [\"configSetting\", \"configSetting\"], [\"ttl\", \"ttl\"]],\n arms: {\n account: xdr.lookup(\"LedgerKeyAccount\"),\n trustLine: xdr.lookup(\"LedgerKeyTrustLine\"),\n offer: xdr.lookup(\"LedgerKeyOffer\"),\n data: xdr.lookup(\"LedgerKeyData\"),\n claimableBalance: xdr.lookup(\"LedgerKeyClaimableBalance\"),\n liquidityPool: xdr.lookup(\"LedgerKeyLiquidityPool\"),\n contractData: xdr.lookup(\"LedgerKeyContractData\"),\n contractCode: xdr.lookup(\"LedgerKeyContractCode\"),\n configSetting: xdr.lookup(\"LedgerKeyConfigSetting\"),\n ttl: xdr.lookup(\"LedgerKeyTtl\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum EnvelopeType\n // {\n // ENVELOPE_TYPE_TX_V0 = 0,\n // ENVELOPE_TYPE_SCP = 1,\n // ENVELOPE_TYPE_TX = 2,\n // ENVELOPE_TYPE_AUTH = 3,\n // ENVELOPE_TYPE_SCPVALUE = 4,\n // ENVELOPE_TYPE_TX_FEE_BUMP = 5,\n // ENVELOPE_TYPE_OP_ID = 6,\n // ENVELOPE_TYPE_POOL_REVOKE_OP_ID = 7,\n // ENVELOPE_TYPE_CONTRACT_ID = 8,\n // ENVELOPE_TYPE_SOROBAN_AUTHORIZATION = 9\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"EnvelopeType\", {\n envelopeTypeTxV0: 0,\n envelopeTypeScp: 1,\n envelopeTypeTx: 2,\n envelopeTypeAuth: 3,\n envelopeTypeScpvalue: 4,\n envelopeTypeTxFeeBump: 5,\n envelopeTypeOpId: 6,\n envelopeTypePoolRevokeOpId: 7,\n envelopeTypeContractId: 8,\n envelopeTypeSorobanAuthorization: 9\n });\n\n // === xdr source ============================================================\n //\n // enum BucketListType\n // {\n // LIVE = 0,\n // HOT_ARCHIVE = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"BucketListType\", {\n live: 0,\n hotArchive: 1\n });\n\n // === xdr source ============================================================\n //\n // enum BucketEntryType\n // {\n // METAENTRY =\n // -1, // At-and-after protocol 11: bucket metadata, should come first.\n // LIVEENTRY = 0, // Before protocol 11: created-or-updated;\n // // At-and-after protocol 11: only updated.\n // DEADENTRY = 1,\n // INITENTRY = 2 // At-and-after protocol 11: only created.\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"BucketEntryType\", {\n metaentry: -1,\n liveentry: 0,\n deadentry: 1,\n initentry: 2\n });\n\n // === xdr source ============================================================\n //\n // enum HotArchiveBucketEntryType\n // {\n // HOT_ARCHIVE_METAENTRY = -1, // Bucket metadata, should come first.\n // HOT_ARCHIVE_ARCHIVED = 0, // Entry is Archived\n // HOT_ARCHIVE_LIVE = 1 // Entry was previously HOT_ARCHIVE_ARCHIVED, but\n // // has been added back to the live BucketList.\n // // Does not need to be persisted.\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"HotArchiveBucketEntryType\", {\n hotArchiveMetaentry: -1,\n hotArchiveArchived: 0,\n hotArchiveLive: 1\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // BucketListType bucketListType;\n // }\n //\n // ===========================================================================\n xdr.union(\"BucketMetadataExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"bucketListType\"]],\n arms: {\n bucketListType: xdr.lookup(\"BucketListType\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct BucketMetadata\n // {\n // // Indicates the protocol version used to create / merge this bucket.\n // uint32 ledgerVersion;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // BucketListType bucketListType;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"BucketMetadata\", [[\"ledgerVersion\", xdr.lookup(\"Uint32\")], [\"ext\", xdr.lookup(\"BucketMetadataExt\")]]);\n\n // === xdr source ============================================================\n //\n // union BucketEntry switch (BucketEntryType type)\n // {\n // case LIVEENTRY:\n // case INITENTRY:\n // LedgerEntry liveEntry;\n //\n // case DEADENTRY:\n // LedgerKey deadEntry;\n // case METAENTRY:\n // BucketMetadata metaEntry;\n // };\n //\n // ===========================================================================\n xdr.union(\"BucketEntry\", {\n switchOn: xdr.lookup(\"BucketEntryType\"),\n switchName: \"type\",\n switches: [[\"liveentry\", \"liveEntry\"], [\"initentry\", \"liveEntry\"], [\"deadentry\", \"deadEntry\"], [\"metaentry\", \"metaEntry\"]],\n arms: {\n liveEntry: xdr.lookup(\"LedgerEntry\"),\n deadEntry: xdr.lookup(\"LedgerKey\"),\n metaEntry: xdr.lookup(\"BucketMetadata\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union HotArchiveBucketEntry switch (HotArchiveBucketEntryType type)\n // {\n // case HOT_ARCHIVE_ARCHIVED:\n // LedgerEntry archivedEntry;\n //\n // case HOT_ARCHIVE_LIVE:\n // LedgerKey key;\n // case HOT_ARCHIVE_METAENTRY:\n // BucketMetadata metaEntry;\n // };\n //\n // ===========================================================================\n xdr.union(\"HotArchiveBucketEntry\", {\n switchOn: xdr.lookup(\"HotArchiveBucketEntryType\"),\n switchName: \"type\",\n switches: [[\"hotArchiveArchived\", \"archivedEntry\"], [\"hotArchiveLive\", \"key\"], [\"hotArchiveMetaentry\", \"metaEntry\"]],\n arms: {\n archivedEntry: xdr.lookup(\"LedgerEntry\"),\n key: xdr.lookup(\"LedgerKey\"),\n metaEntry: xdr.lookup(\"BucketMetadata\")\n }\n });\n\n // === xdr source ============================================================\n //\n // typedef opaque UpgradeType<128>;\n //\n // ===========================================================================\n xdr.typedef(\"UpgradeType\", xdr.varOpaque(128));\n\n // === xdr source ============================================================\n //\n // enum StellarValueType\n // {\n // STELLAR_VALUE_BASIC = 0,\n // STELLAR_VALUE_SIGNED = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"StellarValueType\", {\n stellarValueBasic: 0,\n stellarValueSigned: 1\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseValueSignature\n // {\n // NodeID nodeID; // which node introduced the value\n // Signature signature; // nodeID's signature\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseValueSignature\", [[\"nodeId\", xdr.lookup(\"NodeId\")], [\"signature\", xdr.lookup(\"Signature\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (StellarValueType v)\n // {\n // case STELLAR_VALUE_BASIC:\n // void;\n // case STELLAR_VALUE_SIGNED:\n // LedgerCloseValueSignature lcValueSignature;\n // }\n //\n // ===========================================================================\n xdr.union(\"StellarValueExt\", {\n switchOn: xdr.lookup(\"StellarValueType\"),\n switchName: \"v\",\n switches: [[\"stellarValueBasic\", xdr[\"void\"]()], [\"stellarValueSigned\", \"lcValueSignature\"]],\n arms: {\n lcValueSignature: xdr.lookup(\"LedgerCloseValueSignature\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct StellarValue\n // {\n // Hash txSetHash; // transaction set to apply to previous ledger\n // TimePoint closeTime; // network close time\n //\n // // upgrades to apply to the previous ledger (usually empty)\n // // this is a vector of encoded 'LedgerUpgrade' so that nodes can drop\n // // unknown steps during consensus if needed.\n // // see notes below on 'LedgerUpgrade' for more detail\n // // max size is dictated by number of upgrade types (+ room for future)\n // UpgradeType upgrades<6>;\n //\n // // reserved for future use\n // union switch (StellarValueType v)\n // {\n // case STELLAR_VALUE_BASIC:\n // void;\n // case STELLAR_VALUE_SIGNED:\n // LedgerCloseValueSignature lcValueSignature;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"StellarValue\", [[\"txSetHash\", xdr.lookup(\"Hash\")], [\"closeTime\", xdr.lookup(\"TimePoint\")], [\"upgrades\", xdr.varArray(xdr.lookup(\"UpgradeType\"), 6)], [\"ext\", xdr.lookup(\"StellarValueExt\")]]);\n\n // === xdr source ============================================================\n //\n // const MASK_LEDGER_HEADER_FLAGS = 0x7;\n //\n // ===========================================================================\n xdr[\"const\"](\"MASK_LEDGER_HEADER_FLAGS\", 0x7);\n\n // === xdr source ============================================================\n //\n // enum LedgerHeaderFlags\n // {\n // DISABLE_LIQUIDITY_POOL_TRADING_FLAG = 0x1,\n // DISABLE_LIQUIDITY_POOL_DEPOSIT_FLAG = 0x2,\n // DISABLE_LIQUIDITY_POOL_WITHDRAWAL_FLAG = 0x4\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LedgerHeaderFlags\", {\n disableLiquidityPoolTradingFlag: 1,\n disableLiquidityPoolDepositFlag: 2,\n disableLiquidityPoolWithdrawalFlag: 4\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerHeaderExtensionV1Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerHeaderExtensionV1\n // {\n // uint32 flags; // LedgerHeaderFlags\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerHeaderExtensionV1\", [[\"flags\", xdr.lookup(\"Uint32\")], [\"ext\", xdr.lookup(\"LedgerHeaderExtensionV1Ext\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // LedgerHeaderExtensionV1 v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerHeaderExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"LedgerHeaderExtensionV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerHeader\n // {\n // uint32 ledgerVersion; // the protocol version of the ledger\n // Hash previousLedgerHash; // hash of the previous ledger header\n // StellarValue scpValue; // what consensus agreed to\n // Hash txSetResultHash; // the TransactionResultSet that led to this ledger\n // Hash bucketListHash; // hash of the ledger state\n //\n // uint32 ledgerSeq; // sequence number of this ledger\n //\n // int64 totalCoins; // total number of stroops in existence.\n // // 10,000,000 stroops in 1 XLM\n //\n // int64 feePool; // fees burned since last inflation run\n // uint32 inflationSeq; // inflation sequence number\n //\n // uint64 idPool; // last used global ID, used for generating objects\n //\n // uint32 baseFee; // base fee per operation in stroops\n // uint32 baseReserve; // account base reserve in stroops\n //\n // uint32 maxTxSetSize; // maximum size a transaction set can be\n //\n // Hash skipList[4]; // hashes of ledgers in the past. allows you to jump back\n // // in time without walking the chain back ledger by ledger\n // // each slot contains the oldest ledger that is mod of\n // // either 50 5000 50000 or 500000 depending on index\n // // skipList[0] mod(50), skipList[1] mod(5000), etc\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // LedgerHeaderExtensionV1 v1;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerHeader\", [[\"ledgerVersion\", xdr.lookup(\"Uint32\")], [\"previousLedgerHash\", xdr.lookup(\"Hash\")], [\"scpValue\", xdr.lookup(\"StellarValue\")], [\"txSetResultHash\", xdr.lookup(\"Hash\")], [\"bucketListHash\", xdr.lookup(\"Hash\")], [\"ledgerSeq\", xdr.lookup(\"Uint32\")], [\"totalCoins\", xdr.lookup(\"Int64\")], [\"feePool\", xdr.lookup(\"Int64\")], [\"inflationSeq\", xdr.lookup(\"Uint32\")], [\"idPool\", xdr.lookup(\"Uint64\")], [\"baseFee\", xdr.lookup(\"Uint32\")], [\"baseReserve\", xdr.lookup(\"Uint32\")], [\"maxTxSetSize\", xdr.lookup(\"Uint32\")], [\"skipList\", xdr.array(xdr.lookup(\"Hash\"), 4)], [\"ext\", xdr.lookup(\"LedgerHeaderExt\")]]);\n\n // === xdr source ============================================================\n //\n // enum LedgerUpgradeType\n // {\n // LEDGER_UPGRADE_VERSION = 1,\n // LEDGER_UPGRADE_BASE_FEE = 2,\n // LEDGER_UPGRADE_MAX_TX_SET_SIZE = 3,\n // LEDGER_UPGRADE_BASE_RESERVE = 4,\n // LEDGER_UPGRADE_FLAGS = 5,\n // LEDGER_UPGRADE_CONFIG = 6,\n // LEDGER_UPGRADE_MAX_SOROBAN_TX_SET_SIZE = 7\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LedgerUpgradeType\", {\n ledgerUpgradeVersion: 1,\n ledgerUpgradeBaseFee: 2,\n ledgerUpgradeMaxTxSetSize: 3,\n ledgerUpgradeBaseReserve: 4,\n ledgerUpgradeFlags: 5,\n ledgerUpgradeConfig: 6,\n ledgerUpgradeMaxSorobanTxSetSize: 7\n });\n\n // === xdr source ============================================================\n //\n // struct ConfigUpgradeSetKey {\n // ContractID contractID;\n // Hash contentHash;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigUpgradeSetKey\", [[\"contractId\", xdr.lookup(\"ContractId\")], [\"contentHash\", xdr.lookup(\"Hash\")]]);\n\n // === xdr source ============================================================\n //\n // union LedgerUpgrade switch (LedgerUpgradeType type)\n // {\n // case LEDGER_UPGRADE_VERSION:\n // uint32 newLedgerVersion; // update ledgerVersion\n // case LEDGER_UPGRADE_BASE_FEE:\n // uint32 newBaseFee; // update baseFee\n // case LEDGER_UPGRADE_MAX_TX_SET_SIZE:\n // uint32 newMaxTxSetSize; // update maxTxSetSize\n // case LEDGER_UPGRADE_BASE_RESERVE:\n // uint32 newBaseReserve; // update baseReserve\n // case LEDGER_UPGRADE_FLAGS:\n // uint32 newFlags; // update flags\n // case LEDGER_UPGRADE_CONFIG:\n // // Update arbitrary `ConfigSetting` entries identified by the key.\n // ConfigUpgradeSetKey newConfig;\n // case LEDGER_UPGRADE_MAX_SOROBAN_TX_SET_SIZE:\n // // Update ConfigSettingContractExecutionLanesV0.ledgerMaxTxCount without\n // // using `LEDGER_UPGRADE_CONFIG`.\n // uint32 newMaxSorobanTxSetSize;\n // };\n //\n // ===========================================================================\n xdr.union(\"LedgerUpgrade\", {\n switchOn: xdr.lookup(\"LedgerUpgradeType\"),\n switchName: \"type\",\n switches: [[\"ledgerUpgradeVersion\", \"newLedgerVersion\"], [\"ledgerUpgradeBaseFee\", \"newBaseFee\"], [\"ledgerUpgradeMaxTxSetSize\", \"newMaxTxSetSize\"], [\"ledgerUpgradeBaseReserve\", \"newBaseReserve\"], [\"ledgerUpgradeFlags\", \"newFlags\"], [\"ledgerUpgradeConfig\", \"newConfig\"], [\"ledgerUpgradeMaxSorobanTxSetSize\", \"newMaxSorobanTxSetSize\"]],\n arms: {\n newLedgerVersion: xdr.lookup(\"Uint32\"),\n newBaseFee: xdr.lookup(\"Uint32\"),\n newMaxTxSetSize: xdr.lookup(\"Uint32\"),\n newBaseReserve: xdr.lookup(\"Uint32\"),\n newFlags: xdr.lookup(\"Uint32\"),\n newConfig: xdr.lookup(\"ConfigUpgradeSetKey\"),\n newMaxSorobanTxSetSize: xdr.lookup(\"Uint32\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ConfigUpgradeSet {\n // ConfigSettingEntry updatedEntry<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigUpgradeSet\", [[\"updatedEntry\", xdr.varArray(xdr.lookup(\"ConfigSettingEntry\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // enum TxSetComponentType\n // {\n // // txs with effective fee <= bid derived from a base fee (if any).\n // // If base fee is not specified, no discount is applied.\n // TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"TxSetComponentType\", {\n txsetCompTxsMaybeDiscountedFee: 0\n });\n\n // === xdr source ============================================================\n //\n // typedef TransactionEnvelope DependentTxCluster<>;\n //\n // ===========================================================================\n xdr.typedef(\"DependentTxCluster\", xdr.varArray(xdr.lookup(\"TransactionEnvelope\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // typedef DependentTxCluster ParallelTxExecutionStage<>;\n //\n // ===========================================================================\n xdr.typedef(\"ParallelTxExecutionStage\", xdr.varArray(xdr.lookup(\"DependentTxCluster\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // struct ParallelTxsComponent\n // {\n // int64* baseFee;\n // // A sequence of stages that *may* have arbitrary data dependencies between\n // // each other, i.e. in a general case the stage execution order may not be\n // // arbitrarily shuffled without affecting the end result.\n // ParallelTxExecutionStage executionStages<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ParallelTxsComponent\", [[\"baseFee\", xdr.option(xdr.lookup(\"Int64\"))], [\"executionStages\", xdr.varArray(xdr.lookup(\"ParallelTxExecutionStage\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // int64* baseFee;\n // TransactionEnvelope txs<>;\n // }\n //\n // ===========================================================================\n xdr.struct(\"TxSetComponentTxsMaybeDiscountedFee\", [[\"baseFee\", xdr.option(xdr.lookup(\"Int64\"))], [\"txes\", xdr.varArray(xdr.lookup(\"TransactionEnvelope\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union TxSetComponent switch (TxSetComponentType type)\n // {\n // case TXSET_COMP_TXS_MAYBE_DISCOUNTED_FEE:\n // struct\n // {\n // int64* baseFee;\n // TransactionEnvelope txs<>;\n // } txsMaybeDiscountedFee;\n // };\n //\n // ===========================================================================\n xdr.union(\"TxSetComponent\", {\n switchOn: xdr.lookup(\"TxSetComponentType\"),\n switchName: \"type\",\n switches: [[\"txsetCompTxsMaybeDiscountedFee\", \"txsMaybeDiscountedFee\"]],\n arms: {\n txsMaybeDiscountedFee: xdr.lookup(\"TxSetComponentTxsMaybeDiscountedFee\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union TransactionPhase switch (int v)\n // {\n // case 0:\n // TxSetComponent v0Components<>;\n // case 1:\n // ParallelTxsComponent parallelTxsComponent;\n // };\n //\n // ===========================================================================\n xdr.union(\"TransactionPhase\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, \"v0Components\"], [1, \"parallelTxsComponent\"]],\n arms: {\n v0Components: xdr.varArray(xdr.lookup(\"TxSetComponent\"), 2147483647),\n parallelTxsComponent: xdr.lookup(\"ParallelTxsComponent\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionSet\n // {\n // Hash previousLedgerHash;\n // TransactionEnvelope txs<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionSet\", [[\"previousLedgerHash\", xdr.lookup(\"Hash\")], [\"txes\", xdr.varArray(xdr.lookup(\"TransactionEnvelope\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionSetV1\n // {\n // Hash previousLedgerHash;\n // TransactionPhase phases<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionSetV1\", [[\"previousLedgerHash\", xdr.lookup(\"Hash\")], [\"phases\", xdr.varArray(xdr.lookup(\"TransactionPhase\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union GeneralizedTransactionSet switch (int v)\n // {\n // // We consider the legacy TransactionSet to be v0.\n // case 1:\n // TransactionSetV1 v1TxSet;\n // };\n //\n // ===========================================================================\n xdr.union(\"GeneralizedTransactionSet\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[1, \"v1TxSet\"]],\n arms: {\n v1TxSet: xdr.lookup(\"TransactionSetV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionResultPair\n // {\n // Hash transactionHash;\n // TransactionResult result; // result for the transaction\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionResultPair\", [[\"transactionHash\", xdr.lookup(\"Hash\")], [\"result\", xdr.lookup(\"TransactionResult\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionResultSet\n // {\n // TransactionResultPair results<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionResultSet\", [[\"results\", xdr.varArray(xdr.lookup(\"TransactionResultPair\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // GeneralizedTransactionSet generalizedTxSet;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionHistoryEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"generalizedTxSet\"]],\n arms: {\n generalizedTxSet: xdr.lookup(\"GeneralizedTransactionSet\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionHistoryEntry\n // {\n // uint32 ledgerSeq;\n // TransactionSet txSet;\n //\n // // when v != 0, txSet must be empty\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // GeneralizedTransactionSet generalizedTxSet;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionHistoryEntry\", [[\"ledgerSeq\", xdr.lookup(\"Uint32\")], [\"txSet\", xdr.lookup(\"TransactionSet\")], [\"ext\", xdr.lookup(\"TransactionHistoryEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionHistoryResultEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionHistoryResultEntry\n // {\n // uint32 ledgerSeq;\n // TransactionResultSet txResultSet;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionHistoryResultEntry\", [[\"ledgerSeq\", xdr.lookup(\"Uint32\")], [\"txResultSet\", xdr.lookup(\"TransactionResultSet\")], [\"ext\", xdr.lookup(\"TransactionHistoryResultEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"LedgerHeaderHistoryEntryExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerHeaderHistoryEntry\n // {\n // Hash hash;\n // LedgerHeader header;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerHeaderHistoryEntry\", [[\"hash\", xdr.lookup(\"Hash\")], [\"header\", xdr.lookup(\"LedgerHeader\")], [\"ext\", xdr.lookup(\"LedgerHeaderHistoryEntryExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct LedgerSCPMessages\n // {\n // uint32 ledgerSeq;\n // SCPEnvelope messages<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerScpMessages\", [[\"ledgerSeq\", xdr.lookup(\"Uint32\")], [\"messages\", xdr.varArray(xdr.lookup(\"ScpEnvelope\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct SCPHistoryEntryV0\n // {\n // SCPQuorumSet quorumSets<>; // additional quorum sets used by ledgerMessages\n // LedgerSCPMessages ledgerMessages;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScpHistoryEntryV0\", [[\"quorumSets\", xdr.varArray(xdr.lookup(\"ScpQuorumSet\"), 2147483647)], [\"ledgerMessages\", xdr.lookup(\"LedgerScpMessages\")]]);\n\n // === xdr source ============================================================\n //\n // union SCPHistoryEntry switch (int v)\n // {\n // case 0:\n // SCPHistoryEntryV0 v0;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScpHistoryEntry\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, \"v0\"]],\n arms: {\n v0: xdr.lookup(\"ScpHistoryEntryV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum LedgerEntryChangeType\n // {\n // LEDGER_ENTRY_CREATED = 0, // entry was added to the ledger\n // LEDGER_ENTRY_UPDATED = 1, // entry was modified in the ledger\n // LEDGER_ENTRY_REMOVED = 2, // entry was removed from the ledger\n // LEDGER_ENTRY_STATE = 3, // value of the entry\n // LEDGER_ENTRY_RESTORED = 4 // archived entry was restored in the ledger\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LedgerEntryChangeType\", {\n ledgerEntryCreated: 0,\n ledgerEntryUpdated: 1,\n ledgerEntryRemoved: 2,\n ledgerEntryState: 3,\n ledgerEntryRestored: 4\n });\n\n // === xdr source ============================================================\n //\n // union LedgerEntryChange switch (LedgerEntryChangeType type)\n // {\n // case LEDGER_ENTRY_CREATED:\n // LedgerEntry created;\n // case LEDGER_ENTRY_UPDATED:\n // LedgerEntry updated;\n // case LEDGER_ENTRY_REMOVED:\n // LedgerKey removed;\n // case LEDGER_ENTRY_STATE:\n // LedgerEntry state;\n // case LEDGER_ENTRY_RESTORED:\n // LedgerEntry restored;\n // };\n //\n // ===========================================================================\n xdr.union(\"LedgerEntryChange\", {\n switchOn: xdr.lookup(\"LedgerEntryChangeType\"),\n switchName: \"type\",\n switches: [[\"ledgerEntryCreated\", \"created\"], [\"ledgerEntryUpdated\", \"updated\"], [\"ledgerEntryRemoved\", \"removed\"], [\"ledgerEntryState\", \"state\"], [\"ledgerEntryRestored\", \"restored\"]],\n arms: {\n created: xdr.lookup(\"LedgerEntry\"),\n updated: xdr.lookup(\"LedgerEntry\"),\n removed: xdr.lookup(\"LedgerKey\"),\n state: xdr.lookup(\"LedgerEntry\"),\n restored: xdr.lookup(\"LedgerEntry\")\n }\n });\n\n // === xdr source ============================================================\n //\n // typedef LedgerEntryChange LedgerEntryChanges<>;\n //\n // ===========================================================================\n xdr.typedef(\"LedgerEntryChanges\", xdr.varArray(xdr.lookup(\"LedgerEntryChange\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // struct OperationMeta\n // {\n // LedgerEntryChanges changes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"OperationMeta\", [[\"changes\", xdr.lookup(\"LedgerEntryChanges\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionMetaV1\n // {\n // LedgerEntryChanges txChanges; // tx level changes if any\n // OperationMeta operations<>; // meta for each operation\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionMetaV1\", [[\"txChanges\", xdr.lookup(\"LedgerEntryChanges\")], [\"operations\", xdr.varArray(xdr.lookup(\"OperationMeta\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionMetaV2\n // {\n // LedgerEntryChanges txChangesBefore; // tx level changes before operations\n // // are applied if any\n // OperationMeta operations<>; // meta for each operation\n // LedgerEntryChanges txChangesAfter; // tx level changes after operations are\n // // applied if any\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionMetaV2\", [[\"txChangesBefore\", xdr.lookup(\"LedgerEntryChanges\")], [\"operations\", xdr.varArray(xdr.lookup(\"OperationMeta\"), 2147483647)], [\"txChangesAfter\", xdr.lookup(\"LedgerEntryChanges\")]]);\n\n // === xdr source ============================================================\n //\n // enum ContractEventType\n // {\n // SYSTEM = 0,\n // CONTRACT = 1,\n // DIAGNOSTIC = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ContractEventType\", {\n system: 0,\n contract: 1,\n diagnostic: 2\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // SCVal topics<>;\n // SCVal data;\n // }\n //\n // ===========================================================================\n xdr.struct(\"ContractEventV0\", [[\"topics\", xdr.varArray(xdr.lookup(\"ScVal\"), 2147483647)], [\"data\", xdr.lookup(\"ScVal\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // struct\n // {\n // SCVal topics<>;\n // SCVal data;\n // } v0;\n // }\n //\n // ===========================================================================\n xdr.union(\"ContractEventBody\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, \"v0\"]],\n arms: {\n v0: xdr.lookup(\"ContractEventV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ContractEvent\n // {\n // // We can use this to add more fields, or because it\n // // is first, to change ContractEvent into a union.\n // ExtensionPoint ext;\n //\n // ContractID* contractID;\n // ContractEventType type;\n //\n // union switch (int v)\n // {\n // case 0:\n // struct\n // {\n // SCVal topics<>;\n // SCVal data;\n // } v0;\n // }\n // body;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ContractEvent\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"contractId\", xdr.option(xdr.lookup(\"ContractId\"))], [\"type\", xdr.lookup(\"ContractEventType\")], [\"body\", xdr.lookup(\"ContractEventBody\")]]);\n\n // === xdr source ============================================================\n //\n // struct DiagnosticEvent\n // {\n // bool inSuccessfulContractCall;\n // ContractEvent event;\n // };\n //\n // ===========================================================================\n xdr.struct(\"DiagnosticEvent\", [[\"inSuccessfulContractCall\", xdr.bool()], [\"event\", xdr.lookup(\"ContractEvent\")]]);\n\n // === xdr source ============================================================\n //\n // struct SorobanTransactionMetaExtV1\n // {\n // ExtensionPoint ext;\n //\n // // The following are the components of the overall Soroban resource fee\n // // charged for the transaction.\n // // The following relation holds:\n // // `resourceFeeCharged = totalNonRefundableResourceFeeCharged + totalRefundableResourceFeeCharged`\n // // where `resourceFeeCharged` is the overall fee charged for the\n // // transaction. Also, `resourceFeeCharged` <= `sorobanData.resourceFee`\n // // i.e.we never charge more than the declared resource fee.\n // // The inclusion fee for charged the Soroban transaction can be found using\n // // the following equation:\n // // `result.feeCharged = resourceFeeCharged + inclusionFeeCharged`.\n //\n // // Total amount (in stroops) that has been charged for non-refundable\n // // Soroban resources.\n // // Non-refundable resources are charged based on the usage declared in\n // // the transaction envelope (such as `instructions`, `readBytes` etc.) and\n // // is charged regardless of the success of the transaction.\n // int64 totalNonRefundableResourceFeeCharged;\n // // Total amount (in stroops) that has been charged for refundable\n // // Soroban resource fees.\n // // Currently this comprises the rent fee (`rentFeeCharged`) and the\n // // fee for the events and return value.\n // // Refundable resources are charged based on the actual resources usage.\n // // Since currently refundable resources are only used for the successful\n // // transactions, this will be `0` for failed transactions.\n // int64 totalRefundableResourceFeeCharged;\n // // Amount (in stroops) that has been charged for rent.\n // // This is a part of `totalNonRefundableResourceFeeCharged`.\n // int64 rentFeeCharged;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanTransactionMetaExtV1\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"totalNonRefundableResourceFeeCharged\", xdr.lookup(\"Int64\")], [\"totalRefundableResourceFeeCharged\", xdr.lookup(\"Int64\")], [\"rentFeeCharged\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union SorobanTransactionMetaExt switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // SorobanTransactionMetaExtV1 v1;\n // };\n //\n // ===========================================================================\n xdr.union(\"SorobanTransactionMetaExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"SorobanTransactionMetaExtV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SorobanTransactionMeta\n // {\n // SorobanTransactionMetaExt ext;\n //\n // ContractEvent events<>; // custom events populated by the\n // // contracts themselves.\n // SCVal returnValue; // return value of the host fn invocation\n //\n // // Diagnostics events that are not hashed.\n // // This will contain all contract and diagnostic events. Even ones\n // // that were emitted in a failed contract call.\n // DiagnosticEvent diagnosticEvents<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanTransactionMeta\", [[\"ext\", xdr.lookup(\"SorobanTransactionMetaExt\")], [\"events\", xdr.varArray(xdr.lookup(\"ContractEvent\"), 2147483647)], [\"returnValue\", xdr.lookup(\"ScVal\")], [\"diagnosticEvents\", xdr.varArray(xdr.lookup(\"DiagnosticEvent\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionMetaV3\n // {\n // ExtensionPoint ext;\n //\n // LedgerEntryChanges txChangesBefore; // tx level changes before operations\n // // are applied if any\n // OperationMeta operations<>; // meta for each operation\n // LedgerEntryChanges txChangesAfter; // tx level changes after operations are\n // // applied if any\n // SorobanTransactionMeta* sorobanMeta; // Soroban-specific meta (only for\n // // Soroban transactions).\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionMetaV3\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"txChangesBefore\", xdr.lookup(\"LedgerEntryChanges\")], [\"operations\", xdr.varArray(xdr.lookup(\"OperationMeta\"), 2147483647)], [\"txChangesAfter\", xdr.lookup(\"LedgerEntryChanges\")], [\"sorobanMeta\", xdr.option(xdr.lookup(\"SorobanTransactionMeta\"))]]);\n\n // === xdr source ============================================================\n //\n // struct OperationMetaV2\n // {\n // ExtensionPoint ext;\n //\n // LedgerEntryChanges changes;\n //\n // ContractEvent events<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"OperationMetaV2\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"changes\", xdr.lookup(\"LedgerEntryChanges\")], [\"events\", xdr.varArray(xdr.lookup(\"ContractEvent\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct SorobanTransactionMetaV2\n // {\n // SorobanTransactionMetaExt ext;\n //\n // SCVal* returnValue;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanTransactionMetaV2\", [[\"ext\", xdr.lookup(\"SorobanTransactionMetaExt\")], [\"returnValue\", xdr.option(xdr.lookup(\"ScVal\"))]]);\n\n // === xdr source ============================================================\n //\n // enum TransactionEventStage {\n // // The event has happened before any one of the transactions has its\n // // operations applied.\n // TRANSACTION_EVENT_STAGE_BEFORE_ALL_TXS = 0,\n // // The event has happened immediately after operations of the transaction\n // // have been applied.\n // TRANSACTION_EVENT_STAGE_AFTER_TX = 1,\n // // The event has happened after every transaction had its operations\n // // applied.\n // TRANSACTION_EVENT_STAGE_AFTER_ALL_TXS = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"TransactionEventStage\", {\n transactionEventStageBeforeAllTxes: 0,\n transactionEventStageAfterTx: 1,\n transactionEventStageAfterAllTxes: 2\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionEvent {\n // TransactionEventStage stage; // Stage at which an event has occurred.\n // ContractEvent event; // The contract event that has occurred.\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionEvent\", [[\"stage\", xdr.lookup(\"TransactionEventStage\")], [\"event\", xdr.lookup(\"ContractEvent\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionMetaV4\n // {\n // ExtensionPoint ext;\n //\n // LedgerEntryChanges txChangesBefore; // tx level changes before operations\n // // are applied if any\n // OperationMetaV2 operations<>; // meta for each operation\n // LedgerEntryChanges txChangesAfter; // tx level changes after operations are\n // // applied if any\n // SorobanTransactionMetaV2* sorobanMeta; // Soroban-specific meta (only for\n // // Soroban transactions).\n //\n // TransactionEvent events<>; // Used for transaction-level events (like fee payment)\n // DiagnosticEvent diagnosticEvents<>; // Used for all diagnostic information\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionMetaV4\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"txChangesBefore\", xdr.lookup(\"LedgerEntryChanges\")], [\"operations\", xdr.varArray(xdr.lookup(\"OperationMetaV2\"), 2147483647)], [\"txChangesAfter\", xdr.lookup(\"LedgerEntryChanges\")], [\"sorobanMeta\", xdr.option(xdr.lookup(\"SorobanTransactionMetaV2\"))], [\"events\", xdr.varArray(xdr.lookup(\"TransactionEvent\"), 2147483647)], [\"diagnosticEvents\", xdr.varArray(xdr.lookup(\"DiagnosticEvent\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct InvokeHostFunctionSuccessPreImage\n // {\n // SCVal returnValue;\n // ContractEvent events<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"InvokeHostFunctionSuccessPreImage\", [[\"returnValue\", xdr.lookup(\"ScVal\")], [\"events\", xdr.varArray(xdr.lookup(\"ContractEvent\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union TransactionMeta switch (int v)\n // {\n // case 0:\n // OperationMeta operations<>;\n // case 1:\n // TransactionMetaV1 v1;\n // case 2:\n // TransactionMetaV2 v2;\n // case 3:\n // TransactionMetaV3 v3;\n // case 4:\n // TransactionMetaV4 v4;\n // };\n //\n // ===========================================================================\n xdr.union(\"TransactionMeta\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, \"operations\"], [1, \"v1\"], [2, \"v2\"], [3, \"v3\"], [4, \"v4\"]],\n arms: {\n operations: xdr.varArray(xdr.lookup(\"OperationMeta\"), 2147483647),\n v1: xdr.lookup(\"TransactionMetaV1\"),\n v2: xdr.lookup(\"TransactionMetaV2\"),\n v3: xdr.lookup(\"TransactionMetaV3\"),\n v4: xdr.lookup(\"TransactionMetaV4\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionResultMeta\n // {\n // TransactionResultPair result;\n // LedgerEntryChanges feeProcessing;\n // TransactionMeta txApplyProcessing;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionResultMeta\", [[\"result\", xdr.lookup(\"TransactionResultPair\")], [\"feeProcessing\", xdr.lookup(\"LedgerEntryChanges\")], [\"txApplyProcessing\", xdr.lookup(\"TransactionMeta\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionResultMetaV1\n // {\n // ExtensionPoint ext;\n //\n // TransactionResultPair result;\n // LedgerEntryChanges feeProcessing;\n // TransactionMeta txApplyProcessing;\n //\n // LedgerEntryChanges postTxApplyFeeProcessing;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionResultMetaV1\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"result\", xdr.lookup(\"TransactionResultPair\")], [\"feeProcessing\", xdr.lookup(\"LedgerEntryChanges\")], [\"txApplyProcessing\", xdr.lookup(\"TransactionMeta\")], [\"postTxApplyFeeProcessing\", xdr.lookup(\"LedgerEntryChanges\")]]);\n\n // === xdr source ============================================================\n //\n // struct UpgradeEntryMeta\n // {\n // LedgerUpgrade upgrade;\n // LedgerEntryChanges changes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"UpgradeEntryMeta\", [[\"upgrade\", xdr.lookup(\"LedgerUpgrade\")], [\"changes\", xdr.lookup(\"LedgerEntryChanges\")]]);\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseMetaV0\n // {\n // LedgerHeaderHistoryEntry ledgerHeader;\n // // NB: txSet is sorted in \"Hash order\"\n // TransactionSet txSet;\n //\n // // NB: transactions are sorted in apply order here\n // // fees for all transactions are processed first\n // // followed by applying transactions\n // TransactionResultMeta txProcessing<>;\n //\n // // upgrades are applied last\n // UpgradeEntryMeta upgradesProcessing<>;\n //\n // // other misc information attached to the ledger close\n // SCPHistoryEntry scpInfo<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseMetaV0\", [[\"ledgerHeader\", xdr.lookup(\"LedgerHeaderHistoryEntry\")], [\"txSet\", xdr.lookup(\"TransactionSet\")], [\"txProcessing\", xdr.varArray(xdr.lookup(\"TransactionResultMeta\"), 2147483647)], [\"upgradesProcessing\", xdr.varArray(xdr.lookup(\"UpgradeEntryMeta\"), 2147483647)], [\"scpInfo\", xdr.varArray(xdr.lookup(\"ScpHistoryEntry\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseMetaExtV1\n // {\n // ExtensionPoint ext;\n // int64 sorobanFeeWrite1KB;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseMetaExtV1\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"sorobanFeeWrite1Kb\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union LedgerCloseMetaExt switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // LedgerCloseMetaExtV1 v1;\n // };\n //\n // ===========================================================================\n xdr.union(\"LedgerCloseMetaExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"v1\"]],\n arms: {\n v1: xdr.lookup(\"LedgerCloseMetaExtV1\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseMetaV1\n // {\n // LedgerCloseMetaExt ext;\n //\n // LedgerHeaderHistoryEntry ledgerHeader;\n //\n // GeneralizedTransactionSet txSet;\n //\n // // NB: transactions are sorted in apply order here\n // // fees for all transactions are processed first\n // // followed by applying transactions\n // TransactionResultMeta txProcessing<>;\n //\n // // upgrades are applied last\n // UpgradeEntryMeta upgradesProcessing<>;\n //\n // // other misc information attached to the ledger close\n // SCPHistoryEntry scpInfo<>;\n //\n // // Size in bytes of live Soroban state, to support downstream\n // // systems calculating storage fees correctly.\n // uint64 totalByteSizeOfLiveSorobanState;\n //\n // // TTL and data/code keys that have been evicted at this ledger.\n // LedgerKey evictedKeys<>;\n //\n // // Maintained for backwards compatibility, should never be populated.\n // LedgerEntry unused<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseMetaV1\", [[\"ext\", xdr.lookup(\"LedgerCloseMetaExt\")], [\"ledgerHeader\", xdr.lookup(\"LedgerHeaderHistoryEntry\")], [\"txSet\", xdr.lookup(\"GeneralizedTransactionSet\")], [\"txProcessing\", xdr.varArray(xdr.lookup(\"TransactionResultMeta\"), 2147483647)], [\"upgradesProcessing\", xdr.varArray(xdr.lookup(\"UpgradeEntryMeta\"), 2147483647)], [\"scpInfo\", xdr.varArray(xdr.lookup(\"ScpHistoryEntry\"), 2147483647)], [\"totalByteSizeOfLiveSorobanState\", xdr.lookup(\"Uint64\")], [\"evictedKeys\", xdr.varArray(xdr.lookup(\"LedgerKey\"), 2147483647)], [\"unused\", xdr.varArray(xdr.lookup(\"LedgerEntry\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseMetaV2\n // {\n // LedgerCloseMetaExt ext;\n //\n // LedgerHeaderHistoryEntry ledgerHeader;\n //\n // GeneralizedTransactionSet txSet;\n //\n // // NB: transactions are sorted in apply order here\n // // fees for all transactions are processed first\n // // followed by applying transactions\n // TransactionResultMetaV1 txProcessing<>;\n //\n // // upgrades are applied last\n // UpgradeEntryMeta upgradesProcessing<>;\n //\n // // other misc information attached to the ledger close\n // SCPHistoryEntry scpInfo<>;\n //\n // // Size in bytes of live Soroban state, to support downstream\n // // systems calculating storage fees correctly.\n // uint64 totalByteSizeOfLiveSorobanState;\n //\n // // TTL and data/code keys that have been evicted at this ledger.\n // LedgerKey evictedKeys<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseMetaV2\", [[\"ext\", xdr.lookup(\"LedgerCloseMetaExt\")], [\"ledgerHeader\", xdr.lookup(\"LedgerHeaderHistoryEntry\")], [\"txSet\", xdr.lookup(\"GeneralizedTransactionSet\")], [\"txProcessing\", xdr.varArray(xdr.lookup(\"TransactionResultMetaV1\"), 2147483647)], [\"upgradesProcessing\", xdr.varArray(xdr.lookup(\"UpgradeEntryMeta\"), 2147483647)], [\"scpInfo\", xdr.varArray(xdr.lookup(\"ScpHistoryEntry\"), 2147483647)], [\"totalByteSizeOfLiveSorobanState\", xdr.lookup(\"Uint64\")], [\"evictedKeys\", xdr.varArray(xdr.lookup(\"LedgerKey\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union LedgerCloseMeta switch (int v)\n // {\n // case 0:\n // LedgerCloseMetaV0 v0;\n // case 1:\n // LedgerCloseMetaV1 v1;\n // case 2:\n // LedgerCloseMetaV2 v2;\n // };\n //\n // ===========================================================================\n xdr.union(\"LedgerCloseMeta\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, \"v0\"], [1, \"v1\"], [2, \"v2\"]],\n arms: {\n v0: xdr.lookup(\"LedgerCloseMetaV0\"),\n v1: xdr.lookup(\"LedgerCloseMetaV1\"),\n v2: xdr.lookup(\"LedgerCloseMetaV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ErrorCode\n // {\n // ERR_MISC = 0, // Unspecific error\n // ERR_DATA = 1, // Malformed data\n // ERR_CONF = 2, // Misconfiguration error\n // ERR_AUTH = 3, // Authentication failure\n // ERR_LOAD = 4 // System overloaded\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ErrorCode\", {\n errMisc: 0,\n errData: 1,\n errConf: 2,\n errAuth: 3,\n errLoad: 4\n });\n\n // === xdr source ============================================================\n //\n // struct Error\n // {\n // ErrorCode code;\n // string msg<100>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Error\", [[\"code\", xdr.lookup(\"ErrorCode\")], [\"msg\", xdr.string(100)]]);\n\n // === xdr source ============================================================\n //\n // struct SendMore\n // {\n // uint32 numMessages;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SendMore\", [[\"numMessages\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SendMoreExtended\n // {\n // uint32 numMessages;\n // uint32 numBytes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SendMoreExtended\", [[\"numMessages\", xdr.lookup(\"Uint32\")], [\"numBytes\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct AuthCert\n // {\n // Curve25519Public pubkey;\n // uint64 expiration;\n // Signature sig;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AuthCert\", [[\"pubkey\", xdr.lookup(\"Curve25519Public\")], [\"expiration\", xdr.lookup(\"Uint64\")], [\"sig\", xdr.lookup(\"Signature\")]]);\n\n // === xdr source ============================================================\n //\n // struct Hello\n // {\n // uint32 ledgerVersion;\n // uint32 overlayVersion;\n // uint32 overlayMinVersion;\n // Hash networkID;\n // string versionStr<100>;\n // int listeningPort;\n // NodeID peerID;\n // AuthCert cert;\n // uint256 nonce;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Hello\", [[\"ledgerVersion\", xdr.lookup(\"Uint32\")], [\"overlayVersion\", xdr.lookup(\"Uint32\")], [\"overlayMinVersion\", xdr.lookup(\"Uint32\")], [\"networkId\", xdr.lookup(\"Hash\")], [\"versionStr\", xdr.string(100)], [\"listeningPort\", xdr[\"int\"]()], [\"peerId\", xdr.lookup(\"NodeId\")], [\"cert\", xdr.lookup(\"AuthCert\")], [\"nonce\", xdr.lookup(\"Uint256\")]]);\n\n // === xdr source ============================================================\n //\n // const AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED = 200;\n //\n // ===========================================================================\n xdr[\"const\"](\"AUTH_MSG_FLAG_FLOW_CONTROL_BYTES_REQUESTED\", 200);\n\n // === xdr source ============================================================\n //\n // struct Auth\n // {\n // int flags;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Auth\", [[\"flags\", xdr[\"int\"]()]]);\n\n // === xdr source ============================================================\n //\n // enum IPAddrType\n // {\n // IPv4 = 0,\n // IPv6 = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"IpAddrType\", {\n iPv4: 0,\n iPv6: 1\n });\n\n // === xdr source ============================================================\n //\n // union switch (IPAddrType type)\n // {\n // case IPv4:\n // opaque ipv4[4];\n // case IPv6:\n // opaque ipv6[16];\n // }\n //\n // ===========================================================================\n xdr.union(\"PeerAddressIp\", {\n switchOn: xdr.lookup(\"IpAddrType\"),\n switchName: \"type\",\n switches: [[\"iPv4\", \"ipv4\"], [\"iPv6\", \"ipv6\"]],\n arms: {\n ipv4: xdr.opaque(4),\n ipv6: xdr.opaque(16)\n }\n });\n\n // === xdr source ============================================================\n //\n // struct PeerAddress\n // {\n // union switch (IPAddrType type)\n // {\n // case IPv4:\n // opaque ipv4[4];\n // case IPv6:\n // opaque ipv6[16];\n // }\n // ip;\n // uint32 port;\n // uint32 numFailures;\n // };\n //\n // ===========================================================================\n xdr.struct(\"PeerAddress\", [[\"ip\", xdr.lookup(\"PeerAddressIp\")], [\"port\", xdr.lookup(\"Uint32\")], [\"numFailures\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // enum MessageType\n // {\n // ERROR_MSG = 0,\n // AUTH = 2,\n // DONT_HAVE = 3,\n // // GET_PEERS (4) is deprecated\n //\n // PEERS = 5,\n //\n // GET_TX_SET = 6, // gets a particular txset by hash\n // TX_SET = 7,\n // GENERALIZED_TX_SET = 17,\n //\n // TRANSACTION = 8, // pass on a tx you have heard about\n //\n // // SCP\n // GET_SCP_QUORUMSET = 9,\n // SCP_QUORUMSET = 10,\n // SCP_MESSAGE = 11,\n // GET_SCP_STATE = 12,\n //\n // // new messages\n // HELLO = 13,\n //\n // // SURVEY_REQUEST (14) removed and replaced by TIME_SLICED_SURVEY_REQUEST\n // // SURVEY_RESPONSE (15) removed and replaced by TIME_SLICED_SURVEY_RESPONSE\n //\n // SEND_MORE = 16,\n // SEND_MORE_EXTENDED = 20,\n //\n // FLOOD_ADVERT = 18,\n // FLOOD_DEMAND = 19,\n //\n // TIME_SLICED_SURVEY_REQUEST = 21,\n // TIME_SLICED_SURVEY_RESPONSE = 22,\n // TIME_SLICED_SURVEY_START_COLLECTING = 23,\n // TIME_SLICED_SURVEY_STOP_COLLECTING = 24\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"MessageType\", {\n errorMsg: 0,\n auth: 2,\n dontHave: 3,\n peers: 5,\n getTxSet: 6,\n txSet: 7,\n generalizedTxSet: 17,\n transaction: 8,\n getScpQuorumset: 9,\n scpQuorumset: 10,\n scpMessage: 11,\n getScpState: 12,\n hello: 13,\n sendMore: 16,\n sendMoreExtended: 20,\n floodAdvert: 18,\n floodDemand: 19,\n timeSlicedSurveyRequest: 21,\n timeSlicedSurveyResponse: 22,\n timeSlicedSurveyStartCollecting: 23,\n timeSlicedSurveyStopCollecting: 24\n });\n\n // === xdr source ============================================================\n //\n // struct DontHave\n // {\n // MessageType type;\n // uint256 reqHash;\n // };\n //\n // ===========================================================================\n xdr.struct(\"DontHave\", [[\"type\", xdr.lookup(\"MessageType\")], [\"reqHash\", xdr.lookup(\"Uint256\")]]);\n\n // === xdr source ============================================================\n //\n // enum SurveyMessageCommandType\n // {\n // TIME_SLICED_SURVEY_TOPOLOGY = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SurveyMessageCommandType\", {\n timeSlicedSurveyTopology: 1\n });\n\n // === xdr source ============================================================\n //\n // enum SurveyMessageResponseType\n // {\n // SURVEY_TOPOLOGY_RESPONSE_V2 = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SurveyMessageResponseType\", {\n surveyTopologyResponseV2: 2\n });\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedSurveyStartCollectingMessage\n // {\n // NodeID surveyorID;\n // uint32 nonce;\n // uint32 ledgerNum;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedSurveyStartCollectingMessage\", [[\"surveyorId\", xdr.lookup(\"NodeId\")], [\"nonce\", xdr.lookup(\"Uint32\")], [\"ledgerNum\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SignedTimeSlicedSurveyStartCollectingMessage\n // {\n // Signature signature;\n // TimeSlicedSurveyStartCollectingMessage startCollecting;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SignedTimeSlicedSurveyStartCollectingMessage\", [[\"signature\", xdr.lookup(\"Signature\")], [\"startCollecting\", xdr.lookup(\"TimeSlicedSurveyStartCollectingMessage\")]]);\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedSurveyStopCollectingMessage\n // {\n // NodeID surveyorID;\n // uint32 nonce;\n // uint32 ledgerNum;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedSurveyStopCollectingMessage\", [[\"surveyorId\", xdr.lookup(\"NodeId\")], [\"nonce\", xdr.lookup(\"Uint32\")], [\"ledgerNum\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SignedTimeSlicedSurveyStopCollectingMessage\n // {\n // Signature signature;\n // TimeSlicedSurveyStopCollectingMessage stopCollecting;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SignedTimeSlicedSurveyStopCollectingMessage\", [[\"signature\", xdr.lookup(\"Signature\")], [\"stopCollecting\", xdr.lookup(\"TimeSlicedSurveyStopCollectingMessage\")]]);\n\n // === xdr source ============================================================\n //\n // struct SurveyRequestMessage\n // {\n // NodeID surveyorPeerID;\n // NodeID surveyedPeerID;\n // uint32 ledgerNum;\n // Curve25519Public encryptionKey;\n // SurveyMessageCommandType commandType;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SurveyRequestMessage\", [[\"surveyorPeerId\", xdr.lookup(\"NodeId\")], [\"surveyedPeerId\", xdr.lookup(\"NodeId\")], [\"ledgerNum\", xdr.lookup(\"Uint32\")], [\"encryptionKey\", xdr.lookup(\"Curve25519Public\")], [\"commandType\", xdr.lookup(\"SurveyMessageCommandType\")]]);\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedSurveyRequestMessage\n // {\n // SurveyRequestMessage request;\n // uint32 nonce;\n // uint32 inboundPeersIndex;\n // uint32 outboundPeersIndex;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedSurveyRequestMessage\", [[\"request\", xdr.lookup(\"SurveyRequestMessage\")], [\"nonce\", xdr.lookup(\"Uint32\")], [\"inboundPeersIndex\", xdr.lookup(\"Uint32\")], [\"outboundPeersIndex\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SignedTimeSlicedSurveyRequestMessage\n // {\n // Signature requestSignature;\n // TimeSlicedSurveyRequestMessage request;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SignedTimeSlicedSurveyRequestMessage\", [[\"requestSignature\", xdr.lookup(\"Signature\")], [\"request\", xdr.lookup(\"TimeSlicedSurveyRequestMessage\")]]);\n\n // === xdr source ============================================================\n //\n // typedef opaque EncryptedBody<64000>;\n //\n // ===========================================================================\n xdr.typedef(\"EncryptedBody\", xdr.varOpaque(64000));\n\n // === xdr source ============================================================\n //\n // struct SurveyResponseMessage\n // {\n // NodeID surveyorPeerID;\n // NodeID surveyedPeerID;\n // uint32 ledgerNum;\n // SurveyMessageCommandType commandType;\n // EncryptedBody encryptedBody;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SurveyResponseMessage\", [[\"surveyorPeerId\", xdr.lookup(\"NodeId\")], [\"surveyedPeerId\", xdr.lookup(\"NodeId\")], [\"ledgerNum\", xdr.lookup(\"Uint32\")], [\"commandType\", xdr.lookup(\"SurveyMessageCommandType\")], [\"encryptedBody\", xdr.lookup(\"EncryptedBody\")]]);\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedSurveyResponseMessage\n // {\n // SurveyResponseMessage response;\n // uint32 nonce;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedSurveyResponseMessage\", [[\"response\", xdr.lookup(\"SurveyResponseMessage\")], [\"nonce\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SignedTimeSlicedSurveyResponseMessage\n // {\n // Signature responseSignature;\n // TimeSlicedSurveyResponseMessage response;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SignedTimeSlicedSurveyResponseMessage\", [[\"responseSignature\", xdr.lookup(\"Signature\")], [\"response\", xdr.lookup(\"TimeSlicedSurveyResponseMessage\")]]);\n\n // === xdr source ============================================================\n //\n // struct PeerStats\n // {\n // NodeID id;\n // string versionStr<100>;\n // uint64 messagesRead;\n // uint64 messagesWritten;\n // uint64 bytesRead;\n // uint64 bytesWritten;\n // uint64 secondsConnected;\n //\n // uint64 uniqueFloodBytesRecv;\n // uint64 duplicateFloodBytesRecv;\n // uint64 uniqueFetchBytesRecv;\n // uint64 duplicateFetchBytesRecv;\n //\n // uint64 uniqueFloodMessageRecv;\n // uint64 duplicateFloodMessageRecv;\n // uint64 uniqueFetchMessageRecv;\n // uint64 duplicateFetchMessageRecv;\n // };\n //\n // ===========================================================================\n xdr.struct(\"PeerStats\", [[\"id\", xdr.lookup(\"NodeId\")], [\"versionStr\", xdr.string(100)], [\"messagesRead\", xdr.lookup(\"Uint64\")], [\"messagesWritten\", xdr.lookup(\"Uint64\")], [\"bytesRead\", xdr.lookup(\"Uint64\")], [\"bytesWritten\", xdr.lookup(\"Uint64\")], [\"secondsConnected\", xdr.lookup(\"Uint64\")], [\"uniqueFloodBytesRecv\", xdr.lookup(\"Uint64\")], [\"duplicateFloodBytesRecv\", xdr.lookup(\"Uint64\")], [\"uniqueFetchBytesRecv\", xdr.lookup(\"Uint64\")], [\"duplicateFetchBytesRecv\", xdr.lookup(\"Uint64\")], [\"uniqueFloodMessageRecv\", xdr.lookup(\"Uint64\")], [\"duplicateFloodMessageRecv\", xdr.lookup(\"Uint64\")], [\"uniqueFetchMessageRecv\", xdr.lookup(\"Uint64\")], [\"duplicateFetchMessageRecv\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedNodeData\n // {\n // uint32 addedAuthenticatedPeers;\n // uint32 droppedAuthenticatedPeers;\n // uint32 totalInboundPeerCount;\n // uint32 totalOutboundPeerCount;\n //\n // // SCP stats\n // uint32 p75SCPFirstToSelfLatencyMs;\n // uint32 p75SCPSelfToOtherLatencyMs;\n //\n // // How many times the node lost sync in the time slice\n // uint32 lostSyncCount;\n //\n // // Config data\n // bool isValidator;\n // uint32 maxInboundPeerCount;\n // uint32 maxOutboundPeerCount;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedNodeData\", [[\"addedAuthenticatedPeers\", xdr.lookup(\"Uint32\")], [\"droppedAuthenticatedPeers\", xdr.lookup(\"Uint32\")], [\"totalInboundPeerCount\", xdr.lookup(\"Uint32\")], [\"totalOutboundPeerCount\", xdr.lookup(\"Uint32\")], [\"p75ScpFirstToSelfLatencyMs\", xdr.lookup(\"Uint32\")], [\"p75ScpSelfToOtherLatencyMs\", xdr.lookup(\"Uint32\")], [\"lostSyncCount\", xdr.lookup(\"Uint32\")], [\"isValidator\", xdr.bool()], [\"maxInboundPeerCount\", xdr.lookup(\"Uint32\")], [\"maxOutboundPeerCount\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct TimeSlicedPeerData\n // {\n // PeerStats peerStats;\n // uint32 averageLatencyMs;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeSlicedPeerData\", [[\"peerStats\", xdr.lookup(\"PeerStats\")], [\"averageLatencyMs\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // typedef TimeSlicedPeerData TimeSlicedPeerDataList<25>;\n //\n // ===========================================================================\n xdr.typedef(\"TimeSlicedPeerDataList\", xdr.varArray(xdr.lookup(\"TimeSlicedPeerData\"), 25));\n\n // === xdr source ============================================================\n //\n // struct TopologyResponseBodyV2\n // {\n // TimeSlicedPeerDataList inboundPeers;\n // TimeSlicedPeerDataList outboundPeers;\n // TimeSlicedNodeData nodeData;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TopologyResponseBodyV2\", [[\"inboundPeers\", xdr.lookup(\"TimeSlicedPeerDataList\")], [\"outboundPeers\", xdr.lookup(\"TimeSlicedPeerDataList\")], [\"nodeData\", xdr.lookup(\"TimeSlicedNodeData\")]]);\n\n // === xdr source ============================================================\n //\n // union SurveyResponseBody switch (SurveyMessageResponseType type)\n // {\n // case SURVEY_TOPOLOGY_RESPONSE_V2:\n // TopologyResponseBodyV2 topologyResponseBodyV2;\n // };\n //\n // ===========================================================================\n xdr.union(\"SurveyResponseBody\", {\n switchOn: xdr.lookup(\"SurveyMessageResponseType\"),\n switchName: \"type\",\n switches: [[\"surveyTopologyResponseV2\", \"topologyResponseBodyV2\"]],\n arms: {\n topologyResponseBodyV2: xdr.lookup(\"TopologyResponseBodyV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // const TX_ADVERT_VECTOR_MAX_SIZE = 1000;\n //\n // ===========================================================================\n xdr[\"const\"](\"TX_ADVERT_VECTOR_MAX_SIZE\", 1000);\n\n // === xdr source ============================================================\n //\n // typedef Hash TxAdvertVector;\n //\n // ===========================================================================\n xdr.typedef(\"TxAdvertVector\", xdr.varArray(xdr.lookup(\"Hash\"), xdr.lookup(\"TX_ADVERT_VECTOR_MAX_SIZE\")));\n\n // === xdr source ============================================================\n //\n // struct FloodAdvert\n // {\n // TxAdvertVector txHashes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"FloodAdvert\", [[\"txHashes\", xdr.lookup(\"TxAdvertVector\")]]);\n\n // === xdr source ============================================================\n //\n // const TX_DEMAND_VECTOR_MAX_SIZE = 1000;\n //\n // ===========================================================================\n xdr[\"const\"](\"TX_DEMAND_VECTOR_MAX_SIZE\", 1000);\n\n // === xdr source ============================================================\n //\n // typedef Hash TxDemandVector;\n //\n // ===========================================================================\n xdr.typedef(\"TxDemandVector\", xdr.varArray(xdr.lookup(\"Hash\"), xdr.lookup(\"TX_DEMAND_VECTOR_MAX_SIZE\")));\n\n // === xdr source ============================================================\n //\n // struct FloodDemand\n // {\n // TxDemandVector txHashes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"FloodDemand\", [[\"txHashes\", xdr.lookup(\"TxDemandVector\")]]);\n\n // === xdr source ============================================================\n //\n // union StellarMessage switch (MessageType type)\n // {\n // case ERROR_MSG:\n // Error error;\n // case HELLO:\n // Hello hello;\n // case AUTH:\n // Auth auth;\n // case DONT_HAVE:\n // DontHave dontHave;\n // case PEERS:\n // PeerAddress peers<100>;\n //\n // case GET_TX_SET:\n // uint256 txSetHash;\n // case TX_SET:\n // TransactionSet txSet;\n // case GENERALIZED_TX_SET:\n // GeneralizedTransactionSet generalizedTxSet;\n //\n // case TRANSACTION:\n // TransactionEnvelope transaction;\n //\n // case TIME_SLICED_SURVEY_REQUEST:\n // SignedTimeSlicedSurveyRequestMessage signedTimeSlicedSurveyRequestMessage;\n //\n // case TIME_SLICED_SURVEY_RESPONSE:\n // SignedTimeSlicedSurveyResponseMessage signedTimeSlicedSurveyResponseMessage;\n //\n // case TIME_SLICED_SURVEY_START_COLLECTING:\n // SignedTimeSlicedSurveyStartCollectingMessage\n // signedTimeSlicedSurveyStartCollectingMessage;\n //\n // case TIME_SLICED_SURVEY_STOP_COLLECTING:\n // SignedTimeSlicedSurveyStopCollectingMessage\n // signedTimeSlicedSurveyStopCollectingMessage;\n //\n // // SCP\n // case GET_SCP_QUORUMSET:\n // uint256 qSetHash;\n // case SCP_QUORUMSET:\n // SCPQuorumSet qSet;\n // case SCP_MESSAGE:\n // SCPEnvelope envelope;\n // case GET_SCP_STATE:\n // uint32 getSCPLedgerSeq; // ledger seq requested ; if 0, requests the latest\n // case SEND_MORE:\n // SendMore sendMoreMessage;\n // case SEND_MORE_EXTENDED:\n // SendMoreExtended sendMoreExtendedMessage;\n // // Pull mode\n // case FLOOD_ADVERT:\n // FloodAdvert floodAdvert;\n // case FLOOD_DEMAND:\n // FloodDemand floodDemand;\n // };\n //\n // ===========================================================================\n xdr.union(\"StellarMessage\", {\n switchOn: xdr.lookup(\"MessageType\"),\n switchName: \"type\",\n switches: [[\"errorMsg\", \"error\"], [\"hello\", \"hello\"], [\"auth\", \"auth\"], [\"dontHave\", \"dontHave\"], [\"peers\", \"peers\"], [\"getTxSet\", \"txSetHash\"], [\"txSet\", \"txSet\"], [\"generalizedTxSet\", \"generalizedTxSet\"], [\"transaction\", \"transaction\"], [\"timeSlicedSurveyRequest\", \"signedTimeSlicedSurveyRequestMessage\"], [\"timeSlicedSurveyResponse\", \"signedTimeSlicedSurveyResponseMessage\"], [\"timeSlicedSurveyStartCollecting\", \"signedTimeSlicedSurveyStartCollectingMessage\"], [\"timeSlicedSurveyStopCollecting\", \"signedTimeSlicedSurveyStopCollectingMessage\"], [\"getScpQuorumset\", \"qSetHash\"], [\"scpQuorumset\", \"qSet\"], [\"scpMessage\", \"envelope\"], [\"getScpState\", \"getScpLedgerSeq\"], [\"sendMore\", \"sendMoreMessage\"], [\"sendMoreExtended\", \"sendMoreExtendedMessage\"], [\"floodAdvert\", \"floodAdvert\"], [\"floodDemand\", \"floodDemand\"]],\n arms: {\n error: xdr.lookup(\"Error\"),\n hello: xdr.lookup(\"Hello\"),\n auth: xdr.lookup(\"Auth\"),\n dontHave: xdr.lookup(\"DontHave\"),\n peers: xdr.varArray(xdr.lookup(\"PeerAddress\"), 100),\n txSetHash: xdr.lookup(\"Uint256\"),\n txSet: xdr.lookup(\"TransactionSet\"),\n generalizedTxSet: xdr.lookup(\"GeneralizedTransactionSet\"),\n transaction: xdr.lookup(\"TransactionEnvelope\"),\n signedTimeSlicedSurveyRequestMessage: xdr.lookup(\"SignedTimeSlicedSurveyRequestMessage\"),\n signedTimeSlicedSurveyResponseMessage: xdr.lookup(\"SignedTimeSlicedSurveyResponseMessage\"),\n signedTimeSlicedSurveyStartCollectingMessage: xdr.lookup(\"SignedTimeSlicedSurveyStartCollectingMessage\"),\n signedTimeSlicedSurveyStopCollectingMessage: xdr.lookup(\"SignedTimeSlicedSurveyStopCollectingMessage\"),\n qSetHash: xdr.lookup(\"Uint256\"),\n qSet: xdr.lookup(\"ScpQuorumSet\"),\n envelope: xdr.lookup(\"ScpEnvelope\"),\n getScpLedgerSeq: xdr.lookup(\"Uint32\"),\n sendMoreMessage: xdr.lookup(\"SendMore\"),\n sendMoreExtendedMessage: xdr.lookup(\"SendMoreExtended\"),\n floodAdvert: xdr.lookup(\"FloodAdvert\"),\n floodDemand: xdr.lookup(\"FloodDemand\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // uint64 sequence;\n // StellarMessage message;\n // HmacSha256Mac mac;\n // }\n //\n // ===========================================================================\n xdr.struct(\"AuthenticatedMessageV0\", [[\"sequence\", xdr.lookup(\"Uint64\")], [\"message\", xdr.lookup(\"StellarMessage\")], [\"mac\", xdr.lookup(\"HmacSha256Mac\")]]);\n\n // === xdr source ============================================================\n //\n // union AuthenticatedMessage switch (uint32 v)\n // {\n // case 0:\n // struct\n // {\n // uint64 sequence;\n // StellarMessage message;\n // HmacSha256Mac mac;\n // } v0;\n // };\n //\n // ===========================================================================\n xdr.union(\"AuthenticatedMessage\", {\n switchOn: xdr.lookup(\"Uint32\"),\n switchName: \"v\",\n switches: [[0, \"v0\"]],\n arms: {\n v0: xdr.lookup(\"AuthenticatedMessageV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // const MAX_OPS_PER_TX = 100;\n //\n // ===========================================================================\n xdr[\"const\"](\"MAX_OPS_PER_TX\", 100);\n\n // === xdr source ============================================================\n //\n // union LiquidityPoolParameters switch (LiquidityPoolType type)\n // {\n // case LIQUIDITY_POOL_CONSTANT_PRODUCT:\n // LiquidityPoolConstantProductParameters constantProduct;\n // };\n //\n // ===========================================================================\n xdr.union(\"LiquidityPoolParameters\", {\n switchOn: xdr.lookup(\"LiquidityPoolType\"),\n switchName: \"type\",\n switches: [[\"liquidityPoolConstantProduct\", \"constantProduct\"]],\n arms: {\n constantProduct: xdr.lookup(\"LiquidityPoolConstantProductParameters\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // uint64 id;\n // uint256 ed25519;\n // }\n //\n // ===========================================================================\n xdr.struct(\"MuxedAccountMed25519\", [[\"id\", xdr.lookup(\"Uint64\")], [\"ed25519\", xdr.lookup(\"Uint256\")]]);\n\n // === xdr source ============================================================\n //\n // union MuxedAccount switch (CryptoKeyType type)\n // {\n // case KEY_TYPE_ED25519:\n // uint256 ed25519;\n // case KEY_TYPE_MUXED_ED25519:\n // struct\n // {\n // uint64 id;\n // uint256 ed25519;\n // } med25519;\n // };\n //\n // ===========================================================================\n xdr.union(\"MuxedAccount\", {\n switchOn: xdr.lookup(\"CryptoKeyType\"),\n switchName: \"type\",\n switches: [[\"keyTypeEd25519\", \"ed25519\"], [\"keyTypeMuxedEd25519\", \"med25519\"]],\n arms: {\n ed25519: xdr.lookup(\"Uint256\"),\n med25519: xdr.lookup(\"MuxedAccountMed25519\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct DecoratedSignature\n // {\n // SignatureHint hint; // last 4 bytes of the public key, used as a hint\n // Signature signature; // actual signature\n // };\n //\n // ===========================================================================\n xdr.struct(\"DecoratedSignature\", [[\"hint\", xdr.lookup(\"SignatureHint\")], [\"signature\", xdr.lookup(\"Signature\")]]);\n\n // === xdr source ============================================================\n //\n // enum OperationType\n // {\n // CREATE_ACCOUNT = 0,\n // PAYMENT = 1,\n // PATH_PAYMENT_STRICT_RECEIVE = 2,\n // MANAGE_SELL_OFFER = 3,\n // CREATE_PASSIVE_SELL_OFFER = 4,\n // SET_OPTIONS = 5,\n // CHANGE_TRUST = 6,\n // ALLOW_TRUST = 7,\n // ACCOUNT_MERGE = 8,\n // INFLATION = 9,\n // MANAGE_DATA = 10,\n // BUMP_SEQUENCE = 11,\n // MANAGE_BUY_OFFER = 12,\n // PATH_PAYMENT_STRICT_SEND = 13,\n // CREATE_CLAIMABLE_BALANCE = 14,\n // CLAIM_CLAIMABLE_BALANCE = 15,\n // BEGIN_SPONSORING_FUTURE_RESERVES = 16,\n // END_SPONSORING_FUTURE_RESERVES = 17,\n // REVOKE_SPONSORSHIP = 18,\n // CLAWBACK = 19,\n // CLAWBACK_CLAIMABLE_BALANCE = 20,\n // SET_TRUST_LINE_FLAGS = 21,\n // LIQUIDITY_POOL_DEPOSIT = 22,\n // LIQUIDITY_POOL_WITHDRAW = 23,\n // INVOKE_HOST_FUNCTION = 24,\n // EXTEND_FOOTPRINT_TTL = 25,\n // RESTORE_FOOTPRINT = 26\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"OperationType\", {\n createAccount: 0,\n payment: 1,\n pathPaymentStrictReceive: 2,\n manageSellOffer: 3,\n createPassiveSellOffer: 4,\n setOptions: 5,\n changeTrust: 6,\n allowTrust: 7,\n accountMerge: 8,\n inflation: 9,\n manageData: 10,\n bumpSequence: 11,\n manageBuyOffer: 12,\n pathPaymentStrictSend: 13,\n createClaimableBalance: 14,\n claimClaimableBalance: 15,\n beginSponsoringFutureReserves: 16,\n endSponsoringFutureReserves: 17,\n revokeSponsorship: 18,\n clawback: 19,\n clawbackClaimableBalance: 20,\n setTrustLineFlags: 21,\n liquidityPoolDeposit: 22,\n liquidityPoolWithdraw: 23,\n invokeHostFunction: 24,\n extendFootprintTtl: 25,\n restoreFootprint: 26\n });\n\n // === xdr source ============================================================\n //\n // struct CreateAccountOp\n // {\n // AccountID destination; // account to create\n // int64 startingBalance; // amount they end up with\n // };\n //\n // ===========================================================================\n xdr.struct(\"CreateAccountOp\", [[\"destination\", xdr.lookup(\"AccountId\")], [\"startingBalance\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct PaymentOp\n // {\n // MuxedAccount destination; // recipient of the payment\n // Asset asset; // what they end up with\n // int64 amount; // amount they end up with\n // };\n //\n // ===========================================================================\n xdr.struct(\"PaymentOp\", [[\"destination\", xdr.lookup(\"MuxedAccount\")], [\"asset\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct PathPaymentStrictReceiveOp\n // {\n // Asset sendAsset; // asset we pay with\n // int64 sendMax; // the maximum amount of sendAsset to\n // // send (excluding fees).\n // // The operation will fail if can't be met\n //\n // MuxedAccount destination; // recipient of the payment\n // Asset destAsset; // what they end up with\n // int64 destAmount; // amount they end up with\n //\n // Asset path<5>; // additional hops it must go through to get there\n // };\n //\n // ===========================================================================\n xdr.struct(\"PathPaymentStrictReceiveOp\", [[\"sendAsset\", xdr.lookup(\"Asset\")], [\"sendMax\", xdr.lookup(\"Int64\")], [\"destination\", xdr.lookup(\"MuxedAccount\")], [\"destAsset\", xdr.lookup(\"Asset\")], [\"destAmount\", xdr.lookup(\"Int64\")], [\"path\", xdr.varArray(xdr.lookup(\"Asset\"), 5)]]);\n\n // === xdr source ============================================================\n //\n // struct PathPaymentStrictSendOp\n // {\n // Asset sendAsset; // asset we pay with\n // int64 sendAmount; // amount of sendAsset to send (excluding fees)\n //\n // MuxedAccount destination; // recipient of the payment\n // Asset destAsset; // what they end up with\n // int64 destMin; // the minimum amount of dest asset to\n // // be received\n // // The operation will fail if it can't be met\n //\n // Asset path<5>; // additional hops it must go through to get there\n // };\n //\n // ===========================================================================\n xdr.struct(\"PathPaymentStrictSendOp\", [[\"sendAsset\", xdr.lookup(\"Asset\")], [\"sendAmount\", xdr.lookup(\"Int64\")], [\"destination\", xdr.lookup(\"MuxedAccount\")], [\"destAsset\", xdr.lookup(\"Asset\")], [\"destMin\", xdr.lookup(\"Int64\")], [\"path\", xdr.varArray(xdr.lookup(\"Asset\"), 5)]]);\n\n // === xdr source ============================================================\n //\n // struct ManageSellOfferOp\n // {\n // Asset selling;\n // Asset buying;\n // int64 amount; // amount being sold. if set to 0, delete the offer\n // Price price; // price of thing being sold in terms of what you are buying\n //\n // // 0=create a new offer, otherwise edit an existing offer\n // int64 offerID;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ManageSellOfferOp\", [[\"selling\", xdr.lookup(\"Asset\")], [\"buying\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")], [\"price\", xdr.lookup(\"Price\")], [\"offerId\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ManageBuyOfferOp\n // {\n // Asset selling;\n // Asset buying;\n // int64 buyAmount; // amount being bought. if set to 0, delete the offer\n // Price price; // price of thing being bought in terms of what you are\n // // selling\n //\n // // 0=create a new offer, otherwise edit an existing offer\n // int64 offerID;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ManageBuyOfferOp\", [[\"selling\", xdr.lookup(\"Asset\")], [\"buying\", xdr.lookup(\"Asset\")], [\"buyAmount\", xdr.lookup(\"Int64\")], [\"price\", xdr.lookup(\"Price\")], [\"offerId\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct CreatePassiveSellOfferOp\n // {\n // Asset selling; // A\n // Asset buying; // B\n // int64 amount; // amount taker gets\n // Price price; // cost of A in terms of B\n // };\n //\n // ===========================================================================\n xdr.struct(\"CreatePassiveSellOfferOp\", [[\"selling\", xdr.lookup(\"Asset\")], [\"buying\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")], [\"price\", xdr.lookup(\"Price\")]]);\n\n // === xdr source ============================================================\n //\n // struct SetOptionsOp\n // {\n // AccountID* inflationDest; // sets the inflation destination\n //\n // uint32* clearFlags; // which flags to clear\n // uint32* setFlags; // which flags to set\n //\n // // account threshold manipulation\n // uint32* masterWeight; // weight of the master account\n // uint32* lowThreshold;\n // uint32* medThreshold;\n // uint32* highThreshold;\n //\n // string32* homeDomain; // sets the home domain\n //\n // // Add, update or remove a signer for the account\n // // signer is deleted if the weight is 0\n // Signer* signer;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SetOptionsOp\", [[\"inflationDest\", xdr.option(xdr.lookup(\"AccountId\"))], [\"clearFlags\", xdr.option(xdr.lookup(\"Uint32\"))], [\"setFlags\", xdr.option(xdr.lookup(\"Uint32\"))], [\"masterWeight\", xdr.option(xdr.lookup(\"Uint32\"))], [\"lowThreshold\", xdr.option(xdr.lookup(\"Uint32\"))], [\"medThreshold\", xdr.option(xdr.lookup(\"Uint32\"))], [\"highThreshold\", xdr.option(xdr.lookup(\"Uint32\"))], [\"homeDomain\", xdr.option(xdr.lookup(\"String32\"))], [\"signer\", xdr.option(xdr.lookup(\"Signer\"))]]);\n\n // === xdr source ============================================================\n //\n // union ChangeTrustAsset switch (AssetType type)\n // {\n // case ASSET_TYPE_NATIVE: // Not credit\n // void;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM4:\n // AlphaNum4 alphaNum4;\n //\n // case ASSET_TYPE_CREDIT_ALPHANUM12:\n // AlphaNum12 alphaNum12;\n //\n // case ASSET_TYPE_POOL_SHARE:\n // LiquidityPoolParameters liquidityPool;\n //\n // // add other asset types here in the future\n // };\n //\n // ===========================================================================\n xdr.union(\"ChangeTrustAsset\", {\n switchOn: xdr.lookup(\"AssetType\"),\n switchName: \"type\",\n switches: [[\"assetTypeNative\", xdr[\"void\"]()], [\"assetTypeCreditAlphanum4\", \"alphaNum4\"], [\"assetTypeCreditAlphanum12\", \"alphaNum12\"], [\"assetTypePoolShare\", \"liquidityPool\"]],\n arms: {\n alphaNum4: xdr.lookup(\"AlphaNum4\"),\n alphaNum12: xdr.lookup(\"AlphaNum12\"),\n liquidityPool: xdr.lookup(\"LiquidityPoolParameters\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ChangeTrustOp\n // {\n // ChangeTrustAsset line;\n //\n // // if limit is set to 0, deletes the trust line\n // int64 limit;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ChangeTrustOp\", [[\"line\", xdr.lookup(\"ChangeTrustAsset\")], [\"limit\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct AllowTrustOp\n // {\n // AccountID trustor;\n // AssetCode asset;\n //\n // // One of 0, AUTHORIZED_FLAG, or AUTHORIZED_TO_MAINTAIN_LIABILITIES_FLAG\n // uint32 authorize;\n // };\n //\n // ===========================================================================\n xdr.struct(\"AllowTrustOp\", [[\"trustor\", xdr.lookup(\"AccountId\")], [\"asset\", xdr.lookup(\"AssetCode\")], [\"authorize\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct ManageDataOp\n // {\n // string64 dataName;\n // DataValue* dataValue; // set to null to clear\n // };\n //\n // ===========================================================================\n xdr.struct(\"ManageDataOp\", [[\"dataName\", xdr.lookup(\"String64\")], [\"dataValue\", xdr.option(xdr.lookup(\"DataValue\"))]]);\n\n // === xdr source ============================================================\n //\n // struct BumpSequenceOp\n // {\n // SequenceNumber bumpTo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"BumpSequenceOp\", [[\"bumpTo\", xdr.lookup(\"SequenceNumber\")]]);\n\n // === xdr source ============================================================\n //\n // struct CreateClaimableBalanceOp\n // {\n // Asset asset;\n // int64 amount;\n // Claimant claimants<10>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"CreateClaimableBalanceOp\", [[\"asset\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")], [\"claimants\", xdr.varArray(xdr.lookup(\"Claimant\"), 10)]]);\n\n // === xdr source ============================================================\n //\n // struct ClaimClaimableBalanceOp\n // {\n // ClaimableBalanceID balanceID;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimClaimableBalanceOp\", [[\"balanceId\", xdr.lookup(\"ClaimableBalanceId\")]]);\n\n // === xdr source ============================================================\n //\n // struct BeginSponsoringFutureReservesOp\n // {\n // AccountID sponsoredID;\n // };\n //\n // ===========================================================================\n xdr.struct(\"BeginSponsoringFutureReservesOp\", [[\"sponsoredId\", xdr.lookup(\"AccountId\")]]);\n\n // === xdr source ============================================================\n //\n // enum RevokeSponsorshipType\n // {\n // REVOKE_SPONSORSHIP_LEDGER_ENTRY = 0,\n // REVOKE_SPONSORSHIP_SIGNER = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"RevokeSponsorshipType\", {\n revokeSponsorshipLedgerEntry: 0,\n revokeSponsorshipSigner: 1\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID accountID;\n // SignerKey signerKey;\n // }\n //\n // ===========================================================================\n xdr.struct(\"RevokeSponsorshipOpSigner\", [[\"accountId\", xdr.lookup(\"AccountId\")], [\"signerKey\", xdr.lookup(\"SignerKey\")]]);\n\n // === xdr source ============================================================\n //\n // union RevokeSponsorshipOp switch (RevokeSponsorshipType type)\n // {\n // case REVOKE_SPONSORSHIP_LEDGER_ENTRY:\n // LedgerKey ledgerKey;\n // case REVOKE_SPONSORSHIP_SIGNER:\n // struct\n // {\n // AccountID accountID;\n // SignerKey signerKey;\n // } signer;\n // };\n //\n // ===========================================================================\n xdr.union(\"RevokeSponsorshipOp\", {\n switchOn: xdr.lookup(\"RevokeSponsorshipType\"),\n switchName: \"type\",\n switches: [[\"revokeSponsorshipLedgerEntry\", \"ledgerKey\"], [\"revokeSponsorshipSigner\", \"signer\"]],\n arms: {\n ledgerKey: xdr.lookup(\"LedgerKey\"),\n signer: xdr.lookup(\"RevokeSponsorshipOpSigner\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ClawbackOp\n // {\n // Asset asset;\n // MuxedAccount from;\n // int64 amount;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClawbackOp\", [[\"asset\", xdr.lookup(\"Asset\")], [\"from\", xdr.lookup(\"MuxedAccount\")], [\"amount\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ClawbackClaimableBalanceOp\n // {\n // ClaimableBalanceID balanceID;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClawbackClaimableBalanceOp\", [[\"balanceId\", xdr.lookup(\"ClaimableBalanceId\")]]);\n\n // === xdr source ============================================================\n //\n // struct SetTrustLineFlagsOp\n // {\n // AccountID trustor;\n // Asset asset;\n //\n // uint32 clearFlags; // which flags to clear\n // uint32 setFlags; // which flags to set\n // };\n //\n // ===========================================================================\n xdr.struct(\"SetTrustLineFlagsOp\", [[\"trustor\", xdr.lookup(\"AccountId\")], [\"asset\", xdr.lookup(\"Asset\")], [\"clearFlags\", xdr.lookup(\"Uint32\")], [\"setFlags\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // const LIQUIDITY_POOL_FEE_V18 = 30;\n //\n // ===========================================================================\n xdr[\"const\"](\"LIQUIDITY_POOL_FEE_V18\", 30);\n\n // === xdr source ============================================================\n //\n // struct LiquidityPoolDepositOp\n // {\n // PoolID liquidityPoolID;\n // int64 maxAmountA; // maximum amount of first asset to deposit\n // int64 maxAmountB; // maximum amount of second asset to deposit\n // Price minPrice; // minimum depositA/depositB\n // Price maxPrice; // maximum depositA/depositB\n // };\n //\n // ===========================================================================\n xdr.struct(\"LiquidityPoolDepositOp\", [[\"liquidityPoolId\", xdr.lookup(\"PoolId\")], [\"maxAmountA\", xdr.lookup(\"Int64\")], [\"maxAmountB\", xdr.lookup(\"Int64\")], [\"minPrice\", xdr.lookup(\"Price\")], [\"maxPrice\", xdr.lookup(\"Price\")]]);\n\n // === xdr source ============================================================\n //\n // struct LiquidityPoolWithdrawOp\n // {\n // PoolID liquidityPoolID;\n // int64 amount; // amount of pool shares to withdraw\n // int64 minAmountA; // minimum amount of first asset to withdraw\n // int64 minAmountB; // minimum amount of second asset to withdraw\n // };\n //\n // ===========================================================================\n xdr.struct(\"LiquidityPoolWithdrawOp\", [[\"liquidityPoolId\", xdr.lookup(\"PoolId\")], [\"amount\", xdr.lookup(\"Int64\")], [\"minAmountA\", xdr.lookup(\"Int64\")], [\"minAmountB\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // enum HostFunctionType\n // {\n // HOST_FUNCTION_TYPE_INVOKE_CONTRACT = 0,\n // HOST_FUNCTION_TYPE_CREATE_CONTRACT = 1,\n // HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM = 2,\n // HOST_FUNCTION_TYPE_CREATE_CONTRACT_V2 = 3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"HostFunctionType\", {\n hostFunctionTypeInvokeContract: 0,\n hostFunctionTypeCreateContract: 1,\n hostFunctionTypeUploadContractWasm: 2,\n hostFunctionTypeCreateContractV2: 3\n });\n\n // === xdr source ============================================================\n //\n // enum ContractIDPreimageType\n // {\n // CONTRACT_ID_PREIMAGE_FROM_ADDRESS = 0,\n // CONTRACT_ID_PREIMAGE_FROM_ASSET = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ContractIdPreimageType\", {\n contractIdPreimageFromAddress: 0,\n contractIdPreimageFromAsset: 1\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // SCAddress address;\n // uint256 salt;\n // }\n //\n // ===========================================================================\n xdr.struct(\"ContractIdPreimageFromAddress\", [[\"address\", xdr.lookup(\"ScAddress\")], [\"salt\", xdr.lookup(\"Uint256\")]]);\n\n // === xdr source ============================================================\n //\n // union ContractIDPreimage switch (ContractIDPreimageType type)\n // {\n // case CONTRACT_ID_PREIMAGE_FROM_ADDRESS:\n // struct\n // {\n // SCAddress address;\n // uint256 salt;\n // } fromAddress;\n // case CONTRACT_ID_PREIMAGE_FROM_ASSET:\n // Asset fromAsset;\n // };\n //\n // ===========================================================================\n xdr.union(\"ContractIdPreimage\", {\n switchOn: xdr.lookup(\"ContractIdPreimageType\"),\n switchName: \"type\",\n switches: [[\"contractIdPreimageFromAddress\", \"fromAddress\"], [\"contractIdPreimageFromAsset\", \"fromAsset\"]],\n arms: {\n fromAddress: xdr.lookup(\"ContractIdPreimageFromAddress\"),\n fromAsset: xdr.lookup(\"Asset\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct CreateContractArgs\n // {\n // ContractIDPreimage contractIDPreimage;\n // ContractExecutable executable;\n // };\n //\n // ===========================================================================\n xdr.struct(\"CreateContractArgs\", [[\"contractIdPreimage\", xdr.lookup(\"ContractIdPreimage\")], [\"executable\", xdr.lookup(\"ContractExecutable\")]]);\n\n // === xdr source ============================================================\n //\n // struct CreateContractArgsV2\n // {\n // ContractIDPreimage contractIDPreimage;\n // ContractExecutable executable;\n // // Arguments of the contract's constructor.\n // SCVal constructorArgs<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"CreateContractArgsV2\", [[\"contractIdPreimage\", xdr.lookup(\"ContractIdPreimage\")], [\"executable\", xdr.lookup(\"ContractExecutable\")], [\"constructorArgs\", xdr.varArray(xdr.lookup(\"ScVal\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct InvokeContractArgs {\n // SCAddress contractAddress;\n // SCSymbol functionName;\n // SCVal args<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"InvokeContractArgs\", [[\"contractAddress\", xdr.lookup(\"ScAddress\")], [\"functionName\", xdr.lookup(\"ScSymbol\")], [\"args\", xdr.varArray(xdr.lookup(\"ScVal\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union HostFunction switch (HostFunctionType type)\n // {\n // case HOST_FUNCTION_TYPE_INVOKE_CONTRACT:\n // InvokeContractArgs invokeContract;\n // case HOST_FUNCTION_TYPE_CREATE_CONTRACT:\n // CreateContractArgs createContract;\n // case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM:\n // opaque wasm<>;\n // case HOST_FUNCTION_TYPE_CREATE_CONTRACT_V2:\n // CreateContractArgsV2 createContractV2;\n // };\n //\n // ===========================================================================\n xdr.union(\"HostFunction\", {\n switchOn: xdr.lookup(\"HostFunctionType\"),\n switchName: \"type\",\n switches: [[\"hostFunctionTypeInvokeContract\", \"invokeContract\"], [\"hostFunctionTypeCreateContract\", \"createContract\"], [\"hostFunctionTypeUploadContractWasm\", \"wasm\"], [\"hostFunctionTypeCreateContractV2\", \"createContractV2\"]],\n arms: {\n invokeContract: xdr.lookup(\"InvokeContractArgs\"),\n createContract: xdr.lookup(\"CreateContractArgs\"),\n wasm: xdr.varOpaque(),\n createContractV2: xdr.lookup(\"CreateContractArgsV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum SorobanAuthorizedFunctionType\n // {\n // SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN = 0,\n // SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN = 1,\n // SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_V2_HOST_FN = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SorobanAuthorizedFunctionType\", {\n sorobanAuthorizedFunctionTypeContractFn: 0,\n sorobanAuthorizedFunctionTypeCreateContractHostFn: 1,\n sorobanAuthorizedFunctionTypeCreateContractV2HostFn: 2\n });\n\n // === xdr source ============================================================\n //\n // union SorobanAuthorizedFunction switch (SorobanAuthorizedFunctionType type)\n // {\n // case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN:\n // InvokeContractArgs contractFn;\n // // This variant of auth payload for creating new contract instances\n // // doesn't allow specifying the constructor arguments, creating contracts\n // // with constructors that take arguments is only possible by authorizing\n // // `SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_V2_HOST_FN`\n // // (protocol 22+).\n // case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN:\n // CreateContractArgs createContractHostFn;\n // // This variant of auth payload for creating new contract instances\n // // is only accepted in and after protocol 22. It allows authorizing the\n // // contract constructor arguments.\n // case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_V2_HOST_FN:\n // CreateContractArgsV2 createContractV2HostFn;\n // };\n //\n // ===========================================================================\n xdr.union(\"SorobanAuthorizedFunction\", {\n switchOn: xdr.lookup(\"SorobanAuthorizedFunctionType\"),\n switchName: \"type\",\n switches: [[\"sorobanAuthorizedFunctionTypeContractFn\", \"contractFn\"], [\"sorobanAuthorizedFunctionTypeCreateContractHostFn\", \"createContractHostFn\"], [\"sorobanAuthorizedFunctionTypeCreateContractV2HostFn\", \"createContractV2HostFn\"]],\n arms: {\n contractFn: xdr.lookup(\"InvokeContractArgs\"),\n createContractHostFn: xdr.lookup(\"CreateContractArgs\"),\n createContractV2HostFn: xdr.lookup(\"CreateContractArgsV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SorobanAuthorizedInvocation\n // {\n // SorobanAuthorizedFunction function;\n // SorobanAuthorizedInvocation subInvocations<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanAuthorizedInvocation\", [[\"function\", xdr.lookup(\"SorobanAuthorizedFunction\")], [\"subInvocations\", xdr.varArray(xdr.lookup(\"SorobanAuthorizedInvocation\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct SorobanAddressCredentials\n // {\n // SCAddress address;\n // int64 nonce;\n // uint32 signatureExpirationLedger;\n // SCVal signature;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanAddressCredentials\", [[\"address\", xdr.lookup(\"ScAddress\")], [\"nonce\", xdr.lookup(\"Int64\")], [\"signatureExpirationLedger\", xdr.lookup(\"Uint32\")], [\"signature\", xdr.lookup(\"ScVal\")]]);\n\n // === xdr source ============================================================\n //\n // enum SorobanCredentialsType\n // {\n // SOROBAN_CREDENTIALS_SOURCE_ACCOUNT = 0,\n // SOROBAN_CREDENTIALS_ADDRESS = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SorobanCredentialsType\", {\n sorobanCredentialsSourceAccount: 0,\n sorobanCredentialsAddress: 1\n });\n\n // === xdr source ============================================================\n //\n // union SorobanCredentials switch (SorobanCredentialsType type)\n // {\n // case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT:\n // void;\n // case SOROBAN_CREDENTIALS_ADDRESS:\n // SorobanAddressCredentials address;\n // };\n //\n // ===========================================================================\n xdr.union(\"SorobanCredentials\", {\n switchOn: xdr.lookup(\"SorobanCredentialsType\"),\n switchName: \"type\",\n switches: [[\"sorobanCredentialsSourceAccount\", xdr[\"void\"]()], [\"sorobanCredentialsAddress\", \"address\"]],\n arms: {\n address: xdr.lookup(\"SorobanAddressCredentials\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SorobanAuthorizationEntry\n // {\n // SorobanCredentials credentials;\n // SorobanAuthorizedInvocation rootInvocation;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanAuthorizationEntry\", [[\"credentials\", xdr.lookup(\"SorobanCredentials\")], [\"rootInvocation\", xdr.lookup(\"SorobanAuthorizedInvocation\")]]);\n\n // === xdr source ============================================================\n //\n // typedef SorobanAuthorizationEntry SorobanAuthorizationEntries<>;\n //\n // ===========================================================================\n xdr.typedef(\"SorobanAuthorizationEntries\", xdr.varArray(xdr.lookup(\"SorobanAuthorizationEntry\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // struct InvokeHostFunctionOp\n // {\n // // Host function to invoke.\n // HostFunction hostFunction;\n // // Per-address authorizations for this host function.\n // SorobanAuthorizationEntry auth<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"InvokeHostFunctionOp\", [[\"hostFunction\", xdr.lookup(\"HostFunction\")], [\"auth\", xdr.varArray(xdr.lookup(\"SorobanAuthorizationEntry\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct ExtendFootprintTTLOp\n // {\n // ExtensionPoint ext;\n // uint32 extendTo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ExtendFootprintTtlOp\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"extendTo\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct RestoreFootprintOp\n // {\n // ExtensionPoint ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"RestoreFootprintOp\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (OperationType type)\n // {\n // case CREATE_ACCOUNT:\n // CreateAccountOp createAccountOp;\n // case PAYMENT:\n // PaymentOp paymentOp;\n // case PATH_PAYMENT_STRICT_RECEIVE:\n // PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp;\n // case MANAGE_SELL_OFFER:\n // ManageSellOfferOp manageSellOfferOp;\n // case CREATE_PASSIVE_SELL_OFFER:\n // CreatePassiveSellOfferOp createPassiveSellOfferOp;\n // case SET_OPTIONS:\n // SetOptionsOp setOptionsOp;\n // case CHANGE_TRUST:\n // ChangeTrustOp changeTrustOp;\n // case ALLOW_TRUST:\n // AllowTrustOp allowTrustOp;\n // case ACCOUNT_MERGE:\n // MuxedAccount destination;\n // case INFLATION:\n // void;\n // case MANAGE_DATA:\n // ManageDataOp manageDataOp;\n // case BUMP_SEQUENCE:\n // BumpSequenceOp bumpSequenceOp;\n // case MANAGE_BUY_OFFER:\n // ManageBuyOfferOp manageBuyOfferOp;\n // case PATH_PAYMENT_STRICT_SEND:\n // PathPaymentStrictSendOp pathPaymentStrictSendOp;\n // case CREATE_CLAIMABLE_BALANCE:\n // CreateClaimableBalanceOp createClaimableBalanceOp;\n // case CLAIM_CLAIMABLE_BALANCE:\n // ClaimClaimableBalanceOp claimClaimableBalanceOp;\n // case BEGIN_SPONSORING_FUTURE_RESERVES:\n // BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp;\n // case END_SPONSORING_FUTURE_RESERVES:\n // void;\n // case REVOKE_SPONSORSHIP:\n // RevokeSponsorshipOp revokeSponsorshipOp;\n // case CLAWBACK:\n // ClawbackOp clawbackOp;\n // case CLAWBACK_CLAIMABLE_BALANCE:\n // ClawbackClaimableBalanceOp clawbackClaimableBalanceOp;\n // case SET_TRUST_LINE_FLAGS:\n // SetTrustLineFlagsOp setTrustLineFlagsOp;\n // case LIQUIDITY_POOL_DEPOSIT:\n // LiquidityPoolDepositOp liquidityPoolDepositOp;\n // case LIQUIDITY_POOL_WITHDRAW:\n // LiquidityPoolWithdrawOp liquidityPoolWithdrawOp;\n // case INVOKE_HOST_FUNCTION:\n // InvokeHostFunctionOp invokeHostFunctionOp;\n // case EXTEND_FOOTPRINT_TTL:\n // ExtendFootprintTTLOp extendFootprintTTLOp;\n // case RESTORE_FOOTPRINT:\n // RestoreFootprintOp restoreFootprintOp;\n // }\n //\n // ===========================================================================\n xdr.union(\"OperationBody\", {\n switchOn: xdr.lookup(\"OperationType\"),\n switchName: \"type\",\n switches: [[\"createAccount\", \"createAccountOp\"], [\"payment\", \"paymentOp\"], [\"pathPaymentStrictReceive\", \"pathPaymentStrictReceiveOp\"], [\"manageSellOffer\", \"manageSellOfferOp\"], [\"createPassiveSellOffer\", \"createPassiveSellOfferOp\"], [\"setOptions\", \"setOptionsOp\"], [\"changeTrust\", \"changeTrustOp\"], [\"allowTrust\", \"allowTrustOp\"], [\"accountMerge\", \"destination\"], [\"inflation\", xdr[\"void\"]()], [\"manageData\", \"manageDataOp\"], [\"bumpSequence\", \"bumpSequenceOp\"], [\"manageBuyOffer\", \"manageBuyOfferOp\"], [\"pathPaymentStrictSend\", \"pathPaymentStrictSendOp\"], [\"createClaimableBalance\", \"createClaimableBalanceOp\"], [\"claimClaimableBalance\", \"claimClaimableBalanceOp\"], [\"beginSponsoringFutureReserves\", \"beginSponsoringFutureReservesOp\"], [\"endSponsoringFutureReserves\", xdr[\"void\"]()], [\"revokeSponsorship\", \"revokeSponsorshipOp\"], [\"clawback\", \"clawbackOp\"], [\"clawbackClaimableBalance\", \"clawbackClaimableBalanceOp\"], [\"setTrustLineFlags\", \"setTrustLineFlagsOp\"], [\"liquidityPoolDeposit\", \"liquidityPoolDepositOp\"], [\"liquidityPoolWithdraw\", \"liquidityPoolWithdrawOp\"], [\"invokeHostFunction\", \"invokeHostFunctionOp\"], [\"extendFootprintTtl\", \"extendFootprintTtlOp\"], [\"restoreFootprint\", \"restoreFootprintOp\"]],\n arms: {\n createAccountOp: xdr.lookup(\"CreateAccountOp\"),\n paymentOp: xdr.lookup(\"PaymentOp\"),\n pathPaymentStrictReceiveOp: xdr.lookup(\"PathPaymentStrictReceiveOp\"),\n manageSellOfferOp: xdr.lookup(\"ManageSellOfferOp\"),\n createPassiveSellOfferOp: xdr.lookup(\"CreatePassiveSellOfferOp\"),\n setOptionsOp: xdr.lookup(\"SetOptionsOp\"),\n changeTrustOp: xdr.lookup(\"ChangeTrustOp\"),\n allowTrustOp: xdr.lookup(\"AllowTrustOp\"),\n destination: xdr.lookup(\"MuxedAccount\"),\n manageDataOp: xdr.lookup(\"ManageDataOp\"),\n bumpSequenceOp: xdr.lookup(\"BumpSequenceOp\"),\n manageBuyOfferOp: xdr.lookup(\"ManageBuyOfferOp\"),\n pathPaymentStrictSendOp: xdr.lookup(\"PathPaymentStrictSendOp\"),\n createClaimableBalanceOp: xdr.lookup(\"CreateClaimableBalanceOp\"),\n claimClaimableBalanceOp: xdr.lookup(\"ClaimClaimableBalanceOp\"),\n beginSponsoringFutureReservesOp: xdr.lookup(\"BeginSponsoringFutureReservesOp\"),\n revokeSponsorshipOp: xdr.lookup(\"RevokeSponsorshipOp\"),\n clawbackOp: xdr.lookup(\"ClawbackOp\"),\n clawbackClaimableBalanceOp: xdr.lookup(\"ClawbackClaimableBalanceOp\"),\n setTrustLineFlagsOp: xdr.lookup(\"SetTrustLineFlagsOp\"),\n liquidityPoolDepositOp: xdr.lookup(\"LiquidityPoolDepositOp\"),\n liquidityPoolWithdrawOp: xdr.lookup(\"LiquidityPoolWithdrawOp\"),\n invokeHostFunctionOp: xdr.lookup(\"InvokeHostFunctionOp\"),\n extendFootprintTtlOp: xdr.lookup(\"ExtendFootprintTtlOp\"),\n restoreFootprintOp: xdr.lookup(\"RestoreFootprintOp\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct Operation\n // {\n // // sourceAccount is the account used to run the operation\n // // if not set, the runtime defaults to \"sourceAccount\" specified at\n // // the transaction level\n // MuxedAccount* sourceAccount;\n //\n // union switch (OperationType type)\n // {\n // case CREATE_ACCOUNT:\n // CreateAccountOp createAccountOp;\n // case PAYMENT:\n // PaymentOp paymentOp;\n // case PATH_PAYMENT_STRICT_RECEIVE:\n // PathPaymentStrictReceiveOp pathPaymentStrictReceiveOp;\n // case MANAGE_SELL_OFFER:\n // ManageSellOfferOp manageSellOfferOp;\n // case CREATE_PASSIVE_SELL_OFFER:\n // CreatePassiveSellOfferOp createPassiveSellOfferOp;\n // case SET_OPTIONS:\n // SetOptionsOp setOptionsOp;\n // case CHANGE_TRUST:\n // ChangeTrustOp changeTrustOp;\n // case ALLOW_TRUST:\n // AllowTrustOp allowTrustOp;\n // case ACCOUNT_MERGE:\n // MuxedAccount destination;\n // case INFLATION:\n // void;\n // case MANAGE_DATA:\n // ManageDataOp manageDataOp;\n // case BUMP_SEQUENCE:\n // BumpSequenceOp bumpSequenceOp;\n // case MANAGE_BUY_OFFER:\n // ManageBuyOfferOp manageBuyOfferOp;\n // case PATH_PAYMENT_STRICT_SEND:\n // PathPaymentStrictSendOp pathPaymentStrictSendOp;\n // case CREATE_CLAIMABLE_BALANCE:\n // CreateClaimableBalanceOp createClaimableBalanceOp;\n // case CLAIM_CLAIMABLE_BALANCE:\n // ClaimClaimableBalanceOp claimClaimableBalanceOp;\n // case BEGIN_SPONSORING_FUTURE_RESERVES:\n // BeginSponsoringFutureReservesOp beginSponsoringFutureReservesOp;\n // case END_SPONSORING_FUTURE_RESERVES:\n // void;\n // case REVOKE_SPONSORSHIP:\n // RevokeSponsorshipOp revokeSponsorshipOp;\n // case CLAWBACK:\n // ClawbackOp clawbackOp;\n // case CLAWBACK_CLAIMABLE_BALANCE:\n // ClawbackClaimableBalanceOp clawbackClaimableBalanceOp;\n // case SET_TRUST_LINE_FLAGS:\n // SetTrustLineFlagsOp setTrustLineFlagsOp;\n // case LIQUIDITY_POOL_DEPOSIT:\n // LiquidityPoolDepositOp liquidityPoolDepositOp;\n // case LIQUIDITY_POOL_WITHDRAW:\n // LiquidityPoolWithdrawOp liquidityPoolWithdrawOp;\n // case INVOKE_HOST_FUNCTION:\n // InvokeHostFunctionOp invokeHostFunctionOp;\n // case EXTEND_FOOTPRINT_TTL:\n // ExtendFootprintTTLOp extendFootprintTTLOp;\n // case RESTORE_FOOTPRINT:\n // RestoreFootprintOp restoreFootprintOp;\n // }\n // body;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Operation\", [[\"sourceAccount\", xdr.option(xdr.lookup(\"MuxedAccount\"))], [\"body\", xdr.lookup(\"OperationBody\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID sourceAccount;\n // SequenceNumber seqNum;\n // uint32 opNum;\n // }\n //\n // ===========================================================================\n xdr.struct(\"HashIdPreimageOperationId\", [[\"sourceAccount\", xdr.lookup(\"AccountId\")], [\"seqNum\", xdr.lookup(\"SequenceNumber\")], [\"opNum\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // AccountID sourceAccount;\n // SequenceNumber seqNum;\n // uint32 opNum;\n // PoolID liquidityPoolID;\n // Asset asset;\n // }\n //\n // ===========================================================================\n xdr.struct(\"HashIdPreimageRevokeId\", [[\"sourceAccount\", xdr.lookup(\"AccountId\")], [\"seqNum\", xdr.lookup(\"SequenceNumber\")], [\"opNum\", xdr.lookup(\"Uint32\")], [\"liquidityPoolId\", xdr.lookup(\"PoolId\")], [\"asset\", xdr.lookup(\"Asset\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // Hash networkID;\n // ContractIDPreimage contractIDPreimage;\n // }\n //\n // ===========================================================================\n xdr.struct(\"HashIdPreimageContractId\", [[\"networkId\", xdr.lookup(\"Hash\")], [\"contractIdPreimage\", xdr.lookup(\"ContractIdPreimage\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // Hash networkID;\n // int64 nonce;\n // uint32 signatureExpirationLedger;\n // SorobanAuthorizedInvocation invocation;\n // }\n //\n // ===========================================================================\n xdr.struct(\"HashIdPreimageSorobanAuthorization\", [[\"networkId\", xdr.lookup(\"Hash\")], [\"nonce\", xdr.lookup(\"Int64\")], [\"signatureExpirationLedger\", xdr.lookup(\"Uint32\")], [\"invocation\", xdr.lookup(\"SorobanAuthorizedInvocation\")]]);\n\n // === xdr source ============================================================\n //\n // union HashIDPreimage switch (EnvelopeType type)\n // {\n // case ENVELOPE_TYPE_OP_ID:\n // struct\n // {\n // AccountID sourceAccount;\n // SequenceNumber seqNum;\n // uint32 opNum;\n // } operationID;\n // case ENVELOPE_TYPE_POOL_REVOKE_OP_ID:\n // struct\n // {\n // AccountID sourceAccount;\n // SequenceNumber seqNum;\n // uint32 opNum;\n // PoolID liquidityPoolID;\n // Asset asset;\n // } revokeID;\n // case ENVELOPE_TYPE_CONTRACT_ID:\n // struct\n // {\n // Hash networkID;\n // ContractIDPreimage contractIDPreimage;\n // } contractID;\n // case ENVELOPE_TYPE_SOROBAN_AUTHORIZATION:\n // struct\n // {\n // Hash networkID;\n // int64 nonce;\n // uint32 signatureExpirationLedger;\n // SorobanAuthorizedInvocation invocation;\n // } sorobanAuthorization;\n // };\n //\n // ===========================================================================\n xdr.union(\"HashIdPreimage\", {\n switchOn: xdr.lookup(\"EnvelopeType\"),\n switchName: \"type\",\n switches: [[\"envelopeTypeOpId\", \"operationId\"], [\"envelopeTypePoolRevokeOpId\", \"revokeId\"], [\"envelopeTypeContractId\", \"contractId\"], [\"envelopeTypeSorobanAuthorization\", \"sorobanAuthorization\"]],\n arms: {\n operationId: xdr.lookup(\"HashIdPreimageOperationId\"),\n revokeId: xdr.lookup(\"HashIdPreimageRevokeId\"),\n contractId: xdr.lookup(\"HashIdPreimageContractId\"),\n sorobanAuthorization: xdr.lookup(\"HashIdPreimageSorobanAuthorization\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum MemoType\n // {\n // MEMO_NONE = 0,\n // MEMO_TEXT = 1,\n // MEMO_ID = 2,\n // MEMO_HASH = 3,\n // MEMO_RETURN = 4\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"MemoType\", {\n memoNone: 0,\n memoText: 1,\n memoId: 2,\n memoHash: 3,\n memoReturn: 4\n });\n\n // === xdr source ============================================================\n //\n // union Memo switch (MemoType type)\n // {\n // case MEMO_NONE:\n // void;\n // case MEMO_TEXT:\n // string text<28>;\n // case MEMO_ID:\n // uint64 id;\n // case MEMO_HASH:\n // Hash hash; // the hash of what to pull from the content server\n // case MEMO_RETURN:\n // Hash retHash; // the hash of the tx you are rejecting\n // };\n //\n // ===========================================================================\n xdr.union(\"Memo\", {\n switchOn: xdr.lookup(\"MemoType\"),\n switchName: \"type\",\n switches: [[\"memoNone\", xdr[\"void\"]()], [\"memoText\", \"text\"], [\"memoId\", \"id\"], [\"memoHash\", \"hash\"], [\"memoReturn\", \"retHash\"]],\n arms: {\n text: xdr.string(28),\n id: xdr.lookup(\"Uint64\"),\n hash: xdr.lookup(\"Hash\"),\n retHash: xdr.lookup(\"Hash\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TimeBounds\n // {\n // TimePoint minTime;\n // TimePoint maxTime; // 0 here means no maxTime\n // };\n //\n // ===========================================================================\n xdr.struct(\"TimeBounds\", [[\"minTime\", xdr.lookup(\"TimePoint\")], [\"maxTime\", xdr.lookup(\"TimePoint\")]]);\n\n // === xdr source ============================================================\n //\n // struct LedgerBounds\n // {\n // uint32 minLedger;\n // uint32 maxLedger; // 0 here means no maxLedger\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerBounds\", [[\"minLedger\", xdr.lookup(\"Uint32\")], [\"maxLedger\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct PreconditionsV2\n // {\n // TimeBounds* timeBounds;\n //\n // // Transaction only valid for ledger numbers n such that\n // // minLedger <= n < maxLedger (if maxLedger == 0, then\n // // only minLedger is checked)\n // LedgerBounds* ledgerBounds;\n //\n // // If NULL, only valid when sourceAccount's sequence number\n // // is seqNum - 1. Otherwise, valid when sourceAccount's\n // // sequence number n satisfies minSeqNum <= n < tx.seqNum.\n // // Note that after execution the account's sequence number\n // // is always raised to tx.seqNum, and a transaction is not\n // // valid if tx.seqNum is too high to ensure replay protection.\n // SequenceNumber* minSeqNum;\n //\n // // For the transaction to be valid, the current ledger time must\n // // be at least minSeqAge greater than sourceAccount's seqTime.\n // Duration minSeqAge;\n //\n // // For the transaction to be valid, the current ledger number\n // // must be at least minSeqLedgerGap greater than sourceAccount's\n // // seqLedger.\n // uint32 minSeqLedgerGap;\n //\n // // For the transaction to be valid, there must be a signature\n // // corresponding to every Signer in this array, even if the\n // // signature is not otherwise required by the sourceAccount or\n // // operations.\n // SignerKey extraSigners<2>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"PreconditionsV2\", [[\"timeBounds\", xdr.option(xdr.lookup(\"TimeBounds\"))], [\"ledgerBounds\", xdr.option(xdr.lookup(\"LedgerBounds\"))], [\"minSeqNum\", xdr.option(xdr.lookup(\"SequenceNumber\"))], [\"minSeqAge\", xdr.lookup(\"Duration\")], [\"minSeqLedgerGap\", xdr.lookup(\"Uint32\")], [\"extraSigners\", xdr.varArray(xdr.lookup(\"SignerKey\"), 2)]]);\n\n // === xdr source ============================================================\n //\n // enum PreconditionType\n // {\n // PRECOND_NONE = 0,\n // PRECOND_TIME = 1,\n // PRECOND_V2 = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"PreconditionType\", {\n precondNone: 0,\n precondTime: 1,\n precondV2: 2\n });\n\n // === xdr source ============================================================\n //\n // union Preconditions switch (PreconditionType type)\n // {\n // case PRECOND_NONE:\n // void;\n // case PRECOND_TIME:\n // TimeBounds timeBounds;\n // case PRECOND_V2:\n // PreconditionsV2 v2;\n // };\n //\n // ===========================================================================\n xdr.union(\"Preconditions\", {\n switchOn: xdr.lookup(\"PreconditionType\"),\n switchName: \"type\",\n switches: [[\"precondNone\", xdr[\"void\"]()], [\"precondTime\", \"timeBounds\"], [\"precondV2\", \"v2\"]],\n arms: {\n timeBounds: xdr.lookup(\"TimeBounds\"),\n v2: xdr.lookup(\"PreconditionsV2\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerFootprint\n // {\n // LedgerKey readOnly<>;\n // LedgerKey readWrite<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerFootprint\", [[\"readOnly\", xdr.varArray(xdr.lookup(\"LedgerKey\"), 2147483647)], [\"readWrite\", xdr.varArray(xdr.lookup(\"LedgerKey\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // struct SorobanResources\n // {\n // // The ledger footprint of the transaction.\n // LedgerFootprint footprint;\n // // The maximum number of instructions this transaction can use\n // uint32 instructions;\n //\n // // The maximum number of bytes this transaction can read from disk backed entries\n // uint32 diskReadBytes;\n // // The maximum number of bytes this transaction can write to ledger\n // uint32 writeBytes;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanResources\", [[\"footprint\", xdr.lookup(\"LedgerFootprint\")], [\"instructions\", xdr.lookup(\"Uint32\")], [\"diskReadBytes\", xdr.lookup(\"Uint32\")], [\"writeBytes\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SorobanResourcesExtV0\n // {\n // // Vector of indices representing what Soroban\n // // entries in the footprint are archived, based on the\n // // order of keys provided in the readWrite footprint.\n // uint32 archivedSorobanEntries<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanResourcesExtV0\", [[\"archivedSorobanEntries\", xdr.varArray(xdr.lookup(\"Uint32\"), 2147483647)]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // SorobanResourcesExtV0 resourceExt;\n // }\n //\n // ===========================================================================\n xdr.union(\"SorobanTransactionDataExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"resourceExt\"]],\n arms: {\n resourceExt: xdr.lookup(\"SorobanResourcesExtV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SorobanTransactionData\n // {\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // SorobanResourcesExtV0 resourceExt;\n // } ext;\n // SorobanResources resources;\n // // Amount of the transaction `fee` allocated to the Soroban resource fees.\n // // The fraction of `resourceFee` corresponding to `resources` specified\n // // above is *not* refundable (i.e. fees for instructions, ledger I/O), as\n // // well as fees for the transaction size.\n // // The remaining part of the fee is refundable and the charged value is\n // // based on the actual consumption of refundable resources (events, ledger\n // // rent bumps).\n // // The `inclusionFee` used for prioritization of the transaction is defined\n // // as `tx.fee - resourceFee`.\n // int64 resourceFee;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SorobanTransactionData\", [[\"ext\", xdr.lookup(\"SorobanTransactionDataExt\")], [\"resources\", xdr.lookup(\"SorobanResources\")], [\"resourceFee\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionV0Ext\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionV0\n // {\n // uint256 sourceAccountEd25519;\n // uint32 fee;\n // SequenceNumber seqNum;\n // TimeBounds* timeBounds;\n // Memo memo;\n // Operation operations;\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionV0\", [[\"sourceAccountEd25519\", xdr.lookup(\"Uint256\")], [\"fee\", xdr.lookup(\"Uint32\")], [\"seqNum\", xdr.lookup(\"SequenceNumber\")], [\"timeBounds\", xdr.option(xdr.lookup(\"TimeBounds\"))], [\"memo\", xdr.lookup(\"Memo\")], [\"operations\", xdr.varArray(xdr.lookup(\"Operation\"), xdr.lookup(\"MAX_OPS_PER_TX\"))], [\"ext\", xdr.lookup(\"TransactionV0Ext\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionV0Envelope\n // {\n // TransactionV0 tx;\n // /* Each decorated signature is a signature over the SHA256 hash of\n // * a TransactionSignaturePayload */\n // DecoratedSignature signatures<20>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionV0Envelope\", [[\"tx\", xdr.lookup(\"TransactionV0\")], [\"signatures\", xdr.varArray(xdr.lookup(\"DecoratedSignature\"), 20)]]);\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // SorobanTransactionData sorobanData;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()], [1, \"sorobanData\"]],\n arms: {\n sorobanData: xdr.lookup(\"SorobanTransactionData\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct Transaction\n // {\n // // account used to run the transaction\n // MuxedAccount sourceAccount;\n //\n // // the fee the sourceAccount will pay\n // uint32 fee;\n //\n // // sequence number to consume in the account\n // SequenceNumber seqNum;\n //\n // // validity conditions\n // Preconditions cond;\n //\n // Memo memo;\n //\n // Operation operations;\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // case 1:\n // SorobanTransactionData sorobanData;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Transaction\", [[\"sourceAccount\", xdr.lookup(\"MuxedAccount\")], [\"fee\", xdr.lookup(\"Uint32\")], [\"seqNum\", xdr.lookup(\"SequenceNumber\")], [\"cond\", xdr.lookup(\"Preconditions\")], [\"memo\", xdr.lookup(\"Memo\")], [\"operations\", xdr.varArray(xdr.lookup(\"Operation\"), xdr.lookup(\"MAX_OPS_PER_TX\"))], [\"ext\", xdr.lookup(\"TransactionExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct TransactionV1Envelope\n // {\n // Transaction tx;\n // /* Each decorated signature is a signature over the SHA256 hash of\n // * a TransactionSignaturePayload */\n // DecoratedSignature signatures<20>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionV1Envelope\", [[\"tx\", xdr.lookup(\"Transaction\")], [\"signatures\", xdr.varArray(xdr.lookup(\"DecoratedSignature\"), 20)]]);\n\n // === xdr source ============================================================\n //\n // union switch (EnvelopeType type)\n // {\n // case ENVELOPE_TYPE_TX:\n // TransactionV1Envelope v1;\n // }\n //\n // ===========================================================================\n xdr.union(\"FeeBumpTransactionInnerTx\", {\n switchOn: xdr.lookup(\"EnvelopeType\"),\n switchName: \"type\",\n switches: [[\"envelopeTypeTx\", \"v1\"]],\n arms: {\n v1: xdr.lookup(\"TransactionV1Envelope\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"FeeBumpTransactionExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct FeeBumpTransaction\n // {\n // MuxedAccount feeSource;\n // int64 fee;\n // union switch (EnvelopeType type)\n // {\n // case ENVELOPE_TYPE_TX:\n // TransactionV1Envelope v1;\n // }\n // innerTx;\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"FeeBumpTransaction\", [[\"feeSource\", xdr.lookup(\"MuxedAccount\")], [\"fee\", xdr.lookup(\"Int64\")], [\"innerTx\", xdr.lookup(\"FeeBumpTransactionInnerTx\")], [\"ext\", xdr.lookup(\"FeeBumpTransactionExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct FeeBumpTransactionEnvelope\n // {\n // FeeBumpTransaction tx;\n // /* Each decorated signature is a signature over the SHA256 hash of\n // * a TransactionSignaturePayload */\n // DecoratedSignature signatures<20>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"FeeBumpTransactionEnvelope\", [[\"tx\", xdr.lookup(\"FeeBumpTransaction\")], [\"signatures\", xdr.varArray(xdr.lookup(\"DecoratedSignature\"), 20)]]);\n\n // === xdr source ============================================================\n //\n // union TransactionEnvelope switch (EnvelopeType type)\n // {\n // case ENVELOPE_TYPE_TX_V0:\n // TransactionV0Envelope v0;\n // case ENVELOPE_TYPE_TX:\n // TransactionV1Envelope v1;\n // case ENVELOPE_TYPE_TX_FEE_BUMP:\n // FeeBumpTransactionEnvelope feeBump;\n // };\n //\n // ===========================================================================\n xdr.union(\"TransactionEnvelope\", {\n switchOn: xdr.lookup(\"EnvelopeType\"),\n switchName: \"type\",\n switches: [[\"envelopeTypeTxV0\", \"v0\"], [\"envelopeTypeTx\", \"v1\"], [\"envelopeTypeTxFeeBump\", \"feeBump\"]],\n arms: {\n v0: xdr.lookup(\"TransactionV0Envelope\"),\n v1: xdr.lookup(\"TransactionV1Envelope\"),\n feeBump: xdr.lookup(\"FeeBumpTransactionEnvelope\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (EnvelopeType type)\n // {\n // // Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0\n // case ENVELOPE_TYPE_TX:\n // Transaction tx;\n // case ENVELOPE_TYPE_TX_FEE_BUMP:\n // FeeBumpTransaction feeBump;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionSignaturePayloadTaggedTransaction\", {\n switchOn: xdr.lookup(\"EnvelopeType\"),\n switchName: \"type\",\n switches: [[\"envelopeTypeTx\", \"tx\"], [\"envelopeTypeTxFeeBump\", \"feeBump\"]],\n arms: {\n tx: xdr.lookup(\"Transaction\"),\n feeBump: xdr.lookup(\"FeeBumpTransaction\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionSignaturePayload\n // {\n // Hash networkId;\n // union switch (EnvelopeType type)\n // {\n // // Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0\n // case ENVELOPE_TYPE_TX:\n // Transaction tx;\n // case ENVELOPE_TYPE_TX_FEE_BUMP:\n // FeeBumpTransaction feeBump;\n // }\n // taggedTransaction;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionSignaturePayload\", [[\"networkId\", xdr.lookup(\"Hash\")], [\"taggedTransaction\", xdr.lookup(\"TransactionSignaturePayloadTaggedTransaction\")]]);\n\n // === xdr source ============================================================\n //\n // enum ClaimAtomType\n // {\n // CLAIM_ATOM_TYPE_V0 = 0,\n // CLAIM_ATOM_TYPE_ORDER_BOOK = 1,\n // CLAIM_ATOM_TYPE_LIQUIDITY_POOL = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimAtomType\", {\n claimAtomTypeV0: 0,\n claimAtomTypeOrderBook: 1,\n claimAtomTypeLiquidityPool: 2\n });\n\n // === xdr source ============================================================\n //\n // struct ClaimOfferAtomV0\n // {\n // // emitted to identify the offer\n // uint256 sellerEd25519; // Account that owns the offer\n // int64 offerID;\n //\n // // amount and asset taken from the owner\n // Asset assetSold;\n // int64 amountSold;\n //\n // // amount and asset sent to the owner\n // Asset assetBought;\n // int64 amountBought;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimOfferAtomV0\", [[\"sellerEd25519\", xdr.lookup(\"Uint256\")], [\"offerId\", xdr.lookup(\"Int64\")], [\"assetSold\", xdr.lookup(\"Asset\")], [\"amountSold\", xdr.lookup(\"Int64\")], [\"assetBought\", xdr.lookup(\"Asset\")], [\"amountBought\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ClaimOfferAtom\n // {\n // // emitted to identify the offer\n // AccountID sellerID; // Account that owns the offer\n // int64 offerID;\n //\n // // amount and asset taken from the owner\n // Asset assetSold;\n // int64 amountSold;\n //\n // // amount and asset sent to the owner\n // Asset assetBought;\n // int64 amountBought;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimOfferAtom\", [[\"sellerId\", xdr.lookup(\"AccountId\")], [\"offerId\", xdr.lookup(\"Int64\")], [\"assetSold\", xdr.lookup(\"Asset\")], [\"amountSold\", xdr.lookup(\"Int64\")], [\"assetBought\", xdr.lookup(\"Asset\")], [\"amountBought\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ClaimLiquidityAtom\n // {\n // PoolID liquidityPoolID;\n //\n // // amount and asset taken from the pool\n // Asset assetSold;\n // int64 amountSold;\n //\n // // amount and asset sent to the pool\n // Asset assetBought;\n // int64 amountBought;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ClaimLiquidityAtom\", [[\"liquidityPoolId\", xdr.lookup(\"PoolId\")], [\"assetSold\", xdr.lookup(\"Asset\")], [\"amountSold\", xdr.lookup(\"Int64\")], [\"assetBought\", xdr.lookup(\"Asset\")], [\"amountBought\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union ClaimAtom switch (ClaimAtomType type)\n // {\n // case CLAIM_ATOM_TYPE_V0:\n // ClaimOfferAtomV0 v0;\n // case CLAIM_ATOM_TYPE_ORDER_BOOK:\n // ClaimOfferAtom orderBook;\n // case CLAIM_ATOM_TYPE_LIQUIDITY_POOL:\n // ClaimLiquidityAtom liquidityPool;\n // };\n //\n // ===========================================================================\n xdr.union(\"ClaimAtom\", {\n switchOn: xdr.lookup(\"ClaimAtomType\"),\n switchName: \"type\",\n switches: [[\"claimAtomTypeV0\", \"v0\"], [\"claimAtomTypeOrderBook\", \"orderBook\"], [\"claimAtomTypeLiquidityPool\", \"liquidityPool\"]],\n arms: {\n v0: xdr.lookup(\"ClaimOfferAtomV0\"),\n orderBook: xdr.lookup(\"ClaimOfferAtom\"),\n liquidityPool: xdr.lookup(\"ClaimLiquidityAtom\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum CreateAccountResultCode\n // {\n // // codes considered as \"success\" for the operation\n // CREATE_ACCOUNT_SUCCESS = 0, // account was created\n //\n // // codes considered as \"failure\" for the operation\n // CREATE_ACCOUNT_MALFORMED = -1, // invalid destination\n // CREATE_ACCOUNT_UNDERFUNDED = -2, // not enough funds in source account\n // CREATE_ACCOUNT_LOW_RESERVE =\n // -3, // would create an account below the min reserve\n // CREATE_ACCOUNT_ALREADY_EXIST = -4 // account already exists\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"CreateAccountResultCode\", {\n createAccountSuccess: 0,\n createAccountMalformed: -1,\n createAccountUnderfunded: -2,\n createAccountLowReserve: -3,\n createAccountAlreadyExist: -4\n });\n\n // === xdr source ============================================================\n //\n // union CreateAccountResult switch (CreateAccountResultCode code)\n // {\n // case CREATE_ACCOUNT_SUCCESS:\n // void;\n // case CREATE_ACCOUNT_MALFORMED:\n // case CREATE_ACCOUNT_UNDERFUNDED:\n // case CREATE_ACCOUNT_LOW_RESERVE:\n // case CREATE_ACCOUNT_ALREADY_EXIST:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"CreateAccountResult\", {\n switchOn: xdr.lookup(\"CreateAccountResultCode\"),\n switchName: \"code\",\n switches: [[\"createAccountSuccess\", xdr[\"void\"]()], [\"createAccountMalformed\", xdr[\"void\"]()], [\"createAccountUnderfunded\", xdr[\"void\"]()], [\"createAccountLowReserve\", xdr[\"void\"]()], [\"createAccountAlreadyExist\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum PaymentResultCode\n // {\n // // codes considered as \"success\" for the operation\n // PAYMENT_SUCCESS = 0, // payment successfully completed\n //\n // // codes considered as \"failure\" for the operation\n // PAYMENT_MALFORMED = -1, // bad input\n // PAYMENT_UNDERFUNDED = -2, // not enough funds in source account\n // PAYMENT_SRC_NO_TRUST = -3, // no trust line on source account\n // PAYMENT_SRC_NOT_AUTHORIZED = -4, // source not authorized to transfer\n // PAYMENT_NO_DESTINATION = -5, // destination account does not exist\n // PAYMENT_NO_TRUST = -6, // destination missing a trust line for asset\n // PAYMENT_NOT_AUTHORIZED = -7, // destination not authorized to hold asset\n // PAYMENT_LINE_FULL = -8, // destination would go above their limit\n // PAYMENT_NO_ISSUER = -9 // missing issuer on asset\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"PaymentResultCode\", {\n paymentSuccess: 0,\n paymentMalformed: -1,\n paymentUnderfunded: -2,\n paymentSrcNoTrust: -3,\n paymentSrcNotAuthorized: -4,\n paymentNoDestination: -5,\n paymentNoTrust: -6,\n paymentNotAuthorized: -7,\n paymentLineFull: -8,\n paymentNoIssuer: -9\n });\n\n // === xdr source ============================================================\n //\n // union PaymentResult switch (PaymentResultCode code)\n // {\n // case PAYMENT_SUCCESS:\n // void;\n // case PAYMENT_MALFORMED:\n // case PAYMENT_UNDERFUNDED:\n // case PAYMENT_SRC_NO_TRUST:\n // case PAYMENT_SRC_NOT_AUTHORIZED:\n // case PAYMENT_NO_DESTINATION:\n // case PAYMENT_NO_TRUST:\n // case PAYMENT_NOT_AUTHORIZED:\n // case PAYMENT_LINE_FULL:\n // case PAYMENT_NO_ISSUER:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"PaymentResult\", {\n switchOn: xdr.lookup(\"PaymentResultCode\"),\n switchName: \"code\",\n switches: [[\"paymentSuccess\", xdr[\"void\"]()], [\"paymentMalformed\", xdr[\"void\"]()], [\"paymentUnderfunded\", xdr[\"void\"]()], [\"paymentSrcNoTrust\", xdr[\"void\"]()], [\"paymentSrcNotAuthorized\", xdr[\"void\"]()], [\"paymentNoDestination\", xdr[\"void\"]()], [\"paymentNoTrust\", xdr[\"void\"]()], [\"paymentNotAuthorized\", xdr[\"void\"]()], [\"paymentLineFull\", xdr[\"void\"]()], [\"paymentNoIssuer\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum PathPaymentStrictReceiveResultCode\n // {\n // // codes considered as \"success\" for the operation\n // PATH_PAYMENT_STRICT_RECEIVE_SUCCESS = 0, // success\n //\n // // codes considered as \"failure\" for the operation\n // PATH_PAYMENT_STRICT_RECEIVE_MALFORMED = -1, // bad input\n // PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED =\n // -2, // not enough funds in source account\n // PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST =\n // -3, // no trust line on source account\n // PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED =\n // -4, // source not authorized to transfer\n // PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION =\n // -5, // destination account does not exist\n // PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST =\n // -6, // dest missing a trust line for asset\n // PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED =\n // -7, // dest not authorized to hold asset\n // PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL =\n // -8, // dest would go above their limit\n // PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER = -9, // missing issuer on one asset\n // PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS =\n // -10, // not enough offers to satisfy path\n // PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF =\n // -11, // would cross one of its own offers\n // PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX = -12 // could not satisfy sendmax\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"PathPaymentStrictReceiveResultCode\", {\n pathPaymentStrictReceiveSuccess: 0,\n pathPaymentStrictReceiveMalformed: -1,\n pathPaymentStrictReceiveUnderfunded: -2,\n pathPaymentStrictReceiveSrcNoTrust: -3,\n pathPaymentStrictReceiveSrcNotAuthorized: -4,\n pathPaymentStrictReceiveNoDestination: -5,\n pathPaymentStrictReceiveNoTrust: -6,\n pathPaymentStrictReceiveNotAuthorized: -7,\n pathPaymentStrictReceiveLineFull: -8,\n pathPaymentStrictReceiveNoIssuer: -9,\n pathPaymentStrictReceiveTooFewOffers: -10,\n pathPaymentStrictReceiveOfferCrossSelf: -11,\n pathPaymentStrictReceiveOverSendmax: -12\n });\n\n // === xdr source ============================================================\n //\n // struct SimplePaymentResult\n // {\n // AccountID destination;\n // Asset asset;\n // int64 amount;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SimplePaymentResult\", [[\"destination\", xdr.lookup(\"AccountId\")], [\"asset\", xdr.lookup(\"Asset\")], [\"amount\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // ClaimAtom offers<>;\n // SimplePaymentResult last;\n // }\n //\n // ===========================================================================\n xdr.struct(\"PathPaymentStrictReceiveResultSuccess\", [[\"offers\", xdr.varArray(xdr.lookup(\"ClaimAtom\"), 2147483647)], [\"last\", xdr.lookup(\"SimplePaymentResult\")]]);\n\n // === xdr source ============================================================\n //\n // union PathPaymentStrictReceiveResult switch (\n // PathPaymentStrictReceiveResultCode code)\n // {\n // case PATH_PAYMENT_STRICT_RECEIVE_SUCCESS:\n // struct\n // {\n // ClaimAtom offers<>;\n // SimplePaymentResult last;\n // } success;\n // case PATH_PAYMENT_STRICT_RECEIVE_MALFORMED:\n // case PATH_PAYMENT_STRICT_RECEIVE_UNDERFUNDED:\n // case PATH_PAYMENT_STRICT_RECEIVE_SRC_NO_TRUST:\n // case PATH_PAYMENT_STRICT_RECEIVE_SRC_NOT_AUTHORIZED:\n // case PATH_PAYMENT_STRICT_RECEIVE_NO_DESTINATION:\n // case PATH_PAYMENT_STRICT_RECEIVE_NO_TRUST:\n // case PATH_PAYMENT_STRICT_RECEIVE_NOT_AUTHORIZED:\n // case PATH_PAYMENT_STRICT_RECEIVE_LINE_FULL:\n // void;\n // case PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER:\n // Asset noIssuer; // the asset that caused the error\n // case PATH_PAYMENT_STRICT_RECEIVE_TOO_FEW_OFFERS:\n // case PATH_PAYMENT_STRICT_RECEIVE_OFFER_CROSS_SELF:\n // case PATH_PAYMENT_STRICT_RECEIVE_OVER_SENDMAX:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"PathPaymentStrictReceiveResult\", {\n switchOn: xdr.lookup(\"PathPaymentStrictReceiveResultCode\"),\n switchName: \"code\",\n switches: [[\"pathPaymentStrictReceiveSuccess\", \"success\"], [\"pathPaymentStrictReceiveMalformed\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveUnderfunded\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveSrcNoTrust\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveSrcNotAuthorized\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveNoDestination\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveNoTrust\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveNotAuthorized\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveLineFull\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveNoIssuer\", \"noIssuer\"], [\"pathPaymentStrictReceiveTooFewOffers\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveOfferCrossSelf\", xdr[\"void\"]()], [\"pathPaymentStrictReceiveOverSendmax\", xdr[\"void\"]()]],\n arms: {\n success: xdr.lookup(\"PathPaymentStrictReceiveResultSuccess\"),\n noIssuer: xdr.lookup(\"Asset\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum PathPaymentStrictSendResultCode\n // {\n // // codes considered as \"success\" for the operation\n // PATH_PAYMENT_STRICT_SEND_SUCCESS = 0, // success\n //\n // // codes considered as \"failure\" for the operation\n // PATH_PAYMENT_STRICT_SEND_MALFORMED = -1, // bad input\n // PATH_PAYMENT_STRICT_SEND_UNDERFUNDED =\n // -2, // not enough funds in source account\n // PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST =\n // -3, // no trust line on source account\n // PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED =\n // -4, // source not authorized to transfer\n // PATH_PAYMENT_STRICT_SEND_NO_DESTINATION =\n // -5, // destination account does not exist\n // PATH_PAYMENT_STRICT_SEND_NO_TRUST =\n // -6, // dest missing a trust line for asset\n // PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED =\n // -7, // dest not authorized to hold asset\n // PATH_PAYMENT_STRICT_SEND_LINE_FULL = -8, // dest would go above their limit\n // PATH_PAYMENT_STRICT_SEND_NO_ISSUER = -9, // missing issuer on one asset\n // PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS =\n // -10, // not enough offers to satisfy path\n // PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF =\n // -11, // would cross one of its own offers\n // PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN = -12 // could not satisfy destMin\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"PathPaymentStrictSendResultCode\", {\n pathPaymentStrictSendSuccess: 0,\n pathPaymentStrictSendMalformed: -1,\n pathPaymentStrictSendUnderfunded: -2,\n pathPaymentStrictSendSrcNoTrust: -3,\n pathPaymentStrictSendSrcNotAuthorized: -4,\n pathPaymentStrictSendNoDestination: -5,\n pathPaymentStrictSendNoTrust: -6,\n pathPaymentStrictSendNotAuthorized: -7,\n pathPaymentStrictSendLineFull: -8,\n pathPaymentStrictSendNoIssuer: -9,\n pathPaymentStrictSendTooFewOffers: -10,\n pathPaymentStrictSendOfferCrossSelf: -11,\n pathPaymentStrictSendUnderDestmin: -12\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // ClaimAtom offers<>;\n // SimplePaymentResult last;\n // }\n //\n // ===========================================================================\n xdr.struct(\"PathPaymentStrictSendResultSuccess\", [[\"offers\", xdr.varArray(xdr.lookup(\"ClaimAtom\"), 2147483647)], [\"last\", xdr.lookup(\"SimplePaymentResult\")]]);\n\n // === xdr source ============================================================\n //\n // union PathPaymentStrictSendResult switch (PathPaymentStrictSendResultCode code)\n // {\n // case PATH_PAYMENT_STRICT_SEND_SUCCESS:\n // struct\n // {\n // ClaimAtom offers<>;\n // SimplePaymentResult last;\n // } success;\n // case PATH_PAYMENT_STRICT_SEND_MALFORMED:\n // case PATH_PAYMENT_STRICT_SEND_UNDERFUNDED:\n // case PATH_PAYMENT_STRICT_SEND_SRC_NO_TRUST:\n // case PATH_PAYMENT_STRICT_SEND_SRC_NOT_AUTHORIZED:\n // case PATH_PAYMENT_STRICT_SEND_NO_DESTINATION:\n // case PATH_PAYMENT_STRICT_SEND_NO_TRUST:\n // case PATH_PAYMENT_STRICT_SEND_NOT_AUTHORIZED:\n // case PATH_PAYMENT_STRICT_SEND_LINE_FULL:\n // void;\n // case PATH_PAYMENT_STRICT_SEND_NO_ISSUER:\n // Asset noIssuer; // the asset that caused the error\n // case PATH_PAYMENT_STRICT_SEND_TOO_FEW_OFFERS:\n // case PATH_PAYMENT_STRICT_SEND_OFFER_CROSS_SELF:\n // case PATH_PAYMENT_STRICT_SEND_UNDER_DESTMIN:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"PathPaymentStrictSendResult\", {\n switchOn: xdr.lookup(\"PathPaymentStrictSendResultCode\"),\n switchName: \"code\",\n switches: [[\"pathPaymentStrictSendSuccess\", \"success\"], [\"pathPaymentStrictSendMalformed\", xdr[\"void\"]()], [\"pathPaymentStrictSendUnderfunded\", xdr[\"void\"]()], [\"pathPaymentStrictSendSrcNoTrust\", xdr[\"void\"]()], [\"pathPaymentStrictSendSrcNotAuthorized\", xdr[\"void\"]()], [\"pathPaymentStrictSendNoDestination\", xdr[\"void\"]()], [\"pathPaymentStrictSendNoTrust\", xdr[\"void\"]()], [\"pathPaymentStrictSendNotAuthorized\", xdr[\"void\"]()], [\"pathPaymentStrictSendLineFull\", xdr[\"void\"]()], [\"pathPaymentStrictSendNoIssuer\", \"noIssuer\"], [\"pathPaymentStrictSendTooFewOffers\", xdr[\"void\"]()], [\"pathPaymentStrictSendOfferCrossSelf\", xdr[\"void\"]()], [\"pathPaymentStrictSendUnderDestmin\", xdr[\"void\"]()]],\n arms: {\n success: xdr.lookup(\"PathPaymentStrictSendResultSuccess\"),\n noIssuer: xdr.lookup(\"Asset\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ManageSellOfferResultCode\n // {\n // // codes considered as \"success\" for the operation\n // MANAGE_SELL_OFFER_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // MANAGE_SELL_OFFER_MALFORMED = -1, // generated offer would be invalid\n // MANAGE_SELL_OFFER_SELL_NO_TRUST =\n // -2, // no trust line for what we're selling\n // MANAGE_SELL_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying\n // MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell\n // MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy\n // MANAGE_SELL_OFFER_LINE_FULL = -6, // can't receive more of what it's buying\n // MANAGE_SELL_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell\n // MANAGE_SELL_OFFER_CROSS_SELF =\n // -8, // would cross an offer from the same user\n // MANAGE_SELL_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling\n // MANAGE_SELL_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying\n //\n // // update errors\n // MANAGE_SELL_OFFER_NOT_FOUND =\n // -11, // offerID does not match an existing offer\n //\n // MANAGE_SELL_OFFER_LOW_RESERVE =\n // -12 // not enough funds to create a new Offer\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ManageSellOfferResultCode\", {\n manageSellOfferSuccess: 0,\n manageSellOfferMalformed: -1,\n manageSellOfferSellNoTrust: -2,\n manageSellOfferBuyNoTrust: -3,\n manageSellOfferSellNotAuthorized: -4,\n manageSellOfferBuyNotAuthorized: -5,\n manageSellOfferLineFull: -6,\n manageSellOfferUnderfunded: -7,\n manageSellOfferCrossSelf: -8,\n manageSellOfferSellNoIssuer: -9,\n manageSellOfferBuyNoIssuer: -10,\n manageSellOfferNotFound: -11,\n manageSellOfferLowReserve: -12\n });\n\n // === xdr source ============================================================\n //\n // enum ManageOfferEffect\n // {\n // MANAGE_OFFER_CREATED = 0,\n // MANAGE_OFFER_UPDATED = 1,\n // MANAGE_OFFER_DELETED = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ManageOfferEffect\", {\n manageOfferCreated: 0,\n manageOfferUpdated: 1,\n manageOfferDeleted: 2\n });\n\n // === xdr source ============================================================\n //\n // union switch (ManageOfferEffect effect)\n // {\n // case MANAGE_OFFER_CREATED:\n // case MANAGE_OFFER_UPDATED:\n // OfferEntry offer;\n // case MANAGE_OFFER_DELETED:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"ManageOfferSuccessResultOffer\", {\n switchOn: xdr.lookup(\"ManageOfferEffect\"),\n switchName: \"effect\",\n switches: [[\"manageOfferCreated\", \"offer\"], [\"manageOfferUpdated\", \"offer\"], [\"manageOfferDeleted\", xdr[\"void\"]()]],\n arms: {\n offer: xdr.lookup(\"OfferEntry\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ManageOfferSuccessResult\n // {\n // // offers that got claimed while creating this offer\n // ClaimAtom offersClaimed<>;\n //\n // union switch (ManageOfferEffect effect)\n // {\n // case MANAGE_OFFER_CREATED:\n // case MANAGE_OFFER_UPDATED:\n // OfferEntry offer;\n // case MANAGE_OFFER_DELETED:\n // void;\n // }\n // offer;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ManageOfferSuccessResult\", [[\"offersClaimed\", xdr.varArray(xdr.lookup(\"ClaimAtom\"), 2147483647)], [\"offer\", xdr.lookup(\"ManageOfferSuccessResultOffer\")]]);\n\n // === xdr source ============================================================\n //\n // union ManageSellOfferResult switch (ManageSellOfferResultCode code)\n // {\n // case MANAGE_SELL_OFFER_SUCCESS:\n // ManageOfferSuccessResult success;\n // case MANAGE_SELL_OFFER_MALFORMED:\n // case MANAGE_SELL_OFFER_SELL_NO_TRUST:\n // case MANAGE_SELL_OFFER_BUY_NO_TRUST:\n // case MANAGE_SELL_OFFER_SELL_NOT_AUTHORIZED:\n // case MANAGE_SELL_OFFER_BUY_NOT_AUTHORIZED:\n // case MANAGE_SELL_OFFER_LINE_FULL:\n // case MANAGE_SELL_OFFER_UNDERFUNDED:\n // case MANAGE_SELL_OFFER_CROSS_SELF:\n // case MANAGE_SELL_OFFER_SELL_NO_ISSUER:\n // case MANAGE_SELL_OFFER_BUY_NO_ISSUER:\n // case MANAGE_SELL_OFFER_NOT_FOUND:\n // case MANAGE_SELL_OFFER_LOW_RESERVE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ManageSellOfferResult\", {\n switchOn: xdr.lookup(\"ManageSellOfferResultCode\"),\n switchName: \"code\",\n switches: [[\"manageSellOfferSuccess\", \"success\"], [\"manageSellOfferMalformed\", xdr[\"void\"]()], [\"manageSellOfferSellNoTrust\", xdr[\"void\"]()], [\"manageSellOfferBuyNoTrust\", xdr[\"void\"]()], [\"manageSellOfferSellNotAuthorized\", xdr[\"void\"]()], [\"manageSellOfferBuyNotAuthorized\", xdr[\"void\"]()], [\"manageSellOfferLineFull\", xdr[\"void\"]()], [\"manageSellOfferUnderfunded\", xdr[\"void\"]()], [\"manageSellOfferCrossSelf\", xdr[\"void\"]()], [\"manageSellOfferSellNoIssuer\", xdr[\"void\"]()], [\"manageSellOfferBuyNoIssuer\", xdr[\"void\"]()], [\"manageSellOfferNotFound\", xdr[\"void\"]()], [\"manageSellOfferLowReserve\", xdr[\"void\"]()]],\n arms: {\n success: xdr.lookup(\"ManageOfferSuccessResult\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ManageBuyOfferResultCode\n // {\n // // codes considered as \"success\" for the operation\n // MANAGE_BUY_OFFER_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // MANAGE_BUY_OFFER_MALFORMED = -1, // generated offer would be invalid\n // MANAGE_BUY_OFFER_SELL_NO_TRUST = -2, // no trust line for what we're selling\n // MANAGE_BUY_OFFER_BUY_NO_TRUST = -3, // no trust line for what we're buying\n // MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED = -4, // not authorized to sell\n // MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED = -5, // not authorized to buy\n // MANAGE_BUY_OFFER_LINE_FULL = -6, // can't receive more of what it's buying\n // MANAGE_BUY_OFFER_UNDERFUNDED = -7, // doesn't hold what it's trying to sell\n // MANAGE_BUY_OFFER_CROSS_SELF = -8, // would cross an offer from the same user\n // MANAGE_BUY_OFFER_SELL_NO_ISSUER = -9, // no issuer for what we're selling\n // MANAGE_BUY_OFFER_BUY_NO_ISSUER = -10, // no issuer for what we're buying\n //\n // // update errors\n // MANAGE_BUY_OFFER_NOT_FOUND =\n // -11, // offerID does not match an existing offer\n //\n // MANAGE_BUY_OFFER_LOW_RESERVE = -12 // not enough funds to create a new Offer\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ManageBuyOfferResultCode\", {\n manageBuyOfferSuccess: 0,\n manageBuyOfferMalformed: -1,\n manageBuyOfferSellNoTrust: -2,\n manageBuyOfferBuyNoTrust: -3,\n manageBuyOfferSellNotAuthorized: -4,\n manageBuyOfferBuyNotAuthorized: -5,\n manageBuyOfferLineFull: -6,\n manageBuyOfferUnderfunded: -7,\n manageBuyOfferCrossSelf: -8,\n manageBuyOfferSellNoIssuer: -9,\n manageBuyOfferBuyNoIssuer: -10,\n manageBuyOfferNotFound: -11,\n manageBuyOfferLowReserve: -12\n });\n\n // === xdr source ============================================================\n //\n // union ManageBuyOfferResult switch (ManageBuyOfferResultCode code)\n // {\n // case MANAGE_BUY_OFFER_SUCCESS:\n // ManageOfferSuccessResult success;\n // case MANAGE_BUY_OFFER_MALFORMED:\n // case MANAGE_BUY_OFFER_SELL_NO_TRUST:\n // case MANAGE_BUY_OFFER_BUY_NO_TRUST:\n // case MANAGE_BUY_OFFER_SELL_NOT_AUTHORIZED:\n // case MANAGE_BUY_OFFER_BUY_NOT_AUTHORIZED:\n // case MANAGE_BUY_OFFER_LINE_FULL:\n // case MANAGE_BUY_OFFER_UNDERFUNDED:\n // case MANAGE_BUY_OFFER_CROSS_SELF:\n // case MANAGE_BUY_OFFER_SELL_NO_ISSUER:\n // case MANAGE_BUY_OFFER_BUY_NO_ISSUER:\n // case MANAGE_BUY_OFFER_NOT_FOUND:\n // case MANAGE_BUY_OFFER_LOW_RESERVE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ManageBuyOfferResult\", {\n switchOn: xdr.lookup(\"ManageBuyOfferResultCode\"),\n switchName: \"code\",\n switches: [[\"manageBuyOfferSuccess\", \"success\"], [\"manageBuyOfferMalformed\", xdr[\"void\"]()], [\"manageBuyOfferSellNoTrust\", xdr[\"void\"]()], [\"manageBuyOfferBuyNoTrust\", xdr[\"void\"]()], [\"manageBuyOfferSellNotAuthorized\", xdr[\"void\"]()], [\"manageBuyOfferBuyNotAuthorized\", xdr[\"void\"]()], [\"manageBuyOfferLineFull\", xdr[\"void\"]()], [\"manageBuyOfferUnderfunded\", xdr[\"void\"]()], [\"manageBuyOfferCrossSelf\", xdr[\"void\"]()], [\"manageBuyOfferSellNoIssuer\", xdr[\"void\"]()], [\"manageBuyOfferBuyNoIssuer\", xdr[\"void\"]()], [\"manageBuyOfferNotFound\", xdr[\"void\"]()], [\"manageBuyOfferLowReserve\", xdr[\"void\"]()]],\n arms: {\n success: xdr.lookup(\"ManageOfferSuccessResult\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum SetOptionsResultCode\n // {\n // // codes considered as \"success\" for the operation\n // SET_OPTIONS_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // SET_OPTIONS_LOW_RESERVE = -1, // not enough funds to add a signer\n // SET_OPTIONS_TOO_MANY_SIGNERS = -2, // max number of signers already reached\n // SET_OPTIONS_BAD_FLAGS = -3, // invalid combination of clear/set flags\n // SET_OPTIONS_INVALID_INFLATION = -4, // inflation account does not exist\n // SET_OPTIONS_CANT_CHANGE = -5, // can no longer change this option\n // SET_OPTIONS_UNKNOWN_FLAG = -6, // can't set an unknown flag\n // SET_OPTIONS_THRESHOLD_OUT_OF_RANGE = -7, // bad value for weight/threshold\n // SET_OPTIONS_BAD_SIGNER = -8, // signer cannot be masterkey\n // SET_OPTIONS_INVALID_HOME_DOMAIN = -9, // malformed home domain\n // SET_OPTIONS_AUTH_REVOCABLE_REQUIRED =\n // -10 // auth revocable is required for clawback\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SetOptionsResultCode\", {\n setOptionsSuccess: 0,\n setOptionsLowReserve: -1,\n setOptionsTooManySigners: -2,\n setOptionsBadFlags: -3,\n setOptionsInvalidInflation: -4,\n setOptionsCantChange: -5,\n setOptionsUnknownFlag: -6,\n setOptionsThresholdOutOfRange: -7,\n setOptionsBadSigner: -8,\n setOptionsInvalidHomeDomain: -9,\n setOptionsAuthRevocableRequired: -10\n });\n\n // === xdr source ============================================================\n //\n // union SetOptionsResult switch (SetOptionsResultCode code)\n // {\n // case SET_OPTIONS_SUCCESS:\n // void;\n // case SET_OPTIONS_LOW_RESERVE:\n // case SET_OPTIONS_TOO_MANY_SIGNERS:\n // case SET_OPTIONS_BAD_FLAGS:\n // case SET_OPTIONS_INVALID_INFLATION:\n // case SET_OPTIONS_CANT_CHANGE:\n // case SET_OPTIONS_UNKNOWN_FLAG:\n // case SET_OPTIONS_THRESHOLD_OUT_OF_RANGE:\n // case SET_OPTIONS_BAD_SIGNER:\n // case SET_OPTIONS_INVALID_HOME_DOMAIN:\n // case SET_OPTIONS_AUTH_REVOCABLE_REQUIRED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"SetOptionsResult\", {\n switchOn: xdr.lookup(\"SetOptionsResultCode\"),\n switchName: \"code\",\n switches: [[\"setOptionsSuccess\", xdr[\"void\"]()], [\"setOptionsLowReserve\", xdr[\"void\"]()], [\"setOptionsTooManySigners\", xdr[\"void\"]()], [\"setOptionsBadFlags\", xdr[\"void\"]()], [\"setOptionsInvalidInflation\", xdr[\"void\"]()], [\"setOptionsCantChange\", xdr[\"void\"]()], [\"setOptionsUnknownFlag\", xdr[\"void\"]()], [\"setOptionsThresholdOutOfRange\", xdr[\"void\"]()], [\"setOptionsBadSigner\", xdr[\"void\"]()], [\"setOptionsInvalidHomeDomain\", xdr[\"void\"]()], [\"setOptionsAuthRevocableRequired\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum ChangeTrustResultCode\n // {\n // // codes considered as \"success\" for the operation\n // CHANGE_TRUST_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // CHANGE_TRUST_MALFORMED = -1, // bad input\n // CHANGE_TRUST_NO_ISSUER = -2, // could not find issuer\n // CHANGE_TRUST_INVALID_LIMIT = -3, // cannot drop limit below balance\n // // cannot create with a limit of 0\n // CHANGE_TRUST_LOW_RESERVE =\n // -4, // not enough funds to create a new trust line,\n // CHANGE_TRUST_SELF_NOT_ALLOWED = -5, // trusting self is not allowed\n // CHANGE_TRUST_TRUST_LINE_MISSING = -6, // Asset trustline is missing for pool\n // CHANGE_TRUST_CANNOT_DELETE =\n // -7, // Asset trustline is still referenced in a pool\n // CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES =\n // -8 // Asset trustline is deauthorized\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ChangeTrustResultCode\", {\n changeTrustSuccess: 0,\n changeTrustMalformed: -1,\n changeTrustNoIssuer: -2,\n changeTrustInvalidLimit: -3,\n changeTrustLowReserve: -4,\n changeTrustSelfNotAllowed: -5,\n changeTrustTrustLineMissing: -6,\n changeTrustCannotDelete: -7,\n changeTrustNotAuthMaintainLiabilities: -8\n });\n\n // === xdr source ============================================================\n //\n // union ChangeTrustResult switch (ChangeTrustResultCode code)\n // {\n // case CHANGE_TRUST_SUCCESS:\n // void;\n // case CHANGE_TRUST_MALFORMED:\n // case CHANGE_TRUST_NO_ISSUER:\n // case CHANGE_TRUST_INVALID_LIMIT:\n // case CHANGE_TRUST_LOW_RESERVE:\n // case CHANGE_TRUST_SELF_NOT_ALLOWED:\n // case CHANGE_TRUST_TRUST_LINE_MISSING:\n // case CHANGE_TRUST_CANNOT_DELETE:\n // case CHANGE_TRUST_NOT_AUTH_MAINTAIN_LIABILITIES:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ChangeTrustResult\", {\n switchOn: xdr.lookup(\"ChangeTrustResultCode\"),\n switchName: \"code\",\n switches: [[\"changeTrustSuccess\", xdr[\"void\"]()], [\"changeTrustMalformed\", xdr[\"void\"]()], [\"changeTrustNoIssuer\", xdr[\"void\"]()], [\"changeTrustInvalidLimit\", xdr[\"void\"]()], [\"changeTrustLowReserve\", xdr[\"void\"]()], [\"changeTrustSelfNotAllowed\", xdr[\"void\"]()], [\"changeTrustTrustLineMissing\", xdr[\"void\"]()], [\"changeTrustCannotDelete\", xdr[\"void\"]()], [\"changeTrustNotAuthMaintainLiabilities\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum AllowTrustResultCode\n // {\n // // codes considered as \"success\" for the operation\n // ALLOW_TRUST_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // ALLOW_TRUST_MALFORMED = -1, // asset is not ASSET_TYPE_ALPHANUM\n // ALLOW_TRUST_NO_TRUST_LINE = -2, // trustor does not have a trustline\n // // source account does not require trust\n // ALLOW_TRUST_TRUST_NOT_REQUIRED = -3,\n // ALLOW_TRUST_CANT_REVOKE = -4, // source account can't revoke trust,\n // ALLOW_TRUST_SELF_NOT_ALLOWED = -5, // trusting self is not allowed\n // ALLOW_TRUST_LOW_RESERVE = -6 // claimable balances can't be created\n // // on revoke due to low reserves\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"AllowTrustResultCode\", {\n allowTrustSuccess: 0,\n allowTrustMalformed: -1,\n allowTrustNoTrustLine: -2,\n allowTrustTrustNotRequired: -3,\n allowTrustCantRevoke: -4,\n allowTrustSelfNotAllowed: -5,\n allowTrustLowReserve: -6\n });\n\n // === xdr source ============================================================\n //\n // union AllowTrustResult switch (AllowTrustResultCode code)\n // {\n // case ALLOW_TRUST_SUCCESS:\n // void;\n // case ALLOW_TRUST_MALFORMED:\n // case ALLOW_TRUST_NO_TRUST_LINE:\n // case ALLOW_TRUST_TRUST_NOT_REQUIRED:\n // case ALLOW_TRUST_CANT_REVOKE:\n // case ALLOW_TRUST_SELF_NOT_ALLOWED:\n // case ALLOW_TRUST_LOW_RESERVE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"AllowTrustResult\", {\n switchOn: xdr.lookup(\"AllowTrustResultCode\"),\n switchName: \"code\",\n switches: [[\"allowTrustSuccess\", xdr[\"void\"]()], [\"allowTrustMalformed\", xdr[\"void\"]()], [\"allowTrustNoTrustLine\", xdr[\"void\"]()], [\"allowTrustTrustNotRequired\", xdr[\"void\"]()], [\"allowTrustCantRevoke\", xdr[\"void\"]()], [\"allowTrustSelfNotAllowed\", xdr[\"void\"]()], [\"allowTrustLowReserve\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum AccountMergeResultCode\n // {\n // // codes considered as \"success\" for the operation\n // ACCOUNT_MERGE_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // ACCOUNT_MERGE_MALFORMED = -1, // can't merge onto itself\n // ACCOUNT_MERGE_NO_ACCOUNT = -2, // destination does not exist\n // ACCOUNT_MERGE_IMMUTABLE_SET = -3, // source account has AUTH_IMMUTABLE set\n // ACCOUNT_MERGE_HAS_SUB_ENTRIES = -4, // account has trust lines/offers\n // ACCOUNT_MERGE_SEQNUM_TOO_FAR = -5, // sequence number is over max allowed\n // ACCOUNT_MERGE_DEST_FULL = -6, // can't add source balance to\n // // destination balance\n // ACCOUNT_MERGE_IS_SPONSOR = -7 // can't merge account that is a sponsor\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"AccountMergeResultCode\", {\n accountMergeSuccess: 0,\n accountMergeMalformed: -1,\n accountMergeNoAccount: -2,\n accountMergeImmutableSet: -3,\n accountMergeHasSubEntries: -4,\n accountMergeSeqnumTooFar: -5,\n accountMergeDestFull: -6,\n accountMergeIsSponsor: -7\n });\n\n // === xdr source ============================================================\n //\n // union AccountMergeResult switch (AccountMergeResultCode code)\n // {\n // case ACCOUNT_MERGE_SUCCESS:\n // int64 sourceAccountBalance; // how much got transferred from source account\n // case ACCOUNT_MERGE_MALFORMED:\n // case ACCOUNT_MERGE_NO_ACCOUNT:\n // case ACCOUNT_MERGE_IMMUTABLE_SET:\n // case ACCOUNT_MERGE_HAS_SUB_ENTRIES:\n // case ACCOUNT_MERGE_SEQNUM_TOO_FAR:\n // case ACCOUNT_MERGE_DEST_FULL:\n // case ACCOUNT_MERGE_IS_SPONSOR:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"AccountMergeResult\", {\n switchOn: xdr.lookup(\"AccountMergeResultCode\"),\n switchName: \"code\",\n switches: [[\"accountMergeSuccess\", \"sourceAccountBalance\"], [\"accountMergeMalformed\", xdr[\"void\"]()], [\"accountMergeNoAccount\", xdr[\"void\"]()], [\"accountMergeImmutableSet\", xdr[\"void\"]()], [\"accountMergeHasSubEntries\", xdr[\"void\"]()], [\"accountMergeSeqnumTooFar\", xdr[\"void\"]()], [\"accountMergeDestFull\", xdr[\"void\"]()], [\"accountMergeIsSponsor\", xdr[\"void\"]()]],\n arms: {\n sourceAccountBalance: xdr.lookup(\"Int64\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum InflationResultCode\n // {\n // // codes considered as \"success\" for the operation\n // INFLATION_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // INFLATION_NOT_TIME = -1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"InflationResultCode\", {\n inflationSuccess: 0,\n inflationNotTime: -1\n });\n\n // === xdr source ============================================================\n //\n // struct InflationPayout // or use PaymentResultAtom to limit types?\n // {\n // AccountID destination;\n // int64 amount;\n // };\n //\n // ===========================================================================\n xdr.struct(\"InflationPayout\", [[\"destination\", xdr.lookup(\"AccountId\")], [\"amount\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // union InflationResult switch (InflationResultCode code)\n // {\n // case INFLATION_SUCCESS:\n // InflationPayout payouts<>;\n // case INFLATION_NOT_TIME:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"InflationResult\", {\n switchOn: xdr.lookup(\"InflationResultCode\"),\n switchName: \"code\",\n switches: [[\"inflationSuccess\", \"payouts\"], [\"inflationNotTime\", xdr[\"void\"]()]],\n arms: {\n payouts: xdr.varArray(xdr.lookup(\"InflationPayout\"), 2147483647)\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ManageDataResultCode\n // {\n // // codes considered as \"success\" for the operation\n // MANAGE_DATA_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // MANAGE_DATA_NOT_SUPPORTED_YET =\n // -1, // The network hasn't moved to this protocol change yet\n // MANAGE_DATA_NAME_NOT_FOUND =\n // -2, // Trying to remove a Data Entry that isn't there\n // MANAGE_DATA_LOW_RESERVE = -3, // not enough funds to create a new Data Entry\n // MANAGE_DATA_INVALID_NAME = -4 // Name not a valid string\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ManageDataResultCode\", {\n manageDataSuccess: 0,\n manageDataNotSupportedYet: -1,\n manageDataNameNotFound: -2,\n manageDataLowReserve: -3,\n manageDataInvalidName: -4\n });\n\n // === xdr source ============================================================\n //\n // union ManageDataResult switch (ManageDataResultCode code)\n // {\n // case MANAGE_DATA_SUCCESS:\n // void;\n // case MANAGE_DATA_NOT_SUPPORTED_YET:\n // case MANAGE_DATA_NAME_NOT_FOUND:\n // case MANAGE_DATA_LOW_RESERVE:\n // case MANAGE_DATA_INVALID_NAME:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ManageDataResult\", {\n switchOn: xdr.lookup(\"ManageDataResultCode\"),\n switchName: \"code\",\n switches: [[\"manageDataSuccess\", xdr[\"void\"]()], [\"manageDataNotSupportedYet\", xdr[\"void\"]()], [\"manageDataNameNotFound\", xdr[\"void\"]()], [\"manageDataLowReserve\", xdr[\"void\"]()], [\"manageDataInvalidName\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum BumpSequenceResultCode\n // {\n // // codes considered as \"success\" for the operation\n // BUMP_SEQUENCE_SUCCESS = 0,\n // // codes considered as \"failure\" for the operation\n // BUMP_SEQUENCE_BAD_SEQ = -1 // `bumpTo` is not within bounds\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"BumpSequenceResultCode\", {\n bumpSequenceSuccess: 0,\n bumpSequenceBadSeq: -1\n });\n\n // === xdr source ============================================================\n //\n // union BumpSequenceResult switch (BumpSequenceResultCode code)\n // {\n // case BUMP_SEQUENCE_SUCCESS:\n // void;\n // case BUMP_SEQUENCE_BAD_SEQ:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"BumpSequenceResult\", {\n switchOn: xdr.lookup(\"BumpSequenceResultCode\"),\n switchName: \"code\",\n switches: [[\"bumpSequenceSuccess\", xdr[\"void\"]()], [\"bumpSequenceBadSeq\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum CreateClaimableBalanceResultCode\n // {\n // CREATE_CLAIMABLE_BALANCE_SUCCESS = 0,\n // CREATE_CLAIMABLE_BALANCE_MALFORMED = -1,\n // CREATE_CLAIMABLE_BALANCE_LOW_RESERVE = -2,\n // CREATE_CLAIMABLE_BALANCE_NO_TRUST = -3,\n // CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -4,\n // CREATE_CLAIMABLE_BALANCE_UNDERFUNDED = -5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"CreateClaimableBalanceResultCode\", {\n createClaimableBalanceSuccess: 0,\n createClaimableBalanceMalformed: -1,\n createClaimableBalanceLowReserve: -2,\n createClaimableBalanceNoTrust: -3,\n createClaimableBalanceNotAuthorized: -4,\n createClaimableBalanceUnderfunded: -5\n });\n\n // === xdr source ============================================================\n //\n // union CreateClaimableBalanceResult switch (\n // CreateClaimableBalanceResultCode code)\n // {\n // case CREATE_CLAIMABLE_BALANCE_SUCCESS:\n // ClaimableBalanceID balanceID;\n // case CREATE_CLAIMABLE_BALANCE_MALFORMED:\n // case CREATE_CLAIMABLE_BALANCE_LOW_RESERVE:\n // case CREATE_CLAIMABLE_BALANCE_NO_TRUST:\n // case CREATE_CLAIMABLE_BALANCE_NOT_AUTHORIZED:\n // case CREATE_CLAIMABLE_BALANCE_UNDERFUNDED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"CreateClaimableBalanceResult\", {\n switchOn: xdr.lookup(\"CreateClaimableBalanceResultCode\"),\n switchName: \"code\",\n switches: [[\"createClaimableBalanceSuccess\", \"balanceId\"], [\"createClaimableBalanceMalformed\", xdr[\"void\"]()], [\"createClaimableBalanceLowReserve\", xdr[\"void\"]()], [\"createClaimableBalanceNoTrust\", xdr[\"void\"]()], [\"createClaimableBalanceNotAuthorized\", xdr[\"void\"]()], [\"createClaimableBalanceUnderfunded\", xdr[\"void\"]()]],\n arms: {\n balanceId: xdr.lookup(\"ClaimableBalanceId\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ClaimClaimableBalanceResultCode\n // {\n // CLAIM_CLAIMABLE_BALANCE_SUCCESS = 0,\n // CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST = -1,\n // CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM = -2,\n // CLAIM_CLAIMABLE_BALANCE_LINE_FULL = -3,\n // CLAIM_CLAIMABLE_BALANCE_NO_TRUST = -4,\n // CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED = -5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimClaimableBalanceResultCode\", {\n claimClaimableBalanceSuccess: 0,\n claimClaimableBalanceDoesNotExist: -1,\n claimClaimableBalanceCannotClaim: -2,\n claimClaimableBalanceLineFull: -3,\n claimClaimableBalanceNoTrust: -4,\n claimClaimableBalanceNotAuthorized: -5\n });\n\n // === xdr source ============================================================\n //\n // union ClaimClaimableBalanceResult switch (ClaimClaimableBalanceResultCode code)\n // {\n // case CLAIM_CLAIMABLE_BALANCE_SUCCESS:\n // void;\n // case CLAIM_CLAIMABLE_BALANCE_DOES_NOT_EXIST:\n // case CLAIM_CLAIMABLE_BALANCE_CANNOT_CLAIM:\n // case CLAIM_CLAIMABLE_BALANCE_LINE_FULL:\n // case CLAIM_CLAIMABLE_BALANCE_NO_TRUST:\n // case CLAIM_CLAIMABLE_BALANCE_NOT_AUTHORIZED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ClaimClaimableBalanceResult\", {\n switchOn: xdr.lookup(\"ClaimClaimableBalanceResultCode\"),\n switchName: \"code\",\n switches: [[\"claimClaimableBalanceSuccess\", xdr[\"void\"]()], [\"claimClaimableBalanceDoesNotExist\", xdr[\"void\"]()], [\"claimClaimableBalanceCannotClaim\", xdr[\"void\"]()], [\"claimClaimableBalanceLineFull\", xdr[\"void\"]()], [\"claimClaimableBalanceNoTrust\", xdr[\"void\"]()], [\"claimClaimableBalanceNotAuthorized\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum BeginSponsoringFutureReservesResultCode\n // {\n // // codes considered as \"success\" for the operation\n // BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED = -1,\n // BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED = -2,\n // BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE = -3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"BeginSponsoringFutureReservesResultCode\", {\n beginSponsoringFutureReservesSuccess: 0,\n beginSponsoringFutureReservesMalformed: -1,\n beginSponsoringFutureReservesAlreadySponsored: -2,\n beginSponsoringFutureReservesRecursive: -3\n });\n\n // === xdr source ============================================================\n //\n // union BeginSponsoringFutureReservesResult switch (\n // BeginSponsoringFutureReservesResultCode code)\n // {\n // case BEGIN_SPONSORING_FUTURE_RESERVES_SUCCESS:\n // void;\n // case BEGIN_SPONSORING_FUTURE_RESERVES_MALFORMED:\n // case BEGIN_SPONSORING_FUTURE_RESERVES_ALREADY_SPONSORED:\n // case BEGIN_SPONSORING_FUTURE_RESERVES_RECURSIVE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"BeginSponsoringFutureReservesResult\", {\n switchOn: xdr.lookup(\"BeginSponsoringFutureReservesResultCode\"),\n switchName: \"code\",\n switches: [[\"beginSponsoringFutureReservesSuccess\", xdr[\"void\"]()], [\"beginSponsoringFutureReservesMalformed\", xdr[\"void\"]()], [\"beginSponsoringFutureReservesAlreadySponsored\", xdr[\"void\"]()], [\"beginSponsoringFutureReservesRecursive\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum EndSponsoringFutureReservesResultCode\n // {\n // // codes considered as \"success\" for the operation\n // END_SPONSORING_FUTURE_RESERVES_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED = -1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"EndSponsoringFutureReservesResultCode\", {\n endSponsoringFutureReservesSuccess: 0,\n endSponsoringFutureReservesNotSponsored: -1\n });\n\n // === xdr source ============================================================\n //\n // union EndSponsoringFutureReservesResult switch (\n // EndSponsoringFutureReservesResultCode code)\n // {\n // case END_SPONSORING_FUTURE_RESERVES_SUCCESS:\n // void;\n // case END_SPONSORING_FUTURE_RESERVES_NOT_SPONSORED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"EndSponsoringFutureReservesResult\", {\n switchOn: xdr.lookup(\"EndSponsoringFutureReservesResultCode\"),\n switchName: \"code\",\n switches: [[\"endSponsoringFutureReservesSuccess\", xdr[\"void\"]()], [\"endSponsoringFutureReservesNotSponsored\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum RevokeSponsorshipResultCode\n // {\n // // codes considered as \"success\" for the operation\n // REVOKE_SPONSORSHIP_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // REVOKE_SPONSORSHIP_DOES_NOT_EXIST = -1,\n // REVOKE_SPONSORSHIP_NOT_SPONSOR = -2,\n // REVOKE_SPONSORSHIP_LOW_RESERVE = -3,\n // REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE = -4,\n // REVOKE_SPONSORSHIP_MALFORMED = -5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"RevokeSponsorshipResultCode\", {\n revokeSponsorshipSuccess: 0,\n revokeSponsorshipDoesNotExist: -1,\n revokeSponsorshipNotSponsor: -2,\n revokeSponsorshipLowReserve: -3,\n revokeSponsorshipOnlyTransferable: -4,\n revokeSponsorshipMalformed: -5\n });\n\n // === xdr source ============================================================\n //\n // union RevokeSponsorshipResult switch (RevokeSponsorshipResultCode code)\n // {\n // case REVOKE_SPONSORSHIP_SUCCESS:\n // void;\n // case REVOKE_SPONSORSHIP_DOES_NOT_EXIST:\n // case REVOKE_SPONSORSHIP_NOT_SPONSOR:\n // case REVOKE_SPONSORSHIP_LOW_RESERVE:\n // case REVOKE_SPONSORSHIP_ONLY_TRANSFERABLE:\n // case REVOKE_SPONSORSHIP_MALFORMED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"RevokeSponsorshipResult\", {\n switchOn: xdr.lookup(\"RevokeSponsorshipResultCode\"),\n switchName: \"code\",\n switches: [[\"revokeSponsorshipSuccess\", xdr[\"void\"]()], [\"revokeSponsorshipDoesNotExist\", xdr[\"void\"]()], [\"revokeSponsorshipNotSponsor\", xdr[\"void\"]()], [\"revokeSponsorshipLowReserve\", xdr[\"void\"]()], [\"revokeSponsorshipOnlyTransferable\", xdr[\"void\"]()], [\"revokeSponsorshipMalformed\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum ClawbackResultCode\n // {\n // // codes considered as \"success\" for the operation\n // CLAWBACK_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // CLAWBACK_MALFORMED = -1,\n // CLAWBACK_NOT_CLAWBACK_ENABLED = -2,\n // CLAWBACK_NO_TRUST = -3,\n // CLAWBACK_UNDERFUNDED = -4\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClawbackResultCode\", {\n clawbackSuccess: 0,\n clawbackMalformed: -1,\n clawbackNotClawbackEnabled: -2,\n clawbackNoTrust: -3,\n clawbackUnderfunded: -4\n });\n\n // === xdr source ============================================================\n //\n // union ClawbackResult switch (ClawbackResultCode code)\n // {\n // case CLAWBACK_SUCCESS:\n // void;\n // case CLAWBACK_MALFORMED:\n // case CLAWBACK_NOT_CLAWBACK_ENABLED:\n // case CLAWBACK_NO_TRUST:\n // case CLAWBACK_UNDERFUNDED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ClawbackResult\", {\n switchOn: xdr.lookup(\"ClawbackResultCode\"),\n switchName: \"code\",\n switches: [[\"clawbackSuccess\", xdr[\"void\"]()], [\"clawbackMalformed\", xdr[\"void\"]()], [\"clawbackNotClawbackEnabled\", xdr[\"void\"]()], [\"clawbackNoTrust\", xdr[\"void\"]()], [\"clawbackUnderfunded\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum ClawbackClaimableBalanceResultCode\n // {\n // // codes considered as \"success\" for the operation\n // CLAWBACK_CLAIMABLE_BALANCE_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST = -1,\n // CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER = -2,\n // CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED = -3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClawbackClaimableBalanceResultCode\", {\n clawbackClaimableBalanceSuccess: 0,\n clawbackClaimableBalanceDoesNotExist: -1,\n clawbackClaimableBalanceNotIssuer: -2,\n clawbackClaimableBalanceNotClawbackEnabled: -3\n });\n\n // === xdr source ============================================================\n //\n // union ClawbackClaimableBalanceResult switch (\n // ClawbackClaimableBalanceResultCode code)\n // {\n // case CLAWBACK_CLAIMABLE_BALANCE_SUCCESS:\n // void;\n // case CLAWBACK_CLAIMABLE_BALANCE_DOES_NOT_EXIST:\n // case CLAWBACK_CLAIMABLE_BALANCE_NOT_ISSUER:\n // case CLAWBACK_CLAIMABLE_BALANCE_NOT_CLAWBACK_ENABLED:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ClawbackClaimableBalanceResult\", {\n switchOn: xdr.lookup(\"ClawbackClaimableBalanceResultCode\"),\n switchName: \"code\",\n switches: [[\"clawbackClaimableBalanceSuccess\", xdr[\"void\"]()], [\"clawbackClaimableBalanceDoesNotExist\", xdr[\"void\"]()], [\"clawbackClaimableBalanceNotIssuer\", xdr[\"void\"]()], [\"clawbackClaimableBalanceNotClawbackEnabled\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum SetTrustLineFlagsResultCode\n // {\n // // codes considered as \"success\" for the operation\n // SET_TRUST_LINE_FLAGS_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // SET_TRUST_LINE_FLAGS_MALFORMED = -1,\n // SET_TRUST_LINE_FLAGS_NO_TRUST_LINE = -2,\n // SET_TRUST_LINE_FLAGS_CANT_REVOKE = -3,\n // SET_TRUST_LINE_FLAGS_INVALID_STATE = -4,\n // SET_TRUST_LINE_FLAGS_LOW_RESERVE = -5 // claimable balances can't be created\n // // on revoke due to low reserves\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SetTrustLineFlagsResultCode\", {\n setTrustLineFlagsSuccess: 0,\n setTrustLineFlagsMalformed: -1,\n setTrustLineFlagsNoTrustLine: -2,\n setTrustLineFlagsCantRevoke: -3,\n setTrustLineFlagsInvalidState: -4,\n setTrustLineFlagsLowReserve: -5\n });\n\n // === xdr source ============================================================\n //\n // union SetTrustLineFlagsResult switch (SetTrustLineFlagsResultCode code)\n // {\n // case SET_TRUST_LINE_FLAGS_SUCCESS:\n // void;\n // case SET_TRUST_LINE_FLAGS_MALFORMED:\n // case SET_TRUST_LINE_FLAGS_NO_TRUST_LINE:\n // case SET_TRUST_LINE_FLAGS_CANT_REVOKE:\n // case SET_TRUST_LINE_FLAGS_INVALID_STATE:\n // case SET_TRUST_LINE_FLAGS_LOW_RESERVE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"SetTrustLineFlagsResult\", {\n switchOn: xdr.lookup(\"SetTrustLineFlagsResultCode\"),\n switchName: \"code\",\n switches: [[\"setTrustLineFlagsSuccess\", xdr[\"void\"]()], [\"setTrustLineFlagsMalformed\", xdr[\"void\"]()], [\"setTrustLineFlagsNoTrustLine\", xdr[\"void\"]()], [\"setTrustLineFlagsCantRevoke\", xdr[\"void\"]()], [\"setTrustLineFlagsInvalidState\", xdr[\"void\"]()], [\"setTrustLineFlagsLowReserve\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum LiquidityPoolDepositResultCode\n // {\n // // codes considered as \"success\" for the operation\n // LIQUIDITY_POOL_DEPOSIT_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // LIQUIDITY_POOL_DEPOSIT_MALFORMED = -1, // bad input\n // LIQUIDITY_POOL_DEPOSIT_NO_TRUST = -2, // no trust line for one of the\n // // assets\n // LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED = -3, // not authorized for one of the\n // // assets\n // LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED = -4, // not enough balance for one of\n // // the assets\n // LIQUIDITY_POOL_DEPOSIT_LINE_FULL = -5, // pool share trust line doesn't\n // // have sufficient limit\n // LIQUIDITY_POOL_DEPOSIT_BAD_PRICE = -6, // deposit price outside bounds\n // LIQUIDITY_POOL_DEPOSIT_POOL_FULL = -7 // pool reserves are full\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LiquidityPoolDepositResultCode\", {\n liquidityPoolDepositSuccess: 0,\n liquidityPoolDepositMalformed: -1,\n liquidityPoolDepositNoTrust: -2,\n liquidityPoolDepositNotAuthorized: -3,\n liquidityPoolDepositUnderfunded: -4,\n liquidityPoolDepositLineFull: -5,\n liquidityPoolDepositBadPrice: -6,\n liquidityPoolDepositPoolFull: -7\n });\n\n // === xdr source ============================================================\n //\n // union LiquidityPoolDepositResult switch (LiquidityPoolDepositResultCode code)\n // {\n // case LIQUIDITY_POOL_DEPOSIT_SUCCESS:\n // void;\n // case LIQUIDITY_POOL_DEPOSIT_MALFORMED:\n // case LIQUIDITY_POOL_DEPOSIT_NO_TRUST:\n // case LIQUIDITY_POOL_DEPOSIT_NOT_AUTHORIZED:\n // case LIQUIDITY_POOL_DEPOSIT_UNDERFUNDED:\n // case LIQUIDITY_POOL_DEPOSIT_LINE_FULL:\n // case LIQUIDITY_POOL_DEPOSIT_BAD_PRICE:\n // case LIQUIDITY_POOL_DEPOSIT_POOL_FULL:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"LiquidityPoolDepositResult\", {\n switchOn: xdr.lookup(\"LiquidityPoolDepositResultCode\"),\n switchName: \"code\",\n switches: [[\"liquidityPoolDepositSuccess\", xdr[\"void\"]()], [\"liquidityPoolDepositMalformed\", xdr[\"void\"]()], [\"liquidityPoolDepositNoTrust\", xdr[\"void\"]()], [\"liquidityPoolDepositNotAuthorized\", xdr[\"void\"]()], [\"liquidityPoolDepositUnderfunded\", xdr[\"void\"]()], [\"liquidityPoolDepositLineFull\", xdr[\"void\"]()], [\"liquidityPoolDepositBadPrice\", xdr[\"void\"]()], [\"liquidityPoolDepositPoolFull\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum LiquidityPoolWithdrawResultCode\n // {\n // // codes considered as \"success\" for the operation\n // LIQUIDITY_POOL_WITHDRAW_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // LIQUIDITY_POOL_WITHDRAW_MALFORMED = -1, // bad input\n // LIQUIDITY_POOL_WITHDRAW_NO_TRUST = -2, // no trust line for one of the\n // // assets\n // LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED = -3, // not enough balance of the\n // // pool share\n // LIQUIDITY_POOL_WITHDRAW_LINE_FULL = -4, // would go above limit for one\n // // of the assets\n // LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM = -5 // didn't withdraw enough\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"LiquidityPoolWithdrawResultCode\", {\n liquidityPoolWithdrawSuccess: 0,\n liquidityPoolWithdrawMalformed: -1,\n liquidityPoolWithdrawNoTrust: -2,\n liquidityPoolWithdrawUnderfunded: -3,\n liquidityPoolWithdrawLineFull: -4,\n liquidityPoolWithdrawUnderMinimum: -5\n });\n\n // === xdr source ============================================================\n //\n // union LiquidityPoolWithdrawResult switch (LiquidityPoolWithdrawResultCode code)\n // {\n // case LIQUIDITY_POOL_WITHDRAW_SUCCESS:\n // void;\n // case LIQUIDITY_POOL_WITHDRAW_MALFORMED:\n // case LIQUIDITY_POOL_WITHDRAW_NO_TRUST:\n // case LIQUIDITY_POOL_WITHDRAW_UNDERFUNDED:\n // case LIQUIDITY_POOL_WITHDRAW_LINE_FULL:\n // case LIQUIDITY_POOL_WITHDRAW_UNDER_MINIMUM:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"LiquidityPoolWithdrawResult\", {\n switchOn: xdr.lookup(\"LiquidityPoolWithdrawResultCode\"),\n switchName: \"code\",\n switches: [[\"liquidityPoolWithdrawSuccess\", xdr[\"void\"]()], [\"liquidityPoolWithdrawMalformed\", xdr[\"void\"]()], [\"liquidityPoolWithdrawNoTrust\", xdr[\"void\"]()], [\"liquidityPoolWithdrawUnderfunded\", xdr[\"void\"]()], [\"liquidityPoolWithdrawLineFull\", xdr[\"void\"]()], [\"liquidityPoolWithdrawUnderMinimum\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum InvokeHostFunctionResultCode\n // {\n // // codes considered as \"success\" for the operation\n // INVOKE_HOST_FUNCTION_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // INVOKE_HOST_FUNCTION_MALFORMED = -1,\n // INVOKE_HOST_FUNCTION_TRAPPED = -2,\n // INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED = -3,\n // INVOKE_HOST_FUNCTION_ENTRY_ARCHIVED = -4,\n // INVOKE_HOST_FUNCTION_INSUFFICIENT_REFUNDABLE_FEE = -5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"InvokeHostFunctionResultCode\", {\n invokeHostFunctionSuccess: 0,\n invokeHostFunctionMalformed: -1,\n invokeHostFunctionTrapped: -2,\n invokeHostFunctionResourceLimitExceeded: -3,\n invokeHostFunctionEntryArchived: -4,\n invokeHostFunctionInsufficientRefundableFee: -5\n });\n\n // === xdr source ============================================================\n //\n // union InvokeHostFunctionResult switch (InvokeHostFunctionResultCode code)\n // {\n // case INVOKE_HOST_FUNCTION_SUCCESS:\n // Hash success; // sha256(InvokeHostFunctionSuccessPreImage)\n // case INVOKE_HOST_FUNCTION_MALFORMED:\n // case INVOKE_HOST_FUNCTION_TRAPPED:\n // case INVOKE_HOST_FUNCTION_RESOURCE_LIMIT_EXCEEDED:\n // case INVOKE_HOST_FUNCTION_ENTRY_ARCHIVED:\n // case INVOKE_HOST_FUNCTION_INSUFFICIENT_REFUNDABLE_FEE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"InvokeHostFunctionResult\", {\n switchOn: xdr.lookup(\"InvokeHostFunctionResultCode\"),\n switchName: \"code\",\n switches: [[\"invokeHostFunctionSuccess\", \"success\"], [\"invokeHostFunctionMalformed\", xdr[\"void\"]()], [\"invokeHostFunctionTrapped\", xdr[\"void\"]()], [\"invokeHostFunctionResourceLimitExceeded\", xdr[\"void\"]()], [\"invokeHostFunctionEntryArchived\", xdr[\"void\"]()], [\"invokeHostFunctionInsufficientRefundableFee\", xdr[\"void\"]()]],\n arms: {\n success: xdr.lookup(\"Hash\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum ExtendFootprintTTLResultCode\n // {\n // // codes considered as \"success\" for the operation\n // EXTEND_FOOTPRINT_TTL_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // EXTEND_FOOTPRINT_TTL_MALFORMED = -1,\n // EXTEND_FOOTPRINT_TTL_RESOURCE_LIMIT_EXCEEDED = -2,\n // EXTEND_FOOTPRINT_TTL_INSUFFICIENT_REFUNDABLE_FEE = -3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ExtendFootprintTtlResultCode\", {\n extendFootprintTtlSuccess: 0,\n extendFootprintTtlMalformed: -1,\n extendFootprintTtlResourceLimitExceeded: -2,\n extendFootprintTtlInsufficientRefundableFee: -3\n });\n\n // === xdr source ============================================================\n //\n // union ExtendFootprintTTLResult switch (ExtendFootprintTTLResultCode code)\n // {\n // case EXTEND_FOOTPRINT_TTL_SUCCESS:\n // void;\n // case EXTEND_FOOTPRINT_TTL_MALFORMED:\n // case EXTEND_FOOTPRINT_TTL_RESOURCE_LIMIT_EXCEEDED:\n // case EXTEND_FOOTPRINT_TTL_INSUFFICIENT_REFUNDABLE_FEE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ExtendFootprintTtlResult\", {\n switchOn: xdr.lookup(\"ExtendFootprintTtlResultCode\"),\n switchName: \"code\",\n switches: [[\"extendFootprintTtlSuccess\", xdr[\"void\"]()], [\"extendFootprintTtlMalformed\", xdr[\"void\"]()], [\"extendFootprintTtlResourceLimitExceeded\", xdr[\"void\"]()], [\"extendFootprintTtlInsufficientRefundableFee\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum RestoreFootprintResultCode\n // {\n // // codes considered as \"success\" for the operation\n // RESTORE_FOOTPRINT_SUCCESS = 0,\n //\n // // codes considered as \"failure\" for the operation\n // RESTORE_FOOTPRINT_MALFORMED = -1,\n // RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED = -2,\n // RESTORE_FOOTPRINT_INSUFFICIENT_REFUNDABLE_FEE = -3\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"RestoreFootprintResultCode\", {\n restoreFootprintSuccess: 0,\n restoreFootprintMalformed: -1,\n restoreFootprintResourceLimitExceeded: -2,\n restoreFootprintInsufficientRefundableFee: -3\n });\n\n // === xdr source ============================================================\n //\n // union RestoreFootprintResult switch (RestoreFootprintResultCode code)\n // {\n // case RESTORE_FOOTPRINT_SUCCESS:\n // void;\n // case RESTORE_FOOTPRINT_MALFORMED:\n // case RESTORE_FOOTPRINT_RESOURCE_LIMIT_EXCEEDED:\n // case RESTORE_FOOTPRINT_INSUFFICIENT_REFUNDABLE_FEE:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"RestoreFootprintResult\", {\n switchOn: xdr.lookup(\"RestoreFootprintResultCode\"),\n switchName: \"code\",\n switches: [[\"restoreFootprintSuccess\", xdr[\"void\"]()], [\"restoreFootprintMalformed\", xdr[\"void\"]()], [\"restoreFootprintResourceLimitExceeded\", xdr[\"void\"]()], [\"restoreFootprintInsufficientRefundableFee\", xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum OperationResultCode\n // {\n // opINNER = 0, // inner object result is valid\n //\n // opBAD_AUTH = -1, // too few valid signatures / wrong network\n // opNO_ACCOUNT = -2, // source account was not found\n // opNOT_SUPPORTED = -3, // operation not supported at this time\n // opTOO_MANY_SUBENTRIES = -4, // max number of subentries already reached\n // opEXCEEDED_WORK_LIMIT = -5, // operation did too much work\n // opTOO_MANY_SPONSORING = -6 // account is sponsoring too many entries\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"OperationResultCode\", {\n opInner: 0,\n opBadAuth: -1,\n opNoAccount: -2,\n opNotSupported: -3,\n opTooManySubentries: -4,\n opExceededWorkLimit: -5,\n opTooManySponsoring: -6\n });\n\n // === xdr source ============================================================\n //\n // union switch (OperationType type)\n // {\n // case CREATE_ACCOUNT:\n // CreateAccountResult createAccountResult;\n // case PAYMENT:\n // PaymentResult paymentResult;\n // case PATH_PAYMENT_STRICT_RECEIVE:\n // PathPaymentStrictReceiveResult pathPaymentStrictReceiveResult;\n // case MANAGE_SELL_OFFER:\n // ManageSellOfferResult manageSellOfferResult;\n // case CREATE_PASSIVE_SELL_OFFER:\n // ManageSellOfferResult createPassiveSellOfferResult;\n // case SET_OPTIONS:\n // SetOptionsResult setOptionsResult;\n // case CHANGE_TRUST:\n // ChangeTrustResult changeTrustResult;\n // case ALLOW_TRUST:\n // AllowTrustResult allowTrustResult;\n // case ACCOUNT_MERGE:\n // AccountMergeResult accountMergeResult;\n // case INFLATION:\n // InflationResult inflationResult;\n // case MANAGE_DATA:\n // ManageDataResult manageDataResult;\n // case BUMP_SEQUENCE:\n // BumpSequenceResult bumpSeqResult;\n // case MANAGE_BUY_OFFER:\n // ManageBuyOfferResult manageBuyOfferResult;\n // case PATH_PAYMENT_STRICT_SEND:\n // PathPaymentStrictSendResult pathPaymentStrictSendResult;\n // case CREATE_CLAIMABLE_BALANCE:\n // CreateClaimableBalanceResult createClaimableBalanceResult;\n // case CLAIM_CLAIMABLE_BALANCE:\n // ClaimClaimableBalanceResult claimClaimableBalanceResult;\n // case BEGIN_SPONSORING_FUTURE_RESERVES:\n // BeginSponsoringFutureReservesResult beginSponsoringFutureReservesResult;\n // case END_SPONSORING_FUTURE_RESERVES:\n // EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;\n // case REVOKE_SPONSORSHIP:\n // RevokeSponsorshipResult revokeSponsorshipResult;\n // case CLAWBACK:\n // ClawbackResult clawbackResult;\n // case CLAWBACK_CLAIMABLE_BALANCE:\n // ClawbackClaimableBalanceResult clawbackClaimableBalanceResult;\n // case SET_TRUST_LINE_FLAGS:\n // SetTrustLineFlagsResult setTrustLineFlagsResult;\n // case LIQUIDITY_POOL_DEPOSIT:\n // LiquidityPoolDepositResult liquidityPoolDepositResult;\n // case LIQUIDITY_POOL_WITHDRAW:\n // LiquidityPoolWithdrawResult liquidityPoolWithdrawResult;\n // case INVOKE_HOST_FUNCTION:\n // InvokeHostFunctionResult invokeHostFunctionResult;\n // case EXTEND_FOOTPRINT_TTL:\n // ExtendFootprintTTLResult extendFootprintTTLResult;\n // case RESTORE_FOOTPRINT:\n // RestoreFootprintResult restoreFootprintResult;\n // }\n //\n // ===========================================================================\n xdr.union(\"OperationResultTr\", {\n switchOn: xdr.lookup(\"OperationType\"),\n switchName: \"type\",\n switches: [[\"createAccount\", \"createAccountResult\"], [\"payment\", \"paymentResult\"], [\"pathPaymentStrictReceive\", \"pathPaymentStrictReceiveResult\"], [\"manageSellOffer\", \"manageSellOfferResult\"], [\"createPassiveSellOffer\", \"createPassiveSellOfferResult\"], [\"setOptions\", \"setOptionsResult\"], [\"changeTrust\", \"changeTrustResult\"], [\"allowTrust\", \"allowTrustResult\"], [\"accountMerge\", \"accountMergeResult\"], [\"inflation\", \"inflationResult\"], [\"manageData\", \"manageDataResult\"], [\"bumpSequence\", \"bumpSeqResult\"], [\"manageBuyOffer\", \"manageBuyOfferResult\"], [\"pathPaymentStrictSend\", \"pathPaymentStrictSendResult\"], [\"createClaimableBalance\", \"createClaimableBalanceResult\"], [\"claimClaimableBalance\", \"claimClaimableBalanceResult\"], [\"beginSponsoringFutureReserves\", \"beginSponsoringFutureReservesResult\"], [\"endSponsoringFutureReserves\", \"endSponsoringFutureReservesResult\"], [\"revokeSponsorship\", \"revokeSponsorshipResult\"], [\"clawback\", \"clawbackResult\"], [\"clawbackClaimableBalance\", \"clawbackClaimableBalanceResult\"], [\"setTrustLineFlags\", \"setTrustLineFlagsResult\"], [\"liquidityPoolDeposit\", \"liquidityPoolDepositResult\"], [\"liquidityPoolWithdraw\", \"liquidityPoolWithdrawResult\"], [\"invokeHostFunction\", \"invokeHostFunctionResult\"], [\"extendFootprintTtl\", \"extendFootprintTtlResult\"], [\"restoreFootprint\", \"restoreFootprintResult\"]],\n arms: {\n createAccountResult: xdr.lookup(\"CreateAccountResult\"),\n paymentResult: xdr.lookup(\"PaymentResult\"),\n pathPaymentStrictReceiveResult: xdr.lookup(\"PathPaymentStrictReceiveResult\"),\n manageSellOfferResult: xdr.lookup(\"ManageSellOfferResult\"),\n createPassiveSellOfferResult: xdr.lookup(\"ManageSellOfferResult\"),\n setOptionsResult: xdr.lookup(\"SetOptionsResult\"),\n changeTrustResult: xdr.lookup(\"ChangeTrustResult\"),\n allowTrustResult: xdr.lookup(\"AllowTrustResult\"),\n accountMergeResult: xdr.lookup(\"AccountMergeResult\"),\n inflationResult: xdr.lookup(\"InflationResult\"),\n manageDataResult: xdr.lookup(\"ManageDataResult\"),\n bumpSeqResult: xdr.lookup(\"BumpSequenceResult\"),\n manageBuyOfferResult: xdr.lookup(\"ManageBuyOfferResult\"),\n pathPaymentStrictSendResult: xdr.lookup(\"PathPaymentStrictSendResult\"),\n createClaimableBalanceResult: xdr.lookup(\"CreateClaimableBalanceResult\"),\n claimClaimableBalanceResult: xdr.lookup(\"ClaimClaimableBalanceResult\"),\n beginSponsoringFutureReservesResult: xdr.lookup(\"BeginSponsoringFutureReservesResult\"),\n endSponsoringFutureReservesResult: xdr.lookup(\"EndSponsoringFutureReservesResult\"),\n revokeSponsorshipResult: xdr.lookup(\"RevokeSponsorshipResult\"),\n clawbackResult: xdr.lookup(\"ClawbackResult\"),\n clawbackClaimableBalanceResult: xdr.lookup(\"ClawbackClaimableBalanceResult\"),\n setTrustLineFlagsResult: xdr.lookup(\"SetTrustLineFlagsResult\"),\n liquidityPoolDepositResult: xdr.lookup(\"LiquidityPoolDepositResult\"),\n liquidityPoolWithdrawResult: xdr.lookup(\"LiquidityPoolWithdrawResult\"),\n invokeHostFunctionResult: xdr.lookup(\"InvokeHostFunctionResult\"),\n extendFootprintTtlResult: xdr.lookup(\"ExtendFootprintTtlResult\"),\n restoreFootprintResult: xdr.lookup(\"RestoreFootprintResult\")\n }\n });\n\n // === xdr source ============================================================\n //\n // union OperationResult switch (OperationResultCode code)\n // {\n // case opINNER:\n // union switch (OperationType type)\n // {\n // case CREATE_ACCOUNT:\n // CreateAccountResult createAccountResult;\n // case PAYMENT:\n // PaymentResult paymentResult;\n // case PATH_PAYMENT_STRICT_RECEIVE:\n // PathPaymentStrictReceiveResult pathPaymentStrictReceiveResult;\n // case MANAGE_SELL_OFFER:\n // ManageSellOfferResult manageSellOfferResult;\n // case CREATE_PASSIVE_SELL_OFFER:\n // ManageSellOfferResult createPassiveSellOfferResult;\n // case SET_OPTIONS:\n // SetOptionsResult setOptionsResult;\n // case CHANGE_TRUST:\n // ChangeTrustResult changeTrustResult;\n // case ALLOW_TRUST:\n // AllowTrustResult allowTrustResult;\n // case ACCOUNT_MERGE:\n // AccountMergeResult accountMergeResult;\n // case INFLATION:\n // InflationResult inflationResult;\n // case MANAGE_DATA:\n // ManageDataResult manageDataResult;\n // case BUMP_SEQUENCE:\n // BumpSequenceResult bumpSeqResult;\n // case MANAGE_BUY_OFFER:\n // ManageBuyOfferResult manageBuyOfferResult;\n // case PATH_PAYMENT_STRICT_SEND:\n // PathPaymentStrictSendResult pathPaymentStrictSendResult;\n // case CREATE_CLAIMABLE_BALANCE:\n // CreateClaimableBalanceResult createClaimableBalanceResult;\n // case CLAIM_CLAIMABLE_BALANCE:\n // ClaimClaimableBalanceResult claimClaimableBalanceResult;\n // case BEGIN_SPONSORING_FUTURE_RESERVES:\n // BeginSponsoringFutureReservesResult beginSponsoringFutureReservesResult;\n // case END_SPONSORING_FUTURE_RESERVES:\n // EndSponsoringFutureReservesResult endSponsoringFutureReservesResult;\n // case REVOKE_SPONSORSHIP:\n // RevokeSponsorshipResult revokeSponsorshipResult;\n // case CLAWBACK:\n // ClawbackResult clawbackResult;\n // case CLAWBACK_CLAIMABLE_BALANCE:\n // ClawbackClaimableBalanceResult clawbackClaimableBalanceResult;\n // case SET_TRUST_LINE_FLAGS:\n // SetTrustLineFlagsResult setTrustLineFlagsResult;\n // case LIQUIDITY_POOL_DEPOSIT:\n // LiquidityPoolDepositResult liquidityPoolDepositResult;\n // case LIQUIDITY_POOL_WITHDRAW:\n // LiquidityPoolWithdrawResult liquidityPoolWithdrawResult;\n // case INVOKE_HOST_FUNCTION:\n // InvokeHostFunctionResult invokeHostFunctionResult;\n // case EXTEND_FOOTPRINT_TTL:\n // ExtendFootprintTTLResult extendFootprintTTLResult;\n // case RESTORE_FOOTPRINT:\n // RestoreFootprintResult restoreFootprintResult;\n // }\n // tr;\n // case opBAD_AUTH:\n // case opNO_ACCOUNT:\n // case opNOT_SUPPORTED:\n // case opTOO_MANY_SUBENTRIES:\n // case opEXCEEDED_WORK_LIMIT:\n // case opTOO_MANY_SPONSORING:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"OperationResult\", {\n switchOn: xdr.lookup(\"OperationResultCode\"),\n switchName: \"code\",\n switches: [[\"opInner\", \"tr\"], [\"opBadAuth\", xdr[\"void\"]()], [\"opNoAccount\", xdr[\"void\"]()], [\"opNotSupported\", xdr[\"void\"]()], [\"opTooManySubentries\", xdr[\"void\"]()], [\"opExceededWorkLimit\", xdr[\"void\"]()], [\"opTooManySponsoring\", xdr[\"void\"]()]],\n arms: {\n tr: xdr.lookup(\"OperationResultTr\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum TransactionResultCode\n // {\n // txFEE_BUMP_INNER_SUCCESS = 1, // fee bump inner transaction succeeded\n // txSUCCESS = 0, // all operations succeeded\n //\n // txFAILED = -1, // one of the operations failed (none were applied)\n //\n // txTOO_EARLY = -2, // ledger closeTime before minTime\n // txTOO_LATE = -3, // ledger closeTime after maxTime\n // txMISSING_OPERATION = -4, // no operation was specified\n // txBAD_SEQ = -5, // sequence number does not match source account\n //\n // txBAD_AUTH = -6, // too few valid signatures / wrong network\n // txINSUFFICIENT_BALANCE = -7, // fee would bring account below reserve\n // txNO_ACCOUNT = -8, // source account not found\n // txINSUFFICIENT_FEE = -9, // fee is too small\n // txBAD_AUTH_EXTRA = -10, // unused signatures attached to transaction\n // txINTERNAL_ERROR = -11, // an unknown error occurred\n //\n // txNOT_SUPPORTED = -12, // transaction type not supported\n // txFEE_BUMP_INNER_FAILED = -13, // fee bump inner transaction failed\n // txBAD_SPONSORSHIP = -14, // sponsorship not confirmed\n // txBAD_MIN_SEQ_AGE_OR_GAP = -15, // minSeqAge or minSeqLedgerGap conditions not met\n // txMALFORMED = -16, // precondition is invalid\n // txSOROBAN_INVALID = -17 // soroban-specific preconditions were not met\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"TransactionResultCode\", {\n txFeeBumpInnerSuccess: 1,\n txSuccess: 0,\n txFailed: -1,\n txTooEarly: -2,\n txTooLate: -3,\n txMissingOperation: -4,\n txBadSeq: -5,\n txBadAuth: -6,\n txInsufficientBalance: -7,\n txNoAccount: -8,\n txInsufficientFee: -9,\n txBadAuthExtra: -10,\n txInternalError: -11,\n txNotSupported: -12,\n txFeeBumpInnerFailed: -13,\n txBadSponsorship: -14,\n txBadMinSeqAgeOrGap: -15,\n txMalformed: -16,\n txSorobanInvalid: -17\n });\n\n // === xdr source ============================================================\n //\n // union switch (TransactionResultCode code)\n // {\n // // txFEE_BUMP_INNER_SUCCESS is not included\n // case txSUCCESS:\n // case txFAILED:\n // OperationResult results<>;\n // case txTOO_EARLY:\n // case txTOO_LATE:\n // case txMISSING_OPERATION:\n // case txBAD_SEQ:\n // case txBAD_AUTH:\n // case txINSUFFICIENT_BALANCE:\n // case txNO_ACCOUNT:\n // case txINSUFFICIENT_FEE:\n // case txBAD_AUTH_EXTRA:\n // case txINTERNAL_ERROR:\n // case txNOT_SUPPORTED:\n // // txFEE_BUMP_INNER_FAILED is not included\n // case txBAD_SPONSORSHIP:\n // case txBAD_MIN_SEQ_AGE_OR_GAP:\n // case txMALFORMED:\n // case txSOROBAN_INVALID:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"InnerTransactionResultResult\", {\n switchOn: xdr.lookup(\"TransactionResultCode\"),\n switchName: \"code\",\n switches: [[\"txSuccess\", \"results\"], [\"txFailed\", \"results\"], [\"txTooEarly\", xdr[\"void\"]()], [\"txTooLate\", xdr[\"void\"]()], [\"txMissingOperation\", xdr[\"void\"]()], [\"txBadSeq\", xdr[\"void\"]()], [\"txBadAuth\", xdr[\"void\"]()], [\"txInsufficientBalance\", xdr[\"void\"]()], [\"txNoAccount\", xdr[\"void\"]()], [\"txInsufficientFee\", xdr[\"void\"]()], [\"txBadAuthExtra\", xdr[\"void\"]()], [\"txInternalError\", xdr[\"void\"]()], [\"txNotSupported\", xdr[\"void\"]()], [\"txBadSponsorship\", xdr[\"void\"]()], [\"txBadMinSeqAgeOrGap\", xdr[\"void\"]()], [\"txMalformed\", xdr[\"void\"]()], [\"txSorobanInvalid\", xdr[\"void\"]()]],\n arms: {\n results: xdr.varArray(xdr.lookup(\"OperationResult\"), 2147483647)\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"InnerTransactionResultExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct InnerTransactionResult\n // {\n // // Always 0. Here for binary compatibility.\n // int64 feeCharged;\n //\n // union switch (TransactionResultCode code)\n // {\n // // txFEE_BUMP_INNER_SUCCESS is not included\n // case txSUCCESS:\n // case txFAILED:\n // OperationResult results<>;\n // case txTOO_EARLY:\n // case txTOO_LATE:\n // case txMISSING_OPERATION:\n // case txBAD_SEQ:\n // case txBAD_AUTH:\n // case txINSUFFICIENT_BALANCE:\n // case txNO_ACCOUNT:\n // case txINSUFFICIENT_FEE:\n // case txBAD_AUTH_EXTRA:\n // case txINTERNAL_ERROR:\n // case txNOT_SUPPORTED:\n // // txFEE_BUMP_INNER_FAILED is not included\n // case txBAD_SPONSORSHIP:\n // case txBAD_MIN_SEQ_AGE_OR_GAP:\n // case txMALFORMED:\n // case txSOROBAN_INVALID:\n // void;\n // }\n // result;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"InnerTransactionResult\", [[\"feeCharged\", xdr.lookup(\"Int64\")], [\"result\", xdr.lookup(\"InnerTransactionResultResult\")], [\"ext\", xdr.lookup(\"InnerTransactionResultExt\")]]);\n\n // === xdr source ============================================================\n //\n // struct InnerTransactionResultPair\n // {\n // Hash transactionHash; // hash of the inner transaction\n // InnerTransactionResult result; // result for the inner transaction\n // };\n //\n // ===========================================================================\n xdr.struct(\"InnerTransactionResultPair\", [[\"transactionHash\", xdr.lookup(\"Hash\")], [\"result\", xdr.lookup(\"InnerTransactionResult\")]]);\n\n // === xdr source ============================================================\n //\n // union switch (TransactionResultCode code)\n // {\n // case txFEE_BUMP_INNER_SUCCESS:\n // case txFEE_BUMP_INNER_FAILED:\n // InnerTransactionResultPair innerResultPair;\n // case txSUCCESS:\n // case txFAILED:\n // OperationResult results<>;\n // case txTOO_EARLY:\n // case txTOO_LATE:\n // case txMISSING_OPERATION:\n // case txBAD_SEQ:\n // case txBAD_AUTH:\n // case txINSUFFICIENT_BALANCE:\n // case txNO_ACCOUNT:\n // case txINSUFFICIENT_FEE:\n // case txBAD_AUTH_EXTRA:\n // case txINTERNAL_ERROR:\n // case txNOT_SUPPORTED:\n // // case txFEE_BUMP_INNER_FAILED: handled above\n // case txBAD_SPONSORSHIP:\n // case txBAD_MIN_SEQ_AGE_OR_GAP:\n // case txMALFORMED:\n // case txSOROBAN_INVALID:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionResultResult\", {\n switchOn: xdr.lookup(\"TransactionResultCode\"),\n switchName: \"code\",\n switches: [[\"txFeeBumpInnerSuccess\", \"innerResultPair\"], [\"txFeeBumpInnerFailed\", \"innerResultPair\"], [\"txSuccess\", \"results\"], [\"txFailed\", \"results\"], [\"txTooEarly\", xdr[\"void\"]()], [\"txTooLate\", xdr[\"void\"]()], [\"txMissingOperation\", xdr[\"void\"]()], [\"txBadSeq\", xdr[\"void\"]()], [\"txBadAuth\", xdr[\"void\"]()], [\"txInsufficientBalance\", xdr[\"void\"]()], [\"txNoAccount\", xdr[\"void\"]()], [\"txInsufficientFee\", xdr[\"void\"]()], [\"txBadAuthExtra\", xdr[\"void\"]()], [\"txInternalError\", xdr[\"void\"]()], [\"txNotSupported\", xdr[\"void\"]()], [\"txBadSponsorship\", xdr[\"void\"]()], [\"txBadMinSeqAgeOrGap\", xdr[\"void\"]()], [\"txMalformed\", xdr[\"void\"]()], [\"txSorobanInvalid\", xdr[\"void\"]()]],\n arms: {\n innerResultPair: xdr.lookup(\"InnerTransactionResultPair\"),\n results: xdr.varArray(xdr.lookup(\"OperationResult\"), 2147483647)\n }\n });\n\n // === xdr source ============================================================\n //\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n //\n // ===========================================================================\n xdr.union(\"TransactionResultExt\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // struct TransactionResult\n // {\n // int64 feeCharged; // actual fee charged for the transaction\n //\n // union switch (TransactionResultCode code)\n // {\n // case txFEE_BUMP_INNER_SUCCESS:\n // case txFEE_BUMP_INNER_FAILED:\n // InnerTransactionResultPair innerResultPair;\n // case txSUCCESS:\n // case txFAILED:\n // OperationResult results<>;\n // case txTOO_EARLY:\n // case txTOO_LATE:\n // case txMISSING_OPERATION:\n // case txBAD_SEQ:\n // case txBAD_AUTH:\n // case txINSUFFICIENT_BALANCE:\n // case txNO_ACCOUNT:\n // case txINSUFFICIENT_FEE:\n // case txBAD_AUTH_EXTRA:\n // case txINTERNAL_ERROR:\n // case txNOT_SUPPORTED:\n // // case txFEE_BUMP_INNER_FAILED: handled above\n // case txBAD_SPONSORSHIP:\n // case txBAD_MIN_SEQ_AGE_OR_GAP:\n // case txMALFORMED:\n // case txSOROBAN_INVALID:\n // void;\n // }\n // result;\n //\n // // reserved for future use\n // union switch (int v)\n // {\n // case 0:\n // void;\n // }\n // ext;\n // };\n //\n // ===========================================================================\n xdr.struct(\"TransactionResult\", [[\"feeCharged\", xdr.lookup(\"Int64\")], [\"result\", xdr.lookup(\"TransactionResultResult\")], [\"ext\", xdr.lookup(\"TransactionResultExt\")]]);\n\n // === xdr source ============================================================\n //\n // typedef opaque Hash[32];\n //\n // ===========================================================================\n xdr.typedef(\"Hash\", xdr.opaque(32));\n\n // === xdr source ============================================================\n //\n // typedef opaque uint256[32];\n //\n // ===========================================================================\n xdr.typedef(\"Uint256\", xdr.opaque(32));\n\n // === xdr source ============================================================\n //\n // typedef unsigned int uint32;\n //\n // ===========================================================================\n xdr.typedef(\"Uint32\", xdr.uint());\n\n // === xdr source ============================================================\n //\n // typedef int int32;\n //\n // ===========================================================================\n xdr.typedef(\"Int32\", xdr[\"int\"]());\n\n // === xdr source ============================================================\n //\n // typedef unsigned hyper uint64;\n //\n // ===========================================================================\n xdr.typedef(\"Uint64\", xdr.uhyper());\n\n // === xdr source ============================================================\n //\n // typedef hyper int64;\n //\n // ===========================================================================\n xdr.typedef(\"Int64\", xdr.hyper());\n\n // === xdr source ============================================================\n //\n // typedef uint64 TimePoint;\n //\n // ===========================================================================\n xdr.typedef(\"TimePoint\", xdr.lookup(\"Uint64\"));\n\n // === xdr source ============================================================\n //\n // typedef uint64 Duration;\n //\n // ===========================================================================\n xdr.typedef(\"Duration\", xdr.lookup(\"Uint64\"));\n\n // === xdr source ============================================================\n //\n // union ExtensionPoint switch (int v)\n // {\n // case 0:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ExtensionPoint\", {\n switchOn: xdr[\"int\"](),\n switchName: \"v\",\n switches: [[0, xdr[\"void\"]()]],\n arms: {}\n });\n\n // === xdr source ============================================================\n //\n // enum CryptoKeyType\n // {\n // KEY_TYPE_ED25519 = 0,\n // KEY_TYPE_PRE_AUTH_TX = 1,\n // KEY_TYPE_HASH_X = 2,\n // KEY_TYPE_ED25519_SIGNED_PAYLOAD = 3,\n // // MUXED enum values for supported type are derived from the enum values\n // // above by ORing them with 0x100\n // KEY_TYPE_MUXED_ED25519 = 0x100\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"CryptoKeyType\", {\n keyTypeEd25519: 0,\n keyTypePreAuthTx: 1,\n keyTypeHashX: 2,\n keyTypeEd25519SignedPayload: 3,\n keyTypeMuxedEd25519: 256\n });\n\n // === xdr source ============================================================\n //\n // enum PublicKeyType\n // {\n // PUBLIC_KEY_TYPE_ED25519 = KEY_TYPE_ED25519\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"PublicKeyType\", {\n publicKeyTypeEd25519: 0\n });\n\n // === xdr source ============================================================\n //\n // enum SignerKeyType\n // {\n // SIGNER_KEY_TYPE_ED25519 = KEY_TYPE_ED25519,\n // SIGNER_KEY_TYPE_PRE_AUTH_TX = KEY_TYPE_PRE_AUTH_TX,\n // SIGNER_KEY_TYPE_HASH_X = KEY_TYPE_HASH_X,\n // SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD = KEY_TYPE_ED25519_SIGNED_PAYLOAD\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"SignerKeyType\", {\n signerKeyTypeEd25519: 0,\n signerKeyTypePreAuthTx: 1,\n signerKeyTypeHashX: 2,\n signerKeyTypeEd25519SignedPayload: 3\n });\n\n // === xdr source ============================================================\n //\n // union PublicKey switch (PublicKeyType type)\n // {\n // case PUBLIC_KEY_TYPE_ED25519:\n // uint256 ed25519;\n // };\n //\n // ===========================================================================\n xdr.union(\"PublicKey\", {\n switchOn: xdr.lookup(\"PublicKeyType\"),\n switchName: \"type\",\n switches: [[\"publicKeyTypeEd25519\", \"ed25519\"]],\n arms: {\n ed25519: xdr.lookup(\"Uint256\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct\n // {\n // /* Public key that must sign the payload. */\n // uint256 ed25519;\n // /* Payload to be raw signed by ed25519. */\n // opaque payload<64>;\n // }\n //\n // ===========================================================================\n xdr.struct(\"SignerKeyEd25519SignedPayload\", [[\"ed25519\", xdr.lookup(\"Uint256\")], [\"payload\", xdr.varOpaque(64)]]);\n\n // === xdr source ============================================================\n //\n // union SignerKey switch (SignerKeyType type)\n // {\n // case SIGNER_KEY_TYPE_ED25519:\n // uint256 ed25519;\n // case SIGNER_KEY_TYPE_PRE_AUTH_TX:\n // /* SHA-256 Hash of TransactionSignaturePayload structure */\n // uint256 preAuthTx;\n // case SIGNER_KEY_TYPE_HASH_X:\n // /* Hash of random 256 bit preimage X */\n // uint256 hashX;\n // case SIGNER_KEY_TYPE_ED25519_SIGNED_PAYLOAD:\n // struct\n // {\n // /* Public key that must sign the payload. */\n // uint256 ed25519;\n // /* Payload to be raw signed by ed25519. */\n // opaque payload<64>;\n // } ed25519SignedPayload;\n // };\n //\n // ===========================================================================\n xdr.union(\"SignerKey\", {\n switchOn: xdr.lookup(\"SignerKeyType\"),\n switchName: \"type\",\n switches: [[\"signerKeyTypeEd25519\", \"ed25519\"], [\"signerKeyTypePreAuthTx\", \"preAuthTx\"], [\"signerKeyTypeHashX\", \"hashX\"], [\"signerKeyTypeEd25519SignedPayload\", \"ed25519SignedPayload\"]],\n arms: {\n ed25519: xdr.lookup(\"Uint256\"),\n preAuthTx: xdr.lookup(\"Uint256\"),\n hashX: xdr.lookup(\"Uint256\"),\n ed25519SignedPayload: xdr.lookup(\"SignerKeyEd25519SignedPayload\")\n }\n });\n\n // === xdr source ============================================================\n //\n // typedef opaque Signature<64>;\n //\n // ===========================================================================\n xdr.typedef(\"Signature\", xdr.varOpaque(64));\n\n // === xdr source ============================================================\n //\n // typedef opaque SignatureHint[4];\n //\n // ===========================================================================\n xdr.typedef(\"SignatureHint\", xdr.opaque(4));\n\n // === xdr source ============================================================\n //\n // typedef PublicKey NodeID;\n //\n // ===========================================================================\n xdr.typedef(\"NodeId\", xdr.lookup(\"PublicKey\"));\n\n // === xdr source ============================================================\n //\n // typedef PublicKey AccountID;\n //\n // ===========================================================================\n xdr.typedef(\"AccountId\", xdr.lookup(\"PublicKey\"));\n\n // === xdr source ============================================================\n //\n // typedef Hash ContractID;\n //\n // ===========================================================================\n xdr.typedef(\"ContractId\", xdr.lookup(\"Hash\"));\n\n // === xdr source ============================================================\n //\n // struct Curve25519Secret\n // {\n // opaque key[32];\n // };\n //\n // ===========================================================================\n xdr.struct(\"Curve25519Secret\", [[\"key\", xdr.opaque(32)]]);\n\n // === xdr source ============================================================\n //\n // struct Curve25519Public\n // {\n // opaque key[32];\n // };\n //\n // ===========================================================================\n xdr.struct(\"Curve25519Public\", [[\"key\", xdr.opaque(32)]]);\n\n // === xdr source ============================================================\n //\n // struct HmacSha256Key\n // {\n // opaque key[32];\n // };\n //\n // ===========================================================================\n xdr.struct(\"HmacSha256Key\", [[\"key\", xdr.opaque(32)]]);\n\n // === xdr source ============================================================\n //\n // struct HmacSha256Mac\n // {\n // opaque mac[32];\n // };\n //\n // ===========================================================================\n xdr.struct(\"HmacSha256Mac\", [[\"mac\", xdr.opaque(32)]]);\n\n // === xdr source ============================================================\n //\n // struct ShortHashSeed\n // {\n // opaque seed[16];\n // };\n //\n // ===========================================================================\n xdr.struct(\"ShortHashSeed\", [[\"seed\", xdr.opaque(16)]]);\n\n // === xdr source ============================================================\n //\n // enum BinaryFuseFilterType\n // {\n // BINARY_FUSE_FILTER_8_BIT = 0,\n // BINARY_FUSE_FILTER_16_BIT = 1,\n // BINARY_FUSE_FILTER_32_BIT = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"BinaryFuseFilterType\", {\n binaryFuseFilter8Bit: 0,\n binaryFuseFilter16Bit: 1,\n binaryFuseFilter32Bit: 2\n });\n\n // === xdr source ============================================================\n //\n // struct SerializedBinaryFuseFilter\n // {\n // BinaryFuseFilterType type;\n //\n // // Seed used to hash input to filter\n // ShortHashSeed inputHashSeed;\n //\n // // Seed used for internal filter hash operations\n // ShortHashSeed filterSeed;\n // uint32 segmentLength;\n // uint32 segementLengthMask;\n // uint32 segmentCount;\n // uint32 segmentCountLength;\n // uint32 fingerprintLength; // Length in terms of element count, not bytes\n //\n // // Array of uint8_t, uint16_t, or uint32_t depending on filter type\n // opaque fingerprints<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"SerializedBinaryFuseFilter\", [[\"type\", xdr.lookup(\"BinaryFuseFilterType\")], [\"inputHashSeed\", xdr.lookup(\"ShortHashSeed\")], [\"filterSeed\", xdr.lookup(\"ShortHashSeed\")], [\"segmentLength\", xdr.lookup(\"Uint32\")], [\"segementLengthMask\", xdr.lookup(\"Uint32\")], [\"segmentCount\", xdr.lookup(\"Uint32\")], [\"segmentCountLength\", xdr.lookup(\"Uint32\")], [\"fingerprintLength\", xdr.lookup(\"Uint32\")], [\"fingerprints\", xdr.varOpaque()]]);\n\n // === xdr source ============================================================\n //\n // typedef Hash PoolID;\n //\n // ===========================================================================\n xdr.typedef(\"PoolId\", xdr.lookup(\"Hash\"));\n\n // === xdr source ============================================================\n //\n // enum ClaimableBalanceIDType\n // {\n // CLAIMABLE_BALANCE_ID_TYPE_V0 = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ClaimableBalanceIdType\", {\n claimableBalanceIdTypeV0: 0\n });\n\n // === xdr source ============================================================\n //\n // union ClaimableBalanceID switch (ClaimableBalanceIDType type)\n // {\n // case CLAIMABLE_BALANCE_ID_TYPE_V0:\n // Hash v0;\n // };\n //\n // ===========================================================================\n xdr.union(\"ClaimableBalanceId\", {\n switchOn: xdr.lookup(\"ClaimableBalanceIdType\"),\n switchName: \"type\",\n switches: [[\"claimableBalanceIdTypeV0\", \"v0\"]],\n arms: {\n v0: xdr.lookup(\"Hash\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum SCValType\n // {\n // SCV_BOOL = 0,\n // SCV_VOID = 1,\n // SCV_ERROR = 2,\n //\n // // 32 bits is the smallest type in WASM or XDR; no need for u8/u16.\n // SCV_U32 = 3,\n // SCV_I32 = 4,\n //\n // // 64 bits is naturally supported by both WASM and XDR also.\n // SCV_U64 = 5,\n // SCV_I64 = 6,\n //\n // // Time-related u64 subtypes with their own functions and formatting.\n // SCV_TIMEPOINT = 7,\n // SCV_DURATION = 8,\n //\n // // 128 bits is naturally supported by Rust and we use it for Soroban\n // // fixed-point arithmetic prices / balances / similar \"quantities\". These\n // // are represented in XDR as a pair of 2 u64s.\n // SCV_U128 = 9,\n // SCV_I128 = 10,\n //\n // // 256 bits is the size of sha256 output, ed25519 keys, and the EVM machine\n // // word, so for interop use we include this even though it requires a small\n // // amount of Rust guest and/or host library code.\n // SCV_U256 = 11,\n // SCV_I256 = 12,\n //\n // // Bytes come in 3 flavors, 2 of which have meaningfully different\n // // formatting and validity-checking / domain-restriction.\n // SCV_BYTES = 13,\n // SCV_STRING = 14,\n // SCV_SYMBOL = 15,\n //\n // // Vecs and maps are just polymorphic containers of other ScVals.\n // SCV_VEC = 16,\n // SCV_MAP = 17,\n //\n // // Address is the universal identifier for contracts and classic\n // // accounts.\n // SCV_ADDRESS = 18,\n //\n // // The following are the internal SCVal variants that are not\n // // exposed to the contracts.\n // SCV_CONTRACT_INSTANCE = 19,\n //\n // // SCV_LEDGER_KEY_CONTRACT_INSTANCE and SCV_LEDGER_KEY_NONCE are unique\n // // symbolic SCVals used as the key for ledger entries for a contract's\n // // instance and an address' nonce, respectively.\n // SCV_LEDGER_KEY_CONTRACT_INSTANCE = 20,\n // SCV_LEDGER_KEY_NONCE = 21\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScValType\", {\n scvBool: 0,\n scvVoid: 1,\n scvError: 2,\n scvU32: 3,\n scvI32: 4,\n scvU64: 5,\n scvI64: 6,\n scvTimepoint: 7,\n scvDuration: 8,\n scvU128: 9,\n scvI128: 10,\n scvU256: 11,\n scvI256: 12,\n scvBytes: 13,\n scvString: 14,\n scvSymbol: 15,\n scvVec: 16,\n scvMap: 17,\n scvAddress: 18,\n scvContractInstance: 19,\n scvLedgerKeyContractInstance: 20,\n scvLedgerKeyNonce: 21\n });\n\n // === xdr source ============================================================\n //\n // enum SCErrorType\n // {\n // SCE_CONTRACT = 0, // Contract-specific, user-defined codes.\n // SCE_WASM_VM = 1, // Errors while interpreting WASM bytecode.\n // SCE_CONTEXT = 2, // Errors in the contract's host context.\n // SCE_STORAGE = 3, // Errors accessing host storage.\n // SCE_OBJECT = 4, // Errors working with host objects.\n // SCE_CRYPTO = 5, // Errors in cryptographic operations.\n // SCE_EVENTS = 6, // Errors while emitting events.\n // SCE_BUDGET = 7, // Errors relating to budget limits.\n // SCE_VALUE = 8, // Errors working with host values or SCVals.\n // SCE_AUTH = 9 // Errors from the authentication subsystem.\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScErrorType\", {\n sceContract: 0,\n sceWasmVm: 1,\n sceContext: 2,\n sceStorage: 3,\n sceObject: 4,\n sceCrypto: 5,\n sceEvents: 6,\n sceBudget: 7,\n sceValue: 8,\n sceAuth: 9\n });\n\n // === xdr source ============================================================\n //\n // enum SCErrorCode\n // {\n // SCEC_ARITH_DOMAIN = 0, // Some arithmetic was undefined (overflow, divide-by-zero).\n // SCEC_INDEX_BOUNDS = 1, // Something was indexed beyond its bounds.\n // SCEC_INVALID_INPUT = 2, // User provided some otherwise-bad data.\n // SCEC_MISSING_VALUE = 3, // Some value was required but not provided.\n // SCEC_EXISTING_VALUE = 4, // Some value was provided where not allowed.\n // SCEC_EXCEEDED_LIMIT = 5, // Some arbitrary limit -- gas or otherwise -- was hit.\n // SCEC_INVALID_ACTION = 6, // Data was valid but action requested was not.\n // SCEC_INTERNAL_ERROR = 7, // The host detected an error in its own logic.\n // SCEC_UNEXPECTED_TYPE = 8, // Some type wasn't as expected.\n // SCEC_UNEXPECTED_SIZE = 9 // Something's size wasn't as expected.\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScErrorCode\", {\n scecArithDomain: 0,\n scecIndexBounds: 1,\n scecInvalidInput: 2,\n scecMissingValue: 3,\n scecExistingValue: 4,\n scecExceededLimit: 5,\n scecInvalidAction: 6,\n scecInternalError: 7,\n scecUnexpectedType: 8,\n scecUnexpectedSize: 9\n });\n\n // === xdr source ============================================================\n //\n // union SCError switch (SCErrorType type)\n // {\n // case SCE_CONTRACT:\n // uint32 contractCode;\n // case SCE_WASM_VM:\n // case SCE_CONTEXT:\n // case SCE_STORAGE:\n // case SCE_OBJECT:\n // case SCE_CRYPTO:\n // case SCE_EVENTS:\n // case SCE_BUDGET:\n // case SCE_VALUE:\n // case SCE_AUTH:\n // SCErrorCode code;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScError\", {\n switchOn: xdr.lookup(\"ScErrorType\"),\n switchName: \"type\",\n switches: [[\"sceContract\", \"contractCode\"], [\"sceWasmVm\", \"code\"], [\"sceContext\", \"code\"], [\"sceStorage\", \"code\"], [\"sceObject\", \"code\"], [\"sceCrypto\", \"code\"], [\"sceEvents\", \"code\"], [\"sceBudget\", \"code\"], [\"sceValue\", \"code\"], [\"sceAuth\", \"code\"]],\n arms: {\n contractCode: xdr.lookup(\"Uint32\"),\n code: xdr.lookup(\"ScErrorCode\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct UInt128Parts {\n // uint64 hi;\n // uint64 lo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"UInt128Parts\", [[\"hi\", xdr.lookup(\"Uint64\")], [\"lo\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // struct Int128Parts {\n // int64 hi;\n // uint64 lo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Int128Parts\", [[\"hi\", xdr.lookup(\"Int64\")], [\"lo\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // struct UInt256Parts {\n // uint64 hi_hi;\n // uint64 hi_lo;\n // uint64 lo_hi;\n // uint64 lo_lo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"UInt256Parts\", [[\"hiHi\", xdr.lookup(\"Uint64\")], [\"hiLo\", xdr.lookup(\"Uint64\")], [\"loHi\", xdr.lookup(\"Uint64\")], [\"loLo\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // struct Int256Parts {\n // int64 hi_hi;\n // uint64 hi_lo;\n // uint64 lo_hi;\n // uint64 lo_lo;\n // };\n //\n // ===========================================================================\n xdr.struct(\"Int256Parts\", [[\"hiHi\", xdr.lookup(\"Int64\")], [\"hiLo\", xdr.lookup(\"Uint64\")], [\"loHi\", xdr.lookup(\"Uint64\")], [\"loLo\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // enum ContractExecutableType\n // {\n // CONTRACT_EXECUTABLE_WASM = 0,\n // CONTRACT_EXECUTABLE_STELLAR_ASSET = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ContractExecutableType\", {\n contractExecutableWasm: 0,\n contractExecutableStellarAsset: 1\n });\n\n // === xdr source ============================================================\n //\n // union ContractExecutable switch (ContractExecutableType type)\n // {\n // case CONTRACT_EXECUTABLE_WASM:\n // Hash wasm_hash;\n // case CONTRACT_EXECUTABLE_STELLAR_ASSET:\n // void;\n // };\n //\n // ===========================================================================\n xdr.union(\"ContractExecutable\", {\n switchOn: xdr.lookup(\"ContractExecutableType\"),\n switchName: \"type\",\n switches: [[\"contractExecutableWasm\", \"wasmHash\"], [\"contractExecutableStellarAsset\", xdr[\"void\"]()]],\n arms: {\n wasmHash: xdr.lookup(\"Hash\")\n }\n });\n\n // === xdr source ============================================================\n //\n // enum SCAddressType\n // {\n // SC_ADDRESS_TYPE_ACCOUNT = 0,\n // SC_ADDRESS_TYPE_CONTRACT = 1,\n // SC_ADDRESS_TYPE_MUXED_ACCOUNT = 2,\n // SC_ADDRESS_TYPE_CLAIMABLE_BALANCE = 3,\n // SC_ADDRESS_TYPE_LIQUIDITY_POOL = 4\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScAddressType\", {\n scAddressTypeAccount: 0,\n scAddressTypeContract: 1,\n scAddressTypeMuxedAccount: 2,\n scAddressTypeClaimableBalance: 3,\n scAddressTypeLiquidityPool: 4\n });\n\n // === xdr source ============================================================\n //\n // struct MuxedEd25519Account\n // {\n // uint64 id;\n // uint256 ed25519;\n // };\n //\n // ===========================================================================\n xdr.struct(\"MuxedEd25519Account\", [[\"id\", xdr.lookup(\"Uint64\")], [\"ed25519\", xdr.lookup(\"Uint256\")]]);\n\n // === xdr source ============================================================\n //\n // union SCAddress switch (SCAddressType type)\n // {\n // case SC_ADDRESS_TYPE_ACCOUNT:\n // AccountID accountId;\n // case SC_ADDRESS_TYPE_CONTRACT:\n // ContractID contractId;\n // case SC_ADDRESS_TYPE_MUXED_ACCOUNT:\n // MuxedEd25519Account muxedAccount;\n // case SC_ADDRESS_TYPE_CLAIMABLE_BALANCE:\n // ClaimableBalanceID claimableBalanceId;\n // case SC_ADDRESS_TYPE_LIQUIDITY_POOL:\n // PoolID liquidityPoolId;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScAddress\", {\n switchOn: xdr.lookup(\"ScAddressType\"),\n switchName: \"type\",\n switches: [[\"scAddressTypeAccount\", \"accountId\"], [\"scAddressTypeContract\", \"contractId\"], [\"scAddressTypeMuxedAccount\", \"muxedAccount\"], [\"scAddressTypeClaimableBalance\", \"claimableBalanceId\"], [\"scAddressTypeLiquidityPool\", \"liquidityPoolId\"]],\n arms: {\n accountId: xdr.lookup(\"AccountId\"),\n contractId: xdr.lookup(\"ContractId\"),\n muxedAccount: xdr.lookup(\"MuxedEd25519Account\"),\n claimableBalanceId: xdr.lookup(\"ClaimableBalanceId\"),\n liquidityPoolId: xdr.lookup(\"PoolId\")\n }\n });\n\n // === xdr source ============================================================\n //\n // const SCSYMBOL_LIMIT = 32;\n //\n // ===========================================================================\n xdr[\"const\"](\"SCSYMBOL_LIMIT\", 32);\n\n // === xdr source ============================================================\n //\n // typedef SCVal SCVec<>;\n //\n // ===========================================================================\n xdr.typedef(\"ScVec\", xdr.varArray(xdr.lookup(\"ScVal\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // typedef SCMapEntry SCMap<>;\n //\n // ===========================================================================\n xdr.typedef(\"ScMap\", xdr.varArray(xdr.lookup(\"ScMapEntry\"), 2147483647));\n\n // === xdr source ============================================================\n //\n // typedef opaque SCBytes<>;\n //\n // ===========================================================================\n xdr.typedef(\"ScBytes\", xdr.varOpaque());\n\n // === xdr source ============================================================\n //\n // typedef string SCString<>;\n //\n // ===========================================================================\n xdr.typedef(\"ScString\", xdr.string());\n\n // === xdr source ============================================================\n //\n // typedef string SCSymbol;\n //\n // ===========================================================================\n xdr.typedef(\"ScSymbol\", xdr.string(SCSYMBOL_LIMIT));\n\n // === xdr source ============================================================\n //\n // struct SCNonceKey {\n // int64 nonce;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScNonceKey\", [[\"nonce\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCContractInstance {\n // ContractExecutable executable;\n // SCMap* storage;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScContractInstance\", [[\"executable\", xdr.lookup(\"ContractExecutable\")], [\"storage\", xdr.option(xdr.lookup(\"ScMap\"))]]);\n\n // === xdr source ============================================================\n //\n // union SCVal switch (SCValType type)\n // {\n //\n // case SCV_BOOL:\n // bool b;\n // case SCV_VOID:\n // void;\n // case SCV_ERROR:\n // SCError error;\n //\n // case SCV_U32:\n // uint32 u32;\n // case SCV_I32:\n // int32 i32;\n //\n // case SCV_U64:\n // uint64 u64;\n // case SCV_I64:\n // int64 i64;\n // case SCV_TIMEPOINT:\n // TimePoint timepoint;\n // case SCV_DURATION:\n // Duration duration;\n //\n // case SCV_U128:\n // UInt128Parts u128;\n // case SCV_I128:\n // Int128Parts i128;\n //\n // case SCV_U256:\n // UInt256Parts u256;\n // case SCV_I256:\n // Int256Parts i256;\n //\n // case SCV_BYTES:\n // SCBytes bytes;\n // case SCV_STRING:\n // SCString str;\n // case SCV_SYMBOL:\n // SCSymbol sym;\n //\n // // Vec and Map are recursive so need to live\n // // behind an option, due to xdrpp limitations.\n // case SCV_VEC:\n // SCVec *vec;\n // case SCV_MAP:\n // SCMap *map;\n //\n // case SCV_ADDRESS:\n // SCAddress address;\n //\n // // Special SCVals reserved for system-constructed contract-data\n // // ledger keys, not generally usable elsewhere.\n // case SCV_CONTRACT_INSTANCE:\n // SCContractInstance instance;\n // case SCV_LEDGER_KEY_CONTRACT_INSTANCE:\n // void;\n // case SCV_LEDGER_KEY_NONCE:\n // SCNonceKey nonce_key;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScVal\", {\n switchOn: xdr.lookup(\"ScValType\"),\n switchName: \"type\",\n switches: [[\"scvBool\", \"b\"], [\"scvVoid\", xdr[\"void\"]()], [\"scvError\", \"error\"], [\"scvU32\", \"u32\"], [\"scvI32\", \"i32\"], [\"scvU64\", \"u64\"], [\"scvI64\", \"i64\"], [\"scvTimepoint\", \"timepoint\"], [\"scvDuration\", \"duration\"], [\"scvU128\", \"u128\"], [\"scvI128\", \"i128\"], [\"scvU256\", \"u256\"], [\"scvI256\", \"i256\"], [\"scvBytes\", \"bytes\"], [\"scvString\", \"str\"], [\"scvSymbol\", \"sym\"], [\"scvVec\", \"vec\"], [\"scvMap\", \"map\"], [\"scvAddress\", \"address\"], [\"scvContractInstance\", \"instance\"], [\"scvLedgerKeyContractInstance\", xdr[\"void\"]()], [\"scvLedgerKeyNonce\", \"nonceKey\"]],\n arms: {\n b: xdr.bool(),\n error: xdr.lookup(\"ScError\"),\n u32: xdr.lookup(\"Uint32\"),\n i32: xdr.lookup(\"Int32\"),\n u64: xdr.lookup(\"Uint64\"),\n i64: xdr.lookup(\"Int64\"),\n timepoint: xdr.lookup(\"TimePoint\"),\n duration: xdr.lookup(\"Duration\"),\n u128: xdr.lookup(\"UInt128Parts\"),\n i128: xdr.lookup(\"Int128Parts\"),\n u256: xdr.lookup(\"UInt256Parts\"),\n i256: xdr.lookup(\"Int256Parts\"),\n bytes: xdr.lookup(\"ScBytes\"),\n str: xdr.lookup(\"ScString\"),\n sym: xdr.lookup(\"ScSymbol\"),\n vec: xdr.option(xdr.lookup(\"ScVec\")),\n map: xdr.option(xdr.lookup(\"ScMap\")),\n address: xdr.lookup(\"ScAddress\"),\n instance: xdr.lookup(\"ScContractInstance\"),\n nonceKey: xdr.lookup(\"ScNonceKey\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SCMapEntry\n // {\n // SCVal key;\n // SCVal val;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScMapEntry\", [[\"key\", xdr.lookup(\"ScVal\")], [\"val\", xdr.lookup(\"ScVal\")]]);\n\n // === xdr source ============================================================\n //\n // enum SCEnvMetaKind\n // {\n // SC_ENV_META_KIND_INTERFACE_VERSION = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScEnvMetaKind\", {\n scEnvMetaKindInterfaceVersion: 0\n });\n\n // === xdr source ============================================================\n //\n // struct {\n // uint32 protocol;\n // uint32 preRelease;\n // }\n //\n // ===========================================================================\n xdr.struct(\"ScEnvMetaEntryInterfaceVersion\", [[\"protocol\", xdr.lookup(\"Uint32\")], [\"preRelease\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // union SCEnvMetaEntry switch (SCEnvMetaKind kind)\n // {\n // case SC_ENV_META_KIND_INTERFACE_VERSION:\n // struct {\n // uint32 protocol;\n // uint32 preRelease;\n // } interfaceVersion;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScEnvMetaEntry\", {\n switchOn: xdr.lookup(\"ScEnvMetaKind\"),\n switchName: \"kind\",\n switches: [[\"scEnvMetaKindInterfaceVersion\", \"interfaceVersion\"]],\n arms: {\n interfaceVersion: xdr.lookup(\"ScEnvMetaEntryInterfaceVersion\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SCMetaV0\n // {\n // string key<>;\n // string val<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScMetaV0\", [[\"key\", xdr.string()], [\"val\", xdr.string()]]);\n\n // === xdr source ============================================================\n //\n // enum SCMetaKind\n // {\n // SC_META_V0 = 0\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScMetaKind\", {\n scMetaV0: 0\n });\n\n // === xdr source ============================================================\n //\n // union SCMetaEntry switch (SCMetaKind kind)\n // {\n // case SC_META_V0:\n // SCMetaV0 v0;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScMetaEntry\", {\n switchOn: xdr.lookup(\"ScMetaKind\"),\n switchName: \"kind\",\n switches: [[\"scMetaV0\", \"v0\"]],\n arms: {\n v0: xdr.lookup(\"ScMetaV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // const SC_SPEC_DOC_LIMIT = 1024;\n //\n // ===========================================================================\n xdr[\"const\"](\"SC_SPEC_DOC_LIMIT\", 1024);\n\n // === xdr source ============================================================\n //\n // enum SCSpecType\n // {\n // SC_SPEC_TYPE_VAL = 0,\n //\n // // Types with no parameters.\n // SC_SPEC_TYPE_BOOL = 1,\n // SC_SPEC_TYPE_VOID = 2,\n // SC_SPEC_TYPE_ERROR = 3,\n // SC_SPEC_TYPE_U32 = 4,\n // SC_SPEC_TYPE_I32 = 5,\n // SC_SPEC_TYPE_U64 = 6,\n // SC_SPEC_TYPE_I64 = 7,\n // SC_SPEC_TYPE_TIMEPOINT = 8,\n // SC_SPEC_TYPE_DURATION = 9,\n // SC_SPEC_TYPE_U128 = 10,\n // SC_SPEC_TYPE_I128 = 11,\n // SC_SPEC_TYPE_U256 = 12,\n // SC_SPEC_TYPE_I256 = 13,\n // SC_SPEC_TYPE_BYTES = 14,\n // SC_SPEC_TYPE_STRING = 16,\n // SC_SPEC_TYPE_SYMBOL = 17,\n // SC_SPEC_TYPE_ADDRESS = 19,\n // SC_SPEC_TYPE_MUXED_ADDRESS = 20,\n //\n // // Types with parameters.\n // SC_SPEC_TYPE_OPTION = 1000,\n // SC_SPEC_TYPE_RESULT = 1001,\n // SC_SPEC_TYPE_VEC = 1002,\n // SC_SPEC_TYPE_MAP = 1004,\n // SC_SPEC_TYPE_TUPLE = 1005,\n // SC_SPEC_TYPE_BYTES_N = 1006,\n //\n // // User defined types.\n // SC_SPEC_TYPE_UDT = 2000\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScSpecType\", {\n scSpecTypeVal: 0,\n scSpecTypeBool: 1,\n scSpecTypeVoid: 2,\n scSpecTypeError: 3,\n scSpecTypeU32: 4,\n scSpecTypeI32: 5,\n scSpecTypeU64: 6,\n scSpecTypeI64: 7,\n scSpecTypeTimepoint: 8,\n scSpecTypeDuration: 9,\n scSpecTypeU128: 10,\n scSpecTypeI128: 11,\n scSpecTypeU256: 12,\n scSpecTypeI256: 13,\n scSpecTypeBytes: 14,\n scSpecTypeString: 16,\n scSpecTypeSymbol: 17,\n scSpecTypeAddress: 19,\n scSpecTypeMuxedAddress: 20,\n scSpecTypeOption: 1000,\n scSpecTypeResult: 1001,\n scSpecTypeVec: 1002,\n scSpecTypeMap: 1004,\n scSpecTypeTuple: 1005,\n scSpecTypeBytesN: 1006,\n scSpecTypeUdt: 2000\n });\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeOption\n // {\n // SCSpecTypeDef valueType;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeOption\", [[\"valueType\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeResult\n // {\n // SCSpecTypeDef okType;\n // SCSpecTypeDef errorType;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeResult\", [[\"okType\", xdr.lookup(\"ScSpecTypeDef\")], [\"errorType\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeVec\n // {\n // SCSpecTypeDef elementType;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeVec\", [[\"elementType\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeMap\n // {\n // SCSpecTypeDef keyType;\n // SCSpecTypeDef valueType;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeMap\", [[\"keyType\", xdr.lookup(\"ScSpecTypeDef\")], [\"valueType\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeTuple\n // {\n // SCSpecTypeDef valueTypes<12>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeTuple\", [[\"valueTypes\", xdr.varArray(xdr.lookup(\"ScSpecTypeDef\"), 12)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeBytesN\n // {\n // uint32 n;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeBytesN\", [[\"n\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecTypeUDT\n // {\n // string name<60>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecTypeUdt\", [[\"name\", xdr.string(60)]]);\n\n // === xdr source ============================================================\n //\n // union SCSpecTypeDef switch (SCSpecType type)\n // {\n // case SC_SPEC_TYPE_VAL:\n // case SC_SPEC_TYPE_BOOL:\n // case SC_SPEC_TYPE_VOID:\n // case SC_SPEC_TYPE_ERROR:\n // case SC_SPEC_TYPE_U32:\n // case SC_SPEC_TYPE_I32:\n // case SC_SPEC_TYPE_U64:\n // case SC_SPEC_TYPE_I64:\n // case SC_SPEC_TYPE_TIMEPOINT:\n // case SC_SPEC_TYPE_DURATION:\n // case SC_SPEC_TYPE_U128:\n // case SC_SPEC_TYPE_I128:\n // case SC_SPEC_TYPE_U256:\n // case SC_SPEC_TYPE_I256:\n // case SC_SPEC_TYPE_BYTES:\n // case SC_SPEC_TYPE_STRING:\n // case SC_SPEC_TYPE_SYMBOL:\n // case SC_SPEC_TYPE_ADDRESS:\n // case SC_SPEC_TYPE_MUXED_ADDRESS:\n // void;\n // case SC_SPEC_TYPE_OPTION:\n // SCSpecTypeOption option;\n // case SC_SPEC_TYPE_RESULT:\n // SCSpecTypeResult result;\n // case SC_SPEC_TYPE_VEC:\n // SCSpecTypeVec vec;\n // case SC_SPEC_TYPE_MAP:\n // SCSpecTypeMap map;\n // case SC_SPEC_TYPE_TUPLE:\n // SCSpecTypeTuple tuple;\n // case SC_SPEC_TYPE_BYTES_N:\n // SCSpecTypeBytesN bytesN;\n // case SC_SPEC_TYPE_UDT:\n // SCSpecTypeUDT udt;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScSpecTypeDef\", {\n switchOn: xdr.lookup(\"ScSpecType\"),\n switchName: \"type\",\n switches: [[\"scSpecTypeVal\", xdr[\"void\"]()], [\"scSpecTypeBool\", xdr[\"void\"]()], [\"scSpecTypeVoid\", xdr[\"void\"]()], [\"scSpecTypeError\", xdr[\"void\"]()], [\"scSpecTypeU32\", xdr[\"void\"]()], [\"scSpecTypeI32\", xdr[\"void\"]()], [\"scSpecTypeU64\", xdr[\"void\"]()], [\"scSpecTypeI64\", xdr[\"void\"]()], [\"scSpecTypeTimepoint\", xdr[\"void\"]()], [\"scSpecTypeDuration\", xdr[\"void\"]()], [\"scSpecTypeU128\", xdr[\"void\"]()], [\"scSpecTypeI128\", xdr[\"void\"]()], [\"scSpecTypeU256\", xdr[\"void\"]()], [\"scSpecTypeI256\", xdr[\"void\"]()], [\"scSpecTypeBytes\", xdr[\"void\"]()], [\"scSpecTypeString\", xdr[\"void\"]()], [\"scSpecTypeSymbol\", xdr[\"void\"]()], [\"scSpecTypeAddress\", xdr[\"void\"]()], [\"scSpecTypeMuxedAddress\", xdr[\"void\"]()], [\"scSpecTypeOption\", \"option\"], [\"scSpecTypeResult\", \"result\"], [\"scSpecTypeVec\", \"vec\"], [\"scSpecTypeMap\", \"map\"], [\"scSpecTypeTuple\", \"tuple\"], [\"scSpecTypeBytesN\", \"bytesN\"], [\"scSpecTypeUdt\", \"udt\"]],\n arms: {\n option: xdr.lookup(\"ScSpecTypeOption\"),\n result: xdr.lookup(\"ScSpecTypeResult\"),\n vec: xdr.lookup(\"ScSpecTypeVec\"),\n map: xdr.lookup(\"ScSpecTypeMap\"),\n tuple: xdr.lookup(\"ScSpecTypeTuple\"),\n bytesN: xdr.lookup(\"ScSpecTypeBytesN\"),\n udt: xdr.lookup(\"ScSpecTypeUdt\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTStructFieldV0\n // {\n // string doc;\n // string name<30>;\n // SCSpecTypeDef type;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtStructFieldV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(30)], [\"type\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTStructV0\n // {\n // string doc;\n // string lib<80>;\n // string name<60>;\n // SCSpecUDTStructFieldV0 fields<40>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtStructV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"lib\", xdr.string(80)], [\"name\", xdr.string(60)], [\"fields\", xdr.varArray(xdr.lookup(\"ScSpecUdtStructFieldV0\"), 40)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTUnionCaseVoidV0\n // {\n // string doc;\n // string name<60>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtUnionCaseVoidV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(60)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTUnionCaseTupleV0\n // {\n // string doc;\n // string name<60>;\n // SCSpecTypeDef type<12>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtUnionCaseTupleV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(60)], [\"type\", xdr.varArray(xdr.lookup(\"ScSpecTypeDef\"), 12)]]);\n\n // === xdr source ============================================================\n //\n // enum SCSpecUDTUnionCaseV0Kind\n // {\n // SC_SPEC_UDT_UNION_CASE_VOID_V0 = 0,\n // SC_SPEC_UDT_UNION_CASE_TUPLE_V0 = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScSpecUdtUnionCaseV0Kind\", {\n scSpecUdtUnionCaseVoidV0: 0,\n scSpecUdtUnionCaseTupleV0: 1\n });\n\n // === xdr source ============================================================\n //\n // union SCSpecUDTUnionCaseV0 switch (SCSpecUDTUnionCaseV0Kind kind)\n // {\n // case SC_SPEC_UDT_UNION_CASE_VOID_V0:\n // SCSpecUDTUnionCaseVoidV0 voidCase;\n // case SC_SPEC_UDT_UNION_CASE_TUPLE_V0:\n // SCSpecUDTUnionCaseTupleV0 tupleCase;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScSpecUdtUnionCaseV0\", {\n switchOn: xdr.lookup(\"ScSpecUdtUnionCaseV0Kind\"),\n switchName: \"kind\",\n switches: [[\"scSpecUdtUnionCaseVoidV0\", \"voidCase\"], [\"scSpecUdtUnionCaseTupleV0\", \"tupleCase\"]],\n arms: {\n voidCase: xdr.lookup(\"ScSpecUdtUnionCaseVoidV0\"),\n tupleCase: xdr.lookup(\"ScSpecUdtUnionCaseTupleV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTUnionV0\n // {\n // string doc;\n // string lib<80>;\n // string name<60>;\n // SCSpecUDTUnionCaseV0 cases<50>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtUnionV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"lib\", xdr.string(80)], [\"name\", xdr.string(60)], [\"cases\", xdr.varArray(xdr.lookup(\"ScSpecUdtUnionCaseV0\"), 50)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTEnumCaseV0\n // {\n // string doc;\n // string name<60>;\n // uint32 value;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtEnumCaseV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(60)], [\"value\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTEnumV0\n // {\n // string doc;\n // string lib<80>;\n // string name<60>;\n // SCSpecUDTEnumCaseV0 cases<50>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtEnumV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"lib\", xdr.string(80)], [\"name\", xdr.string(60)], [\"cases\", xdr.varArray(xdr.lookup(\"ScSpecUdtEnumCaseV0\"), 50)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTErrorEnumCaseV0\n // {\n // string doc;\n // string name<60>;\n // uint32 value;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtErrorEnumCaseV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(60)], [\"value\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecUDTErrorEnumV0\n // {\n // string doc;\n // string lib<80>;\n // string name<60>;\n // SCSpecUDTErrorEnumCaseV0 cases<50>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecUdtErrorEnumV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"lib\", xdr.string(80)], [\"name\", xdr.string(60)], [\"cases\", xdr.varArray(xdr.lookup(\"ScSpecUdtErrorEnumCaseV0\"), 50)]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecFunctionInputV0\n // {\n // string doc;\n // string name<30>;\n // SCSpecTypeDef type;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecFunctionInputV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(30)], [\"type\", xdr.lookup(\"ScSpecTypeDef\")]]);\n\n // === xdr source ============================================================\n //\n // struct SCSpecFunctionV0\n // {\n // string doc;\n // SCSymbol name;\n // SCSpecFunctionInputV0 inputs<10>;\n // SCSpecTypeDef outputs<1>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecFunctionV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.lookup(\"ScSymbol\")], [\"inputs\", xdr.varArray(xdr.lookup(\"ScSpecFunctionInputV0\"), 10)], [\"outputs\", xdr.varArray(xdr.lookup(\"ScSpecTypeDef\"), 1)]]);\n\n // === xdr source ============================================================\n //\n // enum SCSpecEventParamLocationV0\n // {\n // SC_SPEC_EVENT_PARAM_LOCATION_DATA = 0,\n // SC_SPEC_EVENT_PARAM_LOCATION_TOPIC_LIST = 1\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScSpecEventParamLocationV0\", {\n scSpecEventParamLocationData: 0,\n scSpecEventParamLocationTopicList: 1\n });\n\n // === xdr source ============================================================\n //\n // struct SCSpecEventParamV0\n // {\n // string doc;\n // string name<30>;\n // SCSpecTypeDef type;\n // SCSpecEventParamLocationV0 location;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecEventParamV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"name\", xdr.string(30)], [\"type\", xdr.lookup(\"ScSpecTypeDef\")], [\"location\", xdr.lookup(\"ScSpecEventParamLocationV0\")]]);\n\n // === xdr source ============================================================\n //\n // enum SCSpecEventDataFormat\n // {\n // SC_SPEC_EVENT_DATA_FORMAT_SINGLE_VALUE = 0,\n // SC_SPEC_EVENT_DATA_FORMAT_VEC = 1,\n // SC_SPEC_EVENT_DATA_FORMAT_MAP = 2\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScSpecEventDataFormat\", {\n scSpecEventDataFormatSingleValue: 0,\n scSpecEventDataFormatVec: 1,\n scSpecEventDataFormatMap: 2\n });\n\n // === xdr source ============================================================\n //\n // struct SCSpecEventV0\n // {\n // string doc;\n // string lib<80>;\n // SCSymbol name;\n // SCSymbol prefixTopics<2>;\n // SCSpecEventParamV0 params<50>;\n // SCSpecEventDataFormat dataFormat;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ScSpecEventV0\", [[\"doc\", xdr.string(SC_SPEC_DOC_LIMIT)], [\"lib\", xdr.string(80)], [\"name\", xdr.lookup(\"ScSymbol\")], [\"prefixTopics\", xdr.varArray(xdr.lookup(\"ScSymbol\"), 2)], [\"params\", xdr.varArray(xdr.lookup(\"ScSpecEventParamV0\"), 50)], [\"dataFormat\", xdr.lookup(\"ScSpecEventDataFormat\")]]);\n\n // === xdr source ============================================================\n //\n // enum SCSpecEntryKind\n // {\n // SC_SPEC_ENTRY_FUNCTION_V0 = 0,\n // SC_SPEC_ENTRY_UDT_STRUCT_V0 = 1,\n // SC_SPEC_ENTRY_UDT_UNION_V0 = 2,\n // SC_SPEC_ENTRY_UDT_ENUM_V0 = 3,\n // SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0 = 4,\n // SC_SPEC_ENTRY_EVENT_V0 = 5\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ScSpecEntryKind\", {\n scSpecEntryFunctionV0: 0,\n scSpecEntryUdtStructV0: 1,\n scSpecEntryUdtUnionV0: 2,\n scSpecEntryUdtEnumV0: 3,\n scSpecEntryUdtErrorEnumV0: 4,\n scSpecEntryEventV0: 5\n });\n\n // === xdr source ============================================================\n //\n // union SCSpecEntry switch (SCSpecEntryKind kind)\n // {\n // case SC_SPEC_ENTRY_FUNCTION_V0:\n // SCSpecFunctionV0 functionV0;\n // case SC_SPEC_ENTRY_UDT_STRUCT_V0:\n // SCSpecUDTStructV0 udtStructV0;\n // case SC_SPEC_ENTRY_UDT_UNION_V0:\n // SCSpecUDTUnionV0 udtUnionV0;\n // case SC_SPEC_ENTRY_UDT_ENUM_V0:\n // SCSpecUDTEnumV0 udtEnumV0;\n // case SC_SPEC_ENTRY_UDT_ERROR_ENUM_V0:\n // SCSpecUDTErrorEnumV0 udtErrorEnumV0;\n // case SC_SPEC_ENTRY_EVENT_V0:\n // SCSpecEventV0 eventV0;\n // };\n //\n // ===========================================================================\n xdr.union(\"ScSpecEntry\", {\n switchOn: xdr.lookup(\"ScSpecEntryKind\"),\n switchName: \"kind\",\n switches: [[\"scSpecEntryFunctionV0\", \"functionV0\"], [\"scSpecEntryUdtStructV0\", \"udtStructV0\"], [\"scSpecEntryUdtUnionV0\", \"udtUnionV0\"], [\"scSpecEntryUdtEnumV0\", \"udtEnumV0\"], [\"scSpecEntryUdtErrorEnumV0\", \"udtErrorEnumV0\"], [\"scSpecEntryEventV0\", \"eventV0\"]],\n arms: {\n functionV0: xdr.lookup(\"ScSpecFunctionV0\"),\n udtStructV0: xdr.lookup(\"ScSpecUdtStructV0\"),\n udtUnionV0: xdr.lookup(\"ScSpecUdtUnionV0\"),\n udtEnumV0: xdr.lookup(\"ScSpecUdtEnumV0\"),\n udtErrorEnumV0: xdr.lookup(\"ScSpecUdtErrorEnumV0\"),\n eventV0: xdr.lookup(\"ScSpecEventV0\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractExecutionLanesV0\n // {\n // // maximum number of Soroban transactions per ledger\n // uint32 ledgerMaxTxCount;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractExecutionLanesV0\", [[\"ledgerMaxTxCount\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractComputeV0\n // {\n // // Maximum instructions per ledger\n // int64 ledgerMaxInstructions;\n // // Maximum instructions per transaction\n // int64 txMaxInstructions;\n // // Cost of 10000 instructions\n // int64 feeRatePerInstructionsIncrement;\n //\n // // Memory limit per transaction. Unlike instructions, there is no fee\n // // for memory, just the limit.\n // uint32 txMemoryLimit;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractComputeV0\", [[\"ledgerMaxInstructions\", xdr.lookup(\"Int64\")], [\"txMaxInstructions\", xdr.lookup(\"Int64\")], [\"feeRatePerInstructionsIncrement\", xdr.lookup(\"Int64\")], [\"txMemoryLimit\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractParallelComputeV0\n // {\n // // Maximum number of clusters with dependent transactions allowed in a\n // // stage of parallel tx set component.\n // // This effectively sets the lower bound on the number of physical threads\n // // necessary to effectively apply transaction sets in parallel.\n // uint32 ledgerMaxDependentTxClusters;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractParallelComputeV0\", [[\"ledgerMaxDependentTxClusters\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractLedgerCostV0\n // {\n // // Maximum number of disk entry read operations per ledger\n // uint32 ledgerMaxDiskReadEntries;\n // // Maximum number of bytes of disk reads that can be performed per ledger\n // uint32 ledgerMaxDiskReadBytes;\n // // Maximum number of ledger entry write operations per ledger\n // uint32 ledgerMaxWriteLedgerEntries;\n // // Maximum number of bytes that can be written per ledger\n // uint32 ledgerMaxWriteBytes;\n //\n // // Maximum number of disk entry read operations per transaction\n // uint32 txMaxDiskReadEntries;\n // // Maximum number of bytes of disk reads that can be performed per transaction\n // uint32 txMaxDiskReadBytes;\n // // Maximum number of ledger entry write operations per transaction\n // uint32 txMaxWriteLedgerEntries;\n // // Maximum number of bytes that can be written per transaction\n // uint32 txMaxWriteBytes;\n //\n // int64 feeDiskReadLedgerEntry; // Fee per disk ledger entry read\n // int64 feeWriteLedgerEntry; // Fee per ledger entry write\n //\n // int64 feeDiskRead1KB; // Fee for reading 1KB disk\n //\n // // The following parameters determine the write fee per 1KB.\n // // Rent fee grows linearly until soroban state reaches this size\n // int64 sorobanStateTargetSizeBytes;\n // // Fee per 1KB rent when the soroban state is empty\n // int64 rentFee1KBSorobanStateSizeLow;\n // // Fee per 1KB rent when the soroban state has reached `sorobanStateTargetSizeBytes`\n // int64 rentFee1KBSorobanStateSizeHigh;\n // // Rent fee multiplier for any additional data past the first `sorobanStateTargetSizeBytes`\n // uint32 sorobanStateRentFeeGrowthFactor;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractLedgerCostV0\", [[\"ledgerMaxDiskReadEntries\", xdr.lookup(\"Uint32\")], [\"ledgerMaxDiskReadBytes\", xdr.lookup(\"Uint32\")], [\"ledgerMaxWriteLedgerEntries\", xdr.lookup(\"Uint32\")], [\"ledgerMaxWriteBytes\", xdr.lookup(\"Uint32\")], [\"txMaxDiskReadEntries\", xdr.lookup(\"Uint32\")], [\"txMaxDiskReadBytes\", xdr.lookup(\"Uint32\")], [\"txMaxWriteLedgerEntries\", xdr.lookup(\"Uint32\")], [\"txMaxWriteBytes\", xdr.lookup(\"Uint32\")], [\"feeDiskReadLedgerEntry\", xdr.lookup(\"Int64\")], [\"feeWriteLedgerEntry\", xdr.lookup(\"Int64\")], [\"feeDiskRead1Kb\", xdr.lookup(\"Int64\")], [\"sorobanStateTargetSizeBytes\", xdr.lookup(\"Int64\")], [\"rentFee1KbSorobanStateSizeLow\", xdr.lookup(\"Int64\")], [\"rentFee1KbSorobanStateSizeHigh\", xdr.lookup(\"Int64\")], [\"sorobanStateRentFeeGrowthFactor\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractLedgerCostExtV0\n // {\n // // Maximum number of RO+RW entries in the transaction footprint.\n // uint32 txMaxFootprintEntries;\n // // Fee per 1 KB of data written to the ledger.\n // // Unlike the rent fee, this is a flat fee that is charged for any ledger\n // // write, independent of the type of the entry being written.\n // int64 feeWrite1KB;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractLedgerCostExtV0\", [[\"txMaxFootprintEntries\", xdr.lookup(\"Uint32\")], [\"feeWrite1Kb\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractHistoricalDataV0\n // {\n // int64 feeHistorical1KB; // Fee for storing 1KB in archives\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractHistoricalDataV0\", [[\"feeHistorical1Kb\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractEventsV0\n // {\n // // Maximum size of events that a contract call can emit.\n // uint32 txMaxContractEventsSizeBytes;\n // // Fee for generating 1KB of contract events.\n // int64 feeContractEvents1KB;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractEventsV0\", [[\"txMaxContractEventsSizeBytes\", xdr.lookup(\"Uint32\")], [\"feeContractEvents1Kb\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingContractBandwidthV0\n // {\n // // Maximum sum of all transaction sizes in the ledger in bytes\n // uint32 ledgerMaxTxsSizeBytes;\n // // Maximum size in bytes for a transaction\n // uint32 txMaxSizeBytes;\n //\n // // Fee for 1 KB of transaction size\n // int64 feeTxSize1KB;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingContractBandwidthV0\", [[\"ledgerMaxTxsSizeBytes\", xdr.lookup(\"Uint32\")], [\"txMaxSizeBytes\", xdr.lookup(\"Uint32\")], [\"feeTxSize1Kb\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // enum ContractCostType {\n // // Cost of running 1 wasm instruction\n // WasmInsnExec = 0,\n // // Cost of allocating a slice of memory (in bytes)\n // MemAlloc = 1,\n // // Cost of copying a slice of bytes into a pre-allocated memory\n // MemCpy = 2,\n // // Cost of comparing two slices of memory\n // MemCmp = 3,\n // // Cost of a host function dispatch, not including the actual work done by\n // // the function nor the cost of VM invocation machinary\n // DispatchHostFunction = 4,\n // // Cost of visiting a host object from the host object storage. Exists to\n // // make sure some baseline cost coverage, i.e. repeatly visiting objects\n // // by the guest will always incur some charges.\n // VisitObject = 5,\n // // Cost of serializing an xdr object to bytes\n // ValSer = 6,\n // // Cost of deserializing an xdr object from bytes\n // ValDeser = 7,\n // // Cost of computing the sha256 hash from bytes\n // ComputeSha256Hash = 8,\n // // Cost of computing the ed25519 pubkey from bytes\n // ComputeEd25519PubKey = 9,\n // // Cost of verifying ed25519 signature of a payload.\n // VerifyEd25519Sig = 10,\n // // Cost of instantiation a VM from wasm bytes code.\n // VmInstantiation = 11,\n // // Cost of instantiation a VM from a cached state.\n // VmCachedInstantiation = 12,\n // // Cost of invoking a function on the VM. If the function is a host function,\n // // additional cost will be covered by `DispatchHostFunction`.\n // InvokeVmFunction = 13,\n // // Cost of computing a keccak256 hash from bytes.\n // ComputeKeccak256Hash = 14,\n // // Cost of decoding an ECDSA signature computed from a 256-bit prime modulus\n // // curve (e.g. secp256k1 and secp256r1)\n // DecodeEcdsaCurve256Sig = 15,\n // // Cost of recovering an ECDSA secp256k1 key from a signature.\n // RecoverEcdsaSecp256k1Key = 16,\n // // Cost of int256 addition (`+`) and subtraction (`-`) operations\n // Int256AddSub = 17,\n // // Cost of int256 multiplication (`*`) operation\n // Int256Mul = 18,\n // // Cost of int256 division (`/`) operation\n // Int256Div = 19,\n // // Cost of int256 power (`exp`) operation\n // Int256Pow = 20,\n // // Cost of int256 shift (`shl`, `shr`) operation\n // Int256Shift = 21,\n // // Cost of drawing random bytes using a ChaCha20 PRNG\n // ChaCha20DrawBytes = 22,\n //\n // // Cost of parsing wasm bytes that only encode instructions.\n // ParseWasmInstructions = 23,\n // // Cost of parsing a known number of wasm functions.\n // ParseWasmFunctions = 24,\n // // Cost of parsing a known number of wasm globals.\n // ParseWasmGlobals = 25,\n // // Cost of parsing a known number of wasm table entries.\n // ParseWasmTableEntries = 26,\n // // Cost of parsing a known number of wasm types.\n // ParseWasmTypes = 27,\n // // Cost of parsing a known number of wasm data segments.\n // ParseWasmDataSegments = 28,\n // // Cost of parsing a known number of wasm element segments.\n // ParseWasmElemSegments = 29,\n // // Cost of parsing a known number of wasm imports.\n // ParseWasmImports = 30,\n // // Cost of parsing a known number of wasm exports.\n // ParseWasmExports = 31,\n // // Cost of parsing a known number of data segment bytes.\n // ParseWasmDataSegmentBytes = 32,\n //\n // // Cost of instantiating wasm bytes that only encode instructions.\n // InstantiateWasmInstructions = 33,\n // // Cost of instantiating a known number of wasm functions.\n // InstantiateWasmFunctions = 34,\n // // Cost of instantiating a known number of wasm globals.\n // InstantiateWasmGlobals = 35,\n // // Cost of instantiating a known number of wasm table entries.\n // InstantiateWasmTableEntries = 36,\n // // Cost of instantiating a known number of wasm types.\n // InstantiateWasmTypes = 37,\n // // Cost of instantiating a known number of wasm data segments.\n // InstantiateWasmDataSegments = 38,\n // // Cost of instantiating a known number of wasm element segments.\n // InstantiateWasmElemSegments = 39,\n // // Cost of instantiating a known number of wasm imports.\n // InstantiateWasmImports = 40,\n // // Cost of instantiating a known number of wasm exports.\n // InstantiateWasmExports = 41,\n // // Cost of instantiating a known number of data segment bytes.\n // InstantiateWasmDataSegmentBytes = 42,\n //\n // // Cost of decoding a bytes array representing an uncompressed SEC-1 encoded\n // // point on a 256-bit elliptic curve\n // Sec1DecodePointUncompressed = 43,\n // // Cost of verifying an ECDSA Secp256r1 signature\n // VerifyEcdsaSecp256r1Sig = 44,\n //\n // // Cost of encoding a BLS12-381 Fp (base field element)\n // Bls12381EncodeFp = 45,\n // // Cost of decoding a BLS12-381 Fp (base field element)\n // Bls12381DecodeFp = 46,\n // // Cost of checking a G1 point lies on the curve\n // Bls12381G1CheckPointOnCurve = 47,\n // // Cost of checking a G1 point belongs to the correct subgroup\n // Bls12381G1CheckPointInSubgroup = 48,\n // // Cost of checking a G2 point lies on the curve\n // Bls12381G2CheckPointOnCurve = 49,\n // // Cost of checking a G2 point belongs to the correct subgroup\n // Bls12381G2CheckPointInSubgroup = 50,\n // // Cost of converting a BLS12-381 G1 point from projective to affine coordinates\n // Bls12381G1ProjectiveToAffine = 51,\n // // Cost of converting a BLS12-381 G2 point from projective to affine coordinates\n // Bls12381G2ProjectiveToAffine = 52,\n // // Cost of performing BLS12-381 G1 point addition\n // Bls12381G1Add = 53,\n // // Cost of performing BLS12-381 G1 scalar multiplication\n // Bls12381G1Mul = 54,\n // // Cost of performing BLS12-381 G1 multi-scalar multiplication (MSM)\n // Bls12381G1Msm = 55,\n // // Cost of mapping a BLS12-381 Fp field element to a G1 point\n // Bls12381MapFpToG1 = 56,\n // // Cost of hashing to a BLS12-381 G1 point\n // Bls12381HashToG1 = 57,\n // // Cost of performing BLS12-381 G2 point addition\n // Bls12381G2Add = 58,\n // // Cost of performing BLS12-381 G2 scalar multiplication\n // Bls12381G2Mul = 59,\n // // Cost of performing BLS12-381 G2 multi-scalar multiplication (MSM)\n // Bls12381G2Msm = 60,\n // // Cost of mapping a BLS12-381 Fp2 field element to a G2 point\n // Bls12381MapFp2ToG2 = 61,\n // // Cost of hashing to a BLS12-381 G2 point\n // Bls12381HashToG2 = 62,\n // // Cost of performing BLS12-381 pairing operation\n // Bls12381Pairing = 63,\n // // Cost of converting a BLS12-381 scalar element from U256\n // Bls12381FrFromU256 = 64,\n // // Cost of converting a BLS12-381 scalar element to U256\n // Bls12381FrToU256 = 65,\n // // Cost of performing BLS12-381 scalar element addition/subtraction\n // Bls12381FrAddSub = 66,\n // // Cost of performing BLS12-381 scalar element multiplication\n // Bls12381FrMul = 67,\n // // Cost of performing BLS12-381 scalar element exponentiation\n // Bls12381FrPow = 68,\n // // Cost of performing BLS12-381 scalar element inversion\n // Bls12381FrInv = 69\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ContractCostType\", {\n wasmInsnExec: 0,\n memAlloc: 1,\n memCpy: 2,\n memCmp: 3,\n dispatchHostFunction: 4,\n visitObject: 5,\n valSer: 6,\n valDeser: 7,\n computeSha256Hash: 8,\n computeEd25519PubKey: 9,\n verifyEd25519Sig: 10,\n vmInstantiation: 11,\n vmCachedInstantiation: 12,\n invokeVmFunction: 13,\n computeKeccak256Hash: 14,\n decodeEcdsaCurve256Sig: 15,\n recoverEcdsaSecp256k1Key: 16,\n int256AddSub: 17,\n int256Mul: 18,\n int256Div: 19,\n int256Pow: 20,\n int256Shift: 21,\n chaCha20DrawBytes: 22,\n parseWasmInstructions: 23,\n parseWasmFunctions: 24,\n parseWasmGlobals: 25,\n parseWasmTableEntries: 26,\n parseWasmTypes: 27,\n parseWasmDataSegments: 28,\n parseWasmElemSegments: 29,\n parseWasmImports: 30,\n parseWasmExports: 31,\n parseWasmDataSegmentBytes: 32,\n instantiateWasmInstructions: 33,\n instantiateWasmFunctions: 34,\n instantiateWasmGlobals: 35,\n instantiateWasmTableEntries: 36,\n instantiateWasmTypes: 37,\n instantiateWasmDataSegments: 38,\n instantiateWasmElemSegments: 39,\n instantiateWasmImports: 40,\n instantiateWasmExports: 41,\n instantiateWasmDataSegmentBytes: 42,\n sec1DecodePointUncompressed: 43,\n verifyEcdsaSecp256r1Sig: 44,\n bls12381EncodeFp: 45,\n bls12381DecodeFp: 46,\n bls12381G1CheckPointOnCurve: 47,\n bls12381G1CheckPointInSubgroup: 48,\n bls12381G2CheckPointOnCurve: 49,\n bls12381G2CheckPointInSubgroup: 50,\n bls12381G1ProjectiveToAffine: 51,\n bls12381G2ProjectiveToAffine: 52,\n bls12381G1Add: 53,\n bls12381G1Mul: 54,\n bls12381G1Msm: 55,\n bls12381MapFpToG1: 56,\n bls12381HashToG1: 57,\n bls12381G2Add: 58,\n bls12381G2Mul: 59,\n bls12381G2Msm: 60,\n bls12381MapFp2ToG2: 61,\n bls12381HashToG2: 62,\n bls12381Pairing: 63,\n bls12381FrFromU256: 64,\n bls12381FrToU256: 65,\n bls12381FrAddSub: 66,\n bls12381FrMul: 67,\n bls12381FrPow: 68,\n bls12381FrInv: 69\n });\n\n // === xdr source ============================================================\n //\n // struct ContractCostParamEntry {\n // // use `ext` to add more terms (e.g. higher order polynomials) in the future\n // ExtensionPoint ext;\n //\n // int64 constTerm;\n // int64 linearTerm;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ContractCostParamEntry\", [[\"ext\", xdr.lookup(\"ExtensionPoint\")], [\"constTerm\", xdr.lookup(\"Int64\")], [\"linearTerm\", xdr.lookup(\"Int64\")]]);\n\n // === xdr source ============================================================\n //\n // struct StateArchivalSettings {\n // uint32 maxEntryTTL;\n // uint32 minTemporaryTTL;\n // uint32 minPersistentTTL;\n //\n // // rent_fee = wfee_rate_average / rent_rate_denominator_for_type\n // int64 persistentRentRateDenominator;\n // int64 tempRentRateDenominator;\n //\n // // max number of entries that emit archival meta in a single ledger\n // uint32 maxEntriesToArchive;\n //\n // // Number of snapshots to use when calculating average live Soroban State size\n // uint32 liveSorobanStateSizeWindowSampleSize;\n //\n // // How often to sample the live Soroban State size for the average, in ledgers\n // uint32 liveSorobanStateSizeWindowSamplePeriod;\n //\n // // Maximum number of bytes that we scan for eviction per ledger\n // uint32 evictionScanSize;\n //\n // // Lowest BucketList level to be scanned to evict entries\n // uint32 startingEvictionScanLevel;\n // };\n //\n // ===========================================================================\n xdr.struct(\"StateArchivalSettings\", [[\"maxEntryTtl\", xdr.lookup(\"Uint32\")], [\"minTemporaryTtl\", xdr.lookup(\"Uint32\")], [\"minPersistentTtl\", xdr.lookup(\"Uint32\")], [\"persistentRentRateDenominator\", xdr.lookup(\"Int64\")], [\"tempRentRateDenominator\", xdr.lookup(\"Int64\")], [\"maxEntriesToArchive\", xdr.lookup(\"Uint32\")], [\"liveSorobanStateSizeWindowSampleSize\", xdr.lookup(\"Uint32\")], [\"liveSorobanStateSizeWindowSamplePeriod\", xdr.lookup(\"Uint32\")], [\"evictionScanSize\", xdr.lookup(\"Uint32\")], [\"startingEvictionScanLevel\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // struct EvictionIterator {\n // uint32 bucketListLevel;\n // bool isCurrBucket;\n // uint64 bucketFileOffset;\n // };\n //\n // ===========================================================================\n xdr.struct(\"EvictionIterator\", [[\"bucketListLevel\", xdr.lookup(\"Uint32\")], [\"isCurrBucket\", xdr.bool()], [\"bucketFileOffset\", xdr.lookup(\"Uint64\")]]);\n\n // === xdr source ============================================================\n //\n // struct ConfigSettingSCPTiming {\n // uint32 ledgerTargetCloseTimeMilliseconds;\n // uint32 nominationTimeoutInitialMilliseconds;\n // uint32 nominationTimeoutIncrementMilliseconds;\n // uint32 ballotTimeoutInitialMilliseconds;\n // uint32 ballotTimeoutIncrementMilliseconds;\n // };\n //\n // ===========================================================================\n xdr.struct(\"ConfigSettingScpTiming\", [[\"ledgerTargetCloseTimeMilliseconds\", xdr.lookup(\"Uint32\")], [\"nominationTimeoutInitialMilliseconds\", xdr.lookup(\"Uint32\")], [\"nominationTimeoutIncrementMilliseconds\", xdr.lookup(\"Uint32\")], [\"ballotTimeoutInitialMilliseconds\", xdr.lookup(\"Uint32\")], [\"ballotTimeoutIncrementMilliseconds\", xdr.lookup(\"Uint32\")]]);\n\n // === xdr source ============================================================\n //\n // const CONTRACT_COST_COUNT_LIMIT = 1024;\n //\n // ===========================================================================\n xdr[\"const\"](\"CONTRACT_COST_COUNT_LIMIT\", 1024);\n\n // === xdr source ============================================================\n //\n // typedef ContractCostParamEntry ContractCostParams;\n //\n // ===========================================================================\n xdr.typedef(\"ContractCostParams\", xdr.varArray(xdr.lookup(\"ContractCostParamEntry\"), xdr.lookup(\"CONTRACT_COST_COUNT_LIMIT\")));\n\n // === xdr source ============================================================\n //\n // enum ConfigSettingID\n // {\n // CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES = 0,\n // CONFIG_SETTING_CONTRACT_COMPUTE_V0 = 1,\n // CONFIG_SETTING_CONTRACT_LEDGER_COST_V0 = 2,\n // CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0 = 3,\n // CONFIG_SETTING_CONTRACT_EVENTS_V0 = 4,\n // CONFIG_SETTING_CONTRACT_BANDWIDTH_V0 = 5,\n // CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS = 6,\n // CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES = 7,\n // CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES = 8,\n // CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES = 9,\n // CONFIG_SETTING_STATE_ARCHIVAL = 10,\n // CONFIG_SETTING_CONTRACT_EXECUTION_LANES = 11,\n // CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW = 12,\n // CONFIG_SETTING_EVICTION_ITERATOR = 13,\n // CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0 = 14,\n // CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0 = 15,\n // CONFIG_SETTING_SCP_TIMING = 16\n // };\n //\n // ===========================================================================\n xdr[\"enum\"](\"ConfigSettingId\", {\n configSettingContractMaxSizeBytes: 0,\n configSettingContractComputeV0: 1,\n configSettingContractLedgerCostV0: 2,\n configSettingContractHistoricalDataV0: 3,\n configSettingContractEventsV0: 4,\n configSettingContractBandwidthV0: 5,\n configSettingContractCostParamsCpuInstructions: 6,\n configSettingContractCostParamsMemoryBytes: 7,\n configSettingContractDataKeySizeBytes: 8,\n configSettingContractDataEntrySizeBytes: 9,\n configSettingStateArchival: 10,\n configSettingContractExecutionLanes: 11,\n configSettingLiveSorobanStateSizeWindow: 12,\n configSettingEvictionIterator: 13,\n configSettingContractParallelComputeV0: 14,\n configSettingContractLedgerCostExtV0: 15,\n configSettingScpTiming: 16\n });\n\n // === xdr source ============================================================\n //\n // union ConfigSettingEntry switch (ConfigSettingID configSettingID)\n // {\n // case CONFIG_SETTING_CONTRACT_MAX_SIZE_BYTES:\n // uint32 contractMaxSizeBytes;\n // case CONFIG_SETTING_CONTRACT_COMPUTE_V0:\n // ConfigSettingContractComputeV0 contractCompute;\n // case CONFIG_SETTING_CONTRACT_LEDGER_COST_V0:\n // ConfigSettingContractLedgerCostV0 contractLedgerCost;\n // case CONFIG_SETTING_CONTRACT_HISTORICAL_DATA_V0:\n // ConfigSettingContractHistoricalDataV0 contractHistoricalData;\n // case CONFIG_SETTING_CONTRACT_EVENTS_V0:\n // ConfigSettingContractEventsV0 contractEvents;\n // case CONFIG_SETTING_CONTRACT_BANDWIDTH_V0:\n // ConfigSettingContractBandwidthV0 contractBandwidth;\n // case CONFIG_SETTING_CONTRACT_COST_PARAMS_CPU_INSTRUCTIONS:\n // ContractCostParams contractCostParamsCpuInsns;\n // case CONFIG_SETTING_CONTRACT_COST_PARAMS_MEMORY_BYTES:\n // ContractCostParams contractCostParamsMemBytes;\n // case CONFIG_SETTING_CONTRACT_DATA_KEY_SIZE_BYTES:\n // uint32 contractDataKeySizeBytes;\n // case CONFIG_SETTING_CONTRACT_DATA_ENTRY_SIZE_BYTES:\n // uint32 contractDataEntrySizeBytes;\n // case CONFIG_SETTING_STATE_ARCHIVAL:\n // StateArchivalSettings stateArchivalSettings;\n // case CONFIG_SETTING_CONTRACT_EXECUTION_LANES:\n // ConfigSettingContractExecutionLanesV0 contractExecutionLanes;\n // case CONFIG_SETTING_LIVE_SOROBAN_STATE_SIZE_WINDOW:\n // uint64 liveSorobanStateSizeWindow<>;\n // case CONFIG_SETTING_EVICTION_ITERATOR:\n // EvictionIterator evictionIterator;\n // case CONFIG_SETTING_CONTRACT_PARALLEL_COMPUTE_V0:\n // ConfigSettingContractParallelComputeV0 contractParallelCompute;\n // case CONFIG_SETTING_CONTRACT_LEDGER_COST_EXT_V0:\n // ConfigSettingContractLedgerCostExtV0 contractLedgerCostExt;\n // case CONFIG_SETTING_SCP_TIMING:\n // ConfigSettingSCPTiming contractSCPTiming;\n // };\n //\n // ===========================================================================\n xdr.union(\"ConfigSettingEntry\", {\n switchOn: xdr.lookup(\"ConfigSettingId\"),\n switchName: \"configSettingId\",\n switches: [[\"configSettingContractMaxSizeBytes\", \"contractMaxSizeBytes\"], [\"configSettingContractComputeV0\", \"contractCompute\"], [\"configSettingContractLedgerCostV0\", \"contractLedgerCost\"], [\"configSettingContractHistoricalDataV0\", \"contractHistoricalData\"], [\"configSettingContractEventsV0\", \"contractEvents\"], [\"configSettingContractBandwidthV0\", \"contractBandwidth\"], [\"configSettingContractCostParamsCpuInstructions\", \"contractCostParamsCpuInsns\"], [\"configSettingContractCostParamsMemoryBytes\", \"contractCostParamsMemBytes\"], [\"configSettingContractDataKeySizeBytes\", \"contractDataKeySizeBytes\"], [\"configSettingContractDataEntrySizeBytes\", \"contractDataEntrySizeBytes\"], [\"configSettingStateArchival\", \"stateArchivalSettings\"], [\"configSettingContractExecutionLanes\", \"contractExecutionLanes\"], [\"configSettingLiveSorobanStateSizeWindow\", \"liveSorobanStateSizeWindow\"], [\"configSettingEvictionIterator\", \"evictionIterator\"], [\"configSettingContractParallelComputeV0\", \"contractParallelCompute\"], [\"configSettingContractLedgerCostExtV0\", \"contractLedgerCostExt\"], [\"configSettingScpTiming\", \"contractScpTiming\"]],\n arms: {\n contractMaxSizeBytes: xdr.lookup(\"Uint32\"),\n contractCompute: xdr.lookup(\"ConfigSettingContractComputeV0\"),\n contractLedgerCost: xdr.lookup(\"ConfigSettingContractLedgerCostV0\"),\n contractHistoricalData: xdr.lookup(\"ConfigSettingContractHistoricalDataV0\"),\n contractEvents: xdr.lookup(\"ConfigSettingContractEventsV0\"),\n contractBandwidth: xdr.lookup(\"ConfigSettingContractBandwidthV0\"),\n contractCostParamsCpuInsns: xdr.lookup(\"ContractCostParams\"),\n contractCostParamsMemBytes: xdr.lookup(\"ContractCostParams\"),\n contractDataKeySizeBytes: xdr.lookup(\"Uint32\"),\n contractDataEntrySizeBytes: xdr.lookup(\"Uint32\"),\n stateArchivalSettings: xdr.lookup(\"StateArchivalSettings\"),\n contractExecutionLanes: xdr.lookup(\"ConfigSettingContractExecutionLanesV0\"),\n liveSorobanStateSizeWindow: xdr.varArray(xdr.lookup(\"Uint64\"), 2147483647),\n evictionIterator: xdr.lookup(\"EvictionIterator\"),\n contractParallelCompute: xdr.lookup(\"ConfigSettingContractParallelComputeV0\"),\n contractLedgerCostExt: xdr.lookup(\"ConfigSettingContractLedgerCostExtV0\"),\n contractScpTiming: xdr.lookup(\"ConfigSettingScpTiming\")\n }\n });\n\n // === xdr source ============================================================\n //\n // struct LedgerCloseMetaBatch\n // {\n // // starting ledger sequence number in the batch\n // uint32 startSequence;\n //\n // // ending ledger sequence number in the batch\n // uint32 endSequence;\n //\n // // Ledger close meta for each ledger within the batch\n // LedgerCloseMeta ledgerCloseMetas<>;\n // };\n //\n // ===========================================================================\n xdr.struct(\"LedgerCloseMetaBatch\", [[\"startSequence\", xdr.lookup(\"Uint32\")], [\"endSequence\", xdr.lookup(\"Uint32\")], [\"ledgerCloseMeta\", xdr.varArray(xdr.lookup(\"LedgerCloseMeta\"), 2147483647)]]);\n});\nvar _default = exports[\"default\"] = types;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _curr_generated = _interopRequireDefault(require(\"./generated/curr_generated\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nvar _default = exports[\"default\"] = _curr_generated[\"default\"];", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar cereal = {\n XdrWriter: _jsXdr.XdrWriter,\n XdrReader: _jsXdr.XdrReader\n};\nvar _default = exports[\"default\"] = cereal;", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n", "'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n", "'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\tif (descriptor && descriptor.get) {\n\t\t\t\tvar bound = callBind(descriptor.get);\n\t\t\t\tcache[\n\t\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t\t] = bound;\n\t\t\t}\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tvar bound = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = bound;\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n", "'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: import('.').TypedArray) => Buffer)} */\nvar $typedArrayBuffer = callBound('TypedArray.prototype.buffer', true);\n\nvar isTypedArray = require('is-typed-array');\n\n/** @type {import('.')} */\n// node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter\nmodule.exports = $typedArrayBuffer || function typedArrayBuffer(x) {\n\tif (!isTypedArray(x)) {\n\t\tthrow new $TypeError('Not a Typed Array');\n\t}\n\treturn x.buffer;\n};\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar isArray = require('isarray');\nvar typedArrayBuffer = require('typed-array-buffer');\n\nvar isView = ArrayBuffer.isView || function isView(obj) {\n\ttry {\n\t\ttypedArrayBuffer(obj);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined';\nvar useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nmodule.exports = function toBuffer(data, encoding) {\n\tif (Buffer.isBuffer(data)) {\n\t\tif (data.constructor && !('isBuffer' in data)) {\n\t\t\t// probably a SlowBuffer\n\t\t\treturn Buffer.from(data);\n\t\t}\n\t\treturn data;\n\t}\n\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\t// When Buffer is based on Uint8Array, we can just construct it from ArrayBuffer\n\t\tif (useFromArrayBuffer) {\n\t\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t\t/*\n\t\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t\t * We just go to Uint8Array case if this fails\n\t\t\t */\n\t\t\tif (res.byteLength === data.byteLength) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\t// Convert to Uint8Array bytes and then to Buffer\n\t\tvar uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tvar result = Buffer.from(uint8);\n\n\t\t/*\n\t\t * Let's recheck that conversion succeeded\n\t\t * We have .length but not .byteLength when useFromArrayBuffer is false\n\t\t */\n\t\tif (result.length === data.byteLength) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tvar isArr = isArray(data);\n\tif (isArr) {\n\t\tfor (var i = 0; i < data.length; i += 1) {\n\t\t\tvar x = data[i];\n\t\t\tif (\n\t\t\t\ttypeof x !== 'number'\n\t\t\t\t|| x < 0\n\t\t\t\t|| x > 255\n\t\t\t\t|| ~~x !== x // NaN and integer check\n\t\t\t) {\n\t\t\t\tthrow new RangeError('Array items must be numbers in the range 0-255.');\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tisArr || (\n\t\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t\t)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');\n};\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar toBuffer = require('to-buffer');\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n\tthis._block = Buffer.alloc(blockSize);\n\tthis._finalSize = finalSize;\n\tthis._blockSize = blockSize;\n\tthis._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n\t/* eslint no-param-reassign: 0 */\n\tdata = toBuffer(data, enc || 'utf8');\n\n\tvar block = this._block;\n\tvar blockSize = this._blockSize;\n\tvar length = data.length;\n\tvar accum = this._len;\n\n\tfor (var offset = 0; offset < length;) {\n\t\tvar assigned = accum % blockSize;\n\t\tvar remainder = Math.min(length - offset, blockSize - assigned);\n\n\t\tfor (var i = 0; i < remainder; i++) {\n\t\t\tblock[assigned + i] = data[offset + i];\n\t\t}\n\n\t\taccum += remainder;\n\t\toffset += remainder;\n\n\t\tif ((accum % blockSize) === 0) {\n\t\t\tthis._update(block);\n\t\t}\n\t}\n\n\tthis._len += length;\n\treturn this;\n};\n\nHash.prototype.digest = function (enc) {\n\tvar rem = this._len % this._blockSize;\n\n\tthis._block[rem] = 0x80;\n\n\t/*\n\t * zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n\t * non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\t */\n\tthis._block.fill(0, rem + 1);\n\n\tif (rem >= this._finalSize) {\n\t\tthis._update(this._block);\n\t\tthis._block.fill(0);\n\t}\n\n\tvar bits = this._len * 8;\n\n\t// uint32\n\tif (bits <= 0xffffffff) {\n\t\tthis._block.writeUInt32BE(bits, this._blockSize - 4);\n\n\t\t// uint64\n\t} else {\n\t\tvar lowBits = (bits & 0xffffffff) >>> 0;\n\t\tvar highBits = (bits - lowBits) / 0x100000000;\n\n\t\tthis._block.writeUInt32BE(highBits, this._blockSize - 8);\n\t\tthis._block.writeUInt32BE(lowBits, this._blockSize - 4);\n\t}\n\n\tthis._update(this._block);\n\tvar hash = this._hash();\n\n\treturn enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n\tthrow new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n", "'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\nSha.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16];\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha;\n", "'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha1() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl1(num) {\n\treturn (num << 1) | (num >>> 31);\n}\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha1.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha1;\n", "'use strict';\n\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x428A2F98,\n\t0x71374491,\n\t0xB5C0FBCF,\n\t0xE9B5DBA5,\n\t0x3956C25B,\n\t0x59F111F1,\n\t0x923F82A4,\n\t0xAB1C5ED5,\n\t0xD807AA98,\n\t0x12835B01,\n\t0x243185BE,\n\t0x550C7DC3,\n\t0x72BE5D74,\n\t0x80DEB1FE,\n\t0x9BDC06A7,\n\t0xC19BF174,\n\t0xE49B69C1,\n\t0xEFBE4786,\n\t0x0FC19DC6,\n\t0x240CA1CC,\n\t0x2DE92C6F,\n\t0x4A7484AA,\n\t0x5CB0A9DC,\n\t0x76F988DA,\n\t0x983E5152,\n\t0xA831C66D,\n\t0xB00327C8,\n\t0xBF597FC7,\n\t0xC6E00BF3,\n\t0xD5A79147,\n\t0x06CA6351,\n\t0x14292967,\n\t0x27B70A85,\n\t0x2E1B2138,\n\t0x4D2C6DFC,\n\t0x53380D13,\n\t0x650A7354,\n\t0x766A0ABB,\n\t0x81C2C92E,\n\t0x92722C85,\n\t0xA2BFE8A1,\n\t0xA81A664B,\n\t0xC24B8B70,\n\t0xC76C51A3,\n\t0xD192E819,\n\t0xD6990624,\n\t0xF40E3585,\n\t0x106AA070,\n\t0x19A4C116,\n\t0x1E376C08,\n\t0x2748774C,\n\t0x34B0BCB5,\n\t0x391C0CB3,\n\t0x4ED8AA4A,\n\t0x5B9CCA4F,\n\t0x682E6FF3,\n\t0x748F82EE,\n\t0x78A5636F,\n\t0x84C87814,\n\t0x8CC70208,\n\t0x90BEFFFA,\n\t0xA4506CEB,\n\t0xBEF9A3F7,\n\t0xC67178F2\n];\n\nvar W = new Array(64);\n\nfunction Sha256() {\n\tthis.init();\n\n\tthis._w = W; // new Array(64)\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha256, Hash);\n\nSha256.prototype.init = function () {\n\tthis._a = 0x6a09e667;\n\tthis._b = 0xbb67ae85;\n\tthis._c = 0x3c6ef372;\n\tthis._d = 0xa54ff53a;\n\tthis._e = 0x510e527f;\n\tthis._f = 0x9b05688c;\n\tthis._g = 0x1f83d9ab;\n\tthis._h = 0x5be0cd19;\n\n\treturn this;\n};\n\nfunction ch(x, y, z) {\n\treturn z ^ (x & (y ^ z));\n}\n\nfunction maj(x, y, z) {\n\treturn (x & y) | (z & (x | y));\n}\n\nfunction sigma0(x) {\n\treturn ((x >>> 2) | (x << 30)) ^ ((x >>> 13) | (x << 19)) ^ ((x >>> 22) | (x << 10));\n}\n\nfunction sigma1(x) {\n\treturn ((x >>> 6) | (x << 26)) ^ ((x >>> 11) | (x << 21)) ^ ((x >>> 25) | (x << 7));\n}\n\nfunction gamma0(x) {\n\treturn ((x >>> 7) | (x << 25)) ^ ((x >>> 18) | (x << 14)) ^ (x >>> 3);\n}\n\nfunction gamma1(x) {\n\treturn ((x >>> 17) | (x << 15)) ^ ((x >>> 19) | (x << 13)) ^ (x >>> 10);\n}\n\nSha256.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\tvar f = this._f | 0;\n\tvar g = this._g | 0;\n\tvar h = this._h | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 64; ++i) {\n\t\tw[i] = (gamma1(w[i - 2]) + w[i - 7] + gamma0(w[i - 15]) + w[i - 16]) | 0;\n\t}\n\n\tfor (var j = 0; j < 64; ++j) {\n\t\tvar T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + w[j]) | 0;\n\t\tvar T2 = (sigma0(a) + maj(a, b, c)) | 0;\n\n\t\th = g;\n\t\tg = f;\n\t\tf = e;\n\t\te = (d + T1) | 0;\n\t\td = c;\n\t\tc = b;\n\t\tb = a;\n\t\ta = (T1 + T2) | 0;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n\tthis._f = (f + this._f) | 0;\n\tthis._g = (g + this._g) | 0;\n\tthis._h = (h + this._h) | 0;\n};\n\nSha256.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(32);\n\n\tH.writeInt32BE(this._a, 0);\n\tH.writeInt32BE(this._b, 4);\n\tH.writeInt32BE(this._c, 8);\n\tH.writeInt32BE(this._d, 12);\n\tH.writeInt32BE(this._e, 16);\n\tH.writeInt32BE(this._f, 20);\n\tH.writeInt32BE(this._g, 24);\n\tH.writeInt32BE(this._h, 28);\n\n\treturn H;\n};\n\nmodule.exports = Sha256;\n", "'use strict';\n\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Sha256 = require('./sha256');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(64);\n\nfunction Sha224() {\n\tthis.init();\n\n\tthis._w = W; // new Array(64)\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha224, Sha256);\n\nSha224.prototype.init = function () {\n\tthis._a = 0xc1059ed8;\n\tthis._b = 0x367cd507;\n\tthis._c = 0x3070dd17;\n\tthis._d = 0xf70e5939;\n\tthis._e = 0xffc00b31;\n\tthis._f = 0x68581511;\n\tthis._g = 0x64f98fa7;\n\tthis._h = 0xbefa4fa4;\n\n\treturn this;\n};\n\nSha224.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(28);\n\n\tH.writeInt32BE(this._a, 0);\n\tH.writeInt32BE(this._b, 4);\n\tH.writeInt32BE(this._c, 8);\n\tH.writeInt32BE(this._d, 12);\n\tH.writeInt32BE(this._e, 16);\n\tH.writeInt32BE(this._f, 20);\n\tH.writeInt32BE(this._g, 24);\n\n\treturn H;\n};\n\nmodule.exports = Sha224;\n", "'use strict';\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x428a2f98,\n\t0xd728ae22,\n\t0x71374491,\n\t0x23ef65cd,\n\t0xb5c0fbcf,\n\t0xec4d3b2f,\n\t0xe9b5dba5,\n\t0x8189dbbc,\n\t0x3956c25b,\n\t0xf348b538,\n\t0x59f111f1,\n\t0xb605d019,\n\t0x923f82a4,\n\t0xaf194f9b,\n\t0xab1c5ed5,\n\t0xda6d8118,\n\t0xd807aa98,\n\t0xa3030242,\n\t0x12835b01,\n\t0x45706fbe,\n\t0x243185be,\n\t0x4ee4b28c,\n\t0x550c7dc3,\n\t0xd5ffb4e2,\n\t0x72be5d74,\n\t0xf27b896f,\n\t0x80deb1fe,\n\t0x3b1696b1,\n\t0x9bdc06a7,\n\t0x25c71235,\n\t0xc19bf174,\n\t0xcf692694,\n\t0xe49b69c1,\n\t0x9ef14ad2,\n\t0xefbe4786,\n\t0x384f25e3,\n\t0x0fc19dc6,\n\t0x8b8cd5b5,\n\t0x240ca1cc,\n\t0x77ac9c65,\n\t0x2de92c6f,\n\t0x592b0275,\n\t0x4a7484aa,\n\t0x6ea6e483,\n\t0x5cb0a9dc,\n\t0xbd41fbd4,\n\t0x76f988da,\n\t0x831153b5,\n\t0x983e5152,\n\t0xee66dfab,\n\t0xa831c66d,\n\t0x2db43210,\n\t0xb00327c8,\n\t0x98fb213f,\n\t0xbf597fc7,\n\t0xbeef0ee4,\n\t0xc6e00bf3,\n\t0x3da88fc2,\n\t0xd5a79147,\n\t0x930aa725,\n\t0x06ca6351,\n\t0xe003826f,\n\t0x14292967,\n\t0x0a0e6e70,\n\t0x27b70a85,\n\t0x46d22ffc,\n\t0x2e1b2138,\n\t0x5c26c926,\n\t0x4d2c6dfc,\n\t0x5ac42aed,\n\t0x53380d13,\n\t0x9d95b3df,\n\t0x650a7354,\n\t0x8baf63de,\n\t0x766a0abb,\n\t0x3c77b2a8,\n\t0x81c2c92e,\n\t0x47edaee6,\n\t0x92722c85,\n\t0x1482353b,\n\t0xa2bfe8a1,\n\t0x4cf10364,\n\t0xa81a664b,\n\t0xbc423001,\n\t0xc24b8b70,\n\t0xd0f89791,\n\t0xc76c51a3,\n\t0x0654be30,\n\t0xd192e819,\n\t0xd6ef5218,\n\t0xd6990624,\n\t0x5565a910,\n\t0xf40e3585,\n\t0x5771202a,\n\t0x106aa070,\n\t0x32bbd1b8,\n\t0x19a4c116,\n\t0xb8d2d0c8,\n\t0x1e376c08,\n\t0x5141ab53,\n\t0x2748774c,\n\t0xdf8eeb99,\n\t0x34b0bcb5,\n\t0xe19b48a8,\n\t0x391c0cb3,\n\t0xc5c95a63,\n\t0x4ed8aa4a,\n\t0xe3418acb,\n\t0x5b9cca4f,\n\t0x7763e373,\n\t0x682e6ff3,\n\t0xd6b2b8a3,\n\t0x748f82ee,\n\t0x5defb2fc,\n\t0x78a5636f,\n\t0x43172f60,\n\t0x84c87814,\n\t0xa1f0ab72,\n\t0x8cc70208,\n\t0x1a6439ec,\n\t0x90befffa,\n\t0x23631e28,\n\t0xa4506ceb,\n\t0xde82bde9,\n\t0xbef9a3f7,\n\t0xb2c67915,\n\t0xc67178f2,\n\t0xe372532b,\n\t0xca273ece,\n\t0xea26619c,\n\t0xd186b8c7,\n\t0x21c0c207,\n\t0xeada7dd6,\n\t0xcde0eb1e,\n\t0xf57d4f7f,\n\t0xee6ed178,\n\t0x06f067aa,\n\t0x72176fba,\n\t0x0a637dc5,\n\t0xa2c898a6,\n\t0x113f9804,\n\t0xbef90dae,\n\t0x1b710b35,\n\t0x131c471b,\n\t0x28db77f5,\n\t0x23047d84,\n\t0x32caab7b,\n\t0x40c72493,\n\t0x3c9ebe0a,\n\t0x15c9bebc,\n\t0x431d67c4,\n\t0x9c100d4c,\n\t0x4cc5d4be,\n\t0xcb3e42b6,\n\t0x597f299c,\n\t0xfc657e2a,\n\t0x5fcb6fab,\n\t0x3ad6faec,\n\t0x6c44198c,\n\t0x4a475817\n];\n\nvar W = new Array(160);\n\nfunction Sha512() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 128, 112);\n}\n\ninherits(Sha512, Hash);\n\nSha512.prototype.init = function () {\n\tthis._ah = 0x6a09e667;\n\tthis._bh = 0xbb67ae85;\n\tthis._ch = 0x3c6ef372;\n\tthis._dh = 0xa54ff53a;\n\tthis._eh = 0x510e527f;\n\tthis._fh = 0x9b05688c;\n\tthis._gh = 0x1f83d9ab;\n\tthis._hh = 0x5be0cd19;\n\n\tthis._al = 0xf3bcc908;\n\tthis._bl = 0x84caa73b;\n\tthis._cl = 0xfe94f82b;\n\tthis._dl = 0x5f1d36f1;\n\tthis._el = 0xade682d1;\n\tthis._fl = 0x2b3e6c1f;\n\tthis._gl = 0xfb41bd6b;\n\tthis._hl = 0x137e2179;\n\n\treturn this;\n};\n\nfunction Ch(x, y, z) {\n\treturn z ^ (x & (y ^ z));\n}\n\nfunction maj(x, y, z) {\n\treturn (x & y) | (z & (x | y));\n}\n\nfunction sigma0(x, xl) {\n\treturn ((x >>> 28) | (xl << 4)) ^ ((xl >>> 2) | (x << 30)) ^ ((xl >>> 7) | (x << 25));\n}\n\nfunction sigma1(x, xl) {\n\treturn ((x >>> 14) | (xl << 18)) ^ ((x >>> 18) | (xl << 14)) ^ ((xl >>> 9) | (x << 23));\n}\n\nfunction Gamma0(x, xl) {\n\treturn ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ (x >>> 7);\n}\n\nfunction Gamma0l(x, xl) {\n\treturn ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ ((x >>> 7) | (xl << 25));\n}\n\nfunction Gamma1(x, xl) {\n\treturn ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ (x >>> 6);\n}\n\nfunction Gamma1l(x, xl) {\n\treturn ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ ((x >>> 6) | (xl << 26));\n}\n\nfunction getCarry(a, b) {\n\treturn (a >>> 0) < (b >>> 0) ? 1 : 0;\n}\n\nSha512.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar ah = this._ah | 0;\n\tvar bh = this._bh | 0;\n\tvar ch = this._ch | 0;\n\tvar dh = this._dh | 0;\n\tvar eh = this._eh | 0;\n\tvar fh = this._fh | 0;\n\tvar gh = this._gh | 0;\n\tvar hh = this._hh | 0;\n\n\tvar al = this._al | 0;\n\tvar bl = this._bl | 0;\n\tvar cl = this._cl | 0;\n\tvar dl = this._dl | 0;\n\tvar el = this._el | 0;\n\tvar fl = this._fl | 0;\n\tvar gl = this._gl | 0;\n\tvar hl = this._hl | 0;\n\n\tfor (var i = 0; i < 32; i += 2) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t\tw[i + 1] = M.readInt32BE((i * 4) + 4);\n\t}\n\tfor (; i < 160; i += 2) {\n\t\tvar xh = w[i - (15 * 2)];\n\t\tvar xl = w[i - (15 * 2) + 1];\n\t\tvar gamma0 = Gamma0(xh, xl);\n\t\tvar gamma0l = Gamma0l(xl, xh);\n\n\t\txh = w[i - (2 * 2)];\n\t\txl = w[i - (2 * 2) + 1];\n\t\tvar gamma1 = Gamma1(xh, xl);\n\t\tvar gamma1l = Gamma1l(xl, xh);\n\n\t\t// w[i] = gamma0 + w[i - 7] + gamma1 + w[i - 16]\n\t\tvar Wi7h = w[i - (7 * 2)];\n\t\tvar Wi7l = w[i - (7 * 2) + 1];\n\n\t\tvar Wi16h = w[i - (16 * 2)];\n\t\tvar Wi16l = w[i - (16 * 2) + 1];\n\n\t\tvar Wil = (gamma0l + Wi7l) | 0;\n\t\tvar Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0;\n\t\tWil = (Wil + gamma1l) | 0;\n\t\tWih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0;\n\t\tWil = (Wil + Wi16l) | 0;\n\t\tWih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0;\n\n\t\tw[i] = Wih;\n\t\tw[i + 1] = Wil;\n\t}\n\n\tfor (var j = 0; j < 160; j += 2) {\n\t\tWih = w[j];\n\t\tWil = w[j + 1];\n\n\t\tvar majh = maj(ah, bh, ch);\n\t\tvar majl = maj(al, bl, cl);\n\n\t\tvar sigma0h = sigma0(ah, al);\n\t\tvar sigma0l = sigma0(al, ah);\n\t\tvar sigma1h = sigma1(eh, el);\n\t\tvar sigma1l = sigma1(el, eh);\n\n\t\t// t1 = h + sigma1 + ch + K[j] + w[j]\n\t\tvar Kih = K[j];\n\t\tvar Kil = K[j + 1];\n\n\t\tvar chh = Ch(eh, fh, gh);\n\t\tvar chl = Ch(el, fl, gl);\n\n\t\tvar t1l = (hl + sigma1l) | 0;\n\t\tvar t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0;\n\t\tt1l = (t1l + chl) | 0;\n\t\tt1h = (t1h + chh + getCarry(t1l, chl)) | 0;\n\t\tt1l = (t1l + Kil) | 0;\n\t\tt1h = (t1h + Kih + getCarry(t1l, Kil)) | 0;\n\t\tt1l = (t1l + Wil) | 0;\n\t\tt1h = (t1h + Wih + getCarry(t1l, Wil)) | 0;\n\n\t\t// t2 = sigma0 + maj\n\t\tvar t2l = (sigma0l + majl) | 0;\n\t\tvar t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0;\n\n\t\thh = gh;\n\t\thl = gl;\n\t\tgh = fh;\n\t\tgl = fl;\n\t\tfh = eh;\n\t\tfl = el;\n\t\tel = (dl + t1l) | 0;\n\t\teh = (dh + t1h + getCarry(el, dl)) | 0;\n\t\tdh = ch;\n\t\tdl = cl;\n\t\tch = bh;\n\t\tcl = bl;\n\t\tbh = ah;\n\t\tbl = al;\n\t\tal = (t1l + t2l) | 0;\n\t\tah = (t1h + t2h + getCarry(al, t1l)) | 0;\n\t}\n\n\tthis._al = (this._al + al) | 0;\n\tthis._bl = (this._bl + bl) | 0;\n\tthis._cl = (this._cl + cl) | 0;\n\tthis._dl = (this._dl + dl) | 0;\n\tthis._el = (this._el + el) | 0;\n\tthis._fl = (this._fl + fl) | 0;\n\tthis._gl = (this._gl + gl) | 0;\n\tthis._hl = (this._hl + hl) | 0;\n\n\tthis._ah = (this._ah + ah + getCarry(this._al, al)) | 0;\n\tthis._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0;\n\tthis._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0;\n\tthis._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0;\n\tthis._eh = (this._eh + eh + getCarry(this._el, el)) | 0;\n\tthis._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0;\n\tthis._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0;\n\tthis._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0;\n};\n\nSha512.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(64);\n\n\tfunction writeInt64BE(h, l, offset) {\n\t\tH.writeInt32BE(h, offset);\n\t\tH.writeInt32BE(l, offset + 4);\n\t}\n\n\twriteInt64BE(this._ah, this._al, 0);\n\twriteInt64BE(this._bh, this._bl, 8);\n\twriteInt64BE(this._ch, this._cl, 16);\n\twriteInt64BE(this._dh, this._dl, 24);\n\twriteInt64BE(this._eh, this._el, 32);\n\twriteInt64BE(this._fh, this._fl, 40);\n\twriteInt64BE(this._gh, this._gl, 48);\n\twriteInt64BE(this._hh, this._hl, 56);\n\n\treturn H;\n};\n\nmodule.exports = Sha512;\n", "'use strict';\n\nvar inherits = require('inherits');\nvar SHA512 = require('./sha512');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(160);\n\nfunction Sha384() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 128, 112);\n}\n\ninherits(Sha384, SHA512);\n\nSha384.prototype.init = function () {\n\tthis._ah = 0xcbbb9d5d;\n\tthis._bh = 0x629a292a;\n\tthis._ch = 0x9159015a;\n\tthis._dh = 0x152fecd8;\n\tthis._eh = 0x67332667;\n\tthis._fh = 0x8eb44a87;\n\tthis._gh = 0xdb0c2e0d;\n\tthis._hh = 0x47b5481d;\n\n\tthis._al = 0xc1059ed8;\n\tthis._bl = 0x367cd507;\n\tthis._cl = 0x3070dd17;\n\tthis._dl = 0xf70e5939;\n\tthis._el = 0xffc00b31;\n\tthis._fl = 0x68581511;\n\tthis._gl = 0x64f98fa7;\n\tthis._hl = 0xbefa4fa4;\n\n\treturn this;\n};\n\nSha384.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(48);\n\n\tfunction writeInt64BE(h, l, offset) {\n\t\tH.writeInt32BE(h, offset);\n\t\tH.writeInt32BE(l, offset + 4);\n\t}\n\n\twriteInt64BE(this._ah, this._al, 0);\n\twriteInt64BE(this._bh, this._bl, 8);\n\twriteInt64BE(this._ch, this._cl, 16);\n\twriteInt64BE(this._dh, this._dl, 24);\n\twriteInt64BE(this._eh, this._el, 32);\n\twriteInt64BE(this._fh, this._fl, 40);\n\n\treturn H;\n};\n\nmodule.exports = Sha384;\n", "'use strict';\n\nmodule.exports = function SHA(algorithm) {\n\tvar alg = algorithm.toLowerCase();\n\n\tvar Algorithm = module.exports[alg];\n\tif (!Algorithm) {\n\t\tthrow new Error(alg + ' is not supported (we accept pull requests)');\n\t}\n\n\treturn new Algorithm();\n};\n\nmodule.exports.sha = require('./sha');\nmodule.exports.sha1 = require('./sha1');\nmodule.exports.sha224 = require('./sha224');\nmodule.exports.sha256 = require('./sha256');\nmodule.exports.sha384 = require('./sha384');\nmodule.exports.sha512 = require('./sha512');\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hash = hash;\nvar _sha = require(\"sha.js\");\nfunction hash(data) {\n var hasher = new _sha.sha256();\n hasher.update(data, 'utf8');\n return hasher.digest();\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generate = generate;\nexports.sign = sign;\nexports.verify = verify;\nvar _ed = require(\"@noble/curves/ed25519\");\nfunction generate(secretKey) {\n return Buffer.from(_ed.ed25519.getPublicKey(secretKey));\n}\nfunction sign(data, secretKey) {\n return Buffer.from(_ed.ed25519.sign(Buffer.from(data), secretKey));\n}\nfunction verify(data, signature, publicKey) {\n return _ed.ed25519.verify(Buffer.from(signature), Buffer.from(data), Buffer.from(publicKey), {\n zip215: false\n });\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.trimEnd = void 0;\nvar trimEnd = exports.trimEnd = function trimEnd(input, _char) {\n var isNumber = typeof input === 'number';\n var str = String(input);\n while (str.endsWith(_char)) {\n str = str.slice(0, -1);\n }\n return isNumber ? Number(str) : str;\n};", "\"use strict\";\n\n/**\n * Generate a character map.\n * @param {string} alphabet e.g. \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\"\n * @param {object} mappings map overrides from key to value\n * @method\n */\n\nvar charmap = function (alphabet, mappings) {\n mappings || (mappings = {});\n alphabet.split(\"\").forEach(function (c, i) {\n if (!(c in mappings)) mappings[c] = i;\n });\n return mappings;\n}\n\n/**\n * The RFC 4648 base 32 alphabet and character map.\n * @see {@link https://tools.ietf.org/html/rfc4648}\n */\n\nvar rfc4648 = {\n alphabet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\",\n charmap: {\n 0: 14,\n 1: 8\n }\n};\n\nrfc4648.charmap = charmap(rfc4648.alphabet, rfc4648.charmap);\n\n/**\n * The Crockford base 32 alphabet and character map.\n * @see {@link http://www.crockford.com/wrmg/base32.html}\n */\n\nvar crockford = {\n alphabet: \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\",\n charmap: {\n O: 0,\n I: 1,\n L: 1\n }\n};\n\ncrockford.charmap = charmap(crockford.alphabet, crockford.charmap);\n\n/**\n * base32hex\n * @see {@link https://en.wikipedia.org/wiki/Base32#base32hex}\n */\n\nvar base32hex = {\n alphabet: \"0123456789ABCDEFGHIJKLMNOPQRSTUV\",\n charmap: {}\n};\n\nbase32hex.charmap = charmap(base32hex.alphabet, base32hex.charmap);\n\n/**\n * Create a new `Decoder` with the given options.\n *\n * @param {object} [options]\n * @param {string} [type] Supported Base-32 variants are \"rfc4648\" and\n * \"crockford\".\n * @param {object} [charmap] Override the character map used in decoding.\n * @constructor\n */\n\nfunction Decoder (options) {\n this.buf = [];\n this.shift = 8;\n this.carry = 0;\n\n if (options) {\n\n switch (options.type) {\n case \"rfc4648\":\n this.charmap = exports.rfc4648.charmap;\n break;\n case \"crockford\":\n this.charmap = exports.crockford.charmap;\n break;\n case \"base32hex\":\n this.charmap = exports.base32hex.charmap;\n break;\n default:\n throw new Error(\"invalid type\");\n }\n\n if (options.charmap) this.charmap = options.charmap;\n }\n}\n\n/**\n * The default character map coresponds to RFC4648.\n */\n\nDecoder.prototype.charmap = rfc4648.charmap;\n\n/**\n * Decode a string, continuing from the previous state.\n *\n * @param {string} str\n * @return {Decoder} this\n */\n\nDecoder.prototype.write = function (str) {\n var charmap = this.charmap;\n var buf = this.buf;\n var shift = this.shift;\n var carry = this.carry;\n\n // decode string\n str.toUpperCase().split(\"\").forEach(function (char) {\n\n // ignore padding\n if (char == \"=\") return;\n\n // lookup symbol\n var symbol = charmap[char] & 0xff;\n\n // 1: 00000 000\n // 2: 00 00000 0\n // 3: 0000 0000\n // 4: 0 00000 00\n // 5: 000 00000\n // 6: 00000 000\n // 7: 00 00000 0\n\n shift -= 5;\n if (shift > 0) {\n carry |= symbol << shift;\n } else if (shift < 0) {\n buf.push(carry | (symbol >> -shift));\n shift += 8;\n carry = (symbol << shift) & 0xff;\n } else {\n buf.push(carry | symbol);\n shift = 8;\n carry = 0;\n }\n });\n\n // save state\n this.shift = shift;\n this.carry = carry;\n\n // for chaining\n return this;\n};\n\n/**\n * Finish decoding.\n *\n * @param {string} [str] The final string to decode.\n * @return {Array} Decoded byte array.\n */\n\nDecoder.prototype.finalize = function (str) {\n if (str) {\n this.write(str);\n }\n if (this.shift !== 8 && this.carry !== 0) {\n this.buf.push(this.carry);\n this.shift = 8;\n this.carry = 0;\n }\n return this.buf;\n};\n\n/**\n * Create a new `Encoder` with the given options.\n *\n * @param {object} [options]\n * @param {string} [type] Supported Base-32 variants are \"rfc4648\" and\n * \"crockford\".\n * @param {object} [alphabet] Override the alphabet used in encoding.\n * @constructor\n */\n\nfunction Encoder (options) {\n this.buf = \"\";\n this.shift = 3;\n this.carry = 0;\n\n if (options) {\n\n switch (options.type) {\n case \"rfc4648\":\n this.alphabet = exports.rfc4648.alphabet;\n break;\n case \"crockford\":\n this.alphabet = exports.crockford.alphabet;\n break;\n case \"base32hex\":\n this.alphabet = exports.base32hex.alphabet;\n break;\n default:\n throw new Error(\"invalid type\");\n }\n\n if (options.alphabet) this.alphabet = options.alphabet;\n else if (options.lc) this.alphabet = this.alphabet.toLowerCase();\n }\n}\n\n/**\n * The default alphabet coresponds to RFC4648.\n */\n\nEncoder.prototype.alphabet = rfc4648.alphabet;\n\n/**\n * Encode a byte array, continuing from the previous state.\n *\n * @param {byte[]} buf The byte array to encode.\n * @return {Encoder} this\n */\n\nEncoder.prototype.write = function (buf) {\n var shift = this.shift;\n var carry = this.carry;\n var symbol;\n var byte;\n var i;\n\n // encode each byte in buf\n for (i = 0; i < buf.length; i++) {\n byte = buf[i];\n\n // 1: 00000 000\n // 2: 00 00000 0\n // 3: 0000 0000\n // 4: 0 00000 00\n // 5: 000 00000\n // 6: 00000 000\n // 7: 00 00000 0\n\n symbol = carry | (byte >> shift);\n this.buf += this.alphabet[symbol & 0x1f];\n\n if (shift > 5) {\n shift -= 5;\n symbol = byte >> shift;\n this.buf += this.alphabet[symbol & 0x1f];\n }\n\n shift = 5 - shift;\n carry = byte << shift;\n shift = 8 - shift;\n }\n\n // save state\n this.shift = shift;\n this.carry = carry;\n\n // for chaining\n return this;\n};\n\n/**\n * Finish encoding.\n *\n * @param {byte[]} [buf] The final byte array to encode.\n * @return {string} The encoded byte array.\n */\n\nEncoder.prototype.finalize = function (buf) {\n if (buf) {\n this.write(buf);\n }\n if (this.shift !== 3) {\n this.buf += this.alphabet[this.carry & 0x1f];\n this.shift = 3;\n this.carry = 0;\n }\n return this.buf;\n};\n\n/**\n * Convenience encoder.\n *\n * @param {byte[]} buf The byte array to encode.\n * @param {object} [options] Options to pass to the encoder.\n * @return {string} The encoded string.\n */\n\nexports.encode = function (buf, options) {\n return new Encoder(options).finalize(buf);\n};\n\n/**\n * Convenience decoder.\n *\n * @param {string} str The string to decode.\n * @param {object} [options] Options to pass to the decoder.\n * @return {byte[]} The decoded byte array.\n */\n\nexports.decode = function (str, options) {\n return new Decoder(options).finalize(str);\n};\n\n// Exports.\nexports.Decoder = Decoder;\nexports.Encoder = Encoder;\nexports.charmap = charmap;\nexports.crockford = crockford;\nexports.rfc4648 = rfc4648;\nexports.base32hex = base32hex;\n", "\"use strict\";\n\n// Module dependencies.\nvar base32 = require(\"./base32\");\n\n\n// Wrap decoder finalize to return a buffer;\nvar finalizeDecode = base32.Decoder.prototype.finalize;\nbase32.Decoder.prototype.finalize = function (buf) {\n var bytes = finalizeDecode.call(this, buf);\n return new Buffer(bytes);\n};\n\n\n// Export Base32.\nmodule.exports = base32;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.verifyChecksum = verifyChecksum;\nfunction verifyChecksum(expected, actual) {\n if (expected.length !== actual.length) {\n return false;\n }\n if (expected.length === 0) {\n return true;\n }\n for (var i = 0; i < expected.length; i += 1) {\n if (expected[i] !== actual[i]) {\n return false;\n }\n }\n return true;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StrKey = void 0;\nexports.decodeCheck = decodeCheck;\nexports.encodeCheck = encodeCheck;\nvar _base = _interopRequireDefault(require(\"base32.js\"));\nvar _checksum = require(\"./util/checksum\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /* eslint no-bitwise: [\"error\", {\"allow\": [\"<<\", \">>\", \"^\", \"&\", \"&=\"]}] */\nvar versionBytes = {\n ed25519PublicKey: 6 << 3,\n // G (when encoded in base32)\n ed25519SecretSeed: 18 << 3,\n // S\n med25519PublicKey: 12 << 3,\n // M\n preAuthTx: 19 << 3,\n // T\n sha256Hash: 23 << 3,\n // X\n signedPayload: 15 << 3,\n // P\n contract: 2 << 3,\n // C\n liquidityPool: 11 << 3,\n // L\n claimableBalance: 1 << 3 // B\n};\nvar strkeyTypes = {\n G: 'ed25519PublicKey',\n S: 'ed25519SecretSeed',\n M: 'med25519PublicKey',\n T: 'preAuthTx',\n X: 'sha256Hash',\n P: 'signedPayload',\n C: 'contract',\n L: 'liquidityPool',\n B: 'claimableBalance'\n};\n\n/**\n * StrKey is a helper class that allows encoding and decoding Stellar keys\n * to/from strings, i.e. between their binary (Buffer, xdr.PublicKey, etc.) and\n * string (i.e. \"GABCD...\", etc.) representations.\n */\nvar StrKey = exports.StrKey = /*#__PURE__*/function () {\n function StrKey() {\n _classCallCheck(this, StrKey);\n }\n return _createClass(StrKey, null, [{\n key: \"encodeEd25519PublicKey\",\n value:\n /**\n * Encodes `data` to strkey ed25519 public key.\n *\n * @param {Buffer} data raw data to encode\n * @returns {string} \"G...\" representation of the key\n */\n function encodeEd25519PublicKey(data) {\n return encodeCheck('ed25519PublicKey', data);\n }\n\n /**\n * Decodes strkey ed25519 public key to raw data.\n *\n * If the parameter is a muxed account key (\"M...\"), this will only encode it\n * as a basic Ed25519 key (as if in \"G...\" format).\n *\n * @param {string} data \"G...\" (or \"M...\") key representation to decode\n * @returns {Buffer} raw key\n */\n }, {\n key: \"decodeEd25519PublicKey\",\n value: function decodeEd25519PublicKey(data) {\n return decodeCheck('ed25519PublicKey', data);\n }\n\n /**\n * Returns true if the given Stellar public key is a valid ed25519 public key.\n * @param {string} publicKey public key to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidEd25519PublicKey\",\n value: function isValidEd25519PublicKey(publicKey) {\n return isValid('ed25519PublicKey', publicKey);\n }\n\n /**\n * Encodes data to strkey ed25519 seed.\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeEd25519SecretSeed\",\n value: function encodeEd25519SecretSeed(data) {\n return encodeCheck('ed25519SecretSeed', data);\n }\n\n /**\n * Decodes strkey ed25519 seed to raw data.\n * @param {string} address data to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeEd25519SecretSeed\",\n value: function decodeEd25519SecretSeed(address) {\n return decodeCheck('ed25519SecretSeed', address);\n }\n\n /**\n * Returns true if the given Stellar secret key is a valid ed25519 secret seed.\n * @param {string} seed seed to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidEd25519SecretSeed\",\n value: function isValidEd25519SecretSeed(seed) {\n return isValid('ed25519SecretSeed', seed);\n }\n\n /**\n * Encodes data to strkey med25519 public key.\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeMed25519PublicKey\",\n value: function encodeMed25519PublicKey(data) {\n return encodeCheck('med25519PublicKey', data);\n }\n\n /**\n * Decodes strkey med25519 public key to raw data.\n * @param {string} address data to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeMed25519PublicKey\",\n value: function decodeMed25519PublicKey(address) {\n return decodeCheck('med25519PublicKey', address);\n }\n\n /**\n * Returns true if the given Stellar public key is a valid med25519 public key.\n * @param {string} publicKey public key to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidMed25519PublicKey\",\n value: function isValidMed25519PublicKey(publicKey) {\n return isValid('med25519PublicKey', publicKey);\n }\n\n /**\n * Encodes data to strkey preAuthTx.\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodePreAuthTx\",\n value: function encodePreAuthTx(data) {\n return encodeCheck('preAuthTx', data);\n }\n\n /**\n * Decodes strkey PreAuthTx to raw data.\n * @param {string} address data to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodePreAuthTx\",\n value: function decodePreAuthTx(address) {\n return decodeCheck('preAuthTx', address);\n }\n\n /**\n * Encodes data to strkey sha256 hash.\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeSha256Hash\",\n value: function encodeSha256Hash(data) {\n return encodeCheck('sha256Hash', data);\n }\n\n /**\n * Decodes strkey sha256 hash to raw data.\n * @param {string} address data to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeSha256Hash\",\n value: function decodeSha256Hash(address) {\n return decodeCheck('sha256Hash', address);\n }\n\n /**\n * Encodes raw data to strkey signed payload (P...).\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeSignedPayload\",\n value: function encodeSignedPayload(data) {\n return encodeCheck('signedPayload', data);\n }\n\n /**\n * Decodes strkey signed payload (P...) to raw data.\n * @param {string} address address to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeSignedPayload\",\n value: function decodeSignedPayload(address) {\n return decodeCheck('signedPayload', address);\n }\n\n /**\n * Checks validity of alleged signed payload (P...) strkey address.\n * @param {string} address signer key to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidSignedPayload\",\n value: function isValidSignedPayload(address) {\n return isValid('signedPayload', address);\n }\n\n /**\n * Encodes raw data to strkey contract (C...).\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeContract\",\n value: function encodeContract(data) {\n return encodeCheck('contract', data);\n }\n\n /**\n * Decodes strkey contract (C...) to raw data.\n * @param {string} address address to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeContract\",\n value: function decodeContract(address) {\n return decodeCheck('contract', address);\n }\n\n /**\n * Checks validity of alleged contract (C...) strkey address.\n * @param {string} address signer key to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidContract\",\n value: function isValidContract(address) {\n return isValid('contract', address);\n }\n\n /**\n * Encodes raw data to strkey claimable balance (B...).\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeClaimableBalance\",\n value: function encodeClaimableBalance(data) {\n return encodeCheck('claimableBalance', data);\n }\n\n /**\n * Decodes strkey contract (B...) to raw data.\n * @param {string} address balance to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeClaimableBalance\",\n value: function decodeClaimableBalance(address) {\n return decodeCheck('claimableBalance', address);\n }\n\n /**\n * Checks validity of alleged claimable balance (B...) strkey address.\n * @param {string} address balance to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidClaimableBalance\",\n value: function isValidClaimableBalance(address) {\n return isValid('claimableBalance', address);\n }\n\n /**\n * Encodes raw data to strkey liquidity pool (L...).\n * @param {Buffer} data data to encode\n * @returns {string}\n */\n }, {\n key: \"encodeLiquidityPool\",\n value: function encodeLiquidityPool(data) {\n return encodeCheck('liquidityPool', data);\n }\n\n /**\n * Decodes strkey liquidity pool (L...) to raw data.\n * @param {string} address address to decode\n * @returns {Buffer}\n */\n }, {\n key: \"decodeLiquidityPool\",\n value: function decodeLiquidityPool(address) {\n return decodeCheck('liquidityPool', address);\n }\n\n /**\n * Checks validity of alleged liquidity pool (L...) strkey address.\n * @param {string} address pool to check\n * @returns {boolean}\n */\n }, {\n key: \"isValidLiquidityPool\",\n value: function isValidLiquidityPool(address) {\n return isValid('liquidityPool', address);\n }\n }, {\n key: \"getVersionByteForPrefix\",\n value: function getVersionByteForPrefix(address) {\n return strkeyTypes[address[0]];\n }\n }]);\n}();\n/**\n * Sanity-checks whether or not a strkey *appears* valid.\n *\n * @param {string} versionByteName the type of strkey to expect in `encoded`\n * @param {string} encoded the strkey to validate\n *\n * @return {Boolean} whether or not the `encoded` strkey appears valid for the\n * `versionByteName` strkey type (see `versionBytes`, above).\n *\n * @note This isn't a *definitive* check of validity, but rather a best-effort\n * check based on (a) input length, (b) whether or not it can be decoded,\n * and (c) output length.\n */\n_defineProperty(StrKey, \"types\", strkeyTypes);\nfunction isValid(versionByteName, encoded) {\n if (typeof encoded !== 'string') {\n return false;\n }\n\n // basic length checks on the strkey lengths\n switch (versionByteName) {\n case 'ed25519PublicKey': // falls through\n case 'ed25519SecretSeed': // falls through\n case 'preAuthTx': // falls through\n case 'sha256Hash': // falls through\n case 'contract': // falls through\n case 'liquidityPool':\n if (encoded.length !== 56) {\n return false;\n }\n break;\n case 'claimableBalance':\n if (encoded.length !== 58) {\n return false;\n }\n break;\n case 'med25519PublicKey':\n if (encoded.length !== 69) {\n return false;\n }\n break;\n case 'signedPayload':\n if (encoded.length < 56 || encoded.length > 165) {\n return false;\n }\n break;\n default:\n return false;\n }\n var decoded = '';\n try {\n decoded = decodeCheck(versionByteName, encoded);\n } catch (err) {\n return false;\n }\n\n // basic length checks on the resulting buffer sizes\n switch (versionByteName) {\n case 'ed25519PublicKey': // falls through\n case 'ed25519SecretSeed': // falls through\n case 'preAuthTx': // falls through\n case 'sha256Hash': // falls through\n case 'contract':\n case 'liquidityPool':\n return decoded.length === 32;\n case 'claimableBalance':\n return decoded.length === 32 + 1;\n // +1 byte for discriminant\n\n case 'med25519PublicKey':\n return decoded.length === 40;\n // +8 bytes for the ID\n\n case 'signedPayload':\n return (\n // 32 for the signer, +4 for the payload size, then either +4 for the\n // min or +64 for the max payload\n decoded.length >= 32 + 4 + 4 && decoded.length <= 32 + 4 + 64\n );\n default:\n return false;\n }\n}\nfunction decodeCheck(versionByteName, encoded) {\n if (typeof encoded !== 'string') {\n throw new TypeError('encoded argument must be of type String');\n }\n var decoded = _base[\"default\"].decode(encoded);\n var versionByte = decoded[0];\n var payload = decoded.slice(0, -2);\n var data = payload.slice(1);\n var checksum = decoded.slice(-2);\n if (encoded !== _base[\"default\"].encode(decoded)) {\n throw new Error('invalid encoded string');\n }\n var expectedVersion = versionBytes[versionByteName];\n if (expectedVersion === undefined) {\n throw new Error(\"\".concat(versionByteName, \" is not a valid version byte name. \") + \"Expected one of \".concat(Object.keys(versionBytes).join(', ')));\n }\n if (versionByte !== expectedVersion) {\n throw new Error(\"invalid version byte. expected \".concat(expectedVersion, \", got \").concat(versionByte));\n }\n var expectedChecksum = calculateChecksum(payload);\n if (!(0, _checksum.verifyChecksum)(expectedChecksum, checksum)) {\n throw new Error(\"invalid checksum\");\n }\n return Buffer.from(data);\n}\nfunction encodeCheck(versionByteName, data) {\n if (data === null || data === undefined) {\n throw new Error('cannot encode null data');\n }\n var versionByte = versionBytes[versionByteName];\n if (versionByte === undefined) {\n throw new Error(\"\".concat(versionByteName, \" is not a valid version byte name. \") + \"Expected one of \".concat(Object.keys(versionBytes).join(', ')));\n }\n data = Buffer.from(data);\n var versionBuffer = Buffer.from([versionByte]);\n var payload = Buffer.concat([versionBuffer, data]);\n var checksum = Buffer.from(calculateChecksum(payload));\n var unencoded = Buffer.concat([payload, checksum]);\n return _base[\"default\"].encode(unencoded);\n}\n\n// Computes the CRC16-XModem checksum of `payload` in little-endian order\nfunction calculateChecksum(payload) {\n var crcTable = [0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0];\n var crc16 = 0x0;\n for (var i = 0; i < payload.length; i += 1) {\n var _byte = payload[i];\n var lookupIndex = crc16 >> 8 ^ _byte;\n crc16 = crc16 << 8 ^ crcTable[lookupIndex];\n crc16 &= 0xffff;\n }\n var checksum = new Uint8Array(2);\n checksum[0] = crc16 & 0xff;\n checksum[1] = crc16 >> 8 & 0xff;\n return checksum;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Keypair = void 0;\nvar _ed = require(\"@noble/curves/ed25519\");\nvar _signing = require(\"./signing\");\nvar _strkey = require(\"./strkey\");\nvar _hashing = require(\"./hashing\");\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /* eslint no-bitwise: [\"error\", {\"allow\": [\"^\"]}] */\n/**\n * `Keypair` represents public (and secret) keys of the account.\n *\n * Currently `Keypair` only supports ed25519 but in a future this class can be abstraction layer for other\n * public-key signature systems.\n *\n * Use more convenient methods to create `Keypair` object:\n * * `{@link Keypair.fromPublicKey}`\n * * `{@link Keypair.fromSecret}`\n * * `{@link Keypair.random}`\n *\n * @constructor\n * @param {object} keys At least one of keys must be provided.\n * @param {string} keys.type Public-key signature system name. (currently only `ed25519` keys are supported)\n * @param {Buffer} [keys.publicKey] Raw public key\n * @param {Buffer} [keys.secretKey] Raw secret key (32-byte secret seed in ed25519`)\n */\nvar Keypair = exports.Keypair = /*#__PURE__*/function () {\n function Keypair(keys) {\n _classCallCheck(this, Keypair);\n if (keys.type !== 'ed25519') {\n throw new Error('Invalid keys type');\n }\n this.type = keys.type;\n if (keys.secretKey) {\n keys.secretKey = Buffer.from(keys.secretKey);\n if (keys.secretKey.length !== 32) {\n throw new Error('secretKey length is invalid');\n }\n this._secretSeed = keys.secretKey;\n this._publicKey = (0, _signing.generate)(keys.secretKey);\n this._secretKey = keys.secretKey;\n if (keys.publicKey && !this._publicKey.equals(Buffer.from(keys.publicKey))) {\n throw new Error('secretKey does not match publicKey');\n }\n } else {\n this._publicKey = Buffer.from(keys.publicKey);\n if (this._publicKey.length !== 32) {\n throw new Error('publicKey length is invalid');\n }\n }\n }\n\n /**\n * Creates a new `Keypair` instance from secret. This can either be secret key or secret seed depending\n * on underlying public-key signature system. Currently `Keypair` only supports ed25519.\n * @param {string} secret secret key (ex. `SDAK....`)\n * @returns {Keypair}\n */\n return _createClass(Keypair, [{\n key: \"xdrAccountId\",\n value: function xdrAccountId() {\n return new _xdr[\"default\"].AccountId.publicKeyTypeEd25519(this._publicKey);\n }\n }, {\n key: \"xdrPublicKey\",\n value: function xdrPublicKey() {\n return new _xdr[\"default\"].PublicKey.publicKeyTypeEd25519(this._publicKey);\n }\n\n /**\n * Creates a {@link xdr.MuxedAccount} object from the public key.\n *\n * You will get a different type of muxed account depending on whether or not\n * you pass an ID.\n *\n * @param {string} [id] - stringified integer indicating the underlying muxed\n * ID of the new account object\n *\n * @return {xdr.MuxedAccount}\n */\n }, {\n key: \"xdrMuxedAccount\",\n value: function xdrMuxedAccount(id) {\n if (typeof id !== 'undefined') {\n if (typeof id !== 'string') {\n throw new TypeError(\"expected string for ID, got \".concat(_typeof(id)));\n }\n return _xdr[\"default\"].MuxedAccount.keyTypeMuxedEd25519(new _xdr[\"default\"].MuxedAccountMed25519({\n id: _xdr[\"default\"].Uint64.fromString(id),\n ed25519: this._publicKey\n }));\n }\n return new _xdr[\"default\"].MuxedAccount.keyTypeEd25519(this._publicKey);\n }\n\n /**\n * Returns raw public key\n * @returns {Buffer}\n */\n }, {\n key: \"rawPublicKey\",\n value: function rawPublicKey() {\n return this._publicKey;\n }\n }, {\n key: \"signatureHint\",\n value: function signatureHint() {\n var a = this.xdrAccountId().toXDR();\n return a.slice(a.length - 4);\n }\n\n /**\n * Returns public key associated with this `Keypair` object.\n * @returns {string}\n */\n }, {\n key: \"publicKey\",\n value: function publicKey() {\n return _strkey.StrKey.encodeEd25519PublicKey(this._publicKey);\n }\n\n /**\n * Returns secret key associated with this `Keypair` object\n * @returns {string}\n */\n }, {\n key: \"secret\",\n value: function secret() {\n if (!this._secretSeed) {\n throw new Error('no secret key available');\n }\n if (this.type === 'ed25519') {\n return _strkey.StrKey.encodeEd25519SecretSeed(this._secretSeed);\n }\n throw new Error('Invalid Keypair type');\n }\n\n /**\n * Returns raw secret key.\n * @returns {Buffer}\n */\n }, {\n key: \"rawSecretKey\",\n value: function rawSecretKey() {\n return this._secretSeed;\n }\n\n /**\n * Returns `true` if this `Keypair` object contains secret key and can sign.\n * @returns {boolean}\n */\n }, {\n key: \"canSign\",\n value: function canSign() {\n return !!this._secretKey;\n }\n\n /**\n * Signs data.\n * @param {Buffer} data Data to sign\n * @returns {Buffer}\n */\n }, {\n key: \"sign\",\n value: function sign(data) {\n if (!this.canSign()) {\n throw new Error('cannot sign: no secret key available');\n }\n return (0, _signing.sign)(data, this._secretKey);\n }\n\n /**\n * Verifies if `signature` for `data` is valid.\n * @param {Buffer} data Signed data\n * @param {Buffer} signature Signature\n * @returns {boolean}\n */\n }, {\n key: \"verify\",\n value: function verify(data, signature) {\n return (0, _signing.verify)(data, signature, this._publicKey);\n }\n\n /**\n * Returns the decorated signature (hint+sig) for arbitrary data.\n *\n * @param {Buffer} data arbitrary data to sign\n * @return {xdr.DecoratedSignature} the raw signature structure which can be\n * added directly to a transaction envelope\n *\n * @see TransactionBase.addDecoratedSignature\n */\n }, {\n key: \"signDecorated\",\n value: function signDecorated(data) {\n var signature = this.sign(data);\n var hint = this.signatureHint();\n return new _xdr[\"default\"].DecoratedSignature({\n hint: hint,\n signature: signature\n });\n }\n\n /**\n * Returns the raw decorated signature (hint+sig) for a signed payload signer.\n *\n * The hint is defined as the last 4 bytes of the signer key XORed with last\n * 4 bytes of the payload (zero-left-padded if necessary).\n *\n * @param {Buffer} data data to both sign and treat as the payload\n * @return {xdr.DecoratedSignature}\n *\n * @see https://github.com/stellar/stellar-protocol/blob/master/core/cap-0040.md#signature-hint\n * @see TransactionBase.addDecoratedSignature\n */\n }, {\n key: \"signPayloadDecorated\",\n value: function signPayloadDecorated(data) {\n var signature = this.sign(data);\n var keyHint = this.signatureHint();\n var hint = Buffer.from(data.slice(-4));\n if (hint.length < 4) {\n // append zeroes as needed\n hint = Buffer.concat([hint, Buffer.alloc(4 - data.length, 0)]);\n }\n return new _xdr[\"default\"].DecoratedSignature({\n hint: hint.map(function (_byte, i) {\n return _byte ^ keyHint[i];\n }),\n signature: signature\n });\n }\n }], [{\n key: \"fromSecret\",\n value: function fromSecret(secret) {\n var rawSecret = _strkey.StrKey.decodeEd25519SecretSeed(secret);\n return this.fromRawEd25519Seed(rawSecret);\n }\n\n /**\n * Creates a new `Keypair` object from ed25519 secret key seed raw bytes.\n *\n * @param {Buffer} rawSeed Raw 32-byte ed25519 secret key seed\n * @returns {Keypair}\n */\n }, {\n key: \"fromRawEd25519Seed\",\n value: function fromRawEd25519Seed(rawSeed) {\n return new this({\n type: 'ed25519',\n secretKey: rawSeed\n });\n }\n\n /**\n * Returns `Keypair` object representing network master key.\n * @param {string} networkPassphrase passphrase of the target stellar network (e.g. \"Public Global Stellar Network ; September 2015\").\n * @returns {Keypair}\n */\n }, {\n key: \"master\",\n value: function master(networkPassphrase) {\n if (!networkPassphrase) {\n throw new Error('No network selected. Please pass a network argument, e.g. `Keypair.master(Networks.PUBLIC)`.');\n }\n return this.fromRawEd25519Seed((0, _hashing.hash)(networkPassphrase));\n }\n\n /**\n * Creates a new `Keypair` object from public key.\n * @param {string} publicKey public key (ex. `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`)\n * @returns {Keypair}\n */\n }, {\n key: \"fromPublicKey\",\n value: function fromPublicKey(publicKey) {\n publicKey = _strkey.StrKey.decodeEd25519PublicKey(publicKey);\n if (publicKey.length !== 32) {\n throw new Error('Invalid Stellar public key');\n }\n return new this({\n type: 'ed25519',\n publicKey: publicKey\n });\n }\n\n /**\n * Create a random `Keypair` object.\n * @returns {Keypair}\n */\n }, {\n key: \"random\",\n value: function random() {\n var secret = _ed.ed25519.utils.randomPrivateKey();\n return this.fromRawEd25519Seed(secret);\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Asset = void 0;\nvar _util = require(\"./util/util\");\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _keypair = require(\"./keypair\");\nvar _strkey = require(\"./strkey\");\nvar _hashing = require(\"./hashing\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Asset class represents an asset, either the native asset (`XLM`)\n * or an asset code / issuer account ID pair.\n *\n * An asset code describes an asset code and issuer pair. In the case of the native\n * asset XLM, the issuer will be null.\n *\n * @constructor\n * @param {string} code - The asset code.\n * @param {string} issuer - The account ID of the issuer.\n */\nvar Asset = exports.Asset = /*#__PURE__*/function () {\n function Asset(code, issuer) {\n _classCallCheck(this, Asset);\n if (!/^[a-zA-Z0-9]{1,12}$/.test(code)) {\n throw new Error('Asset code is invalid (maximum alphanumeric, 12 characters at max)');\n }\n if (String(code).toLowerCase() !== 'xlm' && !issuer) {\n throw new Error('Issuer cannot be null');\n }\n if (issuer && !_strkey.StrKey.isValidEd25519PublicKey(issuer)) {\n throw new Error('Issuer is invalid');\n }\n if (String(code).toLowerCase() === 'xlm') {\n // transform all xLM, Xlm, etc. variants -> XLM\n this.code = 'XLM';\n } else {\n this.code = code;\n }\n this.issuer = issuer;\n }\n\n /**\n * Returns an asset object for the native asset.\n * @Return {Asset}\n */\n return _createClass(Asset, [{\n key: \"toXDRObject\",\n value:\n /**\n * Returns the xdr.Asset object for this asset.\n * @returns {xdr.Asset} XDR asset object\n */\n function toXDRObject() {\n return this._toXDRObject(_xdr[\"default\"].Asset);\n }\n\n /**\n * Returns the xdr.ChangeTrustAsset object for this asset.\n * @returns {xdr.ChangeTrustAsset} XDR asset object\n */\n }, {\n key: \"toChangeTrustXDRObject\",\n value: function toChangeTrustXDRObject() {\n return this._toXDRObject(_xdr[\"default\"].ChangeTrustAsset);\n }\n\n /**\n * Returns the xdr.TrustLineAsset object for this asset.\n * @returns {xdr.TrustLineAsset} XDR asset object\n */\n }, {\n key: \"toTrustLineXDRObject\",\n value: function toTrustLineXDRObject() {\n return this._toXDRObject(_xdr[\"default\"].TrustLineAsset);\n }\n\n /**\n * Returns the would-be contract ID (`C...` format) for this asset on a given\n * network.\n *\n * @param {string} networkPassphrase indicates which network the contract\n * ID should refer to, since every network will have a unique ID for the\n * same contract (see {@link Networks} for options)\n *\n * @returns {string} the strkey-encoded (`C...`) contract ID for this asset\n *\n * @warning This makes no guarantee that this contract actually *exists*.\n */\n }, {\n key: \"contractId\",\n value: function contractId(networkPassphrase) {\n var networkId = (0, _hashing.hash)(Buffer.from(networkPassphrase));\n var preimage = _xdr[\"default\"].HashIdPreimage.envelopeTypeContractId(new _xdr[\"default\"].HashIdPreimageContractId({\n networkId: networkId,\n contractIdPreimage: _xdr[\"default\"].ContractIdPreimage.contractIdPreimageFromAsset(this.toXDRObject())\n }));\n return _strkey.StrKey.encodeContract((0, _hashing.hash)(preimage.toXDR()));\n }\n\n /**\n * Returns the xdr object for this asset.\n * @param {xdr.Asset | xdr.ChangeTrustAsset} xdrAsset - The asset xdr object.\n * @returns {xdr.Asset | xdr.ChangeTrustAsset | xdr.TrustLineAsset} XDR Asset object\n */\n }, {\n key: \"_toXDRObject\",\n value: function _toXDRObject() {\n var xdrAsset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _xdr[\"default\"].Asset;\n if (this.isNative()) {\n return xdrAsset.assetTypeNative();\n }\n var xdrType;\n var xdrTypeString;\n if (this.code.length <= 4) {\n xdrType = _xdr[\"default\"].AlphaNum4;\n xdrTypeString = 'assetTypeCreditAlphanum4';\n } else {\n xdrType = _xdr[\"default\"].AlphaNum12;\n xdrTypeString = 'assetTypeCreditAlphanum12';\n }\n\n // pad code with null bytes if necessary\n var padLength = this.code.length <= 4 ? 4 : 12;\n var paddedCode = this.code.padEnd(padLength, '\\0');\n\n // eslint-disable-next-line new-cap\n var assetType = new xdrType({\n assetCode: paddedCode,\n issuer: _keypair.Keypair.fromPublicKey(this.issuer).xdrAccountId()\n });\n return new xdrAsset(xdrTypeString, assetType);\n }\n\n /**\n * @returns {string} Asset code\n */\n }, {\n key: \"getCode\",\n value: function getCode() {\n if (this.code === undefined) {\n return undefined;\n }\n return String(this.code);\n }\n\n /**\n * @returns {string} Asset issuer\n */\n }, {\n key: \"getIssuer\",\n value: function getIssuer() {\n if (this.issuer === undefined) {\n return undefined;\n }\n return String(this.issuer);\n }\n\n /**\n * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/)\n * @returns {string} Asset type. Can be one of following types:\n *\n * - `native`,\n * - `credit_alphanum4`,\n * - `credit_alphanum12`, or\n * - `unknown` as the error case (which should never occur)\n */\n }, {\n key: \"getAssetType\",\n value: function getAssetType() {\n switch (this.getRawAssetType().value) {\n case _xdr[\"default\"].AssetType.assetTypeNative().value:\n return 'native';\n case _xdr[\"default\"].AssetType.assetTypeCreditAlphanum4().value:\n return 'credit_alphanum4';\n case _xdr[\"default\"].AssetType.assetTypeCreditAlphanum12().value:\n return 'credit_alphanum12';\n default:\n return 'unknown';\n }\n }\n\n /**\n * @returns {xdr.AssetType} the raw XDR representation of the asset type\n */\n }, {\n key: \"getRawAssetType\",\n value: function getRawAssetType() {\n if (this.isNative()) {\n return _xdr[\"default\"].AssetType.assetTypeNative();\n }\n if (this.code.length <= 4) {\n return _xdr[\"default\"].AssetType.assetTypeCreditAlphanum4();\n }\n return _xdr[\"default\"].AssetType.assetTypeCreditAlphanum12();\n }\n\n /**\n * @returns {boolean} true if this asset object is the native asset.\n */\n }, {\n key: \"isNative\",\n value: function isNative() {\n return !this.issuer;\n }\n\n /**\n * @param {Asset} asset Asset to compare\n * @returns {boolean} true if this asset equals the given asset.\n */\n }, {\n key: \"equals\",\n value: function equals(asset) {\n return this.code === asset.getCode() && this.issuer === asset.getIssuer();\n }\n }, {\n key: \"toString\",\n value: function toString() {\n if (this.isNative()) {\n return 'native';\n }\n return \"\".concat(this.getCode(), \":\").concat(this.getIssuer());\n }\n\n /**\n * Compares two assets according to the criteria:\n *\n * 1. First compare the type (native < alphanum4 < alphanum12).\n * 2. If the types are equal, compare the assets codes.\n * 3. If the asset codes are equal, compare the issuers.\n *\n * @param {Asset} assetA - the first asset\n * @param {Asset} assetB - the second asset\n * @returns {number} `-1` if assetA < assetB, `0` if assetA == assetB, `1` if assetA > assetB.\n *\n * @static\n * @memberof Asset\n */\n }], [{\n key: \"native\",\n value: function _native() {\n return new Asset('XLM');\n }\n\n /**\n * Returns an asset object from its XDR object representation.\n * @param {xdr.Asset} assetXdr - The asset xdr object.\n * @returns {Asset}\n */\n }, {\n key: \"fromOperation\",\n value: function fromOperation(assetXdr) {\n var anum;\n var code;\n var issuer;\n switch (assetXdr[\"switch\"]()) {\n case _xdr[\"default\"].AssetType.assetTypeNative():\n return this[\"native\"]();\n case _xdr[\"default\"].AssetType.assetTypeCreditAlphanum4():\n anum = assetXdr.alphaNum4();\n /* falls through */\n case _xdr[\"default\"].AssetType.assetTypeCreditAlphanum12():\n anum = anum || assetXdr.alphaNum12();\n issuer = _strkey.StrKey.encodeEd25519PublicKey(anum.issuer().ed25519());\n code = (0, _util.trimEnd)(anum.assetCode(), '\\0');\n return new this(code, issuer);\n default:\n throw new Error(\"Invalid asset type: \".concat(assetXdr[\"switch\"]().name));\n }\n }\n }, {\n key: \"compare\",\n value: function compare(assetA, assetB) {\n if (!assetA || !(assetA instanceof Asset)) {\n throw new Error('assetA is invalid');\n }\n if (!assetB || !(assetB instanceof Asset)) {\n throw new Error('assetB is invalid');\n }\n if (assetA.equals(assetB)) {\n return 0;\n }\n\n // Compare asset types.\n var xdrAtype = assetA.getRawAssetType().value;\n var xdrBtype = assetB.getRawAssetType().value;\n if (xdrAtype !== xdrBtype) {\n return xdrAtype < xdrBtype ? -1 : 1;\n }\n\n // Compare asset codes.\n var result = asciiCompare(assetA.getCode(), assetB.getCode());\n if (result !== 0) {\n return result;\n }\n\n // Compare asset issuers.\n return asciiCompare(assetA.getIssuer(), assetB.getIssuer());\n }\n }]);\n}();\n/**\n * Compares two ASCII strings in lexographic order with uppercase precedence.\n *\n * @param {string} a - the first string to compare\n * @param {string} b - the second\n * @returns {number} like all `compare()`s:\n * -1 if `a < b`, 0 if `a == b`, and 1 if `a > b`\n *\n * @warning No type-checks are done on the parameters\n */\nfunction asciiCompare(a, b) {\n return Buffer.compare(Buffer.from(a, 'ascii'), Buffer.from(b, 'ascii'));\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LiquidityPoolFeeV18 = void 0;\nexports.getLiquidityPoolId = getLiquidityPoolId;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _asset = require(\"./asset\");\nvar _hashing = require(\"./hashing\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n// LiquidityPoolFeeV18 is the default liquidity pool fee in protocol v18. It defaults to 30 base points (0.3%).\nvar LiquidityPoolFeeV18 = exports.LiquidityPoolFeeV18 = 30;\n\n/**\n * getLiquidityPoolId computes the Pool ID for the given assets, fee and pool type.\n *\n * @see [stellar-core getPoolID](https://github.com/stellar/stellar-core/blob/9f3a48c6a8f1aa77b6043a055d0638661f718080/src/ledger/test/LedgerTxnTests.cpp#L3746-L3751)\n *\n * @export\n * @param {string} liquidityPoolType \u2013 A string representing the liquidity pool type.\n * @param {object} liquidityPoolParameters \u2013 The liquidity pool parameters.\n * @param {Asset} liquidityPoolParameters.assetA \u2013 The first asset in the Pool, it must respect the rule assetA < assetB.\n * @param {Asset} liquidityPoolParameters.assetB \u2013 The second asset in the Pool, it must respect the rule assetA < assetB.\n * @param {number} liquidityPoolParameters.fee \u2013 The liquidity pool fee. For now the only fee supported is `30`.\n *\n * @return {Buffer} the raw Pool ID buffer, which can be stringfied with `toString('hex')`\n */\nfunction getLiquidityPoolId(liquidityPoolType) {\n var liquidityPoolParameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (liquidityPoolType !== 'constant_product') {\n throw new Error('liquidityPoolType is invalid');\n }\n var assetA = liquidityPoolParameters.assetA,\n assetB = liquidityPoolParameters.assetB,\n fee = liquidityPoolParameters.fee;\n if (!assetA || !(assetA instanceof _asset.Asset)) {\n throw new Error('assetA is invalid');\n }\n if (!assetB || !(assetB instanceof _asset.Asset)) {\n throw new Error('assetB is invalid');\n }\n if (!fee || fee !== LiquidityPoolFeeV18) {\n throw new Error('fee is invalid');\n }\n if (_asset.Asset.compare(assetA, assetB) !== -1) {\n throw new Error('Assets are not in lexicographic order');\n }\n var lpTypeData = _xdr[\"default\"].LiquidityPoolType.liquidityPoolConstantProduct().toXDR();\n var lpParamsData = new _xdr[\"default\"].LiquidityPoolConstantProductParameters({\n assetA: assetA.toXDRObject(),\n assetB: assetB.toXDRObject(),\n fee: fee\n }).toXDR();\n var payload = Buffer.concat([lpTypeData, lpParamsData]);\n return (0, _hashing.hash)(payload);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransactionBase = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _hashing = require(\"./hashing\");\nvar _keypair = require(\"./keypair\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @ignore\n */\nvar TransactionBase = exports.TransactionBase = /*#__PURE__*/function () {\n function TransactionBase(tx, signatures, fee, networkPassphrase) {\n _classCallCheck(this, TransactionBase);\n if (typeof networkPassphrase !== 'string') {\n throw new Error(\"Invalid passphrase provided to Transaction: expected a string but got a \".concat(_typeof(networkPassphrase)));\n }\n this._networkPassphrase = networkPassphrase;\n this._tx = tx;\n this._signatures = signatures;\n this._fee = fee;\n }\n\n /**\n * @type {Array.}\n * @readonly\n */\n return _createClass(TransactionBase, [{\n key: \"signatures\",\n get: function get() {\n return this._signatures;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n }, {\n key: \"tx\",\n get: function get() {\n return this._tx;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"fee\",\n get: function get() {\n return this._fee;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"networkPassphrase\",\n get: function get() {\n return this._networkPassphrase;\n },\n set: function set(networkPassphrase) {\n this._networkPassphrase = networkPassphrase;\n }\n\n /**\n * Signs the transaction with the given {@link Keypair}.\n * @param {...Keypair} keypairs Keypairs of signers\n * @returns {void}\n */\n }, {\n key: \"sign\",\n value: function sign() {\n var _this = this;\n var txHash = this.hash();\n for (var _len = arguments.length, keypairs = new Array(_len), _key = 0; _key < _len; _key++) {\n keypairs[_key] = arguments[_key];\n }\n keypairs.forEach(function (kp) {\n var sig = kp.signDecorated(txHash);\n _this.signatures.push(sig);\n });\n }\n\n /**\n * Signs a transaction with the given {@link Keypair}. Useful if someone sends\n * you a transaction XDR for you to sign and return (see\n * [addSignature](#addSignature) for more information).\n *\n * When you get a transaction XDR to sign....\n * - Instantiate a `Transaction` object with the XDR\n * - Use {@link Keypair} to generate a keypair object for your Stellar seed.\n * - Run `getKeypairSignature` with that keypair\n * - Send back the signature along with your publicKey (not your secret seed!)\n *\n * Example:\n * ```javascript\n * // `transactionXDR` is a string from the person generating the transaction\n * const transaction = new Transaction(transactionXDR, networkPassphrase);\n * const keypair = Keypair.fromSecret(myStellarSeed);\n * return transaction.getKeypairSignature(keypair);\n * ```\n *\n * @param {Keypair} keypair Keypair of signer\n * @returns {string} Signature string\n */\n }, {\n key: \"getKeypairSignature\",\n value: function getKeypairSignature(keypair) {\n return keypair.sign(this.hash()).toString('base64');\n }\n\n /**\n * Add a signature to the transaction. Useful when a party wants to pre-sign\n * a transaction but doesn't want to give access to their secret keys.\n * This will also verify whether the signature is valid.\n *\n * Here's how you would use this feature to solicit multiple signatures.\n * - Use `TransactionBuilder` to build a new transaction.\n * - Make sure to set a long enough timeout on that transaction to give your\n * signers enough time to sign!\n * - Once you build the transaction, use `transaction.toXDR()` to get the\n * base64-encoded XDR string.\n * - _Warning!_ Once you've built this transaction, don't submit any other\n * transactions onto your account! Doing so will invalidate this pre-compiled\n * transaction!\n * - Send this XDR string to your other parties. They can use the instructions\n * for [getKeypairSignature](#getKeypairSignature) to sign the transaction.\n * - They should send you back their `publicKey` and the `signature` string\n * from [getKeypairSignature](#getKeypairSignature), both of which you pass to\n * this function.\n *\n * @param {string} publicKey The public key of the signer\n * @param {string} signature The base64 value of the signature XDR\n * @returns {void}\n */\n }, {\n key: \"addSignature\",\n value: function addSignature() {\n var publicKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var signature = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n if (!signature || typeof signature !== 'string') {\n throw new Error('Invalid signature');\n }\n if (!publicKey || typeof publicKey !== 'string') {\n throw new Error('Invalid publicKey');\n }\n var keypair;\n var hint;\n var signatureBuffer = Buffer.from(signature, 'base64');\n try {\n keypair = _keypair.Keypair.fromPublicKey(publicKey);\n hint = keypair.signatureHint();\n } catch (e) {\n throw new Error('Invalid publicKey');\n }\n if (!keypair.verify(this.hash(), signatureBuffer)) {\n throw new Error('Invalid signature');\n }\n this.signatures.push(new _xdr[\"default\"].DecoratedSignature({\n hint: hint,\n signature: signatureBuffer\n }));\n }\n\n /**\n * Add a decorated signature directly to the transaction envelope.\n *\n * @param {xdr.DecoratedSignature} signature raw signature to add\n * @returns {void}\n *\n * @see Keypair.signDecorated\n * @see Keypair.signPayloadDecorated\n */\n }, {\n key: \"addDecoratedSignature\",\n value: function addDecoratedSignature(signature) {\n this.signatures.push(signature);\n }\n\n /**\n * Add `hashX` signer preimage as signature.\n * @param {Buffer|String} preimage Preimage of hash used as signer\n * @returns {void}\n */\n }, {\n key: \"signHashX\",\n value: function signHashX(preimage) {\n if (typeof preimage === 'string') {\n preimage = Buffer.from(preimage, 'hex');\n }\n if (preimage.length > 64) {\n throw new Error('preimage cannnot be longer than 64 bytes');\n }\n var signature = preimage;\n var hashX = (0, _hashing.hash)(preimage);\n var hint = hashX.slice(hashX.length - 4);\n this.signatures.push(new _xdr[\"default\"].DecoratedSignature({\n hint: hint,\n signature: signature\n }));\n }\n\n /**\n * Returns a hash for this transaction, suitable for signing.\n * @returns {Buffer}\n */\n }, {\n key: \"hash\",\n value: function hash() {\n return (0, _hashing.hash)(this.signatureBase());\n }\n }, {\n key: \"signatureBase\",\n value: function signatureBase() {\n throw new Error('Implement in subclass');\n }\n }, {\n key: \"toEnvelope\",\n value: function toEnvelope() {\n throw new Error('Implement in subclass');\n }\n\n /**\n * Get the transaction envelope as a base64-encoded string\n * @returns {string} XDR string\n */\n }, {\n key: \"toXDR\",\n value: function toXDR() {\n return this.toEnvelope().toXDR().toString('base64');\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _bignumber = _interopRequireDefault(require(\"bignumber.js\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nvar BigNumber = _bignumber[\"default\"].clone();\nBigNumber.DEBUG = true; // gives us exceptions on bad constructor values\nvar _default = exports[\"default\"] = BigNumber;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.best_r = best_r;\nvar _bignumber = _interopRequireDefault(require(\"./bignumber\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n// eslint-disable-next-line no-bitwise\nvar MAX_INT = (1 << 31 >>> 0) - 1;\n\n/**\n * Calculates and returns the best rational approximation of the given real number.\n * @private\n * @param {string|number|BigNumber} rawNumber Real number\n * @throws Error Throws `Error` when the best rational approximation cannot be found.\n * @returns {array} first element is n (numerator), second element is d (denominator)\n */\nfunction best_r(rawNumber) {\n var number = new _bignumber[\"default\"](rawNumber);\n var a;\n var f;\n var fractions = [[new _bignumber[\"default\"](0), new _bignumber[\"default\"](1)], [new _bignumber[\"default\"](1), new _bignumber[\"default\"](0)]];\n var i = 2;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (number.gt(MAX_INT)) {\n break;\n }\n a = number.integerValue(_bignumber[\"default\"].ROUND_FLOOR);\n f = number.minus(a);\n var h = a.times(fractions[i - 1][0]).plus(fractions[i - 2][0]);\n var k = a.times(fractions[i - 1][1]).plus(fractions[i - 2][1]);\n if (h.gt(MAX_INT) || k.gt(MAX_INT)) {\n break;\n }\n fractions.push([h, k]);\n if (f.eq(0)) {\n break;\n }\n number = new _bignumber[\"default\"](1).div(f);\n i += 1;\n }\n var _fractions = _slicedToArray(fractions[fractions.length - 1], 2),\n n = _fractions[0],\n d = _fractions[1];\n if (n.isZero() || d.isZero()) {\n throw new Error(\"Couldn't find approximation\");\n }\n return [n.toNumber(), d.toNumber()];\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LiquidityPoolAsset = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _asset = require(\"./asset\");\nvar _get_liquidity_pool_id = require(\"./get_liquidity_pool_id\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * LiquidityPoolAsset class represents a liquidity pool trustline change.\n *\n * @constructor\n * @param {Asset} assetA \u2013 The first asset in the Pool, it must respect the rule assetA < assetB. See {@link Asset.compare} for more details on how assets are sorted.\n * @param {Asset} assetB \u2013 The second asset in the Pool, it must respect the rule assetA < assetB. See {@link Asset.compare} for more details on how assets are sorted.\n * @param {number} fee \u2013 The liquidity pool fee. For now the only fee supported is `30`.\n */\nvar LiquidityPoolAsset = exports.LiquidityPoolAsset = /*#__PURE__*/function () {\n function LiquidityPoolAsset(assetA, assetB, fee) {\n _classCallCheck(this, LiquidityPoolAsset);\n if (!assetA || !(assetA instanceof _asset.Asset)) {\n throw new Error('assetA is invalid');\n }\n if (!assetB || !(assetB instanceof _asset.Asset)) {\n throw new Error('assetB is invalid');\n }\n if (_asset.Asset.compare(assetA, assetB) !== -1) {\n throw new Error('Assets are not in lexicographic order');\n }\n if (!fee || fee !== _get_liquidity_pool_id.LiquidityPoolFeeV18) {\n throw new Error('fee is invalid');\n }\n this.assetA = assetA;\n this.assetB = assetB;\n this.fee = fee;\n }\n\n /**\n * Returns a liquidity pool asset object from its XDR ChangeTrustAsset object\n * representation.\n * @param {xdr.ChangeTrustAsset} ctAssetXdr - The asset XDR object.\n * @returns {LiquidityPoolAsset}\n */\n return _createClass(LiquidityPoolAsset, [{\n key: \"toXDRObject\",\n value:\n /**\n * Returns the `xdr.ChangeTrustAsset` object for this liquidity pool asset.\n *\n * Note: To convert from an {@link Asset `Asset`} to `xdr.ChangeTrustAsset`\n * please refer to the\n * {@link Asset.toChangeTrustXDRObject `Asset.toChangeTrustXDRObject`} method.\n *\n * @returns {xdr.ChangeTrustAsset} XDR ChangeTrustAsset object.\n */\n function toXDRObject() {\n var lpConstantProductParamsXdr = new _xdr[\"default\"].LiquidityPoolConstantProductParameters({\n assetA: this.assetA.toXDRObject(),\n assetB: this.assetB.toXDRObject(),\n fee: this.fee\n });\n var lpParamsXdr = new _xdr[\"default\"].LiquidityPoolParameters('liquidityPoolConstantProduct', lpConstantProductParamsXdr);\n return new _xdr[\"default\"].ChangeTrustAsset('assetTypePoolShare', lpParamsXdr);\n }\n\n /**\n * @returns {LiquidityPoolParameters} Liquidity pool parameters.\n */\n }, {\n key: \"getLiquidityPoolParameters\",\n value: function getLiquidityPoolParameters() {\n return _objectSpread(_objectSpread({}, this), {}, {\n assetA: this.assetA,\n assetB: this.assetB,\n fee: this.fee\n });\n }\n\n /**\n * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/)\n * @returns {AssetType.liquidityPoolShares} asset type. Can only be `liquidity_pool_shares`.\n */\n }, {\n key: \"getAssetType\",\n value: function getAssetType() {\n return 'liquidity_pool_shares';\n }\n\n /**\n * @param {LiquidityPoolAsset} other the LiquidityPoolAsset to compare\n * @returns {boolean} `true` if this asset equals the given asset.\n */\n }, {\n key: \"equals\",\n value: function equals(other) {\n return this.assetA.equals(other.assetA) && this.assetB.equals(other.assetB) && this.fee === other.fee;\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var poolId = (0, _get_liquidity_pool_id.getLiquidityPoolId)('constant_product', this.getLiquidityPoolParameters()).toString('hex');\n return \"liquidity_pool:\".concat(poolId);\n }\n }], [{\n key: \"fromOperation\",\n value: function fromOperation(ctAssetXdr) {\n var assetType = ctAssetXdr[\"switch\"]();\n if (assetType === _xdr[\"default\"].AssetType.assetTypePoolShare()) {\n var liquidityPoolParameters = ctAssetXdr.liquidityPool().constantProduct();\n return new this(_asset.Asset.fromOperation(liquidityPoolParameters.assetA()), _asset.Asset.fromOperation(liquidityPoolParameters.assetB()), liquidityPoolParameters.fee());\n }\n throw new Error(\"Invalid asset type: \".concat(assetType.name));\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Claimant = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _keypair = require(\"./keypair\");\nvar _strkey = require(\"./strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Claimant class represents an xdr.Claimant\n *\n * The claim predicate is optional, it defaults to unconditional if none is specified.\n *\n * @constructor\n * @param {string} destination - The destination account ID.\n * @param {xdr.ClaimPredicate} [predicate] - The claim predicate.\n */\nvar Claimant = exports.Claimant = /*#__PURE__*/function () {\n function Claimant(destination, predicate) {\n _classCallCheck(this, Claimant);\n if (destination && !_strkey.StrKey.isValidEd25519PublicKey(destination)) {\n throw new Error('Destination is invalid');\n }\n this._destination = destination;\n if (!predicate) {\n this._predicate = _xdr[\"default\"].ClaimPredicate.claimPredicateUnconditional();\n } else if (predicate instanceof _xdr[\"default\"].ClaimPredicate) {\n this._predicate = predicate;\n } else {\n throw new Error('Predicate should be an xdr.ClaimPredicate');\n }\n }\n\n /**\n * Returns an unconditional claim predicate\n * @Return {xdr.ClaimPredicate}\n */\n return _createClass(Claimant, [{\n key: \"toXDRObject\",\n value:\n /**\n * Returns the xdr object for this claimant.\n * @returns {xdr.Claimant} XDR Claimant object\n */\n function toXDRObject() {\n var claimant = new _xdr[\"default\"].ClaimantV0({\n destination: _keypair.Keypair.fromPublicKey(this._destination).xdrAccountId(),\n predicate: this._predicate\n });\n return _xdr[\"default\"].Claimant.claimantTypeV0(claimant);\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"destination\",\n get: function get() {\n return this._destination;\n },\n set: function set(value) {\n throw new Error('Claimant is immutable');\n }\n\n /**\n * @type {xdr.ClaimPredicate}\n * @readonly\n */\n }, {\n key: \"predicate\",\n get: function get() {\n return this._predicate;\n },\n set: function set(value) {\n throw new Error('Claimant is immutable');\n }\n }], [{\n key: \"predicateUnconditional\",\n value: function predicateUnconditional() {\n return _xdr[\"default\"].ClaimPredicate.claimPredicateUnconditional();\n }\n\n /**\n * Returns an `and` claim predicate\n * @param {xdr.ClaimPredicate} left an xdr.ClaimPredicate\n * @param {xdr.ClaimPredicate} right an xdr.ClaimPredicate\n * @Return {xdr.ClaimPredicate}\n */\n }, {\n key: \"predicateAnd\",\n value: function predicateAnd(left, right) {\n if (!(left instanceof _xdr[\"default\"].ClaimPredicate)) {\n throw new Error('left Predicate should be an xdr.ClaimPredicate');\n }\n if (!(right instanceof _xdr[\"default\"].ClaimPredicate)) {\n throw new Error('right Predicate should be an xdr.ClaimPredicate');\n }\n return _xdr[\"default\"].ClaimPredicate.claimPredicateAnd([left, right]);\n }\n\n /**\n * Returns an `or` claim predicate\n * @param {xdr.ClaimPredicate} left an xdr.ClaimPredicate\n * @param {xdr.ClaimPredicate} right an xdr.ClaimPredicate\n * @Return {xdr.ClaimPredicate}\n */\n }, {\n key: \"predicateOr\",\n value: function predicateOr(left, right) {\n if (!(left instanceof _xdr[\"default\"].ClaimPredicate)) {\n throw new Error('left Predicate should be an xdr.ClaimPredicate');\n }\n if (!(right instanceof _xdr[\"default\"].ClaimPredicate)) {\n throw new Error('right Predicate should be an xdr.ClaimPredicate');\n }\n return _xdr[\"default\"].ClaimPredicate.claimPredicateOr([left, right]);\n }\n\n /**\n * Returns a `not` claim predicate\n * @param {xdr.ClaimPredicate} predicate an xdr.ClaimPredicate\n * @Return {xdr.ClaimPredicate}\n */\n }, {\n key: \"predicateNot\",\n value: function predicateNot(predicate) {\n if (!(predicate instanceof _xdr[\"default\"].ClaimPredicate)) {\n throw new Error('right Predicate should be an xdr.ClaimPredicate');\n }\n return _xdr[\"default\"].ClaimPredicate.claimPredicateNot(predicate);\n }\n\n /**\n * Returns a `BeforeAbsoluteTime` claim predicate\n *\n * This predicate will be fulfilled if the closing time of the ledger that\n * includes the CreateClaimableBalance operation is less than this (absolute)\n * Unix timestamp (expressed in seconds).\n *\n * @param {string} absBefore Unix epoch (in seconds) as a string\n * @Return {xdr.ClaimPredicate}\n */\n }, {\n key: \"predicateBeforeAbsoluteTime\",\n value: function predicateBeforeAbsoluteTime(absBefore) {\n return _xdr[\"default\"].ClaimPredicate.claimPredicateBeforeAbsoluteTime(_xdr[\"default\"].Int64.fromString(absBefore));\n }\n\n /**\n * Returns a `BeforeRelativeTime` claim predicate\n *\n * This predicate will be fulfilled if the closing time of the ledger that\n * includes the CreateClaimableBalance operation plus this relative time delta\n * (in seconds) is less than the current time.\n *\n * @param {strings} seconds seconds since closeTime of the ledger in which the ClaimableBalanceEntry was created (as string)\n * @Return {xdr.ClaimPredicate}\n */\n }, {\n key: \"predicateBeforeRelativeTime\",\n value: function predicateBeforeRelativeTime(seconds) {\n return _xdr[\"default\"].ClaimPredicate.claimPredicateBeforeRelativeTime(_xdr[\"default\"].Int64.fromString(seconds));\n }\n\n /**\n * Returns a claimant object from its XDR object representation.\n * @param {xdr.Claimant} claimantXdr - The claimant xdr object.\n * @returns {Claimant}\n */\n }, {\n key: \"fromXDR\",\n value: function fromXDR(claimantXdr) {\n var value;\n switch (claimantXdr[\"switch\"]()) {\n case _xdr[\"default\"].ClaimantType.claimantTypeV0():\n value = claimantXdr.v0();\n return new this(_strkey.StrKey.encodeEd25519PublicKey(value.destination().ed25519()), value.predicate());\n default:\n throw new Error(\"Invalid claimant type: \".concat(claimantXdr[\"switch\"]().name));\n }\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LiquidityPoolId = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * LiquidityPoolId class represents the asset referenced by a trustline to a\n * liquidity pool.\n *\n * @constructor\n * @param {string} liquidityPoolId - The ID of the liquidity pool in string 'hex'.\n */\nvar LiquidityPoolId = exports.LiquidityPoolId = /*#__PURE__*/function () {\n function LiquidityPoolId(liquidityPoolId) {\n _classCallCheck(this, LiquidityPoolId);\n if (!liquidityPoolId) {\n throw new Error('liquidityPoolId cannot be empty');\n }\n if (!/^[a-f0-9]{64}$/.test(liquidityPoolId)) {\n throw new Error('Liquidity pool ID is not a valid hash');\n }\n this.liquidityPoolId = liquidityPoolId;\n }\n\n /**\n * Returns a liquidity pool ID object from its xdr.TrustLineAsset representation.\n * @param {xdr.TrustLineAsset} tlAssetXdr - The asset XDR object.\n * @returns {LiquidityPoolId}\n */\n return _createClass(LiquidityPoolId, [{\n key: \"toXDRObject\",\n value:\n /**\n * Returns the `xdr.TrustLineAsset` object for this liquidity pool ID.\n *\n * Note: To convert from {@link Asset `Asset`} to `xdr.TrustLineAsset` please\n * refer to the\n * {@link Asset.toTrustLineXDRObject `Asset.toTrustLineXDRObject`} method.\n *\n * @returns {xdr.TrustLineAsset} XDR LiquidityPoolId object\n */\n function toXDRObject() {\n var xdrPoolId = _xdr[\"default\"].PoolId.fromXDR(this.liquidityPoolId, 'hex');\n return new _xdr[\"default\"].TrustLineAsset('assetTypePoolShare', xdrPoolId);\n }\n\n /**\n * @returns {string} Liquidity pool ID.\n */\n }, {\n key: \"getLiquidityPoolId\",\n value: function getLiquidityPoolId() {\n return String(this.liquidityPoolId);\n }\n\n /**\n * @see [Assets concept](https://developers.stellar.org/docs/glossary/assets/)\n * @returns {AssetType.liquidityPoolShares} asset type. Can only be `liquidity_pool_shares`.\n */\n }, {\n key: \"getAssetType\",\n value: function getAssetType() {\n return 'liquidity_pool_shares';\n }\n\n /**\n * @param {LiquidityPoolId} asset LiquidityPoolId to compare.\n * @returns {boolean} `true` if this asset equals the given asset.\n */\n }, {\n key: \"equals\",\n value: function equals(asset) {\n return this.liquidityPoolId === asset.getLiquidityPoolId();\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return \"liquidity_pool:\".concat(this.liquidityPoolId);\n }\n }], [{\n key: \"fromOperation\",\n value: function fromOperation(tlAssetXdr) {\n var assetType = tlAssetXdr[\"switch\"]();\n if (assetType === _xdr[\"default\"].AssetType.assetTypePoolShare()) {\n var liquidityPoolId = tlAssetXdr.liquidityPoolId().toString('hex');\n return new this(liquidityPoolId);\n }\n throw new Error(\"Invalid asset type: \".concat(assetType.name));\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.manageSellOffer = manageSellOffer;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Returns a XDR ManageSellOfferOp. A \"manage sell offer\" operation creates, updates, or\n * deletes an offer.\n * @function\n * @alias Operation.manageSellOffer\n * @param {object} opts Options object\n * @param {Asset} opts.selling - What you're selling.\n * @param {Asset} opts.buying - What you're buying.\n * @param {string} opts.amount - The total amount you're selling. If 0, deletes the offer.\n * @param {number|string|BigNumber|Object} opts.price - Price of 1 unit of `selling` in terms of `buying`.\n * @param {number} opts.price.n - If `opts.price` is an object: the price numerator\n * @param {number} opts.price.d - If `opts.price` is an object: the price denominator\n * @param {number|string} [opts.offerId ] - If `0`, will create a new offer (default). Otherwise, edits an exisiting offer.\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n * @throws {Error} Throws `Error` when the best rational approximation of `price` cannot be found.\n * @returns {xdr.ManageSellOfferOp} Manage Sell Offer operation\n */\nfunction manageSellOffer(opts) {\n var attributes = {};\n attributes.selling = opts.selling.toXDRObject();\n attributes.buying = opts.buying.toXDRObject();\n if (!this.isValidAmount(opts.amount, true)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n attributes.amount = this._toXDRAmount(opts.amount);\n if (opts.price === undefined) {\n throw new TypeError('price argument is required');\n }\n attributes.price = this._toXDRPrice(opts.price);\n if (opts.offerId !== undefined) {\n opts.offerId = opts.offerId.toString();\n } else {\n opts.offerId = '0';\n }\n attributes.offerId = _jsXdr.Hyper.fromString(opts.offerId);\n var manageSellOfferOp = new _xdr[\"default\"].ManageSellOfferOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.manageSellOffer(manageSellOfferOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createPassiveSellOffer = createPassiveSellOffer;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Returns a XDR CreatePasiveSellOfferOp. A \"create passive offer\" operation creates an\n * offer that won't consume a counter offer that exactly matches this offer. This is\n * useful for offers just used as 1:1 exchanges for path payments. Use manage offer\n * to manage this offer after using this operation to create it.\n * @function\n * @alias Operation.createPassiveSellOffer\n * @param {object} opts Options object\n * @param {Asset} opts.selling - What you're selling.\n * @param {Asset} opts.buying - What you're buying.\n * @param {string} opts.amount - The total amount you're selling. If 0, deletes the offer.\n * @param {number|string|BigNumber|Object} opts.price - Price of 1 unit of `selling` in terms of `buying`.\n * @param {number} opts.price.n - If `opts.price` is an object: the price numerator\n * @param {number} opts.price.d - If `opts.price` is an object: the price denominator\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n * @throws {Error} Throws `Error` when the best rational approximation of `price` cannot be found.\n * @returns {xdr.CreatePassiveSellOfferOp} Create Passive Sell Offer operation\n */\nfunction createPassiveSellOffer(opts) {\n var attributes = {};\n attributes.selling = opts.selling.toXDRObject();\n attributes.buying = opts.buying.toXDRObject();\n if (!this.isValidAmount(opts.amount)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n attributes.amount = this._toXDRAmount(opts.amount);\n if (opts.price === undefined) {\n throw new TypeError('price argument is required');\n }\n attributes.price = this._toXDRPrice(opts.price);\n var createPassiveSellOfferOp = new _xdr[\"default\"].CreatePassiveSellOfferOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.createPassiveSellOffer(createPassiveSellOfferOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decodeAddressToMuxedAccount = decodeAddressToMuxedAccount;\nexports.encodeMuxedAccount = encodeMuxedAccount;\nexports.encodeMuxedAccountToAddress = encodeMuxedAccountToAddress;\nexports.extractBaseAddress = extractBaseAddress;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _strkey = require(\"../strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Converts a Stellar address (in G... or M... form) to an `xdr.MuxedAccount`\n * structure, using the ed25519 representation when possible.\n *\n * This supports full muxed accounts, where an `M...` address will resolve to\n * both its underlying `G...` address and an integer ID.\n *\n * @param {string} address G... or M... address to encode into XDR\n * @returns {xdr.MuxedAccount} a muxed account object for this address string\n */\nfunction decodeAddressToMuxedAccount(address) {\n if (_strkey.StrKey.isValidMed25519PublicKey(address)) {\n return _decodeAddressFullyToMuxedAccount(address);\n }\n return _xdr[\"default\"].MuxedAccount.keyTypeEd25519(_strkey.StrKey.decodeEd25519PublicKey(address));\n}\n\n/**\n * Converts an xdr.MuxedAccount to its StrKey representation.\n *\n * This returns its \"M...\" string representation if there is a muxing ID within\n * the object and returns the \"G...\" representation otherwise.\n *\n * @param {xdr.MuxedAccount} muxedAccount Raw account to stringify\n * @returns {string} Stringified G... (corresponding to the underlying pubkey)\n * or M... address (corresponding to both the key and the muxed ID)\n *\n * @see https://stellar.org/protocol/sep-23\n */\nfunction encodeMuxedAccountToAddress(muxedAccount) {\n if (muxedAccount[\"switch\"]().value === _xdr[\"default\"].CryptoKeyType.keyTypeMuxedEd25519().value) {\n return _encodeMuxedAccountFullyToAddress(muxedAccount);\n }\n return _strkey.StrKey.encodeEd25519PublicKey(muxedAccount.ed25519());\n}\n\n/**\n * Transform a Stellar address (G...) and an ID into its XDR representation.\n *\n * @param {string} address - a Stellar G... address\n * @param {string} id - a Uint64 ID represented as a string\n *\n * @return {xdr.MuxedAccount} - XDR representation of the above muxed account\n */\nfunction encodeMuxedAccount(address, id) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(address)) {\n throw new Error('address should be a Stellar account ID (G...)');\n }\n if (typeof id !== 'string') {\n throw new Error('id should be a string representing a number (uint64)');\n }\n return _xdr[\"default\"].MuxedAccount.keyTypeMuxedEd25519(new _xdr[\"default\"].MuxedAccountMed25519({\n id: _xdr[\"default\"].Uint64.fromString(id),\n ed25519: _strkey.StrKey.decodeEd25519PublicKey(address)\n }));\n}\n\n/**\n * Extracts the underlying base (G...) address from an M-address.\n * @param {string} address an account address (either M... or G...)\n * @return {string} a Stellar public key address (G...)\n */\nfunction extractBaseAddress(address) {\n if (_strkey.StrKey.isValidEd25519PublicKey(address)) {\n return address;\n }\n if (!_strkey.StrKey.isValidMed25519PublicKey(address)) {\n throw new TypeError(\"expected muxed account (M...), got \".concat(address));\n }\n var muxedAccount = decodeAddressToMuxedAccount(address);\n return _strkey.StrKey.encodeEd25519PublicKey(muxedAccount.med25519().ed25519());\n}\n\n// Decodes an \"M...\" account ID into its MuxedAccount object representation.\nfunction _decodeAddressFullyToMuxedAccount(address) {\n var rawBytes = _strkey.StrKey.decodeMed25519PublicKey(address);\n\n // Decoding M... addresses cannot be done through a simple\n // MuxedAccountMed25519.fromXDR() call, because the definition is:\n //\n // constructor(attributes: { id: Uint64; ed25519: Buffer });\n //\n // Note the ID is the first attribute. However, the ID comes *last* in the\n // stringified (base32-encoded) address itself (it's the last 8-byte suffix).\n // The `fromXDR()` method interprets bytes in order, so we need to parse out\n // the raw binary into its requisite parts, i.e. use the MuxedAccountMed25519\n // constructor directly.\n //\n // Refer to https://github.com/stellar/go/blob/master/xdr/muxed_account.go#L26\n // for the Golang implementation of the M... parsing.\n return _xdr[\"default\"].MuxedAccount.keyTypeMuxedEd25519(new _xdr[\"default\"].MuxedAccountMed25519({\n id: _xdr[\"default\"].Uint64.fromXDR(rawBytes.subarray(-8)),\n ed25519: rawBytes.subarray(0, -8)\n }));\n}\n\n// Converts an xdr.MuxedAccount into its *true* \"M...\" string representation.\nfunction _encodeMuxedAccountFullyToAddress(muxedAccount) {\n if (muxedAccount[\"switch\"]() === _xdr[\"default\"].CryptoKeyType.keyTypeEd25519()) {\n return encodeMuxedAccountToAddress(muxedAccount);\n }\n var muxed = muxedAccount.med25519();\n return _strkey.StrKey.encodeMed25519PublicKey(Buffer.concat([muxed.ed25519(), muxed.id().toXDR('raw')]));\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.accountMerge = accountMerge;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _decode_encode_muxed_account = require(\"../util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Transfers native balance to destination account.\n *\n * @function\n * @alias Operation.accountMerge\n *\n * @param {object} opts - options object\n * @param {string} opts.destination - destination to merge the source account into\n * @param {string} [opts.source] - operation source account (defaults to\n * transaction source)\n *\n * @returns {xdr.Operation} an Account Merge operation (xdr.AccountMergeOp)\n */\nfunction accountMerge(opts) {\n var opAttributes = {};\n try {\n opAttributes.body = _xdr[\"default\"].OperationBody.accountMerge((0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination));\n } catch (e) {\n throw new Error('destination is invalid');\n }\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.allowTrust = allowTrust;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _keypair = require(\"../keypair\");\nvar _strkey = require(\"../strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * @deprecated since v5.0\n *\n * Returns an XDR AllowTrustOp. An \"allow trust\" operation authorizes another\n * account to hold your account's credit for a given asset.\n *\n * @function\n * @alias Operation.allowTrust\n *\n * @param {object} opts Options object\n * @param {string} opts.trustor - The trusting account (the one being authorized)\n * @param {string} opts.assetCode - The asset code being authorized.\n * @param {(0|1|2)} opts.authorize - `1` to authorize, `2` to authorize to maintain liabilities, and `0` to deauthorize.\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n *\n * @returns {xdr.AllowTrustOp} Allow Trust operation\n */\nfunction allowTrust(opts) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.trustor)) {\n throw new Error('trustor is invalid');\n }\n var attributes = {};\n attributes.trustor = _keypair.Keypair.fromPublicKey(opts.trustor).xdrAccountId();\n if (opts.assetCode.length <= 4) {\n var code = opts.assetCode.padEnd(4, '\\0');\n attributes.asset = _xdr[\"default\"].AssetCode.assetTypeCreditAlphanum4(code);\n } else if (opts.assetCode.length <= 12) {\n var _code = opts.assetCode.padEnd(12, '\\0');\n attributes.asset = _xdr[\"default\"].AssetCode.assetTypeCreditAlphanum12(_code);\n } else {\n throw new Error('Asset code must be 12 characters at max.');\n }\n if (typeof opts.authorize === 'boolean') {\n if (opts.authorize) {\n attributes.authorize = _xdr[\"default\"].TrustLineFlags.authorizedFlag().value;\n } else {\n attributes.authorize = 0;\n }\n } else {\n attributes.authorize = opts.authorize;\n }\n var allowTrustOp = new _xdr[\"default\"].AllowTrustOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.allowTrust(allowTrustOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bumpSequence = bumpSequence;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _bignumber = _interopRequireDefault(require(\"../util/bignumber\"));\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * This operation bumps sequence number.\n * @function\n * @alias Operation.bumpSequence\n * @param {object} opts Options object\n * @param {string} opts.bumpTo - Sequence number to bump to.\n * @param {string} [opts.source] - The optional source account.\n * @returns {xdr.BumpSequenceOp} Operation\n */\nfunction bumpSequence(opts) {\n var attributes = {};\n if (typeof opts.bumpTo !== 'string') {\n throw new Error('bumpTo must be a string');\n }\n try {\n // eslint-disable-next-line no-new\n new _bignumber[\"default\"](opts.bumpTo);\n } catch (e) {\n throw new Error('bumpTo must be a stringified number');\n }\n attributes.bumpTo = _jsXdr.Hyper.fromString(opts.bumpTo);\n var bumpSequenceOp = new _xdr[\"default\"].BumpSequenceOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.bumpSequence(bumpSequenceOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.changeTrust = changeTrust;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _bignumber = _interopRequireDefault(require(\"../util/bignumber\"));\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _asset = require(\"../asset\");\nvar _liquidity_pool_asset = require(\"../liquidity_pool_asset\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nvar MAX_INT64 = '9223372036854775807';\n\n/**\n * Returns an XDR ChangeTrustOp. A \"change trust\" operation adds, removes, or updates a\n * trust line for a given asset from the source account to another.\n * @function\n * @alias Operation.changeTrust\n * @param {object} opts Options object\n * @param {Asset | LiquidityPoolAsset} opts.asset - The asset for the trust line.\n * @param {string} [opts.limit] - The limit for the asset, defaults to max int64.\n * If the limit is set to \"0\" it deletes the trustline.\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n * @returns {xdr.ChangeTrustOp} Change Trust operation\n */\nfunction changeTrust(opts) {\n var attributes = {};\n if (opts.asset instanceof _asset.Asset) {\n attributes.line = opts.asset.toChangeTrustXDRObject();\n } else if (opts.asset instanceof _liquidity_pool_asset.LiquidityPoolAsset) {\n attributes.line = opts.asset.toXDRObject();\n } else {\n throw new TypeError('asset must be Asset or LiquidityPoolAsset');\n }\n if (opts.limit !== undefined && !this.isValidAmount(opts.limit, true)) {\n throw new TypeError(this.constructAmountRequirementsError('limit'));\n }\n if (opts.limit) {\n attributes.limit = this._toXDRAmount(opts.limit);\n } else {\n attributes.limit = _jsXdr.Hyper.fromString(new _bignumber[\"default\"](MAX_INT64).toString());\n }\n if (opts.source) {\n attributes.source = opts.source.masterKeypair;\n }\n var changeTrustOP = new _xdr[\"default\"].ChangeTrustOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.changeTrust(changeTrustOP);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createAccount = createAccount;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _keypair = require(\"../keypair\");\nvar _strkey = require(\"../strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create and fund a non existent account.\n * @function\n * @alias Operation.createAccount\n * @param {object} opts Options object\n * @param {string} opts.destination - Destination account ID to create an account for.\n * @param {string} opts.startingBalance - Amount in XLM the account should be funded for. Must be greater\n * than the [reserve balance amount](https://developers.stellar.org/docs/glossary/fees/).\n * @param {string} [opts.source] - The source account for the payment. Defaults to the transaction's source account.\n * @returns {xdr.CreateAccountOp} Create account operation\n */\nfunction createAccount(opts) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.destination)) {\n throw new Error('destination is invalid');\n }\n if (!this.isValidAmount(opts.startingBalance, true)) {\n throw new TypeError(this.constructAmountRequirementsError('startingBalance'));\n }\n var attributes = {};\n attributes.destination = _keypair.Keypair.fromPublicKey(opts.destination).xdrAccountId();\n attributes.startingBalance = this._toXDRAmount(opts.startingBalance);\n var createAccountOp = new _xdr[\"default\"].CreateAccountOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.createAccount(createAccountOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createClaimableBalance = createClaimableBalance;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _asset = require(\"../asset\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create a new claimable balance operation.\n *\n * @function\n * @alias Operation.createClaimableBalance\n *\n * @param {object} opts Options object\n * @param {Asset} opts.asset - The asset for the claimable balance.\n * @param {string} opts.amount - Amount.\n * @param {Claimant[]} opts.claimants - An array of Claimants\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n *\n * @returns {xdr.Operation} Create claimable balance operation\n *\n * @example\n * const asset = new Asset(\n * 'USD',\n * 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7'\n * );\n * const amount = '100.0000000';\n * const claimants = [\n * new Claimant(\n * 'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ',\n * Claimant.predicateBeforeAbsoluteTime(\"4102444800000\")\n * )\n * ];\n *\n * const op = Operation.createClaimableBalance({\n * asset,\n * amount,\n * claimants\n * });\n *\n */\nfunction createClaimableBalance(opts) {\n if (!(opts.asset instanceof _asset.Asset)) {\n throw new Error('must provide an asset for create claimable balance operation');\n }\n if (!this.isValidAmount(opts.amount)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n if (!Array.isArray(opts.claimants) || opts.claimants.length === 0) {\n throw new Error('must provide at least one claimant');\n }\n var attributes = {};\n attributes.asset = opts.asset.toXDRObject();\n attributes.amount = this._toXDRAmount(opts.amount);\n attributes.claimants = Object.values(opts.claimants).map(function (c) {\n return c.toXDRObject();\n });\n var createClaimableBalanceOp = new _xdr[\"default\"].CreateClaimableBalanceOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.createClaimableBalance(createClaimableBalanceOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.claimClaimableBalance = claimClaimableBalance;\nexports.validateClaimableBalanceId = validateClaimableBalanceId;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create a new claim claimable balance operation.\n * @function\n * @alias Operation.claimClaimableBalance\n * @param {object} opts Options object\n * @param {string} opts.balanceId - The claimable balance id to be claimed.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} Claim claimable balance operation\n *\n * @example\n * const op = Operation.claimClaimableBalance({\n * balanceId: '00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be',\n * });\n *\n */\nfunction claimClaimableBalance() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n validateClaimableBalanceId(opts.balanceId);\n var attributes = {};\n attributes.balanceId = _xdr[\"default\"].ClaimableBalanceId.fromXDR(opts.balanceId, 'hex');\n var claimClaimableBalanceOp = new _xdr[\"default\"].ClaimClaimableBalanceOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.claimClaimableBalance(claimClaimableBalanceOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\nfunction validateClaimableBalanceId(balanceId) {\n if (typeof balanceId !== 'string' || balanceId.length !== 8 + 64 /* 8b discriminant + 64b string */) {\n throw new Error('must provide a valid claimable balance id');\n }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clawbackClaimableBalance = clawbackClaimableBalance;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _claim_claimable_balance = require(\"./claim_claimable_balance\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a clawback operation for a claimable balance.\n *\n * @function\n * @alias Operation.clawbackClaimableBalance\n * @param {object} opts - Options object\n * @param {string} opts.balanceId - The claimable balance ID to be clawed back.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n *\n * @return {xdr.ClawbackClaimableBalanceOp}\n *\n * @example\n * const op = Operation.clawbackClaimableBalance({\n * balanceId: '00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be',\n * });\n *\n * @link https://github.com/stellar/stellar-protocol/blob/master/core/cap-0035.md#clawback-claimable-balance-operation\n */\nfunction clawbackClaimableBalance() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _claim_claimable_balance.validateClaimableBalanceId)(opts.balanceId);\n var attributes = {\n balanceId: _xdr[\"default\"].ClaimableBalanceId.fromXDR(opts.balanceId, 'hex')\n };\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.clawbackClaimableBalance(new _xdr[\"default\"].ClawbackClaimableBalanceOp(attributes))\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.inflation = inflation;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * This operation generates the inflation.\n * @function\n * @alias Operation.inflation\n * @param {object} [opts] Options object\n * @param {string} [opts.source] - The optional source account.\n * @returns {xdr.InflationOp} Inflation operation\n */\nfunction inflation() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.inflation();\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.manageData = manageData;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * This operation adds data entry to the ledger.\n * @function\n * @alias Operation.manageData\n * @param {object} opts Options object\n * @param {string} opts.name - The name of the data entry.\n * @param {string|Buffer} opts.value - The value of the data entry.\n * @param {string} [opts.source] - The optional source account.\n * @returns {xdr.ManageDataOp} Manage Data operation\n */\nfunction manageData(opts) {\n var attributes = {};\n if (!(typeof opts.name === 'string' && opts.name.length <= 64)) {\n throw new Error('name must be a string, up to 64 characters');\n }\n attributes.dataName = opts.name;\n if (typeof opts.value !== 'string' && !Buffer.isBuffer(opts.value) && opts.value !== null) {\n throw new Error('value must be a string, Buffer or null');\n }\n if (typeof opts.value === 'string') {\n attributes.dataValue = Buffer.from(opts.value);\n } else {\n attributes.dataValue = opts.value;\n }\n if (attributes.dataValue !== null && attributes.dataValue.length > 64) {\n throw new Error('value cannot be longer that 64 bytes');\n }\n var manageDataOp = new _xdr[\"default\"].ManageDataOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.manageData(manageDataOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.manageBuyOffer = manageBuyOffer;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Returns a XDR ManageBuyOfferOp. A \"manage buy offer\" operation creates, updates, or\n * deletes a buy offer.\n * @function\n * @alias Operation.manageBuyOffer\n * @param {object} opts Options object\n * @param {Asset} opts.selling - What you're selling.\n * @param {Asset} opts.buying - What you're buying.\n * @param {string} opts.buyAmount - The total amount you're buying. If 0, deletes the offer.\n * @param {number|string|BigNumber|Object} opts.price - Price of 1 unit of `buying` in terms of `selling`.\n * @param {number} opts.price.n - If `opts.price` is an object: the price numerator\n * @param {number} opts.price.d - If `opts.price` is an object: the price denominator\n * @param {number|string} [opts.offerId ] - If `0`, will create a new offer (default). Otherwise, edits an exisiting offer.\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n * @throws {Error} Throws `Error` when the best rational approximation of `price` cannot be found.\n * @returns {xdr.ManageBuyOfferOp} Manage Buy Offer operation\n */\nfunction manageBuyOffer(opts) {\n var attributes = {};\n attributes.selling = opts.selling.toXDRObject();\n attributes.buying = opts.buying.toXDRObject();\n if (!this.isValidAmount(opts.buyAmount, true)) {\n throw new TypeError(this.constructAmountRequirementsError('buyAmount'));\n }\n attributes.buyAmount = this._toXDRAmount(opts.buyAmount);\n if (opts.price === undefined) {\n throw new TypeError('price argument is required');\n }\n attributes.price = this._toXDRPrice(opts.price);\n if (opts.offerId !== undefined) {\n opts.offerId = opts.offerId.toString();\n } else {\n opts.offerId = '0';\n }\n attributes.offerId = _jsXdr.Hyper.fromString(opts.offerId);\n var manageBuyOfferOp = new _xdr[\"default\"].ManageBuyOfferOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.manageBuyOffer(manageBuyOfferOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pathPaymentStrictReceive = pathPaymentStrictReceive;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _decode_encode_muxed_account = require(\"../util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a PathPaymentStrictReceive operation.\n *\n * A `PathPaymentStrictReceive` operation sends the specified amount to the\n * destination account. It credits the destination with `destAmount` of\n * `destAsset`, while debiting at most `sendMax` of `sendAsset` from the source.\n * The transfer optionally occurs through a path. XLM payments create the\n * destination account if it does not exist.\n *\n * @function\n * @alias Operation.pathPaymentStrictReceive\n * @see https://developers.stellar.org/docs/start/list-of-operations/#path-payment-strict-receive\n *\n * @param {object} opts - Options object\n * @param {Asset} opts.sendAsset - asset to pay with\n * @param {string} opts.sendMax - maximum amount of sendAsset to send\n * @param {string} opts.destination - destination account to send to\n * @param {Asset} opts.destAsset - asset the destination will receive\n * @param {string} opts.destAmount - amount the destination receives\n * @param {Asset[]} opts.path - array of Asset objects to use as the path\n *\n * @param {string} [opts.source] - The source account for the payment.\n * Defaults to the transaction's source account.\n *\n * @returns {xdr.PathPaymentStrictReceiveOp} the resulting path payment op\n */\nfunction pathPaymentStrictReceive(opts) {\n switch (true) {\n case !opts.sendAsset:\n throw new Error('Must specify a send asset');\n case !this.isValidAmount(opts.sendMax):\n throw new TypeError(this.constructAmountRequirementsError('sendMax'));\n case !opts.destAsset:\n throw new Error('Must provide a destAsset for a payment operation');\n case !this.isValidAmount(opts.destAmount):\n throw new TypeError(this.constructAmountRequirementsError('destAmount'));\n default:\n break;\n }\n var attributes = {};\n attributes.sendAsset = opts.sendAsset.toXDRObject();\n attributes.sendMax = this._toXDRAmount(opts.sendMax);\n try {\n attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination);\n } catch (e) {\n throw new Error('destination is invalid');\n }\n attributes.destAsset = opts.destAsset.toXDRObject();\n attributes.destAmount = this._toXDRAmount(opts.destAmount);\n var path = opts.path ? opts.path : [];\n attributes.path = path.map(function (x) {\n return x.toXDRObject();\n });\n var payment = new _xdr[\"default\"].PathPaymentStrictReceiveOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.pathPaymentStrictReceive(payment);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pathPaymentStrictSend = pathPaymentStrictSend;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _decode_encode_muxed_account = require(\"../util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a PathPaymentStrictSend operation.\n *\n * A `PathPaymentStrictSend` operation sends the specified amount to the\n * destination account crediting at least `destMin` of `destAsset`, optionally\n * through a path. XLM payments create the destination account if it does not\n * exist.\n *\n * @function\n * @alias Operation.pathPaymentStrictSend\n * @see https://developers.stellar.org/docs/start/list-of-operations/#path-payment-strict-send\n *\n * @param {object} opts - Options object\n * @param {Asset} opts.sendAsset - asset to pay with\n * @param {string} opts.sendAmount - amount of sendAsset to send (excluding fees)\n * @param {string} opts.destination - destination account to send to\n * @param {Asset} opts.destAsset - asset the destination will receive\n * @param {string} opts.destMin - minimum amount of destAsset to be receive\n * @param {Asset[]} opts.path - array of Asset objects to use as the path\n *\n * @param {string} [opts.source] - The source account for the payment.\n * Defaults to the transaction's source account.\n *\n * @returns {xdr.Operation} the resulting path payment operation\n * (xdr.PathPaymentStrictSendOp)\n */\nfunction pathPaymentStrictSend(opts) {\n switch (true) {\n case !opts.sendAsset:\n throw new Error('Must specify a send asset');\n case !this.isValidAmount(opts.sendAmount):\n throw new TypeError(this.constructAmountRequirementsError('sendAmount'));\n case !opts.destAsset:\n throw new Error('Must provide a destAsset for a payment operation');\n case !this.isValidAmount(opts.destMin):\n throw new TypeError(this.constructAmountRequirementsError('destMin'));\n default:\n break;\n }\n var attributes = {};\n attributes.sendAsset = opts.sendAsset.toXDRObject();\n attributes.sendAmount = this._toXDRAmount(opts.sendAmount);\n try {\n attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination);\n } catch (e) {\n throw new Error('destination is invalid');\n }\n attributes.destAsset = opts.destAsset.toXDRObject();\n attributes.destMin = this._toXDRAmount(opts.destMin);\n var path = opts.path ? opts.path : [];\n attributes.path = path.map(function (x) {\n return x.toXDRObject();\n });\n var payment = new _xdr[\"default\"].PathPaymentStrictSendOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.pathPaymentStrictSend(payment);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.payment = payment;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _decode_encode_muxed_account = require(\"../util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create a payment operation.\n *\n * @function\n * @alias Operation.payment\n * @see https://developers.stellar.org/docs/start/list-of-operations/#payment\n *\n * @param {object} opts - Options object\n * @param {string} opts.destination - destination account ID\n * @param {Asset} opts.asset - asset to send\n * @param {string} opts.amount - amount to send\n *\n * @param {string} [opts.source] - The source account for the payment.\n * Defaults to the transaction's source account.\n *\n * @returns {xdr.Operation} The resulting payment operation (xdr.PaymentOp)\n */\nfunction payment(opts) {\n if (!opts.asset) {\n throw new Error('Must provide an asset for a payment operation');\n }\n if (!this.isValidAmount(opts.amount)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n var attributes = {};\n try {\n attributes.destination = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.destination);\n } catch (e) {\n throw new Error('destination is invalid');\n }\n attributes.asset = opts.asset.toXDRObject();\n attributes.amount = this._toXDRAmount(opts.amount);\n var paymentOp = new _xdr[\"default\"].PaymentOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.payment(paymentOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setOptions = setOptions;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _keypair = require(\"../keypair\");\nvar _strkey = require(\"../strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/* eslint-disable no-param-reassign */\n\nfunction weightCheckFunction(value, name) {\n if (value >= 0 && value <= 255) {\n return true;\n }\n throw new Error(\"\".concat(name, \" value must be between 0 and 255\"));\n}\n\n/**\n * Returns an XDR SetOptionsOp. A \"set options\" operations set or clear account flags,\n * set the account's inflation destination, and/or add new signers to the account.\n * The flags used in `opts.clearFlags` and `opts.setFlags` can be the following:\n * - `{@link AuthRequiredFlag}`\n * - `{@link AuthRevocableFlag}`\n * - `{@link AuthImmutableFlag}`\n * - `{@link AuthClawbackEnabledFlag}`\n *\n * It's possible to set/clear multiple flags at once using logical or.\n *\n * @function\n * @alias Operation.setOptions\n *\n * @param {object} opts Options object\n * @param {string} [opts.inflationDest] - Set this account ID as the account's inflation destination.\n * @param {(number|string)} [opts.clearFlags] - Bitmap integer for which account flags to clear.\n * @param {(number|string)} [opts.setFlags] - Bitmap integer for which account flags to set.\n * @param {number|string} [opts.masterWeight] - The master key weight.\n * @param {number|string} [opts.lowThreshold] - The sum weight for the low threshold.\n * @param {number|string} [opts.medThreshold] - The sum weight for the medium threshold.\n * @param {number|string} [opts.highThreshold] - The sum weight for the high threshold.\n * @param {object} [opts.signer] - Add or remove a signer from the account. The signer is\n * deleted if the weight is 0. Only one of `ed25519PublicKey`, `sha256Hash`, `preAuthTx` should be defined.\n * @param {string} [opts.signer.ed25519PublicKey] - The ed25519 public key of the signer.\n * @param {Buffer|string} [opts.signer.sha256Hash] - sha256 hash (Buffer or hex string) of preimage that will unlock funds. Preimage should be used as signature of future transaction.\n * @param {Buffer|string} [opts.signer.preAuthTx] - Hash (Buffer or hex string) of transaction that will unlock funds.\n * @param {string} [opts.signer.ed25519SignedPayload] - Signed payload signer (ed25519 public key + raw payload) for atomic transaction signature disclosure.\n * @param {number|string} [opts.signer.weight] - The weight of the new signer (0 to delete or 1-255)\n * @param {string} [opts.homeDomain] - sets the home domain used for reverse federation lookup.\n * @param {string} [opts.source] - The source account (defaults to transaction source).\n *\n * @returns {xdr.SetOptionsOp} XDR operation\n * @see [Account flags](https://developers.stellar.org/docs/glossary/accounts/#flags)\n */\nfunction setOptions(opts) {\n var attributes = {};\n if (opts.inflationDest) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.inflationDest)) {\n throw new Error('inflationDest is invalid');\n }\n attributes.inflationDest = _keypair.Keypair.fromPublicKey(opts.inflationDest).xdrAccountId();\n }\n attributes.clearFlags = this._checkUnsignedIntValue('clearFlags', opts.clearFlags);\n attributes.setFlags = this._checkUnsignedIntValue('setFlags', opts.setFlags);\n attributes.masterWeight = this._checkUnsignedIntValue('masterWeight', opts.masterWeight, weightCheckFunction);\n attributes.lowThreshold = this._checkUnsignedIntValue('lowThreshold', opts.lowThreshold, weightCheckFunction);\n attributes.medThreshold = this._checkUnsignedIntValue('medThreshold', opts.medThreshold, weightCheckFunction);\n attributes.highThreshold = this._checkUnsignedIntValue('highThreshold', opts.highThreshold, weightCheckFunction);\n if (opts.homeDomain !== undefined && typeof opts.homeDomain !== 'string') {\n throw new TypeError('homeDomain argument must be of type String');\n }\n attributes.homeDomain = opts.homeDomain;\n if (opts.signer) {\n var weight = this._checkUnsignedIntValue('signer.weight', opts.signer.weight, weightCheckFunction);\n var key;\n var setValues = 0;\n if (opts.signer.ed25519PublicKey) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.signer.ed25519PublicKey)) {\n throw new Error('signer.ed25519PublicKey is invalid.');\n }\n var rawKey = _strkey.StrKey.decodeEd25519PublicKey(opts.signer.ed25519PublicKey);\n\n // eslint-disable-next-line new-cap\n key = new _xdr[\"default\"].SignerKey.signerKeyTypeEd25519(rawKey);\n setValues += 1;\n }\n if (opts.signer.preAuthTx) {\n if (typeof opts.signer.preAuthTx === 'string') {\n opts.signer.preAuthTx = Buffer.from(opts.signer.preAuthTx, 'hex');\n }\n if (!(Buffer.isBuffer(opts.signer.preAuthTx) && opts.signer.preAuthTx.length === 32)) {\n throw new Error('signer.preAuthTx must be 32 bytes Buffer.');\n }\n\n // eslint-disable-next-line new-cap\n key = new _xdr[\"default\"].SignerKey.signerKeyTypePreAuthTx(opts.signer.preAuthTx);\n setValues += 1;\n }\n if (opts.signer.sha256Hash) {\n if (typeof opts.signer.sha256Hash === 'string') {\n opts.signer.sha256Hash = Buffer.from(opts.signer.sha256Hash, 'hex');\n }\n if (!(Buffer.isBuffer(opts.signer.sha256Hash) && opts.signer.sha256Hash.length === 32)) {\n throw new Error('signer.sha256Hash must be 32 bytes Buffer.');\n }\n\n // eslint-disable-next-line new-cap\n key = new _xdr[\"default\"].SignerKey.signerKeyTypeHashX(opts.signer.sha256Hash);\n setValues += 1;\n }\n if (opts.signer.ed25519SignedPayload) {\n if (!_strkey.StrKey.isValidSignedPayload(opts.signer.ed25519SignedPayload)) {\n throw new Error('signer.ed25519SignedPayload is invalid.');\n }\n var _rawKey = _strkey.StrKey.decodeSignedPayload(opts.signer.ed25519SignedPayload);\n var signedPayloadXdr = _xdr[\"default\"].SignerKeyEd25519SignedPayload.fromXDR(_rawKey);\n\n // eslint-disable-next-line new-cap\n key = _xdr[\"default\"].SignerKey.signerKeyTypeEd25519SignedPayload(signedPayloadXdr);\n setValues += 1;\n }\n if (setValues !== 1) {\n throw new Error('Signer object must contain exactly one of signer.ed25519PublicKey, signer.sha256Hash, signer.preAuthTx.');\n }\n attributes.signer = new _xdr[\"default\"].Signer({\n key: key,\n weight: weight\n });\n }\n var setOptionsOp = new _xdr[\"default\"].SetOptionsOp(attributes);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.setOptions(setOptionsOp);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.beginSponsoringFutureReserves = beginSponsoringFutureReserves;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _strkey = require(\"../strkey\");\nvar _keypair = require(\"../keypair\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create a \"begin sponsoring future reserves\" operation.\n * @function\n * @alias Operation.beginSponsoringFutureReserves\n * @param {object} opts Options object\n * @param {string} opts.sponsoredId - The sponsored account id.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.beginSponsoringFutureReserves({\n * sponsoredId: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7'\n * });\n *\n */\nfunction beginSponsoringFutureReserves() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.sponsoredId)) {\n throw new Error('sponsoredId is invalid');\n }\n var op = new _xdr[\"default\"].BeginSponsoringFutureReservesOp({\n sponsoredId: _keypair.Keypair.fromPublicKey(opts.sponsoredId).xdrAccountId()\n });\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.beginSponsoringFutureReserves(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.endSponsoringFutureReserves = endSponsoringFutureReserves;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create an \"end sponsoring future reserves\" operation.\n * @function\n * @alias Operation.endSponsoringFutureReserves\n * @param {object} opts Options object\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.endSponsoringFutureReserves();\n *\n */\nfunction endSponsoringFutureReserves() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.endSponsoringFutureReserves();\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.revokeAccountSponsorship = revokeAccountSponsorship;\nexports.revokeClaimableBalanceSponsorship = revokeClaimableBalanceSponsorship;\nexports.revokeDataSponsorship = revokeDataSponsorship;\nexports.revokeLiquidityPoolSponsorship = revokeLiquidityPoolSponsorship;\nexports.revokeOfferSponsorship = revokeOfferSponsorship;\nexports.revokeSignerSponsorship = revokeSignerSponsorship;\nexports.revokeTrustlineSponsorship = revokeTrustlineSponsorship;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _strkey = require(\"../strkey\");\nvar _keypair = require(\"../keypair\");\nvar _asset = require(\"../asset\");\nvar _liquidity_pool_id = require(\"../liquidity_pool_id\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Create a \"revoke sponsorship\" operation for an account.\n *\n * @function\n * @alias Operation.revokeAccountSponsorship\n * @param {object} opts Options object\n * @param {string} opts.account - The sponsored account ID.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeAccountSponsorship({\n * account: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7\n * });\n *\n */\nfunction revokeAccountSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) {\n throw new Error('account is invalid');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.account(new _xdr[\"default\"].LedgerKeyAccount({\n accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId()\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Create a \"revoke sponsorship\" operation for a trustline.\n *\n * @function\n * @alias Operation.revokeTrustlineSponsorship\n * @param {object} opts Options object\n * @param {string} opts.account - The account ID which owns the trustline.\n * @param {Asset | LiquidityPoolId} opts.asset - The trustline asset.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeTrustlineSponsorship({\n * account: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7\n * asset: new StellarBase.LiquidityPoolId(\n * 'USDUSD',\n * 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7'\n * )\n * });\n *\n */\nfunction revokeTrustlineSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) {\n throw new Error('account is invalid');\n }\n var asset;\n if (opts.asset instanceof _asset.Asset) {\n asset = opts.asset.toTrustLineXDRObject();\n } else if (opts.asset instanceof _liquidity_pool_id.LiquidityPoolId) {\n asset = opts.asset.toXDRObject();\n } else {\n throw new TypeError('asset must be an Asset or LiquidityPoolId');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.trustline(new _xdr[\"default\"].LedgerKeyTrustLine({\n accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(),\n asset: asset\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Create a \"revoke sponsorship\" operation for an offer.\n *\n * @function\n * @alias Operation.revokeOfferSponsorship\n * @param {object} opts Options object\n * @param {string} opts.seller - The account ID which created the offer.\n * @param {string} opts.offerId - The offer ID.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeOfferSponsorship({\n * seller: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7\n * offerId: '1234'\n * });\n *\n */\nfunction revokeOfferSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.seller)) {\n throw new Error('seller is invalid');\n }\n if (typeof opts.offerId !== 'string') {\n throw new Error('offerId is invalid');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.offer(new _xdr[\"default\"].LedgerKeyOffer({\n sellerId: _keypair.Keypair.fromPublicKey(opts.seller).xdrAccountId(),\n offerId: _xdr[\"default\"].Int64.fromString(opts.offerId)\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Create a \"revoke sponsorship\" operation for a data entry.\n *\n * @function\n * @alias Operation.revokeDataSponsorship\n * @param {object} opts Options object\n * @param {string} opts.account - The account ID which owns the data entry.\n * @param {string} opts.name - The name of the data entry\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeDataSponsorship({\n * account: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7\n * name: 'foo'\n * });\n *\n */\nfunction revokeDataSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) {\n throw new Error('account is invalid');\n }\n if (typeof opts.name !== 'string' || opts.name.length > 64) {\n throw new Error('name must be a string, up to 64 characters');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.data(new _xdr[\"default\"].LedgerKeyData({\n accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(),\n dataName: opts.name\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Create a \"revoke sponsorship\" operation for a claimable balance.\n *\n * @function\n * @alias Operation.revokeClaimableBalanceSponsorship\n * @param {object} opts Options object\n * @param {string} opts.balanceId - The sponsored claimable balance ID.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeClaimableBalanceSponsorship({\n * balanceId: '00000000da0d57da7d4850e7fc10d2a9d0ebc731f7afb40574c03395b17d49149b91f5be',\n * });\n *\n */\nfunction revokeClaimableBalanceSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (typeof opts.balanceId !== 'string') {\n throw new Error('balanceId is invalid');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.claimableBalance(new _xdr[\"default\"].LedgerKeyClaimableBalance({\n balanceId: _xdr[\"default\"].ClaimableBalanceId.fromXDR(opts.balanceId, 'hex')\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Creates a \"revoke sponsorship\" operation for a liquidity pool.\n *\n * @function\n * @alias Operation.revokeLiquidityPoolSponsorship\n * @param {object} opts \u2013 Options object.\n * @param {string} opts.liquidityPoolId - The sponsored liquidity pool ID in 'hex' string.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr Operation.\n *\n * @example\n * const op = Operation.revokeLiquidityPoolSponsorship({\n * liquidityPoolId: 'dd7b1ab831c273310ddbec6f97870aa83c2fbd78ce22aded37ecbf4f3380fac7',\n * });\n *\n */\nfunction revokeLiquidityPoolSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (typeof opts.liquidityPoolId !== 'string') {\n throw new Error('liquidityPoolId is invalid');\n }\n var ledgerKey = _xdr[\"default\"].LedgerKey.liquidityPool(new _xdr[\"default\"].LedgerKeyLiquidityPool({\n liquidityPoolId: _xdr[\"default\"].PoolId.fromXDR(opts.liquidityPoolId, 'hex')\n }));\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipLedgerEntry(ledgerKey);\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.revokeSponsorship(op)\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Create a \"revoke sponsorship\" operation for a signer.\n *\n * @function\n * @alias Operation.revokeSignerSponsorship\n * @param {object} opts Options object\n * @param {string} opts.account - The account ID where the signer sponsorship is being removed from.\n * @param {object} opts.signer - The signer whose sponsorship is being removed.\n * @param {string} [opts.signer.ed25519PublicKey] - The ed25519 public key of the signer.\n * @param {Buffer|string} [opts.signer.sha256Hash] - sha256 hash (Buffer or hex string).\n * @param {Buffer|string} [opts.signer.preAuthTx] - Hash (Buffer or hex string) of transaction.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n * @returns {xdr.Operation} xdr operation\n *\n * @example\n * const op = Operation.revokeSignerSponsorship({\n * account: 'GDGU5OAPHNPU5UCLE5RDJHG7PXZFQYWKCFOEXSXNMR6KRQRI5T6XXCD7\n * signer: {\n * ed25519PublicKey: 'GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ'\n * }\n * })\n *\n */\nfunction revokeSignerSponsorship() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.account)) {\n throw new Error('account is invalid');\n }\n var key;\n if (opts.signer.ed25519PublicKey) {\n if (!_strkey.StrKey.isValidEd25519PublicKey(opts.signer.ed25519PublicKey)) {\n throw new Error('signer.ed25519PublicKey is invalid.');\n }\n var rawKey = _strkey.StrKey.decodeEd25519PublicKey(opts.signer.ed25519PublicKey);\n key = new _xdr[\"default\"].SignerKey.signerKeyTypeEd25519(rawKey);\n } else if (opts.signer.preAuthTx) {\n var buffer;\n if (typeof opts.signer.preAuthTx === 'string') {\n buffer = Buffer.from(opts.signer.preAuthTx, 'hex');\n } else {\n buffer = opts.signer.preAuthTx;\n }\n if (!(Buffer.isBuffer(buffer) && buffer.length === 32)) {\n throw new Error('signer.preAuthTx must be 32 bytes Buffer.');\n }\n key = new _xdr[\"default\"].SignerKey.signerKeyTypePreAuthTx(buffer);\n } else if (opts.signer.sha256Hash) {\n var _buffer;\n if (typeof opts.signer.sha256Hash === 'string') {\n _buffer = Buffer.from(opts.signer.sha256Hash, 'hex');\n } else {\n _buffer = opts.signer.sha256Hash;\n }\n if (!(Buffer.isBuffer(_buffer) && _buffer.length === 32)) {\n throw new Error('signer.sha256Hash must be 32 bytes Buffer.');\n }\n key = new _xdr[\"default\"].SignerKey.signerKeyTypeHashX(_buffer);\n } else {\n throw new Error('signer is invalid');\n }\n var signer = new _xdr[\"default\"].RevokeSponsorshipOpSigner({\n accountId: _keypair.Keypair.fromPublicKey(opts.account).xdrAccountId(),\n signerKey: key\n });\n var op = _xdr[\"default\"].RevokeSponsorshipOp.revokeSponsorshipSigner(signer);\n var opAttributes = {};\n opAttributes.body = _xdr[\"default\"].OperationBody.revokeSponsorship(op);\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clawback = clawback;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _decode_encode_muxed_account = require(\"../util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a clawback operation.\n *\n * @function\n * @alias Operation.clawback\n *\n * @param {object} opts - Options object\n * @param {Asset} opts.asset - The asset being clawed back.\n * @param {string} opts.amount - The amount of the asset to claw back.\n * @param {string} opts.from - The public key of the (optionally-muxed)\n * account to claw back from.\n *\n * @param {string} [opts.source] - The source account for the operation.\n * Defaults to the transaction's source account.\n *\n * @return {xdr.ClawbackOp}\n *\n * @see https://github.com/stellar/stellar-protocol/blob/master/core/cap-0035.md#clawback-operation\n */\nfunction clawback(opts) {\n var attributes = {};\n if (!this.isValidAmount(opts.amount)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n attributes.amount = this._toXDRAmount(opts.amount);\n attributes.asset = opts.asset.toXDRObject();\n try {\n attributes.from = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.from);\n } catch (e) {\n throw new Error('from address is invalid');\n }\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.clawback(new _xdr[\"default\"].ClawbackOp(attributes))\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setTrustLineFlags = setTrustLineFlags;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _keypair = require(\"../keypair\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n * Creates a trustline flag configuring operation.\n *\n * For the flags, set them to true to enable them and false to disable them. Any\n * unmodified operations will be marked `undefined` in the result.\n *\n * Note that you can only **clear** the clawbackEnabled flag set; it must be set\n * account-wide via operations.SetOptions (setting\n * xdr.AccountFlags.clawbackEnabled).\n *\n * @function\n * @alias Operation.setTrustLineFlags\n *\n * @param {object} opts - Options object\n * @param {string} opts.trustor - the account whose trustline this is\n * @param {Asset} opts.asset - the asset on the trustline\n * @param {object} opts.flags - the set of flags to modify\n *\n * @param {bool} [opts.flags.authorized] - authorize account to perform\n * transactions with its credit\n * @param {bool} [opts.flags.authorizedToMaintainLiabilities] - authorize\n * account to maintain and reduce liabilities for its credit\n * @param {bool} [opts.flags.clawbackEnabled] - stop claimable balances on\n * this trustlines from having clawbacks enabled (this flag can only be set\n * to false!)\n * @param {string} [opts.source] - The source account for the operation.\n * Defaults to the transaction's source account.\n *\n * @note You must include at least one flag.\n *\n * @return {xdr.SetTrustLineFlagsOp}\n *\n * @link xdr.AccountFlags\n * @link xdr.TrustLineFlags\n * @see https://github.com/stellar/stellar-protocol/blob/master/core/cap-0035.md#set-trustline-flags-operation\n * @see https://developers.stellar.org/docs/start/list-of-operations/#set-options\n */\nfunction setTrustLineFlags() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var attributes = {};\n if (_typeof(opts.flags) !== 'object' || Object.keys(opts.flags).length === 0) {\n throw new Error('opts.flags must be a map of boolean flags to modify');\n }\n var mapping = {\n authorized: _xdr[\"default\"].TrustLineFlags.authorizedFlag(),\n authorizedToMaintainLiabilities: _xdr[\"default\"].TrustLineFlags.authorizedToMaintainLiabilitiesFlag(),\n clawbackEnabled: _xdr[\"default\"].TrustLineFlags.trustlineClawbackEnabledFlag()\n };\n\n /* eslint no-bitwise: \"off\" */\n var clearFlag = 0;\n var setFlag = 0;\n Object.keys(opts.flags).forEach(function (flagName) {\n if (!Object.prototype.hasOwnProperty.call(mapping, flagName)) {\n throw new Error(\"unsupported flag name specified: \".concat(flagName));\n }\n var flagValue = opts.flags[flagName];\n var bit = mapping[flagName].value;\n if (flagValue === true) {\n setFlag |= bit;\n } else if (flagValue === false) {\n clearFlag |= bit;\n }\n });\n attributes.trustor = _keypair.Keypair.fromPublicKey(opts.trustor).xdrAccountId();\n attributes.asset = opts.asset.toXDRObject();\n attributes.clearFlags = clearFlag;\n attributes.setFlags = setFlag;\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.setTrustLineFlags(new _xdr[\"default\"].SetTrustLineFlagsOp(attributes))\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.liquidityPoolDeposit = liquidityPoolDeposit;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a liquidity pool deposit operation.\n *\n * @function\n * @alias Operation.liquidityPoolDeposit\n * @see https://developers.stellar.org/docs/start/list-of-operations/#liquidity-pool-deposit\n *\n * @param {object} opts - Options object\n * @param {string} opts.liquidityPoolId - The liquidity pool ID.\n * @param {string} opts.maxAmountA - Maximum amount of first asset to deposit.\n * @param {string} opts.maxAmountB - Maximum amount of second asset to deposit.\n * @param {number|string|BigNumber|Object} opts.minPrice - Minimum depositA/depositB price.\n * @param {number} opts.minPrice.n - If `opts.minPrice` is an object: the price numerator\n * @param {number} opts.minPrice.d - If `opts.minPrice` is an object: the price denominator\n * @param {number|string|BigNumber|Object} opts.maxPrice - Maximum depositA/depositB price.\n * @param {number} opts.maxPrice.n - If `opts.maxPrice` is an object: the price numerator\n * @param {number} opts.maxPrice.d - If `opts.maxPrice` is an object: the price denominator\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n *\n * @returns {xdr.Operation} The resulting operation (xdr.LiquidityPoolDepositOp).\n */\nfunction liquidityPoolDeposit() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var liquidityPoolId = opts.liquidityPoolId,\n maxAmountA = opts.maxAmountA,\n maxAmountB = opts.maxAmountB,\n minPrice = opts.minPrice,\n maxPrice = opts.maxPrice;\n var attributes = {};\n if (!liquidityPoolId) {\n throw new TypeError('liquidityPoolId argument is required');\n }\n attributes.liquidityPoolId = _xdr[\"default\"].PoolId.fromXDR(liquidityPoolId, 'hex');\n if (!this.isValidAmount(maxAmountA, true)) {\n throw new TypeError(this.constructAmountRequirementsError('maxAmountA'));\n }\n attributes.maxAmountA = this._toXDRAmount(maxAmountA);\n if (!this.isValidAmount(maxAmountB, true)) {\n throw new TypeError(this.constructAmountRequirementsError('maxAmountB'));\n }\n attributes.maxAmountB = this._toXDRAmount(maxAmountB);\n if (minPrice === undefined) {\n throw new TypeError('minPrice argument is required');\n }\n attributes.minPrice = this._toXDRPrice(minPrice);\n if (maxPrice === undefined) {\n throw new TypeError('maxPrice argument is required');\n }\n attributes.maxPrice = this._toXDRPrice(maxPrice);\n var liquidityPoolDepositOp = new _xdr[\"default\"].LiquidityPoolDepositOp(attributes);\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.liquidityPoolDeposit(liquidityPoolDepositOp)\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.liquidityPoolWithdraw = liquidityPoolWithdraw;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Creates a liquidity pool withdraw operation.\n *\n * @function\n * @alias Operation.liquidityPoolWithdraw\n * @see https://developers.stellar.org/docs/start/list-of-operations/#liquidity-pool-withdraw\n *\n * @param {object} opts - Options object\n * @param {string} opts.liquidityPoolId - The liquidity pool ID.\n * @param {string} opts.amount - Amount of pool shares to withdraw.\n * @param {string} opts.minAmountA - Minimum amount of first asset to withdraw.\n * @param {string} opts.minAmountB - Minimum amount of second asset to withdraw.\n * @param {string} [opts.source] - The source account for the operation. Defaults to the transaction's source account.\n *\n * @returns {xdr.Operation} The resulting operation (xdr.LiquidityPoolWithdrawOp).\n */\nfunction liquidityPoolWithdraw() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var attributes = {};\n if (!opts.liquidityPoolId) {\n throw new TypeError('liquidityPoolId argument is required');\n }\n attributes.liquidityPoolId = _xdr[\"default\"].PoolId.fromXDR(opts.liquidityPoolId, 'hex');\n if (!this.isValidAmount(opts.amount)) {\n throw new TypeError(this.constructAmountRequirementsError('amount'));\n }\n attributes.amount = this._toXDRAmount(opts.amount);\n if (!this.isValidAmount(opts.minAmountA, true)) {\n throw new TypeError(this.constructAmountRequirementsError('minAmountA'));\n }\n attributes.minAmountA = this._toXDRAmount(opts.minAmountA);\n if (!this.isValidAmount(opts.minAmountB, true)) {\n throw new TypeError(this.constructAmountRequirementsError('minAmountB'));\n }\n attributes.minAmountB = this._toXDRAmount(opts.minAmountB);\n var liquidityPoolWithdrawOp = new _xdr[\"default\"].LiquidityPoolWithdrawOp(attributes);\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.liquidityPoolWithdraw(liquidityPoolWithdrawOp)\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Address = void 0;\nvar _strkey = require(\"./strkey\");\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Create a new Address object.\n *\n * `Address` represents a single address in the Stellar network that can be\n * inputted to or outputted by a smart contract. An address can represent an\n * account, muxed account, contract, claimable balance, or a liquidity pool\n * (the latter two can only be present as the *output* of Core in the form\n * of an event, never an input to a smart contract).\n *\n * @constructor\n *\n * @param {string} address - a {@link StrKey} of the address value\n */\nvar Address = exports.Address = /*#__PURE__*/function () {\n function Address(address) {\n _classCallCheck(this, Address);\n if (_strkey.StrKey.isValidEd25519PublicKey(address)) {\n this._type = 'account';\n this._key = _strkey.StrKey.decodeEd25519PublicKey(address);\n } else if (_strkey.StrKey.isValidContract(address)) {\n this._type = 'contract';\n this._key = _strkey.StrKey.decodeContract(address);\n } else if (_strkey.StrKey.isValidMed25519PublicKey(address)) {\n this._type = 'muxedAccount';\n this._key = _strkey.StrKey.decodeMed25519PublicKey(address);\n } else if (_strkey.StrKey.isValidClaimableBalance(address)) {\n this._type = 'claimableBalance';\n this._key = _strkey.StrKey.decodeClaimableBalance(address);\n } else if (_strkey.StrKey.isValidLiquidityPool(address)) {\n this._type = 'liquidityPool';\n this._key = _strkey.StrKey.decodeLiquidityPool(address);\n } else {\n throw new Error(\"Unsupported address type: \".concat(address));\n }\n }\n\n /**\n * Parses a string and returns an Address object.\n *\n * @param {string} address - The address to parse. ex. `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`\n * @returns {Address}\n */\n return _createClass(Address, [{\n key: \"toString\",\n value:\n /**\n * Serialize an address to string.\n *\n * @returns {string}\n */\n function toString() {\n switch (this._type) {\n case 'account':\n return _strkey.StrKey.encodeEd25519PublicKey(this._key);\n case 'contract':\n return _strkey.StrKey.encodeContract(this._key);\n case 'claimableBalance':\n return _strkey.StrKey.encodeClaimableBalance(this._key);\n case 'liquidityPool':\n return _strkey.StrKey.encodeLiquidityPool(this._key);\n case 'muxedAccount':\n return _strkey.StrKey.encodeMed25519PublicKey(this._key);\n default:\n throw new Error('Unsupported address type');\n }\n }\n\n /**\n * Convert this Address to an xdr.ScVal type.\n *\n * @returns {xdr.ScVal}\n */\n }, {\n key: \"toScVal\",\n value: function toScVal() {\n return _xdr[\"default\"].ScVal.scvAddress(this.toScAddress());\n }\n\n /**\n * Convert this Address to an xdr.ScAddress type.\n *\n * @returns {xdr.ScAddress}\n */\n }, {\n key: \"toScAddress\",\n value: function toScAddress() {\n switch (this._type) {\n case 'account':\n return _xdr[\"default\"].ScAddress.scAddressTypeAccount(_xdr[\"default\"].PublicKey.publicKeyTypeEd25519(this._key));\n case 'contract':\n return _xdr[\"default\"].ScAddress.scAddressTypeContract(this._key);\n case 'liquidityPool':\n return _xdr[\"default\"].ScAddress.scAddressTypeLiquidityPool(this._key);\n case 'claimableBalance':\n return _xdr[\"default\"].ScAddress.scAddressTypeClaimableBalance(new _xdr[\"default\"].ClaimableBalanceId(\"claimableBalanceIdTypeV\".concat(this._key.at(0)),\n // future-proof for cb v1\n this._key.subarray(1)));\n case 'muxedAccount':\n return _xdr[\"default\"].ScAddress.scAddressTypeMuxedAccount(new _xdr[\"default\"].MuxedEd25519Account({\n ed25519: this._key.subarray(0, 32),\n id: _xdr[\"default\"].Uint64.fromXDR(this._key.subarray(32, 40), 'raw')\n }));\n default:\n throw new Error(\"Unsupported address type: \".concat(this._type));\n }\n }\n\n /**\n * Return the raw public key bytes for this address.\n *\n * @returns {Buffer}\n */\n }, {\n key: \"toBuffer\",\n value: function toBuffer() {\n return this._key;\n }\n }], [{\n key: \"fromString\",\n value: function fromString(address) {\n return new Address(address);\n }\n\n /**\n * Creates a new account Address object from a buffer of raw bytes.\n *\n * @param {Buffer} buffer - The bytes of an address to parse.\n * @returns {Address}\n */\n }, {\n key: \"account\",\n value: function account(buffer) {\n return new Address(_strkey.StrKey.encodeEd25519PublicKey(buffer));\n }\n\n /**\n * Creates a new contract Address object from a buffer of raw bytes.\n *\n * @param {Buffer} buffer - The bytes of an address to parse.\n * @returns {Address}\n */\n }, {\n key: \"contract\",\n value: function contract(buffer) {\n return new Address(_strkey.StrKey.encodeContract(buffer));\n }\n\n /**\n * Creates a new claimable balance Address object from a buffer of raw bytes.\n *\n * @param {Buffer} buffer - The bytes of a claimable balance ID to parse.\n * @returns {Address}\n */\n }, {\n key: \"claimableBalance\",\n value: function claimableBalance(buffer) {\n return new Address(_strkey.StrKey.encodeClaimableBalance(buffer));\n }\n\n /**\n * Creates a new liquidity pool Address object from a buffer of raw bytes.\n *\n * @param {Buffer} buffer - The bytes of an LP ID to parse.\n * @returns {Address}\n */\n }, {\n key: \"liquidityPool\",\n value: function liquidityPool(buffer) {\n return new Address(_strkey.StrKey.encodeLiquidityPool(buffer));\n }\n\n /**\n * Creates a new muxed account Address object from a buffer of raw bytes.\n *\n * @param {Buffer} buffer - The bytes of an address to parse.\n * @returns {Address}\n */\n }, {\n key: \"muxedAccount\",\n value: function muxedAccount(buffer) {\n return new Address(_strkey.StrKey.encodeMed25519PublicKey(buffer));\n }\n\n /**\n * Convert this from an xdr.ScVal type.\n *\n * @param {xdr.ScVal} scVal - The xdr.ScVal type to parse\n * @returns {Address}\n */\n }, {\n key: \"fromScVal\",\n value: function fromScVal(scVal) {\n return Address.fromScAddress(scVal.address());\n }\n\n /**\n * Convert this from an xdr.ScAddress type\n *\n * @param {xdr.ScAddress} scAddress - The xdr.ScAddress type to parse\n * @returns {Address}\n */\n }, {\n key: \"fromScAddress\",\n value: function fromScAddress(scAddress) {\n switch (scAddress[\"switch\"]().value) {\n case _xdr[\"default\"].ScAddressType.scAddressTypeAccount().value:\n return Address.account(scAddress.accountId().ed25519());\n case _xdr[\"default\"].ScAddressType.scAddressTypeContract().value:\n return Address.contract(scAddress.contractId());\n case _xdr[\"default\"].ScAddressType.scAddressTypeMuxedAccount().value:\n {\n var raw = Buffer.concat([scAddress.muxedAccount().ed25519(), scAddress.muxedAccount().id().toXDR('raw')]);\n return Address.muxedAccount(raw);\n }\n case _xdr[\"default\"].ScAddressType.scAddressTypeClaimableBalance().value:\n {\n var cbi = scAddress.claimableBalanceId();\n return Address.claimableBalance(Buffer.concat([Buffer.from([cbi[\"switch\"]().value]), cbi.v0()]));\n }\n case _xdr[\"default\"].ScAddressType.scAddressTypeLiquidityPool().value:\n return Address.liquidityPool(scAddress.liquidityPoolId());\n default:\n throw new Error(\"Unsupported address type: \".concat(scAddress[\"switch\"]().name));\n }\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createCustomContract = createCustomContract;\nexports.createStellarAssetContract = createStellarAssetContract;\nexports.invokeContractFunction = invokeContractFunction;\nexports.invokeHostFunction = invokeHostFunction;\nexports.uploadContractWasm = uploadContractWasm;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nvar _keypair = require(\"../keypair\");\nvar _address = require(\"../address\");\nvar _asset = require(\"../asset\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n/**\n * Invokes a single smart contract host function.\n *\n * @function\n * @alias Operation.invokeHostFunction\n *\n * @param {object} opts - options object\n * @param {xdr.HostFunction} opts.func - host function to execute (with its\n * wrapped parameters)\n * @param {xdr.SorobanAuthorizationEntry[]} [opts.auth] - list outlining the\n * tree of authorizations required for the call\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Invoke Host Function operation\n * (xdr.InvokeHostFunctionOp)\n *\n * @see https://soroban.stellar.org/docs/fundamentals-and-concepts/invoking-contracts-with-transactions#function\n * @see Operation.invokeContractFunction\n * @see Operation.createCustomContract\n * @see Operation.createStellarAssetContract\n * @see Operation.uploadContractWasm\n * @see Contract.call\n */\nfunction invokeHostFunction(opts) {\n if (!opts.func) {\n throw new TypeError(\"host function invocation ('func') required (got \".concat(JSON.stringify(opts), \")\"));\n }\n if (opts.func[\"switch\"]().value === _xdr[\"default\"].HostFunctionType.hostFunctionTypeInvokeContract().value) {\n // Ensure that there are no claimable balance or liquidity pool IDs in the\n // invocation because those are not allowed.\n opts.func.invokeContract().args().forEach(function (arg) {\n var scv;\n try {\n scv = _address.Address.fromScVal(arg);\n } catch (_unused) {\n // swallow non-Address errors\n return;\n }\n switch (scv._type) {\n case 'claimableBalance':\n case 'liquidityPool':\n throw new TypeError(\"claimable balances and liquidity pools cannot be arguments to invokeHostFunction\");\n default:\n }\n });\n }\n var invokeHostFunctionOp = new _xdr[\"default\"].InvokeHostFunctionOp({\n hostFunction: opts.func,\n auth: opts.auth || []\n });\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.invokeHostFunction(invokeHostFunctionOp)\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}\n\n/**\n * Returns an operation that invokes a contract function.\n *\n * @function\n * @alias Operation.invokeContractFunction\n *\n * @param {any} opts - the set of parameters\n * @param {string} opts.contract - a strkey-fied contract address (`C...`)\n * @param {string} opts.function - the name of the contract fn to invoke\n * @param {xdr.ScVal[]} opts.args - parameters to pass to the function\n * invocation (try {@link nativeToScVal} or {@link ScInt} to make building\n * these easier)\n * @param {xdr.SorobanAuthorizationEntry[]} [opts.auth] - an optional list\n * outlining the tree of authorizations required for the call\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Invoke Host Function operation\n * (xdr.InvokeHostFunctionOp)\n *\n * @see Operation.invokeHostFunction\n * @see Contract.call\n * @see Address\n */\nfunction invokeContractFunction(opts) {\n var c = new _address.Address(opts.contract);\n if (c._type !== 'contract') {\n throw new TypeError(\"expected contract strkey instance, got \".concat(c));\n }\n return this.invokeHostFunction({\n source: opts.source,\n auth: opts.auth,\n func: _xdr[\"default\"].HostFunction.hostFunctionTypeInvokeContract(new _xdr[\"default\"].InvokeContractArgs({\n contractAddress: c.toScAddress(),\n functionName: opts[\"function\"],\n args: opts.args\n }))\n });\n}\n\n/**\n * Returns an operation that creates a custom WASM contract and atomically\n * invokes its constructor.\n *\n * @function\n * @alias Operation.createCustomContract\n *\n * @param {any} opts - the set of parameters\n * @param {Address} opts.address - the contract uploader address\n * @param {Uint8Array|Buffer} opts.wasmHash - the SHA-256 hash of the contract\n * WASM you're uploading (see {@link hash} and\n * {@link Operation.uploadContractWasm})\n * @param {xdr.ScVal[]} [opts.constructorArgs] - the optional parameters to pass\n * to the constructor of this contract (see {@link nativeToScVal} for ways to\n * easily create these parameters from native JS values)\n * @param {Uint8Array|Buffer} [opts.salt] - an optional, 32-byte salt to\n * distinguish deployment instances of the same wasm from the same user (if\n * omitted, one will be generated for you)\n * @param {xdr.SorobanAuthorizationEntry[]} [opts.auth] - an optional list\n * outlining the tree of authorizations required for the call\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Invoke Host Function operation\n * (xdr.InvokeHostFunctionOp)\n *\n * @see\n * https://soroban.stellar.org/docs/fundamentals-and-concepts/invoking-contracts-with-transactions#function\n */\nfunction createCustomContract(opts) {\n var _opts$constructorArgs;\n var salt = Buffer.from(opts.salt || getSalty());\n if (!opts.wasmHash || opts.wasmHash.length !== 32) {\n throw new TypeError(\"expected hash(contract WASM) in 'opts.wasmHash', got \".concat(opts.wasmHash));\n }\n if (salt.length !== 32) {\n throw new TypeError(\"expected 32-byte salt in 'opts.salt', got \".concat(opts.wasmHash));\n }\n return this.invokeHostFunction({\n source: opts.source,\n auth: opts.auth,\n func: _xdr[\"default\"].HostFunction.hostFunctionTypeCreateContractV2(new _xdr[\"default\"].CreateContractArgsV2({\n executable: _xdr[\"default\"].ContractExecutable.contractExecutableWasm(Buffer.from(opts.wasmHash)),\n contractIdPreimage: _xdr[\"default\"].ContractIdPreimage.contractIdPreimageFromAddress(new _xdr[\"default\"].ContractIdPreimageFromAddress({\n address: opts.address.toScAddress(),\n salt: salt\n })),\n constructorArgs: (_opts$constructorArgs = opts.constructorArgs) !== null && _opts$constructorArgs !== void 0 ? _opts$constructorArgs : []\n }))\n });\n}\n\n/**\n * Returns an operation that wraps a Stellar asset into a token contract.\n *\n * @function\n * @alias Operation.createStellarAssetContract\n *\n * @param {any} opts - the set of parameters\n * @param {Asset|string} opts.asset - the Stellar asset to wrap, either as an\n * {@link Asset} object or in canonical form (SEP-11, `code:issuer`)\n * @param {xdr.SorobanAuthorizationEntry[]} [opts.auth] - an optional list\n * outlining the tree of authorizations required for the call\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Invoke Host Function operation\n * (xdr.InvokeHostFunctionOp)\n *\n * @see https://stellar.org/protocol/sep-11#alphanum4-alphanum12\n * @see\n * https://soroban.stellar.org/docs/fundamentals-and-concepts/invoking-contracts-with-transactions\n * @see\n * https://soroban.stellar.org/docs/advanced-tutorials/stellar-asset-contract\n * @see Operation.invokeHostFunction\n */\nfunction createStellarAssetContract(opts) {\n var asset = opts.asset;\n if (typeof asset === 'string') {\n var _asset$split = asset.split(':'),\n _asset$split2 = _slicedToArray(_asset$split, 2),\n code = _asset$split2[0],\n issuer = _asset$split2[1];\n asset = new _asset.Asset(code, issuer); // handles 'xlm' by default\n }\n if (!(asset instanceof _asset.Asset)) {\n throw new TypeError(\"expected Asset in 'opts.asset', got \".concat(asset));\n }\n return this.invokeHostFunction({\n source: opts.source,\n auth: opts.auth,\n func: _xdr[\"default\"].HostFunction.hostFunctionTypeCreateContract(new _xdr[\"default\"].CreateContractArgs({\n executable: _xdr[\"default\"].ContractExecutable.contractExecutableStellarAsset(),\n contractIdPreimage: _xdr[\"default\"].ContractIdPreimage.contractIdPreimageFromAsset(asset.toXDRObject())\n }))\n });\n}\n\n/**\n * Returns an operation that uploads WASM for a contract.\n *\n * @function\n * @alias Operation.uploadContractWasm\n *\n * @param {any} opts - the set of parameters\n * @param {Uint8Array|Buffer} opts.wasm - a WASM blob to upload to the ledger\n * @param {xdr.SorobanAuthorizationEntry[]} [opts.auth] - an optional list\n * outlining the tree of authorizations required for the call\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Invoke Host Function operation\n * (xdr.InvokeHostFunctionOp)\n *\n * @see\n * https://soroban.stellar.org/docs/fundamentals-and-concepts/invoking-contracts-with-transactions#function\n */\nfunction uploadContractWasm(opts) {\n return this.invokeHostFunction({\n source: opts.source,\n auth: opts.auth,\n func: _xdr[\"default\"].HostFunction.hostFunctionTypeUploadContractWasm(Buffer.from(opts.wasm) // coalesce so we can drop `Buffer` someday\n )\n });\n}\n\n/* Returns a random 256-bit \"salt\" value. */\nfunction getSalty() {\n return _keypair.Keypair.random().xdrPublicKey().value(); // ed25519 is 256 bits, too\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.extendFootprintTtl = extendFootprintTtl;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Builds an operation to bump the time-to-live (TTL) of the ledger keys. The\n * keys for extension have to be provided in the read-only footprint of\n * the transaction.\n *\n * The only parameter of the operation itself is the new minimum TTL for\n * all the provided entries. If an entry already has a higher TTL, then it\n * will just be skipped.\n *\n * TTL is the number of ledgers from the current ledger (exclusive) until\n * the last ledger the entry is still considered alive (inclusive). Thus\n * the exact ledger until the entries will live will only be determined\n * when transaction has been applied.\n *\n * The footprint has to be specified in the transaction. See\n * {@link TransactionBuilder}'s `opts.sorobanData` parameter, which is a\n * {@link xdr.SorobanTransactionData} instance that contains fee data & resource\n * usage as part of {@link xdr.SorobanResources}.\n *\n * @function\n * @alias Operation.extendFootprintTtl\n *\n * @param {object} opts - object holding operation parameters\n * @param {number} opts.extendTo - the minimum TTL that all the entries in\n * the read-only footprint will have\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} an Extend Footprint TTL operation\n * (xdr.ExtendFootprintTTLOp)\n */\nfunction extendFootprintTtl(opts) {\n var _opts$extendTo;\n if (((_opts$extendTo = opts.extendTo) !== null && _opts$extendTo !== void 0 ? _opts$extendTo : -1) <= 0) {\n throw new RangeError('extendTo has to be positive');\n }\n var extendFootprintOp = new _xdr[\"default\"].ExtendFootprintTtlOp({\n ext: new _xdr[\"default\"].ExtensionPoint(0),\n extendTo: opts.extendTo\n });\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.extendFootprintTtl(extendFootprintOp)\n };\n this.setSourceAccount(opAttributes, opts);\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.restoreFootprint = restoreFootprint;\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/**\n * Builds an operation to restore the archived ledger entries specified\n * by the ledger keys.\n *\n * The ledger keys to restore are specified separately from the operation\n * in read-write footprint of the transaction.\n *\n * It takes no parameters because the relevant footprint is derived from the\n * transaction itself. See {@link TransactionBuilder}'s `opts.sorobanData`\n * parameter (or {@link TransactionBuilder.setSorobanData} /\n * {@link TransactionBuilder.setLedgerKeys}), which is a\n * {@link xdr.SorobanTransactionData} instance that contains fee data & resource\n * usage as part of {@link xdr.SorobanTransactionData}.\n *\n * @function\n * @alias Operation.restoreFootprint\n *\n * @param {object} [opts] - an optional set of parameters\n * @param {string} [opts.source] - an optional source account\n *\n * @returns {xdr.Operation} a Bump Footprint Expiration operation\n * (xdr.RestoreFootprintOp)\n */\nfunction restoreFootprint() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var op = new _xdr[\"default\"].RestoreFootprintOp({\n ext: new _xdr[\"default\"].ExtensionPoint(0)\n });\n var opAttributes = {\n body: _xdr[\"default\"].OperationBody.restoreFootprint(op)\n };\n this.setSourceAccount(opAttributes, opts !== null && opts !== void 0 ? opts : {});\n return new _xdr[\"default\"].Operation(opAttributes);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"accountMerge\", {\n enumerable: true,\n get: function get() {\n return _account_merge.accountMerge;\n }\n});\nObject.defineProperty(exports, \"allowTrust\", {\n enumerable: true,\n get: function get() {\n return _allow_trust.allowTrust;\n }\n});\nObject.defineProperty(exports, \"beginSponsoringFutureReserves\", {\n enumerable: true,\n get: function get() {\n return _begin_sponsoring_future_reserves.beginSponsoringFutureReserves;\n }\n});\nObject.defineProperty(exports, \"bumpSequence\", {\n enumerable: true,\n get: function get() {\n return _bump_sequence.bumpSequence;\n }\n});\nObject.defineProperty(exports, \"changeTrust\", {\n enumerable: true,\n get: function get() {\n return _change_trust.changeTrust;\n }\n});\nObject.defineProperty(exports, \"claimClaimableBalance\", {\n enumerable: true,\n get: function get() {\n return _claim_claimable_balance.claimClaimableBalance;\n }\n});\nObject.defineProperty(exports, \"clawback\", {\n enumerable: true,\n get: function get() {\n return _clawback.clawback;\n }\n});\nObject.defineProperty(exports, \"clawbackClaimableBalance\", {\n enumerable: true,\n get: function get() {\n return _clawback_claimable_balance.clawbackClaimableBalance;\n }\n});\nObject.defineProperty(exports, \"createAccount\", {\n enumerable: true,\n get: function get() {\n return _create_account.createAccount;\n }\n});\nObject.defineProperty(exports, \"createClaimableBalance\", {\n enumerable: true,\n get: function get() {\n return _create_claimable_balance.createClaimableBalance;\n }\n});\nObject.defineProperty(exports, \"createCustomContract\", {\n enumerable: true,\n get: function get() {\n return _invoke_host_function.createCustomContract;\n }\n});\nObject.defineProperty(exports, \"createPassiveSellOffer\", {\n enumerable: true,\n get: function get() {\n return _create_passive_sell_offer.createPassiveSellOffer;\n }\n});\nObject.defineProperty(exports, \"createStellarAssetContract\", {\n enumerable: true,\n get: function get() {\n return _invoke_host_function.createStellarAssetContract;\n }\n});\nObject.defineProperty(exports, \"endSponsoringFutureReserves\", {\n enumerable: true,\n get: function get() {\n return _end_sponsoring_future_reserves.endSponsoringFutureReserves;\n }\n});\nObject.defineProperty(exports, \"extendFootprintTtl\", {\n enumerable: true,\n get: function get() {\n return _extend_footprint_ttl.extendFootprintTtl;\n }\n});\nObject.defineProperty(exports, \"inflation\", {\n enumerable: true,\n get: function get() {\n return _inflation.inflation;\n }\n});\nObject.defineProperty(exports, \"invokeContractFunction\", {\n enumerable: true,\n get: function get() {\n return _invoke_host_function.invokeContractFunction;\n }\n});\nObject.defineProperty(exports, \"invokeHostFunction\", {\n enumerable: true,\n get: function get() {\n return _invoke_host_function.invokeHostFunction;\n }\n});\nObject.defineProperty(exports, \"liquidityPoolDeposit\", {\n enumerable: true,\n get: function get() {\n return _liquidity_pool_deposit.liquidityPoolDeposit;\n }\n});\nObject.defineProperty(exports, \"liquidityPoolWithdraw\", {\n enumerable: true,\n get: function get() {\n return _liquidity_pool_withdraw.liquidityPoolWithdraw;\n }\n});\nObject.defineProperty(exports, \"manageBuyOffer\", {\n enumerable: true,\n get: function get() {\n return _manage_buy_offer.manageBuyOffer;\n }\n});\nObject.defineProperty(exports, \"manageData\", {\n enumerable: true,\n get: function get() {\n return _manage_data.manageData;\n }\n});\nObject.defineProperty(exports, \"manageSellOffer\", {\n enumerable: true,\n get: function get() {\n return _manage_sell_offer.manageSellOffer;\n }\n});\nObject.defineProperty(exports, \"pathPaymentStrictReceive\", {\n enumerable: true,\n get: function get() {\n return _path_payment_strict_receive.pathPaymentStrictReceive;\n }\n});\nObject.defineProperty(exports, \"pathPaymentStrictSend\", {\n enumerable: true,\n get: function get() {\n return _path_payment_strict_send.pathPaymentStrictSend;\n }\n});\nObject.defineProperty(exports, \"payment\", {\n enumerable: true,\n get: function get() {\n return _payment.payment;\n }\n});\nObject.defineProperty(exports, \"restoreFootprint\", {\n enumerable: true,\n get: function get() {\n return _restore_footprint.restoreFootprint;\n }\n});\nObject.defineProperty(exports, \"revokeAccountSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeAccountSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeClaimableBalanceSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeClaimableBalanceSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeDataSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeDataSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeLiquidityPoolSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeLiquidityPoolSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeOfferSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeOfferSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeSignerSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeSignerSponsorship;\n }\n});\nObject.defineProperty(exports, \"revokeTrustlineSponsorship\", {\n enumerable: true,\n get: function get() {\n return _revoke_sponsorship.revokeTrustlineSponsorship;\n }\n});\nObject.defineProperty(exports, \"setOptions\", {\n enumerable: true,\n get: function get() {\n return _set_options.setOptions;\n }\n});\nObject.defineProperty(exports, \"setTrustLineFlags\", {\n enumerable: true,\n get: function get() {\n return _set_trustline_flags.setTrustLineFlags;\n }\n});\nObject.defineProperty(exports, \"uploadContractWasm\", {\n enumerable: true,\n get: function get() {\n return _invoke_host_function.uploadContractWasm;\n }\n});\nvar _manage_sell_offer = require(\"./manage_sell_offer\");\nvar _create_passive_sell_offer = require(\"./create_passive_sell_offer\");\nvar _account_merge = require(\"./account_merge\");\nvar _allow_trust = require(\"./allow_trust\");\nvar _bump_sequence = require(\"./bump_sequence\");\nvar _change_trust = require(\"./change_trust\");\nvar _create_account = require(\"./create_account\");\nvar _create_claimable_balance = require(\"./create_claimable_balance\");\nvar _claim_claimable_balance = require(\"./claim_claimable_balance\");\nvar _clawback_claimable_balance = require(\"./clawback_claimable_balance\");\nvar _inflation = require(\"./inflation\");\nvar _manage_data = require(\"./manage_data\");\nvar _manage_buy_offer = require(\"./manage_buy_offer\");\nvar _path_payment_strict_receive = require(\"./path_payment_strict_receive\");\nvar _path_payment_strict_send = require(\"./path_payment_strict_send\");\nvar _payment = require(\"./payment\");\nvar _set_options = require(\"./set_options\");\nvar _begin_sponsoring_future_reserves = require(\"./begin_sponsoring_future_reserves\");\nvar _end_sponsoring_future_reserves = require(\"./end_sponsoring_future_reserves\");\nvar _revoke_sponsorship = require(\"./revoke_sponsorship\");\nvar _clawback = require(\"./clawback\");\nvar _set_trustline_flags = require(\"./set_trustline_flags\");\nvar _liquidity_pool_deposit = require(\"./liquidity_pool_deposit\");\nvar _liquidity_pool_withdraw = require(\"./liquidity_pool_withdraw\");\nvar _invoke_host_function = require(\"./invoke_host_function\");\nvar _extend_footprint_ttl = require(\"./extend_footprint_ttl\");\nvar _restore_footprint = require(\"./restore_footprint\");", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Operation = exports.AuthRevocableFlag = exports.AuthRequiredFlag = exports.AuthImmutableFlag = exports.AuthClawbackEnabledFlag = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _bignumber = _interopRequireDefault(require(\"./util/bignumber\"));\nvar _util = require(\"./util/util\");\nvar _continued_fraction = require(\"./util/continued_fraction\");\nvar _asset = require(\"./asset\");\nvar _liquidity_pool_asset = require(\"./liquidity_pool_asset\");\nvar _claimant = require(\"./claimant\");\nvar _strkey = require(\"./strkey\");\nvar _liquidity_pool_id = require(\"./liquidity_pool_id\");\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar ops = _interopRequireWildcard(require(\"./operations\"));\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, \"default\": e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /* eslint-disable no-bitwise */\nvar ONE = 10000000;\nvar MAX_INT64 = '9223372036854775807';\n\n/**\n * When set using `{@link Operation.setOptions}` option, requires the issuing\n * account to give other accounts permission before they can hold the issuing\n * account\u2019s credit.\n *\n * @constant\n * @see [Account flags](https://developers.stellar.org/docs/glossary/accounts/#flags)\n */\nvar AuthRequiredFlag = exports.AuthRequiredFlag = 1 << 0;\n/**\n * When set using `{@link Operation.setOptions}` option, allows the issuing\n * account to revoke its credit held by other accounts.\n *\n * @constant\n * @see [Account flags](https://developers.stellar.org/docs/glossary/accounts/#flags)\n */\nvar AuthRevocableFlag = exports.AuthRevocableFlag = 1 << 1;\n/**\n * When set using `{@link Operation.setOptions}` option, then none of the\n * authorization flags can be set and the account can never be deleted.\n *\n * @constant\n * @see [Account flags](https://developers.stellar.org/docs/glossary/accounts/#flags)\n */\nvar AuthImmutableFlag = exports.AuthImmutableFlag = 1 << 2;\n\n/**\n * When set using `{@link Operation.setOptions}` option, then any trustlines\n * created by this account can have a ClawbackOp operation submitted for the\n * corresponding asset.\n *\n * @constant\n * @see [Account flags](https://developers.stellar.org/docs/glossary/accounts/#flags)\n */\nvar AuthClawbackEnabledFlag = exports.AuthClawbackEnabledFlag = 1 << 3;\n\n/**\n * `Operation` class represents\n * [operations](https://developers.stellar.org/docs/glossary/operations/) in\n * Stellar network.\n *\n * Use one of static methods to create operations:\n * * `{@link Operation.createAccount}`\n * * `{@link Operation.payment}`\n * * `{@link Operation.pathPaymentStrictReceive}`\n * * `{@link Operation.pathPaymentStrictSend}`\n * * `{@link Operation.manageSellOffer}`\n * * `{@link Operation.manageBuyOffer}`\n * * `{@link Operation.createPassiveSellOffer}`\n * * `{@link Operation.setOptions}`\n * * `{@link Operation.changeTrust}`\n * * `{@link Operation.allowTrust}`\n * * `{@link Operation.accountMerge}`\n * * `{@link Operation.inflation}`\n * * `{@link Operation.manageData}`\n * * `{@link Operation.bumpSequence}`\n * * `{@link Operation.createClaimableBalance}`\n * * `{@link Operation.claimClaimableBalance}`\n * * `{@link Operation.beginSponsoringFutureReserves}`\n * * `{@link Operation.endSponsoringFutureReserves}`\n * * `{@link Operation.revokeAccountSponsorship}`\n * * `{@link Operation.revokeTrustlineSponsorship}`\n * * `{@link Operation.revokeOfferSponsorship}`\n * * `{@link Operation.revokeDataSponsorship}`\n * * `{@link Operation.revokeClaimableBalanceSponsorship}`\n * * `{@link Operation.revokeLiquidityPoolSponsorship}`\n * * `{@link Operation.revokeSignerSponsorship}`\n * * `{@link Operation.clawback}`\n * * `{@link Operation.clawbackClaimableBalance}`\n * * `{@link Operation.setTrustLineFlags}`\n * * `{@link Operation.liquidityPoolDeposit}`\n * * `{@link Operation.liquidityPoolWithdraw}`\n * * `{@link Operation.invokeHostFunction}`, which has the following additional\n * \"pseudo-operations\" that make building host functions easier:\n * - `{@link Operation.createStellarAssetContract}`\n * - `{@link Operation.invokeContractFunction}`\n * - `{@link Operation.createCustomContract}`\n * - `{@link Operation.uploadContractWasm}`\n * * `{@link Operation.extendFootprintTtlOp}`\n * * `{@link Operation.restoreFootprint}`\n *\n * @class Operation\n */\nvar Operation = exports.Operation = /*#__PURE__*/function () {\n function Operation() {\n _classCallCheck(this, Operation);\n }\n return _createClass(Operation, null, [{\n key: \"setSourceAccount\",\n value: function setSourceAccount(opAttributes, opts) {\n if (opts.source) {\n try {\n opAttributes.sourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(opts.source);\n } catch (e) {\n throw new Error('Source address is invalid');\n }\n }\n }\n\n /**\n * Deconstructs the raw XDR operation object into the structured object that\n * was used to create the operation (i.e. the `opts` parameter to most ops).\n *\n * @param {xdr.Operation} operation - An XDR Operation.\n * @return {Operation}\n */\n }, {\n key: \"fromXDRObject\",\n value: function fromXDRObject(operation) {\n var result = {};\n if (operation.sourceAccount()) {\n result.source = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(operation.sourceAccount());\n }\n var attrs = operation.body().value();\n var operationName = operation.body()[\"switch\"]().name;\n switch (operationName) {\n case 'createAccount':\n {\n result.type = 'createAccount';\n result.destination = accountIdtoAddress(attrs.destination());\n result.startingBalance = this._fromXDRAmount(attrs.startingBalance());\n break;\n }\n case 'payment':\n {\n result.type = 'payment';\n result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination());\n result.asset = _asset.Asset.fromOperation(attrs.asset());\n result.amount = this._fromXDRAmount(attrs.amount());\n break;\n }\n case 'pathPaymentStrictReceive':\n {\n result.type = 'pathPaymentStrictReceive';\n result.sendAsset = _asset.Asset.fromOperation(attrs.sendAsset());\n result.sendMax = this._fromXDRAmount(attrs.sendMax());\n result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination());\n result.destAsset = _asset.Asset.fromOperation(attrs.destAsset());\n result.destAmount = this._fromXDRAmount(attrs.destAmount());\n result.path = [];\n var path = attrs.path();\n\n // note that Object.values isn't supported by node 6!\n Object.keys(path).forEach(function (pathKey) {\n result.path.push(_asset.Asset.fromOperation(path[pathKey]));\n });\n break;\n }\n case 'pathPaymentStrictSend':\n {\n result.type = 'pathPaymentStrictSend';\n result.sendAsset = _asset.Asset.fromOperation(attrs.sendAsset());\n result.sendAmount = this._fromXDRAmount(attrs.sendAmount());\n result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.destination());\n result.destAsset = _asset.Asset.fromOperation(attrs.destAsset());\n result.destMin = this._fromXDRAmount(attrs.destMin());\n result.path = [];\n var _path = attrs.path();\n\n // note that Object.values isn't supported by node 6!\n Object.keys(_path).forEach(function (pathKey) {\n result.path.push(_asset.Asset.fromOperation(_path[pathKey]));\n });\n break;\n }\n case 'changeTrust':\n {\n result.type = 'changeTrust';\n switch (attrs.line()[\"switch\"]()) {\n case _xdr[\"default\"].AssetType.assetTypePoolShare():\n result.line = _liquidity_pool_asset.LiquidityPoolAsset.fromOperation(attrs.line());\n break;\n default:\n result.line = _asset.Asset.fromOperation(attrs.line());\n break;\n }\n result.limit = this._fromXDRAmount(attrs.limit());\n break;\n }\n case 'allowTrust':\n {\n result.type = 'allowTrust';\n result.trustor = accountIdtoAddress(attrs.trustor());\n result.assetCode = attrs.asset().value().toString();\n result.assetCode = (0, _util.trimEnd)(result.assetCode, '\\0');\n result.authorize = attrs.authorize();\n break;\n }\n case 'setOptions':\n {\n result.type = 'setOptions';\n if (attrs.inflationDest()) {\n result.inflationDest = accountIdtoAddress(attrs.inflationDest());\n }\n result.clearFlags = attrs.clearFlags();\n result.setFlags = attrs.setFlags();\n result.masterWeight = attrs.masterWeight();\n result.lowThreshold = attrs.lowThreshold();\n result.medThreshold = attrs.medThreshold();\n result.highThreshold = attrs.highThreshold();\n // home_domain is checked by iscntrl in stellar-core\n result.homeDomain = attrs.homeDomain() !== undefined ? attrs.homeDomain().toString('ascii') : undefined;\n if (attrs.signer()) {\n var signer = {};\n var arm = attrs.signer().key().arm();\n if (arm === 'ed25519') {\n signer.ed25519PublicKey = accountIdtoAddress(attrs.signer().key());\n } else if (arm === 'preAuthTx') {\n signer.preAuthTx = attrs.signer().key().preAuthTx();\n } else if (arm === 'hashX') {\n signer.sha256Hash = attrs.signer().key().hashX();\n } else if (arm === 'ed25519SignedPayload') {\n var signedPayload = attrs.signer().key().ed25519SignedPayload();\n signer.ed25519SignedPayload = _strkey.StrKey.encodeSignedPayload(signedPayload.toXDR());\n }\n signer.weight = attrs.signer().weight();\n result.signer = signer;\n }\n break;\n }\n // the next case intentionally falls through!\n case 'manageOffer':\n case 'manageSellOffer':\n {\n result.type = 'manageSellOffer';\n result.selling = _asset.Asset.fromOperation(attrs.selling());\n result.buying = _asset.Asset.fromOperation(attrs.buying());\n result.amount = this._fromXDRAmount(attrs.amount());\n result.price = this._fromXDRPrice(attrs.price());\n result.offerId = attrs.offerId().toString();\n break;\n }\n case 'manageBuyOffer':\n {\n result.type = 'manageBuyOffer';\n result.selling = _asset.Asset.fromOperation(attrs.selling());\n result.buying = _asset.Asset.fromOperation(attrs.buying());\n result.buyAmount = this._fromXDRAmount(attrs.buyAmount());\n result.price = this._fromXDRPrice(attrs.price());\n result.offerId = attrs.offerId().toString();\n break;\n }\n // the next case intentionally falls through!\n case 'createPassiveOffer':\n case 'createPassiveSellOffer':\n {\n result.type = 'createPassiveSellOffer';\n result.selling = _asset.Asset.fromOperation(attrs.selling());\n result.buying = _asset.Asset.fromOperation(attrs.buying());\n result.amount = this._fromXDRAmount(attrs.amount());\n result.price = this._fromXDRPrice(attrs.price());\n break;\n }\n case 'accountMerge':\n {\n result.type = 'accountMerge';\n result.destination = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs);\n break;\n }\n case 'manageData':\n {\n result.type = 'manageData';\n // manage_data.name is checked by iscntrl in stellar-core\n result.name = attrs.dataName().toString('ascii');\n result.value = attrs.dataValue();\n break;\n }\n case 'inflation':\n {\n result.type = 'inflation';\n break;\n }\n case 'bumpSequence':\n {\n result.type = 'bumpSequence';\n result.bumpTo = attrs.bumpTo().toString();\n break;\n }\n case 'createClaimableBalance':\n {\n result.type = 'createClaimableBalance';\n result.asset = _asset.Asset.fromOperation(attrs.asset());\n result.amount = this._fromXDRAmount(attrs.amount());\n result.claimants = [];\n attrs.claimants().forEach(function (claimant) {\n result.claimants.push(_claimant.Claimant.fromXDR(claimant));\n });\n break;\n }\n case 'claimClaimableBalance':\n {\n result.type = 'claimClaimableBalance';\n result.balanceId = attrs.toXDR('hex');\n break;\n }\n case 'beginSponsoringFutureReserves':\n {\n result.type = 'beginSponsoringFutureReserves';\n result.sponsoredId = accountIdtoAddress(attrs.sponsoredId());\n break;\n }\n case 'endSponsoringFutureReserves':\n {\n result.type = 'endSponsoringFutureReserves';\n break;\n }\n case 'revokeSponsorship':\n {\n extractRevokeSponshipDetails(attrs, result);\n break;\n }\n case 'clawback':\n {\n result.type = 'clawback';\n result.amount = this._fromXDRAmount(attrs.amount());\n result.from = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(attrs.from());\n result.asset = _asset.Asset.fromOperation(attrs.asset());\n break;\n }\n case 'clawbackClaimableBalance':\n {\n result.type = 'clawbackClaimableBalance';\n result.balanceId = attrs.toXDR('hex');\n break;\n }\n case 'setTrustLineFlags':\n {\n result.type = 'setTrustLineFlags';\n result.asset = _asset.Asset.fromOperation(attrs.asset());\n result.trustor = accountIdtoAddress(attrs.trustor());\n\n // Convert from the integer-bitwised flag into a sensible object that\n // indicates true/false for each flag that's on/off.\n var clears = attrs.clearFlags();\n var sets = attrs.setFlags();\n var mapping = {\n authorized: _xdr[\"default\"].TrustLineFlags.authorizedFlag(),\n authorizedToMaintainLiabilities: _xdr[\"default\"].TrustLineFlags.authorizedToMaintainLiabilitiesFlag(),\n clawbackEnabled: _xdr[\"default\"].TrustLineFlags.trustlineClawbackEnabledFlag()\n };\n var getFlagValue = function getFlagValue(key) {\n var bit = mapping[key].value;\n if (sets & bit) {\n return true;\n }\n if (clears & bit) {\n return false;\n }\n return undefined;\n };\n result.flags = {};\n Object.keys(mapping).forEach(function (flagName) {\n result.flags[flagName] = getFlagValue(flagName);\n });\n break;\n }\n case 'liquidityPoolDeposit':\n {\n result.type = 'liquidityPoolDeposit';\n result.liquidityPoolId = attrs.liquidityPoolId().toString('hex');\n result.maxAmountA = this._fromXDRAmount(attrs.maxAmountA());\n result.maxAmountB = this._fromXDRAmount(attrs.maxAmountB());\n result.minPrice = this._fromXDRPrice(attrs.minPrice());\n result.maxPrice = this._fromXDRPrice(attrs.maxPrice());\n break;\n }\n case 'liquidityPoolWithdraw':\n {\n result.type = 'liquidityPoolWithdraw';\n result.liquidityPoolId = attrs.liquidityPoolId().toString('hex');\n result.amount = this._fromXDRAmount(attrs.amount());\n result.minAmountA = this._fromXDRAmount(attrs.minAmountA());\n result.minAmountB = this._fromXDRAmount(attrs.minAmountB());\n break;\n }\n case 'invokeHostFunction':\n {\n var _attrs$auth;\n result.type = 'invokeHostFunction';\n result.func = attrs.hostFunction();\n result.auth = (_attrs$auth = attrs.auth()) !== null && _attrs$auth !== void 0 ? _attrs$auth : [];\n break;\n }\n case 'extendFootprintTtl':\n {\n result.type = 'extendFootprintTtl';\n result.extendTo = attrs.extendTo();\n break;\n }\n case 'restoreFootprint':\n {\n result.type = 'restoreFootprint';\n break;\n }\n default:\n {\n throw new Error(\"Unknown operation: \".concat(operationName));\n }\n }\n return result;\n }\n\n /**\n * Validates that a given amount is possible for a Stellar asset.\n *\n * Specifically, this means that the amount is well, a valid number, but also\n * that it is within the int64 range and has no more than 7 decimal levels of\n * precision.\n *\n * Note that while smart contracts allow larger amounts, this is oriented\n * towards validating the standard Stellar operations.\n *\n * @param {string} value the amount to validate\n * @param {boolean} allowZero optionally, whether or not zero is valid (default: no)\n *\n * @returns {boolean}\n */\n }, {\n key: \"isValidAmount\",\n value: function isValidAmount(value) {\n var allowZero = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (typeof value !== 'string') {\n return false;\n }\n var amount;\n try {\n amount = new _bignumber[\"default\"](value);\n } catch (e) {\n return false;\n }\n if (\n // == 0\n !allowZero && amount.isZero() ||\n // < 0\n amount.isNegative() ||\n // > Max value\n amount.times(ONE).gt(new _bignumber[\"default\"](MAX_INT64).toString()) ||\n // Decimal places (max 7)\n amount.decimalPlaces() > 7 ||\n // NaN or Infinity\n amount.isNaN() || !amount.isFinite()) {\n return false;\n }\n return true;\n }\n }, {\n key: \"constructAmountRequirementsError\",\n value: function constructAmountRequirementsError(arg) {\n return \"\".concat(arg, \" argument must be of type String, represent a positive number and have at most 7 digits after the decimal\");\n }\n\n /**\n * Returns value converted to uint32 value or undefined.\n * If `value` is not `Number`, `String` or `Undefined` then throws an error.\n * Used in {@link Operation.setOptions}.\n * @private\n * @param {string} name Name of the property (used in error message only)\n * @param {*} value Value to check\n * @param {function(value, name)} isValidFunction Function to check other constraints (the argument will be a `Number`)\n * @returns {undefined|Number}\n */\n }, {\n key: \"_checkUnsignedIntValue\",\n value: function _checkUnsignedIntValue(name, value) {\n var isValidFunction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (typeof value === 'string') {\n value = parseFloat(value);\n }\n switch (true) {\n case typeof value !== 'number' || !Number.isFinite(value) || value % 1 !== 0:\n throw new Error(\"\".concat(name, \" value is invalid\"));\n case value < 0:\n throw new Error(\"\".concat(name, \" value must be unsigned\"));\n case !isValidFunction || isValidFunction && isValidFunction(value, name):\n return value;\n default:\n throw new Error(\"\".concat(name, \" value is invalid\"));\n }\n }\n /**\n * @private\n * @param {string|BigNumber} value Value\n * @returns {Hyper} XDR amount\n */\n }, {\n key: \"_toXDRAmount\",\n value: function _toXDRAmount(value) {\n var amount = new _bignumber[\"default\"](value).times(ONE);\n return _jsXdr.Hyper.fromString(amount.toString());\n }\n\n /**\n * @private\n * @param {string|BigNumber} value XDR amount\n * @returns {BigNumber} Number\n */\n }, {\n key: \"_fromXDRAmount\",\n value: function _fromXDRAmount(value) {\n return new _bignumber[\"default\"](value).div(ONE).toFixed(7);\n }\n\n /**\n * @private\n * @param {object} price Price object\n * @param {function} price.n numerator function that returns a value\n * @param {function} price.d denominator function that returns a value\n * @returns {BigNumber} Big string\n */\n }, {\n key: \"_fromXDRPrice\",\n value: function _fromXDRPrice(price) {\n var n = new _bignumber[\"default\"](price.n());\n return n.div(new _bignumber[\"default\"](price.d())).toString();\n }\n\n /**\n * @private\n * @param {object} price Price object\n * @param {function} price.n numerator function that returns a value\n * @param {function} price.d denominator function that returns a value\n * @returns {object} XDR price object\n */\n }, {\n key: \"_toXDRPrice\",\n value: function _toXDRPrice(price) {\n var xdrObject;\n if (price.n && price.d) {\n xdrObject = new _xdr[\"default\"].Price(price);\n } else {\n var approx = (0, _continued_fraction.best_r)(price);\n xdrObject = new _xdr[\"default\"].Price({\n n: parseInt(approx[0], 10),\n d: parseInt(approx[1], 10)\n });\n }\n if (xdrObject.n() < 0 || xdrObject.d() < 0) {\n throw new Error('price must be positive');\n }\n return xdrObject;\n }\n }]);\n}();\nfunction extractRevokeSponshipDetails(attrs, result) {\n switch (attrs[\"switch\"]().name) {\n case 'revokeSponsorshipLedgerEntry':\n {\n var ledgerKey = attrs.ledgerKey();\n switch (ledgerKey[\"switch\"]().name) {\n case _xdr[\"default\"].LedgerEntryType.account().name:\n {\n result.type = 'revokeAccountSponsorship';\n result.account = accountIdtoAddress(ledgerKey.account().accountId());\n break;\n }\n case _xdr[\"default\"].LedgerEntryType.trustline().name:\n {\n result.type = 'revokeTrustlineSponsorship';\n result.account = accountIdtoAddress(ledgerKey.trustLine().accountId());\n var xdrAsset = ledgerKey.trustLine().asset();\n switch (xdrAsset[\"switch\"]()) {\n case _xdr[\"default\"].AssetType.assetTypePoolShare():\n result.asset = _liquidity_pool_id.LiquidityPoolId.fromOperation(xdrAsset);\n break;\n default:\n result.asset = _asset.Asset.fromOperation(xdrAsset);\n break;\n }\n break;\n }\n case _xdr[\"default\"].LedgerEntryType.offer().name:\n {\n result.type = 'revokeOfferSponsorship';\n result.seller = accountIdtoAddress(ledgerKey.offer().sellerId());\n result.offerId = ledgerKey.offer().offerId().toString();\n break;\n }\n case _xdr[\"default\"].LedgerEntryType.data().name:\n {\n result.type = 'revokeDataSponsorship';\n result.account = accountIdtoAddress(ledgerKey.data().accountId());\n result.name = ledgerKey.data().dataName().toString('ascii');\n break;\n }\n case _xdr[\"default\"].LedgerEntryType.claimableBalance().name:\n {\n result.type = 'revokeClaimableBalanceSponsorship';\n result.balanceId = ledgerKey.claimableBalance().balanceId().toXDR('hex');\n break;\n }\n case _xdr[\"default\"].LedgerEntryType.liquidityPool().name:\n {\n result.type = 'revokeLiquidityPoolSponsorship';\n result.liquidityPoolId = ledgerKey.liquidityPool().liquidityPoolId().toString('hex');\n break;\n }\n default:\n {\n throw new Error(\"Unknown ledgerKey: \".concat(attrs[\"switch\"]().name));\n }\n }\n break;\n }\n case 'revokeSponsorshipSigner':\n {\n result.type = 'revokeSignerSponsorship';\n result.account = accountIdtoAddress(attrs.signer().accountId());\n result.signer = convertXDRSignerKeyToObject(attrs.signer().signerKey());\n break;\n }\n default:\n {\n throw new Error(\"Unknown revokeSponsorship: \".concat(attrs[\"switch\"]().name));\n }\n }\n}\nfunction convertXDRSignerKeyToObject(signerKey) {\n var attrs = {};\n switch (signerKey[\"switch\"]().name) {\n case _xdr[\"default\"].SignerKeyType.signerKeyTypeEd25519().name:\n {\n attrs.ed25519PublicKey = _strkey.StrKey.encodeEd25519PublicKey(signerKey.ed25519());\n break;\n }\n case _xdr[\"default\"].SignerKeyType.signerKeyTypePreAuthTx().name:\n {\n attrs.preAuthTx = signerKey.preAuthTx().toString('hex');\n break;\n }\n case _xdr[\"default\"].SignerKeyType.signerKeyTypeHashX().name:\n {\n attrs.sha256Hash = signerKey.hashX().toString('hex');\n break;\n }\n default:\n {\n throw new Error(\"Unknown signerKey: \".concat(signerKey[\"switch\"]().name));\n }\n }\n return attrs;\n}\nfunction accountIdtoAddress(accountId) {\n return _strkey.StrKey.encodeEd25519PublicKey(accountId.ed25519());\n}\n\n// Attach all imported operations as static methods on the Operation class\nOperation.accountMerge = ops.accountMerge;\nOperation.allowTrust = ops.allowTrust;\nOperation.bumpSequence = ops.bumpSequence;\nOperation.changeTrust = ops.changeTrust;\nOperation.createAccount = ops.createAccount;\nOperation.createClaimableBalance = ops.createClaimableBalance;\nOperation.claimClaimableBalance = ops.claimClaimableBalance;\nOperation.clawbackClaimableBalance = ops.clawbackClaimableBalance;\nOperation.createPassiveSellOffer = ops.createPassiveSellOffer;\nOperation.inflation = ops.inflation;\nOperation.manageData = ops.manageData;\nOperation.manageSellOffer = ops.manageSellOffer;\nOperation.manageBuyOffer = ops.manageBuyOffer;\nOperation.pathPaymentStrictReceive = ops.pathPaymentStrictReceive;\nOperation.pathPaymentStrictSend = ops.pathPaymentStrictSend;\nOperation.payment = ops.payment;\nOperation.setOptions = ops.setOptions;\nOperation.beginSponsoringFutureReserves = ops.beginSponsoringFutureReserves;\nOperation.endSponsoringFutureReserves = ops.endSponsoringFutureReserves;\nOperation.revokeAccountSponsorship = ops.revokeAccountSponsorship;\nOperation.revokeTrustlineSponsorship = ops.revokeTrustlineSponsorship;\nOperation.revokeOfferSponsorship = ops.revokeOfferSponsorship;\nOperation.revokeDataSponsorship = ops.revokeDataSponsorship;\nOperation.revokeClaimableBalanceSponsorship = ops.revokeClaimableBalanceSponsorship;\nOperation.revokeLiquidityPoolSponsorship = ops.revokeLiquidityPoolSponsorship;\nOperation.revokeSignerSponsorship = ops.revokeSignerSponsorship;\nOperation.clawback = ops.clawback;\nOperation.setTrustLineFlags = ops.setTrustLineFlags;\nOperation.liquidityPoolDeposit = ops.liquidityPoolDeposit;\nOperation.liquidityPoolWithdraw = ops.liquidityPoolWithdraw;\nOperation.invokeHostFunction = ops.invokeHostFunction;\nOperation.extendFootprintTtl = ops.extendFootprintTtl;\nOperation.restoreFootprint = ops.restoreFootprint;\n\n// these are not `xdr.Operation`s directly, but are proxies for complex but\n// common versions of `Operation.invokeHostFunction`\nOperation.createStellarAssetContract = ops.createStellarAssetContract;\nOperation.invokeContractFunction = ops.invokeContractFunction;\nOperation.createCustomContract = ops.createCustomContract;\nOperation.uploadContractWasm = ops.uploadContractWasm;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MemoText = exports.MemoReturn = exports.MemoNone = exports.MemoID = exports.MemoHash = exports.Memo = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _bignumber = _interopRequireDefault(require(\"./util/bignumber\"));\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Type of {@link Memo}.\n */\nvar MemoNone = exports.MemoNone = 'none';\n/**\n * Type of {@link Memo}.\n */\nvar MemoID = exports.MemoID = 'id';\n/**\n * Type of {@link Memo}.\n */\nvar MemoText = exports.MemoText = 'text';\n/**\n * Type of {@link Memo}.\n */\nvar MemoHash = exports.MemoHash = 'hash';\n/**\n * Type of {@link Memo}.\n */\nvar MemoReturn = exports.MemoReturn = 'return';\n\n/**\n * `Memo` represents memos attached to transactions.\n *\n * @param {string} type - `MemoNone`, `MemoID`, `MemoText`, `MemoHash` or `MemoReturn`\n * @param {*} value - `string` for `MemoID`, `MemoText`, buffer of hex string for `MemoHash` or `MemoReturn`\n * @see [Transactions concept](https://developers.stellar.org/docs/glossary/transactions/)\n * @class Memo\n */\nvar Memo = exports.Memo = /*#__PURE__*/function () {\n function Memo(type) {\n var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n _classCallCheck(this, Memo);\n this._type = type;\n this._value = value;\n switch (this._type) {\n case MemoNone:\n break;\n case MemoID:\n Memo._validateIdValue(value);\n break;\n case MemoText:\n Memo._validateTextValue(value);\n break;\n case MemoHash:\n case MemoReturn:\n Memo._validateHashValue(value);\n // We want MemoHash and MemoReturn to have Buffer as a value\n if (typeof value === 'string') {\n this._value = Buffer.from(value, 'hex');\n }\n break;\n default:\n throw new Error('Invalid memo type');\n }\n }\n\n /**\n * Contains memo type: `MemoNone`, `MemoID`, `MemoText`, `MemoHash` or `MemoReturn`\n */\n return _createClass(Memo, [{\n key: \"type\",\n get: function get() {\n return this._type;\n },\n set: function set(type) {\n throw new Error('Memo is immutable');\n }\n\n /**\n * Contains memo value:\n * * `null` for `MemoNone`,\n * * `string` for `MemoID`,\n * * `Buffer` for `MemoText` after decoding using `fromXDRObject`, original value otherwise,\n * * `Buffer` for `MemoHash`, `MemoReturn`.\n */\n }, {\n key: \"value\",\n get: function get() {\n switch (this._type) {\n case MemoNone:\n return null;\n case MemoID:\n case MemoText:\n return this._value;\n case MemoHash:\n case MemoReturn:\n return Buffer.from(this._value);\n default:\n throw new Error('Invalid memo type');\n }\n },\n set: function set(value) {\n throw new Error('Memo is immutable');\n }\n }, {\n key: \"toXDRObject\",\n value:\n /**\n * Returns XDR memo object.\n * @returns {xdr.Memo}\n */\n function toXDRObject() {\n switch (this._type) {\n case MemoNone:\n return _xdr[\"default\"].Memo.memoNone();\n case MemoID:\n return _xdr[\"default\"].Memo.memoId(_jsXdr.UnsignedHyper.fromString(this._value));\n case MemoText:\n return _xdr[\"default\"].Memo.memoText(this._value);\n case MemoHash:\n return _xdr[\"default\"].Memo.memoHash(this._value);\n case MemoReturn:\n return _xdr[\"default\"].Memo.memoReturn(this._value);\n default:\n return null;\n }\n }\n\n /**\n * Returns {@link Memo} from XDR memo object.\n * @param {xdr.Memo} object XDR memo object\n * @returns {Memo}\n */\n }], [{\n key: \"_validateIdValue\",\n value: function _validateIdValue(value) {\n var error = new Error(\"Expects a int64 as a string. Got \".concat(value));\n if (typeof value !== 'string') {\n throw error;\n }\n var number;\n try {\n number = new _bignumber[\"default\"](value);\n } catch (e) {\n throw error;\n }\n\n // Infinity\n if (!number.isFinite()) {\n throw error;\n }\n\n // NaN\n if (number.isNaN()) {\n throw error;\n }\n }\n }, {\n key: \"_validateTextValue\",\n value: function _validateTextValue(value) {\n if (!_xdr[\"default\"].Memo.armTypeForArm('text').isValid(value)) {\n throw new Error('Expects string, array or buffer, max 28 bytes');\n }\n }\n }, {\n key: \"_validateHashValue\",\n value: function _validateHashValue(value) {\n var error = new Error(\"Expects a 32 byte hash value or hex encoded string. Got \".concat(value));\n if (value === null || typeof value === 'undefined') {\n throw error;\n }\n var valueBuffer;\n if (typeof value === 'string') {\n if (!/^[0-9A-Fa-f]{64}$/g.test(value)) {\n throw error;\n }\n valueBuffer = Buffer.from(value, 'hex');\n } else if (Buffer.isBuffer(value)) {\n valueBuffer = Buffer.from(value);\n } else {\n throw error;\n }\n if (!valueBuffer.length || valueBuffer.length !== 32) {\n throw error;\n }\n }\n\n /**\n * Returns an empty memo (`MemoNone`).\n * @returns {Memo}\n */\n }, {\n key: \"none\",\n value: function none() {\n return new Memo(MemoNone);\n }\n\n /**\n * Creates and returns a `MemoText` memo.\n * @param {string} text - memo text\n * @returns {Memo}\n */\n }, {\n key: \"text\",\n value: function text(_text) {\n return new Memo(MemoText, _text);\n }\n\n /**\n * Creates and returns a `MemoID` memo.\n * @param {string} id - 64-bit number represented as a string\n * @returns {Memo}\n */\n }, {\n key: \"id\",\n value: function id(_id) {\n return new Memo(MemoID, _id);\n }\n\n /**\n * Creates and returns a `MemoHash` memo.\n * @param {array|string} hash - 32 byte hash or hex encoded string\n * @returns {Memo}\n */\n }, {\n key: \"hash\",\n value: function hash(_hash) {\n return new Memo(MemoHash, _hash);\n }\n\n /**\n * Creates and returns a `MemoReturn` memo.\n * @param {array|string} hash - 32 byte hash or hex encoded string\n * @returns {Memo}\n */\n }, {\n key: \"return\",\n value: function _return(hash) {\n return new Memo(MemoReturn, hash);\n }\n }, {\n key: \"fromXDRObject\",\n value: function fromXDRObject(object) {\n switch (object.arm()) {\n case 'id':\n return Memo.id(object.value().toString());\n case 'text':\n return Memo.text(object.value());\n case 'hash':\n return Memo.hash(object.value());\n case 'retHash':\n return Memo[\"return\"](object.value());\n default:\n break;\n }\n if (typeof object.value() === 'undefined') {\n return Memo.none();\n }\n throw new Error('Unknown type');\n }\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Transaction = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _hashing = require(\"./hashing\");\nvar _strkey = require(\"./strkey\");\nvar _operation = require(\"./operation\");\nvar _memo = require(\"./memo\");\nvar _transaction_base = require(\"./transaction_base\");\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n/**\n * Use {@link TransactionBuilder} to build a transaction object. If you have an\n * object or base64-encoded string of the transaction envelope XDR, use {@link\n * TransactionBuilder.fromXDR}.\n *\n * Once a Transaction has been created, its attributes and operations should not\n * be changed. You should only add signatures (using {@link Transaction#sign})\n * to a Transaction object before submitting to the network or forwarding on to\n * additional signers.\n *\n * @constructor\n *\n * @param {string|xdr.TransactionEnvelope} envelope - transaction envelope\n * object or base64 encoded string\n * @param {string} [networkPassphrase] - passphrase of the target stellar\n * network (e.g. \"Public Global Stellar Network ; September 2015\")\n *\n * @extends TransactionBase\n */\nvar Transaction = exports.Transaction = /*#__PURE__*/function (_TransactionBase) {\n function Transaction(envelope, networkPassphrase) {\n var _this;\n _classCallCheck(this, Transaction);\n if (typeof envelope === 'string') {\n var buffer = Buffer.from(envelope, 'base64');\n envelope = _xdr[\"default\"].TransactionEnvelope.fromXDR(buffer);\n }\n var envelopeType = envelope[\"switch\"]();\n if (!(envelopeType === _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0() || envelopeType === _xdr[\"default\"].EnvelopeType.envelopeTypeTx())) {\n throw new Error(\"Invalid TransactionEnvelope: expected an envelopeTypeTxV0 or envelopeTypeTx but received an \".concat(envelopeType.name, \".\"));\n }\n var txEnvelope = envelope.value();\n var tx = txEnvelope.tx();\n var fee = tx.fee().toString();\n var signatures = (txEnvelope.signatures() || []).slice();\n _this = _callSuper(this, Transaction, [tx, signatures, fee, networkPassphrase]);\n _this._envelopeType = envelopeType;\n _this._memo = tx.memo();\n _this._sequence = tx.seqNum().toString();\n switch (_this._envelopeType) {\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0():\n _this._source = _strkey.StrKey.encodeEd25519PublicKey(_this.tx.sourceAccountEd25519());\n break;\n default:\n _this._source = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(_this.tx.sourceAccount());\n break;\n }\n var cond = null;\n var timeBounds = null;\n switch (_this._envelopeType) {\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0():\n timeBounds = tx.timeBounds();\n break;\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTx():\n switch (tx.cond()[\"switch\"]()) {\n case _xdr[\"default\"].PreconditionType.precondTime():\n timeBounds = tx.cond().timeBounds();\n break;\n case _xdr[\"default\"].PreconditionType.precondV2():\n cond = tx.cond().v2();\n timeBounds = cond.timeBounds();\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n if (timeBounds) {\n _this._timeBounds = {\n minTime: timeBounds.minTime().toString(),\n maxTime: timeBounds.maxTime().toString()\n };\n }\n if (cond) {\n var ledgerBounds = cond.ledgerBounds();\n if (ledgerBounds) {\n _this._ledgerBounds = {\n minLedger: ledgerBounds.minLedger(),\n maxLedger: ledgerBounds.maxLedger()\n };\n }\n var minSeq = cond.minSeqNum();\n if (minSeq) {\n _this._minAccountSequence = minSeq.toString();\n }\n _this._minAccountSequenceAge = cond.minSeqAge();\n _this._minAccountSequenceLedgerGap = cond.minSeqLedgerGap();\n _this._extraSigners = cond.extraSigners();\n }\n var operations = tx.operations() || [];\n _this._operations = operations.map(function (op) {\n return _operation.Operation.fromXDRObject(op);\n });\n return _this;\n }\n\n /**\n * @type {object}\n * @property {string} 64 bit unix timestamp\n * @property {string} 64 bit unix timestamp\n * @readonly\n */\n _inherits(Transaction, _TransactionBase);\n return _createClass(Transaction, [{\n key: \"timeBounds\",\n get: function get() {\n return this._timeBounds;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {object}\n * @property {number} minLedger - smallest ledger bound (uint32)\n * @property {number} maxLedger - largest ledger bound (or 0 for inf)\n * @readonly\n */\n }, {\n key: \"ledgerBounds\",\n get: function get() {\n return this._ledgerBounds;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * 64 bit account sequence\n * @readonly\n * @type {string}\n */\n }, {\n key: \"minAccountSequence\",\n get: function get() {\n return this._minAccountSequence;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * 64 bit number of seconds\n * @type {number}\n * @readonly\n */\n }, {\n key: \"minAccountSequenceAge\",\n get: function get() {\n return this._minAccountSequenceAge;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * 32 bit number of ledgers\n * @type {number}\n * @readonly\n */\n }, {\n key: \"minAccountSequenceLedgerGap\",\n get: function get() {\n return this._minAccountSequenceLedgerGap;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * array of extra signers ({@link StrKey}s)\n * @type {string[]}\n * @readonly\n */\n }, {\n key: \"extraSigners\",\n get: function get() {\n return this._extraSigners;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"sequence\",\n get: function get() {\n return this._sequence;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"source\",\n get: function get() {\n return this._source;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {Array.}\n * @readonly\n */\n }, {\n key: \"operations\",\n get: function get() {\n return this._operations;\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"memo\",\n get: function get() {\n return _memo.Memo.fromXDRObject(this._memo);\n },\n set: function set(value) {\n throw new Error('Transaction is immutable');\n }\n\n /**\n * Returns the \"signature base\" of this transaction, which is the value\n * that, when hashed, should be signed to create a signature that\n * validators on the Stellar Network will accept.\n *\n * It is composed of a 4 prefix bytes followed by the xdr-encoded form\n * of this transaction.\n * @returns {Buffer}\n */\n }, {\n key: \"signatureBase\",\n value: function signatureBase() {\n var tx = this.tx;\n\n // Backwards Compatibility: Use ENVELOPE_TYPE_TX to sign ENVELOPE_TYPE_TX_V0\n // we need a Transaction to generate the signature base\n if (this._envelopeType === _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0()) {\n tx = _xdr[\"default\"].Transaction.fromXDR(Buffer.concat([\n // TransactionV0 is a transaction with the AccountID discriminant\n // stripped off, we need to put it back to build a valid transaction\n // which we can use to build a TransactionSignaturePayloadTaggedTransaction\n _xdr[\"default\"].PublicKeyType.publicKeyTypeEd25519().toXDR(), tx.toXDR()]));\n }\n var taggedTransaction = new _xdr[\"default\"].TransactionSignaturePayloadTaggedTransaction.envelopeTypeTx(tx);\n var txSignature = new _xdr[\"default\"].TransactionSignaturePayload({\n networkId: _xdr[\"default\"].Hash.fromXDR((0, _hashing.hash)(this.networkPassphrase)),\n taggedTransaction: taggedTransaction\n });\n return txSignature.toXDR();\n }\n\n /**\n * To envelope returns a xdr.TransactionEnvelope which can be submitted to the network.\n * @returns {xdr.TransactionEnvelope}\n */\n }, {\n key: \"toEnvelope\",\n value: function toEnvelope() {\n var rawTx = this.tx.toXDR();\n var signatures = this.signatures.slice(); // make a copy of the signatures\n\n var envelope;\n switch (this._envelopeType) {\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0():\n envelope = new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTxV0(new _xdr[\"default\"].TransactionV0Envelope({\n tx: _xdr[\"default\"].TransactionV0.fromXDR(rawTx),\n // make a copy of tx\n signatures: signatures\n }));\n break;\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTx():\n envelope = new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTx(new _xdr[\"default\"].TransactionV1Envelope({\n tx: _xdr[\"default\"].Transaction.fromXDR(rawTx),\n // make a copy of tx\n signatures: signatures\n }));\n break;\n default:\n throw new Error(\"Invalid TransactionEnvelope: expected an envelopeTypeTxV0 or envelopeTypeTx but received an \".concat(this._envelopeType.name, \".\"));\n }\n return envelope;\n }\n\n /**\n * Calculate the claimable balance ID for an operation within the transaction.\n *\n * @param {integer} opIndex the index of the CreateClaimableBalance op\n * @returns {string} a hex string representing the claimable balance ID\n *\n * @throws {RangeError} for invalid `opIndex` value\n * @throws {TypeError} if op at `opIndex` is not `CreateClaimableBalance`\n * @throws for general XDR un/marshalling failures\n *\n * @see https://github.com/stellar/go/blob/d712346e61e288d450b0c08038c158f8848cc3e4/txnbuild/transaction.go#L392-L435\n *\n */\n }, {\n key: \"getClaimableBalanceId\",\n value: function getClaimableBalanceId(opIndex) {\n // Validate and then extract the operation from the transaction.\n if (!Number.isInteger(opIndex) || opIndex < 0 || opIndex >= this.operations.length) {\n throw new RangeError('invalid operation index');\n }\n var op = this.operations[opIndex];\n try {\n op = _operation.Operation.createClaimableBalance(op);\n } catch (err) {\n throw new TypeError(\"expected createClaimableBalance, got \".concat(op.type, \": \").concat(err));\n }\n\n // Always use the transaction's *unmuxed* source.\n var account = _strkey.StrKey.decodeEd25519PublicKey((0, _decode_encode_muxed_account.extractBaseAddress)(this.source));\n var operationId = _xdr[\"default\"].HashIdPreimage.envelopeTypeOpId(new _xdr[\"default\"].HashIdPreimageOperationId({\n sourceAccount: _xdr[\"default\"].AccountId.publicKeyTypeEd25519(account),\n seqNum: _xdr[\"default\"].SequenceNumber.fromString(this.sequence),\n opNum: opIndex\n }));\n var opIdHash = (0, _hashing.hash)(operationId.toXDR('raw'));\n var balanceId = _xdr[\"default\"].ClaimableBalanceId.claimableBalanceIdTypeV0(opIdHash);\n return balanceId.toXDR('hex');\n }\n }]);\n}(_transaction_base.TransactionBase);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FeeBumpTransaction = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _hashing = require(\"./hashing\");\nvar _transaction = require(\"./transaction\");\nvar _transaction_base = require(\"./transaction_base\");\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n/**\n * Use {@link TransactionBuilder.buildFeeBumpTransaction} to build a\n * FeeBumpTransaction object. If you have an object or base64-encoded string of\n * the transaction envelope XDR use {@link TransactionBuilder.fromXDR}.\n *\n * Once a {@link FeeBumpTransaction} has been created, its attributes and operations\n * should not be changed. You should only add signatures (using {@link FeeBumpTransaction#sign}) before\n * submitting to the network or forwarding on to additional signers.\n *\n * @param {string|xdr.TransactionEnvelope} envelope - transaction envelope\n * object or base64 encoded string.\n * @param {string} networkPassphrase - passphrase of the target Stellar network\n * (e.g. \"Public Global Stellar Network ; September 2015\").\n *\n * @extends TransactionBase\n */\nvar FeeBumpTransaction = exports.FeeBumpTransaction = /*#__PURE__*/function (_TransactionBase) {\n function FeeBumpTransaction(envelope, networkPassphrase) {\n var _this;\n _classCallCheck(this, FeeBumpTransaction);\n if (typeof envelope === 'string') {\n var buffer = Buffer.from(envelope, 'base64');\n envelope = _xdr[\"default\"].TransactionEnvelope.fromXDR(buffer);\n }\n var envelopeType = envelope[\"switch\"]();\n if (envelopeType !== _xdr[\"default\"].EnvelopeType.envelopeTypeTxFeeBump()) {\n throw new Error(\"Invalid TransactionEnvelope: expected an envelopeTypeTxFeeBump but received an \".concat(envelopeType.name, \".\"));\n }\n var txEnvelope = envelope.value();\n var tx = txEnvelope.tx();\n var fee = tx.fee().toString();\n // clone signatures\n var signatures = (txEnvelope.signatures() || []).slice();\n _this = _callSuper(this, FeeBumpTransaction, [tx, signatures, fee, networkPassphrase]);\n var innerTxEnvelope = _xdr[\"default\"].TransactionEnvelope.envelopeTypeTx(tx.innerTx().v1());\n _this._feeSource = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(_this.tx.feeSource());\n _this._innerTransaction = new _transaction.Transaction(innerTxEnvelope, networkPassphrase);\n return _this;\n }\n\n /**\n * @type {Transaction}\n * @readonly\n */\n _inherits(FeeBumpTransaction, _TransactionBase);\n return _createClass(FeeBumpTransaction, [{\n key: \"innerTransaction\",\n get: function get() {\n return this._innerTransaction;\n }\n\n /**\n * @type {Operation[]}\n * @readonly\n */\n }, {\n key: \"operations\",\n get: function get() {\n return this._innerTransaction.operations;\n }\n\n /**\n * @type {string}\n * @readonly\n */\n }, {\n key: \"feeSource\",\n get: function get() {\n return this._feeSource;\n }\n\n /**\n * Returns the \"signature base\" of this transaction, which is the value\n * that, when hashed, should be signed to create a signature that\n * validators on the Stellar Network will accept.\n *\n * It is composed of a 4 prefix bytes followed by the xdr-encoded form\n * of this transaction.\n * @returns {Buffer}\n */\n }, {\n key: \"signatureBase\",\n value: function signatureBase() {\n var taggedTransaction = new _xdr[\"default\"].TransactionSignaturePayloadTaggedTransaction.envelopeTypeTxFeeBump(this.tx);\n var txSignature = new _xdr[\"default\"].TransactionSignaturePayload({\n networkId: _xdr[\"default\"].Hash.fromXDR((0, _hashing.hash)(this.networkPassphrase)),\n taggedTransaction: taggedTransaction\n });\n return txSignature.toXDR();\n }\n\n /**\n * To envelope returns a xdr.TransactionEnvelope which can be submitted to the network.\n * @returns {xdr.TransactionEnvelope}\n */\n }, {\n key: \"toEnvelope\",\n value: function toEnvelope() {\n var envelope = new _xdr[\"default\"].FeeBumpTransactionEnvelope({\n tx: _xdr[\"default\"].FeeBumpTransaction.fromXDR(this.tx.toXDR()),\n // make a copy of the tx\n signatures: this.signatures.slice() // make a copy of the signatures\n });\n return new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTxFeeBump(envelope);\n }\n }]);\n}(_transaction_base.TransactionBase);", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Account = void 0;\nvar _bignumber = _interopRequireDefault(require(\"./util/bignumber\"));\nvar _strkey = require(\"./strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Create a new Account object.\n *\n * `Account` represents a single account in the Stellar network and its sequence\n * number. Account tracks the sequence number as it is used by {@link\n * TransactionBuilder}. See\n * [Accounts](https://developers.stellar.org/docs/glossary/accounts/) for\n * more information about how accounts work in Stellar.\n *\n * @constructor\n *\n * @param {string} accountId - ID of the account (ex.\n * `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`). If you\n * provide a muxed account address, this will throw; use {@link\n * MuxedAccount} instead.\n * @param {string} sequence - current sequence number of the account\n */\nvar Account = exports.Account = /*#__PURE__*/function () {\n function Account(accountId, sequence) {\n _classCallCheck(this, Account);\n if (_strkey.StrKey.isValidMed25519PublicKey(accountId)) {\n throw new Error('accountId is an M-address; use MuxedAccount instead');\n }\n if (!_strkey.StrKey.isValidEd25519PublicKey(accountId)) {\n throw new Error('accountId is invalid');\n }\n if (!(typeof sequence === 'string')) {\n throw new Error('sequence must be of type string');\n }\n this._accountId = accountId;\n this.sequence = new _bignumber[\"default\"](sequence);\n }\n\n /**\n * Returns Stellar account ID, ex.\n * `GB3KJPLFUYN5VL6R3GU3EGCGVCKFDSD7BEDX42HWG5BWFKB3KQGJJRMA`.\n * @returns {string}\n */\n return _createClass(Account, [{\n key: \"accountId\",\n value: function accountId() {\n return this._accountId;\n }\n\n /**\n * @returns {string} sequence number for the account as a string\n */\n }, {\n key: \"sequenceNumber\",\n value: function sequenceNumber() {\n return this.sequence.toString();\n }\n\n /**\n * Increments sequence number in this object by one.\n * @returns {void}\n */\n }, {\n key: \"incrementSequenceNumber\",\n value: function incrementSequenceNumber() {\n this.sequence = this.sequence.plus(1);\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MuxedAccount = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _account = require(\"./account\");\nvar _strkey = require(\"./strkey\");\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Represents a muxed account for transactions and operations.\n *\n * A muxed (or *multiplexed*) account (defined rigorously in\n * [CAP-27](https://stellar.org/protocol/cap-27) and briefly in\n * [SEP-23](https://stellar.org/protocol/sep-23)) is one that resolves a single\n * Stellar `G...`` account to many different underlying IDs.\n *\n * For example, you may have a single Stellar address for accounting purposes:\n * GA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJVSGZ\n *\n * Yet would like to use it for 4 different family members:\n * 1: MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAAGZFQ\n * 2: MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAALIWQ\n * 3: MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAAPYHQ\n * 4: MA7QYNF7SOWQ3GLR2BGMZEHXAVIRZA4KVWLTJJFC7MGXUA74P7UJUAAAAAAAAAAAAQLQQ\n *\n * This object makes it easy to create muxed accounts from regular accounts,\n * duplicate them, get/set the underlying IDs, etc. without mucking around with\n * the raw XDR.\n *\n * Because muxed accounts are purely an off-chain convention, they all share the\n * sequence number tied to their underlying G... account. Thus, this object\n * *requires* an {@link Account} instance to be passed in, so that muxed\n * instances of an account can collectively modify the sequence number whenever\n * a muxed account is used as the source of a @{link Transaction} with {@link\n * TransactionBuilder}.\n *\n * @constructor\n *\n * @param {Account} account - the @{link Account} instance representing the\n * underlying G... address\n * @param {string} id - a stringified uint64 value that represents the\n * ID of the muxed account\n *\n * @link https://developers.stellar.org/docs/glossary/muxed-accounts/\n */\nvar MuxedAccount = exports.MuxedAccount = /*#__PURE__*/function () {\n function MuxedAccount(baseAccount, id) {\n _classCallCheck(this, MuxedAccount);\n var accountId = baseAccount.accountId();\n if (!_strkey.StrKey.isValidEd25519PublicKey(accountId)) {\n throw new Error('accountId is invalid');\n }\n this.account = baseAccount;\n this._muxedXdr = (0, _decode_encode_muxed_account.encodeMuxedAccount)(accountId, id);\n this._mAddress = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(this._muxedXdr);\n this._id = id;\n }\n\n /**\n * Parses an M-address into a MuxedAccount object.\n *\n * @param {string} mAddress - an M-address to transform\n * @param {string} sequenceNum - the sequence number of the underlying {@link\n * Account}, to use for the underlying base account (@link\n * MuxedAccount.baseAccount). If you're using the SDK, you can use\n * `server.loadAccount` to fetch this if you don't know it.\n *\n * @return {MuxedAccount}\n */\n return _createClass(MuxedAccount, [{\n key: \"baseAccount\",\n value:\n /**\n * @return {Account} the underlying account object shared among all muxed\n * accounts with this Stellar address\n */\n function baseAccount() {\n return this.account;\n }\n\n /**\n * @return {string} the M-address representing this account's (G-address, ID)\n */\n }, {\n key: \"accountId\",\n value: function accountId() {\n return this._mAddress;\n }\n }, {\n key: \"id\",\n value: function id() {\n return this._id;\n }\n }, {\n key: \"setId\",\n value: function setId(id) {\n if (typeof id !== 'string') {\n throw new Error('id should be a string representing a number (uint64)');\n }\n this._muxedXdr.med25519().id(_xdr[\"default\"].Uint64.fromString(id));\n this._mAddress = (0, _decode_encode_muxed_account.encodeMuxedAccountToAddress)(this._muxedXdr);\n this._id = id;\n return this;\n }\n\n /**\n * Accesses the underlying account's sequence number.\n * @return {string} strigified sequence number for the underlying account\n */\n }, {\n key: \"sequenceNumber\",\n value: function sequenceNumber() {\n return this.account.sequenceNumber();\n }\n\n /**\n * Increments the underlying account's sequence number by one.\n * @return {void}\n */\n }, {\n key: \"incrementSequenceNumber\",\n value: function incrementSequenceNumber() {\n return this.account.incrementSequenceNumber();\n }\n\n /**\n * @return {xdr.MuxedAccount} the XDR object representing this muxed account's\n * G-address and uint64 ID\n */\n }, {\n key: \"toXDRObject\",\n value: function toXDRObject() {\n return this._muxedXdr;\n }\n }, {\n key: \"equals\",\n value: function equals(otherMuxedAccount) {\n return this.accountId() === otherMuxedAccount.accountId();\n }\n }], [{\n key: \"fromAddress\",\n value: function fromAddress(mAddress, sequenceNum) {\n var muxedAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(mAddress);\n var gAddress = (0, _decode_encode_muxed_account.extractBaseAddress)(mAddress);\n var id = muxedAccount.med25519().id().toString();\n return new MuxedAccount(new _account.Account(gAddress, sequenceNum), id);\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SorobanDataBuilder = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Supports building {@link xdr.SorobanTransactionData} structures with various\n * items set to specific values.\n *\n * This is recommended for when you are building\n * {@link Operation.extendFootprintTtl} / {@link Operation.restoreFootprint}\n * operations and need to {@link TransactionBuilder.setSorobanData} to avoid\n * (re)building the entire data structure from scratch.\n *\n * @constructor\n *\n * @param {string | xdr.SorobanTransactionData} [sorobanData] either a\n * base64-encoded string that represents an\n * {@link xdr.SorobanTransactionData} instance or an XDR instance itself\n * (it will be copied); if omitted or \"falsy\" (e.g. an empty string), it\n * starts with an empty instance\n *\n * @example\n * // You want to use an existing data blob but override specific parts.\n * const newData = new SorobanDataBuilder(existing)\n * .setReadOnly(someLedgerKeys)\n * .setRefundableFee(\"1000\")\n * .build();\n *\n * // You want an instance from scratch\n * const newData = new SorobanDataBuilder()\n * .setFootprint([someLedgerKey], [])\n * .setRefundableFee(\"1000\")\n * .build();\n */\nvar SorobanDataBuilder = exports.SorobanDataBuilder = /*#__PURE__*/function () {\n function SorobanDataBuilder(sorobanData) {\n _classCallCheck(this, SorobanDataBuilder);\n _defineProperty(this, \"_data\", void 0);\n var data;\n if (!sorobanData) {\n data = new _xdr[\"default\"].SorobanTransactionData({\n resources: new _xdr[\"default\"].SorobanResources({\n footprint: new _xdr[\"default\"].LedgerFootprint({\n readOnly: [],\n readWrite: []\n }),\n instructions: 0,\n diskReadBytes: 0,\n writeBytes: 0\n }),\n ext: new _xdr[\"default\"].SorobanTransactionDataExt(0),\n resourceFee: new _xdr[\"default\"].Int64(0)\n });\n } else if (typeof sorobanData === 'string' || ArrayBuffer.isView(sorobanData)) {\n data = SorobanDataBuilder.fromXDR(sorobanData);\n } else {\n data = SorobanDataBuilder.fromXDR(sorobanData.toXDR()); // copy\n }\n this._data = data;\n }\n\n /**\n * Decodes and builds a {@link xdr.SorobanTransactionData} instance.\n * @param {Uint8Array|Buffer|string} data raw input to decode\n * @returns {xdr.SorobanTransactionData}\n */\n return _createClass(SorobanDataBuilder, [{\n key: \"setResourceFee\",\n value:\n /**\n * Sets the resource fee portion of the Soroban data.\n * @param {number | bigint | string} fee the resource fee to set (int64)\n * @returns {SorobanDataBuilder}\n */\n function setResourceFee(fee) {\n this._data.resourceFee(new _xdr[\"default\"].Int64(fee));\n return this;\n }\n\n /**\n * Sets up the resource metrics.\n *\n * You should almost NEVER need this, as its often generated / provided to you\n * by transaction simulation/preflight from a Soroban RPC server.\n *\n * @param {number} cpuInstrs number of CPU instructions\n * @param {number} diskReadBytes number of bytes being read from disk\n * @param {number} writeBytes number of bytes being written to disk/memory\n *\n * @returns {SorobanDataBuilder}\n */\n }, {\n key: \"setResources\",\n value: function setResources(cpuInstrs, diskReadBytes, writeBytes) {\n this._data.resources().instructions(cpuInstrs);\n this._data.resources().diskReadBytes(diskReadBytes);\n this._data.resources().writeBytes(writeBytes);\n return this;\n }\n\n /**\n * Appends the given ledger keys to the existing storage access footprint.\n * @param {xdr.LedgerKey[]} readOnly read-only keys to add\n * @param {xdr.LedgerKey[]} readWrite read-write keys to add\n * @returns {SorobanDataBuilder} this builder instance\n */\n }, {\n key: \"appendFootprint\",\n value: function appendFootprint(readOnly, readWrite) {\n return this.setFootprint(this.getReadOnly().concat(readOnly), this.getReadWrite().concat(readWrite));\n }\n\n /**\n * Sets the storage access footprint to be a certain set of ledger keys.\n *\n * You can also set each field explicitly via\n * {@link SorobanDataBuilder.setReadOnly} and\n * {@link SorobanDataBuilder.setReadWrite} or add to the existing footprint\n * via {@link SorobanDataBuilder.appendFootprint}.\n *\n * Passing `null|undefined` to either parameter will IGNORE the existing\n * values. If you want to clear them, pass `[]`, instead.\n *\n * @param {xdr.LedgerKey[]|null} [readOnly] the set of ledger keys to set in\n * the read-only portion of the transaction's `sorobanData`, or `null |\n * undefined` to keep the existing keys\n * @param {xdr.LedgerKey[]|null} [readWrite] the set of ledger keys to set in\n * the read-write portion of the transaction's `sorobanData`, or `null |\n * undefined` to keep the existing keys\n * @returns {SorobanDataBuilder} this builder instance\n */\n }, {\n key: \"setFootprint\",\n value: function setFootprint(readOnly, readWrite) {\n if (readOnly !== null) {\n // null means \"leave me alone\"\n this.setReadOnly(readOnly);\n }\n if (readWrite !== null) {\n this.setReadWrite(readWrite);\n }\n return this;\n }\n\n /**\n * @param {xdr.LedgerKey[]} readOnly read-only keys in the access footprint\n * @returns {SorobanDataBuilder}\n */\n }, {\n key: \"setReadOnly\",\n value: function setReadOnly(readOnly) {\n this._data.resources().footprint().readOnly(readOnly !== null && readOnly !== void 0 ? readOnly : []);\n return this;\n }\n\n /**\n * @param {xdr.LedgerKey[]} readWrite read-write keys in the access footprint\n * @returns {SorobanDataBuilder}\n */\n }, {\n key: \"setReadWrite\",\n value: function setReadWrite(readWrite) {\n this._data.resources().footprint().readWrite(readWrite !== null && readWrite !== void 0 ? readWrite : []);\n return this;\n }\n\n /**\n * @returns {xdr.SorobanTransactionData} a copy of the final data structure\n */\n }, {\n key: \"build\",\n value: function build() {\n return _xdr[\"default\"].SorobanTransactionData.fromXDR(this._data.toXDR()); // clone\n }\n\n //\n // getters follow\n //\n\n /** @returns {xdr.LedgerKey[]} the read-only storage access pattern */\n }, {\n key: \"getReadOnly\",\n value: function getReadOnly() {\n return this.getFootprint().readOnly();\n }\n\n /** @returns {xdr.LedgerKey[]} the read-write storage access pattern */\n }, {\n key: \"getReadWrite\",\n value: function getReadWrite() {\n return this.getFootprint().readWrite();\n }\n\n /** @returns {xdr.LedgerFootprint} the storage access pattern */\n }, {\n key: \"getFootprint\",\n value: function getFootprint() {\n return this._data.resources().footprint();\n }\n }], [{\n key: \"fromXDR\",\n value: function fromXDR(data) {\n return _xdr[\"default\"].SorobanTransactionData.fromXDR(data, typeof data === 'string' ? 'base64' : 'raw');\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SignerKey = void 0;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _strkey = require(\"./strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * A container class with helpers to convert between signer keys\n * (`xdr.SignerKey`) and {@link StrKey}s.\n *\n * It's primarly used for manipulating the `extraSigners` precondition on a\n * {@link Transaction}.\n *\n * @see {@link TransactionBuilder.setExtraSigners}\n */\nvar SignerKey = exports.SignerKey = /*#__PURE__*/function () {\n function SignerKey() {\n _classCallCheck(this, SignerKey);\n }\n return _createClass(SignerKey, null, [{\n key: \"decodeAddress\",\n value:\n /**\n * Decodes a StrKey address into an xdr.SignerKey instance.\n *\n * Only ED25519 public keys (G...), pre-auth transactions (T...), hashes\n * (H...), and signed payloads (P...) can be signer keys.\n *\n * @param {string} address a StrKey-encoded signer address\n * @returns {xdr.SignerKey}\n */\n function decodeAddress(address) {\n var signerKeyMap = {\n ed25519PublicKey: _xdr[\"default\"].SignerKey.signerKeyTypeEd25519,\n preAuthTx: _xdr[\"default\"].SignerKey.signerKeyTypePreAuthTx,\n sha256Hash: _xdr[\"default\"].SignerKey.signerKeyTypeHashX,\n signedPayload: _xdr[\"default\"].SignerKey.signerKeyTypeEd25519SignedPayload\n };\n var vb = _strkey.StrKey.getVersionByteForPrefix(address);\n var encoder = signerKeyMap[vb];\n if (!encoder) {\n throw new Error(\"invalid signer key type (\".concat(vb, \")\"));\n }\n var raw = (0, _strkey.decodeCheck)(vb, address);\n switch (vb) {\n case 'signedPayload':\n return encoder(new _xdr[\"default\"].SignerKeyEd25519SignedPayload({\n ed25519: raw.slice(0, 32),\n payload: raw.slice(32 + 4)\n }));\n case 'ed25519PublicKey': // falls through\n case 'preAuthTx': // falls through\n case 'sha256Hash': // falls through\n default:\n return encoder(raw);\n }\n }\n\n /**\n * Encodes a signer key into its StrKey equivalent.\n *\n * @param {xdr.SignerKey} signerKey the signer\n * @returns {string} the StrKey representation of the signer\n */\n }, {\n key: \"encodeSignerKey\",\n value: function encodeSignerKey(signerKey) {\n var strkeyType;\n var raw;\n switch (signerKey[\"switch\"]()) {\n case _xdr[\"default\"].SignerKeyType.signerKeyTypeEd25519():\n strkeyType = 'ed25519PublicKey';\n raw = signerKey.value();\n break;\n case _xdr[\"default\"].SignerKeyType.signerKeyTypePreAuthTx():\n strkeyType = 'preAuthTx';\n raw = signerKey.value();\n break;\n case _xdr[\"default\"].SignerKeyType.signerKeyTypeHashX():\n strkeyType = 'sha256Hash';\n raw = signerKey.value();\n break;\n case _xdr[\"default\"].SignerKeyType.signerKeyTypeEd25519SignedPayload():\n strkeyType = 'signedPayload';\n raw = signerKey.ed25519SignedPayload().toXDR('raw');\n break;\n default:\n throw new Error(\"invalid SignerKey (type: \".concat(signerKey[\"switch\"](), \")\"));\n }\n return (0, _strkey.encodeCheck)(strkeyType, raw);\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransactionBuilder = exports.TimeoutInfinite = exports.BASE_FEE = void 0;\nexports.isValidDate = isValidDate;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _bignumber = _interopRequireDefault(require(\"./util/bignumber\"));\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _account = require(\"./account\");\nvar _muxed_account = require(\"./muxed_account\");\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nvar _transaction = require(\"./transaction\");\nvar _fee_bump_transaction = require(\"./fee_bump_transaction\");\nvar _sorobandata_builder = require(\"./sorobandata_builder\");\nvar _strkey = require(\"./strkey\");\nvar _signerkey = require(\"./signerkey\");\nvar _memo = require(\"./memo\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Minimum base fee for transactions. If this fee is below the network\n * minimum, the transaction will fail. The more operations in the\n * transaction, the greater the required fee. Use {@link\n * Server#fetchBaseFee} to get an accurate value of minimum transaction\n * fee on the network.\n *\n * @constant\n * @see [Fees](https://developers.stellar.org/docs/glossary/fees/)\n */\nvar BASE_FEE = exports.BASE_FEE = '100'; // Stroops\n\n/**\n * @constant\n * @see {@link TransactionBuilder#setTimeout}\n * @see [Timeout](https://developers.stellar.org/api/resources/transactions/post/)\n */\nvar TimeoutInfinite = exports.TimeoutInfinite = 0;\n\n/**\n *

Transaction builder helps constructs a new `{@link Transaction}` using the\n * given {@link Account} as the transaction's \"source account\". The transaction\n * will use the current sequence number of the given account as its sequence\n * number and increment the given account's sequence number by one. The given\n * source account must include a private key for signing the transaction or an\n * error will be thrown.

\n *\n *

Operations can be added to the transaction via their corresponding builder\n * methods, and each returns the TransactionBuilder object so they can be\n * chained together. After adding the desired operations, call the `build()`\n * method on the `TransactionBuilder` to return a fully constructed `{@link\n * Transaction}` that can be signed. The returned transaction will contain the\n * sequence number of the source account and include the signature from the\n * source account.

\n *\n *

Be careful about unsubmitted transactions! When you build\n * a transaction, `stellar-sdk` automatically increments the source account's\n * sequence number. If you end up not submitting this transaction and submitting\n * another one instead, it'll fail due to the sequence number being wrong. So if\n * you decide not to use a built transaction, make sure to update the source\n * account's sequence number with\n * [Server.loadAccount](https://stellar.github.io/js-stellar-sdk/Server.html#loadAccount)\n * before creating another transaction.

\n *\n *

The following code example creates a new transaction with {@link\n * Operation.createAccount} and {@link Operation.payment} operations. The\n * Transaction's source account first funds `destinationA`, then sends a payment\n * to `destinationB`. The built transaction is then signed by\n * `sourceKeypair`.

\n *\n * ```\n * var transaction = new TransactionBuilder(source, { fee, networkPassphrase: Networks.TESTNET })\n * .addOperation(Operation.createAccount({\n * destination: destinationA,\n * startingBalance: \"20\"\n * })) // <- funds and creates destinationA\n * .addOperation(Operation.payment({\n * destination: destinationB,\n * amount: \"100\",\n * asset: Asset.native()\n * })) // <- sends 100 XLM to destinationB\n * .setTimeout(30)\n * .build();\n *\n * transaction.sign(sourceKeypair);\n * ```\n *\n * @constructor\n *\n * @param {Account} sourceAccount - source account for this transaction\n * @param {object} opts - Options object\n * @param {string} opts.fee - max fee you're willing to pay per\n * operation in this transaction (**in stroops**)\n *\n * @param {object} [opts.timebounds] - timebounds for the\n * validity of this transaction\n * @param {number|string|Date} [opts.timebounds.minTime] - 64-bit UNIX\n * timestamp or Date object\n * @param {number|string|Date} [opts.timebounds.maxTime] - 64-bit UNIX\n * timestamp or Date object\n * @param {object} [opts.ledgerbounds] - ledger bounds for the\n * validity of this transaction\n * @param {number} [opts.ledgerbounds.minLedger] - number of the minimum\n * ledger sequence\n * @param {number} [opts.ledgerbounds.maxLedger] - number of the maximum\n * ledger sequence\n * @param {string} [opts.minAccountSequence] - number for\n * the minimum account sequence\n * @param {number} [opts.minAccountSequenceAge] - number of\n * seconds for the minimum account sequence age\n * @param {number} [opts.minAccountSequenceLedgerGap] - number of\n * ledgers for the minimum account sequence ledger gap\n * @param {string[]} [opts.extraSigners] - list of the extra signers\n * required for this transaction\n * @param {Memo} [opts.memo] - memo for the transaction\n * @param {string} [opts.networkPassphrase] passphrase of the\n * target Stellar network (e.g. \"Public Global Stellar Network ; September\n * 2015\" for the pubnet)\n * @param {xdr.SorobanTransactionData | string} [opts.sorobanData] - an\n * optional instance of {@link xdr.SorobanTransactionData} to be set as the\n * internal `Transaction.Ext.SorobanData` field (either the xdr object or a\n * base64 string). In the case of Soroban transactions, this can be obtained\n * from a prior simulation of the transaction with a contract invocation and\n * provides necessary resource estimations. You can also use\n * {@link SorobanDataBuilder} to construct complicated combinations of\n * parameters without mucking with XDR directly. **Note:** For\n * non-contract(non-Soroban) transactions, this has no effect.\n */\nvar TransactionBuilder = exports.TransactionBuilder = /*#__PURE__*/function () {\n function TransactionBuilder(sourceAccount) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, TransactionBuilder);\n if (!sourceAccount) {\n throw new Error('must specify source account for the transaction');\n }\n if (opts.fee === undefined) {\n throw new Error('must specify fee for the transaction (in stroops)');\n }\n this.source = sourceAccount;\n this.operations = [];\n this.baseFee = opts.fee;\n this.timebounds = opts.timebounds ? _objectSpread({}, opts.timebounds) : null;\n this.ledgerbounds = opts.ledgerbounds ? _objectSpread({}, opts.ledgerbounds) : null;\n this.minAccountSequence = opts.minAccountSequence || null;\n this.minAccountSequenceAge = opts.minAccountSequenceAge || null;\n this.minAccountSequenceLedgerGap = opts.minAccountSequenceLedgerGap || null;\n this.extraSigners = opts.extraSigners ? _toConsumableArray(opts.extraSigners) : null;\n this.memo = opts.memo || _memo.Memo.none();\n this.networkPassphrase = opts.networkPassphrase || null;\n this.sorobanData = opts.sorobanData ? new _sorobandata_builder.SorobanDataBuilder(opts.sorobanData).build() : null;\n }\n\n /**\n * Creates a builder instance using an existing {@link Transaction} as a\n * template, ignoring any existing envelope signatures.\n *\n * Note that the sequence number WILL be cloned, so EITHER this transaction or\n * the one it was cloned from will be valid. This is useful in situations\n * where you are constructing a transaction in pieces and need to make\n * adjustments as you go (for example, when filling out Soroban resource\n * information).\n *\n * @param {Transaction} tx a \"template\" transaction to clone exactly\n * @param {object} [opts] additional options to override the clone, e.g.\n * {fee: '1000'} will override the existing base fee derived from `tx` (see\n * the {@link TransactionBuilder} constructor for detailed options)\n *\n * @returns {TransactionBuilder} a \"prepared\" builder instance with the same\n * configuration and operations as the given transaction\n *\n * @warning This does not clone the transaction's\n * {@link xdr.SorobanTransactionData} (if applicable), use\n * {@link SorobanDataBuilder} and {@link TransactionBuilder.setSorobanData}\n * as needed, instead..\n *\n * @todo This cannot clone {@link FeeBumpTransaction}s, yet.\n */\n return _createClass(TransactionBuilder, [{\n key: \"addOperation\",\n value:\n /**\n * Adds an operation to the transaction.\n *\n * @param {xdr.Operation} operation The xdr operation object, use {@link\n * Operation} static methods.\n *\n * @returns {TransactionBuilder}\n */\n function addOperation(operation) {\n this.operations.push(operation);\n return this;\n }\n\n /**\n * Adds an operation to the transaction at a specific index.\n *\n * @param {xdr.Operation} operation - The xdr operation object to add, use {@link Operation} static methods.\n * @param {number} index - The index at which to insert the operation.\n *\n * @returns {TransactionBuilder} - The TransactionBuilder instance for method chaining.\n */\n }, {\n key: \"addOperationAt\",\n value: function addOperationAt(operation, index) {\n this.operations.splice(index, 0, operation);\n return this;\n }\n\n /**\n * Removes the operations from the builder (useful when cloning).\n * @returns {TransactionBuilder} this builder instance\n */\n }, {\n key: \"clearOperations\",\n value: function clearOperations() {\n this.operations = [];\n return this;\n }\n\n /**\n * Removes the operation at the specified index from the transaction.\n *\n * @param {number} index - The index of the operation to remove.\n *\n * @returns {TransactionBuilder} The TransactionBuilder instance for method chaining.\n */\n }, {\n key: \"clearOperationAt\",\n value: function clearOperationAt(index) {\n this.operations.splice(index, 1);\n return this;\n }\n\n /**\n * Adds a memo to the transaction.\n * @param {Memo} memo {@link Memo} object\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"addMemo\",\n value: function addMemo(memo) {\n this.memo = memo;\n return this;\n }\n\n /**\n * Sets a timeout precondition on the transaction.\n *\n * Because of the distributed nature of the Stellar network it is possible\n * that the status of your transaction will be determined after a long time\n * if the network is highly congested. If you want to be sure to receive the\n * status of the transaction within a given period you should set the {@link\n * TimeBounds} with `maxTime` on the transaction (this is what `setTimeout`\n * does internally; if there's `minTime` set but no `maxTime` it will be\n * added).\n *\n * A call to `TransactionBuilder.setTimeout` is **required** if Transaction\n * does not have `max_time` set. If you don't want to set timeout, use\n * `{@link TimeoutInfinite}`. In general you should set `{@link\n * TimeoutInfinite}` only in smart contracts.\n *\n * Please note that Horizon may still return 504 Gateway Timeout\n * error, even for short timeouts. In such case you need to resubmit the same\n * transaction again without making any changes to receive a status. This\n * method is using the machine system time (UTC), make sure it is set\n * correctly.\n *\n * @param {number} timeoutSeconds Number of seconds the transaction is good.\n * Can't be negative. If the value is {@link TimeoutInfinite}, the\n * transaction is good indefinitely.\n *\n * @returns {TransactionBuilder}\n *\n * @see {@link TimeoutInfinite}\n * @see https://developers.stellar.org/docs/tutorials/handling-errors/\n */\n }, {\n key: \"setTimeout\",\n value: function setTimeout(timeoutSeconds) {\n if (this.timebounds !== null && this.timebounds.maxTime > 0) {\n throw new Error('TimeBounds.max_time has been already set - setting timeout would overwrite it.');\n }\n if (timeoutSeconds < 0) {\n throw new Error('timeout cannot be negative');\n }\n if (timeoutSeconds > 0) {\n var timeoutTimestamp = Math.floor(Date.now() / 1000) + timeoutSeconds;\n if (this.timebounds === null) {\n this.timebounds = {\n minTime: 0,\n maxTime: timeoutTimestamp\n };\n } else {\n this.timebounds = {\n minTime: this.timebounds.minTime,\n maxTime: timeoutTimestamp\n };\n }\n } else {\n this.timebounds = {\n minTime: 0,\n maxTime: 0\n };\n }\n return this;\n }\n\n /**\n * If you want to prepare a transaction which will become valid at some point\n * in the future, or be invalid after some time, you can set a timebounds\n * precondition. Internally this will set the `minTime`, and `maxTime`\n * preconditions. Conflicts with `setTimeout`, so use one or the other.\n *\n * @param {Date|number} minEpochOrDate Either a JS Date object, or a number\n * of UNIX epoch seconds. The transaction is valid after this timestamp.\n * Can't be negative. If the value is `0`, the transaction is valid\n * immediately.\n * @param {Date|number} maxEpochOrDate Either a JS Date object, or a number\n * of UNIX epoch seconds. The transaction is valid until this timestamp.\n * Can't be negative. If the value is `0`, the transaction is valid\n * indefinitely.\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setTimebounds\",\n value: function setTimebounds(minEpochOrDate, maxEpochOrDate) {\n // Force it to a date type\n if (typeof minEpochOrDate === 'number') {\n minEpochOrDate = new Date(minEpochOrDate * 1000);\n }\n if (typeof maxEpochOrDate === 'number') {\n maxEpochOrDate = new Date(maxEpochOrDate * 1000);\n }\n if (this.timebounds !== null) {\n throw new Error('TimeBounds has been already set - setting timebounds would overwrite it.');\n }\n\n // Convert that date to the epoch seconds\n var minTime = Math.floor(minEpochOrDate.valueOf() / 1000);\n var maxTime = Math.floor(maxEpochOrDate.valueOf() / 1000);\n if (minTime < 0) {\n throw new Error('min_time cannot be negative');\n }\n if (maxTime < 0) {\n throw new Error('max_time cannot be negative');\n }\n if (maxTime > 0 && minTime > maxTime) {\n throw new Error('min_time cannot be greater than max_time');\n }\n this.timebounds = {\n minTime: minTime,\n maxTime: maxTime\n };\n return this;\n }\n\n /**\n * If you want to prepare a transaction which will only be valid within some\n * range of ledgers, you can set a ledgerbounds precondition.\n * Internally this will set the `minLedger` and `maxLedger` preconditions.\n *\n * @param {number} minLedger The minimum ledger this transaction is valid at\n * or after. Cannot be negative. If the value is `0` (the default), the\n * transaction is valid immediately.\n *\n * @param {number} maxLedger The maximum ledger this transaction is valid\n * before. Cannot be negative. If the value is `0`, the transaction is\n * valid indefinitely.\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setLedgerbounds\",\n value: function setLedgerbounds(minLedger, maxLedger) {\n if (this.ledgerbounds !== null) {\n throw new Error('LedgerBounds has been already set - setting ledgerbounds would overwrite it.');\n }\n if (minLedger < 0) {\n throw new Error('min_ledger cannot be negative');\n }\n if (maxLedger < 0) {\n throw new Error('max_ledger cannot be negative');\n }\n if (maxLedger > 0 && minLedger > maxLedger) {\n throw new Error('min_ledger cannot be greater than max_ledger');\n }\n this.ledgerbounds = {\n minLedger: minLedger,\n maxLedger: maxLedger\n };\n return this;\n }\n\n /**\n * If you want to prepare a transaction which will be valid only while the\n * account sequence number is\n *\n * minAccountSequence <= sourceAccountSequence < tx.seqNum\n *\n * Note that after execution the account's sequence number is always raised to\n * `tx.seqNum`. Internally this will set the `minAccountSequence`\n * precondition.\n *\n * @param {string} minAccountSequence The minimum source account sequence\n * number this transaction is valid for. If the value is `0` (the\n * default), the transaction is valid when `sourceAccount's sequence\n * number == tx.seqNum- 1`.\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setMinAccountSequence\",\n value: function setMinAccountSequence(minAccountSequence) {\n if (this.minAccountSequence !== null) {\n throw new Error('min_account_sequence has been already set - setting min_account_sequence would overwrite it.');\n }\n this.minAccountSequence = minAccountSequence;\n return this;\n }\n\n /**\n * For the transaction to be valid, the current ledger time must be at least\n * `minAccountSequenceAge` greater than sourceAccount's `sequenceTime`.\n * Internally this will set the `minAccountSequenceAge` precondition.\n *\n * @param {number} durationInSeconds The minimum amount of time between\n * source account sequence time and the ledger time when this transaction\n * will become valid. If the value is `0`, the transaction is unrestricted\n * by the account sequence age. Cannot be negative.\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setMinAccountSequenceAge\",\n value: function setMinAccountSequenceAge(durationInSeconds) {\n if (typeof durationInSeconds !== 'number') {\n throw new Error('min_account_sequence_age must be a number');\n }\n if (this.minAccountSequenceAge !== null) {\n throw new Error('min_account_sequence_age has been already set - setting min_account_sequence_age would overwrite it.');\n }\n if (durationInSeconds < 0) {\n throw new Error('min_account_sequence_age cannot be negative');\n }\n this.minAccountSequenceAge = durationInSeconds;\n return this;\n }\n\n /**\n * For the transaction to be valid, the current ledger number must be at least\n * `minAccountSequenceLedgerGap` greater than sourceAccount's ledger sequence.\n * Internally this will set the `minAccountSequenceLedgerGap` precondition.\n *\n * @param {number} gap The minimum number of ledgers between source account\n * sequence and the ledger number when this transaction will become valid.\n * If the value is `0`, the transaction is unrestricted by the account\n * sequence ledger. Cannot be negative.\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setMinAccountSequenceLedgerGap\",\n value: function setMinAccountSequenceLedgerGap(gap) {\n if (this.minAccountSequenceLedgerGap !== null) {\n throw new Error('min_account_sequence_ledger_gap has been already set - setting min_account_sequence_ledger_gap would overwrite it.');\n }\n if (gap < 0) {\n throw new Error('min_account_sequence_ledger_gap cannot be negative');\n }\n this.minAccountSequenceLedgerGap = gap;\n return this;\n }\n\n /**\n * For the transaction to be valid, there must be a signature corresponding to\n * every Signer in this array, even if the signature is not otherwise required\n * by the sourceAccount or operations. Internally this will set the\n * `extraSigners` precondition.\n *\n * @param {string[]} extraSigners required extra signers (as {@link StrKey}s)\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setExtraSigners\",\n value: function setExtraSigners(extraSigners) {\n if (!Array.isArray(extraSigners)) {\n throw new Error('extra_signers must be an array of strings.');\n }\n if (this.extraSigners !== null) {\n throw new Error('extra_signers has been already set - setting extra_signers would overwrite it.');\n }\n if (extraSigners.length > 2) {\n throw new Error('extra_signers cannot be longer than 2 elements.');\n }\n this.extraSigners = _toConsumableArray(extraSigners);\n return this;\n }\n\n /**\n * Set network nassphrase for the Transaction that will be built.\n *\n * @param {string} networkPassphrase passphrase of the target Stellar\n * network (e.g. \"Public Global Stellar Network ; September 2015\").\n *\n * @returns {TransactionBuilder}\n */\n }, {\n key: \"setNetworkPassphrase\",\n value: function setNetworkPassphrase(networkPassphrase) {\n this.networkPassphrase = networkPassphrase;\n return this;\n }\n\n /**\n * Sets the transaction's internal Soroban transaction data (resources,\n * footprint, etc.).\n *\n * For non-contract(non-Soroban) transactions, this setting has no effect. In\n * the case of Soroban transactions, this is either an instance of\n * {@link xdr.SorobanTransactionData} or a base64-encoded string of said\n * structure. This is usually obtained from the simulation response based on a\n * transaction with a Soroban operation (e.g.\n * {@link Operation.invokeHostFunction}, providing necessary resource\n * and storage footprint estimations for contract invocation.\n *\n * @param {xdr.SorobanTransactionData | string} sorobanData the\n * {@link xdr.SorobanTransactionData} as a raw xdr object or a base64\n * string to be decoded\n *\n * @returns {TransactionBuilder}\n * @see {SorobanDataBuilder}\n */\n }, {\n key: \"setSorobanData\",\n value: function setSorobanData(sorobanData) {\n this.sorobanData = new _sorobandata_builder.SorobanDataBuilder(sorobanData).build();\n return this;\n }\n\n /**\n * This will build the transaction.\n * It will also increment the source account's sequence number by 1.\n * @returns {Transaction} This method will return the built {@link Transaction}.\n */\n }, {\n key: \"build\",\n value: function build() {\n var sequenceNumber = new _bignumber[\"default\"](this.source.sequenceNumber()).plus(1);\n var fee = new _bignumber[\"default\"](this.baseFee).times(this.operations.length).toNumber();\n var attrs = {\n fee: fee,\n seqNum: _xdr[\"default\"].SequenceNumber.fromString(sequenceNumber.toString()),\n memo: this.memo ? this.memo.toXDRObject() : null\n };\n if (this.timebounds === null || typeof this.timebounds.minTime === 'undefined' || typeof this.timebounds.maxTime === 'undefined') {\n throw new Error('TimeBounds has to be set or you must call setTimeout(TimeoutInfinite).');\n }\n if (isValidDate(this.timebounds.minTime)) {\n this.timebounds.minTime = this.timebounds.minTime.getTime() / 1000;\n }\n if (isValidDate(this.timebounds.maxTime)) {\n this.timebounds.maxTime = this.timebounds.maxTime.getTime() / 1000;\n }\n this.timebounds.minTime = _jsXdr.UnsignedHyper.fromString(this.timebounds.minTime.toString());\n this.timebounds.maxTime = _jsXdr.UnsignedHyper.fromString(this.timebounds.maxTime.toString());\n var timeBounds = new _xdr[\"default\"].TimeBounds(this.timebounds);\n if (this.hasV2Preconditions()) {\n var ledgerBounds = null;\n if (this.ledgerbounds !== null) {\n ledgerBounds = new _xdr[\"default\"].LedgerBounds(this.ledgerbounds);\n }\n var minSeqNum = this.minAccountSequence || '0';\n minSeqNum = _xdr[\"default\"].SequenceNumber.fromString(minSeqNum);\n var minSeqAge = _jsXdr.UnsignedHyper.fromString(this.minAccountSequenceAge !== null ? this.minAccountSequenceAge.toString() : '0');\n var minSeqLedgerGap = this.minAccountSequenceLedgerGap || 0;\n var extraSigners = this.extraSigners !== null ? this.extraSigners.map(_signerkey.SignerKey.decodeAddress) : [];\n attrs.cond = _xdr[\"default\"].Preconditions.precondV2(new _xdr[\"default\"].PreconditionsV2({\n timeBounds: timeBounds,\n ledgerBounds: ledgerBounds,\n minSeqNum: minSeqNum,\n minSeqAge: minSeqAge,\n minSeqLedgerGap: minSeqLedgerGap,\n extraSigners: extraSigners\n }));\n } else {\n attrs.cond = _xdr[\"default\"].Preconditions.precondTime(timeBounds);\n }\n attrs.sourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(this.source.accountId());\n\n // TODO - remove this workaround for TransactionExt ts constructor\n // and use the typescript generated static factory method once fixed\n // https://github.com/stellar/dts-xdr/issues/5\n if (this.sorobanData) {\n // @ts-ignore\n attrs.ext = new _xdr[\"default\"].TransactionExt(1, this.sorobanData);\n } else {\n // @ts-ignore\n attrs.ext = new _xdr[\"default\"].TransactionExt(0, _xdr[\"default\"].Void);\n }\n var xtx = new _xdr[\"default\"].Transaction(attrs);\n xtx.operations(this.operations);\n var txEnvelope = new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTx(new _xdr[\"default\"].TransactionV1Envelope({\n tx: xtx\n }));\n var tx = new _transaction.Transaction(txEnvelope, this.networkPassphrase);\n this.source.incrementSequenceNumber();\n return tx;\n }\n }, {\n key: \"hasV2Preconditions\",\n value: function hasV2Preconditions() {\n return this.ledgerbounds !== null || this.minAccountSequence !== null || this.minAccountSequenceAge !== null || this.minAccountSequenceLedgerGap !== null || this.extraSigners !== null && this.extraSigners.length > 0;\n }\n\n /**\n * Builds a {@link FeeBumpTransaction}, enabling you to resubmit an existing\n * transaction with a higher fee.\n *\n * @param {Keypair|string} feeSource - account paying for the transaction,\n * in the form of either a Keypair (only the public key is used) or\n * an account ID (in G... or M... form, but refer to `withMuxing`)\n * @param {string} baseFee - max fee willing to pay per operation\n * in inner transaction (**in stroops**)\n * @param {Transaction} innerTx - {@link Transaction} to be bumped by\n * the fee bump transaction\n * @param {string} networkPassphrase - passphrase of the target\n * Stellar network (e.g. \"Public Global Stellar Network ; September 2015\",\n * see {@link Networks})\n *\n * @todo Alongside the next major version bump, this type signature can be\n * changed to be less awkward: accept a MuxedAccount as the `feeSource`\n * rather than a keypair or string.\n *\n * @note Your fee-bump amount should be >= 10x the original fee.\n * @see https://developers.stellar.org/docs/glossary/fee-bumps/#replace-by-fee\n *\n * @returns {FeeBumpTransaction}\n */\n }], [{\n key: \"cloneFrom\",\n value: function cloneFrom(tx) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!(tx instanceof _transaction.Transaction)) {\n throw new TypeError(\"expected a 'Transaction', got: \".concat(tx));\n }\n var sequenceNum = (BigInt(tx.sequence) - 1n).toString();\n var source;\n // rebuild the source account based on the strkey\n if (_strkey.StrKey.isValidMed25519PublicKey(tx.source)) {\n source = _muxed_account.MuxedAccount.fromAddress(tx.source, sequenceNum);\n } else if (_strkey.StrKey.isValidEd25519PublicKey(tx.source)) {\n source = new _account.Account(tx.source, sequenceNum);\n } else {\n throw new TypeError(\"unsupported tx source account: \".concat(tx.source));\n }\n\n // the initial fee passed to the builder gets scaled up based on the number\n // of operations at the end, so we have to down-scale first\n var unscaledFee = parseInt(tx.fee, 10) / tx.operations.length;\n var builder = new TransactionBuilder(source, _objectSpread({\n fee: (unscaledFee || BASE_FEE).toString(),\n memo: tx.memo,\n networkPassphrase: tx.networkPassphrase,\n timebounds: tx.timeBounds,\n ledgerbounds: tx.ledgerBounds,\n minAccountSequence: tx.minAccountSequence,\n minAccountSequenceAge: tx.minAccountSequenceAge,\n minAccountSequenceLedgerGap: tx.minAccountSequenceLedgerGap,\n extraSigners: tx.extraSigners\n }, opts));\n tx._tx.operations().forEach(function (op) {\n return builder.addOperation(op);\n });\n return builder;\n }\n }, {\n key: \"buildFeeBumpTransaction\",\n value: function buildFeeBumpTransaction(feeSource, baseFee, innerTx, networkPassphrase) {\n var innerOps = innerTx.operations.length;\n var minBaseFee = new _bignumber[\"default\"](BASE_FEE);\n var innerInclusionFee = new _bignumber[\"default\"](innerTx.fee).div(innerOps);\n var resourceFee = new _bignumber[\"default\"](0);\n\n // Do we need to do special Soroban fee handling? We only want the fee-bump\n // requirement to match the inclusion fee, not the inclusion+resource fee.\n var env = innerTx.toEnvelope();\n switch (env[\"switch\"]().value) {\n case _xdr[\"default\"].EnvelopeType.envelopeTypeTx().value:\n {\n var _sorobanData$resource;\n var sorobanData = env.v1().tx().ext().value();\n resourceFee = new _bignumber[\"default\"]((_sorobanData$resource = sorobanData === null || sorobanData === void 0 ? void 0 : sorobanData.resourceFee()) !== null && _sorobanData$resource !== void 0 ? _sorobanData$resource : 0);\n innerInclusionFee = _bignumber[\"default\"].max(minBaseFee, innerInclusionFee.minus(resourceFee));\n break;\n }\n default:\n break;\n }\n var base = new _bignumber[\"default\"](baseFee);\n\n // The fee rate for fee bump is at least the fee rate of the inner transaction\n if (base.lt(innerInclusionFee)) {\n throw new Error(\"Invalid baseFee, it should be at least \".concat(innerInclusionFee, \" stroops.\"));\n }\n\n // The fee rate is at least the minimum fee\n if (base.lt(minBaseFee)) {\n throw new Error(\"Invalid baseFee, it should be at least \".concat(minBaseFee, \" stroops.\"));\n }\n var innerTxEnvelope = innerTx.toEnvelope();\n if (innerTxEnvelope[\"switch\"]() === _xdr[\"default\"].EnvelopeType.envelopeTypeTxV0()) {\n var v0Tx = innerTxEnvelope.v0().tx();\n var v1Tx = new _xdr[\"default\"].Transaction({\n sourceAccount: new _xdr[\"default\"].MuxedAccount.keyTypeEd25519(v0Tx.sourceAccountEd25519()),\n fee: v0Tx.fee(),\n seqNum: v0Tx.seqNum(),\n cond: _xdr[\"default\"].Preconditions.precondTime(v0Tx.timeBounds()),\n memo: v0Tx.memo(),\n operations: v0Tx.operations(),\n ext: new _xdr[\"default\"].TransactionExt(0)\n });\n innerTxEnvelope = new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTx(new _xdr[\"default\"].TransactionV1Envelope({\n tx: v1Tx,\n signatures: innerTxEnvelope.v0().signatures()\n }));\n }\n var feeSourceAccount;\n if (typeof feeSource === 'string') {\n feeSourceAccount = (0, _decode_encode_muxed_account.decodeAddressToMuxedAccount)(feeSource);\n } else {\n feeSourceAccount = feeSource.xdrMuxedAccount();\n }\n var tx = new _xdr[\"default\"].FeeBumpTransaction({\n feeSource: feeSourceAccount,\n fee: _xdr[\"default\"].Int64.fromString(base.times(innerOps + 1).plus(resourceFee).toString()),\n innerTx: _xdr[\"default\"].FeeBumpTransactionInnerTx.envelopeTypeTx(innerTxEnvelope.v1()),\n ext: new _xdr[\"default\"].FeeBumpTransactionExt(0)\n });\n var feeBumpTxEnvelope = new _xdr[\"default\"].FeeBumpTransactionEnvelope({\n tx: tx,\n signatures: []\n });\n var envelope = new _xdr[\"default\"].TransactionEnvelope.envelopeTypeTxFeeBump(feeBumpTxEnvelope);\n return new _fee_bump_transaction.FeeBumpTransaction(envelope, networkPassphrase);\n }\n\n /**\n * Build a {@link Transaction} or {@link FeeBumpTransaction} from an\n * xdr.TransactionEnvelope.\n *\n * @param {string|xdr.TransactionEnvelope} envelope - The transaction envelope\n * object or base64 encoded string.\n * @param {string} networkPassphrase - The network passphrase of the target\n * Stellar network (e.g. \"Public Global Stellar Network ; September\n * 2015\"), see {@link Networks}.\n *\n * @returns {Transaction|FeeBumpTransaction}\n */\n }, {\n key: \"fromXDR\",\n value: function fromXDR(envelope, networkPassphrase) {\n if (typeof envelope === 'string') {\n envelope = _xdr[\"default\"].TransactionEnvelope.fromXDR(envelope, 'base64');\n }\n if (envelope[\"switch\"]() === _xdr[\"default\"].EnvelopeType.envelopeTypeTxFeeBump()) {\n return new _fee_bump_transaction.FeeBumpTransaction(envelope, networkPassphrase);\n }\n return new _transaction.Transaction(envelope, networkPassphrase);\n }\n }]);\n}();\n/**\n * Checks whether a provided object is a valid Date.\n * @argument {Date} d date object\n * @returns {boolean}\n */\nfunction isValidDate(d) {\n // isnan is okay here because it correctly checks for invalid date objects\n // eslint-disable-next-line no-restricted-globals\n return d instanceof Date && !isNaN(d);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Networks = void 0;\n/**\n * Contains passphrases for common networks:\n * * `Networks.PUBLIC`: `Public Global Stellar Network ; September 2015`\n * * `Networks.TESTNET`: `Test SDF Network ; September 2015`\n * * `Networks.FUTURENET`: `Test SDF Future Network ; October 2022`\n * * `Networks.STANDALONE`: `Standalone Network ; February 2017`\n *\n * @type {{PUBLIC: string, TESTNET: string, FUTURENET: string, STANDALONE: string }}\n */\nvar Networks = exports.Networks = {\n PUBLIC: 'Public Global Stellar Network ; September 2015',\n TESTNET: 'Test SDF Network ; September 2015',\n FUTURENET: 'Test SDF Future Network ; October 2022',\n SANDBOX: 'Local Sandbox Stellar Network ; September 2022',\n STANDALONE: 'Standalone Network ; February 2017'\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Soroban = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/* Helper class to assist with formatting and parsing token amounts. */\nvar Soroban = exports.Soroban = /*#__PURE__*/function () {\n function Soroban() {\n _classCallCheck(this, Soroban);\n }\n return _createClass(Soroban, null, [{\n key: \"formatTokenAmount\",\n value:\n /**\n * Given a whole number smart contract amount of a token and an amount of\n * decimal places (if the token has any), it returns a \"display\" value.\n *\n * All arithmetic inside the contract is performed on integers to avoid\n * potential precision and consistency issues of floating-point.\n *\n * @param {string} amount the token amount you want to display\n * @param {number} decimals specify how many decimal places a token has\n *\n * @returns {string} the display value\n * @throws {TypeError} if the given amount has a decimal point already\n * @example\n * formatTokenAmount(\"123000\", 4) === \"12.3\";\n * formatTokenAmount(\"123000\", 3) === \"123.0\";\n * formatTokenAmount(\"123\", 3) === \"0.123\";\n */\n function formatTokenAmount(amount, decimals) {\n if (amount.includes('.')) {\n throw new TypeError('No decimals are allowed');\n }\n var formatted = amount;\n if (decimals > 0) {\n if (decimals > formatted.length) {\n formatted = ['0', formatted.toString().padStart(decimals, '0')].join('.');\n } else {\n formatted = [formatted.slice(0, -decimals), formatted.slice(-decimals)].join('.');\n }\n }\n return formatted.replace(/(\\.\\d*?)0+$/, '$1') // strip trailing zeroes\n .replace(/\\.$/, '.0') // but keep at least one\n .replace(/^\\./, '0.'); // and a leading one\n }\n\n /**\n * Parse a token amount to use it on smart contract\n *\n * This function takes the display value and its decimals (if the token has\n * any) and returns a string that'll be used within the smart contract.\n *\n * @param {string} value the token amount you want to use it on smart\n * contract which you've been displaying in a UI\n * @param {number} decimals the number of decimal places expected in the\n * display value (different than the \"actual\" number, because suffix zeroes\n * might not be present)\n *\n * @returns {string} the whole number token amount represented by the display\n * value with the decimal places shifted over\n *\n * @example\n * const displayValueAmount = \"123.4560\"\n * const parsedAmtForSmartContract = parseTokenAmount(displayValueAmount, 5);\n * parsedAmtForSmartContract === \"12345600\"\n */\n }, {\n key: \"parseTokenAmount\",\n value: function parseTokenAmount(value, decimals) {\n var _fraction$padEnd;\n var _value$split$slice = value.split('.').slice(),\n _value$split$slice2 = _toArray(_value$split$slice),\n whole = _value$split$slice2[0],\n fraction = _value$split$slice2[1],\n rest = _arrayLikeToArray(_value$split$slice2).slice(2);\n if (rest.length) {\n throw new Error(\"Invalid decimal value: \".concat(value));\n }\n var shifted = BigInt(whole + ((_fraction$padEnd = fraction === null || fraction === void 0 ? void 0 : fraction.padEnd(decimals, '0')) !== null && _fraction$padEnd !== void 0 ? _fraction$padEnd : '0'.repeat(decimals)));\n return shifted.toString();\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Contract = void 0;\nvar _address = require(\"./address\");\nvar _operation = require(\"./operation\");\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _strkey = require(\"./strkey\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Create a new Contract object.\n *\n * `Contract` represents a single contract in the Stellar network, embodying the\n * interface of the contract. See\n * [Contracts](https://soroban.stellar.org/docs/learn/interacting-with-contracts)\n * for more information about how contracts work in Stellar.\n *\n * @constructor\n *\n * @param {string} contractId - ID of the contract (ex.\n * `CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE`).\n */\nvar Contract = exports.Contract = /*#__PURE__*/function () {\n function Contract(contractId) {\n _classCallCheck(this, Contract);\n try {\n // First, try it as a strkey\n this._id = _strkey.StrKey.decodeContract(contractId);\n } catch (_) {\n throw new Error(\"Invalid contract ID: \".concat(contractId));\n }\n }\n\n /**\n * Returns Stellar contract ID as a strkey, ex.\n * `CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE`.\n * @returns {string}\n */\n return _createClass(Contract, [{\n key: \"contractId\",\n value: function contractId() {\n return _strkey.StrKey.encodeContract(this._id);\n }\n\n /** @returns {string} the ID as a strkey (C...) */\n }, {\n key: \"toString\",\n value: function toString() {\n return this.contractId();\n }\n\n /** @returns {Address} the wrapped address of this contract */\n }, {\n key: \"address\",\n value: function address() {\n return _address.Address.contract(this._id);\n }\n\n /**\n * Returns an operation that will invoke this contract call.\n *\n * @param {string} method name of the method to call\n * @param {...xdr.ScVal} params arguments to pass to the function call\n *\n * @returns {xdr.Operation} an InvokeHostFunctionOp operation to call the\n * contract with the given method and parameters\n *\n * @see Operation.invokeHostFunction\n * @see Operation.invokeContractFunction\n * @see Operation.createCustomContract\n * @see Operation.createStellarAssetContract\n * @see Operation.uploadContractWasm\n */\n }, {\n key: \"call\",\n value: function call(method) {\n for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n params[_key - 1] = arguments[_key];\n }\n return _operation.Operation.invokeContractFunction({\n contract: this.address().toString(),\n \"function\": method,\n args: params\n });\n }\n\n /**\n * Returns the read-only footprint entries necessary for any invocations to\n * this contract, for convenience when manually adding it to your\n * transaction's overall footprint or doing bump/restore operations.\n *\n * @returns {xdr.LedgerKey} the ledger key for the deployed contract instance\n */\n }, {\n key: \"getFootprint\",\n value: function getFootprint() {\n return _xdr[\"default\"].LedgerKey.contractData(new _xdr[\"default\"].LedgerKeyContractData({\n contract: this.address().toScAddress(),\n key: _xdr[\"default\"].ScVal.scvLedgerKeyContractInstance(),\n durability: _xdr[\"default\"].ContractDataDurability.persistent()\n }));\n }\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Uint128 = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar Uint128 = exports.Uint128 = /*#__PURE__*/function (_LargeInt) {\n /**\n * Construct an unsigned 128-bit integer that can be XDR-encoded.\n *\n * @param {Array} args - one or more slices to encode\n * in big-endian format (i.e. earlier elements are higher bits)\n */\n function Uint128() {\n _classCallCheck(this, Uint128);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _callSuper(this, Uint128, [args]);\n }\n _inherits(Uint128, _LargeInt);\n return _createClass(Uint128, [{\n key: \"unsigned\",\n get: function get() {\n return true;\n }\n }, {\n key: \"size\",\n get: function get() {\n return 128;\n }\n }]);\n}(_jsXdr.LargeInt);\nUint128.defineIntBoundaries();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Uint256 = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar Uint256 = exports.Uint256 = /*#__PURE__*/function (_LargeInt) {\n /**\n * Construct an unsigned 256-bit integer that can be XDR-encoded.\n *\n * @param {Array} args - one or more slices to encode\n * in big-endian format (i.e. earlier elements are higher bits)\n */\n function Uint256() {\n _classCallCheck(this, Uint256);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _callSuper(this, Uint256, [args]);\n }\n _inherits(Uint256, _LargeInt);\n return _createClass(Uint256, [{\n key: \"unsigned\",\n get: function get() {\n return true;\n }\n }, {\n key: \"size\",\n get: function get() {\n return 256;\n }\n }]);\n}(_jsXdr.LargeInt);\nUint256.defineIntBoundaries();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Int128 = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar Int128 = exports.Int128 = /*#__PURE__*/function (_LargeInt) {\n /**\n * Construct a signed 128-bit integer that can be XDR-encoded.\n *\n * @param {Array} args - one or more slices to encode\n * in big-endian format (i.e. earlier elements are higher bits)\n */\n function Int128() {\n _classCallCheck(this, Int128);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _callSuper(this, Int128, [args]);\n }\n _inherits(Int128, _LargeInt);\n return _createClass(Int128, [{\n key: \"unsigned\",\n get: function get() {\n return false;\n }\n }, {\n key: \"size\",\n get: function get() {\n return 128;\n }\n }]);\n}(_jsXdr.LargeInt);\nInt128.defineIntBoundaries();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Int256 = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar Int256 = exports.Int256 = /*#__PURE__*/function (_LargeInt) {\n /**\n * Construct a signed 256-bit integer that can be XDR-encoded.\n *\n * @param {Array} args - one or more slices to encode\n * in big-endian format (i.e. earlier elements are higher bits)\n */\n function Int256() {\n _classCallCheck(this, Int256);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _callSuper(this, Int256, [args]);\n }\n _inherits(Int256, _LargeInt);\n return _createClass(Int256, [{\n key: \"unsigned\",\n get: function get() {\n return false;\n }\n }, {\n key: \"size\",\n get: function get() {\n return 256;\n }\n }]);\n}(_jsXdr.LargeInt);\nInt256.defineIntBoundaries();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.XdrLargeInt = void 0;\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _uint = require(\"./uint128\");\nvar _uint2 = require(\"./uint256\");\nvar _int = require(\"./int128\");\nvar _int2 = require(\"./int256\");\nvar _xdr = _interopRequireDefault(require(\"../xdr\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); } /* eslint no-bitwise: [\"error\", {\"allow\": [\">>\"]}] */\n/**\n * A wrapper class to represent large XDR-encodable integers.\n *\n * This operates at a lower level than {@link ScInt} by forcing you to specify\n * the type / width / size in bits of the integer you're targeting, regardless\n * of the input value(s) you provide.\n *\n * @param {string} type - specifies a data type to use to represent the, one\n * of: 'i64', 'u64', 'i128', 'u128', 'i256', and 'u256' (see\n * {@link XdrLargeInt.isType})\n * @param {number|bigint|string|Array} values a list of\n * integer-like values interpreted in big-endian order\n */\nvar XdrLargeInt = exports.XdrLargeInt = /*#__PURE__*/function () {\n function XdrLargeInt(type, values) {\n _classCallCheck(this, XdrLargeInt);\n /** @type {xdr.LargeInt} */\n _defineProperty(this, \"int\", void 0);\n // child class of a jsXdr.LargeInt\n /** @type {string} */\n _defineProperty(this, \"type\", void 0);\n if (!(values instanceof Array)) {\n values = [values];\n }\n\n // normalize values to one type\n values = values.map(function (i) {\n // micro-optimization to no-op on the likeliest input value:\n if (typeof i === 'bigint') {\n return i;\n }\n if (typeof i.toBigInt === 'function') {\n return i.toBigInt();\n }\n return BigInt(i);\n });\n switch (type) {\n case 'i64':\n this[\"int\"] = new _jsXdr.Hyper(values);\n break;\n case 'i128':\n this[\"int\"] = new _int.Int128(values);\n break;\n case 'i256':\n this[\"int\"] = new _int2.Int256(values);\n break;\n case 'u64':\n case 'timepoint':\n case 'duration':\n this[\"int\"] = new _jsXdr.UnsignedHyper(values);\n break;\n case 'u128':\n this[\"int\"] = new _uint.Uint128(values);\n break;\n case 'u256':\n this[\"int\"] = new _uint2.Uint256(values);\n break;\n default:\n throw TypeError(\"invalid type: \".concat(type));\n }\n this.type = type;\n }\n\n /**\n * @returns {number}\n * @throws {RangeError} if the value can't fit into a Number\n */\n return _createClass(XdrLargeInt, [{\n key: \"toNumber\",\n value: function toNumber() {\n var bi = this[\"int\"].toBigInt();\n if (bi > Number.MAX_SAFE_INTEGER || bi < Number.MIN_SAFE_INTEGER) {\n throw RangeError(\"value \".concat(bi, \" not in range for Number \") + \"[\".concat(Number.MAX_SAFE_INTEGER, \", \").concat(Number.MIN_SAFE_INTEGER, \"]\"));\n }\n return Number(bi);\n }\n\n /** @returns {bigint} */\n }, {\n key: \"toBigInt\",\n value: function toBigInt() {\n return this[\"int\"].toBigInt();\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = I64` */\n }, {\n key: \"toI64\",\n value: function toI64() {\n this._sizeCheck(64);\n var v = this.toBigInt();\n if (BigInt.asIntN(64, v) !== v) {\n throw RangeError(\"value too large for i64: \".concat(v));\n }\n return _xdr[\"default\"].ScVal.scvI64(new _xdr[\"default\"].Int64(v));\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = U64` */\n }, {\n key: \"toU64\",\n value: function toU64() {\n this._sizeCheck(64);\n return _xdr[\"default\"].ScVal.scvU64(new _xdr[\"default\"].Uint64(BigInt.asUintN(64, this.toBigInt())) // reiterpret as unsigned\n );\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = Timepoint` */\n }, {\n key: \"toTimepoint\",\n value: function toTimepoint() {\n this._sizeCheck(64);\n return _xdr[\"default\"].ScVal.scvTimepoint(new _xdr[\"default\"].Uint64(BigInt.asUintN(64, this.toBigInt())) // reiterpret as unsigned\n );\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = Duration` */\n }, {\n key: \"toDuration\",\n value: function toDuration() {\n this._sizeCheck(64);\n return _xdr[\"default\"].ScVal.scvDuration(new _xdr[\"default\"].Uint64(BigInt.asUintN(64, this.toBigInt())) // reiterpret as unsigned\n );\n }\n\n /**\n * @returns {xdr.ScVal} the integer encoded with `ScValType = I128`\n * @throws {RangeError} if the value cannot fit in 128 bits\n */\n }, {\n key: \"toI128\",\n value: function toI128() {\n this._sizeCheck(128);\n var v = this[\"int\"].toBigInt();\n var hi64 = BigInt.asIntN(64, v >> 64n); // encode top 64 w/ sign bit\n var lo64 = BigInt.asUintN(64, v); // grab btm 64, encode sign\n\n return _xdr[\"default\"].ScVal.scvI128(new _xdr[\"default\"].Int128Parts({\n hi: new _xdr[\"default\"].Int64(hi64),\n lo: new _xdr[\"default\"].Uint64(lo64)\n }));\n }\n\n /**\n * @returns {xdr.ScVal} the integer encoded with `ScValType = U128`\n * @throws {RangeError} if the value cannot fit in 128 bits\n */\n }, {\n key: \"toU128\",\n value: function toU128() {\n this._sizeCheck(128);\n var v = this[\"int\"].toBigInt();\n return _xdr[\"default\"].ScVal.scvU128(new _xdr[\"default\"].UInt128Parts({\n hi: new _xdr[\"default\"].Uint64(BigInt.asUintN(64, v >> 64n)),\n lo: new _xdr[\"default\"].Uint64(BigInt.asUintN(64, v))\n }));\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = I256` */\n }, {\n key: \"toI256\",\n value: function toI256() {\n var v = this[\"int\"].toBigInt();\n var hiHi64 = BigInt.asIntN(64, v >> 192n); // keep sign bit\n var hiLo64 = BigInt.asUintN(64, v >> 128n);\n var loHi64 = BigInt.asUintN(64, v >> 64n);\n var loLo64 = BigInt.asUintN(64, v);\n return _xdr[\"default\"].ScVal.scvI256(new _xdr[\"default\"].Int256Parts({\n hiHi: new _xdr[\"default\"].Int64(hiHi64),\n hiLo: new _xdr[\"default\"].Uint64(hiLo64),\n loHi: new _xdr[\"default\"].Uint64(loHi64),\n loLo: new _xdr[\"default\"].Uint64(loLo64)\n }));\n }\n\n /** @returns {xdr.ScVal} the integer encoded with `ScValType = U256` */\n }, {\n key: \"toU256\",\n value: function toU256() {\n var v = this[\"int\"].toBigInt();\n var hiHi64 = BigInt.asUintN(64, v >> 192n); // encode sign bit\n var hiLo64 = BigInt.asUintN(64, v >> 128n);\n var loHi64 = BigInt.asUintN(64, v >> 64n);\n var loLo64 = BigInt.asUintN(64, v);\n return _xdr[\"default\"].ScVal.scvU256(new _xdr[\"default\"].UInt256Parts({\n hiHi: new _xdr[\"default\"].Uint64(hiHi64),\n hiLo: new _xdr[\"default\"].Uint64(hiLo64),\n loHi: new _xdr[\"default\"].Uint64(loHi64),\n loLo: new _xdr[\"default\"].Uint64(loLo64)\n }));\n }\n\n /** @returns {xdr.ScVal} the smallest interpretation of the stored value */\n }, {\n key: \"toScVal\",\n value: function toScVal() {\n switch (this.type) {\n case 'i64':\n return this.toI64();\n case 'i128':\n return this.toI128();\n case 'i256':\n return this.toI256();\n case 'u64':\n return this.toU64();\n case 'u128':\n return this.toU128();\n case 'u256':\n return this.toU256();\n case 'timepoint':\n return this.toTimepoint();\n case 'duration':\n return this.toDuration();\n default:\n throw TypeError(\"invalid type: \".concat(this.type));\n }\n }\n }, {\n key: \"valueOf\",\n value: function valueOf() {\n return this[\"int\"].valueOf();\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return this[\"int\"].toString();\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n value: this.toBigInt().toString(),\n type: this.type\n };\n }\n }, {\n key: \"_sizeCheck\",\n value: function _sizeCheck(bits) {\n if (this[\"int\"].size > bits) {\n throw RangeError(\"value too large for \".concat(bits, \" bits (\").concat(this.type, \")\"));\n }\n }\n }], [{\n key: \"isType\",\n value: function isType(type) {\n switch (type) {\n case 'i64':\n case 'i128':\n case 'i256':\n case 'u64':\n case 'u128':\n case 'u256':\n case 'timepoint':\n case 'duration':\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Convert the raw `ScValType` string (e.g. 'scvI128', generated by the XDR)\n * to a type description for {@link XdrLargeInt} construction (e.g. 'i128')\n *\n * @param {string} scvType the `xdr.ScValType` as a string\n * @returns {string} a suitable equivalent type to construct this object\n */\n }, {\n key: \"getType\",\n value: function getType(scvType) {\n return scvType.slice(3).toLowerCase();\n }\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScInt = void 0;\nvar _xdr_large_int = require(\"./xdr_large_int\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\n/**\n * Provides an easier way to manipulate large numbers for Stellar operations.\n *\n * You can instantiate this \"**s**mart **c**ontract integer\" value either from\n * bigints, strings, or numbers (whole numbers, or this will throw).\n *\n * If you need to create a native BigInt from a list of integer \"parts\" (for\n * example, you have a series of encoded 32-bit integers that represent a larger\n * value), you can use the lower level abstraction {@link XdrLargeInt}. For\n * example, you could do `new XdrLargeInt('u128', bytes...).toBigInt()`.\n *\n * @example\n * import { xdr, ScInt, scValToBigInt } from \"@stellar/stellar-base\";\n *\n * // You have an ScVal from a contract and want to parse it into JS native.\n * const value = xdr.ScVal.fromXDR(someXdr, \"base64\");\n * const bigi = scValToBigInt(value); // grab it as a BigInt\n * let sci = new ScInt(bigi);\n *\n * sci.toNumber(); // gives native JS type (w/ size check)\n * sci.toBigInt(); // gives the native BigInt value\n * sci.toU64(); // gives ScValType-specific XDR constructs (with size checks)\n *\n * // You have a number and want to shove it into a contract.\n * sci = ScInt(0xdeadcafebabe);\n * sci.toBigInt() // returns 244838016400062n\n * sci.toNumber() // throws: too large\n *\n * // Pass any to e.g. a Contract.call(), conversion happens automatically\n * // regardless of the initial type.\n * const scValU128 = sci.toU128();\n * const scValI256 = sci.toI256();\n * const scValU64 = sci.toU64();\n *\n * // Lots of ways to initialize:\n * ScInt(\"123456789123456789\")\n * ScInt(123456789123456789n);\n * ScInt(1n << 140n);\n * ScInt(-42);\n * ScInt(scValToBigInt(scValU128)); // from above\n *\n * // If you know the type ahead of time (accessing `.raw` is faster than\n * // conversions), you can specify the type directly (otherwise, it's\n * // interpreted from the numbers you pass in):\n * const i = ScInt(123456789n, { type: \"u256\" });\n *\n * // For example, you can use the underlying `sdk.U256` and convert it to an\n * // `xdr.ScVal` directly like so:\n * const scv = new xdr.ScVal.scvU256(i.raw);\n *\n * // Or reinterpret it as a different type (size permitting):\n * const scv = i.toI64();\n *\n * @param {number|bigint|string} value - a single, integer-like value which will\n * be interpreted in the smallest appropriate XDR type supported by Stellar\n * (64, 128, or 256 bit integer values). signed values are supported, though\n * they are sanity-checked against `opts.type`. if you need 32-bit values,\n * you can construct them directly without needing this wrapper, e.g.\n * `xdr.ScVal.scvU32(1234)`.\n *\n * @param {object} [opts] - an optional object controlling optional parameters\n * @param {string} [opts.type] - force a specific data type. the type choices\n * are: 'i64', 'u64', 'i128', 'u128', 'i256', and 'u256' (default: the\n * smallest one that fits the `value`)\n *\n * @throws {RangeError} if the `value` is invalid (e.g. floating point), too\n * large (i.e. exceeds a 256-bit value), or doesn't fit in the `opts.type`\n * @throws {TypeError} on missing parameters, or if the \"signedness\" of `opts`\n * doesn't match input `value`, e.g. passing `{type: 'u64'}` yet passing -1n\n * @throws {SyntaxError} if a string `value` can't be parsed as a big integer\n */\nvar ScInt = exports.ScInt = /*#__PURE__*/function (_XdrLargeInt) {\n function ScInt(value, opts) {\n var _opts$type;\n _classCallCheck(this, ScInt);\n var signed = value < 0;\n var type = (_opts$type = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type !== void 0 ? _opts$type : '';\n if (type.startsWith('u') && signed) {\n throw TypeError(\"specified type \".concat(opts.type, \" yet negative (\").concat(value, \")\"));\n }\n\n // If unspecified, we make a best guess at the type based on the bit length\n // of the value, treating 64 as a minimum and 256 as a maximum.\n if (type === '') {\n type = signed ? 'i' : 'u';\n var bitlen = nearestBigIntSize(value);\n switch (bitlen) {\n case 64:\n case 128:\n case 256:\n type += bitlen.toString();\n break;\n default:\n throw RangeError(\"expected 64/128/256 bits for input (\".concat(value, \"), got \").concat(bitlen));\n }\n }\n return _callSuper(this, ScInt, [type, value]);\n }\n _inherits(ScInt, _XdrLargeInt);\n return _createClass(ScInt);\n}(_xdr_large_int.XdrLargeInt);\nfunction nearestBigIntSize(bigI) {\n var _find;\n // Note: Even though BigInt.toString(2) includes the negative sign for\n // negative values (???), the following is still accurate, because the\n // negative sign would be represented by a sign bit.\n var bitlen = bigI.toString(2).length;\n return (_find = [64, 128, 256].find(function (len) {\n return bitlen <= len;\n })) !== null && _find !== void 0 ? _find : bitlen;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Int128\", {\n enumerable: true,\n get: function get() {\n return _int.Int128;\n }\n});\nObject.defineProperty(exports, \"Int256\", {\n enumerable: true,\n get: function get() {\n return _int2.Int256;\n }\n});\nObject.defineProperty(exports, \"ScInt\", {\n enumerable: true,\n get: function get() {\n return _sc_int.ScInt;\n }\n});\nObject.defineProperty(exports, \"Uint128\", {\n enumerable: true,\n get: function get() {\n return _uint.Uint128;\n }\n});\nObject.defineProperty(exports, \"Uint256\", {\n enumerable: true,\n get: function get() {\n return _uint2.Uint256;\n }\n});\nObject.defineProperty(exports, \"XdrLargeInt\", {\n enumerable: true,\n get: function get() {\n return _xdr_large_int.XdrLargeInt;\n }\n});\nexports.scValToBigInt = scValToBigInt;\nvar _xdr_large_int = require(\"./xdr_large_int\");\nvar _uint = require(\"./uint128\");\nvar _uint2 = require(\"./uint256\");\nvar _int = require(\"./int128\");\nvar _int2 = require(\"./int256\");\nvar _sc_int = require(\"./sc_int\");\n/**\n * Transforms an opaque {@link xdr.ScVal} into a native bigint, if possible.\n *\n * If you then want to use this in the abstractions provided by this module,\n * you can pass it to the constructor of {@link XdrLargeInt}.\n *\n * @example\n * let scv = contract.call(\"add\", x, y); // assume it returns an xdr.ScVal\n * let bigi = scValToBigInt(scv);\n *\n * new ScInt(bigi); // if you don't care about types, and\n * new XdrLargeInt('i128', bigi); // if you do\n *\n * @param {xdr.ScVal} scv - the raw XDR value to parse into an integer\n * @returns {bigint} the native value of this input value\n *\n * @throws {TypeError} if the `scv` input value doesn't represent an integer\n */\nfunction scValToBigInt(scv) {\n var scIntType = _xdr_large_int.XdrLargeInt.getType(scv[\"switch\"]().name);\n switch (scv[\"switch\"]().name) {\n case 'scvU32':\n case 'scvI32':\n return BigInt(scv.value());\n case 'scvU64':\n case 'scvI64':\n case 'scvTimepoint':\n case 'scvDuration':\n return new _xdr_large_int.XdrLargeInt(scIntType, scv.value()).toBigInt();\n case 'scvU128':\n case 'scvI128':\n return new _xdr_large_int.XdrLargeInt(scIntType, [scv.value().lo(), scv.value().hi()]).toBigInt();\n case 'scvU256':\n case 'scvI256':\n return new _xdr_large_int.XdrLargeInt(scIntType, [scv.value().loLo(), scv.value().loHi(), scv.value().hiLo(), scv.value().hiHi()]).toBigInt();\n default:\n throw TypeError(\"expected integer type, got \".concat(scv[\"switch\"]()));\n }\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.nativeToScVal = nativeToScVal;\nexports.scValToNative = scValToNative;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _keypair = require(\"./keypair\");\nvar _address = require(\"./address\");\nvar _contract = require(\"./contract\");\nvar _index = require(\"./numbers/index\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/**\n * Attempts to convert native types into smart contract values\n * ({@link xdr.ScVal}).\n *\n * Provides conversions from smart contract XDR values ({@link xdr.ScVal}) to\n * native JavaScript types.\n *\n * The conversions are as follows:\n *\n * - xdr.ScVal -> passthrough\n * - null/undefined -> scvVoid\n * - string -> scvString (a copy is made)\n * - UintArray8 -> scvBytes (a copy is made)\n * - boolean -> scvBool\n *\n * - number/bigint -> the smallest possible XDR integer type that will fit the\n * input value (if you want a specific type, use {@link ScInt})\n *\n * - {@link Address} or {@link Contract} -> scvAddress (for contracts and\n * public keys)\n *\n * - Array -> scvVec after attempting to convert each item of type `T` to an\n * xdr.ScVal (recursively). note that all values must be the same type!\n *\n * - object -> scvMap after attempting to convert each key and value to an\n * xdr.ScVal (recursively). note that there is no restriction on types\n * matching anywhere (unlike arrays)\n *\n * When passing an integer-like native value, you can also optionally specify a\n * type which will force a particular interpretation of that value.\n *\n * Note that not all type specifications are compatible with all `ScVal`s, e.g.\n * `toScVal(\"a string\", {type: \"i256\"})` will throw.\n *\n * @param {any} val - a native (or convertible) input value to wrap\n * @param {object} [opts] - an optional set of hints around the type of\n * conversion you'd like to see\n * @param {string} [opts.type] - there is different behavior for different input\n * types for `val`:\n *\n * - when `val` is an integer-like type (i.e. number|bigint), this will be\n * forwarded to {@link ScInt} or forced to be u32/i32.\n *\n * - when `val` is an array type, this is forwarded to the recursion\n *\n * - when `val` is an object type (key-value entries), this should be an\n * object in which each key has a pair of types (to represent forced types\n * for the key and the value), where `null` (or a missing entry) indicates\n * the default interpretation(s) (refer to the examples, below)\n *\n * - when `val` is a string type, this can be 'string' or 'symbol' to force\n * a particular interpretation of `val`.\n *\n * - when `val` is a bytes-like type, this can be 'string', 'symbol', or\n * 'bytes' to force a particular interpretation\n *\n * As a simple example, `nativeToScVal(\"hello\", {type: 'symbol'})` will\n * return an `scvSymbol`, whereas without the type it would have been an\n * `scvString`.\n *\n * @returns {xdr.ScVal} a wrapped, smart, XDR version of the input value\n * @throws {TypeError} if...\n * - there are arrays with more than one type in them\n * - there are values that do not have a sensible conversion (e.g. random XDR\n * types, custom classes)\n * - the type of the input object (or some inner value of said object) cannot\n * be determined (via `typeof`)\n * - the type you specified (via `opts.type`) is incompatible with the value\n * you passed in (`val`), e.g. `nativeToScVal(\"a string\", { type: 'i128' })`,\n * though this does not apply for types that ignore `opts` (e.g. addresses).\n * @see scValToNative\n *\n * @example\n * nativeToScVal(1000); // gives ScValType === scvU64\n * nativeToScVal(1000n); // gives ScValType === scvU64\n * nativeToScVal(1n << 100n); // gives ScValType === scvU128\n * nativeToScVal(1000, { type: 'u32' }); // gives ScValType === scvU32\n * nativeToScVal(1000, { type: 'i125' }); // gives ScValType === scvI256\n * nativeToScVal(\"a string\"); // gives ScValType === scvString\n * nativeToScVal(\"a string\", { type: 'symbol' }); // gives scvSymbol\n * nativeToScVal(new Uint8Array(5)); // scvBytes\n * nativeToScVal(new Uint8Array(5), { type: 'symbol' }); // scvSymbol\n * nativeToScVal(null); // scvVoid\n * nativeToScVal(true); // scvBool\n * nativeToScVal([1, 2, 3]); // gives scvVec with each element as scvU64\n * nativeToScVal([1, 2, 3], { type: 'i128' }); // scvVec\n * nativeToScVal([1, '2'], { type: ['i128', 'symbol'] }); // scvVec with diff types\n * nativeToScVal([1, '2', 3], { type: ['i128', 'symbol'] });\n * // scvVec with diff types, using the default when omitted\n * nativeToScVal({ 'hello': 1, 'world': [ true, false ] }, {\n * type: {\n * 'hello': [ 'symbol', 'i128' ],\n * }\n * })\n * // gives scvMap with entries: [\n * // [ scvSymbol, scvI128 ],\n * // [ scvString, scvArray ]\n * // ]\n *\n * @example\n * import {\n * nativeToScVal,\n * scValToNative,\n * ScInt,\n * xdr\n * } from '@stellar/stellar-base';\n *\n * let gigaMap = {\n * bool: true,\n * void: null,\n * u32: xdr.ScVal.scvU32(1),\n * i32: xdr.ScVal.scvI32(1),\n * u64: 1n,\n * i64: -1n,\n * u128: new ScInt(1).toU128(),\n * i128: new ScInt(1).toI128(),\n * u256: new ScInt(1).toU256(),\n * i256: new ScInt(1).toI256(),\n * map: {\n * arbitrary: 1n,\n * nested: 'values',\n * etc: false\n * },\n * vec: ['same', 'type', 'list'],\n * vec: ['diff', 1, 'type', 2, 'list'],\n * };\n *\n * // then, simply:\n * let scv = nativeToScVal(gigaMap); // scv.switch() == xdr.ScValType.scvMap()\n *\n * // then...\n * someContract.call(\"method\", scv);\n *\n * // Similarly, the inverse should work:\n * scValToNative(scv) == gigaMap; // true\n */\nfunction nativeToScVal(val) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n switch (_typeof(val)) {\n case 'object':\n {\n var _val$constructor$name, _val$constructor;\n if (val === null) {\n return _xdr[\"default\"].ScVal.scvVoid();\n }\n if (val instanceof _xdr[\"default\"].ScVal) {\n return val; // should we copy?\n }\n if (val instanceof _address.Address) {\n return val.toScVal();\n }\n if (val instanceof _keypair.Keypair) {\n return nativeToScVal(val.publicKey(), {\n type: 'address'\n });\n }\n if (val instanceof _contract.Contract) {\n return val.address().toScVal();\n }\n if (val instanceof Uint8Array || Buffer.isBuffer(val)) {\n var _opts$type;\n var copy = Uint8Array.from(val);\n switch ((_opts$type = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type !== void 0 ? _opts$type : 'bytes') {\n case 'bytes':\n return _xdr[\"default\"].ScVal.scvBytes(copy);\n case 'symbol':\n return _xdr[\"default\"].ScVal.scvSymbol(copy);\n case 'string':\n return _xdr[\"default\"].ScVal.scvString(copy);\n default:\n throw new TypeError(\"invalid type (\".concat(opts.type, \") specified for bytes-like value\"));\n }\n }\n if (Array.isArray(val)) {\n return _xdr[\"default\"].ScVal.scvVec(val.map(function (v, idx) {\n // There may be different type specifications for each element in\n // the array, so we need to apply those accordingly.\n if (Array.isArray(opts.type)) {\n return nativeToScVal(v, // only include a `{ type: ... }` if it's present (safer than\n // `{type: undefined}`)\n _objectSpread({}, opts.type.length > idx && {\n type: opts.type[idx]\n }));\n }\n\n // Otherwise apply a generic (or missing) type specifier on it.\n return nativeToScVal(v, opts);\n }));\n }\n if (((_val$constructor$name = (_val$constructor = val.constructor) === null || _val$constructor === void 0 ? void 0 : _val$constructor.name) !== null && _val$constructor$name !== void 0 ? _val$constructor$name : '') !== 'Object') {\n var _val$constructor2;\n throw new TypeError(\"cannot interpret \".concat((_val$constructor2 = val.constructor) === null || _val$constructor2 === void 0 ? void 0 : _val$constructor2.name, \" value as ScVal (\").concat(JSON.stringify(val), \")\"));\n }\n return _xdr[\"default\"].ScVal.scvMap(Object.entries(val)\n // The Soroban runtime expects maps to have their keys in sorted\n // order, so let's do that here as part of the conversion to prevent\n // confusing error messages on execution.\n .sort(function (_ref, _ref2) {\n var _ref3 = _slicedToArray(_ref, 1),\n key1 = _ref3[0];\n var _ref4 = _slicedToArray(_ref2, 1),\n key2 = _ref4[0];\n return key1.localeCompare(key2);\n }).map(function (_ref5) {\n var _k, _opts$type2;\n var _ref6 = _slicedToArray(_ref5, 2),\n k = _ref6[0],\n v = _ref6[1];\n // the type can be specified with an entry for the key and the value,\n // e.g. val = { 'hello': 1 } and opts.type = { hello: [ 'symbol',\n // 'u128' ]} or you can use `null` for the default interpretation\n var _ref7 = (_k = ((_opts$type2 = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type2 !== void 0 ? _opts$type2 : {})[k]) !== null && _k !== void 0 ? _k : [null, null],\n _ref8 = _slicedToArray(_ref7, 2),\n keyType = _ref8[0],\n valType = _ref8[1];\n var keyOpts = keyType ? {\n type: keyType\n } : {};\n var valOpts = valType ? {\n type: valType\n } : {};\n return new _xdr[\"default\"].ScMapEntry({\n key: nativeToScVal(k, keyOpts),\n val: nativeToScVal(v, valOpts)\n });\n }));\n }\n case 'number':\n case 'bigint':\n switch (opts === null || opts === void 0 ? void 0 : opts.type) {\n case 'u32':\n return _xdr[\"default\"].ScVal.scvU32(val);\n case 'i32':\n return _xdr[\"default\"].ScVal.scvI32(val);\n default:\n break;\n }\n return new _index.ScInt(val, {\n type: opts === null || opts === void 0 ? void 0 : opts.type\n }).toScVal();\n case 'string':\n {\n var _opts$type3;\n var optType = (_opts$type3 = opts === null || opts === void 0 ? void 0 : opts.type) !== null && _opts$type3 !== void 0 ? _opts$type3 : 'string';\n switch (optType) {\n case 'string':\n return _xdr[\"default\"].ScVal.scvString(val);\n case 'symbol':\n return _xdr[\"default\"].ScVal.scvSymbol(val);\n case 'address':\n return new _address.Address(val).toScVal();\n case 'u32':\n return _xdr[\"default\"].ScVal.scvU32(parseInt(val, 10));\n case 'i32':\n return _xdr[\"default\"].ScVal.scvI32(parseInt(val, 10));\n default:\n if (_index.XdrLargeInt.isType(optType)) {\n return new _index.XdrLargeInt(optType, val).toScVal();\n }\n throw new TypeError(\"invalid type (\".concat(opts.type, \") specified for string value\"));\n }\n }\n case 'boolean':\n return _xdr[\"default\"].ScVal.scvBool(val);\n case 'undefined':\n return _xdr[\"default\"].ScVal.scvVoid();\n case 'function':\n // FIXME: Is this too helpful?\n return nativeToScVal(val());\n default:\n throw new TypeError(\"failed to convert typeof \".concat(_typeof(val), \" (\").concat(val, \")\"));\n }\n}\n\n/**\n * Given a smart contract value, attempt to convert it to a native type.\n * Possible conversions include:\n *\n * - void -> `null`\n * - u32, i32 -> `number`\n * - u64, i64, u128, i128, u256, i256, timepoint, duration -> `bigint`\n * - vec -> `Array` of any of the above (via recursion)\n * - map -> key-value object of any of the above (via recursion)\n * - bool -> `boolean`\n * - bytes -> `Uint8Array`\n * - symbol -> `string`\n * - string -> `string` IF the underlying buffer can be decoded as ascii/utf8,\n * `Uint8Array` of the raw contents in any error case\n *\n * If no viable conversion can be determined, this just \"unwraps\" the smart\n * value to return its underlying XDR value.\n *\n * @param {xdr.ScVal} scv - the input smart contract value\n *\n * @returns {any}\n * @see nativeToScVal\n */\nfunction scValToNative(scv) {\n var _scv$vec, _scv$map;\n // we use the verbose xdr.ScValType..value form here because it's faster\n // than string comparisons and the underlying constants never need to be\n // updated\n switch (scv[\"switch\"]().value) {\n case _xdr[\"default\"].ScValType.scvVoid().value:\n return null;\n\n // these can be converted to bigints directly\n case _xdr[\"default\"].ScValType.scvU64().value:\n case _xdr[\"default\"].ScValType.scvI64().value:\n return scv.value().toBigInt();\n\n // these can be parsed by internal abstractions note that this can also\n // handle the above two cases, but it's not as efficient (another\n // type-check, parsing, etc.)\n case _xdr[\"default\"].ScValType.scvU128().value:\n case _xdr[\"default\"].ScValType.scvI128().value:\n case _xdr[\"default\"].ScValType.scvU256().value:\n case _xdr[\"default\"].ScValType.scvI256().value:\n return (0, _index.scValToBigInt)(scv);\n case _xdr[\"default\"].ScValType.scvVec().value:\n return ((_scv$vec = scv.vec()) !== null && _scv$vec !== void 0 ? _scv$vec : []).map(scValToNative);\n case _xdr[\"default\"].ScValType.scvAddress().value:\n return _address.Address.fromScVal(scv).toString();\n case _xdr[\"default\"].ScValType.scvMap().value:\n return Object.fromEntries(((_scv$map = scv.map()) !== null && _scv$map !== void 0 ? _scv$map : []).map(function (entry) {\n return [scValToNative(entry.key()), scValToNative(entry.val())];\n }));\n\n // these return the primitive type directly\n case _xdr[\"default\"].ScValType.scvBool().value:\n case _xdr[\"default\"].ScValType.scvU32().value:\n case _xdr[\"default\"].ScValType.scvI32().value:\n case _xdr[\"default\"].ScValType.scvBytes().value:\n return scv.value();\n\n // Symbols are limited to [a-zA-Z0-9_]+, so we can safely make ascii strings\n //\n // Strings, however, are \"presented\" as strings and we treat them as such\n // (in other words, string = bytes with a hint that it's text). If the user\n // encoded non-printable bytes in their string value, that's on them.\n //\n // Note that we assume a utf8 encoding (ascii-compatible). For other\n // encodings, you should probably use bytes anyway. If it cannot be decoded,\n // the raw bytes are returned.\n case _xdr[\"default\"].ScValType.scvSymbol().value:\n case _xdr[\"default\"].ScValType.scvString().value:\n {\n var v = scv.value(); // string|Buffer\n if (Buffer.isBuffer(v) || ArrayBuffer.isView(v)) {\n try {\n return new TextDecoder().decode(v);\n } catch (e) {\n return new Uint8Array(v.buffer); // copy of bytes\n }\n }\n return v; // string already\n }\n\n // these can be converted to bigint\n case _xdr[\"default\"].ScValType.scvTimepoint().value:\n case _xdr[\"default\"].ScValType.scvDuration().value:\n return new _xdr[\"default\"].Uint64(scv.value()).toBigInt();\n case _xdr[\"default\"].ScValType.scvError().value:\n switch (scv.error()[\"switch\"]().value) {\n // Distinguish errors from the user contract.\n case _xdr[\"default\"].ScErrorType.sceContract().value:\n return {\n type: 'contract',\n code: scv.error().contractCode()\n };\n default:\n {\n var err = scv.error();\n return {\n type: 'system',\n code: err.code().value,\n value: err.code().name\n };\n }\n }\n\n // in the fallthrough case, just return the underlying value directly\n default:\n return scv.value();\n }\n}\n\n/// Inject a sortable map builder into the xdr module.\n_xdr[\"default\"].scvSortedMap = function (items) {\n var sorted = Array.from(items).sort(function (a, b) {\n // Both a and b are `ScMapEntry`s, so we need to sort by underlying key.\n //\n // We couldn't possibly handle every combination of keys since Soroban\n // maps don't enforce consistent types, so we do a best-effort and try\n // sorting by \"number-like\" or \"string-like.\"\n var nativeA = scValToNative(a.key());\n var nativeB = scValToNative(b.key());\n switch (_typeof(nativeA)) {\n case 'number':\n case 'bigint':\n return nativeA < nativeB ? -1 : 1;\n default:\n return nativeA.toString().localeCompare(nativeB.toString());\n }\n });\n return _xdr[\"default\"].ScVal.scvMap(sorted);\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.humanizeEvents = humanizeEvents;\nvar _strkey = require(\"./strkey\");\nvar _scval = require(\"./scval\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * Converts raw diagnostic or contract events into something with a flatter,\n * human-readable, and understandable structure.\n *\n * @param {xdr.DiagnosticEvent[] | xdr.ContractEvent[]} events either contract\n * events or diagnostic events to parse into a friendly format\n *\n * @returns {SorobanEvent[]} a list of human-readable event structures, where\n * each element has the following properties:\n * - type: a string of one of 'system', 'contract', 'diagnostic\n * - contractId?: optionally, a `C...` encoded strkey\n * - topics: a list of {@link scValToNative} invocations on the topics\n * - data: similarly, a {@link scValToNative} invocation on the raw event data\n */\nfunction humanizeEvents(events) {\n return events.map(function (e) {\n // A pseudo-instanceof check for xdr.DiagnosticEvent more reliable\n // in mixed SDK environments:\n if (e.inSuccessfulContractCall) {\n return extractEvent(e.event());\n }\n return extractEvent(e);\n });\n}\nfunction extractEvent(event) {\n return _objectSpread(_objectSpread({}, typeof event.contractId === 'function' && event.contractId() != null && {\n contractId: _strkey.StrKey.encodeContract(event.contractId())\n }), {}, {\n type: event.type().name,\n topics: event.body().value().topics().map(function (t) {\n return (0, _scval.scValToNative)(t);\n }),\n data: (0, _scval.scValToNative)(event.body().value().data())\n });\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.authorizeEntry = authorizeEntry;\nexports.authorizeInvocation = authorizeInvocation;\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _keypair = require(\"./keypair\");\nvar _strkey = require(\"./strkey\");\nvar _network = require(\"./network\");\nvar _hashing = require(\"./hashing\");\nvar _address = require(\"./address\");\nvar _scval = require(\"./scval\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\n/**\n * @async\n * @callback SigningCallback A callback for signing an XDR structure\n * representing all of the details necessary to authorize an invocation tree.\n *\n * @param {xdr.HashIdPreimage} preimage the entire authorization envelope\n * whose hash you should sign, so that you can inspect the entire structure\n * if necessary (rather than blindly signing a hash)\n *\n * @returns {\n * Promise |\n * Promise<{signature: Uint8Array, publicKey: string}\n * } the signature of the raw payload (which is the sha256 hash of the preimage\n * bytes, so `hash(preimage.toXDR())`) either naked, implying it is signed\n * by the key corresponding to the public key in the entry you pass to\n * {@link authorizeEntry} (decipherable from its\n * `credentials().address().address()`), or alongside an explicit `publicKey`.\n */\n/**\n * Actually authorizes an existing authorization entry using the given the\n * credentials and expiration details, returning a signed copy.\n *\n * This \"fills out\" the authorization entry with a signature, indicating to the\n * {@link Operation.invokeHostFunction} its attached to that:\n * - a particular identity (i.e. signing {@link Keypair} or other signer)\n * - approving the execution of an invocation tree (i.e. a simulation-acquired\n * {@link xdr.SorobanAuthorizedInvocation} or otherwise built)\n * - on a particular network (uniquely identified by its passphrase, see\n * {@link Networks})\n * - until a particular ledger sequence is reached.\n *\n * This one lets you pass a either a {@link Keypair} (or, more accurately,\n * anything with a `sign(Buffer): Buffer` method) or a callback function (see\n * {@link SigningCallback}) to handle signing the envelope hash.\n *\n * @param {xdr.SorobanAuthorizationEntry} entry an unsigned authorization entr\n * @param {Keypair | SigningCallback} signer either a {@link Keypair} instance\n * or a function which takes a {@link xdr.HashIdPreimageSorobanAuthorization}\n * input payload and returns EITHER\n *\n * (a) an object containing a `signature` of the hash of the raw payload bytes\n * as a Buffer-like and a `publicKey` string representing who just\n * created this signature, or\n * (b) just the naked signature of the hash of the raw payload bytes (where\n * the signing key is implied to be the address in the `entry`).\n *\n * The latter option (b) is JUST for backwards compatibility and will be\n * removed in the future.\n * @param {number} validUntilLedgerSeq the (exclusive) future ledger sequence\n * number until which this authorization entry should be valid (if\n * `currentLedgerSeq==validUntil`, this is expired))\n * @param {string} [networkPassphrase] the network passphrase is incorprated\n * into the signature (see {@link Networks} for options)\n *\n * @returns {Promise} a promise for an\n * authorization entry that you can pass along to\n * {@link Operation.invokeHostFunction}\n *\n * @note If using the `SigningCallback` variation, the signer is assumed to be\n * the entry's credential address unless you use the variant that returns\n * the object.\n *\n * @see authorizeInvocation\n * @example\n * import {\n * SorobanRpc,\n * Transaction,\n * Networks,\n * authorizeEntry\n * } from '@stellar/stellar-sdk';\n *\n * // Assume signPayloadCallback is a well-formed signing callback.\n * //\n * // It might, for example, pop up a modal from a browser extension, send the\n * // transaction to a third-party service for signing, or just do simple\n * // signing via Keypair like it does here:\n * function signPayloadCallback(payload) {\n * return signer.sign(hash(payload.toXDR());\n * }\n *\n * function multiPartyAuth(\n * server: SorobanRpc.Server,\n * // assume this involves multi-party auth\n * tx: Transaction,\n * ) {\n * return server\n * .simulateTransaction(tx)\n * .then((simResult) => {\n * tx.operations[0].auth.map(entry =>\n * authorizeEntry(\n * entry,\n * signPayloadCallback,\n * currentLedger + 1000,\n * Networks.TESTNET);\n * ));\n *\n * return server.prepareTransaction(tx, simResult);\n * })\n * .then((preppedTx) => {\n * preppedTx.sign(source);\n * return server.sendTransaction(preppedTx);\n * });\n * }\n */\nfunction authorizeEntry(_x, _x2, _x3) {\n return _authorizeEntry.apply(this, arguments);\n}\n/**\n * This builds an entry from scratch, allowing you to express authorization as a\n * function of:\n * - a particular identity (i.e. signing {@link Keypair} or other signer)\n * - approving the execution of an invocation tree (i.e. a simulation-acquired\n * {@link xdr.SorobanAuthorizedInvocation} or otherwise built)\n * - on a particular network (uniquely identified by its passphrase, see\n * {@link Networks})\n * - until a particular ledger sequence is reached.\n *\n * This is in contrast to {@link authorizeEntry}, which signs an existing entry.\n *\n * @param {Keypair | SigningCallback} signer either a {@link Keypair} instance\n * (or anything with a `.sign(buf): Buffer-like` method) or a function which\n * takes a payload (a {@link xdr.HashIdPreimageSorobanAuthorization}\n * instance) input and returns the signature of the hash of the raw payload\n * bytes (where the signing key should correspond to the address in the\n * `entry`)\n * @param {number} validUntilLedgerSeq the (exclusive) future ledger sequence\n * number until which this authorization entry should be valid (if\n * `currentLedgerSeq==validUntilLedgerSeq`, this is expired))\n * @param {xdr.SorobanAuthorizedInvocation} invocation the invocation tree that\n * we're authorizing (likely, this comes from transaction simulation)\n * @param {string} [publicKey] the public identity of the signer (when\n * providing a {@link Keypair} to `signer`, this can be omitted, as it just\n * uses {@link Keypair.publicKey})\n * @param {string} [networkPassphrase] the network passphrase is incorprated\n * into the signature (see {@link Networks} for options, default:\n * {@link Networks.FUTURENET})\n *\n * @returns {Promise} a promise for an\n * authorization entry that you can pass along to\n * {@link Operation.invokeHostFunction}\n *\n * @see authorizeEntry\n */\nfunction _authorizeEntry() {\n _authorizeEntry = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(entry, signer, validUntilLedgerSeq) {\n var networkPassphrase,\n clone,\n addrAuth,\n networkId,\n preimage,\n payload,\n signature,\n publicKey,\n sigResult,\n sigScVal,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n networkPassphrase = _args.length > 3 && _args[3] !== undefined ? _args[3] : _network.Networks.FUTURENET;\n if (!(entry.credentials()[\"switch\"]().value !== _xdr[\"default\"].SorobanCredentialsType.sorobanCredentialsAddress().value)) {\n _context.n = 1;\n break;\n }\n return _context.a(2, entry);\n case 1:\n clone = _xdr[\"default\"].SorobanAuthorizationEntry.fromXDR(entry.toXDR());\n /** @type {xdr.SorobanAddressCredentials} */\n addrAuth = clone.credentials().address();\n addrAuth.signatureExpirationLedger(validUntilLedgerSeq);\n networkId = (0, _hashing.hash)(Buffer.from(networkPassphrase));\n preimage = _xdr[\"default\"].HashIdPreimage.envelopeTypeSorobanAuthorization(new _xdr[\"default\"].HashIdPreimageSorobanAuthorization({\n networkId: networkId,\n nonce: addrAuth.nonce(),\n invocation: clone.rootInvocation(),\n signatureExpirationLedger: addrAuth.signatureExpirationLedger()\n }));\n payload = (0, _hashing.hash)(preimage.toXDR());\n if (!(typeof signer === 'function')) {\n _context.n = 3;\n break;\n }\n _context.n = 2;\n return signer(preimage);\n case 2:\n sigResult = _context.v;\n if (sigResult !== null && sigResult !== void 0 && sigResult.signature) {\n signature = Buffer.from(sigResult.signature);\n publicKey = sigResult.publicKey;\n } else {\n // if using the deprecated form, assume it's for the entry\n signature = Buffer.from(sigResult);\n publicKey = _address.Address.fromScAddress(addrAuth.address()).toString();\n }\n _context.n = 4;\n break;\n case 3:\n signature = Buffer.from(signer.sign(payload));\n publicKey = signer.publicKey();\n case 4:\n if (_keypair.Keypair.fromPublicKey(publicKey).verify(payload, signature)) {\n _context.n = 5;\n break;\n }\n throw new Error(\"signature doesn't match payload\");\n case 5:\n // This structure is defined here:\n // https://soroban.stellar.org/docs/fundamentals-and-concepts/invoking-contracts-with-transactions#stellar-account-signatures\n //\n // Encoding a contract structure as an ScVal means the map keys are supposed\n // to be symbols, hence the forced typing here.\n sigScVal = (0, _scval.nativeToScVal)({\n public_key: _strkey.StrKey.decodeEd25519PublicKey(publicKey),\n signature: signature\n }, {\n type: {\n public_key: ['symbol', null],\n signature: ['symbol', null]\n }\n });\n addrAuth.signature(_xdr[\"default\"].ScVal.scvVec([sigScVal]));\n return _context.a(2, clone);\n }\n }, _callee);\n }));\n return _authorizeEntry.apply(this, arguments);\n}\nfunction authorizeInvocation(signer, validUntilLedgerSeq, invocation) {\n var publicKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n var networkPassphrase = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _network.Networks.FUTURENET;\n // We use keypairs as a source of randomness for the nonce to avoid mucking\n // with any crypto dependencies. Note that this just has to be random and\n // unique, not cryptographically secure, so it's fine.\n var kp = _keypair.Keypair.random().rawPublicKey();\n var nonce = new _xdr[\"default\"].Int64(bytesToInt64(kp));\n var pk = publicKey || signer.publicKey();\n if (!pk) {\n throw new Error(\"authorizeInvocation requires publicKey parameter\");\n }\n var entry = new _xdr[\"default\"].SorobanAuthorizationEntry({\n rootInvocation: invocation,\n credentials: _xdr[\"default\"].SorobanCredentials.sorobanCredentialsAddress(new _xdr[\"default\"].SorobanAddressCredentials({\n address: new _address.Address(pk).toScAddress(),\n nonce: nonce,\n signatureExpirationLedger: 0,\n // replaced\n signature: _xdr[\"default\"].ScVal.scvVec([]) // replaced\n }))\n });\n return authorizeEntry(entry, signer, validUntilLedgerSeq, networkPassphrase);\n}\nfunction bytesToInt64(bytes) {\n // eslint-disable-next-line no-bitwise\n return bytes.subarray(0, 8).reduce(function (accum, b) {\n return accum << 8 | b;\n }, 0);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildInvocationTree = buildInvocationTree;\nexports.walkInvocationTree = walkInvocationTree;\nvar _asset = require(\"./asset\");\nvar _address = require(\"./address\");\nvar _scval = require(\"./scval\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/**\n * @typedef CreateInvocation\n *\n * @prop {'wasm'|'sac'} type a type indicating if this creation was a custom\n * contract or a wrapping of an existing Stellar asset\n * @prop {string} [token] when `type=='sac'`, the canonical {@link Asset} that\n * is being wrapped by this Stellar Asset Contract\n * @prop {object} [wasm] when `type=='wasm'`, add'l creation parameters\n *\n * @prop {string} wasm.hash hex hash of WASM bytecode backing this contract\n * @prop {string} wasm.address contract address of this deployment\n * @prop {string} wasm.salt hex salt that the user consumed when creating\n * this contract (encoded in the resulting address)\n * @prop {any[]} [wasm.constructorArgs] a list of natively-represented values\n * (see {@link scValToNative}) that are passed to the constructor when\n * creating this contract\n */\n\n/**\n * @typedef ExecuteInvocation\n *\n * @prop {string} source the strkey of the contract (C...) being invoked\n * @prop {string} function the name of the function being invoked\n * @prop {any[]} args the natively-represented parameters to the function\n * invocation (see {@link scValToNative} for rules on how they're\n * represented a JS types)\n */\n\n/**\n * @typedef InvocationTree\n * @prop {'execute' | 'create'} type the type of invocation occurring, either\n * contract creation or host function execution\n * @prop {CreateInvocation | ExecuteInvocation} args the parameters to the\n * invocation, depending on the type\n * @prop {InvocationTree[]} invocations any sub-invocations that (may) occur\n * as a result of this invocation (i.e. a tree of call stacks)\n */\n\n/**\n * Turns a raw invocation tree into a human-readable format.\n *\n * This is designed to make the invocation tree easier to understand in order to\n * inform users about the side-effects of their contract calls. This will help\n * make informed decisions about whether or not a particular invocation will\n * result in what you expect it to.\n *\n * @param {xdr.SorobanAuthorizedInvocation} root the raw XDR of the invocation,\n * likely acquired from transaction simulation. this is either from the\n * {@link Operation.invokeHostFunction} itself (the `func` field), or from\n * the authorization entries ({@link xdr.SorobanAuthorizationEntry}, the\n * `rootInvocation` field)\n *\n * @returns {InvocationTree} a human-readable version of the invocation tree\n *\n * @example\n * Here, we show a browser modal after simulating an arbitrary transaction,\n * `tx`, which we assume has an `Operation.invokeHostFunction` inside of it:\n *\n * ```typescript\n * import { Server, buildInvocationTree } from '@stellar/stellar-sdk';\n *\n * const s = new Server(\"fill in accordingly\");\n *\n * s.simulateTransaction(tx).then(\n * (resp: SorobanRpc.SimulateTransactionResponse) => {\n * if (SorobanRpc.isSuccessfulSim(resp) && ) {\n * // bold assumption: there's a valid result with an auth entry\n * alert(\n * \"You are authorizing the following invocation:\\n\" +\n * JSON.stringify(\n * buildInvocationTree(resp.result!.auth[0].rootInvocation()),\n * null,\n * 2\n * )\n * );\n * }\n * }\n * );\n * ```\n */\nfunction buildInvocationTree(root) {\n var fn = root[\"function\"]();\n\n /** @type {InvocationTree} */\n var output = {};\n\n /** @type {xdr.CreateContractArgs|xdr.CreateContractArgsV2|xdr.InvokeContractArgs} */\n var inner = fn.value();\n switch (fn[\"switch\"]().value) {\n // sorobanAuthorizedFunctionTypeContractFn\n case 0:\n output.type = 'execute';\n output.args = {\n source: _address.Address.fromScAddress(inner.contractAddress()).toString(),\n \"function\": inner.functionName(),\n args: inner.args().map(function (arg) {\n return (0, _scval.scValToNative)(arg);\n })\n };\n break;\n\n // sorobanAuthorizedFunctionTypeCreateContractHostFn\n // sorobanAuthorizedFunctionTypeCreateContractV2HostFn\n case 1: // fallthrough: just no ctor args in V1\n case 2:\n {\n var createV2 = fn[\"switch\"]().value === 2;\n output.type = 'create';\n output.args = {};\n\n // If the executable is a WASM, the preimage MUST be an address. If it's a\n // token, the preimage MUST be an asset. This is a cheeky way to check\n // that, because wasm=0, token=1 and address=0, asset=1 in the XDR switch\n // values.\n //\n // The first part may not be true in V2, but we'd need to update this code\n // anyway so it can still be an error.\n var _ref = [inner.executable(), inner.contractIdPreimage()],\n exec = _ref[0],\n preimage = _ref[1];\n if (!!exec[\"switch\"]().value !== !!preimage[\"switch\"]().value) {\n throw new Error(\"creation function appears invalid: \".concat(JSON.stringify(inner), \" (should be wasm+address or token+asset)\"));\n }\n switch (exec[\"switch\"]().value) {\n // contractExecutableWasm\n case 0:\n {\n /** @type {xdr.ContractIdPreimageFromAddress} */\n var details = preimage.fromAddress();\n output.args.type = 'wasm';\n output.args.wasm = _objectSpread({\n salt: details.salt().toString('hex'),\n hash: exec.wasmHash().toString('hex'),\n address: _address.Address.fromScAddress(details.address()).toString()\n }, createV2 && {\n constructorArgs: inner.constructorArgs().map(function (arg) {\n return (0, _scval.scValToNative)(arg);\n })\n });\n break;\n }\n\n // contractExecutableStellarAsset\n case 1:\n output.args.type = 'sac';\n output.args.asset = _asset.Asset.fromOperation(preimage.fromAsset()).toString();\n break;\n default:\n throw new Error(\"unknown creation type: \".concat(JSON.stringify(exec)));\n }\n break;\n }\n default:\n throw new Error(\"unknown invocation type (\".concat(fn[\"switch\"](), \"): \").concat(JSON.stringify(fn)));\n }\n output.invocations = root.subInvocations().map(function (i) {\n return buildInvocationTree(i);\n });\n return output;\n}\n\n/**\n * @callback InvocationWalker\n *\n * @param {xdr.SorobanAuthorizedInvocation} node the currently explored node\n * @param {number} depth the depth of the tree this node is occurring at (the\n * root starts at a depth of 1)\n * @param {xdr.SorobanAuthorizedInvocation} [parent] this `node`s parent node,\n * if any (i.e. this doesn't exist at the root)\n *\n * @returns {boolean|null|void} returning exactly `false` is a hint to stop\n * exploring, other values are ignored\n */\n\n/**\n * Executes a callback function on each node in the tree until stopped.\n *\n * Nodes are walked in a depth-first order. Returning `false` from the callback\n * stops further depth exploration at that node, but it does not stop the walk\n * in a \"global\" view.\n *\n * @param {xdr.SorobanAuthorizedInvocation} root the tree to explore\n * @param {InvocationWalker} callback the callback to execute for each node\n * @returns {void}\n */\nfunction walkInvocationTree(root, callback) {\n walkHelper(root, 1, callback);\n}\nfunction walkHelper(node, depth, callback, parent) {\n if (callback(node, depth, parent) === false /* allow void rv */) {\n return;\n }\n node.subInvocations().forEach(function (i) {\n return walkHelper(i, depth + 1, callback, node);\n });\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n xdr: true,\n cereal: true,\n hash: true,\n sign: true,\n verify: true,\n getLiquidityPoolId: true,\n LiquidityPoolFeeV18: true,\n Keypair: true,\n UnsignedHyper: true,\n Hyper: true,\n TransactionBase: true,\n Transaction: true,\n FeeBumpTransaction: true,\n TransactionBuilder: true,\n TimeoutInfinite: true,\n BASE_FEE: true,\n Asset: true,\n LiquidityPoolAsset: true,\n LiquidityPoolId: true,\n Operation: true,\n AuthRequiredFlag: true,\n AuthRevocableFlag: true,\n AuthImmutableFlag: true,\n AuthClawbackEnabledFlag: true,\n Account: true,\n MuxedAccount: true,\n Claimant: true,\n Networks: true,\n StrKey: true,\n SignerKey: true,\n Soroban: true,\n decodeAddressToMuxedAccount: true,\n encodeMuxedAccountToAddress: true,\n extractBaseAddress: true,\n encodeMuxedAccount: true,\n Contract: true,\n Address: true\n};\nObject.defineProperty(exports, \"Account\", {\n enumerable: true,\n get: function get() {\n return _account.Account;\n }\n});\nObject.defineProperty(exports, \"Address\", {\n enumerable: true,\n get: function get() {\n return _address.Address;\n }\n});\nObject.defineProperty(exports, \"Asset\", {\n enumerable: true,\n get: function get() {\n return _asset.Asset;\n }\n});\nObject.defineProperty(exports, \"AuthClawbackEnabledFlag\", {\n enumerable: true,\n get: function get() {\n return _operation.AuthClawbackEnabledFlag;\n }\n});\nObject.defineProperty(exports, \"AuthImmutableFlag\", {\n enumerable: true,\n get: function get() {\n return _operation.AuthImmutableFlag;\n }\n});\nObject.defineProperty(exports, \"AuthRequiredFlag\", {\n enumerable: true,\n get: function get() {\n return _operation.AuthRequiredFlag;\n }\n});\nObject.defineProperty(exports, \"AuthRevocableFlag\", {\n enumerable: true,\n get: function get() {\n return _operation.AuthRevocableFlag;\n }\n});\nObject.defineProperty(exports, \"BASE_FEE\", {\n enumerable: true,\n get: function get() {\n return _transaction_builder.BASE_FEE;\n }\n});\nObject.defineProperty(exports, \"Claimant\", {\n enumerable: true,\n get: function get() {\n return _claimant.Claimant;\n }\n});\nObject.defineProperty(exports, \"Contract\", {\n enumerable: true,\n get: function get() {\n return _contract.Contract;\n }\n});\nObject.defineProperty(exports, \"FeeBumpTransaction\", {\n enumerable: true,\n get: function get() {\n return _fee_bump_transaction.FeeBumpTransaction;\n }\n});\nObject.defineProperty(exports, \"Hyper\", {\n enumerable: true,\n get: function get() {\n return _jsXdr.Hyper;\n }\n});\nObject.defineProperty(exports, \"Keypair\", {\n enumerable: true,\n get: function get() {\n return _keypair.Keypair;\n }\n});\nObject.defineProperty(exports, \"LiquidityPoolAsset\", {\n enumerable: true,\n get: function get() {\n return _liquidity_pool_asset.LiquidityPoolAsset;\n }\n});\nObject.defineProperty(exports, \"LiquidityPoolFeeV18\", {\n enumerable: true,\n get: function get() {\n return _get_liquidity_pool_id.LiquidityPoolFeeV18;\n }\n});\nObject.defineProperty(exports, \"LiquidityPoolId\", {\n enumerable: true,\n get: function get() {\n return _liquidity_pool_id.LiquidityPoolId;\n }\n});\nObject.defineProperty(exports, \"MuxedAccount\", {\n enumerable: true,\n get: function get() {\n return _muxed_account.MuxedAccount;\n }\n});\nObject.defineProperty(exports, \"Networks\", {\n enumerable: true,\n get: function get() {\n return _network.Networks;\n }\n});\nObject.defineProperty(exports, \"Operation\", {\n enumerable: true,\n get: function get() {\n return _operation.Operation;\n }\n});\nObject.defineProperty(exports, \"SignerKey\", {\n enumerable: true,\n get: function get() {\n return _signerkey.SignerKey;\n }\n});\nObject.defineProperty(exports, \"Soroban\", {\n enumerable: true,\n get: function get() {\n return _soroban.Soroban;\n }\n});\nObject.defineProperty(exports, \"StrKey\", {\n enumerable: true,\n get: function get() {\n return _strkey.StrKey;\n }\n});\nObject.defineProperty(exports, \"TimeoutInfinite\", {\n enumerable: true,\n get: function get() {\n return _transaction_builder.TimeoutInfinite;\n }\n});\nObject.defineProperty(exports, \"Transaction\", {\n enumerable: true,\n get: function get() {\n return _transaction.Transaction;\n }\n});\nObject.defineProperty(exports, \"TransactionBase\", {\n enumerable: true,\n get: function get() {\n return _transaction_base.TransactionBase;\n }\n});\nObject.defineProperty(exports, \"TransactionBuilder\", {\n enumerable: true,\n get: function get() {\n return _transaction_builder.TransactionBuilder;\n }\n});\nObject.defineProperty(exports, \"UnsignedHyper\", {\n enumerable: true,\n get: function get() {\n return _jsXdr.UnsignedHyper;\n }\n});\nObject.defineProperty(exports, \"cereal\", {\n enumerable: true,\n get: function get() {\n return _jsxdr[\"default\"];\n }\n});\nObject.defineProperty(exports, \"decodeAddressToMuxedAccount\", {\n enumerable: true,\n get: function get() {\n return _decode_encode_muxed_account.decodeAddressToMuxedAccount;\n }\n});\nexports[\"default\"] = void 0;\nObject.defineProperty(exports, \"encodeMuxedAccount\", {\n enumerable: true,\n get: function get() {\n return _decode_encode_muxed_account.encodeMuxedAccount;\n }\n});\nObject.defineProperty(exports, \"encodeMuxedAccountToAddress\", {\n enumerable: true,\n get: function get() {\n return _decode_encode_muxed_account.encodeMuxedAccountToAddress;\n }\n});\nObject.defineProperty(exports, \"extractBaseAddress\", {\n enumerable: true,\n get: function get() {\n return _decode_encode_muxed_account.extractBaseAddress;\n }\n});\nObject.defineProperty(exports, \"getLiquidityPoolId\", {\n enumerable: true,\n get: function get() {\n return _get_liquidity_pool_id.getLiquidityPoolId;\n }\n});\nObject.defineProperty(exports, \"hash\", {\n enumerable: true,\n get: function get() {\n return _hashing.hash;\n }\n});\nObject.defineProperty(exports, \"sign\", {\n enumerable: true,\n get: function get() {\n return _signing.sign;\n }\n});\nObject.defineProperty(exports, \"verify\", {\n enumerable: true,\n get: function get() {\n return _signing.verify;\n }\n});\nObject.defineProperty(exports, \"xdr\", {\n enumerable: true,\n get: function get() {\n return _xdr[\"default\"];\n }\n});\nvar _xdr = _interopRequireDefault(require(\"./xdr\"));\nvar _jsxdr = _interopRequireDefault(require(\"./jsxdr\"));\nvar _hashing = require(\"./hashing\");\nvar _signing = require(\"./signing\");\nvar _get_liquidity_pool_id = require(\"./get_liquidity_pool_id\");\nvar _keypair = require(\"./keypair\");\nvar _jsXdr = require(\"@stellar/js-xdr\");\nvar _transaction_base = require(\"./transaction_base\");\nvar _transaction = require(\"./transaction\");\nvar _fee_bump_transaction = require(\"./fee_bump_transaction\");\nvar _transaction_builder = require(\"./transaction_builder\");\nvar _asset = require(\"./asset\");\nvar _liquidity_pool_asset = require(\"./liquidity_pool_asset\");\nvar _liquidity_pool_id = require(\"./liquidity_pool_id\");\nvar _operation = require(\"./operation\");\nvar _memo = require(\"./memo\");\nObject.keys(_memo).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _memo[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _memo[key];\n }\n });\n});\nvar _account = require(\"./account\");\nvar _muxed_account = require(\"./muxed_account\");\nvar _claimant = require(\"./claimant\");\nvar _network = require(\"./network\");\nvar _strkey = require(\"./strkey\");\nvar _signerkey = require(\"./signerkey\");\nvar _soroban = require(\"./soroban\");\nvar _decode_encode_muxed_account = require(\"./util/decode_encode_muxed_account\");\nvar _contract = require(\"./contract\");\nvar _address = require(\"./address\");\nvar _numbers = require(\"./numbers\");\nObject.keys(_numbers).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _numbers[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _numbers[key];\n }\n });\n});\nvar _scval = require(\"./scval\");\nObject.keys(_scval).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _scval[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _scval[key];\n }\n });\n});\nvar _events = require(\"./events\");\nObject.keys(_events).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _events[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _events[key];\n }\n });\n});\nvar _sorobandata_builder = require(\"./sorobandata_builder\");\nObject.keys(_sorobandata_builder).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _sorobandata_builder[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _sorobandata_builder[key];\n }\n });\n});\nvar _auth = require(\"./auth\");\nObject.keys(_auth).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _auth[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _auth[key];\n }\n });\n});\nvar _invocation = require(\"./invocation\");\nObject.keys(_invocation).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _invocation[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _invocation[key];\n }\n });\n});\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { \"default\": e }; }\n/* eslint-disable import/no-import-module-exports */\n//\n// Soroban\n//\nvar _default = exports[\"default\"] = module.exports;", "/*! https://mths.be/punycode v1.4.0 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n", "/*!\n * URI.js - Mutating URLs\n * IPv6 Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.IPv6 = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n /*\n var _in = \"fe80:0000:0000:0000:0204:61ff:fe9d:f156\";\n var _out = IPv6.best(_in);\n var _expected = \"fe80::204:61ff:fe9d:f156\";\n\n console.log(_in, _out, _expected, _out === _expected);\n */\n\n // save current IPv6 variable, if any\n var _IPv6 = root && root.IPv6;\n\n function bestPresentation(address) {\n // based on:\n // Javascript to test an IPv6 address for proper format, and to\n // present the \"best text representation\" according to IETF Draft RFC at\n // http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04\n // 8 Feb 2010 Rich Brown, Dartware, LLC\n // Please feel free to use this code as long as you provide a link to\n // http://www.intermapper.com\n // http://intermapper.com/support/tools/IPV6-Validator.aspx\n // http://download.dartware.com/thirdparty/ipv6validator.js\n\n var _address = address.toLowerCase();\n var segments = _address.split(':');\n var length = segments.length;\n var total = 8;\n\n // trim colons (:: or ::a:b:c\u2026 or \u2026a:b:c::)\n if (segments[0] === '' && segments[1] === '' && segments[2] === '') {\n // must have been ::\n // remove first two items\n segments.shift();\n segments.shift();\n } else if (segments[0] === '' && segments[1] === '') {\n // must have been ::xxxx\n // remove the first item\n segments.shift();\n } else if (segments[length - 1] === '' && segments[length - 2] === '') {\n // must have been xxxx::\n segments.pop();\n }\n\n length = segments.length;\n\n // adjust total segments for IPv4 trailer\n if (segments[length - 1].indexOf('.') !== -1) {\n // found a \".\" which means IPv4\n total = 7;\n }\n\n // fill empty segments them with \"0000\"\n var pos;\n for (pos = 0; pos < length; pos++) {\n if (segments[pos] === '') {\n break;\n }\n }\n\n if (pos < total) {\n segments.splice(pos, 1, '0000');\n while (segments.length < total) {\n segments.splice(pos, 0, '0000');\n }\n }\n\n // strip leading zeros\n var _segments;\n for (var i = 0; i < total; i++) {\n _segments = segments[i].split('');\n for (var j = 0; j < 3 ; j++) {\n if (_segments[0] === '0' && _segments.length > 1) {\n _segments.splice(0,1);\n } else {\n break;\n }\n }\n\n segments[i] = _segments.join('');\n }\n\n // find longest sequence of zeroes and coalesce them into one segment\n var best = -1;\n var _best = 0;\n var _current = 0;\n var current = -1;\n var inzeroes = false;\n // i; already declared\n\n for (i = 0; i < total; i++) {\n if (inzeroes) {\n if (segments[i] === '0') {\n _current += 1;\n } else {\n inzeroes = false;\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n }\n } else {\n if (segments[i] === '0') {\n inzeroes = true;\n current = i;\n _current = 1;\n }\n }\n }\n\n if (_current > _best) {\n best = current;\n _best = _current;\n }\n\n if (_best > 1) {\n segments.splice(best, _best, '');\n }\n\n length = segments.length;\n\n // assemble remaining segments\n var result = '';\n if (segments[0] === '') {\n result = ':';\n }\n\n for (i = 0; i < length; i++) {\n result += segments[i];\n if (i === length - 1) {\n break;\n }\n\n result += ':';\n }\n\n if (segments[length - 1] === '') {\n result += ':';\n }\n\n return result;\n }\n\n function noConflict() {\n /*jshint validthis: true */\n if (root.IPv6 === this) {\n root.IPv6 = _IPv6;\n }\n\n return this;\n }\n\n return {\n best: bestPresentation,\n noConflict: noConflict\n };\n}));\n", "/*!\n * URI.js - Mutating URLs\n * Second Level Domain (SLD) Support\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else {\n // Browser globals (root is window)\n root.SecondLevelDomains = factory(root);\n }\n}(this, function (root) {\n 'use strict';\n\n // save current SecondLevelDomains variable, if any\n var _SecondLevelDomains = root && root.SecondLevelDomains;\n\n var SLD = {\n // list of known Second Level Domains\n // converted list of SLDs from https://github.com/gavingmiller/second-level-domains\n // ----\n // publicsuffix.org is more current and actually used by a couple of browsers internally.\n // downside is it also contains domains like \"dyndns.org\" - which is fine for the security\n // issues browser have to deal with (SOP for cookies, etc) - but is way overboard for URI.js\n // ----\n list: {\n 'ac':' com gov mil net org ',\n 'ae':' ac co gov mil name net org pro sch ',\n 'af':' com edu gov net org ',\n 'al':' com edu gov mil net org ',\n 'ao':' co ed gv it og pb ',\n 'ar':' com edu gob gov int mil net org tur ',\n 'at':' ac co gv or ',\n 'au':' asn com csiro edu gov id net org ',\n 'ba':' co com edu gov mil net org rs unbi unmo unsa untz unze ',\n 'bb':' biz co com edu gov info net org store tv ',\n 'bh':' biz cc com edu gov info net org ',\n 'bn':' com edu gov net org ',\n 'bo':' com edu gob gov int mil net org tv ',\n 'br':' adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ',\n 'bs':' com edu gov net org ',\n 'bz':' du et om ov rg ',\n 'ca':' ab bc mb nb nf nl ns nt nu on pe qc sk yk ',\n 'ck':' biz co edu gen gov info net org ',\n 'cn':' ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ',\n 'co':' com edu gov mil net nom org ',\n 'cr':' ac c co ed fi go or sa ',\n 'cy':' ac biz com ekloges gov ltd name net org parliament press pro tm ',\n 'do':' art com edu gob gov mil net org sld web ',\n 'dz':' art asso com edu gov net org pol ',\n 'ec':' com edu fin gov info med mil net org pro ',\n 'eg':' com edu eun gov mil name net org sci ',\n 'er':' com edu gov ind mil net org rochest w ',\n 'es':' com edu gob nom org ',\n 'et':' biz com edu gov info name net org ',\n 'fj':' ac biz com info mil name net org pro ',\n 'fk':' ac co gov net nom org ',\n 'fr':' asso com f gouv nom prd presse tm ',\n 'gg':' co net org ',\n 'gh':' com edu gov mil org ',\n 'gn':' ac com gov net org ',\n 'gr':' com edu gov mil net org ',\n 'gt':' com edu gob ind mil net org ',\n 'gu':' com edu gov net org ',\n 'hk':' com edu gov idv net org ',\n 'hu':' 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ',\n 'id':' ac co go mil net or sch web ',\n 'il':' ac co gov idf k12 muni net org ',\n 'in':' ac co edu ernet firm gen gov i ind mil net nic org res ',\n 'iq':' com edu gov i mil net org ',\n 'ir':' ac co dnssec gov i id net org sch ',\n 'it':' edu gov ',\n 'je':' co net org ',\n 'jo':' com edu gov mil name net org sch ',\n 'jp':' ac ad co ed go gr lg ne or ',\n 'ke':' ac co go info me mobi ne or sc ',\n 'kh':' com edu gov mil net org per ',\n 'ki':' biz com de edu gov info mob net org tel ',\n 'km':' asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ',\n 'kn':' edu gov net org ',\n 'kr':' ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ',\n 'kw':' com edu gov net org ',\n 'ky':' com edu gov net org ',\n 'kz':' com edu gov mil net org ',\n 'lb':' com edu gov net org ',\n 'lk':' assn com edu gov grp hotel int ltd net ngo org sch soc web ',\n 'lr':' com edu gov net org ',\n 'lv':' asn com conf edu gov id mil net org ',\n 'ly':' com edu gov id med net org plc sch ',\n 'ma':' ac co gov m net org press ',\n 'mc':' asso tm ',\n 'me':' ac co edu gov its net org priv ',\n 'mg':' com edu gov mil nom org prd tm ',\n 'mk':' com edu gov inf name net org pro ',\n 'ml':' com edu gov net org presse ',\n 'mn':' edu gov org ',\n 'mo':' com edu gov net org ',\n 'mt':' com edu gov net org ',\n 'mv':' aero biz com coop edu gov info int mil museum name net org pro ',\n 'mw':' ac co com coop edu gov int museum net org ',\n 'mx':' com edu gob net org ',\n 'my':' com edu gov mil name net org sch ',\n 'nf':' arts com firm info net other per rec store web ',\n 'ng':' biz com edu gov mil mobi name net org sch ',\n 'ni':' ac co com edu gob mil net nom org ',\n 'np':' com edu gov mil net org ',\n 'nr':' biz com edu gov info net org ',\n 'om':' ac biz co com edu gov med mil museum net org pro sch ',\n 'pe':' com edu gob mil net nom org sld ',\n 'ph':' com edu gov i mil net ngo org ',\n 'pk':' biz com edu fam gob gok gon gop gos gov net org web ',\n 'pl':' art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ',\n 'pr':' ac biz com edu est gov info isla name net org pro prof ',\n 'ps':' com edu gov net org plo sec ',\n 'pw':' belau co ed go ne or ',\n 'ro':' arts com firm info nom nt org rec store tm www ',\n 'rs':' ac co edu gov in org ',\n 'sb':' com edu gov net org ',\n 'sc':' com edu gov net org ',\n 'sh':' co com edu gov net nom org ',\n 'sl':' com edu gov net org ',\n 'st':' co com consulado edu embaixada gov mil net org principe saotome store ',\n 'sv':' com edu gob org red ',\n 'sz':' ac co org ',\n 'tr':' av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ',\n 'tt':' aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ',\n 'tw':' club com ebiz edu game gov idv mil net org ',\n 'mu':' ac co com gov net or org ',\n 'mz':' ac co edu gov org ',\n 'na':' co com ',\n 'nz':' ac co cri geek gen govt health iwi maori mil net org parliament school ',\n 'pa':' abo ac com edu gob ing med net nom org sld ',\n 'pt':' com edu gov int net nome org publ ',\n 'py':' com edu gov mil net org ',\n 'qa':' com edu gov mil net org ',\n 're':' asso com nom ',\n 'ru':' ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ',\n 'rw':' ac co com edu gouv gov int mil net ',\n 'sa':' com edu gov med net org pub sch ',\n 'sd':' com edu gov info med net org tv ',\n 'se':' a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ',\n 'sg':' com edu gov idn net org per ',\n 'sn':' art com edu gouv org perso univ ',\n 'sy':' com edu gov mil net news org ',\n 'th':' ac co go in mi net or ',\n 'tj':' ac biz co com edu go gov info int mil name net nic org test web ',\n 'tn':' agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ',\n 'tz':' ac co go ne or ',\n 'ua':' biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ',\n 'ug':' ac co go ne or org sc ',\n 'uk':' ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ',\n 'us':' dni fed isa kids nsn ',\n 'uy':' com edu gub mil net org ',\n 've':' co com edu gob info mil net org web ',\n 'vi':' co com k12 net org ',\n 'vn':' ac biz com edu gov health info int name net org pro ',\n 'ye':' co com gov ltd me net org plc ',\n 'yu':' ac co edu gov org ',\n 'za':' ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ',\n 'zm':' ac co com edu gov net org sch ',\n // https://en.wikipedia.org/wiki/CentralNic#Second-level_domains\n 'com': 'ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ',\n 'net': 'gb jp se uk ',\n 'org': 'ae',\n 'de': 'com '\n },\n // gorhill 2013-10-25: Using indexOf() instead Regexp(). Significant boost\n // in both performance and memory footprint. No initialization required.\n // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4\n // Following methods use lastIndexOf() rather than array.split() in order\n // to avoid any memory allocations.\n has: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') >= 0;\n },\n is: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return false;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset >= 0) {\n return false;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return false;\n }\n return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0;\n },\n get: function(domain) {\n var tldOffset = domain.lastIndexOf('.');\n if (tldOffset <= 0 || tldOffset >= (domain.length-1)) {\n return null;\n }\n var sldOffset = domain.lastIndexOf('.', tldOffset-1);\n if (sldOffset <= 0 || sldOffset >= (tldOffset-1)) {\n return null;\n }\n var sldList = SLD.list[domain.slice(tldOffset+1)];\n if (!sldList) {\n return null;\n }\n if (sldList.indexOf(' ' + domain.slice(sldOffset+1, tldOffset) + ' ') < 0) {\n return null;\n }\n return domain.slice(sldOffset+1);\n },\n noConflict: function(){\n if (root.SecondLevelDomains === this) {\n root.SecondLevelDomains = _SecondLevelDomains;\n }\n return this;\n }\n };\n\n return SLD;\n}));\n", "/*!\n * URI.js - Mutating URLs\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory(require('./punycode'), require('./IPv6'), require('./SecondLevelDomains'));\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['./punycode', './IPv6', './SecondLevelDomains'], factory);\n } else {\n // Browser globals (root is window)\n root.URI = factory(root.punycode, root.IPv6, root.SecondLevelDomains, root);\n }\n}(this, function (punycode, IPv6, SLD, root) {\n 'use strict';\n /*global location, escape, unescape */\n // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n /*jshint camelcase: false */\n\n // save current URI variable, if any\n var _URI = root && root.URI;\n\n function URI(url, base) {\n var _urlSupplied = arguments.length >= 1;\n var _baseSupplied = arguments.length >= 2;\n\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof URI)) {\n if (_urlSupplied) {\n if (_baseSupplied) {\n return new URI(url, base);\n }\n\n return new URI(url);\n }\n\n return new URI();\n }\n\n if (url === undefined) {\n if (_urlSupplied) {\n throw new TypeError('undefined is not a valid argument for URI');\n }\n\n if (typeof location !== 'undefined') {\n url = location.href + '';\n } else {\n url = '';\n }\n }\n\n if (url === null) {\n if (_urlSupplied) {\n throw new TypeError('null is not a valid argument for URI');\n }\n }\n\n this.href(url);\n\n // resolve to base according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#constructor\n if (base !== undefined) {\n return this.absoluteTo(base);\n }\n\n return this;\n }\n\n function isInteger(value) {\n return /^[0-9]+$/.test(value);\n }\n\n URI.version = '1.19.11';\n\n var p = URI.prototype;\n var hasOwn = Object.prototype.hasOwnProperty;\n\n function escapeRegEx(string) {\n // https://github.com/medialize/URI.js/commit/85ac21783c11f8ccab06106dba9735a31a86924d#commitcomment-821963\n return string.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function getType(value) {\n // IE8 doesn't return [Object Undefined] but [Object Object] for undefined value\n if (value === undefined) {\n return 'Undefined';\n }\n\n return String(Object.prototype.toString.call(value)).slice(8, -1);\n }\n\n function isArray(obj) {\n return getType(obj) === 'Array';\n }\n\n function filterArrayValues(data, value) {\n var lookup = {};\n var i, length;\n\n if (getType(value) === 'RegExp') {\n lookup = null;\n } else if (isArray(value)) {\n for (i = 0, length = value.length; i < length; i++) {\n lookup[value[i]] = true;\n }\n } else {\n lookup[value] = true;\n }\n\n for (i = 0, length = data.length; i < length; i++) {\n /*jshint laxbreak: true */\n var _match = lookup && lookup[data[i]] !== undefined\n || !lookup && value.test(data[i]);\n /*jshint laxbreak: false */\n if (_match) {\n data.splice(i, 1);\n length--;\n i--;\n }\n }\n\n return data;\n }\n\n function arrayContains(list, value) {\n var i, length;\n\n // value may be string, number, array, regexp\n if (isArray(value)) {\n // Note: this can be optimized to O(n) (instead of current O(m * n))\n for (i = 0, length = value.length; i < length; i++) {\n if (!arrayContains(list, value[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n var _type = getType(value);\n for (i = 0, length = list.length; i < length; i++) {\n if (_type === 'RegExp') {\n if (typeof list[i] === 'string' && list[i].match(value)) {\n return true;\n }\n } else if (list[i] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n function arraysEqual(one, two) {\n if (!isArray(one) || !isArray(two)) {\n return false;\n }\n\n // arrays can't be equal if they have different amount of content\n if (one.length !== two.length) {\n return false;\n }\n\n one.sort();\n two.sort();\n\n for (var i = 0, l = one.length; i < l; i++) {\n if (one[i] !== two[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n function trimSlashes(text) {\n var trim_expression = /^\\/+|\\/+$/g;\n return text.replace(trim_expression, '');\n }\n\n URI._parts = function() {\n return {\n protocol: null,\n username: null,\n password: null,\n hostname: null,\n urn: null,\n port: null,\n path: null,\n query: null,\n fragment: null,\n // state\n preventInvalidHostname: URI.preventInvalidHostname,\n duplicateQueryParameters: URI.duplicateQueryParameters,\n escapeQuerySpace: URI.escapeQuerySpace\n };\n };\n // state: throw on invalid hostname\n // see https://github.com/medialize/URI.js/pull/345\n // and https://github.com/medialize/URI.js/issues/354\n URI.preventInvalidHostname = false;\n // state: allow duplicate query parameters (a=1&a=1)\n URI.duplicateQueryParameters = false;\n // state: replaces + with %20 (space in query strings)\n URI.escapeQuerySpace = true;\n // static properties\n URI.protocol_expression = /^[a-z][a-z0-9.+-]*$/i;\n URI.idn_expression = /[^a-z0-9\\._-]/i;\n URI.punycode_expression = /(xn--)/i;\n // well, 333.444.555.666 matches, but it sure ain't no IPv4 - do we care?\n URI.ip4_expression = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\n // credits to Rich Brown\n // source: http://forums.intermapper.com/viewtopic.php?p=1096#1096\n // specification: http://www.ietf.org/rfc/rfc4291.txt\n URI.ip6_expression = /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/;\n // expression used is \"gruber revised\" (@gruber v2) determined to be the\n // best solution in a regex-golf we did a couple of ages ago at\n // * http://mathiasbynens.be/demo/url-regex\n // * http://rodneyrehm.de/t/url-regex.html\n URI.find_uri_expression = /\\b((?:[a-z][\\w-]+:(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?\u00AB\u00BB\u201C\u201D\u2018\u2019]))/ig;\n URI.findUri = {\n // valid \"scheme://\" or \"www.\"\n start: /\\b(?:([a-z][a-z0-9.+-]*:\\/\\/)|www\\.)/gi,\n // everything up to the next whitespace\n end: /[\\s\\r\\n]|$/,\n // trim trailing punctuation captured by end RegExp\n trim: /[`!()\\[\\]{};:'\".,<>?\u00AB\u00BB\u201C\u201D\u201E\u2018\u2019]+$/,\n // balanced parens inclusion (), [], {}, <>\n parens: /(\\([^\\)]*\\)|\\[[^\\]]*\\]|\\{[^}]*\\}|<[^>]*>)/g,\n };\n URI.leading_whitespace_expression = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n URI.ascii_tab_whitespace = /[\\u0009\\u000A\\u000D]+/g\n // http://www.iana.org/assignments/uri-schemes.html\n // http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports\n URI.defaultPorts = {\n http: '80',\n https: '443',\n ftp: '21',\n gopher: '70',\n ws: '80',\n wss: '443'\n };\n // list of protocols which always require a hostname\n URI.hostProtocols = [\n 'http',\n 'https'\n ];\n\n // allowed hostname characters according to RFC 3986\n // ALPHA DIGIT \"-\" \".\" \"_\" \"~\" \"!\" \"$\" \"&\" \"'\" \"(\" \")\" \"*\" \"+\" \",\" \";\" \"=\" %encoded\n // I've never seen a (non-IDN) hostname other than: ALPHA DIGIT . - _\n URI.invalid_hostname_characters = /[^a-zA-Z0-9\\.\\-:_]/;\n // map DOM Elements to their URI attribute\n URI.domAttributes = {\n 'a': 'href',\n 'blockquote': 'cite',\n 'link': 'href',\n 'base': 'href',\n 'script': 'src',\n 'form': 'action',\n 'img': 'src',\n 'area': 'href',\n 'iframe': 'src',\n 'embed': 'src',\n 'source': 'src',\n 'track': 'src',\n 'input': 'src', // but only if type=\"image\"\n 'audio': 'src',\n 'video': 'src'\n };\n URI.getDomAttribute = function(node) {\n if (!node || !node.nodeName) {\n return undefined;\n }\n\n var nodeName = node.nodeName.toLowerCase();\n // should only expose src for type=\"image\"\n if (nodeName === 'input' && node.type !== 'image') {\n return undefined;\n }\n\n return URI.domAttributes[nodeName];\n };\n\n function escapeForDumbFirefox36(value) {\n // https://github.com/medialize/URI.js/issues/91\n return escape(value);\n }\n\n // encoding / decoding according to RFC3986\n function strictEncodeURIComponent(string) {\n // see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent\n return encodeURIComponent(string)\n .replace(/[!'()*]/g, escapeForDumbFirefox36)\n .replace(/\\*/g, '%2A');\n }\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n URI.iso8859 = function() {\n URI.encode = escape;\n URI.decode = unescape;\n };\n URI.unicode = function() {\n URI.encode = strictEncodeURIComponent;\n URI.decode = decodeURIComponent;\n };\n URI.characters = {\n pathname: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(24|26|2B|2C|3B|3D|3A|40)/ig,\n map: {\n // -._~!'()*\n '%24': '$',\n '%26': '&',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%3A': ':',\n '%40': '@'\n }\n },\n decode: {\n expression: /[\\/\\?#]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23'\n }\n }\n },\n reserved: {\n encode: {\n // RFC3986 2.1: For consistency, URI producers and normalizers should\n // use uppercase hexadecimal digits for all percent-encodings.\n expression: /%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,\n map: {\n // gen-delims\n '%3A': ':',\n '%2F': '/',\n '%3F': '?',\n '%23': '#',\n '%5B': '[',\n '%5D': ']',\n '%40': '@',\n // sub-delims\n '%21': '!',\n '%24': '$',\n '%26': '&',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '='\n }\n }\n },\n urnpath: {\n // The characters under `encode` are the characters called out by RFC 2141 as being acceptable\n // for usage in a URN. RFC2141 also calls out \"-\", \".\", and \"_\" as acceptable characters, but\n // these aren't encoded by encodeURIComponent, so we don't have to call them out here. Also\n // note that the colon character is not featured in the encoding map; this is because URI.js\n // gives the colons in URNs semantic meaning as the delimiters of path segements, and so it\n // should not appear unencoded in a segment itself.\n // See also the note above about RFC3986 and capitalalized hex digits.\n encode: {\n expression: /%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,\n map: {\n '%21': '!',\n '%24': '$',\n '%27': '\\'',\n '%28': '(',\n '%29': ')',\n '%2A': '*',\n '%2B': '+',\n '%2C': ',',\n '%3B': ';',\n '%3D': '=',\n '%40': '@'\n }\n },\n // These characters are the characters called out by RFC2141 as \"reserved\" characters that\n // should never appear in a URN, plus the colon character (see note above).\n decode: {\n expression: /[\\/\\?#:]/g,\n map: {\n '/': '%2F',\n '?': '%3F',\n '#': '%23',\n ':': '%3A'\n }\n }\n }\n };\n URI.encodeQuery = function(string, escapeQuerySpace) {\n var escaped = URI.encode(string + '');\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n return escapeQuerySpace ? escaped.replace(/%20/g, '+') : escaped;\n };\n URI.decodeQuery = function(string, escapeQuerySpace) {\n string += '';\n if (escapeQuerySpace === undefined) {\n escapeQuerySpace = URI.escapeQuerySpace;\n }\n\n try {\n return URI.decode(escapeQuerySpace ? string.replace(/\\+/g, '%20') : string);\n } catch(e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n // generate encode/decode path functions\n var _parts = {'encode':'encode', 'decode':'decode'};\n var _part;\n var generateAccessor = function(_group, _part) {\n return function(string) {\n try {\n return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function(c) {\n return URI.characters[_group][_part].map[c];\n });\n } catch (e) {\n // we're not going to mess with weird encodings,\n // give up and return the undecoded original string\n // see https://github.com/medialize/URI.js/issues/87\n // see https://github.com/medialize/URI.js/issues/92\n return string;\n }\n };\n };\n\n for (_part in _parts) {\n URI[_part + 'PathSegment'] = generateAccessor('pathname', _parts[_part]);\n URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]);\n }\n\n var generateSegmentedPathFunction = function(_sep, _codingFuncName, _innerCodingFuncName) {\n return function(string) {\n // Why pass in names of functions, rather than the function objects themselves? The\n // definitions of some functions (but in particular, URI.decode) will occasionally change due\n // to URI.js having ISO8859 and Unicode modes. Passing in the name and getting it will ensure\n // that the functions we use here are \"fresh\".\n var actualCodingFunc;\n if (!_innerCodingFuncName) {\n actualCodingFunc = URI[_codingFuncName];\n } else {\n actualCodingFunc = function(string) {\n return URI[_codingFuncName](URI[_innerCodingFuncName](string));\n };\n }\n\n var segments = (string + '').split(_sep);\n\n for (var i = 0, length = segments.length; i < length; i++) {\n segments[i] = actualCodingFunc(segments[i]);\n }\n\n return segments.join(_sep);\n };\n };\n\n // This takes place outside the above loop because we don't want, e.g., encodeUrnPath functions.\n URI.decodePath = generateSegmentedPathFunction('/', 'decodePathSegment');\n URI.decodeUrnPath = generateSegmentedPathFunction(':', 'decodeUrnPathSegment');\n URI.recodePath = generateSegmentedPathFunction('/', 'encodePathSegment', 'decode');\n URI.recodeUrnPath = generateSegmentedPathFunction(':', 'encodeUrnPathSegment', 'decode');\n\n URI.encodeReserved = generateAccessor('reserved', 'encode');\n\n URI.parse = function(string, parts) {\n var pos;\n if (!parts) {\n parts = {\n preventInvalidHostname: URI.preventInvalidHostname\n };\n }\n\n string = string.replace(URI.leading_whitespace_expression, '')\n // https://infra.spec.whatwg.org/#ascii-tab-or-newline\n string = string.replace(URI.ascii_tab_whitespace, '')\n\n // [protocol\"://\"[username[\":\"password]\"@\"]hostname[\":\"port]\"/\"?][path][\"?\"querystring][\"#\"fragment]\n\n // extract fragment\n pos = string.indexOf('#');\n if (pos > -1) {\n // escaping?\n parts.fragment = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // extract query\n pos = string.indexOf('?');\n if (pos > -1) {\n // escaping?\n parts.query = string.substring(pos + 1) || null;\n string = string.substring(0, pos);\n }\n\n // slashes and backslashes have lost all meaning for the web protocols (https, http, wss, ws)\n string = string.replace(/^(https?|ftp|wss?)?:+[/\\\\]*/i, '$1://');\n // slashes and backslashes have lost all meaning for scheme relative URLs\n string = string.replace(/^[/\\\\]{2,}/i, '//');\n\n // extract protocol\n if (string.substring(0, 2) === '//') {\n // relative-scheme\n parts.protocol = null;\n string = string.substring(2);\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n pos = string.indexOf(':');\n if (pos > -1) {\n parts.protocol = string.substring(0, pos) || null;\n if (parts.protocol && !parts.protocol.match(URI.protocol_expression)) {\n // : may be within the path\n parts.protocol = undefined;\n } else if (string.substring(pos + 1, pos + 3).replace(/\\\\/g, '/') === '//') {\n string = string.substring(pos + 3);\n\n // extract \"user:pass@host:port\"\n string = URI.parseAuthority(string, parts);\n } else {\n string = string.substring(pos + 1);\n parts.urn = true;\n }\n }\n }\n\n // what's left must be the path\n parts.path = string;\n\n // and we're done\n return parts;\n };\n URI.parseHost = function(string, parts) {\n if (!string) {\n string = '';\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://github.com/joyent/node/blob/386fd24f49b0e9d1a8a076592a404168faeecc34/lib/url.js#L115-L124\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n // https://github.com/medialize/URI.js/pull/233\n string = string.replace(/\\\\/g, '/');\n\n // extract host:port\n var pos = string.indexOf('/');\n var bracketPos;\n var t;\n\n if (pos === -1) {\n pos = string.length;\n }\n\n if (string.charAt(0) === '[') {\n // IPv6 host - http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-04#section-6\n // I claim most client software breaks on IPv6 anyways. To simplify things, URI only accepts\n // IPv6+port in the format [2001:db8::1]:80 (for the time being)\n bracketPos = string.indexOf(']');\n parts.hostname = string.substring(1, bracketPos) || null;\n parts.port = string.substring(bracketPos + 2, pos) || null;\n if (parts.port === '/') {\n parts.port = null;\n }\n } else {\n var firstColon = string.indexOf(':');\n var firstSlash = string.indexOf('/');\n var nextColon = string.indexOf(':', firstColon + 1);\n if (nextColon !== -1 && (firstSlash === -1 || nextColon < firstSlash)) {\n // IPv6 host contains multiple colons - but no port\n // this notation is actually not allowed by RFC 3986, but we're a liberal parser\n parts.hostname = string.substring(0, pos) || null;\n parts.port = null;\n } else {\n t = string.substring(0, pos).split(':');\n parts.hostname = t[0] || null;\n parts.port = t[1] || null;\n }\n }\n\n if (parts.hostname && string.substring(pos).charAt(0) !== '/') {\n pos++;\n string = '/' + string;\n }\n\n if (parts.preventInvalidHostname) {\n URI.ensureValidHostname(parts.hostname, parts.protocol);\n }\n\n if (parts.port) {\n URI.ensureValidPort(parts.port);\n }\n\n return string.substring(pos) || '/';\n };\n URI.parseAuthority = function(string, parts) {\n string = URI.parseUserinfo(string, parts);\n return URI.parseHost(string, parts);\n };\n URI.parseUserinfo = function(string, parts) {\n // extract username:password\n var _string = string\n var firstBackSlash = string.indexOf('\\\\');\n if (firstBackSlash !== -1) {\n string = string.replace(/\\\\/g, '/')\n }\n var firstSlash = string.indexOf('/');\n var pos = string.lastIndexOf('@', firstSlash > -1 ? firstSlash : string.length - 1);\n var t;\n\n // authority@ must come before /path or \\path\n if (pos > -1 && (firstSlash === -1 || pos < firstSlash)) {\n t = string.substring(0, pos).split(':');\n parts.username = t[0] ? URI.decode(t[0]) : null;\n t.shift();\n parts.password = t[0] ? URI.decode(t.join(':')) : null;\n string = _string.substring(pos + 1);\n } else {\n parts.username = null;\n parts.password = null;\n }\n\n return string;\n };\n URI.parseQuery = function(string, escapeQuerySpace) {\n if (!string) {\n return {};\n }\n\n // throw out the funky business - \"?\"[name\"=\"value\"&\"]+\n string = string.replace(/&+/g, '&').replace(/^\\?*&*|&+$/g, '');\n\n if (!string) {\n return {};\n }\n\n var items = {};\n var splits = string.split('&');\n var length = splits.length;\n var v, name, value;\n\n for (var i = 0; i < length; i++) {\n v = splits[i].split('=');\n name = URI.decodeQuery(v.shift(), escapeQuerySpace);\n // no \"=\" is null according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#collect-url-parameters\n value = v.length ? URI.decodeQuery(v.join('='), escapeQuerySpace) : null;\n\n if (name === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(items, name)) {\n if (typeof items[name] === 'string' || items[name] === null) {\n items[name] = [items[name]];\n }\n\n items[name].push(value);\n } else {\n items[name] = value;\n }\n }\n\n return items;\n };\n\n URI.build = function(parts) {\n var t = '';\n var requireAbsolutePath = false\n\n if (parts.protocol) {\n t += parts.protocol + ':';\n }\n\n if (!parts.urn && (t || parts.hostname)) {\n t += '//';\n requireAbsolutePath = true\n }\n\n t += (URI.buildAuthority(parts) || '');\n\n if (typeof parts.path === 'string') {\n if (parts.path.charAt(0) !== '/' && requireAbsolutePath) {\n t += '/';\n }\n\n t += parts.path;\n }\n\n if (typeof parts.query === 'string' && parts.query) {\n t += '?' + parts.query;\n }\n\n if (typeof parts.fragment === 'string' && parts.fragment) {\n t += '#' + parts.fragment;\n }\n return t;\n };\n URI.buildHost = function(parts) {\n var t = '';\n\n if (!parts.hostname) {\n return '';\n } else if (URI.ip6_expression.test(parts.hostname)) {\n t += '[' + parts.hostname + ']';\n } else {\n t += parts.hostname;\n }\n\n if (parts.port) {\n t += ':' + parts.port;\n }\n\n return t;\n };\n URI.buildAuthority = function(parts) {\n return URI.buildUserinfo(parts) + URI.buildHost(parts);\n };\n URI.buildUserinfo = function(parts) {\n var t = '';\n\n if (parts.username) {\n t += URI.encode(parts.username);\n }\n\n if (parts.password) {\n t += ':' + URI.encode(parts.password);\n }\n\n if (t) {\n t += '@';\n }\n\n return t;\n };\n URI.buildQuery = function(data, duplicateQueryParameters, escapeQuerySpace) {\n // according to http://tools.ietf.org/html/rfc3986 or http://labs.apache.org/webarch/uri/rfc/rfc3986.html\n // being \u00BB-._~!$&'()*+,;=:@/?\u00AB %HEX and alnum are allowed\n // the RFC explicitly states ?/foo being a valid use case, no mention of parameter syntax!\n // URI.js treats the query string as being application/x-www-form-urlencoded\n // see http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type\n\n var t = '';\n var unique, key, i, length;\n for (key in data) {\n if (key === '__proto__') {\n // ignore attempt at exploiting JavaScript internals\n continue;\n } else if (hasOwn.call(data, key)) {\n if (isArray(data[key])) {\n unique = {};\n for (i = 0, length = data[key].length; i < length; i++) {\n if (data[key][i] !== undefined && unique[data[key][i] + ''] === undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key][i], escapeQuerySpace);\n if (duplicateQueryParameters !== true) {\n unique[data[key][i] + ''] = true;\n }\n }\n }\n } else if (data[key] !== undefined) {\n t += '&' + URI.buildQueryParameter(key, data[key], escapeQuerySpace);\n }\n }\n }\n\n return t.substring(1);\n };\n URI.buildQueryParameter = function(name, value, escapeQuerySpace) {\n // http://www.w3.org/TR/REC-html40/interact/forms.html#form-content-type -- application/x-www-form-urlencoded\n // don't append \"=\" for null values, according to http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html#url-parameter-serialization\n return URI.encodeQuery(name, escapeQuerySpace) + (value !== null ? '=' + URI.encodeQuery(value, escapeQuerySpace) : '');\n };\n\n URI.addQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.addQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (data[name] === undefined) {\n data[name] = value;\n return;\n } else if (typeof data[name] === 'string') {\n data[name] = [data[name]];\n }\n\n if (!isArray(value)) {\n value = [value];\n }\n\n data[name] = (data[name] || []).concat(value);\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.setQuery = function(data, name, value) {\n if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n URI.setQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n data[name] = value === undefined ? null : value;\n } else {\n throw new TypeError('URI.setQuery() accepts an object, string as the name parameter');\n }\n };\n\n URI.removeQuery = function(data, name, value) {\n var i, length, key;\n\n if (isArray(name)) {\n for (i = 0, length = name.length; i < length; i++) {\n data[name[i]] = undefined;\n }\n } else if (getType(name) === 'RegExp') {\n for (key in data) {\n if (name.test(key)) {\n data[key] = undefined;\n }\n }\n } else if (typeof name === 'object') {\n for (key in name) {\n if (hasOwn.call(name, key)) {\n URI.removeQuery(data, key, name[key]);\n }\n }\n } else if (typeof name === 'string') {\n if (value !== undefined) {\n if (getType(value) === 'RegExp') {\n if (!isArray(data[name]) && value.test(data[name])) {\n data[name] = undefined;\n } else {\n data[name] = filterArrayValues(data[name], value);\n }\n } else if (data[name] === String(value) && (!isArray(value) || value.length === 1)) {\n data[name] = undefined;\n } else if (isArray(data[name])) {\n data[name] = filterArrayValues(data[name], value);\n }\n } else {\n data[name] = undefined;\n }\n } else {\n throw new TypeError('URI.removeQuery() accepts an object, string, RegExp as the first parameter');\n }\n };\n URI.hasQuery = function(data, name, value, withinArray) {\n switch (getType(name)) {\n case 'String':\n // Nothing to do here\n break;\n\n case 'RegExp':\n for (var key in data) {\n if (hasOwn.call(data, key)) {\n if (name.test(key) && (value === undefined || URI.hasQuery(data, key, value))) {\n return true;\n }\n }\n }\n\n return false;\n\n case 'Object':\n for (var _key in name) {\n if (hasOwn.call(name, _key)) {\n if (!URI.hasQuery(data, _key, name[_key])) {\n return false;\n }\n }\n }\n\n return true;\n\n default:\n throw new TypeError('URI.hasQuery() accepts a string, regular expression or object as the name parameter');\n }\n\n switch (getType(value)) {\n case 'Undefined':\n // true if exists (but may be empty)\n return name in data; // data[name] !== undefined;\n\n case 'Boolean':\n // true if exists and non-empty\n var _booly = Boolean(isArray(data[name]) ? data[name].length : data[name]);\n return value === _booly;\n\n case 'Function':\n // allow complex comparison\n return !!value(data[name], name, data);\n\n case 'Array':\n if (!isArray(data[name])) {\n return false;\n }\n\n var op = withinArray ? arrayContains : arraysEqual;\n return op(data[name], value);\n\n case 'RegExp':\n if (!isArray(data[name])) {\n return Boolean(data[name] && data[name].match(value));\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n case 'Number':\n value = String(value);\n /* falls through */\n case 'String':\n if (!isArray(data[name])) {\n return data[name] === value;\n }\n\n if (!withinArray) {\n return false;\n }\n\n return arrayContains(data[name], value);\n\n default:\n throw new TypeError('URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter');\n }\n };\n\n\n URI.joinPaths = function() {\n var input = [];\n var segments = [];\n var nonEmptySegments = 0;\n\n for (var i = 0; i < arguments.length; i++) {\n var url = new URI(arguments[i]);\n input.push(url);\n var _segments = url.segment();\n for (var s = 0; s < _segments.length; s++) {\n if (typeof _segments[s] === 'string') {\n segments.push(_segments[s]);\n }\n\n if (_segments[s]) {\n nonEmptySegments++;\n }\n }\n }\n\n if (!segments.length || !nonEmptySegments) {\n return new URI('');\n }\n\n var uri = new URI('').segment(segments);\n\n if (input[0].path() === '' || input[0].path().slice(0, 1) === '/') {\n uri.path('/' + uri.path());\n }\n\n return uri.normalize();\n };\n\n URI.commonPath = function(one, two) {\n var length = Math.min(one.length, two.length);\n var pos;\n\n // find first non-matching character\n for (pos = 0; pos < length; pos++) {\n if (one.charAt(pos) !== two.charAt(pos)) {\n pos--;\n break;\n }\n }\n\n if (pos < 1) {\n return one.charAt(0) === two.charAt(0) && one.charAt(0) === '/' ? '/' : '';\n }\n\n // revert to last /\n if (one.charAt(pos) !== '/' || two.charAt(pos) !== '/') {\n pos = one.substring(0, pos).lastIndexOf('/');\n }\n\n return one.substring(0, pos + 1);\n };\n\n URI.withinString = function(string, callback, options) {\n options || (options = {});\n var _start = options.start || URI.findUri.start;\n var _end = options.end || URI.findUri.end;\n var _trim = options.trim || URI.findUri.trim;\n var _parens = options.parens || URI.findUri.parens;\n var _attributeOpen = /[a-z0-9-]=[\"']?$/i;\n\n _start.lastIndex = 0;\n while (true) {\n var match = _start.exec(string);\n if (!match) {\n break;\n }\n\n var start = match.index;\n if (options.ignoreHtml) {\n // attribut(e=[\"']?$)\n var attributeOpen = string.slice(Math.max(start - 3, 0), start);\n if (attributeOpen && _attributeOpen.test(attributeOpen)) {\n continue;\n }\n }\n\n var end = start + string.slice(start).search(_end);\n var slice = string.slice(start, end);\n // make sure we include well balanced parens\n var parensEnd = -1;\n while (true) {\n var parensMatch = _parens.exec(slice);\n if (!parensMatch) {\n break;\n }\n\n var parensMatchEnd = parensMatch.index + parensMatch[0].length;\n parensEnd = Math.max(parensEnd, parensMatchEnd);\n }\n\n if (parensEnd > -1) {\n slice = slice.slice(0, parensEnd) + slice.slice(parensEnd).replace(_trim, '');\n } else {\n slice = slice.replace(_trim, '');\n }\n\n if (slice.length <= match[0].length) {\n // the extract only contains the starting marker of a URI,\n // e.g. \"www\" or \"http://\"\n continue;\n }\n\n if (options.ignore && options.ignore.test(slice)) {\n continue;\n }\n\n end = start + slice.length;\n var result = callback(slice, start, end, string);\n if (result === undefined) {\n _start.lastIndex = end;\n continue;\n }\n\n result = String(result);\n string = string.slice(0, start) + result + string.slice(end);\n _start.lastIndex = start + result.length;\n }\n\n _start.lastIndex = 0;\n return string;\n };\n\n URI.ensureValidHostname = function(v, protocol) {\n // Theoretically URIs allow percent-encoding in Hostnames (according to RFC 3986)\n // they are not part of DNS and therefore ignored by URI.js\n\n var hasHostname = !!v; // not null and not an empty string\n var hasProtocol = !!protocol;\n var rejectEmptyHostname = false;\n\n if (hasProtocol) {\n rejectEmptyHostname = arrayContains(URI.hostProtocols, protocol);\n }\n\n if (rejectEmptyHostname && !hasHostname) {\n throw new TypeError('Hostname cannot be empty, if protocol is ' + protocol);\n } else if (v && v.match(URI.invalid_hostname_characters)) {\n // test punycode\n if (!punycode) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');\n }\n if (punycode.toASCII(v).match(URI.invalid_hostname_characters)) {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-:_]');\n }\n }\n };\n\n URI.ensureValidPort = function (v) {\n if (!v) {\n return;\n }\n\n var port = Number(v);\n if (isInteger(port) && (port > 0) && (port < 65536)) {\n return;\n }\n\n throw new TypeError('Port \"' + v + '\" is not a valid port');\n };\n\n // noConflict\n URI.noConflict = function(removeAll) {\n if (removeAll) {\n var unconflicted = {\n URI: this.noConflict()\n };\n\n if (root.URITemplate && typeof root.URITemplate.noConflict === 'function') {\n unconflicted.URITemplate = root.URITemplate.noConflict();\n }\n\n if (root.IPv6 && typeof root.IPv6.noConflict === 'function') {\n unconflicted.IPv6 = root.IPv6.noConflict();\n }\n\n if (root.SecondLevelDomains && typeof root.SecondLevelDomains.noConflict === 'function') {\n unconflicted.SecondLevelDomains = root.SecondLevelDomains.noConflict();\n }\n\n return unconflicted;\n } else if (root.URI === this) {\n root.URI = _URI;\n }\n\n return this;\n };\n\n p.build = function(deferBuild) {\n if (deferBuild === true) {\n this._deferred_build = true;\n } else if (deferBuild === undefined || this._deferred_build) {\n this._string = URI.build(this._parts);\n this._deferred_build = false;\n }\n\n return this;\n };\n\n p.clone = function() {\n return new URI(this);\n };\n\n p.valueOf = p.toString = function() {\n return this.build(false)._string;\n };\n\n\n function generateSimpleAccessor(_part){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n this._parts[_part] = v || null;\n this.build(!build);\n return this;\n }\n };\n }\n\n function generatePrefixAccessor(_part, _key){\n return function(v, build) {\n if (v === undefined) {\n return this._parts[_part] || '';\n } else {\n if (v !== null) {\n v = v + '';\n if (v.charAt(0) === _key) {\n v = v.substring(1);\n }\n }\n\n this._parts[_part] = v;\n this.build(!build);\n return this;\n }\n };\n }\n\n p.protocol = generateSimpleAccessor('protocol');\n p.username = generateSimpleAccessor('username');\n p.password = generateSimpleAccessor('password');\n p.hostname = generateSimpleAccessor('hostname');\n p.port = generateSimpleAccessor('port');\n p.query = generatePrefixAccessor('query', '?');\n p.fragment = generatePrefixAccessor('fragment', '#');\n\n p.search = function(v, build) {\n var t = this.query(v, build);\n return typeof t === 'string' && t.length ? ('?' + t) : t;\n };\n p.hash = function(v, build) {\n var t = this.fragment(v, build);\n return typeof t === 'string' && t.length ? ('#' + t) : t;\n };\n\n p.pathname = function(v, build) {\n if (v === undefined || v === true) {\n var res = this._parts.path || (this._parts.hostname ? '/' : '');\n return v ? (this._parts.urn ? URI.decodeUrnPath : URI.decodePath)(res) : res;\n } else {\n if (this._parts.urn) {\n this._parts.path = v ? URI.recodeUrnPath(v) : '';\n } else {\n this._parts.path = v ? URI.recodePath(v) : '/';\n }\n this.build(!build);\n return this;\n }\n };\n p.path = p.pathname;\n p.href = function(href, build) {\n var key;\n\n if (href === undefined) {\n return this.toString();\n }\n\n this._string = '';\n this._parts = URI._parts();\n\n var _URI = href instanceof URI;\n var _object = typeof href === 'object' && (href.hostname || href.path || href.pathname);\n if (href.nodeName) {\n var attribute = URI.getDomAttribute(href);\n href = href[attribute] || '';\n _object = false;\n }\n\n // window.location is reported to be an object, but it's not the sort\n // of object we're looking for:\n // * location.protocol ends with a colon\n // * location.query != object.search\n // * location.hash != object.fragment\n // simply serializing the unknown object should do the trick\n // (for location, not for everything...)\n if (!_URI && _object && href.pathname !== undefined) {\n href = href.toString();\n }\n\n if (typeof href === 'string' || href instanceof String) {\n this._parts = URI.parse(String(href), this._parts);\n } else if (_URI || _object) {\n var src = _URI ? href._parts : href;\n for (key in src) {\n if (key === 'query') { continue; }\n if (hasOwn.call(this._parts, key)) {\n this._parts[key] = src[key];\n }\n }\n if (src.query) {\n this.query(src.query, false);\n }\n } else {\n throw new TypeError('invalid input');\n }\n\n this.build(!build);\n return this;\n };\n\n // identification accessors\n p.is = function(what) {\n var ip = false;\n var ip4 = false;\n var ip6 = false;\n var name = false;\n var sld = false;\n var idn = false;\n var punycode = false;\n var relative = !this._parts.urn;\n\n if (this._parts.hostname) {\n relative = false;\n ip4 = URI.ip4_expression.test(this._parts.hostname);\n ip6 = URI.ip6_expression.test(this._parts.hostname);\n ip = ip4 || ip6;\n name = !ip;\n sld = name && SLD && SLD.has(this._parts.hostname);\n idn = name && URI.idn_expression.test(this._parts.hostname);\n punycode = name && URI.punycode_expression.test(this._parts.hostname);\n }\n\n switch (what.toLowerCase()) {\n case 'relative':\n return relative;\n\n case 'absolute':\n return !relative;\n\n // hostname identification\n case 'domain':\n case 'name':\n return name;\n\n case 'sld':\n return sld;\n\n case 'ip':\n return ip;\n\n case 'ip4':\n case 'ipv4':\n case 'inet4':\n return ip4;\n\n case 'ip6':\n case 'ipv6':\n case 'inet6':\n return ip6;\n\n case 'idn':\n return idn;\n\n case 'url':\n return !this._parts.urn;\n\n case 'urn':\n return !!this._parts.urn;\n\n case 'punycode':\n return punycode;\n }\n\n return null;\n };\n\n // component specific input validation\n var _protocol = p.protocol;\n var _port = p.port;\n var _hostname = p.hostname;\n\n p.protocol = function(v, build) {\n if (v) {\n // accept trailing ://\n v = v.replace(/:(\\/\\/)?$/, '');\n\n if (!v.match(URI.protocol_expression)) {\n throw new TypeError('Protocol \"' + v + '\" contains characters other than [A-Z0-9.+-] or doesn\\'t start with [A-Z]');\n }\n }\n\n return _protocol.call(this, v, build);\n };\n p.scheme = p.protocol;\n p.port = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n if (v === 0) {\n v = null;\n }\n\n if (v) {\n v += '';\n if (v.charAt(0) === ':') {\n v = v.substring(1);\n }\n\n URI.ensureValidPort(v);\n }\n }\n return _port.call(this, v, build);\n };\n p.hostname = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v !== undefined) {\n var x = { preventInvalidHostname: this._parts.preventInvalidHostname };\n var res = URI.parseHost(v, x);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n v = x.hostname;\n if (this._parts.preventInvalidHostname) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n }\n\n return _hostname.call(this, v, build);\n };\n\n // compound accessors\n p.origin = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var protocol = this.protocol();\n var authority = this.authority();\n if (!authority) {\n return '';\n }\n\n return (protocol ? protocol + '://' : '') + this.authority();\n } else {\n var origin = URI(v);\n this\n .protocol(origin.protocol())\n .authority(origin.authority())\n .build(!build);\n return this;\n }\n };\n p.host = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildHost(this._parts) : '';\n } else {\n var res = URI.parseHost(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.authority = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n return this._parts.hostname ? URI.buildAuthority(this._parts) : '';\n } else {\n var res = URI.parseAuthority(v, this._parts);\n if (res !== '/') {\n throw new TypeError('Hostname \"' + v + '\" contains characters other than [A-Z0-9.-]');\n }\n\n this.build(!build);\n return this;\n }\n };\n p.userinfo = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined) {\n var t = URI.buildUserinfo(this._parts);\n return t ? t.substring(0, t.length -1) : t;\n } else {\n if (v[v.length-1] !== '@') {\n v += '@';\n }\n\n URI.parseUserinfo(v, this._parts);\n this.build(!build);\n return this;\n }\n };\n p.resource = function(v, build) {\n var parts;\n\n if (v === undefined) {\n return this.path() + this.search() + this.hash();\n }\n\n parts = URI.parse(v);\n this._parts.path = parts.path;\n this._parts.query = parts.query;\n this._parts.fragment = parts.fragment;\n this.build(!build);\n return this;\n };\n\n // fraction accessors\n p.subdomain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n // convenience, return \"www\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // grab domain and add another segment\n var end = this._parts.hostname.length - this.domain().length - 1;\n return this._parts.hostname.substring(0, end) || '';\n } else {\n var e = this._parts.hostname.length - this.domain().length;\n var sub = this._parts.hostname.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(sub));\n\n if (v && v.charAt(v.length - 1) !== '.') {\n v += '.';\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n if (v) {\n URI.ensureValidHostname(v, this._parts.protocol);\n }\n\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.domain = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // convenience, return \"example.org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n // if hostname consists of 1 or 2 segments, it must be the domain\n var t = this._parts.hostname.match(/\\./g);\n if (t && t.length < 2) {\n return this._parts.hostname;\n }\n\n // grab tld and add another segment\n var end = this._parts.hostname.length - this.tld(build).length - 1;\n end = this._parts.hostname.lastIndexOf('.', end -1) + 1;\n return this._parts.hostname.substring(end) || '';\n } else {\n if (!v) {\n throw new TypeError('cannot set domain empty');\n }\n\n if (v.indexOf(':') !== -1) {\n throw new TypeError('Domains cannot contain colons');\n }\n\n URI.ensureValidHostname(v, this._parts.protocol);\n\n if (!this._parts.hostname || this.is('IP')) {\n this._parts.hostname = v;\n } else {\n var replace = new RegExp(escapeRegEx(this.domain()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.tld = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v === 'boolean') {\n build = v;\n v = undefined;\n }\n\n // return \"org\" from \"www.example.org\"\n if (v === undefined) {\n if (!this._parts.hostname || this.is('IP')) {\n return '';\n }\n\n var pos = this._parts.hostname.lastIndexOf('.');\n var tld = this._parts.hostname.substring(pos + 1);\n\n if (build !== true && SLD && SLD.list[tld.toLowerCase()]) {\n return SLD.get(this._parts.hostname) || tld;\n }\n\n return tld;\n } else {\n var replace;\n\n if (!v) {\n throw new TypeError('cannot set TLD empty');\n } else if (v.match(/[^a-zA-Z0-9-]/)) {\n if (SLD && SLD.is(v)) {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n } else {\n throw new TypeError('TLD \"' + v + '\" contains characters other than [A-Z0-9]');\n }\n } else if (!this._parts.hostname || this.is('IP')) {\n throw new ReferenceError('cannot set TLD on non-domain host');\n } else {\n replace = new RegExp(escapeRegEx(this.tld()) + '$');\n this._parts.hostname = this._parts.hostname.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.directory = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path && !this._parts.hostname) {\n return '';\n }\n\n if (this._parts.path === '/') {\n return '/';\n }\n\n var end = this._parts.path.length - this.filename().length - 1;\n var res = this._parts.path.substring(0, end) || (this._parts.hostname ? '/' : '');\n\n return v ? URI.decodePath(res) : res;\n\n } else {\n var e = this._parts.path.length - this.filename().length;\n var directory = this._parts.path.substring(0, e);\n var replace = new RegExp('^' + escapeRegEx(directory));\n\n // fully qualifier directories begin with a slash\n if (!this.is('relative')) {\n if (!v) {\n v = '/';\n }\n\n if (v.charAt(0) !== '/') {\n v = '/' + v;\n }\n }\n\n // directories always end with a slash\n if (v && v.charAt(v.length - 1) !== '/') {\n v += '/';\n }\n\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n this.build(!build);\n return this;\n }\n };\n p.filename = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (typeof v !== 'string') {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var pos = this._parts.path.lastIndexOf('/');\n var res = this._parts.path.substring(pos+1);\n\n return v ? URI.decodePathSegment(res) : res;\n } else {\n var mutatedDirectory = false;\n\n if (v.charAt(0) === '/') {\n v = v.substring(1);\n }\n\n if (v.match(/\\.?\\//)) {\n mutatedDirectory = true;\n }\n\n var replace = new RegExp(escapeRegEx(this.filename()) + '$');\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n\n if (mutatedDirectory) {\n this.normalizePath(build);\n } else {\n this.build(!build);\n }\n\n return this;\n }\n };\n p.suffix = function(v, build) {\n if (this._parts.urn) {\n return v === undefined ? '' : this;\n }\n\n if (v === undefined || v === true) {\n if (!this._parts.path || this._parts.path === '/') {\n return '';\n }\n\n var filename = this.filename();\n var pos = filename.lastIndexOf('.');\n var s, res;\n\n if (pos === -1) {\n return '';\n }\n\n // suffix may only contain alnum characters (yup, I made this up.)\n s = filename.substring(pos+1);\n res = (/^[a-z0-9%]+$/i).test(s) ? s : '';\n return v ? URI.decodePathSegment(res) : res;\n } else {\n if (v.charAt(0) === '.') {\n v = v.substring(1);\n }\n\n var suffix = this.suffix();\n var replace;\n\n if (!suffix) {\n if (!v) {\n return this;\n }\n\n this._parts.path += '.' + URI.recodePath(v);\n } else if (!v) {\n replace = new RegExp(escapeRegEx('.' + suffix) + '$');\n } else {\n replace = new RegExp(escapeRegEx(suffix) + '$');\n }\n\n if (replace) {\n v = URI.recodePath(v);\n this._parts.path = this._parts.path.replace(replace, v);\n }\n\n this.build(!build);\n return this;\n }\n };\n p.segment = function(segment, v, build) {\n var separator = this._parts.urn ? ':' : '/';\n var path = this.path();\n var absolute = path.substring(0, 1) === '/';\n var segments = path.split(separator);\n\n if (segment !== undefined && typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (segment !== undefined && typeof segment !== 'number') {\n throw new Error('Bad segment \"' + segment + '\", must be 0-based integer');\n }\n\n if (absolute) {\n segments.shift();\n }\n\n if (segment < 0) {\n // allow negative indexes to address from the end\n segment = Math.max(segments.length + segment, 0);\n }\n\n if (v === undefined) {\n /*jshint laxbreak: true */\n return segment === undefined\n ? segments\n : segments[segment];\n /*jshint laxbreak: false */\n } else if (segment === null || segments[segment] === undefined) {\n if (isArray(v)) {\n segments = [];\n // collapse empty elements within array\n for (var i=0, l=v.length; i < l; i++) {\n if (!v[i].length && (!segments.length || !segments[segments.length -1].length)) {\n continue;\n }\n\n if (segments.length && !segments[segments.length -1].length) {\n segments.pop();\n }\n\n segments.push(trimSlashes(v[i]));\n }\n } else if (v || typeof v === 'string') {\n v = trimSlashes(v);\n if (segments[segments.length -1] === '') {\n // empty trailing elements have to be overwritten\n // to prevent results such as /foo//bar\n segments[segments.length -1] = v;\n } else {\n segments.push(v);\n }\n }\n } else {\n if (v) {\n segments[segment] = trimSlashes(v);\n } else {\n segments.splice(segment, 1);\n }\n }\n\n if (absolute) {\n segments.unshift('');\n }\n\n return this.path(segments.join(separator), build);\n };\n p.segmentCoded = function(segment, v, build) {\n var segments, i, l;\n\n if (typeof segment !== 'number') {\n build = v;\n v = segment;\n segment = undefined;\n }\n\n if (v === undefined) {\n segments = this.segment(segment, v, build);\n if (!isArray(segments)) {\n segments = segments !== undefined ? URI.decode(segments) : undefined;\n } else {\n for (i = 0, l = segments.length; i < l; i++) {\n segments[i] = URI.decode(segments[i]);\n }\n }\n\n return segments;\n }\n\n if (!isArray(v)) {\n v = (typeof v === 'string' || v instanceof String) ? URI.encode(v) : v;\n } else {\n for (i = 0, l = v.length; i < l; i++) {\n v[i] = URI.encode(v[i]);\n }\n }\n\n return this.segment(segment, v, build);\n };\n\n // mutating query string\n var q = p.query;\n p.query = function(v, build) {\n if (v === true) {\n return URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n } else if (typeof v === 'function') {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n var result = v.call(this, data);\n this._parts.query = URI.buildQuery(result || data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else if (v !== undefined && typeof v !== 'string') {\n this._parts.query = URI.buildQuery(v, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n this.build(!build);\n return this;\n } else {\n return q.call(this, v, build);\n }\n };\n p.setQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n\n if (typeof name === 'string' || name instanceof String) {\n data[name] = value !== undefined ? value : null;\n } else if (typeof name === 'object') {\n for (var key in name) {\n if (hasOwn.call(name, key)) {\n data[key] = name[key];\n }\n }\n } else {\n throw new TypeError('URI.addQuery() accepts an object, string as the name parameter');\n }\n\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.addQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.addQuery(data, name, value === undefined ? null : value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.removeQuery = function(name, value, build) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n URI.removeQuery(data, name, value);\n this._parts.query = URI.buildQuery(data, this._parts.duplicateQueryParameters, this._parts.escapeQuerySpace);\n if (typeof name !== 'string') {\n build = value;\n }\n\n this.build(!build);\n return this;\n };\n p.hasQuery = function(name, value, withinArray) {\n var data = URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace);\n return URI.hasQuery(data, name, value, withinArray);\n };\n p.setSearch = p.setQuery;\n p.addSearch = p.addQuery;\n p.removeSearch = p.removeQuery;\n p.hasSearch = p.hasQuery;\n\n // sanitizing URLs\n p.normalize = function() {\n if (this._parts.urn) {\n return this\n .normalizeProtocol(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n }\n\n return this\n .normalizeProtocol(false)\n .normalizeHostname(false)\n .normalizePort(false)\n .normalizePath(false)\n .normalizeQuery(false)\n .normalizeFragment(false)\n .build();\n };\n p.normalizeProtocol = function(build) {\n if (typeof this._parts.protocol === 'string') {\n this._parts.protocol = this._parts.protocol.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeHostname = function(build) {\n if (this._parts.hostname) {\n if (this.is('IDN') && punycode) {\n this._parts.hostname = punycode.toASCII(this._parts.hostname);\n } else if (this.is('IPv6') && IPv6) {\n this._parts.hostname = IPv6.best(this._parts.hostname);\n }\n\n this._parts.hostname = this._parts.hostname.toLowerCase();\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePort = function(build) {\n // remove port of it's the protocol's default\n if (typeof this._parts.protocol === 'string' && this._parts.port === URI.defaultPorts[this._parts.protocol]) {\n this._parts.port = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizePath = function(build) {\n var _path = this._parts.path;\n if (!_path) {\n return this;\n }\n\n if (this._parts.urn) {\n this._parts.path = URI.recodeUrnPath(this._parts.path);\n this.build(!build);\n return this;\n }\n\n if (this._parts.path === '/') {\n return this;\n }\n\n _path = URI.recodePath(_path);\n\n var _was_relative;\n var _leadingParents = '';\n var _parent, _pos;\n\n // handle relative paths\n if (_path.charAt(0) !== '/') {\n _was_relative = true;\n _path = '/' + _path;\n }\n\n // handle relative files (as opposed to directories)\n if (_path.slice(-3) === '/..' || _path.slice(-2) === '/.') {\n _path += '/';\n }\n\n // resolve simples\n _path = _path\n .replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/')\n .replace(/\\/{2,}/g, '/');\n\n // remember leading parents\n if (_was_relative) {\n _leadingParents = _path.substring(1).match(/^(\\.\\.\\/)+/) || '';\n if (_leadingParents) {\n _leadingParents = _leadingParents[0];\n }\n }\n\n // resolve parents\n while (true) {\n _parent = _path.search(/\\/\\.\\.(\\/|$)/);\n if (_parent === -1) {\n // no more ../ to resolve\n break;\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n _path = _path.substring(3);\n continue;\n }\n\n _pos = _path.substring(0, _parent).lastIndexOf('/');\n if (_pos === -1) {\n _pos = _parent;\n }\n _path = _path.substring(0, _pos) + _path.substring(_parent + 3);\n }\n\n // revert to relative\n if (_was_relative && this.is('relative')) {\n _path = _leadingParents + _path.substring(1);\n }\n\n this._parts.path = _path;\n this.build(!build);\n return this;\n };\n p.normalizePathname = p.normalizePath;\n p.normalizeQuery = function(build) {\n if (typeof this._parts.query === 'string') {\n if (!this._parts.query.length) {\n this._parts.query = null;\n } else {\n this.query(URI.parseQuery(this._parts.query, this._parts.escapeQuerySpace));\n }\n\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeFragment = function(build) {\n if (!this._parts.fragment) {\n this._parts.fragment = null;\n this.build(!build);\n }\n\n return this;\n };\n p.normalizeSearch = p.normalizeQuery;\n p.normalizeHash = p.normalizeFragment;\n\n p.iso8859 = function() {\n // expect unicode input, iso8859 output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = escape;\n URI.decode = decodeURIComponent;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.unicode = function() {\n // expect iso8859 input, unicode output\n var e = URI.encode;\n var d = URI.decode;\n\n URI.encode = strictEncodeURIComponent;\n URI.decode = unescape;\n try {\n this.normalize();\n } finally {\n URI.encode = e;\n URI.decode = d;\n }\n return this;\n };\n\n p.readable = function() {\n var uri = this.clone();\n // removing username, password, because they shouldn't be displayed according to RFC 3986\n uri.username('').password('').normalize();\n var t = '';\n if (uri._parts.protocol) {\n t += uri._parts.protocol + '://';\n }\n\n if (uri._parts.hostname) {\n if (uri.is('punycode') && punycode) {\n t += punycode.toUnicode(uri._parts.hostname);\n if (uri._parts.port) {\n t += ':' + uri._parts.port;\n }\n } else {\n t += uri.host();\n }\n }\n\n if (uri._parts.hostname && uri._parts.path && uri._parts.path.charAt(0) !== '/') {\n t += '/';\n }\n\n t += uri.path(true);\n if (uri._parts.query) {\n var q = '';\n for (var i = 0, qp = uri._parts.query.split('&'), l = qp.length; i < l; i++) {\n var kv = (qp[i] || '').split('=');\n q += '&' + URI.decodeQuery(kv[0], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n\n if (kv[1] !== undefined) {\n q += '=' + URI.decodeQuery(kv[1], this._parts.escapeQuerySpace)\n .replace(/&/g, '%26');\n }\n }\n t += '?' + q.substring(1);\n }\n\n t += URI.decodeQuery(uri.hash(), true);\n return t;\n };\n\n // resolving relative and absolute URLs\n p.absoluteTo = function(base) {\n var resolved = this.clone();\n var properties = ['protocol', 'username', 'password', 'hostname', 'port'];\n var basedir, i, p;\n\n if (this._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n if (!(base instanceof URI)) {\n base = new URI(base);\n }\n\n if (resolved._parts.protocol) {\n // Directly returns even if this._parts.hostname is empty.\n return resolved;\n } else {\n resolved._parts.protocol = base._parts.protocol;\n }\n\n if (this._parts.hostname) {\n return resolved;\n }\n\n for (i = 0; (p = properties[i]); i++) {\n resolved._parts[p] = base._parts[p];\n }\n\n if (!resolved._parts.path) {\n resolved._parts.path = base._parts.path;\n if (!resolved._parts.query) {\n resolved._parts.query = base._parts.query;\n }\n } else {\n if (resolved._parts.path.substring(-2) === '..') {\n resolved._parts.path += '/';\n }\n\n if (resolved.path().charAt(0) !== '/') {\n basedir = base.directory();\n basedir = basedir ? basedir : base.path().indexOf('/') === 0 ? '/' : '';\n resolved._parts.path = (basedir ? (basedir + '/') : '') + resolved._parts.path;\n resolved.normalizePath();\n }\n }\n\n resolved.build();\n return resolved;\n };\n p.relativeTo = function(base) {\n var relative = this.clone().normalize();\n var relativeParts, baseParts, common, relativePath, basePath;\n\n if (relative._parts.urn) {\n throw new Error('URNs do not have any generally defined hierarchical components');\n }\n\n base = new URI(base).normalize();\n relativeParts = relative._parts;\n baseParts = base._parts;\n relativePath = relative.path();\n basePath = base.path();\n\n if (relativePath.charAt(0) !== '/') {\n throw new Error('URI is already relative');\n }\n\n if (basePath.charAt(0) !== '/') {\n throw new Error('Cannot calculate a URI relative to another relative URI');\n }\n\n if (relativeParts.protocol === baseParts.protocol) {\n relativeParts.protocol = null;\n }\n\n if (relativeParts.username !== baseParts.username || relativeParts.password !== baseParts.password) {\n return relative.build();\n }\n\n if (relativeParts.protocol !== null || relativeParts.username !== null || relativeParts.password !== null) {\n return relative.build();\n }\n\n if (relativeParts.hostname === baseParts.hostname && relativeParts.port === baseParts.port) {\n relativeParts.hostname = null;\n relativeParts.port = null;\n } else {\n return relative.build();\n }\n\n if (relativePath === basePath) {\n relativeParts.path = '';\n return relative.build();\n }\n\n // determine common sub path\n common = URI.commonPath(relativePath, basePath);\n\n // If the paths have nothing in common, return a relative URL with the absolute path.\n if (!common) {\n return relative.build();\n }\n\n var parents = baseParts.path\n .substring(common.length)\n .replace(/[^\\/]*$/, '')\n .replace(/.*?\\//g, '../');\n\n relativeParts.path = (parents + relativeParts.path.substring(common.length)) || './';\n\n return relative.build();\n };\n\n // comparing URIs\n p.equals = function(uri) {\n var one = this.clone();\n var two = new URI(uri);\n var one_map = {};\n var two_map = {};\n var checked = {};\n var one_query, two_query, key;\n\n one.normalize();\n two.normalize();\n\n // exact match\n if (one.toString() === two.toString()) {\n return true;\n }\n\n // extract query string\n one_query = one.query();\n two_query = two.query();\n one.query('');\n two.query('');\n\n // definitely not equal if not even non-query parts match\n if (one.toString() !== two.toString()) {\n return false;\n }\n\n // query parameters have the same length, even if they're permuted\n if (one_query.length !== two_query.length) {\n return false;\n }\n\n one_map = URI.parseQuery(one_query, this._parts.escapeQuerySpace);\n two_map = URI.parseQuery(two_query, this._parts.escapeQuerySpace);\n\n for (key in one_map) {\n if (hasOwn.call(one_map, key)) {\n if (!isArray(one_map[key])) {\n if (one_map[key] !== two_map[key]) {\n return false;\n }\n } else if (!arraysEqual(one_map[key], two_map[key])) {\n return false;\n }\n\n checked[key] = true;\n }\n }\n\n for (key in two_map) {\n if (hasOwn.call(two_map, key)) {\n if (!checked[key]) {\n // two contains a parameter not present in one\n return false;\n }\n }\n }\n\n return true;\n };\n\n // state\n p.preventInvalidHostname = function(v) {\n this._parts.preventInvalidHostname = !!v;\n return this;\n };\n\n p.duplicateQueryParameters = function(v) {\n this._parts.duplicateQueryParameters = !!v;\n return this;\n };\n\n p.escapeQuerySpace = function(v) {\n this._parts.escapeQuerySpace = !!v;\n return this;\n };\n\n return URI;\n}));\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FederationServer = exports.FEDERATION_RESPONSE_MAX_SIZE = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\nvar _config = require(\"../config\");\nvar _errors = require(\"../errors\");\nvar _stellartoml = require(\"../stellartoml\");\nvar _httpClient = require(\"../http-client\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar FEDERATION_RESPONSE_MAX_SIZE = exports.FEDERATION_RESPONSE_MAX_SIZE = 100 * 1024;\nvar FederationServer = exports.FederationServer = function () {\n function FederationServer(serverURL, domain) {\n var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, FederationServer);\n this.serverURL = (0, _urijs.default)(serverURL);\n this.domain = domain;\n var allowHttp = typeof opts.allowHttp === \"undefined\" ? _config.Config.isAllowHttp() : opts.allowHttp;\n this.timeout = typeof opts.timeout === \"undefined\" ? _config.Config.getTimeout() : opts.timeout;\n if (this.serverURL.protocol() !== \"https\" && !allowHttp) {\n throw new Error(\"Cannot connect to insecure federation server\");\n }\n }\n return _createClass(FederationServer, [{\n key: \"resolveAddress\",\n value: (function () {\n var _resolveAddress = _asyncToGenerator(_regenerator().m(function _callee(address) {\n var stellarAddress, url;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n stellarAddress = address;\n if (!(address.indexOf(\"*\") < 0)) {\n _context.n = 2;\n break;\n }\n if (this.domain) {\n _context.n = 1;\n break;\n }\n return _context.a(2, Promise.reject(new Error(\"Unknown domain. Make sure `address` contains a domain (ex. `bob*stellar.org`) or pass `domain` parameter when instantiating the server object.\")));\n case 1:\n stellarAddress = \"\".concat(address, \"*\").concat(this.domain);\n case 2:\n url = this.serverURL.query({\n type: \"name\",\n q: stellarAddress\n });\n return _context.a(2, this._sendRequest(url));\n }\n }, _callee, this);\n }));\n function resolveAddress(_x) {\n return _resolveAddress.apply(this, arguments);\n }\n return resolveAddress;\n }())\n }, {\n key: \"resolveAccountId\",\n value: (function () {\n var _resolveAccountId = _asyncToGenerator(_regenerator().m(function _callee2(accountId) {\n var url;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n url = this.serverURL.query({\n type: \"id\",\n q: accountId\n });\n return _context2.a(2, this._sendRequest(url));\n }\n }, _callee2, this);\n }));\n function resolveAccountId(_x2) {\n return _resolveAccountId.apply(this, arguments);\n }\n return resolveAccountId;\n }())\n }, {\n key: \"resolveTransactionId\",\n value: (function () {\n var _resolveTransactionId = _asyncToGenerator(_regenerator().m(function _callee3(transactionId) {\n var url;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n url = this.serverURL.query({\n type: \"txid\",\n q: transactionId\n });\n return _context3.a(2, this._sendRequest(url));\n }\n }, _callee3, this);\n }));\n function resolveTransactionId(_x3) {\n return _resolveTransactionId.apply(this, arguments);\n }\n return resolveTransactionId;\n }())\n }, {\n key: \"_sendRequest\",\n value: function () {\n var _sendRequest2 = _asyncToGenerator(_regenerator().m(function _callee4(url) {\n var timeout;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n timeout = this.timeout;\n return _context4.a(2, _httpClient.httpClient.get(url.toString(), {\n maxContentLength: FEDERATION_RESPONSE_MAX_SIZE,\n timeout: timeout\n }).then(function (response) {\n if (typeof response.data.memo !== \"undefined\" && typeof response.data.memo !== \"string\") {\n throw new Error(\"memo value should be of type string\");\n }\n return response.data;\n }).catch(function (response) {\n if (response instanceof Error) {\n if (response.message.match(/^maxContentLength size/)) {\n throw new Error(\"federation response exceeds allowed size of \".concat(FEDERATION_RESPONSE_MAX_SIZE));\n } else {\n return Promise.reject(response);\n }\n } else {\n return Promise.reject(new _errors.BadResponseError(\"Server query failed. Server responded: \".concat(response.status, \" \").concat(response.statusText), response.data));\n }\n }));\n }\n }, _callee4, this);\n }));\n function _sendRequest(_x4) {\n return _sendRequest2.apply(this, arguments);\n }\n return _sendRequest;\n }()\n }], [{\n key: \"resolve\",\n value: (function () {\n var _resolve = _asyncToGenerator(_regenerator().m(function _callee5(value) {\n var opts,\n addressParts,\n _addressParts,\n domain,\n federationServer,\n _args5 = arguments;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n opts = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {};\n if (!(value.indexOf(\"*\") < 0)) {\n _context5.n = 2;\n break;\n }\n if (_stellarBase.StrKey.isValidEd25519PublicKey(value)) {\n _context5.n = 1;\n break;\n }\n return _context5.a(2, Promise.reject(new Error(\"Invalid Account ID\")));\n case 1:\n return _context5.a(2, Promise.resolve({\n account_id: value\n }));\n case 2:\n addressParts = value.split(\"*\");\n _addressParts = _slicedToArray(addressParts, 2), domain = _addressParts[1];\n if (!(addressParts.length !== 2 || !domain)) {\n _context5.n = 3;\n break;\n }\n return _context5.a(2, Promise.reject(new Error(\"Invalid Stellar address\")));\n case 3:\n _context5.n = 4;\n return FederationServer.createForDomain(domain, opts);\n case 4:\n federationServer = _context5.v;\n return _context5.a(2, federationServer.resolveAddress(value));\n }\n }, _callee5);\n }));\n function resolve(_x5) {\n return _resolve.apply(this, arguments);\n }\n return resolve;\n }())\n }, {\n key: \"createForDomain\",\n value: (function () {\n var _createForDomain = _asyncToGenerator(_regenerator().m(function _callee6(domain) {\n var opts,\n tomlObject,\n _args6 = arguments;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n opts = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {};\n _context6.n = 1;\n return _stellartoml.Resolver.resolve(domain, opts);\n case 1:\n tomlObject = _context6.v;\n if (tomlObject.FEDERATION_SERVER) {\n _context6.n = 2;\n break;\n }\n return _context6.a(2, Promise.reject(new Error(\"stellar.toml does not contain FEDERATION_SERVER field\")));\n case 2:\n return _context6.a(2, new FederationServer(tomlObject.FEDERATION_SERVER, domain, opts));\n }\n }, _callee6);\n }));\n function createForDomain(_x6) {\n return _createForDomain.apply(this, arguments);\n }\n return createForDomain;\n }())\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Api = void 0;\nvar Api;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n Server: true,\n FEDERATION_RESPONSE_MAX_SIZE: true\n};\nObject.defineProperty(exports, \"FEDERATION_RESPONSE_MAX_SIZE\", {\n enumerable: true,\n get: function get() {\n return _server.FEDERATION_RESPONSE_MAX_SIZE;\n }\n});\nObject.defineProperty(exports, \"Server\", {\n enumerable: true,\n get: function get() {\n return _server.FederationServer;\n }\n});\nvar _server = require(\"./server\");\nvar _api = require(\"./api\");\nObject.keys(_api).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _api[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _api[key];\n }\n });\n});", "module.exports = require('crypto').randomBytes\n", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InvalidChallengeError = void 0;\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nvar InvalidChallengeError = exports.InvalidChallengeError = function (_Error) {\n function InvalidChallengeError(message) {\n var _this;\n _classCallCheck(this, InvalidChallengeError);\n var trueProto = (this instanceof InvalidChallengeError ? this.constructor : void 0).prototype;\n _this = _callSuper(this, InvalidChallengeError, [message]);\n _this.__proto__ = trueProto;\n _this.constructor = InvalidChallengeError;\n _this.name = \"InvalidChallengeError\";\n return _this;\n }\n _inherits(InvalidChallengeError, _Error);\n return _createClass(InvalidChallengeError);\n}(_wrapNativeSuper(Error));", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.buildChallengeTx = buildChallengeTx;\nexports.gatherTxSigners = gatherTxSigners;\nexports.readChallengeTx = readChallengeTx;\nexports.verifyChallengeTxSigners = verifyChallengeTxSigners;\nexports.verifyChallengeTxThreshold = verifyChallengeTxThreshold;\nexports.verifyTxSignedBy = verifyTxSignedBy;\nvar _randombytes = _interopRequireDefault(require(\"randombytes\"));\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _utils = require(\"../utils\");\nvar _errors = require(\"./errors\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _toArray(r) { return _arrayWithHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction buildChallengeTx(serverKeypair, clientAccountID, homeDomain) {\n var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300;\n var networkPassphrase = arguments.length > 4 ? arguments[4] : undefined;\n var webAuthDomain = arguments.length > 5 ? arguments[5] : undefined;\n var memo = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;\n var clientDomain = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;\n var clientSigningKey = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null;\n if (clientAccountID.startsWith(\"M\") && memo) {\n throw Error(\"memo cannot be used if clientAccountID is a muxed account\");\n }\n var account = new _stellarBase.Account(serverKeypair.publicKey(), \"-1\");\n var now = Math.floor(Date.now() / 1000);\n var value = (0, _randombytes.default)(48).toString(\"base64\");\n var builder = new _stellarBase.TransactionBuilder(account, {\n fee: _stellarBase.BASE_FEE,\n networkPassphrase: networkPassphrase,\n timebounds: {\n minTime: now,\n maxTime: now + timeout\n }\n }).addOperation(_stellarBase.Operation.manageData({\n name: \"\".concat(homeDomain, \" auth\"),\n value: value,\n source: clientAccountID\n })).addOperation(_stellarBase.Operation.manageData({\n name: \"web_auth_domain\",\n value: webAuthDomain,\n source: account.accountId()\n }));\n if (clientDomain) {\n if (!clientSigningKey) {\n throw Error(\"clientSigningKey is required if clientDomain is provided\");\n }\n builder.addOperation(_stellarBase.Operation.manageData({\n name: \"client_domain\",\n value: clientDomain,\n source: clientSigningKey\n }));\n }\n if (memo) {\n builder.addMemo(_stellarBase.Memo.id(memo));\n }\n var transaction = builder.build();\n transaction.sign(serverKeypair);\n return transaction.toEnvelope().toXDR(\"base64\").toString();\n}\nfunction readChallengeTx(challengeTx, serverAccountID, networkPassphrase, homeDomains, webAuthDomain) {\n var _transaction$timeBoun;\n if (serverAccountID.startsWith(\"M\")) {\n throw Error(\"Invalid serverAccountID: multiplexed accounts are not supported.\");\n }\n var transaction;\n try {\n transaction = new _stellarBase.Transaction(challengeTx, networkPassphrase);\n } catch (_unused) {\n try {\n transaction = new _stellarBase.FeeBumpTransaction(challengeTx, networkPassphrase);\n } catch (_unused2) {\n throw new _errors.InvalidChallengeError(\"Invalid challenge: unable to deserialize challengeTx transaction string\");\n }\n throw new _errors.InvalidChallengeError(\"Invalid challenge: expected a Transaction but received a FeeBumpTransaction\");\n }\n var sequence = Number.parseInt(transaction.sequence, 10);\n if (sequence !== 0) {\n throw new _errors.InvalidChallengeError(\"The transaction sequence number should be zero\");\n }\n if (transaction.source !== serverAccountID) {\n throw new _errors.InvalidChallengeError(\"The transaction source account is not equal to the server's account\");\n }\n if (transaction.operations.length < 1) {\n throw new _errors.InvalidChallengeError(\"The transaction should contain at least one operation\");\n }\n var _transaction$operatio = _toArray(transaction.operations),\n operation = _transaction$operatio[0],\n subsequentOperations = _transaction$operatio.slice(1);\n if (!operation.source) {\n throw new _errors.InvalidChallengeError(\"The transaction's operation should contain a source account\");\n }\n var clientAccountID = operation.source;\n var memo = null;\n if (transaction.memo.type !== _stellarBase.MemoNone) {\n if (clientAccountID.startsWith(\"M\")) {\n throw new _errors.InvalidChallengeError(\"The transaction has a memo but the client account ID is a muxed account\");\n }\n if (transaction.memo.type !== _stellarBase.MemoID) {\n throw new _errors.InvalidChallengeError(\"The transaction's memo must be of type `id`\");\n }\n memo = transaction.memo.value;\n }\n if (operation.type !== \"manageData\") {\n throw new _errors.InvalidChallengeError(\"The transaction's operation type should be 'manageData'\");\n }\n if (transaction.timeBounds && Number.parseInt((_transaction$timeBoun = transaction.timeBounds) === null || _transaction$timeBoun === void 0 ? void 0 : _transaction$timeBoun.maxTime, 10) === _stellarBase.TimeoutInfinite) {\n throw new _errors.InvalidChallengeError(\"The transaction requires non-infinite timebounds\");\n }\n if (!_utils.Utils.validateTimebounds(transaction, 60 * 5)) {\n throw new _errors.InvalidChallengeError(\"The transaction has expired\");\n }\n if (operation.value === undefined) {\n throw new _errors.InvalidChallengeError(\"The transaction's operation values should not be null\");\n }\n if (!operation.value) {\n throw new _errors.InvalidChallengeError(\"The transaction's operation value should not be null\");\n }\n if (Buffer.from(operation.value.toString(), \"base64\").length !== 48) {\n throw new _errors.InvalidChallengeError(\"The transaction's operation value should be a 64 bytes base64 random string\");\n }\n if (!homeDomains) {\n throw new _errors.InvalidChallengeError(\"Invalid homeDomains: a home domain must be provided for verification\");\n }\n var matchedHomeDomain;\n if (typeof homeDomains === \"string\") {\n if (\"\".concat(homeDomains, \" auth\") === operation.name) {\n matchedHomeDomain = homeDomains;\n }\n } else if (Array.isArray(homeDomains)) {\n matchedHomeDomain = homeDomains.find(function (domain) {\n return \"\".concat(domain, \" auth\") === operation.name;\n });\n } else {\n throw new _errors.InvalidChallengeError(\"Invalid homeDomains: homeDomains type is \".concat(_typeof(homeDomains), \" but should be a string or an array\"));\n }\n if (!matchedHomeDomain) {\n throw new _errors.InvalidChallengeError(\"Invalid homeDomains: the transaction's operation key name does not match the expected home domain\");\n }\n var _iterator = _createForOfIteratorHelper(subsequentOperations),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var op = _step.value;\n if (op.type !== \"manageData\") {\n throw new _errors.InvalidChallengeError(\"The transaction has operations that are not of type 'manageData'\");\n }\n if (op.source !== serverAccountID && op.name !== \"client_domain\") {\n throw new _errors.InvalidChallengeError(\"The transaction has operations that are unrecognized\");\n }\n if (op.name === \"web_auth_domain\") {\n if (op.value === undefined) {\n throw new _errors.InvalidChallengeError(\"'web_auth_domain' operation value should not be null\");\n }\n if (op.value.compare(Buffer.from(webAuthDomain))) {\n throw new _errors.InvalidChallengeError(\"'web_auth_domain' operation value does not match \".concat(webAuthDomain));\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (!verifyTxSignedBy(transaction, serverAccountID)) {\n throw new _errors.InvalidChallengeError(\"Transaction not signed by server: '\".concat(serverAccountID, \"'\"));\n }\n return {\n tx: transaction,\n clientAccountID: clientAccountID,\n matchedHomeDomain: matchedHomeDomain,\n memo: memo\n };\n}\nfunction verifyChallengeTxThreshold(challengeTx, serverAccountID, networkPassphrase, threshold, signerSummary, homeDomains, webAuthDomain) {\n var signers = signerSummary.map(function (signer) {\n return signer.key;\n });\n var signersFound = verifyChallengeTxSigners(challengeTx, serverAccountID, networkPassphrase, signers, homeDomains, webAuthDomain);\n var weight = 0;\n var _loop = function _loop() {\n var _signerSummary$find;\n var signer = _signersFound[_i];\n var sigWeight = ((_signerSummary$find = signerSummary.find(function (s) {\n return s.key === signer;\n })) === null || _signerSummary$find === void 0 ? void 0 : _signerSummary$find.weight) || 0;\n weight += sigWeight;\n };\n for (var _i = 0, _signersFound = signersFound; _i < _signersFound.length; _i++) {\n _loop();\n }\n if (weight < threshold) {\n throw new _errors.InvalidChallengeError(\"signers with weight \".concat(weight, \" do not meet threshold \").concat(threshold, \"\\\"\"));\n }\n return signersFound;\n}\nfunction verifyChallengeTxSigners(challengeTx, serverAccountID, networkPassphrase, signers, homeDomains, webAuthDomain) {\n var _readChallengeTx = readChallengeTx(challengeTx, serverAccountID, networkPassphrase, homeDomains, webAuthDomain),\n tx = _readChallengeTx.tx;\n var serverKP;\n try {\n serverKP = _stellarBase.Keypair.fromPublicKey(serverAccountID);\n } catch (err) {\n throw new Error(\"Couldn't infer keypair from the provided 'serverAccountID': \".concat(err.message));\n }\n var clientSigners = new Set();\n var _iterator2 = _createForOfIteratorHelper(signers),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _signer = _step2.value;\n if (_signer === serverKP.publicKey()) {\n continue;\n }\n if (_signer.charAt(0) !== \"G\") {\n continue;\n }\n clientSigners.add(_signer);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n if (clientSigners.size === 0) {\n throw new _errors.InvalidChallengeError(\"No verifiable client signers provided, at least one G... address must be provided\");\n }\n var clientSigningKey;\n var _iterator3 = _createForOfIteratorHelper(tx.operations),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var op = _step3.value;\n if (op.type === \"manageData\" && op.name === \"client_domain\") {\n if (clientSigningKey) {\n throw new _errors.InvalidChallengeError(\"Found more than one client_domain operation\");\n }\n clientSigningKey = op.source;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n var allSigners = [serverKP.publicKey()].concat(_toConsumableArray(Array.from(clientSigners)));\n if (clientSigningKey) {\n allSigners.push(clientSigningKey);\n }\n var signersFound = gatherTxSigners(tx, allSigners);\n var serverSignatureFound = false;\n var clientSigningKeySignatureFound = false;\n for (var _i2 = 0, _signersFound2 = signersFound; _i2 < _signersFound2.length; _i2++) {\n var signer = _signersFound2[_i2];\n if (signer === serverKP.publicKey()) {\n serverSignatureFound = true;\n }\n if (signer === clientSigningKey) {\n clientSigningKeySignatureFound = true;\n }\n }\n if (!serverSignatureFound) {\n throw new _errors.InvalidChallengeError(\"Transaction not signed by server: '\".concat(serverKP.publicKey(), \"'\"));\n }\n if (clientSigningKey && !clientSigningKeySignatureFound) {\n throw new _errors.InvalidChallengeError(\"Transaction not signed by the source account of the 'client_domain' \" + \"ManageData operation\");\n }\n if (signersFound.length === 1) {\n throw new _errors.InvalidChallengeError(\"None of the given signers match the transaction signatures\");\n }\n if (signersFound.length !== tx.signatures.length) {\n throw new _errors.InvalidChallengeError(\"Transaction has unrecognized signatures\");\n }\n signersFound.splice(signersFound.indexOf(serverKP.publicKey()), 1);\n if (clientSigningKey) {\n signersFound.splice(signersFound.indexOf(clientSigningKey), 1);\n }\n return signersFound;\n}\nfunction verifyTxSignedBy(transaction, accountID) {\n return gatherTxSigners(transaction, [accountID]).length !== 0;\n}\nfunction gatherTxSigners(transaction, signers) {\n var hashedSignatureBase = transaction.hash();\n var txSignatures = _toConsumableArray(transaction.signatures);\n var signersFound = new Set();\n var _iterator4 = _createForOfIteratorHelper(signers),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var signer = _step4.value;\n if (txSignatures.length === 0) {\n break;\n }\n var keypair = void 0;\n try {\n keypair = _stellarBase.Keypair.fromPublicKey(signer);\n } catch (err) {\n throw new _errors.InvalidChallengeError(\"Signer is not a valid address: \".concat(err.message));\n }\n for (var i = 0; i < txSignatures.length; i++) {\n var decSig = txSignatures[i];\n if (!decSig.hint().equals(keypair.signatureHint())) {\n continue;\n }\n if (keypair.verify(hashedSignatureBase, decSig.signature())) {\n signersFound.add(signer);\n txSignatures.splice(i, 1);\n break;\n }\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n return Array.from(signersFound);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n InvalidChallengeError: true\n};\nObject.defineProperty(exports, \"InvalidChallengeError\", {\n enumerable: true,\n get: function get() {\n return _errors.InvalidChallengeError;\n }\n});\nvar _utils = require(\"./utils\");\nObject.keys(_utils).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _utils[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _utils[key];\n }\n });\n});\nvar _errors = require(\"./errors\");", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Api = void 0;\nvar Api;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HorizonApi = void 0;\nvar HorizonApi;\n(function (_HorizonApi) {\n var LiquidityPoolType = function (LiquidityPoolType) {\n LiquidityPoolType[\"constantProduct\"] = \"constant_product\";\n return LiquidityPoolType;\n }({});\n _HorizonApi.LiquidityPoolType = LiquidityPoolType;\n var OperationResponseType = function (OperationResponseType) {\n OperationResponseType[\"createAccount\"] = \"create_account\";\n OperationResponseType[\"payment\"] = \"payment\";\n OperationResponseType[\"pathPayment\"] = \"path_payment_strict_receive\";\n OperationResponseType[\"createPassiveOffer\"] = \"create_passive_sell_offer\";\n OperationResponseType[\"manageOffer\"] = \"manage_sell_offer\";\n OperationResponseType[\"setOptions\"] = \"set_options\";\n OperationResponseType[\"changeTrust\"] = \"change_trust\";\n OperationResponseType[\"allowTrust\"] = \"allow_trust\";\n OperationResponseType[\"accountMerge\"] = \"account_merge\";\n OperationResponseType[\"inflation\"] = \"inflation\";\n OperationResponseType[\"manageData\"] = \"manage_data\";\n OperationResponseType[\"bumpSequence\"] = \"bump_sequence\";\n OperationResponseType[\"manageBuyOffer\"] = \"manage_buy_offer\";\n OperationResponseType[\"pathPaymentStrictSend\"] = \"path_payment_strict_send\";\n OperationResponseType[\"createClaimableBalance\"] = \"create_claimable_balance\";\n OperationResponseType[\"claimClaimableBalance\"] = \"claim_claimable_balance\";\n OperationResponseType[\"beginSponsoringFutureReserves\"] = \"begin_sponsoring_future_reserves\";\n OperationResponseType[\"endSponsoringFutureReserves\"] = \"end_sponsoring_future_reserves\";\n OperationResponseType[\"revokeSponsorship\"] = \"revoke_sponsorship\";\n OperationResponseType[\"clawback\"] = \"clawback\";\n OperationResponseType[\"clawbackClaimableBalance\"] = \"clawback_claimable_balance\";\n OperationResponseType[\"setTrustLineFlags\"] = \"set_trust_line_flags\";\n OperationResponseType[\"liquidityPoolDeposit\"] = \"liquidity_pool_deposit\";\n OperationResponseType[\"liquidityPoolWithdraw\"] = \"liquidity_pool_withdraw\";\n OperationResponseType[\"invokeHostFunction\"] = \"invoke_host_function\";\n OperationResponseType[\"bumpFootprintExpiration\"] = \"bump_footprint_expiration\";\n OperationResponseType[\"restoreFootprint\"] = \"restore_footprint\";\n return OperationResponseType;\n }({});\n _HorizonApi.OperationResponseType = OperationResponseType;\n var OperationResponseTypeI = function (OperationResponseTypeI) {\n OperationResponseTypeI[OperationResponseTypeI[\"createAccount\"] = 0] = \"createAccount\";\n OperationResponseTypeI[OperationResponseTypeI[\"payment\"] = 1] = \"payment\";\n OperationResponseTypeI[OperationResponseTypeI[\"pathPayment\"] = 2] = \"pathPayment\";\n OperationResponseTypeI[OperationResponseTypeI[\"createPassiveOffer\"] = 3] = \"createPassiveOffer\";\n OperationResponseTypeI[OperationResponseTypeI[\"manageOffer\"] = 4] = \"manageOffer\";\n OperationResponseTypeI[OperationResponseTypeI[\"setOptions\"] = 5] = \"setOptions\";\n OperationResponseTypeI[OperationResponseTypeI[\"changeTrust\"] = 6] = \"changeTrust\";\n OperationResponseTypeI[OperationResponseTypeI[\"allowTrust\"] = 7] = \"allowTrust\";\n OperationResponseTypeI[OperationResponseTypeI[\"accountMerge\"] = 8] = \"accountMerge\";\n OperationResponseTypeI[OperationResponseTypeI[\"inflation\"] = 9] = \"inflation\";\n OperationResponseTypeI[OperationResponseTypeI[\"manageData\"] = 10] = \"manageData\";\n OperationResponseTypeI[OperationResponseTypeI[\"bumpSequence\"] = 11] = \"bumpSequence\";\n OperationResponseTypeI[OperationResponseTypeI[\"manageBuyOffer\"] = 12] = \"manageBuyOffer\";\n OperationResponseTypeI[OperationResponseTypeI[\"pathPaymentStrictSend\"] = 13] = \"pathPaymentStrictSend\";\n OperationResponseTypeI[OperationResponseTypeI[\"createClaimableBalance\"] = 14] = \"createClaimableBalance\";\n OperationResponseTypeI[OperationResponseTypeI[\"claimClaimableBalance\"] = 15] = \"claimClaimableBalance\";\n OperationResponseTypeI[OperationResponseTypeI[\"beginSponsoringFutureReserves\"] = 16] = \"beginSponsoringFutureReserves\";\n OperationResponseTypeI[OperationResponseTypeI[\"endSponsoringFutureReserves\"] = 17] = \"endSponsoringFutureReserves\";\n OperationResponseTypeI[OperationResponseTypeI[\"revokeSponsorship\"] = 18] = \"revokeSponsorship\";\n OperationResponseTypeI[OperationResponseTypeI[\"clawback\"] = 19] = \"clawback\";\n OperationResponseTypeI[OperationResponseTypeI[\"clawbackClaimableBalance\"] = 20] = \"clawbackClaimableBalance\";\n OperationResponseTypeI[OperationResponseTypeI[\"setTrustLineFlags\"] = 21] = \"setTrustLineFlags\";\n OperationResponseTypeI[OperationResponseTypeI[\"liquidityPoolDeposit\"] = 22] = \"liquidityPoolDeposit\";\n OperationResponseTypeI[OperationResponseTypeI[\"liquidityPoolWithdraw\"] = 23] = \"liquidityPoolWithdraw\";\n OperationResponseTypeI[OperationResponseTypeI[\"invokeHostFunction\"] = 24] = \"invokeHostFunction\";\n OperationResponseTypeI[OperationResponseTypeI[\"bumpFootprintExpiration\"] = 25] = \"bumpFootprintExpiration\";\n OperationResponseTypeI[OperationResponseTypeI[\"restoreFootprint\"] = 26] = \"restoreFootprint\";\n return OperationResponseTypeI;\n }({});\n _HorizonApi.OperationResponseTypeI = OperationResponseTypeI;\n var TransactionFailedResultCodes = function (TransactionFailedResultCodes) {\n TransactionFailedResultCodes[\"TX_FAILED\"] = \"tx_failed\";\n TransactionFailedResultCodes[\"TX_BAD_SEQ\"] = \"tx_bad_seq\";\n TransactionFailedResultCodes[\"TX_BAD_AUTH\"] = \"tx_bad_auth\";\n TransactionFailedResultCodes[\"TX_BAD_AUTH_EXTRA\"] = \"tx_bad_auth_extra\";\n TransactionFailedResultCodes[\"TX_FEE_BUMP_INNER_SUCCESS\"] = \"tx_fee_bump_inner_success\";\n TransactionFailedResultCodes[\"TX_FEE_BUMP_INNER_FAILED\"] = \"tx_fee_bump_inner_failed\";\n TransactionFailedResultCodes[\"TX_NOT_SUPPORTED\"] = \"tx_not_supported\";\n TransactionFailedResultCodes[\"TX_SUCCESS\"] = \"tx_success\";\n TransactionFailedResultCodes[\"TX_TOO_EARLY\"] = \"tx_too_early\";\n TransactionFailedResultCodes[\"TX_TOO_LATE\"] = \"tx_too_late\";\n TransactionFailedResultCodes[\"TX_MISSING_OPERATION\"] = \"tx_missing_operation\";\n TransactionFailedResultCodes[\"TX_INSUFFICIENT_BALANCE\"] = \"tx_insufficient_balance\";\n TransactionFailedResultCodes[\"TX_NO_SOURCE_ACCOUNT\"] = \"tx_no_source_account\";\n TransactionFailedResultCodes[\"TX_INSUFFICIENT_FEE\"] = \"tx_insufficient_fee\";\n TransactionFailedResultCodes[\"TX_INTERNAL_ERROR\"] = \"tx_internal_error\";\n return TransactionFailedResultCodes;\n }({});\n _HorizonApi.TransactionFailedResultCodes = TransactionFailedResultCodes;\n})(HorizonApi || (exports.HorizonApi = HorizonApi = {}));", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EffectType = void 0;\nvar EffectType = exports.EffectType = function (EffectType) {\n EffectType[EffectType[\"account_created\"] = 0] = \"account_created\";\n EffectType[EffectType[\"account_removed\"] = 1] = \"account_removed\";\n EffectType[EffectType[\"account_credited\"] = 2] = \"account_credited\";\n EffectType[EffectType[\"account_debited\"] = 3] = \"account_debited\";\n EffectType[EffectType[\"account_thresholds_updated\"] = 4] = \"account_thresholds_updated\";\n EffectType[EffectType[\"account_home_domain_updated\"] = 5] = \"account_home_domain_updated\";\n EffectType[EffectType[\"account_flags_updated\"] = 6] = \"account_flags_updated\";\n EffectType[EffectType[\"account_inflation_destination_updated\"] = 7] = \"account_inflation_destination_updated\";\n EffectType[EffectType[\"signer_created\"] = 10] = \"signer_created\";\n EffectType[EffectType[\"signer_removed\"] = 11] = \"signer_removed\";\n EffectType[EffectType[\"signer_updated\"] = 12] = \"signer_updated\";\n EffectType[EffectType[\"trustline_created\"] = 20] = \"trustline_created\";\n EffectType[EffectType[\"trustline_removed\"] = 21] = \"trustline_removed\";\n EffectType[EffectType[\"trustline_updated\"] = 22] = \"trustline_updated\";\n EffectType[EffectType[\"trustline_authorized\"] = 23] = \"trustline_authorized\";\n EffectType[EffectType[\"trustline_deauthorized\"] = 24] = \"trustline_deauthorized\";\n EffectType[EffectType[\"trustline_authorized_to_maintain_liabilities\"] = 25] = \"trustline_authorized_to_maintain_liabilities\";\n EffectType[EffectType[\"trustline_flags_updated\"] = 26] = \"trustline_flags_updated\";\n EffectType[EffectType[\"offer_created\"] = 30] = \"offer_created\";\n EffectType[EffectType[\"offer_removed\"] = 31] = \"offer_removed\";\n EffectType[EffectType[\"offer_updated\"] = 32] = \"offer_updated\";\n EffectType[EffectType[\"trade\"] = 33] = \"trade\";\n EffectType[EffectType[\"data_created\"] = 40] = \"data_created\";\n EffectType[EffectType[\"data_removed\"] = 41] = \"data_removed\";\n EffectType[EffectType[\"data_updated\"] = 42] = \"data_updated\";\n EffectType[EffectType[\"sequence_bumped\"] = 43] = \"sequence_bumped\";\n EffectType[EffectType[\"claimable_balance_created\"] = 50] = \"claimable_balance_created\";\n EffectType[EffectType[\"claimable_balance_claimant_created\"] = 51] = \"claimable_balance_claimant_created\";\n EffectType[EffectType[\"claimable_balance_claimed\"] = 52] = \"claimable_balance_claimed\";\n EffectType[EffectType[\"account_sponsorship_created\"] = 60] = \"account_sponsorship_created\";\n EffectType[EffectType[\"account_sponsorship_updated\"] = 61] = \"account_sponsorship_updated\";\n EffectType[EffectType[\"account_sponsorship_removed\"] = 62] = \"account_sponsorship_removed\";\n EffectType[EffectType[\"trustline_sponsorship_created\"] = 63] = \"trustline_sponsorship_created\";\n EffectType[EffectType[\"trustline_sponsorship_updated\"] = 64] = \"trustline_sponsorship_updated\";\n EffectType[EffectType[\"trustline_sponsorship_removed\"] = 65] = \"trustline_sponsorship_removed\";\n EffectType[EffectType[\"data_sponsorship_created\"] = 66] = \"data_sponsorship_created\";\n EffectType[EffectType[\"data_sponsorship_updated\"] = 67] = \"data_sponsorship_updated\";\n EffectType[EffectType[\"data_sponsorship_removed\"] = 68] = \"data_sponsorship_removed\";\n EffectType[EffectType[\"claimable_balance_sponsorship_created\"] = 69] = \"claimable_balance_sponsorship_created\";\n EffectType[EffectType[\"claimable_balance_sponsorship_updated\"] = 70] = \"claimable_balance_sponsorship_updated\";\n EffectType[EffectType[\"claimable_balance_sponsorship_removed\"] = 71] = \"claimable_balance_sponsorship_removed\";\n EffectType[EffectType[\"signer_sponsorship_created\"] = 72] = \"signer_sponsorship_created\";\n EffectType[EffectType[\"signer_sponsorship_updated\"] = 73] = \"signer_sponsorship_updated\";\n EffectType[EffectType[\"signer_sponsorship_removed\"] = 74] = \"signer_sponsorship_removed\";\n EffectType[EffectType[\"claimable_balance_clawed_back\"] = 80] = \"claimable_balance_clawed_back\";\n EffectType[EffectType[\"liquidity_pool_deposited\"] = 90] = \"liquidity_pool_deposited\";\n EffectType[EffectType[\"liquidity_pool_withdrew\"] = 91] = \"liquidity_pool_withdrew\";\n EffectType[EffectType[\"liquidity_pool_trade\"] = 92] = \"liquidity_pool_trade\";\n EffectType[EffectType[\"liquidity_pool_created\"] = 93] = \"liquidity_pool_created\";\n EffectType[EffectType[\"liquidity_pool_removed\"] = 94] = \"liquidity_pool_removed\";\n EffectType[EffectType[\"liquidity_pool_revoked\"] = 95] = \"liquidity_pool_revoked\";\n EffectType[EffectType[\"contract_credited\"] = 96] = \"contract_credited\";\n EffectType[EffectType[\"contract_debited\"] = 97] = \"contract_debited\";\n return EffectType;\n}({});", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ServerApi = void 0;\nvar _horizon_api = require(\"./horizon_api\");\nvar Effects = _interopRequireWildcard(require(\"./types/effects\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nvar ServerApi;\n(function (_ServerApi) {\n var EffectType = _ServerApi.EffectType = Effects.EffectType;\n var TradeType = function (TradeType) {\n TradeType[\"all\"] = \"all\";\n TradeType[\"liquidityPools\"] = \"liquidity_pool\";\n TradeType[\"orderbook\"] = \"orderbook\";\n return TradeType;\n }({});\n _ServerApi.TradeType = TradeType;\n var OperationResponseType = _horizon_api.HorizonApi.OperationResponseType;\n var OperationResponseTypeI = _horizon_api.HorizonApi.OperationResponseTypeI;\n})(ServerApi || (exports.ServerApi = ServerApi = {}));", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AccountResponse = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar AccountResponse = exports.AccountResponse = function () {\n function AccountResponse(response) {\n var _this = this;\n _classCallCheck(this, AccountResponse);\n this._baseAccount = new _stellarBase.Account(response.account_id, response.sequence);\n Object.entries(response).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n _this[key] = value;\n });\n }\n return _createClass(AccountResponse, [{\n key: \"accountId\",\n value: function accountId() {\n return this._baseAccount.accountId();\n }\n }, {\n key: \"sequenceNumber\",\n value: function sequenceNumber() {\n return this._baseAccount.sequenceNumber();\n }\n }, {\n key: \"incrementSequenceNumber\",\n value: function incrementSequenceNumber() {\n this._baseAccount.incrementSequenceNumber();\n this.sequence = this._baseAccount.sequenceNumber();\n }\n }]);\n}();", "/*!\n * URI.js - Mutating URLs\n * URI Template Support - http://tools.ietf.org/html/rfc6570\n *\n * Version: 1.19.11\n *\n * Author: Rodney Rehm\n * Web: http://medialize.github.io/URI.js/\n *\n * Licensed under\n * MIT License http://www.opensource.org/licenses/mit-license\n *\n */\n(function (root, factory) {\n 'use strict';\n // https://github.com/umdjs/umd/blob/master/returnExports.js\n if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = factory(require('./URI'));\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['./URI'], factory);\n } else {\n // Browser globals (root is window)\n root.URITemplate = factory(root.URI, root);\n }\n}(this, function (URI, root) {\n 'use strict';\n // FIXME: v2.0.0 renamce non-camelCase properties to uppercase\n /*jshint camelcase: false */\n\n // save current URITemplate variable, if any\n var _URITemplate = root && root.URITemplate;\n\n var hasOwn = Object.prototype.hasOwnProperty;\n function URITemplate(expression) {\n // serve from cache where possible\n if (URITemplate._cache[expression]) {\n return URITemplate._cache[expression];\n }\n\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof URITemplate)) {\n return new URITemplate(expression);\n }\n\n this.expression = expression;\n URITemplate._cache[expression] = this;\n return this;\n }\n\n function Data(data) {\n this.data = data;\n this.cache = {};\n }\n\n var p = URITemplate.prototype;\n // list of operators and their defined options\n var operators = {\n // Simple string expansion\n '' : {\n prefix: '',\n separator: ',',\n named: false,\n empty_name_separator: false,\n encode : 'encode'\n },\n // Reserved character strings\n '+' : {\n prefix: '',\n separator: ',',\n named: false,\n empty_name_separator: false,\n encode : 'encodeReserved'\n },\n // Fragment identifiers prefixed by '#'\n '#' : {\n prefix: '#',\n separator: ',',\n named: false,\n empty_name_separator: false,\n encode : 'encodeReserved'\n },\n // Name labels or extensions prefixed by '.'\n '.' : {\n prefix: '.',\n separator: '.',\n named: false,\n empty_name_separator: false,\n encode : 'encode'\n },\n // Path segments prefixed by '/'\n '/' : {\n prefix: '/',\n separator: '/',\n named: false,\n empty_name_separator: false,\n encode : 'encode'\n },\n // Path parameter name or name=value pairs prefixed by ';'\n ';' : {\n prefix: ';',\n separator: ';',\n named: true,\n empty_name_separator: false,\n encode : 'encode'\n },\n // Query component beginning with '?' and consisting\n // of name=value pairs separated by '&'; an\n '?' : {\n prefix: '?',\n separator: '&',\n named: true,\n empty_name_separator: true,\n encode : 'encode'\n },\n // Continuation of query-style &name=value pairs\n // within a literal query component.\n '&' : {\n prefix: '&',\n separator: '&',\n named: true,\n empty_name_separator: true,\n encode : 'encode'\n }\n\n // The operator characters equals (\"=\"), comma (\",\"), exclamation (\"!\"),\n // at sign (\"@\"), and pipe (\"|\") are reserved for future extensions.\n };\n\n // storage for already parsed templates\n URITemplate._cache = {};\n // pattern to identify expressions [operator, variable-list] in template\n URITemplate.EXPRESSION_PATTERN = /\\{([^a-zA-Z0-9%_]?)([^\\}]+)(\\}|$)/g;\n // pattern to identify variables [name, explode, maxlength] in variable-list\n URITemplate.VARIABLE_PATTERN = /^([^*:.](?:\\.?[^*:.])*)((\\*)|:(\\d+))?$/;\n // pattern to verify variable name integrity\n URITemplate.VARIABLE_NAME_PATTERN = /[^a-zA-Z0-9%_.]/;\n // pattern to verify literal integrity\n URITemplate.LITERAL_PATTERN = /[<>{}\"`^| \\\\]/;\n\n // expand parsed expression (expression, not template!)\n URITemplate.expand = function(expression, data, opts) {\n // container for defined options for the given operator\n var options = operators[expression.operator];\n // expansion type (include keys or not)\n var type = options.named ? 'Named' : 'Unnamed';\n // list of variables within the expression\n var variables = expression.variables;\n // result buffer for evaluating the expression\n var buffer = [];\n var d, variable, i;\n\n for (i = 0; (variable = variables[i]); i++) {\n // fetch simplified data source\n d = data.get(variable.name);\n if (d.type === 0 && opts && opts.strict) {\n throw new Error('Missing expansion value for variable \"' + variable.name + '\"');\n }\n if (!d.val.length) {\n if (d.type) {\n // empty variables (empty string)\n // still lead to a separator being appended!\n buffer.push('');\n }\n // no data, no action\n continue;\n }\n\n if (d.type > 1 && variable.maxlength) {\n // composite variable cannot specify maxlength\n throw new Error('Invalid expression: Prefix modifier not applicable to variable \"' + variable.name + '\"');\n }\n\n // expand the given variable\n buffer.push(URITemplate['expand' + type](\n d,\n options,\n variable.explode,\n variable.explode && options.separator || ',',\n variable.maxlength,\n variable.name\n ));\n }\n\n if (buffer.length) {\n return options.prefix + buffer.join(options.separator);\n } else {\n // prefix is not prepended for empty expressions\n return '';\n }\n };\n // expand a named variable\n URITemplate.expandNamed = function(d, options, explode, separator, length, name) {\n // variable result buffer\n var result = '';\n // peformance crap\n var encode = options.encode;\n var empty_name_separator = options.empty_name_separator;\n // flag noting if values are already encoded\n var _encode = !d[encode].length;\n // key for named expansion\n var _name = d.type === 2 ? '': URI[encode](name);\n var _value, i, l;\n\n // for each found value\n for (i = 0, l = d.val.length; i < l; i++) {\n if (length) {\n // maxlength must be determined before encoding can happen\n _value = URI[encode](d.val[i][1].substring(0, length));\n if (d.type === 2) {\n // apply maxlength to keys of objects as well\n _name = URI[encode](d.val[i][0].substring(0, length));\n }\n } else if (_encode) {\n // encode value\n _value = URI[encode](d.val[i][1]);\n if (d.type === 2) {\n // encode name and cache encoded value\n _name = URI[encode](d.val[i][0]);\n d[encode].push([_name, _value]);\n } else {\n // cache encoded value\n d[encode].push([undefined, _value]);\n }\n } else {\n // values are already encoded and can be pulled from cache\n _value = d[encode][i][1];\n if (d.type === 2) {\n _name = d[encode][i][0];\n }\n }\n\n if (result) {\n // unless we're the first value, prepend the separator\n result += separator;\n }\n\n if (!explode) {\n if (!i) {\n // first element, so prepend variable name\n result += URI[encode](name) + (empty_name_separator || _value ? '=' : '');\n }\n\n if (d.type === 2) {\n // without explode-modifier, keys of objects are returned comma-separated\n result += _name + ',';\n }\n\n result += _value;\n } else {\n // only add the = if it is either default (?&) or there actually is a value (;)\n result += _name + (empty_name_separator || _value ? '=' : '') + _value;\n }\n }\n\n return result;\n };\n // expand an unnamed variable\n URITemplate.expandUnnamed = function(d, options, explode, separator, length) {\n // variable result buffer\n var result = '';\n // performance crap\n var encode = options.encode;\n var empty_name_separator = options.empty_name_separator;\n // flag noting if values are already encoded\n var _encode = !d[encode].length;\n var _name, _value, i, l;\n\n // for each found value\n for (i = 0, l = d.val.length; i < l; i++) {\n if (length) {\n // maxlength must be determined before encoding can happen\n _value = URI[encode](d.val[i][1].substring(0, length));\n } else if (_encode) {\n // encode and cache value\n _value = URI[encode](d.val[i][1]);\n d[encode].push([\n d.type === 2 ? URI[encode](d.val[i][0]) : undefined,\n _value\n ]);\n } else {\n // value already encoded, pull from cache\n _value = d[encode][i][1];\n }\n\n if (result) {\n // unless we're the first value, prepend the separator\n result += separator;\n }\n\n if (d.type === 2) {\n if (length) {\n // maxlength also applies to keys of objects\n _name = URI[encode](d.val[i][0].substring(0, length));\n } else {\n // at this point the name must already be encoded\n _name = d[encode][i][0];\n }\n\n result += _name;\n if (explode) {\n // explode-modifier separates name and value by \"=\"\n result += (empty_name_separator || _value ? '=' : '');\n } else {\n // no explode-modifier separates name and value by \",\"\n result += ',';\n }\n }\n\n result += _value;\n }\n\n return result;\n };\n\n URITemplate.noConflict = function() {\n if (root.URITemplate === URITemplate) {\n root.URITemplate = _URITemplate;\n }\n\n return URITemplate;\n };\n\n // expand template through given data map\n p.expand = function(data, opts) {\n var result = '';\n\n if (!this.parts || !this.parts.length) {\n // lazilyy parse the template\n this.parse();\n }\n\n if (!(data instanceof Data)) {\n // make given data available through the\n // optimized data handling thingie\n data = new Data(data);\n }\n\n for (var i = 0, l = this.parts.length; i < l; i++) {\n /*jshint laxbreak: true */\n result += typeof this.parts[i] === 'string'\n // literal string\n ? this.parts[i]\n // expression\n : URITemplate.expand(this.parts[i], data, opts);\n /*jshint laxbreak: false */\n }\n\n return result;\n };\n // parse template into action tokens\n p.parse = function() {\n // performance crap\n var expression = this.expression;\n var ePattern = URITemplate.EXPRESSION_PATTERN;\n var vPattern = URITemplate.VARIABLE_PATTERN;\n var nPattern = URITemplate.VARIABLE_NAME_PATTERN;\n var lPattern = URITemplate.LITERAL_PATTERN;\n // token result buffer\n var parts = [];\n // position within source template\n var pos = 0;\n var variables, eMatch, vMatch;\n\n var checkLiteral = function(literal) {\n if (literal.match(lPattern)) {\n throw new Error('Invalid Literal \"' + literal + '\"');\n }\n return literal;\n };\n\n // RegExp is shared accross all templates,\n // which requires a manual reset\n ePattern.lastIndex = 0;\n // I don't like while(foo = bar()) loops,\n // to make things simpler I go while(true) and break when required\n while (true) {\n eMatch = ePattern.exec(expression);\n if (eMatch === null) {\n // push trailing literal\n parts.push(checkLiteral(expression.substring(pos)));\n break;\n } else {\n // push leading literal\n parts.push(checkLiteral(expression.substring(pos, eMatch.index)));\n pos = eMatch.index + eMatch[0].length;\n }\n\n if (!operators[eMatch[1]]) {\n throw new Error('Unknown Operator \"' + eMatch[1] + '\" in \"' + eMatch[0] + '\"');\n } else if (!eMatch[3]) {\n throw new Error('Unclosed Expression \"' + eMatch[0] + '\"');\n }\n\n // parse variable-list\n variables = eMatch[2].split(',');\n for (var i = 0, l = variables.length; i < l; i++) {\n vMatch = variables[i].match(vPattern);\n if (vMatch === null) {\n throw new Error('Invalid Variable \"' + variables[i] + '\" in \"' + eMatch[0] + '\"');\n } else if (vMatch[1].match(nPattern)) {\n throw new Error('Invalid Variable Name \"' + vMatch[1] + '\" in \"' + eMatch[0] + '\"');\n }\n\n variables[i] = {\n name: vMatch[1],\n explode: !!vMatch[3],\n maxlength: vMatch[4] && parseInt(vMatch[4], 10)\n };\n }\n\n if (!variables.length) {\n throw new Error('Expression Missing Variable(s) \"' + eMatch[0] + '\"');\n }\n\n parts.push({\n expression: eMatch[0],\n operator: eMatch[1],\n variables: variables\n });\n }\n\n if (!parts.length) {\n // template doesn't contain any expressions\n // so it is a simple literal string\n // this probably should fire a warning or something?\n parts.push(checkLiteral(expression));\n }\n\n this.parts = parts;\n return this;\n };\n\n // simplify data structures\n Data.prototype.get = function(key) {\n // performance crap\n var data = this.data;\n // cache for processed data-point\n var d = {\n // type of data 0: undefined/null, 1: string, 2: object, 3: array\n type: 0,\n // original values (except undefined/null)\n val: [],\n // cache for encoded values (only for non-maxlength expansion)\n encode: [],\n encodeReserved: []\n };\n var i, l, value;\n\n if (this.cache[key] !== undefined) {\n // we've already processed this key\n return this.cache[key];\n }\n\n this.cache[key] = d;\n\n if (String(Object.prototype.toString.call(data)) === '[object Function]') {\n // data itself is a callback (global callback)\n value = data(key);\n } else if (String(Object.prototype.toString.call(data[key])) === '[object Function]') {\n // data is a map of callbacks (local callback)\n value = data[key](key);\n } else {\n // data is a map of data\n value = data[key];\n }\n\n // generalize input into [ [name1, value1], [name2, value2], \u2026 ]\n // so expansion has to deal with a single data structure only\n if (value === undefined || value === null) {\n // undefined and null values are to be ignored completely\n return d;\n } else if (String(Object.prototype.toString.call(value)) === '[object Array]') {\n for (i = 0, l = value.length; i < l; i++) {\n if (value[i] !== undefined && value[i] !== null) {\n // arrays don't have names\n d.val.push([undefined, String(value[i])]);\n }\n }\n\n if (d.val.length) {\n // only treat non-empty arrays as arrays\n d.type = 3; // array\n }\n } else if (String(Object.prototype.toString.call(value)) === '[object Object]') {\n for (i in value) {\n if (hasOwn.call(value, i) && value[i] !== undefined && value[i] !== null) {\n // objects have keys, remember them for named expansion\n d.val.push([i, String(value[i])]);\n }\n }\n\n if (d.val.length) {\n // only treat non-empty objects as objects\n d.type = 2; // object\n }\n } else {\n d.type = 1; // primitive string (could've been string, number, boolean and objects with a toString())\n // arrays don't have names\n d.val.push([undefined, String(value)]);\n }\n\n return d;\n };\n\n // hook into URI for fluid access\n URI.expand = function(expression, data) {\n var template = new URITemplate(expression);\n var expansion = template.expand(data);\n\n return new URI(expansion);\n };\n\n return URITemplate;\n}));\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.SERVER_TIME_MAP = exports.AxiosClient = void 0;\nexports.getCurrentServerTime = getCurrentServerTime;\nexports.version = void 0;\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\nvar _httpClient = require(\"../http-client\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar version = exports.version = \"14.2.0\";\nvar SERVER_TIME_MAP = exports.SERVER_TIME_MAP = {};\nvar AxiosClient = exports.AxiosClient = (0, _httpClient.create)({\n headers: {\n \"X-Client-Name\": \"js-stellar-sdk\",\n \"X-Client-Version\": version\n }\n});\nfunction toSeconds(ms) {\n return Math.floor(ms / 1000);\n}\nAxiosClient.interceptors.response.use(function (response) {\n var hostname = (0, _urijs.default)(response.config.url).hostname();\n var serverTime = 0;\n if (response.headers instanceof Headers) {\n var dateHeader = response.headers.get(\"date\");\n if (dateHeader) {\n serverTime = toSeconds(Date.parse(dateHeader));\n }\n } else if (_typeof(response.headers) === \"object\" && \"date\" in response.headers) {\n var headers = response.headers;\n if (typeof headers.date === \"string\") {\n serverTime = toSeconds(Date.parse(headers.date));\n }\n }\n var localTimeRecorded = toSeconds(new Date().getTime());\n if (!Number.isNaN(serverTime)) {\n SERVER_TIME_MAP[hostname] = {\n serverTime: serverTime,\n localTimeRecorded: localTimeRecorded\n };\n }\n return response;\n});\nvar _default = exports.default = AxiosClient;\nfunction getCurrentServerTime(hostname) {\n var entry = SERVER_TIME_MAP[hostname];\n if (!entry || !entry.localTimeRecorded || !entry.serverTime) {\n return null;\n }\n var serverTime = entry.serverTime,\n localTimeRecorded = entry.localTimeRecorded;\n var currentTime = toSeconds(new Date().getTime());\n if (currentTime - localTimeRecorded > 60 * 5) {\n return null;\n }\n return currentTime - localTimeRecorded + serverTime;\n}", "var parse = require('url').parse\nvar events = require('events')\nvar https = require('https')\nvar http = require('http')\nvar util = require('util')\n\nvar httpsOptions = [\n 'pfx', 'key', 'passphrase', 'cert', 'ca', 'ciphers',\n 'rejectUnauthorized', 'secureProtocol', 'servername', 'checkServerIdentity'\n]\n\nvar bom = [239, 187, 191]\nvar colon = 58\nvar space = 32\nvar lineFeed = 10\nvar carriageReturn = 13\n// Beyond 256KB we could not observe any gain in performance\nvar maxBufferAheadAllocation = 1024 * 256\n// Headers matching the pattern should be removed when redirecting to different origin\nvar reUnsafeHeader = /^(cookie|authorization)$/i\n\nfunction hasBom (buf) {\n return bom.every(function (charCode, index) {\n return buf[index] === charCode\n })\n}\n\n/**\n * Creates a new EventSource object\n *\n * @param {String} url the URL to which to connect\n * @param {Object} [eventSourceInitDict] extra init params. See README for details.\n * @api public\n **/\nfunction EventSource (url, eventSourceInitDict) {\n var readyState = EventSource.CONNECTING\n var headers = eventSourceInitDict && eventSourceInitDict.headers\n var hasNewOrigin = false\n Object.defineProperty(this, 'readyState', {\n get: function () {\n return readyState\n }\n })\n\n Object.defineProperty(this, 'url', {\n get: function () {\n return url\n }\n })\n\n var self = this\n self.reconnectInterval = 1000\n self.connectionInProgress = false\n\n function onConnectionClosed (message) {\n if (readyState === EventSource.CLOSED) return\n readyState = EventSource.CONNECTING\n _emit('error', new Event('error', {message: message}))\n\n // The url may have been changed by a temporary redirect. If that's the case,\n // revert it now, and flag that we are no longer pointing to a new origin\n if (reconnectUrl) {\n url = reconnectUrl\n reconnectUrl = null\n hasNewOrigin = false\n }\n setTimeout(function () {\n if (readyState !== EventSource.CONNECTING || self.connectionInProgress) {\n return\n }\n self.connectionInProgress = true\n connect()\n }, self.reconnectInterval)\n }\n\n var req\n var lastEventId = ''\n if (headers && headers['Last-Event-ID']) {\n lastEventId = headers['Last-Event-ID']\n delete headers['Last-Event-ID']\n }\n\n var discardTrailingNewline = false\n var data = ''\n var eventName = ''\n\n var reconnectUrl = null\n\n function connect () {\n var options = parse(url)\n var isSecure = options.protocol === 'https:'\n options.headers = { 'Cache-Control': 'no-cache', 'Accept': 'text/event-stream' }\n if (lastEventId) options.headers['Last-Event-ID'] = lastEventId\n if (headers) {\n var reqHeaders = hasNewOrigin ? removeUnsafeHeaders(headers) : headers\n for (var i in reqHeaders) {\n var header = reqHeaders[i]\n if (header) {\n options.headers[i] = header\n }\n }\n }\n\n // Legacy: this should be specified as `eventSourceInitDict.https.rejectUnauthorized`,\n // but for now exists as a backwards-compatibility layer\n options.rejectUnauthorized = !(eventSourceInitDict && !eventSourceInitDict.rejectUnauthorized)\n\n if (eventSourceInitDict && eventSourceInitDict.createConnection !== undefined) {\n options.createConnection = eventSourceInitDict.createConnection\n }\n\n // If specify http proxy, make the request to sent to the proxy server,\n // and include the original url in path and Host headers\n var useProxy = eventSourceInitDict && eventSourceInitDict.proxy\n if (useProxy) {\n var proxy = parse(eventSourceInitDict.proxy)\n isSecure = proxy.protocol === 'https:'\n\n options.protocol = isSecure ? 'https:' : 'http:'\n options.path = url\n options.headers.Host = options.host\n options.hostname = proxy.hostname\n options.host = proxy.host\n options.port = proxy.port\n }\n\n // If https options are specified, merge them into the request options\n if (eventSourceInitDict && eventSourceInitDict.https) {\n for (var optName in eventSourceInitDict.https) {\n if (httpsOptions.indexOf(optName) === -1) {\n continue\n }\n\n var option = eventSourceInitDict.https[optName]\n if (option !== undefined) {\n options[optName] = option\n }\n }\n }\n\n // Pass this on to the XHR\n if (eventSourceInitDict && eventSourceInitDict.withCredentials !== undefined) {\n options.withCredentials = eventSourceInitDict.withCredentials\n }\n\n req = (isSecure ? https : http).request(options, function (res) {\n self.connectionInProgress = false\n // Handle HTTP errors\n if (res.statusCode === 500 || res.statusCode === 502 || res.statusCode === 503 || res.statusCode === 504) {\n _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))\n onConnectionClosed()\n return\n }\n\n // Handle HTTP redirects\n if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307) {\n var location = res.headers.location\n if (!location) {\n // Server sent redirect response without Location header.\n _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))\n return\n }\n var prevOrigin = new URL(url).origin\n var nextOrigin = new URL(location).origin\n hasNewOrigin = prevOrigin !== nextOrigin\n if (res.statusCode === 307) reconnectUrl = url\n url = location\n process.nextTick(connect)\n return\n }\n\n if (res.statusCode !== 200) {\n _emit('error', new Event('error', {status: res.statusCode, message: res.statusMessage}))\n return self.close()\n }\n\n readyState = EventSource.OPEN\n res.on('close', function () {\n res.removeAllListeners('close')\n res.removeAllListeners('end')\n onConnectionClosed()\n })\n\n res.on('end', function () {\n res.removeAllListeners('close')\n res.removeAllListeners('end')\n onConnectionClosed()\n })\n _emit('open', new Event('open'))\n\n // text/event-stream parser adapted from webkit's\n // Source/WebCore/page/EventSource.cpp\n var buf\n var newBuffer\n var startingPos = 0\n var startingFieldLength = -1\n var newBufferSize = 0\n var bytesUsed = 0\n\n res.on('data', function (chunk) {\n if (!buf) {\n buf = chunk\n if (hasBom(buf)) {\n buf = buf.slice(bom.length)\n }\n bytesUsed = buf.length\n } else {\n if (chunk.length > buf.length - bytesUsed) {\n newBufferSize = (buf.length * 2) + chunk.length\n if (newBufferSize > maxBufferAheadAllocation) {\n newBufferSize = buf.length + chunk.length + maxBufferAheadAllocation\n }\n newBuffer = Buffer.alloc(newBufferSize)\n buf.copy(newBuffer, 0, 0, bytesUsed)\n buf = newBuffer\n }\n chunk.copy(buf, bytesUsed)\n bytesUsed += chunk.length\n }\n\n var pos = 0\n var length = bytesUsed\n\n while (pos < length) {\n if (discardTrailingNewline) {\n if (buf[pos] === lineFeed) {\n ++pos\n }\n discardTrailingNewline = false\n }\n\n var lineLength = -1\n var fieldLength = startingFieldLength\n var c\n\n for (var i = startingPos; lineLength < 0 && i < length; ++i) {\n c = buf[i]\n if (c === colon) {\n if (fieldLength < 0) {\n fieldLength = i - pos\n }\n } else if (c === carriageReturn) {\n discardTrailingNewline = true\n lineLength = i - pos\n } else if (c === lineFeed) {\n lineLength = i - pos\n }\n }\n\n if (lineLength < 0) {\n startingPos = length - pos\n startingFieldLength = fieldLength\n break\n } else {\n startingPos = 0\n startingFieldLength = -1\n }\n\n parseEventStreamLine(buf, pos, fieldLength, lineLength)\n\n pos += lineLength + 1\n }\n\n if (pos === length) {\n buf = void 0\n bytesUsed = 0\n } else if (pos > 0) {\n buf = buf.slice(pos, bytesUsed)\n bytesUsed = buf.length\n }\n })\n })\n\n req.on('error', function (err) {\n self.connectionInProgress = false\n onConnectionClosed(err.message)\n })\n\n if (req.setNoDelay) req.setNoDelay(true)\n req.end()\n }\n\n connect()\n\n function _emit () {\n if (self.listeners(arguments[0]).length > 0) {\n self.emit.apply(self, arguments)\n }\n }\n\n this._close = function () {\n if (readyState === EventSource.CLOSED) return\n readyState = EventSource.CLOSED\n if (req.abort) req.abort()\n if (req.xhr && req.xhr.abort) req.xhr.abort()\n }\n\n function parseEventStreamLine (buf, pos, fieldLength, lineLength) {\n if (lineLength === 0) {\n if (data.length > 0) {\n var type = eventName || 'message'\n _emit(type, new MessageEvent(type, {\n data: data.slice(0, -1), // remove trailing newline\n lastEventId: lastEventId,\n origin: new URL(url).origin\n }))\n data = ''\n }\n eventName = void 0\n } else if (fieldLength > 0) {\n var noValue = fieldLength < 0\n var step = 0\n var field = buf.slice(pos, pos + (noValue ? lineLength : fieldLength)).toString()\n\n if (noValue) {\n step = lineLength\n } else if (buf[pos + fieldLength + 1] !== space) {\n step = fieldLength + 1\n } else {\n step = fieldLength + 2\n }\n pos += step\n\n var valueLength = lineLength - step\n var value = buf.slice(pos, pos + valueLength).toString()\n\n if (field === 'data') {\n data += value + '\\n'\n } else if (field === 'event') {\n eventName = value\n } else if (field === 'id') {\n lastEventId = value\n } else if (field === 'retry') {\n var retry = parseInt(value, 10)\n if (!Number.isNaN(retry)) {\n self.reconnectInterval = retry\n }\n }\n }\n }\n}\n\nmodule.exports = EventSource\n\nutil.inherits(EventSource, events.EventEmitter)\nEventSource.prototype.constructor = EventSource; // make stacktraces readable\n\n['open', 'error', 'message'].forEach(function (method) {\n Object.defineProperty(EventSource.prototype, 'on' + method, {\n /**\n * Returns the current listener\n *\n * @return {Mixed} the set function or undefined\n * @api private\n */\n get: function get () {\n var listener = this.listeners(method)[0]\n return listener ? (listener._listener ? listener._listener : listener) : undefined\n },\n\n /**\n * Start listening for events\n *\n * @param {Function} listener the listener\n * @return {Mixed} the set function or undefined\n * @api private\n */\n set: function set (listener) {\n this.removeAllListeners(method)\n this.addEventListener(method, listener)\n }\n })\n})\n\n/**\n * Ready states\n */\nObject.defineProperty(EventSource, 'CONNECTING', {enumerable: true, value: 0})\nObject.defineProperty(EventSource, 'OPEN', {enumerable: true, value: 1})\nObject.defineProperty(EventSource, 'CLOSED', {enumerable: true, value: 2})\n\nEventSource.prototype.CONNECTING = 0\nEventSource.prototype.OPEN = 1\nEventSource.prototype.CLOSED = 2\n\n/**\n * Closes the connection, if one is made, and sets the readyState attribute to 2 (closed)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventSource/close\n * @api public\n */\nEventSource.prototype.close = function () {\n this._close()\n}\n\n/**\n * Emulates the W3C Browser based WebSocket interface using addEventListener.\n *\n * @param {String} type A string representing the event type to listen out for\n * @param {Function} listener callback\n * @see https://developer.mozilla.org/en/DOM/element.addEventListener\n * @see http://dev.w3.org/html5/websockets/#the-websocket-interface\n * @api public\n */\nEventSource.prototype.addEventListener = function addEventListener (type, listener) {\n if (typeof listener === 'function') {\n // store a reference so we can return the original function again\n listener._listener = listener\n this.on(type, listener)\n }\n}\n\n/**\n * Emulates the W3C Browser based WebSocket interface using dispatchEvent.\n *\n * @param {Event} event An event to be dispatched\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/dispatchEvent\n * @api public\n */\nEventSource.prototype.dispatchEvent = function dispatchEvent (event) {\n if (!event.type) {\n throw new Error('UNSPECIFIED_EVENT_TYPE_ERR')\n }\n // if event is instance of an CustomEvent (or has 'details' property),\n // send the detail object as the payload for the event\n this.emit(event.type, event.detail)\n}\n\n/**\n * Emulates the W3C Browser based WebSocket interface using removeEventListener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener callback\n * @see https://developer.mozilla.org/en/DOM/element.removeEventListener\n * @see http://dev.w3.org/html5/websockets/#the-websocket-interface\n * @api public\n */\nEventSource.prototype.removeEventListener = function removeEventListener (type, listener) {\n if (typeof listener === 'function') {\n listener._listener = undefined\n this.removeListener(type, listener)\n }\n}\n\n/**\n * W3C Event\n *\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#interface-Event\n * @api private\n */\nfunction Event (type, optionalProperties) {\n Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true })\n if (optionalProperties) {\n for (var f in optionalProperties) {\n if (optionalProperties.hasOwnProperty(f)) {\n Object.defineProperty(this, f, { writable: false, value: optionalProperties[f], enumerable: true })\n }\n }\n }\n}\n\n/**\n * W3C MessageEvent\n *\n * @see http://www.w3.org/TR/webmessaging/#event-definitions\n * @api private\n */\nfunction MessageEvent (type, eventInitDict) {\n Object.defineProperty(this, 'type', { writable: false, value: type, enumerable: true })\n for (var f in eventInitDict) {\n if (eventInitDict.hasOwnProperty(f)) {\n Object.defineProperty(this, f, { writable: false, value: eventInitDict[f], enumerable: true })\n }\n }\n}\n\n/**\n * Returns a new object of headers that does not include any authorization and cookie headers\n *\n * @param {Object} headers An object of headers ({[headerName]: headerValue})\n * @return {Object} a new object of headers\n * @api private\n */\nfunction removeUnsafeHeaders (headers) {\n var safe = {}\n for (var key in headers) {\n if (reUnsafeHeader.test(key)) {\n continue\n }\n\n safe[key] = headers[key]\n }\n\n return safe\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CallBuilder = void 0;\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\nvar _URITemplate = _interopRequireDefault(require(\"urijs/src/URITemplate\"));\nvar _errors = require(\"../errors\");\nvar _horizon_axios_client = require(\"./horizon_axios_client\");\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar JOINABLE = [\"transaction\"];\nvar anyGlobal = global;\nvar EventSource;\nif (typeof true !== \"undefined\" && true) {\n var _ref, _anyGlobal$EventSourc, _anyGlobal$window;\n EventSource = (_ref = (_anyGlobal$EventSourc = anyGlobal.EventSource) !== null && _anyGlobal$EventSourc !== void 0 ? _anyGlobal$EventSourc : (_anyGlobal$window = anyGlobal.window) === null || _anyGlobal$window === void 0 ? void 0 : _anyGlobal$window.EventSource) !== null && _ref !== void 0 ? _ref : require(\"eventsource\");\n}\nvar CallBuilder = exports.CallBuilder = function () {\n function CallBuilder(serverUrl) {\n var neighborRoot = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n _classCallCheck(this, CallBuilder);\n this.url = serverUrl.clone();\n this.filter = [];\n this.originalSegments = this.url.segment() || [];\n this.neighborRoot = neighborRoot;\n }\n return _createClass(CallBuilder, [{\n key: \"call\",\n value: function call() {\n var _this = this;\n this.checkFilter();\n return this._sendNormalRequest(this.url).then(function (r) {\n return _this._parseResponse(r);\n });\n }\n }, {\n key: \"stream\",\n value: function stream() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (EventSource === undefined) {\n throw new Error(\"Streaming requires eventsource to be enabled. If you need this functionality, compile with USE_EVENTSOURCE=true.\");\n }\n this.checkFilter();\n this.url.setQuery(\"X-Client-Name\", \"js-stellar-sdk\");\n this.url.setQuery(\"X-Client-Version\", _horizon_axios_client.version);\n var es;\n var timeout;\n var createTimeout = function createTimeout() {\n timeout = setTimeout(function () {\n var _es;\n (_es = es) === null || _es === void 0 || _es.close();\n es = _createEventSource();\n }, options.reconnectTimeout || 15 * 1000);\n };\n var _createEventSource = function createEventSource() {\n try {\n es = new EventSource(_this2.url.toString());\n } catch (err) {\n if (options.onerror) {\n options.onerror(err);\n }\n }\n createTimeout();\n if (!es) {\n return es;\n }\n var closed = false;\n var onClose = function onClose() {\n if (closed) {\n return;\n }\n clearTimeout(timeout);\n es.close();\n _createEventSource();\n closed = true;\n };\n var onMessage = function onMessage(message) {\n if (message.type === \"close\") {\n onClose();\n return;\n }\n var result = message.data ? _this2._parseRecord(JSON.parse(message.data)) : message;\n if (result.paging_token) {\n _this2.url.setQuery(\"cursor\", result.paging_token);\n }\n clearTimeout(timeout);\n createTimeout();\n if (typeof options.onmessage !== \"undefined\") {\n options.onmessage(result);\n }\n };\n var onError = function onError(error) {\n if (options.onerror) {\n options.onerror(error);\n }\n };\n if (es.addEventListener) {\n es.addEventListener(\"message\", onMessage.bind(_this2));\n es.addEventListener(\"error\", onError.bind(_this2));\n es.addEventListener(\"close\", onClose.bind(_this2));\n } else {\n es.onmessage = onMessage.bind(_this2);\n es.onerror = onError.bind(_this2);\n }\n return es;\n };\n _createEventSource();\n return function () {\n var _es2;\n clearTimeout(timeout);\n (_es2 = es) === null || _es2 === void 0 || _es2.close();\n };\n }\n }, {\n key: \"cursor\",\n value: function cursor(_cursor) {\n this.url.setQuery(\"cursor\", _cursor);\n return this;\n }\n }, {\n key: \"limit\",\n value: function limit(recordsNumber) {\n this.url.setQuery(\"limit\", recordsNumber.toString());\n return this;\n }\n }, {\n key: \"order\",\n value: function order(direction) {\n this.url.setQuery(\"order\", direction);\n return this;\n }\n }, {\n key: \"join\",\n value: function join(include) {\n this.url.setQuery(\"join\", include);\n return this;\n }\n }, {\n key: \"forEndpoint\",\n value: function forEndpoint(endpoint, param) {\n if (this.neighborRoot === \"\") {\n throw new Error(\"Invalid usage: neighborRoot not set in constructor\");\n }\n this.filter.push([endpoint, param, this.neighborRoot]);\n return this;\n }\n }, {\n key: \"checkFilter\",\n value: function checkFilter() {\n if (this.filter.length >= 2) {\n throw new _errors.BadRequestError(\"Too many filters specified\", this.filter);\n }\n if (this.filter.length === 1) {\n var newSegment = this.originalSegments.concat(this.filter[0]);\n this.url.segment(newSegment);\n }\n }\n }, {\n key: \"_requestFnForLink\",\n value: function _requestFnForLink(link) {\n var _this3 = this;\n return _asyncToGenerator(_regenerator().m(function _callee() {\n var opts,\n uri,\n template,\n r,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n opts = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};\n if (link.templated) {\n template = (0, _URITemplate.default)(link.href);\n uri = (0, _urijs.default)(template.expand(opts));\n } else {\n uri = (0, _urijs.default)(link.href);\n }\n _context.n = 1;\n return _this3._sendNormalRequest(uri);\n case 1:\n r = _context.v;\n return _context.a(2, _this3._parseResponse(r));\n }\n }, _callee);\n }));\n }\n }, {\n key: \"_parseRecord\",\n value: function _parseRecord(json) {\n var _this4 = this;\n if (!json._links) {\n return json;\n }\n Object.keys(json._links).forEach(function (key) {\n var n = json._links[key];\n var included = false;\n if (typeof json[key] !== \"undefined\") {\n json[\"\".concat(key, \"_attr\")] = json[key];\n included = true;\n }\n if (included && JOINABLE.indexOf(key) >= 0) {\n var record = _this4._parseRecord(json[key]);\n json[key] = _asyncToGenerator(_regenerator().m(function _callee2() {\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n return _context2.a(2, record);\n }\n }, _callee2);\n }));\n } else {\n json[key] = _this4._requestFnForLink(n);\n }\n });\n return json;\n }\n }, {\n key: \"_sendNormalRequest\",\n value: function () {\n var _sendNormalRequest2 = _asyncToGenerator(_regenerator().m(function _callee3(initialUrl) {\n var url;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n url = initialUrl;\n if (url.authority() === \"\") {\n url = url.authority(this.url.authority());\n }\n if (url.protocol() === \"\") {\n url = url.protocol(this.url.protocol());\n }\n return _context3.a(2, _horizon_axios_client.AxiosClient.get(url.toString()).then(function (response) {\n return response.data;\n }).catch(this._handleNetworkError));\n }\n }, _callee3, this);\n }));\n function _sendNormalRequest(_x) {\n return _sendNormalRequest2.apply(this, arguments);\n }\n return _sendNormalRequest;\n }()\n }, {\n key: \"_parseResponse\",\n value: function _parseResponse(json) {\n if (json._embedded && json._embedded.records) {\n return this._toCollectionPage(json);\n }\n return this._parseRecord(json);\n }\n }, {\n key: \"_toCollectionPage\",\n value: function _toCollectionPage(json) {\n var _this5 = this;\n for (var i = 0; i < json._embedded.records.length; i += 1) {\n json._embedded.records[i] = this._parseRecord(json._embedded.records[i]);\n }\n return {\n records: json._embedded.records,\n next: function () {\n var _next2 = _asyncToGenerator(_regenerator().m(function _callee4() {\n var r;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return _this5._sendNormalRequest((0, _urijs.default)(json._links.next.href));\n case 1:\n r = _context4.v;\n return _context4.a(2, _this5._toCollectionPage(r));\n }\n }, _callee4);\n }));\n function next() {\n return _next2.apply(this, arguments);\n }\n return next;\n }(),\n prev: function () {\n var _prev = _asyncToGenerator(_regenerator().m(function _callee5() {\n var r;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return _this5._sendNormalRequest((0, _urijs.default)(json._links.prev.href));\n case 1:\n r = _context5.v;\n return _context5.a(2, _this5._toCollectionPage(r));\n }\n }, _callee5);\n }));\n function prev() {\n return _prev.apply(this, arguments);\n }\n return prev;\n }()\n };\n }\n }, {\n key: \"_handleNetworkError\",\n value: (function () {\n var _handleNetworkError2 = _asyncToGenerator(_regenerator().m(function _callee6(error) {\n var _error$response$statu, _error$response$statu2;\n var _t;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n if (!(error.response && error.response.status)) {\n _context6.n = 4;\n break;\n }\n _t = error.response.status;\n _context6.n = _t === 404 ? 1 : 2;\n break;\n case 1:\n return _context6.a(2, Promise.reject(new _errors.NotFoundError((_error$response$statu = error.response.statusText) !== null && _error$response$statu !== void 0 ? _error$response$statu : \"Not Found\", error.response.data)));\n case 2:\n return _context6.a(2, Promise.reject(new _errors.NetworkError((_error$response$statu2 = error.response.statusText) !== null && _error$response$statu2 !== void 0 ? _error$response$statu2 : \"Unknown\", error.response.data)));\n case 3:\n _context6.n = 5;\n break;\n case 4:\n return _context6.a(2, Promise.reject(new Error(error.message)));\n case 5:\n return _context6.a(2);\n }\n }, _callee6);\n }));\n function _handleNetworkError(_x2) {\n return _handleNetworkError2.apply(this, arguments);\n }\n return _handleNetworkError;\n }())\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AccountCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar AccountCallBuilder = exports.AccountCallBuilder = function (_CallBuilder) {\n function AccountCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, AccountCallBuilder);\n _this = _callSuper(this, AccountCallBuilder, [serverUrl]);\n _this.url.segment(\"accounts\");\n return _this;\n }\n _inherits(AccountCallBuilder, _CallBuilder);\n return _createClass(AccountCallBuilder, [{\n key: \"accountId\",\n value: function accountId(id) {\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([id]);\n return builder;\n }\n }, {\n key: \"forSigner\",\n value: function forSigner(id) {\n this.url.setQuery(\"signer\", id);\n return this;\n }\n }, {\n key: \"forAsset\",\n value: function forAsset(asset) {\n this.url.setQuery(\"asset\", \"\".concat(asset));\n return this;\n }\n }, {\n key: \"sponsor\",\n value: function sponsor(id) {\n this.url.setQuery(\"sponsor\", id);\n return this;\n }\n }, {\n key: \"forLiquidityPool\",\n value: function forLiquidityPool(id) {\n this.url.setQuery(\"liquidity_pool\", id);\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AssetsCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar AssetsCallBuilder = exports.AssetsCallBuilder = function (_CallBuilder) {\n function AssetsCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, AssetsCallBuilder);\n _this = _callSuper(this, AssetsCallBuilder, [serverUrl]);\n _this.url.segment(\"assets\");\n return _this;\n }\n _inherits(AssetsCallBuilder, _CallBuilder);\n return _createClass(AssetsCallBuilder, [{\n key: \"forCode\",\n value: function forCode(value) {\n this.url.setQuery(\"asset_code\", value);\n return this;\n }\n }, {\n key: \"forIssuer\",\n value: function forIssuer(value) {\n this.url.setQuery(\"asset_issuer\", value);\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ClaimableBalanceCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar ClaimableBalanceCallBuilder = exports.ClaimableBalanceCallBuilder = function (_CallBuilder) {\n function ClaimableBalanceCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, ClaimableBalanceCallBuilder);\n _this = _callSuper(this, ClaimableBalanceCallBuilder, [serverUrl]);\n _this.url.segment(\"claimable_balances\");\n return _this;\n }\n _inherits(ClaimableBalanceCallBuilder, _CallBuilder);\n return _createClass(ClaimableBalanceCallBuilder, [{\n key: \"claimableBalance\",\n value: function claimableBalance(claimableBalanceId) {\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([claimableBalanceId]);\n return builder;\n }\n }, {\n key: \"sponsor\",\n value: function sponsor(_sponsor) {\n this.url.setQuery(\"sponsor\", _sponsor);\n return this;\n }\n }, {\n key: \"claimant\",\n value: function claimant(_claimant) {\n this.url.setQuery(\"claimant\", _claimant);\n return this;\n }\n }, {\n key: \"asset\",\n value: function asset(_asset) {\n this.url.setQuery(\"asset\", _asset.toString());\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EffectCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar EffectCallBuilder = exports.EffectCallBuilder = function (_CallBuilder) {\n function EffectCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, EffectCallBuilder);\n _this = _callSuper(this, EffectCallBuilder, [serverUrl, \"effects\"]);\n _this.url.segment(\"effects\");\n return _this;\n }\n _inherits(EffectCallBuilder, _CallBuilder);\n return _createClass(EffectCallBuilder, [{\n key: \"forAccount\",\n value: function forAccount(accountId) {\n return this.forEndpoint(\"accounts\", accountId);\n }\n }, {\n key: \"forLedger\",\n value: function forLedger(sequence) {\n return this.forEndpoint(\"ledgers\", sequence.toString());\n }\n }, {\n key: \"forTransaction\",\n value: function forTransaction(transactionId) {\n return this.forEndpoint(\"transactions\", transactionId);\n }\n }, {\n key: \"forOperation\",\n value: function forOperation(operationId) {\n return this.forEndpoint(\"operations\", operationId);\n }\n }, {\n key: \"forLiquidityPool\",\n value: function forLiquidityPool(poolId) {\n return this.forEndpoint(\"liquidity_pools\", poolId);\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FriendbotBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar FriendbotBuilder = exports.FriendbotBuilder = function (_CallBuilder) {\n function FriendbotBuilder(serverUrl, address) {\n var _this;\n _classCallCheck(this, FriendbotBuilder);\n _this = _callSuper(this, FriendbotBuilder, [serverUrl]);\n _this.url.segment(\"friendbot\");\n _this.url.setQuery(\"addr\", address);\n return _this;\n }\n _inherits(FriendbotBuilder, _CallBuilder);\n return _createClass(FriendbotBuilder);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LedgerCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar LedgerCallBuilder = exports.LedgerCallBuilder = function (_CallBuilder) {\n function LedgerCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, LedgerCallBuilder);\n _this = _callSuper(this, LedgerCallBuilder, [serverUrl]);\n _this.url.segment(\"ledgers\");\n return _this;\n }\n _inherits(LedgerCallBuilder, _CallBuilder);\n return _createClass(LedgerCallBuilder, [{\n key: \"ledger\",\n value: function ledger(sequence) {\n this.filter.push([\"ledgers\", sequence.toString()]);\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LiquidityPoolCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar LiquidityPoolCallBuilder = exports.LiquidityPoolCallBuilder = function (_CallBuilder) {\n function LiquidityPoolCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, LiquidityPoolCallBuilder);\n _this = _callSuper(this, LiquidityPoolCallBuilder, [serverUrl]);\n _this.url.segment(\"liquidity_pools\");\n return _this;\n }\n _inherits(LiquidityPoolCallBuilder, _CallBuilder);\n return _createClass(LiquidityPoolCallBuilder, [{\n key: \"forAssets\",\n value: function forAssets() {\n for (var _len = arguments.length, assets = new Array(_len), _key = 0; _key < _len; _key++) {\n assets[_key] = arguments[_key];\n }\n var assetList = assets.map(function (asset) {\n return asset.toString();\n }).join(\",\");\n this.url.setQuery(\"reserves\", assetList);\n return this;\n }\n }, {\n key: \"forAccount\",\n value: function forAccount(id) {\n this.url.setQuery(\"account\", id);\n return this;\n }\n }, {\n key: \"liquidityPoolId\",\n value: function liquidityPoolId(id) {\n if (!id.match(/[a-fA-F0-9]{64}/)) {\n throw new TypeError(\"\".concat(id, \" does not look like a liquidity pool ID\"));\n }\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([id.toLowerCase()]);\n return builder;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OfferCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar OfferCallBuilder = exports.OfferCallBuilder = function (_CallBuilder) {\n function OfferCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, OfferCallBuilder);\n _this = _callSuper(this, OfferCallBuilder, [serverUrl, \"offers\"]);\n _this.url.segment(\"offers\");\n return _this;\n }\n _inherits(OfferCallBuilder, _CallBuilder);\n return _createClass(OfferCallBuilder, [{\n key: \"offer\",\n value: function offer(offerId) {\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([offerId]);\n return builder;\n }\n }, {\n key: \"forAccount\",\n value: function forAccount(id) {\n return this.forEndpoint(\"accounts\", id);\n }\n }, {\n key: \"buying\",\n value: function buying(asset) {\n if (!asset.isNative()) {\n this.url.setQuery(\"buying_asset_type\", asset.getAssetType());\n this.url.setQuery(\"buying_asset_code\", asset.getCode());\n this.url.setQuery(\"buying_asset_issuer\", asset.getIssuer());\n } else {\n this.url.setQuery(\"buying_asset_type\", \"native\");\n }\n return this;\n }\n }, {\n key: \"selling\",\n value: function selling(asset) {\n if (!asset.isNative()) {\n this.url.setQuery(\"selling_asset_type\", asset.getAssetType());\n this.url.setQuery(\"selling_asset_code\", asset.getCode());\n this.url.setQuery(\"selling_asset_issuer\", asset.getIssuer());\n } else {\n this.url.setQuery(\"selling_asset_type\", \"native\");\n }\n return this;\n }\n }, {\n key: \"sponsor\",\n value: function sponsor(id) {\n this.url.setQuery(\"sponsor\", id);\n return this;\n }\n }, {\n key: \"seller\",\n value: function seller(_seller) {\n this.url.setQuery(\"seller\", _seller);\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OperationCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar OperationCallBuilder = exports.OperationCallBuilder = function (_CallBuilder) {\n function OperationCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, OperationCallBuilder);\n _this = _callSuper(this, OperationCallBuilder, [serverUrl, \"operations\"]);\n _this.url.segment(\"operations\");\n return _this;\n }\n _inherits(OperationCallBuilder, _CallBuilder);\n return _createClass(OperationCallBuilder, [{\n key: \"operation\",\n value: function operation(operationId) {\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([operationId]);\n return builder;\n }\n }, {\n key: \"forAccount\",\n value: function forAccount(accountId) {\n return this.forEndpoint(\"accounts\", accountId);\n }\n }, {\n key: \"forClaimableBalance\",\n value: function forClaimableBalance(claimableBalanceId) {\n return this.forEndpoint(\"claimable_balances\", claimableBalanceId);\n }\n }, {\n key: \"forLedger\",\n value: function forLedger(sequence) {\n return this.forEndpoint(\"ledgers\", sequence.toString());\n }\n }, {\n key: \"forTransaction\",\n value: function forTransaction(transactionId) {\n return this.forEndpoint(\"transactions\", transactionId);\n }\n }, {\n key: \"forLiquidityPool\",\n value: function forLiquidityPool(poolId) {\n return this.forEndpoint(\"liquidity_pools\", poolId);\n }\n }, {\n key: \"includeFailed\",\n value: function includeFailed(value) {\n this.url.setQuery(\"include_failed\", value.toString());\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OrderbookCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar OrderbookCallBuilder = exports.OrderbookCallBuilder = function (_CallBuilder) {\n function OrderbookCallBuilder(serverUrl, selling, buying) {\n var _this;\n _classCallCheck(this, OrderbookCallBuilder);\n _this = _callSuper(this, OrderbookCallBuilder, [serverUrl]);\n _this.url.segment(\"order_book\");\n if (!selling.isNative()) {\n _this.url.setQuery(\"selling_asset_type\", selling.getAssetType());\n _this.url.setQuery(\"selling_asset_code\", selling.getCode());\n _this.url.setQuery(\"selling_asset_issuer\", selling.getIssuer());\n } else {\n _this.url.setQuery(\"selling_asset_type\", \"native\");\n }\n if (!buying.isNative()) {\n _this.url.setQuery(\"buying_asset_type\", buying.getAssetType());\n _this.url.setQuery(\"buying_asset_code\", buying.getCode());\n _this.url.setQuery(\"buying_asset_issuer\", buying.getIssuer());\n } else {\n _this.url.setQuery(\"buying_asset_type\", \"native\");\n }\n return _this;\n }\n _inherits(OrderbookCallBuilder, _CallBuilder);\n return _createClass(OrderbookCallBuilder);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PaymentCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar PaymentCallBuilder = exports.PaymentCallBuilder = function (_CallBuilder) {\n function PaymentCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, PaymentCallBuilder);\n _this = _callSuper(this, PaymentCallBuilder, [serverUrl, \"payments\"]);\n _this.url.segment(\"payments\");\n return _this;\n }\n _inherits(PaymentCallBuilder, _CallBuilder);\n return _createClass(PaymentCallBuilder, [{\n key: \"forAccount\",\n value: function forAccount(accountId) {\n return this.forEndpoint(\"accounts\", accountId);\n }\n }, {\n key: \"forLedger\",\n value: function forLedger(sequence) {\n return this.forEndpoint(\"ledgers\", sequence.toString());\n }\n }, {\n key: \"forTransaction\",\n value: function forTransaction(transactionId) {\n return this.forEndpoint(\"transactions\", transactionId);\n }\n }, {\n key: \"includeFailed\",\n value: function includeFailed(value) {\n this.url.setQuery(\"include_failed\", value.toString());\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StrictReceivePathCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar StrictReceivePathCallBuilder = exports.StrictReceivePathCallBuilder = function (_CallBuilder) {\n function StrictReceivePathCallBuilder(serverUrl, source, destinationAsset, destinationAmount) {\n var _this;\n _classCallCheck(this, StrictReceivePathCallBuilder);\n _this = _callSuper(this, StrictReceivePathCallBuilder, [serverUrl]);\n _this.url.segment(\"paths/strict-receive\");\n if (typeof source === \"string\") {\n _this.url.setQuery(\"source_account\", source);\n } else {\n var assets = source.map(function (asset) {\n if (asset.isNative()) {\n return \"native\";\n }\n return \"\".concat(asset.getCode(), \":\").concat(asset.getIssuer());\n }).join(\",\");\n _this.url.setQuery(\"source_assets\", assets);\n }\n _this.url.setQuery(\"destination_amount\", destinationAmount);\n if (!destinationAsset.isNative()) {\n _this.url.setQuery(\"destination_asset_type\", destinationAsset.getAssetType());\n _this.url.setQuery(\"destination_asset_code\", destinationAsset.getCode());\n _this.url.setQuery(\"destination_asset_issuer\", destinationAsset.getIssuer());\n } else {\n _this.url.setQuery(\"destination_asset_type\", \"native\");\n }\n return _this;\n }\n _inherits(StrictReceivePathCallBuilder, _CallBuilder);\n return _createClass(StrictReceivePathCallBuilder);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StrictSendPathCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar StrictSendPathCallBuilder = exports.StrictSendPathCallBuilder = function (_CallBuilder) {\n function StrictSendPathCallBuilder(serverUrl, sourceAsset, sourceAmount, destination) {\n var _this;\n _classCallCheck(this, StrictSendPathCallBuilder);\n _this = _callSuper(this, StrictSendPathCallBuilder, [serverUrl]);\n _this.url.segment(\"paths/strict-send\");\n if (sourceAsset.isNative()) {\n _this.url.setQuery(\"source_asset_type\", \"native\");\n } else {\n _this.url.setQuery(\"source_asset_type\", sourceAsset.getAssetType());\n _this.url.setQuery(\"source_asset_code\", sourceAsset.getCode());\n _this.url.setQuery(\"source_asset_issuer\", sourceAsset.getIssuer());\n }\n _this.url.setQuery(\"source_amount\", sourceAmount);\n if (typeof destination === \"string\") {\n _this.url.setQuery(\"destination_account\", destination);\n } else {\n var assets = destination.map(function (asset) {\n if (asset.isNative()) {\n return \"native\";\n }\n return \"\".concat(asset.getCode(), \":\").concat(asset.getIssuer());\n }).join(\",\");\n _this.url.setQuery(\"destination_assets\", assets);\n }\n return _this;\n }\n _inherits(StrictSendPathCallBuilder, _CallBuilder);\n return _createClass(StrictSendPathCallBuilder);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TradeAggregationCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nvar _errors = require(\"../errors\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar allowedResolutions = [60000, 300000, 900000, 3600000, 86400000, 604800000];\nvar TradeAggregationCallBuilder = exports.TradeAggregationCallBuilder = function (_CallBuilder) {\n function TradeAggregationCallBuilder(serverUrl, base, counter, start_time, end_time, resolution, offset) {\n var _this;\n _classCallCheck(this, TradeAggregationCallBuilder);\n _this = _callSuper(this, TradeAggregationCallBuilder, [serverUrl]);\n _this.url.segment(\"trade_aggregations\");\n if (!base.isNative()) {\n _this.url.setQuery(\"base_asset_type\", base.getAssetType());\n _this.url.setQuery(\"base_asset_code\", base.getCode());\n _this.url.setQuery(\"base_asset_issuer\", base.getIssuer());\n } else {\n _this.url.setQuery(\"base_asset_type\", \"native\");\n }\n if (!counter.isNative()) {\n _this.url.setQuery(\"counter_asset_type\", counter.getAssetType());\n _this.url.setQuery(\"counter_asset_code\", counter.getCode());\n _this.url.setQuery(\"counter_asset_issuer\", counter.getIssuer());\n } else {\n _this.url.setQuery(\"counter_asset_type\", \"native\");\n }\n if (typeof start_time !== \"number\" || typeof end_time !== \"number\") {\n throw new _errors.BadRequestError(\"Invalid time bounds\", [start_time, end_time]);\n } else {\n _this.url.setQuery(\"start_time\", start_time.toString());\n _this.url.setQuery(\"end_time\", end_time.toString());\n }\n if (!_this.isValidResolution(resolution)) {\n throw new _errors.BadRequestError(\"Invalid resolution\", resolution);\n } else {\n _this.url.setQuery(\"resolution\", resolution.toString());\n }\n if (!_this.isValidOffset(offset, resolution)) {\n throw new _errors.BadRequestError(\"Invalid offset\", offset);\n } else {\n _this.url.setQuery(\"offset\", offset.toString());\n }\n return _this;\n }\n _inherits(TradeAggregationCallBuilder, _CallBuilder);\n return _createClass(TradeAggregationCallBuilder, [{\n key: \"isValidResolution\",\n value: function isValidResolution(resolution) {\n return allowedResolutions.some(function (allowed) {\n return allowed === resolution;\n });\n }\n }, {\n key: \"isValidOffset\",\n value: function isValidOffset(offset, resolution) {\n var hour = 3600000;\n return !(offset > resolution || offset >= 24 * hour || offset % hour !== 0);\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TradesCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar TradesCallBuilder = exports.TradesCallBuilder = function (_CallBuilder) {\n function TradesCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, TradesCallBuilder);\n _this = _callSuper(this, TradesCallBuilder, [serverUrl, \"trades\"]);\n _this.url.segment(\"trades\");\n return _this;\n }\n _inherits(TradesCallBuilder, _CallBuilder);\n return _createClass(TradesCallBuilder, [{\n key: \"forAssetPair\",\n value: function forAssetPair(base, counter) {\n if (!base.isNative()) {\n this.url.setQuery(\"base_asset_type\", base.getAssetType());\n this.url.setQuery(\"base_asset_code\", base.getCode());\n this.url.setQuery(\"base_asset_issuer\", base.getIssuer());\n } else {\n this.url.setQuery(\"base_asset_type\", \"native\");\n }\n if (!counter.isNative()) {\n this.url.setQuery(\"counter_asset_type\", counter.getAssetType());\n this.url.setQuery(\"counter_asset_code\", counter.getCode());\n this.url.setQuery(\"counter_asset_issuer\", counter.getIssuer());\n } else {\n this.url.setQuery(\"counter_asset_type\", \"native\");\n }\n return this;\n }\n }, {\n key: \"forOffer\",\n value: function forOffer(offerId) {\n this.url.setQuery(\"offer_id\", offerId);\n return this;\n }\n }, {\n key: \"forType\",\n value: function forType(tradeType) {\n this.url.setQuery(\"trade_type\", tradeType);\n return this;\n }\n }, {\n key: \"forAccount\",\n value: function forAccount(accountId) {\n return this.forEndpoint(\"accounts\", accountId);\n }\n }, {\n key: \"forLiquidityPool\",\n value: function forLiquidityPool(liquidityPoolId) {\n return this.forEndpoint(\"liquidity_pools\", liquidityPoolId);\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransactionCallBuilder = void 0;\nvar _call_builder = require(\"./call_builder\");\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nvar TransactionCallBuilder = exports.TransactionCallBuilder = function (_CallBuilder) {\n function TransactionCallBuilder(serverUrl) {\n var _this;\n _classCallCheck(this, TransactionCallBuilder);\n _this = _callSuper(this, TransactionCallBuilder, [serverUrl, \"transactions\"]);\n _this.url.segment(\"transactions\");\n return _this;\n }\n _inherits(TransactionCallBuilder, _CallBuilder);\n return _createClass(TransactionCallBuilder, [{\n key: \"transaction\",\n value: function transaction(transactionId) {\n var builder = new _call_builder.CallBuilder(this.url.clone());\n builder.filter.push([transactionId]);\n return builder;\n }\n }, {\n key: \"forAccount\",\n value: function forAccount(accountId) {\n return this.forEndpoint(\"accounts\", accountId);\n }\n }, {\n key: \"forClaimableBalance\",\n value: function forClaimableBalance(claimableBalanceId) {\n return this.forEndpoint(\"claimable_balances\", claimableBalanceId);\n }\n }, {\n key: \"forLedger\",\n value: function forLedger(sequence) {\n return this.forEndpoint(\"ledgers\", sequence.toString());\n }\n }, {\n key: \"forLiquidityPool\",\n value: function forLiquidityPool(poolId) {\n return this.forEndpoint(\"liquidity_pools\", poolId);\n }\n }, {\n key: \"includeFailed\",\n value: function includeFailed(value) {\n this.url.setQuery(\"include_failed\", value.toString());\n return this;\n }\n }]);\n}(_call_builder.CallBuilder);", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SUBMIT_TRANSACTION_TIMEOUT = exports.HorizonServer = void 0;\nvar _bignumber = _interopRequireDefault(require(\"bignumber.js\"));\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\nvar _call_builder = require(\"./call_builder\");\nvar _config = require(\"../config\");\nvar _errors = require(\"../errors\");\nvar _account_call_builder = require(\"./account_call_builder\");\nvar _account_response = require(\"./account_response\");\nvar _assets_call_builder = require(\"./assets_call_builder\");\nvar _claimable_balances_call_builder = require(\"./claimable_balances_call_builder\");\nvar _effect_call_builder = require(\"./effect_call_builder\");\nvar _friendbot_builder = require(\"./friendbot_builder\");\nvar _ledger_call_builder = require(\"./ledger_call_builder\");\nvar _liquidity_pool_call_builder = require(\"./liquidity_pool_call_builder\");\nvar _offer_call_builder = require(\"./offer_call_builder\");\nvar _operation_call_builder = require(\"./operation_call_builder\");\nvar _orderbook_call_builder = require(\"./orderbook_call_builder\");\nvar _payment_call_builder = require(\"./payment_call_builder\");\nvar _strict_receive_path_call_builder = require(\"./strict_receive_path_call_builder\");\nvar _strict_send_path_call_builder = require(\"./strict_send_path_call_builder\");\nvar _trade_aggregation_call_builder = require(\"./trade_aggregation_call_builder\");\nvar _trades_call_builder = require(\"./trades_call_builder\");\nvar _transaction_call_builder = require(\"./transaction_call_builder\");\nvar _horizon_axios_client = _interopRequireWildcard(require(\"./horizon_axios_client\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t3 in e) \"default\" !== _t3 && {}.hasOwnProperty.call(e, _t3) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t3)) && (i.get || i.set) ? o(f, _t3, i) : f[_t3] = e[_t3]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar SUBMIT_TRANSACTION_TIMEOUT = exports.SUBMIT_TRANSACTION_TIMEOUT = 60 * 1000;\nvar STROOPS_IN_LUMEN = 10000000;\nvar ACCOUNT_REQUIRES_MEMO = \"MQ==\";\nfunction getAmountInLumens(amt) {\n return new _bignumber.default(amt).div(STROOPS_IN_LUMEN).toString();\n}\nvar HorizonServer = exports.HorizonServer = function () {\n function HorizonServer(serverURL) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, HorizonServer);\n this.serverURL = (0, _urijs.default)(serverURL);\n var allowHttp = typeof opts.allowHttp === \"undefined\" ? _config.Config.isAllowHttp() : opts.allowHttp;\n var customHeaders = {};\n if (opts.appName) {\n customHeaders[\"X-App-Name\"] = opts.appName;\n }\n if (opts.appVersion) {\n customHeaders[\"X-App-Version\"] = opts.appVersion;\n }\n if (opts.authToken) {\n customHeaders[\"X-Auth-Token\"] = opts.authToken;\n }\n if (opts.headers) {\n Object.assign(customHeaders, opts.headers);\n }\n if (Object.keys(customHeaders).length > 0) {\n _horizon_axios_client.default.interceptors.request.use(function (config) {\n config.headers = config.headers || {};\n config.headers = Object.assign(config.headers, customHeaders);\n return config;\n });\n }\n if (this.serverURL.protocol() !== \"https\" && !allowHttp) {\n throw new Error(\"Cannot connect to insecure horizon server\");\n }\n }\n return _createClass(HorizonServer, [{\n key: \"fetchTimebounds\",\n value: (function () {\n var _fetchTimebounds = _asyncToGenerator(_regenerator().m(function _callee(seconds) {\n var _isRetry,\n currentTime,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _isRetry = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;\n currentTime = (0, _horizon_axios_client.getCurrentServerTime)(this.serverURL.hostname());\n if (!currentTime) {\n _context.n = 1;\n break;\n }\n return _context.a(2, {\n minTime: 0,\n maxTime: currentTime + seconds\n });\n case 1:\n if (!_isRetry) {\n _context.n = 2;\n break;\n }\n return _context.a(2, {\n minTime: 0,\n maxTime: Math.floor(new Date().getTime() / 1000) + seconds\n });\n case 2:\n _context.n = 3;\n return _horizon_axios_client.default.get((0, _urijs.default)(this.serverURL).toString());\n case 3:\n return _context.a(2, this.fetchTimebounds(seconds, true));\n }\n }, _callee, this);\n }));\n function fetchTimebounds(_x) {\n return _fetchTimebounds.apply(this, arguments);\n }\n return fetchTimebounds;\n }())\n }, {\n key: \"fetchBaseFee\",\n value: (function () {\n var _fetchBaseFee = _asyncToGenerator(_regenerator().m(function _callee2() {\n var response;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return this.feeStats();\n case 1:\n response = _context2.v;\n return _context2.a(2, parseInt(response.last_ledger_base_fee, 10) || 100);\n }\n }, _callee2, this);\n }));\n function fetchBaseFee() {\n return _fetchBaseFee.apply(this, arguments);\n }\n return fetchBaseFee;\n }())\n }, {\n key: \"feeStats\",\n value: (function () {\n var _feeStats = _asyncToGenerator(_regenerator().m(function _callee3() {\n var cb;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n cb = new _call_builder.CallBuilder((0, _urijs.default)(this.serverURL));\n cb.filter.push([\"fee_stats\"]);\n return _context3.a(2, cb.call());\n }\n }, _callee3, this);\n }));\n function feeStats() {\n return _feeStats.apply(this, arguments);\n }\n return feeStats;\n }())\n }, {\n key: \"root\",\n value: (function () {\n var _root = _asyncToGenerator(_regenerator().m(function _callee4() {\n var cb;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n cb = new _call_builder.CallBuilder((0, _urijs.default)(this.serverURL));\n return _context4.a(2, cb.call());\n }\n }, _callee4, this);\n }));\n function root() {\n return _root.apply(this, arguments);\n }\n return root;\n }())\n }, {\n key: \"submitTransaction\",\n value: (function () {\n var _submitTransaction = _asyncToGenerator(_regenerator().m(function _callee5(transaction) {\n var opts,\n tx,\n _args5 = arguments;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n opts = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : {\n skipMemoRequiredCheck: false\n };\n if (opts.skipMemoRequiredCheck) {\n _context5.n = 1;\n break;\n }\n _context5.n = 1;\n return this.checkMemoRequired(transaction);\n case 1:\n tx = encodeURIComponent(transaction.toEnvelope().toXDR().toString(\"base64\"));\n return _context5.a(2, _horizon_axios_client.default.post((0, _urijs.default)(this.serverURL).segment(\"transactions\").toString(), \"tx=\".concat(tx), {\n timeout: SUBMIT_TRANSACTION_TIMEOUT,\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n }\n }).then(function (response) {\n if (!response.data.result_xdr) {\n return response.data;\n }\n var responseXDR = _stellarBase.xdr.TransactionResult.fromXDR(response.data.result_xdr, \"base64\");\n var results = responseXDR.result().value();\n var offerResults;\n var hasManageOffer;\n if (results.length) {\n offerResults = results.map(function (result, i) {\n if (result.value().switch().name !== \"manageBuyOffer\" && result.value().switch().name !== \"manageSellOffer\") {\n return null;\n }\n hasManageOffer = true;\n var amountBought = new _bignumber.default(0);\n var amountSold = new _bignumber.default(0);\n var offerSuccess = result.value().value().success();\n var offersClaimed = offerSuccess.offersClaimed().map(function (offerClaimedAtom) {\n var offerClaimed = offerClaimedAtom.value();\n var sellerId = \"\";\n switch (offerClaimedAtom.switch()) {\n case _stellarBase.xdr.ClaimAtomType.claimAtomTypeV0():\n sellerId = _stellarBase.StrKey.encodeEd25519PublicKey(offerClaimed.sellerEd25519());\n break;\n case _stellarBase.xdr.ClaimAtomType.claimAtomTypeOrderBook():\n sellerId = _stellarBase.StrKey.encodeEd25519PublicKey(offerClaimed.sellerId().ed25519());\n break;\n default:\n throw new Error(\"Invalid offer result type: \".concat(offerClaimedAtom.switch()));\n }\n var claimedOfferAmountBought = new _bignumber.default(offerClaimed.amountBought().toString());\n var claimedOfferAmountSold = new _bignumber.default(offerClaimed.amountSold().toString());\n amountBought = amountBought.plus(claimedOfferAmountSold);\n amountSold = amountSold.plus(claimedOfferAmountBought);\n var sold = _stellarBase.Asset.fromOperation(offerClaimed.assetSold());\n var bought = _stellarBase.Asset.fromOperation(offerClaimed.assetBought());\n var assetSold = {\n type: sold.getAssetType(),\n assetCode: sold.getCode(),\n issuer: sold.getIssuer()\n };\n var assetBought = {\n type: bought.getAssetType(),\n assetCode: bought.getCode(),\n issuer: bought.getIssuer()\n };\n return {\n sellerId: sellerId,\n offerId: offerClaimed.offerId().toString(),\n assetSold: assetSold,\n amountSold: getAmountInLumens(claimedOfferAmountSold),\n assetBought: assetBought,\n amountBought: getAmountInLumens(claimedOfferAmountBought)\n };\n });\n var effect = offerSuccess.offer().switch().name;\n var currentOffer;\n if (typeof offerSuccess.offer().value === \"function\" && offerSuccess.offer().value()) {\n var offerXDR = offerSuccess.offer().value();\n currentOffer = {\n offerId: offerXDR.offerId().toString(),\n selling: {},\n buying: {},\n amount: getAmountInLumens(offerXDR.amount().toString()),\n price: {\n n: offerXDR.price().n(),\n d: offerXDR.price().d()\n }\n };\n var selling = _stellarBase.Asset.fromOperation(offerXDR.selling());\n currentOffer.selling = {\n type: selling.getAssetType(),\n assetCode: selling.getCode(),\n issuer: selling.getIssuer()\n };\n var buying = _stellarBase.Asset.fromOperation(offerXDR.buying());\n currentOffer.buying = {\n type: buying.getAssetType(),\n assetCode: buying.getCode(),\n issuer: buying.getIssuer()\n };\n }\n return {\n offersClaimed: offersClaimed,\n effect: effect,\n operationIndex: i,\n currentOffer: currentOffer,\n amountBought: getAmountInLumens(amountBought),\n amountSold: getAmountInLumens(amountSold),\n isFullyOpen: !offersClaimed.length && effect !== \"manageOfferDeleted\",\n wasPartiallyFilled: !!offersClaimed.length && effect !== \"manageOfferDeleted\",\n wasImmediatelyFilled: !!offersClaimed.length && effect === \"manageOfferDeleted\",\n wasImmediatelyDeleted: !offersClaimed.length && effect === \"manageOfferDeleted\"\n };\n }).filter(function (result) {\n return !!result;\n });\n }\n return _objectSpread(_objectSpread({}, response.data), {}, {\n offerResults: hasManageOffer ? offerResults : undefined\n });\n }).catch(function (response) {\n if (response instanceof Error) {\n return Promise.reject(response);\n }\n return Promise.reject(new _errors.BadResponseError(\"Transaction submission failed. Server responded: \".concat(response.status, \" \").concat(response.statusText), response.data));\n }));\n }\n }, _callee5, this);\n }));\n function submitTransaction(_x2) {\n return _submitTransaction.apply(this, arguments);\n }\n return submitTransaction;\n }())\n }, {\n key: \"submitAsyncTransaction\",\n value: (function () {\n var _submitAsyncTransaction = _asyncToGenerator(_regenerator().m(function _callee6(transaction) {\n var opts,\n tx,\n _args6 = arguments;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n opts = _args6.length > 1 && _args6[1] !== undefined ? _args6[1] : {\n skipMemoRequiredCheck: false\n };\n if (opts.skipMemoRequiredCheck) {\n _context6.n = 1;\n break;\n }\n _context6.n = 1;\n return this.checkMemoRequired(transaction);\n case 1:\n tx = encodeURIComponent(transaction.toEnvelope().toXDR().toString(\"base64\"));\n return _context6.a(2, _horizon_axios_client.default.post((0, _urijs.default)(this.serverURL).segment(\"transactions_async\").toString(), \"tx=\".concat(tx), {\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n }\n }).then(function (response) {\n return response.data;\n }).catch(function (response) {\n if (response instanceof Error) {\n return Promise.reject(response);\n }\n return Promise.reject(new _errors.BadResponseError(\"Transaction submission failed. Server responded: \".concat(response.status, \" \").concat(response.statusText), response.data));\n }));\n }\n }, _callee6, this);\n }));\n function submitAsyncTransaction(_x3) {\n return _submitAsyncTransaction.apply(this, arguments);\n }\n return submitAsyncTransaction;\n }())\n }, {\n key: \"accounts\",\n value: function accounts() {\n return new _account_call_builder.AccountCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"claimableBalances\",\n value: function claimableBalances() {\n return new _claimable_balances_call_builder.ClaimableBalanceCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"ledgers\",\n value: function ledgers() {\n return new _ledger_call_builder.LedgerCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"transactions\",\n value: function transactions() {\n return new _transaction_call_builder.TransactionCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"offers\",\n value: function offers() {\n return new _offer_call_builder.OfferCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"orderbook\",\n value: function orderbook(selling, buying) {\n return new _orderbook_call_builder.OrderbookCallBuilder((0, _urijs.default)(this.serverURL), selling, buying);\n }\n }, {\n key: \"trades\",\n value: function trades() {\n return new _trades_call_builder.TradesCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"operations\",\n value: function operations() {\n return new _operation_call_builder.OperationCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"liquidityPools\",\n value: function liquidityPools() {\n return new _liquidity_pool_call_builder.LiquidityPoolCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"strictReceivePaths\",\n value: function strictReceivePaths(source, destinationAsset, destinationAmount) {\n return new _strict_receive_path_call_builder.StrictReceivePathCallBuilder((0, _urijs.default)(this.serverURL), source, destinationAsset, destinationAmount);\n }\n }, {\n key: \"strictSendPaths\",\n value: function strictSendPaths(sourceAsset, sourceAmount, destination) {\n return new _strict_send_path_call_builder.StrictSendPathCallBuilder((0, _urijs.default)(this.serverURL), sourceAsset, sourceAmount, destination);\n }\n }, {\n key: \"payments\",\n value: function payments() {\n return new _payment_call_builder.PaymentCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"effects\",\n value: function effects() {\n return new _effect_call_builder.EffectCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"friendbot\",\n value: function friendbot(address) {\n return new _friendbot_builder.FriendbotBuilder((0, _urijs.default)(this.serverURL), address);\n }\n }, {\n key: \"assets\",\n value: function assets() {\n return new _assets_call_builder.AssetsCallBuilder((0, _urijs.default)(this.serverURL));\n }\n }, {\n key: \"loadAccount\",\n value: (function () {\n var _loadAccount = _asyncToGenerator(_regenerator().m(function _callee7(accountId) {\n var res;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n _context7.n = 1;\n return this.accounts().accountId(accountId).call();\n case 1:\n res = _context7.v;\n return _context7.a(2, new _account_response.AccountResponse(res));\n }\n }, _callee7, this);\n }));\n function loadAccount(_x4) {\n return _loadAccount.apply(this, arguments);\n }\n return loadAccount;\n }())\n }, {\n key: \"tradeAggregation\",\n value: function tradeAggregation(base, counter, start_time, end_time, resolution, offset) {\n return new _trade_aggregation_call_builder.TradeAggregationCallBuilder((0, _urijs.default)(this.serverURL), base, counter, start_time, end_time, resolution, offset);\n }\n }, {\n key: \"checkMemoRequired\",\n value: (function () {\n var _checkMemoRequired = _asyncToGenerator(_regenerator().m(function _callee8(transaction) {\n var destinations, i, operation, destination, account, _t, _t2;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.p = _context8.n) {\n case 0:\n if (transaction instanceof _stellarBase.FeeBumpTransaction) {\n transaction = transaction.innerTransaction;\n }\n if (!(transaction.memo.type !== \"none\")) {\n _context8.n = 1;\n break;\n }\n return _context8.a(2);\n case 1:\n destinations = new Set();\n i = 0;\n case 2:\n if (!(i < transaction.operations.length)) {\n _context8.n = 14;\n break;\n }\n operation = transaction.operations[i];\n _t = operation.type;\n _context8.n = _t === \"payment\" ? 3 : _t === \"pathPaymentStrictReceive\" ? 3 : _t === \"pathPaymentStrictSend\" ? 3 : _t === \"accountMerge\" ? 3 : 4;\n break;\n case 3:\n return _context8.a(3, 5);\n case 4:\n return _context8.a(3, 13);\n case 5:\n destination = operation.destination;\n if (!destinations.has(destination)) {\n _context8.n = 6;\n break;\n }\n return _context8.a(3, 13);\n case 6:\n destinations.add(destination);\n if (!destination.startsWith(\"M\")) {\n _context8.n = 7;\n break;\n }\n return _context8.a(3, 13);\n case 7:\n _context8.p = 7;\n _context8.n = 8;\n return this.loadAccount(destination);\n case 8:\n account = _context8.v;\n if (!(account.data_attr[\"config.memo_required\"] === ACCOUNT_REQUIRES_MEMO)) {\n _context8.n = 9;\n break;\n }\n throw new _errors.AccountRequiresMemoError(\"account requires memo\", destination, i);\n case 9:\n _context8.n = 13;\n break;\n case 10:\n _context8.p = 10;\n _t2 = _context8.v;\n if (!(_t2 instanceof _errors.AccountRequiresMemoError)) {\n _context8.n = 11;\n break;\n }\n throw _t2;\n case 11:\n if (_t2 instanceof _errors.NotFoundError) {\n _context8.n = 12;\n break;\n }\n throw _t2;\n case 12:\n return _context8.a(3, 13);\n case 13:\n i += 1;\n _context8.n = 2;\n break;\n case 14:\n return _context8.a(2);\n }\n }, _callee8, this, [[7, 10]]);\n }));\n function checkMemoRequired(_x5) {\n return _checkMemoRequired.apply(this, arguments);\n }\n return checkMemoRequired;\n }())\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n Server: true,\n AxiosClient: true,\n SERVER_TIME_MAP: true,\n getCurrentServerTime: true\n};\nObject.defineProperty(exports, \"AxiosClient\", {\n enumerable: true,\n get: function get() {\n return _horizon_axios_client.default;\n }\n});\nObject.defineProperty(exports, \"SERVER_TIME_MAP\", {\n enumerable: true,\n get: function get() {\n return _horizon_axios_client.SERVER_TIME_MAP;\n }\n});\nObject.defineProperty(exports, \"Server\", {\n enumerable: true,\n get: function get() {\n return _server.HorizonServer;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"getCurrentServerTime\", {\n enumerable: true,\n get: function get() {\n return _horizon_axios_client.getCurrentServerTime;\n }\n});\nvar _horizon_api = require(\"./horizon_api\");\nObject.keys(_horizon_api).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _horizon_api[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _horizon_api[key];\n }\n });\n});\nvar _server_api = require(\"./server_api\");\nObject.keys(_server_api).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _server_api[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _server_api[key];\n }\n });\n});\nvar _account_response = require(\"./account_response\");\nObject.keys(_account_response).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _account_response[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _account_response[key];\n }\n });\n});\nvar _server = require(\"./server\");\nvar _horizon_axios_client = _interopRequireWildcard(require(\"./horizon_axios_client\"));\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nvar _default = exports.default = module.exports;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Api = void 0;\nvar Api;\n(function (_Api) {\n var GetTransactionStatus = function (GetTransactionStatus) {\n GetTransactionStatus[\"SUCCESS\"] = \"SUCCESS\";\n GetTransactionStatus[\"NOT_FOUND\"] = \"NOT_FOUND\";\n GetTransactionStatus[\"FAILED\"] = \"FAILED\";\n return GetTransactionStatus;\n }({});\n _Api.GetTransactionStatus = GetTransactionStatus;\n function isSimulationError(sim) {\n return \"error\" in sim;\n }\n _Api.isSimulationError = isSimulationError;\n function isSimulationSuccess(sim) {\n return \"transactionData\" in sim;\n }\n _Api.isSimulationSuccess = isSimulationSuccess;\n function isSimulationRestore(sim) {\n return isSimulationSuccess(sim) && \"restorePreamble\" in sim && !!sim.restorePreamble.transactionData;\n }\n _Api.isSimulationRestore = isSimulationRestore;\n function isSimulationRaw(sim) {\n return !sim._parsed;\n }\n _Api.isSimulationRaw = isSimulationRaw;\n})(Api || (exports.Api = Api = {}));", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.version = exports.default = exports.AxiosClient = void 0;\nvar _httpClient = require(\"../http-client\");\nvar version = exports.version = \"14.2.0\";\nvar AxiosClient = exports.AxiosClient = (0, _httpClient.create)({\n headers: {\n \"X-Client-Name\": \"js-soroban-client\",\n \"X-Client-Version\": version\n }\n});\nvar _default = exports.default = AxiosClient;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.postObject = postObject;\nvar _axios = _interopRequireDefault(require(\"./axios\"));\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction hasOwnProperty(obj, prop) {\n return obj.hasOwnProperty(prop);\n}\nfunction postObject(_x, _x2) {\n return _postObject.apply(this, arguments);\n}\nfunction _postObject() {\n _postObject = _asyncToGenerator(_regenerator().m(function _callee(url, method) {\n var param,\n response,\n _response$data,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n param = _args.length > 2 && _args[2] !== undefined ? _args[2] : null;\n _context.n = 1;\n return _axios.default.post(url, {\n jsonrpc: \"2.0\",\n id: 1,\n method: method,\n params: param\n });\n case 1:\n response = _context.v;\n if (!hasOwnProperty(response.data, \"error\")) {\n _context.n = 2;\n break;\n }\n throw response.data.error;\n case 2:\n return _context.a(2, (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.result);\n case 3:\n return _context.a(2);\n }\n }, _callee);\n }));\n return _postObject.apply(this, arguments);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseRawEvents = parseRawEvents;\nexports.parseRawLedgerEntries = parseRawLedgerEntries;\nexports.parseRawSendTransaction = parseRawSendTransaction;\nexports.parseRawSimulation = parseRawSimulation;\nexports.parseRawTransactions = parseRawTransactions;\nexports.parseTransactionInfo = parseTransactionInfo;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _api = require(\"./api\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction parseRawSendTransaction(raw) {\n var errorResultXdr = raw.errorResultXdr,\n diagnosticEventsXdr = raw.diagnosticEventsXdr;\n delete raw.errorResultXdr;\n delete raw.diagnosticEventsXdr;\n if (errorResultXdr) {\n return _objectSpread(_objectSpread(_objectSpread({}, raw), diagnosticEventsXdr !== undefined && diagnosticEventsXdr.length > 0 && {\n diagnosticEvents: diagnosticEventsXdr.map(function (evt) {\n return _stellarBase.xdr.DiagnosticEvent.fromXDR(evt, \"base64\");\n })\n }), {}, {\n errorResult: _stellarBase.xdr.TransactionResult.fromXDR(errorResultXdr, \"base64\")\n });\n }\n return _objectSpread({}, raw);\n}\nfunction parseTransactionInfo(raw) {\n var _raw$events$contractE, _raw$events, _raw$events$transacti, _raw$events2;\n var meta = _stellarBase.xdr.TransactionMeta.fromXDR(raw.resultMetaXdr, \"base64\");\n var info = {\n ledger: raw.ledger,\n createdAt: raw.createdAt,\n applicationOrder: raw.applicationOrder,\n feeBump: raw.feeBump,\n envelopeXdr: _stellarBase.xdr.TransactionEnvelope.fromXDR(raw.envelopeXdr, \"base64\"),\n resultXdr: _stellarBase.xdr.TransactionResult.fromXDR(raw.resultXdr, \"base64\"),\n resultMetaXdr: meta,\n events: {\n contractEventsXdr: ((_raw$events$contractE = (_raw$events = raw.events) === null || _raw$events === void 0 ? void 0 : _raw$events.contractEventsXdr) !== null && _raw$events$contractE !== void 0 ? _raw$events$contractE : []).map(function (lst) {\n return lst.map(function (e) {\n return _stellarBase.xdr.ContractEvent.fromXDR(e, \"base64\");\n });\n }),\n transactionEventsXdr: ((_raw$events$transacti = (_raw$events2 = raw.events) === null || _raw$events2 === void 0 ? void 0 : _raw$events2.transactionEventsXdr) !== null && _raw$events$transacti !== void 0 ? _raw$events$transacti : []).map(function (e) {\n return _stellarBase.xdr.TransactionEvent.fromXDR(e, \"base64\");\n })\n }\n };\n switch (meta.switch()) {\n case 3:\n case 4:\n var metaV = meta.value();\n if (metaV.sorobanMeta() !== null) {\n var _metaV$sorobanMeta$re, _metaV$sorobanMeta;\n info.returnValue = (_metaV$sorobanMeta$re = (_metaV$sorobanMeta = metaV.sorobanMeta()) === null || _metaV$sorobanMeta === void 0 ? void 0 : _metaV$sorobanMeta.returnValue()) !== null && _metaV$sorobanMeta$re !== void 0 ? _metaV$sorobanMeta$re : undefined;\n }\n }\n if (raw.diagnosticEventsXdr) {\n info.diagnosticEventsXdr = raw.diagnosticEventsXdr.map(function (e) {\n return _stellarBase.xdr.DiagnosticEvent.fromXDR(e, \"base64\");\n });\n }\n return info;\n}\nfunction parseRawTransactions(r) {\n return _objectSpread({\n status: r.status,\n txHash: r.txHash\n }, parseTransactionInfo(r));\n}\nfunction parseRawEvents(raw) {\n var _raw$events3;\n return {\n latestLedger: raw.latestLedger,\n oldestLedger: raw.oldestLedger,\n latestLedgerCloseTime: raw.latestLedgerCloseTime,\n oldestLedgerCloseTime: raw.oldestLedgerCloseTime,\n cursor: raw.cursor,\n events: ((_raw$events3 = raw.events) !== null && _raw$events3 !== void 0 ? _raw$events3 : []).map(function (evt) {\n var clone = _objectSpread({}, evt);\n delete clone.contractId;\n return _objectSpread(_objectSpread(_objectSpread({}, clone), evt.contractId !== \"\" && {\n contractId: new _stellarBase.Contract(evt.contractId)\n }), {}, {\n topic: evt.topic.map(function (topic) {\n return _stellarBase.xdr.ScVal.fromXDR(topic, \"base64\");\n }),\n value: _stellarBase.xdr.ScVal.fromXDR(evt.value, \"base64\")\n });\n })\n };\n}\nfunction parseRawLedgerEntries(raw) {\n var _raw$entries;\n return {\n latestLedger: raw.latestLedger,\n entries: ((_raw$entries = raw.entries) !== null && _raw$entries !== void 0 ? _raw$entries : []).map(function (rawEntry) {\n if (!rawEntry.key || !rawEntry.xdr) {\n throw new TypeError(\"invalid ledger entry: \".concat(JSON.stringify(rawEntry)));\n }\n return _objectSpread({\n lastModifiedLedgerSeq: rawEntry.lastModifiedLedgerSeq,\n key: _stellarBase.xdr.LedgerKey.fromXDR(rawEntry.key, \"base64\"),\n val: _stellarBase.xdr.LedgerEntryData.fromXDR(rawEntry.xdr, \"base64\")\n }, rawEntry.liveUntilLedgerSeq !== undefined && {\n liveUntilLedgerSeq: rawEntry.liveUntilLedgerSeq\n });\n })\n };\n}\nfunction parseSuccessful(sim, partial) {\n var _sim$results$length, _sim$results, _sim$stateChanges$len, _sim$stateChanges, _sim$stateChanges2;\n var success = _objectSpread(_objectSpread(_objectSpread({}, partial), {}, {\n transactionData: new _stellarBase.SorobanDataBuilder(sim.transactionData),\n minResourceFee: sim.minResourceFee\n }, ((_sim$results$length = (_sim$results = sim.results) === null || _sim$results === void 0 ? void 0 : _sim$results.length) !== null && _sim$results$length !== void 0 ? _sim$results$length : 0 > 0) && {\n result: sim.results.map(function (row) {\n var _row$auth;\n return {\n auth: ((_row$auth = row.auth) !== null && _row$auth !== void 0 ? _row$auth : []).map(function (entry) {\n return _stellarBase.xdr.SorobanAuthorizationEntry.fromXDR(entry, \"base64\");\n }),\n retval: row.xdr ? _stellarBase.xdr.ScVal.fromXDR(row.xdr, \"base64\") : _stellarBase.xdr.ScVal.scvVoid()\n };\n })[0]\n }), ((_sim$stateChanges$len = (_sim$stateChanges = sim.stateChanges) === null || _sim$stateChanges === void 0 ? void 0 : _sim$stateChanges.length) !== null && _sim$stateChanges$len !== void 0 ? _sim$stateChanges$len : 0 > 0) && {\n stateChanges: (_sim$stateChanges2 = sim.stateChanges) === null || _sim$stateChanges2 === void 0 ? void 0 : _sim$stateChanges2.map(function (entryChange) {\n return {\n type: entryChange.type,\n key: _stellarBase.xdr.LedgerKey.fromXDR(entryChange.key, \"base64\"),\n before: entryChange.before ? _stellarBase.xdr.LedgerEntry.fromXDR(entryChange.before, \"base64\") : null,\n after: entryChange.after ? _stellarBase.xdr.LedgerEntry.fromXDR(entryChange.after, \"base64\") : null\n };\n })\n });\n if (!sim.restorePreamble || sim.restorePreamble.transactionData === \"\") {\n return success;\n }\n return _objectSpread(_objectSpread({}, success), {}, {\n restorePreamble: {\n minResourceFee: sim.restorePreamble.minResourceFee,\n transactionData: new _stellarBase.SorobanDataBuilder(sim.restorePreamble.transactionData)\n }\n });\n}\nfunction parseRawSimulation(sim) {\n var _sim$events$map, _sim$events;\n var looksRaw = _api.Api.isSimulationRaw(sim);\n if (!looksRaw) {\n return sim;\n }\n var base = {\n _parsed: true,\n id: sim.id,\n latestLedger: sim.latestLedger,\n events: (_sim$events$map = (_sim$events = sim.events) === null || _sim$events === void 0 ? void 0 : _sim$events.map(function (evt) {\n return _stellarBase.xdr.DiagnosticEvent.fromXDR(evt, \"base64\");\n })) !== null && _sim$events$map !== void 0 ? _sim$events$map : []\n };\n if (typeof sim.error === \"string\") {\n return _objectSpread(_objectSpread({}, base), {}, {\n error: sim.error\n });\n }\n return parseSuccessful(sim, base);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assembleTransaction = assembleTransaction;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _api = require(\"./api\");\nvar _parsers = require(\"./parsers\");\nfunction isSorobanTransaction(tx) {\n if (tx.operations.length !== 1) {\n return false;\n }\n switch (tx.operations[0].type) {\n case \"invokeHostFunction\":\n case \"extendFootprintTtl\":\n case \"restoreFootprint\":\n return true;\n default:\n return false;\n }\n}\nfunction assembleTransaction(raw, simulation) {\n if (\"innerTransaction\" in raw) {\n return assembleTransaction(raw.innerTransaction, simulation);\n }\n if (!isSorobanTransaction(raw)) {\n throw new TypeError(\"unsupported transaction: must contain exactly one \" + \"invokeHostFunction, extendFootprintTtl, or restoreFootprint \" + \"operation\");\n }\n var success = (0, _parsers.parseRawSimulation)(simulation);\n if (!_api.Api.isSimulationSuccess(success)) {\n throw new Error(\"simulation incorrect: \".concat(JSON.stringify(success)));\n }\n var classicFeeNum = parseInt(raw.fee) || 0;\n var minResourceFeeNum = parseInt(success.minResourceFee) || 0;\n var txnBuilder = _stellarBase.TransactionBuilder.cloneFrom(raw, {\n fee: (classicFeeNum + minResourceFeeNum).toString(),\n sorobanData: success.transactionData.build(),\n networkPassphrase: raw.networkPassphrase\n });\n if (raw.operations[0].type === \"invokeHostFunction\") {\n var _invokeOp$auth;\n txnBuilder.clearOperations();\n var invokeOp = raw.operations[0];\n var existingAuth = (_invokeOp$auth = invokeOp.auth) !== null && _invokeOp$auth !== void 0 ? _invokeOp$auth : [];\n txnBuilder.addOperation(_stellarBase.Operation.invokeHostFunction({\n source: invokeOp.source,\n func: invokeOp.func,\n auth: existingAuth.length > 0 ? existingAuth : success.result.auth\n }));\n }\n return txnBuilder;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SUBMIT_TRANSACTION_TIMEOUT = exports.RpcServer = exports.LinearSleepStrategy = exports.Durability = exports.BasicSleepStrategy = void 0;\nvar _urijs = _interopRequireDefault(require(\"urijs\"));\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _axios = _interopRequireDefault(require(\"./axios\"));\nvar jsonrpc = _interopRequireWildcard(require(\"./jsonrpc\"));\nvar _api = require(\"./api\");\nvar _transaction = require(\"./transaction\");\nvar _parsers = require(\"./parsers\");\nvar _utils = require(\"../utils\");\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t9 in e) \"default\" !== _t9 && {}.hasOwnProperty.call(e, _t9) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t9)) && (i.get || i.set) ? o(f, _t9, i) : f[_t9] = e[_t9]); return f; })(e, t); }\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar SUBMIT_TRANSACTION_TIMEOUT = exports.SUBMIT_TRANSACTION_TIMEOUT = 60 * 1000;\nvar Durability = exports.Durability = function (Durability) {\n Durability[\"Temporary\"] = \"temporary\";\n Durability[\"Persistent\"] = \"persistent\";\n return Durability;\n}({});\nvar DEFAULT_GET_TRANSACTION_TIMEOUT = 30;\nvar BasicSleepStrategy = exports.BasicSleepStrategy = function BasicSleepStrategy(_iter) {\n return 1000;\n};\nvar LinearSleepStrategy = exports.LinearSleepStrategy = function LinearSleepStrategy(iter) {\n return 1000 * iter;\n};\nfunction findCreatedAccountSequenceInTransactionMeta(meta) {\n var _operations$flatMap$f;\n var operations = [];\n switch (meta.switch()) {\n case 0:\n operations = meta.operations();\n break;\n case 1:\n case 2:\n case 3:\n case 4:\n operations = meta.value().operations();\n break;\n default:\n throw new Error(\"Unexpected transaction meta switch value\");\n }\n var sequenceNumber = (_operations$flatMap$f = operations.flatMap(function (op) {\n return op.changes();\n }).find(function (c) {\n return c.switch() === _stellarBase.xdr.LedgerEntryChangeType.ledgerEntryCreated() && c.created().data().switch() === _stellarBase.xdr.LedgerEntryType.account();\n })) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.created()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.data()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.account()) === null || _operations$flatMap$f === void 0 || (_operations$flatMap$f = _operations$flatMap$f.seqNum()) === null || _operations$flatMap$f === void 0 ? void 0 : _operations$flatMap$f.toString();\n if (sequenceNumber) {\n return sequenceNumber;\n }\n throw new Error(\"No account created in transaction\");\n}\nvar RpcServer = exports.RpcServer = function () {\n function RpcServer(serverURL) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, RpcServer);\n this.serverURL = (0, _urijs.default)(serverURL);\n if (opts.headers && Object.keys(opts.headers).length !== 0) {\n _axios.default.interceptors.request.use(function (config) {\n config.headers = Object.assign(config.headers, opts.headers);\n return config;\n });\n }\n if (this.serverURL.protocol() !== \"https\" && !opts.allowHttp) {\n throw new Error(\"Cannot connect to insecure Soroban RPC server if `allowHttp` isn't set\");\n }\n }\n return _createClass(RpcServer, [{\n key: \"getAccount\",\n value: (function () {\n var _getAccount = _asyncToGenerator(_regenerator().m(function _callee(address) {\n var entry;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return this.getAccountEntry(address);\n case 1:\n entry = _context.v;\n return _context.a(2, new _stellarBase.Account(address, entry.seqNum().toString()));\n }\n }, _callee, this);\n }));\n function getAccount(_x) {\n return _getAccount.apply(this, arguments);\n }\n return getAccount;\n }())\n }, {\n key: \"getAccountEntry\",\n value: (function () {\n var _getAccountEntry = _asyncToGenerator(_regenerator().m(function _callee2(address) {\n var ledgerKey, resp, _t;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.p = _context2.n) {\n case 0:\n ledgerKey = _stellarBase.xdr.LedgerKey.account(new _stellarBase.xdr.LedgerKeyAccount({\n accountId: _stellarBase.Keypair.fromPublicKey(address).xdrPublicKey()\n }));\n _context2.p = 1;\n _context2.n = 2;\n return this.getLedgerEntry(ledgerKey);\n case 2:\n resp = _context2.v;\n return _context2.a(2, resp.val.account());\n case 3:\n _context2.p = 3;\n _t = _context2.v;\n throw new Error(\"Account not found: \".concat(address));\n case 4:\n return _context2.a(2);\n }\n }, _callee2, this, [[1, 3]]);\n }));\n function getAccountEntry(_x2) {\n return _getAccountEntry.apply(this, arguments);\n }\n return getAccountEntry;\n }())\n }, {\n key: \"getTrustline\",\n value: (function () {\n var _getTrustline = _asyncToGenerator(_regenerator().m(function _callee3(account, asset) {\n var trustlineLedgerKey, entry, _t2;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.p = _context3.n) {\n case 0:\n trustlineLedgerKey = _stellarBase.xdr.LedgerKey.trustline(new _stellarBase.xdr.LedgerKeyTrustLine({\n accountId: _stellarBase.Keypair.fromPublicKey(account).xdrAccountId(),\n asset: asset.toTrustLineXDRObject()\n }));\n _context3.p = 1;\n _context3.n = 2;\n return this.getLedgerEntry(trustlineLedgerKey);\n case 2:\n entry = _context3.v;\n return _context3.a(2, entry.val.trustLine());\n case 3:\n _context3.p = 3;\n _t2 = _context3.v;\n throw new Error(\"Trustline for \".concat(asset.getCode(), \":\").concat(asset.getIssuer(), \" not found for \").concat(account));\n case 4:\n return _context3.a(2);\n }\n }, _callee3, this, [[1, 3]]);\n }));\n function getTrustline(_x3, _x4) {\n return _getTrustline.apply(this, arguments);\n }\n return getTrustline;\n }())\n }, {\n key: \"getClaimableBalance\",\n value: (function () {\n var _getClaimableBalance = _asyncToGenerator(_regenerator().m(function _callee4(id) {\n var balanceId, buffer, v, trustlineLedgerKey, entry, _t3;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.p = _context4.n) {\n case 0:\n if (!_stellarBase.StrKey.isValidClaimableBalance(id)) {\n _context4.n = 1;\n break;\n }\n buffer = _stellarBase.StrKey.decodeClaimableBalance(id);\n v = Buffer.concat([Buffer.from(\"\\x00\\x00\\x00\"), buffer.subarray(0, 1)]);\n balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(Buffer.concat([v, buffer.subarray(1)]));\n _context4.n = 4;\n break;\n case 1:\n if (!id.match(/[a-f0-9]{72}/i)) {\n _context4.n = 2;\n break;\n }\n balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(id, \"hex\");\n _context4.n = 4;\n break;\n case 2:\n if (!id.match(/[a-f0-9]{64}/i)) {\n _context4.n = 3;\n break;\n }\n balanceId = _stellarBase.xdr.ClaimableBalanceId.fromXDR(id.padStart(72, \"0\"), \"hex\");\n _context4.n = 4;\n break;\n case 3:\n throw new TypeError(\"expected 72-char hex ID or strkey, not \".concat(id));\n case 4:\n trustlineLedgerKey = _stellarBase.xdr.LedgerKey.claimableBalance(new _stellarBase.xdr.LedgerKeyClaimableBalance({\n balanceId: balanceId\n }));\n _context4.p = 5;\n _context4.n = 6;\n return this.getLedgerEntry(trustlineLedgerKey);\n case 6:\n entry = _context4.v;\n return _context4.a(2, entry.val.claimableBalance());\n case 7:\n _context4.p = 7;\n _t3 = _context4.v;\n throw new Error(\"Claimable balance \".concat(id, \" not found\"));\n case 8:\n return _context4.a(2);\n }\n }, _callee4, this, [[5, 7]]);\n }));\n function getClaimableBalance(_x5) {\n return _getClaimableBalance.apply(this, arguments);\n }\n return getClaimableBalance;\n }())\n }, {\n key: \"getHealth\",\n value: (function () {\n var _getHealth = _asyncToGenerator(_regenerator().m(function _callee5() {\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n return _context5.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getHealth\"));\n }\n }, _callee5, this);\n }));\n function getHealth() {\n return _getHealth.apply(this, arguments);\n }\n return getHealth;\n }())\n }, {\n key: \"getContractData\",\n value: (function () {\n var _getContractData = _asyncToGenerator(_regenerator().m(function _callee6(contract, key) {\n var durability,\n scAddress,\n xdrDurability,\n contractKey,\n _args6 = arguments,\n _t4,\n _t5;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.p = _context6.n) {\n case 0:\n durability = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : Durability.Persistent;\n if (!(typeof contract === \"string\")) {\n _context6.n = 1;\n break;\n }\n scAddress = new _stellarBase.Contract(contract).address().toScAddress();\n _context6.n = 4;\n break;\n case 1:\n if (!(contract instanceof _stellarBase.Address)) {\n _context6.n = 2;\n break;\n }\n scAddress = contract.toScAddress();\n _context6.n = 4;\n break;\n case 2:\n if (!(contract instanceof _stellarBase.Contract)) {\n _context6.n = 3;\n break;\n }\n scAddress = contract.address().toScAddress();\n _context6.n = 4;\n break;\n case 3:\n throw new TypeError(\"unknown contract type: \".concat(contract));\n case 4:\n _t4 = durability;\n _context6.n = _t4 === Durability.Temporary ? 5 : _t4 === Durability.Persistent ? 6 : 7;\n break;\n case 5:\n xdrDurability = _stellarBase.xdr.ContractDataDurability.temporary();\n return _context6.a(3, 8);\n case 6:\n xdrDurability = _stellarBase.xdr.ContractDataDurability.persistent();\n return _context6.a(3, 8);\n case 7:\n throw new TypeError(\"invalid durability: \".concat(durability));\n case 8:\n contractKey = _stellarBase.xdr.LedgerKey.contractData(new _stellarBase.xdr.LedgerKeyContractData({\n key: key,\n contract: scAddress,\n durability: xdrDurability\n }));\n _context6.p = 9;\n _context6.n = 10;\n return this.getLedgerEntry(contractKey);\n case 10:\n return _context6.a(2, _context6.v);\n case 11:\n _context6.p = 11;\n _t5 = _context6.v;\n throw {\n code: 404,\n message: \"Contract data not found for \".concat(_stellarBase.Address.fromScAddress(scAddress).toString(), \" with key \").concat(key.toXDR(\"base64\"), \" and durability: \").concat(durability)\n };\n case 12:\n return _context6.a(2);\n }\n }, _callee6, this, [[9, 11]]);\n }));\n function getContractData(_x6, _x7) {\n return _getContractData.apply(this, arguments);\n }\n return getContractData;\n }())\n }, {\n key: \"getContractWasmByContractId\",\n value: (function () {\n var _getContractWasmByContractId = _asyncToGenerator(_regenerator().m(function _callee7(contractId) {\n var _response$entries$;\n var contractLedgerKey, response, wasmHash;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.n) {\n case 0:\n contractLedgerKey = new _stellarBase.Contract(contractId).getFootprint();\n _context7.n = 1;\n return this.getLedgerEntries(contractLedgerKey);\n case 1:\n response = _context7.v;\n if (!(!response.entries.length || !((_response$entries$ = response.entries[0]) !== null && _response$entries$ !== void 0 && _response$entries$.val))) {\n _context7.n = 2;\n break;\n }\n return _context7.a(2, Promise.reject({\n code: 404,\n message: \"Could not obtain contract hash from server\"\n }));\n case 2:\n wasmHash = response.entries[0].val.contractData().val().instance().executable().wasmHash();\n return _context7.a(2, this.getContractWasmByHash(wasmHash));\n }\n }, _callee7, this);\n }));\n function getContractWasmByContractId(_x8) {\n return _getContractWasmByContractId.apply(this, arguments);\n }\n return getContractWasmByContractId;\n }())\n }, {\n key: \"getContractWasmByHash\",\n value: (function () {\n var _getContractWasmByHash = _asyncToGenerator(_regenerator().m(function _callee8(wasmHash) {\n var _responseWasm$entries;\n var format,\n wasmHashBuffer,\n ledgerKeyWasmHash,\n responseWasm,\n wasmBuffer,\n _args8 = arguments;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n format = _args8.length > 1 && _args8[1] !== undefined ? _args8[1] : undefined;\n wasmHashBuffer = typeof wasmHash === \"string\" ? Buffer.from(wasmHash, format) : wasmHash;\n ledgerKeyWasmHash = _stellarBase.xdr.LedgerKey.contractCode(new _stellarBase.xdr.LedgerKeyContractCode({\n hash: wasmHashBuffer\n }));\n _context8.n = 1;\n return this.getLedgerEntries(ledgerKeyWasmHash);\n case 1:\n responseWasm = _context8.v;\n if (!(!responseWasm.entries.length || !((_responseWasm$entries = responseWasm.entries[0]) !== null && _responseWasm$entries !== void 0 && _responseWasm$entries.val))) {\n _context8.n = 2;\n break;\n }\n return _context8.a(2, Promise.reject({\n code: 404,\n message: \"Could not obtain contract wasm from server\"\n }));\n case 2:\n wasmBuffer = responseWasm.entries[0].val.contractCode().code();\n return _context8.a(2, wasmBuffer);\n }\n }, _callee8, this);\n }));\n function getContractWasmByHash(_x9) {\n return _getContractWasmByHash.apply(this, arguments);\n }\n return getContractWasmByHash;\n }())\n }, {\n key: \"getLedgerEntries\",\n value: function getLedgerEntries() {\n return this._getLedgerEntries.apply(this, arguments).then(_parsers.parseRawLedgerEntries);\n }\n }, {\n key: \"_getLedgerEntries\",\n value: function _getLedgerEntries() {\n for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n return jsonrpc.postObject(this.serverURL.toString(), \"getLedgerEntries\", {\n keys: keys.map(function (k) {\n return k.toXDR(\"base64\");\n })\n });\n }\n }, {\n key: \"getLedgerEntry\",\n value: function () {\n var _getLedgerEntry = _asyncToGenerator(_regenerator().m(function _callee9(key) {\n var results;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n _context9.n = 1;\n return this._getLedgerEntries(key).then(_parsers.parseRawLedgerEntries);\n case 1:\n results = _context9.v;\n if (!(results.entries.length !== 1)) {\n _context9.n = 2;\n break;\n }\n throw new Error(\"failed to find an entry for key \".concat(key.toXDR(\"base64\")));\n case 2:\n return _context9.a(2, results.entries[0]);\n }\n }, _callee9, this);\n }));\n function getLedgerEntry(_x0) {\n return _getLedgerEntry.apply(this, arguments);\n }\n return getLedgerEntry;\n }()\n }, {\n key: \"pollTransaction\",\n value: (function () {\n var _pollTransaction = _asyncToGenerator(_regenerator().m(function _callee0(hash, opts) {\n var _opts$attempts, _opts$attempts2;\n var maxAttempts, foundInfo, attempt, _opts$sleepStrategy;\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n maxAttempts = ((_opts$attempts = opts === null || opts === void 0 ? void 0 : opts.attempts) !== null && _opts$attempts !== void 0 ? _opts$attempts : 0) < 1 ? DEFAULT_GET_TRANSACTION_TIMEOUT : (_opts$attempts2 = opts === null || opts === void 0 ? void 0 : opts.attempts) !== null && _opts$attempts2 !== void 0 ? _opts$attempts2 : DEFAULT_GET_TRANSACTION_TIMEOUT;\n attempt = 1;\n case 1:\n if (!(attempt < maxAttempts)) {\n _context0.n = 5;\n break;\n }\n _context0.n = 2;\n return this.getTransaction(hash);\n case 2:\n foundInfo = _context0.v;\n if (!(foundInfo.status !== _api.Api.GetTransactionStatus.NOT_FOUND)) {\n _context0.n = 3;\n break;\n }\n return _context0.a(2, foundInfo);\n case 3:\n _context0.n = 4;\n return _utils.Utils.sleep(((_opts$sleepStrategy = opts === null || opts === void 0 ? void 0 : opts.sleepStrategy) !== null && _opts$sleepStrategy !== void 0 ? _opts$sleepStrategy : BasicSleepStrategy)(attempt));\n case 4:\n attempt++;\n _context0.n = 1;\n break;\n case 5:\n return _context0.a(2, foundInfo);\n }\n }, _callee0, this);\n }));\n function pollTransaction(_x1, _x10) {\n return _pollTransaction.apply(this, arguments);\n }\n return pollTransaction;\n }())\n }, {\n key: \"getTransaction\",\n value: (function () {\n var _getTransaction2 = _asyncToGenerator(_regenerator().m(function _callee1(hash) {\n return _regenerator().w(function (_context1) {\n while (1) switch (_context1.n) {\n case 0:\n return _context1.a(2, this._getTransaction(hash).then(function (raw) {\n var foundInfo = {};\n if (raw.status !== _api.Api.GetTransactionStatus.NOT_FOUND) {\n Object.assign(foundInfo, (0, _parsers.parseTransactionInfo)(raw));\n }\n var result = _objectSpread({\n status: raw.status,\n txHash: hash,\n latestLedger: raw.latestLedger,\n latestLedgerCloseTime: raw.latestLedgerCloseTime,\n oldestLedger: raw.oldestLedger,\n oldestLedgerCloseTime: raw.oldestLedgerCloseTime\n }, foundInfo);\n return result;\n }));\n }\n }, _callee1, this);\n }));\n function getTransaction(_x11) {\n return _getTransaction2.apply(this, arguments);\n }\n return getTransaction;\n }())\n }, {\n key: \"_getTransaction\",\n value: function () {\n var _getTransaction3 = _asyncToGenerator(_regenerator().m(function _callee10(hash) {\n return _regenerator().w(function (_context10) {\n while (1) switch (_context10.n) {\n case 0:\n return _context10.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getTransaction\", {\n hash: hash\n }));\n }\n }, _callee10, this);\n }));\n function _getTransaction(_x12) {\n return _getTransaction3.apply(this, arguments);\n }\n return _getTransaction;\n }()\n }, {\n key: \"getTransactions\",\n value: (function () {\n var _getTransactions2 = _asyncToGenerator(_regenerator().m(function _callee11(request) {\n return _regenerator().w(function (_context11) {\n while (1) switch (_context11.n) {\n case 0:\n return _context11.a(2, this._getTransactions(request).then(function (raw) {\n var result = {\n transactions: (raw.transactions || []).map(_parsers.parseRawTransactions),\n latestLedger: raw.latestLedger,\n latestLedgerCloseTimestamp: raw.latestLedgerCloseTimestamp,\n oldestLedger: raw.oldestLedger,\n oldestLedgerCloseTimestamp: raw.oldestLedgerCloseTimestamp,\n cursor: raw.cursor\n };\n return result;\n }));\n }\n }, _callee11, this);\n }));\n function getTransactions(_x13) {\n return _getTransactions2.apply(this, arguments);\n }\n return getTransactions;\n }())\n }, {\n key: \"_getTransactions\",\n value: function () {\n var _getTransactions3 = _asyncToGenerator(_regenerator().m(function _callee12(request) {\n return _regenerator().w(function (_context12) {\n while (1) switch (_context12.n) {\n case 0:\n return _context12.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getTransactions\", request));\n }\n }, _callee12, this);\n }));\n function _getTransactions(_x14) {\n return _getTransactions3.apply(this, arguments);\n }\n return _getTransactions;\n }()\n }, {\n key: \"getEvents\",\n value: (function () {\n var _getEvents2 = _asyncToGenerator(_regenerator().m(function _callee13(request) {\n return _regenerator().w(function (_context13) {\n while (1) switch (_context13.n) {\n case 0:\n return _context13.a(2, this._getEvents(request).then(_parsers.parseRawEvents));\n }\n }, _callee13, this);\n }));\n function getEvents(_x15) {\n return _getEvents2.apply(this, arguments);\n }\n return getEvents;\n }())\n }, {\n key: \"_getEvents\",\n value: function () {\n var _getEvents3 = _asyncToGenerator(_regenerator().m(function _callee14(request) {\n var _request$filters;\n return _regenerator().w(function (_context14) {\n while (1) switch (_context14.n) {\n case 0:\n return _context14.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getEvents\", _objectSpread(_objectSpread({\n filters: (_request$filters = request.filters) !== null && _request$filters !== void 0 ? _request$filters : [],\n pagination: _objectSpread(_objectSpread({}, request.cursor && {\n cursor: request.cursor\n }), request.limit && {\n limit: request.limit\n })\n }, request.startLedger && {\n startLedger: request.startLedger\n }), request.endLedger && {\n endLedger: request.endLedger\n })));\n }\n }, _callee14, this);\n }));\n function _getEvents(_x16) {\n return _getEvents3.apply(this, arguments);\n }\n return _getEvents;\n }()\n }, {\n key: \"getNetwork\",\n value: (function () {\n var _getNetwork = _asyncToGenerator(_regenerator().m(function _callee15() {\n return _regenerator().w(function (_context15) {\n while (1) switch (_context15.n) {\n case 0:\n return _context15.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getNetwork\"));\n }\n }, _callee15, this);\n }));\n function getNetwork() {\n return _getNetwork.apply(this, arguments);\n }\n return getNetwork;\n }())\n }, {\n key: \"getLatestLedger\",\n value: (function () {\n var _getLatestLedger = _asyncToGenerator(_regenerator().m(function _callee16() {\n return _regenerator().w(function (_context16) {\n while (1) switch (_context16.n) {\n case 0:\n return _context16.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getLatestLedger\"));\n }\n }, _callee16, this);\n }));\n function getLatestLedger() {\n return _getLatestLedger.apply(this, arguments);\n }\n return getLatestLedger;\n }())\n }, {\n key: \"simulateTransaction\",\n value: (function () {\n var _simulateTransaction2 = _asyncToGenerator(_regenerator().m(function _callee17(tx, addlResources, authMode) {\n return _regenerator().w(function (_context17) {\n while (1) switch (_context17.n) {\n case 0:\n return _context17.a(2, this._simulateTransaction(tx, addlResources, authMode).then(_parsers.parseRawSimulation));\n }\n }, _callee17, this);\n }));\n function simulateTransaction(_x17, _x18, _x19) {\n return _simulateTransaction2.apply(this, arguments);\n }\n return simulateTransaction;\n }())\n }, {\n key: \"_simulateTransaction\",\n value: function () {\n var _simulateTransaction3 = _asyncToGenerator(_regenerator().m(function _callee18(transaction, addlResources, authMode) {\n return _regenerator().w(function (_context18) {\n while (1) switch (_context18.n) {\n case 0:\n return _context18.a(2, jsonrpc.postObject(this.serverURL.toString(), \"simulateTransaction\", _objectSpread({\n transaction: transaction.toXDR(),\n authMode: authMode\n }, addlResources !== undefined && {\n resourceConfig: {\n instructionLeeway: addlResources.cpuInstructions\n }\n })));\n }\n }, _callee18, this);\n }));\n function _simulateTransaction(_x20, _x21, _x22) {\n return _simulateTransaction3.apply(this, arguments);\n }\n return _simulateTransaction;\n }()\n }, {\n key: \"prepareTransaction\",\n value: (function () {\n var _prepareTransaction = _asyncToGenerator(_regenerator().m(function _callee19(tx) {\n var simResponse;\n return _regenerator().w(function (_context19) {\n while (1) switch (_context19.n) {\n case 0:\n _context19.n = 1;\n return this.simulateTransaction(tx);\n case 1:\n simResponse = _context19.v;\n if (!_api.Api.isSimulationError(simResponse)) {\n _context19.n = 2;\n break;\n }\n throw new Error(simResponse.error);\n case 2:\n return _context19.a(2, (0, _transaction.assembleTransaction)(tx, simResponse).build());\n }\n }, _callee19, this);\n }));\n function prepareTransaction(_x23) {\n return _prepareTransaction.apply(this, arguments);\n }\n return prepareTransaction;\n }())\n }, {\n key: \"sendTransaction\",\n value: (function () {\n var _sendTransaction2 = _asyncToGenerator(_regenerator().m(function _callee20(transaction) {\n return _regenerator().w(function (_context20) {\n while (1) switch (_context20.n) {\n case 0:\n return _context20.a(2, this._sendTransaction(transaction).then(_parsers.parseRawSendTransaction));\n }\n }, _callee20, this);\n }));\n function sendTransaction(_x24) {\n return _sendTransaction2.apply(this, arguments);\n }\n return sendTransaction;\n }())\n }, {\n key: \"_sendTransaction\",\n value: function () {\n var _sendTransaction3 = _asyncToGenerator(_regenerator().m(function _callee21(transaction) {\n return _regenerator().w(function (_context21) {\n while (1) switch (_context21.n) {\n case 0:\n return _context21.a(2, jsonrpc.postObject(this.serverURL.toString(), \"sendTransaction\", {\n transaction: transaction.toXDR()\n }));\n }\n }, _callee21, this);\n }));\n function _sendTransaction(_x25) {\n return _sendTransaction3.apply(this, arguments);\n }\n return _sendTransaction;\n }()\n }, {\n key: \"requestAirdrop\",\n value: (function () {\n var _requestAirdrop = _asyncToGenerator(_regenerator().m(function _callee22(address, friendbotUrl) {\n var account, response, meta, txMeta, sequence, _error$response, _error$response$detai, _t6, _t7;\n return _regenerator().w(function (_context22) {\n while (1) switch (_context22.p = _context22.n) {\n case 0:\n account = typeof address === \"string\" ? address : address.accountId();\n _t6 = friendbotUrl;\n if (_t6) {\n _context22.n = 2;\n break;\n }\n _context22.n = 1;\n return this.getNetwork();\n case 1:\n _t6 = _context22.v.friendbotUrl;\n case 2:\n friendbotUrl = _t6;\n if (friendbotUrl) {\n _context22.n = 3;\n break;\n }\n throw new Error(\"No friendbot URL configured for current network\");\n case 3:\n _context22.p = 3;\n _context22.n = 4;\n return _axios.default.post(\"\".concat(friendbotUrl, \"?addr=\").concat(encodeURIComponent(account)));\n case 4:\n response = _context22.v;\n if (response.data.result_meta_xdr) {\n _context22.n = 7;\n break;\n }\n _context22.n = 5;\n return this.getTransaction(response.data.hash);\n case 5:\n txMeta = _context22.v;\n if (!(txMeta.status !== _api.Api.GetTransactionStatus.SUCCESS)) {\n _context22.n = 6;\n break;\n }\n throw new Error(\"Funding account \".concat(address, \" failed\"));\n case 6:\n meta = txMeta.resultMetaXdr;\n _context22.n = 8;\n break;\n case 7:\n meta = _stellarBase.xdr.TransactionMeta.fromXDR(response.data.result_meta_xdr, \"base64\");\n case 8:\n sequence = findCreatedAccountSequenceInTransactionMeta(meta);\n return _context22.a(2, new _stellarBase.Account(account, sequence));\n case 9:\n _context22.p = 9;\n _t7 = _context22.v;\n if (!(((_error$response = _t7.response) === null || _error$response === void 0 ? void 0 : _error$response.status) === 400)) {\n _context22.n = 10;\n break;\n }\n if (!((_error$response$detai = _t7.response.detail) !== null && _error$response$detai !== void 0 && _error$response$detai.includes(\"createAccountAlreadyExist\"))) {\n _context22.n = 10;\n break;\n }\n return _context22.a(2, this.getAccount(account));\n case 10:\n throw _t7;\n case 11:\n return _context22.a(2);\n }\n }, _callee22, this, [[3, 9]]);\n }));\n function requestAirdrop(_x26, _x27) {\n return _requestAirdrop.apply(this, arguments);\n }\n return requestAirdrop;\n }())\n }, {\n key: \"getFeeStats\",\n value: (function () {\n var _getFeeStats = _asyncToGenerator(_regenerator().m(function _callee23() {\n return _regenerator().w(function (_context23) {\n while (1) switch (_context23.n) {\n case 0:\n return _context23.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getFeeStats\"));\n }\n }, _callee23, this);\n }));\n function getFeeStats() {\n return _getFeeStats.apply(this, arguments);\n }\n return getFeeStats;\n }())\n }, {\n key: \"getVersionInfo\",\n value: (function () {\n var _getVersionInfo = _asyncToGenerator(_regenerator().m(function _callee24() {\n return _regenerator().w(function (_context24) {\n while (1) switch (_context24.n) {\n case 0:\n return _context24.a(2, jsonrpc.postObject(this.serverURL.toString(), \"getVersionInfo\"));\n }\n }, _callee24, this);\n }));\n function getVersionInfo() {\n return _getVersionInfo.apply(this, arguments);\n }\n return getVersionInfo;\n }())\n }, {\n key: \"getSACBalance\",\n value: (function () {\n var _getSACBalance = _asyncToGenerator(_regenerator().m(function _callee25(address, sac, networkPassphrase) {\n var addressString, passphrase, sacId, key, ledgerKey, response, _response$entries$2, lastModifiedLedgerSeq, liveUntilLedgerSeq, val, entry, _t8;\n return _regenerator().w(function (_context25) {\n while (1) switch (_context25.n) {\n case 0:\n addressString = address instanceof _stellarBase.Address ? address.toString() : address;\n if (_stellarBase.StrKey.isValidContract(addressString)) {\n _context25.n = 1;\n break;\n }\n throw new TypeError(\"expected contract ID, got \".concat(addressString));\n case 1:\n if (!(networkPassphrase !== null && networkPassphrase !== void 0)) {\n _context25.n = 2;\n break;\n }\n _t8 = networkPassphrase;\n _context25.n = 4;\n break;\n case 2:\n _context25.n = 3;\n return this.getNetwork().then(function (n) {\n return n.passphrase;\n });\n case 3:\n _t8 = _context25.v;\n case 4:\n passphrase = _t8;\n sacId = sac.contractId(passphrase);\n key = (0, _stellarBase.nativeToScVal)([\"Balance\", addressString], {\n type: [\"symbol\", \"address\"]\n });\n ledgerKey = _stellarBase.xdr.LedgerKey.contractData(new _stellarBase.xdr.LedgerKeyContractData({\n contract: new _stellarBase.Address(sacId).toScAddress(),\n durability: _stellarBase.xdr.ContractDataDurability.persistent(),\n key: key\n }));\n _context25.n = 5;\n return this.getLedgerEntries(ledgerKey);\n case 5:\n response = _context25.v;\n if (!(response.entries.length === 0)) {\n _context25.n = 6;\n break;\n }\n return _context25.a(2, {\n latestLedger: response.latestLedger\n });\n case 6:\n _response$entries$2 = response.entries[0], lastModifiedLedgerSeq = _response$entries$2.lastModifiedLedgerSeq, liveUntilLedgerSeq = _response$entries$2.liveUntilLedgerSeq, val = _response$entries$2.val;\n if (!(val.switch().value !== _stellarBase.xdr.LedgerEntryType.contractData().value)) {\n _context25.n = 7;\n break;\n }\n return _context25.a(2, {\n latestLedger: response.latestLedger\n });\n case 7:\n entry = (0, _stellarBase.scValToNative)(val.contractData().val());\n return _context25.a(2, {\n latestLedger: response.latestLedger,\n balanceEntry: {\n liveUntilLedgerSeq: liveUntilLedgerSeq,\n lastModifiedLedgerSeq: lastModifiedLedgerSeq,\n amount: entry.amount.toString(),\n authorized: entry.authorized,\n clawback: entry.clawback\n }\n });\n }\n }, _callee25, this);\n }));\n function getSACBalance(_x28, _x29, _x30) {\n return _getSACBalance.apply(this, arguments);\n }\n return getSACBalance;\n }())\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n Server: true,\n BasicSleepStrategy: true,\n LinearSleepStrategy: true,\n Durability: true,\n AxiosClient: true,\n parseRawSimulation: true,\n parseRawEvents: true\n};\nObject.defineProperty(exports, \"AxiosClient\", {\n enumerable: true,\n get: function get() {\n return _axios.default;\n }\n});\nObject.defineProperty(exports, \"BasicSleepStrategy\", {\n enumerable: true,\n get: function get() {\n return _server.BasicSleepStrategy;\n }\n});\nObject.defineProperty(exports, \"Durability\", {\n enumerable: true,\n get: function get() {\n return _server.Durability;\n }\n});\nObject.defineProperty(exports, \"LinearSleepStrategy\", {\n enumerable: true,\n get: function get() {\n return _server.LinearSleepStrategy;\n }\n});\nObject.defineProperty(exports, \"Server\", {\n enumerable: true,\n get: function get() {\n return _server.RpcServer;\n }\n});\nexports.default = void 0;\nObject.defineProperty(exports, \"parseRawEvents\", {\n enumerable: true,\n get: function get() {\n return _parsers.parseRawEvents;\n }\n});\nObject.defineProperty(exports, \"parseRawSimulation\", {\n enumerable: true,\n get: function get() {\n return _parsers.parseRawSimulation;\n }\n});\nvar _api = require(\"./api\");\nObject.keys(_api).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _api[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _api[key];\n }\n });\n});\nvar _server = require(\"./server\");\nvar _axios = _interopRequireDefault(require(\"./axios\"));\nvar _parsers = require(\"./parsers\");\nvar _transaction = require(\"./transaction\");\nObject.keys(_transaction).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _transaction[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _transaction[key];\n }\n });\n});\nfunction _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }\nvar _default = exports.default = module.exports;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Ok = exports.Err = void 0;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar Ok = exports.Ok = function () {\n function Ok(value) {\n _classCallCheck(this, Ok);\n this.value = value;\n }\n return _createClass(Ok, [{\n key: \"unwrapErr\",\n value: function unwrapErr() {\n throw new Error(\"No error\");\n }\n }, {\n key: \"unwrap\",\n value: function unwrap() {\n return this.value;\n }\n }, {\n key: \"isOk\",\n value: function isOk() {\n return true;\n }\n }, {\n key: \"isErr\",\n value: function isErr() {\n return false;\n }\n }]);\n}();\nvar Err = exports.Err = function () {\n function Err(error) {\n _classCallCheck(this, Err);\n this.error = error;\n }\n return _createClass(Err, [{\n key: \"unwrapErr\",\n value: function unwrapErr() {\n return this.error;\n }\n }, {\n key: \"unwrap\",\n value: function unwrap() {\n throw new Error(this.error.message);\n }\n }, {\n key: \"isOk\",\n value: function isOk() {\n return false;\n }\n }, {\n key: \"isErr\",\n value: function isErr() {\n return true;\n }\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NULL_ACCOUNT = exports.DEFAULT_TIMEOUT = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar DEFAULT_TIMEOUT = exports.DEFAULT_TIMEOUT = 5 * 60;\nvar NULL_ACCOUNT = exports.NULL_ACCOUNT = \"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF\";", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.contractErrorPattern = void 0;\nexports.getAccount = getAccount;\nexports.implementsToString = implementsToString;\nexports.processSpecEntryStream = processSpecEntryStream;\nexports.specFromWasm = specFromWasm;\nexports.withExponentialBackoff = withExponentialBackoff;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _types = require(\"./types\");\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction withExponentialBackoff(_x, _x2, _x3) {\n return _withExponentialBackoff.apply(this, arguments);\n}\nfunction _withExponentialBackoff() {\n _withExponentialBackoff = _asyncToGenerator(_regenerator().m(function _callee(fn, keepWaitingIf, timeoutInSeconds) {\n var exponentialFactor,\n verbose,\n attempts,\n count,\n waitUntil,\n waitTime,\n totalWaitTime,\n _args = arguments,\n _t,\n _t2;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n exponentialFactor = _args.length > 3 && _args[3] !== undefined ? _args[3] : 1.5;\n verbose = _args.length > 4 && _args[4] !== undefined ? _args[4] : false;\n attempts = [];\n count = 0;\n _t = attempts;\n _context.n = 1;\n return fn();\n case 1:\n _t.push.call(_t, _context.v);\n if (keepWaitingIf(attempts[attempts.length - 1])) {\n _context.n = 2;\n break;\n }\n return _context.a(2, attempts);\n case 2:\n waitUntil = new Date(Date.now() + timeoutInSeconds * 1000).valueOf();\n waitTime = 1000;\n totalWaitTime = waitTime;\n case 3:\n if (!(Date.now() < waitUntil && keepWaitingIf(attempts[attempts.length - 1]))) {\n _context.n = 6;\n break;\n }\n count += 1;\n if (verbose) {\n console.info(\"Waiting \".concat(waitTime, \"ms before trying again (bringing the total wait time to \").concat(totalWaitTime, \"ms so far, of total \").concat(timeoutInSeconds * 1000, \"ms)\"));\n }\n _context.n = 4;\n return new Promise(function (res) {\n return setTimeout(res, waitTime);\n });\n case 4:\n waitTime *= exponentialFactor;\n if (new Date(Date.now() + waitTime).valueOf() > waitUntil) {\n waitTime = waitUntil - Date.now();\n if (verbose) {\n console.info(\"was gonna wait too long; new waitTime: \".concat(waitTime, \"ms\"));\n }\n }\n totalWaitTime = waitTime + totalWaitTime;\n _t2 = attempts;\n _context.n = 5;\n return fn(attempts[attempts.length - 1]);\n case 5:\n _t2.push.call(_t2, _context.v);\n if (verbose && keepWaitingIf(attempts[attempts.length - 1])) {\n console.info(\"\".concat(count, \". Called \").concat(fn, \"; \").concat(attempts.length, \" prev attempts. Most recent: \").concat(JSON.stringify(attempts[attempts.length - 1], null, 2)));\n }\n _context.n = 3;\n break;\n case 6:\n return _context.a(2, attempts);\n }\n }, _callee);\n }));\n return _withExponentialBackoff.apply(this, arguments);\n}\nvar contractErrorPattern = exports.contractErrorPattern = /Error\\(Contract, #(\\d+)\\)/;\nfunction implementsToString(obj) {\n return _typeof(obj) === \"object\" && obj !== null && \"toString\" in obj;\n}\nfunction specFromWasm(_x4) {\n return _specFromWasm.apply(this, arguments);\n}\nfunction _specFromWasm() {\n _specFromWasm = _asyncToGenerator(_regenerator().m(function _callee2(wasm) {\n var xdrSections, wasmModule, customData, _t3;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.p = _context2.n) {\n case 0:\n _context2.p = 0;\n _context2.n = 1;\n return WebAssembly.compile(wasm);\n case 1:\n wasmModule = _context2.v;\n xdrSections = WebAssembly.Module.customSections(wasmModule, \"contractspecv0\");\n _context2.n = 3;\n break;\n case 2:\n _context2.p = 2;\n _t3 = _context2.v;\n customData = parseWasmCustomSections(wasm);\n xdrSections = customData.get(\"contractspecv0\");\n case 3:\n if (!(!xdrSections || xdrSections.length === 0)) {\n _context2.n = 4;\n break;\n }\n throw new Error(\"Could not obtain contract spec from wasm\");\n case 4:\n return _context2.a(2, Buffer.from(xdrSections[0]));\n }\n }, _callee2, null, [[0, 2]]);\n }));\n return _specFromWasm.apply(this, arguments);\n}\nfunction parseWasmCustomSections(buffer) {\n var sections = new Map();\n var arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);\n var offset = 0;\n var read = function read(length) {\n if (offset + length > buffer.byteLength) throw new Error(\"Buffer overflow\");\n var bytes = new Uint8Array(arrayBuffer, offset, length);\n offset += length;\n return bytes;\n };\n if (_toConsumableArray(read(4)).join() !== \"0,97,115,109\") throw new Error(\"Invalid WASM magic\");\n if (_toConsumableArray(read(4)).join() !== \"1,0,0,0\") throw new Error(\"Invalid WASM version\");\n while (offset < buffer.byteLength) {\n var sectionId = read(1)[0];\n var sectionLength = readVarUint32();\n var start = offset;\n if (sectionId === 0) {\n var nameLen = readVarUint32();\n if (nameLen === 0 || offset + nameLen > start + sectionLength) continue;\n var nameBytes = read(nameLen);\n var payload = read(sectionLength - (offset - start));\n try {\n var name = new TextDecoder(\"utf-8\", {\n fatal: true\n }).decode(nameBytes);\n if (payload.length > 0) {\n sections.set(name, (sections.get(name) || []).concat(payload));\n }\n } catch (_unused) {}\n } else {\n offset += sectionLength;\n }\n }\n function readVarUint32() {\n var value = 0,\n shift = 0;\n while (true) {\n var byte = read(1)[0];\n value |= (byte & 0x7f) << shift;\n if ((byte & 0x80) === 0) break;\n if ((shift += 7) >= 32) throw new Error(\"Invalid WASM value\");\n }\n return value >>> 0;\n }\n return sections;\n}\nfunction processSpecEntryStream(buffer) {\n var reader = new _stellarBase.cereal.XdrReader(buffer);\n var res = [];\n while (!reader.eof) {\n res.push(_stellarBase.xdr.ScSpecEntry.read(reader));\n }\n return res;\n}\nfunction getAccount(_x5, _x6) {\n return _getAccount.apply(this, arguments);\n}\nfunction _getAccount() {\n _getAccount = _asyncToGenerator(_regenerator().m(function _callee3(options, server) {\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n return _context3.a(2, options.publicKey ? server.getAccount(options.publicKey) : new _stellarBase.Account(_types.NULL_ACCOUNT, \"0\"));\n }\n }, _callee3);\n }));\n return _getAccount.apply(this, arguments);\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Watcher = exports.SentTransaction = void 0;\nvar _rpc = require(\"../rpc\");\nvar _api = require(\"../rpc/api\");\nvar _utils = require(\"./utils\");\nvar _types = require(\"./types\");\nvar _SentTransaction;\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar SentTransaction = exports.SentTransaction = function () {\n function SentTransaction(assembled) {\n var _this = this,\n _this$assembled$optio2;\n _classCallCheck(this, SentTransaction);\n _defineProperty(this, \"send\", function () {\n var _ref = _asyncToGenerator(_regenerator().m(function _callee2(watcher) {\n var _this$assembled$optio;\n var hash, timeoutInSeconds;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _context2.n = 1;\n return _this.server.sendTransaction(_this.assembled.signed);\n case 1:\n _this.sendTransactionResponse = _context2.v;\n if (!(_this.sendTransactionResponse.status !== \"PENDING\")) {\n _context2.n = 2;\n break;\n }\n throw new SentTransaction.Errors.SendFailed(\"Sending the transaction to the network failed!\\n\".concat(JSON.stringify(_this.sendTransactionResponse, null, 2)));\n case 2:\n if (watcher !== null && watcher !== void 0 && watcher.onSubmitted) watcher.onSubmitted(_this.sendTransactionResponse);\n hash = _this.sendTransactionResponse.hash;\n timeoutInSeconds = (_this$assembled$optio = _this.assembled.options.timeoutInSeconds) !== null && _this$assembled$optio !== void 0 ? _this$assembled$optio : _types.DEFAULT_TIMEOUT;\n _context2.n = 3;\n return (0, _utils.withExponentialBackoff)(_asyncToGenerator(_regenerator().m(function _callee() {\n var tx;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return _this.server.getTransaction(hash);\n case 1:\n tx = _context.v;\n if (watcher !== null && watcher !== void 0 && watcher.onProgress) watcher.onProgress(tx);\n return _context.a(2, tx);\n }\n }, _callee);\n })), function (resp) {\n return resp.status === _api.Api.GetTransactionStatus.NOT_FOUND;\n }, timeoutInSeconds);\n case 3:\n _this.getTransactionResponseAll = _context2.v;\n _this.getTransactionResponse = _this.getTransactionResponseAll[_this.getTransactionResponseAll.length - 1];\n if (!(_this.getTransactionResponse.status === _api.Api.GetTransactionStatus.NOT_FOUND)) {\n _context2.n = 4;\n break;\n }\n throw new SentTransaction.Errors.TransactionStillPending(\"Waited \".concat(timeoutInSeconds, \" seconds for transaction to complete, but it did not. \") + \"Returning anyway. Check the transaction status manually. \" + \"Sent transaction: \".concat(JSON.stringify(_this.sendTransactionResponse, null, 2), \"\\n\") + \"All attempts to get the result: \".concat(JSON.stringify(_this.getTransactionResponseAll, null, 2)));\n case 4:\n return _context2.a(2, _this);\n }\n }, _callee2);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n this.assembled = assembled;\n this.server = new _rpc.Server(this.assembled.options.rpcUrl, {\n allowHttp: (_this$assembled$optio2 = this.assembled.options.allowHttp) !== null && _this$assembled$optio2 !== void 0 ? _this$assembled$optio2 : false\n });\n }\n return _createClass(SentTransaction, [{\n key: \"result\",\n get: function get() {\n if (\"getTransactionResponse\" in this && this.getTransactionResponse) {\n if (\"returnValue\" in this.getTransactionResponse) {\n return this.assembled.options.parseResultXdr(this.getTransactionResponse.returnValue);\n }\n throw new Error(\"Transaction failed! Cannot parse result.\");\n }\n if (this.sendTransactionResponse) {\n var _this$sendTransaction;\n var errorResult = (_this$sendTransaction = this.sendTransactionResponse.errorResult) === null || _this$sendTransaction === void 0 ? void 0 : _this$sendTransaction.result();\n if (errorResult) {\n throw new SentTransaction.Errors.SendFailed(\"Transaction simulation looked correct, but attempting to send the transaction failed. Check `simulation` and `sendTransactionResponseAll` to troubleshoot. Decoded `sendTransactionResponse.errorResultXdr`: \".concat(errorResult));\n }\n throw new SentTransaction.Errors.SendResultOnly(\"Transaction was sent to the network, but not yet awaited. No result to show. Await transaction completion with `getTransaction(sendTransactionResponse.hash)`\");\n }\n throw new Error(\"Sending transaction failed: \".concat(JSON.stringify(this.assembled.signed)));\n }\n }]);\n}();\n_SentTransaction = SentTransaction;\n_defineProperty(SentTransaction, \"Errors\", {\n SendFailed: function (_Error) {\n function SendFailedError() {\n _classCallCheck(this, SendFailedError);\n return _callSuper(this, SendFailedError, arguments);\n }\n _inherits(SendFailedError, _Error);\n return _createClass(SendFailedError);\n }(_wrapNativeSuper(Error)),\n SendResultOnly: function (_Error2) {\n function SendResultOnlyError() {\n _classCallCheck(this, SendResultOnlyError);\n return _callSuper(this, SendResultOnlyError, arguments);\n }\n _inherits(SendResultOnlyError, _Error2);\n return _createClass(SendResultOnlyError);\n }(_wrapNativeSuper(Error)),\n TransactionStillPending: function (_Error3) {\n function TransactionStillPendingError() {\n _classCallCheck(this, TransactionStillPendingError);\n return _callSuper(this, TransactionStillPendingError, arguments);\n }\n _inherits(TransactionStillPendingError, _Error3);\n return _createClass(TransactionStillPendingError);\n }(_wrapNativeSuper(Error))\n});\n_defineProperty(SentTransaction, \"init\", function () {\n var _ref3 = _asyncToGenerator(_regenerator().m(function _callee3(assembled, watcher) {\n var tx, sent;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n tx = new _SentTransaction(assembled);\n _context3.n = 1;\n return tx.send(watcher);\n case 1:\n sent = _context3.v;\n return _context3.a(2, sent);\n }\n }, _callee3);\n }));\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}());\nvar Watcher = exports.Watcher = _createClass(function Watcher() {\n _classCallCheck(this, Watcher);\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AssembledTransaction = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _rpc = require(\"../rpc\");\nvar _api = require(\"../rpc/api\");\nvar _transaction = require(\"../rpc/transaction\");\nvar _rust_result = require(\"./rust_result\");\nvar _utils = require(\"./utils\");\nvar _types = require(\"./types\");\nvar _sent_transaction = require(\"./sent_transaction\");\nfunction _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }\nfunction _possibleConstructorReturn(t, e) { if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e; if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\"); return _assertThisInitialized(t); }\nfunction _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return e; }\nfunction _inherits(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e); }\nfunction _wrapNativeSuper(t) { var r = \"function\" == typeof Map ? new Map() : void 0; return _wrapNativeSuper = function _wrapNativeSuper(t) { if (null === t || !_isNativeFunction(t)) return t; if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\"); if (void 0 !== r) { if (r.has(t)) return r.get(t); r.set(t, Wrapper); } function Wrapper() { return _construct(t, arguments, _getPrototypeOf(this).constructor); } return Wrapper.prototype = Object.create(t.prototype, { constructor: { value: Wrapper, enumerable: !1, writable: !0, configurable: !0 } }), _setPrototypeOf(Wrapper, t); }, _wrapNativeSuper(t); }\nfunction _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }\nfunction _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }\nfunction _isNativeFunction(t) { try { return -1 !== Function.toString.call(t).indexOf(\"[native code]\"); } catch (n) { return \"function\" == typeof t; } }\nfunction _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }\nfunction _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _regeneratorValues(e) { if (null != e) { var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"], r = 0; if (t) return t.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + \" is not iterable\"); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar AssembledTransaction = exports.AssembledTransaction = function () {\n function AssembledTransaction(options) {\n var _this = this,\n _this$options$simulat,\n _this$options$allowHt;\n _classCallCheck(this, AssembledTransaction);\n _defineProperty(this, \"simulate\", _asyncToGenerator(_regenerator().m(function _callee() {\n var _ref2,\n restore,\n account,\n result,\n _this$options$fee,\n _this$options$args,\n _this$options$timeout,\n contract,\n _args = arguments;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _ref2 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, restore = _ref2.restore;\n if (_this.built) {\n _context.n = 2;\n break;\n }\n if (_this.raw) {\n _context.n = 1;\n break;\n }\n throw new Error(\"Transaction has not yet been assembled; \" + \"call `AssembledTransaction.build` first.\");\n case 1:\n _this.built = _this.raw.build();\n case 2:\n restore = restore !== null && restore !== void 0 ? restore : _this.options.restore;\n delete _this.simulationResult;\n delete _this.simulationTransactionData;\n _context.n = 3;\n return _this.server.simulateTransaction(_this.built);\n case 3:\n _this.simulation = _context.v;\n if (!(restore && _api.Api.isSimulationRestore(_this.simulation))) {\n _context.n = 8;\n break;\n }\n _context.n = 4;\n return (0, _utils.getAccount)(_this.options, _this.server);\n case 4:\n account = _context.v;\n _context.n = 5;\n return _this.restoreFootprint(_this.simulation.restorePreamble, account);\n case 5:\n result = _context.v;\n if (!(result.status === _api.Api.GetTransactionStatus.SUCCESS)) {\n _context.n = 7;\n break;\n }\n contract = new _stellarBase.Contract(_this.options.contractId);\n _this.raw = new _stellarBase.TransactionBuilder(account, {\n fee: (_this$options$fee = _this.options.fee) !== null && _this$options$fee !== void 0 ? _this$options$fee : _stellarBase.BASE_FEE,\n networkPassphrase: _this.options.networkPassphrase\n }).addOperation(contract.call.apply(contract, [_this.options.method].concat(_toConsumableArray((_this$options$args = _this.options.args) !== null && _this$options$args !== void 0 ? _this$options$args : [])))).setTimeout((_this$options$timeout = _this.options.timeoutInSeconds) !== null && _this$options$timeout !== void 0 ? _this$options$timeout : _types.DEFAULT_TIMEOUT);\n _context.n = 6;\n return _this.simulate();\n case 6:\n return _context.a(2, _this);\n case 7:\n throw new AssembledTransaction.Errors.RestorationFailure(\"Automatic restore failed! You set 'restore: true' but the attempted restore did not work. Result:\\n\".concat(JSON.stringify(result)));\n case 8:\n if (_api.Api.isSimulationSuccess(_this.simulation)) {\n _this.built = (0, _transaction.assembleTransaction)(_this.built, _this.simulation).build();\n }\n return _context.a(2, _this);\n }\n }, _callee);\n })));\n _defineProperty(this, \"sign\", _asyncToGenerator(_regenerator().m(function _callee2() {\n var _this$options$timeout2;\n var _ref4,\n _ref4$force,\n force,\n _ref4$signTransaction,\n signTransaction,\n sigsNeeded,\n timeoutInSeconds,\n signOpts,\n _yield$signTransactio,\n signature,\n error,\n _args2 = arguments;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n _ref4 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, _ref4$force = _ref4.force, force = _ref4$force === void 0 ? false : _ref4$force, _ref4$signTransaction = _ref4.signTransaction, signTransaction = _ref4$signTransaction === void 0 ? _this.options.signTransaction : _ref4$signTransaction;\n if (_this.built) {\n _context2.n = 1;\n break;\n }\n throw new Error(\"Transaction has not yet been simulated\");\n case 1:\n if (!(!force && _this.isReadCall)) {\n _context2.n = 2;\n break;\n }\n throw new AssembledTransaction.Errors.NoSignatureNeeded(\"This is a read call. It requires no signature or sending. \" + \"Use `force: true` to sign and send anyway.\");\n case 2:\n if (signTransaction) {\n _context2.n = 3;\n break;\n }\n throw new AssembledTransaction.Errors.NoSigner(\"You must provide a signTransaction function, either when calling \" + \"`signAndSend` or when initializing your Client\");\n case 3:\n sigsNeeded = _this.needsNonInvokerSigningBy().filter(function (id) {\n return !id.startsWith(\"C\");\n });\n if (!sigsNeeded.length) {\n _context2.n = 4;\n break;\n }\n throw new AssembledTransaction.Errors.NeedsMoreSignatures(\"Transaction requires signatures from \".concat(sigsNeeded, \". \") + \"See `needsNonInvokerSigningBy` for details.\");\n case 4:\n timeoutInSeconds = (_this$options$timeout2 = _this.options.timeoutInSeconds) !== null && _this$options$timeout2 !== void 0 ? _this$options$timeout2 : _types.DEFAULT_TIMEOUT;\n _this.built = _stellarBase.TransactionBuilder.cloneFrom(_this.built, {\n fee: _this.built.fee,\n timebounds: undefined,\n sorobanData: _this.simulationData.transactionData\n }).setTimeout(timeoutInSeconds).build();\n signOpts = {\n networkPassphrase: _this.options.networkPassphrase\n };\n if (_this.options.address) signOpts.address = _this.options.address;\n if (_this.options.submit !== undefined) signOpts.submit = _this.options.submit;\n if (_this.options.submitUrl) signOpts.submitUrl = _this.options.submitUrl;\n _context2.n = 5;\n return signTransaction(_this.built.toXDR(), signOpts);\n case 5:\n _yield$signTransactio = _context2.v;\n signature = _yield$signTransactio.signedTxXdr;\n error = _yield$signTransactio.error;\n _this.handleWalletError(error);\n _this.signed = _stellarBase.TransactionBuilder.fromXDR(signature, _this.options.networkPassphrase);\n case 6:\n return _context2.a(2);\n }\n }, _callee2);\n })));\n _defineProperty(this, \"signAndSend\", _asyncToGenerator(_regenerator().m(function _callee3() {\n var _ref6,\n _ref6$force,\n force,\n _ref6$signTransaction,\n signTransaction,\n watcher,\n originalSubmit,\n _args3 = arguments;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.p = _context3.n) {\n case 0:\n _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, _ref6$force = _ref6.force, force = _ref6$force === void 0 ? false : _ref6$force, _ref6$signTransaction = _ref6.signTransaction, signTransaction = _ref6$signTransaction === void 0 ? _this.options.signTransaction : _ref6$signTransaction, watcher = _ref6.watcher;\n if (_this.signed) {\n _context3.n = 3;\n break;\n }\n originalSubmit = _this.options.submit;\n if (_this.options.submit) {\n _this.options.submit = false;\n }\n _context3.p = 1;\n _context3.n = 2;\n return _this.sign({\n force: force,\n signTransaction: signTransaction\n });\n case 2:\n _context3.p = 2;\n _this.options.submit = originalSubmit;\n return _context3.f(2);\n case 3:\n return _context3.a(2, _this.send(watcher));\n }\n }, _callee3, null, [[1,, 2, 3]]);\n })));\n _defineProperty(this, \"needsNonInvokerSigningBy\", function () {\n var _rawInvokeHostFunctio;\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$includeAlreadyS = _ref7.includeAlreadySigned,\n includeAlreadySigned = _ref7$includeAlreadyS === void 0 ? false : _ref7$includeAlreadyS;\n if (!_this.built) {\n throw new Error(\"Transaction has not yet been simulated\");\n }\n if (!(\"operations\" in _this.built)) {\n throw new Error(\"Unexpected Transaction type; no operations: \".concat(JSON.stringify(_this.built)));\n }\n var rawInvokeHostFunctionOp = _this.built.operations[0];\n return _toConsumableArray(new Set(((_rawInvokeHostFunctio = rawInvokeHostFunctionOp.auth) !== null && _rawInvokeHostFunctio !== void 0 ? _rawInvokeHostFunctio : []).filter(function (entry) {\n return entry.credentials().switch() === _stellarBase.xdr.SorobanCredentialsType.sorobanCredentialsAddress() && (includeAlreadySigned || entry.credentials().address().signature().switch().name === \"scvVoid\");\n }).map(function (entry) {\n return _stellarBase.Address.fromScAddress(entry.credentials().address().address()).toString();\n })));\n });\n _defineProperty(this, \"signAuthEntries\", _asyncToGenerator(_regenerator().m(function _callee6() {\n var _rawInvokeHostFunctio2;\n var _ref9,\n _ref9$expiration,\n expiration,\n _ref9$signAuthEntry,\n signAuthEntry,\n _ref9$address,\n address,\n _ref9$authorizeEntry,\n authorizeEntry,\n needsNonInvokerSigningBy,\n rawInvokeHostFunctionOp,\n authEntries,\n _iterator,\n _step,\n _loop,\n _ret,\n _args7 = arguments,\n _t5;\n return _regenerator().w(function (_context7) {\n while (1) switch (_context7.p = _context7.n) {\n case 0:\n _ref9 = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}, _ref9$expiration = _ref9.expiration, expiration = _ref9$expiration === void 0 ? _asyncToGenerator(_regenerator().m(function _callee4() {\n var _t;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n _context4.n = 1;\n return _this.server.getLatestLedger();\n case 1:\n _t = _context4.v.sequence;\n return _context4.a(2, _t + 100);\n }\n }, _callee4);\n }))() : _ref9$expiration, _ref9$signAuthEntry = _ref9.signAuthEntry, signAuthEntry = _ref9$signAuthEntry === void 0 ? _this.options.signAuthEntry : _ref9$signAuthEntry, _ref9$address = _ref9.address, address = _ref9$address === void 0 ? _this.options.publicKey : _ref9$address, _ref9$authorizeEntry = _ref9.authorizeEntry, authorizeEntry = _ref9$authorizeEntry === void 0 ? _stellarBase.authorizeEntry : _ref9$authorizeEntry;\n if (_this.built) {\n _context7.n = 1;\n break;\n }\n throw new Error(\"Transaction has not yet been assembled or simulated\");\n case 1:\n if (!(authorizeEntry === _stellarBase.authorizeEntry)) {\n _context7.n = 4;\n break;\n }\n needsNonInvokerSigningBy = _this.needsNonInvokerSigningBy();\n if (!(needsNonInvokerSigningBy.length === 0)) {\n _context7.n = 2;\n break;\n }\n throw new AssembledTransaction.Errors.NoUnsignedNonInvokerAuthEntries(\"No unsigned non-invoker auth entries; maybe you already signed?\");\n case 2:\n if (!(needsNonInvokerSigningBy.indexOf(address !== null && address !== void 0 ? address : \"\") === -1)) {\n _context7.n = 3;\n break;\n }\n throw new AssembledTransaction.Errors.NoSignatureNeeded(\"No auth entries for public key \\\"\".concat(address, \"\\\"\"));\n case 3:\n if (signAuthEntry) {\n _context7.n = 4;\n break;\n }\n throw new AssembledTransaction.Errors.NoSigner(\"You must provide `signAuthEntry` or a custom `authorizeEntry`\");\n case 4:\n rawInvokeHostFunctionOp = _this.built.operations[0];\n authEntries = (_rawInvokeHostFunctio2 = rawInvokeHostFunctionOp.auth) !== null && _rawInvokeHostFunctio2 !== void 0 ? _rawInvokeHostFunctio2 : [];\n _iterator = _createForOfIteratorHelper(authEntries.entries());\n _context7.p = 5;\n _loop = _regenerator().m(function _loop() {\n var _step$value, i, entry, credentials, authEntryAddress, sign, _t2, _t3, _t4;\n return _regenerator().w(function (_context6) {\n while (1) switch (_context6.n) {\n case 0:\n _step$value = _slicedToArray(_step.value, 2), i = _step$value[0], entry = _step$value[1];\n credentials = _stellarBase.xdr.SorobanCredentials.fromXDR(entry.credentials().toXDR());\n if (!(credentials.switch() !== _stellarBase.xdr.SorobanCredentialsType.sorobanCredentialsAddress())) {\n _context6.n = 1;\n break;\n }\n return _context6.a(2, 0);\n case 1:\n authEntryAddress = _stellarBase.Address.fromScAddress(credentials.address().address()).toString();\n if (!(authEntryAddress !== address)) {\n _context6.n = 2;\n break;\n }\n return _context6.a(2, 0);\n case 2:\n sign = signAuthEntry !== null && signAuthEntry !== void 0 ? signAuthEntry : Promise.resolve;\n _t2 = authorizeEntry;\n _t3 = entry;\n _t4 = function () {\n var _ref1 = _asyncToGenerator(_regenerator().m(function _callee5(preimage) {\n var _yield$sign, signedAuthEntry, error;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n _context5.n = 1;\n return sign(preimage.toXDR(\"base64\"), {\n address: address\n });\n case 1:\n _yield$sign = _context5.v;\n signedAuthEntry = _yield$sign.signedAuthEntry;\n error = _yield$sign.error;\n _this.handleWalletError(error);\n return _context5.a(2, Buffer.from(signedAuthEntry, \"base64\"));\n }\n }, _callee5);\n }));\n return function (_x) {\n return _ref1.apply(this, arguments);\n };\n }();\n _context6.n = 3;\n return expiration;\n case 3:\n _context6.n = 4;\n return _t2(_t3, _t4, _context6.v, _this.options.networkPassphrase);\n case 4:\n authEntries[i] = _context6.v;\n case 5:\n return _context6.a(2);\n }\n }, _loop);\n });\n _iterator.s();\n case 6:\n if ((_step = _iterator.n()).done) {\n _context7.n = 9;\n break;\n }\n return _context7.d(_regeneratorValues(_loop()), 7);\n case 7:\n _ret = _context7.v;\n if (!(_ret === 0)) {\n _context7.n = 8;\n break;\n }\n return _context7.a(3, 8);\n case 8:\n _context7.n = 6;\n break;\n case 9:\n _context7.n = 11;\n break;\n case 10:\n _context7.p = 10;\n _t5 = _context7.v;\n _iterator.e(_t5);\n case 11:\n _context7.p = 11;\n _iterator.f();\n return _context7.f(11);\n case 12:\n return _context7.a(2);\n }\n }, _callee6, null, [[5, 10, 11, 12]]);\n })));\n this.options = options;\n this.options.simulate = (_this$options$simulat = this.options.simulate) !== null && _this$options$simulat !== void 0 ? _this$options$simulat : true;\n this.server = new _rpc.Server(this.options.rpcUrl, {\n allowHttp: (_this$options$allowHt = this.options.allowHttp) !== null && _this$options$allowHt !== void 0 ? _this$options$allowHt : false\n });\n }\n return _createClass(AssembledTransaction, [{\n key: \"toJSON\",\n value: function toJSON() {\n var _this$built;\n return JSON.stringify({\n method: this.options.method,\n tx: (_this$built = this.built) === null || _this$built === void 0 ? void 0 : _this$built.toXDR(),\n simulationResult: {\n auth: this.simulationData.result.auth.map(function (a) {\n return a.toXDR(\"base64\");\n }),\n retval: this.simulationData.result.retval.toXDR(\"base64\")\n },\n simulationTransactionData: this.simulationData.transactionData.toXDR(\"base64\")\n });\n }\n }, {\n key: \"toXDR\",\n value: function toXDR() {\n var _this$built2;\n if (!this.built) throw new Error(\"Transaction has not yet been simulated; \" + \"call `AssembledTransaction.simulate` first.\");\n return (_this$built2 = this.built) === null || _this$built2 === void 0 ? void 0 : _this$built2.toEnvelope().toXDR(\"base64\");\n }\n }, {\n key: \"handleWalletError\",\n value: function handleWalletError(error) {\n if (!error) return;\n var message = error.message,\n code = error.code;\n var fullMessage = \"\".concat(message).concat(error.ext ? \" (\".concat(error.ext.join(\", \"), \")\") : \"\");\n switch (code) {\n case -1:\n throw new AssembledTransaction.Errors.InternalWalletError(fullMessage);\n case -2:\n throw new AssembledTransaction.Errors.ExternalServiceError(fullMessage);\n case -3:\n throw new AssembledTransaction.Errors.InvalidClientRequest(fullMessage);\n case -4:\n throw new AssembledTransaction.Errors.UserRejected(fullMessage);\n default:\n throw new Error(\"Unhandled error: \".concat(fullMessage));\n }\n }\n }, {\n key: \"simulationData\",\n get: function get() {\n var _simulation$result;\n if (this.simulationResult && this.simulationTransactionData) {\n return {\n result: this.simulationResult,\n transactionData: this.simulationTransactionData\n };\n }\n var simulation = this.simulation;\n if (!simulation) {\n throw new AssembledTransaction.Errors.NotYetSimulated(\"Transaction has not yet been simulated\");\n }\n if (_api.Api.isSimulationError(simulation)) {\n throw new AssembledTransaction.Errors.SimulationFailed(\"Transaction simulation failed: \\\"\".concat(simulation.error, \"\\\"\"));\n }\n if (_api.Api.isSimulationRestore(simulation)) {\n throw new AssembledTransaction.Errors.ExpiredState(\"You need to restore some contract state before you can invoke this method.\\n\" + \"You can set `restore` to true in the method options in order to \" + \"automatically restore the contract state when needed.\");\n }\n this.simulationResult = (_simulation$result = simulation.result) !== null && _simulation$result !== void 0 ? _simulation$result : {\n auth: [],\n retval: _stellarBase.xdr.ScVal.scvVoid()\n };\n this.simulationTransactionData = simulation.transactionData.build();\n return {\n result: this.simulationResult,\n transactionData: this.simulationTransactionData\n };\n }\n }, {\n key: \"result\",\n get: function get() {\n try {\n if (!this.simulationData.result) {\n throw new Error(\"No simulation result!\");\n }\n return this.options.parseResultXdr(this.simulationData.result.retval);\n } catch (e) {\n if (!(0, _utils.implementsToString)(e)) throw e;\n var err = this.parseError(e.toString());\n if (err) return err;\n throw e;\n }\n }\n }, {\n key: \"parseError\",\n value: function parseError(errorMessage) {\n if (!this.options.errorTypes) return undefined;\n var match = errorMessage.match(_utils.contractErrorPattern);\n if (!match) return undefined;\n var i = parseInt(match[1], 10);\n var err = this.options.errorTypes[i];\n if (!err) return undefined;\n return new _rust_result.Err(err);\n }\n }, {\n key: \"send\",\n value: (function () {\n var _send = _asyncToGenerator(_regenerator().m(function _callee7(watcher) {\n var sent;\n return _regenerator().w(function (_context8) {\n while (1) switch (_context8.n) {\n case 0:\n if (this.signed) {\n _context8.n = 1;\n break;\n }\n throw new Error(\"The transaction has not yet been signed. Run `sign` first, or use `signAndSend` instead.\");\n case 1:\n _context8.n = 2;\n return _sent_transaction.SentTransaction.init(this, watcher);\n case 2:\n sent = _context8.v;\n return _context8.a(2, sent);\n }\n }, _callee7, this);\n }));\n function send(_x2) {\n return _send.apply(this, arguments);\n }\n return send;\n }())\n }, {\n key: \"isReadCall\",\n get: function get() {\n var authsCount = this.simulationData.result.auth.length;\n var writeLength = this.simulationData.transactionData.resources().footprint().readWrite().length;\n return authsCount === 0 && writeLength === 0;\n }\n }, {\n key: \"restoreFootprint\",\n value: (function () {\n var _restoreFootprint = _asyncToGenerator(_regenerator().m(function _callee8(restorePreamble, account) {\n var restoreTx, sentTransaction, _t6;\n return _regenerator().w(function (_context9) {\n while (1) switch (_context9.n) {\n case 0:\n if (this.options.signTransaction) {\n _context9.n = 1;\n break;\n }\n throw new Error(\"For automatic restore to work you must provide a signTransaction function when initializing your Client\");\n case 1:\n if (!(account !== null && account !== void 0)) {\n _context9.n = 2;\n break;\n }\n _t6 = account;\n _context9.n = 4;\n break;\n case 2:\n _context9.n = 3;\n return (0, _utils.getAccount)(this.options, this.server);\n case 3:\n _t6 = _context9.v;\n case 4:\n account = _t6;\n _context9.n = 5;\n return AssembledTransaction.buildFootprintRestoreTransaction(_objectSpread({}, this.options), restorePreamble.transactionData, account, restorePreamble.minResourceFee);\n case 5:\n restoreTx = _context9.v;\n _context9.n = 6;\n return restoreTx.signAndSend();\n case 6:\n sentTransaction = _context9.v;\n if (sentTransaction.getTransactionResponse) {\n _context9.n = 7;\n break;\n }\n throw new AssembledTransaction.Errors.RestorationFailure(\"The attempt at automatic restore failed. \\n\".concat(JSON.stringify(sentTransaction)));\n case 7:\n return _context9.a(2, sentTransaction.getTransactionResponse);\n }\n }, _callee8, this);\n }));\n function restoreFootprint(_x3, _x4) {\n return _restoreFootprint.apply(this, arguments);\n }\n return restoreFootprint;\n }())\n }], [{\n key: \"fromJSON\",\n value: function fromJSON(options, _ref10) {\n var tx = _ref10.tx,\n simulationResult = _ref10.simulationResult,\n simulationTransactionData = _ref10.simulationTransactionData;\n var txn = new AssembledTransaction(options);\n txn.built = _stellarBase.TransactionBuilder.fromXDR(tx, options.networkPassphrase);\n txn.simulationResult = {\n auth: simulationResult.auth.map(function (a) {\n return _stellarBase.xdr.SorobanAuthorizationEntry.fromXDR(a, \"base64\");\n }),\n retval: _stellarBase.xdr.ScVal.fromXDR(simulationResult.retval, \"base64\")\n };\n txn.simulationTransactionData = _stellarBase.xdr.SorobanTransactionData.fromXDR(simulationTransactionData, \"base64\");\n return txn;\n }\n }, {\n key: \"fromXDR\",\n value: function fromXDR(options, encodedXDR, spec) {\n var _operation$func;\n var envelope = _stellarBase.xdr.TransactionEnvelope.fromXDR(encodedXDR, \"base64\");\n var built = _stellarBase.TransactionBuilder.fromXDR(envelope, options.networkPassphrase);\n var operation = built.operations[0];\n if (!(operation !== null && operation !== void 0 && (_operation$func = operation.func) !== null && _operation$func !== void 0 && _operation$func.value) || typeof operation.func.value !== \"function\") {\n throw new Error(\"Could not extract the method from the transaction envelope.\");\n }\n var invokeContractArgs = operation.func.value();\n if (!(invokeContractArgs !== null && invokeContractArgs !== void 0 && invokeContractArgs.functionName)) {\n throw new Error(\"Could not extract the method name from the transaction envelope.\");\n }\n var method = invokeContractArgs.functionName().toString(\"utf-8\");\n var txn = new AssembledTransaction(_objectSpread(_objectSpread({}, options), {}, {\n method: method,\n parseResultXdr: function parseResultXdr(result) {\n return spec.funcResToNative(method, result);\n }\n }));\n txn.built = built;\n return txn;\n }\n }, {\n key: \"build\",\n value: function build(options) {\n var _options$args;\n var contract = new _stellarBase.Contract(options.contractId);\n return AssembledTransaction.buildWithOp(contract.call.apply(contract, [options.method].concat(_toConsumableArray((_options$args = options.args) !== null && _options$args !== void 0 ? _options$args : []))), options);\n }\n }, {\n key: \"buildWithOp\",\n value: (function () {\n var _buildWithOp = _asyncToGenerator(_regenerator().m(function _callee9(operation, options) {\n var _options$fee, _options$timeoutInSec;\n var tx, account;\n return _regenerator().w(function (_context0) {\n while (1) switch (_context0.n) {\n case 0:\n tx = new AssembledTransaction(options);\n _context0.n = 1;\n return (0, _utils.getAccount)(options, tx.server);\n case 1:\n account = _context0.v;\n tx.raw = new _stellarBase.TransactionBuilder(account, {\n fee: (_options$fee = options.fee) !== null && _options$fee !== void 0 ? _options$fee : _stellarBase.BASE_FEE,\n networkPassphrase: options.networkPassphrase\n }).setTimeout((_options$timeoutInSec = options.timeoutInSeconds) !== null && _options$timeoutInSec !== void 0 ? _options$timeoutInSec : _types.DEFAULT_TIMEOUT).addOperation(operation);\n if (!options.simulate) {\n _context0.n = 2;\n break;\n }\n _context0.n = 2;\n return tx.simulate();\n case 2:\n return _context0.a(2, tx);\n }\n }, _callee9);\n }));\n function buildWithOp(_x5, _x6) {\n return _buildWithOp.apply(this, arguments);\n }\n return buildWithOp;\n }())\n }, {\n key: \"buildFootprintRestoreTransaction\",\n value: function () {\n var _buildFootprintRestoreTransaction = _asyncToGenerator(_regenerator().m(function _callee0(options, sorobanData, account, fee) {\n var _options$timeoutInSec2;\n var tx;\n return _regenerator().w(function (_context1) {\n while (1) switch (_context1.n) {\n case 0:\n tx = new AssembledTransaction(options);\n tx.raw = new _stellarBase.TransactionBuilder(account, {\n fee: fee,\n networkPassphrase: options.networkPassphrase\n }).setSorobanData(sorobanData instanceof _stellarBase.SorobanDataBuilder ? sorobanData.build() : sorobanData).addOperation(_stellarBase.Operation.restoreFootprint({})).setTimeout((_options$timeoutInSec2 = options.timeoutInSeconds) !== null && _options$timeoutInSec2 !== void 0 ? _options$timeoutInSec2 : _types.DEFAULT_TIMEOUT);\n _context1.n = 1;\n return tx.simulate({\n restore: false\n });\n case 1:\n return _context1.a(2, tx);\n }\n }, _callee0);\n }));\n function buildFootprintRestoreTransaction(_x7, _x8, _x9, _x0) {\n return _buildFootprintRestoreTransaction.apply(this, arguments);\n }\n return buildFootprintRestoreTransaction;\n }()\n }]);\n}();\n_defineProperty(AssembledTransaction, \"Errors\", {\n ExpiredState: function (_Error) {\n function ExpiredStateError() {\n _classCallCheck(this, ExpiredStateError);\n return _callSuper(this, ExpiredStateError, arguments);\n }\n _inherits(ExpiredStateError, _Error);\n return _createClass(ExpiredStateError);\n }(_wrapNativeSuper(Error)),\n RestorationFailure: function (_Error2) {\n function RestoreFailureError() {\n _classCallCheck(this, RestoreFailureError);\n return _callSuper(this, RestoreFailureError, arguments);\n }\n _inherits(RestoreFailureError, _Error2);\n return _createClass(RestoreFailureError);\n }(_wrapNativeSuper(Error)),\n NeedsMoreSignatures: function (_Error3) {\n function NeedsMoreSignaturesError() {\n _classCallCheck(this, NeedsMoreSignaturesError);\n return _callSuper(this, NeedsMoreSignaturesError, arguments);\n }\n _inherits(NeedsMoreSignaturesError, _Error3);\n return _createClass(NeedsMoreSignaturesError);\n }(_wrapNativeSuper(Error)),\n NoSignatureNeeded: function (_Error4) {\n function NoSignatureNeededError() {\n _classCallCheck(this, NoSignatureNeededError);\n return _callSuper(this, NoSignatureNeededError, arguments);\n }\n _inherits(NoSignatureNeededError, _Error4);\n return _createClass(NoSignatureNeededError);\n }(_wrapNativeSuper(Error)),\n NoUnsignedNonInvokerAuthEntries: function (_Error5) {\n function NoUnsignedNonInvokerAuthEntriesError() {\n _classCallCheck(this, NoUnsignedNonInvokerAuthEntriesError);\n return _callSuper(this, NoUnsignedNonInvokerAuthEntriesError, arguments);\n }\n _inherits(NoUnsignedNonInvokerAuthEntriesError, _Error5);\n return _createClass(NoUnsignedNonInvokerAuthEntriesError);\n }(_wrapNativeSuper(Error)),\n NoSigner: function (_Error6) {\n function NoSignerError() {\n _classCallCheck(this, NoSignerError);\n return _callSuper(this, NoSignerError, arguments);\n }\n _inherits(NoSignerError, _Error6);\n return _createClass(NoSignerError);\n }(_wrapNativeSuper(Error)),\n NotYetSimulated: function (_Error7) {\n function NotYetSimulatedError() {\n _classCallCheck(this, NotYetSimulatedError);\n return _callSuper(this, NotYetSimulatedError, arguments);\n }\n _inherits(NotYetSimulatedError, _Error7);\n return _createClass(NotYetSimulatedError);\n }(_wrapNativeSuper(Error)),\n FakeAccount: function (_Error8) {\n function FakeAccountError() {\n _classCallCheck(this, FakeAccountError);\n return _callSuper(this, FakeAccountError, arguments);\n }\n _inherits(FakeAccountError, _Error8);\n return _createClass(FakeAccountError);\n }(_wrapNativeSuper(Error)),\n SimulationFailed: function (_Error9) {\n function SimulationFailedError() {\n _classCallCheck(this, SimulationFailedError);\n return _callSuper(this, SimulationFailedError, arguments);\n }\n _inherits(SimulationFailedError, _Error9);\n return _createClass(SimulationFailedError);\n }(_wrapNativeSuper(Error)),\n InternalWalletError: function (_Error0) {\n function InternalWalletError() {\n _classCallCheck(this, InternalWalletError);\n return _callSuper(this, InternalWalletError, arguments);\n }\n _inherits(InternalWalletError, _Error0);\n return _createClass(InternalWalletError);\n }(_wrapNativeSuper(Error)),\n ExternalServiceError: function (_Error1) {\n function ExternalServiceError() {\n _classCallCheck(this, ExternalServiceError);\n return _callSuper(this, ExternalServiceError, arguments);\n }\n _inherits(ExternalServiceError, _Error1);\n return _createClass(ExternalServiceError);\n }(_wrapNativeSuper(Error)),\n InvalidClientRequest: function (_Error10) {\n function InvalidClientRequestError() {\n _classCallCheck(this, InvalidClientRequestError);\n return _callSuper(this, InvalidClientRequestError, arguments);\n }\n _inherits(InvalidClientRequestError, _Error10);\n return _createClass(InvalidClientRequestError);\n }(_wrapNativeSuper(Error)),\n UserRejected: function (_Error11) {\n function UserRejectedError() {\n _classCallCheck(this, UserRejectedError);\n return _callSuper(this, UserRejectedError, arguments);\n }\n _inherits(UserRejectedError, _Error11);\n return _createClass(UserRejectedError);\n }(_wrapNativeSuper(Error))\n});", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.basicNodeSigner = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nvar basicNodeSigner = exports.basicNodeSigner = function basicNodeSigner(keypair, networkPassphrase) {\n return {\n signTransaction: function () {\n var _signTransaction = _asyncToGenerator(_regenerator().m(function _callee(xdr, opts) {\n var t;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n t = _stellarBase.TransactionBuilder.fromXDR(xdr, (opts === null || opts === void 0 ? void 0 : opts.networkPassphrase) || networkPassphrase);\n t.sign(keypair);\n return _context.a(2, {\n signedTxXdr: t.toXDR(),\n signerAddress: keypair.publicKey()\n });\n }\n }, _callee);\n }));\n function signTransaction(_x, _x2) {\n return _signTransaction.apply(this, arguments);\n }\n return signTransaction;\n }(),\n signAuthEntry: function () {\n var _signAuthEntry = _asyncToGenerator(_regenerator().m(function _callee2(authEntry) {\n var signedAuthEntry;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n signedAuthEntry = keypair.sign((0, _stellarBase.hash)(Buffer.from(authEntry, \"base64\"))).toString(\"base64\");\n return _context2.a(2, {\n signedAuthEntry: signedAuthEntry,\n signerAddress: keypair.publicKey()\n });\n }\n }, _callee2);\n }));\n function signAuthEntry(_x3) {\n return _signAuthEntry.apply(this, arguments);\n }\n return signAuthEntry;\n }()\n };\n};", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Spec = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _rust_result = require(\"./rust_result\");\nvar _utils = require(\"./utils\");\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction enumToJsonSchema(udt) {\n var description = udt.doc().toString();\n var cases = udt.cases();\n var oneOf = [];\n cases.forEach(function (aCase) {\n var title = aCase.name().toString();\n var desc = aCase.doc().toString();\n oneOf.push({\n description: desc,\n title: title,\n enum: [aCase.value()],\n type: \"number\"\n });\n });\n var res = {\n oneOf: oneOf\n };\n if (description.length > 0) {\n res.description = description;\n }\n return res;\n}\nfunction isNumeric(field) {\n return /^\\d+$/.test(field.name().toString());\n}\nfunction readObj(args, input) {\n var inputName = input.name().toString();\n var entry = Object.entries(args).find(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 1),\n name = _ref2[0];\n return name === inputName;\n });\n if (!entry) {\n throw new Error(\"Missing field \".concat(inputName));\n }\n return entry[1];\n}\nfunction findCase(name) {\n return function matches(entry) {\n switch (entry.switch().value) {\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value:\n {\n var tuple = entry.tupleCase();\n return tuple.name().toString() === name;\n }\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0().value:\n {\n var voidCase = entry.voidCase();\n return voidCase.name().toString() === name;\n }\n default:\n return false;\n }\n };\n}\nfunction stringToScVal(str, ty) {\n switch (ty.value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeString().value:\n return _stellarBase.xdr.ScVal.scvString(str);\n case _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value:\n return _stellarBase.xdr.ScVal.scvSymbol(str);\n case _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value:\n return _stellarBase.Address.fromString(str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value:\n return new _stellarBase.XdrLargeInt(\"u64\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value:\n return new _stellarBase.XdrLargeInt(\"i64\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value:\n return new _stellarBase.XdrLargeInt(\"u128\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value:\n return new _stellarBase.XdrLargeInt(\"i128\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value:\n return new _stellarBase.XdrLargeInt(\"u256\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value:\n return new _stellarBase.XdrLargeInt(\"i256\", str).toScVal();\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value:\n return _stellarBase.xdr.ScVal.scvBytes(Buffer.from(str, \"base64\"));\n default:\n throw new TypeError(\"invalid type \".concat(ty.name, \" specified for string value\"));\n }\n}\nvar PRIMITIVE_DEFINITONS = {\n U32: {\n type: \"integer\",\n minimum: 0,\n maximum: 4294967295\n },\n I32: {\n type: \"integer\",\n minimum: -2147483648,\n maximum: 2147483647\n },\n U64: {\n type: \"string\",\n pattern: \"^([1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 20\n },\n I64: {\n type: \"string\",\n pattern: \"^(-?[1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 21\n },\n U128: {\n type: \"string\",\n pattern: \"^([1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 39\n },\n I128: {\n type: \"string\",\n pattern: \"^(-?[1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 40\n },\n U256: {\n type: \"string\",\n pattern: \"^([1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 78\n },\n I256: {\n type: \"string\",\n pattern: \"^(-?[1-9][0-9]*|0)$\",\n minLength: 1,\n maxLength: 79\n },\n Address: {\n type: \"string\",\n format: \"address\",\n description: \"Address can be a public key or contract id\"\n },\n ScString: {\n type: \"string\",\n description: \"ScString is a string\"\n },\n ScSymbol: {\n type: \"string\",\n description: \"ScSymbol is a string\"\n },\n DataUrl: {\n type: \"string\",\n pattern: \"^(?:[A-Za-z0-9+\\\\/]{4})*(?:[A-Za-z0-9+\\\\/]{2}==|[A-Za-z0-9+\\\\/]{3}=)?$\"\n }\n};\nfunction typeRef(typeDef) {\n var t = typeDef.switch();\n var value = t.value;\n var ref;\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeVal().value:\n {\n ref = \"Val\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeBool().value:\n {\n return {\n type: \"boolean\"\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value:\n {\n return {\n type: \"null\"\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeError().value:\n {\n ref = \"Error\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeU32().value:\n {\n ref = \"U32\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeI32().value:\n {\n ref = \"I32\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value:\n {\n ref = \"U64\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value:\n {\n ref = \"I64\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeTimepoint().value:\n {\n throw new Error(\"Timepoint type not supported\");\n ref = \"Timepoint\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeDuration().value:\n {\n throw new Error(\"Duration not supported\");\n ref = \"Duration\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value:\n {\n ref = \"U128\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value:\n {\n ref = \"I128\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value:\n {\n ref = \"U256\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value:\n {\n ref = \"I256\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value:\n {\n ref = \"DataUrl\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeString().value:\n {\n ref = \"ScString\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value:\n {\n ref = \"ScSymbol\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value:\n {\n ref = \"Address\";\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeOption().value:\n {\n var opt = typeDef.option();\n return typeRef(opt.valueType());\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeResult().value:\n {\n break;\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeVec().value:\n {\n var arr = typeDef.vec();\n var reference = typeRef(arr.elementType());\n return {\n type: \"array\",\n items: reference\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeMap().value:\n {\n var map = typeDef.map();\n var items = [typeRef(map.keyType()), typeRef(map.valueType())];\n return {\n type: \"array\",\n items: {\n type: \"array\",\n items: items,\n minItems: 2,\n maxItems: 2\n }\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value:\n {\n var tuple = typeDef.tuple();\n var minItems = tuple.valueTypes().length;\n var maxItems = minItems;\n var _items = tuple.valueTypes().map(typeRef);\n return {\n type: \"array\",\n items: _items,\n minItems: minItems,\n maxItems: maxItems\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value:\n {\n var _arr = typeDef.bytesN();\n return {\n $ref: \"#/definitions/DataUrl\",\n maxLength: _arr.n()\n };\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value:\n {\n var udt = typeDef.udt();\n ref = udt.name().toString();\n break;\n }\n }\n return {\n $ref: \"#/definitions/\".concat(ref)\n };\n}\nfunction isRequired(typeDef) {\n return typeDef.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeOption().value;\n}\nfunction argsAndRequired(input) {\n var properties = {};\n var required = [];\n input.forEach(function (arg) {\n var aType = arg.type();\n var name = arg.name().toString();\n properties[name] = typeRef(aType);\n if (isRequired(aType)) {\n required.push(name);\n }\n });\n var res = {\n properties: properties\n };\n if (required.length > 0) {\n res.required = required;\n }\n return res;\n}\nfunction structToJsonSchema(udt) {\n var fields = udt.fields();\n if (fields.some(isNumeric)) {\n if (!fields.every(isNumeric)) {\n throw new Error(\"mixed numeric and non-numeric field names are not allowed\");\n }\n var items = fields.map(function (_, i) {\n return typeRef(fields[i].type());\n });\n return {\n type: \"array\",\n items: items,\n minItems: fields.length,\n maxItems: fields.length\n };\n }\n var description = udt.doc().toString();\n var _argsAndRequired = argsAndRequired(fields),\n properties = _argsAndRequired.properties,\n required = _argsAndRequired.required;\n properties.additionalProperties = false;\n return {\n description: description,\n properties: properties,\n required: required,\n type: \"object\"\n };\n}\nfunction functionToJsonSchema(func) {\n var _argsAndRequired2 = argsAndRequired(func.inputs()),\n properties = _argsAndRequired2.properties,\n required = _argsAndRequired2.required;\n var args = {\n additionalProperties: false,\n properties: properties,\n type: \"object\"\n };\n if ((required === null || required === void 0 ? void 0 : required.length) > 0) {\n args.required = required;\n }\n var input = {\n properties: {\n args: args\n }\n };\n var outputs = func.outputs();\n var output = outputs.length > 0 ? typeRef(outputs[0]) : typeRef(_stellarBase.xdr.ScSpecTypeDef.scSpecTypeVoid());\n var description = func.doc().toString();\n if (description.length > 0) {\n input.description = description;\n }\n input.additionalProperties = false;\n output.additionalProperties = false;\n return {\n input: input,\n output: output\n };\n}\nfunction unionToJsonSchema(udt) {\n var description = udt.doc().toString();\n var cases = udt.cases();\n var oneOf = [];\n cases.forEach(function (aCase) {\n switch (aCase.switch().value) {\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0().value:\n {\n var c = aCase.voidCase();\n var title = c.name().toString();\n oneOf.push({\n type: \"object\",\n title: title,\n properties: {\n tag: title\n },\n additionalProperties: false,\n required: [\"tag\"]\n });\n break;\n }\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value:\n {\n var _c = aCase.tupleCase();\n var _title = _c.name().toString();\n oneOf.push({\n type: \"object\",\n title: _title,\n properties: {\n tag: _title,\n values: {\n type: \"array\",\n items: _c.type().map(typeRef)\n }\n },\n required: [\"tag\", \"values\"],\n additionalProperties: false\n });\n }\n }\n });\n var res = {\n oneOf: oneOf\n };\n if (description.length > 0) {\n res.description = description;\n }\n return res;\n}\nvar Spec = exports.Spec = function () {\n function Spec(entries) {\n _classCallCheck(this, Spec);\n _defineProperty(this, \"entries\", []);\n if (Buffer.isBuffer(entries)) {\n this.entries = (0, _utils.processSpecEntryStream)(entries);\n } else if (typeof entries === \"string\") {\n this.entries = (0, _utils.processSpecEntryStream)(Buffer.from(entries, \"base64\"));\n } else {\n if (entries.length === 0) {\n throw new Error(\"Contract spec must have at least one entry\");\n }\n var entry = entries[0];\n if (typeof entry === \"string\") {\n this.entries = entries.map(function (s) {\n return _stellarBase.xdr.ScSpecEntry.fromXDR(s, \"base64\");\n });\n } else {\n this.entries = entries;\n }\n }\n }\n return _createClass(Spec, [{\n key: \"funcs\",\n value: function funcs() {\n return this.entries.filter(function (entry) {\n return entry.switch().value === _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value;\n }).map(function (entry) {\n return entry.functionV0();\n });\n }\n }, {\n key: \"getFunc\",\n value: function getFunc(name) {\n var entry = this.findEntry(name);\n if (entry.switch().value !== _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value) {\n throw new Error(\"\".concat(name, \" is not a function\"));\n }\n return entry.functionV0();\n }\n }, {\n key: \"funcArgsToScVals\",\n value: function funcArgsToScVals(name, args) {\n var _this = this;\n var fn = this.getFunc(name);\n return fn.inputs().map(function (input) {\n return _this.nativeToScVal(readObj(args, input), input.type());\n });\n }\n }, {\n key: \"funcResToNative\",\n value: function funcResToNative(name, val_or_base64) {\n var val = typeof val_or_base64 === \"string\" ? _stellarBase.xdr.ScVal.fromXDR(val_or_base64, \"base64\") : val_or_base64;\n var func = this.getFunc(name);\n var outputs = func.outputs();\n if (outputs.length === 0) {\n var type = val.switch();\n if (type.value !== _stellarBase.xdr.ScValType.scvVoid().value) {\n throw new Error(\"Expected void, got \".concat(type.name));\n }\n return null;\n }\n if (outputs.length > 1) {\n throw new Error(\"Multiple outputs not supported\");\n }\n var output = outputs[0];\n if (output.switch().value === _stellarBase.xdr.ScSpecType.scSpecTypeResult().value) {\n return new _rust_result.Ok(this.scValToNative(val, output.result().okType()));\n }\n return this.scValToNative(val, output);\n }\n }, {\n key: \"findEntry\",\n value: function findEntry(name) {\n var entry = this.entries.find(function (e) {\n return e.value().name().toString() === name;\n });\n if (!entry) {\n throw new Error(\"no such entry: \".concat(name));\n }\n return entry;\n }\n }, {\n key: \"nativeToScVal\",\n value: function nativeToScVal(val, ty) {\n var _this2 = this;\n var t = ty.switch();\n var value = t.value;\n if (t.value === _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value) {\n var udt = ty.udt();\n return this.nativeToUdt(val, udt.name().toString());\n }\n if (value === _stellarBase.xdr.ScSpecType.scSpecTypeOption().value) {\n var opt = ty.option();\n if (val === undefined) {\n return _stellarBase.xdr.ScVal.scvVoid();\n }\n return this.nativeToScVal(val, opt.valueType());\n }\n switch (_typeof(val)) {\n case \"object\":\n {\n var _val$constructor$name, _val$constructor;\n if (val === null) {\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value:\n return _stellarBase.xdr.ScVal.scvVoid();\n default:\n throw new TypeError(\"Type \".concat(ty, \" was not void, but value was null\"));\n }\n }\n if (val instanceof _stellarBase.xdr.ScVal) {\n return val;\n }\n if (val instanceof _stellarBase.Address) {\n if (ty.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value) {\n throw new TypeError(\"Type \".concat(ty, \" was not address, but value was Address\"));\n }\n return val.toScVal();\n }\n if (val instanceof _stellarBase.Contract) {\n if (ty.switch().value !== _stellarBase.xdr.ScSpecType.scSpecTypeAddress().value) {\n throw new TypeError(\"Type \".concat(ty, \" was not address, but value was Address\"));\n }\n return val.address().toScVal();\n }\n if (val instanceof Uint8Array || Buffer.isBuffer(val)) {\n var copy = Uint8Array.from(val);\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytesN().value:\n {\n var bytesN = ty.bytesN();\n if (copy.length !== bytesN.n()) {\n throw new TypeError(\"expected \".concat(bytesN.n(), \" bytes, but got \").concat(copy.length));\n }\n return _stellarBase.xdr.ScVal.scvBytes(copy);\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeBytes().value:\n return _stellarBase.xdr.ScVal.scvBytes(copy);\n default:\n throw new TypeError(\"invalid type (\".concat(ty, \") specified for Bytes and BytesN\"));\n }\n }\n if (Array.isArray(val)) {\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeVec().value:\n {\n var vec = ty.vec();\n var elementType = vec.elementType();\n return _stellarBase.xdr.ScVal.scvVec(val.map(function (v) {\n return _this2.nativeToScVal(v, elementType);\n }));\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value:\n {\n var tup = ty.tuple();\n var valTypes = tup.valueTypes();\n if (val.length !== valTypes.length) {\n throw new TypeError(\"Tuple expects \".concat(valTypes.length, \" values, but \").concat(val.length, \" were provided\"));\n }\n return _stellarBase.xdr.ScVal.scvVec(val.map(function (v, i) {\n return _this2.nativeToScVal(v, valTypes[i]);\n }));\n }\n case _stellarBase.xdr.ScSpecType.scSpecTypeMap().value:\n {\n var map = ty.map();\n var keyType = map.keyType();\n var valueType = map.valueType();\n return _stellarBase.xdr.ScVal.scvMap(val.map(function (entry) {\n var key = _this2.nativeToScVal(entry[0], keyType);\n var mapVal = _this2.nativeToScVal(entry[1], valueType);\n return new _stellarBase.xdr.ScMapEntry({\n key: key,\n val: mapVal\n });\n }));\n }\n default:\n throw new TypeError(\"Type \".concat(ty, \" was not vec, but value was Array\"));\n }\n }\n if (val.constructor === Map) {\n if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeMap().value) {\n throw new TypeError(\"Type \".concat(ty, \" was not map, but value was Map\"));\n }\n var scMap = ty.map();\n var _map = val;\n var entries = [];\n var values = _map.entries();\n var res = values.next();\n while (!res.done) {\n var _res$value = _slicedToArray(res.value, 2),\n k = _res$value[0],\n v = _res$value[1];\n var key = this.nativeToScVal(k, scMap.keyType());\n var mapval = this.nativeToScVal(v, scMap.valueType());\n entries.push(new _stellarBase.xdr.ScMapEntry({\n key: key,\n val: mapval\n }));\n res = values.next();\n }\n return _stellarBase.xdr.ScVal.scvMap(entries);\n }\n if (((_val$constructor$name = (_val$constructor = val.constructor) === null || _val$constructor === void 0 ? void 0 : _val$constructor.name) !== null && _val$constructor$name !== void 0 ? _val$constructor$name : \"\") !== \"Object\") {\n var _val$constructor2;\n throw new TypeError(\"cannot interpret \".concat((_val$constructor2 = val.constructor) === null || _val$constructor2 === void 0 ? void 0 : _val$constructor2.name, \" value as ScVal (\").concat(JSON.stringify(val), \")\"));\n }\n throw new TypeError(\"Received object \".concat(val, \" did not match the provided type \").concat(ty));\n }\n case \"number\":\n case \"bigint\":\n {\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeU32().value:\n return _stellarBase.xdr.ScVal.scvU32(val);\n case _stellarBase.xdr.ScSpecType.scSpecTypeI32().value:\n return _stellarBase.xdr.ScVal.scvI32(val);\n case _stellarBase.xdr.ScSpecType.scSpecTypeU64().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeI64().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeU128().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeI128().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeU256().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeI256().value:\n {\n var intType = t.name.substring(10).toLowerCase();\n return new _stellarBase.XdrLargeInt(intType, val).toScVal();\n }\n default:\n throw new TypeError(\"invalid type (\".concat(ty, \") specified for integer\"));\n }\n }\n case \"string\":\n return stringToScVal(val, t);\n case \"boolean\":\n {\n if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeBool().value) {\n throw TypeError(\"Type \".concat(ty, \" was not bool, but value was bool\"));\n }\n return _stellarBase.xdr.ScVal.scvBool(val);\n }\n case \"undefined\":\n {\n if (!ty) {\n return _stellarBase.xdr.ScVal.scvVoid();\n }\n switch (value) {\n case _stellarBase.xdr.ScSpecType.scSpecTypeVoid().value:\n case _stellarBase.xdr.ScSpecType.scSpecTypeOption().value:\n return _stellarBase.xdr.ScVal.scvVoid();\n default:\n throw new TypeError(\"Type \".concat(ty, \" was not void, but value was undefined\"));\n }\n }\n case \"function\":\n return this.nativeToScVal(val(), ty);\n default:\n throw new TypeError(\"failed to convert typeof \".concat(_typeof(val), \" (\").concat(val, \")\"));\n }\n }\n }, {\n key: \"nativeToUdt\",\n value: function nativeToUdt(val, name) {\n var entry = this.findEntry(name);\n switch (entry.switch()) {\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0():\n if (typeof val !== \"number\") {\n throw new TypeError(\"expected number for enum \".concat(name, \", but got \").concat(_typeof(val)));\n }\n return this.nativeToEnum(val, entry.udtEnumV0());\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0():\n return this.nativeToStruct(val, entry.udtStructV0());\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0():\n return this.nativeToUnion(val, entry.udtUnionV0());\n default:\n throw new Error(\"failed to parse udt \".concat(name));\n }\n }\n }, {\n key: \"nativeToUnion\",\n value: function nativeToUnion(val, union_) {\n var _this3 = this;\n var entryName = val.tag;\n var caseFound = union_.cases().find(function (entry) {\n var caseN = entry.value().name().toString();\n return caseN === entryName;\n });\n if (!caseFound) {\n throw new TypeError(\"no such enum entry: \".concat(entryName, \" in \").concat(union_));\n }\n var key = _stellarBase.xdr.ScVal.scvSymbol(entryName);\n switch (caseFound.switch()) {\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseVoidV0():\n {\n return _stellarBase.xdr.ScVal.scvVec([key]);\n }\n case _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0():\n {\n var types = caseFound.tupleCase().type();\n if (Array.isArray(val.values)) {\n if (val.values.length !== types.length) {\n throw new TypeError(\"union \".concat(union_, \" expects \").concat(types.length, \" values, but got \").concat(val.values.length));\n }\n var scvals = val.values.map(function (v, i) {\n return _this3.nativeToScVal(v, types[i]);\n });\n scvals.unshift(key);\n return _stellarBase.xdr.ScVal.scvVec(scvals);\n }\n throw new Error(\"failed to parse union case \".concat(caseFound, \" with \").concat(val));\n }\n default:\n throw new Error(\"failed to parse union \".concat(union_, \" with \").concat(val));\n }\n }\n }, {\n key: \"nativeToStruct\",\n value: function nativeToStruct(val, struct) {\n var _this4 = this;\n var fields = struct.fields();\n if (fields.some(isNumeric)) {\n if (!fields.every(isNumeric)) {\n throw new Error(\"mixed numeric and non-numeric field names are not allowed\");\n }\n return _stellarBase.xdr.ScVal.scvVec(fields.map(function (_, i) {\n return _this4.nativeToScVal(val[i], fields[i].type());\n }));\n }\n return _stellarBase.xdr.ScVal.scvMap(fields.map(function (field) {\n var name = field.name().toString();\n return new _stellarBase.xdr.ScMapEntry({\n key: _this4.nativeToScVal(name, _stellarBase.xdr.ScSpecTypeDef.scSpecTypeSymbol()),\n val: _this4.nativeToScVal(val[name], field.type())\n });\n }));\n }\n }, {\n key: \"nativeToEnum\",\n value: function nativeToEnum(val, enum_) {\n if (enum_.cases().some(function (entry) {\n return entry.value() === val;\n })) {\n return _stellarBase.xdr.ScVal.scvU32(val);\n }\n throw new TypeError(\"no such enum entry: \".concat(val, \" in \").concat(enum_));\n }\n }, {\n key: \"scValStrToNative\",\n value: function scValStrToNative(scv, typeDef) {\n return this.scValToNative(_stellarBase.xdr.ScVal.fromXDR(scv, \"base64\"), typeDef);\n }\n }, {\n key: \"scValToNative\",\n value: function scValToNative(scv, typeDef) {\n var _this5 = this;\n var t = typeDef.switch();\n var value = t.value;\n if (value === _stellarBase.xdr.ScSpecType.scSpecTypeUdt().value) {\n return this.scValUdtToNative(scv, typeDef.udt());\n }\n switch (scv.switch().value) {\n case _stellarBase.xdr.ScValType.scvVoid().value:\n return undefined;\n case _stellarBase.xdr.ScValType.scvU64().value:\n case _stellarBase.xdr.ScValType.scvI64().value:\n case _stellarBase.xdr.ScValType.scvU128().value:\n case _stellarBase.xdr.ScValType.scvI128().value:\n case _stellarBase.xdr.ScValType.scvU256().value:\n case _stellarBase.xdr.ScValType.scvI256().value:\n return (0, _stellarBase.scValToBigInt)(scv);\n case _stellarBase.xdr.ScValType.scvVec().value:\n {\n if (value === _stellarBase.xdr.ScSpecType.scSpecTypeVec().value) {\n var _scv$vec;\n var vec = typeDef.vec();\n return ((_scv$vec = scv.vec()) !== null && _scv$vec !== void 0 ? _scv$vec : []).map(function (elm) {\n return _this5.scValToNative(elm, vec.elementType());\n });\n }\n if (value === _stellarBase.xdr.ScSpecType.scSpecTypeTuple().value) {\n var _scv$vec2;\n var tuple = typeDef.tuple();\n var valTypes = tuple.valueTypes();\n return ((_scv$vec2 = scv.vec()) !== null && _scv$vec2 !== void 0 ? _scv$vec2 : []).map(function (elm, i) {\n return _this5.scValToNative(elm, valTypes[i]);\n });\n }\n throw new TypeError(\"Type \".concat(typeDef, \" was not vec, but \").concat(scv, \" is\"));\n }\n case _stellarBase.xdr.ScValType.scvAddress().value:\n return _stellarBase.Address.fromScVal(scv).toString();\n case _stellarBase.xdr.ScValType.scvMap().value:\n {\n var _scv$map;\n var map = (_scv$map = scv.map()) !== null && _scv$map !== void 0 ? _scv$map : [];\n if (value === _stellarBase.xdr.ScSpecType.scSpecTypeMap().value) {\n var typed = typeDef.map();\n var keyType = typed.keyType();\n var valueType = typed.valueType();\n var res = map.map(function (entry) {\n return [_this5.scValToNative(entry.key(), keyType), _this5.scValToNative(entry.val(), valueType)];\n });\n return res;\n }\n throw new TypeError(\"ScSpecType \".concat(t.name, \" was not map, but \").concat(JSON.stringify(scv, null, 2), \" is\"));\n }\n case _stellarBase.xdr.ScValType.scvBool().value:\n case _stellarBase.xdr.ScValType.scvU32().value:\n case _stellarBase.xdr.ScValType.scvI32().value:\n case _stellarBase.xdr.ScValType.scvBytes().value:\n return scv.value();\n case _stellarBase.xdr.ScValType.scvString().value:\n case _stellarBase.xdr.ScValType.scvSymbol().value:\n {\n var _scv$value;\n if (value !== _stellarBase.xdr.ScSpecType.scSpecTypeString().value && value !== _stellarBase.xdr.ScSpecType.scSpecTypeSymbol().value) {\n throw new Error(\"ScSpecType \".concat(t.name, \" was not string or symbol, but \").concat(JSON.stringify(scv, null, 2), \" is\"));\n }\n return (_scv$value = scv.value()) === null || _scv$value === void 0 ? void 0 : _scv$value.toString();\n }\n case _stellarBase.xdr.ScValType.scvTimepoint().value:\n case _stellarBase.xdr.ScValType.scvDuration().value:\n return (0, _stellarBase.scValToBigInt)(_stellarBase.xdr.ScVal.scvU64(scv.u64()));\n default:\n throw new TypeError(\"failed to convert \".concat(JSON.stringify(scv, null, 2), \" to native type from type \").concat(t.name));\n }\n }\n }, {\n key: \"scValUdtToNative\",\n value: function scValUdtToNative(scv, udt) {\n var entry = this.findEntry(udt.name().toString());\n switch (entry.switch()) {\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0():\n return this.enumToNative(scv);\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0():\n return this.structToNative(scv, entry.udtStructV0());\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0():\n return this.unionToNative(scv, entry.udtUnionV0());\n default:\n throw new Error(\"failed to parse udt \".concat(udt.name().toString(), \": \").concat(entry));\n }\n }\n }, {\n key: \"unionToNative\",\n value: function unionToNative(val, udt) {\n var _this6 = this;\n var vec = val.vec();\n if (!vec) {\n throw new Error(\"\".concat(JSON.stringify(val, null, 2), \" is not a vec\"));\n }\n if (vec.length === 0 && udt.cases.length !== 0) {\n throw new Error(\"\".concat(val, \" has length 0, but the there are at least one case in the union\"));\n }\n var name = vec[0].sym().toString();\n if (vec[0].switch().value !== _stellarBase.xdr.ScValType.scvSymbol().value) {\n throw new Error(\"{vec[0]} is not a symbol\");\n }\n var entry = udt.cases().find(findCase(name));\n if (!entry) {\n throw new Error(\"failed to find entry \".concat(name, \" in union {udt.name().toString()}\"));\n }\n var res = {\n tag: name\n };\n if (entry.switch().value === _stellarBase.xdr.ScSpecUdtUnionCaseV0Kind.scSpecUdtUnionCaseTupleV0().value) {\n var tuple = entry.tupleCase();\n var ty = tuple.type();\n var values = ty.map(function (e, i) {\n return _this6.scValToNative(vec[i + 1], e);\n });\n res.values = values;\n }\n return res;\n }\n }, {\n key: \"structToNative\",\n value: function structToNative(val, udt) {\n var _this7 = this,\n _val$map;\n var res = {};\n var fields = udt.fields();\n if (fields.some(isNumeric)) {\n var _val$vec;\n var r = (_val$vec = val.vec()) === null || _val$vec === void 0 ? void 0 : _val$vec.map(function (entry, i) {\n return _this7.scValToNative(entry, fields[i].type());\n });\n return r;\n }\n (_val$map = val.map()) === null || _val$map === void 0 || _val$map.forEach(function (entry, i) {\n var field = fields[i];\n res[field.name().toString()] = _this7.scValToNative(entry.val(), field.type());\n });\n return res;\n }\n }, {\n key: \"enumToNative\",\n value: function enumToNative(scv) {\n if (scv.switch().value !== _stellarBase.xdr.ScValType.scvU32().value) {\n throw new Error(\"Enum must have a u32 value\");\n }\n var num = scv.u32();\n return num;\n }\n }, {\n key: \"errorCases\",\n value: function errorCases() {\n return this.entries.filter(function (entry) {\n return entry.switch().value === _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtErrorEnumV0().value;\n }).flatMap(function (entry) {\n return entry.value().cases();\n });\n }\n }, {\n key: \"jsonSchema\",\n value: function jsonSchema(funcName) {\n var definitions = {};\n this.entries.forEach(function (entry) {\n switch (entry.switch().value) {\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtEnumV0().value:\n {\n var udt = entry.udtEnumV0();\n definitions[udt.name().toString()] = enumToJsonSchema(udt);\n break;\n }\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtStructV0().value:\n {\n var _udt = entry.udtStructV0();\n definitions[_udt.name().toString()] = structToJsonSchema(_udt);\n break;\n }\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtUnionV0().value:\n {\n var _udt2 = entry.udtUnionV0();\n definitions[_udt2.name().toString()] = unionToJsonSchema(_udt2);\n break;\n }\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryFunctionV0().value:\n {\n var fn = entry.functionV0();\n var fnName = fn.name().toString();\n var _functionToJsonSchema = functionToJsonSchema(fn),\n input = _functionToJsonSchema.input;\n definitions[fnName] = input;\n break;\n }\n case _stellarBase.xdr.ScSpecEntryKind.scSpecEntryUdtErrorEnumV0().value:\n {}\n }\n });\n var res = {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n definitions: _objectSpread(_objectSpread({}, PRIMITIVE_DEFINITONS), definitions)\n };\n if (funcName) {\n res.$ref = \"#/definitions/\".concat(funcName);\n }\n return res;\n }\n }], [{\n key: \"fromWasm\",\n value: (function () {\n var _fromWasm = _asyncToGenerator(_regenerator().m(function _callee(wasm) {\n var spec;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n _context.n = 1;\n return (0, _utils.specFromWasm)(wasm);\n case 1:\n spec = _context.v;\n return _context.a(2, new Spec(spec));\n }\n }, _callee);\n }));\n function fromWasm(_x) {\n return _fromWasm.apply(this, arguments);\n }\n return fromWasm;\n }())\n }]);\n}();", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Client = void 0;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nvar _spec = require(\"./spec\");\nvar _rpc = require(\"../rpc\");\nvar _assembled_transaction = require(\"./assembled_transaction\");\nvar _excluded = [\"method\"],\n _excluded2 = [\"wasmHash\", \"salt\", \"format\", \"fee\", \"timeoutInSeconds\", \"simulate\"];\nfunction _regenerator() { var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nvar CONSTRUCTOR_FUNC = \"__constructor\";\nfunction specFromWasmHash(_x, _x2) {\n return _specFromWasmHash.apply(this, arguments);\n}\nfunction _specFromWasmHash() {\n _specFromWasmHash = _asyncToGenerator(_regenerator().m(function _callee5(wasmHash, options) {\n var format,\n rpcUrl,\n allowHttp,\n serverOpts,\n server,\n wasm,\n _args5 = arguments;\n return _regenerator().w(function (_context5) {\n while (1) switch (_context5.n) {\n case 0:\n format = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : \"hex\";\n if (!(!options || !options.rpcUrl)) {\n _context5.n = 1;\n break;\n }\n throw new TypeError(\"options must contain rpcUrl\");\n case 1:\n rpcUrl = options.rpcUrl, allowHttp = options.allowHttp;\n serverOpts = {\n allowHttp: allowHttp\n };\n server = new _rpc.Server(rpcUrl, serverOpts);\n _context5.n = 2;\n return server.getContractWasmByHash(wasmHash, format);\n case 2:\n wasm = _context5.v;\n return _context5.a(2, _spec.Spec.fromWasm(wasm));\n }\n }, _callee5);\n }));\n return _specFromWasmHash.apply(this, arguments);\n}\nvar Client = exports.Client = function () {\n function Client(spec, options) {\n var _this = this;\n _classCallCheck(this, Client);\n _defineProperty(this, \"txFromJSON\", function (json) {\n var _JSON$parse = JSON.parse(json),\n method = _JSON$parse.method,\n tx = _objectWithoutProperties(_JSON$parse, _excluded);\n return _assembled_transaction.AssembledTransaction.fromJSON(_objectSpread(_objectSpread({}, _this.options), {}, {\n method: method,\n parseResultXdr: function parseResultXdr(result) {\n return _this.spec.funcResToNative(method, result);\n }\n }), tx);\n });\n _defineProperty(this, \"txFromXDR\", function (xdrBase64) {\n return _assembled_transaction.AssembledTransaction.fromXDR(_this.options, xdrBase64, _this.spec);\n });\n this.spec = spec;\n this.options = options;\n this.spec.funcs().forEach(function (xdrFn) {\n var method = xdrFn.name().toString();\n if (method === CONSTRUCTOR_FUNC) {\n return;\n }\n var assembleTransaction = function assembleTransaction(args, methodOptions) {\n return _assembled_transaction.AssembledTransaction.build(_objectSpread(_objectSpread(_objectSpread({\n method: method,\n args: args && spec.funcArgsToScVals(method, args)\n }, options), methodOptions), {}, {\n errorTypes: spec.errorCases().reduce(function (acc, curr) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, curr.value(), {\n message: curr.doc().toString()\n }));\n }, {}),\n parseResultXdr: function parseResultXdr(result) {\n return spec.funcResToNative(method, result);\n }\n }));\n };\n _this[method] = spec.getFunc(method).inputs().length === 0 ? function (opts) {\n return assembleTransaction(undefined, opts);\n } : assembleTransaction;\n });\n }\n return _createClass(Client, null, [{\n key: \"deploy\",\n value: function () {\n var _deploy = _asyncToGenerator(_regenerator().m(function _callee(args, options) {\n var wasmHash, salt, format, fee, timeoutInSeconds, simulate, clientOptions, spec, operation;\n return _regenerator().w(function (_context) {\n while (1) switch (_context.n) {\n case 0:\n wasmHash = options.wasmHash, salt = options.salt, format = options.format, fee = options.fee, timeoutInSeconds = options.timeoutInSeconds, simulate = options.simulate, clientOptions = _objectWithoutProperties(options, _excluded2);\n _context.n = 1;\n return specFromWasmHash(wasmHash, clientOptions, format);\n case 1:\n spec = _context.v;\n operation = _stellarBase.Operation.createCustomContract({\n address: new _stellarBase.Address(options.address || options.publicKey),\n wasmHash: typeof wasmHash === \"string\" ? Buffer.from(wasmHash, format !== null && format !== void 0 ? format : \"hex\") : wasmHash,\n salt: salt,\n constructorArgs: args ? spec.funcArgsToScVals(CONSTRUCTOR_FUNC, args) : []\n });\n return _context.a(2, _assembled_transaction.AssembledTransaction.buildWithOp(operation, _objectSpread(_objectSpread({\n fee: fee,\n timeoutInSeconds: timeoutInSeconds,\n simulate: simulate\n }, clientOptions), {}, {\n contractId: \"ignored\",\n method: CONSTRUCTOR_FUNC,\n parseResultXdr: function parseResultXdr(result) {\n return new Client(spec, _objectSpread(_objectSpread({}, clientOptions), {}, {\n contractId: _stellarBase.Address.fromScVal(result).toString()\n }));\n }\n })));\n }\n }, _callee);\n }));\n function deploy(_x3, _x4) {\n return _deploy.apply(this, arguments);\n }\n return deploy;\n }()\n }, {\n key: \"fromWasmHash\",\n value: (function () {\n var _fromWasmHash = _asyncToGenerator(_regenerator().m(function _callee2(wasmHash, options) {\n var format,\n rpcUrl,\n allowHttp,\n serverOpts,\n server,\n wasm,\n _args2 = arguments;\n return _regenerator().w(function (_context2) {\n while (1) switch (_context2.n) {\n case 0:\n format = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : \"hex\";\n if (!(!options || !options.rpcUrl)) {\n _context2.n = 1;\n break;\n }\n throw new TypeError(\"options must contain rpcUrl\");\n case 1:\n rpcUrl = options.rpcUrl, allowHttp = options.allowHttp;\n serverOpts = {\n allowHttp: allowHttp\n };\n server = new _rpc.Server(rpcUrl, serverOpts);\n _context2.n = 2;\n return server.getContractWasmByHash(wasmHash, format);\n case 2:\n wasm = _context2.v;\n return _context2.a(2, Client.fromWasm(wasm, options));\n }\n }, _callee2);\n }));\n function fromWasmHash(_x5, _x6) {\n return _fromWasmHash.apply(this, arguments);\n }\n return fromWasmHash;\n }())\n }, {\n key: \"fromWasm\",\n value: (function () {\n var _fromWasm = _asyncToGenerator(_regenerator().m(function _callee3(wasm, options) {\n var spec;\n return _regenerator().w(function (_context3) {\n while (1) switch (_context3.n) {\n case 0:\n _context3.n = 1;\n return _spec.Spec.fromWasm(wasm);\n case 1:\n spec = _context3.v;\n return _context3.a(2, new Client(spec, options));\n }\n }, _callee3);\n }));\n function fromWasm(_x7, _x8) {\n return _fromWasm.apply(this, arguments);\n }\n return fromWasm;\n }())\n }, {\n key: \"from\",\n value: (function () {\n var _from = _asyncToGenerator(_regenerator().m(function _callee4(options) {\n var rpcUrl, contractId, allowHttp, serverOpts, server, wasm;\n return _regenerator().w(function (_context4) {\n while (1) switch (_context4.n) {\n case 0:\n if (!(!options || !options.rpcUrl || !options.contractId)) {\n _context4.n = 1;\n break;\n }\n throw new TypeError(\"options must contain rpcUrl and contractId\");\n case 1:\n rpcUrl = options.rpcUrl, contractId = options.contractId, allowHttp = options.allowHttp;\n serverOpts = {\n allowHttp: allowHttp\n };\n server = new _rpc.Server(rpcUrl, serverOpts);\n _context4.n = 2;\n return server.getContractWasmByContractId(contractId);\n case 2:\n wasm = _context4.v;\n return _context4.a(2, Client.fromWasm(wasm, options));\n }\n }, _callee4);\n }));\n function from(_x9) {\n return _from.apply(this, arguments);\n }\n return from;\n }())\n }]);\n}();", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _assembled_transaction = require(\"./assembled_transaction\");\nObject.keys(_assembled_transaction).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _assembled_transaction[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _assembled_transaction[key];\n }\n });\n});\nvar _basic_node_signer = require(\"./basic_node_signer\");\nObject.keys(_basic_node_signer).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _basic_node_signer[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _basic_node_signer[key];\n }\n });\n});\nvar _client = require(\"./client\");\nObject.keys(_client).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _client[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _client[key];\n }\n });\n});\nvar _rust_result = require(\"./rust_result\");\nObject.keys(_rust_result).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _rust_result[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _rust_result[key];\n }\n });\n});\nvar _sent_transaction = require(\"./sent_transaction\");\nObject.keys(_sent_transaction).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _sent_transaction[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _sent_transaction[key];\n }\n });\n});\nvar _spec = require(\"./spec\");\nObject.keys(_spec).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _spec[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _spec[key];\n }\n });\n});\nvar _types = require(\"./types\");\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _types[key];\n }\n });\n});", "\"use strict\";\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _exportNames = {\n Config: true,\n Utils: true,\n StellarToml: true,\n Federation: true,\n WebAuth: true,\n Friendbot: true,\n Horizon: true,\n rpc: true,\n contract: true\n};\nObject.defineProperty(exports, \"Config\", {\n enumerable: true,\n get: function get() {\n return _config.Config;\n }\n});\nexports.StellarToml = exports.Horizon = exports.Friendbot = exports.Federation = void 0;\nObject.defineProperty(exports, \"Utils\", {\n enumerable: true,\n get: function get() {\n return _utils.Utils;\n }\n});\nexports.rpc = exports.default = exports.contract = exports.WebAuth = void 0;\nvar _errors = require(\"./errors\");\nObject.keys(_errors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _errors[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _errors[key];\n }\n });\n});\nvar _config = require(\"./config\");\nvar _utils = require(\"./utils\");\nvar _StellarToml = _interopRequireWildcard(require(\"./stellartoml\"));\nexports.StellarToml = _StellarToml;\nvar _Federation = _interopRequireWildcard(require(\"./federation\"));\nexports.Federation = _Federation;\nvar _WebAuth = _interopRequireWildcard(require(\"./webauth\"));\nexports.WebAuth = _WebAuth;\nvar _Friendbot = _interopRequireWildcard(require(\"./friendbot\"));\nexports.Friendbot = _Friendbot;\nvar _Horizon = _interopRequireWildcard(require(\"./horizon\"));\nexports.Horizon = _Horizon;\nvar _rpc = _interopRequireWildcard(require(\"./rpc\"));\nexports.rpc = _rpc;\nvar _contract = _interopRequireWildcard(require(\"./contract\"));\nexports.contract = _contract;\nvar _stellarBase = require(\"@stellar/stellar-base\");\nObject.keys(_stellarBase).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n if (key in exports && exports[key] === _stellarBase[key]) return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _stellarBase[key];\n }\n });\n});\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) \"default\" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }\nvar _default = exports.default = module.exports;\nif (typeof global.__USE_AXIOS__ === \"undefined\") {\n global.__USE_AXIOS__ = true;\n}\nif (typeof global.__USE_EVENTSOURCE__ === \"undefined\") {\n global.__USE_EVENTSOURCE__ = false;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidAddress = exports.isValidAssetCode = exports.getTokenMetadata = exports.buildRemoveTrustlineTransaction = exports.buildAddTrustlineTransaction = exports.buildSendTransaction = exports.transformTransaction = exports.BASE_INFO = exports.toStroops = exports.STELLAR_DECIMALS = void 0;\nconst stellar_sdk_1 = require(\"@stellar/stellar-sdk\");\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nexports.STELLAR_DECIMALS = 7;\nconst toStroops = value => {\n const multiplier = new bigNumber_1.BigNumber(10).pow(exports.STELLAR_DECIMALS);\n const amount = new bigNumber_1.BigNumber(value).times(multiplier);\n return amount;\n};\nexports.toStroops = toStroops;\nexports.BASE_INFO = {\n BASE_RESERVE: (0, exports.toStroops)('0.5'),\n MINIMUM_RESERVE: (0, exports.toStroops)('1')\n};\nconst isoToTimestamp = isoDate => {\n const timestamp = Date.parse(isoDate);\n if (isNaN(timestamp)) {\n throw new Error('Invalid ISO date string');\n }\n return Math.floor(timestamp / 1000);\n};\nconst convertMemo = memo => {\n switch (memo.type) {\n case 'text':\n case 'id':\n return memo.value?.toString();\n case 'hash':\n case 'return':\n return memo.value?.toString('hex');\n default:\n return undefined;\n }\n};\nconst transformTransaction = (rawTx, descriptor, tokenDetailByMint) => {\n const parsedTx = new stellar_sdk_1.Transaction(rawTx.envelope_xdr, stellar_sdk_1.Networks.PUBLIC);\n const baseTx = {\n type: 'unknown',\n txid: rawTx.hash,\n amount: '0',\n fee: rawTx.fee_charged.toString(),\n blockTime: isoToTimestamp(rawTx.created_at),\n blockHeight: rawTx.ledger_attr,\n targets: [],\n tokens: [],\n internalTransfers: [],\n feeRate: undefined,\n details: {\n vin: [],\n vout: [],\n size: 0,\n totalInput: '0',\n totalOutput: '0'\n },\n stellarSpecific: {\n memo: convertMemo(parsedTx.memo),\n feeSource: (0, stellar_sdk_1.extractBaseAddress)(rawTx.source_account)\n }\n };\n if (!rawTx.successful) {\n return {\n ...baseTx,\n type: 'failed'\n };\n }\n if (parsedTx.operations.length !== 1) {\n return baseTx;\n }\n const rawOp = parsedTx.operations[0];\n const opSource = rawOp.source || rawTx.source_account;\n const fromAddress = (0, stellar_sdk_1.extractBaseAddress)(opSource);\n let toAddress;\n let nativeAmount;\n let isTokenTransfer = false;\n let tokenInfo;\n switch (rawOp.type) {\n case 'createAccount':\n toAddress = (0, stellar_sdk_1.extractBaseAddress)(rawOp.destination);\n nativeAmount = (0, exports.toStroops)(rawOp.startingBalance).toString();\n break;\n case 'payment':\n toAddress = (0, stellar_sdk_1.extractBaseAddress)(rawOp.destination);\n if (rawOp.asset.isNative()) {\n nativeAmount = (0, exports.toStroops)(rawOp.amount).toString();\n } else {\n isTokenTransfer = true;\n tokenInfo = {\n assetCode: rawOp.asset.getCode(),\n assetIssuer: rawOp.asset.getIssuer(),\n amount: (0, exports.toStroops)(rawOp.amount).toString()\n };\n nativeAmount = '0';\n }\n break;\n case 'changeTrust':\n {\n if (rawOp.line.getAssetType() !== 'credit_alphanum4' && rawOp.line.getAssetType() !== 'credit_alphanum12') {\n return baseTx;\n }\n if (descriptor !== fromAddress) {\n return baseTx;\n }\n const line = rawOp.line;\n const assetCode = line.getCode();\n const isRemoval = new bigNumber_1.BigNumber(rawOp.limit).isZero();\n return {\n ...baseTx,\n type: 'self',\n stellarSpecific: {\n ...baseTx.stellarSpecific,\n operationType: 'changeTrust',\n changeTrust: {\n assetCode,\n isRemoval\n }\n }\n };\n }\n default:\n return baseTx;\n }\n if (!toAddress) {\n return baseTx;\n }\n const isFrom = descriptor === fromAddress;\n const isTo = descriptor === toAddress;\n if (!descriptor || !isFrom && !isTo) {\n return baseTx;\n }\n const type = isFrom ? 'sent' : 'recv';\n if (isTokenTransfer && tokenInfo) {\n const {\n assetCode,\n assetIssuer,\n amount: tokenAmount\n } = tokenInfo;\n const contract = `${assetCode}-${assetIssuer}`;\n return {\n ...baseTx,\n type,\n amount: '0',\n tokens: [{\n type,\n standard: 'STELLAR-CLASSIC',\n from: fromAddress,\n to: toAddress,\n contract,\n name: tokenDetailByMint[contract]?.name || assetCode,\n symbol: assetCode,\n decimals: exports.STELLAR_DECIMALS,\n amount: tokenAmount\n }]\n };\n }\n if (nativeAmount) {\n return {\n ...baseTx,\n type,\n amount: nativeAmount,\n targets: [{\n n: 0,\n addresses: [toAddress],\n isAddress: true,\n amount: nativeAmount\n }],\n details: {\n vin: [{\n n: 0,\n addresses: [fromAddress],\n isAddress: true,\n value: nativeAmount\n }],\n vout: [{\n n: 0,\n addresses: [toAddress],\n isAddress: true,\n value: nativeAmount\n }],\n size: 0,\n totalInput: nativeAmount,\n totalOutput: nativeAmount\n }\n };\n }\n return baseTx;\n};\nexports.transformTransaction = transformTransaction;\nconst createTransactionBuilder = ({\n descriptor,\n sequence,\n fee,\n isTestnet = false\n}) => {\n const source = new stellar_sdk_1.Account(descriptor, sequence);\n return new stellar_sdk_1.TransactionBuilder(source, {\n fee,\n networkPassphrase: isTestnet ? stellar_sdk_1.Networks.TESTNET : stellar_sdk_1.Networks.PUBLIC\n }).setTimebounds(0, 0);\n};\nconst buildTrustlineTransaction = ({\n descriptor,\n sequence,\n fee,\n asset,\n limit,\n isTestnet\n}) => {\n const txBuilder = createTransactionBuilder({\n descriptor,\n sequence,\n fee,\n isTestnet\n });\n txBuilder.addOperation(stellar_sdk_1.Operation.changeTrust({\n asset: new stellar_sdk_1.Asset(asset.code, asset.issuer),\n limit\n }));\n return txBuilder.build();\n};\nconst buildSendTransaction = ({\n descriptor,\n sequence,\n fee,\n destinationActivated,\n destination,\n amount,\n asset,\n destinationTag,\n isTestnet\n}) => {\n const txBuilder = createTransactionBuilder({\n descriptor,\n sequence,\n fee,\n isTestnet\n });\n if (destinationTag) {\n txBuilder.addMemo(stellar_sdk_1.Memo.text(destinationTag));\n }\n if (destinationActivated) {\n txBuilder.addOperation(stellar_sdk_1.Operation.payment({\n destination,\n amount,\n asset: new stellar_sdk_1.Asset(asset.code || 'XLM', asset.issuer)\n }));\n } else {\n txBuilder.addOperation(stellar_sdk_1.Operation.createAccount({\n destination,\n startingBalance: amount\n }));\n }\n return txBuilder.build();\n};\nexports.buildSendTransaction = buildSendTransaction;\nconst buildAddTrustlineTransaction = ({\n descriptor,\n sequence,\n fee,\n asset,\n isTestnet\n}) => buildTrustlineTransaction({\n descriptor,\n sequence,\n fee,\n asset,\n isTestnet\n});\nexports.buildAddTrustlineTransaction = buildAddTrustlineTransaction;\nconst buildRemoveTrustlineTransaction = ({\n descriptor,\n sequence,\n fee,\n asset,\n isTestnet\n}) => buildTrustlineTransaction({\n descriptor,\n sequence,\n fee,\n asset,\n limit: '0',\n isTestnet\n});\nexports.buildRemoveTrustlineTransaction = buildRemoveTrustlineTransaction;\nconst getTokenMetadata = async () => {\n const env = (0, env_utils_1.isCodesignBuild)() ? 'stable' : 'develop';\n const response = await fetch(`https://data.trezor.io/suite/definitions/${env}/stellar.advanced.coin.definitions.v1.json`);\n if (!response.ok) {\n throw Error(`Failed to fetch token metadata: ${response.statusText}`);\n }\n const data = await response.json();\n return data;\n};\nexports.getTokenMetadata = getTokenMetadata;\nconst isValidAssetCode = code => /^[a-zA-Z0-9]{1,12}$/.test(code);\nexports.isValidAssetCode = isValidAssetCode;\nconst isValidAddress = address => stellar_sdk_1.StrKey.isValidEd25519PublicKey(address);\nexports.isValidAddress = isValidAddress;\n//# sourceMappingURL=stellar.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Stellar;\nconst tslib_1 = require(\"tslib\");\nconst stellar_sdk_1 = require(\"@stellar/stellar-sdk\");\nconst constants_1 = require(\"@trezor/blockchain-link-types/lib/constants\");\nconst errors_1 = require(\"@trezor/blockchain-link-types/lib/constants/errors\");\nconst utils = tslib_1.__importStar(require(\"@trezor/blockchain-link-utils/lib/stellar\"));\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst baseWorker_1 = require(\"../baseWorker\");\nconst fetchLatestLedger = async api => {\n const latestLedgerInfo = await api.ledgers().order('desc').limit(1).call();\n if (latestLedgerInfo.records.length === 0) {\n throw new errors_1.CustomError('worker_invalid_horizon_response');\n }\n return latestLedgerInfo.records[0];\n};\nconst getInfo = async (request, isTestnet) => {\n const api = await request.connect();\n const horizonServerInfo = await api.root();\n const {\n sequence: blockHeight,\n hash: blockHash,\n base_reserve_in_stroops: baseReserveInStroops\n } = await fetchLatestLedger(api);\n utils.BASE_INFO.BASE_RESERVE = new utils_1.BigNumber(baseReserveInStroops);\n utils.BASE_INFO.MINIMUM_RESERVE = utils.BASE_INFO.BASE_RESERVE.times(2);\n const serverInfo = {\n url: api.serverURL.toString(),\n name: 'Stellar',\n shortcut: isTestnet ? 'txlm' : 'xlm',\n network: isTestnet ? 'txlm' : 'xlm',\n testnet: isTestnet,\n version: horizonServerInfo.horizon_version,\n decimals: utils.STELLAR_DECIMALS,\n blockHeight,\n blockHash\n };\n return {\n type: constants_1.RESPONSES.GET_INFO,\n payload: {\n ...serverInfo\n }\n };\n};\nconst getAccountInfo = async request => {\n const {\n payload\n } = request;\n const account = {\n descriptor: payload.descriptor,\n balance: '0',\n availableBalance: '0',\n empty: true,\n history: {\n total: -1,\n unconfirmed: 0,\n transactions: undefined\n },\n misc: {\n stellarSequence: '0',\n reserve: utils.BASE_INFO.MINIMUM_RESERVE.toString()\n }\n };\n const api = await request.connect();\n let info;\n try {\n info = await api.accounts().accountId(payload.descriptor).call();\n } catch {\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n }\n const reserve = utils.BASE_INFO.MINIMUM_RESERVE.plus(utils.BASE_INFO.BASE_RESERVE.times(info.subentry_count));\n account.misc = {\n stellarSequence: info.sequence,\n reserve: reserve.toString()\n };\n const nativeTokenBalance = info.balances.find(balance => balance.asset_type === 'native');\n if (!nativeTokenBalance) {\n throw new errors_1.CustomError('stellar_missing_native_balance');\n }\n const sellingLiabilities = utils.toStroops(nativeTokenBalance.selling_liabilities);\n account.balance = utils.toStroops(nativeTokenBalance.balance).toString();\n account.availableBalance = new utils_1.BigNumber(account.balance).minus(reserve).minus(sellingLiabilities).minus(utils.BASE_INFO.BASE_RESERVE.times(info.num_sponsoring)).plus(utils.BASE_INFO.BASE_RESERVE.times(info.num_sponsored)).toString();\n const tokenMetadata = await request.getTokenMetadata();\n account.tokens = info.balances.filter(balanceInfo => balanceInfo.asset_type === 'credit_alphanum4' || balanceInfo.asset_type === 'credit_alphanum12').map(balanceInfo => {\n const contract = `${balanceInfo.asset_code}-${balanceInfo.asset_issuer}`;\n const balance = utils.toStroops(balanceInfo.balance);\n return {\n standard: 'STELLAR-CLASSIC',\n contract,\n balance: balance.toString(),\n name: tokenMetadata[contract]?.name || balanceInfo.asset_code,\n symbol: tokenMetadata[contract]?.symbol || balanceInfo.asset_code,\n decimals: utils.STELLAR_DECIMALS\n };\n });\n account.empty = false;\n if (payload.details !== 'txs') {\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: account\n };\n }\n const requestBuilder = await api.transactions().forAccount(payload.descriptor).includeFailed(true).limit(payload.pageSize || 20).order('desc');\n if (payload.page && payload.page !== 1 && payload.pageCursor) {\n requestBuilder.cursor(payload.pageCursor);\n }\n const transactions = await requestBuilder.call();\n const cursor = transactions.records[transactions.records.length - 1]?.paging_token;\n account.history.transactions = transactions.records.map(record => utils.transformTransaction(record, payload.descriptor, tokenMetadata));\n return {\n type: constants_1.RESPONSES.GET_ACCOUNT_INFO,\n payload: {\n ...account,\n stellarCursor: cursor\n }\n };\n};\nconst estimateFee = async request => {\n const api = await request.connect();\n const feeStats = await api.feeStats();\n const stroops = feeStats.fee_charged.p70;\n const payload = request.payload && Array.isArray(request.payload.blocks) ? request.payload.blocks.map(() => ({\n feePerUnit: stroops\n })) : [{\n feePerUnit: stroops\n }];\n return {\n type: constants_1.RESPONSES.ESTIMATE_FEE,\n payload\n };\n};\nconst BLOCK_SUBSCRIBE_INTERVAL_MS = 1000 * 15;\nconst subscribeBlock = async ({\n state,\n connect,\n post\n}) => {\n if (state.getSubscription('block')) return {\n subscribed: true\n };\n const api = await connect();\n const fetchBlock = async () => {\n const {\n sequence: blockHeight,\n hash: blockHash\n } = await fetchLatestLedger(api);\n post({\n id: -1,\n type: constants_1.RESPONSES.NOTIFICATION,\n payload: {\n type: 'block',\n payload: {\n blockHeight,\n blockHash\n }\n }\n });\n };\n fetchBlock();\n const interval = setInterval(fetchBlock, BLOCK_SUBSCRIBE_INTERVAL_MS);\n state.addSubscription('block', interval);\n return {\n subscribed: true\n };\n};\nconst unsubscribeBlock = ({\n state\n}) => {\n if (!state.getSubscription('block')) return {\n subscribed: false\n };\n const interval = state.getSubscription('block');\n clearInterval(interval);\n state.removeSubscription('block');\n return {\n subscribed: false\n };\n};\nconst subscribe = async request => {\n let response;\n switch (request.payload.type) {\n case 'block':\n response = await subscribeBlock(request);\n break;\n case 'accounts':\n case 'addresses':\n response = {\n subscribed: false\n };\n break;\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n return {\n type: constants_1.RESPONSES.SUBSCRIBE,\n payload: response\n };\n};\nconst unsubscribe = request => {\n let response;\n switch (request.payload.type) {\n case 'block':\n response = unsubscribeBlock(request);\n break;\n case 'accounts':\n case 'addresses':\n response = {\n subscribed: false\n };\n break;\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n return {\n type: constants_1.RESPONSES.UNSUBSCRIBE,\n payload: response\n };\n};\nconst pushTransaction = async ({\n connect,\n payload\n}) => {\n const api = await connect();\n const base64EncodedTx = Buffer.from(payload.hex, 'hex').toString('base64');\n const parsedTx = new stellar_sdk_1.Transaction(base64EncodedTx, stellar_sdk_1.Networks.PUBLIC);\n try {\n const resp = await api.submitTransaction(parsedTx, {\n skipMemoRequiredCheck: true\n });\n return {\n type: constants_1.RESPONSES.PUSH_TRANSACTION,\n payload: resp.hash\n };\n } catch (e) {\n const txResultCode = e?.response?.data?.extras?.result_codes?.transaction || 'unknown';\n const opResultCode = e?.response?.data?.extras?.result_codes?.operations?.[0] || 'unknown';\n throw new Error(`transaction result code: ${txResultCode}, operation result code: ${opResultCode}`);\n }\n};\nconst onRequest = (request, isTestnet) => {\n switch (request.type) {\n case constants_1.MESSAGES.GET_INFO:\n return getInfo(request, isTestnet);\n case constants_1.MESSAGES.GET_ACCOUNT_INFO:\n return getAccountInfo(request);\n case constants_1.MESSAGES.ESTIMATE_FEE:\n return estimateFee(request);\n case constants_1.MESSAGES.PUSH_TRANSACTION:\n return pushTransaction(request);\n case constants_1.MESSAGES.SUBSCRIBE:\n return subscribe(request);\n case constants_1.MESSAGES.UNSUBSCRIBE:\n return unsubscribe(request);\n default:\n throw new errors_1.CustomError('worker_unknown_request', `+${request.type}`);\n }\n};\nclass StellarWorker extends baseWorker_1.BaseWorker {\n lazyTokens = (0, utils_1.createLazy)(() => utils.getTokenMetadata());\n isTestnet = false;\n isConnected(api) {\n return !!api;\n }\n async tryConnect(url) {\n const api = new stellar_sdk_1.Horizon.Server(url, {\n headers: {\n ...((0, env_utils_1.isDesktop)() || (0, env_utils_1.isNative)() ? {\n 'User-Agent': `Trezor Suite ${(0, env_utils_1.getSuiteVersion)()}`\n } : {})\n }\n });\n if ((await api.root()).network_passphrase == stellar_sdk_1.Networks.TESTNET) {\n this.isTestnet = true;\n }\n return api;\n }\n disconnect() {\n if (!this.api) {\n return;\n }\n unsubscribeBlock({\n state: this.state,\n connect: () => this.connect(),\n post: data => this.post(data),\n getTokenMetadata: this.lazyTokens.getOrInit\n });\n this.api = undefined;\n }\n async messageHandler(event) {\n try {\n if (await super.messageHandler(event)) return true;\n const request = {\n ...event.data,\n connect: () => this.connect(),\n post: data => this.post(data),\n state: this.state,\n getTokenMetadata: this.lazyTokens.getOrInit\n };\n const response = await onRequest(request, this.isTestnet);\n this.post({\n id: event.data.id,\n ...response\n });\n } catch (error) {\n this.errorResponse(event.data.id, error);\n }\n }\n}\nfunction Stellar() {\n return new StellarWorker();\n}\nif (baseWorker_1.CONTEXT === 'worker') {\n const module = new StellarWorker();\n onmessage = module.messageHandler.bind(module);\n}\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nvar __createBinding = this && this.__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 = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\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});\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = this && this.__importStar || function () {\n var ownKeys = function (o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n}();\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StellarWorker = exports.SolanaWorker = exports.ElectrumWorker = exports.BlockfrostWorker = exports.RippleWorker = exports.BlockbookWorker = void 0;\nconst BlockbookWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/blockbook\"))).then(w => w.default());\nexports.BlockbookWorker = BlockbookWorker;\nconst RippleWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/ripple\"))).then(w => w.default());\nexports.RippleWorker = RippleWorker;\nconst BlockfrostWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/blockfrost\"))).then(w => w.default());\nexports.BlockfrostWorker = BlockfrostWorker;\nconst ElectrumWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/electrum\"))).then(w => w.default());\nexports.ElectrumWorker = ElectrumWorker;\nconst SolanaWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/solana\"))).then(w => w.default());\nexports.SolanaWorker = SolanaWorker;\nconst StellarWorker = () => Promise.resolve().then(() => __importStar(require(\"@trezor/blockchain-link/lib/workers/stellar\"))).then(w => w.default());\nexports.StellarWorker = StellarWorker;\n//# sourceMappingURL=workers.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Blockchain = void 0;\nconst tslib_1 = require(\"tslib\");\nconst blockchain_link_1 = tslib_1.__importDefault(require(\"@trezor/blockchain-link\"));\nconst constants_1 = require(\"../constants\");\nconst events_1 = require(\"../events\");\nconst workers_1 = require(\"../workers/workers\");\nconst getWorker = type => {\n switch (type) {\n case 'blockbook':\n return workers_1.BlockbookWorker;\n case 'ripple':\n return workers_1.RippleWorker;\n case 'blockfrost':\n return workers_1.BlockfrostWorker;\n case 'electrum':\n return workers_1.ElectrumWorker;\n case 'solana':\n return workers_1.SolanaWorker;\n case 'stellar':\n return workers_1.StellarWorker;\n default:\n return null;\n }\n};\nconst getNormalizedTrezorShortcut = shortcut => {\n if (shortcut === 'tXRP') {\n return 'XRP';\n }\n return shortcut;\n};\nclass Blockchain {\n link;\n serverInfo;\n identity;\n coinInfo;\n postMessage;\n onDisconnected;\n initPromise;\n constructor(options) {\n this.identity = options.identity;\n this.coinInfo = options.coinInfo;\n this.postMessage = options.postMessage;\n this.onDisconnected = options.onDisconnected;\n const {\n blockchainLink\n } = options.coinInfo;\n if (!blockchainLink) {\n throw constants_1.ERRORS.TypedError('Backend_NotSupported');\n }\n const worker = getWorker(blockchainLink.type);\n if (!worker) {\n throw constants_1.ERRORS.TypedError('Backend_WorkerMissing', `BlockchainLink worker not found ${blockchainLink.type}`);\n }\n const server = blockchainLink.url;\n this.link = new blockchain_link_1.default({\n name: this.coinInfo.shortcut,\n worker,\n server,\n debug: options.debug,\n proxy: options.proxy,\n ...(this.coinInfo.type === 'ethereum' ? {\n throttleBlockEvent: 10 * 1000\n } : {}),\n ...(['ripple', 'stellar'].includes(blockchainLink.type) ? {\n throttleBlockEvent: 60 * 1000\n } : {})\n });\n }\n onBackendDisconnected(pendingSubscriptions = false) {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {\n coin: this.coinInfo,\n identity: this.identity,\n error: constants_1.ERRORS.ERROR_CODES.Backend_Disconnected,\n code: 'Backend_Disconnected'\n }));\n this.onDisconnected?.(!!pendingSubscriptions);\n }\n async initLink() {\n let info;\n try {\n await this.link.connect();\n info = await this.link.getInfo();\n } catch (error) {\n throw constants_1.ERRORS.TypedError('Backend_Error', error.message);\n }\n this.serverInfo = info;\n const trezorNetworkShortcut = getNormalizedTrezorShortcut(this.coinInfo.shortcut);\n const backendNetworkShortcut = this.serverInfo.network;\n if (backendNetworkShortcut.toLowerCase() !== trezorNetworkShortcut.toLowerCase()) {\n throw constants_1.ERRORS.TypedError('Backend_Invalid');\n }\n this.link.on('disconnected', () => {\n const pendingSubscriptions = this.link.listenerCount('block') || this.link.listenerCount('notification') || this.link.listenerCount('fiatRates');\n this.link.dispose();\n this.onBackendDisconnected(!!pendingSubscriptions);\n });\n return info;\n }\n init() {\n if (!this.initPromise) {\n this.initPromise = this.initLink().then(info => {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.CONNECT, {\n coin: this.coinInfo,\n identity: this.identity,\n ...info\n }));\n this.initPromise = Promise.resolve(info);\n return info;\n }).catch(error => {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.ERROR, {\n coin: this.coinInfo,\n identity: this.identity,\n error: error.message,\n code: error.code\n }));\n this.initPromise = Promise.reject(error);\n this.link.dispose();\n return this.initPromise;\n });\n }\n return this.initPromise;\n }\n getTransactions(txs) {\n return Promise.all(txs.map(id => this.link.getTransaction(id)));\n }\n getTransactionHexes(txids) {\n return Promise.all(txids.map(id => this.link.getTransactionHex(id)));\n }\n getCurrentFiatRates(params) {\n return this.link.getCurrentFiatRates(params);\n }\n getFiatRatesForTimestamps(params) {\n return this.link.getFiatRatesForTimestamps(params);\n }\n getAccountBalanceHistory(params) {\n return this.link.getAccountBalanceHistory(params);\n }\n getNetworkInfo() {\n return this.link.getInfo();\n }\n getAccountInfo(request) {\n return this.link.getAccountInfo(request);\n }\n getAccountUtxo(descriptor) {\n return this.link.getAccountUtxo(descriptor);\n }\n rpcCall(params) {\n return this.link.rpcCall(params);\n }\n estimateFee(request) {\n return this.link.estimateFee(request);\n }\n subscribeBlocks() {\n if (this.link.listenerCount('block') === 0) {\n this.link.on('block', block => {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.BLOCK, {\n coin: this.coinInfo,\n ...block\n }));\n });\n }\n return this.link.subscribe({\n type: 'block'\n });\n }\n subscribeAccounts(accounts) {\n if (this.link.listenerCount('notification') === 0) {\n this.link.on('notification', notification => {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.NOTIFICATION, {\n coin: this.coinInfo,\n notification\n }));\n });\n }\n return this.link.subscribe({\n type: 'accounts',\n accounts\n });\n }\n subscribeFiatRates(_currency) {\n if (this.link.listenerCount('fiatRates') === 0) {\n this.link.on('fiatRates', ({\n rates\n }) => {\n this.postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.FIAT_RATES_UPDATE, {\n coin: this.coinInfo,\n rates\n }));\n });\n }\n return this.link.subscribe({\n type: 'fiatRates'\n });\n }\n unsubscribeBlocks() {\n this.link.removeAllListeners('block');\n return this.link.unsubscribe({\n type: 'block'\n });\n }\n unsubscribeAccounts(accounts) {\n return this.link.unsubscribe({\n type: 'accounts',\n accounts\n });\n }\n unsubscribeFiatRates() {\n this.link.removeAllListeners('fiatRates');\n return this.link.unsubscribe({\n type: 'fiatRates'\n });\n }\n async unsubscribeAll() {\n this.link.removeAllListeners('notification');\n await this.unsubscribeFiatRates();\n return this.unsubscribeBlocks();\n }\n pushTransaction(tx) {\n const data = typeof tx === 'string' ? {\n hex: tx\n } : tx;\n return this.link.pushTransaction(data);\n }\n disconnect() {\n this.link.removeAllListeners();\n this.link.disconnect().then(() => this.link.dispose());\n this.onBackendDisconnected();\n }\n}\nexports.Blockchain = Blockchain;\n//# sourceMappingURL=Blockchain.js.map", "{\n \"eth\": [\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://eth.trezor.io\"]\n },\n \"chain\": \"eth\",\n \"chain_id\": 1,\n \"blocktime_seconds\": 12,\n \"coingecko_id\": \"ethereum\",\n \"is_testnet\": false,\n \"label\": \"ETH\",\n \"name\": \"Ethereum\",\n \"shortcut\": \"ETH\",\n \"slip44\": 60,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://op.trezor.io\"]\n },\n \"chain\": \"op\",\n \"chain_id\": 10,\n \"blocktime_seconds\": 2,\n \"coingecko_id\": \"optimistic-ethereum\",\n \"is_testnet\": false,\n \"label\": \"ETH\",\n \"name\": \"Optimism\",\n \"shortcut\": \"OP\",\n \"slip44\": 614,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://avax.trezor.io\"]\n },\n \"chain\": \"avax\",\n \"chain_id\": 43114,\n \"blocktime_seconds\": 2,\n \"coingecko_id\": \"avalanche\",\n \"is_testnet\": false,\n \"label\": \"AVAX\",\n \"name\": \"Avalanche C-Chain\",\n \"shortcut\": \"AVAX\",\n \"slip44\": 9000,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://bsc.trezor.io\"]\n },\n \"chain\": \"bsc\",\n \"chain_id\": 56,\n \"blocktime_seconds\": 0.75,\n \"coingecko_id\": \"binance-smart-chain\",\n \"is_testnet\": false,\n \"label\": \"BNB\",\n \"name\": \"BNB Smart Chain\",\n \"shortcut\": \"BSC\",\n \"slip44\": 714,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://etc.trezor.io\"]\n },\n \"chain\": \"etc\",\n \"chain_id\": 61,\n \"blocktime_seconds\": 14,\n \"coingecko_id\": \"ethereum-classic\",\n \"is_testnet\": false,\n \"label\": \"ETC\",\n \"name\": \"Ethereum Classic\",\n \"shortcut\": \"ETC\",\n \"slip44\": 61,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://pol.trezor.io\"]\n },\n \"chain\": \"pol\",\n \"chain_id\": 137,\n \"blocktime_seconds\": 2,\n \"coingecko_id\": \"polygon-pos\",\n \"is_testnet\": false,\n \"label\": \"POL\",\n \"name\": \"Polygon\",\n \"shortcut\": \"POL\",\n \"slip44\": 966,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://base.trezor.io\"]\n },\n \"chain\": \"base\",\n \"chain_id\": 8453,\n \"blocktime_seconds\": 2,\n \"coingecko_id\": \"base\",\n \"is_testnet\": false,\n \"label\": \"ETH\",\n \"name\": \"Base\",\n \"shortcut\": \"BASE\",\n \"slip44\": 8453,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://hoodi.trezor.io\"]\n },\n \"chain\": \"hod\",\n \"chain_id\": 560048,\n \"blocktime_seconds\": 12,\n \"is_testnet\": true,\n \"label\": \"tHOD\",\n \"name\": \"Hoodi\",\n \"shortcut\": \"tHOD\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.11.3\",\n \"T2B1\": \"2.6.4\",\n \"T2T1\": \"2.5.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://arb.trezor.io\"]\n },\n \"chain\": \"arb\",\n \"chain_id\": 42161,\n \"blocktime_seconds\": 0.25,\n \"coingecko_id\": \"arbitrum-one\",\n \"is_testnet\": false,\n \"label\": \"ETH\",\n \"name\": \"Arbitrum One\",\n \"shortcut\": \"ARB\",\n \"slip44\": 9001,\n \"support\": {\n \"T1B1\": \"1.9.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://sepolia.trezor.io\"]\n },\n \"chain\": \"sep\",\n \"chain_id\": 11155111,\n \"blocktime_seconds\": 12,\n \"is_testnet\": true,\n \"label\": \"tSEP\",\n \"name\": \"Sepolia\",\n \"shortcut\": \"tSEP\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.11.3\",\n \"T2B1\": \"2.6.4\",\n \"T2T1\": \"2.5.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n }\n ]\n}\n", "{\n \"bitcoin\": [\n {\n \"address_type\": 0,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": \"bc\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://btc.trezor.io\"]\n },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Bitcoin\",\n \"coin_name\": \"Bitcoin\",\n \"coin_shortcut\": \"BTC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 70, \"High\": 200, \"Low\": 10, \"Normal\": 140 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 2000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100,\n \"name\": \"Bitcoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"BTC\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 0,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 44728019,\n \"xpub_magic_multisig_segwit_p2sh\": 43365439,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": \"bcrt\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Regtest\",\n \"coin_name\": \"Regtest\",\n \"coin_shortcut\": \"REGTEST\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Regtest\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"REGTEST\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.8.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 39277699,\n \"xpub_magic_multisig_segwit_p2sh\": 37915119,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": \"tb\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://tbtc4.trezor.io\"] },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Testnet\",\n \"coin_name\": \"Testnet\",\n \"coin_shortcut\": \"TEST\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000000da84f2bafbbc53dee25a72ae507ff4914b867c565be350b0da8bf043\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"TEST\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 39277699,\n \"xpub_magic_multisig_segwit_p2sh\": 37915119,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 53,\n \"address_type_p2sh\": 55,\n \"bech32_prefix\": \"acm\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Actinium\",\n \"coin_name\": \"Actinium\",\n \"coin_shortcut\": \"ACM\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"28d77872e23714562f49a1be792c276623c1bbe3fdcf21b6035cfde78b00b824\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 320000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Actinium\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"ACM\",\n \"signed_message_header\": \"Actinium Signed Message:\\n\",\n \"slip44\": 228,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.10\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 55,\n \"address_type_p2sh\": 16,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Axe\",\n \"coin_name\": \"Axe\",\n \"coin_shortcut\": \"AXE\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 5460,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000c33631ca6f2f61368991ce2dc03306b5bb50bf7cede5cfbba6db38e52e6\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 21000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Axe\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"AXE\",\n \"signed_message_header\": \"DarkCoin Signed Message:\\n\",\n \"slip44\": 4242,\n \"support\": {\n \"T1B1\": \"1.7.3\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.11\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 50221816,\n \"xpub_magic\": 50221772,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 0,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": null,\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://bch.trezor.io\"]\n },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": \"bitcoincash\",\n \"coin_label\": \"Bitcoin Cash\",\n \"coin_name\": \"Bcash\",\n \"coin_shortcut\": \"BCH\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": true,\n \"fork_id\": 0,\n \"hash_genesis_block\": \"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 14000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcoin Cash\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"BCH\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 145,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": \"bchtest\",\n \"coin_label\": \"Bitcoin Cash Testnet\",\n \"coin_name\": \"Bcash Testnet\",\n \"coin_shortcut\": \"TBCH\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": true,\n \"fork_id\": 0,\n \"hash_genesis_block\": \"000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcoin Cash Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"TBCH\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 38,\n \"address_type_p2sh\": 23,\n \"bech32_prefix\": \"btg\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\n \"https://btg1.trezor.io\",\n \"https://btg2.trezor.io\",\n \"https://btg3.trezor.io\",\n \"https://btg4.trezor.io\",\n \"https://btg5.trezor.io\"\n ]\n },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Bitcoin Gold\",\n \"coin_name\": \"Bgold\",\n \"coin_shortcut\": \"BTG\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 30 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": true,\n \"fork_id\": 79,\n \"hash_genesis_block\": \"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 380000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcoin Gold\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"BTG\",\n \"signed_message_header\": \"Bitcoin Gold Signed Message:\\n\",\n \"slip44\": 156,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": \"tbtg\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Bitcoin Gold Testnet\",\n \"coin_name\": \"Bgold Testnet\",\n \"coin_shortcut\": \"TBTG\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 70, \"High\": 200, \"Low\": 10, \"Normal\": 140 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": true,\n \"fork_id\": 79,\n \"hash_genesis_block\": \"00000000e0781ebe24b91eedc293adfea2f557b53ec379e78959de3853e6f9f6\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 500000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcoin Gold Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"TBTG\",\n \"signed_message_header\": \"Bitcoin Gold Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.8\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 4901,\n \"address_type_p2sh\": 5039,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Bitcoin Private\",\n \"coin_name\": \"Bprivate\",\n \"coin_shortcut\": \"BTCP\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": 42,\n \"hash_genesis_block\": \"0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602\",\n \"is_testnet\": false,\n \"max_address_length\": 95,\n \"maxfee_kb\": 32000000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcoin Private\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"BTCP\",\n \"signed_message_header\": \"BitcoinPrivate Signed Message:\\n\",\n \"slip44\": 183,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 3,\n \"address_type_p2sh\": 125,\n \"bech32_prefix\": \"btx\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Bitcore\",\n \"coin_name\": \"Bitcore\",\n \"coin_shortcut\": \"BTX\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Low\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 14000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Bitcore\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"BTX\",\n \"signed_message_header\": \"BitCore Signed Message:\\n\",\n \"slip44\": 160,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 28,\n \"address_type_p2sh\": 30,\n \"bech32_prefix\": \"cpu\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://blockbook.cpuchain.org\"] },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"CPUchain\",\n \"coin_name\": \"CPUchain\",\n \"coin_shortcut\": \"CPU\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 20 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000024d8766043ea0e1c9ad42e7ea4b5fdb459887bd80b8f9756f3d87e128f12\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 8700000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"CPUchain\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"CPU\",\n \"signed_message_header\": \"CPUchain Signed Message:\\n\",\n \"slip44\": 363,\n \"support\": {\n \"T1B1\": \"1.8.3\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 95495,\n \"address_type_p2sh\": 95473,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Crown\",\n \"coin_name\": \"Crown\",\n \"coin_shortcut\": \"CRW\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da\",\n \"is_testnet\": false,\n \"max_address_length\": 40,\n \"maxfee_kb\": 52000000000,\n \"min_address_length\": 36,\n \"minfee_kb\": 1000,\n \"name\": \"Crown\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"CRW\",\n \"signed_message_header\": \"Crown Signed Message:\\n\",\n \"slip44\": 72,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 76,\n \"address_type_p2sh\": 16,\n \"bech32_prefix\": null,\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\n \"https://dash1.trezor.io\",\n \"https://dash2.trezor.io\",\n \"https://dash3.trezor.io\",\n \"https://dash4.trezor.io\",\n \"https://dash5.trezor.io\"\n ]\n },\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Dash\",\n \"coin_name\": \"Dash\",\n \"coin_shortcut\": \"DASH\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 5460,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 45000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Dash\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"DASH\",\n \"signed_message_header\": \"DarkCoin Signed Message:\\n\",\n \"slip44\": 5,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.5\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 50221816,\n \"xpub_magic\": 50221772,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 140,\n \"address_type_p2sh\": 19,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Dash Testnet\",\n \"coin_name\": \"Dash Testnet\",\n \"coin_shortcut\": \"tDASH\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 5460,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 100000,\n \"min_address_length\": 27,\n \"minfee_kb\": 10000,\n \"name\": \"Dash Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"tDASH\",\n \"signed_message_header\": \"DarkCoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.8\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 1855,\n \"address_type_p2sh\": 1818,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 300,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Decred\",\n \"coin_name\": \"Decred\",\n \"coin_shortcut\": \"DCR\",\n \"curve_name\": \"secp256k1_decred\",\n \"decimals\": 8,\n \"decred\": true,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"298e5cc3d985bfe7f81dc135f360abe089edd4396b86d2de66b0cef42b21d980\",\n \"is_testnet\": false,\n \"max_address_length\": 35,\n \"maxfee_kb\": 220000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 10000,\n \"name\": \"Decred\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"DCR\",\n \"signed_message_header\": \"Decred Signed Message:\\n\",\n \"slip44\": 42,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.8\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 50177256,\n \"xpub_magic\": 50178342,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 3873,\n \"address_type_p2sh\": 3836,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 120,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Decred Testnet\",\n \"coin_name\": \"Decred Testnet\",\n \"coin_shortcut\": \"TDCR\",\n \"curve_name\": \"secp256k1_decred\",\n \"decimals\": 8,\n \"decred\": true,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"a649dce53918caf422e9c711c858837e08d626ecfcd198969b24f7b634a49bac\",\n \"is_testnet\": true,\n \"max_address_length\": 35,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 1000,\n \"name\": \"Decred Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"TDCR\",\n \"signed_message_header\": \"Decred Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.8\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615959,\n \"xpub_magic\": 70617041,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 30,\n \"address_type_p2sh\": 63,\n \"bech32_prefix\": \"dgb\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://dgb1.trezor.io\", \"https://dgb2.trezor.io\"]\n },\n \"blocktime_seconds\": 15,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"DigiByte\",\n \"coin_name\": \"DigiByte\",\n \"coin_shortcut\": \"DGB\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 30 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 130000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"DigiByte\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"DGB\",\n \"signed_message_header\": \"DigiByte Signed Message:\\n\",\n \"slip44\": 20,\n \"support\": {\n \"T1B1\": \"1.6.3\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 30,\n \"address_type_p2sh\": 22,\n \"bech32_prefix\": null,\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://doge.trezor.io\"]\n },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Dogecoin\",\n \"coin_name\": \"Dogecoin\",\n \"coin_shortcut\": \"DOGE\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 1000000,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 1200000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Dogecoin\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"DOGE\",\n \"signed_message_header\": \"Dogecoin Signed Message:\\n\",\n \"slip44\": 3,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 49988504,\n \"xpub_magic\": 49990397,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 235,\n \"address_type_p2sh\": 75,\n \"bech32_prefix\": \"ert\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Elements\",\n \"coin_name\": \"Elements\",\n \"coin_shortcut\": \"ELEMENTS\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"209577bda6bf4b5804bd46f8621580dd6d4e8bfa2d190e1c50e932492baca07d\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Elements\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"ELEMENTS\",\n \"signed_message_header\": \"Bitcoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.8.3\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 14,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": \"fc\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Feathercoin\",\n \"coin_name\": \"Feathercoin\",\n \"coin_shortcut\": \"FTC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 54600,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 390000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Feathercoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"FTC\",\n \"signed_message_header\": \"Feathercoin Signed Message:\\n\",\n \"slip44\": 8,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76077806,\n \"xpub_magic\": 76069926,\n \"xpub_magic_multisig_segwit_native\": 76069926,\n \"xpub_magic_multisig_segwit_p2sh\": 76069926,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 82,\n \"address_type_p2sh\": 7,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Firo\",\n \"coin_name\": \"Firo\",\n \"coin_shortcut\": \"FIRO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 10, \"High\": 200, \"Low\": 1, \"Normal\": 100 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 640000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 0,\n \"name\": \"Firo\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"FIRO\",\n \"signed_message_header\": \"Zcoin Signed Message:\\n\",\n \"slip44\": 136,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 65,\n \"address_type_p2sh\": 178,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Firo Testnet\",\n \"coin_name\": \"Firo Testnet\",\n \"coin_shortcut\": \"tFIRO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 10, \"High\": 200, \"Low\": 1, \"Normal\": 100 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642\",\n \"is_testnet\": true,\n \"max_address_length\": 35,\n \"maxfee_kb\": 1000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 0,\n \"name\": \"Firo Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"tFIRO\",\n \"signed_message_header\": \"Zcoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 35,\n \"address_type_p2sh\": 94,\n \"bech32_prefix\": \"flo\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 40,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Flo\",\n \"coin_name\": \"Florincoin\",\n \"coin_shortcut\": \"FLO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 78000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Flo\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"FLO\",\n \"signed_message_header\": \"Florincoin Signed Message:\\n\",\n \"slip44\": 216,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.11\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 15264107,\n \"xpub_magic\": 1526049,\n \"xpub_magic_multisig_segwit_native\": 1526049,\n \"xpub_magic_multisig_segwit_p2sh\": 1526049,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 28471030\n },\n {\n \"address_type\": 36,\n \"address_type_p2sh\": 16,\n \"bech32_prefix\": \"fc\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://explorer.fujicoin.org\"] },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Fujicoin\",\n \"coin_name\": \"Fujicoin\",\n \"coin_shortcut\": \"FJC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 20000, \"High\": 100000, \"Low\": 10000, \"Normal\": 50000 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 35000000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 10000000,\n \"name\": \"Fujicoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"FJC\",\n \"signed_message_header\": \"FujiCoin Signed Message:\\n\",\n \"slip44\": 75,\n \"support\": {\n \"T1B1\": \"1.6.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 44728019,\n \"xpub_magic_multisig_segwit_p2sh\": 43365439,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 36,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": \"grs\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://blockbook.groestlcoin.org\"]\n },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Groestlcoin\",\n \"coin_name\": \"Groestlcoin\",\n \"coin_shortcut\": \"GRS\",\n \"curve_name\": \"secp256k1_groestl\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 16000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Groestlcoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"GRS\",\n \"signed_message_header\": \"GroestlCoin Signed Message:\\n\",\n \"slip44\": 17,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": \"tgrs\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://blockbook-test.groestlcoin.org\"]\n },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Groestlcoin Testnet\",\n \"coin_name\": \"Groestlcoin Testnet\",\n \"coin_shortcut\": \"tGRS\",\n \"curve_name\": \"secp256k1_groestl\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000000ffbb50fc9898cdd36ec163e6ba23230164c0052a28876255b7dcf2cd36\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 100000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Groestlcoin Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"tGRS\",\n \"signed_message_header\": \"GroestlCoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": true,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 60,\n \"address_type_p2sh\": 85,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Komodo\",\n \"coin_name\": \"Komodo\",\n \"coin_shortcut\": \"KMD\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 4800000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Komodo\",\n \"overwintered\": true,\n \"segwit\": false,\n \"shortcut\": \"KMD\",\n \"signed_message_header\": \"Komodo Signed Message:\\n\",\n \"slip44\": 141,\n \"support\": {\n \"T1B1\": \"1.8.0\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.11\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 6198,\n \"address_type_p2sh\": 6203,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Koto\",\n \"coin_name\": \"Koto\",\n \"coin_shortcut\": \"KOTO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"6d424c350729ae633275d51dc3496e16cd1b1d195c164da00f39c499a2e9959e\",\n \"is_testnet\": false,\n \"max_address_length\": 95,\n \"maxfee_kb\": 1000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 1000,\n \"name\": \"Koto\",\n \"overwintered\": true,\n \"segwit\": false,\n \"shortcut\": \"KOTO\",\n \"signed_message_header\": \"Koto Signed Message:\\n\",\n \"slip44\": 510,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 48,\n \"address_type_p2sh\": 50,\n \"bech32_prefix\": \"ltc\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://ltc.trezor.io\"]\n },\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Litecoin\",\n \"coin_name\": \"Litecoin\",\n \"coin_shortcut\": \"LTC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 67000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Litecoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"LTC\",\n \"signed_message_header\": \"Litecoin Signed Message:\\n\",\n \"slip44\": 2,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 27106558,\n \"xpub_magic\": 27108450,\n \"xpub_magic_multisig_segwit_native\": 27108450,\n \"xpub_magic_multisig_segwit_p2sh\": 27108450,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 28471030\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 58,\n \"bech32_prefix\": \"tltc\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Litecoin Testnet\",\n \"coin_name\": \"Litecoin Testnet\",\n \"coin_shortcut\": \"tLTC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 54600,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 40000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Litecoin Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"tLTC\",\n \"signed_message_header\": \"Litecoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 50,\n \"address_type_p2sh\": 55,\n \"bech32_prefix\": \"mona\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://blockbook.electrum-mona.org\"]\n },\n \"blocktime_seconds\": 90,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Monacoin\",\n \"coin_name\": \"Monacoin\",\n \"coin_shortcut\": \"MONA\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 54600,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 2100000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Monacoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"MONA\",\n \"signed_message_header\": \"Monacoin Signed Message:\\n\",\n \"slip44\": 22,\n \"support\": {\n \"T1B1\": \"1.6.0\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 52,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": null,\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://nmc1.trezor.io\", \"https://nmc2.trezor.io\"]\n },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Namecoin\",\n \"coin_name\": \"Namecoin\",\n \"coin_shortcut\": \"NMC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 2940,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 8700000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Namecoin\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"NMC\",\n \"signed_message_header\": \"Namecoin Signed Message:\\n\",\n \"slip44\": 7,\n \"support\": {\n \"T1B1\": \"1.5.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.5\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 55,\n \"address_type_p2sh\": 117,\n \"bech32_prefix\": \"pc\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://blockbook.peercoin.net\"] },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Peercoin\",\n \"coin_name\": \"Peercoin\",\n \"coin_shortcut\": \"PPC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 6,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 10000,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000000032fe677166d54963b62a4677d8957e87c508eaa4fd7eb1c880cd27e3\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 13000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 10000,\n \"name\": \"Peercoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"PPC\",\n \"signed_message_header\": \"Peercoin Signed Message:\\n\",\n \"slip44\": 6,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.9\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": true,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": \"tpc\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://tblockbook.peercoin.net\"] },\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Peercoin Testnet\",\n \"coin_name\": \"Peercoin Testnet\",\n \"coin_shortcut\": \"tPPC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 6,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 10000,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000001f757bb737f6596503e17cd17b0658ce630cc727c0cca81aec47c9f06\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 2000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 10000,\n \"name\": \"Peercoin Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"tPPC\",\n \"signed_message_header\": \"Peercoin Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.9\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": true,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 23,\n \"address_type_p2sh\": 83,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Primecoin\",\n \"coin_name\": \"Primecoin\",\n \"coin_shortcut\": \"XPM\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"963d17ba4dc753138078a2f56afb3af9674e2546822badff26837db9a0152106\",\n \"is_testnet\": false,\n \"max_address_length\": 35,\n \"maxfee_kb\": 89000000000,\n \"min_address_length\": 26,\n \"minfee_kb\": 1000,\n \"name\": \"Primecoin\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"XPM\",\n \"signed_message_header\": \"Primecoin Signed Message:\\n\",\n \"slip44\": 24,\n \"support\": {\n \"T1B1\": \"1.8.0\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.11\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 58,\n \"address_type_p2sh\": 50,\n \"bech32_prefix\": \"qc\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 128,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Qtum\",\n \"coin_name\": \"Qtum\",\n \"coin_shortcut\": \"QTUM\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 500, \"High\": 2000, \"Low\": 410, \"Normal\": 600 },\n \"dust_limit\": 218400,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000075aef83cf2853580f8ae8ce6f8c3096cfa21d98334d6e3f95e5582ed986c\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 1000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 400000,\n \"name\": \"Qtum\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"QTUM\",\n \"signed_message_header\": \"Qtum Signed Message:\\n\",\n \"slip44\": 2301,\n \"support\": {\n \"T1B1\": \"1.8.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 120,\n \"address_type_p2sh\": 110,\n \"bech32_prefix\": \"tq\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 128,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Qtum Testnet\",\n \"coin_name\": \"Qtum Testnet\",\n \"coin_shortcut\": \"tQTUM\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 500, \"High\": 2000, \"Low\": 410, \"Normal\": 600 },\n \"dust_limit\": 218400,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000e803ee215c0684ca0d2f9220594d3f828617972aad66feb2ba51f5e14222\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 40000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 400000,\n \"name\": \"Qtum Testnet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"tQTUM\",\n \"signed_message_header\": \"Qtum Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.8.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": 70617039,\n \"xpub_magic_multisig_segwit_p2sh\": 70617039,\n \"xpub_magic_segwit_native\": 73342198,\n \"xpub_magic_segwit_p2sh\": 71979618\n },\n {\n \"address_type\": 60,\n \"address_type_p2sh\": 122,\n \"bech32_prefix\": null,\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://blockbook.ravencoin.org\"] },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Ravencoin\",\n \"coin_name\": \"Ravencoin\",\n \"coin_shortcut\": \"RVN\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Low\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000006b444bc2f2ffe627be9d9e7e7a0730000870ef6eb6da46c8eae389df90\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 170000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Ravencoin\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"RVN\",\n \"signed_message_header\": \"Raven Signed Message:\\n\",\n \"slip44\": 175,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.10\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 111,\n \"address_type_p2sh\": 196,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Ravencoin Testnet\",\n \"coin_name\": \"Ravencoin Testnet\",\n \"coin_shortcut\": \"tRVN\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Low\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000000ecfc5e6324a079542221d00e10362bdc894d56500c414060eea8a3ad5a\",\n \"is_testnet\": true,\n \"max_address_length\": 34,\n \"maxfee_kb\": 170000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Ravencoin Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"tRVN\",\n \"signed_message_header\": \"Raven Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.10.0\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.4.0\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 25,\n \"address_type_p2sh\": 105,\n \"bech32_prefix\": null,\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://blockbook.ritocoin.org\"] },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Ritocoin\",\n \"coin_name\": \"Ritocoin\",\n \"coin_shortcut\": \"RITO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Low\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000075e344bdf1c0e433f453764b1830a7aa19b2a5213e707502a22b779c1b\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 39000000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Ritocoin\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"RITO\",\n \"signed_message_header\": \"Rito Signed Message:\\n\",\n \"slip44\": 19169,\n \"support\": {\n \"T1B1\": \"1.8.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 87326380,\n \"xpub_magic\": 87353290,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 63,\n \"address_type_p2sh\": 18,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 55,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"SmartCash\",\n \"coin_name\": \"SmartCash\",\n \"coin_shortcut\": \"SMART\",\n \"curve_name\": \"secp256k1_smart\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 10, \"High\": 200, \"Low\": 1, \"Normal\": 100 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000007acc6970b812948d14ea5a0a13db0fdd07d5047c7e69101fa8b361e05a4\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 780000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 0,\n \"name\": \"SmartCash\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"SMART\",\n \"signed_message_header\": \"SmartCash Signed Message:\\n\",\n \"slip44\": 224,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 65,\n \"address_type_p2sh\": 21,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 55,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"SmartCash Testnet\",\n \"coin_name\": \"SmartCash Testnet\",\n \"coin_shortcut\": \"tSMART\",\n \"curve_name\": \"secp256k1_smart\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 10, \"High\": 200, \"Low\": 1, \"Normal\": 100 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000027235b5679bcd28c90d03d4bf1a9ba4c07c4efcc1c87d6c68cce25e6e5d\",\n \"is_testnet\": true,\n \"max_address_length\": 35,\n \"maxfee_kb\": 1000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 0,\n \"name\": \"SmartCash Testnet\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"tSMART\",\n \"signed_message_header\": \"SmartCash Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 76,\n \"address_type_p2sh\": 16,\n \"bech32_prefix\": \"xc\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Stakenet\",\n \"coin_name\": \"Stakenet\",\n \"coin_shortcut\": \"XSN\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 70, \"High\": 200, \"Low\": 10, \"Normal\": 140 },\n \"dust_limit\": 1000,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000c822abdbb23e28f79a49d29b41429737c6c7e15df40d1b1f1b35907ae34\",\n \"is_testnet\": false,\n \"max_address_length\": 47,\n \"maxfee_kb\": 11000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Stakenet\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"XSN\",\n \"signed_message_header\": \"DarkCoin Signed Message:\\n\",\n \"slip44\": 199,\n \"support\": {\n \"T1B1\": \"1.8.0\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.11\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 63,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": \"sys\",\n \"blockchain_link\": { \"type\": \"blockbook\", \"url\": [\"https://blockbook.syscoin.org\"] },\n \"blocktime_seconds\": 60,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Syscoin\",\n \"coin_name\": \"Syscoin\",\n \"coin_shortcut\": \"SYS\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 700, \"High\": 2000, \"Low\": 100, \"Normal\": 1400 },\n \"dust_limit\": 1820,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000022642db0346b6e01c2a397471f4f12e65d4f4251ec96c1f85367a61a7ab\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 42000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 10000,\n \"name\": \"Syscoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"SYS\",\n \"signed_message_header\": \"Syscoin Signed Message:\\n\",\n \"slip44\": 57,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 130,\n \"address_type_p2sh\": 30,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 30,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Unobtanium\",\n \"coin_name\": \"Unobtanium\",\n \"coin_shortcut\": \"UNO\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 50, \"High\": 160, \"Low\": 10, \"Normal\": 100 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"000004c2fc5fffb810dccc197d603690099a68305232e552d96ccbe8e2c52b75\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 53000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Unobtanium\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"UNO\",\n \"signed_message_header\": \"Unobtanium Signed Message:\\n\",\n \"slip44\": 92,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.6\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 70,\n \"address_type_p2sh\": 50,\n \"bech32_prefix\": \"vips\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://vips.blockbook.japanesecoin-pool.work\"]\n },\n \"blocktime_seconds\": 120,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"VIPSTARCOIN\",\n \"coin_name\": \"VIPSTARCOIN\",\n \"coin_shortcut\": \"VIPS\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 500, \"High\": 2000, \"Low\": 410, \"Normal\": 600 },\n \"dust_limit\": 218400,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"0000d068e1d30f79fb64446137106be9c6ee69a6a722295c131506b1ee09b77c\",\n \"is_testnet\": false,\n \"max_address_length\": 36,\n \"maxfee_kb\": 140000000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 400000,\n \"name\": \"VIPSTARCOIN\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"VIPS\",\n \"signed_message_header\": \"VIPSTARCOIN Signed Message:\\n\",\n \"slip44\": 1919,\n \"support\": {\n \"T1B1\": \"1.8.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 30,\n \"address_type_p2sh\": 33,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 30,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Verge\",\n \"coin_name\": \"Verge\",\n \"coin_shortcut\": \"XVG\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 6,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 10000,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00000fc63692467faeb20cdb3b53200dc601d75bdfa1001463304cc790d77278\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 550000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000000,\n \"name\": \"Verge\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"XVG\",\n \"signed_message_header\": \"Name: Dogecoin Dark\\n\",\n \"slip44\": 77,\n \"support\": {\n \"T1B1\": \"1.9.3\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.3.3\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": true,\n \"xprv_magic\": 35729707,\n \"xpub_magic\": 36513075,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 71,\n \"address_type_p2sh\": 5,\n \"bech32_prefix\": \"vtc\",\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\n \"https://vtc1.trezor.io\",\n \"https://vtc2.trezor.io\",\n \"https://vtc3.trezor.io\",\n \"https://vtc4.trezor.io\",\n \"https://vtc5.trezor.io\"\n ]\n },\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Vertcoin\",\n \"coin_name\": \"Vertcoin\",\n \"coin_shortcut\": \"VTC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 1000 },\n \"dust_limit\": 54600,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 13000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 100000,\n \"name\": \"Vertcoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"VTC\",\n \"signed_message_header\": \"Vertcoin Signed Message:\\n\",\n \"slip44\": 28,\n \"support\": {\n \"T1B1\": \"1.6.1\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.5\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 71,\n \"address_type_p2sh\": 33,\n \"bech32_prefix\": \"via\",\n \"blockchain_link\": null,\n \"blocktime_seconds\": 24,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Viacoin\",\n \"coin_name\": \"Viacoin\",\n \"coin_shortcut\": \"VIA\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 7000, \"High\": 20000, \"Low\": 1000, \"Normal\": 14000 },\n \"dust_limit\": 54600,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 14000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"Viacoin\",\n \"overwintered\": false,\n \"segwit\": true,\n \"shortcut\": \"VIA\",\n \"signed_message_header\": \"Viacoin Signed Message:\\n\",\n \"slip44\": 14,\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": 76067358,\n \"xpub_magic_multisig_segwit_p2sh\": 76067358,\n \"xpub_magic_segwit_native\": 78792518,\n \"xpub_magic_segwit_p2sh\": 77429938\n },\n {\n \"address_type\": 142,\n \"address_type_p2sh\": 145,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 120,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"ZCore\",\n \"coin_name\": \"ZCore\",\n \"coin_shortcut\": \"ZCR\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"695b79c8c234b45b2eeb4722f33373e471c9b686ff78efeb39da95f824a9f81b\",\n \"is_testnet\": false,\n \"max_address_length\": 95,\n \"maxfee_kb\": 170000000000,\n \"min_address_length\": 34,\n \"minfee_kb\": 1000,\n \"name\": \"ZCore\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"ZCR\",\n \"signed_message_header\": \"DarkNet Signed Message:\\n\",\n \"slip44\": 428,\n \"support\": {\n \"T1B1\": \"1.8.4\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.7\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 78791432,\n \"xpub_magic\": 78792518,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 7352,\n \"address_type_p2sh\": 7357,\n \"bech32_prefix\": null,\n \"blockchain_link\": {\n \"type\": \"blockbook\",\n \"url\": [\"https://zec.trezor.io\"]\n },\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Zcash\",\n \"coin_name\": \"Zcash\",\n \"coin_shortcut\": \"ZEC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08\",\n \"is_testnet\": false,\n \"max_address_length\": 95,\n \"maxfee_kb\": 51000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 1000,\n \"name\": \"Zcash\",\n \"overwintered\": true,\n \"segwit\": false,\n \"shortcut\": \"ZEC\",\n \"signed_message_header\": \"Zcash Signed Message:\\n\",\n \"slip44\": 133,\n \"support\": {\n \"T1B1\": \"1.8.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 7461,\n \"address_type_p2sh\": 7354,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 150,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"Zcash Testnet\",\n \"coin_name\": \"Zcash Testnet\",\n \"coin_shortcut\": \"TAZ\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Normal\": 10 },\n \"dust_limit\": 546,\n \"extra_data\": true,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38\",\n \"is_testnet\": true,\n \"max_address_length\": 95,\n \"maxfee_kb\": 10000000,\n \"min_address_length\": 35,\n \"minfee_kb\": 1000,\n \"name\": \"Zcash Testnet\",\n \"overwintered\": true,\n \"segwit\": false,\n \"shortcut\": \"TAZ\",\n \"signed_message_header\": \"Zcash Signed Message:\\n\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": \"1.8.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 70615956,\n \"xpub_magic\": 70617039,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n },\n {\n \"address_type\": 61,\n \"address_type_p2sh\": 123,\n \"bech32_prefix\": null,\n \"blockchain_link\": null,\n \"blocktime_seconds\": 600,\n \"cashaddr_prefix\": null,\n \"coin_label\": \"xRhodium\",\n \"coin_name\": \"Brhodium\",\n \"coin_shortcut\": \"XRC\",\n \"curve_name\": \"secp256k1\",\n \"decimals\": 8,\n \"decred\": false,\n \"default_fee_b\": { \"Economy\": 70, \"High\": 200, \"Low\": 10, \"Normal\": 140 },\n \"dust_limit\": 546,\n \"extra_data\": false,\n \"force_bip143\": false,\n \"fork_id\": null,\n \"hash_genesis_block\": \"baff5bfd9dc43fb672d003ec20fd21428f9282ca46bfa1730d73e1f2c75f5fdd\",\n \"is_testnet\": false,\n \"max_address_length\": 34,\n \"maxfee_kb\": 1000000000,\n \"min_address_length\": 27,\n \"minfee_kb\": 1000,\n \"name\": \"xRhodium\",\n \"overwintered\": false,\n \"segwit\": false,\n \"shortcut\": \"XRC\",\n \"signed_message_header\": \"BitCoin Rhodium Signed Message:\\n\",\n \"slip44\": 10291,\n \"support\": {\n \"T1B1\": \"1.8.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.1\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n },\n \"taproot\": false,\n \"timestamp\": false,\n \"xprv_magic\": 76066276,\n \"xpub_magic\": 76067358,\n \"xpub_magic_multisig_segwit_native\": null,\n \"xpub_magic_multisig_segwit_p2sh\": null,\n \"xpub_magic_segwit_native\": null,\n \"xpub_magic_segwit_p2sh\": null\n }\n ],\n \"misc\": [\n {\n \"blockchain_link\": {\n \"type\": \"blockfrost\",\n \"url\": [\"wss://ada.trezor.io\"]\n },\n \"curve\": \"ed25519\",\n \"decimals\": 6,\n \"is_testnet\": false,\n \"name\": \"Cardano\",\n \"shortcut\": \"ADA\",\n \"slip44\": 1815,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"secp256k1\",\n \"decimals\": 8,\n \"is_testnet\": false,\n \"name\": \"Binance Chain\",\n \"shortcut\": \"BNB\",\n \"slip44\": 714,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.1.5\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": { \"type\": \"solana\", \"url\": [\"https://dsol1.trezor.io\"] },\n \"curve\": \"ed25519\",\n \"decimals\": 9,\n \"is_testnet\": false,\n \"name\": \"Solana Devnet\",\n \"shortcut\": \"DSOL\",\n \"slip44\": 501,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.4\",\n \"T2T1\": \"2.6.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.4\",\n \"T3W1\": \"2.6.4\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"secp256k1\",\n \"decimals\": 4,\n \"is_testnet\": false,\n \"name\": \"EOS\",\n \"shortcut\": \"EOS\",\n \"slip44\": 194,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": false,\n \"T2T1\": \"2.1.1\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"secp256k1\",\n \"decimals\": 8,\n \"is_testnet\": false,\n \"name\": \"MaidSafeCoin\",\n \"shortcut\": \"MAID\",\n \"slip44\": 0,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.10\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"secp256k1\",\n \"decimals\": 2,\n \"is_testnet\": false,\n \"name\": \"Omni\",\n \"shortcut\": \"OMNI\",\n \"slip44\": 0,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.10\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"solana\",\n \"url\": [\n \"https://sol1.trezor.io\",\n \"https://sol2.trezor.io\",\n \"https://sol3.trezor.io\",\n \"https://sol4.trezor.io\"\n ]\n },\n \"curve\": \"ed25519\",\n \"decimals\": 9,\n \"is_testnet\": false,\n \"name\": \"Solana\",\n \"shortcut\": \"SOL\",\n \"slip44\": 501,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.4\",\n \"T2T1\": \"2.6.4\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.4\",\n \"T3W1\": \"2.6.4\"\n }\n },\n {\n \"blockchain_link\": { \"type\": \"blockfrost\", \"url\": [\"wss://tada1.trezor.io\"] },\n \"curve\": \"ed25519\",\n \"decimals\": 6,\n \"is_testnet\": false,\n \"name\": \"Cardano Preview Testnet\",\n \"shortcut\": \"tADA\",\n \"slip44\": 1815,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": { \"type\": \"ripple\", \"url\": [\"wss://txrp1.trezor.io\"] },\n \"curve\": \"secp256k1\",\n \"decimals\": 6,\n \"is_testnet\": false,\n \"name\": \"Ripple Testnet\",\n \"shortcut\": \"tXRP\",\n \"slip44\": 1,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"secp256k1\",\n \"decimals\": 2,\n \"is_testnet\": false,\n \"name\": \"Tether\",\n \"shortcut\": \"USDT\",\n \"slip44\": 0,\n \"support\": {\n \"T1B1\": \"1.7.2\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.10\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"stellar\",\n \"url\": [\"https://horizon.stellar.org\"]\n },\n \"curve\": \"ed25519\",\n \"decimals\": 7,\n \"is_testnet\": false,\n \"name\": \"Stellar\",\n \"shortcut\": \"XLM\",\n \"slip44\": 148,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"stellar\",\n \"url\": [\"https://horizon-testnet.stellar.org\"]\n },\n \"curve\": \"ed25519\",\n \"decimals\": 7,\n \"is_testnet\": false,\n \"name\": \"Stellar Testnet\",\n \"shortcut\": \"tXLM\",\n \"slip44\": 148,\n \"support\": {\n \"T1B1\": \"1.7.1\",\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"ed25519\",\n \"decimals\": 12,\n \"is_testnet\": false,\n \"name\": \"Monero\",\n \"shortcut\": \"XMR\",\n \"slip44\": 128,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": {\n \"type\": \"ripple\",\n \"url\": [\n \"wss://xrp1.trezor.io\",\n \"wss://xrp2.trezor.io\",\n \"wss://xrplcluster.com\",\n \"wss://xrpl.ws\",\n \"wss://s2.ripple.com\"\n ]\n },\n \"curve\": \"secp256k1\",\n \"decimals\": 6,\n \"is_testnet\": false,\n \"name\": \"Ripple\",\n \"shortcut\": \"XRP\",\n \"slip44\": 144,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n },\n {\n \"blockchain_link\": null,\n \"curve\": \"ed25519\",\n \"decimals\": 6,\n \"is_testnet\": false,\n \"name\": \"Tezos\",\n \"shortcut\": \"XTZ\",\n \"slip44\": 1729,\n \"support\": {\n \"T1B1\": false,\n \"T2B1\": \"2.6.1\",\n \"T2T1\": \"2.0.8\",\n \"T3B1\": \"2.8.1\",\n \"T3T1\": \"2.6.1\",\n \"T3W1\": \"2.6.1\"\n }\n }\n ],\n \"nem\": [\n {\n \"blockchain_link\": null,\n \"divisibility\": 6,\n \"is_testnet\": false,\n \"mosaic\": \"xem\",\n \"name\": \"NEM\",\n \"namespace\": \"nem\",\n \"shortcut\": \"XEM\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"XEM\"\n },\n {\n \"blockchain_link\": null,\n \"divisibility\": 6,\n \"fee\": 10,\n \"is_testnet\": false,\n \"levy\": \"MosaicLevy_Percentile\",\n \"levy_mosaic\": \"coin\",\n \"levy_namespace\": \"dim\",\n \"mosaic\": \"coin\",\n \"name\": \"DIMCOIN\",\n \"namespace\": \"dim\",\n \"networks\": [104],\n \"shortcut\": \"DIM\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"DIM\"\n },\n {\n \"blockchain_link\": null,\n \"divisibility\": 6,\n \"is_testnet\": false,\n \"mosaic\": \"token\",\n \"name\": \"DIM TOKEN\",\n \"namespace\": \"dim\",\n \"networks\": [104],\n \"shortcut\": \"DIMTOK\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"DIMTOK\"\n },\n {\n \"blockchain_link\": null,\n \"divisibility\": 0,\n \"is_testnet\": false,\n \"mosaic\": \"breeze-token\",\n \"name\": \"Breeze Token\",\n \"namespace\": \"breeze\",\n \"networks\": [104],\n \"shortcut\": \"BREEZE\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"BREEZE\"\n },\n {\n \"blockchain_link\": null,\n \"divisibility\": 0,\n \"is_testnet\": false,\n \"mosaic\": \"heart\",\n \"name\": \"PacNEM Game Credits\",\n \"namespace\": \"pacnem\",\n \"networks\": [104],\n \"shortcut\": \"PAC:HRT\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"PAC:HRT\"\n },\n {\n \"blockchain_link\": null,\n \"divisibility\": 6,\n \"fee\": 100,\n \"is_testnet\": false,\n \"levy\": \"MosaicLevy_Percentile\",\n \"levy_mosaic\": \"xem\",\n \"levy_namespace\": \"nem\",\n \"mosaic\": \"cheese\",\n \"name\": \"PacNEM Score Tokens\",\n \"namespace\": \"pacnem\",\n \"networks\": [104],\n \"shortcut\": \"PAC:CHS\",\n \"support\": {\n \"T1B1\": \"1.6.2\",\n \"T2B1\": false,\n \"T2T1\": \"2.0.7\",\n \"T3B1\": false,\n \"T3T1\": false,\n \"T3W1\": false\n },\n \"ticker\": \"PAC:CHS\"\n }\n ]\n}\n", "{\n \"nested\": {\n \"InputScriptType\": {\n \"values\": {\n \"SPENDADDRESS\": 0,\n \"SPENDMULTISIG\": 1,\n \"EXTERNAL\": 2,\n \"SPENDWITNESS\": 3,\n \"SPENDP2SHWITNESS\": 4,\n \"SPENDTAPROOT\": 5\n }\n },\n \"OutputScriptType\": {\n \"values\": {\n \"PAYTOADDRESS\": 0,\n \"PAYTOSCRIPTHASH\": 1,\n \"PAYTOMULTISIG\": 2,\n \"PAYTOOPRETURN\": 3,\n \"PAYTOWITNESS\": 4,\n \"PAYTOP2SHWITNESS\": 5,\n \"PAYTOTAPROOT\": 6\n }\n },\n \"DecredStakingSpendType\": {\n \"values\": {\n \"SSGen\": 0,\n \"SSRTX\": 1\n }\n },\n \"AmountUnit\": {\n \"values\": {\n \"BITCOIN\": 0,\n \"MILLIBITCOIN\": 1,\n \"MICROBITCOIN\": 2,\n \"SATOSHI\": 3\n }\n },\n \"MultisigPubkeysOrder\": {\n \"values\": {\n \"PRESERVED\": 0,\n \"LEXICOGRAPHIC\": 1\n }\n },\n \"MultisigRedeemScriptType\": {\n \"fields\": {\n \"pubkeys\": {\n \"rule\": \"repeated\",\n \"type\": \"HDNodePathType\",\n \"id\": 1\n },\n \"signatures\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"m\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"nodes\": {\n \"rule\": \"repeated\",\n \"type\": \"HDNodeType\",\n \"id\": 4\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 5,\n \"options\": {\n \"packed\": false\n }\n },\n \"pubkeys_order\": {\n \"type\": \"MultisigPubkeysOrder\",\n \"id\": 6,\n \"options\": {\n \"default\": \"PRESERVED\"\n }\n }\n },\n \"nested\": {\n \"HDNodePathType\": {\n \"fields\": {\n \"node\": {\n \"rule\": \"required\",\n \"type\": \"HDNodeType\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n }\n }\n }\n }\n },\n \"GetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"ecdsa_curve_name\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 4,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 5,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"ignore_xpub_magic\": {\n \"type\": \"bool\",\n \"id\": 6\n }\n }\n },\n \"PublicKey\": {\n \"fields\": {\n \"node\": {\n \"rule\": \"required\",\n \"type\": \"HDNodeType\",\n \"id\": 1\n },\n \"xpub\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"root_fingerprint\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"descriptor\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"GetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 2,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 4\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 5,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"ignore_xpub_magic\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 7\n }\n }\n },\n \"Address\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"GetOwnershipId\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 2,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 3\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 4,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n }\n }\n },\n \"OwnershipId\": {\n \"fields\": {\n \"ownership_id\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"SignMessage\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"message\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 3,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 4,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"no_script_type\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 6\n }\n }\n },\n \"MessageSignature\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"VerifyMessage\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"message\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 4,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 5\n }\n }\n },\n \"SignTx\": {\n \"fields\": {\n \"outputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"inputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 3,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"version\": {\n \"type\": \"uint32\",\n \"id\": 4,\n \"options\": {\n \"default\": 1\n }\n },\n \"lock_time\": {\n \"type\": \"uint32\",\n \"id\": 5,\n \"options\": {\n \"default\": 0\n }\n },\n \"expiry\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"overwintered\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"version_group_id\": {\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"timestamp\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"branch_id\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"amount_unit\": {\n \"type\": \"AmountUnit\",\n \"id\": 11,\n \"options\": {\n \"default\": \"BITCOIN\"\n }\n },\n \"decred_staking_ticket\": {\n \"type\": \"bool\",\n \"id\": 12,\n \"options\": {\n \"default\": false\n }\n },\n \"serialize\": {\n \"type\": \"bool\",\n \"id\": 13,\n \"options\": {\n \"default\": true\n }\n },\n \"coinjoin_request\": {\n \"type\": \"CoinJoinRequest\",\n \"id\": 14\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 15\n }\n },\n \"nested\": {\n \"CoinJoinRequest\": {\n \"fields\": {\n \"fee_rate\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"no_fee_threshold\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"min_registrable_amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"mask_public_key\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"signature\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n }\n }\n },\n \"TxRequest\": {\n \"fields\": {\n \"request_type\": {\n \"type\": \"RequestType\",\n \"id\": 1\n },\n \"details\": {\n \"type\": \"TxRequestDetailsType\",\n \"id\": 2\n },\n \"serialized\": {\n \"type\": \"TxRequestSerializedType\",\n \"id\": 3\n }\n },\n \"nested\": {\n \"RequestType\": {\n \"values\": {\n \"TXINPUT\": 0,\n \"TXOUTPUT\": 1,\n \"TXMETA\": 2,\n \"TXFINISHED\": 3,\n \"TXEXTRADATA\": 4,\n \"TXORIGINPUT\": 5,\n \"TXORIGOUTPUT\": 6,\n \"TXPAYMENTREQ\": 7\n }\n },\n \"TxRequestDetailsType\": {\n \"fields\": {\n \"request_index\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"tx_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"extra_data_len\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"extra_data_offset\": {\n \"type\": \"uint32\",\n \"id\": 4\n }\n }\n },\n \"TxRequestSerializedType\": {\n \"fields\": {\n \"signature_index\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"signature\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"serialized_tx\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"TxAck\": {\n \"fields\": {\n \"tx\": {\n \"type\": \"TransactionType\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TransactionType\": {\n \"fields\": {\n \"version\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"inputs\": {\n \"rule\": \"repeated\",\n \"type\": \"TxInputType\",\n \"id\": 2\n },\n \"bin_outputs\": {\n \"rule\": \"repeated\",\n \"type\": \"TxOutputBinType\",\n \"id\": 3\n },\n \"lock_time\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"outputs\": {\n \"rule\": \"repeated\",\n \"type\": \"TxOutputType\",\n \"id\": 5\n },\n \"inputs_cnt\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"outputs_cnt\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"extra_data\": {\n \"type\": \"bytes\",\n \"id\": 8\n },\n \"extra_data_len\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"expiry\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"overwintered\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"version_group_id\": {\n \"type\": \"uint32\",\n \"id\": 12\n },\n \"timestamp\": {\n \"type\": \"uint32\",\n \"id\": 13\n },\n \"branch_id\": {\n \"type\": \"uint32\",\n \"id\": 14\n }\n },\n \"nested\": {\n \"TxInputType\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"script_sig\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"sequence\": {\n \"type\": \"uint32\",\n \"id\": 5,\n \"options\": {\n \"default\": 4294967295\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 6,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 7\n },\n \"amount\": {\n \"type\": \"uint64\",\n \"id\": 8\n },\n \"decred_tree\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"witness\": {\n \"type\": \"bytes\",\n \"id\": 13\n },\n \"ownership_proof\": {\n \"type\": \"bytes\",\n \"id\": 14\n },\n \"commitment_data\": {\n \"type\": \"bytes\",\n \"id\": 15\n },\n \"orig_hash\": {\n \"type\": \"bytes\",\n \"id\": 16\n },\n \"orig_index\": {\n \"type\": \"uint32\",\n \"id\": 17\n },\n \"decred_staking_spend\": {\n \"type\": \"DecredStakingSpendType\",\n \"id\": 18\n },\n \"script_pubkey\": {\n \"type\": \"bytes\",\n \"id\": 19\n },\n \"coinjoin_flags\": {\n \"type\": \"uint32\",\n \"id\": 20,\n \"options\": {\n \"default\": 0\n }\n }\n }\n },\n \"TxOutputBinType\": {\n \"fields\": {\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"script_pubkey\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"decred_script_version\": {\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n },\n \"TxOutputType\": {\n \"fields\": {\n \"address\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"script_type\": {\n \"type\": \"OutputScriptType\",\n \"id\": 4,\n \"options\": {\n \"default\": \"PAYTOADDRESS\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 5\n },\n \"op_return_data\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"orig_hash\": {\n \"type\": \"bytes\",\n \"id\": 10\n },\n \"orig_index\": {\n \"type\": \"uint32\",\n \"id\": 11\n },\n \"payment_req_index\": {\n \"type\": \"uint32\",\n \"id\": 12\n }\n }\n }\n }\n }\n }\n },\n \"TxInput\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"script_sig\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"sequence\": {\n \"type\": \"uint32\",\n \"id\": 5,\n \"options\": {\n \"default\": 4294967295\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 6,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 7\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 8\n },\n \"decred_tree\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"witness\": {\n \"type\": \"bytes\",\n \"id\": 13\n },\n \"ownership_proof\": {\n \"type\": \"bytes\",\n \"id\": 14\n },\n \"commitment_data\": {\n \"type\": \"bytes\",\n \"id\": 15\n },\n \"orig_hash\": {\n \"type\": \"bytes\",\n \"id\": 16\n },\n \"orig_index\": {\n \"type\": \"uint32\",\n \"id\": 17\n },\n \"decred_staking_spend\": {\n \"type\": \"DecredStakingSpendType\",\n \"id\": 18\n },\n \"script_pubkey\": {\n \"type\": \"bytes\",\n \"id\": 19\n },\n \"coinjoin_flags\": {\n \"type\": \"uint32\",\n \"id\": 20,\n \"options\": {\n \"default\": 0\n }\n }\n }\n },\n \"TxOutput\": {\n \"fields\": {\n \"address\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"script_type\": {\n \"type\": \"OutputScriptType\",\n \"id\": 4,\n \"options\": {\n \"default\": \"PAYTOADDRESS\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 5\n },\n \"op_return_data\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"orig_hash\": {\n \"type\": \"bytes\",\n \"id\": 10\n },\n \"orig_index\": {\n \"type\": \"uint32\",\n \"id\": 11\n },\n \"payment_req_index\": {\n \"type\": \"uint32\",\n \"id\": 12\n }\n }\n },\n \"PrevTx\": {\n \"fields\": {\n \"version\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"lock_time\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"inputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"outputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"extra_data_len\": {\n \"type\": \"uint32\",\n \"id\": 9,\n \"options\": {\n \"default\": 0\n }\n },\n \"expiry\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"version_group_id\": {\n \"type\": \"uint32\",\n \"id\": 12\n },\n \"timestamp\": {\n \"type\": \"uint32\",\n \"id\": 13\n },\n \"branch_id\": {\n \"type\": \"uint32\",\n \"id\": 14\n }\n }\n },\n \"PrevInput\": {\n \"fields\": {\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"script_sig\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"sequence\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"decred_tree\": {\n \"type\": \"uint32\",\n \"id\": 9\n }\n }\n },\n \"PrevOutput\": {\n \"fields\": {\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"script_pubkey\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"decred_script_version\": {\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n },\n \"TxAckInput\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"TxAckInputWrapper\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TxAckInputWrapper\": {\n \"fields\": {\n \"input\": {\n \"rule\": \"required\",\n \"type\": \"TxInput\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"TxAckOutput\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"TxAckOutputWrapper\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TxAckOutputWrapper\": {\n \"fields\": {\n \"output\": {\n \"rule\": \"required\",\n \"type\": \"TxOutput\",\n \"id\": 5\n }\n }\n }\n }\n },\n \"TxAckPrevMeta\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"PrevTx\",\n \"id\": 1\n }\n }\n },\n \"TxAckPrevInput\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"TxAckPrevInputWrapper\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TxAckPrevInputWrapper\": {\n \"fields\": {\n \"input\": {\n \"rule\": \"required\",\n \"type\": \"PrevInput\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"TxAckPrevOutput\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"TxAckPrevOutputWrapper\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TxAckPrevOutputWrapper\": {\n \"fields\": {\n \"output\": {\n \"rule\": \"required\",\n \"type\": \"PrevOutput\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"TxAckPrevExtraData\": {\n \"options\": {\n \"(wire_type)\": 22\n },\n \"fields\": {\n \"tx\": {\n \"rule\": \"required\",\n \"type\": \"TxAckPrevExtraDataWrapper\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"TxAckPrevExtraDataWrapper\": {\n \"fields\": {\n \"extra_data_chunk\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 8\n }\n }\n }\n }\n },\n \"GetOwnershipProof\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 2,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 3,\n \"options\": {\n \"default\": \"SPENDWITNESS\"\n }\n },\n \"multisig\": {\n \"type\": \"MultisigRedeemScriptType\",\n \"id\": 4\n },\n \"user_confirmation\": {\n \"type\": \"bool\",\n \"id\": 5,\n \"options\": {\n \"default\": false\n }\n },\n \"ownership_ids\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"commitment_data\": {\n \"type\": \"bytes\",\n \"id\": 7,\n \"options\": {\n \"default\": \"\"\n }\n }\n }\n },\n \"OwnershipProof\": {\n \"fields\": {\n \"ownership_proof\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"AuthorizeCoinJoin\": {\n \"fields\": {\n \"coordinator\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"max_rounds\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"max_coordinator_fee_rate\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"max_fee_per_kvbyte\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 5,\n \"options\": {\n \"packed\": false\n }\n },\n \"coin_name\": {\n \"type\": \"string\",\n \"id\": 6,\n \"options\": {\n \"default\": \"Bitcoin\"\n }\n },\n \"script_type\": {\n \"type\": \"InputScriptType\",\n \"id\": 7,\n \"options\": {\n \"default\": \"SPENDADDRESS\"\n }\n },\n \"amount_unit\": {\n \"type\": \"AmountUnit\",\n \"id\": 8,\n \"options\": {\n \"default\": \"BITCOIN\"\n }\n }\n }\n },\n \"BleUnpair\": {\n \"fields\": {\n \"all\": {\n \"type\": \"bool\",\n \"id\": 1\n },\n \"addr\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"FirmwareErase\": {\n \"fields\": {\n \"length\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"FirmwareRequest\": {\n \"fields\": {\n \"offset\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"length\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"FirmwareUpload\": {\n \"fields\": {\n \"payload\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"ProdTestT1\": {\n \"fields\": {\n \"payload\": {\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoDerivationType\": {\n \"values\": {\n \"LEDGER\": 0,\n \"ICARUS\": 1,\n \"ICARUS_TREZOR\": 2\n }\n },\n \"CardanoAddressType\": {\n \"values\": {\n \"BASE\": 0,\n \"BASE_SCRIPT_KEY\": 1,\n \"BASE_KEY_SCRIPT\": 2,\n \"BASE_SCRIPT_SCRIPT\": 3,\n \"POINTER\": 4,\n \"POINTER_SCRIPT\": 5,\n \"ENTERPRISE\": 6,\n \"ENTERPRISE_SCRIPT\": 7,\n \"BYRON\": 8,\n \"REWARD\": 14,\n \"REWARD_SCRIPT\": 15\n }\n },\n \"CardanoNativeScriptType\": {\n \"values\": {\n \"PUB_KEY\": 0,\n \"ALL\": 1,\n \"ANY\": 2,\n \"N_OF_K\": 3,\n \"INVALID_BEFORE\": 4,\n \"INVALID_HEREAFTER\": 5\n }\n },\n \"CardanoNativeScriptHashDisplayFormat\": {\n \"values\": {\n \"HIDE\": 0,\n \"BECH32\": 1,\n \"POLICY_ID\": 2\n }\n },\n \"CardanoTxOutputSerializationFormat\": {\n \"values\": {\n \"ARRAY_LEGACY\": 0,\n \"MAP_BABBAGE\": 1\n }\n },\n \"CardanoCertificateType\": {\n \"values\": {\n \"STAKE_REGISTRATION\": 0,\n \"STAKE_DEREGISTRATION\": 1,\n \"STAKE_DELEGATION\": 2,\n \"STAKE_POOL_REGISTRATION\": 3,\n \"STAKE_REGISTRATION_CONWAY\": 7,\n \"STAKE_DEREGISTRATION_CONWAY\": 8,\n \"VOTE_DELEGATION\": 9\n }\n },\n \"CardanoDRepType\": {\n \"values\": {\n \"KEY_HASH\": 0,\n \"SCRIPT_HASH\": 1,\n \"ABSTAIN\": 2,\n \"NO_CONFIDENCE\": 3\n }\n },\n \"CardanoPoolRelayType\": {\n \"values\": {\n \"SINGLE_HOST_IP\": 0,\n \"SINGLE_HOST_NAME\": 1,\n \"MULTIPLE_HOST_NAME\": 2\n }\n },\n \"CardanoTxAuxiliaryDataSupplementType\": {\n \"values\": {\n \"NONE\": 0,\n \"CVOTE_REGISTRATION_SIGNATURE\": 1\n }\n },\n \"CardanoCVoteRegistrationFormat\": {\n \"values\": {\n \"CIP15\": 0,\n \"CIP36\": 1\n }\n },\n \"CardanoTxSigningMode\": {\n \"values\": {\n \"ORDINARY_TRANSACTION\": 0,\n \"POOL_REGISTRATION_AS_OWNER\": 1,\n \"MULTISIG_TRANSACTION\": 2,\n \"PLUTUS_TRANSACTION\": 3\n }\n },\n \"CardanoTxWitnessType\": {\n \"values\": {\n \"BYRON_WITNESS\": 0,\n \"SHELLEY_WITNESS\": 1\n }\n },\n \"CardanoBlockchainPointerType\": {\n \"fields\": {\n \"block_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"tx_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"certificate_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n },\n \"CardanoNativeScript\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoNativeScriptType\",\n \"id\": 1\n },\n \"scripts\": {\n \"rule\": \"repeated\",\n \"type\": \"CardanoNativeScript\",\n \"id\": 2\n },\n \"key_hash\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"key_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 4,\n \"options\": {\n \"packed\": false\n }\n },\n \"required_signatures_count\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"invalid_before\": {\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"invalid_hereafter\": {\n \"type\": \"uint64\",\n \"id\": 7\n }\n }\n },\n \"CardanoGetNativeScriptHash\": {\n \"fields\": {\n \"script\": {\n \"rule\": \"required\",\n \"type\": \"CardanoNativeScript\",\n \"id\": 1\n },\n \"display_format\": {\n \"rule\": \"required\",\n \"type\": \"CardanoNativeScriptHashDisplayFormat\",\n \"id\": 2\n },\n \"derivation_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDerivationType\",\n \"id\": 3\n }\n }\n },\n \"CardanoNativeScriptHash\": {\n \"fields\": {\n \"script_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoAddressParametersType\": {\n \"fields\": {\n \"address_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoAddressType\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"address_n_staking\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n },\n \"staking_key_hash\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"certificate_pointer\": {\n \"type\": \"CardanoBlockchainPointerType\",\n \"id\": 5\n },\n \"script_payment_hash\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"script_staking_hash\": {\n \"type\": \"bytes\",\n \"id\": 7\n }\n }\n },\n \"CardanoGetAddress\": {\n \"fields\": {\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2,\n \"options\": {\n \"default\": false\n }\n },\n \"protocol_magic\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"network_id\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"address_parameters\": {\n \"rule\": \"required\",\n \"type\": \"CardanoAddressParametersType\",\n \"id\": 5\n },\n \"derivation_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDerivationType\",\n \"id\": 6\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 7\n }\n }\n },\n \"CardanoAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"CardanoGetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"derivation_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDerivationType\",\n \"id\": 3\n }\n }\n },\n \"CardanoPublicKey\": {\n \"fields\": {\n \"xpub\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"node\": {\n \"rule\": \"required\",\n \"type\": \"HDNodeType\",\n \"id\": 2\n }\n }\n },\n \"CardanoSignTxInit\": {\n \"fields\": {\n \"signing_mode\": {\n \"rule\": \"required\",\n \"type\": \"CardanoTxSigningMode\",\n \"id\": 1\n },\n \"protocol_magic\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"network_id\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"inputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"outputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"ttl\": {\n \"type\": \"uint64\",\n \"id\": 7\n },\n \"certificates_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"withdrawals_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"has_auxiliary_data\": {\n \"rule\": \"required\",\n \"type\": \"bool\",\n \"id\": 10\n },\n \"validity_interval_start\": {\n \"type\": \"uint64\",\n \"id\": 11\n },\n \"witness_requests_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 12\n },\n \"minting_asset_groups_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 13\n },\n \"derivation_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDerivationType\",\n \"id\": 14\n },\n \"include_network_id\": {\n \"type\": \"bool\",\n \"id\": 15,\n \"options\": {\n \"default\": false\n }\n },\n \"script_data_hash\": {\n \"type\": \"bytes\",\n \"id\": 16\n },\n \"collateral_inputs_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 17\n },\n \"required_signers_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 18\n },\n \"has_collateral_return\": {\n \"type\": \"bool\",\n \"id\": 19,\n \"options\": {\n \"default\": false\n }\n },\n \"total_collateral\": {\n \"type\": \"uint64\",\n \"id\": 20\n },\n \"reference_inputs_count\": {\n \"type\": \"uint32\",\n \"id\": 21,\n \"options\": {\n \"default\": 0\n }\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 22\n },\n \"tag_cbor_sets\": {\n \"type\": \"bool\",\n \"id\": 23,\n \"options\": {\n \"default\": false\n }\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 24\n }\n }\n },\n \"CardanoTxInput\": {\n \"fields\": {\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoTxOutput\": {\n \"fields\": {\n \"address\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"address_parameters\": {\n \"type\": \"CardanoAddressParametersType\",\n \"id\": 2\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"asset_groups_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"datum_hash\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"format\": {\n \"type\": \"CardanoTxOutputSerializationFormat\",\n \"id\": 6,\n \"options\": {\n \"default\": \"ARRAY_LEGACY\"\n }\n },\n \"inline_datum_size\": {\n \"type\": \"uint32\",\n \"id\": 7,\n \"options\": {\n \"default\": 0\n }\n },\n \"reference_script_size\": {\n \"type\": \"uint32\",\n \"id\": 8,\n \"options\": {\n \"default\": 0\n }\n }\n }\n },\n \"CardanoAssetGroup\": {\n \"fields\": {\n \"policy_id\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"tokens_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoToken\": {\n \"fields\": {\n \"asset_name_bytes\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"amount\": {\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"mint_amount\": {\n \"type\": \"sint64\",\n \"id\": 3\n }\n }\n },\n \"CardanoTxInlineDatumChunk\": {\n \"fields\": {\n \"data\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoTxReferenceScriptChunk\": {\n \"fields\": {\n \"data\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoPoolOwner\": {\n \"fields\": {\n \"staking_key_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"staking_key_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"CardanoPoolRelayParameters\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoPoolRelayType\",\n \"id\": 1\n },\n \"ipv4_address\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"ipv6_address\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"host_name\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"port\": {\n \"type\": \"uint32\",\n \"id\": 5\n }\n }\n },\n \"CardanoPoolMetadataType\": {\n \"fields\": {\n \"url\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"CardanoPoolParametersType\": {\n \"fields\": {\n \"pool_id\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"vrf_key_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"pledge\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"cost\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"margin_numerator\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"margin_denominator\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"reward_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 7\n },\n \"metadata\": {\n \"type\": \"CardanoPoolMetadataType\",\n \"id\": 10\n },\n \"owners_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 11\n },\n \"relays_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 12\n }\n }\n },\n \"CardanoDRep\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDRepType\",\n \"id\": 1\n },\n \"key_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"script_hash\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"CardanoTxCertificate\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoCertificateType\",\n \"id\": 1\n },\n \"path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"pool\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"pool_parameters\": {\n \"type\": \"CardanoPoolParametersType\",\n \"id\": 4\n },\n \"script_hash\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"key_hash\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"deposit\": {\n \"type\": \"uint64\",\n \"id\": 7\n },\n \"drep\": {\n \"type\": \"CardanoDRep\",\n \"id\": 8\n }\n }\n },\n \"CardanoTxWithdrawal\": {\n \"fields\": {\n \"path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"script_hash\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"key_hash\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"CardanoCVoteRegistrationDelegation\": {\n \"fields\": {\n \"vote_public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"weight\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoCVoteRegistrationParametersType\": {\n \"fields\": {\n \"vote_public_key\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"staking_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"payment_address_parameters\": {\n \"type\": \"CardanoAddressParametersType\",\n \"id\": 3\n },\n \"nonce\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"format\": {\n \"type\": \"CardanoCVoteRegistrationFormat\",\n \"id\": 5,\n \"options\": {\n \"default\": \"CIP15\"\n }\n },\n \"delegations\": {\n \"rule\": \"repeated\",\n \"type\": \"CardanoCVoteRegistrationDelegation\",\n \"id\": 6\n },\n \"voting_purpose\": {\n \"type\": \"uint64\",\n \"id\": 7\n },\n \"payment_address\": {\n \"type\": \"string\",\n \"id\": 8\n }\n }\n },\n \"CardanoTxAuxiliaryData\": {\n \"fields\": {\n \"cvote_registration_parameters\": {\n \"type\": \"CardanoCVoteRegistrationParametersType\",\n \"id\": 1\n },\n \"hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"CardanoTxMint\": {\n \"fields\": {\n \"asset_groups_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"CardanoTxCollateralInput\": {\n \"fields\": {\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoTxRequiredSigner\": {\n \"fields\": {\n \"key_hash\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"key_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n }\n }\n },\n \"CardanoTxReferenceInput\": {\n \"fields\": {\n \"prev_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"prev_index\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoTxItemAck\": {\n \"fields\": {}\n },\n \"CardanoTxAuxiliaryDataSupplement\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoTxAuxiliaryDataSupplementType\",\n \"id\": 1\n },\n \"auxiliary_data_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"cvote_registration_signature\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"CardanoTxWitnessRequest\": {\n \"fields\": {\n \"path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n }\n }\n },\n \"CardanoTxWitnessResponse\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoTxWitnessType\",\n \"id\": 1\n },\n \"pub_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"chain_code\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"CardanoTxHostAck\": {\n \"fields\": {}\n },\n \"CardanoTxBodyHash\": {\n \"fields\": {\n \"tx_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoSignTxFinished\": {\n \"fields\": {}\n },\n \"CardanoSignMessageInit\": {\n \"fields\": {\n \"protocol_magic\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"network_id\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"signing_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n },\n \"payload_size\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"prefer_hex_display\": {\n \"rule\": \"required\",\n \"type\": \"bool\",\n \"id\": 5\n },\n \"address_parameters\": {\n \"type\": \"CardanoAddressParametersType\",\n \"id\": 6\n },\n \"derivation_type\": {\n \"rule\": \"required\",\n \"type\": \"CardanoDerivationType\",\n \"id\": 7\n }\n }\n },\n \"CardanoMessageDataRequest\": {\n \"fields\": {\n \"length\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"offset\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"CardanoMessageDataResponse\": {\n \"fields\": {\n \"data\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"CardanoMessageSignature\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"pub_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"Success\": {\n \"fields\": {\n \"message\": {\n \"type\": \"string\",\n \"id\": 1,\n \"options\": {\n \"default\": \"\"\n }\n }\n }\n },\n \"Failure\": {\n \"fields\": {\n \"code\": {\n \"type\": \"FailureType\",\n \"id\": 1\n },\n \"message\": {\n \"type\": \"string\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"FailureType\": {\n \"values\": {\n \"Failure_UnexpectedMessage\": 1,\n \"Failure_ButtonExpected\": 2,\n \"Failure_DataError\": 3,\n \"Failure_ActionCancelled\": 4,\n \"Failure_PinExpected\": 5,\n \"Failure_PinCancelled\": 6,\n \"Failure_PinInvalid\": 7,\n \"Failure_InvalidSignature\": 8,\n \"Failure_ProcessError\": 9,\n \"Failure_NotEnoughFunds\": 10,\n \"Failure_NotInitialized\": 11,\n \"Failure_PinMismatch\": 12,\n \"Failure_WipeCodeMismatch\": 13,\n \"Failure_InvalidSession\": 14,\n \"Failure_Busy\": 15,\n \"Failure_ThpUnallocatedSession\": 16,\n \"Failure_InvalidProtocol\": 17,\n \"Failure_BufferError\": 18,\n \"Failure_FirmwareError\": 99\n }\n }\n }\n },\n \"ButtonRequest\": {\n \"fields\": {\n \"code\": {\n \"type\": \"ButtonRequestType\",\n \"id\": 1\n },\n \"pages\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"name\": {\n \"type\": \"string\",\n \"id\": 4\n }\n },\n \"nested\": {\n \"ButtonRequestType\": {\n \"values\": {\n \"ButtonRequest_Other\": 1,\n \"ButtonRequest_FeeOverThreshold\": 2,\n \"ButtonRequest_ConfirmOutput\": 3,\n \"ButtonRequest_ResetDevice\": 4,\n \"ButtonRequest_ConfirmWord\": 5,\n \"ButtonRequest_WipeDevice\": 6,\n \"ButtonRequest_ProtectCall\": 7,\n \"ButtonRequest_SignTx\": 8,\n \"ButtonRequest_FirmwareCheck\": 9,\n \"ButtonRequest_Address\": 10,\n \"ButtonRequest_PublicKey\": 11,\n \"ButtonRequest_MnemonicWordCount\": 12,\n \"ButtonRequest_MnemonicInput\": 13,\n \"_Deprecated_ButtonRequest_PassphraseType\": 14,\n \"ButtonRequest_UnknownDerivationPath\": 15,\n \"ButtonRequest_RecoveryHomepage\": 16,\n \"ButtonRequest_Success\": 17,\n \"ButtonRequest_Warning\": 18,\n \"ButtonRequest_PassphraseEntry\": 19,\n \"ButtonRequest_PinEntry\": 20\n }\n }\n }\n },\n \"ButtonAck\": {\n \"fields\": {}\n },\n \"PinMatrixRequest\": {\n \"fields\": {\n \"type\": {\n \"type\": \"PinMatrixRequestType\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"PinMatrixRequestType\": {\n \"values\": {\n \"PinMatrixRequestType_Current\": 1,\n \"PinMatrixRequestType_NewFirst\": 2,\n \"PinMatrixRequestType_NewSecond\": 3,\n \"PinMatrixRequestType_WipeCodeFirst\": 4,\n \"PinMatrixRequestType_WipeCodeSecond\": 5\n }\n }\n }\n },\n \"PinMatrixAck\": {\n \"fields\": {\n \"pin\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"PassphraseRequest\": {\n \"fields\": {\n \"_on_device\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"PassphraseAck\": {\n \"fields\": {\n \"passphrase\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"_state\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"on_device\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"Deprecated_PassphraseStateRequest\": {\n \"fields\": {\n \"state\": {\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"Deprecated_PassphraseStateAck\": {\n \"fields\": {}\n },\n \"HDNodeType\": {\n \"fields\": {\n \"depth\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"fingerprint\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"child_num\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"chain_code\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"private_key\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"PaymentRequest\": {\n \"fields\": {\n \"nonce\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"recipient_name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"memos\": {\n \"rule\": \"repeated\",\n \"type\": \"PaymentRequestMemo\",\n \"id\": 3\n },\n \"amount\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"PaymentRequestMemo\": {\n \"fields\": {\n \"text_memo\": {\n \"type\": \"TextMemo\",\n \"id\": 1\n },\n \"refund_memo\": {\n \"type\": \"RefundMemo\",\n \"id\": 2\n },\n \"coin_purchase_memo\": {\n \"type\": \"CoinPurchaseMemo\",\n \"id\": 3\n },\n \"text_details_memo\": {\n \"type\": \"TextDetailsMemo\",\n \"id\": 4\n }\n }\n },\n \"TextMemo\": {\n \"fields\": {\n \"text\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"TextDetailsMemo\": {\n \"fields\": {\n \"title\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"text\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"RefundMemo\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"mac\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"CoinPurchaseMemo\": {\n \"fields\": {\n \"coin_type\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 4,\n \"options\": {\n \"packed\": false\n }\n },\n \"mac\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n }\n }\n },\n \"CipherKeyValue\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"encrypt\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"ask_on_encrypt\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"ask_on_decrypt\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"iv\": {\n \"type\": \"bytes\",\n \"id\": 7\n }\n }\n },\n \"CipheredKeyValue\": {\n \"fields\": {\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"IdentityType\": {\n \"fields\": {\n \"proto\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"user\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"host\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"port\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"path\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"index\": {\n \"type\": \"uint32\",\n \"id\": 6,\n \"options\": {\n \"default\": 0\n }\n }\n }\n },\n \"SignIdentity\": {\n \"fields\": {\n \"identity\": {\n \"rule\": \"required\",\n \"type\": \"IdentityType\",\n \"id\": 1\n },\n \"challenge_hidden\": {\n \"type\": \"bytes\",\n \"id\": 2,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"challenge_visual\": {\n \"type\": \"string\",\n \"id\": 3,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"ecdsa_curve_name\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"SignedIdentity\": {\n \"fields\": {\n \"address\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"GetECDHSessionKey\": {\n \"fields\": {\n \"identity\": {\n \"rule\": \"required\",\n \"type\": \"IdentityType\",\n \"id\": 1\n },\n \"peer_public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"ecdsa_curve_name\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"ECDHSessionKey\": {\n \"fields\": {\n \"session_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"public_key\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"PaymentNotification\": {\n \"fields\": {\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkDecision\": {\n \"fields\": {\n \"button\": {\n \"type\": \"DebugButton\",\n \"id\": 1\n },\n \"swipe\": {\n \"type\": \"DebugSwipeDirection\",\n \"id\": 2\n },\n \"input\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"x\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"y\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"wait\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"hold_ms\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"physical_button\": {\n \"type\": \"DebugPhysicalButton\",\n \"id\": 8\n },\n \"touch_event_type\": {\n \"type\": \"DebugTouchEventType\",\n \"id\": 9\n }\n },\n \"nested\": {\n \"DebugSwipeDirection\": {\n \"values\": {\n \"UP\": 0,\n \"DOWN\": 1,\n \"LEFT\": 2,\n \"RIGHT\": 3\n }\n },\n \"DebugButton\": {\n \"values\": {\n \"NO\": 0,\n \"YES\": 1,\n \"INFO\": 2\n }\n },\n \"DebugPhysicalButton\": {\n \"values\": {\n \"LEFT_BTN\": 0,\n \"MIDDLE_BTN\": 1,\n \"RIGHT_BTN\": 2\n }\n },\n \"DebugTouchEventType\": {\n \"values\": {\n \"TOUCH_FULL_CLICK\": 0,\n \"TOUCH_START\": 1,\n \"TOUCH_END\": 2\n }\n }\n }\n },\n \"DebugLinkLayout\": {\n \"fields\": {\n \"tokens\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkReseedRandom\": {\n \"fields\": {\n \"value\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkRecordScreen\": {\n \"fields\": {\n \"target_directory\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"refresh_index\": {\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"default\": 0\n }\n }\n }\n },\n \"DebugLinkGetState\": {\n \"fields\": {\n \"wait_word_list\": {\n \"type\": \"bool\",\n \"id\": 1\n },\n \"wait_word_pos\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"wait_layout\": {\n \"type\": \"DebugWaitType\",\n \"id\": 3,\n \"options\": {\n \"default\": \"IMMEDIATE\"\n }\n },\n \"return_empty_state\": {\n \"type\": \"bool\",\n \"id\": 4,\n \"options\": {\n \"default\": false\n }\n }\n },\n \"nested\": {\n \"DebugWaitType\": {\n \"values\": {\n \"IMMEDIATE\": 0,\n \"NEXT_LAYOUT\": 1,\n \"CURRENT_LAYOUT\": 2\n }\n }\n }\n },\n \"DebugLinkState\": {\n \"fields\": {\n \"layout\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"pin\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"matrix\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"mnemonic_secret\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"node\": {\n \"type\": \"HDNodeType\",\n \"id\": 5\n },\n \"passphrase_protection\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"reset_word\": {\n \"type\": \"string\",\n \"id\": 7\n },\n \"reset_entropy\": {\n \"type\": \"bytes\",\n \"id\": 8\n },\n \"recovery_fake_word\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"recovery_word_pos\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"reset_word_pos\": {\n \"type\": \"uint32\",\n \"id\": 11\n },\n \"mnemonic_type\": {\n \"type\": \"BackupType\",\n \"id\": 12\n },\n \"tokens\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 13\n }\n }\n },\n \"DebugLinkGetPairingInfo\": {\n \"fields\": {\n \"channel_id\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"handshake_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"nfc_secret_host\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"DebugLinkPairingInfo\": {\n \"fields\": {\n \"channel_id\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"handshake_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"code_entry_code\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"code_qr_code\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"nfc_secret_trezor\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n },\n \"DebugLinkStop\": {\n \"fields\": {}\n },\n \"DebugLinkLog\": {\n \"fields\": {\n \"level\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"bucket\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"text\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"DebugLinkMemoryRead\": {\n \"fields\": {\n \"address\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"length\": {\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"DebugLinkMemory\": {\n \"fields\": {\n \"memory\": {\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkMemoryWrite\": {\n \"fields\": {\n \"address\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"memory\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"flash\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"DebugLinkFlashErase\": {\n \"fields\": {\n \"sector\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkEraseSdCard\": {\n \"fields\": {\n \"format\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkWatchLayout\": {\n \"fields\": {\n \"watch\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"DebugLinkResetDebugEvents\": {\n \"fields\": {}\n },\n \"DebugLinkOptigaSetSecMax\": {\n \"fields\": {}\n },\n \"DebugLinkGetGcInfo\": {\n \"fields\": {}\n },\n \"DebugLinkGcInfo\": {\n \"fields\": {\n \"items\": {\n \"rule\": \"repeated\",\n \"type\": \"DebugLinkGcInfoItem\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"DebugLinkGcInfoItem\": {\n \"fields\": {\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"DefinitionType\": {\n \"values\": {\n \"ETHEREUM_NETWORK\": 0,\n \"ETHEREUM_TOKEN\": 1,\n \"SOLANA_TOKEN\": 2\n }\n },\n \"EthereumNetworkInfo\": {\n \"fields\": {\n \"chain_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"symbol\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"slip44\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"EthereumTokenInfo\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"chain_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"symbol\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"decimals\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 5\n }\n }\n },\n \"SolanaTokenInfo\": {\n \"fields\": {\n \"mint\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"symbol\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"EosGetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"EosPublicKey\": {\n \"fields\": {\n \"wif_public_key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"raw_public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"EosSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"chain_id\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"header\": {\n \"rule\": \"required\",\n \"type\": \"EosTxHeader\",\n \"id\": 3\n },\n \"num_actions\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"EosTxHeader\": {\n \"fields\": {\n \"expiration\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"ref_block_num\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"ref_block_prefix\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"max_net_usage_words\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"max_cpu_usage_ms\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"delay_sec\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 6\n }\n }\n }\n }\n },\n \"EosTxActionRequest\": {\n \"fields\": {\n \"data_size\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"EosTxActionAck\": {\n \"fields\": {\n \"common\": {\n \"rule\": \"required\",\n \"type\": \"EosActionCommon\",\n \"id\": 1\n },\n \"transfer\": {\n \"type\": \"EosActionTransfer\",\n \"id\": 2\n },\n \"delegate\": {\n \"type\": \"EosActionDelegate\",\n \"id\": 3\n },\n \"undelegate\": {\n \"type\": \"EosActionUndelegate\",\n \"id\": 4\n },\n \"refund\": {\n \"type\": \"EosActionRefund\",\n \"id\": 5\n },\n \"buy_ram\": {\n \"type\": \"EosActionBuyRam\",\n \"id\": 6\n },\n \"buy_ram_bytes\": {\n \"type\": \"EosActionBuyRamBytes\",\n \"id\": 7\n },\n \"sell_ram\": {\n \"type\": \"EosActionSellRam\",\n \"id\": 8\n },\n \"vote_producer\": {\n \"type\": \"EosActionVoteProducer\",\n \"id\": 9\n },\n \"update_auth\": {\n \"type\": \"EosActionUpdateAuth\",\n \"id\": 10\n },\n \"delete_auth\": {\n \"type\": \"EosActionDeleteAuth\",\n \"id\": 11\n },\n \"link_auth\": {\n \"type\": \"EosActionLinkAuth\",\n \"id\": 12\n },\n \"unlink_auth\": {\n \"type\": \"EosActionUnlinkAuth\",\n \"id\": 13\n },\n \"new_account\": {\n \"type\": \"EosActionNewAccount\",\n \"id\": 14\n },\n \"unknown\": {\n \"type\": \"EosActionUnknown\",\n \"id\": 15\n }\n },\n \"nested\": {\n \"EosAsset\": {\n \"fields\": {\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 1\n },\n \"symbol\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n },\n \"EosPermissionLevel\": {\n \"fields\": {\n \"actor\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"permission\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n },\n \"EosAuthorizationKey\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"key\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n },\n \"weight\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n }\n }\n },\n \"EosAuthorizationAccount\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"EosPermissionLevel\",\n \"id\": 1\n },\n \"weight\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"EosAuthorizationWait\": {\n \"fields\": {\n \"wait_sec\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"weight\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"EosAuthorization\": {\n \"fields\": {\n \"threshold\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"keys\": {\n \"rule\": \"repeated\",\n \"type\": \"EosAuthorizationKey\",\n \"id\": 2\n },\n \"accounts\": {\n \"rule\": \"repeated\",\n \"type\": \"EosAuthorizationAccount\",\n \"id\": 3\n },\n \"waits\": {\n \"rule\": \"repeated\",\n \"type\": \"EosAuthorizationWait\",\n \"id\": 4\n }\n }\n },\n \"EosActionCommon\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"authorization\": {\n \"rule\": \"repeated\",\n \"type\": \"EosPermissionLevel\",\n \"id\": 3\n }\n }\n },\n \"EosActionTransfer\": {\n \"fields\": {\n \"sender\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"receiver\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 3\n },\n \"memo\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"EosActionDelegate\": {\n \"fields\": {\n \"sender\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"receiver\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"net_quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 3\n },\n \"cpu_quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 4\n },\n \"transfer\": {\n \"rule\": \"required\",\n \"type\": \"bool\",\n \"id\": 5\n }\n }\n },\n \"EosActionUndelegate\": {\n \"fields\": {\n \"sender\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"receiver\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"net_quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 3\n },\n \"cpu_quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 4\n }\n }\n },\n \"EosActionRefund\": {\n \"fields\": {\n \"owner\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n }\n }\n },\n \"EosActionBuyRam\": {\n \"fields\": {\n \"payer\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"receiver\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"quantity\": {\n \"rule\": \"required\",\n \"type\": \"EosAsset\",\n \"id\": 3\n }\n }\n },\n \"EosActionBuyRamBytes\": {\n \"fields\": {\n \"payer\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"receiver\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"bytes\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n },\n \"EosActionSellRam\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"bytes\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n },\n \"EosActionVoteProducer\": {\n \"fields\": {\n \"voter\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"proxy\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"producers\": {\n \"rule\": \"repeated\",\n \"type\": \"uint64\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n }\n }\n },\n \"EosActionUpdateAuth\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"permission\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"parent\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"auth\": {\n \"rule\": \"required\",\n \"type\": \"EosAuthorization\",\n \"id\": 4\n }\n }\n },\n \"EosActionDeleteAuth\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"permission\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n },\n \"EosActionLinkAuth\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"code\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"requirement\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n }\n }\n },\n \"EosActionUnlinkAuth\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"code\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n }\n }\n },\n \"EosActionNewAccount\": {\n \"fields\": {\n \"creator\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"owner\": {\n \"rule\": \"required\",\n \"type\": \"EosAuthorization\",\n \"id\": 3\n },\n \"active\": {\n \"rule\": \"required\",\n \"type\": \"EosAuthorization\",\n \"id\": 4\n }\n }\n },\n \"EosActionUnknown\": {\n \"fields\": {\n \"data_size\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"data_chunk\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"EosSignedTx\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"EthereumSignTypedData\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"primary_type\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"metamask_v4_compat\": {\n \"type\": \"bool\",\n \"id\": 3,\n \"options\": {\n \"default\": true\n }\n },\n \"definitions\": {\n \"type\": \"EthereumDefinitions\",\n \"id\": 4\n },\n \"show_message_hash\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n },\n \"EthereumTypedDataStructRequest\": {\n \"fields\": {\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"EthereumTypedDataStructAck\": {\n \"fields\": {\n \"members\": {\n \"rule\": \"repeated\",\n \"type\": \"EthereumStructMember\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"EthereumStructMember\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"EthereumFieldType\",\n \"id\": 1\n },\n \"name\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"EthereumFieldType\": {\n \"fields\": {\n \"data_type\": {\n \"rule\": \"required\",\n \"type\": \"EthereumDataType\",\n \"id\": 1\n },\n \"size\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"entry_type\": {\n \"type\": \"EthereumFieldType\",\n \"id\": 3\n },\n \"struct_name\": {\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"EthereumDataType\": {\n \"values\": {\n \"UINT\": 1,\n \"INT\": 2,\n \"BYTES\": 3,\n \"STRING\": 4,\n \"BOOL\": 5,\n \"ADDRESS\": 6,\n \"ARRAY\": 7,\n \"STRUCT\": 8\n }\n }\n }\n },\n \"EthereumTypedDataValueRequest\": {\n \"fields\": {\n \"member_path\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n }\n }\n },\n \"EthereumTypedDataValueAck\": {\n \"fields\": {\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"EthereumGetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n }\n }\n },\n \"EthereumPublicKey\": {\n \"fields\": {\n \"node\": {\n \"rule\": \"required\",\n \"type\": \"HDNodeType\",\n \"id\": 1\n },\n \"xpub\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"EthereumGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"encoded_network\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 4\n }\n }\n },\n \"EthereumAddress\": {\n \"fields\": {\n \"_old_address\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"address\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"EthereumSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"nonce\": {\n \"type\": \"bytes\",\n \"id\": 2,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"gas_price\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"to\": {\n \"type\": \"string\",\n \"id\": 11,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"value\": {\n \"type\": \"bytes\",\n \"id\": 6,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"data_initial_chunk\": {\n \"type\": \"bytes\",\n \"id\": 7,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"data_length\": {\n \"type\": \"uint32\",\n \"id\": 8,\n \"options\": {\n \"default\": 0\n }\n },\n \"chain_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 9\n },\n \"tx_type\": {\n \"type\": \"uint32\",\n \"id\": 10\n },\n \"definitions\": {\n \"type\": \"EthereumDefinitions\",\n \"id\": 12\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 14\n }\n }\n },\n \"EthereumSignTxEIP1559\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"nonce\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"max_gas_fee\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"max_priority_fee\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"to\": {\n \"type\": \"string\",\n \"id\": 6,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"value\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 7\n },\n \"data_initial_chunk\": {\n \"type\": \"bytes\",\n \"id\": 8,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"data_length\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"chain_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 10\n },\n \"access_list\": {\n \"rule\": \"repeated\",\n \"type\": \"EthereumAccessList\",\n \"id\": 11\n },\n \"definitions\": {\n \"type\": \"EthereumDefinitions\",\n \"id\": 12\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 14\n }\n },\n \"nested\": {\n \"EthereumAccessList\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"storage_keys\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"EthereumTxRequest\": {\n \"fields\": {\n \"data_length\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"signature_v\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"signature_r\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"signature_s\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"EthereumTxAck\": {\n \"fields\": {\n \"data_chunk\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"EthereumSignMessage\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"message\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"encoded_network\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 4\n }\n }\n },\n \"EthereumMessageSignature\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"EthereumVerifyMessage\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"message\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 5\n }\n }\n },\n \"EthereumSignTypedHash\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"domain_separator_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"message_hash\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"encoded_network\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"EthereumTypedDataSignature\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"EthereumDefinitions\": {\n \"fields\": {\n \"encoded_network\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"encoded_token\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"EvoluGetNode\": {\n \"fields\": {\n \"proof_of_delegated_identity\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"EvoluNode\": {\n \"fields\": {\n \"data\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"EvoluSignRegistrationRequest\": {\n \"fields\": {\n \"challenge_from_server\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"size_to_acquire\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"proof_of_delegated_identity\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"EvoluRegistrationRequest\": {\n \"fields\": {\n \"certificate_chain\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"EvoluGetDelegatedIdentityKey\": {\n \"fields\": {\n \"thp_credential\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"host_static_public_key\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"EvoluDelegatedIdentityKey\": {\n \"fields\": {\n \"private_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"BackupType\": {\n \"values\": {\n \"Bip39\": 0,\n \"Slip39_Basic\": 1,\n \"Slip39_Advanced\": 2,\n \"Slip39_Single_Extendable\": 3,\n \"Slip39_Basic_Extendable\": 4,\n \"Slip39_Advanced_Extendable\": 5\n }\n },\n \"SafetyCheckLevel\": {\n \"values\": {\n \"Strict\": 0,\n \"PromptAlways\": 1,\n \"PromptTemporarily\": 2\n }\n },\n \"DisplayRotation\": {\n \"values\": {\n \"North\": 0,\n \"East\": 90,\n \"South\": 180,\n \"West\": 270\n }\n },\n \"HomescreenFormat\": {\n \"values\": {\n \"Toif\": 1,\n \"Jpeg\": 2,\n \"ToiG\": 3\n }\n },\n \"Initialize\": {\n \"fields\": {\n \"session_id\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"_skip_passphrase\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"derive_cardano\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"GetFeatures\": {\n \"fields\": {}\n },\n \"Features\": {\n \"fields\": {\n \"vendor\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"major_version\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"minor_version\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"patch_version\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"bootloader_mode\": {\n \"type\": \"bool\",\n \"id\": 5\n },\n \"device_id\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"pin_protection\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"passphrase_protection\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"language\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"label\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"initialized\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"revision\": {\n \"type\": \"bytes\",\n \"id\": 13\n },\n \"bootloader_hash\": {\n \"type\": \"bytes\",\n \"id\": 14\n },\n \"imported\": {\n \"type\": \"bool\",\n \"id\": 15\n },\n \"unlocked\": {\n \"type\": \"bool\",\n \"id\": 16\n },\n \"_passphrase_cached\": {\n \"type\": \"bool\",\n \"id\": 17\n },\n \"firmware_present\": {\n \"type\": \"bool\",\n \"id\": 18\n },\n \"backup_availability\": {\n \"type\": \"BackupAvailability\",\n \"id\": 19\n },\n \"flags\": {\n \"type\": \"uint32\",\n \"id\": 20\n },\n \"model\": {\n \"type\": \"string\",\n \"id\": 21\n },\n \"fw_major\": {\n \"type\": \"uint32\",\n \"id\": 22\n },\n \"fw_minor\": {\n \"type\": \"uint32\",\n \"id\": 23\n },\n \"fw_patch\": {\n \"type\": \"uint32\",\n \"id\": 24\n },\n \"fw_vendor\": {\n \"type\": \"string\",\n \"id\": 25\n },\n \"unfinished_backup\": {\n \"type\": \"bool\",\n \"id\": 27\n },\n \"no_backup\": {\n \"type\": \"bool\",\n \"id\": 28\n },\n \"recovery_status\": {\n \"type\": \"RecoveryStatus\",\n \"id\": 29\n },\n \"capabilities\": {\n \"rule\": \"repeated\",\n \"type\": \"Capability\",\n \"id\": 30,\n \"options\": {\n \"packed\": false\n }\n },\n \"backup_type\": {\n \"type\": \"BackupType\",\n \"id\": 31\n },\n \"sd_card_present\": {\n \"type\": \"bool\",\n \"id\": 32\n },\n \"sd_protection\": {\n \"type\": \"bool\",\n \"id\": 33\n },\n \"wipe_code_protection\": {\n \"type\": \"bool\",\n \"id\": 34\n },\n \"session_id\": {\n \"type\": \"bytes\",\n \"id\": 35\n },\n \"passphrase_always_on_device\": {\n \"type\": \"bool\",\n \"id\": 36\n },\n \"safety_checks\": {\n \"type\": \"SafetyCheckLevel\",\n \"id\": 37\n },\n \"auto_lock_delay_ms\": {\n \"type\": \"uint32\",\n \"id\": 38\n },\n \"display_rotation\": {\n \"type\": \"DisplayRotation\",\n \"id\": 39\n },\n \"experimental_features\": {\n \"type\": \"bool\",\n \"id\": 40\n },\n \"busy\": {\n \"type\": \"bool\",\n \"id\": 41\n },\n \"homescreen_format\": {\n \"type\": \"HomescreenFormat\",\n \"id\": 42\n },\n \"hide_passphrase_from_host\": {\n \"type\": \"bool\",\n \"id\": 43\n },\n \"internal_model\": {\n \"type\": \"string\",\n \"id\": 44\n },\n \"unit_color\": {\n \"type\": \"uint32\",\n \"id\": 45\n },\n \"unit_btconly\": {\n \"type\": \"bool\",\n \"id\": 46\n },\n \"homescreen_width\": {\n \"type\": \"uint32\",\n \"id\": 47\n },\n \"homescreen_height\": {\n \"type\": \"uint32\",\n \"id\": 48\n },\n \"bootloader_locked\": {\n \"type\": \"bool\",\n \"id\": 49\n },\n \"language_version_matches\": {\n \"type\": \"bool\",\n \"id\": 50,\n \"options\": {\n \"default\": true\n }\n },\n \"unit_packaging\": {\n \"type\": \"uint32\",\n \"id\": 51\n },\n \"haptic_feedback\": {\n \"type\": \"bool\",\n \"id\": 52\n },\n \"recovery_type\": {\n \"type\": \"RecoveryType\",\n \"id\": 53\n },\n \"optiga_sec\": {\n \"type\": \"uint32\",\n \"id\": 54\n },\n \"soc\": {\n \"type\": \"uint32\",\n \"id\": 55\n },\n \"firmware_corrupted\": {\n \"type\": \"bool\",\n \"id\": 56\n },\n \"auto_lock_delay_battery_ms\": {\n \"type\": \"uint32\",\n \"id\": 57\n },\n \"led\": {\n \"type\": \"bool\",\n \"id\": 58\n },\n \"usb_connected\": {\n \"type\": \"bool\",\n \"id\": 59\n },\n \"wireless_connected\": {\n \"type\": \"bool\",\n \"id\": 60\n }\n },\n \"nested\": {\n \"BackupAvailability\": {\n \"values\": {\n \"NotAvailable\": 0,\n \"Required\": 1,\n \"Available\": 2\n }\n },\n \"RecoveryStatus\": {\n \"values\": {\n \"Nothing\": 0,\n \"Recovery\": 1,\n \"Backup\": 2\n }\n },\n \"Capability\": {\n \"values\": {\n \"Capability_Bitcoin\": 1,\n \"Capability_Bitcoin_like\": 2,\n \"Capability_Binance\": 3,\n \"Capability_Cardano\": 4,\n \"Capability_Crypto\": 5,\n \"Capability_EOS\": 6,\n \"Capability_Ethereum\": 7,\n \"Capability_Lisk\": 8,\n \"Capability_Monero\": 9,\n \"Capability_NEM\": 10,\n \"Capability_Ripple\": 11,\n \"Capability_Stellar\": 12,\n \"Capability_Tezos\": 13,\n \"Capability_U2F\": 14,\n \"Capability_Shamir\": 15,\n \"Capability_ShamirGroups\": 16,\n \"Capability_PassphraseEntry\": 17,\n \"Capability_Solana\": 18,\n \"Capability_Translations\": 19,\n \"Capability_Brightness\": 20,\n \"Capability_Haptic\": 21,\n \"Capability_BLE\": 22,\n \"Capability_NFC\": 23\n }\n }\n }\n },\n \"LockDevice\": {\n \"fields\": {}\n },\n \"SetBusy\": {\n \"fields\": {\n \"expiry_ms\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"EndSession\": {\n \"fields\": {}\n },\n \"ApplySettings\": {\n \"fields\": {\n \"language\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"label\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"use_passphrase\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"homescreen\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"_passphrase_source\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"auto_lock_delay_ms\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"display_rotation\": {\n \"type\": \"DisplayRotation\",\n \"id\": 7\n },\n \"passphrase_always_on_device\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"safety_checks\": {\n \"type\": \"SafetyCheckLevel\",\n \"id\": 9\n },\n \"experimental_features\": {\n \"type\": \"bool\",\n \"id\": 10\n },\n \"hide_passphrase_from_host\": {\n \"type\": \"bool\",\n \"id\": 11\n },\n \"haptic_feedback\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"homescreen_length\": {\n \"type\": \"uint32\",\n \"id\": 14\n },\n \"auto_lock_delay_battery_ms\": {\n \"type\": \"uint32\",\n \"id\": 15\n }\n }\n },\n \"ChangeLanguage\": {\n \"fields\": {\n \"data_length\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n }\n }\n },\n \"DataChunkRequest\": {\n \"fields\": {\n \"data_length\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"data_offset\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n },\n \"DataChunkAck\": {\n \"fields\": {\n \"data_chunk\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"ApplyFlags\": {\n \"fields\": {\n \"flags\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"ChangePin\": {\n \"fields\": {\n \"remove\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"ChangeWipeCode\": {\n \"fields\": {\n \"remove\": {\n \"type\": \"bool\",\n \"id\": 1\n }\n }\n },\n \"SdProtect\": {\n \"fields\": {\n \"operation\": {\n \"rule\": \"required\",\n \"type\": \"SdProtectOperationType\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"SdProtectOperationType\": {\n \"values\": {\n \"DISABLE\": 0,\n \"ENABLE\": 1,\n \"REFRESH\": 2\n }\n }\n }\n },\n \"Ping\": {\n \"fields\": {\n \"message\": {\n \"type\": \"string\",\n \"id\": 1,\n \"options\": {\n \"default\": \"\"\n }\n },\n \"button_protection\": {\n \"type\": \"bool\",\n \"id\": 2\n }\n }\n },\n \"Cancel\": {\n \"fields\": {}\n },\n \"GetEntropy\": {\n \"fields\": {\n \"size\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"Entropy\": {\n \"fields\": {\n \"entropy\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"GetFirmwareHash\": {\n \"fields\": {\n \"challenge\": {\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"FirmwareHash\": {\n \"fields\": {\n \"hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"AuthenticateDevice\": {\n \"fields\": {\n \"challenge\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"AuthenticityProof\": {\n \"fields\": {\n \"optiga_certificates\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"optiga_signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"tropic_certificates\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"tropic_signature\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"WipeDevice\": {\n \"fields\": {}\n },\n \"LoadDevice\": {\n \"fields\": {\n \"mnemonics\": {\n \"rule\": \"repeated\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"pin\": {\n \"type\": \"string\",\n \"id\": 3\n },\n \"passphrase_protection\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"language\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"label\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"skip_checksum\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"u2f_counter\": {\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"needs_backup\": {\n \"type\": \"bool\",\n \"id\": 9\n },\n \"no_backup\": {\n \"type\": \"bool\",\n \"id\": 10\n }\n }\n },\n \"ResetDevice\": {\n \"fields\": {\n \"strength\": {\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"default\": 256\n }\n },\n \"passphrase_protection\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"pin_protection\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"language\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"label\": {\n \"type\": \"string\",\n \"id\": 6\n },\n \"u2f_counter\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"skip_backup\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"no_backup\": {\n \"type\": \"bool\",\n \"id\": 9\n },\n \"backup_type\": {\n \"type\": \"BackupType\",\n \"id\": 10,\n \"options\": {\n \"default\": \"Bip39\"\n }\n },\n \"entropy_check\": {\n \"type\": \"bool\",\n \"id\": 11\n }\n }\n },\n \"BackupDevice\": {\n \"fields\": {\n \"group_threshold\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"groups\": {\n \"rule\": \"repeated\",\n \"type\": \"Slip39Group\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"Slip39Group\": {\n \"fields\": {\n \"member_threshold\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"member_count\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"EntropyRequest\": {\n \"fields\": {\n \"entropy_commitment\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"prev_entropy\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"EntropyAck\": {\n \"fields\": {\n \"entropy\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"EntropyCheckReady\": {\n \"fields\": {}\n },\n \"EntropyCheckContinue\": {\n \"fields\": {\n \"finish\": {\n \"type\": \"bool\",\n \"id\": 1,\n \"options\": {\n \"default\": false\n }\n }\n }\n },\n \"RecoveryDevice\": {\n \"fields\": {\n \"word_count\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"passphrase_protection\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"pin_protection\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"language\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"label\": {\n \"type\": \"string\",\n \"id\": 5\n },\n \"enforce_wordlist\": {\n \"type\": \"bool\",\n \"id\": 6\n },\n \"input_method\": {\n \"type\": \"RecoveryDeviceInputMethod\",\n \"id\": 8\n },\n \"u2f_counter\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"type\": {\n \"type\": \"RecoveryType\",\n \"id\": 10,\n \"options\": {\n \"default\": \"NormalRecovery\"\n }\n }\n },\n \"nested\": {\n \"RecoveryDeviceInputMethod\": {\n \"values\": {\n \"ScrambledWords\": 0,\n \"Matrix\": 1\n }\n }\n }\n },\n \"RecoveryType\": {\n \"values\": {\n \"NormalRecovery\": 0,\n \"DryRun\": 1,\n \"UnlockRepeatedBackup\": 2\n }\n },\n \"WordRequest\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"WordRequestType\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"WordRequestType\": {\n \"values\": {\n \"WordRequestType_Plain\": 0,\n \"WordRequestType_Matrix9\": 1,\n \"WordRequestType_Matrix6\": 2\n }\n }\n }\n },\n \"WordAck\": {\n \"fields\": {\n \"word\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"SetU2FCounter\": {\n \"fields\": {\n \"u2f_counter\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"GetNextU2FCounter\": {\n \"fields\": {}\n },\n \"NextU2FCounter\": {\n \"fields\": {\n \"u2f_counter\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"DoPreauthorized\": {\n \"fields\": {}\n },\n \"PreauthorizedRequest\": {\n \"fields\": {}\n },\n \"CancelAuthorization\": {\n \"fields\": {}\n },\n \"RebootToBootloader\": {\n \"fields\": {\n \"boot_command\": {\n \"type\": \"BootCommand\",\n \"id\": 1,\n \"options\": {\n \"default\": \"STOP_AND_WAIT\"\n }\n },\n \"firmware_header\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"language_data_length\": {\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"default\": 0\n }\n }\n },\n \"nested\": {\n \"BootCommand\": {\n \"values\": {\n \"STOP_AND_WAIT\": 0,\n \"INSTALL_UPGRADE\": 1\n }\n }\n }\n },\n \"GetNonce\": {\n \"fields\": {}\n },\n \"Nonce\": {\n \"fields\": {\n \"nonce\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"UnlockPath\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"UnlockedPathRequest\": {\n \"fields\": {\n \"mac\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"ShowDeviceTutorial\": {\n \"fields\": {}\n },\n \"UnlockBootloader\": {\n \"fields\": {}\n },\n \"SetBrightness\": {\n \"fields\": {\n \"value\": {\n \"type\": \"uint32\",\n \"id\": 1\n }\n }\n },\n \"GetSerialNumber\": {\n \"fields\": {}\n },\n \"SerialNumber\": {\n \"fields\": {\n \"serial_number\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"MoneroNetworkType\": {\n \"values\": {\n \"MAINNET\": 0,\n \"TESTNET\": 1,\n \"STAGENET\": 2,\n \"FAKECHAIN\": 3\n }\n },\n \"MoneroTransactionSourceEntry\": {\n \"fields\": {\n \"outputs\": {\n \"rule\": \"repeated\",\n \"type\": \"MoneroOutputEntry\",\n \"id\": 1\n },\n \"real_output\": {\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"real_out_tx_key\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"real_out_additional_tx_keys\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"real_output_in_tx_index\": {\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"amount\": {\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"rct\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"mask\": {\n \"type\": \"bytes\",\n \"id\": 8\n },\n \"multisig_kLRki\": {\n \"type\": \"MoneroMultisigKLRki\",\n \"id\": 9\n },\n \"subaddr_minor\": {\n \"type\": \"uint32\",\n \"id\": 10\n }\n },\n \"nested\": {\n \"MoneroOutputEntry\": {\n \"fields\": {\n \"idx\": {\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"key\": {\n \"type\": \"MoneroRctKeyPublic\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"MoneroRctKeyPublic\": {\n \"fields\": {\n \"dest\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"commitment\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"MoneroMultisigKLRki\": {\n \"fields\": {\n \"K\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"L\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"R\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"ki\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n }\n }\n },\n \"MoneroTransactionDestinationEntry\": {\n \"fields\": {\n \"amount\": {\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"addr\": {\n \"type\": \"MoneroAccountPublicAddress\",\n \"id\": 2\n },\n \"is_subaddress\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"original\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"is_integrated\": {\n \"type\": \"bool\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"MoneroAccountPublicAddress\": {\n \"fields\": {\n \"spend_public_key\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"view_public_key\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n }\n }\n },\n \"MoneroTransactionRsigData\": {\n \"fields\": {\n \"rsig_type\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"offload_type\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"grouping\": {\n \"rule\": \"repeated\",\n \"type\": \"uint64\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n },\n \"mask\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"rsig\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"rsig_parts\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"bp_version\": {\n \"type\": \"uint32\",\n \"id\": 7\n }\n }\n },\n \"MoneroGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 3,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n },\n \"account\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"minor\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"payment_id\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 7\n }\n }\n },\n \"MoneroAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"MoneroGetWatchKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 2,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n }\n }\n },\n \"MoneroWatchKey\": {\n \"fields\": {\n \"watch_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"MoneroTransactionInitRequest\": {\n \"fields\": {\n \"version\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 3,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n },\n \"tsx_data\": {\n \"type\": \"MoneroTransactionData\",\n \"id\": 4\n }\n },\n \"nested\": {\n \"MoneroTransactionData\": {\n \"fields\": {\n \"version\": {\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"payment_id\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"unlock_time\": {\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"outputs\": {\n \"rule\": \"repeated\",\n \"type\": \"MoneroTransactionDestinationEntry\",\n \"id\": 4\n },\n \"change_dts\": {\n \"type\": \"MoneroTransactionDestinationEntry\",\n \"id\": 5\n },\n \"num_inputs\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"mixin\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"fee\": {\n \"type\": \"uint64\",\n \"id\": 8\n },\n \"account\": {\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"minor_indices\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 10,\n \"options\": {\n \"packed\": false\n }\n },\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 11\n },\n \"integrated_indices\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 12,\n \"options\": {\n \"packed\": false\n }\n },\n \"client_version\": {\n \"type\": \"uint32\",\n \"id\": 13\n },\n \"hard_fork\": {\n \"type\": \"uint32\",\n \"id\": 14\n },\n \"monero_version\": {\n \"type\": \"bytes\",\n \"id\": 15\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 16\n }\n }\n }\n }\n },\n \"MoneroTransactionInitAck\": {\n \"fields\": {\n \"hmacs\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 2\n }\n }\n },\n \"MoneroTransactionSetInputRequest\": {\n \"fields\": {\n \"src_entr\": {\n \"type\": \"MoneroTransactionSourceEntry\",\n \"id\": 1\n }\n }\n },\n \"MoneroTransactionSetInputAck\": {\n \"fields\": {\n \"vini\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"vini_hmac\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"pseudo_out\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"pseudo_out_hmac\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"pseudo_out_alpha\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"spend_key\": {\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"MoneroTransactionInputViniRequest\": {\n \"fields\": {\n \"src_entr\": {\n \"type\": \"MoneroTransactionSourceEntry\",\n \"id\": 1\n },\n \"vini\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"vini_hmac\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"pseudo_out\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"pseudo_out_hmac\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"orig_idx\": {\n \"type\": \"uint32\",\n \"id\": 6\n }\n }\n },\n \"MoneroTransactionInputViniAck\": {\n \"fields\": {}\n },\n \"MoneroTransactionAllInputsSetRequest\": {\n \"fields\": {}\n },\n \"MoneroTransactionAllInputsSetAck\": {\n \"fields\": {\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 1\n }\n }\n },\n \"MoneroTransactionSetOutputRequest\": {\n \"fields\": {\n \"dst_entr\": {\n \"type\": \"MoneroTransactionDestinationEntry\",\n \"id\": 1\n },\n \"dst_entr_hmac\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 3\n },\n \"is_offloaded_bp\": {\n \"type\": \"bool\",\n \"id\": 4\n }\n }\n },\n \"MoneroTransactionSetOutputAck\": {\n \"fields\": {\n \"tx_out\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"vouti_hmac\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 3\n },\n \"out_pk\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"ecdh_info\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n },\n \"MoneroTransactionAllOutSetRequest\": {\n \"fields\": {\n \"rsig_data\": {\n \"type\": \"MoneroTransactionRsigData\",\n \"id\": 1\n }\n }\n },\n \"MoneroTransactionAllOutSetAck\": {\n \"fields\": {\n \"extra\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"tx_prefix_hash\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"rv\": {\n \"type\": \"MoneroRingCtSig\",\n \"id\": 4\n },\n \"full_message_hash\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"MoneroRingCtSig\": {\n \"fields\": {\n \"txn_fee\": {\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"message\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"rv_type\": {\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"MoneroTransactionSignInputRequest\": {\n \"fields\": {\n \"src_entr\": {\n \"type\": \"MoneroTransactionSourceEntry\",\n \"id\": 1\n },\n \"vini\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"vini_hmac\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"pseudo_out\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"pseudo_out_hmac\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"pseudo_out_alpha\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"spend_key\": {\n \"type\": \"bytes\",\n \"id\": 7\n },\n \"orig_idx\": {\n \"type\": \"uint32\",\n \"id\": 8\n }\n }\n },\n \"MoneroTransactionSignInputAck\": {\n \"fields\": {\n \"signature\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"pseudo_out\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"MoneroTransactionFinalRequest\": {\n \"fields\": {}\n },\n \"MoneroTransactionFinalAck\": {\n \"fields\": {\n \"cout_key\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"salt\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"rand_mult\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"tx_enc_keys\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"opening_key\": {\n \"type\": \"bytes\",\n \"id\": 5\n }\n }\n },\n \"MoneroKeyImageExportInitRequest\": {\n \"fields\": {\n \"num\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 4,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n },\n \"subs\": {\n \"rule\": \"repeated\",\n \"type\": \"MoneroSubAddressIndicesList\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"MoneroSubAddressIndicesList\": {\n \"fields\": {\n \"account\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 1\n },\n \"minor_indices\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n }\n }\n }\n }\n },\n \"MoneroKeyImageExportInitAck\": {\n \"fields\": {}\n },\n \"MoneroKeyImageSyncStepRequest\": {\n \"fields\": {\n \"tdis\": {\n \"rule\": \"repeated\",\n \"type\": \"MoneroTransferDetails\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"MoneroTransferDetails\": {\n \"fields\": {\n \"out_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"tx_pub_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"additional_tx_pub_keys\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"internal_output_index\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"sub_addr_major\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"sub_addr_minor\": {\n \"type\": \"uint32\",\n \"id\": 6\n }\n }\n }\n }\n },\n \"MoneroKeyImageSyncStepAck\": {\n \"fields\": {\n \"kis\": {\n \"rule\": \"repeated\",\n \"type\": \"MoneroExportedKeyImage\",\n \"id\": 1\n }\n },\n \"nested\": {\n \"MoneroExportedKeyImage\": {\n \"fields\": {\n \"iv\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"blob\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"MoneroKeyImageSyncFinalRequest\": {\n \"fields\": {}\n },\n \"MoneroKeyImageSyncFinalAck\": {\n \"fields\": {\n \"enc_key\": {\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"MoneroGetTxKeyRequest\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 2,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n },\n \"salt1\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"salt2\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"tx_enc_keys\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"tx_prefix_hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"reason\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"view_public_key\": {\n \"type\": \"bytes\",\n \"id\": 8\n }\n }\n },\n \"MoneroGetTxKeyAck\": {\n \"fields\": {\n \"salt\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"tx_keys\": {\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"tx_derivations\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"MoneroLiveRefreshStartRequest\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_type\": {\n \"type\": \"MoneroNetworkType\",\n \"id\": 2,\n \"options\": {\n \"default\": \"MAINNET\"\n }\n }\n }\n },\n \"MoneroLiveRefreshStartAck\": {\n \"fields\": {}\n },\n \"MoneroLiveRefreshStepRequest\": {\n \"fields\": {\n \"out_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"recv_deriv\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"real_out_idx\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"sub_addr_major\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"sub_addr_minor\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n }\n }\n },\n \"MoneroLiveRefreshStepAck\": {\n \"fields\": {\n \"salt\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"key_image\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"MoneroLiveRefreshFinalRequest\": {\n \"fields\": {}\n },\n \"MoneroLiveRefreshFinalAck\": {\n \"fields\": {}\n },\n \"DebugMoneroDiagRequest\": {\n \"fields\": {\n \"ins\": {\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"p1\": {\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"p2\": {\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"pd\": {\n \"rule\": \"repeated\",\n \"type\": \"uint64\",\n \"id\": 4,\n \"options\": {\n \"packed\": false\n }\n },\n \"data1\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"data2\": {\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"DebugMoneroDiagAck\": {\n \"fields\": {\n \"ins\": {\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"p1\": {\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"p2\": {\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"pd\": {\n \"rule\": \"repeated\",\n \"type\": \"uint64\",\n \"id\": 4,\n \"options\": {\n \"packed\": false\n }\n },\n \"data1\": {\n \"type\": \"bytes\",\n \"id\": 5\n },\n \"data2\": {\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"NEMGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network\": {\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"default\": 104\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 3\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 4\n }\n }\n },\n \"NEMAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"NEMSignTx\": {\n \"fields\": {\n \"transaction\": {\n \"rule\": \"required\",\n \"type\": \"NEMTransactionCommon\",\n \"id\": 1\n },\n \"multisig\": {\n \"type\": \"NEMTransactionCommon\",\n \"id\": 2\n },\n \"transfer\": {\n \"type\": \"NEMTransfer\",\n \"id\": 3\n },\n \"cosigning\": {\n \"type\": \"bool\",\n \"id\": 4\n },\n \"provision_namespace\": {\n \"type\": \"NEMProvisionNamespace\",\n \"id\": 5\n },\n \"mosaic_creation\": {\n \"type\": \"NEMMosaicCreation\",\n \"id\": 6\n },\n \"supply_change\": {\n \"type\": \"NEMMosaicSupplyChange\",\n \"id\": 7\n },\n \"aggregate_modification\": {\n \"type\": \"NEMAggregateModification\",\n \"id\": 8\n },\n \"importance_transfer\": {\n \"type\": \"NEMImportanceTransfer\",\n \"id\": 9\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 10\n }\n },\n \"nested\": {\n \"NEMTransactionCommon\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network\": {\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"default\": 104\n }\n },\n \"timestamp\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"deadline\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"signer\": {\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"NEMTransfer\": {\n \"fields\": {\n \"recipient\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"payload\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"public_key\": {\n \"type\": \"bytes\",\n \"id\": 4\n },\n \"mosaics\": {\n \"rule\": \"repeated\",\n \"type\": \"NEMMosaic\",\n \"id\": 5\n }\n },\n \"nested\": {\n \"NEMMosaic\": {\n \"fields\": {\n \"namespace\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mosaic\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"quantity\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"NEMProvisionNamespace\": {\n \"fields\": {\n \"namespace\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"parent\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"sink\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n }\n }\n },\n \"NEMMosaicCreation\": {\n \"fields\": {\n \"definition\": {\n \"rule\": \"required\",\n \"type\": \"NEMMosaicDefinition\",\n \"id\": 1\n },\n \"sink\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n }\n },\n \"nested\": {\n \"NEMMosaicDefinition\": {\n \"fields\": {\n \"name\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"ticker\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"namespace\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"mosaic\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"divisibility\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"levy\": {\n \"type\": \"NEMMosaicLevy\",\n \"id\": 6\n },\n \"fee\": {\n \"type\": \"uint64\",\n \"id\": 7\n },\n \"levy_address\": {\n \"type\": \"string\",\n \"id\": 8\n },\n \"levy_namespace\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"levy_mosaic\": {\n \"type\": \"string\",\n \"id\": 10\n },\n \"supply\": {\n \"type\": \"uint64\",\n \"id\": 11\n },\n \"mutable_supply\": {\n \"type\": \"bool\",\n \"id\": 12\n },\n \"transferable\": {\n \"type\": \"bool\",\n \"id\": 13\n },\n \"description\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 14\n },\n \"networks\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 15,\n \"options\": {\n \"packed\": false\n }\n }\n },\n \"nested\": {\n \"NEMMosaicLevy\": {\n \"values\": {\n \"MosaicLevy_Absolute\": 1,\n \"MosaicLevy_Percentile\": 2\n }\n }\n }\n }\n }\n },\n \"NEMMosaicSupplyChange\": {\n \"fields\": {\n \"namespace\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mosaic\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"NEMSupplyChangeType\",\n \"id\": 3\n },\n \"delta\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n }\n },\n \"nested\": {\n \"NEMSupplyChangeType\": {\n \"values\": {\n \"SupplyChange_Increase\": 1,\n \"SupplyChange_Decrease\": 2\n }\n }\n }\n },\n \"NEMAggregateModification\": {\n \"fields\": {\n \"modifications\": {\n \"rule\": \"repeated\",\n \"type\": \"NEMCosignatoryModification\",\n \"id\": 1\n },\n \"relative_change\": {\n \"type\": \"sint32\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"NEMCosignatoryModification\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"NEMModificationType\",\n \"id\": 1\n },\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"NEMModificationType\": {\n \"values\": {\n \"CosignatoryModification_Add\": 1,\n \"CosignatoryModification_Delete\": 2\n }\n }\n }\n }\n }\n },\n \"NEMImportanceTransfer\": {\n \"fields\": {\n \"mode\": {\n \"rule\": \"required\",\n \"type\": \"NEMImportanceTransferMode\",\n \"id\": 1\n },\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"NEMImportanceTransferMode\": {\n \"values\": {\n \"ImportanceTransfer_Activate\": 1,\n \"ImportanceTransfer_Deactivate\": 2\n }\n }\n }\n }\n }\n },\n \"NEMSignedTx\": {\n \"fields\": {\n \"data\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"NEMDecryptMessage\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"network\": {\n \"type\": \"uint32\",\n \"id\": 2\n },\n \"public_key\": {\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"payload\": {\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"NEMDecryptedMessage\": {\n \"fields\": {\n \"payload\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"RippleGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"RippleAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"RippleSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"flags\": {\n \"type\": \"uint32\",\n \"id\": 3,\n \"options\": {\n \"default\": 0\n }\n },\n \"sequence\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"last_ledger_sequence\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"payment\": {\n \"rule\": \"required\",\n \"type\": \"RipplePayment\",\n \"id\": 6\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 7\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 8\n }\n },\n \"nested\": {\n \"RipplePayment\": {\n \"fields\": {\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 1\n },\n \"destination\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"destination_tag\": {\n \"type\": \"uint32\",\n \"id\": 3\n }\n }\n }\n }\n },\n \"RippleSignedTx\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"serialized_tx\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"SolanaGetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n }\n }\n },\n \"SolanaPublicKey\": {\n \"fields\": {\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"SolanaGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"SolanaAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"SolanaTxTokenAccountInfo\": {\n \"fields\": {\n \"base_address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"token_program\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"token_mint\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"token_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n }\n }\n },\n \"SolanaTxAdditionalInfo\": {\n \"fields\": {\n \"token_accounts_infos\": {\n \"rule\": \"repeated\",\n \"type\": \"SolanaTxTokenAccountInfo\",\n \"id\": 1\n },\n \"encoded_token\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"SolanaSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"serialized_tx\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"additional_info\": {\n \"type\": \"SolanaTxAdditionalInfo\",\n \"id\": 3\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 4\n }\n }\n },\n \"SolanaTxSignature\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n }\n }\n },\n \"StellarAssetType\": {\n \"values\": {\n \"NATIVE\": 0,\n \"ALPHANUM4\": 1,\n \"ALPHANUM12\": 2\n }\n },\n \"StellarAsset\": {\n \"fields\": {\n \"type\": {\n \"rule\": \"required\",\n \"type\": \"StellarAssetType\",\n \"id\": 1\n },\n \"code\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"issuer\": {\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"StellarGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"StellarAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"StellarSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 2,\n \"options\": {\n \"packed\": false\n }\n },\n \"network_passphrase\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n },\n \"source_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"sequence_number\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"timebounds_start\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"timebounds_end\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 9\n },\n \"memo_type\": {\n \"rule\": \"required\",\n \"type\": \"StellarMemoType\",\n \"id\": 10\n },\n \"memo_text\": {\n \"type\": \"string\",\n \"id\": 11\n },\n \"memo_id\": {\n \"type\": \"uint64\",\n \"id\": 12\n },\n \"memo_hash\": {\n \"type\": \"bytes\",\n \"id\": 13\n },\n \"num_operations\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 14\n },\n \"payment_req\": {\n \"type\": \"PaymentRequest\",\n \"id\": 15\n }\n },\n \"nested\": {\n \"StellarMemoType\": {\n \"values\": {\n \"NONE\": 0,\n \"TEXT\": 1,\n \"ID\": 2,\n \"HASH\": 3,\n \"RETURN\": 4\n }\n }\n }\n },\n \"StellarTxOpRequest\": {\n \"fields\": {}\n },\n \"StellarPaymentOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"destination_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 3\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 4\n }\n }\n },\n \"StellarCreateAccountOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"new_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"starting_balance\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 3\n }\n }\n },\n \"StellarPathPaymentStrictReceiveOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"send_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"send_max\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 3\n },\n \"destination_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"destination_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 5\n },\n \"destination_amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 6\n },\n \"paths\": {\n \"rule\": \"repeated\",\n \"type\": \"StellarAsset\",\n \"id\": 7\n }\n }\n },\n \"StellarPathPaymentStrictSendOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"send_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"send_amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 3\n },\n \"destination_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 4\n },\n \"destination_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 5\n },\n \"destination_min\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 6\n },\n \"paths\": {\n \"rule\": \"repeated\",\n \"type\": \"StellarAsset\",\n \"id\": 7\n }\n }\n },\n \"StellarManageSellOfferOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"selling_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"buying_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 3\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 4\n },\n \"price_n\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"price_d\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"offer_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 7\n }\n }\n },\n \"StellarManageBuyOfferOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"selling_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"buying_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 3\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 4\n },\n \"price_n\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"price_d\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"offer_id\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 7\n }\n }\n },\n \"StellarCreatePassiveSellOfferOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"selling_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"buying_asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 3\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"sint64\",\n \"id\": 4\n },\n \"price_n\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"price_d\": {\n \"rule\": \"required\",\n \"type\": \"uint32\",\n \"id\": 6\n }\n }\n },\n \"StellarSetOptionsOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"inflation_destination_account\": {\n \"type\": \"string\",\n \"id\": 2\n },\n \"clear_flags\": {\n \"type\": \"uint32\",\n \"id\": 3\n },\n \"set_flags\": {\n \"type\": \"uint32\",\n \"id\": 4\n },\n \"master_weight\": {\n \"type\": \"uint32\",\n \"id\": 5\n },\n \"low_threshold\": {\n \"type\": \"uint32\",\n \"id\": 6\n },\n \"medium_threshold\": {\n \"type\": \"uint32\",\n \"id\": 7\n },\n \"high_threshold\": {\n \"type\": \"uint32\",\n \"id\": 8\n },\n \"home_domain\": {\n \"type\": \"string\",\n \"id\": 9\n },\n \"signer_type\": {\n \"type\": \"StellarSignerType\",\n \"id\": 10\n },\n \"signer_key\": {\n \"type\": \"bytes\",\n \"id\": 11\n },\n \"signer_weight\": {\n \"type\": \"uint32\",\n \"id\": 12\n }\n },\n \"nested\": {\n \"StellarSignerType\": {\n \"values\": {\n \"ACCOUNT\": 0,\n \"PRE_AUTH\": 1,\n \"HASH\": 2\n }\n }\n }\n },\n \"StellarChangeTrustOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"asset\": {\n \"rule\": \"required\",\n \"type\": \"StellarAsset\",\n \"id\": 2\n },\n \"limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n }\n }\n },\n \"StellarAllowTrustOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"trusted_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"asset_type\": {\n \"rule\": \"required\",\n \"type\": \"StellarAssetType\",\n \"id\": 3\n },\n \"asset_code\": {\n \"type\": \"string\",\n \"id\": 4\n },\n \"is_authorized\": {\n \"rule\": \"required\",\n \"type\": \"bool\",\n \"id\": 5\n }\n }\n },\n \"StellarAccountMergeOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"destination_account\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n }\n }\n },\n \"StellarManageDataOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 2\n },\n \"value\": {\n \"type\": \"bytes\",\n \"id\": 3\n }\n }\n },\n \"StellarBumpSequenceOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"bump_to\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n },\n \"StellarClaimClaimableBalanceOp\": {\n \"fields\": {\n \"source_account\": {\n \"type\": \"string\",\n \"id\": 1\n },\n \"balance_id\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"StellarSignedTx\": {\n \"fields\": {\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"TezosGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"TezosAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"TezosGetPublicKey\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"TezosPublicKey\": {\n \"fields\": {\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n }\n }\n },\n \"TezosSignTx\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"branch\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"reveal\": {\n \"type\": \"TezosRevealOp\",\n \"id\": 3\n },\n \"transaction\": {\n \"type\": \"TezosTransactionOp\",\n \"id\": 4\n },\n \"origination\": {\n \"type\": \"TezosOriginationOp\",\n \"id\": 5\n },\n \"delegation\": {\n \"type\": \"TezosDelegationOp\",\n \"id\": 6\n },\n \"proposal\": {\n \"type\": \"TezosProposalOp\",\n \"id\": 7\n },\n \"ballot\": {\n \"type\": \"TezosBallotOp\",\n \"id\": 8\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 9\n }\n },\n \"nested\": {\n \"TezosContractID\": {\n \"fields\": {\n \"tag\": {\n \"rule\": \"required\",\n \"type\": \"TezosContractType\",\n \"id\": 1\n },\n \"hash\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n }\n },\n \"nested\": {\n \"TezosContractType\": {\n \"values\": {\n \"Implicit\": 0,\n \"Originated\": 1\n }\n }\n }\n },\n \"TezosRevealOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 7\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"counter\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"storage_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"public_key\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"TezosTransactionOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 9\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"counter\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"storage_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 6\n },\n \"destination\": {\n \"rule\": \"required\",\n \"type\": \"TezosContractID\",\n \"id\": 7\n },\n \"parameters\": {\n \"type\": \"bytes\",\n \"id\": 8\n },\n \"parameters_manager\": {\n \"type\": \"TezosParametersManager\",\n \"id\": 10\n }\n },\n \"nested\": {\n \"TezosParametersManager\": {\n \"fields\": {\n \"set_delegate\": {\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"cancel_delegate\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"transfer\": {\n \"type\": \"TezosManagerTransfer\",\n \"id\": 3\n }\n },\n \"nested\": {\n \"TezosManagerTransfer\": {\n \"fields\": {\n \"destination\": {\n \"rule\": \"required\",\n \"type\": \"TezosContractID\",\n \"id\": 1\n },\n \"amount\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n }\n }\n }\n }\n }\n }\n },\n \"TezosOriginationOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 12\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"counter\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"storage_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"manager_pubkey\": {\n \"type\": \"bytes\",\n \"id\": 6\n },\n \"balance\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 7\n },\n \"spendable\": {\n \"type\": \"bool\",\n \"id\": 8\n },\n \"delegatable\": {\n \"type\": \"bool\",\n \"id\": 9\n },\n \"delegate\": {\n \"type\": \"bytes\",\n \"id\": 10\n },\n \"script\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 11\n }\n }\n },\n \"TezosDelegationOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 7\n },\n \"fee\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"counter\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 3\n },\n \"gas_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 4\n },\n \"storage_limit\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 5\n },\n \"delegate\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 6\n }\n }\n },\n \"TezosProposalOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"period\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"proposals\": {\n \"rule\": \"repeated\",\n \"type\": \"bytes\",\n \"id\": 4\n }\n }\n },\n \"TezosBallotOp\": {\n \"fields\": {\n \"source\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 1\n },\n \"period\": {\n \"rule\": \"required\",\n \"type\": \"uint64\",\n \"id\": 2\n },\n \"proposal\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 3\n },\n \"ballot\": {\n \"rule\": \"required\",\n \"type\": \"TezosBallotType\",\n \"id\": 4\n }\n },\n \"nested\": {\n \"TezosBallotType\": {\n \"values\": {\n \"Yay\": 0,\n \"Nay\": 1,\n \"Pass\": 2\n }\n }\n }\n }\n }\n },\n \"TezosSignedTx\": {\n \"fields\": {\n \"signature\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"sig_op_contents\": {\n \"rule\": \"required\",\n \"type\": \"bytes\",\n \"id\": 2\n },\n \"operation_hash\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 3\n }\n }\n },\n \"TronGetAddress\": {\n \"fields\": {\n \"address_n\": {\n \"rule\": \"repeated\",\n \"type\": \"uint32\",\n \"id\": 1,\n \"options\": {\n \"packed\": false\n }\n },\n \"show_display\": {\n \"type\": \"bool\",\n \"id\": 2\n },\n \"chunkify\": {\n \"type\": \"bool\",\n \"id\": 3\n }\n }\n },\n \"TronAddress\": {\n \"fields\": {\n \"address\": {\n \"rule\": \"required\",\n \"type\": \"string\",\n \"id\": 1\n },\n \"mac\": {\n \"type\": \"bytes\",\n \"id\": 2\n }\n }\n },\n \"MessageType\": {\n \"options\": {\n \"(has_bitcoin_only_values)\": true,\n \"(wire_enum)\": true\n },\n \"values\": {\n \"Initialize\": 0,\n \"Ping\": 1,\n \"Success\": 2,\n \"Failure\": 3,\n \"ChangePin\": 4,\n \"WipeDevice\": 5,\n \"GetEntropy\": 9,\n \"Entropy\": 10,\n \"LoadDevice\": 13,\n \"ResetDevice\": 14,\n \"SetBusy\": 16,\n \"Features\": 17,\n \"PinMatrixRequest\": 18,\n \"PinMatrixAck\": 19,\n \"Cancel\": 20,\n \"LockDevice\": 24,\n \"ApplySettings\": 25,\n \"ButtonRequest\": 26,\n \"ButtonAck\": 27,\n \"ApplyFlags\": 28,\n \"GetNonce\": 31,\n \"Nonce\": 33,\n \"BackupDevice\": 34,\n \"EntropyRequest\": 35,\n \"EntropyAck\": 36,\n \"PaymentRequest\": 37,\n \"EntropyCheckReady\": 994,\n \"EntropyCheckContinue\": 995,\n \"PassphraseRequest\": 41,\n \"PassphraseAck\": 42,\n \"RecoveryDevice\": 45,\n \"WordRequest\": 46,\n \"WordAck\": 47,\n \"GetFeatures\": 55,\n \"SdProtect\": 79,\n \"ChangeWipeCode\": 82,\n \"EndSession\": 83,\n \"DoPreauthorized\": 84,\n \"PreauthorizedRequest\": 85,\n \"CancelAuthorization\": 86,\n \"RebootToBootloader\": 87,\n \"GetFirmwareHash\": 88,\n \"FirmwareHash\": 89,\n \"UnlockPath\": 93,\n \"UnlockedPathRequest\": 94,\n \"ShowDeviceTutorial\": 95,\n \"UnlockBootloader\": 96,\n \"AuthenticateDevice\": 97,\n \"AuthenticityProof\": 98,\n \"ChangeLanguage\": 990,\n \"DataChunkRequest\": 991,\n \"DataChunkAck\": 992,\n \"SetBrightness\": 993,\n \"GetSerialNumber\": 996,\n \"SerialNumber\": 997,\n \"SetU2FCounter\": 63,\n \"GetNextU2FCounter\": 80,\n \"NextU2FCounter\": 81,\n \"Deprecated_PassphraseStateRequest\": 77,\n \"Deprecated_PassphraseStateAck\": 78,\n \"FirmwareErase\": 6,\n \"FirmwareUpload\": 7,\n \"FirmwareRequest\": 8,\n \"ProdTestT1\": 32,\n \"BleUnpair\": 8001,\n \"GetPublicKey\": 11,\n \"PublicKey\": 12,\n \"SignTx\": 15,\n \"TxRequest\": 21,\n \"TxAck\": 22,\n \"GetAddress\": 29,\n \"Address\": 30,\n \"SignMessage\": 38,\n \"VerifyMessage\": 39,\n \"MessageSignature\": 40,\n \"GetOwnershipId\": 43,\n \"OwnershipId\": 44,\n \"GetOwnershipProof\": 49,\n \"OwnershipProof\": 50,\n \"AuthorizeCoinJoin\": 51,\n \"CipherKeyValue\": 23,\n \"CipheredKeyValue\": 48,\n \"SignIdentity\": 53,\n \"SignedIdentity\": 54,\n \"GetECDHSessionKey\": 61,\n \"ECDHSessionKey\": 62,\n \"PaymentNotification\": 52,\n \"DebugLinkDecision\": 100,\n \"DebugLinkGetState\": 101,\n \"DebugLinkState\": 102,\n \"DebugLinkStop\": 103,\n \"DebugLinkLog\": 104,\n \"DebugLinkMemoryRead\": 110,\n \"DebugLinkMemory\": 111,\n \"DebugLinkMemoryWrite\": 112,\n \"DebugLinkFlashErase\": 113,\n \"DebugLinkLayout\": 9001,\n \"DebugLinkReseedRandom\": 9002,\n \"DebugLinkRecordScreen\": 9003,\n \"DebugLinkEraseSdCard\": 9005,\n \"DebugLinkWatchLayout\": 9006,\n \"DebugLinkResetDebugEvents\": 9007,\n \"DebugLinkOptigaSetSecMax\": 9008,\n \"DebugLinkGetGcInfo\": 9009,\n \"DebugLinkGcInfo\": 9010,\n \"DebugLinkGetPairingInfo\": 9011,\n \"DebugLinkPairingInfo\": 9012,\n \"EthereumGetPublicKey\": 450,\n \"EthereumPublicKey\": 451,\n \"EthereumGetAddress\": 56,\n \"EthereumAddress\": 57,\n \"EthereumSignTx\": 58,\n \"EthereumSignTxEIP1559\": 452,\n \"EthereumTxRequest\": 59,\n \"EthereumTxAck\": 60,\n \"EthereumSignMessage\": 64,\n \"EthereumVerifyMessage\": 65,\n \"EthereumMessageSignature\": 66,\n \"EthereumSignTypedData\": 464,\n \"EthereumTypedDataStructRequest\": 465,\n \"EthereumTypedDataStructAck\": 466,\n \"EthereumTypedDataValueRequest\": 467,\n \"EthereumTypedDataValueAck\": 468,\n \"EthereumTypedDataSignature\": 469,\n \"EthereumSignTypedHash\": 470,\n \"NEMGetAddress\": 67,\n \"NEMAddress\": 68,\n \"NEMSignTx\": 69,\n \"NEMSignedTx\": 70,\n \"NEMDecryptMessage\": 75,\n \"NEMDecryptedMessage\": 76,\n \"TezosGetAddress\": 150,\n \"TezosAddress\": 151,\n \"TezosSignTx\": 152,\n \"TezosSignedTx\": 153,\n \"TezosGetPublicKey\": 154,\n \"TezosPublicKey\": 155,\n \"StellarSignTx\": 202,\n \"StellarTxOpRequest\": 203,\n \"StellarGetAddress\": 207,\n \"StellarAddress\": 208,\n \"StellarCreateAccountOp\": 210,\n \"StellarPaymentOp\": 211,\n \"StellarPathPaymentStrictReceiveOp\": 212,\n \"StellarManageSellOfferOp\": 213,\n \"StellarCreatePassiveSellOfferOp\": 214,\n \"StellarSetOptionsOp\": 215,\n \"StellarChangeTrustOp\": 216,\n \"StellarAllowTrustOp\": 217,\n \"StellarAccountMergeOp\": 218,\n \"StellarManageDataOp\": 220,\n \"StellarBumpSequenceOp\": 221,\n \"StellarManageBuyOfferOp\": 222,\n \"StellarPathPaymentStrictSendOp\": 223,\n \"StellarClaimClaimableBalanceOp\": 225,\n \"StellarSignedTx\": 230,\n \"CardanoGetPublicKey\": 305,\n \"CardanoPublicKey\": 306,\n \"CardanoGetAddress\": 307,\n \"CardanoAddress\": 308,\n \"CardanoTxItemAck\": 313,\n \"CardanoTxAuxiliaryDataSupplement\": 314,\n \"CardanoTxWitnessRequest\": 315,\n \"CardanoTxWitnessResponse\": 316,\n \"CardanoTxHostAck\": 317,\n \"CardanoTxBodyHash\": 318,\n \"CardanoSignTxFinished\": 319,\n \"CardanoSignTxInit\": 320,\n \"CardanoTxInput\": 321,\n \"CardanoTxOutput\": 322,\n \"CardanoAssetGroup\": 323,\n \"CardanoToken\": 324,\n \"CardanoTxCertificate\": 325,\n \"CardanoTxWithdrawal\": 326,\n \"CardanoTxAuxiliaryData\": 327,\n \"CardanoPoolOwner\": 328,\n \"CardanoPoolRelayParameters\": 329,\n \"CardanoGetNativeScriptHash\": 330,\n \"CardanoNativeScriptHash\": 331,\n \"CardanoTxMint\": 332,\n \"CardanoTxCollateralInput\": 333,\n \"CardanoTxRequiredSigner\": 334,\n \"CardanoTxInlineDatumChunk\": 335,\n \"CardanoTxReferenceScriptChunk\": 336,\n \"CardanoTxReferenceInput\": 337,\n \"CardanoSignMessageInit\": 338,\n \"CardanoMessageDataRequest\": 339,\n \"CardanoMessageDataResponse\": 340,\n \"CardanoMessageSignature\": 341,\n \"RippleGetAddress\": 400,\n \"RippleAddress\": 401,\n \"RippleSignTx\": 402,\n \"RippleSignedTx\": 403,\n \"MoneroTransactionInitRequest\": 501,\n \"MoneroTransactionInitAck\": 502,\n \"MoneroTransactionSetInputRequest\": 503,\n \"MoneroTransactionSetInputAck\": 504,\n \"MoneroTransactionInputViniRequest\": 507,\n \"MoneroTransactionInputViniAck\": 508,\n \"MoneroTransactionAllInputsSetRequest\": 509,\n \"MoneroTransactionAllInputsSetAck\": 510,\n \"MoneroTransactionSetOutputRequest\": 511,\n \"MoneroTransactionSetOutputAck\": 512,\n \"MoneroTransactionAllOutSetRequest\": 513,\n \"MoneroTransactionAllOutSetAck\": 514,\n \"MoneroTransactionSignInputRequest\": 515,\n \"MoneroTransactionSignInputAck\": 516,\n \"MoneroTransactionFinalRequest\": 517,\n \"MoneroTransactionFinalAck\": 518,\n \"MoneroKeyImageExportInitRequest\": 530,\n \"MoneroKeyImageExportInitAck\": 531,\n \"MoneroKeyImageSyncStepRequest\": 532,\n \"MoneroKeyImageSyncStepAck\": 533,\n \"MoneroKeyImageSyncFinalRequest\": 534,\n \"MoneroKeyImageSyncFinalAck\": 535,\n \"MoneroGetAddress\": 540,\n \"MoneroAddress\": 541,\n \"MoneroGetWatchKey\": 542,\n \"MoneroWatchKey\": 543,\n \"DebugMoneroDiagRequest\": 546,\n \"DebugMoneroDiagAck\": 547,\n \"MoneroGetTxKeyRequest\": 550,\n \"MoneroGetTxKeyAck\": 551,\n \"MoneroLiveRefreshStartRequest\": 552,\n \"MoneroLiveRefreshStartAck\": 553,\n \"MoneroLiveRefreshStepRequest\": 554,\n \"MoneroLiveRefreshStepAck\": 555,\n \"MoneroLiveRefreshFinalRequest\": 556,\n \"MoneroLiveRefreshFinalAck\": 557,\n \"EosGetPublicKey\": 600,\n \"EosPublicKey\": 601,\n \"EosSignTx\": 602,\n \"EosTxActionRequest\": 603,\n \"EosTxActionAck\": 604,\n \"EosSignedTx\": 605,\n \"SolanaGetPublicKey\": 900,\n \"SolanaPublicKey\": 901,\n \"SolanaGetAddress\": 902,\n \"SolanaAddress\": 903,\n \"SolanaSignTx\": 904,\n \"SolanaTxSignature\": 905,\n \"EvoluGetNode\": 2100,\n \"EvoluNode\": 2101,\n \"EvoluSignRegistrationRequest\": 2102,\n \"EvoluRegistrationRequest\": 2103,\n \"EvoluGetDelegatedIdentityKey\": 2104,\n \"EvoluDelegatedIdentityKey\": 2105,\n \"TronGetAddress\": 2200,\n \"TronAddress\": 2201\n }\n }\n }\n}\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDeviceInBootloaderMode = void 0;\nconst isDeviceInBootloaderMode = device => !!device?.features?.bootloader_mode;\nexports.isDeviceInBootloaderMode = isDeviceInBootloaderMode;\n//# sourceMappingURL=modeUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FirmwareType = void 0;\nvar FirmwareType;\n(function (FirmwareType) {\n FirmwareType[\"BitcoinOnly\"] = \"bitcoin-only\";\n FirmwareType[\"Universal\"] = \"universal\";\n})(FirmwareType || (exports.FirmwareType = FirmwareType = {}));\n//# sourceMappingURL=types.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isBitcoinOnlyDevice = exports.hasBitcoinOnlyFirmware = exports.getFirmwareVersion = exports.getFirmwareVersionArray = exports.getFirmwareRevision = exports.getFirmwareSource = void 0;\nconst modeUtils_1 = require(\"./modeUtils\");\nconst types_1 = require(\"./types\");\nconst getFirmwareSource = device => {\n if (device?.mode === 'bootloader') {\n return 'NA - bootloader';\n }\n if (device?.authenticityChecks?.firmwareRevision?.success && device?.authenticityChecks?.firmwareHash?.success) {\n return 'official';\n }\n return 'unknown';\n};\nexports.getFirmwareSource = getFirmwareSource;\nconst getFirmwareRevision = device => device?.features?.revision || '';\nexports.getFirmwareRevision = getFirmwareRevision;\nconst getFirmwareVersionArray = device => {\n if (!device?.features) {\n return null;\n }\n const {\n features\n } = device;\n if ((0, modeUtils_1.isDeviceInBootloaderMode)(device)) {\n return features.fw_major ? [features.fw_major, features.fw_minor, features.fw_patch] : null;\n }\n return [features.major_version, features.minor_version, features.patch_version];\n};\nexports.getFirmwareVersionArray = getFirmwareVersionArray;\nconst getFirmwareVersion = device => {\n if (!device?.features) {\n return '';\n }\n const {\n features\n } = device;\n if ((0, modeUtils_1.isDeviceInBootloaderMode)(device)) {\n return features.fw_major ? `${features.fw_major}.${features.fw_minor}.${features.fw_patch}` : '';\n }\n return `${features.major_version}.${features.minor_version}.${features.patch_version}`;\n};\nexports.getFirmwareVersion = getFirmwareVersion;\nconst hasBitcoinOnlyFirmware = device => device?.firmwareType === types_1.FirmwareType.BitcoinOnly;\nexports.hasBitcoinOnlyFirmware = hasBitcoinOnlyFirmware;\nconst isBitcoinOnlyDevice = device => !!device?.features?.unit_btconly && device?.firmwareType !== types_1.FirmwareType.Universal;\nexports.isBitcoinOnlyDevice = isBitcoinOnlyDevice;\n//# sourceMappingURL=firmwareUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBootloaderVersion = exports.getBootloaderHash = void 0;\nconst modeUtils_1 = require(\"./modeUtils\");\nconst getBootloaderHash = device => device?.features?.bootloader_hash || '';\nexports.getBootloaderHash = getBootloaderHash;\nconst getBootloaderVersion = device => {\n if (!device?.features) {\n return '';\n }\n const {\n features\n } = device;\n if ((0, modeUtils_1.isDeviceInBootloaderMode)(device) && features.major_version) {\n return `${features.major_version}.${features.minor_version}.${features.patch_version}`;\n }\n return '';\n};\nexports.getBootloaderVersion = getBootloaderVersion;\n//# sourceMappingURL=bootloaderUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceModelInternal = void 0;\nvar DeviceModelInternal;\n(function (DeviceModelInternal) {\n DeviceModelInternal[\"T1B1\"] = \"T1B1\";\n DeviceModelInternal[\"T2T1\"] = \"T2T1\";\n DeviceModelInternal[\"T2B1\"] = \"T2B1\";\n DeviceModelInternal[\"T3B1\"] = \"T3B1\";\n DeviceModelInternal[\"T3T1\"] = \"T3T1\";\n DeviceModelInternal[\"T3W1\"] = \"T3W1\";\n DeviceModelInternal[\"UNKNOWN\"] = \"UNKNOWN\";\n})(DeviceModelInternal || (exports.DeviceModelInternal = DeviceModelInternal = {}));\n//# sourceMappingURL=deviceModelInternal.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getNarrowedDeviceModelInternal = void 0;\nconst deviceModelInternal_1 = require(\"./deviceModelInternal\");\nconst getNarrowedDeviceModelInternal = model => model === deviceModelInternal_1.DeviceModelInternal.T2B1 ? deviceModelInternal_1.DeviceModelInternal.T3B1 : model;\nexports.getNarrowedDeviceModelInternal = getNarrowedDeviceModelInternal;\n//# sourceMappingURL=deviceModelInternalUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.models = void 0;\nconst safe3Model = {\n name: 'Trezor Safe 3',\n colors: {\n '1': 'Cosmic Black',\n '2': 'Stellar Silver',\n '3': 'Solar Gold',\n '4': 'Galactic Rose',\n '5': 'Bitcoin Orange'\n }\n};\nexports.models = {\n UNKNOWN: {\n name: 'Unknown',\n colors: safe3Model.colors\n },\n T1B1: {\n name: 'Trezor Model One',\n colors: {}\n },\n T2T1: {\n name: 'Trezor Model T',\n colors: {}\n },\n T2B1: safe3Model,\n T3B1: safe3Model,\n T3T1: {\n name: 'Trezor Safe 5',\n colors: {\n '1': 'Black Graphite',\n '2': 'Violet Ore',\n '3': 'Green Beryl',\n '4': 'Bitcoin Orange',\n '5': 'Freedom Edition'\n }\n },\n T3W1: {\n name: 'Trezor Safe 7',\n colors: {\n '1': 'Charcoal Black',\n '2': 'Obsidian Green',\n '3': 'Bitcoin Orange'\n },\n frontColors: {\n '1': '1',\n '2': '2',\n '3': '1'\n }\n }\n};\n//# sourceMappingURL=models.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDeviceColorVariant = exports.normalizeDeviceColorVariant = void 0;\nconst normalizeDeviceColorVariant = colorVariant => colorVariant || 1;\nexports.normalizeDeviceColorVariant = normalizeDeviceColorVariant;\nconst getDeviceColorVariant = device => (0, exports.normalizeDeviceColorVariant)(device?.features?.unit_color ?? device?.thp?.properties?.model_variant);\nexports.getDeviceColorVariant = getDeviceColorVariant;\n//# sourceMappingURL=deviceColorUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./firmwareUtils\"), exports);\ntslib_1.__exportStar(require(\"./bootloaderUtils\"), exports);\ntslib_1.__exportStar(require(\"./modeUtils\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./deviceModelInternal\"), exports);\ntslib_1.__exportStar(require(\"./deviceModelInternalUtils\"), exports);\ntslib_1.__exportStar(require(\"./models\"), exports);\ntslib_1.__exportStar(require(\"./deviceColorUtils\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tryLocalAssetRequire = exports.firmwareReleaseConfigAssets = exports.getReleaseAsset = exports.getReleasesAssetByDeviceModelAndFirmwareType = exports.HttpRequestError = void 0;\nconst connect_common_1 = require(\"@trezor/connect-common\");\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nclass HttpRequestError extends Error {\n response;\n constructor(response) {\n const message = `${response.status} while fetching ${response.url}`;\n super(message);\n this.response = response;\n }\n}\nexports.HttpRequestError = HttpRequestError;\nconst getReleasesAssetByDeviceModelAndFirmwareType = (deviceModel, firmwareType) => {\n const firmwareTypeInFileName = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? 'bitcoinonly' : 'universal';\n const availableReleasesRecord = connect_common_1.firmwareAssets?.[deviceModel.toLowerCase()]?.[firmwareTypeInFileName] ?? {};\n return Object.values(availableReleasesRecord).sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1);\n};\nexports.getReleasesAssetByDeviceModelAndFirmwareType = getReleasesAssetByDeviceModelAndFirmwareType;\nconst getReleaseAsset = (deviceModel, version, firmwareType) => {\n const firmwareTypeInFileName = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? 'bitcoinonly' : 'universal';\n const fileName = `${deviceModel.toLowerCase()}-${version.join('.')}-${firmwareTypeInFileName}`;\n const deviceModelLower = deviceModel.toLowerCase();\n const asset = connect_common_1.firmwareAssets?.[deviceModelLower]?.[firmwareTypeInFileName]?.[fileName];\n return asset;\n};\nexports.getReleaseAsset = getReleaseAsset;\nexports.firmwareReleaseConfigAssets = require('@trezor/connect-common/files/firmware/release/releases.v1.json');\nconst tryLocalAssetRequire = url => {\n const fileUrl = url.split('?')[0];\n switch (fileUrl) {\n case './data/coins.json':\n return require('@trezor/connect-common/files/coins.json');\n case './data/coins-eth.json':\n return require('@trezor/connect-common/files/coins-eth.json');\n case './data/messages/messages.json':\n return require('@trezor/protobuf/messages.json');\n }\n return null;\n};\nexports.tryLocalAssetRequire = tryLocalAssetRequire;\n//# sourceMappingURL=assetUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.httpRequest = void 0;\nconst tslib_1 = require(\"tslib\");\nconst cross_fetch_1 = tslib_1.__importDefault(require(\"cross-fetch\"));\nconst assetUtils_1 = require(\"./assetUtils\");\nconst httpRequest = async (url, type = 'text', options) => {\n const init = {\n ...options,\n credentials: 'same-origin'\n };\n const response = await (0, cross_fetch_1.default)(url, init);\n if (response.ok) {\n if (type === 'json') {\n const txt = await response.text();\n return JSON.parse(txt);\n }\n if (type === 'binary') {\n return response.arrayBuffer();\n }\n return response.text();\n }\n throw new assetUtils_1.HttpRequestError(response);\n};\nexports.httpRequest = httpRequest;\n//# sourceMappingURL=assets-browser.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.httpRequest = httpRequest;\nconst tslib_1 = require(\"tslib\");\nconst cross_fetch_1 = tslib_1.__importDefault(require(\"cross-fetch\"));\nconst fs_1 = require(\"fs\");\nconst assetUtils_1 = require(\"./assetUtils\");\nconst assets_browser_1 = require(\"./assets-browser\");\nif (global && typeof global.fetch !== 'function') {\n global.fetch = cross_fetch_1.default;\n}\nfunction httpRequest(url, type, options) {\n const asset = options?.skipLocalForceDownload ? null : (0, assetUtils_1.tryLocalAssetRequire)(url);\n if (!asset) {\n return /^https?/.test(url) ? (0, assets_browser_1.httpRequest)(url, type, options) : fs_1.promises.readFile(url);\n }\n return asset;\n}\n//# sourceMappingURL=assets.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFirmwareCacheUsedForSelectedSource = exports.getFirmwareType = exports.getFirmwareMode = exports.buildIntermediaryFirmwareFileName = exports.buildLocalFirmwareFileName = exports.buildLocalReleaseName = exports.findBestCompatibleRelease = exports.isStrictFeatures = void 0;\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst isStrictFeatures = extFeatures => [1, 2].includes(extFeatures.major_version) && (extFeatures.firmware_present === false || extFeatures.bootloader_mode == null || extFeatures.bootloader_mode === true);\nexports.isStrictFeatures = isStrictFeatures;\nconst findBestCompatibleRelease = (availableFirmwares, currentVesion, checkProperty) => {\n if (!availableFirmwares || availableFirmwares.length === 0) {\n return;\n }\n const currentFirmwareVersion = currentVesion.firmwareVersion;\n const currentBootloaderVersion = currentVesion.bootloaderVersion;\n let versionToCompare = currentFirmwareVersion;\n if (checkProperty === 'min_bootloader_version' && currentBootloaderVersion) {\n versionToCompare = currentBootloaderVersion;\n } else if (checkProperty === 'min_bootloader_version' && currentFirmwareVersion) {\n const currentRelease = availableFirmwares.find(fw => utils_1.versionUtils.isEqual(currentFirmwareVersion, fw.version));\n if (!currentRelease?.bootloader_version) {\n return;\n }\n }\n if (!versionToCompare) {\n return;\n }\n const sortedFirmwares = availableFirmwares.sort((a, b) => utils_1.versionUtils.isNewer(b.version, a.version) ? 1 : -1);\n const compatibleFirmware = sortedFirmwares.find(fw => utils_1.versionUtils.isNewerOrEqual(versionToCompare, fw[checkProperty]));\n return compatibleFirmware;\n};\nexports.findBestCompatibleRelease = findBestCompatibleRelease;\nconst buildLocalFileBaseName = (firmwareType, deviceModel, version) => {\n const firmwareSuffix = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? '-bitcoinonly' : '';\n const model = deviceModel.toLowerCase();\n const versionString = version.join('.');\n return `trezor-${model}-${versionString}${firmwareSuffix}`;\n};\nconst buildLocalReleaseName = (firmwareType, deviceModel, version) => `${buildLocalFileBaseName(firmwareType, deviceModel, version)}.json`;\nexports.buildLocalReleaseName = buildLocalReleaseName;\nconst buildLocalFirmwareFileName = (firmwareType, deviceModel, version) => `${buildLocalFileBaseName(firmwareType, deviceModel, version)}.bin`;\nexports.buildLocalFirmwareFileName = buildLocalFirmwareFileName;\nconst buildIntermediaryFirmwareFileName = (internalModel, version) => `trezor-${internalModel.toLowerCase()}-inter-v${version}.bin`;\nexports.buildIntermediaryFirmwareFileName = buildIntermediaryFirmwareFileName;\nconst getFirmwareMode = features => {\n if (features.bootloader_mode) return 'bootloader';\n if (!features.initialized) return 'initialize';\n if (features.no_backup) return 'seedless';\n return 'normal';\n};\nexports.getFirmwareMode = getFirmwareMode;\nconst getFirmwareType = features => {\n let type = device_utils_1.FirmwareType.Universal;\n if (features.fw_vendor === 'Trezor Bitcoin-only') {\n type = device_utils_1.FirmwareType.BitcoinOnly;\n } else if (features.fw_vendor === 'Trezor') {\n type = device_utils_1.FirmwareType.Universal;\n } else if ((0, exports.getFirmwareMode)(features) !== 'bootloader') {\n type = features.capabilities && features.capabilities.length > 0 && !features.capabilities.includes('Capability_Bitcoin_like') ? device_utils_1.FirmwareType.BitcoinOnly : device_utils_1.FirmwareType.Universal;\n } else if ((0, exports.getFirmwareMode)(features) === 'bootloader' && features.unit_btconly) {\n type = device_utils_1.FirmwareType.BitcoinOnly;\n }\n return type;\n};\nexports.getFirmwareType = getFirmwareType;\nconst isFirmwareCacheUsedForSelectedSource = () => DataManager_1.DataManager.getSettings('firmwareUpdateSource') === 'production';\nexports.isFirmwareCacheUsedForSelectedSource = isFirmwareCacheUsedForSelectedSource;\n//# sourceMappingURL=firmwareUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFirmwareLocation = exports.getFirmwareStatus = exports.getFirmwareReleaseConfigInfo = exports.getReleaseInfo = exports.getCurrentVersion = exports.getLanguage = exports.initializeFirmwareConfig = exports.createRemoteFirmwareConfig = exports.createLocalFirmwareConfig = exports.getReleaseByVersion = exports.getReleaseConfig = exports.getOnlineReleaseByVersion = exports.getBundledRelease = exports.getOnlineFirmwareBaseUrl = void 0;\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst DataManager_1 = require(\"./DataManager\");\nconst assetUtils_1 = require(\"../utils/assetUtils\");\nconst assets_1 = require(\"../utils/assets\");\nconst firmwareUtils_1 = require(\"../utils/firmwareUtils\");\nconst RELEASES_URL_REMOTE_BASE = {\n BASE_URL: 'https://data.trezor.io',\n MIDDLE_PATH: 'firmware'\n};\nconst UNSIGNED_URL_REMOTE_BASE = {\n BASE_URL: 'https://data.trezor.io',\n MIDDLE_PATH: 'dev/firmware/releases/unsigned'\n};\nconst UNSIGNED_STABLE_URL_REMOTE_BASE = {\n BASE_URL: 'https://data.trezor.io',\n MIDDLE_PATH: 'dev/firmware/releases/unsigned-stable'\n};\nconst SIGNED_URL_REMOTE_BASE = {\n BASE_URL: 'https://suite.corp.sldev.cz',\n MIDDLE_PATH: 'firmware/signed'\n};\nconst SIGNED_LOCALHOST = {\n BASE_URL: 'http://localhost:3000',\n MIDDLE_PATH: 'firmware/signed'\n};\nconst UNSIGNED_LOCALHOST = {\n BASE_URL: 'http://localhost:3000',\n MIDDLE_PATH: 'firmware/unsigned'\n};\nconst FIRMWARE_REMOTE_BASE_URLS = {\n production: RELEASES_URL_REMOTE_BASE,\n 'test-unsigned': UNSIGNED_URL_REMOTE_BASE,\n 'test-unsigned-stable': UNSIGNED_STABLE_URL_REMOTE_BASE,\n 'test-signed': SIGNED_URL_REMOTE_BASE,\n 'localhost-unsigned': UNSIGNED_LOCALHOST,\n 'localhost-signed': SIGNED_LOCALHOST\n};\nconst getOnlineFirmwareBaseUrl = () => {\n const firmwareUpdateSource = DataManager_1.DataManager.getSettings('firmwareUpdateSource');\n if (!firmwareUpdateSource) {\n return {\n ...FIRMWARE_REMOTE_BASE_URLS['production'],\n env: 'production'\n };\n }\n return {\n ...FIRMWARE_REMOTE_BASE_URLS[firmwareUpdateSource],\n env: firmwareUpdateSource\n };\n};\nexports.getOnlineFirmwareBaseUrl = getOnlineFirmwareBaseUrl;\nconst getBundledFirmwareVersion = (deviceModel, firmwareType) => {\n const localFirmwareReleaseConfig = DataManager_1.DataManager.getLocalFirmwareReleaseConfig();\n const modelReleases = localFirmwareReleaseConfig.releases[deviceModel];\n const bundledRelease = modelReleases?.[firmwareType];\n if (!bundledRelease) {\n return;\n }\n const bundledVersion = bundledRelease.releasePath.match(/(\\d+\\.\\d+\\.\\d+)/);\n if (!bundledVersion) {\n throw new Error('Fimrware bundled version was not found.');\n }\n return bundledVersion[0];\n};\nconst getBundledRelease = (deviceModel, firmwareType) => {\n const version = getBundledFirmwareVersion(deviceModel, firmwareType);\n if (!version) {\n return;\n }\n const versionArray = utils_1.versionUtils.tryParse(version);\n if (!versionArray) {\n throw new Error('There was error parsing bundled release.');\n }\n return (0, assetUtils_1.getReleaseAsset)(deviceModel, versionArray, firmwareType);\n};\nexports.getBundledRelease = getBundledRelease;\nconst getOnlineReleaseByPath = async releasePath => {\n const onlineFirmwareBaseUrl = (0, exports.getOnlineFirmwareBaseUrl)();\n const url = `${onlineFirmwareBaseUrl.BASE_URL}/${releasePath}`;\n const response = await (0, assets_1.httpRequest)(url, 'json', {\n signal: AbortSignal.timeout(10000),\n skipLocalForceDownload: true\n });\n return response;\n};\nconst getOnlineReleasePath = (deviceModel, firmwareVersion, firmwareType) => {\n const onlineFirmwareBaseUrl = (0, exports.getOnlineFirmwareBaseUrl)();\n const firmwareTypeFileString = firmwareType === device_utils_1.FirmwareType.BitcoinOnly ? 'bitcoinonly' : 'universal';\n const relaseJsonFilename = `${deviceModel.toLowerCase()}-${firmwareVersion.join('.')}-${firmwareTypeFileString}.json`;\n const origin = `${onlineFirmwareBaseUrl.MIDDLE_PATH}/${deviceModel.toLowerCase()}/${firmwareTypeFileString}`;\n const releasePath = `${origin}/${relaseJsonFilename}`;\n return releasePath;\n};\nconst getOnlineReleaseByVersion = async (deviceModel, firmwareVersion, firmwareType) => {\n const releasePath = getOnlineReleasePath(deviceModel, firmwareVersion, firmwareType);\n const onlineRelease = await getOnlineReleaseByPath(releasePath);\n if (!onlineRelease || !utils_1.versionUtils.isEqual(onlineRelease.version, firmwareVersion)) {\n return;\n }\n return onlineRelease;\n};\nexports.getOnlineReleaseByVersion = getOnlineReleaseByVersion;\nconst getReleaseConfig = (features, firmwareType) => {\n const {\n internal_model\n } = features;\n if (internal_model === device_utils_1.DeviceModelInternal.UNKNOWN) {\n return undefined;\n }\n const firmwareReleaseConfig = DataManager_1.DataManager.getFirmwareReleaseConfig();\n if (!firmwareReleaseConfig) {\n throw new Error('Firmware release config not loaded.');\n }\n const deviceMessageRelease = firmwareReleaseConfig[internal_model];\n if (!deviceMessageRelease) {\n return;\n }\n return deviceMessageRelease[firmwareType];\n};\nexports.getReleaseConfig = getReleaseConfig;\nconst getReleaseByVersion = async (features, firmwareVersion, firmwareType) => {\n const deviceModel = features.internal_model;\n const tryGetRelease = async getter => {\n try {\n return await getter();\n } catch {\n return;\n }\n };\n const releaseFromConfig = (0, exports.getReleaseConfig)(features, firmwareType)?.release;\n if (releaseFromConfig && utils_1.versionUtils.isEqual(firmwareVersion, releaseFromConfig.version)) {\n return releaseFromConfig;\n }\n const releaseName = (0, firmwareUtils_1.buildLocalReleaseName)(firmwareType, deviceModel, firmwareVersion);\n const {\n firmwareDir,\n firmwareList\n } = DataManager_1.DataManager.getLocalFirmwares();\n if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && firmwareList.includes(releaseName)) {\n const localReleasePath = `${firmwareDir}${releaseName}`;\n const localReleaseBuffer = await (0, assets_1.httpRequest)(localReleasePath, 'json');\n return JSON.parse(localReleaseBuffer.toString());\n }\n const release = (await tryGetRelease(() => (0, assetUtils_1.getReleaseAsset)(deviceModel, firmwareVersion, firmwareType))) || (await tryGetRelease(() => (0, exports.getOnlineReleaseByVersion)(deviceModel, firmwareVersion, firmwareType)));\n if (release && utils_1.versionUtils.isEqual(release.version, firmwareVersion)) {\n return release;\n }\n return;\n};\nexports.getReleaseByVersion = getReleaseByVersion;\nconst createLocalFirmwareConfig = baseConfig => {\n const releaseEntries = Object.entries(baseConfig.releases).map(([deviceModel, modelReleases]) => {\n const modelKey = deviceModel;\n if (modelKey === device_utils_1.DeviceModelInternal.UNKNOWN) return null;\n const {\n 'bitcoin-only': bitcoinOnlyConfig,\n universal: universalConfig\n } = modelReleases ?? {};\n if (!bitcoinOnlyConfig?.releasePath || !universalConfig?.releasePath) return null;\n const btcOnlyRelease = (0, exports.getBundledRelease)(modelKey, device_utils_1.FirmwareType.BitcoinOnly);\n const universalRelease = (0, exports.getBundledRelease)(modelKey, device_utils_1.FirmwareType.Universal);\n if (!btcOnlyRelease || !universalRelease) return null;\n const releases = {\n [device_utils_1.FirmwareType.BitcoinOnly]: {\n ...bitcoinOnlyConfig,\n release: btcOnlyRelease\n },\n [device_utils_1.FirmwareType.Universal]: {\n ...universalConfig,\n release: universalRelease\n }\n };\n return [modelKey, releases];\n }).filter(entry => entry !== null);\n return Object.fromEntries(releaseEntries);\n};\nexports.createLocalFirmwareConfig = createLocalFirmwareConfig;\nconst createRemoteFirmwareConfig = async config => {\n const releaseEntryPromises = Object.entries(config.releases).map(async ([deviceModel, modelReleases]) => {\n const modelKey = deviceModel;\n if (modelKey === device_utils_1.DeviceModelInternal.UNKNOWN) return null;\n const {\n 'bitcoin-only': bitcoinOnlyConfig,\n universal: universalConfig\n } = modelReleases ?? {};\n if (!bitcoinOnlyConfig?.releasePath || !universalConfig?.releasePath) return null;\n const [bitcoinOnlyRelease, universalRelease] = await Promise.all([getOnlineReleaseByPath(bitcoinOnlyConfig.releasePath), getOnlineReleaseByPath(universalConfig.releasePath)]);\n if (!universalRelease || !bitcoinOnlyRelease) return null;\n const releases = {\n [device_utils_1.FirmwareType.BitcoinOnly]: {\n ...bitcoinOnlyConfig,\n release: bitcoinOnlyRelease\n },\n [device_utils_1.FirmwareType.Universal]: {\n ...universalConfig,\n release: universalRelease\n }\n };\n return [modelKey, releases];\n });\n const validEntries = (await Promise.all(releaseEntryPromises)).filter(entry => entry !== null);\n return Object.fromEntries(validEntries);\n};\nexports.createRemoteFirmwareConfig = createRemoteFirmwareConfig;\nconst initializeFirmwareConfig = async (config, isRemote) => {\n if (isRemote) {\n try {\n const remoteReleases = await (0, exports.createRemoteFirmwareConfig)(config);\n return {\n releases: remoteReleases,\n intermediaries: config.intermediaries\n };\n } catch {}\n }\n const localFirmwareReleaseConfig = DataManager_1.DataManager.getLocalFirmwareReleaseConfig();\n const localReleases = (0, exports.createLocalFirmwareConfig)(localFirmwareReleaseConfig);\n return {\n releases: localReleases,\n intermediaries: localFirmwareReleaseConfig.intermediaries\n };\n};\nexports.initializeFirmwareConfig = initializeFirmwareConfig;\nconst getLanguage = languageBinPath => {\n const baseUrl = (0, exports.getOnlineFirmwareBaseUrl)();\n const url = `${baseUrl.BASE_URL}/${languageBinPath}`;\n return (0, assets_1.httpRequest)(url, 'binary');\n};\nexports.getLanguage = getLanguage;\nconst getCurrentVersion = features => {\n if (!(0, firmwareUtils_1.isStrictFeatures)(features)) {\n throw new Error('Features of unexpected shape provided.');\n }\n const {\n bootloader_mode,\n major_version,\n minor_version,\n patch_version,\n fw_major,\n fw_minor,\n fw_patch\n } = features;\n const fw_version = [fw_major, fw_minor, fw_patch];\n const version = [major_version, minor_version, patch_version];\n const bootloaderVersion = bootloader_mode ? version : null;\n const fwVersion = bootloader_mode ? fw_version : version;\n return {\n bootloaderVersion,\n firmwareVersion: fwVersion.includes(null) ? null : fwVersion\n };\n};\nexports.getCurrentVersion = getCurrentVersion;\nconst getIntermediaryMessageRelease = features => {\n const config = DataManager_1.DataManager.getFirmwareIntermediaryReleaseConfig();\n if (!config) {\n throw new Error('Firmware release config not loaded.');\n }\n const deviceIntermediaryReleases = config[features.internal_model];\n if (!deviceIntermediaryReleases || deviceIntermediaryReleases.length === 0) {\n return;\n }\n const {\n bootloaderVersion,\n firmwareVersion\n } = (0, exports.getCurrentVersion)(features);\n const currentVersion = features.bootloader_mode ? bootloaderVersion : firmwareVersion;\n const minVersionKey = features.bootloader_mode ? 'min_bootloader_version' : 'min_firmware_version';\n if (!currentVersion) {\n return undefined;\n }\n return deviceIntermediaryReleases.find(release => utils_1.versionUtils.isNewer(release[minVersionKey], currentVersion));\n};\nconst getIsBitcoinOnlyAvailable = features => {\n const {\n internal_model\n } = features;\n if (internal_model === device_utils_1.DeviceModelInternal.UNKNOWN) {\n return false;\n }\n const firmwareReleaseConfig = DataManager_1.DataManager.getFirmwareReleaseConfig();\n if (!firmwareReleaseConfig) {\n throw new Error('Firmware release config not loaded.');\n }\n const deviceMessageRelease = firmwareReleaseConfig[internal_model];\n return !!deviceMessageRelease && !!deviceMessageRelease[device_utils_1.FirmwareType.BitcoinOnly];\n};\nconst isValidConditionalRelease = release => !!(release.version && release.min_firmware_version && release.min_bootloader_version);\nconst calculateShouldOfferRelease = (rolloutProbability, deviceId) => {\n if (rolloutProbability < 0 || rolloutProbability > 100) {\n throw new Error('Probability must be between 0 and 100.');\n }\n if (deviceId === null) {\n return rolloutProbability > 0;\n } else {\n const deterministicValueToCompare = (0, utils_1.getIntegerInRangeFromString)(deviceId, 101);\n return deterministicValueToCompare < rolloutProbability;\n }\n};\nconst getChangelog = (releases, features) => {\n if (features.bootloader_mode) {\n if (features.firmware_present && features.major_version === 1) {\n return null;\n }\n if (features.firmware_present && features.major_version === 2) {\n return releases.filter(r => utils_1.versionUtils.isNewer(r.version, [features.fw_major, features.fw_minor, features.fw_patch]));\n }\n return releases;\n }\n return releases.filter(r => utils_1.versionUtils.isNewer(r.version, [features.major_version, features.minor_version, features.patch_version]));\n};\nconst isRequired = changelog => {\n if (!changelog || !changelog.length) return null;\n return changelog.some(item => item.required);\n};\nconst getReleaseInfo = ({\n features,\n release,\n conditions,\n intermediary,\n firmwareType,\n isBitcoinOnlyAvailable,\n releasesOfDevice\n}) => {\n if (!(0, firmwareUtils_1.isStrictFeatures)(features)) {\n throw new Error('Features of unexpected shape provided.');\n }\n if (!isValidConditionalRelease(release)) {\n throw new Error(`Release object in unexpected shape.`);\n }\n const {\n min_firmware_version,\n min_bootloader_version\n } = release;\n const changelog = getChangelog(releasesOfDevice, features);\n let isNewer = false;\n let requiresIntermediary = false;\n if (features.bootloader_mode && release.bootloader_version) {\n const {\n bootloaderVersion,\n firmwareVersion\n } = (0, exports.getCurrentVersion)(features);\n if (utils_1.versionUtils.isVersionArray(firmwareVersion)) {\n isNewer = utils_1.versionUtils.isNewer(release.version, firmwareVersion);\n requiresIntermediary = utils_1.versionUtils.isNewer(min_firmware_version, firmwareVersion);\n } else if (utils_1.versionUtils.isVersionArray(bootloaderVersion)) {\n isNewer = utils_1.versionUtils.isNewer(release.bootloader_version, bootloaderVersion);\n requiresIntermediary = utils_1.versionUtils.isNewer(min_bootloader_version, bootloaderVersion);\n } else {\n throw new Error('Version is not version array.');\n }\n } else {\n const {\n firmwareVersion\n } = (0, exports.getCurrentVersion)(features);\n if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {\n throw new Error('Firmware version is not version array.');\n }\n isNewer = utils_1.versionUtils.isNewer(release.version, firmwareVersion);\n requiresIntermediary = utils_1.versionUtils.isNewer(min_firmware_version, firmwareVersion);\n }\n const {\n rollout_probability\n } = conditions;\n const shouldBeOffered = calculateShouldOfferRelease(rollout_probability, features.device_id);\n if (requiresIntermediary && intermediary) {\n isNewer = true;\n }\n return {\n firmwareType,\n isBitcoinOnlyAvailable,\n releaseConditions: {\n ...conditions,\n shouldBeOffered\n },\n release,\n intermediary: requiresIntermediary ? intermediary : undefined,\n isRequired: isRequired(changelog),\n isNewer,\n translations: release.translations\n };\n};\nexports.getReleaseInfo = getReleaseInfo;\nconst getFirmwareReleaseConfigInfo = (features, firmwareType) => {\n const deviceMessageRelease = (0, exports.getReleaseConfig)(features, firmwareType);\n if (!deviceMessageRelease?.release) {\n return;\n }\n const {\n release,\n conditions,\n firmware_type\n } = deviceMessageRelease;\n const currentVersion = (0, exports.getCurrentVersion)(features);\n const inBootloaderMode = features.bootloader_mode && !!currentVersion.bootloaderVersion;\n const versionContext = inBootloaderMode ? {\n version: currentVersion.bootloaderVersion,\n minVersionKey: 'min_bootloader_version'\n } : {\n version: currentVersion.firmwareVersion,\n minVersionKey: 'min_firmware_version'\n };\n const isCompatible = versionContext.version && utils_1.versionUtils.isNewerOrEqual(versionContext.version, release[versionContext.minVersionKey]);\n const releasesOfDevice = (0, assetUtils_1.getReleasesAssetByDeviceModelAndFirmwareType)(features.internal_model, firmwareType);\n let suitableRelease = release;\n if (!isCompatible) {\n const alternativeRelease = (0, firmwareUtils_1.findBestCompatibleRelease)(releasesOfDevice, currentVersion, versionContext.minVersionKey);\n if (alternativeRelease) {\n suitableRelease = alternativeRelease;\n }\n }\n const intermediary = getIntermediaryMessageRelease(features);\n const finalTargetRelease = intermediary ? release : suitableRelease;\n return (0, exports.getReleaseInfo)({\n isBitcoinOnlyAvailable: getIsBitcoinOnlyAvailable(features),\n features,\n release: finalTargetRelease,\n conditions,\n intermediary,\n firmwareType: firmware_type,\n releasesOfDevice\n });\n};\nexports.getFirmwareReleaseConfigInfo = getFirmwareReleaseConfigInfo;\nconst getFirmwareStatus = (features, firmwareType) => {\n if (features.firmware_present === false) {\n return 'none';\n }\n if (features.major_version === 1 && features.bootloader_mode) {\n return 'unknown';\n }\n const releaseInfo = (0, exports.getFirmwareReleaseConfigInfo)(features, firmwareType);\n if (!releaseInfo) return 'custom';\n if (releaseInfo.isRequired) return 'required';\n if (releaseInfo.isNewer) return 'outdated';\n return 'valid';\n};\nexports.getFirmwareStatus = getFirmwareStatus;\nconst getFirmwareLocation = ({\n firmwareVersion,\n remotePath,\n deviceModel,\n firmwareType,\n intermediaryVersion\n}) => {\n const firmwareName = intermediaryVersion ? (0, firmwareUtils_1.buildIntermediaryFirmwareFileName)(deviceModel, intermediaryVersion) : (0, firmwareUtils_1.buildLocalFirmwareFileName)(firmwareType, deviceModel, firmwareVersion);\n const versionString = firmwareVersion.join('.');\n const bundledBaseUrl = (0, utils_1.removeTrailingSlashes)(DataManager_1.DataManager.getSettings('binFilesBaseUrl'));\n const isRealBundled = !bundledBaseUrl.includes('data.trezor.io');\n const bundledVersion = getBundledFirmwareVersion(deviceModel, firmwareType);\n const isIntermediary = bundledBaseUrl && intermediaryVersion;\n const isMatchingBundledVersion = bundledBaseUrl && isRealBundled && bundledVersion === versionString;\n if (isIntermediary || isMatchingBundledVersion) {\n return {\n baseUrl: bundledBaseUrl,\n path: `firmware/${deviceModel.toLowerCase()}/${firmwareName}`\n };\n }\n const {\n firmwareDir,\n firmwareList\n } = DataManager_1.DataManager.getLocalFirmwares();\n if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && firmwareList.includes(firmwareName)) {\n return {\n baseUrl: firmwareDir,\n path: firmwareName\n };\n }\n const onlineBaseUrl = (0, exports.getOnlineFirmwareBaseUrl)();\n return {\n baseUrl: onlineBaseUrl.BASE_URL,\n path: remotePath\n };\n};\nexports.getFirmwareLocation = getFirmwareLocation;\n//# sourceMappingURL=firmwareInfo.js.map", "/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\n\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n\n throw new TypeError('Unexpected data type ('+ typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\n\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\n\nDataStream.prototype.end = function end(data) {\n if (data)\n this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\n\nmodule.exports = DataStream;\n", "'use strict';\n\nfunction getParamSize(keySize) {\n\tvar result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1);\n\treturn result;\n}\n\nvar paramBytesForAlg = {\n\tES256: getParamSize(256),\n\tES384: getParamSize(384),\n\tES512: getParamSize(521)\n};\n\nfunction getParamBytesForAlg(alg) {\n\tvar paramBytes = paramBytesForAlg[alg];\n\tif (paramBytes) {\n\t\treturn paramBytes;\n\t}\n\n\tthrow new Error('Unknown algorithm \"' + alg + '\"');\n}\n\nmodule.exports = getParamBytesForAlg;\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\n\nvar MAX_OCTET = 0x80,\n\tCLASS_UNIVERSAL = 0,\n\tPRIMITIVE_BIT = 0x20,\n\tTAG_SEQ = 0x10,\n\tTAG_INT = 0x02,\n\tENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6),\n\tENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6);\n\nfunction base64Url(base64) {\n\treturn base64\n\t\t.replace(/=/g, '')\n\t\t.replace(/\\+/g, '-')\n\t\t.replace(/\\//g, '_');\n}\n\nfunction signatureAsBuffer(signature) {\n\tif (Buffer.isBuffer(signature)) {\n\t\treturn signature;\n\t} else if ('string' === typeof signature) {\n\t\treturn Buffer.from(signature, 'base64');\n\t}\n\n\tthrow new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\n\nfunction derToJose(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\t// the DER encoded param should at most be the param size, plus a padding\n\t// zero, since due to being a signed integer\n\tvar maxEncodedParamLength = paramBytes + 1;\n\n\tvar inputLength = signature.length;\n\n\tvar offset = 0;\n\tif (signature[offset++] !== ENCODED_TAG_SEQ) {\n\t\tthrow new Error('Could not find expected \"seq\"');\n\t}\n\n\tvar seqLength = signature[offset++];\n\tif (seqLength === (MAX_OCTET | 1)) {\n\t\tseqLength = signature[offset++];\n\t}\n\n\tif (inputLength - offset < seqLength) {\n\t\tthrow new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n\t}\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"r\"');\n\t}\n\n\tvar rLength = signature[offset++];\n\n\tif (inputLength - offset - 2 < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n\t}\n\n\tif (maxEncodedParamLength < rLength) {\n\t\tthrow new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar rOffset = offset;\n\toffset += rLength;\n\n\tif (signature[offset++] !== ENCODED_TAG_INT) {\n\t\tthrow new Error('Could not find expected \"int\" for \"s\"');\n\t}\n\n\tvar sLength = signature[offset++];\n\n\tif (inputLength - offset !== sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n\t}\n\n\tif (maxEncodedParamLength < sLength) {\n\t\tthrow new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n\t}\n\n\tvar sOffset = offset;\n\toffset += sLength;\n\n\tif (offset !== inputLength) {\n\t\tthrow new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n\t}\n\n\tvar rPadding = paramBytes - rLength,\n\t\tsPadding = paramBytes - sLength;\n\n\tvar dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n\n\tfor (offset = 0; offset < rPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n\n\toffset = paramBytes;\n\n\tfor (var o = offset; offset < o + sPadding; ++offset) {\n\t\tdst[offset] = 0;\n\t}\n\tsignature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n\n\tdst = dst.toString('base64');\n\tdst = base64Url(dst);\n\n\treturn dst;\n}\n\nfunction countPadding(buf, start, stop) {\n\tvar padding = 0;\n\twhile (start + padding < stop && buf[start + padding] === 0) {\n\t\t++padding;\n\t}\n\n\tvar needsSign = buf[start + padding] >= MAX_OCTET;\n\tif (needsSign) {\n\t\t--padding;\n\t}\n\n\treturn padding;\n}\n\nfunction joseToDer(signature, alg) {\n\tsignature = signatureAsBuffer(signature);\n\tvar paramBytes = getParamBytesForAlg(alg);\n\n\tvar signatureBytes = signature.length;\n\tif (signatureBytes !== paramBytes * 2) {\n\t\tthrow new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n\t}\n\n\tvar rPadding = countPadding(signature, 0, paramBytes);\n\tvar sPadding = countPadding(signature, paramBytes, signature.length);\n\tvar rLength = paramBytes - rPadding;\n\tvar sLength = paramBytes - sPadding;\n\n\tvar rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n\n\tvar shortLength = rsBytes < MAX_OCTET;\n\n\tvar dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n\n\tvar offset = 0;\n\tdst[offset++] = ENCODED_TAG_SEQ;\n\tif (shortLength) {\n\t\t// Bit 8 has value \"0\"\n\t\t// bits 7-1 give the length.\n\t\tdst[offset++] = rsBytes;\n\t} else {\n\t\t// Bit 8 of first octet has value \"1\"\n\t\t// bits 7-1 give the number of additional length octets.\n\t\tdst[offset++] = MAX_OCTET\t| 1;\n\t\t// length, base 256\n\t\tdst[offset++] = rsBytes & 0xff;\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = rLength;\n\tif (rPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\toffset += signature.copy(dst, offset, 0, paramBytes);\n\t} else {\n\t\toffset += signature.copy(dst, offset, rPadding, paramBytes);\n\t}\n\tdst[offset++] = ENCODED_TAG_INT;\n\tdst[offset++] = sLength;\n\tif (sPadding < 0) {\n\t\tdst[offset++] = 0;\n\t\tsignature.copy(dst, offset, paramBytes);\n\t} else {\n\t\tsignature.copy(dst, offset, paramBytes + sPadding);\n\t}\n\n\treturn dst;\n}\n\nmodule.exports = {\n\tderToJose: derToJose,\n\tjoseToDer: joseToDer\n};\n", "/*jshint node:true */\n'use strict';\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\n\nmodule.exports = bufferEq;\n\nfunction bufferEq(a, b) {\n\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\n\nbufferEq.install = function() {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\n\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function() {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};\n", "var Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\n\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".'\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\n\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\n\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n};\n\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return;\n }\n\n if (typeof key === 'object') {\n return;\n }\n\n throw typeError(MSG_INVALID_SIGNER_KEY);\n};\n\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\n\nfunction fromBase64(base64) {\n return base64\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n\n return base64url\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n}\n\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\n\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\n\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing))\n thing = JSON.stringify(thing);\n return thing;\n}\n\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'))\n return fromBase64(sig);\n }\n}\n\nvar bufferEqual;\nvar timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return crypto.timingSafeEqual(a, b)\n} : function timingSafeEqual(a, b) {\n if (!bufferEqual) {\n bufferEqual = require('buffer-equal-constant-time');\n }\n\n return bufferEqual(a, b)\n}\n\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig));\n }\n}\n\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n }\n}\n\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n }\n}\n\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n }\n}\n\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\n\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\n\nfunction createNoneSigner() {\n return function sign() {\n return '';\n }\n}\n\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n }\n}\n\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner,\n }\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier,\n }\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/);\n if (!match)\n throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits),\n }\n};\n", "/*global module*/\nvar Buffer = require('buffer').Buffer;\n\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string')\n return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj))\n return obj.toString();\n return JSON.stringify(obj);\n};\n", "/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\n\nfunction base64url(string, encoding) {\n return Buffer\n .from(string, encoding)\n .toString('base64')\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n}\n\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\n\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\n\nfunction SignStream(opts) {\n var secret = opts.secret;\n secret = secret == null ? opts.privateKey : secret;\n secret = secret == null ? opts.key : secret;\n if (/^hs/i.test(opts.header.alg) === true && secret == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable)\n this.sign();\n }.bind(this));\n\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\n\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nSignStream.sign = jwsSign;\n\nmodule.exports = SignStream;\n", "/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\n\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\n\nfunction safeJsonParse(thing) {\n if (isObject(thing))\n return thing;\n try { return JSON.parse(thing); }\n catch (e) { return undefined; }\n}\n\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\n\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\n\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\n\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\n\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\n\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\n\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n\n if (!isValidJws(jwsSig))\n return null;\n\n var header = headerFromJWS(jwsSig);\n\n if (!header)\n return null;\n\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json)\n payload = JSON.parse(payload, opts.encoding);\n\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\n\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret;\n secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey;\n secretOrKey = secretOrKey == null ? opts.key : secretOrKey;\n if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) {\n throw new TypeError('secret must be a string or buffer or a KeyObject')\n }\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable)\n this.verify();\n }.bind(this));\n\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable)\n this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\n\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\n\nmodule.exports = VerifyStream;\n", "/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\n\nvar ALGORITHMS = [\n 'HS256', 'HS384', 'HS512',\n 'RS256', 'RS384', 'RS512',\n 'PS256', 'PS384', 'PS512',\n 'ES256', 'ES384', 'ES512'\n];\n\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOnlyLocalFirmwareReleaseConfig = exports.getFirmwareReleaseConfig = void 0;\nconst jws_1 = require(\"jws\");\nconst env_utils_1 = require(\"@trezor/env-utils\");\nconst assetUtils_1 = require(\"./assetUtils\");\nconst firmwareInfo_1 = require(\"../data/firmwareInfo\");\nconst JWS_CONFIG = {\n SIGN_ALGORITHM: 'ES256',\n VERSION: 1,\n REMOTE_FILENAME: 'releases.v1.json',\n REQUEST_TIMEOUT_MS: 5000\n};\nconst fetchRemoteJws = async () => {\n const {\n BASE_URL,\n MIDDLE_PATH,\n env\n } = (0, firmwareInfo_1.getOnlineFirmwareBaseUrl)();\n const path = `${MIDDLE_PATH}/${env === 'production' ? 'config/' : ''}${JWS_CONFIG.REMOTE_FILENAME}`;\n const remoteReleasesUrl = new URL(path, BASE_URL);\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort('Request timed out'), JWS_CONFIG.REQUEST_TIMEOUT_MS);\n const response = await fetch(remoteReleasesUrl.toString(), {\n signal: controller.signal\n });\n clearTimeout(timeoutId);\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n const data = await response.json();\n if (typeof data.jws !== 'string') {\n throw new Error('Invalid response format: \"jws\" property missing or not a string.');\n }\n return {\n jws: data.jws,\n env\n };\n } catch (error) {\n throw new Error(`Failed to fetch remote JWS: ${error instanceof Error ? error.message : String(error)}`);\n }\n};\nconst verifyAndDecodeJws = (jws, publicKey) => {\n const decoded = (0, jws_1.decode)(jws);\n if (!decoded || !decoded.payload || !decoded.header) {\n throw new Error('Invalid JWS structure.');\n }\n const parsedPayload = JSON.parse(decoded.payload);\n if (decoded.header.alg !== JWS_CONFIG.SIGN_ALGORITHM) {\n throw new Error('Invalid JWS algorithm');\n }\n if (parsedPayload.version !== JWS_CONFIG.VERSION) {\n throw new Error('Config version mismatch.');\n }\n if (!(0, jws_1.verify)(jws, JWS_CONFIG.SIGN_ALGORITHM, publicKey)) {\n throw new Error('JWS signature is invalid.');\n }\n return parsedPayload;\n};\nconst getFirmwareReleaseConfig = async () => {\n try {\n const {\n jws,\n env\n } = await fetchRemoteJws();\n const useProductionKey = ['test-signed', 'production'].includes(env);\n const publicKey = (0, env_utils_1.getFirmwareReleaseJwsPublicKey)(useProductionKey);\n const remoteConfig = verifyAndDecodeJws(jws, publicKey);\n if (remoteConfig.sequence > assetUtils_1.firmwareReleaseConfigAssets.sequence) {\n return {\n config: remoteConfig,\n isRemote: true\n };\n }\n } catch {}\n return {\n config: assetUtils_1.firmwareReleaseConfigAssets,\n isRemote: false\n };\n};\nexports.getFirmwareReleaseConfig = getFirmwareReleaseConfig;\nconst getOnlyLocalFirmwareReleaseConfig = () => ({\n config: assetUtils_1.firmwareReleaseConfigAssets,\n isRemote: false\n});\nexports.getOnlyLocalFirmwareReleaseConfig = getOnlyLocalFirmwareReleaseConfig;\n//# sourceMappingURL=firmwareReleaseConfigUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DataManager = void 0;\nconst tslib_1 = require(\"tslib\");\nconst coins_eth_json_1 = tslib_1.__importDefault(require(\"@trezor/connect-common/files/coins-eth.json\"));\nconst coins_json_1 = tslib_1.__importDefault(require(\"@trezor/connect-common/files/coins.json\"));\nconst messages_json_1 = tslib_1.__importDefault(require(\"@trezor/protobuf/messages.json\"));\nconst coinInfo_1 = require(\"./coinInfo\");\nconst firmwareInfo_1 = require(\"./firmwareInfo\");\nconst firmwareReleaseConfigUtils_1 = require(\"../utils/firmwareReleaseConfigUtils\");\nclass DataManager {\n static assets = {};\n static settings;\n static messages = messages_json_1.default;\n static localFirmwares = {\n firmwareDir: '',\n firmwareList: []\n };\n static firmwareReleasesConfig = {};\n static firmwareIntermediaryReleasesConfig;\n static localFirmwareReleaseConfig;\n static async load(settings, withAssets = true, onlyLocalFirmwareConfig = false) {\n this.settings = settings;\n if (!withAssets) return;\n const assetsMap = {\n coins: coins_json_1.default,\n coinsEth: coins_eth_json_1.default\n };\n Object.assign(this.assets, assetsMap);\n (0, coinInfo_1.parseCoinsJson)({\n ...this.assets.coins,\n ...this.assets.coinsEth\n });\n this.prepareLocalFirmwareReleaseData();\n await this.loadFirmwareRelaseConfig(onlyLocalFirmwareConfig);\n }\n static prepareLocalFirmwareReleaseData() {\n const {\n config\n } = (0, firmwareReleaseConfigUtils_1.getOnlyLocalFirmwareReleaseConfig)();\n this.setLocalFirmwareReleaseConfig(config);\n }\n static async loadFirmwareRelaseConfig(onlyLocal) {\n let firmwareRelaseConfig;\n if (onlyLocal) {\n firmwareRelaseConfig = {\n config: this.getLocalFirmwareReleaseConfig(),\n isRemote: false\n };\n } else {\n firmwareRelaseConfig = await (0, firmwareReleaseConfigUtils_1.getFirmwareReleaseConfig)();\n }\n const {\n config,\n isRemote\n } = firmwareRelaseConfig;\n const firmwareconfig = await (0, firmwareInfo_1.initializeFirmwareConfig)(config, isRemote);\n this.setFirmwareReleaseConfig(firmwareconfig.releases);\n this.setFirmwareIntermediaryReleaseConfig(firmwareconfig.intermediaries);\n }\n static getProtobufMessages() {\n return this.messages;\n }\n static getSettings(key) {\n if (!this.settings) return null;\n if (typeof key === 'string') {\n return this.settings[key];\n }\n return this.settings;\n }\n static setLocalFirmwares(firmwares) {\n this.localFirmwares = firmwares;\n }\n static getLocalFirmwares() {\n return this.localFirmwares;\n }\n static setLocalFirmwareReleaseConfig(localFirmwareReleaseConfig) {\n this.localFirmwareReleaseConfig = localFirmwareReleaseConfig;\n }\n static getLocalFirmwareReleaseConfig() {\n return this.localFirmwareReleaseConfig;\n }\n static setFirmwareReleaseConfig(releaseConfig) {\n this.firmwareReleasesConfig = releaseConfig;\n }\n static getFirmwareReleaseConfig() {\n return this.firmwareReleasesConfig;\n }\n static setFirmwareIntermediaryReleaseConfig(intermediariesConfig) {\n this.firmwareIntermediaryReleasesConfig = intermediariesConfig;\n }\n static getFirmwareIntermediaryReleaseConfig() {\n return this.firmwareIntermediaryReleasesConfig;\n }\n}\nexports.DataManager = DataManager;\n//# sourceMappingURL=DataManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackendManager = void 0;\nconst constants_1 = require(\"../constants\");\nconst Blockchain_1 = require(\"./Blockchain\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst events_1 = require(\"../events\");\nconst DEFAULT_IDENTITY = 'default';\nclass BackendManager {\n instances = {};\n reconnect = {};\n custom = {};\n preferred = {};\n get(shortcut, identity = DEFAULT_IDENTITY) {\n return this.instances[`${shortcut}/${identity}`] ?? null;\n }\n async getOrConnect({\n coinInfo,\n postMessage,\n identity\n }) {\n const coinIdentity = `${coinInfo.shortcut}/${identity ?? DEFAULT_IDENTITY}`;\n let backend = this.instances[coinIdentity];\n if (!backend) {\n backend = new Blockchain_1.Blockchain({\n coinInfo: this.patchCoinInfo(coinInfo),\n identity,\n debug: DataManager_1.DataManager.getSettings('debug'),\n proxy: DataManager_1.DataManager.getSettings('proxy'),\n postMessage,\n onDisconnected: pendingSubscriptions => {\n const reconnectAttempts = pendingSubscriptions ? 0 : undefined;\n this.onDisconnect({\n coinInfo,\n postMessage,\n identity\n }, reconnectAttempts);\n }\n });\n this.setInstance(coinIdentity, backend);\n }\n const reconnect = this.clearReconnect(coinIdentity);\n try {\n const info = await backend.init();\n this.setPreferred(coinInfo.shortcut, info.url);\n return backend;\n } catch (error) {\n this.onDisconnect({\n coinInfo,\n postMessage,\n identity\n }, reconnect?.attempts);\n throw error;\n }\n }\n dispose() {\n Object.keys(this.reconnect).filter(this.getReconnectFilter()).forEach(this.clearReconnect, this);\n Object.values(this.instances).forEach(i => i.disconnect());\n }\n reconnectAll(coin) {\n const backends = Object.values(this.instances).filter(backend => !coin || coin.shortcut === backend.coinInfo.shortcut);\n backends.forEach(i => i.disconnect());\n return Promise.all(backends.map(this.getOrConnect, this));\n }\n isSupported(coinInfo) {\n const info = this.custom[coinInfo.shortcut] || coinInfo.blockchainLink;\n if (!info) {\n throw constants_1.ERRORS.TypedError('Backend_NotSupported');\n }\n }\n setCustom(shortcut, blockchainLink) {\n this.setPreferred(shortcut, undefined);\n if (blockchainLink) {\n this.custom[shortcut] = blockchainLink;\n } else {\n delete this.custom[shortcut];\n }\n }\n setInstance(coinIdentity, instance) {\n if (!instance) delete this.instances[coinIdentity];else this.instances[coinIdentity] = instance;\n }\n setPreferred(shortcut, url) {\n if (!url) delete this.preferred[shortcut];else this.preferred[shortcut] = url;\n }\n onDisconnect({\n coinInfo,\n postMessage,\n identity\n }, reconnectAttempt) {\n const coinIdentity = `${coinInfo.shortcut}/${identity ?? DEFAULT_IDENTITY}`;\n this.setInstance(coinIdentity, undefined);\n if (reconnectAttempt === undefined || reconnectAttempt === 4) {\n this.setPreferred(coinInfo.shortcut, undefined);\n }\n if (reconnectAttempt === undefined) {\n return;\n }\n const timeout = Math.min(2500 * reconnectAttempt, 20000);\n const time = Date.now() + timeout;\n const handle = setTimeout(() => {\n this.getOrConnect({\n coinInfo,\n postMessage,\n identity\n }).catch(() => {});\n }, timeout);\n clearTimeout(this.reconnect[coinIdentity]?.handle);\n this.reconnect[coinIdentity] = {\n attempts: reconnectAttempt + 1,\n handle\n };\n postMessage((0, events_1.createBlockchainMessage)(events_1.BLOCKCHAIN.RECONNECTING, {\n coin: coinInfo,\n identity,\n time\n }));\n }\n clearReconnect(coinIdentity) {\n const reconnect = this.reconnect[coinIdentity];\n clearTimeout(reconnect?.handle);\n delete this.reconnect[coinIdentity];\n return reconnect;\n }\n patchCoinInfo(coinInfo) {\n const custom = this.custom[coinInfo.shortcut];\n const preferred = this.preferred[coinInfo.shortcut];\n const url = preferred ? [preferred] : custom?.url ?? coinInfo.blockchainLink?.url;\n return {\n ...coinInfo,\n blockchainLink: {\n ...coinInfo.blockchainLink,\n ...custom,\n url\n }\n };\n }\n getReconnectFilter(coinInfo) {\n return key => !coinInfo || key.startsWith(`${coinInfo.shortcut}/`);\n }\n}\nexports.BackendManager = BackendManager;\n//# sourceMappingURL=BackendManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dispose = exports.reconnectAllBackends = exports.initBlockchain = exports.isBackendSupported = exports.setCustomBackend = exports.findBackend = exports.Blockchain = void 0;\nconst BackendManager_1 = require(\"./BackendManager\");\nvar Blockchain_1 = require(\"./Blockchain\");\nObject.defineProperty(exports, \"Blockchain\", {\n enumerable: true,\n get: function () {\n return Blockchain_1.Blockchain;\n }\n});\nconst backends = new BackendManager_1.BackendManager();\nconst findBackend = (coin, identity) => backends.get(coin, identity);\nexports.findBackend = findBackend;\nconst setCustomBackend = (coinInfo, blockchainLink) => backends.setCustom(coinInfo.shortcut, blockchainLink?.url.length ? blockchainLink : coinInfo.blockchainLink);\nexports.setCustomBackend = setCustomBackend;\nconst isBackendSupported = coinInfo => backends.isSupported(coinInfo);\nexports.isBackendSupported = isBackendSupported;\nconst initBlockchain = (coinInfo, postMessage, identity) => backends.getOrConnect({\n coinInfo,\n identity,\n postMessage\n});\nexports.initBlockchain = initBlockchain;\nconst reconnectAllBackends = coinInfo => backends.reconnectAll(coinInfo);\nexports.reconnectAllBackends = reconnectAllBackends;\nconst dispose = () => backends.dispose();\nexports.dispose = dispose;\n//# sourceMappingURL=BlockchainLink.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=account.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SelectFeeLevel = exports.FeeLevel = exports.FeeInfo = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.FeeInfo = schema_utils_1.Type.Object({\n blockTime: schema_utils_1.Type.Number(),\n minFee: schema_utils_1.Type.Number(),\n maxFee: schema_utils_1.Type.Number(),\n minPriorityFee: schema_utils_1.Type.Number(),\n dustLimit: schema_utils_1.Type.Number()\n});\nexports.FeeLevel = schema_utils_1.Type.Object({\n label: schema_utils_1.Type.Union([schema_utils_1.Type.Literal('high'), schema_utils_1.Type.Literal('normal'), schema_utils_1.Type.Literal('economy'), schema_utils_1.Type.Literal('low'), schema_utils_1.Type.Literal('custom')]),\n blocks: schema_utils_1.Type.Number(),\n feePerUnit: schema_utils_1.Type.String(),\n feePerTx: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n feeLimit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n baseFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n maxFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n maxPriorityFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.SelectFeeLevel = schema_utils_1.Type.Union([schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Literal('0'),\n feePerByte: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n blocks: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n disabled: schema_utils_1.Type.Literal(true)\n}), schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.String(),\n feePerByte: schema_utils_1.Type.String(),\n blocks: schema_utils_1.Type.Number(),\n minutes: schema_utils_1.Type.Number(),\n total: schema_utils_1.Type.String()\n})]);\n//# sourceMappingURL=fees.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CoinInfo = exports.MiscNetworkInfo = exports.EthereumNetworkInfoDefinitionValues = exports.EthereumNetworkInfo = exports.BitcoinNetworkInfo = exports.BlockchainLink = exports.CoinSupport = exports.CoinObj = exports.Network = exports.Bip32 = void 0;\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst fees_1 = require(\"./fees\");\nexports.Bip32 = schema_utils_1.Type.Object({\n public: schema_utils_1.Type.Number(),\n private: schema_utils_1.Type.Number()\n});\nexports.Network = schema_utils_1.Type.Object({\n messagePrefix: schema_utils_1.Type.String(),\n bech32: schema_utils_1.Type.String(),\n bip32: exports.Bip32,\n pubKeyHash: schema_utils_1.Type.Number(),\n scriptHash: schema_utils_1.Type.Number(),\n wif: schema_utils_1.Type.Number(),\n forkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n});\nexports.CoinObj = schema_utils_1.Type.Object({\n coin: schema_utils_1.Type.String(),\n identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CoinSupport = schema_utils_1.Type.Composite([schema_utils_1.Type.Object({\n connect: schema_utils_1.Type.Boolean()\n}), schema_utils_1.Type.Record(schema_utils_1.Type.KeyOfEnum(device_utils_1.DeviceModelInternal), schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Literal(false)]))]);\nexports.BlockchainLink = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.String(),\n url: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n});\nconst Common = schema_utils_1.Type.Object({\n label: schema_utils_1.Type.String(),\n name: schema_utils_1.Type.String(),\n shortcut: schema_utils_1.Type.String(),\n slip44: schema_utils_1.Type.Number(),\n support: exports.CoinSupport,\n decimals: schema_utils_1.Type.Number(),\n blockchainLink: schema_utils_1.Type.Optional(exports.BlockchainLink),\n blockTime: schema_utils_1.Type.Number(),\n minFee: schema_utils_1.Type.Number(),\n maxFee: schema_utils_1.Type.Number(),\n minPriorityFee: schema_utils_1.Type.Number(),\n defaultFees: schema_utils_1.Type.Array(fees_1.FeeLevel)\n});\nexports.BitcoinNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('bitcoin'),\n cashAddrPrefix: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n curveName: schema_utils_1.Type.String(),\n dustLimit: schema_utils_1.Type.Number(),\n forceBip143: schema_utils_1.Type.Boolean(),\n hashGenesisBlock: schema_utils_1.Type.String(),\n maxAddressLength: schema_utils_1.Type.Number(),\n maxFeeSatoshiKb: schema_utils_1.Type.Number(),\n minAddressLength: schema_utils_1.Type.Number(),\n minFeeSatoshiKb: schema_utils_1.Type.Number(),\n segwit: schema_utils_1.Type.Boolean(),\n xPubMagic: schema_utils_1.Type.Number(),\n xPubMagicSegwitNative: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n xPubMagicSegwit: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n taproot: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n network: exports.Network,\n isBitcoin: schema_utils_1.Type.Boolean()\n})]);\nexports.EthereumNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('ethereum'),\n chainId: schema_utils_1.Type.Number(),\n network: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined())\n})]);\nexports.EthereumNetworkInfoDefinitionValues = schema_utils_1.Type.Omit(exports.EthereumNetworkInfo, ['minFee', 'maxFee', 'defaultFees', 'minPriorityFee', 'blockTime']);\nexports.MiscNetworkInfo = schema_utils_1.Type.Intersect([Common, schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Union([schema_utils_1.Type.Literal('misc'), schema_utils_1.Type.Literal('nem')]),\n curve: schema_utils_1.Type.String(),\n network: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined())\n})]);\nexports.CoinInfo = schema_utils_1.Type.Union([exports.BitcoinNetworkInfo, exports.EthereumNetworkInfo, exports.MiscNetworkInfo]);\n//# sourceMappingURL=coinInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.asProofOfDelegatedIdentity = exports.asBluetoothDeviceId = exports.asDeviceUniquePath = void 0;\nconst asDeviceUniquePath = id => id;\nexports.asDeviceUniquePath = asDeviceUniquePath;\nconst asBluetoothDeviceId = id => id;\nexports.asBluetoothDeviceId = asBluetoothDeviceId;\nconst asProofOfDelegatedIdentity = value => value;\nexports.asProofOfDelegatedIdentity = asProofOfDelegatedIdentity;\n//# sourceMappingURL=device.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=firmware.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=settings.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CardanoSignedMessage = exports.CardanoMessageHeaders = exports.CardanoMessageUnprotectedHeaders = exports.CardanoMessageProtectedHeaders = exports.CardanoSignMessage = exports.CardanoSignedTxData = exports.CardanoAuxiliaryDataSupplement = exports.CardanoSignedTxWitness = exports.CardanoSignTransactionExtended = exports.CardanoSignTransaction = exports.CardanoAuxiliaryData = exports.CardanoCVoteRegistrationParameters = exports.CardanoCVoteRegistrationDelegation = exports.CardanoReferenceInput = exports.CardanoRequiredSigner = exports.CardanoCollateralInput = exports.CardanoMint = exports.CardanoWithdrawal = exports.CardanoCertificate = exports.CardanoDRep = exports.CardanoPoolParameters = exports.CardanoPoolMargin = exports.CardanoPoolMetadata = exports.CardanoPoolRelay = exports.CardanoPoolOwner = exports.CardanoOutput = exports.CardanoAssetGroup = exports.CardanoToken = exports.CardanoInput = exports.CardanoGetPublicKey = exports.CardanoNativeScriptHash = exports.CardanoGetNativeScriptHash = exports.CardanoNativeScript = exports.CardanoGetAddress = exports.CardanoAddressParameters = exports.CardanoCertificatePointer = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../../constants\");\nconst params_1 = require(\"../../params\");\nexports.CardanoCertificatePointer = schema_utils_1.Type.Object({\n blockIndex: schema_utils_1.Type.Number(),\n txIndex: schema_utils_1.Type.Number(),\n certificateIndex: schema_utils_1.Type.Number()\n});\nexports.CardanoAddressParameters = schema_utils_1.Type.Object({\n addressType: constants_1.PROTO.EnumCardanoAddressType,\n path: schema_utils_1.Type.Optional(params_1.DerivationPath),\n stakingPath: schema_utils_1.Type.Optional(params_1.DerivationPath),\n stakingKeyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n certificatePointer: schema_utils_1.Type.Optional(exports.CardanoCertificatePointer),\n paymentScriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n stakingScriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoGetAddress = schema_utils_1.Type.Object({\n addressParameters: exports.CardanoAddressParameters,\n protocolMagic: schema_utils_1.Type.Number(),\n networkId: schema_utils_1.Type.Number(),\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.CardanoNativeScript = schema_utils_1.Type.Recursive(This => schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoNativeScriptType,\n scripts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(This)),\n keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n keyPath: schema_utils_1.Type.Optional(params_1.DerivationPath),\n requiredSignaturesCount: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n invalidBefore: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n invalidHereafter: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}));\nexports.CardanoGetNativeScriptHash = schema_utils_1.Type.Object({\n script: exports.CardanoNativeScript,\n displayFormat: constants_1.PROTO.EnumCardanoNativeScriptHashDisplayFormat,\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType)\n});\nexports.CardanoNativeScriptHash = schema_utils_1.Type.Object({\n scriptHash: schema_utils_1.Type.String()\n});\nexports.CardanoGetPublicKey = schema_utils_1.Type.Intersect([params_1.GetPublicKey, schema_utils_1.Type.Object({\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType)\n})]);\nexports.CardanoInput = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Optional(params_1.DerivationPath),\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n});\nexports.CardanoToken = schema_utils_1.Type.Object({\n assetNameBytes: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n mintAmount: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoAssetGroup = schema_utils_1.Type.Object({\n policyId: schema_utils_1.Type.String(),\n tokenAmounts: schema_utils_1.Type.Array(exports.CardanoToken)\n});\nexports.CardanoOutput = schema_utils_1.Type.Intersect([schema_utils_1.Type.Union([schema_utils_1.Type.Object({\n addressParameters: exports.CardanoAddressParameters\n}), schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String()\n})]), schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.String(),\n tokenBundle: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoAssetGroup)),\n datumHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n format: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoTxOutputSerializationFormat),\n inlineDatum: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n referenceScript: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n})]);\nexports.CardanoPoolOwner = schema_utils_1.Type.Object({\n stakingKeyPath: schema_utils_1.Type.Optional(params_1.DerivationPath),\n stakingKeyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoPoolRelay = schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoPoolRelayType,\n ipv4Address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ipv6Address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n port: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n hostName: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoPoolMetadata = schema_utils_1.Type.Object({\n url: schema_utils_1.Type.String(),\n hash: schema_utils_1.Type.String()\n});\nexports.CardanoPoolMargin = schema_utils_1.Type.Object({\n numerator: schema_utils_1.Type.String(),\n denominator: schema_utils_1.Type.String()\n});\nexports.CardanoPoolParameters = schema_utils_1.Type.Object({\n poolId: schema_utils_1.Type.String(),\n vrfKeyHash: schema_utils_1.Type.String(),\n pledge: schema_utils_1.Type.String(),\n cost: schema_utils_1.Type.String(),\n margin: exports.CardanoPoolMargin,\n rewardAccount: schema_utils_1.Type.String(),\n owners: schema_utils_1.Type.Array(exports.CardanoPoolOwner, {\n minItems: 1\n }),\n relays: schema_utils_1.Type.Array(exports.CardanoPoolRelay),\n metadata: schema_utils_1.Type.Optional(exports.CardanoPoolMetadata)\n});\nexports.CardanoDRep = schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoDRepType,\n keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoCertificate = schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoCertificateType,\n path: schema_utils_1.Type.Optional(params_1.DerivationPath),\n pool: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n poolParameters: schema_utils_1.Type.Optional(exports.CardanoPoolParameters),\n scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n deposit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n dRep: schema_utils_1.Type.Optional(exports.CardanoDRep)\n});\nexports.CardanoWithdrawal = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Optional(params_1.DerivationPath),\n amount: schema_utils_1.Type.String(),\n scriptHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoMint = schema_utils_1.Type.Array(exports.CardanoAssetGroup);\nexports.CardanoCollateralInput = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Optional(params_1.DerivationPath),\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n});\nexports.CardanoRequiredSigner = schema_utils_1.Type.Object({\n keyPath: schema_utils_1.Type.Optional(params_1.DerivationPath),\n keyHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoReferenceInput = schema_utils_1.Type.Object({\n prev_hash: schema_utils_1.Type.String(),\n prev_index: schema_utils_1.Type.Number()\n});\nexports.CardanoCVoteRegistrationDelegation = schema_utils_1.Type.Object({\n votePublicKey: schema_utils_1.Type.String(),\n weight: schema_utils_1.Type.Number()\n});\nexports.CardanoCVoteRegistrationParameters = schema_utils_1.Type.Object({\n votePublicKey: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n stakingPath: params_1.DerivationPath,\n paymentAddressParameters: schema_utils_1.Type.Optional(exports.CardanoAddressParameters),\n nonce: schema_utils_1.Type.String(),\n format: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoCVoteRegistrationFormat),\n delegations: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoCVoteRegistrationDelegation)),\n votingPurpose: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n paymentAddress: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoAuxiliaryData = schema_utils_1.Type.Object({\n hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n cVoteRegistrationParameters: schema_utils_1.Type.Optional(exports.CardanoCVoteRegistrationParameters)\n});\nexports.CardanoSignTransaction = schema_utils_1.Type.Object({\n inputs: schema_utils_1.Type.Array(exports.CardanoInput),\n outputs: schema_utils_1.Type.Array(exports.CardanoOutput),\n fee: schema_utils_1.Type.Uint(),\n ttl: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n certificates: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoCertificate)),\n withdrawals: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoWithdrawal)),\n validityIntervalStart: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n auxiliaryData: schema_utils_1.Type.Optional(exports.CardanoAuxiliaryData),\n mint: schema_utils_1.Type.Optional(exports.CardanoMint),\n scriptDataHash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n collateralInputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoCollateralInput)),\n requiredSigners: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoRequiredSigner)),\n collateralReturn: schema_utils_1.Type.Optional(exports.CardanoOutput),\n totalCollateral: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n referenceInputs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.CardanoReferenceInput)),\n additionalWitnessRequests: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(params_1.DerivationPath)),\n protocolMagic: schema_utils_1.Type.Number(),\n networkId: schema_utils_1.Type.Number(),\n signingMode: constants_1.PROTO.EnumCardanoTxSigningMode,\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType),\n includeNetworkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n tagCborSets: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.CardanoSignTransactionExtended = schema_utils_1.Type.Intersect([exports.CardanoSignTransaction, schema_utils_1.Type.Object({\n unsignedTx: schema_utils_1.Type.Object({\n body: schema_utils_1.Type.String(),\n hash: schema_utils_1.Type.String()\n }),\n testnet: schema_utils_1.Type.Boolean()\n})]);\nexports.CardanoSignedTxWitness = schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoTxWitnessType,\n pubKey: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String(),\n chainCode: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoAuxiliaryDataSupplement = schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumCardanoTxAuxiliaryDataSupplementType,\n auxiliaryDataHash: schema_utils_1.Type.String(),\n cVoteRegistrationSignature: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.CardanoSignedTxData = schema_utils_1.Type.Object({\n hash: schema_utils_1.Type.String(),\n witnesses: schema_utils_1.Type.Array(exports.CardanoSignedTxWitness),\n auxiliaryDataSupplement: schema_utils_1.Type.Optional(exports.CardanoAuxiliaryDataSupplement)\n});\nexports.CardanoSignMessage = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n payload: schema_utils_1.Type.String(),\n preferHexDisplay: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n networkId: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n protocolMagic: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n addressParameters: schema_utils_1.Type.Optional(exports.CardanoAddressParameters),\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType)\n});\nexports.CardanoMessageProtectedHeaders = schema_utils_1.Type.Object({\n 1: schema_utils_1.Type.Literal(constants_1.CARDANO.ALGORITHM_IDS.EdDSA),\n address: schema_utils_1.Type.String()\n});\nexports.CardanoMessageUnprotectedHeaders = schema_utils_1.Type.Object({\n hashed: schema_utils_1.Type.Boolean(),\n version: schema_utils_1.Type.Number()\n});\nexports.CardanoMessageHeaders = schema_utils_1.Type.Object({\n protected: exports.CardanoMessageProtectedHeaders,\n unprotected: exports.CardanoMessageUnprotectedHeaders\n});\nexports.CardanoSignedMessage = schema_utils_1.Type.Object({\n headers: exports.CardanoMessageHeaders,\n payload: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String(),\n pubKey: schema_utils_1.Type.String(),\n coseSignature: schema_utils_1.Type.String(),\n coseKey: schema_utils_1.Type.String()\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VerifyMessage = exports.SignMessage = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../../params\");\nexports.SignMessage = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n message: schema_utils_1.Type.String(),\n hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n no_script_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.VerifyMessage = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String(),\n message: schema_utils_1.Type.String(),\n coin: schema_utils_1.Type.String(),\n hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EosSignTransaction = exports.EosSDKTransaction = exports.EosTxAction = exports.EosTxActionCommon = exports.EosAuthorization = exports.EosTxHeader = exports.EosPublicKey = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../../constants\");\nconst params_1 = require(\"../../params\");\nexports.EosPublicKey = schema_utils_1.Type.Object({\n wifPublicKey: schema_utils_1.Type.String(),\n rawPublicKey: schema_utils_1.Type.String(),\n path: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n serializedPath: schema_utils_1.Type.String()\n});\nexports.EosTxHeader = schema_utils_1.Type.Object({\n expiration: schema_utils_1.Type.Union([schema_utils_1.Type.Uint(), schema_utils_1.Type.String()]),\n refBlockNum: schema_utils_1.Type.Number(),\n refBlockPrefix: schema_utils_1.Type.Number(),\n maxNetUsageWords: schema_utils_1.Type.Number(),\n maxCpuUsageMs: schema_utils_1.Type.Number(),\n delaySec: schema_utils_1.Type.Number()\n});\nexports.EosAuthorization = schema_utils_1.Type.Object({\n threshold: schema_utils_1.Type.Number(),\n keys: schema_utils_1.Type.Array(constants_1.PROTO.EosAuthorizationKey),\n accounts: schema_utils_1.Type.Array(schema_utils_1.Type.Object({\n permission: constants_1.PROTO.EosPermissionLevel,\n weight: schema_utils_1.Type.Number()\n })),\n waits: schema_utils_1.Type.Array(constants_1.PROTO.EosAuthorizationWait)\n});\nexports.EosTxActionCommon = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n authorization: schema_utils_1.Type.Array(constants_1.PROTO.EosPermissionLevel)\n});\nexports.EosTxAction = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('transfer'),\n data: schema_utils_1.Type.Object({\n from: schema_utils_1.Type.String(),\n to: schema_utils_1.Type.String(),\n quantity: schema_utils_1.Type.String(),\n memo: schema_utils_1.Type.String()\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('delegatebw'),\n data: schema_utils_1.Type.Object({\n from: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n stake_net_quantity: schema_utils_1.Type.String(),\n stake_cpu_quantity: schema_utils_1.Type.String(),\n transfer: schema_utils_1.Type.Boolean()\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('undelegatebw'),\n data: schema_utils_1.Type.Object({\n from: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n unstake_net_quantity: schema_utils_1.Type.String(),\n unstake_cpu_quantity: schema_utils_1.Type.String()\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('buyram'),\n data: schema_utils_1.Type.Object({\n payer: schema_utils_1.Type.String(),\n receiver: schema_utils_1.Type.String(),\n quant: schema_utils_1.Type.String()\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('buyrambytes'),\n data: constants_1.PROTO.EosActionBuyRamBytes\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('sellram'),\n data: constants_1.PROTO.EosActionSellRam\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('voteproducer'),\n data: schema_utils_1.Type.Object({\n voter: schema_utils_1.Type.String(),\n proxy: schema_utils_1.Type.String(),\n producers: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('refund'),\n data: constants_1.PROTO.EosActionRefund\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('updateauth'),\n data: schema_utils_1.Type.Object({\n account: schema_utils_1.Type.String(),\n permission: schema_utils_1.Type.String(),\n parent: schema_utils_1.Type.String(),\n auth: exports.EosAuthorization\n })\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('deleteauth'),\n data: constants_1.PROTO.EosActionDeleteAuth\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('linkauth'),\n data: constants_1.PROTO.EosActionLinkAuth\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('unlinkauth'),\n data: constants_1.PROTO.EosActionUnlinkAuth\n})]), schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Literal('newaccount'),\n data: schema_utils_1.Type.Object({\n creator: schema_utils_1.Type.String(),\n name: schema_utils_1.Type.String(),\n owner: exports.EosAuthorization,\n active: exports.EosAuthorization\n })\n})])]);\nexports.EosSDKTransaction = schema_utils_1.Type.Object({\n chainId: schema_utils_1.Type.String(),\n header: exports.EosTxHeader,\n actions: schema_utils_1.Type.Array(schema_utils_1.Type.Union([exports.EosTxAction, schema_utils_1.Type.Intersect([exports.EosTxActionCommon, schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String(),\n data: schema_utils_1.Type.String()\n })])]))\n});\nexports.EosSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n transaction: exports.EosSDKTransaction,\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RippleSignedTx = exports.RippleSignTransaction = exports.RippleTransaction = exports.RipplePayment = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../../params\");\nexports.RipplePayment = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.String(),\n destination: schema_utils_1.Type.String(),\n destinationTag: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n});\nexports.RippleTransaction = schema_utils_1.Type.Object({\n fee: schema_utils_1.Type.String(),\n flags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n sequence: schema_utils_1.Type.Number(),\n maxLedgerVersion: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment: exports.RipplePayment\n});\nexports.RippleSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n transaction: exports.RippleTransaction,\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.RippleSignedTx = schema_utils_1.Type.Object({\n serializedTx: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EthereumVerifyMessage = exports.EthereumSignTypedHash = exports.EthereumSignTypedData = exports.EthereumSignTypedDataMessage = exports.EthereumSignTypedDataTypes = exports.EthereumSignedTx = exports.EthereumSignTransaction = exports.EthereumTransactionEIP1559 = exports.EthereumAccessList = exports.EthereumTransaction = exports.EthereumSignMessage = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../../constants\");\nconst params_1 = require(\"../../params\");\nexports.EthereumSignMessage = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n message: schema_utils_1.Type.String(),\n hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.EthereumTransaction = schema_utils_1.Type.Object({\n to: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n value: schema_utils_1.Type.String(),\n gasPrice: schema_utils_1.Type.String(),\n gasLimit: schema_utils_1.Type.String(),\n maxFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n maxPriorityFeePerGas: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n nonce: schema_utils_1.Type.String(),\n data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chainId: schema_utils_1.Type.Number(),\n txType: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n payment_req: schema_utils_1.Type.Optional(constants_1.PROTO.PaymentRequest)\n});\nexports.EthereumAccessList = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n storageKeys: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n});\nexports.EthereumTransactionEIP1559 = schema_utils_1.Type.Object({\n to: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Null()]),\n value: schema_utils_1.Type.String(),\n gasLimit: schema_utils_1.Type.String(),\n gasPrice: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n nonce: schema_utils_1.Type.String(),\n data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chainId: schema_utils_1.Type.Number(),\n maxFeePerGas: schema_utils_1.Type.String(),\n maxPriorityFeePerGas: schema_utils_1.Type.String(),\n accessList: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.EthereumAccessList)),\n payment_req: schema_utils_1.Type.Optional(constants_1.PROTO.PaymentRequest)\n});\nexports.EthereumSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n transaction: schema_utils_1.Type.Union([exports.EthereumTransaction, exports.EthereumTransactionEIP1559]),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.EthereumSignedTx = schema_utils_1.Type.Object({\n v: schema_utils_1.Type.String(),\n r: schema_utils_1.Type.String(),\n s: schema_utils_1.Type.String(),\n serializedTx: schema_utils_1.Type.String()\n});\nconst EthereumSignTypedDataTypeProperty = schema_utils_1.Type.Object({\n name: schema_utils_1.Type.String(),\n type: schema_utils_1.Type.String()\n});\nexports.EthereumSignTypedDataTypes = schema_utils_1.Type.Object({\n EIP712Domain: schema_utils_1.Type.Array(EthereumSignTypedDataTypeProperty)\n}, {\n additionalProperties: schema_utils_1.Type.Array(EthereumSignTypedDataTypeProperty)\n});\nexports.EthereumSignTypedDataMessage = schema_utils_1.Type.Object({\n types: exports.EthereumSignTypedDataTypes,\n primaryType: schema_utils_1.Type.String(),\n domain: schema_utils_1.Type.Object({\n name: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chainId: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Number(), schema_utils_1.Type.BigInt(), schema_utils_1.Type.String()])),\n verifyingContract: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n salt: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.ArrayBuffer(), schema_utils_1.Type.String()]))\n }),\n message: schema_utils_1.Type.Object({}, {\n additionalProperties: schema_utils_1.Type.Any()\n })\n});\nexports.EthereumSignTypedData = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n data: exports.EthereumSignTypedDataMessage,\n metamask_v4_compat: schema_utils_1.Type.Boolean(),\n domain_separator_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.EthereumSignTypedHash = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n data: exports.EthereumSignTypedDataMessage,\n metamask_v4_compat: schema_utils_1.Type.Boolean(),\n domain_separator_hash: schema_utils_1.Type.String(),\n message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n show_message_hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.EthereumVerifyMessage = schema_utils_1.Type.Object({\n address: schema_utils_1.Type.String(),\n message: schema_utils_1.Type.String(),\n hex: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n signature: schema_utils_1.Type.String()\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MoneroSignedTransaction = exports.MoneroRingCtSig = exports.MoneroSignTransaction = exports.MoneroTransactionData = exports.MoneroTransactionRsigData = exports.MoneroTransactionDestinationEntry = exports.MoneroAccountPublicAddress = exports.MoneroTransactionSourceEntry = exports.MoneroMultisigKLRki = exports.MoneroOutputEntry = exports.MoneroKeyImageSyncResult = exports.MoneroExportedKeyImage = exports.MoneroKeyImageSync = exports.MoneroSubAddressIndicesList = exports.MoneroTransferDetails = exports.MoneroWatchKey = exports.MoneroGetWatchKey = exports.MoneroGetAddress = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../../constants\");\nconst params_1 = require(\"../../params\");\nexports.MoneroGetAddress = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n address: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n showOnTrezor: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType),\n account: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n paymentId: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroGetAddress'\n});\nexports.MoneroGetWatchKey = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType)\n}, {\n $id: 'MoneroGetWatchKey'\n});\nexports.MoneroWatchKey = schema_utils_1.Type.Object({\n watch_key: schema_utils_1.Type.String(),\n address: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroWatchKey'\n});\nexports.MoneroTransferDetails = schema_utils_1.Type.Object({\n out_key: schema_utils_1.Type.String(),\n tx_pub_key: schema_utils_1.Type.String(),\n additional_tx_pub_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Array(schema_utils_1.Type.String()), schema_utils_1.Type.String()])),\n internal_output_index: schema_utils_1.Type.Number(),\n sub_addr_major: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n sub_addr_minor: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroTransferDetails'\n});\nexports.MoneroSubAddressIndicesList = schema_utils_1.Type.Object({\n account: schema_utils_1.Type.Number(),\n minor_indices: schema_utils_1.Type.Array(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroSubAddressIndicesList'\n});\nexports.MoneroKeyImageSync = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n networkType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumMoneroNetworkType),\n subs: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.MoneroSubAddressIndicesList)),\n tdis: schema_utils_1.Type.Array(exports.MoneroTransferDetails)\n}, {\n $id: 'MoneroKeyImageSync'\n});\nexports.MoneroExportedKeyImage = schema_utils_1.Type.Object({\n iv: schema_utils_1.Type.String(),\n key_image: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroExportedKeyImage'\n});\nexports.MoneroKeyImageSyncResult = schema_utils_1.Type.Object({\n key_images: schema_utils_1.Type.Array(exports.MoneroExportedKeyImage),\n signature: schema_utils_1.Type.String()\n}, {\n $id: 'MoneroKeyImageSyncResult'\n});\nexports.MoneroOutputEntry = schema_utils_1.Type.Object({\n idx: schema_utils_1.Type.Number(),\n key: schema_utils_1.Type.Object({\n dest: schema_utils_1.Type.String(),\n commitment: schema_utils_1.Type.String()\n })\n}, {\n $id: 'MoneroOutputEntry'\n});\nexports.MoneroMultisigKLRki = schema_utils_1.Type.Object({\n K: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n L: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n R: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n ki: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroMultisigKLRki'\n});\nexports.MoneroTransactionSourceEntry = schema_utils_1.Type.Object({\n outputs: schema_utils_1.Type.Array(exports.MoneroOutputEntry),\n real_output: schema_utils_1.Type.Number(),\n real_out_tx_key: schema_utils_1.Type.String(),\n real_out_additional_tx_keys: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n real_output_in_tx_index: schema_utils_1.Type.Number(),\n amount: schema_utils_1.Type.Number(),\n rct: schema_utils_1.Type.Boolean(),\n mask: schema_utils_1.Type.String(),\n subaddr_minor: schema_utils_1.Type.Number(),\n multisig_kLRki: schema_utils_1.Type.Optional(exports.MoneroMultisigKLRki)\n}, {\n $id: 'MoneroTransactionSourceEntry'\n});\nexports.MoneroAccountPublicAddress = schema_utils_1.Type.Object({\n spend_public_key: schema_utils_1.Type.String(),\n view_public_key: schema_utils_1.Type.String()\n});\nexports.MoneroTransactionDestinationEntry = schema_utils_1.Type.Object({\n amount: schema_utils_1.Type.Number(),\n addr: exports.MoneroAccountPublicAddress,\n is_subaddress: schema_utils_1.Type.Boolean(),\n original: schema_utils_1.Type.String(),\n is_integrated: schema_utils_1.Type.Boolean()\n}, {\n $id: 'MoneroTransactionDestinationEntry'\n});\nexports.MoneroTransactionRsigData = schema_utils_1.Type.Object({\n rsig_type: schema_utils_1.Type.Number(),\n offload_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n grouping: schema_utils_1.Type.Array(schema_utils_1.Type.Number()),\n mask: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rsig_parts: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String())),\n bp_version: schema_utils_1.Type.Number()\n}, {\n $id: 'MoneroTransactionRsigData'\n});\nexports.MoneroTransactionData = schema_utils_1.Type.Object({\n version: schema_utils_1.Type.Number(),\n payment_id: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n unlock_time: schema_utils_1.Type.Number(),\n outputs: schema_utils_1.Type.Array(exports.MoneroTransactionDestinationEntry),\n change_dts: schema_utils_1.Type.Optional(exports.MoneroTransactionDestinationEntry),\n num_inputs: schema_utils_1.Type.Number(),\n mixin: schema_utils_1.Type.Number(),\n fee: schema_utils_1.Type.Number(),\n account: schema_utils_1.Type.Number(),\n rsig_data: exports.MoneroTransactionRsigData,\n minor_indices: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n integrated_indices: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n client_version: schema_utils_1.Type.Number(),\n hard_fork: schema_utils_1.Type.Number(),\n monero_version: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n}, {\n $id: 'MoneroTransactionData'\n});\nexports.MoneroSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n networkType: constants_1.PROTO.EnumMoneroNetworkType,\n tsx_data: exports.MoneroTransactionData,\n inputs: schema_utils_1.Type.Array(exports.MoneroTransactionSourceEntry)\n}, {\n $id: 'MoneroSignTransaction'\n});\nexports.MoneroRingCtSig = schema_utils_1.Type.Object({\n txn_fee: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n message: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rv_type: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n}, {\n $id: 'MoneroRingCtSig'\n});\nexports.MoneroSignedTransaction = schema_utils_1.Type.Object({\n signatures: schema_utils_1.Type.Array(schema_utils_1.Type.String()),\n tx_prefix_hash: schema_utils_1.Type.String(),\n rv: exports.MoneroRingCtSig,\n cout_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n salt: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n rand_mult: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n tx_enc_keys: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n opening_key: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n pseudo_outs: schema_utils_1.Type.Array(schema_utils_1.Type.String())\n}, {\n $id: 'MoneroSignedTransaction'\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SolanaComposedTransaction = exports.SolanaComposeTransaction = exports.SolanaProgramName = exports.SolanaSignedTransaction = exports.SolanaSignTransaction = exports.SolanaTxAdditionalInfo = exports.SolanaTxTokenAccountInfo = exports.SolanaPublicKey = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../../params\");\nexports.SolanaPublicKey = schema_utils_1.Type.Intersect([params_1.PublicKey, schema_utils_1.Type.Object({\n publicKey: schema_utils_1.Type.String(),\n publicKeyBase58: schema_utils_1.Type.String()\n})]);\nexports.SolanaTxTokenAccountInfo = schema_utils_1.Type.Object({\n baseAddress: schema_utils_1.Type.String(),\n tokenProgram: schema_utils_1.Type.String(),\n tokenMint: schema_utils_1.Type.String(),\n tokenAccount: schema_utils_1.Type.String(),\n symbol: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.SolanaTxAdditionalInfo = schema_utils_1.Type.Object({\n tokenAccountsInfos: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.SolanaTxTokenAccountInfo, {\n minItems: 1\n })),\n isDevnet: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.SolanaSignTransaction = schema_utils_1.Type.Object({\n path: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Array(schema_utils_1.Type.Number())]),\n serializedTx: schema_utils_1.Type.String(),\n additionalInfo: schema_utils_1.Type.Optional(exports.SolanaTxAdditionalInfo),\n serialize: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\nexports.SolanaSignedTransaction = schema_utils_1.Type.Object({\n signature: schema_utils_1.Type.String(),\n serializedTx: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.SolanaProgramName = schema_utils_1.Type.Union([schema_utils_1.Type.Literal('spl-token'), schema_utils_1.Type.Literal('spl-token-2022')]);\nconst SolanaComposeTransactionCommon = {\n fromAddress: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.String(),\n blockHash: schema_utils_1.Type.String(),\n lastValidBlockHeight: schema_utils_1.Type.Number(),\n priorityFees: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({\n computeUnitPrice: schema_utils_1.Type.String(),\n computeUnitLimit: schema_utils_1.Type.String()\n })),\n token: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({\n mint: schema_utils_1.Type.String(),\n program: exports.SolanaProgramName,\n decimals: schema_utils_1.Type.Number(),\n accounts: schema_utils_1.Type.Array(schema_utils_1.Type.Object({\n publicKey: schema_utils_1.Type.String(),\n balance: schema_utils_1.Type.String()\n }))\n })),\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n};\nconst SolanaComposeSerializedTransaction = schema_utils_1.Type.Object({\n ...SolanaComposeTransactionCommon,\n toAddress: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n serializedTx: schema_utils_1.Type.String()\n});\nconst SolanaComposeTransactionRaw = schema_utils_1.Type.Object({\n ...SolanaComposeTransactionCommon,\n toAddress: schema_utils_1.Type.String(),\n serializedTx: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined())\n});\nexports.SolanaComposeTransaction = schema_utils_1.Type.Union([SolanaComposeSerializedTransaction, SolanaComposeTransactionRaw]);\nexports.SolanaComposedTransaction = schema_utils_1.Type.Object({\n serializedTx: schema_utils_1.Type.String(),\n additionalInfo: schema_utils_1.Type.Object({\n newAccountProgramName: schema_utils_1.Type.Optional(exports.SolanaProgramName),\n tokenAccountInfo: schema_utils_1.Type.Optional(exports.SolanaTxTokenAccountInfo)\n })\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StellarOperationMessage = exports.StellarSignedTx = exports.StellarSignTransaction = exports.StellarTransaction = exports.StellarOperation = exports.StellarClaimClaimableBalanceOperation = exports.StellarInflationOperation = exports.StellarBumpSequenceOperation = exports.StellarManageDataOperation = exports.StellarAccountMergeOperation = exports.StellarAllowTrustOperation = exports.StellarChangeTrustOperation = exports.StellarSetOptionsOperation = exports.StellarManageBuyOfferOperation = exports.StellarManageSellOfferOperation = exports.StellarPassiveSellOfferOperation = exports.StellarPathPaymentStrictSendOperation = exports.StellarPathPaymentStrictReceiveOperation = exports.StellarPaymentOperation = exports.StellarCreateAccountOperation = exports.StellarAsset = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../../constants\");\nconst params_1 = require(\"../../params\");\nexports.StellarAsset = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Union([constants_1.PROTO.EnumStellarAssetType, schema_utils_1.Type.KeyOfEnum(constants_1.PROTO.StellarAssetType)]),\n code: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n issuer: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.StellarCreateAccountOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('createAccount'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n destination: schema_utils_1.Type.String(),\n startingBalance: schema_utils_1.Type.String()\n});\nexports.StellarPaymentOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('payment'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n destination: schema_utils_1.Type.String(),\n asset: exports.StellarAsset,\n amount: schema_utils_1.Type.String()\n});\nexports.StellarPathPaymentStrictReceiveOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('pathPaymentStrictReceive'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n sendAsset: exports.StellarAsset,\n sendMax: schema_utils_1.Type.Uint(),\n destination: schema_utils_1.Type.String(),\n destAsset: exports.StellarAsset,\n destAmount: schema_utils_1.Type.Uint(),\n path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.StellarAsset))\n});\nexports.StellarPathPaymentStrictSendOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('pathPaymentStrictSend'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n sendAsset: exports.StellarAsset,\n sendAmount: schema_utils_1.Type.Uint(),\n destination: schema_utils_1.Type.String(),\n destAsset: exports.StellarAsset,\n destMin: schema_utils_1.Type.Uint(),\n path: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(exports.StellarAsset))\n});\nexports.StellarPassiveSellOfferOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('createPassiveSellOffer'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n buying: exports.StellarAsset,\n selling: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n price: schema_utils_1.Type.Object({\n n: schema_utils_1.Type.Number(),\n d: schema_utils_1.Type.Number()\n })\n});\nexports.StellarManageSellOfferOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('manageSellOffer'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n buying: exports.StellarAsset,\n selling: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n offerId: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n price: schema_utils_1.Type.Object({\n n: schema_utils_1.Type.Number(),\n d: schema_utils_1.Type.Number()\n })\n});\nexports.StellarManageBuyOfferOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('manageBuyOffer'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n buying: exports.StellarAsset,\n selling: exports.StellarAsset,\n amount: schema_utils_1.Type.Uint(),\n offerId: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n price: schema_utils_1.Type.Object({\n n: schema_utils_1.Type.Number(),\n d: schema_utils_1.Type.Number()\n })\n});\nexports.StellarSetOptionsOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('setOptions'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n signer: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumStellarSignerType,\n key: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]),\n weight: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n })),\n inflationDest: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n clearFlags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n setFlags: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n masterWeight: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n lowThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n medThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n highThreshold: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n homeDomain: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.StellarChangeTrustOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('changeTrust'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n line: exports.StellarAsset,\n limit: schema_utils_1.Type.String()\n});\nexports.StellarAllowTrustOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('allowTrust'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n trustor: schema_utils_1.Type.String(),\n assetCode: schema_utils_1.Type.String(),\n assetType: constants_1.PROTO.EnumStellarAssetType,\n authorize: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Boolean(), schema_utils_1.Type.Undefined()]))\n});\nexports.StellarAccountMergeOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('accountMerge'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n destination: schema_utils_1.Type.String()\n});\nexports.StellarManageDataOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('manageData'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n name: schema_utils_1.Type.String(),\n value: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]))\n});\nexports.StellarBumpSequenceOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('bumpSequence'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n bumpTo: schema_utils_1.Type.Uint()\n});\nexports.StellarInflationOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('inflation'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\nexports.StellarClaimClaimableBalanceOperation = schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('claimClaimableBalance'),\n source: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n balanceId: schema_utils_1.Type.String()\n});\nexports.StellarOperation = schema_utils_1.Type.Union([exports.StellarCreateAccountOperation, exports.StellarPaymentOperation, exports.StellarPathPaymentStrictReceiveOperation, exports.StellarPathPaymentStrictSendOperation, exports.StellarPassiveSellOfferOperation, exports.StellarManageSellOfferOperation, exports.StellarManageBuyOfferOperation, exports.StellarSetOptionsOperation, exports.StellarChangeTrustOperation, exports.StellarAllowTrustOperation, exports.StellarAccountMergeOperation, exports.StellarInflationOperation, exports.StellarManageDataOperation, exports.StellarBumpSequenceOperation, exports.StellarClaimClaimableBalanceOperation]);\nexports.StellarTransaction = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Number(),\n sequence: schema_utils_1.Type.Uint(),\n timebounds: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({\n minTime: schema_utils_1.Type.Number(),\n maxTime: schema_utils_1.Type.Number()\n })),\n memo: schema_utils_1.Type.Optional(schema_utils_1.Type.Object({\n type: constants_1.PROTO.EnumStellarMemoType,\n id: schema_utils_1.Type.Optional(schema_utils_1.Type.Uint()),\n text: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n hash: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]))\n })),\n operations: schema_utils_1.Type.Array(exports.StellarOperation)\n});\nexports.StellarSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n networkPassphrase: schema_utils_1.Type.String(),\n transaction: exports.StellarTransaction\n});\nexports.StellarSignedTx = schema_utils_1.Type.Object({\n publicKey: schema_utils_1.Type.String(),\n signature: schema_utils_1.Type.String()\n});\nexports.StellarOperationMessage = schema_utils_1.Type.Union([schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarCreateAccountOp')\n}), constants_1.PROTO.StellarCreateAccountOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarPaymentOp')\n}), constants_1.PROTO.StellarPaymentOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarPathPaymentStrictReceiveOp')\n}), constants_1.PROTO.StellarPathPaymentStrictReceiveOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarPathPaymentStrictSendOp')\n}), constants_1.PROTO.StellarPathPaymentStrictSendOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarManageSellOfferOp')\n}), constants_1.PROTO.StellarManageSellOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarManageBuyOfferOp')\n}), constants_1.PROTO.StellarManageBuyOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarCreatePassiveSellOfferOp')\n}), constants_1.PROTO.StellarCreatePassiveSellOfferOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarSetOptionsOp')\n}), constants_1.PROTO.StellarSetOptionsOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarChangeTrustOp')\n}), constants_1.PROTO.StellarChangeTrustOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarAllowTrustOp')\n}), constants_1.PROTO.StellarAllowTrustOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarAccountMergeOp')\n}), constants_1.PROTO.StellarAccountMergeOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarManageDataOp')\n}), constants_1.PROTO.StellarManageDataOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarBumpSequenceOp')\n}), constants_1.PROTO.StellarBumpSequenceOp]), schema_utils_1.Type.Intersect([schema_utils_1.Type.Object({\n type: schema_utils_1.Type.Literal('StellarClaimClaimableBalanceOp')\n}), constants_1.PROTO.StellarClaimClaimableBalanceOp])]);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TezosSignTransaction = exports.TezosOperation = exports.TezosDelegationOperation = exports.TezosOriginationOperation = exports.TezosTransactionOperation = exports.TezosParametersManager = exports.TezosManagerTransfer = exports.TezosRevealOperation = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../../params\");\nexports.TezosRevealOperation = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Number(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n public_key: schema_utils_1.Type.String()\n});\nexports.TezosManagerTransfer = schema_utils_1.Type.Object({\n destination: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.Number()\n});\nexports.TezosParametersManager = schema_utils_1.Type.Object({\n set_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n cancel_delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n transfer: schema_utils_1.Type.Optional(exports.TezosManagerTransfer)\n});\nexports.TezosTransactionOperation = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n destination: schema_utils_1.Type.String(),\n amount: schema_utils_1.Type.Number(),\n counter: schema_utils_1.Type.Number(),\n fee: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number(),\n parameters: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.Number())),\n parameters_manager: schema_utils_1.Type.Optional(exports.TezosParametersManager)\n});\nexports.TezosOriginationOperation = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n balance: schema_utils_1.Type.Number(),\n delegate: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n script: params_1.DerivationPath,\n fee: schema_utils_1.Type.Number(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number()\n});\nexports.TezosDelegationOperation = schema_utils_1.Type.Object({\n source: schema_utils_1.Type.String(),\n delegate: schema_utils_1.Type.String(),\n fee: schema_utils_1.Type.Number(),\n counter: schema_utils_1.Type.Number(),\n gas_limit: schema_utils_1.Type.Number(),\n storage_limit: schema_utils_1.Type.Number()\n});\nexports.TezosOperation = schema_utils_1.Type.Object({\n reveal: schema_utils_1.Type.Optional(exports.TezosRevealOperation),\n transaction: schema_utils_1.Type.Optional(exports.TezosTransactionOperation),\n origination: schema_utils_1.Type.Optional(exports.TezosOriginationOperation),\n delegation: schema_utils_1.Type.Optional(exports.TezosDelegationOperation)\n});\nexports.TezosSignTransaction = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n branch: schema_utils_1.Type.String(),\n operation: exports.TezosOperation,\n chunkify: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ThpPairingMethod = exports.FirmwareType = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./api\"), exports);\ntslib_1.__exportStar(require(\"./account\"), exports);\ntslib_1.__exportStar(require(\"./coinInfo\"), exports);\ntslib_1.__exportStar(require(\"./device\"), exports);\ntslib_1.__exportStar(require(\"./fees\"), exports);\ntslib_1.__exportStar(require(\"./firmware\"), exports);\ntslib_1.__exportStar(require(\"./params\"), exports);\ntslib_1.__exportStar(require(\"./settings\"), exports);\ntslib_1.__exportStar(require(\"./api/cardano\"), exports);\ntslib_1.__exportStar(require(\"./api/bitcoin\"), exports);\ntslib_1.__exportStar(require(\"./api/eos\"), exports);\ntslib_1.__exportStar(require(\"./api/ripple\"), exports);\ntslib_1.__exportStar(require(\"./api/ethereum\"), exports);\ntslib_1.__exportStar(require(\"./api/monero\"), exports);\ntslib_1.__exportStar(require(\"./api/solana\"), exports);\ntslib_1.__exportStar(require(\"./api/stellar\"), exports);\ntslib_1.__exportStar(require(\"./api/tezos\"), exports);\nvar device_utils_1 = require(\"@trezor/device-utils\");\nObject.defineProperty(exports, \"FirmwareType\", {\n enumerable: true,\n get: function () {\n return device_utils_1.FirmwareType;\n }\n});\nvar messages_1 = require(\"@trezor/protocol/lib/protocol-thp/messages\");\nObject.defineProperty(exports, \"ThpPairingMethod\", {\n enumerable: true,\n get: function () {\n return messages_1.ThpPairingMethod;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst types_1 = require(\"../types\");\nclass BlockchainDisconnect extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(types_1.CoinObj, payload);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity: payload.identity\n };\n }\n get info() {\n return '';\n }\n run() {\n const backend = (0, BlockchainLink_1.findBackend)(this.params.coinInfo.shortcut, this.params.identity);\n backend?.disconnect();\n return Promise.resolve({\n disconnected: true\n });\n }\n}\nexports.default = BlockchainDisconnect;\n//# sourceMappingURL=blockchainDisconnect.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=array.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BrandedArity2 = exports.Branded = void 0;\nclass Branded {\n __type;\n}\nexports.Branded = Branded;\nclass BrandedArity2 {\n __type1;\n __type2;\n}\nexports.BrandedArity2 = BrandedArity2;\n//# sourceMappingURL=branded.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.exhaustive = void 0;\nclass UnreachableCaseError extends Error {\n constructor(val, message) {\n super(`${message}: [${JSON.stringify(val)}]`);\n }\n}\nconst exhaustive = (unhandledCase, message = 'Unreachable case') => {\n throw new UnreachableCaseError(unhandledCase, message);\n};\nexports.exhaustive = exhaustive;\n//# sourceMappingURL=exhaustive.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=object.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=overloads.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.err = void 0;\nexports.ok = ok;\nfunction ok(value = undefined) {\n return {\n ok: true,\n value: value\n };\n}\nconst err = error => ({\n ok: false,\n error\n});\nexports.err = err;\n//# sourceMappingURL=result.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=timeout.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./array\"), exports);\ntslib_1.__exportStar(require(\"./branded\"), exports);\ntslib_1.__exportStar(require(\"./exhaustive\"), exports);\ntslib_1.__exportStar(require(\"./object\"), exports);\ntslib_1.__exportStar(require(\"./overloads\"), exports);\ntslib_1.__exportStar(require(\"./result\"), exports);\ntslib_1.__exportStar(require(\"./timeout\"), exports);\ntslib_1.__exportStar(require(\"./utils\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MiscFeeLevels = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst cloneObject_1 = require(\"@trezor/utils/lib/cloneObject\");\nclass MiscFeeLevels {\n coinInfo;\n levels;\n wasFetchedSuccessfully = false;\n constructor(coinInfo) {\n this.coinInfo = coinInfo;\n this.levels = (0, cloneObject_1.cloneObject)(coinInfo.defaultFees);\n }\n async load(blockchain, request) {\n try {\n const [response] = await blockchain.estimateFee(request);\n const fee = new bigNumber_1.BigNumber(response.feePerUnit).toNumber();\n const feePerUnit = Math.min(this.coinInfo.maxFee, Math.max(this.coinInfo.minFee, fee)).toString();\n this.levels[0] = {\n ...this.levels[0],\n ...response,\n feePerUnit\n };\n this.wasFetchedSuccessfully = true;\n } catch {}\n return this.levels;\n }\n}\nexports.MiscFeeLevels = MiscFeeLevels;\n//# sourceMappingURL=MiscFeeLevels.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BitcoinFeeLevels = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst MiscFeeLevels_1 = require(\"./MiscFeeLevels\");\nconst defaultFeeLevels_1 = require(\"../../data/defaultFeeLevels\");\nclass BitcoinFeeLevels extends MiscFeeLevels_1.MiscFeeLevels {\n coinInfo;\n longTermFeeRate;\n constructor(coinInfo) {\n super(coinInfo);\n this.coinInfo = coinInfo;\n this.longTermFeeRate = defaultFeeLevels_1.DEFAULT_BITCOIN_LONGTERM_FEE_RATE;\n }\n async load(blockchain) {\n try {\n const {\n minFee,\n maxFee\n } = this.coinInfo;\n const blocks = this.levels.map(level => level.blocks).filter(b => b > 0);\n const response = await blockchain.estimateFee({\n blocks\n });\n response.forEach(({\n feePerUnit: feePerKB\n }, index) => {\n const feePerB = new bigNumber_1.BigNumber(feePerKB).div(1000).toNumber();\n if (isNaN(feePerB) || feePerB < 0) return;\n const trimmedFeePerUnit = Math.min(maxFee, Math.max(minFee, feePerB));\n this.levels[index].feePerUnit = trimmedFeePerUnit.toString();\n });\n this.wasFetchedSuccessfully = true;\n } catch {}\n return this.levels;\n }\n updateBitcoinCustomFee(feePerUnit) {\n this.levels = this.levels.filter(l => l.label !== 'custom');\n this.levels.push({\n label: 'custom',\n feePerUnit,\n blocks: -1\n });\n }\n}\nexports.BitcoinFeeLevels = BitcoinFeeLevels;\n//# sourceMappingURL=BitcoinFeeLevels.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EthereumFeeLevels = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst MiscFeeLevels_1 = require(\"./MiscFeeLevels\");\nclass EthereumFeeLevels extends MiscFeeLevels_1.MiscFeeLevels {\n coinInfo;\n constructor(coinInfo) {\n super(coinInfo);\n this.coinInfo = coinInfo;\n }\n async load(blockchain, request) {\n try {\n const [response] = await blockchain.estimateFee(request);\n const {\n eip1559\n } = response;\n const maxFeeInWei = new bigNumber_1.BigNumber(this.coinInfo.maxFee).multipliedBy('1e+9').toNumber();\n const minFeeInWei = new bigNumber_1.BigNumber(this.coinInfo.minFee).multipliedBy('1e+9').toNumber();\n const feeInWei = new bigNumber_1.BigNumber(response.feePerUnit).toNumber();\n const feePerUnit = Math.min(maxFeeInWei, Math.max(minFeeInWei, feeInWei)).toString();\n if (eip1559?.baseFeePerGas) {\n const minMaxPriorityFeePerGas = new bigNumber_1.BigNumber(this.coinInfo.minPriorityFee).multipliedBy('1e+9').toNumber();\n const levels = ['low', 'medium', 'high'].map(levelKey => {\n const level = eip1559[levelKey];\n const label = levelKey === 'medium' ? 'normal' : levelKey;\n if (!level?.maxFeePerGas || !level?.maxPriorityFeePerGas) {\n return null;\n }\n const maxFeePerGas = bigNumber_1.BigNumber.max(this.coinInfo.minFee, level.maxFeePerGas, minMaxPriorityFeePerGas).toString();\n const maxPriorityFeePerGas = bigNumber_1.BigNumber.max(minMaxPriorityFeePerGas, bigNumber_1.BigNumber.min(maxFeePerGas, level.maxPriorityFeePerGas)).toString();\n return {\n label,\n feePerUnit,\n feeLimit: response.feeLimit,\n blocks: Math.ceil(Math.max(1, (level?.maxWaitTimeEstimate || 0) / 1000 / this.coinInfo.blockTime)),\n baseFeePerGas: eip1559.baseFeePerGas,\n maxFeePerGas,\n maxPriorityFeePerGas\n };\n });\n this.levels = levels.filter(level => level);\n } else {\n this.levels[0] = {\n ...this.levels[0],\n ...response,\n feePerUnit\n };\n }\n this.wasFetchedSuccessfully = true;\n } catch {}\n return this.levels;\n }\n}\nexports.EthereumFeeLevels = EthereumFeeLevels;\n//# sourceMappingURL=EthereumFeeLevels.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOrInitBitcoinFeeLevels = exports.getOrInitFeeLevels = void 0;\nconst type_utils_1 = require(\"@trezor/type-utils\");\nconst BitcoinFeeLevels_1 = require(\"./BitcoinFeeLevels\");\nconst EthereumFeeLevels_1 = require(\"./EthereumFeeLevels\");\nconst MiscFeeLevels_1 = require(\"./MiscFeeLevels\");\nconst instancesPerCoin = {};\nconst feeLevelsPerTypeFactory = coinInfo => {\n const {\n type\n } = coinInfo;\n switch (type) {\n case 'bitcoin':\n return new BitcoinFeeLevels_1.BitcoinFeeLevels(coinInfo);\n case 'ethereum':\n return new EthereumFeeLevels_1.EthereumFeeLevels(coinInfo);\n case 'misc':\n case 'nem':\n return new MiscFeeLevels_1.MiscFeeLevels(coinInfo);\n default:\n return (0, type_utils_1.exhaustive)(type);\n }\n};\nconst getOrInitFeeLevels = coinInfo => {\n const {\n shortcut\n } = coinInfo;\n if (!Object.prototype.hasOwnProperty.call(instancesPerCoin, shortcut)) {\n instancesPerCoin[shortcut] = feeLevelsPerTypeFactory(coinInfo);\n }\n return instancesPerCoin[shortcut];\n};\nexports.getOrInitFeeLevels = getOrInitFeeLevels;\nconst getOrInitBitcoinFeeLevels = coinInfo => (0, exports.getOrInitFeeLevels)(coinInfo);\nexports.getOrInitBitcoinFeeLevels = getOrInitBitcoinFeeLevels;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst fees_1 = require(\"../backend/fees\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainEstimateFee extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'request',\n type: 'object'\n }]);\n const {\n request,\n identity\n } = payload;\n if (request) {\n (0, paramsValidator_1.validateParams)(request, [{\n name: 'blocks',\n type: 'array'\n }, {\n name: 'specific',\n type: 'object'\n }, {\n name: 'feeLevels',\n type: 'string'\n }]);\n if (request.specific) {\n (0, paramsValidator_1.validateParams)(request.specific, [{\n name: 'conservative',\n type: 'boolean'\n }, {\n name: 'data',\n type: 'string'\n }, {\n name: 'from',\n type: 'string'\n }, {\n name: 'to',\n type: 'string'\n }, {\n name: 'txsize',\n type: 'number'\n }, {\n name: 'newAccountProgramName',\n type: 'string'\n }]);\n }\n }\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity,\n request\n };\n }\n async run() {\n const {\n coinInfo,\n identity,\n request\n } = this.params;\n const feeInfo = {\n blockTime: coinInfo.blockTime,\n minFee: coinInfo.minFee,\n maxFee: coinInfo.maxFee,\n minPriorityFee: coinInfo.minPriorityFee,\n dustLimit: coinInfo.type === 'bitcoin' ? coinInfo.dustLimit : undefined,\n levels: []\n };\n if (request?.feeLevels) {\n const feeLevelsInstance = (0, fees_1.getOrInitFeeLevels)(coinInfo);\n if (request.feeLevels === 'smart') {\n const backend = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity);\n await feeLevelsInstance.load(backend, request);\n }\n feeInfo.levels = feeLevelsInstance.levels;\n } else {\n const backend = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity);\n feeInfo.levels = await backend.estimateFee(request || {});\n }\n return feeInfo;\n }\n}\nexports.default = BlockchainEstimateFee;\n//# sourceMappingURL=blockchainEstimateFee.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainGetAccountBalanceHistory extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'descriptor',\n type: 'string',\n required: true\n }, {\n name: 'from',\n type: 'number'\n }, {\n name: 'to',\n type: 'number'\n }, {\n name: 'groupBy',\n type: 'number'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity: payload.identity,\n request: {\n descriptor: payload.descriptor,\n from: payload.from,\n to: payload.to,\n groupBy: payload.groupBy\n }\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.getAccountBalanceHistory(this.params.request);\n }\n}\nexports.default = BlockchainGetAccountBalanceHistory;\n//# sourceMappingURL=blockchainGetAccountBalanceHistory.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainGetCurrentFiatRates extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'currencies',\n type: 'array',\n required: false\n }, {\n name: 'token',\n type: 'string'\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n currencies: payload.currencies,\n token: payload.token,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.getCurrentFiatRates({\n currencies: this.params.currencies,\n token: this.params.token\n });\n }\n}\nexports.default = BlockchainGetCurrentFiatRates;\n//# sourceMappingURL=blockchainGetCurrentFiatRates.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainGetInfo extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.getNetworkInfo();\n }\n}\nexports.default = BlockchainGetInfo;\n//# sourceMappingURL=blockchainGetInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainEvmRpcCall extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'from',\n type: 'string'\n }, {\n name: 'to',\n type: 'string',\n required: true\n }, {\n name: 'data',\n type: 'string',\n required: true\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity: payload.identity,\n request: {\n from: payload.from,\n to: payload.to,\n data: payload.data\n }\n };\n }\n get info() {\n return 'Blockchain Evm Rpc Call';\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n const response = await backend.rpcCall(this.params.request);\n return response;\n }\n}\nexports.default = BlockchainEvmRpcCall;\n//# sourceMappingURL=blockchainEvmRpcCall.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainGetFiatRatesForTimestamps extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'currencies',\n type: 'array',\n required: false\n }, {\n name: 'timestamps',\n type: 'array',\n required: true\n }, {\n name: 'token',\n type: 'string'\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n currencies: payload.currencies,\n timestamps: payload.timestamps,\n token: payload.token,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.getFiatRatesForTimestamps({\n currencies: this.params.currencies,\n timestamps: this.params.timestamps,\n token: this.params.token\n });\n }\n}\nexports.default = BlockchainGetFiatRatesForTimestamps;\n//# sourceMappingURL=blockchainGetFiatRatesForTimestamps.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainGetTransactions extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'txs',\n type: 'array',\n required: true\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n txs: payload.txs,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.getTransactions(this.params.txs);\n }\n}\nexports.default = BlockchainGetTransactions;\n//# sourceMappingURL=blockchainGetTransactions.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainSetCustomBackend extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'blockchainLink',\n type: 'object'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.setCustomBackend)(coinInfo, payload.blockchainLink);\n this.params = {\n coinInfo\n };\n }\n get info() {\n return '';\n }\n async run() {\n await (0, BlockchainLink_1.reconnectAllBackends)(this.params.coinInfo);\n return true;\n }\n}\nexports.default = BlockchainSetCustomBackend;\n//# sourceMappingURL=blockchainSetCustomBackend.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainSubscribe extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'accounts',\n type: 'array',\n allowEmpty: true\n }, {\n name: 'blocks',\n type: 'boolean'\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n if (payload.accounts) {\n payload.accounts.forEach(account => {\n (0, paramsValidator_1.validateParams)(account, [{\n name: 'descriptor',\n type: 'string',\n required: true\n }]);\n });\n }\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n accounts: payload.accounts,\n blocks: payload.blocks ?? true,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n const {\n blocks,\n accounts\n } = this.params;\n let result = {\n subscribed: false\n };\n if (blocks) result = await backend.subscribeBlocks();\n if (accounts) result = await backend.subscribeAccounts(accounts);\n return result;\n }\n}\nexports.default = BlockchainSubscribe;\n//# sourceMappingURL=blockchainSubscribe.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainSubscribeFiatRates extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'currency',\n type: 'string',\n required: false\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n currency: payload.currency,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.subscribeFiatRates(this.params.currency);\n }\n}\nexports.default = BlockchainSubscribeFiatRates;\n//# sourceMappingURL=blockchainSubscribeFiatRates.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainUnsubscribe extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'accounts',\n type: 'array',\n allowEmpty: true\n }, {\n name: 'blocks',\n type: 'boolean'\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n if (payload.accounts) {\n payload.accounts.forEach(account => {\n (0, paramsValidator_1.validateParams)(account, [{\n name: 'descriptor',\n type: 'string',\n required: true\n }]);\n });\n }\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n accounts: payload.accounts,\n coinInfo,\n identity: payload.identity,\n blocks: payload.blocks ?? false\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n const {\n accounts\n } = this.params;\n if (this.params.blocks) {\n return backend.unsubscribeBlocks();\n }\n if (accounts) {\n return backend.unsubscribeAccounts(accounts);\n }\n return backend.unsubscribeAll();\n }\n}\nexports.default = BlockchainUnsubscribe;\n//# sourceMappingURL=blockchainUnsubscribe.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nclass BlockchainUnsubscribeFiatRates extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.params = {\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n return backend.unsubscribeFiatRates();\n }\n}\nexports.default = BlockchainUnsubscribeFiatRates;\n//# sourceMappingURL=blockchainUnsubscribeFiatRates.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ChangeLanguage = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.ChangeLanguage = schema_utils_1.Type.Union([schema_utils_1.Type.Object({\n binary: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n language: schema_utils_1.Type.String(),\n baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n}), schema_utils_1.Type.Object({\n binary: schema_utils_1.Type.ArrayBuffer(),\n language: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n baseUrl: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined())\n})]);\n//# sourceMappingURL=changeLanguage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst changeLanguage_1 = require(\"../types/api/changeLanguage\");\nclass ChangeLanguage extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.useEmptyPassphrase = true;\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useDeviceState = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(changeLanguage_1.ChangeLanguage, payload);\n this.params = payload;\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'confirm',\n label: 'Proceed'\n },\n label: 'Do you want to change language?'\n };\n }\n run() {\n const {\n language,\n binary\n } = this.params;\n if (binary) {\n return this.device.changeLanguage({\n binary\n });\n } else {\n return this.device.changeLanguage({\n language\n });\n }\n }\n}\nexports.default = ChangeLanguage;\n//# sourceMappingURL=changeLanguage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass ChangePin extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.ChangePin, payload);\n this.params = {\n remove: payload.remove\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('ChangePin', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = ChangePin;\n//# sourceMappingURL=changePin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass ChangeWipeCode extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useDeviceState = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'remove',\n type: 'boolean'\n }]);\n this.params = {\n remove: payload.remove\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('ChangeWipeCode', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = ChangeWipeCode;\n//# sourceMappingURL=changeWipeCode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CipherKeyValue = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../params\");\nexports.CipherKeyValue = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n key: schema_utils_1.Type.String(),\n value: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]),\n encrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n askOnEncrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n askOnDecrypt: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n iv: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Buffer()]))\n});\n//# sourceMappingURL=cipherKeyValue.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst cipherKeyValue_1 = require(\"../types/api/cipherKeyValue\");\nconst params_1 = require(\"../types/params\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass CipherKeyValue extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read', 'write'];\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n this.useEmptyPassphrase = typeof payload.useEmptyPassphrase === 'boolean' ? payload.useEmptyPassphrase : true;\n (0, schema_utils_1.Assert)((0, params_1.Bundle)(cipherKeyValue_1.CipherKeyValue), payload);\n this.params = payload.bundle.map(batch => ({\n address_n: (0, pathUtils_1.validatePath)(batch.path),\n key: batch.key,\n value: batch.value instanceof Buffer ? batch.value.toString('hex') : batch.value,\n encrypt: batch.encrypt,\n ask_on_encrypt: batch.askOnEncrypt,\n ask_on_decrypt: batch.askOnDecrypt,\n iv: batch.iv instanceof Buffer ? batch.iv.toString('hex') : batch.iv\n }));\n }\n get info() {\n return 'Cipher key value';\n }\n async run() {\n const responses = [];\n const cmd = this.device.getCommands();\n for (let i = 0; i < this.params.length; i++) {\n const response = await cmd.typedCall('CipherKeyValue', 'CipheredKeyValue', this.params[i]);\n responses.push(response.message);\n if (this.hasBundle) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress: i,\n response\n }));\n }\n }\n return this.hasBundle ? responses : responses[0];\n }\n}\nexports.default = CipherKeyValue;\n//# sourceMappingURL=cipherKeyValue.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass EvoluGetNode extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluGetNode, payload);\n this.params = {\n proof_of_delegated_identity: payload.proof_of_delegated_identity\n };\n }\n get info() {\n return 'Evolu get node';\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('EvoluGetNode', 'EvoluNode', this.params);\n return response.message;\n }\n}\nexports.default = EvoluGetNode;\n//# sourceMappingURL=evoluGetNode.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass EvoluSignRegistrationRequest extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluSignRegistrationRequest, payload);\n this.params = {\n challenge_from_server: payload.challenge_from_server,\n size_to_acquire: payload.size_to_acquire,\n proof_of_delegated_identity: payload.proof_of_delegated_identity\n };\n }\n get info() {\n return 'Evolu sign registration request';\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('EvoluSignRegistrationRequest', 'EvoluRegistrationRequest', this.params);\n return response.message;\n }\n}\nexports.default = EvoluSignRegistrationRequest;\n//# sourceMappingURL=evoluSignRegistrationRequest.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass EvoluGetDelegatedIdentityKey extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.EvoluGetDelegatedIdentityKey, payload);\n if (payload.thp !== undefined) {\n const staticKey = Buffer.from(payload.thp.staticHostKey, 'hex');\n const hostStaticKeys = protocol_1.thp.getCurve25519KeyPair(staticKey);\n this.params = {\n thp_credential: payload.thp.credential,\n host_static_public_key: hostStaticKeys.publicKey.toString('hex')\n };\n } else {\n this.params = {};\n }\n }\n get info() {\n return 'Evolu get delegated identity key';\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('EvoluGetDelegatedIdentityKey', 'EvoluDelegatedIdentityKey', this.params);\n return response.message;\n }\n}\nexports.default = EvoluGetDelegatedIdentityKey;\n//# sourceMappingURL=evoluGetDelegatedIdentityKey.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createPendingTransaction = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst createPendingTransaction = (tx, {\n addresses,\n inputs,\n outputs\n}) => {\n const valueOut = outputs.reduce((sum, out) => (0, bigNumber_1.BigNumber)(sum).plus(out.amount), new bigNumber_1.BigNumber('0'));\n const valueIn = inputs.reduce((sum, ins) => (0, bigNumber_1.BigNumber)(sum).plus(ins.amount), new bigNumber_1.BigNumber('0'));\n const allAddresses = addresses.unused.concat(addresses.used, addresses.change);\n const findAddress = ({\n address_n\n }) => {\n const path = address_n ? (0, pathUtils_1.getSerializedPath)(address_n) : undefined;\n return allAddresses.filter(address => address.path === path).map(address => address.address);\n };\n return {\n txid: tx.getId(),\n hex: tx.toHex(),\n blockHeight: 0,\n blockTime: Math.floor(Date.now() / 1000),\n confirmations: 0,\n vsize: tx.virtualSize(),\n size: tx.weight(),\n value: valueOut.toString(),\n valueIn: valueIn.toString(),\n fees: valueIn.minus(valueOut).toString(),\n vin: inputs.map((ins, n) => ({\n n,\n txid: ins.prev_hash,\n vout: ins.prev_index,\n isAddress: true,\n addresses: findAddress(ins),\n value: ins.amount.toString(),\n sequence: ins.sequence\n })),\n vout: outputs.map((out, n) => {\n let transformedAddresses = [];\n if (out.address) {\n transformedAddresses = [out.address];\n } else if ('op_return_data' in out) {\n transformedAddresses = [`OP_RETURN (${Buffer.from(out.op_return_data, 'hex').toString('ascii')})`];\n } else {\n transformedAddresses = findAddress(out);\n }\n return {\n n,\n isAddress: out.script_type !== 'PAYTOOPRETURN',\n addresses: transformedAddresses,\n value: out.amount.toString()\n };\n })\n };\n};\nexports.createPendingTransaction = createPendingTransaction;\n//# sourceMappingURL=createPendingTx.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.enhanceSignTx = void 0;\nconst BlockchainLink_1 = require(\"../../backend/BlockchainLink\");\nconst enhanceSignTx = (options, coinInfo) => {\n if (coinInfo.shortcut === 'ZEC' || coinInfo.shortcut === 'TAZ') {\n if (typeof options.overwintered !== 'boolean') {\n options.overwintered = true;\n }\n if (typeof options.version !== 'number') {\n options.version = 5;\n }\n if (typeof options.version_group_id !== 'number') {\n options.version_group_id = 0x26a7270a;\n }\n if (typeof options.branch_id !== 'number') {\n const backend = (0, BlockchainLink_1.findBackend)(coinInfo.shortcut);\n if (backend && backend.serverInfo?.consensusBranchId) {\n options.branch_id = backend.serverInfo.consensusBranchId;\n } else {\n options.branch_id = 0xc2d6d0b4;\n }\n }\n }\n if (coinInfo.shortcut === 'KMD') {\n if (typeof options.overwintered !== 'boolean') {\n options.overwintered = true;\n }\n if (typeof options.version !== 'number') {\n options.version = 4;\n }\n if (typeof options.version_group_id !== 'number') {\n options.version_group_id = 0x892f2085;\n }\n if (typeof options.branch_id !== 'number') {\n options.branch_id = 0x76b809bb;\n }\n }\n if (coinInfo.shortcut === 'KOTO') {\n if (typeof options.overwintered !== 'boolean') {\n options.overwintered = true;\n }\n if (typeof options.version !== 'number') {\n options.version = 4;\n }\n if (typeof options.version_group_id !== 'number') {\n options.version_group_id = 0x892f2085;\n }\n if (typeof options.branch_id !== 'number') {\n options.branch_id = 0x2bb40e60;\n }\n }\n if (coinInfo.shortcut === 'PPC' || coinInfo.shortcut === 'tPPC') {\n if (typeof options.timestamp !== 'number') {\n options.timestamp = Math.round(new Date().getTime() / 1000);\n }\n }\n return options;\n};\nexports.enhanceSignTx = enhanceSignTx;\n//# sourceMappingURL=enhanceSignTx.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertMultisigPubKey = exports.xpubToHDNodeType = exports.convertXpub = void 0;\nexports.xpubDerive = xpubDerive;\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst constants_1 = require(\"../constants\");\nconst pubNode2bjsNode = (node, network) => {\n const chainCode = Buffer.from(node.chain_code, 'hex');\n const publicKey = Buffer.from(node.public_key, 'hex');\n const res = utxo_lib_1.bip32.fromPublicKey(publicKey, chainCode, network);\n res.__DEPTH = node.depth;\n res.__INDEX = node.child_num;\n res.__PARENT_FINGERPRINT = node.fingerprint;\n return res;\n};\nconst convertXpub = (xpub, originalNetwork, requestedNetwork) => {\n const node = utxo_lib_1.bip32.fromBase58(xpub, originalNetwork);\n if (requestedNetwork) {\n node.network = requestedNetwork;\n }\n return node.toBase58();\n};\nexports.convertXpub = convertXpub;\nconst pubKey2bjsNode = (key, network) => {\n const keyNode = key.node;\n const bjsNode = pubNode2bjsNode(keyNode, network);\n const bjsXpub = bjsNode.toBase58();\n const keyXpub = (0, exports.convertXpub)(key.xpub, network);\n if (bjsXpub !== keyXpub) {\n throw constants_1.ERRORS.TypedError('Runtime', `pubKey2bjsNode: Invalid public key transmission detected. Key: ${bjsXpub}, Received: ${keyXpub}`);\n }\n return bjsNode;\n};\nconst checkDerivation = (parBjsNode, childBjsNode, suffix) => {\n const derivedChildBjsNode = parBjsNode.derive(suffix);\n const derivedXpub = derivedChildBjsNode.toBase58();\n const compXpub = childBjsNode.toBase58();\n if (derivedXpub !== compXpub) {\n throw constants_1.ERRORS.TypedError('Runtime', `checkDerivation: Invalid child cross-check public key. Derived: ${derivedXpub}, Received: ${compXpub}`);\n }\n};\nfunction xpubDerive(xpub, childXPub, suffix, network, _requestedNetwork) {\n const resNode = pubKey2bjsNode(xpub, network);\n const childNode = pubKey2bjsNode(childXPub, network);\n checkDerivation(resNode, childNode, suffix);\n return xpub;\n}\nconst xpubToHDNodeType = (xpub, network) => {\n const hd = utxo_lib_1.bip32.fromBase58(xpub, network);\n return {\n depth: hd.depth,\n child_num: hd.index,\n fingerprint: hd.parentFingerprint,\n public_key: hd.publicKey.toString('hex'),\n chain_code: hd.chainCode.toString('hex')\n };\n};\nexports.xpubToHDNodeType = xpubToHDNodeType;\nconst convertMultisigPubKey = (network, utxo) => {\n if ('multisig' in utxo && utxo.multisig?.pubkeys) {\n utxo.multisig.pubkeys.forEach(pk => {\n if (typeof pk.node === 'string') {\n pk.node = (0, exports.xpubToHDNodeType)(pk.node, network);\n }\n });\n }\n return utxo;\n};\nexports.convertMultisigPubKey = convertMultisigPubKey;\n//# sourceMappingURL=hdnodeUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.inputToTrezor = exports.enhanceTrezorInputs = exports.validateTrezorInputs = void 0;\nconst hdnodeUtils_1 = require(\"../../utils/hdnodeUtils\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst paramsValidator_1 = require(\"../common/paramsValidator\");\nconst validateTrezorInputs = (inputs, coinInfo) => inputs.map(i => (0, pathUtils_1.fixPath)(i)).map(i => (0, hdnodeUtils_1.convertMultisigPubKey)(coinInfo.network, i)).map(input => {\n const useAmount = input.script_type === 'EXTERNAL' || (0, pathUtils_1.isSegwitPath)(input.address_n);\n (0, paramsValidator_1.validateParams)(input, [{\n name: 'prev_hash',\n type: 'string',\n required: true\n }, {\n name: 'prev_index',\n type: 'number',\n required: true\n }, {\n name: 'amount',\n type: 'uint',\n required: useAmount\n }, {\n name: 'script_type',\n type: 'string'\n }, {\n name: 'sequence',\n type: 'number'\n }, {\n name: 'multisig',\n type: 'object'\n }, {\n name: 'coinjoin_flags',\n type: 'number'\n }]);\n if (input.script_type === 'EXTERNAL') {\n (0, paramsValidator_1.validateParams)(input, [{\n name: 'script_pubkey',\n type: 'string',\n required: true\n }, {\n name: 'commitment_data',\n type: 'string'\n }, {\n name: 'ownership_proof',\n type: 'string'\n }, {\n name: 'script_sig',\n type: 'string'\n }, {\n name: 'witness',\n type: 'string'\n }]);\n } else {\n (0, pathUtils_1.validatePath)(input.address_n);\n }\n return input;\n});\nexports.validateTrezorInputs = validateTrezorInputs;\nconst enhanceTrezorInputs = (inputs, rawTxs) => {\n inputs.forEach(input => {\n if (!input.amount) {\n console.warn('TrezorConnect.signTransaction deprecation: missing input amount.');\n const refTx = rawTxs.find(t => t.getId() === input.prev_hash);\n if (refTx && refTx.outs[input.prev_index]) {\n input.amount = refTx.outs[input.prev_index].value;\n }\n }\n });\n};\nexports.enhanceTrezorInputs = enhanceTrezorInputs;\nconst inputToTrezor = (input, sequence = 0xffffffff) => {\n const address_n = (0, pathUtils_1.getHDPath)(input.path);\n return {\n address_n,\n prev_index: input.vout,\n prev_hash: input.txid,\n script_type: (0, pathUtils_1.getScriptType)(address_n),\n amount: input.amount,\n sequence\n };\n};\nexports.inputToTrezor = inputToTrezor;\n//# sourceMappingURL=inputs.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValidAddress = void 0;\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst isValidBase58Address = (address, network) => {\n try {\n const decoded = utxo_lib_1.address.fromBase58Check(address, network);\n if (decoded.version !== network.pubKeyHash && decoded.version !== network.scriptHash) {\n return false;\n }\n } catch {\n return false;\n }\n return true;\n};\nconst isValidBech32Address = (address, network) => {\n try {\n const decoded = utxo_lib_1.address.fromBech32(address);\n if (decoded.prefix !== network.bech32) {\n return false;\n }\n } catch {\n return false;\n }\n return true;\n};\nconst isValidAddress = (address, coinInfo) => isValidBase58Address(address, coinInfo.network) || isValidBech32Address(address, coinInfo.network);\nexports.isValidAddress = isValidAddress;\n//# sourceMappingURL=addressUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.outputToTrezor = exports.validateHDOutput = exports.validateTrezorOutputs = void 0;\nconst constants_1 = require(\"../../constants\");\nconst addressUtils_1 = require(\"../../utils/addressUtils\");\nconst hdnodeUtils_1 = require(\"../../utils/hdnodeUtils\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst paramsValidator_1 = require(\"../common/paramsValidator\");\nconst validateTrezorOutputs = (outputs, coinInfo) => {\n const trezorOutputs = outputs.map(o => (0, pathUtils_1.fixPath)(o)).map(o => (0, hdnodeUtils_1.convertMultisigPubKey)(coinInfo.network, o));\n trezorOutputs.forEach(output => {\n (0, paramsValidator_1.validateParams)(output, [{\n name: 'address_n',\n type: 'array'\n }, {\n name: 'address',\n type: 'string'\n }, {\n name: 'amount',\n type: 'uint'\n }, {\n name: 'op_return_data',\n type: 'string'\n }, {\n name: 'multisig',\n type: 'object'\n }]);\n if (Object.prototype.hasOwnProperty.call(output, 'address_n') && Object.prototype.hasOwnProperty.call(output, 'address')) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Cannot use address and address_n in one output');\n }\n if (output.address_n && !output.script_type) {\n output.script_type = (0, pathUtils_1.getOutputScriptType)(output.address_n);\n }\n if ('address' in output && typeof output.address === 'string' && !(0, addressUtils_1.isValidAddress)(output.address, coinInfo)) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid ${coinInfo.label} output address ${output.address}`);\n }\n });\n return trezorOutputs;\n};\nexports.validateTrezorOutputs = validateTrezorOutputs;\nconst validateHDOutput = (output, coinInfo) => {\n const validateAddress = address => {\n if (!address || !(0, addressUtils_1.isValidAddress)(address, coinInfo)) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', `Invalid ${coinInfo.label} output address format`);\n }\n };\n switch (output.type) {\n case 'opreturn':\n (0, paramsValidator_1.validateParams)(output, [{\n name: 'dataHex',\n type: 'string'\n }]);\n return {\n type: 'opreturn',\n dataHex: output.dataHex\n };\n case 'send-max':\n (0, paramsValidator_1.validateParams)(output, [{\n name: 'address',\n type: 'string',\n required: true\n }]);\n validateAddress(output.address);\n return {\n type: 'send-max',\n address: output.address\n };\n case 'payment-noaddress':\n (0, paramsValidator_1.validateParams)(output, [{\n name: 'amount',\n type: 'uint',\n required: true\n }]);\n return {\n type: 'payment-noaddress',\n amount: output.amount\n };\n case 'send-max-noaddress':\n return {\n type: 'send-max-noaddress'\n };\n default:\n (0, paramsValidator_1.validateParams)(output, [{\n name: 'amount',\n type: 'uint',\n required: true\n }, {\n name: 'address',\n type: 'string',\n required: true\n }]);\n validateAddress(output.address);\n return {\n type: 'payment',\n address: output.address,\n amount: output.amount\n };\n }\n};\nexports.validateHDOutput = validateHDOutput;\nconst outputToTrezor = output => {\n if (output.type === 'opreturn') {\n return {\n amount: '0',\n op_return_data: output.dataHex,\n script_type: 'PAYTOOPRETURN'\n };\n }\n if (output.type === 'change') {\n const address_n = (0, pathUtils_1.getHDPath)(output.path);\n return {\n address_n,\n amount: output.amount,\n script_type: (0, pathUtils_1.getOutputScriptType)(address_n)\n };\n }\n return {\n address: output.address,\n amount: output.amount,\n script_type: 'PAYTOADDRESS'\n };\n};\nexports.outputToTrezor = outputToTrezor;\n//# sourceMappingURL=outputs.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateReferencedTransactions = exports.transformReferencedTransactions = exports.transformReferencedTransaction = exports.transformOrigTransactions = exports.parseTransactionHexes = exports.getOrigTransactions = exports.getReferencedTransactions = exports.requireReferencedTransactions = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst constants_1 = require(\"../../constants\");\nconst errors_1 = require(\"../../constants/errors\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst requireReferencedTransactions = (inputs, options = {}, coinInfo) => {\n if (coinInfo?.shortcut === 'ZEC' || coinInfo?.shortcut === 'TAZ') {\n return !(options.version && options.version >= 5);\n }\n const inputTypes = ['SPENDTAPROOT', 'EXTERNAL'];\n return !!inputs.find(input => !inputTypes.find(t => t === input.script_type));\n};\nexports.requireReferencedTransactions = requireReferencedTransactions;\nconst getReferencedTransactions = inputs => {\n const result = [];\n inputs.forEach(input => {\n if (input.prev_hash && !result.includes(input.prev_hash)) {\n result.push(input.prev_hash);\n }\n });\n return result;\n};\nexports.getReferencedTransactions = getReferencedTransactions;\nconst getOrigTransactions = (inputs, outputs) => {\n const result = [];\n inputs.forEach(input => {\n if (input.orig_hash && !result.includes(input.orig_hash)) {\n result.push(input.orig_hash);\n }\n });\n outputs.forEach(output => {\n if (output.orig_hash && !result.includes(output.orig_hash)) {\n result.push(output.orig_hash);\n }\n });\n return result;\n};\nexports.getOrigTransactions = getOrigTransactions;\nconst parseTransactionHexes = network => hexes => hexes.map(hex => utxo_lib_1.Transaction.fromHex(hex, {\n network\n}));\nexports.parseTransactionHexes = parseTransactionHexes;\nconst enhanceTransaction = (refTx, srcTx) => {\n const extraData = srcTx.getExtraData();\n if (extraData) {\n refTx.extra_data = extraData.toString('hex');\n }\n const specific = srcTx.getSpecificData();\n if (specific) {\n if (specific.type === 'zcash' && specific.versionGroupId && refTx.version >= 3) {\n refTx.version_group_id = specific.versionGroupId;\n }\n if (specific.type === 'dash' && srcTx.type && srcTx.version >= 3) {\n refTx.version |= srcTx.type << 16;\n }\n }\n return refTx;\n};\nconst parseOutputScript = (output, network) => {\n try {\n const address = utxo_lib_1.address.fromOutputScript(output, network);\n return {\n type: 'address',\n address\n };\n } catch {\n try {\n const {\n data\n } = utxo_lib_1.payments.embed({\n output\n }, {\n validate: true\n });\n return {\n type: 'data',\n data\n };\n } catch {\n return {\n type: 'unknown'\n };\n }\n }\n};\nconst transformOrigTransaction = (tx, coinInfo, currentInputs, addresses) => {\n const inputsMap = (input, i) => {\n const prev_hash = utils_1.bufferUtils.reverseBuffer(input.hash).toString('hex');\n const currentInput = currentInputs.find(inp => inp.prev_hash === prev_hash && inp.prev_index === input.index);\n if (!currentInput?.address_n) {\n throw (0, errors_1.TypedError)('Method_InvalidParameter', `transformOrigTransactions: invalid input at ${tx.getId()} [${i}]`);\n }\n return {\n address_n: currentInput.address_n,\n prev_hash,\n prev_index: input.index,\n script_sig: input.script.toString('hex'),\n sequence: input.sequence,\n script_type: (0, pathUtils_1.getScriptType)(currentInput.address_n),\n multisig: undefined,\n amount: currentInput.amount,\n decred_tree: undefined,\n witness: tx.getWitness(i)?.toString('hex'),\n ownership_proof: undefined,\n commitment_data: undefined\n };\n };\n const outputsMap = (output, i) => {\n const parsed = parseOutputScript(output.script, coinInfo.network);\n switch (parsed.type) {\n case 'data':\n {\n const op_return_data = parsed.data?.shift()?.toString('hex');\n if (typeof op_return_data !== 'string') {\n throw (0, errors_1.TypedError)('Method_InvalidParameter', `transformOrigTransactions: invalid op_return_data at ${tx.getId()} [${i}]`);\n }\n return {\n script_type: 'PAYTOOPRETURN',\n amount: '0',\n op_return_data\n };\n }\n case 'address':\n {\n const {\n address\n } = parsed;\n const changeAddress = addresses.change.find(addr => addr.address === address);\n const address_n = changeAddress && (0, pathUtils_1.getHDPath)(changeAddress.path);\n const amount = output.value.toString();\n return address_n ? {\n address_n,\n amount,\n script_type: (0, pathUtils_1.getOutputScriptType)(address_n)\n } : {\n address,\n amount,\n script_type: 'PAYTOADDRESS'\n };\n }\n case 'unknown':\n default:\n throw (0, errors_1.TypedError)('Method_InvalidParameter', `transformOrigTransactions: invalid output at ${tx.getId()} [${i}]`);\n }\n };\n const refTx = {\n version: tx.version,\n hash: tx.getId(),\n inputs: tx.ins.map(inputsMap),\n outputs: tx.outs.map(outputsMap),\n lock_time: tx.locktime,\n timestamp: tx.timestamp,\n expiry: tx.expiry\n };\n return enhanceTransaction(refTx, tx);\n};\nconst transformOrigTransactions = (txs, coinInfo, currentInputs, addresses) => txs.map(tx => transformOrigTransaction(tx, coinInfo, currentInputs, addresses));\nexports.transformOrigTransactions = transformOrigTransactions;\nconst transformReferencedTransaction = tx => {\n const inputsMap = input => ({\n prev_index: input.index,\n sequence: input.sequence,\n prev_hash: utils_1.bufferUtils.reverseBuffer(input.hash).toString('hex'),\n script_sig: input.script.toString('hex')\n });\n const binOutputsMap = output => ({\n amount: output.value.toString(),\n script_pubkey: output.script.toString('hex')\n });\n const refTx = {\n version: tx.version,\n hash: tx.getId(),\n inputs: tx.ins.map(inputsMap),\n bin_outputs: tx.outs.map(binOutputsMap),\n lock_time: tx.locktime,\n timestamp: tx.timestamp,\n expiry: tx.expiry\n };\n return enhanceTransaction(refTx, tx);\n};\nexports.transformReferencedTransaction = transformReferencedTransaction;\nconst transformReferencedTransactions = txs => txs.map(exports.transformReferencedTransaction);\nexports.transformReferencedTransactions = transformReferencedTransactions;\nconst validateReferencedTransactions = ({\n transactions,\n inputs,\n outputs,\n addresses,\n coinInfo\n}) => {\n if (!Array.isArray(transactions) || transactions.length === 0) return;\n const refTxs = (0, exports.requireReferencedTransactions)(inputs) ? (0, exports.getReferencedTransactions)(inputs) : [];\n const origTxs = (0, exports.getOrigTransactions)(inputs, outputs);\n const transformedTxs = transactions.map(tx => {\n if ('details' in tx) {\n if (!tx.hex) throw (0, errors_1.TypedError)('Method_InvalidParameter', `refTx: hex for ${tx.txid} not provided`);\n const srcTx = utxo_lib_1.Transaction.fromHex(tx.hex, {\n network: coinInfo.network\n });\n if (origTxs.includes(tx.txid)) {\n if (!addresses) throw (0, errors_1.TypedError)('Method_InvalidParameter', `refTx: addresses for ${tx.txid} not provided`);\n return transformOrigTransaction(srcTx, coinInfo, inputs, addresses);\n }\n return (0, exports.transformReferencedTransaction)(srcTx);\n }\n (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({\n hash: schema_utils_1.Type.String(),\n version: schema_utils_1.Type.Number(),\n lock_time: schema_utils_1.Type.Number(),\n extra_data: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n timestamp: schema_utils_1.Type.Optional(schema_utils_1.Type.Number()),\n version_group_id: schema_utils_1.Type.Optional(schema_utils_1.Type.Number())\n }), tx);\n if (origTxs.includes(tx.hash)) {\n (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({\n inputs: schema_utils_1.Type.Array(constants_1.PROTO.TxInput, {\n minItems: 1\n }),\n outputs: schema_utils_1.Type.Array(constants_1.PROTO.TxOutputType, {\n minItems: 1\n })\n }), tx);\n return tx;\n }\n (0, schema_utils_1.Assert)(schema_utils_1.Type.Object({\n inputs: schema_utils_1.Type.Array(constants_1.PROTO.PrevInput, {\n minItems: 1\n }),\n bin_outputs: schema_utils_1.Type.Array(constants_1.PROTO.TxOutputBinType, {\n minItems: 1\n })\n }), tx);\n return {\n hash: tx.hash,\n version: tx.version,\n extra_data: tx.extra_data,\n lock_time: tx.lock_time,\n timestamp: tx.timestamp,\n version_group_id: tx.version_group_id,\n expiry: tx.expiry,\n inputs: tx.inputs.map(input => ({\n prev_hash: input.prev_hash,\n prev_index: input.prev_index,\n script_sig: input.script_sig,\n sequence: input.sequence,\n decred_tree: input.decred_tree\n })),\n bin_outputs: tx.bin_outputs.map(output => ({\n amount: output.amount,\n script_pubkey: output.script_pubkey,\n decred_script_version: output.decred_script_version\n }))\n };\n });\n refTxs.concat(origTxs).forEach(hash => {\n if (!transformedTxs.find(tx => tx.hash === hash)) {\n throw (0, errors_1.TypedError)('Method_InvalidParameter', `refTx: ${hash} not provided`);\n }\n });\n return transformedTxs;\n};\nexports.validateReferencedTransactions = validateReferencedTransactions;\n//# sourceMappingURL=refTx.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.signTx = void 0;\nconst constants_1 = require(\"../../constants\");\nconst requestPrevTxInfo = ({\n typedCall,\n txRequest: {\n request_type,\n details\n },\n refTxs\n}) => {\n const {\n tx_hash\n } = details;\n if (!tx_hash) {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');\n }\n const tx = refTxs[tx_hash.toLowerCase()];\n if (!tx) {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);\n }\n if (request_type === 'TXINPUT') {\n if (!tx.bin_outputs) throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXINPUT: ${tx_hash}`);\n return typedCall('TxAckPrevInput', 'TxRequest', {\n tx: {\n input: tx.inputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXOUTPUT') {\n if (!tx.bin_outputs) throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXOUTPUT: ${tx_hash}`);\n return typedCall('TxAckPrevOutput', 'TxRequest', {\n tx: {\n output: tx.bin_outputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXORIGINPUT') {\n if (!tx.outputs) throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXORIGINPUT: ${tx_hash}`);\n return typedCall('TxAckInput', 'TxRequest', {\n tx: {\n input: tx.inputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXORIGOUTPUT') {\n if (!tx.outputs) throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown TXORIGOUTPUT: ${tx_hash}`);\n return typedCall('TxAckOutput', 'TxRequest', {\n tx: {\n output: tx.outputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXEXTRADATA') {\n if (typeof details.extra_data_len !== 'number') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');\n }\n if (typeof details.extra_data_offset !== 'number') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');\n }\n if (typeof tx.extra_data !== 'string') {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);\n }\n const data = tx.extra_data;\n const dataLen = details.extra_data_len;\n const dataOffset = details.extra_data_offset;\n const extra_data_chunk = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);\n return typedCall('TxAckPrevExtraData', 'TxRequest', {\n tx: {\n extra_data_chunk\n }\n });\n }\n if (request_type === 'TXMETA') {\n const data = tx.extra_data;\n const meta = {\n version: tx.version,\n lock_time: tx.lock_time,\n inputs_count: tx.inputs.length,\n outputs_count: tx.outputs ? tx.outputs.length : tx.bin_outputs.length,\n timestamp: tx.timestamp,\n version_group_id: tx.version_group_id,\n expiry: tx.expiry,\n branch_id: tx.branch_id,\n extra_data_len: data ? data.length / 2 : undefined\n };\n return typedCall('TxAckPrevMeta', 'TxRequest', {\n tx: meta\n });\n }\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestSignedTxInfo = ({\n typedCall,\n txRequest: {\n request_type,\n details\n },\n inputs,\n outputs,\n paymentRequests\n}) => {\n if (request_type === 'TXINPUT') {\n return typedCall('TxAckInput', 'TxRequest', {\n tx: {\n input: inputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXOUTPUT') {\n return typedCall('TxAckOutput', 'TxRequest', {\n tx: {\n output: outputs[details.request_index]\n }\n });\n }\n if (request_type === 'TXPAYMENTREQ') {\n const req = paymentRequests[details.request_index];\n if (!req) {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown payment request at ${details.request_index}`);\n }\n return typedCall('PaymentRequest', 'TxRequest', {\n nonce: req.nonce,\n recipient_name: req.recipient_name,\n memos: req.memos,\n amount: req.amount,\n signature: req.signature\n });\n }\n if (request_type === 'TXMETA') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');\n }\n if (request_type === 'TXEXTRADATA') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');\n }\n throw constants_1.ERRORS.TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestTxAck = props => {\n const {\n tx_hash\n } = props.txRequest.details;\n if (tx_hash) {\n return requestPrevTxInfo(props);\n }\n return requestSignedTxInfo(props);\n};\nconst saveTxSignatures = (txRequest, serializedTx, signatures) => {\n const {\n signature_index,\n signature,\n serialized_tx\n } = txRequest;\n if (serialized_tx) {\n serializedTx.push(serialized_tx);\n }\n if (typeof signature_index === 'number') {\n if (!signature) {\n throw constants_1.ERRORS.TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');\n }\n signatures[signature_index] = signature;\n }\n};\nconst processTxRequest = async props => {\n const {\n txRequest,\n serializedTx,\n signatures\n } = props;\n if (txRequest.serialized) saveTxSignatures(txRequest.serialized, serializedTx, signatures);\n if (txRequest.request_type === 'TXFINISHED') {\n return Promise.resolve({\n signatures,\n serializedTx: serializedTx.join('')\n });\n }\n const {\n message\n } = await requestTxAck(props);\n return processTxRequest({\n ...props,\n txRequest: message\n });\n};\nconst signTx = async ({\n typedCall,\n inputs,\n outputs,\n paymentRequests,\n refTxs,\n options,\n coinInfo\n}) => {\n const {\n message\n } = await typedCall('SignTx', 'TxRequest', {\n ...options,\n version: options.version === undefined && coinInfo.isBitcoin ? 1 : options.version,\n inputs_count: inputs.length,\n outputs_count: outputs.length,\n coin_name: coinInfo.name\n });\n return processTxRequest({\n typedCall,\n txRequest: message,\n refTxs: refTxs.reduce((record, tx) => ({\n ...record,\n [tx.hash.toLowerCase()]: tx\n }), {}),\n inputs,\n outputs,\n paymentRequests: paymentRequests || [],\n serializedTx: [],\n signatures: []\n });\n};\nexports.signTx = signTx;\n//# sourceMappingURL=signtx.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.signTxLegacy = void 0;\nconst constants_1 = require(\"../../constants\");\nconst requestPrevTxInfo = ({\n txRequest: {\n request_type,\n details\n },\n refTxs\n}) => {\n const {\n tx_hash\n } = details;\n if (!tx_hash) {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: unknown details.tx_hash');\n }\n const tx = refTxs[tx_hash.toLowerCase()];\n if (!tx) {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Requested unknown tx: ${tx_hash}`);\n }\n if (!tx.bin_outputs) {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: bin_outputs not set tx: ${tx_hash}`);\n }\n if (request_type === 'TXINPUT') {\n return {\n inputs: [tx.inputs[details.request_index]]\n };\n }\n if (request_type === 'TXOUTPUT') {\n return {\n bin_outputs: [tx.bin_outputs[details.request_index]]\n };\n }\n if (request_type === 'TXEXTRADATA') {\n if (typeof details.extra_data_len !== 'number') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_len');\n }\n if (typeof details.extra_data_offset !== 'number') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestPrevTxInfo: Missing extra_data_offset');\n }\n if (typeof tx.extra_data !== 'string') {\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: No extra data for transaction ${tx.hash}`);\n }\n const data = tx.extra_data;\n const dataLen = details.extra_data_len;\n const dataOffset = details.extra_data_offset;\n const extra_data = data.substring(dataOffset * 2, (dataOffset + dataLen) * 2);\n return {\n extra_data\n };\n }\n if (request_type === 'TXMETA') {\n const data = tx.extra_data;\n const meta = {\n version: tx.version,\n lock_time: tx.lock_time,\n inputs_cnt: tx.inputs.length,\n outputs_cnt: tx.bin_outputs.length,\n timestamp: tx.timestamp,\n version_group_id: tx.version_group_id,\n expiry: tx.expiry,\n branch_id: tx.branch_id\n };\n if (typeof data === 'string' && data.length !== 0) {\n return {\n ...meta,\n extra_data_len: data.length / 2\n };\n }\n return meta;\n }\n throw constants_1.ERRORS.TypedError('Runtime', `requestPrevTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestSignedTxInfo = ({\n txRequest: {\n request_type,\n details\n },\n inputs,\n outputs\n}) => {\n if (request_type === 'TXINPUT') {\n return {\n inputs: [inputs[details.request_index]]\n };\n }\n if (request_type === 'TXOUTPUT') {\n return {\n outputs: [outputs[details.request_index]]\n };\n }\n if (request_type === 'TXMETA') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXMETA from signed transaction');\n }\n if (request_type === 'TXEXTRADATA') {\n throw constants_1.ERRORS.TypedError('Runtime', 'requestSignedTxInfo: Cannot read TXEXTRADATA from signed transaction');\n }\n throw constants_1.ERRORS.TypedError('Runtime', `requestSignedTxInfo: Unknown request type: ${request_type}`);\n};\nconst requestTxAck = props => {\n const {\n tx_hash\n } = props.txRequest.details;\n if (tx_hash) {\n return requestPrevTxInfo(props);\n }\n return requestSignedTxInfo(props);\n};\nconst saveTxSignatures = (txRequest, serializedTx, signatures) => {\n if (!txRequest) return;\n const {\n signature_index,\n signature,\n serialized_tx\n } = txRequest;\n if (serialized_tx) {\n serializedTx.push(serialized_tx);\n }\n if (typeof signature_index === 'number') {\n if (!signature) {\n throw constants_1.ERRORS.TypedError('Runtime', 'saveTxSignatures: Unexpected null in trezor:TxRequestSerialized signature.');\n }\n signatures[signature_index] = signature;\n }\n};\nconst processTxRequest = async props => {\n const {\n typedCall,\n txRequest,\n serializedTx,\n signatures\n } = props;\n if (txRequest.serialized) saveTxSignatures(txRequest.serialized, serializedTx, signatures);\n if (txRequest.request_type === 'TXFINISHED') {\n return Promise.resolve({\n signatures,\n serializedTx: serializedTx.join('')\n });\n }\n const txAck = requestTxAck(props);\n const {\n message\n } = await typedCall('TxAck', 'TxRequest', {\n tx: txAck\n });\n return processTxRequest({\n ...props,\n txRequest: message\n });\n};\nconst signTxLegacy = async ({\n typedCall,\n inputs,\n outputs,\n refTxs,\n options,\n coinInfo\n}) => {\n const {\n message\n } = await typedCall('SignTx', 'TxRequest', {\n ...options,\n version: options.version === undefined && coinInfo.isBitcoin ? 1 : options.version,\n inputs_count: inputs.length,\n outputs_count: outputs.length,\n coin_name: coinInfo.name\n });\n return processTxRequest({\n typedCall,\n txRequest: message,\n refTxs: refTxs.reduce((record, tx) => ({\n ...record,\n [tx.hash.toLowerCase()]: tx\n }), {}),\n inputs,\n outputs,\n paymentRequests: [],\n serializedTx: [],\n signatures: []\n });\n};\nexports.signTxLegacy = signTxLegacy;\n//# sourceMappingURL=signtxLegacy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.verifyTx = exports.deriveOutputScript = void 0;\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst constants_1 = require(\"../../constants\");\nconst derivePubKeyHash = async (getHDNode, address_n, network) => {\n if (address_n.length === 5) {\n const response = await getHDNode(address_n.slice(0, 4));\n const node = utxo_lib_1.bip32.fromBase58(response.xpub, network);\n return node.derive(address_n[address_n.length - 1]);\n }\n const response = await getHDNode(address_n);\n return utxo_lib_1.bip32.fromBase58(response.xpub, network);\n};\nconst deriveOutputScript = async (getHDNode, output, network) => {\n if ('multisig' in output) return;\n if ('op_return_data' in output) {\n return utxo_lib_1.payments.embed({\n data: [Buffer.from(output.op_return_data, 'hex')]\n }).output;\n }\n if (output.address) {\n return utxo_lib_1.address.toOutputScript(output.address, network);\n }\n if (!output.address_n) {\n throw constants_1.ERRORS.TypedError('Runtime', 'deriveOutputScript: Neither address or address_n is set');\n }\n const node = await derivePubKeyHash(getHDNode, output.address_n, network);\n const payment = {\n hash: node.identifier,\n network\n };\n if (output.script_type === 'PAYTOADDRESS') {\n return utxo_lib_1.payments.p2pkh(payment).output;\n }\n if (output.script_type === 'PAYTOSCRIPTHASH') {\n return utxo_lib_1.payments.p2sh(payment).output;\n }\n if (output.script_type === 'PAYTOP2SHWITNESS') {\n return utxo_lib_1.payments.p2sh({\n redeem: utxo_lib_1.payments.p2wpkh(payment)\n }).output;\n }\n if (output.script_type === 'PAYTOWITNESS') {\n return utxo_lib_1.payments.p2wpkh(payment).output;\n }\n if (output.script_type === 'PAYTOTAPROOT') {\n return utxo_lib_1.payments.p2tr({\n pubkey: node.publicKey,\n network\n }).output;\n }\n if (output.script_type === 'PAYTOMULTISIG') {\n throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: script_type PAYTOMULTISIG not expected without multisig defined`);\n }\n throw constants_1.ERRORS.TypedError('Runtime', `deriveOutputScript: Unknown script type ${output.script_type}`);\n};\nexports.deriveOutputScript = deriveOutputScript;\nconst verifyTx = (serializedTx, params) => {\n const {\n inputs,\n outputs,\n outputScripts,\n network\n } = params;\n const bitcoinTx = utxo_lib_1.Transaction.fromHex(serializedTx, {\n network\n });\n if (inputs.length !== bitcoinTx.ins.length) {\n throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction inputs invalid length');\n }\n if (outputs.length !== bitcoinTx.outs.length) {\n throw constants_1.ERRORS.TypedError('Runtime', 'verifyTx: Signed transaction outputs invalid length');\n }\n outputs.forEach((output, i) => {\n if (output.amount) {\n if (output.amount.toString() !== bitcoinTx.outs[i].value) {\n throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Wrong output amount at output ${i}. Requested: ${output.amount}, signed: ${bitcoinTx.outs[i].value}`);\n }\n }\n });\n for (let i = 0; i < outputs.length; i++) {\n const scriptB = bitcoinTx.outs[i].script;\n const scriptA = outputScripts[i];\n if (scriptA && scriptA.compare(scriptB) !== 0) {\n throw constants_1.ERRORS.TypedError('Runtime', `verifyTx: Output ${i} scripts differ`);\n }\n }\n return bitcoinTx;\n};\nexports.verifyTx = verifyTx;\n//# sourceMappingURL=signtxVerify.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransactionComposer = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst fees_1 = require(\"../../backend/fees\");\nclass TransactionComposer {\n account;\n utxos;\n outputs;\n coinInfo;\n blockHeight = 0;\n baseFee;\n sortingStrategy;\n feeLevels;\n composed = {};\n constructor(options) {\n this.account = options.account;\n this.outputs = options.outputs;\n this.coinInfo = options.coinInfo;\n this.blockHeight = 0;\n this.baseFee = options.baseFee || 0;\n this.sortingStrategy = options.sortingStrategy;\n this.feeLevels = (0, fees_1.getOrInitBitcoinFeeLevels)(options.coinInfo);\n const {\n addresses\n } = options.account;\n const allAddresses = !addresses ? [] : addresses.used.concat(addresses.unused).concat(addresses.change).map(a => a.address);\n this.utxos = options.utxos.flatMap(u => {\n if (!u.required && new bigNumber_1.BigNumber(u.amount).lte(this.coinInfo.dustLimit)) return [];\n return {\n ...u,\n coinbase: typeof u.coinbase === 'boolean' ? u.coinbase : false,\n own: allAddresses.indexOf(u.address) >= 0\n };\n });\n }\n async init(blockchain) {\n const {\n blockHeight\n } = await blockchain.getNetworkInfo();\n this.blockHeight = blockHeight;\n if (!this.feeLevels.wasFetchedSuccessfully) {\n await this.feeLevels.load(blockchain);\n }\n }\n composeAllFeeLevels() {\n const {\n levels\n } = this.feeLevels;\n if (this.utxos.length < 1) return false;\n this.composed = {};\n let atLeastOneValid = false;\n levels.forEach(level => {\n if (level.feePerUnit !== '0') {\n const tx = this.compose(level.feePerUnit);\n if (tx.type === 'final') {\n atLeastOneValid = true;\n }\n this.composed[level.label] = tx;\n }\n });\n if (!atLeastOneValid) {\n const lastLevel = levels[levels.length - 1];\n let lastFee = new bigNumber_1.BigNumber(lastLevel.feePerUnit);\n while (lastFee.gt(this.coinInfo.minFee) && this.composed.custom === undefined) {\n lastFee = lastFee.minus(1);\n const tx = this.compose(lastFee.toString());\n if (tx.type === 'final') {\n this.feeLevels.updateBitcoinCustomFee(lastFee.toString());\n this.composed.custom = tx;\n return true;\n }\n }\n return false;\n }\n return true;\n }\n composeCustomFee(fee) {\n const tx = this.compose(fee);\n this.composed.custom = tx;\n if (tx.type === 'final') {\n this.feeLevels.updateBitcoinCustomFee(tx.feePerByte);\n } else {\n this.feeLevels.updateBitcoinCustomFee(fee);\n }\n }\n getFeeLevelList() {\n const list = [];\n const {\n levels\n } = this.feeLevels;\n levels.forEach(level => {\n const tx = this.composed[level.label];\n if (tx && tx.type === 'final') {\n list.push({\n name: level.label,\n fee: tx.fee,\n feePerByte: level.feePerUnit,\n blocks: level.blocks,\n minutes: level.blocks * this.coinInfo.blockTime,\n total: tx.totalSpent\n });\n } else {\n list.push({\n name: level.label,\n fee: '0',\n disabled: true\n });\n }\n });\n return list;\n }\n compose(feeRate) {\n const {\n account,\n coinInfo,\n baseFee\n } = this;\n const {\n addresses\n } = account;\n if (!addresses) return {\n type: 'error',\n error: 'ADDRESSES-NOT-SET'\n };\n const changeAddress = addresses.change.find(a => !a.transfers) || addresses.change[addresses.change.length - 1];\n return (0, utxo_lib_1.composeTx)({\n txType: account.type,\n utxos: this.utxos,\n outputs: this.outputs,\n feeRate,\n longTermFeeRate: this.feeLevels.longTermFeeRate,\n sortingStrategy: this.sortingStrategy,\n network: coinInfo.network,\n changeAddress,\n dustThreshold: coinInfo.dustLimit,\n baseFee\n });\n }\n dispose() {}\n}\nexports.TransactionComposer = TransactionComposer;\n//# sourceMappingURL=TransactionComposer.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./createPendingTx\"), exports);\ntslib_1.__exportStar(require(\"./enhanceSignTx\"), exports);\ntslib_1.__exportStar(require(\"./inputs\"), exports);\ntslib_1.__exportStar(require(\"./outputs\"), exports);\ntslib_1.__exportStar(require(\"./refTx\"), exports);\ntslib_1.__exportStar(require(\"./signtx\"), exports);\ntslib_1.__exportStar(require(\"./signtxLegacy\"), exports);\ntslib_1.__exportStar(require(\"./signtxVerify\"), exports);\ntslib_1.__exportStar(require(\"./TransactionComposer\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isUtxoBased = exports.getPublicKeyLabel = exports.getAccountLabel = exports.getAccountAddressN = void 0;\nconst pathUtils_1 = require(\"./pathUtils\");\nconst constants_1 = require(\"../constants\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst getAccountAddressN = (coinInfo, accountIndex, bip44) => {\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n const index = typeof accountIndex === 'number' ? accountIndex : 0;\n const options = {\n purpose: 44,\n coinType: coinInfo.slip44,\n ...bip44\n };\n if (coinInfo.type === 'bitcoin') {\n return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index)];\n }\n if (coinInfo.shortcut === 'ADA' || coinInfo.shortcut === 'tADA') {\n return [(0, pathUtils_1.toHardened)(1852), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index)];\n }\n if (coinInfo.type === 'ethereum') {\n return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(0), 0, index];\n }\n if (coinInfo.shortcut === 'tXRP') {\n return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(144), (0, pathUtils_1.toHardened)(index), 0, 0];\n }\n return [(0, pathUtils_1.toHardened)(options.purpose), (0, pathUtils_1.toHardened)(options.coinType), (0, pathUtils_1.toHardened)(index), 0, 0];\n};\nexports.getAccountAddressN = getAccountAddressN;\nconst getAccountLabel = (path, coinInfo) => {\n if (coinInfo.type === 'bitcoin') {\n const accountType = (0, pathUtils_1.fromHardened)(path[0]);\n const account = (0, pathUtils_1.fromHardened)(path[2]);\n let prefix = '';\n if (accountType === 48) {\n prefix = 'multisig';\n } else if (accountType === 49 && coinInfo.segwit) {\n prefix = 'segwit';\n } else if (accountType === 44 && coinInfo.segwit) {\n prefix = 'legacy';\n }\n return `${prefix} account #${account + 1}`;\n }\n const account = (0, pathUtils_1.fromHardened)(path[4]);\n return `account #${account + 1}`;\n};\nexports.getAccountLabel = getAccountLabel;\nconst getPublicKeyLabel = (path, coinInfo) => {\n let hasSegwit = false;\n let coinLabel = 'Unknown coin';\n if (coinInfo) {\n coinLabel = coinInfo.label;\n hasSegwit = coinInfo.segwit;\n } else {\n coinLabel = (0, coinInfo_1.getCoinName)(path);\n }\n const p1 = (0, pathUtils_1.fromHardened)(path[0]);\n let account = path.length >= 3 ? (0, pathUtils_1.fromHardened)(path[2]) : -1;\n let realAccountId = account + 1;\n let prefix = 'Export public key';\n let accountType = '';\n if (p1 === 45342) {\n const p2 = (0, pathUtils_1.fromHardened)(path[1]);\n account = (0, pathUtils_1.fromHardened)(path[3]);\n realAccountId = account + 1;\n prefix = 'Export Copay ID of';\n if (p2 === 48) {\n accountType = 'multisig';\n } else if (p2 === 44) {\n accountType = 'legacy';\n }\n } else if (p1 === 48) {\n accountType = `${coinLabel} multisig`;\n } else if (p1 === 44 && hasSegwit) {\n accountType = `${coinLabel} legacy`;\n } else if (p1 === 84 && hasSegwit) {\n accountType = `${coinLabel} native segwit`;\n } else {\n accountType = coinLabel;\n }\n if (realAccountId > 0) {\n return `${prefix} of ${accountType} account #${realAccountId}`;\n }\n return prefix;\n};\nexports.getPublicKeyLabel = getPublicKeyLabel;\nconst isUtxoBased = coinInfo => coinInfo.type === 'bitcoin' || coinInfo.shortcut === 'ADA' || coinInfo.shortcut === 'tADA';\nexports.isUtxoBased = isUtxoBased;\n//# sourceMappingURL=accountUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deepTransform = exports.hexToText = exports.messageToHex = exports.isHexString = exports.addHexPrefix = exports.stripHexPrefix = exports.hasHexPrefix = exports.formatTime = exports.formatAmount = void 0;\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst formatAmount = (n, coinInfo) => `${new bigNumber_1.BigNumber(n).div(10 ** coinInfo.decimals).toString(10)} ${coinInfo.shortcut}`;\nexports.formatAmount = formatAmount;\nconst formatTime = n => {\n if (!n || n <= 0) return 'No time estimate';\n const hours = Math.floor(n / 60);\n const minutes = n % 60;\n let res = '';\n if (hours !== 0) {\n res += `${hours} hour`;\n if (hours > 1) {\n res += 's';\n }\n res += ' ';\n }\n if (minutes !== 0) {\n res += `${minutes} minutes`;\n }\n return res;\n};\nexports.formatTime = formatTime;\nconst hasHexPrefix = str => str.slice(0, 2).toLowerCase() === '0x';\nexports.hasHexPrefix = hasHexPrefix;\nconst stripHexPrefix = str => (0, exports.hasHexPrefix)(str) ? str.slice(2) : str;\nexports.stripHexPrefix = stripHexPrefix;\nconst addHexPrefix = str => str !== undefined && !(0, exports.hasHexPrefix)(str) ? `0x${str}` : str;\nexports.addHexPrefix = addHexPrefix;\nconst isHexString = (value, length) => {\n if (typeof value !== 'string' || !value.match(/^(0x|0X)?[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n};\nexports.isHexString = isHexString;\nconst messageToHex = message => {\n let buffer;\n if ((0, exports.isHexString)(message)) {\n let clean = (0, exports.stripHexPrefix)(message);\n if (clean.length % 2 !== 0) {\n clean = `0${clean}`;\n }\n buffer = Buffer.from(clean, 'hex');\n } else {\n buffer = Buffer.from(message);\n }\n return buffer.toString('hex');\n};\nexports.messageToHex = messageToHex;\nconst hexToText = hex => {\n const clean = (0, exports.messageToHex)(hex);\n const text = Buffer.from(clean, 'hex').toString('utf8');\n if (/[\\uFFFD]/.test(text)) return hex;\n return text;\n};\nexports.hexToText = hexToText;\nconst deepTransform = transform => {\n const recursion = value => {\n if (typeof value === 'string') {\n return transform(value);\n }\n if (Array.isArray(value)) {\n return value.map(recursion);\n }\n if (value && typeof value === 'object') {\n return Object.entries(value).reduce((obj, [k, v]) => ({\n ...obj,\n [k]: recursion(v)\n }), {});\n }\n return value;\n };\n return recursion;\n};\nexports.deepTransform = deepTransform;\n//# sourceMappingURL=formatUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Discovery = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../../constants\");\nconst accountUtils_1 = require(\"../../utils/accountUtils\");\nconst formatUtils_1 = require(\"../../utils/formatUtils\");\nclass Discovery extends utils_1.TypedEmitter {\n types = [];\n typeIndex;\n accounts;\n coinInfo;\n blockchain;\n getDescriptor;\n index;\n interrupted;\n completed;\n constructor(options) {\n super();\n this.accounts = [];\n this.index = 0;\n this.typeIndex = 0;\n this.interrupted = false;\n this.completed = false;\n this.blockchain = options.blockchain;\n this.coinInfo = options.blockchain.coinInfo;\n this.getDescriptor = options.getDescriptor;\n const {\n coinInfo\n } = this;\n if (coinInfo.type === 'bitcoin') {\n const getDescriptor = (purpose, index) => (0, accountUtils_1.getAccountAddressN)(coinInfo, index, {\n purpose\n });\n if (coinInfo.xPubMagicSegwitNative) {\n this.types.push({\n type: 'p2wpkh',\n getPath: getDescriptor.bind(this, 84)\n });\n }\n if (coinInfo.taproot) {\n this.types.push({\n type: 'p2tr',\n getPath: getDescriptor.bind(this, 86)\n });\n }\n if (coinInfo.xPubMagicSegwit) {\n this.types.push({\n type: 'p2sh',\n getPath: getDescriptor.bind(this, 49)\n });\n }\n this.types.push({\n type: 'p2pkh',\n getPath: getDescriptor.bind(this, 44)\n });\n } else {\n this.types.push({\n type: 'p2pkh',\n getPath: accountUtils_1.getAccountAddressN.bind(this, coinInfo)\n });\n }\n }\n async start(details) {\n const limit = 10;\n this.interrupted = false;\n while (!this.completed && !this.interrupted) {\n const accountType = this.types[this.typeIndex];\n const label = `Account #${this.index + 1}`;\n const overTheLimit = this.index >= limit;\n const path = accountType.getPath(this.index);\n const descriptor = await this.getDescriptor(path);\n if (!descriptor) {\n throw constants_1.ERRORS.TypedError('Runtime', 'Discovery: descriptor not found');\n }\n if (this.interrupted) return;\n const account = {\n ...descriptor,\n type: accountType.type,\n label\n };\n this.accounts = this.accounts.filter(a => a.descriptor !== account.descriptor);\n if (!overTheLimit) {\n this.accounts.push(account);\n this.emit('progress', this.accounts);\n }\n const info = await this.blockchain.getAccountInfo({\n descriptor: account.descriptor,\n details\n });\n if (this.interrupted) return;\n this.accounts = this.accounts.filter(a => a.descriptor !== account.descriptor);\n if (!overTheLimit || overTheLimit && !info.empty) {\n const balance = (0, formatUtils_1.formatAmount)(info.availableBalance, this.coinInfo);\n this.accounts.push({\n ...account,\n empty: info.empty,\n balance,\n addresses: info.addresses\n });\n this.emit('progress', this.accounts);\n }\n if (info.empty) {\n if (this.typeIndex + 1 < this.types.length) {\n this.typeIndex++;\n this.index = 0;\n } else {\n this.emit('complete');\n this.completed = true;\n }\n } else {\n this.index++;\n }\n }\n }\n stop() {\n this.interrupted = !this.completed;\n }\n dispose() {\n this.accounts = [];\n }\n}\nexports.Discovery = Discovery;\n//# sourceMappingURL=Discovery.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst tslib_1 = require(\"tslib\");\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst promiseAllSequence_1 = require(\"@trezor/utils/lib/promiseAllSequence\");\nconst resolveAfter_1 = require(\"@trezor/utils/lib/resolveAfter\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst utxo_1 = require(\"../constants/utxo\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst bitcoin_1 = require(\"./bitcoin\");\nconst Discovery_1 = require(\"./common/Discovery\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst formatUtils_1 = require(\"../utils/formatUtils\");\nconst pathUtils = tslib_1.__importStar(require(\"../utils/pathUtils\"));\nclass ComposeTransaction extends AbstractMethod_1.AbstractMethod {\n discovery;\n init() {\n this.requiredPermissions = ['read', 'write'];\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'outputs',\n type: 'array',\n required: true\n }, {\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'push',\n type: 'boolean'\n }, {\n name: 'account',\n type: 'object'\n }, {\n name: 'feeLevels',\n type: 'array'\n }, {\n name: 'baseFee',\n type: 'number'\n }, {\n name: 'floorBaseFee',\n type: 'boolean'\n }, {\n name: 'sequence',\n type: 'number'\n }, {\n name: 'skipPermutation',\n type: 'boolean'\n }, {\n name: 'sortingStrategy',\n type: 'string'\n }]);\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n const outputs = [];\n let total = new bigNumber_1.BigNumber(0);\n payload.outputs.forEach(out => {\n const output = (0, bitcoin_1.validateHDOutput)(out, coinInfo);\n if ('amount' in output && typeof output.amount === 'string') {\n total = total.plus(output.amount);\n }\n outputs.push(output);\n });\n this.useDevice = !payload.account && !payload.feeLevels;\n this.useUi = this.useDevice;\n this.params = {\n outputs,\n coinInfo,\n identity: payload.identity,\n account: payload.account,\n feeLevels: payload.feeLevels,\n baseFee: payload.baseFee,\n floorBaseFee: payload.floorBaseFee,\n sequence: payload.sequence,\n sortingStrategy: payload.skipPermutation === true ? 'none' : payload.sortingStrategy,\n push: typeof payload.push === 'boolean' ? payload.push : false,\n total\n };\n if (this.params.push) {\n this.requiredPermissions.push('push_tx');\n }\n }\n get info() {\n const sendMax = this.params?.outputs.find(o => o.type === 'send-max') !== undefined;\n if (sendMax) {\n return 'Send maximum amount';\n }\n return `Send ${(0, formatUtils_1.formatAmount)(this.params.total.toString(), this.params.coinInfo)}`;\n }\n getBlockchain() {\n return (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n }\n async precompose(account, feeLevels) {\n const {\n coinInfo,\n outputs,\n baseFee,\n sortingStrategy\n } = this.params;\n const address_n = pathUtils.validatePath(account.path);\n const composer = new bitcoin_1.TransactionComposer({\n account: {\n type: pathUtils.getAccountType(address_n),\n label: 'Account',\n descriptor: account.path,\n address_n,\n addresses: account.addresses\n },\n utxos: account.utxo,\n coinInfo,\n outputs,\n baseFee,\n sortingStrategy: sortingStrategy ?? utxo_1.DEFAULT_SORTING_STRATEGY\n });\n const blockchain = await this.getBlockchain();\n await composer.init(blockchain);\n return feeLevels.map(level => {\n composer.composeCustomFee(level.feePerUnit);\n const tx = {\n ...composer.composed.custom\n };\n if (tx.type === 'final') {\n return {\n ...tx,\n inputs: tx.inputs.map(inp => (0, bitcoin_1.inputToTrezor)(inp, this.params.sequence)),\n outputs: tx.outputs.map(bitcoin_1.outputToTrezor)\n };\n }\n if (tx.type === 'nonfinal') {\n return {\n ...tx,\n inputs: tx.inputs.map(inp => (0, bitcoin_1.inputToTrezor)(inp, this.params.sequence))\n };\n }\n return tx;\n });\n }\n async run() {\n if (this.params.account && this.params.feeLevels) {\n return this.precompose(this.params.account, this.params.feeLevels);\n }\n const {\n account,\n utxo\n } = await this.selectAccount();\n const response = await this.selectFee(account, utxo);\n if (!this.discovery) {\n throw constants_1.ERRORS.TypedError('Runtime', 'ComposeTransaction: selectFee response received after dispose');\n }\n if (typeof response === 'string') {\n return this.run();\n }\n return response;\n }\n async selectAccount() {\n const {\n coinInfo\n } = this.params;\n const blockchain = await this.getBlockchain();\n const dfd = this.createUiPromise(events_1.UI.RECEIVE_ACCOUNT);\n if (this.discovery && this.discovery.completed) {\n const {\n discovery\n } = this;\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'end',\n coinInfo,\n accountTypes: discovery.types.map(t => t.type),\n accounts: discovery.accounts\n }));\n const uiResp = await dfd.promise;\n const account = discovery.accounts[uiResp.payload];\n const utxo = await blockchain.getAccountUtxo(account.descriptor);\n return {\n account,\n utxo\n };\n }\n const discovery = this.discovery || new Discovery_1.Discovery({\n blockchain,\n getDescriptor: path => this.device.getCommands().getAccountDescriptor(this.params.coinInfo, path)\n });\n this.discovery = discovery;\n discovery.on('progress', accounts => {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'progress',\n coinInfo,\n accounts\n }));\n });\n discovery.on('complete', () => {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'end',\n coinInfo\n }));\n });\n discovery.start('tokens').catch(error => {\n dfd.reject(error);\n });\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'start',\n accountTypes: discovery.types.map(t => t.type),\n coinInfo\n }));\n const uiResp = await dfd.promise;\n discovery.removeAllListeners();\n discovery.stop();\n if (!discovery.completed) {\n await (0, resolveAfter_1.resolveAfter)(501);\n }\n const account = discovery.accounts[uiResp.payload];\n this.params.coinInfo = (0, coinInfo_1.fixCoinInfoNetwork)(this.params.coinInfo, account.address_n);\n const utxo = await blockchain.getAccountUtxo(account.descriptor);\n return {\n account,\n utxo\n };\n }\n async selectFee(account, utxos) {\n const {\n coinInfo,\n outputs,\n sortingStrategy,\n skipPermutation\n } = this.params;\n const blockchain = await this.getBlockchain();\n const composer = new bitcoin_1.TransactionComposer({\n account,\n utxos,\n coinInfo,\n outputs,\n sortingStrategy: skipPermutation === true ? 'none' : sortingStrategy ?? utxo_1.DEFAULT_SORTING_STRATEGY\n });\n await composer.init(blockchain);\n const hasFunds = composer.composeAllFeeLevels();\n if (!hasFunds) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.INSUFFICIENT_FUNDS));\n await (0, resolveAfter_1.resolveAfter)(2000);\n return 'change-account';\n }\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_FEE, {\n feeLevels: composer.getFeeLevelList(),\n coinInfo: this.params.coinInfo\n }));\n return this._selectFeeUiResponse(composer);\n }\n async _selectFeeUiResponse(composer) {\n const resp = await this.createUiPromise(events_1.UI.RECEIVE_FEE).promise;\n switch (resp.payload.type) {\n case 'compose-custom':\n composer.composeCustomFee(resp.payload.value);\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.UPDATE_CUSTOM_FEE, {\n feeLevels: composer.getFeeLevelList(),\n coinInfo: this.params.coinInfo\n }));\n return this._selectFeeUiResponse(composer);\n case 'send':\n return this._sign(composer.composed[resp.payload.value]);\n default:\n return 'change-account';\n }\n }\n async _sign(tx) {\n const {\n device,\n params\n } = this;\n if (tx.type !== 'final') throw constants_1.ERRORS.TypedError('Runtime', 'ComposeTransaction: Trying to sign unfinished tx');\n const {\n coinInfo\n } = params;\n const options = (0, bitcoin_1.enhanceSignTx)({}, coinInfo);\n const inputs = tx.inputs.map(inp => (0, bitcoin_1.inputToTrezor)(inp, params.sequence));\n const outputs = tx.outputs.map(bitcoin_1.outputToTrezor);\n let refTxs = [];\n const requiredRefTxs = (0, bitcoin_1.requireReferencedTransactions)(inputs, options, coinInfo);\n const refTxsIds = (0, bitcoin_1.getReferencedTransactions)(inputs);\n if (requiredRefTxs && refTxsIds.length > 0) {\n refTxs = await this.getBlockchain().then(blockchain => blockchain.getTransactionHexes(refTxsIds)).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then(bitcoin_1.transformReferencedTransactions);\n }\n const getHDNode = address_n => device.getCommands().getHDNode({\n address_n\n }, {\n coinInfo: params.coinInfo\n });\n const outputScripts = await (0, promiseAllSequence_1.promiseAllSequence)(outputs.map(output => () => (0, bitcoin_1.deriveOutputScript)(getHDNode, output, coinInfo.network)));\n const signTxMethod = !device.unavailableCapabilities.replaceTransaction ? bitcoin_1.signTx : bitcoin_1.signTxLegacy;\n const cmd = device.getCommands();\n const response = await signTxMethod({\n typedCall: cmd.typedCall,\n inputs,\n outputs,\n refTxs,\n options,\n coinInfo\n });\n (0, bitcoin_1.verifyTx)(response.serializedTx, {\n inputs,\n outputs,\n outputScripts,\n network: coinInfo.network\n });\n if (params.push) {\n const blockchain = await this.getBlockchain();\n const txid = await blockchain.pushTransaction(response.serializedTx);\n return {\n ...response,\n txid\n };\n }\n return response;\n }\n dispose() {\n const {\n discovery\n } = this;\n if (discovery) {\n discovery.stop();\n discovery.removeAllListeners();\n this.discovery = undefined;\n }\n }\n}\nexports.default = ComposeTransaction;\n//# sourceMappingURL=composeTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CARDANO_DERIVATIONS = exports.ACCOUNT_TYPES = void 0;\nconst constants_1 = require(\"../../constants\");\nexports.ACCOUNT_TYPES = [{\n symbol: 'btc',\n type: 'normal',\n path: \"m/84'/0'/i'\"\n}, {\n symbol: 'btc',\n type: 'taproot',\n path: \"m/86'/0'/i'\"\n}, {\n symbol: 'btc',\n type: 'segwit',\n path: \"m/49'/0'/i'\"\n}, {\n symbol: 'btc',\n type: 'legacy',\n path: \"m/44'/0'/i'\"\n}, {\n symbol: 'test',\n type: 'normal',\n path: \"m/84'/1'/i'\"\n}, {\n symbol: 'test',\n type: 'taproot',\n path: \"m/86'/1'/i'\"\n}, {\n symbol: 'test',\n type: 'segwit',\n path: \"m/49'/1'/i'\"\n}, {\n symbol: 'test',\n type: 'legacy',\n path: \"m/44'/1'/i'\"\n}, {\n symbol: 'regtest',\n type: 'normal',\n path: \"m/84'/1'/i'\"\n}, {\n symbol: 'regtest',\n type: 'taproot',\n path: \"m/86'/1'/i'\"\n}, {\n symbol: 'regtest',\n type: 'segwit',\n path: \"m/49'/1'/i'\"\n}, {\n symbol: 'regtest',\n type: 'legacy',\n path: \"m/44'/1'/i'\"\n}, {\n symbol: 'eth',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'eth',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'eth',\n type: 'legacy',\n path: \"m/44'/60'/0'/i\"\n}, {\n symbol: 'tsep',\n type: 'normal',\n path: \"m/44'/1'/0'/0/i\"\n}, {\n symbol: 'thod',\n type: 'normal',\n path: \"m/44'/1'/0'/0/i\"\n}, {\n symbol: 'pol',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'pol',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'bsc',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'bsc',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'arb',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'arb',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'base',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'base',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'op',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'op',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'avax',\n type: 'normal',\n path: \"m/44'/60'/0'/0/i\"\n}, {\n symbol: 'avax',\n type: 'ledger',\n path: \"m/44'/60'/i'/0/0\"\n}, {\n symbol: 'sol',\n type: 'normal',\n path: \"m/44'/501'/i'/0'\"\n}, {\n symbol: 'sol',\n type: 'ledger',\n path: \"m/44'/501'/i'\"\n}, {\n symbol: 'dsol',\n type: 'normal',\n path: \"m/44'/501'/i'/0'\"\n}, {\n symbol: 'ada',\n type: 'normal',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'ada',\n type: 'legacy',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'ada',\n type: 'ledger',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'tada',\n type: 'normal',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'tada',\n type: 'legacy',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'tada',\n type: 'ledger',\n path: \"m/1852'/1815'/i'\"\n}, {\n symbol: 'etc',\n type: 'normal',\n path: \"m/44'/61'/0'/0/i\"\n}, {\n symbol: 'xrp',\n type: 'normal',\n path: \"m/44'/144'/i'/0/0\"\n}, {\n symbol: 'txrp',\n type: 'normal',\n path: \"m/44'/144'/i'/0/0\"\n}, {\n symbol: 'ltc',\n type: 'normal',\n path: \"m/84'/2'/i'\"\n}, {\n symbol: 'ltc',\n type: 'segwit',\n path: \"m/49'/2'/i'\"\n}, {\n symbol: 'ltc',\n type: 'legacy',\n path: \"m/44'/2'/i'\"\n}, {\n symbol: 'bch',\n type: 'normal',\n path: \"m/44'/145'/i'\"\n}, {\n symbol: 'doge',\n type: 'normal',\n path: \"m/44'/3'/i'\"\n}, {\n symbol: 'zec',\n type: 'normal',\n path: \"m/44'/133'/i'\"\n}, {\n symbol: 'xlm',\n type: 'normal',\n path: \"m/44'/148'/i'\"\n}, {\n symbol: 'txlm',\n type: 'normal',\n path: \"m/44'/148'/i'\"\n}];\nexports.CARDANO_DERIVATIONS = {\n normal: constants_1.PROTO.CardanoDerivationType.ICARUS,\n legacy: constants_1.PROTO.CardanoDerivationType.ICARUS_TREZOR,\n ledger: constants_1.PROTO.CardanoDerivationType.LEDGER\n};\n//# sourceMappingURL=discoverAccounts.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst utils_1 = require(\"@trezor/utils\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst discoverAccounts_1 = require(\"../types/api/discoverAccounts\");\nconst accountUtils_1 = require(\"../utils/accountUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nconst ACCOUNT_LIMIT = 10;\nconst TXS_PER_PAGE = 25;\nconst DETAILS = 'txs';\nconst isCardano = account => account.symbol === 'ada' || account.symbol === 'tada';\nconst isCardanoRequest = request => isCardano(request.account);\nconst isEvmLedger = (account, coinInfo) => coinInfo.type === 'ethereum' && account.type === 'ledger';\nconst getAccountTypeKey = ({\n symbol,\n type\n}) => `${symbol}-${type}`;\nconst substituteBip43Path = (path, index) => path.replace('i', String(index));\nclass DiscoverAccounts extends AbstractMethod_1.AbstractMethod {\n disposed = false;\n init() {\n this.requiredPermissions = ['read'];\n this.useDevice = true;\n this.useDeviceState = true;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coins',\n type: 'array',\n required: true,\n allowEmpty: true\n }]);\n this.params = payload.coins.flatMap(coin => {\n (0, paramsValidator_1.validateParams)(coin, [{\n name: 'symbol',\n type: 'string',\n required: true\n }, {\n name: 'known',\n type: 'array',\n allowEmpty: true\n }, {\n name: 'knownOnly',\n type: 'boolean'\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'details',\n type: 'string'\n }, {\n name: 'pageSize',\n type: 'number'\n }]);\n const {\n symbol,\n known: knownAccs,\n knownOnly,\n ...rest\n } = coin;\n const coinInfo = (0, coinInfo_1.getCoinInfo)(symbol);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n const firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE);\n const symbolAccounts = discoverAccounts_1.ACCOUNT_TYPES.filter(a => a.symbol === symbol);\n knownAccs?.forEach(account => {\n (0, paramsValidator_1.validateParams)(account, [{\n name: 'type',\n type: 'string',\n required: true\n }, {\n name: 'skip',\n type: 'number'\n }]);\n if (!symbolAccounts.some(a => a.type === account.type)) {\n throw new Error(`Unknown account type: ${symbol}/${account.type}`);\n }\n });\n return symbolAccounts.map(account => [account, knownAccs?.find(t => t.type === account.type)]).filter(([_, known]) => known ? typeof known.skip === 'number' : !knownOnly).map(([account, known]) => ({\n pageSize: isCardano(account) ? 8 : TXS_PER_PAGE,\n details: DETAILS,\n coinInfo,\n firmwareRange,\n skip: known?.skip ?? 0,\n account,\n ...rest,\n offset: isEvmLedger(account, coinInfo) ? 1 : 0,\n derivation: isCardano(account) ? discoverAccounts_1.CARDANO_DERIVATIONS[account.type] : undefined\n }));\n });\n }\n progress = {};\n updateProgress(account, done, last = false) {\n const progress = last ? 1 : done / Math.max(ACCOUNT_LIMIT, done + 1);\n const key = getAccountTypeKey(account);\n this.progress[key] = progress;\n }\n sendProgress(response) {\n const progress = Object.values(this.progress).reduce((sum, typeProgress) => sum + typeProgress, 0) / (Object.keys(this.progress).length || 1);\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: 100,\n progress: 100 * progress,\n response\n }));\n }\n async run() {\n const [unsupported, supported] = this.filterUnsupportedAccounts(this.params);\n unsupported.forEach(({\n account: {\n path: bip43,\n ...rest\n },\n error,\n coinInfo,\n skip,\n offset\n }) => {\n const path = substituteBip43Path(bip43, skip + offset);\n const backendType = coinInfo.blockchainLink?.type;\n this.sendProgress({\n ...rest,\n index: skip,\n failed: true,\n error,\n path,\n backendType\n });\n });\n const [cardanoAccounts, otherAccounts] = (0, utils_1.arrayPartition)(supported, isCardanoRequest);\n const [_, filteredCardanoAccounts] = await this.filterCardanoDerivations(cardanoAccounts);\n const accounts = [...otherAccounts, ...filteredCardanoAccounts];\n accounts.forEach(({\n account,\n skip\n }) => this.updateProgress(account, skip));\n const counts = await Promise.all(accounts.map(account => this.discoverAccount(account)));\n const nonempty = counts.reduce((sum, acc) => sum + acc.nonempty, 0);\n const failed = counts.filter(acc => acc.error).length;\n const empty = counts.length - failed;\n return {\n empty,\n nonempty,\n failed\n };\n }\n filterUnsupportedAccounts(accounts) {\n const version = this.device.getVersion();\n const model = this.device.features?.internal_model;\n if (!version || !model) return [[], accounts];\n return (0, utils_1.arrayPartition)(accounts.map(item => {\n const {\n min,\n max\n } = item.firmwareRange[model];\n let error;\n if (min === '0') {\n error = events_1.UI.FIRMWARE_NOT_SUPPORTED;\n } else if (!utils_1.versionUtils.isNewerOrEqual(version, min)) {\n error = events_1.UI.FIRMWARE_OLD;\n } else if (max !== '0' && utils_1.versionUtils.isNewer(version, max)) {\n error = events_1.UI.FIRMWARE_NOT_COMPATIBLE;\n }\n return error ? {\n ...item,\n error\n } : item;\n }), item => 'error' in item);\n }\n async filterCardanoDerivations(accounts) {\n const legacyRequest = accounts.find(a => a.account.type === 'legacy');\n const ledgerRequest = accounts.find(a => a.account.type === 'ledger');\n const filterableRequest = legacyRequest ?? ledgerRequest;\n const getDescriptor = derivation => filterableRequest && this.getDescriptor(filterableRequest.coinInfo, filterableRequest.account.path, discoverAccounts_1.CARDANO_DERIVATIONS[derivation], 0).then(({\n descriptor\n }) => descriptor);\n const normalDescriptor = await getDescriptor('normal');\n const omitLegacy = legacyRequest && (await getDescriptor('legacy')) === normalDescriptor;\n const omitLedger = ledgerRequest && (!legacyRequest || omitLegacy) && (await getDescriptor('ledger')) === normalDescriptor;\n return (0, utils_1.arrayPartition)(accounts.map(item => item.account.type === 'legacy' && omitLegacy || item.account.type === 'ledger' && omitLedger ? {\n ...item,\n error: 'ignored cardano derivation'\n } : item), item => 'error' in item);\n }\n descriptorLock = (0, utils_1.getSynchronize)();\n descriptorCache = {};\n async getDescriptor(coinInfo, bip43PathTemplate, derivationType, index) {\n const path = substituteBip43Path(bip43PathTemplate, index);\n const {\n address_n: _,\n ...descriptorRest\n } = await this.descriptorLock(async () => {\n const key = `${path}-${derivationType}`;\n if (!this.descriptorCache[key]) {\n const address_n = (0, pathUtils_1.validatePath)(path, 3);\n this.descriptorCache[key] = await this.device.getCommands().getAccountDescriptor(coinInfo, address_n, derivationType);\n }\n return this.descriptorCache[key];\n });\n return {\n path,\n ...descriptorRest\n };\n }\n async discoverAccount(request) {\n const {\n details,\n identity,\n pageSize,\n coinInfo,\n derivation,\n offset,\n skip\n } = request;\n const {\n path: bip43,\n ...accountKey\n } = request.account;\n const backendType = coinInfo.blockchainLink?.type;\n const utxoRequired = (0, accountUtils_1.isUtxoBased)(coinInfo) && details && details !== 'basic';\n let index = skip;\n let blockchain;\n try {\n blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity);\n } catch (err) {\n const path = substituteBip43Path(bip43, offset + index);\n this.updateProgress(accountKey, index + 1, true);\n const error = err.message;\n this.sendProgress({\n ...accountKey,\n index,\n failed: true,\n error,\n path,\n backendType\n });\n return {\n nonempty: 0,\n error\n };\n }\n let descPromise = this.getDescriptor(coinInfo, bip43, derivation, offset + index);\n descPromise.catch(() => {});\n while (true) {\n try {\n const {\n descriptor,\n ...descRest\n } = await descPromise;\n descPromise = this.getDescriptor(coinInfo, bip43, derivation, offset + index + 1);\n descPromise.catch(() => {});\n const info = await blockchain.getAccountInfo({\n descriptor,\n details,\n pageSize\n });\n const utxo = !utxoRequired ? undefined : info.empty ? [] : await blockchain.getAccountUtxo(descriptor);\n this.updateProgress(accountKey, index + 1, info.empty);\n this.sendProgress({\n ...info,\n descriptor,\n ...descRest,\n utxo,\n ...accountKey,\n index,\n backendType,\n failed: false\n });\n if (info.empty) {\n await descPromise.catch(() => {});\n return {\n nonempty: index - skip\n };\n }\n } catch (err) {\n const path = substituteBip43Path(bip43, offset + index);\n const {\n message: error,\n code\n } = err;\n const failed = true;\n this.updateProgress(accountKey, index + 1, true);\n this.sendProgress({\n ...accountKey,\n index,\n failed,\n error,\n code,\n path,\n backendType\n });\n return {\n nonempty: index - skip,\n error\n };\n }\n index++;\n }\n }\n dispose() {\n this.disposed = true;\n }\n}\nexports.default = DiscoverAccounts;\n//# sourceMappingURL=discoverAccounts.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GetAccountDescriptorParams = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.GetAccountDescriptorParams = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n coin: schema_utils_1.Type.String(),\n derivationType: schema_utils_1.Type.Optional(constants_1.PROTO.EnumCardanoDerivationType),\n suppressBackupWarning: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=getAccountDescriptor.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../constants\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst getAccountDescriptor_1 = require(\"../types/api/getAccountDescriptor\");\nconst accountUtils_1 = require(\"../utils/accountUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetAccountDescriptor extends AbstractMethod_1.AbstractMethod {\n disposed = false;\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.useDevice = true;\n this.useUi = true;\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n (0, schema_utils_1.Assert)((0, types_1.Bundle)(getAccountDescriptor_1.GetAccountDescriptorParams), payload);\n this.params = payload.bundle.map(batch => {\n const coinInfo = (0, coinInfo_1.getCoinInfo)(batch.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n const address_n = (0, pathUtils_1.validatePath)(batch.path, 3);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n return {\n ...batch,\n address_n,\n coinInfo\n };\n });\n this.noBackupConfirmationMode = this.params.every(batch => batch.suppressBackupWarning) ? 'popup-only' : 'always';\n }\n get info() {\n return 'Export account descriptor';\n }\n get confirmation() {\n const keys = {};\n this.params.forEach(b => {\n if (!keys[b.coinInfo.label]) {\n keys[b.coinInfo.label] = {\n coinInfo: b.coinInfo,\n values: []\n };\n }\n keys[b.coinInfo.label].values.push(b.address_n);\n });\n const str = [];\n Object.keys(keys).forEach((k, _i, _a) => {\n const details = keys[k];\n details.values.forEach(acc => {\n str.push(k);\n str.push(' ');\n if (typeof acc === 'string') {\n str.push(acc);\n } else {\n str.push((0, accountUtils_1.getAccountLabel)(acc, details.coinInfo));\n }\n });\n });\n return {\n view: 'export-account-info',\n label: `Export descriptor for: ${str.join('')}`\n };\n }\n checkFirmwareRange() {\n const invalid = [];\n for (let i = 0; i < this.params.length; i++) {\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, this.params[i].coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE);\n const exception = super.checkFirmwareRange();\n if (exception) {\n invalid.push({\n index: i,\n exception,\n coin: this.params[i].coin\n });\n }\n }\n if (invalid.length > 0) {\n throw constants_1.ERRORS.TypedError('Method_Discovery_BundleException', JSON.stringify(invalid));\n }\n return undefined;\n }\n async run() {\n const responses = [];\n const sendProgress = (progress, response, error) => {\n if (!this.hasBundle || this.disposed) return;\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress,\n response,\n error\n }));\n };\n for (let i = 0; i < this.params.length; i++) {\n const request = this.params[i];\n if (this.disposed) break;\n try {\n const {\n descriptor,\n address_n,\n legacyXpub\n } = await this.device.getCommands().getAccountDescriptor(request.coinInfo, request.address_n, request.derivationType);\n const response = {\n descriptor,\n path: (0, pathUtils_1.getSerializedPath)(address_n),\n legacyXpub\n };\n sendProgress(i, response);\n responses.push(response);\n } catch (error) {\n if (this.hasBundle) {\n responses.push(null);\n sendProgress(i, null, error.message);\n continue;\n } else {\n throw error;\n }\n }\n }\n if (this.disposed) return new Promise(() => []);\n return this.hasBundle ? responses : responses[0];\n }\n dispose() {\n this.disposed = true;\n }\n}\nexports.default = GetAccountDescriptor;\n//# sourceMappingURL=getAccountDescriptor.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst resolveAfter_1 = require(\"@trezor/utils/lib/resolveAfter\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst Discovery_1 = require(\"./common/Discovery\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst accountUtils_1 = require(\"../utils/accountUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetAccountInfo extends AbstractMethod_1.AbstractMethod {\n disposed = false;\n hasBundle;\n discovery;\n init() {\n this.requiredPermissions = ['read'];\n this.useDevice = true;\n this.useUi = true;\n let willUseDevice = false;\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'bundle',\n type: 'array'\n }]);\n this.params = payload.bundle.map(batch => {\n (0, paramsValidator_1.validateParams)(batch, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'descriptor',\n type: 'string'\n }, {\n name: 'path',\n type: 'string'\n }, {\n name: 'details',\n type: 'string'\n }, {\n name: 'tokens',\n type: 'string'\n }, {\n name: 'page',\n type: 'number'\n }, {\n name: 'pageSize',\n type: 'number'\n }, {\n name: 'from',\n type: 'number'\n }, {\n name: 'to',\n type: 'number'\n }, {\n name: 'contractFilter',\n type: 'string'\n }, {\n name: 'gap',\n type: 'number'\n }, {\n name: 'marker',\n type: 'object'\n }, {\n name: 'defaultAccountType',\n type: 'string'\n }, {\n name: 'derivationType',\n type: 'number'\n }, {\n name: 'suppressBackupWarning',\n type: 'boolean'\n }]);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(batch.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n let address_n = [];\n if (batch.path) {\n address_n = (0, pathUtils_1.validatePath)(batch.path, 3);\n willUseDevice = typeof batch.descriptor !== 'string';\n }\n if (!batch.path && !batch.descriptor) {\n if (payload.bundle.length > 1) {\n throw Error('Discovery for multiple coins in not supported');\n }\n willUseDevice = true;\n }\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n return {\n ...batch,\n address_n,\n coinInfo\n };\n });\n this.useDevice = willUseDevice;\n this.useDeviceState = willUseDevice;\n this.useUi = willUseDevice;\n this.noBackupConfirmationMode = this.params.every(batch => batch.suppressBackupWarning) ? 'popup-only' : 'always';\n }\n get info() {\n return 'Export account info';\n }\n get confirmation() {\n if (this.params.length === 1 && !this.params[0].path && !this.params[0].descriptor) {\n return {\n view: 'export-account-info',\n label: `Export info for ${this.params[0].coinInfo.label} account of your selection`,\n customConfirmButton: {\n label: 'Proceed to account selection',\n className: 'not-empty-css'\n }\n };\n } else {\n const keys = {};\n this.params.forEach(b => {\n if (!keys[b.coinInfo.label]) {\n keys[b.coinInfo.label] = {\n coinInfo: b.coinInfo,\n values: []\n };\n }\n keys[b.coinInfo.label].values.push(b.descriptor || b.address_n);\n });\n const str = [];\n Object.keys(keys).forEach((k, _i, _a) => {\n const details = keys[k];\n details.values.forEach(acc => {\n str.push(k);\n str.push(' ');\n if (typeof acc === 'string') {\n str.push(acc);\n } else {\n str.push((0, accountUtils_1.getAccountLabel)(acc, details.coinInfo));\n }\n });\n });\n return {\n view: 'export-account-info',\n label: `Export info for: ${str.join('')}`\n };\n }\n }\n checkFirmwareRange() {\n if (this.params.length === 1) {\n return super.checkFirmwareRange();\n }\n const invalid = [];\n for (let i = 0; i < this.params.length; i++) {\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, this.params[i].coinInfo, AbstractMethod_1.DEFAULT_FIRMWARE_RANGE);\n const exception = super.checkFirmwareRange();\n if (exception) {\n invalid.push({\n index: i,\n exception,\n coin: this.params[i].coin\n });\n }\n }\n if (invalid.length > 0) {\n throw constants_1.ERRORS.TypedError('Method_Discovery_BundleException', JSON.stringify(invalid));\n }\n }\n async run() {\n if (this.params.length === 1 && !this.params[0].path && !this.params[0].descriptor) {\n return this.discover(this.params[0]);\n }\n const responses = [];\n const sendProgress = (progress, response, error) => {\n if (!this.hasBundle || this.device?.getCurrentSession().isDisposed()) return;\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress,\n response,\n error\n }));\n };\n for (let i = 0; i < this.params.length; i++) {\n const request = this.params[i];\n const {\n address_n\n } = request;\n let {\n descriptor\n } = request;\n let legacyXpub;\n let descriptorChecksum;\n if (this.disposed) break;\n if (address_n && typeof descriptor !== 'string') {\n try {\n const accountDescriptor = await this.device.getCommands().getAccountDescriptor(request.coinInfo, address_n, request.derivationType);\n if (accountDescriptor) {\n descriptor = accountDescriptor.descriptor;\n legacyXpub = accountDescriptor.legacyXpub;\n descriptorChecksum = accountDescriptor.descriptorChecksum;\n }\n } catch (error) {\n if (this.hasBundle) {\n responses.push(null);\n sendProgress(i, null, error.message);\n continue;\n } else {\n throw error;\n }\n }\n }\n if (this.disposed) break;\n try {\n if (typeof descriptor !== 'string') {\n throw constants_1.ERRORS.TypedError('Runtime', 'GetAccountInfo: descriptor not found');\n }\n const blockchain = await (0, BlockchainLink_1.initBlockchain)(request.coinInfo, this.postMessage, request.identity);\n if (this.disposed) break;\n const info = await blockchain.getAccountInfo({\n descriptor,\n details: request.details,\n tokens: request.tokens,\n page: request.page,\n pageSize: request.pageSize,\n pageCursor: request.pageCursor,\n from: request.from,\n to: request.to,\n contractFilter: request.contractFilter,\n gap: request.gap,\n marker: request.marker,\n tokenAccountsPubKeys: request.tokenAccountsPubKeys\n });\n if (this.disposed) break;\n let utxo;\n if ((0, accountUtils_1.isUtxoBased)(request.coinInfo) && typeof request.details === 'string' && request.details !== 'basic') {\n utxo = await blockchain.getAccountUtxo(descriptor);\n }\n if (this.disposed) break;\n const account = {\n path: request.path,\n ...info,\n descriptor,\n legacyXpub,\n utxo,\n descriptorChecksum\n };\n responses.push(account);\n sendProgress(i, account);\n } catch (error) {\n if (this.hasBundle) {\n responses.push(null);\n sendProgress(i, null, error.message);\n continue;\n } else {\n throw error;\n }\n }\n }\n if (this.disposed) return new Promise(() => []);\n return this.hasBundle ? responses : responses[0];\n }\n async discover(request) {\n const {\n coinInfo,\n identity,\n defaultAccountType,\n derivationType\n } = request;\n const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity);\n const dfd = this.createUiPromise(events_1.UI.RECEIVE_ACCOUNT);\n const discovery = new Discovery_1.Discovery({\n blockchain,\n getDescriptor: path => this.device.getCommands().getAccountDescriptor(coinInfo, path, derivationType)\n });\n discovery.on('progress', accounts => {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'progress',\n coinInfo,\n accounts\n }));\n });\n discovery.on('complete', () => {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'end',\n coinInfo\n }));\n });\n discovery.start().catch(error => {\n dfd.reject(error);\n });\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.SELECT_ACCOUNT, {\n type: 'start',\n accountTypes: discovery.types.map(t => t.type),\n defaultAccountType,\n coinInfo\n }));\n const uiResp = await dfd.promise;\n discovery.stop();\n const account = discovery.accounts[uiResp.payload];\n if (!discovery.completed) {\n await (0, resolveAfter_1.resolveAfter)(501);\n }\n const info = await blockchain.getAccountInfo({\n descriptor: account.descriptor,\n details: request.details,\n tokens: request.tokens,\n page: request.page,\n pageSize: request.pageSize,\n pageCursor: request.pageCursor,\n from: request.from,\n to: request.to,\n contractFilter: request.contractFilter,\n gap: request.gap,\n marker: request.marker\n });\n let utxo;\n if ((0, accountUtils_1.isUtxoBased)(coinInfo) && typeof request.details === 'string' && request.details !== 'basic') {\n utxo = await blockchain.getAccountUtxo(account.descriptor);\n }\n return {\n path: (0, pathUtils_1.getSerializedPath)(account.address_n),\n ...info,\n utxo\n };\n }\n dispose() {\n this.disposed = true;\n const {\n discovery\n } = this;\n if (discovery) {\n discovery.removeAllListeners();\n discovery.stop();\n }\n }\n}\nexports.default = GetAccountInfo;\n//# sourceMappingURL=getAccountInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GetAddress = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.GetAddress = schema_utils_1.Type.Composite([params_1.GetAddress, schema_utils_1.Type.Object({\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n crossChain: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType),\n scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType),\n unlockPath: schema_utils_1.Type.Optional(constants_1.PROTO.UnlockPath)\n})]);\n//# sourceMappingURL=getAddress.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../constants\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst getAddress_1 = require(\"../types/api/getAddress\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetAddress extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n progress = 0;\n init() {\n this.noBackupConfirmationMode = 'always';\n this.requiredPermissions = ['read'];\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n payload?.bundle.forEach(bundleElement => {\n if (bundleElement.multisig && bundleElement.multisig?.signatures === undefined) {\n bundleElement.multisig.signatures = Array(bundleElement.multisig?.pubkeys.length).fill('');\n }\n });\n (0, schema_utils_1.Assert)((0, types_1.Bundle)(getAddress_1.GetAddress), payload);\n this.params = payload.bundle.map(batch => {\n const path = (0, pathUtils_1.validatePath)(batch.path, 1);\n let coinInfo;\n if (batch.coin) {\n coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin);\n }\n if (coinInfo && !batch.crossChain) {\n (0, paramsValidator_1.validateCoinPath)(path, coinInfo);\n } else if (!coinInfo) {\n coinInfo = (0, coinInfo_1.getBitcoinNetwork)(path);\n }\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n } else if (coinInfo) {\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n }\n coinInfo = (0, coinInfo_1.fixCoinInfoNetwork)(coinInfo, path);\n return {\n address_n: path,\n address: batch.address,\n show_display: typeof batch.showOnTrezor === 'boolean' ? batch.showOnTrezor : true,\n multisig: batch.multisig,\n script_type: batch.scriptType,\n coinInfo,\n unlockPath: batch.unlockPath,\n chunkify: typeof batch.chunkify === 'boolean' ? batch.chunkify : false\n };\n });\n const useEventListener = payload.useEventListener && this.params.length === 1 && typeof this.params[0].address === 'string' && this.params[0].show_display;\n this.useUi = !useEventListener;\n }\n get info() {\n if (this.params.length === 1) {\n return (0, pathUtils_1.getLabel)('Export #NETWORK address', this.params[0].coinInfo);\n }\n const requestedNetworks = this.params.map(b => b.coinInfo);\n const uniqNetworks = (0, coinInfo_1.getUniqueNetworks)(requestedNetworks);\n if (uniqNetworks.length === 1 && uniqNetworks[0]) {\n return (0, pathUtils_1.getLabel)('Export multiple #NETWORK addresses', uniqNetworks[0]);\n }\n return 'Export multiple addresses';\n }\n getButtonRequestData(code) {\n if (code === 'ButtonRequest_Address') {\n return {\n type: 'address',\n serializedPath: (0, pathUtils_1.getSerializedPath)(this.params[this.progress].address_n),\n address: this.params[this.progress].address || 'not-set'\n };\n }\n }\n get confirmation() {\n return !this.useUi ? undefined : {\n view: 'export-address',\n label: this.info\n };\n }\n async _call({\n address_n,\n show_display,\n multisig,\n script_type,\n coinInfo,\n unlockPath,\n chunkify\n }) {\n const cmd = this.device.getCommands();\n if (unlockPath) {\n await cmd.unlockPath(unlockPath);\n }\n const response = await cmd.getAddress({\n address_n,\n show_display,\n multisig,\n script_type,\n chunkify\n }, coinInfo);\n return {\n path: address_n,\n serializedPath: (0, pathUtils_1.getSerializedPath)(address_n),\n address: response.address,\n mac: response.mac\n };\n }\n async run() {\n const responses = [];\n for (let i = 0; i < this.params.length; i++) {\n const batch = this.params[i];\n if (batch.show_display) {\n const silent = await this._call({\n ...batch,\n show_display: false\n });\n if (typeof batch.address === 'string') {\n if (batch.address !== silent.address) {\n throw constants_1.ERRORS.TypedError('Method_AddressNotMatch');\n }\n } else {\n batch.address = silent.address;\n }\n }\n const response = await this._call(batch);\n responses.push(response);\n if (this.hasBundle) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress: i,\n response\n }));\n }\n this.progress++;\n }\n return this.hasBundle ? responses : responses[0];\n }\n}\nexports.default = GetAddress;\n//# sourceMappingURL=getAddress.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst types_1 = require(\"../types\");\nclass GetCoinInfo extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useDevice = false;\n this.useUi = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(types_1.CoinObj, payload);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n this.params = {\n coinInfo\n };\n }\n run() {\n return Promise.resolve(this.params.coinInfo);\n }\n}\nexports.default = GetCoinInfo;\n//# sourceMappingURL=getCoinInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass GetDeviceState extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n }\n run() {\n const state = this.device.getState();\n if (!state?.staticSessionId) {\n throw constants_1.ERRORS.TypedError('Runtime', 'Device state not set');\n }\n return Promise.resolve({\n state: state.staticSessionId,\n _state: state\n });\n }\n}\nexports.default = GetDeviceState;\n//# sourceMappingURL=getDeviceState.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nclass GetFeatures extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useUi = false;\n this.allowDeviceMode = [...this.allowDeviceMode, events_1.UI.INITIALIZE, events_1.UI.BOOTLOADER];\n this.useDeviceState = false;\n this.skipFirmwareCheck = true;\n this.skipFinalReload = true;\n }\n run() {\n return Promise.resolve(this.device.features);\n }\n}\nexports.default = GetFeatures;\n//# sourceMappingURL=getFeatures.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass GetFirmwareHash extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.useEmptyPassphrase = true;\n this.useDeviceState = false;\n this.allowDeviceMode = [events_1.UI.INITIALIZE];\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.GetFirmwareHash, payload);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n this.params = {\n challenge: payload.challenge\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('GetFirmwareHash', 'FirmwareHash', this.params);\n return response.message;\n }\n}\nexports.default = GetFirmwareHash;\n//# sourceMappingURL=getFirmwareHash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass GetNonce extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDeviceState = false;\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('GetNonce', 'Nonce');\n return response.message;\n }\n}\nexports.default = GetNonce;\n//# sourceMappingURL=getNonce.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GetOwnershipId = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.GetOwnershipId = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType),\n scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType)\n});\n//# sourceMappingURL=getOwnershipId.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst getOwnershipId_1 = require(\"../types/api/getOwnershipId\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetOwnershipId extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n (0, schema_utils_1.Assert)((0, types_1.Bundle)(getOwnershipId_1.GetOwnershipId), payload);\n this.params = payload.bundle.map(batch => {\n const address_n = (0, pathUtils_1.validatePath)(batch.path, 1);\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin || address_n);\n const script_type = batch.scriptType || (0, pathUtils_1.getScriptType)(address_n);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n return {\n address_n,\n coin_name: coinInfo ? coinInfo.name : undefined,\n multisig: batch.multisig,\n script_type\n };\n });\n }\n get info() {\n return 'Export ownership id';\n }\n get confirmation() {\n return {\n view: 'export-address',\n label: this.params.length > 1 ? 'Export multiple ownership proof ids' : this.info\n };\n }\n async run() {\n const responses = [];\n const cmd = this.device.getCommands();\n for (let i = 0; i < this.params.length; i++) {\n const batch = this.params[i];\n const {\n message\n } = await cmd.typedCall('GetOwnershipId', 'OwnershipId', batch);\n responses.push({\n ...message,\n path: batch.address_n,\n serializedPath: (0, pathUtils_1.getSerializedPath)(batch.address_n)\n });\n if (this.hasBundle) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress: i,\n response: message\n }));\n }\n }\n return this.hasBundle ? responses : responses[0];\n }\n}\nexports.default = GetOwnershipId;\n//# sourceMappingURL=getOwnershipId.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GetOwnershipProof = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.GetOwnershipProof = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n multisig: schema_utils_1.Type.Optional(constants_1.PROTO.MultisigRedeemScriptType),\n scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType),\n userConfirmation: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n ownershipIds: schema_utils_1.Type.Optional(schema_utils_1.Type.Array(schema_utils_1.Type.String(), {\n minItems: 1\n })),\n commitmentData: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n preauthorized: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n});\n//# sourceMappingURL=getOwnershipProof.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst getOwnershipProof_1 = require(\"../types/api/getOwnershipProof\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetOwnershipProof extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n (0, schema_utils_1.Assert)((0, types_1.Bundle)(getOwnershipProof_1.GetOwnershipProof), payload);\n this.params = payload.bundle.map(batch => {\n const address_n = (0, pathUtils_1.validatePath)(batch.path, 1);\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin || address_n);\n const script_type = batch.scriptType || (0, pathUtils_1.getScriptType)(address_n);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n if (batch.preauthorized) {\n this.preauthorized = batch.preauthorized;\n }\n return {\n address_n,\n coin_name: coinInfo ? coinInfo.name : undefined,\n multisig: batch.multisig,\n script_type,\n user_confirmation: batch.userConfirmation,\n ownership_ids: batch.ownershipIds,\n commitment_data: batch.commitmentData\n };\n });\n }\n get info() {\n return 'Export ownership proof';\n }\n get confirmation() {\n return {\n view: 'export-address',\n label: this.params.length > 1 ? 'Export multiple ownership proofs' : this.info\n };\n }\n async run() {\n const responses = [];\n const cmd = this.device.getCommands();\n for (let i = 0; i < this.params.length; i++) {\n const batch = this.params[i];\n if (this.preauthorized) {\n await cmd.preauthorize(true);\n }\n const {\n message\n } = await cmd.typedCall('GetOwnershipProof', 'OwnershipProof', batch);\n responses.push({\n ...message,\n path: batch.address_n,\n serializedPath: (0, pathUtils_1.getSerializedPath)(batch.address_n)\n });\n if (this.hasBundle) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress: i,\n response: message\n }));\n }\n }\n return this.hasBundle ? responses : responses[0];\n }\n}\nexports.default = GetOwnershipProof;\n//# sourceMappingURL=getOwnershipProof.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.HDNodeResponse = exports.GetPublicKey = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nconst params_1 = require(\"../params\");\nexports.GetPublicKey = schema_utils_1.Type.Intersect([params_1.GetPublicKey, schema_utils_1.Type.Object({\n coin: schema_utils_1.Type.Optional(schema_utils_1.Type.String({\n description: 'determines network definition specified in coins.json file. Coin shortcut, name or label can be used. If coin is not set API will try to get network definition from path.',\n default: 'btc'\n })),\n crossChain: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n scriptType: schema_utils_1.Type.Optional(constants_1.PROTO.InternalInputScriptType),\n ignoreXpubMagic: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean()),\n ecdsaCurveName: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n unlockPath: schema_utils_1.Type.Optional(constants_1.PROTO.UnlockPath)\n})]);\nexports.HDNodeResponse = schema_utils_1.Type.Intersect([params_1.PublicKey, schema_utils_1.Type.Object({\n childNum: schema_utils_1.Type.Number(),\n xpub: schema_utils_1.Type.String(),\n xpubSegwit: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n descriptorChecksum: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n chainCode: schema_utils_1.Type.String(),\n fingerprint: schema_utils_1.Type.Number(),\n depth: schema_utils_1.Type.Number(),\n descriptor: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n})]);\n//# sourceMappingURL=getPublicKey.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst getPublicKey_1 = require(\"../types/api/getPublicKey\");\nconst accountUtils_1 = require(\"../utils/accountUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass GetPublicKey extends AbstractMethod_1.AbstractMethod {\n hasBundle;\n init() {\n this.requiredPermissions = ['read'];\n this.hasBundle = !!this.payload.bundle;\n const payload = !this.payload.bundle ? {\n ...this.payload,\n bundle: [this.payload]\n } : this.payload;\n (0, schema_utils_1.Assert)((0, types_1.Bundle)(getPublicKey_1.GetPublicKey), payload);\n this.params = payload.bundle.map(batch => {\n let coinInfo;\n if (batch.coin) {\n coinInfo = (0, coinInfo_1.getBitcoinNetwork)(batch.coin);\n }\n const address_n = (0, pathUtils_1.validatePath)(batch.path, coinInfo ? 3 : 0);\n if (coinInfo && !batch.crossChain) {\n (0, paramsValidator_1.validateCoinPath)(address_n, coinInfo);\n } else if (!coinInfo) {\n coinInfo = (0, coinInfo_1.getBitcoinNetwork)(address_n);\n }\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n return {\n address_n,\n coin_name: coinInfo?.name,\n show_display: batch.showOnTrezor,\n script_type: batch.scriptType,\n ignore_xpub_magic: batch.ignoreXpubMagic,\n ecdsa_curve_name: batch.ecdsaCurveName,\n coinInfo,\n unlockPath: batch.unlockPath,\n suppress_backup_warning: batch.suppressBackupWarning\n };\n });\n this.noBackupConfirmationMode = this.params.every(batch => batch.suppressBackupWarning || !batch.show_display) ? 'popup-only' : 'always';\n }\n get info() {\n return 'Export public key';\n }\n get confirmation() {\n return {\n view: 'export-xpub',\n label: this.params.length > 1 ? 'Export multiple public keys' : (0, accountUtils_1.getPublicKeyLabel)(this.params[0].address_n, this.params[0].coinInfo)\n };\n }\n async run() {\n const responses = [];\n const cmd = this.device.getCommands();\n for (let i = 0; i < this.params.length; i++) {\n const {\n coinInfo,\n unlockPath,\n ...batch\n } = this.params[i];\n const coinInfoFallback = coinInfo ?? (0, coinInfo_1.getBitcoinNetwork)('btc');\n const response = await cmd.getHDNode(batch, {\n coinInfo: coinInfoFallback,\n unlockPath\n });\n responses.push(response);\n if (this.hasBundle) {\n this.postMessage((0, events_1.createUiMessage)(events_1.UI.BUNDLE_PROGRESS, {\n total: this.params.length,\n progress: i,\n response\n }));\n }\n }\n return this.hasBundle ? responses : responses[0];\n }\n}\nexports.default = GetPublicKey;\n//# sourceMappingURL=getPublicKey.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst DataManager_1 = require(\"../data/DataManager\");\nclass GetSettings extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useDevice = false;\n this.useUi = false;\n }\n run() {\n return Promise.resolve(DataManager_1.DataManager.getSettings());\n }\n}\nexports.default = GetSettings;\n//# sourceMappingURL=getSettings.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PushTransaction = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.PushTransaction = schema_utils_1.Type.Object({\n tx: schema_utils_1.Type.Union([schema_utils_1.Type.String(), schema_utils_1.Type.Object({\n hex: schema_utils_1.Type.String(),\n disableAlternativeRPC: schema_utils_1.Type.Optional(schema_utils_1.Type.Boolean())\n })]),\n coin: schema_utils_1.Type.String(),\n identity: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\n//# sourceMappingURL=pushTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst pushTransaction_1 = require(\"../types/api/pushTransaction\");\nclass PushTransaction extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['push_tx'];\n this.useUi = false;\n this.useDevice = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(pushTransaction_1.PushTransaction, payload);\n const coinInfo = (0, coinInfo_1.getCoinInfo)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n if (coinInfo.type === 'bitcoin' && (typeof payload.tx !== 'string' || !/^[0-9A-Fa-f]*$/.test(payload.tx))) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Transaction must be hexadecimal');\n }\n this.params = {\n tx: payload.tx,\n coinInfo,\n identity: payload.identity\n };\n }\n async run() {\n const backend = await (0, BlockchainLink_1.initBlockchain)(this.params.coinInfo, this.postMessage, this.params.identity);\n const txid = await backend.pushTransaction(this.params.tx);\n return {\n txid\n };\n }\n}\nexports.default = PushTransaction;\n//# sourceMappingURL=pushTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RecoveryDevice = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../../constants\");\nexports.RecoveryDevice = schema_utils_1.Type.Composite([constants_1.PROTO.RecoveryDevice, schema_utils_1.Type.Object({\n word_count: schema_utils_1.Type.Optional(schema_utils_1.Type.Union([schema_utils_1.Type.Literal(12), schema_utils_1.Type.Literal(18), schema_utils_1.Type.Literal(24)]))\n})]);\n//# sourceMappingURL=recoveryDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst recoveryDevice_1 = require(\"../types/api/recoveryDevice\");\nclass RecoveryDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useEmptyPassphrase = true;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(recoveryDevice_1.RecoveryDevice, payload);\n this.params = {\n word_count: payload.word_count,\n passphrase_protection: payload.passphrase_protection,\n pin_protection: payload.pin_protection,\n language: payload.language,\n label: payload.label,\n enforce_wordlist: payload.enforce_wordlist,\n input_method: payload.input_method,\n type: payload.type,\n u2f_counter: payload.u2f_counter\n };\n this.allowDeviceMode = [...this.allowDeviceMode, events_1.UI.INITIALIZE];\n this.useDeviceState = false;\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'confirm',\n label: 'Proceed'\n },\n label: 'Do you want to recover device from seed?'\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('RecoveryDevice', 'Success', this.params);\n return response.message;\n }\n get info() {\n return 'Recover device';\n }\n}\nexports.default = RecoveryDevice;\n//# sourceMappingURL=recoveryDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.RequestLoginSchema = exports.LoginChallenge = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nexports.LoginChallenge = schema_utils_1.Type.Object({\n challengeHidden: schema_utils_1.Type.String(),\n challengeVisual: schema_utils_1.Type.String(),\n origin: schema_utils_1.Type.Optional(schema_utils_1.Type.String()),\n asyncChallenge: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined()),\n callback: schema_utils_1.Type.Optional(schema_utils_1.Type.Undefined())\n});\nexports.RequestLoginSchema = schema_utils_1.Type.Union([exports.LoginChallenge]);\n//# sourceMappingURL=requestLogin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst requestLogin_1 = require(\"../types/api/requestLogin\");\nclass RequestLogin extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['read', 'write'];\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n this.useEmptyPassphrase = true;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(requestLogin_1.RequestLoginSchema, payload);\n const identity = {};\n const settings = DataManager_1.DataManager.getSettings();\n let origin;\n if (settings.trustedHost && payload.origin) {\n origin = payload.origin;\n } else if (settings.origin) {\n origin = settings.origin;\n }\n if (origin) {\n const [proto, host, port] = origin.split(':');\n identity.proto = proto;\n identity.host = host.substring(2);\n if (port) {\n identity.port = port;\n }\n identity.index = 0;\n }\n this.params = {\n identity,\n challenge_hidden: payload.challengeHidden || '',\n challenge_visual: payload.challengeVisual || ''\n };\n }\n get info() {\n return 'Login';\n }\n async run() {\n const cmd = this.device.getCommands();\n const {\n message\n } = await cmd.typedCall('SignIdentity', 'SignedIdentity', this.params);\n return {\n address: message.address,\n publicKey: message.public_key,\n signature: message.signature\n };\n }\n}\nexports.default = RequestLogin;\n//# sourceMappingURL=requestLogin.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.verifyEntropy = exports.generateEntropy = void 0;\nconst crypto_1 = require(\"@noble/hashes/crypto\");\nconst hmac_1 = require(\"@noble/hashes/hmac\");\nconst sha256_1 = require(\"@noble/hashes/sha256\");\nconst utils_1 = require(\"@noble/hashes/utils\");\nconst bip39_1 = require(\"@scure/bip39\");\nconst crypto_utils_1 = require(\"@trezor/crypto-utils\");\nconst utxo_lib_1 = require(\"@trezor/utxo-lib\");\nconst constants_1 = require(\"../../constants\");\nconst generateEntropy = len => {\n try {\n return Buffer.from((0, utils_1.randomBytes)(len));\n } catch {\n throw new Error('generateEntropy: Environment does not support crypto random');\n }\n};\nexports.generateEntropy = generateEntropy;\nconst BASE_ITERATION_COUNT = 10000;\nconst ROUND_COUNT = 4;\nconst roundFunction = async (i, passphrase, e, salt, r) => {\n const data = Buffer.concat([Buffer.from([i]), passphrase]);\n const iterations = Math.floor((BASE_ITERATION_COUNT << e) / ROUND_COUNT);\n const {\n subtle\n } = crypto_1.crypto;\n const key = await subtle.importKey('raw', data, 'PBKDF2', false, ['deriveBits']);\n const bits = await subtle.deriveBits({\n name: 'PBKDF2',\n hash: 'SHA-256',\n salt: Buffer.concat([salt, r]),\n iterations\n }, key, r.length * 8);\n return Buffer.from(bits);\n};\nconst xor = (a, b) => {\n if (a.length !== b.length) {\n throw new Error('Buffers must be of equal length to XOR.');\n }\n const result = Buffer.alloc(a.length);\n for (let i = 0; i < a.length; i++) {\n result[i] = a[i] ^ b[i];\n }\n return result;\n};\nconst entropyToSeedSlip39 = async encryptedSecret => {\n const iterationExponent = 1;\n const passphrase = Buffer.from('', 'utf-8');\n const salt = Buffer.alloc(0);\n const half = Math.floor(encryptedSecret.length / 2);\n let l = encryptedSecret.subarray(0, half);\n let r = encryptedSecret.subarray(half);\n for (let round = ROUND_COUNT - 1; round >= 0; round--) {\n const f = await roundFunction(round, passphrase, iterationExponent, salt, r);\n const rr = xor(l, f);\n l = r;\n r = rr;\n }\n return Buffer.concat([r, l]);\n};\nconst getEntropy = (trezorEntropy, hostEntropy, strength) => {\n const data = Buffer.concat([Buffer.from(trezorEntropy, 'hex'), Buffer.from(hostEntropy, 'hex')]);\n const entropy = (0, sha256_1.sha256)(data);\n return Buffer.from(entropy.subarray(0, Math.floor(strength / 8)));\n};\nconst computeSeed = (type, secret) => {\n const BackupType = constants_1.PROTO.Enum_BackupType;\n if (type && [BackupType.Slip39_Basic, BackupType.Slip39_Advanced, BackupType.Slip39_Single_Extendable, BackupType.Slip39_Basic_Extendable, BackupType.Slip39_Advanced_Extendable].includes(type)) {\n return entropyToSeedSlip39(secret);\n }\n return (0, bip39_1.mnemonicToSeed)((0, bip39_1.entropyToMnemonic)(secret, [...crypto_utils_1.bip39])).then(seed => Buffer.from(seed));\n};\nconst verifyCommitment = (entropy, commitment) => {\n const hmacDigest = (0, hmac_1.hmac)(sha256_1.sha256, Buffer.from(entropy, 'hex'), Buffer.alloc(0));\n if (!Buffer.from(hmacDigest).equals(Buffer.from(commitment, 'hex'))) {\n throw new Error('Invalid entropy commitment');\n }\n};\nconst verifyEntropy = async ({\n type,\n strength,\n trezorEntropy,\n hostEntropy,\n commitment,\n xpubs\n}) => {\n try {\n if (!trezorEntropy || !commitment || !strength || Object.keys(xpubs).length < 1) {\n throw new Error('Missing verifyEntropy data');\n }\n verifyCommitment(trezorEntropy, commitment);\n const secret = getEntropy(trezorEntropy, hostEntropy, strength);\n const seed = await computeSeed(type, secret);\n const node = utxo_lib_1.bip32.fromSeed(seed);\n Object.keys(xpubs).forEach(path => {\n const pubKey = node.derivePath(path);\n const xpub = pubKey.neutered().toBase58();\n if (xpub !== xpubs[path]) {\n throw new Error('verifyEntropy xpub mismatch');\n }\n });\n return {\n success: true\n };\n } catch (error) {\n return {\n success: false,\n error: error.message\n };\n }\n};\nexports.verifyEntropy = verifyEntropy;\n//# sourceMappingURL=verifyEntropy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst verifyEntropy_1 = require(\"../api/firmware/verifyEntropy\");\nconst constants_1 = require(\"../constants\");\nconst errors_1 = require(\"../constants/errors\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass ResetDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.useDeviceState = false;\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(constants_1.PROTO.ResetDevice, payload);\n this.params = {\n strength: payload.strength || 256,\n passphrase_protection: payload.passphrase_protection,\n pin_protection: payload.pin_protection,\n language: payload.language,\n label: payload.label,\n u2f_counter: payload.u2f_counter || Math.floor(Date.now() / 1000),\n skip_backup: payload.skip_backup,\n no_backup: payload.no_backup,\n backup_type: payload.backup_type,\n entropy_check: typeof payload.entropy_check === 'boolean' ? payload.entropy_check : true\n };\n }\n get info() {\n return 'Setup device';\n }\n get confirmation() {\n return {\n view: 'device-management',\n label: 'Do you really you want to create a new wallet?'\n };\n }\n async resetDeviceWorkflow() {\n const cmd = this.device.getCommands();\n const entropy = (0, verifyEntropy_1.generateEntropy)(32).toString('hex');\n await cmd.typedCall('ResetDevice', 'EntropyRequest', this.params);\n await cmd.typedCall('EntropyAck', 'Success', {\n entropy\n });\n }\n async entropyCheckWorkflow() {\n const cmd = this.device.getCommands();\n const paths = [\"m/84'/0'/0'\", \"m/44'/60'/0'\"];\n const handleErr = error => {\n throw error instanceof errors_1.TransportError ? error : constants_1.ERRORS.TypedError('Failure_EntropyCheck', error.message);\n };\n let entropy = (0, verifyEntropy_1.generateEntropy)(32).toString('hex');\n let commitment = await cmd.typedCall('ResetDevice', 'EntropyRequest', this.params).then(response => response.message.entropy_commitment);\n await cmd.typedCall('EntropyAck', 'EntropyCheckReady', {\n entropy\n });\n const tries = (0, utils_1.getRandomInt)(1, 5);\n for (let i = 0; i < tries; i++) {\n const xpubs = {};\n for (const path of paths) {\n const pubKey = await cmd.getPublicKey({\n address_n: (0, pathUtils_1.validatePath)(path)\n }).catch(handleErr);\n xpubs[path] = pubKey.xpub;\n }\n const {\n prev_entropy,\n entropy_commitment\n } = await cmd.typedCall('EntropyCheckContinue', 'EntropyRequest', {}).then(response => response.message).catch(handleErr);\n const res = await (0, verifyEntropy_1.verifyEntropy)({\n type: this.params.backup_type,\n strength: this.params.strength,\n commitment,\n hostEntropy: entropy,\n trezorEntropy: prev_entropy,\n xpubs\n });\n if (res.error) {\n await this.device.getCurrentSession().cancelCall();\n throw constants_1.ERRORS.TypedError('Failure_EntropyCheck', res.error);\n }\n entropy = (0, verifyEntropy_1.generateEntropy)(32).toString('hex');\n commitment = entropy_commitment;\n await cmd.typedCall('EntropyAck', 'EntropyCheckReady', {\n entropy\n }).catch(handleErr);\n }\n await cmd.typedCall('EntropyCheckContinue', 'Success', {\n finish: true\n });\n }\n async run() {\n if (this.params.entropy_check && this.device.unavailableCapabilities['entropyCheck']) {\n this.params.entropy_check = false;\n }\n if (this.params.entropy_check) {\n await this.entropyCheckWorkflow();\n } else {\n await this.resetDeviceWorkflow();\n }\n return {\n message: 'Success'\n };\n }\n}\nexports.default = ResetDevice;\n//# sourceMappingURL=resetDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass LoadDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE];\n this.useDeviceState = false;\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.LoadDevice, payload);\n this.params = {\n mnemonics: payload.mnemonics,\n pin: payload.pin,\n passphrase_protection: payload.passphrase_protection,\n language: payload.language,\n label: payload.label,\n skip_checksum: payload.skip_checksum,\n u2f_counter: payload.u2f_counter,\n needs_backup: payload.needs_backup,\n no_backup: payload.no_backup\n };\n }\n get info() {\n return 'Load seed and related internal settings.';\n }\n get confirmation() {\n return {\n view: 'device-management',\n label: 'Do you really you want to load device?'\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('LoadDevice', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = LoadDevice;\n//# sourceMappingURL=loadDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nclass SetBrightness extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n this.useDeviceState = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SetBrightness, payload);\n this.params = {\n value: payload.value\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('SetBrightness', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = SetBrightness;\n//# sourceMappingURL=setBrightness.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass SetBusy extends AbstractMethod_1.AbstractMethod {\n init() {\n this.useDeviceState = false;\n this.requiredPermissions = ['management'];\n this.skipFinalReload = false;\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.SetBusy, payload);\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, undefined, this.firmwareRange);\n this.params = {\n expiry_ms: payload.expiry_ms\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const {\n message\n } = await cmd.typedCall('SetBusy', 'Success', this.params);\n if (this.keepSession && !!this.params.expiry_ms) {\n this.device.features.busy = true;\n this.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CHANGED, this.device.toMessageObject()));\n }\n return message;\n }\n}\nexports.default = SetBusy;\n//# sourceMappingURL=setBusy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst DataManager_1 = require(\"../data/DataManager\");\nclass SetProxy extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = [];\n this.useDevice = false;\n this.useUi = false;\n (0, paramsValidator_1.validateParams)(this.payload, []);\n }\n async run() {\n const {\n proxy\n } = DataManager_1.DataManager.getSettings();\n const isChanged = proxy !== this.payload.proxy;\n if (isChanged) {\n DataManager_1.DataManager.getSettings().proxy = this.payload.proxy;\n await (0, BlockchainLink_1.reconnectAllBackends)();\n }\n return {\n message: 'Success'\n };\n }\n}\nexports.default = SetProxy;\n//# sourceMappingURL=setProxy.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst types_1 = require(\"../types\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst formatUtils_1 = require(\"../utils/formatUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass SignMessage extends AbstractMethod_1.AbstractMethod {\n coinInfo;\n init() {\n this.requiredPermissions = ['read', 'write'];\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(types_1.SignMessage, payload);\n const path = (0, pathUtils_1.validatePath)(payload.path);\n if (payload.coin) {\n this.coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin);\n (0, paramsValidator_1.validateCoinPath)(path, this.coinInfo);\n } else {\n this.coinInfo = (0, coinInfo_1.getBitcoinNetwork)(path);\n }\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(payload.no_script_type ? 'signMessageNoScriptType' : this.name, this.coinInfo, this.firmwareRange);\n const messageHex = payload.hex ? (0, formatUtils_1.messageToHex)(payload.message) : Buffer.from(payload.message, 'utf8').toString('hex');\n const scriptType = (0, pathUtils_1.getScriptType)(path);\n this.params = {\n address_n: path,\n message: messageHex,\n coin_name: this.coinInfo ? this.coinInfo.name : undefined,\n script_type: scriptType && scriptType !== 'SPENDMULTISIG' ? scriptType : 'SPENDADDRESS',\n no_script_type: payload.no_script_type\n };\n }\n get info() {\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin ?? this.params.address_n);\n return (0, pathUtils_1.getLabel)('Sign #NETWORK message', coinInfo);\n }\n getButtonRequestData(code, name) {\n if (code === 'ButtonRequest_Other' && name === 'sign_message') {\n return {\n type: 'message',\n serializedPath: (0, pathUtils_1.getSerializedPath)(this.params.address_n),\n coin: this.coinInfo?.shortcut ?? 'BTC',\n message: this.payload.hex ? (0, formatUtils_1.hexToText)(this.payload.message) : this.payload.message\n };\n }\n }\n async run() {\n const cmd = this.device.getCommands();\n const {\n message\n } = await cmd.typedCall('SignMessage', 'MessageSignature', this.params);\n const signatureBuffer = Buffer.from(message.signature, 'hex');\n message.signature = signatureBuffer.toString('base64');\n return message;\n }\n}\nexports.default = SignMessage;\n//# sourceMappingURL=signMessage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TxWeightCalculator = void 0;\nconst coinselectUtils_1 = require(\"./coinselect/coinselectUtils\");\nconst _TXSIZE_HEADER = 4;\nconst _TXSIZE_FOOTER = 4;\nconst _TXSIZE_SEGWIT_OVERHEAD = 2;\nconst _TXSIZE_INPUT = 40;\nconst _TXSIZE_OUTPUT = 8;\nconst _TXSIZE_PUBKEY = 33;\nconst _TXSIZE_DER_SIGNATURE = 72;\nconst _TXSIZE_SCHNORR_SIGNATURE = 64;\nconst _TXSIZE_MULTISIGSCRIPT = 3;\nconst _TXSIZE_WITNESSPKHASH = 22;\nconst _TXSIZE_WITNESSSCRIPT = 34;\nconst SCRIPT_TYPES = {\n p2pkh: 'SPENDADDRESS',\n p2sh: 'SPENDP2SHWITNESS',\n p2tr: 'SPENDTAPROOT',\n p2wpkh: 'SPENDWITNESS'\n};\nconst SEGWIT_INPUT_SCRIPT_TYPES = ['SPENDP2SHWITNESS', 'SPENDWITNESS', 'SPENDTAPROOT'];\nconst NONSEGWIT_INPUT_SCRIPT_TYPES = ['SPENDADDRESS', 'SPENDMULTISIG'];\nfunction getVarIntSize(length) {\n if (length < 253) return 1;\n if (length < 65536) return 3;\n return 5;\n}\nfunction getOpPushSize(length) {\n if (length < 76) return 1;\n if (length < 256) return 2;\n if (length < 65536) return 3;\n return 5;\n}\nclass TxWeightCalculator {\n inputs_count = 0;\n outputs_count = 0;\n counter = 4 * (_TXSIZE_HEADER + _TXSIZE_FOOTER);\n segwit_inputs_count = 0;\n inputs = [];\n addInputByKey(type) {\n this.addInput({\n script_type: SCRIPT_TYPES[type]\n });\n }\n addInput(input) {\n this.inputs_count += 1;\n let input_script_size = 0;\n if (input.multisig) {\n if (input.script_type === 'SPENDTAPROOT') {\n throw new Error('Multisig not supported for Taproot yet');\n }\n const n = input.multisig.nodes ? input.multisig.nodes.length : input.multisig.pubkeys.length;\n let multisig_script_size = _TXSIZE_MULTISIGSCRIPT + n * (1 + _TXSIZE_PUBKEY);\n if (SEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) {\n multisig_script_size += getVarIntSize(multisig_script_size);\n } else {\n multisig_script_size += getOpPushSize(multisig_script_size);\n input_script_size = 1 + input.multisig.m * (1 + _TXSIZE_DER_SIGNATURE) + multisig_script_size;\n }\n } else if (input.script_type === 'SPENDTAPROOT') {\n input_script_size = 1 + _TXSIZE_SCHNORR_SIGNATURE;\n } else {\n input_script_size = 1 + _TXSIZE_DER_SIGNATURE + 1 + _TXSIZE_PUBKEY;\n }\n this.counter += 4 * _TXSIZE_INPUT;\n if (NONSEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) {\n input_script_size += getVarIntSize(input_script_size);\n this.counter += 4 * input_script_size;\n } else if (SEGWIT_INPUT_SCRIPT_TYPES.includes(input.script_type)) {\n this.segwit_inputs_count += 1;\n if (input.script_type === 'SPENDP2SHWITNESS') {\n if (input.multisig) {\n this.counter += 4 * (2 + _TXSIZE_WITNESSSCRIPT);\n } else {\n this.counter += 4 * (2 + _TXSIZE_WITNESSPKHASH);\n }\n } else {\n this.counter += 4;\n }\n this.counter += 1 + input_script_size;\n } else if (input.script_type === 'EXTERNAL') {\n const witness_size = 0;\n const script_sig_size = 0;\n if (input.ownership_proof) {} else {}\n if (witness_size > 1) {\n this.segwit_inputs_count += 1;\n }\n this.counter += 4 * (getVarIntSize(script_sig_size) + script_sig_size);\n this.counter += witness_size;\n } else {\n throw new Error('unknown input script_type');\n }\n this.inputs.push({\n length: input_script_size\n });\n }\n addOutputByKey(key) {\n this.addOutput({\n length: coinselectUtils_1.OUTPUT_SCRIPT_LENGTH[key]\n });\n }\n addOutput(script) {\n this.outputs_count += 1;\n const script_size = getVarIntSize(script.length) + script.length;\n this.counter += 4 * (_TXSIZE_OUTPUT + script_size);\n }\n getTotal() {\n let total = this.counter;\n total += 4 * getVarIntSize(this.inputs_count);\n total += 4 * getVarIntSize(this.outputs_count);\n if (this.segwit_inputs_count) {\n total += _TXSIZE_SEGWIT_OVERHEAD;\n total += this.inputs_count - this.segwit_inputs_count;\n }\n return total;\n }\n getVirtualBytes() {\n return Math.ceil(this.getTotal() / 4);\n }\n}\nexports.TxWeightCalculator = TxWeightCalculator;\n//# sourceMappingURL=txWeightCalculator.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTransactionVbytes = void 0;\nexports.mapOutputScriptToKey = mapOutputScriptToKey;\nconst tslib_1 = require(\"tslib\");\nconst baddress = tslib_1.__importStar(require(\"@trezor/utxo-lib/lib/address\"));\nconst txWeightCalculator_1 = require(\"@trezor/utxo-lib/lib/txWeightCalculator\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nfunction mapOutputScriptToKey(script_type) {\n switch (script_type) {\n case 'PAYTOADDRESS':\n return 'p2pkh';\n case 'PAYTOSCRIPTHASH':\n return 'p2sh';\n case 'PAYTOWITNESS':\n return 'p2wpkh';\n case 'PAYTOP2SHWITNESS':\n return 'p2sh';\n case 'PAYTOTAPROOT':\n return 'p2tr';\n default:\n return undefined;\n }\n}\nconst getTransactionVbytes = (inputs, outputs, coinInfo) => {\n const calc = new txWeightCalculator_1.TxWeightCalculator();\n let cannotProcess = false;\n inputs.forEach(input => {\n const script_type = input.script_type ?? (0, pathUtils_1.getScriptType)(input.address_n);\n if (script_type && !input.witness) {\n calc.addInput({\n script_type,\n multisig: input.multisig,\n ownership_proof: input.ownership_proof\n });\n } else {\n cannotProcess = true;\n }\n });\n outputs.forEach(out => {\n if (out.script_type === 'PAYTOOPRETURN') {\n if (!out.op_return_data) {\n cannotProcess = true;\n return;\n }\n calc.addOutput({\n length: 2 + out.op_return_data.length / 2\n });\n return;\n } else if (out.address) {\n calc.addOutput({\n length: baddress.toOutputScript(out.address, coinInfo.network).length\n });\n return;\n } else if (out.address_n || out.script_type) {\n const script_type = out.script_type ?? (0, pathUtils_1.getOutputScriptType)(out.address_n);\n if (script_type) {\n const script_key = mapOutputScriptToKey(script_type);\n if (script_key) {\n calc.addOutputByKey(script_key);\n return;\n }\n }\n }\n cannotProcess = true;\n });\n if (cannotProcess) {\n return undefined;\n }\n return calc.getVirtualBytes();\n};\nexports.getTransactionVbytes = getTransactionVbytes;\n//# sourceMappingURL=transactionBytes.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst bigNumber_1 = require(\"@trezor/utils/lib/bigNumber\");\nconst promiseAllSequence_1 = require(\"@trezor/utils/lib/promiseAllSequence\");\nconst constants_1 = require(\"../constants\");\nconst bitcoin_1 = require(\"./bitcoin\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nconst transactionBytes_1 = require(\"./bitcoin/transactionBytes\");\nclass SignTransaction extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['read', 'write'];\n const {\n payload\n } = this;\n (0, paramsValidator_1.validateParams)(payload, [{\n name: 'coin',\n type: 'string',\n required: true\n }, {\n name: 'identity',\n type: 'string'\n }, {\n name: 'inputs',\n type: 'array',\n required: true\n }, {\n name: 'outputs',\n type: 'array',\n required: true\n }, {\n name: 'paymentRequests',\n type: 'array',\n allowEmpty: true\n }, {\n name: 'coinjoinRequest',\n type: 'object'\n }, {\n name: 'refTxs',\n type: 'array',\n allowEmpty: true\n }, {\n name: 'account',\n type: 'object'\n }, {\n name: 'locktime',\n type: 'number'\n }, {\n name: 'timestamp',\n type: 'number'\n }, {\n name: 'version',\n type: 'number'\n }, {\n name: 'expiry',\n type: 'number'\n }, {\n name: 'overwintered',\n type: 'boolean'\n }, {\n name: 'versionGroupId',\n type: 'number'\n }, {\n name: 'branchId',\n type: 'number'\n }, {\n name: 'decredStakingTicket',\n type: 'boolean'\n }, {\n name: 'push',\n type: 'boolean'\n }, {\n name: 'preauthorized',\n type: 'boolean'\n }, {\n name: 'amountUnit',\n type: ['number', 'string']\n }, {\n name: 'unlockPath',\n type: 'object'\n }, {\n name: 'serialize',\n type: 'boolean'\n }, {\n name: 'chunkify',\n type: 'boolean'\n }]);\n if (payload.unlockPath) {\n (0, paramsValidator_1.validateParams)(payload.unlockPath, [{\n name: 'address_n',\n required: true,\n type: 'array'\n }, {\n name: 'mac',\n required: true,\n type: 'string'\n }]);\n }\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n }\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n this.preauthorized = payload.preauthorized;\n const inputs = (0, bitcoin_1.validateTrezorInputs)(payload.inputs, coinInfo);\n const outputs = (0, bitcoin_1.validateTrezorOutputs)(payload.outputs, coinInfo);\n if (payload.paymentRequests && payload.paymentRequests.length > 0) {\n outputs.forEach(output => {\n output.payment_req_index = 0;\n });\n }\n if (payload.refTxs && payload.account?.transactions) {\n console.warn('two sources of referential transactions were passed. payload.refTxs have precedence');\n }\n const refTxs = (0, bitcoin_1.validateReferencedTransactions)({\n transactions: payload.refTxs || payload.account?.transactions,\n inputs,\n outputs,\n coinInfo,\n addresses: payload.account?.addresses\n });\n const outputsWithAmount = outputs.filter(output => typeof output.amount === 'string' && !Object.prototype.hasOwnProperty.call(output, 'op_return_data'));\n if (outputsWithAmount.length > 0) {\n const total = outputsWithAmount.reduce((bn, output) => bn.plus(typeof output.amount === 'string' ? output.amount : '0'), new bigNumber_1.BigNumber(0));\n if (total.lt(coinInfo.dustLimit)) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'Total amount is below dust limit.');\n }\n }\n const paymentRequests = payload.paymentRequests?.map(p => {\n if (typeof p.amount === 'number') {\n const buffer = Buffer.allocUnsafe(8);\n buffer.writeBigInt64LE(BigInt(p.amount), 0);\n return {\n ...p,\n amount: buffer.toString('hex')\n };\n }\n return {\n ...p,\n amount: p.amount\n };\n }) ?? [];\n this.params = {\n inputs,\n outputs,\n paymentRequests,\n refTxs,\n addresses: payload.account ? payload.account.addresses : undefined,\n options: {\n lock_time: payload.locktime,\n timestamp: payload.timestamp,\n version: payload.version,\n expiry: payload.expiry,\n overwintered: payload.overwintered,\n version_group_id: payload.versionGroupId,\n branch_id: payload.branchId,\n decred_staking_ticket: payload.decredStakingTicket,\n amount_unit: payload.amountUnit,\n serialize: payload.serialize,\n coinjoin_request: payload.coinjoinRequest,\n chunkify: typeof payload.chunkify === 'boolean' ? payload.chunkify : false\n },\n coinInfo,\n identity: payload.identity,\n push: typeof payload.push === 'boolean' ? payload.push : false,\n unlockPath: payload.unlockPath\n };\n this.params.options = (0, bitcoin_1.enhanceSignTx)(this.params.options, coinInfo);\n if (this.params.push) {\n this.requiredPermissions.push('push_tx');\n }\n }\n get info() {\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin);\n return (0, pathUtils_1.getLabel)('Sign #NETWORK transaction', coinInfo);\n }\n async payloadToPrecomposed() {\n try {\n const {\n inputs,\n outputs,\n coinInfo\n } = this.params;\n const refTxs = this.params.refTxs ?? (await this.fetchRefTxs(false));\n const inputsTotal = inputs.reduce((bn, input) => {\n if (typeof input.amount === 'string') {\n return bn.plus(input.amount);\n } else {\n const refTx = refTxs.find(tx => tx.hash === input.prev_hash);\n const refOutput = refTx?.outputs?.[input.prev_index] ?? refTx?.bin_outputs?.[input.prev_index];\n if (refOutput) return bn.plus(refOutput.amount);\n }\n return bn;\n }, new bigNumber_1.BigNumber(0));\n const outputsTotal = outputs.reduce((bn, output) => bn.plus(typeof output.amount === 'string' ? output.amount : '0'), new bigNumber_1.BigNumber(0));\n const bytes = (0, transactionBytes_1.getTransactionVbytes)(inputs, outputs, coinInfo);\n if (!bytes) throw constants_1.ERRORS.TypedError('Runtime', 'Transaction bytes not calculated');\n const fee = inputsTotal.minus(outputsTotal);\n if (fee.lte(0)) {\n throw constants_1.ERRORS.TypedError('Runtime', 'Computed fee is non-positive');\n }\n const feePerByte = fee.dividedBy(bytes);\n return {\n type: 'final',\n inputs,\n outputs,\n outputsPermutation: Array.from({\n length: outputs.length\n }, (_, i) => i),\n totalSpent: inputsTotal.toString(),\n fee: fee.toString(),\n feePerByte: feePerByte.toString(),\n bytes\n };\n } catch (e) {\n console.error('Error in payloadToPrecomposed', e);\n return undefined;\n }\n }\n async fetchAddresses(blockchain) {\n const {\n device,\n params: {\n inputs,\n coinInfo\n }\n } = this;\n const accountPath = inputs.find(i => i.address_n);\n if (!accountPath || !accountPath.address_n) {\n throw constants_1.ERRORS.TypedError('Runtime', 'Account not found');\n }\n const address_n = accountPath.address_n.slice(0, 3);\n const node = await device.getCommands().getHDNode({\n address_n\n }, {\n coinInfo\n });\n const account = await blockchain.getAccountInfo({\n descriptor: node.xpubSegwit || node.xpub,\n details: 'tokens'\n });\n return account.addresses;\n }\n async fetchRefTxs(useLegacySignProcess) {\n const {\n params: {\n inputs,\n outputs,\n options,\n coinInfo,\n identity,\n addresses\n }\n } = this;\n const requiredRefTxs = (0, bitcoin_1.requireReferencedTransactions)(inputs, options, coinInfo);\n const refTxsIds = requiredRefTxs ? (0, bitcoin_1.getReferencedTransactions)(inputs) : [];\n const origTxsIds = !useLegacySignProcess ? (0, bitcoin_1.getOrigTransactions)(inputs, outputs) : [];\n if (!refTxsIds.length && !origTxsIds.length) {\n return [];\n }\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, identity);\n const refTxs = !refTxsIds.length ? [] : await blockchain.getTransactionHexes(refTxsIds).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then(rawTxs => {\n (0, bitcoin_1.enhanceTrezorInputs)(this.params.inputs, rawTxs);\n return (0, bitcoin_1.transformReferencedTransactions)(rawTxs);\n });\n const origTxs = !origTxsIds.length ? [] : await blockchain.getTransactionHexes(origTxsIds).then((0, bitcoin_1.parseTransactionHexes)(coinInfo.network)).then(async rawOrigTxs => {\n const accountAddresses = addresses ?? (await this.fetchAddresses(blockchain));\n if (!accountAddresses) return [];\n return (0, bitcoin_1.transformOrigTransactions)(rawOrigTxs, coinInfo, inputs, accountAddresses);\n });\n return refTxs.concat(origTxs);\n }\n async run() {\n const {\n device,\n params\n } = this;\n const {\n inputs,\n outputs,\n coinInfo\n } = params;\n const useLegacySignProcess = !!device.unavailableCapabilities.replaceTransaction;\n const refTxs = params.refTxs ?? (await this.fetchRefTxs(useLegacySignProcess));\n let outputScripts = [];\n if (params.options.serialize !== false) {\n const getHDNode = address_n => device.getCommands().getHDNode({\n address_n\n }, {\n coinInfo,\n unlockPath: params.unlockPath\n });\n outputScripts = await (0, promiseAllSequence_1.promiseAllSequence)(outputs.map(output => () => (0, bitcoin_1.deriveOutputScript)(getHDNode, output, coinInfo.network)));\n }\n if (this.preauthorized) {\n await device.getCommands().preauthorize(true);\n } else if (params.unlockPath) {\n await device.getCommands().unlockPath(params.unlockPath);\n }\n const signTxMethod = !useLegacySignProcess ? bitcoin_1.signTx : bitcoin_1.signTxLegacy;\n const response = await signTxMethod({\n ...params,\n refTxs,\n typedCall: device.getCommands().typedCall\n });\n if (!response.serializedTx) {\n return response;\n }\n let bitcoinTx;\n if (params.options.decred_staking_ticket) {} else {\n bitcoinTx = (0, bitcoin_1.verifyTx)(response.serializedTx, {\n inputs,\n outputs,\n outputScripts,\n network: coinInfo.network\n });\n if (bitcoinTx.hasWitnesses()) {\n response.witnesses = bitcoinTx.ins.map((_, i) => bitcoinTx?.getWitness(i)?.toString('hex'));\n }\n }\n if (bitcoinTx && params.addresses) {\n response.signedTransaction = (0, bitcoin_1.createPendingTransaction)(bitcoinTx, {\n addresses: params.addresses,\n inputs,\n outputs\n });\n }\n if (params.push) {\n (0, BlockchainLink_1.isBackendSupported)(coinInfo);\n const blockchain = await (0, BlockchainLink_1.initBlockchain)(coinInfo, this.postMessage, params.identity);\n const txid = await blockchain.pushTransaction(response.serializedTx);\n return {\n ...response,\n txid\n };\n }\n return response;\n }\n}\nexports.default = SignTransaction;\n//# sourceMappingURL=signTransaction.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnlockPathParams = void 0;\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst params_1 = require(\"../params\");\nexports.UnlockPathParams = schema_utils_1.Type.Object({\n path: params_1.DerivationPath,\n mac: schema_utils_1.Type.Optional(schema_utils_1.Type.String())\n});\n//# sourceMappingURL=unlockPath.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst unlockPath_1 = require(\"../types/api/unlockPath\");\nclass UnlockPath extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['read'];\n this.skipFinalReload = true;\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, undefined, this.firmwareRange);\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(unlockPath_1.UnlockPathParams, payload);\n const path = (0, pathUtils_1.validatePath)(payload.path, 1);\n this.params = {\n address_n: path,\n mac: payload.mac\n };\n }\n async run() {\n const cmd = this.device.getCommands();\n const {\n message\n } = await cmd.unlockPath(this.params);\n return {\n address_n: this.params.address_n,\n mac: message.mac\n };\n }\n}\nexports.default = UnlockPath;\n//# sourceMappingURL=unlockPath.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.abortThpWorkflow = exports.thpCall = void 0;\nconst errors_1 = require(\"../../constants/errors\");\nconst events_1 = require(\"../../events\");\nconst thpCall = async (device, name, data) => {\n const thpState = device.getThpState();\n if (!thpState) {\n throw (0, errors_1.TypedError)('Device_ThpStateMissing');\n }\n const result = await device.getCurrentSession().call(name, data);\n if (!result.success) {\n throw result.error;\n }\n thpState.setCancelablePromise(false);\n if (result.payload.type === 'ButtonRequest') {\n thpState.setCancelablePromise(true);\n if (result.payload.message.code === 'ButtonRequest_PassphraseEntry') {\n device.emit(events_1.DEVICE.PASSPHRASE_ON_DEVICE);\n } else {\n device.emit(events_1.DEVICE.BUTTON, {\n device,\n payload: result.payload.message\n });\n }\n return (0, exports.thpCall)(device, 'ButtonAck', {});\n }\n if (result.payload.type === 'Failure') {\n const {\n code,\n message\n } = result.payload.message;\n throw (0, errors_1.TypedError)(code || 'Failure_UnknownCode', message);\n }\n if (result.payload.type === 'ThpError') {\n const {\n code,\n message\n } = result.payload.message;\n throw (0, errors_1.TypedError)(code, message);\n }\n return result.payload;\n};\nexports.thpCall = thpCall;\nconst abortThpWorkflow = async device => {\n const thpState = device.getThpState();\n if (!thpState || !device.currentRun) {\n return Promise.resolve();\n }\n if (thpState.pairingTagPromise) {\n await thpState.pairingTagPromise.abort();\n await device.getCurrentSession().cancelCall();\n thpState.resetState();\n } else if (thpState.cancelablePromise) {\n thpState.sync('send', 'Cancel');\n await device.getCurrentSession().send('Cancel', {});\n await device.currentRun;\n }\n};\nexports.abortThpWorkflow = abortThpWorkflow;\n//# sourceMappingURL=thpCall.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.thpHandshake = exports.createThpChannel = void 0;\nconst crypto_1 = require(\"crypto\");\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst thpCall_1 = require(\"./thpCall\");\nconst constants_1 = require(\"../../constants\");\nconst DataManager_1 = require(\"../../data/DataManager\");\nconst getPairingMethods = (deviceMethods, settingsMethods) => deviceMethods?.flatMap(dm => {\n const value = protocol_1.thp.getThpPairingMethod(dm);\n const isRequested = settingsMethods && settingsMethods.find(sm => value === protocol_1.thp.getThpPairingMethod(sm));\n return isRequested ? value : [];\n});\nconst createThpChannel = async device => {\n const thpState = device.getThpState();\n if (!thpState) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n thpState.setChannel(protocol_1.thp.constants.THP_DEFAULT_CHANNEL);\n const nonce = (0, crypto_1.randomBytes)(8);\n const createChannel = await (0, thpCall_1.thpCall)(device, 'ThpCreateChannelRequest', {\n nonce\n });\n const {\n properties,\n ...resp\n } = createChannel.message;\n if (nonce.compare(resp.nonce) !== 0) {\n throw new Error('Nonce not meet' + nonce.toString('hex') + ' ' + resp.nonce.toString('hex'));\n }\n const settings = DataManager_1.DataManager.getSettings('thp');\n const pairingMethods = getPairingMethods(properties.pairing_methods, settings?.pairingMethods);\n if (!pairingMethods?.length) {\n throw constants_1.ERRORS.TypedError('Device_ThpPairingMethodsException');\n }\n thpState.setThpProperties(properties);\n thpState.setChannel(resp.channel);\n thpState.updateHandshakeCredentials({\n pairingMethods,\n handshakeHash: resp.handshakeHash\n });\n};\nexports.createThpChannel = createThpChannel;\nconst thpHandshake = async (device, unlockPin = false) => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const settings = DataManager_1.DataManager.getSettings('thp');\n const staticKey = settings?.staticKey ? Buffer.from(settings.staticKey, 'hex') : (0, crypto_1.randomBytes)(32);\n const hostStaticKeys = protocol_1.thp.getCurve25519KeyPair(staticKey);\n const knownCredentials = (settings?.knownCredentials || []).sort(cre => cre.autoconnect ? -1 : 1);\n const tryToUnlock = unlockPin ? 1 : 0;\n const hostEphemeralKeys = protocol_1.thp.getCurve25519KeyPair((0, crypto_1.randomBytes)(32));\n const handshakeInit = await (0, thpCall_1.thpCall)(device, 'ThpHandshakeInitRequest', {\n key: hostEphemeralKeys.publicKey,\n tryToUnlock\n });\n const {\n trezorEncryptedStaticPubkey\n } = handshakeInit.message;\n const handshakeCredentials = protocol_1.thp.handleHandshakeInit({\n handshakeInitResponse: handshakeInit.message,\n thpState,\n hostStaticKeys,\n hostEphemeralKeys,\n knownCredentials,\n tryToUnlock,\n protobufEncoder: (name, data) => (0, protobuf_1.encodeMessage)(device.transport.getMessages(), name, data)\n });\n const {\n hostKey,\n trezorKey,\n hostEncryptedStaticPubkey\n } = handshakeCredentials;\n thpState.updateHandshakeCredentials({\n trezorEncryptedStaticPubkey,\n hostEncryptedStaticPubkey,\n handshakeHash: handshakeCredentials.handshakeHash,\n trezorKey,\n hostKey,\n staticKey,\n hostStaticPublicKey: hostStaticKeys.publicKey\n });\n thpState.setPairingCredentials(handshakeCredentials.allCredentials);\n const handshakeCompletion = await (0, thpCall_1.thpCall)(device, 'ThpHandshakeCompletionRequest', {\n hostPubkey: hostEncryptedStaticPubkey,\n encryptedPayload: handshakeCredentials.encryptedPayload\n });\n if (!handshakeCompletion.message.state && handshakeCredentials.credentials) {\n thpState.removePairingCredential(handshakeCredentials.credentials);\n const {\n credential\n } = handshakeCredentials.credentials;\n const index = settings?.knownCredentials?.findIndex(c => c.credential === credential) ?? -1;\n if (index >= 0) {\n settings?.knownCredentials?.splice(index, 1);\n }\n }\n thpState.setIsPaired(handshakeCompletion.message.state !== 0);\n thpState.setPhase('pairing');\n if (thpState.isAutoconnectPaired || handshakeCompletion.message.state === 2) {\n await (0, thpCall_1.thpCall)(device, 'ThpEndRequest', {});\n thpState.setPhase('paired');\n }\n};\nexports.thpHandshake = thpHandshake;\n//# sourceMappingURL=handshake.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.thpPairing = exports.thpPairingEnd = exports.getThpCredentials = void 0;\nconst crypto_1 = require(\"crypto\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../../constants\");\nconst DataManager_1 = require(\"../../data/DataManager\");\nconst events_1 = require(\"../../events\");\nconst thpCall_1 = require(\"./thpCall\");\nconst processQrCodeTag = async (device, value) => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const tagSha = (0, crypto_1.createHash)('sha256').update(thpState.handshakeCredentials.handshakeHash).update(Buffer.from(value, 'hex')).digest('hex');\n const qrCodeSecret = await (0, thpCall_1.thpCall)(device, 'ThpQrCodeTag', {\n tag: tagSha\n });\n protocol_1.thp.validateQrCodeTag(thpState.handshakeCredentials, value, qrCodeSecret.message.secret);\n return qrCodeSecret;\n};\nconst processNfcTag = async (device, value) => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n if (!thpState?.nfcSecret) {\n throw new Error('missing nfcSecret');\n }\n const tagSha = (0, crypto_1.createHash)('sha256').update(Buffer.from([protocol_1.thp.ThpPairingMethod.NFC])).update(thpState.handshakeCredentials.handshakeHash).update(Buffer.from(value, 'hex')).digest('hex');\n const nfcTagTrezor = await (0, thpCall_1.thpCall)(device, 'ThpNfcTagHost', {\n tag: tagSha\n });\n protocol_1.thp.validateNfcTag(thpState.handshakeCredentials, nfcTagTrezor.message.tag, thpState.nfcSecret);\n return nfcTagTrezor;\n};\nconst processCodeEntry = async (device, value) => {\n if (value.length !== 6) {\n throw constants_1.ERRORS.TypedError('Device_ThpPairingTagInvalid');\n }\n const codeValue = Buffer.from(value, 'ascii');\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const hostKeys = protocol_1.thp.getCpaceHostKeys(codeValue, thpState.handshakeCredentials.handshakeHash);\n const tag = protocol_1.thp.getSharedSecret(thpState.handshakeCredentials.trezorCpacePublicKey, hostKeys.privateKey).toString('hex');\n const codeEntrySecret = await (0, thpCall_1.thpCall)(device, 'ThpCodeEntryCpaceHostTag', {\n tag,\n cpace_host_public_key: hostKeys.publicKey.toString('hex')\n });\n protocol_1.thp.validateCodeEntryTag(thpState.handshakeCredentials, value, codeEntrySecret.message.secret);\n return codeEntrySecret;\n};\nconst processThpPairingResponse = (device, payload) => {\n if ('selectedMethod' in payload) {\n const selectedMethod = protocol_1.thp.getThpPairingMethod(payload.selectedMethod);\n device.getThpState()?.setPairingMethod(selectedMethod);\n return (0, thpCall_1.thpCall)(device, 'ThpSelectMethod', {\n selected_pairing_method: selectedMethod\n });\n }\n const selectedMethod = device.getThpState()?.pairingMethod;\n if (selectedMethod === protocol_1.ThpPairingMethod.QrCode) {\n return processQrCodeTag(device, payload.tag);\n }\n if (selectedMethod === protocol_1.ThpPairingMethod.NFC) {\n return processNfcTag(device, payload.tag);\n }\n if (selectedMethod === protocol_1.ThpPairingMethod.CodeEntry) {\n return processCodeEntry(device, payload.tag);\n }\n throw constants_1.ERRORS.TypedError('Device_ThpPairingMethodsException');\n};\nconst waitForPairingCancel = device => {\n const readAbort = new AbortController();\n device.getThpState()?.setExpectedResponses([0x04]);\n const readCancel = device.getCurrentSession().receive({\n signal: readAbort.signal\n });\n return {\n readAbort,\n readCancel\n };\n};\nconst waitForPairingTag = async device => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n if (thpState.pairingMethod === undefined) {\n throw constants_1.ERRORS.TypedError('Device_ThpPairingMethodsException');\n }\n const dfd = (0, utils_1.createDeferred)();\n const {\n readAbort,\n readCancel\n } = waitForPairingCancel(device);\n const cancelResult = readCancel.then(readResult => {\n if (readResult.success) {\n let error;\n if (readResult.payload.type === 'Failure' && readResult.payload.message.message) {\n error = readResult.payload.message.message;\n } else {\n error = `Pairing tag cancelled (${readResult.payload.type})`;\n }\n dfd.resolve({\n error\n });\n }\n }).catch(() => {});\n thpState.setPairingTagPromise({\n abort: async () => {\n readAbort.abort();\n await cancelResult;\n }\n });\n const payload = {\n availableMethods: thpState.handshakeCredentials.pairingMethods,\n selectedMethod: thpState.pairingMethod,\n nfcData: thpState.nfcData?.toString('hex')\n };\n device.prompt(events_1.DEVICE.THP_PAIRING, {\n payload\n }).then(response => {\n if (response.success) {\n dfd.resolve(response.payload);\n } else {\n (0, thpCall_1.abortThpWorkflow)(device).then(() => {\n dfd.resolve({\n error: response.error.message\n });\n });\n }\n });\n const pairingResponse = await dfd.promise;\n readAbort.abort();\n await readCancel;\n thpState.setPairingTagPromise(undefined);\n if ('error' in pairingResponse) {\n throw new Error(pairingResponse.error);\n }\n await new Promise(resolve => setTimeout(resolve, 500));\n return processThpPairingResponse(device, pairingResponse).catch(e => {\n if (e.code === 'Failure_FirmwareError') {\n throw constants_1.ERRORS.TypedError('Device_ThpPairingTagInvalid', e.message);\n }\n throw constants_1.ERRORS.TypedError(e.code, e.message);\n });\n};\nconst getThpCredentials = async (device, autoconnect = false) => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const credentials = await (0, thpCall_1.thpCall)(device, 'ThpCredentialRequest', {\n autoconnect,\n host_static_public_key: thpState.handshakeCredentials.hostStaticPublicKey.toString('hex'),\n credential: thpState.pairingCredentials[0]?.credential\n });\n return {\n ...credentials.message,\n autoconnect\n };\n};\nexports.getThpCredentials = getThpCredentials;\nconst thpPairingEnd = device => {\n device.getThpState()?.setPhase('paired');\n return (0, thpCall_1.thpCall)(device, 'ThpEndRequest', {});\n};\nexports.thpPairingEnd = thpPairingEnd;\nconst thpPairing = async device => {\n const thpState = device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n if (thpState.isPaired && thpState.pairingMethod !== protocol_1.thp.ThpPairingMethod.SkipPairing) {\n if (!thpState.isAutoconnectPaired) {\n await (0, exports.getThpCredentials)(device, false);\n }\n return (0, exports.thpPairingEnd)(device);\n }\n const [selected_pairing_method] = thpState.handshakeCredentials.pairingMethods;\n thpState.setPairingMethod(selected_pairing_method);\n const settings = DataManager_1.DataManager.getSettings('thp');\n await (0, thpCall_1.thpCall)(device, 'ThpPairingRequest', {\n host_name: settings?.hostName || 'Unknown hostName',\n app_name: settings?.appName || 'Unknown appName'\n });\n const selectMethod = await (0, thpCall_1.thpCall)(device, 'ThpSelectMethod', {\n selected_pairing_method\n });\n if (selectMethod.type === 'ThpEndResponse') {\n thpState.setIsPaired(true);\n device.getThpState()?.setPhase('paired');\n return;\n }\n if (selectMethod.type === 'ThpCodeEntryCommitment') {\n const codeEntryChallenge = (0, crypto_1.randomBytes)(32);\n const handshakeCommitment = Buffer.from(selectMethod.message.commitment, 'hex');\n thpState.updateHandshakeCredentials({\n handshakeCommitment,\n codeEntryChallenge\n });\n const codeEntryCpace = await (0, thpCall_1.thpCall)(device, 'ThpCodeEntryChallenge', {\n challenge: codeEntryChallenge.toString('hex')\n });\n thpState.updateHandshakeCredentials({\n trezorCpacePublicKey: Buffer.from(codeEntryCpace.message.cpace_trezor_public_key, 'hex')\n });\n await waitForPairingTag(device);\n }\n if (selectMethod.type === 'ThpPairingPreparationsFinished') {\n if (thpState.pairingMethod === protocol_1.thp.ThpPairingMethod.NFC) {\n thpState.setNfcSecret((0, crypto_1.randomBytes)(16));\n }\n await waitForPairingTag(device);\n }\n const credentials = await (0, exports.getThpCredentials)(device, false);\n device.emit(events_1.DEVICE.THP_CREDENTIALS_CHANGED, {\n credentials,\n staticKey: thpState.handshakeCredentials.staticKey.toString('hex')\n });\n const settings1 = DataManager_1.DataManager.getSettings('thp');\n if (settings1) {\n settings1.knownCredentials?.push(credentials);\n settings1.staticKey = thpState.handshakeCredentials.staticKey.toString('hex');\n }\n thpState.setPairingCredentials([credentials]);\n thpState.setIsPaired(true);\n await (0, exports.thpPairingEnd)(device);\n};\nexports.thpPairing = thpPairing;\n//# sourceMappingURL=pairing.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createThpSession = void 0;\nconst thpCall_1 = require(\"./thpCall\");\nconst createThpSession = async (device, deriveCardano) => {\n let passphrase;\n if (device.features.passphrase_protection === false) {\n passphrase = {\n passphrase: ''\n };\n } else {\n passphrase = await device.prompt('passphrase', {}).then(promptRes => {\n if (!promptRes.success) {\n return {\n passphrase: ''\n };\n }\n return promptRes.payload.passphraseOnDevice ? {\n on_device: true\n } : {\n passphrase: promptRes.payload.value.normalize('NFKD')\n };\n });\n }\n await (0, thpCall_1.thpCall)(device, 'ThpCreateNewSession', {\n ...passphrase,\n derive_cardano: deriveCardano\n });\n return 0;\n};\nexports.createThpSession = createThpSession;\n//# sourceMappingURL=session.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getThpChannel = exports.createThpSession = exports.getThpCredentials = exports.abortThpWorkflow = void 0;\nconst device_1 = require(\"../../events/device\");\nconst handshake_1 = require(\"./handshake\");\nconst pairing_1 = require(\"./pairing\");\nvar thpCall_1 = require(\"./thpCall\");\nObject.defineProperty(exports, \"abortThpWorkflow\", {\n enumerable: true,\n get: function () {\n return thpCall_1.abortThpWorkflow;\n }\n});\nvar pairing_2 = require(\"./pairing\");\nObject.defineProperty(exports, \"getThpCredentials\", {\n enumerable: true,\n get: function () {\n return pairing_2.getThpCredentials;\n }\n});\nvar session_1 = require(\"./session\");\nObject.defineProperty(exports, \"createThpSession\", {\n enumerable: true,\n get: function () {\n return session_1.createThpSession;\n }\n});\nconst getThpChannel = async (device, withInteraction) => {\n const thpState = device.getThpState();\n if (!thpState) return;\n try {\n if (thpState.phase === 'handshake') {\n await (0, handshake_1.createThpChannel)(device);\n try {\n await (0, handshake_1.thpHandshake)(device);\n } catch (error) {\n const isPinLocked = error.code === 'ThpDeviceLocked';\n const isTransportBusy = error.message === 'ThpTransportBusy';\n if (!isPinLocked && !isTransportBusy) throw error;\n thpState.resetState();\n if (isPinLocked && !withInteraction) return 'pin-locked';\n if (isPinLocked) {\n device.emit(device_1.DEVICE.BUTTON, {\n device,\n payload: {\n code: 'ButtonRequest_PinEntry'\n }\n });\n }\n await (0, handshake_1.createThpChannel)(device);\n await (0, handshake_1.thpHandshake)(device, isPinLocked);\n }\n }\n if (thpState.phase === 'pairing' && withInteraction) {\n await (0, pairing_1.thpPairing)(device);\n }\n if (thpState.phase !== 'paired') {\n return 'thp-locked';\n }\n } catch (error) {\n thpState.resetState();\n throw error;\n }\n};\nexports.getThpChannel = getThpChannel;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst thp_1 = require(\"../device/thp\");\nconst events_1 = require(\"../events\");\nclass ThpGetCredentials extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = true;\n }\n async run() {\n const thpState = this.device.getThpState();\n if (!thpState?.handshakeCredentials) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const credentials = await (0, thp_1.getThpCredentials)(this.device, true);\n thpState.setPairingCredentials([credentials]);\n DataManager_1.DataManager.getSettings('thp')?.knownCredentials?.push(credentials);\n this.device.emit(events_1.DEVICE.THP_CREDENTIALS_CHANGED, {\n credentials,\n staticKey: thpState.handshakeCredentials.staticKey.toString('hex')\n });\n return credentials;\n }\n}\nexports.default = ThpGetCredentials;\n//# sourceMappingURL=thpGetCredentials.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst events_1 = require(\"../events\");\nclass ThpRemoveCredentials extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS];\n this.requiredPermissions = ['management'];\n this.useDeviceState = false;\n this.skipFinalReload = true;\n }\n run() {\n const thpState = this.device.getThpState();\n if (!thpState) {\n throw constants_1.ERRORS.TypedError('Device_ThpStateMissing');\n }\n const knownCredentials = DataManager_1.DataManager.getSettings('thp')?.knownCredentials;\n if (knownCredentials) {\n const toRemoveCredentials = (this.payload.credentials || thpState.pairingCredentials).map(c => c.credential);\n const index = knownCredentials.findIndex(({\n credential\n }) => toRemoveCredentials.includes(credential));\n if (index >= 0) {\n knownCredentials.splice(index, 1);\n }\n }\n thpState.resetState();\n return Promise.resolve({\n message: 'Success'\n });\n }\n}\nexports.default = ThpRemoveCredentials;\n//# sourceMappingURL=thpRemoveCredentials.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst constants_1 = require(\"../constants\");\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst types_1 = require(\"../types\");\nconst formatUtils_1 = require(\"../utils/formatUtils\");\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nclass VerifyMessage extends AbstractMethod_1.AbstractMethod {\n init() {\n this.requiredPermissions = ['read', 'write'];\n const {\n payload\n } = this;\n (0, schema_utils_1.Assert)(types_1.VerifyMessage, payload);\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(payload.coin);\n if (!coinInfo) {\n throw constants_1.ERRORS.TypedError('Method_UnknownCoin');\n } else {\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, coinInfo, this.firmwareRange);\n }\n const messageHex = payload.hex ? (0, formatUtils_1.messageToHex)(payload.message) : Buffer.from(payload.message, 'utf8').toString('hex');\n const signatureHex = Buffer.from(payload.signature, 'base64').toString('hex');\n this.params = {\n address: payload.address,\n signature: signatureHex,\n message: messageHex,\n coin_name: coinInfo.name\n };\n }\n get info() {\n const coinInfo = (0, coinInfo_1.getBitcoinNetwork)(this.payload.coin);\n if (!coinInfo) {\n return 'Verify message';\n }\n return (0, pathUtils_1.getLabel)('Verify #NETWORK message', coinInfo);\n }\n async run() {\n const cmd = this.device.getCommands();\n const response = await cmd.typedCall('VerifyMessage', 'Success', this.params);\n return response.message;\n }\n}\nexports.default = VerifyMessage;\n//# sourceMappingURL=verifyMessage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nconst AbstractMethod_1 = require(\"../core/AbstractMethod\");\nconst events_1 = require(\"../events\");\nconst paramsValidator_1 = require(\"./common/paramsValidator\");\nclass WipeDevice extends AbstractMethod_1.AbstractMethod {\n init() {\n this.allowDeviceMode = [events_1.UI.INITIALIZE, events_1.UI.SEEDLESS, events_1.UI.BOOTLOADER];\n this.useDeviceState = false;\n this.requiredPermissions = ['management'];\n this.skipFinalReload = this.payload.skipFinalReload ?? false;\n this.firmwareRange = (0, paramsValidator_1.getFirmwareRange)(this.name, null, this.firmwareRange);\n }\n get confirmation() {\n return {\n view: 'device-management',\n customConfirmButton: {\n className: 'wipe',\n label: `Wipe`\n },\n label: 'Are you sure you want to wipe your device?'\n };\n }\n get info() {\n return 'Wipe device';\n }\n async run() {\n const cmd = this.device.getCommands();\n if (this.device.isBootloader()) {\n this.device.emit(events_1.DEVICE.BUTTON, {\n device: this.device,\n payload: {\n code: 'ButtonRequest_WipeDevice'\n }\n });\n }\n const response = await cmd.typedCall('WipeDevice', 'Success');\n const thpState = this.device.getThpState();\n if (thpState) {\n thpState.resetState();\n }\n return response.message;\n }\n}\nexports.default = WipeDevice;\n//# sourceMappingURL=wipeDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setProxy = exports.setBusy = exports.setBrightness = exports.loadDevice = exports.resetDevice = exports.requestLogin = exports.recoveryDevice = exports.pushTransaction = exports.getSettings = exports.getPublicKey = exports.getOwnershipProof = exports.getOwnershipId = exports.getNonce = exports.getFirmwareHash = exports.getFeatures = exports.getDeviceState = exports.getCoinInfo = exports.getAddress = exports.getAccountInfo = exports.getAccountDescriptor = exports.discoverAccounts = exports.composeTransaction = exports.evoluGetDelegatedIdentityKey = exports.evoluSignRegistrationRequest = exports.evoluGetNode = exports.cipherKeyValue = exports.changeWipeCode = exports.changePin = exports.changeLanguage = exports.blockchainUnsubscribeFiatRates = exports.blockchainUnsubscribe = exports.blockchainSubscribeFiatRates = exports.blockchainSubscribe = exports.blockchainSetCustomBackend = exports.blockchainGetTransactions = exports.blockchainGetFiatRatesForTimestamps = exports.blockchainEvmRpcCall = exports.blockchainGetInfo = exports.blockchainGetCurrentFiatRates = exports.blockchainGetAccountBalanceHistory = exports.blockchainEstimateFee = exports.blockchainDisconnect = exports.bleUnpair = exports.backupDevice = exports.showDeviceTutorial = exports.cancelCoinjoinAuthorization = exports.authorizeCoinjoin = exports.authenticateDevice = exports.applySettings = exports.applyFlags = void 0;\nexports.wipeDevice = exports.verifyMessage = exports.thpRemoveCredentials = exports.thpGetCredentials = exports.unlockPath = exports.signTransaction = exports.signMessage = void 0;\nconst tslib_1 = require(\"tslib\");\nvar applyFlags_1 = require(\"./applyFlags\");\nObject.defineProperty(exports, \"applyFlags\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(applyFlags_1).default;\n }\n});\nvar applySettings_1 = require(\"./applySettings\");\nObject.defineProperty(exports, \"applySettings\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(applySettings_1).default;\n }\n});\nvar authenticateDevice_1 = require(\"./authenticateDevice\");\nObject.defineProperty(exports, \"authenticateDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(authenticateDevice_1).default;\n }\n});\nvar authorizeCoinjoin_1 = require(\"./authorizeCoinjoin\");\nObject.defineProperty(exports, \"authorizeCoinjoin\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(authorizeCoinjoin_1).default;\n }\n});\nvar cancelCoinjoinAuthorization_1 = require(\"./cancelCoinjoinAuthorization\");\nObject.defineProperty(exports, \"cancelCoinjoinAuthorization\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(cancelCoinjoinAuthorization_1).default;\n }\n});\nvar showDeviceTutorial_1 = require(\"./showDeviceTutorial\");\nObject.defineProperty(exports, \"showDeviceTutorial\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(showDeviceTutorial_1).default;\n }\n});\nvar backupDevice_1 = require(\"./backupDevice\");\nObject.defineProperty(exports, \"backupDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(backupDevice_1).default;\n }\n});\nvar bleUnpair_1 = require(\"./bleUnpair\");\nObject.defineProperty(exports, \"bleUnpair\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(bleUnpair_1).default;\n }\n});\nvar blockchainDisconnect_1 = require(\"./blockchainDisconnect\");\nObject.defineProperty(exports, \"blockchainDisconnect\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainDisconnect_1).default;\n }\n});\nvar blockchainEstimateFee_1 = require(\"./blockchainEstimateFee\");\nObject.defineProperty(exports, \"blockchainEstimateFee\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainEstimateFee_1).default;\n }\n});\nvar blockchainGetAccountBalanceHistory_1 = require(\"./blockchainGetAccountBalanceHistory\");\nObject.defineProperty(exports, \"blockchainGetAccountBalanceHistory\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainGetAccountBalanceHistory_1).default;\n }\n});\nvar blockchainGetCurrentFiatRates_1 = require(\"./blockchainGetCurrentFiatRates\");\nObject.defineProperty(exports, \"blockchainGetCurrentFiatRates\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainGetCurrentFiatRates_1).default;\n }\n});\nvar blockchainGetInfo_1 = require(\"./blockchainGetInfo\");\nObject.defineProperty(exports, \"blockchainGetInfo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainGetInfo_1).default;\n }\n});\nvar blockchainEvmRpcCall_1 = require(\"./blockchainEvmRpcCall\");\nObject.defineProperty(exports, \"blockchainEvmRpcCall\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainEvmRpcCall_1).default;\n }\n});\nvar blockchainGetFiatRatesForTimestamps_1 = require(\"./blockchainGetFiatRatesForTimestamps\");\nObject.defineProperty(exports, \"blockchainGetFiatRatesForTimestamps\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainGetFiatRatesForTimestamps_1).default;\n }\n});\nvar blockchainGetTransactions_1 = require(\"./blockchainGetTransactions\");\nObject.defineProperty(exports, \"blockchainGetTransactions\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainGetTransactions_1).default;\n }\n});\nvar blockchainSetCustomBackend_1 = require(\"./blockchainSetCustomBackend\");\nObject.defineProperty(exports, \"blockchainSetCustomBackend\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainSetCustomBackend_1).default;\n }\n});\nvar blockchainSubscribe_1 = require(\"./blockchainSubscribe\");\nObject.defineProperty(exports, \"blockchainSubscribe\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainSubscribe_1).default;\n }\n});\nvar blockchainSubscribeFiatRates_1 = require(\"./blockchainSubscribeFiatRates\");\nObject.defineProperty(exports, \"blockchainSubscribeFiatRates\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainSubscribeFiatRates_1).default;\n }\n});\nvar blockchainUnsubscribe_1 = require(\"./blockchainUnsubscribe\");\nObject.defineProperty(exports, \"blockchainUnsubscribe\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainUnsubscribe_1).default;\n }\n});\nvar blockchainUnsubscribeFiatRates_1 = require(\"./blockchainUnsubscribeFiatRates\");\nObject.defineProperty(exports, \"blockchainUnsubscribeFiatRates\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(blockchainUnsubscribeFiatRates_1).default;\n }\n});\nvar changeLanguage_1 = require(\"./changeLanguage\");\nObject.defineProperty(exports, \"changeLanguage\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(changeLanguage_1).default;\n }\n});\nvar changePin_1 = require(\"./changePin\");\nObject.defineProperty(exports, \"changePin\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(changePin_1).default;\n }\n});\nvar changeWipeCode_1 = require(\"./changeWipeCode\");\nObject.defineProperty(exports, \"changeWipeCode\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(changeWipeCode_1).default;\n }\n});\nvar cipherKeyValue_1 = require(\"./cipherKeyValue\");\nObject.defineProperty(exports, \"cipherKeyValue\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(cipherKeyValue_1).default;\n }\n});\nvar evoluGetNode_1 = require(\"./evoluGetNode\");\nObject.defineProperty(exports, \"evoluGetNode\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(evoluGetNode_1).default;\n }\n});\nvar evoluSignRegistrationRequest_1 = require(\"./evoluSignRegistrationRequest\");\nObject.defineProperty(exports, \"evoluSignRegistrationRequest\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(evoluSignRegistrationRequest_1).default;\n }\n});\nvar evoluGetDelegatedIdentityKey_1 = require(\"./evoluGetDelegatedIdentityKey\");\nObject.defineProperty(exports, \"evoluGetDelegatedIdentityKey\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(evoluGetDelegatedIdentityKey_1).default;\n }\n});\nvar composeTransaction_1 = require(\"./composeTransaction\");\nObject.defineProperty(exports, \"composeTransaction\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(composeTransaction_1).default;\n }\n});\nvar discoverAccounts_1 = require(\"./discoverAccounts\");\nObject.defineProperty(exports, \"discoverAccounts\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(discoverAccounts_1).default;\n }\n});\nvar getAccountDescriptor_1 = require(\"./getAccountDescriptor\");\nObject.defineProperty(exports, \"getAccountDescriptor\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAccountDescriptor_1).default;\n }\n});\nvar getAccountInfo_1 = require(\"./getAccountInfo\");\nObject.defineProperty(exports, \"getAccountInfo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAccountInfo_1).default;\n }\n});\nvar getAddress_1 = require(\"./getAddress\");\nObject.defineProperty(exports, \"getAddress\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getAddress_1).default;\n }\n});\nvar getCoinInfo_1 = require(\"./getCoinInfo\");\nObject.defineProperty(exports, \"getCoinInfo\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getCoinInfo_1).default;\n }\n});\nvar getDeviceState_1 = require(\"./getDeviceState\");\nObject.defineProperty(exports, \"getDeviceState\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getDeviceState_1).default;\n }\n});\nvar getFeatures_1 = require(\"./getFeatures\");\nObject.defineProperty(exports, \"getFeatures\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getFeatures_1).default;\n }\n});\nvar getFirmwareHash_1 = require(\"./getFirmwareHash\");\nObject.defineProperty(exports, \"getFirmwareHash\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getFirmwareHash_1).default;\n }\n});\nvar getNonce_1 = require(\"./getNonce\");\nObject.defineProperty(exports, \"getNonce\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getNonce_1).default;\n }\n});\nvar getOwnershipId_1 = require(\"./getOwnershipId\");\nObject.defineProperty(exports, \"getOwnershipId\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getOwnershipId_1).default;\n }\n});\nvar getOwnershipProof_1 = require(\"./getOwnershipProof\");\nObject.defineProperty(exports, \"getOwnershipProof\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getOwnershipProof_1).default;\n }\n});\nvar getPublicKey_1 = require(\"./getPublicKey\");\nObject.defineProperty(exports, \"getPublicKey\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getPublicKey_1).default;\n }\n});\nvar getSettings_1 = require(\"./getSettings\");\nObject.defineProperty(exports, \"getSettings\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(getSettings_1).default;\n }\n});\nvar pushTransaction_1 = require(\"./pushTransaction\");\nObject.defineProperty(exports, \"pushTransaction\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(pushTransaction_1).default;\n }\n});\nvar recoveryDevice_1 = require(\"./recoveryDevice\");\nObject.defineProperty(exports, \"recoveryDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(recoveryDevice_1).default;\n }\n});\nvar requestLogin_1 = require(\"./requestLogin\");\nObject.defineProperty(exports, \"requestLogin\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(requestLogin_1).default;\n }\n});\nvar resetDevice_1 = require(\"./resetDevice\");\nObject.defineProperty(exports, \"resetDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(resetDevice_1).default;\n }\n});\nvar loadDevice_1 = require(\"./loadDevice\");\nObject.defineProperty(exports, \"loadDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(loadDevice_1).default;\n }\n});\nvar setBrightness_1 = require(\"./setBrightness\");\nObject.defineProperty(exports, \"setBrightness\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(setBrightness_1).default;\n }\n});\nvar setBusy_1 = require(\"./setBusy\");\nObject.defineProperty(exports, \"setBusy\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(setBusy_1).default;\n }\n});\nvar setProxy_1 = require(\"./setProxy\");\nObject.defineProperty(exports, \"setProxy\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(setProxy_1).default;\n }\n});\nvar signMessage_1 = require(\"./signMessage\");\nObject.defineProperty(exports, \"signMessage\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(signMessage_1).default;\n }\n});\nvar signTransaction_1 = require(\"./signTransaction\");\nObject.defineProperty(exports, \"signTransaction\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(signTransaction_1).default;\n }\n});\nvar unlockPath_1 = require(\"./unlockPath\");\nObject.defineProperty(exports, \"unlockPath\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(unlockPath_1).default;\n }\n});\nvar thpGetCredentials_1 = require(\"./thpGetCredentials\");\nObject.defineProperty(exports, \"thpGetCredentials\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(thpGetCredentials_1).default;\n }\n});\nvar thpRemoveCredentials_1 = require(\"./thpRemoveCredentials\");\nObject.defineProperty(exports, \"thpRemoveCredentials\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(thpRemoveCredentials_1).default;\n }\n});\nvar verifyMessage_1 = require(\"./verifyMessage\");\nObject.defineProperty(exports, \"verifyMessage\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(verifyMessage_1).default;\n }\n});\nvar wipeDevice_1 = require(\"./wipeDevice\");\nObject.defineProperty(exports, \"wipeDevice\", {\n enumerable: true,\n get: function () {\n return tslib_1.__importDefault(wipeDevice_1).default;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getMethod = void 0;\nconst tslib_1 = require(\"tslib\");\nconst Methods = tslib_1.__importStar(require(\"../api\"));\nconst errors_1 = require(\"../constants/errors\");\nconst network_1 = require(\"../constants/network\");\nconst getMethodModule = method => network_1.MODULES.find(module => method.startsWith(module));\nconst getMethod = async message => {\n const {\n method\n } = message.payload;\n if (typeof method !== 'string') {\n throw (0, errors_1.TypedError)('Method_InvalidParameter', 'Message method is not set');\n }\n const methodModule = getMethodModule(method);\n const methods = methodModule ? await Promise.resolve(`${`../api/${methodModule}/api/index.js`}`).then(s => tslib_1.__importStar(require(s))) : Methods;\n const MethodConstructor = methods[method];\n if (MethodConstructor) {\n return new MethodConstructor(message);\n }\n throw (0, errors_1.TypedError)('Method_InvalidParameter', `Method ${method} not found`);\n};\nexports.getMethod = getMethod;\n//# sourceMappingURL=method.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseFirmwareHeaders = void 0;\nconst parseFirmwareHeaders = buff => {\n const vendorHeader = buff.subarray(0, 4).toString('utf8');\n let trezorImageHeader = '';\n let restbuff;\n if (vendorHeader === 'TRZV') {\n const vendorHeaderLength = buff.readUInt32LE(4);\n trezorImageHeader = buff.subarray(vendorHeaderLength, vendorHeaderLength + 4).toString('utf8');\n restbuff = buff.subarray(vendorHeaderLength + 4);\n } else if (vendorHeader === 'TRZR') {\n restbuff = buff.subarray(256 + 4);\n trezorImageHeader = buff.subarray(256, 256 + 4).toString('utf8');\n } else {\n restbuff = buff.subarray(4);\n trezorImageHeader = buff.subarray(0, 4).toString('utf8');\n }\n if (trezorImageHeader !== 'TRZF') {\n throw new Error(`unexpected header ${vendorHeader}`);\n }\n const version_major = restbuff.readInt8(12);\n const version_minor = restbuff.readInt8(13);\n const version_patch = restbuff.readInt8(14);\n const version = [version_major, version_minor, version_patch];\n return {\n version\n };\n};\nexports.parseFirmwareHeaders = parseFirmwareHeaders;\n//# sourceMappingURL=parseFirmwareHeaders.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBinaryOptional = exports.getBinary = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst parseFirmwareHeaders_1 = require(\"./parseFirmwareHeaders\");\nconst constants_1 = require(\"../../constants\");\nconst assets_1 = require(\"../../utils/assets\");\nconst MIN_FIRMWARE_SIZE_BYTES = 200;\nconst getBinary = async ({\n baseUrl,\n path,\n release\n}) => {\n const sanitizedBaseUrl = (0, utils_1.removeTrailingSlashes)(baseUrl);\n const url = `${sanitizedBaseUrl}/${path}`;\n const binaryArrayBuffer = await (0, assets_1.httpRequest)(url, 'binary');\n if (binaryArrayBuffer.byteLength < MIN_FIRMWARE_SIZE_BYTES) {\n throw constants_1.ERRORS.TypedError('Runtime', 'Firmware binary is too small');\n }\n const firmwareBuffer = Buffer.from(binaryArrayBuffer);\n const {\n version: binaryVersion\n } = (0, parseFirmwareHeaders_1.parseFirmwareHeaders)(firmwareBuffer);\n return {\n binary: binaryArrayBuffer,\n binaryVersion,\n release\n };\n};\nexports.getBinary = getBinary;\nconst getBinaryOptional = async params => {\n try {\n return await (0, exports.getBinary)(params);\n } catch {\n return null;\n }\n};\nexports.getBinaryOptional = getBinaryOptional;\n//# sourceMappingURL=getBinary.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.stripFwHeaders = exports.shouldStripFwHeaders = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst shouldStripFwHeaders = features => {\n if (features.major_version === 2) return false;\n return utils_1.versionUtils.isNewerOrEqual([features.major_version, features.minor_version, features.patch_version], [1, 8, 0]);\n};\nexports.shouldStripFwHeaders = shouldStripFwHeaders;\nconst stripFwHeaders = fw => {\n const fwView = new Uint8Array(fw);\n if (String.fromCharCode(...Array.from(fwView.slice(0, 4))) === 'TRZR' && String.fromCharCode(...Array.from(fwView.slice(256, 260))) === 'TRZF') {\n return fw.slice(256);\n }\n return fw;\n};\nexports.stripFwHeaders = stripFwHeaders;\n//# sourceMappingURL=modifyFirmware.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uploadFirmware = void 0;\nconst transport_1 = require(\"@trezor/transport\");\nconst constants_1 = require(\"../../constants\");\nconst events_1 = require(\"../../events\");\nconst postConfirmationMessage = (device, updateFlowType) => {\n const freshInstall = device.features.firmware_present === false;\n if (freshInstall || updateFlowType === 'reboot_and_upgrade') return;\n device.emit(events_1.DEVICE.BUTTON, {\n device,\n payload: {\n code: 'ButtonRequest_FirmwareUpdate'\n }\n });\n};\nconst postProgressMessage = (device, progress, postMessage) => {\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {\n device: device.toMessageObject(),\n operation: 'flashing',\n progress\n }));\n};\nconst FIRMWARE_ERASE_TIMEOUT_MILLISECONDS = 15_000;\nconst uploadFirmware = async ({\n typedCall,\n postMessage,\n device,\n firmwareUploadRequest: {\n payload\n },\n updateFlowType\n}) => {\n if (device.features.major_version === 1) {\n postConfirmationMessage(device, updateFlowType);\n const timeoutId = setTimeout(() => {\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS_UNEXPECTED_DELAY, {}));\n }, FIRMWARE_ERASE_TIMEOUT_MILLISECONDS);\n await typedCall('FirmwareErase', 'Success', {});\n clearTimeout(timeoutId);\n postProgressMessage(device, 0, postMessage);\n let i = 0;\n const progressTimer = setInterval(() => {\n i++;\n postProgressMessage(device, Math.min(i * 2, 99), postMessage);\n }, 300);\n const message = await typedCall('FirmwareUpload', 'Success', {\n payload\n }).finally(() => {\n clearInterval(progressTimer);\n });\n postProgressMessage(device, 100, postMessage);\n return message;\n }\n if (device.features.major_version === 2) {\n postConfirmationMessage(device, updateFlowType);\n const length = payload.byteLength;\n let progress = 0;\n let response = await typedCall('FirmwareErase', ['FirmwareRequest', 'Success'], {\n length\n });\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {\n device: device.toMessageObject(),\n operation: 'start-flashing',\n progress\n }));\n while (response.type !== 'Success') {\n const start = response.message.offset;\n const end = response.message.offset + response.message.length;\n const chunk = payload.slice(start, end);\n const progressStart = Math.round(start / length * 100);\n const progressEnd = Math.round(end / length * 100);\n const progressDiff = progressEnd - progressStart;\n device.transport.on(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS, p => {\n const newProgress = progressStart + Math.floor(progressDiff * p);\n if (start > 0 && newProgress > progress) {\n progress = newProgress;\n postProgressMessage(device, progress, postMessage);\n }\n });\n if (start > 0) {\n postProgressMessage(device, progressStart, postMessage);\n }\n response = await typedCall('FirmwareUpload', ['FirmwareRequest', 'Success'], {\n payload: chunk\n }).finally(() => {\n device.transport.removeAllListeners(transport_1.TRANSPORT.SEND_MESSAGE_PROGRESS);\n });\n }\n postProgressMessage(device, 100, postMessage);\n return response.message;\n }\n throw constants_1.ERRORS.TypedError('Runtime', 'uploadFirmware: unknown major_version');\n};\nexports.uploadFirmware = uploadFirmware;\n//# sourceMappingURL=uploadFirmware.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateFirmwareHash = void 0;\nconst blakejs_1 = require(\"blakejs\");\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst SIZE_T1B1 = (7 * 128 + 64) * 1024;\nconst SIZE_T2T1 = 13 * 128 * 1024;\nconst SIZE_T2B1 = 13 * 128 * 1024;\nconst SIZE_T3B1 = 208 * 8 * 1024;\nconst SIZE_T3T1 = 208 * 8 * 1024;\nconst SIZE_T3W1 = 417 * 8 * 1024;\nconst firmwareSizeMap = {\n [device_utils_1.DeviceModelInternal.T1B1]: SIZE_T1B1,\n [device_utils_1.DeviceModelInternal.T2T1]: SIZE_T2T1,\n [device_utils_1.DeviceModelInternal.T2B1]: SIZE_T2B1,\n [device_utils_1.DeviceModelInternal.T3B1]: SIZE_T3B1,\n [device_utils_1.DeviceModelInternal.T3T1]: SIZE_T3T1,\n [device_utils_1.DeviceModelInternal.T3W1]: SIZE_T3W1\n};\nconst getSizeForModel = ({\n internal_model,\n firmwareVersion\n}) => {\n const size = firmwareSizeMap[internal_model] ?? SIZE_T1B1;\n if (firmwareVersion !== undefined && internal_model === device_utils_1.DeviceModelInternal.T3W1 && utils_1.versionUtils.isEqual(firmwareVersion, [2, 9, 3])) {\n return size - 16 * 1024;\n }\n return size;\n};\nconst calculateFirmwareHash = ({\n internal_model,\n firmwareVersion,\n fw,\n key\n}) => {\n const size = getSizeForModel({\n internal_model,\n firmwareVersion\n });\n const padding = size - fw.byteLength;\n if (padding < 0) {\n throw new Error('Firmware too big');\n }\n const data = new Uint8Array(new ArrayBuffer(size));\n data.set(new Uint8Array(fw));\n if (padding > 0) {\n const zeroBytes = Buffer.alloc(padding);\n zeroBytes.fill(Buffer.from('ff', 'hex'));\n data.set(zeroBytes, fw.byteLength);\n }\n return {\n hash: key && key.length > 0 ? (0, blakejs_1.blake2sHex)(data, key) : (0, blakejs_1.blake2sHex)(data),\n challenge: key ? key.toString('hex') : ''\n };\n};\nexports.calculateFirmwareHash = calculateFirmwareHash;\n//# sourceMappingURL=calculateFirmwareHash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseFirmwareHeaders = exports.calculateFirmwareHash = exports.uploadFirmware = exports.stripFwHeaders = exports.shouldStripFwHeaders = exports.getBinaryOptional = exports.getBinary = void 0;\nvar getBinary_1 = require(\"./getBinary\");\nObject.defineProperty(exports, \"getBinary\", {\n enumerable: true,\n get: function () {\n return getBinary_1.getBinary;\n }\n});\nObject.defineProperty(exports, \"getBinaryOptional\", {\n enumerable: true,\n get: function () {\n return getBinary_1.getBinaryOptional;\n }\n});\nvar modifyFirmware_1 = require(\"./modifyFirmware\");\nObject.defineProperty(exports, \"shouldStripFwHeaders\", {\n enumerable: true,\n get: function () {\n return modifyFirmware_1.shouldStripFwHeaders;\n }\n});\nObject.defineProperty(exports, \"stripFwHeaders\", {\n enumerable: true,\n get: function () {\n return modifyFirmware_1.stripFwHeaders;\n }\n});\nvar uploadFirmware_1 = require(\"./uploadFirmware\");\nObject.defineProperty(exports, \"uploadFirmware\", {\n enumerable: true,\n get: function () {\n return uploadFirmware_1.uploadFirmware;\n }\n});\nvar calculateFirmwareHash_1 = require(\"./calculateFirmwareHash\");\nObject.defineProperty(exports, \"calculateFirmwareHash\", {\n enumerable: true,\n get: function () {\n return calculateFirmwareHash_1.calculateFirmwareHash;\n }\n});\nvar parseFirmwareHeaders_1 = require(\"./parseFirmwareHeaders\");\nObject.defineProperty(exports, \"parseFirmwareHeaders\", {\n enumerable: true,\n get: function () {\n return parseFirmwareHeaders_1.parseFirmwareHeaders;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.onCallFirmwareUpdate = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst versionUtils_1 = require(\"@trezor/utils/lib/versionUtils\");\nconst firmware_1 = require(\"../api/firmware\");\nconst constants_1 = require(\"../constants\");\nconst firmwareInfo_1 = require(\"../data/firmwareInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst firmwareUtils_1 = require(\"../utils/firmwareUtils\");\nconst waitForReconnectedDevice = async ({\n bootloader,\n method,\n intermediary\n}, {\n deviceList,\n device,\n registerEvents,\n postMessage,\n log,\n abortSignal,\n uiPromises\n}) => {\n const target = intermediary || !bootloader ? 'normal' : 'bootloader';\n let i = 0;\n if (method !== 'auto') {\n log.debug('onCallFirmwareUpdate', 'waiting for device to disconnect');\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, {\n device: device.toMessageObject(),\n disconnected: false,\n method,\n target,\n i\n }));\n await new Promise(resolve => {\n deviceList.once('device-disconnect', resolve);\n });\n }\n log.debug('onCallFirmwareUpdate', `waiting for device to reconnect in ${bootloader ? 'bootloader' : 'normal'} mode`);\n let reconnectedDevice;\n let thpPairingError = false;\n do {\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, {\n device: device.toMessageObject(),\n disconnected: true,\n method,\n target,\n i\n }));\n await (0, utils_1.resolveAfter)(2000);\n try {\n reconnectedDevice = deviceList.getOnlyDevice();\n } catch {}\n if (reconnectedDevice && !reconnectedDevice.features) {\n log.debug('onCallFirmwareUpdate', 'we were unable to read device.features on the first interaction after seeing it, retrying...');\n let runFn;\n if (reconnectedDevice.getThpState()?.properties) {\n const uiPromise = uiPromises.create(events_1.UI.RECEIVE_CONFIRMATION, reconnectedDevice);\n postMessage((0, events_1.createUiMessage)(events_1.UI.REQUEST_CONFIRMATION, {\n view: thpPairingError ? 'thp-pairing-failed' : 'thp-pairing-start'\n }));\n const uiResp = await uiPromise.promise;\n if (!uiResp.payload) {\n throw constants_1.ERRORS.TypedError('Method_PermissionsNotGranted');\n }\n runFn = () => Promise.resolve();\n }\n try {\n registerEvents(reconnectedDevice);\n await reconnectedDevice.run(runFn, {\n skipFirmwareChecks: true,\n skipLanguageChecks: true\n });\n } catch (error) {\n uiPromises.rejectAll(error);\n if (error.code === 'Device_ThpPairingTagInvalid') {\n thpPairingError = true;\n }\n }\n }\n i++;\n log.debug('onCallFirmwareUpdate', '...still waiting for device to reconnect', i);\n } while (!abortSignal.aborted && (!reconnectedDevice?.features || bootloader === !reconnectedDevice.features.bootloader_mode || intermediary && !(0, versionUtils_1.isNewer)([reconnectedDevice.features.major_version, reconnectedDevice.features.minor_version, reconnectedDevice.features.patch_version], [device.features.major_version, device.features.minor_version, device.features.patch_version])));\n if (!reconnectedDevice) {\n throw constants_1.ERRORS.TypedError('Method_Interrupted');\n }\n registerEvents(reconnectedDevice);\n await reconnectedDevice.currentRun;\n if (!reconnectedDevice.isUsedHere()) {\n await reconnectedDevice.acquire();\n }\n return reconnectedDevice;\n};\nconst waitForBluetoothReboot = ({\n device,\n target,\n postMessage\n}) => new Promise(resolve => {\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_RECONNECT, {\n device: device.toMessageObject(),\n disconnected: false,\n method: 'auto',\n target,\n i: 0\n }));\n const handler = () => {\n const deviceIsReady = target === 'bootloader' && device.features?.bootloader_mode || target === 'normal' && device.getThpState()?.properties;\n if (deviceIsReady) {\n device.lifecycle.off('device-changed', handler);\n resolve();\n }\n };\n device.lifecycle.on('device-changed', handler);\n});\nconst getInstallationParams = (device, params) => {\n const btcOnly = params.btcOnly ?? device.firmwareType === types_1.FirmwareType.BitcoinOnly;\n if (!device.features.bootloader_mode) {\n const version = params.binary ? (0, firmware_1.parseFirmwareHeaders)(Buffer.from(params.binary)).version : undefined;\n const isUpdatingToNewerVersion = !version ? device.firmwareReleaseConfigInfo?.isNewer : (0, versionUtils_1.isNewer)(version, [device.features.major_version, device.features.minor_version, device.features.patch_version]);\n const isUpdatingToEqualFirmwareType = device.firmwareType === types_1.FirmwareType.BitcoinOnly === btcOnly;\n const upgrade = device.atLeast('2.6.3') && isUpdatingToNewerVersion && isUpdatingToEqualFirmwareType;\n const manual = !device.atLeast(['1.10.0', '2.6.0']) && !upgrade;\n const getUpdateFlowType = () => {\n if (manual) return 'manual';\n return upgrade ? 'reboot_and_upgrade' : 'reboot_and_wait';\n };\n return {\n manual,\n upgrade,\n updateFlowType: getUpdateFlowType(),\n btcOnly\n };\n } else {\n return {\n manual: false,\n upgrade: false,\n updateFlowType: 'unknown_flow',\n btcOnly\n };\n }\n};\nconst getFwHeader = binary => Buffer.from(binary.slice(0, 6000)).toString('hex');\nconst getBinaryHelper = async ({\n device,\n params,\n firmwareType,\n isIntermediary,\n log\n}) => {\n if (params.binary) {\n return Promise.resolve({\n binary: params.binary,\n binaryVersion: (0, firmware_1.parseFirmwareHeaders)(Buffer.from(params.binary)).version,\n release: undefined\n });\n }\n if (!device.firmwareReleaseConfigInfo) {\n throw constants_1.ERRORS.TypedError('Runtime', 'device.firmwareReleaseConfigInfo is not set');\n }\n const deviceModel = device.features?.internal_model;\n const {\n release: {\n version\n },\n intermediary\n } = device.firmwareReleaseConfigInfo;\n log.debug('onCallFirmwareUpdate loading binary', 'isIntermediary', isIntermediary, 'version', version, 'firmwareType', firmwareType, 'deviceModel', deviceModel);\n const release = await (0, firmwareInfo_1.getReleaseByVersion)(device.features, version, firmwareType);\n if (!release) {\n throw new Error('Missing Firmware release for device');\n }\n const {\n baseUrl,\n path\n } = (0, firmwareInfo_1.getFirmwareLocation)({\n firmwareVersion: version,\n remotePath: release.url,\n deviceModel,\n firmwareType,\n intermediaryVersion: isIntermediary && intermediary ? intermediary.version : undefined\n });\n return (0, firmware_1.getBinary)({\n baseUrl,\n path,\n release\n });\n};\nconst onCallFirmwareUpdate = async ({\n params,\n context\n}) => {\n const {\n deviceList,\n registerEvents,\n postMessage,\n initDevice,\n log\n } = context;\n log.debug('onCallFirmwareUpdate with params: ', params);\n const firmwareType = params.btcOnly ? types_1.FirmwareType.BitcoinOnly : types_1.FirmwareType.Universal;\n const device = await initDevice(params?.device?.path);\n if (!device.features) {\n throw constants_1.ERRORS.TypedError('Device_NotFound', 'Device missing features');\n }\n if (deviceList.getDeviceCount() > 1) {\n throw constants_1.ERRORS.TypedError('Device_MultipleNotSupported', 'Firmware update allowed with only 1 device connected');\n }\n log.debug('onCallFirmwareUpdate', 'device', device);\n registerEvents(device);\n const {\n manual,\n upgrade,\n updateFlowType,\n btcOnly\n } = getInstallationParams(device, params);\n log.debug('onCallFirmwareUpdate', 'installation params', {\n manual,\n upgrade,\n updateFlowType,\n btcOnly\n });\n const intermediary = !params.binary && device?.firmwareReleaseConfigInfo?.intermediary;\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {\n device: device.toMessageObject(),\n operation: 'downloading',\n progress: 0\n }));\n let intermediaryBinaryInfo;\n let finalBinaryInfo;\n const fwFetchPromises = [];\n if (intermediary) {\n fwFetchPromises.push(getBinaryHelper({\n device,\n params,\n firmwareType,\n isIntermediary: true,\n log\n }));\n }\n fwFetchPromises.push(getBinaryHelper({\n device,\n params,\n firmwareType,\n isIntermediary: false,\n log\n }));\n const [firstResult, finalResult] = await Promise.all(fwFetchPromises);\n if (intermediary) {\n intermediaryBinaryInfo = firstResult;\n finalBinaryInfo = finalResult;\n } else {\n finalBinaryInfo = firstResult;\n }\n const firstBinaryInfo = intermediary ? intermediaryBinaryInfo : finalBinaryInfo;\n if (!firstBinaryInfo) {\n throw new Error('Missing binary, something went wrong.');\n }\n postMessage((0, events_1.createUiMessage)(events_1.UI.FIRMWARE_PROGRESS, {\n device: device.toMessageObject(),\n operation: 'downloading',\n progress: 100\n }));\n if ((0, firmwareUtils_1.isFirmwareCacheUsedForSelectedSource)() && finalBinaryInfo.release) {\n const message = (0, events_1.createUiMessage)(events_1.UI.FIRMWARE_DOWNLOADED, {\n binary: finalBinaryInfo.binary,\n binaryVersion: finalBinaryInfo.binaryVersion,\n releaseVersion: finalBinaryInfo.release?.version,\n firmwareType,\n release: finalBinaryInfo.release,\n internalModel: device.features.internal_model\n });\n postMessage(message);\n }\n const deviceInitiallyConnectedInBootloader = device.features.bootloader_mode;\n let reconnectedDevice = device;\n if (deviceInitiallyConnectedInBootloader) {\n log.warn('onCallFirmwareUpdate', 'device is already in bootloader mode.');\n await device.acquire();\n } else if (manual) {\n reconnectedDevice = await waitForReconnectedDevice({\n bootloader: true,\n method: 'manual'\n }, {\n ...context,\n device\n });\n } else {\n const rebootParams = upgrade ? {\n boot_command: constants_1.PROTO.BootCommand.INSTALL_UPGRADE,\n firmware_header: getFwHeader(firstBinaryInfo.binary)\n } : {};\n await device.acquire();\n const disconnectedPromise = new Promise(resolve => {\n deviceList.once('device-disconnect', resolve);\n });\n await device.getCommands().typedCall('RebootToBootloader', 'Success', rebootParams);\n log.info('onCallFirmwareUpdate', 'waiting for disconnected event after rebootToBootloader...');\n if (device.descriptor.apiType === 'bluetooth') {\n await device.release();\n await waitForBluetoothReboot({\n device,\n target: 'bootloader',\n postMessage\n });\n } else {\n await disconnectedPromise;\n if (device.features.major_version === 1) {\n await (0, utils_1.resolveAfter)(2000);\n }\n }\n reconnectedDevice = await waitForReconnectedDevice({\n bootloader: true,\n method: 'auto'\n }, {\n ...context,\n device\n });\n }\n const bootloaderVersion = reconnectedDevice.getVersion();\n await reconnectedDevice.initialize(false);\n let stripped = (0, firmware_1.stripFwHeaders)(firstBinaryInfo.binary);\n const payload = !intermediary && (0, firmware_1.shouldStripFwHeaders)(device.features) ? stripped : firstBinaryInfo.binary;\n await (0, firmware_1.uploadFirmware)({\n typedCall: reconnectedDevice.getCommands().typedCall,\n postMessage,\n device: reconnectedDevice,\n firmwareUploadRequest: {\n payload\n },\n updateFlowType\n });\n log.info('onCallFirmwareUpdate', 'firmware uploaded');\n if (intermediary) {\n log.info('onCallFirmwareUpdate', '...but it was the intermediary firmware, so one more go');\n reconnectedDevice = await waitForReconnectedDevice({\n bootloader: true,\n method: 'manual',\n intermediary: true\n }, {\n ...context,\n device: reconnectedDevice\n });\n stripped = (0, firmware_1.stripFwHeaders)(finalBinaryInfo.binary);\n await reconnectedDevice.initialize(false);\n await (0, firmware_1.uploadFirmware)({\n typedCall: reconnectedDevice.getCommands().typedCall,\n postMessage,\n device: reconnectedDevice,\n firmwareUploadRequest: {\n payload: stripped\n },\n updateFlowType\n });\n }\n let method = 'wait';\n if (device.descriptor.apiType === 'bluetooth') {\n await waitForBluetoothReboot({\n device,\n target: 'normal',\n postMessage\n });\n method = 'auto';\n }\n reconnectedDevice = await waitForReconnectedDevice({\n bootloader: false,\n method\n }, {\n ...context,\n device: reconnectedDevice\n });\n const installedVersion = reconnectedDevice.getVersion();\n if (!bootloaderVersion || !installedVersion) {\n throw constants_1.ERRORS.TypedError('Runtime', 'reconnectedDevice.installedVersion is not set');\n }\n const {\n binaryVersion,\n release\n } = finalBinaryInfo;\n const assertBinaryVersion = (0, versionUtils_1.isEqual)(installedVersion, binaryVersion);\n const assertReleaseVersion = release?.version ? (0, versionUtils_1.isEqual)(installedVersion, release?.version) : true;\n await reconnectedDevice.release();\n log.info('onCallFirmwareUpdate', `firmware updated to version ${installedVersion}`);\n return {\n versionCheck: assertBinaryVersion && assertReleaseVersion,\n bootloaderVersion,\n installedVersion,\n binaryVersion,\n releaseVersion: release?.version\n };\n};\nexports.onCallFirmwareUpdate = onCallFirmwareUpdate;\n//# sourceMappingURL=onCallFirmwareUpdate.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.reportEvent = exports.getUrl = exports.encodeDataToQueryString = exports.getRandomId = exports.getTrackingRandomId = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst getTrackingRandomId = () => (0, utils_1.getWeakRandomId)(10);\nexports.getTrackingRandomId = getTrackingRandomId;\nconst getRandomId = () => (0, utils_1.getWeakRandomId)(10);\nexports.getRandomId = getRandomId;\nconst encodeDataToQueryString = (instanceId, sessionId, commitId, version, event) => {\n const {\n type,\n timestamp\n } = event;\n const params = new URLSearchParams({\n c_v: version,\n c_type: type || '',\n c_commit: commitId,\n c_instance_id: instanceId,\n c_session_id: sessionId,\n c_timestamp: timestamp || Date.now().toString(),\n c_message_id: (0, exports.getRandomId)()\n });\n if (event.payload) {\n Object.entries(event.payload).forEach(([key, value]) => params.append(key, value?.toString() ?? ''));\n }\n return params.toString();\n};\nexports.encodeDataToQueryString = encodeDataToQueryString;\nconst getUrl = (app, isDev, environment) => {\n let base = `https://data.trezor.io/${app}/log`;\n if (environment) {\n base = `${base}/${environment}`;\n }\n if (isDev) {\n return `${base}/develop.log`;\n }\n return `${base}/stable.log`;\n};\nexports.getUrl = getUrl;\nconst reportEventError = (type, retry, err) => {\n let errorMessage = err?.error?.message || err?.message;\n if (typeof errorMessage !== 'string') {\n errorMessage = 'Unknown error.';\n }\n if (errorMessage.includes('Failed to fetch')) {\n errorMessage = 'Failed to analytics fetch.';\n }\n const reportedMessage = `Analytics report failed. Reporting '${type}' ${retry ? 'again' : 'was unsuccessful'}. ${errorMessage}`;\n console.error(reportedMessage);\n};\nconst reportEvent = async ({\n type,\n url,\n options,\n retry\n}) => {\n try {\n const response = await fetch(url, options);\n if (!response.ok) {\n console.error(`Analytics response not ok. Response status: ${response.status}.`);\n }\n } catch (err) {\n reportEventError(type, retry, err);\n if (retry) {\n setTimeout(() => (0, exports.reportEvent)({\n type,\n url,\n options,\n retry: false\n }), 1000);\n }\n }\n};\nexports.reportEvent = reportEvent;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Analytics = void 0;\nconst utils_1 = require(\"./utils\");\nclass Analytics {\n enabled;\n useQueue = false;\n queue = new Array();\n version;\n app;\n instanceId;\n sessionId;\n commitId;\n url;\n callbacks;\n constructor({\n version,\n app,\n useQueue = false\n }) {\n this.version = version;\n this.app = app;\n this.useQueue = useQueue;\n }\n init = (enabled, options) => {\n this.enabled = enabled;\n this.instanceId = options.instanceId || (0, utils_1.getRandomId)();\n this.sessionId = options.sessionId || (0, utils_1.getRandomId)();\n this.commitId = options.commitId;\n this.url = (0, utils_1.getUrl)(this.app, options.isDev, options.environment);\n this.callbacks = options.callbacks;\n if (this.enabled !== undefined) {\n this.flushQueue();\n }\n };\n enable = () => {\n this.enabled = true;\n this.callbacks?.onEnable?.();\n this.flushQueue();\n };\n flushQueue = () => {\n if (this.useQueue) {\n this.useQueue = false;\n this.queue.map(data => this.report(data));\n this.queue = [];\n }\n };\n disable = () => {\n this.enabled = false;\n this.callbacks?.onDisable?.();\n if (this.useQueue) {\n this.useQueue = false;\n this.queue = [];\n }\n };\n isEnabled = () => !!this.enabled;\n report = (data, config) => {\n if (!data.timestamp) {\n data.timestamp = Date.now().toString();\n }\n const isMissingFields = !this.url || !this.instanceId || !this.sessionId || !this.commitId || !this.version;\n if (!this.useQueue && isMissingFields) {\n const listOfMissingFields = `${!this.url ? 'url, ' : ''}` + `${!this.instanceId ? 'instanceId, ' : ''}` + `${!this.sessionId ? 'sessionId, ' : ''}` + `${!this.commitId ? 'commitId, ' : ''}` + `${!this.version ? 'version, ' : ''}`;\n console.error(`Unable to report ${data.type}. Analytics is not initialized! Missing: ${listOfMissingFields}`);\n return;\n }\n const {\n anonymize,\n force\n } = config ?? {};\n if (this.useQueue && this.enabled === undefined && !force) {\n this.queue.push(data);\n }\n if (!this.enabled && !force || isMissingFields) {\n return;\n }\n const qs = (0, utils_1.encodeDataToQueryString)(anonymize ? (0, utils_1.getRandomId)() : this.instanceId, anonymize ? (0, utils_1.getRandomId)() : this.sessionId, this.commitId, this.version, data);\n (0, utils_1.reportEvent)({\n type: data.type,\n url: `${this.url}?${qs}`,\n options: {\n method: 'GET',\n keepalive: true\n },\n retry: true\n });\n };\n}\nexports.Analytics = Analytics;\n//# sourceMappingURL=analytics.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=types.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTrackingRandomId = exports.getRandomId = exports.Analytics = void 0;\nconst tslib_1 = require(\"tslib\");\nvar analytics_1 = require(\"./analytics\");\nObject.defineProperty(exports, \"Analytics\", {\n enumerable: true,\n get: function () {\n return analytics_1.Analytics;\n }\n});\ntslib_1.__exportStar(require(\"./types\"), exports);\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"getRandomId\", {\n enumerable: true,\n get: function () {\n return utils_1.getRandomId;\n }\n});\nObject.defineProperty(exports, \"getTrackingRandomId\", {\n enumerable: true,\n get: function () {\n return utils_1.getTrackingRandomId;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n//# sourceMappingURL=events.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.EventType = void 0;\nvar EventType;\n(function (EventType) {\n EventType[\"AppReady\"] = \"app/ready\";\n EventType[\"AppInfo\"] = \"app/info\";\n EventType[\"ViewChange\"] = \"view/change\";\n EventType[\"ViewChangeError\"] = \"view/change-error\";\n EventType[\"SettingsTracking\"] = \"settings/tracking\";\n EventType[\"SettingsPermissions\"] = \"settings/permissions\";\n EventType[\"WalletType\"] = \"wallet/type\";\n EventType[\"DeviceSelected\"] = \"device/selected\";\n})(EventType || (exports.EventType = EventType = {}));\n//# sourceMappingURL=constants.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRandomId = exports.analytics = void 0;\nconst tslib_1 = require(\"tslib\");\nconst analytics_1 = require(\"@trezor/analytics\");\nObject.defineProperty(exports, \"getRandomId\", {\n enumerable: true,\n get: function () {\n return analytics_1.getRandomId;\n }\n});\nconst analytics = new analytics_1.Analytics({\n version: process.env.VERSION,\n app: 'connect',\n useQueue: true\n});\nexports.analytics = analytics;\ntslib_1.__exportStar(require(\"./types/events\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.enhanceMessageWithAnalytics = void 0;\nconst connect_analytics_1 = require(\"@trezor/connect-analytics\");\nconst events_1 = require(\"../events\");\nconst enhanceMessageWithAnalytics = (message, data) => {\n switch (message.type) {\n case events_1.UI_REQUEST.REQUEST_CONFIRMATION:\n {\n const {\n device\n } = data;\n return {\n ...message,\n payload: {\n ...message.payload,\n analytics: {\n type: connect_analytics_1.EventType.DeviceSelected,\n payload: {\n mode: device?.mode || '',\n pinProtection: device?.features?.pin_protection || '',\n passphraseProtection: device?.features?.passphrase_protection || '',\n backupType: device?.features?.backup_type || 'Bip39',\n language: device?.features?.language || '',\n model: device?.features?.internal_model || '',\n vendor: device?.features?.vendor || '',\n firmwareRevision: device?.features?.revision || '',\n firmwareType: device?.firmwareType || '',\n bootloaderHash: device?.features?.bootloader_hash || ''\n }\n }\n }\n };\n }\n default:\n return message;\n }\n};\nexports.enhanceMessageWithAnalytics = enhanceMessageWithAnalytics;\n//# sourceMappingURL=analyticsInfo.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseThpSettings = void 0;\nconst parseThpSettings = ({\n manifest,\n thp\n}) => {\n const settings = {\n pairingMethods: []\n };\n if (Array.isArray(thp?.pairingMethods)) {\n settings.pairingMethods = thp.pairingMethods;\n } else {\n settings.pairingMethods = ['CodeEntry'];\n }\n if (typeof thp?.hostName === 'string') {\n settings.hostName = thp.hostName;\n }\n if (typeof thp?.appName === 'string') {\n settings.appName = thp.appName;\n } else if (typeof manifest?.appName === 'string') {\n settings.appName = manifest?.appName;\n }\n if (typeof thp?.staticKey === 'string') {\n settings.staticKey = thp.staticKey;\n }\n if (Array.isArray(thp?.knownCredentials)) {\n settings.knownCredentials = thp.knownCredentials.flatMap(k => {\n if (k && typeof k === 'object' && typeof k.credential === 'string' && typeof k.trezor_static_public_key === 'string') {\n return k;\n }\n return [];\n });\n }\n return settings;\n};\nexports.parseThpSettings = parseThpSettings;\n//# sourceMappingURL=thpSettings.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEEPLINK_VERSION = exports.CONTENT_SCRIPT_VERSION = exports.DEFAULT_DOMAIN = exports.DEFAULT_DOMAIN_MAJOR_VER = exports.VERSION = void 0;\nexports.VERSION = '9.7.1';\nconst versionN = exports.VERSION.split('.').map(s => parseInt(s, 10));\nconst isBeta = exports.VERSION.includes('beta');\nexports.DEFAULT_DOMAIN_MAJOR_VER = `https://connect.trezor.io/${versionN[0]}/`;\nexports.DEFAULT_DOMAIN = isBeta ? `https://connect.trezor.io/${exports.VERSION}/` : exports.DEFAULT_DOMAIN_MAJOR_VER;\nexports.CONTENT_SCRIPT_VERSION = 1;\nexports.DEEPLINK_VERSION = 1;\n//# sourceMappingURL=version.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseConnectSettings = exports.corsValidator = exports.parseLocalFirmwares = exports.DEFAULT_PRIORITY = void 0;\nconst thpSettings_1 = require(\"./thpSettings\");\nconst version_1 = require(\"./version\");\nexports.DEFAULT_PRIORITY = 2;\nconst initialSettings = {\n configSrc: './data/config.json',\n version: version_1.VERSION,\n debug: false,\n priority: exports.DEFAULT_PRIORITY,\n trustedHost: true,\n connectSrc: version_1.DEFAULT_DOMAIN,\n iframeSrc: `${version_1.DEFAULT_DOMAIN}iframe.html`,\n popup: false,\n popupSrc: `${version_1.DEFAULT_DOMAIN}popup.html`,\n webusbSrc: `${version_1.DEFAULT_DOMAIN}webusb.html`,\n transports: undefined,\n pendingTransportEvent: true,\n env: 'node',\n lazyLoad: false,\n timestamp: new Date().getTime(),\n interactionTimeout: 1200,\n sharedLogger: true,\n deeplinkUrl: `${version_1.DEFAULT_DOMAIN}deeplink/${version_1.DEEPLINK_VERSION}/`,\n transportReconnect: true\n};\nconst parseManifest = manifest => {\n if (!manifest) return;\n if (typeof manifest.email !== 'string') return;\n if (typeof manifest.appUrl !== 'string') return;\n if (typeof manifest.appName !== 'undefined' && typeof manifest.appName !== 'string') return;\n if (typeof manifest.appIcon !== 'undefined' && typeof manifest.appIcon !== 'string') return;\n return {\n email: manifest.email,\n appUrl: manifest.appUrl,\n appName: manifest.appName,\n appIcon: manifest.appIcon\n };\n};\nconst parseLocalFirmwares = localFirmwares => {\n if (!localFirmwares) return;\n if (typeof localFirmwares.firmwareDir !== 'string') return;\n if (!Array.isArray(localFirmwares.firmwareList)) return;\n return {\n firmwareDir: localFirmwares.firmwareDir,\n firmwareList: localFirmwares.firmwareList\n };\n};\nexports.parseLocalFirmwares = parseLocalFirmwares;\nconst corsValidator = url => {\n if (typeof url !== 'string') return;\n if (url === '../') return url;\n if (url.match(/^https:\\/\\/([A-Za-z0-9\\-_]+\\.)*trezor\\.io\\//)) return url;\n if (url.match(/^https?:\\/\\/localhost:[58][0-9]{3}\\//)) return url;\n if (url.match(/^https:\\/\\/([A-Za-z0-9\\-_]+\\.)*sldev\\.cz\\//)) return url;\n if (url.match(/^https?:\\/\\/([A-Za-z0-9\\-_]+\\.)*trezoriovpjcahpzkrewelclulmszwbqpzmzgub37gbcjlvluxtruqad\\.onion\\//)) return url;\n};\nexports.corsValidator = corsValidator;\nconst parseConnectSettings = (input = {}) => {\n const settings = {\n ...initialSettings\n };\n if ('debug' in input) {\n if (typeof input.debug === 'boolean') {\n settings.debug = input.debug;\n } else if (typeof input.debug === 'string') {\n settings.debug = input.debug === 'true';\n }\n }\n if (input.trustedHost === false) {\n settings.trustedHost = input.trustedHost;\n }\n if (typeof input.connectSrc === 'string') {\n settings.connectSrc = (0, exports.corsValidator)(input.connectSrc);\n } else if (settings.trustedHost) {\n settings.connectSrc = input.connectSrc;\n }\n const src = settings.connectSrc || version_1.DEFAULT_DOMAIN;\n settings.iframeSrc = `${src}iframe.html`;\n settings.popupSrc = `${src}popup.html`;\n settings.webusbSrc = `${src}webusb.html`;\n if (typeof input.transportReconnect === 'boolean') {\n settings.transportReconnect = input.transportReconnect;\n }\n if (typeof input.localFirmwares === 'object') {\n settings.localFirmwares = (0, exports.parseLocalFirmwares)(input.localFirmwares);\n }\n if (typeof input.firmwareUpdateSource === 'string') {\n settings.firmwareUpdateSource = input.firmwareUpdateSource;\n }\n if (Array.isArray(input.transports)) {\n settings.transports = input.transports;\n }\n if (typeof input.popup === 'boolean') {\n settings.popup = input.popup;\n }\n if (typeof input.lazyLoad === 'boolean') {\n settings.lazyLoad = input.lazyLoad;\n }\n if (typeof input.pendingTransportEvent === 'boolean') {\n settings.pendingTransportEvent = input.pendingTransportEvent;\n }\n if (typeof input.extension === 'string') {\n settings.extension = input.extension;\n }\n if (typeof input.env === 'string') {\n settings.env = input.env;\n }\n if (typeof input.timestamp === 'number') {\n settings.timestamp = input.timestamp;\n }\n if (typeof input.interactionTimeout === 'number') {\n settings.interactionTimeout = input.interactionTimeout;\n }\n if (typeof input.manifest === 'object') {\n settings.manifest = parseManifest(input.manifest);\n }\n if (typeof input.sharedLogger === 'boolean') {\n settings.sharedLogger = input.sharedLogger;\n }\n if (typeof input.coreMode === 'string' && ['auto', 'popup', 'iframe', 'suite-desktop', 'suite-web'].includes(input.coreMode)) {\n settings.coreMode = input.coreMode;\n }\n if (typeof input._extendWebextensionLifetime === 'boolean') {\n settings._extendWebextensionLifetime = input._extendWebextensionLifetime;\n }\n if (typeof input.binFilesBaseUrl === 'string') {\n settings.binFilesBaseUrl = input.binFilesBaseUrl;\n }\n if (typeof input.enableFirmwareHashCheck === 'boolean') {\n settings.enableFirmwareHashCheck = Boolean(input.enableFirmwareHashCheck);\n }\n if (typeof input.firmwareHashCheckTimeouts === 'object' && input.firmwareHashCheckTimeouts !== null) {\n settings.firmwareHashCheckTimeouts = input.firmwareHashCheckTimeouts;\n }\n if (typeof input.npmVersion === 'string') {\n settings.npmVersion = input.npmVersion;\n }\n settings.thp = (0, thpSettings_1.parseThpSettings)(input);\n return settings;\n};\nexports.parseConnectSettings = parseConnectSettings;\n//# sourceMappingURL=connectSettings.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.resolveDescriptorForTaproot = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst resolveDescriptorForTaproot = ({\n response,\n publicKey\n}) => {\n if (publicKey.descriptor !== null && publicKey.descriptor !== undefined) {\n const [xpub, checksum] = publicKey.descriptor.split('#');\n const correctedXpub = (0, utils_1.convertTaprootXpub)({\n xpub,\n direction: 'h-to-apostrophe'\n });\n if (correctedXpub !== null) {\n return {\n xpub: correctedXpub,\n checksum\n };\n }\n }\n const fingerprint = Number(publicKey.root_fingerprint || 0).toString(16).padStart(8, '0');\n const descriptorPath = `${fingerprint}${response.serializedPath.substring(1)}`;\n return {\n xpub: `tr([${descriptorPath}]${response.xpub}/<0;1>/*)`,\n checksum: undefined\n };\n};\nexports.resolveDescriptorForTaproot = resolveDescriptorForTaproot;\n//# sourceMappingURL=resolveDescriptorForTaproot.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceCommands = void 0;\nconst tslib_1 = require(\"tslib\");\nconst constants_1 = require(\"../constants\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst resolveDescriptorForTaproot_1 = require(\"../device/resolveDescriptorForTaproot\");\nconst hdnodeUtils = tslib_1.__importStar(require(\"../utils/hdnodeUtils\"));\nconst pathUtils_1 = require(\"../utils/pathUtils\");\nconst DeviceCommands = deviceTypedCall => {\n const typedCall = deviceTypedCall.typedCall.bind(deviceTypedCall);\n const unlockPath = params => typedCall('UnlockPath', 'UnlockedPathRequest', params);\n const getPublicKey = async (params, unlock) => {\n if (unlock) {\n await unlockPath(unlock);\n }\n const response = await typedCall('GetPublicKey', 'PublicKey', {\n address_n: params.address_n,\n coin_name: params.coin_name || 'Bitcoin',\n script_type: params.script_type,\n show_display: params.show_display,\n ignore_xpub_magic: params.ignore_xpub_magic,\n ecdsa_curve_name: params.ecdsa_curve_name\n });\n return response.message;\n };\n const getHDNode = async (params, options) => {\n const path = params.address_n;\n const {\n coinInfo,\n unlockPath: unlock\n } = options;\n const validation = typeof options.validation === 'boolean' ? options.validation : true;\n let network = null;\n if (!params.script_type) {\n params.script_type = (0, pathUtils_1.getScriptType)(path);\n }\n if (params.script_type === 'SPENDP2SHWITNESS') {\n network = (0, coinInfo_1.getSegwitNetwork)(coinInfo);\n } else if (params.script_type === 'SPENDWITNESS') {\n network = (0, coinInfo_1.getBech32Network)(coinInfo);\n }\n if (!network) {\n network = coinInfo.network;\n }\n if (!params.coin_name) {\n params.coin_name = coinInfo.name;\n }\n let publicKey;\n if (params.show_display || !validation) {\n publicKey = await getPublicKey(params, unlock);\n } else {\n const suffix = 0;\n const childPath = path.concat([suffix]);\n const resKey = await getPublicKey(params, unlock);\n const childKey = await getPublicKey({\n ...params,\n address_n: childPath\n }, unlock);\n publicKey = hdnodeUtils.xpubDerive(resKey, childKey, suffix, network, coinInfo.network);\n }\n const response = {\n path,\n serializedPath: (0, pathUtils_1.getSerializedPath)(path),\n childNum: publicKey.node.child_num,\n xpub: publicKey.xpub,\n chainCode: publicKey.node.chain_code,\n publicKey: publicKey.node.public_key,\n fingerprint: publicKey.node.fingerprint,\n depth: publicKey.node.depth,\n descriptor: publicKey.descriptor\n };\n if (network !== coinInfo.network) {\n response.xpubSegwit = response.xpub;\n response.xpub = hdnodeUtils.convertXpub(publicKey.xpub, network, coinInfo.network);\n }\n if ((0, pathUtils_1.isTaprootPath)(path)) {\n const {\n checksum,\n xpub: xpubSegwit\n } = (0, resolveDescriptorForTaproot_1.resolveDescriptorForTaproot)({\n response,\n publicKey\n });\n response.xpubSegwit = xpubSegwit;\n response.descriptorChecksum = checksum;\n }\n return response;\n };\n const getAddress = async ({\n address_n,\n show_display,\n multisig,\n script_type,\n chunkify\n }, coinInfo) => {\n if (!script_type) {\n script_type = (0, pathUtils_1.getScriptType)(address_n);\n if (script_type === 'SPENDMULTISIG' && !multisig) {\n script_type = 'SPENDADDRESS';\n }\n }\n if (multisig && multisig.pubkeys) {\n multisig.pubkeys.forEach(pk => {\n if (typeof pk.node === 'string') {\n pk.node = hdnodeUtils.xpubToHDNodeType(pk.node, coinInfo.network);\n }\n });\n }\n const response = await typedCall('GetAddress', 'Address', {\n address_n,\n coin_name: coinInfo.name,\n show_display,\n multisig,\n script_type: script_type || 'SPENDADDRESS',\n chunkify\n });\n return response.message;\n };\n const ethereumGetAddress = async params => {\n const response = await typedCall('EthereumGetAddress', 'EthereumAddress', params);\n return response.message;\n };\n const ethereumGetPublicKey = async ({\n address_n,\n show_display\n }) => {\n const suffix = 0;\n const childPath = address_n.concat([suffix]);\n const resKey = await typedCall('EthereumGetPublicKey', 'EthereumPublicKey', {\n address_n,\n show_display\n });\n const childKey = await typedCall('EthereumGetPublicKey', 'EthereumPublicKey', {\n address_n: childPath,\n show_display: false\n });\n return hdnodeUtils.xpubDerive(resKey.message, childKey.message, suffix);\n };\n const preauthorize = async throwError => {\n try {\n await typedCall('DoPreauthorized', 'PreauthorizedRequest', {});\n return true;\n } catch (error) {\n if (throwError) throw error;\n return false;\n }\n };\n const getAccountDescriptor = async (coinInfo, address_n, derivationType = constants_1.PROTO.CardanoDerivationType.ICARUS_TREZOR) => {\n if (coinInfo.type === 'bitcoin') {\n const resp = await getHDNode({\n address_n\n }, {\n coinInfo,\n validation: false\n });\n return {\n descriptor: resp.xpubSegwit || resp.xpub,\n legacyXpub: resp.xpub,\n address_n,\n descriptorChecksum: resp.descriptorChecksum\n };\n }\n if (coinInfo.type === 'ethereum') {\n const {\n message\n } = await typedCall('EthereumGetAddress', 'EthereumAddress', {\n address_n\n });\n return {\n descriptor: message.address,\n address_n\n };\n }\n if (coinInfo.shortcut === 'ADA' || coinInfo.shortcut === 'tADA') {\n const {\n message\n } = await typedCall('CardanoGetPublicKey', 'CardanoPublicKey', {\n address_n,\n derivation_type: derivationType\n });\n return {\n descriptor: message.xpub,\n address_n\n };\n }\n if (coinInfo.shortcut === 'XRP' || coinInfo.shortcut === 'tXRP') {\n const {\n message\n } = await typedCall('RippleGetAddress', 'RippleAddress', {\n address_n\n });\n return {\n descriptor: message.address,\n address_n\n };\n }\n if (coinInfo.shortcut === 'SOL' || coinInfo.shortcut === 'DSOL') {\n const {\n message\n } = await typedCall('SolanaGetAddress', 'SolanaAddress', {\n address_n\n });\n return {\n descriptor: message.address,\n address_n\n };\n }\n if (coinInfo.shortcut === 'XLM' || coinInfo.shortcut === 'tXLM') {\n const {\n message\n } = await typedCall('StellarGetAddress', 'StellarAddress', {\n address_n\n });\n return {\n descriptor: message.address,\n address_n\n };\n }\n throw constants_1.ERRORS.TypedError('Runtime', 'DeviceCommands.getAccountDescriptor: unsupported coinInfo.type');\n };\n return {\n unlockPath,\n getPublicKey,\n getAddress,\n ethereumGetPublicKey,\n ethereumGetAddress,\n getHDNode,\n preauthorize,\n getAccountDescriptor,\n typedCall\n };\n};\nexports.DeviceCommands = DeviceCommands;\n//# sourceMappingURL=DeviceCommands.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isErrorWithoutDeviceInteraction = void 0;\nconst tslib_1 = require(\"tslib\");\nconst ERRORS = tslib_1.__importStar(require(\"./errors\"));\nconst ERRORS_WITHOUT_DEVICE_INTERACTION = [ERRORS.HTTP_ERROR, ERRORS.OTHER_CALL_IN_PROGRESS, ERRORS.WRONG_ENVIRONMENT, ERRORS.NATIVE_INTERFACE_NOT_AVAILABLE, ERRORS.ALREADY_LISTENING, ERRORS.SESSION_BACKGROUND_TIMEOUT, ERRORS.SESSION_NOT_FOUND, ERRORS.SESSION_WRONG_PREVIOUS];\nconst isErrorWithoutDeviceInteraction = error => ERRORS_WITHOUT_DEVICE_INTERACTION.includes(error);\nexports.isErrorWithoutDeviceInteraction = isErrorWithoutDeviceInteraction;\n//# sourceMappingURL=errors-groups.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLog = exports.enableLogByPrefix = exports.enableLog = exports.setLogWriter = exports.initLog = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst green = '#bada55';\nconst blue = '#20abd8';\nconst orange = '#f4a744';\nconst yellow = '#fbd948';\nconst colors = {\n '@trezor/connect': `color: ${blue}; background: #000;`,\n '@trezor/connect-web': `color: ${blue}; background: #000;`,\n '@trezor/connect-webextension': `color: ${blue}; background: #000;`,\n IFrame: `color: ${orange}; background: #000;`,\n Core: `color: ${orange}; background: #000;`,\n DeviceList: `color: ${green}; background: #000;`,\n Device: `color: ${green}; background: #000;`,\n DeviceCommands: `color: ${green}; background: #000;`,\n '@trezor/transport': `color: ${green}; background: #000;`,\n InteractionTimeout: `color: ${green}; background: #000;`,\n '@trezor/connect-popup': `color: ${yellow}; background: #000;`\n};\nconst logsManager = new utils_1.LogsManager({\n colors\n});\nexports.initLog = logsManager.initLog.bind(logsManager);\nexports.setLogWriter = logsManager.setLogWriter.bind(logsManager);\nexports.enableLog = logsManager.enableLog.bind(logsManager);\nexports.enableLogByPrefix = logsManager.enableLogByPrefix.bind(logsManager);\nexports.getLog = logsManager.getLog.bind(logsManager);\n//# sourceMappingURL=debug.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceCurrentSession = void 0;\nconst protobuf_1 = require(\"@trezor/protobuf\");\nconst schema_utils_1 = require(\"@trezor/schema-utils\");\nconst transport_1 = require(\"@trezor/transport\");\nconst errors_groups_1 = require(\"@trezor/transport/lib/errors-groups\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst events_1 = require(\"../events\");\nconst debug_1 = require(\"../utils/debug\");\nconst blacklist = {\n PassphraseAck: ['passphrase'],\n CipheredKeyValue: ['value'],\n GetPublicKey: ['address_n'],\n PublicKey: ['node', 'xpub'],\n DecryptedMessage: ['message', 'address'],\n Features: true\n};\nconst allowedCallsBeforeInitialize = ['Cancel', 'Initialize', 'GetFeatures', 'GetFirmwareHash', 'ChangeLanguage', 'DataChunkAck', 'RebootToBootloader', 'FirmwareErase', 'FirmwareUpload', 'RecoveryDevice'];\nconst filterForLog = (type, msg) => blacklist[type] === true ? '(redacted...)' : (blacklist[type] ?? []).reduce((prev, cur) => ({\n ...prev,\n [cur]: '(redacted...)'\n}), msg);\nconst logger = (0, debug_1.initLog)('DeviceCommands');\nconst isExpectedResponse = (response, expected) => (Array.isArray(expected) ? expected : expected.split('|')).includes(response.type);\nconst success = payload => ({\n success: true,\n payload\n});\nconst error = error => ({\n success: false,\n error\n});\nconst nestedError = cause => error(constants_1.ERRORS.nestError(cause));\nconst fail = msg => error((0, errors_groups_1.isErrorWithoutDeviceInteraction)(msg) ? new constants_1.ERRORS.TransportError(msg) : new Error(msg));\nclass DeviceCurrentSession {\n device;\n transport;\n session;\n disposed;\n callPromise;\n abortController;\n constructor(device, transport, session) {\n this.device = device;\n this.transport = transport;\n this.session = session;\n transport.deviceEvents.once(device.transportPath, e => {\n if (!this.disposed) {\n this.disposed = constants_1.ERRORS.TypedError(e.type === transport_1.TRANSPORT.DEVICE_DISCONNECTED ? 'Device_Disconnected' : 'Device_UsedElsewhere');\n this.abortController?.abort(this.disposed);\n }\n });\n }\n isDisposed() {\n return !!this.disposed;\n }\n async typedCall(type, expectedType, msg = {}) {\n const deviceSessionId = this.device.getThpState()?.sessionId || this.device?.features?.session_id;\n if (!allowedCallsBeforeInitialize.includes(type) && !deviceSessionId) {\n console.error('Runtime', `typedCall: Device not initialized when calling ${type}. call Initialize first`);\n }\n (0, schema_utils_1.Assert)(protobuf_1.MessagesSchema.MessageType.properties[type], msg);\n this.abortController = new AbortController();\n const {\n signal\n } = this.abortController;\n const abortPromise = new Promise(resolve => signal.addEventListener('abort', () => resolve(signal.reason)));\n const callPromise = this.callLoop(type, msg, abortPromise);\n this.callPromise = callPromise;\n const response = await callPromise;\n this.callPromise = undefined;\n this.abortController = undefined;\n if (!response.success) throw response.error;\n const {\n payload\n } = response;\n const receivedType = payload.type;\n if (isExpectedResponse(payload, expectedType)) {\n return payload;\n } else {\n await (0, utils_1.scheduleAction)(abort => this.transport.receive({\n session: this.session,\n protocol: this.device.protocol,\n thpState: this.device.getThpState(),\n signal: abort\n }), {\n timeout: 500\n }).catch(() => {});\n throw constants_1.ERRORS.TypedError('Runtime', `assertType: Response of unexpected type: ${receivedType}. Should be ${expectedType}`);\n }\n }\n needCancelWorkaround() {\n return this.transport.name === 'BridgeTransport' && !utils_1.versionUtils.isNewer(this.transport.version, '2.0.28');\n }\n async callLoop(type, msg, abortPromise) {\n let [name, data] = [type, msg];\n let pinUnlocked = false;\n while (true) {\n const timeout = this.device.possibleT1 && name === 'GetFeatures' ? 3_000 : undefined;\n const callPromise = this.call(name, data, {\n timeout\n });\n const [abortedDuringCall, response] = await Promise.race([callPromise.then(res => [false, res]), abortPromise.then(res => [true, nestedError(res)])]);\n if (name === 'ButtonAck' && abortedDuringCall && !this.disposed) {\n if (this.needCancelWorkaround()) {\n try {\n await (0, utils_1.resolveAfter)(1);\n await this.device.acquire();\n await this.device.getCurrentSession().cancelCall();\n await this.device.release();\n } catch {}\n } else {\n this.device.getThpState()?.sync('send', 'Cancel');\n await this.send('Cancel', {});\n }\n }\n await callPromise;\n if (this.disposed) return nestedError(this.disposed);\n if (!response.success) return response;\n const res = response.payload;\n switch (res.type) {\n case 'Failure':\n {\n const {\n code,\n message\n } = res.message;\n if (name === 'GetFeatures' && code === 'Failure_UnexpectedMessage') {\n [name, data] = ['Initialize', {}];\n break;\n }\n const err = message || code === 'Failure_FirmwareError' && 'Firmware installation failed' || code === 'Failure_ActionCancelled' && 'Action cancelled by user' || 'Failure_UnknownMessage';\n return error(new constants_1.ERRORS.TrezorError(code || 'Failure_UnknownCode', err));\n }\n case 'ButtonRequest':\n {\n if (res.message.code === 'ButtonRequest_PassphraseEntry') {\n this.device.emit(events_1.DEVICE.PASSPHRASE_ON_DEVICE);\n } else {\n this.device.emit(events_1.DEVICE.BUTTON, {\n device: this.device,\n payload: res.message\n });\n }\n [name, data] = ['ButtonAck', {}];\n break;\n }\n case 'PinMatrixRequest':\n {\n const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.PIN, {\n type: res.message.type\n }), abortPromise.then(nestedError)]);\n if (!promptRes.success) {\n const cancelRes = await this.call('Cancel', {});\n return cancelRes.success ? promptRes : cancelRes;\n }\n pinUnlocked = true;\n [name, data] = ['PinMatrixAck', {\n pin: promptRes.payload\n }];\n break;\n }\n case 'PassphraseRequest':\n {\n const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.PASSPHRASE, {}), abortPromise.then(nestedError)]);\n if (!promptRes.success) {\n const cancelRes = await this.call('Cancel', {});\n return cancelRes.success ? promptRes : cancelRes;\n }\n const payload = promptRes.payload.passphraseOnDevice ? {\n on_device: true\n } : {\n passphrase: promptRes.payload.value.normalize('NFKD')\n };\n [name, data] = ['PassphraseAck', payload];\n break;\n }\n case 'WordRequest':\n {\n const promptRes = await Promise.race([this.device.prompt(events_1.DEVICE.WORD, {\n type: res.message.type\n }), abortPromise.then(nestedError)]);\n if (!promptRes.success) {\n const cancelRes = await this.call('Cancel', {});\n return cancelRes.success ? promptRes : cancelRes;\n }\n [name, data] = ['WordAck', {\n word: promptRes.payload\n }];\n break;\n }\n default:\n {\n if (!this.disposed && pinUnlocked && !this.device.features.unlocked) {\n await this.device.getFeatures().catch(() => {});\n }\n return success(res);\n }\n }\n }\n }\n async call(name, data, options = {}) {\n if (this.disposed) return Promise.resolve(nestedError(this.disposed));\n logger.debug('Sending', name, filterForLog(name, data));\n const result = await this.transport.call({\n name,\n data,\n session: this.session,\n protocol: this.device.protocol,\n thpState: this.device.getThpState(),\n ...options\n });\n if (result.success) {\n const {\n type,\n message\n } = result.payload;\n logger.debug('Received', type, filterForLog(type, message));\n } else {\n logger.warn('Received transport error', result.error, result.message);\n }\n return result.success ? success(result.payload) : fail(result.message || result.error);\n }\n async send(name, data, options = {}) {\n if (this.disposed) return Promise.resolve(nestedError(this.disposed));\n const result = await this.transport.send({\n name,\n data,\n session: this.session,\n protocol: this.device.protocol,\n thpState: this.device.getThpState(),\n ...options\n });\n return result.success ? success(result.payload) : fail(result.message || result.error);\n }\n async receive(options = {}) {\n if (this.disposed) return Promise.resolve(nestedError(this.disposed));\n const result = await this.transport.receive({\n session: this.session,\n protocol: this.device.protocol,\n thpState: this.device.getThpState(),\n ...options\n });\n return result.success ? success(result.payload) : fail(result.message || result.error);\n }\n cancelCall() {\n return this.call('Cancel', {});\n }\n async abort(reason) {\n this.abortController?.abort(reason);\n await this.callPromise;\n this.disposed = reason;\n }\n}\nexports.DeviceCurrentSession = DeviceCurrentSession;\n//# sourceMappingURL=DeviceCurrentSession.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calculateRevisionForDevice = void 0;\nconst versionUtils_1 = require(\"@trezor/utils/lib/versionUtils\");\nconst calculateRevisionForDevice = ({\n commitRevision,\n version\n}) => {\n if ((0, versionUtils_1.isNewer)(version, '2.4.0')) {\n return commitRevision;\n }\n if ((0, versionUtils_1.isNewer)(version, '2.2.0')) {\n return commitRevision.slice(0, 9);\n }\n if ((0, versionUtils_1.isNewer)(version, '2.1.8')) {\n return commitRevision;\n }\n if ((0, versionUtils_1.isNewer)(version, '2.0.0')) {\n return commitRevision.slice(0, 8);\n }\n return commitRevision;\n};\nexports.calculateRevisionForDevice = calculateRevisionForDevice;\n//# sourceMappingURL=calculateRevisionForDevice.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkFirmwareRevision = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst calculateRevisionForDevice_1 = require(\"./calculateRevisionForDevice\");\nconst firmwareInfo_1 = require(\"../data/firmwareInfo\");\nconst assetUtils_1 = require(\"../utils/assetUtils\");\nconst isNotFoundError = e => e instanceof assetUtils_1.HttpRequestError && e.response.status === 404;\nconst isNodeJSOfflineError = e => ['FetchError', 'AbortError'].includes(e.name);\nconst isReactNativeOfflineError = e => e.name === 'TypeError' && e.message.includes('Network request failed');\nconst isAbortControllerTimeout = e => e.message.includes('Aborted') || e.name === 'AbortError' || e.name === 'TimeoutError' && e.message.includes('signal timed out');\nconst isOfflineError = e => {\n if (!(e instanceof Error)) return false;\n return isNodeJSOfflineError(e) || isReactNativeOfflineError(e) || isAbortControllerTimeout(e);\n};\nconst failFirmwareRevisionCheck = (error, errorPayload) => ({\n success: false,\n error,\n ...(errorPayload ? {\n errorPayload\n } : null)\n});\nconst doRevisionsMatch = ({\n deviceRevision,\n expectedCommitRevision,\n firmwareVersion\n}) => {\n if (deviceRevision === null) {\n return false;\n }\n const adjustedExpected = (0, calculateRevisionForDevice_1.calculateRevisionForDevice)({\n commitRevision: expectedCommitRevision,\n version: firmwareVersion\n });\n return adjustedExpected === deviceRevision;\n};\nconst checkFirmwareRevision = async ({\n firmwareVersion,\n internalModel,\n deviceRevision,\n expectedRevision,\n firmwareType\n}) => {\n if (expectedRevision === undefined) {\n if (!utils_1.versionUtils.isVersionArray(firmwareVersion)) {\n return failFirmwareRevisionCheck('firmware-version-unknown');\n }\n try {\n const onlineRelease = await (0, firmwareInfo_1.getOnlineReleaseByVersion)(internalModel, firmwareVersion, firmwareType);\n if (onlineRelease?.firmware_revision === undefined) {\n return failFirmwareRevisionCheck('firmware-version-unknown');\n }\n if (!doRevisionsMatch({\n deviceRevision,\n expectedCommitRevision: onlineRelease.firmware_revision,\n firmwareVersion\n })) {\n return failFirmwareRevisionCheck('revision-mismatch');\n }\n return {\n success: true\n };\n } catch (e) {\n if (isNotFoundError(e)) return failFirmwareRevisionCheck('firmware-version-unknown');\n return isOfflineError(e) ? failFirmwareRevisionCheck('cannot-perform-check-offline') : failFirmwareRevisionCheck('other-error', (0, utils_1.serializeError)(e));\n }\n }\n if (!doRevisionsMatch({\n deviceRevision,\n expectedCommitRevision: expectedRevision,\n firmwareVersion\n })) {\n return failFirmwareRevisionCheck('revision-mismatch');\n }\n return {\n success: true\n };\n};\nexports.checkFirmwareRevision = checkFirmwareRevision;\n//# sourceMappingURL=checkFirmwareRevision.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkFirmwareHash = void 0;\nconst crypto_1 = require(\"crypto\");\nconst utils_1 = require(\"@trezor/utils\");\nconst firmware_1 = require(\"../../api/firmware\");\nconst DataManager_1 = require(\"../../data/DataManager\");\nconst firmwareInfo_1 = require(\"../../data/firmwareInfo\");\nconst firmwareUtils_1 = require(\"../../utils/firmwareUtils\");\nconst createFailResult = (error, errorPayload) => ({\n success: false,\n error,\n errorPayload\n});\nconst checkFirmwareHash = async ({\n device,\n logger\n}) => {\n const enabled = DataManager_1.DataManager.getSettings('enableFirmwareHashCheck');\n if (!enabled) return createFailResult('check-skipped');\n const firmwareVersion = device.getVersion();\n if (firmwareVersion === undefined || !device.features || device.features.bootloader_mode) {\n return null;\n }\n const firmwareType = (0, firmwareUtils_1.getFirmwareType)(device.features);\n const release = await (0, firmwareInfo_1.getReleaseByVersion)(device.features, firmwareVersion, firmwareType);\n if (!release) return createFailResult('unknown-release');\n const firmwareLocation = (0, firmwareInfo_1.getFirmwareLocation)({\n firmwareVersion,\n remotePath: release.url,\n deviceModel: device.features.internal_model,\n firmwareType: (0, firmwareUtils_1.getFirmwareType)(device.features)\n });\n const {\n baseUrl,\n path\n } = firmwareLocation;\n const timeoutThresholdsPerModel = DataManager_1.DataManager.getSettings('firmwareHashCheckTimeouts');\n if (firmwareVersion === undefined || !device.features || device.features.bootloader_mode) {\n return null;\n }\n const checkSupported = !device.unavailableCapabilities.getFirmwareHash;\n if (!checkSupported) return createFailResult('check-unsupported');\n const firmwareBinary = await (0, firmware_1.getBinaryOptional)({\n baseUrl,\n path,\n release\n });\n if (firmwareBinary === null) {\n return createFailResult('check-unsupported');\n }\n if (firmwareBinary.binary.byteLength < 200) {\n logger.warn(`Firmware binary for hash check suspiciously small (< 200 b)`);\n return createFailResult('check-unsupported');\n }\n const strippedBinary = (0, firmware_1.stripFwHeaders)(firmwareBinary.binary);\n const {\n hash: expectedHash,\n challenge\n } = (0, firmware_1.calculateFirmwareHash)({\n internal_model: device.features.internal_model,\n firmwareVersion,\n fw: strippedBinary,\n key: (0, crypto_1.randomBytes)(32)\n });\n try {\n const ts = performance.now();\n const deviceResponse = await device.getCurrentSession().typedCall('GetFirmwareHash', 'FirmwareHash', {\n challenge\n });\n if (!deviceResponse?.message?.hash) {\n return createFailResult('other-error', 'Device response is missing hash');\n }\n if (deviceResponse.message.hash !== expectedHash) {\n return createFailResult('hash-mismatch');\n }\n const duration = performance.now() - ts;\n logger.debug('GetFirmwareHash time', duration);\n const timeoutThreshold = timeoutThresholdsPerModel?.[device.features.internal_model];\n if (timeoutThreshold !== undefined && duration > timeoutThreshold) {\n return createFailResult('takes-too-long');\n }\n return {\n success: true\n };\n } catch (errorPayload) {\n return createFailResult('other-error', (0, utils_1.serializeError)(errorPayload));\n }\n};\nexports.checkFirmwareHash = checkFirmwareHash;\n//# sourceMappingURL=checkFirmwareHash.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkFirmwareHashWithRetries = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../../constants\");\nconst checkFirmwareHash_1 = require(\"./checkFirmwareHash\");\nconst PROBE_CHECK_TIME_RETRIES = 4;\nconst probeCheckTime = async context => {\n for (let i = 0; i < PROBE_CHECK_TIME_RETRIES; i++) {\n const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context);\n if (result !== null && (result.success || result.error !== 'takes-too-long')) {\n context.device.setAuthenticityChecks(result);\n return;\n }\n }\n};\nconst checkFirmwareHashWithRetries = async context => {\n const lastResult = context.device.getAuthenticityChecks().firmwareHash;\n const notDoneYet = lastResult === null;\n const attemptsDone = lastResult?.attemptCount ?? 0;\n if (attemptsDone >= constants_1.FIRMWARE.HASH_CHECK_MAX_ATTEMPTS) return;\n const wasError = lastResult !== null && !lastResult.success;\n const wasErrorRetriable = wasError && (0, utils_1.isArrayMember)(lastResult.error, constants_1.FIRMWARE.HASH_CHECK_RETRIABLE_ERRORS);\n const lastErrorPayload = wasError ? lastResult?.errorPayload : null;\n if (notDoneYet || wasErrorRetriable) {\n const result = await (0, checkFirmwareHash_1.checkFirmwareHash)(context);\n context.device.setAuthenticityChecks(result);\n if (result === null) return;\n result.attemptCount = attemptsDone + 1;\n if (!result.success && result.error === 'takes-too-long') {\n await probeCheckTime(context);\n }\n if (result.success && lastErrorPayload) {\n result.warningPayload = {\n lastErrorPayload\n };\n }\n }\n};\nexports.checkFirmwareHashWithRetries = checkFirmwareHashWithRetries;\n//# sourceMappingURL=checkFirmwareHashWithRetries.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handshakeCancel = void 0;\nconst protocol_1 = require(\"@trezor/protocol\");\nconst transport_1 = require(\"@trezor/transport\");\nconst utils_1 = require(\"@trezor/utils\");\nconst errors_1 = require(\"../../constants/errors\");\nconst CANCEL_TIMEOUT = 1_000;\nconst ATTEMPTS_LIMIT = 10;\nconst isLegacyBridge = transport => transport.name === 'BridgeTransport' && !utils_1.versionUtils.isNewerOrEqual(transport.version, '3.0.0');\nconst handshakeCancel = async ({\n device,\n logger,\n signal\n}) => {\n if (device.features || device.getThpState()?.properties) {\n return;\n }\n const timeout = device.possibleT1 ? CANCEL_TIMEOUT : undefined;\n logger?.debug('handshake Cancel start');\n const send = await device.getCurrentSession().send('Cancel', {}, {\n signal,\n timeout\n });\n if (!send.success) {\n logger?.debug(`handshake Cancel send error ${send.error}`);\n return;\n }\n logger?.debug('handshake Cancel sent');\n for (let attempt = 0; attempt < ATTEMPTS_LIMIT; ++attempt) {\n logger?.debug(`handshake Cancel read attempt ${attempt}`);\n const result = await device.getCurrentSession().receive({\n signal,\n timeout\n });\n if (!result.success && result.error.message === transport_1.TRANSPORT_ERROR.ABORTED_BY_TIMEOUT) {\n if (isLegacyBridge(device.transport)) {\n await (0, utils_1.resolveAfter)(501);\n }\n await device.acquire();\n }\n if (!result.success && result.error.message !== protocol_1.PROTOCOL_MALFORMED) {\n logger?.debug(`handshake Cancel read error: ${result.error}`);\n return;\n } else if (result.success) {\n logger?.debug(`handshake Cancel read success: ${result.payload.type}`);\n if (result.payload.type === 'Failure' && result.payload.message.code === 'Failure_InvalidProtocol') {\n logger?.debug(`handshake Cancel protocol v2 detected`);\n await device.setupThp();\n }\n if (result.payload.type === 'Failure' && result.payload.message.code === 'Failure_Busy') {\n throw (0, errors_1.TypedError)(result.payload.message.code, result.payload.message.message);\n }\n return;\n }\n }\n logger?.debug(`handshake Cancel attempts limit reached`);\n};\nexports.handshakeCancel = handshakeCancel;\n//# sourceMappingURL=handshake.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ensureInternalModelFeature = exports.parseRevision = exports.getUnavailableCapabilities = exports.parseCapabilities = void 0;\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst utils_1 = require(\"@trezor/utils\");\nconst config_1 = require(\"../data/config\");\nconst DEFAULT_CAPABILITIES_T1 = ['Capability_Bitcoin', 'Capability_Bitcoin_like', 'Capability_Crypto', 'Capability_Ethereum', 'Capability_NEM', 'Capability_Stellar', 'Capability_U2F'];\nconst DEFAULT_CAPABILITIES_TT = ['Capability_Bitcoin', 'Capability_Bitcoin_like', 'Capability_Binance', 'Capability_Cardano', 'Capability_Crypto', 'Capability_EOS', 'Capability_Ethereum', 'Capability_Monero', 'Capability_NEM', 'Capability_Ripple', 'Capability_Stellar', 'Capability_Tezos', 'Capability_U2F'];\nconst parseCapabilities = features => {\n if (!features || features.firmware_present === false) return [];\n if (!features.capabilities || !features.capabilities.length) {\n return features.major_version === 1 ? DEFAULT_CAPABILITIES_T1 : DEFAULT_CAPABILITIES_TT;\n }\n return features.capabilities;\n};\nexports.parseCapabilities = parseCapabilities;\nconst getUnavailableCapabilities = (features, coins) => {\n const {\n capabilities\n } = features;\n const list = {};\n if (!capabilities) return list;\n const fw = [features.major_version, features.minor_version, features.patch_version].join('.');\n const key = features.internal_model;\n const supported = coins.filter(info => {\n if (!info.support || info.support[key] === false) {\n const shortcut = info.shortcut.toLowerCase();\n const occurrences = coins.filter(coin => shortcut == coin.shortcut.toLowerCase());\n const allUnsupported = occurrences.every(info2 => !info2.support || info2.support[key] === false);\n if (allUnsupported) {\n list[shortcut] = 'no-support';\n }\n return false;\n }\n return true;\n });\n const unavailable = supported.filter(info => {\n if (info.type === 'bitcoin') {\n if (info.name === 'Bitcoin' || info.name === 'Testnet' || info.name === 'Regtest') {\n return !capabilities.includes('Capability_Bitcoin');\n }\n return !capabilities.includes('Capability_Bitcoin_like');\n }\n if (info.type === 'ethereum') {\n return !capabilities.includes('Capability_Ethereum');\n }\n if (info.type === 'nem') {\n return !capabilities.includes('Capability_NEM');\n }\n if (info.shortcut === 'BNB' && info.type === 'misc') {\n return !capabilities.includes('Capability_Binance');\n }\n if (info.shortcut === 'ADA' || info.shortcut === 'tADA') {\n return !capabilities.includes('Capability_Cardano');\n }\n if (info.shortcut === 'XRP' || info.shortcut === 'tXRP') {\n return !capabilities.includes('Capability_Ripple');\n }\n if (info.shortcut === 'XLM' || info.shortcut === 'tXLM') {\n return !capabilities.includes('Capability_Stellar');\n }\n if (info.shortcut === 'SOL' || info.shortcut === 'DSOL') {\n return !capabilities.includes('Capability_Solana');\n }\n return !(0, utils_1.isArrayMember)(`Capability_${info.name}`, capabilities);\n });\n unavailable.forEach(info => {\n list[info.shortcut.toLowerCase()] = 'no-capability';\n });\n supported.filter(info => !unavailable.includes(info)).forEach(info => {\n const supportVersion = info.support[key];\n if (typeof supportVersion === 'string' && utils_1.versionUtils.isNewer(supportVersion, fw)) {\n list[info.shortcut.toLowerCase()] = 'update-required';\n unavailable.push(info);\n }\n });\n config_1.config.supportedFirmware.forEach(s => {\n if (!s.capabilities) return;\n const min = s.min ? s.min[key] : null;\n const max = s.max ? s.max[key] : null;\n if (min && (min === '0' || utils_1.versionUtils.isNewer(min, fw))) {\n const value = min === '0' ? 'no-support' : 'update-required';\n s.capabilities.forEach(m => {\n list[m] = value;\n });\n }\n if (max && !utils_1.versionUtils.isNewerOrEqual(max, fw)) {\n s.capabilities.forEach(m => {\n list[m] = 'trezor-connect-outdated';\n });\n }\n });\n return list;\n};\nexports.getUnavailableCapabilities = getUnavailableCapabilities;\nconst parseRevision = features => {\n const {\n revision\n } = features;\n if (!revision) return null;\n if (/^(?=.*[a-f])([a-f0-9]*)$/gi.test(revision)) return revision;\n const revisionUtf8 = Buffer.from(revision, 'hex').toString('utf-8');\n return /^([a-f0-9])*$/gi.test(revisionUtf8) ? revisionUtf8 : revision;\n};\nexports.parseRevision = parseRevision;\nconst ensureInternalModelFeature = model => {\n switch (model.toUpperCase()) {\n case 'T':\n return device_utils_1.DeviceModelInternal.T2T1;\n case '1':\n return device_utils_1.DeviceModelInternal.T1B1;\n default:\n return device_utils_1.DeviceModelInternal.UNKNOWN;\n }\n};\nexports.ensureInternalModelFeature = ensureInternalModelFeature;\n//# sourceMappingURL=deviceFeaturesUtils.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Device = void 0;\nconst device_utils_1 = require(\"@trezor/device-utils\");\nconst protocol_1 = require(\"@trezor/protocol\");\nconst transport_1 = require(\"@trezor/transport\");\nconst utils_1 = require(\"@trezor/utils\");\nconst DeviceCommands_1 = require(\"./DeviceCommands\");\nconst constants_1 = require(\"../constants\");\nconst DeviceCurrentSession_1 = require(\"./DeviceCurrentSession\");\nconst checkFirmwareRevision_1 = require(\"./checkFirmwareRevision\");\nconst thp_1 = require(\"./thp\");\nconst checkFirmwareHashWithRetries_1 = require(\"./workflow/checkFirmwareHashWithRetries\");\nconst coinInfo_1 = require(\"../data/coinInfo\");\nconst firmwareInfo_1 = require(\"../data/firmwareInfo\");\nconst events_1 = require(\"../events\");\nconst types_1 = require(\"../types\");\nconst handshake_1 = require(\"./workflow/handshake\");\nconst assetUtils_1 = require(\"../utils/assetUtils\");\nconst debug_1 = require(\"../utils/debug\");\nconst deviceFeaturesUtils_1 = require(\"../utils/deviceFeaturesUtils\");\nconst firmwareUtils_1 = require(\"../utils/firmwareUtils\");\nconst _log = (0, debug_1.initLog)('Device');\nclass Device extends utils_1.TypedEmitter {\n transport;\n thp;\n descriptor;\n sessionAcquired;\n _protocol;\n get protocol() {\n return this._protocol;\n }\n getThpState() {\n return this.thp;\n }\n unreadableError;\n _firmwareStatus;\n get firmwareStatus() {\n return this._firmwareStatus;\n }\n _currentRelease;\n get currentRelease() {\n return this._currentRelease;\n }\n _firmwareReleaseConfigInfo;\n get firmwareReleaseConfigInfo() {\n return this._firmwareReleaseConfigInfo;\n }\n _features;\n get features() {\n return this._features;\n }\n wasUsedElsewhere = false;\n acquirePromise;\n releasePromise;\n runAbort;\n runPromise;\n keepTransportSession = false;\n currentSession;\n instance = 0;\n state = [];\n stateStorage = undefined;\n busy;\n _unavailableCapabilities = {};\n get unavailableCapabilities() {\n return this._unavailableCapabilities;\n }\n _firmwareType;\n get firmwareType() {\n return this._firmwareType;\n }\n get possibleHIDdevice() {\n return this.descriptor.type === 0 || this.descriptor.type === 2;\n }\n get possibleT1() {\n return (this.descriptor.type ?? 0) <= 2;\n }\n name = 'Trezor';\n color;\n availableTranslations = {};\n authenticityChecks = {\n firmwareRevision: null,\n firmwareHash: null\n };\n uniquePath;\n lifecycle = new utils_1.TypedEmitter();\n sessionDfd;\n constructor({\n id,\n transport,\n descriptor\n }) {\n super();\n this._protocol = protocol_1.v1;\n this.uniquePath = id;\n this.transport = transport;\n this.descriptor = {\n id: descriptor.id,\n apiType: descriptor.apiType,\n type: descriptor.type,\n path: descriptor.path\n };\n this.sessionAcquired = null;\n transport.on(transport_1.TRANSPORT.STOPPED, this.onTransportStopped);\n transport.deviceEvents.on(this.descriptor.path, this.onTransportDeviceEvent);\n }\n get transportPath() {\n return this.descriptor.path;\n }\n onTransportStopped = () => this.disconnect();\n onTransportDeviceEvent = event => {\n switch (event.type) {\n case transport_1.TRANSPORT.DEVICE_SESSION_CHANGED:\n return this.updateDescriptor(event.descriptor);\n case transport_1.TRANSPORT.DEVICE_REQUEST_RELEASE:\n return this.usedElsewhere();\n case transport_1.TRANSPORT.DEVICE_DISCONNECTED:\n {\n return this.disconnect();\n }\n }\n };\n getSessionChangePromise() {\n if (!this.sessionDfd) {\n this.sessionDfd = (0, utils_1.createDeferred)();\n this.sessionDfd.promise.catch(() => {}).finally(() => {\n this.sessionDfd = undefined;\n });\n }\n return this.sessionDfd.promise;\n }\n async waitAndCompareSession(response, sessionPromise) {\n if (response.success) {\n try {\n if ((await sessionPromise) !== response.payload) {\n return {\n success: false,\n error: transport_1.TRANSPORT_ERROR.SESSION_WRONG_PREVIOUS\n };\n }\n } catch {\n return {\n success: false,\n error: transport_1.TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION\n };\n }\n }\n return response;\n }\n acquire() {\n const sessionPromise = this.getSessionChangePromise();\n const previous = this.transport.getDescriptor(this.descriptor.path)?.session ?? null;\n this.acquirePromise = this.transport.acquire({\n input: {\n path: this.descriptor.path,\n previous\n }\n }).then(result => this.waitAndCompareSession(result, sessionPromise)).then(result => {\n if (result.success) {\n this.wasUsedElsewhere = false;\n this.sessionAcquired = result.payload;\n this.currentSession = new DeviceCurrentSession_1.DeviceCurrentSession(this, this.transport, this.sessionAcquired);\n return result;\n } else {\n throw new Error(result.error);\n }\n }).finally(() => {\n this.acquirePromise = undefined;\n });\n return this.acquirePromise;\n }\n reset() {\n _log.info(`Resetting Features and ThpState`);\n this._features = undefined;\n this._protocol = protocol_1.v1;\n this.thp?.resetState();\n this.thp = undefined;\n }\n setBusy(value) {\n this.busy = value;\n }\n release() {\n if (!this.sessionAcquired || this.keepTransportSession || this.releasePromise) {\n return;\n }\n const sessionPromise = this.getSessionChangePromise();\n this.releasePromise = this.transport.release({\n session: this.sessionAcquired,\n path: this.descriptor.path\n }).then(result => this.waitAndCompareSession(result, sessionPromise)).then(result => {\n if (result.success) {\n this.sessionAcquired = null;\n }\n return result;\n }).finally(() => {\n this.releasePromise = undefined;\n });\n return this.releasePromise;\n }\n async setupThp() {\n _log.info('Setup THP device');\n this._protocol = protocol_1.v2;\n if (this.transport.name === 'BridgeTransport' && !utils_1.versionUtils.isNewerOrEqual(this.transport.version, '3.0.0')) {\n this.unreadableError = 'THP incompatible with bridge ' + this.transport.version;\n } else {\n try {\n await this.transport.loadMessages('thp', protocol_1.thp.getProtobufDefinitions);\n this.thp = new protocol_1.thp.ThpState();\n } catch (error) {\n this.unreadableError = error.message;\n }\n }\n }\n async handshake() {\n if (this.isUsedElsewhere()) {\n return true;\n }\n try {\n await this.run();\n } catch (error) {\n _log.warn(`device.run error.message: ${error.message}, code: ${error.code}`);\n if (error.code === 'Device_NotFound' || error.code === 'Device_Disconnected' || error.message === transport_1.TRANSPORT_ERROR.DEVICE_NOT_FOUND || error.message === transport_1.TRANSPORT_ERROR.DEVICE_DISCONNECTED_DURING_ACTION || error.message === transport_1.TRANSPORT_ERROR.HTTP_ERROR) {\n return false;\n }\n if (this.possibleHIDdevice && error.message === transport_1.TRANSPORT_ERROR.INTERFACE_UNABLE_TO_OPEN_DEVICE || error.message === transport_1.TRANSPORT_ERROR.LIBUSB_ERROR_ACCESS) {\n this.unreadableError = error.message;\n }\n }\n return true;\n }\n async updateDescriptor(descriptor) {\n this.sessionDfd?.resolve(descriptor.session);\n await Promise.all([this.acquirePromise, this.releasePromise]);\n if (descriptor.session && descriptor.session !== this.sessionAcquired) {\n this.usedElsewhere();\n }\n if (!descriptor.session) {\n this.keepTransportSession = false;\n }\n this.lifecycle.emit(events_1.DEVICE.CHANGED);\n }\n run(fn, options = {}) {\n if (this.runPromise) {\n _log.warn('Previous call is still running');\n throw constants_1.ERRORS.TypedError('Device_CallInProgress');\n }\n const wasUnacquired = this.isUnacquired();\n this.runAbort = new AbortController();\n const {\n signal\n } = this.runAbort;\n this.runPromise = Promise.race([this._runInner(fn, options, signal), new Promise((_, reject) => {\n signal.addEventListener('abort', () => reject(signal.reason));\n })]).catch(async err => {\n this.keepTransportSession = false;\n await this.acquirePromise;\n await this.release();\n throw err;\n }).finally(() => {\n this.runAbort = undefined;\n this.runPromise = undefined;\n }).then(() => {\n if (wasUnacquired && !this.isUnacquired()) {\n this.lifecycle.emit(events_1.DEVICE.CONNECT);\n }\n });\n return this.runPromise;\n }\n async interrupt(reason) {\n await (0, thp_1.abortThpWorkflow)(this);\n await this.currentSession?.abort(reason);\n this.runAbort?.abort(reason);\n await this.currentRun;\n }\n get currentRun() {\n return this.runPromise?.catch(() => {});\n }\n usedElsewhere() {\n this.wasUsedElsewhere = true;\n if (!this.sessionAcquired) {\n return;\n }\n this.transport.releaseDevice(this.sessionAcquired);\n this.sessionAcquired = null;\n _log.debug('interruptionFromOutside');\n this.runAbort?.abort(constants_1.ERRORS.TypedError('Device_UsedElsewhere'));\n }\n async _runInner(fn, options, abortSignal) {\n if (this.releasePromise) {\n await this.releasePromise;\n }\n const acquireNeeded = !this.isUsedHere() || this.currentSession?.isDisposed();\n if (acquireNeeded) {\n await this.acquire();\n }\n if (abortSignal.aborted) throw abortSignal.reason;\n const {\n staticSessionId,\n deriveCardano\n } = this.getState() || {};\n if (acquireNeeded || !staticSessionId || !deriveCardano && options.useCardanoDerivation) {\n try {\n await (0, handshake_1.handshakeCancel)({\n device: this,\n logger: _log,\n signal: abortSignal\n });\n if (this.protocol.name === 'v2') {\n const withInteraction = !!fn;\n this.busy = await (0, thp_1.getThpChannel)(this, withInteraction);\n if (!this.busy) {\n await this.getFeatures();\n }\n } else if (fn) {\n await this.initialize(!!options.useCardanoDerivation);\n } else {\n await this.getFeatures();\n }\n } catch (error) {\n _log.warn('Device._runInner error: ', error.message);\n if (error.code === 'Failure_Busy') {\n this.busy = 'busy';\n }\n if (error.code === 'ThpDeviceLocked') {\n this.busy = 'pin-locked';\n }\n if (error.code === 'Device_ThpPairingTagInvalid') {\n return Promise.reject(error);\n }\n return Promise.reject(constants_1.ERRORS.TypedError('Device_InitializeFailed', `Initialize failed: ${error.message}${error.code ? `, code: ${error.code}` : ''}`));\n }\n }\n if (!options.skipFirmwareChecks) {\n await (0, checkFirmwareHashWithRetries_1.checkFirmwareHashWithRetries)({\n device: this,\n logger: _log\n });\n await this.checkFirmwareRevisionWithRetries();\n }\n if (!options.skipLanguageChecks && this.features?.language && !this.features.language_version_matches && this.atLeast('2.7.0')) {\n _log.info('language version mismatch. silently updating...');\n try {\n await this.changeLanguage({\n language: this.features.language\n });\n } catch (err) {\n _log.error('change language failed silently', err);\n }\n }\n if (options.keepSession) {\n this.keepTransportSession = true;\n }\n if (fn) {\n await fn();\n if (!options.skipFinalReload) {\n await this.getFeatures();\n }\n }\n if (!this.keepTransportSession && typeof options.keepSession !== 'boolean' || options.keepSession === false) {\n this.keepTransportSession = false;\n await this.release();\n }\n }\n getCurrentSession() {\n if (!this.currentSession) {\n throw constants_1.ERRORS.TypedError('Runtime', `Device: commands not defined`);\n }\n return this.currentSession;\n }\n getCommands() {\n return (0, DeviceCommands_1.DeviceCommands)(this.getCurrentSession());\n }\n setInstance(instance = 0) {\n if (this.instance !== instance) {\n if (this.keepTransportSession) {\n this.sessionAcquired = null;\n this.keepTransportSession = false;\n }\n }\n this.instance = instance;\n }\n getInstance() {\n return this.instance;\n }\n getState() {\n return this.state[this.instance];\n }\n setState(state) {\n if (!state) {\n delete this.state[this.instance];\n } else {\n const prevState = this.state[this.instance];\n const newState = {\n ...prevState,\n ...state\n };\n this.state[this.instance] = newState;\n this.stateStorage?.saveState(this, newState);\n }\n }\n async initialize(useCardanoDerivation) {\n let payload;\n if (this.features) {\n const {\n sessionId,\n deriveCardano\n } = this.getState() || {};\n payload = {\n derive_cardano: deriveCardano || useCardanoDerivation\n };\n if (sessionId) {\n payload.session_id = sessionId;\n }\n }\n const {\n message\n } = await this.getCurrentSession().typedCall('Initialize', 'Features', payload);\n this._updateFeatures(message);\n this._updateCurrentRelease(message);\n this.setState({\n deriveCardano: payload?.derive_cardano\n });\n }\n initStorage(storage) {\n this.stateStorage = storage;\n this.setState(storage.loadState(this));\n }\n async getFeatures() {\n const {\n message\n } = await this.getCurrentSession().typedCall('GetFeatures', 'Features', {});\n this._updateFeatures(message);\n this._updateCurrentRelease(message);\n }\n getAuthenticityChecks() {\n return this.authenticityChecks;\n }\n setAuthenticityChecks(firmwareHash) {\n this.authenticityChecks.firmwareHash = firmwareHash;\n }\n async checkFirmwareRevisionWithRetries() {\n const lastResult = this.authenticityChecks.firmwareRevision;\n const notDoneYet = lastResult === null;\n const wasError = lastResult !== null && !lastResult.success;\n const wasErrorRetriable = wasError && (0, utils_1.isArrayMember)(lastResult.error, constants_1.FIRMWARE.REVISION_CHECK_RETRIABLE_ERRORS);\n if (notDoneYet || wasErrorRetriable) {\n await this.checkFirmwareRevision();\n }\n }\n async checkFirmwareRevision() {\n const firmwareVersion = this.getVersion();\n if (!firmwareVersion || !this.features || !this.firmwareType) {\n return;\n }\n if (this.features && this.features.bootloader_mode === true) {\n return;\n }\n const release = (0, assetUtils_1.getReleaseAsset)(this.features.internal_model, firmwareVersion, this.firmwareType);\n const result = await (0, checkFirmwareRevision_1.checkFirmwareRevision)({\n internalModel: this.features.internal_model,\n deviceRevision: this.features.revision,\n firmwareVersion,\n expectedRevision: release?.firmware_revision,\n firmwareType: this.firmwareType\n });\n this.authenticityChecks = {\n ...this.authenticityChecks,\n firmwareRevision: result\n };\n }\n async changeLanguage({\n language,\n binary\n }) {\n if (language === 'en-US') {\n return this._uploadTranslationData(null);\n }\n if (binary) {\n return this._uploadTranslationData(binary);\n }\n const version = this.getVersion();\n if (!version) {\n throw constants_1.ERRORS.TypedError('Runtime', 'changeLanguage: device version unknown');\n }\n if (!this.firmwareType) {\n throw constants_1.ERRORS.TypedError('Runtime', 'changeLanguage: firmware type unknown');\n }\n if (!this._currentRelease) {\n throw constants_1.ERRORS.TypedError('Runtime', 'changeLanguage: release not found');\n }\n const languageBinPath = this._currentRelease.translations[language];\n const downloadedBinary = await (0, firmwareInfo_1.getLanguage)(languageBinPath);\n if (!downloadedBinary) {\n throw constants_1.ERRORS.TypedError('Runtime', 'changeLanguage: translation not found');\n }\n let dataToSend;\n if (Buffer.isBuffer(downloadedBinary)) {\n dataToSend = new Uint8Array(downloadedBinary).buffer;\n } else {\n dataToSend = downloadedBinary;\n }\n return this._uploadTranslationData(dataToSend);\n }\n async _uploadTranslationData(payload) {\n if (payload === null) {\n const response = await this.getCurrentSession().typedCall('ChangeLanguage', ['Success'], {\n data_length: 0\n });\n return response.message;\n }\n const length = payload.byteLength;\n let response = await this.getCurrentSession().typedCall('ChangeLanguage', ['DataChunkRequest', 'Success'], {\n data_length: length\n });\n while (response.type !== 'Success') {\n const start = response.message.data_offset;\n const end = response.message.data_offset + response.message.data_length;\n const chunk = payload.slice(start, end);\n response = await this.getCurrentSession().typedCall('DataChunkAck', ['DataChunkRequest', 'Success'], {\n data_chunk: Buffer.from(chunk).toString('hex')\n });\n }\n return response.message;\n }\n async _updateCurrentRelease(feat) {\n const {\n firmwareVersion\n } = (0, firmwareInfo_1.getCurrentVersion)(feat);\n const newFirmwareType = (0, firmwareUtils_1.getFirmwareType)(feat);\n if (!firmwareVersion) {\n return;\n }\n if (this._currentRelease && newFirmwareType === this.firmwareType && utils_1.versionUtils.isEqual(this._currentRelease.version, firmwareVersion)) {\n return;\n }\n const release = await (0, firmwareInfo_1.getReleaseByVersion)(feat, firmwareVersion, newFirmwareType);\n this._currentRelease = release;\n this.availableTranslations = this._currentRelease?.translations ?? {};\n }\n _updateFeatures(feat) {\n const capabilities = (0, deviceFeaturesUtils_1.parseCapabilities)(feat);\n feat.capabilities = capabilities;\n if (this.features && this.features.session_id && !feat.session_id) {\n feat.session_id = this.features.session_id;\n }\n feat.unlocked = feat.unlocked ?? true;\n const revision = (0, deviceFeaturesUtils_1.parseRevision)(feat);\n feat.revision = revision;\n if (!feat.model && feat.major_version === 1) {\n feat.model = '1';\n }\n if (!feat.internal_model || !device_utils_1.DeviceModelInternal[feat.internal_model]) {\n feat.internal_model = (0, deviceFeaturesUtils_1.ensureInternalModelFeature)(feat.model);\n }\n const version = this.getVersion();\n const newVersion = [feat.major_version, feat.minor_version, feat.patch_version];\n if (!version || !utils_1.versionUtils.isEqual(version, newVersion)) {\n if (version) {\n this.emit(events_1.DEVICE.FIRMWARE_VERSION_CHANGED, {\n oldVersion: version,\n newVersion,\n device: this.toMessageObject()\n });\n }\n this._unavailableCapabilities = (0, deviceFeaturesUtils_1.getUnavailableCapabilities)(feat, (0, coinInfo_1.getAllNetworks)());\n this._firmwareStatus = (0, firmwareInfo_1.getFirmwareStatus)(feat, (0, firmwareUtils_1.getFirmwareType)(feat));\n this._firmwareReleaseConfigInfo = (0, firmwareInfo_1.getFirmwareReleaseConfigInfo)(feat, (0, firmwareUtils_1.getFirmwareType)(feat));\n this._currentRelease = (0, assetUtils_1.getReleaseAsset)(feat.internal_model, newVersion, (0, firmwareUtils_1.getFirmwareType)(feat));\n this.availableTranslations = this._currentRelease?.translations ?? {};\n }\n this._features = feat;\n this._firmwareType = (0, firmwareUtils_1.getFirmwareType)(feat);\n const deviceInfo = device_utils_1.models[feat.internal_model] ?? {\n name: `Unknown ${feat.internal_model}`,\n colors: {}\n };\n this.name = deviceInfo.name;\n this.busy = undefined;\n if (feat?.unit_color) {\n const deviceUnitColor = feat.unit_color.toString();\n if (deviceUnitColor in deviceInfo.colors) {\n this.color = deviceInfo.colors[deviceUnitColor];\n }\n }\n }\n updateFeature(key, value) {\n if (this._features) {\n this._features = {\n ...this._features,\n [key]: value\n };\n this.lifecycle.emit(events_1.DEVICE.CHANGED);\n }\n }\n prompt(type, args) {\n return new Promise(callback => {\n if (!this.listenerCount(type)) {\n const payload = {\n success: false,\n error: new Error(`${type} callback not configured`)\n };\n callback(payload);\n } else {\n this.emit(type, {\n callback,\n ...args\n });\n }\n });\n }\n isUnacquired() {\n return this.features === undefined;\n }\n isUnreadable() {\n return !!this.unreadableError;\n }\n disconnect() {\n _log.debug('Disconnect cleanup');\n this.transport.off(transport_1.TRANSPORT.STOPPED, this.onTransportStopped);\n this.transport.deviceEvents.off(this.descriptor.path, this.onTransportDeviceEvent);\n this.removeAllListeners();\n this.sessionDfd?.reject(new Error());\n if (this.sessionAcquired) {\n this.transport.releaseSync(this.sessionAcquired);\n this.sessionAcquired = null;\n }\n this.lifecycle.emit(events_1.DEVICE.DISCONNECT);\n return this.interrupt(constants_1.ERRORS.TypedError('Device_Disconnected'));\n }\n isBootloader() {\n return this.features && !!this.features.bootloader_mode;\n }\n isInitialized() {\n return this.features && !!this.features.initialized;\n }\n isSeedless() {\n return this.features && !!this.features.no_backup;\n }\n getVersion() {\n if (!this.features) return;\n return [this.features.major_version, this.features.minor_version, this.features.patch_version];\n }\n atLeast(versions) {\n const version = this.getVersion();\n if (!this.features || !version) return false;\n const modelVersion = typeof versions === 'string' ? versions : versions[this.features.major_version - 1];\n return utils_1.versionUtils.isNewerOrEqual(version, modelVersion);\n }\n isUsed() {\n return !!this.transport.getDescriptor(this.descriptor.path)?.session;\n }\n isUsedHere() {\n return !!this.sessionAcquired;\n }\n isUsedElsewhere() {\n return this.isUsed() && !this.isUsedHere();\n }\n getUniquePath() {\n return this.uniquePath;\n }\n isT1() {\n return this.features ? this.features.major_version === 1 : false;\n }\n hasUnexpectedMode(allow, require) {\n if (this.features) {\n if (this.isBootloader() && !allow.includes(events_1.UI.BOOTLOADER)) {\n return events_1.UI.BOOTLOADER;\n }\n if (!this.isInitialized() && !allow.includes(events_1.UI.INITIALIZE)) {\n return events_1.UI.INITIALIZE;\n }\n if (this.isSeedless() && !allow.includes(events_1.UI.SEEDLESS)) {\n return events_1.UI.SEEDLESS;\n }\n if (!this.isBootloader() && require.includes(events_1.UI.BOOTLOADER)) {\n return events_1.UI.NOT_IN_BOOTLOADER;\n }\n }\n return null;\n }\n getStatus() {\n if (this.isUsedElsewhere()) return 'occupied';\n if (this.wasUsedElsewhere) return 'used';\n if (this.busy) return this.busy;\n return 'available';\n }\n getDeviceThp() {\n const state = this.thp?.serialize();\n return state ? {\n properties: state.properties,\n credentials: state.credentials,\n channel: state.channel\n } : undefined;\n }\n toMessageObject() {\n const {\n name,\n uniquePath: path,\n descriptor\n } = this;\n const {\n apiType,\n id\n } = descriptor;\n const base = {\n path,\n name,\n descriptor: {\n apiType,\n id\n }\n };\n const bluetoothProps = this.descriptor.id && this.descriptor.apiType === 'bluetooth' ? {\n id: (0, types_1.asBluetoothDeviceId)(this.descriptor.id)\n } : undefined;\n if (this.unreadableError) {\n return {\n ...base,\n type: 'unreadable',\n error: this.unreadableError,\n label: 'Unreadable device',\n hid: this.possibleHIDdevice\n };\n }\n if (this.isUnacquired()) {\n const sessionOwner = this.transport.getDescriptor(this.descriptor.path)?.sessionOwner;\n return {\n ...base,\n type: 'unacquired',\n label: 'Unacquired device',\n name: this.name,\n transportSessionOwner: this.sessionAcquired ? undefined : sessionOwner,\n bluetoothProps,\n thp: this.getDeviceThp(),\n status: this.busy ? this.busy : undefined\n };\n }\n const defaultLabel = 'My Trezor';\n const label = this.features.label === '' || !this.features.label ? defaultLabel : this.features.label;\n return {\n ...base,\n type: 'acquired',\n id: this.features.device_id,\n label,\n _state: this.getState(),\n state: this.getState()?.staticSessionId,\n status: this.getStatus(),\n mode: (0, firmwareUtils_1.getFirmwareMode)(this.features),\n color: this.color,\n firmware: this.firmwareStatus,\n firmwareReleaseConfigInfo: this.firmwareReleaseConfigInfo,\n firmwareType: this.firmwareType,\n features: this.features,\n unavailableCapabilities: this.unavailableCapabilities,\n availableTranslations: this.availableTranslations,\n authenticityChecks: this.authenticityChecks,\n bluetoothProps,\n thp: this.getDeviceThp()\n };\n }\n}\nexports.Device = Device;\n//# sourceMappingURL=Device.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createTransportList = void 0;\nconst transport_1 = require(\"@trezor/transport\");\nconst constants_1 = require(\"../constants\");\nconst tryGetTransport = (transports, name) => transports.find(t => t.name === name);\nconst getOrCreateTransport = (transports, transportType, params) => {\n if (transportType === 'BridgeTransport') {\n const existing = transports.filter(t => t.name === transportType);\n return existing.length ? existing : [new transport_1.BridgeTransport({\n ...params,\n port: 21328\n }), new transport_1.BridgeTransport(params)];\n }\n if (typeof transportType === 'string') {\n const existing = tryGetTransport(transports, transportType);\n if (existing) return existing;\n switch (transportType) {\n case 'WebUsbTransport':\n return new transport_1.WebUsbTransport(params);\n case 'NodeUsbTransport':\n return new transport_1.NodeUsbTransport(params);\n case 'UdpTransport':\n return new transport_1.UdpTransport(params);\n }\n } else if (typeof transportType === 'function' && 'prototype' in transportType) {\n const transportInstance = new transportType(params);\n if ((0, transport_1.isTransportInstance)(transportInstance)) {\n return tryGetTransport(transports, transportInstance.name) ?? transportInstance;\n }\n } else if ((0, transport_1.isTransportInstance)(transportType)) {\n const existing = tryGetTransport(transports, transportType.name);\n if (existing) {\n return existing;\n }\n if (!transportType.getMessage()) {\n transportType.updateMessages(params.messages);\n }\n return transportType;\n }\n throw constants_1.ERRORS.TypedError('Runtime', `DeviceList.init: transports[] of unexpected type: ${transportType}`);\n};\nconst createTransports = (existing, transports = [], params) => {\n const transportTypes = transports?.length ? transports : ['BridgeTransport'];\n return transportTypes.flatMap(type => getOrCreateTransport(existing, type, params));\n};\nconst createTransportList = params => (existing, transports) => createTransports(existing, transports, params);\nexports.createTransportList = createTransportList;\n//# sourceMappingURL=TransportList.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.TransportManager = void 0;\nconst transport_1 = require(\"@trezor/transport\");\nconst utils_1 = require(\"@trezor/utils\");\nconst createOverrideLock = () => {\n let promise;\n let sequence = 0;\n let abort;\n let message;\n const override = async (abortMessage, action) => {\n message = abortMessage;\n const seq = ++sequence;\n while (promise) {\n abort?.abort(new Error(abortMessage));\n await promise.catch(() => {});\n }\n if (seq !== sequence) return Promise.reject(new Error(message));\n abort = new AbortController();\n promise = action(abort.signal).finally(() => {\n abort = undefined;\n promise = undefined;\n });\n return promise;\n };\n const getPending = () => promise;\n return {\n override,\n getPending\n };\n};\nclass TransportManager extends utils_1.TypedEmitter {\n lock = createOverrideLock();\n transports = [];\n activeTransport;\n transportReconnect = false;\n upgradeTimeout;\n startTransport;\n constructor(startTransport) {\n super();\n this.startTransport = startTransport;\n }\n pending() {\n return this.lock.getPending();\n }\n get() {\n return this.activeTransport;\n }\n init({\n transports,\n transportReconnect = false,\n pendingTransportEvent = false\n }) {\n this.transports = transports;\n this.transportReconnect = transportReconnect;\n return this.lock.override('New init', signal => this.createInitPromise(pendingTransportEvent, signal));\n }\n dispose() {\n this.removeAllListeners();\n return this.lock.override('Disposing', () => {\n const {\n activeTransport\n } = this;\n if (activeTransport) {\n clearTimeout(this.upgradeTimeout);\n delete this.activeTransport;\n activeTransport.stop();\n }\n return Promise.resolve();\n });\n }\n async selectTransport([transport, ...rest], signal) {\n if (signal.aborted) throw new Error(signal.reason);\n if (transport === this.activeTransport) return transport;\n const result = await transport.init({\n signal\n });\n if (result.success) return transport;else if (rest.length) return this.selectTransport(rest, signal);else throw new Error(result.error);\n }\n scheduleUpgradeCheck(pendingTransportEvent) {\n clearTimeout(this.upgradeTimeout);\n this.upgradeTimeout = setTimeout(async () => {\n if (!this.activeTransport || this.activeTransport === this.transports[0]) return;\n for (const t of this.transports) {\n if (t === this.activeTransport) break;\n if (await t.ping()) {\n this.lock.override('Upgrading', signal => this.createInitPromise(pendingTransportEvent, signal)).catch(() => {});\n return;\n }\n }\n this.scheduleUpgradeCheck(pendingTransportEvent);\n }, 1000);\n }\n async createInitPromise(pendingTransportEvent, abortSignal) {\n try {\n const {\n transports,\n activeTransport\n } = this;\n const transport = transports.length ? await this.selectTransport(transports, abortSignal) : undefined;\n if (activeTransport !== transport) {\n if (activeTransport) {\n clearTimeout(this.upgradeTimeout);\n delete this.activeTransport;\n activeTransport.stop();\n }\n if (transport) {\n try {\n await this.startTransport(transport, pendingTransportEvent, abortSignal);\n } catch (err) {\n transport.stop();\n throw err;\n }\n transport.on(transport_1.TRANSPORT.ERROR, error => {\n this.emit(transport_1.TRANSPORT.ERROR, error);\n clearTimeout(this.upgradeTimeout);\n this.lock.override('Transport error', async signal => {\n delete this.activeTransport;\n transport.stop();\n if (this.transportReconnect) {\n await (0, utils_1.resolveAfter)(1000, signal);\n await this.createInitPromise(pendingTransportEvent, signal);\n }\n }).catch(() => {});\n });\n this.activeTransport = transport;\n this.emit(transport_1.TRANSPORT.START, transport);\n } else {\n this.emit(transport_1.TRANSPORT.ERROR, 'Transport disabled');\n }\n }\n if (transport && transport !== transports[0]) {\n this.scheduleUpgradeCheck(pendingTransportEvent);\n }\n } catch (error) {\n this.emit(transport_1.TRANSPORT.ERROR, error?.message);\n if (this.transportReconnect && !abortSignal.aborted) {\n this.lock.override('Reconnecting', async signal => {\n await (0, utils_1.resolveAfter)(1000, signal);\n await this.createInitPromise(pendingTransportEvent, signal);\n }).catch(() => {});\n }\n }\n }\n}\nexports.TransportManager = TransportManager;\n//# sourceMappingURL=TransportManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.trezorPushNotificationHandler = void 0;\nconst protocol_1 = require(\"@trezor/protocol\");\nconst utils_1 = require(\"@trezor/utils\");\nconst device_1 = require(\"../../events/device\");\nconst thp_1 = require(\"../thp\");\nconst setupDeviceMode = async (device, mode) => {\n if (mode === protocol_1.TrezorPushNotificationMode.BootloaderMode && !device.features) {\n device.setBusy('rebooting');\n await device.acquire();\n await device.getFeatures();\n await device.release();\n }\n if (mode === protocol_1.TrezorPushNotificationMode.NormalMode && (!device.features || !device.getThpState())) {\n device.setBusy('rebooting');\n await device.setupThp();\n await device.acquire();\n await (0, utils_1.resolveAfter)(1000);\n await (0, thp_1.getThpChannel)(device, false);\n if (device.getThpState()?.phase === 'paired') {\n await device.getFeatures();\n } else {\n device.setBusy('thp-locked');\n device.lifecycle.emit(device_1.DEVICE.CHANGED);\n }\n await device.release();\n }\n};\nconst trezorPushNotificationHandler = async ({\n device,\n message\n}) => {\n const decodedResult = protocol_1.tpn.decode(message);\n if (!decodedResult.success) return;\n const decoded = decodedResult.payload;\n device.lifecycle.emit(device_1.DEVICE.TREZOR_PUSH_NOTIFICATION, decoded);\n const {\n type,\n mode\n } = decoded;\n const modeChanged = mode === protocol_1.TrezorPushNotificationMode.BootloaderMode && (device.getThpState()?.properties || device.features && !device.features.bootloader_mode) || mode === protocol_1.TrezorPushNotificationMode.NormalMode && device.features?.bootloader_mode;\n if (modeChanged) {\n device.reset();\n device.setBusy(mode === protocol_1.TrezorPushNotificationMode.BootloaderMode ? 'bootloader-locked' : 'rebooting');\n device.lifecycle.emit(device_1.DEVICE.CHANGED);\n }\n switch (type) {\n case protocol_1.TrezorPushNotificationType.SETTING_CHANGE:\n case protocol_1.TrezorPushNotificationType.PIN_CHANGE:\n case protocol_1.TrezorPushNotificationType.NOTIFY_POWER_STATUS_CHANGE:\n if (!device.isUsed()) {\n await device.acquire();\n await device.getFeatures();\n await device.release();\n }\n break;\n case protocol_1.TrezorPushNotificationType.LOCK:\n device.setBusy(mode === protocol_1.TrezorPushNotificationMode.BootloaderMode ? 'bootloader-locked' : 'hard-locked');\n device.lifecycle.emit(device_1.DEVICE.CHANGED);\n break;\n case protocol_1.TrezorPushNotificationType.UNLOCK:\n await setupDeviceMode(device, decoded.mode);\n break;\n case protocol_1.TrezorPushNotificationType.SOFTLOCK:\n device.setBusy('pin-locked');\n device.lifecycle.emit(device_1.DEVICE.CHANGED);\n break;\n case protocol_1.TrezorPushNotificationType.SOFTUNLOCK:\n device.setBusy(device.features ? undefined : 'thp-locked');\n device.lifecycle.emit(device_1.DEVICE.CHANGED);\n break;\n default:\n break;\n }\n};\nexports.trezorPushNotificationHandler = trezorPushNotificationHandler;\n//# sourceMappingURL=trezorPushNotification.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DeviceList = exports.assertDeviceListConnected = void 0;\nconst transport_1 = require(\"@trezor/transport\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst events_1 = require(\"../events\");\nconst Device_1 = require(\"./Device\");\nconst types_1 = require(\"../types\");\nconst TransportList_1 = require(\"./TransportList\");\nconst TransportManager_1 = require(\"./TransportManager\");\nconst debug_1 = require(\"../utils/debug\");\nconst trezorPushNotification_1 = require(\"./workflow/trezorPushNotification\");\nconst createAuthPenaltyManager = priority => {\n const penalizedDevices = {};\n const get = () => 100 * priority + Object.keys(penalizedDevices).reduce((penalty, key) => Math.max(penalty, penalizedDevices[key]), 0);\n const add = device => {\n if (!device.isInitialized() || device.isBootloader() || !device.features.device_id) return;\n const deviceID = device.features.device_id;\n const penalty = penalizedDevices[deviceID] ? penalizedDevices[deviceID] + 500 : 2000;\n penalizedDevices[deviceID] = Math.min(penalty, 5000);\n };\n const remove = device => {\n if (!device.isInitialized() || device.isBootloader() || !device.features.device_id) return;\n const deviceID = device.features.device_id;\n delete penalizedDevices[deviceID];\n };\n const clear = () => Object.keys(penalizedDevices).forEach(key => delete penalizedDevices[key]);\n return {\n get,\n add,\n remove,\n clear\n };\n};\nconst getTransportInfo = transport => ({\n apiType: transport.apiType,\n type: transport.name,\n version: transport.version,\n outdated: transport.isOutdated\n});\nconst assertDeviceListConnected = deviceList => {\n if (!deviceList.isConnected()) {\n throw constants_1.ERRORS.TypedError('Transport_Missing');\n }\n};\nexports.assertDeviceListConnected = assertDeviceListConnected;\nclass DeviceList extends utils_1.TypedEmitter {\n transportManagers = {};\n transports = [];\n devices = [];\n deviceCounter = Date.now();\n handshakeLock;\n authPenaltyManager;\n updateTransports;\n getConnectedTransports() {\n return Object.values(this.transportManagers).map(manager => manager.get()).filter(utils_1.isNotUndefined);\n }\n isConnected() {\n return !!this.getConnectedTransports().length;\n }\n pendingConnection() {\n const pending = Object.values(this.transportManagers).map(manager => manager.pending()).filter(utils_1.isNotUndefined);\n if (pending.length) return Promise.all(pending).then(() => {});\n }\n getActiveTransports() {\n return this.getConnectedTransports().map(getTransportInfo);\n }\n constructor({\n messages,\n priority,\n debug,\n manifest\n }) {\n super();\n const transportLogger = (0, debug_1.initLog)('@trezor/transport', debug);\n this.handshakeLock = (0, utils_1.getSynchronize)();\n this.authPenaltyManager = createAuthPenaltyManager(priority);\n this.updateTransports = (0, TransportList_1.createTransportList)({\n messages,\n logger: transportLogger,\n id: manifest?.appName || manifest?.appUrl || 'unknown app'\n });\n }\n async onDeviceConnected(descriptor, transport) {\n const id = (this.deviceCounter++).toString(16).slice(-8);\n const device = new Device_1.Device({\n id: (0, types_1.asDeviceUniquePath)(id),\n transport,\n descriptor\n });\n const penalty = this.authPenaltyManager.get();\n const stillConnected = await this.handshakeLock(() => (0, utils_1.resolveAfter)(penalty && penalty + 501).then(() => device.handshake()));\n if (!stillConnected) {\n return;\n }\n if (descriptor.id && descriptor.apiType === 'bluetooth') {\n transport.subscribe({\n path: device.descriptor.id,\n channels: ['battery-level', 'trezor-push-notification']\n });\n }\n this.devices.push(device);\n device.lifecycle.on(events_1.DEVICE.CONNECT, () => this.emit(events_1.DEVICE.CONNECT, device));\n device.lifecycle.on(events_1.DEVICE.CHANGED, () => this.emit(events_1.DEVICE.CHANGED, device));\n device.lifecycle.on(events_1.DEVICE.CONNECT_UNACQUIRED, () => this.emit(events_1.DEVICE.CONNECT_UNACQUIRED, device));\n device.lifecycle.on(events_1.DEVICE.TREZOR_PUSH_NOTIFICATION, payload => {\n this.emit(events_1.DEVICE.TREZOR_PUSH_NOTIFICATION, {\n device,\n ...payload\n });\n });\n device.lifecycle.on(events_1.DEVICE.DISCONNECT, () => {\n device.lifecycle.removeAllListeners();\n this.authPenaltyManager.remove(device);\n const index = this.devices.indexOf(device);\n if (index >= 0) this.devices.splice(index, 1);\n this.emit(events_1.DEVICE.DISCONNECT, device);\n });\n this.emit(device.isUnacquired() ? events_1.DEVICE.CONNECT_UNACQUIRED : events_1.DEVICE.CONNECT, device);\n }\n onPushNotification(event) {\n const device = this.devices.find(d => d.descriptor.id === event.id);\n if (device) {\n (0, trezorPushNotification_1.trezorPushNotificationHandler)({\n device,\n message: event.data\n });\n }\n }\n onBatteryLevel(event) {\n const device = this.devices.find(d => d.descriptor.id === event.id);\n device?.updateFeature('soc', event.data[0]);\n }\n getOrCreateTransportManager(apiType) {\n if (!this.transportManagers[apiType]) {\n const manager = new TransportManager_1.TransportManager(this.initializeTransport.bind(this));\n manager.on(transport_1.TRANSPORT.START, transport => this.emit(transport_1.TRANSPORT.START, getTransportInfo(transport)));\n manager.on(transport_1.TRANSPORT.ERROR, error => this.emit(transport_1.TRANSPORT.ERROR, {\n apiType,\n error\n }));\n this.transportManagers[apiType] = manager;\n }\n return this.transportManagers[apiType];\n }\n async init({\n transports,\n transportReconnect,\n pendingTransportEvent\n } = {}) {\n this.transports = this.updateTransports(this.transports, transports);\n const promises = this.transports.map(t => t.apiType).concat((0, utils_1.typedObjectKeys)(this.transportManagers)).filter(utils_1.arrayDistinct).map(apiType => this.getOrCreateTransportManager(apiType).init({\n transports: this.transports.filter(t => t.apiType === apiType),\n transportReconnect,\n pendingTransportEvent\n }));\n await Promise.all(promises);\n }\n async initializeTransport(transport, pendingTransportEvent, signal) {\n transport.on(transport_1.TRANSPORT.DEVICE_CONNECTED, d => this.onDeviceConnected(d, transport));\n transport.on(transport_1.TRANSPORT.TREZOR_PUSH_NOTIFICATION, this.onPushNotification.bind(this));\n transport.on(transport_1.TRANSPORT.BATTERY_LEVEL, this.onBatteryLevel.bind(this));\n const enumerateResult = await transport.enumerate({\n signal\n });\n if (!enumerateResult.success) {\n throw new Error(enumerateResult.error);\n }\n const descriptors = enumerateResult.payload;\n transport.handleDescriptorsChange(descriptors);\n transport.listen();\n if (pendingTransportEvent && descriptors.length) {\n await this.waitForDevices(transport, signal);\n }\n }\n waitForDevices(transport, signal) {\n const {\n promise,\n reject,\n resolve\n } = (0, utils_1.createDeferred)();\n const onAbort = () => reject(signal.reason);\n signal.addEventListener('abort', onAbort);\n const onError = error => reject(new Error(error));\n transport.once(transport_1.TRANSPORT.ERROR, onError);\n const autoResolveTransportEventTimeout = setTimeout(resolve, 10000);\n this.handshakeLock(resolve);\n return promise.finally(() => {\n transport.off(transport_1.TRANSPORT.ERROR, onError);\n signal.removeEventListener('abort', onAbort);\n clearTimeout(autoResolveTransportEventTimeout);\n });\n }\n getDeviceCount() {\n return this.devices.length;\n }\n getPrioritizedDevices() {\n return [...this.devices].sort((a, b) => (a.descriptor.apiType === 'bluetooth' ? 1 : 0) - (b.descriptor.apiType === 'bluetooth' ? 1 : 0));\n }\n getAllDevices() {\n return this.getPrioritizedDevices();\n }\n getOnlyDevice() {\n return this.devices.length === 1 ? this.devices[0] : undefined;\n }\n getDeviceByPath(path) {\n return this.getPrioritizedDevices().find(d => d.getUniquePath() === path);\n }\n getDeviceByStaticState(state) {\n const deviceId = state.split('@')[1].split(':')[0];\n return this.getPrioritizedDevices().find(d => d.features?.device_id === deviceId);\n }\n async dispose() {\n this.removeAllListeners();\n const promises = Object.values(this.transportManagers).map(manager => manager.dispose());\n await Promise.all(promises);\n }\n async enumerate() {\n const promises = this.getConnectedTransports().map(async transport => {\n const res = await transport.enumerate();\n if (res.success) {\n transport.handleDescriptorsChange(res.payload);\n }\n });\n await Promise.all(promises);\n }\n addAuthPenalty(device) {\n return this.authPenaltyManager.add(device);\n }\n removeAuthPenalty(device) {\n return this.authPenaltyManager.remove(device);\n }\n}\nexports.DeviceList = DeviceList;\n//# sourceMappingURL=DeviceList.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.WebextensionStateStorage = void 0;\nconst connect_common_1 = require(\"@trezor/connect-common\");\nclass WebextensionStateStorage {\n origin;\n constructor(origin) {\n this.origin = origin;\n }\n loadState(device) {\n if (!device.getState()?.sessionId) {\n const {\n preferredDevice\n } = connect_common_1.storage.loadForOrigin(this.origin) || {};\n if (preferredDevice?.internalState && preferredDevice?.internalStateExpiration && preferredDevice.internalStateExpiration > new Date().getTime()) {\n return {\n sessionId: preferredDevice.internalState\n };\n }\n }\n return undefined;\n }\n saveState(device, state) {\n const expirationDelay = Math.max(1000 * 60 * 15, device.features.auto_lock_delay_ms ?? 0);\n connect_common_1.storage.saveForOrigin(store => ({\n ...store,\n preferredDevice: store.preferredDevice ? {\n ...store.preferredDevice,\n state: state.staticSessionId,\n internalState: state.sessionId,\n internalStateExpiration: Date.now() + expirationDelay\n } : undefined\n }), this.origin);\n }\n}\nexports.WebextensionStateStorage = WebextensionStateStorage;\n//# sourceMappingURL=StateStorage.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateState = void 0;\nconst constants_1 = require(\"../../constants\");\nconst DataManager_1 = require(\"../../data/DataManager\");\nconst events_1 = require(\"../../events\");\nconst pathUtils_1 = require(\"../../utils/pathUtils\");\nconst thp_1 = require(\"../thp\");\nconst getStaticSessionId = device => device.getCurrentSession().typedCall('GetAddress', 'Address', {\n address_n: [(0, pathUtils_1.toHardened)(44), (0, pathUtils_1.toHardened)(1), (0, pathUtils_1.toHardened)(0), 0, 0],\n coin_name: 'Testnet',\n script_type: 'SPENDADDRESS'\n}).then(({\n message\n}) => `${message.address}@${device.features.device_id}:${device.getInstance()}`);\nconst preauthorizeState = ({\n device,\n method\n}) => {\n if (!device.features.unlocked && method.preauthorized) {\n return device.getCommands().preauthorize(false);\n }\n};\nconst isUnexpectedState = (expected, current) => expected && current && expected.split(':')[0] !== current.split(':')[0];\nconst getState = async context => {\n const {\n device\n } = context;\n if (!device.features) return;\n if (await preauthorizeState(context)) {\n return;\n }\n const expectedState = device.getState()?.staticSessionId;\n const uniqueState = await getStaticSessionId(device);\n if (device.features.session_id) {\n device.setState({\n sessionId: device.features.session_id\n });\n }\n if (isUnexpectedState(expectedState, uniqueState)) {\n return uniqueState;\n }\n if (!expectedState || expectedState !== uniqueState) {\n device.setState({\n staticSessionId: uniqueState\n });\n }\n};\nconst MAX_PIN_TRIES = 3;\nconst getInvalidDeviceState = async context => {\n for (let i = 0; i < MAX_PIN_TRIES - 1; ++i) {\n try {\n return await getState(context);\n } catch (error) {\n if (error.message.includes('PIN invalid')) {\n context.method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PIN, {\n device: context.device.toMessageObject()\n }));\n } else {\n throw error;\n }\n }\n }\n return getState(context).catch(error => {\n if (error.message.includes('PIN invalid')) {\n context.method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PIN_ATTEMPTS_DEPLETED, {\n device: context.device.toMessageObject()\n }));\n }\n throw error;\n });\n};\nconst getInvalidThpDeviceState = async context => {\n const {\n device,\n method\n } = context;\n const currentState = device.getState();\n const expectedState = currentState?.staticSessionId;\n const expectedSessionId = currentState?.sessionId ? Buffer.from(currentState.sessionId, 'hex') : undefined;\n if (await preauthorizeState(context)) {\n return;\n }\n let uniqueState;\n const thpState = device.getThpState();\n if (expectedSessionId) {\n thpState.setSessionId(expectedSessionId);\n uniqueState = await getStaticSessionId(device).catch(e => {\n switch (e.code) {\n case 'Failure_PinCancelled':\n throw e;\n case 'Failure_InvalidSession':\n default:\n return undefined;\n }\n });\n if (isUnexpectedState(expectedState, uniqueState)) {\n uniqueState = undefined;\n }\n if (!uniqueState) {\n device.setState({\n sessionId: undefined,\n deriveCardano: undefined\n });\n thpState?.setSessionId(Buffer.alloc(1));\n }\n }\n if (!uniqueState || !currentState?.deriveCardano && method.useCardanoDerivation) {\n const newSessionId = thpState.createNewSessionId();\n await (0, thp_1.createThpSession)(device, method.useCardanoDerivation);\n uniqueState = await getStaticSessionId(device);\n device.setState({\n sessionId: newSessionId.toString('hex'),\n deriveCardano: method.useCardanoDerivation\n });\n }\n if (isUnexpectedState(expectedState, uniqueState)) {\n return uniqueState;\n }\n if (!expectedState) {\n device.setState({\n staticSessionId: uniqueState\n });\n }\n};\nconst validateState = async context => {\n const {\n device,\n method\n } = context;\n if (!method.useDeviceState) {\n return;\n }\n const validate = device.protocol.name === 'v2' ? getInvalidThpDeviceState : getInvalidDeviceState;\n const isDeviceUnlocked = device.features.unlocked;\n const isUsingPopup = DataManager_1.DataManager.getSettings('popup');\n try {\n let invalidDeviceState = await validate(context);\n if (isUsingPopup) {\n while (invalidDeviceState) {\n const uiPromise = method.createUiPromise(events_1.UI.INVALID_PASSPHRASE_ACTION, device);\n method.postMessage((0, events_1.createUiMessage)(events_1.UI.INVALID_PASSPHRASE, {\n device: device.toMessageObject()\n }));\n const uiResp = await uiPromise.promise;\n if (uiResp.payload) {\n device.setState({\n sessionId: undefined\n });\n await device.initialize(method.useCardanoDerivation);\n invalidDeviceState = await validate(context);\n } else {\n device.setState({\n staticSessionId: invalidDeviceState\n });\n break;\n }\n }\n } else if (invalidDeviceState) {\n throw constants_1.ERRORS.TypedError('Device_InvalidState');\n }\n } catch (error) {\n device.setState({\n sessionId: undefined\n });\n return Promise.reject(error);\n }\n if (!isDeviceUnlocked && device.features.unlocked) {\n method.postMessage((0, events_1.createDeviceMessage)(events_1.DEVICE.CHANGED, device.toMessageObject()));\n }\n};\nexports.validateState = validateState;\n//# sourceMappingURL=validateState.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.validateState = void 0;\nvar validateState_1 = require(\"./validateState\");\nObject.defineProperty(exports, \"validateState\", {\n enumerable: true,\n get: function () {\n return validateState_1.validateState;\n }\n});\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InteractionTimeout = void 0;\nconst debug_1 = require(\"./debug\");\nconst _log = (0, debug_1.initLog)('InteractionTimeout');\nclass InteractionTimeout {\n timeout = null;\n seconds = 0;\n constructor(seconds) {\n if (seconds) {\n this.seconds = seconds;\n }\n }\n start(cancelFn, seconds) {\n const time = seconds || this.seconds;\n if (time < 1) {\n return;\n }\n this.stop();\n _log.debug(`starting interaction timeout for ${time} seconds`);\n this.timeout = setTimeout(() => {\n _log.debug('interaction timed out');\n cancelFn();\n }, 1000 * time);\n }\n stop() {\n if (this.timeout) {\n _log.debug('clearing interaction timeout');\n clearTimeout(this.timeout);\n }\n }\n}\nexports.InteractionTimeout = InteractionTimeout;\n//# sourceMappingURL=interactionTimeout.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createPopupPromiseManager = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst createPopupPromiseManager = () => {\n let _popupPromise;\n const ensure = () => _popupPromise ?? (_popupPromise = (0, utils_1.createDeferred)());\n const wait = () => ensure().promise;\n const resolve = () => ensure().resolve();\n const isWaiting = () => !!_popupPromise;\n const reject = error => {\n _popupPromise?.reject(error);\n _popupPromise = undefined;\n };\n const clear = () => {\n _popupPromise = undefined;\n };\n return {\n wait,\n isWaiting,\n clear,\n resolve,\n reject\n };\n};\nexports.createPopupPromiseManager = createPopupPromiseManager;\n//# sourceMappingURL=popupPromiseManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createUiPromiseManager = void 0;\nconst utils_1 = require(\"@trezor/utils\");\nconst events_1 = require(\"../events\");\nconst createUiPromiseManager = interactionTimeout => {\n let _uiPromises = [];\n const exists = type => _uiPromises.some(p => p.id === type);\n const create = (promiseEvent, device) => {\n const uiPromise = {\n ...(0, utils_1.createDeferred)(promiseEvent),\n device\n };\n const existing = _uiPromises.findIndex(p => p.id === promiseEvent);\n if (existing >= 0) {\n console.warn(`UiPromise '${promiseEvent}' already exists.`);\n _uiPromises.splice(existing, 1);\n }\n _uiPromises.push(uiPromise);\n interactionTimeout();\n return uiPromise;\n };\n const resolve = event => {\n const uiPromise = _uiPromises.find(p => p.id === event.type);\n if (!uiPromise) return false;\n uiPromise.resolve(event);\n _uiPromises = _uiPromises.filter(p => p !== uiPromise);\n return true;\n };\n const rejectAll = error => {\n _uiPromises.forEach(p => p.reject(error));\n _uiPromises = [];\n };\n const disconnected = devicePath => {\n const [toResolve, toKeep] = (0, utils_1.arrayPartition)(_uiPromises, p => p.device?.getUniquePath() === devicePath && p.id === events_1.DEVICE.DISCONNECT);\n toResolve.forEach(p => p.resolve({\n type: events_1.DEVICE.DISCONNECT\n }));\n _uiPromises = toKeep;\n return !!toResolve.length || toKeep.some(p => p.device?.getUniquePath() === devicePath);\n };\n const get = type => {\n const uiPromise = _uiPromises.find(p => p.id === type);\n return uiPromise?.promise ?? Promise.reject(new Error(`UiPromise ${type} doesn't exist`));\n };\n const clear = () => {\n _uiPromises = [];\n };\n return {\n exists,\n create,\n resolve,\n rejectAll,\n disconnected,\n get,\n clear\n };\n};\nexports.createUiPromiseManager = createUiPromiseManager;\n//# sourceMappingURL=uiPromiseManager.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initCoreState = exports.Core = void 0;\nconst tslib_1 = require(\"tslib\");\nconst events_1 = tslib_1.__importDefault(require(\"events\"));\nconst connect_common_1 = require(\"@trezor/connect-common\");\nconst transport_1 = require(\"@trezor/transport\");\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"../constants\");\nconst method_1 = require(\"./method\");\nconst onCallFirmwareUpdate_1 = require(\"./onCallFirmwareUpdate\");\nconst BlockchainLink_1 = require(\"../backend/BlockchainLink\");\nconst DataManager_1 = require(\"../data/DataManager\");\nconst analyticsInfo_1 = require(\"../data/analyticsInfo\");\nconst connectSettings_1 = require(\"../data/connectSettings\");\nconst DeviceList_1 = require(\"../device/DeviceList\");\nconst StateStorage_1 = require(\"../device/StateStorage\");\nconst workflows = tslib_1.__importStar(require(\"../device/workflow\"));\nconst events_2 = require(\"../events\");\nconst debug_1 = require(\"../utils/debug\");\nconst interactionTimeout_1 = require(\"../utils/interactionTimeout\");\nconst popupPromiseManager_1 = require(\"../utils/popupPromiseManager\");\nconst uiPromiseManager_1 = require(\"../utils/uiPromiseManager\");\nconst _log = (0, debug_1.initLog)('Core');\nconst waitForPopup = ({\n popupPromise,\n sendCoreMessage\n}) => {\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_UI_WINDOW));\n return popupPromise.wait();\n};\nconst startInteractionTimeout = context => context.interactionTimeout.start(() => {\n onPopupClosed(context, 'Interaction timeout');\n});\nconst initDevice = async (context, methodCallDevice) => {\n const {\n uiPromises,\n deviceList,\n sendCoreMessage\n } = context;\n (0, DeviceList_1.assertDeviceListConnected)(deviceList);\n const isWebUsb = deviceList.getActiveTransports().some(t => t.type === 'WebUsbTransport');\n let device;\n let showDeviceSelection = isWebUsb;\n const isUsingPopup = DataManager_1.DataManager.getSettings('popup');\n const origin = DataManager_1.DataManager.getSettings('origin');\n const useCoreInPopup = DataManager_1.DataManager.getSettings('useCoreInPopup');\n const {\n preferredDevice\n } = connect_common_1.storage.load().origin[origin] || {};\n const preferredDeviceInList = preferredDevice?.state && deviceList.getDeviceByStaticState(preferredDevice.state);\n if (methodCallDevice?.state?.staticSessionId) {\n device = deviceList.getDeviceByStaticState(methodCallDevice.state.staticSessionId);\n }\n if (!device && methodCallDevice?.path) {\n device = deviceList.getDeviceByPath(methodCallDevice.path);\n }\n if (preferredDevice && !device) {\n if (preferredDeviceInList) {\n device = preferredDeviceInList;\n } else {\n connect_common_1.storage.save(store => {\n store.origin[origin] = {\n ...store.origin[origin],\n preferredDevice: undefined\n };\n return store;\n });\n }\n }\n if (device) {\n showDeviceSelection = device.isUnreadable() || device.isUnacquired() && !!isUsingPopup;\n } else {\n const onlyDevice = deviceList.getOnlyDevice();\n if (onlyDevice && (!isWebUsb || !isUsingPopup)) {\n device = onlyDevice;\n showDeviceSelection = device.isUnreadable() || device.isUnacquired() || !!useCoreInPopup;\n } else {\n showDeviceSelection = true;\n }\n }\n if (showDeviceSelection) {\n uiPromises.create(events_2.UI.RECEIVE_DEVICE);\n await waitForPopup(context);\n (0, DeviceList_1.assertDeviceListConnected)(deviceList);\n const onlyDevice = deviceList.getOnlyDevice();\n if (onlyDevice && !onlyDevice.isUnreadable() && !onlyDevice.isUnacquired() && !isWebUsb && !useCoreInPopup) {\n device = onlyDevice;\n } else {\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.SELECT_DEVICE, {\n webusb: isWebUsb,\n devices: deviceList.getAllDevices().map(d => d.toMessageObject())\n }));\n if (uiPromises.exists(events_2.UI.RECEIVE_DEVICE)) {\n const {\n payload\n } = await uiPromises.get(events_2.UI.RECEIVE_DEVICE);\n if (payload.remember) {\n const {\n label,\n path,\n state\n } = payload.device;\n connect_common_1.storage.save(store => {\n store.origin[origin] = {\n ...store.origin[origin],\n preferredDevice: {\n label,\n path,\n state\n }\n };\n return store;\n });\n }\n device = deviceList.getDeviceByPath(payload.device.path);\n }\n }\n } else if (uiPromises.exists(events_2.UI.RECEIVE_DEVICE)) {\n await uiPromises.get(events_2.UI.RECEIVE_DEVICE);\n }\n if (!device) {\n throw constants_1.ERRORS.TypedError('Device_NotFound');\n }\n return device;\n};\nconst inner = async (context, method, device) => {\n const {\n uiPromises,\n sendCoreMessage\n } = context;\n const trustedHost = DataManager_1.DataManager.getSettings('trustedHost');\n const isUsingPopup = DataManager_1.DataManager.getSettings('popup') ?? false;\n const firmwareException = method.checkFirmwareRange();\n if (firmwareException) {\n if (isUsingPopup) {\n if (firmwareException === events_2.UI.FIRMWARE_NOT_COMPATIBLE) {\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.FIRMWARE_NOT_COMPATIBLE, device.toMessageObject()));\n const uiResp = await uiPromise.promise;\n if (!uiResp.payload) {\n throw constants_1.ERRORS.TypedError('Method_PermissionsNotGranted');\n }\n } else {\n await waitForPopup(context);\n sendCoreMessage((0, events_2.createUiMessage)(firmwareException, device.toMessageObject()));\n await uiPromises.create(events_2.DEVICE.DISCONNECT, device).promise;\n return Promise.reject(constants_1.ERRORS.TypedError('Method_Cancel'));\n }\n } else {\n return Promise.reject(constants_1.ERRORS.TypedError('Device_FwException', firmwareException));\n }\n }\n const unexpectedMode = device.hasUnexpectedMode(method.allowDeviceMode, method.requireDeviceMode);\n if (unexpectedMode) {\n if (isUsingPopup) {\n await waitForPopup(context);\n sendCoreMessage((0, events_2.createUiMessage)(unexpectedMode, device.toMessageObject()));\n await uiPromises.create(events_2.DEVICE.DISCONNECT, device).promise;\n return Promise.reject(constants_1.ERRORS.TypedError('Device_ModeException', unexpectedMode));\n }\n return Promise.reject(constants_1.ERRORS.TypedError('Device_ModeException', unexpectedMode));\n }\n method.checkDeviceCapability();\n method.checkPermissions({\n origin: DataManager_1.DataManager.getSettings('origin')\n });\n if (!trustedHost && method.requiredPermissions.length > 0) {\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PERMISSION, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PERMISSION, {\n permissions: method.requiredPermissions,\n device: device.toMessageObject()\n }));\n const {\n granted,\n remember\n } = await uiPromise.promise.then(({\n payload\n }) => payload);\n if (granted) {\n method.savePermissions(!remember, {\n origin: DataManager_1.DataManager.getSettings('origin')\n });\n } else {\n return Promise.reject(constants_1.ERRORS.TypedError('Method_PermissionsNotGranted'));\n }\n }\n const deviceNeedsBackup = device.features.backup_availability === 'Required';\n if (deviceNeedsBackup) {\n if (method.noBackupConfirmationMode === 'always' || method.noBackupConfirmationMode === 'popup-only' && isUsingPopup) {\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device);\n sendCoreMessage((0, analyticsInfo_1.enhanceMessageWithAnalytics)((0, events_2.createUiMessage)(events_2.UI.REQUEST_CONFIRMATION, {\n view: 'no-backup'\n }), {\n device: device.toMessageObject()\n }));\n const permitted = await uiPromise.promise.then(({\n payload\n }) => payload);\n if (!permitted) {\n return Promise.reject(constants_1.ERRORS.TypedError('Method_PermissionsNotGranted'));\n }\n }\n await waitForPopup(context);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.DEVICE_NEEDS_BACKUP, device.toMessageObject()));\n }\n if (device.firmwareStatus === 'outdated') {\n await waitForPopup(context);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.FIRMWARE_OUTDATED, device.toMessageObject()));\n }\n if (!trustedHost) {\n const requestConfirmation = method.confirmation;\n if (requestConfirmation) {\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_CONFIRMATION, device);\n sendCoreMessage((0, analyticsInfo_1.enhanceMessageWithAnalytics)((0, events_2.createUiMessage)(events_2.UI.REQUEST_CONFIRMATION, requestConfirmation), {\n device: device.toMessageObject()\n }));\n const confirmed = await uiPromise.promise.then(({\n payload\n }) => payload);\n if (!confirmed) {\n return Promise.reject(constants_1.ERRORS.TypedError('Method_Cancel'));\n }\n }\n }\n const workflowCtx = {\n device,\n method,\n signal: context.signal\n };\n await workflows.validateState(workflowCtx);\n if (method.useUi) {\n await waitForPopup(context);\n } else {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n }\n try {\n const response = await method.run();\n return (0, events_2.createResponseMessage)(method.responseID, true, response, device);\n } catch (error) {\n return Promise.reject(error);\n }\n};\nconst onCall = async (context, message) => {\n if (!message.id || !message.payload || message.type !== events_2.IFRAME.CALL) {\n throw constants_1.ERRORS.TypedError('Method_InvalidParameter', 'onCall: message.id or message.payload is missing');\n }\n const {\n uiPromises,\n callMethods,\n methodSynchronize,\n resolveWaitForFirstMethod,\n sendCoreMessage\n } = context;\n const responseID = message.id;\n let method;\n try {\n method = await methodSynchronize(async () => {\n _log.debug('loading method...');\n const method2 = await (0, method_1.getMethod)(message);\n _log.debug('method selected', method2.name);\n method2.postMessage = sendCoreMessage;\n method2.createUiPromise = uiPromises.create;\n method2.init();\n await method2.initAsync?.();\n return method2;\n });\n resolveWaitForFirstMethod();\n callMethods.push(method);\n } catch (error) {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, {\n error\n }));\n return Promise.resolve();\n }\n if (method.payload.__info) {\n const response = method.getMethodInfo();\n if (method.payload.__precomposed) {\n response.precomposed = await method.payloadToPrecomposed();\n }\n sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, true, response));\n return Promise.resolve();\n }\n if (!method.useDevice) {\n try {\n if (method.useUi) {\n await waitForPopup(context);\n } else {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n }\n const response = await method.run();\n sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, true, response));\n } catch (error) {\n sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, false, {\n error\n }));\n }\n return Promise.resolve();\n }\n if (method.isManagementRestricted({\n origin: DataManager_1.DataManager.getSettings('origin')\n })) {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, {\n error: constants_1.ERRORS.TypedError('Method_NotAllowed')\n }));\n return Promise.resolve();\n }\n return await onCallDevice(context, message, method);\n};\nconst onCallDevice = async (context, message, method) => {\n const {\n deviceList,\n callMethods,\n sendCoreMessage\n } = context;\n const responseID = message.id;\n const {\n origin,\n env,\n useCoreInPopup,\n transports\n } = DataManager_1.DataManager.getSettings();\n if (!deviceList.isConnected() && !deviceList.pendingConnection()) {\n deviceList.init({\n transports\n });\n }\n await deviceList.pendingConnection();\n const shouldRetry = ['web', 'webextension'].includes(env);\n let tempDevice;\n while (!tempDevice) {\n try {\n tempDevice = await initDevice(context, message.payload.device);\n } catch (error) {\n if (error.code === 'Transport_Missing') {\n await waitForPopup(context);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.TRANSPORT));\n if (deviceList.pendingConnection() && shouldRetry) {\n while (deviceList.pendingConnection()) {\n await deviceList.pendingConnection();\n }\n continue;\n }\n } else {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n }\n sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, {\n error\n }));\n throw error;\n }\n }\n const device = tempDevice;\n method.setDevice(device);\n const previousCall = callMethods.filter(call => call && call !== method && call.device?.getUniquePath() === method.device.getUniquePath());\n if (previousCall.length > 0 && method.overridePreviousCall) {\n previousCall.forEach(call => {\n call.overridden = true;\n });\n const overrideError = constants_1.ERRORS.TypedError('Method_Override');\n await device.interrupt(overrideError);\n if (method.overridden) {\n sendCoreMessage((0, events_2.createResponseMessage)(method.responseID, false, {\n error: overrideError\n }));\n throw overrideError;\n }\n } else if (device.currentRun) {\n if (device.isUnacquired()) {\n await device.currentRun;\n } else {\n sendCoreMessage((0, events_2.createResponseMessage)(responseID, false, {\n error: constants_1.ERRORS.TypedError('Device_CallInProgress')\n }));\n throw constants_1.ERRORS.TypedError('Device_CallInProgress');\n }\n }\n device.setInstance(message.payload.device?.instance);\n if (method.hasExpectedDeviceState) {\n device.setState(method.deviceState);\n }\n registerDeviceEvents(context, method)(device);\n if (useCoreInPopup && env === 'webextension' && origin) {\n device.initStorage(new StateStorage_1.WebextensionStateStorage(origin));\n }\n let messageResponse;\n try {\n const innerAction = () => inner(context, method, device).then(response => {\n messageResponse = response;\n });\n await device.run(innerAction, {\n keepSession: method.keepSession,\n skipFinalReload: method.skipFinalReload,\n useCardanoDerivation: method.useCardanoDerivation\n });\n } catch (error) {\n if (error.cause) {\n _log.debug('device.run error caught, caused by:', error.cause);\n }\n if (error.code === 'Device_Disconnected') {\n deviceList.addAuthPenalty(device);\n }\n if (method) {\n if (deviceList.isConnected() && error.message === transport_1.TRANSPORT_ERROR.SESSION_WRONG_PREVIOUS) {\n await deviceList.enumerate();\n }\n messageResponse = (0, events_2.createResponseMessage)(method.responseID, false, {\n error\n });\n }\n } finally {\n if (method.keepSession && method.deviceState && method.deviceState.sessionId !== device.getState()?.sessionId) {\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CHANGED, device.toMessageObject()));\n }\n const response = messageResponse;\n if (response) {\n device.eventNames().forEach(e => device.removeAllListeners(e));\n if (useCoreInPopup) {\n sendCoreMessage(response);\n }\n closePopup(context);\n cleanup(context);\n if (method) {\n method.dispose();\n }\n if (response.success) {\n deviceList.removeAuthPenalty(device);\n }\n if (!useCoreInPopup) {\n sendCoreMessage(response);\n }\n }\n }\n};\nconst cleanup = ({\n uiPromises,\n popupPromise,\n interactionTimeout\n}) => {\n popupPromise.clear();\n uiPromises.clear();\n interactionTimeout.stop();\n _log.debug('Cleanup...');\n};\nconst closePopup = ({\n popupPromise,\n sendCoreMessage\n}) => {\n if (popupPromise.isWaiting()) {\n sendCoreMessage((0, events_2.createPopupMessage)(events_2.POPUP.CANCEL_POPUP_REQUEST));\n }\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.CLOSE_UI_WINDOW));\n};\nconst onDeviceButtonHandler = (device, context, method) => async ({\n payload: request\n}) => {\n const {\n sendCoreMessage\n } = context;\n const addressRequest = request.code === 'ButtonRequest_Address';\n if (!addressRequest || addressRequest && method?.useUi) {\n await waitForPopup(context);\n }\n const data = typeof method?.getButtonRequestData === 'function' && request.code ? method?.getButtonRequestData(request.code, request.name) : undefined;\n startInteractionTimeout(context);\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.BUTTON, {\n ...request,\n device: device.toMessageObject()\n }));\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_BUTTON, {\n ...request,\n device: device.toMessageObject(),\n data\n }));\n if (addressRequest && !method?.useUi) {\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.ADDRESS_VALIDATION, data));\n }\n};\nconst onDevicePinHandler = (device, context) => async ({\n type,\n callback\n}) => {\n const {\n uiPromises,\n sendCoreMessage\n } = context;\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PIN, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PIN, {\n device: device.toMessageObject(),\n type\n }));\n try {\n const uiResp = await uiPromise.promise;\n if (uiResp.payload == null) {\n callback({\n success: false,\n error: new Error(`${events_2.UI.RECEIVE_PIN} missing payload`)\n });\n } else {\n callback({\n success: true,\n payload: uiResp.payload\n });\n }\n } catch (error) {\n callback({\n success: false,\n error\n });\n }\n};\nconst onDeviceWordHandler = (device, context) => async ({\n type,\n callback\n}) => {\n const {\n uiPromises,\n sendCoreMessage\n } = context;\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_WORD, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_WORD, {\n device: device.toMessageObject(),\n type\n }));\n try {\n const uiResp = await uiPromise.promise;\n if (uiResp.payload == null) {\n callback({\n success: false,\n error: new Error(`${events_2.UI.RECEIVE_WORD} missing payload`)\n });\n } else {\n callback({\n success: true,\n payload: uiResp.payload\n });\n }\n } catch (error) {\n callback({\n success: false,\n error\n });\n }\n};\nconst onDevicePassphraseHandler = (device, context) => async ({\n callback\n}) => {\n const {\n uiPromises,\n sendCoreMessage\n } = context;\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_PASSPHRASE, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PASSPHRASE, {\n device: device.toMessageObject()\n }));\n try {\n const uiResp = await uiPromise.promise;\n if (uiResp.payload == null) {\n callback({\n success: false,\n error: new Error(`${events_2.UI.RECEIVE_PASSPHRASE} missing payload`)\n });\n } else {\n callback({\n success: true,\n payload: uiResp.payload\n });\n }\n } catch (error) {\n callback({\n success: false,\n error\n });\n }\n};\nconst onEmptyPassphraseHandler = () => ({\n callback\n}) => {\n callback({\n success: true,\n payload: {\n value: ''\n }\n });\n};\nconst onThpPairingHandler = (device, context) => async ({\n callback,\n payload\n}) => {\n const {\n uiPromises,\n sendCoreMessage\n } = context;\n await waitForPopup(context);\n const uiPromise = uiPromises.create(events_2.UI.RECEIVE_THP_PAIRING_TAG, device);\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_THP_PAIRING, {\n device: device.toMessageObject(),\n ...payload\n }));\n try {\n const uiResp = await uiPromise.promise;\n if (uiResp.payload == null) {\n callback({\n success: false,\n error: new Error(`${events_2.UI.RECEIVE_THP_PAIRING_TAG} missing payload`)\n });\n } else {\n callback({\n success: true,\n payload: uiResp.payload\n });\n }\n } catch (error) {\n callback({\n success: false,\n error\n });\n }\n};\nconst onThpCredentialsChangedHandler = (device, context) => payload => {\n const {\n sendCoreMessage\n } = context;\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.THP_CREDENTIALS_CHANGED, {\n device: device.toMessageObject(),\n ...payload\n }));\n};\nconst registerDeviceEvents = (context, method) => device => {\n device.removeAllListeners();\n device.on(events_2.DEVICE.BUTTON, onDeviceButtonHandler(device, context, method));\n device.on(events_2.DEVICE.PIN, onDevicePinHandler(device, context));\n device.on(events_2.DEVICE.WORD, onDeviceWordHandler(device, context));\n device.on(events_2.DEVICE.PASSPHRASE, (method?.useEmptyPassphrase ? onEmptyPassphraseHandler : onDevicePassphraseHandler)(device, context));\n device.on(events_2.DEVICE.PASSPHRASE_ON_DEVICE, () => {\n context.sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.REQUEST_PASSPHRASE_ON_DEVICE, {\n device: device.toMessageObject()\n }));\n });\n device.on(events_2.DEVICE.FIRMWARE_VERSION_CHANGED, payload => {\n context.sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.FIRMWARE_VERSION_CHANGED, payload));\n });\n device.on(events_2.DEVICE.THP_PAIRING, onThpPairingHandler(device, context));\n device.on(events_2.DEVICE.THP_CREDENTIALS_CHANGED, onThpCredentialsChangedHandler(device, context));\n};\nconst onPopupClosed = (context, customErrorMessage) => {\n const {\n uiPromises,\n popupPromise,\n deviceList,\n callMethods,\n resetWaitForFirstMethod,\n sendCoreMessage\n } = context;\n const error = customErrorMessage ? constants_1.ERRORS.TypedError('Method_Cancel', customErrorMessage) : constants_1.ERRORS.TypedError('Method_Interrupted');\n if (deviceList.isConnected() && deviceList.getDeviceCount() > 0) {\n deviceList.getAllDevices().forEach(d => {\n if (d.isUsedHere()) {\n d.interrupt(error);\n } else {\n const success = uiPromises.resolve({\n type: events_2.DEVICE.DISCONNECT,\n payload: undefined\n });\n if (!success) {\n callMethods.forEach(m => {\n sendCoreMessage((0, events_2.createResponseMessage)(m.responseID, false, {\n error\n }));\n });\n callMethods.splice(0, callMethods.length);\n resetWaitForFirstMethod();\n }\n }\n });\n } else {\n uiPromises.rejectAll(error);\n popupPromise.reject(error);\n }\n cleanup(context);\n};\nconst handleDeviceSelectionChanges = (context, interruptDevice) => {\n const {\n uiPromises,\n deviceList,\n sendCoreMessage\n } = context;\n const promiseExists = uiPromises.exists(events_2.UI.RECEIVE_DEVICE);\n if (promiseExists && deviceList.isConnected()) {\n const onlyDevice = deviceList.getOnlyDevice();\n const isWebUsb = deviceList.getActiveTransports().some(t => t.type === 'WebUsbTransport');\n if (onlyDevice && !isWebUsb) {\n uiPromises.resolve({\n type: events_2.UI.RECEIVE_DEVICE,\n payload: {\n device: onlyDevice.toMessageObject()\n }\n });\n } else {\n sendCoreMessage((0, events_2.createUiMessage)(events_2.UI.SELECT_DEVICE, {\n webusb: isWebUsb,\n devices: deviceList.getAllDevices().map(d => d.toMessageObject())\n }));\n }\n }\n if (interruptDevice) {\n const {\n path\n } = interruptDevice;\n const shouldClosePopup = uiPromises.disconnected(path);\n if (shouldClosePopup) {\n closePopup(context);\n cleanup(context);\n }\n }\n};\nconst initDeviceList = context => {\n const {\n deviceList,\n sendCoreMessage\n } = context;\n deviceList.on(events_2.DEVICE.CONNECT, device => {\n handleDeviceSelectionChanges(context);\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CONNECT, device.toMessageObject()));\n });\n deviceList.on(events_2.DEVICE.CONNECT_UNACQUIRED, device => {\n handleDeviceSelectionChanges(context);\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CONNECT_UNACQUIRED, device.toMessageObject()));\n });\n deviceList.on(events_2.DEVICE.DISCONNECT, device => {\n handleDeviceSelectionChanges(context);\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.DISCONNECT, device.toMessageObject()));\n });\n deviceList.on(events_2.DEVICE.CHANGED, device => {\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.CHANGED, device.toMessageObject()));\n });\n deviceList.on(events_2.DEVICE.TREZOR_PUSH_NOTIFICATION, payload => {\n sendCoreMessage((0, events_2.createDeviceMessage)(events_2.DEVICE.TREZOR_PUSH_NOTIFICATION, {\n device: payload.device.toMessageObject(),\n mode: payload.mode,\n type: payload.type\n }));\n });\n deviceList.on(transport_1.TRANSPORT.START, transport => sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.START, transport)));\n deviceList.on(transport_1.TRANSPORT.ERROR, error => {\n _log.warn('TRANSPORT.ERROR', error.error);\n sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, error));\n });\n};\nclass Core extends events_1.default {\n abortController = new AbortController();\n callMethods = [];\n popupPromise = (0, popupPromiseManager_1.createPopupPromiseManager)();\n methodSynchronize = (0, utils_1.getSynchronize)();\n uiPromises = (0, uiPromiseManager_1.createUiPromiseManager)(() => startInteractionTimeout(this.getCoreContext()));\n waitForFirstMethod = (0, utils_1.createDeferred)();\n _interactionTimeout;\n get interactionTimeout() {\n return this._interactionTimeout ?? (0, utils_1.throwError)('Core not initialized: interactionTimeout');\n }\n _deviceList;\n get deviceList() {\n return this._deviceList ?? (0, utils_1.throwError)('Core not initialized: deviceList');\n }\n sendCoreMessage(message) {\n if (message.event === events_2.RESPONSE_EVENT) {\n const index = this.callMethods.findIndex(call => call && call.responseID === message.id);\n if (index >= 0) {\n this.callMethods.splice(index, 1);\n if (this.callMethods.length === 0) {\n this.waitForFirstMethod = (0, utils_1.createDeferred)();\n }\n }\n }\n this.emit(events_2.CORE_EVENT, message);\n }\n getCoreContext() {\n return {\n signal: this.abortController.signal,\n uiPromises: this.uiPromises,\n popupPromise: this.popupPromise,\n interactionTimeout: this.interactionTimeout,\n deviceList: this.deviceList,\n callMethods: this.callMethods,\n methodSynchronize: this.methodSynchronize,\n sendCoreMessage: this.sendCoreMessage.bind(this),\n resetWaitForFirstMethod: () => {\n this.waitForFirstMethod = (0, utils_1.createDeferred)();\n },\n resolveWaitForFirstMethod: () => {\n this.waitForFirstMethod.resolve();\n }\n };\n }\n handleMessage(message) {\n _log.debug('handleMessage', message.type);\n switch (message.type) {\n case events_2.POPUP.HANDSHAKE:\n this.popupPromise.resolve();\n break;\n case events_2.POPUP.CLOSED:\n this.popupPromise.clear();\n onPopupClosed(this.getCoreContext(), message.payload ? message.payload.error : null);\n break;\n case transport_1.TRANSPORT.DISABLE_WEBUSB:\n {\n const settings = DataManager_1.DataManager.getSettings();\n const transports = settings.transports?.filter(t => t !== 'WebUsbTransport');\n if (transports && !transports.includes('BridgeTransport')) {\n transports.unshift('BridgeTransport');\n }\n settings.transports = transports;\n resetTransports(this.getCoreContext());\n break;\n }\n case transport_1.TRANSPORT.SET_TRANSPORTS:\n DataManager_1.DataManager.getSettings().transports = message.payload.transports;\n resetTransports(this.getCoreContext());\n break;\n case transport_1.TRANSPORT.REQUEST_DEVICE:\n if (this.deviceList.isConnected()) {\n this.deviceList.enumerate();\n }\n break;\n case transport_1.TRANSPORT.GET_INFO:\n this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, true, this.getActiveTransports()));\n break;\n case events_2.UI.RECEIVE_DEVICE:\n case events_2.UI.RECEIVE_CONFIRMATION:\n case events_2.UI.RECEIVE_PERMISSION:\n case events_2.UI.RECEIVE_PIN:\n case events_2.UI.RECEIVE_PASSPHRASE:\n case events_2.UI.INVALID_PASSPHRASE_ACTION:\n case events_2.UI.RECEIVE_THP_PAIRING_TAG:\n case events_2.UI.RECEIVE_ACCOUNT:\n case events_2.UI.RECEIVE_FEE:\n case events_2.UI.RECEIVE_WORD:\n case events_2.UI.LOGIN_CHALLENGE_RESPONSE:\n this.uiPromises.resolve(message);\n break;\n case events_2.UI.RECEIVE_FIRMWARE:\n {\n const localFirmwares = message.payload && (0, connectSettings_1.parseLocalFirmwares)(message.payload);\n if (localFirmwares) {\n DataManager_1.DataManager.setLocalFirmwares(localFirmwares);\n }\n break;\n }\n case events_2.IFRAME.CALL:\n if (message.payload.method === 'firmwareUpdate') {\n (0, DeviceList_1.assertDeviceListConnected)(this.deviceList);\n const coreContext = this.getCoreContext();\n (0, onCallFirmwareUpdate_1.onCallFirmwareUpdate)({\n params: message.payload,\n context: {\n deviceList: this.deviceList,\n postMessage: this.sendCoreMessage.bind(this),\n initDevice: path => initDevice(coreContext, {\n path\n }),\n log: _log,\n abortSignal: this.abortController.signal,\n registerEvents: registerDeviceEvents(coreContext),\n uiPromises: coreContext.uiPromises\n }\n }).then(payload => {\n this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, true, payload));\n }).catch(error => {\n this.sendCoreMessage((0, events_2.createResponseMessage)(message.id, false, {\n error\n }));\n _log.error('onCallFirmwareUpdate', error);\n });\n } else {\n onCall(this.getCoreContext(), message).catch(error => {\n _log.error('onCall', error);\n });\n }\n }\n }\n dispose() {\n (0, BlockchainLink_1.dispose)();\n this.removeAllListeners();\n this.abortController.abort();\n this.deviceList.dispose();\n }\n async getCurrentMethod() {\n await this.waitForFirstMethod.promise;\n return await this.methodSynchronize(() => this.callMethods[0]);\n }\n getActiveTransports() {\n if (this.deviceList.isConnected()) {\n return this.deviceList.getActiveTransports();\n }\n }\n enumerate() {\n if (this.deviceList.isConnected()) {\n this.deviceList.enumerate();\n }\n }\n async init(settings, onCoreEvent, logWriterFactory) {\n if (logWriterFactory) {\n (0, debug_1.setLogWriter)(logWriterFactory);\n }\n const throttlePromise = (0, utils_1.createDeferred)();\n throttlePromise.promise.catch(() => {});\n const onCoreEventThrottled = message => throttlePromise.promise.then(() => onCoreEvent(message));\n try {\n await DataManager_1.DataManager.load(settings);\n const localFirmwares = settings.localFirmwares && (0, connectSettings_1.parseLocalFirmwares)(settings.localFirmwares);\n if (localFirmwares) {\n DataManager_1.DataManager.setLocalFirmwares(localFirmwares);\n }\n const {\n debug,\n priority,\n manifest\n } = DataManager_1.DataManager.getSettings();\n const messages = DataManager_1.DataManager.getProtobufMessages();\n (0, debug_1.enableLog)(debug);\n this._interactionTimeout = new interactionTimeout_1.InteractionTimeout(settings.popup ? settings.interactionTimeout : 0);\n this._deviceList = new DeviceList_1.DeviceList({\n debug,\n messages,\n priority,\n manifest\n });\n initDeviceList(this.getCoreContext());\n this.on(events_2.CORE_EVENT, onCoreEventThrottled);\n } catch (error) {\n _log.error('init', error);\n throttlePromise.reject(error);\n throw error;\n }\n const {\n transports,\n pendingTransportEvent,\n transportReconnect,\n coreMode\n } = DataManager_1.DataManager.getSettings();\n try {\n this.deviceList.init({\n transports,\n pendingTransportEvent,\n transportReconnect\n });\n } catch (error) {\n this.sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, {\n error\n }));\n throttlePromise.reject(error);\n throw error;\n }\n if (!transportReconnect || coreMode === 'auto') {\n await this.deviceList.pendingConnection();\n }\n this.on(events_2.CORE_EVENT, onCoreEvent);\n this.off(events_2.CORE_EVENT, onCoreEventThrottled);\n setTimeout(throttlePromise.resolve, 0);\n }\n}\nexports.Core = Core;\nconst resetTransports = async ({\n deviceList,\n sendCoreMessage\n}) => {\n const {\n transports,\n pendingTransportEvent,\n transportReconnect\n } = DataManager_1.DataManager.getSettings();\n try {\n await deviceList.init({\n transports,\n pendingTransportEvent,\n transportReconnect\n });\n } catch (error) {\n sendCoreMessage((0, events_2.createTransportMessage)(transport_1.TRANSPORT.ERROR, {\n error\n }));\n }\n};\nconst initCore = async (...params) => {\n const core = new Core();\n await core.init(...params);\n return core;\n};\nconst disposeCore = core => {\n core.dispose();\n};\nconst initCoreState = () => (0, utils_1.createLazy)(initCore, disposeCore);\nexports.initCoreState = initCoreState;\n//# sourceMappingURL=index.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.factory = exports.connectCallableMethods = void 0;\nconst events_1 = require(\"./events\");\nexports.connectCallableMethods = ['applyFlags', 'applySettings', 'authenticateDevice', 'authorizeCoinjoin', 'backupDevice', 'bleUnpair', 'blockchainDisconnect', 'blockchainEstimateFee', 'blockchainEvmRpcCall', 'blockchainGetAccountBalanceHistory', 'blockchainGetCurrentFiatRates', 'blockchainGetFiatRatesForTimestamps', 'blockchainGetInfo', 'blockchainGetTransactions', 'blockchainSetCustomBackend', 'blockchainSubscribe', 'blockchainSubscribeFiatRates', 'blockchainUnsubscribe', 'blockchainUnsubscribeFiatRates', 'cancelCoinjoinAuthorization', 'cardanoComposeTransaction', 'cardanoGetAddress', 'cardanoGetNativeScriptHash', 'cardanoGetPublicKey', 'cardanoSignMessage', 'cardanoSignTransaction', 'changeLanguage', 'changePin', 'changeWipeCode', 'cipherKeyValue', 'composeTransaction', 'discoverAccounts', 'eosGetPublicKey', 'eosSignTransaction', 'ethereumGetAddress', 'ethereumGetPublicKey', 'ethereumSignMessage', 'ethereumSignTransaction', 'ethereumSignTypedData', 'ethereumVerifyMessage', 'evoluGetDelegatedIdentityKey', 'evoluGetNode', 'evoluSignRegistrationRequest', 'firmwareUpdate', 'getAccountDescriptor', 'getAccountInfo', 'getAddress', 'getCoinInfo', 'getDeviceState', 'getFeatures', 'getFirmwareHash', 'getNonce', 'getOwnershipId', 'getOwnershipProof', 'getPublicKey', 'getSettings', 'loadDevice', 'moneroGetAddress', 'moneroGetWatchKey', 'moneroKeyImageSync', 'moneroSignTransaction', 'nemGetAddress', 'nemSignTransaction', 'pushTransaction', 'recoveryDevice', 'requestLogin', 'resetDevice', 'rippleGetAddress', 'rippleSignTransaction', 'setBrightness', 'setBusy', 'setProxy', 'showDeviceTutorial', 'signMessage', 'signTransaction', 'solanaComposeTransaction', 'solanaGetAddress', 'solanaGetPublicKey', 'solanaSignTransaction', 'stellarGetAddress', 'stellarSignTransaction', 'tezosGetAddress', 'tezosGetPublicKey', 'tezosSignTransaction', 'thpGetCredentials', 'thpRemoveCredentials', 'unlockPath', 'verifyMessage', 'wipeDevice'];\nconst factory = ({\n eventEmitter,\n manifest,\n init,\n call,\n setTransports,\n uiResponse,\n cancel,\n dispose\n}, extraMethods = {}) => {\n const callableMethods = Object.fromEntries(exports.connectCallableMethods.map(method => [method, params => call({\n ...params,\n method,\n useEventListener: method.toLowerCase().endsWith('getaddress') ? eventEmitter.listenerCount(events_1.UI.ADDRESS_VALIDATION) > 0 : undefined\n })]));\n return {\n manifest,\n init,\n setTransports,\n on: (type, fn) => {\n eventEmitter.on(type, fn);\n },\n off: (type, fn) => {\n eventEmitter.removeListener(type, fn);\n },\n removeAllListeners: type => {\n if (typeof type === 'string') {\n eventEmitter.removeAllListeners(type);\n } else {\n eventEmitter.removeAllListeners();\n }\n },\n uiResponse,\n call,\n dispose,\n cancel,\n ...callableMethods,\n ...extraMethods\n };\n};\nexports.factory = factory;\n//# sourceMappingURL=factory.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parseConnectSettings = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./constants\"), exports);\ntslib_1.__exportStar(require(\"./events\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\nvar connectSettings_1 = require(\"./data/connectSettings\");\nObject.defineProperty(exports, \"parseConnectSettings\", {\n enumerable: true,\n get: function () {\n return connectSettings_1.parseConnectSettings;\n }\n});\n//# sourceMappingURL=exports.js.map", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.eventEmitter = void 0;\nconst tslib_1 = require(\"tslib\");\nconst events_1 = tslib_1.__importDefault(require(\"events\"));\nconst utils_1 = require(\"@trezor/utils\");\nconst constants_1 = require(\"./constants\");\nconst core_1 = require(\"./core\");\nconst connectSettings_1 = require(\"./data/connectSettings\");\nconst events_2 = require(\"./events\");\nconst factory_1 = require(\"./factory\");\nconst debug_1 = require(\"./utils/debug\");\nexports.eventEmitter = new events_1.default();\nconst _log = (0, debug_1.initLog)('@trezor/connect');\nlet _settings = (0, connectSettings_1.parseConnectSettings)();\nconst coreManager = (0, core_1.initCoreState)();\nconst messagePromises = (0, utils_1.createDeferredManager)({\n initialId: 1\n});\nconst manifest = data => {\n _settings = (0, connectSettings_1.parseConnectSettings)({\n ..._settings,\n manifest: data\n });\n};\nconst dispose = () => {\n exports.eventEmitter.removeAllListeners();\n _settings = (0, connectSettings_1.parseConnectSettings)();\n coreManager.dispose();\n};\nconst onCoreEvent = message => {\n const {\n event,\n type,\n payload\n } = message;\n if (type === events_2.UI.REQUEST_UI_WINDOW) {\n coreManager.get()?.handleMessage({\n type: events_2.POPUP.HANDSHAKE\n });\n return;\n }\n if (type === events_2.POPUP.CANCEL_POPUP_REQUEST) return;\n _log.debug('handleMessage', message.type);\n switch (event) {\n case events_2.RESPONSE_EVENT:\n {\n const {\n id = 0,\n success,\n device\n } = message;\n const resolved = messagePromises.resolve(id, {\n id,\n success,\n payload,\n device\n });\n if (!resolved) _log.warn(`Unknown message id ${id}`);\n break;\n }\n case events_2.DEVICE_EVENT:\n exports.eventEmitter.emit(event, message);\n exports.eventEmitter.emit(type, payload);\n break;\n case events_2.TRANSPORT_EVENT:\n exports.eventEmitter.emit(event, message);\n exports.eventEmitter.emit(type, payload);\n break;\n case events_2.BLOCKCHAIN_EVENT:\n exports.eventEmitter.emit(event, message);\n exports.eventEmitter.emit(type, payload);\n break;\n case events_2.UI_EVENT:\n exports.eventEmitter.emit(event, message);\n exports.eventEmitter.emit(type, payload);\n break;\n default:\n _log.warn('Undefined message', event, message);\n }\n};\nconst initSettings = (settings = {}) => {\n _settings = (0, connectSettings_1.parseConnectSettings)({\n ..._settings,\n ...settings,\n popup: false\n });\n if (!_settings.manifest) {\n throw constants_1.ERRORS.TypedError('Init_ManifestMissing');\n }\n if (!_settings.transports?.length) {\n _settings.transports = ['BridgeTransport'];\n }\n};\nconst init = async (settings = {}) => {\n if (coreManager.get() || coreManager.getPending()) {\n throw constants_1.ERRORS.TypedError('Init_AlreadyInitialized');\n }\n initSettings(settings);\n if (!_settings.lazyLoad) {\n await coreManager.getOrInit(_settings, onCoreEvent);\n }\n};\nconst initCore = () => {\n initSettings({\n lazyLoad: false\n });\n return coreManager.getOrInit(_settings, onCoreEvent);\n};\nconst call = async params => {\n let core;\n try {\n core = coreManager.get() ?? (await coreManager.getPending()) ?? (await initCore());\n } catch (error) {\n return (0, events_2.createErrorMessage)(error);\n }\n try {\n const {\n promiseId,\n promise\n } = messagePromises.create();\n core.handleMessage({\n type: events_2.IFRAME.CALL,\n payload: params,\n id: promiseId\n });\n const response = await promise;\n return response ?? (0, events_2.createErrorMessage)(constants_1.ERRORS.TypedError('Method_NoResponse'));\n } catch (error) {\n _log.error('call', error);\n return (0, events_2.createErrorMessage)(error);\n }\n};\nconst setTransports = payload => {\n const core = coreManager.get();\n if (!core) {\n throw constants_1.ERRORS.TypedError('Init_NotInitialized');\n }\n core.handleMessage({\n type: events_2.TRANSPORT.SET_TRANSPORTS,\n payload\n });\n};\nconst uiResponse = response => {\n const core = coreManager.get();\n if (!core) {\n throw constants_1.ERRORS.TypedError('Init_NotInitialized');\n }\n core.handleMessage(response);\n};\nconst cancel = error => {\n const core = coreManager.get();\n if (!core) {\n throw constants_1.ERRORS.TypedError('Runtime', 'postMessage: _core not found');\n }\n core.handleMessage({\n type: events_2.POPUP.CLOSED,\n payload: error ? {\n error\n } : null\n });\n};\nconst TrezorConnect = (0, factory_1.factory)({\n eventEmitter: exports.eventEmitter,\n manifest,\n init,\n call,\n setTransports,\n uiResponse,\n cancel,\n dispose\n}, {});\nexports.default = TrezorConnect;\ntslib_1.__exportStar(require(\"./exports\"), exports);\n//# sourceMappingURL=index.js.map", "import { type NetworkType } from './ConceroNetwork';\n\nexport const networkTypes: Record = {\n\tmainnet: 'mainnet',\n\ttestnet: 'testnet',\n\tlocalhost: 'localhost',\n};\n", "import { defineChain } from 'viem';\n\nimport { type ChainDefinition } from '../types';\n\nexport function createViemChain(\n\tchainDefinition: ChainDefinition\n): ReturnType {\n\treturn defineChain({\n\t\tid: chainDefinition.id,\n\t\tname: chainDefinition.name,\n\t\tnativeCurrency: {\n\t\t\tdecimals: 18,\n\t\t\tname: 'eth',\n\t\t\tsymbol: 'eth',\n\t\t},\n\t\trpcUrls: {\n\t\t\tdefault: { http: chainDefinition.rpcUrls },\n\t\t},\n\t\tblockExplorers: chainDefinition.blockExplorer\n\t\t\t? {\n\t\t\t\tdefault: {\n\t\t\t\t\tname: chainDefinition.blockExplorer.name,\n\t\t\t\t\turl: chainDefinition.blockExplorer.url,\n\t\t\t\t},\n\t\t\t}\n\t\t\t: undefined,\n\t\ttestnet: chainDefinition.isTestnet,\n\t});\n}\n", "import process from 'process';\nimport { Address } from 'viem';\n\nimport { warn } from './log';\nimport { shorten } from './formatting';\nimport { getNetworkEnvKey } from '../networks';\n\nexport function getEnvVar(key: string, defaultValue?: string): string {\n\tconst value = process.env[key];\n\tif (value === undefined || value === '') {\n\t\tif (defaultValue !== undefined) return defaultValue;\n\t\twarn(`Missing env variable: ${key}`, 'getEnvVar');\n\t\treturn '';\n\t}\n\n\treturn value;\n}\n\nexport interface EnvAddressConfig> {\n\tprefixes: TPrefixes;\n}\n\nexport function createEnvAddressGetter>(\n\tconfig: EnvAddressConfig,\n) {\n\tfunction getEnvAddress(\n\t\tprefix: keyof TPrefixes,\n\t\tnetworkName?: string,\n\t): [Address, string] {\n\t\tconst searchKey = networkName\n\t\t\t? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkName)}`\n\t\t\t: config.prefixes[prefix];\n\n\t\tconst value = getEnvVar(searchKey) as Address;\n\t\tconst friendlyName = `${String(prefix)}(${shorten(value)})`\n\n\t\treturn [value, friendlyName];\n\t}\n\n\treturn { getEnvAddress };\n}\n", "const networkColors: Record = {\n\tethereum: '\\x1b[30m', // grey\n\tarbitrum: '\\x1b[34m', // blue\n\tpolygon: '\\x1b[35m', // magenta\n\tavalanche: '\\x1b[31m', // red\n\tbase: '\\x1b[36m', // cyan\n\tethereumSepolia: '\\x1b[30m', // grey\n\tarbitrumSepolia: '\\x1b[34m', // blue\n\toptimismSepolia: '\\x1b[31m', // red\n\tpolygonAmoy: '\\x1b[35m', // magenta\n\tavalancheFuji: '\\x1b[31m', // red\n\tbaseSepolia: '\\x1b[36m', // cyan\n\thardhat: '\\x1b[32m', // green\n\tlocalhost: '\\x1b[32m', // green\n};\nconst reset = '\\x1b[0m';\n\nexport function log(message: any, functionName: string, networkName?: string) {\n\tconst greenFill = '\\x1b[32m';\n\tconst network = networkName ? `\\x1b[35m[${networkName}]${reset}` : '';\n\n\tconsole.log(`${network}${greenFill}[${functionName}]${reset}`, message);\n}\n\nexport function warn(message: any, functionName: string) {\n\tconst yellowFill = '\\x1b[33m';\n\n\tconsole.log(`${yellowFill}[${functionName}]${reset}`, message);\n}\n\nexport function err(message: any, functionName: string, networkName?: string) {\n\tconst redFill = '\\x1b[31m';\n\tconst network = networkName\n\t\t? `${networkColors[networkName]}[${networkName}]${reset}`\n\t\t: '';\n\n\tconsole.log(\n\t\t`${network}${redFill}[${functionName}] ERROR:${reset}`,\n\t\tmessage\n\t);\n}\n\nexport default log;\n", "import { type Address } from \"viem\";\n\nexport function shorten(address: Address) {\n\treturn `${address.slice(0, 6)}...${address.slice(-4)}`;\n}\n\nexport function formatGas(gasAmountWei: bigint) {\n\t// splits gas number with commas like so: 1,000,000\n\treturn gasAmountWei.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n", "/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkEnvKey(networkName: string): string {\n if (!networkName) {\n throw new Error('Network name must be provided');\n }\n return camelCaseToCapsSnakeCase(networkName);\n}\n\n/**\n * Converts a network name from camelCase to SNAKE_CASE\n *\n * @param networkName The network name in camelCase\n * @returns The network name in SNAKE_CASE\n */\nexport function getNetworkKey(NETWORK_NAME: string): string {\n if (!NETWORK_NAME) {\n throw new Error('Network name must be provided');\n }\n return capsSnakeCaseToCamelCase(NETWORK_NAME);\n}\n\n/**\n * Converts a string from CAPS_SNAKE_CASE to camelCase\n *\n * @param snakeCaseString The string in CAPS_SNAKE_CASE format\n * @returns The string converted to camelCase format\n */\nexport function capsSnakeCaseToCamelCase(snakeCaseString: string): string {\n if (!snakeCaseString) {\n throw new Error('String must be provided');\n }\n\n return snakeCaseString\n .toLowerCase()\n .replace(/_([a-z])/g, (_, char) => char.toUpperCase());\n}\n\n/**\n * Converts a string from camelCase to CAPS_SNAKE_CASE\n *\n * @param camelCaseString The string in camelCase format\n * @returns The string converted to CAPS_SNAKE_CASE format\n */\nexport function camelCaseToCapsSnakeCase(camelCaseString: string): string {\n if (!camelCaseString) {\n throw new Error('String must be provided');\n }\n\n return camelCaseString.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n}\n\nexport function getNetworkName(networkEnvKey: string): string {\n if (!networkEnvKey) {\n throw new Error('Network name must be provided');\n }\n\n return networkEnvKey\n .toLowerCase()\n .split('_')\n .map((word, index) =>\n index === 0 ? word : word[0].toUpperCase() + word.slice(1)\n )\n .join('');\n}\n", "import { getEnvVar } from './getEnvVar';\n\nexport const getTrezorDeployEnabled = () =>\n\tgetEnvVar('TREZOR_DEPLOY_ENABLED', 'false') === 'true';\n", "import { type NetworkType } from '../types';\nimport { warn } from './log';\n\nexport interface BaseAccountTypePrefixes extends Record {\n\tproxyDeployer: 'PROXY_DEPLOYER';\n\tdeployer: 'DEPLOYER';\n}\n\nexport const baseAccountTypePrefixes: BaseAccountTypePrefixes = {\n\tproxyDeployer: 'PROXY_DEPLOYER',\n\tdeployer: 'DEPLOYER'\n};\n\nexport interface WalletGetterConfig> {\n\taccountTypePrefixes: TPrefixes;\n}\n\nexport function createWalletGetter>(\n\tconfig: WalletGetterConfig,\n) {\n\tfunction getWallet(\n\t\tchainType: NetworkType,\n\t\taccountType: keyof TPrefixes,\n\t\twalletType: 'privateKey' | 'address',\n\t) {\n\t\tconst prefix = config.accountTypePrefixes[accountType];\n\t\tif (!prefix) {\n\t\t\tthrow new Error(`Unknown account type: ${String(accountType)}`);\n\t\t}\n\n\t\tconst walletKey = walletType === 'privateKey' ? 'PRIVATE_KEY' : 'ADDRESS';\n\t\tconst envKey = `${chainType.toUpperCase()}_${prefix}_${walletKey}`;\n\t\tconst walletValue = process.env[envKey];\n\n\t\tif (!walletValue) {\n\t\t\twarn(`Missing env variable: ${envKey}`, 'getWallet');\n\t\t}\n\n\t\treturn walletValue;\n\t}\n\n\treturn { getWallet };\n}\n\nexport const { getWallet } = createWalletGetter({\n\taccountTypePrefixes: baseAccountTypePrefixes,\n});\n", "import { HardhatRuntimeEnvironment } from \"hardhat/types\";\nimport { Address, Hash } from \"viem\";\n\nimport { log } from \"./log\";\n\nexport const ethersSignerCallContract = async (\n\thre: HardhatRuntimeEnvironment,\n\tcontract: Address,\n\tabi: any[],\n\tfunctionName: string,\n\t...functionArgs: any[]\n) => {\n\tconst [ethersSigner] = await hre.ethers.getSigners();\n\tconst ethersContract = new hre.ethers.Contract(contract, abi, ethersSigner);\n\tconst unsignedTx = await ethersContract[functionName].populateTransaction(...functionArgs);\n\n\tlog(\n\t\t`Size: ${(unsignedTx.data.length - 2) / 2}, Input data: ${unsignedTx.data}, Address: ${unsignedTx.to}`,\n\t\tfunctionName,\n\t\thre.network.name,\n\t);\n\n\treturn (await ethersSigner.sendTransaction(unsignedTx)).hash as Hash;\n};\n", "/*\nhardhat compile\n --concurrency Number of compilation jobs executed in parallel. Defaults to the number of CPU cores - 1 (default: 9)\n --force Force compilation ignoring cache\n --no-size-contracts Don't size contracts after running this task, even if runOnCompile option is enabled\n --no-typechain Skip Typechain compilation\n --quiet Makes the compilation process less verbose\n */\nimport { execSync } from \"child_process\";\n\ninterface HardhatCompileParams {\n\tconcurrency?: number;\n\tforce?: boolean;\n\tnoSizeContracts?: boolean;\n\tnoTypechain?: boolean;\n\tquiet?: boolean;\n}\n\nexport function compileContracts({ quiet = true, force = false }: HardhatCompileParams) {\n\tconst packageManager = process.env[\"PACKAGE_MANAGER\"] || \"yarn\";\n\tconst command = `${packageManager} compile`;\n\tconst args = [];\n\t// if (concurrency) args.push(`--concurrency ${concurrency}`);\n\t// if (noSizeContracts) args.push(\"--no-size-contracts\");\n\t// if (noTypechain) args.push(\"--no-typechain\");\n\tif (quiet) args.push(\"--quiet\");\n\tif (force) args.push(\"--force\");\n\texecSync(`${command} ${args.join(\" \")}`, { stdio: \"inherit\" });\n}\n", "import { defineChain } from \"viem\";\n\nexport const localhostViemChain = defineChain({\n\tid: Number(process.env.LOCALHOST_FORK_CHAIN_ID),\n\tname: \"localhost\",\n\tnativeCurrency: {\n\t\tdecimals: 18,\n\t\tname: \"eth\",\n\t\tsymbol: \"eth\",\n\t},\n\trpcUrls: {\n\t\tdefault: { http: [process.env.LOCALHOST_RPC_URL ?? \"http://127.0.0.1:8545\"] },\n\t},\n\ttestnet: true,\n});\n\nexport const hardhatViemChain = defineChain({\n\tid: Number(process.env.HARDHAT_CHAIN_ID),\n\tname: \"hardhat\",\n\tnativeCurrency: {\n\t\tdecimals: 18,\n\t\tname: \"eth\",\n\t\tsymbol: \"eth\",\n\t},\n\trpcUrls: {\n\t\tdefault: { http: [process.env.HARDHAT_RPC_URL ?? \"http://127.0.0.1:8545\"] },\n\t},\n\ttestnet: true,\n});\n", "import { ethers } from 'ethers';\nimport { Log } from 'viem';\nimport { IDeployResult } from '../deploy/GenericDeploy';\n\nexport function extractProxyAdminAddress(receipt: IDeployResult['receipt']): string {\n\tconst adminChangedTopic = ethers.id('AdminChanged(address,address)');\n\tconst adminChangedLog = receipt.logs.find((log: ethers.Log | Log) => log.topics[0] === adminChangedTopic);\n\n\tif (!adminChangedLog) throw new Error('AdminChanged(address,address) log not found');\n\n\tconst abiCoder = ethers.AbiCoder.defaultAbiCoder();\n\tconst [, newAdmin] = abiCoder.decode(['address', 'address'], adminChangedLog.data);\n\treturn newAdmin;\n}\n", "import { existsSync, readFileSync, writeFileSync } from \"fs\";\nimport path from \"path\";\nimport { getNetworkEnvKey } from \"../networks/getNetworkEnvKey\";\nimport log from \"./log\";\n\nexport interface EnvUpdaterConfig> {\n\tprefixes: TPrefixes;\n\tbasePath: string;\n}\n\nexport function createEnvUpdater<\n\tTPrefixes extends Record,\n\tTEnvFileName extends string,\n>(config: EnvUpdaterConfig) {\n\tfunction updateEnvVariable(\n\t\tkey: string,\n\t\tnewValue: string,\n\t\tenvFileName: TEnvFileName,\n\t): void {\n\t\tconst filePath = path.join(config.basePath, `.env.${envFileName}`);\n\n\t\tif (!existsSync(filePath)) {\n\t\t\tthrow new Error(`File not found: ${filePath}`);\n\t\t}\n\n\t\tconst envContents = readFileSync(filePath, \"utf8\");\n\t\tlet lines = envContents.split(/\\r?\\n/);\n\n\t\tconst keyExists = lines.some(line => line.startsWith(`${key}=`));\n\n\t\tif (!keyExists) {\n\t\t\tlog(\n\t\t\t\t`Key ${key} not found in .env file. Adding to ${filePath}`,\n\t\t\t\t\"updateEnvVariable\",\n\t\t\t);\n\t\t\tlines.push(`${key}=${newValue}`);\n\t\t} else {\n\t\t\tlines = lines.map(line => {\n\t\t\t\tconst [currentKey] = line.split(\"=\");\n\t\t\t\tif (currentKey === key) {\n\t\t\t\t\treturn `${key}=${newValue}`;\n\t\t\t\t}\n\t\t\t\treturn line;\n\t\t\t});\n\t\t}\n\n\t\twriteFileSync(filePath, lines.join(\"\\n\"));\n\t\tprocess.env[key] = newValue;\n\t}\n\n\tfunction updateEnvAddress(\n\t\tprefix: keyof TPrefixes,\n\t\tnewValue: string,\n\t\tenvFileName: TEnvFileName,\n\t\tnetworkPostfix?: string,\n\t): void {\n\t\tconst searchKey = networkPostfix\n\t\t\t? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkPostfix)}`\n\t\t\t: String(config.prefixes[prefix]);\n\n\t\tupdateEnvVariable(searchKey, newValue, envFileName);\n\t}\n\n\treturn { updateEnvVariable, updateEnvAddress };\n}\n", "import { PublicClient } from 'viem';\n\ntype GasData = {\n\tgasPrice?: string;\n\tmaxFeePerGas?: string;\n\tmaxPriorityFeePerGas?: string;\n};\n\nexport async function getActualGasData(\n\tpublicClient: PublicClient\n): Promise {\n\tconst block = await publicClient.getBlock();\n\n\tconst isEIP1559 = !!block.baseFeePerGas;\n\n\tlet gasPrice = 0n;\n\tlet maxPriorityFeePerGas = 0n;\n\ttry {\n\t\tif (isEIP1559) {\n\t\t\tconst { maxFeePerGas } = await publicClient.estimateFeesPerGas();\n\t\t\tgasPrice = maxFeePerGas;\n\t\t\tmaxPriorityFeePerGas =\n\t\t\t\tawait publicClient.estimateMaxPriorityFeePerGas();\n\t\t} else {\n\t\t\tgasPrice = await publicClient.getGasPrice();\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Error getting actual gas data:', error);\n\t\treturn {\n\t\t\tgasPrice: '0',\n\t\t\tmaxFeePerGas: '0',\n\t\t\tmaxPriorityFeePerGas: '0',\n\t\t};\n\t}\n\n\tconst gasDataLegacy = {\n\t\tgasPrice: gasPrice.toString(),\n\t};\n\n\tconst gasDataEIP1559 = {\n\t\tmaxFeePerGas: gasPrice.toString(),\n\t\tmaxPriorityFeePerGas: maxPriorityFeePerGas.toString(),\n\t};\n\n\tconst gasData: GasData = isEIP1559 ? gasDataEIP1559 : gasDataLegacy;\n\n\treturn gasData;\n}\n", "import {\n\tChain,\n\tcreatePublicClient,\n\tcreateTestClient,\n\tcreateWalletClient,\n\tfallback,\n\thttp,\n\tnonceManager,\n\tpublicActions,\n\ttype PublicClient,\n\ttype TestClient,\n\twalletActions,\n\ttype WalletClient,\n} from 'viem';\nimport { type PrivateKeyAccount, privateKeyToAccount } from 'viem/accounts';\n\nimport { conceroNetworks } from '../constants/conceroNetworks';\nimport { type ConceroNetwork, type NetworkType } from '../types';\nimport { type BaseAccountTypePrefixes, getWallet } from '../utils';\nimport { localhostViemChain } from './localhostViemChain';\n\nfunction getClients(\n\tviemChain: Chain,\n\turl: string | undefined,\n\taccount: PrivateKeyAccount = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`)\n): {\n\twalletClient: WalletClient;\n\tpublicClient: PublicClient;\n\taccount: PrivateKeyAccount;\n} {\n\tconst publicClient = createPublicClient({\n\t\ttransport: http(url),\n\t\tchain: viemChain,\n\t});\n\tconst walletClient = createWalletClient({\n\t\ttransport: http(url),\n\t\tchain: viemChain,\n\t\taccount,\n\t});\n\n\treturn { walletClient, publicClient, account };\n}\n\nexport type ExtendedTestClient = TestClient & WalletClient & PublicClient;\n\nfunction getTestClient(account: PrivateKeyAccount): ExtendedTestClient {\n\tconst testClient = createTestClient({\n\t\tchain: localhostViemChain,\n\t\tmode: 'hardhat',\n\t\ttransport: http(),\n\t\taccount,\n\t})\n\t\t.extend(publicActions)\n\t\t.extend(walletActions);\n\n\treturn testClient as unknown as ExtendedTestClient;\n}\n\nfunction getFallbackClients(\n\tchain: ConceroNetwork,\n\taccount?: PrivateKeyAccount\n): {\n\twalletClient: WalletClient;\n\tpublicClient: PublicClient;\n\taccount: PrivateKeyAccount;\n} {\n\tif (!account) {\n\t\tswitch (chain.type) {\n\t\t\tcase 'mainnet':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.MAINNET_DEPLOYER_PRIVATE_KEY}`);\n\t\t\t\tbreak;\n\t\t\tcase 'testnet':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`, {\n\t\t\t\t\tnonceManager: nonceManager,\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase 'localhost':\n\t\t\t\taccount = privateKeyToAccount(`0x${process.env.LOCALHOST_DEPLOYER_PRIVATE_KEY}`);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unsupported chain type: ${chain.type}`);\n\t\t}\n\t}\n\n\tconst { viemChain, name } = chain;\n\n\tif (!conceroNetworks[name].rpcUrls.length) {\n\t\tthrow new Error(`No URLs configured for chain: ${name}`);\n\t}\n\n\tconst transport = fallback(\n\t\tconceroNetworks[name].rpcUrls.map((url) => http(url)),\n\t\t{\n\t\t\tretryCount: 3,\n\t\t}\n\t);\n\tconst publicClient = createPublicClient({ transport, chain: viemChain });\n\tconst walletClient = createWalletClient({\n\t\ttransport,\n\t\tchain: viemChain,\n\t\taccount,\n\t});\n\n\treturn { walletClient, publicClient, account };\n}\n\nfunction getViemAccount(chainType: NetworkType, accountType: keyof BaseAccountTypePrefixes) {\n\tconst privateKey = `0x${getWallet(chainType, accountType, 'privateKey')}`;\n\n\treturn privateKeyToAccount(privateKey as `0x${string}`, {\n\t\tnonceManager: nonceManager,\n\t});\n}\n\nexport interface ViemAccountGetterConfig> {\n\taccountTypePrefixes: TPrefixes;\n\tgetWallet: (\n\t\tchainType: NetworkType,\n\t\taccountType: keyof TPrefixes,\n\t\twalletType: 'privateKey' | 'address'\n\t) => string | undefined;\n}\n\nexport function createViemAccountGetter>(\n\tconfig: ViemAccountGetterConfig\n) {\n\tfunction getViemAccount(chainType: NetworkType, accountType: keyof TPrefixes) {\n\t\tconst privateKey = `0x${config.getWallet(chainType, accountType, 'privateKey')}`;\n\n\t\treturn privateKeyToAccount(privateKey as `0x${string}`, {\n\t\t\tnonceManager: nonceManager,\n\t\t});\n\t}\n\n\treturn { getViemAccount };\n}\n\nexport { getClients, getFallbackClients, getTestClient, getViemAccount };\n", "import mainnetChains from '@concero/concero-networks/output/chains.mainnet.json';\nimport testnetChains from '@concero/concero-networks/output/chains.testnet.json';\nimport type { Chain } from '@concero/concero-networks/src/types';\n\nimport { type ChainDefinition, type ConceroNetwork, type NetworkType, networkTypes } from '../types';\nimport { createViemChain, getWallet } from '../utils';\n\nconst mainnetProxyDeployerPK = getWallet('mainnet', 'proxyDeployer', 'privateKey');\nconst testnetProxyDeployerPK = getWallet('testnet', 'proxyDeployer', 'privateKey');\n\nconst mainnetDeployerPK = getWallet('mainnet', 'deployer', 'privateKey');\nconst testnetDeployerPK = getWallet('testnet', 'deployer', 'privateKey');\n\nconst testnetAccounts = [testnetDeployerPK, testnetProxyDeployerPK];\n\nexport type ConceroMainnetNetworkNames = (typeof mainnetChains)[keyof typeof mainnetChains]['name'];\nexport type ConceroTestnetNetworkNames = (typeof testnetChains)[keyof typeof testnetChains]['name'];\n\nfunction createExtendedNetworks>(\n\tchains: T,\n\tnetworkType: NetworkType,\n\taccounts: (string | undefined)[]\n): Record {\n\tconst validAccounts = accounts.filter((acc): acc is string => !!acc);\n\n\treturn Object.fromEntries(\n\t\tObject.values(chains).map((chain) => {\n\t\t\tconst chainDefinition: ChainDefinition = {\n\t\t\t\tid: parseInt(chain.id),\n\t\t\t\tname: chain.name,\n\t\t\t\trpcUrls: chain.rpcUrls,\n\t\t\t\tisTestnet: chain.isTestnet ?? false,\n\t\t\t\t...(chain.blockExplorers?.[0] && {\n\t\t\t\t\tblockExplorer: {\n\t\t\t\t\t\tname: chain.blockExplorers[0].name,\n\t\t\t\t\t\turl: chain.blockExplorers[0].url,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t};\n\n\t\t\tconst viemChain = createViemChain(chainDefinition);\n\n\t\t\treturn [\n\t\t\t\tchain.name,\n\t\t\t\t{\n\t\t\t\t\tname: chain.name,\n\t\t\t\t\tchainId: parseInt(chain.id),\n\t\t\t\t\ttype: networkType,\n\t\t\t\t\turl: chain.rpcUrls[0] || '',\n\t\t\t\t\trpcUrls: chain.rpcUrls,\n\t\t\t\t\tsaveDeployments: false,\n\t\t\t\t\taccounts: validAccounts,\n\t\t\t\t\tchainSelector: BigInt(chain.chainSelector),\n\t\t\t\t\tconfirmations: 1,\n\t\t\t\t\tviemChain,\n\t\t\t\t},\n\t\t\t];\n\t\t})\n\t) as Record;\n}\n\nexport const testnetNetworks = createExtendedNetworks(\n\ttestnetChains as unknown as Record,\n\tnetworkTypes.testnet,\n\ttestnetAccounts\n);\n\nexport const mainnetNetworks = createExtendedNetworks(\n\tmainnetChains as unknown as Record,\n\tnetworkTypes.mainnet,\n\t[mainnetDeployerPK, mainnetProxyDeployerPK]\n);\n\nexport const conceroNetworks: Record = {\n\t...testnetNetworks,\n\t...mainnetNetworks,\n};\n", "import { type PublicClient } from \"viem\";\n\nimport { ConceroNetwork } from \"../types/ConceroNetwork\";\nimport { getFallbackClients } from \"./getViemClients\";\n\ninterface GasParameters {\n\tmaxFeePerGas: bigint;\n\tmaxPriorityFeePerGas: bigint;\n}\n\n// Network-specific minimum gas parameters (in wei)\nconst NETWORK_MINIMUMS = {\n\tpolygon: {\n\t\tminTipCap: BigInt(30_000_000_000), // 30 gwei\n\t\tminBaseFee: BigInt(30_000_000_000), // 30 gwei\n\t},\n\t// Add other networks as needed\n} as const;\n\n/**\n * Gets optimized gas parameters for priority transaction processing\n * @param chain - The network configuration\n * @param priorityMultiplier - Multiplier for maxPriorityFeePerGas (default: 2)\n * @param maxFeeMultiplier - Multiplier for maxFeePerGas buffer (default: 2)\n * @returns GasParameters object containing maxFeePerGas and maxPriorityFeePerGas\n */\nexport async function getGasParameters(\n\tchain: ConceroNetwork,\n\tpriorityMultiplier = 1,\n\tmaxFeeMultiplier = 1,\n): Promise {\n\tconst { publicClient } = getFallbackClients(chain);\n\n\ttry {\n\t\t// Get latest block to calculate gas parameters\n\t\tconst block = await publicClient.getBlock();\n\t\tconst baseFee = block.baseFeePerGas ?? BigInt(0);\n\n\t\t// Get network-specific minimums\n\t\tconst networkMinimums = getNetworkMinimums(chain);\n\n\t\t// Calculate priority fee with buffer for faster inclusion\n\t\tconst suggestedPriorityFee = await getSuggestedPriorityFee(publicClient, chain);\n\t\tconst calculatedPriorityFee = calculatePriorityFee(\n\t\t\tsuggestedPriorityFee,\n\t\t\tpriorityMultiplier,\n\t\t);\n\n\t\t// Ensure priority fee meets network minimum\n\t\tconst priorityFee =\n\t\t\tcalculatedPriorityFee > networkMinimums.minTipCap\n\t\t\t\t? calculatedPriorityFee\n\t\t\t\t: networkMinimums.minTipCap;\n\n\t\t// Calculate max fee ensuring it meets network minimums\n\t\tconst calculatedMaxFee = calculateMaxFee(baseFee, priorityFee, maxFeeMultiplier);\n\t\tconst minRequiredMaxFee = networkMinimums.minBaseFee + priorityFee;\n\t\tconst maxFeePerGas =\n\t\t\tcalculatedMaxFee > minRequiredMaxFee ? calculatedMaxFee : minRequiredMaxFee;\n\n\t\treturn {\n\t\t\tmaxFeePerGas,\n\t\t\tmaxPriorityFeePerGas: priorityFee,\n\t\t};\n\t} catch (error) {\n\t\t// Fallback with network minimums\n\t\tconst networkMinimums = getNetworkMinimums(chain);\n\t\tconst gasPrice = await publicClient.getGasPrice();\n\t\tconst priorityFee = networkMinimums.minTipCap;\n\n\t\treturn {\n\t\t\tmaxFeePerGas:\n\t\t\t\tgasPrice > networkMinimums.minBaseFee + priorityFee\n\t\t\t\t\t? gasPrice\n\t\t\t\t\t: networkMinimums.minBaseFee + priorityFee,\n\t\t\tmaxPriorityFeePerGas: priorityFee,\n\t\t};\n\t}\n}\n\n/**\n * Gets network-specific minimum gas parameters\n */\nfunction getNetworkMinimums(chain: ConceroNetwork) {\n\t// Check if chain is Polygon (you'll need to implement this check based on your CNetwork type)\n\tconst isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes(\"polygon\");\n\n\tif (isPolygon) {\n\t\treturn NETWORK_MINIMUMS.polygon;\n\t}\n\n\t// Default minimums for other networks\n\treturn {\n\t\tminTipCap: BigInt(1_500_000_000), // 1.5 gwei\n\t\tminBaseFee: BigInt(1_000_000_000), // 1 gwei\n\t};\n}\n\n/**\n * Gets the suggested priority fee from recent blocks\n */\nasync function getSuggestedPriorityFee(\n\tpublicClient: PublicClient,\n\tchain: ConceroNetwork,\n): Promise {\n\ttry {\n\t\t// For Polygon, we want to be more aggressive with priority fees\n\t\tconst isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes(\"polygon\");\n\t\tconst blocksToAnalyze = isPolygon ? 5 : 10; // Look at fewer blocks on Polygon for more recent data\n\n\t\tconst blocks = await Promise.all(\n\t\t\tArray.from({ length: blocksToAnalyze }, (_, i) =>\n\t\t\t\tpublicClient.getBlock({ blockNumber: BigInt(-1 - i) }),\n\t\t\t),\n\t\t);\n\n\t\t// For Polygon, use 75th percentile instead of median for higher priority\n\t\tconst priorityFees = blocks\n\t\t\t.map(block => block.baseFeePerGas ?? BigInt(0))\n\t\t\t.sort((a, b) => (a < b ? -1 : 1));\n\n\t\tconst index = isPolygon\n\t\t\t? Math.floor(priorityFees.length * 0.75)\n\t\t\t: Math.floor(priorityFees.length * 0.5);\n\n\t\treturn priorityFees[index];\n\t} catch {\n\t\t// Use network-specific minimum as fallback\n\t\treturn getNetworkMinimums(chain).minTipCap;\n\t}\n}\n\n/**\n * Calculates priority fee with buffer\n */\nfunction calculatePriorityFee(basePriorityFee: bigint, multiplier: number): bigint {\n\treturn BigInt(Math.ceil(Number(basePriorityFee) * multiplier));\n}\n\n/**\n * Calculates max fee with buffer\n */\nfunction calculateMaxFee(baseFee: bigint, priorityFee: bigint, multiplier: number): bigint {\n\treturn BigInt(Math.ceil(Number(baseFee) * multiplier)) + priorityFee;\n}\n", "export const config = {\n DEFAULT_BLOCK_CONFIRMATIONS: 2,\n};\n", "import TrezorConnect from '@trezor/connect';\nimport { Address } from 'viem';\nimport { initTrezorOnce } from './initTrezorOnce';\nimport { defaultTrezorPath, ITrezorParams } from './trezorSendTx';\n\nexport const getTrezorAddress = async (path: ITrezorParams['path'] = defaultTrezorPath): Promise
=> {\n\tawait initTrezorOnce();\n\n\tconst addrRes = await TrezorConnect.ethereumGetAddress({\n\t\tpath,\n\t\tshowOnTrezor: false,\n\t});\n\n\tif (!addrRes.success) throw new Error(addrRes.payload.error);\n\n\treturn addrRes.payload.address as Address;\n};\n", "import TrezorConnect from '@trezor/connect';\n\nlet isTrezorInitialized = false;\n\nexport async function initTrezorOnce() {\n\tif (isTrezorInitialized) return;\n\tawait TrezorConnect.init({\n\t\tmanifest: {\n\t\t\temail: 'nikita@concero.io',\n\t\t\tappUrl: 'https://concero.io',\n\t\t\tappName: 'concero',\n\t\t},\n\t});\n\tisTrezorInitialized = true;\n}\n", "import TrezorConnect from '@trezor/connect';\nimport type { Address, Hash, Hex, PublicClient } from 'viem';\nimport { isHex, serializeTransaction, toHex } from 'viem';\nimport { log } from '../utils';\nimport { getTrezorAddress } from './getTrezorAddress';\nimport { initTrezorOnce } from './initTrezorOnce';\n\nexport const defaultTrezorPath = \"m/44'/60'/0'/0/0\";\n\nexport interface ITrezorViemParams {\n\tpublicClient: PublicClient;\n}\n\nexport interface ITrezorParams {\n\tpath: string | number[];\n\tshowFromAddressOnTrezor?: boolean;\n\tforceLegacy?: boolean;\n}\n\nexport interface ITrezorTxParams {\n\tto?: Address;\n\tvalue?: bigint;\n\tdata?: Hex;\n\tgas?: bigint;\n\tnonce?: number;\n\tgasPrice?: bigint;\n\tmaxFeePerGas?: bigint;\n\tmaxPriorityFeePerGas?: bigint;\n}\n\nfunction normalizeHex(hex: string, name: string): Hex {\n\tif (!hex.startsWith('0x')) hex = `0x${hex}`;\n\tif (!isHex(hex)) throw new Error(`${name} must be 0x-prefixed hex`);\n\treturn hex as Hex;\n}\n\nfunction yParityFromV(v: bigint): 0 | 1 {\n\tif (v === 0n || v === 1n) return Number(v) as 0 | 1;\n\tif (v === 27n || v === 28n) return Number(v - 27n) as 0 | 1;\n\treturn Number((v - 35n) % 2n) as 0 | 1;\n}\n\nexport async function trezorSendTx(\n\tviemParams: ITrezorViemParams,\n\ttxParams: ITrezorTxParams,\n\ttrezorPrams: ITrezorParams = {\n\t\tpath: defaultTrezorPath,\n\t\tshowFromAddressOnTrezor: false,\n\t\tforceLegacy: false,\n\t}\n): Promise {\n\tawait initTrezorOnce();\n\n\tconst { publicClient } = viemParams;\n\tconst { to = null, value = 0n, data = '0x' } = txParams;\n\tconst { path, forceLegacy } = trezorPrams;\n\n\tconst chainId = publicClient.chain?.id ?? (await publicClient.getChainId());\n\n\tconst from = await getTrezorAddress(path);\n\n\tlog(`Deploy from ${from}`, 'trezorSendTx');\n\n\tconst normData = normalizeHex(data, 'data');\n\n\tconst nonce =\n\t\ttxParams.nonce ??\n\t\t(await publicClient.getTransactionCount({\n\t\t\taddress: from,\n\t\t\tblockTag: 'pending',\n\t\t}));\n\n\tconst gas =\n\t\ttxParams.gas ??\n\t\t(await publicClient.estimateGas({\n\t\t\taccount: from,\n\t\t\tto: to ?? undefined,\n\t\t\tvalue,\n\t\t\tdata: normData === '0x' ? undefined : normData,\n\t\t}));\n\n\tlet gasPrice = txParams.gasPrice;\n\tlet maxFeePerGas = txParams.maxFeePerGas;\n\tlet maxPriorityFeePerGas = txParams.maxPriorityFeePerGas;\n\n\tif (!forceLegacy && gasPrice == null && (maxFeePerGas == null || maxPriorityFeePerGas == null)) {\n\t\ttry {\n\t\t\tconst fees = await publicClient.estimateFeesPerGas();\n\t\t\tif ('maxFeePerGas' in fees && 'maxPriorityFeePerGas' in fees) {\n\t\t\t\tmaxFeePerGas = fees.maxFeePerGas;\n\t\t\t\tmaxPriorityFeePerGas = fees.maxPriorityFeePerGas;\n\t\t\t} else if ('gasPrice' in fees) {\n\t\t\t\tgasPrice = (fees as { gasPrice: bigint }).gasPrice;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tlog(`EIP-1559 not supported for ${chainId}, using legacy gas price`, 'trezorSendTx');\n\t\t}\n\t}\n\n\tconst useEip1559 = !forceLegacy && maxFeePerGas != null && maxPriorityFeePerGas != null;\n\n\tif (!useEip1559 && gasPrice == null) {\n\t\tgasPrice = await publicClient.getGasPrice();\n\t}\n\n\tconst txForTrezor: Record = {\n\t\tto,\n\t\tvalue: toHex(value),\n\t\tdata: normData,\n\t\tchainId,\n\t\tnonce: toHex(nonce),\n\t\tgasLimit: toHex(gas),\n\t};\n\n\tif (useEip1559) {\n\t\ttxForTrezor.maxFeePerGas = toHex(maxFeePerGas!);\n\t\ttxForTrezor.maxPriorityFeePerGas = toHex(maxPriorityFeePerGas!);\n\t} else {\n\t\ttxForTrezor.gasPrice = toHex(gasPrice!);\n\t}\n\n\tconst signRes = await TrezorConnect.ethereumSignTransaction({\n\t\tpath,\n\t\ttransaction: txForTrezor as any,\n\t});\n\tif (!signRes.success) throw new Error(signRes.payload.error);\n\n\tconst r = normalizeHex(signRes.payload.r, 'r');\n\tconst s = normalizeHex(signRes.payload.s, 's');\n\tconst vBig = BigInt(signRes.payload.v);\n\n\tconst txSerializable: any = {\n\t\tchainId,\n\t\tnonce,\n\t\tgas,\n\t\tto: to ?? undefined,\n\t\tvalue,\n\t\tdata: normData,\n\t};\n\n\tif (useEip1559) {\n\t\ttxSerializable.maxFeePerGas = maxFeePerGas;\n\t\ttxSerializable.maxPriorityFeePerGas = maxPriorityFeePerGas;\n\t\tconst serializedTransaction = serializeTransaction(txSerializable, {\n\t\t\tr,\n\t\t\ts,\n\t\t\tyParity: yParityFromV(vBig),\n\t\t});\n\n\t\treturn await publicClient.sendRawTransaction({ serializedTransaction });\n\t} else {\n\t\ttxSerializable.gasPrice = gasPrice;\n\n\t\tconst serializedTransaction = serializeTransaction(txSerializable, {\n\t\t\tr,\n\t\t\ts,\n\t\t\tv: vBig,\n\t\t} as any);\n\t\treturn await publicClient.sendRawTransaction({ serializedTransaction });\n\t}\n}\n", "import type { Abi, Address, Hash, Hex } from 'viem';\nimport { encodeDeployData } from 'viem';\nimport {\n\tITrezorTxParams,\n\tITrezorViemParams,\n\ttrezorSendTx,\n\ttype ITrezorParams,\n} from './trezorSendTx';\n\nexport interface ITrezorDeployParams\n\textends Omit {\n\tabi: Abi;\n\tbytecode: Hex;\n\targs?: readonly unknown[];\n}\n\nexport async function trezorDeployContract(\n\tviemParams: ITrezorViemParams,\n\tdeployParams: ITrezorDeployParams,\n\ttrezorParams?: ITrezorParams\n): Promise<{ hash: Hash; contractAddress: Address }> {\n\tconst { publicClient } = viemParams;\n\tconst { abi, bytecode, args, value = 0n, ...overrides } = deployParams;\n\n\tconst data = encodeDeployData({ abi, bytecode, args });\n\n\tconst hash = await trezorSendTx(\n\t\t{ publicClient },\n\t\t{ data, value, ...overrides },\n\t\ttrezorParams\n\t);\n\n\tconst receipt = await publicClient.waitForTransactionReceipt({ hash });\n\tif (!receipt.contractAddress)\n\t\tthrow new Error('No contractAddress in receipt');\n\n\treturn { hash, contractAddress: receipt.contractAddress as Address };\n}\n", "import { Abi, Address, encodeFunctionData, Hash } from 'viem';\nimport {\n\tITrezorParams,\n\tITrezorTxParams,\n\tITrezorViemParams,\n\ttrezorSendTx,\n} from './trezorSendTx';\n\nexport interface ITrezorWriteContractParams\n\textends Omit {\n\taddress: Address;\n\tabi: Abi;\n\tfunctionName: string;\n\targs?: readonly unknown[];\n}\n\nexport async function trezorWriteContract(\n\tviemParams: ITrezorViemParams,\n\twriteContractParams: ITrezorWriteContractParams,\n\ttrezorParams: ITrezorParams\n): Promise {\n\tconst {\n\t\taddress,\n\t\tabi,\n\t\tfunctionName,\n\t\targs,\n\t\tvalue = 0n,\n\t\t...overrides\n\t} = writeContractParams;\n\n\tconst data = encodeFunctionData({ abi, functionName, args });\n\n\treturn trezorSendTx(\n\t\tviemParams,\n\t\t{\n\t\t\tto: address,\n\t\t\tdata,\n\t\t\tvalue,\n\t\t\t...overrides,\n\t\t},\n\t\ttrezorParams\n\t);\n}\n", "import { TransactionReceipt } from 'ethers';\nimport { HardhatRuntimeEnvironment } from 'hardhat/types';\n\nimport { Hex } from 'viem';\nimport type { WaitForTransactionReceiptReturnType } from 'viem/actions/public/waitForTransactionReceipt';\nimport { conceroNetworks } from '../constants/conceroNetworks';\nimport { trezorDeployContract } from '../trezor';\nimport { getFallbackClients, getTrezorDeployEnabled, log } from '../utils';\n\nexport interface ITxParams {\n\tgasLimit: bigint;\n\tlibraries: Record;\n}\n\nexport interface IDeployResult {\n\taddress: string;\n\tchainType: string;\n\tchainName: string;\n\tchainId: number;\n\treceipt: TransactionReceipt | WaitForTransactionReceiptReturnType;\n}\n\nexport interface IGenericDeployParams {\n\thre: HardhatRuntimeEnvironment;\n\tcontractName: string;\n\ttxParams?: Partial;\n}\n\nexport const genericDeploy = async (\n\t{ hre, contractName, txParams }: IGenericDeployParams,\n\t...contractConstructorArgs: any[]\n): Promise => {\n\tconst [deployer] = await hre.ethers.getSigners();\n\n\tconst chain = conceroNetworks[hre.network.name];\n\tconst isTrezorDeployEnabled = getTrezorDeployEnabled();\n\n\tlog(`isTrezorDeployEnabled: ${isTrezorDeployEnabled}`, 'genericDeploy');\n\n\tconst contractFactory = await hre.ethers.getContractFactory(contractName, {\n\t\tlibraries: txParams?.libraries,\n\t});\n\n\tconst deployOverrides = txParams?.gasLimit ? { gasLimit: txParams.gasLimit } : {};\n\n\tlet deploymentAddress;\n\tlet receipt;\n\n\tif (isTrezorDeployEnabled) {\n\t\tconst { publicClient } = getFallbackClients(chain);\n\t\tconst tx = await trezorDeployContract(\n\t\t\t{ publicClient },\n\t\t\t{\n\t\t\t\targs: contractConstructorArgs,\n\t\t\t\tabi: hre.artifacts.readArtifactSync(contractName).abi,\n\t\t\t\tbytecode: contractFactory.bytecode as Hex,\n\t\t\t\tgas: deployOverrides.gasLimit,\n\t\t\t}\n\t\t);\n\n\t\tdeploymentAddress = tx.contractAddress;\n\t\treceipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash });\n\t\tif (receipt.status !== 'success') throw new Error(`Deploy transaction reverted ${tx.hash}`);\n\t} else {\n\t\tlog(`Deploy ${contractName} from address: ${await deployer.getAddress()}`, 'genericDeploy', chain.name);\n\n\t\tconst contract = await contractFactory.deploy(...contractConstructorArgs, deployOverrides);\n\t\treceipt = await contract.deploymentTransaction()?.wait();\n\t\tdeploymentAddress = await contract.getAddress();\n\t}\n\n\tif (hre.tenderly) {\n\t\ttry {\n\t\t\tawait hre.tenderly.verify({\n\t\t\t\tname: contractName,\n\t\t\t\taddress: deploymentAddress,\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tconsole.error(JSON.stringify(e));\n\t\t}\n\t}\n\n\tlog(`Deployed at: ${deploymentAddress}`, `deploy ${contractName}`, chain.name);\n\n\treturn {\n\t\taddress: deploymentAddress,\n\t\tchainName: chain.name,\n\t\tchainType: chain.type,\n\t\tchainId: chain.chainId,\n\t\treceipt,\n\t};\n};\n", "import {\n\tAddress,\n\terc20Abi,\n\tformatUnits,\n\tHash,\n\tparseUnits,\n\tPublicClient,\n\tWalletClient,\n} from 'viem';\n\nexport class TokenSender {\n\tprivate walletClient: WalletClient;\n\tprivate publicClient: PublicClient;\n\n\tconstructor(walletClient: WalletClient, publicClient: PublicClient) {\n\t\tthis.walletClient = walletClient;\n\t\tthis.publicClient = publicClient;\n\t}\n\n\tpublic async sendToken(\n\t\ttokenAddress: Address,\n\t\tamount: string,\n\t\trecipient: Address\n\t): Promise {\n\t\tconst [tokenDecimals, tokenSymbol, tokenBalance] = await Promise.all([\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'decimals',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'symbol',\n\t\t\t\targs: [],\n\t\t\t}),\n\t\t\tthis.publicClient.readContract({\n\t\t\t\taddress: tokenAddress,\n\t\t\t\tabi: erc20Abi,\n\t\t\t\tfunctionName: 'balanceOf',\n\t\t\t\targs: [this.walletClient.account?.address!],\n\t\t\t}),\n\t\t]);\n\n\t\tconsole.log(\n\t\t\t`Current ${tokenSymbol} balance ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t);\n\n\t\tif (parseUnits(amount, tokenDecimals) > tokenBalance) {\n\t\t\tthrow new Error(\n\t\t\t\t`Insufficient balance. Required: ${amount}, available: ${formatUnits(tokenBalance, tokenDecimals)}`\n\t\t\t);\n\t\t}\n\n\t\tconst txHash = await this.walletClient.writeContract({\n\t\t\taddress: tokenAddress,\n\t\t\tabi: erc20Abi,\n\t\t\tfunctionName: 'transfer',\n\t\t\targs: [recipient, parseUnits(amount, tokenDecimals)],\n\t\t\tchain: this.walletClient.chain,\n\t\t\taccount: this.walletClient.account!,\n\t\t});\n\n\t\tconst { status } = await this.publicClient.waitForTransactionReceipt({\n\t\t\thash: txHash,\n\t\t});\n\n\t\tif (status !== 'success') {\n\t\t\tthrow new Error(`Error sending token. Hash: ${txHash}`);\n\t\t}\n\n\t\tconsole.log(`Token successfully sent. Hash: ${txHash}`);\n\n\t\treturn txHash;\n\t}\n}\n"], + "mappings": "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AI,WAAW,CAAC,GAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,WAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,YAAY,UAAY,YAAY,YA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AC,IAAG,EAAE,GAAE,uBAAuB,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,OAAO,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,uBAAuB,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,IAAG,EAAE,GAAE,UAAS,CAAC,GAAG,CAAC,GAA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,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,SAAS,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,0BAAyB,CAAC,IAAG,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,YAAY,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,aAAY,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,OAAO,GAAE,CAAC,CAAC,KAAK,GAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,GAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAS,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,KAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,OAAO,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,MAAK,GAAG,CAAC,GAAE,CAAC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CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,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AC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,IAAI,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,MA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E,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,YAAY,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,0BAAyB,CAAC,IAAG,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,MAAK,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,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,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,OAAM,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,OAAM,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,IAAG,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,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CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,MAAM,IAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAI,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,MAAK,MAAK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I,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,MAAK,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAS,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,0BAAyB,CAAC,IAAG,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,MAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,YAAY,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,OAAO,GAAE,CAAC,CAAC,OAAM,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAS,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,QAAO,QAAO,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,MAAO,IAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAI,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,G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,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAG,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC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,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,OAAM,OAAM,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,OAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,SAAQ,CAAC,GAAE,KAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,OAAO,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,IAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,OAAO,KAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,GAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,KAAK,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,UAAS,CAAC,MAAM,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,YAAY,GAAE,CAAC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G;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,oTAAqD;AAAA,MAC7D,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG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AAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK,GAAE,SAAU,CAAC,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,O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AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,sjBAAgG;AAAA,IACxG;AAAA;AAAA;;;AChRA;AAAA,0FAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACA,CAAC,KAAI,MAAS,GAAG;AAAA,MACjB,CAAC,QAAO,0XAAiE;AAAA,MACzE,CAAC,QAAO,8WAAiE,GAAE,0KAA8B;AAAA,MACzG,CAAC,QAAO,oNAAsC,GAAE,gIAAuB;AAAA,MACvE,CAAC,QAAO,8FAAkB,GAAE,UAAI,GAAE,UAAI,GAAE,4BAAO,IAAG,UAAI,EAAE;AAAA,MACxD,CAAC,QAAO,kCAAQ,IAAG,UAAI,GAAE,UAAI,IAAG,UAAI,GAAE,UAAI,EAAE;AAAA,MAC5C,CAAC,QAAO,UAAI,IAAG,gCAAO;AAAA,MACtB,CAAC,QAAO,QAAG;AAAA,MACX,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACxG,CAAC,QAAO,4XAAiE;AAAA,MACzE,CAAC,QAAO,sjBAAgG;AAAA,MACx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AU,SAAS,SAAS,YAAY,UAAU,UAAU,SAAS,WAAW,SAAS,SAAS,UAAU,SAAS,UAAU,WAAW,SAAS,QAAQ,QAAQ,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,OAAO,YAAY,QAAQ,UAAU,SAAS,QAAQ,WAAW,SAAS,SAAS,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,OAAO,SAAS,UAAU,SAAS,UAAU,SAAS,UAAU,UAAU,WAAW,WAAW,WAAW,OAAO,UAAU,QAAQ,SAAS,UAAU,SAAS,QAAQ,QAAQ,QAAQ,UAAU,UAAU,UAAU,OAAO,WAAW,SAAS,YAAY,UAAU,UAAU,SAAS,WAAW,QAAQ,WAAW,UAAU,UAAU,UAAU,WAAW,UAAU,WAAW,SAAS,SAAS,YAAY,UAAU,SAAS,WAAW,UAAU,SAAS,QAAQ,SAAS,SAAS,UAAU,QAAQ,UAAU,SAAS,WAAW,SAAS,SAAS,WAAW,UAAU,UAAU,WAAW,WAAW,SAAS,SAAS,SAAS,YAAY,UAAU,WAAW,QAAQ,SAAS,SAAS,QAAQ,WAAW,QAAQ,QAAQ,SAAS,SAAS,UAAU,SAAS,UAAU,SAAS,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,SAAS,QAAQ,SAAS,WAAW,UAAU,SAAS,SAAS,WAAW,QAAQ,UAAU,QAAQ,QAAQ,WAAW,SAAS,UAAU,WAAW,QAAQ,WAAW,SAAS,UAAU,WAAW,WAAW,WAAW,WAAW,YAAY,WAAW,YAAY,WAAW,YAAY,QAAQ,QAAQ,UAAU,QAAQ,SAAS,QAAQ,QAAQ,WAAW,QAAQ,UAAU,SAAS,WAAW,UAAU,UAAU,UAAU,SAAS,UAAU,SAAS,UAAU,SAAS,QAAQ,SAAS,SAAS,UAAU,SAAS,SAAS,SAAS,UAAU,SAAS,QAAQ,WAAW,SAAS,SAAS,UAAU,QAAQ,SAAS,UAAU,SAAS,WAAW,SAAS,UAAU,WAAW,UAAU,SAAS,OAAO,WAAW,QAAQ,WAAW,OAAO,YAAY,WAAW,WAAW,WAAW,SAAS,WAAW,UAAU,QAAQ,SAAS,OAAO,UAAU,QAAQ,SAAS,UAAU,UAAU,QAAQ,YAAY,QAAQ,OAAO,QAAQ,UAAU,UAAU,UAAU,YAAY,UAAU,WAAW,YAAY,YAAY,QAAQ,WAAW,UAAU,QAAQ,UAAU,SAAS,WAAW,UAAU,UAAU,UAAU,WAAW,QAAQ,UAAU,UAAU,WAAW,SAAS,UAAU,UAAU,YAAY,UAAU,UAAU,QAAQ,WAAW,WAAW,UAAU,UAAU,WAAW,UAAU,UAAU,WAAW,QAAQ,WAAW,SAAS,QAAQ,UAAU,QAAQ,UAAU,WAAW,WAAW,WAAW,UAAU,YAAY,UAAU,QAAQ,YAAY,YAAY,WAAW,QAAQ,WAAW,YAAY,WAAW,YAAY,UAAU,UAAU,WAAW,SAAS,UAAU,YAAY,OAAO,QAAQ,WAAW,UAAU,UAAU,UAAU,SAAS,QAAQ,QAAQ,UAAU,QAAQ,SAAS,UAAU,SAAS,WAAW,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAS,QAAQ,SAAS,WAAW,SAAS,SAAS,SAAS,QAAQ,SAAS,UAAU,QAAQ,QAAQ,QAAQ,WAAW,WAAW,QAAQ,QAAQ,WAAW,UAAU,OAAO,SAAS,UAAU,SAAS,SAAS,YAAY,WAAW,WAAW,YAAY,YAAY,SAAS,QAAQ,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,WAAW,SAAS,UAAU,SAAS,OAAO,WAAW,WAAW,SAAS,UAAU,WAAW,UAAU,UAAU,WAAW,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,SAAS,UAAU,SAAS,YAAY,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,WAAW,SAAS,SAAS,UAAU,SAAS,WAAW,UAAU,WAAW,UAAU,YAAY,QAAQ,SAAS,UAAU,SAAS,WAAW,UAAU,YAAY,UAAU,WAAW,UAAU,WAAW,YAAY,WAAW,WAAW,SAAS,SAAS,QAAQ,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,SAAS,OAAO,WAAW,UAAU,QAAQ,WAAW,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ,UAAU,UAAU,OAAO,SAAS,WAAW,QAAQ,WAAW,OAAO,SAAS,UAAU,WAAW,SAAS,YAAY,WAAW,YAAY,WAAW,OAAO,QAAQ,QAAQ,UAAU,SAAS,YAAY,SAAS,SAAS,OAAO,SAAS,WAAW,SAAS,UAAU,QAAQ,QAAQ,UAAU,SAAS,QAAQ,QAAQ,UAAU,UAAU,QAAQ,QAAQ,SAAS,UAAU,QAAQ,OAAO,WAAW,OAAO,QAAQ,SAAS,SAAS,QAAQ,UAAU,QAAQ,UAAU,QAAQ,SAAS,SAAS,SAAS,UAAU,SAAS,SAAS,OAAO,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,SAAS,UAAU,UAAU,QAAQ,WAAW,SAAS,WAAW,UAAU,UAAU,SAAS,OAAO,WAAW,SAAS,YAAY,SAAS,UAAU,UAAU,QAAQ,SAAS,SAAS,SAAS,UAAU,SAAS,QAAQ,OAAO,SAAS,WAAW,QAAQ,UAAU,UAAU,QAAQ,UAAU,WAAW,QAAQ,OAAO,UAAU,WAAW,UAAU,UAAU,WAAW,OAAO,QAAQ,QAAQ,UAAU,SAAS,QAAQ,WAAW,UAAU,SAAS,UAAU,WAAW,WAAW,SAAS,SAAS,QAAQ,UAAU,UAAU,WAAW,QAAQ,QAAQ,QAAQ,UAAU,SAAS,SAAS,SAAS,WAAW,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,QAAQ,SAAS,WAAW,UAAU,UAAU,UAAU,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,QAAQ,WAAW,SAAS,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,OAAO,OAAO,SAAS,QAAQ,QAAQ,UAAU,WAAW,QAAQ,SAAS,UAAU,QAAQ,SAAS,WAAW,OAAO,QAAQ,QAAQ,UAAU,QAAQ,UAAU,SAAS,SAAS,YAAY,UAAU,SAAS,UAAU,QAAQ,OAAO,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,WAAW,SAAS,UAAU,QAAQ,QAAQ,WAAW,UAAU,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,UAAU,SAAS,YAAY,QAAQ,SAAS,QAAQ,SAAS,OAAO,QAAQ,SAAS,UAAU,SAAS,WAAW,UAAU,QAAQ,UAAU,SAAS,QAAQ,WAAW,UAAU,OAAO,QAAQ,QAAQ,YAAY,QAAQ,UAAU,OAAO,WAAW,WAAW,SAAS,WAAW,WAAW,UAAU,UAAU,UAAU,WAAW,WAAW,QAAQ,WAAW,UAAU,YAAY,SAAS,YAAY,UAAU,YAAY,UAAU,WAAW,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,SAAS,YAAY,SAAS,WAAW,UAAU,UAAU,UAAU,WAAW,WAAW,UAAU,YAAY,QAAQ,UAAU,UAAU,WAAW,QAAQ,UAAU,WAAW,SAAS,QAAQ,SAAS,UAAU,UAAU,OAAO,QAAQ,WAAW,SAAS,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,OAAO,SAAS,SAAS,QAAQ,UAAU,UAAU,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,WAAW,OAAO,QAAQ,OAAO,UAAU,QAAQ,WAAW,QAAQ,OAAO,WAAW,QAAQ,UAAU,QAAQ,QAAQ,SAAS,SAAS,QAAQ,OAAO,SAAS,SAAS,UAAU,QAAQ,QAAQ,QAAQ,YAAY,UAAU,SAAS,SAAS,SAAS,SAAS,WAAW,QAAQ,OAAO,QAAQ,WAAW,SAAS,QAAQ,UAAU,QAAQ,SAAS,SAAS,WAAW,QAAQ,OAAO,SAAS,UAAU,WAAW,SAAS,QAAQ,UAAU,QAAQ,WAAW,UAAU,UAAU,SAAS,QAAQ,WAAW,WAAW,WAAW,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,UAAU,QAAQ,UAAU,QAAQ,UAAU,QAAQ,QAAQ,WAAW,SAAS,QAAQ,SAAS,UAAU,QAAQ,QAAQ,WAAW,QAAQ,UAAU,QAAQ,SAAS,SAAS,WAAW,UAAU,SAAS,SAAS,UAAU,UAAU,WAAW,OAAO,SAAS,UAAU,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,UAAU,OAAO,UAAU,WAAW,SAAS,WAAW,UAAU,SAAS,UAAU,SAAS,UAAU,UAAU,UAAU,YAAY,QAAQ,QAAQ,UAAU,SAAS,YAAY,QAAQ,UAAU,UAAU,WAAW,QAAQ,UAAU,QAAQ,WAAW,QAAQ,YAAY,SAAS,SAAS,UAAU,QAAQ,UAAU,UAAU,WAAW,QAAQ,SAAS,SAAS,SAAS,SAAS,QAAQ,WAAW,SAAS,UAAU,UAAU,YAAY,QAAQ,WAAW,SAAS,QAAQ,WAAW,SAAS,UAAU,WAAW,UAAU,UAAU,QAAQ,WAAW,OAAO,SAAS,WAAW,UAAU,SAAS,UAAU,OAAO,UAAU,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,QAAQ,WAAW,YAAY,UAAU,UAAU,SAAS,YAAY,SAAS,QAAQ,SAAS,QAAQ,UAAU,QAAQ,YAAY,UAAU,UAAU,YAAY,SAAS,QAAQ,UAAU,UAAU,WAAW,QAAQ,SAAS,QAAQ,UAAU,UAAU,SAAS,UAAU,UAAU,QAAQ,QAAQ,QAAQ,YAAY,WAAW,WAAW,UAAU,SAAS,QAAQ,OAAO,WAAW,WAAW,SAAS,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,WAAW,UAAU,UAAU,SAAS,QAAQ,WAAW,QAAQ,WAAW,UAAU,SAAS,OAAO,WAAW,UAAU,SAAS,OAAO,OAAO,QAAQ,UAAU,UAAU,WAAW,WAAW,UAAU,WAAW,SAAS,SAAS,WAAW,QAAQ,OAAO,SAAS,UAAU,SAAS,OAAO,QAAQ,OAAO,SAAS,WAAW,QAAQ,QAAQ,OAAO,SAAS,UAAU,QAAQ,QAAQ,SAAS,WAAW,UAAU,UAAU,UAAU,SAAS,WAAW,SAAS,YAAY,SAAS,UAAU,YAAY,UAAU,WAAW,SAAS,WAAW,SAAS,UAAU,WAAW,QAAQ,QAAQ,QAAQ,OAAO,SAAS,UAAU,UAAU,SAAS,QAAQ,UAAU,QAAQ,QAAQ,UAAU,QAAQ,SAAS,SAAS,SAAS,WAAW,SAAS,UAAU,UAAU,QAAQ,UAAU,SAAS,QAAQ,SAAS,QAAQ,WAAW,UAAU,WAAW,SAAS,QAAQ,WAAW,SAAS,UAAU,QAAQ,WAAW,WAAW,OAAO,WAAW,UAAU,UAAU,UAAU,WAAW,UAAU,UAAU,OAAO,SAAS,SAAS,UAAU,YAAY,SAAS,UAAU,WAAW,SAAS,OAAO,UAAU,QAAQ,SAAS,QAAQ,WAAW,QAAQ,UAAU,SAAS,SAAS,SAAS,UAAU,WAAW,SAAS,QAAQ,UAAU,UAAU,SAAS,QAAQ,UAAU,QAAQ,QAAQ,SAAS,SAAS,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,WAAW,WAAW,YAAY,YAAY,QAAQ,UAAU,WAAW,WAAW,UAAU,SAAS,YAAY,UAAU,WAAW,UAAU,WAAW,WAAW,UAAU,WAAW,SAAS,SAAS,WAAW,SAAS,YAAY,UAAU,WAAW,SAAS,WAAW,WAAW,WAAW,UAAU,WAAW,WAAW,WAAW,SAAS,YAAY,WAAW,WAAW,SAAS,WAAW,UAAU,WAAW,QAAQ,QAAQ,SAAS,WAAW,SAAS,SAAS,SAAS,YAAY,UAAU,WAAW,SAAS,QAAQ,OAAO,UAAU,WAAW,WAAW,WAAW,WAAW,YAAY,SAAS,QAAQ,QAAQ,SAAS,UAAU,WAAW,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,QAAQ,SAAS,UAAU,SAAS,SAAS,QAAQ,QAAQ,UAAU,SAAS,OAAO,SAAS,SAAS,QAAQ,UAAU,SAAS,WAAW,UAAU,WAAW,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,SAAS,WAAW,UAAU,QAAQ,UAAU,YAAY,UAAU,UAAU,UAAU,SAAS,QAAQ,UAAU,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,YAAY,UAAU,YAAY,YAAY,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,UAAU,UAAU,UAAU,OAAO,UAAU,QAAQ,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,UAAU,QAAQ,UAAU,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,UAAU,WAAW,QAAQ,UAAU,QAAQ,QAAQ,UAAU,SAAS,SAAS,SAAS,SAAS,UAAU,QAAQ,OAAO,QAAQ,OAAO,UAAU,SAAS,OAAO,UAAU,WAAW,QAAQ,QAAQ,SAAS,UAAU,SAAS,QAAQ,UAAU,QAAQ,UAAU,QAAQ,WAAW,WAAW,SAAS,WAAW,QAAQ,OAAO,SAAS,QAAQ,SAAS,WAAW,SAAS,UAAU,UAAU,WAAW,YAAY,YAAY,SAAS,SAAS,UAAU,UAAU,SAAS,OAAO,UAAU,UAAU,QAAQ,UAAU,UAAU,WAAW,YAAY,QAAQ,QAAQ,WAAW,UAAU,QAAQ,WAAW,UAAU,SAAS,YAAY,UAAU,WAAW,WAAW,UAAU,SAAS,SAAS,UAAU,SAAS,WAAW,SAAS,QAAQ,SAAS,WAAW,UAAU,SAAS,SAAS,QAAQ,UAAU,SAAS,QAAQ,SAAS,QAAQ,SAAS,YAAY,SAAS,UAAU,SAAS,WAAW,OAAO,WAAW,QAAQ,QAAQ,SAAS,SAAS,QAAQ,UAAU,QAAQ,SAAS,UAAU,WAAW,UAAU,SAAS,QAAQ,SAAS,UAAU,WAAW,OAAO,QAAQ,SAAS,UAAU,OAAO,SAAS,QAAQ,SAAS,SAAS,QAAQ,QAAQ,SAAS,WAAW,SAAS,SAAS,UAAU,QAAQ,UAAU,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,UAAU,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,UAAU,UAAU,QAAQ,QAAQ,QAAQ,SAAS,WAAW,SAAS,YAAY,SAAS,WAAW,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,QAAQ,UAAU,SAAS,SAAS,SAAS,WAAW,SAAS,SAAS,WAAW,SAAS,SAAS,SAAS,UAAU,SAAS,UAAU,SAAS,QAAQ,UAAU,SAAS,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,UAAU,UAAU,OAAO,UAAU,WAAW,YAAY,UAAU,WAAW,SAAS,SAAS,UAAU,SAAS,SAAS,SAAS,SAAS,QAAQ,SAAS,SAAS,QAAQ,QAAQ,UAAU,SAAS,SAAS,SAAS,SAAS,WAAW,SAAS,SAAS,SAAS,SAAS,YAAY,UAAU,UAAU,UAAU,YAAY,WAAW,SAAS,WAAW,SAAS,WAAW,UAAU,UAAU,WAAW,QAAQ,UAAU,UAAU,SAAS,WAAW,QAAQ,UAAU,OAAO,SAAS,UAAU,SAAS,UAAU,WAAW,QAAQ,WAAW,SAAS,YAAY,YAAY,UAAU,WAAW,WAAW,WAAW,SAAS,QAAQ,SAAS,SAAS,SAAS,SAAS,QAAQ,SAAS,UAAU,SAAS,UAAU,WAAW,SAAS,UAAU,SAAS,UAAU,OAAO,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,OAAO,UAAU,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,SAAS,QAAQ,UAAU,SAAS,QAAQ,SAAS,QAAQ,WAAW,SAAS,UAAU,SAAS,SAAS,WAAW,UAAU,QAAQ,SAAS,QAAQ,UAAU,QAAQ,QAAQ,OAAO,SAAS,UAAU,SAAS,SAAS,WAAW,SAAS,WAAW,OAAO,YAAY,UAAU,SAAS,UAAU,YAAY,QAAQ,UAAU,WAAW,QAAQ,SAAS,OAAO,SAAS,UAAU,SAAS,WAAW,YAAY,QAAQ,SAAS,WAAW,UAAU,SAAS,QAAQ,OAAO,SAAS,SAAS,WAAW,UAAU,SAAS,YAAY,QAAQ,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,SAAS,WAAW,QAAQ,QAAQ,UAAU,WAAW,SAAS,QAAQ,SAAS,WAAW,SAAS,SAAS,OAAO,QAAQ,WAAW,UAAU,QAAQ,UAAU,UAAU,QAAQ,UAAU,UAAU,UAAU,SAAS,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,YAAY,UAAU,WAAW,SAAS,WAAW,SAAS,QAAQ,UAAU,UAAU,WAAW,WAAW,UAAU,QAAQ,YAAY,WAAW,UA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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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AAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAK;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAC5D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC5D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC7D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAK;AAAA,MAC5D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC7D;AAAA,MAAM;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC3D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAM;AAAA,MAC5D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC/D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAC9D;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAM;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAC9D;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAO;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAC5D;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAChC;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MAAQ;AAAA,MACxD;AAAA,MAAQ;AAAA,MAAQ;AAAA,IAAM;AAAA;AAAA;;;;;;;;;;;ACtO1B,QAAA,UAAA;AAEA,QAAA,sBAAAC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,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,MAAQ,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACrD,aAAO,MAAM,QAAQ,MAAO,MAAM,OAAO,MAAO;AAChD,cAAM;AAEN,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAM,KAAK,KAAK,KAAK,KAAK,GAAG,IAAK;AAClC,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AAEP,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,cAAM,KAAK,KAAK,KAAK,GAAG;AACxB,cAAO,MAAM,KAAK,KAAK,KAAK,GAAG,IAAK;AACpC,aAAK,KAAK,KAAK,KAAK,GAAG;AACvB,YAAI,OAAS,IAAI,KAAM,OAAO,MAAM,SAAW,MAAO;AACtD,aAAO,MAAM,QAAQ,MAAO,MAAM,QAAQ,MAAO;AACjD,eAAO;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,CAAC,IAAI;AACP,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,UAAE,EAAE,IAAI;AACR,YAAI,MAAM,GAAG;AACX,YAAE,EAAE,IAAI;AACR,cAAI;AAAA,QACN;AACA,eAAO;AAAA,MACT;AAGA,UAAI,CAAC,KAAK,MAAM;AACd,sBAAc;AAAA,MAChB;AAEA,eAAS,SAAUA,OAAM,KAAK,KAAK;AACjC,YAAI,WAAW,IAAI,WAAWA,MAAK;AACnC,YAAI,SAASA,MAAK,SAAS,IAAI;AAE/B,YAAI,QAAQ;AACZ,YAAI,UAAU;AACd,iBAAS,IAAI,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK;AAGvC,cAAI,SAAS;AACb,oBAAU;AACV,cAAI,QAAQ,QAAQ;AACpB,cAAI,OAAO,KAAK,IAAI,GAAG,IAAI,SAAS,CAAC;AACrC,mBAAS,IAAI,KAAK,IAAI,GAAG,IAAIA,MAAK,SAAS,CAAC,GAAG,KAAK,MAAM,KAAK;AAC7D,gBAAI,IAAI,IAAI;AACZ,gBAAI,IAAIA,MAAK,MAAM,CAAC,IAAI;AACxB,gBAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AACvB,gBAAI,IAAI,IAAI;AAEZ,gBAAI,KAAK,IAAI;AACb,qBAAU,UAAW,IAAI,WAAa,KAAM;AAC5C,iBAAM,KAAK,QAAS;AACpB,oBAAQ,KAAK;AACb,qBAAU,UAAU,OAAO,MAAO;AAElC,uBAAW,WAAW;AACtB,sBAAU;AAAA,UACZ;AACA,cAAI,MAAM,CAAC,IAAI;AACf,kBAAQ;AACR,mBAAS;AAAA,QACX;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,CAAC,IAAI;AAAA,QACjB,OAAO;AACL,cAAI;AAAA,QACN;AAEA,eAAO,IAAI,MAAM;AAAA,MACnB;AAEA,eAAS,WAAYA,OAAM,KAAK,KAAK;AACnC,YAAI,OAAO,IAAI,KAAK;AACpB,eAAO,KAAK,KAAKA,OAAM,KAAK,GAAG;AAAA,MACjC;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK,KAAK;AAC7C,YAAI;AACJ,YAAI,MAAM,KAAK,SAAS,IAAI;AAC5B,YAAI,KAAK,WAAW,MAAM,IAAI,WAAW,IAAI;AAC3C,gBAAM,YAAY,MAAM,KAAK,GAAG;AAAA,QAClC,WAAW,MAAM,IAAI;AACnB,gBAAM,WAAW,MAAM,KAAK,GAAG;AAAA,QACjC,WAAW,MAAM,MAAM;AACrB,gBAAM,SAAS,MAAM,KAAK,GAAG;AAAA,QAC/B,OAAO;AACL,gBAAM,WAAW,MAAM,KAAK,GAAG;AAAA,QACjC;AAEA,eAAO;AAAA,MACT;AAKA,eAAS,KAAM,GAAG,GAAG;AACnB,aAAK,IAAI;AACT,aAAK,IAAI;AAAA,MACX;AAEA,WAAK,UAAU,UAAU,SAAS,QAAS,GAAG;AAC5C,YAAI,IAAI,IAAI,MAAM,CAAC;AACnB,YAAI,IAAI,GAAG,UAAU,WAAW,CAAC,IAAI;AACrC,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAE,CAAC,IAAI,KAAK,OAAO,GAAG,GAAG,CAAC;AAAA,QAC5B;AAEA,eAAO;AAAA,MACT;AAGA,WAAK,UAAU,SAAS,SAAS,OAAQ,GAAG,GAAG,GAAG;AAChD,YAAI,MAAM,KAAK,MAAM,IAAI,EAAG,QAAO;AAEnC,YAAI,KAAK;AACT,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,iBAAO,IAAI,MAAO,IAAI,IAAI;AAC1B,gBAAM;AAAA,QACR;AAEA,eAAO;AAAA,MACT;AAIA,WAAK,UAAU,UAAU,SAAS,QAAS,KAAK,KAAK,KAAK,MAAM,MAAM,GAAG;AACvE,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,eAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACpB,eAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,QACtB;AAAA,MACF;AAEA,WAAK,UAAU,YAAY,SAAS,UAAW,KAAK,KAAK,MAAM,MAAM,GAAG,KAAK;AAC3E,aAAK,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AAEzC,iBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG;AAC9B,cAAI,IAAI,KAAK;AAEb,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC;AACpC,cAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC;AAEpC,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,gBAAI,SAAS;AACb,gBAAI,SAAS;AAEb,qBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,kBAAI,KAAK,KAAK,IAAI,CAAC;AACnB,kBAAI,KAAK,KAAK,IAAI,CAAC;AAEnB,kBAAI,KAAK,KAAK,IAAI,IAAI,CAAC;AACvB,kBAAI,KAAK,KAAK,IAAI,IAAI,CAAC;AAEvB,kBAAI,KAAK,SAAS,KAAK,SAAS;AAEhC,mBAAK,SAAS,KAAK,SAAS;AAC5B,mBAAK;AAEL,mBAAK,IAAI,CAAC,IAAI,KAAK;AACnB,mBAAK,IAAI,CAAC,IAAI,KAAK;AAEnB,mBAAK,IAAI,IAAI,CAAC,IAAI,KAAK;AACvB,mBAAK,IAAI,IAAI,CAAC,IAAI,KAAK;AAGvB,kBAAI,MAAM,GAAG;AACX,qBAAK,QAAQ,SAAS,QAAQ;AAE9B,yBAAS,QAAQ,SAAS,QAAQ;AAClC,yBAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,WAAK,UAAU,cAAc,SAAS,YAAa,GAAG,GAAG;AACvD,YAAI,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI;AACzB,YAAI,MAAM,IAAI;AACd,YAAI,IAAI;AACR,aAAK,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG;AAClC;AAAA,QACF;AAEA,eAAO,KAAK,IAAI,IAAI;AAAA,MACtB;AAEA,WAAK,UAAU,YAAY,SAAS,UAAW,KAAK,KAAK,GAAG;AAC1D,YAAI,KAAK,EAAG;AAEZ,iBAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,cAAI,IAAI,IAAI,CAAC;AAEb,cAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;AACtB,cAAI,IAAI,IAAI,CAAC,IAAI;AAEjB,cAAI,IAAI,CAAC;AAET,cAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;AACvB,cAAI,IAAI,IAAI,CAAC,IAAI,CAAC;AAAA,QACpB;AAAA,MACF;AAEA,WAAK,UAAU,eAAe,SAAS,aAAc,IAAI,GAAG;AAC1D,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,cAAI,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,OACtC,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IACxB;AAEF,aAAG,CAAC,IAAI,IAAI;AAEZ,cAAI,IAAI,UAAW;AACjB,oBAAQ;AAAA,UACV,OAAO;AACL,oBAAQ,IAAI,WAAY;AAAA,UAC1B;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,WAAK,UAAU,aAAa,SAAS,WAAY,IAAI,KAAK,KAAK,GAAG;AAChE,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,kBAAQ,SAAS,GAAG,CAAC,IAAI;AAEzB,cAAI,IAAI,CAAC,IAAI,QAAQ;AAAQ,kBAAQ,UAAU;AAC/C,cAAI,IAAI,IAAI,CAAC,IAAI,QAAQ;AAAQ,kBAAQ,UAAU;AAAA,QACrD;AAGA,aAAK,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,GAAG;AAC5B,cAAI,CAAC,IAAI;AAAA,QACX;AAEA,eAAO,UAAU,CAAC;AAClB,gBAAQ,QAAQ,CAAC,UAAY,CAAC;AAAA,MAChC;AAEA,WAAK,UAAU,OAAO,SAAS,KAAM,GAAG;AACtC,YAAI,KAAK,IAAI,MAAM,CAAC;AACpB,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAG,CAAC,IAAI;AAAA,QACV;AAEA,eAAO;AAAA,MACT;AAEA,WAAK,UAAU,OAAO,SAAS,KAAM,GAAG,GAAG,KAAK;AAC9C,YAAI,IAAI,IAAI,KAAK,YAAY,EAAE,QAAQ,EAAE,MAAM;AAE/C,YAAI,MAAM,KAAK,QAAQ,CAAC;AAExB,YAAI,IAAI,KAAK,KAAK,CAAC;AAEnB,YAAI,MAAM,IAAI,MAAM,CAAC;AACrB,YAAI,OAAO,IAAI,MAAM,CAAC;AACtB,YAAI,OAAO,IAAI,MAAM,CAAC;AAEtB,YAAI,OAAO,IAAI,MAAM,CAAC;AACtB,YAAI,QAAQ,IAAI,MAAM,CAAC;AACvB,YAAI,QAAQ,IAAI,MAAM,CAAC;AAEvB,YAAI,OAAO,IAAI;AACf,aAAK,SAAS;AAEd,aAAK,WAAW,EAAE,OAAO,EAAE,QAAQ,KAAK,CAAC;AACzC,aAAK,WAAW,EAAE,OAAO,EAAE,QAAQ,MAAM,CAAC;AAE1C,aAAK,UAAU,KAAK,GAAG,MAAM,MAAM,GAAG,GAAG;AACzC,aAAK,UAAU,MAAM,GAAG,OAAO,OAAO,GAAG,GAAG;AAE5C,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,KAAK,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC;AAC/C,eAAK,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC;AAChD,eAAK,CAAC,IAAI;AAAA,QACZ;AAEA,aAAK,UAAU,MAAM,MAAM,CAAC;AAC5B,aAAK,UAAU,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG;AAC1C,aAAK,UAAU,MAAM,GAAG,CAAC;AACzB,aAAK,aAAa,MAAM,CAAC;AAEzB,YAAI,WAAW,EAAE,WAAW,EAAE;AAC9B,YAAI,SAAS,EAAE,SAAS,EAAE;AAC1B,eAAO,IAAI,MAAM;AAAA,MACnB;AAGA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM;AAC9C,eAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MAC5B;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM;AAC9C,eAAO,WAAW,MAAM,KAAK,GAAG;AAAA,MAClC;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,KAAK,IAAI;AAAA,MACrC;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAQ,QAAQ;AAC9B,eAAO,MAAM,QAAS;AAGtB,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK;AAC9B,cAAI,MAAM,IAAI,aAAc,QAAQ;AACpC,oBAAU;AACV,mBAAU,IAAI,WAAa;AAE3B,mBAAS,OAAO;AAChB,eAAK,MAAM,CAAC,IAAI,KAAK;AAAA,QACvB;AAEA,YAAI,UAAU,GAAG;AACf,eAAK,MAAM,CAAC,IAAI;AAChB,eAAK;AAAA,QACP;AACA,aAAK,SAAS,QAAQ,IAAI,IAAI,KAAK;AAEnC,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AAGA,SAAG,UAAU,MAAM,SAAS,MAAO;AACjC,eAAO,KAAK,IAAI,IAAI;AAAA,MACtB;AAGA,SAAG,UAAU,OAAO,SAAS,OAAQ;AACnC,eAAO,KAAK,KAAK,KAAK,MAAM,CAAC;AAAA,MAC/B;AAGA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,YAAI,IAAI,WAAW,GAAG;AACtB,YAAI,EAAE,WAAW,EAAG,QAAO,IAAI,GAAG,CAAC;AAGnC,YAAI,MAAM;AACV,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,MAAM,IAAI,IAAI,GAAG;AAClD,cAAI,EAAE,CAAC,MAAM,EAAG;AAAA,QAClB;AAEA,YAAI,EAAE,IAAI,EAAE,QAAQ;AAClB,mBAAS,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,IAAI,EAAE,IAAI,GAAG;AACtD,gBAAI,EAAE,CAAC,MAAM,EAAG;AAEhB,kBAAM,IAAI,IAAI,CAAC;AAAA,UACjB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAGA,SAAG,UAAU,SAAS,SAAS,OAAQ,MAAM;AAC3C,eAAO,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC5C,YAAI,IAAI,OAAO;AACf,YAAI,KAAK,OAAO,KAAK;AACrB,YAAI,YAAa,aAAe,KAAK,KAAQ,KAAK;AAClD,YAAI;AAEJ,YAAI,MAAM,GAAG;AACX,cAAI,QAAQ;AAEZ,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAChC,gBAAI,WAAW,KAAK,MAAM,CAAC,IAAI;AAC/B,gBAAI,KAAM,KAAK,MAAM,CAAC,IAAI,KAAK,YAAa;AAC5C,iBAAK,MAAM,CAAC,IAAI,IAAI;AACpB,oBAAQ,aAAc,KAAK;AAAA,UAC7B;AAEA,cAAI,OAAO;AACT,iBAAK,MAAM,CAAC,IAAI;AAChB,iBAAK;AAAA,UACP;AAAA,QACF;AAEA,YAAI,MAAM,GAAG;AACX,eAAK,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACrC,iBAAK,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;AAAA,UAClC;AAEA,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,iBAAK,MAAM,CAAC,IAAI;AAAA,UAClB;AAEA,eAAK,UAAU;AAAA,QACjB;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,MAAM;AAEzC,eAAO,KAAK,aAAa,CAAC;AAC1B,eAAO,KAAK,OAAO,IAAI;AAAA,MACzB;AAKA,SAAG,UAAU,SAAS,SAAS,OAAQ,MAAM,MAAM,UAAU;AAC3D,eAAO,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC5C,YAAI;AACJ,YAAI,MAAM;AACR,eAAK,OAAQ,OAAO,MAAO;AAAA,QAC7B,OAAO;AACL,cAAI;AAAA,QACN;AAEA,YAAI,IAAI,OAAO;AACf,YAAI,IAAI,KAAK,KAAK,OAAO,KAAK,IAAI,KAAK,MAAM;AAC7C,YAAI,OAAO,WAAc,aAAc,KAAM;AAC7C,YAAI,cAAc;AAElB,aAAK;AACL,YAAI,KAAK,IAAI,GAAG,CAAC;AAGjB,YAAI,aAAa;AACf,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,wBAAY,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AAAA,UACrC;AACA,sBAAY,SAAS;AAAA,QACvB;AAEA,YAAI,MAAM,GAAG;AAAA,QAEb,WAAW,KAAK,SAAS,GAAG;AAC1B,eAAK,UAAU;AACf,eAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAChC,iBAAK,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,UAClC;AAAA,QACF,OAAO;AACL,eAAK,MAAM,CAAC,IAAI;AAChB,eAAK,SAAS;AAAA,QAChB;AAEA,YAAI,QAAQ;AACZ,aAAK,IAAI,KAAK,SAAS,GAAG,KAAK,MAAM,UAAU,KAAK,KAAK,IAAI,KAAK;AAChE,cAAI,OAAO,KAAK,MAAM,CAAC,IAAI;AAC3B,eAAK,MAAM,CAAC,IAAK,SAAU,KAAK,IAAO,SAAS;AAChD,kBAAQ,OAAO;AAAA,QACjB;AAGA,YAAI,eAAe,UAAU,GAAG;AAC9B,sBAAY,MAAM,YAAY,QAAQ,IAAI;AAAA,QAC5C;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,eAAK,MAAM,CAAC,IAAI;AAChB,eAAK,SAAS;AAAA,QAChB;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,MAAM,MAAM,UAAU;AAEzD,eAAO,KAAK,aAAa,CAAC;AAC1B,eAAO,KAAK,OAAO,MAAM,MAAM,QAAQ;AAAA,MACzC;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,MAAM;AACvC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,MAAM;AACzC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,MAAM;AACvC,eAAO,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,MAChC;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,MAAM;AACzC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAQ,YAAY,OAAO,CAAC;AAC1C,YAAI,IAAI,MAAM;AACd,YAAI,KAAK,MAAM,KAAK;AACpB,YAAI,IAAI,KAAK;AAGb,YAAI,KAAK,UAAU,EAAG,QAAO;AAG7B,YAAI,IAAI,KAAK,MAAM,CAAC;AAEpB,eAAO,CAAC,EAAE,IAAI;AAAA,MAChB;AAGA,SAAG,UAAU,SAAS,SAAS,OAAQ,MAAM;AAC3C,eAAO,OAAO,SAAS,YAAY,QAAQ,CAAC;AAC5C,YAAI,IAAI,OAAO;AACf,YAAI,KAAK,OAAO,KAAK;AAErB,eAAO,KAAK,aAAa,GAAG,yCAAyC;AAErE,YAAI,KAAK,UAAU,GAAG;AACpB,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,GAAG;AACX;AAAA,QACF;AACA,aAAK,SAAS,KAAK,IAAI,GAAG,KAAK,MAAM;AAErC,YAAI,MAAM,GAAG;AACX,cAAI,OAAO,WAAc,aAAc,KAAM;AAC7C,eAAK,MAAM,KAAK,SAAS,CAAC,KAAK;AAAA,QACjC;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,MAAM;AACzC,eAAO,KAAK,MAAM,EAAE,OAAO,IAAI;AAAA,MACjC;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAQ,QAAQ;AAC9B,eAAO,MAAM,QAAS;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AAGnC,YAAI,KAAK,aAAa,GAAG;AACvB,cAAI,KAAK,WAAW,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,KAAK;AAClD,iBAAK,MAAM,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI;AACvC,iBAAK,WAAW;AAChB,mBAAO;AAAA,UACT;AAEA,eAAK,WAAW;AAChB,eAAK,MAAM,GAAG;AACd,eAAK,WAAW;AAChB,iBAAO;AAAA,QACT;AAGA,eAAO,KAAK,OAAO,GAAG;AAAA,MACxB;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,aAAK,MAAM,CAAC,KAAK;AAGjB,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,KAAK,UAAW,KAAK;AAClE,eAAK,MAAM,CAAC,KAAK;AACjB,cAAI,MAAM,KAAK,SAAS,GAAG;AACzB,iBAAK,MAAM,IAAI,CAAC,IAAI;AAAA,UACtB,OAAO;AACL,iBAAK,MAAM,IAAI,CAAC;AAAA,UAClB;AAAA,QACF;AACA,aAAK,SAAS,KAAK,IAAI,KAAK,QAAQ,IAAI,CAAC;AAEzC,eAAO;AAAA,MACT;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAQ,QAAQ;AAC9B,eAAO,MAAM,QAAS;AACtB,YAAI,MAAM,EAAG,QAAO,KAAK,MAAM,CAAC,GAAG;AAEnC,YAAI,KAAK,aAAa,GAAG;AACvB,eAAK,WAAW;AAChB,eAAK,MAAM,GAAG;AACd,eAAK,WAAW;AAChB,iBAAO;AAAA,QACT;AAEA,aAAK,MAAM,CAAC,KAAK;AAEjB,YAAI,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,IAAI,GAAG;AAC1C,eAAK,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAC7B,eAAK,WAAW;AAAA,QAClB,OAAO;AAEL,mBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,IAAI,GAAG,KAAK;AACzD,iBAAK,MAAM,CAAC,KAAK;AACjB,iBAAK,MAAM,IAAI,CAAC,KAAK;AAAA,UACvB;AAAA,QACF;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,OAAO,SAAS,OAAQ;AACnC,aAAK,WAAW;AAEhB,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,MAAM,SAAS,MAAO;AACjC,eAAO,KAAK,MAAM,EAAE,KAAK;AAAA,MAC3B;AAEA,SAAG,UAAU,eAAe,SAAS,aAAc,KAAK,KAAK,OAAO;AAClE,YAAI,MAAM,IAAI,SAAS;AACvB,YAAI;AAEJ,aAAK,QAAQ,GAAG;AAEhB,YAAI;AACJ,YAAI,QAAQ;AACZ,aAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,eAAK,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK;AAClC,cAAI,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK;AACjC,eAAK,QAAQ;AACb,mBAAS,KAAK,OAAQ,QAAQ,WAAa;AAC3C,eAAK,MAAM,IAAI,KAAK,IAAI,IAAI;AAAA,QAC9B;AACA,eAAO,IAAI,KAAK,SAAS,OAAO,KAAK;AACnC,eAAK,KAAK,MAAM,IAAI,KAAK,IAAI,KAAK;AAClC,kBAAQ,KAAK;AACb,eAAK,MAAM,IAAI,KAAK,IAAI,IAAI;AAAA,QAC9B;AAEA,YAAI,UAAU,EAAG,QAAO,KAAK,MAAM;AAGnC,eAAO,UAAU,EAAE;AACnB,gBAAQ;AACR,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAChC,cAAI,EAAE,KAAK,MAAM,CAAC,IAAI,KAAK;AAC3B,kBAAQ,KAAK;AACb,eAAK,MAAM,CAAC,IAAI,IAAI;AAAA,QACtB;AACA,aAAK,WAAW;AAEhB,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,SAAG,UAAU,WAAW,SAAS,SAAU,KAAK,MAAM;AACpD,YAAI,QAAQ,KAAK,SAAS,IAAI;AAE9B,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI,IAAI;AAGR,YAAI,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI;AAClC,YAAI,UAAU,KAAK,WAAW,GAAG;AACjC,gBAAQ,KAAK;AACb,YAAI,UAAU,GAAG;AACf,cAAI,EAAE,MAAM,KAAK;AACjB,YAAE,OAAO,KAAK;AACd,gBAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI;AAAA,QAChC;AAGA,YAAI,IAAI,EAAE,SAAS,EAAE;AACrB,YAAI;AAEJ,YAAI,SAAS,OAAO;AAClB,cAAI,IAAI,GAAG,IAAI;AACf,YAAE,SAAS,IAAI;AACf,YAAE,QAAQ,IAAI,MAAM,EAAE,MAAM;AAC5B,mBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,cAAE,MAAM,CAAC,IAAI;AAAA,UACf;AAAA,QACF;AAEA,YAAI,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC;AACzC,YAAI,KAAK,aAAa,GAAG;AACvB,cAAI;AACJ,cAAI,GAAG;AACL,cAAE,MAAM,CAAC,IAAI;AAAA,UACf;AAAA,QACF;AAEA,iBAAS,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;AAC/B,cAAI,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,KAAK,YACpC,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,IAAI;AAI/B,eAAK,KAAK,IAAK,KAAK,MAAO,GAAG,QAAS;AAEvC,YAAE,aAAa,GAAG,IAAI,CAAC;AACvB,iBAAO,EAAE,aAAa,GAAG;AACvB;AACA,cAAE,WAAW;AACb,cAAE,aAAa,GAAG,GAAG,CAAC;AACtB,gBAAI,CAAC,EAAE,OAAO,GAAG;AACf,gBAAE,YAAY;AAAA,YAChB;AAAA,UACF;AACA,cAAI,GAAG;AACL,cAAE,MAAM,CAAC,IAAI;AAAA,UACf;AAAA,QACF;AACA,YAAI,GAAG;AACL,YAAE,MAAM;AAAA,QACV;AACA,UAAE,MAAM;AAGR,YAAI,SAAS,SAAS,UAAU,GAAG;AACjC,YAAE,OAAO,KAAK;AAAA,QAChB;AAEA,eAAO;AAAA,UACL,KAAK,KAAK;AAAA,UACV,KAAK;AAAA,QACP;AAAA,MACF;AAMA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK,MAAM,UAAU;AAC1D,eAAO,CAAC,IAAI,OAAO,CAAC;AAEpB,YAAI,KAAK,OAAO,GAAG;AACjB,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK,IAAI,GAAG,CAAC;AAAA,UACf;AAAA,QACF;AAEA,YAAI,KAAKF,MAAK;AACd,YAAI,KAAK,aAAa,KAAK,IAAI,aAAa,GAAG;AAC7C,gBAAM,KAAK,IAAI,EAAE,OAAO,KAAK,IAAI;AAEjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AAEA,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AAEA,iBAAO;AAAA,YACL;AAAA,YACA,KAAKA;AAAA,UACP;AAAA,QACF;AAEA,YAAI,KAAK,aAAa,KAAK,IAAI,aAAa,GAAG;AAC7C,gBAAM,KAAK,OAAO,IAAI,IAAI,GAAG,IAAI;AAEjC,cAAI,SAAS,OAAO;AAClB,kBAAM,IAAI,IAAI,IAAI;AAAA,UACpB;AAEA,iBAAO;AAAA,YACL;AAAA,YACA,KAAK,IAAI;AAAA,UACX;AAAA,QACF;AAEA,aAAK,KAAK,WAAW,IAAI,cAAc,GAAG;AACxC,gBAAM,KAAK,IAAI,EAAE,OAAO,IAAI,IAAI,GAAG,IAAI;AAEvC,cAAI,SAAS,OAAO;AAClB,YAAAA,OAAM,IAAI,IAAI,IAAI;AAClB,gBAAI,YAAYA,KAAI,aAAa,GAAG;AAClC,cAAAA,KAAI,KAAK,GAAG;AAAA,YACd;AAAA,UACF;AAEA,iBAAO;AAAA,YACL,KAAK,IAAI;AAAA,YACT,KAAKA;AAAA,UACP;AAAA,QACF;AAKA,YAAI,IAAI,SAAS,KAAK,UAAU,KAAK,IAAI,GAAG,IAAI,GAAG;AACjD,iBAAO;AAAA,YACL,KAAK,IAAI,GAAG,CAAC;AAAA,YACb,KAAK;AAAA,UACP;AAAA,QACF;AAGA,YAAI,IAAI,WAAW,GAAG;AACpB,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,cAC3B,KAAK;AAAA,YACP;AAAA,UACF;AAEA,cAAI,SAAS,OAAO;AAClB,mBAAO;AAAA,cACL,KAAK;AAAA,cACL,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,YACrC;AAAA,UACF;AAEA,iBAAO;AAAA,YACL,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC;AAAA,YAC3B,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,UACrC;AAAA,QACF;AAEA,eAAO,KAAK,SAAS,KAAK,IAAI;AAAA,MAChC;AAGA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AAGA,SAAG,UAAU,MAAM,SAASA,KAAK,KAAK;AACpC,eAAO,KAAK,OAAO,KAAK,OAAO,KAAK,EAAE;AAAA,MACxC;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,OAAO,KAAK,OAAO,IAAI,EAAE;AAAA,MACvC;AAGA,SAAG,UAAU,WAAW,SAAS,SAAU,KAAK;AAC9C,YAAI,KAAK,KAAK,OAAO,GAAG;AAGxB,YAAI,GAAG,IAAI,OAAO,EAAG,QAAO,GAAG;AAE/B,YAAIA,OAAM,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,GAAG;AAExD,YAAI,OAAO,IAAI,MAAM,CAAC;AACtB,YAAI,KAAK,IAAI,MAAM,CAAC;AACpB,YAAI,MAAMA,KAAI,IAAI,IAAI;AAGtB,YAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,EAAG,QAAO,GAAG;AAGhD,eAAO,GAAG,IAAI,aAAa,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC;AAAA,MACjE;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,OAAO,QAAS;AACvB,YAAI,KAAK,KAAK,MAAM;AAEpB,YAAI,MAAM;AACV,iBAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,iBAAO,IAAI,OAAO,KAAK,MAAM,CAAC,IAAI,MAAM;AAAA,QAC1C;AAEA,eAAO;AAAA,MACT;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAS;AAEvB,YAAI,QAAQ;AACZ,iBAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,cAAI,KAAK,KAAK,MAAM,CAAC,IAAI,KAAK,QAAQ;AACtC,eAAK,MAAM,CAAC,IAAK,IAAI,MAAO;AAC5B,kBAAQ,IAAI;AAAA,QACd;AAEA,eAAO,KAAK,MAAM;AAAA,MACpB;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,MAAM,EAAE,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,GAAG;AACpC,eAAO,EAAE,aAAa,CAAC;AACvB,eAAO,CAAC,EAAE,OAAO,CAAC;AAElB,YAAI,IAAI;AACR,YAAI,IAAI,EAAE,MAAM;AAEhB,YAAI,EAAE,aAAa,GAAG;AACpB,cAAI,EAAE,KAAK,CAAC;AAAA,QACd,OAAO;AACL,cAAI,EAAE,MAAM;AAAA,QACd;AAGA,YAAI,IAAI,IAAI,GAAG,CAAC;AAChB,YAAI,IAAI,IAAI,GAAG,CAAC;AAGhB,YAAI,IAAI,IAAI,GAAG,CAAC;AAChB,YAAI,IAAI,IAAI,GAAG,CAAC;AAEhB,YAAI,IAAI;AAER,eAAO,EAAE,OAAO,KAAK,EAAE,OAAO,GAAG;AAC/B,YAAE,OAAO,CAAC;AACV,YAAE,OAAO,CAAC;AACV,YAAE;AAAA,QACJ;AAEA,YAAI,KAAK,EAAE,MAAM;AACjB,YAAI,KAAK,EAAE,MAAM;AAEjB,eAAO,CAAC,EAAE,OAAO,GAAG;AAClB,mBAAS,IAAI,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO,EAAE;AACzE,cAAI,IAAI,GAAG;AACT,cAAE,OAAO,CAAC;AACV,mBAAO,MAAM,GAAG;AACd,kBAAI,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAC1B,kBAAE,KAAK,EAAE;AACT,kBAAE,KAAK,EAAE;AAAA,cACX;AAEA,gBAAE,OAAO,CAAC;AACV,gBAAE,OAAO,CAAC;AAAA,YACZ;AAAA,UACF;AAEA,mBAAS,IAAI,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO,EAAE;AACzE,cAAI,IAAI,GAAG;AACT,cAAE,OAAO,CAAC;AACV,mBAAO,MAAM,GAAG;AACd,kBAAI,EAAE,MAAM,KAAK,EAAE,MAAM,GAAG;AAC1B,kBAAE,KAAK,EAAE;AACT,kBAAE,KAAK,EAAE;AAAA,cACX;AAEA,gBAAE,OAAO,CAAC;AACV,gBAAE,OAAO,CAAC;AAAA,YACZ;AAAA,UACF;AAEA,cAAI,EAAE,IAAI,CAAC,KAAK,GAAG;AACjB,cAAE,KAAK,CAAC;AACR,cAAE,KAAK,CAAC;AACR,cAAE,KAAK,CAAC;AAAA,UACV,OAAO;AACL,cAAE,KAAK,CAAC;AACR,cAAE,KAAK,CAAC;AACR,cAAE,KAAK,CAAC;AAAA,UACV;AAAA,QACF;AAEA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG;AAAA,UACH,KAAK,EAAE,OAAO,CAAC;AAAA,QACjB;AAAA,MACF;AAKA,SAAG,UAAU,SAAS,SAAS,OAAQ,GAAG;AACxC,eAAO,EAAE,aAAa,CAAC;AACvB,eAAO,CAAC,EAAE,OAAO,CAAC;AAElB,YAAI,IAAI;AACR,YAAI,IAAI,EAAE,MAAM;AAEhB,YAAI,EAAE,aAAa,GAAG;AACpB,cAAI,EAAE,KAAK,CAAC;AAAA,QACd,OAAO;AACL,cAAI,EAAE,MAAM;AAAA,QACd;AAEA,YAAI,KAAK,IAAI,GAAG,CAAC;AACjB,YAAI,KAAK,IAAI,GAAG,CAAC;AAEjB,YAAI,QAAQ,EAAE,MAAM;AAEpB,eAAO,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG;AACrC,mBAAS,IAAI,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO,EAAE;AACzE,cAAI,IAAI,GAAG;AACT,cAAE,OAAO,CAAC;AACV,mBAAO,MAAM,GAAG;AACd,kBAAI,GAAG,MAAM,GAAG;AACd,mBAAG,KAAK,KAAK;AAAA,cACf;AAEA,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AAEA,mBAAS,IAAI,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,OAAO,EAAE;AACzE,cAAI,IAAI,GAAG;AACT,cAAE,OAAO,CAAC;AACV,mBAAO,MAAM,GAAG;AACd,kBAAI,GAAG,MAAM,GAAG;AACd,mBAAG,KAAK,KAAK;AAAA,cACf;AAEA,iBAAG,OAAO,CAAC;AAAA,YACb;AAAA,UACF;AAEA,cAAI,EAAE,IAAI,CAAC,KAAK,GAAG;AACjB,cAAE,KAAK,CAAC;AACR,eAAG,KAAK,EAAE;AAAA,UACZ,OAAO;AACL,cAAE,KAAK,CAAC;AACR,eAAG,KAAK,EAAE;AAAA,UACZ;AAAA,QACF;AAEA,YAAI;AACJ,YAAI,EAAE,KAAK,CAAC,MAAM,GAAG;AACnB,gBAAM;AAAA,QACR,OAAO;AACL,gBAAM;AAAA,QACR;AAEA,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,KAAK,CAAC;AAAA,QACZ;AAEA,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,YAAI,KAAK,OAAO,EAAG,QAAO,IAAI,IAAI;AAClC,YAAI,IAAI,OAAO,EAAG,QAAO,KAAK,IAAI;AAElC,YAAI,IAAI,KAAK,MAAM;AACnB,YAAI,IAAI,IAAI,MAAM;AAClB,UAAE,WAAW;AACb,UAAE,WAAW;AAGb,iBAAS,QAAQ,GAAG,EAAE,OAAO,KAAK,EAAE,OAAO,GAAG,SAAS;AACrD,YAAE,OAAO,CAAC;AACV,YAAE,OAAO,CAAC;AAAA,QACZ;AAEA,WAAG;AACD,iBAAO,EAAE,OAAO,GAAG;AACjB,cAAE,OAAO,CAAC;AAAA,UACZ;AACA,iBAAO,EAAE,OAAO,GAAG;AACjB,cAAE,OAAO,CAAC;AAAA,UACZ;AAEA,cAAI,IAAI,EAAE,IAAI,CAAC;AACf,cAAI,IAAI,GAAG;AAET,gBAAI,IAAI;AACR,gBAAI;AACJ,gBAAI;AAAA,UACN,WAAW,MAAM,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG;AACrC;AAAA,UACF;AAEA,YAAE,KAAK,CAAC;AAAA,QACV,SAAS;AAET,eAAO,EAAE,OAAO,KAAK;AAAA,MACvB;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG;AAAA,MAClC;AAEA,SAAG,UAAU,SAAS,SAAS,SAAU;AACvC,gBAAQ,KAAK,MAAM,CAAC,IAAI,OAAO;AAAA,MACjC;AAEA,SAAG,UAAU,QAAQ,SAAS,QAAS;AACrC,gBAAQ,KAAK,MAAM,CAAC,IAAI,OAAO;AAAA,MACjC;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,KAAK,MAAM,CAAC,IAAI;AAAA,MACzB;AAGA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,OAAO,QAAQ,QAAQ;AAC9B,YAAI,IAAI,MAAM;AACd,YAAI,KAAK,MAAM,KAAK;AACpB,YAAI,IAAI,KAAK;AAGb,YAAI,KAAK,UAAU,GAAG;AACpB,eAAK,QAAQ,IAAI,CAAC;AAClB,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAGA,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,UAAU,KAAK,IAAI,KAAK,QAAQ,KAAK;AACnD,cAAI,IAAI,KAAK,MAAM,CAAC,IAAI;AACxB,eAAK;AACL,kBAAQ,MAAM;AACd,eAAK;AACL,eAAK,MAAM,CAAC,IAAI;AAAA,QAClB;AACA,YAAI,UAAU,GAAG;AACf,eAAK,MAAM,CAAC,IAAI;AAChB,eAAK;AAAA,QACP;AACA,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,SAAS,SAAS,SAAU;AACvC,eAAO,KAAK,WAAW,KAAK,KAAK,MAAM,CAAC,MAAM;AAAA,MAChD;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,YAAI,WAAW,MAAM;AAErB,YAAI,KAAK,aAAa,KAAK,CAAC,SAAU,QAAO;AAC7C,YAAI,KAAK,aAAa,KAAK,SAAU,QAAO;AAE5C,aAAK,MAAM;AAEX,YAAI;AACJ,YAAI,KAAK,SAAS,GAAG;AACnB,gBAAM;AAAA,QACR,OAAO;AACL,cAAI,UAAU;AACZ,kBAAM,CAAC;AAAA,UACT;AAEA,iBAAO,OAAO,UAAW,mBAAmB;AAE5C,cAAI,IAAI,KAAK,MAAM,CAAC,IAAI;AACxB,gBAAM,MAAM,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA,QACvC;AACA,YAAI,KAAK,aAAa,EAAG,QAAO,CAAC,MAAM;AACvC,eAAO;AAAA,MACT;AAMA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,YAAI,KAAK,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AACtD,YAAI,KAAK,aAAa,KAAK,IAAI,aAAa,EAAG,QAAO;AAEtD,YAAI,MAAM,KAAK,KAAK,GAAG;AACvB,YAAI,KAAK,aAAa,EAAG,QAAO,CAAC,MAAM;AACvC,eAAO;AAAA,MACT;AAGA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AAEtC,YAAI,KAAK,SAAS,IAAI,OAAQ,QAAO;AACrC,YAAI,KAAK,SAAS,IAAI,OAAQ,QAAO;AAErC,YAAI,MAAM;AACV,iBAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,cAAI,IAAI,KAAK,MAAM,CAAC,IAAI;AACxB,cAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AAEvB,cAAI,MAAM,EAAG;AACb,cAAI,IAAI,GAAG;AACT,kBAAM;AAAA,UACR,WAAW,IAAI,GAAG;AAChB,kBAAM;AAAA,UACR;AACA;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AAEA,SAAG,UAAU,KAAK,SAAS,GAAI,KAAK;AAClC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AAEA,SAAG,UAAU,KAAK,SAAS,GAAI,KAAK;AAClC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AAEA,SAAG,UAAU,OAAO,SAAS,KAAM,KAAK;AACtC,eAAO,KAAK,KAAK,GAAG,KAAK;AAAA,MAC3B;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,IAAI,GAAG,KAAK;AAAA,MAC1B;AAEA,SAAG,UAAU,MAAM,SAAS,IAAK,KAAK;AACpC,eAAO,KAAK,KAAK,GAAG,MAAM;AAAA,MAC5B;AAEA,SAAG,UAAU,KAAK,SAAS,GAAI,KAAK;AAClC,eAAO,KAAK,IAAI,GAAG,MAAM;AAAA,MAC3B;AAMA,SAAG,MAAM,SAAS,IAAK,KAAK;AAC1B,eAAO,IAAI,IAAI,GAAG;AAAA,MACpB;AAEA,SAAG,UAAU,QAAQ,SAAS,MAAO,KAAK;AACxC,eAAO,CAAC,KAAK,KAAK,uCAAuC;AACzD,eAAO,KAAK,aAAa,GAAG,+BAA+B;AAC3D,eAAO,IAAI,UAAU,IAAI,EAAE,UAAU,GAAG;AAAA,MAC1C;AAEA,SAAG,UAAU,UAAU,SAAS,UAAW;AACzC,eAAO,KAAK,KAAK,sDAAsD;AACvE,eAAO,KAAK,IAAI,YAAY,IAAI;AAAA,MAClC;AAEA,SAAG,UAAU,YAAY,SAAS,UAAW,KAAK;AAChD,aAAK,MAAM;AACX,eAAO;AAAA,MACT;AAEA,SAAG,UAAU,WAAW,SAAS,SAAU,KAAK;AAC9C,eAAO,CAAC,KAAK,KAAK,uCAAuC;AACzD,eAAO,KAAK,UAAU,GAAG;AAAA,MAC3B;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,eAAO,KAAK,KAAK,oCAAoC;AACrD,eAAO,KAAK,IAAI,IAAI,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,UAAU,SAAS,QAAS,KAAK;AAC5C,eAAO,KAAK,KAAK,qCAAqC;AACtD,eAAO,KAAK,IAAI,KAAK,MAAM,GAAG;AAAA,MAChC;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,eAAO,KAAK,KAAK,oCAAoC;AACrD,eAAO,KAAK,IAAI,IAAI,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,UAAU,SAAS,QAAS,KAAK;AAC5C,eAAO,KAAK,KAAK,qCAAqC;AACtD,eAAO,KAAK,IAAI,KAAK,MAAM,GAAG;AAAA,MAChC;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,eAAO,KAAK,KAAK,oCAAoC;AACrD,eAAO,KAAK,IAAI,IAAI,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,eAAO,KAAK,KAAK,oCAAoC;AACrD,aAAK,IAAI,SAAS,MAAM,GAAG;AAC3B,eAAO,KAAK,IAAI,IAAI,MAAM,GAAG;AAAA,MAC/B;AAEA,SAAG,UAAU,UAAU,SAAS,QAAS,KAAK;AAC5C,eAAO,KAAK,KAAK,oCAAoC;AACrD,aAAK,IAAI,SAAS,MAAM,GAAG;AAC3B,eAAO,KAAK,IAAI,KAAK,MAAM,GAAG;AAAA,MAChC;AAEA,SAAG,UAAU,SAAS,SAAS,SAAU;AACvC,eAAO,KAAK,KAAK,oCAAoC;AACrD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,IAAI,IAAI;AAAA,MAC1B;AAEA,SAAG,UAAU,UAAU,SAAS,UAAW;AACzC,eAAO,KAAK,KAAK,qCAAqC;AACtD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,KAAK,IAAI;AAAA,MAC3B;AAGA,SAAG,UAAU,UAAU,SAAS,UAAW;AACzC,eAAO,KAAK,KAAK,qCAAqC;AACtD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,KAAK,IAAI;AAAA,MAC3B;AAEA,SAAG,UAAU,UAAU,SAAS,UAAW;AACzC,eAAO,KAAK,KAAK,qCAAqC;AACtD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,KAAK,IAAI;AAAA,MAC3B;AAGA,SAAG,UAAU,SAAS,SAAS,SAAU;AACvC,eAAO,KAAK,KAAK,oCAAoC;AACrD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,IAAI,IAAI;AAAA,MAC1B;AAEA,SAAG,UAAU,SAAS,SAAS,OAAQ,KAAK;AAC1C,eAAO,KAAK,OAAO,CAAC,IAAI,KAAK,mBAAmB;AAChD,aAAK,IAAI,SAAS,IAAI;AACtB,eAAO,KAAK,IAAI,IAAI,MAAM,GAAG;AAAA,MAC/B;AAGA,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAGA,eAAS,OAAQ,MAAM,GAAG;AAExB,aAAK,OAAO;AACZ,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,KAAK,EAAE,UAAU;AAC1B,aAAK,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC;AAE7C,aAAK,MAAM,KAAK,KAAK;AAAA,MACvB;AAEA,aAAO,UAAU,OAAO,SAAS,OAAQ;AACvC,YAAI,MAAM,IAAI,GAAG,IAAI;AACrB,YAAI,QAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC;AAC5C,eAAO;AAAA,MACT;AAEA,aAAO,UAAU,UAAU,SAAS,QAAS,KAAK;AAGhD,YAAI,IAAI;AACR,YAAI;AAEJ,WAAG;AACD,eAAK,MAAM,GAAG,KAAK,GAAG;AACtB,cAAI,KAAK,MAAM,CAAC;AAChB,cAAI,EAAE,KAAK,KAAK,GAAG;AACnB,iBAAO,EAAE,UAAU;AAAA,QACrB,SAAS,OAAO,KAAK;AAErB,YAAI,MAAM,OAAO,KAAK,IAAI,KAAK,EAAE,KAAK,KAAK,CAAC;AAC5C,YAAI,QAAQ,GAAG;AACb,YAAE,MAAM,CAAC,IAAI;AACb,YAAE,SAAS;AAAA,QACb,WAAW,MAAM,GAAG;AAClB,YAAE,KAAK,KAAK,CAAC;AAAA,QACf,OAAO;AACL,cAAI,EAAE,UAAU,QAAW;AAEzB,cAAE,MAAM;AAAA,UACV,OAAO;AAEL,cAAE,OAAO;AAAA,UACX;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,aAAO,UAAU,QAAQ,SAASI,OAAO,OAAO,KAAK;AACnD,cAAM,OAAO,KAAK,GAAG,GAAG,GAAG;AAAA,MAC7B;AAEA,aAAO,UAAU,QAAQ,SAAS,MAAO,KAAK;AAC5C,eAAO,IAAI,KAAK,KAAK,CAAC;AAAA,MACxB;AAEA,eAAS,OAAQ;AACf,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAyE;AAAA,MAC7E;AACA,eAAS,MAAM,MAAM;AAErB,WAAK,UAAU,QAAQ,SAASA,OAAO,OAAO,QAAQ;AAEpD,YAAI,OAAO;AAEX,YAAI,SAAS,KAAK,IAAI,MAAM,QAAQ,CAAC;AACrC,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,iBAAO,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC;AAAA,QACjC;AACA,eAAO,SAAS;AAEhB,YAAI,MAAM,UAAU,GAAG;AACrB,gBAAM,MAAM,CAAC,IAAI;AACjB,gBAAM,SAAS;AACf;AAAA,QACF;AAGA,YAAI,OAAO,MAAM,MAAM,CAAC;AACxB,eAAO,MAAM,OAAO,QAAQ,IAAI,OAAO;AAEvC,aAAK,IAAI,IAAI,IAAI,MAAM,QAAQ,KAAK;AAClC,cAAI,OAAO,MAAM,MAAM,CAAC,IAAI;AAC5B,gBAAM,MAAM,IAAI,EAAE,KAAM,OAAO,SAAS,IAAM,SAAS;AACvD,iBAAO;AAAA,QACT;AACA,kBAAU;AACV,cAAM,MAAM,IAAI,EAAE,IAAI;AACtB,YAAI,SAAS,KAAK,MAAM,SAAS,IAAI;AACnC,gBAAM,UAAU;AAAA,QAClB,OAAO;AACL,gBAAM,UAAU;AAAA,QAClB;AAAA,MACF;AAEA,WAAK,UAAU,QAAQ,SAAS,MAAO,KAAK;AAE1C,YAAI,MAAM,IAAI,MAAM,IAAI;AACxB,YAAI,MAAM,IAAI,SAAS,CAAC,IAAI;AAC5B,YAAI,UAAU;AAGd,YAAI,KAAK;AACT,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AACvB,gBAAM,IAAI;AACV,cAAI,MAAM,CAAC,IAAI,KAAK;AACpB,eAAK,IAAI,MAAS,KAAK,WAAa;AAAA,QACtC;AAGA,YAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,cAAI;AACJ,cAAI,IAAI,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG;AACnC,gBAAI;AAAA,UACN;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAAS,OAAQ;AACf,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAgE;AAAA,MACpE;AACA,eAAS,MAAM,MAAM;AAErB,eAAS,OAAQ;AACf,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAuD;AAAA,MAC3D;AACA,eAAS,MAAM,MAAM;AAErB,eAAS,SAAU;AAEjB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QAAqE;AAAA,MACzE;AACA,eAAS,QAAQ,MAAM;AAEvB,aAAO,UAAU,QAAQ,SAAS,MAAO,KAAK;AAE5C,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAO;AACrC,cAAI,KAAK,KAAK;AACd,kBAAQ;AAER,cAAI,MAAM,CAAC,IAAI;AACf,kBAAQ;AAAA,QACV;AACA,YAAI,UAAU,GAAG;AACf,cAAI,MAAM,IAAI,QAAQ,IAAI;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AAGA,SAAG,SAAS,SAAS,MAAO,MAAM;AAEhC,YAAI,OAAO,IAAI,EAAG,QAAO,OAAO,IAAI;AAEpC,YAAIC;AACJ,YAAI,SAAS,QAAQ;AACnB,UAAAA,SAAQ,IAAI,KAAK;AAAA,QACnB,WAAW,SAAS,QAAQ;AAC1B,UAAAA,SAAQ,IAAI,KAAK;AAAA,QACnB,WAAW,SAAS,QAAQ;AAC1B,UAAAA,SAAQ,IAAI,KAAK;AAAA,QACnB,WAAW,SAAS,UAAU;AAC5B,UAAAA,SAAQ,IAAI,OAAO;AAAA,QACrB,OAAO;AACL,gBAAM,IAAI,MAAM,mBAAmB,IAAI;AAAA,QACzC;AACA,eAAO,IAAI,IAAIA;AAEf,eAAOA;AAAA,MACT;AAKA,eAAS,IAAK,GAAG;AACf,YAAI,OAAO,MAAM,UAAU;AACzB,cAAI,QAAQ,GAAG,OAAO,CAAC;AACvB,eAAK,IAAI,MAAM;AACf,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,iBAAO,EAAE,IAAI,CAAC,GAAG,gCAAgC;AACjD,eAAK,IAAI;AACT,eAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAEA,UAAI,UAAU,WAAW,SAAS,SAAU,GAAG;AAC7C,eAAO,EAAE,aAAa,GAAG,+BAA+B;AACxD,eAAO,EAAE,KAAK,iCAAiC;AAAA,MACjD;AAEA,UAAI,UAAU,WAAW,SAAS,SAAU,GAAG,GAAG;AAChD,gBAAQ,EAAE,WAAW,EAAE,cAAc,GAAG,+BAA+B;AACvE;AAAA,UAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;AAAA,UAC1B;AAAA,QAAiC;AAAA,MACrC;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG;AACrC,YAAI,KAAK,MAAO,QAAO,KAAK,MAAM,QAAQ,CAAC,EAAE,UAAU,IAAI;AAC3D,eAAO,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI;AAAA,MACtC;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG;AACnC,YAAI,EAAE,OAAO,GAAG;AACd,iBAAO,EAAE,MAAM;AAAA,QACjB;AAEA,eAAO,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,IAAI;AAAA,MACrC;AAEA,UAAI,UAAU,MAAM,SAASJ,KAAK,GAAG,GAAG;AACtC,aAAK,SAAS,GAAG,CAAC;AAElB,YAAI,MAAM,EAAE,IAAI,CAAC;AACjB,YAAI,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG;AACxB,cAAI,KAAK,KAAK,CAAC;AAAA,QACjB;AACA,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG,GAAG;AACxC,aAAK,SAAS,GAAG,CAAC;AAElB,YAAI,MAAM,EAAE,KAAK,CAAC;AAClB,YAAI,IAAI,IAAI,KAAK,CAAC,KAAK,GAAG;AACxB,cAAI,KAAK,KAAK,CAAC;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG,GAAG;AACtC,aAAK,SAAS,GAAG,CAAC;AAElB,YAAI,MAAM,EAAE,IAAI,CAAC;AACjB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,KAAK,KAAK,CAAC;AAAA,QACjB;AACA,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG,GAAG;AACxC,aAAK,SAAS,GAAG,CAAC;AAElB,YAAI,MAAM,EAAE,KAAK,CAAC;AAClB,YAAI,IAAI,KAAK,CAAC,IAAI,GAAG;AACnB,cAAI,KAAK,KAAK,CAAC;AAAA,QACjB;AACA,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG,KAAK;AACxC,aAAK,SAAS,CAAC;AACf,eAAO,KAAK,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,MAC/B;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG,GAAG;AACxC,aAAK,SAAS,GAAG,CAAC;AAClB,eAAO,KAAK,KAAK,EAAE,KAAK,CAAC,CAAC;AAAA,MAC5B;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG,GAAG;AACtC,aAAK,SAAS,GAAG,CAAC;AAClB,eAAO,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC;AAAA,MAC3B;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG;AACrC,eAAO,KAAK,KAAK,GAAG,EAAE,MAAM,CAAC;AAAA,MAC/B;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG;AACnC,eAAO,KAAK,IAAI,GAAG,CAAC;AAAA,MACtB;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG;AACrC,YAAI,EAAE,OAAO,EAAG,QAAO,EAAE,MAAM;AAE/B,YAAI,OAAO,KAAK,EAAE,MAAM,CAAC;AACzB,eAAO,OAAO,MAAM,CAAC;AAGrB,YAAI,SAAS,GAAG;AACd,cAAI,MAAM,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;AACxC,iBAAO,KAAK,IAAI,GAAG,GAAG;AAAA,QACxB;AAKA,YAAI,IAAI,KAAK,EAAE,KAAK,CAAC;AACrB,YAAI,IAAI;AACR,eAAO,CAAC,EAAE,OAAO,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG;AACtC;AACA,YAAE,OAAO,CAAC;AAAA,QACZ;AACA,eAAO,CAAC,EAAE,OAAO,CAAC;AAElB,YAAI,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,IAAI;AAC9B,YAAI,OAAO,IAAI,OAAO;AAItB,YAAI,OAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC;AAClC,YAAI,IAAI,KAAK,EAAE,UAAU;AACzB,YAAI,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI;AAEhC,eAAO,KAAK,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,MAAM,GAAG;AACxC,YAAE,QAAQ,IAAI;AAAA,QAChB;AAEA,YAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AACrB,YAAI,IAAI,KAAK,IAAI,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvC,YAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AACrB,YAAI,IAAI;AACR,eAAO,EAAE,IAAI,GAAG,MAAM,GAAG;AACvB,cAAI,MAAM;AACV,mBAAS,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,KAAK;AACvC,kBAAM,IAAI,OAAO;AAAA,UACnB;AACA,iBAAO,IAAI,CAAC;AACZ,cAAI,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;AAE/C,cAAI,EAAE,OAAO,CAAC;AACd,cAAI,EAAE,OAAO;AACb,cAAI,EAAE,OAAO,CAAC;AACd,cAAI;AAAA,QACN;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,OAAO,SAAS,KAAM,GAAG;AACrC,YAAI,MAAM,EAAE,OAAO,KAAK,CAAC;AACzB,YAAI,IAAI,aAAa,GAAG;AACtB,cAAI,WAAW;AACf,iBAAO,KAAK,KAAK,GAAG,EAAE,OAAO;AAAA,QAC/B,OAAO;AACL,iBAAO,KAAK,KAAK,GAAG;AAAA,QACtB;AAAA,MACF;AAEA,UAAI,UAAU,MAAM,SAAS,IAAK,GAAG,KAAK;AACxC,YAAI,IAAI,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,MAAM,IAAI;AAC7C,YAAI,IAAI,KAAK,CAAC,MAAM,EAAG,QAAO,EAAE,MAAM;AAEtC,YAAI,aAAa;AACjB,YAAI,MAAM,IAAI,MAAM,KAAK,UAAU;AACnC,YAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,MAAM,IAAI;AAC7B,YAAI,CAAC,IAAI;AACT,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AAAA,QACjC;AAEA,YAAI,MAAM,IAAI,CAAC;AACf,YAAI,UAAU;AACd,YAAI,aAAa;AACjB,YAAI,QAAQ,IAAI,UAAU,IAAI;AAC9B,YAAI,UAAU,GAAG;AACf,kBAAQ;AAAA,QACV;AAEA,aAAK,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACpC,cAAI,OAAO,IAAI,MAAM,CAAC;AACtB,mBAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,KAAK;AACnC,gBAAI,MAAO,QAAQ,IAAK;AACxB,gBAAI,QAAQ,IAAI,CAAC,GAAG;AAClB,oBAAM,KAAK,IAAI,GAAG;AAAA,YACpB;AAEA,gBAAI,QAAQ,KAAK,YAAY,GAAG;AAC9B,2BAAa;AACb;AAAA,YACF;AAEA,wBAAY;AACZ,uBAAW;AACX;AACA,gBAAI,eAAe,eAAe,MAAM,KAAK,MAAM,GAAI;AAEvD,kBAAM,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC;AAChC,yBAAa;AACb,sBAAU;AAAA,UACZ;AACA,kBAAQ;AAAA,QACV;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,YAAY,SAAS,UAAW,KAAK;AACjD,YAAI,IAAI,IAAI,KAAK,KAAK,CAAC;AAEvB,eAAO,MAAM,MAAM,EAAE,MAAM,IAAI;AAAA,MACjC;AAEA,UAAI,UAAU,cAAc,SAAS,YAAa,KAAK;AACrD,YAAI,MAAM,IAAI,MAAM;AACpB,YAAI,MAAM;AACV,eAAO;AAAA,MACT;AAMA,SAAG,OAAO,SAAS,KAAM,KAAK;AAC5B,eAAO,IAAI,KAAK,GAAG;AAAA,MACrB;AAEA,eAAS,KAAM,GAAG;AAChB,YAAI,KAAK,MAAM,CAAC;AAEhB,aAAK,QAAQ,KAAK,EAAE,UAAU;AAC9B,YAAI,KAAK,QAAQ,OAAO,GAAG;AACzB,eAAK,SAAS,KAAM,KAAK,QAAQ;AAAA,QACnC;AAEA,aAAK,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,KAAK,KAAK;AACpC,aAAK,KAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC;AAChC,aAAK,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC;AAEhC,aAAK,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC;AACrD,aAAK,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;AACjC,aAAK,OAAO,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA,MAClC;AACA,eAAS,MAAM,GAAG;AAElB,WAAK,UAAU,YAAY,SAAS,UAAW,KAAK;AAClD,eAAO,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,MACxC;AAEA,WAAK,UAAU,cAAc,SAAS,YAAa,KAAK;AACtD,YAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC;AACpC,UAAE,MAAM;AACR,eAAO;AAAA,MACT;AAEA,WAAK,UAAU,OAAO,SAAS,KAAM,GAAG,GAAG;AACzC,YAAI,EAAE,OAAO,KAAK,EAAE,OAAO,GAAG;AAC5B,YAAE,MAAM,CAAC,IAAI;AACb,YAAE,SAAS;AACX,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,EAAE,KAAK,CAAC;AAChB,YAAI,IAAI,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC;AACxE,YAAI,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK;AACnC,YAAI,MAAM;AAEV,YAAI,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG;AACtB,gBAAM,EAAE,KAAK,KAAK,CAAC;AAAA,QACrB,WAAW,EAAE,KAAK,CAAC,IAAI,GAAG;AACxB,gBAAM,EAAE,KAAK,KAAK,CAAC;AAAA,QACrB;AAEA,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAEA,WAAK,UAAU,MAAM,SAAS,IAAK,GAAG,GAAG;AACvC,YAAI,EAAE,OAAO,KAAK,EAAE,OAAO,EAAG,QAAO,IAAI,GAAG,CAAC,EAAE,UAAU,IAAI;AAE7D,YAAI,IAAI,EAAE,IAAI,CAAC;AACf,YAAI,IAAI,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC;AACxE,YAAI,IAAI,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,KAAK;AACnC,YAAI,MAAM;AACV,YAAI,EAAE,IAAI,KAAK,CAAC,KAAK,GAAG;AACtB,gBAAM,EAAE,KAAK,KAAK,CAAC;AAAA,QACrB,WAAW,EAAE,KAAK,CAAC,IAAI,GAAG;AACxB,gBAAM,EAAE,KAAK,KAAK,CAAC;AAAA,QACrB;AAEA,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAEA,WAAK,UAAU,OAAO,SAAS,KAAM,GAAG;AAEtC,YAAI,MAAM,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;AACjD,eAAO,IAAI,UAAU,IAAI;AAAA,MAC3B;AAAA,IACF,GAAG,OAAOH,YAAW,eAAeA,SAAQD,QAAI;AAAA;AAAA;;;ACt3GhD;AAAA,uCAAAS,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,OAAS;AAAA,QACP;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,QACR,YAAY;AAAA,QACZ,MAAQ;AAAA,QACR,MAAQ;AAAA,QACR,SAAW;AAAA,MACb;AAAA,MACA,YAAc;AAAA,QACZ,MAAQ;AAAA,QACR,KAAO;AAAA,MACT;AAAA,MACA,UAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,QAAU;AAAA,MACV,SAAW;AAAA,MACX,MAAQ;AAAA,QACN,KAAO;AAAA,MACT;AAAA,MACA,UAAY;AAAA,MACZ,iBAAmB;AAAA,QACjB,MAAQ;AAAA,QACR,WAAa;AAAA,QACb,QAAU;AAAA,QACV,OAAS;AAAA,QACT,oBAAoB;AAAA,QACpB,aAAa;AAAA,QACb,yBAAyB;AAAA,QACzB,sBAAsB;AAAA,QACtB,wBAAwB;AAAA,QACxB,wBAAwB;AAAA,QACxB,mBAAmB;AAAA,QACnB,UAAY;AAAA,QACZ,OAAS;AAAA,MACX;AAAA,MACA,cAAgB;AAAA,QACd,SAAS;AAAA,QACT,SAAW;AAAA,QACX,WAAW;AAAA,QACX,aAAa;AAAA,QACb,UAAY;AAAA,QACZ,uBAAuB;AAAA,QACvB,6BAA6B;AAAA,MAC/B;AAAA,IACF;AAAA;AAAA;;;ACvDA;AAAA,8CAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAEjB,aAAS,OAAO,KAAK,KAAK;AACxB,UAAI,CAAC;AACH,cAAM,IAAI,MAAM,OAAO,kBAAkB;AAAA,IAC7C;AAEA,WAAO,QAAQ,SAAS,YAAY,GAAG,GAAG,KAAK;AAC7C,UAAI,KAAK;AACP,cAAM,IAAI,MAAM,OAAQ,uBAAuB,IAAI,SAAS,CAAE;AAAA,IAClE;AAAA;AAAA;;;ACVA,IAAAC,kBAAA;AAAA,wDAAAC,UAAA;AAAA;AAEA,QAAI,QAAQA;AAEZ,aAAS,QAAQ,KAAK,KAAK;AACzB,UAAI,MAAM,QAAQ,GAAG;AACnB,eAAO,IAAI,MAAM;AACnB,UAAI,CAAC;AACH,eAAO,CAAC;AACV,UAAI,MAAM,CAAC;AACX,UAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC9B,cAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AACpB,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,OAAO;AACjB,cAAM,IAAI,QAAQ,gBAAgB,EAAE;AACpC,YAAI,IAAI,SAAS,MAAM;AACrB,gBAAM,MAAM;AACd,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAI,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,MAC9C,OAAO;AACL,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,cAAI,IAAI,IAAI,WAAW,CAAC;AACxB,cAAI,KAAK,KAAK;AACd,cAAI,KAAK,IAAI;AACb,cAAI;AACF,gBAAI,KAAK,IAAI,EAAE;AAAA;AAEf,gBAAI,KAAK,EAAE;AAAA,QACf;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,UAAM,UAAU;AAEhB,aAAS,MAAM,MAAM;AACnB,UAAI,KAAK,WAAW;AAClB,eAAO,MAAM;AAAA;AAEb,eAAO;AAAA,IACX;AACA,UAAM,QAAQ;AAEd,aAASC,OAAM,KAAK;AAClB,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC9B,eAAO,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;AAClC,aAAO;AAAA,IACT;AACA,UAAM,QAAQA;AAEd,UAAM,SAAS,SAAS,OAAO,KAAK,KAAK;AACvC,UAAI,QAAQ;AACV,eAAOA,OAAM,GAAG;AAAA;AAEhB,eAAO;AAAA,IACX;AAAA;AAAA;;;ACzDA,IAAAC,kBAAA;AAAA,gDAAAC,UAAA;AAAA;AAEA,QAAI,QAAQA;AACZ,QAAI,KAAK;AACT,QAAI,YAAY;AAChB,QAAI,WAAW;AAEf,UAAM,SAAS;AACf,UAAM,UAAU,SAAS;AACzB,UAAM,QAAQ,SAAS;AACvB,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,SAAS;AAGxB,aAAS,OAAO,KAAK,GAAG,MAAM;AAC5B,UAAI,MAAM,IAAI,MAAM,KAAK,IAAI,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC;AACvD,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AAClC,YAAI,CAAC,IAAI;AAAA,MACX;AAEA,UAAI,KAAK,KAAM,IAAI;AACnB,UAAI,IAAI,IAAI,MAAM;AAElB,WAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,YAAI;AACJ,YAAIC,OAAM,EAAE,MAAM,KAAK,CAAC;AACxB,YAAI,EAAE,MAAM,GAAG;AACb,cAAIA,QAAO,MAAM,KAAK;AACpB,iBAAK,MAAM,KAAKA;AAAA;AAEhB,gBAAIA;AACN,YAAE,MAAM,CAAC;AAAA,QACX,OAAO;AACL,cAAI;AAAA,QACN;AAEA,YAAI,CAAC,IAAI;AACT,UAAE,OAAO,CAAC;AAAA,MACZ;AAEA,aAAO;AAAA,IACT;AACA,UAAM,SAAS;AAGf,aAAS,OAAO,IAAI,IAAI;AACtB,UAAI,MAAM;AAAA,QACR,CAAC;AAAA,QACD,CAAC;AAAA,MACH;AAEA,WAAK,GAAG,MAAM;AACd,WAAK,GAAG,MAAM;AACd,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI;AACJ,aAAO,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,IAAI,GAAG;AAE3C,YAAI,MAAO,GAAG,MAAM,CAAC,IAAI,KAAM;AAC/B,YAAI,MAAO,GAAG,MAAM,CAAC,IAAI,KAAM;AAC/B,YAAI,QAAQ;AACV,gBAAM;AACR,YAAI,QAAQ;AACV,gBAAM;AACR,YAAI;AACJ,aAAK,MAAM,OAAO,GAAG;AACnB,eAAK;AAAA,QACP,OAAO;AACL,eAAM,GAAG,MAAM,CAAC,IAAI,KAAM;AAC1B,eAAK,OAAO,KAAK,OAAO,MAAM,QAAQ;AACpC,iBAAK,CAAC;AAAA;AAEN,iBAAK;AAAA,QACT;AACA,YAAI,CAAC,EAAE,KAAK,EAAE;AAEd,YAAI;AACJ,aAAK,MAAM,OAAO,GAAG;AACnB,eAAK;AAAA,QACP,OAAO;AACL,eAAM,GAAG,MAAM,CAAC,IAAI,KAAM;AAC1B,eAAK,OAAO,KAAK,OAAO,MAAM,QAAQ;AACpC,iBAAK,CAAC;AAAA;AAEN,iBAAK;AAAA,QACT;AACA,YAAI,CAAC,EAAE,KAAK,EAAE;AAGd,YAAI,IAAI,OAAO,KAAK;AAClB,eAAK,IAAI;AACX,YAAI,IAAI,OAAO,KAAK;AAClB,eAAK,IAAI;AACX,WAAG,OAAO,CAAC;AACX,WAAG,OAAO,CAAC;AAAA,MACb;AAEA,aAAO;AAAA,IACT;AACA,UAAM,SAAS;AAEf,aAAS,eAAe,KAAK,MAAM,UAAU;AAC3C,UAAI,MAAM,MAAM;AAChB,UAAI,UAAU,IAAI,IAAI,SAASC,kBAAiB;AAC9C,eAAO,KAAK,GAAG,MAAM,SAAY,KAAK,GAAG,IACvC,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI;AAAA,MAClC;AAAA,IACF;AACA,UAAM,iBAAiB;AAEvB,aAAS,WAAW,OAAO;AACzB,aAAO,OAAO,UAAU,WAAW,MAAM,QAAQ,OAAO,KAAK,IAC3D;AAAA,IACJ;AACA,UAAM,aAAa;AAEnB,aAAS,UAAU,OAAO;AACxB,aAAO,IAAI,GAAG,OAAO,OAAO,IAAI;AAAA,IAClC;AACA,UAAM,YAAY;AAAA;AAAA;;;ACxHlB;AAAA,kCAAAC,UAAAC,SAAA;AAAA,QAAI;AAEJ,IAAAA,QAAO,UAAU,SAAS,KAAK,KAAK;AAClC,UAAI,CAAC;AACH,YAAI,IAAI,KAAK,IAAI;AAEnB,aAAO,EAAE,SAAS,GAAG;AAAA,IACvB;AAEA,aAAS,KAAK,MAAM;AAClB,WAAK,OAAO;AAAA,IACd;AACA,IAAAA,QAAO,QAAQ,OAAO;AAEtB,SAAK,UAAU,WAAW,SAAS,SAAS,KAAK;AAC/C,aAAO,KAAK,MAAM,GAAG;AAAA,IACvB;AAGA,SAAK,UAAU,QAAQ,SAAS,MAAM,GAAG;AACvC,UAAI,KAAK,KAAK;AACZ,eAAO,KAAK,KAAK,SAAS,CAAC;AAE7B,UAAI,MAAM,IAAI,WAAW,CAAC;AAC1B,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC9B,YAAI,CAAC,IAAI,KAAK,KAAK,QAAQ;AAC7B,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,KAAK,UAAU,KAAK,OAAO,iBAAiB;AAE9C,aAAK,UAAU,QAAQ,SAAS,MAAM,GAAG;AACvC,cAAI,MAAM,IAAI,WAAW,CAAC;AAC1B,eAAK,OAAO,gBAAgB,GAAG;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF,WAAW,KAAK,YAAY,KAAK,SAAS,iBAAiB;AAEzD,aAAK,UAAU,QAAQ,SAAS,MAAM,GAAG;AACvC,cAAI,MAAM,IAAI,WAAW,CAAC;AAC1B,eAAK,SAAS,gBAAgB,GAAG;AACjC,iBAAO;AAAA,QACT;AAAA,MAGF,WAAW,OAAO,WAAW,UAAU;AAErC,aAAK,UAAU,QAAQ,WAAW;AAChC,gBAAM,IAAI,MAAM,qBAAqB;AAAA,QACvC;AAAA,MACF;AAAA,IACF,OAAO;AAEL,UAAI;AACE,QAAAC,UAAS,UAAQ,QAAQ;AAC7B,YAAI,OAAOA,QAAO,gBAAgB;AAChC,gBAAM,IAAI,MAAM,eAAe;AAEjC,aAAK,UAAU,QAAQ,SAAS,MAAM,GAAG;AACvC,iBAAOA,QAAO,YAAY,CAAC;AAAA,QAC7B;AAAA,MACF,SAAS,GAAG;AAAA,MACZ;AAAA,IACF;AATQ,QAAAA;AAAA;AAAA;;;ACvDR,IAAAC,gBAAA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,KAAK;AACT,QAAI,QAAQ;AACZ,QAAI,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AACnB,QAAI,SAAS,MAAM;AAEnB,aAAS,UAAU,MAAM,MAAM;AAC7B,WAAK,OAAO;AACZ,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE;AAG1B,WAAK,MAAM,KAAK,QAAQ,GAAG,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AAG3D,WAAK,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG;AACpC,WAAK,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG;AACnC,WAAK,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG;AAGnC,WAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,EAAE;AACpC,WAAK,IAAI,KAAK,KAAK,KAAK,cAAc,KAAK,GAAG,KAAK,IAAI;AAGvD,WAAK,UAAU,IAAI,MAAM,CAAC;AAC1B,WAAK,UAAU,IAAI,MAAM,CAAC;AAC1B,WAAK,UAAU,IAAI,MAAM,CAAC;AAC1B,WAAK,UAAU,IAAI,MAAM,CAAC;AAE1B,WAAK,aAAa,KAAK,IAAI,KAAK,EAAE,UAAU,IAAI;AAGhD,UAAI,cAAc,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC;AAC7C,UAAI,CAAC,eAAe,YAAY,KAAK,GAAG,IAAI,GAAG;AAC7C,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,gBAAgB;AACrB,aAAK,OAAO,KAAK,EAAE,MAAM,KAAK,GAAG;AAAA,MACnC;AAAA,IACF;AACA,IAAAA,QAAO,UAAU;AAEjB,cAAU,UAAU,QAAQ,SAAS,QAAQ;AAC3C,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AAEA,cAAU,UAAU,WAAW,SAAS,WAAW;AACjD,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AAEA,cAAU,UAAU,eAAe,SAAS,aAAa,GAAG,GAAG;AAC7D,aAAO,EAAE,WAAW;AACpB,UAAI,UAAU,EAAE,YAAY;AAE5B,UAAI,MAAM,OAAO,GAAG,GAAG,KAAK,UAAU;AACtC,UAAI,KAAK,KAAM,QAAQ,OAAO,MAAO,QAAQ,OAAO,MAAM,IAAI,IAAI;AAClE,WAAK;AAGL,UAAI,OAAO,CAAC;AACZ,UAAI;AACJ,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,QAAQ,MAAM;AAC7C,eAAO;AACP,iBAAS,IAAI,IAAI,QAAQ,OAAO,GAAG,KAAK,GAAG;AACzC,kBAAQ,QAAQ,KAAK,IAAI,CAAC;AAC5B,aAAK,KAAK,IAAI;AAAA,MAChB;AAEA,UAAI,IAAI,KAAK,OAAO,MAAM,MAAM,IAAI;AACpC,UAAI,IAAI,KAAK,OAAO,MAAM,MAAM,IAAI;AACpC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAChC,iBAAO,KAAK,CAAC;AACb,cAAI,SAAS;AACX,gBAAI,EAAE,SAAS,QAAQ,OAAO,CAAC,CAAC;AAAA,mBACzB,SAAS,CAAC;AACjB,gBAAI,EAAE,SAAS,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,QAC1C;AACA,YAAI,EAAE,IAAI,CAAC;AAAA,MACb;AACA,aAAO,EAAE,IAAI;AAAA,IACf;AAEA,cAAU,UAAU,WAAW,SAAS,SAAS,GAAG,GAAG;AACrD,UAAI,IAAI;AAGR,UAAI,YAAY,EAAE,cAAc,CAAC;AACjC,UAAI,UAAU;AACd,UAAI,MAAM,UAAU;AAGpB,UAAI,MAAM,OAAO,GAAG,GAAG,KAAK,UAAU;AAGtC,UAAI,MAAM,KAAK,OAAO,MAAM,MAAM,IAAI;AACtC,eAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AAExC,iBAAS,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG;AACtC;AACF,YAAI,KAAK;AACP;AACF,cAAM,IAAI,KAAK,CAAC;AAEhB,YAAI,IAAI;AACN;AACF,YAAI,IAAI,IAAI,CAAC;AACb,eAAO,MAAM,CAAC;AACd,YAAI,EAAE,SAAS,UAAU;AAEvB,cAAI,IAAI;AACN,kBAAM,IAAI,SAAS,IAAK,IAAI,KAAM,CAAC,CAAC;AAAA;AAEpC,kBAAM,IAAI,SAAS,IAAK,CAAC,IAAI,KAAM,CAAC,EAAE,IAAI,CAAC;AAAA,QAC/C,OAAO;AAEL,cAAI,IAAI;AACN,kBAAM,IAAI,IAAI,IAAK,IAAI,KAAM,CAAC,CAAC;AAAA;AAE/B,kBAAM,IAAI,IAAI,IAAK,CAAC,IAAI,KAAM,CAAC,EAAE,IAAI,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,aAAO,EAAE,SAAS,WAAW,IAAI,IAAI,IAAI;AAAA,IAC3C;AAEA,cAAU,UAAU,cAAc,SAAS,YAAY,MACrD,QACA,QACA,KACA,gBAAgB;AAChB,UAAI,WAAW,KAAK;AACpB,UAAI,MAAM,KAAK;AACf,UAAI,MAAM,KAAK;AAGf,UAAI,MAAM;AACV,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,YAAI,OAAO,CAAC;AACZ,YAAI,YAAY,EAAE,cAAc,IAAI;AACpC,iBAAS,CAAC,IAAI,UAAU;AACxB,YAAI,CAAC,IAAI,UAAU;AAAA,MACrB;AAGA,WAAK,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG;AAChC,YAAI,IAAI,IAAI;AACZ,YAAI,IAAI;AACR,YAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,GAAG;AAC1C,cAAI,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,UAAU;AACvD,cAAI,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,UAAU;AACvD,gBAAM,KAAK,IAAI,IAAI,CAAC,EAAE,QAAQ,GAAG;AACjC,gBAAM,KAAK,IAAI,IAAI,CAAC,EAAE,QAAQ,GAAG;AACjC;AAAA,QACF;AAEA,YAAI,OAAO;AAAA,UACT,OAAO,CAAC;AAAA;AAAA,UACR;AAAA;AAAA,UACA;AAAA;AAAA,UACA,OAAO,CAAC;AAAA;AAAA,QACV;AAGA,YAAI,OAAO,CAAC,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG;AACtC,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC;AACjC,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,QACpD,WAAW,OAAO,CAAC,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,GAAG;AACtD,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,CAAC;AAC5C,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,QACzC,OAAO;AACL,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,CAAC;AAC5C,eAAK,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,OAAO,CAAC,EAAE,IAAI,CAAC;AAAA,QACpD;AAEA,YAAI,QAAQ;AAAA,UACV;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,UACA;AAAA;AAAA,QACF;AAEA,YAAI,MAAM,OAAO,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACrC,cAAM,KAAK,IAAI,IAAI,CAAC,EAAE,QAAQ,GAAG;AACjC,YAAI,CAAC,IAAI,IAAI,MAAM,GAAG;AACtB,YAAI,CAAC,IAAI,IAAI,MAAM,GAAG;AACtB,aAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,cAAI,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI;AACrB,cAAI,KAAK,IAAI,CAAC,EAAE,CAAC,IAAI;AAErB,cAAI,CAAC,EAAE,CAAC,IAAI,OAAO,KAAK,KAAK,KAAK,KAAK,EAAE;AACzC,cAAI,CAAC,EAAE,CAAC,IAAI;AACZ,cAAI,CAAC,IAAI;AAAA,QACX;AAAA,MACF;AAEA,UAAI,MAAM,KAAK,OAAO,MAAM,MAAM,IAAI;AACtC,UAAI,MAAM,KAAK;AACf,WAAK,IAAI,KAAK,KAAK,GAAG,KAAK;AACzB,YAAI,IAAI;AAER,eAAO,KAAK,GAAG;AACb,cAAI,OAAO;AACX,eAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,gBAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI;AACrB,gBAAI,IAAI,CAAC,MAAM;AACb,qBAAO;AAAA,UACX;AACA,cAAI,CAAC;AACH;AACF;AACA;AAAA,QACF;AACA,YAAI,KAAK;AACP;AACF,cAAM,IAAI,KAAK,CAAC;AAChB,YAAI,IAAI;AACN;AAEF,aAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,cAAI,IAAI,IAAI,CAAC;AACb;AACA,cAAI,MAAM;AACR;AAAA,mBACO,IAAI;AACX,gBAAI,IAAI,CAAC,EAAG,IAAI,KAAM,CAAC;AAAA,mBAChB,IAAI;AACX,gBAAI,IAAI,CAAC,EAAG,CAAC,IAAI,KAAM,CAAC,EAAE,IAAI;AAEhC,cAAI,EAAE,SAAS;AACb,kBAAM,IAAI,SAAS,CAAC;AAAA;AAEpB,kBAAM,IAAI,IAAI,CAAC;AAAA,QACnB;AAAA,MACF;AAEA,WAAK,IAAI,GAAG,IAAI,KAAK;AACnB,YAAI,CAAC,IAAI;AAEX,UAAI;AACF,eAAO;AAAA;AAEP,eAAO,IAAI,IAAI;AAAA,IACnB;AAEA,aAAS,UAAU,OAAO,MAAM;AAC9B,WAAK,QAAQ;AACb,WAAK,OAAO;AACZ,WAAK,cAAc;AAAA,IACrB;AACA,cAAU,YAAY;AAEtB,cAAU,UAAU,KAAK,SAAS,KAAc;AAC9C,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AAEA,cAAU,UAAU,WAAW,SAAS,WAAW;AACjD,aAAO,KAAK,MAAM,SAAS,IAAI;AAAA,IACjC;AAEA,cAAU,UAAU,cAAc,SAAS,YAAY,OAAO,KAAK;AACjE,cAAQ,MAAM,QAAQ,OAAO,GAAG;AAEhC,UAAI,MAAM,KAAK,EAAE,WAAW;AAG5B,WAAK,MAAM,CAAC,MAAM,KAAQ,MAAM,CAAC,MAAM,KAAQ,MAAM,CAAC,MAAM,MACxD,MAAM,SAAS,MAAM,IAAI,KAAK;AAChC,YAAI,MAAM,CAAC,MAAM;AACf,iBAAO,MAAM,MAAM,SAAS,CAAC,IAAI,MAAM,CAAC;AAAA,iBACjC,MAAM,CAAC,MAAM;AACpB,iBAAO,MAAM,MAAM,SAAS,CAAC,IAAI,MAAM,CAAC;AAE1C,YAAI,MAAO,KAAK;AAAA,UAAM,MAAM,MAAM,GAAG,IAAI,GAAG;AAAA,UAC1C,MAAM,MAAM,IAAI,KAAK,IAAI,IAAI,GAAG;AAAA,QAAC;AAEnC,eAAO;AAAA,MACT,YAAY,MAAM,CAAC,MAAM,KAAQ,MAAM,CAAC,MAAM,MAClC,MAAM,SAAS,MAAM,KAAK;AACpC,eAAO,KAAK,WAAW,MAAM,MAAM,GAAG,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAI;AAAA,MACnE;AACA,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACxC;AAEA,cAAU,UAAU,mBAAmB,SAAS,iBAAiB,KAAK;AACpE,aAAO,KAAK,OAAO,KAAK,IAAI;AAAA,IAC9B;AAEA,cAAU,UAAU,UAAU,SAAS,QAAQ,SAAS;AACtD,UAAI,MAAM,KAAK,MAAM,EAAE,WAAW;AAClC,UAAI,IAAI,KAAK,KAAK,EAAE,QAAQ,MAAM,GAAG;AAErC,UAAI;AACF,eAAO,CAAE,KAAK,KAAK,EAAE,OAAO,IAAI,IAAO,CAAK,EAAE,OAAO,CAAC;AAExD,aAAO,CAAE,CAAK,EAAE,OAAO,GAAG,KAAK,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC;AAAA,IAC1D;AAEA,cAAU,UAAU,SAAS,SAAS,OAAO,KAAK,SAAS;AACzD,aAAO,MAAM,OAAO,KAAK,QAAQ,OAAO,GAAG,GAAG;AAAA,IAChD;AAEA,cAAU,UAAU,aAAa,SAAS,WAAW,OAAO;AAC1D,UAAI,KAAK;AACP,eAAO;AAET,UAAI,cAAc;AAAA,QAChB,SAAS;AAAA,QACT,KAAK;AAAA,QACL,MAAM;AAAA,MACR;AACA,kBAAY,MAAM,KAAK,cAAc,CAAC;AACtC,kBAAY,UAAU,KAAK,YAAY,GAAG,KAAK;AAC/C,kBAAY,OAAO,KAAK,SAAS;AACjC,WAAK,cAAc;AAEnB,aAAO;AAAA,IACT;AAEA,cAAU,UAAU,cAAc,SAAS,YAAY,GAAG;AACxD,UAAI,CAAC,KAAK;AACR,eAAO;AAET,UAAI,UAAU,KAAK,YAAY;AAC/B,UAAI,CAAC;AACH,eAAO;AAET,aAAO,QAAQ,OAAO,UAAU,KAAK,MAAM,EAAE,UAAU,IAAI,KAAK,QAAQ,IAAI;AAAA,IAC9E;AAEA,cAAU,UAAU,cAAc,SAAS,YAAY,MAAM,OAAO;AAClE,UAAI,KAAK,eAAe,KAAK,YAAY;AACvC,eAAO,KAAK,YAAY;AAE1B,UAAI,UAAU,CAAE,IAAK;AACrB,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK,MAAM;AACpC,iBAAS,IAAI,GAAG,IAAI,MAAM;AACxB,gBAAM,IAAI,IAAI;AAChB,gBAAQ,KAAK,GAAG;AAAA,MAClB;AACA,aAAO;AAAA,QACL;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,cAAU,UAAU,gBAAgB,SAAS,cAAc,KAAK;AAC9D,UAAI,KAAK,eAAe,KAAK,YAAY;AACvC,eAAO,KAAK,YAAY;AAE1B,UAAI,MAAM,CAAE,IAAK;AACjB,UAAI,OAAO,KAAK,OAAO;AACvB,UAAI,MAAM,QAAQ,IAAI,OAAO,KAAK,IAAI;AACtC,eAAS,IAAI,GAAG,IAAI,KAAK;AACvB,YAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG;AAC7B,aAAO;AAAA,QACL;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,cAAU,UAAU,WAAW,SAAS,WAAW;AACjD,aAAO;AAAA,IACT;AAEA,cAAU,UAAU,OAAO,SAAS,KAAK,GAAG;AAC1C,UAAI,IAAI;AACR,eAAS,IAAI,GAAG,IAAI,GAAG;AACrB,YAAI,EAAE,IAAI;AACZ,aAAO;AAAA,IACT;AAAA;AAAA;;;AC5XA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,KAAK;AACT,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,QAAI,SAAS,MAAM;AAEnB,aAAS,WAAW,MAAM;AACxB,WAAK,KAAK,MAAM,SAAS,IAAI;AAE7B,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,OAAO,KAAK,IAAI,QAAQ;AAE7B,WAAK,QAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM;AAC1C,WAAK,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM;AAGxD,WAAK,OAAO,KAAK,iBAAiB,IAAI;AACtC,WAAK,cAAc,IAAI,MAAM,CAAC;AAC9B,WAAK,cAAc,IAAI,MAAM,CAAC;AAAA,IAChC;AACA,aAAS,YAAY,IAAI;AACzB,IAAAA,QAAO,UAAU;AAEjB,eAAW,UAAU,mBAAmB,SAAS,iBAAiB,MAAM;AAEtE,UAAI,CAAC,KAAK,SAAS,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,KAAK,CAAC,MAAM;AAC1D;AAGF,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,MAAM;AACb,eAAO,IAAI,GAAG,KAAK,MAAM,EAAE,EAAE,MAAM,KAAK,GAAG;AAAA,MAC7C,OAAO;AACL,YAAI,QAAQ,KAAK,cAAc,KAAK,CAAC;AAErC,eAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;AACtD,eAAO,KAAK,MAAM,KAAK,GAAG;AAAA,MAC5B;AACA,UAAI,KAAK,QAAQ;AACf,iBAAS,IAAI,GAAG,KAAK,QAAQ,EAAE;AAAA,MACjC,OAAO;AAEL,YAAI,UAAU,KAAK,cAAc,KAAK,CAAC;AACvC,YAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,GAAG;AAC7D,mBAAS,QAAQ,CAAC;AAAA,QACpB,OAAO;AACL,mBAAS,QAAQ,CAAC;AAClB,iBAAO,KAAK,EAAE,IAAI,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC;AAAA,QAC9D;AAAA,MACF;AAGA,UAAI;AACJ,UAAI,KAAK,OAAO;AACd,gBAAQ,KAAK,MAAM,IAAI,SAAS,KAAK;AACnC,iBAAO;AAAA,YACL,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAAA,YACnB,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;AAAA,UACrB;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ,KAAK,cAAc,MAAM;AAAA,MACnC;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,eAAW,UAAU,gBAAgB,SAAS,cAAc,KAAK;AAI/D,UAAI,MAAM,QAAQ,KAAK,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG;AACjD,UAAI,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,QAAQ;AACxC,UAAI,QAAQ,KAAK,OAAO;AAExB,UAAI,IAAI,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI;AAE3D,UAAI,KAAK,MAAM,OAAO,CAAC,EAAE,QAAQ;AACjC,UAAI,KAAK,MAAM,OAAO,CAAC,EAAE,QAAQ;AACjC,aAAO,CAAE,IAAI,EAAG;AAAA,IAClB;AAEA,eAAW,UAAU,gBAAgB,SAAS,cAAc,QAAQ;AAElE,UAAI,WAAW,KAAK,EAAE,MAAM,KAAK,MAAM,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;AAI9D,UAAI,IAAI;AACR,UAAI,IAAI,KAAK,EAAE,MAAM;AACrB,UAAI,KAAK,IAAI,GAAG,CAAC;AACjB,UAAI,KAAK,IAAI,GAAG,CAAC;AACjB,UAAI,KAAK,IAAI,GAAG,CAAC;AACjB,UAAI,KAAK,IAAI,GAAG,CAAC;AAGjB,UAAI;AACJ,UAAI;AAEJ,UAAI;AACJ,UAAI;AAEJ,UAAI;AACJ,UAAI;AAEJ,UAAI;AACJ,UAAI,IAAI;AACR,UAAI;AACJ,UAAI;AACJ,aAAO,EAAE,KAAK,CAAC,MAAM,GAAG;AACtB,YAAI,IAAI,EAAE,IAAI,CAAC;AACf,YAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClB,YAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;AACpB,YAAI,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;AAExB,YAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,IAAI,GAAG;AAC9B,eAAK,MAAM,IAAI;AACf,eAAK;AACL,eAAK,EAAE,IAAI;AACX,eAAK;AAAA,QACP,WAAW,MAAM,EAAE,MAAM,GAAG;AAC1B;AAAA,QACF;AACA,gBAAQ;AAER,YAAI;AACJ,YAAI;AACJ,aAAK;AACL,aAAK;AACL,aAAK;AACL,aAAK;AAAA,MACP;AACA,WAAK,EAAE,IAAI;AACX,WAAK;AAEL,UAAI,OAAO,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AAChC,UAAI,OAAO,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AAChC,UAAI,KAAK,IAAI,IAAI,KAAK,GAAG;AACvB,aAAK;AACL,aAAK;AAAA,MACP;AAGA,UAAI,GAAG,UAAU;AACf,aAAK,GAAG,IAAI;AACZ,aAAK,GAAG,IAAI;AAAA,MACd;AACA,UAAI,GAAG,UAAU;AACf,aAAK,GAAG,IAAI;AACZ,aAAK,GAAG,IAAI;AAAA,MACd;AAEA,aAAO;AAAA,QACL,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,QACf,EAAE,GAAG,IAAI,GAAG,GAAG;AAAA,MACjB;AAAA,IACF;AAEA,eAAW,UAAU,aAAa,SAAS,WAAW,GAAG;AACvD,UAAI,QAAQ,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM,CAAC;AAChB,UAAI,KAAK,MAAM,CAAC;AAEhB,UAAI,KAAK,GAAG,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC;AACpC,UAAI,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC;AAE1C,UAAI,KAAK,GAAG,IAAI,GAAG,CAAC;AACpB,UAAI,KAAK,GAAG,IAAI,GAAG,CAAC;AACpB,UAAI,KAAK,GAAG,IAAI,GAAG,CAAC;AACpB,UAAI,KAAK,GAAG,IAAI,GAAG,CAAC;AAGpB,UAAI,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE;AACzB,UAAI,KAAK,GAAG,IAAI,EAAE,EAAE,IAAI;AACxB,aAAO,EAAE,IAAQ,GAAO;AAAA,IAC1B;AAEA,eAAW,UAAU,aAAa,SAAS,WAAW,GAAG,KAAK;AAC5D,UAAI,IAAI,GAAG,GAAG,EAAE;AAChB,UAAI,CAAC,EAAE;AACL,YAAI,EAAE,MAAM,KAAK,GAAG;AAEtB,UAAI,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC;AACtE,UAAI,IAAI,GAAG,QAAQ;AACnB,UAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,KAAK,IAAI,MAAM;AAC3C,cAAM,IAAI,MAAM,eAAe;AAIjC,UAAI,QAAQ,EAAE,QAAQ,EAAE,MAAM;AAC9B,UAAI,OAAO,CAAC,SAAS,CAAC,OAAO;AAC3B,YAAI,EAAE,OAAO;AAEf,aAAO,KAAK,MAAM,GAAG,CAAC;AAAA,IACxB;AAEA,eAAW,UAAU,WAAW,SAAS,SAAS,OAAO;AACvD,UAAI,MAAM;AACR,eAAO;AAET,UAAI,IAAI,MAAM;AACd,UAAI,IAAI,MAAM;AAEd,UAAI,KAAK,KAAK,EAAE,OAAO,CAAC;AACxB,UAAI,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,CAAC;AACzD,aAAO,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,KAAK,CAAC,MAAM;AAAA,IAC7C;AAEA,eAAW,UAAU,kBACjB,SAAS,gBAAgB,QAAQ,QAAQ,gBAAgB;AACvD,UAAI,UAAU,KAAK;AACnB,UAAI,UAAU,KAAK;AACnB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAIC,SAAQ,KAAK,WAAW,OAAO,CAAC,CAAC;AACrC,YAAI,IAAI,OAAO,CAAC;AAChB,YAAI,OAAO,EAAE,SAAS;AAEtB,YAAIA,OAAM,GAAG,UAAU;AACrB,UAAAA,OAAM,GAAG,KAAK;AACd,cAAI,EAAE,IAAI,IAAI;AAAA,QAChB;AACA,YAAIA,OAAM,GAAG,UAAU;AACrB,UAAAA,OAAM,GAAG,KAAK;AACd,iBAAO,KAAK,IAAI,IAAI;AAAA,QACtB;AAEA,gBAAQ,IAAI,CAAC,IAAI;AACjB,gBAAQ,IAAI,IAAI,CAAC,IAAI;AACrB,gBAAQ,IAAI,CAAC,IAAIA,OAAM;AACvB,gBAAQ,IAAI,IAAI,CAAC,IAAIA,OAAM;AAAA,MAC7B;AACA,UAAI,MAAM,KAAK,YAAY,GAAG,SAAS,SAAS,IAAI,GAAG,cAAc;AAGrE,eAAS,IAAI,GAAG,IAAI,IAAI,GAAG,KAAK;AAC9B,gBAAQ,CAAC,IAAI;AACb,gBAAQ,CAAC,IAAI;AAAA,MACf;AACA,aAAO;AAAA,IACT;AAEJ,aAAS,MAAM,OAAO,GAAG,GAAG,OAAO;AACjC,WAAK,UAAU,KAAK,MAAM,OAAO,QAAQ;AACzC,UAAI,MAAM,QAAQ,MAAM,MAAM;AAC5B,aAAK,IAAI;AACT,aAAK,IAAI;AACT,aAAK,MAAM;AAAA,MACb,OAAO;AACL,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AAErB,YAAI,OAAO;AACT,eAAK,EAAE,SAAS,KAAK,MAAM,GAAG;AAC9B,eAAK,EAAE,SAAS,KAAK,MAAM,GAAG;AAAA,QAChC;AACA,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,aAAK,MAAM;AAAA,MACb;AAAA,IACF;AACA,aAAS,OAAO,KAAK,SAAS;AAE9B,eAAW,UAAU,QAAQ,SAAS,MAAM,GAAG,GAAG,OAAO;AACvD,aAAO,IAAI,MAAM,MAAM,GAAG,GAAG,KAAK;AAAA,IACpC;AAEA,eAAW,UAAU,gBAAgB,SAAS,cAAc,KAAK,KAAK;AACpE,aAAO,MAAM,SAAS,MAAM,KAAK,GAAG;AAAA,IACtC;AAEA,UAAM,UAAU,WAAW,SAAS,WAAW;AAC7C,UAAI,CAAC,KAAK,MAAM;AACd;AAEF,UAAI,MAAM,KAAK;AACf,UAAI,OAAO,IAAI;AACb,eAAO,IAAI;AAEb,UAAI,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC;AACvE,UAAI,KAAK;AACP,YAAI,QAAQ,KAAK;AACjB,YAAI,UAAU,SAAS,GAAG;AACxB,iBAAO,MAAM,MAAM,EAAE,EAAE,OAAO,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;AAAA,QACrD;AACA,YAAI,OAAO;AACX,aAAK,cAAc;AAAA,UACjB,MAAM;AAAA,UACN,KAAK,IAAI,OAAO;AAAA,YACd,KAAK,IAAI,IAAI;AAAA,YACb,QAAQ,IAAI,IAAI,OAAO,IAAI,OAAO;AAAA,UACpC;AAAA,UACA,SAAS,IAAI,WAAW;AAAA,YACtB,MAAM,IAAI,QAAQ;AAAA,YAClB,QAAQ,IAAI,QAAQ,OAAO,IAAI,OAAO;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,SAAS,SAAS,SAAS;AACzC,UAAI,CAAC,KAAK;AACR,eAAO,CAAE,KAAK,GAAG,KAAK,CAAE;AAE1B,aAAO,CAAE,KAAK,GAAG,KAAK,GAAG,KAAK,eAAe;AAAA,QAC3C,SAAS,KAAK,YAAY,WAAW;AAAA,UACnC,MAAM,KAAK,YAAY,QAAQ;AAAA,UAC/B,QAAQ,KAAK,YAAY,QAAQ,OAAO,MAAM,CAAC;AAAA,QACjD;AAAA,QACA,KAAK,KAAK,YAAY,OAAO;AAAA,UAC3B,KAAK,KAAK,YAAY,IAAI;AAAA,UAC1B,QAAQ,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC;AAAA,QAC7C;AAAA,MACF,CAAE;AAAA,IACJ;AAEA,UAAM,WAAW,SAAS,SAAS,OAAO,KAAK,KAAK;AAClD,UAAI,OAAO,QAAQ;AACjB,cAAM,KAAK,MAAM,GAAG;AACtB,UAAI,MAAM,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;AACzC,UAAI,CAAC,IAAI,CAAC;AACR,eAAO;AAET,eAAS,UAAUC,MAAK;AACtB,eAAO,MAAM,MAAMA,KAAI,CAAC,GAAGA,KAAI,CAAC,GAAG,GAAG;AAAA,MACxC;AAEA,UAAI,MAAM,IAAI,CAAC;AACf,UAAI,cAAc;AAAA,QAChB,MAAM;AAAA,QACN,SAAS,IAAI,WAAW;AAAA,UACtB,MAAM,IAAI,QAAQ;AAAA,UAClB,QAAQ,CAAE,GAAI,EAAE,OAAO,IAAI,QAAQ,OAAO,IAAI,SAAS,CAAC;AAAA,QAC1D;AAAA,QACA,KAAK,IAAI,OAAO;AAAA,UACd,KAAK,IAAI,IAAI;AAAA,UACb,QAAQ,CAAE,GAAI,EAAE,OAAO,IAAI,IAAI,OAAO,IAAI,SAAS,CAAC;AAAA,QACtD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAC3C,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,aAAO,kBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IACpD,SAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IAAI;AAAA,IAClD;AAEA,UAAM,UAAU,aAAa,SAAS,aAAa;AACjD,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAU,MAAM,SAASC,KAAI,GAAG;AAEpC,UAAI,KAAK;AACP,eAAO;AAGT,UAAI,EAAE;AACJ,eAAO;AAGT,UAAI,KAAK,GAAG,CAAC;AACX,eAAO,KAAK,IAAI;AAGlB,UAAI,KAAK,IAAI,EAAE,GAAG,CAAC;AACjB,eAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAGpC,UAAI,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM;AACtB,eAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAEpC,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;AACzB,UAAI,EAAE,KAAK,CAAC,MAAM;AAChB,YAAI,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC;AAC3C,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC/C,UAAI,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,KAAK,CAAC;AACnD,aAAO,KAAK,MAAM,MAAM,IAAI,EAAE;AAAA,IAChC;AAEA,UAAM,UAAU,MAAM,SAAS,MAAM;AACnC,UAAI,KAAK;AACP,eAAO;AAGT,UAAI,MAAM,KAAK,EAAE,OAAO,KAAK,CAAC;AAC9B,UAAI,IAAI,KAAK,CAAC,MAAM;AAClB,eAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAEpC,UAAI,IAAI,KAAK,MAAM;AAEnB,UAAI,KAAK,KAAK,EAAE,OAAO;AACvB,UAAI,QAAQ,IAAI,QAAQ;AACxB,UAAI,IAAI,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK;AAEzD,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;AACjD,UAAI,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,KAAK,CAAC;AACnD,aAAO,KAAK,MAAM,MAAM,IAAI,EAAE;AAAA,IAChC;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO;AACrC,aAAO,KAAK,EAAE,QAAQ;AAAA,IACxB;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO;AACrC,aAAO,KAAK,EAAE,QAAQ;AAAA,IACxB;AAEA,UAAM,UAAU,MAAM,SAAS,IAAI,GAAG;AACpC,UAAI,IAAI,GAAG,GAAG,EAAE;AAChB,UAAI,KAAK,WAAW;AAClB,eAAO;AAAA,eACA,KAAK,YAAY,CAAC;AACzB,eAAO,KAAK,MAAM,aAAa,MAAM,CAAC;AAAA,eAC/B,KAAK,MAAM;AAClB,eAAO,KAAK,MAAM,gBAAgB,CAAE,IAAK,GAAG,CAAE,CAAE,CAAC;AAAA;AAEjD,eAAO,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,IACtC;AAEA,UAAM,UAAU,SAAS,SAAS,OAAO,IAAI,IAAI,IAAI;AACnD,UAAI,SAAS,CAAE,MAAM,EAAG;AACxB,UAAI,SAAS,CAAE,IAAI,EAAG;AACtB,UAAI,KAAK,MAAM;AACb,eAAO,KAAK,MAAM,gBAAgB,QAAQ,MAAM;AAAA;AAEhD,eAAO,KAAK,MAAM,YAAY,GAAG,QAAQ,QAAQ,CAAC;AAAA,IACtD;AAEA,UAAM,UAAU,UAAU,SAAS,QAAQ,IAAI,IAAI,IAAI;AACrD,UAAI,SAAS,CAAE,MAAM,EAAG;AACxB,UAAI,SAAS,CAAE,IAAI,EAAG;AACtB,UAAI,KAAK,MAAM;AACb,eAAO,KAAK,MAAM,gBAAgB,QAAQ,QAAQ,IAAI;AAAA;AAEtD,eAAO,KAAK,MAAM,YAAY,GAAG,QAAQ,QAAQ,GAAG,IAAI;AAAA,IAC5D;AAEA,UAAM,UAAU,KAAK,SAAS,GAAG,GAAG;AAClC,aAAO,SAAS,KACT,KAAK,QAAQ,EAAE,QACV,KAAK,OAAO,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,EAAE,IAAI,EAAE,CAAC,MAAM;AAAA,IACvE;AAEA,UAAM,UAAU,MAAM,SAAS,IAAI,aAAa;AAC9C,UAAI,KAAK;AACP,eAAO;AAET,UAAI,MAAM,KAAK,MAAM,MAAM,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC;AAClD,UAAI,eAAe,KAAK,aAAa;AACnC,YAAI,MAAM,KAAK;AACf,YAAI,SAAS,SAAS,GAAG;AACvB,iBAAO,EAAE,IAAI;AAAA,QACf;AACA,YAAI,cAAc;AAAA,UAChB,KAAK,IAAI,OAAO;AAAA,YACd,KAAK,IAAI,IAAI;AAAA,YACb,QAAQ,IAAI,IAAI,OAAO,IAAI,MAAM;AAAA,UACnC;AAAA,UACA,SAAS,IAAI,WAAW;AAAA,YACtB,MAAM,IAAI,QAAQ;AAAA,YAClB,QAAQ,IAAI,QAAQ,OAAO,IAAI,MAAM;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,MAAM,SAAS,MAAM;AACnC,UAAI,KAAK;AACP,eAAO,KAAK,MAAM,OAAO,MAAM,MAAM,IAAI;AAE3C,UAAI,MAAM,KAAK,MAAM,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,MAAM,GAAG;AAC1D,aAAO;AAAA,IACT;AAEA,aAAS,OAAO,OAAO,GAAG,GAAG,GAAG;AAC9B,WAAK,UAAU,KAAK,MAAM,OAAO,UAAU;AAC3C,UAAI,MAAM,QAAQ,MAAM,QAAQ,MAAM,MAAM;AAC1C,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,IAAI,GAAG,CAAC;AAAA,MACnB,OAAO;AACL,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AAAA,MACvB;AACA,UAAI,CAAC,KAAK,EAAE;AACV,aAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,UAAI,CAAC,KAAK,EAAE;AACV,aAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,UAAI,CAAC,KAAK,EAAE;AACV,aAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AAEtC,WAAK,OAAO,KAAK,MAAM,KAAK,MAAM;AAAA,IACpC;AACA,aAAS,QAAQ,KAAK,SAAS;AAE/B,eAAW,UAAU,SAAS,SAAS,OAAO,GAAG,GAAG,GAAG;AACrD,aAAO,IAAI,OAAO,MAAM,GAAG,GAAG,CAAC;AAAA,IACjC;AAEA,WAAO,UAAU,MAAM,SAAS,MAAM;AACpC,UAAI,KAAK,WAAW;AAClB,eAAO,KAAK,MAAM,MAAM,MAAM,IAAI;AAEpC,UAAI,OAAO,KAAK,EAAE,QAAQ;AAC1B,UAAI,QAAQ,KAAK,OAAO;AACxB,UAAI,KAAK,KAAK,EAAE,OAAO,KAAK;AAC5B,UAAI,KAAK,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,IAAI;AAEzC,aAAO,KAAK,MAAM,MAAM,IAAI,EAAE;AAAA,IAChC;AAEA,WAAO,UAAU,MAAM,SAAS,MAAM;AACpC,aAAO,KAAK,MAAM,OAAO,KAAK,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;AAAA,IAC1D;AAEA,WAAO,UAAU,MAAM,SAASA,KAAI,GAAG;AAErC,UAAI,KAAK,WAAW;AAClB,eAAO;AAGT,UAAI,EAAE,WAAW;AACf,eAAO;AAGT,UAAI,MAAM,EAAE,EAAE,OAAO;AACrB,UAAI,KAAK,KAAK,EAAE,OAAO;AACvB,UAAI,KAAK,KAAK,EAAE,OAAO,GAAG;AAC1B,UAAI,KAAK,EAAE,EAAE,OAAO,EAAE;AACtB,UAAI,KAAK,KAAK,EAAE,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AACtC,UAAI,KAAK,EAAE,EAAE,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC;AAErC,UAAI,IAAI,GAAG,OAAO,EAAE;AACpB,UAAI,IAAI,GAAG,OAAO,EAAE;AACpB,UAAI,EAAE,KAAK,CAAC,MAAM,GAAG;AACnB,YAAI,EAAE,KAAK,CAAC,MAAM;AAChB,iBAAO,KAAK,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA;AAEzC,iBAAO,KAAK,IAAI;AAAA,MACpB;AAEA,UAAI,KAAK,EAAE,OAAO;AAClB,UAAI,KAAK,GAAG,OAAO,CAAC;AACpB,UAAI,IAAI,GAAG,OAAO,EAAE;AAEpB,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AACpD,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC;AACtD,UAAI,KAAK,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;AAEpC,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,WAAW,SAAS,SAAS,GAAG;AAE/C,UAAI,KAAK,WAAW;AAClB,eAAO,EAAE,IAAI;AAGf,UAAI,EAAE,WAAW;AACf,eAAO;AAGT,UAAI,KAAK,KAAK,EAAE,OAAO;AACvB,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,EAAE,EAAE,OAAO,EAAE;AACtB,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,KAAK,CAAC;AAErC,UAAI,IAAI,GAAG,OAAO,EAAE;AACpB,UAAI,IAAI,GAAG,OAAO,EAAE;AACpB,UAAI,EAAE,KAAK,CAAC,MAAM,GAAG;AACnB,YAAI,EAAE,KAAK,CAAC,MAAM;AAChB,iBAAO,KAAK,MAAM,OAAO,MAAM,MAAM,IAAI;AAAA;AAEzC,iBAAO,KAAK,IAAI;AAAA,MACpB;AAEA,UAAI,KAAK,EAAE,OAAO;AAClB,UAAI,KAAK,GAAG,OAAO,CAAC;AACpB,UAAI,IAAI,GAAG,OAAO,EAAE;AAEpB,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AACpD,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC;AACtD,UAAI,KAAK,KAAK,EAAE,OAAO,CAAC;AAExB,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,OAAO,SAAS,KAAK,KAAK;AACzC,UAAI,QAAQ;AACV,eAAO;AACT,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,UAAI,CAAC;AACH,eAAO,KAAK,IAAI;AAElB,UAAI;AACJ,UAAI,KAAK,MAAM,SAAS,KAAK,MAAM,QAAQ;AACzC,YAAI,IAAI;AACR,aAAK,IAAI,GAAG,IAAI,KAAK;AACnB,cAAI,EAAE,IAAI;AACZ,eAAO;AAAA,MACT;AAIA,UAAI,IAAI,KAAK,MAAM;AACnB,UAAI,OAAO,KAAK,MAAM;AAEtB,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,KAAK;AACd,UAAI,MAAM,GAAG,OAAO,EAAE,OAAO;AAG7B,UAAI,MAAM,GAAG,OAAO,EAAE;AACtB,WAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACxB,YAAI,MAAM,GAAG,OAAO;AACpB,YAAI,OAAO,IAAI,OAAO;AACtB,YAAI,OAAO,KAAK,OAAO;AACvB,YAAI,IAAI,IAAI,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC;AAE1D,YAAI,KAAK,GAAG,OAAO,IAAI;AACvB,YAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC;AACzC,YAAI,KAAK,GAAG,QAAQ,EAAE;AACtB,YAAI,MAAM,EAAE,OAAO,EAAE;AACrB,cAAM,IAAI,QAAQ,GAAG,EAAE,QAAQ,IAAI;AACnC,YAAI,KAAK,IAAI,OAAO,EAAE;AACtB,YAAI,IAAI,IAAI;AACV,gBAAM,IAAI,OAAO,IAAI;AAEvB,aAAK;AACL,aAAK;AACL,cAAM;AAAA,MACR;AAEA,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,OAAO,IAAI,GAAG,EAAE;AAAA,IACnD;AAEA,WAAO,UAAU,MAAM,SAAS,MAAM;AACpC,UAAI,KAAK,WAAW;AAClB,eAAO;AAET,UAAI,KAAK,MAAM;AACb,eAAO,KAAK,SAAS;AAAA,eACd,KAAK,MAAM;AAClB,eAAO,KAAK,UAAU;AAAA;AAEtB,eAAO,KAAK,KAAK;AAAA,IACrB;AAEA,WAAO,UAAU,WAAW,SAAS,WAAW;AAC9C,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,UAAI,KAAK,MAAM;AAMb,YAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,YAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,YAAI,OAAO,GAAG,OAAO;AAErB,YAAI,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,IAAI;AAC3D,YAAI,EAAE,QAAQ,CAAC;AAEf,YAAI,IAAI,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE;AAEhC,YAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAGvC,YAAI,QAAQ,KAAK,QAAQ,IAAI;AAC7B,gBAAQ,MAAM,QAAQ,KAAK;AAC3B,gBAAQ,MAAM,QAAQ,KAAK;AAG3B,aAAK;AAEL,aAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,KAAK;AAEzC,aAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B,OAAO;AAML,YAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,YAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,YAAI,IAAI,EAAE,OAAO;AAEjB,YAAI,IAAI,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AACtD,YAAI,EAAE,QAAQ,CAAC;AAEf,YAAI,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;AAE7B,YAAI,IAAI,EAAE,OAAO;AAGjB,YAAI,KAAK,EAAE,QAAQ,CAAC;AACpB,aAAK,GAAG,QAAQ,EAAE;AAClB,aAAK,GAAG,QAAQ,EAAE;AAGlB,aAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAE3B,aAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE;AAEvC,aAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AACzB,aAAK,GAAG,QAAQ,EAAE;AAAA,MACpB;AAEA,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,YAAY,SAAS,YAAY;AAChD,UAAI;AACJ,UAAI;AACJ,UAAI;AAEJ,UAAI,KAAK,MAAM;AAMb,YAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,YAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,YAAI,OAAO,GAAG,OAAO;AAErB,YAAI,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,IAAI;AAC3D,YAAI,EAAE,QAAQ,CAAC;AAEf,YAAI,IAAI,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC;AAEtD,YAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAEvC,aAAK;AAEL,YAAI,QAAQ,KAAK,QAAQ,IAAI;AAC7B,gBAAQ,MAAM,QAAQ,KAAK;AAC3B,gBAAQ,MAAM,QAAQ,KAAK;AAC3B,aAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,KAAK;AAEzC,aAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAAA,MAC3B,OAAO;AAKL,YAAI,QAAQ,KAAK,EAAE,OAAO;AAE1B,YAAI,QAAQ,KAAK,EAAE,OAAO;AAE1B,YAAI,OAAO,KAAK,EAAE,OAAO,KAAK;AAE9B,YAAI,QAAQ,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC;AAC5D,gBAAQ,MAAM,OAAO,KAAK,EAAE,QAAQ,KAAK;AAEzC,YAAI,QAAQ,KAAK,QAAQ,IAAI;AAC7B,gBAAQ,MAAM,QAAQ,KAAK;AAC3B,YAAI,QAAQ,MAAM,OAAO,KAAK;AAC9B,aAAK,MAAM,OAAO,EAAE,QAAQ,KAAK;AAEjC,aAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,KAAK,EAAE,QAAQ,KAAK;AAEhE,YAAI,UAAU,MAAM,OAAO;AAC3B,kBAAU,QAAQ,QAAQ,OAAO;AACjC,kBAAU,QAAQ,QAAQ,OAAO;AACjC,kBAAU,QAAQ,QAAQ,OAAO;AACjC,aAAK,MAAM,OAAO,MAAM,QAAQ,EAAE,CAAC,EAAE,QAAQ,OAAO;AAAA,MACtD;AAEA,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,OAAO,SAAS,OAAO;AACtC,UAAI,IAAI,KAAK,MAAM;AAGnB,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,KAAK;AACd,UAAI,MAAM,GAAG,OAAO,EAAE,OAAO;AAE7B,UAAI,MAAM,GAAG,OAAO;AACpB,UAAI,MAAM,GAAG,OAAO;AAEpB,UAAI,IAAI,IAAI,OAAO,GAAG,EAAE,QAAQ,GAAG,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC;AAE1D,UAAI,OAAO,GAAG,OAAO,EAAE;AACvB,aAAO,KAAK,QAAQ,IAAI;AACxB,UAAI,KAAK,KAAK,OAAO,GAAG;AACxB,UAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,EAAE,CAAC;AACzC,UAAI,KAAK,GAAG,QAAQ,EAAE;AAEtB,UAAI,OAAO,IAAI,OAAO;AACtB,aAAO,KAAK,QAAQ,IAAI;AACxB,aAAO,KAAK,QAAQ,IAAI;AACxB,aAAO,KAAK,QAAQ,IAAI;AACxB,UAAI,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,IAAI;AAClC,UAAI,KAAK,GAAG,OAAO,EAAE,EAAE,OAAO,EAAE;AAEhC,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,OAAO,SAAS,OAAO;AACtC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO,KAAK,IAAI,EAAE,IAAI,IAAI;AAM5B,UAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,UAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,UAAI,KAAK,KAAK,EAAE,OAAO;AAEvB,UAAI,OAAO,GAAG,OAAO;AAErB,UAAI,IAAI,GAAG,OAAO,EAAE,EAAE,QAAQ,EAAE;AAEhC,UAAI,KAAK,EAAE,OAAO;AAElB,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,IAAI;AAC3D,UAAI,EAAE,QAAQ,CAAC;AACf,UAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;AACzB,UAAI,EAAE,QAAQ,EAAE;AAEhB,UAAI,KAAK,EAAE,OAAO;AAElB,UAAI,IAAI,KAAK,QAAQ,IAAI;AACzB,UAAI,EAAE,QAAQ,CAAC;AACf,UAAI,EAAE,QAAQ,CAAC;AACf,UAAI,EAAE,QAAQ,CAAC;AAEf,UAAI,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC;AAE/D,UAAI,OAAO,GAAG,OAAO,CAAC;AACtB,aAAO,KAAK,QAAQ,IAAI;AACxB,aAAO,KAAK,QAAQ,IAAI;AACxB,UAAI,KAAK,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,IAAI;AACvC,WAAK,GAAG,QAAQ,EAAE;AAClB,WAAK,GAAG,QAAQ,EAAE;AAElB,UAAI,KAAK,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AACnE,WAAK,GAAG,QAAQ,EAAE;AAClB,WAAK,GAAG,QAAQ,EAAE;AAClB,WAAK,GAAG,QAAQ,EAAE;AAElB,UAAI,KAAK,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE;AAEzD,aAAO,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAAA,IACrC;AAEA,WAAO,UAAU,MAAM,SAAS,IAAI,GAAG,OAAO;AAC5C,UAAI,IAAI,GAAG,GAAG,KAAK;AAEnB,aAAO,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,IACpC;AAEA,WAAO,UAAU,KAAK,SAAS,GAAG,GAAG;AACnC,UAAI,EAAE,SAAS;AACb,eAAO,KAAK,GAAG,EAAE,IAAI,CAAC;AAExB,UAAI,SAAS;AACX,eAAO;AAGT,UAAI,KAAK,KAAK,EAAE,OAAO;AACvB,UAAI,MAAM,EAAE,EAAE,OAAO;AACrB,UAAI,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM;AACzD,eAAO;AAGT,UAAI,KAAK,GAAG,OAAO,KAAK,CAAC;AACzB,UAAI,MAAM,IAAI,OAAO,EAAE,CAAC;AACxB,aAAO,KAAK,EAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM;AAAA,IAChE;AAEA,WAAO,UAAU,SAAS,SAAS,OAAO,GAAG;AAC3C,UAAI,KAAK,KAAK,EAAE,OAAO;AACvB,UAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,EAAE;AAC1C,UAAI,KAAK,EAAE,IAAI,EAAE,MAAM;AACrB,eAAO;AAET,UAAI,KAAK,EAAE,MAAM;AACjB,UAAI,IAAI,KAAK,MAAM,KAAK,OAAO,EAAE;AACjC,iBAAS;AACP,WAAG,KAAK,KAAK,MAAM,CAAC;AACpB,YAAI,GAAG,IAAI,KAAK,MAAM,CAAC,KAAK;AAC1B,iBAAO;AAET,WAAG,QAAQ,CAAC;AACZ,YAAI,KAAK,EAAE,IAAI,EAAE,MAAM;AACrB,iBAAO;AAAA,MACX;AAAA,IACF;AAEA,WAAO,UAAU,UAAU,SAAS,UAAU;AAC5C,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,aAAO,mBAAmB,KAAK,EAAE,SAAS,IAAI,CAAC,IAC3C,SAAS,KAAK,EAAE,SAAS,IAAI,CAAC,IAC9B,SAAS,KAAK,EAAE,SAAS,IAAI,CAAC,IAAI;AAAA,IACxC;AAEA,WAAO,UAAU,aAAa,SAAS,aAAa;AAElD,aAAO,KAAK,EAAE,KAAK,CAAC,MAAM;AAAA,IAC5B;AAAA;AAAA;;;ACz6BA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,KAAK;AACT,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,QAAI,QAAQ;AAEZ,aAAS,UAAU,MAAM;AACvB,WAAK,KAAK,MAAM,QAAQ,IAAI;AAE5B,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,KAAK,IAAI,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,QAAQ;AAC5C,WAAK,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG;AACnC,WAAK,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC;AAAA,IACnD;AACA,aAAS,WAAW,IAAI;AACxB,IAAAA,QAAO,UAAU;AAEjB,cAAU,UAAU,WAAW,SAAS,SAAS,OAAO;AACtD,UAAI,IAAI,MAAM,UAAU,EAAE;AAC1B,UAAI,KAAK,EAAE,OAAO;AAClB,UAAI,MAAM,GAAG,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;AACzD,UAAI,IAAI,IAAI,QAAQ;AAEpB,aAAO,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM;AAAA,IACjC;AAEA,aAAS,MAAM,OAAO,GAAG,GAAG;AAC1B,WAAK,UAAU,KAAK,MAAM,OAAO,YAAY;AAC7C,UAAI,MAAM,QAAQ,MAAM,MAAM;AAC5B,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,KAAK,MAAM;AAAA,MACtB,OAAO;AACL,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AAAA,MACxC;AAAA,IACF;AACA,aAAS,OAAO,KAAK,SAAS;AAE9B,cAAU,UAAU,cAAc,SAAS,YAAY,OAAO,KAAK;AACjE,aAAO,KAAK,MAAM,MAAM,QAAQ,OAAO,GAAG,GAAG,CAAC;AAAA,IAChD;AAEA,cAAU,UAAU,QAAQ,SAAS,MAAM,GAAG,GAAG;AAC/C,aAAO,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAC7B;AAEA,cAAU,UAAU,gBAAgB,SAAS,cAAc,KAAK;AAC9D,aAAO,MAAM,SAAS,MAAM,GAAG;AAAA,IACjC;AAEA,UAAM,UAAU,aAAa,SAAS,aAAa;AAAA,IAEnD;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAC3C,aAAO,KAAK,KAAK,EAAE,QAAQ,MAAM,KAAK,MAAM,EAAE,WAAW,CAAC;AAAA,IAC5D;AAEA,UAAM,WAAW,SAAS,SAAS,OAAO,KAAK;AAC7C,aAAO,IAAI,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,GAAG;AAAA,IACrD;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAC3C,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,aAAO,kBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IACpD,SAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IAAI;AAAA,IAClD;AAEA,UAAM,UAAU,aAAa,SAAS,aAAa;AAEjD,aAAO,KAAK,EAAE,KAAK,CAAC,MAAM;AAAA,IAC5B;AAEA,UAAM,UAAU,MAAM,SAAS,MAAM;AAKnC,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC;AAE5B,UAAI,KAAK,EAAE,OAAO;AAElB,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC;AAE5B,UAAI,KAAK,EAAE,OAAO;AAElB,UAAI,IAAI,GAAG,OAAO,EAAE;AAEpB,UAAI,KAAK,GAAG,OAAO,EAAE;AAErB,UAAI,KAAK,EAAE,OAAO,GAAG,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC;AACrD,aAAO,KAAK,MAAM,MAAM,IAAI,EAAE;AAAA,IAChC;AAEA,UAAM,UAAU,MAAM,SAASC,OAAM;AACnC,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,UAAM,UAAU,UAAU,SAAS,QAAQ,GAAG,MAAM;AAKlD,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC;AAE5B,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC;AAE5B,UAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AAEtB,UAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AAEtB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,EAAE,OAAO,CAAC;AAE7C,UAAI,KAAK,KAAK,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,OAAO,CAAC;AAC9C,aAAO,KAAK,MAAM,MAAM,IAAI,EAAE;AAAA,IAChC;AAEA,UAAM,UAAU,MAAM,SAAS,IAAI,GAAG;AACpC,UAAI,IAAI,EAAE,MAAM;AAChB,UAAI,IAAI;AACR,UAAI,IAAI,KAAK,MAAM,MAAM,MAAM,IAAI;AACnC,UAAI,IAAI;AAER,eAAS,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC;AAC7C,aAAK,KAAK,EAAE,MAAM,CAAC,CAAC;AAEtB,eAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,YAAI,KAAK,CAAC,MAAM,GAAG;AAEjB,cAAI,EAAE,QAAQ,GAAG,CAAC;AAElB,cAAI,EAAE,IAAI;AAAA,QACZ,OAAO;AAEL,cAAI,EAAE,QAAQ,GAAG,CAAC;AAElB,cAAI,EAAE,IAAI;AAAA,QACZ;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,SAAS,SAAS,SAAS;AACzC,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAC3C,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AAEA,UAAM,UAAU,KAAK,SAAS,GAAG,OAAO;AACtC,aAAO,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC,MAAM;AAAA,IAC3C;AAEA,UAAM,UAAU,YAAY,SAAS,YAAY;AAC/C,WAAK,IAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC;AACvC,WAAK,IAAI,KAAK,MAAM;AACpB,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO;AAErC,WAAK,UAAU;AAEf,aAAO,KAAK,EAAE,QAAQ;AAAA,IACxB;AAAA;AAAA;;;ACjLA,IAAAC,mBAAA;AAAA,wDAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,KAAK;AACT,QAAI,WAAW;AACf,QAAI,OAAO;AAEX,QAAI,SAAS,MAAM;AAEnB,aAAS,aAAa,MAAM;AAE1B,WAAK,WAAW,KAAK,IAAI,OAAO;AAChC,WAAK,QAAQ,KAAK,YAAY,KAAK,IAAI,OAAO;AAC9C,WAAK,WAAW,KAAK;AAErB,WAAK,KAAK,MAAM,WAAW,IAAI;AAE/B,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC;AAC3C,WAAK,IAAI,KAAK,EAAE,MAAM,KAAK,GAAG;AAC9B,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,KAAK,KAAK,EAAE,OAAO;AACxB,WAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,EAAE,MAAM,KAAK,GAAG;AAC1C,WAAK,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC;AAE9B,aAAO,CAAC,KAAK,WAAW,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;AACtD,WAAK,QAAQ,KAAK,IAAI,OAAO;AAAA,IAC/B;AACA,aAAS,cAAc,IAAI;AAC3B,IAAAA,QAAO,UAAU;AAEjB,iBAAa,UAAU,QAAQ,SAAS,MAAM,KAAK;AACjD,UAAI,KAAK;AACP,eAAO,IAAI,OAAO;AAAA;AAElB,eAAO,KAAK,EAAE,OAAO,GAAG;AAAA,IAC5B;AAEA,iBAAa,UAAU,QAAQ,SAAS,MAAM,KAAK;AACjD,UAAI,KAAK;AACP,eAAO;AAAA;AAEP,eAAO,KAAK,EAAE,OAAO,GAAG;AAAA,IAC5B;AAGA,iBAAa,UAAU,SAAS,SAAS,OAAO,GAAG,GAAG,GAAG,GAAG;AAC1D,aAAO,KAAK,MAAM,GAAG,GAAG,GAAG,CAAC;AAAA,IAC9B;AAEA,iBAAa,UAAU,aAAa,SAAS,WAAW,GAAG,KAAK;AAC9D,UAAI,IAAI,GAAG,GAAG,EAAE;AAChB,UAAI,CAAC,EAAE;AACL,YAAI,EAAE,MAAM,KAAK,GAAG;AAEtB,UAAI,KAAK,EAAE,OAAO;AAClB,UAAI,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC;AAC1C,UAAI,MAAM,KAAK,IAAI,OAAO,KAAK,GAAG,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAE3D,UAAI,KAAK,IAAI,OAAO,IAAI,QAAQ,CAAC;AACjC,UAAI,IAAI,GAAG,QAAQ;AACnB,UAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,KAAK,IAAI,MAAM;AAC3C,cAAM,IAAI,MAAM,eAAe;AAEjC,UAAI,QAAQ,EAAE,QAAQ,EAAE,MAAM;AAC9B,UAAI,OAAO,CAAC,SAAS,CAAC,OAAO;AAC3B,YAAI,EAAE,OAAO;AAEf,aAAO,KAAK,MAAM,GAAG,CAAC;AAAA,IACxB;AAEA,iBAAa,UAAU,aAAa,SAAS,WAAW,GAAG,KAAK;AAC9D,UAAI,IAAI,GAAG,GAAG,EAAE;AAChB,UAAI,CAAC,EAAE;AACL,YAAI,EAAE,MAAM,KAAK,GAAG;AAGtB,UAAI,KAAK,EAAE,OAAO;AAClB,UAAI,MAAM,GAAG,OAAO,KAAK,EAAE;AAC3B,UAAI,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC;AACzD,UAAI,KAAK,IAAI,OAAO,IAAI,QAAQ,CAAC;AAEjC,UAAI,GAAG,IAAI,KAAK,IAAI,MAAM,GAAG;AAC3B,YAAI;AACF,gBAAM,IAAI,MAAM,eAAe;AAAA;AAE/B,iBAAO,KAAK,MAAM,KAAK,MAAM,CAAC;AAAA,MAClC;AAEA,UAAI,IAAI,GAAG,QAAQ;AACnB,UAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,KAAK,IAAI,MAAM;AAC3C,cAAM,IAAI,MAAM,eAAe;AAEjC,UAAI,EAAE,QAAQ,EAAE,MAAM,MAAM;AAC1B,YAAI,EAAE,OAAO;AAEf,aAAO,KAAK,MAAM,GAAG,CAAC;AAAA,IACxB;AAEA,iBAAa,UAAU,WAAW,SAAS,SAAS,OAAO;AACzD,UAAI,MAAM,WAAW;AACnB,eAAO;AAGT,YAAM,UAAU;AAEhB,UAAI,KAAK,MAAM,EAAE,OAAO;AACxB,UAAI,KAAK,MAAM,EAAE,OAAO;AACxB,UAAI,MAAM,GAAG,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE;AACrC,UAAI,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAEtE,aAAO,IAAI,IAAI,GAAG,MAAM;AAAA,IAC1B;AAEA,aAAS,MAAM,OAAO,GAAG,GAAG,GAAG,GAAG;AAChC,WAAK,UAAU,KAAK,MAAM,OAAO,YAAY;AAC7C,UAAI,MAAM,QAAQ,MAAM,QAAQ,MAAM,MAAM;AAC1C,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,IAAI,KAAK,MAAM;AACpB,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,GAAG,GAAG,EAAE;AACrB,aAAK,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,MAAM;AACxC,aAAK,IAAI,KAAK,IAAI,GAAG,GAAG,EAAE;AAC1B,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,YAAI,CAAC,KAAK,EAAE;AACV,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,YAAI,KAAK,KAAK,CAAC,KAAK,EAAE;AACpB,eAAK,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG;AACtC,aAAK,OAAO,KAAK,MAAM,KAAK,MAAM;AAGlC,YAAI,KAAK,MAAM,YAAY,CAAC,KAAK,GAAG;AAClC,eAAK,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC;AAC7B,cAAI,CAAC,KAAK;AACR,iBAAK,IAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AACA,aAAS,OAAO,KAAK,SAAS;AAE9B,iBAAa,UAAU,gBAAgB,SAAS,cAAc,KAAK;AACjE,aAAO,MAAM,SAAS,MAAM,GAAG;AAAA,IACjC;AAEA,iBAAa,UAAU,QAAQ,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG;AACxD,aAAO,IAAI,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC;AAAA,IACnC;AAEA,UAAM,WAAW,SAAS,SAAS,OAAO,KAAK;AAC7C,aAAO,IAAI,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,IAChD;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAC3C,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,aAAO,kBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IACpD,SAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IACxC,SAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC,IAAI;AAAA,IAClD;AAEA,UAAM,UAAU,aAAa,SAAS,aAAa;AAEjD,aAAO,KAAK,EAAE,KAAK,CAAC,MAAM,MACvB,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,KACvB,KAAK,QAAQ,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM;AAAA,IAC/C;AAEA,UAAM,UAAU,UAAU,SAAS,UAAU;AAM3C,UAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,UAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,UAAI,IAAI,KAAK,EAAE,OAAO;AACtB,UAAI,EAAE,QAAQ,CAAC;AAEf,UAAI,IAAI,KAAK,MAAM,MAAM,CAAC;AAE1B,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAE3D,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AACnB,aAAO,KAAK,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE;AAAA,IACxC;AAEA,UAAM,UAAU,WAAW,SAAS,WAAW;AAQ7C,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO;AAErC,UAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,UAAI,IAAI,KAAK,EAAE,OAAO;AAEtB,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,MAAM,SAAS;AAEtB,YAAI,KAAK,MAAM,MAAM,CAAC;AAEtB,YAAI,IAAI,EAAE,OAAO,CAAC;AAClB,YAAI,KAAK,MAAM;AAEb,eAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC;AAE1D,eAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzB,eAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;AAAA,QACpC,OAAO;AAEL,cAAI,KAAK,EAAE,OAAO;AAElB,cAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC;AAEzB,eAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;AAEpC,eAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEzB,eAAK,EAAE,OAAO,CAAC;AAAA,QACjB;AAAA,MACF,OAAO;AAEL,YAAI,EAAE,OAAO,CAAC;AAEd,YAAI,KAAK,MAAM,MAAM,KAAK,CAAC,EAAE,OAAO;AAEpC,YAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;AAExB,aAAK,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;AAE5C,aAAK,KAAK,MAAM,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE5C,aAAK,EAAE,OAAO,CAAC;AAAA,MACjB;AACA,aAAO,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AAAA,IACpC;AAEA,UAAM,UAAU,MAAM,SAAS,MAAM;AACnC,UAAI,KAAK,WAAW;AAClB,eAAO;AAGT,UAAI,KAAK,MAAM;AACb,eAAO,KAAK,QAAQ;AAAA;AAEpB,eAAO,KAAK,SAAS;AAAA,IACzB;AAEA,UAAM,UAAU,UAAU,SAAS,QAAQ,GAAG;AAM5C,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpD,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAEpD,UAAI,IAAI,KAAK,EAAE,OAAO,KAAK,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;AAE/C,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAErC,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AAEnB,UAAI,KAAK,EAAE,OAAO,CAAC;AACnB,aAAO,KAAK,MAAM,MAAM,IAAI,IAAI,IAAI,EAAE;AAAA,IACxC;AAEA,UAAM,UAAU,WAAW,SAAS,SAAS,GAAG;AAO9C,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;AAEzB,UAAI,IAAI,EAAE,OAAO;AAEjB,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;AAEzB,UAAI,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;AAEzB,UAAI,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;AAEvC,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,IAAI,EAAE,OAAO,CAAC;AAElB,UAAI,MAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAC5E,UAAI,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG;AAC/B,UAAI;AACJ,UAAI;AACJ,UAAI,KAAK,MAAM,SAAS;AAEtB,aAAK,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC;AAErD,aAAK,EAAE,OAAO,CAAC;AAAA,MACjB,OAAO;AAEL,aAAK,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnC,aAAK,KAAK,MAAM,MAAM,CAAC,EAAE,OAAO,CAAC;AAAA,MACnC;AACA,aAAO,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE;AAAA,IACpC;AAEA,UAAM,UAAU,MAAM,SAASC,KAAI,GAAG;AACpC,UAAI,KAAK,WAAW;AAClB,eAAO;AACT,UAAI,EAAE,WAAW;AACf,eAAO;AAET,UAAI,KAAK,MAAM;AACb,eAAO,KAAK,QAAQ,CAAC;AAAA;AAErB,eAAO,KAAK,SAAS,CAAC;AAAA,IAC1B;AAEA,UAAM,UAAU,MAAM,SAAS,IAAI,GAAG;AACpC,UAAI,KAAK,YAAY,CAAC;AACpB,eAAO,KAAK,MAAM,aAAa,MAAM,CAAC;AAAA;AAEtC,eAAO,KAAK,MAAM,SAAS,MAAM,CAAC;AAAA,IACtC;AAEA,UAAM,UAAU,SAAS,SAAS,OAAO,IAAI,GAAG,IAAI;AAClD,aAAO,KAAK,MAAM,YAAY,GAAG,CAAE,MAAM,CAAE,GAAG,CAAE,IAAI,EAAG,GAAG,GAAG,KAAK;AAAA,IACpE;AAEA,UAAM,UAAU,UAAU,SAAS,QAAQ,IAAI,GAAG,IAAI;AACpD,aAAO,KAAK,MAAM,YAAY,GAAG,CAAE,MAAM,CAAE,GAAG,CAAE,IAAI,EAAG,GAAG,GAAG,IAAI;AAAA,IACnE;AAEA,UAAM,UAAU,YAAY,SAAS,YAAY;AAC/C,UAAI,KAAK;AACP,eAAO;AAGT,UAAI,KAAK,KAAK,EAAE,QAAQ;AACxB,WAAK,IAAI,KAAK,EAAE,OAAO,EAAE;AACzB,WAAK,IAAI,KAAK,EAAE,OAAO,EAAE;AACzB,UAAI,KAAK;AACP,aAAK,IAAI,KAAK,EAAE,OAAO,EAAE;AAC3B,WAAK,IAAI,KAAK,MAAM;AACpB,WAAK,OAAO;AACZ,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,MAAM,SAAS,MAAM;AACnC,aAAO,KAAK,MAAM;AAAA,QAAM,KAAK,EAAE,OAAO;AAAA,QACpC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,KAAK,KAAK,EAAE,OAAO;AAAA,MAAC;AAAA,IAC7B;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO;AACrC,WAAK,UAAU;AACf,aAAO,KAAK,EAAE,QAAQ;AAAA,IACxB;AAEA,UAAM,UAAU,OAAO,SAAS,OAAO;AACrC,WAAK,UAAU;AACf,aAAO,KAAK,EAAE,QAAQ;AAAA,IACxB;AAEA,UAAM,UAAU,KAAK,SAAS,GAAG,OAAO;AACtC,aAAO,SAAS,SACT,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC,MAAM,KAClC,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,CAAC,MAAM;AAAA,IAC3C;AAEA,UAAM,UAAU,SAAS,SAAS,OAAO,GAAG;AAC1C,UAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,KAAK,CAAC;AAC9C,UAAI,KAAK,EAAE,IAAI,EAAE,MAAM;AACrB,eAAO;AAET,UAAI,KAAK,EAAE,MAAM;AACjB,UAAI,IAAI,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC;AACrC,iBAAS;AACP,WAAG,KAAK,KAAK,MAAM,CAAC;AACpB,YAAI,GAAG,IAAI,KAAK,MAAM,CAAC,KAAK;AAC1B,iBAAO;AAET,WAAG,QAAQ,CAAC;AACZ,YAAI,KAAK,EAAE,IAAI,EAAE,MAAM;AACrB,iBAAO;AAAA,MACX;AAAA,IACF;AAGA,UAAM,UAAU,MAAM,MAAM,UAAU;AACtC,UAAM,UAAU,WAAW,MAAM,UAAU;AAAA;AAAA;;;AClb3C,IAAAC,iBAAA;AAAA,sDAAAC,UAAA;AAAA;AAEA,QAAI,QAAQA;AAEZ,UAAM,OAAO;AACb,UAAM,QAAQ;AACd,UAAM,OAAO;AACb,UAAM,UAAU;AAAA;AAAA;;;ACPhB,IAAAC,kBAAA;AAAA,2CAAAC,UAAA;AAAA;AAEA,QAAI,SAAS;AACb,QAAI,WAAW;AAEf,IAAAA,SAAQ,WAAW;AAEnB,aAAS,gBAAgB,KAAK,GAAG;AAC/B,WAAK,IAAI,WAAW,CAAC,IAAI,WAAY,OAAQ;AAC3C,eAAO;AAAA,MACT;AACA,UAAI,IAAI,KAAK,IAAI,KAAK,IAAI,QAAQ;AAChC,eAAO;AAAA,MACT;AACA,cAAQ,IAAI,WAAW,IAAI,CAAC,IAAI,WAAY;AAAA,IAC9C;AAEA,aAAS,QAAQ,KAAK,KAAK;AACzB,UAAI,MAAM,QAAQ,GAAG;AACnB,eAAO,IAAI,MAAM;AACnB,UAAI,CAAC;AACH,eAAO,CAAC;AACV,UAAI,MAAM,CAAC;AACX,UAAI,OAAO,QAAQ,UAAU;AAC3B,YAAI,CAAC,KAAK;AAKR,cAAI,IAAI;AACR,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAI,IAAI,IAAI,WAAW,CAAC;AACxB,gBAAI,IAAI,KAAK;AACX,kBAAI,GAAG,IAAI;AAAA,YACb,WAAW,IAAI,MAAM;AACnB,kBAAI,GAAG,IAAK,KAAK,IAAK;AACtB,kBAAI,GAAG,IAAK,IAAI,KAAM;AAAA,YACxB,WAAW,gBAAgB,KAAK,CAAC,GAAG;AAClC,kBAAI,UAAY,IAAI,SAAW,OAAO,IAAI,WAAW,EAAE,CAAC,IAAI;AAC5D,kBAAI,GAAG,IAAK,KAAK,KAAM;AACvB,kBAAI,GAAG,IAAM,KAAK,KAAM,KAAM;AAC9B,kBAAI,GAAG,IAAM,KAAK,IAAK,KAAM;AAC7B,kBAAI,GAAG,IAAK,IAAI,KAAM;AAAA,YACxB,OAAO;AACL,kBAAI,GAAG,IAAK,KAAK,KAAM;AACvB,kBAAI,GAAG,IAAM,KAAK,IAAK,KAAM;AAC7B,kBAAI,GAAG,IAAK,IAAI,KAAM;AAAA,YACxB;AAAA,UACF;AAAA,QACF,WAAW,QAAQ,OAAO;AACxB,gBAAM,IAAI,QAAQ,gBAAgB,EAAE;AACpC,cAAI,IAAI,SAAS,MAAM;AACrB,kBAAM,MAAM;AACd,eAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,gBAAI,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AAAA,QAC9C;AAAA,MACF,OAAO;AACL,aAAK,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC1B,cAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AAAA,MACtB;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,UAAU;AAElB,aAASC,OAAM,KAAK;AAClB,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC9B,eAAO,MAAM,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;AAClC,aAAO;AAAA,IACT;AACA,IAAAD,SAAQ,QAAQC;AAEhB,aAAS,MAAM,GAAG;AAChB,UAAI,MAAO,MAAM,KACL,MAAM,IAAK,QACX,KAAK,IAAK,YACV,IAAI,QAAS;AACzB,aAAO,QAAQ;AAAA,IACjB;AACA,IAAAD,SAAQ,QAAQ;AAEhB,aAAS,QAAQ,KAAK,QAAQ;AAC5B,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAI,IAAI,IAAI,CAAC;AACb,YAAI,WAAW;AACb,cAAI,MAAM,CAAC;AACb,eAAO,MAAM,EAAE,SAAS,EAAE,CAAC;AAAA,MAC7B;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,UAAU;AAElB,aAAS,MAAM,MAAM;AACnB,UAAI,KAAK,WAAW;AAClB,eAAO,MAAM;AAAA;AAEb,eAAO;AAAA,IACX;AACA,IAAAA,SAAQ,QAAQ;AAEhB,aAAS,MAAM,MAAM;AACnB,UAAI,KAAK,WAAW;AAClB,eAAO,MAAM;AAAA,eACN,KAAK,WAAW;AACvB,eAAO,OAAO;AAAA,eACP,KAAK,WAAW;AACvB,eAAO,QAAQ;AAAA,eACR,KAAK,WAAW;AACvB,eAAO,SAAS;AAAA,eACT,KAAK,WAAW;AACvB,eAAO,UAAU;AAAA,eACV,KAAK,WAAW;AACvB,eAAO,WAAW;AAAA,eACX,KAAK,WAAW;AACvB,eAAO,YAAY;AAAA;AAEnB,eAAO;AAAA,IACX;AACA,IAAAA,SAAQ,QAAQ;AAEhB,aAAS,OAAO,KAAK,OAAO,KAAK,QAAQ;AACvC,UAAI,MAAM,MAAM;AAChB,aAAO,MAAM,MAAM,CAAC;AACpB,UAAI,MAAM,IAAI,MAAM,MAAM,CAAC;AAC3B,eAAS,IAAI,GAAG,IAAI,OAAO,IAAI,IAAI,QAAQ,KAAK,KAAK,GAAG;AACtD,YAAI;AACJ,YAAI,WAAW;AACb,cAAK,IAAI,CAAC,KAAK,KAAO,IAAI,IAAI,CAAC,KAAK,KAAO,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,IAAI,CAAC;AAAA;AAEvE,cAAK,IAAI,IAAI,CAAC,KAAK,KAAO,IAAI,IAAI,CAAC,KAAK,KAAO,IAAI,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC;AACzE,YAAI,CAAC,IAAI,MAAM;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,QAAQ,KAAK,QAAQ;AAC5B,UAAI,MAAM,IAAI,MAAM,IAAI,SAAS,CAAC;AAClC,eAAS,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,KAAK,GAAG;AAClD,YAAI,IAAI,IAAI,CAAC;AACb,YAAI,WAAW,OAAO;AACpB,cAAI,CAAC,IAAI,MAAM;AACf,cAAI,IAAI,CAAC,IAAK,MAAM,KAAM;AAC1B,cAAI,IAAI,CAAC,IAAK,MAAM,IAAK;AACzB,cAAI,IAAI,CAAC,IAAI,IAAI;AAAA,QACnB,OAAO;AACL,cAAI,IAAI,CAAC,IAAI,MAAM;AACnB,cAAI,IAAI,CAAC,IAAK,MAAM,KAAM;AAC1B,cAAI,IAAI,CAAC,IAAK,MAAM,IAAK;AACzB,cAAI,CAAC,IAAI,IAAI;AAAA,QACf;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,UAAU;AAElB,aAAS,OAAO,GAAG,GAAG;AACpB,aAAQ,MAAM,IAAM,KAAM,KAAK;AAAA,IACjC;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,OAAO,GAAG,GAAG;AACpB,aAAQ,KAAK,IAAM,MAAO,KAAK;AAAA,IACjC;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,MAAM,GAAG,GAAG;AACnB,aAAQ,IAAI,MAAO;AAAA,IACrB;AACA,IAAAA,SAAQ,QAAQ;AAEhB,aAAS,QAAQ,GAAG,GAAG,GAAG;AACxB,aAAQ,IAAI,IAAI,MAAO;AAAA,IACzB;AACA,IAAAA,SAAQ,UAAU;AAElB,aAAS,QAAQ,GAAG,GAAG,GAAG,GAAG;AAC3B,aAAQ,IAAI,IAAI,IAAI,MAAO;AAAA,IAC7B;AACA,IAAAA,SAAQ,UAAU;AAElB,aAAS,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG;AAC9B,aAAQ,IAAI,IAAI,IAAI,IAAI,MAAO;AAAA,IACjC;AACA,IAAAA,SAAQ,UAAU;AAElB,aAAS,MAAM,KAAK,KAAK,IAAI,IAAI;AAC/B,UAAI,KAAK,IAAI,GAAG;AAChB,UAAI,KAAK,IAAI,MAAM,CAAC;AAEpB,UAAI,KAAM,KAAK,OAAQ;AACvB,UAAI,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAClC,UAAI,GAAG,IAAI,OAAO;AAClB,UAAI,MAAM,CAAC,IAAI;AAAA,IACjB;AACA,IAAAA,SAAQ,QAAQ;AAEhB,aAAS,SAAS,IAAI,IAAI,IAAI,IAAI;AAChC,UAAI,KAAM,KAAK,OAAQ;AACvB,UAAI,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK;AAClC,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,WAAW;AAEnB,aAAS,SAAS,IAAI,IAAI,IAAI,IAAI;AAChC,UAAI,KAAK,KAAK;AACd,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,WAAW;AAEnB,aAAS,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAClD,UAAI,QAAQ;AACZ,UAAI,KAAK;AACT,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AACvB,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AACvB,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AAEvB,UAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AAC7B,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,aAAa;AAErB,aAAS,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAClD,UAAI,KAAK,KAAK,KAAK,KAAK;AACxB,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,aAAa;AAErB,aAAS,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC1D,UAAI,QAAQ;AACZ,UAAI,KAAK;AACT,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AACvB,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AACvB,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AACvB,WAAM,KAAK,OAAQ;AACnB,eAAS,KAAK,KAAK,IAAI;AAEvB,UAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAClC,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,aAAa;AAErB,aAAS,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAC1D,UAAI,KAAK,KAAK,KAAK,KAAK,KAAK;AAE7B,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,aAAa;AAErB,aAAS,UAAU,IAAI,IAAI,KAAK;AAC9B,UAAI,IAAK,MAAO,KAAK,MAAS,OAAO;AACrC,aAAO,MAAM;AAAA,IACf;AACA,IAAAA,SAAQ,YAAY;AAEpB,aAAS,UAAU,IAAI,IAAI,KAAK;AAC9B,UAAI,IAAK,MAAO,KAAK,MAAS,OAAO;AACrC,aAAO,MAAM;AAAA,IACf;AACA,IAAAA,SAAQ,YAAY;AAEpB,aAAS,SAAS,IAAI,IAAI,KAAK;AAC7B,aAAO,OAAO;AAAA,IAChB;AACA,IAAAA,SAAQ,WAAW;AAEnB,aAAS,SAAS,IAAI,IAAI,KAAK;AAC7B,UAAI,IAAK,MAAO,KAAK,MAAS,OAAO;AACrC,aAAO,MAAM;AAAA,IACf;AACA,IAAAA,SAAQ,WAAW;AAAA;AAAA;;;ACrRnB,IAAAE,kBAAA;AAAA,4CAAAC,UAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AAEb,aAAS,YAAY;AACnB,WAAK,UAAU;AACf,WAAK,eAAe;AACpB,WAAK,YAAY,KAAK,YAAY;AAClC,WAAK,UAAU,KAAK,YAAY;AAChC,WAAK,eAAe,KAAK,YAAY;AACrC,WAAK,YAAY,KAAK,YAAY,YAAY;AAC9C,WAAK,SAAS;AAEd,WAAK,UAAU,KAAK,YAAY;AAChC,WAAK,WAAW,KAAK,YAAY;AAAA,IACnC;AACA,IAAAA,SAAQ,YAAY;AAEpB,cAAU,UAAU,SAAS,SAAS,OAAO,KAAK,KAAK;AAErD,YAAM,MAAM,QAAQ,KAAK,GAAG;AAC5B,UAAI,CAAC,KAAK;AACR,aAAK,UAAU;AAAA;AAEf,aAAK,UAAU,KAAK,QAAQ,OAAO,GAAG;AACxC,WAAK,gBAAgB,IAAI;AAGzB,UAAI,KAAK,QAAQ,UAAU,KAAK,SAAS;AACvC,cAAM,KAAK;AAGX,YAAI,IAAI,IAAI,SAAS,KAAK;AAC1B,aAAK,UAAU,IAAI,MAAM,IAAI,SAAS,GAAG,IAAI,MAAM;AACnD,YAAI,KAAK,QAAQ,WAAW;AAC1B,eAAK,UAAU;AAEjB,cAAM,MAAM,OAAO,KAAK,GAAG,IAAI,SAAS,GAAG,KAAK,MAAM;AACtD,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,KAAK;AACxC,eAAK,QAAQ,KAAK,GAAG,IAAI,KAAK,QAAQ;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAEA,cAAU,UAAU,SAAS,SAAS,OAAO,KAAK;AAChD,WAAK,OAAO,KAAK,KAAK,CAAC;AACvB,aAAO,KAAK,YAAY,IAAI;AAE5B,aAAO,KAAK,QAAQ,GAAG;AAAA,IACzB;AAEA,cAAU,UAAU,OAAO,SAAS,MAAM;AACxC,UAAI,MAAM,KAAK;AACf,UAAI,QAAQ,KAAK;AACjB,UAAI,IAAI,SAAU,MAAM,KAAK,aAAa;AAC1C,UAAI,MAAM,IAAI,MAAM,IAAI,KAAK,SAAS;AACtC,UAAI,CAAC,IAAI;AACT,eAAS,IAAI,GAAG,IAAI,GAAG;AACrB,YAAI,CAAC,IAAI;AAGX,cAAQ;AACR,UAAI,KAAK,WAAW,OAAO;AACzB,iBAAS,IAAI,GAAG,IAAI,KAAK,WAAW;AAClC,cAAI,GAAG,IAAI;AAEb,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAK,QAAQ,KAAM;AAC1B,YAAI,GAAG,IAAK,QAAQ,KAAM;AAC1B,YAAI,GAAG,IAAK,QAAQ,IAAK;AACzB,YAAI,GAAG,IAAI,MAAM;AAAA,MACnB,OAAO;AACL,YAAI,GAAG,IAAI,MAAM;AACjB,YAAI,GAAG,IAAK,QAAQ,IAAK;AACzB,YAAI,GAAG,IAAK,QAAQ,KAAM;AAC1B,YAAI,GAAG,IAAK,QAAQ,KAAM;AAC1B,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AACX,YAAI,GAAG,IAAI;AAEX,aAAK,IAAI,GAAG,IAAI,KAAK,WAAW;AAC9B,cAAI,GAAG,IAAI;AAAA,MACf;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC3FA,IAAAC,kBAAA;AAAA,gDAAAC,UAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS,MAAM;AAEnB,aAAS,KAAK,GAAG,GAAG,GAAG,GAAG;AACxB,UAAI,MAAM;AACR,eAAO,KAAK,GAAG,GAAG,CAAC;AACrB,UAAI,MAAM,KAAK,MAAM;AACnB,eAAO,IAAI,GAAG,GAAG,CAAC;AACpB,UAAI,MAAM;AACR,eAAO,MAAM,GAAG,GAAG,CAAC;AAAA,IACxB;AACA,IAAAA,SAAQ,OAAO;AAEf,aAAS,KAAK,GAAG,GAAG,GAAG;AACrB,aAAQ,IAAI,IAAO,CAAC,IAAK;AAAA,IAC3B;AACA,IAAAA,SAAQ,OAAO;AAEf,aAAS,MAAM,GAAG,GAAG,GAAG;AACtB,aAAQ,IAAI,IAAM,IAAI,IAAM,IAAI;AAAA,IAClC;AACA,IAAAA,SAAQ,QAAQ;AAEhB,aAAS,IAAI,GAAG,GAAG,GAAG;AACpB,aAAO,IAAI,IAAI;AAAA,IACjB;AACA,IAAAA,SAAQ,MAAM;AAEd,aAAS,OAAO,GAAG;AACjB,aAAO,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;AAAA,IACpD;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,OAAO,GAAG;AACjB,aAAO,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE;AAAA,IACpD;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,OAAO,GAAG;AACjB,aAAO,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAK,MAAM;AAAA,IAC/C;AACA,IAAAA,SAAQ,SAAS;AAEjB,aAAS,OAAO,GAAG;AACjB,aAAO,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,IAAK,MAAM;AAAA,IAChD;AACA,IAAAA,SAAQ,SAAS;AAAA;AAAA;;;AChDjB;AAAA,2CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI,YAAY;AAEhB,QAAI,SAAS,MAAM;AACnB,QAAI,QAAQ,MAAM;AAClB,QAAI,UAAU,MAAM;AACpB,QAAI,OAAO,UAAU;AACrB,QAAI,YAAY,OAAO;AAEvB,QAAI,SAAS;AAAA,MACX;AAAA,MAAY;AAAA,MACZ;AAAA,MAAY;AAAA,IACd;AAEA,aAAS,OAAO;AACd,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,KAAK;AAElB,gBAAU,KAAK,IAAI;AACnB,WAAK,IAAI;AAAA,QACP;AAAA,QAAY;AAAA,QAAY;AAAA,QACxB;AAAA,QAAY;AAAA,MAAW;AACzB,WAAK,IAAI,IAAI,MAAM,EAAE;AAAA,IACvB;AAEA,UAAM,SAAS,MAAM,SAAS;AAC9B,IAAAA,QAAO,UAAU;AAEjB,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,eAAe;AACpB,SAAK,YAAY;AAEjB,SAAK,UAAU,UAAU,SAAS,QAAQ,KAAK,OAAO;AACpD,UAAI,IAAI,KAAK;AAEb,eAAS,IAAI,GAAG,IAAI,IAAI;AACtB,UAAE,CAAC,IAAI,IAAI,QAAQ,CAAC;AAEtB,aAAM,IAAI,EAAE,QAAQ;AAClB,UAAE,CAAC,IAAI,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;AAE9D,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAEhB,WAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAC7B,YAAI,IAAI,CAAC,EAAE,IAAI;AACf,YAAI,IAAI,QAAQ,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;AAClE,YAAI;AACJ,YAAI;AACJ,YAAI,OAAO,GAAG,EAAE;AAChB,YAAI;AACJ,YAAI;AAAA,MACN;AAEA,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAAA,IAChC;AAEA,SAAK,UAAU,UAAU,SAAS,OAAO,KAAK;AAC5C,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA;AAElC,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA,IACtC;AAAA;AAAA;;;ACzEA,IAAAC,aAAA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI,YAAY;AAChB,QAAI,SAAS;AAEb,QAAI,QAAQ,MAAM;AAClB,QAAI,UAAU,MAAM;AACpB,QAAI,UAAU,MAAM;AACpB,QAAI,OAAO,UAAU;AACrB,QAAI,QAAQ,UAAU;AACtB,QAAI,SAAS,UAAU;AACvB,QAAI,SAAS,UAAU;AACvB,QAAI,SAAS,UAAU;AACvB,QAAI,SAAS,UAAU;AAEvB,QAAI,YAAY,OAAO;AAEvB,QAAI,WAAW;AAAA,MACb;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,IACtC;AAEA,aAAS,SAAS;AAChB,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,OAAO;AAEpB,gBAAU,KAAK,IAAI;AACnB,WAAK,IAAI;AAAA,QACP;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,MACtC;AACA,WAAK,IAAI;AACT,WAAK,IAAI,IAAI,MAAM,EAAE;AAAA,IACvB;AACA,UAAM,SAAS,QAAQ,SAAS;AAChC,IAAAA,QAAO,UAAU;AAEjB,WAAO,YAAY;AACnB,WAAO,UAAU;AACjB,WAAO,eAAe;AACtB,WAAO,YAAY;AAEnB,WAAO,UAAU,UAAU,SAAS,QAAQ,KAAK,OAAO;AACtD,UAAI,IAAI,KAAK;AAEb,eAAS,IAAI,GAAG,IAAI,IAAI;AACtB,UAAE,CAAC,IAAI,IAAI,QAAQ,CAAC;AACtB,aAAO,IAAI,EAAE,QAAQ;AACnB,UAAE,CAAC,IAAI,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AAEzE,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAEhB,aAAO,KAAK,EAAE,WAAW,EAAE,MAAM;AACjC,WAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAC7B,YAAI,KAAK,QAAQ,GAAG,OAAO,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7D,YAAI,KAAK,MAAM,OAAO,CAAC,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC;AACxC,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,MAAM,GAAG,EAAE;AACf,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,MAAM,IAAI,EAAE;AAAA,MAClB;AAEA,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAC9B,WAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,GAAG,CAAC;AAAA,IAChC;AAEA,WAAO,UAAU,UAAU,SAAS,OAAO,KAAK;AAC9C,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA;AAElC,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA,IACtC;AAAA;AAAA;;;ACxGA,IAAAC,aAAA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AAEb,aAAS,SAAS;AAChB,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,OAAO;AAEpB,aAAO,KAAK,IAAI;AAChB,WAAK,IAAI;AAAA,QACP;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,MAAW;AAAA,IACnD;AACA,UAAM,SAAS,QAAQ,MAAM;AAC7B,IAAAA,QAAO,UAAU;AAEjB,WAAO,YAAY;AACnB,WAAO,UAAU;AACjB,WAAO,eAAe;AACtB,WAAO,YAAY;AAEnB,WAAO,UAAU,UAAU,SAAS,OAAO,KAAK;AAE9C,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK;AAAA;AAE9C,eAAO,MAAM,QAAQ,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK;AAAA,IAClD;AAAA;AAAA;;;AC5BA,IAAAC,aAAA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AACb,QAAI,SAAS;AAEb,QAAI,YAAY,MAAM;AACtB,QAAI,YAAY,MAAM;AACtB,QAAI,WAAW,MAAM;AACrB,QAAI,WAAW,MAAM;AACrB,QAAI,QAAQ,MAAM;AAClB,QAAI,WAAW,MAAM;AACrB,QAAI,WAAW,MAAM;AACrB,QAAI,aAAa,MAAM;AACvB,QAAI,aAAa,MAAM;AACvB,QAAI,aAAa,MAAM;AACvB,QAAI,aAAa,MAAM;AAEvB,QAAI,YAAY,OAAO;AAEvB,QAAI,WAAW;AAAA,MACb;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,IACtC;AAEA,aAAS,SAAS;AAChB,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,OAAO;AAEpB,gBAAU,KAAK,IAAI;AACnB,WAAK,IAAI;AAAA,QACP;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,MAAW;AACzB,WAAK,IAAI;AACT,WAAK,IAAI,IAAI,MAAM,GAAG;AAAA,IACxB;AACA,UAAM,SAAS,QAAQ,SAAS;AAChC,IAAAA,QAAO,UAAU;AAEjB,WAAO,YAAY;AACnB,WAAO,UAAU;AACjB,WAAO,eAAe;AACtB,WAAO,YAAY;AAEnB,WAAO,UAAU,gBAAgB,SAAS,cAAc,KAAK,OAAO;AAClE,UAAI,IAAI,KAAK;AAGb,eAAS,IAAI,GAAG,IAAI,IAAI;AACtB,UAAE,CAAC,IAAI,IAAI,QAAQ,CAAC;AACtB,aAAO,IAAI,EAAE,QAAQ,KAAK,GAAG;AAC3B,YAAI,QAAQ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,YAAI,QAAQ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,YAAI,QAAQ,EAAE,IAAI,EAAE;AACpB,YAAI,QAAQ,EAAE,IAAI,EAAE;AACpB,YAAI,QAAQ,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1C,YAAI,QAAQ,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1C,YAAI,QAAQ,EAAE,IAAI,EAAE;AACpB,YAAI,QAAQ,EAAE,IAAI,EAAE;AAEpB,UAAE,CAAC,IAAI;AAAA,UACL;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,QAAK;AACd,UAAE,IAAI,CAAC,IAAI;AAAA,UACT;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,QAAK;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,UAAU,UAAU,SAAS,QAAQ,KAAK,OAAO;AACtD,WAAK,cAAc,KAAK,KAAK;AAE7B,UAAI,IAAI,KAAK;AAEb,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,CAAC;AACjB,UAAI,KAAK,KAAK,EAAE,EAAE;AAClB,UAAI,KAAK,KAAK,EAAE,EAAE;AAClB,UAAI,KAAK,KAAK,EAAE,EAAE;AAClB,UAAI,KAAK,KAAK,EAAE,EAAE;AAClB,UAAI,KAAK,KAAK,EAAE,EAAE;AAClB,UAAI,KAAK,KAAK,EAAE,EAAE;AAElB,aAAO,KAAK,EAAE,WAAW,EAAE,MAAM;AACjC,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GAAG;AACpC,YAAI,QAAQ;AACZ,YAAI,QAAQ;AACZ,YAAI,QAAQ,UAAU,IAAI,EAAE;AAC5B,YAAI,QAAQ,UAAU,IAAI,EAAE;AAC5B,YAAI,QAAQ,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC1C,YAAI,QAAQ,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAC1C,YAAI,QAAQ,KAAK,EAAE,CAAC;AACpB,YAAI,QAAQ,KAAK,EAAE,IAAI,CAAC;AACxB,YAAI,QAAQ,EAAE,CAAC;AACf,YAAI,QAAQ,EAAE,IAAI,CAAC;AAEnB,YAAI,QAAQ;AAAA,UACV;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,QAAK;AACd,YAAI,QAAQ;AAAA,UACV;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,UACP;AAAA,UAAO;AAAA,QAAK;AAEd,gBAAQ,UAAU,IAAI,EAAE;AACxB,gBAAQ,UAAU,IAAI,EAAE;AACxB,gBAAQ,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACvC,gBAAQ,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAEvC,YAAI,QAAQ,SAAS,OAAO,OAAO,OAAO,KAAK;AAC/C,YAAI,QAAQ,SAAS,OAAO,OAAO,OAAO,KAAK;AAE/C,aAAK;AACL,aAAK;AAEL,aAAK;AACL,aAAK;AAEL,aAAK;AACL,aAAK;AAEL,aAAK,SAAS,IAAI,IAAI,OAAO,KAAK;AAClC,aAAK,SAAS,IAAI,IAAI,OAAO,KAAK;AAElC,aAAK;AACL,aAAK;AAEL,aAAK;AACL,aAAK;AAEL,aAAK;AACL,aAAK;AAEL,aAAK,SAAS,OAAO,OAAO,OAAO,KAAK;AACxC,aAAK,SAAS,OAAO,OAAO,OAAO,KAAK;AAAA,MAC1C;AAEA,YAAM,KAAK,GAAG,GAAG,IAAI,EAAE;AACvB,YAAM,KAAK,GAAG,GAAG,IAAI,EAAE;AACvB,YAAM,KAAK,GAAG,GAAG,IAAI,EAAE;AACvB,YAAM,KAAK,GAAG,GAAG,IAAI,EAAE;AACvB,YAAM,KAAK,GAAG,GAAG,IAAI,EAAE;AACvB,YAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,YAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,YAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAAA,IAC1B;AAEA,WAAO,UAAU,UAAU,SAAS,OAAO,KAAK;AAC9C,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA;AAElC,eAAO,MAAM,QAAQ,KAAK,GAAG,KAAK;AAAA,IACtC;AAEA,aAAS,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI;AACnC,UAAI,IAAK,KAAK,KAAQ,CAAC,KAAM;AAC7B,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,QAAQ,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACvC,UAAI,IAAK,KAAK,KAAQ,CAAC,KAAM;AAC7B,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI;AACpC,UAAI,IAAK,KAAK,KAAO,KAAK,KAAO,KAAK;AACtC,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AACxC,UAAI,IAAK,KAAK,KAAO,KAAK,KAAO,KAAK;AACtC,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAE/B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAE/B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAE/B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAE/B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,SAAS,IAAI,IAAI,CAAC;AAE9B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,UAAU,IAAI,IAAI,CAAC;AAC/B,UAAI,QAAQ,SAAS,IAAI,IAAI,CAAC;AAE9B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,SAAS,IAAI,IAAI,CAAC;AAE9B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAEA,aAAS,UAAU,IAAI,IAAI;AACzB,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,UAAU,IAAI,IAAI,EAAE;AAChC,UAAI,QAAQ,SAAS,IAAI,IAAI,CAAC;AAE9B,UAAI,IAAI,QAAQ,QAAQ;AACxB,UAAI,IAAI;AACN,aAAK;AACP,aAAO;AAAA,IACT;AAAA;AAAA;;;ACzUA,IAAAC,aAAA;AAAA,6CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AAEZ,QAAI,SAAS;AAEb,aAAS,SAAS;AAChB,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,OAAO;AAEpB,aAAO,KAAK,IAAI;AAChB,WAAK,IAAI;AAAA,QACP;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,QACZ;AAAA,QAAY;AAAA,MAAW;AAAA,IAC3B;AACA,UAAM,SAAS,QAAQ,MAAM;AAC7B,IAAAA,QAAO,UAAU;AAEjB,WAAO,YAAY;AACnB,WAAO,UAAU;AACjB,WAAO,eAAe;AACtB,WAAO,YAAY;AAEnB,WAAO,UAAU,UAAU,SAAS,OAAO,KAAK;AAC9C,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK;AAAA;AAE/C,eAAO,MAAM,QAAQ,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK;AAAA,IACnD;AAAA;AAAA;;;AClCA;AAAA,yCAAAC,UAAA;AAAA;AAEA,IAAAA,SAAQ,OAAO;AACf,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,SAAS;AACjB,IAAAA,SAAQ,SAAS;AAAA;AAAA;;;ACNjB;AAAA,4CAAAC,UAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AAEb,QAAI,SAAS,MAAM;AACnB,QAAI,QAAQ,MAAM;AAClB,QAAI,UAAU,MAAM;AACpB,QAAI,UAAU,MAAM;AACpB,QAAI,YAAY,OAAO;AAEvB,aAAS,YAAY;AACnB,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,UAAU;AAEvB,gBAAU,KAAK,IAAI;AAEnB,WAAK,IAAI,CAAE,YAAY,YAAY,YAAY,WAAY,UAAW;AACtE,WAAK,SAAS;AAAA,IAChB;AACA,UAAM,SAAS,WAAW,SAAS;AACnC,IAAAA,SAAQ,YAAY;AAEpB,cAAU,YAAY;AACtB,cAAU,UAAU;AACpB,cAAU,eAAe;AACzB,cAAU,YAAY;AAEtB,cAAU,UAAU,UAAU,SAAS,OAAO,KAAK,OAAO;AACxD,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,IAAI,KAAK,EAAE,CAAC;AAChB,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AACT,UAAI,KAAK;AACT,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAI,IAAI;AAAA,UACN;AAAA,YACE,QAAQ,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;AAAA,YACjD,EAAE,CAAC;AAAA,UAAC;AAAA,UACN;AAAA,QAAC;AACH,YAAI;AACJ,YAAI;AACJ,YAAI,OAAO,GAAG,EAAE;AAChB,YAAI;AACJ,YAAI;AACJ,YAAI;AAAA,UACF;AAAA,YACE,QAAQ,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC;AAAA,YAC5D,GAAG,CAAC;AAAA,UAAC;AAAA,UACP;AAAA,QAAE;AACJ,aAAK;AACL,aAAK;AACL,aAAK,OAAO,IAAI,EAAE;AAClB,aAAK;AACL,aAAK;AAAA,MACP;AACA,UAAI,QAAQ,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AAC5B,WAAK,EAAE,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AACpC,WAAK,EAAE,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AACpC,WAAK,EAAE,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AACpC,WAAK,EAAE,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE;AACpC,WAAK,EAAE,CAAC,IAAI;AAAA,IACd;AAEA,cAAU,UAAU,UAAU,SAAS,OAAO,KAAK;AACjD,UAAI,QAAQ;AACV,eAAO,MAAM,QAAQ,KAAK,GAAG,QAAQ;AAAA;AAErC,eAAO,MAAM,QAAQ,KAAK,GAAG,QAAQ;AAAA,IACzC;AAEA,aAAS,EAAE,GAAG,GAAG,GAAG,GAAG;AACrB,UAAI,KAAK;AACP,eAAO,IAAI,IAAI;AAAA,eACR,KAAK;AACZ,eAAQ,IAAI,IAAO,CAAC,IAAK;AAAA,eAClB,KAAK;AACZ,gBAAQ,IAAK,CAAC,KAAM;AAAA,eACb,KAAK;AACZ,eAAQ,IAAI,IAAM,IAAK,CAAC;AAAA;AAExB,eAAO,KAAK,IAAK,CAAC;AAAA,IACtB;AAEA,aAAS,EAAE,GAAG;AACZ,UAAI,KAAK;AACP,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA;AAEP,eAAO;AAAA,IACX;AAEA,aAAS,GAAG,GAAG;AACb,UAAI,KAAK;AACP,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA,eACA,KAAK;AACZ,eAAO;AAAA;AAEP,eAAO;AAAA,IACX;AAEA,QAAI,IAAI;AAAA,MACN;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAClD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MACnD;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAClD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MACnD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,IACpD;AAEA,QAAI,KAAK;AAAA,MACP;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAClD;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MACnD;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAClD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAClD;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,IACpD;AAEA,QAAI,IAAI;AAAA,MACN;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MACrD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MACpD;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MACrD;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MACpD;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,IACvD;AAEA,QAAI,KAAK;AAAA,MACP;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACrD;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MACpD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MACrD;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MACrD;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,IACtD;AAAA;AAAA;;;ACjJA,IAAAC,gBAAA;AAAA,0CAAAC,UAAAC,SAAA;AAAA;AAEA,QAAI,QAAQ;AACZ,QAAI,SAAS;AAEb,aAAS,KAAK,MAAM,KAAK,KAAK;AAC5B,UAAI,EAAE,gBAAgB;AACpB,eAAO,IAAI,KAAK,MAAM,KAAK,GAAG;AAChC,WAAK,OAAO;AACZ,WAAK,YAAY,KAAK,YAAY;AAClC,WAAK,UAAU,KAAK,UAAU;AAC9B,WAAK,QAAQ;AACb,WAAK,QAAQ;AAEb,WAAK,MAAM,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,IACpC;AACA,IAAAA,QAAO,UAAU;AAEjB,SAAK,UAAU,QAAQ,SAAS,KAAK,KAAK;AAExC,UAAI,IAAI,SAAS,KAAK;AACpB,cAAM,IAAI,KAAK,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO;AAC3C,aAAO,IAAI,UAAU,KAAK,SAAS;AAGnC,eAAS,IAAI,IAAI,QAAQ,IAAI,KAAK,WAAW;AAC3C,YAAI,KAAK,CAAC;AAEZ,WAAK,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC1B,YAAI,CAAC,KAAK;AACZ,WAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,OAAO,GAAG;AAGvC,WAAK,IAAI,GAAG,IAAI,IAAI,QAAQ;AAC1B,YAAI,CAAC,KAAK;AACZ,WAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,OAAO,GAAG;AAAA,IACzC;AAEA,SAAK,UAAU,SAAS,SAAS,OAAO,KAAK,KAAK;AAChD,WAAK,MAAM,OAAO,KAAK,GAAG;AAC1B,aAAO;AAAA,IACT;AAEA,SAAK,UAAU,SAAS,SAAS,OAAO,KAAK;AAC3C,WAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC;AACrC,aAAO,KAAK,MAAM,OAAO,GAAG;AAAA,IAC9B;AAAA;AAAA;;;AC9CA,IAAAC,gBAAA;AAAA,qCAAAC,UAAA;AAAA,QAAI,OAAOA;AAEX,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,MAAM;AACX,SAAK,SAAS;AACd,SAAK,OAAO;AAGZ,SAAK,OAAO,KAAK,IAAI;AACrB,SAAK,SAAS,KAAK,IAAI;AACvB,SAAK,SAAS,KAAK,IAAI;AACvB,SAAK,SAAS,KAAK,IAAI;AACvB,SAAK,SAAS,KAAK,IAAI;AACvB,SAAK,YAAY,KAAK,OAAO;AAAA;AAAA;;;ACd7B,IAAAC,qBAAA;AAAA,gEAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU;AAAA,MACf,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,UACN;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK;AAAA,QACH,KAAK;AAAA,QACL,QAAQ;AAAA,UACN;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,UACA;AAAA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A,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAC3E;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MACzE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC5E;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAC1E;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAG;AAAA,MAC1E;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAA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A,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAA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AK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA,UACL,MAAK;AAAA;AAAA,UAEL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,KAAK,SAAS,QAAQ;AACpB,cAAI,YAAY,OAAO,YAAY,GAAG;AACtC,cAAI,aAAa,KAAK,aAAc,OAAO,SAAO,GAAI;AACpD,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,OAAO,YAAY,KAAK,YAAU,CAAC;AACnD,cAAI,aAAa,KAAK,aAAc,YAAU,GAAI;AAChD,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,IAAI,KAAK,OAAO,MAAM,YAAU,CAAC,CAAC;AAChD,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,iBAAO,QAAQ,QAAQ,MAAM,OAAO,MAAM,YAAU,GAAG,SAAS,IAAI,GAAG,KAAK;AAAA,QAC9E;AAAA,QACA,IAAI,SAAS,QAAQ;AACnB,cAAI,YAAY,OAAO,YAAY,GAAG;AACtC,cAAI,aAAa,KAAK,aAAc,OAAO,SAAO,GAAI;AACpD,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,OAAO,YAAY,KAAK,YAAU,CAAC;AACnD,cAAI,aAAa,GAAG;AAClB,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,IAAI,KAAK,OAAO,MAAM,YAAU,CAAC,CAAC;AAChD,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,iBAAO,QAAQ,QAAQ,MAAM,OAAO,MAAM,GAAG,SAAS,IAAI,GAAG,KAAK;AAAA,QACpE;AAAA,QACA,KAAK,SAAS,QAAQ;AACpB,cAAI,YAAY,OAAO,YAAY,GAAG;AACtC,cAAI,aAAa,KAAK,aAAc,OAAO,SAAO,GAAI;AACpD,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,OAAO,YAAY,KAAK,YAAU,CAAC;AACnD,cAAI,aAAa,KAAK,aAAc,YAAU,GAAI;AAChD,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,IAAI,KAAK,OAAO,MAAM,YAAU,CAAC,CAAC;AAChD,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,QAAQ,MAAM,OAAO,MAAM,YAAU,GAAG,SAAS,IAAI,GAAG,IAAI,GAAG;AACzE,mBAAO;AAAA,UACT;AACA,iBAAO,OAAO,MAAM,YAAU,CAAC;AAAA,QACjC;AAAA,QACA,YAAY,WAAU;AACpB,cAAI,KAAK,uBAAuB,MAAM;AACpC,iBAAK,qBAAqB;AAAA,UAC5B;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACpPD;AAAA,kCAAAE,UAAAC,SAAA;AAYA,KAAC,SAAU,MAAM,SAAS;AACxB;AAEA,UAAI,OAAOA,YAAW,YAAYA,QAAO,SAAS;AAEhD,QAAAA,QAAO,UAAU,QAAQ,oBAAuB,gBAAmB,4BAA+B;AAAA,MACpG,WAAW,OAAO,WAAW,cAAc,OAAO,KAAK;AAErD,eAAO,CAAC,cAAc,UAAU,sBAAsB,GAAG,OAAO;AAAA,MAClE,OAAO;AAEL,aAAK,MAAM,QAAQ,KAAK,UAAU,KAAK,MAAM,KAAK,oBAAoB,IAAI;AAAA,MAC5E;AAAA,IACF,GAAED,UAAM,SAAU,UAAU,MAAM,KAAK,MAAM;AAC3C;AAMA,UAAI,OAAO,QAAQ,KAAK;AAExB,eAAS,IAAI,KAAK,MAAM;AACtB,YAAI,eAAe,UAAU,UAAU;AACvC,YAAI,gBAAgB,UAAU,UAAU;AAGxC,YAAI,EAAE,gBAAgB,MAAM;AAC1B,cAAI,cAAc;AAChB,gBAAI,eAAe;AACjB,qBAAO,IAAI,IAAI,KAAK,IAAI;AAAA,YAC1B;AAEA,mBAAO,IAAI,IAAI,GAAG;AAAA,UACpB;AAEA,iBAAO,IAAI,IAAI;AAAA,QACjB;AAEA,YAAI,QAAQ,QAAW;AACrB,cAAI,cAAc;AAChB,kBAAM,IAAI,UAAU,2CAA2C;AAAA,UACjE;AAEA,cAAI,OAAO,aAAa,aAAa;AACnC,kBAAM,SAAS,OAAO;AAAA,UACxB,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,YAAI,QAAQ,MAAM;AAChB,cAAI,cAAc;AAChB,kBAAM,IAAI,UAAU,sCAAsC;AAAA,UAC5D;AAAA,QACF;AAEA,aAAK,KAAK,GAAG;AAGb,YAAI,SAAS,QAAW;AACtB,iBAAO,KAAK,WAAW,IAAI;AAAA,QAC7B;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,UAAU,OAAO;AACxB,eAAO,WAAW,KAAK,KAAK;AAAA,MAC9B;AAEA,UAAI,UAAU;AAEd,UAAI,IAAI,IAAI;AACZ,UAAI,SAAS,OAAO,UAAU;AAE9B,eAAS,YAAY,QAAQ;AAE3B,eAAO,OAAO,QAAQ,8BAA8B,MAAM;AAAA,MAC5D;AAEA,eAAS,QAAQ,OAAO;AAEtB,YAAI,UAAU,QAAW;AACvB,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAA,MAClE;AAEA,eAAS,QAAQ,KAAK;AACpB,eAAO,QAAQ,GAAG,MAAM;AAAA,MAC1B;AAEA,eAAS,kBAAkB,MAAM,OAAO;AACtC,YAAI,SAAS,CAAC;AACd,YAAI,GAAG;AAEP,YAAI,QAAQ,KAAK,MAAM,UAAU;AAC/B,mBAAS;AAAA,QACX,WAAW,QAAQ,KAAK,GAAG;AACzB,eAAK,IAAI,GAAG,SAAS,MAAM,QAAQ,IAAI,QAAQ,KAAK;AAClD,mBAAO,MAAM,CAAC,CAAC,IAAI;AAAA,UACrB;AAAA,QACF,OAAO;AACL,iBAAO,KAAK,IAAI;AAAA,QAClB;AAEA,aAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK;AAEjD,cAAI,SAAS,UAAU,OAAO,KAAK,CAAC,CAAC,MAAM,UACtC,CAAC,UAAU,MAAM,KAAK,KAAK,CAAC,CAAC;AAElC,cAAI,QAAQ;AACV,iBAAK,OAAO,GAAG,CAAC;AAChB;AACA;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,cAAc,MAAM,OAAO;AAClC,YAAI,GAAG;AAGP,YAAI,QAAQ,KAAK,GAAG;AAElB,eAAK,IAAI,GAAG,SAAS,MAAM,QAAQ,IAAI,QAAQ,KAAK;AAClD,gBAAI,CAAC,cAAc,MAAM,MAAM,CAAC,CAAC,GAAG;AAClC,qBAAO;AAAA,YACT;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,YAAI,QAAQ,QAAQ,KAAK;AACzB,aAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK;AACjD,cAAI,UAAU,UAAU;AACtB,gBAAI,OAAO,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG;AACvD,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,KAAK,CAAC,MAAM,OAAO;AAC5B,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,YAAY,KAAK,KAAK;AAC7B,YAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,GAAG;AAClC,iBAAO;AAAA,QACT;AAGA,YAAI,IAAI,WAAW,IAAI,QAAQ;AAC7B,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK;AACT,YAAI,KAAK;AAET,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AAC1C,cAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;AACrB,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,YAAY,MAAM;AACzB,YAAI,kBAAkB;AACtB,eAAO,KAAK,QAAQ,iBAAiB,EAAE;AAAA,MACzC;AAEA,UAAI,SAAS,WAAW;AACtB,eAAO;AAAA,UACL,UAAU;AAAA,UACV,UAAU;AAAA,UACV,UAAU;AAAA,UACV,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM;AAAA,UACN,MAAM;AAAA,UACN,OAAO;AAAA,UACP,UAAU;AAAA;AAAA,UAEV,wBAAwB,IAAI;AAAA,UAC5B,0BAA0B,IAAI;AAAA,UAC9B,kBAAkB,IAAI;AAAA,QACxB;AAAA,MACF;AAIA,UAAI,yBAAyB;AAE7B,UAAI,2BAA2B;AAE/B,UAAI,mBAAmB;AAEvB,UAAI,sBAAsB;AAC1B,UAAI,iBAAiB;AACrB,UAAI,sBAAsB;AAE1B,UAAI,iBAAiB;AAIrB,UAAI,iBAAiB;AAKrB,UAAI,sBAAsB;AAC1B,UAAI,UAAU;AAAA;AAAA,QAEZ,OAAO;AAAA;AAAA,QAEP,KAAK;AAAA;AAAA,QAEL,MAAM;AAAA;AAAA,QAEN,QAAQ;AAAA,MACV;AACA,UAAI,gCAAgC;AAEpC,UAAI,uBAAuB;AAG3B,UAAI,eAAe;AAAA,QACjB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,KAAK;AAAA,MACP;AAEA,UAAI,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AAKA,UAAI,8BAA8B;AAElC,UAAI,gBAAgB;AAAA,QAClB,KAAK;AAAA,QACL,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AACA,UAAI,kBAAkB,SAAS,MAAM;AACnC,YAAI,CAAC,QAAQ,CAAC,KAAK,UAAU;AAC3B,iBAAO;AAAA,QACT;AAEA,YAAI,WAAW,KAAK,SAAS,YAAY;AAEzC,YAAI,aAAa,WAAW,KAAK,SAAS,SAAS;AACjD,iBAAO;AAAA,QACT;AAEA,eAAO,IAAI,cAAc,QAAQ;AAAA,MACnC;AAEA,eAAS,uBAAuB,OAAO;AAErC,eAAO,OAAO,KAAK;AAAA,MACrB;AAGA,eAAS,yBAAyB,QAAQ;AAExC,eAAO,mBAAmB,MAAM,EAC7B,QAAQ,YAAY,sBAAsB,EAC1C,QAAQ,OAAO,KAAK;AAAA,MACzB;AACA,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,UAAU,WAAW;AACvB,YAAI,SAAS;AACb,YAAI,SAAS;AAAA,MACf;AACA,UAAI,UAAU,WAAW;AACvB,YAAI,SAAS;AACb,YAAI,SAAS;AAAA,MACf;AACA,UAAI,aAAa;AAAA,QACf,UAAU;AAAA,UACR,QAAQ;AAAA;AAAA;AAAA,YAGN,YAAY;AAAA,YACZ,KAAK;AAAA;AAAA,cAEH,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,YACN,YAAY;AAAA,YACZ,KAAK;AAAA,cACH,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR,QAAQ;AAAA;AAAA;AAAA,YAGN,YAAY;AAAA,YACZ,KAAK;AAAA;AAAA,cAEH,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA;AAAA,cAEP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQP,QAAQ;AAAA,YACN,YAAY;AAAA,YACZ,KAAK;AAAA,cACH,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,cACP,OAAO;AAAA,YACT;AAAA,UACF;AAAA;AAAA;AAAA,UAGA,QAAQ;AAAA,YACN,YAAY;AAAA,YACZ,KAAK;AAAA,cACH,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,cAAc,SAAS,QAAQ,kBAAkB;AACnD,YAAI,UAAU,IAAI,OAAO,SAAS,EAAE;AACpC,YAAI,qBAAqB,QAAW;AAClC,6BAAmB,IAAI;AAAA,QACzB;AAEA,eAAO,mBAAmB,QAAQ,QAAQ,QAAQ,GAAG,IAAI;AAAA,MAC3D;AACA,UAAI,cAAc,SAAS,QAAQ,kBAAkB;AACnD,kBAAU;AACV,YAAI,qBAAqB,QAAW;AAClC,6BAAmB,IAAI;AAAA,QACzB;AAEA,YAAI;AACF,iBAAO,IAAI,OAAO,mBAAmB,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM;AAAA,QAC5E,SAAQ,GAAG;AAKT,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,SAAS,EAAC,UAAS,UAAU,UAAS,SAAQ;AAClD,UAAI;AACJ,UAAI,mBAAmB,SAAS,QAAQE,QAAO;AAC7C,eAAO,SAAS,QAAQ;AACtB,cAAI;AACF,mBAAO,IAAIA,MAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,IAAI,WAAW,MAAM,EAAEA,MAAK,EAAE,YAAY,SAAS,GAAG;AAC3F,qBAAO,IAAI,WAAW,MAAM,EAAEA,MAAK,EAAE,IAAI,CAAC;AAAA,YAC5C,CAAC;AAAA,UACH,SAAS,GAAG;AAKV,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,WAAK,SAAS,QAAQ;AACpB,YAAI,QAAQ,aAAa,IAAI,iBAAiB,YAAY,OAAO,KAAK,CAAC;AACvE,YAAI,QAAQ,gBAAgB,IAAI,iBAAiB,WAAW,OAAO,KAAK,CAAC;AAAA,MAC3E;AAEA,UAAI,gCAAgC,SAAS,MAAM,iBAAiB,sBAAsB;AACxF,eAAO,SAAS,QAAQ;AAKtB,cAAI;AACJ,cAAI,CAAC,sBAAsB;AACzB,+BAAmB,IAAI,eAAe;AAAA,UACxC,OAAO;AACL,+BAAmB,SAASC,SAAQ;AAClC,qBAAO,IAAI,eAAe,EAAE,IAAI,oBAAoB,EAAEA,OAAM,CAAC;AAAA,YAC/D;AAAA,UACF;AAEA,cAAI,YAAY,SAAS,IAAI,MAAM,IAAI;AAEvC,mBAAS,IAAI,GAAG,SAAS,SAAS,QAAQ,IAAI,QAAQ,KAAK;AACzD,qBAAS,CAAC,IAAI,iBAAiB,SAAS,CAAC,CAAC;AAAA,UAC5C;AAEA,iBAAO,SAAS,KAAK,IAAI;AAAA,QAC3B;AAAA,MACF;AAGA,UAAI,aAAa,8BAA8B,KAAK,mBAAmB;AACvE,UAAI,gBAAgB,8BAA8B,KAAK,sBAAsB;AAC7E,UAAI,aAAa,8BAA8B,KAAK,qBAAqB,QAAQ;AACjF,UAAI,gBAAgB,8BAA8B,KAAK,wBAAwB,QAAQ;AAEvF,UAAI,iBAAiB,iBAAiB,YAAY,QAAQ;AAE1D,UAAI,QAAQ,SAAS,QAAQ,OAAO;AAClC,YAAI;AACJ,YAAI,CAAC,OAAO;AACV,kBAAQ;AAAA,YACN,wBAAwB,IAAI;AAAA,UAC9B;AAAA,QACF;AAEA,iBAAS,OAAO,QAAQ,IAAI,+BAA+B,EAAE;AAE7D,iBAAS,OAAO,QAAQ,IAAI,sBAAsB,EAAE;AAKpD,cAAM,OAAO,QAAQ,GAAG;AACxB,YAAI,MAAM,IAAI;AAEZ,gBAAM,WAAW,OAAO,UAAU,MAAM,CAAC,KAAK;AAC9C,mBAAS,OAAO,UAAU,GAAG,GAAG;AAAA,QAClC;AAGA,cAAM,OAAO,QAAQ,GAAG;AACxB,YAAI,MAAM,IAAI;AAEZ,gBAAM,QAAQ,OAAO,UAAU,MAAM,CAAC,KAAK;AAC3C,mBAAS,OAAO,UAAU,GAAG,GAAG;AAAA,QAClC;AAGA,iBAAS,OAAO,QAAQ,gCAAgC,OAAO;AAE/D,iBAAS,OAAO,QAAQ,eAAe,IAAI;AAG3C,YAAI,OAAO,UAAU,GAAG,CAAC,MAAM,MAAM;AAEnC,gBAAM,WAAW;AACjB,mBAAS,OAAO,UAAU,CAAC;AAE3B,mBAAS,IAAI,eAAe,QAAQ,KAAK;AAAA,QAC3C,OAAO;AACL,gBAAM,OAAO,QAAQ,GAAG;AACxB,cAAI,MAAM,IAAI;AACZ,kBAAM,WAAW,OAAO,UAAU,GAAG,GAAG,KAAK;AAC7C,gBAAI,MAAM,YAAY,CAAC,MAAM,SAAS,MAAM,IAAI,mBAAmB,GAAG;AAEpE,oBAAM,WAAW;AAAA,YACnB,WAAW,OAAO,UAAU,MAAM,GAAG,MAAM,CAAC,EAAE,QAAQ,OAAO,GAAG,MAAM,MAAM;AAC1E,uBAAS,OAAO,UAAU,MAAM,CAAC;AAGjC,uBAAS,IAAI,eAAe,QAAQ,KAAK;AAAA,YAC3C,OAAO;AACL,uBAAS,OAAO,UAAU,MAAM,CAAC;AACjC,oBAAM,MAAM;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAGA,cAAM,OAAO;AAGb,eAAO;AAAA,MACT;AACA,UAAI,YAAY,SAAS,QAAQ,OAAO;AACtC,YAAI,CAAC,QAAQ;AACX,mBAAS;AAAA,QACX;AAOA,iBAAS,OAAO,QAAQ,OAAO,GAAG;AAGlC,YAAI,MAAM,OAAO,QAAQ,GAAG;AAC5B,YAAI;AACJ,YAAI;AAEJ,YAAI,QAAQ,IAAI;AACd,gBAAM,OAAO;AAAA,QACf;AAEA,YAAI,OAAO,OAAO,CAAC,MAAM,KAAK;AAI5B,uBAAa,OAAO,QAAQ,GAAG;AAC/B,gBAAM,WAAW,OAAO,UAAU,GAAG,UAAU,KAAK;AACpD,gBAAM,OAAO,OAAO,UAAU,aAAa,GAAG,GAAG,KAAK;AACtD,cAAI,MAAM,SAAS,KAAK;AACtB,kBAAM,OAAO;AAAA,UACf;AAAA,QACF,OAAO;AACL,cAAI,aAAa,OAAO,QAAQ,GAAG;AACnC,cAAI,aAAa,OAAO,QAAQ,GAAG;AACnC,cAAI,YAAY,OAAO,QAAQ,KAAK,aAAa,CAAC;AAClD,cAAI,cAAc,OAAO,eAAe,MAAM,YAAY,aAAa;AAGrE,kBAAM,WAAW,OAAO,UAAU,GAAG,GAAG,KAAK;AAC7C,kBAAM,OAAO;AAAA,UACf,OAAO;AACL,gBAAI,OAAO,UAAU,GAAG,GAAG,EAAE,MAAM,GAAG;AACtC,kBAAM,WAAW,EAAE,CAAC,KAAK;AACzB,kBAAM,OAAO,EAAE,CAAC,KAAK;AAAA,UACvB;AAAA,QACF;AAEA,YAAI,MAAM,YAAY,OAAO,UAAU,GAAG,EAAE,OAAO,CAAC,MAAM,KAAK;AAC7D;AACA,mBAAS,MAAM;AAAA,QACjB;AAEA,YAAI,MAAM,wBAAwB;AAChC,cAAI,oBAAoB,MAAM,UAAU,MAAM,QAAQ;AAAA,QACxD;AAEA,YAAI,MAAM,MAAM;AACd,cAAI,gBAAgB,MAAM,IAAI;AAAA,QAChC;AAEA,eAAO,OAAO,UAAU,GAAG,KAAK;AAAA,MAClC;AACA,UAAI,iBAAiB,SAAS,QAAQ,OAAO;AAC3C,iBAAS,IAAI,cAAc,QAAQ,KAAK;AACxC,eAAO,IAAI,UAAU,QAAQ,KAAK;AAAA,MACpC;AACA,UAAI,gBAAgB,SAAS,QAAQ,OAAO;AAE1C,YAAI,UAAU;AACd,YAAI,iBAAiB,OAAO,QAAQ,IAAI;AACxC,YAAI,mBAAmB,IAAI;AACzB,mBAAS,OAAO,QAAQ,OAAO,GAAG;AAAA,QACpC;AACA,YAAI,aAAa,OAAO,QAAQ,GAAG;AACnC,YAAI,MAAM,OAAO,YAAY,KAAK,aAAa,KAAK,aAAa,OAAO,SAAS,CAAC;AAClF,YAAI;AAGJ,YAAI,MAAM,OAAO,eAAe,MAAM,MAAM,aAAa;AACvD,cAAI,OAAO,UAAU,GAAG,GAAG,EAAE,MAAM,GAAG;AACtC,gBAAM,WAAW,EAAE,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI;AAC3C,YAAE,MAAM;AACR,gBAAM,WAAW,EAAE,CAAC,IAAI,IAAI,OAAO,EAAE,KAAK,GAAG,CAAC,IAAI;AAClD,mBAAS,QAAQ,UAAU,MAAM,CAAC;AAAA,QACpC,OAAO;AACL,gBAAM,WAAW;AACjB,gBAAM,WAAW;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,UAAI,aAAa,SAAS,QAAQ,kBAAkB;AAClD,YAAI,CAAC,QAAQ;AACX,iBAAO,CAAC;AAAA,QACV;AAGA,iBAAS,OAAO,QAAQ,OAAO,GAAG,EAAE,QAAQ,eAAe,EAAE;AAE7D,YAAI,CAAC,QAAQ;AACX,iBAAO,CAAC;AAAA,QACV;AAEA,YAAI,QAAQ,CAAC;AACb,YAAI,SAAS,OAAO,MAAM,GAAG;AAC7B,YAAI,SAAS,OAAO;AACpB,YAAI,GAAG,MAAM;AAEb,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,cAAI,OAAO,CAAC,EAAE,MAAM,GAAG;AACvB,iBAAO,IAAI,YAAY,EAAE,MAAM,GAAG,gBAAgB;AAElD,kBAAQ,EAAE,SAAS,IAAI,YAAY,EAAE,KAAK,GAAG,GAAG,gBAAgB,IAAI;AAEpE,cAAI,SAAS,aAAa;AAExB;AAAA,UACF,WAAW,OAAO,KAAK,OAAO,IAAI,GAAG;AACnC,gBAAI,OAAO,MAAM,IAAI,MAAM,YAAY,MAAM,IAAI,MAAM,MAAM;AAC3D,oBAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAAA,YAC5B;AAEA,kBAAM,IAAI,EAAE,KAAK,KAAK;AAAA,UACxB,OAAO;AACL,kBAAM,IAAI,IAAI;AAAA,UAChB;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ,SAAS,OAAO;AAC1B,YAAI,IAAI;AACR,YAAI,sBAAsB;AAE1B,YAAI,MAAM,UAAU;AAClB,eAAK,MAAM,WAAW;AAAA,QACxB;AAEA,YAAI,CAAC,MAAM,QAAQ,KAAK,MAAM,WAAW;AACvC,eAAK;AACL,gCAAsB;AAAA,QACxB;AAEA,aAAM,IAAI,eAAe,KAAK,KAAK;AAEnC,YAAI,OAAO,MAAM,SAAS,UAAU;AAClC,cAAI,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,qBAAqB;AACvD,iBAAK;AAAA,UACP;AAEA,eAAK,MAAM;AAAA,QACb;AAEA,YAAI,OAAO,MAAM,UAAU,YAAY,MAAM,OAAO;AAClD,eAAK,MAAM,MAAM;AAAA,QACnB;AAEA,YAAI,OAAO,MAAM,aAAa,YAAY,MAAM,UAAU;AACxD,eAAK,MAAM,MAAM;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AACA,UAAI,YAAY,SAAS,OAAO;AAC9B,YAAI,IAAI;AAER,YAAI,CAAC,MAAM,UAAU;AACnB,iBAAO;AAAA,QACT,WAAW,IAAI,eAAe,KAAK,MAAM,QAAQ,GAAG;AAClD,eAAK,MAAM,MAAM,WAAW;AAAA,QAC9B,OAAO;AACL,eAAK,MAAM;AAAA,QACb;AAEA,YAAI,MAAM,MAAM;AACd,eAAK,MAAM,MAAM;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,UAAI,iBAAiB,SAAS,OAAO;AACnC,eAAO,IAAI,cAAc,KAAK,IAAI,IAAI,UAAU,KAAK;AAAA,MACvD;AACA,UAAI,gBAAgB,SAAS,OAAO;AAClC,YAAI,IAAI;AAER,YAAI,MAAM,UAAU;AAClB,eAAK,IAAI,OAAO,MAAM,QAAQ;AAAA,QAChC;AAEA,YAAI,MAAM,UAAU;AAClB,eAAK,MAAM,IAAI,OAAO,MAAM,QAAQ;AAAA,QACtC;AAEA,YAAI,GAAG;AACL,eAAK;AAAA,QACP;AAEA,eAAO;AAAA,MACT;AACA,UAAI,aAAa,SAAS,MAAM,0BAA0B,kBAAkB;AAO1E,YAAI,IAAI;AACR,YAAI,QAAQ,KAAK,GAAG;AACpB,aAAK,OAAO,MAAM;AAChB,cAAI,QAAQ,aAAa;AAEvB;AAAA,UACF,WAAW,OAAO,KAAK,MAAM,GAAG,GAAG;AACjC,gBAAI,QAAQ,KAAK,GAAG,CAAC,GAAG;AACtB,uBAAS,CAAC;AACV,mBAAK,IAAI,GAAG,SAAS,KAAK,GAAG,EAAE,QAAQ,IAAI,QAAQ,KAAK;AACtD,oBAAI,KAAK,GAAG,EAAE,CAAC,MAAM,UAAa,OAAO,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,QAAW;AACzE,uBAAK,MAAM,IAAI,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,GAAG,gBAAgB;AACtE,sBAAI,6BAA6B,MAAM;AACrC,2BAAO,KAAK,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI;AAAA,kBAC9B;AAAA,gBACF;AAAA,cACF;AAAA,YACF,WAAW,KAAK,GAAG,MAAM,QAAW;AAClC,mBAAK,MAAM,IAAI,oBAAoB,KAAK,KAAK,GAAG,GAAG,gBAAgB;AAAA,YACrE;AAAA,UACF;AAAA,QACF;AAEA,eAAO,EAAE,UAAU,CAAC;AAAA,MACtB;AACA,UAAI,sBAAsB,SAAS,MAAM,OAAO,kBAAkB;AAGhE,eAAO,IAAI,YAAY,MAAM,gBAAgB,KAAK,UAAU,OAAO,MAAM,IAAI,YAAY,OAAO,gBAAgB,IAAI;AAAA,MACtH;AAEA,UAAI,WAAW,SAAS,MAAM,MAAM,OAAO;AACzC,YAAI,OAAO,SAAS,UAAU;AAC5B,mBAAS,OAAO,MAAM;AACpB,gBAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,kBAAI,SAAS,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,YACnC;AAAA,UACF;AAAA,QACF,WAAW,OAAO,SAAS,UAAU;AACnC,cAAI,KAAK,IAAI,MAAM,QAAW;AAC5B,iBAAK,IAAI,IAAI;AACb;AAAA,UACF,WAAW,OAAO,KAAK,IAAI,MAAM,UAAU;AACzC,iBAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,UAC1B;AAEA,cAAI,CAAC,QAAQ,KAAK,GAAG;AACnB,oBAAQ,CAAC,KAAK;AAAA,UAChB;AAEA,eAAK,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,OAAO,KAAK;AAAA,QAC9C,OAAO;AACL,gBAAM,IAAI,UAAU,gEAAgE;AAAA,QACtF;AAAA,MACF;AAEA,UAAI,WAAW,SAAS,MAAM,MAAM,OAAO;AACzC,YAAI,OAAO,SAAS,UAAU;AAC5B,mBAAS,OAAO,MAAM;AACpB,gBAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,kBAAI,SAAS,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,YACnC;AAAA,UACF;AAAA,QACF,WAAW,OAAO,SAAS,UAAU;AACnC,eAAK,IAAI,IAAI,UAAU,SAAY,OAAO;AAAA,QAC5C,OAAO;AACL,gBAAM,IAAI,UAAU,gEAAgE;AAAA,QACtF;AAAA,MACF;AAEA,UAAI,cAAc,SAAS,MAAM,MAAM,OAAO;AAC5C,YAAI,GAAG,QAAQ;AAEf,YAAI,QAAQ,IAAI,GAAG;AACjB,eAAK,IAAI,GAAG,SAAS,KAAK,QAAQ,IAAI,QAAQ,KAAK;AACjD,iBAAK,KAAK,CAAC,CAAC,IAAI;AAAA,UAClB;AAAA,QACF,WAAW,QAAQ,IAAI,MAAM,UAAU;AACrC,eAAK,OAAO,MAAM;AAChB,gBAAI,KAAK,KAAK,GAAG,GAAG;AAClB,mBAAK,GAAG,IAAI;AAAA,YACd;AAAA,UACF;AAAA,QACF,WAAW,OAAO,SAAS,UAAU;AACnC,eAAK,OAAO,MAAM;AAChB,gBAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,kBAAI,YAAY,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,YACtC;AAAA,UACF;AAAA,QACF,WAAW,OAAO,SAAS,UAAU;AACnC,cAAI,UAAU,QAAW;AACvB,gBAAI,QAAQ,KAAK,MAAM,UAAU;AAC/B,kBAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG;AAClD,qBAAK,IAAI,IAAI;AAAA,cACf,OAAO;AACL,qBAAK,IAAI,IAAI,kBAAkB,KAAK,IAAI,GAAG,KAAK;AAAA,cAClD;AAAA,YACF,WAAW,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM,CAAC,QAAQ,KAAK,KAAK,MAAM,WAAW,IAAI;AAClF,mBAAK,IAAI,IAAI;AAAA,YACf,WAAW,QAAQ,KAAK,IAAI,CAAC,GAAG;AAC9B,mBAAK,IAAI,IAAI,kBAAkB,KAAK,IAAI,GAAG,KAAK;AAAA,YAClD;AAAA,UACF,OAAO;AACL,iBAAK,IAAI,IAAI;AAAA,UACf;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,UAAU,4EAA4E;AAAA,QAClG;AAAA,MACF;AACA,UAAI,WAAW,SAAS,MAAM,MAAM,OAAO,aAAa;AACtD,gBAAQ,QAAQ,IAAI,GAAG;AAAA,UACrB,KAAK;AAEH;AAAA,UAEF,KAAK;AACH,qBAAS,OAAO,MAAM;AACpB,kBAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,oBAAI,KAAK,KAAK,GAAG,MAAM,UAAU,UAAa,IAAI,SAAS,MAAM,KAAK,KAAK,IAAI;AAC7E,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UAET,KAAK;AACH,qBAAS,QAAQ,MAAM;AACrB,kBAAI,OAAO,KAAK,MAAM,IAAI,GAAG;AAC3B,oBAAI,CAAC,IAAI,SAAS,MAAM,MAAM,KAAK,IAAI,CAAC,GAAG;AACzC,yBAAO;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAEA,mBAAO;AAAA,UAET;AACE,kBAAM,IAAI,UAAU,qFAAqF;AAAA,QAC7G;AAEA,gBAAQ,QAAQ,KAAK,GAAG;AAAA,UACtB,KAAK;AAEH,mBAAO,QAAQ;AAAA;AAAA,UAEjB,KAAK;AAEH,gBAAI,SAAS,QAAQ,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;AACzE,mBAAO,UAAU;AAAA,UAEnB,KAAK;AAEH,mBAAO,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;AAAA,UAEvC,KAAK;AACH,gBAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;AACxB,qBAAO;AAAA,YACT;AAEA,gBAAI,KAAK,cAAc,gBAAgB;AACvC,mBAAO,GAAG,KAAK,IAAI,GAAG,KAAK;AAAA,UAE7B,KAAK;AACH,gBAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;AACxB,qBAAO,QAAQ,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,CAAC;AAAA,YACtD;AAEA,gBAAI,CAAC,aAAa;AAChB,qBAAO;AAAA,YACT;AAEA,mBAAO,cAAc,KAAK,IAAI,GAAG,KAAK;AAAA,UAExC,KAAK;AACH,oBAAQ,OAAO,KAAK;AAAA;AAAA,UAEtB,KAAK;AACH,gBAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;AACxB,qBAAO,KAAK,IAAI,MAAM;AAAA,YACxB;AAEA,gBAAI,CAAC,aAAa;AAChB,qBAAO;AAAA,YACT;AAEA,mBAAO,cAAc,KAAK,IAAI,GAAG,KAAK;AAAA,UAExC;AACE,kBAAM,IAAI,UAAU,oGAAoG;AAAA,QAC5H;AAAA,MACF;AAGA,UAAI,YAAY,WAAW;AACzB,YAAI,QAAQ,CAAC;AACb,YAAI,WAAW,CAAC;AAChB,YAAI,mBAAmB;AAEvB,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,cAAI,MAAM,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9B,gBAAM,KAAK,GAAG;AACd,cAAI,YAAY,IAAI,QAAQ;AAC5B,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,gBAAI,OAAO,UAAU,CAAC,MAAM,UAAU;AACpC,uBAAS,KAAK,UAAU,CAAC,CAAC;AAAA,YAC5B;AAEA,gBAAI,UAAU,CAAC,GAAG;AAChB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,SAAS,UAAU,CAAC,kBAAkB;AACzC,iBAAO,IAAI,IAAI,EAAE;AAAA,QACnB;AAEA,YAAI,MAAM,IAAI,IAAI,EAAE,EAAE,QAAQ,QAAQ;AAEtC,YAAI,MAAM,CAAC,EAAE,KAAK,MAAM,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,KAAK;AACjE,cAAI,KAAK,MAAM,IAAI,KAAK,CAAC;AAAA,QAC3B;AAEA,eAAO,IAAI,UAAU;AAAA,MACvB;AAEA,UAAI,aAAa,SAAS,KAAK,KAAK;AAClC,YAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM;AAC5C,YAAI;AAGJ,aAAK,MAAM,GAAG,MAAM,QAAQ,OAAO;AACjC,cAAI,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,GAAG;AACvC;AACA;AAAA,UACF;AAAA,QACF;AAEA,YAAI,MAAM,GAAG;AACX,iBAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,MAAM,MAAM;AAAA,QAC1E;AAGA,YAAI,IAAI,OAAO,GAAG,MAAM,OAAO,IAAI,OAAO,GAAG,MAAM,KAAK;AACtD,gBAAM,IAAI,UAAU,GAAG,GAAG,EAAE,YAAY,GAAG;AAAA,QAC7C;AAEA,eAAO,IAAI,UAAU,GAAG,MAAM,CAAC;AAAA,MACjC;AAEA,UAAI,eAAe,SAAS,QAAQ,UAAU,SAAS;AACrD,oBAAY,UAAU,CAAC;AACvB,YAAI,SAAS,QAAQ,SAAS,IAAI,QAAQ;AAC1C,YAAI,OAAO,QAAQ,OAAO,IAAI,QAAQ;AACtC,YAAI,QAAQ,QAAQ,QAAQ,IAAI,QAAQ;AACxC,YAAI,UAAU,QAAQ,UAAU,IAAI,QAAQ;AAC5C,YAAI,iBAAiB;AAErB,eAAO,YAAY;AACnB,eAAO,MAAM;AACX,cAAI,QAAQ,OAAO,KAAK,MAAM;AAC9B,cAAI,CAAC,OAAO;AACV;AAAA,UACF;AAEA,cAAI,QAAQ,MAAM;AAClB,cAAI,QAAQ,YAAY;AAEtB,gBAAI,gBAAgB,OAAO,MAAM,KAAK,IAAI,QAAQ,GAAG,CAAC,GAAG,KAAK;AAC9D,gBAAI,iBAAiB,eAAe,KAAK,aAAa,GAAG;AACvD;AAAA,YACF;AAAA,UACF;AAEA,cAAI,MAAM,QAAQ,OAAO,MAAM,KAAK,EAAE,OAAO,IAAI;AACjD,cAAI,QAAQ,OAAO,MAAM,OAAO,GAAG;AAEnC,cAAI,YAAY;AAChB,iBAAO,MAAM;AACX,gBAAI,cAAc,QAAQ,KAAK,KAAK;AACpC,gBAAI,CAAC,aAAa;AAChB;AAAA,YACF;AAEA,gBAAI,iBAAiB,YAAY,QAAQ,YAAY,CAAC,EAAE;AACxD,wBAAY,KAAK,IAAI,WAAW,cAAc;AAAA,UAChD;AAEA,cAAI,YAAY,IAAI;AAClB,oBAAQ,MAAM,MAAM,GAAG,SAAS,IAAI,MAAM,MAAM,SAAS,EAAE,QAAQ,OAAO,EAAE;AAAA,UAC9E,OAAO;AACL,oBAAQ,MAAM,QAAQ,OAAO,EAAE;AAAA,UACjC;AAEA,cAAI,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ;AAGnC;AAAA,UACF;AAEA,cAAI,QAAQ,UAAU,QAAQ,OAAO,KAAK,KAAK,GAAG;AAChD;AAAA,UACF;AAEA,gBAAM,QAAQ,MAAM;AACpB,cAAI,SAAS,SAAS,OAAO,OAAO,KAAK,MAAM;AAC/C,cAAI,WAAW,QAAW;AACxB,mBAAO,YAAY;AACnB;AAAA,UACF;AAEA,mBAAS,OAAO,MAAM;AACtB,mBAAS,OAAO,MAAM,GAAG,KAAK,IAAI,SAAS,OAAO,MAAM,GAAG;AAC3D,iBAAO,YAAY,QAAQ,OAAO;AAAA,QACpC;AAEA,eAAO,YAAY;AACnB,eAAO;AAAA,MACT;AAEA,UAAI,sBAAsB,SAAS,GAAG,UAAU;AAI9C,YAAI,cAAc,CAAC,CAAC;AACpB,YAAI,cAAc,CAAC,CAAC;AACpB,YAAI,sBAAsB;AAE1B,YAAI,aAAa;AACf,gCAAsB,cAAc,IAAI,eAAe,QAAQ;AAAA,QACjE;AAEA,YAAI,uBAAuB,CAAC,aAAa;AACvC,gBAAM,IAAI,UAAU,8CAA8C,QAAQ;AAAA,QAC5E,WAAW,KAAK,EAAE,MAAM,IAAI,2BAA2B,GAAG;AAExD,cAAI,CAAC,UAAU;AACb,kBAAM,IAAI,UAAU,eAAe,IAAI,gFAAgF;AAAA,UACzH;AACA,cAAI,SAAS,QAAQ,CAAC,EAAE,MAAM,IAAI,2BAA2B,GAAG;AAC9D,kBAAM,IAAI,UAAU,eAAe,IAAI,+CAA+C;AAAA,UACxF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,kBAAkB,SAAU,GAAG;AACjC,YAAI,CAAC,GAAG;AACN;AAAA,QACF;AAEA,YAAI,OAAO,OAAO,CAAC;AACnB,YAAI,UAAU,IAAI,KAAM,OAAO,KAAO,OAAO,OAAQ;AACnD;AAAA,QACF;AAEA,cAAM,IAAI,UAAU,WAAW,IAAI,uBAAuB;AAAA,MAC5D;AAGA,UAAI,aAAa,SAAS,WAAW;AACnC,YAAI,WAAW;AACb,cAAI,eAAe;AAAA,YACjB,KAAK,KAAK,WAAW;AAAA,UACvB;AAEA,cAAI,KAAK,eAAe,OAAO,KAAK,YAAY,eAAe,YAAY;AACzE,yBAAa,cAAc,KAAK,YAAY,WAAW;AAAA,UACzD;AAEA,cAAI,KAAK,QAAQ,OAAO,KAAK,KAAK,eAAe,YAAY;AAC3D,yBAAa,OAAO,KAAK,KAAK,WAAW;AAAA,UAC3C;AAEA,cAAI,KAAK,sBAAsB,OAAO,KAAK,mBAAmB,eAAe,YAAY;AACvF,yBAAa,qBAAqB,KAAK,mBAAmB,WAAW;AAAA,UACvE;AAEA,iBAAO;AAAA,QACT,WAAW,KAAK,QAAQ,MAAM;AAC5B,eAAK,MAAM;AAAA,QACb;AAEA,eAAO;AAAA,MACT;AAEA,QAAE,QAAQ,SAAS,YAAY;AAC7B,YAAI,eAAe,MAAM;AACvB,eAAK,kBAAkB;AAAA,QACzB,WAAW,eAAe,UAAa,KAAK,iBAAiB;AAC3D,eAAK,UAAU,IAAI,MAAM,KAAK,MAAM;AACpC,eAAK,kBAAkB;AAAA,QACzB;AAEA,eAAO;AAAA,MACT;AAEA,QAAE,QAAQ,WAAW;AACnB,eAAO,IAAI,IAAI,IAAI;AAAA,MACrB;AAEA,QAAE,UAAU,EAAE,WAAW,WAAW;AAClC,eAAO,KAAK,MAAM,KAAK,EAAE;AAAA,MAC3B;AAGA,eAAS,uBAAuBD,QAAM;AACpC,eAAO,SAAS,GAAG,OAAO;AACxB,cAAI,MAAM,QAAW;AACnB,mBAAO,KAAK,OAAOA,MAAK,KAAK;AAAA,UAC/B,OAAO;AACL,iBAAK,OAAOA,MAAK,IAAI,KAAK;AAC1B,iBAAK,MAAM,CAAC,KAAK;AACjB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,eAAS,uBAAuBA,QAAO,MAAK;AAC1C,eAAO,SAAS,GAAG,OAAO;AACxB,cAAI,MAAM,QAAW;AACnB,mBAAO,KAAK,OAAOA,MAAK,KAAK;AAAA,UAC/B,OAAO;AACL,gBAAI,MAAM,MAAM;AACd,kBAAI,IAAI;AACR,kBAAI,EAAE,OAAO,CAAC,MAAM,MAAM;AACxB,oBAAI,EAAE,UAAU,CAAC;AAAA,cACnB;AAAA,YACF;AAEA,iBAAK,OAAOA,MAAK,IAAI;AACrB,iBAAK,MAAM,CAAC,KAAK;AACjB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAEA,QAAE,WAAW,uBAAuB,UAAU;AAC9C,QAAE,WAAW,uBAAuB,UAAU;AAC9C,QAAE,WAAW,uBAAuB,UAAU;AAC9C,QAAE,WAAW,uBAAuB,UAAU;AAC9C,QAAE,OAAO,uBAAuB,MAAM;AACtC,QAAE,QAAQ,uBAAuB,SAAS,GAAG;AAC7C,QAAE,WAAW,uBAAuB,YAAY,GAAG;AAEnD,QAAE,SAAS,SAAS,GAAG,OAAO;AAC5B,YAAI,IAAI,KAAK,MAAM,GAAG,KAAK;AAC3B,eAAO,OAAO,MAAM,YAAY,EAAE,SAAU,MAAM,IAAK;AAAA,MACzD;AACA,QAAE,OAAO,SAAS,GAAG,OAAO;AAC1B,YAAI,IAAI,KAAK,SAAS,GAAG,KAAK;AAC9B,eAAO,OAAO,MAAM,YAAY,EAAE,SAAU,MAAM,IAAK;AAAA,MACzD;AAEA,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI,MAAM,UAAa,MAAM,MAAM;AACjC,cAAI,MAAM,KAAK,OAAO,SAAS,KAAK,OAAO,WAAW,MAAM;AAC5D,iBAAO,KAAK,KAAK,OAAO,MAAM,IAAI,gBAAgB,IAAI,YAAY,GAAG,IAAI;AAAA,QAC3E,OAAO;AACL,cAAI,KAAK,OAAO,KAAK;AACnB,iBAAK,OAAO,OAAO,IAAI,IAAI,cAAc,CAAC,IAAI;AAAA,UAChD,OAAO;AACL,iBAAK,OAAO,OAAO,IAAI,IAAI,WAAW,CAAC,IAAI;AAAA,UAC7C;AACA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,OAAO,EAAE;AACX,QAAE,OAAO,SAAS,MAAM,OAAO;AAC7B,YAAI;AAEJ,YAAI,SAAS,QAAW;AACtB,iBAAO,KAAK,SAAS;AAAA,QACvB;AAEA,aAAK,UAAU;AACf,aAAK,SAAS,IAAI,OAAO;AAEzB,YAAIE,QAAO,gBAAgB;AAC3B,YAAI,UAAU,OAAO,SAAS,aAAa,KAAK,YAAY,KAAK,QAAQ,KAAK;AAC9E,YAAI,KAAK,UAAU;AACjB,cAAI,YAAY,IAAI,gBAAgB,IAAI;AACxC,iBAAO,KAAK,SAAS,KAAK;AAC1B,oBAAU;AAAA,QACZ;AASA,YAAI,CAACA,SAAQ,WAAW,KAAK,aAAa,QAAW;AACnD,iBAAO,KAAK,SAAS;AAAA,QACvB;AAEA,YAAI,OAAO,SAAS,YAAY,gBAAgB,QAAQ;AACtD,eAAK,SAAS,IAAI,MAAM,OAAO,IAAI,GAAG,KAAK,MAAM;AAAA,QACnD,WAAWA,SAAQ,SAAS;AAC1B,cAAI,MAAMA,QAAO,KAAK,SAAS;AAC/B,eAAK,OAAO,KAAK;AACf,gBAAI,QAAQ,SAAS;AAAE;AAAA,YAAU;AACjC,gBAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,GAAG;AACjC,mBAAK,OAAO,GAAG,IAAI,IAAI,GAAG;AAAA,YAC5B;AAAA,UACF;AACA,cAAI,IAAI,OAAO;AACb,iBAAK,MAAM,IAAI,OAAO,KAAK;AAAA,UAC7B;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,UAAU,eAAe;AAAA,QACrC;AAEA,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AAGA,QAAE,KAAK,SAAS,MAAM;AACpB,YAAI,KAAK;AACT,YAAI,MAAM;AACV,YAAI,MAAM;AACV,YAAI,OAAO;AACX,YAAI,MAAM;AACV,YAAI,MAAM;AACV,YAAIC,YAAW;AACf,YAAI,WAAW,CAAC,KAAK,OAAO;AAE5B,YAAI,KAAK,OAAO,UAAU;AACxB,qBAAW;AACX,gBAAM,IAAI,eAAe,KAAK,KAAK,OAAO,QAAQ;AAClD,gBAAM,IAAI,eAAe,KAAK,KAAK,OAAO,QAAQ;AAClD,eAAK,OAAO;AACZ,iBAAO,CAAC;AACR,gBAAM,QAAQ,OAAO,IAAI,IAAI,KAAK,OAAO,QAAQ;AACjD,gBAAM,QAAQ,IAAI,eAAe,KAAK,KAAK,OAAO,QAAQ;AAC1D,UAAAA,YAAW,QAAQ,IAAI,oBAAoB,KAAK,KAAK,OAAO,QAAQ;AAAA,QACtE;AAEA,gBAAQ,KAAK,YAAY,GAAG;AAAA,UAC1B,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AACH,mBAAO,CAAC;AAAA;AAAA,UAGV,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AACH,mBAAO;AAAA,UAET,KAAK;AACH,mBAAO,CAAC,KAAK,OAAO;AAAA,UAEtB,KAAK;AACH,mBAAO,CAAC,CAAC,KAAK,OAAO;AAAA,UAEvB,KAAK;AACH,mBAAOA;AAAA,QACX;AAEA,eAAO;AAAA,MACT;AAGA,UAAI,YAAY,EAAE;AAClB,UAAI,QAAQ,EAAE;AACd,UAAI,YAAY,EAAE;AAElB,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI,GAAG;AAEL,cAAI,EAAE,QAAQ,aAAa,EAAE;AAE7B,cAAI,CAAC,EAAE,MAAM,IAAI,mBAAmB,GAAG;AACrC,kBAAM,IAAI,UAAU,eAAe,IAAI,0EAA2E;AAAA,UACpH;AAAA,QACF;AAEA,eAAO,UAAU,KAAK,MAAM,GAAG,KAAK;AAAA,MACtC;AACA,QAAE,SAAS,EAAE;AACb,QAAE,OAAO,SAAS,GAAG,OAAO;AAC1B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,cAAI,MAAM,GAAG;AACX,gBAAI;AAAA,UACN;AAEA,cAAI,GAAG;AACL,iBAAK;AACL,gBAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,kBAAI,EAAE,UAAU,CAAC;AAAA,YACnB;AAEA,gBAAI,gBAAgB,CAAC;AAAA,UACvB;AAAA,QACF;AACA,eAAO,MAAM,KAAK,MAAM,GAAG,KAAK;AAAA,MAClC;AACA,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,cAAI,IAAI,EAAE,wBAAwB,KAAK,OAAO,uBAAuB;AACrE,cAAI,MAAM,IAAI,UAAU,GAAG,CAAC;AAC5B,cAAI,QAAQ,KAAK;AACf,kBAAM,IAAI,UAAU,eAAe,IAAI,6CAA6C;AAAA,UACtF;AAEA,cAAI,EAAE;AACN,cAAI,KAAK,OAAO,wBAAwB;AACtC,gBAAI,oBAAoB,GAAG,KAAK,OAAO,QAAQ;AAAA,UACjD;AAAA,QACF;AAEA,eAAO,UAAU,KAAK,MAAM,GAAG,KAAK;AAAA,MACtC;AAGA,QAAE,SAAS,SAAS,GAAG,OAAO;AAC5B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,cAAI,WAAW,KAAK,SAAS;AAC7B,cAAI,YAAY,KAAK,UAAU;AAC/B,cAAI,CAAC,WAAW;AACd,mBAAO;AAAA,UACT;AAEA,kBAAQ,WAAW,WAAW,QAAQ,MAAM,KAAK,UAAU;AAAA,QAC7D,OAAO;AACL,cAAI,SAAS,IAAI,CAAC;AAClB,eACG,SAAS,OAAO,SAAS,CAAC,EAC1B,UAAU,OAAO,UAAU,CAAC,EAC5B,MAAM,CAAC,KAAK;AACf,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,OAAO,SAAS,GAAG,OAAO;AAC1B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,iBAAO,KAAK,OAAO,WAAW,IAAI,UAAU,KAAK,MAAM,IAAI;AAAA,QAC7D,OAAO;AACL,cAAI,MAAM,IAAI,UAAU,GAAG,KAAK,MAAM;AACtC,cAAI,QAAQ,KAAK;AACf,kBAAM,IAAI,UAAU,eAAe,IAAI,6CAA6C;AAAA,UACtF;AAEA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,YAAY,SAAS,GAAG,OAAO;AAC/B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,iBAAO,KAAK,OAAO,WAAW,IAAI,eAAe,KAAK,MAAM,IAAI;AAAA,QAClE,OAAO;AACL,cAAI,MAAM,IAAI,eAAe,GAAG,KAAK,MAAM;AAC3C,cAAI,QAAQ,KAAK;AACf,kBAAM,IAAI,UAAU,eAAe,IAAI,6CAA6C;AAAA,UACtF;AAEA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,QAAW;AACnB,cAAI,IAAI,IAAI,cAAc,KAAK,MAAM;AACrC,iBAAO,IAAI,EAAE,UAAU,GAAG,EAAE,SAAQ,CAAC,IAAI;AAAA,QAC3C,OAAO;AACL,cAAI,EAAE,EAAE,SAAO,CAAC,MAAM,KAAK;AACzB,iBAAK;AAAA,UACP;AAEA,cAAI,cAAc,GAAG,KAAK,MAAM;AAChC,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI;AAEJ,YAAI,MAAM,QAAW;AACnB,iBAAO,KAAK,KAAK,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK;AAAA,QACjD;AAEA,gBAAQ,IAAI,MAAM,CAAC;AACnB,aAAK,OAAO,OAAO,MAAM;AACzB,aAAK,OAAO,QAAQ,MAAM;AAC1B,aAAK,OAAO,WAAW,MAAM;AAC7B,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AAGA,QAAE,YAAY,SAAS,GAAG,OAAO;AAC/B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAGA,YAAI,MAAM,QAAW;AACnB,cAAI,CAAC,KAAK,OAAO,YAAY,KAAK,GAAG,IAAI,GAAG;AAC1C,mBAAO;AAAA,UACT;AAGA,cAAI,MAAM,KAAK,OAAO,SAAS,SAAS,KAAK,OAAO,EAAE,SAAS;AAC/D,iBAAO,KAAK,OAAO,SAAS,UAAU,GAAG,GAAG,KAAK;AAAA,QACnD,OAAO;AACL,cAAI,IAAI,KAAK,OAAO,SAAS,SAAS,KAAK,OAAO,EAAE;AACpD,cAAI,MAAM,KAAK,OAAO,SAAS,UAAU,GAAG,CAAC;AAC7C,cAAI,UAAU,IAAI,OAAO,MAAM,YAAY,GAAG,CAAC;AAE/C,cAAI,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK;AACvC,iBAAK;AAAA,UACP;AAEA,cAAI,EAAE,QAAQ,GAAG,MAAM,IAAI;AACzB,kBAAM,IAAI,UAAU,+BAA+B;AAAA,UACrD;AAEA,cAAI,GAAG;AACL,gBAAI,oBAAoB,GAAG,KAAK,OAAO,QAAQ;AAAA,UACjD;AAEA,eAAK,OAAO,WAAW,KAAK,OAAO,SAAS,QAAQ,SAAS,CAAC;AAC9D,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,SAAS,SAAS,GAAG,OAAO;AAC5B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,OAAO,MAAM,WAAW;AAC1B,kBAAQ;AACR,cAAI;AAAA,QACN;AAGA,YAAI,MAAM,QAAW;AACnB,cAAI,CAAC,KAAK,OAAO,YAAY,KAAK,GAAG,IAAI,GAAG;AAC1C,mBAAO;AAAA,UACT;AAGA,cAAI,IAAI,KAAK,OAAO,SAAS,MAAM,KAAK;AACxC,cAAI,KAAK,EAAE,SAAS,GAAG;AACrB,mBAAO,KAAK,OAAO;AAAA,UACrB;AAGA,cAAI,MAAM,KAAK,OAAO,SAAS,SAAS,KAAK,IAAI,KAAK,EAAE,SAAS;AACjE,gBAAM,KAAK,OAAO,SAAS,YAAY,KAAK,MAAK,CAAC,IAAI;AACtD,iBAAO,KAAK,OAAO,SAAS,UAAU,GAAG,KAAK;AAAA,QAChD,OAAO;AACL,cAAI,CAAC,GAAG;AACN,kBAAM,IAAI,UAAU,yBAAyB;AAAA,UAC/C;AAEA,cAAI,EAAE,QAAQ,GAAG,MAAM,IAAI;AACzB,kBAAM,IAAI,UAAU,+BAA+B;AAAA,UACrD;AAEA,cAAI,oBAAoB,GAAG,KAAK,OAAO,QAAQ;AAE/C,cAAI,CAAC,KAAK,OAAO,YAAY,KAAK,GAAG,IAAI,GAAG;AAC1C,iBAAK,OAAO,WAAW;AAAA,UACzB,OAAO;AACL,gBAAI,UAAU,IAAI,OAAO,YAAY,KAAK,OAAO,CAAC,IAAI,GAAG;AACzD,iBAAK,OAAO,WAAW,KAAK,OAAO,SAAS,QAAQ,SAAS,CAAC;AAAA,UAChE;AAEA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,MAAM,SAAS,GAAG,OAAO;AACzB,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,OAAO,MAAM,WAAW;AAC1B,kBAAQ;AACR,cAAI;AAAA,QACN;AAGA,YAAI,MAAM,QAAW;AACnB,cAAI,CAAC,KAAK,OAAO,YAAY,KAAK,GAAG,IAAI,GAAG;AAC1C,mBAAO;AAAA,UACT;AAEA,cAAI,MAAM,KAAK,OAAO,SAAS,YAAY,GAAG;AAC9C,cAAI,MAAM,KAAK,OAAO,SAAS,UAAU,MAAM,CAAC;AAEhD,cAAI,UAAU,QAAQ,OAAO,IAAI,KAAK,IAAI,YAAY,CAAC,GAAG;AACxD,mBAAO,IAAI,IAAI,KAAK,OAAO,QAAQ,KAAK;AAAA,UAC1C;AAEA,iBAAO;AAAA,QACT,OAAO;AACL,cAAI;AAEJ,cAAI,CAAC,GAAG;AACN,kBAAM,IAAI,UAAU,sBAAsB;AAAA,UAC5C,WAAW,EAAE,MAAM,eAAe,GAAG;AACnC,gBAAI,OAAO,IAAI,GAAG,CAAC,GAAG;AACpB,wBAAU,IAAI,OAAO,YAAY,KAAK,IAAI,CAAC,IAAI,GAAG;AAClD,mBAAK,OAAO,WAAW,KAAK,OAAO,SAAS,QAAQ,SAAS,CAAC;AAAA,YAChE,OAAO;AACL,oBAAM,IAAI,UAAU,UAAU,IAAI,2CAA2C;AAAA,YAC/E;AAAA,UACF,WAAW,CAAC,KAAK,OAAO,YAAY,KAAK,GAAG,IAAI,GAAG;AACjD,kBAAM,IAAI,eAAe,mCAAmC;AAAA,UAC9D,OAAO;AACL,sBAAU,IAAI,OAAO,YAAY,KAAK,IAAI,CAAC,IAAI,GAAG;AAClD,iBAAK,OAAO,WAAW,KAAK,OAAO,SAAS,QAAQ,SAAS,CAAC;AAAA,UAChE;AAEA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,YAAY,SAAS,GAAG,OAAO;AAC/B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,UAAa,MAAM,MAAM;AACjC,cAAI,CAAC,KAAK,OAAO,QAAQ,CAAC,KAAK,OAAO,UAAU;AAC9C,mBAAO;AAAA,UACT;AAEA,cAAI,KAAK,OAAO,SAAS,KAAK;AAC5B,mBAAO;AAAA,UACT;AAEA,cAAI,MAAM,KAAK,OAAO,KAAK,SAAS,KAAK,SAAS,EAAE,SAAS;AAC7D,cAAI,MAAM,KAAK,OAAO,KAAK,UAAU,GAAG,GAAG,MAAM,KAAK,OAAO,WAAW,MAAM;AAE9E,iBAAO,IAAI,IAAI,WAAW,GAAG,IAAI;AAAA,QAEnC,OAAO;AACL,cAAI,IAAI,KAAK,OAAO,KAAK,SAAS,KAAK,SAAS,EAAE;AAClD,cAAI,YAAY,KAAK,OAAO,KAAK,UAAU,GAAG,CAAC;AAC/C,cAAI,UAAU,IAAI,OAAO,MAAM,YAAY,SAAS,CAAC;AAGrD,cAAI,CAAC,KAAK,GAAG,UAAU,GAAG;AACxB,gBAAI,CAAC,GAAG;AACN,kBAAI;AAAA,YACN;AAEA,gBAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,kBAAI,MAAM;AAAA,YACZ;AAAA,UACF;AAGA,cAAI,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,KAAK;AACvC,iBAAK;AAAA,UACP;AAEA,cAAI,IAAI,WAAW,CAAC;AACpB,eAAK,OAAO,OAAO,KAAK,OAAO,KAAK,QAAQ,SAAS,CAAC;AACtD,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,WAAW,SAAS,GAAG,OAAO;AAC9B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,OAAO,MAAM,UAAU;AACzB,cAAI,CAAC,KAAK,OAAO,QAAQ,KAAK,OAAO,SAAS,KAAK;AACjD,mBAAO;AAAA,UACT;AAEA,cAAI,MAAM,KAAK,OAAO,KAAK,YAAY,GAAG;AAC1C,cAAI,MAAM,KAAK,OAAO,KAAK,UAAU,MAAI,CAAC;AAE1C,iBAAO,IAAI,IAAI,kBAAkB,GAAG,IAAI;AAAA,QAC1C,OAAO;AACL,cAAI,mBAAmB;AAEvB,cAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,gBAAI,EAAE,UAAU,CAAC;AAAA,UACnB;AAEA,cAAI,EAAE,MAAM,OAAO,GAAG;AACpB,+BAAmB;AAAA,UACrB;AAEA,cAAI,UAAU,IAAI,OAAO,YAAY,KAAK,SAAS,CAAC,IAAI,GAAG;AAC3D,cAAI,IAAI,WAAW,CAAC;AACpB,eAAK,OAAO,OAAO,KAAK,OAAO,KAAK,QAAQ,SAAS,CAAC;AAEtD,cAAI,kBAAkB;AACpB,iBAAK,cAAc,KAAK;AAAA,UAC1B,OAAO;AACL,iBAAK,MAAM,CAAC,KAAK;AAAA,UACnB;AAEA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,SAAS,SAAS,GAAG,OAAO;AAC5B,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,MAAM,SAAY,KAAK;AAAA,QAChC;AAEA,YAAI,MAAM,UAAa,MAAM,MAAM;AACjC,cAAI,CAAC,KAAK,OAAO,QAAQ,KAAK,OAAO,SAAS,KAAK;AACjD,mBAAO;AAAA,UACT;AAEA,cAAI,WAAW,KAAK,SAAS;AAC7B,cAAI,MAAM,SAAS,YAAY,GAAG;AAClC,cAAI,GAAG;AAEP,cAAI,QAAQ,IAAI;AACd,mBAAO;AAAA,UACT;AAGA,cAAI,SAAS,UAAU,MAAI,CAAC;AAC5B,gBAAO,gBAAiB,KAAK,CAAC,IAAI,IAAI;AACtC,iBAAO,IAAI,IAAI,kBAAkB,GAAG,IAAI;AAAA,QAC1C,OAAO;AACL,cAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,gBAAI,EAAE,UAAU,CAAC;AAAA,UACnB;AAEA,cAAI,SAAS,KAAK,OAAO;AACzB,cAAI;AAEJ,cAAI,CAAC,QAAQ;AACX,gBAAI,CAAC,GAAG;AACN,qBAAO;AAAA,YACT;AAEA,iBAAK,OAAO,QAAQ,MAAM,IAAI,WAAW,CAAC;AAAA,UAC5C,WAAW,CAAC,GAAG;AACb,sBAAU,IAAI,OAAO,YAAY,MAAM,MAAM,IAAI,GAAG;AAAA,UACtD,OAAO;AACL,sBAAU,IAAI,OAAO,YAAY,MAAM,IAAI,GAAG;AAAA,UAChD;AAEA,cAAI,SAAS;AACX,gBAAI,IAAI,WAAW,CAAC;AACpB,iBAAK,OAAO,OAAO,KAAK,OAAO,KAAK,QAAQ,SAAS,CAAC;AAAA,UACxD;AAEA,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAAA,MACF;AACA,QAAE,UAAU,SAAS,SAAS,GAAG,OAAO;AACtC,YAAI,YAAY,KAAK,OAAO,MAAM,MAAM;AACxC,YAAIC,QAAO,KAAK,KAAK;AACrB,YAAI,WAAWA,MAAK,UAAU,GAAG,CAAC,MAAM;AACxC,YAAI,WAAWA,MAAK,MAAM,SAAS;AAEnC,YAAI,YAAY,UAAa,OAAO,YAAY,UAAU;AACxD,kBAAQ;AACR,cAAI;AACJ,oBAAU;AAAA,QACZ;AAEA,YAAI,YAAY,UAAa,OAAO,YAAY,UAAU;AACxD,gBAAM,IAAI,MAAM,kBAAkB,UAAU,4BAA4B;AAAA,QAC1E;AAEA,YAAI,UAAU;AACZ,mBAAS,MAAM;AAAA,QACjB;AAEA,YAAI,UAAU,GAAG;AAEf,oBAAU,KAAK,IAAI,SAAS,SAAS,SAAS,CAAC;AAAA,QACjD;AAEA,YAAI,MAAM,QAAW;AAEnB,iBAAO,YAAY,SACf,WACA,SAAS,OAAO;AAAA,QAEtB,WAAW,YAAY,QAAQ,SAAS,OAAO,MAAM,QAAW;AAC9D,cAAI,QAAQ,CAAC,GAAG;AACd,uBAAW,CAAC;AAEZ,qBAAS,IAAE,GAAG,IAAE,EAAE,QAAQ,IAAI,GAAG,KAAK;AACpC,kBAAI,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,SAAS,UAAU,CAAC,SAAS,SAAS,SAAQ,CAAC,EAAE,SAAS;AAC9E;AAAA,cACF;AAEA,kBAAI,SAAS,UAAU,CAAC,SAAS,SAAS,SAAQ,CAAC,EAAE,QAAQ;AAC3D,yBAAS,IAAI;AAAA,cACf;AAEA,uBAAS,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC;AAAA,YACjC;AAAA,UACF,WAAW,KAAK,OAAO,MAAM,UAAU;AACrC,gBAAI,YAAY,CAAC;AACjB,gBAAI,SAAS,SAAS,SAAQ,CAAC,MAAM,IAAI;AAGvC,uBAAS,SAAS,SAAQ,CAAC,IAAI;AAAA,YACjC,OAAO;AACL,uBAAS,KAAK,CAAC;AAAA,YACjB;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAI,GAAG;AACL,qBAAS,OAAO,IAAI,YAAY,CAAC;AAAA,UACnC,OAAO;AACL,qBAAS,OAAO,SAAS,CAAC;AAAA,UAC5B;AAAA,QACF;AAEA,YAAI,UAAU;AACZ,mBAAS,QAAQ,EAAE;AAAA,QACrB;AAEA,eAAO,KAAK,KAAK,SAAS,KAAK,SAAS,GAAG,KAAK;AAAA,MAClD;AACA,QAAE,eAAe,SAAS,SAAS,GAAG,OAAO;AAC3C,YAAI,UAAU,GAAG;AAEjB,YAAI,OAAO,YAAY,UAAU;AAC/B,kBAAQ;AACR,cAAI;AACJ,oBAAU;AAAA,QACZ;AAEA,YAAI,MAAM,QAAW;AACnB,qBAAW,KAAK,QAAQ,SAAS,GAAG,KAAK;AACzC,cAAI,CAAC,QAAQ,QAAQ,GAAG;AACtB,uBAAW,aAAa,SAAY,IAAI,OAAO,QAAQ,IAAI;AAAA,UAC7D,OAAO;AACL,iBAAK,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC3C,uBAAS,CAAC,IAAI,IAAI,OAAO,SAAS,CAAC,CAAC;AAAA,YACtC;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,YAAI,CAAC,QAAQ,CAAC,GAAG;AACf,cAAK,OAAO,MAAM,YAAY,aAAa,SAAU,IAAI,OAAO,CAAC,IAAI;AAAA,QACvE,OAAO;AACL,eAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK;AACpC,cAAE,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;AAAA,UACxB;AAAA,QACF;AAEA,eAAO,KAAK,QAAQ,SAAS,GAAG,KAAK;AAAA,MACvC;AAGA,UAAI,IAAI,EAAE;AACV,QAAE,QAAQ,SAAS,GAAG,OAAO;AAC3B,YAAI,MAAM,MAAM;AACd,iBAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AAAA,QACvE,WAAW,OAAO,MAAM,YAAY;AAClC,cAAI,OAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AACzE,cAAI,SAAS,EAAE,KAAK,MAAM,IAAI;AAC9B,eAAK,OAAO,QAAQ,IAAI,WAAW,UAAU,MAAM,KAAK,OAAO,0BAA0B,KAAK,OAAO,gBAAgB;AACrH,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT,WAAW,MAAM,UAAa,OAAO,MAAM,UAAU;AACnD,eAAK,OAAO,QAAQ,IAAI,WAAW,GAAG,KAAK,OAAO,0BAA0B,KAAK,OAAO,gBAAgB;AACxG,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,EAAE,KAAK,MAAM,GAAG,KAAK;AAAA,QAC9B;AAAA,MACF;AACA,QAAE,WAAW,SAAS,MAAM,OAAO,OAAO;AACxC,YAAI,OAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AAEzE,YAAI,OAAO,SAAS,YAAY,gBAAgB,QAAQ;AACtD,eAAK,IAAI,IAAI,UAAU,SAAY,QAAQ;AAAA,QAC7C,WAAW,OAAO,SAAS,UAAU;AACnC,mBAAS,OAAO,MAAM;AACpB,gBAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAC1B,mBAAK,GAAG,IAAI,KAAK,GAAG;AAAA,YACtB;AAAA,UACF;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,UAAU,gEAAgE;AAAA,QACtF;AAEA,aAAK,OAAO,QAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,0BAA0B,KAAK,OAAO,gBAAgB;AAC3G,YAAI,OAAO,SAAS,UAAU;AAC5B,kBAAQ;AAAA,QACV;AAEA,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AACA,QAAE,WAAW,SAAS,MAAM,OAAO,OAAO;AACxC,YAAI,OAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AACzE,YAAI,SAAS,MAAM,MAAM,UAAU,SAAY,OAAO,KAAK;AAC3D,aAAK,OAAO,QAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,0BAA0B,KAAK,OAAO,gBAAgB;AAC3G,YAAI,OAAO,SAAS,UAAU;AAC5B,kBAAQ;AAAA,QACV;AAEA,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AACA,QAAE,cAAc,SAAS,MAAM,OAAO,OAAO;AAC3C,YAAI,OAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AACzE,YAAI,YAAY,MAAM,MAAM,KAAK;AACjC,aAAK,OAAO,QAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,0BAA0B,KAAK,OAAO,gBAAgB;AAC3G,YAAI,OAAO,SAAS,UAAU;AAC5B,kBAAQ;AAAA,QACV;AAEA,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AACA,QAAE,WAAW,SAAS,MAAM,OAAO,aAAa;AAC9C,YAAI,OAAO,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB;AACzE,eAAO,IAAI,SAAS,MAAM,MAAM,OAAO,WAAW;AAAA,MACpD;AACA,QAAE,YAAY,EAAE;AAChB,QAAE,YAAY,EAAE;AAChB,QAAE,eAAe,EAAE;AACnB,QAAE,YAAY,EAAE;AAGhB,QAAE,YAAY,WAAW;AACvB,YAAI,KAAK,OAAO,KAAK;AACnB,iBAAO,KACJ,kBAAkB,KAAK,EACvB,cAAc,KAAK,EACnB,eAAe,KAAK,EACpB,kBAAkB,KAAK,EACvB,MAAM;AAAA,QACX;AAEA,eAAO,KACJ,kBAAkB,KAAK,EACvB,kBAAkB,KAAK,EACvB,cAAc,KAAK,EACnB,cAAc,KAAK,EACnB,eAAe,KAAK,EACpB,kBAAkB,KAAK,EACvB,MAAM;AAAA,MACX;AACA,QAAE,oBAAoB,SAAS,OAAO;AACpC,YAAI,OAAO,KAAK,OAAO,aAAa,UAAU;AAC5C,eAAK,OAAO,WAAW,KAAK,OAAO,SAAS,YAAY;AACxD,eAAK,MAAM,CAAC,KAAK;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,QAAE,oBAAoB,SAAS,OAAO;AACpC,YAAI,KAAK,OAAO,UAAU;AACxB,cAAI,KAAK,GAAG,KAAK,KAAK,UAAU;AAC9B,iBAAK,OAAO,WAAW,SAAS,QAAQ,KAAK,OAAO,QAAQ;AAAA,UAC9D,WAAW,KAAK,GAAG,MAAM,KAAK,MAAM;AAClC,iBAAK,OAAO,WAAW,KAAK,KAAK,KAAK,OAAO,QAAQ;AAAA,UACvD;AAEA,eAAK,OAAO,WAAW,KAAK,OAAO,SAAS,YAAY;AACxD,eAAK,MAAM,CAAC,KAAK;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,QAAE,gBAAgB,SAAS,OAAO;AAEhC,YAAI,OAAO,KAAK,OAAO,aAAa,YAAY,KAAK,OAAO,SAAS,IAAI,aAAa,KAAK,OAAO,QAAQ,GAAG;AAC3G,eAAK,OAAO,OAAO;AACnB,eAAK,MAAM,CAAC,KAAK;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,QAAE,gBAAgB,SAAS,OAAO;AAChC,YAAI,QAAQ,KAAK,OAAO;AACxB,YAAI,CAAC,OAAO;AACV,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,OAAO,KAAK;AACnB,eAAK,OAAO,OAAO,IAAI,cAAc,KAAK,OAAO,IAAI;AACrD,eAAK,MAAM,CAAC,KAAK;AACjB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,OAAO,SAAS,KAAK;AAC5B,iBAAO;AAAA,QACT;AAEA,gBAAQ,IAAI,WAAW,KAAK;AAE5B,YAAI;AACJ,YAAI,kBAAkB;AACtB,YAAI,SAAS;AAGb,YAAI,MAAM,OAAO,CAAC,MAAM,KAAK;AAC3B,0BAAgB;AAChB,kBAAQ,MAAM;AAAA,QAChB;AAGA,YAAI,MAAM,MAAM,EAAE,MAAM,SAAS,MAAM,MAAM,EAAE,MAAM,MAAM;AACzD,mBAAS;AAAA,QACX;AAGA,gBAAQ,MACL,QAAQ,wBAAwB,GAAG,EACnC,QAAQ,WAAW,GAAG;AAGzB,YAAI,eAAe;AACjB,4BAAkB,MAAM,UAAU,CAAC,EAAE,MAAM,YAAY,KAAK;AAC5D,cAAI,iBAAiB;AACnB,8BAAkB,gBAAgB,CAAC;AAAA,UACrC;AAAA,QACF;AAGA,eAAO,MAAM;AACX,oBAAU,MAAM,OAAO,cAAc;AACrC,cAAI,YAAY,IAAI;AAElB;AAAA,UACF,WAAW,YAAY,GAAG;AAExB,oBAAQ,MAAM,UAAU,CAAC;AACzB;AAAA,UACF;AAEA,iBAAO,MAAM,UAAU,GAAG,OAAO,EAAE,YAAY,GAAG;AAClD,cAAI,SAAS,IAAI;AACf,mBAAO;AAAA,UACT;AACA,kBAAQ,MAAM,UAAU,GAAG,IAAI,IAAI,MAAM,UAAU,UAAU,CAAC;AAAA,QAChE;AAGA,YAAI,iBAAiB,KAAK,GAAG,UAAU,GAAG;AACxC,kBAAQ,kBAAkB,MAAM,UAAU,CAAC;AAAA,QAC7C;AAEA,aAAK,OAAO,OAAO;AACnB,aAAK,MAAM,CAAC,KAAK;AACjB,eAAO;AAAA,MACT;AACA,QAAE,oBAAoB,EAAE;AACxB,QAAE,iBAAiB,SAAS,OAAO;AACjC,YAAI,OAAO,KAAK,OAAO,UAAU,UAAU;AACzC,cAAI,CAAC,KAAK,OAAO,MAAM,QAAQ;AAC7B,iBAAK,OAAO,QAAQ;AAAA,UACtB,OAAO;AACL,iBAAK,MAAM,IAAI,WAAW,KAAK,OAAO,OAAO,KAAK,OAAO,gBAAgB,CAAC;AAAA,UAC5E;AAEA,eAAK,MAAM,CAAC,KAAK;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,QAAE,oBAAoB,SAAS,OAAO;AACpC,YAAI,CAAC,KAAK,OAAO,UAAU;AACzB,eAAK,OAAO,WAAW;AACvB,eAAK,MAAM,CAAC,KAAK;AAAA,QACnB;AAEA,eAAO;AAAA,MACT;AACA,QAAE,kBAAkB,EAAE;AACtB,QAAE,gBAAgB,EAAE;AAEpB,QAAE,UAAU,WAAW;AAErB,YAAI,IAAI,IAAI;AACZ,YAAI,IAAI,IAAI;AAEZ,YAAI,SAAS;AACb,YAAI,SAAS;AACb,YAAI;AACF,eAAK,UAAU;AAAA,QACjB,UAAE;AACA,cAAI,SAAS;AACb,cAAI,SAAS;AAAA,QACf;AACA,eAAO;AAAA,MACT;AAEA,QAAE,UAAU,WAAW;AAErB,YAAI,IAAI,IAAI;AACZ,YAAI,IAAI,IAAI;AAEZ,YAAI,SAAS;AACb,YAAI,SAAS;AACb,YAAI;AACF,eAAK,UAAU;AAAA,QACjB,UAAE;AACA,cAAI,SAAS;AACb,cAAI,SAAS;AAAA,QACf;AACA,eAAO;AAAA,MACT;AAEA,QAAE,WAAW,WAAW;AACtB,YAAI,MAAM,KAAK,MAAM;AAErB,YAAI,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,UAAU;AACxC,YAAI,IAAI;AACR,YAAI,IAAI,OAAO,UAAU;AACvB,eAAK,IAAI,OAAO,WAAW;AAAA,QAC7B;AAEA,YAAI,IAAI,OAAO,UAAU;AACvB,cAAI,IAAI,GAAG,UAAU,KAAK,UAAU;AAClC,iBAAK,SAAS,UAAU,IAAI,OAAO,QAAQ;AAC3C,gBAAI,IAAI,OAAO,MAAM;AACnB,mBAAK,MAAM,IAAI,OAAO;AAAA,YACxB;AAAA,UACF,OAAO;AACL,iBAAK,IAAI,KAAK;AAAA,UAChB;AAAA,QACF;AAEA,YAAI,IAAI,OAAO,YAAY,IAAI,OAAO,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,MAAM,KAAK;AAC/E,eAAK;AAAA,QACP;AAEA,aAAK,IAAI,KAAK,IAAI;AAClB,YAAI,IAAI,OAAO,OAAO;AACpB,cAAIC,KAAI;AACR,mBAAS,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,QAAQ,IAAI,GAAG,KAAK;AAC3E,gBAAI,MAAM,GAAG,CAAC,KAAK,IAAI,MAAM,GAAG;AAChC,YAAAA,MAAK,MAAM,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,OAAO,gBAAgB,EAC3D,QAAQ,MAAM,KAAK;AAEtB,gBAAI,GAAG,CAAC,MAAM,QAAW;AACvB,cAAAA,MAAK,MAAM,IAAI,YAAY,GAAG,CAAC,GAAG,KAAK,OAAO,gBAAgB,EAC3D,QAAQ,MAAM,KAAK;AAAA,YACxB;AAAA,UACF;AACA,eAAK,MAAMA,GAAE,UAAU,CAAC;AAAA,QAC1B;AAEA,aAAK,IAAI,YAAY,IAAI,KAAK,GAAG,IAAI;AACrC,eAAO;AAAA,MACT;AAGA,QAAE,aAAa,SAAS,MAAM;AAC5B,YAAI,WAAW,KAAK,MAAM;AAC1B,YAAI,aAAa,CAAC,YAAY,YAAY,YAAY,YAAY,MAAM;AACxE,YAAI,SAAS,GAAGC;AAEhB,YAAI,KAAK,OAAO,KAAK;AACnB,gBAAM,IAAI,MAAM,gEAAgE;AAAA,QAClF;AAEA,YAAI,EAAE,gBAAgB,MAAM;AAC1B,iBAAO,IAAI,IAAI,IAAI;AAAA,QACrB;AAEA,YAAI,SAAS,OAAO,UAAU;AAE5B,iBAAO;AAAA,QACT,OAAO;AACL,mBAAS,OAAO,WAAW,KAAK,OAAO;AAAA,QACzC;AAEA,YAAI,KAAK,OAAO,UAAU;AACxB,iBAAO;AAAA,QACT;AAEA,aAAK,IAAI,GAAIA,KAAI,WAAW,CAAC,GAAI,KAAK;AACpC,mBAAS,OAAOA,EAAC,IAAI,KAAK,OAAOA,EAAC;AAAA,QACpC;AAEA,YAAI,CAAC,SAAS,OAAO,MAAM;AACzB,mBAAS,OAAO,OAAO,KAAK,OAAO;AACnC,cAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,qBAAS,OAAO,QAAQ,KAAK,OAAO;AAAA,UACtC;AAAA,QACF,OAAO;AACL,cAAI,SAAS,OAAO,KAAK,UAAU,EAAE,MAAM,MAAM;AAC/C,qBAAS,OAAO,QAAQ;AAAA,UAC1B;AAEA,cAAI,SAAS,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK;AACrC,sBAAU,KAAK,UAAU;AACzB,sBAAU,UAAU,UAAU,KAAK,KAAK,EAAE,QAAQ,GAAG,MAAM,IAAI,MAAM;AACrE,qBAAS,OAAO,QAAQ,UAAW,UAAU,MAAO,MAAM,SAAS,OAAO;AAC1E,qBAAS,cAAc;AAAA,UACzB;AAAA,QACF;AAEA,iBAAS,MAAM;AACf,eAAO;AAAA,MACT;AACA,QAAE,aAAa,SAAS,MAAM;AAC5B,YAAI,WAAW,KAAK,MAAM,EAAE,UAAU;AACtC,YAAI,eAAe,WAAW,QAAQ,cAAc;AAEpD,YAAI,SAAS,OAAO,KAAK;AACvB,gBAAM,IAAI,MAAM,gEAAgE;AAAA,QAClF;AAEA,eAAO,IAAI,IAAI,IAAI,EAAE,UAAU;AAC/B,wBAAgB,SAAS;AACzB,oBAAY,KAAK;AACjB,uBAAe,SAAS,KAAK;AAC7B,mBAAW,KAAK,KAAK;AAErB,YAAI,aAAa,OAAO,CAAC,MAAM,KAAK;AAClC,gBAAM,IAAI,MAAM,yBAAyB;AAAA,QAC3C;AAEA,YAAI,SAAS,OAAO,CAAC,MAAM,KAAK;AAC9B,gBAAM,IAAI,MAAM,yDAAyD;AAAA,QAC3E;AAEA,YAAI,cAAc,aAAa,UAAU,UAAU;AACjD,wBAAc,WAAW;AAAA,QAC3B;AAEA,YAAI,cAAc,aAAa,UAAU,YAAY,cAAc,aAAa,UAAU,UAAU;AAClG,iBAAO,SAAS,MAAM;AAAA,QACxB;AAEA,YAAI,cAAc,aAAa,QAAQ,cAAc,aAAa,QAAQ,cAAc,aAAa,MAAM;AACzG,iBAAO,SAAS,MAAM;AAAA,QACxB;AAEA,YAAI,cAAc,aAAa,UAAU,YAAY,cAAc,SAAS,UAAU,MAAM;AAC1F,wBAAc,WAAW;AACzB,wBAAc,OAAO;AAAA,QACvB,OAAO;AACL,iBAAO,SAAS,MAAM;AAAA,QACxB;AAEA,YAAI,iBAAiB,UAAU;AAC7B,wBAAc,OAAO;AACrB,iBAAO,SAAS,MAAM;AAAA,QACxB;AAGA,iBAAS,IAAI,WAAW,cAAc,QAAQ;AAG9C,YAAI,CAAC,QAAQ;AACX,iBAAO,SAAS,MAAM;AAAA,QACxB;AAEA,YAAI,UAAU,UAAU,KACrB,UAAU,OAAO,MAAM,EACvB,QAAQ,WAAW,EAAE,EACrB,QAAQ,UAAU,KAAK;AAE1B,sBAAc,OAAQ,UAAU,cAAc,KAAK,UAAU,OAAO,MAAM,KAAM;AAEhF,eAAO,SAAS,MAAM;AAAA,MACxB;AAGA,QAAE,SAAS,SAAS,KAAK;AACvB,YAAI,MAAM,KAAK,MAAM;AACrB,YAAI,MAAM,IAAI,IAAI,GAAG;AACrB,YAAI,UAAU,CAAC;AACf,YAAI,UAAU,CAAC;AACf,YAAI,UAAU,CAAC;AACf,YAAI,WAAW,WAAW;AAE1B,YAAI,UAAU;AACd,YAAI,UAAU;AAGd,YAAI,IAAI,SAAS,MAAM,IAAI,SAAS,GAAG;AACrC,iBAAO;AAAA,QACT;AAGA,oBAAY,IAAI,MAAM;AACtB,oBAAY,IAAI,MAAM;AACtB,YAAI,MAAM,EAAE;AACZ,YAAI,MAAM,EAAE;AAGZ,YAAI,IAAI,SAAS,MAAM,IAAI,SAAS,GAAG;AACrC,iBAAO;AAAA,QACT;AAGA,YAAI,UAAU,WAAW,UAAU,QAAQ;AACzC,iBAAO;AAAA,QACT;AAEA,kBAAU,IAAI,WAAW,WAAW,KAAK,OAAO,gBAAgB;AAChE,kBAAU,IAAI,WAAW,WAAW,KAAK,OAAO,gBAAgB;AAEhE,aAAK,OAAO,SAAS;AACnB,cAAI,OAAO,KAAK,SAAS,GAAG,GAAG;AAC7B,gBAAI,CAAC,QAAQ,QAAQ,GAAG,CAAC,GAAG;AAC1B,kBAAI,QAAQ,GAAG,MAAM,QAAQ,GAAG,GAAG;AACjC,uBAAO;AAAA,cACT;AAAA,YACF,WAAW,CAAC,YAAY,QAAQ,GAAG,GAAG,QAAQ,GAAG,CAAC,GAAG;AACnD,qBAAO;AAAA,YACT;AAEA,oBAAQ,GAAG,IAAI;AAAA,UACjB;AAAA,QACF;AAEA,aAAK,OAAO,SAAS;AACnB,cAAI,OAAO,KAAK,SAAS,GAAG,GAAG;AAC7B,gBAAI,CAAC,QAAQ,GAAG,GAAG;AAEjB,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAGA,QAAE,yBAAyB,SAAS,GAAG;AACrC,aAAK,OAAO,yBAAyB,CAAC,CAAC;AACvC,eAAO;AAAA,MACT;AAEA,QAAE,2BAA2B,SAAS,GAAG;AACvC,aAAK,OAAO,2BAA2B,CAAC,CAAC;AACzC,eAAO;AAAA,MACT;AAEA,QAAE,mBAAmB,SAAS,GAAG;AAC/B,aAAK,OAAO,mBAAmB,CAAC,CAAC;AACjC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;AC3zED;AAAA,+DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmBA,SAAQ,+BAA+B;AAClE,QAAI,eAAe;AACnB,QAAI,SAAS,uBAAuB,aAAgB;AACpD,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,eAAe;AACnB,QAAI,cAAc;AAClB,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,eAAe,GAAG,GAAG;AAAE,aAAO,gBAAgB,CAAC,KAAK,sBAAsB,GAAG,CAAC,KAAK,4BAA4B,GAAG,CAAC,KAAK,iBAAiB;AAAA,IAAG;AACrJ,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,sBAAsB,GAAG,GAAG;AAAE,UAAI,IAAI,QAAQ,IAAI,OAAO,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,QAAQ,GAAG;AAAE,YAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAI,IAAI;AAAI,YAAI;AAAE,cAAI,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;AAAE,gBAAI,OAAO,CAAC,MAAM,EAAG;AAAQ,gBAAI;AAAA,UAAI,MAAO,QAAO,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,WAAW,IAAI,IAAI,KAAG;AAAA,QAAE,SAASC,IAAG;AAAE,cAAI,MAAI,IAAIA;AAAA,QAAG,UAAE;AAAU,cAAI;AAAE,gBAAI,CAAC,KAAK,QAAQ,EAAE,WAAW,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAI;AAAA,UAAQ,UAAE;AAAU,gBAAI,EAAG,OAAM;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO;AAAA,MAAG;AAAA,IAAE;AACnhB,aAAS,gBAAgB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAA,IAAG;AAC9D,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEA,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAEC,IAAGP,IAAG;AAAE,mBAAOE,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGS,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASM,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGT,IAAGC,IAAGM,IAAG;AAAE,iBAAS,EAAEP,IAAGC,IAAG;AAAE,8BAAoBQ,IAAGT,IAAG,SAAUS,IAAG;AAAE,mBAAO,KAAK,QAAQT,IAAGC,IAAGQ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAT,KAAI,IAAI,EAAES,IAAGT,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACM,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAET,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,+BAA+BH,SAAQ,+BAA+B,MAAM;AAChF,QAAI,mBAAmBA,SAAQ,mBAAmB,WAAY;AAC5D,eAASa,kBAAiB,WAAW,QAAQ;AAC3C,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAChF,wBAAgB,MAAMA,iBAAgB;AACtC,aAAK,aAAa,GAAG,OAAO,SAAS,SAAS;AAC9C,aAAK,SAAS;AACd,YAAI,YAAY,OAAO,KAAK,cAAc,cAAc,QAAQ,OAAO,YAAY,IAAI,KAAK;AAC5F,aAAK,UAAU,OAAO,KAAK,YAAY,cAAc,QAAQ,OAAO,WAAW,IAAI,KAAK;AACxF,YAAI,KAAK,UAAU,SAAS,MAAM,WAAW,CAAC,WAAW;AACvD,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAChE;AAAA,MACF;AACA,aAAO,aAAaA,mBAAkB,CAAC;AAAA,QACrC,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,kBAAkB,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,SAAS;AACjF,gBAAI,gBAAgB;AACpB,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,mCAAiB;AACjB,sBAAI,EAAE,QAAQ,QAAQ,GAAG,IAAI,IAAI;AAC/B,6BAAS,IAAI;AACb;AAAA,kBACF;AACA,sBAAI,KAAK,QAAQ;AACf,6BAAS,IAAI;AACb;AAAA,kBACF;AACA,yBAAO,SAAS,EAAE,GAAG,QAAQ,OAAO,IAAI,MAAM,gJAAgJ,CAAC,CAAC;AAAA,gBAClM,KAAK;AACH,mCAAiB,GAAG,OAAO,SAAS,GAAG,EAAE,OAAO,KAAK,MAAM;AAAA,gBAC7D,KAAK;AACH,wBAAM,KAAK,UAAU,MAAM;AAAA,oBACzB,MAAM;AAAA,oBACN,GAAG;AAAA,kBACL,CAAC;AACD,yBAAO,SAAS,EAAE,GAAG,KAAK,aAAa,GAAG,CAAC;AAAA,cAC/C;AAAA,YACF,GAAG,SAAS,IAAI;AAAA,UAClB,CAAC,CAAC;AACF,mBAAS,eAAe,IAAI;AAC1B,mBAAO,gBAAgB,MAAM,MAAM,SAAS;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,WAAW;AACtF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,wBAAM,KAAK,UAAU,MAAM;AAAA,oBACzB,MAAM;AAAA,oBACN,GAAG;AAAA,kBACL,CAAC;AACD,yBAAO,UAAU,EAAE,GAAG,KAAK,aAAa,GAAG,CAAC;AAAA,cAChD;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,iBAAiB,KAAK;AAC7B,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,wBAAwB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,eAAe;AAC9F,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,wBAAM,KAAK,UAAU,MAAM;AAAA,oBACzB,MAAM;AAAA,oBACN,GAAG;AAAA,kBACL,CAAC;AACD,yBAAO,UAAU,EAAE,GAAG,KAAK,aAAa,GAAG,CAAC;AAAA,cAChD;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,qBAAqB,KAAK;AACjC,mBAAO,sBAAsB,MAAM,MAAM,SAAS;AAAA,UACpD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,gBAAgB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,KAAK;AAC5E,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,KAAK;AACf,yBAAO,UAAU,EAAE,GAAG,YAAY,WAAW,IAAI,IAAI,SAAS,GAAG;AAAA,oBAC/D,kBAAkB;AAAA,oBAClB;AAAA,kBACF,CAAC,EAAE,KAAK,SAAU,UAAU;AAC1B,wBAAI,OAAO,SAAS,KAAK,SAAS,eAAe,OAAO,SAAS,KAAK,SAAS,UAAU;AACvF,4BAAM,IAAI,MAAM,qCAAqC;AAAA,oBACvD;AACA,2BAAO,SAAS;AAAA,kBAClB,CAAC,EAAE,MAAM,SAAU,UAAU;AAC3B,wBAAI,oBAAoB,OAAO;AAC7B,0BAAI,SAAS,QAAQ,MAAM,wBAAwB,GAAG;AACpD,8BAAM,IAAI,MAAM,+CAA+C,OAAO,4BAA4B,CAAC;AAAA,sBACrG,OAAO;AACL,+BAAO,QAAQ,OAAO,QAAQ;AAAA,sBAChC;AAAA,oBACF,OAAO;AACL,6BAAO,QAAQ,OAAO,IAAI,QAAQ,iBAAiB,0CAA0C,OAAO,SAAS,QAAQ,GAAG,EAAE,OAAO,SAAS,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,oBACvK;AAAA,kBACF,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,aAAa,KAAK;AACzB,mBAAO,cAAc,MAAM,MAAM,SAAS;AAAA,UAC5C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,GAAG,CAAC;AAAA,QACH,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,WAAW,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,OAAO;AACzE,gBAAI,MACF,cACA,eACA,QACA,kBACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,CAAC;AACnE,sBAAI,EAAE,MAAM,QAAQ,GAAG,IAAI,IAAI;AAC7B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,sBAAI,aAAa,OAAO,wBAAwB,KAAK,GAAG;AACtD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,MAAM,oBAAoB,CAAC,CAAC;AAAA,gBACvE,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,QAAQ;AAAA,oBACpC,YAAY;AAAA,kBACd,CAAC,CAAC;AAAA,gBACJ,KAAK;AACH,iCAAe,MAAM,MAAM,GAAG;AAC9B,kCAAgB,eAAe,cAAc,CAAC,GAAG,SAAS,cAAc,CAAC;AACzE,sBAAI,EAAE,aAAa,WAAW,KAAK,CAAC,SAAS;AAC3C,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,MAAM,yBAAyB,CAAC,CAAC;AAAA,gBAC5E,KAAK;AACH,4BAAU,IAAI;AACd,yBAAOA,kBAAiB,gBAAgB,QAAQ,IAAI;AAAA,gBACtD,KAAK;AACH,qCAAmB,UAAU;AAC7B,yBAAO,UAAU,EAAE,GAAG,iBAAiB,eAAe,KAAK,CAAC;AAAA,cAChE;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,QAAQ,KAAK;AACpB,mBAAO,SAAS,MAAM,MAAM,SAAS;AAAA,UACvC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,QAAQ;AAClF,gBAAI,MACF,YACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,CAAC;AACnE,4BAAU,IAAI;AACd,yBAAO,aAAa,SAAS,QAAQ,QAAQ,IAAI;AAAA,gBACnD,KAAK;AACH,+BAAa,UAAU;AACvB,sBAAI,WAAW,mBAAmB;AAChC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,MAAM,uDAAuD,CAAC,CAAC;AAAA,gBAC1G,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,IAAIA,kBAAiB,WAAW,mBAAmB,QAAQ,IAAI,CAAC;AAAA,cAC1F;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,gBAAgB,KAAK;AAC5B,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;AC1OF,IAAAC,eAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,MAAM;AAAA;AAAA;;;ACLd;AAAA,8DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,eAAe;AAAA,MACjB,QAAQ;AAAA,MACR,8BAA8B;AAAA,IAChC;AACA,WAAO,eAAeA,UAAS,gCAAgC;AAAA,MAC7D,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,UAAU;AAAA,MACvC,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,QAAI,UAAU;AACd,QAAI,OAAO;AACX,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAU,KAAK;AACvC,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,KAAK,GAAG,EAAG;AAClD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,KAAK,GAAG;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA;AAAA;;;ACjCD;AAAA,sCAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAO,UAAU,UAAQ,QAAQ,EAAE;AAAA;AAAA;;;ACAnC,IAAAC,mBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,wBAAwB;AAChC,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,iBAAiB,GAAG;AAAE,UAAI,IAAI,cAAc,OAAO,MAAM,oBAAI,IAAI,IAAI;AAAQ,aAAO,mBAAmB,SAASE,kBAAiBC,IAAG;AAAE,YAAI,SAASA,MAAK,CAAC,kBAAkBA,EAAC,EAAG,QAAOA;AAAG,YAAI,cAAc,OAAOA,GAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,YAAI,WAAW,GAAG;AAAE,cAAI,EAAE,IAAIA,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,OAAO;AAAA,QAAG;AAAE,iBAAS,UAAU;AAAE,iBAAO,WAAWA,IAAG,WAAW,gBAAgB,IAAI,EAAE,WAAW;AAAA,QAAG;AAAE,eAAO,QAAQ,YAAY,OAAO,OAAOA,GAAE,WAAW,EAAE,aAAa,EAAE,OAAO,SAAS,YAAY,OAAI,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,gBAAgB,SAASA,EAAC;AAAA,MAAG,GAAG,iBAAiB,CAAC;AAAA,IAAG;AAC7oB,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,UAAI,0BAA0B,EAAG,QAAO,QAAQ,UAAU,MAAM,MAAM,SAAS;AAAG,UAAI,IAAI,CAAC,IAAI;AAAG,QAAE,KAAK,MAAM,GAAG,CAAC;AAAG,UAAI,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,CAAC,GAAG;AAAG,aAAO,KAAK,gBAAgB,GAAG,EAAE,SAAS,GAAG;AAAA,IAAG;AACzO,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASA,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,kBAAkB,GAAG;AAAE,UAAI;AAAE,eAAO,OAAO,SAAS,SAAS,KAAK,CAAC,EAAE,QAAQ,eAAe;AAAA,MAAG,SAAS,GAAG;AAAE,eAAO,cAAc,OAAO;AAAA,MAAG;AAAA,IAAE;AACvJ,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,QAAI,wBAAwBH,SAAQ,wBAAwB,SAAU,QAAQ;AAC5E,eAASM,uBAAsB,SAAS;AACtC,YAAI;AACJ,wBAAgB,MAAMA,sBAAqB;AAC3C,YAAI,aAAa,gBAAgBA,yBAAwB,KAAK,cAAc,QAAQ;AACpF,gBAAQ,WAAW,MAAMA,wBAAuB,CAAC,OAAO,CAAC;AACzD,cAAM,YAAY;AAClB,cAAM,cAAcA;AACpB,cAAM,OAAO;AACb,eAAO;AAAA,MACT;AACA,gBAAUA,wBAAuB,MAAM;AACvC,aAAO,aAAaA,sBAAqB;AAAA,IAC3C,EAAE,iBAAiB,KAAK,CAAC;AAAA;AAAA;;;ACnCzB,IAAAC,kBAAA;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmB;AAC3B,IAAAA,SAAQ,kBAAkB;AAC1B,IAAAA,SAAQ,kBAAkB;AAC1B,IAAAA,SAAQ,2BAA2B;AACnC,IAAAA,SAAQ,6BAA6B;AACrC,IAAAA,SAAQ,mBAAmB;AAC3B,QAAI,eAAe,uBAAuB,qBAAsB;AAChE,QAAI,eAAe;AACnB,QAAI,SAAS;AACb,QAAI,UAAU;AACd,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,mBAAmB,GAAG;AAAE,aAAO,mBAAmB,CAAC,KAAK,iBAAiB,CAAC,KAAK,4BAA4B,CAAC,KAAK,mBAAmB;AAAA,IAAG;AAChJ,aAAS,qBAAqB;AAAE,YAAM,IAAI,UAAU,sIAAsI;AAAA,IAAG;AAC7L,aAAS,mBAAmB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO,kBAAkB,CAAC;AAAA,IAAG;AACpF,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,IAAI,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,CAAC,GAAG;AAAE,YAAI,MAAM,QAAQ,CAAC,MAAM,IAAI,4BAA4B,CAAC,MAAM,KAAK,KAAK,YAAY,OAAO,EAAE,QAAQ;AAAE,gBAAM,IAAI;AAAI,cAAI,KAAK,GAAG,IAAI,SAASC,KAAI;AAAA,UAAC;AAAG,iBAAO,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI;AAAE,mBAAO,MAAM,EAAE,SAAS,EAAE,MAAM,KAAG,IAAI,EAAE,MAAM,OAAI,OAAO,EAAE,IAAI,EAAE;AAAA,UAAG,GAAG,GAAG,SAASC,GAAEC,IAAG;AAAE,kBAAMA;AAAA,UAAG,GAAG,GAAG,EAAE;AAAA,QAAG;AAAE,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAAG;AAAE,UAAI,GAAG,IAAI,MAAI,IAAI;AAAI,aAAO,EAAE,GAAG,SAAS,IAAI;AAAE,YAAI,EAAE,KAAK,CAAC;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAIA,KAAI,EAAE,KAAK;AAAG,eAAO,IAAIA,GAAE,MAAMA;AAAA,MAAG,GAAG,GAAG,SAASD,GAAEC,IAAG;AAAE,YAAI,MAAI,IAAIA;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI;AAAE,eAAK,QAAQ,EAAE,UAAU,EAAE,OAAO;AAAA,QAAG,UAAE;AAAU,cAAI,EAAG,OAAM;AAAA,QAAG;AAAA,MAAE,EAAE;AAAA,IAAG;AACr1B,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,SAAS,GAAG;AAAE,aAAO,gBAAgB,CAAC,KAAK,iBAAiB,CAAC,KAAK,4BAA4B,CAAC,KAAK,iBAAiB;AAAA,IAAG;AACjI,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,iBAAiB,GAAG;AAAE,UAAI,eAAe,OAAO,UAAU,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,EAAE,YAAY,EAAG,QAAO,MAAM,KAAK,CAAC;AAAA,IAAG;AAChJ,aAAS,gBAAgB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAA,IAAG;AAC9D,aAAS,iBAAiB,eAAe,iBAAiB,YAAY;AACpE,UAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAClF,UAAI,oBAAoB,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAC9D,UAAI,gBAAgB,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAC1D,UAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC/E,UAAI,eAAe,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACvF,UAAI,mBAAmB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC3F,UAAI,gBAAgB,WAAW,GAAG,KAAK,MAAM;AAC3C,cAAM,MAAM,2DAA2D;AAAA,MACzE;AACA,UAAI,UAAU,IAAI,aAAa,QAAQ,cAAc,UAAU,GAAG,IAAI;AACtE,UAAI,MAAM,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AACtC,UAAI,SAAS,GAAG,aAAa,SAAS,EAAE,EAAE,SAAS,QAAQ;AAC3D,UAAI,UAAU,IAAI,aAAa,mBAAmB,SAAS;AAAA,QACzD,KAAK,aAAa;AAAA,QAClB;AAAA,QACA,YAAY;AAAA,UACV,SAAS;AAAA,UACT,SAAS,MAAM;AAAA,QACjB;AAAA,MACF,CAAC,EAAE,aAAa,aAAa,UAAU,WAAW;AAAA,QAChD,MAAM,GAAG,OAAO,YAAY,OAAO;AAAA,QACnC;AAAA,QACA,QAAQ;AAAA,MACV,CAAC,CAAC,EAAE,aAAa,aAAa,UAAU,WAAW;AAAA,QACjD,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ,QAAQ,UAAU;AAAA,MAC5B,CAAC,CAAC;AACF,UAAI,cAAc;AAChB,YAAI,CAAC,kBAAkB;AACrB,gBAAM,MAAM,0DAA0D;AAAA,QACxE;AACA,gBAAQ,aAAa,aAAa,UAAU,WAAW;AAAA,UACrD,MAAM;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC,CAAC;AAAA,MACJ;AACA,UAAI,MAAM;AACR,gBAAQ,QAAQ,aAAa,KAAK,GAAG,IAAI,CAAC;AAAA,MAC5C;AACA,UAAI,cAAc,QAAQ,MAAM;AAChC,kBAAY,KAAK,aAAa;AAC9B,aAAO,YAAY,WAAW,EAAE,MAAM,QAAQ,EAAE,SAAS;AAAA,IAC3D;AACA,aAAS,gBAAgB,aAAa,iBAAiB,mBAAmB,aAAa,eAAe;AACpG,UAAI;AACJ,UAAI,gBAAgB,WAAW,GAAG,GAAG;AACnC,cAAM,MAAM,kEAAkE;AAAA,MAChF;AACA,UAAI;AACJ,UAAI;AACF,sBAAc,IAAI,aAAa,YAAY,aAAa,iBAAiB;AAAA,MAC3E,SAAS,SAAS;AAChB,YAAI;AACF,wBAAc,IAAI,aAAa,mBAAmB,aAAa,iBAAiB;AAAA,QAClF,SAAS,UAAU;AACjB,gBAAM,IAAI,QAAQ,sBAAsB,yEAAyE;AAAA,QACnH;AACA,cAAM,IAAI,QAAQ,sBAAsB,6EAA6E;AAAA,MACvH;AACA,UAAI,WAAW,OAAO,SAAS,YAAY,UAAU,EAAE;AACvD,UAAI,aAAa,GAAG;AAClB,cAAM,IAAI,QAAQ,sBAAsB,gDAAgD;AAAA,MAC1F;AACA,UAAI,YAAY,WAAW,iBAAiB;AAC1C,cAAM,IAAI,QAAQ,sBAAsB,qEAAqE;AAAA,MAC/G;AACA,UAAI,YAAY,WAAW,SAAS,GAAG;AACrC,cAAM,IAAI,QAAQ,sBAAsB,uDAAuD;AAAA,MACjG;AACA,UAAI,wBAAwB,SAAS,YAAY,UAAU,GACzD,YAAY,sBAAsB,CAAC,GACnC,uBAAuB,sBAAsB,MAAM,CAAC;AACtD,UAAI,CAAC,UAAU,QAAQ;AACrB,cAAM,IAAI,QAAQ,sBAAsB,6DAA6D;AAAA,MACvG;AACA,UAAI,kBAAkB,UAAU;AAChC,UAAI,OAAO;AACX,UAAI,YAAY,KAAK,SAAS,aAAa,UAAU;AACnD,YAAI,gBAAgB,WAAW,GAAG,GAAG;AACnC,gBAAM,IAAI,QAAQ,sBAAsB,yEAAyE;AAAA,QACnH;AACA,YAAI,YAAY,KAAK,SAAS,aAAa,QAAQ;AACjD,gBAAM,IAAI,QAAQ,sBAAsB,6CAA6C;AAAA,QACvF;AACA,eAAO,YAAY,KAAK;AAAA,MAC1B;AACA,UAAI,UAAU,SAAS,cAAc;AACnC,cAAM,IAAI,QAAQ,sBAAsB,yDAAyD;AAAA,MACnG;AACA,UAAI,YAAY,cAAc,OAAO,UAAU,wBAAwB,YAAY,gBAAgB,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,SAAS,EAAE,MAAM,aAAa,iBAAiB;AAC1N,cAAM,IAAI,QAAQ,sBAAsB,kDAAkD;AAAA,MAC5F;AACA,UAAI,CAAC,OAAO,MAAM,mBAAmB,aAAa,KAAK,CAAC,GAAG;AACzD,cAAM,IAAI,QAAQ,sBAAsB,6BAA6B;AAAA,MACvE;AACA,UAAI,UAAU,UAAU,QAAW;AACjC,cAAM,IAAI,QAAQ,sBAAsB,uDAAuD;AAAA,MACjG;AACA,UAAI,CAAC,UAAU,OAAO;AACpB,cAAM,IAAI,QAAQ,sBAAsB,sDAAsD;AAAA,MAChG;AACA,UAAI,OAAO,KAAK,UAAU,MAAM,SAAS,GAAG,QAAQ,EAAE,WAAW,IAAI;AACnE,cAAM,IAAI,QAAQ,sBAAsB,6EAA6E;AAAA,MACvH;AACA,UAAI,CAAC,aAAa;AAChB,cAAM,IAAI,QAAQ,sBAAsB,sEAAsE;AAAA,MAChH;AACA,UAAI;AACJ,UAAI,OAAO,gBAAgB,UAAU;AACnC,YAAI,GAAG,OAAO,aAAa,OAAO,MAAM,UAAU,MAAM;AACtD,8BAAoB;AAAA,QACtB;AAAA,MACF,WAAW,MAAM,QAAQ,WAAW,GAAG;AACrC,4BAAoB,YAAY,KAAK,SAAU,QAAQ;AACrD,iBAAO,GAAG,OAAO,QAAQ,OAAO,MAAM,UAAU;AAAA,QAClD,CAAC;AAAA,MACH,OAAO;AACL,cAAM,IAAI,QAAQ,sBAAsB,4CAA4C,OAAO,QAAQ,WAAW,GAAG,qCAAqC,CAAC;AAAA,MACzJ;AACA,UAAI,CAAC,mBAAmB;AACtB,cAAM,IAAI,QAAQ,sBAAsB,mGAAmG;AAAA,MAC7I;AACA,UAAI,YAAY,2BAA2B,oBAAoB,GAC7D;AACF,UAAI;AACF,aAAK,UAAU,EAAE,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAO;AAClD,cAAI,KAAK,MAAM;AACf,cAAI,GAAG,SAAS,cAAc;AAC5B,kBAAM,IAAI,QAAQ,sBAAsB,kEAAkE;AAAA,UAC5G;AACA,cAAI,GAAG,WAAW,mBAAmB,GAAG,SAAS,iBAAiB;AAChE,kBAAM,IAAI,QAAQ,sBAAsB,sDAAsD;AAAA,UAChG;AACA,cAAI,GAAG,SAAS,mBAAmB;AACjC,gBAAI,GAAG,UAAU,QAAW;AAC1B,oBAAM,IAAI,QAAQ,sBAAsB,sDAAsD;AAAA,YAChG;AACA,gBAAI,GAAG,MAAM,QAAQ,OAAO,KAAK,aAAa,CAAC,GAAG;AAChD,oBAAM,IAAI,QAAQ,sBAAsB,oDAAoD,OAAO,aAAa,CAAC;AAAA,YACnH;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAASC,MAAK;AACZ,kBAAU,EAAEA,IAAG;AAAA,MACjB,UAAE;AACA,kBAAU,EAAE;AAAA,MACd;AACA,UAAI,CAAC,iBAAiB,aAAa,eAAe,GAAG;AACnD,cAAM,IAAI,QAAQ,sBAAsB,sCAAsC,OAAO,iBAAiB,GAAG,CAAC;AAAA,MAC5G;AACA,aAAO;AAAA,QACL,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,2BAA2B,aAAa,iBAAiB,mBAAmB,WAAW,eAAe,aAAa,eAAe;AACzI,UAAI,UAAU,cAAc,IAAI,SAAU,QAAQ;AAChD,eAAO,OAAO;AAAA,MAChB,CAAC;AACD,UAAI,eAAe,yBAAyB,aAAa,iBAAiB,mBAAmB,SAAS,aAAa,aAAa;AAChI,UAAI,SAAS;AACb,UAAI,QAAQ,SAASC,SAAQ;AAC3B,YAAI;AACJ,YAAI,SAAS,cAAc,EAAE;AAC7B,YAAI,cAAc,sBAAsB,cAAc,KAAK,SAAU,GAAG;AACtE,iBAAO,EAAE,QAAQ;AAAA,QACnB,CAAC,OAAO,QAAQ,wBAAwB,SAAS,SAAS,oBAAoB,WAAW;AACzF,kBAAU;AAAA,MACZ;AACA,eAAS,KAAK,GAAG,gBAAgB,cAAc,KAAK,cAAc,QAAQ,MAAM;AAC9E,cAAM;AAAA,MACR;AACA,UAAI,SAAS,WAAW;AACtB,cAAM,IAAI,QAAQ,sBAAsB,uBAAuB,OAAO,QAAQ,yBAAyB,EAAE,OAAO,WAAW,GAAI,CAAC;AAAA,MAClI;AACA,aAAO;AAAA,IACT;AACA,aAAS,yBAAyB,aAAa,iBAAiB,mBAAmB,SAAS,aAAa,eAAe;AACtH,UAAI,mBAAmB,gBAAgB,aAAa,iBAAiB,mBAAmB,aAAa,aAAa,GAChH,KAAK,iBAAiB;AACxB,UAAI;AACJ,UAAI;AACF,mBAAW,aAAa,QAAQ,cAAc,eAAe;AAAA,MAC/D,SAASD,MAAK;AACZ,cAAM,IAAI,MAAM,+DAA+D,OAAOA,KAAI,OAAO,CAAC;AAAA,MACpG;AACA,UAAI,gBAAgB,oBAAI,IAAI;AAC5B,UAAI,aAAa,2BAA2B,OAAO,GACjD;AACF,UAAI;AACF,aAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAO;AACrD,cAAI,UAAU,OAAO;AACrB,cAAI,YAAY,SAAS,UAAU,GAAG;AACpC;AAAA,UACF;AACA,cAAI,QAAQ,OAAO,CAAC,MAAM,KAAK;AAC7B;AAAA,UACF;AACA,wBAAc,IAAI,OAAO;AAAA,QAC3B;AAAA,MACF,SAASA,MAAK;AACZ,mBAAW,EAAEA,IAAG;AAAA,MAClB,UAAE;AACA,mBAAW,EAAE;AAAA,MACf;AACA,UAAI,cAAc,SAAS,GAAG;AAC5B,cAAM,IAAI,QAAQ,sBAAsB,mFAAmF;AAAA,MAC7H;AACA,UAAI;AACJ,UAAI,aAAa,2BAA2B,GAAG,UAAU,GACvD;AACF,UAAI;AACF,aAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAO;AACrD,cAAI,KAAK,OAAO;AAChB,cAAI,GAAG,SAAS,gBAAgB,GAAG,SAAS,iBAAiB;AAC3D,gBAAI,kBAAkB;AACpB,oBAAM,IAAI,QAAQ,sBAAsB,6CAA6C;AAAA,YACvF;AACA,+BAAmB,GAAG;AAAA,UACxB;AAAA,QACF;AAAA,MACF,SAASA,MAAK;AACZ,mBAAW,EAAEA,IAAG;AAAA,MAClB,UAAE;AACA,mBAAW,EAAE;AAAA,MACf;AACA,UAAI,aAAa,CAAC,SAAS,UAAU,CAAC,EAAE,OAAO,mBAAmB,MAAM,KAAK,aAAa,CAAC,CAAC;AAC5F,UAAI,kBAAkB;AACpB,mBAAW,KAAK,gBAAgB;AAAA,MAClC;AACA,UAAI,eAAe,gBAAgB,IAAI,UAAU;AACjD,UAAI,uBAAuB;AAC3B,UAAI,iCAAiC;AACrC,eAAS,MAAM,GAAG,iBAAiB,cAAc,MAAM,eAAe,QAAQ,OAAO;AACnF,YAAI,SAAS,eAAe,GAAG;AAC/B,YAAI,WAAW,SAAS,UAAU,GAAG;AACnC,iCAAuB;AAAA,QACzB;AACA,YAAI,WAAW,kBAAkB;AAC/B,2CAAiC;AAAA,QACnC;AAAA,MACF;AACA,UAAI,CAAC,sBAAsB;AACzB,cAAM,IAAI,QAAQ,sBAAsB,sCAAsC,OAAO,SAAS,UAAU,GAAG,GAAG,CAAC;AAAA,MACjH;AACA,UAAI,oBAAoB,CAAC,gCAAgC;AACvD,cAAM,IAAI,QAAQ,sBAAsB,0FAA+F;AAAA,MACzI;AACA,UAAI,aAAa,WAAW,GAAG;AAC7B,cAAM,IAAI,QAAQ,sBAAsB,4DAA4D;AAAA,MACtG;AACA,UAAI,aAAa,WAAW,GAAG,WAAW,QAAQ;AAChD,cAAM,IAAI,QAAQ,sBAAsB,yCAAyC;AAAA,MACnF;AACA,mBAAa,OAAO,aAAa,QAAQ,SAAS,UAAU,CAAC,GAAG,CAAC;AACjE,UAAI,kBAAkB;AACpB,qBAAa,OAAO,aAAa,QAAQ,gBAAgB,GAAG,CAAC;AAAA,MAC/D;AACA,aAAO;AAAA,IACT;AACA,aAAS,iBAAiB,aAAa,WAAW;AAChD,aAAO,gBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,WAAW;AAAA,IAC9D;AACA,aAAS,gBAAgB,aAAa,SAAS;AAC7C,UAAI,sBAAsB,YAAY,KAAK;AAC3C,UAAI,eAAe,mBAAmB,YAAY,UAAU;AAC5D,UAAI,eAAe,oBAAI,IAAI;AAC3B,UAAI,aAAa,2BAA2B,OAAO,GACjD;AACF,UAAI;AACF,aAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAO;AACrD,cAAI,SAAS,OAAO;AACpB,cAAI,aAAa,WAAW,GAAG;AAC7B;AAAA,UACF;AACA,cAAI,UAAU;AACd,cAAI;AACF,sBAAU,aAAa,QAAQ,cAAc,MAAM;AAAA,UACrD,SAASA,MAAK;AACZ,kBAAM,IAAI,QAAQ,sBAAsB,kCAAkC,OAAOA,KAAI,OAAO,CAAC;AAAA,UAC/F;AACA,mBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,gBAAI,SAAS,aAAa,CAAC;AAC3B,gBAAI,CAAC,OAAO,KAAK,EAAE,OAAO,QAAQ,cAAc,CAAC,GAAG;AAClD;AAAA,YACF;AACA,gBAAI,QAAQ,OAAO,qBAAqB,OAAO,UAAU,CAAC,GAAG;AAC3D,2BAAa,IAAI,MAAM;AACvB,2BAAa,OAAO,GAAG,CAAC;AACxB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAASA,MAAK;AACZ,mBAAW,EAAEA,IAAG;AAAA,MAClB,UAAE;AACA,mBAAW,EAAE;AAAA,MACf;AACA,aAAO,MAAM,KAAK,YAAY;AAAA,IAChC;AAAA;AAAA;;;AC3UA;AAAA,2DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,eAAe;AAAA,MACjB,uBAAuB;AAAA,IACzB;AACA,WAAO,eAAeA,UAAS,yBAAyB;AAAA,MACtD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,QAAI,SAAS;AACb,WAAO,KAAK,MAAM,EAAE,QAAQ,SAAU,KAAK;AACzC,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,OAAO,GAAG,EAAG;AACpD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,OAAO,GAAG;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,UAAU;AAAA;AAAA;;;AC1Bd;AAAA,6DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,MAAM;AAAA;AAAA;;;ACLd;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,aAAa;AACrB,QAAI;AACJ,KAAC,SAAU,aAAa;AACtB,UAAI,oBAAoB,SAAUC,oBAAmB;AACnD,QAAAA,mBAAkB,iBAAiB,IAAI;AACvC,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,kBAAY,oBAAoB;AAChC,UAAI,wBAAwB,SAAUC,wBAAuB;AAC3D,QAAAA,uBAAsB,eAAe,IAAI;AACzC,QAAAA,uBAAsB,SAAS,IAAI;AACnC,QAAAA,uBAAsB,aAAa,IAAI;AACvC,QAAAA,uBAAsB,oBAAoB,IAAI;AAC9C,QAAAA,uBAAsB,aAAa,IAAI;AACvC,QAAAA,uBAAsB,YAAY,IAAI;AACtC,QAAAA,uBAAsB,aAAa,IAAI;AACvC,QAAAA,uBAAsB,YAAY,IAAI;AACtC,QAAAA,uBAAsB,cAAc,IAAI;AACxC,QAAAA,uBAAsB,WAAW,IAAI;AACrC,QAAAA,uBAAsB,YAAY,IAAI;AACtC,QAAAA,uBAAsB,cAAc,IAAI;AACxC,QAAAA,uBAAsB,gBAAgB,IAAI;AAC1C,QAAAA,uBAAsB,uBAAuB,IAAI;AACjD,QAAAA,uBAAsB,wBAAwB,IAAI;AAClD,QAAAA,uBAAsB,uBAAuB,IAAI;AACjD,QAAAA,uBAAsB,+BAA+B,IAAI;AACzD,QAAAA,uBAAsB,6BAA6B,IAAI;AACvD,QAAAA,uBAAsB,mBAAmB,IAAI;AAC7C,QAAAA,uBAAsB,UAAU,IAAI;AACpC,QAAAA,uBAAsB,0BAA0B,IAAI;AACpD,QAAAA,uBAAsB,mBAAmB,IAAI;AAC7C,QAAAA,uBAAsB,sBAAsB,IAAI;AAChD,QAAAA,uBAAsB,uBAAuB,IAAI;AACjD,QAAAA,uBAAsB,oBAAoB,IAAI;AAC9C,QAAAA,uBAAsB,yBAAyB,IAAI;AACnD,QAAAA,uBAAsB,kBAAkB,IAAI;AAC5C,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,kBAAY,wBAAwB;AACpC,UAAI,yBAAyB,SAAUC,yBAAwB;AAC7D,QAAAA,wBAAuBA,wBAAuB,eAAe,IAAI,CAAC,IAAI;AACtE,QAAAA,wBAAuBA,wBAAuB,SAAS,IAAI,CAAC,IAAI;AAChE,QAAAA,wBAAuBA,wBAAuB,aAAa,IAAI,CAAC,IAAI;AACpE,QAAAA,wBAAuBA,wBAAuB,oBAAoB,IAAI,CAAC,IAAI;AAC3E,QAAAA,wBAAuBA,wBAAuB,aAAa,IAAI,CAAC,IAAI;AACpE,QAAAA,wBAAuBA,wBAAuB,YAAY,IAAI,CAAC,IAAI;AACnE,QAAAA,wBAAuBA,wBAAuB,aAAa,IAAI,CAAC,IAAI;AACpE,QAAAA,wBAAuBA,wBAAuB,YAAY,IAAI,CAAC,IAAI;AACnE,QAAAA,wBAAuBA,wBAAuB,cAAc,IAAI,CAAC,IAAI;AACrE,QAAAA,wBAAuBA,wBAAuB,WAAW,IAAI,CAAC,IAAI;AAClE,QAAAA,wBAAuBA,wBAAuB,YAAY,IAAI,EAAE,IAAI;AACpE,QAAAA,wBAAuBA,wBAAuB,cAAc,IAAI,EAAE,IAAI;AACtE,QAAAA,wBAAuBA,wBAAuB,gBAAgB,IAAI,EAAE,IAAI;AACxE,QAAAA,wBAAuBA,wBAAuB,uBAAuB,IAAI,EAAE,IAAI;AAC/E,QAAAA,wBAAuBA,wBAAuB,wBAAwB,IAAI,EAAE,IAAI;AAChF,QAAAA,wBAAuBA,wBAAuB,uBAAuB,IAAI,EAAE,IAAI;AAC/E,QAAAA,wBAAuBA,wBAAuB,+BAA+B,IAAI,EAAE,IAAI;AACvF,QAAAA,wBAAuBA,wBAAuB,6BAA6B,IAAI,EAAE,IAAI;AACrF,QAAAA,wBAAuBA,wBAAuB,mBAAmB,IAAI,EAAE,IAAI;AAC3E,QAAAA,wBAAuBA,wBAAuB,UAAU,IAAI,EAAE,IAAI;AAClE,QAAAA,wBAAuBA,wBAAuB,0BAA0B,IAAI,EAAE,IAAI;AAClF,QAAAA,wBAAuBA,wBAAuB,mBAAmB,IAAI,EAAE,IAAI;AAC3E,QAAAA,wBAAuBA,wBAAuB,sBAAsB,IAAI,EAAE,IAAI;AAC9E,QAAAA,wBAAuBA,wBAAuB,uBAAuB,IAAI,EAAE,IAAI;AAC/E,QAAAA,wBAAuBA,wBAAuB,oBAAoB,IAAI,EAAE,IAAI;AAC5E,QAAAA,wBAAuBA,wBAAuB,yBAAyB,IAAI,EAAE,IAAI;AACjF,QAAAA,wBAAuBA,wBAAuB,kBAAkB,IAAI,EAAE,IAAI;AAC1E,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,kBAAY,yBAAyB;AACrC,UAAI,+BAA+B,SAAUC,+BAA8B;AACzE,QAAAA,8BAA6B,WAAW,IAAI;AAC5C,QAAAA,8BAA6B,YAAY,IAAI;AAC7C,QAAAA,8BAA6B,aAAa,IAAI;AAC9C,QAAAA,8BAA6B,mBAAmB,IAAI;AACpD,QAAAA,8BAA6B,2BAA2B,IAAI;AAC5D,QAAAA,8BAA6B,0BAA0B,IAAI;AAC3D,QAAAA,8BAA6B,kBAAkB,IAAI;AACnD,QAAAA,8BAA6B,YAAY,IAAI;AAC7C,QAAAA,8BAA6B,cAAc,IAAI;AAC/C,QAAAA,8BAA6B,aAAa,IAAI;AAC9C,QAAAA,8BAA6B,sBAAsB,IAAI;AACvD,QAAAA,8BAA6B,yBAAyB,IAAI;AAC1D,QAAAA,8BAA6B,sBAAsB,IAAI;AACvD,QAAAA,8BAA6B,qBAAqB,IAAI;AACtD,QAAAA,8BAA6B,mBAAmB,IAAI;AACpD,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,kBAAY,+BAA+B;AAAA,IAC7C,GAAG,eAAeJ,SAAQ,aAAa,aAAa,CAAC,EAAE;AAAA;AAAA;;;AC9FvD;AAAA,mEAAAK,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,aAAa;AACrB,QAAI,aAAaA,SAAQ,aAAa,SAAUC,aAAY;AAC1D,MAAAA,YAAWA,YAAW,iBAAiB,IAAI,CAAC,IAAI;AAChD,MAAAA,YAAWA,YAAW,iBAAiB,IAAI,CAAC,IAAI;AAChD,MAAAA,YAAWA,YAAW,kBAAkB,IAAI,CAAC,IAAI;AACjD,MAAAA,YAAWA,YAAW,iBAAiB,IAAI,CAAC,IAAI;AAChD,MAAAA,YAAWA,YAAW,4BAA4B,IAAI,CAAC,IAAI;AAC3D,MAAAA,YAAWA,YAAW,6BAA6B,IAAI,CAAC,IAAI;AAC5D,MAAAA,YAAWA,YAAW,uBAAuB,IAAI,CAAC,IAAI;AACtD,MAAAA,YAAWA,YAAW,uCAAuC,IAAI,CAAC,IAAI;AACtE,MAAAA,YAAWA,YAAW,gBAAgB,IAAI,EAAE,IAAI;AAChD,MAAAA,YAAWA,YAAW,gBAAgB,IAAI,EAAE,IAAI;AAChD,MAAAA,YAAWA,YAAW,gBAAgB,IAAI,EAAE,IAAI;AAChD,MAAAA,YAAWA,YAAW,mBAAmB,IAAI,EAAE,IAAI;AACnD,MAAAA,YAAWA,YAAW,mBAAmB,IAAI,EAAE,IAAI;AACnD,MAAAA,YAAWA,YAAW,mBAAmB,IAAI,EAAE,IAAI;AACnD,MAAAA,YAAWA,YAAW,sBAAsB,IAAI,EAAE,IAAI;AACtD,MAAAA,YAAWA,YAAW,wBAAwB,IAAI,EAAE,IAAI;AACxD,MAAAA,YAAWA,YAAW,8CAA8C,IAAI,EAAE,IAAI;AAC9E,MAAAA,YAAWA,YAAW,yBAAyB,IAAI,EAAE,IAAI;AACzD,MAAAA,YAAWA,YAAW,eAAe,IAAI,EAAE,IAAI;AAC/C,MAAAA,YAAWA,YAAW,eAAe,IAAI,EAAE,IAAI;AAC/C,MAAAA,YAAWA,YAAW,eAAe,IAAI,EAAE,IAAI;AAC/C,MAAAA,YAAWA,YAAW,OAAO,IAAI,EAAE,IAAI;AACvC,MAAAA,YAAWA,YAAW,cAAc,IAAI,EAAE,IAAI;AAC9C,MAAAA,YAAWA,YAAW,cAAc,IAAI,EAAE,IAAI;AAC9C,MAAAA,YAAWA,YAAW,cAAc,IAAI,EAAE,IAAI;AAC9C,MAAAA,YAAWA,YAAW,iBAAiB,IAAI,EAAE,IAAI;AACjD,MAAAA,YAAWA,YAAW,2BAA2B,IAAI,EAAE,IAAI;AAC3D,MAAAA,YAAWA,YAAW,oCAAoC,IAAI,EAAE,IAAI;AACpE,MAAAA,YAAWA,YAAW,2BAA2B,IAAI,EAAE,IAAI;AAC3D,MAAAA,YAAWA,YAAW,6BAA6B,IAAI,EAAE,IAAI;AAC7D,MAAAA,YAAWA,YAAW,6BAA6B,IAAI,EAAE,IAAI;AAC7D,MAAAA,YAAWA,YAAW,6BAA6B,IAAI,EAAE,IAAI;AAC7D,MAAAA,YAAWA,YAAW,+BAA+B,IAAI,EAAE,IAAI;AAC/D,MAAAA,YAAWA,YAAW,+BAA+B,IAAI,EAAE,IAAI;AAC/D,MAAAA,YAAWA,YAAW,+BAA+B,IAAI,EAAE,IAAI;AAC/D,MAAAA,YAAWA,YAAW,0BAA0B,IAAI,EAAE,IAAI;AAC1D,MAAAA,YAAWA,YAAW,0BAA0B,IAAI,EAAE,IAAI;AAC1D,MAAAA,YAAWA,YAAW,0BAA0B,IAAI,EAAE,IAAI;AAC1D,MAAAA,YAAWA,YAAW,uCAAuC,IAAI,EAAE,IAAI;AACvE,MAAAA,YAAWA,YAAW,uCAAuC,IAAI,EAAE,IAAI;AACvE,MAAAA,YAAWA,YAAW,uCAAuC,IAAI,EAAE,IAAI;AACvE,MAAAA,YAAWA,YAAW,4BAA4B,IAAI,EAAE,IAAI;AAC5D,MAAAA,YAAWA,YAAW,4BAA4B,IAAI,EAAE,IAAI;AAC5D,MAAAA,YAAWA,YAAW,4BAA4B,IAAI,EAAE,IAAI;AAC5D,MAAAA,YAAWA,YAAW,+BAA+B,IAAI,EAAE,IAAI;AAC/D,MAAAA,YAAWA,YAAW,0BAA0B,IAAI,EAAE,IAAI;AAC1D,MAAAA,YAAWA,YAAW,yBAAyB,IAAI,EAAE,IAAI;AACzD,MAAAA,YAAWA,YAAW,sBAAsB,IAAI,EAAE,IAAI;AACtD,MAAAA,YAAWA,YAAW,wBAAwB,IAAI,EAAE,IAAI;AACxD,MAAAA,YAAWA,YAAW,wBAAwB,IAAI,EAAE,IAAI;AACxD,MAAAA,YAAWA,YAAW,wBAAwB,IAAI,EAAE,IAAI;AACxD,MAAAA,YAAWA,YAAW,mBAAmB,IAAI,EAAE,IAAI;AACnD,MAAAA,YAAWA,YAAW,kBAAkB,IAAI,EAAE,IAAI;AAClD,aAAOA;AAAA,IACT,EAAE,CAAC,CAAC;AAAA;AAAA;;;AC7DJ;AAAA,gEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,YAAY;AACpB,QAAI,eAAe;AACnB,QAAI,UAAU,wBAAwB,iBAA0B;AAChE,aAAS,wBAAwB,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,QAAS,KAAI,IAAI,oBAAI,QAAQ,GAAG,IAAI,oBAAI,QAAQ;AAAG,cAAQ,0BAA0B,SAASE,yBAAwBC,IAAGC,IAAG;AAAE,YAAI,CAACA,MAAKD,MAAKA,GAAE,WAAY,QAAOA;AAAG,YAAI,GAAG,GAAG,IAAI,EAAE,WAAW,MAAM,SAASA,GAAE;AAAG,YAAI,SAASA,MAAK,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,GAAG,QAAO;AAAG,YAAI,IAAIC,KAAI,IAAI,GAAG;AAAE,cAAI,EAAE,IAAID,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,CAAC;AAAA,QAAG;AAAE,iBAAS,MAAMA,GAAG,eAAc,MAAM,CAAC,EAAE,eAAe,KAAKA,IAAG,EAAE,OAAO,KAAK,IAAI,OAAO,mBAAmB,OAAO,yBAAyBA,IAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAIA,GAAE,EAAE;AAAI,eAAO;AAAA,MAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACnoB,QAAI;AACJ,KAAC,SAAU,YAAY;AACrB,UAAI,aAAa,WAAW,aAAa,QAAQ;AACjD,UAAI,YAAY,SAAUE,YAAW;AACnC,QAAAA,WAAU,KAAK,IAAI;AACnB,QAAAA,WAAU,gBAAgB,IAAI;AAC9B,QAAAA,WAAU,WAAW,IAAI;AACzB,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,iBAAW,YAAY;AACvB,UAAI,wBAAwB,aAAa,WAAW;AACpD,UAAI,yBAAyB,aAAa,WAAW;AAAA,IACvD,GAAG,cAAcL,SAAQ,YAAY,YAAY,CAAC,EAAE;AAAA;AAAA;;;ACtBpD;AAAA,sEAAAM,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,kBAAkB;AAC1B,QAAI,eAAe;AACnB,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,eAAe,GAAG,GAAG;AAAE,aAAO,gBAAgB,CAAC,KAAK,sBAAsB,GAAG,CAAC,KAAK,4BAA4B,GAAG,CAAC,KAAK,iBAAiB;AAAA,IAAG;AACrJ,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,sBAAsB,GAAG,GAAG;AAAE,UAAI,IAAI,QAAQ,IAAI,OAAO,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,QAAQ,GAAG;AAAE,YAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAI,IAAI;AAAI,YAAI;AAAE,cAAI,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;AAAE,gBAAI,OAAO,CAAC,MAAM,EAAG;AAAQ,gBAAI;AAAA,UAAI,MAAO,QAAO,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,WAAW,IAAI,IAAI,KAAG;AAAA,QAAE,SAASC,IAAG;AAAE,cAAI,MAAI,IAAIA;AAAA,QAAG,UAAE;AAAU,cAAI;AAAE,gBAAI,CAAC,KAAK,QAAQ,EAAE,WAAW,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAI;AAAA,UAAQ,UAAE;AAAU,gBAAI,EAAG,OAAM;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO;AAAA,MAAG;AAAA,IAAE;AACnhB,aAAS,gBAAgB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAA,IAAG;AAC9D,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,kBAAkBF,SAAQ,kBAAkB,WAAY;AAC1D,eAASG,iBAAgB,UAAU;AACjC,YAAI,QAAQ;AACZ,wBAAgB,MAAMA,gBAAe;AACrC,aAAK,eAAe,IAAI,aAAa,QAAQ,SAAS,YAAY,SAAS,QAAQ;AACnF,eAAO,QAAQ,QAAQ,EAAE,QAAQ,SAAU,MAAM;AAC/C,cAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,MAAM,MAAM,CAAC,GACb,QAAQ,MAAM,CAAC;AACjB,gBAAM,GAAG,IAAI;AAAA,QACf,CAAC;AAAA,MACH;AACA,aAAO,aAAaA,kBAAiB,CAAC;AAAA,QACpC,KAAK;AAAA,QACL,OAAO,SAAS,YAAY;AAC1B,iBAAO,KAAK,aAAa,UAAU;AAAA,QACrC;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB;AAC/B,iBAAO,KAAK,aAAa,eAAe;AAAA,QAC1C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,0BAA0B;AACxC,eAAK,aAAa,wBAAwB;AAC1C,eAAK,WAAW,KAAK,aAAa,eAAe;AAAA,QACnD;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;AChDF;AAAA,0CAAAC,UAAAC,SAAA;AAaA,KAAC,SAAU,MAAM,SAAS;AACxB;AAEA,UAAI,OAAOA,YAAW,YAAYA,QAAO,SAAS;AAEhD,QAAAA,QAAO,UAAU,QAAQ,aAAgB;AAAA,MAC3C,WAAW,OAAO,WAAW,cAAc,OAAO,KAAK;AAErD,eAAO,CAAC,OAAO,GAAG,OAAO;AAAA,MAC3B,OAAO;AAEL,aAAK,cAAc,QAAQ,KAAK,KAAK,IAAI;AAAA,MAC3C;AAAA,IACF,GAAED,UAAM,SAAU,KAAK,MAAM;AAC3B;AAKA,UAAI,eAAe,QAAQ,KAAK;AAEhC,UAAI,SAAS,OAAO,UAAU;AAC9B,eAAS,YAAY,YAAY;AAE/B,YAAI,YAAY,OAAO,UAAU,GAAG;AAClC,iBAAO,YAAY,OAAO,UAAU;AAAA,QACtC;AAGA,YAAI,EAAE,gBAAgB,cAAc;AAClC,iBAAO,IAAI,YAAY,UAAU;AAAA,QACnC;AAEA,aAAK,aAAa;AAClB,oBAAY,OAAO,UAAU,IAAI;AACjC,eAAO;AAAA,MACT;AAEA,eAAS,KAAK,MAAM;AAClB,aAAK,OAAO;AACZ,aAAK,QAAQ,CAAC;AAAA,MAChB;AAEA,UAAI,IAAI,YAAY;AAEpB,UAAI,YAAY;AAAA;AAAA,QAEd,IAAK;AAAA,UACH,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA,QAEA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA,QAEA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA,QAEA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA,QAEA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA,QAEA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA;AAAA,QAGA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA;AAAA,QAGA,KAAM;AAAA,UACJ,QAAQ;AAAA,UACR,WAAW;AAAA,UACX,OAAO;AAAA,UACP,sBAAsB;AAAA,UACtB,QAAS;AAAA,QACX;AAAA;AAAA;AAAA,MAIF;AAGA,kBAAY,SAAS,CAAC;AAEtB,kBAAY,qBAAqB;AAEjC,kBAAY,mBAAmB;AAE/B,kBAAY,wBAAwB;AAEpC,kBAAY,kBAAkB;AAG9B,kBAAY,SAAS,SAAS,YAAY,MAAM,MAAM;AAEpD,YAAI,UAAU,UAAU,WAAW,QAAQ;AAE3C,YAAI,OAAO,QAAQ,QAAQ,UAAU;AAErC,YAAI,YAAY,WAAW;AAE3B,YAAI,SAAS,CAAC;AACd,YAAI,GAAG,UAAU;AAEjB,aAAK,IAAI,GAAI,WAAW,UAAU,CAAC,GAAI,KAAK;AAE1C,cAAI,KAAK,IAAI,SAAS,IAAI;AAC1B,cAAI,EAAE,SAAS,KAAK,QAAQ,KAAK,QAAQ;AACrC,kBAAM,IAAI,MAAM,2CAA2C,SAAS,OAAO,GAAG;AAAA,UAClF;AACA,cAAI,CAAC,EAAE,IAAI,QAAQ;AACjB,gBAAI,EAAE,MAAM;AAGV,qBAAO,KAAK,EAAE;AAAA,YAChB;AAEA;AAAA,UACF;AAEA,cAAI,EAAE,OAAO,KAAK,SAAS,WAAW;AAEpC,kBAAM,IAAI,MAAM,qEAAqE,SAAS,OAAO,GAAG;AAAA,UAC1G;AAGA,iBAAO,KAAK,YAAY,WAAW,IAAI;AAAA,YACrC;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,SAAS,WAAW,QAAQ,aAAa;AAAA,YACzC,SAAS;AAAA,YACT,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAEA,YAAI,OAAO,QAAQ;AACjB,iBAAO,QAAQ,SAAS,OAAO,KAAK,QAAQ,SAAS;AAAA,QACvD,OAAO;AAEL,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,kBAAY,cAAc,SAAS,GAAG,SAAS,SAAS,WAAW,QAAQ,MAAM;AAE/E,YAAI,SAAS;AAEb,YAAI,SAAS,QAAQ;AACrB,YAAI,uBAAuB,QAAQ;AAEnC,YAAI,UAAU,CAAC,EAAE,MAAM,EAAE;AAEzB,YAAI,QAAQ,EAAE,SAAS,IAAI,KAAI,IAAI,MAAM,EAAE,IAAI;AAC/C,YAAI,QAAQ,GAAG;AAGf,aAAK,IAAI,GAAG,IAAI,EAAE,IAAI,QAAQ,IAAI,GAAG,KAAK;AACxC,cAAI,QAAQ;AAEV,qBAAS,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;AACrD,gBAAI,EAAE,SAAS,GAAG;AAEhB,sBAAQ,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;AAAA,YACtD;AAAA,UACF,WAAW,SAAS;AAElB,qBAAS,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,gBAAI,EAAE,SAAS,GAAG;AAEhB,sBAAQ,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,gBAAE,MAAM,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC;AAAA,YAChC,OAAO;AAEL,gBAAE,MAAM,EAAE,KAAK,CAAC,QAAW,MAAM,CAAC;AAAA,YACpC;AAAA,UACF,OAAO;AAEL,qBAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACvB,gBAAI,EAAE,SAAS,GAAG;AAChB,sBAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAAA,YACxB;AAAA,UACF;AAEA,cAAI,QAAQ;AAEV,sBAAU;AAAA,UACZ;AAEA,cAAI,CAAC,SAAS;AACZ,gBAAI,CAAC,GAAG;AAEN,wBAAU,IAAI,MAAM,EAAE,IAAI,KAAK,wBAAwB,SAAS,MAAM;AAAA,YACxE;AAEA,gBAAI,EAAE,SAAS,GAAG;AAEhB,wBAAU,QAAQ;AAAA,YACpB;AAEA,sBAAU;AAAA,UACZ,OAAO;AAEL,sBAAU,SAAS,wBAAwB,SAAS,MAAM,MAAM;AAAA,UAClE;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,kBAAY,gBAAgB,SAAS,GAAG,SAAS,SAAS,WAAW,QAAQ;AAE3E,YAAI,SAAS;AAEb,YAAI,SAAS,QAAQ;AACrB,YAAI,uBAAuB,QAAQ;AAEnC,YAAI,UAAU,CAAC,EAAE,MAAM,EAAE;AACzB,YAAI,OAAO,QAAQ,GAAG;AAGtB,aAAK,IAAI,GAAG,IAAI,EAAE,IAAI,QAAQ,IAAI,GAAG,KAAK;AACxC,cAAI,QAAQ;AAEV,qBAAS,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;AAAA,UACvD,WAAW,SAAS;AAElB,qBAAS,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAChC,cAAE,MAAM,EAAE,KAAK;AAAA,cACb,EAAE,SAAS,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI;AAAA,cAC1C;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AAEL,qBAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAAA,UACzB;AAEA,cAAI,QAAQ;AAEV,sBAAU;AAAA,UACZ;AAEA,cAAI,EAAE,SAAS,GAAG;AAChB,gBAAI,QAAQ;AAEV,sBAAQ,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;AAAA,YACtD,OAAO;AAEL,sBAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAAA,YACxB;AAEA,sBAAU;AACV,gBAAI,SAAS;AAEX,wBAAW,wBAAwB,SAAS,MAAM;AAAA,YACpD,OAAO;AAEL,wBAAU;AAAA,YACZ;AAAA,UACF;AAEA,oBAAU;AAAA,QACZ;AAEA,eAAO;AAAA,MACT;AAEA,kBAAY,aAAa,WAAW;AAClC,YAAI,KAAK,gBAAgB,aAAa;AACpC,eAAK,cAAc;AAAA,QACrB;AAEA,eAAO;AAAA,MACT;AAGA,QAAE,SAAS,SAAS,MAAM,MAAM;AAC9B,YAAI,SAAS;AAEb,YAAI,CAAC,KAAK,SAAS,CAAC,KAAK,MAAM,QAAQ;AAErC,eAAK,MAAM;AAAA,QACb;AAEA,YAAI,EAAE,gBAAgB,OAAO;AAG3B,iBAAO,IAAI,KAAK,IAAI;AAAA,QACtB;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IAAI,GAAG,KAAK;AAEjD,oBAAU,OAAO,KAAK,MAAM,CAAC,MAAM,WAE/B,KAAK,MAAM,CAAC,IAEZ,YAAY,OAAO,KAAK,MAAM,CAAC,GAAG,MAAM,IAAI;AAAA,QAElD;AAEA,eAAO;AAAA,MACT;AAEA,QAAE,QAAQ,WAAW;AAEnB,YAAI,aAAa,KAAK;AACtB,YAAI,WAAW,YAAY;AAC3B,YAAI,WAAW,YAAY;AAC3B,YAAI,WAAW,YAAY;AAC3B,YAAI,WAAW,YAAY;AAE3B,YAAI,QAAQ,CAAC;AAEb,YAAI,MAAM;AACV,YAAI,WAAW,QAAQ;AAEvB,YAAI,eAAe,SAAS,SAAS;AACnC,cAAI,QAAQ,MAAM,QAAQ,GAAG;AAC3B,kBAAM,IAAI,MAAM,sBAAsB,UAAU,GAAG;AAAA,UACrD;AACA,iBAAO;AAAA,QACT;AAIA,iBAAS,YAAY;AAGrB,eAAO,MAAM;AACX,mBAAS,SAAS,KAAK,UAAU;AACjC,cAAI,WAAW,MAAM;AAEnB,kBAAM,KAAK,aAAa,WAAW,UAAU,GAAG,CAAC,CAAC;AAClD;AAAA,UACF,OAAO;AAEL,kBAAM,KAAK,aAAa,WAAW,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC;AAChE,kBAAM,OAAO,QAAQ,OAAO,CAAC,EAAE;AAAA,UACjC;AAEA,cAAI,CAAC,UAAU,OAAO,CAAC,CAAC,GAAG;AACzB,kBAAM,IAAI,MAAM,uBAAuB,OAAO,CAAC,IAAK,WAAW,OAAO,CAAC,IAAI,GAAG;AAAA,UAChF,WAAW,CAAC,OAAO,CAAC,GAAG;AACrB,kBAAM,IAAI,MAAM,0BAA0B,OAAO,CAAC,IAAK,GAAG;AAAA,UAC5D;AAGA,sBAAY,OAAO,CAAC,EAAE,MAAM,GAAG;AAC/B,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,qBAAS,UAAU,CAAC,EAAE,MAAM,QAAQ;AACpC,gBAAI,WAAW,MAAM;AACnB,oBAAM,IAAI,MAAM,uBAAuB,UAAU,CAAC,IAAI,WAAW,OAAO,CAAC,IAAI,GAAG;AAAA,YAClF,WAAW,OAAO,CAAC,EAAE,MAAM,QAAQ,GAAG;AACpC,oBAAM,IAAI,MAAM,4BAA4B,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,IAAI,GAAG;AAAA,YACpF;AAEA,sBAAU,CAAC,IAAI;AAAA,cACb,MAAM,OAAO,CAAC;AAAA,cACd,SAAS,CAAC,CAAC,OAAO,CAAC;AAAA,cACnB,WAAW,OAAO,CAAC,KAAK,SAAS,OAAO,CAAC,GAAG,EAAE;AAAA,YAChD;AAAA,UACF;AAEA,cAAI,CAAC,UAAU,QAAQ;AACrB,kBAAM,IAAI,MAAM,qCAAqC,OAAO,CAAC,IAAI,GAAG;AAAA,UACtE;AAEA,gBAAM,KAAK;AAAA,YACT,YAAY,OAAO,CAAC;AAAA,YACpB,UAAU,OAAO,CAAC;AAAA,YAClB;AAAA,UACF,CAAC;AAAA,QACH;AAEA,YAAI,CAAC,MAAM,QAAQ;AAIjB,gBAAM,KAAK,aAAa,UAAU,CAAC;AAAA,QACrC;AAEA,aAAK,QAAQ;AACb,eAAO;AAAA,MACT;AAGA,WAAK,UAAU,MAAM,SAAS,KAAK;AAEjC,YAAI,OAAO,KAAK;AAEhB,YAAI,IAAI;AAAA;AAAA,UAEN,MAAM;AAAA;AAAA,UAEN,KAAK,CAAC;AAAA;AAAA,UAEN,QAAQ,CAAC;AAAA,UACT,gBAAgB,CAAC;AAAA,QACnB;AACA,YAAI,GAAG,GAAG;AAEV,YAAI,KAAK,MAAM,GAAG,MAAM,QAAW;AAEjC,iBAAO,KAAK,MAAM,GAAG;AAAA,QACvB;AAEA,aAAK,MAAM,GAAG,IAAI;AAElB,YAAI,OAAO,OAAO,UAAU,SAAS,KAAK,IAAI,CAAC,MAAM,qBAAqB;AAExE,kBAAQ,KAAK,GAAG;AAAA,QAClB,WAAW,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK,GAAG,CAAC,CAAC,MAAM,qBAAqB;AAEpF,kBAAQ,KAAK,GAAG,EAAE,GAAG;AAAA,QACvB,OAAO;AAEL,kBAAQ,KAAK,GAAG;AAAA,QAClB;AAIA,YAAI,UAAU,UAAa,UAAU,MAAM;AAEzC,iBAAO;AAAA,QACT,WAAW,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC,MAAM,kBAAkB;AAC7E,eAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AACxC,gBAAI,MAAM,CAAC,MAAM,UAAa,MAAM,CAAC,MAAM,MAAM;AAE/C,gBAAE,IAAI,KAAK,CAAC,QAAW,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA,YAC1C;AAAA,UACF;AAEA,cAAI,EAAE,IAAI,QAAQ;AAEhB,cAAE,OAAO;AAAA,UACX;AAAA,QACF,WAAW,OAAO,OAAO,UAAU,SAAS,KAAK,KAAK,CAAC,MAAM,mBAAmB;AAC9E,eAAK,KAAK,OAAO;AACf,gBAAI,OAAO,KAAK,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,UAAa,MAAM,CAAC,MAAM,MAAM;AAExE,gBAAE,IAAI,KAAK,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAAA,YAClC;AAAA,UACF;AAEA,cAAI,EAAE,IAAI,QAAQ;AAEhB,cAAE,OAAO;AAAA,UACX;AAAA,QACF,OAAO;AACL,YAAE,OAAO;AAET,YAAE,IAAI,KAAK,CAAC,QAAW,OAAO,KAAK,CAAC,CAAC;AAAA,QACvC;AAEA,eAAO;AAAA,MACT;AAGA,UAAI,SAAS,SAAS,YAAY,MAAM;AACtC,YAAI,WAAW,IAAI,YAAY,UAAU;AACzC,YAAI,YAAY,SAAS,OAAO,IAAI;AAEpC,eAAO,IAAI,IAAI,SAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACngBD;AAAA,0EAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,UAAUA,SAAQ,kBAAkBA,SAAQ,cAAc;AAClE,IAAAA,SAAQ,uBAAuB;AAC/B,IAAAA,SAAQ,UAAU;AAClB,QAAI,SAAS,uBAAuB,aAAgB;AACpD,QAAI,cAAc;AAClB,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,QAAI,UAAUD,SAAQ,UAAU;AAChC,QAAI,kBAAkBA,SAAQ,kBAAkB,CAAC;AACjD,QAAI,cAAcA,SAAQ,eAAe,GAAG,YAAY,QAAQ;AAAA,MAC9D,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,MACtB;AAAA,IACF,CAAC;AACD,aAAS,UAAU,IAAI;AACrB,aAAO,KAAK,MAAM,KAAK,GAAI;AAAA,IAC7B;AACA,gBAAY,aAAa,SAAS,IAAI,SAAU,UAAU;AACxD,UAAI,YAAY,GAAG,OAAO,SAAS,SAAS,OAAO,GAAG,EAAE,SAAS;AACjE,UAAI,aAAa;AACjB,UAAI,SAAS,mBAAmB,SAAS;AACvC,YAAI,aAAa,SAAS,QAAQ,IAAI,MAAM;AAC5C,YAAI,YAAY;AACd,uBAAa,UAAU,KAAK,MAAM,UAAU,CAAC;AAAA,QAC/C;AAAA,MACF,WAAW,QAAQ,SAAS,OAAO,MAAM,YAAY,UAAU,SAAS,SAAS;AAC/E,YAAI,UAAU,SAAS;AACvB,YAAI,OAAO,QAAQ,SAAS,UAAU;AACpC,uBAAa,UAAU,KAAK,MAAM,QAAQ,IAAI,CAAC;AAAA,QACjD;AAAA,MACF;AACA,UAAI,oBAAoB,WAAU,oBAAI,KAAK,GAAE,QAAQ,CAAC;AACtD,UAAI,CAAC,OAAO,MAAM,UAAU,GAAG;AAC7B,wBAAgB,QAAQ,IAAI;AAAA,UAC1B;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AACD,QAAI,WAAWA,SAAQ,UAAU;AACjC,aAAS,qBAAqB,UAAU;AACtC,UAAI,QAAQ,gBAAgB,QAAQ;AACpC,UAAI,CAAC,SAAS,CAAC,MAAM,qBAAqB,CAAC,MAAM,YAAY;AAC3D,eAAO;AAAA,MACT;AACA,UAAI,aAAa,MAAM,YACrB,oBAAoB,MAAM;AAC5B,UAAI,cAAc,WAAU,oBAAI,KAAK,GAAE,QAAQ,CAAC;AAChD,UAAI,cAAc,oBAAoB,KAAK,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,aAAO,cAAc,oBAAoB;AAAA,IAC3C;AAAA;AAAA;;;AC3DA;AAAA,gDAAAE,UAAAC,SAAA;AAAA,QAAI,QAAQ,UAAQ,KAAK,EAAE;AAC3B,QAAI,SAAS,UAAQ,QAAQ;AAC7B,QAAI,QAAQ,UAAQ,OAAO;AAC3B,QAAIC,QAAO,UAAQ,MAAM;AACzB,QAAI,OAAO,UAAQ,MAAM;AAEzB,QAAI,eAAe;AAAA,MACjB;AAAA,MAAO;AAAA,MAAO;AAAA,MAAc;AAAA,MAAQ;AAAA,MAAM;AAAA,MAC1C;AAAA,MAAsB;AAAA,MAAkB;AAAA,MAAc;AAAA,IACxD;AAEA,QAAI,MAAM,CAAC,KAAK,KAAK,GAAG;AACxB,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,QAAI,iBAAiB;AAErB,QAAI,2BAA2B,OAAO;AAEtC,QAAI,iBAAiB;AAErB,aAAS,OAAQ,KAAK;AACpB,aAAO,IAAI,MAAM,SAAU,UAAU,OAAO;AAC1C,eAAO,IAAI,KAAK,MAAM;AAAA,MACxB,CAAC;AAAA,IACH;AASA,aAAS,YAAa,KAAK,qBAAqB;AAC9C,UAAI,aAAa,YAAY;AAC7B,UAAI,UAAU,uBAAuB,oBAAoB;AACzD,UAAI,eAAe;AACnB,aAAO,eAAe,MAAM,cAAc;AAAA,QACxC,KAAK,WAAY;AACf,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,aAAO,eAAe,MAAM,OAAO;AAAA,QACjC,KAAK,WAAY;AACf,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,UAAIC,QAAO;AACX,MAAAA,MAAK,oBAAoB;AACzB,MAAAA,MAAK,uBAAuB;AAE5B,eAAS,mBAAoB,SAAS;AACpC,YAAI,eAAe,YAAY,OAAQ;AACvC,qBAAa,YAAY;AACzB,cAAM,SAAS,IAAI,MAAM,SAAS,EAAC,QAAgB,CAAC,CAAC;AAIrD,YAAI,cAAc;AAChB,gBAAM;AACN,yBAAe;AACf,yBAAe;AAAA,QACjB;AACA,mBAAW,WAAY;AACrB,cAAI,eAAe,YAAY,cAAcA,MAAK,sBAAsB;AACtE;AAAA,UACF;AACA,UAAAA,MAAK,uBAAuB;AAC5B,kBAAQ;AAAA,QACV,GAAGA,MAAK,iBAAiB;AAAA,MAC3B;AAEA,UAAI;AACJ,UAAI,cAAc;AAClB,UAAI,WAAW,QAAQ,eAAe,GAAG;AACvC,sBAAc,QAAQ,eAAe;AACrC,eAAO,QAAQ,eAAe;AAAA,MAChC;AAEA,UAAI,yBAAyB;AAC7B,UAAI,OAAO;AACX,UAAI,YAAY;AAEhB,UAAI,eAAe;AAEnB,eAAS,UAAW;AAClB,YAAI,UAAU,MAAM,GAAG;AACvB,YAAI,WAAW,QAAQ,aAAa;AACpC,gBAAQ,UAAU,EAAE,iBAAiB,YAAY,UAAU,oBAAoB;AAC/E,YAAI,YAAa,SAAQ,QAAQ,eAAe,IAAI;AACpD,YAAI,SAAS;AACX,cAAI,aAAa,eAAe,oBAAoB,OAAO,IAAI;AAC/D,mBAAS,KAAK,YAAY;AACxB,gBAAI,SAAS,WAAW,CAAC;AACzB,gBAAI,QAAQ;AACV,sBAAQ,QAAQ,CAAC,IAAI;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAIA,gBAAQ,qBAAqB,EAAE,uBAAuB,CAAC,oBAAoB;AAE3E,YAAI,uBAAuB,oBAAoB,qBAAqB,QAAW;AAC7E,kBAAQ,mBAAmB,oBAAoB;AAAA,QACjD;AAIA,YAAI,WAAW,uBAAuB,oBAAoB;AAC1D,YAAI,UAAU;AACZ,cAAI,QAAQ,MAAM,oBAAoB,KAAK;AAC3C,qBAAW,MAAM,aAAa;AAE9B,kBAAQ,WAAW,WAAW,WAAW;AACzC,kBAAQ,OAAO;AACf,kBAAQ,QAAQ,OAAO,QAAQ;AAC/B,kBAAQ,WAAW,MAAM;AACzB,kBAAQ,OAAO,MAAM;AACrB,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAGA,YAAI,uBAAuB,oBAAoB,OAAO;AACpD,mBAAS,WAAW,oBAAoB,OAAO;AAC7C,gBAAI,aAAa,QAAQ,OAAO,MAAM,IAAI;AACxC;AAAA,YACF;AAEA,gBAAI,SAAS,oBAAoB,MAAM,OAAO;AAC9C,gBAAI,WAAW,QAAW;AACxB,sBAAQ,OAAO,IAAI;AAAA,YACrB;AAAA,UACF;AAAA,QACF;AAGA,YAAI,uBAAuB,oBAAoB,oBAAoB,QAAW;AAC5E,kBAAQ,kBAAkB,oBAAoB;AAAA,QAChD;AAEA,eAAO,WAAW,QAAQD,OAAM,QAAQ,SAAS,SAAU,KAAK;AAC9D,UAAAC,MAAK,uBAAuB;AAE5B,cAAI,IAAI,eAAe,OAAO,IAAI,eAAe,OAAO,IAAI,eAAe,OAAO,IAAI,eAAe,KAAK;AACxG,kBAAM,SAAS,IAAI,MAAM,SAAS,EAAC,QAAQ,IAAI,YAAY,SAAS,IAAI,cAAa,CAAC,CAAC;AACvF,+BAAmB;AACnB;AAAA,UACF;AAGA,cAAI,IAAI,eAAe,OAAO,IAAI,eAAe,OAAO,IAAI,eAAe,KAAK;AAC9E,gBAAIC,YAAW,IAAI,QAAQ;AAC3B,gBAAI,CAACA,WAAU;AAEb,oBAAM,SAAS,IAAI,MAAM,SAAS,EAAC,QAAQ,IAAI,YAAY,SAAS,IAAI,cAAa,CAAC,CAAC;AACvF;AAAA,YACF;AACA,gBAAI,aAAa,IAAI,IAAI,GAAG,EAAE;AAC9B,gBAAI,aAAa,IAAI,IAAIA,SAAQ,EAAE;AACnC,2BAAe,eAAe;AAC9B,gBAAI,IAAI,eAAe,IAAK,gBAAe;AAC3C,kBAAMA;AACN,oBAAQ,SAAS,OAAO;AACxB;AAAA,UACF;AAEA,cAAI,IAAI,eAAe,KAAK;AAC1B,kBAAM,SAAS,IAAI,MAAM,SAAS,EAAC,QAAQ,IAAI,YAAY,SAAS,IAAI,cAAa,CAAC,CAAC;AACvF,mBAAOD,MAAK,MAAM;AAAA,UACpB;AAEA,uBAAa,YAAY;AACzB,cAAI,GAAG,SAAS,WAAY;AAC1B,gBAAI,mBAAmB,OAAO;AAC9B,gBAAI,mBAAmB,KAAK;AAC5B,+BAAmB;AAAA,UACrB,CAAC;AAED,cAAI,GAAG,OAAO,WAAY;AACxB,gBAAI,mBAAmB,OAAO;AAC9B,gBAAI,mBAAmB,KAAK;AAC5B,+BAAmB;AAAA,UACrB,CAAC;AACD,gBAAM,QAAQ,IAAI,MAAM,MAAM,CAAC;AAI/B,cAAI;AACJ,cAAI;AACJ,cAAI,cAAc;AAClB,cAAI,sBAAsB;AAC1B,cAAI,gBAAgB;AACpB,cAAI,YAAY;AAEhB,cAAI,GAAG,QAAQ,SAAU,OAAO;AAC9B,gBAAI,CAAC,KAAK;AACR,oBAAM;AACN,kBAAI,OAAO,GAAG,GAAG;AACf,sBAAM,IAAI,MAAM,IAAI,MAAM;AAAA,cAC5B;AACA,0BAAY,IAAI;AAAA,YAClB,OAAO;AACL,kBAAI,MAAM,SAAS,IAAI,SAAS,WAAW;AACzC,gCAAiB,IAAI,SAAS,IAAK,MAAM;AACzC,oBAAI,gBAAgB,0BAA0B;AAC5C,kCAAgB,IAAI,SAAS,MAAM,SAAS;AAAA,gBAC9C;AACA,4BAAY,OAAO,MAAM,aAAa;AACtC,oBAAI,KAAK,WAAW,GAAG,GAAG,SAAS;AACnC,sBAAM;AAAA,cACR;AACA,oBAAM,KAAK,KAAK,SAAS;AACzB,2BAAa,MAAM;AAAA,YACrB;AAEA,gBAAI,MAAM;AACV,gBAAI,SAAS;AAEb,mBAAO,MAAM,QAAQ;AACnB,kBAAI,wBAAwB;AAC1B,oBAAI,IAAI,GAAG,MAAM,UAAU;AACzB,oBAAE;AAAA,gBACJ;AACA,yCAAyB;AAAA,cAC3B;AAEA,kBAAI,aAAa;AACjB,kBAAI,cAAc;AAClB,kBAAI;AAEJ,uBAASE,KAAI,aAAa,aAAa,KAAKA,KAAI,QAAQ,EAAEA,IAAG;AAC3D,oBAAI,IAAIA,EAAC;AACT,oBAAI,MAAM,OAAO;AACf,sBAAI,cAAc,GAAG;AACnB,kCAAcA,KAAI;AAAA,kBACpB;AAAA,gBACF,WAAW,MAAM,gBAAgB;AAC/B,2CAAyB;AACzB,+BAAaA,KAAI;AAAA,gBACnB,WAAW,MAAM,UAAU;AACzB,+BAAaA,KAAI;AAAA,gBACnB;AAAA,cACF;AAEA,kBAAI,aAAa,GAAG;AAClB,8BAAc,SAAS;AACvB,sCAAsB;AACtB;AAAA,cACF,OAAO;AACL,8BAAc;AACd,sCAAsB;AAAA,cACxB;AAEA,mCAAqB,KAAK,KAAK,aAAa,UAAU;AAEtD,qBAAO,aAAa;AAAA,YACtB;AAEA,gBAAI,QAAQ,QAAQ;AAClB,oBAAM;AACN,0BAAY;AAAA,YACd,WAAW,MAAM,GAAG;AAClB,oBAAM,IAAI,MAAM,KAAK,SAAS;AAC9B,0BAAY,IAAI;AAAA,YAClB;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED,YAAI,GAAG,SAAS,SAAUC,MAAK;AAC7B,UAAAH,MAAK,uBAAuB;AAC5B,6BAAmBG,KAAI,OAAO;AAAA,QAChC,CAAC;AAED,YAAI,IAAI,WAAY,KAAI,WAAW,IAAI;AACvC,YAAI,IAAI;AAAA,MACV;AAEA,cAAQ;AAER,eAAS,QAAS;AAChB,YAAIH,MAAK,UAAU,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG;AAC3C,UAAAA,MAAK,KAAK,MAAMA,OAAM,SAAS;AAAA,QACjC;AAAA,MACF;AAEA,WAAK,SAAS,WAAY;AACxB,YAAI,eAAe,YAAY,OAAQ;AACvC,qBAAa,YAAY;AACzB,YAAI,IAAI,MAAO,KAAI,MAAM;AACzB,YAAI,IAAI,OAAO,IAAI,IAAI,MAAO,KAAI,IAAI,MAAM;AAAA,MAC9C;AAEA,eAAS,qBAAsB,KAAK,KAAK,aAAa,YAAY;AAChE,YAAI,eAAe,GAAG;AACpB,cAAI,KAAK,SAAS,GAAG;AACnB,gBAAI,OAAO,aAAa;AACxB,kBAAM,MAAM,IAAI,aAAa,MAAM;AAAA,cACjC,MAAM,KAAK,MAAM,GAAG,EAAE;AAAA;AAAA,cACtB;AAAA,cACA,QAAQ,IAAI,IAAI,GAAG,EAAE;AAAA,YACvB,CAAC,CAAC;AACF,mBAAO;AAAA,UACT;AACA,sBAAY;AAAA,QACd,WAAW,cAAc,GAAG;AAC1B,cAAI,UAAU,cAAc;AAC5B,cAAI,OAAO;AACX,cAAI,QAAQ,IAAI,MAAM,KAAK,OAAO,UAAU,aAAa,YAAY,EAAE,SAAS;AAEhF,cAAI,SAAS;AACX,mBAAO;AAAA,UACT,WAAW,IAAI,MAAM,cAAc,CAAC,MAAM,OAAO;AAC/C,mBAAO,cAAc;AAAA,UACvB,OAAO;AACL,mBAAO,cAAc;AAAA,UACvB;AACA,iBAAO;AAEP,cAAI,cAAc,aAAa;AAC/B,cAAI,QAAQ,IAAI,MAAM,KAAK,MAAM,WAAW,EAAE,SAAS;AAEvD,cAAI,UAAU,QAAQ;AACpB,oBAAQ,QAAQ;AAAA,UAClB,WAAW,UAAU,SAAS;AAC5B,wBAAY;AAAA,UACd,WAAW,UAAU,MAAM;AACzB,0BAAc;AAAA,UAChB,WAAW,UAAU,SAAS;AAC5B,gBAAI,QAAQ,SAAS,OAAO,EAAE;AAC9B,gBAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACxB,cAAAA,MAAK,oBAAoB;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,IAAAF,QAAO,UAAU;AAEjB,SAAK,SAAS,aAAa,OAAO,YAAY;AAC9C,gBAAY,UAAU,cAAc;AAEpC,KAAC,QAAQ,SAAS,SAAS,EAAE,QAAQ,SAAU,QAAQ;AACrD,aAAO,eAAe,YAAY,WAAW,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAO1D,KAAK,SAAS,MAAO;AACnB,cAAI,WAAW,KAAK,UAAU,MAAM,EAAE,CAAC;AACvC,iBAAO,WAAY,SAAS,YAAY,SAAS,YAAY,WAAY;AAAA,QAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QASA,KAAK,SAAS,IAAK,UAAU;AAC3B,eAAK,mBAAmB,MAAM;AAC9B,eAAK,iBAAiB,QAAQ,QAAQ;AAAA,QACxC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAKD,WAAO,eAAe,aAAa,cAAc,EAAC,YAAY,MAAM,OAAO,EAAC,CAAC;AAC7E,WAAO,eAAe,aAAa,QAAQ,EAAC,YAAY,MAAM,OAAO,EAAC,CAAC;AACvE,WAAO,eAAe,aAAa,UAAU,EAAC,YAAY,MAAM,OAAO,EAAC,CAAC;AAEzE,gBAAY,UAAU,aAAa;AACnC,gBAAY,UAAU,OAAO;AAC7B,gBAAY,UAAU,SAAS;AAQ/B,gBAAY,UAAU,QAAQ,WAAY;AACxC,WAAK,OAAO;AAAA,IACd;AAWA,gBAAY,UAAU,mBAAmB,SAAS,iBAAkB,MAAM,UAAU;AAClF,UAAI,OAAO,aAAa,YAAY;AAElC,iBAAS,YAAY;AACrB,aAAK,GAAG,MAAM,QAAQ;AAAA,MACxB;AAAA,IACF;AASA,gBAAY,UAAU,gBAAgB,SAAS,cAAe,OAAO;AACnE,UAAI,CAAC,MAAM,MAAM;AACf,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAC9C;AAGA,WAAK,KAAK,MAAM,MAAM,MAAM,MAAM;AAAA,IACpC;AAWA,gBAAY,UAAU,sBAAsB,SAAS,oBAAqB,MAAM,UAAU;AACxF,UAAI,OAAO,aAAa,YAAY;AAClC,iBAAS,YAAY;AACrB,aAAK,eAAe,MAAM,QAAQ;AAAA,MACpC;AAAA,IACF;AAQA,aAAS,MAAO,MAAM,oBAAoB;AACxC,aAAO,eAAe,MAAM,QAAQ,EAAE,UAAU,OAAO,OAAO,MAAM,YAAY,KAAK,CAAC;AACtF,UAAI,oBAAoB;AACtB,iBAAS,KAAK,oBAAoB;AAChC,cAAI,mBAAmB,eAAe,CAAC,GAAG;AACxC,mBAAO,eAAe,MAAM,GAAG,EAAE,UAAU,OAAO,OAAO,mBAAmB,CAAC,GAAG,YAAY,KAAK,CAAC;AAAA,UACpG;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAQA,aAAS,aAAc,MAAM,eAAe;AAC1C,aAAO,eAAe,MAAM,QAAQ,EAAE,UAAU,OAAO,OAAO,MAAM,YAAY,KAAK,CAAC;AACtF,eAAS,KAAK,eAAe;AAC3B,YAAI,cAAc,eAAe,CAAC,GAAG;AACnC,iBAAO,eAAe,MAAM,GAAG,EAAE,UAAU,OAAO,OAAO,cAAc,CAAC,GAAG,YAAY,KAAK,CAAC;AAAA,QAC/F;AAAA,MACF;AAAA,IACF;AASA,aAAS,oBAAqB,SAAS;AACrC,UAAI,OAAO,CAAC;AACZ,eAAS,OAAO,SAAS;AACvB,YAAI,eAAe,KAAK,GAAG,GAAG;AAC5B;AAAA,QACF;AAEA,aAAK,GAAG,IAAI,QAAQ,GAAG;AAAA,MACzB;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC9eA;AAAA,kEAAAM,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,cAAc;AACtB,QAAI,SAAS,uBAAuB,aAAgB;AACpD,QAAI,eAAe,uBAAuB,qBAAgC;AAC1E,QAAI,UAAU;AACd,QAAI,wBAAwB;AAC5B,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAEC,IAAGP,IAAG;AAAE,mBAAOE,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGS,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASM,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGT,IAAGC,IAAGM,IAAG;AAAE,iBAAS,EAAEP,IAAGC,IAAG;AAAE,8BAAoBQ,IAAGT,IAAG,SAAUS,IAAG;AAAE,mBAAO,KAAK,QAAQT,IAAGC,IAAGQ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAT,KAAI,IAAI,EAAES,IAAGT,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACM,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAET,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,WAAW,CAAC,aAAa;AAC7B,QAAI,YAAY;AAChB,QAAI;AACJ,QAAmC,MAAM;AAEvC,qBAAe,QAAQ,wBAAwB,UAAU,iBAAiB,QAAQ,0BAA0B,SAAS,yBAAyB,oBAAoB,UAAU,YAAY,QAAQ,sBAAsB,SAAS,SAAS,kBAAkB,iBAAiB,QAAQ,SAAS,SAAS,OAAO;AAAA,IAC9S;AAFM;AAAM;AAAuB;AAGnC,QAAI,cAAcH,SAAQ,cAAc,WAAY;AAClD,eAASa,aAAY,WAAW;AAC9B,YAAI,eAAe,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACvF,wBAAgB,MAAMA,YAAW;AACjC,aAAK,MAAM,UAAU,MAAM;AAC3B,aAAK,SAAS,CAAC;AACf,aAAK,mBAAmB,KAAK,IAAI,QAAQ,KAAK,CAAC;AAC/C,aAAK,eAAe;AAAA,MACtB;AACA,aAAO,aAAaA,cAAa,CAAC;AAAA,QAChC,KAAK;AAAA,QACL,OAAO,SAAS,OAAO;AACrB,cAAI,QAAQ;AACZ,eAAK,YAAY;AACjB,iBAAO,KAAK,mBAAmB,KAAK,GAAG,EAAE,KAAK,SAAU,GAAG;AACzD,mBAAO,MAAM,eAAe,CAAC;AAAA,UAC/B,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,cAAI,SAAS;AACb,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,gBAAgB,QAAW;AAC7B,kBAAM,IAAI,MAAM,kHAAkH;AAAA,UACpI;AACA,eAAK,YAAY;AACjB,eAAK,IAAI,SAAS,iBAAiB,gBAAgB;AACnD,eAAK,IAAI,SAAS,oBAAoB,sBAAsB,OAAO;AACnE,cAAI;AACJ,cAAI;AACJ,cAAI,gBAAgB,SAASC,iBAAgB;AAC3C,sBAAU,WAAW,WAAY;AAC/B,kBAAI;AACJ,eAAC,MAAM,QAAQ,QAAQ,QAAQ,UAAU,IAAI,MAAM;AACnD,mBAAK,mBAAmB;AAAA,YAC1B,GAAG,QAAQ,oBAAoB,KAAK,GAAI;AAAA,UAC1C;AACA,cAAI,qBAAqB,SAAS,oBAAoB;AACpD,gBAAI;AACF,mBAAK,IAAI,YAAY,OAAO,IAAI,SAAS,CAAC;AAAA,YAC5C,SAASC,MAAK;AACZ,kBAAI,QAAQ,SAAS;AACnB,wBAAQ,QAAQA,IAAG;AAAA,cACrB;AAAA,YACF;AACA,0BAAc;AACd,gBAAI,CAAC,IAAI;AACP,qBAAO;AAAA,YACT;AACA,gBAAI,SAAS;AACb,gBAAI,UAAU,SAASC,WAAU;AAC/B,kBAAI,QAAQ;AACV;AAAA,cACF;AACA,2BAAa,OAAO;AACpB,iBAAG,MAAM;AACT,iCAAmB;AACnB,uBAAS;AAAA,YACX;AACA,gBAAI,YAAY,SAASC,WAAU,SAAS;AAC1C,kBAAI,QAAQ,SAAS,SAAS;AAC5B,wBAAQ;AACR;AAAA,cACF;AACA,kBAAI,SAAS,QAAQ,OAAO,OAAO,aAAa,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI;AAC5E,kBAAI,OAAO,cAAc;AACvB,uBAAO,IAAI,SAAS,UAAU,OAAO,YAAY;AAAA,cACnD;AACA,2BAAa,OAAO;AACpB,4BAAc;AACd,kBAAI,OAAO,QAAQ,cAAc,aAAa;AAC5C,wBAAQ,UAAU,MAAM;AAAA,cAC1B;AAAA,YACF;AACA,gBAAI,UAAU,SAASC,SAAQ,OAAO;AACpC,kBAAI,QAAQ,SAAS;AACnB,wBAAQ,QAAQ,KAAK;AAAA,cACvB;AAAA,YACF;AACA,gBAAI,GAAG,kBAAkB;AACvB,iBAAG,iBAAiB,WAAW,UAAU,KAAK,MAAM,CAAC;AACrD,iBAAG,iBAAiB,SAAS,QAAQ,KAAK,MAAM,CAAC;AACjD,iBAAG,iBAAiB,SAAS,QAAQ,KAAK,MAAM,CAAC;AAAA,YACnD,OAAO;AACL,iBAAG,YAAY,UAAU,KAAK,MAAM;AACpC,iBAAG,UAAU,QAAQ,KAAK,MAAM;AAAA,YAClC;AACA,mBAAO;AAAA,UACT;AACA,6BAAmB;AACnB,iBAAO,WAAY;AACjB,gBAAI;AACJ,yBAAa,OAAO;AACpB,aAAC,OAAO,QAAQ,QAAQ,SAAS,UAAU,KAAK,MAAM;AAAA,UACxD;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,OAAO,SAAS;AAC9B,eAAK,IAAI,SAAS,UAAU,OAAO;AACnC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,MAAM,eAAe;AACnC,eAAK,IAAI,SAAS,SAAS,cAAc,SAAS,CAAC;AACnD,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,MAAM,WAAW;AAC/B,eAAK,IAAI,SAAS,SAAS,SAAS;AACpC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,KAAK,SAAS;AAC5B,eAAK,IAAI,SAAS,QAAQ,OAAO;AACjC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,YAAY,UAAU,OAAO;AAC3C,cAAI,KAAK,iBAAiB,IAAI;AAC5B,kBAAM,IAAI,MAAM,oDAAoD;AAAA,UACtE;AACA,eAAK,OAAO,KAAK,CAAC,UAAU,OAAO,KAAK,YAAY,CAAC;AACrD,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc;AAC5B,cAAI,KAAK,OAAO,UAAU,GAAG;AAC3B,kBAAM,IAAI,QAAQ,gBAAgB,8BAA8B,KAAK,MAAM;AAAA,UAC7E;AACA,cAAI,KAAK,OAAO,WAAW,GAAG;AAC5B,gBAAI,aAAa,KAAK,iBAAiB,OAAO,KAAK,OAAO,CAAC,CAAC;AAC5D,iBAAK,IAAI,QAAQ,UAAU;AAAA,UAC7B;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,kBAAkB,MAAM;AACtC,cAAI,SAAS;AACb,iBAAO,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU;AAC3D,gBAAI,MACF,KACA,UACA,GACA,QAAQ;AACV,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,yBAAO,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI,CAAC;AAChE,sBAAI,KAAK,WAAW;AAClB,gCAAY,GAAG,aAAa,SAAS,KAAK,IAAI;AAC9C,2BAAO,GAAG,OAAO,SAAS,SAAS,OAAO,IAAI,CAAC;AAAA,kBACjD,OAAO;AACL,2BAAO,GAAG,OAAO,SAAS,KAAK,IAAI;AAAA,kBACrC;AACA,2BAAS,IAAI;AACb,yBAAO,OAAO,mBAAmB,GAAG;AAAA,gBACtC,KAAK;AACH,sBAAI,SAAS;AACb,yBAAO,SAAS,EAAE,GAAG,OAAO,eAAe,CAAC,CAAC;AAAA,cACjD;AAAA,YACF,GAAG,OAAO;AAAA,UACZ,CAAC,CAAC;AAAA,QACJ;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa,MAAM;AACjC,cAAI,SAAS;AACb,cAAI,CAAC,KAAK,QAAQ;AAChB,mBAAO;AAAA,UACT;AACA,iBAAO,KAAK,KAAK,MAAM,EAAE,QAAQ,SAAU,KAAK;AAC9C,gBAAI,IAAI,KAAK,OAAO,GAAG;AACvB,gBAAI,WAAW;AACf,gBAAI,OAAO,KAAK,GAAG,MAAM,aAAa;AACpC,mBAAK,GAAG,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,GAAG;AACxC,yBAAW;AAAA,YACb;AACA,gBAAI,YAAY,SAAS,QAAQ,GAAG,KAAK,GAAG;AAC1C,kBAAI,SAAS,OAAO,aAAa,KAAK,GAAG,CAAC;AAC1C,mBAAK,GAAG,IAAI,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACjE,uBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,yBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,oBAC7B,KAAK;AACH,6BAAO,UAAU,EAAE,GAAG,MAAM;AAAA,kBAChC;AAAA,gBACF,GAAG,QAAQ;AAAA,cACb,CAAC,CAAC;AAAA,YACJ,OAAO;AACL,mBAAK,GAAG,IAAI,OAAO,kBAAkB,CAAC;AAAA,YACxC;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,sBAAsB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,YAAY;AACzF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,wBAAM;AACN,sBAAI,IAAI,UAAU,MAAM,IAAI;AAC1B,0BAAM,IAAI,UAAU,KAAK,IAAI,UAAU,CAAC;AAAA,kBAC1C;AACA,sBAAI,IAAI,SAAS,MAAM,IAAI;AACzB,0BAAM,IAAI,SAAS,KAAK,IAAI,SAAS,CAAC;AAAA,kBACxC;AACA,yBAAO,UAAU,EAAE,GAAG,sBAAsB,YAAY,IAAI,IAAI,SAAS,CAAC,EAAE,KAAK,SAAU,UAAU;AACnG,2BAAO,SAAS;AAAA,kBAClB,CAAC,EAAE,MAAM,KAAK,mBAAmB,CAAC;AAAA,cACtC;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,mBAAmB,IAAI;AAC9B,mBAAO,oBAAoB,MAAM,MAAM,SAAS;AAAA,UAClD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,MAAM;AACnC,cAAI,KAAK,aAAa,KAAK,UAAU,SAAS;AAC5C,mBAAO,KAAK,kBAAkB,IAAI;AAAA,UACpC;AACA,iBAAO,KAAK,aAAa,IAAI;AAAA,QAC/B;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,kBAAkB,MAAM;AACtC,cAAI,SAAS;AACb,mBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,QAAQ,KAAK,GAAG;AACzD,iBAAK,UAAU,QAAQ,CAAC,IAAI,KAAK,aAAa,KAAK,UAAU,QAAQ,CAAC,CAAC;AAAA,UACzE;AACA,iBAAO;AAAA,YACL,SAAS,KAAK,UAAU;AAAA,YACxB,MAAM,WAAY;AAChB,kBAAI,SAAS,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AAClE,oBAAI;AACJ,uBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,yBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,oBAC7B,KAAK;AACH,gCAAU,IAAI;AACd,6BAAO,OAAO,oBAAoB,GAAG,OAAO,SAAS,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,oBAC7E,KAAK;AACH,0BAAI,UAAU;AACd,6BAAO,UAAU,EAAE,GAAG,OAAO,kBAAkB,CAAC,CAAC;AAAA,kBACrD;AAAA,gBACF,GAAG,QAAQ;AAAA,cACb,CAAC,CAAC;AACF,uBAAS,OAAO;AACd,uBAAO,OAAO,MAAM,MAAM,SAAS;AAAA,cACrC;AACA,qBAAO;AAAA,YACT,EAAE;AAAA,YACF,MAAM,WAAY;AAChB,kBAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACjE,oBAAI;AACJ,uBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,yBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,oBAC7B,KAAK;AACH,gCAAU,IAAI;AACd,6BAAO,OAAO,oBAAoB,GAAG,OAAO,SAAS,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,oBAC7E,KAAK;AACH,0BAAI,UAAU;AACd,6BAAO,UAAU,EAAE,GAAG,OAAO,kBAAkB,CAAC,CAAC;AAAA,kBACrD;AAAA,gBACF,GAAG,QAAQ;AAAA,cACb,CAAC,CAAC;AACF,uBAAS,OAAO;AACd,uBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,cACpC;AACA,qBAAO;AAAA,YACT,EAAE;AAAA,UACJ;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,uBAAuB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,OAAO;AACrF,gBAAI,uBAAuB;AAC3B,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,sBAAI,EAAE,MAAM,YAAY,MAAM,SAAS,SAAS;AAC9C,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,uBAAK,MAAM,SAAS;AACpB,4BAAU,IAAI,OAAO,MAAM,IAAI;AAC/B;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,QAAQ,eAAe,wBAAwB,MAAM,SAAS,gBAAgB,QAAQ,0BAA0B,SAAS,wBAAwB,aAAa,MAAM,SAAS,IAAI,CAAC,CAAC;AAAA,gBAC9N,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,QAAQ,cAAc,yBAAyB,MAAM,SAAS,gBAAgB,QAAQ,2BAA2B,SAAS,yBAAyB,WAAW,MAAM,SAAS,IAAI,CAAC,CAAC;AAAA,gBAC9N,KAAK;AACH,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO,IAAI,MAAM,MAAM,OAAO,CAAC,CAAC;AAAA,gBAChE,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,oBAAoB,KAAK;AAChC,mBAAO,qBAAqB,MAAM,MAAM,SAAS;AAAA,UACnD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;AC3VF;AAAA,0EAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,qBAAqB;AAC7B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,qBAAqBF,SAAQ,qBAAqB,SAAU,cAAc;AAC5E,eAASK,oBAAmB,WAAW;AACrC,YAAI;AACJ,wBAAgB,MAAMA,mBAAkB;AACxC,gBAAQ,WAAW,MAAMA,qBAAoB,CAAC,SAAS,CAAC;AACxD,cAAM,IAAI,QAAQ,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,gBAAUA,qBAAoB,YAAY;AAC1C,aAAO,aAAaA,qBAAoB,CAAC;AAAA,QACvC,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,IAAI;AAC5B,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,EAAE,CAAC;AACxB,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,IAAI;AAC5B,eAAK,IAAI,SAAS,UAAU,EAAE;AAC9B,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS,OAAO;AAC9B,eAAK,IAAI,SAAS,SAAS,GAAG,OAAO,KAAK,CAAC;AAC3C,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,eAAK,IAAI,SAAS,WAAW,EAAE;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,IAAI;AACnC,eAAK,IAAI,SAAS,kBAAkB,EAAE;AACtC,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC7D3B;AAAA,yEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oBAAoB;AAC5B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,oBAAoBF,SAAQ,oBAAoB,SAAU,cAAc;AAC1E,eAASK,mBAAkB,WAAW;AACpC,YAAI;AACJ,wBAAgB,MAAMA,kBAAiB;AACvC,gBAAQ,WAAW,MAAMA,oBAAmB,CAAC,SAAS,CAAC;AACvD,cAAM,IAAI,QAAQ,QAAQ;AAC1B,eAAO;AAAA,MACT;AACA,gBAAUA,oBAAmB,YAAY;AACzC,aAAO,aAAaA,oBAAmB,CAAC;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,OAAO;AAC7B,eAAK,IAAI,SAAS,cAAc,KAAK;AACrC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,OAAO;AAC/B,eAAK,IAAI,SAAS,gBAAgB,KAAK;AACvC,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC1C3B;AAAA,qFAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,8BAA8B;AACtC,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,8BAA8BF,SAAQ,8BAA8B,SAAU,cAAc;AAC9F,eAASK,6BAA4B,WAAW;AAC9C,YAAI;AACJ,wBAAgB,MAAMA,4BAA2B;AACjD,gBAAQ,WAAW,MAAMA,8BAA6B,CAAC,SAAS,CAAC;AACjE,cAAM,IAAI,QAAQ,oBAAoB;AACtC,eAAO;AAAA,MACT;AACA,gBAAUA,8BAA6B,YAAY;AACnD,aAAO,aAAaA,8BAA6B,CAAC;AAAA,QAChD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,oBAAoB;AACnD,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,kBAAkB,CAAC;AACxC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,UAAU;AAChC,eAAK,IAAI,SAAS,WAAW,QAAQ;AACrC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS,WAAW;AAClC,eAAK,IAAI,SAAS,YAAY,SAAS;AACvC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,MAAM,QAAQ;AAC5B,eAAK,IAAI,SAAS,SAAS,OAAO,SAAS,CAAC;AAC5C,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACvD3B;AAAA,yEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oBAAoB;AAC5B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,oBAAoBF,SAAQ,oBAAoB,SAAU,cAAc;AAC1E,eAASK,mBAAkB,WAAW;AACpC,YAAI;AACJ,wBAAgB,MAAMA,kBAAiB;AACvC,gBAAQ,WAAW,MAAMA,oBAAmB,CAAC,WAAW,SAAS,CAAC;AAClE,cAAM,IAAI,QAAQ,SAAS;AAC3B,eAAO;AAAA,MACT;AACA,gBAAUA,oBAAmB,YAAY;AACzC,aAAO,aAAaA,oBAAmB,CAAC;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,WAAW;AACpC,iBAAO,KAAK,YAAY,YAAY,SAAS;AAAA,QAC/C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,UAAU;AAClC,iBAAO,KAAK,YAAY,WAAW,SAAS,SAAS,CAAC;AAAA,QACxD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,eAAe;AAC5C,iBAAO,KAAK,YAAY,gBAAgB,aAAa;AAAA,QACvD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa,aAAa;AACxC,iBAAO,KAAK,YAAY,cAAc,WAAW;AAAA,QACnD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,QAAQ;AACvC,iBAAO,KAAK,YAAY,mBAAmB,MAAM;AAAA,QACnD;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACvD3B;AAAA,uEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmB;AAC3B,QAAI,gBAAgB;AACpB,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,mBAAmBF,SAAQ,mBAAmB,SAAU,cAAc;AACxE,eAASK,kBAAiB,WAAW,SAAS;AAC5C,YAAI;AACJ,wBAAgB,MAAMA,iBAAgB;AACtC,gBAAQ,WAAW,MAAMA,mBAAkB,CAAC,SAAS,CAAC;AACtD,cAAM,IAAI,QAAQ,WAAW;AAC7B,cAAM,IAAI,SAAS,QAAQ,OAAO;AAClC,eAAO;AAAA,MACT;AACA,gBAAUA,mBAAkB,YAAY;AACxC,aAAO,aAAaA,iBAAgB;AAAA,IACtC,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC/B3B;AAAA,yEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oBAAoB;AAC5B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,oBAAoBF,SAAQ,oBAAoB,SAAU,cAAc;AAC1E,eAASK,mBAAkB,WAAW;AACpC,YAAI;AACJ,wBAAgB,MAAMA,kBAAiB;AACvC,gBAAQ,WAAW,MAAMA,oBAAmB,CAAC,SAAS,CAAC;AACvD,cAAM,IAAI,QAAQ,SAAS;AAC3B,eAAO;AAAA,MACT;AACA,gBAAUA,oBAAmB,YAAY;AACzC,aAAO,aAAaA,oBAAmB,CAAC;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,SAAS,OAAO,UAAU;AAC/B,eAAK,OAAO,KAAK,CAAC,WAAW,SAAS,SAAS,CAAC,CAAC;AACjD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACpC3B;AAAA,iFAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,2BAA2B;AACnC,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,2BAA2BF,SAAQ,2BAA2B,SAAU,cAAc;AACxF,eAASK,0BAAyB,WAAW;AAC3C,YAAI;AACJ,wBAAgB,MAAMA,yBAAwB;AAC9C,gBAAQ,WAAW,MAAMA,2BAA0B,CAAC,SAAS,CAAC;AAC9D,cAAM,IAAI,QAAQ,iBAAiB;AACnC,eAAO;AAAA,MACT;AACA,gBAAUA,2BAA0B,YAAY;AAChD,aAAO,aAAaA,2BAA0B,CAAC;AAAA,QAC7C,KAAK;AAAA,QACL,OAAO,SAAS,YAAY;AAC1B,mBAAS,OAAO,UAAU,QAAQ,SAAS,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACzF,mBAAO,IAAI,IAAI,UAAU,IAAI;AAAA,UAC/B;AACA,cAAI,YAAY,OAAO,IAAI,SAAU,OAAO;AAC1C,mBAAO,MAAM,SAAS;AAAA,UACxB,CAAC,EAAE,KAAK,GAAG;AACX,eAAK,IAAI,SAAS,YAAY,SAAS;AACvC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,IAAI;AAC7B,eAAK,IAAI,SAAS,WAAW,EAAE;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,gBAAgB,IAAI;AAClC,cAAI,CAAC,GAAG,MAAM,iBAAiB,GAAG;AAChC,kBAAM,IAAI,UAAU,GAAG,OAAO,IAAI,yCAAyC,CAAC;AAAA,UAC9E;AACA,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC;AACtC,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC1D3B;AAAA,wEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmB;AAC3B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,mBAAmBF,SAAQ,mBAAmB,SAAU,cAAc;AACxE,eAASK,kBAAiB,WAAW;AACnC,YAAI;AACJ,wBAAgB,MAAMA,iBAAgB;AACtC,gBAAQ,WAAW,MAAMA,mBAAkB,CAAC,WAAW,QAAQ,CAAC;AAChE,cAAM,IAAI,QAAQ,QAAQ;AAC1B,eAAO;AAAA,MACT;AACA,gBAAUA,mBAAkB,YAAY;AACxC,aAAO,aAAaA,mBAAkB,CAAC;AAAA,QACrC,KAAK;AAAA,QACL,OAAO,SAAS,MAAM,SAAS;AAC7B,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,OAAO,CAAC;AAC7B,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,IAAI;AAC7B,iBAAO,KAAK,YAAY,YAAY,EAAE;AAAA,QACxC;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,OAAO,OAAO;AAC5B,cAAI,CAAC,MAAM,SAAS,GAAG;AACrB,iBAAK,IAAI,SAAS,qBAAqB,MAAM,aAAa,CAAC;AAC3D,iBAAK,IAAI,SAAS,qBAAqB,MAAM,QAAQ,CAAC;AACtD,iBAAK,IAAI,SAAS,uBAAuB,MAAM,UAAU,CAAC;AAAA,UAC5D,OAAO;AACL,iBAAK,IAAI,SAAS,qBAAqB,QAAQ;AAAA,UACjD;AACA,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,OAAO;AAC7B,cAAI,CAAC,MAAM,SAAS,GAAG;AACrB,iBAAK,IAAI,SAAS,sBAAsB,MAAM,aAAa,CAAC;AAC5D,iBAAK,IAAI,SAAS,sBAAsB,MAAM,QAAQ,CAAC;AACvD,iBAAK,IAAI,SAAS,wBAAwB,MAAM,UAAU,CAAC;AAAA,UAC7D,OAAO;AACL,iBAAK,IAAI,SAAS,sBAAsB,QAAQ;AAAA,UAClD;AACA,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,IAAI;AAC1B,eAAK,IAAI,SAAS,WAAW,EAAE;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,OAAO,SAAS;AAC9B,eAAK,IAAI,SAAS,UAAU,OAAO;AACnC,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC9E3B;AAAA,4EAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuB;AAC/B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,uBAAuBF,SAAQ,uBAAuB,SAAU,cAAc;AAChF,eAASK,sBAAqB,WAAW;AACvC,YAAI;AACJ,wBAAgB,MAAMA,qBAAoB;AAC1C,gBAAQ,WAAW,MAAMA,uBAAsB,CAAC,WAAW,YAAY,CAAC;AACxE,cAAM,IAAI,QAAQ,YAAY;AAC9B,eAAO;AAAA,MACT;AACA,gBAAUA,uBAAsB,YAAY;AAC5C,aAAO,aAAaA,uBAAsB,CAAC;AAAA,QACzC,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,aAAa;AACrC,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,WAAW,CAAC;AACjC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,WAAW;AACpC,iBAAO,KAAK,YAAY,YAAY,SAAS;AAAA,QAC/C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,oBAAoB,oBAAoB;AACtD,iBAAO,KAAK,YAAY,sBAAsB,kBAAkB;AAAA,QAClE;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,UAAU;AAClC,iBAAO,KAAK,YAAY,WAAW,SAAS,SAAS,CAAC;AAAA,QACxD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,eAAe;AAC5C,iBAAO,KAAK,YAAY,gBAAgB,aAAa;AAAA,QACvD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,QAAQ;AACvC,iBAAO,KAAK,YAAY,mBAAmB,MAAM;AAAA,QACnD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,OAAO;AACnC,eAAK,IAAI,SAAS,kBAAkB,MAAM,SAAS,CAAC;AACpD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACpE3B;AAAA,4EAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuB;AAC/B,QAAI,gBAAgB;AACpB,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,uBAAuBF,SAAQ,uBAAuB,SAAU,cAAc;AAChF,eAASK,sBAAqB,WAAW,SAAS,QAAQ;AACxD,YAAI;AACJ,wBAAgB,MAAMA,qBAAoB;AAC1C,gBAAQ,WAAW,MAAMA,uBAAsB,CAAC,SAAS,CAAC;AAC1D,cAAM,IAAI,QAAQ,YAAY;AAC9B,YAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,gBAAM,IAAI,SAAS,sBAAsB,QAAQ,aAAa,CAAC;AAC/D,gBAAM,IAAI,SAAS,sBAAsB,QAAQ,QAAQ,CAAC;AAC1D,gBAAM,IAAI,SAAS,wBAAwB,QAAQ,UAAU,CAAC;AAAA,QAChE,OAAO;AACL,gBAAM,IAAI,SAAS,sBAAsB,QAAQ;AAAA,QACnD;AACA,YAAI,CAAC,OAAO,SAAS,GAAG;AACtB,gBAAM,IAAI,SAAS,qBAAqB,OAAO,aAAa,CAAC;AAC7D,gBAAM,IAAI,SAAS,qBAAqB,OAAO,QAAQ,CAAC;AACxD,gBAAM,IAAI,SAAS,uBAAuB,OAAO,UAAU,CAAC;AAAA,QAC9D,OAAO;AACL,gBAAM,IAAI,SAAS,qBAAqB,QAAQ;AAAA,QAClD;AACA,eAAO;AAAA,MACT;AACA,gBAAUA,uBAAsB,YAAY;AAC5C,aAAO,aAAaA,qBAAoB;AAAA,IAC1C,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC5C3B;AAAA,0EAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,qBAAqB;AAC7B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,qBAAqBF,SAAQ,qBAAqB,SAAU,cAAc;AAC5E,eAASK,oBAAmB,WAAW;AACrC,YAAI;AACJ,wBAAgB,MAAMA,mBAAkB;AACxC,gBAAQ,WAAW,MAAMA,qBAAoB,CAAC,WAAW,UAAU,CAAC;AACpE,cAAM,IAAI,QAAQ,UAAU;AAC5B,eAAO;AAAA,MACT;AACA,gBAAUA,qBAAoB,YAAY;AAC1C,aAAO,aAAaA,qBAAoB,CAAC;AAAA,QACvC,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,WAAW;AACpC,iBAAO,KAAK,YAAY,YAAY,SAAS;AAAA,QAC/C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,UAAU;AAClC,iBAAO,KAAK,YAAY,WAAW,SAAS,SAAS,CAAC;AAAA,QACxD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,eAAe;AAC5C,iBAAO,KAAK,YAAY,gBAAgB,aAAa;AAAA,QACvD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,OAAO;AACnC,eAAK,IAAI,SAAS,kBAAkB,MAAM,SAAS,CAAC;AACpD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACnD3B;AAAA,sFAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,+BAA+B;AACvC,QAAI,gBAAgB;AACpB,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,+BAA+BF,SAAQ,+BAA+B,SAAU,cAAc;AAChG,eAASK,8BAA6B,WAAW,QAAQ,kBAAkB,mBAAmB;AAC5F,YAAI;AACJ,wBAAgB,MAAMA,6BAA4B;AAClD,gBAAQ,WAAW,MAAMA,+BAA8B,CAAC,SAAS,CAAC;AAClE,cAAM,IAAI,QAAQ,sBAAsB;AACxC,YAAI,OAAO,WAAW,UAAU;AAC9B,gBAAM,IAAI,SAAS,kBAAkB,MAAM;AAAA,QAC7C,OAAO;AACL,cAAI,SAAS,OAAO,IAAI,SAAU,OAAO;AACvC,gBAAI,MAAM,SAAS,GAAG;AACpB,qBAAO;AAAA,YACT;AACA,mBAAO,GAAG,OAAO,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO,MAAM,UAAU,CAAC;AAAA,UACjE,CAAC,EAAE,KAAK,GAAG;AACX,gBAAM,IAAI,SAAS,iBAAiB,MAAM;AAAA,QAC5C;AACA,cAAM,IAAI,SAAS,sBAAsB,iBAAiB;AAC1D,YAAI,CAAC,iBAAiB,SAAS,GAAG;AAChC,gBAAM,IAAI,SAAS,0BAA0B,iBAAiB,aAAa,CAAC;AAC5E,gBAAM,IAAI,SAAS,0BAA0B,iBAAiB,QAAQ,CAAC;AACvE,gBAAM,IAAI,SAAS,4BAA4B,iBAAiB,UAAU,CAAC;AAAA,QAC7E,OAAO;AACL,gBAAM,IAAI,SAAS,0BAA0B,QAAQ;AAAA,QACvD;AACA,eAAO;AAAA,MACT;AACA,gBAAUA,+BAA8B,YAAY;AACpD,aAAO,aAAaA,6BAA4B;AAAA,IAClD,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACjD3B;AAAA,mFAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,4BAA4B;AACpC,QAAI,gBAAgB;AACpB,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,4BAA4BF,SAAQ,4BAA4B,SAAU,cAAc;AAC1F,eAASK,2BAA0B,WAAW,aAAa,cAAc,aAAa;AACpF,YAAI;AACJ,wBAAgB,MAAMA,0BAAyB;AAC/C,gBAAQ,WAAW,MAAMA,4BAA2B,CAAC,SAAS,CAAC;AAC/D,cAAM,IAAI,QAAQ,mBAAmB;AACrC,YAAI,YAAY,SAAS,GAAG;AAC1B,gBAAM,IAAI,SAAS,qBAAqB,QAAQ;AAAA,QAClD,OAAO;AACL,gBAAM,IAAI,SAAS,qBAAqB,YAAY,aAAa,CAAC;AAClE,gBAAM,IAAI,SAAS,qBAAqB,YAAY,QAAQ,CAAC;AAC7D,gBAAM,IAAI,SAAS,uBAAuB,YAAY,UAAU,CAAC;AAAA,QACnE;AACA,cAAM,IAAI,SAAS,iBAAiB,YAAY;AAChD,YAAI,OAAO,gBAAgB,UAAU;AACnC,gBAAM,IAAI,SAAS,uBAAuB,WAAW;AAAA,QACvD,OAAO;AACL,cAAI,SAAS,YAAY,IAAI,SAAU,OAAO;AAC5C,gBAAI,MAAM,SAAS,GAAG;AACpB,qBAAO;AAAA,YACT;AACA,mBAAO,GAAG,OAAO,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO,MAAM,UAAU,CAAC;AAAA,UACjE,CAAC,EAAE,KAAK,GAAG;AACX,gBAAM,IAAI,SAAS,sBAAsB,MAAM;AAAA,QACjD;AACA,eAAO;AAAA,MACT;AACA,gBAAUA,4BAA2B,YAAY;AACjD,aAAO,aAAaA,0BAAyB;AAAA,IAC/C,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACjD3B;AAAA,oFAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,8BAA8B;AACtC,QAAI,gBAAgB;AACpB,QAAI,UAAU;AACd,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,qBAAqB,CAAC,KAAO,KAAQ,KAAQ,MAAS,OAAU,MAAS;AAC7E,QAAI,8BAA8BF,SAAQ,8BAA8B,SAAU,cAAc;AAC9F,eAASK,6BAA4B,WAAW,MAAM,SAAS,YAAY,UAAU,YAAY,QAAQ;AACvG,YAAI;AACJ,wBAAgB,MAAMA,4BAA2B;AACjD,gBAAQ,WAAW,MAAMA,8BAA6B,CAAC,SAAS,CAAC;AACjE,cAAM,IAAI,QAAQ,oBAAoB;AACtC,YAAI,CAAC,KAAK,SAAS,GAAG;AACpB,gBAAM,IAAI,SAAS,mBAAmB,KAAK,aAAa,CAAC;AACzD,gBAAM,IAAI,SAAS,mBAAmB,KAAK,QAAQ,CAAC;AACpD,gBAAM,IAAI,SAAS,qBAAqB,KAAK,UAAU,CAAC;AAAA,QAC1D,OAAO;AACL,gBAAM,IAAI,SAAS,mBAAmB,QAAQ;AAAA,QAChD;AACA,YAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,gBAAM,IAAI,SAAS,sBAAsB,QAAQ,aAAa,CAAC;AAC/D,gBAAM,IAAI,SAAS,sBAAsB,QAAQ,QAAQ,CAAC;AAC1D,gBAAM,IAAI,SAAS,wBAAwB,QAAQ,UAAU,CAAC;AAAA,QAChE,OAAO;AACL,gBAAM,IAAI,SAAS,sBAAsB,QAAQ;AAAA,QACnD;AACA,YAAI,OAAO,eAAe,YAAY,OAAO,aAAa,UAAU;AAClE,gBAAM,IAAI,QAAQ,gBAAgB,uBAAuB,CAAC,YAAY,QAAQ,CAAC;AAAA,QACjF,OAAO;AACL,gBAAM,IAAI,SAAS,cAAc,WAAW,SAAS,CAAC;AACtD,gBAAM,IAAI,SAAS,YAAY,SAAS,SAAS,CAAC;AAAA,QACpD;AACA,YAAI,CAAC,MAAM,kBAAkB,UAAU,GAAG;AACxC,gBAAM,IAAI,QAAQ,gBAAgB,sBAAsB,UAAU;AAAA,QACpE,OAAO;AACL,gBAAM,IAAI,SAAS,cAAc,WAAW,SAAS,CAAC;AAAA,QACxD;AACA,YAAI,CAAC,MAAM,cAAc,QAAQ,UAAU,GAAG;AAC5C,gBAAM,IAAI,QAAQ,gBAAgB,kBAAkB,MAAM;AAAA,QAC5D,OAAO;AACL,gBAAM,IAAI,SAAS,UAAU,OAAO,SAAS,CAAC;AAAA,QAChD;AACA,eAAO;AAAA,MACT;AACA,gBAAUA,8BAA6B,YAAY;AACnD,aAAO,aAAaA,8BAA6B,CAAC;AAAA,QAChD,KAAK;AAAA,QACL,OAAO,SAAS,kBAAkB,YAAY;AAC5C,iBAAO,mBAAmB,KAAK,SAAU,SAAS;AAChD,mBAAO,YAAY;AAAA,UACrB,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,QAAQ,YAAY;AAChD,cAAI,OAAO;AACX,iBAAO,EAAE,SAAS,cAAc,UAAU,KAAK,QAAQ,SAAS,SAAS;AAAA,QAC3E;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC3E3B;AAAA,yEAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oBAAoB;AAC5B,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,oBAAoBF,SAAQ,oBAAoB,SAAU,cAAc;AAC1E,eAASK,mBAAkB,WAAW;AACpC,YAAI;AACJ,wBAAgB,MAAMA,kBAAiB;AACvC,gBAAQ,WAAW,MAAMA,oBAAmB,CAAC,WAAW,QAAQ,CAAC;AACjE,cAAM,IAAI,QAAQ,QAAQ;AAC1B,eAAO;AAAA,MACT;AACA,gBAAUA,oBAAmB,YAAY;AACzC,aAAO,aAAaA,oBAAmB,CAAC;AAAA,QACtC,KAAK;AAAA,QACL,OAAO,SAAS,aAAa,MAAM,SAAS;AAC1C,cAAI,CAAC,KAAK,SAAS,GAAG;AACpB,iBAAK,IAAI,SAAS,mBAAmB,KAAK,aAAa,CAAC;AACxD,iBAAK,IAAI,SAAS,mBAAmB,KAAK,QAAQ,CAAC;AACnD,iBAAK,IAAI,SAAS,qBAAqB,KAAK,UAAU,CAAC;AAAA,UACzD,OAAO;AACL,iBAAK,IAAI,SAAS,mBAAmB,QAAQ;AAAA,UAC/C;AACA,cAAI,CAAC,QAAQ,SAAS,GAAG;AACvB,iBAAK,IAAI,SAAS,sBAAsB,QAAQ,aAAa,CAAC;AAC9D,iBAAK,IAAI,SAAS,sBAAsB,QAAQ,QAAQ,CAAC;AACzD,iBAAK,IAAI,SAAS,wBAAwB,QAAQ,UAAU,CAAC;AAAA,UAC/D,OAAO;AACL,iBAAK,IAAI,SAAS,sBAAsB,QAAQ;AAAA,UAClD;AACA,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS,SAAS;AAChC,eAAK,IAAI,SAAS,YAAY,OAAO;AACrC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,WAAW;AACjC,eAAK,IAAI,SAAS,cAAc,SAAS;AACzC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,WAAW;AACpC,iBAAO,KAAK,YAAY,YAAY,SAAS;AAAA,QAC/C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,iBAAiB;AAChD,iBAAO,KAAK,YAAY,mBAAmB,eAAe;AAAA,QAC5D;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;ACvE3B;AAAA,8EAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,yBAAyB;AACjC,QAAI,gBAAgB;AACpB,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASE,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,QAAI,yBAAyBF,SAAQ,yBAAyB,SAAU,cAAc;AACpF,eAASK,wBAAuB,WAAW;AACzC,YAAI;AACJ,wBAAgB,MAAMA,uBAAsB;AAC5C,gBAAQ,WAAW,MAAMA,yBAAwB,CAAC,WAAW,cAAc,CAAC;AAC5E,cAAM,IAAI,QAAQ,cAAc;AAChC,eAAO;AAAA,MACT;AACA,gBAAUA,yBAAwB,YAAY;AAC9C,aAAO,aAAaA,yBAAwB,CAAC;AAAA,QAC3C,KAAK;AAAA,QACL,OAAO,SAAS,YAAY,eAAe;AACzC,cAAI,UAAU,IAAI,cAAc,YAAY,KAAK,IAAI,MAAM,CAAC;AAC5D,kBAAQ,OAAO,KAAK,CAAC,aAAa,CAAC;AACnC,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,WAAW;AACpC,iBAAO,KAAK,YAAY,YAAY,SAAS;AAAA,QAC/C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,oBAAoB,oBAAoB;AACtD,iBAAO,KAAK,YAAY,sBAAsB,kBAAkB;AAAA,QAClE;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,UAAU;AAClC,iBAAO,KAAK,YAAY,WAAW,SAAS,SAAS,CAAC;AAAA,QACxD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,QAAQ;AACvC,iBAAO,KAAK,YAAY,mBAAmB,MAAM;AAAA,QACnD;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,OAAO;AACnC,eAAK,IAAI,SAAS,kBAAkB,MAAM,SAAS,CAAC;AACpD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE,cAAc,WAAW;AAAA;AAAA;;;AC/D3B,IAAAC,kBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,6BAA6BA,SAAQ,gBAAgB;AAC7D,QAAI,aAAa,uBAAuB,mBAAuB;AAC/D,QAAI,eAAe;AACnB,QAAI,SAAS,uBAAuB,aAAgB;AACpD,QAAI,gBAAgB;AACpB,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,wBAAwB;AAC5B,QAAI,oBAAoB;AACxB,QAAI,uBAAuB;AAC3B,QAAI,mCAAmC;AACvC,QAAI,uBAAuB;AAC3B,QAAI,qBAAqB;AACzB,QAAI,uBAAuB;AAC3B,QAAI,+BAA+B;AACnC,QAAI,sBAAsB;AAC1B,QAAI,0BAA0B;AAC9B,QAAI,0BAA0B;AAC9B,QAAI,wBAAwB;AAC5B,QAAI,oCAAoC;AACxC,QAAI,iCAAiC;AACrC,QAAI,kCAAkC;AACtC,QAAI,uBAAuB;AAC3B,QAAI,4BAA4B;AAChC,QAAI,wBAAwB,wBAAwB,8BAAiC;AACrF,aAAS,wBAAwB,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,QAAS,KAAI,IAAI,oBAAI,QAAQ,GAAG,IAAI,oBAAI,QAAQ;AAAG,cAAQ,0BAA0B,SAASC,yBAAwBC,IAAGC,IAAG;AAAE,YAAI,CAACA,MAAKD,MAAKA,GAAE,WAAY,QAAOA;AAAG,YAAI,GAAG,GAAG,IAAI,EAAE,WAAW,MAAM,SAASA,GAAE;AAAG,YAAI,SAASA,MAAK,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,GAAG,QAAO;AAAG,YAAI,IAAIC,KAAI,IAAI,GAAG;AAAE,cAAI,EAAE,IAAID,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,CAAC;AAAA,QAAG;AAAE,iBAAS,OAAOA,GAAG,eAAc,OAAO,CAAC,EAAE,eAAe,KAAKA,IAAG,GAAG,OAAO,KAAK,IAAI,OAAO,mBAAmB,OAAO,yBAAyBA,IAAG,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,IAAIA,GAAE,GAAG;AAAI,eAAO;AAAA,MAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AAC1oB,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUE,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEA,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAER,IAAGE,IAAG;AAAE,mBAAOE,KAAIJ,IAAGK,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGQ,IAAG,GAAG;AAAE,gBAAIF,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAME,MAAK,EAAEA,IAAG,CAAC,GAAGJ,KAAII,IAAGH,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASH,IAAG;AAAE,gBAAAI,KAAI,GAAGC,KAAI,GAAGC,KAAIN;AAAA,cAAG,UAAE;AAAU,gBAAAO,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEP,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASW,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASX,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGG,IAAGC,IAAGH,IAAG;AAAE,iBAAS,EAAEE,IAAGC,IAAG;AAAE,8BAAoBJ,IAAGG,IAAG,SAAUH,IAAG;AAAE,mBAAO,KAAK,QAAQG,IAAGC,IAAGJ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAG,KAAI,IAAI,EAAEH,IAAGG,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACH,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAID,GAAEG,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,6BAA6BN,SAAQ,6BAA6B,KAAK;AAC3E,QAAI,mBAAmB;AACvB,QAAI,wBAAwB;AAC5B,aAAS,kBAAkB,KAAK;AAC9B,aAAO,IAAI,WAAW,QAAQ,GAAG,EAAE,IAAI,gBAAgB,EAAE,SAAS;AAAA,IACpE;AACA,QAAI,gBAAgBA,SAAQ,gBAAgB,WAAY;AACtD,eAASc,eAAc,WAAW;AAChC,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAChF,wBAAgB,MAAMA,cAAa;AACnC,aAAK,aAAa,GAAG,OAAO,SAAS,SAAS;AAC9C,YAAI,YAAY,OAAO,KAAK,cAAc,cAAc,QAAQ,OAAO,YAAY,IAAI,KAAK;AAC5F,YAAI,gBAAgB,CAAC;AACrB,YAAI,KAAK,SAAS;AAChB,wBAAc,YAAY,IAAI,KAAK;AAAA,QACrC;AACA,YAAI,KAAK,YAAY;AACnB,wBAAc,eAAe,IAAI,KAAK;AAAA,QACxC;AACA,YAAI,KAAK,WAAW;AAClB,wBAAc,cAAc,IAAI,KAAK;AAAA,QACvC;AACA,YAAI,KAAK,SAAS;AAChB,iBAAO,OAAO,eAAe,KAAK,OAAO;AAAA,QAC3C;AACA,YAAI,OAAO,KAAK,aAAa,EAAE,SAAS,GAAG;AACzC,gCAAsB,QAAQ,aAAa,QAAQ,IAAI,SAAUC,SAAQ;AACvE,YAAAA,QAAO,UAAUA,QAAO,WAAW,CAAC;AACpC,YAAAA,QAAO,UAAU,OAAO,OAAOA,QAAO,SAAS,aAAa;AAC5D,mBAAOA;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,KAAK,UAAU,SAAS,MAAM,WAAW,CAAC,WAAW;AACvD,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QAC7D;AAAA,MACF;AACA,aAAO,aAAaD,gBAAe,CAAC;AAAA,QAClC,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,SAAS;AAClF,gBAAI,UACF,aACA,QAAQ;AACV,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,6BAAW,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI;AACnE,iCAAe,GAAG,sBAAsB,sBAAsB,KAAK,UAAU,SAAS,CAAC;AACvF,sBAAI,CAAC,aAAa;AAChB,6BAAS,IAAI;AACb;AAAA,kBACF;AACA,yBAAO,SAAS,EAAE,GAAG;AAAA,oBACnB,SAAS;AAAA,oBACT,SAAS,cAAc;AAAA,kBACzB,CAAC;AAAA,gBACH,KAAK;AACH,sBAAI,CAAC,UAAU;AACb,6BAAS,IAAI;AACb;AAAA,kBACF;AACA,yBAAO,SAAS,EAAE,GAAG;AAAA,oBACnB,SAAS;AAAA,oBACT,SAAS,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAI,IAAI;AAAA,kBACrD,CAAC;AAAA,gBACH,KAAK;AACH,2BAAS,IAAI;AACb,yBAAO,sBAAsB,QAAQ,KAAK,GAAG,OAAO,SAAS,KAAK,SAAS,EAAE,SAAS,CAAC;AAAA,gBACzF,KAAK;AACH,yBAAO,SAAS,EAAE,GAAG,KAAK,gBAAgB,SAAS,IAAI,CAAC;AAAA,cAC5D;AAAA,YACF,GAAG,SAAS,IAAI;AAAA,UAClB,CAAC,CAAC;AACF,mBAAS,gBAAgB,IAAI;AAC3B,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,gBAAgB,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACzE,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,KAAK,SAAS;AAAA,gBACvB,KAAK;AACH,6BAAW,UAAU;AACrB,yBAAO,UAAU,EAAE,GAAG,SAAS,SAAS,sBAAsB,EAAE,KAAK,GAAG;AAAA,cAC5E;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,eAAe;AACtB,mBAAO,cAAc,MAAM,MAAM,SAAS;AAAA,UAC5C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,YAAY,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACrE,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,uBAAK,IAAI,cAAc,aAAa,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AACtE,qBAAG,OAAO,KAAK,CAAC,WAAW,CAAC;AAC5B,yBAAO,UAAU,EAAE,GAAG,GAAG,KAAK,CAAC;AAAA,cACnC;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,WAAW;AAClB,mBAAO,UAAU,MAAM,MAAM,SAAS;AAAA,UACxC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACjE,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,uBAAK,IAAI,cAAc,aAAa,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AACtE,yBAAO,UAAU,EAAE,GAAG,GAAG,KAAK,CAAC;AAAA,cACnC;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,OAAO;AACd,mBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,UACpC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,qBAAqB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,aAAa;AACzF,gBAAI,MACF,IACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI;AAAA,oBAChE,uBAAuB;AAAA,kBACzB;AACA,sBAAI,KAAK,uBAAuB;AAC9B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,4BAAU,IAAI;AACd,yBAAO,KAAK,kBAAkB,WAAW;AAAA,gBAC3C,KAAK;AACH,uBAAK,mBAAmB,YAAY,WAAW,EAAE,MAAM,EAAE,SAAS,QAAQ,CAAC;AAC3E,yBAAO,UAAU,EAAE,GAAG,sBAAsB,QAAQ,MAAM,GAAG,OAAO,SAAS,KAAK,SAAS,EAAE,QAAQ,cAAc,EAAE,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG;AAAA,oBACjJ,SAAS;AAAA,oBACT,SAAS;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF,CAAC,EAAE,KAAK,SAAU,UAAU;AAC1B,wBAAI,CAAC,SAAS,KAAK,YAAY;AAC7B,6BAAO,SAAS;AAAA,oBAClB;AACA,wBAAI,cAAc,aAAa,IAAI,kBAAkB,QAAQ,SAAS,KAAK,YAAY,QAAQ;AAC/F,wBAAI,UAAU,YAAY,OAAO,EAAE,MAAM;AACzC,wBAAI;AACJ,wBAAI;AACJ,wBAAI,QAAQ,QAAQ;AAClB,qCAAe,QAAQ,IAAI,SAAU,QAAQ,GAAG;AAC9C,4BAAI,OAAO,MAAM,EAAE,OAAO,EAAE,SAAS,oBAAoB,OAAO,MAAM,EAAE,OAAO,EAAE,SAAS,mBAAmB;AAC3G,iCAAO;AAAA,wBACT;AACA,yCAAiB;AACjB,4BAAI,eAAe,IAAI,WAAW,QAAQ,CAAC;AAC3C,4BAAI,aAAa,IAAI,WAAW,QAAQ,CAAC;AACzC,4BAAI,eAAe,OAAO,MAAM,EAAE,MAAM,EAAE,QAAQ;AAClD,4BAAI,gBAAgB,aAAa,cAAc,EAAE,IAAI,SAAU,kBAAkB;AAC/E,8BAAI,eAAe,iBAAiB,MAAM;AAC1C,8BAAI,WAAW;AACf,kCAAQ,iBAAiB,OAAO,GAAG;AAAA,4BACjC,KAAK,aAAa,IAAI,cAAc,gBAAgB;AAClD,yCAAW,aAAa,OAAO,uBAAuB,aAAa,cAAc,CAAC;AAClF;AAAA,4BACF,KAAK,aAAa,IAAI,cAAc,uBAAuB;AACzD,yCAAW,aAAa,OAAO,uBAAuB,aAAa,SAAS,EAAE,QAAQ,CAAC;AACvF;AAAA,4BACF;AACE,oCAAM,IAAI,MAAM,8BAA8B,OAAO,iBAAiB,OAAO,CAAC,CAAC;AAAA,0BACnF;AACA,8BAAI,2BAA2B,IAAI,WAAW,QAAQ,aAAa,aAAa,EAAE,SAAS,CAAC;AAC5F,8BAAI,yBAAyB,IAAI,WAAW,QAAQ,aAAa,WAAW,EAAE,SAAS,CAAC;AACxF,yCAAe,aAAa,KAAK,sBAAsB;AACvD,uCAAa,WAAW,KAAK,wBAAwB;AACrD,8BAAI,OAAO,aAAa,MAAM,cAAc,aAAa,UAAU,CAAC;AACpE,8BAAI,SAAS,aAAa,MAAM,cAAc,aAAa,YAAY,CAAC;AACxE,8BAAI,YAAY;AAAA,4BACd,MAAM,KAAK,aAAa;AAAA,4BACxB,WAAW,KAAK,QAAQ;AAAA,4BACxB,QAAQ,KAAK,UAAU;AAAA,0BACzB;AACA,8BAAI,cAAc;AAAA,4BAChB,MAAM,OAAO,aAAa;AAAA,4BAC1B,WAAW,OAAO,QAAQ;AAAA,4BAC1B,QAAQ,OAAO,UAAU;AAAA,0BAC3B;AACA,iCAAO;AAAA,4BACL;AAAA,4BACA,SAAS,aAAa,QAAQ,EAAE,SAAS;AAAA,4BACzC;AAAA,4BACA,YAAY,kBAAkB,sBAAsB;AAAA,4BACpD;AAAA,4BACA,cAAc,kBAAkB,wBAAwB;AAAA,0BAC1D;AAAA,wBACF,CAAC;AACD,4BAAI,SAAS,aAAa,MAAM,EAAE,OAAO,EAAE;AAC3C,4BAAI;AACJ,4BAAI,OAAO,aAAa,MAAM,EAAE,UAAU,cAAc,aAAa,MAAM,EAAE,MAAM,GAAG;AACpF,8BAAI,WAAW,aAAa,MAAM,EAAE,MAAM;AAC1C,yCAAe;AAAA,4BACb,SAAS,SAAS,QAAQ,EAAE,SAAS;AAAA,4BACrC,SAAS,CAAC;AAAA,4BACV,QAAQ,CAAC;AAAA,4BACT,QAAQ,kBAAkB,SAAS,OAAO,EAAE,SAAS,CAAC;AAAA,4BACtD,OAAO;AAAA,8BACL,GAAG,SAAS,MAAM,EAAE,EAAE;AAAA,8BACtB,GAAG,SAAS,MAAM,EAAE,EAAE;AAAA,4BACxB;AAAA,0BACF;AACA,8BAAI,UAAU,aAAa,MAAM,cAAc,SAAS,QAAQ,CAAC;AACjE,uCAAa,UAAU;AAAA,4BACrB,MAAM,QAAQ,aAAa;AAAA,4BAC3B,WAAW,QAAQ,QAAQ;AAAA,4BAC3B,QAAQ,QAAQ,UAAU;AAAA,0BAC5B;AACA,8BAAI,SAAS,aAAa,MAAM,cAAc,SAAS,OAAO,CAAC;AAC/D,uCAAa,SAAS;AAAA,4BACpB,MAAM,OAAO,aAAa;AAAA,4BAC1B,WAAW,OAAO,QAAQ;AAAA,4BAC1B,QAAQ,OAAO,UAAU;AAAA,0BAC3B;AAAA,wBACF;AACA,+BAAO;AAAA,0BACL;AAAA,0BACA;AAAA,0BACA,gBAAgB;AAAA,0BAChB;AAAA,0BACA,cAAc,kBAAkB,YAAY;AAAA,0BAC5C,YAAY,kBAAkB,UAAU;AAAA,0BACxC,aAAa,CAAC,cAAc,UAAU,WAAW;AAAA,0BACjD,oBAAoB,CAAC,CAAC,cAAc,UAAU,WAAW;AAAA,0BACzD,sBAAsB,CAAC,CAAC,cAAc,UAAU,WAAW;AAAA,0BAC3D,uBAAuB,CAAC,cAAc,UAAU,WAAW;AAAA,wBAC7D;AAAA,sBACF,CAAC,EAAE,OAAO,SAAU,QAAQ;AAC1B,+BAAO,CAAC,CAAC;AAAA,sBACX,CAAC;AAAA,oBACH;AACA,2BAAO,cAAc,cAAc,CAAC,GAAG,SAAS,IAAI,GAAG,CAAC,GAAG;AAAA,sBACzD,cAAc,iBAAiB,eAAe;AAAA,oBAChD,CAAC;AAAA,kBACH,CAAC,EAAE,MAAM,SAAU,UAAU;AAC3B,wBAAI,oBAAoB,OAAO;AAC7B,6BAAO,QAAQ,OAAO,QAAQ;AAAA,oBAChC;AACA,2BAAO,QAAQ,OAAO,IAAI,QAAQ,iBAAiB,oDAAoD,OAAO,SAAS,QAAQ,GAAG,EAAE,OAAO,SAAS,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,kBACjL,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,kBAAkB,KAAK;AAC9B,mBAAO,mBAAmB,MAAM,MAAM,SAAS;AAAA,UACjD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,0BAA0B,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,aAAa;AAC9F,gBAAI,MACF,IACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI;AAAA,oBAChE,uBAAuB;AAAA,kBACzB;AACA,sBAAI,KAAK,uBAAuB;AAC9B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,4BAAU,IAAI;AACd,yBAAO,KAAK,kBAAkB,WAAW;AAAA,gBAC3C,KAAK;AACH,uBAAK,mBAAmB,YAAY,WAAW,EAAE,MAAM,EAAE,SAAS,QAAQ,CAAC;AAC3E,yBAAO,UAAU,EAAE,GAAG,sBAAsB,QAAQ,MAAM,GAAG,OAAO,SAAS,KAAK,SAAS,EAAE,QAAQ,oBAAoB,EAAE,SAAS,GAAG,MAAM,OAAO,EAAE,GAAG;AAAA,oBACvJ,SAAS;AAAA,sBACP,gBAAgB;AAAA,oBAClB;AAAA,kBACF,CAAC,EAAE,KAAK,SAAU,UAAU;AAC1B,2BAAO,SAAS;AAAA,kBAClB,CAAC,EAAE,MAAM,SAAU,UAAU;AAC3B,wBAAI,oBAAoB,OAAO;AAC7B,6BAAO,QAAQ,OAAO,QAAQ;AAAA,oBAChC;AACA,2BAAO,QAAQ,OAAO,IAAI,QAAQ,iBAAiB,oDAAoD,OAAO,SAAS,QAAQ,GAAG,EAAE,OAAO,SAAS,UAAU,GAAG,SAAS,IAAI,CAAC;AAAA,kBACjL,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,uBAAuB,KAAK;AACnC,mBAAO,wBAAwB,MAAM,MAAM,SAAS;AAAA,UACtD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW;AACzB,iBAAO,IAAI,sBAAsB,oBAAoB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACzF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,oBAAoB;AAClC,iBAAO,IAAI,iCAAiC,6BAA6B,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QAC7G;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU;AACxB,iBAAO,IAAI,qBAAqB,mBAAmB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACvF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe;AAC7B,iBAAO,IAAI,0BAA0B,wBAAwB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACjG;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,iBAAO,IAAI,oBAAoB,kBAAkB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACrF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,SAAS,QAAQ;AACzC,iBAAO,IAAI,wBAAwB,sBAAsB,GAAG,OAAO,SAAS,KAAK,SAAS,GAAG,SAAS,MAAM;AAAA,QAC9G;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,iBAAO,IAAI,qBAAqB,mBAAmB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACvF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa;AAC3B,iBAAO,IAAI,wBAAwB,sBAAsB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QAC7F;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB;AAC/B,iBAAO,IAAI,6BAA6B,0BAA0B,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACtG;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,mBAAmB,QAAQ,kBAAkB,mBAAmB;AAC9E,iBAAO,IAAI,kCAAkC,8BAA8B,GAAG,OAAO,SAAS,KAAK,SAAS,GAAG,QAAQ,kBAAkB,iBAAiB;AAAA,QAC5J;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,gBAAgB,aAAa,cAAc,aAAa;AACtE,iBAAO,IAAI,+BAA+B,2BAA2B,GAAG,OAAO,SAAS,KAAK,SAAS,GAAG,aAAa,cAAc,WAAW;AAAA,QACjJ;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW;AACzB,iBAAO,IAAI,sBAAsB,oBAAoB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACzF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU;AACxB,iBAAO,IAAI,qBAAqB,mBAAmB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACvF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,SAAS;AACjC,iBAAO,IAAI,mBAAmB,kBAAkB,GAAG,OAAO,SAAS,KAAK,SAAS,GAAG,OAAO;AAAA,QAC7F;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,iBAAO,IAAI,qBAAqB,mBAAmB,GAAG,OAAO,SAAS,KAAK,SAAS,CAAC;AAAA,QACvF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,eAAe,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,WAAW;AACjF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,KAAK,SAAS,EAAE,UAAU,SAAS,EAAE,KAAK;AAAA,gBACnD,KAAK;AACH,wBAAM,UAAU;AAChB,yBAAO,UAAU,EAAE,GAAG,IAAI,kBAAkB,gBAAgB,GAAG,CAAC;AAAA,cACpE;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,YAAY,KAAK;AACxB,mBAAO,aAAa,MAAM,MAAM,SAAS;AAAA,UAC3C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,MAAM,SAAS,YAAY,UAAU,YAAY,QAAQ;AACxF,iBAAO,IAAI,gCAAgC,6BAA6B,GAAG,OAAO,SAAS,KAAK,SAAS,GAAG,MAAM,SAAS,YAAY,UAAU,YAAY,MAAM;AAAA,QACrK;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,qBAAqB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,aAAa;AACzF,gBAAI,cAAc,GAAG,WAAW,aAAa,SAAS,IAAI;AAC1D,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,gBAC3C,KAAK;AACH,sBAAI,uBAAuB,aAAa,oBAAoB;AAC1D,kCAAc,YAAY;AAAA,kBAC5B;AACA,sBAAI,EAAE,YAAY,KAAK,SAAS,SAAS;AACvC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,CAAC;AAAA,gBACtB,KAAK;AACH,iCAAe,oBAAI,IAAI;AACvB,sBAAI;AAAA,gBACN,KAAK;AACH,sBAAI,EAAE,IAAI,YAAY,WAAW,SAAS;AACxC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,YAAY,WAAW,CAAC;AACpC,uBAAK,UAAU;AACf,4BAAU,IAAI,OAAO,YAAY,IAAI,OAAO,6BAA6B,IAAI,OAAO,0BAA0B,IAAI,OAAO,iBAAiB,IAAI;AAC9I;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,CAAC;AAAA,gBACzB,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,gBAC1B,KAAK;AACH,gCAAc,UAAU;AACxB,sBAAI,CAAC,aAAa,IAAI,WAAW,GAAG;AAClC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,gBAC1B,KAAK;AACH,+BAAa,IAAI,WAAW;AAC5B,sBAAI,CAAC,YAAY,WAAW,GAAG,GAAG;AAChC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,gBAC1B,KAAK;AACH,4BAAU,IAAI;AACd,4BAAU,IAAI;AACd,yBAAO,KAAK,YAAY,WAAW;AAAA,gBACrC,KAAK;AACH,4BAAU,UAAU;AACpB,sBAAI,EAAE,QAAQ,UAAU,sBAAsB,MAAM,wBAAwB;AAC1E,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,QAAQ,yBAAyB,yBAAyB,aAAa,CAAC;AAAA,gBACpF,KAAK;AACH,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,4BAAU,IAAI;AACd,wBAAM,UAAU;AAChB,sBAAI,EAAE,eAAe,QAAQ,2BAA2B;AACtD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM;AAAA,gBACR,KAAK;AACH,sBAAI,eAAe,QAAQ,eAAe;AACxC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM;AAAA,gBACR,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,gBAC1B,KAAK;AACH,uBAAK;AACL,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAAA,UAC9B,CAAC,CAAC;AACF,mBAAS,kBAAkB,KAAK;AAC9B,mBAAO,mBAAmB,MAAM,MAAM,SAAS;AAAA,UACjD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;AC3iBF;AAAA,2DAAAE,UAAAC,SAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeF,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,eAAe;AAAA,MACjB,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,IACxB;AACA,WAAO,eAAeA,UAAS,eAAe;AAAA,MAC5C,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,sBAAsB;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,mBAAmB;AAAA,MAChD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,sBAAsB;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,UAAU;AAAA,MACvC,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,UAAU;AAClB,WAAO,eAAeA,UAAS,wBAAwB;AAAA,MACrD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,sBAAsB;AAAA,MAC/B;AAAA,IACF,CAAC;AACD,QAAI,eAAe;AACnB,WAAO,KAAK,YAAY,EAAE,QAAQ,SAAU,KAAK;AAC/C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,aAAa,GAAG,EAAG;AAC1D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,aAAa,GAAG;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,cAAc;AAClB,WAAO,KAAK,WAAW,EAAE,QAAQ,SAAU,KAAK;AAC9C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,YAAY,GAAG,EAAG;AACzD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,YAAY,GAAG;AAAA,QACxB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,oBAAoB;AACxB,WAAO,KAAK,iBAAiB,EAAE,QAAQ,SAAU,KAAK;AACpD,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,kBAAkB,GAAG,EAAG;AAC/D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,kBAAkB,GAAG;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,UAAU;AACd,QAAI,wBAAwB,wBAAwB,8BAAiC;AACrF,aAAS,wBAAwB,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,QAAS,KAAI,IAAI,oBAAI,QAAQ,GAAG,IAAI,oBAAI,QAAQ;AAAG,cAAQ,0BAA0B,SAASG,yBAAwBC,IAAGC,IAAG;AAAE,YAAI,CAACA,MAAKD,MAAKA,GAAE,WAAY,QAAOA;AAAG,YAAI,GAAG,GAAG,IAAI,EAAE,WAAW,MAAM,SAASA,GAAE;AAAG,YAAI,SAASA,MAAK,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,GAAG,QAAO;AAAG,YAAI,IAAIC,KAAI,IAAI,GAAG;AAAE,cAAI,EAAE,IAAID,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,CAAC;AAAA,QAAG;AAAE,iBAAS,MAAMA,GAAG,eAAc,MAAM,CAAC,EAAE,eAAe,KAAKA,IAAG,EAAE,OAAO,KAAK,IAAI,OAAO,mBAAmB,OAAO,yBAAyBA,IAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAIA,GAAE,EAAE;AAAI,eAAO;AAAA,MAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACnoB,QAAI,WAAWJ,SAAQ,UAAUC,QAAO;AAAA;AAAA;;;AC5ExC,IAAAK,eAAA;AAAA,qDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,MAAM;AACd,QAAI;AACJ,KAAC,SAAU,MAAM;AACf,UAAI,uBAAuB,SAAUC,uBAAsB;AACzD,QAAAA,sBAAqB,SAAS,IAAI;AAClC,QAAAA,sBAAqB,WAAW,IAAI;AACpC,QAAAA,sBAAqB,QAAQ,IAAI;AACjC,eAAOA;AAAA,MACT,EAAE,CAAC,CAAC;AACJ,WAAK,uBAAuB;AAC5B,eAAS,kBAAkB,KAAK;AAC9B,eAAO,WAAW;AAAA,MACpB;AACA,WAAK,oBAAoB;AACzB,eAAS,oBAAoB,KAAK;AAChC,eAAO,qBAAqB;AAAA,MAC9B;AACA,WAAK,sBAAsB;AAC3B,eAAS,oBAAoB,KAAK;AAChC,eAAO,oBAAoB,GAAG,KAAK,qBAAqB,OAAO,CAAC,CAAC,IAAI,gBAAgB;AAAA,MACvF;AACA,WAAK,sBAAsB;AAC3B,eAAS,gBAAgB,KAAK;AAC5B,eAAO,CAAC,IAAI;AAAA,MACd;AACA,WAAK,kBAAkB;AAAA,IACzB,GAAG,QAAQD,SAAQ,MAAM,MAAM,CAAC,EAAE;AAAA;AAAA;;;AC/BlC,IAAAE,iBAAA;AAAA,uDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,UAAUA,SAAQ,UAAUA,SAAQ,cAAc;AAC1D,QAAI,cAAc;AAClB,QAAI,UAAUA,SAAQ,UAAU;AAChC,QAAI,cAAcA,SAAQ,eAAe,GAAG,YAAY,QAAQ;AAAA,MAC9D,SAAS;AAAA,QACP,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,MACtB;AAAA,IACF,CAAC;AACD,QAAI,WAAWA,SAAQ,UAAU;AAAA;AAAA;;;ACdjC;AAAA,yDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,aAAa;AACrB,QAAI,SAAS,uBAAuB,gBAAkB;AACtD,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGC,IAAGC,IAAG;AAAE,YAAIC,KAAIH,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWI,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUL,IAAGC,IAAGC,IAAG;AAAE,cAAIC,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIJ,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASK,GAAEC,IAAGR,IAAG;AAAE,mBAAOG,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIL,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKG,KAAIJ,IAAGK,KAAIJ,IAAG,IAAI,GAAG,CAAC,KAAKK,MAAK,CAACJ,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGC,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAH,KAAI,KAAKE,KAAI,MAAMD,QAAOI,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOL,KAAIF,KAAI,KAAKO,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIH,IAAG,EAAE,IAAIE,GAAE,CAAC,KAAKI,KAAI,MAAML,KAAIF,KAAI,KAAKG,GAAE,CAAC,IAAIF,MAAKA,KAAI,OAAOE,GAAE,CAAC,IAAIH,IAAGG,GAAE,CAAC,IAAIF,IAAG,EAAE,IAAI,GAAGG,KAAI;AAAA,YAAK;AAAE,gBAAIF,MAAKF,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUC,IAAGO,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMF,KAAI,SAAS,IAAIC,GAAED,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKC,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCH,KAAI,UAAU,GAAGE,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIL,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASO,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEN,IAAGE,IAAGC,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGV,IAAGC,IAAGO,IAAG;AAAE,iBAAS,EAAER,IAAGC,IAAG;AAAE,8BAAoBS,IAAGV,IAAG,SAAUU,IAAG;AAAE,mBAAO,KAAK,QAAQV,IAAGC,IAAGS,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAV,KAAI,IAAI,EAAEU,IAAGV,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACO,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEV,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,eAAe,KAAK,MAAM;AACjC,aAAO,IAAI,eAAe,IAAI;AAAA,IAChC;AACA,aAAS,WAAW,IAAI,KAAK;AAC3B,aAAO,YAAY,MAAM,MAAM,SAAS;AAAA,IAC1C;AACA,aAAS,cAAc;AACrB,oBAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,KAAK,QAAQ;AAC7E,YAAI,OACF,UACA,gBACA,QAAQ;AACV,eAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,iBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,YAC5B,KAAK;AACH,sBAAQ,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI;AAChE,uBAAS,IAAI;AACb,qBAAO,OAAO,QAAQ,KAAK,KAAK;AAAA,gBAC9B,SAAS;AAAA,gBACT,IAAI;AAAA,gBACJ;AAAA,gBACA,QAAQ;AAAA,cACV,CAAC;AAAA,YACH,KAAK;AACH,yBAAW,SAAS;AACpB,kBAAI,CAAC,eAAe,SAAS,MAAM,OAAO,GAAG;AAC3C,yBAAS,IAAI;AACb;AAAA,cACF;AACA,oBAAM,SAAS,KAAK;AAAA,YACtB,KAAK;AACH,qBAAO,SAAS,EAAE,IAAI,iBAAiB,SAAS,UAAU,QAAQ,mBAAmB,SAAS,SAAS,eAAe,MAAM;AAAA,YAC9H,KAAK;AACH,qBAAO,SAAS,EAAE,CAAC;AAAA,UACvB;AAAA,QACF,GAAG,OAAO;AAAA,MACZ,CAAC,CAAC;AACF,aAAO,YAAY,MAAM,MAAM,SAAS;AAAA,IAC1C;AAAA;AAAA;;;AClDA;AAAA,yDAAAW,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,IAAAA,SAAQ,wBAAwB;AAChC,IAAAA,SAAQ,0BAA0B;AAClC,IAAAA,SAAQ,qBAAqB;AAC7B,IAAAA,SAAQ,uBAAuB;AAC/B,IAAAA,SAAQ,uBAAuB;AAC/B,QAAI,eAAe;AACnB,QAAI,OAAO;AACX,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,wBAAwB,KAAK;AACpC,UAAI,iBAAiB,IAAI,gBACvB,sBAAsB,IAAI;AAC5B,aAAO,IAAI;AACX,aAAO,IAAI;AACX,UAAI,gBAAgB;AAClB,eAAO,cAAc,cAAc,cAAc,CAAC,GAAG,GAAG,GAAG,wBAAwB,UAAa,oBAAoB,SAAS,KAAK;AAAA,UAChI,kBAAkB,oBAAoB,IAAI,SAAU,KAAK;AACvD,mBAAO,aAAa,IAAI,gBAAgB,QAAQ,KAAK,QAAQ;AAAA,UAC/D,CAAC;AAAA,QACH,CAAC,GAAG,CAAC,GAAG;AAAA,UACN,aAAa,aAAa,IAAI,kBAAkB,QAAQ,gBAAgB,QAAQ;AAAA,QAClF,CAAC;AAAA,MACH;AACA,aAAO,cAAc,CAAC,GAAG,GAAG;AAAA,IAC9B;AACA,aAAS,qBAAqB,KAAK;AACjC,UAAI,uBAAuB,aAAa,uBAAuB;AAC/D,UAAI,OAAO,aAAa,IAAI,gBAAgB,QAAQ,IAAI,eAAe,QAAQ;AAC/E,UAAI,OAAO;AAAA,QACT,QAAQ,IAAI;AAAA,QACZ,WAAW,IAAI;AAAA,QACf,kBAAkB,IAAI;AAAA,QACtB,SAAS,IAAI;AAAA,QACb,aAAa,aAAa,IAAI,oBAAoB,QAAQ,IAAI,aAAa,QAAQ;AAAA,QACnF,WAAW,aAAa,IAAI,kBAAkB,QAAQ,IAAI,WAAW,QAAQ;AAAA,QAC7E,eAAe;AAAA,QACf,QAAQ;AAAA,UACN,qBAAqB,yBAAyB,cAAc,IAAI,YAAY,QAAQ,gBAAgB,SAAS,SAAS,YAAY,uBAAuB,QAAQ,0BAA0B,SAAS,wBAAwB,CAAC,GAAG,IAAI,SAAU,KAAK;AACjP,mBAAO,IAAI,IAAI,SAAU,GAAG;AAC1B,qBAAO,aAAa,IAAI,cAAc,QAAQ,GAAG,QAAQ;AAAA,YAC3D,CAAC;AAAA,UACH,CAAC;AAAA,UACD,wBAAwB,yBAAyB,eAAe,IAAI,YAAY,QAAQ,iBAAiB,SAAS,SAAS,aAAa,0BAA0B,QAAQ,0BAA0B,SAAS,wBAAwB,CAAC,GAAG,IAAI,SAAU,GAAG;AACxP,mBAAO,aAAa,IAAI,iBAAiB,QAAQ,GAAG,QAAQ;AAAA,UAC9D,CAAC;AAAA,QACH;AAAA,MACF;AACA,cAAQ,KAAK,OAAO,GAAG;AAAA,QACrB,KAAK;AAAA,QACL,KAAK;AACH,cAAI,QAAQ,KAAK,MAAM;AACvB,cAAI,MAAM,YAAY,MAAM,MAAM;AAChC,gBAAI,uBAAuB;AAC3B,iBAAK,eAAe,yBAAyB,qBAAqB,MAAM,YAAY,OAAO,QAAQ,uBAAuB,SAAS,SAAS,mBAAmB,YAAY,OAAO,QAAQ,0BAA0B,SAAS,wBAAwB;AAAA,UACvP;AAAA,MACJ;AACA,UAAI,IAAI,qBAAqB;AAC3B,aAAK,sBAAsB,IAAI,oBAAoB,IAAI,SAAU,GAAG;AAClE,iBAAO,aAAa,IAAI,gBAAgB,QAAQ,GAAG,QAAQ;AAAA,QAC7D,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AACA,aAAS,qBAAqB,GAAG;AAC/B,aAAO,cAAc;AAAA,QACnB,QAAQ,EAAE;AAAA,QACV,QAAQ,EAAE;AAAA,MACZ,GAAG,qBAAqB,CAAC,CAAC;AAAA,IAC5B;AACA,aAAS,eAAe,KAAK;AAC3B,UAAI;AACJ,aAAO;AAAA,QACL,cAAc,IAAI;AAAA,QAClB,cAAc,IAAI;AAAA,QAClB,uBAAuB,IAAI;AAAA,QAC3B,uBAAuB,IAAI;AAAA,QAC3B,QAAQ,IAAI;AAAA,QACZ,UAAU,eAAe,IAAI,YAAY,QAAQ,iBAAiB,SAAS,eAAe,CAAC,GAAG,IAAI,SAAU,KAAK;AAC/G,cAAI,QAAQ,cAAc,CAAC,GAAG,GAAG;AACjC,iBAAO,MAAM;AACb,iBAAO,cAAc,cAAc,cAAc,CAAC,GAAG,KAAK,GAAG,IAAI,eAAe,MAAM;AAAA,YACpF,YAAY,IAAI,aAAa,SAAS,IAAI,UAAU;AAAA,UACtD,CAAC,GAAG,CAAC,GAAG;AAAA,YACN,OAAO,IAAI,MAAM,IAAI,SAAU,OAAO;AACpC,qBAAO,aAAa,IAAI,MAAM,QAAQ,OAAO,QAAQ;AAAA,YACvD,CAAC;AAAA,YACD,OAAO,aAAa,IAAI,MAAM,QAAQ,IAAI,OAAO,QAAQ;AAAA,UAC3D,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AACA,aAAS,sBAAsB,KAAK;AAClC,UAAI;AACJ,aAAO;AAAA,QACL,cAAc,IAAI;AAAA,QAClB,WAAW,eAAe,IAAI,aAAa,QAAQ,iBAAiB,SAAS,eAAe,CAAC,GAAG,IAAI,SAAU,UAAU;AACtH,cAAI,CAAC,SAAS,OAAO,CAAC,SAAS,KAAK;AAClC,kBAAM,IAAI,UAAU,yBAAyB,OAAO,KAAK,UAAU,QAAQ,CAAC,CAAC;AAAA,UAC/E;AACA,iBAAO,cAAc;AAAA,YACnB,uBAAuB,SAAS;AAAA,YAChC,KAAK,aAAa,IAAI,UAAU,QAAQ,SAAS,KAAK,QAAQ;AAAA,YAC9D,KAAK,aAAa,IAAI,gBAAgB,QAAQ,SAAS,KAAK,QAAQ;AAAA,UACtE,GAAG,SAAS,uBAAuB,UAAa;AAAA,YAC9C,oBAAoB,SAAS;AAAA,UAC/B,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AACA,aAAS,gBAAgB,KAAK,SAAS;AACrC,UAAI,qBAAqB,cAAc,uBAAuB,mBAAmB;AACjF,UAAI,UAAU,cAAc,cAAc,cAAc,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG;AAAA,QACxE,iBAAiB,IAAI,aAAa,mBAAmB,IAAI,eAAe;AAAA,QACxE,gBAAgB,IAAI;AAAA,MACtB,KAAK,uBAAuB,eAAe,IAAI,aAAa,QAAQ,iBAAiB,SAAS,SAAS,aAAa,YAAY,QAAQ,wBAAwB,SAAS,sBAAsB,IAAI,MAAM;AAAA,QACvM,QAAQ,IAAI,QAAQ,IAAI,SAAU,KAAK;AACrC,cAAI;AACJ,iBAAO;AAAA,YACL,QAAQ,YAAY,IAAI,UAAU,QAAQ,cAAc,SAAS,YAAY,CAAC,GAAG,IAAI,SAAU,OAAO;AACpG,qBAAO,aAAa,IAAI,0BAA0B,QAAQ,OAAO,QAAQ;AAAA,YAC3E,CAAC;AAAA,YACD,QAAQ,IAAI,MAAM,aAAa,IAAI,MAAM,QAAQ,IAAI,KAAK,QAAQ,IAAI,aAAa,IAAI,MAAM,QAAQ;AAAA,UACvG;AAAA,QACF,CAAC,EAAE,CAAC;AAAA,MACN,CAAC,KAAK,yBAAyB,oBAAoB,IAAI,kBAAkB,QAAQ,sBAAsB,SAAS,SAAS,kBAAkB,YAAY,QAAQ,0BAA0B,SAAS,wBAAwB,IAAI,MAAM;AAAA,QAClO,eAAe,qBAAqB,IAAI,kBAAkB,QAAQ,uBAAuB,SAAS,SAAS,mBAAmB,IAAI,SAAU,aAAa;AACvJ,iBAAO;AAAA,YACL,MAAM,YAAY;AAAA,YAClB,KAAK,aAAa,IAAI,UAAU,QAAQ,YAAY,KAAK,QAAQ;AAAA,YACjE,QAAQ,YAAY,SAAS,aAAa,IAAI,YAAY,QAAQ,YAAY,QAAQ,QAAQ,IAAI;AAAA,YAClG,OAAO,YAAY,QAAQ,aAAa,IAAI,YAAY,QAAQ,YAAY,OAAO,QAAQ,IAAI;AAAA,UACjG;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,UAAI,CAAC,IAAI,mBAAmB,IAAI,gBAAgB,oBAAoB,IAAI;AACtE,eAAO;AAAA,MACT;AACA,aAAO,cAAc,cAAc,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG;AAAA,QACnD,iBAAiB;AAAA,UACf,gBAAgB,IAAI,gBAAgB;AAAA,UACpC,iBAAiB,IAAI,aAAa,mBAAmB,IAAI,gBAAgB,eAAe;AAAA,QAC1F;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,mBAAmB,KAAK;AAC/B,UAAI,iBAAiB;AACrB,UAAI,WAAW,KAAK,IAAI,gBAAgB,GAAG;AAC3C,UAAI,CAAC,UAAU;AACb,eAAO;AAAA,MACT;AACA,UAAI,OAAO;AAAA,QACT,SAAS;AAAA,QACT,IAAI,IAAI;AAAA,QACR,cAAc,IAAI;AAAA,QAClB,SAAS,mBAAmB,cAAc,IAAI,YAAY,QAAQ,gBAAgB,SAAS,SAAS,YAAY,IAAI,SAAU,KAAK;AACjI,iBAAO,aAAa,IAAI,gBAAgB,QAAQ,KAAK,QAAQ;AAAA,QAC/D,CAAC,OAAO,QAAQ,oBAAoB,SAAS,kBAAkB,CAAC;AAAA,MAClE;AACA,UAAI,OAAO,IAAI,UAAU,UAAU;AACjC,eAAO,cAAc,cAAc,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG;AAAA,UAChD,OAAO,IAAI;AAAA,QACb,CAAC;AAAA,MACH;AACA,aAAO,gBAAgB,KAAK,IAAI;AAAA,IAClC;AAAA;AAAA;;;AC9KA,IAAAC,uBAAA;AAAA,6DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsB;AAC9B,QAAI,eAAe;AACnB,QAAI,OAAO;AACX,QAAI,WAAW;AACf,aAAS,qBAAqB,IAAI;AAChC,UAAI,GAAG,WAAW,WAAW,GAAG;AAC9B,eAAO;AAAA,MACT;AACA,cAAQ,GAAG,WAAW,CAAC,EAAE,MAAM;AAAA,QAC7B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AACA,aAAS,oBAAoB,KAAK,YAAY;AAC5C,UAAI,sBAAsB,KAAK;AAC7B,eAAO,oBAAoB,IAAI,kBAAkB,UAAU;AAAA,MAC7D;AACA,UAAI,CAAC,qBAAqB,GAAG,GAAG;AAC9B,cAAM,IAAI,UAAU,yHAAmI;AAAA,MACzJ;AACA,UAAI,WAAW,GAAG,SAAS,oBAAoB,UAAU;AACzD,UAAI,CAAC,KAAK,IAAI,oBAAoB,OAAO,GAAG;AAC1C,cAAM,IAAI,MAAM,yBAAyB,OAAO,KAAK,UAAU,OAAO,CAAC,CAAC;AAAA,MAC1E;AACA,UAAI,gBAAgB,SAAS,IAAI,GAAG,KAAK;AACzC,UAAI,oBAAoB,SAAS,QAAQ,cAAc,KAAK;AAC5D,UAAI,aAAa,aAAa,mBAAmB,UAAU,KAAK;AAAA,QAC9D,MAAM,gBAAgB,mBAAmB,SAAS;AAAA,QAClD,aAAa,QAAQ,gBAAgB,MAAM;AAAA,QAC3C,mBAAmB,IAAI;AAAA,MACzB,CAAC;AACD,UAAI,IAAI,WAAW,CAAC,EAAE,SAAS,sBAAsB;AACnD,YAAI;AACJ,mBAAW,gBAAgB;AAC3B,YAAI,WAAW,IAAI,WAAW,CAAC;AAC/B,YAAI,gBAAgB,iBAAiB,SAAS,UAAU,QAAQ,mBAAmB,SAAS,iBAAiB,CAAC;AAC9G,mBAAW,aAAa,aAAa,UAAU,mBAAmB;AAAA,UAChE,QAAQ,SAAS;AAAA,UACjB,MAAM,SAAS;AAAA,UACf,MAAM,aAAa,SAAS,IAAI,eAAe,QAAQ,OAAO;AAAA,QAChE,CAAC,CAAC;AAAA,MACJ;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACpDA,IAAAC,kBAAA;AAAA,wDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,6BAA6BA,SAAQ,YAAYA,SAAQ,sBAAsBA,SAAQ,aAAaA,SAAQ,qBAAqB;AACzI,QAAI,SAAS,uBAAuB,aAAgB;AACpD,QAAI,eAAe;AACnB,QAAI,SAAS,uBAAuB,gBAAkB;AACtD,QAAI,UAAU,wBAAwB,iBAAoB;AAC1D,QAAI,OAAO;AACX,QAAI,eAAe;AACnB,QAAI,WAAW;AACf,QAAI,SAAS;AACb,aAAS,wBAAwB,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,QAAS,KAAI,IAAI,oBAAI,QAAQ,GAAG,IAAI,oBAAI,QAAQ;AAAG,cAAQ,0BAA0B,SAASC,yBAAwBC,IAAGC,IAAG;AAAE,YAAI,CAACA,MAAKD,MAAKA,GAAE,WAAY,QAAOA;AAAG,YAAI,GAAG,GAAG,IAAI,EAAE,WAAW,MAAM,SAASA,GAAE;AAAG,YAAI,SAASA,MAAK,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,GAAG,QAAO;AAAG,YAAI,IAAIC,KAAI,IAAI,GAAG;AAAE,cAAI,EAAE,IAAID,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,CAAC;AAAA,QAAG;AAAE,iBAAS,OAAOA,GAAG,eAAc,OAAO,CAAC,EAAE,eAAe,KAAKA,IAAG,GAAG,OAAO,KAAK,IAAI,OAAO,mBAAmB,OAAO,yBAAyBA,IAAG,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,IAAIA,GAAE,GAAG;AAAI,eAAO;AAAA,MAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AAC1oB,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUE,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEA,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAER,IAAGE,IAAG;AAAE,mBAAOE,KAAIJ,IAAGK,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGQ,IAAG,GAAG;AAAE,gBAAIF,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAME,MAAK,EAAEA,IAAG,CAAC,GAAGJ,KAAII,IAAGH,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASH,IAAG;AAAE,gBAAAI,KAAI,GAAGC,KAAI,GAAGC,KAAIN;AAAA,cAAG,UAAE;AAAU,gBAAAO,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEP,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASW,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASX,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGG,IAAGC,IAAGH,IAAG;AAAE,iBAAS,EAAEE,IAAGC,IAAG;AAAE,8BAAoBJ,IAAGG,IAAG,SAAUH,IAAG;AAAE,mBAAO,KAAK,QAAQG,IAAGC,IAAGJ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAG,KAAI,IAAI,EAAEH,IAAGG,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACH,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAID,GAAEG,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,6BAA6BN,SAAQ,6BAA6B,KAAK;AAC3E,QAAI,aAAaA,SAAQ,aAAa,SAAUc,aAAY;AAC1D,MAAAA,YAAW,WAAW,IAAI;AAC1B,MAAAA,YAAW,YAAY,IAAI;AAC3B,aAAOA;AAAA,IACT,EAAE,CAAC,CAAC;AACJ,QAAI,kCAAkC;AACtC,QAAI,qBAAqBd,SAAQ,qBAAqB,SAASe,oBAAmB,OAAO;AACvF,aAAO;AAAA,IACT;AACA,QAAI,sBAAsBf,SAAQ,sBAAsB,SAASgB,qBAAoB,MAAM;AACzF,aAAO,MAAO;AAAA,IAChB;AACA,aAAS,4CAA4C,MAAM;AACzD,UAAI;AACJ,UAAI,aAAa,CAAC;AAClB,cAAQ,KAAK,OAAO,GAAG;AAAA,QACrB,KAAK;AACH,uBAAa,KAAK,WAAW;AAC7B;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,uBAAa,KAAK,MAAM,EAAE,WAAW;AACrC;AAAA,QACF;AACE,gBAAM,IAAI,MAAM,0CAA0C;AAAA,MAC9D;AACA,UAAI,kBAAkB,wBAAwB,WAAW,QAAQ,SAAU,IAAI;AAC7E,eAAO,GAAG,QAAQ;AAAA,MACpB,CAAC,EAAE,KAAK,SAAU,GAAG;AACnB,eAAO,EAAE,OAAO,MAAM,aAAa,IAAI,sBAAsB,mBAAmB,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,MAAM,aAAa,IAAI,gBAAgB,QAAQ;AAAA,MAChK,CAAC,OAAO,QAAQ,0BAA0B,WAAW,wBAAwB,sBAAsB,QAAQ,OAAO,QAAQ,0BAA0B,WAAW,wBAAwB,sBAAsB,KAAK,OAAO,QAAQ,0BAA0B,WAAW,wBAAwB,sBAAsB,QAAQ,OAAO,QAAQ,0BAA0B,WAAW,wBAAwB,sBAAsB,OAAO,OAAO,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,SAAS;AAC/f,UAAI,gBAAgB;AAClB,eAAO;AAAA,MACT;AACA,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACrD;AACA,QAAI,YAAYhB,SAAQ,YAAY,WAAY;AAC9C,eAASiB,WAAU,WAAW;AAC5B,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAChF,wBAAgB,MAAMA,UAAS;AAC/B,aAAK,aAAa,GAAG,OAAO,SAAS,SAAS;AAC9C,YAAI,KAAK,WAAW,OAAO,KAAK,KAAK,OAAO,EAAE,WAAW,GAAG;AAC1D,iBAAO,QAAQ,aAAa,QAAQ,IAAI,SAAUC,SAAQ;AACxD,YAAAA,QAAO,UAAU,OAAO,OAAOA,QAAO,SAAS,KAAK,OAAO;AAC3D,mBAAOA;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,KAAK,UAAU,SAAS,MAAM,WAAW,CAAC,KAAK,WAAW;AAC5D,gBAAM,IAAI,MAAM,wEAAwE;AAAA,QAC1F;AAAA,MACF;AACA,aAAO,aAAaD,YAAW,CAAC;AAAA,QAC9B,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,cAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,SAAS;AAC7E,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,2BAAS,IAAI;AACb,yBAAO,KAAK,gBAAgB,OAAO;AAAA,gBACrC,KAAK;AACH,0BAAQ,SAAS;AACjB,yBAAO,SAAS,EAAE,GAAG,IAAI,aAAa,QAAQ,SAAS,MAAM,OAAO,EAAE,SAAS,CAAC,CAAC;AAAA,cACrF;AAAA,YACF,GAAG,SAAS,IAAI;AAAA,UAClB,CAAC,CAAC;AACF,mBAAS,WAAW,IAAI;AACtB,mBAAO,YAAY,MAAM,MAAM,SAAS;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS;AACnF,gBAAI,WAAW,MAAM;AACrB,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,gBAC3C,KAAK;AACH,8BAAY,aAAa,IAAI,UAAU,QAAQ,IAAI,aAAa,IAAI,iBAAiB;AAAA,oBACnF,WAAW,aAAa,QAAQ,cAAc,OAAO,EAAE,aAAa;AAAA,kBACtE,CAAC,CAAC;AACF,4BAAU,IAAI;AACd,4BAAU,IAAI;AACd,yBAAO,KAAK,eAAe,SAAS;AAAA,gBACtC,KAAK;AACH,yBAAO,UAAU;AACjB,yBAAO,UAAU,EAAE,GAAG,KAAK,IAAI,QAAQ,CAAC;AAAA,gBAC1C,KAAK;AACH,4BAAU,IAAI;AACd,uBAAK,UAAU;AACf,wBAAM,IAAI,MAAM,sBAAsB,OAAO,OAAO,CAAC;AAAA,gBACvD,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,UAC7B,CAAC,CAAC;AACF,mBAAS,gBAAgB,KAAK;AAC5B,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,gBAAgB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS,OAAO;AACvF,gBAAI,oBAAoB,OAAO;AAC/B,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,gBAC3C,KAAK;AACH,uCAAqB,aAAa,IAAI,UAAU,UAAU,IAAI,aAAa,IAAI,mBAAmB;AAAA,oBAChG,WAAW,aAAa,QAAQ,cAAc,OAAO,EAAE,aAAa;AAAA,oBACpE,OAAO,MAAM,qBAAqB;AAAA,kBACpC,CAAC,CAAC;AACF,4BAAU,IAAI;AACd,4BAAU,IAAI;AACd,yBAAO,KAAK,eAAe,kBAAkB;AAAA,gBAC/C,KAAK;AACH,0BAAQ,UAAU;AAClB,yBAAO,UAAU,EAAE,GAAG,MAAM,IAAI,UAAU,CAAC;AAAA,gBAC7C,KAAK;AACH,4BAAU,IAAI;AACd,wBAAM,UAAU;AAChB,wBAAM,IAAI,MAAM,iBAAiB,OAAO,MAAM,QAAQ,GAAG,GAAG,EAAE,OAAO,MAAM,UAAU,GAAG,iBAAiB,EAAE,OAAO,OAAO,CAAC;AAAA,gBAC5H,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,UAC7B,CAAC,CAAC;AACF,mBAAS,aAAa,KAAK,KAAK;AAC9B,mBAAO,cAAc,MAAM,MAAM,SAAS;AAAA,UAC5C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,uBAAuB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,IAAI;AAClF,gBAAI,WAAW,QAAQ,GAAG,oBAAoB,OAAO;AACrD,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,gBAC3C,KAAK;AACH,sBAAI,CAAC,aAAa,OAAO,wBAAwB,EAAE,GAAG;AACpD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,2BAAS,aAAa,OAAO,uBAAuB,EAAE;AACtD,sBAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAc,GAAG,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC;AACtE,8BAAY,aAAa,IAAI,mBAAmB,QAAQ,OAAO,OAAO,CAAC,GAAG,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9F,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,sBAAI,CAAC,GAAG,MAAM,eAAe,GAAG;AAC9B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,aAAa,IAAI,mBAAmB,QAAQ,IAAI,KAAK;AACjE,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,sBAAI,CAAC,GAAG,MAAM,eAAe,GAAG;AAC9B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,aAAa,IAAI,mBAAmB,QAAQ,GAAG,SAAS,IAAI,GAAG,GAAG,KAAK;AACnF,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,wBAAM,IAAI,UAAU,0CAA0C,OAAO,EAAE,CAAC;AAAA,gBAC1E,KAAK;AACH,uCAAqB,aAAa,IAAI,UAAU,iBAAiB,IAAI,aAAa,IAAI,0BAA0B;AAAA,oBAC9G;AAAA,kBACF,CAAC,CAAC;AACF,4BAAU,IAAI;AACd,4BAAU,IAAI;AACd,yBAAO,KAAK,eAAe,kBAAkB;AAAA,gBAC/C,KAAK;AACH,0BAAQ,UAAU;AAClB,yBAAO,UAAU,EAAE,GAAG,MAAM,IAAI,iBAAiB,CAAC;AAAA,gBACpD,KAAK;AACH,4BAAU,IAAI;AACd,wBAAM,UAAU;AAChB,wBAAM,IAAI,MAAM,qBAAqB,OAAO,IAAI,YAAY,CAAC;AAAA,gBAC/D,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,UAC7B,CAAC,CAAC;AACF,mBAAS,oBAAoB,KAAK;AAChC,mBAAO,qBAAqB,MAAM,MAAM,SAAS;AAAA,UACnD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,aAAa,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACtE,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,WAAW,CAAC;AAAA,cACpF;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,YAAY;AACnB,mBAAO,WAAW,MAAM,MAAM,SAAS;AAAA,UACzC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,UAAU,KAAK;AACzF,gBAAI,YACF,WACA,eACA,aACA,SAAS,WACT,KACA;AACF,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,gBAC3C,KAAK;AACH,+BAAa,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,WAAW;AACnF,sBAAI,EAAE,OAAO,aAAa,WAAW;AACnC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,IAAI,aAAa,SAAS,QAAQ,EAAE,QAAQ,EAAE,YAAY;AACtE,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,sBAAI,EAAE,oBAAoB,aAAa,UAAU;AAC/C,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,SAAS,YAAY;AACjC,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,sBAAI,EAAE,oBAAoB,aAAa,WAAW;AAChD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,8BAAY,SAAS,QAAQ,EAAE,YAAY;AAC3C,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,wBAAM,IAAI,UAAU,0BAA0B,OAAO,QAAQ,CAAC;AAAA,gBAChE,KAAK;AACH,wBAAM;AACN,4BAAU,IAAI,QAAQ,WAAW,YAAY,IAAI,QAAQ,WAAW,aAAa,IAAI;AACrF;AAAA,gBACF,KAAK;AACH,kCAAgB,aAAa,IAAI,uBAAuB,UAAU;AAClE,yBAAO,UAAU,EAAE,GAAG,CAAC;AAAA,gBACzB,KAAK;AACH,kCAAgB,aAAa,IAAI,uBAAuB,WAAW;AACnE,yBAAO,UAAU,EAAE,GAAG,CAAC;AAAA,gBACzB,KAAK;AACH,wBAAM,IAAI,UAAU,uBAAuB,OAAO,UAAU,CAAC;AAAA,gBAC/D,KAAK;AACH,gCAAc,aAAa,IAAI,UAAU,aAAa,IAAI,aAAa,IAAI,sBAAsB;AAAA,oBAC/F;AAAA,oBACA,UAAU;AAAA,oBACV,YAAY;AAAA,kBACd,CAAC,CAAC;AACF,4BAAU,IAAI;AACd,4BAAU,IAAI;AACd,yBAAO,KAAK,eAAe,WAAW;AAAA,gBACxC,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,UAAU,CAAC;AAAA,gBACnC,KAAK;AACH,4BAAU,IAAI;AACd,wBAAM,UAAU;AAChB,wBAAM;AAAA,oBACJ,MAAM;AAAA,oBACN,SAAS,+BAA+B,OAAO,aAAa,QAAQ,cAAc,SAAS,EAAE,SAAS,GAAG,YAAY,EAAE,OAAO,IAAI,MAAM,QAAQ,GAAG,mBAAmB,EAAE,OAAO,UAAU;AAAA,kBAC3L;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,CAAC;AAAA,cACxB;AAAA,YACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAAA,UAC9B,CAAC,CAAC;AACF,mBAAS,gBAAgB,KAAK,KAAK;AACjC,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,+BAA+B,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,YAAY;AAClG,gBAAI;AACJ,gBAAI,mBAAmB,UAAU;AACjC,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,sCAAoB,IAAI,aAAa,SAAS,UAAU,EAAE,aAAa;AACvE,4BAAU,IAAI;AACd,yBAAO,KAAK,iBAAiB,iBAAiB;AAAA,gBAChD,KAAK;AACH,6BAAW,UAAU;AACrB,sBAAI,EAAE,CAAC,SAAS,QAAQ,UAAU,GAAG,qBAAqB,SAAS,QAAQ,CAAC,OAAO,QAAQ,uBAAuB,UAAU,mBAAmB,OAAO;AACpJ,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO;AAAA,oBACnC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACX,CAAC,CAAC;AAAA,gBACJ,KAAK;AACH,6BAAW,SAAS,QAAQ,CAAC,EAAE,IAAI,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;AACzF,yBAAO,UAAU,EAAE,GAAG,KAAK,sBAAsB,QAAQ,CAAC;AAAA,cAC9D;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,4BAA4B,KAAK;AACxC,mBAAO,6BAA6B,MAAM,MAAM,SAAS;AAAA,UAC3D;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,yBAAyB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,UAAU;AAC1F,gBAAI;AACJ,gBAAI,QACF,gBACA,mBACA,cACA,YACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,2BAAS,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI;AACpE,mCAAiB,OAAO,aAAa,WAAW,OAAO,KAAK,UAAU,MAAM,IAAI;AAChF,sCAAoB,aAAa,IAAI,UAAU,aAAa,IAAI,aAAa,IAAI,sBAAsB;AAAA,oBACrG,MAAM;AAAA,kBACR,CAAC,CAAC;AACF,4BAAU,IAAI;AACd,yBAAO,KAAK,iBAAiB,iBAAiB;AAAA,gBAChD,KAAK;AACH,iCAAe,UAAU;AACzB,sBAAI,EAAE,CAAC,aAAa,QAAQ,UAAU,GAAG,wBAAwB,aAAa,QAAQ,CAAC,OAAO,QAAQ,0BAA0B,UAAU,sBAAsB,OAAO;AACrK,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,QAAQ,OAAO;AAAA,oBACnC,MAAM;AAAA,oBACN,SAAS;AAAA,kBACX,CAAC,CAAC;AAAA,gBACJ,KAAK;AACH,+BAAa,aAAa,QAAQ,CAAC,EAAE,IAAI,aAAa,EAAE,KAAK;AAC7D,yBAAO,UAAU,EAAE,GAAG,UAAU;AAAA,cACpC;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,sBAAsB,KAAK;AAClC,mBAAO,uBAAuB,MAAM,MAAM,SAAS;AAAA,UACrD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,mBAAmB;AACjC,iBAAO,KAAK,kBAAkB,MAAM,MAAM,SAAS,EAAE,KAAK,SAAS,qBAAqB;AAAA,QAC1F;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,oBAAoB;AAClC,mBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,iBAAK,IAAI,IAAI,UAAU,IAAI;AAAA,UAC7B;AACA,iBAAO,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,oBAAoB;AAAA,YACvE,MAAM,KAAK,IAAI,SAAU,GAAG;AAC1B,qBAAO,EAAE,MAAM,QAAQ;AAAA,YACzB,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,kBAAkB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,KAAK;AAC9E,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,KAAK,kBAAkB,GAAG,EAAE,KAAK,SAAS,qBAAqB;AAAA,gBACxE,KAAK;AACH,4BAAU,UAAU;AACpB,sBAAI,EAAE,QAAQ,QAAQ,WAAW,IAAI;AACnC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,mCAAmC,OAAO,IAAI,MAAM,QAAQ,CAAC,CAAC;AAAA,gBAChF,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAAA,cAC5C;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,eAAe,KAAK;AAC3B,mBAAO,gBAAgB,MAAM,MAAM,SAAS;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,MAAM,MAAM;AACtF,gBAAI,gBAAgB;AACpB,gBAAI,aAAa,WAAW,SAAS;AACrC,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,kCAAgB,iBAAiB,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,cAAc,QAAQ,mBAAmB,SAAS,iBAAiB,KAAK,IAAI,mCAAmC,kBAAkB,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,cAAc,QAAQ,oBAAoB,SAAS,kBAAkB;AACzU,4BAAU;AAAA,gBACZ,KAAK;AACH,sBAAI,EAAE,UAAU,cAAc;AAC5B,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,4BAAU,IAAI;AACd,yBAAO,KAAK,eAAe,IAAI;AAAA,gBACjC,KAAK;AACH,8BAAY,UAAU;AACtB,sBAAI,EAAE,UAAU,WAAW,KAAK,IAAI,qBAAqB,YAAY;AACnE,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,yBAAO,UAAU,EAAE,GAAG,SAAS;AAAA,gBACjC,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,OAAO,MAAM,QAAQ,sBAAsB,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,mBAAmB,QAAQ,wBAAwB,SAAS,sBAAsB,oBAAoB,OAAO,CAAC;AAAA,gBACnN,KAAK;AACH;AACA,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,SAAS;AAAA,cACnC;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,gBAAgB,KAAK,MAAM;AAClC,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,MAAM;AAChF,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,KAAK,gBAAgB,IAAI,EAAE,KAAK,SAAU,KAAK;AACnE,wBAAI,YAAY,CAAC;AACjB,wBAAI,IAAI,WAAW,KAAK,IAAI,qBAAqB,WAAW;AAC1D,6BAAO,OAAO,YAAY,GAAG,SAAS,sBAAsB,GAAG,CAAC;AAAA,oBAClE;AACA,wBAAI,SAAS,cAAc;AAAA,sBACzB,QAAQ,IAAI;AAAA,sBACZ,QAAQ;AAAA,sBACR,cAAc,IAAI;AAAA,sBAClB,uBAAuB,IAAI;AAAA,sBAC3B,cAAc,IAAI;AAAA,sBAClB,uBAAuB,IAAI;AAAA,oBAC7B,GAAG,SAAS;AACZ,2BAAO;AAAA,kBACT,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,eAAe,MAAM;AAC5B,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,MAAM;AACjF,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,kBAAkB;AAAA,oBACrF;AAAA,kBACF,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,gBAAgB,MAAM;AAC7B,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS;AACrF,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,KAAK,iBAAiB,OAAO,EAAE,KAAK,SAAU,KAAK;AACxE,wBAAI,SAAS;AAAA,sBACX,eAAe,IAAI,gBAAgB,CAAC,GAAG,IAAI,SAAS,oBAAoB;AAAA,sBACxE,cAAc,IAAI;AAAA,sBAClB,4BAA4B,IAAI;AAAA,sBAChC,cAAc,IAAI;AAAA,sBAClB,4BAA4B,IAAI;AAAA,sBAChC,QAAQ,IAAI;AAAA,oBACd;AACA,2BAAO;AAAA,kBACT,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,gBAAgB,MAAM;AAC7B,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS;AACrF,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,mBAAmB,OAAO,CAAC;AAAA,cACpG;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,cAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS;AAC/E,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,KAAK,WAAW,OAAO,EAAE,KAAK,SAAS,cAAc,CAAC;AAAA,cACjF;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,UAAU,MAAM;AACvB,mBAAO,YAAY,MAAM,MAAM,SAAS;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,cAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS;AAC/E,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,aAAa,cAAc,cAAc;AAAA,oBAC5G,UAAU,mBAAmB,QAAQ,aAAa,QAAQ,qBAAqB,SAAS,mBAAmB,CAAC;AAAA,oBAC5G,YAAY,cAAc,cAAc,CAAC,GAAG,QAAQ,UAAU;AAAA,sBAC5D,QAAQ,QAAQ;AAAA,oBAClB,CAAC,GAAG,QAAQ,SAAS;AAAA,sBACnB,OAAO,QAAQ;AAAA,oBACjB,CAAC;AAAA,kBACH,GAAG,QAAQ,eAAe;AAAA,oBACxB,aAAa,QAAQ;AAAA,kBACvB,CAAC,GAAG,QAAQ,aAAa;AAAA,oBACvB,WAAW,QAAQ;AAAA,kBACrB,CAAC,CAAC,CAAC;AAAA,cACP;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,WAAW,MAAM;AACxB,mBAAO,YAAY,MAAM,MAAM,SAAS;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,cAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,YAAY;AACxE,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,YAAY,CAAC;AAAA,cACtF;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,aAAa;AACpB,mBAAO,YAAY,MAAM,MAAM,SAAS;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,YAAY;AAC7E,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,iBAAiB,CAAC;AAAA,cAC3F;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,kBAAkB;AACzB,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,wBAAwB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,IAAI,eAAe,UAAU;AAC7G,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,KAAK,qBAAqB,IAAI,eAAe,QAAQ,EAAE,KAAK,SAAS,kBAAkB,CAAC;AAAA,cACnH;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,oBAAoB,MAAM,MAAM,MAAM;AAC7C,mBAAO,sBAAsB,MAAM,MAAM,SAAS;AAAA,UACpD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,wBAAwB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,aAAa,eAAe,UAAU;AACtH,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,uBAAuB,cAAc;AAAA,oBACxG,aAAa,YAAY,MAAM;AAAA,oBAC/B;AAAA,kBACF,GAAG,kBAAkB,UAAa;AAAA,oBAChC,gBAAgB;AAAA,sBACd,mBAAmB,cAAc;AAAA,oBACnC;AAAA,kBACF,CAAC,CAAC,CAAC;AAAA,cACP;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,qBAAqB,MAAM,MAAM,MAAM;AAC9C,mBAAO,sBAAsB,MAAM,MAAM,SAAS;AAAA,UACpD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,sBAAsB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,IAAI;AAClF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,6BAAW,IAAI;AACf,yBAAO,KAAK,oBAAoB,EAAE;AAAA,gBACpC,KAAK;AACH,gCAAc,WAAW;AACzB,sBAAI,CAAC,KAAK,IAAI,kBAAkB,WAAW,GAAG;AAC5C,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,YAAY,KAAK;AAAA,gBACnC,KAAK;AACH,yBAAO,WAAW,EAAE,IAAI,GAAG,aAAa,qBAAqB,IAAI,WAAW,EAAE,MAAM,CAAC;AAAA,cACzF;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,mBAAmB,MAAM;AAChC,mBAAO,oBAAoB,MAAM,MAAM,SAAS;AAAA,UAClD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,aAAa;AACzF,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,KAAK,iBAAiB,WAAW,EAAE,KAAK,SAAS,uBAAuB,CAAC;AAAA,cACpG;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,gBAAgB,MAAM;AAC7B,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,aAAa;AACzF,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,mBAAmB;AAAA,oBACtF,aAAa,YAAY,MAAM;AAAA,kBACjC,CAAC,CAAC;AAAA,cACN;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,kBAAkB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS,cAAc;AACjG,gBAAI,SAAS,UAAU,MAAM,QAAQ,UAAU,iBAAiB,uBAAuB,KAAK;AAC5F,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,IAAI,WAAW,GAAG;AAAA,gBAC7C,KAAK;AACH,4BAAU,OAAO,YAAY,WAAW,UAAU,QAAQ,UAAU;AACpE,wBAAM;AACN,sBAAI,KAAK;AACP,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,6BAAW,IAAI;AACf,yBAAO,KAAK,WAAW;AAAA,gBACzB,KAAK;AACH,wBAAM,WAAW,EAAE;AAAA,gBACrB,KAAK;AACH,iCAAe;AACf,sBAAI,cAAc;AAChB,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,iDAAiD;AAAA,gBACnE,KAAK;AACH,6BAAW,IAAI;AACf,6BAAW,IAAI;AACf,yBAAO,OAAO,QAAQ,KAAK,GAAG,OAAO,cAAc,QAAQ,EAAE,OAAO,mBAAmB,OAAO,CAAC,CAAC;AAAA,gBAClG,KAAK;AACH,6BAAW,WAAW;AACtB,sBAAI,SAAS,KAAK,iBAAiB;AACjC,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,6BAAW,IAAI;AACf,yBAAO,KAAK,eAAe,SAAS,KAAK,IAAI;AAAA,gBAC/C,KAAK;AACH,2BAAS,WAAW;AACpB,sBAAI,EAAE,OAAO,WAAW,KAAK,IAAI,qBAAqB,UAAU;AAC9D,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,mBAAmB,OAAO,SAAS,SAAS,CAAC;AAAA,gBAC/D,KAAK;AACH,yBAAO,OAAO;AACd,6BAAW,IAAI;AACf;AAAA,gBACF,KAAK;AACH,yBAAO,aAAa,IAAI,gBAAgB,QAAQ,SAAS,KAAK,iBAAiB,QAAQ;AAAA,gBACzF,KAAK;AACH,6BAAW,4CAA4C,IAAI;AAC3D,yBAAO,WAAW,EAAE,GAAG,IAAI,aAAa,QAAQ,SAAS,QAAQ,CAAC;AAAA,gBACpE,KAAK;AACH,6BAAW,IAAI;AACf,wBAAM,WAAW;AACjB,sBAAI,IAAI,kBAAkB,IAAI,cAAc,QAAQ,oBAAoB,SAAS,SAAS,gBAAgB,YAAY,MAAM;AAC1H,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,sBAAI,GAAG,wBAAwB,IAAI,SAAS,YAAY,QAAQ,0BAA0B,UAAU,sBAAsB,SAAS,2BAA2B,IAAI;AAChK,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,yBAAO,WAAW,EAAE,GAAG,KAAK,WAAW,OAAO,CAAC;AAAA,gBACjD,KAAK;AACH,wBAAM;AAAA,gBACR,KAAK;AACH,yBAAO,WAAW,EAAE,CAAC;AAAA,cACzB;AAAA,YACF,GAAG,WAAW,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,UAC9B,CAAC,CAAC;AACF,mBAAS,eAAe,MAAM,MAAM;AAClC,mBAAO,gBAAgB,MAAM,MAAM,SAAS;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,eAAe,kBAAkB,aAAa,EAAE,EAAE,SAAS,YAAY;AACzE,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,aAAa,CAAC;AAAA,cACvF;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,cAAc;AACrB,mBAAO,aAAa,MAAM,MAAM,SAAS;AAAA,UAC3C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,kBAAkB,kBAAkB,aAAa,EAAE,EAAE,SAAS,YAAY;AAC5E,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,yBAAO,WAAW,EAAE,GAAG,QAAQ,WAAW,KAAK,UAAU,SAAS,GAAG,gBAAgB,CAAC;AAAA,cAC1F;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,iBAAiB;AACxB,mBAAO,gBAAgB,MAAM,MAAM,SAAS;AAAA,UAC9C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,iBAAiB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU,SAAS,KAAK,mBAAmB;AAC1G,gBAAI,eAAe,YAAY,OAAO,KAAK,WAAW,UAAU,qBAAqB,uBAAuB,oBAAoB,KAAK,OAAO;AAC5I,mBAAO,aAAa,EAAE,EAAE,SAAU,YAAY;AAC5C,qBAAO,EAAG,SAAQ,WAAW,GAAG;AAAA,gBAC9B,KAAK;AACH,kCAAgB,mBAAmB,aAAa,UAAU,QAAQ,SAAS,IAAI;AAC/E,sBAAI,aAAa,OAAO,gBAAgB,aAAa,GAAG;AACtD,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,wBAAM,IAAI,UAAU,6BAA6B,OAAO,aAAa,CAAC;AAAA,gBACxE,KAAK;AACH,sBAAI,EAAE,sBAAsB,QAAQ,sBAAsB,SAAS;AACjE,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,wBAAM;AACN,6BAAW,IAAI;AACf;AAAA,gBACF,KAAK;AACH,6BAAW,IAAI;AACf,yBAAO,KAAK,WAAW,EAAE,KAAK,SAAU,GAAG;AACzC,2BAAO,EAAE;AAAA,kBACX,CAAC;AAAA,gBACH,KAAK;AACH,wBAAM,WAAW;AAAA,gBACnB,KAAK;AACH,+BAAa;AACb,0BAAQ,IAAI,WAAW,UAAU;AACjC,yBAAO,GAAG,aAAa,eAAe,CAAC,WAAW,aAAa,GAAG;AAAA,oBAChE,MAAM,CAAC,UAAU,SAAS;AAAA,kBAC5B,CAAC;AACD,8BAAY,aAAa,IAAI,UAAU,aAAa,IAAI,aAAa,IAAI,sBAAsB;AAAA,oBAC7F,UAAU,IAAI,aAAa,QAAQ,KAAK,EAAE,YAAY;AAAA,oBACtD,YAAY,aAAa,IAAI,uBAAuB,WAAW;AAAA,oBAC/D;AAAA,kBACF,CAAC,CAAC;AACF,6BAAW,IAAI;AACf,yBAAO,KAAK,iBAAiB,SAAS;AAAA,gBACxC,KAAK;AACH,6BAAW,WAAW;AACtB,sBAAI,EAAE,SAAS,QAAQ,WAAW,IAAI;AACpC,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,yBAAO,WAAW,EAAE,GAAG;AAAA,oBACrB,cAAc,SAAS;AAAA,kBACzB,CAAC;AAAA,gBACH,KAAK;AACH,wCAAsB,SAAS,QAAQ,CAAC,GAAG,wBAAwB,oBAAoB,uBAAuB,qBAAqB,oBAAoB,oBAAoB,MAAM,oBAAoB;AACrM,sBAAI,EAAE,IAAI,OAAO,EAAE,UAAU,aAAa,IAAI,gBAAgB,aAAa,EAAE,QAAQ;AACnF,+BAAW,IAAI;AACf;AAAA,kBACF;AACA,yBAAO,WAAW,EAAE,GAAG;AAAA,oBACrB,cAAc,SAAS;AAAA,kBACzB,CAAC;AAAA,gBACH,KAAK;AACH,2BAAS,GAAG,aAAa,eAAe,IAAI,aAAa,EAAE,IAAI,CAAC;AAChE,yBAAO,WAAW,EAAE,GAAG;AAAA,oBACrB,cAAc,SAAS;AAAA,oBACvB,cAAc;AAAA,sBACZ;AAAA,sBACA;AAAA,sBACA,QAAQ,MAAM,OAAO,SAAS;AAAA,sBAC9B,YAAY,MAAM;AAAA,sBAClB,UAAU,MAAM;AAAA,oBAClB;AAAA,kBACF,CAAC;AAAA,cACL;AAAA,YACF,GAAG,WAAW,IAAI;AAAA,UACpB,CAAC,CAAC;AACF,mBAAS,cAAc,MAAM,MAAM,MAAM;AACvC,mBAAO,eAAe,MAAM,MAAM,SAAS;AAAA,UAC7C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;AC36BF,IAAAE,eAAA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAEA,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,eAAe;AAAA,MACjB,QAAQ;AAAA,MACR,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,MACrB,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,gBAAgB;AAAA,IAClB;AACA,WAAO,eAAeA,UAAS,eAAe;AAAA,MAC5C,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,OAAO;AAAA,MAChB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,sBAAsB;AAAA,MACnD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,uBAAuB;AAAA,MACpD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,UAAU;AAAA,MACvC,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,UAAU;AAClB,WAAO,eAAeA,UAAS,kBAAkB;AAAA,MAC/C,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AACD,WAAO,eAAeA,UAAS,sBAAsB;AAAA,MACnD,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AACD,QAAI,OAAO;AACX,WAAO,KAAK,IAAI,EAAE,QAAQ,SAAU,KAAK;AACvC,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,KAAK,GAAG,EAAG;AAClD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,KAAK,GAAG;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,UAAU;AACd,QAAI,SAAS,uBAAuB,gBAAkB;AACtD,QAAI,WAAW;AACf,QAAI,eAAe;AACnB,WAAO,KAAK,YAAY,EAAE,QAAQ,SAAU,KAAK;AAC/C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,aAAa,GAAG,EAAG;AAC1D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,aAAa,GAAG;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,aAAS,uBAAuB,GAAG;AAAE,aAAO,KAAK,EAAE,aAAa,IAAI,EAAE,SAAS,EAAE;AAAA,IAAG;AACpF,QAAI,WAAWA,SAAQ,UAAUC,QAAO;AAAA;AAAA;;;ACrFxC;AAAA,kEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,KAAKA,SAAQ,MAAM;AAC3B,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,KAAKD,SAAQ,KAAK,WAAY;AAChC,eAASE,IAAG,OAAO;AACjB,wBAAgB,MAAMA,GAAE;AACxB,aAAK,QAAQ;AAAA,MACf;AACA,aAAO,aAAaA,KAAI,CAAC;AAAA,QACvB,KAAK;AAAA,QACL,OAAO,SAAS,YAAY;AAC1B,gBAAM,IAAI,MAAM,UAAU;AAAA,QAC5B;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,OAAO;AACrB,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ;AACtB,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE;AACF,QAAI,MAAMF,SAAQ,MAAM,WAAY;AAClC,eAASG,KAAI,OAAO;AAClB,wBAAgB,MAAMA,IAAG;AACzB,aAAK,QAAQ;AAAA,MACf;AACA,aAAO,aAAaA,MAAK,CAAC;AAAA,QACxB,KAAK;AAAA,QACL,OAAO,SAAS,YAAY;AAC1B,iBAAO,KAAK;AAAA,QACd;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,gBAAM,IAAI,MAAM,KAAK,MAAM,OAAO;AAAA,QACpC;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,OAAO;AACrB,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ;AACtB,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;ACjEF,IAAAC,iBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,eAAeA,SAAQ,kBAAkB;AACjD,QAAI,eAAe;AACnB,QAAI,kBAAkBA,SAAQ,kBAAkB,IAAI;AACpD,QAAI,eAAeA,SAAQ,eAAe;AAAA;AAAA;;;ACR1C,IAAAC,kBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuB;AAC/B,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,qBAAqB;AAC7B,IAAAA,SAAQ,yBAAyB;AACjC,IAAAA,SAAQ,eAAe;AACvB,IAAAA,SAAQ,yBAAyB;AACjC,QAAI,eAAe;AACnB,QAAI,SAAS;AACb,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGC,IAAGC,IAAG;AAAE,YAAIC,KAAIH,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWI,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUL,IAAGC,IAAGC,IAAG;AAAE,cAAIC,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIJ,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASK,GAAEC,IAAGR,IAAG;AAAE,mBAAOG,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIL,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKG,KAAIJ,IAAGK,KAAIJ,IAAG,IAAI,GAAG,CAAC,KAAKK,MAAK,CAACJ,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGC,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAH,KAAI,KAAKE,KAAI,MAAMD,QAAOI,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOL,KAAIF,KAAI,KAAKO,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIH,IAAG,EAAE,IAAIE,GAAE,CAAC,KAAKI,KAAI,MAAML,KAAIF,KAAI,KAAKG,GAAE,CAAC,IAAIF,MAAKA,KAAI,OAAOE,GAAE,CAAC,IAAIH,IAAGG,GAAE,CAAC,IAAIF,IAAG,EAAE,IAAI,GAAGG,KAAI;AAAA,YAAK;AAAE,gBAAIF,MAAKF,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUC,IAAGO,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMF,KAAI,SAAS,IAAIC,GAAED,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKC,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCH,KAAI,UAAU,GAAGE,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIL,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASO,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEN,IAAGE,IAAGC,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGV,IAAGC,IAAGO,IAAG;AAAE,iBAAS,EAAER,IAAGC,IAAG;AAAE,8BAAoBS,IAAGV,IAAG,SAAUU,IAAG;AAAE,mBAAO,KAAK,QAAQV,IAAGC,IAAGS,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAV,KAAI,IAAI,EAAEU,IAAGV,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACO,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEV,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG;AAAE,aAAO,mBAAmB,CAAC,KAAK,iBAAiB,CAAC,KAAK,4BAA4B,CAAC,KAAK,mBAAmB;AAAA,IAAG;AAChJ,aAAS,qBAAqB;AAAE,YAAM,IAAI,UAAU,sIAAsI;AAAA,IAAG;AAC7L,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,iBAAiB,GAAG;AAAE,UAAI,eAAe,OAAO,UAAU,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,EAAE,YAAY,EAAG,QAAO,MAAM,KAAK,CAAC;AAAA,IAAG;AAChJ,aAAS,mBAAmB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO,kBAAkB,CAAC;AAAA,IAAG;AACpF,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASD,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,uBAAuB,IAAI,KAAK,KAAK;AAC5C,aAAO,wBAAwB,MAAM,MAAM,SAAS;AAAA,IACtD;AACA,aAAS,0BAA0B;AACjC,gCAA0B,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,IAAI,eAAe,kBAAkB;AACjH,YAAI,mBACF,SACA,UACA,OACA,WACA,UACA,eACA,QAAQ,WACR,IACA;AACF,eAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,iBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,YAC5B,KAAK;AACH,kCAAoB,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI;AAC5E,wBAAU,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI;AAClE,yBAAW,CAAC;AACZ,sBAAQ;AACR,mBAAK;AACL,uBAAS,IAAI;AACb,qBAAO,GAAG;AAAA,YACZ,KAAK;AACH,iBAAG,KAAK,KAAK,IAAI,SAAS,CAAC;AAC3B,kBAAI,cAAc,SAAS,SAAS,SAAS,CAAC,CAAC,GAAG;AAChD,yBAAS,IAAI;AACb;AAAA,cACF;AACA,qBAAO,SAAS,EAAE,GAAG,QAAQ;AAAA,YAC/B,KAAK;AACH,0BAAY,IAAI,KAAK,KAAK,IAAI,IAAI,mBAAmB,GAAI,EAAE,QAAQ;AACnE,yBAAW;AACX,8BAAgB;AAAA,YAClB,KAAK;AACH,kBAAI,EAAE,KAAK,IAAI,IAAI,aAAa,cAAc,SAAS,SAAS,SAAS,CAAC,CAAC,IAAI;AAC7E,yBAAS,IAAI;AACb;AAAA,cACF;AACA,uBAAS;AACT,kBAAI,SAAS;AACX,wBAAQ,KAAK,WAAW,OAAO,UAAU,0DAA0D,EAAE,OAAO,eAAe,sBAAsB,EAAE,OAAO,mBAAmB,KAAM,KAAK,CAAC;AAAA,cAC3L;AACA,uBAAS,IAAI;AACb,qBAAO,IAAI,QAAQ,SAAU,KAAK;AAChC,uBAAO,WAAW,KAAK,QAAQ;AAAA,cACjC,CAAC;AAAA,YACH,KAAK;AACH,0BAAY;AACZ,kBAAI,IAAI,KAAK,KAAK,IAAI,IAAI,QAAQ,EAAE,QAAQ,IAAI,WAAW;AACzD,2BAAW,YAAY,KAAK,IAAI;AAChC,oBAAI,SAAS;AACX,0BAAQ,KAAK,0CAA0C,OAAO,UAAU,IAAI,CAAC;AAAA,gBAC/E;AAAA,cACF;AACA,8BAAgB,WAAW;AAC3B,oBAAM;AACN,uBAAS,IAAI;AACb,qBAAO,GAAG,SAAS,SAAS,SAAS,CAAC,CAAC;AAAA,YACzC,KAAK;AACH,kBAAI,KAAK,KAAK,KAAK,SAAS,CAAC;AAC7B,kBAAI,WAAW,cAAc,SAAS,SAAS,SAAS,CAAC,CAAC,GAAG;AAC3D,wBAAQ,KAAK,GAAG,OAAO,OAAO,WAAW,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,SAAS,QAAQ,+BAA+B,EAAE,OAAO,KAAK,UAAU,SAAS,SAAS,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAAA,cACrL;AACA,uBAAS,IAAI;AACb;AAAA,YACF,KAAK;AACH,qBAAO,SAAS,EAAE,GAAG,QAAQ;AAAA,UACjC;AAAA,QACF,GAAG,OAAO;AAAA,MACZ,CAAC,CAAC;AACF,aAAO,wBAAwB,MAAM,MAAM,SAAS;AAAA,IACtD;AACA,QAAI,uBAAuBF,SAAQ,uBAAuB;AAC1D,aAAS,mBAAmB,KAAK;AAC/B,aAAO,QAAQ,GAAG,MAAM,YAAY,QAAQ,QAAQ,cAAc;AAAA,IACpE;AACA,aAAS,aAAa,KAAK;AACzB,aAAO,cAAc,MAAM,MAAM,SAAS;AAAA,IAC5C;AACA,aAAS,gBAAgB;AACvB,sBAAgB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,MAAM;AACzE,YAAI,aAAa,YAAY,YAAY;AACzC,eAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,iBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,YAC3C,KAAK;AACH,wBAAU,IAAI;AACd,wBAAU,IAAI;AACd,qBAAO,YAAY,QAAQ,IAAI;AAAA,YACjC,KAAK;AACH,2BAAa,UAAU;AACvB,4BAAc,YAAY,OAAO,eAAe,YAAY,gBAAgB;AAC5E,wBAAU,IAAI;AACd;AAAA,YACF,KAAK;AACH,wBAAU,IAAI;AACd,oBAAM,UAAU;AAChB,2BAAa,wBAAwB,IAAI;AACzC,4BAAc,WAAW,IAAI,gBAAgB;AAAA,YAC/C,KAAK;AACH,kBAAI,EAAE,CAAC,eAAe,YAAY,WAAW,IAAI;AAC/C,0BAAU,IAAI;AACd;AAAA,cACF;AACA,oBAAM,IAAI,MAAM,0CAA0C;AAAA,YAC5D,KAAK;AACH,qBAAO,UAAU,EAAE,GAAG,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC;AAAA,UACrD;AAAA,QACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,MAC7B,CAAC,CAAC;AACF,aAAO,cAAc,MAAM,MAAM,SAAS;AAAA,IAC5C;AACA,aAAS,wBAAwB,QAAQ;AACvC,UAAI,WAAW,oBAAI,IAAI;AACvB,UAAI,cAAc,OAAO,OAAO,MAAM,OAAO,YAAY,OAAO,aAAa,OAAO,UAAU;AAC9F,UAAI,SAAS;AACb,UAAI,OAAO,SAASa,MAAK,QAAQ;AAC/B,YAAI,SAAS,SAAS,OAAO,WAAY,OAAM,IAAI,MAAM,iBAAiB;AAC1E,YAAI,QAAQ,IAAI,WAAW,aAAa,QAAQ,MAAM;AACtD,kBAAU;AACV,eAAO;AAAA,MACT;AACA,UAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,eAAgB,OAAM,IAAI,MAAM,oBAAoB;AAC/F,UAAI,mBAAmB,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,UAAW,OAAM,IAAI,MAAM,sBAAsB;AAC5F,aAAO,SAAS,OAAO,YAAY;AACjC,YAAI,YAAY,KAAK,CAAC,EAAE,CAAC;AACzB,YAAI,gBAAgB,cAAc;AAClC,YAAI,QAAQ;AACZ,YAAI,cAAc,GAAG;AACnB,cAAI,UAAU,cAAc;AAC5B,cAAI,YAAY,KAAK,SAAS,UAAU,QAAQ,cAAe;AAC/D,cAAI,YAAY,KAAK,OAAO;AAC5B,cAAI,UAAU,KAAK,iBAAiB,SAAS,MAAM;AACnD,cAAI;AACF,gBAAI,OAAO,IAAI,YAAY,SAAS;AAAA,cAClC,OAAO;AAAA,YACT,CAAC,EAAE,OAAO,SAAS;AACnB,gBAAI,QAAQ,SAAS,GAAG;AACtB,uBAAS,IAAI,OAAO,SAAS,IAAI,IAAI,KAAK,CAAC,GAAG,OAAO,OAAO,CAAC;AAAA,YAC/D;AAAA,UACF,SAAS,SAAS;AAAA,UAAC;AAAA,QACrB,OAAO;AACL,oBAAU;AAAA,QACZ;AAAA,MACF;AACA,eAAS,gBAAgB;AACvB,YAAI,QAAQ,GACV,QAAQ;AACV,eAAO,MAAM;AACX,cAAI,OAAO,KAAK,CAAC,EAAE,CAAC;AACpB,oBAAU,OAAO,QAAS;AAC1B,eAAK,OAAO,SAAU,EAAG;AACzB,eAAK,SAAS,MAAM,GAAI,OAAM,IAAI,MAAM,oBAAoB;AAAA,QAC9D;AACA,eAAO,UAAU;AAAA,MACnB;AACA,aAAO;AAAA,IACT;AACA,aAAS,uBAAuB,QAAQ;AACtC,UAAI,SAAS,IAAI,aAAa,OAAO,UAAU,MAAM;AACrD,UAAI,MAAM,CAAC;AACX,aAAO,CAAC,OAAO,KAAK;AAClB,YAAI,KAAK,aAAa,IAAI,YAAY,KAAK,MAAM,CAAC;AAAA,MACpD;AACA,aAAO;AAAA,IACT;AACA,aAAS,WAAW,KAAK,KAAK;AAC5B,aAAO,YAAY,MAAM,MAAM,SAAS;AAAA,IAC1C;AACA,aAAS,cAAc;AACrB,oBAAc,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS,QAAQ;AAClF,eAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,iBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,YAC7B,KAAK;AACH,qBAAO,UAAU,EAAE,GAAG,QAAQ,YAAY,OAAO,WAAW,QAAQ,SAAS,IAAI,IAAI,aAAa,QAAQ,OAAO,cAAc,GAAG,CAAC;AAAA,UACvI;AAAA,QACF,GAAG,QAAQ;AAAA,MACb,CAAC,CAAC;AACF,aAAO,YAAY,MAAM,MAAM,SAAS;AAAA,IAC1C;AAAA;AAAA;;;AC7MA;AAAA,uEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,UAAUA,SAAQ,kBAAkB;AAC5C,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI;AACJ,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,iBAAiB,GAAG;AAAE,UAAI,IAAI,cAAc,OAAO,MAAM,oBAAI,IAAI,IAAI;AAAQ,aAAO,mBAAmB,SAASC,kBAAiBC,IAAG;AAAE,YAAI,SAASA,MAAK,CAAC,kBAAkBA,EAAC,EAAG,QAAOA;AAAG,YAAI,cAAc,OAAOA,GAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,YAAI,WAAW,GAAG;AAAE,cAAI,EAAE,IAAIA,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,OAAO;AAAA,QAAG;AAAE,iBAAS,UAAU;AAAE,iBAAO,WAAWA,IAAG,WAAW,gBAAgB,IAAI,EAAE,WAAW;AAAA,QAAG;AAAE,eAAO,QAAQ,YAAY,OAAO,OAAOA,GAAE,WAAW,EAAE,aAAa,EAAE,OAAO,SAAS,YAAY,OAAI,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,gBAAgB,SAASA,EAAC;AAAA,MAAG,GAAG,iBAAiB,CAAC;AAAA,IAAG;AAC7oB,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,UAAI,0BAA0B,EAAG,QAAO,QAAQ,UAAU,MAAM,MAAM,SAAS;AAAG,UAAI,IAAI,CAAC,IAAI;AAAG,QAAE,KAAK,MAAM,GAAG,CAAC;AAAG,UAAI,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,CAAC,GAAG;AAAG,aAAO,KAAK,gBAAgB,GAAG,EAAE,SAAS,GAAG;AAAA,IAAG;AACzO,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASA,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,kBAAkB,GAAG;AAAE,UAAI;AAAE,eAAO,OAAO,SAAS,SAAS,KAAK,CAAC,EAAE,QAAQ,eAAe;AAAA,MAAG,SAAS,GAAG;AAAE,eAAO,cAAc,OAAO;AAAA,MAAG;AAAA,IAAE;AACvJ,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUG,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAEV,IAAGI,IAAG;AAAE,mBAAOE,KAAIN,IAAGO,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGQ,IAAG,GAAG;AAAE,gBAAIF,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAME,MAAK,EAAEA,IAAG,CAAC,GAAGJ,KAAII,IAAGH,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASL,IAAG;AAAE,gBAAAM,KAAI,GAAGC,KAAI,GAAGC,KAAIR;AAAA,cAAG,UAAE;AAAU,gBAAAS,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEN,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASU,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASV,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGE,IAAGC,IAAGL,IAAG;AAAE,iBAAS,EAAEI,IAAGC,IAAG;AAAE,8BAAoBH,IAAGE,IAAG,SAAUF,IAAG;AAAE,mBAAO,KAAK,QAAQE,IAAGC,IAAGH,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAE,KAAI,IAAI,EAAEF,IAAGE,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACL,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEE,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,kBAAkBP,SAAQ,kBAAkB,WAAY;AAC1D,eAASe,iBAAgB,WAAW;AAClC,YAAI,QAAQ,MACV;AACF,wBAAgB,MAAMA,gBAAe;AACrC,wBAAgB,MAAM,QAAQ,WAAY;AACxC,cAAI,OAAO,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS;AACvE,gBAAI;AACJ,gBAAI,MAAM;AACV,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,MAAM,OAAO,gBAAgB,MAAM,UAAU,MAAM;AAAA,gBAC5D,KAAK;AACH,wBAAM,0BAA0B,UAAU;AAC1C,sBAAI,EAAE,MAAM,wBAAwB,WAAW,YAAY;AACzD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAIA,iBAAgB,OAAO,WAAW,mDAAmD,OAAO,KAAK,UAAU,MAAM,yBAAyB,MAAM,CAAC,CAAC,CAAC;AAAA,gBAC/J,KAAK;AACH,sBAAI,YAAY,QAAQ,YAAY,UAAU,QAAQ,YAAa,SAAQ,YAAY,MAAM,uBAAuB;AACpH,yBAAO,MAAM,wBAAwB;AACrC,sCAAoB,wBAAwB,MAAM,UAAU,QAAQ,sBAAsB,QAAQ,0BAA0B,SAAS,wBAAwB,OAAO;AACpK,4BAAU,IAAI;AACd,0BAAQ,GAAG,OAAO,wBAAwB,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU;AAC9F,wBAAI;AACJ,2BAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,6BAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,wBAC5B,KAAK;AACH,mCAAS,IAAI;AACb,iCAAO,MAAM,OAAO,eAAe,IAAI;AAAA,wBACzC,KAAK;AACH,+BAAK,SAAS;AACd,8BAAI,YAAY,QAAQ,YAAY,UAAU,QAAQ,WAAY,SAAQ,WAAW,EAAE;AACvF,iCAAO,SAAS,EAAE,GAAG,EAAE;AAAA,sBAC3B;AAAA,oBACF,GAAG,OAAO;AAAA,kBACZ,CAAC,CAAC,GAAG,SAAU,MAAM;AACnB,2BAAO,KAAK,WAAW,KAAK,IAAI,qBAAqB;AAAA,kBACvD,GAAG,gBAAgB;AAAA,gBACrB,KAAK;AACH,wBAAM,4BAA4B,UAAU;AAC5C,wBAAM,yBAAyB,MAAM,0BAA0B,MAAM,0BAA0B,SAAS,CAAC;AACzG,sBAAI,EAAE,MAAM,uBAAuB,WAAW,KAAK,IAAI,qBAAqB,YAAY;AACtF,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAIA,iBAAgB,OAAO,wBAAwB,UAAU,OAAO,kBAAkB,wDAAwD,IAAI,8DAA8D,qBAAqB,OAAO,KAAK,UAAU,MAAM,yBAAyB,MAAM,CAAC,GAAG,IAAI,IAAI,mCAAmC,OAAO,KAAK,UAAU,MAAM,2BAA2B,MAAM,CAAC,CAAC,CAAC;AAAA,gBACvZ,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,KAAK;AAAA,cAC/B;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,iBAAO,SAAU,IAAI;AACnB,mBAAO,KAAK,MAAM,MAAM,SAAS;AAAA,UACnC;AAAA,QACF,EAAE,CAAC;AACH,aAAK,YAAY;AACjB,aAAK,SAAS,IAAI,KAAK,OAAO,KAAK,UAAU,QAAQ,QAAQ;AAAA,UAC3D,YAAY,yBAAyB,KAAK,UAAU,QAAQ,eAAe,QAAQ,2BAA2B,SAAS,yBAAyB;AAAA,QAClJ,CAAC;AAAA,MACH;AACA,aAAO,aAAaA,kBAAiB,CAAC;AAAA,QACpC,KAAK;AAAA,QACL,KAAK,SAAS,MAAM;AAClB,cAAI,4BAA4B,QAAQ,KAAK,wBAAwB;AACnE,gBAAI,iBAAiB,KAAK,wBAAwB;AAChD,qBAAO,KAAK,UAAU,QAAQ,eAAe,KAAK,uBAAuB,WAAW;AAAA,YACtF;AACA,kBAAM,IAAI,MAAM,0CAA0C;AAAA,UAC5D;AACA,cAAI,KAAK,yBAAyB;AAChC,gBAAI;AACJ,gBAAI,eAAe,wBAAwB,KAAK,wBAAwB,iBAAiB,QAAQ,0BAA0B,SAAS,SAAS,sBAAsB,OAAO;AAC1K,gBAAI,aAAa;AACf,oBAAM,IAAIA,iBAAgB,OAAO,WAAW,gNAAgN,OAAO,WAAW,CAAC;AAAA,YACjR;AACA,kBAAM,IAAIA,iBAAgB,OAAO,eAAe,+JAA+J;AAAA,UACjN;AACA,gBAAM,IAAI,MAAM,+BAA+B,OAAO,KAAK,UAAU,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,QAC9F;AAAA,MACF,CAAC,CAAC;AAAA,IACJ,EAAE;AACF,uBAAmB;AACnB,oBAAgB,iBAAiB,UAAU;AAAA,MACzC,YAAY,SAAU,QAAQ;AAC5B,iBAAS,kBAAkB;AACzB,0BAAgB,MAAM,eAAe;AACrC,iBAAO,WAAW,MAAM,iBAAiB,SAAS;AAAA,QACpD;AACA,kBAAU,iBAAiB,MAAM;AACjC,eAAO,aAAa,eAAe;AAAA,MACrC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,gBAAgB,SAAU,SAAS;AACjC,iBAAS,sBAAsB;AAC7B,0BAAgB,MAAM,mBAAmB;AACzC,iBAAO,WAAW,MAAM,qBAAqB,SAAS;AAAA,QACxD;AACA,kBAAU,qBAAqB,OAAO;AACtC,eAAO,aAAa,mBAAmB;AAAA,MACzC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,yBAAyB,SAAU,SAAS;AAC1C,iBAAS,+BAA+B;AACtC,0BAAgB,MAAM,4BAA4B;AAClD,iBAAO,WAAW,MAAM,8BAA8B,SAAS;AAAA,QACjE;AACA,kBAAU,8BAA8B,OAAO;AAC/C,eAAO,aAAa,4BAA4B;AAAA,MAClD,EAAE,iBAAiB,KAAK,CAAC;AAAA,IAC3B,CAAC;AACD,oBAAgB,iBAAiB,QAAQ,WAAY;AACnD,UAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,WAAW,SAAS;AACnF,YAAI,IAAI;AACR,eAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,iBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,YAC7B,KAAK;AACH,mBAAK,IAAI,iBAAiB,SAAS;AACnC,wBAAU,IAAI;AACd,qBAAO,GAAG,KAAK,OAAO;AAAA,YACxB,KAAK;AACH,qBAAO,UAAU;AACjB,qBAAO,UAAU,EAAE,GAAG,IAAI;AAAA,UAC9B;AAAA,QACF,GAAG,QAAQ;AAAA,MACb,CAAC,CAAC;AACF,aAAO,SAAU,KAAK,KAAK;AACzB,eAAO,MAAM,MAAM,MAAM,SAAS;AAAA,MACpC;AAAA,IACF,EAAE,CAAC;AACH,QAAI,UAAUf,SAAQ,UAAU,aAAa,SAASgB,WAAU;AAC9D,sBAAgB,MAAMA,QAAO;AAAA,IAC/B,CAAC;AAAA;AAAA;;;ACrKD;AAAA,4EAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuB;AAC/B,QAAI,eAAe;AACnB,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,eAAe;AACnB,QAAI,eAAe;AACnB,QAAI,SAAS;AACb,QAAI,SAAS;AACb,QAAI,oBAAoB;AACxB,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,aAAO,IAAI,gBAAgB,CAAC,GAAG,2BAA2B,GAAG,0BAA0B,IAAI,QAAQ,UAAU,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,EAAE,WAAW,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAAG;AAC1M,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,MAAM,YAAY,QAAQ,CAAC,KAAK,cAAc,OAAO,GAAI,QAAO;AAAG,UAAI,WAAW,EAAG,OAAM,IAAI,UAAU,0DAA0D;AAAG,aAAO,uBAAuB,CAAC;AAAA,IAAG;AACxP,aAAS,uBAAuB,GAAG;AAAE,UAAI,WAAW,EAAG,OAAM,IAAI,eAAe,2DAA2D;AAAG,aAAO;AAAA,IAAG;AACxJ,aAAS,UAAU,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,KAAK,SAAS,EAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,QAAE,YAAY,OAAO,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,GAAG,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACnV,aAAS,iBAAiB,GAAG;AAAE,UAAI,IAAI,cAAc,OAAO,MAAM,oBAAI,IAAI,IAAI;AAAQ,aAAO,mBAAmB,SAASC,kBAAiBC,IAAG;AAAE,YAAI,SAASA,MAAK,CAAC,kBAAkBA,EAAC,EAAG,QAAOA;AAAG,YAAI,cAAc,OAAOA,GAAG,OAAM,IAAI,UAAU,oDAAoD;AAAG,YAAI,WAAW,GAAG;AAAE,cAAI,EAAE,IAAIA,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,OAAO;AAAA,QAAG;AAAE,iBAAS,UAAU;AAAE,iBAAO,WAAWA,IAAG,WAAW,gBAAgB,IAAI,EAAE,WAAW;AAAA,QAAG;AAAE,eAAO,QAAQ,YAAY,OAAO,OAAOA,GAAE,WAAW,EAAE,aAAa,EAAE,OAAO,SAAS,YAAY,OAAI,UAAU,MAAI,cAAc,KAAG,EAAE,CAAC,GAAG,gBAAgB,SAASA,EAAC;AAAA,MAAG,GAAG,iBAAiB,CAAC;AAAA,IAAG;AAC7oB,aAAS,WAAW,GAAG,GAAG,GAAG;AAAE,UAAI,0BAA0B,EAAG,QAAO,QAAQ,UAAU,MAAM,MAAM,SAAS;AAAG,UAAI,IAAI,CAAC,IAAI;AAAG,QAAE,KAAK,MAAM,GAAG,CAAC;AAAG,UAAI,IAAI,KAAK,EAAE,KAAK,MAAM,GAAG,CAAC,GAAG;AAAG,aAAO,KAAK,gBAAgB,GAAG,EAAE,SAAS,GAAG;AAAA,IAAG;AACzO,aAAS,4BAA4B;AAAE,UAAI;AAAE,YAAI,IAAI,CAAC,QAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,SAAS,CAAC,GAAG,WAAY;AAAA,QAAC,CAAC,CAAC;AAAA,MAAG,SAASA,IAAG;AAAA,MAAC;AAAE,cAAQ,4BAA4B,SAASC,6BAA4B;AAAE,eAAO,CAAC,CAAC;AAAA,MAAG,GAAG;AAAA,IAAG;AAClP,aAAS,kBAAkB,GAAG;AAAE,UAAI;AAAE,eAAO,OAAO,SAAS,SAAS,KAAK,CAAC,EAAE,QAAQ,eAAe;AAAA,MAAG,SAAS,GAAG;AAAE,eAAO,cAAc,OAAO;AAAA,MAAG;AAAA,IAAE;AACvJ,aAAS,gBAAgB,GAAG,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUD,IAAGE,IAAG;AAAE,eAAOF,GAAE,YAAYE,IAAGF;AAAA,MAAG,GAAG,gBAAgB,GAAG,CAAC;AAAA,IAAG;AACxL,aAAS,gBAAgB,GAAG;AAAE,aAAO,kBAAkB,OAAO,iBAAiB,OAAO,eAAe,KAAK,IAAI,SAAUA,IAAG;AAAE,eAAOA,GAAE,aAAa,OAAO,eAAeA,EAAC;AAAA,MAAG,GAAG,gBAAgB,CAAC;AAAA,IAAG;AACpM,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUG,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUC,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,mBAAmB,GAAG;AAAE,UAAI,QAAQ,GAAG;AAAE,YAAI,IAAI,EAAE,cAAc,OAAO,UAAU,OAAO,YAAY,YAAY,GAAG,IAAI;AAAG,YAAI,EAAG,QAAO,EAAE,KAAK,CAAC;AAAG,YAAI,cAAc,OAAO,EAAE,KAAM,QAAO;AAAG,YAAI,CAAC,MAAM,EAAE,MAAM,EAAG,QAAO,EAAE,MAAM,SAAS,OAAO;AAAE,iBAAO,KAAK,KAAK,EAAE,WAAW,IAAI,SAAS,EAAE,OAAO,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE;AAAA,QAAG,EAAE;AAAA,MAAG;AAAE,YAAM,IAAI,UAAU,QAAQ,CAAC,IAAI,kBAAkB;AAAA,IAAG;AACzY,aAAS,eAAe,GAAG,GAAG;AAAE,aAAO,gBAAgB,CAAC,KAAK,sBAAsB,GAAG,CAAC,KAAK,4BAA4B,GAAG,CAAC,KAAK,iBAAiB;AAAA,IAAG;AACrJ,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,sBAAsB,GAAG,GAAG;AAAE,UAAI,IAAI,QAAQ,IAAI,OAAO,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,QAAQ,GAAG;AAAE,YAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAI,IAAI;AAAI,YAAI;AAAE,cAAI,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;AAAE,gBAAI,OAAO,CAAC,MAAM,EAAG;AAAQ,gBAAI;AAAA,UAAI,MAAO,QAAO,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,WAAW,IAAI,IAAI,KAAG;AAAA,QAAE,SAASA,IAAG;AAAE,cAAI,MAAI,IAAIA;AAAA,QAAG,UAAE;AAAU,cAAI;AAAE,gBAAI,CAAC,KAAK,QAAQ,EAAE,WAAW,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAI;AAAA,UAAQ,UAAE;AAAU,gBAAI,EAAG,OAAM;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO;AAAA,MAAG;AAAA,IAAE;AACnhB,aAAS,gBAAgB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAA,IAAG;AAC9D,aAAS,2BAA2B,GAAG,GAAG;AAAE,UAAI,IAAI,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,CAAC,GAAG;AAAE,YAAI,MAAM,QAAQ,CAAC,MAAM,IAAI,4BAA4B,CAAC,MAAM,KAAK,KAAK,YAAY,OAAO,EAAE,QAAQ;AAAE,gBAAM,IAAI;AAAI,cAAI,KAAK,GAAG,IAAI,SAASC,KAAI;AAAA,UAAC;AAAG,iBAAO,EAAE,GAAG,GAAG,GAAG,SAAS,IAAI;AAAE,mBAAO,MAAM,EAAE,SAAS,EAAE,MAAM,KAAG,IAAI,EAAE,MAAM,OAAI,OAAO,EAAE,IAAI,EAAE;AAAA,UAAG,GAAG,GAAG,SAASH,GAAEE,IAAG;AAAE,kBAAMA;AAAA,UAAG,GAAG,GAAG,EAAE;AAAA,QAAG;AAAE,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAAG;AAAE,UAAI,GAAG,IAAI,MAAI,IAAI;AAAI,aAAO,EAAE,GAAG,SAAS,IAAI;AAAE,YAAI,EAAE,KAAK,CAAC;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAIA,KAAI,EAAE,KAAK;AAAG,eAAO,IAAIA,GAAE,MAAMA;AAAA,MAAG,GAAG,GAAG,SAASF,GAAEE,IAAG;AAAE,YAAI,MAAI,IAAIA;AAAA,MAAG,GAAG,GAAG,SAAS,IAAI;AAAE,YAAI;AAAE,eAAK,QAAQ,EAAE,UAAU,EAAE,OAAO;AAAA,QAAG,UAAE;AAAU,cAAI,EAAG,OAAM;AAAA,QAAG;AAAA,MAAE,EAAE;AAAA,IAAG;AACr1B,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEA,IAAGE,IAAGH,IAAGI,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUL,IAAGE,IAAGH,IAAG;AAAE,cAAII,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIP,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASQ,GAAEX,IAAGI,IAAG;AAAE,mBAAOG,KAAIP,IAAGQ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIL,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGE,IAAG;AAAE,iBAAKE,KAAIJ,IAAGK,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACP,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGI,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAH,KAAI,KAAKD,KAAI,MAAMG,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOR,KAAIC,KAAI,KAAKO,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMR,KAAIC,KAAI,KAAKG,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIH,IAAGG,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIL,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIE;AAAA,UAAG;AAAE,iBAAO,SAAUH,IAAGS,IAAG,GAAG;AAAE,gBAAIF,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAME,MAAK,EAAEA,IAAG,CAAC,GAAGJ,KAAII,IAAGH,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAML,KAAI,SAAS,IAAII,GAAEJ,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKI,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCN,KAAI,UAAU,GAAGK,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIL,GAAE,KAAKE,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASN,IAAG;AAAE,gBAAAO,KAAI,GAAGC,KAAI,GAAGC,KAAIT;AAAA,cAAG,UAAE;AAAU,gBAAAU,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEN,IAAGD,IAAGI,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEP,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASW,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASX,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGE,IAAGE,IAAGN,IAAG;AAAE,iBAAS,EAAEI,IAAGE,IAAG;AAAE,8BAAoBJ,IAAGE,IAAG,SAAUF,IAAG;AAAE,mBAAO,KAAK,QAAQE,IAAGE,IAAGJ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAE,KAAI,IAAI,EAAEF,IAAGE,IAAG,EAAE,OAAOE,IAAG,YAAY,CAACN,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEE,EAAC,IAAIE,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG;AAAE,aAAO,mBAAmB,CAAC,KAAK,iBAAiB,CAAC,KAAK,4BAA4B,CAAC,KAAK,mBAAmB;AAAA,IAAG;AAChJ,aAAS,qBAAqB;AAAE,YAAM,IAAI,UAAU,sIAAsI;AAAA,IAAG;AAC7L,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,iBAAiB,GAAG;AAAE,UAAI,eAAe,OAAO,UAAU,QAAQ,EAAE,OAAO,QAAQ,KAAK,QAAQ,EAAE,YAAY,EAAG,QAAO,MAAM,KAAK,CAAC;AAAA,IAAG;AAChJ,aAAS,mBAAmB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO,kBAAkB,CAAC;AAAA,IAAG;AACpF,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,QAAI,uBAAuBR,SAAQ,uBAAuB,WAAY;AACpE,eAASgB,sBAAqB,SAAS;AACrC,YAAI,QAAQ,MACV,uBACA;AACF,wBAAgB,MAAMA,qBAAoB;AAC1C,wBAAgB,MAAM,YAAY,kBAAkB,aAAa,EAAE,EAAE,SAAS,UAAU;AACtF,cAAI,OACF,SACA,SACA,QACA,mBACA,oBACA,uBACA,UACA,QAAQ;AACV,iBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,mBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,cAC5B,KAAK;AACH,wBAAQ,MAAM,SAAS,KAAK,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,MAAM;AACpF,oBAAI,MAAM,OAAO;AACf,2BAAS,IAAI;AACb;AAAA,gBACF;AACA,oBAAI,MAAM,KAAK;AACb,2BAAS,IAAI;AACb;AAAA,gBACF;AACA,sBAAM,IAAI,MAAM,kFAAuF;AAAA,cACzG,KAAK;AACH,sBAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,cAChC,KAAK;AACH,0BAAU,YAAY,QAAQ,YAAY,SAAS,UAAU,MAAM,QAAQ;AAC3E,uBAAO,MAAM;AACb,uBAAO,MAAM;AACb,yBAAS,IAAI;AACb,uBAAO,MAAM,OAAO,oBAAoB,MAAM,KAAK;AAAA,cACrD,KAAK;AACH,sBAAM,aAAa,SAAS;AAC5B,oBAAI,EAAE,WAAW,KAAK,IAAI,oBAAoB,MAAM,UAAU,IAAI;AAChE,2BAAS,IAAI;AACb;AAAA,gBACF;AACA,yBAAS,IAAI;AACb,wBAAQ,GAAG,OAAO,YAAY,MAAM,SAAS,MAAM,MAAM;AAAA,cAC3D,KAAK;AACH,0BAAU,SAAS;AACnB,yBAAS,IAAI;AACb,uBAAO,MAAM,iBAAiB,MAAM,WAAW,iBAAiB,OAAO;AAAA,cACzE,KAAK;AACH,yBAAS,SAAS;AAClB,oBAAI,EAAE,OAAO,WAAW,KAAK,IAAI,qBAAqB,UAAU;AAC9D,2BAAS,IAAI;AACb;AAAA,gBACF;AACA,2BAAW,IAAI,aAAa,SAAS,MAAM,QAAQ,UAAU;AAC7D,sBAAM,MAAM,IAAI,aAAa,mBAAmB,SAAS;AAAA,kBACvD,MAAM,oBAAoB,MAAM,QAAQ,SAAS,QAAQ,sBAAsB,SAAS,oBAAoB,aAAa;AAAA,kBACzH,mBAAmB,MAAM,QAAQ;AAAA,gBACnC,CAAC,EAAE,aAAa,SAAS,KAAK,MAAM,UAAU,CAAC,MAAM,QAAQ,MAAM,EAAE,OAAO,oBAAoB,qBAAqB,MAAM,QAAQ,UAAU,QAAQ,uBAAuB,SAAS,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,wBAAwB,MAAM,QAAQ,sBAAsB,QAAQ,0BAA0B,SAAS,wBAAwB,OAAO,eAAe;AAClX,yBAAS,IAAI;AACb,uBAAO,MAAM,SAAS;AAAA,cACxB,KAAK;AACH,uBAAO,SAAS,EAAE,GAAG,KAAK;AAAA,cAC5B,KAAK;AACH,sBAAM,IAAIA,sBAAqB,OAAO,mBAAmB,sGAAsG,OAAO,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,cAC/L,KAAK;AACH,oBAAI,KAAK,IAAI,oBAAoB,MAAM,UAAU,GAAG;AAClD,wBAAM,SAAS,GAAG,aAAa,qBAAqB,MAAM,OAAO,MAAM,UAAU,EAAE,MAAM;AAAA,gBAC3F;AACA,uBAAO,SAAS,EAAE,GAAG,KAAK;AAAA,YAC9B;AAAA,UACF,GAAG,OAAO;AAAA,QACZ,CAAC,CAAC,CAAC;AACH,wBAAgB,MAAM,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AACnF,cAAI;AACJ,cAAI,OACF,aACA,OACA,uBACA,iBACA,YACA,kBACA,UACA,uBACA,WACA,OACA,SAAS;AACX,iBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,mBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,cAC7B,KAAK;AACH,wBAAQ,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,MAAM,OAAO,QAAQ,gBAAgB,SAAS,QAAQ,aAAa,wBAAwB,MAAM,iBAAiB,kBAAkB,0BAA0B,SAAS,MAAM,QAAQ,kBAAkB;AAC5R,oBAAI,MAAM,OAAO;AACf,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAI,MAAM,wCAAwC;AAAA,cAC1D,KAAK;AACH,oBAAI,EAAE,CAAC,SAAS,MAAM,aAAa;AACjC,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,kBAAkB,sGAA2G;AAAA,cACrK,KAAK;AACH,oBAAI,iBAAiB;AACnB,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,SAAS,iHAAsH;AAAA,cACvK,KAAK;AACH,6BAAa,MAAM,yBAAyB,EAAE,OAAO,SAAU,IAAI;AACjE,yBAAO,CAAC,GAAG,WAAW,GAAG;AAAA,gBAC3B,CAAC;AACD,oBAAI,CAAC,WAAW,QAAQ;AACtB,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,oBAAoB,wCAAwC,OAAO,YAAY,IAAI,IAAI,6CAA6C;AAAA,cAC5K,KAAK;AACH,oCAAoB,yBAAyB,MAAM,QAAQ,sBAAsB,QAAQ,2BAA2B,SAAS,yBAAyB,OAAO;AAC7J,sBAAM,QAAQ,aAAa,mBAAmB,UAAU,MAAM,OAAO;AAAA,kBACnE,KAAK,MAAM,MAAM;AAAA,kBACjB,YAAY;AAAA,kBACZ,aAAa,MAAM,eAAe;AAAA,gBACpC,CAAC,EAAE,WAAW,gBAAgB,EAAE,MAAM;AACtC,2BAAW;AAAA,kBACT,mBAAmB,MAAM,QAAQ;AAAA,gBACnC;AACA,oBAAI,MAAM,QAAQ,QAAS,UAAS,UAAU,MAAM,QAAQ;AAC5D,oBAAI,MAAM,QAAQ,WAAW,OAAW,UAAS,SAAS,MAAM,QAAQ;AACxE,oBAAI,MAAM,QAAQ,UAAW,UAAS,YAAY,MAAM,QAAQ;AAChE,0BAAU,IAAI;AACd,uBAAO,gBAAgB,MAAM,MAAM,MAAM,GAAG,QAAQ;AAAA,cACtD,KAAK;AACH,wCAAwB,UAAU;AAClC,4BAAY,sBAAsB;AAClC,wBAAQ,sBAAsB;AAC9B,sBAAM,kBAAkB,KAAK;AAC7B,sBAAM,SAAS,aAAa,mBAAmB,QAAQ,WAAW,MAAM,QAAQ,iBAAiB;AAAA,cACnG,KAAK;AACH,uBAAO,UAAU,EAAE,CAAC;AAAA,YACxB;AAAA,UACF,GAAG,QAAQ;AAAA,QACb,CAAC,CAAC,CAAC;AACH,wBAAgB,MAAM,eAAe,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AAC1F,cAAI,OACF,aACA,OACA,uBACA,iBACA,SACA,gBACA,SAAS;AACX,iBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,mBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,cAC3C,KAAK;AACH,wBAAQ,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,MAAM,OAAO,QAAQ,gBAAgB,SAAS,QAAQ,aAAa,wBAAwB,MAAM,iBAAiB,kBAAkB,0BAA0B,SAAS,MAAM,QAAQ,kBAAkB,uBAAuB,UAAU,MAAM;AACnU,oBAAI,MAAM,QAAQ;AAChB,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,iCAAiB,MAAM,QAAQ;AAC/B,oBAAI,MAAM,QAAQ,QAAQ;AACxB,wBAAM,QAAQ,SAAS;AAAA,gBACzB;AACA,0BAAU,IAAI;AACd,0BAAU,IAAI;AACd,uBAAO,MAAM,KAAK;AAAA,kBAChB;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH,KAAK;AACH,0BAAU,IAAI;AACd,sBAAM,QAAQ,SAAS;AACvB,uBAAO,UAAU,EAAE,CAAC;AAAA,cACtB,KAAK;AACH,uBAAO,UAAU,EAAE,GAAG,MAAM,KAAK,OAAO,CAAC;AAAA,YAC7C;AAAA,UACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AAAA,QACjC,CAAC,CAAC,CAAC;AACH,wBAAgB,MAAM,4BAA4B,WAAY;AAC5D,cAAI;AACJ,cAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC/E,wBAAwB,MAAM,sBAC9B,uBAAuB,0BAA0B,SAAS,QAAQ;AACpE,cAAI,CAAC,MAAM,OAAO;AAChB,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UAC1D;AACA,cAAI,EAAE,gBAAgB,MAAM,QAAQ;AAClC,kBAAM,IAAI,MAAM,+CAA+C,OAAO,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC;AAAA,UACpG;AACA,cAAI,0BAA0B,MAAM,MAAM,WAAW,CAAC;AACtD,iBAAO,mBAAmB,IAAI,MAAM,wBAAwB,wBAAwB,UAAU,QAAQ,0BAA0B,SAAS,wBAAwB,CAAC,GAAG,OAAO,SAAU,OAAO;AAC3L,mBAAO,MAAM,YAAY,EAAE,OAAO,MAAM,aAAa,IAAI,uBAAuB,0BAA0B,MAAM,wBAAwB,MAAM,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,UACtM,CAAC,EAAE,IAAI,SAAU,OAAO;AACtB,mBAAO,aAAa,QAAQ,cAAc,MAAM,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,UAC9F,CAAC,CAAC,CAAC;AAAA,QACL,CAAC;AACD,wBAAgB,MAAM,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AAC9F,cAAI;AACJ,cAAI,OACF,kBACA,YACA,qBACA,eACA,eACA,SACA,sBACA,gBACA,0BACA,yBACA,aACA,WACA,OACA,OACA,MACA,SAAS,WACT;AACF,iBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,mBAAO,EAAG,SAAQ,UAAU,IAAI,UAAU,GAAG;AAAA,cAC3C,KAAK;AACH,wBAAQ,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAmB,MAAM,YAAY,aAAa,qBAAqB,SAAS,kBAAkB,aAAa,EAAE,EAAE,SAAS,WAAW;AAC5M,sBAAI;AACJ,yBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,2BAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,sBAC7B,KAAK;AACH,kCAAU,IAAI;AACd,+BAAO,MAAM,OAAO,gBAAgB;AAAA,sBACtC,KAAK;AACH,6BAAK,UAAU,EAAE;AACjB,+BAAO,UAAU,EAAE,GAAG,KAAK,GAAG;AAAA,oBAClC;AAAA,kBACF,GAAG,QAAQ;AAAA,gBACb,CAAC,CAAC,EAAE,IAAI,kBAAkB,sBAAsB,MAAM,eAAe,gBAAgB,wBAAwB,SAAS,MAAM,QAAQ,gBAAgB,qBAAqB,gBAAgB,MAAM,SAAS,UAAU,kBAAkB,SAAS,MAAM,QAAQ,YAAY,eAAe,uBAAuB,MAAM,gBAAgB,iBAAiB,yBAAyB,SAAS,aAAa,iBAAiB;AACpZ,oBAAI,MAAM,OAAO;AACf,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAI,MAAM,qDAAqD;AAAA,cACvE,KAAK;AACH,oBAAI,EAAE,mBAAmB,aAAa,iBAAiB;AACrD,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,2CAA2B,MAAM,yBAAyB;AAC1D,oBAAI,EAAE,yBAAyB,WAAW,IAAI;AAC5C,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,gCAAgC,iEAAiE;AAAA,cACzI,KAAK;AACH,oBAAI,EAAE,yBAAyB,QAAQ,YAAY,QAAQ,YAAY,SAAS,UAAU,EAAE,MAAM,KAAK;AACrG,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,kBAAkB,mCAAoC,OAAO,SAAS,GAAI,CAAC;AAAA,cACnH,KAAK;AACH,oBAAI,eAAe;AACjB,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,sBAAM,IAAIA,sBAAqB,OAAO,SAAS,+DAA+D;AAAA,cAChH,KAAK;AACH,0CAA0B,MAAM,MAAM,WAAW,CAAC;AAClD,+BAAe,yBAAyB,wBAAwB,UAAU,QAAQ,2BAA2B,SAAS,yBAAyB,CAAC;AAChJ,4BAAY,2BAA2B,YAAY,QAAQ,CAAC;AAC5D,0BAAU,IAAI;AACd,wBAAQ,aAAa,EAAE,EAAE,SAASC,SAAQ;AACxC,sBAAI,aAAa,GAAG,OAAO,aAAa,kBAAkB,MAAM,KAAK,KAAK;AAC1E,yBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,2BAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,sBAC7B,KAAK;AACH,sCAAc,eAAe,MAAM,OAAO,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,QAAQ,YAAY,CAAC;AACvF,sCAAc,aAAa,IAAI,mBAAmB,QAAQ,MAAM,YAAY,EAAE,MAAM,CAAC;AACrF,4BAAI,EAAE,YAAY,OAAO,MAAM,aAAa,IAAI,uBAAuB,0BAA0B,IAAI;AACnG,oCAAU,IAAI;AACd;AAAA,wBACF;AACA,+BAAO,UAAU,EAAE,GAAG,CAAC;AAAA,sBACzB,KAAK;AACH,2CAAmB,aAAa,QAAQ,cAAc,YAAY,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS;AAChG,4BAAI,EAAE,qBAAqB,UAAU;AACnC,oCAAU,IAAI;AACd;AAAA,wBACF;AACA,+BAAO,UAAU,EAAE,GAAG,CAAC;AAAA,sBACzB,KAAK;AACH,+BAAO,kBAAkB,QAAQ,kBAAkB,SAAS,gBAAgB,QAAQ;AACpF,8BAAM;AACN,8BAAM;AACN,8BAAM,WAAY;AAChB,8BAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,UAAU;AACzE,gCAAI,aAAa,iBAAiB;AAClC,mCAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qCAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gCAC7B,KAAK;AACH,4CAAU,IAAI;AACd,yCAAO,KAAK,SAAS,MAAM,QAAQ,GAAG;AAAA,oCACpC;AAAA,kCACF,CAAC;AAAA,gCACH,KAAK;AACH,gDAAc,UAAU;AACxB,oDAAkB,YAAY;AAC9B,0CAAQ,YAAY;AACpB,wCAAM,kBAAkB,KAAK;AAC7B,yCAAO,UAAU,EAAE,GAAG,OAAO,KAAK,iBAAiB,QAAQ,CAAC;AAAA,8BAChE;AAAA,4BACF,GAAG,QAAQ;AAAA,0BACb,CAAC,CAAC;AACF,iCAAO,SAAU,IAAI;AACnB,mCAAO,MAAM,MAAM,MAAM,SAAS;AAAA,0BACpC;AAAA,wBACF,EAAE;AACF,kCAAU,IAAI;AACd,+BAAO;AAAA,sBACT,KAAK;AACH,kCAAU,IAAI;AACd,+BAAO,IAAI,KAAK,KAAK,UAAU,GAAG,MAAM,QAAQ,iBAAiB;AAAA,sBACnE,KAAK;AACH,oCAAY,CAAC,IAAI,UAAU;AAAA,sBAC7B,KAAK;AACH,+BAAO,UAAU,EAAE,CAAC;AAAA,oBACxB;AAAA,kBACF,GAAGA,MAAK;AAAA,gBACV,CAAC;AACD,0BAAU,EAAE;AAAA,cACd,KAAK;AACH,qBAAK,QAAQ,UAAU,EAAE,GAAG,MAAM;AAChC,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,uBAAO,UAAU,EAAE,mBAAmB,MAAM,CAAC,GAAG,CAAC;AAAA,cACnD,KAAK;AACH,uBAAO,UAAU;AACjB,oBAAI,EAAE,SAAS,IAAI;AACjB,4BAAU,IAAI;AACd;AAAA,gBACF;AACA,uBAAO,UAAU,EAAE,GAAG,CAAC;AAAA,cACzB,KAAK;AACH,0BAAU,IAAI;AACd;AAAA,cACF,KAAK;AACH,0BAAU,IAAI;AACd;AAAA,cACF,KAAK;AACH,0BAAU,IAAI;AACd,sBAAM,UAAU;AAChB,0BAAU,EAAE,GAAG;AAAA,cACjB,KAAK;AACH,0BAAU,IAAI;AACd,0BAAU,EAAE;AACZ,uBAAO,UAAU,EAAE,EAAE;AAAA,cACvB,KAAK;AACH,uBAAO,UAAU,EAAE,CAAC;AAAA,YACxB;AAAA,UACF,GAAG,UAAU,MAAM,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AAAA,QACtC,CAAC,CAAC,CAAC;AACH,aAAK,UAAU;AACf,aAAK,QAAQ,YAAY,wBAAwB,KAAK,QAAQ,cAAc,QAAQ,0BAA0B,SAAS,wBAAwB;AAC/I,aAAK,SAAS,IAAI,KAAK,OAAO,KAAK,QAAQ,QAAQ;AAAA,UACjD,YAAY,wBAAwB,KAAK,QAAQ,eAAe,QAAQ,0BAA0B,SAAS,wBAAwB;AAAA,QACrI,CAAC;AAAA,MACH;AACA,aAAO,aAAaD,uBAAsB,CAAC;AAAA,QACzC,KAAK;AAAA,QACL,OAAO,SAAS,SAAS;AACvB,cAAI;AACJ,iBAAO,KAAK,UAAU;AAAA,YACpB,QAAQ,KAAK,QAAQ;AAAA,YACrB,KAAK,cAAc,KAAK,WAAW,QAAQ,gBAAgB,SAAS,SAAS,YAAY,MAAM;AAAA,YAC/F,kBAAkB;AAAA,cAChB,MAAM,KAAK,eAAe,OAAO,KAAK,IAAI,SAAU,GAAG;AACrD,uBAAO,EAAE,MAAM,QAAQ;AAAA,cACzB,CAAC;AAAA,cACD,QAAQ,KAAK,eAAe,OAAO,OAAO,MAAM,QAAQ;AAAA,YAC1D;AAAA,YACA,2BAA2B,KAAK,eAAe,gBAAgB,MAAM,QAAQ;AAAA,UAC/E,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ;AACtB,cAAI;AACJ,cAAI,CAAC,KAAK,MAAO,OAAM,IAAI,MAAM,qFAA0F;AAC3H,kBAAQ,eAAe,KAAK,WAAW,QAAQ,iBAAiB,SAAS,SAAS,aAAa,WAAW,EAAE,MAAM,QAAQ;AAAA,QAC5H;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,kBAAkB,OAAO;AACvC,cAAI,CAAC,MAAO;AACZ,cAAI,UAAU,MAAM,SAClB,OAAO,MAAM;AACf,cAAI,cAAc,GAAG,OAAO,OAAO,EAAE,OAAO,MAAM,MAAM,KAAK,OAAO,MAAM,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,EAAE;AACnG,kBAAQ,MAAM;AAAA,YACZ,KAAK;AACH,oBAAM,IAAIA,sBAAqB,OAAO,oBAAoB,WAAW;AAAA,YACvE,KAAK;AACH,oBAAM,IAAIA,sBAAqB,OAAO,qBAAqB,WAAW;AAAA,YACxE,KAAK;AACH,oBAAM,IAAIA,sBAAqB,OAAO,qBAAqB,WAAW;AAAA,YACxE,KAAK;AACH,oBAAM,IAAIA,sBAAqB,OAAO,aAAa,WAAW;AAAA,YAChE;AACE,oBAAM,IAAI,MAAM,oBAAoB,OAAO,WAAW,CAAC;AAAA,UAC3D;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,KAAK,SAAS,MAAM;AAClB,cAAI;AACJ,cAAI,KAAK,oBAAoB,KAAK,2BAA2B;AAC3D,mBAAO;AAAA,cACL,QAAQ,KAAK;AAAA,cACb,iBAAiB,KAAK;AAAA,YACxB;AAAA,UACF;AACA,cAAI,aAAa,KAAK;AACtB,cAAI,CAAC,YAAY;AACf,kBAAM,IAAIA,sBAAqB,OAAO,gBAAgB,wCAAwC;AAAA,UAChG;AACA,cAAI,KAAK,IAAI,kBAAkB,UAAU,GAAG;AAC1C,kBAAM,IAAIA,sBAAqB,OAAO,iBAAiB,mCAAoC,OAAO,WAAW,OAAO,GAAI,CAAC;AAAA,UAC3H;AACA,cAAI,KAAK,IAAI,oBAAoB,UAAU,GAAG;AAC5C,kBAAM,IAAIA,sBAAqB,OAAO,aAAa,mMAA6M;AAAA,UAClQ;AACA,eAAK,oBAAoB,qBAAqB,WAAW,YAAY,QAAQ,uBAAuB,SAAS,qBAAqB;AAAA,YAChI,MAAM,CAAC;AAAA,YACP,QAAQ,aAAa,IAAI,MAAM,QAAQ;AAAA,UACzC;AACA,eAAK,4BAA4B,WAAW,gBAAgB,MAAM;AAClE,iBAAO;AAAA,YACL,QAAQ,KAAK;AAAA,YACb,iBAAiB,KAAK;AAAA,UACxB;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,KAAK,SAAS,MAAM;AAClB,cAAI;AACF,gBAAI,CAAC,KAAK,eAAe,QAAQ;AAC/B,oBAAM,IAAI,MAAM,uBAAuB;AAAA,YACzC;AACA,mBAAO,KAAK,QAAQ,eAAe,KAAK,eAAe,OAAO,MAAM;AAAA,UACtE,SAAS,GAAG;AACV,gBAAI,EAAE,GAAG,OAAO,oBAAoB,CAAC,EAAG,OAAM;AAC9C,gBAAIE,OAAM,KAAK,WAAW,EAAE,SAAS,CAAC;AACtC,gBAAIA,KAAK,QAAOA;AAChB,kBAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,cAAc;AACvC,cAAI,CAAC,KAAK,QAAQ,WAAY,QAAO;AACrC,cAAI,QAAQ,aAAa,MAAM,OAAO,oBAAoB;AAC1D,cAAI,CAAC,MAAO,QAAO;AACnB,cAAI,IAAI,SAAS,MAAM,CAAC,GAAG,EAAE;AAC7B,cAAIA,OAAM,KAAK,QAAQ,WAAW,CAAC;AACnC,cAAI,CAACA,KAAK,QAAO;AACjB,iBAAO,IAAI,aAAa,IAAIA,IAAG;AAAA,QACjC;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS;AACxE,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,sBAAI,KAAK,QAAQ;AACf,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,0FAA0F;AAAA,gBAC5G,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,kBAAkB,gBAAgB,KAAK,MAAM,OAAO;AAAA,gBAC7D,KAAK;AACH,yBAAO,UAAU;AACjB,yBAAO,UAAU,EAAE,GAAG,IAAI;AAAA,cAC9B;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,KAAK,KAAK;AACjB,mBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,UACpC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,KAAK,SAAS,MAAM;AAClB,cAAI,aAAa,KAAK,eAAe,OAAO,KAAK;AACjD,cAAI,cAAc,KAAK,eAAe,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE;AAC1F,iBAAO,eAAe,KAAK,gBAAgB;AAAA,QAC7C;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,oBAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,iBAAiB,SAAS;AACrG,gBAAI,WAAW,iBAAiB;AAChC,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,sBAAI,KAAK,QAAQ,iBAAiB;AAChC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,MAAM,yGAAyG;AAAA,gBAC3H,KAAK;AACH,sBAAI,EAAE,YAAY,QAAQ,YAAY,SAAS;AAC7C,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM;AACN,4BAAU,IAAI;AACd;AAAA,gBACF,KAAK;AACH,4BAAU,IAAI;AACd,0BAAQ,GAAG,OAAO,YAAY,KAAK,SAAS,KAAK,MAAM;AAAA,gBACzD,KAAK;AACH,wBAAM,UAAU;AAAA,gBAClB,KAAK;AACH,4BAAU;AACV,4BAAU,IAAI;AACd,yBAAOF,sBAAqB,iCAAiC,cAAc,CAAC,GAAG,KAAK,OAAO,GAAG,gBAAgB,iBAAiB,SAAS,gBAAgB,cAAc;AAAA,gBACxK,KAAK;AACH,8BAAY,UAAU;AACtB,4BAAU,IAAI;AACd,yBAAO,UAAU,YAAY;AAAA,gBAC/B,KAAK;AACH,oCAAkB,UAAU;AAC5B,sBAAI,gBAAgB,wBAAwB;AAC1C,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAIA,sBAAqB,OAAO,mBAAmB,8CAA8C,OAAO,KAAK,UAAU,eAAe,CAAC,CAAC;AAAA,gBAChJ,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,gBAAgB,sBAAsB;AAAA,cAChE;AAAA,YACF,GAAG,UAAU,IAAI;AAAA,UACnB,CAAC,CAAC;AACF,mBAAS,iBAAiB,KAAK,KAAK;AAClC,mBAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,UAChD;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,GAAG,CAAC;AAAA,QACH,KAAK;AAAA,QACL,OAAO,SAAS,SAAS,SAAS,QAAQ;AACxC,cAAI,KAAK,OAAO,IACd,mBAAmB,OAAO,kBAC1B,4BAA4B,OAAO;AACrC,cAAI,MAAM,IAAIA,sBAAqB,OAAO;AAC1C,cAAI,QAAQ,aAAa,mBAAmB,QAAQ,IAAI,QAAQ,iBAAiB;AACjF,cAAI,mBAAmB;AAAA,YACrB,MAAM,iBAAiB,KAAK,IAAI,SAAU,GAAG;AAC3C,qBAAO,aAAa,IAAI,0BAA0B,QAAQ,GAAG,QAAQ;AAAA,YACvE,CAAC;AAAA,YACD,QAAQ,aAAa,IAAI,MAAM,QAAQ,iBAAiB,QAAQ,QAAQ;AAAA,UAC1E;AACA,cAAI,4BAA4B,aAAa,IAAI,uBAAuB,QAAQ,2BAA2B,QAAQ;AACnH,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,SAAS,YAAY,MAAM;AACjD,cAAI;AACJ,cAAI,WAAW,aAAa,IAAI,oBAAoB,QAAQ,YAAY,QAAQ;AAChF,cAAI,QAAQ,aAAa,mBAAmB,QAAQ,UAAU,QAAQ,iBAAiB;AACvF,cAAI,YAAY,MAAM,WAAW,CAAC;AAClC,cAAI,EAAE,cAAc,QAAQ,cAAc,WAAW,kBAAkB,UAAU,UAAU,QAAQ,oBAAoB,UAAU,gBAAgB,UAAU,OAAO,UAAU,KAAK,UAAU,YAAY;AACrM,kBAAM,IAAI,MAAM,6DAA6D;AAAA,UAC/E;AACA,cAAI,qBAAqB,UAAU,KAAK,MAAM;AAC9C,cAAI,EAAE,uBAAuB,QAAQ,uBAAuB,UAAU,mBAAmB,eAAe;AACtG,kBAAM,IAAI,MAAM,kEAAkE;AAAA,UACpF;AACA,cAAI,SAAS,mBAAmB,aAAa,EAAE,SAAS,OAAO;AAC/D,cAAI,MAAM,IAAIA,sBAAqB,cAAc,cAAc,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG;AAAA,YAC/E;AAAA,YACA,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,qBAAO,KAAK,gBAAgB,QAAQ,MAAM;AAAA,YAC5C;AAAA,UACF,CAAC,CAAC;AACF,cAAI,QAAQ;AACZ,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,MAAM,SAAS;AAC7B,cAAI;AACJ,cAAI,WAAW,IAAI,aAAa,SAAS,QAAQ,UAAU;AAC3D,iBAAOA,sBAAqB,YAAY,SAAS,KAAK,MAAM,UAAU,CAAC,QAAQ,MAAM,EAAE,OAAO,oBAAoB,gBAAgB,QAAQ,UAAU,QAAQ,kBAAkB,SAAS,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;AAAA,QACvN;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,eAAe,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,WAAW,SAAS;AAC1F,gBAAI,cAAc;AAClB,gBAAI,IAAI;AACR,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,uBAAK,IAAIA,sBAAqB,OAAO;AACrC,4BAAU,IAAI;AACd,0BAAQ,GAAG,OAAO,YAAY,SAAS,GAAG,MAAM;AAAA,gBAClD,KAAK;AACH,4BAAU,UAAU;AACpB,qBAAG,MAAM,IAAI,aAAa,mBAAmB,SAAS;AAAA,oBACpD,MAAM,eAAe,QAAQ,SAAS,QAAQ,iBAAiB,SAAS,eAAe,aAAa;AAAA,oBACpG,mBAAmB,QAAQ;AAAA,kBAC7B,CAAC,EAAE,YAAY,wBAAwB,QAAQ,sBAAsB,QAAQ,0BAA0B,SAAS,wBAAwB,OAAO,eAAe,EAAE,aAAa,SAAS;AACtL,sBAAI,CAAC,QAAQ,UAAU;AACrB,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,4BAAU,IAAI;AACd,yBAAO,GAAG,SAAS;AAAA,gBACrB,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,cAC5B;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,YAAY,KAAK,KAAK;AAC7B,mBAAO,aAAa,MAAM,MAAM,SAAS;AAAA,UAC3C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,oCAAoC,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS,aAAa,SAAS,KAAK;AAC/H,gBAAI;AACJ,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,uBAAK,IAAIA,sBAAqB,OAAO;AACrC,qBAAG,MAAM,IAAI,aAAa,mBAAmB,SAAS;AAAA,oBACpD;AAAA,oBACA,mBAAmB,QAAQ;AAAA,kBAC7B,CAAC,EAAE,eAAe,uBAAuB,aAAa,qBAAqB,YAAY,MAAM,IAAI,WAAW,EAAE,aAAa,aAAa,UAAU,iBAAiB,CAAC,CAAC,CAAC,EAAE,YAAY,yBAAyB,QAAQ,sBAAsB,QAAQ,2BAA2B,SAAS,yBAAyB,OAAO,eAAe;AACtU,4BAAU,IAAI;AACd,yBAAO,GAAG,SAAS;AAAA,oBACjB,SAAS;AAAA,kBACX,CAAC;AAAA,gBACH,KAAK;AACH,yBAAO,UAAU,EAAE,GAAG,EAAE;AAAA,cAC5B;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,iCAAiC,KAAK,KAAK,KAAK,KAAK;AAC5D,mBAAO,kCAAkC,MAAM,MAAM,SAAS;AAAA,UAChE;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AACF,oBAAgB,sBAAsB,UAAU;AAAA,MAC9C,cAAc,SAAU,QAAQ;AAC9B,iBAAS,oBAAoB;AAC3B,0BAAgB,MAAM,iBAAiB;AACvC,iBAAO,WAAW,MAAM,mBAAmB,SAAS;AAAA,QACtD;AACA,kBAAU,mBAAmB,MAAM;AACnC,eAAO,aAAa,iBAAiB;AAAA,MACvC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,oBAAoB,SAAU,SAAS;AACrC,iBAAS,sBAAsB;AAC7B,0BAAgB,MAAM,mBAAmB;AACzC,iBAAO,WAAW,MAAM,qBAAqB,SAAS;AAAA,QACxD;AACA,kBAAU,qBAAqB,OAAO;AACtC,eAAO,aAAa,mBAAmB;AAAA,MACzC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,qBAAqB,SAAU,SAAS;AACtC,iBAAS,2BAA2B;AAClC,0BAAgB,MAAM,wBAAwB;AAC9C,iBAAO,WAAW,MAAM,0BAA0B,SAAS;AAAA,QAC7D;AACA,kBAAU,0BAA0B,OAAO;AAC3C,eAAO,aAAa,wBAAwB;AAAA,MAC9C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,mBAAmB,SAAU,SAAS;AACpC,iBAAS,yBAAyB;AAChC,0BAAgB,MAAM,sBAAsB;AAC5C,iBAAO,WAAW,MAAM,wBAAwB,SAAS;AAAA,QAC3D;AACA,kBAAU,wBAAwB,OAAO;AACzC,eAAO,aAAa,sBAAsB;AAAA,MAC5C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,iCAAiC,SAAU,SAAS;AAClD,iBAAS,uCAAuC;AAC9C,0BAAgB,MAAM,oCAAoC;AAC1D,iBAAO,WAAW,MAAM,sCAAsC,SAAS;AAAA,QACzE;AACA,kBAAU,sCAAsC,OAAO;AACvD,eAAO,aAAa,oCAAoC;AAAA,MAC1D,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,UAAU,SAAU,SAAS;AAC3B,iBAAS,gBAAgB;AACvB,0BAAgB,MAAM,aAAa;AACnC,iBAAO,WAAW,MAAM,eAAe,SAAS;AAAA,QAClD;AACA,kBAAU,eAAe,OAAO;AAChC,eAAO,aAAa,aAAa;AAAA,MACnC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,iBAAiB,SAAU,SAAS;AAClC,iBAAS,uBAAuB;AAC9B,0BAAgB,MAAM,oBAAoB;AAC1C,iBAAO,WAAW,MAAM,sBAAsB,SAAS;AAAA,QACzD;AACA,kBAAU,sBAAsB,OAAO;AACvC,eAAO,aAAa,oBAAoB;AAAA,MAC1C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,aAAa,SAAU,SAAS;AAC9B,iBAAS,mBAAmB;AAC1B,0BAAgB,MAAM,gBAAgB;AACtC,iBAAO,WAAW,MAAM,kBAAkB,SAAS;AAAA,QACrD;AACA,kBAAU,kBAAkB,OAAO;AACnC,eAAO,aAAa,gBAAgB;AAAA,MACtC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,kBAAkB,SAAU,SAAS;AACnC,iBAAS,wBAAwB;AAC/B,0BAAgB,MAAM,qBAAqB;AAC3C,iBAAO,WAAW,MAAM,uBAAuB,SAAS;AAAA,QAC1D;AACA,kBAAU,uBAAuB,OAAO;AACxC,eAAO,aAAa,qBAAqB;AAAA,MAC3C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,qBAAqB,SAAU,SAAS;AACtC,iBAAS,sBAAsB;AAC7B,0BAAgB,MAAM,mBAAmB;AACzC,iBAAO,WAAW,MAAM,qBAAqB,SAAS;AAAA,QACxD;AACA,kBAAU,qBAAqB,OAAO;AACtC,eAAO,aAAa,mBAAmB;AAAA,MACzC,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,sBAAsB,SAAU,SAAS;AACvC,iBAAS,uBAAuB;AAC9B,0BAAgB,MAAM,oBAAoB;AAC1C,iBAAO,WAAW,MAAM,sBAAsB,SAAS;AAAA,QACzD;AACA,kBAAU,sBAAsB,OAAO;AACvC,eAAO,aAAa,oBAAoB;AAAA,MAC1C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,sBAAsB,SAAU,UAAU;AACxC,iBAAS,4BAA4B;AACnC,0BAAgB,MAAM,yBAAyB;AAC/C,iBAAO,WAAW,MAAM,2BAA2B,SAAS;AAAA,QAC9D;AACA,kBAAU,2BAA2B,QAAQ;AAC7C,eAAO,aAAa,yBAAyB;AAAA,MAC/C,EAAE,iBAAiB,KAAK,CAAC;AAAA,MACzB,cAAc,SAAU,UAAU;AAChC,iBAAS,oBAAoB;AAC3B,0BAAgB,MAAM,iBAAiB;AACvC,iBAAO,WAAW,MAAM,mBAAmB,SAAS;AAAA,QACtD;AACA,kBAAU,mBAAmB,QAAQ;AACrC,eAAO,aAAa,iBAAiB;AAAA,MACvC,EAAE,iBAAiB,KAAK,CAAC;AAAA,IAC3B,CAAC;AAAA;AAAA;;;AC9yBD;AAAA,wEAAAG,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,kBAAkB;AAC1B,QAAI,eAAe;AACnB,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGC,IAAGC,IAAG;AAAE,YAAIC,KAAIH,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWI,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUL,IAAGC,IAAGC,IAAG;AAAE,cAAIC,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIJ,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASK,GAAEC,IAAGR,IAAG;AAAE,mBAAOG,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIL,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKG,KAAIJ,IAAGK,KAAIJ,IAAG,IAAI,GAAG,CAAC,KAAKK,MAAK,CAACJ,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGC,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAH,KAAI,KAAKE,KAAI,MAAMD,QAAOI,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOL,KAAIF,KAAI,KAAKO,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIH,IAAG,EAAE,IAAIE,GAAE,CAAC,KAAKI,KAAI,MAAML,KAAIF,KAAI,KAAKG,GAAE,CAAC,IAAIF,MAAKA,KAAI,OAAOE,GAAE,CAAC,IAAIH,IAAGG,GAAE,CAAC,IAAIF,IAAG,EAAE,IAAI,GAAGG,KAAI;AAAA,YAAK;AAAE,gBAAIF,MAAKF,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUC,IAAGO,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMF,KAAI,SAAS,IAAIC,GAAED,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKC,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCH,KAAI,UAAU,GAAGE,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIL,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASO,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEN,IAAGE,IAAGC,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGV,IAAGC,IAAGO,IAAG;AAAE,iBAAS,EAAER,IAAGC,IAAG;AAAE,8BAAoBS,IAAGV,IAAG,SAAUU,IAAG;AAAE,mBAAO,KAAK,QAAQV,IAAGC,IAAGS,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAV,KAAI,IAAI,EAAEU,IAAGV,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACO,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEV,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,QAAI,kBAAkBF,SAAQ,kBAAkB,SAASa,iBAAgB,SAAS,mBAAmB;AACnG,aAAO;AAAA,QACL,iBAAiB,WAAY;AAC3B,cAAI,mBAAmB,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,KAAK,MAAM;AACpF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,sBAAI,aAAa,mBAAmB,QAAQ,MAAM,SAAS,QAAQ,SAAS,SAAS,SAAS,KAAK,sBAAsB,iBAAiB;AAC1I,oBAAE,KAAK,OAAO;AACd,yBAAO,SAAS,EAAE,GAAG;AAAA,oBACnB,aAAa,EAAE,MAAM;AAAA,oBACrB,eAAe,QAAQ,UAAU;AAAA,kBACnC,CAAC;AAAA,cACL;AAAA,YACF,GAAG,OAAO;AAAA,UACZ,CAAC,CAAC;AACF,mBAAS,gBAAgB,IAAI,KAAK;AAChC,mBAAO,iBAAiB,MAAM,MAAM,SAAS;AAAA,UAC/C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,QACF,eAAe,WAAY;AACzB,cAAI,iBAAiB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,WAAW;AACnF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,oCAAkB,QAAQ,MAAM,GAAG,aAAa,MAAM,OAAO,KAAK,WAAW,QAAQ,CAAC,CAAC,EAAE,SAAS,QAAQ;AAC1G,yBAAO,UAAU,EAAE,GAAG;AAAA,oBACpB;AAAA,oBACA,eAAe,QAAQ,UAAU;AAAA,kBACnC,CAAC;AAAA,cACL;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,cAAc,KAAK;AAC1B,mBAAO,eAAe,MAAM,MAAM,SAAS;AAAA,UAC7C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ;AAAA,IACF;AAAA;AAAA;;;ACrDA;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,OAAO;AACf,QAAI,eAAe;AACnB,QAAI,eAAe;AACnB,QAAI,SAAS;AACb,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEC,IAAGC,IAAGC,IAAGC,IAAG;AAAE,YAAIC,KAAIH,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWI,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUL,IAAGC,IAAGC,IAAG;AAAE,cAAIC,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIJ,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASK,GAAEC,IAAGR,IAAG;AAAE,mBAAOG,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIL,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKG,KAAIJ,IAAGK,KAAIJ,IAAG,IAAI,GAAG,CAAC,KAAKK,MAAK,CAACJ,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGC,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAH,KAAI,KAAKE,KAAI,MAAMD,QAAOI,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOL,KAAIF,KAAI,KAAKO,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIH,IAAG,EAAE,IAAIE,GAAE,CAAC,KAAKI,KAAI,MAAML,KAAIF,KAAI,KAAKG,GAAE,CAAC,IAAIF,MAAKA,KAAI,OAAOE,GAAE,CAAC,IAAIH,IAAGG,GAAE,CAAC,IAAIF,IAAG,EAAE,IAAI,GAAGG,KAAI;AAAA,YAAK;AAAE,gBAAIF,MAAKF,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUC,IAAGO,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMF,KAAI,SAAS,IAAIC,GAAED,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKC,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCH,KAAI,UAAU,GAAGE,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIL,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASO,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEN,IAAGE,IAAGC,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGV,IAAGC,IAAGO,IAAG;AAAE,iBAAS,EAAER,IAAGC,IAAG;AAAE,8BAAoBS,IAAGV,IAAG,SAAUU,IAAG;AAAE,mBAAO,KAAK,QAAQV,IAAGC,IAAGS,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAV,KAAI,IAAI,EAAEU,IAAGV,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACO,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAEV,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASA,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUD,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUE,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,eAAe,GAAG,GAAG;AAAE,aAAO,gBAAgB,CAAC,KAAK,sBAAsB,GAAG,CAAC,KAAK,4BAA4B,GAAG,CAAC,KAAK,iBAAiB;AAAA,IAAG;AACrJ,aAAS,mBAAmB;AAAE,YAAM,IAAI,UAAU,2IAA2I;AAAA,IAAG;AAChM,aAAS,4BAA4B,GAAG,GAAG;AAAE,UAAI,GAAG;AAAE,YAAI,YAAY,OAAO,EAAG,QAAO,kBAAkB,GAAG,CAAC;AAAG,YAAI,IAAI,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AAAG,eAAO,aAAa,KAAK,EAAE,gBAAgB,IAAI,EAAE,YAAY,OAAO,UAAU,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC,IAAI,gBAAgB,KAAK,2CAA2C,KAAK,CAAC,IAAI,kBAAkB,GAAG,CAAC,IAAI;AAAA,MAAQ;AAAA,IAAE;AACzX,aAAS,kBAAkB,GAAG,GAAG;AAAE,OAAC,QAAQ,KAAK,IAAI,EAAE,YAAY,IAAI,EAAE;AAAS,eAAS,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAK,GAAE,CAAC,IAAI,EAAE,CAAC;AAAG,aAAO;AAAA,IAAG;AACnJ,aAAS,sBAAsB,GAAG,GAAG;AAAE,UAAI,IAAI,QAAQ,IAAI,OAAO,eAAe,OAAO,UAAU,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAAG,UAAI,QAAQ,GAAG;AAAE,YAAI,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAI,IAAI;AAAI,YAAI;AAAE,cAAI,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,MAAM,GAAG;AAAE,gBAAI,OAAO,CAAC,MAAM,EAAG;AAAQ,gBAAI;AAAA,UAAI,MAAO,QAAO,EAAE,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,WAAW,IAAI,IAAI,KAAG;AAAA,QAAE,SAASF,IAAG;AAAE,cAAI,MAAI,IAAIA;AAAA,QAAG,UAAE;AAAU,cAAI;AAAE,gBAAI,CAAC,KAAK,QAAQ,EAAE,WAAW,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAI;AAAA,UAAQ,UAAE;AAAU,gBAAI,EAAG,OAAM;AAAA,UAAG;AAAA,QAAE;AAAE,eAAO;AAAA,MAAG;AAAA,IAAE;AACnhB,aAAS,gBAAgB,GAAG;AAAE,UAAI,MAAM,QAAQ,CAAC,EAAG,QAAO;AAAA,IAAG;AAC9D,aAAS,iBAAiB,KAAK;AAC7B,UAAI,cAAc,IAAI,IAAI,EAAE,SAAS;AACrC,UAAI,QAAQ,IAAI,MAAM;AACtB,UAAI,QAAQ,CAAC;AACb,YAAM,QAAQ,SAAU,OAAO;AAC7B,YAAI,QAAQ,MAAM,KAAK,EAAE,SAAS;AAClC,YAAI,OAAO,MAAM,IAAI,EAAE,SAAS;AAChC,cAAM,KAAK;AAAA,UACT,aAAa;AAAA,UACb;AAAA,UACA,MAAM,CAAC,MAAM,MAAM,CAAC;AAAA,UACpB,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AACD,UAAI,MAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI,YAAY,SAAS,GAAG;AAC1B,YAAI,cAAc;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AACA,aAAS,UAAU,OAAO;AACxB,aAAO,QAAQ,KAAK,MAAM,KAAK,EAAE,SAAS,CAAC;AAAA,IAC7C;AACA,aAAS,QAAQ,MAAM,OAAO;AAC5B,UAAI,YAAY,MAAM,KAAK,EAAE,SAAS;AACtC,UAAI,QAAQ,OAAO,QAAQ,IAAI,EAAE,KAAK,SAAU,MAAM;AACpD,YAAI,QAAQ,eAAe,MAAM,CAAC,GAChC,OAAO,MAAM,CAAC;AAChB,eAAO,SAAS;AAAA,MAClB,CAAC;AACD,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,MAAM,iBAAiB,OAAO,SAAS,CAAC;AAAA,MACpD;AACA,aAAO,MAAM,CAAC;AAAA,IAChB;AACA,aAAS,SAAS,MAAM;AACtB,aAAO,SAAS,QAAQ,OAAO;AAC7B,gBAAQ,MAAM,OAAO,EAAE,OAAO;AAAA,UAC5B,KAAK,aAAa,IAAI,yBAAyB,0BAA0B,EAAE,OACzE;AACE,gBAAI,QAAQ,MAAM,UAAU;AAC5B,mBAAO,MAAM,KAAK,EAAE,SAAS,MAAM;AAAA,UACrC;AAAA,UACF,KAAK,aAAa,IAAI,yBAAyB,yBAAyB,EAAE,OACxE;AACE,gBAAI,WAAW,MAAM,SAAS;AAC9B,mBAAO,SAAS,KAAK,EAAE,SAAS,MAAM;AAAA,UACxC;AAAA,UACF;AACE,mBAAO;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA,aAAS,cAAc,KAAK,IAAI;AAC9B,cAAQ,GAAG,OAAO;AAAA,QAChB,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE;AAClD,iBAAO,aAAa,IAAI,MAAM,UAAU,GAAG;AAAA,QAC7C,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE;AAClD,iBAAO,aAAa,IAAI,MAAM,UAAU,GAAG;AAAA,QAC7C,KAAK,aAAa,IAAI,WAAW,kBAAkB,EAAE;AACnD,iBAAO,aAAa,QAAQ,WAAW,GAAG,EAAE,QAAQ;AAAA,QACtD,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAC/C,iBAAO,IAAI,aAAa,YAAY,OAAO,GAAG,EAAE,QAAQ;AAAA,QAC1D,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAC/C,iBAAO,IAAI,aAAa,YAAY,OAAO,GAAG,EAAE,QAAQ;AAAA,QAC1D,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAChD,iBAAO,IAAI,aAAa,YAAY,QAAQ,GAAG,EAAE,QAAQ;AAAA,QAC3D,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAChD,iBAAO,IAAI,aAAa,YAAY,QAAQ,GAAG,EAAE,QAAQ;AAAA,QAC3D,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAChD,iBAAO,IAAI,aAAa,YAAY,QAAQ,GAAG,EAAE,QAAQ;AAAA,QAC3D,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAChD,iBAAO,IAAI,aAAa,YAAY,QAAQ,GAAG,EAAE,QAAQ;AAAA,QAC3D,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE;AAAA,QACnD,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE;AAClD,iBAAO,aAAa,IAAI,MAAM,SAAS,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,QACnE;AACE,gBAAM,IAAI,UAAU,gBAAgB,OAAO,GAAG,MAAM,6BAA6B,CAAC;AAAA,MACtF;AAAA,IACF;AACA,QAAI,uBAAuB;AAAA,MACzB,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,aAAa;AAAA,MACf;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AACA,aAAS,QAAQ,SAAS;AACxB,UAAI,IAAI,QAAQ,OAAO;AACvB,UAAI,QAAQ,EAAE;AACd,UAAI;AACJ,cAAQ,OAAO;AAAA,QACb,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE,OACjD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,oBAAoB,EAAE,OACrD;AACE,gBAAM,IAAI,MAAM,8BAA8B;AAC9C,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,mBAAmB,EAAE,OACpD;AACE,gBAAM,IAAI,MAAM,wBAAwB;AACxC,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE,OACjD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,kBAAkB,EAAE,OACnD;AACE,gBAAM;AACN;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE,cAAI,MAAM,QAAQ,OAAO;AACzB,iBAAO,QAAQ,IAAI,UAAU,CAAC;AAAA,QAChC;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,cAAI,MAAM,QAAQ,IAAI;AACtB,cAAI,YAAY,QAAQ,IAAI,YAAY,CAAC;AACzC,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,UACT;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,cAAI,MAAM,QAAQ,IAAI;AACtB,cAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,QAAQ,IAAI,UAAU,CAAC,CAAC;AAC7D,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,cACL,MAAM;AAAA,cACN;AAAA,cACA,UAAU;AAAA,cACV,UAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE,OACjD;AACE,cAAI,QAAQ,QAAQ,MAAM;AAC1B,cAAI,WAAW,MAAM,WAAW,EAAE;AAClC,cAAI,WAAW;AACf,cAAI,SAAS,MAAM,WAAW,EAAE,IAAI,OAAO;AAC3C,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,YACP;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE,cAAI,OAAO,QAAQ,OAAO;AAC1B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,WAAW,KAAK,EAAE;AAAA,UACpB;AAAA,QACF;AAAA,QACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,cAAI,MAAM,QAAQ,IAAI;AACtB,gBAAM,IAAI,KAAK,EAAE,SAAS;AAC1B;AAAA,QACF;AAAA,MACJ;AACA,aAAO;AAAA,QACL,MAAM,iBAAiB,OAAO,GAAG;AAAA,MACnC;AAAA,IACF;AACA,aAAS,WAAW,SAAS;AAC3B,aAAO,QAAQ,OAAO,EAAE,UAAU,aAAa,IAAI,WAAW,iBAAiB,EAAE;AAAA,IACnF;AACA,aAAS,gBAAgB,OAAO;AAC9B,UAAI,aAAa,CAAC;AAClB,UAAI,WAAW,CAAC;AAChB,YAAM,QAAQ,SAAU,KAAK;AAC3B,YAAI,QAAQ,IAAI,KAAK;AACrB,YAAI,OAAO,IAAI,KAAK,EAAE,SAAS;AAC/B,mBAAW,IAAI,IAAI,QAAQ,KAAK;AAChC,YAAI,WAAW,KAAK,GAAG;AACrB,mBAAS,KAAK,IAAI;AAAA,QACpB;AAAA,MACF,CAAC;AACD,UAAI,MAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI,SAAS,SAAS,GAAG;AACvB,YAAI,WAAW;AAAA,MACjB;AACA,aAAO;AAAA,IACT;AACA,aAAS,mBAAmB,KAAK;AAC/B,UAAI,SAAS,IAAI,OAAO;AACxB,UAAI,OAAO,KAAK,SAAS,GAAG;AAC1B,YAAI,CAAC,OAAO,MAAM,SAAS,GAAG;AAC5B,gBAAM,IAAI,MAAM,2DAA2D;AAAA,QAC7E;AACA,YAAI,QAAQ,OAAO,IAAI,SAAU,GAAG,GAAG;AACrC,iBAAO,QAAQ,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA,QACjC,CAAC;AACD,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,UACA,UAAU,OAAO;AAAA,UACjB,UAAU,OAAO;AAAA,QACnB;AAAA,MACF;AACA,UAAI,cAAc,IAAI,IAAI,EAAE,SAAS;AACrC,UAAI,mBAAmB,gBAAgB,MAAM,GAC3C,aAAa,iBAAiB,YAC9B,WAAW,iBAAiB;AAC9B,iBAAW,uBAAuB;AAClC,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AACA,aAAS,qBAAqB,MAAM;AAClC,UAAI,oBAAoB,gBAAgB,KAAK,OAAO,CAAC,GACnD,aAAa,kBAAkB,YAC/B,WAAW,kBAAkB;AAC/B,UAAI,OAAO;AAAA,QACT,sBAAsB;AAAA,QACtB;AAAA,QACA,MAAM;AAAA,MACR;AACA,WAAK,aAAa,QAAQ,aAAa,SAAS,SAAS,SAAS,UAAU,GAAG;AAC7E,aAAK,WAAW;AAAA,MAClB;AACA,UAAI,QAAQ;AAAA,QACV,YAAY;AAAA,UACV;AAAA,QACF;AAAA,MACF;AACA,UAAI,UAAU,KAAK,QAAQ;AAC3B,UAAI,SAAS,QAAQ,SAAS,IAAI,QAAQ,QAAQ,CAAC,CAAC,IAAI,QAAQ,aAAa,IAAI,cAAc,eAAe,CAAC;AAC/G,UAAI,cAAc,KAAK,IAAI,EAAE,SAAS;AACtC,UAAI,YAAY,SAAS,GAAG;AAC1B,cAAM,cAAc;AAAA,MACtB;AACA,YAAM,uBAAuB;AAC7B,aAAO,uBAAuB;AAC9B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,aAAS,kBAAkB,KAAK;AAC9B,UAAI,cAAc,IAAI,IAAI,EAAE,SAAS;AACrC,UAAI,QAAQ,IAAI,MAAM;AACtB,UAAI,QAAQ,CAAC;AACb,YAAM,QAAQ,SAAU,OAAO;AAC7B,gBAAQ,MAAM,OAAO,EAAE,OAAO;AAAA,UAC5B,KAAK,aAAa,IAAI,yBAAyB,yBAAyB,EAAE,OACxE;AACE,gBAAI,IAAI,MAAM,SAAS;AACvB,gBAAI,QAAQ,EAAE,KAAK,EAAE,SAAS;AAC9B,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN;AAAA,cACA,YAAY;AAAA,gBACV,KAAK;AAAA,cACP;AAAA,cACA,sBAAsB;AAAA,cACtB,UAAU,CAAC,KAAK;AAAA,YAClB,CAAC;AACD;AAAA,UACF;AAAA,UACF,KAAK,aAAa,IAAI,yBAAyB,0BAA0B,EAAE,OACzE;AACE,gBAAI,KAAK,MAAM,UAAU;AACzB,gBAAI,SAAS,GAAG,KAAK,EAAE,SAAS;AAChC,kBAAM,KAAK;AAAA,cACT,MAAM;AAAA,cACN,OAAO;AAAA,cACP,YAAY;AAAA,gBACV,KAAK;AAAA,gBACL,QAAQ;AAAA,kBACN,MAAM;AAAA,kBACN,OAAO,GAAG,KAAK,EAAE,IAAI,OAAO;AAAA,gBAC9B;AAAA,cACF;AAAA,cACA,UAAU,CAAC,OAAO,QAAQ;AAAA,cAC1B,sBAAsB;AAAA,YACxB,CAAC;AAAA,UACH;AAAA,QACJ;AAAA,MACF,CAAC;AACD,UAAI,MAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI,YAAY,SAAS,GAAG;AAC1B,YAAI,cAAc;AAAA,MACpB;AACA,aAAO;AAAA,IACT;AACA,QAAI,OAAOD,SAAQ,OAAO,WAAY;AACpC,eAASa,MAAK,SAAS;AACrB,wBAAgB,MAAMA,KAAI;AAC1B,wBAAgB,MAAM,WAAW,CAAC,CAAC;AACnC,YAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,eAAK,WAAW,GAAG,OAAO,wBAAwB,OAAO;AAAA,QAC3D,WAAW,OAAO,YAAY,UAAU;AACtC,eAAK,WAAW,GAAG,OAAO,wBAAwB,OAAO,KAAK,SAAS,QAAQ,CAAC;AAAA,QAClF,OAAO;AACL,cAAI,QAAQ,WAAW,GAAG;AACxB,kBAAM,IAAI,MAAM,4CAA4C;AAAA,UAC9D;AACA,cAAI,QAAQ,QAAQ,CAAC;AACrB,cAAI,OAAO,UAAU,UAAU;AAC7B,iBAAK,UAAU,QAAQ,IAAI,SAAU,GAAG;AACtC,qBAAO,aAAa,IAAI,YAAY,QAAQ,GAAG,QAAQ;AAAA,YACzD,CAAC;AAAA,UACH,OAAO;AACL,iBAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA,aAAO,aAAaA,OAAM,CAAC;AAAA,QACzB,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ;AACtB,iBAAO,KAAK,QAAQ,OAAO,SAAU,OAAO;AAC1C,mBAAO,MAAM,OAAO,EAAE,UAAU,aAAa,IAAI,gBAAgB,sBAAsB,EAAE;AAAA,UAC3F,CAAC,EAAE,IAAI,SAAU,OAAO;AACtB,mBAAO,MAAM,WAAW;AAAA,UAC1B,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,QAAQ,MAAM;AAC5B,cAAI,QAAQ,KAAK,UAAU,IAAI;AAC/B,cAAI,MAAM,OAAO,EAAE,UAAU,aAAa,IAAI,gBAAgB,sBAAsB,EAAE,OAAO;AAC3F,kBAAM,IAAI,MAAM,GAAG,OAAO,MAAM,oBAAoB,CAAC;AAAA,UACvD;AACA,iBAAO,MAAM,WAAW;AAAA,QAC1B;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,MAAM,MAAM;AAC3C,cAAI,QAAQ;AACZ,cAAI,KAAK,KAAK,QAAQ,IAAI;AAC1B,iBAAO,GAAG,OAAO,EAAE,IAAI,SAAU,OAAO;AACtC,mBAAO,MAAM,cAAc,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,gBAAgB,MAAM,eAAe;AACnD,cAAI,MAAM,OAAO,kBAAkB,WAAW,aAAa,IAAI,MAAM,QAAQ,eAAe,QAAQ,IAAI;AACxG,cAAI,OAAO,KAAK,QAAQ,IAAI;AAC5B,cAAI,UAAU,KAAK,QAAQ;AAC3B,cAAI,QAAQ,WAAW,GAAG;AACxB,gBAAI,OAAO,IAAI,OAAO;AACtB,gBAAI,KAAK,UAAU,aAAa,IAAI,UAAU,QAAQ,EAAE,OAAO;AAC7D,oBAAM,IAAI,MAAM,sBAAsB,OAAO,KAAK,IAAI,CAAC;AAAA,YACzD;AACA,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,SAAS,GAAG;AACtB,kBAAM,IAAI,MAAM,gCAAgC;AAAA,UAClD;AACA,cAAI,SAAS,QAAQ,CAAC;AACtB,cAAI,OAAO,OAAO,EAAE,UAAU,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAAO;AAClF,mBAAO,IAAI,aAAa,GAAG,KAAK,cAAc,KAAK,OAAO,OAAO,EAAE,OAAO,CAAC,CAAC;AAAA,UAC9E;AACA,iBAAO,KAAK,cAAc,KAAK,MAAM;AAAA,QACvC;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,UAAU,MAAM;AAC9B,cAAI,QAAQ,KAAK,QAAQ,KAAK,SAAU,GAAG;AACzC,mBAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM;AAAA,UACzC,CAAC;AACD,cAAI,CAAC,OAAO;AACV,kBAAM,IAAI,MAAM,kBAAkB,OAAO,IAAI,CAAC;AAAA,UAChD;AACA,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,KAAK,IAAI;AACrC,cAAI,SAAS;AACb,cAAI,IAAI,GAAG,OAAO;AAClB,cAAI,QAAQ,EAAE;AACd,cAAI,EAAE,UAAU,aAAa,IAAI,WAAW,cAAc,EAAE,OAAO;AACjE,gBAAI,MAAM,GAAG,IAAI;AACjB,mBAAO,KAAK,YAAY,KAAK,IAAI,KAAK,EAAE,SAAS,CAAC;AAAA,UACpD;AACA,cAAI,UAAU,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAAO;AAClE,gBAAI,MAAM,GAAG,OAAO;AACpB,gBAAI,QAAQ,QAAW;AACrB,qBAAO,aAAa,IAAI,MAAM,QAAQ;AAAA,YACxC;AACA,mBAAO,KAAK,cAAc,KAAK,IAAI,UAAU,CAAC;AAAA,UAChD;AACA,kBAAQ,QAAQ,GAAG,GAAG;AAAA,YACpB,KAAK,UACH;AACE,kBAAI,uBAAuB;AAC3B,kBAAI,QAAQ,MAAM;AAChB,wBAAQ,OAAO;AAAA,kBACb,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAChD,2BAAO,aAAa,IAAI,MAAM,QAAQ;AAAA,kBACxC;AACE,0BAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,mCAAmC,CAAC;AAAA,gBAC/E;AAAA,cACF;AACA,kBAAI,eAAe,aAAa,IAAI,OAAO;AACzC,uBAAO;AAAA,cACT;AACA,kBAAI,eAAe,aAAa,SAAS;AACvC,oBAAI,GAAG,OAAO,EAAE,UAAU,aAAa,IAAI,WAAW,kBAAkB,EAAE,OAAO;AAC/E,wBAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,yCAAyC,CAAC;AAAA,gBACnF;AACA,uBAAO,IAAI,QAAQ;AAAA,cACrB;AACA,kBAAI,eAAe,aAAa,UAAU;AACxC,oBAAI,GAAG,OAAO,EAAE,UAAU,aAAa,IAAI,WAAW,kBAAkB,EAAE,OAAO;AAC/E,wBAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,yCAAyC,CAAC;AAAA,gBACnF;AACA,uBAAO,IAAI,QAAQ,EAAE,QAAQ;AAAA,cAC/B;AACA,kBAAI,eAAe,cAAc,OAAO,SAAS,GAAG,GAAG;AACrD,oBAAI,OAAO,WAAW,KAAK,GAAG;AAC9B,wBAAQ,OAAO;AAAA,kBACb,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAClD;AACE,wBAAI,SAAS,GAAG,OAAO;AACvB,wBAAI,KAAK,WAAW,OAAO,EAAE,GAAG;AAC9B,4BAAM,IAAI,UAAU,YAAY,OAAO,OAAO,EAAE,GAAG,kBAAkB,EAAE,OAAO,KAAK,MAAM,CAAC;AAAA,oBAC5F;AACA,2BAAO,aAAa,IAAI,MAAM,SAAS,IAAI;AAAA,kBAC7C;AAAA,kBACF,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE;AACjD,2BAAO,aAAa,IAAI,MAAM,SAAS,IAAI;AAAA,kBAC7C;AACE,0BAAM,IAAI,UAAU,iBAAiB,OAAO,IAAI,kCAAkC,CAAC;AAAA,gBACvF;AAAA,cACF;AACA,kBAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,wBAAQ,OAAO;AAAA,kBACb,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,wBAAI,MAAM,GAAG,IAAI;AACjB,wBAAI,cAAc,IAAI,YAAY;AAClC,2BAAO,aAAa,IAAI,MAAM,OAAO,IAAI,IAAI,SAAUC,IAAG;AACxD,6BAAO,OAAO,cAAcA,IAAG,WAAW;AAAA,oBAC5C,CAAC,CAAC;AAAA,kBACJ;AAAA,kBACF,KAAK,aAAa,IAAI,WAAW,gBAAgB,EAAE,OACjD;AACE,wBAAI,MAAM,GAAG,MAAM;AACnB,wBAAI,WAAW,IAAI,WAAW;AAC9B,wBAAI,IAAI,WAAW,SAAS,QAAQ;AAClC,4BAAM,IAAI,UAAU,iBAAiB,OAAO,SAAS,QAAQ,eAAe,EAAE,OAAO,IAAI,QAAQ,gBAAgB,CAAC;AAAA,oBACpH;AACA,2BAAO,aAAa,IAAI,MAAM,OAAO,IAAI,IAAI,SAAUA,IAAG,GAAG;AAC3D,6BAAO,OAAO,cAAcA,IAAG,SAAS,CAAC,CAAC;AAAA,oBAC5C,CAAC,CAAC;AAAA,kBACJ;AAAA,kBACF,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE,OAC/C;AACE,wBAAI,MAAM,GAAG,IAAI;AACjB,wBAAI,UAAU,IAAI,QAAQ;AAC1B,wBAAI,YAAY,IAAI,UAAU;AAC9B,2BAAO,aAAa,IAAI,MAAM,OAAO,IAAI,IAAI,SAAU,OAAO;AAC5D,0BAAIC,OAAM,OAAO,cAAc,MAAM,CAAC,GAAG,OAAO;AAChD,0BAAI,SAAS,OAAO,cAAc,MAAM,CAAC,GAAG,SAAS;AACrD,6BAAO,IAAI,aAAa,IAAI,WAAW;AAAA,wBACrC,KAAKA;AAAA,wBACL,KAAK;AAAA,sBACP,CAAC;AAAA,oBACH,CAAC,CAAC;AAAA,kBACJ;AAAA,kBACF;AACE,0BAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,mCAAmC,CAAC;AAAA,gBAC/E;AAAA,cACF;AACA,kBAAI,IAAI,gBAAgB,KAAK;AAC3B,oBAAI,UAAU,aAAa,IAAI,WAAW,cAAc,EAAE,OAAO;AAC/D,wBAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,iCAAiC,CAAC;AAAA,gBAC3E;AACA,oBAAI,QAAQ,GAAG,IAAI;AACnB,oBAAI,OAAO;AACX,oBAAI,UAAU,CAAC;AACf,oBAAI,SAAS,KAAK,QAAQ;AAC1B,oBAAI,MAAM,OAAO,KAAK;AACtB,uBAAO,CAAC,IAAI,MAAM;AAChB,sBAAI,aAAa,eAAe,IAAI,OAAO,CAAC,GAC1C,IAAI,WAAW,CAAC,GAChB,IAAI,WAAW,CAAC;AAClB,sBAAI,MAAM,KAAK,cAAc,GAAG,MAAM,QAAQ,CAAC;AAC/C,sBAAI,SAAS,KAAK,cAAc,GAAG,MAAM,UAAU,CAAC;AACpD,0BAAQ,KAAK,IAAI,aAAa,IAAI,WAAW;AAAA,oBAC3C;AAAA,oBACA,KAAK;AAAA,kBACP,CAAC,CAAC;AACF,wBAAM,OAAO,KAAK;AAAA,gBACpB;AACA,uBAAO,aAAa,IAAI,MAAM,OAAO,OAAO;AAAA,cAC9C;AACA,oBAAM,yBAAyB,mBAAmB,IAAI,iBAAiB,QAAQ,qBAAqB,SAAS,SAAS,iBAAiB,UAAU,QAAQ,0BAA0B,SAAS,wBAAwB,QAAQ,UAAU;AACpO,oBAAI;AACJ,sBAAM,IAAI,UAAU,oBAAoB,QAAQ,oBAAoB,IAAI,iBAAiB,QAAQ,sBAAsB,SAAS,SAAS,kBAAkB,MAAM,mBAAmB,EAAE,OAAO,KAAK,UAAU,GAAG,GAAG,GAAG,CAAC;AAAA,cACxN;AACA,oBAAM,IAAI,UAAU,mBAAmB,OAAO,KAAK,oCAAoC,EAAE,OAAO,EAAE,CAAC;AAAA,YACrG;AAAA,YACF,KAAK;AAAA,YACL,KAAK,UACH;AACE,sBAAQ,OAAO;AAAA,gBACb,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAC/C,yBAAO,aAAa,IAAI,MAAM,OAAO,GAAG;AAAA,gBAC1C,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAC/C,yBAAO,aAAa,IAAI,MAAM,OAAO,GAAG;AAAA,gBAC1C,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAAA,gBACjD,KAAK,aAAa,IAAI,WAAW,cAAc,EAAE;AAAA,gBACjD,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAAA,gBAClD,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAAA,gBAClD,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAAA,gBAClD,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE,OAChD;AACE,sBAAI,UAAU,EAAE,KAAK,UAAU,EAAE,EAAE,YAAY;AAC/C,yBAAO,IAAI,aAAa,YAAY,SAAS,GAAG,EAAE,QAAQ;AAAA,gBAC5D;AAAA,gBACF;AACE,wBAAM,IAAI,UAAU,iBAAiB,OAAO,IAAI,yBAAyB,CAAC;AAAA,cAC9E;AAAA,YACF;AAAA,YACF,KAAK;AACH,qBAAO,cAAc,KAAK,CAAC;AAAA,YAC7B,KAAK,WACH;AACE,kBAAI,UAAU,aAAa,IAAI,WAAW,eAAe,EAAE,OAAO;AAChE,sBAAM,UAAU,QAAQ,OAAO,IAAI,mCAAmC,CAAC;AAAA,cACzE;AACA,qBAAO,aAAa,IAAI,MAAM,QAAQ,GAAG;AAAA,YAC3C;AAAA,YACF,KAAK,aACH;AACE,kBAAI,CAAC,IAAI;AACP,uBAAO,aAAa,IAAI,MAAM,QAAQ;AAAA,cACxC;AACA,sBAAQ,OAAO;AAAA,gBACb,KAAK,aAAa,IAAI,WAAW,eAAe,EAAE;AAAA,gBAClD,KAAK,aAAa,IAAI,WAAW,iBAAiB,EAAE;AAClD,yBAAO,aAAa,IAAI,MAAM,QAAQ;AAAA,gBACxC;AACE,wBAAM,IAAI,UAAU,QAAQ,OAAO,IAAI,wCAAwC,CAAC;AAAA,cACpF;AAAA,YACF;AAAA,YACF,KAAK;AACH,qBAAO,KAAK,cAAc,IAAI,GAAG,EAAE;AAAA,YACrC;AACE,oBAAM,IAAI,UAAU,4BAA4B,OAAO,QAAQ,GAAG,GAAG,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC;AAAA,UAC/F;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,YAAY,KAAK,MAAM;AACrC,cAAI,QAAQ,KAAK,UAAU,IAAI;AAC/B,kBAAQ,MAAM,OAAO,GAAG;AAAA,YACtB,KAAK,aAAa,IAAI,gBAAgB,qBAAqB;AACzD,kBAAI,OAAO,QAAQ,UAAU;AAC3B,sBAAM,IAAI,UAAU,4BAA4B,OAAO,MAAM,YAAY,EAAE,OAAO,QAAQ,GAAG,CAAC,CAAC;AAAA,cACjG;AACA,qBAAO,KAAK,aAAa,KAAK,MAAM,UAAU,CAAC;AAAA,YACjD,KAAK,aAAa,IAAI,gBAAgB,uBAAuB;AAC3D,qBAAO,KAAK,eAAe,KAAK,MAAM,YAAY,CAAC;AAAA,YACrD,KAAK,aAAa,IAAI,gBAAgB,sBAAsB;AAC1D,qBAAO,KAAK,cAAc,KAAK,MAAM,WAAW,CAAC;AAAA,YACnD;AACE,oBAAM,IAAI,MAAM,uBAAuB,OAAO,IAAI,CAAC;AAAA,UACvD;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,KAAK,QAAQ;AACzC,cAAI,SAAS;AACb,cAAI,YAAY,IAAI;AACpB,cAAI,YAAY,OAAO,MAAM,EAAE,KAAK,SAAU,OAAO;AACnD,gBAAI,QAAQ,MAAM,MAAM,EAAE,KAAK,EAAE,SAAS;AAC1C,mBAAO,UAAU;AAAA,UACnB,CAAC;AACD,cAAI,CAAC,WAAW;AACd,kBAAM,IAAI,UAAU,uBAAuB,OAAO,WAAW,MAAM,EAAE,OAAO,MAAM,CAAC;AAAA,UACrF;AACA,cAAI,MAAM,aAAa,IAAI,MAAM,UAAU,SAAS;AACpD,kBAAQ,UAAU,OAAO,GAAG;AAAA,YAC1B,KAAK,aAAa,IAAI,yBAAyB,yBAAyB,GACtE;AACE,qBAAO,aAAa,IAAI,MAAM,OAAO,CAAC,GAAG,CAAC;AAAA,YAC5C;AAAA,YACF,KAAK,aAAa,IAAI,yBAAyB,0BAA0B,GACvE;AACE,kBAAI,QAAQ,UAAU,UAAU,EAAE,KAAK;AACvC,kBAAI,MAAM,QAAQ,IAAI,MAAM,GAAG;AAC7B,oBAAI,IAAI,OAAO,WAAW,MAAM,QAAQ;AACtC,wBAAM,IAAI,UAAU,SAAS,OAAO,QAAQ,WAAW,EAAE,OAAO,MAAM,QAAQ,mBAAmB,EAAE,OAAO,IAAI,OAAO,MAAM,CAAC;AAAA,gBAC9H;AACA,oBAAI,SAAS,IAAI,OAAO,IAAI,SAAU,GAAG,GAAG;AAC1C,yBAAO,OAAO,cAAc,GAAG,MAAM,CAAC,CAAC;AAAA,gBACzC,CAAC;AACD,uBAAO,QAAQ,GAAG;AAClB,uBAAO,aAAa,IAAI,MAAM,OAAO,MAAM;AAAA,cAC7C;AACA,oBAAM,IAAI,MAAM,8BAA8B,OAAO,WAAW,QAAQ,EAAE,OAAO,GAAG,CAAC;AAAA,YACvF;AAAA,YACF;AACE,oBAAM,IAAI,MAAM,yBAAyB,OAAO,QAAQ,QAAQ,EAAE,OAAO,GAAG,CAAC;AAAA,UACjF;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,KAAK,QAAQ;AAC1C,cAAI,SAAS;AACb,cAAI,SAAS,OAAO,OAAO;AAC3B,cAAI,OAAO,KAAK,SAAS,GAAG;AAC1B,gBAAI,CAAC,OAAO,MAAM,SAAS,GAAG;AAC5B,oBAAM,IAAI,MAAM,2DAA2D;AAAA,YAC7E;AACA,mBAAO,aAAa,IAAI,MAAM,OAAO,OAAO,IAAI,SAAU,GAAG,GAAG;AAC9D,qBAAO,OAAO,cAAc,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA,YACtD,CAAC,CAAC;AAAA,UACJ;AACA,iBAAO,aAAa,IAAI,MAAM,OAAO,OAAO,IAAI,SAAU,OAAO;AAC/D,gBAAI,OAAO,MAAM,KAAK,EAAE,SAAS;AACjC,mBAAO,IAAI,aAAa,IAAI,WAAW;AAAA,cACrC,KAAK,OAAO,cAAc,MAAM,aAAa,IAAI,cAAc,iBAAiB,CAAC;AAAA,cACjF,KAAK,OAAO,cAAc,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC;AAAA,YACnD,CAAC;AAAA,UACH,CAAC,CAAC;AAAA,QACJ;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa,KAAK,OAAO;AACvC,cAAI,MAAM,MAAM,EAAE,KAAK,SAAU,OAAO;AACtC,mBAAO,MAAM,MAAM,MAAM;AAAA,UAC3B,CAAC,GAAG;AACF,mBAAO,aAAa,IAAI,MAAM,OAAO,GAAG;AAAA,UAC1C;AACA,gBAAM,IAAI,UAAU,uBAAuB,OAAO,KAAK,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,QAC9E;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,KAAK,SAAS;AAC7C,iBAAO,KAAK,cAAc,aAAa,IAAI,MAAM,QAAQ,KAAK,QAAQ,GAAG,OAAO;AAAA,QAClF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,KAAK,SAAS;AAC1C,cAAI,SAAS;AACb,cAAI,IAAI,QAAQ,OAAO;AACvB,cAAI,QAAQ,EAAE;AACd,cAAI,UAAU,aAAa,IAAI,WAAW,cAAc,EAAE,OAAO;AAC/D,mBAAO,KAAK,iBAAiB,KAAK,QAAQ,IAAI,CAAC;AAAA,UACjD;AACA,kBAAQ,IAAI,OAAO,EAAE,OAAO;AAAA,YAC1B,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AACxC,qBAAO;AAAA,YACT,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE;AAAA,YACzC,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE;AAAA,YACzC,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,YAC1C,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,YAC1C,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,YAC1C,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AACxC,sBAAQ,GAAG,aAAa,eAAe,GAAG;AAAA,YAC5C,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE,OACvC;AACE,kBAAI,UAAU,aAAa,IAAI,WAAW,cAAc,EAAE,OAAO;AAC/D,oBAAI;AACJ,oBAAI,MAAM,QAAQ,IAAI;AACtB,yBAAS,WAAW,IAAI,IAAI,OAAO,QAAQ,aAAa,SAAS,WAAW,CAAC,GAAG,IAAI,SAAU,KAAK;AACjG,yBAAO,OAAO,cAAc,KAAK,IAAI,YAAY,CAAC;AAAA,gBACpD,CAAC;AAAA,cACH;AACA,kBAAI,UAAU,aAAa,IAAI,WAAW,gBAAgB,EAAE,OAAO;AACjE,oBAAI;AACJ,oBAAI,QAAQ,QAAQ,MAAM;AAC1B,oBAAI,WAAW,MAAM,WAAW;AAChC,yBAAS,YAAY,IAAI,IAAI,OAAO,QAAQ,cAAc,SAAS,YAAY,CAAC,GAAG,IAAI,SAAU,KAAK,GAAG;AACvG,yBAAO,OAAO,cAAc,KAAK,SAAS,CAAC,CAAC;AAAA,gBAC9C,CAAC;AAAA,cACH;AACA,oBAAM,IAAI,UAAU,QAAQ,OAAO,SAAS,oBAAoB,EAAE,OAAO,KAAK,KAAK,CAAC;AAAA,YACtF;AAAA,YACF,KAAK,aAAa,IAAI,UAAU,WAAW,EAAE;AAC3C,qBAAO,aAAa,QAAQ,UAAU,GAAG,EAAE,SAAS;AAAA,YACtD,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE,OACvC;AACE,kBAAI;AACJ,kBAAI,OAAO,WAAW,IAAI,IAAI,OAAO,QAAQ,aAAa,SAAS,WAAW,CAAC;AAC/E,kBAAI,UAAU,aAAa,IAAI,WAAW,cAAc,EAAE,OAAO;AAC/D,oBAAI,QAAQ,QAAQ,IAAI;AACxB,oBAAI,UAAU,MAAM,QAAQ;AAC5B,oBAAI,YAAY,MAAM,UAAU;AAChC,oBAAI,MAAM,IAAI,IAAI,SAAU,OAAO;AACjC,yBAAO,CAAC,OAAO,cAAc,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,cAAc,MAAM,IAAI,GAAG,SAAS,CAAC;AAAA,gBAClG,CAAC;AACD,uBAAO;AAAA,cACT;AACA,oBAAM,IAAI,UAAU,cAAc,OAAO,EAAE,MAAM,oBAAoB,EAAE,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC;AAAA,YACpH;AAAA,YACF,KAAK,aAAa,IAAI,UAAU,QAAQ,EAAE;AAAA,YAC1C,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE;AAAA,YACzC,KAAK,aAAa,IAAI,UAAU,OAAO,EAAE;AAAA,YACzC,KAAK,aAAa,IAAI,UAAU,SAAS,EAAE;AACzC,qBAAO,IAAI,MAAM;AAAA,YACnB,KAAK,aAAa,IAAI,UAAU,UAAU,EAAE;AAAA,YAC5C,KAAK,aAAa,IAAI,UAAU,UAAU,EAAE,OAC1C;AACE,kBAAI;AACJ,kBAAI,UAAU,aAAa,IAAI,WAAW,iBAAiB,EAAE,SAAS,UAAU,aAAa,IAAI,WAAW,iBAAiB,EAAE,OAAO;AACpI,sBAAM,IAAI,MAAM,cAAc,OAAO,EAAE,MAAM,iCAAiC,EAAE,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC,GAAG,KAAK,CAAC;AAAA,cAC7H;AACA,sBAAQ,aAAa,IAAI,MAAM,OAAO,QAAQ,eAAe,SAAS,SAAS,WAAW,SAAS;AAAA,YACrG;AAAA,YACF,KAAK,aAAa,IAAI,UAAU,aAAa,EAAE;AAAA,YAC/C,KAAK,aAAa,IAAI,UAAU,YAAY,EAAE;AAC5C,sBAAQ,GAAG,aAAa,eAAe,aAAa,IAAI,MAAM,OAAO,IAAI,IAAI,CAAC,CAAC;AAAA,YACjF;AACE,oBAAM,IAAI,UAAU,qBAAqB,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC,GAAG,4BAA4B,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,UAC9H;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,iBAAiB,KAAK,KAAK;AACzC,cAAI,QAAQ,KAAK,UAAU,IAAI,KAAK,EAAE,SAAS,CAAC;AAChD,kBAAQ,MAAM,OAAO,GAAG;AAAA,YACtB,KAAK,aAAa,IAAI,gBAAgB,qBAAqB;AACzD,qBAAO,KAAK,aAAa,GAAG;AAAA,YAC9B,KAAK,aAAa,IAAI,gBAAgB,uBAAuB;AAC3D,qBAAO,KAAK,eAAe,KAAK,MAAM,YAAY,CAAC;AAAA,YACrD,KAAK,aAAa,IAAI,gBAAgB,sBAAsB;AAC1D,qBAAO,KAAK,cAAc,KAAK,MAAM,WAAW,CAAC;AAAA,YACnD;AACE,oBAAM,IAAI,MAAM,uBAAuB,OAAO,IAAI,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,KAAK,CAAC;AAAA,UAC5F;AAAA,QACF;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,cAAc,KAAK,KAAK;AACtC,cAAI,SAAS;AACb,cAAI,MAAM,IAAI,IAAI;AAClB,cAAI,CAAC,KAAK;AACR,kBAAM,IAAI,MAAM,GAAG,OAAO,KAAK,UAAU,KAAK,MAAM,CAAC,GAAG,eAAe,CAAC;AAAA,UAC1E;AACA,cAAI,IAAI,WAAW,KAAK,IAAI,MAAM,WAAW,GAAG;AAC9C,kBAAM,IAAI,MAAM,GAAG,OAAO,KAAK,iEAAiE,CAAC;AAAA,UACnG;AACA,cAAI,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS;AACjC,cAAI,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,aAAa,IAAI,UAAU,UAAU,EAAE,OAAO;AAC1E,kBAAM,IAAI,MAAM,0BAA0B;AAAA,UAC5C;AACA,cAAI,QAAQ,IAAI,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC;AAC3C,cAAI,CAAC,OAAO;AACV,kBAAM,IAAI,MAAM,wBAAwB,OAAO,MAAM,mCAAmC,CAAC;AAAA,UAC3F;AACA,cAAI,MAAM;AAAA,YACR,KAAK;AAAA,UACP;AACA,cAAI,MAAM,OAAO,EAAE,UAAU,aAAa,IAAI,yBAAyB,0BAA0B,EAAE,OAAO;AACxG,gBAAI,QAAQ,MAAM,UAAU;AAC5B,gBAAI,KAAK,MAAM,KAAK;AACpB,gBAAI,SAAS,GAAG,IAAI,SAAU,GAAG,GAAG;AAClC,qBAAO,OAAO,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC;AAAA,YAC3C,CAAC;AACD,gBAAI,SAAS;AAAA,UACf;AACA,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,eAAe,KAAK,KAAK;AACvC,cAAI,SAAS,MACX;AACF,cAAI,MAAM,CAAC;AACX,cAAI,SAAS,IAAI,OAAO;AACxB,cAAI,OAAO,KAAK,SAAS,GAAG;AAC1B,gBAAI;AACJ,gBAAI,KAAK,WAAW,IAAI,IAAI,OAAO,QAAQ,aAAa,SAAS,SAAS,SAAS,IAAI,SAAU,OAAO,GAAG;AACzG,qBAAO,OAAO,cAAc,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC;AAAA,YACrD,CAAC;AACD,mBAAO;AAAA,UACT;AACA,WAAC,WAAW,IAAI,IAAI,OAAO,QAAQ,aAAa,UAAU,SAAS,QAAQ,SAAU,OAAO,GAAG;AAC7F,gBAAI,QAAQ,OAAO,CAAC;AACpB,gBAAI,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,OAAO,cAAc,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC;AAAA,UAC/E,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa,KAAK;AAChC,cAAI,IAAI,OAAO,EAAE,UAAU,aAAa,IAAI,UAAU,OAAO,EAAE,OAAO;AACpE,kBAAM,IAAI,MAAM,4BAA4B;AAAA,UAC9C;AACA,cAAI,MAAM,IAAI,IAAI;AAClB,iBAAO;AAAA,QACT;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,aAAa;AAC3B,iBAAO,KAAK,QAAQ,OAAO,SAAU,OAAO;AAC1C,mBAAO,MAAM,OAAO,EAAE,UAAU,aAAa,IAAI,gBAAgB,0BAA0B,EAAE;AAAA,UAC/F,CAAC,EAAE,QAAQ,SAAU,OAAO;AAC1B,mBAAO,MAAM,MAAM,EAAE,MAAM;AAAA,UAC7B,CAAC;AAAA,QACH;AAAA,MACF,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAO,SAAS,WAAW,UAAU;AACnC,cAAI,cAAc,CAAC;AACnB,eAAK,QAAQ,QAAQ,SAAU,OAAO;AACpC,oBAAQ,MAAM,OAAO,EAAE,OAAO;AAAA,cAC5B,KAAK,aAAa,IAAI,gBAAgB,qBAAqB,EAAE,OAC3D;AACE,oBAAI,MAAM,MAAM,UAAU;AAC1B,4BAAY,IAAI,KAAK,EAAE,SAAS,CAAC,IAAI,iBAAiB,GAAG;AACzD;AAAA,cACF;AAAA,cACF,KAAK,aAAa,IAAI,gBAAgB,uBAAuB,EAAE,OAC7D;AACE,oBAAI,OAAO,MAAM,YAAY;AAC7B,4BAAY,KAAK,KAAK,EAAE,SAAS,CAAC,IAAI,mBAAmB,IAAI;AAC7D;AAAA,cACF;AAAA,cACF,KAAK,aAAa,IAAI,gBAAgB,sBAAsB,EAAE,OAC5D;AACE,oBAAI,QAAQ,MAAM,WAAW;AAC7B,4BAAY,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,kBAAkB,KAAK;AAC9D;AAAA,cACF;AAAA,cACF,KAAK,aAAa,IAAI,gBAAgB,sBAAsB,EAAE,OAC5D;AACE,oBAAI,KAAK,MAAM,WAAW;AAC1B,oBAAI,SAAS,GAAG,KAAK,EAAE,SAAS;AAChC,oBAAI,wBAAwB,qBAAqB,EAAE,GACjD,QAAQ,sBAAsB;AAChC,4BAAY,MAAM,IAAI;AACtB;AAAA,cACF;AAAA,cACF,KAAK,aAAa,IAAI,gBAAgB,0BAA0B,EAAE,OAChE;AAAA,cAAC;AAAA,YACL;AAAA,UACF,CAAC;AACD,cAAI,MAAM;AAAA,YACR,SAAS;AAAA,YACT,aAAa,cAAc,cAAc,CAAC,GAAG,oBAAoB,GAAG,WAAW;AAAA,UACjF;AACA,cAAI,UAAU;AACZ,gBAAI,OAAO,iBAAiB,OAAO,QAAQ;AAAA,UAC7C;AACA,iBAAO;AAAA,QACT;AAAA,MACF,CAAC,GAAG,CAAC;AAAA,QACH,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,YAAY,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,MAAM;AACxE,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,2BAAS,IAAI;AACb,0BAAQ,GAAG,OAAO,cAAc,IAAI;AAAA,gBACtC,KAAK;AACH,yBAAO,SAAS;AAChB,yBAAO,SAAS,EAAE,GAAG,IAAIF,MAAK,IAAI,CAAC;AAAA,cACvC;AAAA,YACF,GAAG,OAAO;AAAA,UACZ,CAAC,CAAC;AACF,mBAAS,SAAS,IAAI;AACpB,mBAAO,UAAU,MAAM,MAAM,SAAS;AAAA,UACxC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;ACxhCF,IAAAG,kBAAA;AAAA,6DAAAC,UAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeD,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,SAAS;AACjB,QAAI,eAAe;AACnB,QAAI,QAAQ;AACZ,QAAI,OAAO;AACX,QAAI,yBAAyB;AAC7B,QAAI,YAAY,CAAC,QAAQ;AAAzB,QACE,aAAa,CAAC,YAAY,QAAQ,UAAU,OAAO,oBAAoB,UAAU;AACnF,aAAS,eAAe;AAAE,UAAI,GAAG,GAAG,IAAI,cAAc,OAAO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,cAAc,IAAI,EAAE,eAAe;AAAiB,eAAS,EAAEE,IAAGC,IAAGF,IAAGG,IAAG;AAAE,YAAIC,KAAIF,MAAKA,GAAE,qBAAqB,YAAYA,KAAI,WAAWG,KAAI,OAAO,OAAOD,GAAE,SAAS;AAAG,eAAO,oBAAoBC,IAAG,WAAW,SAAUJ,IAAGC,IAAGF,IAAG;AAAE,cAAIG,IAAGC,IAAGC,IAAGC,KAAI,GAAG,IAAIN,MAAK,CAAC,GAAG,IAAI,OAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,SAASO,GAAEC,IAAGP,IAAG;AAAE,mBAAOE,KAAIK,IAAGJ,KAAI,GAAGC,KAAI,GAAG,EAAE,IAAIJ,IAAG;AAAA,UAAG,EAAE;AAAG,mBAAS,EAAEA,IAAGC,IAAG;AAAE,iBAAKE,KAAIH,IAAGI,KAAIH,IAAG,IAAI,GAAG,CAAC,KAAKI,MAAK,CAACN,MAAK,IAAI,EAAE,QAAQ,KAAK;AAAE,kBAAIA,IAAGG,KAAI,EAAE,CAAC,GAAGI,KAAI,EAAE,GAAG,IAAIJ,GAAE,CAAC;AAAG,cAAAF,KAAI,KAAKD,KAAI,MAAME,QAAOG,KAAIF,IAAGC,KAAID,GAAE,CAAC,KAAK,KAAKC,KAAI,GAAG,EAAE,GAAGD,GAAE,CAAC,IAAIA,GAAE,CAAC,IAAI,KAAKA,GAAE,CAAC,KAAKI,QAAOP,KAAIC,KAAI,KAAKM,KAAIJ,GAAE,CAAC,MAAMC,KAAI,GAAG,EAAE,IAAIF,IAAG,EAAE,IAAIC,GAAE,CAAC,KAAKI,KAAI,MAAMP,KAAIC,KAAI,KAAKE,GAAE,CAAC,IAAID,MAAKA,KAAI,OAAOC,GAAE,CAAC,IAAIF,IAAGE,GAAE,CAAC,IAAID,IAAG,EAAE,IAAI,GAAGE,KAAI;AAAA,YAAK;AAAE,gBAAIJ,MAAKC,KAAI,EAAG,QAAO;AAAG,kBAAM,IAAI,MAAIC;AAAA,UAAG;AAAE,iBAAO,SAAUF,IAAGS,IAAG,GAAG;AAAE,gBAAIH,KAAI,EAAG,OAAM,UAAU,8BAA8B;AAAG,iBAAK,KAAK,MAAMG,MAAK,EAAEA,IAAG,CAAC,GAAGL,KAAIK,IAAGJ,KAAI,IAAI,IAAID,KAAI,IAAI,IAAIC,OAAM,CAAC,KAAI;AAAE,cAAAF,OAAMC,KAAIA,KAAI,KAAKA,KAAI,MAAM,EAAE,IAAI,KAAK,EAAEA,IAAGC,EAAC,KAAK,EAAE,IAAIA,KAAI,EAAE,IAAIA;AAAI,kBAAI;AAAE,oBAAIC,KAAI,GAAGH,IAAG;AAAE,sBAAIC,OAAMJ,KAAI,SAAS,IAAIG,GAAEH,EAAC,GAAG;AAAE,wBAAI,EAAE,IAAI,EAAE,KAAKG,IAAGE,EAAC,GAAI,OAAM,UAAU,kCAAkC;AAAG,wBAAI,CAAC,EAAE,KAAM,QAAO;AAAG,oBAAAA,KAAI,EAAE,OAAOD,KAAI,MAAMA,KAAI;AAAA,kBAAI,MAAO,OAAMA,OAAM,IAAID,GAAE,WAAW,EAAE,KAAKA,EAAC,GAAGC,KAAI,MAAMC,KAAI,UAAU,sCAAsCL,KAAI,UAAU,GAAGI,KAAI;AAAI,kBAAAD,KAAI;AAAA,gBAAG,YAAY,KAAK,IAAI,EAAE,IAAI,KAAKE,KAAIJ,GAAE,KAAKC,IAAG,CAAC,OAAO,EAAG;AAAA,cAAO,SAASM,IAAG;AAAE,gBAAAL,KAAI,GAAGC,KAAI,GAAGC,KAAIG;AAAA,cAAG,UAAE;AAAU,gBAAAF,KAAI;AAAA,cAAG;AAAA,YAAE;AAAE,mBAAO,EAAE,OAAO,GAAG,MAAM,EAAE;AAAA,UAAG;AAAA,QAAG,EAAEL,IAAGD,IAAGG,EAAC,GAAG,IAAE,GAAGE;AAAA,MAAG;AAAE,UAAI,IAAI,CAAC;AAAG,eAAS,YAAY;AAAA,MAAC;AAAE,eAAS,oBAAoB;AAAA,MAAC;AAAE,eAAS,6BAA6B;AAAA,MAAC;AAAE,UAAI,OAAO;AAAgB,UAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,IAAI,IAAI,2BAA2B,YAAY,UAAU,YAAY,OAAO,OAAO,CAAC;AAAG,eAAS,EAAEK,IAAG;AAAE,eAAO,OAAO,iBAAiB,OAAO,eAAeA,IAAG,0BAA0B,KAAKA,GAAE,YAAY,4BAA4B,oBAAoBA,IAAG,GAAG,mBAAmB,IAAIA,GAAE,YAAY,OAAO,OAAO,CAAC,GAAGA;AAAA,MAAG;AAAE,aAAO,kBAAkB,YAAY,4BAA4B,oBAAoB,GAAG,eAAe,0BAA0B,GAAG,oBAAoB,4BAA4B,eAAe,iBAAiB,GAAG,kBAAkB,cAAc,qBAAqB,oBAAoB,4BAA4B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,oBAAoB,GAAG,GAAG,WAAW,GAAG,oBAAoB,GAAG,GAAG,WAAY;AAAE,eAAO;AAAA,MAAM,CAAC,GAAG,oBAAoB,GAAG,YAAY,WAAY;AAAE,eAAO;AAAA,MAAsB,CAAC,IAAI,eAAe,SAASC,gBAAe;AAAE,eAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,MAAG,GAAG;AAAA,IAAG;AAC5uF,aAAS,oBAAoB,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO;AAAgB,UAAI;AAAE,UAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAAA,MAAG,SAASD,IAAG;AAAE,YAAI;AAAA,MAAG;AAAE,4BAAsB,SAAS,mBAAmBA,IAAGT,IAAGC,IAAGM,IAAG;AAAE,iBAAS,EAAEP,IAAGC,IAAG;AAAE,8BAAoBQ,IAAGT,IAAG,SAAUS,IAAG;AAAE,mBAAO,KAAK,QAAQT,IAAGC,IAAGQ,EAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAAE,QAAAT,KAAI,IAAI,EAAES,IAAGT,IAAG,EAAE,OAAOC,IAAG,YAAY,CAACM,IAAG,cAAc,CAACA,IAAG,UAAU,CAACA,GAAE,CAAC,IAAIE,GAAET,EAAC,IAAIC,MAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;AAAA,MAAI,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACpc,aAAS,QAAQ,GAAG,GAAG;AAAE,UAAI,IAAI,OAAO,KAAK,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,cAAM,IAAI,EAAE,OAAO,SAAUD,IAAG;AAAE,iBAAO,OAAO,yBAAyB,GAAGA,EAAC,EAAE;AAAA,QAAY,CAAC,IAAI,EAAE,KAAK,MAAM,GAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AAC9P,aAAS,cAAc,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAAE,YAAI,IAAI,QAAQ,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC;AAAG,YAAI,IAAI,QAAQ,OAAO,CAAC,GAAG,IAAE,EAAE,QAAQ,SAAUA,IAAG;AAAE,0BAAgB,GAAGA,IAAG,EAAEA,EAAC,CAAC;AAAA,QAAG,CAAC,IAAI,OAAO,4BAA4B,OAAO,iBAAiB,GAAG,OAAO,0BAA0B,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,EAAE,QAAQ,SAAUA,IAAG;AAAE,iBAAO,eAAe,GAAGA,IAAG,OAAO,yBAAyB,GAAGA,EAAC,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtb,aAAS,yBAAyB,GAAG,GAAG;AAAE,UAAI,QAAQ,EAAG,QAAO,CAAC;AAAG,UAAI,GAAG,GAAG,IAAI,8BAA8B,GAAG,CAAC;AAAG,UAAI,OAAO,uBAAuB;AAAE,YAAI,IAAI,OAAO,sBAAsB,CAAC;AAAG,aAAK,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,MAAI;AAAE,aAAO;AAAA,IAAG;AACrU,aAAS,8BAA8B,GAAG,GAAG;AAAE,UAAI,QAAQ,EAAG,QAAO,CAAC;AAAG,UAAI,IAAI,CAAC;AAAG,eAAS,KAAK,EAAG,KAAI,CAAC,EAAE,eAAe,KAAK,GAAG,CAAC,GAAG;AAAE,YAAI,OAAO,EAAE,QAAQ,CAAC,EAAG;AAAU,UAAE,CAAC,IAAI,EAAE,CAAC;AAAA,MAAG;AAAE,aAAO;AAAA,IAAG;AACtM,aAAS,gBAAgB,GAAG,GAAG;AAAE,UAAI,EAAE,aAAa,GAAI,OAAM,IAAI,UAAU,mCAAmC;AAAA,IAAG;AAClH,aAAS,kBAAkB,GAAG,GAAG;AAAE,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAAE,YAAI,IAAI,EAAE,CAAC;AAAG,UAAE,aAAa,EAAE,cAAc,OAAI,EAAE,eAAe,MAAI,WAAW,MAAM,EAAE,WAAW,OAAK,OAAO,eAAe,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC;AAAA,MAAG;AAAA,IAAE;AACvO,aAAS,aAAa,GAAG,GAAG,GAAG;AAAE,aAAO,KAAK,kBAAkB,EAAE,WAAW,CAAC,GAAG,KAAK,kBAAkB,GAAG,CAAC,GAAG,OAAO,eAAe,GAAG,aAAa,EAAE,UAAU,MAAG,CAAC,GAAG;AAAA,IAAG;AAC1K,aAAS,gBAAgB,GAAG,GAAG,GAAG;AAAE,cAAQ,IAAI,eAAe,CAAC,MAAM,IAAI,OAAO,eAAe,GAAG,GAAG,EAAE,OAAO,GAAG,YAAY,MAAI,cAAc,MAAI,UAAU,KAAG,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG;AAAA,IAAG;AACnL,aAAS,eAAe,GAAG;AAAE,UAAI,IAAI,aAAa,GAAG,QAAQ;AAAG,aAAO,YAAY,QAAQ,CAAC,IAAI,IAAI,IAAI;AAAA,IAAI;AAC5G,aAAS,aAAa,GAAG,GAAG;AAAE,UAAI,YAAY,QAAQ,CAAC,KAAK,CAAC,EAAG,QAAO;AAAG,UAAI,IAAI,EAAE,OAAO,WAAW;AAAG,UAAI,WAAW,GAAG;AAAE,YAAI,IAAI,EAAE,KAAK,GAAG,KAAK,SAAS;AAAG,YAAI,YAAY,QAAQ,CAAC,EAAG,QAAO;AAAG,cAAM,IAAI,UAAU,8CAA8C;AAAA,MAAG;AAAE,cAAQ,aAAa,IAAI,SAAS,QAAQ,CAAC;AAAA,IAAG;AAC3T,aAAS,mBAAmB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAAE,UAAI;AAAE,YAAI,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE;AAAA,MAAO,SAASC,IAAG;AAAE,eAAO,KAAK,EAAEA,EAAC;AAAA,MAAG;AAAE,QAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,IAAG;AACxK,aAAS,kBAAkB,GAAG;AAAE,aAAO,WAAY;AAAE,YAAI,IAAI,MAAM,IAAI;AAAW,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,cAAI,IAAI,EAAE,MAAM,GAAG,CAAC;AAAG,mBAAS,MAAMA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,QAAQA,EAAC;AAAA,UAAG;AAAE,mBAAS,OAAOA,IAAG;AAAE,+BAAmB,GAAG,GAAG,GAAG,OAAO,QAAQ,SAASA,EAAC;AAAA,UAAG;AAAE,gBAAM,MAAM;AAAA,QAAG,CAAC;AAAA,MAAG;AAAA,IAAG;AAChU,QAAI,mBAAmB;AACvB,aAAS,iBAAiB,IAAI,KAAK;AACjC,aAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,IAChD;AACA,aAAS,oBAAoB;AAC3B,0BAAoB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,UAAU,SAAS;AAC1F,YAAI,QACF,QACA,WACA,YACA,QACA,MACA,SAAS;AACX,eAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,iBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,YAC7B,KAAK;AACH,uBAAS,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI;AACpE,kBAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,SAAS;AAClC,0BAAU,IAAI;AACd;AAAA,cACF;AACA,oBAAM,IAAI,UAAU,6BAA6B;AAAA,YACnD,KAAK;AACH,uBAAS,QAAQ,QAAQ,YAAY,QAAQ;AAC7C,2BAAa;AAAA,gBACX;AAAA,cACF;AACA,uBAAS,IAAI,KAAK,OAAO,QAAQ,UAAU;AAC3C,wBAAU,IAAI;AACd,qBAAO,OAAO,sBAAsB,UAAU,MAAM;AAAA,YACtD,KAAK;AACH,qBAAO,UAAU;AACjB,qBAAO,UAAU,EAAE,GAAG,MAAM,KAAK,SAAS,IAAI,CAAC;AAAA,UACnD;AAAA,QACF,GAAG,QAAQ;AAAA,MACb,CAAC,CAAC;AACF,aAAO,kBAAkB,MAAM,MAAM,SAAS;AAAA,IAChD;AACA,QAAI,SAASH,SAAQ,SAAS,WAAY;AACxC,eAASa,QAAO,MAAM,SAAS;AAC7B,YAAI,QAAQ;AACZ,wBAAgB,MAAMA,OAAM;AAC5B,wBAAgB,MAAM,cAAc,SAAU,MAAM;AAClD,cAAI,cAAc,KAAK,MAAM,IAAI,GAC/B,SAAS,YAAY,QACrB,KAAK,yBAAyB,aAAa,SAAS;AACtD,iBAAO,uBAAuB,qBAAqB,SAAS,cAAc,cAAc,CAAC,GAAG,MAAM,OAAO,GAAG,CAAC,GAAG;AAAA,YAC9G;AAAA,YACA,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,qBAAO,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAAA,YAClD;AAAA,UACF,CAAC,GAAG,EAAE;AAAA,QACR,CAAC;AACD,wBAAgB,MAAM,aAAa,SAAU,WAAW;AACtD,iBAAO,uBAAuB,qBAAqB,QAAQ,MAAM,SAAS,WAAW,MAAM,IAAI;AAAA,QACjG,CAAC;AACD,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,KAAK,MAAM,EAAE,QAAQ,SAAU,OAAO;AACzC,cAAI,SAAS,MAAM,KAAK,EAAE,SAAS;AACnC,cAAI,WAAW,kBAAkB;AAC/B;AAAA,UACF;AACA,cAAI,sBAAsB,SAASC,qBAAoB,MAAM,eAAe;AAC1E,mBAAO,uBAAuB,qBAAqB,MAAM,cAAc,cAAc,cAAc;AAAA,cACjG;AAAA,cACA,MAAM,QAAQ,KAAK,iBAAiB,QAAQ,IAAI;AAAA,YAClD,GAAG,OAAO,GAAG,aAAa,GAAG,CAAC,GAAG;AAAA,cAC/B,YAAY,KAAK,WAAW,EAAE,OAAO,SAAU,KAAK,MAAM;AACxD,uBAAO,cAAc,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,KAAK,MAAM,GAAG;AAAA,kBACjF,SAAS,KAAK,IAAI,EAAE,SAAS;AAAA,gBAC/B,CAAC,CAAC;AAAA,cACJ,GAAG,CAAC,CAAC;AAAA,cACL,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,uBAAO,KAAK,gBAAgB,QAAQ,MAAM;AAAA,cAC5C;AAAA,YACF,CAAC,CAAC;AAAA,UACJ;AACA,gBAAM,MAAM,IAAI,KAAK,QAAQ,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,SAAU,MAAM;AAC3E,mBAAO,oBAAoB,QAAW,IAAI;AAAA,UAC5C,IAAI;AAAA,QACN,CAAC;AAAA,MACH;AACA,aAAO,aAAaD,SAAQ,MAAM,CAAC;AAAA,QACjC,KAAK;AAAA,QACL,OAAO,WAAY;AACjB,cAAI,UAAU,kBAAkB,aAAa,EAAE,EAAE,SAAS,QAAQ,MAAM,SAAS;AAC/E,gBAAI,UAAU,MAAM,QAAQ,KAAK,kBAAkB,UAAU,eAAe,MAAM;AAClF,mBAAO,aAAa,EAAE,EAAE,SAAU,UAAU;AAC1C,qBAAO,EAAG,SAAQ,SAAS,GAAG;AAAA,gBAC5B,KAAK;AACH,6BAAW,QAAQ,UAAU,OAAO,QAAQ,MAAM,SAAS,QAAQ,QAAQ,MAAM,QAAQ,KAAK,mBAAmB,QAAQ,kBAAkB,WAAW,QAAQ,UAAU,gBAAgB,yBAAyB,SAAS,UAAU;AACpO,2BAAS,IAAI;AACb,yBAAO,iBAAiB,UAAU,eAAe,MAAM;AAAA,gBACzD,KAAK;AACH,yBAAO,SAAS;AAChB,8BAAY,aAAa,UAAU,qBAAqB;AAAA,oBACtD,SAAS,IAAI,aAAa,QAAQ,QAAQ,WAAW,QAAQ,SAAS;AAAA,oBACtE,UAAU,OAAO,aAAa,WAAW,OAAO,KAAK,UAAU,WAAW,QAAQ,WAAW,SAAS,SAAS,KAAK,IAAI;AAAA,oBACxH;AAAA,oBACA,iBAAiB,OAAO,KAAK,iBAAiB,kBAAkB,IAAI,IAAI,CAAC;AAAA,kBAC3E,CAAC;AACD,yBAAO,SAAS,EAAE,GAAG,uBAAuB,qBAAqB,YAAY,WAAW,cAAc,cAAc;AAAA,oBAClH;AAAA,oBACA;AAAA,oBACA;AAAA,kBACF,GAAG,aAAa,GAAG,CAAC,GAAG;AAAA,oBACrB,YAAY;AAAA,oBACZ,QAAQ;AAAA,oBACR,gBAAgB,SAAS,eAAe,QAAQ;AAC9C,6BAAO,IAAIA,QAAO,MAAM,cAAc,cAAc,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG;AAAA,wBAC1E,YAAY,aAAa,QAAQ,UAAU,MAAM,EAAE,SAAS;AAAA,sBAC9D,CAAC,CAAC;AAAA,oBACJ;AAAA,kBACF,CAAC,CAAC,CAAC;AAAA,cACP;AAAA,YACF,GAAG,OAAO;AAAA,UACZ,CAAC,CAAC;AACF,mBAAS,OAAO,KAAK,KAAK;AACxB,mBAAO,QAAQ,MAAM,MAAM,SAAS;AAAA,UACtC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,gBAAgB,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,UAAU,SAAS;AAC1F,gBAAI,QACF,QACA,WACA,YACA,QACA,MACA,SAAS;AACX,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,2BAAS,OAAO,SAAS,KAAK,OAAO,CAAC,MAAM,SAAY,OAAO,CAAC,IAAI;AACpE,sBAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,SAAS;AAClC,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,UAAU,6BAA6B;AAAA,gBACnD,KAAK;AACH,2BAAS,QAAQ,QAAQ,YAAY,QAAQ;AAC7C,+BAAa;AAAA,oBACX;AAAA,kBACF;AACA,2BAAS,IAAI,KAAK,OAAO,QAAQ,UAAU;AAC3C,4BAAU,IAAI;AACd,yBAAO,OAAO,sBAAsB,UAAU,MAAM;AAAA,gBACtD,KAAK;AACH,yBAAO,UAAU;AACjB,yBAAO,UAAU,EAAE,GAAGA,QAAO,SAAS,MAAM,OAAO,CAAC;AAAA,cACxD;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,aAAa,KAAK,KAAK;AAC9B,mBAAO,cAAc,MAAM,MAAM,SAAS;AAAA,UAC5C;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,YAAY,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,MAAM,SAAS;AAClF,gBAAI;AACJ,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,4BAAU,IAAI;AACd,yBAAO,MAAM,KAAK,SAAS,IAAI;AAAA,gBACjC,KAAK;AACH,yBAAO,UAAU;AACjB,yBAAO,UAAU,EAAE,GAAG,IAAIA,QAAO,MAAM,OAAO,CAAC;AAAA,cACnD;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,SAAS,KAAK,KAAK;AAC1B,mBAAO,UAAU,MAAM,MAAM,SAAS;AAAA,UACxC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,GAAG;AAAA,QACD,KAAK;AAAA,QACL,OAAQ,WAAY;AAClB,cAAI,QAAQ,kBAAkB,aAAa,EAAE,EAAE,SAAS,SAAS,SAAS;AACxE,gBAAI,QAAQ,YAAY,WAAW,YAAY,QAAQ;AACvD,mBAAO,aAAa,EAAE,EAAE,SAAU,WAAW;AAC3C,qBAAO,EAAG,SAAQ,UAAU,GAAG;AAAA,gBAC7B,KAAK;AACH,sBAAI,EAAE,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,QAAQ,aAAa;AACzD,8BAAU,IAAI;AACd;AAAA,kBACF;AACA,wBAAM,IAAI,UAAU,4CAA4C;AAAA,gBAClE,KAAK;AACH,2BAAS,QAAQ,QAAQ,aAAa,QAAQ,YAAY,YAAY,QAAQ;AAC9E,+BAAa;AAAA,oBACX;AAAA,kBACF;AACA,2BAAS,IAAI,KAAK,OAAO,QAAQ,UAAU;AAC3C,4BAAU,IAAI;AACd,yBAAO,OAAO,4BAA4B,UAAU;AAAA,gBACtD,KAAK;AACH,yBAAO,UAAU;AACjB,yBAAO,UAAU,EAAE,GAAGA,QAAO,SAAS,MAAM,OAAO,CAAC;AAAA,cACxD;AAAA,YACF,GAAG,QAAQ;AAAA,UACb,CAAC,CAAC;AACF,mBAAS,KAAK,KAAK;AACjB,mBAAO,MAAM,MAAM,MAAM,SAAS;AAAA,UACpC;AACA,iBAAO;AAAA,QACT,EAAE;AAAA,MACJ,CAAC,CAAC;AAAA,IACJ,EAAE;AAAA;AAAA;;;ACnPF,IAAAE,oBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,yBAAyB;AAC7B,WAAO,KAAK,sBAAsB,EAAE,QAAQ,SAAU,KAAK;AACzD,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,uBAAuB,GAAG,EAAG;AACpE,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,uBAAuB,GAAG;AAAA,QACnC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,qBAAqB;AACzB,WAAO,KAAK,kBAAkB,EAAE,QAAQ,SAAU,KAAK;AACrD,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,mBAAmB,GAAG,EAAG;AAChE,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,mBAAmB,GAAG;AAAA,QAC/B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,UAAU;AACd,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC1C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,QAAQ,GAAG,EAAG;AACrD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,QAAQ,GAAG;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,eAAe;AACnB,WAAO,KAAK,YAAY,EAAE,QAAQ,SAAU,KAAK;AAC/C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,aAAa,GAAG,EAAG;AAC1D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,aAAa,GAAG;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,oBAAoB;AACxB,WAAO,KAAK,iBAAiB,EAAE,QAAQ,SAAU,KAAK;AACpD,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,kBAAkB,GAAG,EAAG;AAC/D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,kBAAkB,GAAG;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,QAAQ;AACZ,WAAO,KAAK,KAAK,EAAE,QAAQ,SAAU,KAAK;AACxC,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,MAAM,GAAG,EAAG;AACnD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,MAAM,GAAG;AAAA,QAClB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,SAAS;AACb,WAAO,KAAK,MAAM,EAAE,QAAQ,SAAU,KAAK;AACzC,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,OAAO,GAAG,EAAG;AACpD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,OAAO,GAAG;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA;AAAA;;;ACjFD,IAAAC,gBAAA;AAAA,mDAAAC,UAAAC,SAAA;AAAA;AAEA,aAAS,QAAQ,GAAG;AAAE;AAA2B,aAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUC,IAAG;AAAE,eAAO,OAAOA;AAAA,MAAG,IAAI,SAAUA,IAAG;AAAE,eAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,MAAG,GAAG,QAAQ,CAAC;AAAA,IAAG;AAC7T,WAAO,eAAeF,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAI,eAAe;AAAA,MACjB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,UAAU;AAAA,IACZ;AACA,WAAO,eAAeA,UAAS,UAAU;AAAA,MACvC,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,QAAQ;AAAA,MACjB;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,cAAcA,SAAQ,UAAUA,SAAQ,YAAYA,SAAQ,aAAa;AACjF,WAAO,eAAeA,UAAS,SAAS;AAAA,MACtC,YAAY;AAAA,MACZ,KAAK,SAAS,MAAM;AAClB,eAAO,OAAO;AAAA,MAChB;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,MAAMA,SAAQ,UAAUA,SAAQ,WAAWA,SAAQ,UAAU;AACrE,QAAI,UAAU;AACd,WAAO,KAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AAC1C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,QAAQ,GAAG,EAAG;AACrD,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,QAAQ,GAAG;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,QAAI,UAAU;AACd,QAAI,SAAS;AACb,QAAI,eAAe,wBAAwB,qBAAwB;AACnE,IAAAA,SAAQ,cAAc;AACtB,QAAI,cAAc,wBAAwB,oBAAuB;AACjE,IAAAA,SAAQ,aAAa;AACrB,QAAI,WAAW,wBAAwB,iBAAoB;AAC3D,IAAAA,SAAQ,UAAU;AAClB,QAAI,aAAa,wBAAwB,mBAAsB;AAC/D,IAAAA,SAAQ,YAAY;AACpB,QAAI,WAAW,wBAAwB,iBAAoB;AAC3D,IAAAA,SAAQ,UAAU;AAClB,QAAI,OAAO,wBAAwB,cAAgB;AACnD,IAAAA,SAAQ,MAAM;AACd,QAAI,YAAY,wBAAwB,mBAAqB;AAC7D,IAAAA,SAAQ,WAAW;AACnB,QAAI,eAAe;AACnB,WAAO,KAAK,YAAY,EAAE,QAAQ,SAAU,KAAK;AAC/C,UAAI,QAAQ,aAAa,QAAQ,aAAc;AAC/C,UAAI,OAAO,UAAU,eAAe,KAAK,cAAc,GAAG,EAAG;AAC7D,UAAI,OAAOA,YAAWA,SAAQ,GAAG,MAAM,aAAa,GAAG,EAAG;AAC1D,aAAO,eAAeA,UAAS,KAAK;AAAA,QAClC,YAAY;AAAA,QACZ,KAAK,SAAS,MAAM;AAClB,iBAAO,aAAa,GAAG;AAAA,QACzB;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AACD,aAAS,wBAAwB,GAAG,GAAG;AAAE,UAAI,cAAc,OAAO,QAAS,KAAI,IAAI,oBAAI,QAAQ,GAAG,IAAI,oBAAI,QAAQ;AAAG,cAAQ,0BAA0B,SAASG,yBAAwBC,IAAGC,IAAG;AAAE,YAAI,CAACA,MAAKD,MAAKA,GAAE,WAAY,QAAOA;AAAG,YAAI,GAAG,GAAG,IAAI,EAAE,WAAW,MAAM,SAASA,GAAE;AAAG,YAAI,SAASA,MAAK,YAAY,QAAQA,EAAC,KAAK,cAAc,OAAOA,GAAG,QAAO;AAAG,YAAI,IAAIC,KAAI,IAAI,GAAG;AAAE,cAAI,EAAE,IAAID,EAAC,EAAG,QAAO,EAAE,IAAIA,EAAC;AAAG,YAAE,IAAIA,IAAG,CAAC;AAAA,QAAG;AAAE,iBAAS,MAAMA,GAAG,eAAc,MAAM,CAAC,EAAE,eAAe,KAAKA,IAAG,EAAE,OAAO,KAAK,IAAI,OAAO,mBAAmB,OAAO,yBAAyBA,IAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,IAAIA,GAAE,EAAE;AAAI,eAAO;AAAA,MAAG,GAAG,GAAG,CAAC;AAAA,IAAG;AACnoB,QAAI,WAAWJ,SAAQ,UAAUC,QAAO;AACxC,QAAI,OAAO,OAAO,kBAAkB,aAAa;AAC/C,aAAO,gBAAgB;AAAA,IACzB;AACA,QAAI,OAAO,OAAO,wBAAwB,aAAa;AACrD,aAAO,sBAAsB;AAAA,IAC/B;AAAA;AAAA;;;AC9EA;AAAA,8DAAAK,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiBA,SAAQ,mBAAmBA,SAAQ,mBAAmBA,SAAQ,kCAAkCA,SAAQ,+BAA+BA,SAAQ,uBAAuBA,SAAQ,uBAAuBA,SAAQ,YAAYA,SAAQ,YAAYA,SAAQ,mBAAmB;AACjS,QAAM,gBAAgB;AACtB,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,YAAY,WAAS;AACzB,YAAM,aAAa,IAAI,YAAY,UAAU,EAAE,EAAE,IAAIA,SAAQ,gBAAgB;AAC7E,YAAM,SAAS,IAAI,YAAY,UAAU,KAAK,EAAE,MAAM,UAAU;AAChE,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,YAAY;AACpB,IAAAA,SAAQ,YAAY;AAAA,MAClB,eAAe,GAAGA,SAAQ,WAAW,KAAK;AAAA,MAC1C,kBAAkB,GAAGA,SAAQ,WAAW,GAAG;AAAA,IAC7C;AACA,QAAM,iBAAiB,aAAW;AAChC,YAAM,YAAY,KAAK,MAAM,OAAO;AACpC,UAAI,MAAM,SAAS,GAAG;AACpB,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AACA,aAAO,KAAK,MAAM,YAAY,GAAI;AAAA,IACpC;AACA,QAAM,cAAc,UAAQ;AAC1B,cAAQ,KAAK,MAAM;AAAA,QACjB,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK,OAAO,SAAS;AAAA,QAC9B,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK,OAAO,SAAS,KAAK;AAAA,QACnC;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AACA,QAAM,uBAAuB,CAAC,OAAO,YAAY,sBAAsB;AACrE,YAAM,WAAW,IAAI,cAAc,YAAY,MAAM,cAAc,cAAc,SAAS,MAAM;AAChG,YAAM,SAAS;AAAA,QACb,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,QAAQ;AAAA,QACR,KAAK,MAAM,YAAY,SAAS;AAAA,QAChC,WAAW,eAAe,MAAM,UAAU;AAAA,QAC1C,aAAa,MAAM;AAAA,QACnB,SAAS,CAAC;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,mBAAmB,CAAC;AAAA,QACpB,SAAS;AAAA,QACT,SAAS;AAAA,UACP,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,UACP,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA,QACA,iBAAiB;AAAA,UACf,MAAM,YAAY,SAAS,IAAI;AAAA,UAC/B,YAAY,GAAG,cAAc,oBAAoB,MAAM,cAAc;AAAA,QACvE;AAAA,MACF;AACA,UAAI,CAAC,MAAM,YAAY;AACrB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,MAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI,SAAS,WAAW,WAAW,GAAG;AACpC,eAAO;AAAA,MACT;AACA,YAAM,QAAQ,SAAS,WAAW,CAAC;AACnC,YAAM,WAAW,MAAM,UAAU,MAAM;AACvC,YAAM,eAAe,GAAG,cAAc,oBAAoB,QAAQ;AAClE,UAAI;AACJ,UAAI;AACJ,UAAI,kBAAkB;AACtB,UAAI;AACJ,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAK;AACH,uBAAa,GAAG,cAAc,oBAAoB,MAAM,WAAW;AACnE,0BAAgB,GAAGA,SAAQ,WAAW,MAAM,eAAe,EAAE,SAAS;AACtE;AAAA,QACF,KAAK;AACH,uBAAa,GAAG,cAAc,oBAAoB,MAAM,WAAW;AACnE,cAAI,MAAM,MAAM,SAAS,GAAG;AAC1B,4BAAgB,GAAGA,SAAQ,WAAW,MAAM,MAAM,EAAE,SAAS;AAAA,UAC/D,OAAO;AACL,8BAAkB;AAClB,wBAAY;AAAA,cACV,WAAW,MAAM,MAAM,QAAQ;AAAA,cAC/B,aAAa,MAAM,MAAM,UAAU;AAAA,cACnC,SAAS,GAAGA,SAAQ,WAAW,MAAM,MAAM,EAAE,SAAS;AAAA,YACxD;AACA,2BAAe;AAAA,UACjB;AACA;AAAA,QACF,KAAK,eACH;AACE,cAAI,MAAM,KAAK,aAAa,MAAM,sBAAsB,MAAM,KAAK,aAAa,MAAM,qBAAqB;AACzG,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,aAAa;AAC9B,mBAAO;AAAA,UACT;AACA,gBAAM,OAAO,MAAM;AACnB,gBAAM,YAAY,KAAK,QAAQ;AAC/B,gBAAM,YAAY,IAAI,YAAY,UAAU,MAAM,KAAK,EAAE,OAAO;AAChE,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,MAAM;AAAA,YACN,iBAAiB;AAAA,cACf,GAAG,OAAO;AAAA,cACV,eAAe;AAAA,cACf,aAAa;AAAA,gBACX;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACF;AACE,iBAAO;AAAA,MACX;AACA,UAAI,CAAC,WAAW;AACd,eAAO;AAAA,MACT;AACA,YAAM,SAAS,eAAe;AAC9B,YAAM,OAAO,eAAe;AAC5B,UAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM;AACnC,eAAO;AAAA,MACT;AACA,YAAM,OAAO,SAAS,SAAS;AAC/B,UAAI,mBAAmB,WAAW;AAChC,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV,IAAI;AACJ,cAAM,WAAW,GAAG,SAAS,IAAI,WAAW;AAC5C,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ,CAAC;AAAA,YACP;AAAA,YACA,UAAU;AAAA,YACV,MAAM;AAAA,YACN,IAAI;AAAA,YACJ;AAAA,YACA,MAAM,kBAAkB,QAAQ,GAAG,QAAQ;AAAA,YAC3C,QAAQ;AAAA,YACR,UAAUA,SAAQ;AAAA,YAClB,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,cAAc;AAChB,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,UACA,QAAQ;AAAA,UACR,SAAS,CAAC;AAAA,YACR,GAAG;AAAA,YACH,WAAW,CAAC,SAAS;AAAA,YACrB,WAAW;AAAA,YACX,QAAQ;AAAA,UACV,CAAC;AAAA,UACD,SAAS;AAAA,YACP,KAAK,CAAC;AAAA,cACJ,GAAG;AAAA,cACH,WAAW,CAAC,WAAW;AAAA,cACvB,WAAW;AAAA,cACX,OAAO;AAAA,YACT,CAAC;AAAA,YACD,MAAM,CAAC;AAAA,cACL,GAAG;AAAA,cACH,WAAW,CAAC,SAAS;AAAA,cACrB,WAAW;AAAA,cACX,OAAO;AAAA,YACT,CAAC;AAAA,YACD,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,uBAAuB;AAC/B,QAAM,2BAA2B,CAAC;AAAA,MAChC;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY;AAAA,IACd,MAAM;AACJ,YAAM,SAAS,IAAI,cAAc,QAAQ,YAAY,QAAQ;AAC7D,aAAO,IAAI,cAAc,mBAAmB,QAAQ;AAAA,QAClD;AAAA,QACA,mBAAmB,YAAY,cAAc,SAAS,UAAU,cAAc,SAAS;AAAA,MACzF,CAAC,EAAE,cAAc,GAAG,CAAC;AAAA,IACvB;AACA,QAAM,4BAA4B,CAAC;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM,YAAY,yBAAyB;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,gBAAU,aAAa,cAAc,UAAU,YAAY;AAAA,QACzD,OAAO,IAAI,cAAc,MAAM,MAAM,MAAM,MAAM,MAAM;AAAA,QACvD;AAAA,MACF,CAAC,CAAC;AACF,aAAO,UAAU,MAAM;AAAA,IACzB;AACA,QAAM,uBAAuB,CAAC;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM,YAAY,yBAAyB;AAAA,QACzC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,gBAAgB;AAClB,kBAAU,QAAQ,cAAc,KAAK,KAAK,cAAc,CAAC;AAAA,MAC3D;AACA,UAAI,sBAAsB;AACxB,kBAAU,aAAa,cAAc,UAAU,QAAQ;AAAA,UACrD;AAAA,UACA;AAAA,UACA,OAAO,IAAI,cAAc,MAAM,MAAM,QAAQ,OAAO,MAAM,MAAM;AAAA,QAClE,CAAC,CAAC;AAAA,MACJ,OAAO;AACL,kBAAU,aAAa,cAAc,UAAU,cAAc;AAAA,UAC3D;AAAA,UACA,iBAAiB;AAAA,QACnB,CAAC,CAAC;AAAA,MACJ;AACA,aAAO,UAAU,MAAM;AAAA,IACzB;AACA,IAAAA,SAAQ,uBAAuB;AAC/B,QAAM,+BAA+B,CAAC;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM,0BAA0B;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,+BAA+B;AACvC,QAAM,kCAAkC,CAAC;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM,0BAA0B;AAAA,MAC9B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,kCAAkC;AAC1C,QAAM,mBAAmB,YAAY;AACnC,YAAM,OAAO,GAAG,YAAY,iBAAiB,IAAI,WAAW;AAC5D,YAAM,WAAW,MAAM,MAAM,4CAA4C,GAAG,4CAA4C;AACxH,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,MAAM,mCAAmC,SAAS,UAAU,EAAE;AAAA,MACtE;AACA,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,mBAAmB,UAAQ,sBAAsB,KAAK,IAAI;AAChE,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,iBAAiB,aAAW,cAAc,OAAO,wBAAwB,OAAO;AACtF,IAAAA,SAAQ,iBAAiB;AAAA;AAAA;;;AC7SzB,IAAAC,mBAAA;AAAA,sEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,UAAU;AAClB,QAAM,UAAU;AAChB,QAAM,gBAAgB;AACtB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,QAAQ,QAAQ,aAAa,iBAAoD;AACvF,QAAM,cAAc;AACpB,QAAM,UAAU;AAChB,QAAM,eAAe;AACrB,QAAM,oBAAoB,OAAM,QAAO;AACrC,YAAM,mBAAmB,MAAM,IAAI,QAAQ,EAAE,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK;AACzE,UAAI,iBAAiB,QAAQ,WAAW,GAAG;AACzC,cAAM,IAAI,SAAS,YAAY,iCAAiC;AAAA,MAClE;AACA,aAAO,iBAAiB,QAAQ,CAAC;AAAA,IACnC;AACA,QAAM,UAAU,OAAO,SAAS,cAAc;AAC5C,YAAM,MAAM,MAAM,QAAQ,QAAQ;AAClC,YAAM,oBAAoB,MAAM,IAAI,KAAK;AACzC,YAAM;AAAA,QACJ,UAAU;AAAA,QACV,MAAM;AAAA,QACN,yBAAyB;AAAA,MAC3B,IAAI,MAAM,kBAAkB,GAAG;AAC/B,YAAM,UAAU,eAAe,IAAI,QAAQ,UAAU,oBAAoB;AACzE,YAAM,UAAU,kBAAkB,MAAM,UAAU,aAAa,MAAM,CAAC;AACtE,YAAM,aAAa;AAAA,QACjB,KAAK,IAAI,UAAU,SAAS;AAAA,QAC5B,MAAM;AAAA,QACN,UAAU,YAAY,SAAS;AAAA,QAC/B,SAAS,YAAY,SAAS;AAAA,QAC9B,SAAS;AAAA,QACT,SAAS,kBAAkB;AAAA,QAC3B,UAAU,MAAM;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM,YAAY,UAAU;AAAA,QAC5B,SAAS;AAAA,UACP,GAAG;AAAA,QACL;AAAA,MACF;AAAA,IACF;AACA,QAAM,iBAAiB,OAAM,YAAW;AACtC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,YAAM,UAAU;AAAA,QACd,YAAY,QAAQ;AAAA,QACpB,SAAS;AAAA,QACT,kBAAkB;AAAA,QAClB,OAAO;AAAA,QACP,SAAS;AAAA,UACP,OAAO;AAAA,UACP,aAAa;AAAA,UACb,cAAc;AAAA,QAChB;AAAA,QACA,MAAM;AAAA,UACJ,iBAAiB;AAAA,UACjB,SAAS,MAAM,UAAU,gBAAgB,SAAS;AAAA,QACpD;AAAA,MACF;AACA,YAAM,MAAM,MAAM,QAAQ,QAAQ;AAClC,UAAI;AACJ,UAAI;AACF,eAAO,MAAM,IAAI,SAAS,EAAE,UAAU,QAAQ,UAAU,EAAE,KAAK;AAAA,MACjE,QAAQ;AACN,eAAO;AAAA,UACL,MAAM,YAAY,UAAU;AAAA,UAC5B,SAAS;AAAA,QACX;AAAA,MACF;AACA,YAAM,UAAU,MAAM,UAAU,gBAAgB,KAAK,MAAM,UAAU,aAAa,MAAM,KAAK,cAAc,CAAC;AAC5G,cAAQ,OAAO;AAAA,QACb,iBAAiB,KAAK;AAAA,QACtB,SAAS,QAAQ,SAAS;AAAA,MAC5B;AACA,YAAM,qBAAqB,KAAK,SAAS,KAAK,aAAW,QAAQ,eAAe,QAAQ;AACxF,UAAI,CAAC,oBAAoB;AACvB,cAAM,IAAI,SAAS,YAAY,gCAAgC;AAAA,MACjE;AACA,YAAM,qBAAqB,MAAM,UAAU,mBAAmB,mBAAmB;AACjF,cAAQ,UAAU,MAAM,UAAU,mBAAmB,OAAO,EAAE,SAAS;AACvE,cAAQ,mBAAmB,IAAI,QAAQ,UAAU,QAAQ,OAAO,EAAE,MAAM,OAAO,EAAE,MAAM,kBAAkB,EAAE,MAAM,MAAM,UAAU,aAAa,MAAM,KAAK,cAAc,CAAC,EAAE,KAAK,MAAM,UAAU,aAAa,MAAM,KAAK,aAAa,CAAC,EAAE,SAAS;AAChP,YAAM,gBAAgB,MAAM,QAAQ,iBAAiB;AACrD,cAAQ,SAAS,KAAK,SAAS,OAAO,iBAAe,YAAY,eAAe,sBAAsB,YAAY,eAAe,mBAAmB,EAAE,IAAI,iBAAe;AACvK,cAAM,WAAW,GAAG,YAAY,UAAU,IAAI,YAAY,YAAY;AACtE,cAAM,UAAU,MAAM,UAAU,YAAY,OAAO;AACnD,eAAO;AAAA,UACL,UAAU;AAAA,UACV;AAAA,UACA,SAAS,QAAQ,SAAS;AAAA,UAC1B,MAAM,cAAc,QAAQ,GAAG,QAAQ,YAAY;AAAA,UACnD,QAAQ,cAAc,QAAQ,GAAG,UAAU,YAAY;AAAA,UACvD,UAAU,MAAM;AAAA,QAClB;AAAA,MACF,CAAC;AACD,cAAQ,QAAQ;AAChB,UAAI,QAAQ,YAAY,OAAO;AAC7B,eAAO;AAAA,UACL,MAAM,YAAY,UAAU;AAAA,UAC5B,SAAS;AAAA,QACX;AAAA,MACF;AACA,YAAM,iBAAiB,MAAM,IAAI,aAAa,EAAE,WAAW,QAAQ,UAAU,EAAE,cAAc,IAAI,EAAE,MAAM,QAAQ,YAAY,EAAE,EAAE,MAAM,MAAM;AAC7I,UAAI,QAAQ,QAAQ,QAAQ,SAAS,KAAK,QAAQ,YAAY;AAC5D,uBAAe,OAAO,QAAQ,UAAU;AAAA,MAC1C;AACA,YAAM,eAAe,MAAM,eAAe,KAAK;AAC/C,YAAM,SAAS,aAAa,QAAQ,aAAa,QAAQ,SAAS,CAAC,GAAG;AACtE,cAAQ,QAAQ,eAAe,aAAa,QAAQ,IAAI,YAAU,MAAM,qBAAqB,QAAQ,QAAQ,YAAY,aAAa,CAAC;AACvI,aAAO;AAAA,QACL,MAAM,YAAY,UAAU;AAAA,QAC5B,SAAS;AAAA,UACP,GAAG;AAAA,UACH,eAAe;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AACA,QAAM,cAAc,OAAM,YAAW;AACnC,YAAM,MAAM,MAAM,QAAQ,QAAQ;AAClC,YAAM,WAAW,MAAM,IAAI,SAAS;AACpC,YAAM,UAAU,SAAS,YAAY;AACrC,YAAM,UAAU,QAAQ,WAAW,MAAM,QAAQ,QAAQ,QAAQ,MAAM,IAAI,QAAQ,QAAQ,OAAO,IAAI,OAAO;AAAA,QAC3G,YAAY;AAAA,MACd,EAAE,IAAI,CAAC;AAAA,QACL,YAAY;AAAA,MACd,CAAC;AACD,aAAO;AAAA,QACL,MAAM,YAAY,UAAU;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AACA,QAAM,8BAA8B,MAAO;AAC3C,QAAM,iBAAiB,OAAO;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,UAAI,MAAM,gBAAgB,OAAO,EAAG,QAAO;AAAA,QACzC,YAAY;AAAA,MACd;AACA,YAAM,MAAM,MAAM,QAAQ;AAC1B,YAAM,aAAa,YAAY;AAC7B,cAAM;AAAA,UACJ,UAAU;AAAA,UACV,MAAM;AAAA,QACR,IAAI,MAAM,kBAAkB,GAAG;AAC/B,aAAK;AAAA,UACH,IAAI;AAAA,UACJ,MAAM,YAAY,UAAU;AAAA,UAC5B,SAAS;AAAA,YACP,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AACA,iBAAW;AACX,YAAM,WAAW,YAAY,YAAY,2BAA2B;AACpE,YAAM,gBAAgB,SAAS,QAAQ;AACvC,aAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,IACF;AACA,QAAM,mBAAmB,CAAC;AAAA,MACxB;AAAA,IACF,MAAM;AACJ,UAAI,CAAC,MAAM,gBAAgB,OAAO,EAAG,QAAO;AAAA,QAC1C,YAAY;AAAA,MACd;AACA,YAAM,WAAW,MAAM,gBAAgB,OAAO;AAC9C,oBAAc,QAAQ;AACtB,YAAM,mBAAmB,OAAO;AAChC,aAAO;AAAA,QACL,YAAY;AAAA,MACd;AAAA,IACF;AACA,QAAM,YAAY,OAAM,YAAW;AACjC,UAAI;AACJ,cAAQ,QAAQ,QAAQ,MAAM;AAAA,QAC5B,KAAK;AACH,qBAAW,MAAM,eAAe,OAAO;AACvC;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,UACd;AACA;AAAA,QACF;AACE,gBAAM,IAAI,SAAS,YAAY,0BAA0B,IAAI,QAAQ,IAAI,EAAE;AAAA,MAC/E;AACA,aAAO;AAAA,QACL,MAAM,YAAY,UAAU;AAAA,QAC5B,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAM,cAAc,aAAW;AAC7B,UAAI;AACJ,cAAQ,QAAQ,QAAQ,MAAM;AAAA,QAC5B,KAAK;AACH,qBAAW,iBAAiB,OAAO;AACnC;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,qBAAW;AAAA,YACT,YAAY;AAAA,UACd;AACA;AAAA,QACF;AACE,gBAAM,IAAI,SAAS,YAAY,0BAA0B,IAAI,QAAQ,IAAI,EAAE;AAAA,MAC/E;AACA,aAAO;AAAA,QACL,MAAM,YAAY,UAAU;AAAA,QAC5B,SAAS;AAAA,MACX;AAAA,IACF;AACA,QAAM,kBAAkB,OAAO;AAAA,MAC7B;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM,MAAM,MAAM,QAAQ;AAC1B,YAAM,kBAAkB,OAAO,KAAK,QAAQ,KAAK,KAAK,EAAE,SAAS,QAAQ;AACzE,YAAM,WAAW,IAAI,cAAc,YAAY,iBAAiB,cAAc,SAAS,MAAM;AAC7F,UAAI;AACF,cAAM,OAAO,MAAM,IAAI,kBAAkB,UAAU;AAAA,UACjD,uBAAuB;AAAA,QACzB,CAAC;AACD,eAAO;AAAA,UACL,MAAM,YAAY,UAAU;AAAA,UAC5B,SAAS,KAAK;AAAA,QAChB;AAAA,MACF,SAAS,GAAG;AACV,cAAM,eAAe,GAAG,UAAU,MAAM,QAAQ,cAAc,eAAe;AAC7E,cAAM,eAAe,GAAG,UAAU,MAAM,QAAQ,cAAc,aAAa,CAAC,KAAK;AACjF,cAAM,IAAI,MAAM,4BAA4B,YAAY,4BAA4B,YAAY,EAAE;AAAA,MACpG;AAAA,IACF;AACA,QAAM,YAAY,CAAC,SAAS,cAAc;AACxC,cAAQ,QAAQ,MAAM;AAAA,QACpB,KAAK,YAAY,SAAS;AACxB,iBAAO,QAAQ,SAAS,SAAS;AAAA,QACnC,KAAK,YAAY,SAAS;AACxB,iBAAO,eAAe,OAAO;AAAA,QAC/B,KAAK,YAAY,SAAS;AACxB,iBAAO,YAAY,OAAO;AAAA,QAC5B,KAAK,YAAY,SAAS;AACxB,iBAAO,gBAAgB,OAAO;AAAA,QAChC,KAAK,YAAY,SAAS;AACxB,iBAAO,UAAU,OAAO;AAAA,QAC1B,KAAK,YAAY,SAAS;AACxB,iBAAO,YAAY,OAAO;AAAA,QAC5B;AACE,gBAAM,IAAI,SAAS,YAAY,0BAA0B,IAAI,QAAQ,IAAI,EAAE;AAAA,MAC/E;AAAA,IACF;AACA,QAAM,gBAAN,cAA4B,aAAa,WAAW;AAAA,MAClD,cAAc,GAAG,QAAQ,YAAY,MAAM,MAAM,iBAAiB,CAAC;AAAA,MACnE,YAAY;AAAA,MACZ,YAAY,KAAK;AACf,eAAO,CAAC,CAAC;AAAA,MACX;AAAA,MACA,MAAM,WAAW,KAAK;AACpB,cAAM,MAAM,IAAI,cAAc,QAAQ,OAAO,KAAK;AAAA,UAChD,SAAS;AAAA,YACP,IAAK,GAAG,YAAY,WAAW,MAAM,GAAG,YAAY,UAAU,IAAI;AAAA,cAChE,cAAc,iBAAiB,GAAG,YAAY,iBAAiB,CAAC;AAAA,YAClE,IAAI,CAAC;AAAA,UACP;AAAA,QACF,CAAC;AACD,aAAK,MAAM,IAAI,KAAK,GAAG,sBAAsB,cAAc,SAAS,SAAS;AAC3E,eAAK,YAAY;AAAA,QACnB;AACA,eAAO;AAAA,MACT;AAAA,MACA,aAAa;AACX,YAAI,CAAC,KAAK,KAAK;AACb;AAAA,QACF;AACA,yBAAiB;AAAA,UACf,OAAO,KAAK;AAAA,UACZ,SAAS,MAAM,KAAK,QAAQ;AAAA,UAC5B,MAAM,UAAQ,KAAK,KAAK,IAAI;AAAA,UAC5B,kBAAkB,KAAK,WAAW;AAAA,QACpC,CAAC;AACD,aAAK,MAAM;AAAA,MACb;AAAA,MACA,MAAM,eAAe,OAAO;AAC1B,YAAI;AACF,cAAI,MAAM,MAAM,eAAe,KAAK,EAAG,QAAO;AAC9C,gBAAM,UAAU;AAAA,YACd,GAAG,MAAM;AAAA,YACT,SAAS,MAAM,KAAK,QAAQ;AAAA,YAC5B,MAAM,UAAQ,KAAK,KAAK,IAAI;AAAA,YAC5B,OAAO,KAAK;AAAA,YACZ,kBAAkB,KAAK,WAAW;AAAA,UACpC;AACA,gBAAM,WAAW,MAAM,UAAU,SAAS,KAAK,SAAS;AACxD,eAAK,KAAK;AAAA,YACR,IAAI,MAAM,KAAK;AAAA,YACf,GAAG;AAAA,UACL,CAAC;AAAA,QACH,SAAS,OAAO;AACd,eAAK,cAAc,MAAM,KAAK,IAAI,KAAK;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AACA,aAAS,UAAU;AACjB,aAAO,IAAI,cAAc;AAAA,IAC3B;AACA,QAAI,aAAa,YAAY,UAAU;AACrC,YAAMC,UAAS,IAAI,cAAc;AACjC,kBAAYA,QAAO,eAAe,KAAKA,OAAM;AAAA,IAC/C;AAAA;AAAA;;;AClUA;AAAA,wDAAAC,UAAA;AAAA;AAEA,QAAIC,mBAAkBD,YAAQA,SAAK,oBAAoB,OAAO,SAAS,SAAU,GAAG,GAAG,GAAG,IAAI;AAC5F,UAAI,OAAO,OAAW,MAAK;AAC3B,UAAI,OAAO,OAAO,yBAAyB,GAAG,CAAC;AAC/C,UAAI,CAAC,SAAS,SAAS,OAAO,CAAC,EAAE,aAAa,KAAK,YAAY,KAAK,eAAe;AACjF,eAAO;AAAA,UACL,YAAY;AAAA,UACZ,KAAK,WAAY;AACf,mBAAO,EAAE,CAAC;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AACA,aAAO,eAAe,GAAG,IAAI,IAAI;AAAA,IACnC,IAAI,SAAU,GAAG,GAAG,GAAG,IAAI;AACzB,UAAI,OAAO,OAAW,MAAK;AAC3B,QAAE,EAAE,IAAI,EAAE,CAAC;AAAA,IACb;AACA,QAAI,qBAAqBA,YAAQA,SAAK,uBAAuB,OAAO,SAAS,SAAU,GAAG,GAAG;AAC3F,aAAO,eAAe,GAAG,WAAW;AAAA,QAClC,YAAY;AAAA,QACZ,OAAO;AAAA,MACT,CAAC;AAAA,IACH,IAAI,SAAU,GAAG,GAAG;AAClB,QAAE,SAAS,IAAI;AAAA,IACjB;AACA,QAAIE,gBAAeF,YAAQA,SAAK,gBAAgB,2BAAY;AAC1D,UAAI,UAAU,SAAU,GAAG;AACzB,kBAAU,OAAO,uBAAuB,SAAUG,IAAG;AACnD,cAAI,KAAK,CAAC;AACV,mBAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,IAAG,GAAG,MAAM,IAAI;AACjF,iBAAO;AAAA,QACT;AACA,eAAO,QAAQ,CAAC;AAAA,MAClB;AACA,aAAO,SAAUC,MAAK;AACpB,YAAIA,QAAOA,KAAI,WAAY,QAAOA;AAClC,YAAI,SAAS,CAAC;AACd,YAAIA,QAAO;AAAM,mBAAS,IAAI,QAAQA,IAAG,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAK,KAAI,EAAE,CAAC,MAAM,UAAW,CAAAH,iBAAgB,QAAQG,MAAK,EAAE,CAAC,CAAC;AAAA;AAC/H,2BAAmB,QAAQA,IAAG;AAC9B,eAAO;AAAA,MACT;AAAA,IACF,EAAE;AACF,WAAO,eAAeJ,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgBA,SAAQ,eAAeA,SAAQ,iBAAiBA,SAAQ,mBAAmBA,SAAQ,eAAeA,SAAQ,kBAAkB;AACpJ,QAAM,kBAAkB,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,oBAAwD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AACxJ,IAAAF,SAAQ,kBAAkB;AAC1B,QAAM,eAAe,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,iBAAqD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AAClJ,IAAAF,SAAQ,eAAe;AACvB,QAAM,mBAAmB,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,qBAAyD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AAC1J,IAAAF,SAAQ,mBAAmB;AAC3B,QAAM,iBAAiB,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,mBAAuD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AACtJ,IAAAF,SAAQ,iBAAiB;AACzB,QAAM,eAAe,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,iBAAqD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AAClJ,IAAAF,SAAQ,eAAe;AACvB,QAAM,gBAAgB,MAAM,QAAQ,QAAQ,EAAE,KAAK,MAAME,cAAa,kBAAsD,CAAC,EAAE,KAAK,OAAK,EAAE,QAAQ,CAAC;AACpJ,IAAAF,SAAQ,gBAAgB;AAAA;AAAA;;;AC1DxB;AAAA,2DAAAK,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,aAAa;AACrB,QAAM,UAAU;AAChB,QAAM,oBAAoB,QAAQ,gBAAgB,eAAkC;AACpF,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,YAAY;AAClB,QAAM,YAAY,UAAQ;AACxB,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB,KAAK;AACH,iBAAO,UAAU;AAAA,QACnB;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AACA,QAAM,8BAA8B,cAAY;AAC9C,UAAI,aAAa,QAAQ;AACvB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,QAAM,aAAN,MAAiB;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AACnB,aAAK,WAAW,QAAQ;AACxB,aAAK,WAAW,QAAQ;AACxB,aAAK,cAAc,QAAQ;AAC3B,aAAK,iBAAiB,QAAQ;AAC9B,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,QAAQ;AACZ,YAAI,CAAC,gBAAgB;AACnB,gBAAM,YAAY,OAAO,WAAW,sBAAsB;AAAA,QAC5D;AACA,cAAM,SAAS,UAAU,eAAe,IAAI;AAC5C,YAAI,CAAC,QAAQ;AACX,gBAAM,YAAY,OAAO,WAAW,yBAAyB,mCAAmC,eAAe,IAAI,EAAE;AAAA,QACvH;AACA,cAAM,SAAS,eAAe;AAC9B,aAAK,OAAO,IAAI,kBAAkB,QAAQ;AAAA,UACxC,MAAM,KAAK,SAAS;AAAA,UACpB;AAAA,UACA;AAAA,UACA,OAAO,QAAQ;AAAA,UACf,OAAO,QAAQ;AAAA,UACf,GAAI,KAAK,SAAS,SAAS,aAAa;AAAA,YACtC,oBAAoB,KAAK;AAAA,UAC3B,IAAI,CAAC;AAAA,UACL,GAAI,CAAC,UAAU,SAAS,EAAE,SAAS,eAAe,IAAI,IAAI;AAAA,YACxD,oBAAoB,KAAK;AAAA,UAC3B,IAAI,CAAC;AAAA,QACP,CAAC;AAAA,MACH;AAAA,MACA,sBAAsB,uBAAuB,OAAO;AAClD,aAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,OAAO;AAAA,UAChF,MAAM,KAAK;AAAA,UACX,UAAU,KAAK;AAAA,UACf,OAAO,YAAY,OAAO,YAAY;AAAA,UACtC,MAAM;AAAA,QACR,CAAC,CAAC;AACF,aAAK,iBAAiB,CAAC,CAAC,oBAAoB;AAAA,MAC9C;AAAA,MACA,MAAM,WAAW;AACf,YAAI;AACJ,YAAI;AACF,gBAAM,KAAK,KAAK,QAAQ;AACxB,iBAAO,MAAM,KAAK,KAAK,QAAQ;AAAA,QACjC,SAAS,OAAO;AACd,gBAAM,YAAY,OAAO,WAAW,iBAAiB,MAAM,OAAO;AAAA,QACpE;AACA,aAAK,aAAa;AAClB,cAAM,wBAAwB,4BAA4B,KAAK,SAAS,QAAQ;AAChF,cAAM,yBAAyB,KAAK,WAAW;AAC/C,YAAI,uBAAuB,YAAY,MAAM,sBAAsB,YAAY,GAAG;AAChF,gBAAM,YAAY,OAAO,WAAW,iBAAiB;AAAA,QACvD;AACA,aAAK,KAAK,GAAG,gBAAgB,MAAM;AACjC,gBAAM,uBAAuB,KAAK,KAAK,cAAc,OAAO,KAAK,KAAK,KAAK,cAAc,cAAc,KAAK,KAAK,KAAK,cAAc,WAAW;AAC/I,eAAK,KAAK,QAAQ;AAClB,eAAK,sBAAsB,CAAC,CAAC,oBAAoB;AAAA,QACnD,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MACA,OAAO;AACL,YAAI,CAAC,KAAK,aAAa;AACrB,eAAK,cAAc,KAAK,SAAS,EAAE,KAAK,UAAQ;AAC9C,iBAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,SAAS;AAAA,cAClF,MAAM,KAAK;AAAA,cACX,UAAU,KAAK;AAAA,cACf,GAAG;AAAA,YACL,CAAC,CAAC;AACF,iBAAK,cAAc,QAAQ,QAAQ,IAAI;AACvC,mBAAO;AAAA,UACT,CAAC,EAAE,MAAM,WAAS;AAChB,iBAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,OAAO;AAAA,cAChF,MAAM,KAAK;AAAA,cACX,UAAU,KAAK;AAAA,cACf,OAAO,MAAM;AAAA,cACb,MAAM,MAAM;AAAA,YACd,CAAC,CAAC;AACF,iBAAK,cAAc,QAAQ,OAAO,KAAK;AACvC,iBAAK,KAAK,QAAQ;AAClB,mBAAO,KAAK;AAAA,UACd,CAAC;AAAA,QACH;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MACA,gBAAgB,KAAK;AACnB,eAAO,QAAQ,IAAI,IAAI,IAAI,QAAM,KAAK,KAAK,eAAe,EAAE,CAAC,CAAC;AAAA,MAChE;AAAA,MACA,oBAAoB,OAAO;AACzB,eAAO,QAAQ,IAAI,MAAM,IAAI,QAAM,KAAK,KAAK,kBAAkB,EAAE,CAAC,CAAC;AAAA,MACrE;AAAA,MACA,oBAAoB,QAAQ;AAC1B,eAAO,KAAK,KAAK,oBAAoB,MAAM;AAAA,MAC7C;AAAA,MACA,0BAA0B,QAAQ;AAChC,eAAO,KAAK,KAAK,0BAA0B,MAAM;AAAA,MACnD;AAAA,MACA,yBAAyB,QAAQ;AAC/B,eAAO,KAAK,KAAK,yBAAyB,MAAM;AAAA,MAClD;AAAA,MACA,iBAAiB;AACf,eAAO,KAAK,KAAK,QAAQ;AAAA,MAC3B;AAAA,MACA,eAAe,SAAS;AACtB,eAAO,KAAK,KAAK,eAAe,OAAO;AAAA,MACzC;AAAA,MACA,eAAe,YAAY;AACzB,eAAO,KAAK,KAAK,eAAe,UAAU;AAAA,MAC5C;AAAA,MACA,QAAQ,QAAQ;AACd,eAAO,KAAK,KAAK,QAAQ,MAAM;AAAA,MACjC;AAAA,MACA,YAAY,SAAS;AACnB,eAAO,KAAK,KAAK,YAAY,OAAO;AAAA,MACtC;AAAA,MACA,kBAAkB;AAChB,YAAI,KAAK,KAAK,cAAc,OAAO,MAAM,GAAG;AAC1C,eAAK,KAAK,GAAG,SAAS,WAAS;AAC7B,iBAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,OAAO;AAAA,cAChF,MAAM,KAAK;AAAA,cACX,GAAG;AAAA,YACL,CAAC,CAAC;AAAA,UACJ,CAAC;AAAA,QACH;AACA,eAAO,KAAK,KAAK,UAAU;AAAA,UACzB,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,kBAAkB,UAAU;AAC1B,YAAI,KAAK,KAAK,cAAc,cAAc,MAAM,GAAG;AACjD,eAAK,KAAK,GAAG,gBAAgB,kBAAgB;AAC3C,iBAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,cAAc;AAAA,cACvF,MAAM,KAAK;AAAA,cACX;AAAA,YACF,CAAC,CAAC;AAAA,UACJ,CAAC;AAAA,QACH;AACA,eAAO,KAAK,KAAK,UAAU;AAAA,UACzB,MAAM;AAAA,UACN;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,mBAAmB,WAAW;AAC5B,YAAI,KAAK,KAAK,cAAc,WAAW,MAAM,GAAG;AAC9C,eAAK,KAAK,GAAG,aAAa,CAAC;AAAA,YACzB;AAAA,UACF,MAAM;AACJ,iBAAK,aAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,mBAAmB;AAAA,cAC5F,MAAM,KAAK;AAAA,cACX;AAAA,YACF,CAAC,CAAC;AAAA,UACJ,CAAC;AAAA,QACH;AACA,eAAO,KAAK,KAAK,UAAU;AAAA,UACzB,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,oBAAoB;AAClB,aAAK,KAAK,mBAAmB,OAAO;AACpC,eAAO,KAAK,KAAK,YAAY;AAAA,UAC3B,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,oBAAoB,UAAU;AAC5B,eAAO,KAAK,KAAK,YAAY;AAAA,UAC3B,MAAM;AAAA,UACN;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,uBAAuB;AACrB,aAAK,KAAK,mBAAmB,WAAW;AACxC,eAAO,KAAK,KAAK,YAAY;AAAA,UAC3B,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA,MAAM,iBAAiB;AACrB,aAAK,KAAK,mBAAmB,cAAc;AAC3C,cAAM,KAAK,qBAAqB;AAChC,eAAO,KAAK,kBAAkB;AAAA,MAChC;AAAA,MACA,gBAAgB,IAAI;AAClB,cAAM,OAAO,OAAO,OAAO,WAAW;AAAA,UACpC,KAAK;AAAA,QACP,IAAI;AACJ,eAAO,KAAK,KAAK,gBAAgB,IAAI;AAAA,MACvC;AAAA,MACA,aAAa;AACX,aAAK,KAAK,mBAAmB;AAC7B,aAAK,KAAK,WAAW,EAAE,KAAK,MAAM,KAAK,KAAK,QAAQ,CAAC;AACrD,aAAK,sBAAsB;AAAA,MAC7B;AAAA,IACF;AACA,IAAAA,SAAQ,aAAa;AAAA;AAAA;;;AC1OrB;AAAA,6DAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,KAAO;AAAA,QACH;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,sBAAsB;AAAA,UAClC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,wBAAwB;AAAA,UACpC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,wBAAwB;AAAA,UACpC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,yBAAyB;AAAA,UACrC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,2BAA2B;AAAA,UACvC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,mBAAqB;AAAA,UACrB,YAAc;AAAA,UACd,OAAS;AAAA,UACT,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA;;;ACvOA;AAAA,yDAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,SAAW;AAAA,QACP;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,IAAI,QAAU,IAAI;AAAA,UACxE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,yBAAyB,EAAE;AAAA,UAC7E,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,EAAE;AAAA,UAC/B,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,IAAI,QAAU,IAAI;AAAA,UACxE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,KAAO,GAAG;AAAA,UAC7B,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,gCAAgC,EAAE;AAAA,UACpF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,0BAA0B,wBAAwB;AAAA,UAC9D;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,wBAAwB;AAAA,UACpC;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,GAAG,QAAU,IAAI;AAAA,UACvE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,GAAG,QAAU,IAAI;AAAA,UACvE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,+BAA+B,EAAE;AAAA,UACnF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAO,MAAQ,KAAQ,KAAO,KAAO,QAAU,IAAM;AAAA,UACnF,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,mCAAmC;AAAA,UAC/C;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,wCAAwC;AAAA,UACpD;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,qCAAqC;AAAA,UACjD;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,0BAA0B,wBAAwB;AAAA,UAC9D;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,gCAAgC,EAAE;AAAA,UACpF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,iCAAiC,EAAE;AAAA,UACrF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAK,MAAQ,KAAM,KAAO,KAAK,QAAU,IAAI;AAAA,UAC3E,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAK,MAAQ,KAAM,KAAO,KAAK,QAAU,IAAI;AAAA,UAC3E,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,iCAAiC,EAAE;AAAA,UACrF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,KAAO,GAAG;AAAA,UAC7B,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,KAAO,GAAG;AAAA,UAC7B,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,gCAAgC,EAAE;AAAA,UACpF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,KAAO,GAAG;AAAA,UAC7B,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,GAAG,QAAU,IAAI;AAAA,UACvE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,GAAG,QAAU,IAAI;AAAA,UACvE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,IAAI,QAAU,IAAI;AAAA,UACxE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB,EAAE,MAAQ,aAAa,KAAO,CAAC,+BAA+B,EAAE;AAAA,UACnF,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAK,MAAQ,KAAM,KAAO,KAAK,QAAU,KAAK;AAAA,UAC5E,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,IAAI,QAAU,IAAI;AAAA,UACxE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,+CAA+C;AAAA,UAC3D;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAK,MAAQ,KAAM,KAAO,KAAK,QAAU,IAAI;AAAA,UAC3E,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,IAAK;AAAA,UAClC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,KAAM,MAAQ,KAAO,KAAO,KAAM,QAAU,KAAM;AAAA,UAChF,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,uBAAuB;AAAA,UACnC;AAAA,UACA,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,QAAU,GAAG;AAAA,UAChC,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,QACA;AAAA,UACI,cAAgB;AAAA,UAChB,mBAAqB;AAAA,UACrB,eAAiB;AAAA,UACjB,iBAAmB;AAAA,UACnB,mBAAqB;AAAA,UACrB,iBAAmB;AAAA,UACnB,YAAc;AAAA,UACd,WAAa;AAAA,UACb,eAAiB;AAAA,UACjB,YAAc;AAAA,UACd,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,eAAiB,EAAE,SAAW,IAAI,MAAQ,KAAK,KAAO,IAAI,QAAU,IAAI;AAAA,UACxE,YAAc;AAAA,UACd,YAAc;AAAA,UACd,cAAgB;AAAA,UAChB,SAAW;AAAA,UACX,oBAAsB;AAAA,UACtB,YAAc;AAAA,UACd,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,oBAAsB;AAAA,UACtB,WAAa;AAAA,UACb,MAAQ;AAAA,UACR,cAAgB;AAAA,UAChB,QAAU;AAAA,UACV,UAAY;AAAA,UACZ,uBAAyB;AAAA,UACzB,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,SAAW;AAAA,UACX,WAAa;AAAA,UACb,YAAc;AAAA,UACd,YAAc;AAAA,UACd,mCAAqC;AAAA,UACrC,iCAAmC;AAAA,UACnC,0BAA4B;AAAA,UAC5B,wBAA0B;AAAA,QAC9B;AAAA,MACJ;AAAA,MACA,MAAQ;AAAA,QACJ;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,qBAAqB;AAAA,UACjC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB,EAAE,MAAQ,UAAU,KAAO,CAAC,yBAAyB,EAAE;AAAA,UAC1E,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB,EAAE,MAAQ,cAAc,KAAO,CAAC,uBAAuB,EAAE;AAAA,UAC5E,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB,EAAE,MAAQ,UAAU,KAAO,CAAC,uBAAuB,EAAE;AAAA,UACxE,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,6BAA6B;AAAA,UACzC;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO,CAAC,qCAAqC;AAAA,UACjD;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,YACf,MAAQ;AAAA,YACR,KAAO;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,OAAS;AAAA,UACT,UAAY;AAAA,UACZ,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,UAAY;AAAA,UACZ,QAAU;AAAA,UACV,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,KAAO;AAAA,QACH;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,KAAO;AAAA,UACP,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,gBAAkB;AAAA,UAClB,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY,CAAC,GAAG;AAAA,UAChB,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY,CAAC,GAAG;AAAA,UAChB,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY,CAAC,GAAG;AAAA,UAChB,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,YAAc;AAAA,UACd,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY,CAAC,GAAG;AAAA,UAChB,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,QACA;AAAA,UACI,iBAAmB;AAAA,UACnB,cAAgB;AAAA,UAChB,KAAO;AAAA,UACP,YAAc;AAAA,UACd,MAAQ;AAAA,UACR,aAAe;AAAA,UACf,gBAAkB;AAAA,UAClB,QAAU;AAAA,UACV,MAAQ;AAAA,UACR,WAAa;AAAA,UACb,UAAY,CAAC,GAAG;AAAA,UAChB,UAAY;AAAA,UACZ,SAAW;AAAA,YACP,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,UACA,QAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA;;;AC/7FA,IAAAC,oBAAA;AAAA,gDAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACI,QAAU;AAAA,QACN,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,cAAgB;AAAA,YAChB,eAAiB;AAAA,YACjB,UAAY;AAAA,YACZ,cAAgB;AAAA,YAChB,kBAAoB;AAAA,YACpB,cAAgB;AAAA,UACpB;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,cAAgB;AAAA,YAChB,iBAAmB;AAAA,YACnB,eAAiB;AAAA,YACjB,eAAiB;AAAA,YACjB,cAAgB;AAAA,YAChB,kBAAoB;AAAA,YACpB,cAAgB;AAAA,UACpB;AAAA,QACJ;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,OAAS;AAAA,YACT,OAAS;AAAA,UACb;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,SAAW;AAAA,YACX,cAAgB;AAAA,YAChB,cAAgB;AAAA,YAChB,SAAW;AAAA,UACf;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,WAAa;AAAA,YACb,eAAiB;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,GAAK;AAAA,cACD,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,QAAU;AAAA,UACN,QAAU;AAAA,YACN,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,wBAA0B;AAAA,kBACtB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACf,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,SAAW;AAAA,gBACX,UAAY;AAAA,gBACZ,QAAU;AAAA,gBACV,YAAc;AAAA,gBACd,aAAe;AAAA,gBACf,aAAe;AAAA,gBACf,cAAgB;AAAA,gBAChB,cAAgB;AAAA,cACpB;AAAA,YACJ;AAAA,YACA,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,mBAAqB;AAAA,kBACjB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,yBAA2B;AAAA,cACvB,QAAU;AAAA,gBACN,iBAAmB;AAAA,kBACf,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,OAAS;AAAA,UACL,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,aAAe;AAAA,kBACX,QAAU;AAAA,oBACN,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,QAAU;AAAA,sBACd;AAAA,oBACJ;AAAA,oBACA,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,SAAW;AAAA,sBACf;AAAA,oBACJ;AAAA,oBACA,aAAe;AAAA,sBACX,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,SAAW;AAAA,sBACf;AAAA,oBACJ;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,aAAe;AAAA,sBACX,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,SAAW;AAAA,sBACP,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,iBAAmB;AAAA,sBACf,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,iBAAmB;AAAA,sBACf,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,sBAAwB;AAAA,sBACpB,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,eAAiB;AAAA,sBACb,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,gBAAkB;AAAA,sBACd,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,SAAW;AAAA,sBACf;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,gBACA,iBAAmB;AAAA,kBACf,QAAU;AAAA,oBACN,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,eAAiB;AAAA,sBACb,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,uBAAyB;AAAA,sBACrB,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,gBACJ;AAAA,gBACA,cAAgB;AAAA,kBACZ,QAAU;AAAA,oBACN,SAAW;AAAA,sBACP,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,QAAU;AAAA,sBACd;AAAA,oBACJ;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,aAAe;AAAA,sBACX,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,SAAW;AAAA,sBACf;AAAA,oBACJ;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,gBAAkB;AAAA,sBACd,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,mBAAqB;AAAA,sBACjB,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,sBAAwB;AAAA,cACpB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAY;AAAA,UACR,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,QAAU;AAAA,UACN,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,wBAA0B;AAAA,cACtB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,SAAW;AAAA,YACP,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,2BAA6B;AAAA,cACzB,QAAU;AAAA,gBACN,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,0BAA4B;AAAA,cACxB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,QAAU;AAAA,YACV,QAAU;AAAA,YACV,eAAiB;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,MAAQ;AAAA,YACR,iBAAmB;AAAA,YACnB,iBAAmB;AAAA,YACnB,oBAAsB;AAAA,YACtB,SAAW;AAAA,YACX,gBAAkB;AAAA,YAClB,YAAc;AAAA,YACd,mBAAqB;AAAA,YACrB,OAAS;AAAA,YACT,QAAU;AAAA,YACV,eAAiB;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,SAAW;AAAA,YACX,KAAO;AAAA,YACP,KAAO;AAAA,YACP,QAAU;AAAA,YACV,gBAAkB;AAAA,YAClB,mBAAqB;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,sCAAwC;AAAA,UACpC,QAAU;AAAA,YACN,MAAQ;AAAA,YACR,QAAU;AAAA,YACV,WAAa;AAAA,UACjB;AAAA,QACJ;AAAA,QACA,oCAAsC;AAAA,UAClC,QAAU;AAAA,YACN,cAAgB;AAAA,YAChB,aAAe;AAAA,UACnB;AAAA,QACJ;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,oBAAsB;AAAA,YACtB,sBAAwB;AAAA,YACxB,kBAAoB;AAAA,YACpB,yBAA2B;AAAA,YAC3B,2BAA6B;AAAA,YAC7B,6BAA+B;AAAA,YAC/B,iBAAmB;AAAA,UACvB;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,UAAY;AAAA,YACZ,aAAe;AAAA,YACf,SAAW;AAAA,YACX,eAAiB;AAAA,UACrB;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,gBAAkB;AAAA,YAClB,kBAAoB;AAAA,YACpB,oBAAsB;AAAA,UAC1B;AAAA,QACJ;AAAA,QACA,sCAAwC;AAAA,UACpC,QAAU;AAAA,YACN,MAAQ;AAAA,YACR,8BAAgC;AAAA,UACpC;AAAA,QACJ;AAAA,QACA,gCAAkC;AAAA,UAC9B,QAAU;AAAA,YACN,OAAS;AAAA,YACT,OAAS;AAAA,UACb;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,sBAAwB;AAAA,YACxB,4BAA8B;AAAA,YAC9B,sBAAwB;AAAA,YACxB,oBAAsB;AAAA,UAC1B;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,eAAiB;AAAA,YACjB,iBAAmB;AAAA,UACvB;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,2BAA6B;AAAA,cACzB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,yBAA2B;AAAA,cACvB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,wBAA0B;AAAA,cACtB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,4BAA8B;AAAA,cAC1B,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,yBAA2B;AAAA,cACvB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,wBAA0B;AAAA,cACtB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,wBAA0B;AAAA,cACtB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oCAAsC;AAAA,UAClC,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,wCAA0C;AAAA,UACtC,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,4BAA8B;AAAA,cAC1B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,+BAAiC;AAAA,cAC7B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,kCAAoC;AAAA,UAChC,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,8BAAgC;AAAA,cAC5B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,2BAA6B;AAAA,gBAC7B,wBAA0B;AAAA,gBAC1B,mBAAqB;AAAA,gBACrB,yBAA2B;AAAA,gBAC3B,qBAAuB;AAAA,gBACvB,sBAAwB;AAAA,gBACxB,oBAAsB;AAAA,gBACtB,0BAA4B;AAAA,gBAC5B,sBAAwB;AAAA,gBACxB,wBAA0B;AAAA,gBAC1B,wBAA0B;AAAA,gBAC1B,qBAAuB;AAAA,gBACvB,0BAA4B;AAAA,gBAC5B,wBAA0B;AAAA,gBAC1B,cAAgB;AAAA,gBAChB,+BAAiC;AAAA,gBACjC,yBAA2B;AAAA,gBAC3B,qBAAuB;AAAA,gBACvB,uBAAyB;AAAA,cAC7B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,qBAAuB;AAAA,gBACvB,gCAAkC;AAAA,gBAClC,6BAA+B;AAAA,gBAC/B,2BAA6B;AAAA,gBAC7B,2BAA6B;AAAA,gBAC7B,0BAA4B;AAAA,gBAC5B,2BAA6B;AAAA,gBAC7B,sBAAwB;AAAA,gBACxB,6BAA+B;AAAA,gBAC/B,uBAAyB;AAAA,gBACzB,yBAA2B;AAAA,gBAC3B,iCAAmC;AAAA,gBACnC,6BAA+B;AAAA,gBAC/B,0CAA4C;AAAA,gBAC5C,qCAAuC;AAAA,gBACvC,gCAAkC;AAAA,gBAClC,uBAAyB;AAAA,gBACzB,uBAAyB;AAAA,gBACzB,+BAAiC;AAAA,gBACjC,wBAA0B;AAAA,cAC9B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU,CAAC;AAAA,QACf;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,8BAAgC;AAAA,gBAChC,+BAAiC;AAAA,gBACjC,gCAAkC;AAAA,gBAClC,oCAAsC;AAAA,gBACtC,qCAAuC;AAAA,cAC3C;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,oBAAsB;AAAA,kBAClB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,mBAAqB;AAAA,kBACjB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,YAAc;AAAA,cACV,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,GAAK;AAAA,cACD,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,GAAK;AAAA,cACD,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,MAAQ;AAAA,gBACR,OAAS;AAAA,cACb;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,IAAM;AAAA,gBACN,KAAO;AAAA,gBACP,MAAQ;AAAA,cACZ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,UAAY;AAAA,gBACZ,YAAc;AAAA,gBACd,WAAa;AAAA,cACjB;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,kBAAoB;AAAA,gBACpB,aAAe;AAAA,gBACf,WAAa;AAAA,cACjB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,eAAiB;AAAA,cACb,QAAU;AAAA,gBACN,WAAa;AAAA,gBACb,aAAe;AAAA,gBACf,gBAAkB;AAAA,cACtB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU,CAAC;AAAA,QACf;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,kBAAoB;AAAA,YACpB,gBAAkB;AAAA,YAClB,cAAgB;AAAA,UACpB;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,qBAAuB;AAAA,kBACnB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,UAAY;AAAA,cACR,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,yBAA2B;AAAA,cACvB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gCAAkC;AAAA,UAC9B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,kBAAoB;AAAA,cAChB,QAAU;AAAA,gBACN,MAAQ;AAAA,gBACR,KAAO;AAAA,gBACP,OAAS;AAAA,gBACT,QAAU;AAAA,gBACV,MAAQ;AAAA,gBACR,SAAW;AAAA,gBACX,OAAS;AAAA,gBACT,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,6BAA+B;AAAA,cAC3B,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,6BAA+B;AAAA,cAC3B,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,wBAA0B;AAAA,cACtB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,OAAS;AAAA,YACT,cAAgB;AAAA,YAChB,iBAAmB;AAAA,YACnB,0BAA4B;AAAA,YAC5B,yBAA2B;AAAA,YAC3B,4BAA8B;AAAA,UAClC;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,QAAU;AAAA,YACV,cAAgB;AAAA,YAChB,mBAAqB;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,OAAS;AAAA,YACT,MAAQ;AAAA,YACR,OAAS;AAAA,YACT,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,MAAQ;AAAA,YACR,MAAQ;AAAA,YACR,MAAQ;AAAA,UACZ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU,CAAC;AAAA,QACf;AAAA,QACA,UAAY;AAAA,UACR,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,sBAAwB;AAAA,cACpB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,6BAA+B;AAAA,cAC3B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,2BAA6B;AAAA,cACzB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,0BAA4B;AAAA,cACxB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,4BAA8B;AAAA,cAC1B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,cAAgB;AAAA,gBAChB,UAAY;AAAA,gBACZ,WAAa;AAAA,cACjB;AAAA,YACJ;AAAA,YACA,gBAAkB;AAAA,cACd,QAAU;AAAA,gBACN,SAAW;AAAA,gBACX,UAAY;AAAA,gBACZ,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,YAAc;AAAA,cACV,QAAU;AAAA,gBACN,oBAAsB;AAAA,gBACtB,yBAA2B;AAAA,gBAC3B,oBAAsB;AAAA,gBACtB,oBAAsB;AAAA,gBACtB,mBAAqB;AAAA,gBACrB,gBAAkB;AAAA,gBAClB,qBAAuB;AAAA,gBACvB,iBAAmB;AAAA,gBACnB,mBAAqB;AAAA,gBACrB,gBAAkB;AAAA,gBAClB,mBAAqB;AAAA,gBACrB,oBAAsB;AAAA,gBACtB,kBAAoB;AAAA,gBACpB,gBAAkB;AAAA,gBAClB,mBAAqB;AAAA,gBACrB,yBAA2B;AAAA,gBAC3B,4BAA8B;AAAA,gBAC9B,mBAAqB;AAAA,gBACrB,yBAA2B;AAAA,gBAC3B,uBAAyB;AAAA,gBACzB,mBAAqB;AAAA,gBACrB,gBAAkB;AAAA,gBAClB,gBAAkB;AAAA,cACtB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU,CAAC;AAAA,QACf;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU,CAAC;AAAA,QACf;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,6BAA+B;AAAA,cAC3B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,2BAA6B;AAAA,cACzB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,4BAA8B;AAAA,cAC1B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,wBAA0B;AAAA,cACtB,QAAU;AAAA,gBACN,SAAW;AAAA,gBACX,QAAU;AAAA,gBACV,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,MAAQ;AAAA,UACJ,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,QAAU;AAAA,UACN,QAAU,CAAC;AAAA,QACf;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU,CAAC;AAAA,QACf;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,cAAgB;AAAA,kBACZ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,uBAAyB;AAAA,cACrB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,2BAA6B;AAAA,cACzB,QAAU;AAAA,gBACN,gBAAkB;AAAA,gBAClB,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,gBAAkB;AAAA,YAClB,QAAU;AAAA,YACV,sBAAwB;AAAA,UAC5B;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,uBAAyB;AAAA,gBACzB,yBAA2B;AAAA,gBAC3B,yBAA2B;AAAA,cAC/B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,SAAW;AAAA,UACP,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU,CAAC;AAAA,QACf;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,sBAAwB;AAAA,cACpB,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,eAAiB;AAAA,gBACjB,iBAAmB;AAAA,cACvB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,UAAY;AAAA,UACR,QAAU,CAAC;AAAA,QACf;AAAA,QACA,OAAS;AAAA,UACL,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU,CAAC;AAAA,QACf;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,SAAW;AAAA,YACX,SAAW;AAAA,YACX,UAAY;AAAA,YACZ,WAAa;AAAA,UACjB;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,6BAA+B;AAAA,cAC3B,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,yBAA2B;AAAA,cACvB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,oBAAsB;AAAA,kBAClB,QAAU;AAAA,oBACN,MAAQ;AAAA,sBACJ,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,qBAAuB;AAAA,cACnB,QAAU;AAAA,gBACN,GAAK;AAAA,kBACD,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,GAAK;AAAA,kBACD,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,GAAK;AAAA,kBACD,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,IAAM;AAAA,kBACF,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,4BAA8B;AAAA,cAC1B,QAAU;AAAA,gBACN,kBAAoB;AAAA,kBAChB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACf,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,oBAAsB;AAAA,kBAClB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kCAAoC;AAAA,UAChC,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,sCAAwC;AAAA,UACpC,QAAU,CAAC;AAAA,QACf;AAAA,QACA,kCAAoC;AAAA,UAChC,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iCAAmC;AAAA,UAC/B,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,6BAA+B;AAAA,cAC3B,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,6BAA+B;AAAA,UAC3B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,wBAA0B;AAAA,kBACtB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,uBAAyB;AAAA,kBACrB,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,wBAA0B;AAAA,cACtB,QAAU;AAAA,gBACN,IAAM;AAAA,kBACF,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gCAAkC;AAAA,UAC9B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,4BAA8B;AAAA,UAC1B,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,8BAAgC;AAAA,UAC5B,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,+BAAiC;AAAA,UAC7B,QAAU,CAAC;AAAA,QACf;AAAA,QACA,2BAA6B;AAAA,UACzB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,IAAM;AAAA,cACF,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,YAAc;AAAA,UACV,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,WAAa;AAAA,UACT,QAAU;AAAA,YACN,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,wBAA0B;AAAA,cACtB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,sBAAwB;AAAA,cACpB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,QAAU;AAAA,kBACd;AAAA,gBACJ;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,kBACN,SAAW;AAAA,oBACP,SAAW;AAAA,kBACf;AAAA,gBACJ;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,aAAe;AAAA,cACX,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,QAAU;AAAA,oBACN,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,qBAAuB;AAAA,kBACnB,QAAU;AAAA,oBACN,MAAQ;AAAA,sBACJ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,WAAa;AAAA,sBACT,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,cAAgB;AAAA,sBACZ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,MAAQ;AAAA,sBACJ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,KAAO;AAAA,sBACH,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,cAAgB;AAAA,sBACZ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,gBAAkB;AAAA,sBACd,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,aAAe;AAAA,sBACX,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,QAAU;AAAA,sBACN,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,gBAAkB;AAAA,sBACd,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,cAAgB;AAAA,sBACZ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,aAAe;AAAA,sBACX,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,sBACN,SAAW;AAAA,wBACP,QAAU;AAAA,sBACd;AAAA,oBACJ;AAAA,kBACJ;AAAA,kBACA,QAAU;AAAA,oBACN,eAAiB;AAAA,sBACb,QAAU;AAAA,wBACN,qBAAuB;AAAA,wBACvB,uBAAyB;AAAA,sBAC7B;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,OAAS;AAAA,kBACL,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,qBAAuB;AAAA,kBACnB,QAAU;AAAA,oBACN,uBAAyB;AAAA,oBACzB,uBAAyB;AAAA,kBAC7B;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,0BAA4B;AAAA,cACxB,QAAU;AAAA,gBACN,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACf,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,4BAA8B;AAAA,kBAC1B,QAAU;AAAA,oBACN,MAAQ;AAAA,sBACJ,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,YAAc;AAAA,sBACV,MAAQ;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,kBACA,QAAU;AAAA,oBACN,qBAAuB;AAAA,sBACnB,QAAU;AAAA,wBACN,6BAA+B;AAAA,wBAC/B,gCAAkC;AAAA,sBACtC;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,uBAAyB;AAAA,cACrB,QAAU;AAAA,gBACN,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,2BAA6B;AAAA,kBACzB,QAAU;AAAA,oBACN,6BAA+B;AAAA,oBAC/B,+BAAiC;AAAA,kBACrC;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,SAAW;AAAA,cACf;AAAA,YACJ;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,sBAAwB;AAAA,cACpB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,eAAiB;AAAA,cACb,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,iBAAmB;AAAA,kBACf,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,sBAAwB;AAAA,cACpB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,QAAU;AAAA,YACV,WAAa;AAAA,YACb,YAAc;AAAA,UAClB;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,MAAQ;AAAA,cACJ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,MAAQ;AAAA,gBACR,MAAQ;AAAA,gBACR,IAAM;AAAA,gBACN,MAAQ;AAAA,gBACR,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,oBAAsB;AAAA,UAClB,QAAU,CAAC;AAAA,QACf;AAAA,QACA,kBAAoB;AAAA,UAChB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,wBAA0B;AAAA,UACtB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mCAAqC;AAAA,UACjC,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,oBAAsB;AAAA,cAClB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gCAAkC;AAAA,UAC9B,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,mBAAqB;AAAA,cACjB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,0BAA4B;AAAA,UACxB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,yBAA2B;AAAA,UACvB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iCAAmC;AAAA,UAC/B,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,+BAAiC;AAAA,cAC7B,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,kBAAoB;AAAA,cAChB,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,SAAW;AAAA,gBACX,UAAY;AAAA,gBACZ,MAAQ;AAAA,cACZ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,sBAAwB;AAAA,UACpB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,eAAiB;AAAA,cACb,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,qBAAuB;AAAA,cACnB,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,qBAAuB;AAAA,UACnB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,OAAS;AAAA,cACL,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,uBAAyB;AAAA,UACrB,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gCAAkC;AAAA,UAC9B,QAAU;AAAA,YACN,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,iBAAmB;AAAA,UACf,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,cAAgB;AAAA,UACZ,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,mBAAqB;AAAA,UACjB,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,aAAe;AAAA,cACX,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,YAAc;AAAA,cACV,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,QAAU;AAAA,cACN,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,UACA,QAAU;AAAA,YACN,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,MAAQ;AAAA,kBACJ,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,mBAAqB;AAAA,kBACjB,QAAU;AAAA,oBACN,UAAY;AAAA,oBACZ,YAAc;AAAA,kBAClB;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,YAAc;AAAA,kBACV,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,oBAAsB;AAAA,kBAClB,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,wBAA0B;AAAA,kBACtB,QAAU;AAAA,oBACN,cAAgB;AAAA,sBACZ,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,iBAAmB;AAAA,sBACf,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,oBACA,UAAY;AAAA,sBACR,MAAQ;AAAA,sBACR,IAAM;AAAA,oBACV;AAAA,kBACJ;AAAA,kBACA,QAAU;AAAA,oBACN,sBAAwB;AAAA,sBACpB,QAAU;AAAA,wBACN,aAAe;AAAA,0BACX,MAAQ;AAAA,0BACR,MAAQ;AAAA,0BACR,IAAM;AAAA,wBACV;AAAA,wBACA,QAAU;AAAA,0BACN,MAAQ;AAAA,0BACR,MAAQ;AAAA,0BACR,IAAM;AAAA,wBACV;AAAA,sBACJ;AAAA,oBACJ;AAAA,kBACJ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,oBAAsB;AAAA,cAClB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,gBAAkB;AAAA,kBACd,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,aAAe;AAAA,kBACX,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,mBAAqB;AAAA,cACjB,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,KAAO;AAAA,kBACH,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,SAAW;AAAA,kBACP,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,eAAiB;AAAA,kBACb,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,iBAAmB;AAAA,cACf,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,WAAa;AAAA,kBACT,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,YACJ;AAAA,YACA,eAAiB;AAAA,cACb,QAAU;AAAA,gBACN,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,UAAY;AAAA,kBACR,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,gBACA,QAAU;AAAA,kBACN,MAAQ;AAAA,kBACR,MAAQ;AAAA,kBACR,IAAM;AAAA,gBACV;AAAA,cACJ;AAAA,cACA,QAAU;AAAA,gBACN,iBAAmB;AAAA,kBACf,QAAU;AAAA,oBACN,KAAO;AAAA,oBACP,KAAO;AAAA,oBACP,MAAQ;AAAA,kBACZ;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,eAAiB;AAAA,UACb,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,iBAAmB;AAAA,cACf,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,gBAAkB;AAAA,cACd,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,gBAAkB;AAAA,UACd,QAAU;AAAA,YACN,WAAa;AAAA,cACT,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,cACN,SAAW;AAAA,gBACP,QAAU;AAAA,cACd;AAAA,YACJ;AAAA,YACA,cAAgB;AAAA,cACZ,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,UAAY;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,QAAU;AAAA,YACN,SAAW;AAAA,cACP,MAAQ;AAAA,cACR,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,YACA,KAAO;AAAA,cACH,MAAQ;AAAA,cACR,IAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAAA,QACA,aAAe;AAAA,UACX,SAAW;AAAA,YACP,6BAA6B;AAAA,YAC7B,eAAe;AAAA,UACnB;AAAA,UACA,QAAU;AAAA,YACN,YAAc;AAAA,YACd,MAAQ;AAAA,YACR,SAAW;AAAA,YACX,SAAW;AAAA,YACX,WAAa;AAAA,YACb,YAAc;AAAA,YACd,YAAc;AAAA,YACd,SAAW;AAAA,YACX,YAAc;AAAA,YACd,aAAe;AAAA,YACf,SAAW;AAAA,YACX,UAAY;AAAA,YACZ,kBAAoB;AAAA,YACpB,cAAgB;AAAA,YAChB,QAAU;AAAA,YACV,YAAc;AAAA,YACd,eAAiB;AAAA,YACjB,eAAiB;AAAA,YACjB,WAAa;AAAA,YACb,YAAc;AAAA,YACd,UAAY;AAAA,YACZ,OAAS;AAAA,YACT,cAAgB;AAAA,YAChB,gBAAkB;AAAA,YAClB,YAAc;AAAA,YACd,gBAAkB;AAAA,YAClB,mBAAqB;AAAA,YACrB,sBAAwB;AAAA,YACxB,mBAAqB;AAAA,YACrB,eAAiB;AAAA,YACjB,gBAAkB;AAAA,YAClB,aAAe;AAAA,YACf,SAAW;AAAA,YACX,aAAe;AAAA,YACf,WAAa;AAAA,YACb,gBAAkB;AAAA,YAClB,YAAc;AAAA,YACd,iBAAmB;AAAA,YACnB,sBAAwB;AAAA,YACxB,qBAAuB;AAAA,YACvB,oBAAsB;AAAA,YACtB,iBAAmB;AAAA,YACnB,cAAgB;AAAA,YAChB,YAAc;AAAA,YACd,qBAAuB;AAAA,YACvB,oBAAsB;AAAA,YACtB,kBAAoB;AAAA,YACpB,oBAAsB;AAAA,YACtB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,kBAAoB;AAAA,YACpB,cAAgB;AAAA,YAChB,eAAiB;AAAA,YACjB,iBAAmB;AAAA,YACnB,cAAgB;AAAA,YAChB,eAAiB;AAAA,YACjB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,mCAAqC;AAAA,YACrC,+BAAiC;AAAA,YACjC,eAAiB;AAAA,YACjB,gBAAkB;AAAA,YAClB,iBAAmB;AAAA,YACnB,YAAc;AAAA,YACd,WAAa;AAAA,YACb,cAAgB;AAAA,YAChB,WAAa;AAAA,YACb,QAAU;AAAA,YACV,WAAa;AAAA,YACb,OAAS;AAAA,YACT,YAAc;AAAA,YACd,SAAW;AAAA,YACX,aAAe;AAAA,YACf,eAAiB;AAAA,YACjB,kBAAoB;AAAA,YACpB,gBAAkB;AAAA,YAClB,aAAe;AAAA,YACf,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,kBAAoB;AAAA,YACpB,cAAgB;AAAA,YAChB,gBAAkB;AAAA,YAClB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,qBAAuB;AAAA,YACvB,mBAAqB;AAAA,YACrB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,eAAiB;AAAA,YACjB,cAAgB;AAAA,YAChB,qBAAuB;AAAA,YACvB,iBAAmB;AAAA,YACnB,sBAAwB;AAAA,YACxB,qBAAuB;AAAA,YACvB,iBAAmB;AAAA,YACnB,uBAAyB;AAAA,YACzB,uBAAyB;AAAA,YACzB,sBAAwB;AAAA,YACxB,sBAAwB;AAAA,YACxB,2BAA6B;AAAA,YAC7B,0BAA4B;AAAA,YAC5B,oBAAsB;AAAA,YACtB,iBAAmB;AAAA,YACnB,yBAA2B;AAAA,YAC3B,sBAAwB;AAAA,YACxB,sBAAwB;AAAA,YACxB,mBAAqB;AAAA,YACrB,oBAAsB;AAAA,YACtB,iBAAmB;AAAA,YACnB,gBAAkB;AAAA,YAClB,uBAAyB;AAAA,YACzB,mBAAqB;AAAA,YACrB,eAAiB;AAAA,YACjB,qBAAuB;AAAA,YACvB,uBAAyB;AAAA,YACzB,0BAA4B;AAAA,YAC5B,uBAAyB;AAAA,YACzB,gCAAkC;AAAA,YAClC,4BAA8B;AAAA,YAC9B,+BAAiC;AAAA,YACjC,2BAA6B;AAAA,YAC7B,4BAA8B;AAAA,YAC9B,uBAAyB;AAAA,YACzB,eAAiB;AAAA,YACjB,YAAc;AAAA,YACd,WAAa;AAAA,YACb,aAAe;AAAA,YACf,mBAAqB;AAAA,YACrB,qBAAuB;AAAA,YACvB,iBAAmB;AAAA,YACnB,cAAgB;AAAA,YAChB,aAAe;AAAA,YACf,eAAiB;AAAA,YACjB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,eAAiB;AAAA,YACjB,oBAAsB;AAAA,YACtB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,wBAA0B;AAAA,YAC1B,kBAAoB;AAAA,YACpB,mCAAqC;AAAA,YACrC,0BAA4B;AAAA,YAC5B,iCAAmC;AAAA,YACnC,qBAAuB;AAAA,YACvB,sBAAwB;AAAA,YACxB,qBAAuB;AAAA,YACvB,uBAAyB;AAAA,YACzB,qBAAuB;AAAA,YACvB,uBAAyB;AAAA,YACzB,yBAA2B;AAAA,YAC3B,gCAAkC;AAAA,YAClC,gCAAkC;AAAA,YAClC,iBAAmB;AAAA,YACnB,qBAAuB;AAAA,YACvB,kBAAoB;AAAA,YACpB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,kBAAoB;AAAA,YACpB,kCAAoC;AAAA,YACpC,yBAA2B;AAAA,YAC3B,0BAA4B;AAAA,YAC5B,kBAAoB;AAAA,YACpB,mBAAqB;AAAA,YACrB,uBAAyB;AAAA,YACzB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,iBAAmB;AAAA,YACnB,mBAAqB;AAAA,YACrB,cAAgB;AAAA,YAChB,sBAAwB;AAAA,YACxB,qBAAuB;AAAA,YACvB,wBAA0B;AAAA,YAC1B,kBAAoB;AAAA,YACpB,4BAA8B;AAAA,YAC9B,4BAA8B;AAAA,YAC9B,yBAA2B;AAAA,YAC3B,eAAiB;AAAA,YACjB,0BAA4B;AAAA,YAC5B,yBAA2B;AAAA,YAC3B,2BAA6B;AAAA,YAC7B,+BAAiC;AAAA,YACjC,yBAA2B;AAAA,YAC3B,wBAA0B;AAAA,YAC1B,2BAA6B;AAAA,YAC7B,4BAA8B;AAAA,YAC9B,yBAA2B;AAAA,YAC3B,kBAAoB;AAAA,YACpB,eAAiB;AAAA,YACjB,cAAgB;AAAA,YAChB,gBAAkB;AAAA,YAClB,8BAAgC;AAAA,YAChC,0BAA4B;AAAA,YAC5B,kCAAoC;AAAA,YACpC,8BAAgC;AAAA,YAChC,mCAAqC;AAAA,YACrC,+BAAiC;AAAA,YACjC,sCAAwC;AAAA,YACxC,kCAAoC;AAAA,YACpC,mCAAqC;AAAA,YACrC,+BAAiC;AAAA,YACjC,mCAAqC;AAAA,YACrC,+BAAiC;AAAA,YACjC,mCAAqC;AAAA,YACrC,+BAAiC;AAAA,YACjC,+BAAiC;AAAA,YACjC,2BAA6B;AAAA,YAC7B,iCAAmC;AAAA,YACnC,6BAA+B;AAAA,YAC/B,+BAAiC;AAAA,YACjC,2BAA6B;AAAA,YAC7B,gCAAkC;AAAA,YAClC,4BAA8B;AAAA,YAC9B,kBAAoB;AAAA,YACpB,eAAiB;AAAA,YACjB,mBAAqB;AAAA,YACrB,gBAAkB;AAAA,YAClB,wBAA0B;AAAA,YAC1B,oBAAsB;AAAA,YACtB,uBAAyB;AAAA,YACzB,mBAAqB;AAAA,YACrB,+BAAiC;AAAA,YACjC,2BAA6B;AAAA,YAC7B,8BAAgC;AAAA,YAChC,0BAA4B;AAAA,YAC5B,+BAAiC;AAAA,YACjC,2BAA6B;AAAA,YAC7B,iBAAmB;AAAA,YACnB,cAAgB;AAAA,YAChB,WAAa;AAAA,YACb,oBAAsB;AAAA,YACtB,gBAAkB;AAAA,YAClB,aAAe;AAAA,YACf,oBAAsB;AAAA,YACtB,iBAAmB;AAAA,YACnB,kBAAoB;AAAA,YACpB,eAAiB;AAAA,YACjB,cAAgB;AAAA,YAChB,mBAAqB;AAAA,YACrB,cAAgB;AAAA,YAChB,WAAa;AAAA,YACb,8BAAgC;AAAA,YAChC,0BAA4B;AAAA,YAC5B,8BAAgC;AAAA,YAChC,2BAA6B;AAAA,YAC7B,gBAAkB;AAAA,YAClB,aAAe;AAAA,UACnB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA;;;AC19PA;AAAA,uDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,2BAA2B;AACnC,QAAM,2BAA2B,YAAU,CAAC,CAAC,QAAQ,UAAU;AAC/D,IAAAA,SAAQ,2BAA2B;AAAA;AAAA;;;ACPnC,IAAAC,iBAAA;AAAA,mDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,eAAe;AACvB,QAAI;AACJ,KAAC,SAAUC,eAAc;AACvB,MAAAA,cAAa,aAAa,IAAI;AAC9B,MAAAA,cAAa,WAAW,IAAI;AAAA,IAC9B,GAAG,iBAAiBD,SAAQ,eAAe,eAAe,CAAC,EAAE;AAAA;AAAA;;;ACV7D;AAAA,2DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsBA,SAAQ,yBAAyBA,SAAQ,qBAAqBA,SAAQ,0BAA0BA,SAAQ,sBAAsBA,SAAQ,oBAAoB;AACxL,QAAM,cAAc;AACpB,QAAM,UAAU;AAChB,QAAM,oBAAoB,YAAU;AAClC,UAAI,QAAQ,SAAS,cAAc;AACjC,eAAO;AAAA,MACT;AACA,UAAI,QAAQ,oBAAoB,kBAAkB,WAAW,QAAQ,oBAAoB,cAAc,SAAS;AAC9G,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,sBAAsB,YAAU,QAAQ,UAAU,YAAY;AACpE,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,0BAA0B,YAAU;AACxC,UAAI,CAAC,QAAQ,UAAU;AACrB,eAAO;AAAA,MACT;AACA,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,WAAK,GAAG,YAAY,0BAA0B,MAAM,GAAG;AACrD,eAAO,SAAS,WAAW,CAAC,SAAS,UAAU,SAAS,UAAU,SAAS,QAAQ,IAAI;AAAA,MACzF;AACA,aAAO,CAAC,SAAS,eAAe,SAAS,eAAe,SAAS,aAAa;AAAA,IAChF;AACA,IAAAA,SAAQ,0BAA0B;AAClC,QAAM,qBAAqB,YAAU;AACnC,UAAI,CAAC,QAAQ,UAAU;AACrB,eAAO;AAAA,MACT;AACA,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,WAAK,GAAG,YAAY,0BAA0B,MAAM,GAAG;AACrD,eAAO,SAAS,WAAW,GAAG,SAAS,QAAQ,IAAI,SAAS,QAAQ,IAAI,SAAS,QAAQ,KAAK;AAAA,MAChG;AACA,aAAO,GAAG,SAAS,aAAa,IAAI,SAAS,aAAa,IAAI,SAAS,aAAa;AAAA,IACtF;AACA,IAAAA,SAAQ,qBAAqB;AAC7B,QAAM,yBAAyB,YAAU,QAAQ,iBAAiB,QAAQ,aAAa;AACvF,IAAAA,SAAQ,yBAAyB;AACjC,QAAM,sBAAsB,YAAU,CAAC,CAAC,QAAQ,UAAU,gBAAgB,QAAQ,iBAAiB,QAAQ,aAAa;AACxH,IAAAA,SAAQ,sBAAsB;AAAA;AAAA;;;ACjD9B;AAAA,6DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuBA,SAAQ,oBAAoB;AAC3D,QAAM,cAAc;AACpB,QAAM,oBAAoB,YAAU,QAAQ,UAAU,mBAAmB;AACzE,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,uBAAuB,YAAU;AACrC,UAAI,CAAC,QAAQ,UAAU;AACrB,eAAO;AAAA,MACT;AACA,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,WAAK,GAAG,YAAY,0BAA0B,MAAM,KAAK,SAAS,eAAe;AAC/E,eAAO,GAAG,SAAS,aAAa,IAAI,SAAS,aAAa,IAAI,SAAS,aAAa;AAAA,MACtF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,uBAAuB;AAAA;AAAA;;;ACrB/B;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsB;AAC9B,QAAI;AACJ,KAAC,SAAUC,sBAAqB;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,MAAM,IAAI;AAC9B,MAAAA,qBAAoB,SAAS,IAAI;AAAA,IACnC,GAAG,wBAAwBD,SAAQ,sBAAsB,sBAAsB,CAAC,EAAE;AAAA;AAAA;;;ACflF;AAAA,sEAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iCAAiC;AACzC,QAAM,wBAAwB;AAC9B,QAAM,iCAAiC,WAAS,UAAU,sBAAsB,oBAAoB,OAAO,sBAAsB,oBAAoB,OAAO;AAC5J,IAAAA,SAAQ,iCAAiC;AAAA;AAAA;;;ACRzC,IAAAC,kBAAA;AAAA,oDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,SAAS;AACjB,QAAM,aAAa;AAAA,MACjB,MAAM;AAAA,MACN,QAAQ;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAAA,IACF;AACA,IAAAA,SAAQ,SAAS;AAAA,MACf,SAAS;AAAA,QACP,MAAM;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ,CAAC;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ,CAAC;AAAA,MACX;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAAA,QACA,aAAa;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtDA;AAAA,8DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,wBAAwBA,SAAQ,8BAA8B;AACtE,QAAM,8BAA8B,kBAAgB,gBAAgB;AACpE,IAAAA,SAAQ,8BAA8B;AACtC,QAAM,wBAAwB,aAAW,GAAGA,SAAQ,6BAA6B,QAAQ,UAAU,cAAc,QAAQ,KAAK,YAAY,aAAa;AACvJ,IAAAA,SAAQ,wBAAwB;AAAA;AAAA;;;ACThC,IAAAC,gBAAA;AAAA,mDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,UAAU;AAChB,YAAQ,aAAa,yBAA4BA,QAAO;AACxD,YAAQ,aAAa,2BAA8BA,QAAO;AAC1D,YAAQ,aAAa,qBAAwBA,QAAO;AACpD,YAAQ,aAAa,kBAAoBA,QAAO;AAChD,YAAQ,aAAa,+BAAkCA,QAAO;AAC9D,YAAQ,aAAa,oCAAuCA,QAAO;AACnE,YAAQ,aAAa,mBAAqBA,QAAO;AACjD,YAAQ,aAAa,4BAA+BA,QAAO;AAAA;AAAA;;;ACb3D;AAAA,yDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuBA,SAAQ,8BAA8BA,SAAQ,kBAAkBA,SAAQ,+CAA+CA,SAAQ,mBAAmB;AACjL,QAAM,mBAAmB;AACzB,QAAM,iBAAiB;AACvB,QAAM,UAAU;AAChB,QAAM,mBAAN,cAA+B,MAAM;AAAA,MACnC;AAAA,MACA,YAAY,UAAU;AACpB,cAAM,UAAU,GAAG,SAAS,MAAM,mBAAmB,SAAS,GAAG;AACjE,cAAM,OAAO;AACb,aAAK,WAAW;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,+CAA+C,CAAC,aAAa,iBAAiB;AAClF,YAAM,yBAAyB,iBAAiB,eAAe,aAAa,cAAc,gBAAgB;AAC1G,YAAM,0BAA0B,iBAAiB,iBAAiB,YAAY,YAAY,CAAC,IAAI,sBAAsB,KAAK,CAAC;AAC3H,aAAO,OAAO,OAAO,uBAAuB,EAAE,KAAK,CAAC,GAAG,MAAM,QAAQ,aAAa,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;AAAA,IAC1H;AACA,IAAAA,SAAQ,+CAA+C;AACvD,QAAM,kBAAkB,CAAC,aAAa,SAAS,iBAAiB;AAC9D,YAAM,yBAAyB,iBAAiB,eAAe,aAAa,cAAc,gBAAgB;AAC1G,YAAM,WAAW,GAAG,YAAY,YAAY,CAAC,IAAI,QAAQ,KAAK,GAAG,CAAC,IAAI,sBAAsB;AAC5F,YAAM,mBAAmB,YAAY,YAAY;AACjD,YAAM,QAAQ,iBAAiB,iBAAiB,gBAAgB,IAAI,sBAAsB,IAAI,QAAQ;AACtG,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,kBAAkB;AAC1B,IAAAA,SAAQ,8BAA8B;AACtC,QAAM,uBAAuB,SAAO;AAClC,YAAM,UAAU,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,cAAQ,SAAS;AAAA,QACf,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,MACX;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,uBAAuB;AAAA;AAAA;;;AC7C/B;AAAA,6DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,cAAc;AACtB,QAAM,UAAU;AAChB,QAAM,gBAAgB,QAAQ,gBAAgB,uBAAsB;AACpE,QAAM,eAAe;AACrB,QAAM,cAAc,OAAO,KAAK,OAAO,QAAQ,YAAY;AACzD,YAAM,OAAO;AAAA,QACX,GAAG;AAAA,QACH,aAAa;AAAA,MACf;AACA,YAAM,WAAW,OAAO,GAAG,cAAc,SAAS,KAAK,IAAI;AAC3D,UAAI,SAAS,IAAI;AACf,YAAI,SAAS,QAAQ;AACnB,gBAAM,MAAM,MAAM,SAAS,KAAK;AAChC,iBAAO,KAAK,MAAM,GAAG;AAAA,QACvB;AACA,YAAI,SAAS,UAAU;AACrB,iBAAO,SAAS,YAAY;AAAA,QAC9B;AACA,eAAO,SAAS,KAAK;AAAA,MACvB;AACA,YAAM,IAAI,aAAa,iBAAiB,QAAQ;AAAA,IAClD;AACA,IAAAA,SAAQ,cAAc;AAAA;AAAA;;;AC3BtB;AAAA,qDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,cAAc;AACtB,QAAM,UAAU;AAChB,QAAM,gBAAgB,QAAQ,gBAAgB,uBAAsB;AACpE,QAAM,OAAO,UAAQ,IAAI;AACzB,QAAM,eAAe;AACrB,QAAM,mBAAmB;AACzB,QAAI,UAAU,OAAO,OAAO,UAAU,YAAY;AAChD,aAAO,QAAQ,cAAc;AAAA,IAC/B;AACA,aAAS,YAAY,KAAK,MAAM,SAAS;AACvC,YAAM,QAAQ,SAAS,yBAAyB,QAAQ,GAAG,aAAa,sBAAsB,GAAG;AACjG,UAAI,CAAC,OAAO;AACV,eAAO,UAAU,KAAK,GAAG,KAAK,GAAG,iBAAiB,aAAa,KAAK,MAAM,OAAO,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,MACjH;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;ACpBA,IAAAC,yBAAA;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uCAAuCA,SAAQ,kBAAkBA,SAAQ,kBAAkBA,SAAQ,oCAAoCA,SAAQ,6BAA6BA,SAAQ,wBAAwBA,SAAQ,4BAA4BA,SAAQ,mBAAmB;AACnR,QAAM,iBAAiB;AACvB,QAAM,UAAU;AAChB,QAAM,gBAAgB;AACtB,QAAM,mBAAmB,iBAAe,CAAC,GAAG,CAAC,EAAE,SAAS,YAAY,aAAa,MAAM,YAAY,qBAAqB,SAAS,YAAY,mBAAmB,QAAQ,YAAY,oBAAoB;AACxM,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,4BAA4B,CAAC,oBAAoB,eAAe,kBAAkB;AACtF,UAAI,CAAC,sBAAsB,mBAAmB,WAAW,GAAG;AAC1D;AAAA,MACF;AACA,YAAM,yBAAyB,cAAc;AAC7C,YAAM,2BAA2B,cAAc;AAC/C,UAAI,mBAAmB;AACvB,UAAI,kBAAkB,4BAA4B,0BAA0B;AAC1E,2BAAmB;AAAA,MACrB,WAAW,kBAAkB,4BAA4B,wBAAwB;AAC/E,cAAM,iBAAiB,mBAAmB,KAAK,QAAM,QAAQ,aAAa,QAAQ,wBAAwB,GAAG,OAAO,CAAC;AACrH,YAAI,CAAC,gBAAgB,oBAAoB;AACvC;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,kBAAkB;AACrB;AAAA,MACF;AACA,YAAM,kBAAkB,mBAAmB,KAAK,CAAC,GAAG,MAAM,QAAQ,aAAa,QAAQ,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI,EAAE;AACrH,YAAM,qBAAqB,gBAAgB,KAAK,QAAM,QAAQ,aAAa,eAAe,kBAAkB,GAAG,aAAa,CAAC,CAAC;AAC9H,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,4BAA4B;AACpC,QAAM,yBAAyB,CAAC,cAAc,aAAa,YAAY;AACrE,YAAM,iBAAiB,iBAAiB,eAAe,aAAa,cAAc,iBAAiB;AACnG,YAAM,QAAQ,YAAY,YAAY;AACtC,YAAM,gBAAgB,QAAQ,KAAK,GAAG;AACtC,aAAO,UAAU,KAAK,IAAI,aAAa,GAAG,cAAc;AAAA,IAC1D;AACA,QAAM,wBAAwB,CAAC,cAAc,aAAa,YAAY,GAAG,uBAAuB,cAAc,aAAa,OAAO,CAAC;AACnI,IAAAA,SAAQ,wBAAwB;AAChC,QAAM,6BAA6B,CAAC,cAAc,aAAa,YAAY,GAAG,uBAAuB,cAAc,aAAa,OAAO,CAAC;AACxI,IAAAA,SAAQ,6BAA6B;AACrC,QAAM,oCAAoC,CAAC,eAAe,YAAY,UAAU,cAAc,YAAY,CAAC,WAAW,OAAO;AAC7H,IAAAA,SAAQ,oCAAoC;AAC5C,QAAM,kBAAkB,cAAY;AAClC,UAAI,SAAS,gBAAiB,QAAO;AACrC,UAAI,CAAC,SAAS,YAAa,QAAO;AAClC,UAAI,SAAS,UAAW,QAAO;AAC/B,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,kBAAkB;AAC1B,QAAM,kBAAkB,cAAY;AAClC,UAAI,OAAO,eAAe,aAAa;AACvC,UAAI,SAAS,cAAc,uBAAuB;AAChD,eAAO,eAAe,aAAa;AAAA,MACrC,WAAW,SAAS,cAAc,UAAU;AAC1C,eAAO,eAAe,aAAa;AAAA,MACrC,YAAY,GAAGA,SAAQ,iBAAiB,QAAQ,MAAM,cAAc;AAClE,eAAO,SAAS,gBAAgB,SAAS,aAAa,SAAS,KAAK,CAAC,SAAS,aAAa,SAAS,yBAAyB,IAAI,eAAe,aAAa,cAAc,eAAe,aAAa;AAAA,MACzM,YAAY,GAAGA,SAAQ,iBAAiB,QAAQ,MAAM,gBAAgB,SAAS,cAAc;AAC3F,eAAO,eAAe,aAAa;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,kBAAkB;AAC1B,QAAM,uCAAuC,MAAM,cAAc,YAAY,YAAY,sBAAsB,MAAM;AACrH,IAAAA,SAAQ,uCAAuC;AAAA;AAAA;;;ACpE/C;AAAA,0DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsBA,SAAQ,oBAAoBA,SAAQ,+BAA+BA,SAAQ,iBAAiBA,SAAQ,oBAAoBA,SAAQ,cAAcA,SAAQ,2BAA2BA,SAAQ,6BAA6BA,SAAQ,4BAA4BA,SAAQ,sBAAsBA,SAAQ,mBAAmBA,SAAQ,4BAA4BA,SAAQ,oBAAoBA,SAAQ,2BAA2B;AACpb,QAAM,iBAAiB;AACvB,QAAM,UAAU;AAChB,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,WAAW;AACjB,QAAM,kBAAkB;AACxB,QAAM,2BAA2B;AAAA,MAC/B,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,2BAA2B;AAAA,MAC/B,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,kCAAkC;AAAA,MACtC,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,yBAAyB;AAAA,MAC7B,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,mBAAmB;AAAA,MACvB,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,qBAAqB;AAAA,MACzB,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AACA,QAAM,4BAA4B;AAAA,MAChC,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,wBAAwB;AAAA,MACxB,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,IACtB;AACA,QAAM,2BAA2B,MAAM;AACrC,YAAM,uBAAuB,cAAc,YAAY,YAAY,sBAAsB;AACzF,UAAI,CAAC,sBAAsB;AACzB,eAAO;AAAA,UACL,GAAG,0BAA0B,YAAY;AAAA,UACzC,KAAK;AAAA,QACP;AAAA,MACF;AACA,aAAO;AAAA,QACL,GAAG,0BAA0B,oBAAoB;AAAA,QACjD,KAAK;AAAA,MACP;AAAA,IACF;AACA,IAAAA,SAAQ,2BAA2B;AACnC,QAAM,4BAA4B,CAAC,aAAa,iBAAiB;AAC/D,YAAM,6BAA6B,cAAc,YAAY,8BAA8B;AAC3F,YAAM,gBAAgB,2BAA2B,SAAS,WAAW;AACrE,YAAM,iBAAiB,gBAAgB,YAAY;AACnD,UAAI,CAAC,gBAAgB;AACnB;AAAA,MACF;AACA,YAAM,iBAAiB,eAAe,YAAY,MAAM,iBAAiB;AACzE,UAAI,CAAC,gBAAgB;AACnB,cAAM,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AACA,aAAO,eAAe,CAAC;AAAA,IACzB;AACA,QAAM,oBAAoB,CAAC,aAAa,iBAAiB;AACvD,YAAM,UAAU,0BAA0B,aAAa,YAAY;AACnE,UAAI,CAAC,SAAS;AACZ;AAAA,MACF;AACA,YAAM,eAAe,QAAQ,aAAa,SAAS,OAAO;AAC1D,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI,MAAM,0CAA0C;AAAA,MAC5D;AACA,cAAQ,GAAG,aAAa,iBAAiB,aAAa,cAAc,YAAY;AAAA,IAClF;AACA,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,yBAAyB,OAAM,gBAAe;AAClD,YAAM,yBAAyB,GAAGA,SAAQ,0BAA0B;AACpE,YAAM,MAAM,GAAG,sBAAsB,QAAQ,IAAI,WAAW;AAC5D,YAAM,WAAW,OAAO,GAAG,SAAS,aAAa,KAAK,QAAQ;AAAA,QAC5D,QAAQ,YAAY,QAAQ,GAAK;AAAA,QACjC,wBAAwB;AAAA,MAC1B,CAAC;AACD,aAAO;AAAA,IACT;AACA,QAAM,uBAAuB,CAAC,aAAa,iBAAiB,iBAAiB;AAC3E,YAAM,yBAAyB,GAAGA,SAAQ,0BAA0B;AACpE,YAAM,yBAAyB,iBAAiB,eAAe,aAAa,cAAc,gBAAgB;AAC1G,YAAM,qBAAqB,GAAG,YAAY,YAAY,CAAC,IAAI,gBAAgB,KAAK,GAAG,CAAC,IAAI,sBAAsB;AAC9G,YAAM,SAAS,GAAG,sBAAsB,WAAW,IAAI,YAAY,YAAY,CAAC,IAAI,sBAAsB;AAC1G,YAAM,cAAc,GAAG,MAAM,IAAI,kBAAkB;AACnD,aAAO;AAAA,IACT;AACA,QAAM,4BAA4B,OAAO,aAAa,iBAAiB,iBAAiB;AACtF,YAAM,cAAc,qBAAqB,aAAa,iBAAiB,YAAY;AACnF,YAAM,gBAAgB,MAAM,uBAAuB,WAAW;AAC9D,UAAI,CAAC,iBAAiB,CAAC,QAAQ,aAAa,QAAQ,cAAc,SAAS,eAAe,GAAG;AAC3F;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,4BAA4B;AACpC,QAAM,mBAAmB,CAAC,UAAU,iBAAiB;AACnD,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,mBAAmB,eAAe,oBAAoB,SAAS;AACjE,eAAO;AAAA,MACT;AACA,YAAM,wBAAwB,cAAc,YAAY,yBAAyB;AACjF,UAAI,CAAC,uBAAuB;AAC1B,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,YAAM,uBAAuB,sBAAsB,cAAc;AACjE,UAAI,CAAC,sBAAsB;AACzB;AAAA,MACF;AACA,aAAO,qBAAqB,YAAY;AAAA,IAC1C;AACA,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,sBAAsB,OAAO,UAAU,iBAAiB,iBAAiB;AAC7E,YAAM,cAAc,SAAS;AAC7B,YAAM,gBAAgB,OAAM,WAAU;AACpC,YAAI;AACF,iBAAO,MAAM,OAAO;AAAA,QACtB,QAAQ;AACN;AAAA,QACF;AAAA,MACF;AACA,YAAM,qBAAqB,GAAGA,SAAQ,kBAAkB,UAAU,YAAY,GAAG;AACjF,UAAI,qBAAqB,QAAQ,aAAa,QAAQ,iBAAiB,kBAAkB,OAAO,GAAG;AACjG,eAAO;AAAA,MACT;AACA,YAAM,eAAe,GAAG,gBAAgB,uBAAuB,cAAc,aAAa,eAAe;AACzG,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,cAAc,YAAY,kBAAkB;AAChD,WAAK,GAAG,gBAAgB,sCAAsC,KAAK,aAAa,SAAS,WAAW,GAAG;AACrG,cAAM,mBAAmB,GAAG,WAAW,GAAG,WAAW;AACrD,cAAM,qBAAqB,OAAO,GAAG,SAAS,aAAa,kBAAkB,MAAM;AACnF,eAAO,KAAK,MAAM,mBAAmB,SAAS,CAAC;AAAA,MACjD;AACA,YAAM,UAAW,MAAM,cAAc,OAAO,GAAG,aAAa,iBAAiB,aAAa,iBAAiB,YAAY,CAAC,KAAO,MAAM,cAAc,OAAO,GAAGA,SAAQ,2BAA2B,aAAa,iBAAiB,YAAY,CAAC;AAC3O,UAAI,WAAW,QAAQ,aAAa,QAAQ,QAAQ,SAAS,eAAe,GAAG;AAC7E,eAAO;AAAA,MACT;AACA;AAAA,IACF;AACA,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,4BAA4B,gBAAc;AAC9C,YAAM,iBAAiB,OAAO,QAAQ,WAAW,QAAQ,EAAE,IAAI,CAAC,CAAC,aAAa,aAAa,MAAM;AAC/F,cAAM,WAAW;AACjB,YAAI,aAAa,eAAe,oBAAoB,QAAS,QAAO;AACpE,cAAM;AAAA,UACJ,gBAAgB;AAAA,UAChB,WAAW;AAAA,QACb,IAAI,iBAAiB,CAAC;AACtB,YAAI,CAAC,mBAAmB,eAAe,CAAC,iBAAiB,YAAa,QAAO;AAC7E,cAAM,kBAAkB,GAAGA,SAAQ,mBAAmB,UAAU,eAAe,aAAa,WAAW;AACvG,cAAM,oBAAoB,GAAGA,SAAQ,mBAAmB,UAAU,eAAe,aAAa,SAAS;AACvG,YAAI,CAAC,kBAAkB,CAAC,iBAAkB,QAAO;AACjD,cAAM,WAAW;AAAA,UACf,CAAC,eAAe,aAAa,WAAW,GAAG;AAAA,YACzC,GAAG;AAAA,YACH,SAAS;AAAA,UACX;AAAA,UACA,CAAC,eAAe,aAAa,SAAS,GAAG;AAAA,YACvC,GAAG;AAAA,YACH,SAAS;AAAA,UACX;AAAA,QACF;AACA,eAAO,CAAC,UAAU,QAAQ;AAAA,MAC5B,CAAC,EAAE,OAAO,WAAS,UAAU,IAAI;AACjC,aAAO,OAAO,YAAY,cAAc;AAAA,IAC1C;AACA,IAAAA,SAAQ,4BAA4B;AACpC,QAAM,6BAA6B,OAAMC,YAAU;AACjD,YAAM,uBAAuB,OAAO,QAAQA,QAAO,QAAQ,EAAE,IAAI,OAAO,CAAC,aAAa,aAAa,MAAM;AACvG,cAAM,WAAW;AACjB,YAAI,aAAa,eAAe,oBAAoB,QAAS,QAAO;AACpE,cAAM;AAAA,UACJ,gBAAgB;AAAA,UAChB,WAAW;AAAA,QACb,IAAI,iBAAiB,CAAC;AACtB,YAAI,CAAC,mBAAmB,eAAe,CAAC,iBAAiB,YAAa,QAAO;AAC7E,cAAM,CAAC,oBAAoB,gBAAgB,IAAI,MAAM,QAAQ,IAAI,CAAC,uBAAuB,kBAAkB,WAAW,GAAG,uBAAuB,gBAAgB,WAAW,CAAC,CAAC;AAC7K,YAAI,CAAC,oBAAoB,CAAC,mBAAoB,QAAO;AACrD,cAAM,WAAW;AAAA,UACf,CAAC,eAAe,aAAa,WAAW,GAAG;AAAA,YACzC,GAAG;AAAA,YACH,SAAS;AAAA,UACX;AAAA,UACA,CAAC,eAAe,aAAa,SAAS,GAAG;AAAA,YACvC,GAAG;AAAA,YACH,SAAS;AAAA,UACX;AAAA,QACF;AACA,eAAO,CAAC,UAAU,QAAQ;AAAA,MAC5B,CAAC;AACD,YAAM,gBAAgB,MAAM,QAAQ,IAAI,oBAAoB,GAAG,OAAO,WAAS,UAAU,IAAI;AAC7F,aAAO,OAAO,YAAY,YAAY;AAAA,IACxC;AACA,IAAAD,SAAQ,6BAA6B;AACrC,QAAM,2BAA2B,OAAOC,SAAQ,aAAa;AAC3D,UAAI,UAAU;AACZ,YAAI;AACF,gBAAM,iBAAiB,OAAO,GAAGD,SAAQ,4BAA4BC,OAAM;AAC3E,iBAAO;AAAA,YACL,UAAU;AAAA,YACV,gBAAgBA,QAAO;AAAA,UACzB;AAAA,QACF,QAAQ;AAAA,QAAC;AAAA,MACX;AACA,YAAM,6BAA6B,cAAc,YAAY,8BAA8B;AAC3F,YAAM,iBAAiB,GAAGD,SAAQ,2BAA2B,0BAA0B;AACvF,aAAO;AAAA,QACL,UAAU;AAAA,QACV,gBAAgB,2BAA2B;AAAA,MAC7C;AAAA,IACF;AACA,IAAAA,SAAQ,2BAA2B;AACnC,QAAM,cAAc,qBAAmB;AACrC,YAAM,WAAW,GAAGA,SAAQ,0BAA0B;AACtD,YAAM,MAAM,GAAG,QAAQ,QAAQ,IAAI,eAAe;AAClD,cAAQ,GAAG,SAAS,aAAa,KAAK,QAAQ;AAAA,IAChD;AACA,IAAAA,SAAQ,cAAc;AACtB,QAAM,oBAAoB,cAAY;AACpC,UAAI,EAAE,GAAG,gBAAgB,kBAAkB,QAAQ,GAAG;AACpD,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,aAAa,CAAC,UAAU,UAAU,QAAQ;AAChD,YAAM,UAAU,CAAC,eAAe,eAAe,aAAa;AAC5D,YAAM,oBAAoB,kBAAkB,UAAU;AACtD,YAAM,YAAY,kBAAkB,aAAa;AACjD,aAAO;AAAA,QACL;AAAA,QACA,iBAAiB,UAAU,SAAS,IAAI,IAAI,OAAO;AAAA,MACrD;AAAA,IACF;AACA,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,gCAAgC,cAAY;AAChD,YAAMC,UAAS,cAAc,YAAY,qCAAqC;AAC9E,UAAI,CAACA,SAAQ;AACX,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,YAAM,6BAA6BA,QAAO,SAAS,cAAc;AACjE,UAAI,CAAC,8BAA8B,2BAA2B,WAAW,GAAG;AAC1E;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,KAAK,GAAGD,SAAQ,mBAAmB,QAAQ;AAC3C,YAAM,iBAAiB,SAAS,kBAAkB,oBAAoB;AACtE,YAAM,gBAAgB,SAAS,kBAAkB,2BAA2B;AAC5E,UAAI,CAAC,gBAAgB;AACnB,eAAO;AAAA,MACT;AACA,aAAO,2BAA2B,KAAK,aAAW,QAAQ,aAAa,QAAQ,QAAQ,aAAa,GAAG,cAAc,CAAC;AAAA,IACxH;AACA,QAAM,4BAA4B,cAAY;AAC5C,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,mBAAmB,eAAe,oBAAoB,SAAS;AACjE,eAAO;AAAA,MACT;AACA,YAAM,wBAAwB,cAAc,YAAY,yBAAyB;AACjF,UAAI,CAAC,uBAAuB;AAC1B,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,YAAM,uBAAuB,sBAAsB,cAAc;AACjE,aAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC,qBAAqB,eAAe,aAAa,WAAW;AAAA,IACjG;AACA,QAAM,4BAA4B,aAAW,CAAC,EAAE,QAAQ,WAAW,QAAQ,wBAAwB,QAAQ;AAC3G,QAAM,8BAA8B,CAAC,oBAAoB,aAAa;AACpE,UAAI,qBAAqB,KAAK,qBAAqB,KAAK;AACtD,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AACA,UAAI,aAAa,MAAM;AACrB,eAAO,qBAAqB;AAAA,MAC9B,OAAO;AACL,cAAM,+BAA+B,GAAG,QAAQ,6BAA6B,UAAU,GAAG;AAC1F,eAAO,8BAA8B;AAAA,MACvC;AAAA,IACF;AACA,QAAM,eAAe,CAAC,UAAU,aAAa;AAC3C,UAAI,SAAS,iBAAiB;AAC5B,YAAI,SAAS,oBAAoB,SAAS,kBAAkB,GAAG;AAC7D,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,oBAAoB,SAAS,kBAAkB,GAAG;AAC7D,iBAAO,SAAS,OAAO,OAAK,QAAQ,aAAa,QAAQ,EAAE,SAAS,CAAC,SAAS,UAAU,SAAS,UAAU,SAAS,QAAQ,CAAC,CAAC;AAAA,QAChI;AACA,eAAO;AAAA,MACT;AACA,aAAO,SAAS,OAAO,OAAK,QAAQ,aAAa,QAAQ,EAAE,SAAS,CAAC,SAAS,eAAe,SAAS,eAAe,SAAS,aAAa,CAAC,CAAC;AAAA,IAC/I;AACA,QAAM,aAAa,eAAa;AAC9B,UAAI,CAAC,aAAa,CAAC,UAAU,OAAQ,QAAO;AAC5C,aAAO,UAAU,KAAK,UAAQ,KAAK,QAAQ;AAAA,IAC7C;AACA,QAAM,iBAAiB,CAAC;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,UAAI,EAAE,GAAG,gBAAgB,kBAAkB,QAAQ,GAAG;AACpD,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AACA,UAAI,CAAC,0BAA0B,OAAO,GAAG;AACvC,cAAM,IAAI,MAAM,qCAAqC;AAAA,MACvD;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,YAAY,aAAa,kBAAkB,QAAQ;AACzD,UAAI,UAAU;AACd,UAAI,uBAAuB;AAC3B,UAAI,SAAS,mBAAmB,QAAQ,oBAAoB;AAC1D,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,KAAK,GAAGA,SAAQ,mBAAmB,QAAQ;AAC3C,YAAI,QAAQ,aAAa,eAAe,eAAe,GAAG;AACxD,oBAAU,QAAQ,aAAa,QAAQ,QAAQ,SAAS,eAAe;AACvE,iCAAuB,QAAQ,aAAa,QAAQ,sBAAsB,eAAe;AAAA,QAC3F,WAAW,QAAQ,aAAa,eAAe,iBAAiB,GAAG;AACjE,oBAAU,QAAQ,aAAa,QAAQ,QAAQ,oBAAoB,iBAAiB;AACpF,iCAAuB,QAAQ,aAAa,QAAQ,wBAAwB,iBAAiB;AAAA,QAC/F,OAAO;AACL,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QACjD;AAAA,MACF,OAAO;AACL,cAAM;AAAA,UACJ;AAAA,QACF,KAAK,GAAGA,SAAQ,mBAAmB,QAAQ;AAC3C,YAAI,CAAC,QAAQ,aAAa,eAAe,eAAe,GAAG;AACzD,gBAAM,IAAI,MAAM,wCAAwC;AAAA,QAC1D;AACA,kBAAU,QAAQ,aAAa,QAAQ,QAAQ,SAAS,eAAe;AACvE,+BAAuB,QAAQ,aAAa,QAAQ,sBAAsB,eAAe;AAAA,MAC3F;AACA,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,YAAM,kBAAkB,4BAA4B,qBAAqB,SAAS,SAAS;AAC3F,UAAI,wBAAwB,cAAc;AACxC,kBAAU;AAAA,MACZ;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,mBAAmB;AAAA,UACjB,GAAG;AAAA,UACH;AAAA,QACF;AAAA,QACA;AAAA,QACA,cAAc,uBAAuB,eAAe;AAAA,QACpD,YAAY,WAAW,SAAS;AAAA,QAChC;AAAA,QACA,cAAc,QAAQ;AAAA,MACxB;AAAA,IACF;AACA,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,+BAA+B,CAAC,UAAU,iBAAiB;AAC/D,YAAM,wBAAwB,GAAGA,SAAQ,kBAAkB,UAAU,YAAY;AACjF,UAAI,CAAC,sBAAsB,SAAS;AAClC;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,kBAAkB,GAAGA,SAAQ,mBAAmB,QAAQ;AAC9D,YAAM,mBAAmB,SAAS,mBAAmB,CAAC,CAAC,eAAe;AACtE,YAAM,iBAAiB,mBAAmB;AAAA,QACxC,SAAS,eAAe;AAAA,QACxB,eAAe;AAAA,MACjB,IAAI;AAAA,QACF,SAAS,eAAe;AAAA,QACxB,eAAe;AAAA,MACjB;AACA,YAAM,eAAe,eAAe,WAAW,QAAQ,aAAa,eAAe,eAAe,SAAS,QAAQ,eAAe,aAAa,CAAC;AAChJ,YAAM,oBAAoB,GAAG,aAAa,8CAA8C,SAAS,gBAAgB,YAAY;AAC7H,UAAI,kBAAkB;AACtB,UAAI,CAAC,cAAc;AACjB,cAAM,sBAAsB,GAAG,gBAAgB,2BAA2B,kBAAkB,gBAAgB,eAAe,aAAa;AACxI,YAAI,oBAAoB;AACtB,4BAAkB;AAAA,QACpB;AAAA,MACF;AACA,YAAM,eAAe,8BAA8B,QAAQ;AAC3D,YAAM,qBAAqB,eAAe,UAAU;AACpD,cAAQ,GAAGA,SAAQ,gBAAgB;AAAA,QACjC,wBAAwB,0BAA0B,QAAQ;AAAA,QAC1D;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,cAAc;AAAA,QACd;AAAA,MACF,CAAC;AAAA,IACH;AACA,IAAAA,SAAQ,+BAA+B;AACvC,QAAM,oBAAoB,CAAC,UAAU,iBAAiB;AACpD,UAAI,SAAS,qBAAqB,OAAO;AACvC,eAAO;AAAA,MACT;AACA,UAAI,SAAS,kBAAkB,KAAK,SAAS,iBAAiB;AAC5D,eAAO;AAAA,MACT;AACA,YAAM,eAAe,GAAGA,SAAQ,8BAA8B,UAAU,YAAY;AACpF,UAAI,CAAC,YAAa,QAAO;AACzB,UAAI,YAAY,WAAY,QAAO;AACnC,UAAI,YAAY,QAAS,QAAO;AAChC,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,sBAAsB,CAAC;AAAA,MAC3B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM,eAAe,uBAAuB,GAAG,gBAAgB,mCAAmC,aAAa,mBAAmB,KAAK,GAAG,gBAAgB,4BAA4B,cAAc,aAAa,eAAe;AAChO,YAAM,gBAAgB,gBAAgB,KAAK,GAAG;AAC9C,YAAM,kBAAkB,GAAG,QAAQ,uBAAuB,cAAc,YAAY,YAAY,iBAAiB,CAAC;AAClH,YAAM,gBAAgB,CAAC,eAAe,SAAS,gBAAgB;AAC/D,YAAM,iBAAiB,0BAA0B,aAAa,YAAY;AAC1E,YAAM,iBAAiB,kBAAkB;AACzC,YAAM,2BAA2B,kBAAkB,iBAAiB,mBAAmB;AACvF,UAAI,kBAAkB,0BAA0B;AAC9C,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM,YAAY,YAAY,YAAY,CAAC,IAAI,YAAY;AAAA,QAC7D;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACF,IAAI,cAAc,YAAY,kBAAkB;AAChD,WAAK,GAAG,gBAAgB,sCAAsC,KAAK,aAAa,SAAS,YAAY,GAAG;AACtG,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM;AAAA,QACR;AAAA,MACF;AACA,YAAM,iBAAiB,GAAGA,SAAQ,0BAA0B;AAC5D,aAAO;AAAA,QACL,SAAS,cAAc;AAAA,QACvB,MAAM;AAAA,MACR;AAAA,IACF;AACA,IAAAA,SAAQ,sBAAsB;AAAA;AAAA;;;AC/d9B;AAAA,wCAAAE,UAAAC,SAAA;AACA,QAAIC,UAAS,sBAAuB;AACpC,QAAI,SAAS,UAAQ,QAAQ;AAC7B,QAAI,OAAO,UAAQ,MAAM;AAEzB,aAAS,WAAW,MAAM;AACxB,WAAK,SAAS;AACd,WAAK,WAAW;AAChB,WAAK,WAAW;AAGhB,UAAI,CAAC,MAAM;AACT,aAAK,SAASA,QAAO,MAAM,CAAC;AAC5B,eAAO;AAAA,MACT;AAGA,UAAI,OAAO,KAAK,SAAS,YAAY;AACnC,aAAK,SAASA,QAAO,MAAM,CAAC;AAC5B,aAAK,KAAK,IAAI;AACd,eAAO;AAAA,MACT;AAIA,UAAI,KAAK,UAAU,OAAO,SAAS,UAAU;AAC3C,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,gBAAQ,SAAS,WAAY;AAC3B,eAAK,KAAK,OAAO,IAAI;AACrB,eAAK,WAAW;AAChB,eAAK,KAAK,OAAO;AAAA,QACnB,EAAE,KAAK,IAAI,CAAC;AACZ,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,UAAU,2BAA0B,OAAO,OAAO,GAAG;AAAA,IACjE;AACA,SAAK,SAAS,YAAY,MAAM;AAEhC,eAAW,UAAU,QAAQ,SAAS,MAAM,MAAM;AAChD,WAAK,SAASA,QAAO,OAAO,CAAC,KAAK,QAAQA,QAAO,KAAK,IAAI,CAAC,CAAC;AAC5D,WAAK,KAAK,QAAQ,IAAI;AAAA,IACxB;AAEA,eAAW,UAAU,MAAM,SAAS,IAAI,MAAM;AAC5C,UAAI;AACF,aAAK,MAAM,IAAI;AACjB,WAAK,KAAK,OAAO,IAAI;AACrB,WAAK,KAAK,OAAO;AACjB,WAAK,WAAW;AAChB,WAAK,WAAW;AAAA,IAClB;AAEA,IAAAD,QAAO,UAAU;AAAA;AAAA;;;ACtDjB;AAAA,gEAAAE,UAAAC,SAAA;AAAA;AAEA,aAAS,aAAa,SAAS;AAC9B,UAAI,UAAW,UAAU,IAAK,MAAM,UAAU,MAAM,IAAI,IAAI;AAC5D,aAAO;AAAA,IACR;AAEA,QAAI,mBAAmB;AAAA,MACtB,OAAO,aAAa,GAAG;AAAA,MACvB,OAAO,aAAa,GAAG;AAAA,MACvB,OAAO,aAAa,GAAG;AAAA,IACxB;AAEA,aAAS,oBAAoB,KAAK;AACjC,UAAI,aAAa,iBAAiB,GAAG;AACrC,UAAI,YAAY;AACf,eAAO;AAAA,MACR;AAEA,YAAM,IAAI,MAAM,wBAAwB,MAAM,GAAG;AAAA,IAClD;AAEA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAEA,QAAIC,UAAS,sBAAuB;AAEpC,QAAI,sBAAsB;AAE1B,QAAI,YAAY;AAAhB,QACC,kBAAkB;AADnB,QAEC,gBAAgB;AAFjB,QAGC,UAAU;AAHX,QAIC,UAAU;AAJX,QAKC,kBAAmB,UAAU,gBAAkB,mBAAmB;AALnE,QAMC,kBAAkB,UAAW,mBAAmB;AAEjD,aAAS,UAAU,QAAQ;AAC1B,aAAO,OACL,QAAQ,MAAM,EAAE,EAChB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG;AAAA,IACrB;AAEA,aAAS,kBAAkB,WAAW;AACrC,UAAIA,QAAO,SAAS,SAAS,GAAG;AAC/B,eAAO;AAAA,MACR,WAAW,aAAa,OAAO,WAAW;AACzC,eAAOA,QAAO,KAAK,WAAW,QAAQ;AAAA,MACvC;AAEA,YAAM,IAAI,UAAU,qDAAqD;AAAA,IAC1E;AAEA,aAAS,UAAU,WAAW,KAAK;AAClC,kBAAY,kBAAkB,SAAS;AACvC,UAAI,aAAa,oBAAoB,GAAG;AAIxC,UAAI,wBAAwB,aAAa;AAEzC,UAAI,cAAc,UAAU;AAE5B,UAAI,SAAS;AACb,UAAI,UAAU,QAAQ,MAAM,iBAAiB;AAC5C,cAAM,IAAI,MAAM,+BAA+B;AAAA,MAChD;AAEA,UAAI,YAAY,UAAU,QAAQ;AAClC,UAAI,eAAe,YAAY,IAAI;AAClC,oBAAY,UAAU,QAAQ;AAAA,MAC/B;AAEA,UAAI,cAAc,SAAS,WAAW;AACrC,cAAM,IAAI,MAAM,gCAAgC,YAAY,eAAe,cAAc,UAAU,aAAa;AAAA,MACjH;AAEA,UAAI,UAAU,QAAQ,MAAM,iBAAiB;AAC5C,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACxD;AAEA,UAAI,UAAU,UAAU,QAAQ;AAEhC,UAAI,cAAc,SAAS,IAAI,SAAS;AACvC,cAAM,IAAI,MAAM,8BAA8B,UAAU,eAAe,cAAc,SAAS,KAAK,aAAa;AAAA,MACjH;AAEA,UAAI,wBAAwB,SAAS;AACpC,cAAM,IAAI,MAAM,8BAA8B,UAAU,gBAAgB,wBAAwB,iBAAiB;AAAA,MAClH;AAEA,UAAI,UAAU;AACd,gBAAU;AAEV,UAAI,UAAU,QAAQ,MAAM,iBAAiB;AAC5C,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACxD;AAEA,UAAI,UAAU,UAAU,QAAQ;AAEhC,UAAI,cAAc,WAAW,SAAS;AACrC,cAAM,IAAI,MAAM,8BAA8B,UAAU,mBAAmB,cAAc,UAAU,GAAG;AAAA,MACvG;AAEA,UAAI,wBAAwB,SAAS;AACpC,cAAM,IAAI,MAAM,8BAA8B,UAAU,gBAAgB,wBAAwB,iBAAiB;AAAA,MAClH;AAEA,UAAI,UAAU;AACd,gBAAU;AAEV,UAAI,WAAW,aAAa;AAC3B,cAAM,IAAI,MAAM,8CAA8C,cAAc,UAAU,gBAAgB;AAAA,MACvG;AAEA,UAAI,WAAW,aAAa,SAC3B,WAAW,aAAa;AAEzB,UAAI,MAAMA,QAAO,YAAY,WAAW,UAAU,WAAW,OAAO;AAEpE,WAAK,SAAS,GAAG,SAAS,UAAU,EAAE,QAAQ;AAC7C,YAAI,MAAM,IAAI;AAAA,MACf;AACA,gBAAU,KAAK,KAAK,QAAQ,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,OAAO;AAE/E,eAAS;AAET,eAAS,IAAI,QAAQ,SAAS,IAAI,UAAU,EAAE,QAAQ;AACrD,YAAI,MAAM,IAAI;AAAA,MACf;AACA,gBAAU,KAAK,KAAK,QAAQ,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,OAAO;AAE/E,YAAM,IAAI,SAAS,QAAQ;AAC3B,YAAM,UAAU,GAAG;AAEnB,aAAO;AAAA,IACR;AAEA,aAAS,aAAa,KAAK,OAAO,MAAM;AACvC,UAAI,UAAU;AACd,aAAO,QAAQ,UAAU,QAAQ,IAAI,QAAQ,OAAO,MAAM,GAAG;AAC5D,UAAE;AAAA,MACH;AAEA,UAAI,YAAY,IAAI,QAAQ,OAAO,KAAK;AACxC,UAAI,WAAW;AACd,UAAE;AAAA,MACH;AAEA,aAAO;AAAA,IACR;AAEA,aAAS,UAAU,WAAW,KAAK;AAClC,kBAAY,kBAAkB,SAAS;AACvC,UAAI,aAAa,oBAAoB,GAAG;AAExC,UAAI,iBAAiB,UAAU;AAC/B,UAAI,mBAAmB,aAAa,GAAG;AACtC,cAAM,IAAI,UAAU,MAAM,MAAM,2BAA2B,aAAa,IAAI,mBAAmB,iBAAiB,GAAG;AAAA,MACpH;AAEA,UAAI,WAAW,aAAa,WAAW,GAAG,UAAU;AACpD,UAAI,WAAW,aAAa,WAAW,YAAY,UAAU,MAAM;AACnE,UAAI,UAAU,aAAa;AAC3B,UAAI,UAAU,aAAa;AAE3B,UAAI,UAAU,IAAI,IAAI,UAAU,IAAI,IAAI;AAExC,UAAI,cAAc,UAAU;AAE5B,UAAI,MAAMA,QAAO,aAAa,cAAc,IAAI,KAAK,OAAO;AAE5D,UAAI,SAAS;AACb,UAAI,QAAQ,IAAI;AAChB,UAAI,aAAa;AAGhB,YAAI,QAAQ,IAAI;AAAA,MACjB,OAAO;AAGN,YAAI,QAAQ,IAAI,YAAY;AAE5B,YAAI,QAAQ,IAAI,UAAU;AAAA,MAC3B;AACA,UAAI,QAAQ,IAAI;AAChB,UAAI,QAAQ,IAAI;AAChB,UAAI,WAAW,GAAG;AACjB,YAAI,QAAQ,IAAI;AAChB,kBAAU,UAAU,KAAK,KAAK,QAAQ,GAAG,UAAU;AAAA,MACpD,OAAO;AACN,kBAAU,UAAU,KAAK,KAAK,QAAQ,UAAU,UAAU;AAAA,MAC3D;AACA,UAAI,QAAQ,IAAI;AAChB,UAAI,QAAQ,IAAI;AAChB,UAAI,WAAW,GAAG;AACjB,YAAI,QAAQ,IAAI;AAChB,kBAAU,KAAK,KAAK,QAAQ,UAAU;AAAA,MACvC,OAAO;AACN,kBAAU,KAAK,KAAK,QAAQ,aAAa,QAAQ;AAAA,MAClD;AAEA,aAAO;AAAA,IACR;AAEA,IAAAD,QAAO,UAAU;AAAA,MAChB;AAAA,MACA;AAAA,IACD;AAAA;AAAA;;;AC1LA;AAAA,qDAAAE,UAAAC,SAAA;AAAA;AAEA,QAAIC,UAAS,UAAQ,QAAQ,EAAE;AAC/B,QAAI,aAAa,UAAQ,QAAQ,EAAE;AAEnC,IAAAD,QAAO,UAAU;AAEjB,aAAS,SAAS,GAAG,GAAG;AAGtB,UAAI,CAACC,QAAO,SAAS,CAAC,KAAK,CAACA,QAAO,SAAS,CAAC,GAAG;AAC9C,eAAO;AAAA,MACT;AAKA,UAAI,EAAE,WAAW,EAAE,QAAQ;AACzB,eAAO;AAAA,MACT;AAEA,UAAI,IAAI;AACR,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AAEjC,aAAK,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA,MACjB;AACA,aAAO,MAAM;AAAA,IACf;AAEA,aAAS,UAAU,WAAW;AAC5B,MAAAA,QAAO,UAAU,QAAQ,WAAW,UAAU,QAAQ,SAAS,MAAM,MAAM;AACzE,eAAO,SAAS,MAAM,IAAI;AAAA,MAC5B;AAAA,IACF;AAEA,QAAI,eAAeA,QAAO,UAAU;AACpC,QAAI,mBAAmB,WAAW,UAAU;AAC5C,aAAS,UAAU,WAAW;AAC5B,MAAAA,QAAO,UAAU,QAAQ;AACzB,iBAAW,UAAU,QAAQ;AAAA,IAC/B;AAAA;AAAA;;;ACxCA;AAAA,8BAAAC,UAAAC,SAAA;AAAA,QAAIC,UAAS,sBAAuB;AACpC,QAAIC,UAAS,UAAQ,QAAQ;AAC7B,QAAI,cAAc;AAClB,QAAI,OAAO,UAAQ,MAAM;AAEzB,QAAI,wBAAwB;AAC5B,QAAI,qBAAqB;AACzB,QAAI,2BAA2B;AAC/B,QAAI,yBAAyB;AAE7B,QAAI,qBAAqB,OAAOA,QAAO,oBAAoB;AAC3D,QAAI,oBAAoB;AACtB,kCAA4B;AAC5B,4BAAsB;AAAA,IACxB;AAEA,aAAS,iBAAiB,KAAK;AAC7B,UAAID,QAAO,SAAS,GAAG,GAAG;AACxB;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,MACF;AAEA,UAAI,CAAC,oBAAoB;AACvB,cAAM,UAAU,wBAAwB;AAAA,MAC1C;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,UAAU,wBAAwB;AAAA,MAC1C;AAEA,UAAI,OAAO,IAAI,SAAS,UAAU;AAChC,cAAM,UAAU,wBAAwB;AAAA,MAC1C;AAEA,UAAI,OAAO,IAAI,sBAAsB,UAAU;AAC7C,cAAM,UAAU,wBAAwB;AAAA,MAC1C;AAEA,UAAI,OAAO,IAAI,WAAW,YAAY;AACpC,cAAM,UAAU,wBAAwB;AAAA,MAC1C;AAAA,IACF;AAEA,aAAS,kBAAkB,KAAK;AAC9B,UAAIA,QAAO,SAAS,GAAG,GAAG;AACxB;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B;AAAA,MACF;AAEA,YAAM,UAAU,sBAAsB;AAAA,IACxC;AAEA,aAAS,iBAAiB,KAAK;AAC7B,UAAIA,QAAO,SAAS,GAAG,GAAG;AACxB;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,CAAC,oBAAoB;AACvB,cAAM,UAAU,kBAAkB;AAAA,MACpC;AAEA,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,UAAU,kBAAkB;AAAA,MACpC;AAEA,UAAI,IAAI,SAAS,UAAU;AACzB,cAAM,UAAU,kBAAkB;AAAA,MACpC;AAEA,UAAI,OAAO,IAAI,WAAW,YAAY;AACpC,cAAM,UAAU,kBAAkB;AAAA,MACpC;AAAA,IACF;AAEA,aAASE,YAAW,QAAQ;AAC1B,aAAO,OACJ,QAAQ,MAAM,EAAE,EAChB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG;AAAA,IACvB;AAEA,aAASC,UAAS,WAAW;AAC3B,kBAAY,UAAU,SAAS;AAE/B,UAAI,UAAU,IAAI,UAAU,SAAS;AACrC,UAAI,YAAY,GAAG;AACjB,iBAAS,IAAI,GAAG,IAAI,SAAS,EAAE,GAAG;AAChC,uBAAa;AAAA,QACf;AAAA,MACF;AAEA,aAAO,UACJ,QAAQ,OAAO,GAAG,EAClB,QAAQ,MAAM,GAAG;AAAA,IACtB;AAEA,aAAS,UAAU,UAAU;AAC3B,UAAI,OAAO,CAAC,EAAE,MAAM,KAAK,WAAW,CAAC;AACrC,UAAI,SAAS,KAAK,OAAO,KAAK,MAAM,QAAQ,EAAE,MAAM,MAAM,IAAI;AAC9D,aAAO,IAAI,UAAU,MAAM;AAAA,IAC7B;AAEA,aAAS,eAAe,KAAK;AAC3B,aAAOH,QAAO,SAAS,GAAG,KAAK,OAAO,QAAQ;AAAA,IAChD;AAEA,aAAS,eAAe,OAAO;AAC7B,UAAI,CAAC,eAAe,KAAK;AACvB,gBAAQ,KAAK,UAAU,KAAK;AAC9B,aAAO;AAAA,IACT;AAEA,aAAS,iBAAiB,MAAM;AAC9B,aAAO,SAAS,KAAK,OAAO,QAAQ;AAClC,yBAAiB,MAAM;AACvB,gBAAQ,eAAe,KAAK;AAC5B,YAAI,OAAOC,QAAO,WAAW,QAAQ,MAAM,MAAM;AACjD,YAAI,OAAO,KAAK,OAAO,KAAK,GAAG,KAAK,OAAO,QAAQ;AACnD,eAAOC,YAAW,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,QAAI;AACJ,QAAI,kBAAkB,qBAAqBD,UAAS,SAASG,iBAAgB,GAAG,GAAG;AACjF,UAAI,EAAE,eAAe,EAAE,YAAY;AACjC,eAAO;AAAA,MACT;AAEA,aAAOH,QAAO,gBAAgB,GAAG,CAAC;AAAA,IACpC,IAAI,SAASG,iBAAgB,GAAG,GAAG;AACjC,UAAI,CAAC,aAAa;AAChB,sBAAc;AAAA,MAChB;AAEA,aAAO,YAAY,GAAG,CAAC;AAAA,IACzB;AAEA,aAAS,mBAAmB,MAAM;AAChC,aAAO,SAAS,OAAO,OAAO,WAAW,QAAQ;AAC/C,YAAI,cAAc,iBAAiB,IAAI,EAAE,OAAO,MAAM;AACtD,eAAO,gBAAgBJ,QAAO,KAAK,SAAS,GAAGA,QAAO,KAAK,WAAW,CAAC;AAAA,MACzE;AAAA,IACF;AAEA,aAAS,gBAAgB,MAAM;AAC9B,aAAO,SAAS,KAAK,OAAO,YAAY;AACrC,0BAAkB,UAAU;AAC5B,gBAAQ,eAAe,KAAK;AAG5B,YAAI,SAASC,QAAO,WAAW,YAAY,IAAI;AAC/C,YAAI,OAAO,OAAO,OAAO,KAAK,GAAG,OAAO,KAAK,YAAY,QAAQ;AACjE,eAAOC,YAAW,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,aAAS,kBAAkB,MAAM;AAC/B,aAAO,SAAS,OAAO,OAAO,WAAW,WAAW;AAClD,yBAAiB,SAAS;AAC1B,gBAAQ,eAAe,KAAK;AAC5B,oBAAYC,UAAS,SAAS;AAC9B,YAAI,WAAWF,QAAO,aAAa,YAAY,IAAI;AACnD,iBAAS,OAAO,KAAK;AACrB,eAAO,SAAS,OAAO,WAAW,WAAW,QAAQ;AAAA,MACvD;AAAA,IACF;AAEA,aAAS,mBAAmB,MAAM;AAChC,aAAO,SAAS,KAAK,OAAO,YAAY;AACtC,0BAAkB,UAAU;AAC5B,gBAAQ,eAAe,KAAK;AAC5B,YAAI,SAASA,QAAO,WAAW,YAAY,IAAI;AAC/C,YAAI,OAAO,OAAO,OAAO,KAAK,GAAG,OAAO,KAAK;AAAA,UAC3C,KAAK;AAAA,UACL,SAASA,QAAO,UAAU;AAAA,UAC1B,YAAYA,QAAO,UAAU;AAAA,QAC/B,GAAG,QAAQ;AACX,eAAOC,YAAW,GAAG;AAAA,MACvB;AAAA,IACF;AAEA,aAAS,qBAAqB,MAAM;AAClC,aAAO,SAAS,OAAO,OAAO,WAAW,WAAW;AAClD,yBAAiB,SAAS;AAC1B,gBAAQ,eAAe,KAAK;AAC5B,oBAAYC,UAAS,SAAS;AAC9B,YAAI,WAAWF,QAAO,aAAa,YAAY,IAAI;AACnD,iBAAS,OAAO,KAAK;AACrB,eAAO,SAAS,OAAO;AAAA,UACrB,KAAK;AAAA,UACL,SAASA,QAAO,UAAU;AAAA,UAC1B,YAAYA,QAAO,UAAU;AAAA,QAC/B,GAAG,WAAW,QAAQ;AAAA,MACxB;AAAA,IACF;AAEA,aAAS,kBAAkB,MAAM;AAC/B,UAAI,QAAQ,gBAAgB,IAAI;AAChC,aAAO,SAAS,OAAO;AACrB,YAAI,YAAY,MAAM,MAAM,MAAM,SAAS;AAC3C,oBAAY,YAAY,UAAU,WAAW,OAAO,IAAI;AACxD,eAAO;AAAA,MACT;AAAA,IACF;AAEA,aAAS,mBAAmB,MAAM;AAChC,UAAI,QAAQ,kBAAkB,IAAI;AAClC,aAAO,SAAS,OAAO,OAAO,WAAW,WAAW;AAClD,oBAAY,YAAY,UAAU,WAAW,OAAO,IAAI,EAAE,SAAS,QAAQ;AAC3E,YAAI,SAAS,MAAM,OAAO,WAAW,SAAS;AAC9C,eAAO;AAAA,MACT;AAAA,IACF;AAEA,aAAS,mBAAmB;AAC1B,aAAO,SAAS,OAAO;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,aAAS,qBAAqB;AAC5B,aAAO,SAAS,OAAO,OAAO,WAAW;AACvC,eAAO,cAAc;AAAA,MACvB;AAAA,IACF;AAEA,IAAAF,QAAO,UAAU,SAAS,IAAI,WAAW;AACvC,UAAI,kBAAkB;AAAA,QACpB,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AACA,UAAI,oBAAoB;AAAA,QACtB,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MACR;AACA,UAAI,QAAQ,UAAU,MAAM,uCAAuC;AACnE,UAAI,CAAC;AACH,cAAM,UAAU,uBAAuB,SAAS;AAClD,UAAI,QAAQ,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,YAAY;AAC9C,UAAI,OAAO,MAAM,CAAC;AAElB,aAAO;AAAA,QACL,MAAM,gBAAgB,IAAI,EAAE,IAAI;AAAA,QAChC,QAAQ,kBAAkB,IAAI,EAAE,IAAI;AAAA,MACtC;AAAA,IACF;AAAA;AAAA;;;ACzQA;AAAA,qCAAAM,UAAAC,SAAA;AACA,QAAIC,UAAS,UAAQ,QAAQ,EAAE;AAE/B,IAAAD,QAAO,UAAU,SAAS,SAAS,KAAK;AACtC,UAAI,OAAO,QAAQ;AACjB,eAAO;AACT,UAAI,OAAO,QAAQ,YAAYC,QAAO,SAAS,GAAG;AAChD,eAAO,IAAI,SAAS;AACtB,aAAO,KAAK,UAAU,GAAG;AAAA,IAC3B;AAAA;AAAA;;;ACTA;AAAA,wCAAAC,UAAAC,SAAA;AACA,QAAIC,UAAS,sBAAuB;AACpC,QAAI,aAAa;AACjB,QAAI,MAAM;AACV,QAAI,SAAS,UAAQ,QAAQ;AAC7B,QAAI,WAAW;AACf,QAAI,OAAO,UAAQ,MAAM;AAEzB,aAAS,UAAU,QAAQ,UAAU;AACnC,aAAOA,QACJ,KAAK,QAAQ,QAAQ,EACrB,SAAS,QAAQ,EACjB,QAAQ,MAAM,EAAE,EAChB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG;AAAA,IACvB;AAEA,aAAS,gBAAgB,QAAQ,SAAS,UAAU;AAClD,iBAAW,YAAY;AACvB,UAAI,gBAAgB,UAAU,SAAS,MAAM,GAAG,QAAQ;AACxD,UAAI,iBAAiB,UAAU,SAAS,OAAO,GAAG,QAAQ;AAC1D,aAAO,KAAK,OAAO,SAAS,eAAe,cAAc;AAAA,IAC3D;AAEA,aAAS,QAAQ,MAAM;AACrB,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,KAAK;AACnB,UAAI,cAAc,KAAK,UAAU,KAAK;AACtC,UAAI,WAAW,KAAK;AACpB,UAAI,OAAO,IAAI,OAAO,GAAG;AACzB,UAAI,eAAe,gBAAgB,QAAQ,SAAS,QAAQ;AAC5D,UAAI,YAAY,KAAK,KAAK,cAAc,WAAW;AACnD,aAAO,KAAK,OAAO,SAAS,cAAc,SAAS;AAAA,IACrD;AAEA,aAAS,WAAW,MAAM;AACxB,UAAI,SAAS,KAAK;AAClB,eAAS,UAAU,OAAO,KAAK,aAAa;AAC5C,eAAS,UAAU,OAAO,KAAK,MAAM;AACrC,UAAI,OAAO,KAAK,KAAK,OAAO,GAAG,MAAM,QAAQ,UAAU,MAAM;AAC3D,cAAM,IAAI,UAAU,kDAAkD;AAAA,MACxE;AACA,UAAI,eAAe,IAAI,WAAW,MAAM;AACxC,WAAK,WAAW;AAChB,WAAK,SAAS,KAAK;AACnB,WAAK,WAAW,KAAK;AACrB,WAAK,SAAS,KAAK,aAAa,KAAK,MAAM;AAC3C,WAAK,UAAU,IAAI,WAAW,KAAK,OAAO;AAC1C,WAAK,OAAO,KAAK,SAAS,WAAY;AACpC,YAAI,CAAC,KAAK,QAAQ,YAAY,KAAK;AACjC,eAAK,KAAK;AAAA,MACd,EAAE,KAAK,IAAI,CAAC;AAEZ,WAAK,QAAQ,KAAK,SAAS,WAAY;AACrC,YAAI,CAAC,KAAK,OAAO,YAAY,KAAK;AAChC,eAAK,KAAK;AAAA,MACd,EAAE,KAAK,IAAI,CAAC;AAAA,IACd;AACA,SAAK,SAAS,YAAY,MAAM;AAEhC,eAAW,UAAU,OAAO,SAAS,OAAO;AAC1C,UAAI;AACF,YAAI,YAAY,QAAQ;AAAA,UACtB,QAAQ,KAAK;AAAA,UACb,SAAS,KAAK,QAAQ;AAAA,UACtB,QAAQ,KAAK,OAAO;AAAA,UACpB,UAAU,KAAK;AAAA,QACjB,CAAC;AACD,aAAK,KAAK,QAAQ,SAAS;AAC3B,aAAK,KAAK,QAAQ,SAAS;AAC3B,aAAK,KAAK,KAAK;AACf,aAAK,WAAW;AAChB,eAAO;AAAA,MACT,SAAS,GAAG;AACV,aAAK,WAAW;AAChB,aAAK,KAAK,SAAS,CAAC;AACpB,aAAK,KAAK,OAAO;AAAA,MACnB;AAAA,IACF;AAEA,eAAW,OAAO;AAElB,IAAAD,QAAO,UAAU;AAAA;AAAA;;;AClFjB;AAAA,0CAAAE,UAAAC,SAAA;AACA,QAAIC,UAAS,sBAAuB;AACpC,QAAI,aAAa;AACjB,QAAI,MAAM;AACV,QAAI,SAAS,UAAQ,QAAQ;AAC7B,QAAI,WAAW;AACf,QAAI,OAAO,UAAQ,MAAM;AACzB,QAAI,YAAY;AAEhB,aAAS,SAAS,OAAO;AACvB,aAAO,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAAA,IACnD;AAEA,aAAS,cAAc,OAAO;AAC5B,UAAI,SAAS,KAAK;AAChB,eAAO;AACT,UAAI;AAAE,eAAO,KAAK,MAAM,KAAK;AAAA,MAAG,SACzB,GAAG;AAAE,eAAO;AAAA,MAAW;AAAA,IAChC;AAEA,aAAS,cAAc,QAAQ;AAC7B,UAAI,gBAAgB,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC;AAC1C,aAAO,cAAcA,QAAO,KAAK,eAAe,QAAQ,EAAE,SAAS,QAAQ,CAAC;AAAA,IAC9E;AAEA,aAAS,oBAAoB,QAAQ;AACnC,aAAO,OAAO,MAAM,KAAK,CAAC,EAAE,KAAK,GAAG;AAAA,IACtC;AAEA,aAAS,iBAAiB,QAAQ;AAChC,aAAO,OAAO,MAAM,GAAG,EAAE,CAAC;AAAA,IAC5B;AAEA,aAAS,eAAe,QAAQ,UAAU;AACxC,iBAAW,YAAY;AACvB,UAAI,UAAU,OAAO,MAAM,GAAG,EAAE,CAAC;AACjC,aAAOA,QAAO,KAAK,SAAS,QAAQ,EAAE,SAAS,QAAQ;AAAA,IACzD;AAEA,aAAS,WAAW,QAAQ;AAC1B,aAAO,UAAU,KAAK,MAAM,KAAK,CAAC,CAAC,cAAc,MAAM;AAAA,IACzD;AAEA,aAAS,UAAU,QAAQ,WAAW,aAAa;AACjD,UAAI,CAAC,WAAW;AACd,YAAIC,OAAM,IAAI,MAAM,4CAA4C;AAChE,QAAAA,KAAI,OAAO;AACX,cAAMA;AAAA,MACR;AACA,eAAS,SAAS,MAAM;AACxB,UAAI,YAAY,iBAAiB,MAAM;AACvC,UAAI,eAAe,oBAAoB,MAAM;AAC7C,UAAI,OAAO,IAAI,SAAS;AACxB,aAAO,KAAK,OAAO,cAAc,WAAW,WAAW;AAAA,IACzD;AAEA,aAAS,UAAU,QAAQ,MAAM;AAC/B,aAAO,QAAQ,CAAC;AAChB,eAAS,SAAS,MAAM;AAExB,UAAI,CAAC,WAAW,MAAM;AACpB,eAAO;AAET,UAAI,SAAS,cAAc,MAAM;AAEjC,UAAI,CAAC;AACH,eAAO;AAET,UAAI,UAAU,eAAe,MAAM;AACnC,UAAI,OAAO,QAAQ,SAAS,KAAK;AAC/B,kBAAU,KAAK,MAAM,SAAS,KAAK,QAAQ;AAE7C,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,WAAW,iBAAiB,MAAM;AAAA,MACpC;AAAA,IACF;AAEA,aAAS,aAAa,MAAM;AAC1B,aAAO,QAAQ,CAAC;AAChB,UAAI,cAAc,KAAK;AACvB,oBAAc,eAAe,OAAO,KAAK,YAAY;AACrD,oBAAc,eAAe,OAAO,KAAK,MAAM;AAC/C,UAAI,OAAO,KAAK,KAAK,SAAS,MAAM,QAAQ,eAAe,MAAM;AAC/D,cAAM,IAAI,UAAU,kDAAkD;AAAA,MACxE;AACA,UAAI,eAAe,IAAI,WAAW,WAAW;AAC7C,WAAK,WAAW;AAChB,WAAK,YAAY,KAAK;AACtB,WAAK,WAAW,KAAK;AACrB,WAAK,SAAS,KAAK,YAAY,KAAK,MAAM;AAC1C,WAAK,YAAY,IAAI,WAAW,KAAK,SAAS;AAC9C,WAAK,OAAO,KAAK,SAAS,WAAY;AACpC,YAAI,CAAC,KAAK,UAAU,YAAY,KAAK;AACnC,eAAK,OAAO;AAAA,MAChB,EAAE,KAAK,IAAI,CAAC;AAEZ,WAAK,UAAU,KAAK,SAAS,WAAY;AACvC,YAAI,CAAC,KAAK,OAAO,YAAY,KAAK;AAChC,eAAK,OAAO;AAAA,MAChB,EAAE,KAAK,IAAI,CAAC;AAAA,IACd;AACA,SAAK,SAAS,cAAc,MAAM;AAClC,iBAAa,UAAU,SAAS,SAAS,SAAS;AAChD,UAAI;AACF,YAAI,QAAQ,UAAU,KAAK,UAAU,QAAQ,KAAK,WAAW,KAAK,IAAI,MAAM;AAC5E,YAAI,MAAM,UAAU,KAAK,UAAU,QAAQ,KAAK,QAAQ;AACxD,aAAK,KAAK,QAAQ,OAAO,GAAG;AAC5B,aAAK,KAAK,QAAQ,KAAK;AACvB,aAAK,KAAK,KAAK;AACf,aAAK,WAAW;AAChB,eAAO;AAAA,MACT,SAAS,GAAG;AACV,aAAK,WAAW;AAChB,aAAK,KAAK,SAAS,CAAC;AACpB,aAAK,KAAK,OAAO;AAAA,MACnB;AAAA,IACF;AAEA,iBAAa,SAAS;AACtB,iBAAa,UAAU;AACvB,iBAAa,SAAS;AAEtB,IAAAF,QAAO,UAAU;AAAA;AAAA;;;AC5HjB,IAAAG,eAAA;AAAA,8BAAAC,UAAA;AACA,QAAI,aAAa;AACjB,QAAI,eAAe;AAEnB,QAAI,aAAa;AAAA,MACf;AAAA,MAAS;AAAA,MAAS;AAAA,MAClB;AAAA,MAAS;AAAA,MAAS;AAAA,MAClB;AAAA,MAAS;AAAA,MAAS;AAAA,MAClB;AAAA,MAAS;AAAA,MAAS;AAAA,IACpB;AAEA,IAAAA,SAAQ,aAAa;AACrB,IAAAA,SAAQ,OAAO,WAAW;AAC1B,IAAAA,SAAQ,SAAS,aAAa;AAC9B,IAAAA,SAAQ,SAAS,aAAa;AAC9B,IAAAA,SAAQ,UAAU,aAAa;AAC/B,IAAAA,SAAQ,aAAa,SAAS,WAAW,MAAM;AAC7C,aAAO,IAAI,WAAW,IAAI;AAAA,IAC5B;AACA,IAAAA,SAAQ,eAAe,SAAS,aAAa,MAAM;AACjD,aAAO,IAAI,aAAa,IAAI;AAAA,IAC9B;AAAA;AAAA;;;ACrBA;AAAA,yEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oCAAoCA,SAAQ,2BAA2B;AAC/E,QAAM,QAAQ;AACd,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,iBAAiB;AACvB,QAAM,aAAa;AAAA,MACjB,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,IACtB;AACA,QAAM,iBAAiB,YAAY;AACjC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,KAAK,GAAG,eAAe,0BAA0B;AACjD,YAAMC,QAAO,GAAG,WAAW,IAAI,QAAQ,eAAe,YAAY,EAAE,GAAG,WAAW,eAAe;AACjG,YAAM,oBAAoB,IAAI,IAAIA,OAAM,QAAQ;AAChD,UAAI;AACF,cAAM,aAAa,IAAI,gBAAgB;AACvC,cAAM,YAAY,WAAW,MAAM,WAAW,MAAM,mBAAmB,GAAG,WAAW,kBAAkB;AACvG,cAAM,WAAW,MAAM,MAAM,kBAAkB,SAAS,GAAG;AAAA,UACzD,QAAQ,WAAW;AAAA,QACrB,CAAC;AACD,qBAAa,SAAS;AACtB,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,QAC1D;AACA,cAAM,OAAO,MAAM,SAAS,KAAK;AACjC,YAAI,OAAO,KAAK,QAAQ,UAAU;AAChC,gBAAM,IAAI,MAAM,kEAAkE;AAAA,QACpF;AACA,eAAO;AAAA,UACL,KAAK,KAAK;AAAA,UACV;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,cAAM,IAAI,MAAM,+BAA+B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAAA,MACzG;AAAA,IACF;AACA,QAAM,qBAAqB,CAAC,KAAK,cAAc;AAC7C,YAAM,WAAW,GAAG,MAAM,QAAQ,GAAG;AACrC,UAAI,CAAC,WAAW,CAAC,QAAQ,WAAW,CAAC,QAAQ,QAAQ;AACnD,cAAM,IAAI,MAAM,wBAAwB;AAAA,MAC1C;AACA,YAAM,gBAAgB,KAAK,MAAM,QAAQ,OAAO;AAChD,UAAI,QAAQ,OAAO,QAAQ,WAAW,gBAAgB;AACpD,cAAM,IAAI,MAAM,uBAAuB;AAAA,MACzC;AACA,UAAI,cAAc,YAAY,WAAW,SAAS;AAChD,cAAM,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AACA,UAAI,EAAE,GAAG,MAAM,QAAQ,KAAK,WAAW,gBAAgB,SAAS,GAAG;AACjE,cAAM,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AACA,QAAM,2BAA2B,YAAY;AAC3C,UAAI;AACF,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI,MAAM,eAAe;AACzB,cAAM,mBAAmB,CAAC,eAAe,YAAY,EAAE,SAAS,GAAG;AACnE,cAAM,aAAa,GAAG,YAAY,gCAAgC,gBAAgB;AAClF,cAAM,eAAe,mBAAmB,KAAK,SAAS;AACtD,YAAI,aAAa,WAAW,aAAa,4BAA4B,UAAU;AAC7E,iBAAO;AAAA,YACL,QAAQ;AAAA,YACR,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF,QAAQ;AAAA,MAAC;AACT,aAAO;AAAA,QACL,QAAQ,aAAa;AAAA,QACrB,UAAU;AAAA,MACZ;AAAA,IACF;AACA,IAAAD,SAAQ,2BAA2B;AACnC,QAAM,oCAAoC,OAAO;AAAA,MAC/C,QAAQ,aAAa;AAAA,MACrB,UAAU;AAAA,IACZ;AACA,IAAAA,SAAQ,oCAAoC;AAAA;AAAA;;;ACzF5C;AAAA,yDAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,cAAc;AACtB,QAAM,UAAU;AAChB,QAAM,mBAAmB,QAAQ,gBAAgB,mBAAsD;AACvG,QAAM,eAAe,QAAQ,gBAAgB,eAAkD;AAC/F,QAAM,kBAAkB,QAAQ,gBAAgB,mBAAyC;AACzF,QAAM,aAAa;AACnB,QAAM,iBAAiB;AACvB,QAAM,+BAA+B;AACrC,QAAM,cAAN,MAAkB;AAAA,MAChB,OAAO,SAAS,CAAC;AAAA,MACjB,OAAO;AAAA,MACP,OAAO,WAAW,gBAAgB;AAAA,MAClC,OAAO,iBAAiB;AAAA,QACtB,aAAa;AAAA,QACb,cAAc,CAAC;AAAA,MACjB;AAAA,MACA,OAAO,yBAAyB,CAAC;AAAA,MACjC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa,KAAK,UAAU,aAAa,MAAM,0BAA0B,OAAO;AAC9E,aAAK,WAAW;AAChB,YAAI,CAAC,WAAY;AACjB,cAAM,YAAY;AAAA,UAChB,OAAO,aAAa;AAAA,UACpB,UAAU,iBAAiB;AAAA,QAC7B;AACA,eAAO,OAAO,KAAK,QAAQ,SAAS;AACpC,SAAC,GAAG,WAAW,gBAAgB;AAAA,UAC7B,GAAG,KAAK,OAAO;AAAA,UACf,GAAG,KAAK,OAAO;AAAA,QACjB,CAAC;AACD,aAAK,gCAAgC;AACrC,cAAM,KAAK,yBAAyB,uBAAuB;AAAA,MAC7D;AAAA,MACA,OAAO,kCAAkC;AACvC,cAAM;AAAA,UACJ,QAAAC;AAAA,QACF,KAAK,GAAG,6BAA6B,mCAAmC;AACxE,aAAK,8BAA8BA,OAAM;AAAA,MAC3C;AAAA,MACA,aAAa,yBAAyB,WAAW;AAC/C,YAAI;AACJ,YAAI,WAAW;AACb,iCAAuB;AAAA,YACrB,QAAQ,KAAK,8BAA8B;AAAA,YAC3C,UAAU;AAAA,UACZ;AAAA,QACF,OAAO;AACL,iCAAuB,OAAO,GAAG,6BAA6B,0BAA0B;AAAA,QAC1F;AACA,cAAM;AAAA,UACJ,QAAAA;AAAA,UACA;AAAA,QACF,IAAI;AACJ,cAAM,iBAAiB,OAAO,GAAG,eAAe,0BAA0BA,SAAQ,QAAQ;AAC1F,aAAK,yBAAyB,eAAe,QAAQ;AACrD,aAAK,qCAAqC,eAAe,cAAc;AAAA,MACzE;AAAA,MACA,OAAO,sBAAsB;AAC3B,eAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,YAAY,KAAK;AACtB,YAAI,CAAC,KAAK,SAAU,QAAO;AAC3B,YAAI,OAAO,QAAQ,UAAU;AAC3B,iBAAO,KAAK,SAAS,GAAG;AAAA,QAC1B;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,kBAAkB,WAAW;AAClC,aAAK,iBAAiB;AAAA,MACxB;AAAA,MACA,OAAO,oBAAoB;AACzB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,8BAA8B,4BAA4B;AAC/D,aAAK,6BAA6B;AAAA,MACpC;AAAA,MACA,OAAO,gCAAgC;AACrC,eAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,yBAAyB,eAAe;AAC7C,aAAK,yBAAyB;AAAA,MAChC;AAAA,MACA,OAAO,2BAA2B;AAChC,eAAO,KAAK;AAAA,MACd;AAAA,MACA,OAAO,qCAAqC,sBAAsB;AAChE,aAAK,qCAAqC;AAAA,MAC5C;AAAA,MACA,OAAO,uCAAuC;AAC5C,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,IAAAD,SAAQ,cAAc;AAAA;AAAA;;;AClGtB;AAAA,+DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,cAAc;AACpB,QAAM,eAAe;AACrB,QAAM,gBAAgB;AACtB,QAAM,WAAW;AACjB,QAAM,mBAAmB;AACzB,QAAM,iBAAN,MAAqB;AAAA,MACnB,YAAY,CAAC;AAAA,MACb,YAAY,CAAC;AAAA,MACb,SAAS,CAAC;AAAA,MACV,YAAY,CAAC;AAAA,MACb,IAAI,UAAU,WAAW,kBAAkB;AACzC,eAAO,KAAK,UAAU,GAAG,QAAQ,IAAI,QAAQ,EAAE,KAAK;AAAA,MACtD;AAAA,MACA,MAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG;AACD,cAAM,eAAe,GAAG,SAAS,QAAQ,IAAI,YAAY,gBAAgB;AACzE,YAAI,UAAU,KAAK,UAAU,YAAY;AACzC,YAAI,CAAC,SAAS;AACZ,oBAAU,IAAI,aAAa,WAAW;AAAA,YACpC,UAAU,KAAK,cAAc,QAAQ;AAAA,YACrC;AAAA,YACA,OAAO,cAAc,YAAY,YAAY,OAAO;AAAA,YACpD,OAAO,cAAc,YAAY,YAAY,OAAO;AAAA,YACpD;AAAA,YACA,gBAAgB,0BAAwB;AACtC,oBAAM,oBAAoB,uBAAuB,IAAI;AACrD,mBAAK,aAAa;AAAA,gBAChB;AAAA,gBACA;AAAA,gBACA;AAAA,cACF,GAAG,iBAAiB;AAAA,YACtB;AAAA,UACF,CAAC;AACD,eAAK,YAAY,cAAc,OAAO;AAAA,QACxC;AACA,cAAM,YAAY,KAAK,eAAe,YAAY;AAClD,YAAI;AACF,gBAAM,OAAO,MAAM,QAAQ,KAAK;AAChC,eAAK,aAAa,SAAS,UAAU,KAAK,GAAG;AAC7C,iBAAO;AAAA,QACT,SAAS,OAAO;AACd,eAAK,aAAa;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,UACF,GAAG,WAAW,QAAQ;AACtB,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,UAAU;AACR,eAAO,KAAK,KAAK,SAAS,EAAE,OAAO,KAAK,mBAAmB,CAAC,EAAE,QAAQ,KAAK,gBAAgB,IAAI;AAC/F,eAAO,OAAO,KAAK,SAAS,EAAE,QAAQ,OAAK,EAAE,WAAW,CAAC;AAAA,MAC3D;AAAA,MACA,aAAa,MAAM;AACjB,cAAM,WAAW,OAAO,OAAO,KAAK,SAAS,EAAE,OAAO,aAAW,CAAC,QAAQ,KAAK,aAAa,QAAQ,SAAS,QAAQ;AACrH,iBAAS,QAAQ,OAAK,EAAE,WAAW,CAAC;AACpC,eAAO,QAAQ,IAAI,SAAS,IAAI,KAAK,cAAc,IAAI,CAAC;AAAA,MAC1D;AAAA,MACA,YAAY,UAAU;AACpB,cAAM,OAAO,KAAK,OAAO,SAAS,QAAQ,KAAK,SAAS;AACxD,YAAI,CAAC,MAAM;AACT,gBAAM,YAAY,OAAO,WAAW,sBAAsB;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,UAAU,UAAU,gBAAgB;AAClC,aAAK,aAAa,UAAU,MAAS;AACrC,YAAI,gBAAgB;AAClB,eAAK,OAAO,QAAQ,IAAI;AAAA,QAC1B,OAAO;AACL,iBAAO,KAAK,OAAO,QAAQ;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,YAAY,cAAc,UAAU;AAClC,YAAI,CAAC,SAAU,QAAO,KAAK,UAAU,YAAY;AAAA,YAAO,MAAK,UAAU,YAAY,IAAI;AAAA,MACzF;AAAA,MACA,aAAa,UAAU,KAAK;AAC1B,YAAI,CAAC,IAAK,QAAO,KAAK,UAAU,QAAQ;AAAA,YAAO,MAAK,UAAU,QAAQ,IAAI;AAAA,MAC5E;AAAA,MACA,aAAa;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,MACF,GAAG,kBAAkB;AACnB,cAAM,eAAe,GAAG,SAAS,QAAQ,IAAI,YAAY,gBAAgB;AACzE,aAAK,YAAY,cAAc,MAAS;AACxC,YAAI,qBAAqB,UAAa,qBAAqB,GAAG;AAC5D,eAAK,aAAa,SAAS,UAAU,MAAS;AAAA,QAChD;AACA,YAAI,qBAAqB,QAAW;AAClC;AAAA,QACF;AACA,cAAM,UAAU,KAAK,IAAI,OAAO,kBAAkB,GAAK;AACvD,cAAM,OAAO,KAAK,IAAI,IAAI;AAC1B,cAAM,SAAS,WAAW,MAAM;AAC9B,eAAK,aAAa;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC,EAAE,MAAM,MAAM;AAAA,UAAC,CAAC;AAAA,QACnB,GAAG,OAAO;AACV,qBAAa,KAAK,UAAU,YAAY,GAAG,MAAM;AACjD,aAAK,UAAU,YAAY,IAAI;AAAA,UAC7B,UAAU,mBAAmB;AAAA,UAC7B;AAAA,QACF;AACA,qBAAa,GAAG,SAAS,yBAAyB,SAAS,WAAW,cAAc;AAAA,UAClF,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACF,CAAC,CAAC;AAAA,MACJ;AAAA,MACA,eAAe,cAAc;AAC3B,cAAM,YAAY,KAAK,UAAU,YAAY;AAC7C,qBAAa,WAAW,MAAM;AAC9B,eAAO,KAAK,UAAU,YAAY;AAClC,eAAO;AAAA,MACT;AAAA,MACA,cAAc,UAAU;AACtB,cAAM,SAAS,KAAK,OAAO,SAAS,QAAQ;AAC5C,cAAM,YAAY,KAAK,UAAU,SAAS,QAAQ;AAClD,cAAM,MAAM,YAAY,CAAC,SAAS,IAAI,QAAQ,OAAO,SAAS,gBAAgB;AAC9E,eAAO;AAAA,UACL,GAAG;AAAA,UACH,gBAAgB;AAAA,YACd,GAAG,SAAS;AAAA,YACZ,GAAG;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MACA,mBAAmB,UAAU;AAC3B,eAAO,SAAO,CAAC,YAAY,IAAI,WAAW,GAAG,SAAS,QAAQ,GAAG;AAAA,MACnE;AAAA,IACF;AACA,IAAAA,SAAQ,iBAAiB;AAAA;AAAA;;;AC/IzB;AAAA,+DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,UAAUA,SAAQ,uBAAuBA,SAAQ,iBAAiBA,SAAQ,qBAAqBA,SAAQ,mBAAmBA,SAAQ,cAAcA,SAAQ,aAAa;AAC7K,QAAM,mBAAmB;AACzB,QAAI,eAAe;AACnB,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,eAAO,aAAa;AAAA,MACtB;AAAA,IACF,CAAC;AACD,QAAM,WAAW,IAAI,iBAAiB,eAAe;AACrD,QAAM,cAAc,CAAC,MAAM,aAAa,SAAS,IAAI,MAAM,QAAQ;AACnE,IAAAA,SAAQ,cAAc;AACtB,QAAM,mBAAmB,CAAC,UAAU,mBAAmB,SAAS,UAAU,SAAS,UAAU,gBAAgB,IAAI,SAAS,iBAAiB,SAAS,cAAc;AAClK,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,qBAAqB,cAAY,SAAS,YAAY,QAAQ;AACpE,IAAAA,SAAQ,qBAAqB;AAC7B,QAAM,iBAAiB,CAAC,UAAU,aAAa,aAAa,SAAS,aAAa;AAAA,MAChF;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,uBAAuB,cAAY,SAAS,aAAa,QAAQ;AACvE,IAAAA,SAAQ,uBAAuB;AAC/B,QAAM,UAAU,MAAM,SAAS,QAAQ;AACvC,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC9BlB,IAAAC,eAAA;AAAA,wDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,mBAAA;AAAA,sDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD;AAAA,mDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiBA,SAAQ,WAAWA,SAAQ,UAAU;AAC9D,QAAM,iBAAiB;AACvB,IAAAA,SAAQ,UAAU,eAAe,KAAK,OAAO;AAAA,MAC3C,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,CAAC;AACD,IAAAA,SAAQ,WAAW,eAAe,KAAK,OAAO;AAAA,MAC5C,OAAO,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,QAAQ,MAAM,GAAG,eAAe,KAAK,QAAQ,QAAQ,GAAG,eAAe,KAAK,QAAQ,SAAS,GAAG,eAAe,KAAK,QAAQ,KAAK,GAAG,eAAe,KAAK,QAAQ,QAAQ,CAAC,CAAC;AAAA,MAChO,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACvE,sBAAsB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACjF,CAAC;AACD,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO;AAAA,MAC7E,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,KAAK,eAAe,KAAK,QAAQ,GAAG;AAAA,MACpC,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACxE,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACpE,UAAU,eAAe,KAAK,QAAQ,IAAI;AAAA,IAC5C,CAAC,GAAG,eAAe,KAAK,OAAO;AAAA,MAC7B,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,OAAO,eAAe,KAAK,OAAO;AAAA,IACpC,CAAC,CAAC,CAAC;AAAA;AAAA;;;ACrCH,IAAAC,oBAAA;AAAA,uDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,WAAWA,SAAQ,kBAAkBA,SAAQ,sCAAsCA,SAAQ,sBAAsBA,SAAQ,qBAAqBA,SAAQ,iBAAiBA,SAAQ,cAAcA,SAAQ,UAAUA,SAAQ,UAAUA,SAAQ,QAAQ;AACzP,QAAM,iBAAiB;AACvB,QAAM,iBAAiB;AACvB,QAAM,SAAS;AACf,IAAAA,SAAQ,QAAQ,eAAe,KAAK,OAAO;AAAA,MACzC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,CAAC;AACD,IAAAA,SAAQ,UAAU,eAAe,KAAK,OAAO;AAAA,MAC3C,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,OAAOA,SAAQ;AAAA,MACf,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACnE,CAAC;AACD,IAAAA,SAAQ,UAAU,eAAe,KAAK,OAAO;AAAA,MAC3C,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACrE,CAAC;AACD,IAAAA,SAAQ,cAAc,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MAC9E,SAAS,eAAe,KAAK,QAAQ;AAAA,IACvC,CAAC,GAAG,eAAe,KAAK,OAAO,eAAe,KAAK,UAAU,eAAe,mBAAmB,GAAG,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjM,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAClD,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,KAAK,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,IAC7D,CAAC;AACD,QAAM,SAAS,eAAe,KAAK,OAAO;AAAA,MACxC,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,SAASA,SAAQ;AAAA,MACjB,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,gBAAgB,eAAe,KAAK,SAASA,SAAQ,cAAc;AAAA,MACnE,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,aAAa,eAAe,KAAK,MAAM,OAAO,QAAQ;AAAA,IACxD,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,UAAU,CAAC,QAAQ,eAAe,KAAK,OAAO;AAAA,MAC7F,MAAM,eAAe,KAAK,QAAQ,SAAS;AAAA,MAC3C,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACzE,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,aAAa,eAAe,KAAK,QAAQ;AAAA,MACzC,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC7C,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC7C,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAC5C,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC7C,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAC5C,QAAQ,eAAe,KAAK,QAAQ;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,uBAAuB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAChF,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC1E,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACnE,SAASA,SAAQ;AAAA,MACjB,WAAW,eAAe,KAAK,QAAQ;AAAA,IACzC,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,UAAU,CAAC,QAAQ,eAAe,KAAK,OAAO;AAAA,MAC9F,MAAM,eAAe,KAAK,QAAQ,UAAU;AAAA,MAC5C,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,IACvE,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,sCAAsC,eAAe,KAAK,KAAKA,SAAQ,qBAAqB,CAAC,UAAU,UAAU,eAAe,kBAAkB,WAAW,CAAC;AACtK,IAAAA,SAAQ,kBAAkB,eAAe,KAAK,UAAU,CAAC,QAAQ,eAAe,KAAK,OAAO;AAAA,MAC1F,MAAM,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,QAAQ,MAAM,GAAG,eAAe,KAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,MACzG,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,IACvE,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,WAAW,eAAe,KAAK,MAAM,CAACA,SAAQ,oBAAoBA,SAAQ,qBAAqBA,SAAQ,eAAe,CAAC;AAAA;AAAA;;;AC7E/H,IAAAC,kBAAA;AAAA,qDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,6BAA6BA,SAAQ,sBAAsBA,SAAQ,qBAAqB;AAChG,QAAM,qBAAqB,QAAM;AACjC,IAAAA,SAAQ,qBAAqB;AAC7B,QAAM,sBAAsB,QAAM;AAClC,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,6BAA6B,WAAS;AAC5C,IAAAA,SAAQ,6BAA6B;AAAA;AAAA;;;ACXrC,IAAAC,oBAAA;AAAA,uDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,oBAAA;AAAA,uDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,mBAAA;AAAA,gEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuBA,SAAQ,wBAAwBA,SAAQ,mCAAmCA,SAAQ,iCAAiCA,SAAQ,qBAAqBA,SAAQ,sBAAsBA,SAAQ,iCAAiCA,SAAQ,yBAAyBA,SAAQ,iCAAiCA,SAAQ,yBAAyBA,SAAQ,uBAAuBA,SAAQ,qCAAqCA,SAAQ,qCAAqCA,SAAQ,wBAAwBA,SAAQ,wBAAwBA,SAAQ,yBAAyBA,SAAQ,cAAcA,SAAQ,oBAAoBA,SAAQ,qBAAqBA,SAAQ,cAAcA,SAAQ,wBAAwBA,SAAQ,oBAAoBA,SAAQ,sBAAsBA,SAAQ,mBAAmBA,SAAQ,mBAAmBA,SAAQ,gBAAgBA,SAAQ,oBAAoBA,SAAQ,eAAeA,SAAQ,eAAeA,SAAQ,sBAAsBA,SAAQ,0BAA0BA,SAAQ,6BAA6BA,SAAQ,sBAAsBA,SAAQ,oBAAoBA,SAAQ,2BAA2BA,SAAQ,4BAA4B;AACznC,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,kBAAkB,eAAe,KAAK,OAAO;AAAA,IAC/C,CAAC;AACD,IAAAA,SAAQ,2BAA2B,eAAe,KAAK,OAAO;AAAA,MAC5D,aAAa,YAAY,MAAM;AAAA,MAC/B,MAAM,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC1D,aAAa,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MACjE,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACzE,oBAAoB,eAAe,KAAK,SAASA,SAAQ,yBAAyB;AAAA,MAClF,mBAAmB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC5E,mBAAmB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC9E,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,mBAAmBA,SAAQ;AAAA,MAC3B,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACxE,gBAAgB,eAAe,KAAK,SAAS,YAAY,MAAM,yBAAyB;AAAA,MACxF,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,UAAU,UAAQ,eAAe,KAAK,OAAO;AAAA,MAC7F,MAAM,YAAY,MAAM;AAAA,MACxB,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,IAAI,CAAC;AAAA,MACrE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,SAAS,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC7D,yBAAyB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClF,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC7E,CAAC,CAAC;AACF,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,QAAQA,SAAQ;AAAA,MAChB,eAAe,YAAY,MAAM;AAAA,MACjC,gBAAgB,eAAe,KAAK,SAAS,YAAY,MAAM,yBAAyB;AAAA,IAC1F,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,OAAO;AAAA,MAC3D,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,UAAU,CAAC,SAAS,cAAc,eAAe,KAAK,OAAO;AAAA,MAC7G,gBAAgB,eAAe,KAAK,SAAS,YAAY,MAAM,yBAAyB;AAAA,IAC1F,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,eAAe,eAAe,KAAK,OAAO;AAAA,MAChD,MAAM,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC1D,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,CAAC;AACD,IAAAA,SAAQ,eAAe,eAAe,KAAK,OAAO;AAAA,MAChD,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACvE,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,cAAc,eAAe,KAAK,MAAMA,SAAQ,YAAY;AAAA,IAC9D,CAAC;AACD,IAAAA,SAAQ,gBAAgB,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO;AAAA,MAC3G,mBAAmBA,SAAQ;AAAA,IAC7B,CAAC,GAAG,eAAe,KAAK,OAAO;AAAA,MAC7B,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,OAAO;AAAA,MAC/B,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,iBAAiB,CAAC;AAAA,MAC9F,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACpE,QAAQ,eAAe,KAAK,SAAS,YAAY,MAAM,sCAAsC;AAAA,MAC7F,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACtE,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC5E,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpD,gBAAgB,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MACpE,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC3E,CAAC;AACD,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpD,MAAM,YAAY,MAAM;AAAA,MACxB,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACtE,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACtE,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACrE,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACvD,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,MAAM,eAAe,KAAK,OAAO;AAAA,IACnC,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,aAAa,eAAe,KAAK,OAAO;AAAA,IAC1C,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,QAAQA,SAAQ;AAAA,MAChB,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,QAAQ,eAAe,KAAK,MAAMA,SAAQ,kBAAkB;AAAA,QAC1D,UAAU;AAAA,MACZ,CAAC;AAAA,MACD,QAAQ,eAAe,KAAK,MAAMA,SAAQ,gBAAgB;AAAA,MAC1D,UAAU,eAAe,KAAK,SAASA,SAAQ,mBAAmB;AAAA,IACpE,CAAC;AACD,IAAAA,SAAQ,cAAc,eAAe,KAAK,OAAO;AAAA,MAC/C,MAAM,YAAY,MAAM;AAAA,MACxB,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACvE,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,MAAM,YAAY,MAAM;AAAA,MACxB,MAAM,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC1D,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,gBAAgB,eAAe,KAAK,SAASA,SAAQ,qBAAqB;AAAA,MAC1E,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACrE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,MAAM,eAAe,KAAK,SAASA,SAAQ,WAAW;AAAA,IACxD,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,MAAM,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC1D,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACrE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACpE,CAAC;AACD,IAAAA,SAAQ,cAAc,eAAe,KAAK,MAAMA,SAAQ,iBAAiB;AACzE,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,MAAM,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC1D,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,SAAS,eAAe,KAAK,SAAS,SAAS,cAAc;AAAA,MAC7D,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACpE,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,CAAC;AACD,IAAAA,SAAQ,qCAAqC,eAAe,KAAK,OAAO;AAAA,MACtE,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,QAAQ,eAAe,KAAK,OAAO;AAAA,IACrC,CAAC;AACD,IAAAA,SAAQ,qCAAqC,eAAe,KAAK,OAAO;AAAA,MACtE,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,aAAa,SAAS;AAAA,MACtB,0BAA0B,eAAe,KAAK,SAASA,SAAQ,wBAAwB;AAAA,MACvF,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,QAAQ,eAAe,KAAK,SAAS,YAAY,MAAM,kCAAkC;AAAA,MACzF,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,kCAAkC,CAAC;AAAA,MAC/G,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC3E,CAAC;AACD,IAAAA,SAAQ,uBAAuB,eAAe,KAAK,OAAO;AAAA,MACxD,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,6BAA6B,eAAe,KAAK,SAASA,SAAQ,kCAAkC;AAAA,IACtG,CAAC;AACD,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,QAAQ,eAAe,KAAK,MAAMA,SAAQ,YAAY;AAAA,MACtD,SAAS,eAAe,KAAK,MAAMA,SAAQ,aAAa;AAAA,MACxD,KAAK,eAAe,KAAK,KAAK;AAAA,MAC9B,KAAK,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MAC5D,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,kBAAkB,CAAC;AAAA,MAChG,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,iBAAiB,CAAC;AAAA,MAC9F,uBAAuB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAChF,eAAe,eAAe,KAAK,SAASA,SAAQ,oBAAoB;AAAA,MACxE,MAAM,eAAe,KAAK,SAASA,SAAQ,WAAW;AAAA,MACtD,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACzE,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,sBAAsB,CAAC;AAAA,MACxG,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,qBAAqB,CAAC;AAAA,MACtG,kBAAkB,eAAe,KAAK,SAASA,SAAQ,aAAa;AAAA,MACpE,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC1E,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,qBAAqB,CAAC;AAAA,MACtG,2BAA2B,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,SAAS,cAAc,CAAC;AAAA,MAC1G,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,aAAa,YAAY,MAAM;AAAA,MAC/B,gBAAgB,eAAe,KAAK,SAAS,YAAY,MAAM,yBAAyB;AAAA,MACxF,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MAC5E,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACpE,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACzE,CAAC;AACD,IAAAA,SAAQ,iCAAiC,eAAe,KAAK,UAAU,CAACA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACjI,YAAY,eAAe,KAAK,OAAO;AAAA,QACrC,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,MAAM,eAAe,KAAK,OAAO;AAAA,MACnC,CAAC;AAAA,MACD,SAAS,eAAe,KAAK,QAAQ;AAAA,IACvC,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,MAAM,YAAY,MAAM;AAAA,MACxB,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACtE,CAAC;AACD,IAAAA,SAAQ,iCAAiC,eAAe,KAAK,OAAO;AAAA,MAClE,MAAM,YAAY,MAAM;AAAA,MACxB,mBAAmB,eAAe,KAAK,OAAO;AAAA,MAC9C,4BAA4B,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACvF,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACvD,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,WAAW,eAAe,KAAK,MAAMA,SAAQ,sBAAsB;AAAA,MACnE,yBAAyB,eAAe,KAAK,SAASA,SAAQ,8BAA8B;AAAA,IAC9F,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,MAAM,SAAS;AAAA,MACf,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MAC5E,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACpE,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,mBAAmB,eAAe,KAAK,SAASA,SAAQ,wBAAwB;AAAA,MAChF,gBAAgB,eAAe,KAAK,SAAS,YAAY,MAAM,yBAAyB;AAAA,IAC1F,CAAC;AACD,IAAAA,SAAQ,iCAAiC,eAAe,KAAK,OAAO;AAAA,MAClE,GAAG,eAAe,KAAK,QAAQ,YAAY,QAAQ,cAAc,KAAK;AAAA,MACtE,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,CAAC;AACD,IAAAA,SAAQ,mCAAmC,eAAe,KAAK,OAAO;AAAA,MACpE,QAAQ,eAAe,KAAK,QAAQ;AAAA,MACpC,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,WAAWA,SAAQ;AAAA,MACnB,aAAaA,SAAQ;AAAA,IACvB,CAAC;AACD,IAAAA,SAAQ,uBAAuB,eAAe,KAAK,OAAO;AAAA,MACxD,SAASA,SAAQ;AAAA,MACjB,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,CAAC;AAAA;AAAA;;;AC/OD,IAAAC,mBAAA;AAAA,gEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgBA,SAAQ,cAAc;AAC9C,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,IAAAA,SAAQ,cAAc,eAAe,KAAK,OAAO;AAAA,MAC/C,MAAM,SAAS;AAAA,MACf,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,KAAK,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MAC/D,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IAC5E,CAAC;AACD,IAAAA,SAAQ,gBAAgB,eAAe,KAAK,OAAO;AAAA,MACjD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,KAAK,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACjE,CAAC;AAAA;AAAA;;;ACrBD;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,qBAAqBA,SAAQ,oBAAoBA,SAAQ,cAAcA,SAAQ,oBAAoBA,SAAQ,mBAAmBA,SAAQ,cAAcA,SAAQ,eAAe;AACnL,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,IAAAA,SAAQ,eAAe,eAAe,KAAK,OAAO;AAAA,MAChD,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,MAAM,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,MAC5D,gBAAgB,eAAe,KAAK,OAAO;AAAA,IAC7C,CAAC;AACD,IAAAA,SAAQ,cAAc,eAAe,KAAK,OAAO;AAAA,MAC/C,YAAY,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,KAAK,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MAChG,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC7C,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,UAAU,eAAe,KAAK,OAAO;AAAA,IACvC,CAAC;AACD,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpD,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,MAAM,eAAe,KAAK,MAAM,YAAY,MAAM,mBAAmB;AAAA,MACrE,UAAU,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO;AAAA,QAC7D,YAAY,YAAY,MAAM;AAAA,QAC9B,QAAQ,eAAe,KAAK,OAAO;AAAA,MACrC,CAAC,CAAC;AAAA,MACF,OAAO,eAAe,KAAK,MAAM,YAAY,MAAM,oBAAoB;AAAA,IACzE,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,eAAe,eAAe,KAAK,MAAM,YAAY,MAAM,kBAAkB;AAAA,IAC/E,CAAC;AACD,IAAAA,SAAQ,cAAc,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpI,MAAM,eAAe,KAAK,QAAQ,UAAU;AAAA,MAC5C,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,IAAI,eAAe,KAAK,OAAO;AAAA,QAC/B,UAAU,eAAe,KAAK,OAAO;AAAA,QACrC,MAAM,eAAe,KAAK,OAAO;AAAA,MACnC,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,UAAU,eAAe,KAAK,OAAO;AAAA,QACrC,oBAAoB,eAAe,KAAK,OAAO;AAAA,QAC/C,oBAAoB,eAAe,KAAK,OAAO;AAAA,QAC/C,UAAU,eAAe,KAAK,QAAQ;AAAA,MACxC,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,cAAc;AAAA,MAChD,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,UAAU,eAAe,KAAK,OAAO;AAAA,QACrC,sBAAsB,eAAe,KAAK,OAAO;AAAA,QACjD,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACnD,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,QAAQ;AAAA,MAC1C,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,OAAO,eAAe,KAAK,OAAO;AAAA,QAClC,UAAU,eAAe,KAAK,OAAO;AAAA,QACrC,OAAO,eAAe,KAAK,OAAO;AAAA,MACpC,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,aAAa;AAAA,MAC/C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,SAAS;AAAA,MAC3C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,cAAc;AAAA,MAChD,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,OAAO,eAAe,KAAK,OAAO;AAAA,QAClC,OAAO,eAAe,KAAK,OAAO;AAAA,QAClC,WAAW,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,QAAQ;AAAA,MAC1C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,SAAS,eAAe,KAAK,OAAO;AAAA,QACpC,YAAY,eAAe,KAAK,OAAO;AAAA,QACvC,QAAQ,eAAe,KAAK,OAAO;AAAA,QACnC,MAAMA,SAAQ;AAAA,MAChB,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,UAAU;AAAA,MAC5C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,MAAM,YAAY,MAAM;AAAA,IAC1B,CAAC,CAAC,CAAC,GAAG,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACzF,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,MAAM,eAAe,KAAK,OAAO;AAAA,QAC/B,SAAS,eAAe,KAAK,OAAO;AAAA,QACpC,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,OAAOA,SAAQ;AAAA,QACf,QAAQA,SAAQ;AAAA,MAClB,CAAC;AAAA,IACH,CAAC,CAAC,CAAC,CAAC,CAAC;AACL,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,QAAQA,SAAQ;AAAA,MAChB,SAAS,eAAe,KAAK,MAAM,eAAe,KAAK,MAAM,CAACA,SAAQ,aAAa,eAAe,KAAK,UAAU,CAACA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,QACtK,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,MAAM,eAAe,KAAK,OAAO;AAAA,MACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IACR,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,MAAM,SAAS;AAAA,MACf,aAAaA,SAAQ;AAAA,MACrB,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AAAA;AAAA;;;AC1HD,IAAAC,kBAAA;AAAA,+DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiBA,SAAQ,wBAAwBA,SAAQ,oBAAoBA,SAAQ,gBAAgB;AAC7G,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,IAAAA,SAAQ,gBAAgB,eAAe,KAAK,OAAO;AAAA,MACjD,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC3E,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,OAAO,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAChE,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC3E,SAASA,SAAQ;AAAA,IACnB,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,MAAM,SAAS;AAAA,MACf,aAAaA,SAAQ;AAAA,MACrB,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AACD,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAClD,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,CAAC;AAAA;AAAA;;;AC5BD;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,wBAAwBA,SAAQ,wBAAwBA,SAAQ,wBAAwBA,SAAQ,+BAA+BA,SAAQ,6BAA6BA,SAAQ,mBAAmBA,SAAQ,0BAA0BA,SAAQ,6BAA6BA,SAAQ,qBAAqBA,SAAQ,sBAAsBA,SAAQ,sBAAsB;AACvW,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACvD,MAAM,SAAS;AAAA,MACf,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,KAAK,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACjE,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACvD,IAAI,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,KAAK,CAAC,CAAC;AAAA,MACxF,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MAC1E,sBAAsB,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MAClF,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,aAAa,eAAe,KAAK,SAAS,YAAY,MAAM,cAAc;AAAA,IAC5E,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,aAAa,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,IACrE,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,IAAI,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,KAAK,CAAC,CAAC;AAAA,MACxF,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACtE,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACjD,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,kBAAkB,CAAC;AAAA,MAC9F,aAAa,eAAe,KAAK,SAAS,YAAY,MAAM,cAAc;AAAA,IAC5E,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,OAAO;AAAA,MAC3D,MAAM,SAAS;AAAA,MACf,aAAa,eAAe,KAAK,MAAM,CAACA,SAAQ,qBAAqBA,SAAQ,0BAA0B,CAAC;AAAA,MACxG,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AACD,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpD,GAAG,eAAe,KAAK,OAAO;AAAA,MAC9B,GAAG,eAAe,KAAK,OAAO;AAAA,MAC9B,GAAG,eAAe,KAAK,OAAO;AAAA,MAC9B,cAAc,eAAe,KAAK,OAAO;AAAA,IAC3C,CAAC;AACD,QAAM,oCAAoC,eAAe,KAAK,OAAO;AAAA,MACnE,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,MAAM,eAAe,KAAK,OAAO;AAAA,IACnC,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,cAAc,eAAe,KAAK,MAAM,iCAAiC;AAAA,IAC3E,GAAG;AAAA,MACD,sBAAsB,eAAe,KAAK,MAAM,iCAAiC;AAAA,IACnF,CAAC;AACD,IAAAA,SAAQ,+BAA+B,eAAe,KAAK,OAAO;AAAA,MAChE,OAAOA,SAAQ;AAAA,MACf,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,QAAQ,eAAe,KAAK,OAAO;AAAA,QACjC,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,QAC/D,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,QAClE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,QAC3J,mBAAmB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,QAC5E,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,YAAY,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,MACjI,CAAC;AAAA,MACD,SAAS,eAAe,KAAK,OAAO,CAAC,GAAG;AAAA,QACtC,sBAAsB,eAAe,KAAK,IAAI;AAAA,MAChD,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,MAAM,SAAS;AAAA,MACf,MAAMA,SAAQ;AAAA,MACd,oBAAoB,eAAe,KAAK,QAAQ;AAAA,MAChD,uBAAuB,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACnF,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MAC1E,mBAAmB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IAC/E,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,MAAM,SAAS;AAAA,MACf,MAAMA,SAAQ;AAAA,MACd,oBAAoB,eAAe,KAAK,QAAQ;AAAA,MAChD,uBAAuB,eAAe,KAAK,OAAO;AAAA,MAClD,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACvE,mBAAmB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IAC/E,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,KAAK,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MAC/D,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,CAAC;AAAA;AAAA;;;ACnGD;AAAA,+DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,0BAA0BA,SAAQ,kBAAkBA,SAAQ,wBAAwBA,SAAQ,wBAAwBA,SAAQ,4BAA4BA,SAAQ,oCAAoCA,SAAQ,6BAA6BA,SAAQ,+BAA+BA,SAAQ,sBAAsBA,SAAQ,oBAAoBA,SAAQ,2BAA2BA,SAAQ,yBAAyBA,SAAQ,qBAAqBA,SAAQ,8BAA8BA,SAAQ,wBAAwBA,SAAQ,iBAAiBA,SAAQ,oBAAoBA,SAAQ,mBAAmB;AACzkB,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,OAAO;AAAA,MACpD,MAAM,SAAS;AAAA,MACf,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACxE,aAAa,eAAe,KAAK,SAAS,YAAY,MAAM,qBAAqB;AAAA,MACjF,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,OAAO,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAChE,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACpE,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,MAAM,SAAS;AAAA,MACf,aAAa,eAAe,KAAK,SAAS,YAAY,MAAM,qBAAqB;AAAA,IACnF,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAClD,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,SAAS,eAAe,KAAK,OAAO;AAAA,IACtC,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,wBAAwB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,MACvK,uBAAuB,eAAe,KAAK,OAAO;AAAA,MAClD,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACzE,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC3E,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,8BAA8B,eAAe,KAAK,OAAO;AAAA,MAC/D,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,eAAe,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,IACvE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,MAAM,SAAS;AAAA,MACf,aAAa,eAAe,KAAK,SAAS,YAAY,MAAM,qBAAqB;AAAA,MACjF,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,2BAA2B,CAAC;AAAA,MACjG,MAAM,eAAe,KAAK,MAAMA,SAAQ,qBAAqB;AAAA,IAC/D,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,IAAI,eAAe,KAAK,OAAO;AAAA,MAC/B,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,2BAA2B,eAAe,KAAK,OAAO;AAAA,MAC5D,YAAY,eAAe,KAAK,MAAMA,SAAQ,sBAAsB;AAAA,MACpE,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,OAAO;AAAA,MACrD,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,KAAK,eAAe,KAAK,OAAO;AAAA,QAC9B,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,YAAY,eAAe,KAAK,OAAO;AAAA,MACzC,CAAC;AAAA,IACH,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACvD,GAAG,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC5D,GAAG,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC5D,GAAG,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC5D,IAAI,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IAC/D,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,+BAA+B,eAAe,KAAK,OAAO;AAAA,MAChE,SAAS,eAAe,KAAK,MAAMA,SAAQ,iBAAiB;AAAA,MAC5D,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAC5C,6BAA6B,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,MACnF,yBAAyB,eAAe,KAAK,OAAO;AAAA,MACpD,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,KAAK,eAAe,KAAK,QAAQ;AAAA,MACjC,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,gBAAgB,eAAe,KAAK,SAASA,SAAQ,mBAAmB;AAAA,IAC1E,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC7C,iBAAiB,eAAe,KAAK,OAAO;AAAA,IAC9C,CAAC;AACD,IAAAA,SAAQ,oCAAoC,eAAe,KAAK,OAAO;AAAA,MACrE,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,MAAMA,SAAQ;AAAA,MACd,eAAe,eAAe,KAAK,QAAQ;AAAA,MAC3C,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,eAAe,eAAe,KAAK,QAAQ;AAAA,IAC7C,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACvE,UAAU,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,MAChE,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MAChG,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACrE,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,SAAS,eAAe,KAAK,MAAMA,SAAQ,iCAAiC;AAAA,MAC5E,YAAY,eAAe,KAAK,SAASA,SAAQ,iCAAiC;AAAA,MAClF,YAAY,eAAe,KAAK,OAAO;AAAA,MACvC,OAAO,eAAe,KAAK,OAAO;AAAA,MAClC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAWA,SAAQ;AAAA,MACnB,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MACnG,oBAAoB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MACxG,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,gBAAgB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACzE,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,MAAM,SAAS;AAAA,MACf,aAAa,YAAY,MAAM;AAAA,MAC/B,UAAUA,SAAQ;AAAA,MAClB,QAAQ,eAAe,KAAK,MAAMA,SAAQ,4BAA4B;AAAA,IACxE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,kBAAkB,eAAe,KAAK,OAAO;AAAA,MACnD,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACpE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,OAAO;AAAA,MAC3D,YAAY,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,MAClE,gBAAgB,eAAe,KAAK,OAAO;AAAA,MAC3C,IAAIA,SAAQ;AAAA,MACZ,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACpE,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACtE,aAAa,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACtE,aAAa,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC;AAAA,IACrE,GAAG;AAAA,MACD,KAAK;AAAA,IACP,CAAC;AAAA;AAAA;;;AC3KD,IAAAC,kBAAA;AAAA,+DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,4BAA4BA,SAAQ,2BAA2BA,SAAQ,oBAAoBA,SAAQ,0BAA0BA,SAAQ,wBAAwBA,SAAQ,yBAAyBA,SAAQ,2BAA2BA,SAAQ,kBAAkB;AACnQ,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,IAAAA,SAAQ,kBAAkB,eAAe,KAAK,UAAU,CAAC,SAAS,WAAW,eAAe,KAAK,OAAO;AAAA,MACtG,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,iBAAiB,eAAe,KAAK,OAAO;AAAA,IAC9C,CAAC,CAAC,CAAC;AACH,IAAAA,SAAQ,2BAA2B,eAAe,KAAK,OAAO;AAAA,MAC5D,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACnE,CAAC;AACD,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,oBAAoB,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,0BAA0B;AAAA,QAC3G,UAAU;AAAA,MACZ,CAAC,CAAC;AAAA,MACF,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AACD,IAAAA,SAAQ,wBAAwB,eAAe,KAAK,OAAO;AAAA,MACzD,MAAM,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,MACvH,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,gBAAgB,eAAe,KAAK,SAASA,SAAQ,sBAAsB;AAAA,MAC3E,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACvE,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,OAAO;AAAA,MAC3D,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACzE,CAAC;AACD,IAAAA,SAAQ,oBAAoB,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,QAAQ,WAAW,GAAG,eAAe,KAAK,QAAQ,gBAAgB,CAAC,CAAC;AAC/I,QAAM,iCAAiC;AAAA,MACrC,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,sBAAsB,eAAe,KAAK,OAAO;AAAA,MACjD,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO;AAAA,QACpE,kBAAkB,eAAe,KAAK,OAAO;AAAA,QAC7C,kBAAkB,eAAe,KAAK,OAAO;AAAA,MAC/C,CAAC,CAAC;AAAA,MACF,OAAO,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO;AAAA,QAC7D,MAAM,eAAe,KAAK,OAAO;AAAA,QACjC,SAASA,SAAQ;AAAA,QACjB,UAAU,eAAe,KAAK,OAAO;AAAA,QACrC,UAAU,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO;AAAA,UAC7D,WAAW,eAAe,KAAK,OAAO;AAAA,UACtC,SAAS,eAAe,KAAK,OAAO;AAAA,QACtC,CAAC,CAAC;AAAA,MACJ,CAAC,CAAC;AAAA,MACF,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACrE;AACA,QAAM,qCAAqC,eAAe,KAAK,OAAO;AAAA,MACpE,GAAG;AAAA,MACH,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACpE,cAAc,eAAe,KAAK,OAAO;AAAA,IAC3C,CAAC;AACD,QAAM,8BAA8B,eAAe,KAAK,OAAO;AAAA,MAC7D,GAAG;AAAA,MACH,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,IAC5E,CAAC;AACD,IAAAA,SAAQ,2BAA2B,eAAe,KAAK,MAAM,CAAC,oCAAoC,2BAA2B,CAAC;AAC9H,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,cAAc,eAAe,KAAK,OAAO;AAAA,MACzC,gBAAgB,eAAe,KAAK,OAAO;AAAA,QACzC,uBAAuB,eAAe,KAAK,SAASA,SAAQ,iBAAiB;AAAA,QAC7E,kBAAkB,eAAe,KAAK,SAASA,SAAQ,wBAAwB;AAAA,MACjF,CAAC;AAAA,IACH,CAAC;AAAA;AAAA;;;AC1ED,IAAAC,mBAAA;AAAA,gEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,0BAA0BA,SAAQ,kBAAkBA,SAAQ,yBAAyBA,SAAQ,qBAAqBA,SAAQ,mBAAmBA,SAAQ,wCAAwCA,SAAQ,4BAA4BA,SAAQ,+BAA+BA,SAAQ,6BAA6BA,SAAQ,+BAA+BA,SAAQ,6BAA6BA,SAAQ,8BAA8BA,SAAQ,6BAA6BA,SAAQ,iCAAiCA,SAAQ,kCAAkCA,SAAQ,mCAAmCA,SAAQ,wCAAwCA,SAAQ,2CAA2CA,SAAQ,0BAA0BA,SAAQ,gCAAgCA,SAAQ,eAAe;AAC9wB,QAAM,iBAAiB;AACvB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,IAAAA,SAAQ,eAAe,eAAe,KAAK,OAAO;AAAA,MAChD,MAAM,eAAe,KAAK,MAAM,CAAC,YAAY,MAAM,sBAAsB,eAAe,KAAK,UAAU,YAAY,MAAM,gBAAgB,CAAC,CAAC;AAAA,MAC3I,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MAC/D,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACnE,CAAC;AACD,IAAAA,SAAQ,gCAAgC,eAAe,KAAK,OAAO;AAAA,MACjE,MAAM,eAAe,KAAK,QAAQ,eAAe;AAAA,MACjD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,iBAAiB,eAAe,KAAK,OAAO;AAAA,IAC9C,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,OAAO;AAAA,MAC3D,MAAM,eAAe,KAAK,QAAQ,SAAS;AAAA,MAC3C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,OAAOA,SAAQ;AAAA,MACf,QAAQ,eAAe,KAAK,OAAO;AAAA,IACrC,CAAC;AACD,IAAAA,SAAQ,2CAA2C,eAAe,KAAK,OAAO;AAAA,MAC5E,MAAM,eAAe,KAAK,QAAQ,0BAA0B;AAAA,MAC5D,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,WAAWA,SAAQ;AAAA,MACnB,SAAS,eAAe,KAAK,KAAK;AAAA,MAClC,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,WAAWA,SAAQ;AAAA,MACnB,YAAY,eAAe,KAAK,KAAK;AAAA,MACrC,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,YAAY,CAAC;AAAA,IACpF,CAAC;AACD,IAAAA,SAAQ,wCAAwC,eAAe,KAAK,OAAO;AAAA,MACzE,MAAM,eAAe,KAAK,QAAQ,uBAAuB;AAAA,MACzD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,WAAWA,SAAQ;AAAA,MACnB,YAAY,eAAe,KAAK,KAAK;AAAA,MACrC,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,WAAWA,SAAQ;AAAA,MACnB,SAAS,eAAe,KAAK,KAAK;AAAA,MAClC,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,MAAMA,SAAQ,YAAY,CAAC;AAAA,IACpF,CAAC;AACD,IAAAA,SAAQ,mCAAmC,eAAe,KAAK,OAAO;AAAA,MACpE,MAAM,eAAe,KAAK,QAAQ,wBAAwB;AAAA,MAC1D,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,QAAQA,SAAQ;AAAA,MAChB,SAASA,SAAQ;AAAA,MACjB,QAAQ,eAAe,KAAK,KAAK;AAAA,MACjC,OAAO,eAAe,KAAK,OAAO;AAAA,QAChC,GAAG,eAAe,KAAK,OAAO;AAAA,QAC9B,GAAG,eAAe,KAAK,OAAO;AAAA,MAChC,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,SAAQ,kCAAkC,eAAe,KAAK,OAAO;AAAA,MACnE,MAAM,eAAe,KAAK,QAAQ,iBAAiB;AAAA,MACnD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,QAAQA,SAAQ;AAAA,MAChB,SAASA,SAAQ;AAAA,MACjB,QAAQ,eAAe,KAAK,KAAK;AAAA,MACjC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MAChE,OAAO,eAAe,KAAK,OAAO;AAAA,QAChC,GAAG,eAAe,KAAK,OAAO;AAAA,QAC9B,GAAG,eAAe,KAAK,OAAO;AAAA,MAChC,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,SAAQ,iCAAiC,eAAe,KAAK,OAAO;AAAA,MAClE,MAAM,eAAe,KAAK,QAAQ,gBAAgB;AAAA,MAClD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,QAAQA,SAAQ;AAAA,MAChB,SAASA,SAAQ;AAAA,MACjB,QAAQ,eAAe,KAAK,KAAK;AAAA,MACjC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MAChE,OAAO,eAAe,KAAK,OAAO;AAAA,QAChC,GAAG,eAAe,KAAK,OAAO;AAAA,QAC9B,GAAG,eAAe,KAAK,OAAO;AAAA,MAChC,CAAC;AAAA,IACH,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO;AAAA,QAC9D,MAAM,YAAY,MAAM;AAAA,QACxB,KAAK,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,QAC3F,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,CAAC,CAAC;AAAA,MACF,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACxE,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACrE,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MACrE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MACrE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MACrE,eAAe,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,MACtE,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACvE,CAAC;AACD,IAAAA,SAAQ,8BAA8B,eAAe,KAAK,OAAO;AAAA,MAC/D,MAAM,eAAe,KAAK,QAAQ,aAAa;AAAA,MAC/C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,MAAMA,SAAQ;AAAA,MACd,OAAO,eAAe,KAAK,OAAO;AAAA,IACpC,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,WAAW,YAAY,MAAM;AAAA,MAC7B,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,QAAQ,GAAG,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC;AAAA,IACrI,CAAC;AACD,IAAAA,SAAQ,+BAA+B,eAAe,KAAK,OAAO;AAAA,MAChE,MAAM,eAAe,KAAK,QAAQ,cAAc;AAAA,MAChD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,aAAa,eAAe,KAAK,OAAO;AAAA,IAC1C,CAAC;AACD,IAAAA,SAAQ,6BAA6B,eAAe,KAAK,OAAO;AAAA,MAC9D,MAAM,eAAe,KAAK,QAAQ,YAAY;AAAA,MAC9C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,MAAM,eAAe,KAAK,OAAO;AAAA,MACjC,OAAO,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,IAC7H,CAAC;AACD,IAAAA,SAAQ,+BAA+B,eAAe,KAAK,OAAO;AAAA,MAChE,MAAM,eAAe,KAAK,QAAQ,cAAc;AAAA,MAChD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,QAAQ,eAAe,KAAK,KAAK;AAAA,IACnC,CAAC;AACD,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,MAAM,eAAe,KAAK,QAAQ,WAAW;AAAA,MAC7C,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACnE,CAAC;AACD,IAAAA,SAAQ,wCAAwC,eAAe,KAAK,OAAO;AAAA,MACzE,MAAM,eAAe,KAAK,QAAQ,uBAAuB;AAAA,MACzD,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACjE,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,CAAC;AACD,IAAAA,SAAQ,mBAAmB,eAAe,KAAK,MAAM,CAACA,SAAQ,+BAA+BA,SAAQ,yBAAyBA,SAAQ,0CAA0CA,SAAQ,uCAAuCA,SAAQ,kCAAkCA,SAAQ,iCAAiCA,SAAQ,gCAAgCA,SAAQ,4BAA4BA,SAAQ,6BAA6BA,SAAQ,4BAA4BA,SAAQ,8BAA8BA,SAAQ,2BAA2BA,SAAQ,4BAA4BA,SAAQ,8BAA8BA,SAAQ,qCAAqC,CAAC;AACxoB,IAAAA,SAAQ,qBAAqB,eAAe,KAAK,OAAO;AAAA,MACtD,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,UAAU,eAAe,KAAK,KAAK;AAAA,MACnC,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO;AAAA,QAClE,SAAS,eAAe,KAAK,OAAO;AAAA,QACpC,SAAS,eAAe,KAAK,OAAO;AAAA,MACtC,CAAC,CAAC;AAAA,MACF,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO;AAAA,QAC5D,MAAM,YAAY,MAAM;AAAA,QACxB,IAAI,eAAe,KAAK,SAAS,eAAe,KAAK,KAAK,CAAC;AAAA,QAC3D,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,QAC/D,MAAM,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,MAC5H,CAAC,CAAC;AAAA,MACF,YAAY,eAAe,KAAK,MAAMA,SAAQ,gBAAgB;AAAA,IAChE,CAAC;AACD,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,MAAM,SAAS;AAAA,MACf,mBAAmB,eAAe,KAAK,OAAO;AAAA,MAC9C,aAAaA,SAAQ;AAAA,IACvB,CAAC;AACD,IAAAA,SAAQ,kBAAkB,eAAe,KAAK,OAAO;AAAA,MACnD,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,WAAW,eAAe,KAAK,OAAO;AAAA,IACxC,CAAC;AACD,IAAAA,SAAQ,0BAA0B,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACrH,MAAM,eAAe,KAAK,QAAQ,wBAAwB;AAAA,IAC5D,CAAC,GAAG,YAAY,MAAM,sBAAsB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACxG,MAAM,eAAe,KAAK,QAAQ,kBAAkB;AAAA,IACtD,CAAC,GAAG,YAAY,MAAM,gBAAgB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MAClG,MAAM,eAAe,KAAK,QAAQ,mCAAmC;AAAA,IACvE,CAAC,GAAG,YAAY,MAAM,iCAAiC,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACnH,MAAM,eAAe,KAAK,QAAQ,gCAAgC;AAAA,IACpE,CAAC,GAAG,YAAY,MAAM,8BAA8B,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MAChH,MAAM,eAAe,KAAK,QAAQ,0BAA0B;AAAA,IAC9D,CAAC,GAAG,YAAY,MAAM,wBAAwB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MAC1G,MAAM,eAAe,KAAK,QAAQ,yBAAyB;AAAA,IAC7D,CAAC,GAAG,YAAY,MAAM,uBAAuB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACzG,MAAM,eAAe,KAAK,QAAQ,iCAAiC;AAAA,IACrE,CAAC,GAAG,YAAY,MAAM,+BAA+B,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACjH,MAAM,eAAe,KAAK,QAAQ,qBAAqB;AAAA,IACzD,CAAC,GAAG,YAAY,MAAM,mBAAmB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACrG,MAAM,eAAe,KAAK,QAAQ,sBAAsB;AAAA,IAC1D,CAAC,GAAG,YAAY,MAAM,oBAAoB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACtG,MAAM,eAAe,KAAK,QAAQ,qBAAqB;AAAA,IACzD,CAAC,GAAG,YAAY,MAAM,mBAAmB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACrG,MAAM,eAAe,KAAK,QAAQ,uBAAuB;AAAA,IAC3D,CAAC,GAAG,YAAY,MAAM,qBAAqB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACvG,MAAM,eAAe,KAAK,QAAQ,qBAAqB;AAAA,IACzD,CAAC,GAAG,YAAY,MAAM,mBAAmB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACrG,MAAM,eAAe,KAAK,QAAQ,uBAAuB;AAAA,IAC3D,CAAC,GAAG,YAAY,MAAM,qBAAqB,CAAC,GAAG,eAAe,KAAK,UAAU,CAAC,eAAe,KAAK,OAAO;AAAA,MACvG,MAAM,eAAe,KAAK,QAAQ,gCAAgC;AAAA,IACpE,CAAC,GAAG,YAAY,MAAM,8BAA8B,CAAC,CAAC,CAAC;AAAA;AAAA;;;AChMvD;AAAA,8DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuBA,SAAQ,iBAAiBA,SAAQ,2BAA2BA,SAAQ,4BAA4BA,SAAQ,4BAA4BA,SAAQ,yBAAyBA,SAAQ,uBAAuBA,SAAQ,uBAAuB;AAClQ,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,IAAAA,SAAQ,uBAAuB,eAAe,KAAK,OAAO;AAAA,MACxD,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,YAAY,eAAe,KAAK,OAAO;AAAA,IACzC,CAAC;AACD,IAAAA,SAAQ,uBAAuB,eAAe,KAAK,OAAO;AAAA,MACxD,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,QAAQ,eAAe,KAAK,OAAO;AAAA,IACrC,CAAC;AACD,IAAAA,SAAQ,yBAAyB,eAAe,KAAK,OAAO;AAAA,MAC1D,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACvE,iBAAiB,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MAC3E,UAAU,eAAe,KAAK,SAASA,SAAQ,oBAAoB;AAAA,IACrE,CAAC;AACD,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,aAAa,eAAe,KAAK,OAAO;AAAA,MACxC,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,MAC1C,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MAChG,oBAAoB,eAAe,KAAK,SAASA,SAAQ,sBAAsB;AAAA,IACjF,CAAC;AACD,IAAAA,SAAQ,4BAA4B,eAAe,KAAK,OAAO;AAAA,MAC7D,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,MACnE,QAAQ,SAAS;AAAA,MACjB,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,IAC5C,CAAC;AACD,IAAAA,SAAQ,2BAA2B,eAAe,KAAK,OAAO;AAAA,MAC5D,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,WAAW,eAAe,KAAK,OAAO;AAAA,MACtC,eAAe,eAAe,KAAK,OAAO;AAAA,IAC5C,CAAC;AACD,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAClD,QAAQ,eAAe,KAAK,SAASA,SAAQ,oBAAoB;AAAA,MACjE,aAAa,eAAe,KAAK,SAASA,SAAQ,yBAAyB;AAAA,MAC3E,aAAa,eAAe,KAAK,SAASA,SAAQ,yBAAyB;AAAA,MAC3E,YAAY,eAAe,KAAK,SAASA,SAAQ,wBAAwB;AAAA,IAC3E,CAAC;AACD,IAAAA,SAAQ,uBAAuB,eAAe,KAAK,OAAO;AAAA,MACxD,MAAM,SAAS;AAAA,MACf,QAAQ,eAAe,KAAK,OAAO;AAAA,MACnC,WAAWA,SAAQ;AAAA,MACnB,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,IACtE,CAAC;AAAA;AAAA;;;ACjED,IAAAC,iBAAA;AAAA,oDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmBA,SAAQ,eAAe;AAClD,QAAM,UAAU;AAChB,YAAQ,aAAa,gBAAkBA,QAAO;AAC9C,YAAQ,aAAa,oBAAsBA,QAAO;AAClD,YAAQ,aAAa,qBAAuBA,QAAO;AACnD,YAAQ,aAAa,mBAAqBA,QAAO;AACjD,YAAQ,aAAa,gBAAmBA,QAAO;AAC/C,YAAQ,aAAa,qBAAuBA,QAAO;AACnD,YAAQ,aAAa,kBAAqBA,QAAO;AACjD,YAAQ,aAAa,qBAAuBA,QAAO;AACnD,YAAQ,aAAa,oBAA0BA,QAAO;AACtD,YAAQ,aAAa,oBAA0BA,QAAO;AACtD,YAAQ,aAAa,eAAsBA,QAAO;AAClD,YAAQ,aAAa,mBAAyBA,QAAO;AACrD,YAAQ,aAAa,oBAA2BA,QAAO;AACvD,YAAQ,aAAa,kBAAyBA,QAAO;AACrD,YAAQ,aAAa,mBAAyBA,QAAO;AACrD,YAAQ,aAAa,oBAA0BA,QAAO;AACtD,YAAQ,aAAa,iBAAwBA,QAAO;AACpD,QAAI,iBAAiB;AACrB,WAAO,eAAeA,UAAS,gBAAgB;AAAA,MAC7C,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,eAAO,eAAe;AAAA,MACxB;AAAA,IACF,CAAC;AACD,QAAI,aAAa;AACjB,WAAO,eAAeA,UAAS,oBAAoB;AAAA,MACjD,YAAY;AAAA,MACZ,KAAK,WAAY;AACf,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,CAAC;AAAA;AAAA;;;ACrCD;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,uBAAN,cAAmC,iBAAiB,eAAe;AAAA,MACjE,OAAO;AACL,aAAK,sBAAsB,CAAC;AAC5B,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,QAAQ,SAAS,OAAO;AACnD,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM;AACJ,cAAM,WAAW,GAAG,iBAAiB,aAAa,KAAK,OAAO,SAAS,UAAU,KAAK,OAAO,QAAQ;AACrG,iBAAS,WAAW;AACpB,eAAO,QAAQ,QAAQ;AAAA,UACrB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACzClB,IAAAC,iBAAA;AAAA,iDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD;AAAA,mDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgBA,SAAQ,UAAU;AAC1C,QAAM,UAAN,MAAc;AAAA,MACZ;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAClB,QAAM,gBAAN,MAAoB;AAAA,MAClB;AAAA,MACA;AAAA,IACF;AACA,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;ACdxB;AAAA,sDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,aAAa;AACrB,QAAM,uBAAN,cAAmC,MAAM;AAAA,MACvC,YAAY,KAAK,SAAS;AACxB,cAAM,GAAG,OAAO,MAAM,KAAK,UAAU,GAAG,CAAC,GAAG;AAAA,MAC9C;AAAA,IACF;AACA,QAAM,aAAa,CAAC,eAAe,UAAU,uBAAuB;AAClE,YAAM,IAAI,qBAAqB,eAAe,OAAO;AAAA,IACvD;AACA,IAAAA,SAAQ,aAAa;AAAA;AAAA;;;ACdrB,IAAAC,kBAAA;AAAA,kDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD;AAAA,qDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,kBAAA;AAAA,kDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,MAAM;AACd,IAAAA,SAAQ,KAAK;AACb,aAAS,GAAG,QAAQ,QAAW;AAC7B,aAAO;AAAA,QACL,IAAI;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AACA,QAAMC,OAAM,YAAU;AAAA,MACpB,IAAI;AAAA,MACJ;AAAA,IACF;AACA,IAAAD,SAAQ,MAAMC;AAAA;AAAA;;;ACjBd;AAAA,mDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,kBAAA;AAAA,iDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AAAA;AAAA;;;ACJD,IAAAC,gBAAA;AAAA,iDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,UAAU;AAChB,YAAQ,aAAa,kBAAoBA,QAAO;AAChD,YAAQ,aAAa,mBAAsBA,QAAO;AAClD,YAAQ,aAAa,sBAAyBA,QAAO;AACrD,YAAQ,aAAa,mBAAqBA,QAAO;AACjD,YAAQ,aAAa,qBAAwBA,QAAO;AACpD,YAAQ,aAAa,mBAAqBA,QAAO;AACjD,YAAQ,aAAa,mBAAsBA,QAAO;AAClD,YAAQ,aAAa,mBAAoBA,QAAO;AAAA;AAAA;;;ACbhD;AAAA,mEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgB;AACxB,QAAM,cAAc;AACpB,QAAM,gBAAgB;AACtB,QAAM,gBAAN,MAAoB;AAAA,MAClB;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,YAAY,UAAU;AACpB,aAAK,WAAW;AAChB,aAAK,UAAU,GAAG,cAAc,aAAa,SAAS,WAAW;AAAA,MACnE;AAAA,MACA,MAAM,KAAK,YAAY,SAAS;AAC9B,YAAI;AACF,gBAAM,CAAC,QAAQ,IAAI,MAAM,WAAW,YAAY,OAAO;AACvD,gBAAM,MAAM,IAAI,YAAY,UAAU,SAAS,UAAU,EAAE,SAAS;AACpE,gBAAM,aAAa,KAAK,IAAI,KAAK,SAAS,QAAQ,KAAK,IAAI,KAAK,SAAS,QAAQ,GAAG,CAAC,EAAE,SAAS;AAChG,eAAK,OAAO,CAAC,IAAI;AAAA,YACf,GAAG,KAAK,OAAO,CAAC;AAAA,YAChB,GAAG;AAAA,YACH;AAAA,UACF;AACA,eAAK,yBAAyB;AAAA,QAChC,QAAQ;AAAA,QAAC;AACT,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;AC/BxB;AAAA,sEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,cAAc;AACpB,QAAM,kBAAkB;AACxB,QAAM,qBAAqB;AAC3B,QAAM,mBAAN,cAA+B,gBAAgB,cAAc;AAAA,MAC3D;AAAA,MACA;AAAA,MACA,YAAY,UAAU;AACpB,cAAM,QAAQ;AACd,aAAK,WAAW;AAChB,aAAK,kBAAkB,mBAAmB;AAAA,MAC5C;AAAA,MACA,MAAM,KAAK,YAAY;AACrB,YAAI;AACF,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,UACF,IAAI,KAAK;AACT,gBAAM,SAAS,KAAK,OAAO,IAAI,WAAS,MAAM,MAAM,EAAE,OAAO,OAAK,IAAI,CAAC;AACvE,gBAAM,WAAW,MAAM,WAAW,YAAY;AAAA,YAC5C;AAAA,UACF,CAAC;AACD,mBAAS,QAAQ,CAAC;AAAA,YAChB,YAAY;AAAA,UACd,GAAG,UAAU;AACX,kBAAM,UAAU,IAAI,YAAY,UAAU,QAAQ,EAAE,IAAI,GAAI,EAAE,SAAS;AACvE,gBAAI,MAAM,OAAO,KAAK,UAAU,EAAG;AACnC,kBAAM,oBAAoB,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,OAAO,CAAC;AACpE,iBAAK,OAAO,KAAK,EAAE,aAAa,kBAAkB,SAAS;AAAA,UAC7D,CAAC;AACD,eAAK,yBAAyB;AAAA,QAChC,QAAQ;AAAA,QAAC;AACT,eAAO,KAAK;AAAA,MACd;AAAA,MACA,uBAAuB,YAAY;AACjC,aAAK,SAAS,KAAK,OAAO,OAAO,OAAK,EAAE,UAAU,QAAQ;AAC1D,aAAK,OAAO,KAAK;AAAA,UACf,OAAO;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AACA,IAAAA,SAAQ,mBAAmB;AAAA;AAAA;;;AChD3B;AAAA,uEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,oBAAoB;AAC5B,QAAM,cAAc;AACpB,QAAM,kBAAkB;AACxB,QAAM,oBAAN,cAAgC,gBAAgB,cAAc;AAAA,MAC5D;AAAA,MACA,YAAY,UAAU;AACpB,cAAM,QAAQ;AACd,aAAK,WAAW;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,YAAY,SAAS;AAC9B,YAAI;AACF,gBAAM,CAAC,QAAQ,IAAI,MAAM,WAAW,YAAY,OAAO;AACvD,gBAAM;AAAA,YACJ;AAAA,UACF,IAAI;AACJ,gBAAM,cAAc,IAAI,YAAY,UAAU,KAAK,SAAS,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS;AAClG,gBAAM,cAAc,IAAI,YAAY,UAAU,KAAK,SAAS,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS;AAClG,gBAAM,WAAW,IAAI,YAAY,UAAU,SAAS,UAAU,EAAE,SAAS;AACzE,gBAAM,aAAa,KAAK,IAAI,aAAa,KAAK,IAAI,aAAa,QAAQ,CAAC,EAAE,SAAS;AACnF,cAAI,SAAS,eAAe;AAC1B,kBAAM,0BAA0B,IAAI,YAAY,UAAU,KAAK,SAAS,cAAc,EAAE,aAAa,MAAM,EAAE,SAAS;AACtH,kBAAM,SAAS,CAAC,OAAO,UAAU,MAAM,EAAE,IAAI,cAAY;AACvD,oBAAM,QAAQ,QAAQ,QAAQ;AAC9B,oBAAM,QAAQ,aAAa,WAAW,WAAW;AACjD,kBAAI,CAAC,OAAO,gBAAgB,CAAC,OAAO,sBAAsB;AACxD,uBAAO;AAAA,cACT;AACA,oBAAM,eAAe,YAAY,UAAU,IAAI,KAAK,SAAS,QAAQ,MAAM,cAAc,uBAAuB,EAAE,SAAS;AAC3H,oBAAM,uBAAuB,YAAY,UAAU,IAAI,yBAAyB,YAAY,UAAU,IAAI,cAAc,MAAM,oBAAoB,CAAC,EAAE,SAAS;AAC9J,qBAAO;AAAA,gBACL;AAAA,gBACA;AAAA,gBACA,UAAU,SAAS;AAAA,gBACnB,QAAQ,KAAK,KAAK,KAAK,IAAI,IAAI,OAAO,uBAAuB,KAAK,MAAO,KAAK,SAAS,SAAS,CAAC;AAAA,gBACjG,eAAe,QAAQ;AAAA,gBACvB;AAAA,gBACA;AAAA,cACF;AAAA,YACF,CAAC;AACD,iBAAK,SAAS,OAAO,OAAO,WAAS,KAAK;AAAA,UAC5C,OAAO;AACL,iBAAK,OAAO,CAAC,IAAI;AAAA,cACf,GAAG,KAAK,OAAO,CAAC;AAAA,cAChB,GAAG;AAAA,cACH;AAAA,YACF;AAAA,UACF;AACA,eAAK,yBAAyB;AAAA,QAChC,QAAQ;AAAA,QAAC;AACT,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AACA,IAAAA,SAAQ,oBAAoB;AAAA;AAAA;;;ACzD5B,IAAAC,gBAAA;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,4BAA4BA,SAAQ,qBAAqB;AACjE,QAAM,eAAe;AACrB,QAAM,qBAAqB;AAC3B,QAAM,sBAAsB;AAC5B,QAAM,kBAAkB;AACxB,QAAM,mBAAmB,CAAC;AAC1B,QAAM,0BAA0B,cAAY;AAC1C,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO,IAAI,mBAAmB,iBAAiB,QAAQ;AAAA,QACzD,KAAK;AACH,iBAAO,IAAI,oBAAoB,kBAAkB,QAAQ;AAAA,QAC3D,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,IAAI,gBAAgB,cAAc,QAAQ;AAAA,QACnD;AACE,kBAAQ,GAAG,aAAa,YAAY,IAAI;AAAA,MAC5C;AAAA,IACF;AACA,QAAM,qBAAqB,cAAY;AACrC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,kBAAkB,QAAQ,GAAG;AACrE,yBAAiB,QAAQ,IAAI,wBAAwB,QAAQ;AAAA,MAC/D;AACA,aAAO,iBAAiB,QAAQ;AAAA,IAClC;AACA,IAAAA,SAAQ,qBAAqB;AAC7B,QAAM,4BAA4B,eAAa,GAAGA,SAAQ,oBAAoB,QAAQ;AACtF,IAAAA,SAAQ,4BAA4B;AAAA;AAAA;;;ACtCpC;AAAA,kEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,wBAAN,cAAoC,iBAAiB,eAAe;AAAA,MAClE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI;AACJ,YAAI,SAAS;AACX,WAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,YAC9C,MAAM;AAAA,YACN,MAAM;AAAA,UACR,GAAG;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,UACR,GAAG;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,UACR,CAAC,CAAC;AACF,cAAI,QAAQ,UAAU;AACpB,aAAC,GAAG,kBAAkB,gBAAgB,QAAQ,UAAU,CAAC;AAAA,cACvD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,cACN,MAAM;AAAA,YACR,CAAC,CAAC;AAAA,UACJ;AAAA,QACF;AACA,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,cAAM,UAAU;AAAA,UACd,WAAW,SAAS;AAAA,UACpB,QAAQ,SAAS;AAAA,UACjB,QAAQ,SAAS;AAAA,UACjB,gBAAgB,SAAS;AAAA,UACzB,WAAW,SAAS,SAAS,YAAY,SAAS,YAAY;AAAA,UAC9D,QAAQ,CAAC;AAAA,QACX;AACA,YAAI,SAAS,WAAW;AACtB,gBAAM,qBAAqB,GAAG,OAAO,oBAAoB,QAAQ;AACjE,cAAI,QAAQ,cAAc,SAAS;AACjC,kBAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,UAAU,KAAK,aAAa,QAAQ;AAC/F,kBAAM,kBAAkB,KAAK,SAAS,OAAO;AAAA,UAC/C;AACA,kBAAQ,SAAS,kBAAkB;AAAA,QACrC,OAAO;AACL,gBAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,UAAU,KAAK,aAAa,QAAQ;AAC/F,kBAAQ,SAAS,MAAM,QAAQ,YAAY,WAAW,CAAC,CAAC;AAAA,QAC1D;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACzGlB;AAAA,+EAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,qCAAN,cAAiD,iBAAiB,eAAe;AAAA,MAC/E,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,SAAS;AAAA,YACP,YAAY,QAAQ;AAAA,YACpB,MAAM,QAAQ;AAAA,YACd,IAAI,QAAQ;AAAA,YACZ,SAAS,QAAQ;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,yBAAyB,KAAK,OAAO,OAAO;AAAA,MAC7D;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC3DlB;AAAA,0EAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,gCAAN,cAA4C,iBAAiB,eAAe;AAAA,MAC1E,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,YAAY,QAAQ;AAAA,UACpB,OAAO,QAAQ;AAAA,UACf;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,oBAAoB;AAAA,UACjC,YAAY,KAAK,OAAO;AAAA,UACxB,OAAO,KAAK,OAAO;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACpDlB;AAAA,8DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,oBAAN,cAAgC,iBAAiB,eAAe;AAAA,MAC9D,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,eAAe;AAAA,MAChC;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACxClB;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,mBAAmB;AACzB,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,aAAa;AACnB,QAAM,uBAAN,cAAmC,iBAAiB,eAAe;AAAA,MACjE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,SAAS;AAAA,YACP,MAAM,QAAQ;AAAA,YACd,IAAI,QAAQ;AAAA,YACZ,MAAM,QAAQ;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,cAAM,WAAW,MAAM,QAAQ,QAAQ,KAAK,OAAO,OAAO;AAC1D,eAAO;AAAA,MACT;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC5DlB;AAAA,gFAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,sCAAN,cAAkD,iBAAiB,eAAe;AAAA,MAChF,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,YAAY,QAAQ;AAAA,UACpB,YAAY,QAAQ;AAAA,UACpB,OAAO,QAAQ;AAAA,UACf;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,0BAA0B;AAAA,UACvC,YAAY,KAAK,OAAO;AAAA,UACxB,YAAY,KAAK,OAAO;AAAA,UACxB,OAAO,KAAK,OAAO;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC1DlB;AAAA,sEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,4BAAN,cAAwC,iBAAiB,eAAe;AAAA,MACtE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,KAAK,QAAQ;AAAA,UACb;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,gBAAgB,KAAK,OAAO,GAAG;AAAA,MAChD;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC7ClB;AAAA,uEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,6BAAN,cAAyC,iBAAiB,eAAe;AAAA,MACvE,OAAO;AACL,aAAK,sBAAsB,CAAC;AAC5B,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,kBAAkB,UAAU,QAAQ,cAAc;AACvE,aAAK,SAAS;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,eAAO,GAAG,iBAAiB,sBAAsB,KAAK,OAAO,QAAQ;AACrE,eAAO;AAAA,MACT;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC3ClB;AAAA,gEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,sBAAN,cAAkC,iBAAiB,eAAe;AAAA,MAChE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,YAAY;AAAA,QACd,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,YAAI,QAAQ,UAAU;AACpB,kBAAQ,SAAS,QAAQ,aAAW;AAClC,aAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,cAC9C,MAAM;AAAA,cACN,MAAM;AAAA,cACN,UAAU;AAAA,YACZ,CAAC,CAAC;AAAA,UACJ,CAAC;AAAA,QACH;AACA,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,UAAU,QAAQ;AAAA,UAClB,QAAQ,QAAQ,UAAU;AAAA,UAC1B;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,YAAI,SAAS;AAAA,UACX,YAAY;AAAA,QACd;AACA,YAAI,OAAQ,UAAS,MAAM,QAAQ,gBAAgB;AACnD,YAAI,SAAU,UAAS,MAAM,QAAQ,kBAAkB,QAAQ;AAC/D,eAAO;AAAA,MACT;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACnElB;AAAA,yEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,+BAAN,cAA2C,iBAAiB,eAAe;AAAA,MACzE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,mBAAmB,KAAK,OAAO,QAAQ;AAAA,MACxD;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC7ClB;AAAA,kEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,wBAAN,cAAoC,iBAAiB,eAAe;AAAA,MAClE,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,YAAY;AAAA,QACd,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,YAAI,QAAQ,UAAU;AACpB,kBAAQ,SAAS,QAAQ,aAAW;AAClC,aAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,cAC9C,MAAM;AAAA,cACN,MAAM;AAAA,cACN,UAAU;AAAA,YACZ,CAAC,CAAC;AAAA,UACJ,CAAC;AAAA,QACH;AACA,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ,UAAU,QAAQ;AAAA,UAClB;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,QAAQ,QAAQ,UAAU;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,KAAK;AACT,YAAI,KAAK,OAAO,QAAQ;AACtB,iBAAO,QAAQ,kBAAkB;AAAA,QACnC;AACA,YAAI,UAAU;AACZ,iBAAO,QAAQ,oBAAoB,QAAQ;AAAA,QAC7C;AACA,eAAO,QAAQ,eAAe;AAAA,MAChC;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACnElB;AAAA,2EAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,cAAc;AACpB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,aAAa;AACnB,QAAM,iCAAN,cAA6C,iBAAiB,eAAe;AAAA,MAC3E,OAAO;AACL,aAAK,YAAY;AACjB,aAAK,QAAQ;AACb,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,aAAa,QAAQ,IAAI;AACzD,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,SAAS;AAAA,UACZ;AAAA,UACA,UAAU,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,UAAU,OAAO,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AACvH,eAAO,QAAQ,qBAAqB;AAAA,MACtC;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACxClB;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,iBAAiB;AACvB,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO;AAAA,MAC7E,QAAQ,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACpE,UAAU,eAAe,KAAK,OAAO;AAAA,MACrC,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,IACpE,CAAC,GAAG,eAAe,KAAK,OAAO;AAAA,MAC7B,QAAQ,eAAe,KAAK,YAAY;AAAA,MACxC,UAAU,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,MACtE,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,UAAU,CAAC;AAAA,IACvE,CAAC,CAAC,CAAC;AAAA;AAAA;;;ACfH,IAAAC,0BAAA;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,WAAW;AACjB,QAAM,mBAAmB;AACzB,QAAM,iBAAN,cAA6B,iBAAiB,eAAe;AAAA,MAC3D,OAAO;AACL,aAAK,kBAAkB,CAAC,SAAS,GAAG,YAAY,SAAS,GAAG,QAAQ;AACpE,aAAK,qBAAqB;AAC1B,aAAK,sBAAsB,CAAC,YAAY;AACxC,aAAK,kBAAkB;AACvB,aAAK,iBAAiB;AACtB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,iBAAiB,gBAAgB,OAAO;AACnE,aAAK,SAAS;AAAA,MAChB;AAAA,MACA,IAAI,eAAe;AACjB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,qBAAqB;AAAA,YACnB,WAAW;AAAA,YACX,OAAO;AAAA,UACT;AAAA,UACA,OAAO;AAAA,QACT;AAAA,MACF;AAAA,MACA,MAAM;AACJ,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,YAAI,QAAQ;AACV,iBAAO,KAAK,OAAO,eAAe;AAAA,YAChC;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,KAAK,OAAO,eAAe;AAAA,YAChC;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AChDlB;AAAA,sDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,aAAa;AACnB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,YAAN,cAAwB,iBAAiB,eAAe;AAAA,MACtD,OAAO;AACL,aAAK,sBAAsB,CAAC,YAAY;AACxC,aAAK,iBAAiB;AACtB,aAAK,kBAAkB;AACvB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,WAAW,eAAe,WAAW,OAAO;AACvE,aAAK,SAAS;AAAA,UACZ,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,cAAM,WAAW,MAAM,IAAI,UAAU,aAAa,WAAW,KAAK,MAAM;AACxE,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC3BlB;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,iBAAN,cAA6B,iBAAiB,eAAe;AAAA,MAC3D,OAAO;AACL,aAAK,sBAAsB,CAAC,YAAY;AACxC,aAAK,kBAAkB;AACvB,aAAK,iBAAiB;AACtB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,aAAK,SAAS;AAAA,UACZ,QAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AAAA,MACA,MAAM,MAAM;AACV,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,cAAM,WAAW,MAAM,IAAI,UAAU,kBAAkB,WAAW,KAAK,MAAM;AAC7E,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC7BlB;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,IAAAA,SAAQ,iBAAiB,eAAe,KAAK,OAAO;AAAA,MAClD,MAAM,SAAS;AAAA,MACf,KAAK,eAAe,KAAK,OAAO;AAAA,MAChC,OAAO,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC;AAAA,MAC7F,SAAS,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACnE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACxE,cAAc,eAAe,KAAK,SAAS,eAAe,KAAK,QAAQ,CAAC;AAAA,MACxE,IAAI,eAAe,KAAK,SAAS,eAAe,KAAK,MAAM,CAAC,eAAe,KAAK,OAAO,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC;AAAA,IAC1H,CAAC;AAAA;AAAA;;;AChBD,IAAAC,0BAAA;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,WAAW;AACjB,QAAM,oBAAoB;AAC1B,QAAM,mBAAmB;AACzB,QAAM,WAAW;AACjB,QAAM,cAAc;AACpB,QAAM,iBAAN,cAA6B,iBAAiB,eAAe;AAAA,MAC3D;AAAA,MACA,OAAO;AACL,aAAK,sBAAsB,CAAC,QAAQ,OAAO;AAC3C,aAAK,iBAAiB,GAAG,kBAAkB,kBAAkB,KAAK,MAAM,MAAM,KAAK,aAAa;AAChG,aAAK,YAAY,CAAC,CAAC,KAAK,QAAQ;AAChC,cAAM,UAAU,CAAC,KAAK,QAAQ,SAAS;AAAA,UACrC,GAAG,KAAK;AAAA,UACR,QAAQ,CAAC,KAAK,OAAO;AAAA,QACvB,IAAI,KAAK;AACT,aAAK,qBAAqB,OAAO,QAAQ,uBAAuB,YAAY,QAAQ,qBAAqB;AACzG,SAAC,GAAG,eAAe,SAAS,GAAG,SAAS,QAAQ,iBAAiB,cAAc,GAAG,OAAO;AACzF,aAAK,SAAS,QAAQ,OAAO,IAAI,YAAU;AAAA,UACzC,YAAY,GAAG,YAAY,cAAc,MAAM,IAAI;AAAA,UACnD,KAAK,MAAM;AAAA,UACX,OAAO,MAAM,iBAAiB,SAAS,MAAM,MAAM,SAAS,KAAK,IAAI,MAAM;AAAA,UAC3E,SAAS,MAAM;AAAA,UACf,gBAAgB,MAAM;AAAA,UACtB,gBAAgB,MAAM;AAAA,UACtB,IAAI,MAAM,cAAc,SAAS,MAAM,GAAG,SAAS,KAAK,IAAI,MAAM;AAAA,QACpE,EAAE;AAAA,MACJ;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,cAAM,YAAY,CAAC;AACnB,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,iBAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,gBAAM,WAAW,MAAM,IAAI,UAAU,kBAAkB,oBAAoB,KAAK,OAAO,CAAC,CAAC;AACzF,oBAAU,KAAK,SAAS,OAAO;AAC/B,cAAI,KAAK,WAAW;AAClB,iBAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,iBAAiB;AAAA,cAC1E,OAAO,KAAK,OAAO;AAAA,cACnB,UAAU;AAAA,cACV;AAAA,YACF,CAAC,CAAC;AAAA,UACJ;AAAA,QACF;AACA,eAAO,KAAK,YAAY,YAAY,UAAU,CAAC;AAAA,MACjD;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACtDlB;AAAA,yDAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,aAAa;AACnB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,eAAN,cAA2B,iBAAiB,eAAe;AAAA,MACzD;AAAA,MACA,OAAO;AACL,aAAK,sBAAsB,CAAC,MAAM;AAClC,aAAK,iBAAiB,GAAG,kBAAkB,kBAAkB,KAAK,MAAM,MAAM,KAAK,aAAa;AAChG,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,WAAW,eAAe,cAAc,OAAO;AAC1E,aAAK,SAAS;AAAA,UACZ,6BAA6B,QAAQ;AAAA,QACvC;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,cAAM,WAAW,MAAM,IAAI,UAAU,gBAAgB,aAAa,KAAK,MAAM;AAC7E,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;AC/BlB;AAAA,yEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,aAAa;AACnB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,+BAAN,cAA2C,iBAAiB,eAAe;AAAA,MACzE;AAAA,MACA,OAAO;AACL,aAAK,sBAAsB,CAAC,MAAM;AAClC,aAAK,iBAAiB,GAAG,kBAAkB,kBAAkB,KAAK,MAAM,MAAM,KAAK,aAAa;AAChG,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,WAAW,eAAe,8BAA8B,OAAO;AAC1F,aAAK,SAAS;AAAA,UACZ,uBAAuB,QAAQ;AAAA,UAC/B,iBAAiB,QAAQ;AAAA,UACzB,6BAA6B,QAAQ;AAAA,QACvC;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,cAAM,WAAW,MAAM,IAAI,UAAU,gCAAgC,4BAA4B,KAAK,MAAM;AAC5G,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACjClB;AAAA,yEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,+BAAN,cAA2C,iBAAiB,eAAe;AAAA,MACzE;AAAA,MACA,OAAO;AACL,aAAK,sBAAsB,CAAC,MAAM;AAClC,aAAK,iBAAiB,GAAG,kBAAkB,kBAAkB,KAAK,MAAM,MAAM,KAAK,aAAa;AAChG,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,eAAe,QAAQ,WAAW,eAAe,8BAA8B,OAAO;AAC1F,YAAI,QAAQ,QAAQ,QAAW;AAC7B,gBAAM,YAAY,OAAO,KAAK,QAAQ,IAAI,eAAe,KAAK;AAC9D,gBAAM,iBAAiB,WAAW,IAAI,qBAAqB,SAAS;AACpE,eAAK,SAAS;AAAA,YACZ,gBAAgB,QAAQ,IAAI;AAAA,YAC5B,wBAAwB,eAAe,UAAU,SAAS,KAAK;AAAA,UACjE;AAAA,QACF,OAAO;AACL,eAAK,SAAS,CAAC;AAAA,QACjB;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,MAAM,MAAM;AACV,cAAM,MAAM,KAAK,OAAO,YAAY;AACpC,cAAM,WAAW,MAAM,IAAI,UAAU,gCAAgC,6BAA6B,KAAK,MAAM;AAC7G,eAAO,SAAS;AAAA,MAClB;AAAA,IACF;AACA,IAAAA,SAAQ,UAAU;AAAA;AAAA;;;ACvClB;AAAA,oEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,2BAA2B;AACnC,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,QAAM,2BAA2B,CAAC,IAAI;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM,WAAW,QAAQ,OAAO,CAAC,KAAK,SAAS,GAAG,YAAY,WAAW,GAAG,EAAE,KAAK,IAAI,MAAM,GAAG,IAAI,YAAY,UAAU,GAAG,CAAC;AAC9H,YAAM,UAAU,OAAO,OAAO,CAAC,KAAK,SAAS,GAAG,YAAY,WAAW,GAAG,EAAE,KAAK,IAAI,MAAM,GAAG,IAAI,YAAY,UAAU,GAAG,CAAC;AAC5H,YAAM,eAAe,UAAU,OAAO,OAAO,UAAU,MAAM,UAAU,MAAM;AAC7E,YAAM,cAAc,CAAC;AAAA,QACnB;AAAA,MACF,MAAM;AACJ,cAAMC,QAAO,aAAa,GAAG,YAAY,mBAAmB,SAAS,IAAI;AACzE,eAAO,aAAa,OAAO,aAAW,QAAQ,SAASA,KAAI,EAAE,IAAI,aAAW,QAAQ,OAAO;AAAA,MAC7F;AACA,aAAO;AAAA,QACL,MAAM,GAAG,MAAM;AAAA,QACf,KAAK,GAAG,MAAM;AAAA,QACd,aAAa;AAAA,QACb,WAAW,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAAA,QACvC,eAAe;AAAA,QACf,OAAO,GAAG,YAAY;AAAA,QACtB,MAAM,GAAG,OAAO;AAAA,QAChB,OAAO,SAAS,SAAS;AAAA,QACzB,SAAS,QAAQ,SAAS;AAAA,QAC1B,MAAM,QAAQ,MAAM,QAAQ,EAAE,SAAS;AAAA,QACvC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO;AAAA,UAC3B;AAAA,UACA,MAAM,IAAI;AAAA,UACV,MAAM,IAAI;AAAA,UACV,WAAW;AAAA,UACX,WAAW,YAAY,GAAG;AAAA,UAC1B,OAAO,IAAI,OAAO,SAAS;AAAA,UAC3B,UAAU,IAAI;AAAA,QAChB,EAAE;AAAA,QACF,MAAM,QAAQ,IAAI,CAAC,KAAK,MAAM;AAC5B,cAAI,uBAAuB,CAAC;AAC5B,cAAI,IAAI,SAAS;AACf,mCAAuB,CAAC,IAAI,OAAO;AAAA,UACrC,WAAW,oBAAoB,KAAK;AAClC,mCAAuB,CAAC,cAAc,OAAO,KAAK,IAAI,gBAAgB,KAAK,EAAE,SAAS,OAAO,CAAC,GAAG;AAAA,UACnG,OAAO;AACL,mCAAuB,YAAY,GAAG;AAAA,UACxC;AACA,iBAAO;AAAA,YACL;AAAA,YACA,WAAW,IAAI,gBAAgB;AAAA,YAC/B,WAAW;AAAA,YACX,OAAO,IAAI,OAAO,SAAS;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,IAAAD,SAAQ,2BAA2B;AAAA;AAAA;;;AC5DnC;AAAA,kEAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgB;AACxB,QAAM,mBAAmB;AACzB,QAAM,gBAAgB,CAAC,SAAS,aAAa;AAC3C,UAAI,SAAS,aAAa,SAAS,SAAS,aAAa,OAAO;AAC9D,YAAI,OAAO,QAAQ,iBAAiB,WAAW;AAC7C,kBAAQ,eAAe;AAAA,QACzB;AACA,YAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,kBAAQ,UAAU;AAAA,QACpB;AACA,YAAI,OAAO,QAAQ,qBAAqB,UAAU;AAChD,kBAAQ,mBAAmB;AAAA,QAC7B;AACA,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,gBAAM,WAAW,GAAG,iBAAiB,aAAa,SAAS,QAAQ;AACnE,cAAI,WAAW,QAAQ,YAAY,mBAAmB;AACpD,oBAAQ,YAAY,QAAQ,WAAW;AAAA,UACzC,OAAO;AACL,oBAAQ,YAAY;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AACA,UAAI,SAAS,aAAa,OAAO;AAC/B,YAAI,OAAO,QAAQ,iBAAiB,WAAW;AAC7C,kBAAQ,eAAe;AAAA,QACzB;AACA,YAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,kBAAQ,UAAU;AAAA,QACpB;AACA,YAAI,OAAO,QAAQ,qBAAqB,UAAU;AAChD,kBAAQ,mBAAmB;AAAA,QAC7B;AACA,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,kBAAQ,YAAY;AAAA,QACtB;AAAA,MACF;AACA,UAAI,SAAS,aAAa,QAAQ;AAChC,YAAI,OAAO,QAAQ,iBAAiB,WAAW;AAC7C,kBAAQ,eAAe;AAAA,QACzB;AACA,YAAI,OAAO,QAAQ,YAAY,UAAU;AACvC,kBAAQ,UAAU;AAAA,QACpB;AACA,YAAI,OAAO,QAAQ,qBAAqB,UAAU;AAChD,kBAAQ,mBAAmB;AAAA,QAC7B;AACA,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,kBAAQ,YAAY;AAAA,QACtB;AAAA,MACF;AACA,UAAI,SAAS,aAAa,SAAS,SAAS,aAAa,QAAQ;AAC/D,YAAI,OAAO,QAAQ,cAAc,UAAU;AACzC,kBAAQ,YAAY,KAAK,OAAM,oBAAI,KAAK,GAAE,QAAQ,IAAI,GAAI;AAAA,QAC5D;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;AC9DxB;AAAA,0DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,wBAAwBA,SAAQ,mBAAmBA,SAAQ,cAAc;AACjF,IAAAA,SAAQ,aAAa;AACrB,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,kBAAkB,CAAC,MAAM,YAAY;AACzC,YAAM,YAAY,OAAO,KAAK,KAAK,YAAY,KAAK;AACpD,YAAM,YAAY,OAAO,KAAK,KAAK,YAAY,KAAK;AACpD,YAAM,MAAM,WAAW,MAAM,cAAc,WAAW,WAAW,OAAO;AACxE,UAAI,UAAU,KAAK;AACnB,UAAI,UAAU,KAAK;AACnB,UAAI,uBAAuB,KAAK;AAChC,aAAO;AAAA,IACT;AACA,QAAM,cAAc,CAAC,MAAM,iBAAiB,qBAAqB;AAC/D,YAAM,OAAO,WAAW,MAAM,WAAW,MAAM,eAAe;AAC9D,UAAI,kBAAkB;AACpB,aAAK,UAAU;AAAA,MACjB;AACA,aAAO,KAAK,SAAS;AAAA,IACvB;AACA,IAAAA,SAAQ,cAAc;AACtB,QAAM,iBAAiB,CAAC,KAAK,YAAY;AACvC,YAAM,UAAU,IAAI;AACpB,YAAM,UAAU,gBAAgB,SAAS,OAAO;AAChD,YAAM,UAAU,QAAQ,SAAS;AACjC,YAAM,WAAW,GAAGA,SAAQ,aAAa,IAAI,MAAM,OAAO;AAC1D,UAAI,YAAY,SAAS;AACvB,cAAM,YAAY,OAAO,WAAW,WAAW,kEAAkE,OAAO,eAAe,OAAO,EAAE;AAAA,MAClJ;AACA,aAAO;AAAA,IACT;AACA,QAAM,kBAAkB,CAAC,YAAY,cAAc,WAAW;AAC5D,YAAM,sBAAsB,WAAW,OAAO,MAAM;AACpD,YAAM,cAAc,oBAAoB,SAAS;AACjD,YAAM,WAAW,aAAa,SAAS;AACvC,UAAI,gBAAgB,UAAU;AAC5B,cAAM,YAAY,OAAO,WAAW,WAAW,mEAAmE,WAAW,eAAe,QAAQ,EAAE;AAAA,MACxJ;AAAA,IACF;AACA,aAAS,WAAW,MAAM,WAAW,QAAQ,SAAS,mBAAmB;AACvE,YAAM,UAAU,eAAe,MAAM,OAAO;AAC5C,YAAM,YAAY,eAAe,WAAW,OAAO;AACnD,sBAAgB,SAAS,WAAW,MAAM;AAC1C,aAAO;AAAA,IACT;AACA,QAAM,mBAAmB,CAAC,MAAM,YAAY;AAC1C,YAAM,KAAK,WAAW,MAAM,WAAW,MAAM,OAAO;AACpD,aAAO;AAAA,QACL,OAAO,GAAG;AAAA,QACV,WAAW,GAAG;AAAA,QACd,aAAa,GAAG;AAAA,QAChB,YAAY,GAAG,UAAU,SAAS,KAAK;AAAA,QACvC,YAAY,GAAG,UAAU,SAAS,KAAK;AAAA,MACzC;AAAA,IACF;AACA,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,wBAAwB,CAAC,SAAS,SAAS;AAC/C,UAAI,cAAc,QAAQ,KAAK,UAAU,SAAS;AAChD,aAAK,SAAS,QAAQ,QAAQ,QAAM;AAClC,cAAI,OAAO,GAAG,SAAS,UAAU;AAC/B,eAAG,QAAQ,GAAGA,SAAQ,kBAAkB,GAAG,MAAM,OAAO;AAAA,UAC1D;AAAA,QACF,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,wBAAwB;AAAA;AAAA;;;ACvEhC;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgBA,SAAQ,sBAAsBA,SAAQ,uBAAuB;AACrF,QAAM,gBAAgB;AACtB,QAAM,cAAc;AACpB,QAAM,oBAAoB;AAC1B,QAAM,uBAAuB,CAAC,QAAQ,aAAa,OAAO,IAAI,QAAM,GAAG,YAAY,SAAS,CAAC,CAAC,EAAE,IAAI,QAAM,GAAG,cAAc,uBAAuB,SAAS,SAAS,CAAC,CAAC,EAAE,IAAI,WAAS;AACnL,YAAM,YAAY,MAAM,gBAAgB,eAAe,GAAG,YAAY,cAAc,MAAM,SAAS;AACnG,OAAC,GAAG,kBAAkB,gBAAgB,OAAO,CAAC;AAAA,QAC5C,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,MACZ,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,MACR,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,MACR,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,MACR,GAAG;AAAA,QACD,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC,CAAC;AACF,UAAI,MAAM,gBAAgB,YAAY;AACpC,SAAC,GAAG,kBAAkB,gBAAgB,OAAO,CAAC;AAAA,UAC5C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AAAA,MACJ,OAAO;AACL,SAAC,GAAG,YAAY,cAAc,MAAM,SAAS;AAAA,MAC/C;AACA,aAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,uBAAuB;AAC/B,QAAM,sBAAsB,CAAC,QAAQ,WAAW;AAC9C,aAAO,QAAQ,WAAS;AACtB,YAAI,CAAC,MAAM,QAAQ;AACjB,kBAAQ,KAAK,kEAAkE;AAC/E,gBAAM,QAAQ,OAAO,KAAK,OAAK,EAAE,MAAM,MAAM,MAAM,SAAS;AAC5D,cAAI,SAAS,MAAM,KAAK,MAAM,UAAU,GAAG;AACzC,kBAAM,SAAS,MAAM,KAAK,MAAM,UAAU,EAAE;AAAA,UAC9C;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,gBAAgB,CAAC,OAAO,WAAW,eAAe;AACtD,YAAM,aAAa,GAAG,YAAY,WAAW,MAAM,IAAI;AACvD,aAAO;AAAA,QACL;AAAA,QACA,YAAY,MAAM;AAAA,QAClB,WAAW,MAAM;AAAA,QACjB,cAAc,GAAG,YAAY,eAAe,SAAS;AAAA,QACrD,QAAQ,MAAM;AAAA,QACd;AAAA,MACF;AAAA,IACF;AACA,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;ACnFxB;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,aAAa;AACnB,QAAM,uBAAuB,CAAC,SAAS,YAAY;AACjD,UAAI;AACF,cAAM,UAAU,WAAW,QAAQ,gBAAgB,SAAS,OAAO;AACnE,YAAI,QAAQ,YAAY,QAAQ,cAAc,QAAQ,YAAY,QAAQ,YAAY;AACpF,iBAAO;AAAA,QACT;AAAA,MACF,QAAQ;AACN,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,QAAM,uBAAuB,CAAC,SAAS,YAAY;AACjD,UAAI;AACF,cAAM,UAAU,WAAW,QAAQ,WAAW,OAAO;AACrD,YAAI,QAAQ,WAAW,QAAQ,QAAQ;AACrC,iBAAO;AAAA,QACT;AAAA,MACF,QAAQ;AACN,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,QAAM,iBAAiB,CAAC,SAAS,aAAa,qBAAqB,SAAS,SAAS,OAAO,KAAK,qBAAqB,SAAS,SAAS,OAAO;AAC/I,IAAAA,SAAQ,iBAAiB;AAAA;AAAA;;;AC9BzB;AAAA,4DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iBAAiBA,SAAQ,mBAAmBA,SAAQ,wBAAwB;AACpF,QAAM,cAAc;AACpB,QAAM,iBAAiB;AACvB,QAAM,gBAAgB;AACtB,QAAM,cAAc;AACpB,QAAM,oBAAoB;AAC1B,QAAM,wBAAwB,CAAC,SAAS,aAAa;AACnD,YAAM,gBAAgB,QAAQ,IAAI,QAAM,GAAG,YAAY,SAAS,CAAC,CAAC,EAAE,IAAI,QAAM,GAAG,cAAc,uBAAuB,SAAS,SAAS,CAAC,CAAC;AAC1I,oBAAc,QAAQ,YAAU;AAC9B,SAAC,GAAG,kBAAkB,gBAAgB,QAAQ,CAAC;AAAA,UAC7C,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,WAAW,KAAK,OAAO,UAAU,eAAe,KAAK,QAAQ,SAAS,GAAG;AACxH,gBAAM,YAAY,OAAO,WAAW,2BAA2B,gDAAgD;AAAA,QACjH;AACA,YAAI,OAAO,aAAa,CAAC,OAAO,aAAa;AAC3C,iBAAO,eAAe,GAAG,YAAY,qBAAqB,OAAO,SAAS;AAAA,QAC5E;AACA,YAAI,aAAa,UAAU,OAAO,OAAO,YAAY,YAAY,EAAE,GAAG,eAAe,gBAAgB,OAAO,SAAS,QAAQ,GAAG;AAC9H,gBAAM,YAAY,OAAO,WAAW,2BAA2B,WAAW,SAAS,KAAK,mBAAmB,OAAO,OAAO,EAAE;AAAA,QAC7H;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,wBAAwB;AAChC,QAAM,mBAAmB,CAAC,QAAQ,aAAa;AAC7C,YAAM,kBAAkB,aAAW;AACjC,YAAI,CAAC,WAAW,EAAE,GAAG,eAAe,gBAAgB,SAAS,QAAQ,GAAG;AACtE,gBAAM,YAAY,OAAO,WAAW,2BAA2B,WAAW,SAAS,KAAK,wBAAwB;AAAA,QAClH;AAAA,MACF;AACA,cAAQ,OAAO,MAAM;AAAA,QACnB,KAAK;AACH,WAAC,GAAG,kBAAkB,gBAAgB,QAAQ,CAAC;AAAA,YAC7C,MAAM;AAAA,YACN,MAAM;AAAA,UACR,CAAC,CAAC;AACF,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,UAClB;AAAA,QACF,KAAK;AACH,WAAC,GAAG,kBAAkB,gBAAgB,QAAQ,CAAC;AAAA,YAC7C,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC,CAAC;AACF,0BAAgB,OAAO,OAAO;AAC9B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,UAClB;AAAA,QACF,KAAK;AACH,WAAC,GAAG,kBAAkB,gBAAgB,QAAQ,CAAC;AAAA,YAC7C,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC,CAAC;AACF,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,QAAQ,OAAO;AAAA,UACjB;AAAA,QACF,KAAK;AACH,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AACE,WAAC,GAAG,kBAAkB,gBAAgB,QAAQ,CAAC;AAAA,YAC7C,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,GAAG;AAAA,YACD,MAAM;AAAA,YACN,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC,CAAC;AACF,0BAAgB,OAAO,OAAO;AAC9B,iBAAO;AAAA,YACL,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,QAAQ,OAAO;AAAA,UACjB;AAAA,MACJ;AAAA,IACF;AACA,IAAAA,SAAQ,mBAAmB;AAC3B,QAAM,iBAAiB,YAAU;AAC/B,UAAI,OAAO,SAAS,YAAY;AAC9B,eAAO;AAAA,UACL,QAAQ;AAAA,UACR,gBAAgB,OAAO;AAAA,UACvB,aAAa;AAAA,QACf;AAAA,MACF;AACA,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,aAAa,GAAG,YAAY,WAAW,OAAO,IAAI;AACxD,eAAO;AAAA,UACL;AAAA,UACA,QAAQ,OAAO;AAAA,UACf,cAAc,GAAG,YAAY,qBAAqB,SAAS;AAAA,QAC7D;AAAA,MACF;AACA,aAAO;AAAA,QACL,SAAS,OAAO;AAAA,QAChB,QAAQ,OAAO;AAAA,QACf,aAAa;AAAA,MACf;AAAA,IACF;AACA,IAAAA,SAAQ,iBAAiB;AAAA;AAAA;;;AC7HzB;AAAA,0DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,iCAAiCA,SAAQ,kCAAkCA,SAAQ,iCAAiCA,SAAQ,4BAA4BA,SAAQ,wBAAwBA,SAAQ,sBAAsBA,SAAQ,4BAA4BA,SAAQ,gCAAgC;AAC1S,QAAM,iBAAiB;AACvB,QAAM,UAAU;AAChB,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,WAAW;AACjB,QAAM,cAAc;AACpB,QAAM,gCAAgC,CAAC,QAAQ,UAAU,CAAC,GAAG,aAAa;AACxE,UAAI,UAAU,aAAa,SAAS,UAAU,aAAa,OAAO;AAChE,eAAO,EAAE,QAAQ,WAAW,QAAQ,WAAW;AAAA,MACjD;AACA,YAAM,aAAa,CAAC,gBAAgB,UAAU;AAC9C,aAAO,CAAC,CAAC,OAAO,KAAK,WAAS,CAAC,WAAW,KAAK,OAAK,MAAM,MAAM,WAAW,CAAC;AAAA,IAC9E;AACA,IAAAA,SAAQ,gCAAgC;AACxC,QAAM,4BAA4B,YAAU;AAC1C,YAAM,SAAS,CAAC;AAChB,aAAO,QAAQ,WAAS;AACtB,YAAI,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,SAAS,GAAG;AACxD,iBAAO,KAAK,MAAM,SAAS;AAAA,QAC7B;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,4BAA4B;AACpC,QAAM,sBAAsB,CAAC,QAAQ,YAAY;AAC/C,YAAM,SAAS,CAAC;AAChB,aAAO,QAAQ,WAAS;AACtB,YAAI,MAAM,aAAa,CAAC,OAAO,SAAS,MAAM,SAAS,GAAG;AACxD,iBAAO,KAAK,MAAM,SAAS;AAAA,QAC7B;AAAA,MACF,CAAC;AACD,cAAQ,QAAQ,YAAU;AACxB,YAAI,OAAO,aAAa,CAAC,OAAO,SAAS,OAAO,SAAS,GAAG;AAC1D,iBAAO,KAAK,OAAO,SAAS;AAAA,QAC9B;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,wBAAwB,aAAW,CAAAC,WAASA,OAAM,IAAI,SAAO,WAAW,YAAY,QAAQ,KAAK;AAAA,MACrG;AAAA,IACF,CAAC,CAAC;AACF,IAAAD,SAAQ,wBAAwB;AAChC,QAAM,qBAAqB,CAAC,OAAO,UAAU;AAC3C,YAAM,YAAY,MAAM,aAAa;AACrC,UAAI,WAAW;AACb,cAAM,aAAa,UAAU,SAAS,KAAK;AAAA,MAC7C;AACA,YAAM,WAAW,MAAM,gBAAgB;AACvC,UAAI,UAAU;AACZ,YAAI,SAAS,SAAS,WAAW,SAAS,kBAAkB,MAAM,WAAW,GAAG;AAC9E,gBAAM,mBAAmB,SAAS;AAAA,QACpC;AACA,YAAI,SAAS,SAAS,UAAU,MAAM,QAAQ,MAAM,WAAW,GAAG;AAChE,gBAAM,WAAW,MAAM,QAAQ;AAAA,QACjC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,QAAM,oBAAoB,CAAC,QAAQ,YAAY;AAC7C,UAAI;AACF,cAAM,UAAU,WAAW,QAAQ,iBAAiB,QAAQ,OAAO;AACnE,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QACF;AAAA,MACF,QAAQ;AACN,YAAI;AACF,gBAAM;AAAA,YACJ;AAAA,UACF,IAAI,WAAW,SAAS,MAAM;AAAA,YAC5B;AAAA,UACF,GAAG;AAAA,YACD,UAAU;AAAA,UACZ,CAAC;AACD,iBAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,UACF;AAAA,QACF,QAAQ;AACN,iBAAO;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAM,2BAA2B,CAAC,IAAI,UAAU,eAAe,cAAc;AAC3E,YAAM,YAAY,CAAC,OAAO,MAAM;AAC9B,cAAM,YAAY,QAAQ,YAAY,cAAc,MAAM,IAAI,EAAE,SAAS,KAAK;AAC9E,cAAM,eAAe,cAAc,KAAK,SAAO,IAAI,cAAc,aAAa,IAAI,eAAe,MAAM,KAAK;AAC5G,YAAI,CAAC,cAAc,WAAW;AAC5B,iBAAO,GAAG,SAAS,YAAY,2BAA2B,+CAA+C,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG;AAAA,QAC9H;AACA,eAAO;AAAA,UACL,WAAW,aAAa;AAAA,UACxB;AAAA,UACA,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM,OAAO,SAAS,KAAK;AAAA,UACvC,UAAU,MAAM;AAAA,UAChB,cAAc,GAAG,YAAY,eAAe,aAAa,SAAS;AAAA,UAClE,UAAU;AAAA,UACV,QAAQ,aAAa;AAAA,UACrB,aAAa;AAAA,UACb,SAAS,GAAG,WAAW,CAAC,GAAG,SAAS,KAAK;AAAA,UACzC,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,QACnB;AAAA,MACF;AACA,YAAM,aAAa,CAAC,QAAQ,MAAM;AAChC,cAAM,SAAS,kBAAkB,OAAO,QAAQ,SAAS,OAAO;AAChE,gBAAQ,OAAO,MAAM;AAAA,UACnB,KAAK,QACH;AACE,kBAAM,iBAAiB,OAAO,MAAM,MAAM,GAAG,SAAS,KAAK;AAC3D,gBAAI,OAAO,mBAAmB,UAAU;AACtC,qBAAO,GAAG,SAAS,YAAY,2BAA2B,wDAAwD,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG;AAAA,YACvI;AACA,mBAAO;AAAA,cACL,aAAa;AAAA,cACb,QAAQ;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,UACF,KAAK,WACH;AACE,kBAAM;AAAA,cACJ;AAAA,YACF,IAAI;AACJ,kBAAM,gBAAgB,UAAU,OAAO,KAAK,UAAQ,KAAK,YAAY,OAAO;AAC5E,kBAAM,YAAY,kBAAkB,GAAG,YAAY,WAAW,cAAc,IAAI;AAChF,kBAAM,SAAS,OAAO,MAAM,SAAS;AACrC,mBAAO,YAAY;AAAA,cACjB;AAAA,cACA;AAAA,cACA,cAAc,GAAG,YAAY,qBAAqB,SAAS;AAAA,YAC7D,IAAI;AAAA,cACF;AAAA,cACA;AAAA,cACA,aAAa;AAAA,YACf;AAAA,UACF;AAAA,UACF,KAAK;AAAA,UACL;AACE,mBAAO,GAAG,SAAS,YAAY,2BAA2B,gDAAgD,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG;AAAA,QACjI;AAAA,MACF;AACA,YAAM,QAAQ;AAAA,QACZ,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,MAAM;AAAA,QACf,QAAQ,GAAG,IAAI,IAAI,SAAS;AAAA,QAC5B,SAAS,GAAG,KAAK,IAAI,UAAU;AAAA,QAC/B,WAAW,GAAG;AAAA,QACd,WAAW,GAAG;AAAA,QACd,QAAQ,GAAG;AAAA,MACb;AACA,aAAO,mBAAmB,OAAO,EAAE;AAAA,IACrC;AACA,QAAM,4BAA4B,CAAC,KAAK,UAAU,eAAe,cAAc,IAAI,IAAI,QAAM,yBAAyB,IAAI,UAAU,eAAe,SAAS,CAAC;AAC7J,IAAAA,SAAQ,4BAA4B;AACpC,QAAM,iCAAiC,QAAM;AAC3C,YAAM,YAAY,YAAU;AAAA,QAC1B,YAAY,MAAM;AAAA,QAClB,UAAU,MAAM;AAAA,QAChB,WAAW,QAAQ,YAAY,cAAc,MAAM,IAAI,EAAE,SAAS,KAAK;AAAA,QACvE,YAAY,MAAM,OAAO,SAAS,KAAK;AAAA,MACzC;AACA,YAAM,gBAAgB,aAAW;AAAA,QAC/B,QAAQ,OAAO,MAAM,SAAS;AAAA,QAC9B,eAAe,OAAO,OAAO,SAAS,KAAK;AAAA,MAC7C;AACA,YAAM,QAAQ;AAAA,QACZ,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,MAAM;AAAA,QACf,QAAQ,GAAG,IAAI,IAAI,SAAS;AAAA,QAC5B,aAAa,GAAG,KAAK,IAAI,aAAa;AAAA,QACtC,WAAW,GAAG;AAAA,QACd,WAAW,GAAG;AAAA,QACd,QAAQ,GAAG;AAAA,MACb;AACA,aAAO,mBAAmB,OAAO,EAAE;AAAA,IACrC;AACA,IAAAA,SAAQ,iCAAiC;AACzC,QAAM,kCAAkC,SAAO,IAAI,IAAIA,SAAQ,8BAA8B;AAC7F,IAAAA,SAAQ,kCAAkC;AAC1C,QAAM,iCAAiC,CAAC;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,UAAI,CAAC,MAAM,QAAQ,YAAY,KAAK,aAAa,WAAW,EAAG;AAC/D,YAAM,UAAU,GAAGA,SAAQ,+BAA+B,MAAM,KAAK,GAAGA,SAAQ,2BAA2B,MAAM,IAAI,CAAC;AACtH,YAAM,WAAW,GAAGA,SAAQ,qBAAqB,QAAQ,OAAO;AAChE,YAAM,iBAAiB,aAAa,IAAI,QAAM;AAC5C,YAAI,aAAa,IAAI;AACnB,cAAI,CAAC,GAAG,IAAK,QAAO,GAAG,SAAS,YAAY,2BAA2B,kBAAkB,GAAG,IAAI,eAAe;AAC/G,gBAAM,QAAQ,WAAW,YAAY,QAAQ,GAAG,KAAK;AAAA,YACnD,SAAS,SAAS;AAAA,UACpB,CAAC;AACD,cAAI,QAAQ,SAAS,GAAG,IAAI,GAAG;AAC7B,gBAAI,CAAC,UAAW,QAAO,GAAG,SAAS,YAAY,2BAA2B,wBAAwB,GAAG,IAAI,eAAe;AACxH,mBAAO,yBAAyB,OAAO,UAAU,QAAQ,SAAS;AAAA,UACpE;AACA,kBAAQ,GAAGA,SAAQ,gCAAgC,KAAK;AAAA,QAC1D;AACA,SAAC,GAAG,eAAe,QAAQ,eAAe,KAAK,OAAO;AAAA,UACpD,MAAM,eAAe,KAAK,OAAO;AAAA,UACjC,SAAS,eAAe,KAAK,OAAO;AAAA,UACpC,WAAW,eAAe,KAAK,OAAO;AAAA,UACtC,YAAY,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,UACrE,WAAW,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,UACpE,kBAAkB,eAAe,KAAK,SAAS,eAAe,KAAK,OAAO,CAAC;AAAA,QAC7E,CAAC,GAAG,EAAE;AACN,YAAI,QAAQ,SAAS,GAAG,IAAI,GAAG;AAC7B,WAAC,GAAG,eAAe,QAAQ,eAAe,KAAK,OAAO;AAAA,YACpD,QAAQ,eAAe,KAAK,MAAM,YAAY,MAAM,SAAS;AAAA,cAC3D,UAAU;AAAA,YACZ,CAAC;AAAA,YACD,SAAS,eAAe,KAAK,MAAM,YAAY,MAAM,cAAc;AAAA,cACjE,UAAU;AAAA,YACZ,CAAC;AAAA,UACH,CAAC,GAAG,EAAE;AACN,iBAAO;AAAA,QACT;AACA,SAAC,GAAG,eAAe,QAAQ,eAAe,KAAK,OAAO;AAAA,UACpD,QAAQ,eAAe,KAAK,MAAM,YAAY,MAAM,WAAW;AAAA,YAC7D,UAAU;AAAA,UACZ,CAAC;AAAA,UACD,aAAa,eAAe,KAAK,MAAM,YAAY,MAAM,iBAAiB;AAAA,YACxE,UAAU;AAAA,UACZ,CAAC;AAAA,QACH,CAAC,GAAG,EAAE;AACN,eAAO;AAAA,UACL,MAAM,GAAG;AAAA,UACT,SAAS,GAAG;AAAA,UACZ,YAAY,GAAG;AAAA,UACf,WAAW,GAAG;AAAA,UACd,WAAW,GAAG;AAAA,UACd,kBAAkB,GAAG;AAAA,UACrB,QAAQ,GAAG;AAAA,UACX,QAAQ,GAAG,OAAO,IAAI,YAAU;AAAA,YAC9B,WAAW,MAAM;AAAA,YACjB,YAAY,MAAM;AAAA,YAClB,YAAY,MAAM;AAAA,YAClB,UAAU,MAAM;AAAA,YAChB,aAAa,MAAM;AAAA,UACrB,EAAE;AAAA,UACF,aAAa,GAAG,YAAY,IAAI,aAAW;AAAA,YACzC,QAAQ,OAAO;AAAA,YACf,eAAe,OAAO;AAAA,YACtB,uBAAuB,OAAO;AAAA,UAChC,EAAE;AAAA,QACJ;AAAA,MACF,CAAC;AACD,aAAO,OAAO,OAAO,EAAE,QAAQ,UAAQ;AACrC,YAAI,CAAC,eAAe,KAAK,QAAM,GAAG,SAAS,IAAI,GAAG;AAChD,iBAAO,GAAG,SAAS,YAAY,2BAA2B,UAAU,IAAI,eAAe;AAAA,QACzF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,iCAAiC;AAAA;AAAA;;;AC5QzC;AAAA,2DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,SAAS;AACjB,QAAM,cAAc;AACpB,QAAM,oBAAoB,CAAC;AAAA,MACzB;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,CAAC,SAAS;AACZ,cAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C;AAAA,MAC7F;AACA,YAAM,KAAK,OAAO,QAAQ,YAAY,CAAC;AACvC,UAAI,CAAC,IAAI;AACP,cAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C,OAAO,EAAE;AAAA,MACtG;AACA,UAAI,iBAAiB,WAAW;AAC9B,YAAI,CAAC,GAAG,YAAa,OAAM,YAAY,OAAO,WAAW,WAAW,iDAAiD,OAAO,EAAE;AAC9H,eAAO,UAAU,kBAAkB,aAAa;AAAA,UAC9C,IAAI;AAAA,YACF,OAAO,GAAG,OAAO,QAAQ,aAAa;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,YAAY;AAC/B,YAAI,CAAC,GAAG,YAAa,OAAM,YAAY,OAAO,WAAW,WAAW,kDAAkD,OAAO,EAAE;AAC/H,eAAO,UAAU,mBAAmB,aAAa;AAAA,UAC/C,IAAI;AAAA,YACF,QAAQ,GAAG,YAAY,QAAQ,aAAa;AAAA,UAC9C;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,eAAe;AAClC,YAAI,CAAC,GAAG,QAAS,OAAM,YAAY,OAAO,WAAW,WAAW,qDAAqD,OAAO,EAAE;AAC9H,eAAO,UAAU,cAAc,aAAa;AAAA,UAC1C,IAAI;AAAA,YACF,OAAO,GAAG,OAAO,QAAQ,aAAa;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,gBAAgB;AACnC,YAAI,CAAC,GAAG,QAAS,OAAM,YAAY,OAAO,WAAW,WAAW,sDAAsD,OAAO,EAAE;AAC/H,eAAO,UAAU,eAAe,aAAa;AAAA,UAC3C,IAAI;AAAA,YACF,QAAQ,GAAG,QAAQ,QAAQ,aAAa;AAAA,UAC1C;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,eAAe;AAClC,YAAI,OAAO,QAAQ,mBAAmB,UAAU;AAC9C,gBAAM,YAAY,OAAO,WAAW,WAAW,2CAA2C;AAAA,QAC5F;AACA,YAAI,OAAO,QAAQ,sBAAsB,UAAU;AACjD,gBAAM,YAAY,OAAO,WAAW,WAAW,8CAA8C;AAAA,QAC/F;AACA,YAAI,OAAO,GAAG,eAAe,UAAU;AACrC,gBAAM,YAAY,OAAO,WAAW,WAAW,oDAAoD,GAAG,IAAI,EAAE;AAAA,QAC9G;AACA,cAAM,OAAO,GAAG;AAChB,cAAM,UAAU,QAAQ;AACxB,cAAM,aAAa,QAAQ;AAC3B,cAAM,mBAAmB,KAAK,UAAU,aAAa,IAAI,aAAa,WAAW,CAAC;AAClF,eAAO,UAAU,sBAAsB,aAAa;AAAA,UAClD,IAAI;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,UAAU;AAC7B,cAAM,OAAO,GAAG;AAChB,cAAM,OAAO;AAAA,UACX,SAAS,GAAG;AAAA,UACZ,WAAW,GAAG;AAAA,UACd,cAAc,GAAG,OAAO;AAAA,UACxB,eAAe,GAAG,UAAU,GAAG,QAAQ,SAAS,GAAG,YAAY;AAAA,UAC/D,WAAW,GAAG;AAAA,UACd,kBAAkB,GAAG;AAAA,UACrB,QAAQ,GAAG;AAAA,UACX,WAAW,GAAG;AAAA,UACd,gBAAgB,OAAO,KAAK,SAAS,IAAI;AAAA,QAC3C;AACA,eAAO,UAAU,iBAAiB,aAAa;AAAA,UAC7C,IAAI;AAAA,QACN,CAAC;AAAA,MACH;AACA,YAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C,YAAY,EAAE;AAAA,IAC3G;AACA,QAAM,sBAAsB,CAAC;AAAA,MAC3B;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,UAAI,iBAAiB,WAAW;AAC9B,eAAO,UAAU,cAAc,aAAa;AAAA,UAC1C,IAAI;AAAA,YACF,OAAO,OAAO,QAAQ,aAAa;AAAA,UACrC;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,YAAY;AAC/B,eAAO,UAAU,eAAe,aAAa;AAAA,UAC3C,IAAI;AAAA,YACF,QAAQ,QAAQ,QAAQ,aAAa;AAAA,UACvC;AAAA,QACF,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,gBAAgB;AACnC,cAAM,MAAM,gBAAgB,QAAQ,aAAa;AACjD,YAAI,CAAC,KAAK;AACR,gBAAM,YAAY,OAAO,WAAW,WAAW,2DAA2D,QAAQ,aAAa,EAAE;AAAA,QACnI;AACA,eAAO,UAAU,kBAAkB,aAAa;AAAA,UAC9C,OAAO,IAAI;AAAA,UACX,gBAAgB,IAAI;AAAA,UACpB,OAAO,IAAI;AAAA,UACX,QAAQ,IAAI;AAAA,UACZ,WAAW,IAAI;AAAA,QACjB,CAAC;AAAA,MACH;AACA,UAAI,iBAAiB,UAAU;AAC7B,cAAM,YAAY,OAAO,WAAW,WAAW,iEAAiE;AAAA,MAClH;AACA,UAAI,iBAAiB,eAAe;AAClC,cAAM,YAAY,OAAO,WAAW,WAAW,sEAAsE;AAAA,MACvH;AACA,YAAM,YAAY,OAAO,WAAW,WAAW,8CAA8C,YAAY,EAAE;AAAA,IAC7G;AACA,QAAM,eAAe,WAAS;AAC5B,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,UAAU;AACpB,UAAI,SAAS;AACX,eAAO,kBAAkB,KAAK;AAAA,MAChC;AACA,aAAO,oBAAoB,KAAK;AAAA,IAClC;AACA,QAAM,mBAAmB,CAAC,WAAW,cAAc,eAAe;AAChE,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,eAAe;AACjB,qBAAa,KAAK,aAAa;AAAA,MACjC;AACA,UAAI,OAAO,oBAAoB,UAAU;AACvC,YAAI,CAAC,WAAW;AACd,gBAAM,YAAY,OAAO,WAAW,WAAW,4EAA4E;AAAA,QAC7H;AACA,mBAAW,eAAe,IAAI;AAAA,MAChC;AAAA,IACF;AACA,QAAM,mBAAmB,OAAM,UAAS;AACtC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,UAAU,WAAY,kBAAiB,UAAU,YAAY,cAAc,UAAU;AACzF,UAAI,UAAU,iBAAiB,cAAc;AAC3C,eAAO,QAAQ,QAAQ;AAAA,UACrB;AAAA,UACA,cAAc,aAAa,KAAK,EAAE;AAAA,QACpC,CAAC;AAAA,MACH;AACA,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,aAAa,KAAK;AAC5B,aAAO,iBAAiB;AAAA,QACtB,GAAG;AAAA,QACH,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AACA,QAAM,SAAS,OAAO;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,UAAU,UAAU,aAAa;AAAA,QACzC,GAAG;AAAA,QACH,SAAS,QAAQ,YAAY,UAAa,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC3E,cAAc,OAAO;AAAA,QACrB,eAAe,QAAQ;AAAA,QACvB,WAAW,SAAS;AAAA,MACtB,CAAC;AACD,aAAO,iBAAiB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,QACX,QAAQ,OAAO,OAAO,CAAC,QAAQ,QAAQ;AAAA,UACrC,GAAG;AAAA,UACH,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG;AAAA,QAC3B,IAAI,CAAC,CAAC;AAAA,QACN;AAAA,QACA;AAAA,QACA,iBAAiB,mBAAmB,CAAC;AAAA,QACrC,cAAc,CAAC;AAAA,QACf,YAAY,CAAC;AAAA,MACf,CAAC;AAAA,IACH;AACA,IAAAA,SAAQ,SAAS;AAAA;AAAA;;;AC3NjB;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,eAAe;AACvB,QAAM,cAAc;AACpB,QAAM,oBAAoB,CAAC;AAAA,MACzB,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI;AACJ,UAAI,CAAC,SAAS;AACZ,cAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C;AAAA,MAC7F;AACA,YAAM,KAAK,OAAO,QAAQ,YAAY,CAAC;AACvC,UAAI,CAAC,IAAI;AACP,cAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C,OAAO,EAAE;AAAA,MACtG;AACA,UAAI,CAAC,GAAG,aAAa;AACnB,cAAM,YAAY,OAAO,WAAW,WAAW,8CAA8C,OAAO,EAAE;AAAA,MACxG;AACA,UAAI,iBAAiB,WAAW;AAC9B,eAAO;AAAA,UACL,QAAQ,CAAC,GAAG,OAAO,QAAQ,aAAa,CAAC;AAAA,QAC3C;AAAA,MACF;AACA,UAAI,iBAAiB,YAAY;AAC/B,eAAO;AAAA,UACL,aAAa,CAAC,GAAG,YAAY,QAAQ,aAAa,CAAC;AAAA,QACrD;AAAA,MACF;AACA,UAAI,iBAAiB,eAAe;AAClC,YAAI,OAAO,QAAQ,mBAAmB,UAAU;AAC9C,gBAAM,YAAY,OAAO,WAAW,WAAW,2CAA2C;AAAA,QAC5F;AACA,YAAI,OAAO,QAAQ,sBAAsB,UAAU;AACjD,gBAAM,YAAY,OAAO,WAAW,WAAW,8CAA8C;AAAA,QAC/F;AACA,YAAI,OAAO,GAAG,eAAe,UAAU;AACrC,gBAAM,YAAY,OAAO,WAAW,WAAW,oDAAoD,GAAG,IAAI,EAAE;AAAA,QAC9G;AACA,cAAM,OAAO,GAAG;AAChB,cAAM,UAAU,QAAQ;AACxB,cAAM,aAAa,QAAQ;AAC3B,cAAM,aAAa,KAAK,UAAU,aAAa,IAAI,aAAa,WAAW,CAAC;AAC5E,eAAO;AAAA,UACL;AAAA,QACF;AAAA,MACF;AACA,UAAI,iBAAiB,UAAU;AAC7B,cAAM,OAAO,GAAG;AAChB,cAAM,OAAO;AAAA,UACX,SAAS,GAAG;AAAA,UACZ,WAAW,GAAG;AAAA,UACd,YAAY,GAAG,OAAO;AAAA,UACtB,aAAa,GAAG,YAAY;AAAA,UAC5B,WAAW,GAAG;AAAA,UACd,kBAAkB,GAAG;AAAA,UACrB,QAAQ,GAAG;AAAA,UACX,WAAW,GAAG;AAAA,QAChB;AACA,YAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,gBAAgB,KAAK,SAAS;AAAA,UAChC;AAAA,QACF;AACA,eAAO;AAAA,MACT;AACA,YAAM,YAAY,OAAO,WAAW,WAAW,4CAA4C,YAAY,EAAE;AAAA,IAC3G;AACA,QAAM,sBAAsB,CAAC;AAAA,MAC3B,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,UAAI,iBAAiB,WAAW;AAC9B,eAAO;AAAA,UACL,QAAQ,CAAC,OAAO,QAAQ,aAAa,CAAC;AAAA,QACxC;AAAA,MACF;AACA,UAAI,iBAAiB,YAAY;AAC/B,eAAO;AAAA,UACL,SAAS,CAAC,QAAQ,QAAQ,aAAa,CAAC;AAAA,QAC1C;AAAA,MACF;AACA,UAAI,iBAAiB,UAAU;AAC7B,cAAM,YAAY,OAAO,WAAW,WAAW,iEAAiE;AAAA,MAClH;AACA,UAAI,iBAAiB,eAAe;AAClC,cAAM,YAAY,OAAO,WAAW,WAAW,sEAAsE;AAAA,MACvH;AACA,YAAM,YAAY,OAAO,WAAW,WAAW,8CAA8C,YAAY,EAAE;AAAA,IAC7G;AACA,QAAM,eAAe,WAAS;AAC5B,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,UAAU;AACpB,UAAI,SAAS;AACX,eAAO,kBAAkB,KAAK;AAAA,MAChC;AACA,aAAO,oBAAoB,KAAK;AAAA,IAClC;AACA,QAAM,mBAAmB,CAAC,WAAW,cAAc,eAAe;AAChE,UAAI,CAAC,UAAW;AAChB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,eAAe;AACjB,qBAAa,KAAK,aAAa;AAAA,MACjC;AACA,UAAI,OAAO,oBAAoB,UAAU;AACvC,YAAI,CAAC,WAAW;AACd,gBAAM,YAAY,OAAO,WAAW,WAAW,4EAA4E;AAAA,QAC7H;AACA,mBAAW,eAAe,IAAI;AAAA,MAChC;AAAA,IACF;AACA,QAAM,mBAAmB,OAAM,UAAS;AACtC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,UAAI,UAAU,WAAY,kBAAiB,UAAU,YAAY,cAAc,UAAU;AACzF,UAAI,UAAU,iBAAiB,cAAc;AAC3C,eAAO,QAAQ,QAAQ;AAAA,UACrB;AAAA,UACA,cAAc,aAAa,KAAK,EAAE;AAAA,QACpC,CAAC;AAAA,MACH;AACA,YAAM,QAAQ,aAAa,KAAK;AAChC,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,UAAU,SAAS,aAAa;AAAA,QACxC,IAAI;AAAA,MACN,CAAC;AACD,aAAO,iBAAiB;AAAA,QACtB,GAAG;AAAA,QACH,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AACA,QAAM,eAAe,OAAO;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,MAAM;AACJ,YAAM;AAAA,QACJ;AAAA,MACF,IAAI,MAAM,UAAU,UAAU,aAAa;AAAA,QACzC,GAAG;AAAA,QACH,SAAS,QAAQ,YAAY,UAAa,SAAS,YAAY,IAAI,QAAQ;AAAA,QAC3E,cAAc,OAAO;AAAA,QACrB,eAAe,QAAQ;AAAA,QACvB,WAAW,SAAS;AAAA,MACtB,CAAC;AACD,aAAO,iBAAiB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,QACX,QAAQ,OAAO,OAAO,CAAC,QAAQ,QAAQ;AAAA,UACrC,GAAG;AAAA,UACH,CAAC,GAAG,KAAK,YAAY,CAAC,GAAG;AAAA,QAC3B,IAAI,CAAC,CAAC;AAAA,QACN;AAAA,QACA;AAAA,QACA,iBAAiB,CAAC;AAAA,QAClB,cAAc,CAAC;AAAA,QACf,YAAY,CAAC;AAAA,MACf,CAAC;AAAA,IACH;AACA,IAAAA,SAAQ,eAAe;AAAA;AAAA;;;ACzLvB;AAAA,iEAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,WAAWA,SAAQ,qBAAqB;AAChD,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,mBAAmB,OAAO,WAAW,WAAW,YAAY;AAChE,UAAI,UAAU,WAAW,GAAG;AAC1B,cAAMC,YAAW,MAAM,UAAU,UAAU,MAAM,GAAG,CAAC,CAAC;AACtD,cAAM,OAAO,WAAW,MAAM,WAAWA,UAAS,MAAM,OAAO;AAC/D,eAAO,KAAK,OAAO,UAAU,UAAU,SAAS,CAAC,CAAC;AAAA,MACpD;AACA,YAAM,WAAW,MAAM,UAAU,SAAS;AAC1C,aAAO,WAAW,MAAM,WAAW,SAAS,MAAM,OAAO;AAAA,IAC3D;AACA,QAAM,qBAAqB,OAAO,WAAW,QAAQ,YAAY;AAC/D,UAAI,cAAc,OAAQ;AAC1B,UAAI,oBAAoB,QAAQ;AAC9B,eAAO,WAAW,SAAS,MAAM;AAAA,UAC/B,MAAM,CAAC,OAAO,KAAK,OAAO,gBAAgB,KAAK,CAAC;AAAA,QAClD,CAAC,EAAE;AAAA,MACL;AACA,UAAI,OAAO,SAAS;AAClB,eAAO,WAAW,QAAQ,eAAe,OAAO,SAAS,OAAO;AAAA,MAClE;AACA,UAAI,CAAC,OAAO,WAAW;AACrB,cAAM,YAAY,OAAO,WAAW,WAAW,yDAAyD;AAAA,MAC1G;AACA,YAAM,OAAO,MAAM,iBAAiB,WAAW,OAAO,WAAW,OAAO;AACxE,YAAM,UAAU;AAAA,QACd,MAAM,KAAK;AAAA,QACX;AAAA,MACF;AACA,UAAI,OAAO,gBAAgB,gBAAgB;AACzC,eAAO,WAAW,SAAS,MAAM,OAAO,EAAE;AAAA,MAC5C;AACA,UAAI,OAAO,gBAAgB,mBAAmB;AAC5C,eAAO,WAAW,SAAS,KAAK,OAAO,EAAE;AAAA,MAC3C;AACA,UAAI,OAAO,gBAAgB,oBAAoB;AAC7C,eAAO,WAAW,SAAS,KAAK;AAAA,UAC9B,QAAQ,WAAW,SAAS,OAAO,OAAO;AAAA,QAC5C,CAAC,EAAE;AAAA,MACL;AACA,UAAI,OAAO,gBAAgB,gBAAgB;AACzC,eAAO,WAAW,SAAS,OAAO,OAAO,EAAE;AAAA,MAC7C;AACA,UAAI,OAAO,gBAAgB,gBAAgB;AACzC,eAAO,WAAW,SAAS,KAAK;AAAA,UAC9B,QAAQ,KAAK;AAAA,UACb;AAAA,QACF,CAAC,EAAE;AAAA,MACL;AACA,UAAI,OAAO,gBAAgB,iBAAiB;AAC1C,cAAM,YAAY,OAAO,WAAW,WAAW,qFAAqF;AAAA,MACtI;AACA,YAAM,YAAY,OAAO,WAAW,WAAW,2CAA2C,OAAO,WAAW,EAAE;AAAA,IAChH;AACA,IAAAD,SAAQ,qBAAqB;AAC7B,QAAM,WAAW,CAAC,cAAc,WAAW;AACzC,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI;AACJ,YAAM,YAAY,WAAW,YAAY,QAAQ,cAAc;AAAA,QAC7D;AAAA,MACF,CAAC;AACD,UAAI,OAAO,WAAW,UAAU,IAAI,QAAQ;AAC1C,cAAM,YAAY,OAAO,WAAW,WAAW,oDAAoD;AAAA,MACrG;AACA,UAAI,QAAQ,WAAW,UAAU,KAAK,QAAQ;AAC5C,cAAM,YAAY,OAAO,WAAW,WAAW,qDAAqD;AAAA,MACtG;AACA,cAAQ,QAAQ,CAAC,QAAQ,MAAM;AAC7B,YAAI,OAAO,QAAQ;AACjB,cAAI,OAAO,OAAO,SAAS,MAAM,UAAU,KAAK,CAAC,EAAE,OAAO;AACxD,kBAAM,YAAY,OAAO,WAAW,WAAW,2CAA2C,CAAC,gBAAgB,OAAO,MAAM,aAAa,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE;AAAA,UAChK;AAAA,QACF;AAAA,MACF,CAAC;AACD,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,cAAM,UAAU,UAAU,KAAK,CAAC,EAAE;AAClC,cAAM,UAAU,cAAc,CAAC;AAC/B,YAAI,WAAW,QAAQ,QAAQ,OAAO,MAAM,GAAG;AAC7C,gBAAM,YAAY,OAAO,WAAW,WAAW,oBAAoB,CAAC,iBAAiB;AAAA,QACvF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,WAAW;AAAA;AAAA;;;AC7FnB;AAAA,wEAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsB;AAC9B,QAAM,cAAc;AACpB,QAAM,aAAa;AACnB,QAAM,SAAS;AACf,QAAM,sBAAN,MAA0B;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,CAAC;AAAA,MACZ,YAAY,SAAS;AACnB,aAAK,UAAU,QAAQ;AACvB,aAAK,UAAU,QAAQ;AACvB,aAAK,WAAW,QAAQ;AACxB,aAAK,cAAc;AACnB,aAAK,UAAU,QAAQ,WAAW;AAClC,aAAK,kBAAkB,QAAQ;AAC/B,aAAK,aAAa,GAAG,OAAO,2BAA2B,QAAQ,QAAQ;AACvE,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,QAAQ;AACZ,cAAM,eAAe,CAAC,YAAY,CAAC,IAAI,UAAU,KAAK,OAAO,UAAU,MAAM,EAAE,OAAO,UAAU,MAAM,EAAE,IAAI,OAAK,EAAE,OAAO;AAC1H,aAAK,QAAQ,QAAQ,MAAM,QAAQ,OAAK;AACtC,cAAI,CAAC,EAAE,YAAY,IAAI,YAAY,UAAU,EAAE,MAAM,EAAE,IAAI,KAAK,SAAS,SAAS,EAAG,QAAO,CAAC;AAC7F,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,UAAU,OAAO,EAAE,aAAa,YAAY,EAAE,WAAW;AAAA,YACzD,KAAK,aAAa,QAAQ,EAAE,OAAO,KAAK;AAAA,UAC1C;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,MAAM,KAAK,YAAY;AACrB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,MAAM,WAAW,eAAe;AACpC,aAAK,cAAc;AACnB,YAAI,CAAC,KAAK,UAAU,wBAAwB;AAC1C,gBAAM,KAAK,UAAU,KAAK,UAAU;AAAA,QACtC;AAAA,MACF;AAAA,MACA,sBAAsB;AACpB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,KAAK;AACT,YAAI,KAAK,MAAM,SAAS,EAAG,QAAO;AAClC,aAAK,WAAW,CAAC;AACjB,YAAI,kBAAkB;AACtB,eAAO,QAAQ,WAAS;AACtB,cAAI,MAAM,eAAe,KAAK;AAC5B,kBAAM,KAAK,KAAK,QAAQ,MAAM,UAAU;AACxC,gBAAI,GAAG,SAAS,SAAS;AACvB,gCAAkB;AAAA,YACpB;AACA,iBAAK,SAAS,MAAM,KAAK,IAAI;AAAA,UAC/B;AAAA,QACF,CAAC;AACD,YAAI,CAAC,iBAAiB;AACpB,gBAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,cAAI,UAAU,IAAI,YAAY,UAAU,UAAU,UAAU;AAC5D,iBAAO,QAAQ,GAAG,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,WAAW,QAAW;AAC7E,sBAAU,QAAQ,MAAM,CAAC;AACzB,kBAAM,KAAK,KAAK,QAAQ,QAAQ,SAAS,CAAC;AAC1C,gBAAI,GAAG,SAAS,SAAS;AACvB,mBAAK,UAAU,uBAAuB,QAAQ,SAAS,CAAC;AACxD,mBAAK,SAAS,SAAS;AACvB,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MACA,iBAAiB,KAAK;AACpB,cAAM,KAAK,KAAK,QAAQ,GAAG;AAC3B,aAAK,SAAS,SAAS;AACvB,YAAI,GAAG,SAAS,SAAS;AACvB,eAAK,UAAU,uBAAuB,GAAG,UAAU;AAAA,QACrD,OAAO;AACL,eAAK,UAAU,uBAAuB,GAAG;AAAA,QAC3C;AAAA,MACF;AAAA,MACA,kBAAkB;AAChB,cAAM,OAAO,CAAC;AACd,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,KAAK;AACT,eAAO,QAAQ,WAAS;AACtB,gBAAM,KAAK,KAAK,SAAS,MAAM,KAAK;AACpC,cAAI,MAAM,GAAG,SAAS,SAAS;AAC7B,iBAAK,KAAK;AAAA,cACR,MAAM,MAAM;AAAA,cACZ,KAAK,GAAG;AAAA,cACR,YAAY,MAAM;AAAA,cAClB,QAAQ,MAAM;AAAA,cACd,SAAS,MAAM,SAAS,KAAK,SAAS;AAAA,cACtC,OAAO,GAAG;AAAA,YACZ,CAAC;AAAA,UACH,OAAO;AACL,iBAAK,KAAK;AAAA,cACR,MAAM,MAAM;AAAA,cACZ,KAAK;AAAA,cACL,UAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MACA,QAAQ,SAAS;AACf,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI;AACJ,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,YAAI,CAAC,UAAW,QAAO;AAAA,UACrB,MAAM;AAAA,UACN,OAAO;AAAA,QACT;AACA,cAAM,gBAAgB,UAAU,OAAO,KAAK,OAAK,CAAC,EAAE,SAAS,KAAK,UAAU,OAAO,UAAU,OAAO,SAAS,CAAC;AAC9G,gBAAQ,GAAG,WAAW,WAAW;AAAA,UAC/B,QAAQ,QAAQ;AAAA,UAChB,OAAO,KAAK;AAAA,UACZ,SAAS,KAAK;AAAA,UACd;AAAA,UACA,iBAAiB,KAAK,UAAU;AAAA,UAChC,iBAAiB,KAAK;AAAA,UACtB,SAAS,SAAS;AAAA,UAClB;AAAA,UACA,eAAe,SAAS;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,UAAU;AAAA,MAAC;AAAA,IACb;AACA,IAAAA,SAAQ,sBAAsB;AAAA;AAAA;;;ACjJ9B,IAAAC,mBAAA;AAAA,0DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,UAAU;AAChB,YAAQ,aAAa,2BAA8BA,QAAO;AAC1D,YAAQ,aAAa,yBAA4BA,QAAO;AACxD,YAAQ,aAAa,kBAAqBA,QAAO;AACjD,YAAQ,aAAa,mBAAsBA,QAAO;AAClD,YAAQ,aAAa,iBAAoBA,QAAO;AAChD,YAAQ,aAAa,kBAAqBA,QAAO;AACjD,YAAQ,aAAa,wBAA2BA,QAAO;AACvD,YAAQ,aAAa,wBAA2BA,QAAO;AACvD,YAAQ,aAAa,+BAAkCA,QAAO;AAAA;AAAA;;;ACd9D;AAAA,2DAAAC,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,cAAcA,SAAQ,oBAAoBA,SAAQ,kBAAkBA,SAAQ,qBAAqB;AACzG,QAAM,cAAc;AACpB,QAAM,cAAc;AACpB,QAAM,aAAa;AACnB,QAAM,qBAAqB,CAAC,UAAU,cAAc,UAAU;AAC5D,UAAI,CAAC,UAAU;AACb,cAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,MAC1D;AACA,YAAM,QAAQ,OAAO,iBAAiB,WAAW,eAAe;AAChE,YAAM,UAAU;AAAA,QACd,SAAS;AAAA,QACT,UAAU,SAAS;AAAA,QACnB,GAAG;AAAA,MACL;AACA,UAAI,SAAS,SAAS,WAAW;AAC/B,eAAO,EAAE,GAAG,YAAY,YAAY,QAAQ,OAAO,IAAI,GAAG,YAAY,YAAY,QAAQ,QAAQ,IAAI,GAAG,YAAY,YAAY,KAAK,CAAC;AAAA,MACzI;AACA,UAAI,SAAS,aAAa,SAAS,SAAS,aAAa,QAAQ;AAC/D,eAAO,EAAE,GAAG,YAAY,YAAY,IAAI,IAAI,GAAG,YAAY,YAAY,QAAQ,QAAQ,IAAI,GAAG,YAAY,YAAY,KAAK,CAAC;AAAA,MAC9H;AACA,UAAI,SAAS,SAAS,YAAY;AAChC,eAAO,EAAE,GAAG,YAAY,YAAY,QAAQ,OAAO,IAAI,GAAG,YAAY,YAAY,QAAQ,QAAQ,IAAI,GAAG,YAAY,YAAY,CAAC,GAAG,GAAG,KAAK;AAAA,MAC/I;AACA,UAAI,SAAS,aAAa,QAAQ;AAChC,eAAO,EAAE,GAAG,YAAY,YAAY,QAAQ,OAAO,IAAI,GAAG,YAAY,YAAY,GAAG,IAAI,GAAG,YAAY,YAAY,KAAK,GAAG,GAAG,CAAC;AAAA,MAClI;AACA,aAAO,EAAE,GAAG,YAAY,YAAY,QAAQ,OAAO,IAAI,GAAG,YAAY,YAAY,QAAQ,QAAQ,IAAI,GAAG,YAAY,YAAY,KAAK,GAAG,GAAG,CAAC;AAAA,IAC/I;AACA,IAAAA,SAAQ,qBAAqB;AAC7B,QAAM,kBAAkB,CAACC,OAAM,aAAa;AAC1C,UAAI,SAAS,SAAS,WAAW;AAC/B,cAAM,eAAe,GAAG,YAAY,cAAcA,MAAK,CAAC,CAAC;AACzD,cAAMC,YAAW,GAAG,YAAY,cAAcD,MAAK,CAAC,CAAC;AACrD,YAAI,SAAS;AACb,YAAI,gBAAgB,IAAI;AACtB,mBAAS;AAAA,QACX,WAAW,gBAAgB,MAAM,SAAS,QAAQ;AAChD,mBAAS;AAAA,QACX,WAAW,gBAAgB,MAAM,SAAS,QAAQ;AAChD,mBAAS;AAAA,QACX;AACA,eAAO,GAAG,MAAM,aAAaC,WAAU,CAAC;AAAA,MAC1C;AACA,YAAM,WAAW,GAAG,YAAY,cAAcD,MAAK,CAAC,CAAC;AACrD,aAAO,YAAY,UAAU,CAAC;AAAA,IAChC;AACA,IAAAD,SAAQ,kBAAkB;AAC1B,QAAM,oBAAoB,CAACC,OAAM,aAAa;AAC5C,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI,UAAU;AACZ,oBAAY,SAAS;AACrB,oBAAY,SAAS;AAAA,MACvB,OAAO;AACL,qBAAa,GAAG,WAAW,aAAaA,KAAI;AAAA,MAC9C;AACA,YAAM,MAAM,GAAG,YAAY,cAAcA,MAAK,CAAC,CAAC;AAChD,UAAI,UAAUA,MAAK,UAAU,KAAK,GAAG,YAAY,cAAcA,MAAK,CAAC,CAAC,IAAI;AAC1E,UAAI,gBAAgB,UAAU;AAC9B,UAAI,SAAS;AACb,UAAI,cAAc;AAClB,UAAI,OAAO,OAAO;AAChB,cAAM,MAAM,GAAG,YAAY,cAAcA,MAAK,CAAC,CAAC;AAChD,mBAAW,GAAG,YAAY,cAAcA,MAAK,CAAC,CAAC;AAC/C,wBAAgB,UAAU;AAC1B,iBAAS;AACT,YAAI,OAAO,IAAI;AACb,wBAAc;AAAA,QAChB,WAAW,OAAO,IAAI;AACpB,wBAAc;AAAA,QAChB;AAAA,MACF,WAAW,OAAO,IAAI;AACpB,sBAAc,GAAG,SAAS;AAAA,MAC5B,WAAW,OAAO,MAAM,WAAW;AACjC,sBAAc,GAAG,SAAS;AAAA,MAC5B,WAAW,OAAO,MAAM,WAAW;AACjC,sBAAc,GAAG,SAAS;AAAA,MAC5B,OAAO;AACL,sBAAc;AAAA,MAChB;AACA,UAAI,gBAAgB,GAAG;AACrB,eAAO,GAAG,MAAM,OAAO,WAAW,aAAa,aAAa;AAAA,MAC9D;AACA,aAAO;AAAA,IACT;AACA,IAAAD,SAAQ,oBAAoB;AAC5B,QAAM,cAAc,cAAY,SAAS,SAAS,aAAa,SAAS,aAAa,SAAS,SAAS,aAAa;AACpH,IAAAA,SAAQ,cAAc;AAAA;AAAA;;;AC5FtB;AAAA,0DAAAG,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,gBAAgBA,SAAQ,YAAYA,SAAQ,eAAeA,SAAQ,cAAcA,SAAQ,eAAeA,SAAQ,iBAAiBA,SAAQ,eAAeA,SAAQ,aAAaA,SAAQ,eAAe;AAC5M,QAAM,cAAc;AACpB,QAAM,eAAe,CAAC,GAAG,aAAa,GAAG,IAAI,YAAY,UAAU,CAAC,EAAE,IAAI,MAAM,SAAS,QAAQ,EAAE,SAAS,EAAE,CAAC,IAAI,SAAS,QAAQ;AACpI,IAAAA,SAAQ,eAAe;AACvB,QAAM,aAAa,OAAK;AACtB,UAAI,CAAC,KAAK,KAAK,EAAG,QAAO;AACzB,YAAM,QAAQ,KAAK,MAAM,IAAI,EAAE;AAC/B,YAAM,UAAU,IAAI;AACpB,UAAI,MAAM;AACV,UAAI,UAAU,GAAG;AACf,eAAO,GAAG,KAAK;AACf,YAAI,QAAQ,GAAG;AACb,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AACA,UAAI,YAAY,GAAG;AACjB,eAAO,GAAG,OAAO;AAAA,MACnB;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,aAAa;AACrB,QAAM,eAAe,SAAO,IAAI,MAAM,GAAG,CAAC,EAAE,YAAY,MAAM;AAC9D,IAAAA,SAAQ,eAAe;AACvB,QAAM,iBAAiB,UAAQ,GAAGA,SAAQ,cAAc,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI;AAC9E,IAAAA,SAAQ,iBAAiB;AACzB,QAAM,eAAe,SAAO,QAAQ,UAAa,EAAE,GAAGA,SAAQ,cAAc,GAAG,IAAI,KAAK,GAAG,KAAK;AAChG,IAAAA,SAAQ,eAAe;AACvB,QAAM,cAAc,CAAC,OAAO,WAAW;AACrC,UAAI,OAAO,UAAU,YAAY,CAAC,MAAM,MAAM,wBAAwB,GAAG;AACvE,eAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM,WAAW,IAAI,IAAI,QAAQ;AAC7C,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,cAAc;AACtB,QAAM,eAAe,aAAW;AAC9B,UAAI;AACJ,WAAK,GAAGA,SAAQ,aAAa,OAAO,GAAG;AACrC,YAAIC,UAAS,GAAGD,SAAQ,gBAAgB,OAAO;AAC/C,YAAIC,OAAM,SAAS,MAAM,GAAG;AAC1B,UAAAA,SAAQ,IAAIA,MAAK;AAAA,QACnB;AACA,iBAAS,OAAO,KAAKA,QAAO,KAAK;AAAA,MACnC,OAAO;AACL,iBAAS,OAAO,KAAK,OAAO;AAAA,MAC9B;AACA,aAAO,OAAO,SAAS,KAAK;AAAA,IAC9B;AACA,IAAAD,SAAQ,eAAe;AACvB,QAAM,YAAY,SAAO;AACvB,YAAMC,UAAS,GAAGD,SAAQ,cAAc,GAAG;AAC3C,YAAM,OAAO,OAAO,KAAKC,QAAO,KAAK,EAAE,SAAS,MAAM;AACtD,UAAI,WAAW,KAAK,IAAI,EAAG,QAAO;AAClC,aAAO;AAAA,IACT;AACA,IAAAD,SAAQ,YAAY;AACpB,QAAM,gBAAgB,eAAa;AACjC,YAAM,YAAY,WAAS;AACzB,YAAI,OAAO,UAAU,UAAU;AAC7B,iBAAO,UAAU,KAAK;AAAA,QACxB;AACA,YAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAO,MAAM,IAAI,SAAS;AAAA,QAC5B;AACA,YAAI,SAAS,OAAO,UAAU,UAAU;AACtC,iBAAO,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO;AAAA,YACpD,GAAG;AAAA,YACH,CAAC,CAAC,GAAG,UAAU,CAAC;AAAA,UAClB,IAAI,CAAC,CAAC;AAAA,QACR;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AACA,IAAAA,SAAQ,gBAAgB;AAAA;AAAA;;;AClFxB;AAAA,6DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,YAAY;AACpB,QAAM,UAAU;AAChB,QAAM,cAAc;AACpB,QAAM,iBAAiB;AACvB,QAAM,gBAAgB;AACtB,QAAM,YAAN,cAAwB,QAAQ,aAAa;AAAA,MAC3C,QAAQ,CAAC;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AACnB,cAAM;AACN,aAAK,WAAW,CAAC;AACjB,aAAK,QAAQ;AACb,aAAK,YAAY;AACjB,aAAK,cAAc;AACnB,aAAK,YAAY;AACjB,aAAK,aAAa,QAAQ;AAC1B,aAAK,WAAW,QAAQ,WAAW;AACnC,aAAK,gBAAgB,QAAQ;AAC7B,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,YAAI,SAAS,SAAS,WAAW;AAC/B,gBAAM,gBAAgB,CAAC,SAAS,WAAW,GAAG,eAAe,oBAAoB,UAAU,OAAO;AAAA,YAChG;AAAA,UACF,CAAC;AACD,cAAI,SAAS,uBAAuB;AAClC,iBAAK,MAAM,KAAK;AAAA,cACd,MAAM;AAAA,cACN,SAAS,cAAc,KAAK,MAAM,EAAE;AAAA,YACtC,CAAC;AAAA,UACH;AACA,cAAI,SAAS,SAAS;AACpB,iBAAK,MAAM,KAAK;AAAA,cACd,MAAM;AAAA,cACN,SAAS,cAAc,KAAK,MAAM,EAAE;AAAA,YACtC,CAAC;AAAA,UACH;AACA,cAAI,SAAS,iBAAiB;AAC5B,iBAAK,MAAM,KAAK;AAAA,cACd,MAAM;AAAA,cACN,SAAS,cAAc,KAAK,MAAM,EAAE;AAAA,YACtC,CAAC;AAAA,UACH;AACA,eAAK,MAAM,KAAK;AAAA,YACd,MAAM;AAAA,YACN,SAAS,cAAc,KAAK,MAAM,EAAE;AAAA,UACtC,CAAC;AAAA,QACH,OAAO;AACL,eAAK,MAAM,KAAK;AAAA,YACd,MAAM;AAAA,YACN,SAAS,eAAe,mBAAmB,KAAK,MAAM,QAAQ;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM,MAAM,SAAS;AACnB,cAAM,QAAQ;AACd,aAAK,cAAc;AACnB,eAAO,CAAC,KAAK,aAAa,CAAC,KAAK,aAAa;AAC3C,gBAAM,cAAc,KAAK,MAAM,KAAK,SAAS;AAC7C,gBAAM,QAAQ,YAAY,KAAK,QAAQ,CAAC;AACxC,gBAAM,eAAe,KAAK,SAAS;AACnC,gBAAMC,QAAO,YAAY,QAAQ,KAAK,KAAK;AAC3C,gBAAM,aAAa,MAAM,KAAK,cAAcA,KAAI;AAChD,cAAI,CAAC,YAAY;AACf,kBAAM,YAAY,OAAO,WAAW,WAAW,iCAAiC;AAAA,UAClF;AACA,cAAI,KAAK,YAAa;AACtB,gBAAM,UAAU;AAAA,YACd,GAAG;AAAA,YACH,MAAM,YAAY;AAAA,YAClB;AAAA,UACF;AACA,eAAK,WAAW,KAAK,SAAS,OAAO,OAAK,EAAE,eAAe,QAAQ,UAAU;AAC7E,cAAI,CAAC,cAAc;AACjB,iBAAK,SAAS,KAAK,OAAO;AAC1B,iBAAK,KAAK,YAAY,KAAK,QAAQ;AAAA,UACrC;AACA,gBAAM,OAAO,MAAM,KAAK,WAAW,eAAe;AAAA,YAChD,YAAY,QAAQ;AAAA,YACpB;AAAA,UACF,CAAC;AACD,cAAI,KAAK,YAAa;AACtB,eAAK,WAAW,KAAK,SAAS,OAAO,OAAK,EAAE,eAAe,QAAQ,UAAU;AAC7E,cAAI,CAAC,gBAAgB,gBAAgB,CAAC,KAAK,OAAO;AAChD,kBAAM,WAAW,GAAG,cAAc,cAAc,KAAK,kBAAkB,KAAK,QAAQ;AACpF,iBAAK,SAAS,KAAK;AAAA,cACjB,GAAG;AAAA,cACH,OAAO,KAAK;AAAA,cACZ;AAAA,cACA,WAAW,KAAK;AAAA,YAClB,CAAC;AACD,iBAAK,KAAK,YAAY,KAAK,QAAQ;AAAA,UACrC;AACA,cAAI,KAAK,OAAO;AACd,gBAAI,KAAK,YAAY,IAAI,KAAK,MAAM,QAAQ;AAC1C,mBAAK;AACL,mBAAK,QAAQ;AAAA,YACf,OAAO;AACL,mBAAK,KAAK,UAAU;AACpB,mBAAK,YAAY;AAAA,YACnB;AAAA,UACF,OAAO;AACL,iBAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,MACA,OAAO;AACL,aAAK,cAAc,CAAC,KAAK;AAAA,MAC3B;AAAA,MACA,UAAU;AACR,aAAK,WAAW,CAAC;AAAA,MACnB;AAAA,IACF;AACA,IAAAD,SAAQ,YAAY;AAAA;AAAA;;;AC7HpB;AAAA,+DAAAE,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,QAAM,UAAU;AAChB,QAAM,cAAc;AACpB,QAAM,uBAAuB;AAC7B,QAAM,iBAAiB;AACvB,QAAM,mBAAmB;AACzB,QAAM,cAAc;AACpB,QAAM,SAAS;AACf,QAAM,mBAAmB;AACzB,QAAM,WAAW;AACjB,QAAM,YAAY;AAClB,QAAM,cAAc;AACpB,QAAM,oBAAoB;AAC1B,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,YAAY,QAAQ,aAAa,mBAA6B;AACpE,QAAM,qBAAN,cAAiC,iBAAiB,eAAe;AAAA,MAC/D;AAAA,MACA,OAAO;AACL,aAAK,sBAAsB,CAAC,QAAQ,OAAO;AAC3C,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,SAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC;AAAA,UAC9C,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC,CAAC;AACF,cAAM,YAAY,GAAG,WAAW,mBAAmB,QAAQ,IAAI;AAC/D,YAAI,CAAC,UAAU;AACb,gBAAM,YAAY,OAAO,WAAW,oBAAoB;AAAA,QAC1D;AACA,SAAC,GAAG,iBAAiB,oBAAoB,QAAQ;AACjD,aAAK,iBAAiB,GAAG,kBAAkB,kBAAkB,KAAK,MAAM,UAAU,KAAK,aAAa;AACpG,cAAM,UAAU,CAAC;AACjB,YAAI,QAAQ,IAAI,YAAY,UAAU,CAAC;AACvC,gBAAQ,QAAQ,QAAQ,SAAO;AAC7B,gBAAM,UAAU,GAAG,UAAU,kBAAkB,KAAK,QAAQ;AAC5D,cAAI,YAAY,UAAU,OAAO,OAAO,WAAW,UAAU;AAC3D,oBAAQ,MAAM,KAAK,OAAO,MAAM;AAAA,UAClC;AACA,kBAAQ,KAAK,MAAM;AAAA,QACrB,CAAC;AACD,aAAK,YAAY,CAAC,QAAQ,WAAW,CAAC,QAAQ;AAC9C,aAAK,QAAQ,KAAK;AAClB,aAAK,SAAS;AAAA,UACZ;AAAA,UACA;AAAA,UACA,UAAU,QAAQ;AAAA,UAClB,SAAS,QAAQ;AAAA,UACjB,WAAW,QAAQ;AAAA,UACnB,SAAS,QAAQ;AAAA,UACjB,cAAc,QAAQ;AAAA,UACtB,UAAU,QAAQ;AAAA,UAClB,iBAAiB,QAAQ,oBAAoB,OAAO,SAAS,QAAQ;AAAA,UACrE,MAAM,OAAO,QAAQ,SAAS,YAAY,QAAQ,OAAO;AAAA,UACzD;AAAA,QACF;AACA,YAAI,KAAK,OAAO,MAAM;AACpB,eAAK,oBAAoB,KAAK,SAAS;AAAA,QACzC;AAAA,MACF;AAAA,MACA,IAAI,OAAO;AACT,cAAM,UAAU,KAAK,QAAQ,QAAQ,KAAK,OAAK,EAAE,SAAS,UAAU,MAAM;AAC1E,YAAI,SAAS;AACX,iBAAO;AAAA,QACT;AACA,eAAO,SAAS,GAAG,cAAc,cAAc,KAAK,OAAO,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;AAAA,MACpG;AAAA,MACA,gBAAgB;AACd,gBAAQ,GAAG,iBAAiB,gBAAgB,KAAK,OAAO,UAAU,KAAK,aAAa,KAAK,OAAO,QAAQ;AAAA,MAC1G;AAAA,MACA,MAAM,WAAW,SAAS,WAAW;AACnC,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,cAAM,YAAY,UAAU,aAAa,QAAQ,IAAI;AACrD,cAAM,WAAW,IAAI,UAAU,oBAAoB;AAAA,UACjD,SAAS;AAAA,YACP,MAAM,UAAU,eAAe,SAAS;AAAA,YACxC,OAAO;AAAA,YACP,YAAY,QAAQ;AAAA,YACpB;AAAA,YACA,WAAW,QAAQ;AAAA,UACrB;AAAA,UACA,OAAO,QAAQ;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA,iBAAiB,mBAAmB,OAAO;AAAA,QAC7C,CAAC;AACD,cAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,cAAM,SAAS,KAAK,UAAU;AAC9B,eAAO,UAAU,IAAI,WAAS;AAC5B,mBAAS,iBAAiB,MAAM,UAAU;AAC1C,gBAAM,KAAK;AAAA,YACT,GAAG,SAAS,SAAS;AAAA,UACvB;AACA,cAAI,GAAG,SAAS,SAAS;AACvB,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,QAAQ,GAAG,OAAO,IAAI,UAAQ,GAAG,UAAU,eAAe,KAAK,KAAK,OAAO,QAAQ,CAAC;AAAA,cACpF,SAAS,GAAG,QAAQ,IAAI,UAAU,cAAc;AAAA,YAClD;AAAA,UACF;AACA,cAAI,GAAG,SAAS,YAAY;AAC1B,mBAAO;AAAA,cACL,GAAG;AAAA,cACH,QAAQ,GAAG,OAAO,IAAI,UAAQ,GAAG,UAAU,eAAe,KAAK,KAAK,OAAO,QAAQ,CAAC;AAAA,YACtF;AAAA,UACF;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MACA,MAAM,MAAM;AACV,YAAI,KAAK,OAAO,WAAW,KAAK,OAAO,WAAW;AAChD,iBAAO,KAAK,WAAW,KAAK,OAAO,SAAS,KAAK,OAAO,SAAS;AAAA,QACnE;AACA,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI,MAAM,KAAK,cAAc;AAC7B,cAAM,WAAW,MAAM,KAAK,UAAU,SAAS,IAAI;AACnD,YAAI,CAAC,KAAK,WAAW;AACnB,gBAAM,YAAY,OAAO,WAAW,WAAW,+DAA+D;AAAA,QAChH;AACA,YAAI,OAAO,aAAa,UAAU;AAChC,iBAAO,KAAK,IAAI;AAAA,QAClB;AACA,eAAO;AAAA,MACT;AAAA,MACA,MAAM,gBAAgB;AACpB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI,KAAK;AACT,cAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,cAAM,MAAM,KAAK,gBAAgB,SAAS,GAAG,eAAe;AAC5D,YAAI,KAAK,aAAa,KAAK,UAAU,WAAW;AAC9C,gBAAM;AAAA,YACJ,WAAAC;AAAA,UACF,IAAI;AACJ,eAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,gBAAgB;AAAA,YACzE,MAAM;AAAA,YACN;AAAA,YACA,cAAcA,WAAU,MAAM,IAAI,OAAK,EAAE,IAAI;AAAA,YAC7C,UAAUA,WAAU;AAAA,UACtB,CAAC,CAAC;AACF,gBAAMC,UAAS,MAAM,IAAI;AACzB,gBAAMC,WAAUF,WAAU,SAASC,QAAO,OAAO;AACjD,gBAAME,QAAO,MAAM,WAAW,eAAeD,SAAQ,UAAU;AAC/D,iBAAO;AAAA,YACL,SAAAA;AAAA,YACA,MAAAC;AAAA,UACF;AAAA,QACF;AACA,cAAM,YAAY,KAAK,aAAa,IAAI,YAAY,UAAU;AAAA,UAC5D;AAAA,UACA,eAAe,CAAAC,UAAQ,KAAK,OAAO,YAAY,EAAE,qBAAqB,KAAK,OAAO,UAAUA,KAAI;AAAA,QAClG,CAAC;AACD,aAAK,YAAY;AACjB,kBAAU,GAAG,YAAY,cAAY;AACnC,eAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,gBAAgB;AAAA,YACzE,MAAM;AAAA,YACN;AAAA,YACA;AAAA,UACF,CAAC,CAAC;AAAA,QACJ,CAAC;AACD,kBAAU,GAAG,YAAY,MAAM;AAC7B,eAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,gBAAgB;AAAA,YACzE,MAAM;AAAA,YACN;AAAA,UACF,CAAC,CAAC;AAAA,QACJ,CAAC;AACD,kBAAU,MAAM,QAAQ,EAAE,MAAM,WAAS;AACvC,cAAI,OAAO,KAAK;AAAA,QAClB,CAAC;AACD,aAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,gBAAgB;AAAA,UACzE,MAAM;AAAA,UACN,cAAc,UAAU,MAAM,IAAI,OAAK,EAAE,IAAI;AAAA,UAC7C;AAAA,QACF,CAAC,CAAC;AACF,cAAM,SAAS,MAAM,IAAI;AACzB,kBAAU,mBAAmB;AAC7B,kBAAU,KAAK;AACf,YAAI,CAAC,UAAU,WAAW;AACxB,iBAAO,GAAG,eAAe,cAAc,GAAG;AAAA,QAC5C;AACA,cAAM,UAAU,UAAU,SAAS,OAAO,OAAO;AACjD,aAAK,OAAO,YAAY,GAAG,WAAW,oBAAoB,KAAK,OAAO,UAAU,QAAQ,SAAS;AACjG,cAAM,OAAO,MAAM,WAAW,eAAe,QAAQ,UAAU;AAC/D,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM,UAAU,SAAS,OAAO;AAC9B,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI,KAAK;AACT,cAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,cAAM,WAAW,IAAI,UAAU,oBAAoB;AAAA,UACjD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,iBAAiB,oBAAoB,OAAO,SAAS,mBAAmB,OAAO;AAAA,QACjF,CAAC;AACD,cAAM,SAAS,KAAK,UAAU;AAC9B,cAAM,WAAW,SAAS,oBAAoB;AAC9C,YAAI,CAAC,UAAU;AACb,eAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,kBAAkB,CAAC;AAC9E,iBAAO,GAAG,eAAe,cAAc,GAAI;AAC3C,iBAAO;AAAA,QACT;AACA,aAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,YAAY;AAAA,UACrE,WAAW,SAAS,gBAAgB;AAAA,UACpC,UAAU,KAAK,OAAO;AAAA,QACxB,CAAC,CAAC;AACF,eAAO,KAAK,qBAAqB,QAAQ;AAAA,MAC3C;AAAA,MACA,MAAM,qBAAqB,UAAU;AACnC,cAAM,OAAO,MAAM,KAAK,gBAAgB,SAAS,GAAG,WAAW,EAAE;AACjE,gBAAQ,KAAK,QAAQ,MAAM;AAAA,UACzB,KAAK;AACH,qBAAS,iBAAiB,KAAK,QAAQ,KAAK;AAC5C,iBAAK,aAAa,GAAG,SAAS,iBAAiB,SAAS,GAAG,mBAAmB;AAAA,cAC5E,WAAW,SAAS,gBAAgB;AAAA,cACpC,UAAU,KAAK,OAAO;AAAA,YACxB,CAAC,CAAC;AACF,mBAAO,KAAK,qBAAqB,QAAQ;AAAA,UAC3C,KAAK;AACH,mBAAO,KAAK,MAAM,SAAS,SAAS,KAAK,QAAQ,KAAK,CAAC;AAAA,UACzD;AACE,mBAAO;AAAA,QACX;AAAA,MACF;AAAA,MACA,MAAM,MAAM,IAAI;AACd,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,QACF,IAAI;AACJ,YAAI,GAAG,SAAS,QAAS,OAAM,YAAY,OAAO,WAAW,WAAW,kDAAkD;AAC1H,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,cAAM,WAAW,GAAG,UAAU,eAAe,CAAC,GAAG,QAAQ;AACzD,cAAM,SAAS,GAAG,OAAO,IAAI,UAAQ,GAAG,UAAU,eAAe,KAAK,OAAO,QAAQ,CAAC;AACtF,cAAM,UAAU,GAAG,QAAQ,IAAI,UAAU,cAAc;AACvD,YAAI,SAAS,CAAC;AACd,cAAM,kBAAkB,GAAG,UAAU,+BAA+B,QAAQ,SAAS,QAAQ;AAC7F,cAAM,aAAa,GAAG,UAAU,2BAA2B,MAAM;AACjE,YAAI,kBAAkB,UAAU,SAAS,GAAG;AAC1C,mBAAS,MAAM,KAAK,cAAc,EAAE,KAAK,gBAAc,WAAW,oBAAoB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,uBAAuB,SAAS,OAAO,CAAC,EAAE,KAAK,UAAU,+BAA+B;AAAA,QAC/M;AACA,cAAM,YAAY,eAAa,OAAO,YAAY,EAAE,UAAU;AAAA,UAC5D;AAAA,QACF,GAAG;AAAA,UACD,UAAU,OAAO;AAAA,QACnB,CAAC;AACD,cAAM,gBAAgB,OAAO,GAAG,qBAAqB,oBAAoB,QAAQ,IAAI,YAAU,OAAO,GAAG,UAAU,oBAAoB,WAAW,QAAQ,SAAS,OAAO,CAAC,CAAC;AAC5K,cAAM,eAAe,CAAC,OAAO,wBAAwB,qBAAqB,UAAU,SAAS,UAAU;AACvG,cAAM,MAAM,OAAO,YAAY;AAC/B,cAAM,WAAW,MAAM,aAAa;AAAA,UAClC,WAAW,IAAI;AAAA,UACf;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AACD,SAAC,GAAG,UAAU,UAAU,SAAS,cAAc;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS,SAAS;AAAA,QACpB,CAAC;AACD,YAAI,OAAO,MAAM;AACf,gBAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,gBAAM,OAAO,MAAM,WAAW,gBAAgB,SAAS,YAAY;AACnE,iBAAO;AAAA,YACL,GAAG;AAAA,YACH;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,MACA,UAAU;AACR,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,YAAI,WAAW;AACb,oBAAU,KAAK;AACf,oBAAU,mBAAmB;AAC7B,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,IAAAL,SAAQ,UAAU;AAAA;AAAA;;;AClVlB;AAAA,mEAAAM,UAAA;AAAA;AAEA,WAAO,eAAeA,UAAS,cAAc;AAAA,MAC3C,OAAO;AAAA,IACT,CAAC;AACD,IAAAA,SAAQ,sBAAsBA,SAAQ,gBAAgB;AACtD,QAAM,cAAc;AACpB,IAAAA,SAAQ,gBAAgB,CAAC;AAAA,MACvB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,MACD,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,IACR,GAAG;AAAA,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", + "names": ["exports", "v", "mod", "d", "b", "__assign", "exports", "exports", "exports", "exports", "compare", "exports", "exports", "exports", "self", "exports", "exports", "exports", "exports", "exports", "module", "BigNumber", "compare", "format", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "path", "exports", "exports", "exports", "exports", "exports", "err", "exports", "exports", "exports", "array", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "path", "exports", "isHex", "exports", "exports", "exports", "exports", "err", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "PROTOCOL_MAGICS", "NETWORK_IDS", "ALGORITHM_IDS", "exports", "require_value", "exports", "value", "exports", "exports", "__createBinding", "__exportStar", "exports", "require_guard", "exports", "__createBinding", "__exportStar", "exports", "TypeSystemPolicy", "exports", "value", "require_type", "exports", "exports", "__createBinding", "__exportStar", "exports", "require_error", "exports", "__createBinding", "__exportStar", "exports", "require_symbols", "exports", "__createBinding", "__exportStar", "exports", "require_type", "exports", "require_guard", "exports", "exports", "require_helpers", "exports", "__createBinding", "__exportStar", "exports", "require_patterns", "exports", "__createBinding", "__exportStar", "exports", "Set", "require_type", "exports", "Set", "exports", "exports", "exports", "__createBinding", "__exportStar", "exports", "require_any", "exports", "__createBinding", "__exportStar", "exports", "Array", "require_array", "exports", "__createBinding", "__exportStar", "exports", "require_async_iterator", "exports", "__createBinding", "__exportStar", "exports", "require_discard", "exports", "__createBinding", "__exportStar", "exports", "require_never", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "require_constructor", "exports", "__createBinding", "__exportStar", "exports", "Function", "require_function", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "require_union", "exports", "require_union", "exports", "__createBinding", "__exportStar", "exports", "range", "pattern", "exports", "exports", "exports", "require_literal", "exports", "__createBinding", "__exportStar", "exports", "Boolean", "require_boolean", "exports", "__createBinding", "__exportStar", "exports", "BigInt", "require_bigint", "exports", "__createBinding", "__exportStar", "require_number", "exports", "Number", "require_number", "exports", "__createBinding", "__exportStar", "exports", "String", "require_string", "exports", "__createBinding", "__exportStar", "exports", "exports", "schema", "require_union", "exports", "exports", "require_template_literal", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "exports", "require_indexed", "exports", "__createBinding", "__exportStar", "exports", "require_iterator", "exports", "__createBinding", "__exportStar", "exports", "require_object", "exports", "__createBinding", "__exportStar", "exports", "Promise", "require_promise", "exports", "__createBinding", "__exportStar", "exports", "exports", "require_readonly", "exports", "__createBinding", "__exportStar", "exports", "require_tuple", "exports", "__createBinding", "__exportStar", "exports", "require_mapped", "exports", "__createBinding", "__exportStar", "exports", "exports", "require_optional", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "exports", "require_intersect", "exports", "__createBinding", "__exportStar", "exports", "require_awaited", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "exports", "require_keyof", "exports", "__createBinding", "__exportStar", "exports", "require_composite", "exports", "__createBinding", "__exportStar", "exports", "Date", "require_date", "exports", "__createBinding", "__exportStar", "exports", "require_null", "exports", "__createBinding", "__exportStar", "exports", "Symbol", "require_symbol", "exports", "__createBinding", "__exportStar", "exports", "require_undefined", "exports", "__createBinding", "__exportStar", "exports", "Uint8Array", "require_uint8array", "exports", "__createBinding", "__exportStar", "exports", "require_unknown", "exports", "__createBinding", "__exportStar", "exports", "require_const", "exports", "__createBinding", "__exportStar", "exports", "require_constructor_parameters", "exports", "__createBinding", "__exportStar", "exports", "schema", "require_deref", "exports", "__createBinding", "__exportStar", "exports", "require_enum", "exports", "__createBinding", "__exportStar", "exports", "ExtendsResult", "exports", "exports", "exports", "exports", "schema", "require_extends", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "require_exclude", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "require_extract", "exports", "__createBinding", "__exportStar", "exports", "require_instance_type", "exports", "__createBinding", "__exportStar", "exports", "require_integer", "exports", "__createBinding", "__exportStar", "exports", "exports", "exports", "exports", "exports", "exports", "require_intrinsic", "exports", "__createBinding", "__exportStar", "exports", "require_not", "exports", "__createBinding", "__exportStar", "exports", "exports", "T", "exports", "require_omit", "exports", "__createBinding", "__exportStar", "exports", "require_parameters", "exports", "__createBinding", "__exportStar", "exports", "exports", "require_partial", "exports", "__createBinding", "__exportStar", "exports", "exports", "T", "exports", "require_pick", "exports", "__createBinding", "__exportStar", "exports", "require_readonly_optional", "exports", "__createBinding", "__exportStar", "exports", "require_record", "exports", "__createBinding", "__exportStar", "exports", "require_recursive", "exports", "__createBinding", "__exportStar", "exports", "require_ref", "exports", "__createBinding", "__exportStar", "exports", "RegExp", "require_regexp", "exports", "__createBinding", "__exportStar", "exports", "exports", "require_required", "exports", "__createBinding", "__exportStar", "exports", "require_rest", "exports", "__createBinding", "__exportStar", "exports", "require_return_type", "exports", "__createBinding", "__exportStar", "exports", "exports", "require_schema", "exports", "__createBinding", "__exportStar", "exports", "require_static", "exports", "__createBinding", "__exportStar", "exports", "require_strict", "exports", "__createBinding", "__exportStar", "exports", "require_transform", "exports", "__createBinding", "__exportStar", "exports", "require_unsafe", "exports", "__createBinding", "__exportStar", "exports", "require_void", "exports", "__createBinding", "__exportStar", "exports", "require_type", "exports", "exports", "require_type", "exports", "exports", "__createBinding", "__exportStar", "exports", "TypeSystem", "require_system", "exports", "__createBinding", "__exportStar", "require_function", "exports", "require_deref", "exports", "target", "require_deref", "exports", "__createBinding", "__exportStar", "exports", "Hash", "ByteMarker", "require_hash", "exports", "__createBinding", "__exportStar", "exports", "value", "schema", "require_check", "exports", "__createBinding", "__exportStar", "require_errors", "exports", "ValueErrorType", "path", "value", "require_errors", "exports", "__createBinding", "__exportStar", "exports", "protoChain", "exports", "exports", "exports", "item", "exports", "decorators", "exports", "require_cjs", "exports", "typebox_1", "require", "TypeRegistry", "Set", "_", "value", "ArrayBuffer", "ArrayBufferBuilder", "JavaScriptTypeBuilder", "options", "CreateType", "Kind", "type", "exports", "typebox_1", "require", "TypeRegistry", "Set", "_", "value", "Buffer", "BufferBuilder", "JavaScriptTypeBuilder", "options", "CreateType", "Kind", "type", "exports", "typebox_1", "require", "KeyofEnumBuilder", "JavaScriptTypeBuilder", "KeyOfEnum", "schema", "options", "keys", "Object", "map", "key", "Literal", "Union", "Hint", "Enum", "anyOf", "entries", "filter", "_value", "isNaN", "value", "$id", "exports", "typebox_1", "require", "TypeRegistry", "Set", "schema", "value", "Number", "isSafeInteger", "test", "toString", "replace", "allowNegative", "UintBuilder", "JavaScriptTypeBuilder", "Uint", "options", "CreateType", "Kind", "type", "exports", "array_buffer_1", "require", "Object", "defineProperty", "exports", "enumerable", "get", "ArrayBufferBuilder", "buffer_1", "BufferBuilder", "keyof_enum_1", "KeyofEnumBuilder", "uint_1", "UintBuilder", "InvalidParameter", "Error", "field", "type", "constructor", "reason", "value", "message", "substring", "JSON", "stringify", "replace", "name", "exports", "exports", "setDeepValue", "getDeepValue", "obj", "prop", "path", "value", "length", "undefined", "exports", "Validate", "Assert", "AssertWeak", "typebox_1", "require", "Object", "defineProperty", "enumerable", "get", "CloneType", "Optional", "errors_1", "ts_mixer_1", "custom_types_1", "errors_2", "utils_1", "CustomTypeBuilder", "Mixin", "JavaScriptTypeBuilder", "ArrayBufferBuilder", "BufferBuilder", "KeyofEnumBuilder", "UintBuilder", "schema", "value", "FindErrorInUnion", "error", "currentValue", "unionMembers", "anyOf", "hasValidMember", "find", "unionSchema", "possibleMatchesByLiterals", "filter", "Kind", "entries", "properties", "property", "propertySchema", "const", "length", "errorsOfPossibleMatches", "map", "matchSchema", "errors", "Errors", "sortedErrors", "sort", "a", "b", "bestMatch", "InvalidParameter", "message", "path", "type", "OptionalKind", "ValueErrorType", "Union", "Number", "parsedNumber", "isNaN", "toString", "pathParts", "slice", "split", "setDeepValue", "shift", "e", "ObjectRequiredProperty", "console", "warn", "Type", "exports", "Networks", "TxType", "TxVersion", "exports", "exports", "exports", "module", "Long", "compare", "add", "exports", "module", "err", "params", "offset", "exports", "i", "exports", "module", "exports", "module", "exports", "exports", "module", "size", "exports", "module", "exports", "Buffer", "i", "exports", "module", "create", "reset", "exports", "module", "exports", "module", "create_array", "create", "buffer", "exports", "module", "exports", "module", "self", "err", "exports", "exports", "module", "exports", "exports", "module", "exports", "module", "fetch", "inquire", "err", "exports", "path", "isAbsolute", "normalize", "exports", "exports", "module", "Field", "exports", "module", "Field", "add", "self", "exports", "module", "Field", "add", "define", "path", "exports", "module", "Field", "exports", "module", "require_service", "exports", "module", "add", "exports", "module", "exports", "module", "field", "exports", "module", "exports", "exports", "require_type", "exports", "module", "Field", "add", "exports", "module", "Field", "self", "err", "filename", "process", "resolved", "i", "fetch", "source", "require_util", "exports", "module", "path", "dst", "value", "require_object", "exports", "module", "path", "opt", "require_enum", "exports", "module", "add", "exports", "module", "exports", "module", "exports", "module", "require_utils", "exports", "Message", "exports", "exports", "exports", "DeviceModelInternal", "Enum_InputScriptType", "Enum_OutputScriptType", "DecredStakingSpendType", "AmountUnit", "MultisigPubkeysOrder", "Enum_RequestType", "CardanoDerivationType", "CardanoAddressType", "CardanoNativeScriptType", "CardanoNativeScriptHashDisplayFormat", "CardanoTxOutputSerializationFormat", "CardanoCertificateType", "CardanoDRepType", "CardanoPoolRelayType", "CardanoTxAuxiliaryDataSupplementType", "CardanoCVoteRegistrationFormat", "CardanoTxSigningMode", "CardanoTxWitnessType", "Enum_FailureType", "Enum_ButtonRequestType", "Enum_PinMatrixRequestType", "DebugButton", "DebugPhysicalButton", "DebugTouchEventType", "DebugWaitType", "DefinitionType", "EthereumDataType", "Enum_BackupType", "Enum_SafetyCheckLevel", "Enum_DisplayRotation", "Enum_HomescreenFormat", "Enum_BackupAvailability", "Enum_RecoveryStatus", "Enum_Capability", "RecoveryDeviceInputMethod", "Enum_RecoveryType", "SdProtectOperationType", "Enum_WordRequestType", "BootCommand", "MoneroNetworkType", "NEMMosaicLevy", "NEMSupplyChangeType", "NEMModificationType", "NEMImportanceTransferMode", "StellarAssetType", "StellarMemoType", "StellarSignerType", "TezosContractType", "TezosBallotType", "exports", "pkg", "exports", "DeviceModelInternal", "Enum_InputScriptType", "Enum_OutputScriptType", "DecredStakingSpendType", "AmountUnit", "MultisigPubkeysOrder", "Enum_RequestType", "CardanoDerivationType", "CardanoAddressType", "CardanoNativeScriptType", "CardanoNativeScriptHashDisplayFormat", "CardanoTxOutputSerializationFormat", "CardanoCertificateType", "CardanoDRepType", "CardanoPoolRelayType", "CardanoTxAuxiliaryDataSupplementType", "CardanoCVoteRegistrationFormat", "CardanoTxSigningMode", "CardanoTxWitnessType", "Enum_FailureType", "Enum_ButtonRequestType", "Enum_PinMatrixRequestType", "DebugButton", "DebugPhysicalButton", "DebugTouchEventType", "DebugWaitType", "DefinitionType", "EthereumDataType", "Enum_BackupType", "Enum_SafetyCheckLevel", "Enum_DisplayRotation", "Enum_HomescreenFormat", "Enum_BackupAvailability", "Enum_RecoveryStatus", "Enum_Capability", "RecoveryDeviceInputMethod", "Enum_RecoveryType", "SdProtectOperationType", "Enum_WordRequestType", "BootCommand", "MoneroNetworkType", "NEMMosaicLevy", "NEMSupplyChangeType", "NEMModificationType", "NEMImportanceTransferMode", "StellarAssetType", "StellarMemoType", "StellarSignerType", "TezosContractType", "TezosBallotType", "require_lib", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "module", "window", "undefined", "ua", "exports", "exports", "exports", "path", "require_lib", "exports", "exports", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "require_lib", "exports", "require_errors", "exports", "require_constants", "exports", "DEVICE_TYPE", "exports", "error", "err", "require_abstract", "exports", "path", "err", "require_errors", "exports", "require_constants", "exports", "require_decode", "exports", "require_encode", "exports", "exports", "require_constants", "exports", "require_constants", "exports", "require_encode", "exports", "require_decode", "exports", "exports", "require_constants", "exports", "require_decode", "exports", "require_encode", "exports", "exports", "exports", "crypto", "exports", "exports", "exports", "mod", "randomBytes", "exports", "crypto", "exports", "exports", "exports", "ThpPairingMethod", "require_messages", "exports", "exports", "require_utils", "exports", "require_decode", "exports", "require_encode", "exports", "exports", "exports", "require_decode", "exports", "exports", "require_constants", "exports", "require_decode", "exports", "Version", "TrezorPushNotificationType", "TrezorPushNotificationMode", "exports", "require_types", "exports", "require_lib", "exports", "exports", "require_types", "exports", "exports", "err", "path", "exports", "exports", "exports", "readResult", "data", "require_receive", "exports", "err", "exports", "data", "require_send", "exports", "signal", "err", "exports", "exports", "exports", "signal", "path", "reset", "message", "require_abstract", "exports", "err", "path", "exports", "err", "path", "reset", "exports", "exports", "exports", "require_lib", "exports", "module", "require_utils", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "path", "res", "exports", "exports", "module", "URL", "exports", "exports", "module", "Buffer", "exports", "exports", "module", "Buffer", "exports", "Buffer", "exports", "Buffer", "exports", "Buffer", "i", "exports", "Buffer", "exports", "module", "exports", "module", "exports", "Buffer", "i", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "Buffer", "require_lib", "exports", "module", "Buffer", "stream_module", "exports", "module", "require_lib", "exports", "module", "http", "Blob", "err", "Headers", "URL", "isDomainOrSubdomain", "isSameProtocol", "fetch", "abort", "abortAndFinalize", "location", "exports", "module", "fetch", "exports", "err", "exports", "isHex", "exports", "version", "exports", "signal", "exports", "exports", "exports", "module", "path", "err", "dir", "platform", "arch", "runtime", "abi", "require_node_gyp_build", "exports", "module", "module", "exports", "exports", "exports", "buf", "error", "buffer", "exports", "module", "config", "iface", "alternate", "exports", "exports", "exports", "exports", "__exportStar", "exports", "exports", "path", "exports", "path", "err", "require_udp", "exports", "require_lib", "exports", "exports", "exports", "exports", "exports", "require_call", "exports", "exports", "require_device", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "require_applySettings", "exports", "init_utils", "mod", "_0n", "_1n", "Fp", "init_utils", "window", "_1n", "_0n", "wbits", "Fp", "Fn", "init_utils", "Fp", "Fn", "_2n", "_1n", "uvRatio", "_0n", "_8n", "p", "randomBytes", "adjustScalarBytes", "init_utils", "mod", "createHasher", "init_utils", "adjustScalarBytes", "_2n", "_1n", "mod", "_0n", "init_utils", "Fn", "blind", "init_utils", "_2n", "_1n", "_5n", "mod", "_8n", "_0n", "_3n", "init_utils", "createHasher", "exports", "exports", "require_lib", "exports", "require_utils", "exports", "crypto", "config", "exports", "tag", "length", "exports", "crypto", "config", "exports", "exports", "exports", "exports", "require_lib", "exports", "exports", "path", "exports", "path", "exports", "require_authenticateDevice", "exports", "config", "exports", "exports", "path", "exports", "exports", "require_authorizeCoinjoin", "exports", "exports", "require_cancelCoinjoinAuthorization", "exports", "exports", "exports", "exports", "require_messages", "exports", "exports", "require_constants", "exports", "require_errors", "exports", "require_lib", "exports", "require_utils", "exports", "exports", "exports", "exports", "exports", "SocksCommand", "Socks4Response", "Socks5Auth", "Socks5Response", "Socks5HostType", "SocksClientState", "exports", "exports", "exports", "exports", "__importStar", "exports", "exports", "exports", "exports", "__importStar", "__importStar", "exports", "exports", "__importStar", "exports", "exports", "exports", "err", "__awaiter", "__exportStar", "exports", "http", "__importStar", "exports", "err", "req", "__importStar", "http", "__exportStar", "exports", "err", "exports", "module", "require_common", "exports", "module", "self", "split", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "log", "useColors", "exports", "module", "__importDefault", "__importStar", "err", "exports", "exports", "acc", "require_utils", "exports", "exports", "require_constants", "exports", "module", "exports", "module", "mask", "exports", "module", "exports", "module", "concat", "exports", "module", "exports", "module", "err", "data", "require_fallback", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "concat", "err", "exports", "module", "err", "exports", "module", "exports", "module", "exports", "module", "http", "randomBytes", "URL", "err", "key", "location", "exports", "module", "err", "exports", "module", "protocol", "exports", "module", "http", "err", "exports", "module", "require_client", "exports", "require_lib", "exports", "exports", "require_websocket", "exports", "require_blockbook", "exports", "module", "exports", "module", "exports", "exports", "AccountRootFlags", "exports", "exports", "exports", "isBytes", "anumber", "abytes", "aexists", "aoutput", "clean", "createView", "rotr", "bytesToHex", "hexToBytes", "concatBytes", "createHasher", "randomBytes", "hasHexBuiltin", "hexes", "asciis", "asciiToBase16", "Hash", "exports", "concat", "bytesToHex", "exports", "hexToBytes", "randomBytes", "__exportStar", "isBytes", "abytes", "anumber", "padding", "exports", "alphabet", "hasHexBuiltin", "exports", "__importDefault", "exports", "__importDefault", "exports", "exports", "exports", "exports", "exports", "module", "exports", "exports", "exports", "exports", "exports", "exports", "__importDefault", "exports", "Field", "writeUInt8", "exports", "compare", "Hash", "exports", "exports", "exports", "exports", "isHex", "exports", "exports", "__importDefault", "exports", "Blob", "exports", "exports", "exports", "exports", "exports", "path", "exports", "compare", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "__importDefault", "exports", "exports", "exports", "exports", "exports", "__importDefault", "quality", "exports", "exports", "__importStar", "exports", "exports", "exports", "isHex", "exports", "GlobalFlags", "AccountSetAsfFlags", "exports", "AccountSetTfFlags", "AMMClawbackFlags", "exports", "AMMDepositFlags", "exports", "AMMWithdrawFlags", "exports", "BatchFlags", "exports", "MPTokenAuthorizeFlags", "exports", "exports", "module", "__importDefault", "exports", "err", "MPTokenIssuanceCreateFlags", "exports", "MPTokenIssuanceSetFlags", "exports", "NFTokenCreateOfferFlags", "exports", "NFTokenMintFlags", "exports", "OfferCreateFlags", "exports", "PaymentFlags", "exports", "path", "PaymentChannelClaimFlags", "exports", "TrustSetFlags", "exports", "VaultWithdrawalPolicy", "exports", "VaultCreateFlags", "XChainModifyBridgeFlags", "exports", "exports", "__importDefault", "exports", "exports", "Chi", "Maj", "_32n", "HashMD", "exports", "add", "fromBig", "split", "U32_MASK64", "_32n", "shrSH", "shrSL", "rotrSH", "rotrSL", "rotrBH", "rotrBL", "add3L", "add3H", "add4L", "add4H", "add5L", "add5H", "exports", "K512", "SHA512_Kh", "SHA512_Kl", "SHA512_W_H", "SHA512_W_L", "exports", "exports", "abool", "hexToNumber", "bytesToNumberBE", "bytesToNumberLE", "numberToBytesBE", "numberToBytesLE", "equalBytes", "copyBytes", "asciiToBytes", "inRange", "aInRange", "bitLen", "validateObject", "memoized", "_0n", "_1n", "isPosBig", "bitMask", "reset", "notImplemented", "exports", "mod", "pow2", "invert", "tonelliShanks", "FpSqrt", "validateField", "FpPow", "FpInvertBatch", "FpLegendre", "nLength", "Field", "FpSqrtEven", "getFieldBytesLength", "getMinHashLength", "mapHashToField", "_0n", "_1n", "_2n", "_3n", "_4n", "_5n", "_7n", "_8n", "_9n", "_16n", "assertIsSquare", "Fp", "sqrt3mod4", "sqrt5mod8", "sqrt9mod16", "isNegativeLE", "FIELD_FIELDS", "exports", "negateCt", "normalizeZ", "pippenger", "_0n", "_1n", "validateW", "calcWOpts", "calcOffsets", "window", "validateMSMPoints", "validateMSMScalars", "pointPrecomputes", "pointWindowSizes", "getW", "assert0", "wNAF", "wbits", "createField", "Fp", "Fn", "exports", "_2n", "_0n", "_1n", "_3n", "_4n", "Fn", "Fp", "err", "endo", "tv5", "c1", "c2", "randomBytes", "r", "s", "isHex", "exports", "exports", "expand_message_xmd", "expand_message_xof", "hash_to_field", "createHasher", "os2ip", "i2osp", "strxor", "normDST", "_0n", "_1n", "_2n", "_3n", "exports", "Fn", "Fp", "exports", "exports", "__importDefault", "exports", "exports", "Prefix", "exports", "__importDefault", "exports", "exports", "edwards", "eddsa", "_0n", "_1n", "_2n", "_8n", "isEdValidXY", "Fp", "Fn", "uvRatio", "p", "PrimeEdwardsPoint", "randomBytes", "adjustScalarBytes", "exports", "montgomery", "_0n", "_1n", "_2n", "validateOpts", "adjustScalarBytes", "exports", "_0n", "_1n", "_2n", "_3n", "_5n", "_8n", "ed25519_CURVE_p", "ed25519_CURVE", "ed25519_pow_2_252_3", "adjustScalarBytes", "ED25519_SQRT_M1", "uvRatio", "Fp", "Fn", "ed25519_domain", "ELL2_C1", "ELL2_C2", "ELL2_C3", "ELL2_C1_EDWARDS", "map_to_curve_elligator2_edwards25519", "SQRT_M1", "SQRT_AD_MINUS_ONE", "INVSQRT_A_MINUS_D", "ONE_MINUS_D_SQ", "D_MINUS_ONE_SQ", "invertSqrt", "MAX_255B", "bytes255ToNumberLE", "calcElligatorRistrettoMap", "mod", "_RistrettoPoint", "__importDefault", "ed25519", "exports", "exports", "__importDefault", "exports", "exports", "__importDefault", "exports", "__importDefault", "exports", "exports", "nftokenID", "exports", "exports", "HashPrefix", "exports", "exports", "NodeType", "exports", "__importDefault", "exports", "__importDefault", "exports", "__importDefault", "__exportStar", "exports", "__importDefault", "__importStar", "exports", "exports", "__importDefault", "__importStar", "exports", "__importDefault", "exports", "__importDefault", "split", "exports", "exports", "exports", "exports", "exports", "exports", "__importDefault", "exports", "__awaiter", "exports", "__exportStar", "exports", "__importDefault", "exports", "__importDefault", "exports", "__awaiter", "exports", "OfferFlags", "exports", "__importDefault", "exports", "K", "exports", "exports", "path", "err", "exports", "require_bip39", "exports", "exports", "ECDSA", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "EnableAmendmentFlags", "exports", "exports", "__exportStar", "exports", "module", "__importDefault", "exports", "__importDefault", "exports", "exports", "__importDefault", "exports", "FaucetNetwork", "exports", "exports", "__awaiter", "err", "require_constants", "exports", "module", "require_buffer_util", "exports", "module", "concat", "require_limiter", "exports", "module", "require_permessage_deflate", "exports", "module", "err", "data", "require_validation", "exports", "module", "require_receiver", "exports", "module", "concat", "err", "require_sender", "exports", "module", "err", "require_event_target", "exports", "module", "require_extension", "exports", "module", "require_websocket", "exports", "module", "http", "randomBytes", "URL", "err", "key", "location", "require_stream", "exports", "module", "err", "require_subprotocol", "exports", "module", "protocol", "require_websocket_server", "exports", "module", "http", "err", "require_ws", "exports", "module", "__importDefault", "exports", "exports", "exports", "exports", "__importDefault", "exports", "config", "err", "__awaiter", "__importDefault", "aValue", "bValue", "transaction", "exports", "log", "path", "__awaiter", "exports", "exports", "exports", "exports", "RippleStateFlags", "exports", "SignerListFlags", "exports", "VaultFlags", "exports", "exports", "exports", "exports", "__importStar", "__exportStar", "exports", "exports", "__exportStar", "exports", "__importDefault", "exports", "exports", "exports", "__exportStar", "__importDefault", "exports", "require_ripple", "exports", "client", "module", "exports", "require_websocket", "exports", "require_blockfrost", "exports", "module", "require_dist", "exports", "split", "require_cjs", "exports", "require_cjs", "exports", "__importDefault", "mod", "exports", "exports", "__importDefault", "mod", "require_cjs", "exports", "__importDefault", "mod", "require_validation", "exports", "module", "exports", "module", "exports", "module", "undefined", "i", "add", "self", "mod", "split", "max", "min", "exports", "module", "exports", "module", "concat", "exports", "require_stream", "exports", "module", "exports", "module", "Buffer", "concat", "exports", "module", "err", "self", "require_errors", "exports", "module", "require_state", "exports", "module", "exports", "module", "exports", "module", "require_node", "exports", "module", "exports", "module", "Buffer", "realHasInstance", "err", "exports", "module", "keys", "self", "exports", "module", "Buffer", "exports", "Buffer", "self", "exports", "module", "onlegacyfinish", "onfinish", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "exports", "module", "err", "createReadableStreamAsyncIterator", "exports", "module", "self", "err", "exports", "module", "EElistenerCount", "Buffer", "debug", "err", "self", "n", "exports", "module", "err", "err2", "exports", "module", "exports", "module", "err", "exports", "module", "exports", "module", "err", "exports", "module", "require_bindings", "exports", "module", "require_blake", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "require_lib", "exports", "module", "exports", "module", "exports", "module", "err", "exports", "module", "require_crypto", "exports", "exports", "module", "require_errors", "exports", "module", "exports", "module", "exports", "module", "require_typeforce", "exports", "exports", "exports", "require_cjs", "exports", "exports", "module", "exports", "module", "exports", "module", "path", "require_bindings", "exports", "module", "path", "i", "err", "require_native", "exports", "module", "exports", "module", "Buffer", "mod", "add", "self", "comb10MulTo", "split", "prime", "exports", "module", "exports", "module", "require_utils", "exports", "toHex", "require_utils", "exports", "mod", "cachedProperty", "exports", "module", "crypto", "require_base", "exports", "module", "exports", "module", "split", "obj", "add", "exports", "module", "add", "require_edwards", "exports", "module", "add", "require_curve", "exports", "require_utils", "exports", "toHex", "require_common", "exports", "require_common", "exports", "exports", "module", "require__", "exports", "module", "require__", "exports", "module", "require__", "exports", "module", "require__", "exports", "module", "exports", "exports", "require_hmac", "exports", "module", "require_hash", "exports", "require_secp256k1", "exports", "module", "exports", "curve", "exports", "module", "add", "exports", "module", "exports", "module", "exports", "module", "e", "require_key", "exports", "module", "eddsa", "require_signature", "exports", "module", "eddsa", "toHex", "exports", "module", "hash", "exports", "exports", "module", "require_js", "exports", "module", "exports", "module", "err", "exports", "exports", "exports", "exports", "exports", "require_types", "exports", "exports", "exports", "exports", "value", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "require_bn", "exports", "module", "Buffer", "mod", "allocate", "add", "self", "comb10MulTo", "split", "prime", "exports", "mod", "require_cjs", "exports", "__createBinding", "__importStar", "mod", "exports", "exports", "exports", "exports", "require_payments", "exports", "exports", "require_cjs", "exports", "__importDefault", "mod", "exports", "crypto", "path", "exports", "exports", "exports", "exports", "exports", "exports", "require_transaction", "exports", "require_result", "exports", "exports", "fee", "exports", "exports", "split", "exports", "require_coinselect", "exports", "require_compose", "exports", "exports", "path", "exports", "require_base", "exports", "exports", "exports", "exports", "byteLength", "hasWitnesses", "exports", "require_util", "exports", "module", "toHex", "exports", "module", "v", "exports", "module", "v", "exports", "module", "exports", "require_transaction", "exports", "require_lib", "exports", "crypto", "exports", "err", "exports", "exports", "err", "exports", "require_transform", "exports", "exports", "require_discovery", "exports", "path", "require_transaction", "exports", "value", "txid", "vout", "require_utils", "exports", "exports", "exports", "exports", "exports", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "concat2", "concat", "exports", "__defProp", "__export", "err", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "concat", "split", "exports", "__defProp", "__export", "concat", "exports", "__defProp", "__export", "exports", "__defProp", "__export", "add", "require_cjs", "exports", "__create", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__getProtoOf", "__hasOwnProp", "__export", "module2", "exports", "preBalance", "postBalance", "require_lib", "exports", "exports", "vin", "vout", "history", "txs", "exports", "path", "confirmed", "unconfirmed", "history", "historyUnconfirmed", "transactions", "exports", "path", "exports", "exports", "exports", "exports", "require_methods", "exports", "require_base", "exports", "exports", "err", "exports", "err", "exports", "exports", "require_electrum", "exports", "module", "isSolanaError", "err", "ORDERED_ERROR_NAMES", "SolanaError", "SOLANA_ERROR__CODECS__EXPECTED_FIXED_LENGTH", "SOLANA_ERROR__CODECS__EXPECTED_VARIABLE_LENGTH", "SOLANA_ERROR__CODECS__ENCODER_DECODER_SIZE_COMPATIBILITY_MISMATCH", "SOLANA_ERROR__CODECS__ENCODER_DECODER_FIXED_SIZE_MISMATCH", "SOLANA_ERROR__CODECS__ENCODER_DECODER_MAX_SIZE_MISMATCH", "SOLANA_ERROR__CODECS__ENCODED_BYTES_MUST_NOT_INCLUDE_SENTINEL", "SOLANA_ERROR__CODECS__SENTINEL_MISSING_IN_DECODED_BYTES", "SOLANA_ERROR__CODECS__CANNOT_DECODE_EMPTY_BYTE_ARRAY", "SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH", "SOLANA_ERROR__CODECS__OFFSET_OUT_OF_RANGE", "config", "SOLANA_ERROR__CODECS__EXPECTED_POSITIVE_BYTE_LENGTH", "alphabet", "SolanaError", "SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE", "createEncoder", "createDecoder", "combineCodec", "TextDecoder", "TextEncoder", "SolanaError", "SOLANA_ERROR__ACCOUNTS__FAILED_TO_DECODE_ACCOUNT", "SOLANA_ERROR__ACCOUNTS__EXPECTED_DECODED_ACCOUNT", "SOLANA_ERROR__ACCOUNTS__EXPECTED_ALL_ACCOUNTS_TO_BE_DECODED", "getBase64Encoder", "getBase58Encoder", "config", "SOLANA_ERROR__ACCOUNTS__ACCOUNT_NOT_FOUND", "SOLANA_ERROR__ACCOUNTS__ONE_OR_MORE_ACCOUNTS_NOT_FOUND", "SolanaError", "SOLANA_ERROR__CRYPTO__RANDOM_VALUES_FUNCTION_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__DIGEST_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__GENERATE_FUNCTION_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__ED25519_ALGORITHM_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__EXPORT_FUNCTION_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__SIGN_FUNCTION_UNIMPLEMENTED", "SOLANA_ERROR__SUBTLE_CRYPTO__VERIFY_FUNCTION_UNIMPLEMENTED", "getBase58Encoder", "getBase58Decoder", "SolanaError", "SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE", "SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH", "transformEncoder", "fixEncoderSize", "fixDecoderSize", "combineCodec", "mod", "pow2", "uvRatio", "SOLANA_ERROR__ADDRESSES__INVALID_OFF_CURVE_ADDRESS", "SOLANA_ERROR__ADDRESSES__MALFORMED_PDA", "SOLANA_ERROR__ADDRESSES__PDA_BUMP_SEED_OUT_OF_RANGE", "assertDigestCapabilityIsAvailable", "SOLANA_ERROR__ADDRESSES__MAX_NUMBER_OF_PDA_SEEDS_EXCEEDED", "SOLANA_ERROR__ADDRESSES__MAX_PDA_SEED_LENGTH_EXCEEDED", "SOLANA_ERROR__ADDRESSES__INVALID_SEEDS_POINT_ON_CURVE", "address", "isSolanaError", "SOLANA_ERROR__ADDRESSES__FAILED_TO_FIND_VIABLE_PDA_BUMP_SEED", "SOLANA_ERROR__ADDRESSES__PDA_ENDS_WITH_PDA_MARKER", "assertKeyExporterIsAvailable", "SOLANA_ERROR__ADDRESSES__INVALID_ED25519_PUBLIC_KEY", "SolanaError", "SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE", "Endian", "config", "createEncoder", "createDecoder", "assertByteArrayIsNotEmptyForCodec", "assertByteArrayHasEnoughBytesForCodec", "combineCodec", "SolanaError", "SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS", "isFixedSize", "config", "getU32Encoder", "createEncoder", "getEncodedSize", "getU32Decoder", "createDecoder", "newOffset", "combineCodec", "assertByteArrayHasEnoughBytesForCodec", "transformEncoder", "getU8Encoder", "transformDecoder", "getU8Decoder", "containsBytes", "SOLANA_ERROR__CODECS__INVALID_CONSTANT", "SOLANA_ERROR__CODECS__UNION_VARIANT_OUT_OF_RANGE", "SOLANA_ERROR__CODECS__INVALID_DISCRIMINATED_UNION_VARIANT", "SOLANA_ERROR__CODECS__CANNOT_USE_LEXICAL_VALUES_AS_ENUM_DISCRIMINATORS", "SOLANA_ERROR__CODECS__INVALID_ENUM_VARIANT", "SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE", "SOLANA_ERROR__CODECS__INVALID_LITERAL_UNION_VARIANT", "SOLANA_ERROR__CODECS__LITERAL_UNION_DISCRIMINATOR_OUT_OF_RANGE", "assertIsFixedSize", "fixEncoderSize", "fixDecoderSize", "fallback", "config", "transformEncoder", "getUnitEncoder", "getBooleanEncoder", "getU8Encoder", "assertIsFixedSize", "fixEncoderSize", "getConstantEncoder", "getUnionEncoder", "getTupleEncoder", "transformDecoder", "getUnitDecoder", "getBooleanDecoder", "getU8Decoder", "fixDecoderSize", "getConstantDecoder", "getUnionDecoder", "getTupleDecoder", "containsBytes", "combineCodec", "require_index_node", "exports", "SolanaError", "SOLANA_ERROR__INSTRUCTION__PROGRAM_ID_MISMATCH", "SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_ACCOUNTS", "SOLANA_ERROR__INSTRUCTION__EXPECTED_TO_HAVE_DATA", "AccountRole", "SolanaError", "SOLANA_ERROR__KEYS__INVALID_PRIVATE_KEY_BYTE_LENGTH", "assertKeyExporterIsAvailable", "SOLANA_ERROR__SUBTLE_CRYPTO__CANNOT_EXPORT_NON_EXTRACTABLE_KEY", "getBase58Encoder", "SOLANA_ERROR__KEYS__SIGNATURE_STRING_LENGTH_OUT_OF_RANGE", "SOLANA_ERROR__KEYS__INVALID_SIGNATURE_BYTE_LENGTH", "assertSigningCapabilityIsAvailable", "signature", "assertVerificationCapabilityIsAvailable", "assertKeyGenerationIsAvailable", "assertPRNGIsAvailable", "SOLANA_ERROR__KEYS__INVALID_KEY_PAIR_BYTE_LENGTH", "randomBytes", "SOLANA_ERROR__KEYS__PUBLIC_KEY_MUST_MATCH_PRIVATE_KEY", "privateKey", "isSolanaError", "SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM", "unwrapBigIntValueObject", "wrapBigIntValueObject", "SolanaError", "SOLANA_ERROR__RPC__API_PLAN_MISSING_FOR_RPC_METHOD", "config", "createRpcMessage", "config", "pipe", "getSolanaErrorFromJsonRpcError", "config", "createJsonRpcApi", "getDefaultRequestTransformerForSolanaRpc", "getDefaultResponseTransformerForSolanaRpc", "jsonParsedAccountsConfigs", "KEYPATH_WILDCARD", "innerInstructionsConfigs", "messageConfig", "jsonParsedTokenAccountsConfigs", "SolanaError", "SOLANA_ERROR__RPC__TRANSPORT_HTTP_HEADER_FORBIDDEN", "config", "SOLANA_ERROR__RPC__TRANSPORT_HTTP_ERROR", "isJsonRpcPayload", "parseJsonWithBigInts", "stringifyJsonWithBigints", "path", "SolanaError", "SOLANA_ERROR__RPC__INTEGER_OVERFLOW", "safeCaptureStackTrace", "AbortController", "args", "setMaxListeners", "e", "isJsonRpcPayload", "fastStableStringify", "config", "pipe", "createHttpTransportForSolanaRpc", "createRpc", "createSolanaRpcApi", "require_index_node", "AbortController", "args", "setMaxListeners", "EventTarget", "err", "SolanaError", "SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_STATE_MISSING", "SOLANA_ERROR__INVARIANT_VIOLATION__SUBSCRIPTION_ITERATOR_MUST_NOT_POLL_BEFORE_RESOLVING_EXISTING_MESSAGE_PROMISE", "e", "err", "SolanaError", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__CANNOT_CREATE_SUBSCRIPTION_PLAN", "createAsyncIterableFromDataPublisher", "config", "AbortController", "args", "setMaxListeners", "demultiplexDataPublisher", "createRpcMessage", "err", "getSolanaErrorFromJsonRpcError", "safeRace", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__EXPECTED_SERVER_SUBSCRIPTION_ID", "SOLANA_ERROR__INVARIANT_VIOLATION__DATA_PUBLISHER_CHANNEL_UNIMPLEMENTED", "config", "getDefaultRequestTransformerForSolanaRpc", "getDefaultResponseTransformerForSolanaRpcSubscriptions", "createRpcSubscriptionsApi", "executeRpcPubSubSubscriptionPlan", "jsonParsedAccountsConfigs", "KEYPATH_WILDCARD", "require_constants", "exports", "module", "require_buffer_util", "exports", "module", "concat", "require_limiter", "exports", "module", "require_permessage_deflate", "exports", "module", "err", "data", "require_validation", "exports", "module", "require_receiver", "exports", "module", "concat", "err", "require_sender", "exports", "module", "err", "require_event_target", "exports", "module", "require_extension", "exports", "module", "require_websocket", "exports", "module", "http", "randomBytes", "URL", "err", "key", "location", "require_stream", "exports", "module", "err", "require_subprotocol", "exports", "module", "protocol", "require_websocket_server", "exports", "module", "http", "err", "require_ws", "exports", "module", "EventTarget", "args", "setMaxListeners", "index_node_default", "WebSocketImpl", "SolanaError", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_FAILED_TO_CONNECT", "getDataPublisherFromEventEmitter", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CLOSED_BEFORE_MESSAGE_BUFFERED", "path", "SolanaError", "SOLANA_ERROR__RPC__INTEGER_OVERFLOW", "safeCaptureStackTrace", "AbortController", "args", "setMaxListeners", "e", "isSolanaError", "SOLANA_ERROR__RPC_SUBSCRIPTIONS__CHANNEL_CONNECTION_CLOSED", "pipe", "transformChannelInboundMessages", "transformChannelOutboundMessages", "parseJsonWithBigInts", "stringifyJsonWithBigints", "config", "createWebSocketChannel", "fastStableStringify", "createSubscriptionRpc", "createSolanaRpcSubscriptionsApi", "isAddress", "assertIsAddress", "isSolanaError", "SOLANA_ERROR__ADDRESSES__STRING_LENGTH_OUT_OF_RANGE", "SolanaError", "SOLANA_ERROR__BLOCKHASH_STRING_LENGTH_OUT_OF_RANGE", "SOLANA_ERROR__ADDRESSES__INVALID_BYTE_LENGTH", "SOLANA_ERROR__INVALID_BLOCKHASH_BYTE_LENGTH", "getAddressEncoder", "createEncoder", "getAddressDecoder", "combineCodec", "SOLANA_ERROR__INVARIANT_VIOLATION__SWITCH_MUST_BE_EXHAUSTIVE", "getU64Encoder", "getU64Decoder", "SOLANA_ERROR__LAMPORTS_OUT_OF_RANGE", "transformDecoder", "SOLANA_ERROR__MALFORMED_BIGINT_STRING", "SOLANA_ERROR__MALFORMED_NUMBER_STRING", "SOLANA_ERROR__TIMESTAMP_OUT_OF_RANGE", "isBlockhash", "SolanaError", "SOLANA_ERROR__TRANSACTION__EXPECTED_BLOCKHASH_LIFETIME", "alphabet", "SOLANA_ERROR__CODECS__INVALID_STRING_FOR_BASE", "createEncoder", "createDecoder", "getArrayEncoder", "getU8Encoder", "getShortU16Encoder", "getStructEncoder", "getAddressEncoder", "getArrayDecoder", "getU8Decoder", "getShortU16Decoder", "transformDecoder", "getStructDecoder", "getAddressDecoder", "transformEncoder", "addEncoderSizePrefix", "getBytesEncoder", "addDecoderSizePrefix", "getBytesDecoder", "SOLANA_ERROR__TRANSACTION__VERSION_NUMBER_OUT_OF_RANGE", "combineCodec", "fixEncoderSize", "fixDecoderSize", "AccountRole", "instructions", "isWritableRole", "SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_CANNOT_PAY_FEES", "SOLANA_ERROR__TRANSACTION__INVOKED_PROGRAMS_MUST_NOT_BE_WRITABLE", "mergeRoles", "getAddressComparator", "isSignerRole", "addresses", "config", "SOLANA_ERROR__TRANSACTION__EXPECTED_NONCE_LIFETIME", "SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_CONTENTS_MISSING", "SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_ADDRESS_LOOKUP_TABLE_INDEX_OUT_OF_RANGE", "SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_INSTRUCTION_PROGRAM_ADDRESS_NOT_FOUND", "assertIsAddress", "SOLANA_ERROR__TRANSACTION__FAILED_TO_DECOMPILE_FEE_PAYER_MISSING", "pipe", "SolanaError", "SOLANA_ERROR__TRANSACTION__CANNOT_ENCODE_WITH_EMPTY_SIGNATURES", "transformEncoder", "getArrayEncoder", "fixEncoderSize", "getBytesEncoder", "getShortU16Encoder", "getStructEncoder", "transformDecoder", "getStructDecoder", "getArrayDecoder", "fixDecoderSize", "getBytesDecoder", "getShortU16Decoder", "combineCodec", "getTupleDecoder", "getTransactionVersionDecoder", "padRightDecoder", "getU8Decoder", "getAddressDecoder", "SOLANA_ERROR__TRANSACTION__MESSAGE_SIGNATURES_MISMATCH", "compileTransactionMessage", "getCompiledTransactionMessageEncoder", "isTransactionMessageWithBlockhashLifetime", "getBase58Decoder", "SOLANA_ERROR__TRANSACTION__FEE_PAYER_SIGNATURE_MISSING", "getAddressFromPublicKey", "signBytes", "SOLANA_ERROR__TRANSACTION__ADDRESSES_CANNOT_SIGN_TRANSACTION", "SOLANA_ERROR__TRANSACTION__SIGNATURES_MISSING", "getBase64Decoder", "SOLANA_ERROR__TRANSACTION__EXCEEDS_SIZE_LIMIT", "SolanaError", "SOLANA_ERROR__SIGNER__ADDRESS_CANNOT_HAVE_MULTIPLE_SIGNERS", "SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_MODIFYING_SIGNER", "SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_PARTIAL_SIGNER", "SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SENDING_SIGNER", "SOLANA_ERROR__SIGNER__EXPECTED_TRANSACTION_SIGNER", "isSignerRole", "SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_PARTIAL_SIGNER", "SOLANA_ERROR__SIGNER__EXPECTED_KEY_PAIR_SIGNER", "getAddressFromPublicKey", "signBytes", "transactions", "partiallySignTransaction", "generateKeyPair", "createKeyPairFromBytes", "createKeyPairFromPrivateKeyBytes", "isAddress", "SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_MODIFYING_SIGNER", "SOLANA_ERROR__SIGNER__EXPECTED_MESSAGE_SIGNER", "SOLANA_ERROR__SIGNER__TRANSACTION_SENDING_SIGNER_MISSING", "SOLANA_ERROR__SIGNER__TRANSACTION_CANNOT_HAVE_MULTIPLE_SENDING_SIGNERS", "config", "assertIsFullySignedTransaction", "compileTransaction", "transaction", "TextEncoder", "AbortController", "args", "setMaxListeners", "SolanaError", "SOLANA_ERROR__BLOCK_HEIGHT_EXCEEDED", "getBase58Decoder", "getBase64Encoder", "SOLANA_ERROR__INVALID_NONCE", "SOLANA_ERROR__NONCE_ACCOUNT_NOT_FOUND", "safeRace", "getSolanaErrorFromTransactionError", "commitmentComparator", "e", "config", "getSignatureFromTransaction", "getTimeoutPromise", "rpc", "rpcSubscriptions", "createRecentSignatureConfirmationPromiseFactory", "config", "waitForRecentTransactionConfirmationUntilTimeout", "getTimeoutPromise", "getU32Encoder", "isInstructionForProgram", "isInstructionWithData", "isTransactionMessageWithDurableNonceLifetime", "isTransactionMessageWithBlockhashLifetime", "setTransactionMessageLifetimeUsingBlockhash", "appendTransactionMessageInstruction", "compileTransaction", "getBase64EncodedWireTransaction", "SolanaError", "SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT", "SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT", "isSolanaError", "fetchJsonParsedAccounts", "assertAccountsDecoded", "assertAccountsExist", "decompileTransactionMessage", "commitmentComparator", "createNonceInvalidationPromiseFactory", "waitForDurableNonceTransactionConfirmation", "createBlockHeightExceedencePromiseFactory", "waitForRecentTransactionConfirmation", "getStructEncoder", "getOptionEncoder", "getAddressEncoder", "getU32Encoder", "getU64Encoder", "getU8Encoder", "getBooleanEncoder", "getStructDecoder", "getOptionDecoder", "getAddressDecoder", "getU32Decoder", "getU64Decoder", "getU8Decoder", "getBooleanDecoder", "combineCodec", "decodeAccount", "config", "assertAccountExists", "fetchEncodedAccount", "assertAccountsExist", "fetchEncodedAccounts", "getArrayEncoder", "getArrayDecoder", "AccountState", "getEnumEncoder", "getEnumDecoder", "AuthorityType", "AssociatedTokenInstruction", "containsBytes", "TokenAccount", "TokenInstruction", "isProgramError", "AccountRole", "upgradeRoleToSigner", "kitIsTransactionSigner", "transformEncoder", "getProgramDerivedAddress", "none", "getUtf8Encoder", "getUtf8Decoder", "config", "fetchEncodedAccount", "fetchJsonParsedAccount", "getStructEncoder", "getU64Encoder", "getI64Encoder", "getStructDecoder", "getU64Decoder", "getI64Decoder", "combineCodec", "assertAccountExists", "decodeAccount", "getBlockhashEncoder", "getU128Encoder", "getDefaultLamportsEncoder", "getBooleanEncoder", "getBlockhashDecoder", "getU128Decoder", "getDefaultLamportsDecoder", "getBooleanDecoder", "getArrayEncoder", "getArrayDecoder", "getF64Encoder", "getU8Encoder", "getF64Decoder", "getU8Decoder", "getArrayCodec", "getU64Codec", "createEncoder", "createDecoder", "SolanaError", "SOLANA_ERROR__CODECS__INVALID_BYTE_LENGTH", "SOLANA_ERROR__CODECS__ENUM_DISCRIMINATOR_OUT_OF_RANGE", "SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS", "AccountState", "getEnumEncoder", "getEnumDecoder", "combineCodec", "AuthorityType", "fixEncoderSize", "getBytesEncoder", "fixDecoderSize", "getBytesDecoder", "getDiscriminatedUnionEncoder", "getUnitEncoder", "addEncoderSizePrefix", "getStructEncoder", "getAddressEncoder", "getU64Encoder", "getU16Encoder", "getOptionEncoder", "getBooleanEncoder", "getI16Encoder", "getUtf8Encoder", "getU32Encoder", "getMapEncoder", "getF64Encoder", "getDiscriminatedUnionDecoder", "getUnitDecoder", "addDecoderSizePrefix", "getStructDecoder", "getAddressDecoder", "getU64Decoder", "getU16Decoder", "getOptionDecoder", "getBooleanDecoder", "getI16Decoder", "getUtf8Decoder", "getU32Decoder", "getMapDecoder", "getF64Decoder", "ExtensionType", "getTupleEncoder", "getTupleDecoder", "getU8Encoder", "getHiddenPrefixEncoder", "getArrayEncoder", "getConstantEncoder", "padLeftEncoder", "getU8Decoder", "getHiddenPrefixDecoder", "getArrayDecoder", "getConstantDecoder", "decodeAccount", "config", "assertAccountExists", "fetchEncodedAccount", "assertAccountsExist", "fetchEncodedAccounts", "AssociatedTokenInstruction", "containsBytes", "Token2022Account", "Token2022Instruction", "isProgramError", "AccountRole", "upgradeRoleToSigner", "kitIsTransactionSigner", "transformEncoder", "getI8Encoder", "getI8Decoder", "getProgramDerivedAddress", "none", "getI64Encoder", "getI64Decoder", "fetchSysvarClock", "unwrapOption", "extension", "isOption", "wrapNullable", "isNone", "ComputeBudgetInstruction", "containsBytes", "getU8Encoder", "transformEncoder", "getStructEncoder", "getU32Encoder", "getStructDecoder", "getU8Decoder", "getU32Decoder", "combineCodec", "config", "getU64Encoder", "getU64Decoder", "previousUnits", "appendTransactionMessageInstruction", "estimateComputeUnitLimit", "setTransactionMessageLifetimeUsingBlockhash", "isDurableNonceTransaction", "pipe", "compileTransaction", "getBase64EncodedWireTransaction", "SolanaError", "SOLANA_ERROR__TRANSACTION__FAILED_TO_ESTIMATE_COMPUTE_LIMIT", "SOLANA_ERROR__TRANSACTION__FAILED_WHEN_SIMULATING_TO_ESTIMATE_COMPUTE_LIMIT", "isSolanaError", "previousMicroLamports", "exports", "exports", "config", "getStructEncoder", "getAddressEncoder", "getStructDecoder", "getAddressDecoder", "combineCodec", "getU64Encoder", "getF64Encoder", "getU64Decoder", "getF64Decoder", "getI64Encoder", "getI64Decoder", "StakeAuthorize", "getEnumEncoder", "getEnumDecoder", "getU8Encoder", "getU8Decoder", "getDiscriminatedUnionEncoder", "getUnitEncoder", "getTupleEncoder", "getU32Encoder", "getDiscriminatedUnionDecoder", "getUnitDecoder", "getTupleDecoder", "getU32Decoder", "decodeAccount", "config", "assertAccountExists", "fetchEncodedAccount", "assertAccountsExist", "fetchEncodedAccounts", "StakeAccount", "StakeInstruction", "containsBytes", "isProgramError", "AccountRole", "upgradeRoleToSigner", "kitIsTransactionSigner", "transformEncoder", "addEncoderSizePrefix", "getUtf8Encoder", "addDecoderSizePrefix", "getUtf8Decoder", "getOptionEncoder", "getOptionDecoder", "require_solana", "exports", "exports", "require_solana", "exports", "allTxIds", "account", "accountInfo", "tokenAccountsInfos", "tokens", "module", "require_network", "exports", "o", "_wrapNativeSuper", "t", "_isNativeReflectConstruct", "e", "NetworkError", "exports", "o", "t", "_isNativeReflectConstruct", "e", "NotFoundError", "exports", "o", "t", "_isNativeReflectConstruct", "e", "BadRequestError", "exports", "o", "t", "_isNativeReflectConstruct", "e", "BadResponseError", "exports", "o", "_wrapNativeSuper", "t", "_isNativeReflectConstruct", "e", "AccountRequiresMemoError", "require_errors", "exports", "require_config", "exports", "o", "r", "config", "Config", "setTimeout", "require_utils", "exports", "o", "Utils", "exports", "module", "SyntaxError", "node", "text", "expected", "found", "err", "line", "column", "exports", "module", "nodes", "err", "path", "exports", "module", "require_types", "exports", "o", "CancelToken", "exports", "module", "exports", "module", "stream", "self", "err", "exports", "module", "exports", "module", "exports", "charset", "path", "extension", "exports", "module", "exports", "module", "err", "exports", "module", "clean", "exports", "module", "require_state", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "require_ref", "exports", "module", "require_syntax", "exports", "module", "require_type", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "isNaN", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "concatty", "slicy", "Empty", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "undefined", "doEval", "stringToPath", "getBaseIntrinsic", "require_shams", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "path", "http", "crypto", "FormData", "err", "exports", "exports", "module", "exports", "module", "URL", "http", "self", "location", "isFunction", "prototype", "hasOwnProperty", "define", "config", "utils", "path", "PlatformFormData", "AxiosError", "encode", "toString", "url", "URLSearchParams", "crypto", "FormData", "platform", "isFormData", "isFileList", "self", "defaults", "AxiosHeaders", "stream", "err", "util", "readBlob", "Readable", "inRange", "isHex", "zlib", "followRedirects", "http2", "location", "proxyFromEnv", "httpAdapter", "callbackify", "EventEmitter", "CanceledError", "data", "formDataToStream", "AxiosTransformStream", "https", "http", "ZlibHeaderTransformStream", "origin", "merge", "signal", "iterator", "done", "ReadableStream", "TextEncoder", "composeSignals", "fetch", "fetchAdapter.getFetch", "adapters", "validators", "validator", "InterceptorManager", "Axios", "CancelToken", "HttpStatusCode", "exports", "exports", "exports", "o", "r", "n", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "Resolver", "err", "exports", "module", "Array", "XdrCompositeType", "constructor", "childType", "length", "_childType", "_length", "read", "reader", "result", "global", "i", "write", "value", "writer", "isArray", "XdrWriterError", "child", "isValid", "encodeBigIntFromBits", "parts", "size", "unsigned", "total", "sliceSize", "RangeError", "BigInt", "valueOf", "e", "TypeError", "asUintN", "asIntN", "min", "max", "calculateBigIntBoundaries", "formatIntName", "sliceBigInt", "iSize", "shift", "precision", "boundary", "Bool", "XdrPrimitiveType", "Int", "XdrReaderError", "intVal", "require", "SimpleReference", "Reference", "name", "resolve", "context", "defn", "definitions", "ArrayReference", "childReference", "variable", "resolvedChild", "XDRTypes", "OptionReference", "SizedReference", "sizedType", "Definition", "cfg", "config", "results", "createTypedef", "typeName", "createConst", "TypeBuilder", "destination", "_destination", "_definitions", "enum", "members", "create", "define", "struct", "union", "typedef", "const", "void", "bool", "int", "hyper", "uint", "uhyper", "float", "double", "quadruple", "string", "opaque", "varOpaque", "array", "varArray", "maxLength", "option", "definition", "undefined", "XdrDefinitionError", "lookup", "Object", "values", "fn", "types", "builder", "Double", "readDoubleBE", "writeDoubleBE", "Enum", "res", "_byValue", "enumName", "JSON", "stringify", "isSerializableIsh", "_members", "fromName", "fromValue", "ChildEnum", "key", "entries", "inst", "message", "XdrNotImplementedDefinitionError", "Float", "readFloatBE", "writeFloatBE", "Hyper", "LargeInt", "args", "low", "Number", "_value", "high", "fromBits", "defineIntBoundaries", "MAX_VALUE", "MIN_VALUE", "readInt32BE", "writeInt32BE", "slice", "toString", "toJSON", "toBigInt", "prototype", "readBigUInt64BE", "from", "reverse", "writeBigUInt64BE", "writeBigInt64BE", "part", "fromString", "Opaque", "Buffer", "isBuffer", "Option", "isPresent", "Quadruple", "XdrReader", "source", "ArrayBuffer", "isView", "_buffer", "_index", "eof", "advance", "padding", "rewind", "subarray", "readUInt32BE", "readBigInt64BE", "ensureInputConsumed", "BUFFER_CHUNK", "XdrWriter", "buffer", "allocUnsafe", "alloc", "resize", "minRequiredSize", "newLength", "Math", "ceil", "newBuffer", "copy", "finalize", "toArray", "offset", "fill", "writeUInt32BE", "bufferChunkSize", "String", "UnsignedInt", "_maxLength", "readString", "byteLength", "Struct", "attributes", "_attributes", "fieldName", "type", "_fields", "structName", "attribute", "fields", "ChildStruct", "mappedFields", "fieldDescriptor", "field", "createAccessorMethod", "readOrWriteAttribute", "Union", "aSwitch", "set", "_switchOn", "_switch", "arm", "armForSwitch", "_arm", "_armType", "Void", "_arms", "get", "armName", "switch", "armType", "member", "_switches", "_defaultArm", "armTypeForArm", "unionName", "ChildUnion", "switchOn", "Map", "defaultArm", "switches", "ctr", "arms", "armsName", "UnsignedHyper", "VarArray", "VarOpaque", "XdrType", "toXDR", "format", "encodeResult", "fromXDR", "input", "decodeInput", "validateXDR", "InvalidXdrEncodingFormatError", "subtype", "hasConstructor", "instance", "ctor", "getPrototypeOf", "__webpack_require__", "exports", "o", "_interopRequireWildcard", "e", "t", "require_xdr", "exports", "exports", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "forEachArray", "forEachString", "forEachObject", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "hasPropertyDescriptors", "exports", "module", "define", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "Buffer", "isView", "require_hash", "exports", "module", "Buffer", "Hash", "require_sha", "exports", "module", "Hash", "Buffer", "exports", "module", "Hash", "Buffer", "require_sha256", "exports", "module", "Hash", "Buffer", "exports", "module", "Hash", "Buffer", "require_sha512", "exports", "module", "Hash", "Buffer", "exports", "module", "Hash", "Buffer", "require_sha", "exports", "module", "exports", "exports", "require_util", "exports", "trimEnd", "require_base32", "exports", "charmap", "require_base32", "exports", "module", "exports", "exports", "o", "StrKey", "err", "exports", "o", "Keypair", "exports", "o", "Asset", "compare", "exports", "exports", "o", "TransactionBase", "require_bignumber", "exports", "exports", "r", "exports", "o", "r", "LiquidityPoolAsset", "exports", "o", "Claimant", "exports", "o", "LiquidityPoolId", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "path", "exports", "path", "require_payment", "exports", "exports", "exports", "exports", "exports", "require_clawback", "exports", "exports", "o", "exports", "exports", "require_address", "exports", "o", "Address", "exports", "r", "exports", "exports", "exports", "exports", "_interopRequireWildcard", "e", "t", "o", "Operation", "path", "getFlagValue", "exports", "o", "Memo", "require_transaction", "exports", "o", "t", "_isNativeReflectConstruct", "e", "Transaction", "err", "exports", "o", "t", "_isNativeReflectConstruct", "e", "FeeBumpTransaction", "exports", "o", "Account", "exports", "o", "MuxedAccount", "exports", "o", "SorobanDataBuilder", "exports", "o", "SignerKey", "exports", "o", "r", "TransactionBuilder", "setTimeout", "require_network", "exports", "exports", "o", "Soroban", "exports", "o", "Contract", "exports", "o", "t", "_isNativeReflectConstruct", "e", "Uint128", "exports", "o", "t", "_isNativeReflectConstruct", "e", "Uint256", "exports", "o", "t", "_isNativeReflectConstruct", "e", "Int128", "exports", "o", "t", "_isNativeReflectConstruct", "e", "Int256", "exports", "o", "XdrLargeInt", "exports", "o", "t", "_isNativeReflectConstruct", "e", "ScInt", "exports", "exports", "r", "o", "err", "require_events", "exports", "o", "r", "exports", "r", "n", "o", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "exports", "o", "r", "require_lib", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "_part", "string", "_URI", "punycode", "path", "q", "p", "exports", "o", "r", "n", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "FederationServer", "require_api", "exports", "exports", "exports", "module", "require_errors", "exports", "o", "_wrapNativeSuper", "t", "_isNativeReflectConstruct", "e", "InvalidChallengeError", "require_utils", "exports", "F", "e", "r", "o", "err", "_loop", "exports", "exports", "exports", "LiquidityPoolType", "OperationResponseType", "OperationResponseTypeI", "TransactionFailedResultCodes", "exports", "EffectType", "exports", "o", "_interopRequireWildcard", "e", "t", "TradeType", "exports", "o", "r", "AccountResponse", "exports", "module", "exports", "o", "exports", "module", "http", "self", "location", "i", "err", "exports", "o", "r", "n", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "CallBuilder", "createTimeout", "err", "onClose", "onMessage", "onError", "exports", "o", "t", "_isNativeReflectConstruct", "e", "AccountCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "AssetsCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "ClaimableBalanceCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "EffectCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "FriendbotBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "LedgerCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "LiquidityPoolCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "OfferCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "OperationCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "OrderbookCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "PaymentCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "StrictReceivePathCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "StrictSendPathCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "TradeAggregationCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "TradesCallBuilder", "exports", "o", "t", "_isNativeReflectConstruct", "e", "TransactionCallBuilder", "require_server", "exports", "_interopRequireWildcard", "e", "t", "o", "r", "n", "i", "c", "u", "f", "d", "p", "_regenerator", "HorizonServer", "config", "exports", "module", "o", "_interopRequireWildcard", "e", "t", "require_api", "exports", "GetTransactionStatus", "require_axios", "exports", "exports", "r", "n", "o", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "exports", "o", "r", "require_transaction", "exports", "require_server", "exports", "_interopRequireWildcard", "e", "t", "o", "r", "n", "i", "c", "u", "f", "d", "p", "_regenerator", "Durability", "BasicSleepStrategy", "LinearSleepStrategy", "RpcServer", "config", "require_rpc", "exports", "module", "exports", "o", "Ok", "Err", "require_types", "exports", "require_utils", "exports", "r", "n", "o", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "read", "exports", "_wrapNativeSuper", "t", "_isNativeReflectConstruct", "e", "o", "r", "n", "i", "c", "u", "f", "d", "p", "_regenerator", "SentTransaction", "Watcher", "exports", "_wrapNativeSuper", "t", "_isNativeReflectConstruct", "e", "o", "r", "F", "n", "i", "c", "u", "f", "d", "p", "_regenerator", "AssembledTransaction", "_loop", "err", "exports", "r", "n", "o", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "basicNodeSigner", "exports", "r", "n", "o", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "Spec", "v", "key", "require_client", "exports", "o", "r", "n", "i", "c", "u", "f", "d", "t", "p", "e", "_regenerator", "Client", "assembleTransaction", "require_contract", "exports", "require_lib", "exports", "module", "o", "_interopRequireWildcard", "e", "t", "exports", "require_stellar", "exports", "module", "exports", "__createBinding", "__importStar", "o", "mod", "exports", "exports", "module", "exports", "module", "require_messages", "exports", "module", "exports", "require_types", "exports", "FirmwareType", "exports", "exports", "exports", "DeviceModelInternal", "exports", "require_models", "exports", "exports", "require_lib", "exports", "exports", "exports", "exports", "require_firmwareUtils", "exports", "exports", "config", "exports", "module", "Buffer", "exports", "module", "exports", "module", "Buffer", "exports", "module", "Buffer", "exports", "module", "Buffer", "crypto", "fromBase64", "toBase64", "timingSafeEqual", "exports", "module", "Buffer", "exports", "module", "Buffer", "exports", "module", "Buffer", "err", "require_jws", "exports", "exports", "path", "exports", "config", "exports", "exports", "require_api", "exports", "require_account", "exports", "exports", "require_coinInfo", "exports", "require_device", "exports", "require_firmware", "exports", "require_settings", "exports", "require_cardano", "exports", "require_bitcoin", "exports", "exports", "require_ripple", "exports", "exports", "exports", "require_solana", "exports", "require_stellar", "exports", "exports", "require_types", "exports", "exports", "require_array", "exports", "exports", "exports", "require_object", "exports", "exports", "require_result", "exports", "err", "exports", "require_utils", "exports", "require_lib", "exports", "exports", "exports", "exports", "require_fees", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "require_changeLanguage", "exports", "exports", "exports", "exports", "require_cipherKeyValue", "exports", "exports", "exports", "exports", "exports", "path", "exports", "exports", "exports", "exports", "exports", "exports", "hexes", "exports", "exports", "exports", "response", "exports", "require_bitcoin", "exports", "exports", "path", "account", "exports", "clean", "exports", "path", "exports", "discovery", "uiResp", "account", "utxo", "path", "exports", "require_discoverAccounts", "exports", "path", "err", "exports", "require_getAccountDescriptor", "exports", "require_getAccountInfo", "exports", "path", "exports", "require_getAddress", "exports", "path", "exports", "exports", "exports", "exports", "exports", "exports", "require_getOwnershipId", "exports", "exports", "require_getOwnershipProof", "exports", "exports", "require_getPublicKey", "exports", "exports", "require_pushTransaction", "exports", "require_pushTransaction", "exports", "exports", "require_recoveryDevice", "exports", "exports", "require_requestLogin", "exports", "exports", "path", "exports", "path", "exports", "exports", "exports", "exports", "exports", "path", "exports", "exports", "exports", "exports", "require_unlockPath", "exports", "path", "exports", "exports", "require_pairing", "exports", "selectedMethod", "exports", "require_thp", "exports", "exports", "exports", "exports", "exports", "require_api", "exports", "require_method", "exports", "module", "exports", "exports", "path", "exports", "exports", "exports", "require_firmware", "exports", "exports", "log", "path", "require_utils", "exports", "err", "exports", "config", "require_types", "exports", "require_lib", "exports", "require_events", "exports", "require_constants", "exports", "EventType", "require_lib", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "path", "exports", "require_debug", "exports", "exports", "error", "res", "err", "exports", "exports", "exports", "path", "exports", "require_handshake", "exports", "exports", "exports", "err", "response", "require", "path", "exports", "exports", "err", "exports", "exports", "add", "path", "exports", "exports", "exports", "exports", "exports", "exports", "require_core", "exports", "path", "exports", "exports", "require_lib", "exports", "TrezorConnect", "process", "process", "config", "config", "getWallet", "defineChain", "log", "config", "config", "getViemAccount", "import_connect", "TrezorConnect", "import_connect", "toHex", "path", "toHex", "TrezorConnect", "path", "TrezorConnect"] } diff --git a/dist/types/hardhat.config.d.ts b/dist/types/hardhat.config.d.ts index 9f129ca..8fee9bd 100644 --- a/dist/types/hardhat.config.d.ts +++ b/dist/types/hardhat.config.d.ts @@ -1,5 +1,4 @@ import '@chainlink/hardhat-chainlink'; -import '@nomicfoundation/hardhat-ethers'; import '@typechain/hardhat'; import 'hardhat-deploy'; import 'hardhat-deploy-ethers'; diff --git a/dist/types/src/constants/conceroNetworks.d.ts b/dist/types/src/constants/conceroNetworks.d.ts new file mode 100644 index 0000000..38bf5f7 --- /dev/null +++ b/dist/types/src/constants/conceroNetworks.d.ts @@ -0,0 +1,8 @@ +import mainnetChains from '@concero/concero-networks/output/chains.mainnet.json'; +import testnetChains from '@concero/concero-networks/output/chains.testnet.json'; +import { type ConceroNetwork } from '../types'; +export type ConceroMainnetNetworkNames = (typeof mainnetChains)[keyof typeof mainnetChains]['name']; +export type ConceroTestnetNetworkNames = (typeof testnetChains)[keyof typeof testnetChains]['name']; +export declare const testnetNetworks: Record; +export declare const mainnetNetworks: Record; +export declare const conceroNetworks: Record; diff --git a/dist/types/src/deploy/GenericDeploy.d.ts b/dist/types/src/deploy/GenericDeploy.d.ts new file mode 100644 index 0000000..cb3a876 --- /dev/null +++ b/dist/types/src/deploy/GenericDeploy.d.ts @@ -0,0 +1,20 @@ +import { TransactionReceipt } from 'ethers'; +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import type { WaitForTransactionReceiptReturnType } from 'viem/actions/public/waitForTransactionReceipt'; +export interface ITxParams { + gasLimit: bigint; + libraries: Record; +} +export interface IDeployResult { + address: string; + chainType: string; + chainName: string; + chainId: number; + receipt: TransactionReceipt | WaitForTransactionReceiptReturnType; +} +export interface IGenericDeployParams { + hre: HardhatRuntimeEnvironment; + contractName: string; + txParams?: Partial; +} +export declare const genericDeploy: ({ hre, contractName, txParams }: IGenericDeployParams, ...contractConstructorArgs: any[]) => Promise; diff --git a/dist/types/src/deploy/hardhatDeployWrapper.d.ts b/dist/types/src/deploy/hardhatDeployWrapper.d.ts deleted file mode 100644 index 689d019..0000000 --- a/dist/types/src/deploy/hardhatDeployWrapper.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Deployment } from 'hardhat-deploy/types'; -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { PublicClient } from 'viem'; -type HardhatDeployWrapperArgs = { - hre: HardhatRuntimeEnvironment; - args: any[]; - publicClient: PublicClient; - proxy?: boolean; - gasLimit?: number; - log?: boolean; - libraries?: { - [key: string]: `0x${string}`; - }; - skipIfAlreadyDeployed: boolean; -}; -export declare function hardhatDeployWrapper(contractName: string, { hre, args, publicClient, proxy, gasLimit, log, libraries, skipIfAlreadyDeployed, }: HardhatDeployWrapperArgs): Promise; -export {}; diff --git a/dist/types/src/index.d.ts b/dist/types/src/index.d.ts index c12623e..a731b94 100644 --- a/dist/types/src/index.d.ts +++ b/dist/types/src/index.d.ts @@ -1,6 +1,8 @@ -import { config } from './constants/config'; -import { getNetworkEnvKey, getNetworkKey, networkTypes, type ConceroNetwork, type NetworkType } from './networks'; -import { TokenSender } from './tokens/TokenSender'; -import { hardhatDeployWrapper } from './deploy/hardhatDeployWrapper'; -export { ConceroNetwork, config, getNetworkEnvKey, getNetworkKey, networkTypes, TokenSender, hardhatDeployWrapper, }; -export type { NetworkType }; +export * from './types'; +export * from './utils'; +export * from './networks'; +export { conceroNetworks, mainnetNetworks, testnetNetworks, type ConceroMainnetNetworkNames, type ConceroTestnetNetworkNames, } from './constants/conceroNetworks'; +export { config } from './constants/config'; +export { genericDeploy, type IDeployResult, type IGenericDeployParams, type ITxParams } from './deploy/GenericDeploy'; +export { TokenSender } from './tokens/TokenSender'; +export * from './trezor'; diff --git a/dist/types/src/networks/index.d.ts b/dist/types/src/networks/index.d.ts index 71551d0..b5fd3b5 100644 --- a/dist/types/src/networks/index.d.ts +++ b/dist/types/src/networks/index.d.ts @@ -1,5 +1,2 @@ -import { getNetworkEnvKey, getNetworkKey } from './getNetworkEnvKey'; -import { networkTypes } from './networkTypes'; -import { type ConceroNetwork, type NetworkType } from './types'; -export { getNetworkEnvKey, getNetworkKey, networkTypes }; -export type { ConceroNetwork, NetworkType }; +export { getNetworkEnvKey, getNetworkKey } from './getNetworkEnvKey'; +export { networkTypes, type ConceroNetwork, type NetworkType } from '../types'; diff --git a/dist/types/src/networks/types.d.ts b/dist/types/src/networks/types.d.ts deleted file mode 100644 index 54d741f..0000000 --- a/dist/types/src/networks/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Chain } from 'viem'; -export type NetworkType = 'mainnet' | 'testnet' | 'localhost'; -export type ConceroNetwork = { - name: string; - type: NetworkType; - chainId: number; - chainSelector: number; - confirmations: number; - viemChain: Chain; -}; diff --git a/dist/types/src/trezor/getTrezorAddress.d.ts b/dist/types/src/trezor/getTrezorAddress.d.ts new file mode 100644 index 0000000..ab3fd74 --- /dev/null +++ b/dist/types/src/trezor/getTrezorAddress.d.ts @@ -0,0 +1,3 @@ +import { Address } from 'viem'; +import { ITrezorParams } from './trezorSendTx'; +export declare const getTrezorAddress: (path?: ITrezorParams["path"]) => Promise
; diff --git a/dist/types/src/trezor/index.d.ts b/dist/types/src/trezor/index.d.ts new file mode 100644 index 0000000..1b1d507 --- /dev/null +++ b/dist/types/src/trezor/index.d.ts @@ -0,0 +1,4 @@ +export * from './getTrezorAddress'; +export * from './trezorDeployContract'; +export * from './trezorSendTx'; +export * from './trezorWriteContract'; diff --git a/dist/types/src/trezor/initTrezorOnce.d.ts b/dist/types/src/trezor/initTrezorOnce.d.ts new file mode 100644 index 0000000..7e899e9 --- /dev/null +++ b/dist/types/src/trezor/initTrezorOnce.d.ts @@ -0,0 +1 @@ +export declare function initTrezorOnce(): Promise; diff --git a/dist/types/src/trezor/trezorDeployContract.d.ts b/dist/types/src/trezor/trezorDeployContract.d.ts new file mode 100644 index 0000000..3de5c7c --- /dev/null +++ b/dist/types/src/trezor/trezorDeployContract.d.ts @@ -0,0 +1,11 @@ +import type { Abi, Address, Hash, Hex } from 'viem'; +import { ITrezorTxParams, ITrezorViemParams, type ITrezorParams } from './trezorSendTx'; +export interface ITrezorDeployParams extends Omit { + abi: Abi; + bytecode: Hex; + args?: readonly unknown[]; +} +export declare function trezorDeployContract(viemParams: ITrezorViemParams, deployParams: ITrezorDeployParams, trezorParams?: ITrezorParams): Promise<{ + hash: Hash; + contractAddress: Address; +}>; diff --git a/dist/types/src/trezor/trezorSendTx.d.ts b/dist/types/src/trezor/trezorSendTx.d.ts new file mode 100644 index 0000000..d9d8ff7 --- /dev/null +++ b/dist/types/src/trezor/trezorSendTx.d.ts @@ -0,0 +1,21 @@ +import type { Address, Hash, Hex, PublicClient } from 'viem'; +export declare const defaultTrezorPath = "m/44'/60'/0'/0/0"; +export interface ITrezorViemParams { + publicClient: PublicClient; +} +export interface ITrezorParams { + path: string | number[]; + showFromAddressOnTrezor?: boolean; + forceLegacy?: boolean; +} +export interface ITrezorTxParams { + to?: Address; + value?: bigint; + data?: Hex; + gas?: bigint; + nonce?: number; + gasPrice?: bigint; + maxFeePerGas?: bigint; + maxPriorityFeePerGas?: bigint; +} +export declare function trezorSendTx(viemParams: ITrezorViemParams, txParams: ITrezorTxParams, trezorPrams?: ITrezorParams): Promise; diff --git a/dist/types/src/trezor/trezorWriteContract.d.ts b/dist/types/src/trezor/trezorWriteContract.d.ts new file mode 100644 index 0000000..f3b85f1 --- /dev/null +++ b/dist/types/src/trezor/trezorWriteContract.d.ts @@ -0,0 +1,9 @@ +import { Abi, Address, Hash } from 'viem'; +import { ITrezorParams, ITrezorTxParams, ITrezorViemParams } from './trezorSendTx'; +export interface ITrezorWriteContractParams extends Omit { + address: Address; + abi: Abi; + functionName: string; + args?: readonly unknown[]; +} +export declare function trezorWriteContract(viemParams: ITrezorViemParams, writeContractParams: ITrezorWriteContractParams, trezorParams: ITrezorParams): Promise; diff --git a/dist/types/src/types/ConceroNetwork.d.ts b/dist/types/src/types/ConceroNetwork.d.ts new file mode 100644 index 0000000..e947f3b --- /dev/null +++ b/dist/types/src/types/ConceroNetwork.d.ts @@ -0,0 +1,41 @@ +import { Chain } from 'viem'; +export type NetworkType = 'mainnet' | 'testnet' | 'localhost'; +export type ConceroNetworkNames = string; +export type ConceroNetwork = { + chainId: number; + name: string; + type: NetworkType; + chainSelector: bigint; + accounts?: string[]; + viemChain: Chain; + confirmations: number; + url: string; + rpcUrls: string[]; + saveDeployments?: boolean; + trezorDerivationPaths?: number[][]; + trezorInsecureDerivation?: boolean; +}; +export interface ChainDefinition { + id: number; + name: string; + rpcUrls: string[]; + blockExplorer?: { + name: string; + url: string; + }; + isTestnet: boolean; +} +export type ConceroLocalNetwork = ConceroNetwork & { + saveDeployments?: boolean; + forking?: { + url: string; + enabled: boolean; + blockNumber?: number; + }; +}; +export type ConceroHardhatNetwork = Omit & { + accounts: Array<{ + privateKey: string; + balance: string; + }>; +}; diff --git a/dist/types/src/types/index.d.ts b/dist/types/src/types/index.d.ts new file mode 100644 index 0000000..64441be --- /dev/null +++ b/dist/types/src/types/index.d.ts @@ -0,0 +1,2 @@ +export { type NetworkType, type ConceroNetwork, type ConceroNetworkNames, type ChainDefinition, type ConceroLocalNetwork, type ConceroHardhatNetwork, } from './ConceroNetwork'; +export { networkTypes } from './networkTypes'; diff --git a/dist/types/src/networks/networkTypes.d.ts b/dist/types/src/types/networkTypes.d.ts similarity index 56% rename from dist/types/src/networks/networkTypes.d.ts rename to dist/types/src/types/networkTypes.d.ts index 5ef7d0a..5f173ee 100644 --- a/dist/types/src/networks/networkTypes.d.ts +++ b/dist/types/src/types/networkTypes.d.ts @@ -1,2 +1,2 @@ -import { type NetworkType } from './types'; +import { type NetworkType } from './ConceroNetwork'; export declare const networkTypes: Record; diff --git a/dist/types/src/utils/compileContracts.d.ts b/dist/types/src/utils/compileContracts.d.ts new file mode 100644 index 0000000..8463b24 --- /dev/null +++ b/dist/types/src/utils/compileContracts.d.ts @@ -0,0 +1,9 @@ +interface HardhatCompileParams { + concurrency?: number; + force?: boolean; + noSizeContracts?: boolean; + noTypechain?: boolean; + quiet?: boolean; +} +export declare function compileContracts({ quiet, force }: HardhatCompileParams): void; +export {}; diff --git a/dist/types/src/utils/createEnvUpdater.d.ts b/dist/types/src/utils/createEnvUpdater.d.ts new file mode 100644 index 0000000..e65a8bd --- /dev/null +++ b/dist/types/src/utils/createEnvUpdater.d.ts @@ -0,0 +1,8 @@ +export interface EnvUpdaterConfig> { + prefixes: TPrefixes; + basePath: string; +} +export declare function createEnvUpdater, TEnvFileName extends string>(config: EnvUpdaterConfig): { + updateEnvVariable: (key: string, newValue: string, envFileName: TEnvFileName) => void; + updateEnvAddress: (prefix: keyof TPrefixes, newValue: string, envFileName: TEnvFileName, networkPostfix?: string) => void; +}; diff --git a/dist/types/src/utils/createViemChain.d.ts b/dist/types/src/utils/createViemChain.d.ts new file mode 100644 index 0000000..0b09564 --- /dev/null +++ b/dist/types/src/utils/createViemChain.d.ts @@ -0,0 +1,3 @@ +import { defineChain } from 'viem'; +import { type ChainDefinition } from '../types'; +export declare function createViemChain(chainDefinition: ChainDefinition): ReturnType; diff --git a/dist/types/src/utils/createWalletGetter.d.ts b/dist/types/src/utils/createWalletGetter.d.ts new file mode 100644 index 0000000..ae6dca5 --- /dev/null +++ b/dist/types/src/utils/createWalletGetter.d.ts @@ -0,0 +1,13 @@ +import { type NetworkType } from '../types'; +export interface BaseAccountTypePrefixes extends Record { + proxyDeployer: 'PROXY_DEPLOYER'; + deployer: 'DEPLOYER'; +} +export declare const baseAccountTypePrefixes: BaseAccountTypePrefixes; +export interface WalletGetterConfig> { + accountTypePrefixes: TPrefixes; +} +export declare function createWalletGetter>(config: WalletGetterConfig): { + getWallet: (chainType: NetworkType, accountType: keyof TPrefixes, walletType: "privateKey" | "address") => string | undefined; +}; +export declare const getWallet: (chainType: NetworkType, accountType: keyof BaseAccountTypePrefixes, walletType: "privateKey" | "address") => string | undefined; diff --git a/dist/types/src/utils/ethersSignerCallContract.d.ts b/dist/types/src/utils/ethersSignerCallContract.d.ts new file mode 100644 index 0000000..b3e606f --- /dev/null +++ b/dist/types/src/utils/ethersSignerCallContract.d.ts @@ -0,0 +1,3 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { Address } from "viem"; +export declare const ethersSignerCallContract: (hre: HardhatRuntimeEnvironment, contract: Address, abi: any[], functionName: string, ...functionArgs: any[]) => Promise<`0x${string}`>; diff --git a/dist/types/src/utils/extractProxyAdminAddress.d.ts b/dist/types/src/utils/extractProxyAdminAddress.d.ts new file mode 100644 index 0000000..4bb59c4 --- /dev/null +++ b/dist/types/src/utils/extractProxyAdminAddress.d.ts @@ -0,0 +1,2 @@ +import { IDeployResult } from '../deploy/GenericDeploy'; +export declare function extractProxyAdminAddress(receipt: IDeployResult['receipt'] | null): string; diff --git a/dist/types/src/utils/formatting.d.ts b/dist/types/src/utils/formatting.d.ts new file mode 100644 index 0000000..e740890 --- /dev/null +++ b/dist/types/src/utils/formatting.d.ts @@ -0,0 +1,3 @@ +import { type Address } from "viem"; +export declare function shorten(address: Address): string; +export declare function formatGas(gasAmountWei: bigint): string; diff --git a/dist/types/src/deploy/getActualGasData.d.ts b/dist/types/src/utils/getActualGasData.d.ts similarity index 100% rename from dist/types/src/deploy/getActualGasData.d.ts rename to dist/types/src/utils/getActualGasData.d.ts diff --git a/dist/types/src/utils/getEnvVar.d.ts b/dist/types/src/utils/getEnvVar.d.ts new file mode 100644 index 0000000..c1a70f5 --- /dev/null +++ b/dist/types/src/utils/getEnvVar.d.ts @@ -0,0 +1,8 @@ +import { Address } from 'viem'; +export declare function getEnvVar(key: string, defaultValue?: string): string; +export interface EnvAddressConfig> { + prefixes: TPrefixes; +} +export declare function createEnvAddressGetter>(config: EnvAddressConfig): { + getEnvAddress: (prefix: keyof TPrefixes, networkName?: string) => [Address, string]; +}; diff --git a/dist/types/src/utils/getGasParameters.d.ts b/dist/types/src/utils/getGasParameters.d.ts new file mode 100644 index 0000000..b3b9f23 --- /dev/null +++ b/dist/types/src/utils/getGasParameters.d.ts @@ -0,0 +1,14 @@ +import { ConceroNetwork } from "../types/ConceroNetwork"; +interface GasParameters { + maxFeePerGas: bigint; + maxPriorityFeePerGas: bigint; +} +/** + * Gets optimized gas parameters for priority transaction processing + * @param chain - The network configuration + * @param priorityMultiplier - Multiplier for maxPriorityFeePerGas (default: 2) + * @param maxFeeMultiplier - Multiplier for maxFeePerGas buffer (default: 2) + * @returns GasParameters object containing maxFeePerGas and maxPriorityFeePerGas + */ +export declare function getGasParameters(chain: ConceroNetwork, priorityMultiplier?: number, maxFeeMultiplier?: number): Promise; +export {}; diff --git a/dist/types/src/utils/getTrezorDeployEnabled.d.ts b/dist/types/src/utils/getTrezorDeployEnabled.d.ts new file mode 100644 index 0000000..babec9a --- /dev/null +++ b/dist/types/src/utils/getTrezorDeployEnabled.d.ts @@ -0,0 +1 @@ +export declare const getTrezorDeployEnabled: () => boolean; diff --git a/dist/types/src/utils/getViemClients.d.ts b/dist/types/src/utils/getViemClients.d.ts new file mode 100644 index 0000000..0524e9c --- /dev/null +++ b/dist/types/src/utils/getViemClients.d.ts @@ -0,0 +1,59 @@ +import { Chain, type PublicClient, type TestClient, type WalletClient } from 'viem'; +import { type PrivateKeyAccount } from 'viem/accounts'; +import { type ConceroNetwork, type NetworkType } from '../types'; +import { type BaseAccountTypePrefixes } from '../utils'; +declare function getClients(viemChain: Chain, url: string | undefined, account?: PrivateKeyAccount): { + walletClient: WalletClient; + publicClient: PublicClient; + account: PrivateKeyAccount; +}; +export type ExtendedTestClient = TestClient & WalletClient & PublicClient; +declare function getTestClient(account: PrivateKeyAccount): ExtendedTestClient; +declare function getFallbackClients(chain: ConceroNetwork, account?: PrivateKeyAccount): { + walletClient: WalletClient; + publicClient: PublicClient; + account: PrivateKeyAccount; +}; +declare function getViemAccount(chainType: NetworkType, accountType: keyof BaseAccountTypePrefixes): { + address: import("viem").Address; + nonceManager?: import("viem").NonceManager | undefined; + sign: (parameters: { + hash: import("viem").Hash; + }) => Promise; + signAuthorization: (parameters: import("viem/_types/types/authorization").AuthorizationRequest) => Promise; + signMessage: ({ message }: { + message: import("viem").SignableMessage; + }) => Promise; + signTransaction: = import("viem").SerializeTransactionFn, transaction extends Parameters[0] = Parameters[0]>(transaction: transaction, options?: { + serializer?: serializer | undefined; + } | undefined) => Promise>, import("viem").Hex> extends true ? import("viem").TransactionSerialized> : import("viem").Hex>; + signTypedData: , primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: import("viem").TypedDataDefinition) => Promise; + publicKey: import("viem").Hex; + source: "privateKey"; + type: "local"; +}; +export interface ViemAccountGetterConfig> { + accountTypePrefixes: TPrefixes; + getWallet: (chainType: NetworkType, accountType: keyof TPrefixes, walletType: 'privateKey' | 'address') => string | undefined; +} +export declare function createViemAccountGetter>(config: ViemAccountGetterConfig): { + getViemAccount: (chainType: NetworkType, accountType: keyof TPrefixes) => { + address: import("viem").Address; + nonceManager?: import("viem").NonceManager | undefined; + sign: (parameters: { + hash: import("viem").Hash; + }) => Promise; + signAuthorization: (parameters: import("viem/_types/types/authorization").AuthorizationRequest) => Promise; + signMessage: ({ message }: { + message: import("viem").SignableMessage; + }) => Promise; + signTransaction: = import("viem").SerializeTransactionFn, transaction extends Parameters[0] = Parameters[0]>(transaction: transaction, options?: { + serializer?: serializer | undefined; + } | undefined) => Promise>, import("viem").Hex> extends true ? import("viem").TransactionSerialized> : import("viem").Hex>; + signTypedData: , primaryType extends keyof typedData | "EIP712Domain" = keyof typedData>(parameters: import("viem").TypedDataDefinition) => Promise; + publicKey: import("viem").Hex; + source: "privateKey"; + type: "local"; + }; +}; +export { getClients, getFallbackClients, getTestClient, getViemAccount }; diff --git a/dist/types/src/utils/getWallet.d.ts b/dist/types/src/utils/getWallet.d.ts new file mode 100644 index 0000000..9d342c2 --- /dev/null +++ b/dist/types/src/utils/getWallet.d.ts @@ -0,0 +1 @@ +export { getWallet, createWalletGetter, baseAccountTypePrefixes, type BaseAccountTypePrefixes, type WalletGetterConfig } from './createWalletGetter'; diff --git a/dist/types/src/utils/index.d.ts b/dist/types/src/utils/index.d.ts new file mode 100644 index 0000000..0ae7d7e --- /dev/null +++ b/dist/types/src/utils/index.d.ts @@ -0,0 +1,14 @@ +export { createViemChain } from './createViemChain'; +export { getEnvVar, createEnvAddressGetter } from './getEnvVar'; +export { getTrezorDeployEnabled } from './getTrezorDeployEnabled'; +export { getWallet, createWalletGetter, baseAccountTypePrefixes, type BaseAccountTypePrefixes, type WalletGetterConfig } from './getWallet'; +export { err, log, warn } from './log'; +export { shorten, formatGas } from './formatting'; +export { ethersSignerCallContract } from './ethersSignerCallContract'; +export { compileContracts } from './compileContracts'; +export { localhostViemChain } from './localhostViemChain'; +export { extractProxyAdminAddress } from './extractProxyAdminAddress'; +export { createEnvUpdater, type EnvUpdaterConfig } from './createEnvUpdater'; +export { getActualGasData } from './getActualGasData'; +export { getGasParameters } from './getGasParameters'; +export { getClients, getFallbackClients, getTestClient, getViemAccount, createViemAccountGetter, type ExtendedTestClient, type ViemAccountGetterConfig, } from './getViemClients'; diff --git a/dist/types/src/utils/localhostViemChain.d.ts b/dist/types/src/utils/localhostViemChain.d.ts new file mode 100644 index 0000000..02239c8 --- /dev/null +++ b/dist/types/src/utils/localhostViemChain.d.ts @@ -0,0 +1,82 @@ +export declare const localhostViemChain: { + blockExplorers?: { + [key: string]: { + name: string; + url: string; + apiUrl?: string | undefined; + }; + default: { + name: string; + url: string; + apiUrl?: string | undefined; + }; + } | undefined | undefined; + contracts?: { + [x: string]: import("viem").ChainContract | { + [sourceId: number]: import("viem").ChainContract | undefined; + } | undefined; + ensRegistry?: import("viem").ChainContract | undefined; + ensUniversalResolver?: import("viem").ChainContract | undefined; + multicall3?: import("viem").ChainContract | undefined; + universalSignatureVerifier?: import("viem").ChainContract | undefined; + } | undefined; + id: number; + name: "localhost"; + nativeCurrency: { + readonly decimals: 18; + readonly name: "eth"; + readonly symbol: "eth"; + }; + rpcUrls: { + readonly default: { + readonly http: readonly [string]; + }; + }; + sourceId?: number | undefined | undefined; + testnet: true; + custom?: Record | undefined; + fees?: import("viem").ChainFees | undefined; + formatters?: undefined; + serializers?: import("viem").ChainSerializers | undefined; +}; +export declare const hardhatViemChain: { + blockExplorers?: { + [key: string]: { + name: string; + url: string; + apiUrl?: string | undefined; + }; + default: { + name: string; + url: string; + apiUrl?: string | undefined; + }; + } | undefined | undefined; + contracts?: { + [x: string]: import("viem").ChainContract | { + [sourceId: number]: import("viem").ChainContract | undefined; + } | undefined; + ensRegistry?: import("viem").ChainContract | undefined; + ensUniversalResolver?: import("viem").ChainContract | undefined; + multicall3?: import("viem").ChainContract | undefined; + universalSignatureVerifier?: import("viem").ChainContract | undefined; + } | undefined; + id: number; + name: "hardhat"; + nativeCurrency: { + readonly decimals: 18; + readonly name: "eth"; + readonly symbol: "eth"; + }; + rpcUrls: { + readonly default: { + readonly http: readonly [string]; + }; + }; + sourceId?: number | undefined | undefined; + testnet: true; + custom?: Record | undefined; + fees?: import("viem").ChainFees | undefined; + formatters?: undefined; + serializers?: import("viem").ChainSerializers | undefined; +}; diff --git a/dist/types/src/utils/log.d.ts b/dist/types/src/utils/log.d.ts new file mode 100644 index 0000000..00fcabc --- /dev/null +++ b/dist/types/src/utils/log.d.ts @@ -0,0 +1,4 @@ +export declare function log(message: any, functionName: string, networkName?: string): void; +export declare function warn(message: any, functionName: string): void; +export declare function err(message: any, functionName: string, networkName?: string): void; +export default log; diff --git a/hardhat.config.ts b/hardhat.config.ts index 9f129ca..8fee9bd 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,5 +1,4 @@ import '@chainlink/hardhat-chainlink'; -import '@nomicfoundation/hardhat-ethers'; import '@typechain/hardhat'; import 'hardhat-deploy'; import 'hardhat-deploy-ethers'; diff --git a/hardhat.d.ts b/hardhat.d.ts new file mode 100644 index 0000000..72747b4 --- /dev/null +++ b/hardhat.d.ts @@ -0,0 +1,9 @@ +import 'hardhat/types/runtime'; + +declare module 'hardhat/types/runtime' { + interface HardhatRuntimeEnvironment { + tenderly?: { + verify(params: { name: string; address: string }): Promise; + }; + } +} diff --git a/package.json b/package.json index 7310e20..8954f98 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,9 @@ "types": "./dist/types/src/index.d.ts", "require": "./dist/index.cjs.js", "import": "./dist/index.esm.js" + }, + "./types": { + "types": "./dist/types/src/types/index.d.ts" } }, "files": [ @@ -29,8 +32,8 @@ "node": ">=18" }, "scripts": { - "build:cjs": "esbuild ./src/index.ts --bundle --platform=node --format=cjs --sourcemap --outfile=dist/index.cjs.js", - "build:esm": "esbuild ./src/index.ts --bundle --platform=node --format=esm --sourcemap --outfile=dist/index.esm.js", + "build:cjs": "esbuild ./src/index.ts --bundle --platform=node --format=cjs --sourcemap --external:viem --external:ethers --external:hardhat --external:hardhat-deploy --external:@concero/concero-networks --external:usb --external:@trezor/connect --outfile=dist/index.cjs.js", + "build:esm": "esbuild ./src/index.ts --bundle --platform=node --format=esm --sourcemap --external:viem --external:ethers --external:hardhat --external:hardhat-deploy --external:@concero/concero-networks --outfile=dist/index.esm.js", "build": "npm run build:types && npm run build:cjs && npm run build:esm", "build:types": "tsc --project tsconfig.json", "lint": "eslint --config .eslint.config.mjs", @@ -38,12 +41,21 @@ "check-updates": "npx npm-check-updates" }, "peerDependencies": { - "hardhat": "^2.17.0", - "viem": "^2.24.0" + "ethers": "6.14.0", + "hardhat": "2.17.0", + "viem": "2.24.0", + "@trezor/connect": "9.7.1" + }, + "peerDependenciesMeta": { + "@tenderly/hardhat-tenderly": { + "optional": true + }, + "@trezor/connect": { + "optional": true + } }, "devDependencies": { "@chainlink/hardhat-chainlink": "0.0.4", - "@nomicfoundation/hardhat-toolbox": "^6.1.0", "@typechain/hardhat": "9.1.0", "@types/node": "*", "@types/prettier": "3.0.0", @@ -55,14 +67,17 @@ "eslint-plugin-prettier": "5.2.6", "ethers": "6.13.4", "hardhat": "2.17.4", - "hardhat-deploy": "^1.0.4", + "hardhat-deploy": "1.0.4", "hardhat-deploy-ethers": "0.4.2", "husky": "9.1.7", "prettier": "3.5.3", "prettier-plugin-jsdoc": "1.3.2", "prettier-plugin-organize-imports": "4.1.0", "typescript": "5.8.3", + "@trezor/connect": "9.7.1", "viem": "2.24.2" }, - "dependencies": {} + "dependencies": { + "@concero/concero-networks": "https://github.com/concero/concero-networks" + } } diff --git a/src/constants/conceroNetworks.ts b/src/constants/conceroNetworks.ts new file mode 100644 index 0000000..260a105 --- /dev/null +++ b/src/constants/conceroNetworks.ts @@ -0,0 +1,77 @@ +import mainnetChains from '@concero/concero-networks/output/chains.mainnet.json'; +import testnetChains from '@concero/concero-networks/output/chains.testnet.json'; +import type { Chain } from '@concero/concero-networks/src/types'; + +import { type ChainDefinition, type ConceroNetwork, type NetworkType, networkTypes } from '../types'; +import { createViemChain, getWallet } from '../utils'; + +const mainnetProxyDeployerPK = getWallet('mainnet', 'proxyDeployer', 'privateKey'); +const testnetProxyDeployerPK = getWallet('testnet', 'proxyDeployer', 'privateKey'); + +const mainnetDeployerPK = getWallet('mainnet', 'deployer', 'privateKey'); +const testnetDeployerPK = getWallet('testnet', 'deployer', 'privateKey'); + +const testnetAccounts = [testnetDeployerPK, testnetProxyDeployerPK]; + +export type ConceroMainnetNetworkNames = (typeof mainnetChains)[keyof typeof mainnetChains]['name']; +export type ConceroTestnetNetworkNames = (typeof testnetChains)[keyof typeof testnetChains]['name']; + +function createExtendedNetworks>( + chains: T, + networkType: NetworkType, + accounts: (string | undefined)[] +): Record { + const validAccounts = accounts.filter((acc): acc is string => !!acc); + + return Object.fromEntries( + Object.values(chains).map((chain) => { + const chainDefinition: ChainDefinition = { + id: parseInt(chain.id), + name: chain.name, + rpcUrls: chain.rpcUrls, + isTestnet: chain.isTestnet ?? false, + ...(chain.blockExplorers?.[0] && { + blockExplorer: { + name: chain.blockExplorers[0].name, + url: chain.blockExplorers[0].url, + }, + }), + }; + + const viemChain = createViemChain(chainDefinition); + + return [ + chain.name, + { + name: chain.name, + chainId: parseInt(chain.id), + type: networkType, + url: chain.rpcUrls[0] || '', + rpcUrls: chain.rpcUrls, + saveDeployments: false, + accounts: validAccounts, + chainSelector: BigInt(chain.chainSelector), + confirmations: 1, + viemChain, + }, + ]; + }) + ) as Record; +} + +export const testnetNetworks = createExtendedNetworks( + testnetChains as unknown as Record, + networkTypes.testnet, + testnetAccounts +); + +export const mainnetNetworks = createExtendedNetworks( + mainnetChains as unknown as Record, + networkTypes.mainnet, + [mainnetDeployerPK, mainnetProxyDeployerPK] +); + +export const conceroNetworks: Record = { + ...testnetNetworks, + ...mainnetNetworks, +}; diff --git a/src/deploy/GenericDeploy.ts b/src/deploy/GenericDeploy.ts new file mode 100644 index 0000000..2ad98c1 --- /dev/null +++ b/src/deploy/GenericDeploy.ts @@ -0,0 +1,92 @@ +import { TransactionReceipt } from 'ethers'; +import { HardhatRuntimeEnvironment } from 'hardhat/types'; + +import { Hex } from 'viem'; +import type { WaitForTransactionReceiptReturnType } from 'viem/actions/public/waitForTransactionReceipt'; +import { conceroNetworks } from '../constants/conceroNetworks'; +import { trezorDeployContract } from '../trezor'; +import { getFallbackClients, getTrezorDeployEnabled, log } from '../utils'; + +export interface ITxParams { + gasLimit: bigint; + libraries: Record; +} + +export interface IDeployResult { + address: string; + chainType: string; + chainName: string; + chainId: number; + receipt: TransactionReceipt | WaitForTransactionReceiptReturnType; +} + +export interface IGenericDeployParams { + hre: HardhatRuntimeEnvironment; + contractName: string; + txParams?: Partial; +} + +export const genericDeploy = async ( + { hre, contractName, txParams }: IGenericDeployParams, + ...contractConstructorArgs: any[] +): Promise => { + const [deployer] = await hre.ethers.getSigners(); + + const chain = conceroNetworks[hre.network.name]; + const isTrezorDeployEnabled = getTrezorDeployEnabled(); + + log(`isTrezorDeployEnabled: ${isTrezorDeployEnabled}`, 'genericDeploy'); + + const contractFactory = await hre.ethers.getContractFactory(contractName, { + libraries: txParams?.libraries, + }); + + const deployOverrides = txParams?.gasLimit ? { gasLimit: txParams.gasLimit } : {}; + + let deploymentAddress; + let receipt; + + if (isTrezorDeployEnabled) { + const { publicClient } = getFallbackClients(chain); + const tx = await trezorDeployContract( + { publicClient }, + { + args: contractConstructorArgs, + abi: hre.artifacts.readArtifactSync(contractName).abi, + bytecode: contractFactory.bytecode as Hex, + gas: deployOverrides.gasLimit, + } + ); + + deploymentAddress = tx.contractAddress; + receipt = await publicClient.waitForTransactionReceipt({ hash: tx.hash }); + if (receipt.status !== 'success') throw new Error(`Deploy transaction reverted ${tx.hash}`); + } else { + log(`Deploy ${contractName} from address: ${await deployer.getAddress()}`, 'genericDeploy', chain.name); + + const contract = await contractFactory.deploy(...contractConstructorArgs, deployOverrides); + receipt = await contract.deploymentTransaction()?.wait(); + deploymentAddress = await contract.getAddress(); + } + + if (hre.tenderly) { + try { + await hre.tenderly.verify({ + name: contractName, + address: deploymentAddress, + }); + } catch (e) { + console.error(JSON.stringify(e)); + } + } + + log(`Deployed at: ${deploymentAddress}`, `deploy ${contractName}`, chain.name); + + return { + address: deploymentAddress, + chainName: chain.name, + chainType: chain.type, + chainId: chain.chainId, + receipt, + }; +}; diff --git a/src/deploy/hardhatDeployWrapper.ts b/src/deploy/hardhatDeployWrapper.ts deleted file mode 100644 index 0443886..0000000 --- a/src/deploy/hardhatDeployWrapper.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { Deployment } from 'hardhat-deploy/types'; -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { PublicClient } from 'viem'; -import { getActualGasData } from './getActualGasData'; - -type HardhatDeployWrapperArgs = { - hre: HardhatRuntimeEnvironment; - args: any[]; - publicClient: PublicClient; - proxy?: boolean; - gasLimit?: number; - log?: boolean; - libraries?: { - [key: string]: `0x${string}`; - }; - skipIfAlreadyDeployed: boolean; -}; - -export async function hardhatDeployWrapper( - contractName: string, - { - hre, - args, - publicClient, - proxy = false, - gasLimit, - log = false, - libraries, - skipIfAlreadyDeployed = false, - }: HardhatDeployWrapperArgs -): Promise { - let actualDeployer; - - if (proxy) { - const { proxyDeployer } = await hre.getNamedAccounts(); - actualDeployer = proxyDeployer; - } else { - const { deployer } = await hre.getNamedAccounts(); - actualDeployer = deployer; - } - - const { deploy } = hre.deployments; - - const nonce = await publicClient.getTransactionCount({ - address: actualDeployer as `0x${string}`, - }); - - const gasData = await getActualGasData(publicClient); - const waitConfirmations = hre.network.name.startsWith('ethereum') ? 1 : 3; - - if (log) { - console.log( - `\x1b[34m[hardhatDeployWrapper]\x1b[0m\x1b[35m[args]\x1b[0m`, - { - from: actualDeployer, - args, - nonce, - gasLimit: gasLimit ? gasLimit : 'auto', - gasData, - waitConfirmations, - } - ); - } - - let deployment: Deployment; - try { - console.log('Starting deployment of:', contractName); - deployment = await deploy(contractName, { - from: actualDeployer, - args: args, - log: true, - autoMine: true, - nonce, - waitConfirmations, - ...(gasLimit ? { gasLimit } : {}), - ...gasData, - ...(libraries ? { libraries } : {}), - skipIfAlreadyDeployed, - }); - } catch (error) { - console.error('Error deploying contract:', error); - throw error; - } - - return deployment; -} diff --git a/src/index.ts b/src/index.ts index a3d00da..ff4a813 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,23 +1,26 @@ -import { config } from './constants/config'; -import { - getNetworkEnvKey, - getNetworkKey, - networkTypes, - type ConceroNetwork, - type NetworkType, -} from './networks'; +// Types +export * from './types'; -import { TokenSender } from './tokens/TokenSender'; +// Utils +export * from './utils'; -import { hardhatDeployWrapper } from './deploy/hardhatDeployWrapper'; +// Networks +export * from './networks'; +// Constants export { - ConceroNetwork, - config, - getNetworkEnvKey, - getNetworkKey, - networkTypes, - TokenSender, - hardhatDeployWrapper, -}; -export type { NetworkType }; + conceroNetworks, + mainnetNetworks, + testnetNetworks, + type ConceroMainnetNetworkNames, + type ConceroTestnetNetworkNames, +} from './constants/conceroNetworks'; +export { config } from './constants/config'; + +// Deploy +export { genericDeploy, type IDeployResult, type IGenericDeployParams, type ITxParams } from './deploy/GenericDeploy'; + +// Tokens +export { TokenSender } from './tokens/TokenSender'; + +export * from './trezor'; diff --git a/src/networks/index.ts b/src/networks/index.ts index 260cccc..b5fd3b5 100644 --- a/src/networks/index.ts +++ b/src/networks/index.ts @@ -1,6 +1,2 @@ -import { getNetworkEnvKey, getNetworkKey } from './getNetworkEnvKey'; -import { networkTypes } from './networkTypes'; -import { type ConceroNetwork, type NetworkType } from './types'; - -export { getNetworkEnvKey, getNetworkKey, networkTypes }; -export type { ConceroNetwork, NetworkType }; +export { getNetworkEnvKey, getNetworkKey } from './getNetworkEnvKey'; +export { networkTypes, type ConceroNetwork, type NetworkType } from '../types'; diff --git a/src/networks/networkTypes.ts b/src/networks/networkTypes.ts deleted file mode 100644 index 371f9f7..0000000 --- a/src/networks/networkTypes.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { type NetworkType } from './types'; - -export const networkTypes: Record = { - mainnet: 'mainnet', - testnet: 'testnet', - localhost: 'localhost', -}; diff --git a/src/networks/types.ts b/src/networks/types.ts deleted file mode 100644 index 43c7a99..0000000 --- a/src/networks/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Chain } from 'viem'; - -export type NetworkType = 'mainnet' | 'testnet' | 'localhost'; -export type ConceroNetwork = { - name: string; - type: NetworkType; - chainId: number; - chainSelector: number; - confirmations: number; - viemChain: Chain; -}; diff --git a/src/trezor/getTrezorAddress.ts b/src/trezor/getTrezorAddress.ts new file mode 100644 index 0000000..801f9ec --- /dev/null +++ b/src/trezor/getTrezorAddress.ts @@ -0,0 +1,17 @@ +import TrezorConnect from '@trezor/connect'; +import { Address } from 'viem'; +import { initTrezorOnce } from './initTrezorOnce'; +import { defaultTrezorPath, ITrezorParams } from './trezorSendTx'; + +export const getTrezorAddress = async (path: ITrezorParams['path'] = defaultTrezorPath): Promise
=> { + await initTrezorOnce(); + + const addrRes = await TrezorConnect.ethereumGetAddress({ + path, + showOnTrezor: false, + }); + + if (!addrRes.success) throw new Error(addrRes.payload.error); + + return addrRes.payload.address as Address; +}; diff --git a/src/trezor/index.ts b/src/trezor/index.ts new file mode 100644 index 0000000..1b1d507 --- /dev/null +++ b/src/trezor/index.ts @@ -0,0 +1,4 @@ +export * from './getTrezorAddress'; +export * from './trezorDeployContract'; +export * from './trezorSendTx'; +export * from './trezorWriteContract'; diff --git a/src/trezor/initTrezorOnce.ts b/src/trezor/initTrezorOnce.ts new file mode 100644 index 0000000..888cf8a --- /dev/null +++ b/src/trezor/initTrezorOnce.ts @@ -0,0 +1,15 @@ +import TrezorConnect from '@trezor/connect'; + +let isTrezorInitialized = false; + +export async function initTrezorOnce() { + if (isTrezorInitialized) return; + await TrezorConnect.init({ + manifest: { + email: 'nikita@concero.io', + appUrl: 'https://concero.io', + appName: 'concero', + }, + }); + isTrezorInitialized = true; +} diff --git a/src/trezor/trezorDeployContract.ts b/src/trezor/trezorDeployContract.ts new file mode 100644 index 0000000..01931d8 --- /dev/null +++ b/src/trezor/trezorDeployContract.ts @@ -0,0 +1,38 @@ +import type { Abi, Address, Hash, Hex } from 'viem'; +import { encodeDeployData } from 'viem'; +import { + ITrezorTxParams, + ITrezorViemParams, + trezorSendTx, + type ITrezorParams, +} from './trezorSendTx'; + +export interface ITrezorDeployParams + extends Omit { + abi: Abi; + bytecode: Hex; + args?: readonly unknown[]; +} + +export async function trezorDeployContract( + viemParams: ITrezorViemParams, + deployParams: ITrezorDeployParams, + trezorParams?: ITrezorParams +): Promise<{ hash: Hash; contractAddress: Address }> { + const { publicClient } = viemParams; + const { abi, bytecode, args, value = 0n, ...overrides } = deployParams; + + const data = encodeDeployData({ abi, bytecode, args }); + + const hash = await trezorSendTx( + { publicClient }, + { data, value, ...overrides }, + trezorParams + ); + + const receipt = await publicClient.waitForTransactionReceipt({ hash }); + if (!receipt.contractAddress) + throw new Error('No contractAddress in receipt'); + + return { hash, contractAddress: receipt.contractAddress as Address }; +} diff --git a/src/trezor/trezorSendTx.ts b/src/trezor/trezorSendTx.ts new file mode 100644 index 0000000..3772019 --- /dev/null +++ b/src/trezor/trezorSendTx.ts @@ -0,0 +1,161 @@ +import TrezorConnect from '@trezor/connect'; +import type { Address, Hash, Hex, PublicClient } from 'viem'; +import { isHex, serializeTransaction, toHex } from 'viem'; +import { log } from '../utils'; +import { getTrezorAddress } from './getTrezorAddress'; +import { initTrezorOnce } from './initTrezorOnce'; + +export const defaultTrezorPath = "m/44'/60'/0'/0/0"; + +export interface ITrezorViemParams { + publicClient: PublicClient; +} + +export interface ITrezorParams { + path: string | number[]; + showFromAddressOnTrezor?: boolean; + forceLegacy?: boolean; +} + +export interface ITrezorTxParams { + to?: Address; + value?: bigint; + data?: Hex; + gas?: bigint; + nonce?: number; + gasPrice?: bigint; + maxFeePerGas?: bigint; + maxPriorityFeePerGas?: bigint; +} + +function normalizeHex(hex: string, name: string): Hex { + if (!hex.startsWith('0x')) hex = `0x${hex}`; + if (!isHex(hex)) throw new Error(`${name} must be 0x-prefixed hex`); + return hex as Hex; +} + +function yParityFromV(v: bigint): 0 | 1 { + if (v === 0n || v === 1n) return Number(v) as 0 | 1; + if (v === 27n || v === 28n) return Number(v - 27n) as 0 | 1; + return Number((v - 35n) % 2n) as 0 | 1; +} + +export async function trezorSendTx( + viemParams: ITrezorViemParams, + txParams: ITrezorTxParams, + trezorPrams: ITrezorParams = { + path: defaultTrezorPath, + showFromAddressOnTrezor: false, + forceLegacy: false, + } +): Promise { + await initTrezorOnce(); + + const { publicClient } = viemParams; + const { to = null, value = 0n, data = '0x' } = txParams; + const { path, forceLegacy } = trezorPrams; + + const chainId = publicClient.chain?.id ?? (await publicClient.getChainId()); + + const from = await getTrezorAddress(path); + + log(`Deploy from ${from}`, 'trezorSendTx'); + + const normData = normalizeHex(data, 'data'); + + const nonce = + txParams.nonce ?? + (await publicClient.getTransactionCount({ + address: from, + blockTag: 'pending', + })); + + const gas = + txParams.gas ?? + (await publicClient.estimateGas({ + account: from, + to: to ?? undefined, + value, + data: normData === '0x' ? undefined : normData, + })); + + let gasPrice = txParams.gasPrice; + let maxFeePerGas = txParams.maxFeePerGas; + let maxPriorityFeePerGas = txParams.maxPriorityFeePerGas; + + if (!forceLegacy && gasPrice == null && (maxFeePerGas == null || maxPriorityFeePerGas == null)) { + try { + const fees = await publicClient.estimateFeesPerGas(); + if ('maxFeePerGas' in fees && 'maxPriorityFeePerGas' in fees) { + maxFeePerGas = fees.maxFeePerGas; + maxPriorityFeePerGas = fees.maxPriorityFeePerGas; + } else if ('gasPrice' in fees) { + gasPrice = (fees as { gasPrice: bigint }).gasPrice; + } + } catch (e) { + log(`EIP-1559 not supported for ${chainId}, using legacy gas price`, 'trezorSendTx'); + } + } + + const useEip1559 = !forceLegacy && maxFeePerGas != null && maxPriorityFeePerGas != null; + + if (!useEip1559 && gasPrice == null) { + gasPrice = await publicClient.getGasPrice(); + } + + const txForTrezor: Record = { + to, + value: toHex(value), + data: normData, + chainId, + nonce: toHex(nonce), + gasLimit: toHex(gas), + }; + + if (useEip1559) { + txForTrezor.maxFeePerGas = toHex(maxFeePerGas!); + txForTrezor.maxPriorityFeePerGas = toHex(maxPriorityFeePerGas!); + } else { + txForTrezor.gasPrice = toHex(gasPrice!); + } + + const signRes = await TrezorConnect.ethereumSignTransaction({ + path, + transaction: txForTrezor as any, + }); + if (!signRes.success) throw new Error(signRes.payload.error); + + const r = normalizeHex(signRes.payload.r, 'r'); + const s = normalizeHex(signRes.payload.s, 's'); + const vBig = BigInt(signRes.payload.v); + + const txSerializable: any = { + chainId, + nonce, + gas, + to: to ?? undefined, + value, + data: normData, + }; + + if (useEip1559) { + txSerializable.maxFeePerGas = maxFeePerGas; + txSerializable.maxPriorityFeePerGas = maxPriorityFeePerGas; + const serializedTransaction = serializeTransaction(txSerializable, { + r, + s, + yParity: yParityFromV(vBig), + }); + + return await publicClient.sendRawTransaction({ serializedTransaction }); + } else { + txSerializable.gasPrice = gasPrice; + + const serializedTransaction = serializeTransaction(txSerializable, { + r, + s, + v: vBig, + } as any); + return await publicClient.sendRawTransaction({ serializedTransaction }); + } +} diff --git a/src/trezor/trezorWriteContract.ts b/src/trezor/trezorWriteContract.ts new file mode 100644 index 0000000..22fec6a --- /dev/null +++ b/src/trezor/trezorWriteContract.ts @@ -0,0 +1,43 @@ +import { Abi, Address, encodeFunctionData, Hash } from 'viem'; +import { + ITrezorParams, + ITrezorTxParams, + ITrezorViemParams, + trezorSendTx, +} from './trezorSendTx'; + +export interface ITrezorWriteContractParams + extends Omit { + address: Address; + abi: Abi; + functionName: string; + args?: readonly unknown[]; +} + +export async function trezorWriteContract( + viemParams: ITrezorViemParams, + writeContractParams: ITrezorWriteContractParams, + trezorParams: ITrezorParams +): Promise { + const { + address, + abi, + functionName, + args, + value = 0n, + ...overrides + } = writeContractParams; + + const data = encodeFunctionData({ abi, functionName, args }); + + return trezorSendTx( + viemParams, + { + to: address, + data, + value, + ...overrides, + }, + trezorParams + ); +} diff --git a/src/types/ConceroNetwork.ts b/src/types/ConceroNetwork.ts new file mode 100644 index 0000000..dbfa1c0 --- /dev/null +++ b/src/types/ConceroNetwork.ts @@ -0,0 +1,47 @@ +import { Chain } from 'viem'; + +export type NetworkType = 'mainnet' | 'testnet' | 'localhost'; + +export type ConceroNetworkNames = string; + +export type ConceroNetwork = { + chainId: number; + name: string; + type: NetworkType; + chainSelector: bigint; + accounts?: string[]; + viemChain: Chain; + confirmations: number; + url: string; + rpcUrls: string[]; + saveDeployments?: boolean; + trezorDerivationPaths?: number[][]; + trezorInsecureDerivation?: boolean; +}; + +export interface ChainDefinition { + id: number; + name: string; + rpcUrls: string[]; + blockExplorer?: { + name: string; + url: string; + }; + isTestnet: boolean; +} + +export type ConceroLocalNetwork = ConceroNetwork & { + saveDeployments?: boolean; + forking?: { + url: string; + enabled: boolean; + blockNumber?: number; + }; +}; + +export type ConceroHardhatNetwork = Omit & { + accounts: Array<{ + privateKey: string; + balance: string; + }>; +}; diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000..ae00eb0 --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1,10 @@ +export { + type NetworkType, + type ConceroNetwork, + type ConceroNetworkNames, + type ChainDefinition, + type ConceroLocalNetwork, + type ConceroHardhatNetwork, +} from './ConceroNetwork'; + +export { networkTypes } from './networkTypes'; diff --git a/src/types/networkTypes.ts b/src/types/networkTypes.ts new file mode 100644 index 0000000..946fb62 --- /dev/null +++ b/src/types/networkTypes.ts @@ -0,0 +1,7 @@ +import { type NetworkType } from './ConceroNetwork'; + +export const networkTypes: Record = { + mainnet: 'mainnet', + testnet: 'testnet', + localhost: 'localhost', +}; diff --git a/src/utils/compileContracts.ts b/src/utils/compileContracts.ts new file mode 100644 index 0000000..85256ac --- /dev/null +++ b/src/utils/compileContracts.ts @@ -0,0 +1,29 @@ +/* +hardhat compile + --concurrency Number of compilation jobs executed in parallel. Defaults to the number of CPU cores - 1 (default: 9) + --force Force compilation ignoring cache + --no-size-contracts Don't size contracts after running this task, even if runOnCompile option is enabled + --no-typechain Skip Typechain compilation + --quiet Makes the compilation process less verbose + */ +import { execSync } from "child_process"; + +interface HardhatCompileParams { + concurrency?: number; + force?: boolean; + noSizeContracts?: boolean; + noTypechain?: boolean; + quiet?: boolean; +} + +export function compileContracts({ quiet = true, force = false }: HardhatCompileParams) { + const packageManager = process.env["PACKAGE_MANAGER"] || "yarn"; + const command = `${packageManager} compile`; + const args = []; + // if (concurrency) args.push(`--concurrency ${concurrency}`); + // if (noSizeContracts) args.push("--no-size-contracts"); + // if (noTypechain) args.push("--no-typechain"); + if (quiet) args.push("--quiet"); + if (force) args.push("--force"); + execSync(`${command} ${args.join(" ")}`, { stdio: "inherit" }); +} diff --git a/src/utils/createEnvUpdater.ts b/src/utils/createEnvUpdater.ts new file mode 100644 index 0000000..b89a31b --- /dev/null +++ b/src/utils/createEnvUpdater.ts @@ -0,0 +1,65 @@ +import { existsSync, readFileSync, writeFileSync } from "fs"; +import path from "path"; +import { getNetworkEnvKey } from "../networks/getNetworkEnvKey"; +import log from "./log"; + +export interface EnvUpdaterConfig> { + prefixes: TPrefixes; + basePath: string; +} + +export function createEnvUpdater< + TPrefixes extends Record, + TEnvFileName extends string, +>(config: EnvUpdaterConfig) { + function updateEnvVariable( + key: string, + newValue: string, + envFileName: TEnvFileName, + ): void { + const filePath = path.join(config.basePath, `.env.${envFileName}`); + + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + + const envContents = readFileSync(filePath, "utf8"); + let lines = envContents.split(/\r?\n/); + + const keyExists = lines.some(line => line.startsWith(`${key}=`)); + + if (!keyExists) { + log( + `Key ${key} not found in .env file. Adding to ${filePath}`, + "updateEnvVariable", + ); + lines.push(`${key}=${newValue}`); + } else { + lines = lines.map(line => { + const [currentKey] = line.split("="); + if (currentKey === key) { + return `${key}=${newValue}`; + } + return line; + }); + } + + writeFileSync(filePath, lines.join("\n")); + process.env[key] = newValue; + } + + function updateEnvAddress( + prefix: keyof TPrefixes, + newValue: string, + envFileName: TEnvFileName, + networkPostfix?: string, + ): void { + const searchKey = networkPostfix + ? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkPostfix)}` + : String(config.prefixes[prefix]); + + updateEnvVariable(searchKey, newValue, envFileName); + } + + return { updateEnvVariable, updateEnvAddress }; +} diff --git a/src/utils/createViemChain.ts b/src/utils/createViemChain.ts new file mode 100644 index 0000000..b5c8743 --- /dev/null +++ b/src/utils/createViemChain.ts @@ -0,0 +1,29 @@ +import { defineChain } from 'viem'; + +import { type ChainDefinition } from '../types'; + +export function createViemChain( + chainDefinition: ChainDefinition +): ReturnType { + return defineChain({ + id: chainDefinition.id, + name: chainDefinition.name, + nativeCurrency: { + decimals: 18, + name: 'eth', + symbol: 'eth', + }, + rpcUrls: { + default: { http: chainDefinition.rpcUrls }, + }, + blockExplorers: chainDefinition.blockExplorer + ? { + default: { + name: chainDefinition.blockExplorer.name, + url: chainDefinition.blockExplorer.url, + }, + } + : undefined, + testnet: chainDefinition.isTestnet, + }); +} diff --git a/src/utils/createWalletGetter.ts b/src/utils/createWalletGetter.ts new file mode 100644 index 0000000..d0ada70 --- /dev/null +++ b/src/utils/createWalletGetter.ts @@ -0,0 +1,47 @@ +import { type NetworkType } from '../types'; +import { warn } from './log'; + +export interface BaseAccountTypePrefixes extends Record { + proxyDeployer: 'PROXY_DEPLOYER'; + deployer: 'DEPLOYER'; +} + +export const baseAccountTypePrefixes: BaseAccountTypePrefixes = { + proxyDeployer: 'PROXY_DEPLOYER', + deployer: 'DEPLOYER' +}; + +export interface WalletGetterConfig> { + accountTypePrefixes: TPrefixes; +} + +export function createWalletGetter>( + config: WalletGetterConfig, +) { + function getWallet( + chainType: NetworkType, + accountType: keyof TPrefixes, + walletType: 'privateKey' | 'address', + ) { + const prefix = config.accountTypePrefixes[accountType]; + if (!prefix) { + throw new Error(`Unknown account type: ${String(accountType)}`); + } + + const walletKey = walletType === 'privateKey' ? 'PRIVATE_KEY' : 'ADDRESS'; + const envKey = `${chainType.toUpperCase()}_${prefix}_${walletKey}`; + const walletValue = process.env[envKey]; + + if (!walletValue) { + warn(`Missing env variable: ${envKey}`, 'getWallet'); + } + + return walletValue; + } + + return { getWallet }; +} + +export const { getWallet } = createWalletGetter({ + accountTypePrefixes: baseAccountTypePrefixes, +}); diff --git a/src/utils/ethersSignerCallContract.ts b/src/utils/ethersSignerCallContract.ts new file mode 100644 index 0000000..76b6435 --- /dev/null +++ b/src/utils/ethersSignerCallContract.ts @@ -0,0 +1,24 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { Address, Hash } from "viem"; + +import { log } from "./log"; + +export const ethersSignerCallContract = async ( + hre: HardhatRuntimeEnvironment, + contract: Address, + abi: any[], + functionName: string, + ...functionArgs: any[] +) => { + const [ethersSigner] = await hre.ethers.getSigners(); + const ethersContract = new hre.ethers.Contract(contract, abi, ethersSigner); + const unsignedTx = await ethersContract[functionName].populateTransaction(...functionArgs); + + log( + `Size: ${(unsignedTx.data.length - 2) / 2}, Input data: ${unsignedTx.data}, Address: ${unsignedTx.to}`, + functionName, + hre.network.name, + ); + + return (await ethersSigner.sendTransaction(unsignedTx)).hash as Hash; +}; diff --git a/src/utils/extractProxyAdminAddress.ts b/src/utils/extractProxyAdminAddress.ts new file mode 100644 index 0000000..937e883 --- /dev/null +++ b/src/utils/extractProxyAdminAddress.ts @@ -0,0 +1,14 @@ +import { ethers } from 'ethers'; +import { Log } from 'viem'; +import { IDeployResult } from '../deploy/GenericDeploy'; + +export function extractProxyAdminAddress(receipt: IDeployResult['receipt']): string { + const adminChangedTopic = ethers.id('AdminChanged(address,address)'); + const adminChangedLog = receipt.logs.find((log: ethers.Log | Log) => log.topics[0] === adminChangedTopic); + + if (!adminChangedLog) throw new Error('AdminChanged(address,address) log not found'); + + const abiCoder = ethers.AbiCoder.defaultAbiCoder(); + const [, newAdmin] = abiCoder.decode(['address', 'address'], adminChangedLog.data); + return newAdmin; +} diff --git a/src/utils/formatting.ts b/src/utils/formatting.ts new file mode 100644 index 0000000..a9ba957 --- /dev/null +++ b/src/utils/formatting.ts @@ -0,0 +1,10 @@ +import { type Address } from "viem"; + +export function shorten(address: Address) { + return `${address.slice(0, 6)}...${address.slice(-4)}`; +} + +export function formatGas(gasAmountWei: bigint) { + // splits gas number with commas like so: 1,000,000 + return gasAmountWei.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} diff --git a/src/deploy/getActualGasData.ts b/src/utils/getActualGasData.ts similarity index 100% rename from src/deploy/getActualGasData.ts rename to src/utils/getActualGasData.ts diff --git a/src/utils/getEnvVar.ts b/src/utils/getEnvVar.ts new file mode 100644 index 0000000..450e887 --- /dev/null +++ b/src/utils/getEnvVar.ts @@ -0,0 +1,41 @@ +import process from 'process'; +import { Address } from 'viem'; + +import { warn } from './log'; +import { shorten } from './formatting'; +import { getNetworkEnvKey } from '../networks'; + +export function getEnvVar(key: string, defaultValue?: string): string { + const value = process.env[key]; + if (value === undefined || value === '') { + if (defaultValue !== undefined) return defaultValue; + warn(`Missing env variable: ${key}`, 'getEnvVar'); + return ''; + } + + return value; +} + +export interface EnvAddressConfig> { + prefixes: TPrefixes; +} + +export function createEnvAddressGetter>( + config: EnvAddressConfig, +) { + function getEnvAddress( + prefix: keyof TPrefixes, + networkName?: string, + ): [Address, string] { + const searchKey = networkName + ? `${config.prefixes[prefix]}_${getNetworkEnvKey(networkName)}` + : config.prefixes[prefix]; + + const value = getEnvVar(searchKey) as Address; + const friendlyName = `${String(prefix)}(${shorten(value)})` + + return [value, friendlyName]; + } + + return { getEnvAddress }; +} diff --git a/src/utils/getGasParameters.ts b/src/utils/getGasParameters.ts new file mode 100644 index 0000000..2978244 --- /dev/null +++ b/src/utils/getGasParameters.ts @@ -0,0 +1,145 @@ +import { type PublicClient } from "viem"; + +import { ConceroNetwork } from "../types/ConceroNetwork"; +import { getFallbackClients } from "./getViemClients"; + +interface GasParameters { + maxFeePerGas: bigint; + maxPriorityFeePerGas: bigint; +} + +// Network-specific minimum gas parameters (in wei) +const NETWORK_MINIMUMS = { + polygon: { + minTipCap: BigInt(30_000_000_000), // 30 gwei + minBaseFee: BigInt(30_000_000_000), // 30 gwei + }, + // Add other networks as needed +} as const; + +/** + * Gets optimized gas parameters for priority transaction processing + * @param chain - The network configuration + * @param priorityMultiplier - Multiplier for maxPriorityFeePerGas (default: 2) + * @param maxFeeMultiplier - Multiplier for maxFeePerGas buffer (default: 2) + * @returns GasParameters object containing maxFeePerGas and maxPriorityFeePerGas + */ +export async function getGasParameters( + chain: ConceroNetwork, + priorityMultiplier = 1, + maxFeeMultiplier = 1, +): Promise { + const { publicClient } = getFallbackClients(chain); + + try { + // Get latest block to calculate gas parameters + const block = await publicClient.getBlock(); + const baseFee = block.baseFeePerGas ?? BigInt(0); + + // Get network-specific minimums + const networkMinimums = getNetworkMinimums(chain); + + // Calculate priority fee with buffer for faster inclusion + const suggestedPriorityFee = await getSuggestedPriorityFee(publicClient, chain); + const calculatedPriorityFee = calculatePriorityFee( + suggestedPriorityFee, + priorityMultiplier, + ); + + // Ensure priority fee meets network minimum + const priorityFee = + calculatedPriorityFee > networkMinimums.minTipCap + ? calculatedPriorityFee + : networkMinimums.minTipCap; + + // Calculate max fee ensuring it meets network minimums + const calculatedMaxFee = calculateMaxFee(baseFee, priorityFee, maxFeeMultiplier); + const minRequiredMaxFee = networkMinimums.minBaseFee + priorityFee; + const maxFeePerGas = + calculatedMaxFee > minRequiredMaxFee ? calculatedMaxFee : minRequiredMaxFee; + + return { + maxFeePerGas, + maxPriorityFeePerGas: priorityFee, + }; + } catch (error) { + // Fallback with network minimums + const networkMinimums = getNetworkMinimums(chain); + const gasPrice = await publicClient.getGasPrice(); + const priorityFee = networkMinimums.minTipCap; + + return { + maxFeePerGas: + gasPrice > networkMinimums.minBaseFee + priorityFee + ? gasPrice + : networkMinimums.minBaseFee + priorityFee, + maxPriorityFeePerGas: priorityFee, + }; + } +} + +/** + * Gets network-specific minimum gas parameters + */ +function getNetworkMinimums(chain: ConceroNetwork) { + // Check if chain is Polygon (you'll need to implement this check based on your CNetwork type) + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + + if (isPolygon) { + return NETWORK_MINIMUMS.polygon; + } + + // Default minimums for other networks + return { + minTipCap: BigInt(1_500_000_000), // 1.5 gwei + minBaseFee: BigInt(1_000_000_000), // 1 gwei + }; +} + +/** + * Gets the suggested priority fee from recent blocks + */ +async function getSuggestedPriorityFee( + publicClient: PublicClient, + chain: ConceroNetwork, +): Promise { + try { + // For Polygon, we want to be more aggressive with priority fees + const isPolygon = chain.chainId === 137 || chain.name.toLowerCase().includes("polygon"); + const blocksToAnalyze = isPolygon ? 5 : 10; // Look at fewer blocks on Polygon for more recent data + + const blocks = await Promise.all( + Array.from({ length: blocksToAnalyze }, (_, i) => + publicClient.getBlock({ blockNumber: BigInt(-1 - i) }), + ), + ); + + // For Polygon, use 75th percentile instead of median for higher priority + const priorityFees = blocks + .map(block => block.baseFeePerGas ?? BigInt(0)) + .sort((a, b) => (a < b ? -1 : 1)); + + const index = isPolygon + ? Math.floor(priorityFees.length * 0.75) + : Math.floor(priorityFees.length * 0.5); + + return priorityFees[index]; + } catch { + // Use network-specific minimum as fallback + return getNetworkMinimums(chain).minTipCap; + } +} + +/** + * Calculates priority fee with buffer + */ +function calculatePriorityFee(basePriorityFee: bigint, multiplier: number): bigint { + return BigInt(Math.ceil(Number(basePriorityFee) * multiplier)); +} + +/** + * Calculates max fee with buffer + */ +function calculateMaxFee(baseFee: bigint, priorityFee: bigint, multiplier: number): bigint { + return BigInt(Math.ceil(Number(baseFee) * multiplier)) + priorityFee; +} diff --git a/src/utils/getTrezorDeployEnabled.ts b/src/utils/getTrezorDeployEnabled.ts new file mode 100644 index 0000000..1960501 --- /dev/null +++ b/src/utils/getTrezorDeployEnabled.ts @@ -0,0 +1,4 @@ +import { getEnvVar } from './getEnvVar'; + +export const getTrezorDeployEnabled = () => + getEnvVar('TREZOR_DEPLOY_ENABLED', 'false') === 'true'; diff --git a/src/utils/getViemClients.ts b/src/utils/getViemClients.ts new file mode 100644 index 0000000..9c8509d --- /dev/null +++ b/src/utils/getViemClients.ts @@ -0,0 +1,138 @@ +import { + Chain, + createPublicClient, + createTestClient, + createWalletClient, + fallback, + http, + nonceManager, + publicActions, + type PublicClient, + type TestClient, + walletActions, + type WalletClient, +} from 'viem'; +import { type PrivateKeyAccount, privateKeyToAccount } from 'viem/accounts'; + +import { conceroNetworks } from '../constants/conceroNetworks'; +import { type ConceroNetwork, type NetworkType } from '../types'; +import { type BaseAccountTypePrefixes, getWallet } from '../utils'; +import { localhostViemChain } from './localhostViemChain'; + +function getClients( + viemChain: Chain, + url: string | undefined, + account: PrivateKeyAccount = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`) +): { + walletClient: WalletClient; + publicClient: PublicClient; + account: PrivateKeyAccount; +} { + const publicClient = createPublicClient({ + transport: http(url), + chain: viemChain, + }); + const walletClient = createWalletClient({ + transport: http(url), + chain: viemChain, + account, + }); + + return { walletClient, publicClient, account }; +} + +export type ExtendedTestClient = TestClient & WalletClient & PublicClient; + +function getTestClient(account: PrivateKeyAccount): ExtendedTestClient { + const testClient = createTestClient({ + chain: localhostViemChain, + mode: 'hardhat', + transport: http(), + account, + }) + .extend(publicActions) + .extend(walletActions); + + return testClient as unknown as ExtendedTestClient; +} + +function getFallbackClients( + chain: ConceroNetwork, + account?: PrivateKeyAccount +): { + walletClient: WalletClient; + publicClient: PublicClient; + account: PrivateKeyAccount; +} { + if (!account) { + switch (chain.type) { + case 'mainnet': + account = privateKeyToAccount(`0x${process.env.MAINNET_DEPLOYER_PRIVATE_KEY}`); + break; + case 'testnet': + account = privateKeyToAccount(`0x${process.env.TESTNET_DEPLOYER_PRIVATE_KEY}`, { + nonceManager: nonceManager, + }); + break; + case 'localhost': + account = privateKeyToAccount(`0x${process.env.LOCALHOST_DEPLOYER_PRIVATE_KEY}`); + break; + default: + throw new Error(`Unsupported chain type: ${chain.type}`); + } + } + + const { viemChain, name } = chain; + + if (!conceroNetworks[name].rpcUrls.length) { + throw new Error(`No URLs configured for chain: ${name}`); + } + + const transport = fallback( + conceroNetworks[name].rpcUrls.map((url) => http(url)), + { + retryCount: 3, + } + ); + const publicClient = createPublicClient({ transport, chain: viemChain }); + const walletClient = createWalletClient({ + transport, + chain: viemChain, + account, + }); + + return { walletClient, publicClient, account }; +} + +function getViemAccount(chainType: NetworkType, accountType: keyof BaseAccountTypePrefixes) { + const privateKey = `0x${getWallet(chainType, accountType, 'privateKey')}`; + + return privateKeyToAccount(privateKey as `0x${string}`, { + nonceManager: nonceManager, + }); +} + +export interface ViemAccountGetterConfig> { + accountTypePrefixes: TPrefixes; + getWallet: ( + chainType: NetworkType, + accountType: keyof TPrefixes, + walletType: 'privateKey' | 'address' + ) => string | undefined; +} + +export function createViemAccountGetter>( + config: ViemAccountGetterConfig +) { + function getViemAccount(chainType: NetworkType, accountType: keyof TPrefixes) { + const privateKey = `0x${config.getWallet(chainType, accountType, 'privateKey')}`; + + return privateKeyToAccount(privateKey as `0x${string}`, { + nonceManager: nonceManager, + }); + } + + return { getViemAccount }; +} + +export { getClients, getFallbackClients, getTestClient, getViemAccount }; diff --git a/src/utils/getWallet.ts b/src/utils/getWallet.ts new file mode 100644 index 0000000..141dc28 --- /dev/null +++ b/src/utils/getWallet.ts @@ -0,0 +1,2 @@ +// Re-export getWallet from createWalletGetter for backward compatibility +export { getWallet, createWalletGetter, baseAccountTypePrefixes, type BaseAccountTypePrefixes, type WalletGetterConfig } from './createWalletGetter'; diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..26f1a8f --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,22 @@ +export { createViemChain } from './createViemChain'; +export { getEnvVar, createEnvAddressGetter } from './getEnvVar'; +export { getTrezorDeployEnabled } from './getTrezorDeployEnabled'; +export { getWallet, createWalletGetter, baseAccountTypePrefixes, type BaseAccountTypePrefixes, type WalletGetterConfig } from './getWallet'; +export { err, log, warn } from './log'; +export { shorten, formatGas } from './formatting'; +export { ethersSignerCallContract } from './ethersSignerCallContract'; +export { compileContracts } from './compileContracts'; +export { localhostViemChain } from './localhostViemChain'; +export { extractProxyAdminAddress } from './extractProxyAdminAddress'; +export { createEnvUpdater, type EnvUpdaterConfig } from './createEnvUpdater'; +export { getActualGasData } from './getActualGasData'; +export { getGasParameters } from './getGasParameters'; +export { + getClients, + getFallbackClients, + getTestClient, + getViemAccount, + createViemAccountGetter, + type ExtendedTestClient, + type ViemAccountGetterConfig, +} from './getViemClients'; diff --git a/src/utils/localhostViemChain.ts b/src/utils/localhostViemChain.ts new file mode 100644 index 0000000..2c6420e --- /dev/null +++ b/src/utils/localhostViemChain.ts @@ -0,0 +1,29 @@ +import { defineChain } from "viem"; + +export const localhostViemChain = defineChain({ + id: Number(process.env.LOCALHOST_FORK_CHAIN_ID), + name: "localhost", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth", + }, + rpcUrls: { + default: { http: [process.env.LOCALHOST_RPC_URL ?? "http://127.0.0.1:8545"] }, + }, + testnet: true, +}); + +export const hardhatViemChain = defineChain({ + id: Number(process.env.HARDHAT_CHAIN_ID), + name: "hardhat", + nativeCurrency: { + decimals: 18, + name: "eth", + symbol: "eth", + }, + rpcUrls: { + default: { http: [process.env.HARDHAT_RPC_URL ?? "http://127.0.0.1:8545"] }, + }, + testnet: true, +}); diff --git a/src/utils/log.ts b/src/utils/log.ts new file mode 100644 index 0000000..fefca6f --- /dev/null +++ b/src/utils/log.ts @@ -0,0 +1,43 @@ +const networkColors: Record = { + ethereum: '\x1b[30m', // grey + arbitrum: '\x1b[34m', // blue + polygon: '\x1b[35m', // magenta + avalanche: '\x1b[31m', // red + base: '\x1b[36m', // cyan + ethereumSepolia: '\x1b[30m', // grey + arbitrumSepolia: '\x1b[34m', // blue + optimismSepolia: '\x1b[31m', // red + polygonAmoy: '\x1b[35m', // magenta + avalancheFuji: '\x1b[31m', // red + baseSepolia: '\x1b[36m', // cyan + hardhat: '\x1b[32m', // green + localhost: '\x1b[32m', // green +}; +const reset = '\x1b[0m'; + +export function log(message: any, functionName: string, networkName?: string) { + const greenFill = '\x1b[32m'; + const network = networkName ? `\x1b[35m[${networkName}]${reset}` : ''; + + console.log(`${network}${greenFill}[${functionName}]${reset}`, message); +} + +export function warn(message: any, functionName: string) { + const yellowFill = '\x1b[33m'; + + console.log(`${yellowFill}[${functionName}]${reset}`, message); +} + +export function err(message: any, functionName: string, networkName?: string) { + const redFill = '\x1b[31m'; + const network = networkName + ? `${networkColors[networkName]}[${networkName}]${reset}` + : ''; + + console.log( + `${network}${redFill}[${functionName}] ERROR:${reset}`, + message + ); +} + +export default log; diff --git a/tsconfig.json b/tsconfig.json index 566e823..1ef8ac1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "module": "ESNext", "esModuleInterop": true, "skipLibCheck": true, - "forceConsistentCasingInFileNames": true + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true } } diff --git a/yarn.lock b/yarn.lock index b051fa8..b1fbacc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,147 +2,383 @@ # yarn lockfile v1 -"@adraffy/ens-normalize@^1.10.1": +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@adraffy/ens-normalize@^1.10.1", "@adraffy/ens-normalize@^1.11.0": version "1.11.1" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz#6c2d657d4b2dfb37f8ea811dcb3e60843d4ac24a" integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== +"@babel/runtime@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.0.tgz#fbee7cf97c709518ecc1f590984481d5460d4762" + integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw== + dependencies: + regenerator-runtime "^0.14.0" + +"@chainlink/contracts@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@chainlink/contracts/-/contracts-0.8.0.tgz#4050c83c8b1603ffb0fd6ab99f1d9ea9db2c37de" + integrity sha512-nUv1Uxw5Mn92wgLs2bgPYmo8hpdQ3s9jB/lcbdU0LmNOVu0hbfmouVnqwRLa28Ll50q6GczUA+eO0ikNIKLZsA== + dependencies: + "@eth-optimism/contracts" "^0.5.21" + "@openzeppelin/contracts" "~4.3.3" + "@openzeppelin/contracts-upgradeable-4.7.3" "npm:@openzeppelin/contracts-upgradeable@v4.7.3" + "@openzeppelin/contracts-v0.7" "npm:@openzeppelin/contracts@v3.4.2" + +"@chainlink/functions-toolkit@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@chainlink/functions-toolkit/-/functions-toolkit-0.2.6.tgz#d3e87ef27db231eb537ddcb7e4430897947c8871" + integrity sha512-cXc9cp+1Ns4aH8R8MBva/Rghq5GcIOhEDjmmvQ8P9u+LTj+Kkpqjy43IVPJETCTyIjJpRDuhaEQrAUCChlwoIA== + dependencies: + axios "^1.4.0" + bcrypto "^5.4.0" + cbor "^9.0.1" + eth-crypto "^2.6.0" + ethers "^5.7.2" + ganache "^7.9.1" + uniq "^1.0.1" + +"@chainlink/hardhat-chainlink@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@chainlink/hardhat-chainlink/-/hardhat-chainlink-0.0.4.tgz#19c951d5c3d589f2bf82663be9777f3e28c38f48" + integrity sha512-fl+cRYm0qTLIMLrc1HzUVetxKF+ndOY8b423aLC2WBE24vwpuuQMejeyT1AvJE8w+9m1coyggA7xypZPHJoPnA== + dependencies: + "@chainlink/contracts" "0.8.0" + "@chainlink/functions-toolkit" "0.2.6" + "@inquirer/confirm" "^2.0.6" + "@inquirer/input" "^1.2.5" + "@inquirer/select" "^1.2.5" + "@nomiclabs/hardhat-ethers" "^2.2.3" + axios "^1.4.0" + chalk "4.1.2" + docker-compose "^0.24.1" + ethers "^5.4.7" + +"@chainsafe/as-sha256@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== + +"@chainsafe/persistent-merkle-tree@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + +"@chainsafe/ssz@^0.9.2": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.4.2" + case "^1.6.3" + +"@concero/concero-networks@https://github.com/concero/concero-networks": + version "1.0.0" + resolved "https://github.com/concero/concero-networks#d469e29b065319fd401a5d0859cdd76db2b61a5e" + dependencies: + axios "1.13.2" + esbuild "^0.27.0" + typescript "^5.9.3" + viem "2.40.3" + +"@emurgo/cardano-serialization-lib-browser@^13.2.0": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-13.2.1.tgz#b5ef35f2d60773e493b7647aa8cd766d31897c28" + integrity sha512-7RfX1gI16Vj2DgCp/ZoXqyLAakWo6+X95ku/rYGbVzuS/1etrlSiJmdbmdm+eYmszMlGQjrtOJQeVLXoj4L/Ag== + +"@emurgo/cardano-serialization-lib-nodejs@13.2.0": + version "13.2.0" + resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-13.2.0.tgz#7427c30c94c7e9676327c9362f4f4d2e387efd2d" + integrity sha512-Bz1zLGEqBQ0BVkqt1OgMxdBOE3BdUWUd7Ly9Ecr/aUwkA8AV1w1XzBMe4xblmJHnB1XXNlPH4SraXCvO+q0Mig== + "@esbuild/aix-ppc64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8" integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag== +"@esbuild/aix-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz#521cbd968dcf362094034947f76fa1b18d2d403c" + integrity sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw== + "@esbuild/android-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196" integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w== +"@esbuild/android-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz#61ea550962d8aa12a9b33194394e007657a6df57" + integrity sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA== + "@esbuild/android-arm@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee" integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA== +"@esbuild/android-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.27.2.tgz#554887821e009dd6d853f972fde6c5143f1de142" + integrity sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA== + "@esbuild/android-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2" integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg== +"@esbuild/android-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.27.2.tgz#a7ce9d0721825fc578f9292a76d9e53334480ba2" + integrity sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A== + "@esbuild/darwin-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423" integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA== +"@esbuild/darwin-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz#2cb7659bd5d109803c593cfc414450d5430c8256" + integrity sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg== + "@esbuild/darwin-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374" integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA== +"@esbuild/darwin-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz#e741fa6b1abb0cd0364126ba34ca17fd5e7bf509" + integrity sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA== + "@esbuild/freebsd-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6" integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w== +"@esbuild/freebsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz#2b64e7116865ca172d4ce034114c21f3c93e397c" + integrity sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g== + "@esbuild/freebsd-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809" integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ== +"@esbuild/freebsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz#e5252551e66f499e4934efb611812f3820e990bb" + integrity sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA== + "@esbuild/linux-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058" integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g== +"@esbuild/linux-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz#dc4acf235531cd6984f5d6c3b13dbfb7ddb303cb" + integrity sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw== + "@esbuild/linux-arm@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6" integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g== +"@esbuild/linux-arm@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz#56a900e39240d7d5d1d273bc053daa295c92e322" + integrity sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw== + "@esbuild/linux-ia32@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737" integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ== +"@esbuild/linux-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz#d4a36d473360f6870efcd19d52bbfff59a2ed1cc" + integrity sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w== + "@esbuild/linux-loong64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a" integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w== +"@esbuild/linux-loong64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz#fcf0ab8c3eaaf45891d0195d4961cb18b579716a" + integrity sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg== + "@esbuild/linux-mips64el@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30" integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q== +"@esbuild/linux-mips64el@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz#598b67d34048bb7ee1901cb12e2a0a434c381c10" + integrity sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw== + "@esbuild/linux-ppc64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067" integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g== +"@esbuild/linux-ppc64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz#3846c5df6b2016dab9bc95dde26c40f11e43b4c0" + integrity sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ== + "@esbuild/linux-riscv64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3" integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw== +"@esbuild/linux-riscv64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz#173d4475b37c8d2c3e1707e068c174bb3f53d07d" + integrity sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA== + "@esbuild/linux-s390x@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602" integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q== +"@esbuild/linux-s390x@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz#f7a4790105edcab8a5a31df26fbfac1aa3dacfab" + integrity sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w== + "@esbuild/linux-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb" integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg== +"@esbuild/linux-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz#2ecc1284b1904aeb41e54c9ddc7fcd349b18f650" + integrity sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA== + "@esbuild/netbsd-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac" integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw== +"@esbuild/netbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz#e2863c2cd1501845995cb11adf26f7fe4be527b0" + integrity sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw== + "@esbuild/netbsd-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f" integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg== +"@esbuild/netbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz#93f7609e2885d1c0b5a1417885fba8d1fcc41272" + integrity sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA== + "@esbuild/openbsd-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f" integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg== +"@esbuild/openbsd-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz#a1985604a203cdc325fd47542e106fafd698f02e" + integrity sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA== + "@esbuild/openbsd-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768" integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw== +"@esbuild/openbsd-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz#8209e46c42f1ffbe6e4ef77a32e1f47d404ad42a" + integrity sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg== + +"@esbuild/openharmony-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz#8fade4441893d9cc44cbd7dcf3776f508ab6fb2f" + integrity sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag== + "@esbuild/sunos-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb" integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA== +"@esbuild/sunos-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz#980d4b9703a16f0f07016632424fc6d9a789dfc2" + integrity sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg== + "@esbuild/win32-arm64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf" integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q== +"@esbuild/win32-arm64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz#1c09a3633c949ead3d808ba37276883e71f6111a" + integrity sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg== + "@esbuild/win32-ia32@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f" integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg== +"@esbuild/win32-ia32@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz#1b1e3a63ad4bef82200fef4e369e0fff7009eee5" + integrity sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ== + "@esbuild/win32-x64@0.25.2": version "0.25.2" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d" integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA== +"@esbuild/win32-x64@0.27.2": + version "0.27.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz#9e585ab6086bef994c6e8a5b3a0481219ada862b" + integrity sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" - integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz#4e90af67bc51ddee6cdef5284edf572ec376b595" + integrity sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== "@eslint/config-array@^0.20.0": version "0.20.1" @@ -173,9 +409,9 @@ "@types/json-schema" "^7.0.15" "@eslint/eslintrc@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== + version "3.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz#26393a0806501b5e2b6a43aa588a4d8df67880ac" + integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -183,7 +419,7 @@ globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^4.1.0" + js-yaml "^4.1.1" minimatch "^3.1.2" strip-json-comments "^3.1.1" @@ -193,9 +429,9 @@ integrity sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA== "@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== + version "2.1.7" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== "@eslint/plugin-kit@^0.2.7": version "0.2.8" @@ -205,6 +441,783 @@ "@eslint/core" "^0.13.0" levn "^0.4.1" +"@eth-optimism/contracts@^0.5.21": + version "0.5.40" + resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.5.40.tgz#d13a04a15ea947a69055e6fc74d87e215d4c936a" + integrity sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w== + dependencies: + "@eth-optimism/core-utils" "0.12.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + +"@eth-optimism/core-utils@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz#6337e4599a34de23f8eceb20378de2a2de82b0ea" + integrity sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/providers" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bufio "^1.0.7" + chai "^4.3.4" + +"@ethereumjs/common@^10.1.0", "@ethereumjs/common@^10.1.1": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-10.1.1.tgz#23d28d635a4ef6b304b8810ea207857c85bfaa51" + integrity sha512-NefPzPlrJ9w+NWVe06P+sHZQU98E1AEU9vhiHJEVT2wEcNBC1YX6hON9+smrfbn86C4U1pb2zbvjhkF+n/LKBw== + dependencies: + "@ethereumjs/util" "^10.1.1" + eventemitter3 "^5.0.1" + +"@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/rlp@^10.1.1": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-10.1.1.tgz#c8a752a5ab27a9b6c22c45230e41e4fbb5959a6b" + integrity sha512-jbnWTEwcpoY+gE0r+wxfDG9zgiu54DcTcwnc9sX3DsqKR4l5K7x2V8mQL3Et6hURa4DuT9g7z6ukwpBLFchszg== + +"@ethereumjs/tx@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethereumjs/tx@^10.1.0": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-10.1.1.tgz#42015a2406185b7f464d167d06470812c0ae2774" + integrity sha512-Kz8GWIKQjEQB60ko9hsYDX3rZMHZZOTcmm6OFl855Lu3padVnf5ZactUKM6nmWPsumHED5bWDjO32novZd1zyw== + dependencies: + "@ethereumjs/common" "^10.1.1" + "@ethereumjs/rlp" "^10.1.1" + "@ethereumjs/util" "^10.1.1" + "@noble/curves" "^2.0.1" + "@noble/hashes" "^2.0.1" + +"@ethereumjs/util@^10.1.1": + version "10.1.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-10.1.1.tgz#1dbb2934f3fbaf7608726c5d19efe2c7128e606b" + integrity sha512-r2EhaeEmLZXVs1dT2HJFQysAkr63ZWATu/9tgYSp1IlvjvwyC++DLg5kCDwMM49HBq3sOAhrPnXkoqf9DV2gbw== + dependencies: + "@ethereumjs/rlp" "^10.1.1" + "@noble/curves" "^2.0.1" + "@noble/hashes" "^2.0.1" + +"@ethersproject/abi@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abi@5.8.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0", "@ethersproject/abi@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.8.0.tgz#e79bb51940ac35fe6f3262d7fe2cdb25ad5f07d9" + integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/abstract-provider@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-provider@5.8.0", "@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz#7581f9be601afa1d02b95d26b9d9840926a35b0c" + integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + +"@ethersproject/abstract-signer@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/abstract-signer@5.8.0", "@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz#8d7417e95e4094c1797a9762e6789c7356db0754" + integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/address@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/address@5.8.0", "@ethersproject/address@^5.7.0", "@ethersproject/address@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.8.0.tgz#3007a2c352eee566ad745dca1dbbebdb50a6a983" + integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + +"@ethersproject/base64@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/base64@5.8.0", "@ethersproject/base64@^5.7.0", "@ethersproject/base64@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.8.0.tgz#61c669c648f6e6aad002c228465d52ac93ee83eb" + integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== + dependencies: + "@ethersproject/bytes" "^5.8.0" + +"@ethersproject/basex@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/basex@5.8.0", "@ethersproject/basex@^5.7.0", "@ethersproject/basex@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.8.0.tgz#1d279a90c4be84d1c1139114a1f844869e57d03a" + integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/bignumber@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bignumber@5.8.0", "@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7" + integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" + integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/constants@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/constants@5.8.0", "@ethersproject/constants@^5.7.0", "@ethersproject/constants@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704" + integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/contracts@5.8.0", "@ethersproject/contracts@^5.7.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.8.0.tgz#243a38a2e4aa3e757215ea64e276f8a8c9d8ed73" + integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== + dependencies: + "@ethersproject/abi" "^5.8.0" + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + +"@ethersproject/hash@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hash@5.8.0", "@ethersproject/hash@^5.7.0", "@ethersproject/hash@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.8.0.tgz#b8893d4629b7f8462a90102572f8cd65a0192b4c" + integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/hdnode@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/hdnode@5.8.0", "@ethersproject/hdnode@^5.7.0", "@ethersproject/hdnode@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.8.0.tgz#a51ae2a50bcd48ef6fd108c64cbae5e6ff34a761" + integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/json-wallets@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/json-wallets@5.8.0", "@ethersproject/json-wallets@^5.7.0", "@ethersproject/json-wallets@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" + integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/keccak256@5.8.0", "@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a" + integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== + dependencies: + "@ethersproject/bytes" "^5.8.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/logger@5.8.0", "@ethersproject/logger@^5.7.0", "@ethersproject/logger@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" + integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== + +"@ethersproject/networks@5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.7.0", "@ethersproject/networks@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" + integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/pbkdf2@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/pbkdf2@5.8.0", "@ethersproject/pbkdf2@^5.7.0", "@ethersproject/pbkdf2@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz#cd2621130e5dd51f6a0172e63a6e4a0c0a0ec37e" + integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + +"@ethersproject/properties@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@5.8.0", "@ethersproject/properties@^5.7.0", "@ethersproject/properties@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.8.0.tgz#405a8affb6311a49a91dabd96aeeae24f477020e" + integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/providers@5.8.0", "@ethersproject/providers@^5.7.0", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.8.0.tgz#6c2ae354f7f96ee150439f7de06236928bc04cb4" + integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + bech32 "1.1.4" + ws "8.18.0" + +"@ethersproject/random@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/random@5.8.0", "@ethersproject/random@^5.7.0", "@ethersproject/random@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" + integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/rlp@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.8.0", "@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.8.0.tgz#5a0d49f61bc53e051532a5179472779141451de5" + integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/sha2@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/sha2@5.8.0", "@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" + integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.8.0", "@ethersproject/signing-key@^5.7.0", "@ethersproject/signing-key@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.8.0.tgz#9797e02c717b68239c6349394ea85febf8893119" + integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + bn.js "^5.2.1" + elliptic "6.6.1" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/solidity@5.8.0", "@ethersproject/solidity@^5.7.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.8.0.tgz#429bb9fcf5521307a9448d7358c26b93695379b9" + integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/strings@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" + integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/transactions@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/transactions@5.8.0", "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.8.0.tgz#1e518822403abc99def5a043d1c6f6fe0007e46b" + integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/units@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.8.0.tgz#c12f34ba7c3a2de0e9fa0ed0ee32f3e46c5c2c6a" + integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/wallet@5.8.0", "@ethersproject/wallet@^5.7.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.8.0.tgz#49c300d10872e6986d953e8310dc33d440da8127" + integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/json-wallets" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/web@5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/web@5.8.0", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.8.0.tgz#3e54badc0013b7a801463a7008a87988efce8a37" + integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== + dependencies: + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/wordlists@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.8.0", "@ethersproject/wordlists@^5.7.0", "@ethersproject/wordlists@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.8.0.tgz#7a5654ee8d1bb1f4dbe43f91d217356d650ad821" + integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@fivebinaries/coin-selection@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@fivebinaries/coin-selection/-/coin-selection-3.0.0.tgz#00f19f21a8c6d183c8922efef6c102d0ce2b1af3" + integrity sha512-h25Pn1ZA7oqQBQDodGAgIsQt66T2wDge9onBKNqE66WNWL0KJiKJbpij8YOLo5AAlEIg5IS7EB1QjBgDOIg6DQ== + dependencies: + "@emurgo/cardano-serialization-lib-browser" "^13.2.0" + "@emurgo/cardano-serialization-lib-nodejs" "13.2.0" + "@humanfs/core@^0.19.1": version "0.19.1" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" @@ -228,6 +1241,90 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== +"@inquirer/confirm@^2.0.6": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-2.0.17.tgz#a45eb1b973c51c993a3c093a0114e960b1cf09a4" + integrity sha512-EqzhGryzmGpy2aJf6LxJVhndxYmFs+m8cxXzf8nejb1DE3sabf6mUgBcp4J0jAUEiAcYzqmkqRr7LPFh/WdnXA== + dependencies: + "@inquirer/core" "^6.0.0" + "@inquirer/type" "^1.1.6" + chalk "^4.1.2" + +"@inquirer/core@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-6.0.0.tgz#d44ccd8ae09a4879a78f09cca35bf1ab894b95f4" + integrity sha512-fKi63Khkisgda3ohnskNf5uZJj+zXOaBvOllHsOkdsXRA/ubQLJQrZchFFi57NKbZzkTunXiBMdvWOv71alonw== + dependencies: + "@inquirer/type" "^1.1.6" + "@types/mute-stream" "^0.0.4" + "@types/node" "^20.10.7" + "@types/wrap-ansi" "^3.0.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + cli-spinners "^2.9.2" + cli-width "^4.1.0" + figures "^3.2.0" + mute-stream "^1.0.0" + run-async "^3.0.0" + signal-exit "^4.1.0" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + +"@inquirer/input@^1.2.5": + version "1.2.16" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-1.2.16.tgz#94d8765a47689e799fd55ed0361dedc8f554341b" + integrity sha512-Ou0LaSWvj1ni+egnyQ+NBtfM1885UwhRCMtsRt2bBO47DoC1dwtCa+ZUNgrxlnCHHF0IXsbQHYtIIjFGAavI4g== + dependencies: + "@inquirer/core" "^6.0.0" + "@inquirer/type" "^1.1.6" + chalk "^4.1.2" + +"@inquirer/select@^1.2.5": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-1.3.3.tgz#7d832ee603c15b706148e47cda29cdf6634cd94b" + integrity sha512-RzlRISXWqIKEf83FDC9ZtJ3JvuK1l7aGpretf41BCWYrvla2wU8W8MTRNMiPrPJ+1SIqrRC1nZdZ60hD9hRXLg== + dependencies: + "@inquirer/core" "^6.0.0" + "@inquirer/type" "^1.1.6" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + figures "^3.2.0" + +"@inquirer/type@^1.1.6": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b" + integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA== + dependencies: + mute-stream "^1.0.0" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@mobily/ts-belt@^3.13.1": + version "3.13.1" + resolved "https://registry.yarnpkg.com/@mobily/ts-belt/-/ts-belt-3.13.1.tgz#8f8ce2a2eca41d88c2ca70c84d0f47d0f7f5cd5f" + integrity sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q== + +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + "@noble/curves@1.8.1": version "1.8.1" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.1.tgz#19bc3970e205c99e4bdb1c64a4785706bce497ff" @@ -235,13 +1332,27 @@ dependencies: "@noble/hashes" "1.7.1" -"@noble/curves@^1.6.0", "@noble/curves@~1.9.0": +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@^1.0.0", "@noble/curves@^1.6.0", "@noble/curves@^1.9.6", "@noble/curves@~1.9.0": version "1.9.7" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== dependencies: "@noble/hashes" "1.8.0" +"@noble/curves@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-2.0.1.tgz#64ba8bd5e8564a02942655602515646df1cdb3ad" + integrity sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw== + dependencies: + "@noble/hashes" "2.0.1" + "@noble/curves@~1.8.1": version "1.8.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.2.tgz#8f24c037795e22b90ae29e222a856294c1d9ffc7" @@ -249,6 +1360,16 @@ dependencies: "@noble/hashes" "1.7.2" +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + "@noble/hashes@1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" @@ -259,11 +1380,26 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.2.tgz#d53c65a21658fb02f3303e7ee3ba89d6754c64b4" integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== -"@noble/hashes@1.8.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.8.0": +"@noble/hashes@1.8.0", "@noble/hashes@^1.0.0", "@noble/hashes@^1.2.0", "@noble/hashes@^1.5.0", "@noble/hashes@^1.6.1", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== +"@noble/hashes@2.0.1", "@noble/hashes@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-2.0.1.tgz#fc1a928061d1232b0a52bb754393c37a5216c89e" + integrity sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@noble/secp256k1@~1.7.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.2.tgz#c2c3343e2dce80e15a914d7442147507f8a98e7f" + integrity sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -285,16 +1421,285 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@nomicfoundation/ethereumjs-block@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz#13a7968f5964f1697da941281b7f7943b0465d04" + integrity sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + +"@nomicfoundation/ethereumjs-blockchain@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz#45323b673b3d2fab6b5008535340d1b8fea7d446" + integrity sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-ethash" "3.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz#a15d1651ca36757588fdaf2a7d381a150662a3c3" + integrity sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.2" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz#da77147f806401ee996bfddfa6487500118addca" + integrity sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz#4c2f4b84c056047102a4fa41c127454e3f0cfcf6" + integrity sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz#4fee8dc58a53ac6ae87fb1fca7c15dc06c6b5dea" + integrity sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA== + +"@nomicfoundation/ethereumjs-statemanager@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz#3ba4253b29b1211cafe4f9265fee5a0d780976e0" + integrity sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + +"@nomicfoundation/ethereumjs-trie@6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz#9a6dbd28482dca1bc162d12b3733acab8cd12835" + integrity sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz#117813b69c0fdc14dd0446698a64be6df71d7e56" + integrity sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz#16bdc1bb36f333b8a3559bbb4b17dac805ce904d" + integrity sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz#3b0852cb3584df0e18c182d0672a3596c9ca95e6" + integrity sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz#3a9c3b20d51360b20affb8f753e756d553d49557" + integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz#74dcfabeb4ca373d95bd0d13692f44fcef133c28" + integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz#4af5849a89e5a8f511acc04f28eb5d4460ba2b6a" + integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz#54036808a9a327b2ff84446c130a6687ee702a8e" + integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz#466cda0d6e43691986c944b909fc6dbb8cfc594e" + integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz#2b35826987a6e94444140ac92310baa088ee7f94" + integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz#e6363d13b8709ca66f330562337dbc01ce8bbbd9" + integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz#8bcea7d300157bf3a770a851d9f5c5e2db34ac55" + integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" + +"@nomiclabs/hardhat-ethers@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== + +"@openzeppelin/contracts-upgradeable-4.7.3@npm:@openzeppelin/contracts-upgradeable@v4.7.3": + version "4.7.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz#f1d606e2827d409053f3e908ba4eb8adb1dd6995" + integrity sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A== + +"@openzeppelin/contracts-v0.7@npm:@openzeppelin/contracts@v3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2.tgz#d81f786fda2871d1eb8a8c5a73e455753ba53527" + integrity sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA== + +"@openzeppelin/contracts@~4.3.3": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.3.3.tgz#ff6ee919fc2a1abaf72b22814bfb72ed129ec137" + integrity sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g== + "@pkgr/core@^0.2.9": version "0.2.9" resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.9.tgz#d229a7b7f9dac167a156992ef23c7f023653f53b" integrity sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA== -"@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@scure/base@^1.1.3", "@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": version "1.2.6" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== +"@scure/base@~1.1.0": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + "@scure/bip32@1.6.2": version "1.6.2" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.2.tgz#093caa94961619927659ed0e711a6e4bf35bffd0" @@ -304,7 +1709,7 @@ "@noble/hashes" "~1.7.1" "@scure/base" "~1.2.2" -"@scure/bip32@^1.5.0": +"@scure/bip32@1.7.0", "@scure/bip32@^1.3.1", "@scure/bip32@^1.5.0", "@scure/bip32@^1.7.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== @@ -313,6 +1718,14 @@ "@noble/hashes" "~1.8.0" "@scure/base" "~1.2.5" +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + "@scure/bip39@1.5.4": version "1.5.4" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.4.tgz#07fd920423aa671be4540d59bdd344cc1461db51" @@ -321,7 +1734,7 @@ "@noble/hashes" "~1.7.1" "@scure/base" "~1.2.4" -"@scure/bip39@^1.4.0": +"@scure/bip39@1.6.0", "@scure/bip39@^1.2.1", "@scure/bip39@^1.4.0", "@scure/bip39@^1.5.1", "@scure/bip39@^1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== @@ -329,47 +1742,885 @@ "@noble/hashes" "~1.8.0" "@scure/base" "~1.2.5" -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: - "@types/ms" "*" - -"@types/estree@^1.0.6": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== - -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sinclair/typebox@^0.33.7": + version "0.33.22" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.33.22.tgz#3339d85172509095a8384cb4b44834a7c9309d86" + integrity sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ== + +"@solana-program/compute-budget@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@solana-program/compute-budget/-/compute-budget-0.8.0.tgz#0930aca4de1170ed607d64d89375074930aa8b93" + integrity sha512-qPKxdxaEsFxebZ4K5RPuy7VQIm/tfJLa1+Nlt3KNA8EYQkz9Xm8htdoEaXVrer9kpgzzp9R3I3Bh6omwCM06tQ== + +"@solana-program/stake@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@solana-program/stake/-/stake-0.2.1.tgz#cc3367e5aa0258fa6599658b0ed48b02f86487a2" + integrity sha512-ssNPsJv9XHaA+L7ihzmWGYcm/+XYURQ8UA3wQMKf6ccEHyHOUgoglkkDU/BoA0+wul6HxZUN0tHFymC0qFw6sg== + +"@solana-program/system@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@solana-program/system/-/system-0.7.0.tgz#3e21c9fb31d3795eb65ba5cb663947c19b305bad" + integrity sha512-FKTBsKHpvHHNc1ATRm7SlC5nF/VdJtOSjldhcyfMN9R7xo712Mo2jHIzvBgn8zQO5Kg0DcWuKB7268Kv1ocicw== + +"@solana-program/token-2022@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@solana-program/token-2022/-/token-2022-0.4.2.tgz#f90a638de82acb7933a114e884a24ac4be8ef635" + integrity sha512-zIpR5t4s9qEU3hZKupzIBxJ6nUV5/UVyIT400tu9vT1HMs5JHxaTTsb5GUhYjiiTvNwU0MQavbwc4Dl29L0Xvw== + +"@solana-program/token@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@solana-program/token/-/token-0.5.1.tgz#10e327df23f05a7f892fd33a9b6418f17dd62296" + integrity sha512-bJvynW5q9SFuVOZ5vqGVkmaPGA0MCC+m9jgJj1nk5m20I389/ms69ASnhWGoOPNcie7S9OwBX0gTj2fiyWpfag== + +"@solana/accounts@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/accounts/-/accounts-2.3.0.tgz#957360edd572c1294772ee0eae3abd598189b16e" + integrity sha512-QgQTj404Z6PXNOyzaOpSzjgMOuGwG8vC66jSDB+3zHaRcEPRVRd2sVSrd1U6sHtnV3aiaS6YyDuPQMheg4K2jw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/addresses@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/addresses/-/addresses-2.3.0.tgz#d89cba142819f01905a4bf30a1b990a1b55e490d" + integrity sha512-ypTNkY2ZaRFpHLnHAgaW8a83N0/WoqdFvCqf4CQmnMdFsZSdC7qOwcbd7YzdaQn9dy+P2hybewzB+KP7LutxGA== + dependencies: + "@solana/assertions" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/assertions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/assertions/-/assertions-2.3.0.tgz#f96f655088dea6fe9f79604da7615c745c64173b" + integrity sha512-Ekoet3khNg3XFLN7MIz8W31wPQISpKUGDGTylLptI+JjCDWx3PIa88xjEMqFo02WJ8sBj2NLV64Xg1sBcsHjZQ== + dependencies: + "@solana/errors" "2.3.0" -"@types/mdast@^4.0.0": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" - integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== +"@solana/codecs-core@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" + integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== dependencies: - "@types/unist" "*" + "@solana/errors" "2.3.0" -"@types/ms@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== +"@solana/codecs-data-structures@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.3.0.tgz#ae4ea2b3177d79a95fdcde20c04fde93b9fd190d" + integrity sha512-qvU5LE5DqEdYMYgELRHv+HMOx73sSoV1ZZkwIrclwUmwTbTaH8QAJURBj0RhQ/zCne7VuLLOZFFGv6jGigWhSw== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/codecs-numbers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" + integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" -"@types/prettier@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-3.0.0.tgz#e9bc8160230d3a461dab5c5b41cceef1ef723057" - integrity sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA== +"@solana/codecs-strings@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.3.0.tgz#1b3a855dcd260283a732060aa6220f78b41251ae" + integrity sha512-y5pSBYwzVziXu521hh+VxqUtp0hYGTl1eWGoc1W+8mdvBdC1kTqm/X7aYQw33J42hw03JjryvYOvmGgk3Qz/Ug== dependencies: - prettier "*" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/codecs@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.3.0.tgz#75ea5811e2792d7344409b83ffbfd1d096292e36" + integrity sha512-JVqGPkzoeyU262hJGdH64kNLH0M+Oew2CIPOa/9tR3++q2pEd4jU2Rxdfye9sd0Ce3XJrR5AIa8ZfbyQXzjh+g== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/options" "2.3.0" + +"@solana/errors@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.3.0.tgz#4ac9380343dbeffb9dffbcb77c28d0e457c5fa31" + integrity sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ== + dependencies: + chalk "^5.4.1" + commander "^14.0.0" + +"@solana/fast-stable-stringify@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/fast-stable-stringify/-/fast-stable-stringify-2.3.0.tgz#723b94e373952bad4549bdd2318f79f46313d85a" + integrity sha512-KfJPrMEieUg6D3hfQACoPy0ukrAV8Kio883llt/8chPEG3FVTX9z/Zuf4O01a15xZmBbmQ7toil2Dp0sxMJSxw== + +"@solana/functional@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/functional/-/functional-2.3.0.tgz#ac33815655e954bb78151446a571bc6c9fd9be28" + integrity sha512-AgsPh3W3tE+nK3eEw/W9qiSfTGwLYEvl0rWaxHht/lRcuDVwfKRzeSa5G79eioWFFqr+pTtoCr3D3OLkwKz02Q== + +"@solana/instructions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/instructions/-/instructions-2.3.0.tgz#ff25cbe545000a33fb3604d83f4e2b683de94ad3" + integrity sha512-PLMsmaIKu7hEAzyElrk2T7JJx4D+9eRwebhFZpy2PXziNSmFF929eRHKUsKqBFM3cYR1Yy3m6roBZfA+bGE/oQ== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/keys@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/keys/-/keys-2.3.0.tgz#9d0b0ec09c2789a051b4df1945ed52631261186e" + integrity sha512-ZVVdga79pNH+2pVcm6fr2sWz9HTwfopDVhYb0Lh3dh+WBmJjwkabXEIHey2rUES7NjFa/G7sV8lrUn/v8LDCCQ== + dependencies: + "@solana/assertions" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/kit@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/kit/-/kit-2.3.0.tgz#92deb7c4883293617209aecac9a43d5e41ccf092" + integrity sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ== + dependencies: + "@solana/accounts" "2.3.0" + "@solana/addresses" "2.3.0" + "@solana/codecs" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/programs" "2.3.0" + "@solana/rpc" "2.3.0" + "@solana/rpc-parsed-types" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-subscriptions" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/signers" "2.3.0" + "@solana/sysvars" "2.3.0" + "@solana/transaction-confirmation" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/nominal-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/nominal-types/-/nominal-types-2.3.0.tgz#b67637241b4a45c756464e049c7a830880b6e944" + integrity sha512-uKlMnlP4PWW5UTXlhKM8lcgIaNj8dvd8xO4Y9l+FVvh9RvW2TO0GwUO6JCo7JBzCB0PSqRJdWWaQ8pu1Ti/OkA== + +"@solana/options@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.3.0.tgz#f8a967b9ebae703b2c8adb8f4294df303ab866e8" + integrity sha512-PPnnZBRCWWoZQ11exPxf//DRzN2C6AoFsDI/u2AsQfYih434/7Kp4XLpfOMT/XESi+gdBMFNNfbES5zg3wAIkw== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/programs@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/programs/-/programs-2.3.0.tgz#344193a0a4443217c177e2ec21bac7bc52afe4da" + integrity sha512-UXKujV71VCI5uPs+cFdwxybtHZAIZyQkqDiDnmK+DawtOO9mBn4Nimdb/6RjR2CXT78mzO9ZCZ3qfyX+ydcB7w== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/promises@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/promises/-/promises-2.3.0.tgz#ae3fc000f4aef65561d9e4f9724d4635ed042750" + integrity sha512-GjVgutZKXVuojd9rWy1PuLnfcRfqsaCm7InCiZc8bqmJpoghlyluweNc7ml9Y5yQn1P2IOyzh9+p/77vIyNybQ== + +"@solana/rpc-api@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-api/-/rpc-api-2.3.0.tgz#c6e5f7353910bd7c7d2f8a6d4dab44d080bd313a" + integrity sha512-UUdiRfWoyYhJL9PPvFeJr4aJ554ob2jXcpn4vKmRVn9ire0sCbpQKYx6K8eEKHZWXKrDW8IDspgTl0gT/aJWVg== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/rpc-parsed-types" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/rpc-parsed-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-parsed-types/-/rpc-parsed-types-2.3.0.tgz#132b03f6b4c1b4688336ad48e76c2eea0d8c91d7" + integrity sha512-B5pHzyEIbBJf9KHej+zdr5ZNAdSvu7WLU2lOUPh81KHdHQs6dEb310LGxcpCc7HVE8IEdO20AbckewDiAN6OCg== + +"@solana/rpc-spec-types@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec-types/-/rpc-spec-types-2.3.0.tgz#010ea9de2f720e84bec2b93ca77ad3664b77235f" + integrity sha512-xQsb65lahjr8Wc9dMtP7xa0ZmDS8dOE2ncYjlvfyw/h4mpdXTUdrSMi6RtFwX33/rGuztQ7Hwaid5xLNSLvsFQ== + +"@solana/rpc-spec@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-spec/-/rpc-spec-2.3.0.tgz#2b679eb750c0f9270da6d451ea1bdc2c7783eb42" + integrity sha512-fA2LMX4BMixCrNB2n6T83AvjZ3oUQTu7qyPLyt8gHQaoEAXs8k6GZmu6iYcr+FboQCjUmRPgMaABbcr9j2J9Sw== + dependencies: + "@solana/errors" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + +"@solana/rpc-subscriptions-api@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.3.0.tgz#e779b8ad10e89b2f4a4ccb0fcd1a722d8bdd7729" + integrity sha512-9mCjVbum2Hg9KGX3LKsrI5Xs0KX390lS+Z8qB80bxhar6MJPugqIPH8uRgLhCW9GN3JprAfjRNl7our8CPvsPQ== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/rpc-subscriptions-channel-websocket@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-2.3.0.tgz#11352ed281eccfa89a782a1b27444613ebeacca4" + integrity sha512-2oL6ceFwejIgeWzbNiUHI2tZZnaOxNTSerszcin7wYQwijxtpVgUHiuItM/Y70DQmH9sKhmikQp+dqeGalaJxw== + dependencies: + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-subscriptions-spec@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.3.0.tgz#a718a4ea97f57ed62291526b70740a42d576fada" + integrity sha512-rdmVcl4PvNKQeA2l8DorIeALCgJEMSu7U8AXJS1PICeb2lQuMeaR+6cs/iowjvIB0lMVjYN2sFf6Q3dJPu6wWg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-subscriptions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-subscriptions/-/rpc-subscriptions-2.3.0.tgz#12639c17603e1a30113825350ddbfc3b50b6a031" + integrity sha512-Uyr10nZKGVzvCOqwCZgwYrzuoDyUdwtgQRefh13pXIrdo4wYjVmoLykH49Omt6abwStB0a4UL5gX9V4mFdDJZg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/fast-stable-stringify" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-subscriptions-api" "2.3.0" + "@solana/rpc-subscriptions-channel-websocket" "2.3.0" + "@solana/rpc-subscriptions-spec" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/subscribable" "2.3.0" + +"@solana/rpc-transformers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transformers/-/rpc-transformers-2.3.0.tgz#e008d2782047d574dbc74985c6cce26d7c3555f3" + integrity sha512-UuHYK3XEpo9nMXdjyGKkPCOr7WsZsxs7zLYDO1A5ELH3P3JoehvrDegYRAGzBS2VKsfApZ86ZpJToP0K3PhmMA== + dependencies: + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/rpc-transport-http@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-transport-http/-/rpc-transport-http-2.3.0.tgz#581601b9579b2a7fed9e0cb6fbcb95b4186e5b49" + integrity sha512-HFKydmxGw8nAF5N+S0NLnPBDCe5oMDtI2RAmW8DMqP4U3Zxt2XWhvV1SNkAldT5tF0U1vP+is6fHxyhk4xqEvg== + dependencies: + "@solana/errors" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + undici-types "^7.11.0" + +"@solana/rpc-types@2.3.0", "@solana/rpc-types@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc-types/-/rpc-types-2.3.0.tgz#38adf5cb1c79c08086bd672edf7a56d19581d19f" + integrity sha512-O09YX2hED2QUyGxrMOxQ9GzH1LlEwwZWu69QbL4oYmIf6P5dzEEHcqRY6L1LsDVqc/dzAdEs/E1FaPrcIaIIPw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/nominal-types" "2.3.0" + +"@solana/rpc@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/rpc/-/rpc-2.3.0.tgz#a65919520d14c122625fb887a2d72c95bf8691cf" + integrity sha512-ZWN76iNQAOCpYC7yKfb3UNLIMZf603JckLKOOLTHuy9MZnTN8XV6uwvDFhf42XvhglgUjGCEnbUqWtxQ9pa/pQ== + dependencies: + "@solana/errors" "2.3.0" + "@solana/fast-stable-stringify" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/rpc-api" "2.3.0" + "@solana/rpc-spec" "2.3.0" + "@solana/rpc-spec-types" "2.3.0" + "@solana/rpc-transformers" "2.3.0" + "@solana/rpc-transport-http" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/signers@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/signers/-/signers-2.3.0.tgz#94569a7fb025a3f473661078fbca15b34ceacf94" + integrity sha512-OSv6fGr/MFRx6J+ZChQMRqKNPGGmdjkqarKkRzkwmv7v8quWsIRnJT5EV8tBy3LI4DLO/A8vKiNSPzvm1TdaiQ== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/subscribable@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/subscribable/-/subscribable-2.3.0.tgz#4e48f1a4eeb1ccf22065b46fb8e3ed80d1a27f80" + integrity sha512-DkgohEDbMkdTWiKAoatY02Njr56WXx9e/dKKfmne8/Ad6/2llUIrax78nCdlvZW9quXMaXPTxZvdQqo9N669Og== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/sysvars@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/sysvars/-/sysvars-2.3.0.tgz#eeea82f89716682014e801de5870344ddd02becd" + integrity sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA== + dependencies: + "@solana/accounts" "2.3.0" + "@solana/codecs" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/transaction-confirmation@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-confirmation/-/transaction-confirmation-2.3.0.tgz#f66e70334d797b5010b4ae27dc59de2f90b8ebe6" + integrity sha512-UiEuiHCfAAZEKdfne/XljFNJbsKAe701UQHKXEInYzIgBjRbvaeYZlBmkkqtxwcasgBTOmEaEKT44J14N9VZDw== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/promises" "2.3.0" + "@solana/rpc" "2.3.0" + "@solana/rpc-subscriptions" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + "@solana/transactions" "2.3.0" + +"@solana/transaction-messages@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transaction-messages/-/transaction-messages-2.3.0.tgz#e2a9c2f5565c7cc720aa09816aa3c17fb79c2abc" + integrity sha512-bgqvWuy3MqKS5JdNLH649q+ngiyOu5rGS3DizSnWwYUd76RxZl1kN6CoqHSrrMzFMvis6sck/yPGG3wqrMlAww== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + +"@solana/transactions@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/transactions/-/transactions-2.3.0.tgz#fc99f6ce6cc5706f2b8116bbf8a2f396c3ec3177" + integrity sha512-LnTvdi8QnrQtuEZor5Msje61sDpPstTVwKg4y81tNxDhiyomjuvnSNLAq6QsB9gIxUqbNzPZgOG9IU4I4/Uaug== + dependencies: + "@solana/addresses" "2.3.0" + "@solana/codecs-core" "2.3.0" + "@solana/codecs-data-structures" "2.3.0" + "@solana/codecs-numbers" "2.3.0" + "@solana/codecs-strings" "2.3.0" + "@solana/errors" "2.3.0" + "@solana/functional" "2.3.0" + "@solana/instructions" "2.3.0" + "@solana/keys" "2.3.0" + "@solana/nominal-types" "2.3.0" + "@solana/rpc-types" "2.3.0" + "@solana/transaction-messages" "2.3.0" + +"@stellar/js-xdr@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@stellar/js-xdr/-/js-xdr-3.1.2.tgz#db7611135cf21e989602fd72f513c3bed621bc74" + integrity sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ== + +"@stellar/stellar-base@^14.0.1": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@stellar/stellar-base/-/stellar-base-14.0.4.tgz#530511679588e8440277ded071e3a46a387c9fff" + integrity sha512-UbNW6zbdOBXJwLAV2mMak0bIC9nw3IZVlQXkv2w2dk1jgCbJjy3oRVC943zeGE5JAm0Z9PHxrIjmkpGhayY7kw== + dependencies: + "@noble/curves" "^1.9.6" + "@stellar/js-xdr" "^3.1.2" + base32.js "^0.1.0" + bignumber.js "^9.3.1" + buffer "^6.0.3" + sha.js "^2.4.12" + +"@stellar/stellar-sdk@14.2.0": + version "14.2.0" + resolved "https://registry.yarnpkg.com/@stellar/stellar-sdk/-/stellar-sdk-14.2.0.tgz#fb58f43e7b7cd33fd5bb31546be67c2cf6a1120b" + integrity sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ== + dependencies: + "@stellar/stellar-base" "^14.0.1" + axios "^1.12.2" + bignumber.js "^9.3.1" + eventsource "^2.0.2" + feaxios "^0.0.23" + randombytes "^2.1.0" + toml "^3.0.0" + urijs "^1.19.1" + +"@trezor/analytics@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@trezor/analytics/-/analytics-1.5.0.tgz#659a9b62e170e0d57b902313f806ad9801f1d494" + integrity sha512-evILW5XJEmfPlf0TY1duOLtGJ47pdGeSKVE3P75ODEUsRNxtPVqlkOUBPmYpCxPnzS8XDmkatT8lf9/DF0G6nA== + dependencies: + "@trezor/env-utils" "1.5.0" + "@trezor/utils" "9.5.0" + +"@trezor/blockchain-link-types@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-types/-/blockchain-link-types-1.5.0.tgz#2317b56dc60bd2f0647236ba09d7c534311070e9" + integrity sha512-wD6FKKxNr89MTWYL+NikRkBcWXhiWNFR0AuDHW6GHmlCEHhKu/hAvQtcER8X5jt/Wd0hSKNZqtHBXJ1ZkpJ6rg== + dependencies: + "@trezor/utils" "9.5.0" + "@trezor/utxo-lib" "2.5.0" + +"@trezor/blockchain-link-utils@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.5.1.tgz#d3d1c23d9d759979df9966b8469aceb77c9c5752" + integrity sha512-2tDGLEj5jzydjsJQONGTWVmCDDy6FTZ4ytr1/2gE6anyYEJU8MbaR+liTt3UvcP5jwZTNutwYLvZixRfrb8JpA== + dependencies: + "@mobily/ts-belt" "^3.13.1" + "@stellar/stellar-sdk" "14.2.0" + "@trezor/env-utils" "1.5.0" + "@trezor/protobuf" "1.5.1" + "@trezor/utils" "9.5.0" + xrpl "4.4.3" + +"@trezor/blockchain-link@2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@trezor/blockchain-link/-/blockchain-link-2.6.1.tgz#1cc8aea6e5f2c0ec4345b50769a676c0cb2648ae" + integrity sha512-SPwxkihOMI0o79BOy0RkfgVL2meuJhIe1yWHCeR8uoqf5KGblUyeXxvNCy6w8ckJ9LRpM1+bZhsUODuNs3083Q== + dependencies: + "@solana-program/compute-budget" "^0.8.0" + "@solana-program/stake" "^0.2.1" + "@solana-program/token" "^0.5.1" + "@solana-program/token-2022" "^0.4.2" + "@solana/kit" "^2.3.0" + "@solana/rpc-types" "^2.3.0" + "@stellar/stellar-sdk" "14.2.0" + "@trezor/blockchain-link-types" "1.5.0" + "@trezor/blockchain-link-utils" "1.5.1" + "@trezor/env-utils" "1.5.0" + "@trezor/utils" "9.5.0" + "@trezor/utxo-lib" "2.5.0" + "@trezor/websocket-client" "1.3.0" + "@types/web" "^0.0.197" + crypto-browserify "3.12.0" + socks-proxy-agent "8.0.5" + stream-browserify "^3.0.0" + xrpl "4.4.3" + +"@trezor/connect-analytics@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@trezor/connect-analytics/-/connect-analytics-1.4.0.tgz#47764849d9538e758ec33204b5eb5b53810ec07a" + integrity sha512-hy2J2oeIhRC/e1bOWXo5dsVMVnDwO2UKnxhR6FD8PINR3jgM6PWAXc6k33WJsBcyiTzwMP7/xPysLcgNJH5o4w== + dependencies: + "@trezor/analytics" "1.5.0" + +"@trezor/connect-common@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@trezor/connect-common/-/connect-common-0.5.0.tgz#c3a7a015ef16499efa9d0e0b7469c4394f8a5da6" + integrity sha512-WE71iaFcWmfQxDCiTUNynj2DccRgUiLBJ+g3nrqCBJqEYzu+cD6eZ5k/OLtZ3hfh5gyB5EQwXdGvRT07iNdxAA== + dependencies: + "@trezor/env-utils" "1.5.0" + "@trezor/type-utils" "1.2.0" + "@trezor/utils" "9.5.0" + +"@trezor/connect@9.7.1": + version "9.7.1" + resolved "https://registry.yarnpkg.com/@trezor/connect/-/connect-9.7.1.tgz#c998ff051a9c4090be56633317dad1f712b026e0" + integrity sha512-W2ym0bs4FVmXByEr9gANBp+bRErzNcmqqqYzSJLOVkawxikqYXag2aCpdiXU3LlZbFbhFhIsT/fpDLfwiLRySA== + dependencies: + "@ethereumjs/common" "^10.1.0" + "@ethereumjs/tx" "^10.1.0" + "@fivebinaries/coin-selection" "3.0.0" + "@mobily/ts-belt" "^3.13.1" + "@noble/hashes" "^1.6.1" + "@scure/bip39" "^1.5.1" + "@solana-program/compute-budget" "^0.8.0" + "@solana-program/system" "^0.7.0" + "@solana-program/token" "^0.5.1" + "@solana-program/token-2022" "^0.4.2" + "@solana/kit" "^2.3.0" + "@trezor/blockchain-link" "2.6.1" + "@trezor/blockchain-link-types" "1.5.0" + "@trezor/blockchain-link-utils" "1.5.1" + "@trezor/connect-analytics" "1.4.0" + "@trezor/connect-common" "0.5.0" + "@trezor/crypto-utils" "1.2.0" + "@trezor/device-authenticity" "1.1.1" + "@trezor/device-utils" "1.2.0" + "@trezor/env-utils" "^1.5.0" + "@trezor/protobuf" "1.5.1" + "@trezor/protocol" "1.3.0" + "@trezor/schema-utils" "1.4.0" + "@trezor/transport" "1.6.1" + "@trezor/type-utils" "1.2.0" + "@trezor/utils" "9.5.0" + "@trezor/utxo-lib" "2.5.0" + blakejs "^1.2.1" + bs58 "^6.0.0" + bs58check "^4.0.0" + cbor "^10.0.10" + cross-fetch "^4.0.0" + jws "^4.0.0" + +"@trezor/crypto-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/crypto-utils/-/crypto-utils-1.2.0.tgz#3eb29e5c601ada1d593439906daf0ba6b955dde0" + integrity sha512-9i1NrfW1IE6JO910ut7xrx4u5LxE++GETbpJhWLj4P5xpuGDDSDLEn/MXaYisls2DpE897aOrGPaa1qyt8V6tw== + +"@trezor/device-authenticity@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@trezor/device-authenticity/-/device-authenticity-1.1.1.tgz#c2d4ab38b3508b57fa6f4bcf2ce400cb0e7d6e85" + integrity sha512-WlYbQgc5l0pWUVP9GkMp+Oj3rVAqMKsWF0HyxujoymNjEB7rLTl2hXs+GFjlz7VnldaSslECc6EBex/eQiNOnA== + dependencies: + "@noble/curves" "^2.0.1" + "@trezor/crypto-utils" "1.2.0" + "@trezor/protobuf" "1.5.1" + "@trezor/schema-utils" "1.4.0" + "@trezor/utils" "9.5.0" + +"@trezor/device-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/device-utils/-/device-utils-1.2.0.tgz#f106f403dbabbe65acd3ec594b4da73394a9f3e8" + integrity sha512-Aqp7pIooFTx21zRUtTI6i1AS4d9Lrx7cclvksh2nJQF9WJvbzuCXshEGkLoOsHwhQrCl3IXfbGuMdA12yDenPA== + +"@trezor/env-utils@1.5.0", "@trezor/env-utils@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@trezor/env-utils/-/env-utils-1.5.0.tgz#9cf3ec6199d761a4424cc681435813cc411c8661" + integrity sha512-u1TN7dMQ5Qhpbae08Z4JJmI9fQrbbJ4yj8eIAsuzMQn6vb+Sg9vbntl+IDsZ1G9WeI73uHTLu1wWMmAgiujH8w== + dependencies: + ua-parser-js "^2.0.4" + +"@trezor/protobuf@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@trezor/protobuf/-/protobuf-1.5.1.tgz#245d216f4bec922474cac91ceab2c55acec9a1da" + integrity sha512-nAkaCCAqLpErBd+IuKeG5MpbyLR/2RMgCw18TWc80m1Ws/XgQirhHY9Jbk6gLImTXb9GTrxP0+MDSahzd94rSA== + dependencies: + "@trezor/schema-utils" "1.4.0" + long "5.2.5" + protobufjs "7.4.0" + +"@trezor/protocol@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@trezor/protocol/-/protocol-1.3.0.tgz#78d45057d6cd83c12b4949a6f4a925bc470a7ba7" + integrity sha512-rmrxbDrdgxTouBPbZcSeqU7ba/e5WVT1dxvxxEntHqRdTiDl7d3VK+BErCrlyol8EH5YCqEF3/rXt0crSOfoFw== + +"@trezor/schema-utils@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@trezor/schema-utils/-/schema-utils-1.4.0.tgz#5a903fe323236a8ef44bbef8d8b93f3a06895559" + integrity sha512-K7upSeh7VDrORaIC4KAxYVW93XNlohmUnH5if/5GKYmTdQSRp1nBkO6Jm+Z4hzIthdnz/1aLgnbeN3bDxWLRxA== + dependencies: + "@sinclair/typebox" "^0.33.7" + ts-mixer "^6.0.3" + +"@trezor/transport@1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@trezor/transport/-/transport-1.6.1.tgz#49c182ec0b47c1b8e9af871b65c3691a2d10f61e" + integrity sha512-RQNQingZ1TOVKSJu3Av9bmQovsu9n1NkcAYJ64+ZfapORfl/AzmZizRflhxU3FlIujQJK1gbIaW79+L54g7a8w== + dependencies: + "@trezor/protobuf" "1.5.1" + "@trezor/protocol" "1.3.0" + "@trezor/type-utils" "1.2.0" + "@trezor/utils" "9.5.0" + cross-fetch "^4.0.0" + usb "^2.15.0" + +"@trezor/type-utils@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@trezor/type-utils/-/type-utils-1.2.0.tgz#5d6a6088da2fac5a2c02bf40098bf8880c52093d" + integrity sha512-+E2QntxkyQuYfQQyl8RvT01tq2i5Dp/LFUOXuizF+KVOqsZBjBY43j5hewcCO3+MokD7deDiPyekbUEN5/iVlw== + +"@trezor/utils@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@trezor/utils/-/utils-9.5.0.tgz#75154d622cfb25ee6ca60314feb25fd0ca5d732e" + integrity sha512-kdyMyDbxzvOZmwBNvTjAK+C/kzyOz8T4oUbFvq+KaXn5mBFf1uf8rq5X2HkxgdYRPArtHS3PxLKsfkNCdhCYtQ== + dependencies: + bignumber.js "^9.3.1" + +"@trezor/utxo-lib@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@trezor/utxo-lib/-/utxo-lib-2.5.0.tgz#f7225b7d363f8bfdc19d321404e2ea3656531eb5" + integrity sha512-Fa2cZh0037oX6AHNLfpFIj65UR/OoX0ZJTocFuQASe77/1PjZHysf6BvvGfmzuFToKfrAQ+DM/1Sx+P/vnyNmA== + dependencies: + "@trezor/utils" "9.5.0" + bech32 "^2.0.0" + bip66 "^2.0.0" + bitcoin-ops "^1.4.1" + blake-hash "^2.0.0" + blakejs "^1.2.1" + bn.js "^5.2.2" + bs58 "^6.0.0" + bs58check "^4.0.0" + cashaddrjs "0.4.4" + create-hmac "^1.1.7" + int64-buffer "^1.1.0" + pushdata-bitcoin "^1.0.1" + tiny-secp256k1 "^1.1.7" + typeforce "^1.18.0" + varuint-bitcoin "2.0.0" + wif "^5.0.0" + +"@trezor/websocket-client@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@trezor/websocket-client/-/websocket-client-1.3.0.tgz#4c06af0907af0629b5951d93834482d6a7f31d36" + integrity sha512-9KQSaVc3NtmM6rFFj1e+9bM0C5mVKVidbnxlfzuBJu7G2YMRdIdLPcAXhvmRZjs40uzDuBeApK+p547kODz2ug== + dependencies: + "@trezor/utils" "9.5.0" + ws "^8.18.0" + +"@trufflesuite/bigint-buffer@1.1.10": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== + dependencies: + node-gyp-build "4.4.0" + +"@trufflesuite/uws-js-unofficial@20.30.0-unofficial.0": + version "20.30.0-unofficial.0" + resolved "https://registry.yarnpkg.com/@trufflesuite/uws-js-unofficial/-/uws-js-unofficial-20.30.0-unofficial.0.tgz#2fbc2f8ef7e82fbeea6abaf7e8a9d42a02b479d3" + integrity sha512-r5X0aOQcuT6pLwTRLD+mPnAM/nlKtvIK4Z+My++A8tTOR0qTjNRx8UB8jzRj3D+p9PMAp5LnpCUUGmz7/TppwA== + dependencies: + ws "8.13.0" + optionalDependencies: + bufferutil "4.0.7" + utf-8-validate "6.0.3" + +"@typechain/hardhat@9.1.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-9.1.0.tgz#6985015f01dfb37ef2ca8a29c742d05890351ddc" + integrity sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA== + dependencies: + fs-extra "^9.1.0" + +"@types/bn.js@5.1.6": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.2.0.tgz#4349b9710e98f9ab3cdc50f1c5e4dcbd8ef29c80" + integrity sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q== + dependencies: + "@types/node" "*" + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/mdast@^4.0.0": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" + integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== + dependencies: + "@types/unist" "*" + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/mute-stream@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" + integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "25.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.2.0.tgz#015b7d228470c1dcbfc17fe9c63039d216b4d782" + integrity sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w== + dependencies: + undici-types "~7.16.0" + +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/node@^20.10.7": + version "20.19.30" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.30.tgz#84fa87498ade5cd2b6ba8f8eec01d3b138ca60d0" + integrity sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g== + dependencies: + undici-types "~6.21.0" + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/prettier@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-3.0.0.tgz#e9bc8160230d3a461dab5c5b41cceef1ef723057" + integrity sha512-mFMBfMOz8QxhYVbuINtswBp9VL2b4Y0QqYHwqLz3YbgtfAcat2Dl6Y1o4e22S/OVE6Ebl9m7wWiMT2lSbAs1wA== + dependencies: + prettier "*" + +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + +"@types/secp256k1@^4.0.1": + version "4.0.7" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.7.tgz#534c9814eb80964962108ad45d549d1555c75fa0" + integrity sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw== + dependencies: + "@types/node" "*" + +"@types/seedrandom@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== "@types/unist@*", "@types/unist@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== +"@types/w3c-web-usb@^1.0.6": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@types/w3c-web-usb/-/w3c-web-usb-1.0.13.tgz#4792e2ef7f611d0ee260b7adbf4ed121326c04e1" + integrity sha512-N2nSl3Xsx8mRHZBvMSdNGtzMyeleTvtlEw+ujujgXalPqOjIA6UtrqcB6OzyUjkTbDm3J7P1RNK1lgoO7jxtsw== + +"@types/web@^0.0.197": + version "0.0.197" + resolved "https://registry.yarnpkg.com/@types/web/-/web-0.0.197.tgz#624cf02b57e79ec9d90b61b24b95fe1732713e45" + integrity sha512-V4sOroWDADFx9dLodWpKm298NOJ1VJ6zoDVgaP+WBb/utWxqQ6gnMzd9lvVDAr/F3ibiKaxH9i45eS0gQPSTaQ== + +"@types/wrap-ansi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" + integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== + "@typescript-eslint/eslint-plugin@8.29.1": version "8.29.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz#593639d9bb5239b2d877d65757b7e2c9100a2e84" @@ -451,26 +2702,126 @@ "@typescript-eslint/types" "8.29.1" eslint-visitor-keys "^4.2.0" +"@xrplf/isomorphic@^1.0.0", "@xrplf/isomorphic@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@xrplf/isomorphic/-/isomorphic-1.0.1.tgz#d7676e0ec0e55a39f37ddc1f3cc30eeab52e0739" + integrity sha512-0bIpgx8PDjYdrLFeC3csF305QQ1L7sxaWnL5y71mCvhenZzJgku9QsA+9QCXBC1eNYtxWO/xR91zrXJy2T/ixg== + dependencies: + "@noble/hashes" "^1.0.0" + eventemitter3 "5.0.1" + ws "^8.13.0" + +"@xrplf/secret-numbers@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@xrplf/secret-numbers/-/secret-numbers-2.0.0.tgz#36ffa45c41e78efc6179ca4fe9d950260103dbce" + integrity sha512-z3AOibRTE9E8MbjgzxqMpG1RNaBhQ1jnfhNCa1cGf2reZUJzPMYs4TggQTc7j8+0WyV3cr7y/U8Oz99SXIkN5Q== + dependencies: + "@xrplf/isomorphic" "^1.0.1" + ripple-keypairs "^2.0.0" + abitype@1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.8.tgz#3554f28b2e9d6e9f35eb59878193eabd1b9f46ba" integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== -abitype@^1.0.6: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" - integrity sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q== +abitype@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" + integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== + +abitype@^1.0.6, abitype@^1.0.9: + version "1.2.3" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.2.3.tgz#bec3e09dea97d99ef6c719140bee663a329ad1f4" + integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== + +abstract-level@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +abstract-leveldown@7.2.0, abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + acorn@^8.15.0: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -481,28 +2832,238 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-styles@^4.1.0: +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +async-eventemitter@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async@^2.4.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +axios@^0.21.1: + version "0.21.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== + dependencies: + follow-redirects "^1.14.0" + +axios@^1.12.2, axios@^1.4.0: + version "1.13.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.4.tgz#15d109a4817fb82f73aea910d41a2c85606076bc" + integrity sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base-x@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.1.tgz#16bf35254be1df8aca15e36b7c1dda74b2aa6b03" + integrity sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg== + +base32.js@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base32.js/-/base32.js-0.1.0.tgz#b582dec693c2f11e893cf064ee6ac5b6131a2202" + integrity sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypto@^5.4.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/bcrypto/-/bcrypto-5.5.2.tgz#7568186b31a1cfb142df50b22a87309287708e96" + integrity sha512-k3PF755oJM0+25iOVuraNedF5XneykxRwl+oBoMeQPfYee4qX8hHQhKCsNZWLthNYgi41GH2ysopd/8sDQDhEw== + dependencies: + bufio "~1.0.7" + loady "~0.0.5" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bech32@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355" + integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + +bigint-crypto-utils@^3.0.23: + version "3.3.0" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz#72ad00ae91062cf07f2b1def9594006c279c1d77" + integrity sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg== + +bignumber.js@^9.0.0, bignumber.js@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + binary-searching@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/binary-searching/-/binary-searching-2.0.5.tgz#ab6d08d51cd1b58878ae208ab61988f885b22dd3" integrity sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA== +bindings@^1.3.0, bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw== + dependencies: + safe-buffer "^5.0.1" + +bip66@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-2.0.0.tgz#96b5cca18ad10a009f7c8ea4eb24079e37ec9c79" + integrity sha512-kBG+hSpgvZBrkIm9dt5T1Hd/7xGCPEX2npoxAWZfsK1FvjgaxySEh2WizjyIstWXriKo9K9uJ4u0OnsyLDUPXQ== + +bitcoin-ops@^1.3.0, bitcoin-ops@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz#e45de620398e22fd4ca6023de43974ff42240278" + integrity sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow== + +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + +blakejs@^1.1.0, blakejs@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.2.tgz#3d8fed6796c24e177737f7cc5172ee04ef39ec99" + integrity sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1, bn.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + brace-expansion@^1.1.7: version "1.1.12" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" @@ -518,19 +3079,252 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.3: +braces@^3.0.3, braces@~3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz#06e530907fe2949dc21fc3c2e2302e10b1437238" + integrity sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ== + dependencies: + bn.js "^5.2.1" + randombytes "^2.1.0" + safe-buffer "^5.2.1" + +browserify-sign@^4.0.0: + version "4.2.5" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.5.tgz#3979269fa8af55ba18aac35deef11b45515cd27d" + integrity sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw== + dependencies: + bn.js "^5.2.2" + browserify-rsa "^4.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.6.1" + inherits "^2.0.4" + parse-asn1 "^5.1.9" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bs58check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-4.0.0.tgz#46cda52a5713b7542dcb78ec2efdf78f5bf1d23c" + integrity sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g== + dependencies: + "@noble/hashes" "^1.2.0" + bs58 "^6.0.0" + +buffer-equal-constant-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + dependencies: + node-gyp-build "^4.3.0" + +bufferutil@4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +bufio@^1.0.7: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.2.3.tgz#25049c13f05e7cf56c88aa00f2503202b4bf2799" + integrity sha512-5Tt66bRzYUSlVZatc0E92uDenreJ+DpTBmSAUwL4VSxJn3e6cUyYwx+PoqML0GRZatgA/VX8ybhxItF8InZgqA== + +bufio@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.0.7.tgz#b7f63a1369a0829ed64cc14edf0573b3e382a33e" + integrity sha512-bd1dDQhiC+bEbEfg56IdBv7faWa6OipMs/AFFFvtFnB3wAYjlwQpQRZ0pm6ZkgtfL0pILRXhKxOiQj6UzoMR7A== + +bytes@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^4.0.0: +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + +cashaddrjs@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.4.4.tgz#169f1ae620d325db77700273d972282adeeee331" + integrity sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA== + dependencies: + big-integer "1.6.36" + +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cbor@^10.0.10: + version "10.0.11" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-10.0.11.tgz#f60e7cc2be6c943fecec159874ae651e75661745" + integrity sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA== + dependencies: + nofilter "^3.0.2" + +cbor@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" + integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== + dependencies: + nofilter "^3.1.0" + +chai@^4.3.4: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -538,11 +3332,103 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + character-entities@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.4.0, chokidar@^3.5.2, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.7" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.7.tgz#bd094bfef42634ccfd9e13b9fc73274997111e39" + integrity sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.2" + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-spinners@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -550,21 +3436,101 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +commander@^14.0.0: + version "14.0.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.3.tgz#425d79b48f9af82fcd9e4fc1ea8af6c5ec07bbc2" + integrity sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw== + comment-parser@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" - integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + version "1.4.5" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.5.tgz#6c595cd090737a1010fe5ff40d86e1d21b7bd6ce" + integrity sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.1.0.tgz#8f69355007ee182e47fa692ecbaa37a52e43c3d2" + integrity sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw== + dependencies: + node-fetch "^2.7.0" + cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" @@ -574,30 +3540,91 @@ cross-spawn@^7.0.6: shebang-command "^2.0.0" which "^2.0.1" -debug@^4.0.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +debug@4, debug@^4.0.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decode-named-character-reference@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" - integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== + version "1.3.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz#3e40603760874c2e5867691b599d73a7da25b53f" + integrity sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q== dependencies: character-entities "^2.0.0" +deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + dequal@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-europe-js@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/detect-europe-js/-/detect-europe-js-0.1.2.tgz#aa76642e05dae786efc2e01a23d4792cd24c7b88" + integrity sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow== + devlop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" @@ -605,6 +3632,150 @@ devlop@^1.0.0: dependencies: dequal "^2.0.0" +diff@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.2.tgz#0a4742797281d09cfa699b79ea32d27723623bad" + integrity sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +docker-compose@^0.24.1: + version "0.24.8" + resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.24.8.tgz#6c125e6b9e04cf68ced47e2596ef2bb93ee9694e" + integrity sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw== + dependencies: + yaml "^2.2.2" + +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g== + dependencies: + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eccrypto@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/eccrypto/-/eccrypto-1.1.6.tgz#846bd1222323036f7a3515613704386399702bd3" + integrity sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A== + dependencies: + acorn "7.1.1" + elliptic "6.5.4" + es6-promise "4.2.8" + nan "2.14.0" + optionalDependencies: + secp256k1 "3.7.1" + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@6.6.1, elliptic@^6.4.0, elliptic@^6.4.1, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.7, elliptic@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encode-utf8@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + +enquirer@^2.3.0, enquirer@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es6-promise@4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + esbuild@0.25.2: version "0.25.2" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b" @@ -636,6 +3807,48 @@ esbuild@0.25.2: "@esbuild/win32-ia32" "0.25.2" "@esbuild/win32-x64" "0.25.2" +esbuild@^0.27.0: + version "0.27.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.27.2.tgz#d83ed2154d5813a5367376bb2292a9296fc83717" + integrity sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw== + optionalDependencies: + "@esbuild/aix-ppc64" "0.27.2" + "@esbuild/android-arm" "0.27.2" + "@esbuild/android-arm64" "0.27.2" + "@esbuild/android-x64" "0.27.2" + "@esbuild/darwin-arm64" "0.27.2" + "@esbuild/darwin-x64" "0.27.2" + "@esbuild/freebsd-arm64" "0.27.2" + "@esbuild/freebsd-x64" "0.27.2" + "@esbuild/linux-arm" "0.27.2" + "@esbuild/linux-arm64" "0.27.2" + "@esbuild/linux-ia32" "0.27.2" + "@esbuild/linux-loong64" "0.27.2" + "@esbuild/linux-mips64el" "0.27.2" + "@esbuild/linux-ppc64" "0.27.2" + "@esbuild/linux-riscv64" "0.27.2" + "@esbuild/linux-s390x" "0.27.2" + "@esbuild/linux-x64" "0.27.2" + "@esbuild/netbsd-arm64" "0.27.2" + "@esbuild/netbsd-x64" "0.27.2" + "@esbuild/openbsd-arm64" "0.27.2" + "@esbuild/openbsd-x64" "0.27.2" + "@esbuild/openharmony-arm64" "0.27.2" + "@esbuild/sunos-x64" "0.27.2" + "@esbuild/win32-arm64" "0.27.2" + "@esbuild/win32-ia32" "0.27.2" + "@esbuild/win32-x64" "0.27.2" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" @@ -723,9 +3936,9 @@ espree@^10.0.1, espree@^10.3.0: eslint-visitor-keys "^4.2.1" esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.7.0.tgz#08d048f261f0ddedb5bae95f46809463d9c9496d" + integrity sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g== dependencies: estraverse "^5.1.0" @@ -746,11 +3959,198 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +eth-crypto@^2.6.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eth-crypto/-/eth-crypto-2.8.0.tgz#8edec2f479eadfb51b0f616b4e75b2c5c0e9f97e" + integrity sha512-QtVmfLZK+N0k4+RA65ORbVCBM2ndzPM0Q/VFhkYYrGY16+4OAwuxG+eyFlWyDO3HBFMlPnMLa69OZCKOoQkcdQ== + dependencies: + "@babel/runtime" "7.27.0" + "@ethereumjs/tx" "3.5.2" + "@types/bn.js" "5.1.6" + eccrypto "1.1.6" + ethereumjs-util "7.1.5" + ethers "5.8.0" + secp256k1 "5.0.1" + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@7.1.5, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethers@5.8.0, ethers@^5.4.7, ethers@^5.7.0, ethers@^5.7.1, ethers@^5.7.2: + version "5.8.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.8.0.tgz#97858dc4d4c74afce83ea7562fe9493cedb4d377" + integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== + dependencies: + "@ethersproject/abi" "5.8.0" + "@ethersproject/abstract-provider" "5.8.0" + "@ethersproject/abstract-signer" "5.8.0" + "@ethersproject/address" "5.8.0" + "@ethersproject/base64" "5.8.0" + "@ethersproject/basex" "5.8.0" + "@ethersproject/bignumber" "5.8.0" + "@ethersproject/bytes" "5.8.0" + "@ethersproject/constants" "5.8.0" + "@ethersproject/contracts" "5.8.0" + "@ethersproject/hash" "5.8.0" + "@ethersproject/hdnode" "5.8.0" + "@ethersproject/json-wallets" "5.8.0" + "@ethersproject/keccak256" "5.8.0" + "@ethersproject/logger" "5.8.0" + "@ethersproject/networks" "5.8.0" + "@ethersproject/pbkdf2" "5.8.0" + "@ethersproject/properties" "5.8.0" + "@ethersproject/providers" "5.8.0" + "@ethersproject/random" "5.8.0" + "@ethersproject/rlp" "5.8.0" + "@ethersproject/sha2" "5.8.0" + "@ethersproject/signing-key" "5.8.0" + "@ethersproject/solidity" "5.8.0" + "@ethersproject/strings" "5.8.0" + "@ethersproject/transactions" "5.8.0" + "@ethersproject/units" "5.8.0" + "@ethersproject/wallet" "5.8.0" + "@ethersproject/web" "5.8.0" + "@ethersproject/wordlists" "5.8.0" + +ethers@6.13.4: + version "6.13.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.4.tgz#bd3e1c3dc1e7dc8ce10f9ffb4ee40967a651b53c" + integrity sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +ethers@~5.7.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + eventemitter3@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== +eventemitter3@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.4.tgz#a86d66170433712dde814707ac52b5271ceb1feb" + integrity sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw== + +eventsource@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" + integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -772,7 +4172,7 @@ fast-glob@^3.3.2: merge2 "^1.3.0" micromatch "^4.0.8" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -783,12 +4183,26 @@ fast-levenshtein@^2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" - integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + version "1.20.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675" + integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw== dependencies: reusify "^1.0.4" +feaxios@^0.0.23: + version "0.0.23" + resolved "https://registry.yarnpkg.com/feaxios/-/feaxios-0.0.23.tgz#76f37a2666232377ce75354e46dd85cbceeb1758" + integrity sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g== + dependencies: + is-retry-allowed "^3.0.0" + +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" @@ -796,6 +4210,11 @@ file-entry-cache@^8.0.0: dependencies: flat-cache "^4.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -803,6 +4222,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -819,12 +4245,171 @@ flat-cache@^4.0.0: flatted "^3.2.9" keyv "^4.5.4" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.2.9: version "3.3.3" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== -glob-parent@^5.1.2: +fmix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" + integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== + dependencies: + imul "^1.0.0" + +follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +form-data@^4.0.0, form-data@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +ganache@^7.9.1: + version "7.9.2" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.9.2.tgz#77f506ad2735dd9109696ffa1834a9dd2f806449" + integrity sha512-7gsVVDpO9AhrFyDMWWl7SpMsPpqGcnAzjxz3k32LheIPNd64p2XsY9GYRdhWmKuryb60W1iaWPZWDkFKlbRWHA== + dependencies: + "@trufflesuite/bigint-buffer" "1.1.10" + "@trufflesuite/uws-js-unofficial" "20.30.0-unofficial.0" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + abstract-level "1.0.3" + abstract-leveldown "7.2.0" + async-eventemitter "0.2.4" + emittery "0.10.0" + keccak "3.0.2" + leveldown "6.1.0" + secp256k1 "4.0.3" + optionalDependencies: + bufferutil "4.0.5" + utf-8-validate "5.0.7" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.2.4, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -838,31 +4423,263 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +hardhat-deploy-ethers@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.4.2.tgz#10aa44ef806ec8cf3d67ad9692f3762ed965b5e7" + integrity sha512-AskNH/XRYYYqPT94MvO5s1yMi+/QvoNjS4oU5VcVqfDU99kgpGETl+uIYHIrSXtH5sy7J6gyVjpRMf4x0tjLSQ== + +hardhat-deploy@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-1.0.4.tgz#363266e99226d8e3bdf48c5522b9c8cce6584068" + integrity sha512-vl6vYQHDtZmILerAIRERI2AjghLH5gJIcQjNrSldn2SjQdY5Y47umXVll4/ywPzBRlsqdpJfL92PhnQ+1xB+Sg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@ethersproject/providers" "^5.7.2" + "@ethersproject/solidity" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wallet" "^5.7.0" + axios "^0.21.1" + chalk "^4.1.2" + chokidar "^3.5.2" + debug "^4.3.2" + enquirer "^2.3.6" + ethers "^5.7.0" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + neoqs "^6.13.0" + zksync-ethers "^5.0.0" + +hardhat@2.17.4: + version "2.17.4" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.4.tgz#aebaac3aea54ee02d6afa089eeb4c095e83a817c" + integrity sha512-YTyHjVc9s14CY/O7Dbtzcr/92fcz6AzhrMaj6lYsZpYPIPLzOrFCZHHPxfGQB6FiE6IPNE0uJaAbr7zGF79goA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.2" + "@nomicfoundation/ethereumjs-blockchain" "7.0.2" + "@nomicfoundation/ethereumjs-common" "4.0.2" + "@nomicfoundation/ethereumjs-evm" "2.0.2" + "@nomicfoundation/ethereumjs-rlp" "5.0.2" + "@nomicfoundation/ethereumjs-statemanager" "2.0.2" + "@nomicfoundation/ethereumjs-trie" "6.0.2" + "@nomicfoundation/ethereumjs-tx" "5.0.2" + "@nomicfoundation/ethereumjs-util" "9.0.2" + "@nomicfoundation/ethereumjs-vm" "7.0.2" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0, hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-errors@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b" + integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ== + dependencies: + depd "~2.0.0" + inherits "~2.0.4" + setprototypeof "~1.2.0" + statuses "~2.0.2" + toidentifier "~1.0.1" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + husky@9.1.7: version "9.1.7" resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== +iconv-lite@~0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +immutable@^4.0.0-rc.12: + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + import-fresh@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" @@ -871,28 +4688,132 @@ import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +imul@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" + integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +int64-buffer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-1.1.0.tgz#7ebe9822196a93bbedf93ec6b73b569561b5ae3a" + integrity sha512-94smTCQOvigN4d/2R/YDjz8YVG0Sufvv2aAh8P5m42gwhCsDAJqnbNOrxJsrADuAFAA69Q/ptGzxvNcNuIJcvw== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ip-address@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.1.0.tgz#d8dcffb34d0e02eb241427444a6e23f5b0595aa4" + integrity sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-retry-allowed@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz#ea79389fd350d156823c491bee9c69f485b1445c" + integrity sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A== + +is-standalone-pwa@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-standalone-pwa/-/is-standalone-pwa-0.1.1.tgz#7a1b0459471a95378aa0764d5dc0a9cec95f2871" + integrity sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g== + +is-typed-array@^1.1.14: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -903,10 +4824,25 @@ isows@1.0.6: resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + +js-sdsl@^4.1.4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@^4.1.0, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== dependencies: argparse "^2.0.1" @@ -925,6 +4861,64 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jwa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" + integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== + dependencies: + buffer-equal-constant-time "^1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" + integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== + dependencies: + jwa "^2.0.1" + safe-buffer "^5.0.1" + +keccak@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -932,6 +4926,56 @@ keyv@^4.5.4: dependencies: json-buffer "3.0.1" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + +leveldown@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" + integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -940,6 +4984,19 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +loady@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/loady/-/loady-0.0.5.tgz#b17adb52d2fb7e743f107b0928ba0b591da5d881" + integrity sha512-uxKD2HIj042/HBx77NBcmEPsD+hxCgAtjEWlYNScuUjIsh/62Uyu39GOR68TBR68v+jqDL9zfftCWoUo4y03sQ== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -952,6 +5009,72 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.11, lodash@^4.17.14: + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +long@5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.5.tgz#716dcb0807c406345b3fc0f34d8042b41edb9d16" + integrity sha512-e0r9YBBgNCq1D1o5Dp8FMH0N5hsFtXDBiVa0qoJPHpakvZkmDKPRoGffZJII/XsHvj9An9blm+cRJ01yQqU+Dw== + +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +match-all@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.7.tgz#3c03b7f7ee372ae177aac5eca08c3ad6af59633a" + integrity sha512-qSpsBKarh55r9KyXzFC3xBLRf2GlGasba2em9kbpRsSlGvdTAqjx3QD0r3FKSARiW+OE4iMHYsolM3aX9n5djw== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + mdast-util-from-markdown@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz#4850390ca7cf17413a9b9a0fbefcd1bc0eb4160a" @@ -977,6 +5100,20 @@ mdast-util-to-string@^4.0.0: dependencies: "@types/mdast" "^4.0.0" +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== + dependencies: + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1184,13 +5321,50 @@ micromatch@^4.0.8: braces "^3.0.3" picomatch "^2.3.1" -minimatch@^3.1.2: +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^9.0.4: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" @@ -1198,16 +5372,152 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +murmur-128@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" + integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== + dependencies: + encode-utf8 "^1.0.2" + fmix "^0.1.0" + imul "^1.0.0" + +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + +nan@2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nan@^2.13.2, nan@^2.14.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.25.0.tgz#937ed345e63d9481362a7942d49c4860d27eeabd" + integrity sha512-0M90Ag7Xn5KMLLZ7zliPWP3rT90P6PN+IzVFS0VqmnPktBk3700xUVv8Ikm9EUaUE5SDWdp/BIxdENzVznpm1g== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +neoqs@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/neoqs/-/neoqs-6.13.0.tgz#a034bccafefdf8c01fcf4f45fee0aed4b75b4944" + integrity sha512-IysBpjrEG9qiUb/IT6XrXSz2ASzBxLebp4s8/GBm7STYC315vMNqH0aWdRR+f7KvXK4aRlLcf5r2Z6dOTxQSrQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-addon-api@^8.0.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-8.5.0.tgz#c91b2d7682fa457d2e1c388150f0dff9aafb8f3f" + integrity sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A== + +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + +node-gyp-build@^4.2.0, node-gyp-build@^4.2.2, node-gyp-build@^4.3.0, node-gyp-build@^4.5.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +nofilter@^3.0.2, nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +obliterator@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.5.tgz#031e0145354b0c18840336ae51d41e7d6d2c76aa" + integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -1220,6 +5530,11 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + ox@0.6.9: version "0.6.9" resolved "https://registry.yarnpkg.com/ox/-/ox-0.6.9.tgz#da1ee04fa10de30c8d04c15bfb80fe58b1f554bd" @@ -1233,6 +5548,27 @@ ox@0.6.9: abitype "^1.0.6" eventemitter3 "5.0.1" +ox@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.6.tgz#5cf02523b6db364c10ee7f293ff1e664e0e1eab7" + integrity sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.9" + eventemitter3 "5.0.1" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -1240,6 +5576,13 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -1247,6 +5590,18 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1254,30 +5609,78 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.9: + version "5.1.9" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.9.tgz#8dd24c3ea8da77dffbc708d94eaf232fd6156e95" + integrity sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + pbkdf2 "^3.1.5" + safe-buffer "^5.2.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -picomatch@^2.3.1: +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.5.tgz#444a59d7a259a95536c56e80c89de31cc01ed366" + integrity sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ== + dependencies: + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.3" + safe-buffer "^5.2.1" + sha.js "^2.4.12" + to-buffer "^1.2.1" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#6a31f88a4bad6c7adda253de12ba4edaea80ebcd" + integrity sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg== dependencies: fast-diff "^1.1.2" @@ -1296,35 +5699,218 @@ prettier-plugin-organize-imports@4.1.0: integrity sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A== prettier@*: - version "3.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.6.2.tgz#ccda02a1003ebbb2bfda6f83a074978f608b9393" - integrity sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ== + version "3.8.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.8.1.tgz#edf48977cf991558f4fcbd8a3ba6015ba2a3a173" + integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg== prettier@3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +protobufjs@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -queue-microtask@^1.2.2: +pushdata-bitcoin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz#15931d3cd967ade52206f523aa7331aef7d43af7" + integrity sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ== + dependencies: + bitcoin-ops "^1.3.0" + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +raw-body@^2.4.1: + version "2.5.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2" + integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA== + dependencies: + bytes "~3.1.2" + http-errors "~2.0.1" + iconv-lite "~0.4.24" + unpipe "~1.0.0" + +readable-stream@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + reusify@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + +ripple-address-codec@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-5.0.0.tgz#97059f7bba6f9ed7a52843de8aa427723fb529f6" + integrity sha512-de7osLRH/pt5HX2xw2TRJtbdLLWHu0RXirpQaEeCnWKY5DYHykh3ETSkofvm0aX0LJiV7kwkegJxQkmbO94gWw== + dependencies: + "@scure/base" "^1.1.3" + "@xrplf/isomorphic" "^1.0.0" + +ripple-binary-codec@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ripple-binary-codec/-/ripple-binary-codec-2.6.0.tgz#87df4725ffb04da70711172d557e944d7c83ec92" + integrity sha512-OJBRxjjalO7SrIwydHhcC9wOFLoeKcawoqSEfGZilAtXROYTWHx5kTly2VcUMmMMSEYIh1+yEstBtLBObNjeKQ== + dependencies: + "@xrplf/isomorphic" "^1.0.1" + bignumber.js "^9.0.0" + ripple-address-codec "^5.0.0" + +ripple-keypairs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ripple-keypairs/-/ripple-keypairs-2.0.0.tgz#4a1a8142e9a58c07e61b3cc6cfe7317db718d289" + integrity sha512-b5rfL2EZiffmklqZk1W+dvSy97v3V/C7936WxCCgDynaGPp7GE6R2XO7EU9O2LlM/z95rj870IylYnOQs+1Rag== + dependencies: + "@noble/curves" "^1.0.0" + "@xrplf/isomorphic" "^1.0.0" + ripple-address-codec "^5.0.0" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -1332,10 +5918,124 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1, scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.7.1.tgz#12e473e0e9a7c2f2d4d4818e722ad0e14cc1e2f1" + integrity sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g== + dependencies: + bindings "^1.5.0" + bip66 "^1.1.5" + bn.js "^4.11.8" + create-hash "^1.2.0" + drbg.js "^1.0.1" + elliptic "^6.4.1" + nan "^2.14.0" + safe-buffer "^5.1.2" + +secp256k1@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +secp256k1@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.1.tgz#dc2c86187d48ff2da756f0f7e96417ee03c414b1" + integrity sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA== + dependencies: + elliptic "^6.5.7" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +secp256k1@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.4.tgz#58f0bfe1830fe777d9ca1ffc7574962a8189f8ab" + integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== + dependencies: + elliptic "^6.5.7" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.6.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.12, sha.js@^2.4.8: + version "2.4.12" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" + integrity sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + to-buffer "^1.2.0" shebang-command@^2.0.0: version "2.0.0" @@ -1349,11 +6049,130 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.8.3: + version "2.8.7" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea" + integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== + dependencies: + ip-address "^10.0.1" + smart-buffer "^4.2.0" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +stacktrace-parser@^0.1.10: + version "0.1.11" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz#c7c08f9b29ef566b9a6f7b255d7db572f66fabc4" + integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== + dependencies: + type-fest "^0.7.1" + +statuses@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -1361,13 +6180,47 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + synckit@^0.11.0: - version "0.11.11" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.11.tgz#c0b619cf258a97faa209155d9cd1699b5c998cb0" - integrity sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw== + version "0.11.12" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.12.tgz#abe74124264fbc00a48011b0d98bdc1cffb64a7b" + integrity sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ== dependencies: "@pkgr/core" "^0.2.9" +tiny-secp256k1@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.7.tgz#0c1b6b9d2d93404f9093dc7e287b0aa834480573" + integrity sha512-eb+F6NabSnjbLwNoC+2o5ItbmP1kg7HliWue71JgLegQt6A5mTN8YbvTLCazdlg6e5SV6A+r8OGvZYskdlmhqQ== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-buffer@^1.2.0, to-buffer@^1.2.1, to-buffer@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" + integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== + dependencies: + isarray "^2.0.5" + safe-buffer "^5.2.1" + typed-array-buffer "^1.0.3" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1375,10 +6228,55 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +toidentifier@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + ts-api-utils@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + version "2.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" + integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== + +ts-mixer@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.4.tgz#1da39ceabc09d947a82140d9f09db0f84919ca28" + integrity sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA== + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -1387,11 +6285,96 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typeforce@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript@5.8.3: version "5.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== +typescript@^5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +ua-is-frozen@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ua-is-frozen/-/ua-is-frozen-0.1.2.tgz#bfbc5f06336e379590e36beca444188c7dc3a7f3" + integrity sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw== + +ua-parser-js@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-2.0.8.tgz#4f87d94d164c79a104cf089f85aea810ca3dfcce" + integrity sha512-BdnBM5waFormdrOFBU+cA90R689V0tWUWlIG2i30UXxElHjuCu5+dOV2Etw3547jcQ/yaLtPm9wrqIuOY2bSJg== + dependencies: + detect-europe-js "^0.1.2" + is-standalone-pwa "^0.1.1" + ua-is-frozen "^0.1.2" + +uint8array-tools@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/uint8array-tools/-/uint8array-tools-0.0.8.tgz#712bab001f8347bd782f45bc47c76ffff32d1e0b" + integrity sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g== + +undici-types@^7.11.0: + version "7.19.2" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" + integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +undici@^5.14.0: + version "5.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== + dependencies: + "@fastify/busboy" "^2.0.0" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + unist-util-stringify-position@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" @@ -1399,6 +6382,21 @@ unist-util-stringify-position@^4.0.0: dependencies: "@types/unist" "^3.0.0" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -1406,10 +6404,55 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -viem@2.26.2: - version "2.26.2" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.26.2.tgz#0095676262ffe44bf5a6c7f8a221a4b81bc766d7" - integrity sha512-+yXSl1n+jV/Kn/zpETiNq0WOcINXti29nxdPIONvvNh+Es0VfeusW8bb2okVfa55pmuc8kOCOpB5wq3ZIUCTSA== +urijs@^1.19.1: + version "1.19.11" + resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc" + integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ== + +usb@^2.15.0: + version "2.17.0" + resolved "https://registry.yarnpkg.com/usb/-/usb-2.17.0.tgz#ab4662aee723f0ed7c2a70ee622ff8d59491f018" + integrity sha512-UuFgrlglgDn5ll6d5l7kl3nDb2Yx43qLUGcDq+7UNLZLtbNug0HZBb2Xodhgx2JZB1LqvU+dOGqLEeYUeZqsHg== + dependencies: + "@types/w3c-web-usb" "^1.0.6" + node-addon-api "^8.0.0" + node-gyp-build "^4.5.0" + +utf-8-validate@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + +utf-8-validate@6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-6.0.3.tgz#7d8c936d854e86b24d1d655f138ee27d2636d777" + integrity sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +varuint-bitcoin@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz#59a53845a87ad18c42f184a3d325074465341523" + integrity sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog== + dependencies: + uint8array-tools "^0.0.8" + +viem@2.24.2: + version "2.24.2" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.24.2.tgz#68aac43c35e8d73587bbdab2c547579dd60ebb80" + integrity sha512-lUGoTHhMYlR4ktQiOrbTPmYvrMn3jKUdn2PSmB9QLICxnsQJxMkSCeGRoJFq7hi7K6PCMQgAyLMR/9J1key5cg== dependencies: "@noble/curves" "1.8.1" "@noble/hashes" "1.7.1" @@ -1420,6 +6463,46 @@ viem@2.26.2: ox "0.6.9" ws "8.18.1" +viem@2.40.3: + version "2.40.3" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.40.3.tgz#237b11c54f808b5747e483fa7dd05a843e3c079f" + integrity sha512-feYfEpbgjRkZYQpwcgxqkWzjxHI5LSDAjcGetHHwDRuX9BRQHUdV8ohrCosCYpdEhus/RknD3/bOd4qLYVPPuA== + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.1.0" + isows "1.0.7" + ox "0.9.6" + ws "8.18.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.16: + version "1.1.20" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.20.tgz#3fdb7adfafe0ea69157b1509f3a1cd892bd1d122" + integrity sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1427,17 +6510,153 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wif@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/wif/-/wif-5.0.0.tgz#445e44b8f62e155144d1c970c01ca2ba3979cc3f" + integrity sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA== + dependencies: + bs58check "^4.0.0" + word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +ws@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + ws@8.18.1: version "8.18.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb" integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w== +ws@8.18.3: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.13.0, ws@^8.18.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.19.0.tgz#ddc2bdfa5b9ad860204f5a72a4863a8895fd8c8b" + integrity sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg== + +xrpl@4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/xrpl/-/xrpl-4.4.3.tgz#b5211d9ce58d70caac1ccbb68f3c13e63f9b2a5c" + integrity sha512-vi2OjuNkiaP8nv1j+nqHp8GZwwEjO6Y8+j/OuVMg6M4LwXEwyHdIj33dlg7cyY1Lw5+jb9HqFOQvABhaywVbTQ== + dependencies: + "@scure/bip32" "^1.3.1" + "@scure/bip39" "^1.2.1" + "@xrplf/isomorphic" "^1.0.1" + "@xrplf/secret-numbers" "^2.0.0" + bignumber.js "^9.0.0" + eventemitter3 "^5.0.1" + fast-json-stable-stringify "^2.1.0" + ripple-address-codec "^5.0.0" + ripple-binary-codec "^2.5.0" + ripple-keypairs "^2.0.0" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^2.2.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" + integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zksync-ethers@^5.0.0: + version "5.11.1" + resolved "https://registry.yarnpkg.com/zksync-ethers/-/zksync-ethers-5.11.1.tgz#17cf4e6195e8922a607e816846afea7ac07ae831" + integrity sha512-Znl2p0gporGnHbAO0KKM1TIQpyRQKCi8nf1kOlZuTVCvlgBwhweWjTy53le96ZOoR3J5LUXAk7aYil2czSLJZw== + dependencies: + ethers "~5.7.0"